diff --git a/web/__tests__/i18n-upload-features.test.ts b/web/__tests__/i18n-upload-features.test.ts index af418262d6..7d676a55cb 100644 --- a/web/__tests__/i18n-upload-features.test.ts +++ b/web/__tests__/i18n-upload-features.test.ts @@ -15,23 +15,24 @@ const getSupportedLocales = (): string[] => { } // Helper function to load translation file content -const loadTranslationContent = (locale: string): string => { - const filePath = path.join(I18N_DIR, locale, 'app-debug.ts') +const loadTranslationContent = (locale: string): Record => { + const filePath = path.join(I18N_DIR, locale, 'app-debug.json') if (!fs.existsSync(filePath)) throw new Error(`Translation file not found: ${filePath}`) - return fs.readFileSync(filePath, 'utf-8') + return JSON.parse(fs.readFileSync(filePath, 'utf-8')) } // Helper function to check if upload features exist -const hasUploadFeatures = (content: string): { [key: string]: boolean } => { +const hasUploadFeatures = (content: Record): { [key: string]: boolean } => { + const feature = content.feature as Record | undefined return { - fileUpload: /fileUpload\s*:\s*\{/.test(content), - imageUpload: /imageUpload\s*:\s*\{/.test(content), - documentUpload: /documentUpload\s*:\s*\{/.test(content), - audioUpload: /audioUpload\s*:\s*\{/.test(content), - featureBar: /bar\s*:\s*\{/.test(content), + fileUpload: !!(feature?.fileUpload && typeof feature.fileUpload === 'object'), + imageUpload: !!(feature?.imageUpload && typeof feature.imageUpload === 'object'), + documentUpload: !!(feature?.documentUpload && typeof feature.documentUpload === 'object'), + audioUpload: !!(feature?.audioUpload && typeof feature.audioUpload === 'object'), + featureBar: !!(feature?.bar && typeof feature.bar === 'object'), } } @@ -45,7 +46,7 @@ describe('Upload Features i18n Translations - Issue #23062', () => { it('all locales should have translation files', () => { supportedLocales.forEach((locale) => { - const filePath = path.join(I18N_DIR, locale, 'app-debug.ts') + const filePath = path.join(I18N_DIR, locale, 'app-debug.json') expect(fs.existsSync(filePath)).toBe(true) }) }) @@ -75,13 +76,15 @@ describe('Upload Features i18n Translations - Issue #23062', () => { previouslyMissingLocales.forEach((locale) => { const content = loadTranslationContent(locale) + const feature = content.feature as Record | undefined + const audioUpload = feature?.audioUpload as Record | undefined // Verify audioUpload exists - expect(/audioUpload\s*:\s*\{/.test(content)).toBe(true) + expect(audioUpload && typeof audioUpload === 'object').toBe(true) // Verify it has title and description - expect(/audioUpload[^}]*title\s*:/.test(content)).toBe(true) - expect(/audioUpload[^}]*description\s*:/.test(content)).toBe(true) + expect(audioUpload?.title).toBeDefined() + expect(audioUpload?.description).toBeDefined() console.log(`✅ ${locale} - Issue #23062 resolved: audioUpload feature present`) }) @@ -90,29 +93,34 @@ describe('Upload Features i18n Translations - Issue #23062', () => { it('upload features should have required properties', () => { supportedLocales.forEach((locale) => { const content = loadTranslationContent(locale) + const feature = content.feature as Record | undefined // Check fileUpload has required properties - if (/fileUpload\s*:\s*\{/.test(content)) { - expect(/fileUpload[^}]*title\s*:/.test(content)).toBe(true) - expect(/fileUpload[^}]*description\s*:/.test(content)).toBe(true) + const fileUpload = feature?.fileUpload as Record | undefined + if (fileUpload && typeof fileUpload === 'object') { + expect(fileUpload.title).toBeDefined() + expect(fileUpload.description).toBeDefined() } // Check imageUpload has required properties - if (/imageUpload\s*:\s*\{/.test(content)) { - expect(/imageUpload[^}]*title\s*:/.test(content)).toBe(true) - expect(/imageUpload[^}]*description\s*:/.test(content)).toBe(true) + const imageUpload = feature?.imageUpload as Record | undefined + if (imageUpload && typeof imageUpload === 'object') { + expect(imageUpload.title).toBeDefined() + expect(imageUpload.description).toBeDefined() } // Check documentUpload has required properties - if (/documentUpload\s*:\s*\{/.test(content)) { - expect(/documentUpload[^}]*title\s*:/.test(content)).toBe(true) - expect(/documentUpload[^}]*description\s*:/.test(content)).toBe(true) + const documentUpload = feature?.documentUpload as Record | undefined + if (documentUpload && typeof documentUpload === 'object') { + expect(documentUpload.title).toBeDefined() + expect(documentUpload.description).toBeDefined() } // Check audioUpload has required properties - if (/audioUpload\s*:\s*\{/.test(content)) { - expect(/audioUpload[^}]*title\s*:/.test(content)).toBe(true) - expect(/audioUpload[^}]*description\s*:/.test(content)).toBe(true) + const audioUpload = feature?.audioUpload as Record | undefined + if (audioUpload && typeof audioUpload === 'object') { + expect(audioUpload.title).toBeDefined() + expect(audioUpload.description).toBeDefined() } }) }) diff --git a/web/app/components/explore/category.tsx b/web/app/components/explore/category.tsx index 593ed8d938..92b1bd2072 100644 --- a/web/app/components/explore/category.tsx +++ b/web/app/components/explore/category.tsx @@ -4,7 +4,7 @@ import type { AppCategory } from '@/models/explore' import * as React from 'react' import { useTranslation } from 'react-i18next' import { ThumbsUp } from '@/app/components/base/icons/src/vender/line/alertsAndFeedback' -import exploreI18n from '@/i18n/en-US/explore' +import exploreI18n from '@/i18n/en-US/explore.json' import { cn } from '@/utils/classnames' const categoryI18n = exploreI18n.category diff --git a/web/i18n-config/auto-gen-i18n.js b/web/i18n-config/auto-gen-i18n.js index 6c8cb05bbd..556fd6376e 100644 --- a/web/i18n-config/auto-gen-i18n.js +++ b/web/i18n-config/auto-gen-i18n.js @@ -1,14 +1,9 @@ import fs from 'node:fs' -import { createRequire } from 'node:module' import path from 'node:path' import { fileURLToPath } from 'node:url' -import vm from 'node:vm' import { translate } from 'bing-translate-api' -import { generateCode, loadFile, parseModule } from 'magicast' -import { transpile } from 'typescript' import data from './languages' -const require = createRequire(import.meta.url) const __filename = fileURLToPath(import.meta.url) const __dirname = path.dirname(__filename) @@ -255,45 +250,22 @@ async function translateMissingKeyDeeply(sourceObj, targetObject, toLanguage) { return { skipped: skippedKeys, translated: translatedKeys } } async function autoGenTrans(fileName, toGenLanguage, isDryRun = false) { - const fullKeyFilePath = path.resolve(__dirname, i18nFolder, targetLanguage, `${fileName}.ts`) - const toGenLanguageFilePath = path.resolve(__dirname, i18nFolder, toGenLanguage, `${fileName}.ts`) + const fullKeyFilePath = path.resolve(__dirname, i18nFolder, targetLanguage, `${fileName}.json`) + const toGenLanguageFilePath = path.resolve(__dirname, i18nFolder, toGenLanguage, `${fileName}.json`) try { const content = fs.readFileSync(fullKeyFilePath, 'utf8') - - // Create a safer module environment for vm - const moduleExports = {} - const context = { - exports: moduleExports, - module: { exports: moduleExports }, - require, - console, - __filename: fullKeyFilePath, - __dirname: path.dirname(fullKeyFilePath), - } - - // Use vm.runInNewContext instead of eval for better security - vm.runInNewContext(transpile(content), context) - - const fullKeyContent = moduleExports.default || moduleExports + const fullKeyContent = JSON.parse(content) if (!fullKeyContent || typeof fullKeyContent !== 'object') throw new Error(`Failed to extract translation object from ${fullKeyFilePath}`) - // if toGenLanguageFilePath is not exist, create it - if (!fs.existsSync(toGenLanguageFilePath)) { - fs.writeFileSync(toGenLanguageFilePath, `const translation = { -} - -export default translation -`) + // if toGenLanguageFilePath does not exist, create it with empty object + let toGenOutPut = {} + if (fs.existsSync(toGenLanguageFilePath)) { + const existingContent = fs.readFileSync(toGenLanguageFilePath, 'utf8') + toGenOutPut = JSON.parse(existingContent) } - // To keep object format and format it for magicast to work: const translation = { ... } => export default {...} - const readContent = await loadFile(toGenLanguageFilePath) - const { code: toGenContent } = generateCode(readContent) - - const mod = await parseModule(`export default ${toGenContent.replace('export default translation', '').replace('const translation = ', '')}`) - const toGenOutPut = mod.exports.default console.log(`\n🌍 Processing ${fileName} for ${toGenLanguage}...`) const result = await translateMissingKeyDeeply(fullKeyContent, toGenOutPut, toGenLanguage) @@ -310,11 +282,7 @@ export default translation console.log(` ... and ${result.skipped.length - 5} more`) } - const { code } = generateCode(mod) - const res = `const translation =${code.replace('export default', '')} - -export default translation -`.replace(/,\n\n/g, ',\n').replace('};', '}') + const res = `${JSON.stringify(toGenOutPut, null, 2)}\n` if (!isDryRun) { fs.writeFileSync(toGenLanguageFilePath, res) @@ -361,8 +329,8 @@ async function main() { const filesInEn = fs .readdirSync(path.resolve(__dirname, i18nFolder, targetLanguage)) - .filter(file => /\.ts$/.test(file)) // Only process .ts files - .map(file => file.replace(/\.ts$/, '')) + .filter(file => /\.json$/.test(file)) // Only process .json files + .map(file => file.replace(/\.json$/, '')) // Filter by target files if specified const filesToProcess = targetFiles.length > 0 ? filesInEn.filter(f => targetFiles.includes(f)) : filesInEn diff --git a/web/i18n-config/check-i18n.js b/web/i18n-config/check-i18n.js index d70564556c..4ca24a0d19 100644 --- a/web/i18n-config/check-i18n.js +++ b/web/i18n-config/check-i18n.js @@ -1,12 +1,8 @@ import fs from 'node:fs' -import { createRequire } from 'node:module' import path from 'node:path' import { fileURLToPath } from 'node:url' -import vm from 'node:vm' -import { transpile } from 'typescript' import data from './languages' -const require = createRequire(import.meta.url) const __filename = fileURLToPath(import.meta.url) const __dirname = path.dirname(__filename) @@ -119,34 +115,18 @@ async function getKeysFromLanguage(language) { return } - // Filter only .ts and .js files - const translationFiles = files.filter(file => /\.(ts|js)$/.test(file)) + // Filter only .json files + const translationFiles = files.filter(file => /\.json$/.test(file)) translationFiles.forEach((file) => { const filePath = path.join(folderPath, file) - const fileName = file.replace(/\.[^/.]+$/, '') // Remove file extension + const fileName = file.replace(/\.json$/, '') // Remove file extension const camelCaseFileName = fileName.replace(/[-_](.)/g, (_, c) => c.toUpperCase()) // Convert to camel case try { const content = fs.readFileSync(filePath, 'utf8') - - // Create a safer module environment for vm - const moduleExports = {} - const context = { - exports: moduleExports, - module: { exports: moduleExports }, - require, - console, - __filename: filePath, - __dirname: folderPath, - } - - // Use vm.runInNewContext instead of eval for better security - vm.runInNewContext(transpile(content), context) - - // Extract the translation object - const translationObj = moduleExports.default || moduleExports + const translationObj = JSON.parse(content) if (!translationObj || typeof translationObj !== 'object') { console.error(`Error parsing file: ${filePath}`) @@ -185,7 +165,7 @@ async function getKeysFromLanguage(language) { } async function removeExtraKeysFromFile(language, fileName, extraKeys) { - const filePath = path.resolve(__dirname, '../i18n', language, `${fileName}.ts`) + const filePath = path.resolve(__dirname, '../i18n', language, `${fileName}.json`) if (!fs.existsSync(filePath)) { console.log(`⚠️ File not found: ${filePath}`) @@ -204,144 +184,47 @@ async function removeExtraKeysFromFile(language, fileName, extraKeys) { console.log(`🔄 Processing file: ${filePath}`) - // Read the original file content + // Read and parse JSON const content = fs.readFileSync(filePath, 'utf8') - const lines = content.split('\n') + const translationObj = JSON.parse(content) let modified = false - const linesToRemove = [] - // Find lines to remove for each key (including multiline values) + // Remove each extra key for (const keyToRemove of fileSpecificKeys) { const keyParts = keyToRemove.split('.') - let targetLineIndex = -1 - const linesToRemoveForKey = [] + let current = translationObj - // Build regex pattern for the exact key path - if (keyParts.length === 1) { - // Simple key at root level like "pickDate: 'value'" - for (let i = 0; i < lines.length; i++) { - const line = lines[i] - const simpleKeyPattern = new RegExp(`^\\s*${keyParts[0]}\\s*:`) - if (simpleKeyPattern.test(line)) { - targetLineIndex = i + // Navigate to the parent of the key to remove + for (let i = 0; i < keyParts.length; i++) { + const part = keyParts[i] + if (i === keyParts.length - 1) { + // This is the key to remove + if (current && typeof current === 'object' && part in current) { + delete current[part] + console.log(`🗑️ Removed key: ${keyToRemove}`) + modified = true + } + else { + console.log(`⚠️ Could not find key: ${keyToRemove}`) + } + } + else { + // Navigate deeper + if (current && typeof current === 'object' && part in current) { + current = current[part] + } + else { + console.log(`⚠️ Could not find key path: ${keyToRemove}`) break } } } - else { - // Nested key - need to find the exact path - const currentPath = [] - let braceDepth = 0 - - for (let i = 0; i < lines.length; i++) { - const line = lines[i] - const trimmedLine = line.trim() - - // Track current object path - const keyMatch = trimmedLine.match(/^(\w+)\s*:\s*\{/) - if (keyMatch) { - currentPath.push(keyMatch[1]) - braceDepth++ - } - else if (trimmedLine === '},' || trimmedLine === '}') { - if (braceDepth > 0) { - braceDepth-- - currentPath.pop() - } - } - - // Check if this line matches our target key - const leafKeyMatch = trimmedLine.match(/^(\w+)\s*:/) - if (leafKeyMatch) { - const fullPath = [...currentPath, leafKeyMatch[1]] - const fullPathString = fullPath.join('.') - - if (fullPathString === keyToRemove) { - targetLineIndex = i - break - } - } - } - } - - if (targetLineIndex !== -1) { - linesToRemoveForKey.push(targetLineIndex) - - // Check if this is a multiline key-value pair - const keyLine = lines[targetLineIndex] - const trimmedKeyLine = keyLine.trim() - - // If key line ends with ":" (not ":", "{ " or complete value), it's likely multiline - if (trimmedKeyLine.endsWith(':') && !trimmedKeyLine.includes('{') && !trimmedKeyLine.match(/:\s*['"`]/)) { - // Find the value lines that belong to this key - let currentLine = targetLineIndex + 1 - let foundValue = false - - while (currentLine < lines.length) { - const line = lines[currentLine] - const trimmed = line.trim() - - // Skip empty lines - if (trimmed === '') { - currentLine++ - continue - } - - // Check if this line starts a new key (indicates end of current value) - if (trimmed.match(/^\w+\s*:/)) - break - - // Check if this line is part of the value - if (trimmed.startsWith('\'') || trimmed.startsWith('"') || trimmed.startsWith('`') || foundValue) { - linesToRemoveForKey.push(currentLine) - foundValue = true - - // Check if this line ends the value (ends with quote and comma/no comma) - if ((trimmed.endsWith('\',') || trimmed.endsWith('",') || trimmed.endsWith('`,') - || trimmed.endsWith('\'') || trimmed.endsWith('"') || trimmed.endsWith('`')) - && !trimmed.startsWith('//')) { - break - } - } - else { - break - } - - currentLine++ - } - } - - linesToRemove.push(...linesToRemoveForKey) - console.log(`🗑️ Found key to remove: ${keyToRemove} at line ${targetLineIndex + 1}${linesToRemoveForKey.length > 1 ? ` (multiline, ${linesToRemoveForKey.length} lines)` : ''}`) - modified = true - } - else { - console.log(`⚠️ Could not find key: ${keyToRemove}`) - } } if (modified) { - // Remove duplicates and sort in reverse order to maintain correct indices - const uniqueLinesToRemove = [...new Set(linesToRemove)].sort((a, b) => b - a) - - for (const lineIndex of uniqueLinesToRemove) { - const line = lines[lineIndex] - console.log(`🗑️ Removing line ${lineIndex + 1}: ${line.trim()}`) - lines.splice(lineIndex, 1) - - // Also remove trailing comma from previous line if it exists and the next line is a closing brace - if (lineIndex > 0 && lineIndex < lines.length) { - const prevLine = lines[lineIndex - 1] - const nextLine = lines[lineIndex] ? lines[lineIndex].trim() : '' - - if (prevLine.trim().endsWith(',') && (nextLine.startsWith('}') || nextLine === '')) - lines[lineIndex - 1] = prevLine.replace(/,\s*$/, '') - } - } - // Write back to file - const newContent = lines.join('\n') + const newContent = `${JSON.stringify(translationObj, null, 2)}\n` fs.writeFileSync(filePath, newContent) console.log(`💾 Updated file: ${filePath}`) return true @@ -416,8 +299,8 @@ async function main() { // Get all translation files const i18nFolder = path.resolve(__dirname, '../i18n', language) const files = fs.readdirSync(i18nFolder) - .filter(file => /\.ts$/.test(file)) - .map(file => file.replace(/\.ts$/, '')) + .filter(file => /\.json$/.test(file)) + .map(file => file.replace(/\.json$/, '')) .filter(f => targetFiles.length === 0 || targetFiles.includes(f)) let totalRemoved = 0 diff --git a/web/i18n-config/i18next-config.ts b/web/i18n-config/i18next-config.ts index e82f5f2acb..cb8ab8aca8 100644 --- a/web/i18n-config/i18next-config.ts +++ b/web/i18n-config/i18next-config.ts @@ -4,36 +4,36 @@ import i18n from 'i18next' import { camelCase, kebabCase } from 'lodash-es' import { initReactI18next } from 'react-i18next' -import app from '../i18n/en-US/app' -import appAnnotation from '../i18n/en-US/app-annotation' -import appApi from '../i18n/en-US/app-api' -import appDebug from '../i18n/en-US/app-debug' -import appLog from '../i18n/en-US/app-log' -import appOverview from '../i18n/en-US/app-overview' -import billing from '../i18n/en-US/billing' -import common from '../i18n/en-US/common' -import custom from '../i18n/en-US/custom' -import dataset from '../i18n/en-US/dataset' -import datasetCreation from '../i18n/en-US/dataset-creation' -import datasetDocuments from '../i18n/en-US/dataset-documents' -import datasetHitTesting from '../i18n/en-US/dataset-hit-testing' -import datasetPipeline from '../i18n/en-US/dataset-pipeline' -import datasetSettings from '../i18n/en-US/dataset-settings' -import education from '../i18n/en-US/education' -import explore from '../i18n/en-US/explore' -import layout from '../i18n/en-US/layout' -import login from '../i18n/en-US/login' -import oauth from '../i18n/en-US/oauth' -import pipeline from '../i18n/en-US/pipeline' -import plugin from '../i18n/en-US/plugin' -import pluginTags from '../i18n/en-US/plugin-tags' -import pluginTrigger from '../i18n/en-US/plugin-trigger' -import register from '../i18n/en-US/register' -import runLog from '../i18n/en-US/run-log' -import share from '../i18n/en-US/share' -import time from '../i18n/en-US/time' -import tools from '../i18n/en-US/tools' -import workflow from '../i18n/en-US/workflow' +import appAnnotation from '../i18n/en-US/app-annotation.json' +import appApi from '../i18n/en-US/app-api.json' +import appDebug from '../i18n/en-US/app-debug.json' +import appLog from '../i18n/en-US/app-log.json' +import appOverview from '../i18n/en-US/app-overview.json' +import app from '../i18n/en-US/app.json' +import billing from '../i18n/en-US/billing.json' +import common from '../i18n/en-US/common.json' +import custom from '../i18n/en-US/custom.json' +import datasetCreation from '../i18n/en-US/dataset-creation.json' +import datasetDocuments from '../i18n/en-US/dataset-documents.json' +import datasetHitTesting from '../i18n/en-US/dataset-hit-testing.json' +import datasetPipeline from '../i18n/en-US/dataset-pipeline.json' +import datasetSettings from '../i18n/en-US/dataset-settings.json' +import dataset from '../i18n/en-US/dataset.json' +import education from '../i18n/en-US/education.json' +import explore from '../i18n/en-US/explore.json' +import layout from '../i18n/en-US/layout.json' +import login from '../i18n/en-US/login.json' +import oauth from '../i18n/en-US/oauth.json' +import pipeline from '../i18n/en-US/pipeline.json' +import pluginTags from '../i18n/en-US/plugin-tags.json' +import pluginTrigger from '../i18n/en-US/plugin-trigger.json' +import plugin from '../i18n/en-US/plugin.json' +import register from '../i18n/en-US/register.json' +import runLog from '../i18n/en-US/run-log.json' +import share from '../i18n/en-US/share.json' +import time from '../i18n/en-US/time.json' +import tools from '../i18n/en-US/tools.json' +import workflow from '../i18n/en-US/workflow.json' // @keep-sorted export const messagesEN = { @@ -87,10 +87,10 @@ export type Namespace = KebabCase const requireSilent = async (lang: Locale, namespace: Namespace) => { let res try { - res = (await import(`../i18n/${lang}/${namespace}`)).default + res = (await import(`../i18n/${lang}/${namespace}.json`)).default } catch { - res = (await import(`../i18n/en-US/${namespace}`)).default + res = (await import(`../i18n/en-US/${namespace}.json`)).default } return res diff --git a/web/i18n-config/server.ts b/web/i18n-config/server.ts index 75a5f3943b..846ada8577 100644 --- a/web/i18n-config/server.ts +++ b/web/i18n-config/server.ts @@ -14,7 +14,7 @@ const initI18next = async (lng: Locale, ns: Namespace) => { const i18nInstance = createInstance() await i18nInstance .use(initReactI18next) - .use(resourcesToBackend((language: Locale, namespace: Namespace) => import(`../i18n/${language}/${namespace}.ts`))) + .use(resourcesToBackend((language: Locale, namespace: Namespace) => import(`../i18n/${language}/${namespace}.json`))) .init({ lng: lng === 'zh-Hans' ? 'zh-Hans' : lng, ns, diff --git a/web/i18n/ar-TN/app-annotation.json b/web/i18n/ar-TN/app-annotation.json new file mode 100644 index 0000000000..8795d0155a --- /dev/null +++ b/web/i18n/ar-TN/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "التعليقات التوضيحية", + "name": "رد التعليق التوضيحي", + "editBy": "تم تعديل الإجابة بواسطة {{author}}", + "noData": { + "title": "لا توجد تعليقات توضيحية", + "description": "يمكنك تعديل التعليقات التوضيحية أثناء تصحيح أخطاء التطبيق أو استيراد التعليقات التوضيحية بالجملة هنا للحصول على استجابة عالية الجودة." + }, + "table": { + "header": { + "question": "السؤال", + "answer": "الإجابة", + "createdAt": "تم الإنشاء في", + "hits": "المطابقات", + "actions": "الإجراءات", + "addAnnotation": "إضافة تعليق توضيحي", + "bulkImport": "استيراد بالجملة", + "bulkExport": "تصدير بالجملة", + "clearAll": "حذف الكل", + "clearAllConfirm": "حذف جميع التعليقات التوضيحية؟" + } + }, + "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": "موافق" + }, + "list": { + "delete": { + "title": "هل أنت متأكد من الحذف؟" + } + }, + "batchAction": { + "selected": "المحدد", + "delete": "حذف", + "cancel": "إلغاء" + }, + "errorMessage": { + "answerRequired": "الإجابة مطلوبة", + "queryRequired": "السؤال مطلوب" + }, + "viewModal": { + "annotatedResponse": "رد التعليق التوضيحي", + "hitHistory": "سجل المطابقة", + "hit": "مطابقة", + "hits": "مطابقات", + "noHitHistory": "لا يوجد سجل مطابقة" + }, + "hitHistoryTable": { + "query": "الاستعلام", + "match": "المطابقة", + "response": "الاستجابة", + "source": "المصدر", + "score": "النتيجة", + "time": "الوقت" + }, + "initSetup": { + "title": "الإعداد الأولي لرد التعليق التوضيحي", + "configTitle": "إعداد رد التعليق التوضيحي", + "confirmBtn": "حفظ وتمكين", + "configConfirmBtn": "حفظ" + }, + "embeddingModelSwitchTip": "سيؤدي تبديل نموذج التضمين للنص التوضيحي إلى إعادة التضمين، مما يؤدي إلى تكاليف إضافية." +} diff --git a/web/i18n/ar-TN/app-annotation.ts b/web/i18n/ar-TN/app-annotation.ts deleted file mode 100644 index 4f37099490..0000000000 --- a/web/i18n/ar-TN/app-annotation.ts +++ /dev/null @@ -1,98 +0,0 @@ -const translation = { - title: 'التعليقات التوضيحية', - name: 'رد التعليق التوضيحي', - editBy: 'تم تعديل الإجابة بواسطة {{author}}', - noData: { - title: 'لا توجد تعليقات توضيحية', - description: 'يمكنك تعديل التعليقات التوضيحية أثناء تصحيح أخطاء التطبيق أو استيراد التعليقات التوضيحية بالجملة هنا للحصول على استجابة عالية الجودة.', - }, - table: { - header: { - question: 'السؤال', - answer: 'الإجابة', - createdAt: 'تم الإنشاء في', - hits: 'المطابقات', - actions: 'الإجراءات', - addAnnotation: 'إضافة تعليق توضيحي', - bulkImport: 'استيراد بالجملة', - bulkExport: 'تصدير بالجملة', - clearAll: 'حذف الكل', - clearAllConfirm: 'حذف جميع التعليقات التوضيحية؟', - }, - }, - 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: 'موافق', - }, - list: { - delete: { - title: 'هل أنت متأكد من الحذف؟', - }, - }, - batchAction: { - selected: 'المحدد', - delete: 'حذف', - cancel: 'إلغاء', - }, - 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 diff --git a/web/i18n/ar-TN/app-api.json b/web/i18n/ar-TN/app-api.json new file mode 100644 index 0000000000..29c9df9333 --- /dev/null +++ b/web/i18n/ar-TN/app-api.json @@ -0,0 +1,83 @@ +{ + "apiServer": "خادم API", + "apiKey": "مفتاح API", + "status": "الحالة", + "disabled": "معطل", + "ok": "في الخدمة", + "copy": "نسخ", + "copied": "تم النسخ", + "regenerate": "إعادة إنشاء", + "play": "تشغيل", + "pause": "إيقاف مؤقت", + "playing": "جاري التشغيل", + "loading": "جاري التحميل", + "merMaid": { + "rerender": "إعادة الرسم" + }, + "never": "أبدا", + "apiKeyModal": { + "apiSecretKey": "مفتاح API السري", + "apiSecretKeyTips": "لمنع إساءة استخدام API، قم بحماية مفتاح API الخاص بك. تجنب استخدامه كنص عادي في كود الواجهة الأمامية. :)", + "createNewSecretKey": "إنشاء مفتاح سري جديد", + "secretKey": "المفتاح السري", + "created": "تم الإنشاء", + "lastUsed": "آخر استخدام", + "generateTips": "احتفظ بهذا المفتاح في مكان آمن ويمكن الوصول إليه." + }, + "actionMsg": { + "deleteConfirmTitle": "حذف هذا المفتاح السري؟", + "deleteConfirmTips": "لا يمكن التراجع عن هذا الإجراء.", + "ok": "موافق" + }, + "completionMode": { + "title": "API تطبيق الإكمال", + "info": "لتوليد نصوص عالية الجودة، مثل المقالات والملخصات والترجمات، استخدم API رسائل الإكمال مع إدخال المستخدم. يعتمد توليد النص على معلمات النموذج وقوالب المطالبة المعينة في هندسة مطالبات Dify.", + "createCompletionApi": "إنشاء رسالة إكمال", + "createCompletionApiTip": "إنشاء رسالة إكمال لدعم وضع السؤال والجواب.", + "inputsTips": "(اختياري) توفير حقول إدخال المستخدم كأزواج مفتاح وقيمة، بما يتوافق مع المتغيرات في هندسة المطالبات. المفتاح هو اسم المتغير، والقيمة هي قيمة المعلمة. إذا كان نوع الحقل هو تحديد، فيجب أن تكون القيمة المرسلة واحدة من الخيارات المحددة مسبقًا.", + "queryTips": "محتوى نص إدخال المستخدم.", + "blocking": "نوع الحظر، في انتظار اكتمال التنفيذ وإرجاع النتائج. (قد يتم قطع الطلبات إذا كانت العملية طويلة)", + "streaming": "عائدات التدفق. تنفيذ عائد التدفق بناءً على SSE (أحداث مرسلة من الخادم).", + "messageFeedbackApi": "ملاحظات الرسالة (إعجاب)", + "messageFeedbackApiTip": "قيم الرسائل المستلمة نيابة عن المستخدمين النهائيين بإعجاب أو عدم إعجاب. هذه البيانات مرئية في صفحة السجلات والتعليقات التوضيحية وتستخدم لضبط النموذج في المستقبل.", + "messageIDTip": "معرف الرسالة", + "ratingTip": "إعجاب أو عدم إعجاب، null للإلغاء", + "parametersApi": "الحصول على معلومات حول معلمات التطبيق", + "parametersApiTip": "استرداد معلمات الإدخال المكونة، بما في ذلك أسماء المتغيرات وأسماء الحقول والأنواع والقيم الافتراضية. تستخدم عادة لعرض هذه الحقول في نموذج أو ملء القيم الافتراضية بعد تحميل العميل." + }, + "chatMode": { + "title": "API تطبيق الدردشة", + "info": "للتطبيقات المحادثة متعددة الاستخدامات باستخدام تنسيق Q&A، اتصل بـ API رسائل الدردشة لبدء الحوار. حافظ على المحادثات الجارية عن طريق تمرير conversation_id المرتجع. تعتمد معلمات الاستجابة والقوالب على إعدادات Dify Prompt Eng.", + "createChatApi": "إنشاء رسالة دردشة", + "createChatApiTip": "بناء رسالة محادثة جديدة أو استمرار حوار موجود.", + "inputsTips": "(اختياري) توفير حقول إدخال المستخدم كأزواج مفتاح وقيمة، بما يتوافق مع المتغيرات في هندسة المطالبات. المفتاح هو اسم المتغير، والقيمة هي قيمة المعلمة. إذا كان نوع الحقل هو تحديد، فيجب أن تكون القيمة المرسلة واحدة من الخيارات المحددة مسبقًا.", + "queryTips": "محتوى إدخال/سؤال المستخدم", + "blocking": "نوع الحظر، في انتظار اكتمال التنفيذ وإرجاع النتائج. (قد يتم قطع الطلبات إذا كانت العملية طويلة)", + "streaming": "عائدات التدفق. تنفيذ عائد التدفق بناءً على SSE (أحداث مرسلة من الخادم).", + "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": "جسم الطلب (Request Body)", + "pathParams": "معلمات المسار (Path Params)", + "query": "استعلام (Query)", + "toc": "المحتويات" + } +} diff --git a/web/i18n/ar-TN/app-api.ts b/web/i18n/ar-TN/app-api.ts deleted file mode 100644 index 9e1c0a4c8d..0000000000 --- a/web/i18n/ar-TN/app-api.ts +++ /dev/null @@ -1,85 +0,0 @@ -const translation = { - apiServer: 'خادم API', - apiKey: 'مفتاح API', - status: 'الحالة', - disabled: 'معطل', - ok: 'في الخدمة', - copy: 'نسخ', - copied: 'تم النسخ', - regenerate: 'إعادة إنشاء', - play: 'تشغيل', - pause: 'إيقاف مؤقت', - playing: 'جاري التشغيل', - loading: 'جاري التحميل', - merMaid: { - rerender: 'إعادة الرسم', - }, - never: 'أبدا', - apiKeyModal: { - apiSecretKey: 'مفتاح API السري', - apiSecretKeyTips: 'لمنع إساءة استخدام API، قم بحماية مفتاح API الخاص بك. تجنب استخدامه كنص عادي في كود الواجهة الأمامية. :)', - createNewSecretKey: 'إنشاء مفتاح سري جديد', - secretKey: 'المفتاح السري', - created: 'تم الإنشاء', - lastUsed: 'آخر استخدام', - generateTips: 'احتفظ بهذا المفتاح في مكان آمن ويمكن الوصول إليه.', - }, - actionMsg: { - deleteConfirmTitle: 'حذف هذا المفتاح السري؟', - deleteConfirmTips: 'لا يمكن التراجع عن هذا الإجراء.', - ok: 'موافق', - }, - completionMode: { - title: 'API تطبيق الإكمال', - info: 'لتوليد نصوص عالية الجودة، مثل المقالات والملخصات والترجمات، استخدم API رسائل الإكمال مع إدخال المستخدم. يعتمد توليد النص على معلمات النموذج وقوالب المطالبة المعينة في هندسة مطالبات Dify.', - createCompletionApi: 'إنشاء رسالة إكمال', - createCompletionApiTip: 'إنشاء رسالة إكمال لدعم وضع السؤال والجواب.', - inputsTips: '(اختياري) توفير حقول إدخال المستخدم كأزواج مفتاح وقيمة، بما يتوافق مع المتغيرات في هندسة المطالبات. المفتاح هو اسم المتغير، والقيمة هي قيمة المعلمة. إذا كان نوع الحقل هو تحديد، فيجب أن تكون القيمة المرسلة واحدة من الخيارات المحددة مسبقًا.', - queryTips: 'محتوى نص إدخال المستخدم.', - blocking: 'نوع الحظر، في انتظار اكتمال التنفيذ وإرجاع النتائج. (قد يتم قطع الطلبات إذا كانت العملية طويلة)', - streaming: 'عائدات التدفق. تنفيذ عائد التدفق بناءً على SSE (أحداث مرسلة من الخادم).', - messageFeedbackApi: 'ملاحظات الرسالة (إعجاب)', - messageFeedbackApiTip: 'قيم الرسائل المستلمة نيابة عن المستخدمين النهائيين بإعجاب أو عدم إعجاب. هذه البيانات مرئية في صفحة السجلات والتعليقات التوضيحية وتستخدم لضبط النموذج في المستقبل.', - messageIDTip: 'معرف الرسالة', - ratingTip: 'إعجاب أو عدم إعجاب، null للإلغاء', - parametersApi: 'الحصول على معلومات حول معلمات التطبيق', - parametersApiTip: 'استرداد معلمات الإدخال المكونة، بما في ذلك أسماء المتغيرات وأسماء الحقول والأنواع والقيم الافتراضية. تستخدم عادة لعرض هذه الحقول في نموذج أو ملء القيم الافتراضية بعد تحميل العميل.', - }, - chatMode: { - title: 'API تطبيق الدردشة', - info: 'للتطبيقات المحادثة متعددة الاستخدامات باستخدام تنسيق Q&A، اتصل بـ API رسائل الدردشة لبدء الحوار. حافظ على المحادثات الجارية عن طريق تمرير conversation_id المرتجع. تعتمد معلمات الاستجابة والقوالب على إعدادات Dify Prompt Eng.', - createChatApi: 'إنشاء رسالة دردشة', - createChatApiTip: 'بناء رسالة محادثة جديدة أو استمرار حوار موجود.', - inputsTips: '(اختياري) توفير حقول إدخال المستخدم كأزواج مفتاح وقيمة، بما يتوافق مع المتغيرات في هندسة المطالبات. المفتاح هو اسم المتغير، والقيمة هي قيمة المعلمة. إذا كان نوع الحقل هو تحديد، فيجب أن تكون القيمة المرسلة واحدة من الخيارات المحددة مسبقًا.', - queryTips: 'محتوى إدخال/سؤال المستخدم', - blocking: 'نوع الحظر، في انتظار اكتمال التنفيذ وإرجاع النتائج. (قد يتم قطع الطلبات إذا كانت العملية طويلة)', - streaming: 'عائدات التدفق. تنفيذ عائد التدفق بناءً على SSE (أحداث مرسلة من الخادم).', - 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: 'جسم الطلب (Request Body)', - pathParams: 'معلمات المسار (Path Params)', - query: 'استعلام (Query)', - toc: 'المحتويات', - }, -} - -export default translation diff --git a/web/i18n/ar-TN/app-debug.json b/web/i18n/ar-TN/app-debug.json new file mode 100644 index 0000000000..9113d8f997 --- /dev/null +++ b/web/i18n/ar-TN/app-debug.json @@ -0,0 +1,562 @@ +{ + "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": "لم يتم تعيين مفتاح مزود LLM", + "trailFinished": "انتهت التجربة", + "description": "لم يتم تعيين مفتاح مزود LLM، ويجب تعيينه قبل تصحيح الأخطاء.", + "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": "يمكنك استيراد المعرفة كسياق", + "selectTitle": "حدد المعرفة المرجعية", + "selected": "تم تحديد المعرفة", + "noDataSet": "لم يتم العثور على معرفة", + "toCreate": "الذهاب للإنشاء", + "notSupportSelectMulti": "دعم معرفة واحدة فقط حاليًا", + "queryVariable": { + "title": "متغير الاستعلام", + "tip": "سيتم استخدام هذا المتغير كمدخل استعلام لاسترجاع السياق، والحصول على معلومات السياق المتعلقة بمدخل هذا المتغير.", + "choosePlaceholder": "اختر متغير الاستعلام", + "noVar": "لا توجد متغيرات", + "noVarTip": "يرجى إنشاء متغير في قسم المتغيرات", + "unableToQueryDataSet": "غير قادر على استعلام المعرفة", + "unableToQueryDataSetTip": "غير قادر على استعلام المعرفة بنجاح، يرجى اختيار متغير استعلام سياق في قسم السياق.", + "ok": "موافق", + "contextVarNotEmpty": "لا يمكن أن يكون متغير استعلام السياق فارغًا", + "deleteContextVarTitle": "حذف المتغير \"{{varName}}\"؟", + "deleteContextVarTip": "تم تعيين هذا المتغير كمتغير استعلام سياق، وسيؤثر إزالته على الاستخدام العادي للمعرفة. إذا كنت لا تزال بحاجة إلى حذفه، يرجى إعادة تحديده في قسم السياق." + } + }, + "tools": { + "title": "الأدوات", + "tips": "توفر الأدوات طريقة استدعاء API قياسية، مع أخذ مدخلات المستخدم أو المتغيرات كمعلمات طلب للاستعلام عن البيانات الخارجية كسياق.", + "toolsInUse": "{{count}} أدوات قيد الاستخدام", + "modal": { + "title": "أداة", + "toolType": { + "title": "نوع الأداة", + "placeholder": "يرجى اختيار نوع الأداة" + }, + "name": { + "title": "الاسم", + "placeholder": "يرجى إدخال الاسم" + }, + "variableName": { + "title": "اسم المتغير", + "placeholder": "يرجى إدخال اسم المتغير" + } + } + }, + "conversationHistory": { + "title": "سجل المحادثة", + "description": "تعيين أسماء بادئة لأدوار المحادثة", + "tip": "لم يتم تمكين سجل المحادثة، يرجى إضافة في المطالبة أعلاه.", + "learnMore": "اعرف المزيد", + "editModal": { + "title": "تعديل أسماء أدوار المحادثة", + "userPrefix": "بادئة المستخدم", + "assistantPrefix": "بادئة المساعد" + } + }, + "toolbox": { + "title": "صندوق الأدوات" + }, + "moderation": { + "title": "تعديل المحتوى", + "description": "تأمين إخراج النموذج باستخدام API التعديل أو الحفاظ على قائمة كلمات حساسة.", + "contentEnableLabel": "تم تمكين تعديل المحتوى", + "allEnabled": "الإدخال والإخراج", + "inputEnabled": "الإدخال", + "outputEnabled": "الإخراج", + "modal": { + "title": "إعدادات تعديل المحتوى", + "provider": { + "title": "المزود", + "openai": "OpenAI Moderation", + "openaiTip": { + "prefix": "تتطلب OpenAI Moderation مفتاح OpenAI API تم تكوينه في ", + "suffix": "." + }, + "keywords": "الكلمات الرئيسية" + }, + "keywords": { + "tip": "واحد لكل سطر، مفصولة بفواصل الأسطر. ما يصل إلى 100 حرف لكل سطر.", + "placeholder": "واحد لكل سطر، مفصولة بفواصل الأسطر", + "line": "سطر" + }, + "content": { + "input": "تعديل محتوى الإدخال", + "output": "تعديل محتوى الإخراج", + "preset": "ردود محددة مسبقًا", + "placeholder": "محتوى الردود المحددة مسبقًا هنا", + "condition": "تم تمكين تعديل محتوى الإدخال والإخراج واحد على الأقل", + "fromApi": "يتم إرجاع الردود المحددة مسبقًا بواسطة API", + "errorMessage": "لا يمكن أن تكون الردود المحددة مسبقًا فارغة", + "supportMarkdown": "دعم Markdown" + }, + "openaiNotConfig": { + "before": "تتطلب OpenAI Moderation مفتاح OpenAI API تم تكوينه في", + "after": "" + } + } + }, + "fileUpload": { + "title": "تحميل الملف", + "description": "يسمح مربع إدخال الدردشة بتحميل الصور والمستندات والملفات الأخرى.", + "supportedTypes": "أنواع الملفات المدعومة", + "numberLimit": "الحد الأقصى للتحميلات", + "modalTitle": "إعداد تحميل الملف" + }, + "imageUpload": { + "title": "تحميل الصور", + "description": "السماح بتحميل الصور.", + "supportedTypes": "أنواع الملفات المدعومة", + "numberLimit": "الحد الأقصى للتحميلات", + "modalTitle": "إعداد تحميل الصور" + }, + "bar": { + "empty": "تمكين الميزة لتعزيز تجربة مستخدم تطبيق الويب", + "enableText": "تم تمكين الميزات", + "manage": "إدارة" + }, + "documentUpload": { + "title": "مستند", + "description": "سيسمح تمكين المستند للنموذج بأخذ المستندات والإجابة على الأسئلة حولها." + }, + "audioUpload": { + "title": "صوت", + "description": "سيسمح تمكين الصوت للنموذج بمعالجة ملفات الصوت للنسخ والتحليل." + } + }, + "codegen": { + "title": "مولد الكود", + "description": "يستخدم مولد الكود النماذج المكونة لتوليد كود عالي الجودة بناءً على تعليماتك. يرجى تقديم تعليمات واضحة ومفصلة.", + "instruction": "تعليمات", + "instructionPlaceholder": "أدخل وصفًا تفصيليًا للكود الذي تريد توليده.", + "noDataLine1": "صف حالة استخدامك على اليسار،", + "noDataLine2": "سيظهر معاينة الكود هنا.", + "generate": "توليد", + "generatedCodeTitle": "الكود المولد", + "loading": "جاري توليد الكود...", + "apply": "تطبيق", + "applyChanges": "تطبيق التغييرات", + "resTitle": "الكود المولد", + "overwriteConfirmTitle": "استبدال الكود الموجود؟", + "overwriteConfirmMessage": "سيؤدي هذا الإجراء إلى استبدال الكود الموجود. هل تريد المتابعة؟" + }, + "generate": { + "title": "مولد المطالبة", + "description": "يستخدم مولد المطالبة النموذج المكون لتحسين المطالبات للحصول على جودة أعلى وبنية أفضل. يرجى كتابة تعليمات واضحة ومفصلة.", + "tryIt": "جربه", + "instruction": "تعليمات", + "instructionPlaceHolderTitle": "صف كيف ترغب في تحسين هذه المطالبة. على سبيل المثال:", + "instructionPlaceHolderLine1": "اجعل الإخراج أكثر إيجازًا، مع الاحتفاظ بالنقاط الأساسية.", + "instructionPlaceHolderLine2": "تنسيق الإخراج غير صحيح، يرجى اتباع تنسيق JSON بدقة.", + "instructionPlaceHolderLine3": "النبرة قاسية جدًا، يرجى جعلها أكثر ودية.", + "codeGenInstructionPlaceHolderLine": "كلما كانت الملاحظات أكثر تفصيلاً، مثل أنواع بيانات الإدخال والإخراج وكذلك كيفية معالجة المتغيرات، كلما كان توليد الكود أكثر دقة.", + "idealOutput": "المخرجات المثالية", + "idealOutputPlaceholder": "صف تنسيق الاستجابة المثالي، والطول، والنبرة، ومتطلبات المحتوى...", + "optional": "اختياري", + "dismiss": "تجاهل", + "generate": "توليد", + "resTitle": "المطالبة المولدة", + "newNoDataLine1": "اكتب تعليمات في العمود الأيسر، وانقر فوق توليد لرؤية الاستجابة. ", + "apply": "تطبيق", + "loading": "تنسيق التطبيق لك...", + "overwriteTitle": "تجاوز التكوين الحالي؟", + "overwriteMessage": "سيؤدي تطبيق هذه المطالبة إلى تجاوز التكوين الحالي.", + "template": { + "pythonDebugger": { + "name": "مصحح أخطاء بايثون", + "instruction": "برنامج روبوت يمكنه إنشاء وتصحيح الكود الخاص بك بناءً على تعليماتك" + }, + "translation": { + "name": "ترجمة", + "instruction": "مترجم يمكنه ترجمة لغات متعددة" + }, + "professionalAnalyst": { + "name": "محلل محترف", + "instruction": "استخراج الرؤى وتحديد المخاطر وتقطير المعلومات الأساسية من التقارير الطويلة في مذكرة واحدة" + }, + "excelFormulaExpert": { + "name": "خبير صيغة Excel", + "instruction": "روبوت دردشة يمكنه مساعدة المستخدمين المبتدئين على فهم صيغ Excel واستخدامها وإنشائها بناءً على تعليمات المستخدم" + }, + "travelPlanning": { + "name": "تخطيط السفر", + "instruction": "مساعد تخطيط السفر هو أداة ذكية مصممة لمساعدة المستخدمين على التخطيط لرحلاتهم بسهولة" + }, + "SQLSorcerer": { + "name": "ساحر SQL", + "instruction": "تحويل اللغة اليومية إلى استعلامات SQL" + }, + "GitGud": { + "name": "Git gud", + "instruction": "إنشاء أوامر Git مناسبة بناءً على إجراءات التحكم في الإصدار التي وصفها المستخدم" + }, + "meetingTakeaways": { + "name": "اجتماع الوجبات الجاهزة", + "instruction": "تقطير الاجتماعات في ملخصات موجزة بما في ذلك مواضيع المناقشة، والوجبات الجاهزة الرئيسية، وعناصر العمل" + }, + "writingsPolisher": { + "name": "ملمع الكتابات", + "instruction": "استخدم تقنيات التحرير المتقدمة لتحسين كتاباتك" + } + }, + "press": "اضغط", + "to": "إلى ", + "insertContext": "إدراج السياق", + "optimizePromptTooltip": "تحسين في مولد المطالبة", + "optimizationNote": "ملاحظة التحسين", + "versions": "إصدارات", + "version": "إصدار", + "latest": "الأحدث" + }, + "resetConfig": { + "title": "تأكيد إعادة التعيين؟", + "message": "تتجاهل إعادة التعيين التغييرات، وتستعيد التكوين الأخير المنشور." + }, + "errorMessage": { + "nameOfKeyRequired": "اسم المفتاح: {{key}} مطلوب", + "valueOfVarRequired": "قيمة {{key}} لا يمكن أن تكون فارغة", + "queryRequired": "نص الطلب مطلوب.", + "waitForResponse": "يرجى الانتظار حتى اكتمال الرد على الرسالة السابقة.", + "waitForBatchResponse": "يرجى الانتظار حتى اكتمال الرد على مهمة الدفعة.", + "notSelectModel": "يرجى اختيار نموذج", + "waitForImgUpload": "يرجى الانتظار حتى تحميل الصورة", + "waitForFileUpload": "يرجى الانتظار حتى تحميل الملف/الملفات" + }, + "warningMessage": { + "timeoutExceeded": "لا يتم عرض النتائج بسبب المهلة. يرجى الرجوع إلى السجلات لجمع النتائج الكاملة." + }, + "chatSubTitle": "تعليمات", + "completionSubTitle": "مقدمة المطالبة", + "promptTip": "توجه المطالبات استجابات الذكاء الاصطناعي بالتعليمات والقيود. أدرج متغيرات مثل {{input}}. لن تكون هذه المطالبة مرئية للمستخدمين.", + "formattingChangedTitle": "تغيير التنسيق", + "formattingChangedText": "سيؤدي تعديل التنسيق إلى إعادة تعيين منطقة التصحيح، هل أنت متأكد؟", + "variableTitle": "المتغيرات", + "variableTip": "يملأ المستخدمون المتغيرات في نموذج، ويستبدلون المتغيرات تلقائيًا في المطالبة.", + "notSetVar": "تسمح المتغيرات للمستخدمين بتقديم كلمات مطالبة أو ملاحظات افتتاحية عند ملء النماذج. يمكنك محاولة إدخال \"{{input}}\" في كلمات المطالبة.", + "autoAddVar": "المتغيرات غير المحددة المشار إليها في ما قبل المطالبة، هل ترغب في إضافتها في نموذج إدخال المستخدم؟", + "variableTable": { + "key": "مفتاح المتغير", + "name": "اسم حقل إدخال المستخدم", + "type": "نوع الإدخال", + "action": "إجراءات", + "typeString": "سلسلة", + "typeSelect": "تحديد" + }, + "varKeyError": { + "canNoBeEmpty": "{{key}} مطلوب", + "tooLong": "{{key}} طويل جدًا. لا يمكن أن يكون أطول من 30 حرفًا", + "notValid": "{{key}} غير صالح. يمكن أن يحتوي فقط على أحرف وأرقام وشرطات سفلية", + "notStartWithNumber": "{{key}} لا يمكن أن يبدأ برقم", + "keyAlreadyExists": "{{key}} موجود بالفعل" + }, + "otherError": { + "promptNoBeEmpty": "لا يمكن أن تكون المطالبة فارغة", + "historyNoBeEmpty": "يجب تعيين سجل المحادثة في المطالبة", + "queryNoBeEmpty": "يجب تعيين الاستعلام في المطالبة" + }, + "variableConfig": { + "addModalTitle": "إضافة حقل إدخال", + "editModalTitle": "تعديل حقل إدخال", + "description": "إعداد للمتغير {{varName}}", + "fieldType": "نوع الحقل", + "string": "نص قصير", + "text-input": "نص قصير", + "paragraph": "فقرة", + "select": "تحديد", + "number": "رقم", + "checkbox": "مربع اختيار", + "json": "كود JSON", + "jsonSchema": "مخطط JSON", + "optional": "اختياري", + "single-file": "ملف واحد", + "multi-files": "قائمة ملفات", + "notSet": "لم يتم التعيين، حاول كتابة {{input}} في بادئة المطالبة", + "stringTitle": "خيارات مربع نص النموذج", + "maxLength": "الحد الأقصى للطول", + "options": "خيارات", + "addOption": "إضافة خيار", + "apiBasedVar": "متغير قائم على API", + "varName": "اسم المتغير", + "labelName": "اسم التسمية", + "displayName": "اسم العرض", + "inputPlaceholder": "يرجى الإدخال", + "content": "المحتوى", + "required": "مطلوب", + "placeholder": "عنصر نائب", + "placeholderPlaceholder": "أدخل نصًا للعرض عندما يكون الحقل فارغًا", + "defaultValue": "القيمة الافتراضية", + "defaultValuePlaceholder": "أدخل قيمة افتراضية لملء الحقل مسبقًا", + "unit": "وحدة", + "unitPlaceholder": "عرض الوحدات بعد الأرقام، مثل الرموز", + "tooltips": "تلميحات الأدوات", + "tooltipsPlaceholder": "أدخل نصًا مفيدًا يظهر عند التمرير فوق التسمية", + "showAllSettings": "عرض جميع الإعدادات", + "startSelectedOption": "بدء الخيار المحدد", + "noDefaultSelected": "لا تحدد", + "hide": "إخفاء", + "file": { + "supportFileTypes": "أنواع الملفات المدعومة", + "image": { + "name": "صورة" + }, + "audio": { + "name": "صوت" + }, + "document": { + "name": "مستند" + }, + "video": { + "name": "فيديو" + }, + "custom": { + "name": "أنواع ملفات أخرى", + "description": "تحديد أنواع ملفات أخرى.", + "createPlaceholder": "+ ملحق الملف، مثل .doc" + } + }, + "uploadFileTypes": "تحميل أنواع الملفات", + "uploadMethod": "طريقة التحميل", + "localUpload": "تحميل محلي", + "both": "كلاهما", + "maxNumberOfUploads": "الحد الأقصى لعدد التحميلات", + "maxNumberTip": "وثيقة < {{docLimit}}، صورة < {{imgLimit}}، صوت < {{audioLimit}}، فيديو < {{videoLimit}}", + "errorMsg": { + "labelNameRequired": "اسم التسمية مطلوب", + "varNameCanBeRepeat": "اسم المتغير لا يمكن تكراره", + "atLeastOneOption": "خيار واحد على الأقل مطلوب", + "optionRepeat": "يوجد خيارات مكررة" + }, + "startChecked": "البدء محددًا", + "noDefaultValue": "لا توجد قيمة افتراضية", + "selectDefaultValue": "تحديد القيمة الافتراضية" + }, + "vision": { + "name": "الرؤية", + "description": "سيسمح تمكين الرؤية للنموذج بأخذ الصور والإجابة على الأسئلة حولها. ", + "onlySupportVisionModelTip": "يدعم نماذج الرؤية فقط", + "settings": "الإعدادات", + "visionSettings": { + "title": "إعدادات الرؤية", + "resolution": "الدقة", + "resolutionTooltip": "ستسمح الدقة المنخفضة للنموذج باستلام نسخة منخفضة الدقة 512 × 512 من الصورة، وتمثيل الصورة بميزانية 65 رمزًا. يتيح ذلك للواجهة البرمجية إرجاع استجابات أسرع واستهلاك عدد أقل من رموز الإدخال لحالات الاستخدام التي لا تتطلب تفاصيل عالية. ستسمح الدقة العالية أولاً للنموذج برؤية الصورة منخفضة الدقة ثم إنشاء مقتطفات مفصلة من الصور المدخلة كمربعات 512 بكسل بناءً على حجم الصورة المدخلة. يستخدم كل مقتطف مفصل ضعف ميزانية الرمز المميز بإجمالي 129 رمزًا.", + "high": "عالية", + "low": "منخفضة", + "uploadMethod": "طريقة التحميل", + "both": "كلاهما", + "localUpload": "تحميل محلي", + "url": "عنوان URL", + "uploadLimit": "حد التحميل" + } + }, + "voice": { + "name": "صوت", + "defaultDisplay": "صوت افتراضي", + "description": "إعدادات تحويل النص إلى كلام", + "settings": "الإعدادات", + "voiceSettings": { + "title": "إعدادات الصوت", + "language": "اللغة", + "resolutionTooltip": "دعم لغة تحويل النص إلى كلام.", + "voice": "صوت", + "autoPlay": "تشغيل تلقائي", + "autoPlayEnabled": "تشغيل", + "autoPlayDisabled": "إيقاف" + } + }, + "openingStatement": { + "title": "فاتحة المحادثة", + "add": "إضافة", + "writeOpener": "تعديل الفاتحة", + "placeholder": "اكتب رسالتك الافتتاحية هنا، يمكنك استخدام المتغيرات، حاول كتابة {{variable}}.", + "openingQuestion": "أسئلة افتتاحية", + "openingQuestionPlaceholder": "يمكنك استخدام المتغيرات، حاول كتابة {{variable}}.", + "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": "نص الإخراج", + "noResult": "سيتم عرض الإخراج هنا.", + "datasetConfig": { + "settingTitle": "إعدادات الاسترجاع", + "knowledgeTip": "انقر فوق الزر \"+\" لإضافة معرفة", + "retrieveOneWay": { + "title": "استرجاع N-to-1", + "description": "بناءً على نية المستخدم وأوصاف المعرفة، يختار الوكيل بشكل مستقل أفضل معرفة للاستعلام. الأفضل للتطبيقات ذات المعرفة المحددة والمحدودة." + }, + "retrieveMultiWay": { + "title": "استرجاع متعدد المسارات", + "description": "بناءً على نية المستخدم، يستعلم عبر جميع المعارف، ويسترجع النص ذي الصلة من مصادر متعددة، ويختار أفضل النتائج المطابقة لاستعلام المستخدم بعد إعادة الترتيب." + }, + "embeddingModelRequired": "مطلوب نموذج تضمين مكون", + "rerankModelRequired": "مطلوب نموذج إعادة ترتيب مكون", + "params": "معلمات", + "top_k": "أفضل K", + "top_kTip": "يستخدم لتصفية القطع الأكثر تشابهًا مع أسئلة المستخدم. سيقوم النظام أيضًا بضبط قيمة Top K ديناميكيًا، وفقًا لـ max_tokens للنموذج المحدد.", + "score_threshold": "عتبة النتيجة", + "score_thresholdTip": "يستخدم لتعيين عتبة التشابه لتصفية القطع.", + "retrieveChangeTip": "قد يؤثر تعديل وضع الفهرس ووضع الاسترجاع على التطبيقات المرتبطة بهذه المعرفة." + }, + "debugAsSingleModel": "تصحيح كنموذج واحد", + "debugAsMultipleModel": "تصحيح كنماذج متعددة", + "duplicateModel": "تكرار", + "publishAs": "نشر كـ", + "assistantType": { + "name": "نوع المساعد", + "chatAssistant": { + "name": "مساعد أساسي", + "description": "بناء مساعد قائم على الدردشة باستخدام نموذج لغة كبير" + }, + "agentAssistant": { + "name": "مساعد وكيل", + "description": "بناء وكيل ذكي يمكنه اختيار الأدوات بشكل مستقل لإكمال المهام" + } + }, + "agent": { + "agentMode": "وضع الوكيل", + "agentModeDes": "تعيين نوع وضع الاستدلال للوكيل", + "agentModeType": { + "ReACT": "ReAct", + "functionCall": "Function Calling" + }, + "setting": { + "name": "إعدادات الوكيل", + "description": "تسمح إعدادات مساعد الوكيل بتعيين وضع الوكيل والميزات المتقدمة مثل المطالبات المضمنة، المتاحة فقط في نوع الوكيل.", + "maximumIterations": { + "name": "الحد الأقصى للتكرارات", + "description": "الحد من عدد التكرارات التي يمكن لمساعد الوكيل تنفيذها" + } + }, + "buildInPrompt": "المطالبة المضمنة", + "firstPrompt": "المطالبة الأولى", + "nextIteration": "التكرار التالي", + "promptPlaceholder": "اكتب مطالبتك هنا", + "tools": { + "name": "الأدوات", + "description": "يمكن أن يؤدي استخدام الأدوات إلى توسيع قدرات LLM، مثل البحث في الإنترنت أو إجراء العمليات الحسابية العلمية", + "enabled": "ممكن" + } + } +} diff --git a/web/i18n/ar-TN/app-debug.ts b/web/i18n/ar-TN/app-debug.ts deleted file mode 100644 index 9430076c6e..0000000000 --- a/web/i18n/ar-TN/app-debug.ts +++ /dev/null @@ -1,571 +0,0 @@ -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: 'لم يتم تعيين مفتاح مزود LLM', - trailFinished: 'انتهت التجربة', - description: 'لم يتم تعيين مفتاح مزود LLM، ويجب تعيينه قبل تصحيح الأخطاء.', - 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: 'يمكنك استيراد المعرفة كسياق', - selectTitle: 'حدد المعرفة المرجعية', - selected: 'تم تحديد المعرفة', - noDataSet: 'لم يتم العثور على معرفة', - toCreate: 'الذهاب للإنشاء', - notSupportSelectMulti: 'دعم معرفة واحدة فقط حاليًا', - queryVariable: { - title: 'متغير الاستعلام', - tip: 'سيتم استخدام هذا المتغير كمدخل استعلام لاسترجاع السياق، والحصول على معلومات السياق المتعلقة بمدخل هذا المتغير.', - choosePlaceholder: 'اختر متغير الاستعلام', - noVar: 'لا توجد متغيرات', - noVarTip: 'يرجى إنشاء متغير في قسم المتغيرات', - unableToQueryDataSet: 'غير قادر على استعلام المعرفة', - unableToQueryDataSetTip: 'غير قادر على استعلام المعرفة بنجاح، يرجى اختيار متغير استعلام سياق في قسم السياق.', - ok: 'موافق', - contextVarNotEmpty: 'لا يمكن أن يكون متغير استعلام السياق فارغًا', - deleteContextVarTitle: 'حذف المتغير "{{varName}}"؟', - deleteContextVarTip: 'تم تعيين هذا المتغير كمتغير استعلام سياق، وسيؤثر إزالته على الاستخدام العادي للمعرفة. إذا كنت لا تزال بحاجة إلى حذفه، يرجى إعادة تحديده في قسم السياق.', - }, - }, - tools: { - title: 'الأدوات', - tips: 'توفر الأدوات طريقة استدعاء API قياسية، مع أخذ مدخلات المستخدم أو المتغيرات كمعلمات طلب للاستعلام عن البيانات الخارجية كسياق.', - toolsInUse: '{{count}} أدوات قيد الاستخدام', - modal: { - title: 'أداة', - toolType: { - title: 'نوع الأداة', - placeholder: 'يرجى اختيار نوع الأداة', - }, - name: { - title: 'الاسم', - placeholder: 'يرجى إدخال الاسم', - }, - variableName: { - title: 'اسم المتغير', - placeholder: 'يرجى إدخال اسم المتغير', - }, - }, - }, - conversationHistory: { - title: 'سجل المحادثة', - description: 'تعيين أسماء بادئة لأدوار المحادثة', - tip: 'لم يتم تمكين سجل المحادثة، يرجى إضافة في المطالبة أعلاه.', - learnMore: 'اعرف المزيد', - editModal: { - title: 'تعديل أسماء أدوار المحادثة', - userPrefix: 'بادئة المستخدم', - assistantPrefix: 'بادئة المساعد', - }, - }, - toolbox: { - title: 'صندوق الأدوات', - }, - moderation: { - title: 'تعديل المحتوى', - description: 'تأمين إخراج النموذج باستخدام API التعديل أو الحفاظ على قائمة كلمات حساسة.', - contentEnableLabel: 'تم تمكين تعديل المحتوى', - allEnabled: 'الإدخال والإخراج', - inputEnabled: 'الإدخال', - outputEnabled: 'الإخراج', - modal: { - title: 'إعدادات تعديل المحتوى', - provider: { - title: 'المزود', - openai: 'OpenAI Moderation', - openaiTip: { - prefix: 'تتطلب OpenAI Moderation مفتاح OpenAI API تم تكوينه في ', - suffix: '.', - }, - keywords: 'الكلمات الرئيسية', - }, - keywords: { - tip: 'واحد لكل سطر، مفصولة بفواصل الأسطر. ما يصل إلى 100 حرف لكل سطر.', - placeholder: 'واحد لكل سطر، مفصولة بفواصل الأسطر', - line: 'سطر', - }, - content: { - input: 'تعديل محتوى الإدخال', - output: 'تعديل محتوى الإخراج', - preset: 'ردود محددة مسبقًا', - placeholder: 'محتوى الردود المحددة مسبقًا هنا', - condition: 'تم تمكين تعديل محتوى الإدخال والإخراج واحد على الأقل', - fromApi: 'يتم إرجاع الردود المحددة مسبقًا بواسطة API', - errorMessage: 'لا يمكن أن تكون الردود المحددة مسبقًا فارغة', - supportMarkdown: 'دعم Markdown', - }, - openaiNotConfig: { - before: 'تتطلب OpenAI Moderation مفتاح OpenAI API تم تكوينه في', - after: '', - }, - }, - }, - fileUpload: { - title: 'تحميل الملف', - description: 'يسمح مربع إدخال الدردشة بتحميل الصور والمستندات والملفات الأخرى.', - supportedTypes: 'أنواع الملفات المدعومة', - numberLimit: 'الحد الأقصى للتحميلات', - modalTitle: 'إعداد تحميل الملف', - }, - imageUpload: { - title: 'تحميل الصور', - description: 'السماح بتحميل الصور.', - supportedTypes: 'أنواع الملفات المدعومة', - numberLimit: 'الحد الأقصى للتحميلات', - modalTitle: 'إعداد تحميل الصور', - }, - bar: { - empty: 'تمكين الميزة لتعزيز تجربة مستخدم تطبيق الويب', - enableText: 'تم تمكين الميزات', - manage: 'إدارة', - }, - documentUpload: { - title: 'مستند', - description: 'سيسمح تمكين المستند للنموذج بأخذ المستندات والإجابة على الأسئلة حولها.', - }, - audioUpload: { - title: 'صوت', - description: 'سيسمح تمكين الصوت للنموذج بمعالجة ملفات الصوت للنسخ والتحليل.', - }, - }, - codegen: { - title: 'مولد الكود', - description: 'يستخدم مولد الكود النماذج المكونة لتوليد كود عالي الجودة بناءً على تعليماتك. يرجى تقديم تعليمات واضحة ومفصلة.', - instruction: 'تعليمات', - instructionPlaceholder: 'أدخل وصفًا تفصيليًا للكود الذي تريد توليده.', - noDataLine1: 'صف حالة استخدامك على اليسار،', - noDataLine2: 'سيظهر معاينة الكود هنا.', - generate: 'توليد', - generatedCodeTitle: 'الكود المولد', - loading: 'جاري توليد الكود...', - apply: 'تطبيق', - applyChanges: 'تطبيق التغييرات', - resTitle: 'الكود المولد', - overwriteConfirmTitle: 'استبدال الكود الموجود؟', - overwriteConfirmMessage: 'سيؤدي هذا الإجراء إلى استبدال الكود الموجود. هل تريد المتابعة؟', - }, - generate: { - title: 'مولد المطالبة', - description: 'يستخدم مولد المطالبة النموذج المكون لتحسين المطالبات للحصول على جودة أعلى وبنية أفضل. يرجى كتابة تعليمات واضحة ومفصلة.', - tryIt: 'جربه', - instruction: 'تعليمات', - instructionPlaceHolderTitle: 'صف كيف ترغب في تحسين هذه المطالبة. على سبيل المثال:', - instructionPlaceHolderLine1: 'اجعل الإخراج أكثر إيجازًا، مع الاحتفاظ بالنقاط الأساسية.', - instructionPlaceHolderLine2: 'تنسيق الإخراج غير صحيح، يرجى اتباع تنسيق JSON بدقة.', - instructionPlaceHolderLine3: 'النبرة قاسية جدًا، يرجى جعلها أكثر ودية.', - codeGenInstructionPlaceHolderLine: 'كلما كانت الملاحظات أكثر تفصيلاً، مثل أنواع بيانات الإدخال والإخراج وكذلك كيفية معالجة المتغيرات، كلما كان توليد الكود أكثر دقة.', - idealOutput: 'المخرجات المثالية', - idealOutputPlaceholder: 'صف تنسيق الاستجابة المثالي، والطول، والنبرة، ومتطلبات المحتوى...', - optional: 'اختياري', - dismiss: 'تجاهل', - generate: 'توليد', - resTitle: 'المطالبة المولدة', - newNoDataLine1: 'اكتب تعليمات في العمود الأيسر، وانقر فوق توليد لرؤية الاستجابة. ', - apply: 'تطبيق', - loading: 'تنسيق التطبيق لك...', - overwriteTitle: 'تجاوز التكوين الحالي؟', - overwriteMessage: 'سيؤدي تطبيق هذه المطالبة إلى تجاوز التكوين الحالي.', - template: { - pythonDebugger: { - name: 'مصحح أخطاء بايثون', - instruction: 'برنامج روبوت يمكنه إنشاء وتصحيح الكود الخاص بك بناءً على تعليماتك', - }, - translation: { - name: 'ترجمة', - instruction: 'مترجم يمكنه ترجمة لغات متعددة', - }, - professionalAnalyst: { - name: 'محلل محترف', - instruction: 'استخراج الرؤى وتحديد المخاطر وتقطير المعلومات الأساسية من التقارير الطويلة في مذكرة واحدة', - }, - excelFormulaExpert: { - name: 'خبير صيغة Excel', - instruction: 'روبوت دردشة يمكنه مساعدة المستخدمين المبتدئين على فهم صيغ Excel واستخدامها وإنشائها بناءً على تعليمات المستخدم', - }, - travelPlanning: { - name: 'تخطيط السفر', - instruction: 'مساعد تخطيط السفر هو أداة ذكية مصممة لمساعدة المستخدمين على التخطيط لرحلاتهم بسهولة', - }, - SQLSorcerer: { - name: 'ساحر SQL', - instruction: 'تحويل اللغة اليومية إلى استعلامات SQL', - }, - GitGud: { - name: 'Git gud', - instruction: 'إنشاء أوامر Git مناسبة بناءً على إجراءات التحكم في الإصدار التي وصفها المستخدم', - }, - meetingTakeaways: { - name: 'اجتماع الوجبات الجاهزة', - instruction: 'تقطير الاجتماعات في ملخصات موجزة بما في ذلك مواضيع المناقشة، والوجبات الجاهزة الرئيسية، وعناصر العمل', - }, - writingsPolisher: { - name: 'ملمع الكتابات', - instruction: 'استخدم تقنيات التحرير المتقدمة لتحسين كتاباتك', - }, - }, - press: 'اضغط', - to: 'إلى ', - insertContext: 'إدراج السياق', - optimizePromptTooltip: 'تحسين في مولد المطالبة', - optimizationNote: 'ملاحظة التحسين', - versions: 'إصدارات', - version: 'إصدار', - latest: 'الأحدث', - }, - resetConfig: { - title: 'تأكيد إعادة التعيين؟', - message: - 'تتجاهل إعادة التعيين التغييرات، وتستعيد التكوين الأخير المنشور.', - }, - errorMessage: { - nameOfKeyRequired: 'اسم المفتاح: {{key}} مطلوب', - valueOfVarRequired: 'قيمة {{key}} لا يمكن أن تكون فارغة', - queryRequired: 'نص الطلب مطلوب.', - waitForResponse: 'يرجى الانتظار حتى اكتمال الرد على الرسالة السابقة.', - waitForBatchResponse: 'يرجى الانتظار حتى اكتمال الرد على مهمة الدفعة.', - notSelectModel: 'يرجى اختيار نموذج', - waitForImgUpload: 'يرجى الانتظار حتى تحميل الصورة', - waitForFileUpload: 'يرجى الانتظار حتى تحميل الملف/الملفات', - }, - warningMessage: { - timeoutExceeded: 'لا يتم عرض النتائج بسبب المهلة. يرجى الرجوع إلى السجلات لجمع النتائج الكاملة.', - }, - chatSubTitle: 'تعليمات', - completionSubTitle: 'مقدمة المطالبة', - promptTip: - 'توجه المطالبات استجابات الذكاء الاصطناعي بالتعليمات والقيود. أدرج متغيرات مثل {{input}}. لن تكون هذه المطالبة مرئية للمستخدمين.', - formattingChangedTitle: 'تغيير التنسيق', - formattingChangedText: - 'سيؤدي تعديل التنسيق إلى إعادة تعيين منطقة التصحيح، هل أنت متأكد؟', - variableTitle: 'المتغيرات', - variableTip: - 'يملأ المستخدمون المتغيرات في نموذج، ويستبدلون المتغيرات تلقائيًا في المطالبة.', - notSetVar: 'تسمح المتغيرات للمستخدمين بتقديم كلمات مطالبة أو ملاحظات افتتاحية عند ملء النماذج. يمكنك محاولة إدخال "{{input}}" في كلمات المطالبة.', - autoAddVar: 'المتغيرات غير المحددة المشار إليها في ما قبل المطالبة، هل ترغب في إضافتها في نموذج إدخال المستخدم؟', - variableTable: { - key: 'مفتاح المتغير', - name: 'اسم حقل إدخال المستخدم', - type: 'نوع الإدخال', - action: 'إجراءات', - typeString: 'سلسلة', - typeSelect: 'تحديد', - }, - varKeyError: { - canNoBeEmpty: '{{key}} مطلوب', - tooLong: '{{key}} طويل جدًا. لا يمكن أن يكون أطول من 30 حرفًا', - notValid: '{{key}} غير صالح. يمكن أن يحتوي فقط على أحرف وأرقام وشرطات سفلية', - notStartWithNumber: '{{key}} لا يمكن أن يبدأ برقم', - keyAlreadyExists: '{{key}} موجود بالفعل', - }, - otherError: { - promptNoBeEmpty: 'لا يمكن أن تكون المطالبة فارغة', - historyNoBeEmpty: 'يجب تعيين سجل المحادثة في المطالبة', - queryNoBeEmpty: 'يجب تعيين الاستعلام في المطالبة', - }, - variableConfig: { - 'addModalTitle': 'إضافة حقل إدخال', - 'editModalTitle': 'تعديل حقل إدخال', - 'description': 'إعداد للمتغير {{varName}}', - 'fieldType': 'نوع الحقل', - 'string': 'نص قصير', - 'text-input': 'نص قصير', - 'paragraph': 'فقرة', - 'select': 'تحديد', - 'number': 'رقم', - 'checkbox': 'مربع اختيار', - 'json': 'كود JSON', - 'jsonSchema': 'مخطط JSON', - 'optional': 'اختياري', - 'single-file': 'ملف واحد', - 'multi-files': 'قائمة ملفات', - 'notSet': 'لم يتم التعيين، حاول كتابة {{input}} في بادئة المطالبة', - 'stringTitle': 'خيارات مربع نص النموذج', - 'maxLength': 'الحد الأقصى للطول', - 'options': 'خيارات', - 'addOption': 'إضافة خيار', - 'apiBasedVar': 'متغير قائم على API', - 'varName': 'اسم المتغير', - 'labelName': 'اسم التسمية', - 'displayName': 'اسم العرض', - 'inputPlaceholder': 'يرجى الإدخال', - 'content': 'المحتوى', - 'required': 'مطلوب', - 'placeholder': 'عنصر نائب', - 'placeholderPlaceholder': 'أدخل نصًا للعرض عندما يكون الحقل فارغًا', - 'defaultValue': 'القيمة الافتراضية', - 'defaultValuePlaceholder': 'أدخل قيمة افتراضية لملء الحقل مسبقًا', - 'unit': 'وحدة', - 'unitPlaceholder': 'عرض الوحدات بعد الأرقام، مثل الرموز', - 'tooltips': 'تلميحات الأدوات', - 'tooltipsPlaceholder': 'أدخل نصًا مفيدًا يظهر عند التمرير فوق التسمية', - 'showAllSettings': 'عرض جميع الإعدادات', - 'startSelectedOption': 'بدء الخيار المحدد', - 'noDefaultSelected': 'لا تحدد', - 'hide': 'إخفاء', - 'file': { - supportFileTypes: 'أنواع الملفات المدعومة', - image: { - name: 'صورة', - }, - audio: { - name: 'صوت', - }, - document: { - name: 'مستند', - }, - video: { - name: 'فيديو', - }, - custom: { - name: 'أنواع ملفات أخرى', - description: 'تحديد أنواع ملفات أخرى.', - createPlaceholder: '+ ملحق الملف، مثل .doc', - }, - }, - 'uploadFileTypes': 'تحميل أنواع الملفات', - 'uploadMethod': 'طريقة التحميل', - 'localUpload': 'تحميل محلي', - 'both': 'كلاهما', - 'maxNumberOfUploads': 'الحد الأقصى لعدد التحميلات', - 'maxNumberTip': 'وثيقة < {{docLimit}}، صورة < {{imgLimit}}، صوت < {{audioLimit}}، فيديو < {{videoLimit}}', - 'errorMsg': { - labelNameRequired: 'اسم التسمية مطلوب', - varNameCanBeRepeat: 'اسم المتغير لا يمكن تكراره', - atLeastOneOption: 'خيار واحد على الأقل مطلوب', - optionRepeat: 'يوجد خيارات مكررة', - }, - 'startChecked': 'البدء محددًا', - 'noDefaultValue': 'لا توجد قيمة افتراضية', - 'selectDefaultValue': 'تحديد القيمة الافتراضية', - }, - vision: { - name: 'الرؤية', - description: 'سيسمح تمكين الرؤية للنموذج بأخذ الصور والإجابة على الأسئلة حولها. ', - onlySupportVisionModelTip: 'يدعم نماذج الرؤية فقط', - settings: 'الإعدادات', - visionSettings: { - title: 'إعدادات الرؤية', - resolution: 'الدقة', - resolutionTooltip: 'ستسمح الدقة المنخفضة للنموذج باستلام نسخة منخفضة الدقة 512 × 512 من الصورة، وتمثيل الصورة بميزانية 65 رمزًا. يتيح ذلك للواجهة البرمجية إرجاع استجابات أسرع واستهلاك عدد أقل من رموز الإدخال لحالات الاستخدام التي لا تتطلب تفاصيل عالية. ستسمح الدقة العالية أولاً للنموذج برؤية الصورة منخفضة الدقة ثم إنشاء مقتطفات مفصلة من الصور المدخلة كمربعات 512 بكسل بناءً على حجم الصورة المدخلة. يستخدم كل مقتطف مفصل ضعف ميزانية الرمز المميز بإجمالي 129 رمزًا.', - high: 'عالية', - low: 'منخفضة', - uploadMethod: 'طريقة التحميل', - both: 'كلاهما', - localUpload: 'تحميل محلي', - url: 'عنوان URL', - uploadLimit: 'حد التحميل', - }, - }, - voice: { - name: 'صوت', - defaultDisplay: 'صوت افتراضي', - description: 'إعدادات تحويل النص إلى كلام', - settings: 'الإعدادات', - voiceSettings: { - title: 'إعدادات الصوت', - language: 'اللغة', - resolutionTooltip: 'دعم لغة تحويل النص إلى كلام.', - voice: 'صوت', - autoPlay: 'تشغيل تلقائي', - autoPlayEnabled: 'تشغيل', - autoPlayDisabled: 'إيقاف', - }, - }, - openingStatement: { - title: 'فاتحة المحادثة', - add: 'إضافة', - writeOpener: 'تعديل الفاتحة', - placeholder: 'اكتب رسالتك الافتتاحية هنا، يمكنك استخدام المتغيرات، حاول كتابة {{variable}}.', - openingQuestion: 'أسئلة افتتاحية', - openingQuestionPlaceholder: 'يمكنك استخدام المتغيرات، حاول كتابة {{variable}}.', - 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: 'نص الإخراج', - noResult: 'سيتم عرض الإخراج هنا.', - datasetConfig: { - settingTitle: 'إعدادات الاسترجاع', - knowledgeTip: 'انقر فوق الزر "+" لإضافة معرفة', - retrieveOneWay: { - title: 'استرجاع N-to-1', - description: 'بناءً على نية المستخدم وأوصاف المعرفة، يختار الوكيل بشكل مستقل أفضل معرفة للاستعلام. الأفضل للتطبيقات ذات المعرفة المحددة والمحدودة.', - }, - retrieveMultiWay: { - title: 'استرجاع متعدد المسارات', - description: 'بناءً على نية المستخدم، يستعلم عبر جميع المعارف، ويسترجع النص ذي الصلة من مصادر متعددة، ويختار أفضل النتائج المطابقة لاستعلام المستخدم بعد إعادة الترتيب.', - }, - embeddingModelRequired: 'مطلوب نموذج تضمين مكون', - rerankModelRequired: 'مطلوب نموذج إعادة ترتيب مكون', - params: 'معلمات', - top_k: 'أفضل K', - top_kTip: 'يستخدم لتصفية القطع الأكثر تشابهًا مع أسئلة المستخدم. سيقوم النظام أيضًا بضبط قيمة Top K ديناميكيًا، وفقًا لـ max_tokens للنموذج المحدد.', - score_threshold: 'عتبة النتيجة', - score_thresholdTip: 'يستخدم لتعيين عتبة التشابه لتصفية القطع.', - retrieveChangeTip: 'قد يؤثر تعديل وضع الفهرس ووضع الاسترجاع على التطبيقات المرتبطة بهذه المعرفة.', - }, - debugAsSingleModel: 'تصحيح كنموذج واحد', - debugAsMultipleModel: 'تصحيح كنماذج متعددة', - duplicateModel: 'تكرار', - publishAs: 'نشر كـ', - assistantType: { - name: 'نوع المساعد', - chatAssistant: { - name: 'مساعد أساسي', - description: 'بناء مساعد قائم على الدردشة باستخدام نموذج لغة كبير', - }, - agentAssistant: { - name: 'مساعد وكيل', - description: 'بناء وكيل ذكي يمكنه اختيار الأدوات بشكل مستقل لإكمال المهام', - }, - }, - agent: { - agentMode: 'وضع الوكيل', - agentModeDes: 'تعيين نوع وضع الاستدلال للوكيل', - agentModeType: { - ReACT: 'ReAct', - functionCall: 'Function Calling', - }, - setting: { - name: 'إعدادات الوكيل', - description: 'تسمح إعدادات مساعد الوكيل بتعيين وضع الوكيل والميزات المتقدمة مثل المطالبات المضمنة، المتاحة فقط في نوع الوكيل.', - maximumIterations: { - name: 'الحد الأقصى للتكرارات', - description: 'الحد من عدد التكرارات التي يمكن لمساعد الوكيل تنفيذها', - }, - }, - buildInPrompt: 'المطالبة المضمنة', - firstPrompt: 'المطالبة الأولى', - nextIteration: 'التكرار التالي', - promptPlaceholder: 'اكتب مطالبتك هنا', - tools: { - name: 'الأدوات', - description: 'يمكن أن يؤدي استخدام الأدوات إلى توسيع قدرات LLM، مثل البحث في الإنترنت أو إجراء العمليات الحسابية العلمية', - enabled: 'ممكن', - }, - }, -} - -export default translation diff --git a/web/i18n/ar-TN/app-log.json b/web/i18n/ar-TN/app-log.json new file mode 100644 index 0000000000..cdcf640d98 --- /dev/null +++ b/web/i18n/ar-TN/app-log.json @@ -0,0 +1,110 @@ +{ + "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": "الإصدار", + "updatedTime": "الوقت المحدث", + "triggered_from": "محفّز بواسطة" + }, + "pagination": { + "previous": "السابق", + "next": "التالي" + }, + "empty": { + "noChat": "لا توجد محادثة حتى الآن", + "noOutput": "لا توجد مخرجات", + "element": { + "title": "هل هناك أي شخص؟", + "content": "راقب وتهميش تفاعلات المستخدمين النهائيين والتطبيقات الذكية هنا لتحسين دقة الذكاء الاصطناعي باستمرار." + } + } + }, + "detail": { + "time": "الوقت", + "conversationId": "معرف المحادثة", + "promptTemplate": "قالب المطالبة", + "promptTemplateBeforeChat": "قالب المطالبة قبل الدردشة · كرسالة نظام", + "annotationTip": "تحسينات تم وضع علامة عليها بواسطة {{user}}", + "timeConsuming": "", + "second": "ثانية", + "tokenCost": "تكلفة الرموز", + "loading": "جاري التحميل", + "operation": { + "like": "إعجاب", + "dislike": "لم يعجبني", + "addAnnotation": "إضافة تحسين", + "editAnnotation": "تعديل التحسين", + "annotationPlaceholder": "أدخل الإجابة المتوقعة التي تريد أن يرد بها الذكاء الاصطناعي، والتي يمكن استخدامها لضبط النموذج والتحسين المستمر لجودة توليد النص." + }, + "variables": "المتغيرات", + "uploadImages": "الصور المحملة", + "modelParams": "معلمات النموذج" + }, + "filter": { + "period": { + "today": "اليوم", + "last7days": "آخر 7 أيام", + "last4weeks": "آخر 4 أسابيع", + "last3months": "آخر 3 أشهر", + "last12months": "آخر 12 شهرًا", + "monthToDate": "الشهر حتى الآن", + "quarterToDate": "الربع حتى الآن", + "yearToDate": "السنة حتى الآن", + "allTime": "كل الوقت", + "last30days": "آخر 30 يومًا", + "custom": "مخصص" + }, + "annotation": { + "all": "الكل", + "annotated": "تحسينات موصوفة ({{count}})", + "not_annotated": "غير موصوفة" + }, + "sortBy": "رتب حسب:", + "descending": "تنازلي", + "ascending": "تصاعدي" + }, + "workflowTitle": "سجلات سير العمل", + "workflowSubtitle": "سجل تفاصيل تشغيل سير العمل.", + "runDetail": { + "title": "سجل المحادثة", + "workflowTitle": "تفاصيل السجل", + "fileListLabel": "تفاصيل الملف", + "fileListDetail": "تفاصيل", + "testWithParams": "اختبار مع المعلمات" + }, + "promptLog": "سجل المطالبة", + "agentLog": "سجل الوكيل", + "viewLog": "عرض السجل", + "agentLogDetail": { + "agentMode": "وضع الوكيل", + "toolUsed": "الأداة المستخدمة", + "iterations": "التكرارات", + "iteration": "تكرار", + "finalProcessing": "المعالجة النهائية" + }, + "triggerBy": { + "debugging": "تصحيح الأخطاء", + "appRun": "تشغيل التطبيق", + "webhook": "Webhook", + "schedule": "الجدول الزمني", + "plugin": "المكون الإضافي", + "ragPipelineRun": "تشغيل خط أنابيب RAG", + "ragPipelineDebugging": "تصحيح أخطاء RAG" + }, + "dateFormat": "شهر/يوم/سنة" +} diff --git a/web/i18n/ar-TN/app-log.ts b/web/i18n/ar-TN/app-log.ts deleted file mode 100644 index a886dd956b..0000000000 --- a/web/i18n/ar-TN/app-log.ts +++ /dev/null @@ -1,112 +0,0 @@ -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: 'الإصدار', - updatedTime: 'الوقت المحدث', - triggered_from: 'محفّز بواسطة', - }, - pagination: { - previous: 'السابق', - next: 'التالي', - }, - empty: { - noChat: 'لا توجد محادثة حتى الآن', - noOutput: 'لا توجد مخرجات', - element: { - title: 'هل هناك أي شخص؟', - content: 'راقب وتهميش تفاعلات المستخدمين النهائيين والتطبيقات الذكية هنا لتحسين دقة الذكاء الاصطناعي باستمرار.', - }, - }, - }, - detail: { - time: 'الوقت', - conversationId: 'معرف المحادثة', - promptTemplate: 'قالب المطالبة', - promptTemplateBeforeChat: 'قالب المطالبة قبل الدردشة · كرسالة نظام', - annotationTip: 'تحسينات تم وضع علامة عليها بواسطة {{user}}', - timeConsuming: '', - second: 'ثانية', - tokenCost: 'تكلفة الرموز', - loading: 'جاري التحميل', - operation: { - like: 'إعجاب', - dislike: 'لم يعجبني', - addAnnotation: 'إضافة تحسين', - editAnnotation: 'تعديل التحسين', - annotationPlaceholder: 'أدخل الإجابة المتوقعة التي تريد أن يرد بها الذكاء الاصطناعي، والتي يمكن استخدامها لضبط النموذج والتحسين المستمر لجودة توليد النص.', - }, - variables: 'المتغيرات', - uploadImages: 'الصور المحملة', - modelParams: 'معلمات النموذج', - }, - filter: { - period: { - today: 'اليوم', - last7days: 'آخر 7 أيام', - last4weeks: 'آخر 4 أسابيع', - last3months: 'آخر 3 أشهر', - last12months: 'آخر 12 شهرًا', - monthToDate: 'الشهر حتى الآن', - quarterToDate: 'الربع حتى الآن', - yearToDate: 'السنة حتى الآن', - allTime: 'كل الوقت', - last30days: 'آخر 30 يومًا', - custom: 'مخصص', - }, - annotation: { - all: 'الكل', - annotated: 'تحسينات موصوفة ({{count}})', - not_annotated: 'غير موصوفة', - }, - sortBy: 'رتب حسب:', - descending: 'تنازلي', - ascending: 'تصاعدي', - }, - workflowTitle: 'سجلات سير العمل', - workflowSubtitle: 'سجل تفاصيل تشغيل سير العمل.', - runDetail: { - title: 'سجل المحادثة', - workflowTitle: 'تفاصيل السجل', - fileListLabel: 'تفاصيل الملف', - fileListDetail: 'تفاصيل', - testWithParams: 'اختبار مع المعلمات', - }, - promptLog: 'سجل المطالبة', - agentLog: 'سجل الوكيل', - viewLog: 'عرض السجل', - agentLogDetail: { - agentMode: 'وضع الوكيل', - toolUsed: 'الأداة المستخدمة', - iterations: 'التكرارات', - iteration: 'تكرار', - finalProcessing: 'المعالجة النهائية', - }, - triggerBy: { - debugging: 'تصحيح الأخطاء', - appRun: 'تشغيل التطبيق', - webhook: 'Webhook', - schedule: 'الجدول الزمني', - plugin: 'المكون الإضافي', - ragPipelineRun: 'تشغيل خط أنابيب RAG', - ragPipelineDebugging: 'تصحيح أخطاء RAG', - }, - dateFormat: 'شهر/يوم/سنة', -} - -export default translation diff --git a/web/i18n/ar-TN/app-overview.json b/web/i18n/ar-TN/app-overview.json new file mode 100644 index 0000000000..df7ff01617 --- /dev/null +++ b/web/i18n/ar-TN/app-overview.json @@ -0,0 +1,187 @@ +{ + "welcome": { + "firstStepTip": "للبدء،", + "enterKeyTip": "أدخل مفتاح OpenAI API الخاص بك أدناه", + "getKeyTip": "احصل على مفتاح API الخاص بك من لوحة تحكم OpenAI", + "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": { + "title": "تطبيق ويب", + "explanation": "تطبيق ويب AI جاهز للاستخدام", + "accessibleAddress": "عنوان URL عام", + "preview": "معاينة", + "launch": "إطلاق", + "regenerate": "إعادة إنشاء", + "regenerateNotice": "هل تريد إعادة إنشاء عنوان URL العام؟", + "preUseReminder": "يرجى تمكين تطبيق الويب قبل المتابعة.", + "enableTooltip": { + "description": "لتمكين هذه الميزة، يرجى إضافة عقدة إدخال المستخدم إلى اللوحة. (قد تكون موجودة بالفعل في المسودة، وتدخل حيز التنفيذ بعد النشر)", + "learnMore": "اعرف المزيد" + }, + "settings": { + "entry": "الإعدادات", + "title": "إعدادات تطبيق الويب", + "modalTip": "إعدادات تطبيق الويب من جانب العميل. ", + "webName": "اسم تطبيق الويب", + "webDesc": "وصف تطبيق الويب", + "webDescTip": "سيتم عرض هذا النص على جانب العميل، مما يوفر إرشادات أساسية حول كيفية استخدام التطبيق", + "webDescPlaceholder": "أدخل وصف تطبيق الويب", + "language": "اللغة", + "workflow": { + "title": "سير العمل", + "subTitle": "تفاصيل سير العمل", + "show": "عرض", + "hide": "إخفاء", + "showDesc": "عرض أو إخفاء تفاصيل سير العمل في تطبيق الويب" + }, + "chatColorTheme": "سمة لون الدردشة", + "chatColorThemeDesc": "تعيين سمة لون روبوت الدردشة", + "chatColorThemeInverted": "معكوس", + "invalidHexMessage": "قيمة hex غير صالحة", + "invalidPrivacyPolicy": "رابط سياسة الخصوصية غير صالح. يرجى استخدام رابط صالح يبدأ بـ http أو https", + "sso": { + "label": "فرض SSO", + "title": "تطبيق ويب SSO", + "description": "يُطلب من جميع المستخدمين تسجيل الدخول باستخدام SSO قبل استخدام تطبيق الويب", + "tooltip": "اتصل بالمسؤول لتمكين تطبيق ويب SSO" + }, + "more": { + "entry": "عرض المزيد من الإعدادات", + "copyright": "حقوق النشر", + "copyrightTip": "عرض معلومات حقوق النشر في تطبيق الويب", + "copyrightTooltip": "يرجى الترقية إلى الخطة الاحترافية أو أعلى", + "copyRightPlaceholder": "أدخل اسم المؤلف أو المنظمة", + "privacyPolicy": "سياسة الخصوصية", + "privacyPolicyPlaceholder": "أدخل رابط سياسة الخصوصية", + "privacyPolicyTip": "يساعد الزوار على فهم البيانات التي يجمعها التطبيق، راجع سياسة الخصوصية لـ Dify.", + "customDisclaimer": "إخلاء مسؤولية مخصص", + "customDisclaimerPlaceholder": "أدخل نص إخلاء المسؤولية المخصص", + "customDisclaimerTip": "سيتم عرض نص إخلاء المسؤولية المخصص على جانب العميل، مما يوفر معلومات إضافية حول التطبيق" + } + }, + "embedded": { + "entry": "مضمن", + "title": "تضمين في الموقع", + "explanation": "اختر طريقة لتضمين تطبيق الدردشة في موقعك", + "iframe": "لإضافة تطبيق الدردشة في أي مكان على موقعك، أضف هذا iframe إلى كود html الخاص بك.", + "scripts": "لإضافة تطبيق دردشة إلى أسفل يمين موقعك، أضف هذا الكود إلى html الخاص بك.", + "chromePlugin": "تثبيت ملحق Dify Chatbot Chrome", + "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": "كتابة كود من جانب العميل لاستدعاء API ونشره على خادم", + "operation": "التوثيق" + } + } + }, + "apiInfo": { + "title": "واجهة برمجة تطبيقات خدمة الخلفية", + "explanation": "سهلة الدمج في تطبيقك", + "accessibleAddress": "نقطة نهاية واجهة برمجة تطبيقات الخدمة", + "doc": "مرجع API" + }, + "triggerInfo": { + "title": "المشغلات", + "explanation": "إدارة مشغلات سير العمل", + "triggersAdded": "تمت إضافة {{count}} مشغلات", + "noTriggerAdded": "لم تتم إضافة أي مشغل", + "triggerStatusDescription": "تظهر حالة عقدة المشغل هنا. (قد تكون موجودة بالفعل في المسودة، وتدخل حيز التنفيذ بعد النشر)", + "learnAboutTriggers": "تعرف على المشغلات" + }, + "status": { + "running": "في الخدمة", + "disable": "تعطيل" + }, + "disableTooltip": { + "triggerMode": "ميزة {{feature}} غير مدعومة في وضع عقدة المشغل." + } + }, + "analysis": { + "title": "تحليل", + "ms": "مللي ثانية", + "tokenPS": "الرموز/ثانية", + "totalMessages": { + "title": "إجمالي الرسائل", + "explanation": "عدد تفاعلات الذكاء الاصطناعي اليومية؛ يمنع هندسة/تصحيح المطالبة." + }, + "totalConversations": { + "title": "إجمالي المحادثات", + "explanation": "عدد المحادثات اليومية للذكاء الاصطناعي؛ باستثناء هندسة/تصحيح المطالبة." + }, + "activeUsers": { + "title": "المستخدمون النشطون", + "explanation": "المستخدمون الفريدون الذين يشاركون في Q&A مع المساعد؛ يستبعد هندسة/تصحيح المطالبة." + }, + "tokenUsage": { + "title": "استخدام الرموز", + "explanation": "يعكس استخدام الرموز اليومية لنموذج اللغة لتطبيق WebApp، مفيدًا للتحكم في التكلفة.", + "consumed": "المستهلكة" + }, + "avgSessionInteractions": { + "title": "متوسط تفاعلات الجلسة", + "explanation": "عدد مفاتيح التواصل المستمر بين المستخدم والذكاء الاصطناعي؛ للمطبيقات القائمة على المحادثة." + }, + "avgUserInteractions": { + "title": "متوسط تفاعلات المستخدم", + "explanation": "يعكس تكرار الاستخدام اليومي للمستخدمين. يعكس هذا المقياس لزوجة المستخدم." + }, + "userSatisfactionRate": { + "title": "معدل رضا المستخدم", + "explanation": "عدد الإعجابات لكل 1000 رسالة. يشير هذا إلى النسبة التي يرضى فيها المستخدمون للغاية عن الإجابات." + }, + "avgResponseTime": { + "title": "متوسط وقت الاستجابة", + "explanation": "الوقت (مللي ثانية) حتى يقوم الذكاء الاصطناعي بالمعالجة/الاستجابة؛ للمطبيقات النصية (text-based)." + }, + "tps": { + "title": "سرعة إخراج الرمز", + "explanation": "قياس أداء LLM. عد الرموز إخراج LLM من بداية الطلب إلى اكتمال الإخراج." + } + } +} diff --git a/web/i18n/ar-TN/app-overview.ts b/web/i18n/ar-TN/app-overview.ts deleted file mode 100644 index d019e20b30..0000000000 --- a/web/i18n/ar-TN/app-overview.ts +++ /dev/null @@ -1,189 +0,0 @@ -const translation = { - welcome: { - firstStepTip: 'للبدء،', - enterKeyTip: 'أدخل مفتاح OpenAI API الخاص بك أدناه', - getKeyTip: 'احصل على مفتاح API الخاص بك من لوحة تحكم OpenAI', - 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: { - title: 'تطبيق ويب', - explanation: 'تطبيق ويب AI جاهز للاستخدام', - accessibleAddress: 'عنوان URL عام', - preview: 'معاينة', - launch: 'إطلاق', - regenerate: 'إعادة إنشاء', - regenerateNotice: 'هل تريد إعادة إنشاء عنوان URL العام؟', - preUseReminder: 'يرجى تمكين تطبيق الويب قبل المتابعة.', - enableTooltip: { - description: 'لتمكين هذه الميزة، يرجى إضافة عقدة إدخال المستخدم إلى اللوحة. (قد تكون موجودة بالفعل في المسودة، وتدخل حيز التنفيذ بعد النشر)', - learnMore: 'اعرف المزيد', - }, - settings: { - entry: 'الإعدادات', - title: 'إعدادات تطبيق الويب', - modalTip: 'إعدادات تطبيق الويب من جانب العميل. ', - webName: 'اسم تطبيق الويب', - webDesc: 'وصف تطبيق الويب', - webDescTip: 'سيتم عرض هذا النص على جانب العميل، مما يوفر إرشادات أساسية حول كيفية استخدام التطبيق', - webDescPlaceholder: 'أدخل وصف تطبيق الويب', - language: 'اللغة', - workflow: { - title: 'سير العمل', - subTitle: 'تفاصيل سير العمل', - show: 'عرض', - hide: 'إخفاء', - showDesc: 'عرض أو إخفاء تفاصيل سير العمل في تطبيق الويب', - }, - chatColorTheme: 'سمة لون الدردشة', - chatColorThemeDesc: 'تعيين سمة لون روبوت الدردشة', - chatColorThemeInverted: 'معكوس', - invalidHexMessage: 'قيمة hex غير صالحة', - invalidPrivacyPolicy: 'رابط سياسة الخصوصية غير صالح. يرجى استخدام رابط صالح يبدأ بـ http أو https', - sso: { - label: 'فرض SSO', - title: 'تطبيق ويب SSO', - description: 'يُطلب من جميع المستخدمين تسجيل الدخول باستخدام SSO قبل استخدام تطبيق الويب', - tooltip: 'اتصل بالمسؤول لتمكين تطبيق ويب SSO', - }, - more: { - entry: 'عرض المزيد من الإعدادات', - copyright: 'حقوق النشر', - copyrightTip: 'عرض معلومات حقوق النشر في تطبيق الويب', - copyrightTooltip: 'يرجى الترقية إلى الخطة الاحترافية أو أعلى', - copyRightPlaceholder: 'أدخل اسم المؤلف أو المنظمة', - privacyPolicy: 'سياسة الخصوصية', - privacyPolicyPlaceholder: 'أدخل رابط سياسة الخصوصية', - privacyPolicyTip: 'يساعد الزوار على فهم البيانات التي يجمعها التطبيق، راجع سياسة الخصوصية لـ Dify.', - customDisclaimer: 'إخلاء مسؤولية مخصص', - customDisclaimerPlaceholder: 'أدخل نص إخلاء المسؤولية المخصص', - customDisclaimerTip: 'سيتم عرض نص إخلاء المسؤولية المخصص على جانب العميل، مما يوفر معلومات إضافية حول التطبيق', - }, - }, - embedded: { - entry: 'مضمن', - title: 'تضمين في الموقع', - explanation: 'اختر طريقة لتضمين تطبيق الدردشة في موقعك', - iframe: 'لإضافة تطبيق الدردشة في أي مكان على موقعك، أضف هذا iframe إلى كود html الخاص بك.', - scripts: 'لإضافة تطبيق دردشة إلى أسفل يمين موقعك، أضف هذا الكود إلى html الخاص بك.', - chromePlugin: 'تثبيت ملحق Dify Chatbot Chrome', - 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: 'كتابة كود من جانب العميل لاستدعاء API ونشره على خادم', - operation: 'التوثيق', - }, - }, - }, - apiInfo: { - title: 'واجهة برمجة تطبيقات خدمة الخلفية', - explanation: 'سهلة الدمج في تطبيقك', - accessibleAddress: 'نقطة نهاية واجهة برمجة تطبيقات الخدمة', - doc: 'مرجع API', - }, - triggerInfo: { - title: 'المشغلات', - explanation: 'إدارة مشغلات سير العمل', - triggersAdded: 'تمت إضافة {{count}} مشغلات', - noTriggerAdded: 'لم تتم إضافة أي مشغل', - triggerStatusDescription: 'تظهر حالة عقدة المشغل هنا. (قد تكون موجودة بالفعل في المسودة، وتدخل حيز التنفيذ بعد النشر)', - learnAboutTriggers: 'تعرف على المشغلات', - }, - status: { - running: 'في الخدمة', - disable: 'تعطيل', - }, - disableTooltip: { - triggerMode: 'ميزة {{feature}} غير مدعومة في وضع عقدة المشغل.', - }, - }, - analysis: { - title: 'تحليل', - ms: 'مللي ثانية', - tokenPS: 'الرموز/ثانية', - totalMessages: { - title: 'إجمالي الرسائل', - explanation: 'عدد تفاعلات الذكاء الاصطناعي اليومية؛ يمنع هندسة/تصحيح المطالبة.', - }, - totalConversations: { - title: 'إجمالي المحادثات', - explanation: 'عدد المحادثات اليومية للذكاء الاصطناعي؛ باستثناء هندسة/تصحيح المطالبة.', - }, - activeUsers: { - title: 'المستخدمون النشطون', - explanation: 'المستخدمون الفريدون الذين يشاركون في Q&A مع المساعد؛ يستبعد هندسة/تصحيح المطالبة.', - }, - tokenUsage: { - title: 'استخدام الرموز', - explanation: 'يعكس استخدام الرموز اليومية لنموذج اللغة لتطبيق WebApp، مفيدًا للتحكم في التكلفة.', - consumed: 'المستهلكة', - }, - avgSessionInteractions: { - title: 'متوسط تفاعلات الجلسة', - explanation: 'عدد مفاتيح التواصل المستمر بين المستخدم والذكاء الاصطناعي؛ للمطبيقات القائمة على المحادثة.', - }, - avgUserInteractions: { - title: 'متوسط تفاعلات المستخدم', - explanation: 'يعكس تكرار الاستخدام اليومي للمستخدمين. يعكس هذا المقياس لزوجة المستخدم.', - }, - userSatisfactionRate: { - title: 'معدل رضا المستخدم', - explanation: 'عدد الإعجابات لكل 1000 رسالة. يشير هذا إلى النسبة التي يرضى فيها المستخدمون للغاية عن الإجابات.', - }, - avgResponseTime: { - title: 'متوسط وقت الاستجابة', - explanation: 'الوقت (مللي ثانية) حتى يقوم الذكاء الاصطناعي بالمعالجة/الاستجابة؛ للمطبيقات النصية (text-based).', - }, - tps: { - title: 'سرعة إخراج الرمز', - explanation: 'قياس أداء LLM. عد الرموز إخراج LLM من بداية الطلب إلى اكتمال الإخراج.', - }, - }, -} - -export default translation diff --git a/web/i18n/ar-TN/app.json b/web/i18n/ar-TN/app.json new file mode 100644 index 0000000000..2eb6105d74 --- /dev/null +++ b/web/i18n/ar-TN/app.json @@ -0,0 +1,345 @@ +{ + "createApp": "إنشاء تطبيق", + "types": { + "all": "الكل", + "chatbot": "روبوت دردشة", + "agent": "Agent", + "workflow": "سير العمل (Workflow)", + "completion": "إكمال", + "advanced": "Chatflow", + "basic": "أساسي" + }, + "duplicate": "نسخ", + "mermaid": { + "handDrawn": "رسم يدوي", + "classic": "كلاسيكي" + }, + "duplicateTitle": "نسخ التطبيق", + "export": "تصدير DSL", + "exportFailed": "فشل تصدير DSL.", + "importDSL": "استيراد ملف DSL", + "createFromConfigFile": "إنشاء من ملف DSL", + "importFromDSL": "استيراد من DSL", + "importFromDSLFile": "من ملف DSL", + "importFromDSLUrl": "من رابط", + "importFromDSLUrlPlaceholder": "لصق رابط DSL هنا", + "dslUploader": { + "button": "اسحب وأفلت الملف، أو", + "browse": "تصفح" + }, + "deleteAppConfirmTitle": "حذف هذا التطبيق؟", + "deleteAppConfirmContent": "حذف التطبيق لا رجعة فيه. لن يتمكن المستخدمون من الوصول إلى تطبيقك بعد الآن، وسيتم حذف جميع تكوينات المطالبة والسجلات بشكل دائم.", + "appDeleted": "تم حذف التطبيق", + "appDeleteFailed": "فشل حذف التطبيق", + "join": "انضم إلى المجتمع", + "communityIntro": "ناقش مع أعضاء الفريق والمساهمين والمطورين على قنوات مختلفة.", + "roadmap": "شاهد خريطة الطريق", + "newApp": { + "learnMore": "اعرف المزيد", + "startFromBlank": "إنشاء من البداية", + "startFromTemplate": "إنشاء من قالب", + "foundResult": "{{count}} نتيجة", + "foundResults": "{{count}} نتائج", + "noAppsFound": "لم يتم العثور على تطبيقات", + "noTemplateFound": "لم يتم العثور على قوالب", + "noTemplateFoundTip": "حاول البحث باستخدام كلمات مفتاحية مختلفة.", + "chatbotShortDescription": "روبوت دردشة قائم على LLM مع إعداد بسيط", + "chatbotUserDescription": "قم ببناء روبوت دردشة قائم على LLM بسرعة مع تكوين بسيط. يمكنك التبديل إلى Chatflow لاحقًا.", + "completionShortDescription": "مساعد AI لمهام توليد النصوص", + "completionUserDescription": "قم ببناء مساعد AI لمهام توليد النصوص بسرعة مع تكوين بسيط.", + "agentShortDescription": "وكيل ذكي مع الاستدلال واستخدام الأدوات المستقل", + "agentUserDescription": "وكيل ذكي قادر على الاستدلال التكراري واستخدام الأدوات بشكل مستقل لتحقيق أهداف المهمة.", + "workflowShortDescription": "تدفق وكيل للأتمتة الذكية", + "workflowUserDescription": "قم ببناء تدفقات عمل AI مستقلة بشكل مرئي مع بساطة السحب والإفلات.", + "workflowWarning": "حاليا في النسخة التجريبية (beta)", + "advancedShortDescription": "سير عمل محسن للمحادثات متعددة الأدوار", + "advancedUserDescription": "سير عمل مع ميزات ذاكرة إضافية وواجهة روبوت دردشة.", + "chooseAppType": "اختر نوع التطبيق", + "forBeginners": "أنواع تطبيقات أبسط", + "forAdvanced": "للمستخدمين المتقدمين", + "noIdeaTip": "لا توجد أفكار؟ تحقق من قوالبنا", + "captionName": "اسم التطبيق والأيقونة", + "appNamePlaceholder": "أعط اسمًا لتطبيقك", + "captionDescription": "الوصف", + "optional": "اختياري", + "appDescriptionPlaceholder": "أدخل وصف التطبيق", + "useTemplate": "استخدم هذا القالب", + "previewDemo": "معاينة العرض التوضيحي", + "chatApp": "مساعد", + "chatAppIntro": "أريد بناء تطبيق قائم على الدردشة. يستخدم هذا التطبيق تنسيق سؤال وجواب، مما يسمح بجولات متعددة من المحادثة المستمرة.", + "agentAssistant": "مساعد وكيل جديد", + "completeApp": "مولد نصوص", + "completeAppIntro": "أريد إنشاء تطبيق يولد نصوصًا عالية الجودة بناءً على المطالبات، مثل إنشاء المقالات والملخصات والترجمات والمزيد.", + "showTemplates": "أريد الاختيار من قالب", + "hideTemplates": "العودة إلى اختيار الوضع", + "Create": "إنشاء", + "Cancel": "إلغاء", + "Confirm": "تأكيد", + "import": "استيراد", + "nameNotEmpty": "لا يمكن أن يكون الاسم فارغًا", + "appTemplateNotSelected": "الرجاء تحديد قالب", + "appTypeRequired": "الرجاء تحديد نوع التطبيق", + "appCreated": "تم إنشاء التطبيق", + "caution": "تحذير", + "appCreateDSLWarning": "تحذير: قد يؤثر اختلاف إصدار DSL على ميزات معينة", + "appCreateDSLErrorTitle": "عدم توافق الإصدار", + "appCreateDSLErrorPart1": "تم اكتشاف اختلاف كبير في إصدارات DSL. قد يؤدي فرض الاستيراد إلى تعطل التطبيق.", + "appCreateDSLErrorPart2": "هل تريد المتابعة؟", + "appCreateDSLErrorPart3": "إصدار DSL للتطبيق الحالي: ", + "appCreateDSLErrorPart4": "إصدار DSL المدعوم من النظام: ", + "appCreateFailed": "فشل إنشاء التطبيق", + "dropDSLToCreateApp": "أفلت ملف DSL هنا لإنشاء تطبيق" + }, + "newAppFromTemplate": { + "byCategories": "حسب الفئات", + "searchAllTemplate": "بحث في كل القوالب...", + "sidebar": { + "Recommended": "موصى به", + "Agent": "Agent", + "Assistant": "مساعد", + "HR": "الموارد البشرية", + "Workflow": "سير العمل", + "Writing": "كتابة", + "Programming": "برمجة" + } + }, + "editApp": "تعديل المعلومات", + "editAppTitle": "تعديل معلومات التطبيق", + "editDone": "تم تحديث معلومات التطبيق", + "editFailed": "فشل تحديث معلومات التطبيق", + "iconPicker": { + "ok": "موافق", + "cancel": "إلغاء", + "emoji": "رموز تعبيرية", + "image": "صورة" + }, + "answerIcon": { + "title": "استخدم أيقونة تطبيق الويب لاستبدال 🤖", + "description": "ما إذا كان سيتم استخدام أيقونة تطبيق الويب لاستبدال 🤖 في التطبيق المشترك", + "descriptionInExplore": "ما إذا كان سيتم استخدام أيقونة تطبيق الويب لاستبدال 🤖 في الاستكشاف" + }, + "switch": "التبديل إلى Workflow Orchestrate", + "switchTipStart": "سيتم إنشاء نسخة تطبيق جديدة لك، وستنتقل النسخة الجديدة إلى Workflow Orchestrate. النسخة الجديدة ستكون ", + "switchTip": "غير مسموح", + "switchTipEnd": " بالعودة إلى Basic Orchestrate.", + "switchLabel": "نسخة التطبيق التي سيتم إنشاؤها", + "removeOriginal": "حذف التطبيق الأصلي", + "switchStart": "بدء التبديل", + "openInExplore": "فتح في الاستكشاف", + "typeSelector": { + "all": "كل الأنواع", + "chatbot": "روبوت دردشة", + "agent": "Agent", + "workflow": "سير العمل", + "completion": "إكمال", + "advanced": "Chatflow" + }, + "tracing": { + "title": "تتبع أداء التطبيق", + "description": "تكوين مزود LLMOps خارجي وتتبع أداء التطبيق.", + "config": "تكوين", + "view": "عرض", + "collapse": "طي", + "expand": "توسيع", + "tracing": "تتبع", + "disabled": "معطل", + "disabledTip": "الرجاء تكوين المزود أولاً", + "enabled": "في الخدمة", + "tracingDescription": "التقاط السياق الكامل لتنفيذ التطبيق، بما في ذلك مكالمات LLM، والسياق، والمطالبات، وطلبات HTTP، والمزيد، إلى منصة تتبع تابعة لجهة خارجية.", + "configProviderTitle": { + "configured": "تم التكوين", + "notConfigured": "تكوين المزود لتمكين التتبع", + "moreProvider": "مزيد من المزودين" + }, + "arize": { + "title": "Arize", + "description": "مراقبة LLM على مستوى المؤسسة، والتقييم عبر الإنترنت وغير المتصل بالإنترنت، والمراقبة، والتجريب - بدعم من OpenTelemetry. مصمم خصيصًا لتطبيقات LLM والتطبيقات التي تعتمد على الوكيل." + }, + "phoenix": { + "title": "Phoenix", + "description": "منصة مفتوحة المصدر تعتمد على OpenTelemetry للمراقبة والتقييم وهندسة المطالبات والتجريب لتدفقات عمل LLM والوكلاء." + }, + "langsmith": { + "title": "LangSmith", + "description": "منصة مطور شاملة لكل خطوة من خطوات دورة حياة التطبيق المدعوم بـ LLM." + }, + "langfuse": { + "title": "Langfuse", + "description": "مراقبة LLM مفتوحة المصدر وتقييمها وإدارة المطالبات والمقاييس لتصحيح وتحسين تطبيق LLM الخاص بك." + }, + "opik": { + "title": "Opik", + "description": "Opik هي منصة مفتوحة المصدر لتقييم واختبار ومراقبة تطبيقات LLM." + }, + "weave": { + "title": "Weave", + "description": "Weave هي منصة مفتوحة المصدر لتقييم واختبار ومراقبة تطبيقات LLM." + }, + "aliyun": { + "title": "Cloud Monitor", + "description": "منصة المراقبة المدارة بالكامل والتي لا تحتاج إلى صيانة والمقدمة من Alibaba Cloud، تتيح المراقبة الجاهزة والتتبع وتقييم تطبيقات Dify." + }, + "mlflow": { + "title": "MLflow", + "description": "MLflow هي منصة مفتوحة المصدر لإدارة التجارب وتقييم ومراقبة تطبيقات LLM." + }, + "databricks": { + "title": "Databricks", + "description": "توفر Databricks تدفق MLflow مدار بالكامل مع حوكمة وأمان قويين لتخزين بيانات التتبع." + }, + "tencent": { + "title": "Tencent APM", + "description": "تُوفر مراقبة أداء التطبيقات من Tencent تتبعًا شاملاً وتحليلاً متعدد الأبعاد لتطبيقات LLM." + }, + "inUse": "قيد الاستخدام", + "configProvider": { + "title": "تكوين ", + "placeholder": "أدخل {{key}} الخاص بك", + "project": "مشروع", + "trackingUri": "رابط التتبع", + "experimentId": "معرف التجربة", + "username": "اسم المستخدم", + "password": "كلمة المرور", + "publicKey": "المفتاح العام", + "secretKey": "المفتاح السري", + "viewDocsLink": "عرض وثائق {{key}}", + "removeConfirmTitle": "إزالة تكوين {{key}}؟", + "removeConfirmContent": "التكوين الحالي قيد الاستخدام، وستؤدي إزالته إلى إيقاف ميزة التتبع.", + "clientId": "معرف العميل (Client ID)", + "clientSecret": "سر العميل (Client Secret)", + "personalAccessToken": "رمز الوصول الشخصي (القديم)", + "databricksHost": "عنوان URL لمساحة عمل Databricks" + } + }, + "appSelector": { + "label": "تطبيق", + "placeholder": "اختر تطبيقًا...", + "params": "معلمات التطبيق", + "noParams": "لا توجد معلمات مطلوبة" + }, + "showMyCreatedAppsOnly": "تم إنشاؤه بواسطتي", + "structOutput": { + "moreFillTip": "يظهر 10 مستويات كحد أقصى من التداخل", + "required": "مطلوب", + "LLMResponse": "استجابة LLM", + "configure": "تكوين", + "notConfiguredTip": "لم يتم تكوين الإخراج الهيكلي بعد", + "structured": "هيكلي", + "structuredTip": "المخرجات الهيكلية هي ميزة تضمن أن يولد النموذج دائمًا استجابات تلتزم بـ JSON Schema الذي قدمته", + "modelNotSupported": "النموذج غير مدعوم", + "modelNotSupportedTip": "النموذج الحالي لا يدعم هذه الميزة ويتم تخفيضه تلقائيًا إلى حقن المطالبة." + }, + "accessControl": "التحكم في الوصول إلى تطبيق الويب", + "accessItemsDescription": { + "anyone": "يمكن لأي شخص الوصول إلى تطبيق الويب (لا يلزم تسجيل الدخول)", + "specific": "يمكن فقط لأعضاء محددين داخل المنصة الوصول إلى تطبيق الويب", + "organization": "يمكن لجميع الأعضاء داخل المنصة الوصول إلى تطبيق الويب", + "external": "يمكن فقط للمستخدمين الخارجيين authenticated الوصول إلى تطبيق الويب" + }, + "accessControlDialog": { + "title": "التحكم في الوصول إلى تطبيق الويب", + "description": "تعيين أذونات الوصول إلى تطبيق الويب", + "accessLabel": "من لديه حق الوصول", + "accessItems": { + "anyone": "أي شخص لديه الرابط", + "specific": "أعضاء محددون داخل المنصة", + "organization": "جميع الأعضاء داخل المنصة", + "external": "المستخدمون الخارجيون Authenticated" + }, + "groups_one": "{{count}} مجموعة", + "groups_other": "{{count}} مجموعات", + "members_one": "{{count}} عضو", + "members_other": "{{count}} أعضاء", + "noGroupsOrMembers": "لم يتم تحديد مجموعات أو أعضاء", + "webAppSSONotEnabledTip": "الرجاء الاتصال بمسؤول المؤسسة لتكوين المصادقة الخارجية لتطبيق الويب.", + "operateGroupAndMember": { + "searchPlaceholder": "بحث عن مجموعات وأعضاء", + "allMembers": "جميع الأعضاء", + "expand": "توسيع", + "noResult": "لا توجد نتائج" + }, + "updateSuccess": "تم التحديث بنجاح" + }, + "publishApp": { + "title": "من يمكنه الوصول إلى تطبيق الويب", + "notSet": "لم يتم تعيينه", + "notSetDesc": "حاليا لا يمكن لأحد الوصول إلى تطبيق الويب. الرجاء تعيين الأذونات." + }, + "noAccessPermission": "لا يوجد إذن للوصول إلى تطبيق الويب", + "noUserInputNode": "عقدة إدخال المستخدم مفقودة", + "notPublishedYet": "التطبيق لم ينشر بعد", + "maxActiveRequests": "أقصى عدد للطلبات المتزامنة", + "maxActiveRequestsPlaceholder": "أدخل 0 لغير محدود", + "maxActiveRequestsTip": "الحد الأقصى لعدد الطلبات النشطة المتزامنة لكل تطبيق (0 لغير محدود)", + "gotoAnything": { + "searchPlaceholder": "ابحث أو اكتب @ أو / للأوامر...", + "searchTitle": "ابحث عن أي شيء", + "searching": "جاري البحث...", + "noResults": "لم يتم العثور على نتائج", + "searchFailed": "فشل البحث", + "searchTemporarilyUnavailable": "البحث غير متاح مؤقتًا", + "servicesUnavailableMessage": "قد تواجه بعض خدمات البحث مشكلات. حاول مرة أخرى لاحقًا.", + "someServicesUnavailable": "بعض خدمات البحث غير متوفرة", + "resultCount": "{{count}} نتيجة", + "resultCount_other": "{{count}} نتائج", + "inScope": "في {{scope}}", + "clearToSearchAll": "امسح @ للبحث في الكل", + "useAtForSpecific": "استخدم @ لأنواع محددة", + "selectToNavigate": "اختر للانتقال", + "startTyping": "ابدأ الكتابة للبحث", + "tips": "اضغط ↑↓ للتنقل", + "pressEscToClose": "اضغط ESC للإغلاق", + "selectSearchType": "اختر ما تريد البحث عنه", + "searchHint": "ابدأ الكتابة للبحث عن كل شيء على الفور", + "commandHint": "اكتب @ للتصفح حسب الفئة", + "slashHint": "اكتب / لرؤية جميع الأوامر المتاحة", + "actions": { + "searchApplications": "بحث في التطبيقات", + "searchApplicationsDesc": "البحث والانتقال إلى تطبيقاتك", + "searchPlugins": "بحث في الإضافات", + "searchPluginsDesc": "البحث والانتقال إلى إضافاتك", + "searchKnowledgeBases": "بحث في قواعد المعرفة", + "searchKnowledgeBasesDesc": "البحث والانتقال إلى قواعد المعرفة الخاصة بك", + "searchWorkflowNodes": "بحث في عقد سير العمل", + "searchWorkflowNodesDesc": "البحث والانتقال إلى العقد في سير العمل الحالي بالاسم أو النوع", + "searchWorkflowNodesHelp": "هذه الميزة تعمل فقط عند عرض سير العمل. انتقل إلى سير العمل أولاً.", + "runTitle": "أوامر", + "runDesc": "تشغيل أوامر سريعة (السمة، اللغة، ...)", + "themeCategoryTitle": "السمة", + "themeCategoryDesc": "تبديل سمة التطبيق", + "themeSystem": "سمة النظام", + "themeSystemDesc": "اتبع مظهر نظام التشغيل", + "themeLight": "السمة الفاتحة", + "themeLightDesc": "استخدم المظهر الفاتح", + "themeDark": "السمة الداكنة", + "themeDarkDesc": "استخدم المظهر الداكن", + "languageCategoryTitle": "اللغة", + "languageCategoryDesc": "تبديل لغة الواجهة", + "languageChangeDesc": "تغيير لغة واجهة المستخدم", + "slashDesc": "تنفيذ الأوامر (اكتب / لرؤية جميع الأوامر المتاحة)", + "accountDesc": "الانتقال إلى صفحة الحساب", + "communityDesc": "فتح مجتمع Discord", + "docDesc": "فتح وثائق المساعدة", + "feedbackDesc": "فتح مناقشات ملاحظات المجتمع", + "zenTitle": "وضع Zen", + "zenDesc": "تبديل وضع التركيز على اللوحة" + }, + "emptyState": { + "noAppsFound": "لم يتم العثور على تطبيقات", + "noPluginsFound": "لم يتم العثور على إضافات", + "noKnowledgeBasesFound": "لم يتم العثور على قواعد معرفة", + "noWorkflowNodesFound": "لم يتم العثور على عقد سير عمل", + "tryDifferentTerm": "جرب مصطلح بحث مختلف", + "trySpecificSearch": "جرب {{shortcuts}} لعمليات بحث محددة" + }, + "groups": { + "apps": "تطبيقات", + "plugins": "إضافات", + "knowledgeBases": "قواعد المعرفة", + "workflowNodes": "عقد سير العمل", + "commands": "أوامر" + }, + "noMatchingCommands": "لم يتم العثور على أوامر مطابقة", + "tryDifferentSearch": "جرب مصطلح بحث مختلف" + } +} diff --git a/web/i18n/ar-TN/app.ts b/web/i18n/ar-TN/app.ts deleted file mode 100644 index ed79a6cae2..0000000000 --- a/web/i18n/ar-TN/app.ts +++ /dev/null @@ -1,351 +0,0 @@ -const translation = { - createApp: 'إنشاء تطبيق', - types: { - all: 'الكل', - chatbot: 'روبوت دردشة', - agent: 'Agent', - workflow: 'سير العمل (Workflow)', - completion: 'إكمال', - advanced: 'Chatflow', - basic: 'أساسي', - }, - duplicate: 'نسخ', - mermaid: { - handDrawn: 'رسم يدوي', - classic: 'كلاسيكي', - }, - duplicateTitle: 'نسخ التطبيق', - export: 'تصدير DSL', - exportFailed: 'فشل تصدير DSL.', - importDSL: 'استيراد ملف DSL', - createFromConfigFile: 'إنشاء من ملف DSL', - importFromDSL: 'استيراد من DSL', - importFromDSLFile: 'من ملف DSL', - importFromDSLUrl: 'من رابط', - importFromDSLUrlPlaceholder: 'لصق رابط DSL هنا', - dslUploader: { - button: 'اسحب وأفلت الملف، أو', - browse: 'تصفح', - }, - deleteAppConfirmTitle: 'حذف هذا التطبيق؟', - deleteAppConfirmContent: - 'حذف التطبيق لا رجعة فيه. لن يتمكن المستخدمون من الوصول إلى تطبيقك بعد الآن، وسيتم حذف جميع تكوينات المطالبة والسجلات بشكل دائم.', - appDeleted: 'تم حذف التطبيق', - appDeleteFailed: 'فشل حذف التطبيق', - join: 'انضم إلى المجتمع', - communityIntro: - 'ناقش مع أعضاء الفريق والمساهمين والمطورين على قنوات مختلفة.', - roadmap: 'شاهد خريطة الطريق', - newApp: { - learnMore: 'اعرف المزيد', - startFromBlank: 'إنشاء من البداية', - startFromTemplate: 'إنشاء من قالب', - foundResult: '{{count}} نتيجة', - foundResults: '{{count}} نتائج', - noAppsFound: 'لم يتم العثور على تطبيقات', - noTemplateFound: 'لم يتم العثور على قوالب', - noTemplateFoundTip: 'حاول البحث باستخدام كلمات مفتاحية مختلفة.', - chatbotShortDescription: 'روبوت دردشة قائم على LLM مع إعداد بسيط', - chatbotUserDescription: 'قم ببناء روبوت دردشة قائم على LLM بسرعة مع تكوين بسيط. يمكنك التبديل إلى Chatflow لاحقًا.', - completionShortDescription: 'مساعد AI لمهام توليد النصوص', - completionUserDescription: 'قم ببناء مساعد AI لمهام توليد النصوص بسرعة مع تكوين بسيط.', - agentShortDescription: 'وكيل ذكي مع الاستدلال واستخدام الأدوات المستقل', - agentUserDescription: 'وكيل ذكي قادر على الاستدلال التكراري واستخدام الأدوات بشكل مستقل لتحقيق أهداف المهمة.', - workflowShortDescription: 'تدفق وكيل للأتمتة الذكية', - workflowUserDescription: 'قم ببناء تدفقات عمل AI مستقلة بشكل مرئي مع بساطة السحب والإفلات.', - workflowWarning: 'حاليا في النسخة التجريبية (beta)', - advancedShortDescription: 'سير عمل محسن للمحادثات متعددة الأدوار', - advancedUserDescription: 'سير عمل مع ميزات ذاكرة إضافية وواجهة روبوت دردشة.', - chooseAppType: 'اختر نوع التطبيق', - forBeginners: 'أنواع تطبيقات أبسط', - forAdvanced: 'للمستخدمين المتقدمين', - noIdeaTip: 'لا توجد أفكار؟ تحقق من قوالبنا', - captionName: 'اسم التطبيق والأيقونة', - appNamePlaceholder: 'أعط اسمًا لتطبيقك', - captionDescription: 'الوصف', - optional: 'اختياري', - appDescriptionPlaceholder: 'أدخل وصف التطبيق', - useTemplate: 'استخدم هذا القالب', - previewDemo: 'معاينة العرض التوضيحي', - chatApp: 'مساعد', - chatAppIntro: - 'أريد بناء تطبيق قائم على الدردشة. يستخدم هذا التطبيق تنسيق سؤال وجواب، مما يسمح بجولات متعددة من المحادثة المستمرة.', - agentAssistant: 'مساعد وكيل جديد', - completeApp: 'مولد نصوص', - completeAppIntro: - 'أريد إنشاء تطبيق يولد نصوصًا عالية الجودة بناءً على المطالبات، مثل إنشاء المقالات والملخصات والترجمات والمزيد.', - showTemplates: 'أريد الاختيار من قالب', - hideTemplates: 'العودة إلى اختيار الوضع', - Create: 'إنشاء', - Cancel: 'إلغاء', - Confirm: 'تأكيد', - import: 'استيراد', - nameNotEmpty: 'لا يمكن أن يكون الاسم فارغًا', - appTemplateNotSelected: 'الرجاء تحديد قالب', - appTypeRequired: 'الرجاء تحديد نوع التطبيق', - appCreated: 'تم إنشاء التطبيق', - caution: 'تحذير', - appCreateDSLWarning: 'تحذير: قد يؤثر اختلاف إصدار DSL على ميزات معينة', - appCreateDSLErrorTitle: 'عدم توافق الإصدار', - appCreateDSLErrorPart1: 'تم اكتشاف اختلاف كبير في إصدارات DSL. قد يؤدي فرض الاستيراد إلى تعطل التطبيق.', - appCreateDSLErrorPart2: 'هل تريد المتابعة؟', - appCreateDSLErrorPart3: 'إصدار DSL للتطبيق الحالي: ', - appCreateDSLErrorPart4: 'إصدار DSL المدعوم من النظام: ', - appCreateFailed: 'فشل إنشاء التطبيق', - dropDSLToCreateApp: 'أفلت ملف DSL هنا لإنشاء تطبيق', - }, - newAppFromTemplate: { - byCategories: 'حسب الفئات', - searchAllTemplate: 'بحث في كل القوالب...', - sidebar: { - Recommended: 'موصى به', - Agent: 'Agent', - Assistant: 'مساعد', - HR: 'الموارد البشرية', - Workflow: 'سير العمل', - Writing: 'كتابة', - Programming: 'برمجة', - }, - }, - editApp: 'تعديل المعلومات', - editAppTitle: 'تعديل معلومات التطبيق', - editDone: 'تم تحديث معلومات التطبيق', - editFailed: 'فشل تحديث معلومات التطبيق', - iconPicker: { - ok: 'موافق', - cancel: 'إلغاء', - emoji: 'رموز تعبيرية', - image: 'صورة', - }, - answerIcon: { - title: 'استخدم أيقونة تطبيق الويب لاستبدال 🤖', - description: 'ما إذا كان سيتم استخدام أيقونة تطبيق الويب لاستبدال 🤖 في التطبيق المشترك', - descriptionInExplore: 'ما إذا كان سيتم استخدام أيقونة تطبيق الويب لاستبدال 🤖 في الاستكشاف', - }, - switch: 'التبديل إلى Workflow Orchestrate', - switchTipStart: 'سيتم إنشاء نسخة تطبيق جديدة لك، وستنتقل النسخة الجديدة إلى Workflow Orchestrate. النسخة الجديدة ستكون ', - switchTip: 'غير مسموح', - switchTipEnd: ' بالعودة إلى Basic Orchestrate.', - switchLabel: 'نسخة التطبيق التي سيتم إنشاؤها', - removeOriginal: 'حذف التطبيق الأصلي', - switchStart: 'بدء التبديل', - openInExplore: 'فتح في الاستكشاف', - typeSelector: { - all: 'كل الأنواع', - chatbot: 'روبوت دردشة', - agent: 'Agent', - workflow: 'سير العمل', - completion: 'إكمال', - advanced: 'Chatflow', - }, - tracing: { - title: 'تتبع أداء التطبيق', - description: 'تكوين مزود LLMOps خارجي وتتبع أداء التطبيق.', - config: 'تكوين', - view: 'عرض', - collapse: 'طي', - expand: 'توسيع', - tracing: 'تتبع', - disabled: 'معطل', - disabledTip: 'الرجاء تكوين المزود أولاً', - enabled: 'في الخدمة', - tracingDescription: 'التقاط السياق الكامل لتنفيذ التطبيق، بما في ذلك مكالمات LLM، والسياق، والمطالبات، وطلبات HTTP، والمزيد، إلى منصة تتبع تابعة لجهة خارجية.', - configProviderTitle: { - configured: 'تم التكوين', - notConfigured: 'تكوين المزود لتمكين التتبع', - moreProvider: 'مزيد من المزودين', - }, - arize: { - title: 'Arize', - description: 'مراقبة LLM على مستوى المؤسسة، والتقييم عبر الإنترنت وغير المتصل بالإنترنت، والمراقبة، والتجريب - بدعم من OpenTelemetry. مصمم خصيصًا لتطبيقات LLM والتطبيقات التي تعتمد على الوكيل.', - }, - phoenix: { - title: 'Phoenix', - description: 'منصة مفتوحة المصدر تعتمد على OpenTelemetry للمراقبة والتقييم وهندسة المطالبات والتجريب لتدفقات عمل LLM والوكلاء.', - }, - langsmith: { - title: 'LangSmith', - description: 'منصة مطور شاملة لكل خطوة من خطوات دورة حياة التطبيق المدعوم بـ LLM.', - }, - langfuse: { - title: 'Langfuse', - description: 'مراقبة LLM مفتوحة المصدر وتقييمها وإدارة المطالبات والمقاييس لتصحيح وتحسين تطبيق LLM الخاص بك.', - }, - opik: { - title: 'Opik', - description: 'Opik هي منصة مفتوحة المصدر لتقييم واختبار ومراقبة تطبيقات LLM.', - }, - weave: { - title: 'Weave', - description: 'Weave هي منصة مفتوحة المصدر لتقييم واختبار ومراقبة تطبيقات LLM.', - }, - aliyun: { - title: 'Cloud Monitor', - description: 'منصة المراقبة المدارة بالكامل والتي لا تحتاج إلى صيانة والمقدمة من Alibaba Cloud، تتيح المراقبة الجاهزة والتتبع وتقييم تطبيقات Dify.', - }, - mlflow: { - title: 'MLflow', - description: 'MLflow هي منصة مفتوحة المصدر لإدارة التجارب وتقييم ومراقبة تطبيقات LLM.', - }, - databricks: { - title: 'Databricks', - description: 'توفر Databricks تدفق MLflow مدار بالكامل مع حوكمة وأمان قويين لتخزين بيانات التتبع.', - }, - tencent: { - title: 'Tencent APM', - description: 'تُوفر مراقبة أداء التطبيقات من Tencent تتبعًا شاملاً وتحليلاً متعدد الأبعاد لتطبيقات LLM.', - }, - inUse: 'قيد الاستخدام', - configProvider: { - title: 'تكوين ', - placeholder: 'أدخل {{key}} الخاص بك', - project: 'مشروع', - trackingUri: 'رابط التتبع', - experimentId: 'معرف التجربة', - username: 'اسم المستخدم', - password: 'كلمة المرور', - publicKey: 'المفتاح العام', - secretKey: 'المفتاح السري', - viewDocsLink: 'عرض وثائق {{key}}', - removeConfirmTitle: 'إزالة تكوين {{key}}؟', - removeConfirmContent: 'التكوين الحالي قيد الاستخدام، وستؤدي إزالته إلى إيقاف ميزة التتبع.', - clientId: 'معرف العميل (Client ID)', - clientSecret: 'سر العميل (Client Secret)', - personalAccessToken: 'رمز الوصول الشخصي (القديم)', - databricksHost: 'عنوان URL لمساحة عمل Databricks', - }, - }, - appSelector: { - label: 'تطبيق', - placeholder: 'اختر تطبيقًا...', - params: 'معلمات التطبيق', - noParams: 'لا توجد معلمات مطلوبة', - }, - showMyCreatedAppsOnly: 'تم إنشاؤه بواسطتي', - structOutput: { - moreFillTip: 'يظهر 10 مستويات كحد أقصى من التداخل', - required: 'مطلوب', - LLMResponse: 'استجابة LLM', - configure: 'تكوين', - notConfiguredTip: 'لم يتم تكوين الإخراج الهيكلي بعد', - structured: 'هيكلي', - structuredTip: 'المخرجات الهيكلية هي ميزة تضمن أن يولد النموذج دائمًا استجابات تلتزم بـ JSON Schema الذي قدمته', - modelNotSupported: 'النموذج غير مدعوم', - modelNotSupportedTip: 'النموذج الحالي لا يدعم هذه الميزة ويتم تخفيضه تلقائيًا إلى حقن المطالبة.', - }, - accessControl: 'التحكم في الوصول إلى تطبيق الويب', - accessItemsDescription: { - anyone: 'يمكن لأي شخص الوصول إلى تطبيق الويب (لا يلزم تسجيل الدخول)', - specific: 'يمكن فقط لأعضاء محددين داخل المنصة الوصول إلى تطبيق الويب', - organization: 'يمكن لجميع الأعضاء داخل المنصة الوصول إلى تطبيق الويب', - external: 'يمكن فقط للمستخدمين الخارجيين authenticated الوصول إلى تطبيق الويب', - }, - accessControlDialog: { - title: 'التحكم في الوصول إلى تطبيق الويب', - description: 'تعيين أذونات الوصول إلى تطبيق الويب', - accessLabel: 'من لديه حق الوصول', - accessItems: { - anyone: 'أي شخص لديه الرابط', - specific: 'أعضاء محددون داخل المنصة', - organization: 'جميع الأعضاء داخل المنصة', - external: 'المستخدمون الخارجيون Authenticated', - }, - groups_one: '{{count}} مجموعة', - groups_other: '{{count}} مجموعات', - members_one: '{{count}} عضو', - members_other: '{{count}} أعضاء', - noGroupsOrMembers: 'لم يتم تحديد مجموعات أو أعضاء', - webAppSSONotEnabledTip: 'الرجاء الاتصال بمسؤول المؤسسة لتكوين المصادقة الخارجية لتطبيق الويب.', - operateGroupAndMember: { - searchPlaceholder: 'بحث عن مجموعات وأعضاء', - allMembers: 'جميع الأعضاء', - expand: 'توسيع', - noResult: 'لا توجد نتائج', - }, - updateSuccess: 'تم التحديث بنجاح', - }, - publishApp: { - title: 'من يمكنه الوصول إلى تطبيق الويب', - notSet: 'لم يتم تعيينه', - notSetDesc: 'حاليا لا يمكن لأحد الوصول إلى تطبيق الويب. الرجاء تعيين الأذونات.', - }, - noAccessPermission: 'لا يوجد إذن للوصول إلى تطبيق الويب', - noUserInputNode: 'عقدة إدخال المستخدم مفقودة', - notPublishedYet: 'التطبيق لم ينشر بعد', - maxActiveRequests: 'أقصى عدد للطلبات المتزامنة', - maxActiveRequestsPlaceholder: 'أدخل 0 لغير محدود', - maxActiveRequestsTip: 'الحد الأقصى لعدد الطلبات النشطة المتزامنة لكل تطبيق (0 لغير محدود)', - gotoAnything: { - searchPlaceholder: 'ابحث أو اكتب @ أو / للأوامر...', - searchTitle: 'ابحث عن أي شيء', - searching: 'جاري البحث...', - noResults: 'لم يتم العثور على نتائج', - searchFailed: 'فشل البحث', - searchTemporarilyUnavailable: 'البحث غير متاح مؤقتًا', - servicesUnavailableMessage: 'قد تواجه بعض خدمات البحث مشكلات. حاول مرة أخرى لاحقًا.', - someServicesUnavailable: 'بعض خدمات البحث غير متوفرة', - resultCount: '{{count}} نتيجة', - resultCount_other: '{{count}} نتائج', - inScope: 'في {{scope}}', - clearToSearchAll: 'امسح @ للبحث في الكل', - useAtForSpecific: 'استخدم @ لأنواع محددة', - selectToNavigate: 'اختر للانتقال', - startTyping: 'ابدأ الكتابة للبحث', - tips: 'اضغط ↑↓ للتنقل', - pressEscToClose: 'اضغط ESC للإغلاق', - selectSearchType: 'اختر ما تريد البحث عنه', - searchHint: 'ابدأ الكتابة للبحث عن كل شيء على الفور', - commandHint: 'اكتب @ للتصفح حسب الفئة', - slashHint: 'اكتب / لرؤية جميع الأوامر المتاحة', - actions: { - searchApplications: 'بحث في التطبيقات', - searchApplicationsDesc: 'البحث والانتقال إلى تطبيقاتك', - searchPlugins: 'بحث في الإضافات', - searchPluginsDesc: 'البحث والانتقال إلى إضافاتك', - searchKnowledgeBases: 'بحث في قواعد المعرفة', - searchKnowledgeBasesDesc: 'البحث والانتقال إلى قواعد المعرفة الخاصة بك', - searchWorkflowNodes: 'بحث في عقد سير العمل', - searchWorkflowNodesDesc: 'البحث والانتقال إلى العقد في سير العمل الحالي بالاسم أو النوع', - searchWorkflowNodesHelp: 'هذه الميزة تعمل فقط عند عرض سير العمل. انتقل إلى سير العمل أولاً.', - runTitle: 'أوامر', - runDesc: 'تشغيل أوامر سريعة (السمة، اللغة، ...)', - themeCategoryTitle: 'السمة', - themeCategoryDesc: 'تبديل سمة التطبيق', - themeSystem: 'سمة النظام', - themeSystemDesc: 'اتبع مظهر نظام التشغيل', - themeLight: 'السمة الفاتحة', - themeLightDesc: 'استخدم المظهر الفاتح', - themeDark: 'السمة الداكنة', - themeDarkDesc: 'استخدم المظهر الداكن', - languageCategoryTitle: 'اللغة', - languageCategoryDesc: 'تبديل لغة الواجهة', - languageChangeDesc: 'تغيير لغة واجهة المستخدم', - slashDesc: 'تنفيذ الأوامر (اكتب / لرؤية جميع الأوامر المتاحة)', - accountDesc: 'الانتقال إلى صفحة الحساب', - communityDesc: 'فتح مجتمع Discord', - docDesc: 'فتح وثائق المساعدة', - feedbackDesc: 'فتح مناقشات ملاحظات المجتمع', - zenTitle: 'وضع Zen', - zenDesc: 'تبديل وضع التركيز على اللوحة', - }, - emptyState: { - noAppsFound: 'لم يتم العثور على تطبيقات', - noPluginsFound: 'لم يتم العثور على إضافات', - noKnowledgeBasesFound: 'لم يتم العثور على قواعد معرفة', - noWorkflowNodesFound: 'لم يتم العثور على عقد سير عمل', - tryDifferentTerm: 'جرب مصطلح بحث مختلف', - trySpecificSearch: 'جرب {{shortcuts}} لعمليات بحث محددة', - }, - groups: { - apps: 'تطبيقات', - plugins: 'إضافات', - knowledgeBases: 'قواعد المعرفة', - workflowNodes: 'عقد سير العمل', - commands: 'أوامر', - }, - noMatchingCommands: 'لم يتم العثور على أوامر مطابقة', - tryDifferentSearch: 'جرب مصطلح بحث مختلف', - }, -} - -export default translation diff --git a/web/i18n/ar-TN/billing.json b/web/i18n/ar-TN/billing.json new file mode 100644 index 0000000000..02df5ff4ba --- /dev/null +++ b/web/i18n/ar-TN/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "الخطة الحالية", + "usagePage": { + "teamMembers": "أعضاء الفريق", + "buildApps": "بناء التطبيقات", + "annotationQuota": "حصة التعليقات التوضيحية", + "documentsUploadQuota": "حصة رفع المستندات", + "vectorSpace": "تخزين بيانات المعرفة", + "vectorSpaceTooltip": "ستستهلك المستندات ذات وضع الفهرسة عالي الجودة موارد تخزين بيانات المعرفة. عندما يصل تخزين بيانات المعرفة إلى الحد الأقصى، لن يتم تحميل مستندات جديدة.", + "triggerEvents": "أحداث المشغل", + "perMonth": "شهريًا", + "resetsIn": "يتم إعادة التعيين في {{count,number}} أيام" + }, + "teamMembers": "أعضاء الفريق", + "triggerLimitModal": { + "title": "ترقية لفتح المزيد من أحداث المشغل", + "description": "لقد وصلت إلى الحد الأقصى لمشغلات أحداث سير العمل لهذه الخطة.", + "dismiss": "تجاهل", + "upgrade": "ترقية", + "usageTitle": "أحداث المشغل" + }, + "upgradeBtn": { + "plain": "عرض الخطة", + "encourage": "الترقية الآن", + "encourageShort": "ترقية" + }, + "viewBilling": "إدارة الفواتير والاشتراكات", + "buyPermissionDeniedTip": "يرجى الاتصال بمسؤول المؤسسة للاشتراك", + "plansCommon": { + "title": { + "plans": "الخطط", + "description": "اختر الخطة التي تناسب احتياجات فريقك." + }, + "freeTrialTipPrefix": "سجل واحصل على ", + "freeTrialTip": "تجربة مجانية لـ 200 مكالمة OpenAI. ", + "freeTrialTipSuffix": "لا تتطلب بطاقة ائتمان", + "yearlyTip": "ادفع لمدة 10 أشهر، واستمتع بسنة كاملة!", + "mostPopular": "الأكثر شعبية", + "cloud": "خدمة سحابية", + "self": "مستضافة ذاتيًا", + "planRange": { + "monthly": "شهري", + "yearly": "سنوي" + }, + "month": "شهر", + "year": "سنة", + "save": "وفر ", + "free": "مجاني", + "annualBilling": "الفوترة السنوية توفر {{percent}}%", + "taxTip": "جميع أسعار الاشتراك (الشهرية / السنوية) لا تشمل الضرائب المطبقة (مثل ضريبة القيمة المضافة وضريبة المبيعات).", + "taxTipSecond": "إذا لم تكن في منطقتك متطلبات ضريبية، فلن تظهر أي ضريبة عند الدفع، ولن يتم تحصيل أي رسوم إضافية طوال فترة الاشتراك.", + "comparePlanAndFeatures": "قارن الخطط والميزات", + "priceTip": "لكل مساحة عمل/", + "currentPlan": "الخطة الحالية", + "contractSales": "اتصل بالمبيعات", + "contractOwner": "اتصل بمدير الفريق", + "startForFree": "ابدأ مجانًا", + "startBuilding": "ابدأ البناء", + "getStarted": "ابدأ الآن", + "contactSales": "اتصل بالمبيعات", + "talkToSales": "تحدث إلى المبيعات", + "modelProviders": "دعم OpenAI/Anthropic/Llama2/Azure OpenAI/Hugging Face/Replicate", + "teamWorkspace": "{{count,number}} مساحة عمل للفريق", + "teamMember_one": "{{count,number}} عضو في الفريق", + "teamMember_other": "{{count,number}} أعضاء في الفريق", + "annotationQuota": "حصة التعليقات التوضيحية", + "buildApps": "{{count,number}} تطبيقات", + "documents": "{{count,number}} مستندات معرفة", + "documentsTooltip": "الحصة لعدد المستندات المستوردة من مصدر بيانات المعرفة.", + "vectorSpace": "{{size}} تخزين بيانات المعرفة", + "vectorSpaceTooltip": "ستستهلك المستندات ذات وضع الفهرسة عالي الجودة موارد تخزين بيانات المعرفة. عندما يصل تخزين بيانات المعرفة إلى الحد الأقصى، لن يتم تحميل مستندات جديدة.", + "documentsRequestQuota": "{{count,number}} طلب معرفة/دقيقة", + "documentsRequestQuotaTooltip": "يحدد العدد الإجمالي للإجراءات التي يمكن لمساحة العمل تنفيذها كل دقيقة داخل قاعدة المعرفة، بما في ذلك إنشاء مجموعة البيانات، والحذف، والتحديثات، ورفع المستندات، والتعديلات، والأرشفة، واستعلامات قاعدة المعرفة. يتم استخدام هذا المقياس لتقييم أداء طلبات قاعدة المعرفة. على سبيل المثال، إذا أجرى مستخدم Sandbox 10 اختبارات hit متتالية في دقيقة واحدة، فسيتم تقييد مساحة العمل الخاصة به مؤقتًا من تنفيذ الإجراءات التالية للدقيقة التالية: إنشاء مجموعة البيانات، والحذف، والتحديثات، ورفع المستندات أو التعديلات. ", + "apiRateLimit": "حد معدل API", + "apiRateLimitUnit": "{{count,number}}", + "unlimitedApiRate": "لا يوجد حد لمعدل API لـ Dify", + "apiRateLimitTooltip": "ينطبق حد معدل API على جميع الطلبات التي يتم إجراؤها من خلال Dify API، بما في ذلك توليد النصوص، ومحادثات الدردشة، وتنفيذ سير العمل، ومعالجة المستندات.", + "documentProcessingPriority": " أولوية معالجة المستندات", + "documentProcessingPriorityTip": "لأولوية معالجة مستندات أعلى، يرجى ترقية خطتك.", + "documentProcessingPriorityUpgrade": "معالجة المزيد من البيانات بدقة أعلى وسرعة أكبر.", + "priority": { + "standard": "قياسي", + "priority": "أولوية", + "top-priority": "أولوية قصوى" + }, + "triggerEvents": { + "sandbox": "{{count,number}} أحداث مشغل", + "professional": "{{count,number}} أحداث مشغل/شهر", + "unlimited": "أحداث مشغل غير محدودة", + "tooltip": "عدد الأحداث التي تبدأ سير العمل تلقائيًا من خلال مشغلات الإضافات أو الجدول الزمني أو Webhook." + }, + "workflowExecution": { + "standard": "تنفيذ سير عمل قياسي", + "faster": "تنفيذ سير عمل أسرع", + "priority": "تنفيذ سير عمل ذو أولوية", + "tooltip": "أولوية وسرعة قائمة انتظار تنفيذ سير العمل." + }, + "startNodes": { + "limited": "ما يصل إلى {{count}} مشغلات/سير عمل", + "unlimited": "مشغلات غير محدودة/سير عمل" + }, + "logsHistory": "{{days}} تاريخ السجلات", + "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": "{{count,number}} أرصدة الرسائل", + "titlePerMonth": "{{count,number}} أرصدة رسائل/شهر", + "tooltip": "يتم توفير أرصدة الرسائل لمساعدتك على تجربة نماذج OpenAI المختلفة بسهولة في Dify. يتم استهلاك الأرصدة بناءً على نوع النموذج. بمجرد نفادها، يمكنك التبديل إلى مفتاح OpenAI API الخاص بك." + }, + "annotatedResponse": { + "title": "{{count,number}} حدود حصة التعليقات التوضيحية", + "tooltip": "يوفر التحرير اليدوي والتعليق على الردود قدرات إجابة على الأسئلة عالية الجودة وقابلة للتخصيص للتطبيقات. (ينطبق فقط في تطبيقات الدردشة)" + }, + "ragAPIRequestTooltip": "يشير إلى عدد مكالمات API التي تستدعي فقط قدرات معالجة قاعدة المعرفة في Dify.", + "receiptInfo": "يمكن لمالك الفريق ومشرف الفريق فقط الاشتراك وعرض معلومات الفوترة" + }, + "plans": { + "sandbox": { + "name": "Sandbox", + "for": "تجربة مجانية للقدرات الأساسية", + "description": "جرب الميزات الأساسية مجانًا." + }, + "professional": { + "name": "احترافي", + "for": "للمطورين المستقلين / الفرق الصغيرة", + "description": "للمطورين المستقلين والفرق الصغيرة المستعدة لبناء تطبيقات الذكاء الاصطناعي الإنتاجية." + }, + "team": { + "name": "فريق", + "for": "للفرق متوسطة الحجم", + "description": "للفرق متوسطة الحجم التي تتطلب التعاون وإنتاجية أعلى." + }, + "community": { + "name": "مجتمع", + "for": "للمستخدمين الأفراد، أو الفرق الصغيرة، أو المشاريع غير التجارية", + "description": "للمتحمسين للمصادر المفتوحة، والمطورين الأفراد، والمشاريع غير التجارية", + "price": "مجاني", + "btnText": "ابدأ الآن", + "includesTitle": "ميزات مجانية:", + "features": [ + "تم إصدار جميع الميزات الأساسية تحت المستودع العام", + "مساحة عمل واحدة", + "متوافق مع ترخيص ديفي المفتوح المصدر" + ] + }, + "premium": { + "name": "بريميوم", + "for": "للمؤسسات والفرق متوسطة الحجم", + "description": "للمؤسسات متوسطة الحجم التي تحتاج إلى مرونة في النشر ودعم معزز", + "price": "قابل للتطوير", + "priceTip": "استنادًا إلى سوق السحابة", + "btnText": "احصل على بريميوم على", + "includesTitle": "كل شيء من المجتمع، بالإضافة إلى:", + "comingSoon": "دعم Microsoft Azure و Google Cloud قريبا", + "features": [ + "الاعتمادية المدارة ذاتيًا من قبل مختلف مزودي السحابة", + "مساحة عمل واحدة", + "تخصيص شعار وهوية التطبيق الإلكتروني", + "دعم البريد الإلكتروني والمحادثة ذو الأولوية" + ] + }, + "enterprise": { + "name": "مؤسسة (Enterprise)", + "for": "للفرق كبيرة الحجم", + "description": "للمؤسسات التي تتطلب أمانًا وامتثالًا وقابلية للتوسع وتحكمًا وحلولًا مخصصة على مستوى المؤسسة", + "price": "مخصص", + "priceTip": "الفوترة السنوية فقط", + "btnText": "اتصل بالمبيعات", + "includesTitle": "كل شيء من بريميوم، بالإضافة إلى:", + "features": [ + "حلول نشر قابلة للتوسع على مستوى المؤسسات", + "تفويض الترخيص التجاري", + "ميزات حصرية للمؤسسات", + "مساحات عمل متعددة وإدارة المؤسسات", + "تسجيل الدخول الموحد", + "اتفاقيات مستوى الخدمة المتفاوض عليها من قبل شركاء ديفي", + "الأمان والتحكم المتقدم", + "التحديثات والصيانة بواسطة Dify رسميًا", + "الدعم الفني المهني" + ] + } + }, + "vectorSpace": { + "fullTip": "مساحة المتجه ممتلئة.", + "fullSolution": "قم بترقية خطتك للحصول على مساحة أكبر." + }, + "apps": { + "fullTip1": "ترقية لإنشاء المزيد من التطبيقات", + "fullTip1des": "لقد وصلت إلى الحد الأقصى لبناء التطبيقات في هذه الخطة", + "fullTip2": "تم الوصول إلى حد الخطة", + "fullTip2des": "يوصى بتنظيف التطبيقات غير النشطة لتحرير الاستخدام، أو الاتصال بنا.", + "contactUs": "اتصل بنا" + }, + "annotatedResponse": { + "fullTipLine1": "قم بترقية خطتك لـ", + "fullTipLine2": "التعليق على المزيد من المحادثات.", + "quotaTitle": "حصة رد التعليقات التوضيحية" + }, + "viewBillingTitle": "الفوترة والاشتراكات", + "viewBillingDescription": "إدارة طرق الدفع والفواتير وتغييرات الاشتراك", + "viewBillingAction": "يدير", + "upgrade": { + "uploadMultiplePages": { + "title": "قم بالترقية لتحميل عدة مستندات دفعة واحدة", + "description": "لقد وصلت إلى حد التحميل — يمكن اختيار ورفع مستند واحد فقط في كل مرة على الخطة الحالية الخاصة بك." + }, + "uploadMultipleFiles": { + "title": "قم بالترقية لفتح ميزة تحميل المستندات دفعة واحدة", + "description": "قم بتحميل المزيد من المستندات دفعة واحدة لتوفير الوقت وتحسين الكفاءة." + }, + "addChunks": { + "title": "قم بالترقية لمواصلة إضافة المقاطع", + "description": "لقد وصلت إلى الحد الأقصى لإضافة الأجزاء لهذا الخطة." + } + } +} diff --git a/web/i18n/ar-TN/billing.ts b/web/i18n/ar-TN/billing.ts deleted file mode 100644 index e18d98ebcd..0000000000 --- a/web/i18n/ar-TN/billing.ts +++ /dev/null @@ -1,221 +0,0 @@ -const translation = { - currentPlan: 'الخطة الحالية', - usagePage: { - teamMembers: 'أعضاء الفريق', - buildApps: 'بناء التطبيقات', - annotationQuota: 'حصة التعليقات التوضيحية', - documentsUploadQuota: 'حصة رفع المستندات', - vectorSpace: 'تخزين بيانات المعرفة', - vectorSpaceTooltip: 'ستستهلك المستندات ذات وضع الفهرسة عالي الجودة موارد تخزين بيانات المعرفة. عندما يصل تخزين بيانات المعرفة إلى الحد الأقصى، لن يتم تحميل مستندات جديدة.', - triggerEvents: 'أحداث المشغل', - perMonth: 'شهريًا', - resetsIn: 'يتم إعادة التعيين في {{count,number}} أيام', - }, - teamMembers: 'أعضاء الفريق', - triggerLimitModal: { - title: 'ترقية لفتح المزيد من أحداث المشغل', - description: 'لقد وصلت إلى الحد الأقصى لمشغلات أحداث سير العمل لهذه الخطة.', - dismiss: 'تجاهل', - upgrade: 'ترقية', - usageTitle: 'أحداث المشغل', - }, - upgradeBtn: { - plain: 'عرض الخطة', - encourage: 'الترقية الآن', - encourageShort: 'ترقية', - }, - viewBilling: 'إدارة الفواتير والاشتراكات', - buyPermissionDeniedTip: 'يرجى الاتصال بمسؤول المؤسسة للاشتراك', - plansCommon: { - title: { - plans: 'الخطط', - description: 'اختر الخطة التي تناسب احتياجات فريقك.', - }, - freeTrialTipPrefix: 'سجل واحصل على ', - freeTrialTip: 'تجربة مجانية لـ 200 مكالمة OpenAI. ', - freeTrialTipSuffix: 'لا تتطلب بطاقة ائتمان', - yearlyTip: 'ادفع لمدة 10 أشهر، واستمتع بسنة كاملة!', - mostPopular: 'الأكثر شعبية', - cloud: 'خدمة سحابية', - self: 'مستضافة ذاتيًا', - planRange: { - monthly: 'شهري', - yearly: 'سنوي', - }, - month: 'شهر', - year: 'سنة', - save: 'وفر ', - free: 'مجاني', - annualBilling: 'الفوترة السنوية توفر {{percent}}%', - taxTip: 'جميع أسعار الاشتراك (الشهرية / السنوية) لا تشمل الضرائب المطبقة (مثل ضريبة القيمة المضافة وضريبة المبيعات).', - taxTipSecond: 'إذا لم تكن في منطقتك متطلبات ضريبية، فلن تظهر أي ضريبة عند الدفع، ولن يتم تحصيل أي رسوم إضافية طوال فترة الاشتراك.', - comparePlanAndFeatures: 'قارن الخطط والميزات', - priceTip: 'لكل مساحة عمل/', - currentPlan: 'الخطة الحالية', - contractSales: 'اتصل بالمبيعات', - contractOwner: 'اتصل بمدير الفريق', - startForFree: 'ابدأ مجانًا', - startBuilding: 'ابدأ البناء', - getStarted: 'ابدأ الآن', - contactSales: 'اتصل بالمبيعات', - talkToSales: 'تحدث إلى المبيعات', - modelProviders: 'دعم OpenAI/Anthropic/Llama2/Azure OpenAI/Hugging Face/Replicate', - teamWorkspace: '{{count,number}} مساحة عمل للفريق', - teamMember_one: '{{count,number}} عضو في الفريق', - teamMember_other: '{{count,number}} أعضاء في الفريق', - annotationQuota: 'حصة التعليقات التوضيحية', - buildApps: '{{count,number}} تطبيقات', - documents: '{{count,number}} مستندات معرفة', - documentsTooltip: 'الحصة لعدد المستندات المستوردة من مصدر بيانات المعرفة.', - vectorSpace: '{{size}} تخزين بيانات المعرفة', - vectorSpaceTooltip: 'ستستهلك المستندات ذات وضع الفهرسة عالي الجودة موارد تخزين بيانات المعرفة. عندما يصل تخزين بيانات المعرفة إلى الحد الأقصى، لن يتم تحميل مستندات جديدة.', - documentsRequestQuota: '{{count,number}} طلب معرفة/دقيقة', - documentsRequestQuotaTooltip: 'يحدد العدد الإجمالي للإجراءات التي يمكن لمساحة العمل تنفيذها كل دقيقة داخل قاعدة المعرفة، بما في ذلك إنشاء مجموعة البيانات، والحذف، والتحديثات، ورفع المستندات، والتعديلات، والأرشفة، واستعلامات قاعدة المعرفة. يتم استخدام هذا المقياس لتقييم أداء طلبات قاعدة المعرفة. على سبيل المثال، إذا أجرى مستخدم Sandbox 10 اختبارات hit متتالية في دقيقة واحدة، فسيتم تقييد مساحة العمل الخاصة به مؤقتًا من تنفيذ الإجراءات التالية للدقيقة التالية: إنشاء مجموعة البيانات، والحذف، والتحديثات، ورفع المستندات أو التعديلات. ', - apiRateLimit: 'حد معدل API', - apiRateLimitUnit: '{{count,number}}', - unlimitedApiRate: 'لا يوجد حد لمعدل API لـ Dify', - apiRateLimitTooltip: 'ينطبق حد معدل API على جميع الطلبات التي يتم إجراؤها من خلال Dify API، بما في ذلك توليد النصوص، ومحادثات الدردشة، وتنفيذ سير العمل، ومعالجة المستندات.', - documentProcessingPriority: ' أولوية معالجة المستندات', - documentProcessingPriorityTip: 'لأولوية معالجة مستندات أعلى، يرجى ترقية خطتك.', - documentProcessingPriorityUpgrade: 'معالجة المزيد من البيانات بدقة أعلى وسرعة أكبر.', - priority: { - 'standard': 'قياسي', - 'priority': 'أولوية', - 'top-priority': 'أولوية قصوى', - }, - triggerEvents: { - sandbox: '{{count,number}} أحداث مشغل', - professional: '{{count,number}} أحداث مشغل/شهر', - unlimited: 'أحداث مشغل غير محدودة', - tooltip: 'عدد الأحداث التي تبدأ سير العمل تلقائيًا من خلال مشغلات الإضافات أو الجدول الزمني أو Webhook.', - }, - workflowExecution: { - standard: 'تنفيذ سير عمل قياسي', - faster: 'تنفيذ سير عمل أسرع', - priority: 'تنفيذ سير عمل ذو أولوية', - tooltip: 'أولوية وسرعة قائمة انتظار تنفيذ سير العمل.', - }, - startNodes: { - limited: 'ما يصل إلى {{count}} مشغلات/سير عمل', - unlimited: 'مشغلات غير محدودة/سير عمل', - }, - logsHistory: '{{days}} تاريخ السجلات', - 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: '{{count,number}} أرصدة الرسائل', - titlePerMonth: '{{count,number}} أرصدة رسائل/شهر', - tooltip: 'يتم توفير أرصدة الرسائل لمساعدتك على تجربة نماذج OpenAI المختلفة بسهولة في Dify. يتم استهلاك الأرصدة بناءً على نوع النموذج. بمجرد نفادها، يمكنك التبديل إلى مفتاح OpenAI API الخاص بك.', - }, - annotatedResponse: { - title: '{{count,number}} حدود حصة التعليقات التوضيحية', - tooltip: 'يوفر التحرير اليدوي والتعليق على الردود قدرات إجابة على الأسئلة عالية الجودة وقابلة للتخصيص للتطبيقات. (ينطبق فقط في تطبيقات الدردشة)', - }, - ragAPIRequestTooltip: 'يشير إلى عدد مكالمات API التي تستدعي فقط قدرات معالجة قاعدة المعرفة في Dify.', - receiptInfo: 'يمكن لمالك الفريق ومشرف الفريق فقط الاشتراك وعرض معلومات الفوترة', - }, - plans: { - sandbox: { - name: 'Sandbox', - for: 'تجربة مجانية للقدرات الأساسية', - description: 'جرب الميزات الأساسية مجانًا.', - }, - professional: { - name: 'احترافي', - for: 'للمطورين المستقلين / الفرق الصغيرة', - description: 'للمطورين المستقلين والفرق الصغيرة المستعدة لبناء تطبيقات الذكاء الاصطناعي الإنتاجية.', - }, - team: { - name: 'فريق', - for: 'للفرق متوسطة الحجم', - description: 'للفرق متوسطة الحجم التي تتطلب التعاون وإنتاجية أعلى.', - }, - community: { - name: 'مجتمع', - for: 'للمستخدمين الأفراد، أو الفرق الصغيرة، أو المشاريع غير التجارية', - description: 'للمتحمسين للمصادر المفتوحة، والمطورين الأفراد، والمشاريع غير التجارية', - price: 'مجاني', - btnText: 'ابدأ الآن', - includesTitle: 'ميزات مجانية:', - features: ['تم إصدار جميع الميزات الأساسية تحت المستودع العام', 'مساحة عمل واحدة', 'متوافق مع ترخيص ديفي المفتوح المصدر'], - }, - premium: { - name: 'بريميوم', - for: 'للمؤسسات والفرق متوسطة الحجم', - description: 'للمؤسسات متوسطة الحجم التي تحتاج إلى مرونة في النشر ودعم معزز', - price: 'قابل للتطوير', - priceTip: 'استنادًا إلى سوق السحابة', - btnText: 'احصل على بريميوم على', - includesTitle: 'كل شيء من المجتمع، بالإضافة إلى:', - comingSoon: 'دعم Microsoft Azure و Google Cloud قريبا', - features: ['الاعتمادية المدارة ذاتيًا من قبل مختلف مزودي السحابة', 'مساحة عمل واحدة', 'تخصيص شعار وهوية التطبيق الإلكتروني', 'دعم البريد الإلكتروني والمحادثة ذو الأولوية'], - }, - enterprise: { - name: 'مؤسسة (Enterprise)', - for: 'للفرق كبيرة الحجم', - description: 'للمؤسسات التي تتطلب أمانًا وامتثالًا وقابلية للتوسع وتحكمًا وحلولًا مخصصة على مستوى المؤسسة', - price: 'مخصص', - priceTip: 'الفوترة السنوية فقط', - btnText: 'اتصل بالمبيعات', - includesTitle: 'كل شيء من بريميوم، بالإضافة إلى:', - features: ['حلول نشر قابلة للتوسع على مستوى المؤسسات', 'تفويض الترخيص التجاري', 'ميزات حصرية للمؤسسات', 'مساحات عمل متعددة وإدارة المؤسسات', 'تسجيل الدخول الموحد', 'اتفاقيات مستوى الخدمة المتفاوض عليها من قبل شركاء ديفي', 'الأمان والتحكم المتقدم', 'التحديثات والصيانة بواسطة Dify رسميًا', 'الدعم الفني المهني'], - }, - }, - vectorSpace: { - fullTip: 'مساحة المتجه ممتلئة.', - fullSolution: 'قم بترقية خطتك للحصول على مساحة أكبر.', - }, - apps: { - fullTip1: 'ترقية لإنشاء المزيد من التطبيقات', - fullTip1des: 'لقد وصلت إلى الحد الأقصى لبناء التطبيقات في هذه الخطة', - fullTip2: 'تم الوصول إلى حد الخطة', - fullTip2des: 'يوصى بتنظيف التطبيقات غير النشطة لتحرير الاستخدام، أو الاتصال بنا.', - contactUs: 'اتصل بنا', - }, - annotatedResponse: { - fullTipLine1: 'قم بترقية خطتك لـ', - fullTipLine2: 'التعليق على المزيد من المحادثات.', - quotaTitle: 'حصة رد التعليقات التوضيحية', - }, - viewBillingTitle: 'الفوترة والاشتراكات', - viewBillingDescription: 'إدارة طرق الدفع والفواتير وتغييرات الاشتراك', - viewBillingAction: 'يدير', - upgrade: { - uploadMultiplePages: { - title: 'قم بالترقية لتحميل عدة مستندات دفعة واحدة', - description: 'لقد وصلت إلى حد التحميل — يمكن اختيار ورفع مستند واحد فقط في كل مرة على الخطة الحالية الخاصة بك.', - }, - uploadMultipleFiles: { - title: 'قم بالترقية لفتح ميزة تحميل المستندات دفعة واحدة', - description: 'قم بتحميل المزيد من المستندات دفعة واحدة لتوفير الوقت وتحسين الكفاءة.', - }, - addChunks: { - title: 'قم بالترقية لمواصلة إضافة المقاطع', - description: 'لقد وصلت إلى الحد الأقصى لإضافة الأجزاء لهذا الخطة.', - }, - }, -} - -export default translation diff --git a/web/i18n/ar-TN/common.json b/web/i18n/ar-TN/common.json new file mode 100644 index 0000000000..d573c7394d --- /dev/null +++ b/web/i18n/ar-TN/common.json @@ -0,0 +1,785 @@ +{ + "theme": { + "theme": "السمة", + "light": "فاتح", + "dark": "داكن", + "auto": "النظام" + }, + "api": { + "success": "نجاح", + "actionSuccess": "نجح الإجراء", + "saved": "تم الحفظ", + "create": "تم الإنشاء", + "remove": "تمت الإزالة", + "actionFailed": "فشل الإجراء" + }, + "operation": { + "create": "إنشاء", + "confirm": "تأكيد", + "cancel": "إلغاء", + "clear": "مسح", + "save": "حفظ", + "yes": "نعم", + "no": "لا", + "deleteConfirmTitle": "حذف؟", + "confirmAction": "يرجى تأكيد الإجراء الخاص بك.", + "saveAndEnable": "حفظ وتمكين", + "edit": "تعديل", + "add": "إضافة", + "added": "تمت الإضافة", + "refresh": "إعادة تشغيل", + "reset": "إعادة تعيين", + "search": "بحث", + "noSearchResults": "لم يتم العثور على {{content}}", + "resetKeywords": "إعادة تعيين الكلمات الرئيسية", + "selectCount": "تم تحديد {{count}}", + "searchCount": "ابحث عن {{count}} {{content}}", + "noSearchCount": "0 {{content}}", + "change": "تغيير", + "remove": "إزالة", + "send": "إرسال", + "copy": "نسخ", + "copied": "تم النسخ", + "lineBreak": "فاصل أسطر", + "sure": "أنا متأكد", + "download": "تنزيل", + "downloadSuccess": "اكتمل التنزيل.", + "downloadFailed": "فشل التنزيل. يرجى المحاولة مرة أخرى لاحقًا.", + "viewDetails": "عرض التفاصيل", + "delete": "حذف", + "now": "الآن", + "deleteApp": "حذف التطبيق", + "settings": "الإعدادات", + "setup": "إعداد", + "config": "تكوين", + "getForFree": "احصل عليه مجانا", + "reload": "إعادة تحميل", + "ok": "موافق", + "log": "سجل", + "learnMore": "تعرف على المزيد", + "params": "معلمات", + "duplicate": "تكرار", + "rename": "إعادة تسمية", + "audioSourceUnavailable": "مصدر الصوت غير متاح", + "close": "إغلاق", + "copyImage": "نسخ الصورة", + "imageCopied": "تم نسخ الصورة", + "zoomOut": "تصغير", + "zoomIn": "تكبير", + "openInNewTab": "فتح في علامة تبويب جديدة", + "in": "في", + "saveAndRegenerate": "حفظ وإعادة إنشاء القطع الفرعية", + "view": "عرض", + "viewMore": "عرض المزيد", + "regenerate": "إعادة إنشاء", + "submit": "إرسال", + "skip": "تخطي", + "format": "تنسيق", + "more": "المزيد", + "selectAll": "تحديد الكل", + "deSelectAll": "إلغاء تحديد الكل" + }, + "errorMsg": { + "fieldRequired": "{{field}} مطلوب", + "urlError": "يجب أن يبدأ العنوان بـ http:// أو https://" + }, + "placeholder": { + "input": "يرجى الإدخال", + "select": "يرجى التحديد", + "search": "بحث..." + }, + "noData": "لا توجد بيانات", + "label": { + "optional": "(اختياري)" + }, + "voice": { + "language": { + "zhHans": "الصينية", + "zhHant": "الصينية التقليدية", + "enUS": "الإنجليزية", + "deDE": "الألمانية", + "frFR": "الفرنسية", + "esES": "الإسبانية", + "itIT": "الإيطالية", + "thTH": "التايلاندية", + "idID": "الإندونيسية", + "jaJP": "اليابانية", + "koKR": "الكورية", + "ptBR": "البرتغالية", + "ruRU": "الروسية", + "ukUA": "الأوكرانية", + "viVN": "الفيتنامية", + "plPL": "البولندية", + "roRO": "الرومانية", + "hiIN": "الهندية", + "trTR": "التركية", + "faIR": "الفارسية", + "slSI": "السلوفينية", + "arTN": "العربية التونسية" + } + }, + "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": "يتم تحديث الحد الأقصى للرموز إلى 80٪ من الحد الأقصى لرموز النموذج الحالي {{maxToken}}.", + "stop_sequences": "تسلسلات التوقف", + "stop_sequencesTip": "ما يصل إلى أربعة تسلسلات حيث ستتوقف API عن توليد المزيد من الرموز. لن يحتوي النص المرتجع على تسلسل التوقف.", + "stop_sequencesPlaceholder": "أدخل التسلسل واضغط على Tab" + }, + "tone": { + "Creative": "إبداعي", + "Balanced": "متوازن", + "Precise": "دقيق", + "Custom": "مخصص" + }, + "addMoreModel": "انتقل إلى الإعدادات لإضافة المزيد من النماذج", + "settingsLink": "إعدادات مزود النموذج", + "capabilities": "قدرات متعددة الوسائط" + }, + "menus": { + "status": "بيتا", + "explore": "استكشاف", + "apps": "الاستوديو", + "appDetail": "تفاصيل التطبيق", + "account": "الحساب", + "plugins": "الإضافات", + "exploreMarketplace": "استكشاف السوق", + "pluginsTips": "ادمج الإضافات الخارجية أو أنشئ إضافات AI متوافقة مع ChatGPT.", + "datasets": "المعرفة", + "datasetsTips": "قريباً: استيراد بيانات النص الخاصة بك أو كتابة البيانات في الوقت الفعلي عبر Webhook لتحسين سياق LLM.", + "newApp": "تطبيق جديد", + "newDataset": "إنشاء معرفة", + "tools": "الأدوات" + }, + "userProfile": { + "settings": "الإعدادات", + "contactUs": "اتصل بنا", + "emailSupport": "دعم البريد الإلكتروني", + "workspace": "مساحة العمل", + "createWorkspace": "إنشاء مساحة عمل", + "helpCenter": "عرض المستندات", + "support": "دعم", + "compliance": "الامتثال", + "forum": "المنتدى", + "roadmap": "خارطة الطريق", + "github": "GitHub", + "community": "المجتمع", + "about": "حول", + "logout": "تسجيل الخروج" + }, + "compliance": { + "soc2Type1": "تقرير SOC 2 النوع الأول", + "soc2Type2": "تقرير SOC 2 النوع الثاني", + "iso27001": "شهادة ISO 27001:2022", + "gdpr": "GDPR DPA", + "sandboxUpgradeTooltip": "متاح فقط مع خطة المحترفين أو الفريق.", + "professionalUpgradeTooltip": "متاح فقط مع خطة الفريق أو أعلى." + }, + "settings": { + "accountGroup": "عام", + "workplaceGroup": "مساحة العمل", + "generalGroup": "عام", + "account": "حسابي", + "members": "الأعضاء", + "billing": "الفوترة", + "integrations": "التكاملات", + "language": "اللغة", + "provider": "مزود النموذج", + "dataSource": "مصدر البيانات", + "plugin": "الإضافات", + "apiBasedExtension": "ملحق API" + }, + "account": { + "account": "الحساب", + "myAccount": "حسابي", + "studio": "الاستوديو", + "avatar": "الصورة الرمزية", + "name": "الاسم", + "email": "البريد الإلكتروني", + "password": "كلمة المرور", + "passwordTip": "يمكنك تعيين كلمة مرور دائمية إذا كنت لا ترغب في استخدام رموز تسجيل الدخول المؤقتة", + "setPassword": "تعيين كلمة مرور", + "resetPassword": "إعادة تعيين كلمة المرور", + "currentPassword": "كلمة المرور الحالية", + "newPassword": "كلمة مرور جديدة", + "confirmPassword": "تأكيد كلمة المرور", + "notEqual": "كلمتا المرور مختلفتان.", + "langGeniusAccount": "بيانات الحساب", + "langGeniusAccountTip": "بيانات المستخدم الخاصة بحسابك.", + "editName": "تعديل الاسم", + "showAppLength": "عرض {{length}} تطبيقات", + "delete": "حذف الحساب", + "deleteTip": "يرجى ملاحظة أنه بمجرد التأكيد، بصفتك مالكًا لأي مساحات عمل، سيتم جدولة مساحات العمل الخاصة بك في قائمة انتظار للحذف الدائم، وسيتم جدولة جميع بيانات المستخدم الخاصة بك للحذف الدائم.", + "deletePrivacyLinkTip": "لمزيد من المعلومات حول كيفية تعاملنا مع بياناتك، يرجى الاطلاع على ", + "deletePrivacyLink": "سياسة الخصوصية.", + "deleteSuccessTip": "يحتاج حسابك إلى وقت للانتهاء من الحذف. سنرسل إليك بريدًا إلكترونيًا عندما ينتهي كل شيء.", + "deleteLabel": "للتأكيد، يرجى كتابة بريدك الإلكتروني أدناه", + "deletePlaceholder": "يرجى إدخال بريدك الإلكتروني", + "sendVerificationButton": "إرسال رمز التحقق", + "verificationLabel": "رمز التحقق", + "verificationPlaceholder": "الصق الرمز المكون من 6 أرقام", + "permanentlyDeleteButton": "حذف الحساب نهائيًا", + "feedbackTitle": "تعليق", + "feedbackLabel": "أخبرنا لماذا حذفت حسابك؟", + "feedbackPlaceholder": "اختياري", + "editWorkspaceInfo": "تعديل معلومات مساحة العمل", + "workspaceName": "اسم مساحة العمل", + "workspaceIcon": "رمز مساحة العمل", + "changeEmail": { + "title": "تغيير البريد الإلكتروني", + "verifyEmail": "تحقق من بريدك الإلكتروني الحالي", + "newEmail": "إعداد عنوان بريد إلكتروني جديد", + "verifyNew": "تحقق من بريدك الإلكتروني الجديد", + "authTip": "بمجرد تغيير بريدك الإلكتروني، لن تتمكن حسابات Google أو GitHub المرتبطة ببريدك الإلكتروني القديم من تسجيل الدخول إلى هذا الحساب.", + "content1": "إذا تابعت، فسنرسل رمز تحقق إلى {{email}} لإعادة المصادقة.", + "content2": "بريدك الإلكتروني الحالي هو {{email}}. تم إرسال رمز التحقق إلى عنوان البريد الإلكتروني هذا.", + "content3": "أدخل بريدًا إلكترونيًا جديدًا وسنرسل لك رمز التحقق.", + "content4": "لقد أرسلنا لك للتو رمز تحقق مؤقت إلى {{email}}.", + "codeLabel": "رمز التحقق", + "codePlaceholder": "الصق الرمز المكون من 6 أرقام", + "emailLabel": "بريد إلكتروني جديد", + "emailPlaceholder": "أدخل بريدًا إلكترونيًا جديدًا", + "existingEmail": "مستخدم بهذا البريد الإلكتروني موجود بالفعل.", + "unAvailableEmail": "هذا البريد الإلكتروني غير متاح مؤقتًا.", + "sendVerifyCode": "إرسال رمز التحقق", + "continue": "متابعة", + "changeTo": "تغيير إلى {{email}}", + "resendTip": "لم تتلق رمزًا؟", + "resendCount": "إعادة إرسال في {{count}} ثانية", + "resend": "إعادة إرسال" + } + }, + "members": { + "team": "الفريق", + "invite": "إضافة", + "name": "الاسم", + "lastActive": "آخر نشاط", + "role": "الأدوار", + "pending": "قيد الانتظار...", + "owner": "المالك", + "admin": "المسؤول", + "adminTip": "يمكنه بناء التطبيقات وإدارة إعدادات الفريق", + "normal": "عادي", + "normalTip": "يمكنه استخدام التطبيقات فقط، ولا يمكنه بناء التطبيقات", + "builder": "باني", + "builderTip": "يمكنه بناء وتعديل تطبيقاته الخاصة", + "editor": "محرر", + "editorTip": "يمكنه بناء وتعديل التطبيقات", + "datasetOperator": "مسؤول المعرفة", + "datasetOperatorTip": "يمكنه إدارة قاعدة المعرفة فقط", + "inviteTeamMember": "إضافة عضو فريق", + "inviteTeamMemberTip": "يمكنهم الوصول إلى بيانات فريقك مباشرة بعد تسجيل الدخول.", + "emailNotSetup": "لم يتم إعداد خادم البريد الإلكتروني، لذا لا يمكن إرسال رسائل بريد إلكتروني للدعوة. يرجى إخطار المستخدمين برابط الدعوة الذي سيتم إصداره بعد الدعوة بدلاً من ذلك.", + "email": "البريد الإلكتروني", + "emailInvalid": "تنسيق البريد الإلكتروني غير صالح", + "emailPlaceholder": "يرجى إدخال رسائل البريد الإلكتروني", + "sendInvite": "إرسال دعوة", + "invitedAsRole": "تمت الدعوة كمستخدم {{role}}", + "invitationSent": "تم إرسال الدعوة", + "invitationSentTip": "تم إرسال الدعوة، ويمكنهم تسجيل الدخول إلى Dify للوصول إلى بيانات فريقك.", + "invitationLink": "رابط الدعوة", + "failedInvitationEmails": "لم تتم دعوة المستخدمين أدناه بنجاح", + "ok": "موافق", + "removeFromTeam": "إزالة من الفريق", + "removeFromTeamTip": "سيتم إزالة وصول الفريق", + "setAdmin": "تعيين كمسؤول", + "setMember": "تعيين كعضو عادي", + "setBuilder": "تعيين كباني", + "setEditor": "تعيين كمحرر", + "disInvite": "إلغاء الدعوة", + "deleteMember": "حذف العضو", + "you": "(أنت)", + "transferOwnership": "نقل الملكية", + "transferModal": { + "title": "نقل ملكية مساحة العمل", + "warning": "أنت على وشك نقل ملكية \"{{workspace}}\". يسري هذا المفعول فورًا ولا يمكن التراجع عنه.", + "warningTip": "ستصبح عضوًا مسؤولاً، وسيتمتع المالك الجديد بالتحكم الكامل.", + "sendTip": "إذا تابعت، فسنرسل رمز تحقق إلى {{email}} لإعادة المصادقة.", + "verifyEmail": "تحقق من بريدك الإلكتروني الحالي", + "verifyContent": "بريدك الإلكتروني الحالي هو {{email}}.", + "verifyContent2": "سنرسل رمز تحقق مؤقت إلى هذا البريد الإلكتروني لإعادة المصادقة.", + "codeLabel": "رمز التحقق", + "codePlaceholder": "الصق الرمز المكون من 6 أرقام", + "resendTip": "لم تتلق رمزًا؟", + "resendCount": "إعادة إرسال في {{count}} ثانية", + "resend": "إعادة إرسال", + "transferLabel": "نقل ملكية مساحة العمل إلى", + "transferPlaceholder": "حدد عضو مساحة عمل...", + "sendVerifyCode": "إرسال رمز التحقق", + "continue": "متابعة", + "transfer": "نقل ملكية مساحة العمل" + } + }, + "feedback": { + "title": "تقديم تعليق", + "subtitle": "من فضلك أخبرنا ما الخطأ في هذه الاستجابة", + "content": "محتوى التعليق", + "placeholder": "يرجى وصف ما حدث خطأ أو كيف يمكننا التحسين..." + }, + "integrations": { + "connected": "متصل", + "google": "Google", + "googleAccount": "تسجيل الدخول بحساب Google", + "github": "GitHub", + "githubAccount": "تسجيل الدخول بحساب GitHub", + "connect": "اتصال" + }, + "language": { + "displayLanguage": "لغة العرض", + "timezone": "المنطقة الزمنية" + }, + "provider": { + "apiKey": "مفتاح API", + "enterYourKey": "أدخل مفتاح API الخاص بك هنا", + "invalidKey": "مفتاح OpenAI API غير صالح", + "validatedError": "فشل التحقق: ", + "validating": "جارٍ التحقق من المفتاح...", + "saveFailed": "فشل حفظ مفتاح api", + "apiKeyExceedBill": "لا يحتوي مفتاح API هذا على حصة متاحة، يرجى القراءة", + "addKey": "إضافة مفتاح", + "comingSoon": "قريباً", + "editKey": "تعديل", + "invalidApiKey": "مفتاح API غير صالح", + "azure": { + "apiBase": "قاعدة API", + "apiBasePlaceholder": "عنوان URL لقاعدة API لنقطة نهاية Azure OpenAI الخاصة بك.", + "apiKey": "مفتاح API", + "apiKeyPlaceholder": "أدخل مفتاح API الخاص بك هنا", + "helpTip": "تعلم خدمة Azure OpenAI" + }, + "openaiHosted": { + "openaiHosted": "OpenAI المستضافة", + "onTrial": "في التجربة", + "exhausted": "نفدت الحصة", + "desc": "تسمح لك خدمة استضافة OpenAI المقدمة من Dify باستخدام نماذج مثل GPT-3.5. قبل نفاد حصة التجربة الخاصة بك، تحتاج إلى إعداد موفري نماذج آخرين.", + "callTimes": "أوقات الاتصال", + "usedUp": "نفدت حصة التجربة. أضف مزود النموذج الخاص بك.", + "useYourModel": "تستخدم حاليًا مزود النموذج الخاص بك.", + "close": "إغلاق" + }, + "anthropicHosted": { + "anthropicHosted": "Anthropic Claude", + "onTrial": "في التجربة", + "exhausted": "نفدت الحصة", + "desc": "نموذج قوي يتفوق في مجموعة واسعة من المهام من الحوار المعقد وإنشاء المحتوى الإبداعي إلى التعليمات التفصيلية.", + "callTimes": "أوقات الاتصال", + "usedUp": "نفدت حصة التجربة. أضف مزود النموذج الخاص بك.", + "useYourModel": "تستخدم حاليًا مزود النموذج الخاص بك.", + "close": "إغلاق", + "trialQuotaTip": "ستنتهي حصة التجربة الخاصة بك في Anthropic في 2025/03/17 ولن تكون متاحة بعد ذلك. يرجى الاستفادة منها في الوقت المحدد." + }, + "anthropic": { + "using": "قدرة التضمين تستخدم", + "enableTip": "لتمكين نموذج Anthropic، تحتاج إلى الارتباط بـ OpenAI أو خدمة Azure OpenAI أولاً.", + "notEnabled": "غير ممكن", + "keyFrom": "احصل على مفتاح API الخاص بك من Anthropic" + }, + "encrypted": { + "front": "سيتم تشفير مفتاح API الخاص بك وتخزينه باستخدام تقنية", + "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", + "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 الخاص بك وتخزينه باستخدام تقنية", + "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": "حالة مفتاح API طبيعية", + "apiKeyRateLimit": "تم الوصول إلى حد المعدل، متاح بعد {{seconds}} ثانية", + "addConfig": "إضافة تكوين", + "editConfig": "تعديل التكوين", + "loadBalancingLeastKeyWarning": "لتمكين موازنة التحميل، يجب تمكين مفتاحين على الأقل.", + "loadBalancingInfo": "بشكل افتراضي، تستخدم موازنة التحميل استراتيجية Round-robin. إذا تم تشغيل تحديد المعدل، فسيتم تطبيق فترة تباطؤ مدتها دقيقة واحدة.", + "upgradeForLoadBalancing": "قم بترقية خطتك لتمكين موازنة التحميل.", + "toBeConfigured": "ليتم تكوينه", + "configureTip": "قم بإعداد مفتاح api أو أضف نموذجًا للاستخدام", + "installProvider": "تثبيت مزودي النماذج", + "installDataSourceProvider": "تثبيت مزودي مصادر البيانات", + "discoverMore": "اكتشف المزيد في ", + "emptyProviderTitle": "لم يتم إعداد مزود النموذج", + "emptyProviderTip": "يرجى تثبيت مزود نموذج أولاً.", + "auth": { + "unAuthorized": "غير مصرح به", + "authRemoved": "تمت إزالة المصادقة", + "apiKeys": "مفاتيح API", + "addApiKey": "إضافة مفتاح API", + "addModel": "إضافة نموذج", + "addNewModel": "إضافة نموذج جديد", + "addCredential": "إضافة بيانات اعتماد", + "addModelCredential": "إضافة بيانات اعتماد النموذج", + "editModelCredential": "تعديل بيانات اعتماد النموذج", + "modelCredentials": "بيانات اعتماد النموذج", + "modelCredential": "بيانات اعتماد النموذج", + "configModel": "تكوين النموذج", + "configLoadBalancing": "تكوين موازنة التحميل", + "authorizationError": "خطأ في التفويض", + "specifyModelCredential": "تحديد بيانات اعتماد النموذج", + "specifyModelCredentialTip": "استخدم بيانات اعتماد نموذج مكونة.", + "providerManaged": "مدار من قبل المزود", + "providerManagedTip": "يتم استضافة التكوين الحالي بواسطة المزود.", + "apiKeyModal": { + "title": "تكوين تفويض مفتاح API", + "desc": "بعد تكوين بيانات الاعتماد، يمكن لجميع الأعضاء داخل مساحة العمل استخدام هذا النموذج عند تنظيم التطبيقات.", + "addModel": "إضافة نموذج" + }, + "manageCredentials": "إدارة بيانات الاعتماد", + "customModelCredentials": "بيانات اعتماد النموذج المخصصة", + "addNewModelCredential": "إضافة بيانات اعتماد نموذج جديدة", + "removeModel": "إزالة النموذج", + "selectModelCredential": "تحديد بيانات اعتماد النموذج", + "customModelCredentialsDeleteTip": "بيانات الاعتماد قيد الاستخدام ولا يمكن حذفها" + }, + "parametersInvalidRemoved": "بعض المعلمات غير صالحة وتمت إزالتها" + }, + "dataSource": { + "add": "إضافة مصدر بيانات", + "connect": "اتصال", + "configure": "تكوين", + "notion": { + "title": "Notion", + "description": "استخدام Notion كمصدر بيانات للمعرفة.", + "connectedWorkspace": "مساحة العمل المتصلة", + "addWorkspace": "إضافة مساحة عمل", + "connected": "متصل", + "disconnected": "غير متصل", + "changeAuthorizedPages": "تغيير الصفحات المصرح بها", + "integratedAlert": "تم دمج Notion عبر بيانات الاعتماد الداخلية، ولا حاجة لإعادة التفويض.", + "pagesAuthorized": "الصفحات المصرح بها", + "sync": "مزامنة", + "remove": "إزالة", + "selector": { + "pageSelected": "الصفحات المحددة", + "searchPages": "بحث في الصفحات...", + "noSearchResult": "لا توجد نتائج بحث", + "addPages": "إضافة صفحات", + "preview": "معاينة" + } + }, + "website": { + "title": "موقع الكتروني", + "description": "استيراد المحتوى من المواقع الإلكترونية باستخدام زحف الويب.", + "with": "مع", + "configuredCrawlers": "الزواحف المكونة", + "active": "نشط", + "inactive": "غير نشط" + } + }, + "plugin": { + "serpapi": { + "apiKey": "مفتاح API", + "apiKeyPlaceholder": "أدخل مفتاح API الخاص بك", + "keyFrom": "احصل على مفتاح SerpAPI الخاص بك من صفحة حساب SerpAPI" + } + }, + "apiBasedExtension": { + "title": "توفر ملحقات API إدارة مركزية لواجهة برمجة التطبيقات، مما يبسط التكوين لسهولة الاستخدام عبر تطبيقات Dify.", + "link": "تعرف على كيفية تطوير ملحق API الخاص بك.", + "add": "إضافة ملحق API", + "selector": { + "title": "ملحق API", + "placeholder": "يرجى تحديد ملحق API", + "manage": "إدارة ملحق API" + }, + "modal": { + "title": "إضافة ملحق API", + "editTitle": "تعديل ملحق API", + "name": { + "title": "الاسم", + "placeholder": "يرجى إدخال الاسم" + }, + "apiEndpoint": { + "title": "نقطة نهاية API", + "placeholder": "يرجى إدخال نقطة نهاية API" + }, + "apiKey": { + "title": "مفتاح API", + "placeholder": "يرجى إدخال مفتاح API", + "lengthError": "لا يمكن أن يكون طول مفتاح API أقل من 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": "التطبيقات المرتبطة", + "noRelatedApp": "لا توجد تطبيقات مرتبطة", + "pipeline": "خط الأنابيب" + }, + "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": "درجة الاسترجاع:" + }, + "inputPlaceholder": "تحدث إلى {{botName}}", + "thinking": "يفكر...", + "thought": "فكر", + "resend": "إعادة إرسال" + }, + "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}} ميجابايت", + "pasteImageLink": "لصق رابط الصورة", + "pasteImageLinkInputPlaceholder": "لصق رابط الصورة هنا", + "pasteImageLinkInvalid": "رابط الصورة غير صالح", + "imageUpload": "تحميل الصورة" + }, + "fileUploader": { + "uploadFromComputer": "تحميل محلي", + "pasteFileLink": "لصق رابط الملف", + "pasteFileLinkInputPlaceholder": "أدخل URL...", + "uploadFromComputerReadError": "فشل قراءة الملف، يرجى المحاولة مرة أخرى.", + "uploadFromComputerUploadError": "فشل تحميل الملف، يرجى التحميل مرة أخرى.", + "uploadFromComputerLimit": "تحميل {{type}} لا يمكن أن يتجاوز {{size}}", + "pasteFileLinkInvalid": "رابط الملف غير صالح", + "fileExtensionNotSupport": "امتداد الملف غير مدعوم", + "fileExtensionBlocked": "تم حظر نوع الملف هذا لأسباب أمنية", + "uploadDisabled": "تم تعطيل رفع الملفات" + }, + "tag": { + "placeholder": "جميع العلامات", + "addNew": "إضافة علامة جديدة", + "noTag": "لا توجد علامات", + "noTagYet": "لا توجد علامات بعد", + "addTag": "إضافة علامات", + "editTag": "تعديل العلامات", + "manageTags": "إدارة العلامات", + "selectorPlaceholder": "اكتب للبحث أو الإنشاء", + "create": "إنشاء", + "delete": "حذف العلامة", + "deleteTip": "العلامة قيد الاستخدام، هل تريد حذفها؟", + "created": "تم إنشاء العلامة بنجاح", + "failed": "فشل إنشاء العلامة" + }, + "license": { + "expiring": "تنتهي في يوم واحد", + "expiring_plural": "تنتهي في {{count}} أيام", + "unlimited": "غير محدود" + }, + "pagination": { + "perPage": "عناصر لكل صفحة" + }, + "avatar": { + "deleteTitle": "إزالة الصورة الرمزية", + "deleteDescription": "هل أنت متأكد أنك تريد إزالة صورة ملفك الشخصي؟ سيستخدم حسابك الصورة الرمزية الأولية الافتراضية." + }, + "imageInput": { + "dropImageHere": "أسقط صورتك هنا، أو", + "browse": "تصفح", + "supportedFormats": "يدعم PNG و JPG و JPEG و WEBP و GIF" + }, + "you": "أنت", + "dynamicSelect": { + "error": "فشل تحميل الخيارات", + "noData": "لا توجد خيارات متاحة", + "loading": "تحميل الخيارات...", + "selected": "{{count}} محدد" + } +} diff --git a/web/i18n/ar-TN/common.ts b/web/i18n/ar-TN/common.ts deleted file mode 100644 index b1f4f46f22..0000000000 --- a/web/i18n/ar-TN/common.ts +++ /dev/null @@ -1,792 +0,0 @@ -const translation = { - theme: { - theme: 'السمة', - light: 'فاتح', - dark: 'داكن', - auto: 'النظام', - }, - api: { - success: 'نجاح', - actionSuccess: 'نجح الإجراء', - saved: 'تم الحفظ', - create: 'تم الإنشاء', - remove: 'تمت الإزالة', - actionFailed: 'فشل الإجراء', - }, - operation: { - create: 'إنشاء', - confirm: 'تأكيد', - cancel: 'إلغاء', - clear: 'مسح', - save: 'حفظ', - yes: 'نعم', - no: 'لا', - deleteConfirmTitle: 'حذف؟', - confirmAction: 'يرجى تأكيد الإجراء الخاص بك.', - saveAndEnable: 'حفظ وتمكين', - edit: 'تعديل', - add: 'إضافة', - added: 'تمت الإضافة', - refresh: 'إعادة تشغيل', - reset: 'إعادة تعيين', - search: 'بحث', - noSearchResults: 'لم يتم العثور على {{content}}', - resetKeywords: 'إعادة تعيين الكلمات الرئيسية', - selectCount: 'تم تحديد {{count}}', - searchCount: 'ابحث عن {{count}} {{content}}', - noSearchCount: '0 {{content}}', - change: 'تغيير', - remove: 'إزالة', - send: 'إرسال', - copy: 'نسخ', - copied: 'تم النسخ', - lineBreak: 'فاصل أسطر', - sure: 'أنا متأكد', - download: 'تنزيل', - downloadSuccess: 'اكتمل التنزيل.', - downloadFailed: 'فشل التنزيل. يرجى المحاولة مرة أخرى لاحقًا.', - viewDetails: 'عرض التفاصيل', - delete: 'حذف', - now: 'الآن', - deleteApp: 'حذف التطبيق', - settings: 'الإعدادات', - setup: 'إعداد', - config: 'تكوين', - getForFree: 'احصل عليه مجانا', - reload: 'إعادة تحميل', - ok: 'موافق', - log: 'سجل', - learnMore: 'تعرف على المزيد', - params: 'معلمات', - duplicate: 'تكرار', - rename: 'إعادة تسمية', - audioSourceUnavailable: 'مصدر الصوت غير متاح', - close: 'إغلاق', - copyImage: 'نسخ الصورة', - imageCopied: 'تم نسخ الصورة', - zoomOut: 'تصغير', - zoomIn: 'تكبير', - openInNewTab: 'فتح في علامة تبويب جديدة', - in: 'في', - saveAndRegenerate: 'حفظ وإعادة إنشاء القطع الفرعية', - view: 'عرض', - viewMore: 'عرض المزيد', - regenerate: 'إعادة إنشاء', - submit: 'إرسال', - skip: 'تخطي', - format: 'تنسيق', - more: 'المزيد', - selectAll: 'تحديد الكل', - deSelectAll: 'إلغاء تحديد الكل', - }, - errorMsg: { - fieldRequired: '{{field}} مطلوب', - urlError: 'يجب أن يبدأ العنوان بـ http:// أو https://', - }, - placeholder: { - input: 'يرجى الإدخال', - select: 'يرجى التحديد', - search: 'بحث...', - }, - noData: 'لا توجد بيانات', - label: { - optional: '(اختياري)', - }, - voice: { - language: { - zhHans: 'الصينية', - zhHant: 'الصينية التقليدية', - enUS: 'الإنجليزية', - deDE: 'الألمانية', - frFR: 'الفرنسية', - esES: 'الإسبانية', - itIT: 'الإيطالية', - thTH: 'التايلاندية', - idID: 'الإندونيسية', - jaJP: 'اليابانية', - koKR: 'الكورية', - ptBR: 'البرتغالية', - ruRU: 'الروسية', - ukUA: 'الأوكرانية', - viVN: 'الفيتنامية', - plPL: 'البولندية', - roRO: 'الرومانية', - hiIN: 'الهندية', - trTR: 'التركية', - faIR: 'الفارسية', - slSI: 'السلوفينية', - arTN: 'العربية التونسية', - }, - }, - 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: 'يتم تحديث الحد الأقصى للرموز إلى 80٪ من الحد الأقصى لرموز النموذج الحالي {{maxToken}}.', - stop_sequences: 'تسلسلات التوقف', - stop_sequencesTip: 'ما يصل إلى أربعة تسلسلات حيث ستتوقف API عن توليد المزيد من الرموز. لن يحتوي النص المرتجع على تسلسل التوقف.', - stop_sequencesPlaceholder: 'أدخل التسلسل واضغط على Tab', - }, - tone: { - Creative: 'إبداعي', - Balanced: 'متوازن', - Precise: 'دقيق', - Custom: 'مخصص', - }, - addMoreModel: 'انتقل إلى الإعدادات لإضافة المزيد من النماذج', - settingsLink: 'إعدادات مزود النموذج', - capabilities: 'قدرات متعددة الوسائط', - }, - menus: { - status: 'بيتا', - explore: 'استكشاف', - apps: 'الاستوديو', - appDetail: 'تفاصيل التطبيق', - account: 'الحساب', - plugins: 'الإضافات', - exploreMarketplace: 'استكشاف السوق', - pluginsTips: 'ادمج الإضافات الخارجية أو أنشئ إضافات AI متوافقة مع ChatGPT.', - datasets: 'المعرفة', - datasetsTips: 'قريباً: استيراد بيانات النص الخاصة بك أو كتابة البيانات في الوقت الفعلي عبر Webhook لتحسين سياق LLM.', - newApp: 'تطبيق جديد', - newDataset: 'إنشاء معرفة', - tools: 'الأدوات', - }, - userProfile: { - settings: 'الإعدادات', - contactUs: 'اتصل بنا', - emailSupport: 'دعم البريد الإلكتروني', - workspace: 'مساحة العمل', - createWorkspace: 'إنشاء مساحة عمل', - helpCenter: 'عرض المستندات', - support: 'دعم', - compliance: 'الامتثال', - forum: 'المنتدى', - roadmap: 'خارطة الطريق', - github: 'GitHub', - community: 'المجتمع', - about: 'حول', - logout: 'تسجيل الخروج', - }, - compliance: { - soc2Type1: 'تقرير SOC 2 النوع الأول', - soc2Type2: 'تقرير SOC 2 النوع الثاني', - iso27001: 'شهادة ISO 27001:2022', - gdpr: 'GDPR DPA', - sandboxUpgradeTooltip: 'متاح فقط مع خطة المحترفين أو الفريق.', - professionalUpgradeTooltip: 'متاح فقط مع خطة الفريق أو أعلى.', - }, - settings: { - accountGroup: 'عام', - workplaceGroup: 'مساحة العمل', - generalGroup: 'عام', - account: 'حسابي', - members: 'الأعضاء', - billing: 'الفوترة', - integrations: 'التكاملات', - language: 'اللغة', - provider: 'مزود النموذج', - dataSource: 'مصدر البيانات', - plugin: 'الإضافات', - apiBasedExtension: 'ملحق API', - }, - account: { - account: 'الحساب', - myAccount: 'حسابي', - studio: 'الاستوديو', - avatar: 'الصورة الرمزية', - name: 'الاسم', - email: 'البريد الإلكتروني', - password: 'كلمة المرور', - passwordTip: 'يمكنك تعيين كلمة مرور دائمية إذا كنت لا ترغب في استخدام رموز تسجيل الدخول المؤقتة', - setPassword: 'تعيين كلمة مرور', - resetPassword: 'إعادة تعيين كلمة المرور', - currentPassword: 'كلمة المرور الحالية', - newPassword: 'كلمة مرور جديدة', - confirmPassword: 'تأكيد كلمة المرور', - notEqual: 'كلمتا المرور مختلفتان.', - langGeniusAccount: 'بيانات الحساب', - langGeniusAccountTip: 'بيانات المستخدم الخاصة بحسابك.', - editName: 'تعديل الاسم', - showAppLength: 'عرض {{length}} تطبيقات', - delete: 'حذف الحساب', - deleteTip: 'يرجى ملاحظة أنه بمجرد التأكيد، بصفتك مالكًا لأي مساحات عمل، سيتم جدولة مساحات العمل الخاصة بك في قائمة انتظار للحذف الدائم، وسيتم جدولة جميع بيانات المستخدم الخاصة بك للحذف الدائم.', - deletePrivacyLinkTip: 'لمزيد من المعلومات حول كيفية تعاملنا مع بياناتك، يرجى الاطلاع على ', - deletePrivacyLink: 'سياسة الخصوصية.', - deleteSuccessTip: 'يحتاج حسابك إلى وقت للانتهاء من الحذف. سنرسل إليك بريدًا إلكترونيًا عندما ينتهي كل شيء.', - deleteLabel: 'للتأكيد، يرجى كتابة بريدك الإلكتروني أدناه', - deletePlaceholder: 'يرجى إدخال بريدك الإلكتروني', - sendVerificationButton: 'إرسال رمز التحقق', - verificationLabel: 'رمز التحقق', - verificationPlaceholder: 'الصق الرمز المكون من 6 أرقام', - permanentlyDeleteButton: 'حذف الحساب نهائيًا', - feedbackTitle: 'تعليق', - feedbackLabel: 'أخبرنا لماذا حذفت حسابك؟', - feedbackPlaceholder: 'اختياري', - editWorkspaceInfo: 'تعديل معلومات مساحة العمل', - workspaceName: 'اسم مساحة العمل', - workspaceIcon: 'رمز مساحة العمل', - changeEmail: { - title: 'تغيير البريد الإلكتروني', - verifyEmail: 'تحقق من بريدك الإلكتروني الحالي', - newEmail: 'إعداد عنوان بريد إلكتروني جديد', - verifyNew: 'تحقق من بريدك الإلكتروني الجديد', - authTip: 'بمجرد تغيير بريدك الإلكتروني، لن تتمكن حسابات Google أو GitHub المرتبطة ببريدك الإلكتروني القديم من تسجيل الدخول إلى هذا الحساب.', - content1: 'إذا تابعت، فسنرسل رمز تحقق إلى {{email}} لإعادة المصادقة.', - content2: 'بريدك الإلكتروني الحالي هو {{email}}. تم إرسال رمز التحقق إلى عنوان البريد الإلكتروني هذا.', - content3: 'أدخل بريدًا إلكترونيًا جديدًا وسنرسل لك رمز التحقق.', - content4: 'لقد أرسلنا لك للتو رمز تحقق مؤقت إلى {{email}}.', - codeLabel: 'رمز التحقق', - codePlaceholder: 'الصق الرمز المكون من 6 أرقام', - emailLabel: 'بريد إلكتروني جديد', - emailPlaceholder: 'أدخل بريدًا إلكترونيًا جديدًا', - existingEmail: 'مستخدم بهذا البريد الإلكتروني موجود بالفعل.', - unAvailableEmail: 'هذا البريد الإلكتروني غير متاح مؤقتًا.', - sendVerifyCode: 'إرسال رمز التحقق', - continue: 'متابعة', - changeTo: 'تغيير إلى {{email}}', - resendTip: 'لم تتلق رمزًا؟', - resendCount: 'إعادة إرسال في {{count}} ثانية', - resend: 'إعادة إرسال', - }, - }, - members: { - team: 'الفريق', - invite: 'إضافة', - name: 'الاسم', - lastActive: 'آخر نشاط', - role: 'الأدوار', - pending: 'قيد الانتظار...', - owner: 'المالك', - admin: 'المسؤول', - adminTip: 'يمكنه بناء التطبيقات وإدارة إعدادات الفريق', - normal: 'عادي', - normalTip: 'يمكنه استخدام التطبيقات فقط، ولا يمكنه بناء التطبيقات', - builder: 'باني', - builderTip: 'يمكنه بناء وتعديل تطبيقاته الخاصة', - editor: 'محرر', - editorTip: 'يمكنه بناء وتعديل التطبيقات', - datasetOperator: 'مسؤول المعرفة', - datasetOperatorTip: 'يمكنه إدارة قاعدة المعرفة فقط', - inviteTeamMember: 'إضافة عضو فريق', - inviteTeamMemberTip: 'يمكنهم الوصول إلى بيانات فريقك مباشرة بعد تسجيل الدخول.', - emailNotSetup: 'لم يتم إعداد خادم البريد الإلكتروني، لذا لا يمكن إرسال رسائل بريد إلكتروني للدعوة. يرجى إخطار المستخدمين برابط الدعوة الذي سيتم إصداره بعد الدعوة بدلاً من ذلك.', - email: 'البريد الإلكتروني', - emailInvalid: 'تنسيق البريد الإلكتروني غير صالح', - emailPlaceholder: 'يرجى إدخال رسائل البريد الإلكتروني', - sendInvite: 'إرسال دعوة', - invitedAsRole: 'تمت الدعوة كمستخدم {{role}}', - invitationSent: 'تم إرسال الدعوة', - invitationSentTip: 'تم إرسال الدعوة، ويمكنهم تسجيل الدخول إلى Dify للوصول إلى بيانات فريقك.', - invitationLink: 'رابط الدعوة', - failedInvitationEmails: 'لم تتم دعوة المستخدمين أدناه بنجاح', - ok: 'موافق', - removeFromTeam: 'إزالة من الفريق', - removeFromTeamTip: 'سيتم إزالة وصول الفريق', - setAdmin: 'تعيين كمسؤول', - setMember: 'تعيين كعضو عادي', - setBuilder: 'تعيين كباني', - setEditor: 'تعيين كمحرر', - disInvite: 'إلغاء الدعوة', - deleteMember: 'حذف العضو', - you: '(أنت)', - transferOwnership: 'نقل الملكية', - transferModal: { - title: 'نقل ملكية مساحة العمل', - warning: 'أنت على وشك نقل ملكية "{{workspace}}". يسري هذا المفعول فورًا ولا يمكن التراجع عنه.', - warningTip: 'ستصبح عضوًا مسؤولاً، وسيتمتع المالك الجديد بالتحكم الكامل.', - sendTip: 'إذا تابعت، فسنرسل رمز تحقق إلى {{email}} لإعادة المصادقة.', - verifyEmail: 'تحقق من بريدك الإلكتروني الحالي', - verifyContent: 'بريدك الإلكتروني الحالي هو {{email}}.', - verifyContent2: 'سنرسل رمز تحقق مؤقت إلى هذا البريد الإلكتروني لإعادة المصادقة.', - codeLabel: 'رمز التحقق', - codePlaceholder: 'الصق الرمز المكون من 6 أرقام', - resendTip: 'لم تتلق رمزًا؟', - resendCount: 'إعادة إرسال في {{count}} ثانية', - resend: 'إعادة إرسال', - transferLabel: 'نقل ملكية مساحة العمل إلى', - transferPlaceholder: 'حدد عضو مساحة عمل...', - sendVerifyCode: 'إرسال رمز التحقق', - continue: 'متابعة', - transfer: 'نقل ملكية مساحة العمل', - }, - }, - feedback: { - title: 'تقديم تعليق', - subtitle: 'من فضلك أخبرنا ما الخطأ في هذه الاستجابة', - content: 'محتوى التعليق', - placeholder: 'يرجى وصف ما حدث خطأ أو كيف يمكننا التحسين...', - }, - integrations: { - connected: 'متصل', - google: 'Google', - googleAccount: 'تسجيل الدخول بحساب Google', - github: 'GitHub', - githubAccount: 'تسجيل الدخول بحساب GitHub', - connect: 'اتصال', - }, - language: { - displayLanguage: 'لغة العرض', - timezone: 'المنطقة الزمنية', - }, - provider: { - apiKey: 'مفتاح API', - enterYourKey: 'أدخل مفتاح API الخاص بك هنا', - invalidKey: 'مفتاح OpenAI API غير صالح', - validatedError: 'فشل التحقق: ', - validating: 'جارٍ التحقق من المفتاح...', - saveFailed: 'فشل حفظ مفتاح api', - apiKeyExceedBill: 'لا يحتوي مفتاح API هذا على حصة متاحة، يرجى القراءة', - addKey: 'إضافة مفتاح', - comingSoon: 'قريباً', - editKey: 'تعديل', - invalidApiKey: 'مفتاح API غير صالح', - azure: { - apiBase: 'قاعدة API', - apiBasePlaceholder: 'عنوان URL لقاعدة API لنقطة نهاية Azure OpenAI الخاصة بك.', - apiKey: 'مفتاح API', - apiKeyPlaceholder: 'أدخل مفتاح API الخاص بك هنا', - helpTip: 'تعلم خدمة Azure OpenAI', - }, - openaiHosted: { - openaiHosted: 'OpenAI المستضافة', - onTrial: 'في التجربة', - exhausted: 'نفدت الحصة', - desc: 'تسمح لك خدمة استضافة OpenAI المقدمة من Dify باستخدام نماذج مثل GPT-3.5. قبل نفاد حصة التجربة الخاصة بك، تحتاج إلى إعداد موفري نماذج آخرين.', - callTimes: 'أوقات الاتصال', - usedUp: 'نفدت حصة التجربة. أضف مزود النموذج الخاص بك.', - useYourModel: 'تستخدم حاليًا مزود النموذج الخاص بك.', - close: 'إغلاق', - }, - anthropicHosted: { - anthropicHosted: 'Anthropic Claude', - onTrial: 'في التجربة', - exhausted: 'نفدت الحصة', - desc: 'نموذج قوي يتفوق في مجموعة واسعة من المهام من الحوار المعقد وإنشاء المحتوى الإبداعي إلى التعليمات التفصيلية.', - callTimes: 'أوقات الاتصال', - usedUp: 'نفدت حصة التجربة. أضف مزود النموذج الخاص بك.', - useYourModel: 'تستخدم حاليًا مزود النموذج الخاص بك.', - close: 'إغلاق', - trialQuotaTip: 'ستنتهي حصة التجربة الخاصة بك في Anthropic في 2025/03/17 ولن تكون متاحة بعد ذلك. يرجى الاستفادة منها في الوقت المحدد.', - }, - anthropic: { - using: 'قدرة التضمين تستخدم', - enableTip: 'لتمكين نموذج Anthropic، تحتاج إلى الارتباط بـ OpenAI أو خدمة Azure OpenAI أولاً.', - notEnabled: 'غير ممكن', - keyFrom: 'احصل على مفتاح API الخاص بك من Anthropic', - }, - encrypted: { - front: 'سيتم تشفير مفتاح API الخاص بك وتخزينه باستخدام تقنية', - 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', - 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 الخاص بك وتخزينه باستخدام تقنية', - 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: 'حالة مفتاح API طبيعية', - apiKeyRateLimit: 'تم الوصول إلى حد المعدل، متاح بعد {{seconds}} ثانية', - addConfig: 'إضافة تكوين', - editConfig: 'تعديل التكوين', - loadBalancingLeastKeyWarning: 'لتمكين موازنة التحميل، يجب تمكين مفتاحين على الأقل.', - loadBalancingInfo: 'بشكل افتراضي، تستخدم موازنة التحميل استراتيجية Round-robin. إذا تم تشغيل تحديد المعدل، فسيتم تطبيق فترة تباطؤ مدتها دقيقة واحدة.', - upgradeForLoadBalancing: 'قم بترقية خطتك لتمكين موازنة التحميل.', - toBeConfigured: 'ليتم تكوينه', - configureTip: 'قم بإعداد مفتاح api أو أضف نموذجًا للاستخدام', - installProvider: 'تثبيت مزودي النماذج', - installDataSourceProvider: 'تثبيت مزودي مصادر البيانات', - discoverMore: 'اكتشف المزيد في ', - emptyProviderTitle: 'لم يتم إعداد مزود النموذج', - emptyProviderTip: 'يرجى تثبيت مزود نموذج أولاً.', - auth: { - unAuthorized: 'غير مصرح به', - authRemoved: 'تمت إزالة المصادقة', - apiKeys: 'مفاتيح API', - addApiKey: 'إضافة مفتاح API', - addModel: 'إضافة نموذج', - addNewModel: 'إضافة نموذج جديد', - addCredential: 'إضافة بيانات اعتماد', - addModelCredential: 'إضافة بيانات اعتماد النموذج', - editModelCredential: 'تعديل بيانات اعتماد النموذج', - modelCredentials: 'بيانات اعتماد النموذج', - modelCredential: 'بيانات اعتماد النموذج', - configModel: 'تكوين النموذج', - configLoadBalancing: 'تكوين موازنة التحميل', - authorizationError: 'خطأ في التفويض', - specifyModelCredential: 'تحديد بيانات اعتماد النموذج', - specifyModelCredentialTip: 'استخدم بيانات اعتماد نموذج مكونة.', - providerManaged: 'مدار من قبل المزود', - providerManagedTip: 'يتم استضافة التكوين الحالي بواسطة المزود.', - apiKeyModal: { - title: 'تكوين تفويض مفتاح API', - desc: 'بعد تكوين بيانات الاعتماد، يمكن لجميع الأعضاء داخل مساحة العمل استخدام هذا النموذج عند تنظيم التطبيقات.', - addModel: 'إضافة نموذج', - }, - manageCredentials: 'إدارة بيانات الاعتماد', - customModelCredentials: 'بيانات اعتماد النموذج المخصصة', - addNewModelCredential: 'إضافة بيانات اعتماد نموذج جديدة', - removeModel: 'إزالة النموذج', - selectModelCredential: 'تحديد بيانات اعتماد النموذج', - customModelCredentialsDeleteTip: 'بيانات الاعتماد قيد الاستخدام ولا يمكن حذفها', - }, - parametersInvalidRemoved: 'بعض المعلمات غير صالحة وتمت إزالتها', - }, - dataSource: { - add: 'إضافة مصدر بيانات', - connect: 'اتصال', - configure: 'تكوين', - notion: { - title: 'Notion', - description: 'استخدام Notion كمصدر بيانات للمعرفة.', - connectedWorkspace: 'مساحة العمل المتصلة', - addWorkspace: 'إضافة مساحة عمل', - connected: 'متصل', - disconnected: 'غير متصل', - changeAuthorizedPages: 'تغيير الصفحات المصرح بها', - integratedAlert: 'تم دمج Notion عبر بيانات الاعتماد الداخلية، ولا حاجة لإعادة التفويض.', - pagesAuthorized: 'الصفحات المصرح بها', - sync: 'مزامنة', - remove: 'إزالة', - selector: { - pageSelected: 'الصفحات المحددة', - searchPages: 'بحث في الصفحات...', - noSearchResult: 'لا توجد نتائج بحث', - addPages: 'إضافة صفحات', - preview: 'معاينة', - }, - }, - website: { - title: 'موقع الكتروني', - description: 'استيراد المحتوى من المواقع الإلكترونية باستخدام زحف الويب.', - with: 'مع', - configuredCrawlers: 'الزواحف المكونة', - active: 'نشط', - inactive: 'غير نشط', - }, - }, - plugin: { - serpapi: { - apiKey: 'مفتاح API', - apiKeyPlaceholder: 'أدخل مفتاح API الخاص بك', - keyFrom: 'احصل على مفتاح SerpAPI الخاص بك من صفحة حساب SerpAPI', - }, - }, - apiBasedExtension: { - title: 'توفر ملحقات API إدارة مركزية لواجهة برمجة التطبيقات، مما يبسط التكوين لسهولة الاستخدام عبر تطبيقات Dify.', - link: 'تعرف على كيفية تطوير ملحق API الخاص بك.', - add: 'إضافة ملحق API', - selector: { - title: 'ملحق API', - placeholder: 'يرجى تحديد ملحق API', - manage: 'إدارة ملحق API', - }, - modal: { - title: 'إضافة ملحق API', - editTitle: 'تعديل ملحق API', - name: { - title: 'الاسم', - placeholder: 'يرجى إدخال الاسم', - }, - apiEndpoint: { - title: 'نقطة نهاية API', - placeholder: 'يرجى إدخال نقطة نهاية API', - }, - apiKey: { - title: 'مفتاح API', - placeholder: 'يرجى إدخال مفتاح API', - lengthError: 'لا يمكن أن يكون طول مفتاح API أقل من 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: 'التطبيقات المرتبطة', - noRelatedApp: 'لا توجد تطبيقات مرتبطة', - pipeline: 'خط الأنابيب', - }, - 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: 'درجة الاسترجاع:', - }, - inputPlaceholder: 'تحدث إلى {{botName}}', - thinking: 'يفكر...', - thought: 'فكر', - resend: 'إعادة إرسال', - }, - 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}} ميجابايت', - pasteImageLink: 'لصق رابط الصورة', - pasteImageLinkInputPlaceholder: 'لصق رابط الصورة هنا', - pasteImageLinkInvalid: 'رابط الصورة غير صالح', - imageUpload: 'تحميل الصورة', - }, - fileUploader: { - uploadFromComputer: 'تحميل محلي', - pasteFileLink: 'لصق رابط الملف', - pasteFileLinkInputPlaceholder: 'أدخل URL...', - uploadFromComputerReadError: 'فشل قراءة الملف، يرجى المحاولة مرة أخرى.', - uploadFromComputerUploadError: 'فشل تحميل الملف، يرجى التحميل مرة أخرى.', - uploadFromComputerLimit: 'تحميل {{type}} لا يمكن أن يتجاوز {{size}}', - pasteFileLinkInvalid: 'رابط الملف غير صالح', - fileExtensionNotSupport: 'امتداد الملف غير مدعوم', - fileExtensionBlocked: 'تم حظر نوع الملف هذا لأسباب أمنية', - uploadDisabled: 'تم تعطيل رفع الملفات', - }, - tag: { - placeholder: 'جميع العلامات', - addNew: 'إضافة علامة جديدة', - noTag: 'لا توجد علامات', - noTagYet: 'لا توجد علامات بعد', - addTag: 'إضافة علامات', - editTag: 'تعديل العلامات', - manageTags: 'إدارة العلامات', - selectorPlaceholder: 'اكتب للبحث أو الإنشاء', - create: 'إنشاء', - delete: 'حذف العلامة', - deleteTip: 'العلامة قيد الاستخدام، هل تريد حذفها؟', - created: 'تم إنشاء العلامة بنجاح', - failed: 'فشل إنشاء العلامة', - }, - license: { - expiring: 'تنتهي في يوم واحد', - expiring_plural: 'تنتهي في {{count}} أيام', - unlimited: 'غير محدود', - }, - pagination: { - perPage: 'عناصر لكل صفحة', - }, - avatar: { - deleteTitle: 'إزالة الصورة الرمزية', - deleteDescription: 'هل أنت متأكد أنك تريد إزالة صورة ملفك الشخصي؟ سيستخدم حسابك الصورة الرمزية الأولية الافتراضية.', - }, - imageInput: { - dropImageHere: 'أسقط صورتك هنا، أو', - browse: 'تصفح', - supportedFormats: 'يدعم PNG و JPG و JPEG و WEBP و GIF', - }, - you: 'أنت', - dynamicSelect: { - error: 'فشل تحميل الخيارات', - noData: 'لا توجد خيارات متاحة', - loading: 'تحميل الخيارات...', - selected: '{{count}} محدد', - }, -} - -export default translation diff --git a/web/i18n/ar-TN/custom.json b/web/i18n/ar-TN/custom.json new file mode 100644 index 0000000000..0afe08b531 --- /dev/null +++ b/web/i18n/ar-TN/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "تخصيص", + "upgradeTip": { + "title": "تحديث خطتك", + "des": "قم بترقية خطتك لتخصيص علامتك التجارية", + "prefix": "قم بترقية خطتك لـ", + "suffix": "تخصيص علامتك التجارية." + }, + "webapp": { + "title": "تخصيص العلامة التجارية لتطبيق الويب", + "removeBrand": "إزالة Powered by Dify", + "changeLogo": "تغيير صورة Powered by Brand", + "changeLogoTip": "تنسيق SVG أو PNG بحجم أدنى 40x40px" + }, + "app": { + "title": "تخصيص العلامة التجارية لرأس التطبيق", + "changeLogoTip": "تنسيق SVG أو PNG بحجم أدنى 80x80px" + }, + "upload": "تحميل", + "uploading": "جاري التحميل", + "uploadedFail": "فشل تحميل الصورة، يرجى إعادة التحميل.", + "change": "تغيير", + "apply": "تطبيق", + "restore": "استعادة الافتراضيات", + "customize": { + "contactUs": " اتصل بنا ", + "prefix": "لتخصيص شعار العلامة التجارية داخل التطبيق، يرجى", + "suffix": "للترقية إلى إصدار Enterprise." + } +} diff --git a/web/i18n/ar-TN/custom.ts b/web/i18n/ar-TN/custom.ts deleted file mode 100644 index 64eaa91281..0000000000 --- a/web/i18n/ar-TN/custom.ts +++ /dev/null @@ -1,32 +0,0 @@ -const translation = { - custom: 'تخصيص', - upgradeTip: { - title: 'تحديث خطتك', - des: 'قم بترقية خطتك لتخصيص علامتك التجارية', - prefix: 'قم بترقية خطتك لـ', - suffix: 'تخصيص علامتك التجارية.', - }, - webapp: { - title: 'تخصيص العلامة التجارية لتطبيق الويب', - removeBrand: 'إزالة Powered by Dify', - changeLogo: 'تغيير صورة Powered by Brand', - changeLogoTip: 'تنسيق SVG أو PNG بحجم أدنى 40x40px', - }, - app: { - title: 'تخصيص العلامة التجارية لرأس التطبيق', - changeLogoTip: 'تنسيق SVG أو PNG بحجم أدنى 80x80px', - }, - upload: 'تحميل', - uploading: 'جاري التحميل', - uploadedFail: 'فشل تحميل الصورة، يرجى إعادة التحميل.', - change: 'تغيير', - apply: 'تطبيق', - restore: 'استعادة الافتراضيات', - customize: { - contactUs: ' اتصل بنا ', - prefix: 'لتخصيص شعار العلامة التجارية داخل التطبيق، يرجى', - suffix: 'للترقية إلى إصدار Enterprise.', - }, -} - -export default translation diff --git a/web/i18n/ar-TN/dataset-creation.json b/web/i18n/ar-TN/dataset-creation.json new file mode 100644 index 0000000000..574abc3599 --- /dev/null +++ b/web/i18n/ar-TN/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "المعرفة" + }, + "one": "مصدر البيانات", + "two": "معالجة المستندات", + "three": "التنفيذ والانتهاء" + }, + "error": { + "unavailable": "هذه المعرفة غير متاحة" + }, + "firecrawl": { + "configFirecrawl": "تكوين 🔥Firecrawl", + "apiKeyPlaceholder": "مفتاح API من firecrawl.dev", + "getApiKeyLinkText": "احصل على مفتاح API الخاص بك من firecrawl.dev" + }, + "watercrawl": { + "configWatercrawl": "تكوين Watercrawl", + "apiKeyPlaceholder": "مفتاح API من watercrawl.dev", + "getApiKeyLinkText": "احصل على مفتاح API الخاص بك من watercrawl.dev" + }, + "jinaReader": { + "configJinaReader": "تكوين Jina Reader", + "apiKeyPlaceholder": "مفتاح API من jina.ai", + "getApiKeyLinkText": "احصل على مفتاح API المجاني الخاص بك في jina.ai" + }, + "stepOne": { + "filePreview": "معاينة الملف", + "pagePreview": "معاينة الصفحة", + "dataSourceType": { + "file": "استيراد من ملف", + "notion": "مزامنة من Notion", + "web": "مزامنة من موقع ويب" + }, + "uploader": { + "title": "تحميل ملف", + "button": "اسحب وأفلت الملف أو المجلد، أو", + "buttonSingleFile": "اسحب وأفلت الملف، أو", + "browse": "تصفح", + "tip": "يدعم {{supportTypes}}. بحد أقصى {{batchCount}} في الدفعة الواحدة و {{size}} ميجابايت لكل منها. الحد الأقصى الإجمالي {{totalCount}} ملفات.", + "validation": { + "typeError": "نوع الملف غير مدعوم", + "size": "الملف كبير جدًا. الحد الأقصى هو {{size}} ميجابايت", + "count": "ملفات متعددة غير مدعومة", + "filesNumber": "لقد وصلت إلى حد تحميل الدفعة البالغ {{filesNumber}}." + }, + "cancel": "إلغاء", + "change": "تغيير", + "failed": "فشل التحميل" + }, + "notionSyncTitle": "Notion غير متصل", + "notionSyncTip": "للمزامنة مع Notion، يجب إنشاء اتصال بـ Notion أولاً.", + "connect": "الذهاب للاتصال", + "cancel": "إلغاء", + "button": "التالي", + "emptyDatasetCreation": "أريد إنشاء معرفة فارغة", + "modal": { + "title": "إنشاء معرفة فارغة", + "tip": "لن تحتوي المعرفة الفارغة على أي مستندات، ويمكنك تحميل المستندات في أي وقت.", + "input": "اسم المعرفة", + "placeholder": "يرجى الإدخال", + "nameNotEmpty": "لا يمكن أن يكون الاسم فارغًا", + "nameLengthInvalid": "يجب أن يكون الاسم بين 1 إلى 40 حرفًا", + "cancelButton": "إلغاء", + "confirmButton": "إنشاء", + "failed": "فشل الإنشاء" + }, + "website": { + "chooseProvider": "اختر مزودًا", + "fireCrawlNotConfigured": "Firecrawl غير مكون", + "fireCrawlNotConfiguredDescription": "قم بتكوين Firecrawl باستخدام مفتاح API لاستخدامه.", + "jinaReaderNotConfigured": "Jina Reader غير مكون", + "jinaReaderNotConfiguredDescription": "قم بإعداد Jina Reader عن طريق إدخال مفتاح API المجاني للوصول.", + "waterCrawlNotConfigured": "Watercrawl غير مكون", + "waterCrawlNotConfiguredDescription": "قم بتكوين Watercrawl باستخدام مفتاح API لاستخدامه.", + "configure": "تكوين", + "configureFirecrawl": "تكوين Firecrawl", + "configureWatercrawl": "تكوين Watercrawl", + "configureJinaReader": "تكوين Jina Reader", + "run": "تشغيل", + "running": "جارٍ التشغيل", + "firecrawlTitle": "استخراج محتوى الويب باستخدام 🔥Firecrawl", + "firecrawlDoc": "مستندات Firecrawl", + "watercrawlTitle": "استخراج محتوى الويب باستخدام Watercrawl", + "watercrawlDoc": "مستندات Watercrawl", + "jinaReaderTitle": "تحويل الموقع بالكامل إلى Markdown", + "jinaReaderDoc": "تعرف على المزيد حول Jina Reader", + "jinaReaderDocLink": "https://jina.ai/reader", + "useSitemap": "استخدام خريطة الموقع", + "useSitemapTooltip": "اتبع خريطة الموقع للزحف إلى الموقع. إذا لم يكن كذلك، سيقوم Jina Reader بالزحف بشكل متكرر بناءً على صلة الصفحة، مما يؤدي إلى صفحات أقل ولكن بجودة أعلى.", + "options": "خيارات", + "crawlSubPage": "الزحف إلى الصفحات الفرعية", + "limit": "الحد", + "maxDepth": "أقصى عمق", + "excludePaths": "استبعاد المسارات", + "includeOnlyPaths": "تضمين المسارات فقط", + "extractOnlyMainContent": "استخراج المحتوى الرئيسي فقط (بدون رؤوس، قوائم تنقل، تذييلات، إلخ.)", + "exceptionErrorTitle": "حدث استثناء أثناء تشغيل مهمة الزحف:", + "unknownError": "خطأ غير معروف", + "totalPageScraped": "إجمالي الصفحات التي تم كشطها:", + "selectAll": "تحديد الكل", + "resetAll": "إعادة تعيين الكل", + "scrapTimeInfo": "تم كشط {{total}} صفحة في المجموع خلال {{time}} ثانية", + "preview": "معاينة", + "maxDepthTooltip": "أقصى عمق للزحف بالنسبة لعنوان URL المدخل. العمق 0 يكشط فقط صفحة عنوان URL المدخل، العمق 1 يكشط عنوان URL وكل شيء بعد عنوان URL المدخل + / واحد، وهكذا." + } + }, + "stepTwo": { + "segmentation": "إعدادات القطعة", + "auto": "تلقائي", + "autoDescription": "تحديد القواعد والتقطيع والمعالجة المسبقة تلقائيًا. يوصى به للمستخدمين غير المألوفين.", + "custom": "مخصص", + "customDescription": "تخصيص قواعد القطع وطول القطع وقواعد المعالجة المسبقة، إلخ.", + "general": "عام", + "generalTip": "وضع تقطيع النص العام، القطع المسترجعة والمستردة هي نفسها.", + "parentChild": "الأصل والطفل", + "parentChildTip": "عند استخدام وضع الأصل والطفل، يتم استخدام القطعة الفرعية للاسترجاع ويتم استخدام القطعة الأصلية للاستدعاء كسياق.", + "parentChunkForContext": "القطعة الأصلية للسياق", + "childChunkForRetrieval": "القطعة الفرعية للاسترجاع", + "paragraph": "فقرة", + "paragraphTip": "يقسم هذا الوضع النص إلى فقرات بناءً على المحددات وأقصى طول للقطعة، باستخدام النص المقسم كقطعة أصلية للاسترجاع.", + "fullDoc": "مستند كامل", + "fullDocTip": "يتم استخدام المستند بأكمله كقطعة أصلية ويتم استرجاعه مباشرة. يرجى ملاحظة أنه لأسباب تتعلق بالأداء، سيتم اقتطاع النص الذي يتجاوز 10000 رمز تلقائيًا.", + "qaTip": "عند استخدام بيانات الأسئلة والأجوبة المهيكلة، يمكنك إنشاء مستندات تقرن الأسئلة بالأجوبة. يتم فهرسة هذه المستندات بناءً على جزء السؤال، مما يسمح للنظام باسترجاع الإجابات ذات الصلة بناءً على تشابه الاستعلام.", + "separator": "محدد", + "separatorTip": "المحدد هو الحرف المستخدم لفصل النص. \\n\\n و \\n هي محددات شائعة الاستخدام لفصل الفقرات والأسطر. جنبًا إلى جنب مع الفواصل (\\n\\n,\\n)، سيتم تقسيم الفقرات حسب الأسطر عند تجاوز الحد الأقصى لطول القطعة. يمكنك أيضًا استخدام محددات خاصة محددة بنفسك (مثل ***).", + "separatorPlaceholder": "\\n\\n للفقرات؛ \\n للأسطر", + "maxLength": "أقصى طول للقطعة", + "maxLengthCheck": "يجب أن يكون أقصى طول للقطعة أقل من {{limit}}", + "overlap": "تداخل القطعة", + "overlapTip": "يمكن أن يؤدي تعيين تداخل القطعة إلى الحفاظ على الصلة الدلالية بينها، مما يعزز تأثير الاسترجاع. يوصى بتعيين 10٪ -25٪ من الحد الأقصى لحجم القطعة.", + "overlapCheck": "يجب ألا يكون تداخل القطعة أكبر من أقصى طول للقطعة", + "rules": "قواعد المعالجة المسبقة للنص", + "removeExtraSpaces": "استبدال المسافات المتتالية والأسطر الجديدة وعلامات الجدولة", + "removeUrlEmails": "حذف جميع عناوين URL وعناوين البريد الإلكتروني", + "removeStopwords": "إزالة كلمات التوقف مثل \"a\", \"an\", \"the\"", + "preview": "معاينة", + "previewChunk": "معاينة القطعة", + "reset": "إعادة تعيين", + "indexMode": "طريقة الفهرسة", + "qualified": "عالية الجودة", + "highQualityTip": "بمجرد الانتهاء من التضمين في وضع الجودة العالية، لا يتوفر الرجوع إلى الوضع الاقتصادي.", + "recommend": "نوصي", + "qualifiedTip": "يساعد استدعاء نموذج التضمين لمعالجة المستندات من أجل استرجاع أكثر دقة LLM على إنشاء إجابات عالية الجودة.", + "warning": "يرجى إعداد مفتاح API لمزود النموذج أولاً.", + "click": "الذهاب إلى الإعدادات", + "economical": "اقتصادي", + "economicalTip": "استخدام 10 كلمات رئيسية لكل قطعة للاسترجاع، لا يتم استهلاك أي رموز على حساب تقليل دقة الاسترجاع.", + "QATitle": "التقسيم بتنسيق سؤال وجواب", + "QATip": "سيؤدي تمكين هذا الخيار إلى استهلاك المزيد من الرموز", + "QALanguage": "التقسيم باستخدام", + "useQALanguage": "تقطيع بتنسيق سؤال وجواب في", + "estimateCost": "تقدير", + "estimateSegment": "القطع المقدرة", + "segmentCount": "قطع", + "calculating": "جارٍ الحساب...", + "fileSource": "معالجة المستندات مسبقًا", + "notionSource": "معالجة الصفحات مسبقًا", + "websiteSource": "معالجة الموقع مسبقًا", + "other": "وغيرها ", + "fileUnit": " ملفات", + "notionUnit": " صفحات", + "webpageUnit": " صفحات", + "previousStep": "الخطوة السابقة", + "nextStep": "حفظ ومعالجة", + "save": "حفظ ومعالجة", + "cancel": "إلغاء", + "sideTipTitle": "لماذا التقطيع والمعالجة المسبقة؟", + "sideTipP1": "عند معالجة البيانات النصية، يعد التقطيع والتنظيف خطوتين مهمتين للمعالجة المسبقة.", + "sideTipP2": "يقسم التقسيم النص الطويل إلى فقرات حتى تتمكن النماذج من فهمه بشكل أفضل. هذا يحسن جودة وصلة نتائج النموذج.", + "sideTipP3": "يزيل التنظيف الأحرف والتنسيقات غير الضرورية، مما يجعل المعرفة أنظف وأسهل في التحليل.", + "sideTipP4": "يؤدي التقطيع والتنظيف السليمتان إلى تحسين أداء النموذج، مما يوفر نتائج أكثر دقة وقيمة.", + "previewTitle": "معاينة", + "previewTitleButton": "معاينة", + "previewButton": "التبديل إلى تنسيق سؤال وجواب", + "previewSwitchTipStart": "معاينة القطعة الحالية بتنسيق نصي، وسيؤدي التبديل إلى معاينة تنسيق سؤال وجواب إلى", + "previewSwitchTipEnd": " استهلاك رموز إضافية", + "characters": "أحرف", + "indexSettingTip": "لتغيير طريقة الفهرسة ونموذج التضمين، يرجى الانتقال إلى ", + "retrievalSettingTip": "لتغيير إعداد الاسترجاع، يرجى الانتقال إلى ", + "datasetSettingLink": "إعدادات المعرفة.", + "previewChunkTip": "انقر فوق زر \"معاينة القطعة\" على اليسار لتحميل المعاينة", + "previewChunkCount": "{{count}} قطعة مقدرة", + "switch": "تبديل", + "qaSwitchHighQualityTipTitle": "يتطلب تنسيق سؤال وجواب طريقة فهرسة عالية الجودة", + "qaSwitchHighQualityTipContent": "حاليا، تدعم طريقة الفهرسة عالية الجودة فقط تقطيع تنسيق سؤال وجواب. هل ترغب في التبديل إلى وضع الجودة العالية؟", + "notAvailableForParentChild": "غير متاح لفهرس الأصل والطفل", + "notAvailableForQA": "غير متاح لفهرس الأسئلة والأجوبة", + "parentChildDelimiterTip": "المحدد هو الحرف المستخدم لفصل النص. يوصى باستخدام \\n\\n لتقسيم المستند الأصلي إلى قطع أصلية كبيرة. يمكنك أيضًا استخدام محددات خاصة محددة بنفسك.", + "parentChildChunkDelimiterTip": "المحدد هو الحرف المستخدم لفصل النص. يوصى باستخدام \\n لتقسيم القطع الأصلية إلى قطع فرعية صغيرة. يمكنك أيضًا استخدام محددات خاصة محددة بنفسك." + }, + "stepThree": { + "creationTitle": "🎉 تم إنشاء المعرفة", + "creationContent": "قمنا بتسمية المعرفة تلقائيًا، يمكنك تعديلها في أي وقت.", + "label": "اسم المعرفة", + "additionTitle": "🎉 تم تحميل المستند", + "additionP1": "تم تحميل المستند إلى المعرفة", + "additionP2": "، يمكنك العثور عليه في قائمة مستندات المعرفة.", + "stop": "إيقاف المعالجة", + "resume": "استئناف المعالجة", + "navTo": "الذهاب إلى المستند", + "sideTipTitle": "ما التالي", + "sideTipContent": "بعد الانتهاء من فهرسة المستندات، يمكنك إدارة المستندات وتعديلها، وتشغيل اختبارات الاسترجاع، وتعديل إعدادات المعرفة. يمكن بعد ذلك دمج المعرفة في تطبيقك كسياق، لذا تأكد من ضبط إعداد الاسترجاع لضمان الأداء الأمثل.", + "modelTitle": "هل أنت متأكد من إيقاف التضمين؟", + "modelContent": "إذا كنت بحاجة إلى استئناف المعالجة لاحقًا، فستستمر من حيث توقفت.", + "modelButtonConfirm": "تأكيد", + "modelButtonCancel": "إلغاء" + }, + "otherDataSource": { + "title": "الاتصال بمصادر بيانات أخرى؟", + "description": "حاليًا، تحتوي قاعدة معرفة Dify فقط على مصادر بيانات محدودة. تعد المساهمة بمصدر بيانات في قاعدة معرفة Dify طريقة رائعة للمساعدة في تعزيز مرونة النظام الأساسي وقوته لجميع المستخدمين. دليل المساهمة الخاص بنا يسهل البدء. يرجى النقر على الرابط أدناه لمعرفة المزيد.", + "learnMore": "تعرف على المزيد" + } +} diff --git a/web/i18n/ar-TN/dataset-creation.ts b/web/i18n/ar-TN/dataset-creation.ts deleted file mode 100644 index 75b9a8e4e9..0000000000 --- a/web/i18n/ar-TN/dataset-creation.ts +++ /dev/null @@ -1,217 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: 'المعرفة', - }, - one: 'مصدر البيانات', - two: 'معالجة المستندات', - three: 'التنفيذ والانتهاء', - }, - error: { - unavailable: 'هذه المعرفة غير متاحة', - }, - firecrawl: { - configFirecrawl: 'تكوين 🔥Firecrawl', - apiKeyPlaceholder: 'مفتاح API من firecrawl.dev', - getApiKeyLinkText: 'احصل على مفتاح API الخاص بك من firecrawl.dev', - }, - watercrawl: { - configWatercrawl: 'تكوين Watercrawl', - apiKeyPlaceholder: 'مفتاح API من watercrawl.dev', - getApiKeyLinkText: 'احصل على مفتاح API الخاص بك من watercrawl.dev', - }, - jinaReader: { - configJinaReader: 'تكوين Jina Reader', - apiKeyPlaceholder: 'مفتاح API من jina.ai', - getApiKeyLinkText: 'احصل على مفتاح API المجاني الخاص بك في jina.ai', - }, - stepOne: { - filePreview: 'معاينة الملف', - pagePreview: 'معاينة الصفحة', - dataSourceType: { - file: 'استيراد من ملف', - notion: 'مزامنة من Notion', - web: 'مزامنة من موقع ويب', - }, - uploader: { - title: 'تحميل ملف', - button: 'اسحب وأفلت الملف أو المجلد، أو', - buttonSingleFile: 'اسحب وأفلت الملف، أو', - browse: 'تصفح', - tip: 'يدعم {{supportTypes}}. بحد أقصى {{batchCount}} في الدفعة الواحدة و {{size}} ميجابايت لكل منها. الحد الأقصى الإجمالي {{totalCount}} ملفات.', - validation: { - typeError: 'نوع الملف غير مدعوم', - size: 'الملف كبير جدًا. الحد الأقصى هو {{size}} ميجابايت', - count: 'ملفات متعددة غير مدعومة', - filesNumber: 'لقد وصلت إلى حد تحميل الدفعة البالغ {{filesNumber}}.', - }, - cancel: 'إلغاء', - change: 'تغيير', - failed: 'فشل التحميل', - }, - notionSyncTitle: 'Notion غير متصل', - notionSyncTip: 'للمزامنة مع Notion، يجب إنشاء اتصال بـ Notion أولاً.', - connect: 'الذهاب للاتصال', - cancel: 'إلغاء', - button: 'التالي', - emptyDatasetCreation: 'أريد إنشاء معرفة فارغة', - modal: { - title: 'إنشاء معرفة فارغة', - tip: 'لن تحتوي المعرفة الفارغة على أي مستندات، ويمكنك تحميل المستندات في أي وقت.', - input: 'اسم المعرفة', - placeholder: 'يرجى الإدخال', - nameNotEmpty: 'لا يمكن أن يكون الاسم فارغًا', - nameLengthInvalid: 'يجب أن يكون الاسم بين 1 إلى 40 حرفًا', - cancelButton: 'إلغاء', - confirmButton: 'إنشاء', - failed: 'فشل الإنشاء', - }, - website: { - chooseProvider: 'اختر مزودًا', - fireCrawlNotConfigured: 'Firecrawl غير مكون', - fireCrawlNotConfiguredDescription: 'قم بتكوين Firecrawl باستخدام مفتاح API لاستخدامه.', - jinaReaderNotConfigured: 'Jina Reader غير مكون', - jinaReaderNotConfiguredDescription: 'قم بإعداد Jina Reader عن طريق إدخال مفتاح API المجاني للوصول.', - waterCrawlNotConfigured: 'Watercrawl غير مكون', - waterCrawlNotConfiguredDescription: 'قم بتكوين Watercrawl باستخدام مفتاح API لاستخدامه.', - configure: 'تكوين', - configureFirecrawl: 'تكوين Firecrawl', - configureWatercrawl: 'تكوين Watercrawl', - configureJinaReader: 'تكوين Jina Reader', - run: 'تشغيل', - running: 'جارٍ التشغيل', - firecrawlTitle: 'استخراج محتوى الويب باستخدام 🔥Firecrawl', - firecrawlDoc: 'مستندات Firecrawl', - watercrawlTitle: 'استخراج محتوى الويب باستخدام Watercrawl', - watercrawlDoc: 'مستندات Watercrawl', - jinaReaderTitle: 'تحويل الموقع بالكامل إلى Markdown', - jinaReaderDoc: 'تعرف على المزيد حول Jina Reader', - jinaReaderDocLink: 'https://jina.ai/reader', - useSitemap: 'استخدام خريطة الموقع', - useSitemapTooltip: 'اتبع خريطة الموقع للزحف إلى الموقع. إذا لم يكن كذلك، سيقوم Jina Reader بالزحف بشكل متكرر بناءً على صلة الصفحة، مما يؤدي إلى صفحات أقل ولكن بجودة أعلى.', - options: 'خيارات', - crawlSubPage: 'الزحف إلى الصفحات الفرعية', - limit: 'الحد', - maxDepth: 'أقصى عمق', - excludePaths: 'استبعاد المسارات', - includeOnlyPaths: 'تضمين المسارات فقط', - extractOnlyMainContent: 'استخراج المحتوى الرئيسي فقط (بدون رؤوس، قوائم تنقل، تذييلات، إلخ.)', - exceptionErrorTitle: 'حدث استثناء أثناء تشغيل مهمة الزحف:', - unknownError: 'خطأ غير معروف', - totalPageScraped: 'إجمالي الصفحات التي تم كشطها:', - selectAll: 'تحديد الكل', - resetAll: 'إعادة تعيين الكل', - scrapTimeInfo: 'تم كشط {{total}} صفحة في المجموع خلال {{time}} ثانية', - preview: 'معاينة', - maxDepthTooltip: 'أقصى عمق للزحف بالنسبة لعنوان URL المدخل. العمق 0 يكشط فقط صفحة عنوان URL المدخل، العمق 1 يكشط عنوان URL وكل شيء بعد عنوان URL المدخل + / واحد، وهكذا.', - }, - }, - stepTwo: { - segmentation: 'إعدادات القطعة', - auto: 'تلقائي', - autoDescription: 'تحديد القواعد والتقطيع والمعالجة المسبقة تلقائيًا. يوصى به للمستخدمين غير المألوفين.', - custom: 'مخصص', - customDescription: 'تخصيص قواعد القطع وطول القطع وقواعد المعالجة المسبقة، إلخ.', - general: 'عام', - generalTip: 'وضع تقطيع النص العام، القطع المسترجعة والمستردة هي نفسها.', - parentChild: 'الأصل والطفل', - parentChildTip: 'عند استخدام وضع الأصل والطفل، يتم استخدام القطعة الفرعية للاسترجاع ويتم استخدام القطعة الأصلية للاستدعاء كسياق.', - parentChunkForContext: 'القطعة الأصلية للسياق', - childChunkForRetrieval: 'القطعة الفرعية للاسترجاع', - paragraph: 'فقرة', - paragraphTip: 'يقسم هذا الوضع النص إلى فقرات بناءً على المحددات وأقصى طول للقطعة، باستخدام النص المقسم كقطعة أصلية للاسترجاع.', - fullDoc: 'مستند كامل', - fullDocTip: 'يتم استخدام المستند بأكمله كقطعة أصلية ويتم استرجاعه مباشرة. يرجى ملاحظة أنه لأسباب تتعلق بالأداء، سيتم اقتطاع النص الذي يتجاوز 10000 رمز تلقائيًا.', - qaTip: 'عند استخدام بيانات الأسئلة والأجوبة المهيكلة، يمكنك إنشاء مستندات تقرن الأسئلة بالأجوبة. يتم فهرسة هذه المستندات بناءً على جزء السؤال، مما يسمح للنظام باسترجاع الإجابات ذات الصلة بناءً على تشابه الاستعلام.', - separator: 'محدد', - separatorTip: 'المحدد هو الحرف المستخدم لفصل النص. \\n\\n و \\n هي محددات شائعة الاستخدام لفصل الفقرات والأسطر. جنبًا إلى جنب مع الفواصل (\\n\\n,\\n)، سيتم تقسيم الفقرات حسب الأسطر عند تجاوز الحد الأقصى لطول القطعة. يمكنك أيضًا استخدام محددات خاصة محددة بنفسك (مثل ***).', - separatorPlaceholder: '\\n\\n للفقرات؛ \\n للأسطر', - maxLength: 'أقصى طول للقطعة', - maxLengthCheck: 'يجب أن يكون أقصى طول للقطعة أقل من {{limit}}', - overlap: 'تداخل القطعة', - overlapTip: 'يمكن أن يؤدي تعيين تداخل القطعة إلى الحفاظ على الصلة الدلالية بينها، مما يعزز تأثير الاسترجاع. يوصى بتعيين 10٪ -25٪ من الحد الأقصى لحجم القطعة.', - overlapCheck: 'يجب ألا يكون تداخل القطعة أكبر من أقصى طول للقطعة', - rules: 'قواعد المعالجة المسبقة للنص', - removeExtraSpaces: 'استبدال المسافات المتتالية والأسطر الجديدة وعلامات الجدولة', - removeUrlEmails: 'حذف جميع عناوين URL وعناوين البريد الإلكتروني', - removeStopwords: 'إزالة كلمات التوقف مثل "a", "an", "the"', - preview: 'معاينة', - previewChunk: 'معاينة القطعة', - reset: 'إعادة تعيين', - indexMode: 'طريقة الفهرسة', - qualified: 'عالية الجودة', - highQualityTip: 'بمجرد الانتهاء من التضمين في وضع الجودة العالية، لا يتوفر الرجوع إلى الوضع الاقتصادي.', - recommend: 'نوصي', - qualifiedTip: 'يساعد استدعاء نموذج التضمين لمعالجة المستندات من أجل استرجاع أكثر دقة LLM على إنشاء إجابات عالية الجودة.', - warning: 'يرجى إعداد مفتاح API لمزود النموذج أولاً.', - click: 'الذهاب إلى الإعدادات', - economical: 'اقتصادي', - economicalTip: 'استخدام 10 كلمات رئيسية لكل قطعة للاسترجاع، لا يتم استهلاك أي رموز على حساب تقليل دقة الاسترجاع.', - QATitle: 'التقسيم بتنسيق سؤال وجواب', - QATip: 'سيؤدي تمكين هذا الخيار إلى استهلاك المزيد من الرموز', - QALanguage: 'التقسيم باستخدام', - useQALanguage: 'تقطيع بتنسيق سؤال وجواب في', - estimateCost: 'تقدير', - estimateSegment: 'القطع المقدرة', - segmentCount: 'قطع', - calculating: 'جارٍ الحساب...', - fileSource: 'معالجة المستندات مسبقًا', - notionSource: 'معالجة الصفحات مسبقًا', - websiteSource: 'معالجة الموقع مسبقًا', - other: 'وغيرها ', - fileUnit: ' ملفات', - notionUnit: ' صفحات', - webpageUnit: ' صفحات', - previousStep: 'الخطوة السابقة', - nextStep: 'حفظ ومعالجة', - save: 'حفظ ومعالجة', - cancel: 'إلغاء', - sideTipTitle: 'لماذا التقطيع والمعالجة المسبقة؟', - sideTipP1: 'عند معالجة البيانات النصية، يعد التقطيع والتنظيف خطوتين مهمتين للمعالجة المسبقة.', - sideTipP2: 'يقسم التقسيم النص الطويل إلى فقرات حتى تتمكن النماذج من فهمه بشكل أفضل. هذا يحسن جودة وصلة نتائج النموذج.', - sideTipP3: 'يزيل التنظيف الأحرف والتنسيقات غير الضرورية، مما يجعل المعرفة أنظف وأسهل في التحليل.', - sideTipP4: 'يؤدي التقطيع والتنظيف السليمتان إلى تحسين أداء النموذج، مما يوفر نتائج أكثر دقة وقيمة.', - previewTitle: 'معاينة', - previewTitleButton: 'معاينة', - previewButton: 'التبديل إلى تنسيق سؤال وجواب', - previewSwitchTipStart: 'معاينة القطعة الحالية بتنسيق نصي، وسيؤدي التبديل إلى معاينة تنسيق سؤال وجواب إلى', - previewSwitchTipEnd: ' استهلاك رموز إضافية', - characters: 'أحرف', - indexSettingTip: 'لتغيير طريقة الفهرسة ونموذج التضمين، يرجى الانتقال إلى ', - retrievalSettingTip: 'لتغيير إعداد الاسترجاع، يرجى الانتقال إلى ', - datasetSettingLink: 'إعدادات المعرفة.', - previewChunkTip: 'انقر فوق زر "معاينة القطعة" على اليسار لتحميل المعاينة', - previewChunkCount: '{{count}} قطعة مقدرة', - switch: 'تبديل', - qaSwitchHighQualityTipTitle: 'يتطلب تنسيق سؤال وجواب طريقة فهرسة عالية الجودة', - qaSwitchHighQualityTipContent: 'حاليا، تدعم طريقة الفهرسة عالية الجودة فقط تقطيع تنسيق سؤال وجواب. هل ترغب في التبديل إلى وضع الجودة العالية؟', - notAvailableForParentChild: 'غير متاح لفهرس الأصل والطفل', - notAvailableForQA: 'غير متاح لفهرس الأسئلة والأجوبة', - parentChildDelimiterTip: 'المحدد هو الحرف المستخدم لفصل النص. يوصى باستخدام \\n\\n لتقسيم المستند الأصلي إلى قطع أصلية كبيرة. يمكنك أيضًا استخدام محددات خاصة محددة بنفسك.', - parentChildChunkDelimiterTip: 'المحدد هو الحرف المستخدم لفصل النص. يوصى باستخدام \\n لتقسيم القطع الأصلية إلى قطع فرعية صغيرة. يمكنك أيضًا استخدام محددات خاصة محددة بنفسك.', - }, - stepThree: { - creationTitle: '🎉 تم إنشاء المعرفة', - creationContent: 'قمنا بتسمية المعرفة تلقائيًا، يمكنك تعديلها في أي وقت.', - label: 'اسم المعرفة', - additionTitle: '🎉 تم تحميل المستند', - additionP1: 'تم تحميل المستند إلى المعرفة', - additionP2: '، يمكنك العثور عليه في قائمة مستندات المعرفة.', - stop: 'إيقاف المعالجة', - resume: 'استئناف المعالجة', - navTo: 'الذهاب إلى المستند', - sideTipTitle: 'ما التالي', - sideTipContent: 'بعد الانتهاء من فهرسة المستندات، يمكنك إدارة المستندات وتعديلها، وتشغيل اختبارات الاسترجاع، وتعديل إعدادات المعرفة. يمكن بعد ذلك دمج المعرفة في تطبيقك كسياق، لذا تأكد من ضبط إعداد الاسترجاع لضمان الأداء الأمثل.', - modelTitle: 'هل أنت متأكد من إيقاف التضمين؟', - modelContent: 'إذا كنت بحاجة إلى استئناف المعالجة لاحقًا، فستستمر من حيث توقفت.', - modelButtonConfirm: 'تأكيد', - modelButtonCancel: 'إلغاء', - }, - otherDataSource: { - title: 'الاتصال بمصادر بيانات أخرى؟', - description: 'حاليًا، تحتوي قاعدة معرفة Dify فقط على مصادر بيانات محدودة. تعد المساهمة بمصدر بيانات في قاعدة معرفة Dify طريقة رائعة للمساعدة في تعزيز مرونة النظام الأساسي وقوته لجميع المستخدمين. دليل المساهمة الخاص بنا يسهل البدء. يرجى النقر على الرابط أدناه لمعرفة المزيد.', - learnMore: 'تعرف على المزيد', - }, -} - -export default translation diff --git a/web/i18n/ar-TN/dataset-documents.json b/web/i18n/ar-TN/dataset-documents.json new file mode 100644 index 0000000000..514c478a83 --- /dev/null +++ b/web/i18n/ar-TN/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "المستندات", + "desc": "يتم عرض جميع ملفات المعرفة هنا، ويمكن ربط المعرفة بأكملها باقتباسات Dify أو فهرستها عبر مكون الدردشة الإضافي.", + "learnMore": "تعرف على المزيد", + "addFile": "إضافة ملف", + "addPages": "إضافة صفحات", + "addUrl": "إضافة عنوان URL", + "table": { + "header": { + "fileName": "الاسم", + "chunkingMode": "وضع التقطيع", + "words": "الكلمات", + "hitCount": "عدد الاسترجاع", + "uploadTime": "وقت التحميل", + "status": "الحالة", + "action": "إجراء" + }, + "rename": "إعادة تسمية", + "name": "الاسم" + }, + "action": { + "uploadFile": "تحميل ملف جديد", + "settings": "إعدادات التقطيع", + "addButton": "إضافة قطعة", + "add": "إضافة قطعة", + "batchAdd": "إضافة دفعة", + "archive": "أرشيف", + "unarchive": "إلغاء الأرشفة", + "delete": "حذف", + "enableWarning": "لا يمكن تمكين الملف المؤرشف", + "sync": "مزامنة", + "pause": "إيقاف مؤقت", + "resume": "استئناف" + }, + "index": { + "enable": "تمكين", + "disable": "تعطيل", + "all": "الكل", + "enableTip": "يمكن فهرسة الملف", + "disableTip": "لا يمكن فهرسة الملف" + }, + "sort": { + "uploadTime": "وقت التحميل", + "hitCount": "عدد الاسترجاع" + }, + "status": { + "queuing": "في الانتظار", + "indexing": "فهرسة", + "paused": "متوقف مؤقتًا", + "error": "خطأ", + "available": "متاح", + "enabled": "ممكن", + "disabled": "معطل", + "archived": "مؤرشف" + }, + "empty": { + "title": "لا يوجد وثائق بعد", + "upload": { + "tip": "يمكنك تحميل الملفات، والمزامنة من الموقع، أو من تطبيقات الويب مثل Notion و GitHub، إلخ." + }, + "sync": { + "tip": "سيقوم Dify بتنزيل الملفات بشكل دوري من Notion وإكمال المعالجة." + } + }, + "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": "يسمح تصنيف البيانات الوصفية للمستندات للذكاء الاصطناعي بالوصول إليها في الوقت المناسب ويكشف مصدر المراجع للمستخدمين.", + "dateTimeFormat": "MMMM D, YYYY hh:mm A", + "docTypeSelectTitle": "يرجى تحديد نوع المستند", + "docTypeChangeTitle": "تغيير نوع المستند", + "docTypeSelectWarning": "إذا تم تغيير نوع المستند، فلن يتم الاحتفاظ بالبيانات الوصفية المملوءة الآن", + "firstMetaAction": "هيا بنا", + "placeholder": { + "add": "إضافة ", + "select": "تحديد " + }, + "source": { + "upload_file": "تحميل الملف", + "notion": "مزامنة من Notion", + "github": "مزامنة من Github", + "local_file": "ملف محلي", + "website_crawl": "زحف الموقع", + "online_document": "مستند عبر الإنترنت" + }, + "type": { + "book": "كتاب", + "webPage": "صفحة ويب", + "paper": "ورقة بحثية", + "socialMediaPost": "منشور وسائل التواصل الاجتماعي", + "personalDocument": "مستند شخصي", + "businessDocument": "مستند أعمال", + "IMChat": "دردشة فورية", + "wikipediaEntry": "إدخال ويكيبيديا", + "notion": "مزامنة من Notion", + "github": "مزامنة من Github", + "technicalParameters": "المعلمات الفنية" + }, + "field": { + "processRule": { + "processDoc": "معالجة المستند", + "segmentRule": "قاعدة القطع", + "segmentLength": "طول القطع", + "processClean": "تنظيف عملية النص" + }, + "book": { + "title": "العنوان", + "language": "اللغة", + "author": "المؤلف", + "publisher": "الناشر", + "publicationDate": "تاريخ النشر", + "ISBN": "ISBN", + "category": "الفئة" + }, + "webPage": { + "title": "العنوان", + "url": "عنوان URL", + "language": "اللغة", + "authorPublisher": "المؤلف/الناشر", + "publishDate": "تاريخ النشر", + "topicKeywords": "الموضوع/الكلمات الرئيسية", + "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": { + "waiting": "انتظار التضمين...", + "processing": "معالجة التضمين...", + "paused": "تم إيقاف التضمين مؤقتًا", + "completed": "اكتمل التضمين", + "error": "خطأ في التضمين", + "docName": "مستند المعالجة المسبقة", + "mode": "إعداد التقطيع", + "segmentLength": "أقصى طول للقطعة", + "textCleaning": "قواعد المعالجة المسبقة للنص", + "segments": "الفقرات", + "highQuality": "وضع عالي الجودة", + "economy": "الوضع الاقتصادي", + "estimate": "الاستهلاك المقدر", + "stop": "إيقاف المعالجة", + "pause": "إيقاف مؤقت", + "resume": "استئناف", + "automatic": "تلقائي", + "custom": "مخصص", + "hierarchical": "الأصل والطفل", + "previewTip": "ستتوفر معاينة الفقرة بعد اكتمال التضمين", + "parentMaxTokens": "الأصل", + "childMaxTokens": "الطفل" + }, + "segment": { + "paragraphs": "الفقرات", + "chunks_one": "قطعة", + "chunks_other": "قطع", + "parentChunks_one": "قطعة أصلية", + "parentChunks_other": "قطع أصلية", + "childChunks_one": "قطعة فرعية", + "childChunks_other": "قطع فرعية", + "searchResults_zero": "نتيجة", + "searchResults_one": "نتيجة", + "searchResults_other": "نتائج", + "empty": "لم يتم العثور على أي قطعة", + "clearFilter": "مسح التصفية", + "chunk": "قطعة", + "parentChunk": "قطعة أصلية", + "newChunk": "قطعة جديدة", + "childChunk": "قطعة فرعية", + "newChildChunk": "قطعة فرعية جديدة", + "keywords": "كلمات رئيسية", + "addKeyWord": "إضافة كلمة رئيسية", + "keywordEmpty": "لا يمكن أن تكون الكلمة الرئيسية فارغة", + "keywordError": "الحد الأقصى لطول الكلمة الرئيسية هو 20", + "keywordDuplicate": "الكلمة الرئيسية موجودة بالفعل", + "characters_one": "حرف", + "characters_other": "أحرف", + "hitCount": "عدد الاسترجاع", + "vectorHash": "تجزئة المتجه: ", + "questionPlaceholder": "أضف السؤال هنا", + "questionEmpty": "لا يمكن أن يكون السؤال فارغًا", + "answerPlaceholder": "أضف الإجابة هنا", + "answerEmpty": "لا يمكن أن تكون الإجابة فارغة", + "contentPlaceholder": "أضف المحتوى هنا", + "contentEmpty": "لا يمكن أن يكون المحتوى فارغًا", + "newTextSegment": "قطعة نصية جديدة", + "newQaSegment": "قطعة سؤال وجواب جديدة", + "addChunk": "إضافة قطعة", + "addChildChunk": "إضافة قطعة فرعية", + "addAnother": "إضافة أخرى", + "delete": "حذف هذه القطعة؟", + "chunkAdded": "تم إضافة قطعة واحدة", + "childChunkAdded": "تم إضافة قطعة فرعية واحدة", + "editChunk": "تعديل القطعة", + "editParentChunk": "تعديل القطعة الأصلية", + "editChildChunk": "تعديل القطعة الفرعية", + "chunkDetail": "تفاصيل القطعة", + "regenerationConfirmTitle": "هل تريد إعادة إنشاء القطع الفرعية؟", + "regenerationConfirmMessage": "سوف تؤدي إعادة إنشاء القطع الفرعية إلى استبدال القطع الفرعية الحالية، بما في ذلك القطع المعدلة والقطع المضافة حديثًا. لا يمكن التراجع عن إعادة الإنشاء.", + "regeneratingTitle": "إعادة إنشاء القطع الفرعية", + "regeneratingMessage": "قد يستغرق هذا لحظة، يرجى الانتظار...", + "regenerationSuccessTitle": "اكتملت إعادة الإنشاء", + "regenerationSuccessMessage": "يمكنك إغلاق هذه النافذة.", + "edited": "معدل", + "editedAt": "تم التعديل في", + "dateTimeFormat": "MM/DD/YYYY h:mm", + "expandChunks": "توسيع القطع", + "collapseChunks": "طي القطع", + "allFilesUploaded": "يجب تحميل جميع الملفات قبل الحفظ" + } +} diff --git a/web/i18n/ar-TN/dataset-documents.ts b/web/i18n/ar-TN/dataset-documents.ts deleted file mode 100644 index 338e6cfc6c..0000000000 --- a/web/i18n/ar-TN/dataset-documents.ts +++ /dev/null @@ -1,408 +0,0 @@ -const translation = { - list: { - title: 'المستندات', - desc: 'يتم عرض جميع ملفات المعرفة هنا، ويمكن ربط المعرفة بأكملها باقتباسات Dify أو فهرستها عبر مكون الدردشة الإضافي.', - learnMore: 'تعرف على المزيد', - addFile: 'إضافة ملف', - addPages: 'إضافة صفحات', - addUrl: 'إضافة عنوان URL', - table: { - header: { - fileName: 'الاسم', - chunkingMode: 'وضع التقطيع', - words: 'الكلمات', - hitCount: 'عدد الاسترجاع', - uploadTime: 'وقت التحميل', - status: 'الحالة', - action: 'إجراء', - }, - rename: 'إعادة تسمية', - name: 'الاسم', - }, - action: { - uploadFile: 'تحميل ملف جديد', - settings: 'إعدادات التقطيع', - addButton: 'إضافة قطعة', - add: 'إضافة قطعة', - batchAdd: 'إضافة دفعة', - archive: 'أرشيف', - unarchive: 'إلغاء الأرشفة', - delete: 'حذف', - enableWarning: 'لا يمكن تمكين الملف المؤرشف', - sync: 'مزامنة', - pause: 'إيقاف مؤقت', - resume: 'استئناف', - }, - index: { - enable: 'تمكين', - disable: 'تعطيل', - all: 'الكل', - enableTip: 'يمكن فهرسة الملف', - disableTip: 'لا يمكن فهرسة الملف', - }, - sort: { - uploadTime: 'وقت التحميل', - hitCount: 'عدد الاسترجاع', - }, - status: { - queuing: 'في الانتظار', - indexing: 'فهرسة', - paused: 'متوقف مؤقتًا', - error: 'خطأ', - available: 'متاح', - enabled: 'ممكن', - disabled: 'معطل', - archived: 'مؤرشف', - }, - empty: { - title: 'لا يوجد وثائق بعد', - upload: { - tip: 'يمكنك تحميل الملفات، والمزامنة من الموقع، أو من تطبيقات الويب مثل Notion و GitHub، إلخ.', - }, - sync: { - tip: 'سيقوم Dify بتنزيل الملفات بشكل دوري من Notion وإكمال المعالجة.', - }, - }, - 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: 'يسمح تصنيف البيانات الوصفية للمستندات للذكاء الاصطناعي بالوصول إليها في الوقت المناسب ويكشف مصدر المراجع للمستخدمين.', - dateTimeFormat: 'MMMM D, YYYY hh:mm A', - docTypeSelectTitle: 'يرجى تحديد نوع المستند', - docTypeChangeTitle: 'تغيير نوع المستند', - docTypeSelectWarning: - 'إذا تم تغيير نوع المستند، فلن يتم الاحتفاظ بالبيانات الوصفية المملوءة الآن', - firstMetaAction: 'هيا بنا', - placeholder: { - add: 'إضافة ', - select: 'تحديد ', - }, - source: { - upload_file: 'تحميل الملف', - notion: 'مزامنة من Notion', - github: 'مزامنة من Github', - local_file: 'ملف محلي', - website_crawl: 'زحف الموقع', - online_document: 'مستند عبر الإنترنت', - }, - type: { - book: 'كتاب', - webPage: 'صفحة ويب', - paper: 'ورقة بحثية', - socialMediaPost: 'منشور وسائل التواصل الاجتماعي', - personalDocument: 'مستند شخصي', - businessDocument: 'مستند أعمال', - IMChat: 'دردشة فورية', - wikipediaEntry: 'إدخال ويكيبيديا', - notion: 'مزامنة من Notion', - github: 'مزامنة من Github', - technicalParameters: 'المعلمات الفنية', - }, - field: { - processRule: { - processDoc: 'معالجة المستند', - segmentRule: 'قاعدة القطع', - segmentLength: 'طول القطع', - processClean: 'تنظيف عملية النص', - }, - book: { - title: 'العنوان', - language: 'اللغة', - author: 'المؤلف', - publisher: 'الناشر', - publicationDate: 'تاريخ النشر', - ISBN: 'ISBN', - category: 'الفئة', - }, - webPage: { - title: 'العنوان', - url: 'عنوان URL', - language: 'اللغة', - authorPublisher: 'المؤلف/الناشر', - publishDate: 'تاريخ النشر', - topicKeywords: 'الموضوع/الكلمات الرئيسية', - 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: { - waiting: 'انتظار التضمين...', - processing: 'معالجة التضمين...', - paused: 'تم إيقاف التضمين مؤقتًا', - completed: 'اكتمل التضمين', - error: 'خطأ في التضمين', - docName: 'مستند المعالجة المسبقة', - mode: 'إعداد التقطيع', - segmentLength: 'أقصى طول للقطعة', - textCleaning: 'قواعد المعالجة المسبقة للنص', - segments: 'الفقرات', - highQuality: 'وضع عالي الجودة', - economy: 'الوضع الاقتصادي', - estimate: 'الاستهلاك المقدر', - stop: 'إيقاف المعالجة', - pause: 'إيقاف مؤقت', - resume: 'استئناف', - automatic: 'تلقائي', - custom: 'مخصص', - hierarchical: 'الأصل والطفل', - previewTip: 'ستتوفر معاينة الفقرة بعد اكتمال التضمين', - parentMaxTokens: 'الأصل', - childMaxTokens: 'الطفل', - }, - segment: { - paragraphs: 'الفقرات', - chunks_one: 'قطعة', - chunks_other: 'قطع', - parentChunks_one: 'قطعة أصلية', - parentChunks_other: 'قطع أصلية', - childChunks_one: 'قطعة فرعية', - childChunks_other: 'قطع فرعية', - searchResults_zero: 'نتيجة', - searchResults_one: 'نتيجة', - searchResults_other: 'نتائج', - empty: 'لم يتم العثور على أي قطعة', - clearFilter: 'مسح التصفية', - chunk: 'قطعة', - parentChunk: 'قطعة أصلية', - newChunk: 'قطعة جديدة', - childChunk: 'قطعة فرعية', - newChildChunk: 'قطعة فرعية جديدة', - keywords: 'كلمات رئيسية', - addKeyWord: 'إضافة كلمة رئيسية', - keywordEmpty: 'لا يمكن أن تكون الكلمة الرئيسية فارغة', - keywordError: 'الحد الأقصى لطول الكلمة الرئيسية هو 20', - keywordDuplicate: 'الكلمة الرئيسية موجودة بالفعل', - characters_one: 'حرف', - characters_other: 'أحرف', - hitCount: 'عدد الاسترجاع', - vectorHash: 'تجزئة المتجه: ', - questionPlaceholder: 'أضف السؤال هنا', - questionEmpty: 'لا يمكن أن يكون السؤال فارغًا', - answerPlaceholder: 'أضف الإجابة هنا', - answerEmpty: 'لا يمكن أن تكون الإجابة فارغة', - contentPlaceholder: 'أضف المحتوى هنا', - contentEmpty: 'لا يمكن أن يكون المحتوى فارغًا', - newTextSegment: 'قطعة نصية جديدة', - newQaSegment: 'قطعة سؤال وجواب جديدة', - addChunk: 'إضافة قطعة', - addChildChunk: 'إضافة قطعة فرعية', - addAnother: 'إضافة أخرى', - delete: 'حذف هذه القطعة؟', - chunkAdded: 'تم إضافة قطعة واحدة', - childChunkAdded: 'تم إضافة قطعة فرعية واحدة', - editChunk: 'تعديل القطعة', - editParentChunk: 'تعديل القطعة الأصلية', - editChildChunk: 'تعديل القطعة الفرعية', - chunkDetail: 'تفاصيل القطعة', - regenerationConfirmTitle: 'هل تريد إعادة إنشاء القطع الفرعية؟', - regenerationConfirmMessage: 'سوف تؤدي إعادة إنشاء القطع الفرعية إلى استبدال القطع الفرعية الحالية، بما في ذلك القطع المعدلة والقطع المضافة حديثًا. لا يمكن التراجع عن إعادة الإنشاء.', - regeneratingTitle: 'إعادة إنشاء القطع الفرعية', - regeneratingMessage: 'قد يستغرق هذا لحظة، يرجى الانتظار...', - regenerationSuccessTitle: 'اكتملت إعادة الإنشاء', - regenerationSuccessMessage: 'يمكنك إغلاق هذه النافذة.', - edited: 'معدل', - editedAt: 'تم التعديل في', - dateTimeFormat: 'MM/DD/YYYY h:mm', - expandChunks: 'توسيع القطع', - collapseChunks: 'طي القطع', - allFilesUploaded: 'يجب تحميل جميع الملفات قبل الحفظ', - }, -} - -export default translation diff --git a/web/i18n/ar-TN/dataset-hit-testing.json b/web/i18n/ar-TN/dataset-hit-testing.json new file mode 100644 index 0000000000..51f3193ac3 --- /dev/null +++ b/web/i18n/ar-TN/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "اختبار الاسترجاع", + "settingTitle": "إعداد الاسترجاع", + "desc": "اختبار تأثير مطابقة المعرفة بناءً على نص الاستعلام المقدم.", + "dateTimeFormat": "MM/DD/YYYY hh:mm A", + "records": "سجلات", + "table": { + "header": { + "source": "المصدر", + "time": "وقت", + "queryContent": "محتوى الاستعلام" + } + }, + "input": { + "title": "النص المصدر", + "placeholder": "يرجى إدخال نص، ويوصى بجملة تعريفية قصيرة.", + "countWarning": "ما يصل إلى 200 حرف.", + "indexWarning": "معرفة عالية الجودة فقط.", + "testing": "اختبار" + }, + "hit": { + "title": "{{num}} قطع مسترجعة", + "emptyTip": "ستظهر نتائج اختبار الاسترجاع هنا" + }, + "noRecentTip": "لا توجد نتائج استعلام حديثة هنا", + "viewChart": "عرض مخطط VECTOR", + "viewDetail": "عرض التفاصيل", + "chunkDetail": "تفاصيل المقطع", + "hitChunks": "إصابة {{num}} مقاطع فرعية", + "open": "فتح", + "keyword": "الكلمات الرئيسية", + "imageUploader": { + "tip": "قم بتحميل الصور أو إسقاطها (الحد الأقصى {{batchCount}}، {{size}} ميغابايت لكل صورة)", + "tooltip": "رفع الصور (الحد الأقصى {{batchCount}}، {{size}} ميغابايت لكل صورة)", + "dropZoneTip": "اسحب الملف هنا للتحميل", + "singleChunkAttachmentLimitTooltip": "لا يمكن أن يتجاوز عدد المرفقات ذات القطعة الواحدة {{limit}}" + } +} diff --git a/web/i18n/ar-TN/dataset-hit-testing.ts b/web/i18n/ar-TN/dataset-hit-testing.ts deleted file mode 100644 index 6ab56480a7..0000000000 --- a/web/i18n/ar-TN/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - title: 'اختبار الاسترجاع', - settingTitle: 'إعداد الاسترجاع', - desc: 'اختبار تأثير مطابقة المعرفة بناءً على نص الاستعلام المقدم.', - dateTimeFormat: 'MM/DD/YYYY hh:mm A', - records: 'سجلات', - table: { - header: { - source: 'المصدر', - time: 'وقت', - queryContent: 'محتوى الاستعلام', - }, - }, - input: { - title: 'النص المصدر', - placeholder: 'يرجى إدخال نص، ويوصى بجملة تعريفية قصيرة.', - countWarning: 'ما يصل إلى 200 حرف.', - indexWarning: 'معرفة عالية الجودة فقط.', - testing: 'اختبار', - }, - hit: { - title: '{{num}} قطع مسترجعة', - emptyTip: 'ستظهر نتائج اختبار الاسترجاع هنا', - }, - noRecentTip: 'لا توجد نتائج استعلام حديثة هنا', - viewChart: 'عرض مخطط VECTOR', - viewDetail: 'عرض التفاصيل', - chunkDetail: 'تفاصيل المقطع', - hitChunks: 'إصابة {{num}} مقاطع فرعية', - open: 'فتح', - keyword: 'الكلمات الرئيسية', - imageUploader: { - tip: 'قم بتحميل الصور أو إسقاطها (الحد الأقصى {{batchCount}}، {{size}} ميغابايت لكل صورة)', - tooltip: 'رفع الصور (الحد الأقصى {{batchCount}}، {{size}} ميغابايت لكل صورة)', - dropZoneTip: 'اسحب الملف هنا للتحميل', - singleChunkAttachmentLimitTooltip: 'لا يمكن أن يتجاوز عدد المرفقات ذات القطعة الواحدة {{limit}}', - }, -} - -export default translation diff --git a/web/i18n/ar-TN/dataset-pipeline.json b/web/i18n/ar-TN/dataset-pipeline.json new file mode 100644 index 0000000000..ba794f4a10 --- /dev/null +++ b/web/i18n/ar-TN/dataset-pipeline.json @@ -0,0 +1,162 @@ +{ + "creation": { + "backToKnowledge": "العودة إلى المعرفة", + "createFromScratch": { + "title": "سير عمل معرفة فارغ", + "description": "إنشاء سير عمل مخصص من الصفر مع التحكم الكامل في معالجة البيانات وهيكلها." + }, + "importDSL": "استيراد من ملف DSL", + "createKnowledge": "إنشاء المعرفة", + "errorTip": "فشل إنشاء قاعدة المعرفة", + "successTip": "تم إنشاء قاعدة المعرفة بنجاح", + "caution": "تنبيه" + }, + "templates": { + "customized": "مخصص" + }, + "operations": { + "choose": "اختر", + "details": "التفاصيل", + "editInfo": "تعديل المعلومات", + "useTemplate": "استخدام سير عمل المعرفة هذا", + "backToDataSource": "العودة إلى مصدر البيانات", + "process": "معالجة", + "dataSource": "مصدر البيانات", + "saveAndProcess": "حفظ ومعالجة", + "preview": "معاينة", + "exportPipeline": "تصدير سير العمل", + "convert": "تحويل" + }, + "knowledgeNameAndIcon": "اسم وأيقونة المعرفة", + "knowledgeNameAndIconPlaceholder": "يرجى إدخال اسم قاعدة المعرفة", + "knowledgeDescription": "وصف المعرفة", + "knowledgeDescriptionPlaceholder": "صف ما يوجد في قاعدة المعرفة هذه. يسمح الوصف التفصيلي للذكاء الاصطناعي بالوصول إلى محتوى مجموعة البيانات بشكل أكثر دقة. إذا كان فارغًا، فسيستخدم Dify استراتيجية المطابقة الافتراضية. (اختياري)", + "knowledgePermissions": "أذونات", + "editPipelineInfo": "تعديل معلومات سير العمل", + "pipelineNameAndIcon": "اسم وأيقونة سير العمل", + "deletePipeline": { + "title": "هل أنت متأكد من حذف قالب سير العمل هذا؟", + "content": "حذف قالب سير العمل لا رجعة فيه." + }, + "publishPipeline": { + "success": { + "message": "تم نشر سير عمل المعرفة", + "tip": "الذهاب إلى المستندات لإضافة أو إدارة المستندات." + }, + "error": { + "message": "فشل نشر سير عمل المعرفة" + } + }, + "publishTemplate": { + "success": { + "message": "تم نشر قالب سير العمل", + "tip": "يمكنك استخدام هذا القالب في صفحة الإنشاء.", + "learnMore": "تعرف على المزيد" + }, + "error": { + "message": "فشل نشر قالب سير العمل" + } + }, + "exportDSL": { + "successTip": "تم تصدير DSL لسير العمل بنجاح", + "errorTip": "فشل تصدير DSL لسير العمل" + }, + "details": { + "createdBy": "بواسطة {{author}}", + "structure": "الهيكل", + "structureTooltip": "يحدد هيكل القطعة كيفية تقسيم المستندات وفهرستها - تقديم أوضاع عامة، الأصل والطفل، والأسئلة والأجوبة - وهي فريدة لكل قاعدة معرفة." + }, + "testRun": { + "title": "تشغيل اختباري", + "tooltip": "في وضع التشغيل الاختباري، يُسمح باستيراد مستند واحد فقط في كل مرة لسهولة التصحيح والملاحظة.", + "steps": { + "dataSource": "مصدر البيانات", + "documentProcessing": "معالجة المستندات" + }, + "dataSource": { + "localFiles": "الملفات المحلية" + }, + "notion": { + "title": "اختر صفحات Notion", + "docTitle": "مستندات Notion" + } + }, + "inputField": "حقل الإدخال", + "inputFieldPanel": { + "title": "حقول إدخال المستخدم", + "description": "تُستخدم حقول إدخال المستخدم لتعريف وجمع المتغيرات المطلوبة أثناء عملية تنفيذ سير العمل. يمكن للمستخدمين تخصيص نوع الحقل وتكوين قيمة الإدخال بمرونة لتلبية احتياجات مصادر البيانات المختلفة أو خطوات معالجة المستندات.", + "uniqueInputs": { + "title": "مدخلات فريدة لكل مدخل", + "tooltip": "المدخلات الفريدة يمكن الوصول إليها فقط لمصدر البيانات المحدد وعقده النهائية. لن يحتاج المستخدمون إلى تعبئتها عند اختيار مصادر بيانات أخرى. ستظهر فقط حقول الإدخال المشار إليها بواسطة متغيرات مصدر البيانات في الخطوة الأولى (مصدر البيانات). ستظهر جميع الحقول الأخرى في الخطوة الثانية (معالجة المستندات)." + }, + "globalInputs": { + "title": "مدخلات عالمية لجميع المداخل", + "tooltip": "المدخلات العالمية مشتركة عبر جميع العقد. سيحتاج المستخدمون إلى تعبئتها عند اختيار أي مصدر بيانات. على سبيل المثال، يمكن تطبيق حقول مثل المحدد والحد الأقصى لطول القطعة بشكل موحد عبر مصادر بيانات متعددة. ستظهر فقط حقول الإدخال المشار إليها بواسطة متغيرات مصدر البيانات في الخطوة الأولى (مصدر البيانات). ستظهر جميع الحقول الأخرى في الخطوة الثانية (معالجة المستندات)." + }, + "addInputField": "إضافة حقل إدخال", + "editInputField": "تعديل حقل إدخال", + "preview": { + "stepOneTitle": "مصدر البيانات", + "stepTwoTitle": "معالجة المستندات" + }, + "error": { + "variableDuplicate": "اسم المتغير موجود بالفعل. يرجى اختيار اسم مختلف." + } + }, + "addDocuments": { + "title": "إضافة مستندات", + "steps": { + "chooseDatasource": "اختر مصدر بيانات", + "processDocuments": "معالجة المستندات", + "processingDocuments": "جارٍ معالجة المستندات" + }, + "backToDataSource": "مصدر البيانات", + "stepOne": { + "preview": "معاينة" + }, + "stepTwo": { + "chunkSettings": "إعدادات القطعة", + "previewChunks": "معاينة القطع" + }, + "stepThree": { + "learnMore": "تعرف على المزيد" + }, + "characters": "أحرف", + "selectOnlineDocumentTip": "معالجة ما يصل إلى {{count}} صفحة", + "selectOnlineDriveTip": "معالجة ما يصل إلى {{count}} ملف، بحد أقصى {{fileSize}} ميجابايت لكل منها" + }, + "documentSettings": { + "title": "إعدادات المستند" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} صفحات" + }, + "onlineDrive": { + "notConnected": "{{name}} غير متصل", + "notConnectedTip": "للمزامنة مع {{name}}، يجب إنشاء اتصال بـ {{name}} أولاً.", + "breadcrumbs": { + "allBuckets": "جميع حاويات التخزين السحابية", + "allFiles": "جميع الملفات", + "searchResult": "العثور على {{searchResultsLength}} عناصر في مجلد \"{{folderName}}\"", + "searchPlaceholder": "بحث في الملفات..." + }, + "notSupportedFileType": "نوع الملف هذا غير مدعوم", + "emptyFolder": "هذا المجلد فارغ", + "emptySearchResult": "لم يتم العثور على أي عناصر", + "resetKeywords": "إعادة تعيين الكلمات الرئيسية" + }, + "credentialSelector": {}, + "configurationTip": "تكوين {{pluginName}}", + "conversion": { + "title": "التحويل إلى سير عمل المعرفة", + "descriptionChunk1": "يمكنك الآن تحويل قاعدة المعرفة الحالية لاستخدام سير عمل المعرفة لمعالجة المستندات", + "descriptionChunk2": " - نهج أكثر انفتاحًا ومرونة مع الوصول إلى الإضافات من سوقنا. سيطبق هذا طريقة المعالجة الجديدة على جميع المستندات المستقبلية.", + "warning": "لا يمكن التراجع عن هذا الإجراء.", + "confirm": { + "title": "تأكيد", + "content": "هذا الإجراء دائم. لن تتمكن من العودة إلى الطريقة السابقة. يرجى التأكيد للتحويل." + }, + "errorMessage": "فشل تحويل مجموعة البيانات إلى سير عمل", + "successMessage": "تم تحويل مجموعة البيانات إلى سير عمل بنجاح" + } +} diff --git a/web/i18n/ar-TN/dataset-pipeline.ts b/web/i18n/ar-TN/dataset-pipeline.ts deleted file mode 100644 index ea549441ac..0000000000 --- a/web/i18n/ar-TN/dataset-pipeline.ts +++ /dev/null @@ -1,165 +0,0 @@ -const translation = { - creation: { - backToKnowledge: 'العودة إلى المعرفة', - createFromScratch: { - title: 'سير عمل معرفة فارغ', - description: 'إنشاء سير عمل مخصص من الصفر مع التحكم الكامل في معالجة البيانات وهيكلها.', - }, - importDSL: 'استيراد من ملف DSL', - createKnowledge: 'إنشاء المعرفة', - errorTip: 'فشل إنشاء قاعدة المعرفة', - successTip: 'تم إنشاء قاعدة المعرفة بنجاح', - caution: 'تنبيه', - }, - templates: { - customized: 'مخصص', - }, - operations: { - choose: 'اختر', - details: 'التفاصيل', - editInfo: 'تعديل المعلومات', - useTemplate: 'استخدام سير عمل المعرفة هذا', - backToDataSource: 'العودة إلى مصدر البيانات', - process: 'معالجة', - dataSource: 'مصدر البيانات', - saveAndProcess: 'حفظ ومعالجة', - preview: 'معاينة', - exportPipeline: 'تصدير سير العمل', - convert: 'تحويل', - }, - knowledgeNameAndIcon: 'اسم وأيقونة المعرفة', - knowledgeNameAndIconPlaceholder: 'يرجى إدخال اسم قاعدة المعرفة', - knowledgeDescription: 'وصف المعرفة', - knowledgeDescriptionPlaceholder: 'صف ما يوجد في قاعدة المعرفة هذه. يسمح الوصف التفصيلي للذكاء الاصطناعي بالوصول إلى محتوى مجموعة البيانات بشكل أكثر دقة. إذا كان فارغًا، فسيستخدم Dify استراتيجية المطابقة الافتراضية. (اختياري)', - knowledgePermissions: 'أذونات', - editPipelineInfo: 'تعديل معلومات سير العمل', - pipelineNameAndIcon: 'اسم وأيقونة سير العمل', - deletePipeline: { - title: 'هل أنت متأكد من حذف قالب سير العمل هذا؟', - content: 'حذف قالب سير العمل لا رجعة فيه.', - }, - publishPipeline: { - success: { - message: 'تم نشر سير عمل المعرفة', - tip: 'الذهاب إلى المستندات لإضافة أو إدارة المستندات.', - }, - error: { - message: 'فشل نشر سير عمل المعرفة', - }, - }, - publishTemplate: { - success: { - message: 'تم نشر قالب سير العمل', - tip: 'يمكنك استخدام هذا القالب في صفحة الإنشاء.', - learnMore: 'تعرف على المزيد', - }, - error: { - message: 'فشل نشر قالب سير العمل', - }, - }, - exportDSL: { - successTip: 'تم تصدير DSL لسير العمل بنجاح', - errorTip: 'فشل تصدير DSL لسير العمل', - }, - details: { - createdBy: 'بواسطة {{author}}', - structure: 'الهيكل', - structureTooltip: 'يحدد هيكل القطعة كيفية تقسيم المستندات وفهرستها - تقديم أوضاع عامة، الأصل والطفل، والأسئلة والأجوبة - وهي فريدة لكل قاعدة معرفة.', - }, - testRun: { - title: 'تشغيل اختباري', - tooltip: 'في وضع التشغيل الاختباري، يُسمح باستيراد مستند واحد فقط في كل مرة لسهولة التصحيح والملاحظة.', - steps: { - dataSource: 'مصدر البيانات', - documentProcessing: 'معالجة المستندات', - }, - dataSource: { - localFiles: 'الملفات المحلية', - }, - notion: { - title: 'اختر صفحات Notion', - docTitle: 'مستندات Notion', - }, - }, - inputField: 'حقل الإدخال', - inputFieldPanel: { - title: 'حقول إدخال المستخدم', - description: 'تُستخدم حقول إدخال المستخدم لتعريف وجمع المتغيرات المطلوبة أثناء عملية تنفيذ سير العمل. يمكن للمستخدمين تخصيص نوع الحقل وتكوين قيمة الإدخال بمرونة لتلبية احتياجات مصادر البيانات المختلفة أو خطوات معالجة المستندات.', - uniqueInputs: { - title: 'مدخلات فريدة لكل مدخل', - tooltip: 'المدخلات الفريدة يمكن الوصول إليها فقط لمصدر البيانات المحدد وعقده النهائية. لن يحتاج المستخدمون إلى تعبئتها عند اختيار مصادر بيانات أخرى. ستظهر فقط حقول الإدخال المشار إليها بواسطة متغيرات مصدر البيانات في الخطوة الأولى (مصدر البيانات). ستظهر جميع الحقول الأخرى في الخطوة الثانية (معالجة المستندات).', - }, - globalInputs: { - title: 'مدخلات عالمية لجميع المداخل', - tooltip: 'المدخلات العالمية مشتركة عبر جميع العقد. سيحتاج المستخدمون إلى تعبئتها عند اختيار أي مصدر بيانات. على سبيل المثال، يمكن تطبيق حقول مثل المحدد والحد الأقصى لطول القطعة بشكل موحد عبر مصادر بيانات متعددة. ستظهر فقط حقول الإدخال المشار إليها بواسطة متغيرات مصدر البيانات في الخطوة الأولى (مصدر البيانات). ستظهر جميع الحقول الأخرى في الخطوة الثانية (معالجة المستندات).', - }, - addInputField: 'إضافة حقل إدخال', - editInputField: 'تعديل حقل إدخال', - preview: { - stepOneTitle: 'مصدر البيانات', - stepTwoTitle: 'معالجة المستندات', - }, - error: { - variableDuplicate: 'اسم المتغير موجود بالفعل. يرجى اختيار اسم مختلف.', - }, - }, - addDocuments: { - title: 'إضافة مستندات', - steps: { - chooseDatasource: 'اختر مصدر بيانات', - processDocuments: 'معالجة المستندات', - processingDocuments: 'جارٍ معالجة المستندات', - }, - backToDataSource: 'مصدر البيانات', - stepOne: { - preview: 'معاينة', - }, - stepTwo: { - chunkSettings: 'إعدادات القطعة', - previewChunks: 'معاينة القطع', - }, - stepThree: { - learnMore: 'تعرف على المزيد', - }, - characters: 'أحرف', - selectOnlineDocumentTip: 'معالجة ما يصل إلى {{count}} صفحة', - selectOnlineDriveTip: 'معالجة ما يصل إلى {{count}} ملف، بحد أقصى {{fileSize}} ميجابايت لكل منها', - }, - documentSettings: { - title: 'إعدادات المستند', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} صفحات', - }, - onlineDrive: { - notConnected: '{{name}} غير متصل', - notConnectedTip: 'للمزامنة مع {{name}}، يجب إنشاء اتصال بـ {{name}} أولاً.', - breadcrumbs: { - allBuckets: 'جميع حاويات التخزين السحابية', - allFiles: 'جميع الملفات', - searchResult: 'العثور على {{searchResultsLength}} عناصر في مجلد "{{folderName}}"', - searchPlaceholder: 'بحث في الملفات...', - }, - notSupportedFileType: 'نوع الملف هذا غير مدعوم', - emptyFolder: 'هذا المجلد فارغ', - emptySearchResult: 'لم يتم العثور على أي عناصر', - resetKeywords: 'إعادة تعيين الكلمات الرئيسية', - }, - credentialSelector: { - }, - configurationTip: 'تكوين {{pluginName}}', - conversion: { - title: 'التحويل إلى سير عمل المعرفة', - descriptionChunk1: 'يمكنك الآن تحويل قاعدة المعرفة الحالية لاستخدام سير عمل المعرفة لمعالجة المستندات', - descriptionChunk2: ' - نهج أكثر انفتاحًا ومرونة مع الوصول إلى الإضافات من سوقنا. سيطبق هذا طريقة المعالجة الجديدة على جميع المستندات المستقبلية.', - warning: 'لا يمكن التراجع عن هذا الإجراء.', - confirm: { - title: 'تأكيد', - content: 'هذا الإجراء دائم. لن تتمكن من العودة إلى الطريقة السابقة. يرجى التأكيد للتحويل.', - }, - errorMessage: 'فشل تحويل مجموعة البيانات إلى سير عمل', - successMessage: 'تم تحويل مجموعة البيانات إلى سير عمل بنجاح', - }, -} - -export default translation diff --git a/web/i18n/ar-TN/dataset-settings.json b/web/i18n/ar-TN/dataset-settings.json new file mode 100644 index 0000000000..8761f63cab --- /dev/null +++ b/web/i18n/ar-TN/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "إعدادات المعرفة", + "desc": "هنا يمكنك تعديل الخصائص وإعدادات الاسترجاع لهذه المعرفة.", + "form": { + "name": "اسم المعرفة", + "nameAndIcon": "الاسم والأيقونة", + "namePlaceholder": "يرجى إدخال اسم المعرفة", + "nameError": "لا يمكن أن يكون الاسم فارغًا", + "desc": "الوصف", + "descInfo": "يرجى كتابة وصف نصي واضح لتوضيح محتوى المعرفة. سيتم استخدام هذا الوصف كأساس للمطابقة عند الاختيار من بين معارف متعددة للاستنتاج.", + "descPlaceholder": "صف ما يوجد في مجموعة البيانات هذه. يسمح الوصف التفصيلي للذكاء الاصطناعي بالوصول إلى محتوى مجموعة البيانات في الوقت المناسب. إذا كان فارغًا، فسيستخدم Dify استراتيجية المطابقة الافتراضية.", + "helpText": "تعرف على كيفية كتابة وصف جيد لمجموعة البيانات.", + "descWrite": "تعرف على كيفية كتابة وصف جيد للمعرفة.", + "permissions": "أذونات", + "permissionsOnlyMe": "أنا فقط", + "permissionsAllMember": "جميع أعضاء الفريق", + "permissionsInvitedMembers": "أعضاء الفريق الجزئيين", + "me": "(أنت)", + "onSearchResults": "لا يوجد أعضاء يطابقون استعلام البحث الخاص بك.\nحاول البحث مرة أخرى.", + "chunkStructure": { + "title": "هيكل القطعة", + "learnMore": "تعرف على المزيد", + "description": " حول هيكل القطعة." + }, + "indexMethod": "طريقة الفهرسة", + "indexMethodHighQuality": "جودة عالية", + "indexMethodHighQualityTip": "يساعد استدعاء نموذج التضمين لمعالجة المستندات من أجل استرجاع أكثر دقة LLM على إنشاء إجابات عالية الجودة.", + "upgradeHighQualityTip": "بمجرد الترقية إلى وضع الجودة العالية، لا يتوفر الرجوع إلى الوضع الاقتصادي", + "indexMethodEconomy": "اقتصادي", + "indexMethodEconomyTip": "استخدام {{count}} كلمات رئيسية لكل قطعة للاسترجاع، لا يتم استهلاك أي رموز على حساب دقة الاسترجاع المنخفضة.", + "numberOfKeywords": "عدد الكلمات الرئيسية", + "embeddingModel": "نموذج التضمين", + "embeddingModelTip": "لتغيير النموذج المضمن، يرجى الانتقال إلى ", + "embeddingModelTipLink": "الإعدادات", + "retrievalSetting": { + "title": "إعداد الاسترجاع", + "method": "طريقة الاسترجاع", + "learnMore": "تعرف على المزيد", + "description": " حول طريقة الاسترجاع.", + "longDescription": " حول طريقة الاسترجاع، يمكنك تغيير هذا في أي وقت في إعدادات المعرفة.", + "multiModalTip": "عندما يدعم نموذج التضمين متعدد الوسائط، يرجى اختيار نموذج إعادة ترتيب متعدد الوسائط للحصول على أداء أفضل." + }, + "externalKnowledgeAPI": "واجهة برمجة تطبيقات المعرفة الخارجية", + "externalKnowledgeID": "معرف المعرفة الخارجية", + "retrievalSettings": "إعدادات الاسترجاع", + "save": "حفظ", + "indexMethodChangeToEconomyDisabledTip": "غير متوفر للرجوع من الجودة العالية إلى الوضع الاقتصادي", + "searchModel": "نموذج البحث" + } +} diff --git a/web/i18n/ar-TN/dataset-settings.ts b/web/i18n/ar-TN/dataset-settings.ts deleted file mode 100644 index ad27d40fc6..0000000000 --- a/web/i18n/ar-TN/dataset-settings.ts +++ /dev/null @@ -1,52 +0,0 @@ -const translation = { - title: 'إعدادات المعرفة', - desc: 'هنا يمكنك تعديل الخصائص وإعدادات الاسترجاع لهذه المعرفة.', - form: { - name: 'اسم المعرفة', - nameAndIcon: 'الاسم والأيقونة', - namePlaceholder: 'يرجى إدخال اسم المعرفة', - nameError: 'لا يمكن أن يكون الاسم فارغًا', - desc: 'الوصف', - descInfo: 'يرجى كتابة وصف نصي واضح لتوضيح محتوى المعرفة. سيتم استخدام هذا الوصف كأساس للمطابقة عند الاختيار من بين معارف متعددة للاستنتاج.', - descPlaceholder: 'صف ما يوجد في مجموعة البيانات هذه. يسمح الوصف التفصيلي للذكاء الاصطناعي بالوصول إلى محتوى مجموعة البيانات في الوقت المناسب. إذا كان فارغًا، فسيستخدم Dify استراتيجية المطابقة الافتراضية.', - helpText: 'تعرف على كيفية كتابة وصف جيد لمجموعة البيانات.', - descWrite: 'تعرف على كيفية كتابة وصف جيد للمعرفة.', - permissions: 'أذونات', - permissionsOnlyMe: 'أنا فقط', - permissionsAllMember: 'جميع أعضاء الفريق', - permissionsInvitedMembers: 'أعضاء الفريق الجزئيين', - me: '(أنت)', - onSearchResults: 'لا يوجد أعضاء يطابقون استعلام البحث الخاص بك.\nحاول البحث مرة أخرى.', - chunkStructure: { - title: 'هيكل القطعة', - learnMore: 'تعرف على المزيد', - description: ' حول هيكل القطعة.', - }, - indexMethod: 'طريقة الفهرسة', - indexMethodHighQuality: 'جودة عالية', - indexMethodHighQualityTip: 'يساعد استدعاء نموذج التضمين لمعالجة المستندات من أجل استرجاع أكثر دقة LLM على إنشاء إجابات عالية الجودة.', - upgradeHighQualityTip: 'بمجرد الترقية إلى وضع الجودة العالية، لا يتوفر الرجوع إلى الوضع الاقتصادي', - indexMethodEconomy: 'اقتصادي', - indexMethodEconomyTip: 'استخدام {{count}} كلمات رئيسية لكل قطعة للاسترجاع، لا يتم استهلاك أي رموز على حساب دقة الاسترجاع المنخفضة.', - numberOfKeywords: 'عدد الكلمات الرئيسية', - embeddingModel: 'نموذج التضمين', - embeddingModelTip: 'لتغيير النموذج المضمن، يرجى الانتقال إلى ', - embeddingModelTipLink: 'الإعدادات', - retrievalSetting: { - title: 'إعداد الاسترجاع', - method: 'طريقة الاسترجاع', - learnMore: 'تعرف على المزيد', - description: ' حول طريقة الاسترجاع.', - longDescription: ' حول طريقة الاسترجاع، يمكنك تغيير هذا في أي وقت في إعدادات المعرفة.', - multiModalTip: 'عندما يدعم نموذج التضمين متعدد الوسائط، يرجى اختيار نموذج إعادة ترتيب متعدد الوسائط للحصول على أداء أفضل.', - }, - externalKnowledgeAPI: 'واجهة برمجة تطبيقات المعرفة الخارجية', - externalKnowledgeID: 'معرف المعرفة الخارجية', - retrievalSettings: 'إعدادات الاسترجاع', - save: 'حفظ', - indexMethodChangeToEconomyDisabledTip: 'غير متوفر للرجوع من الجودة العالية إلى الوضع الاقتصادي', - searchModel: 'نموذج البحث', - }, -} - -export default translation diff --git a/web/i18n/ar-TN/dataset.json b/web/i18n/ar-TN/dataset.json new file mode 100644 index 0000000000..efbc78af24 --- /dev/null +++ b/web/i18n/ar-TN/dataset.json @@ -0,0 +1,248 @@ +{ + "knowledge": "المعرفة", + "chunkingMode": { + "general": "عام", + "parentChild": "الأصل والطفل", + "qa": "سؤال وجواب", + "graph": "رسم بياني" + }, + "parentMode": { + "paragraph": "فقرة", + "fullDoc": "مستند كامل" + }, + "externalTag": "خارجي", + "externalAPI": "واجهة برمجة تطبيقات خارجية", + "externalAPIPanelTitle": "واجهة برمجة تطبيقات المعرفة الخارجية", + "externalKnowledgeId": "معرف المعرفة الخارجية", + "externalKnowledgeName": "اسم المعرفة الخارجية", + "externalKnowledgeDescription": "وصف المعرفة", + "externalKnowledgeIdPlaceholder": "يرجى إدخال معرف المعرفة", + "externalKnowledgeNamePlaceholder": "يرجى إدخال اسم قاعدة المعرفة", + "externalKnowledgeDescriptionPlaceholder": "صف ما يوجد في قاعدة المعرفة هذه (اختياري)", + "learnHowToWriteGoodKnowledgeDescription": "تعرف على كيفية كتابة وصف جيد للمعرفة", + "externalAPIPanelDescription": "تُستخدم واجهة برمجة تطبيقات المعرفة الخارجية للاتصال بقاعدة معرفة خارج Dify واسترجاع المعرفة من قاعدة المعرفة تلك.", + "externalAPIPanelDocumentation": "تعرف على كيفية إنشاء واجهة برمجة تطبيقات المعرفة الخارجية", + "externalKnowledgeBase": "قاعدة المعرفة الخارجية", + "localDocs": "مستندات محلية", + "documentCount": " مستندات", + "docAllEnabled_one": "{{count}} مستند ممكن", + "docAllEnabled_other": "تم تمكين جميع المستندات البالغ عددها {{count}}", + "partialEnabled_one": "إجمالي {{count}} مستند، {{num}} متاح", + "partialEnabled_other": "إجمالي {{count}} مستندات، {{num}} متاح", + "wordCount": " ألف كلمة", + "appCount": " تطبيقات مرتبطة", + "updated": "محدث", + "createDataset": "إنشاء المعرفة", + "createFromPipeline": "إنشاء من سير عمل المعرفة", + "createNewExternalAPI": "إنشاء واجهة برمجة تطبيقات معرفة خارجية جديدة", + "noExternalKnowledge": "لا توجد واجهة برمجة تطبيقات معرفة خارجية حتى الآن، انقر هنا لإنشاء", + "createExternalAPI": "إضافة واجهة برمجة تطبيقات معرفة خارجية", + "editExternalAPIFormTitle": "تعديل واجهة برمجة تطبيقات المعرفة الخارجية", + "editExternalAPITooltipTitle": "المعرفة المرتبطة", + "editExternalAPIConfirmWarningContent": { + "front": "ترتبط واجهة برمجة تطبيقات المعرفة الخارجية هذه بـ", + "end": "معرفة خارجية، وسيتم تطبيق هذا التعديل عليها جميعًا. هل أنت متأكد أنك تريد حفظ هذا التغيير؟" + }, + "editExternalAPIFormWarning": { + "front": "ترتبط واجهة برمجة التطبيقات الخارجية هذه بـ", + "end": "معرفة خارجية" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "front": "حذف", + "end": "؟" + }, + "content": { + "front": "ترتبط واجهة برمجة تطبيقات المعرفة الخارجية هذه بـ", + "end": "معرفة خارجية. سيؤدي حذف واجهة برمجة التطبيقات هذه إلى إبطالها جميعًا. هل أنت متأكد أنك تريد حذف واجهة برمجة التطبيقات هذه؟" + }, + "noConnectionContent": "هل أنت متأكد من حذف واجهة برمجة التطبيقات هذه؟" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "اختر واجهة برمجة تطبيقات معرفة خارجية" + }, + "connectDataset": "الاتصال بقاعدة معرفة خارجية", + "connectDatasetIntro": { + "title": "كيفية الاتصال بقاعدة معرفة خارجية", + "content": { + "front": "للاتصال بقاعدة معرفة خارجية، تحتاج إلى إنشاء واجهة برمجة تطبيقات خارجية أولاً. يرجى القراءة بعناية والرجوع إلى", + "link": "تعرف على كيفية إنشاء واجهة برمجة تطبيقات خارجية", + "end": ". ثم ابحث عن معرف المعرفة المقابل واملأه في النموذج على اليسار. إذا كانت جميع المعلومات صحيحة، فسيقفز تلقائيًا إلى اختبار الاسترجاع في قاعدة المعرفة بعد النقر فوق زر الاتصال." + }, + "learnMore": "تعرف على المزيد" + }, + "connectHelper": { + "helper1": "تصل بقواعد المعرفة الخارجية عبر API ومعرف قاعدة المعرفة. حاليًا، ", + "helper2": "يتم دعم وظيفة الاسترجاع فقط", + "helper3": ". نوصي بشدة أن تقوم بـ ", + "helper4": "قراءة وثائق المساعدة", + "helper5": " بعناية قبل استخدام هذه الميزة." + }, + "createDatasetIntro": "استيراد بيانات النص الخاصة بك أو كتابة البيانات في الوقت الفعلي عبر Webhook لتحسين سياق LLM.", + "deleteDatasetConfirmTitle": "حذف هذه المعرفة؟", + "deleteDatasetConfirmContent": "حذف المعرفة لا رجعة فيه. لن يتمكن المستخدمون بعد الآن من الوصول إلى معرفتك، وسيتم حذف جميع تكوينات الموجه والسجلات بشكل دائم.", + "datasetUsedByApp": "يتم استخدام المعرفة بواسطة بعض التطبيقات. لن تتمكن التطبيقات بعد الآن من استخدام هذه المعرفة، وسيتم حذف جميع تكوينات الموجه والسجلات بشكل دائم.", + "datasetDeleted": "تم حذف المعرفة", + "datasetDeleteFailed": "فشل حذف المعرفة", + "didYouKnow": "هل تعلم؟", + "intro1": "يمكن دمج المعرفة في تطبيق Dify ", + "intro2": "كسياق", + "intro3": "،", + "intro4": "أو ", + "intro5": "يمكن نشرها", + "intro6": " كخدمة مستقلة.", + "unavailable": "غير متاح", + "datasets": "المعرفة", + "datasetsApi": "الوصول إلى API", + "externalKnowledgeForm": { + "connect": "اتصال", + "cancel": "إلغاء" + }, + "externalAPIForm": { + "name": "الاسم", + "endpoint": "نقطة نهاية API", + "apiKey": "مفتاح API", + "save": "حفظ", + "cancel": "إلغاء", + "edit": "تعديل", + "encrypted": { + "front": "سيتم تشفير رمز API الخاص بك وتخزينه باستخدام", + "end": "تقنية." + } + }, + "retrieval": { + "semantic_search": { + "title": "بحث المتجهات", + "description": "إنشاء تضمينات الاستعلام والبحث عن قطعة النص الأكثر تشابهًا مع تمثيلها المتجه." + }, + "full_text_search": { + "title": "بحث النص الكامل", + "description": "فهرسة جميع المصطلحات في المستند، مما يسمح للمستخدمين بالبحث عن أي مصطلح واسترجاع قطعة نصية ذات صلة تحتوي على تلك المصطلحات." + }, + "hybrid_search": { + "title": "بحث هجين", + "description": "تنفيذ البحث بالنص الكامل والبحث المتجه في وقت واحد، وإعادة الترتيب لتحديد أفضل تطابق لاستعلام المستخدم. يمكن للمستخدمين اختيار تعيين الأوزان أو التكوين لنموذج إعادة الترتيب.", + "recommend": "نوصي" + }, + "keyword_search": { + "title": "فهرس معكوس", + "description": "الفهرس المعكوس هو هيكل يستخدم للاسترجاع الفعال. منظم حسب المصطلحات، يشير كل مصطلح إلى المستندات أو صفحات الويب التي تحتوي عليه." + }, + "change": "تغيير", + "changeRetrievalMethod": "تغيير طريقة الاسترجاع" + }, + "docsFailedNotice": "فشل فهرسة المستندات", + "retry": "إعادة المحاولة", + "documentsDisabled": "{{num}} مستندات معطلة - غير نشطة لأكثر من 30 يومًا", + "enable": "تمكين", + "indexingTechnique": { + "high_quality": "HQ", + "economy": "ECO" + }, + "indexingMethod": { + "semantic_search": "VECTOR", + "full_text_search": "FULL TEXT", + "hybrid_search": "HYBRID", + "invertedIndex": "فهرس معكوس" + }, + "defaultRetrievalTip": "يستخدم الاسترجاع متعدد المسارات افتراضيًا. يتم استرجاع المعرفة من قواعد معرفة متعددة ثم إعادة ترتيبها.", + "mixtureHighQualityAndEconomicTip": "مطلوب نموذج إعادة الترتيب لخلط قواعد المعرفة عالية الجودة والاقتصادية.", + "inconsistentEmbeddingModelTip": "مطلوب نموذج إعادة الترتيب إذا كانت نماذج التضمين لقواعد المعرفة المختارة غير متسقة.", + "mixtureInternalAndExternalTip": "مطلوب نموذج إعادة الترتيب لخلط المعرفة الداخلية والخارجية.", + "allExternalTip": "عند استخدام المعرفة الخارجية فقط، يمكن للمستخدم اختيار ما إذا كان سيمكن نموذج إعادة الترتيب. إذا لم يتم تمكينه، فسيتم فرز القطع المسترجعة بناءً على الدرجات. عندما تكون استراتيجيات الاسترجاع لقواعد المعرفة المختلفة غير متسقة، فستكون غير دقيقة.", + "retrievalSettings": "إعداد الاسترجاع", + "rerankSettings": "إعداد إعادة الترتيب", + "weightedScore": { + "title": "الدرجة المرجحة", + "description": "من خلال تعديل الأوزان المخصصة، تحدد استراتيجية إعادة الترتيب هذه ما إذا كانت الأولوية للمطابقة الدلالية أو الكلمات الرئيسية.", + "semanticFirst": "الدلالي أولاً", + "keywordFirst": "الكلمة الرئيسية أولاً", + "customized": "مخصص", + "semantic": "دلالي", + "keyword": "كلمة رئيسية" + }, + "nTo1RetrievalLegacy": "سيتم إيقاف الاسترجاع من N إلى 1 رسميًا اعتبارًا من سبتمبر. يوصى باستخدام أحدث استرجاع متعدد المسارات للحصول على نتائج أفضل. ", + "nTo1RetrievalLegacyLink": "تعرف على المزيد", + "nTo1RetrievalLegacyLinkText": " سيتم إيقاف الاسترجاع من N إلى 1 رسميًا في سبتمبر.", + "batchAction": { + "selected": "محدد", + "enable": "تمكين", + "disable": "تعطيل", + "archive": "أرشيف", + "delete": "حذف", + "cancel": "إلغاء" + }, + "preprocessDocument": "{{num}} معالجة المستندات مسبقًا", + "allKnowledge": "كل المعرفة", + "allKnowledgeDescription": "حدد لعرض كل المعرفة في مساحة العمل هذه. يمكن لمالك مساحة العمل فقط إدارة كل المعرفة.", + "embeddingModelNotAvailable": "نموذج التضمين غير متوفر.", + "metadata": { + "metadata": "بيانات وصفية", + "addMetadata": "إضافة بيانات وصفية", + "chooseTime": "اختر وقتًا...", + "createMetadata": { + "title": "بيانات وصفية جديدة", + "back": "رجوع", + "type": "نوع", + "name": "الاسم", + "namePlaceholder": "إضافة اسم البيانات الوصفية" + }, + "checkName": { + "empty": "لا يمكن أن يكون اسم البيانات الوصفية فارغًا", + "invalid": "يمكن أن يحتوي اسم البيانات الوصفية فقط على أحرف صغيرة وأرقام وشرطات سفلية ويجب أن يبدأ بحرف صغير", + "tooLong": "لا يمكن أن يتجاوز اسم البيانات الوصفية {{max}} حرفًا" + }, + "batchEditMetadata": { + "editMetadata": "تعديل البيانات الوصفية", + "editDocumentsNum": "تعديل {{num}} مستندات", + "applyToAllSelectDocument": "تطبيق على جميع المستندات المحددة", + "applyToAllSelectDocumentTip": "إنشاء جميع البيانات الوصفية المعدلة والجديدة أعلاه تلقائيًا لجميع المستندات المحددة، وإلا فإن تعديل البيانات الوصفية سينطبق فقط على المستندات التي تحتوي عليها.", + "multipleValue": "قيمة متعددة" + }, + "selectMetadata": { + "search": "بحث في البيانات الوصفية", + "newAction": "بيانات وصفية جديدة", + "manageAction": "إدارة" + }, + "datasetMetadata": { + "description": "يمكنك إدارة جميع البيانات الوصفية في هذه المعرفة هنا. سيتم مزامنة التعديلات مع كل مستند.", + "addMetaData": "إضافة بيانات وصفية", + "values": "{{num}} قيم", + "disabled": "معطل", + "rename": "إعادة تسمية", + "name": "الاسم", + "namePlaceholder": "اسم البيانات الوصفية", + "builtIn": "مدمج", + "builtInDescription": "يتم استخراج البيانات الوصفية المدمجة وإنشاؤها تلقائيًا. يجب تمكينه قبل الاستخدام ولا يمكن تعديله.", + "deleteTitle": "تأكيد الحذف", + "deleteContent": "هل أنت متأكد أنك تريد حذف البيانات الوصفية \"{{name}}\"" + }, + "documentMetadata": { + "metadataToolTip": "تعمل البيانات الوصفية كمرشح حاسم يعزز دقة وملاءمة استرجاع المعلومات. يمكنك تعديل وإضافة بيانات وصفية لهذا المستند هنا.", + "startLabeling": "بدء التصنيف", + "documentInformation": "معلومات المستند", + "technicalParameters": "المعلمات الفنية" + } + }, + "serviceApi": { + "title": "واجهة برمجة تطبيقات الخدمة", + "enabled": "في الخدمة", + "disabled": "معطل", + "card": { + "title": "واجهة برمجة تطبيقات خدمة الخلفية", + "endpoint": "نقطة نهاية واجهة برمجة تطبيقات الخدمة", + "apiKey": "مفتاح API", + "apiReference": "مرجع API" + } + }, + "cornerLabel": { + "unavailable": "غير متاح", + "pipeline": "خط أنابيب" + }, + "multimodal": "متعدد الوسائط", + "imageUploader": { + "button": "اسحب وأفلت الملف أو المجلد، أو", + "browse": "تصفح", + "tip": "{{supportTypes}} (الحد الأقصى {{batchCount}}، {{size}} ميغابايت لكل منها)" + } +} diff --git a/web/i18n/ar-TN/dataset.ts b/web/i18n/ar-TN/dataset.ts deleted file mode 100644 index 66929f3081..0000000000 --- a/web/i18n/ar-TN/dataset.ts +++ /dev/null @@ -1,251 +0,0 @@ -const translation = { - knowledge: 'المعرفة', - chunkingMode: { - general: 'عام', - parentChild: 'الأصل والطفل', - qa: 'سؤال وجواب', - graph: 'رسم بياني', - }, - parentMode: { - paragraph: 'فقرة', - fullDoc: 'مستند كامل', - }, - externalTag: 'خارجي', - externalAPI: 'واجهة برمجة تطبيقات خارجية', - externalAPIPanelTitle: 'واجهة برمجة تطبيقات المعرفة الخارجية', - externalKnowledgeId: 'معرف المعرفة الخارجية', - externalKnowledgeName: 'اسم المعرفة الخارجية', - externalKnowledgeDescription: 'وصف المعرفة', - externalKnowledgeIdPlaceholder: 'يرجى إدخال معرف المعرفة', - externalKnowledgeNamePlaceholder: 'يرجى إدخال اسم قاعدة المعرفة', - externalKnowledgeDescriptionPlaceholder: 'صف ما يوجد في قاعدة المعرفة هذه (اختياري)', - learnHowToWriteGoodKnowledgeDescription: 'تعرف على كيفية كتابة وصف جيد للمعرفة', - externalAPIPanelDescription: 'تُستخدم واجهة برمجة تطبيقات المعرفة الخارجية للاتصال بقاعدة معرفة خارج Dify واسترجاع المعرفة من قاعدة المعرفة تلك.', - externalAPIPanelDocumentation: 'تعرف على كيفية إنشاء واجهة برمجة تطبيقات المعرفة الخارجية', - externalKnowledgeBase: 'قاعدة المعرفة الخارجية', - localDocs: 'مستندات محلية', - documentCount: ' مستندات', - docAllEnabled_one: '{{count}} مستند ممكن', - docAllEnabled_other: 'تم تمكين جميع المستندات البالغ عددها {{count}}', - partialEnabled_one: 'إجمالي {{count}} مستند، {{num}} متاح', - partialEnabled_other: 'إجمالي {{count}} مستندات، {{num}} متاح', - wordCount: ' ألف كلمة', - appCount: ' تطبيقات مرتبطة', - updated: 'محدث', - createDataset: 'إنشاء المعرفة', - createFromPipeline: 'إنشاء من سير عمل المعرفة', - createNewExternalAPI: 'إنشاء واجهة برمجة تطبيقات معرفة خارجية جديدة', - noExternalKnowledge: 'لا توجد واجهة برمجة تطبيقات معرفة خارجية حتى الآن، انقر هنا لإنشاء', - createExternalAPI: 'إضافة واجهة برمجة تطبيقات معرفة خارجية', - editExternalAPIFormTitle: 'تعديل واجهة برمجة تطبيقات المعرفة الخارجية', - editExternalAPITooltipTitle: 'المعرفة المرتبطة', - editExternalAPIConfirmWarningContent: { - front: 'ترتبط واجهة برمجة تطبيقات المعرفة الخارجية هذه بـ', - end: 'معرفة خارجية، وسيتم تطبيق هذا التعديل عليها جميعًا. هل أنت متأكد أنك تريد حفظ هذا التغيير؟', - }, - editExternalAPIFormWarning: { - front: 'ترتبط واجهة برمجة التطبيقات الخارجية هذه بـ', - end: 'معرفة خارجية', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - front: 'حذف', - end: '؟', - }, - content: { - front: 'ترتبط واجهة برمجة تطبيقات المعرفة الخارجية هذه بـ', - end: 'معرفة خارجية. سيؤدي حذف واجهة برمجة التطبيقات هذه إلى إبطالها جميعًا. هل أنت متأكد أنك تريد حذف واجهة برمجة التطبيقات هذه؟', - }, - noConnectionContent: 'هل أنت متأكد من حذف واجهة برمجة التطبيقات هذه؟', - }, - selectExternalKnowledgeAPI: { - placeholder: 'اختر واجهة برمجة تطبيقات معرفة خارجية', - }, - connectDataset: 'الاتصال بقاعدة معرفة خارجية', - connectDatasetIntro: { - title: 'كيفية الاتصال بقاعدة معرفة خارجية', - content: { - front: 'للاتصال بقاعدة معرفة خارجية، تحتاج إلى إنشاء واجهة برمجة تطبيقات خارجية أولاً. يرجى القراءة بعناية والرجوع إلى', - link: 'تعرف على كيفية إنشاء واجهة برمجة تطبيقات خارجية', - end: '. ثم ابحث عن معرف المعرفة المقابل واملأه في النموذج على اليسار. إذا كانت جميع المعلومات صحيحة، فسيقفز تلقائيًا إلى اختبار الاسترجاع في قاعدة المعرفة بعد النقر فوق زر الاتصال.', - }, - learnMore: 'تعرف على المزيد', - }, - connectHelper: { - helper1: 'تصل بقواعد المعرفة الخارجية عبر API ومعرف قاعدة المعرفة. حاليًا، ', - helper2: 'يتم دعم وظيفة الاسترجاع فقط', - helper3: '. نوصي بشدة أن تقوم بـ ', - helper4: 'قراءة وثائق المساعدة', - helper5: ' بعناية قبل استخدام هذه الميزة.', - }, - createDatasetIntro: 'استيراد بيانات النص الخاصة بك أو كتابة البيانات في الوقت الفعلي عبر Webhook لتحسين سياق LLM.', - deleteDatasetConfirmTitle: 'حذف هذه المعرفة؟', - deleteDatasetConfirmContent: - 'حذف المعرفة لا رجعة فيه. لن يتمكن المستخدمون بعد الآن من الوصول إلى معرفتك، وسيتم حذف جميع تكوينات الموجه والسجلات بشكل دائم.', - datasetUsedByApp: 'يتم استخدام المعرفة بواسطة بعض التطبيقات. لن تتمكن التطبيقات بعد الآن من استخدام هذه المعرفة، وسيتم حذف جميع تكوينات الموجه والسجلات بشكل دائم.', - datasetDeleted: 'تم حذف المعرفة', - datasetDeleteFailed: 'فشل حذف المعرفة', - didYouKnow: 'هل تعلم؟', - intro1: 'يمكن دمج المعرفة في تطبيق Dify ', - intro2: 'كسياق', - intro3: '،', - intro4: 'أو ', - intro5: 'يمكن نشرها', - intro6: ' كخدمة مستقلة.', - unavailable: 'غير متاح', - datasets: 'المعرفة', - datasetsApi: 'الوصول إلى API', - externalKnowledgeForm: { - connect: 'اتصال', - cancel: 'إلغاء', - }, - externalAPIForm: { - name: 'الاسم', - endpoint: 'نقطة نهاية API', - apiKey: 'مفتاح API', - save: 'حفظ', - cancel: 'إلغاء', - edit: 'تعديل', - encrypted: { - front: 'سيتم تشفير رمز API الخاص بك وتخزينه باستخدام', - end: 'تقنية.', - }, - }, - retrieval: { - semantic_search: { - title: 'بحث المتجهات', - description: 'إنشاء تضمينات الاستعلام والبحث عن قطعة النص الأكثر تشابهًا مع تمثيلها المتجه.', - }, - full_text_search: { - title: 'بحث النص الكامل', - description: 'فهرسة جميع المصطلحات في المستند، مما يسمح للمستخدمين بالبحث عن أي مصطلح واسترجاع قطعة نصية ذات صلة تحتوي على تلك المصطلحات.', - }, - hybrid_search: { - title: 'بحث هجين', - description: 'تنفيذ البحث بالنص الكامل والبحث المتجه في وقت واحد، وإعادة الترتيب لتحديد أفضل تطابق لاستعلام المستخدم. يمكن للمستخدمين اختيار تعيين الأوزان أو التكوين لنموذج إعادة الترتيب.', - recommend: 'نوصي', - }, - keyword_search: { - title: 'فهرس معكوس', - description: 'الفهرس المعكوس هو هيكل يستخدم للاسترجاع الفعال. منظم حسب المصطلحات، يشير كل مصطلح إلى المستندات أو صفحات الويب التي تحتوي عليه.', - }, - change: 'تغيير', - changeRetrievalMethod: 'تغيير طريقة الاسترجاع', - }, - docsFailedNotice: 'فشل فهرسة المستندات', - retry: 'إعادة المحاولة', - documentsDisabled: '{{num}} مستندات معطلة - غير نشطة لأكثر من 30 يومًا', - enable: 'تمكين', - indexingTechnique: { - high_quality: 'HQ', - economy: 'ECO', - }, - indexingMethod: { - semantic_search: 'VECTOR', - full_text_search: 'FULL TEXT', - hybrid_search: 'HYBRID', - invertedIndex: 'فهرس معكوس', - }, - defaultRetrievalTip: 'يستخدم الاسترجاع متعدد المسارات افتراضيًا. يتم استرجاع المعرفة من قواعد معرفة متعددة ثم إعادة ترتيبها.', - mixtureHighQualityAndEconomicTip: 'مطلوب نموذج إعادة الترتيب لخلط قواعد المعرفة عالية الجودة والاقتصادية.', - inconsistentEmbeddingModelTip: 'مطلوب نموذج إعادة الترتيب إذا كانت نماذج التضمين لقواعد المعرفة المختارة غير متسقة.', - mixtureInternalAndExternalTip: 'مطلوب نموذج إعادة الترتيب لخلط المعرفة الداخلية والخارجية.', - allExternalTip: 'عند استخدام المعرفة الخارجية فقط، يمكن للمستخدم اختيار ما إذا كان سيمكن نموذج إعادة الترتيب. إذا لم يتم تمكينه، فسيتم فرز القطع المسترجعة بناءً على الدرجات. عندما تكون استراتيجيات الاسترجاع لقواعد المعرفة المختلفة غير متسقة، فستكون غير دقيقة.', - retrievalSettings: 'إعداد الاسترجاع', - rerankSettings: 'إعداد إعادة الترتيب', - weightedScore: { - title: 'الدرجة المرجحة', - description: 'من خلال تعديل الأوزان المخصصة، تحدد استراتيجية إعادة الترتيب هذه ما إذا كانت الأولوية للمطابقة الدلالية أو الكلمات الرئيسية.', - semanticFirst: 'الدلالي أولاً', - keywordFirst: 'الكلمة الرئيسية أولاً', - customized: 'مخصص', - semantic: 'دلالي', - keyword: 'كلمة رئيسية', - }, - nTo1RetrievalLegacy: 'سيتم إيقاف الاسترجاع من N إلى 1 رسميًا اعتبارًا من سبتمبر. يوصى باستخدام أحدث استرجاع متعدد المسارات للحصول على نتائج أفضل. ', - nTo1RetrievalLegacyLink: 'تعرف على المزيد', - nTo1RetrievalLegacyLinkText: ' سيتم إيقاف الاسترجاع من N إلى 1 رسميًا في سبتمبر.', - batchAction: { - selected: 'محدد', - enable: 'تمكين', - disable: 'تعطيل', - archive: 'أرشيف', - delete: 'حذف', - cancel: 'إلغاء', - }, - preprocessDocument: '{{num}} معالجة المستندات مسبقًا', - allKnowledge: 'كل المعرفة', - allKnowledgeDescription: 'حدد لعرض كل المعرفة في مساحة العمل هذه. يمكن لمالك مساحة العمل فقط إدارة كل المعرفة.', - embeddingModelNotAvailable: 'نموذج التضمين غير متوفر.', - metadata: { - metadata: 'بيانات وصفية', - addMetadata: 'إضافة بيانات وصفية', - chooseTime: 'اختر وقتًا...', - createMetadata: { - title: 'بيانات وصفية جديدة', - back: 'رجوع', - type: 'نوع', - name: 'الاسم', - namePlaceholder: 'إضافة اسم البيانات الوصفية', - }, - checkName: { - empty: 'لا يمكن أن يكون اسم البيانات الوصفية فارغًا', - invalid: 'يمكن أن يحتوي اسم البيانات الوصفية فقط على أحرف صغيرة وأرقام وشرطات سفلية ويجب أن يبدأ بحرف صغير', - tooLong: 'لا يمكن أن يتجاوز اسم البيانات الوصفية {{max}} حرفًا', - }, - batchEditMetadata: { - editMetadata: 'تعديل البيانات الوصفية', - editDocumentsNum: 'تعديل {{num}} مستندات', - applyToAllSelectDocument: 'تطبيق على جميع المستندات المحددة', - applyToAllSelectDocumentTip: 'إنشاء جميع البيانات الوصفية المعدلة والجديدة أعلاه تلقائيًا لجميع المستندات المحددة، وإلا فإن تعديل البيانات الوصفية سينطبق فقط على المستندات التي تحتوي عليها.', - multipleValue: 'قيمة متعددة', - }, - selectMetadata: { - search: 'بحث في البيانات الوصفية', - newAction: 'بيانات وصفية جديدة', - manageAction: 'إدارة', - }, - datasetMetadata: { - description: 'يمكنك إدارة جميع البيانات الوصفية في هذه المعرفة هنا. سيتم مزامنة التعديلات مع كل مستند.', - addMetaData: 'إضافة بيانات وصفية', - values: '{{num}} قيم', - disabled: 'معطل', - rename: 'إعادة تسمية', - name: 'الاسم', - namePlaceholder: 'اسم البيانات الوصفية', - builtIn: 'مدمج', - builtInDescription: 'يتم استخراج البيانات الوصفية المدمجة وإنشاؤها تلقائيًا. يجب تمكينه قبل الاستخدام ولا يمكن تعديله.', - deleteTitle: 'تأكيد الحذف', - deleteContent: 'هل أنت متأكد أنك تريد حذف البيانات الوصفية "{{name}}"', - }, - documentMetadata: { - metadataToolTip: 'تعمل البيانات الوصفية كمرشح حاسم يعزز دقة وملاءمة استرجاع المعلومات. يمكنك تعديل وإضافة بيانات وصفية لهذا المستند هنا.', - startLabeling: 'بدء التصنيف', - documentInformation: 'معلومات المستند', - technicalParameters: 'المعلمات الفنية', - }, - }, - serviceApi: { - title: 'واجهة برمجة تطبيقات الخدمة', - enabled: 'في الخدمة', - disabled: 'معطل', - card: { - title: 'واجهة برمجة تطبيقات خدمة الخلفية', - endpoint: 'نقطة نهاية واجهة برمجة تطبيقات الخدمة', - apiKey: 'مفتاح API', - apiReference: 'مرجع API', - }, - }, - cornerLabel: { - unavailable: 'غير متاح', - pipeline: 'خط أنابيب', - }, - multimodal: 'متعدد الوسائط', - imageUploader: { - button: 'اسحب وأفلت الملف أو المجلد، أو', - browse: 'تصفح', - tip: '{{supportTypes}} (الحد الأقصى {{batchCount}}، {{size}} ميغابايت لكل منها)', - }, -} - -export default translation diff --git a/web/i18n/ar-TN/education.json b/web/i18n/ar-TN/education.json new file mode 100644 index 0000000000..9a50e790c8 --- /dev/null +++ b/web/i18n/ar-TN/education.json @@ -0,0 +1,74 @@ +{ + "toVerified": "احصل على التحقق التعليمي", + "toVerifiedTip": { + "front": "أنت الآن مؤهل للحصول على حالة التحقق التعليمي. يرجى إدخال معلومات التعليم الخاصة بك أدناه لإكمال العملية والحصول على", + "coupon": "كوبون حصري 100٪", + "end": "لخطة Dify الاحترافية." + }, + "currentSigned": "تم تسجيل الدخول حاليًا باسم", + "form": { + "schoolName": { + "title": "اسم مدرستك", + "placeholder": "أدخل الاسم الرسمي الكامل لمدرستك" + }, + "schoolRole": { + "title": "دورك في المدرسة", + "option": { + "student": "طالب", + "teacher": "معلم", + "administrator": "مسؤول المدرسة" + } + }, + "terms": { + "title": "الشروط والاتفاقيات", + "desc": { + "front": "المعلومات الخاصة بك واستخدام حالة التحقق التعليمي تخضع لـ", + "and": "و", + "end": ". من خلال الإرسال:", + "termsOfService": "شروط الخدمة", + "privacyPolicy": "سياسة الخصوصية" + }, + "option": { + "age": "أؤكد أن عمري 18 عامًا على الأقل", + "inSchool": "أؤكد أنني مسجل أو موظف في المؤسسة المقدمة. قد تطلب Dify إثبات التسجيل/التوظيف. إذا قدمت معلومات خاطئة حول أهليتي، فأوافق على دفع أي رسوم تم التنازل عنها مبدئيًا بناءً على حالة التعليم الخاصة بي." + } + } + }, + "submit": "إرسال", + "submitError": "فشل إرسال النموذج. يرجى المحاولة مرة أخرى لاحقًا.", + "learn": "تعرف على كيفية التحقق من التعليم", + "successTitle": "لقد حصلت على التحقق التعليمي من Dify", + "successContent": "لقد أصدرنا كوبون خصم 100٪ لخطة Dify Professional لحسابك. الكوبون ساري لمدة عام واحد، يرجى استخدامه خلال فترة الصلاحية.", + "rejectTitle": "تم رفض التحقق التعليمي الخاص بك في Dify", + "rejectContent": "لسوء الحظ، أنت غير مؤهل للحصول على حالة التحقق التعليمي وبالتالي لا يمكنك الحصول على كوبون حصري 100٪ لخطة Dify Professional إذا كنت تستخدم عنوان البريد الإلكتروني هذا.", + "emailLabel": "بريدك الإلكتروني الحالي", + "notice": { + "dateFormat": "MM/DD/YYYY", + "expired": { + "title": "انتهت حالة التعليم الخاصة بك", + "summary": { + "line1": "لا يزال بإمكانك الوصول إلى Dify واستخدامه. ", + "line2": "ومع ذلك، لم تعد مؤهلاً للحصول على كوبونات خصم التعليم الجديدة." + } + }, + "isAboutToExpire": { + "title": "ستنتهي حالة التعليم الخاصة بك في {{date}}", + "summary": "لا تقلق - لن يؤثر هذا على اشتراكك الحالي، لكنك لن تحصل على خضم التعليم عند تجديده ما لم تتحقق من حالتك مرة أخرى." + }, + "stillInEducation": { + "title": "هل ما زلت في التعليم؟", + "expired": "تحقق مرة أخرى الآن للحصول على كوبون جديد للعام الدراسي القادم. سنضيفه إلى حسابك ويمكنك استخدامه للترقية التالية.", + "isAboutToExpire": "تحقق مرة أخرى الآن للحصول على كوبون جديد للعام الدراسي القادم. سيتم حفظه في حسابك وجاهز للاستخدام في تجديدك التالي." + }, + "alreadyGraduated": { + "title": "تخرجت بالفعل؟", + "expired": "لا تتردد في الترقية في أي وقت للحصول على الوصول الكامل إلى الميزات المدفوعة.", + "isAboutToExpire": "سيظل اشتراكك الحالي نشطًا. عندما ينتهي، سيتم نقلك إلى خطة Sandbox، أو يمكنك الترقية في أي وقت لاستعادة الوصول الكامل إلى الميزات المدفوعة." + }, + "action": { + "dismiss": "تجاهل", + "upgrade": "ترقية", + "reVerify": "إعادة التحقق" + } + } +} diff --git a/web/i18n/ar-TN/education.ts b/web/i18n/ar-TN/education.ts deleted file mode 100644 index 0740564467..0000000000 --- a/web/i18n/ar-TN/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerified: 'احصل على التحقق التعليمي', - toVerifiedTip: { - front: 'أنت الآن مؤهل للحصول على حالة التحقق التعليمي. يرجى إدخال معلومات التعليم الخاصة بك أدناه لإكمال العملية والحصول على', - coupon: 'كوبون حصري 100٪', - end: 'لخطة Dify الاحترافية.', - }, - currentSigned: 'تم تسجيل الدخول حاليًا باسم', - form: { - schoolName: { - title: 'اسم مدرستك', - placeholder: 'أدخل الاسم الرسمي الكامل لمدرستك', - }, - schoolRole: { - title: 'دورك في المدرسة', - option: { - student: 'طالب', - teacher: 'معلم', - administrator: 'مسؤول المدرسة', - }, - }, - terms: { - title: 'الشروط والاتفاقيات', - desc: { - front: 'المعلومات الخاصة بك واستخدام حالة التحقق التعليمي تخضع لـ', - and: 'و', - end: '. من خلال الإرسال:', - termsOfService: 'شروط الخدمة', - privacyPolicy: 'سياسة الخصوصية', - }, - option: { - age: 'أؤكد أن عمري 18 عامًا على الأقل', - inSchool: 'أؤكد أنني مسجل أو موظف في المؤسسة المقدمة. قد تطلب Dify إثبات التسجيل/التوظيف. إذا قدمت معلومات خاطئة حول أهليتي، فأوافق على دفع أي رسوم تم التنازل عنها مبدئيًا بناءً على حالة التعليم الخاصة بي.', - }, - }, - }, - submit: 'إرسال', - submitError: 'فشل إرسال النموذج. يرجى المحاولة مرة أخرى لاحقًا.', - learn: 'تعرف على كيفية التحقق من التعليم', - successTitle: 'لقد حصلت على التحقق التعليمي من Dify', - successContent: 'لقد أصدرنا كوبون خصم 100٪ لخطة Dify Professional لحسابك. الكوبون ساري لمدة عام واحد، يرجى استخدامه خلال فترة الصلاحية.', - rejectTitle: 'تم رفض التحقق التعليمي الخاص بك في Dify', - rejectContent: 'لسوء الحظ، أنت غير مؤهل للحصول على حالة التحقق التعليمي وبالتالي لا يمكنك الحصول على كوبون حصري 100٪ لخطة Dify Professional إذا كنت تستخدم عنوان البريد الإلكتروني هذا.', - emailLabel: 'بريدك الإلكتروني الحالي', - notice: { - dateFormat: 'MM/DD/YYYY', - expired: { - title: 'انتهت حالة التعليم الخاصة بك', - summary: { - line1: 'لا يزال بإمكانك الوصول إلى Dify واستخدامه. ', - line2: 'ومع ذلك، لم تعد مؤهلاً للحصول على كوبونات خصم التعليم الجديدة.', - }, - }, - isAboutToExpire: { - title: 'ستنتهي حالة التعليم الخاصة بك في {{date}}', - summary: 'لا تقلق - لن يؤثر هذا على اشتراكك الحالي، لكنك لن تحصل على خضم التعليم عند تجديده ما لم تتحقق من حالتك مرة أخرى.', - }, - stillInEducation: { - title: 'هل ما زلت في التعليم؟', - expired: 'تحقق مرة أخرى الآن للحصول على كوبون جديد للعام الدراسي القادم. سنضيفه إلى حسابك ويمكنك استخدامه للترقية التالية.', - isAboutToExpire: 'تحقق مرة أخرى الآن للحصول على كوبون جديد للعام الدراسي القادم. سيتم حفظه في حسابك وجاهز للاستخدام في تجديدك التالي.', - }, - alreadyGraduated: { - title: 'تخرجت بالفعل؟', - expired: 'لا تتردد في الترقية في أي وقت للحصول على الوصول الكامل إلى الميزات المدفوعة.', - isAboutToExpire: 'سيظل اشتراكك الحالي نشطًا. عندما ينتهي، سيتم نقلك إلى خطة Sandbox، أو يمكنك الترقية في أي وقت لاستعادة الوصول الكامل إلى الميزات المدفوعة.', - }, - action: { - dismiss: 'تجاهل', - upgrade: 'ترقية', - reVerify: 'إعادة التحقق', - }, - }, -} - -export default translation diff --git a/web/i18n/ar-TN/explore.json b/web/i18n/ar-TN/explore.json new file mode 100644 index 0000000000..5c9b0d7f40 --- /dev/null +++ b/web/i18n/ar-TN/explore.json @@ -0,0 +1,42 @@ +{ + "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": { + "Agent": "وكيل", + "Assistant": "مساعد", + "Writing": "كتابة", + "Translate": "ترجمة", + "Programming": "برمجة", + "HR": "الموارد البشرية", + "Workflow": "سير العمل", + "Entertainment": "ترفيه" + } +} diff --git a/web/i18n/ar-TN/explore.ts b/web/i18n/ar-TN/explore.ts deleted file mode 100644 index 671c1ae827..0000000000 --- a/web/i18n/ar-TN/explore.ts +++ /dev/null @@ -1,44 +0,0 @@ -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: { - Agent: 'وكيل', - Assistant: 'مساعد', - Writing: 'كتابة', - Translate: 'ترجمة', - Programming: 'برمجة', - HR: 'الموارد البشرية', - Workflow: 'سير العمل', - Entertainment: 'ترفيه', - }, -} - -export default translation diff --git a/web/i18n/ar-TN/layout.json b/web/i18n/ar-TN/layout.json new file mode 100644 index 0000000000..b4447464e8 --- /dev/null +++ b/web/i18n/ar-TN/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "expandSidebar": "توسيع الشريط الجانبي", + "collapseSidebar": "طي الشريط الجانبي" + } +} diff --git a/web/i18n/ar-TN/layout.ts b/web/i18n/ar-TN/layout.ts deleted file mode 100644 index 5f6a45615f..0000000000 --- a/web/i18n/ar-TN/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - expandSidebar: 'توسيع الشريط الجانبي', - collapseSidebar: 'طي الشريط الجانبي', - }, -} - -export default translation diff --git a/web/i18n/ar-TN/login.json b/web/i18n/ar-TN/login.json new file mode 100644 index 0000000000..353cc33c55 --- /dev/null +++ b/web/i18n/ar-TN/login.json @@ -0,0 +1,124 @@ +{ + "pageTitle": "تسجيل الدخول إلى Dify", + "pageTitleForE": "مرحبًا، لنبدأ!", + "welcome": "👋 مرحبًا! يرجى تسجيل الدخول للبدء.", + "email": "عنوان البريد الإلكتروني", + "emailPlaceholder": "بريدك الإلكتروني", + "password": "كلمة المرور", + "passwordPlaceholder": "كلمة المرور الخاصة بك", + "name": "اسم المستخدم", + "namePlaceholder": "اسم المستخدم الخاص بك", + "forget": "نسيت كلمة المرور؟", + "signBtn": "تسجيل الدخول", + "continueWithCode": "المتابعة مع الرمز", + "sendVerificationCode": "إرسال رمز التحقق", + "usePassword": "استخدام كلمة المرور", + "useVerificationCode": "استخدام رمز التحقق", + "or": "أو", + "installBtn": "إعداد", + "setAdminAccount": "إعداد حساب مسؤول", + "setAdminAccountDesc": "أقصى امتيازات لحساب المسؤول، والتي يمكن استخدامها لإنشاء التطبيقات وإدارة مزودي LLM، إلخ.", + "createAndSignIn": "إنشاء وتسجيل الدخول", + "oneMoreStep": "خطوة واحدة أخرى", + "createSample": "بناءً على هذه المعلومات، سنقوم بإنشاء تطبيق تجريبي لك", + "invitationCode": "رمز الدعوة", + "invitationCodePlaceholder": "رمز الدعوة الخاص بك", + "interfaceLanguage": "لغة الواجهة", + "timezone": "المنطقة الزمنية", + "go": "الذهاب إلى Dify", + "sendUsMail": "أرسل لنا مقدمتك عبر البريد الإلكتروني، وسنتعامل مع طلب الدعوة.", + "acceptPP": "لقد قرأت وأوافق على سياسة الخصوصية", + "reset": "يرجى تشغيل الأمر التالي لإعادة تعيين كلمة المرور الخاصة بك", + "withGitHub": "المتابعة مع GitHub", + "withGoogle": "المتابعة مع Google", + "withSSO": "المتابعة مع SSO", + "rightTitle": "أطلق العنان للإمكانات الكاملة لـ LLM", + "rightDesc": "بناء تطبيقات الذكاء الاصطناعي الجذابة بصريًا والقابلة للتشغيل والقابلة للتحسين بسهولة.", + "tos": "شروط الخدمة", + "pp": "سياسة الخصوصية", + "tosDesc": "بالتسجيل، فإنك توافق على", + "goToInit": "إذا لم تقم بتهيئة الحساب، يرجى الانتقال إلى صفحة التهيئة", + "dontHave": "ليس لديك؟", + "invalidInvitationCode": "رمز دعوة غير صالح", + "accountAlreadyInited": "تمت تهيئة الحساب بالفعل", + "forgotPassword": "نسيت كلمة المرور؟", + "resetLinkSent": "تم إرسال رابط إعادة التعيين", + "sendResetLink": "إرسال رابط إعادة التعيين", + "backToSignIn": "العودة لتسجيل الدخول", + "forgotPasswordDesc": "يرجى إدخال عنوان بريدك الإلكتروني لإعادة تعيين كلمة المرور الخاصة بك. سنرسل لك بريدًا إلكترونيًا يحتوي على تعليمات حول كيفية إعادة تعيين كلمة المرور الخاصة بك.", + "checkEmailForResetLink": "يرجى التحقق من بريدك الإلكتروني للحصول على رابط لإعادة تعيين كلمة المرور الخاصة بك. إذا لم يظهر في غضون بضع دقائق، فتأكد من التحقق من مجلد الرسائل غير المرغوب فيها.", + "passwordChanged": "سجل الدخول الآن", + "changePassword": "تعيين كلمة مرور", + "changePasswordTip": "يرجى إدخال كلمة مرور جديدة لحسابك", + "changePasswordBtn": "تعيين كلمة مرور", + "invalidToken": "رمز غير صالح أو منتهي الصلاحية", + "confirmPassword": "تأكيد كلمة المرور", + "confirmPasswordPlaceholder": "تأكيد كلمة المرور الجديدة", + "passwordChangedTip": "تم تغيير كلمة المرور الخاصة بك بنجاح", + "error": { + "emailEmpty": "عنوان البريد الإلكتروني مطلوب", + "emailInValid": "يرجى إدخال عنوان بريد إلكتروني صالح", + "nameEmpty": "الاسم مطلوب", + "passwordEmpty": "كلمة المرور مطلوبة", + "passwordLengthInValid": "يجب أن تتكون كلمة المرور من 8 أحرف على الأقل", + "passwordInvalid": "يجب أن تحتوي كلمة المرور على أحرف وأرقام، ويجب أن يكون الطول أكبر من 8", + "registrationNotAllowed": "الحساب غير موجود. يرجى الاتصال بمسؤول النظام للتسجيل.", + "invalidEmailOrPassword": "بريد إلكتروني أو كلمة مرور غير صالحة." + }, + "license": { + "tip": "قبل بدء تشغيل Dify Community Edition، اقرأ GitHub", + "link": "ترخيص مفتوح المصدر" + }, + "join": "انضم ", + "joinTipStart": "يدعوك للانضمام إلى ", + "joinTipEnd": " فريق على Dify", + "invalid": "انتهت صلاحية الرابط", + "explore": "استكشاف Dify", + "activatedTipStart": "لقد انضممت إلى", + "activatedTipEnd": "فريق", + "activated": "سجل الدخول الآن", + "adminInitPassword": "كلمة مرور تهيئة المسؤول", + "validate": "تحقق", + "checkCode": { + "checkYourEmail": "تحقق من بريدك الإلكتروني", + "tipsPrefix": "نرسل رمز التحقق إلى ", + "validTime": "ضع في اعتبارك أن الرمز صالح لمدة 5 دقائق", + "verificationCode": "رمز التحقق", + "verificationCodePlaceholder": "أدخل رمزًا مكونًا من 6 أرقام", + "verify": "تحقق", + "didNotReceiveCode": "لم تتلق الرمز؟ ", + "resend": "إعادة الإرسال", + "useAnotherMethod": "استخدام طريقة أخرى", + "emptyCode": "الرمز مطلوب", + "invalidCode": "رمز غير صالح" + }, + "resetPassword": "إعادة تعيين كلمة المرور", + "resetPasswordDesc": "اكتب البريد الإلكتروني الذي استخدمته للتسجيل في Dify وسنرسل لك بريدًا إلكترونيًا لإعادة تعيين كلمة المرور.", + "backToLogin": "العودة لتسجيل الدخول", + "setYourAccount": "إعداد حسابك", + "enterYourName": "يرجى إدخال اسم المستخدم الخاص بك", + "back": "عودة", + "noLoginMethod": "طريقة المصادقة غير مكونة", + "noLoginMethodTip": "يرجى الاتصال بمسؤول النظام لإضافة طريقة مصادقة.", + "licenseExpired": "انتهت صلاحية الترخيص", + "licenseExpiredTip": "انتهت صلاحية ترخيص Dify Enterprise لمساحة العمل الخاصة بك. يرجى الاتصال بالمسؤول لمواصلة استخدام Dify.", + "licenseLost": "فقدان الترخيص", + "licenseLostTip": "فشل الاتصال بخادم ترخيص Dify. يرجى الاتصال بالمسؤول لمواصلة استخدام Dify.", + "licenseInactive": "الترخيص غير نشط", + "licenseInactiveTip": "ترخيص Dify Enterprise لمساحة العمل الخاصة بك غير نشط. يرجى الاتصال بالمسؤول لمواصلة استخدام Dify.", + "webapp": { + "login": "تسجيل الدخول", + "noLoginMethod": "طريقة المصادقة غير مكونة لتطبيق الويب", + "noLoginMethodTip": "يرجى الاتصال بمسؤول النظام لإضافة طريقة مصادقة.", + "disabled": "مصادقة Webapp معطلة. يرجى الاتصال بمسؤول النظام لتمكينها. يمكنك محاولة استخدام التطبيق مباشرة." + }, + "signup": { + "noAccount": "ليس لديك حساب؟ ", + "signUp": "اشتراك", + "createAccount": "إنشاء حسابك", + "welcome": "👋 مرحبًا! يرجى ملء التفاصيل للبدء.", + "verifyMail": "المتابعة مع رمز التحقق", + "haveAccount": "لديك حساب بالفعل؟ ", + "signIn": "تسجيل الدخول" + } +} diff --git a/web/i18n/ar-TN/login.ts b/web/i18n/ar-TN/login.ts deleted file mode 100644 index 2784e4b2bd..0000000000 --- a/web/i18n/ar-TN/login.ts +++ /dev/null @@ -1,126 +0,0 @@ -const translation = { - pageTitle: 'تسجيل الدخول إلى Dify', - pageTitleForE: 'مرحبًا، لنبدأ!', - welcome: '👋 مرحبًا! يرجى تسجيل الدخول للبدء.', - email: 'عنوان البريد الإلكتروني', - emailPlaceholder: 'بريدك الإلكتروني', - password: 'كلمة المرور', - passwordPlaceholder: 'كلمة المرور الخاصة بك', - name: 'اسم المستخدم', - namePlaceholder: 'اسم المستخدم الخاص بك', - forget: 'نسيت كلمة المرور؟', - signBtn: 'تسجيل الدخول', - continueWithCode: 'المتابعة مع الرمز', - sendVerificationCode: 'إرسال رمز التحقق', - usePassword: 'استخدام كلمة المرور', - useVerificationCode: 'استخدام رمز التحقق', - or: 'أو', - installBtn: 'إعداد', - setAdminAccount: 'إعداد حساب مسؤول', - setAdminAccountDesc: 'أقصى امتيازات لحساب المسؤول، والتي يمكن استخدامها لإنشاء التطبيقات وإدارة مزودي LLM، إلخ.', - createAndSignIn: 'إنشاء وتسجيل الدخول', - oneMoreStep: 'خطوة واحدة أخرى', - createSample: 'بناءً على هذه المعلومات، سنقوم بإنشاء تطبيق تجريبي لك', - invitationCode: 'رمز الدعوة', - invitationCodePlaceholder: 'رمز الدعوة الخاص بك', - interfaceLanguage: 'لغة الواجهة', - timezone: 'المنطقة الزمنية', - go: 'الذهاب إلى Dify', - sendUsMail: 'أرسل لنا مقدمتك عبر البريد الإلكتروني، وسنتعامل مع طلب الدعوة.', - acceptPP: 'لقد قرأت وأوافق على سياسة الخصوصية', - reset: 'يرجى تشغيل الأمر التالي لإعادة تعيين كلمة المرور الخاصة بك', - withGitHub: 'المتابعة مع GitHub', - withGoogle: 'المتابعة مع Google', - withSSO: 'المتابعة مع SSO', - rightTitle: 'أطلق العنان للإمكانات الكاملة لـ LLM', - rightDesc: 'بناء تطبيقات الذكاء الاصطناعي الجذابة بصريًا والقابلة للتشغيل والقابلة للتحسين بسهولة.', - tos: 'شروط الخدمة', - pp: 'سياسة الخصوصية', - tosDesc: 'بالتسجيل، فإنك توافق على', - goToInit: 'إذا لم تقم بتهيئة الحساب، يرجى الانتقال إلى صفحة التهيئة', - dontHave: 'ليس لديك؟', - invalidInvitationCode: 'رمز دعوة غير صالح', - accountAlreadyInited: 'تمت تهيئة الحساب بالفعل', - forgotPassword: 'نسيت كلمة المرور؟', - resetLinkSent: 'تم إرسال رابط إعادة التعيين', - sendResetLink: 'إرسال رابط إعادة التعيين', - backToSignIn: 'العودة لتسجيل الدخول', - forgotPasswordDesc: 'يرجى إدخال عنوان بريدك الإلكتروني لإعادة تعيين كلمة المرور الخاصة بك. سنرسل لك بريدًا إلكترونيًا يحتوي على تعليمات حول كيفية إعادة تعيين كلمة المرور الخاصة بك.', - checkEmailForResetLink: 'يرجى التحقق من بريدك الإلكتروني للحصول على رابط لإعادة تعيين كلمة المرور الخاصة بك. إذا لم يظهر في غضون بضع دقائق، فتأكد من التحقق من مجلد الرسائل غير المرغوب فيها.', - passwordChanged: 'سجل الدخول الآن', - changePassword: 'تعيين كلمة مرور', - changePasswordTip: 'يرجى إدخال كلمة مرور جديدة لحسابك', - changePasswordBtn: 'تعيين كلمة مرور', - invalidToken: 'رمز غير صالح أو منتهي الصلاحية', - confirmPassword: 'تأكيد كلمة المرور', - confirmPasswordPlaceholder: 'تأكيد كلمة المرور الجديدة', - passwordChangedTip: 'تم تغيير كلمة المرور الخاصة بك بنجاح', - error: { - emailEmpty: 'عنوان البريد الإلكتروني مطلوب', - emailInValid: 'يرجى إدخال عنوان بريد إلكتروني صالح', - nameEmpty: 'الاسم مطلوب', - passwordEmpty: 'كلمة المرور مطلوبة', - passwordLengthInValid: 'يجب أن تتكون كلمة المرور من 8 أحرف على الأقل', - passwordInvalid: 'يجب أن تحتوي كلمة المرور على أحرف وأرقام، ويجب أن يكون الطول أكبر من 8', - registrationNotAllowed: 'الحساب غير موجود. يرجى الاتصال بمسؤول النظام للتسجيل.', - invalidEmailOrPassword: 'بريد إلكتروني أو كلمة مرور غير صالحة.', - }, - license: { - tip: 'قبل بدء تشغيل Dify Community Edition، اقرأ GitHub', - link: 'ترخيص مفتوح المصدر', - }, - join: 'انضم ', - joinTipStart: 'يدعوك للانضمام إلى ', - joinTipEnd: ' فريق على Dify', - invalid: 'انتهت صلاحية الرابط', - explore: 'استكشاف Dify', - activatedTipStart: 'لقد انضممت إلى', - activatedTipEnd: 'فريق', - activated: 'سجل الدخول الآن', - adminInitPassword: 'كلمة مرور تهيئة المسؤول', - validate: 'تحقق', - checkCode: { - checkYourEmail: 'تحقق من بريدك الإلكتروني', - tipsPrefix: 'نرسل رمز التحقق إلى ', - validTime: 'ضع في اعتبارك أن الرمز صالح لمدة 5 دقائق', - verificationCode: 'رمز التحقق', - verificationCodePlaceholder: 'أدخل رمزًا مكونًا من 6 أرقام', - verify: 'تحقق', - didNotReceiveCode: 'لم تتلق الرمز؟ ', - resend: 'إعادة الإرسال', - useAnotherMethod: 'استخدام طريقة أخرى', - emptyCode: 'الرمز مطلوب', - invalidCode: 'رمز غير صالح', - }, - resetPassword: 'إعادة تعيين كلمة المرور', - resetPasswordDesc: 'اكتب البريد الإلكتروني الذي استخدمته للتسجيل في Dify وسنرسل لك بريدًا إلكترونيًا لإعادة تعيين كلمة المرور.', - backToLogin: 'العودة لتسجيل الدخول', - setYourAccount: 'إعداد حسابك', - enterYourName: 'يرجى إدخال اسم المستخدم الخاص بك', - back: 'عودة', - noLoginMethod: 'طريقة المصادقة غير مكونة', - noLoginMethodTip: 'يرجى الاتصال بمسؤول النظام لإضافة طريقة مصادقة.', - licenseExpired: 'انتهت صلاحية الترخيص', - licenseExpiredTip: 'انتهت صلاحية ترخيص Dify Enterprise لمساحة العمل الخاصة بك. يرجى الاتصال بالمسؤول لمواصلة استخدام Dify.', - licenseLost: 'فقدان الترخيص', - licenseLostTip: 'فشل الاتصال بخادم ترخيص Dify. يرجى الاتصال بالمسؤول لمواصلة استخدام Dify.', - licenseInactive: 'الترخيص غير نشط', - licenseInactiveTip: 'ترخيص Dify Enterprise لمساحة العمل الخاصة بك غير نشط. يرجى الاتصال بالمسؤول لمواصلة استخدام Dify.', - webapp: { - login: 'تسجيل الدخول', - noLoginMethod: 'طريقة المصادقة غير مكونة لتطبيق الويب', - noLoginMethodTip: 'يرجى الاتصال بمسؤول النظام لإضافة طريقة مصادقة.', - disabled: 'مصادقة Webapp معطلة. يرجى الاتصال بمسؤول النظام لتمكينها. يمكنك محاولة استخدام التطبيق مباشرة.', - }, - signup: { - noAccount: 'ليس لديك حساب؟ ', - signUp: 'اشتراك', - createAccount: 'إنشاء حسابك', - welcome: '👋 مرحبًا! يرجى ملء التفاصيل للبدء.', - verifyMail: 'المتابعة مع رمز التحقق', - haveAccount: 'لديك حساب بالفعل؟ ', - signIn: 'تسجيل الدخول', - }, -} - -export default translation diff --git a/web/i18n/ar-TN/oauth.json b/web/i18n/ar-TN/oauth.json new file mode 100644 index 0000000000..90520b4e91 --- /dev/null +++ b/web/i18n/ar-TN/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "loggedIn": "يريد هذا التطبيق الوصول إلى المعلومات التالية من حساب Dify Cloud الخاص بك.", + "notLoggedIn": "يريد هذا التطبيق الوصول إلى حساب Dify Cloud الخاص بك", + "needLogin": "يرجى تسجيل الدخول للتفويض", + "common": "نحن نحترم خصوصيتك وسنستخدم هذه المعلومات فقط لتحسين تجربتك مع أدوات المطورين لدينا." + }, + "connect": "الاتصال بـ", + "continue": "متابعة", + "switchAccount": "تبديل الحساب", + "login": "تسجيل الدخول", + "scopes": { + "name": "الاسم", + "email": "البريد الإلكتروني", + "avatar": "الصورة الرمزية", + "languagePreference": "تفضيل اللغة", + "timezone": "المنطقة الزمنية" + }, + "error": { + "invalidParams": "معلمات غير صالحة", + "authorizeFailed": "فشل التفويض", + "authAppInfoFetchFailed": "فشل جلب معلومات التطبيق للتفويض" + }, + "unknownApp": "تطبيق غير معروف" +} diff --git a/web/i18n/ar-TN/oauth.ts b/web/i18n/ar-TN/oauth.ts deleted file mode 100644 index 87c0600d0b..0000000000 --- a/web/i18n/ar-TN/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - loggedIn: 'يريد هذا التطبيق الوصول إلى المعلومات التالية من حساب Dify Cloud الخاص بك.', - notLoggedIn: 'يريد هذا التطبيق الوصول إلى حساب Dify Cloud الخاص بك', - needLogin: 'يرجى تسجيل الدخول للتفويض', - common: 'نحن نحترم خصوصيتك وسنستخدم هذه المعلومات فقط لتحسين تجربتك مع أدوات المطورين لدينا.', - }, - connect: 'الاتصال بـ', - continue: 'متابعة', - switchAccount: 'تبديل الحساب', - login: 'تسجيل الدخول', - scopes: { - name: 'الاسم', - email: 'البريد الإلكتروني', - avatar: 'الصورة الرمزية', - languagePreference: 'تفضيل اللغة', - timezone: 'المنطقة الزمنية', - }, - error: { - invalidParams: 'معلمات غير صالحة', - authorizeFailed: 'فشل التفويض', - authAppInfoFetchFailed: 'فشل جلب معلومات التطبيق للتفويض', - }, - unknownApp: 'تطبيق غير معروف', -} - -export default translation diff --git a/web/i18n/ar-TN/pipeline.json b/web/i18n/ar-TN/pipeline.json new file mode 100644 index 0000000000..72a88f25af --- /dev/null +++ b/web/i18n/ar-TN/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "goToAddDocuments": "الذهاب لإضافة مستندات", + "publishAs": "النشر كقالب سير عمل مخصص", + "confirmPublish": "تأكيد النشر", + "confirmPublishContent": "بعد نشر سير عمل المعرفة بنجاح، لا يمكن تعديل هيكل التقطيع لقاعدة المعرفة هذه. هل أنت متأكد أنك تريد نشرها؟", + "publishAsPipeline": { + "name": "اسم وأيقونة سير العمل", + "namePlaceholder": "يرجى إدخال اسم سير عمل المعرفة هذا. (مطلوب) ", + "description": "وصف المعرفة", + "descriptionPlaceholder": "يرجى إدخال وصف سير عمل المعرفة هذا. (اختياري) " + }, + "testRun": "تشغيل اختباري", + "preparingDataSource": "جارٍ إعداد مصدر البيانات", + "reRun": "إعادة التشغيل", + "processing": "جارٍ المعالجة" + }, + "inputField": { + "create": "إنشاء حقل إدخال المستخدم", + "manage": "إدارة" + }, + "publishToast": { + "title": "لم يتم نشر سير العمل هذا بعد", + "desc": "عندما لا يتم نشر سير العمل، يمكنك تعديل هيكل التقطيع في عقدة قاعدة المعرفة، وسيتم حفظ تنظيم السير العمل والتغييرات تلقائيًا كمسودة." + }, + "result": { + "resultPreview": { + "loading": "جاري المعالجة... ارجو الانتظار", + "error": "حدث خطأ أثناء التنفيذ", + "viewDetails": "عرض التفاصيل", + "footerTip": "في وضع التشغيل الاختباري، يمكن معاينة ما يصل إلى {{count}} قطعة" + } + }, + "ragToolSuggestions": { + "title": "اقتراحات لـ RAG", + "noRecommendationPlugins": "لا توجد إضافات موصى بها، ابحث عن المزيد في السوق" + } +} diff --git a/web/i18n/ar-TN/pipeline.ts b/web/i18n/ar-TN/pipeline.ts deleted file mode 100644 index fd17447f4d..0000000000 --- a/web/i18n/ar-TN/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - goToAddDocuments: 'الذهاب لإضافة مستندات', - publishAs: 'النشر كقالب سير عمل مخصص', - confirmPublish: 'تأكيد النشر', - confirmPublishContent: 'بعد نشر سير عمل المعرفة بنجاح، لا يمكن تعديل هيكل التقطيع لقاعدة المعرفة هذه. هل أنت متأكد أنك تريد نشرها؟', - publishAsPipeline: { - name: 'اسم وأيقونة سير العمل', - namePlaceholder: 'يرجى إدخال اسم سير عمل المعرفة هذا. (مطلوب) ', - description: 'وصف المعرفة', - descriptionPlaceholder: 'يرجى إدخال وصف سير عمل المعرفة هذا. (اختياري) ', - }, - testRun: 'تشغيل اختباري', - preparingDataSource: 'جارٍ إعداد مصدر البيانات', - reRun: 'إعادة التشغيل', - processing: 'جارٍ المعالجة', - }, - inputField: { - create: 'إنشاء حقل إدخال المستخدم', - manage: 'إدارة', - }, - publishToast: { - title: 'لم يتم نشر سير العمل هذا بعد', - desc: 'عندما لا يتم نشر سير العمل، يمكنك تعديل هيكل التقطيع في عقدة قاعدة المعرفة، وسيتم حفظ تنظيم السير العمل والتغييرات تلقائيًا كمسودة.', - }, - result: { - resultPreview: { - loading: 'جاري المعالجة... ارجو الانتظار', - error: 'حدث خطأ أثناء التنفيذ', - viewDetails: 'عرض التفاصيل', - footerTip: 'في وضع التشغيل الاختباري، يمكن معاينة ما يصل إلى {{count}} قطعة', - }, - }, - ragToolSuggestions: { - title: 'اقتراحات لـ RAG', - noRecommendationPlugins: 'لا توجد إضافات موصى بها، ابحث عن المزيد في السوق', - }, -} - -export default translation diff --git a/web/i18n/ar-TN/plugin-tags.json b/web/i18n/ar-TN/plugin-tags.json new file mode 100644 index 0000000000..a943fe2945 --- /dev/null +++ b/web/i18n/ar-TN/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "allTags": "كل العلامات", + "searchTags": "البحث في العلامات", + "tags": { + "agent": "وكيل", + "rag": "RAG", + "search": "بحث", + "image": "صورة", + "videos": "فيديوهات", + "weather": "طقس", + "finance": "تمويل", + "design": "تصميم", + "travel": "سفر", + "social": "اجتماعي", + "news": "أخبار", + "medical": "طبي", + "productivity": "إنتاجية", + "education": "تعليم", + "business": "أعمال", + "entertainment": "ترفيه", + "utilities": "أدوات مساعدة", + "other": "أخرى" + } +} diff --git a/web/i18n/ar-TN/plugin-tags.ts b/web/i18n/ar-TN/plugin-tags.ts deleted file mode 100644 index 51981179a9..0000000000 --- a/web/i18n/ar-TN/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - allTags: 'كل العلامات', - searchTags: 'البحث في العلامات', - tags: { - agent: 'وكيل', - rag: 'RAG', - search: 'بحث', - image: 'صورة', - videos: 'فيديوهات', - weather: 'طقس', - finance: 'تمويل', - design: 'تصميم', - travel: 'سفر', - social: 'اجتماعي', - news: 'أخبار', - medical: 'طبي', - productivity: 'إنتاجية', - education: 'تعليم', - business: 'أعمال', - entertainment: 'ترفيه', - utilities: 'أدوات مساعدة', - other: 'أخرى', - }, -} - -export default translation diff --git a/web/i18n/ar-TN/plugin-trigger.json b/web/i18n/ar-TN/plugin-trigger.json new file mode 100644 index 0000000000..2e042ced01 --- /dev/null +++ b/web/i18n/ar-TN/plugin-trigger.json @@ -0,0 +1,184 @@ +{ + "subscription": { + "title": "الاشتراكات", + "listNum": "{{num}} اشتراكات", + "empty": { + "title": "لا توجد اشتراكات", + "button": "اشتراك جديد" + }, + "createButton": { + "oauth": "اشتراك جديد باستخدام OAuth", + "apiKey": "اشتراك جديد باستخدام مفتاح API", + "manual": "الصق عنوان URL لإنشاء اشتراك جديد" + }, + "createSuccess": "تم إنشاء الاشتراك بنجاح", + "createFailed": "فشل إنشاء الاشتراك", + "maxCount": "الحد الأقصى {{num}} اشتراكات", + "selectPlaceholder": "حدد اشتراكًا", + "noSubscriptionSelected": "لم يتم تحديد أي اشتراك", + "subscriptionRemoved": "تمت إزالة الاشتراك", + "list": { + "title": "الاشتراكات", + "addButton": "إضافة", + "tip": "استلام الأحداث عبر الاشتراك", + "item": { + "enabled": "ممكن", + "disabled": "معطل", + "credentialType": { + "api_key": "مفتاح API", + "oauth2": "OAuth", + "unauthorized": "يدوي" + }, + "actions": { + "delete": "حذف", + "deleteConfirm": { + "title": "حذف {{name}}؟", + "success": "تم حذف الاشتراك {{name}} بنجاح", + "error": "فشل حذف الاشتراك {{name}}", + "content": "بمجرد الحذف، لا يمكن استعادة هذا الاشتراك. يرجى التأكيد.", + "contentWithApps": "الاشتراك الحالي مشار إليه بواسطة {{count}} تطبيقات. سيؤدي حذفه إلى توقف التطبيقات المكونة عن تلقي أحداث الاشتراك.", + "confirm": "تأكيد الحذف", + "cancel": "إلغاء", + "confirmInputWarning": "يرجى إدخال الاسم الصحيح للتأكيد.", + "confirmInputPlaceholder": "أدخل \"{{name}}\" للتأكيد.", + "confirmInputTip": "يرجى إدخال \"{{name}}\" للتأكيد." + } + }, + "status": { + "active": "نشط", + "inactive": "غير نشط" + }, + "usedByNum": "تستخدم من قبل {{num}} سير عمل", + "noUsed": "لا يوجد سير عمل مستخدم" + } + }, + "addType": { + "title": "إضافة اشتراك", + "description": "اختر الطريقة التي تريد بها إنشاء اشتراك المشغل الخاص بك", + "options": { + "apikey": { + "title": "إنشاء باستخدام مفتاح API", + "description": "إنشاء اشتراك تلقائيًا باستخدام بيانات اعتماد API" + }, + "oauth": { + "title": "إنشاء باستخدام OAuth", + "description": "التفويض مع منصة تابعة لجهة خارجية لإنشاء اشتراك", + "clientSettings": "إعدادات عميل OAuth", + "clientTitle": "عميل OAuth", + "default": "افتراضي", + "custom": "مخصص" + }, + "manual": { + "title": "الإعداد اليدوي", + "description": "الصق عنوان URL لإنشاء اشتراك جديد", + "tip": "تكوين عنوان URL على منصة تابعة لجهة خارجية يدويًا" + } + } + } + }, + "modal": { + "steps": { + "verify": "تحقق", + "configuration": "تكوين" + }, + "common": { + "cancel": "إلغاء", + "back": "رجوع", + "next": "التالي", + "create": "إنشاء", + "verify": "تحقق", + "authorize": "تفويض", + "creating": "جارٍ الإنشاء...", + "verifying": "جارٍ التحقق...", + "authorizing": "جارٍ التفويض..." + }, + "oauthRedirectInfo": "نظرًا لعدم العثور على أسرار عميل النظام لمزود الأداة هذا، فإن إعداده يدويًا مطلوب، بالنسبة لـ redirect_uri، يرجى الاستخدام", + "apiKey": { + "title": "إنشاء باستخدام مفتاح API", + "verify": { + "title": "التحقق من بيانات الاعتماد", + "description": "يرجى تقديم بيانات اعتماد واجهة برمجة التطبيقات الخاصة بك للتحقق من الوصول", + "error": "فشل التحقق من بيانات الاعتماد. يرجى التحقق من مفتاح API الخاص بك.", + "success": "تم التحقق من بيانات الاعتماد بنجاح" + }, + "configuration": { + "title": "تكوين الاشتراك", + "description": "إعداد معلمات الاشتراك الخاصة بك" + } + }, + "oauth": { + "title": "إنشاء باستخدام OAuth", + "authorization": { + "title": "تفويض OAuth", + "description": "تفويض Dify للوصول إلى حسابك", + "redirectUrl": "عنوان URL لإعادة التوجيه", + "redirectUrlHelp": "استخدم عنوان URL هذا في تكوين تطبيق OAuth الخاص بك", + "authorizeButton": "تفويض مع {{provider}}", + "waitingAuth": "في انتظار التفويض...", + "authSuccess": "تم التفويض بنجاح", + "authFailed": "فشل الحصول على معلومات تفويض OAuth", + "waitingJump": "تم التفويض، في انتظار الانتقال" + }, + "configuration": { + "title": "تكوين الاشتراك", + "description": "إعداد معلمات الاشتراك الخاصة بك بعد التفويض", + "success": "تم تكوين OAuth بنجاح", + "failed": "فشل تكوين OAuth" + }, + "remove": { + "success": "تمت إزالة OAuth بنجاح", + "failed": "فشل إزالة OAuth" + }, + "save": { + "success": "تم حفظ تكوين OAuth بنجاح" + } + }, + "manual": { + "title": "الإعداد اليدوي", + "description": "تكوين اشتراك web hook الخاص بك يدويًا", + "logs": { + "title": "سجلات الطلب", + "request": "طلب", + "loading": "في انتظار الطلب من {{pluginName}}..." + } + }, + "form": { + "subscriptionName": { + "label": "اسم الاشتراك", + "placeholder": "أدخل اسم الاشتراك", + "required": "اسم الاشتراك مطلوب" + }, + "callbackUrl": { + "label": "عنوان URL لرد الاتصال", + "description": "سيتلقى عنوان URL هذا أحداث web hook", + "tooltip": "توفير نقطة نهاية يمكن الوصول إليها بشكل عام يمكنها استلام طلبات رد الاتصال من مزود المشغل.", + "placeholder": "جارٍ الإنشاء...", + "privateAddressWarning": "يبدو أن عنوان URL هذا هو عنوان داخلي، مما قد يتسبب في فشل طلبات web hook. يمكنك تغيير TRIGGER_URL إلى عنوان عام." + } + }, + "errors": { + "createFailed": "فشل إنشاء الاشتراك", + "verifyFailed": "فشل التحقق من بيانات الاعتماد", + "authFailed": "فشل التفويض", + "networkError": "خطأ في الشبكة، يرجى المحاولة مرة أخرى" + } + }, + "events": { + "title": "الأحداث المتاحة", + "description": "الأحداث التي يمكن لمكون المشغل الإضافي هذا الاشتراك فيها", + "empty": "لا توجد أحداث متاحة", + "event": "حدث", + "events": "أحداث", + "actionNum": "{{num}} {{event}} متضمن", + "item": { + "parameters": "{{count}} معلمات", + "noParameters": "لا توجد معلمات" + }, + "output": "إخراج" + }, + "node": { + "status": { + "warning": "قطع الاتصال" + } + } +} diff --git a/web/i18n/ar-TN/plugin-trigger.ts b/web/i18n/ar-TN/plugin-trigger.ts deleted file mode 100644 index 8bea4cc8d5..0000000000 --- a/web/i18n/ar-TN/plugin-trigger.ts +++ /dev/null @@ -1,186 +0,0 @@ -const translation = { - subscription: { - title: 'الاشتراكات', - listNum: '{{num}} اشتراكات', - empty: { - title: 'لا توجد اشتراكات', - button: 'اشتراك جديد', - }, - createButton: { - oauth: 'اشتراك جديد باستخدام OAuth', - apiKey: 'اشتراك جديد باستخدام مفتاح API', - manual: 'الصق عنوان URL لإنشاء اشتراك جديد', - }, - createSuccess: 'تم إنشاء الاشتراك بنجاح', - createFailed: 'فشل إنشاء الاشتراك', - maxCount: 'الحد الأقصى {{num}} اشتراكات', - selectPlaceholder: 'حدد اشتراكًا', - noSubscriptionSelected: 'لم يتم تحديد أي اشتراك', - subscriptionRemoved: 'تمت إزالة الاشتراك', - list: { - title: 'الاشتراكات', - addButton: 'إضافة', - tip: 'استلام الأحداث عبر الاشتراك', - item: { - enabled: 'ممكن', - disabled: 'معطل', - credentialType: { - api_key: 'مفتاح API', - oauth2: 'OAuth', - unauthorized: 'يدوي', - }, - actions: { - delete: 'حذف', - deleteConfirm: { - title: 'حذف {{name}}؟', - success: 'تم حذف الاشتراك {{name}} بنجاح', - error: 'فشل حذف الاشتراك {{name}}', - content: 'بمجرد الحذف، لا يمكن استعادة هذا الاشتراك. يرجى التأكيد.', - contentWithApps: 'الاشتراك الحالي مشار إليه بواسطة {{count}} تطبيقات. سيؤدي حذفه إلى توقف التطبيقات المكونة عن تلقي أحداث الاشتراك.', - confirm: 'تأكيد الحذف', - cancel: 'إلغاء', - confirmInputWarning: 'يرجى إدخال الاسم الصحيح للتأكيد.', - confirmInputPlaceholder: 'أدخل "{{name}}" للتأكيد.', - confirmInputTip: 'يرجى إدخال "{{name}}" للتأكيد.', - }, - }, - status: { - active: 'نشط', - inactive: 'غير نشط', - }, - usedByNum: 'تستخدم من قبل {{num}} سير عمل', - noUsed: 'لا يوجد سير عمل مستخدم', - }, - }, - addType: { - title: 'إضافة اشتراك', - description: 'اختر الطريقة التي تريد بها إنشاء اشتراك المشغل الخاص بك', - options: { - apikey: { - title: 'إنشاء باستخدام مفتاح API', - description: 'إنشاء اشتراك تلقائيًا باستخدام بيانات اعتماد API', - }, - oauth: { - title: 'إنشاء باستخدام OAuth', - description: 'التفويض مع منصة تابعة لجهة خارجية لإنشاء اشتراك', - clientSettings: 'إعدادات عميل OAuth', - clientTitle: 'عميل OAuth', - default: 'افتراضي', - custom: 'مخصص', - }, - manual: { - title: 'الإعداد اليدوي', - description: 'الصق عنوان URL لإنشاء اشتراك جديد', - tip: 'تكوين عنوان URL على منصة تابعة لجهة خارجية يدويًا', - }, - }, - }, - }, - modal: { - steps: { - verify: 'تحقق', - configuration: 'تكوين', - }, - common: { - cancel: 'إلغاء', - back: 'رجوع', - next: 'التالي', - create: 'إنشاء', - verify: 'تحقق', - authorize: 'تفويض', - creating: 'جارٍ الإنشاء...', - verifying: 'جارٍ التحقق...', - authorizing: 'جارٍ التفويض...', - }, - oauthRedirectInfo: 'نظرًا لعدم العثور على أسرار عميل النظام لمزود الأداة هذا، فإن إعداده يدويًا مطلوب، بالنسبة لـ redirect_uri، يرجى الاستخدام', - apiKey: { - title: 'إنشاء باستخدام مفتاح API', - verify: { - title: 'التحقق من بيانات الاعتماد', - description: 'يرجى تقديم بيانات اعتماد واجهة برمجة التطبيقات الخاصة بك للتحقق من الوصول', - error: 'فشل التحقق من بيانات الاعتماد. يرجى التحقق من مفتاح API الخاص بك.', - success: 'تم التحقق من بيانات الاعتماد بنجاح', - }, - configuration: { - title: 'تكوين الاشتراك', - description: 'إعداد معلمات الاشتراك الخاصة بك', - }, - }, - oauth: { - title: 'إنشاء باستخدام OAuth', - authorization: { - title: 'تفويض OAuth', - description: 'تفويض Dify للوصول إلى حسابك', - redirectUrl: 'عنوان URL لإعادة التوجيه', - redirectUrlHelp: 'استخدم عنوان URL هذا في تكوين تطبيق OAuth الخاص بك', - authorizeButton: 'تفويض مع {{provider}}', - waitingAuth: 'في انتظار التفويض...', - authSuccess: 'تم التفويض بنجاح', - authFailed: 'فشل الحصول على معلومات تفويض OAuth', - waitingJump: 'تم التفويض، في انتظار الانتقال', - }, - configuration: { - title: 'تكوين الاشتراك', - description: 'إعداد معلمات الاشتراك الخاصة بك بعد التفويض', - success: 'تم تكوين OAuth بنجاح', - failed: 'فشل تكوين OAuth', - }, - remove: { - success: 'تمت إزالة OAuth بنجاح', - failed: 'فشل إزالة OAuth', - }, - save: { - success: 'تم حفظ تكوين OAuth بنجاح', - }, - }, - manual: { - title: 'الإعداد اليدوي', - description: 'تكوين اشتراك web hook الخاص بك يدويًا', - logs: { - title: 'سجلات الطلب', - request: 'طلب', - loading: 'في انتظار الطلب من {{pluginName}}...', - }, - }, - form: { - subscriptionName: { - label: 'اسم الاشتراك', - placeholder: 'أدخل اسم الاشتراك', - required: 'اسم الاشتراك مطلوب', - }, - callbackUrl: { - label: 'عنوان URL لرد الاتصال', - description: 'سيتلقى عنوان URL هذا أحداث web hook', - tooltip: 'توفير نقطة نهاية يمكن الوصول إليها بشكل عام يمكنها استلام طلبات رد الاتصال من مزود المشغل.', - placeholder: 'جارٍ الإنشاء...', - privateAddressWarning: 'يبدو أن عنوان URL هذا هو عنوان داخلي، مما قد يتسبب في فشل طلبات web hook. يمكنك تغيير TRIGGER_URL إلى عنوان عام.', - }, - }, - errors: { - createFailed: 'فشل إنشاء الاشتراك', - verifyFailed: 'فشل التحقق من بيانات الاعتماد', - authFailed: 'فشل التفويض', - networkError: 'خطأ في الشبكة، يرجى المحاولة مرة أخرى', - }, - }, - events: { - title: 'الأحداث المتاحة', - description: 'الأحداث التي يمكن لمكون المشغل الإضافي هذا الاشتراك فيها', - empty: 'لا توجد أحداث متاحة', - event: 'حدث', - events: 'أحداث', - actionNum: '{{num}} {{event}} متضمن', - item: { - parameters: '{{count}} معلمات', - noParameters: 'لا توجد معلمات', - }, - output: 'إخراج', - }, - node: { - status: { - warning: 'قطع الاتصال', - }, - }, -} - -export default translation diff --git a/web/i18n/ar-TN/plugin.json b/web/i18n/ar-TN/plugin.json new file mode 100644 index 0000000000..06a9d068d9 --- /dev/null +++ b/web/i18n/ar-TN/plugin.json @@ -0,0 +1,323 @@ +{ + "metadata": { + "title": "الإضافات" + }, + "category": { + "all": "الكل", + "models": "نماذج", + "tools": "أدوات", + "agents": "استراتيجيات الوكيل", + "extensions": "ملحقات", + "triggers": "مشغلات", + "bundles": "حزم", + "datasources": "مصادر البيانات" + }, + "categorySingle": { + "model": "نموذج", + "tool": "أداة", + "agent": "استراتيجية الوكيل", + "extension": "ملحق", + "trigger": "مشغل", + "bundle": "حزمة", + "datasource": "مصدر بيانات" + }, + "search": "بحث", + "allCategories": "جميع الفئات", + "searchCategories": "بحث في الفئات", + "searchPlugins": "بحث في الإضافات", + "from": "من", + "findMoreInMarketplace": "ابحث عن المزيد في السوق", + "searchInMarketplace": "بحث في السوق", + "fromMarketplace": "من السوق", + "endpointsEnabled": "تم تمكين {{num}} مجموعة من نقاط النهاية", + "searchTools": "بحث في الأدوات...", + "installPlugin": "تثبيت الإضافة", + "installFrom": "تثبيت من", + "deprecated": "مهمل", + "list": { + "noInstalled": "لم يتم تثبيت أي إضافات", + "notFound": "لم يتم العثور على أي إضافات", + "source": { + "marketplace": "تثبيت من السوق", + "github": "تثبيت من GitHub", + "local": "تثبيت من ملف الحزمة المحلية" + } + }, + "source": { + "marketplace": "السوق", + "github": "GitHub", + "local": "ملف الحزمة المحلية" + }, + "detailPanel": { + "switchVersion": "تبديل الإصدار", + "categoryTip": { + "marketplace": "مثبت من السوق", + "github": "مثبت من Github", + "local": "إضافة محلية", + "debugging": "تصحيح الإضافة" + }, + "operation": { + "install": "تثبيت", + "detail": "التفاصيل", + "update": "تحديث", + "info": "معلومات الإضافة", + "checkUpdate": "التحقق من التحديث", + "viewDetail": "عرض التفاصيل", + "remove": "إزالة", + "back": "رجوع" + }, + "actionNum": "{{num}} {{action}} متضمن", + "strategyNum": "{{num}} {{strategy}} متضمن", + "endpoints": "نقاط النهاية", + "endpointsTip": "توفر هذه الإضافة وظائف محددة عبر نقاط النهاية، ويمكنك تكوين مجموعات نقاط نهاية متعددة لمساحة العمل الحالية.", + "endpointsDocLink": "عرض المستند", + "endpointsEmpty": "انقر فوق الزر \"+\" لإضافة نقطة نهاية", + "endpointDisableTip": "تعطيل نقطة النهاية", + "endpointDisableContent": "هل ترغب في تعطيل {{name}}؟ ", + "endpointDeleteTip": "إزالة نقطة النهاية", + "endpointDeleteContent": "هل ترغب في إزالة {{name}}؟ ", + "endpointModalTitle": "إعداد نقطة النهاية", + "endpointModalDesc": "بمجرد التكوين، يمكن استخدام الميزات التي توفرها الإضافة عبر نقاط نهاية API.", + "serviceOk": "الخدمة جيدة", + "disabled": "معطل", + "modelNum": "{{num}} نماذج متضمنة", + "toolSelector": { + "title": "إضافة أداة", + "toolSetting": "إعدادات الأداة", + "toolLabel": "أداة", + "descriptionLabel": "وصف الأداة", + "descriptionPlaceholder": "وصف موجز لغرض الأداة، على سبيل المثال، الحصول على درجة الحرارة لموقع معين.", + "placeholder": "حدد أداة...", + "settings": "إعدادات المستخدم", + "params": "تكوين الاستنتاج", + "paramsTip1": "يتحكم في معلمات استنتاج LLM.", + "paramsTip2": "عند إيقاف تشغيل \"تلقائي\"، يتم استخدام القيمة الافتراضية.", + "auto": "تلقائي", + "empty": "انقر فوق الزر \"+\" لإضافة أدوات. يمكنك إضافة أدوات متعددة.", + "uninstalledTitle": "الأداة غير مثبتة", + "uninstalledContent": "تم تثبيت هذه الإضافة من المخزون المحلي / GitHub. يرجى الاستخدام بعد التثبيت.", + "uninstalledLink": "إدارة في الإضافات", + "unsupportedTitle": "إجراء غير مدعوم", + "unsupportedContent": "إصدار الإضافة المثبت لا يوفر هذا الإجراء.", + "unsupportedContent2": "انقر لتبديل الإصدار.", + "unsupportedMCPTool": "لا يدعم إصدار إضافة استراتيجية الوكيل المحدد حاليًا أدوات MCP." + }, + "configureApp": "تكوين التطبيق", + "configureModel": "تكوين النموذج", + "configureTool": "تكوين الأداة", + "deprecation": { + "fullMessage": "تم إهمال هذه الإضافة بسبب {{deprecatedReason}}، ولن يتم تحديثها بعد الآن. يرجى استخدام {{-alternativePluginId}} بدلاً من ذلك.", + "onlyReason": "تم إهمال هذه الإضافة بسبب {{deprecatedReason}} ولن يتم تحديثها بعد الآن.", + "noReason": "تم إهمال هذه الإضافة ولن يتم تحديثها بعد الآن.", + "reason": { + "businessAdjustments": "تعديلات الأعمال", + "ownershipTransferred": "نقل الملكية", + "noMaintainer": "لا يوجد مشرف" + } + } + }, + "install": "{{num}} تثبيتات", + "installAction": "تثبيت", + "debugInfo": { + "title": "تصحيح الأخطاء", + "viewDocs": "عرض المستندات" + }, + "privilege": { + "title": "تفضيلات الإضافة", + "whoCanInstall": "من يمكنه تثبيت وإدارة الإضافات؟", + "whoCanDebug": "من يمكنه تصحيح الإضافات؟", + "everyone": "الجميع", + "admins": "المسؤولون", + "noone": "لا أحد" + }, + "autoUpdate": { + "automaticUpdates": "تحديثات تلقائية", + "updateTime": "وقت التحديث", + "specifyPluginsToUpdate": "تحديد الإضافات للتحديث", + "strategy": { + "disabled": { + "name": "معطل", + "description": "لن يتم تحديث الإضافات تلقائيًا" + }, + "fixOnly": { + "name": "إصلاح فقط", + "description": "التحديث التلقائي لإصدارات التصحيح فقط (على سبيل المثال، 1.0.1 → 1.0.2). لن تؤدي تغييرات الإصدار الثانوي إلى تشغيل التحديثات.", + "selectedDescription": "التحديث التلقائي لإصدارات التصحيح فقط" + }, + "latest": { + "name": "الأحدث", + "description": "التحديث دائمًا إلى أحدث إصدار", + "selectedDescription": "التحديث دائمًا إلى أحدث إصدار" + } + }, + "updateTimeTitle": "وقت التحديث", + "upgradeMode": { + "all": "تحديث الكل", + "exclude": "استبعاد المحدد", + "partial": "المحدد فقط" + }, + "upgradeModePlaceholder": { + "exclude": "لن يتم تحديث الإضافات المحددة تلقائيًا", + "partial": "سيتم تحديث الإضافات المحددة فقط تلقائيًا. لم يتم تحديد أي إضافات حاليًا، لذلك لن يتم تحديث أي إضافات تلقائيًا." + }, + "excludeUpdate": "لن يتم تحديث الإضافات {{num}} التالية تلقائيًا", + "partialUPdate": "سيتم تحديث الإضافات {{num}} التالية فقط تلقائيًا", + "operation": { + "clearAll": "مسح الكل", + "select": "تحديد الإضافات" + }, + "nextUpdateTime": "التحديث التلقائي التالي: {{time}}", + "pluginDowngradeWarning": { + "title": "خفض إصدار الإضافة", + "description": "التحديث التلقائي ممكن حاليًا لهذه الإضافة. قد يؤدي خفض الإصدار إلى استبدال تغييراتك أثناء التحديث التلقائي التالي.", + "downgrade": "خفض على أي حال", + "exclude": "استبعاد من التحديث التلقائي" + }, + "noPluginPlaceholder": { + "noFound": "لم يتم العثور على أي إضافات", + "noInstalled": "لم يتم تثبيت أي إضافات" + }, + "updateSettings": "إعدادات التحديث", + "changeTimezone": "لتغيير المنطقة الزمنية، انتقل إلى الإعدادات" + }, + "pluginInfoModal": { + "title": "معلومات الإضافة", + "repository": "المستودع", + "release": "الإصدار", + "packageName": "الحزمة" + }, + "action": { + "checkForUpdates": "التحقق من وجود تحديثات", + "pluginInfo": "معلومات الإضافة", + "delete": "إزالة الإضافة", + "deleteContentLeft": "هل ترغب في إزالة ", + "deleteContentRight": " الإضافة؟", + "usedInApps": "يتم استخدام هذه الإضافة في {{num}} تطبيقات." + }, + "installModal": { + "installPlugin": "تثبيت الإضافة", + "installComplete": "اكتمل التثبيت", + "installedSuccessfully": "تم التثبيت بنجاح", + "installedSuccessfullyDesc": "تم تثبيت الإضافة بنجاح.", + "uploadFailed": "فشل التحميل", + "installFailed": "فشل التثبيت", + "installFailedDesc": "فشل تثبيت الإضافة.", + "install": "تثبيت", + "installing": "جارٍ التثبيت...", + "uploadingPackage": "جارٍ تحميل {{packageName}}...", + "readyToInstall": "على وشك تثبيت الإضافة التالية", + "readyToInstallPackage": "على وشك تثبيت الإضافة التالية", + "readyToInstallPackages": "على وشك تثبيت الإضافات {{num}} التالية", + "fromTrustSource": "يرجى التأكد من تثبيت الإضافات فقط من مصدر موثوق.", + "dropPluginToInstall": "أفلت حزمة الإضافة هنا للتثبيت", + "labels": { + "repository": "المستودع", + "version": "الإصدار", + "package": "الحزمة" + }, + "close": "إغلاق", + "cancel": "إلغاء", + "back": "رجوع", + "next": "التالي", + "pluginLoadError": "خطأ في تحميل الإضافة", + "pluginLoadErrorDesc": "لن يتم تثبيت هذه الإضافة", + "installWarning": "لا يسمح بتثبيت هذه الإضافة." + }, + "installFromGitHub": { + "installPlugin": "تثبيت الإضافة من GitHub", + "updatePlugin": "تحديث الإضافة من GitHub", + "installedSuccessfully": "تم التثبيت بنجاح", + "installFailed": "فشل التثبيت", + "uploadFailed": "فشل التحميل", + "gitHubRepo": "مستودع GitHub", + "selectVersion": "حدد الإصدار", + "selectVersionPlaceholder": "يرجى تحديد إصدار", + "installNote": "يرجى التأكد من تثبيت الإضافات فقط من مصدر موثوق.", + "selectPackage": "حدد الحزمة", + "selectPackagePlaceholder": "يرجى تحديد حزمة" + }, + "upgrade": { + "title": "تثبيت الإضافة", + "successfulTitle": "تم التثبيت بنجاح", + "description": "على وشك تثبيت الإضافة التالية", + "usedInApps": "تستخدم في {{num}} تطبيقات", + "upgrade": "تثبيت", + "upgrading": "جارٍ التثبيت...", + "close": "إغلاق" + }, + "error": { + "inValidGitHubUrl": "عنوان URL لـ GitHub غير صالح. يرجى إدخال عنوان URL صالح بالتنسيق: https://github.com/owner/repo", + "fetchReleasesError": "غير قادر على استرجاع الإصدارات. يرجى المحاولة مرة أخرى لاحقًا.", + "noReleasesFound": "لم يتم العثور على إصدارات. يرجى التحقق من مستودع GitHub أو عنوان URL المدخل." + }, + "marketplace": { + "empower": "تمكين تطوير الذكاء الاصطناعي الخاص بك", + "discover": "اكتشف", + "and": "و", + "difyMarketplace": "سوق Dify", + "moreFrom": "المزيد من السوق", + "noPluginFound": "لم يتم العثور على إضافة", + "pluginsResult": "{{num}} نتائج", + "sortBy": "فرز حسب", + "sortOption": { + "mostPopular": "الأكثر شيوعًا", + "recentlyUpdated": "تم التحديث مؤخرًا", + "newlyReleased": "صدر حديثًا", + "firstReleased": "صدر لأول مرة" + }, + "viewMore": "عرض المزيد", + "verifiedTip": "تم التحقق بواسطة Dify", + "partnerTip": "تم التحقق بواسطة شريك Dify" + }, + "task": { + "installing": "تثبيت {{installingLength}} إضافات، 0 تم.", + "installingWithSuccess": "تثبيت {{installingLength}} إضافات، {{successLength}} نجاح.", + "installingWithError": "تثبيت {{installingLength}} إضافات، {{successLength}} نجاح، {{errorLength}} فشل", + "installError": "{{errorLength}} إضافات فشل تثبيتها، انقر للعرض", + "installedError": "{{errorLength}} إضافات فشل تثبيتها", + "clearAll": "مسح الكل", + "installSuccess": "تم تثبيت {{successLength}} من الإضافات بنجاح", + "installed": "مثبت", + "runningPlugins": "تثبيت الإضافات", + "successPlugins": "تم تثبيت الإضافات بنجاح", + "errorPlugins": "فشل في تثبيت الإضافات" + }, + "requestAPlugin": "طلب إضافة", + "publishPlugins": "نشر الإضافات", + "difyVersionNotCompatible": "إصدار Dify الحالي غير متوافق مع هذه الإضافة، يرجى الترقية إلى الحد الأدنى للإصدار المطلوب: {{minimalDifyVersion}}", + "auth": { + "default": "افتراضي", + "custom": "مخصص", + "setDefault": "تعيين كافتراضي", + "useOAuth": "استخدام OAuth", + "useOAuthAuth": "استخدام تفويض OAuth", + "addOAuth": "إضافة OAuth", + "setupOAuth": "إعداد عميل OAuth", + "useApi": "استخدام مفتاح API", + "addApi": "إضافة مفتاح API", + "useApiAuth": "تكوين تفويض مفتاح API", + "useApiAuthDesc": "بعد تكوين بيانات الاعتماد، يمكن لجميع الأعضاء داخل مساحة العمل استخدام هذه الأداة عند تنظيم التطبيقات.", + "oauthClientSettings": "إعدادات عميل OAuth", + "saveOnly": "حفظ فقط", + "saveAndAuth": "حفظ وتفويض", + "authorization": "تفويض", + "authorizations": "تفويضات", + "authorizationName": "اسم التفويض", + "workspaceDefault": "افتراضي مساحة العمل", + "authRemoved": "تمت إزالة التفويض", + "clientInfo": "نظرًا لعدم العثور على أسرار عميل النظام لمزود الأداة هذا، فإن إعداده يدويًا مطلوب، بالنسبة لـ redirect_uri، يرجى الاستخدام", + "oauthClient": "عميل OAuth", + "credentialUnavailable": "بيانات الاعتماد غير متوفرة حاليًا. يرجى الاتصال بالمسؤول.", + "credentialUnavailableInButton": "بيانات الاعتماد غير متوفرة", + "customCredentialUnavailable": "بيانات الاعتماد المخصصة غير متوفرة حاليًا", + "unavailable": "غير متاح", + "connectedWorkspace": "مساحة العمل المتصلة", + "emptyAuth": "يرجى تكوين المصادقة" + }, + "readmeInfo": { + "title": "الملف التمهيدي", + "needHelpCheckReadme": "تحتاج للمساعدة؟ تحقق من الملف التمهيدي.", + "noReadmeAvailable": "لا يوجد ملف تمهيدي متاح", + "failedToFetch": "فشل جلب الملف التمهيدي" + } +} diff --git a/web/i18n/ar-TN/plugin.ts b/web/i18n/ar-TN/plugin.ts deleted file mode 100644 index 8446974f5d..0000000000 --- a/web/i18n/ar-TN/plugin.ts +++ /dev/null @@ -1,325 +0,0 @@ -const translation = { - metadata: { - title: 'الإضافات', - }, - category: { - all: 'الكل', - models: 'نماذج', - tools: 'أدوات', - agents: 'استراتيجيات الوكيل', - extensions: 'ملحقات', - triggers: 'مشغلات', - bundles: 'حزم', - datasources: 'مصادر البيانات', - }, - categorySingle: { - model: 'نموذج', - tool: 'أداة', - agent: 'استراتيجية الوكيل', - extension: 'ملحق', - trigger: 'مشغل', - bundle: 'حزمة', - datasource: 'مصدر بيانات', - }, - search: 'بحث', - allCategories: 'جميع الفئات', - searchCategories: 'بحث في الفئات', - searchPlugins: 'بحث في الإضافات', - from: 'من', - findMoreInMarketplace: 'ابحث عن المزيد في السوق', - searchInMarketplace: 'بحث في السوق', - fromMarketplace: 'من السوق', - endpointsEnabled: 'تم تمكين {{num}} مجموعة من نقاط النهاية', - searchTools: 'بحث في الأدوات...', - installPlugin: 'تثبيت الإضافة', - installFrom: 'تثبيت من', - deprecated: 'مهمل', - list: { - noInstalled: 'لم يتم تثبيت أي إضافات', - notFound: 'لم يتم العثور على أي إضافات', - source: { - marketplace: 'تثبيت من السوق', - github: 'تثبيت من GitHub', - local: 'تثبيت من ملف الحزمة المحلية', - }, - }, - source: { - marketplace: 'السوق', - github: 'GitHub', - local: 'ملف الحزمة المحلية', - }, - detailPanel: { - switchVersion: 'تبديل الإصدار', - categoryTip: { - marketplace: 'مثبت من السوق', - github: 'مثبت من Github', - local: 'إضافة محلية', - debugging: 'تصحيح الإضافة', - }, - operation: { - install: 'تثبيت', - detail: 'التفاصيل', - update: 'تحديث', - info: 'معلومات الإضافة', - checkUpdate: 'التحقق من التحديث', - viewDetail: 'عرض التفاصيل', - remove: 'إزالة', - back: 'رجوع', - }, - actionNum: '{{num}} {{action}} متضمن', - strategyNum: '{{num}} {{strategy}} متضمن', - endpoints: 'نقاط النهاية', - endpointsTip: 'توفر هذه الإضافة وظائف محددة عبر نقاط النهاية، ويمكنك تكوين مجموعات نقاط نهاية متعددة لمساحة العمل الحالية.', - endpointsDocLink: 'عرض المستند', - endpointsEmpty: 'انقر فوق الزر "+" لإضافة نقطة نهاية', - endpointDisableTip: 'تعطيل نقطة النهاية', - endpointDisableContent: 'هل ترغب في تعطيل {{name}}؟ ', - endpointDeleteTip: 'إزالة نقطة النهاية', - endpointDeleteContent: 'هل ترغب في إزالة {{name}}؟ ', - endpointModalTitle: 'إعداد نقطة النهاية', - endpointModalDesc: 'بمجرد التكوين، يمكن استخدام الميزات التي توفرها الإضافة عبر نقاط نهاية API.', - serviceOk: 'الخدمة جيدة', - disabled: 'معطل', - modelNum: '{{num}} نماذج متضمنة', - toolSelector: { - title: 'إضافة أداة', - toolSetting: 'إعدادات الأداة', - toolLabel: 'أداة', - descriptionLabel: 'وصف الأداة', - descriptionPlaceholder: 'وصف موجز لغرض الأداة، على سبيل المثال، الحصول على درجة الحرارة لموقع معين.', - placeholder: 'حدد أداة...', - settings: 'إعدادات المستخدم', - params: 'تكوين الاستنتاج', - paramsTip1: 'يتحكم في معلمات استنتاج LLM.', - paramsTip2: 'عند إيقاف تشغيل "تلقائي"، يتم استخدام القيمة الافتراضية.', - auto: 'تلقائي', - empty: 'انقر فوق الزر "+" لإضافة أدوات. يمكنك إضافة أدوات متعددة.', - uninstalledTitle: 'الأداة غير مثبتة', - uninstalledContent: 'تم تثبيت هذه الإضافة من المخزون المحلي / GitHub. يرجى الاستخدام بعد التثبيت.', - uninstalledLink: 'إدارة في الإضافات', - unsupportedTitle: 'إجراء غير مدعوم', - unsupportedContent: 'إصدار الإضافة المثبت لا يوفر هذا الإجراء.', - unsupportedContent2: 'انقر لتبديل الإصدار.', - unsupportedMCPTool: 'لا يدعم إصدار إضافة استراتيجية الوكيل المحدد حاليًا أدوات MCP.', - }, - configureApp: 'تكوين التطبيق', - configureModel: 'تكوين النموذج', - configureTool: 'تكوين الأداة', - deprecation: { - fullMessage: 'تم إهمال هذه الإضافة بسبب {{deprecatedReason}}، ولن يتم تحديثها بعد الآن. يرجى استخدام {{-alternativePluginId}} بدلاً من ذلك.', - onlyReason: 'تم إهمال هذه الإضافة بسبب {{deprecatedReason}} ولن يتم تحديثها بعد الآن.', - noReason: 'تم إهمال هذه الإضافة ولن يتم تحديثها بعد الآن.', - reason: { - businessAdjustments: 'تعديلات الأعمال', - ownershipTransferred: 'نقل الملكية', - noMaintainer: 'لا يوجد مشرف', - }, - }, - }, - install: '{{num}} تثبيتات', - installAction: 'تثبيت', - debugInfo: { - title: 'تصحيح الأخطاء', - viewDocs: 'عرض المستندات', - }, - privilege: { - title: 'تفضيلات الإضافة', - whoCanInstall: 'من يمكنه تثبيت وإدارة الإضافات؟', - whoCanDebug: 'من يمكنه تصحيح الإضافات؟', - everyone: 'الجميع', - admins: 'المسؤولون', - noone: 'لا أحد', - }, - autoUpdate: { - automaticUpdates: 'تحديثات تلقائية', - updateTime: 'وقت التحديث', - specifyPluginsToUpdate: 'تحديد الإضافات للتحديث', - strategy: { - disabled: { - name: 'معطل', - description: 'لن يتم تحديث الإضافات تلقائيًا', - }, - fixOnly: { - name: 'إصلاح فقط', - description: 'التحديث التلقائي لإصدارات التصحيح فقط (على سبيل المثال، 1.0.1 → 1.0.2). لن تؤدي تغييرات الإصدار الثانوي إلى تشغيل التحديثات.', - selectedDescription: 'التحديث التلقائي لإصدارات التصحيح فقط', - }, - latest: { - name: 'الأحدث', - description: 'التحديث دائمًا إلى أحدث إصدار', - selectedDescription: 'التحديث دائمًا إلى أحدث إصدار', - }, - }, - updateTimeTitle: 'وقت التحديث', - upgradeMode: { - all: 'تحديث الكل', - exclude: 'استبعاد المحدد', - partial: 'المحدد فقط', - }, - upgradeModePlaceholder: { - exclude: 'لن يتم تحديث الإضافات المحددة تلقائيًا', - partial: 'سيتم تحديث الإضافات المحددة فقط تلقائيًا. لم يتم تحديد أي إضافات حاليًا، لذلك لن يتم تحديث أي إضافات تلقائيًا.', - }, - excludeUpdate: 'لن يتم تحديث الإضافات {{num}} التالية تلقائيًا', - partialUPdate: 'سيتم تحديث الإضافات {{num}} التالية فقط تلقائيًا', - operation: { - clearAll: 'مسح الكل', - select: 'تحديد الإضافات', - }, - nextUpdateTime: 'التحديث التلقائي التالي: {{time}}', - pluginDowngradeWarning: { - title: 'خفض إصدار الإضافة', - description: 'التحديث التلقائي ممكن حاليًا لهذه الإضافة. قد يؤدي خفض الإصدار إلى استبدال تغييراتك أثناء التحديث التلقائي التالي.', - downgrade: 'خفض على أي حال', - exclude: 'استبعاد من التحديث التلقائي', - }, - noPluginPlaceholder: { - noFound: 'لم يتم العثور على أي إضافات', - noInstalled: 'لم يتم تثبيت أي إضافات', - }, - updateSettings: 'إعدادات التحديث', - changeTimezone: 'لتغيير المنطقة الزمنية، انتقل إلى الإعدادات', - }, - pluginInfoModal: { - title: 'معلومات الإضافة', - repository: 'المستودع', - release: 'الإصدار', - packageName: 'الحزمة', - }, - action: { - checkForUpdates: 'التحقق من وجود تحديثات', - pluginInfo: 'معلومات الإضافة', - delete: 'إزالة الإضافة', - deleteContentLeft: 'هل ترغب في إزالة ', - deleteContentRight: ' الإضافة؟', - usedInApps: 'يتم استخدام هذه الإضافة في {{num}} تطبيقات.', - }, - installModal: { - installPlugin: 'تثبيت الإضافة', - installComplete: 'اكتمل التثبيت', - installedSuccessfully: 'تم التثبيت بنجاح', - installedSuccessfullyDesc: 'تم تثبيت الإضافة بنجاح.', - uploadFailed: 'فشل التحميل', - installFailed: 'فشل التثبيت', - installFailedDesc: 'فشل تثبيت الإضافة.', - install: 'تثبيت', - installing: 'جارٍ التثبيت...', - uploadingPackage: 'جارٍ تحميل {{packageName}}...', - readyToInstall: 'على وشك تثبيت الإضافة التالية', - readyToInstallPackage: 'على وشك تثبيت الإضافة التالية', - readyToInstallPackages: 'على وشك تثبيت الإضافات {{num}} التالية', - fromTrustSource: 'يرجى التأكد من تثبيت الإضافات فقط من مصدر موثوق.', - dropPluginToInstall: 'أفلت حزمة الإضافة هنا للتثبيت', - labels: { - repository: 'المستودع', - version: 'الإصدار', - package: 'الحزمة', - }, - close: 'إغلاق', - cancel: 'إلغاء', - back: 'رجوع', - next: 'التالي', - pluginLoadError: 'خطأ في تحميل الإضافة', - pluginLoadErrorDesc: 'لن يتم تثبيت هذه الإضافة', - installWarning: 'لا يسمح بتثبيت هذه الإضافة.', - }, - installFromGitHub: { - installPlugin: 'تثبيت الإضافة من GitHub', - updatePlugin: 'تحديث الإضافة من GitHub', - installedSuccessfully: 'تم التثبيت بنجاح', - installFailed: 'فشل التثبيت', - uploadFailed: 'فشل التحميل', - gitHubRepo: 'مستودع GitHub', - selectVersion: 'حدد الإصدار', - selectVersionPlaceholder: 'يرجى تحديد إصدار', - installNote: 'يرجى التأكد من تثبيت الإضافات فقط من مصدر موثوق.', - selectPackage: 'حدد الحزمة', - selectPackagePlaceholder: 'يرجى تحديد حزمة', - }, - upgrade: { - title: 'تثبيت الإضافة', - successfulTitle: 'تم التثبيت بنجاح', - description: 'على وشك تثبيت الإضافة التالية', - usedInApps: 'تستخدم في {{num}} تطبيقات', - upgrade: 'تثبيت', - upgrading: 'جارٍ التثبيت...', - close: 'إغلاق', - }, - error: { - inValidGitHubUrl: 'عنوان URL لـ GitHub غير صالح. يرجى إدخال عنوان URL صالح بالتنسيق: https://github.com/owner/repo', - fetchReleasesError: 'غير قادر على استرجاع الإصدارات. يرجى المحاولة مرة أخرى لاحقًا.', - noReleasesFound: 'لم يتم العثور على إصدارات. يرجى التحقق من مستودع GitHub أو عنوان URL المدخل.', - }, - marketplace: { - empower: 'تمكين تطوير الذكاء الاصطناعي الخاص بك', - discover: 'اكتشف', - and: 'و', - difyMarketplace: 'سوق Dify', - moreFrom: 'المزيد من السوق', - noPluginFound: 'لم يتم العثور على إضافة', - pluginsResult: '{{num}} نتائج', - sortBy: 'فرز حسب', - sortOption: { - mostPopular: 'الأكثر شيوعًا', - recentlyUpdated: 'تم التحديث مؤخرًا', - newlyReleased: 'صدر حديثًا', - firstReleased: 'صدر لأول مرة', - }, - viewMore: 'عرض المزيد', - verifiedTip: 'تم التحقق بواسطة Dify', - partnerTip: 'تم التحقق بواسطة شريك Dify', - }, - task: { - installing: 'تثبيت {{installingLength}} إضافات، 0 تم.', - installingWithSuccess: 'تثبيت {{installingLength}} إضافات، {{successLength}} نجاح.', - installingWithError: 'تثبيت {{installingLength}} إضافات، {{successLength}} نجاح، {{errorLength}} فشل', - installError: '{{errorLength}} إضافات فشل تثبيتها، انقر للعرض', - installedError: '{{errorLength}} إضافات فشل تثبيتها', - clearAll: 'مسح الكل', - installSuccess: 'تم تثبيت {{successLength}} من الإضافات بنجاح', - installed: 'مثبت', - runningPlugins: 'تثبيت الإضافات', - successPlugins: 'تم تثبيت الإضافات بنجاح', - errorPlugins: 'فشل في تثبيت الإضافات', - }, - requestAPlugin: 'طلب إضافة', - publishPlugins: 'نشر الإضافات', - difyVersionNotCompatible: 'إصدار Dify الحالي غير متوافق مع هذه الإضافة، يرجى الترقية إلى الحد الأدنى للإصدار المطلوب: {{minimalDifyVersion}}', - auth: { - default: 'افتراضي', - custom: 'مخصص', - setDefault: 'تعيين كافتراضي', - useOAuth: 'استخدام OAuth', - useOAuthAuth: 'استخدام تفويض OAuth', - addOAuth: 'إضافة OAuth', - setupOAuth: 'إعداد عميل OAuth', - useApi: 'استخدام مفتاح API', - addApi: 'إضافة مفتاح API', - useApiAuth: 'تكوين تفويض مفتاح API', - useApiAuthDesc: 'بعد تكوين بيانات الاعتماد، يمكن لجميع الأعضاء داخل مساحة العمل استخدام هذه الأداة عند تنظيم التطبيقات.', - oauthClientSettings: 'إعدادات عميل OAuth', - saveOnly: 'حفظ فقط', - saveAndAuth: 'حفظ وتفويض', - authorization: 'تفويض', - authorizations: 'تفويضات', - authorizationName: 'اسم التفويض', - workspaceDefault: 'افتراضي مساحة العمل', - authRemoved: 'تمت إزالة التفويض', - clientInfo: 'نظرًا لعدم العثور على أسرار عميل النظام لمزود الأداة هذا، فإن إعداده يدويًا مطلوب، بالنسبة لـ redirect_uri، يرجى الاستخدام', - oauthClient: 'عميل OAuth', - credentialUnavailable: 'بيانات الاعتماد غير متوفرة حاليًا. يرجى الاتصال بالمسؤول.', - credentialUnavailableInButton: 'بيانات الاعتماد غير متوفرة', - customCredentialUnavailable: 'بيانات الاعتماد المخصصة غير متوفرة حاليًا', - unavailable: 'غير متاح', - connectedWorkspace: 'مساحة العمل المتصلة', - emptyAuth: 'يرجى تكوين المصادقة', - }, - readmeInfo: { - title: 'الملف التمهيدي', - needHelpCheckReadme: 'تحتاج للمساعدة؟ تحقق من الملف التمهيدي.', - noReadmeAvailable: 'لا يوجد ملف تمهيدي متاح', - failedToFetch: 'فشل جلب الملف التمهيدي', - }, -} - -export default translation diff --git a/web/i18n/ar-TN/register.json b/web/i18n/ar-TN/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/ar-TN/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/ar-TN/register.ts b/web/i18n/ar-TN/register.ts deleted file mode 100644 index 928649474b..0000000000 --- a/web/i18n/ar-TN/register.ts +++ /dev/null @@ -1,4 +0,0 @@ -const translation = { -} - -export default translation diff --git a/web/i18n/ar-TN/run-log.json b/web/i18n/ar-TN/run-log.json new file mode 100644 index 0000000000..bcb77e8a7b --- /dev/null +++ b/web/i18n/ar-TN/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "إدخال", + "result": "نتيجة", + "detail": "تفاصيل", + "tracing": "تتبع", + "resultPanel": { + "status": "الحالة", + "time": "الوقت المستغرق", + "tokens": "إجمالي الرموز" + }, + "meta": { + "title": "البيانات الوصفية", + "status": "الحالة", + "version": "الإصدار", + "executor": "المنفذ", + "startTime": "وقت البدء", + "time": "الوقت المستغرق", + "tokens": "إجمالي الرموز", + "steps": "خطوات التشغيل" + }, + "resultEmpty": { + "title": "هذا التشغيل يخرج فقط تنسيق JSON،", + "tipLeft": "يرجى الذهاب إلى ", + "link": "لوحة التفاصيل", + "tipRight": " لعرضه." + }, + "actionLogs": "سجلات العمل", + "circularInvocationTip": "يوجد استدعاء دائري للأدوات/العقد في سير العمل الحالي." +} diff --git a/web/i18n/ar-TN/run-log.ts b/web/i18n/ar-TN/run-log.ts deleted file mode 100644 index 031e3d628d..0000000000 --- a/web/i18n/ar-TN/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -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: ' لعرضه.', - }, - actionLogs: 'سجلات العمل', - circularInvocationTip: 'يوجد استدعاء دائري للأدوات/العقد في سير العمل الحالي.', -} - -export default translation diff --git a/web/i18n/ar-TN/share.json b/web/i18n/ar-TN/share.json new file mode 100644 index 0000000000..3557b60f50 --- /dev/null +++ b/web/i18n/ar-TN/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "", + "appUnavailable": "التطبيق غير متوفر", + "appUnknownError": "التطبيق غير متوفر" + }, + "chat": { + "newChat": "بدء دردشة جديدة", + "newChatTip": "موجود بالفعل في دردشة جديدة", + "chatSettingsTitle": "إعداد الدردشة الجديدة", + "chatFormTip": "لا يمكن تعديل إعدادات الدردشة بعد بدء الدردشة.", + "pinnedTitle": "مثبت", + "unpinnedTitle": "الأخيرة", + "newChatDefaultName": "محادثة جديدة", + "resetChat": "إعادة تعيين المحادثة", + "viewChatSettings": "عرض إعدادات الدردشة", + "poweredBy": "مشغل بواسطة", + "prompt": "مطالبة", + "privatePromptConfigTitle": "إعدادات المحادثة", + "publicPromptConfigTitle": "المطالبة الأولية", + "configStatusDes": "قبل البدء، يمكنك تعديل إعدادات المحادثة", + "configDisabled": "تم استخدام إعدادات الجلسة السابقة لهذه الجلسة.", + "startChat": "بدء الدردشة", + "privacyPolicyLeft": "يرجى قراءة ", + "privacyPolicyMiddle": "سياسة الخصوصية", + "privacyPolicyRight": " المقدمة من مطور التطبيق.", + "deleteConversation": { + "title": "حذف المحادثة", + "content": "هل أنت متأكد أنك تريد حذف هذه المحادثة؟" + }, + "tryToSolve": "حاول الحل", + "temporarySystemIssue": "عذرًا، مشكلة مؤقتة في النظام.", + "expand": "توسيع", + "collapse": "طي" + }, + "generation": { + "tabs": { + "create": "تشغيل مرة واحدة", + "batch": "تشغيل دفعة", + "saved": "محفوظ" + }, + "savedNoData": { + "title": "لم تقم بحفظ نتيجة بعد!", + "description": "ابدأ في إنشاء المحتوى، وابحث عن نتائجك المحفوظة هنا.", + "startCreateContent": "ابدأ في إنشاء المحتوى" + }, + "title": "إكمال الذكاء الاصطناعي", + "queryTitle": "محتوى الاستعلام", + "completionResult": "نتيجة الإكمال", + "queryPlaceholder": "اكتب محتوى الاستعلام الخاص بك...", + "run": "تنفيذ", + "execution": "تشغيل", + "executions": "{{num}} عمليات تشغيل", + "copy": "نسخ", + "resultTitle": "إكمال الذكاء الاصطناعي", + "noData": "سيعطيك الذكاء الاصطناعي ما تريد هنا.", + "csvUploadTitle": "اسحب وأفلت ملف CSV هنا، أو ", + "browse": "تصفح", + "csvStructureTitle": "يجب أن يتوافق ملف CSV مع الهيكل التالي:", + "downloadTemplate": "تنزيل النموذج هنا", + "field": "حقل", + "stopRun": "إيقاف التشغيل", + "batchFailed": { + "info": "{{num}} عمليات تنفيذ فاشلة", + "retry": "إعادة المحاولة", + "outputPlaceholder": "لا يوجد محتوى إخراج" + }, + "errorMsg": { + "empty": "يرجى إدخال محتوى في الملف الذي تم تحميله.", + "fileStructNotMatch": "ملف CSV الذي تم تحميله لا يطابق الهيكل.", + "emptyLine": "الصف {{rowIndex}} فارغ", + "invalidLine": "الصف {{rowIndex}}: قيمة {{varName}} لا يمكن أن تكون فارغة", + "moreThanMaxLengthLine": "الصف {{rowIndex}}: قيمة {{varName}} لا يمكن أن تكون أكثر من {{maxLength}} حرفًا", + "atLeastOne": "يرجى إدخال صف واحد على الأقل في الملف الذي تم تحميله." + } + }, + "login": { + "backToHome": "العودة إلى الصفحة الرئيسية" + } +} diff --git a/web/i18n/ar-TN/share.ts b/web/i18n/ar-TN/share.ts deleted file mode 100644 index d6a21ca4aa..0000000000 --- a/web/i18n/ar-TN/share.ts +++ /dev/null @@ -1,86 +0,0 @@ -const translation = { - common: { - welcome: '', - appUnavailable: 'التطبيق غير متوفر', - appUnknownError: 'التطبيق غير متوفر', - }, - chat: { - newChat: 'بدء دردشة جديدة', - newChatTip: 'موجود بالفعل في دردشة جديدة', - chatSettingsTitle: 'إعداد الدردشة الجديدة', - chatFormTip: 'لا يمكن تعديل إعدادات الدردشة بعد بدء الدردشة.', - pinnedTitle: 'مثبت', - unpinnedTitle: 'الأخيرة', - newChatDefaultName: 'محادثة جديدة', - resetChat: 'إعادة تعيين المحادثة', - viewChatSettings: 'عرض إعدادات الدردشة', - poweredBy: 'مشغل بواسطة', - prompt: 'مطالبة', - privatePromptConfigTitle: 'إعدادات المحادثة', - publicPromptConfigTitle: 'المطالبة الأولية', - configStatusDes: 'قبل البدء، يمكنك تعديل إعدادات المحادثة', - configDisabled: - 'تم استخدام إعدادات الجلسة السابقة لهذه الجلسة.', - startChat: 'بدء الدردشة', - privacyPolicyLeft: - 'يرجى قراءة ', - privacyPolicyMiddle: - 'سياسة الخصوصية', - privacyPolicyRight: - ' المقدمة من مطور التطبيق.', - deleteConversation: { - title: 'حذف المحادثة', - content: 'هل أنت متأكد أنك تريد حذف هذه المحادثة؟', - }, - tryToSolve: 'حاول الحل', - temporarySystemIssue: 'عذرًا، مشكلة مؤقتة في النظام.', - expand: 'توسيع', - collapse: 'طي', - }, - generation: { - tabs: { - create: 'تشغيل مرة واحدة', - batch: 'تشغيل دفعة', - saved: 'محفوظ', - }, - savedNoData: { - title: 'لم تقم بحفظ نتيجة بعد!', - description: 'ابدأ في إنشاء المحتوى، وابحث عن نتائجك المحفوظة هنا.', - startCreateContent: 'ابدأ في إنشاء المحتوى', - }, - title: 'إكمال الذكاء الاصطناعي', - queryTitle: 'محتوى الاستعلام', - completionResult: 'نتيجة الإكمال', - queryPlaceholder: 'اكتب محتوى الاستعلام الخاص بك...', - run: 'تنفيذ', - execution: 'تشغيل', - executions: '{{num}} عمليات تشغيل', - copy: 'نسخ', - resultTitle: 'إكمال الذكاء الاصطناعي', - noData: 'سيعطيك الذكاء الاصطناعي ما تريد هنا.', - csvUploadTitle: 'اسحب وأفلت ملف CSV هنا، أو ', - browse: 'تصفح', - csvStructureTitle: 'يجب أن يتوافق ملف CSV مع الهيكل التالي:', - downloadTemplate: 'تنزيل النموذج هنا', - field: 'حقل', - stopRun: 'إيقاف التشغيل', - batchFailed: { - info: '{{num}} عمليات تنفيذ فاشلة', - retry: 'إعادة المحاولة', - outputPlaceholder: 'لا يوجد محتوى إخراج', - }, - errorMsg: { - empty: 'يرجى إدخال محتوى في الملف الذي تم تحميله.', - fileStructNotMatch: 'ملف CSV الذي تم تحميله لا يطابق الهيكل.', - emptyLine: 'الصف {{rowIndex}} فارغ', - invalidLine: 'الصف {{rowIndex}}: قيمة {{varName}} لا يمكن أن تكون فارغة', - moreThanMaxLengthLine: 'الصف {{rowIndex}}: قيمة {{varName}} لا يمكن أن تكون أكثر من {{maxLength}} حرفًا', - atLeastOne: 'يرجى إدخال صف واحد على الأقل في الملف الذي تم تحميله.', - }, - }, - login: { - backToHome: 'العودة إلى الصفحة الرئيسية', - }, -} - -export default translation diff --git a/web/i18n/ar-TN/time.json b/web/i18n/ar-TN/time.json new file mode 100644 index 0000000000..160b11af5d --- /dev/null +++ b/web/i18n/ar-TN/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Sun": "الأحد", + "Mon": "الاثنين", + "Tue": "الثلاثاء", + "Wed": "الأربعاء", + "Thu": "الخميس", + "Fri": "الجمعة", + "Sat": "السبت" + }, + "months": { + "January": "يناير", + "February": "فبراير", + "March": "مارس", + "April": "أبريل", + "May": "مايو", + "June": "يونيو", + "July": "يوليو", + "August": "أغسطس", + "September": "سبتمبر", + "October": "أكتوبر", + "November": "نوفمبر", + "December": "ديسمبر" + }, + "operation": { + "now": "الآن", + "ok": "موافق", + "cancel": "إلغاء", + "pickDate": "اختر التاريخ" + }, + "title": { + "pickTime": "اختر الوقت" + }, + "defaultPlaceholder": "اختر وقتًا...", + "dateFormats": { + "display": "MMMM D, YYYY", + "displayWithTime": "MMMM D, YYYY hh:mm A", + "input": "YYYY-MM-DD", + "output": "YYYY-MM-DD", + "outputWithTime": "YYYY-MM-DDTHH:mm:ss.SSSZ" + } +} diff --git a/web/i18n/ar-TN/time.ts b/web/i18n/ar-TN/time.ts deleted file mode 100644 index 11b35407da..0000000000 --- a/web/i18n/ar-TN/time.ts +++ /dev/null @@ -1,45 +0,0 @@ -const translation = { - daysInWeek: { - Sun: 'الأحد', - Mon: 'الاثنين', - Tue: 'الثلاثاء', - Wed: 'الأربعاء', - Thu: 'الخميس', - Fri: 'الجمعة', - Sat: 'السبت', - }, - months: { - January: 'يناير', - February: 'فبراير', - March: 'مارس', - April: 'أبريل', - May: 'مايو', - June: 'يونيو', - July: 'يوليو', - August: 'أغسطس', - September: 'سبتمبر', - October: 'أكتوبر', - November: 'نوفمبر', - December: 'ديسمبر', - }, - operation: { - now: 'الآن', - ok: 'موافق', - cancel: 'إلغاء', - pickDate: 'اختر التاريخ', - }, - title: { - pickTime: 'اختر الوقت', - }, - defaultPlaceholder: 'اختر وقتًا...', - // Date format configurations - dateFormats: { - display: 'MMMM D, YYYY', - displayWithTime: 'MMMM D, YYYY hh:mm A', - input: 'YYYY-MM-DD', - output: 'YYYY-MM-DD', - outputWithTime: 'YYYY-MM-DDTHH:mm:ss.SSSZ', - }, -} - -export default translation diff --git a/web/i18n/ar-TN/tools.json b/web/i18n/ar-TN/tools.json new file mode 100644 index 0000000000..a972566dfd --- /dev/null +++ b/web/i18n/ar-TN/tools.json @@ -0,0 +1,262 @@ +{ + "title": "أدوات", + "createCustomTool": "إنشاء أداة مخصصة", + "customToolTip": "تعرف على المزيد حول أدوات Dify المخصصة", + "type": { + "builtIn": "أدوات", + "custom": "مخصص", + "workflow": "سير عمل" + }, + "contribute": { + "line1": "أنا مهتم بـ ", + "line2": "المساهمة بأدوات في Dify.", + "viewGuide": "عرض الدليل" + }, + "author": "بواسطة", + "auth": { + "authorized": "مفوض", + "setup": "إعداد التفويض للاستخدام", + "setupModalTitle": "إعداد التفويض", + "setupModalTitleDescription": "بعد تكوين بيانات الاعتماد، يمكن لجميع الأعضاء داخل مساحة العمل استخدام هذه الأداة عند تنظيم التطبيقات." + }, + "includeToolNum": "{{num}} {{action}} متضمن", + "addToolModal": { + "type": "نوع", + "category": "فئة", + "added": "أضيف", + "custom": { + "title": "لا توجد أداة مخصصة متاحة", + "tip": "إنشاء أداة مخصصة" + }, + "workflow": { + "title": "لا يوجد أداة سير عمل متاحة", + "tip": "نشر سير العمل كأدوات في الاستوديو" + }, + "mcp": { + "title": "لا توجد أداة MCP متاحة", + "tip": "إضافة خادم MCP" + }, + "agent": { + "title": "لا توجد استراتيجية وكيل متاحة" + } + }, + "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": "Weather(JSON)", + "yaml": "Pet Store(YAML)", + "blankTemplate": "قالب فارغ" + }, + "availableTools": { + "title": "الأدوات المتاحة", + "name": "الاسم", + "description": "الوصف", + "method": "الطريقة", + "path": "المسار", + "action": "الإجراءات", + "test": "اختبار" + }, + "authMethod": { + "title": "طريقة التفويض", + "type": "نوع التفويض", + "keyTooltip": "مفتاح رأس Http، يمكنك تركه بـ \"Authorization\" إذا لم يكن لديك فكرة عما هو عليه أو تعيينه إلى قيمة مخصصة", + "queryParam": "معلمة الاستعلام", + "queryParamTooltip": "اسم معلمة استعلام مفتاح API للتمرير، على سبيل المثال \"key\" في \"https://example.com/test?key=API_KEY\".", + "types": { + "none": "لا شيء", + "api_key_header": "رأس", + "api_key_query": "معلمة استعلام", + "apiKeyPlaceholder": "اسم رأس HTTP لمفتاح API", + "apiValuePlaceholder": "أدخل مفتاح API", + "queryParamPlaceholder": "اسم معلمة الاستعلام لمفتاح API" + }, + "key": "مفتاح", + "value": "قيمة" + }, + "authHeaderPrefix": { + "title": "نوع المصادقة", + "types": { + "basic": "أساسي", + "bearer": "Bearer", + "custom": "مخصص" + } + }, + "privacyPolicy": "سياسة الخصوصية", + "privacyPolicyPlaceholder": "يرجى إدخال سياسة الخصوصية", + "toolInput": { + "title": "إدخال الأداة", + "name": "الاسم", + "required": "مطلوب", + "method": "الطريقة", + "methodSetting": "إعداد", + "methodSettingTip": "يملأ المستخدم تكوين الأداة", + "methodParameter": "معلمة", + "methodParameterTip": "يملأ LLM أثناء الاستنتاج", + "label": "العلامات", + "labelPlaceholder": "اختر العلامات (اختياري)", + "description": "الوصف", + "descriptionPlaceholder": "وصف معنى المعلمة" + }, + "toolOutput": { + "title": "إخراج الأداة", + "name": "الاسم", + "reserved": "محجوز", + "reservedParameterDuplicateTip": "text و json و files هي متغيرات محجوزة. لا يمكن أن تظهر المتغيرات بهذه الأسماء في مخطط الإخراج.", + "description": "الوصف" + }, + "customDisclaimer": "إخلاء مسؤولية مخصص", + "customDisclaimerPlaceholder": "يرجى إدخال إخلاء مسؤولية مخصص", + "confirmTitle": "تأكيد الحفظ؟", + "confirmTip": "ستتأثر التطبيقات التي تستخدم هذه الأداة", + "deleteToolConfirmTitle": "حذف هذه الأداة؟", + "deleteToolConfirmContent": "حذف الأداة لا رجعة فيه. لن يتمكن المستخدمون بعد الآن من الوصول إلى أداتك." + }, + "test": { + "title": "اختبار", + "parametersValue": "المعلمات والقيمة", + "parameters": "المعلمات", + "value": "القيمة", + "testResult": "نتائج الاختبار", + "testResultPlaceholder": "ستظهر نتيجة الاختبار هنا" + }, + "thought": { + "using": "يستخدم", + "used": "مستخدم", + "requestTitle": "طلب", + "responseTitle": "استجابة" + }, + "setBuiltInTools": { + "info": "معلومات", + "setting": "إعداد", + "toolDescription": "وصف الأداة", + "parameters": "معلمات", + "string": "سلسلة", + "number": "رقم", + "file": "ملف", + "required": "مطلوب", + "infoAndSetting": "المعلومات والإعدادات" + }, + "noCustomTool": { + "title": "لا توجد أدوات مخصصة!", + "content": "أضف وأدر أدواتك المخصصة هنا لبناء تطبيقات الذكاء الاصطناعي.", + "createTool": "إنشاء أداة" + }, + "noSearchRes": { + "title": "عذرًا، لا توجد نتائج!", + "content": "لم نتمكن من العثور على أي أدوات تطابق بحثك.", + "reset": "إعادة تعيين البحث" + }, + "builtInPromptTitle": "موجه", + "toolRemoved": "تمت إزالة الأداة", + "notAuthorized": "غير مفوض", + "howToGet": "كيفية الحصول على", + "openInStudio": "فتح في الاستوديو", + "toolNameUsageTip": "اسم استدعاء الأداة لمنطق الوكيل والتحفيز", + "copyToolName": "نسخ الاسم", + "noTools": "لم يتم العثور على أدوات", + "mcp": { + "create": { + "cardTitle": "إضافة خادم MCP (HTTP)", + "cardLink": "تعرف على المزيد حول تكامل خادم MCP" + }, + "noConfigured": "غير مكون", + "updateTime": "محدث", + "toolsCount": "{{count}} أدوات", + "noTools": "لا توجد أدوات متاحة", + "modal": { + "title": "إضافة خادم MCP (HTTP)", + "editTitle": "تعديل خادم MCP (HTTP)", + "name": "الاسم والأيقونة", + "namePlaceholder": "قم بتسمية خادم MCP الخاص بك", + "serverUrl": "عنوان URL للخادم", + "serverUrlPlaceholder": "عنوان URL لنقطة نهاية الخادم", + "serverUrlWarning": "قد يؤدي تحديث عنوان الخادم إلى تعطيل التطبيقات التي تعتمد على هذا الخادم", + "serverIdentifier": "معرف الخادم", + "serverIdentifierTip": "معرف فريد لخادم MCP داخل مساحة العمل. أحرف صغيرة وأرقام وشرطات سفلية وواصلات فقط. ما يصل إلى 24 حرفًا.", + "serverIdentifierPlaceholder": "معرف فريد، على سبيل المثال، my-mcp-server", + "serverIdentifierWarning": "لن يتم التعرف على الخادم بواسطة التطبيقات الموجودة بعد تغيير المعرف", + "headers": "رؤوس", + "headersTip": "رؤوس HTTP إضافية للإرسال مع طلبات خادم MCP", + "headerKey": "اسم الرأس", + "headerValue": "قيمة الرأس", + "headerKeyPlaceholder": "على سبيل المثال، Authorization", + "headerValuePlaceholder": "على سبيل المثال، Bearer token123", + "addHeader": "إضافة رأس", + "noHeaders": "لم يتم تكوين رؤوس مخصصة", + "maskedHeadersTip": "يتم إخفاء قيم الرأس للأمان. ستقوم التغييرات بتحديث القيم الفعلية.", + "cancel": "إلغاء", + "save": "حفظ", + "confirm": "إضافة وتفويض", + "timeout": "مهلة", + "sseReadTimeout": "مهلة قراءة SSE", + "timeoutPlaceholder": "30", + "authentication": "المصادقة", + "useDynamicClientRegistration": "استخدام تسجيل العميل الديناميكي", + "redirectUrlWarning": "يرجى تكوين عنوان URL لإعادة توجيه OAuth الخاص بك إلى:", + "clientID": "معرف العميل", + "clientSecret": "سر العميل", + "clientSecretPlaceholder": "سر العميل", + "configurations": "التكوينات" + }, + "delete": "إزالة خادم MCP", + "deleteConfirmTitle": "هل ترغب في إزالة {{mcp}}؟", + "operation": { + "edit": "تعديل", + "remove": "إزالة" + }, + "authorize": "تفويض", + "authorizing": "جارٍ التفويض...", + "authorizingRequired": "التفويض مطلوب", + "authorizeTip": "بعد التفويض، سيتم عرض الأدوات هنا.", + "update": "تحديث", + "updating": "جارٍ التحديث", + "gettingTools": "جارٍ الحصول على الأدوات...", + "updateTools": "جارٍ تحديث الأدوات...", + "toolsEmpty": "لم يتم تحميل الأدوات", + "getTools": "احصل على الأدوات", + "toolUpdateConfirmTitle": "تحديث قائمة الأدوات", + "toolUpdateConfirmContent": "قد يؤثر تحديث قائمة الأدوات على التطبيقات الموجودة. هل ترغب في المتابعة؟", + "toolsNum": "{{count}} أدوات متضمنة", + "onlyTool": "أداة واحدة متضمنة", + "identifier": "معرف الخادم (انقر للنسخ)", + "server": { + "title": "خادم MCP", + "url": "عنوان URL للخادم", + "reGen": "هل تريد إعادة إنشاء عنوان URL للخادم؟", + "addDescription": "إضافة وصف", + "edit": "تعديل الوصف", + "modal": { + "addTitle": "إضافة وصف لتمكين خادم MCP", + "editTitle": "تعديل الوصف", + "description": "الوصف", + "descriptionPlaceholder": "اشرح ما تفعله هذه الأداة وكيف يجب استخدامها بواسطة LLM", + "parameters": "المعلمات", + "parametersTip": "أضف أوصافًا لكل معلمة لمساعدة LLM على فهم الغرض منها والقيود المفروضة عليها.", + "parametersPlaceholder": "الغرض من المعلمة والقيود", + "confirm": "تمكين خادم MCP" + }, + "publishTip": "التطبيق غير منشور. يرجى نشر التطبيق أولاً." + }, + "toolItem": { + "noDescription": "لا يوجد وصف", + "parameters": "المعلمات" + } + }, + "allTools": "جميع الأدوات" +} diff --git a/web/i18n/ar-TN/tools.ts b/web/i18n/ar-TN/tools.ts deleted file mode 100644 index d8562fdd6b..0000000000 --- a/web/i18n/ar-TN/tools.ts +++ /dev/null @@ -1,264 +0,0 @@ -const translation = { - title: 'أدوات', - createCustomTool: 'إنشاء أداة مخصصة', - customToolTip: 'تعرف على المزيد حول أدوات Dify المخصصة', - type: { - builtIn: 'أدوات', - custom: 'مخصص', - workflow: 'سير عمل', - }, - contribute: { - line1: 'أنا مهتم بـ ', - line2: 'المساهمة بأدوات في Dify.', - viewGuide: 'عرض الدليل', - }, - author: 'بواسطة', - auth: { - authorized: 'مفوض', - setup: 'إعداد التفويض للاستخدام', - setupModalTitle: 'إعداد التفويض', - setupModalTitleDescription: 'بعد تكوين بيانات الاعتماد، يمكن لجميع الأعضاء داخل مساحة العمل استخدام هذه الأداة عند تنظيم التطبيقات.', - }, - includeToolNum: '{{num}} {{action}} متضمن', - addToolModal: { - type: 'نوع', - category: 'فئة', - added: 'أضيف', - custom: { - title: 'لا توجد أداة مخصصة متاحة', - tip: 'إنشاء أداة مخصصة', - }, - workflow: { - title: 'لا يوجد أداة سير عمل متاحة', - tip: 'نشر سير العمل كأدوات في الاستوديو', - }, - mcp: { - title: 'لا توجد أداة MCP متاحة', - tip: 'إضافة خادم MCP', - }, - agent: { - title: 'لا توجد استراتيجية وكيل متاحة', - }, - }, - 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: 'Weather(JSON)', - yaml: 'Pet Store(YAML)', - blankTemplate: 'قالب فارغ', - }, - availableTools: { - title: 'الأدوات المتاحة', - name: 'الاسم', - description: 'الوصف', - method: 'الطريقة', - path: 'المسار', - action: 'الإجراءات', - test: 'اختبار', - }, - authMethod: { - title: 'طريقة التفويض', - type: 'نوع التفويض', - keyTooltip: 'مفتاح رأس Http، يمكنك تركه بـ "Authorization" إذا لم يكن لديك فكرة عما هو عليه أو تعيينه إلى قيمة مخصصة', - queryParam: 'معلمة الاستعلام', - queryParamTooltip: 'اسم معلمة استعلام مفتاح API للتمرير، على سبيل المثال "key" في "https://example.com/test?key=API_KEY".', - types: { - none: 'لا شيء', - api_key_header: 'رأس', - api_key_query: 'معلمة استعلام', - apiKeyPlaceholder: 'اسم رأس HTTP لمفتاح API', - apiValuePlaceholder: 'أدخل مفتاح API', - queryParamPlaceholder: 'اسم معلمة الاستعلام لمفتاح API', - }, - key: 'مفتاح', - value: 'قيمة', - }, - authHeaderPrefix: { - title: 'نوع المصادقة', - types: { - basic: 'أساسي', - bearer: 'Bearer', - custom: 'مخصص', - }, - }, - privacyPolicy: 'سياسة الخصوصية', - privacyPolicyPlaceholder: 'يرجى إدخال سياسة الخصوصية', - toolInput: { - title: 'إدخال الأداة', - name: 'الاسم', - required: 'مطلوب', - method: 'الطريقة', - methodSetting: 'إعداد', - methodSettingTip: 'يملأ المستخدم تكوين الأداة', - methodParameter: 'معلمة', - methodParameterTip: 'يملأ LLM أثناء الاستنتاج', - label: 'العلامات', - labelPlaceholder: 'اختر العلامات (اختياري)', - description: 'الوصف', - descriptionPlaceholder: 'وصف معنى المعلمة', - }, - toolOutput: { - title: 'إخراج الأداة', - name: 'الاسم', - reserved: 'محجوز', - reservedParameterDuplicateTip: 'text و json و files هي متغيرات محجوزة. لا يمكن أن تظهر المتغيرات بهذه الأسماء في مخطط الإخراج.', - description: 'الوصف', - }, - customDisclaimer: 'إخلاء مسؤولية مخصص', - customDisclaimerPlaceholder: 'يرجى إدخال إخلاء مسؤولية مخصص', - confirmTitle: 'تأكيد الحفظ؟', - confirmTip: 'ستتأثر التطبيقات التي تستخدم هذه الأداة', - deleteToolConfirmTitle: 'حذف هذه الأداة؟', - deleteToolConfirmContent: 'حذف الأداة لا رجعة فيه. لن يتمكن المستخدمون بعد الآن من الوصول إلى أداتك.', - }, - test: { - title: 'اختبار', - parametersValue: 'المعلمات والقيمة', - parameters: 'المعلمات', - value: 'القيمة', - testResult: 'نتائج الاختبار', - testResultPlaceholder: 'ستظهر نتيجة الاختبار هنا', - }, - thought: { - using: 'يستخدم', - used: 'مستخدم', - requestTitle: 'طلب', - responseTitle: 'استجابة', - }, - setBuiltInTools: { - info: 'معلومات', - setting: 'إعداد', - toolDescription: 'وصف الأداة', - parameters: 'معلمات', - string: 'سلسلة', - number: 'رقم', - file: 'ملف', - required: 'مطلوب', - infoAndSetting: 'المعلومات والإعدادات', - }, - noCustomTool: { - title: 'لا توجد أدوات مخصصة!', - content: 'أضف وأدر أدواتك المخصصة هنا لبناء تطبيقات الذكاء الاصطناعي.', - createTool: 'إنشاء أداة', - }, - noSearchRes: { - title: 'عذرًا، لا توجد نتائج!', - content: 'لم نتمكن من العثور على أي أدوات تطابق بحثك.', - reset: 'إعادة تعيين البحث', - }, - builtInPromptTitle: 'موجه', - toolRemoved: 'تمت إزالة الأداة', - notAuthorized: 'غير مفوض', - howToGet: 'كيفية الحصول على', - openInStudio: 'فتح في الاستوديو', - toolNameUsageTip: 'اسم استدعاء الأداة لمنطق الوكيل والتحفيز', - copyToolName: 'نسخ الاسم', - noTools: 'لم يتم العثور على أدوات', - mcp: { - create: { - cardTitle: 'إضافة خادم MCP (HTTP)', - cardLink: 'تعرف على المزيد حول تكامل خادم MCP', - }, - noConfigured: 'غير مكون', - updateTime: 'محدث', - toolsCount: '{{count}} أدوات', - noTools: 'لا توجد أدوات متاحة', - modal: { - title: 'إضافة خادم MCP (HTTP)', - editTitle: 'تعديل خادم MCP (HTTP)', - name: 'الاسم والأيقونة', - namePlaceholder: 'قم بتسمية خادم MCP الخاص بك', - serverUrl: 'عنوان URL للخادم', - serverUrlPlaceholder: 'عنوان URL لنقطة نهاية الخادم', - serverUrlWarning: 'قد يؤدي تحديث عنوان الخادم إلى تعطيل التطبيقات التي تعتمد على هذا الخادم', - serverIdentifier: 'معرف الخادم', - serverIdentifierTip: 'معرف فريد لخادم MCP داخل مساحة العمل. أحرف صغيرة وأرقام وشرطات سفلية وواصلات فقط. ما يصل إلى 24 حرفًا.', - serverIdentifierPlaceholder: 'معرف فريد، على سبيل المثال، my-mcp-server', - serverIdentifierWarning: 'لن يتم التعرف على الخادم بواسطة التطبيقات الموجودة بعد تغيير المعرف', - headers: 'رؤوس', - headersTip: 'رؤوس HTTP إضافية للإرسال مع طلبات خادم MCP', - headerKey: 'اسم الرأس', - headerValue: 'قيمة الرأس', - headerKeyPlaceholder: 'على سبيل المثال، Authorization', - headerValuePlaceholder: 'على سبيل المثال، Bearer token123', - addHeader: 'إضافة رأس', - noHeaders: 'لم يتم تكوين رؤوس مخصصة', - maskedHeadersTip: 'يتم إخفاء قيم الرأس للأمان. ستقوم التغييرات بتحديث القيم الفعلية.', - cancel: 'إلغاء', - save: 'حفظ', - confirm: 'إضافة وتفويض', - timeout: 'مهلة', - sseReadTimeout: 'مهلة قراءة SSE', - timeoutPlaceholder: '30', - authentication: 'المصادقة', - useDynamicClientRegistration: 'استخدام تسجيل العميل الديناميكي', - redirectUrlWarning: 'يرجى تكوين عنوان URL لإعادة توجيه OAuth الخاص بك إلى:', - clientID: 'معرف العميل', - clientSecret: 'سر العميل', - clientSecretPlaceholder: 'سر العميل', - configurations: 'التكوينات', - }, - delete: 'إزالة خادم MCP', - deleteConfirmTitle: 'هل ترغب في إزالة {{mcp}}؟', - operation: { - edit: 'تعديل', - remove: 'إزالة', - }, - authorize: 'تفويض', - authorizing: 'جارٍ التفويض...', - authorizingRequired: 'التفويض مطلوب', - authorizeTip: 'بعد التفويض، سيتم عرض الأدوات هنا.', - update: 'تحديث', - updating: 'جارٍ التحديث', - gettingTools: 'جارٍ الحصول على الأدوات...', - updateTools: 'جارٍ تحديث الأدوات...', - toolsEmpty: 'لم يتم تحميل الأدوات', - getTools: 'احصل على الأدوات', - toolUpdateConfirmTitle: 'تحديث قائمة الأدوات', - toolUpdateConfirmContent: 'قد يؤثر تحديث قائمة الأدوات على التطبيقات الموجودة. هل ترغب في المتابعة؟', - toolsNum: '{{count}} أدوات متضمنة', - onlyTool: 'أداة واحدة متضمنة', - identifier: 'معرف الخادم (انقر للنسخ)', - server: { - title: 'خادم MCP', - url: 'عنوان URL للخادم', - reGen: 'هل تريد إعادة إنشاء عنوان URL للخادم؟', - addDescription: 'إضافة وصف', - edit: 'تعديل الوصف', - modal: { - addTitle: 'إضافة وصف لتمكين خادم MCP', - editTitle: 'تعديل الوصف', - description: 'الوصف', - descriptionPlaceholder: 'اشرح ما تفعله هذه الأداة وكيف يجب استخدامها بواسطة LLM', - parameters: 'المعلمات', - parametersTip: 'أضف أوصافًا لكل معلمة لمساعدة LLM على فهم الغرض منها والقيود المفروضة عليها.', - parametersPlaceholder: 'الغرض من المعلمة والقيود', - confirm: 'تمكين خادم MCP', - }, - publishTip: 'التطبيق غير منشور. يرجى نشر التطبيق أولاً.', - }, - toolItem: { - noDescription: 'لا يوجد وصف', - parameters: 'المعلمات', - }, - }, - allTools: 'جميع الأدوات', -} - -export default translation diff --git a/web/i18n/ar-TN/workflow.json b/web/i18n/ar-TN/workflow.json new file mode 100644 index 0000000000..0fc93c5bbd --- /dev/null +++ b/web/i18n/ar-TN/workflow.json @@ -0,0 +1,1294 @@ +{ + "common": { + "undo": "تراجع", + "redo": "إعادة", + "editing": "تعديل", + "autoSaved": "تم الحفظ تلقائيًا", + "unpublished": "غير منشور", + "published": "منشور", + "publish": "نشر", + "update": "تحديث", + "publishUpdate": "نشر التحديث", + "run": "تشغيل", + "running": "جارٍ التشغيل", + "listening": "الاستماع", + "chooseStartNodeToRun": "اختر عقدة البداية للتشغيل", + "runAllTriggers": "تشغيل جميع المشغلات", + "inRunMode": "في وضع التشغيل", + "inPreview": "في المعاينة", + "inPreviewMode": "في وضع المعاينة", + "preview": "معاينة", + "viewRunHistory": "عرض سجل التشغيل", + "runHistory": "سجل التشغيل", + "goBackToEdit": "العودة إلى المحرر", + "conversationLog": "سجل المحادثة", + "features": "الميزات", + "featuresDescription": "تحسين تجربة مستخدم تطبيق الويب", + "ImageUploadLegacyTip": "يمكنك الآن إنشاء متغيرات نوع الملف في نموذج البداية. لن ندعم ميزة تحميل الصور في المستقبل. ", + "fileUploadTip": "تم ترقية ميزات تحميل الصور إلى تحميل الملفات. ", + "featuresDocLink": "تعرف على المزيد", + "debugAndPreview": "معاينة", + "restart": "إعادة تشغيل", + "currentDraft": "المسودة الحالية", + "currentDraftUnpublished": "المسودة الحالية غير منشورة", + "latestPublished": "آخر منشور", + "publishedAt": "تم النشر في", + "restore": "استعادة", + "versionHistory": "سجل الإصدارات", + "exitVersions": "خروج من الإصدارات", + "runApp": "تشغيل التطبيق", + "batchRunApp": "تشغيل التطبيق دفعة واحدة", + "openInExplore": "فتح في الاستكشاف", + "accessAPIReference": "الوصول إلى مرجع API", + "embedIntoSite": "تضمين في الموقع", + "addTitle": "إضافة عنوان...", + "addDescription": "إضافة وصف...", + "noVar": "لا يوجد متغير", + "searchVar": "بحث عن متغير", + "variableNamePlaceholder": "اسم المتغير", + "setVarValuePlaceholder": "تعيين متغير", + "needConnectTip": "هذه الخطوة غير متصلة بأي شيء", + "maxTreeDepth": "الحد الأقصى لـ {{depth}} عقد لكل فرع", + "needAdd": "يجب إضافة عقدة {{node}}", + "needOutputNode": "يجب إضافة عقدة الإخراج", + "needStartNode": "يجب إضافة عقدة بدء واحدة على الأقل", + "needAnswerNode": "يجب إضافة عقدة الإجابة", + "workflowProcess": "عملية سير العمل", + "notRunning": "لم يتم التشغيل بعد", + "previewPlaceholder": "أدخل المحتوى في المربع أدناه لبدء تصحيح أخطاء Chatbot", + "effectVarConfirm": { + "title": "إزالة المتغير", + "content": "يتم استخدام المتغير في عقد أخرى. هل ما زلت تريد إزالته؟" + }, + "insertVarTip": "اضغط على مفتاح '/' للإدراج بسرعة", + "processData": "معالجة البيانات", + "input": "إدخال", + "output": "إخراج", + "jinjaEditorPlaceholder": "اكتب '/' أو '{' لإدراج متغير", + "viewOnly": "عرض فقط", + "showRunHistory": "عرض سجل التشغيل", + "enableJinja": "تمكين دعم قالب Jinja", + "learnMore": "تعرف على المزيد", + "copy": "نسخ", + "duplicate": "تكرار", + "addBlock": "إضافة عقدة", + "pasteHere": "لصق هنا", + "pointerMode": "وضع المؤشر", + "handMode": "وضع اليد", + "exportImage": "تصدير صورة", + "exportPNG": "تصدير كـ PNG", + "exportJPEG": "تصدير كـ JPEG", + "exportSVG": "تصدير كـ SVG", + "currentView": "العرض الحالي", + "currentWorkflow": "سير العمل الحالي", + "moreActions": "المزيد من الإجراءات", + "model": "النموذج", + "workflowAsTool": "سير العمل كأداة", + "configureRequired": "التكوين مطلوب", + "configure": "تكوين", + "manageInTools": "إدارة في الأدوات", + "workflowAsToolTip": "التكوين المطلوب للأداة بعد تحديث سير العمل.", + "workflowAsToolDisabledHint": "انشر أحدث سير عمل وتأكد من وجود عقدة إدخال مستخدم متصلة قبل تكوينها كأداة.", + "viewDetailInTracingPanel": "عرض التفاصيل", + "syncingData": "مزامنة البيانات، بضع ثوان فقط.", + "importDSL": "استيراد DSL", + "importDSLTip": "سيتم استبدال المسودة الحالية.\nقم بتصدير سير العمل كنسخة احتياطية قبل الاستيراد.", + "backupCurrentDraft": "نسخ احتياطي للمسودة الحالية", + "chooseDSL": "اختر ملف DSL", + "overwriteAndImport": "استبدال واستيراد", + "importFailure": "فشل الاستيراد", + "importWarning": "تحذير", + "importWarningDetails": "قد يؤثر اختلاف إصدار DSL على ميزات معينة", + "importSuccess": "تم الاستيراد بنجاح", + "parallelTip": { + "click": { + "title": "نقرة", + "desc": " للإضافة" + }, + "drag": { + "title": "سحب", + "desc": " للتوصيل" + }, + "limit": "يقتصر التوازي على {{num}} فروع.", + "depthLimit": "حد طبقة التداخل المتوازي {{num}} طبقات" + }, + "disconnect": "قطع الاتصال", + "jumpToNode": "القفز إلى هذه العقدة", + "addParallelNode": "إضافة عقدة متوازية", + "parallel": "توازي", + "branch": "فرع", + "onFailure": "عند الفشل", + "addFailureBranch": "إضافة فرع فشل", + "loadMore": "تحميل المزيد", + "noHistory": "لا يوجد سجل", + "tagBound": "عدد التطبيقات التي تستخدم هذه العلامة" + }, + "publishLimit": { + "startNodeTitlePrefix": "قم بالترقية إلى", + "startNodeTitleSuffix": "فتح مشغلات غير محدودة لكل سير عمل", + "startNodeDesc": "لقد وصلت إلى الحد المسموح به وهو 2 مشغلات لكل سير عمل لهذه الخطة. قم بالترقية لنشر سير العمل هذا." + }, + "env": { + "envPanelTitle": "متغيرات البيئة", + "envDescription": "يمكن استخدام متغيرات البيئة لتخزين المعلومات الخاصة وبيانات الاعتماد. فهي للقراءة فقط ويمكن فصلها عن ملف DSL أثناء التصدير.", + "envPanelButton": "إضافة متغير", + "modal": { + "title": "إضافة متغير بيئة", + "editTitle": "تعديل متغير بيئة", + "type": "النوع", + "name": "الاسم", + "namePlaceholder": "اسم المتغير", + "value": "القيمة", + "valuePlaceholder": "قيمة المتغير", + "secretTip": "يستخدم لتحديد معلومات أو بيانات حساسة، مع إعدادات DSL المكونة لمنع التسرب.", + "description": "الوصف", + "descriptionPlaceholder": "وصف المتغير" + }, + "export": { + "title": "تصدير متغيرات البيئة السرية؟", + "checkbox": "تصدير القيم السرية", + "ignore": "تصدير DSL", + "export": "تصدير DSL مع القيم السرية " + } + }, + "globalVar": { + "title": "متغيرات النظام", + "description": "متغيرات النظام هي متغيرات عامة يمكن الإشارة إليها بواسطة أي عقدة دون توصيل عندما يكون النوع صحيحًا، مثل معرف المستخدم ومعرف سير العمل.", + "fieldsDescription": { + "conversationId": "معرف المحادثة", + "dialogCount": "عدد المحادثات", + "userId": "معرف المستخدم", + "triggerTimestamp": "توقيت بدء التطبيق", + "appId": "معرف التطبيق", + "workflowId": "معرف سير العمل", + "workflowRunId": "معرف تشغيل سير العمل" + } + }, + "sidebar": { + "exportWarning": "تصدير النسخة المحفوظة الحالية", + "exportWarningDesc": "سيؤدي هذا إلى تصدير النسخة المحفوظة الحالية من سير العمل الخاص بك. إذا كانت لديك تغييرات غير محفوظة في المحرر، يرجى حفظها أولاً باستخدام خيار التصدير في لوحة سير العمل." + }, + "chatVariable": { + "panelTitle": "متغيرات المحادثة", + "panelDescription": "تستخدم متغيرات المحادثة لتخزين المعلومات التفاعلية التي يحتاج LLM إلى تذكرها، بما في ذلك سجل المحادثة والملفات التي تم تحميلها وتفضيلات المستخدم. هم للقراءة والكتابة. ", + "docLink": "قم بزيارة مستنداتنا لمعرفة المزيد.", + "button": "إضافة متغير", + "modal": { + "title": "إضافة متغير محادثة", + "editTitle": "تعديل متغير محادثة", + "name": "الاسم", + "namePlaceholder": "اسم المتغير", + "type": "النوع", + "value": "القيمة الافتراضية", + "valuePlaceholder": "القيمة الافتراضية، اتركها فارغة لعدم التعيين", + "description": "الوصف", + "descriptionPlaceholder": "وصف المتغير", + "editInJSON": "تعديل في JSON", + "oneByOne": "إضافة واحدة تلو الأخرى", + "editInForm": "تعديل في النموذج", + "arrayValue": "القيمة", + "addArrayValue": "إضافة قيمة", + "objectKey": "مفتاح", + "objectType": "النوع", + "objectValue": "القيمة الافتراضية" + }, + "storedContent": "المحتوى المخزن", + "updatedAt": "تم التحديث في " + }, + "changeHistory": { + "title": "سجل التغييرات", + "placeholder": "لم تقم بتغيير أي شيء بعد", + "clearHistory": "مسح السجل", + "hint": "تلميح", + "hintText": "يتم تتبع إجراءات التحرير الخاصة بك في سجل التغييرات، والذي يتم تخزينه على جهازك طوال مدة هذه الجلسة. سيتم مسح هذا السجل عند مغادرة المحرر.", + "stepBackward_one": "{{count}} خطوة إلى الوراء", + "stepBackward_other": "{{count}} خطوات إلى الوراء", + "stepForward_one": "{{count}} خطوة إلى الأمام", + "stepForward_other": "{{count}} خطوات إلى الأمام", + "sessionStart": "بدء الجلسة", + "currentState": "الحالة الحالية", + "nodeTitleChange": "تم تغيير عنوان العقدة", + "nodeDescriptionChange": "تم تغيير وصف العقدة", + "nodeDragStop": "تم نقل العقدة", + "nodeChange": "تم تغيير العقدة", + "nodeConnect": "تم توصيل العقدة", + "nodePaste": "تم لصق العقدة", + "nodeDelete": "تم حذف العقدة", + "nodeAdd": "تم إضافة العقدة", + "nodeResize": "تم تغيير حجم العقدة", + "noteAdd": "تم إضافة ملاحظة", + "noteChange": "تم تغيير الملاحظة", + "noteDelete": "تم حذف الملاحظة", + "edgeDelete": "تم قطع اتصال العقدة" + }, + "errorMsg": { + "fieldRequired": "{{field}} مطلوب", + "rerankModelRequired": "مطلوب تكوين نموذج Rerank", + "authRequired": "الترخيص مطلوب", + "invalidJson": "{{field}} هو JSON غير صالح", + "fields": { + "variable": "اسم المتغير", + "variableValue": "قيمة المتغير", + "code": "الكود", + "model": "النموذج", + "rerankModel": "نموذج Rerank المكون", + "visionVariable": "متغير الرؤية" + }, + "invalidVariable": "متغير غير صالح", + "noValidTool": "{{field}} لا توجد أداة صالحة محددة", + "toolParameterRequired": "{{field}}: المعلمة [{{param}}] مطلوبة", + "startNodeRequired": "الرجاء إضافة عقدة البداية أولاً قبل {{operation}}" + }, + "error": { + "startNodeRequired": "الرجاء إضافة عقدة البداية أولاً قبل {{operation}}", + "operations": { + "connectingNodes": "توصيل العقد", + "addingNodes": "إضافة العقد", + "modifyingWorkflow": "تعديل سير العمل", + "updatingWorkflow": "تحديث سير العمل" + } + }, + "singleRun": { + "testRun": "تشغيل اختياري", + "startRun": "بدء التشغيل", + "preparingDataSource": "تحضير مصدر البيانات", + "reRun": "إعادة التشغيل", + "running": "جارٍ التشغيل", + "testRunIteration": "تكرار تشغيل الاختبار", + "back": "خلف", + "iteration": "تكرار", + "loop": "حلقة" + }, + "tabs": { + "searchBlock": "بحث عن عقدة", + "start": "البداية", + "blocks": "العقد", + "searchTool": "أداة البحث", + "searchTrigger": "بحث عن المشغلات...", + "allTriggers": "كل المشغلات", + "tools": "الأدوات", + "allTool": "الكل", + "plugin": "الإضافة", + "customTool": "مخصص", + "workflowTool": "سير العمل", + "question-understand": "فهم السؤال", + "logic": "المنطق", + "transform": "تحويل", + "utilities": "الأدوات المساعدة", + "noResult": "لم يتم العثور على تطابق", + "noPluginsFound": "لم يتم العثور على إضافات", + "requestToCommunity": "طلبات للمجتمع", + "agent": "استراتيجية الوكيل", + "allAdded": "تمت إضافة الكل", + "addAll": "إضافة الكل", + "sources": "المصادر", + "searchDataSource": "بحث في مصدر البيانات", + "featuredTools": "المميزة", + "showMoreFeatured": "عرض المزيد", + "showLessFeatured": "عرض أقل", + "installed": "مثبت", + "pluginByAuthor": "بواسطة {{author}}", + "usePlugin": "حدد الأداة", + "hideActions": "إخفاء الأدوات", + "noFeaturedPlugins": "اكتشف المزيد من الأدوات في السوق", + "noFeaturedTriggers": "اكتشف المزيد من المشغلات في السوق", + "startDisabledTip": "تتعارض عقدة المشغل وعقدة إدخال المستخدم." + }, + "blocks": { + "start": "إدخال المستخدم", + "originalStartNode": "عقدة البداية الأصلية", + "end": "الإخراج", + "answer": "إجابة", + "llm": "LLM", + "knowledge-retrieval": "استرجاع المعرفة", + "question-classifier": "مصنف الأسئلة", + "if-else": "IF/ELSE", + "code": "كود", + "template-transform": "قالب", + "http-request": "طلب HTTP", + "variable-assigner": "مجمع المتغيرات", + "variable-aggregator": "مجمع المتغيرات", + "assigner": "معين المتغيرات", + "iteration-start": "بداية التكرار", + "iteration": "تكرار", + "parameter-extractor": "مستخرج المعلمات", + "document-extractor": "مستخرج المستندات", + "list-operator": "مشغل القائمة", + "agent": "وكيل", + "loop-start": "بداية الحلقة", + "loop": "حلقة", + "loop-end": "خروج من الحلقة", + "knowledge-index": "قاعدة المعرفة", + "datasource": "مصدر البيانات", + "trigger-schedule": "جدولة المشغل", + "trigger-webhook": "مشغل الويب هوك", + "trigger-plugin": "مشغل الإضافة" + }, + "customWebhook": "ويب هوك مخصص", + "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": "تجميع متغيرات متعددة الفروع في متغير واحد للتكوين الموحد للعقد النهائية.", + "assigner": "تُستخدم عقدة تعيين المتغير لتعيين قيم للمتغيرات القابلة للكتابة (مثل متغيرات المحادثة).", + "variable-aggregator": "تجميع متغيرات متعددة الفروع في متغير واحد للتكوين الموحد للعقد النهائية.", + "iteration": "تنفيذ خطوات متعددة على كائن قائمة حتى يتم إخراج جميع النتائج.", + "loop": "تنفيذ حلقة من المنطق حتى يتم استيفاء شروط الإنهاء أو الوصول إلى الحد الأقصى لعدد الحلقات.", + "loop-end": "يعادل \"break\". هذه العقدة لا تحتوي على عناصر تكوين. عندما يصل جسم الحلقة إلى هذه العقدة، تنتهي الحلقة.", + "parameter-extractor": "استخدم LLM لاستخراج المعلمات الهيكلية من اللغة الطبيعية لاستدعاء الأدوات أو طلبات HTTP.", + "document-extractor": "تستخدم لتحليل المستندات التي تم تحميلها إلى محتوى نصي يسهل فهمه بواسطة LLM.", + "list-operator": "تستخدم لتصفية أو فرز محتوى المصفوفة.", + "agent": "استدعاء نماذج اللغة الكبيرة للإجابة على الأسئلة أو معالجة اللغة الطبيعية", + "knowledge-index": "حول قاعدة المعرفة", + "datasource": "حول مصدر البيانات", + "trigger-schedule": "مشغل سير عمل قائم على الوقت يبدأ سير العمل وفقًا لجدول زمني", + "trigger-webhook": "يتلقى مشغل Webhook دفعات HTTP من أنظمة خارجية لتشغيل سير العمل تلقائيًا.", + "trigger-plugin": "مشغل تكامل تابع لجهة خارجية يبدأ سير العمل من أحداث النظام الأساسي الخارجي" + }, + "difyTeam": "فريق Dify", + "operator": { + "zoomIn": "تكبير", + "zoomOut": "تصغير", + "zoomTo50": "تكبير إلى 50%", + "zoomTo100": "تكبير إلى 100%", + "zoomToFit": "ملاءمة الشاشة", + "alignNodes": "محاذاة العقد", + "alignLeft": "يسار", + "alignCenter": "وسط", + "alignRight": "يمين", + "alignTop": "أعلى", + "alignMiddle": "وسط", + "alignBottom": "أسفل", + "vertical": "عمودي", + "horizontal": "أفقي", + "distributeHorizontal": "توزيع أفقي", + "distributeVertical": "توزيع عمودي", + "selectionAlignment": "محاذاة التحديد" + }, + "variableReference": { + "noAvailableVars": "لا توجد متغيرات متاحة", + "noVarsForOperation": "لا توجد متغيرات متاحة للتعيين مع العملية المحددة.", + "noAssignedVars": "لا توجد متغيرات معينة متاحة", + "assignedVarsDescription": "يجب أن تكون المتغيرات المعينة متغيرات قابلة للكتابة، مثل ", + "conversationVars": "متغيرات المحادثة" + }, + "panel": { + "userInputField": "حقل إدخال المستخدم", + "changeBlock": "تغيير العقدة", + "helpLink": "عرض المستندات", + "openWorkflow": "فتح سير العمل", + "about": "حول", + "createdBy": "تم الإنشاء بواسطة ", + "nextStep": "الخطوة التالية", + "addNextStep": "إضافة الخطوة التالية في هذا سير العمل", + "selectNextStep": "تحديد الخطوة التالية", + "runThisStep": "تشغيل هذه الخطوة", + "checklist": "قائمة المراجعة", + "checklistTip": "تأكد من حل جميع المشكلات قبل النشر", + "checklistResolved": "تم حل جميع المشكلات", + "goTo": "الذهاب إلى", + "startNode": "عقدة البداية", + "organizeBlocks": "تنظيم العقد", + "change": "تغيير", + "optional": "(اختياري)", + "maximize": "تكبير القماش", + "minimize": "خروج من وضع ملء الشاشة", + "scrollToSelectedNode": "تمرير إلى العقدة المحددة", + "optional_and_hidden": "(اختياري ومخفي)" + }, + "nodes": { + "common": { + "outputVars": "متغيرات الإخراج", + "insertVarTip": "إدراج متغير", + "memory": { + "memory": "الذاكرة", + "memoryTip": "إعدادات ذاكرة الدردشة", + "windowSize": "حجم النافذة", + "conversationRoleName": "اسم دور المحادثة", + "user": "بادئة المستخدم", + "assistant": "بادئة المساعد" + }, + "memories": { + "title": "الذكريات", + "tip": "ذاكرة الدردشة", + "builtIn": "مدمج" + }, + "errorHandle": { + "title": "معالجة الأخطاء", + "tip": "استراتيجية التعامل مع الاستثناءات، يتم تشغيلها عندما تواجه العقدة استثناءً.", + "none": { + "title": "لا شيء", + "desc": "ستتوقف العقدة عن العمل في حالة حدوث استثناء ولم يتم التعامل معه" + }, + "defaultValue": { + "title": "القيم الافتراضية", + "desc": "عند حدوث خطأ، حدد محتوى إخراج ثابت.", + "tip": "عند الخطأ، سيعود القيمة أدناه.", + "inLog": "استثناء العقدة، الإخراج وفقًا للقيم الافتراضية.", + "output": "إخراج القيمة الافتراضية" + }, + "failBranch": { + "title": "فرع الفشل", + "desc": "عند حدوث خطأ، سيتم تنفيذ فرع الاستثناء", + "customize": "انتقل إلى القماش لتخصيص منطق فرع الفشل.", + "customizeTip": "عند تنشيط فرع الفشل، لن تؤدي الاستثناءات التي تطرحها العقد إلى إنهاء العملية. بدلاً من ذلك، سيتم تنفيذ فرع الفشل المحدد مسبقًا تلقائيًا، مما يسمح لك بتقديم رسائل خطأ، وتقارير، وإصلاحات، أو اتخاذ إجراءات تخطي بمرونة.", + "inLog": "استثناء العقدة، سيتم تلقائيًا تنفيذ فرع الفشل. سيعيد إخراج العقدة نوع خطأ ورسالة خطأ ويمررهما إلى المصب." + }, + "partialSucceeded": { + "tip": "هناك {{num}} عقد في العملية تعمل بشكل غير طبيعي، يرجى الانتقال إلى التتبع للتحقق من السجلات." + } + }, + "retry": { + "retry": "إعادة المحاولة", + "retryOnFailure": "إعادة المحاولة عند الفشل", + "maxRetries": "الحد الأقصى لإعادة المحاولة", + "retryInterval": "فاصل إعادة المحاولة", + "retryTimes": "أعد المحاولة {{times}} مرات عند الفشل", + "retrying": "جارٍ إعادة المحاولة...", + "retrySuccessful": "تمت إعادة المحاولة بنجاح", + "retryFailed": "فشلت إعادة المحاولة", + "retryFailedTimes": "فشلت {{times}} إعادة المحاولة", + "times": "مرات", + "ms": "مللي ثانية", + "retries": "{{num}} إعادة محاولة" + }, + "typeSwitch": { + "input": "قيمة الإدخال", + "variable": "استخدام متغير" + }, + "inputVars": "متغيرات الإدخال", + "pluginNotInstalled": "الإضافة غير مثبتة" + }, + "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.", + "prompt": "المطالبة", + "roleDescription": { + "system": "أعط تعليمات عالية المستوى للمحادثة", + "user": "قدم تعليمات أو استفسارات أو أي إدخال نصي للنموذج", + "assistant": "استجابات النموذج بناءً على رسائل المستخدم" + }, + "addMessage": "إضافة رسالة", + "vision": "الرؤية", + "files": "الملفات", + "resolution": { + "name": "الدقة", + "high": "عالية", + "low": "منخفضة" + }, + "outputVars": { + "output": "إنشاء محتوى", + "reasoning_content": "محتوى التفكير", + "usage": "معلومات استخدام النموذج" + }, + "singleRun": { + "variable": "متغير" + }, + "sysQueryInUser": "sys.query في رسالة المستخدم مطلوب", + "reasoningFormat": { + "title": "تمكين فصل علامة التفكير", + "tagged": "الاحتفاظ بعلامات التفكير", + "separated": "فصل علامات التفكير", + "tooltip": "استخراج المحتوى من علامات التفكير وتخزينه في حقل content_reasoning." + }, + "jsonSchema": { + "title": "مخطط الإخراج المنظم", + "instruction": "تعليمات", + "promptTooltip": "تحويل الوصف النصي إلى هيكل مخطط JSON موحد.", + "promptPlaceholder": "صف مخطط JSON الخاص بك ...", + "generate": "توليد", + "import": "استيراد من JSON", + "generateJsonSchema": "توليد مخطط JSON", + "generationTip": "يمكنك استخدام اللغة الطبيعية لإنشاء مخطط JSON بسرعة.", + "generating": "توليد مخطط JSON ...", + "generatedResult": "النتائج المولدة", + "resultTip": "إليك النتائج المولدة. إذا لم تكن راضيًا، يمكنك العودة وتعديل مطالبتك.", + "back": "رجوع", + "regenerate": "إعادة التوليد", + "apply": "تطبيق", + "doc": "معرفة المزيد عن الإخراج المنظم", + "resetDefaults": "إعادة تعيين", + "required": "مطلوب", + "addField": "إضافة حقل", + "addChildField": "إضافة حقل فرعي", + "showAdvancedOptions": "عرض الخيارات المتقدمة", + "stringValidations": "التحقق من صحة السلسلة", + "fieldNamePlaceholder": "اسم الحقل", + "descriptionPlaceholder": "إضافة وصف", + "warningTips": { + "saveSchema": "الرجاء إنهاء تحرير الحقل الحالي قبل حفظ المخطط" + } + } + }, + "knowledgeRetrieval": { + "queryVariable": "متغير الاستعلام", + "knowledge": "المعرفة", + "outputVars": { + "output": "استرجاع البيانات المقسمة", + "content": "المحتوى المقسم", + "title": "العنوان المقسم", + "icon": "أيقونة مقسمة", + "url": "عنوان URL المقسم", + "metadata": "بيانات وصفية أخرى", + "files": "الملفات المسترجعة" + }, + "metadata": { + "title": "تصفية البيانات الوصفية", + "tip": "تصفية البيانات الوصفية هي عملية استخدام سمات البيانات الوصفية (مثل العلامات، الفئات، أو أذونات الوصول) لتحسين والتحكم في استرجاع المعلومات ذات الصلة داخل النظام.", + "options": { + "disabled": { + "title": "معطل", + "subTitle": "عدم تمكين تصفية البيانات الوصفية" + }, + "automatic": { + "title": "تلقائي", + "subTitle": "إنشاء شروط تصفية البيانات الوصفية تلقائيًا بناءً على استعلام المستخدم", + "desc": "إنشاء شروط تصفية البيانات الوصفية تلقائيًا بناءً على متغير الاستعلام" + }, + "manual": { + "title": "يدوي", + "subTitle": "إضافة شروط تصفية البيانات الوصفية يدويًا" + } + }, + "panel": { + "title": "شروط تصفية البيانات الوصفية", + "conditions": "الشروط", + "add": "إضافة شرط", + "search": "بحث في البيانات الوصفية", + "placeholder": "أدخل قيمة", + "datePlaceholder": "اختر وقتًا...", + "select": "حدد متغيرًا..." + } + }, + "queryText": "نص الاستعلام", + "queryAttachment": "استعلام الصور" + }, + "http": { + "inputVars": "متغيرات الإدخال", + "api": "API", + "apiPlaceholder": "أدخل URL، واكتب '/' لإدراج متغير", + "extractListPlaceholder": "أدخل فهرس عنصر القائمة، واكتب '/' لإدراج متغير", + "notStartWithHttp": "يجب أن يبدأ API بـ http:// أو https://", + "key": "المفتاح", + "type": "النوع", + "value": "القيمة", + "bulkEdit": "تحرير مجمع", + "keyValueEdit": "تحرير المفتاح والقيمة", + "headers": "الرؤوس", + "params": "المعلمات", + "body": "الجسم", + "binaryFileVariable": "متغير ملف ثنائي", + "outputVars": { + "body": "محتوى الاستجابة", + "statusCode": "رمز حالة الاستجابة", + "headers": "قائمة رؤوس الاستجابة JSON", + "files": "قائمة الملفات" + }, + "authorization": { + "authorization": "تخويل", + "authorizationType": "نوع التخويل", + "no-auth": "لا شيء", + "api-key": "مفتاح API", + "auth-type": "نوع المصادقة", + "basic": "أساسي", + "bearer": "Bearer", + "custom": "مخصص", + "api-key-title": "مفتاح API", + "header": "Header" + }, + "insertVarPlaceholder": "اكتب '/' لإدراج متغير", + "timeout": { + "title": "المهلة", + "connectLabel": "مهلة الاتصال", + "connectPlaceholder": "أدخل مهلة الاتصال بالثواني", + "readLabel": "مهلة القراءة", + "readPlaceholder": "أدخل مهلة القراءة بالثواني", + "writeLabel": "مهلة الكتابة", + "writePlaceholder": "أدخل مهلة الكتابة بالثواني" + }, + "curl": { + "title": "استيراد من cURL", + "placeholder": "لصق سلسلة cURL هنا" + }, + "verifySSL": { + "title": "التحقق من شهادة SSL", + "warningTooltip": "لا يوصى بتعطيل التحقق من SSL لبيئات الإنتاج. يجب استخدامه فقط في التطوير أو الاختبار، حيث إنه يجعل الاتصال عرضة لتهديدات الأمان مثل هجمات الوسيط." + } + }, + "code": { + "inputVars": "متغيرات الإدخال", + "outputVars": "متغيرات الإخراج", + "advancedDependencies": "التبعيات المتقدمة", + "advancedDependenciesTip": "أضف بعض التبعيات المحملة مسبقًا التي تستغرق وقتًا أطول للاستهلاك أو ليست افتراضية مضمنة هنا", + "searchDependencies": "بحث في التبعيات", + "syncFunctionSignature": "مزامنة توقيع الوظيفة للكود" + }, + "templateTransform": { + "inputVars": "متغيرات الإدخال", + "code": "الكود", + "codeSupportTip": "يدعم Jinja2 فقط", + "outputVars": { + "output": "المحتوى المحول" + } + }, + "ifElse": { + "if": "If", + "else": "Else", + "elseDescription": "يستخدم لتحديد المنطق الذي ينبغي تنفيذه عندما لا يتم استيفاء شرط if.", + "and": "و", + "or": "أو", + "operator": "المشغل", + "notSetVariable": "الرجاء تعيين المتغير أولاً", + "comparisonOperator": { + "contains": "يحتوي على", + "not contains": "لا يحتوي على", + "start with": "يبدأ بـ", + "end with": "ينتهي بـ", + "is": "هو", + "is not": "ليس", + "empty": "فارغ", + "not empty": "ليس فارغًا", + "null": "null", + "not null": "ليس null", + "in": "في", + "not in": "ليس في", + "all of": "كل من", + "exists": "موجود", + "not exists": "غير موجود", + "before": "قبل", + "after": "بعد" + }, + "optionName": { + "image": "صورة", + "doc": "مستند", + "audio": "صوت", + "video": "فيديو", + "localUpload": "تحميل محلي", + "url": "URL" + }, + "enterValue": "أدخل قيمة", + "addCondition": "إضافة شرط", + "conditionNotSetup": "لم يتم إعداد الشرط", + "selectVariable": "حدد متغيرًا...", + "addSubVariable": "متغير فرعي", + "select": "تحديد" + }, + "variableAssigner": { + "title": "تعيين المتغيرات", + "outputType": "نوع الإخراج", + "varNotSet": "المتغير غير معين", + "noVarTip": "أضف المتغيرات التي سيتم تعيينها", + "type": { + "string": "سلسلة", + "number": "رقم", + "object": "كائن", + "array": "مصفوفة" + }, + "aggregationGroup": "مجموعة التجميع", + "aggregationGroupTip": "يسمح تمكين هذه الميزة لمجمع المتغيرات بتجميع مجموعات متعددة من المتغيرات.", + "addGroup": "إضافة مجموعة", + "outputVars": { + "varDescribe": "إخراج {{groupName}}" + }, + "setAssignVariable": "تعيين متغير التعيين" + }, + "assigner": { + "assignedVariable": "المتغير المعين", + "varNotSet": "المتغير غير معين", + "variables": "المتغيرات", + "noVarTip": "انقر على زر \"+\" لإضافة متغيرات", + "writeMode": "وضع الكتابة", + "writeModeTip": "وضع الإلحاق: متاح لمتغيرات المصفوفة فقط.", + "over-write": "الكتابة الفوقية", + "append": "إلحاق", + "plus": "إضافة", + "clear": "مسح", + "setVariable": "تعيين المتغير", + "selectAssignedVariable": "حدد المتغير المعين...", + "setParameter": "تعيين المعلمة...", + "operations": { + "title": "عملية", + "over-write": "الكتابة الفوقية", + "overwrite": "الكتابة الفوقية", + "set": "تعيين", + "clear": "مسح", + "extend": "تمديد", + "append": "إلحاق", + "remove-first": "إزالة الأول", + "remove-last": "إزالة الأخير", + "+=": "+=", + "-=": "-=", + "*=": "*=", + "/=": "/=" + }, + "variable": "متغير", + "noAssignedVars": "لا توجد متغيرات معينة متاحة", + "assignedVarsDescription": "يجب أن تكون المتغيرات المعينة متغيرات قابلة للكتابة، مثل متغيرات المحادثة." + }, + "tool": { + "authorize": "تخويل", + "inputVars": "متغيرات الإدخال", + "settings": "الإعدادات", + "insertPlaceholder1": "اكتب أو اضغط", + "insertPlaceholder2": "لإدراج متغير", + "outputVars": { + "text": "محتوى تم إنشاؤه بواسطة الأداة", + "files": { + "title": "ملفات تم إنشاؤها بواسطة الأداة", + "type": "نوع الدعم. الآن يدعم الصورة فقط", + "transfer_method": "طريقة النقل. القيمة هي remote_url أو local_file", + "url": "رابط الصورة", + "upload_file_id": "معرف ملف التحميل" + }, + "json": "json تم إنشاؤه بواسطة الأداة" + } + }, + "triggerPlugin": { + "authorized": "مخول", + "notConfigured": "لم يتم التكوين", + "notAuthorized": "غير مخول", + "selectSubscription": "تصديق الاشتراك", + "availableSubscriptions": "الاشتراكات المتاحة", + "addSubscription": "إضافة اشتراك جديد", + "removeSubscription": "إزالة الاشتراك", + "subscriptionRemoved": "تمت إزالة الاشتراك بنجاح", + "error": "خطأ", + "configuration": "التكوين", + "remove": "إزالة", + "or": "أو", + "useOAuth": "استخدام OAuth", + "useApiKey": "استخدام مفتاح API", + "authenticationFailed": "فشلت المصادقة", + "authenticationSuccess": "نجحت المصادقة", + "oauthConfigFailed": "فشل تكوين OAuth", + "configureOAuthClient": "تكوين عميل OAuth", + "oauthClientDescription": "تكوين بيانات اعتماد عميل OAuth لتمكين المصادقة", + "oauthClientSaved": "تم حفظ تكوين عميل OAuth بنجاح", + "configureApiKey": "تكوين مفتاح API", + "apiKeyDescription": "تكوين بيانات اعتماد مفتاح API للمصادقة", + "apiKeyConfigured": "تم تكوين مفتاح API بنجاح", + "configurationFailed": "فشل التكوين", + "failedToStart": "فشل بدء تدفق المصادقة", + "credentialsVerified": "تم التحقق من بيانات الاعتماد بنجاح", + "credentialVerificationFailed": "فشل التحقق من بيانات الاعتماد", + "verifyAndContinue": "تحقق ومتابعة", + "configureParameters": "تكوين المعلمات", + "parametersDescription": "تكوين معلمات المشغل والخصائص", + "configurationComplete": "اكتمل التكوين", + "configurationCompleteDescription": "تم تكوين المشغل الخاص بك بنجاح", + "configurationCompleteMessage": "اكتمل تكوين المشغل الخاص بك الآن وهو جاهز للاستخدام.", + "parameters": "المعلمات", + "properties": "الخصائص", + "propertiesDescription": "خصائص تكوين إضافية لهذا المشغل", + "noConfigurationRequired": "لا يلزم تكوين إضافي لهذا المشغل.", + "subscriptionName": "اسم الاشتراك", + "subscriptionNameDescription": "أدخل اسمًا فريدًا لاشتراك المشغل هذا", + "subscriptionNamePlaceholder": "أدخل اسم الاشتراك...", + "subscriptionNameRequired": "اسم الاشتراك مطلوب", + "subscriptionRequired": "الاشتراك مطلوب" + }, + "questionClassifiers": { + "model": "النموذج", + "inputVars": "متغيرات الإدخال", + "outputVars": { + "className": "اسم الفئة", + "usage": "معلومات استخدام النموذج" + }, + "class": "فئة", + "classNamePlaceholder": "اكتب اسم الفئة الخاصة بك", + "advancedSetting": "إعدادات متقدمة", + "topicName": "اسم الموضوع", + "topicPlaceholder": "اكتب اسم الموضوع الخاص بك", + "addClass": "إضافة فئة", + "instruction": "تعليمات", + "instructionTip": "أدخل تعليمات إضافية لمساعدة مصنف الأسئلة على فهم كيفية تصنيف الأسئلة بشكل أفضل.", + "instructionPlaceholder": "اكتب تعليماتك" + }, + "parameterExtractor": { + "inputVar": "متغير الإدخال", + "outputVars": { + "isSuccess": "هو نجاح. عند النجاح تكون القيمة 1، عند الفشل تكون القيمة 0.", + "errorReason": "سبب الخطأ", + "usage": "معلومات استخدام النموذج" + }, + "extractParameters": "استخراج المعلمات", + "importFromTool": "استيراد من الأدوات", + "addExtractParameter": "إضافة معلمة استخراج", + "addExtractParameterContent": { + "name": "الاسم", + "namePlaceholder": "اسم معلمة الاستخراج", + "type": "النوع", + "typePlaceholder": "نوع معلمة الاستخراج", + "description": "الوصف", + "descriptionPlaceholder": "وصف معلمة الاستخراج", + "required": "مطلوب", + "requiredContent": "مطلوب يستخدم فقط كمرجع لاستدلال النموذج، وليس للتحقق الإلزامي من إخراج المعلمة." + }, + "extractParametersNotSet": "لم يتم إعداد استخراج المعلمات", + "instruction": "تعليمات", + "instructionTip": "أدخل تعليمات إضافية لمساعدة مستخرج المعلمات على فهم كيفية استخراج المعلمات.", + "advancedSetting": "إعدادات متقدمة", + "reasoningMode": "وضع التفكير", + "reasoningModeTip": "يمكنك اختيار وضع التفكير المناسب بناءً على قدرة النموذج على الاستجابة للتعليمات لاستدعاء الوظيفة أو المطالبات." + }, + "iteration": { + "deleteTitle": "حذف عقدة التكرار؟", + "deleteDesc": "سيؤدي حذف عقدة التكرار إلى حذف جميع العقد الفرعية", + "input": "إدخال", + "output": "متغيرات الإخراج", + "iteration_one": "{{count}} تكرار", + "iteration_other": "{{count}} تكرارات", + "currentIteration": "التكرار الحالي", + "comma": "، ", + "error_one": "{{count}} خطأ", + "error_other": "{{count}} أخطاء", + "parallelMode": "الوضع المتوازي", + "parallelModeUpper": "الوضع المتوازي", + "parallelModeEnableTitle": "تم تمكين الوضع المتوازي", + "parallelModeEnableDesc": "في الوضع المتوازي، تدعم المهام داخل التكرارات التنفيذ المتوازي. يمكنك تكوين هذا في لوحة الخصائص على اليمين.", + "parallelPanelDesc": "في الوضع المتوازي، تدعم المهام في التكرار التنفيذ المتوازي.", + "MaxParallelismTitle": "الحد الأقصى للتوازي", + "MaxParallelismDesc": "يتم استخدام الحد الأقصى للتوازي للتحكم في عدد المهام التي يتم تنفيذها في وقت واحد في تكرار واحد.", + "errorResponseMethod": "طريقة استجابة الخطأ", + "ErrorMethod": { + "operationTerminated": "تم الإنهاء", + "continueOnError": "متابعة عند الخطأ", + "removeAbnormalOutput": "إزالة الإخراج غير الطبيعي" + }, + "answerNodeWarningDesc": "تحذير الوضع المتوازي: قد تتسبب عقد الإجابة وتعيينات متغيرات المحادثة وعمليات القراءة/الكتابة الدائمة داخل التكرارات في حدوث استثناءات.", + "flattenOutput": "تسطيح الإخراج", + "flattenOutputDesc": "عند التمكين، إذا كانت جميع مخرجات التكرار مصفوفات، فسيتم تسطيحها في مصفوفة واحدة. عند التعطيل، ستحافظ المخرجات على هيكل مصفوفة متداخلة." + }, + "loop": { + "deleteTitle": "حذف عقدة الحلقة؟", + "deleteDesc": "سيؤدي حذف عقدة الحلقة إلى إزالة جميع العقد الفرعية", + "input": "إدخال", + "output": "متغير الإخراج", + "loop_one": "{{count}} حلقة", + "loop_other": "{{count}} حلقات", + "currentLoop": "الحلقة الحالية", + "comma": "، ", + "error_one": "{{count}} خطأ", + "error_other": "{{count}} أخطاء", + "breakCondition": "شرط إنهاء الحلقة", + "breakConditionTip": "يمكن الإشارة فقط إلى المتغيرات داخل الحلقات ذات شروط الإنهاء ومتغيرات المحادثة.", + "loopMaxCount": "الحد الأقصى لعدد الحلقات", + "loopMaxCountError": "الرجاء إدخال حد أقصى صالح لعدد الحلقات، يتراوح بين 1 و {{maxCount}}", + "errorResponseMethod": "طريقة استجابة الخطأ", + "ErrorMethod": { + "operationTerminated": "تم الإنهاء", + "continueOnError": "متابعة عند الخطأ", + "removeAbnormalOutput": "إزالة الإخراج غير الطبيعي" + }, + "loopVariables": "متغيرات الحلقة", + "initialLoopVariables": "متغيرات الحلقة الأولية", + "finalLoopVariables": "متغيرات الحلقة النهائية", + "setLoopVariables": "تعيين المتغيرات داخل نطاق الحلقة", + "variableName": "اسم المتغير", + "inputMode": "وضع الإدخال", + "exitConditionTip": "تحتاج عقدة الحلقة إلى شرط خروج واحد على الأقل", + "loopNode": "عقدة الحلقة", + "currentLoopCount": "عدد الحلقات الحالي: {{count}}", + "totalLoopCount": "إجمالي عدد الحلقات: {{count}}" + }, + "note": { + "addNote": "إضافة ملاحظة", + "editor": { + "placeholder": "اكتب ملاحظتك...", + "small": "صغير", + "medium": "متوسط", + "large": "كبير", + "bold": "غامق", + "italic": "مائل", + "strikethrough": "يتوسطه خط", + "link": "رابط", + "openLink": "فتح", + "unlink": "إلغاء الرابط", + "enterUrl": "أدخل URL...", + "invalidUrl": "URL غير صالح", + "bulletList": "قائمة نقطية", + "showAuthor": "عرض المؤلف" + } + }, + "docExtractor": { + "inputVar": "متغير الإدخال", + "outputVars": { + "text": "نص مستخرج" + }, + "supportFileTypes": "أنواع الملفات المدعومة: {{types}}.", + "learnMore": "تعرف على المزيد" + }, + "listFilter": { + "inputVar": "متغير الإدخال", + "filterCondition": "شرط التصفية", + "filterConditionKey": "مفتاح شرط التصفية", + "extractsCondition": "استخراج العنصر N", + "filterConditionComparisonOperator": "مشغل مقارنة شرط التصفية", + "filterConditionComparisonValue": "قيمة شرط التصفية", + "selectVariableKeyPlaceholder": "حدد مفتاح المتغير الفرعي", + "limit": "أعلى N", + "orderBy": "ترتيب حسب", + "asc": "ASC", + "desc": "DESC", + "outputVars": { + "result": "نتيجة التصفية", + "first_record": "السجل الأول", + "last_record": "السجل الأخير" + } + }, + "agent": { + "strategy": { + "label": "استراتيجية الوكيل", + "tooltip": "تحدد استراتيجيات الوكيل المختلفة كيفية تخطيط النظام وتنفيذ استدعاءات الأدوات متعددة الخطوات", + "shortLabel": "استراتيجية", + "configureTip": "يرجى تكوين استراتيجية الوكيل.", + "configureTipDesc": "بعد تكوين استراتيجية الوكيل، ستقوم هذه العقدة تلقائيًا بتحميل التكوينات المتبقية. ستؤثر الاستراتيجية على آلية التفكير في الأدوات متعددة الخطوات. ", + "selectTip": "حدد استراتيجية الوكيل", + "searchPlaceholder": "بحث في استراتيجية الوكيل" + }, + "learnMore": "تعرف على المزيد", + "pluginNotInstalled": "هذا الملحق غير مثبت", + "pluginNotInstalledDesc": "تم تثبيت هذا الملحق من GitHub. يرجى الانتقال إلى الملحقات لإعادة التثبيت", + "linkToPlugin": "رابط للإضافات", + "pluginInstaller": { + "install": "تثبيت", + "installing": "جاري التثبيت" + }, + "modelNotInMarketplace": { + "title": "النموذج غير مثبت", + "desc": "تم تثبيت هذا النموذج من مستودع محلي أو GitHub. الرجاء استخدامه بعد التثبيت.", + "manageInPlugins": "إدارة في الإضافات" + }, + "modelNotSupport": { + "title": "نموذج غير مدعوم", + "desc": "لا يوفر إصدار الملحق المثبت هذا النموذج.", + "descForVersionSwitch": "لا يوفر إصدار الملحق المثبت هذا النموذج. انقر لتبديل الإصدار." + }, + "configureModel": "تكوين النموذج", + "notAuthorized": "غير مخول", + "model": "النموذج", + "toolbox": "صندوق الأدوات", + "strategyNotSet": "لم يتم تعيين استراتيجية الوكيل", + "tools": "الأدوات", + "maxIterations": "الحد الأقصى للتكرارات", + "modelNotSelected": "النموذج غير محدد", + "modelNotInstallTooltip": "هذا النموذج غير مثبت", + "toolNotInstallTooltip": "{{tool}} غير مثبت", + "toolNotAuthorizedTooltip": "{{tool}} غير مخول", + "strategyNotInstallTooltip": "{{strategy}} غير مثبتة", + "unsupportedStrategy": "استراتيجية غير مدعومة", + "pluginNotFoundDesc": "تم تثبيت هذا الملحق من GitHub. يرجى الانتقال إلى الملحقات لإعادة التثبيت", + "strategyNotFoundDesc": "لا يوفر إصدار الملحق المثبت هذه الاستراتيجية.", + "strategyNotFoundDescAndSwitchVersion": "لا يوفر إصدار الملحق المثبت هذه الاستراتيجية. انقر لتبديل الإصدار.", + "modelSelectorTooltips": { + "deprecated": "تم إهمال هذا النموذج" + }, + "outputVars": { + "text": "محتوى تم إنشاؤه بواسطة الوكيل", + "usage": "معلومات استخدام النموذج", + "files": { + "title": "ملفات تم إنشاؤها بواسطة الوكيل", + "type": "نوع الدعم. الآن يدعم الصورة فقط", + "transfer_method": "طريقة النقل. القيمة هي remote_url أو local_file", + "url": "رابط الصورة", + "upload_file_id": "معرف ملف التحميل" + }, + "json": "json تم إنشاؤه بواسطة الوكيل" + }, + "checkList": { + "strategyNotSelected": "الاستراتيجية غير محددة" + }, + "installPlugin": { + "title": "تثبيت الإضافة", + "desc": "على وشك تثبيت الإضافة التالية", + "changelog": "سجل التغييرات", + "install": "تثبيت", + "cancel": "إلغاء" + }, + "clickToViewParameterSchema": "انقر لعرض مخطط المعلمة", + "parameterSchema": "مخطط المعلمة" + }, + "dataSource": { + "supportedFileFormats": "تنسيقات الملفات المدعومة", + "supportedFileFormatsPlaceholder": "امتداد الملف، مثل doc", + "add": "إضافة مصدر بيانات" + }, + "knowledgeBase": { + "chunkStructure": "هيكل القطعة", + "chooseChunkStructure": "اختر هيكل القطعة", + "chunkStructureTip": { + "title": "الرجاء اختيار هيكل القطعة", + "message": "تدعم قاعدة المعرفة Dify ثلاثة هياكل للقطع: عام، وأصل-طفل، وسؤال وجواب. يمكن أن يكون لكل قاعدة معرفة هيكل واحد فقط. يجب أن يتوافق الإخراج من العقدة السابقة مع هيكل القطعة المحدد. لاحظ أن اختيار هيكل القطع يؤثر على طرق الفهرسة المتاحة.", + "learnMore": "تعرف على المزيد" + }, + "changeChunkStructure": "تغيير هيكل القطعة", + "chunksInput": "القطع", + "chunksInputTip": "متغير الإدخال لعقدة قاعدة المعرفة هو Pieces. نوع المتغير هو كائن بمخطط JSON محدد يجب أن يكون متسقًا مع هيكل القطعة المحدد.", + "aboutRetrieval": "حول طريقة الاسترجاع.", + "chunkIsRequired": "هيكل القطعة مطلوب", + "indexMethodIsRequired": "طريقة الفهرسة مطلوبة", + "chunksVariableIsRequired": "متغير القطع مطلوب", + "embeddingModelIsRequired": "نموذج التضمين مطلوب", + "embeddingModelIsInvalid": "نموذج التضمين غير صالح", + "retrievalSettingIsRequired": "إعداد الاسترجاع مطلوب", + "rerankingModelIsRequired": "نموذج إعادة الترتيب مطلوب", + "rerankingModelIsInvalid": "نموذج إعادة الترتيب غير صالح" + }, + "triggerSchedule": { + "title": "الجدول الزمني", + "nodeTitle": "جدولة المشغل", + "notConfigured": "لم يتم التكوين", + "useCronExpression": "استخدم تعبير cron", + "useVisualPicker": "استخدم منتقي مرئي", + "frequency": { + "label": "التكرار", + "hourly": "كل ساعة", + "daily": "يوميًا", + "weekly": "أسبوعيًا", + "monthly": "شهريًا" + }, + "selectFrequency": "حدد التكرار", + "frequencyLabel": "التكرار", + "nextExecution": "التنفيذ التالي", + "weekdays": "أيام الأسبوع", + "time": "الوقت", + "cronExpression": "تعبير Cron", + "nextExecutionTime": "وقت التنفيذ التالي", + "nextExecutionTimes": "أوقات التنفيذ الـ 5 التالية", + "startTime": "وقت البدء", + "executeNow": "التنفيذ الآن", + "selectDateTime": "حدد التاريخ والوقت", + "hours": "الساعات", + "minutes": "الدقائق", + "onMinute": "في الدقيقة", + "days": "الأيام", + "lastDay": "اليوم الأخير", + "lastDayTooltip": "ليست كل الأشهر 31 يومًا. استخدم خيار \"اليوم الأخير\" لتحديد اليوم الأخير من كل شهر.", + "mode": "الوضع", + "timezone": "المنطقة الزمنية", + "visualConfig": "التكوين المرئي", + "monthlyDay": "يوم شهري", + "executionTime": "وقت التنفيذ", + "invalidTimezone": "منطقة زمنية غير صالحة", + "invalidCronExpression": "تعبير cron غير صالح", + "noValidExecutionTime": "لا يمكن حساب وقت تنفيذ صالح", + "executionTimeCalculationError": "فشل حساب أوقات التنفيذ", + "invalidFrequency": "تكرار غير صالح", + "invalidStartTime": "وقت البدء غير صالح", + "startTimeMustBeFuture": "يجب أن يكون وقت البدء في المستقبل", + "invalidTimeFormat": "تنسيق الوقت غير صالح (المتوقع HH:MM AM/PM)", + "invalidWeekday": "يوم أسبوع غير صالح: {{weekday}}", + "invalidMonthlyDay": "يجب أن يكون اليوم الشهري بين 1-31 أو \"last\"", + "invalidOnMinute": "يجب أن تكون الدقيقة بين 0-59", + "invalidExecutionTime": "وقت التنفيذ غير صالح", + "executionTimeMustBeFuture": "يجب أن يكون وقت التنفيذ في المستقبل" + }, + "triggerWebhook": { + "title": "مشغل Webhook", + "nodeTitle": "🔗 مشغل Webhook", + "configPlaceholder": "سيتم تنفيذ تكوين مشغل webhook هنا", + "webhookUrl": "Webhook URL", + "webhookUrlPlaceholder": "انقر فوق إنشاء لإنشاء عنوان URL لـ webhook", + "generate": "توليد", + "copy": "نسخ", + "test": "اختبار", + "urlGenerated": "تم إنشاء عنوان URL لـ webhook بنجاح", + "urlGenerationFailed": "فشل إنشاء عنوان URL لـ webhook", + "urlCopied": "تم نسخ عنوان URL إلى الحافظة", + "method": "الطريقة", + "contentType": "نوع المحتوى", + "queryParameters": "معلمات الاستعلام", + "headerParameters": "معلمات الرأس", + "requestBodyParameters": "معلمات جسم الطلب", + "parameterName": "اسم المتغير", + "varName": "اسم المتغير", + "varType": "النوع", + "varNamePlaceholder": "أدخل اسم المتغير...", + "required": "مطلوب", + "addParameter": "إضافة", + "addHeader": "إضافة", + "noParameters": "لم يتم تكوين أي معلمات", + "noQueryParameters": "لم يتم تكوين أي معلمات استعلام", + "noHeaders": "لم يتم تكوين أي رؤوس", + "noBodyParameters": "لم يتم تكوين أي معلمات جسم", + "debugUrlTitle": "للتشغيل الاختياري، استخدم دائمًا هذا العنوان", + "debugUrlCopy": "انقر للنسخ", + "debugUrlCopied": "تم النسخ!", + "debugUrlPrivateAddressWarning": "يبدو أن عنوان URL هذا عنوان داخلي، مما قد يتسبب في فشل طلبات webhook. يمكنك تغيير TRIGGER_URL إلى عنوان عام.", + "errorHandling": "معالجة الأخطاء", + "errorStrategy": "معالجة الأخطاء", + "responseConfiguration": "استجابة", + "asyncMode": "وضع غير متزامن", + "statusCode": "رمز الحالة", + "responseBody": "جسم الاستجابة", + "responseBodyPlaceholder": "اكتب جسم الاستجابة هنا", + "headers": "الرؤوس", + "validation": { + "webhookUrlRequired": "عنوان URL لـ Webhook مطلوب", + "invalidParameterType": "نوع المعلمة غير صالح \"{{type}}\" للمعلمة \"{{name}}\"" + } + } + }, + "triggerStatus": { + "enabled": "مشغل", + "disabled": "مشغل • معطل" + }, + "entryNodeStatus": { + "enabled": "بدء", + "disabled": "بدء • معطل" + }, + "tracing": { + "stopBy": "توقف بواسطة {{user}}" + }, + "versionHistory": { + "title": "الإصدارات", + "currentDraft": "المسودة الحالية", + "latest": "الأحدث", + "filter": { + "all": "الكل", + "onlyYours": "الخاص بك فقط", + "onlyShowNamedVersions": "إظهار الإصدارات المسماة فقط", + "reset": "إعادة تعيين التصفية", + "empty": "لم يتم العثور على سجل إصدار مطابق" + }, + "defaultName": "إصدار بدون عنوان", + "nameThisVersion": "تسمية هذا الإصدار", + "editVersionInfo": "تعديل معلومات الإصدار", + "copyId": "نسخ المعرف", + "editField": { + "title": "العنوان", + "releaseNotes": "ملاحظات الإصدار", + "titleLengthLimit": "لا يمكن أن يتجاوز العنوان {{limit}} حرفًا", + "releaseNotesLengthLimit": "لا يمكن أن تتجاوز ملاحظات الإصدار {{limit}} حرفًا" + }, + "releaseNotesPlaceholder": "صف ما تغير", + "restorationTip": "بعد استعادة الإصدار، سيتم استبدال المسودة الحالية.", + "deletionTip": "الحذف لا رجعة فيه، يرجى التأكد.", + "action": { + "restoreSuccess": "تم استعادة الإصدار", + "restoreFailure": "فشل استعادة الإصدار", + "deleteSuccess": "تم حذف الإصدار", + "deleteFailure": "فشل حذف الإصدار", + "updateSuccess": "تم تحديث الإصدار", + "updateFailure": "فشل تحديث الإصدار", + "copyIdSuccess": "تم نسخ المعرف إلى الحافظة" + } + }, + "debug": { + "settingsTab": "الإعدادات", + "lastRunTab": "آخر تشغيل", + "relationsTab": "العلاقات", + "copyLastRun": "نسخ آخر تشغيل", + "noLastRunFound": "لم يتم العثور على تشغيل سابق", + "noMatchingInputsFound": "لم يتم العثور على مدخلات مطابقة من آخر تشغيل", + "lastRunInputsCopied": "تم نسخ {{count}} إدخال (إدخالات) من آخر تشغيل", + "copyLastRunError": "فشل نسخ مدخلات آخر تشغيل", + "noData": { + "description": "سيتم عرض نتائج آخر تشغيل هنا", + "runThisNode": "تشغيل هذه العقدة" + }, + "variableInspect": { + "title": "فحص المتغير", + "emptyTip": "بعد تخطي عقدة على اللوحة أو تشغيل عقدة خطوة بخطوة، يمكنك عرض القيمة الحالية لمتغير العقدة في فحص المتغير", + "emptyLink": "تعرف على المزيد", + "clearAll": "إعادة تعيين الكل", + "clearNode": "مسح المتغير المخبأ", + "resetConversationVar": "إعادة تعيين متغير المحادثة إلى القيمة الافتراضية", + "view": "عرض السجل", + "edited": "تم التعديل", + "reset": "إعادة تعيين إلى قيمة آخر تشغيل", + "listening": { + "title": "الاستماع للأحداث من المشغلات...", + "tip": "يمكنك الآن محاكاة مشغلات الحدث عن طريق إرسال طلبات اختبار إلى نقطة نهاية HTTP {{nodeName}} أو استخدامها كعنوان URL لرد الاتصال لتصحيح أخطاء الحدث المباشر. يمكن عرض جميع المخرجات مباشرة في فحص المتغير.", + "tipPlugin": "الآن يمكنك إنشاء أحداث في {{- pluginName}}، واسترجاع المخرجات من هذه الأحداث في فحص المتغير.", + "tipSchedule": "الاستماع للأحداث من مشغلات الجدول.\nالتشغيل المجدول التالي: {{nextTriggerTime}}", + "tipFallback": "انتظار أحداث المشغل الواردة. ستظهر المخرجات هنا.", + "defaultNodeName": "هذا المشغل", + "defaultPluginName": "مشغل الإضافة هذا", + "defaultScheduleTime": "لم يتم التكوين", + "selectedTriggers": "المشغلات المحددة", + "stopButton": "توقف" + }, + "trigger": { + "normal": "فحص المتغير", + "running": "التخزين المؤقت لحالة التشغيل", + "stop": "إيقاف التشغيل", + "cached": "عرض المتغيرات المخبأة", + "clear": "مسح" + }, + "envNode": "البيئة", + "chatNode": "المحادثة", + "systemNode": "النظام", + "exportToolTip": "تصدير متغير كملف", + "largeData": "بيانات كبيرة، معاينة للقراءة فقط. تصدير لعرض الكل.", + "largeDataNoExport": "بيانات كبيرة - معاينة جزئية فقط", + "export": "تصدير" + }, + "lastOutput": "آخر إخراج", + "relations": { + "dependencies": "التبعيات", + "dependents": "المعتمدون", + "dependenciesDescription": "العقد التي تعتمد عليها هذه العقدة", + "dependentsDescription": "العقد التي تعتمد على هذه العقدة", + "noDependencies": "لا توجد تبعيات", + "noDependents": "لا يوجد معتمدون" + } + }, + "onboarding": { + "title": "حدد عقدة البداية للبدء", + "description": "لدى عقد البداية المختلفة قدرات مختلفة. لا تقلق، يمكنك دائمًا تغييرها لاحقًا.", + "userInputFull": "إدخال المستخدم (عقدة البداية الأصلية)", + "userInputDescription": "عقدة البداية التي تسمح بتعيين متغيرات إدخال المستخدم، مع إمكانيات تطبيق الويب، وواجهة برمجة تطبيقات الخدمة، وخادم MCP، وقدرات سير العمل كأداة.", + "trigger": "مشغل", + "triggerDescription": "يمكن أن تعمل المشغلات كعقدة بداية لسير العمل، مثل المهام المجدولة، أو خطافات الويب المخصصة، أو التكامل مع تطبيقات أخرى.", + "back": "رجوع", + "learnMore": "تعرف على المزيد", + "aboutStartNode": "حول عقدة البداية.", + "escTip": { + "press": "اضغط", + "key": "esc", + "toDismiss": "للرفض" + } + } +} diff --git a/web/i18n/ar-TN/workflow.ts b/web/i18n/ar-TN/workflow.ts deleted file mode 100644 index 005045c4a7..0000000000 --- a/web/i18n/ar-TN/workflow.ts +++ /dev/null @@ -1,1296 +0,0 @@ -const translation = { - common: { - undo: 'تراجع', - redo: 'إعادة', - editing: 'تعديل', - autoSaved: 'تم الحفظ تلقائيًا', - unpublished: 'غير منشور', - published: 'منشور', - publish: 'نشر', - update: 'تحديث', - publishUpdate: 'نشر التحديث', - run: 'تشغيل', - running: 'جارٍ التشغيل', - listening: 'الاستماع', - chooseStartNodeToRun: 'اختر عقدة البداية للتشغيل', - runAllTriggers: 'تشغيل جميع المشغلات', - inRunMode: 'في وضع التشغيل', - inPreview: 'في المعاينة', - inPreviewMode: 'في وضع المعاينة', - preview: 'معاينة', - viewRunHistory: 'عرض سجل التشغيل', - runHistory: 'سجل التشغيل', - goBackToEdit: 'العودة إلى المحرر', - conversationLog: 'سجل المحادثة', - features: 'الميزات', - featuresDescription: 'تحسين تجربة مستخدم تطبيق الويب', - ImageUploadLegacyTip: 'يمكنك الآن إنشاء متغيرات نوع الملف في نموذج البداية. لن ندعم ميزة تحميل الصور في المستقبل. ', - fileUploadTip: 'تم ترقية ميزات تحميل الصور إلى تحميل الملفات. ', - featuresDocLink: 'تعرف على المزيد', - debugAndPreview: 'معاينة', - restart: 'إعادة تشغيل', - currentDraft: 'المسودة الحالية', - currentDraftUnpublished: 'المسودة الحالية غير منشورة', - latestPublished: 'آخر منشور', - publishedAt: 'تم النشر في', - restore: 'استعادة', - versionHistory: 'سجل الإصدارات', - exitVersions: 'خروج من الإصدارات', - runApp: 'تشغيل التطبيق', - batchRunApp: 'تشغيل التطبيق دفعة واحدة', - openInExplore: 'فتح في الاستكشاف', - accessAPIReference: 'الوصول إلى مرجع API', - embedIntoSite: 'تضمين في الموقع', - addTitle: 'إضافة عنوان...', - addDescription: 'إضافة وصف...', - noVar: 'لا يوجد متغير', - searchVar: 'بحث عن متغير', - variableNamePlaceholder: 'اسم المتغير', - setVarValuePlaceholder: 'تعيين متغير', - needConnectTip: 'هذه الخطوة غير متصلة بأي شيء', - maxTreeDepth: 'الحد الأقصى لـ {{depth}} عقد لكل فرع', - needAdd: 'يجب إضافة عقدة {{node}}', - needOutputNode: 'يجب إضافة عقدة الإخراج', - needStartNode: 'يجب إضافة عقدة بدء واحدة على الأقل', - needAnswerNode: 'يجب إضافة عقدة الإجابة', - workflowProcess: 'عملية سير العمل', - notRunning: 'لم يتم التشغيل بعد', - previewPlaceholder: 'أدخل المحتوى في المربع أدناه لبدء تصحيح أخطاء Chatbot', - effectVarConfirm: { - title: 'إزالة المتغير', - content: 'يتم استخدام المتغير في عقد أخرى. هل ما زلت تريد إزالته؟', - }, - insertVarTip: 'اضغط على مفتاح \'/\' للإدراج بسرعة', - processData: 'معالجة البيانات', - input: 'إدخال', - output: 'إخراج', - jinjaEditorPlaceholder: 'اكتب \'/\' أو \'{\' لإدراج متغير', - viewOnly: 'عرض فقط', - showRunHistory: 'عرض سجل التشغيل', - enableJinja: 'تمكين دعم قالب Jinja', - learnMore: 'تعرف على المزيد', - copy: 'نسخ', - duplicate: 'تكرار', - addBlock: 'إضافة عقدة', - pasteHere: 'لصق هنا', - pointerMode: 'وضع المؤشر', - handMode: 'وضع اليد', - exportImage: 'تصدير صورة', - exportPNG: 'تصدير كـ PNG', - exportJPEG: 'تصدير كـ JPEG', - exportSVG: 'تصدير كـ SVG', - currentView: 'العرض الحالي', - currentWorkflow: 'سير العمل الحالي', - moreActions: 'المزيد من الإجراءات', - model: 'النموذج', - workflowAsTool: 'سير العمل كأداة', - configureRequired: 'التكوين مطلوب', - configure: 'تكوين', - manageInTools: 'إدارة في الأدوات', - workflowAsToolTip: 'التكوين المطلوب للأداة بعد تحديث سير العمل.', - workflowAsToolDisabledHint: 'انشر أحدث سير عمل وتأكد من وجود عقدة إدخال مستخدم متصلة قبل تكوينها كأداة.', - viewDetailInTracingPanel: 'عرض التفاصيل', - syncingData: 'مزامنة البيانات، بضع ثوان فقط.', - importDSL: 'استيراد DSL', - importDSLTip: 'سيتم استبدال المسودة الحالية.\nقم بتصدير سير العمل كنسخة احتياطية قبل الاستيراد.', - backupCurrentDraft: 'نسخ احتياطي للمسودة الحالية', - chooseDSL: 'اختر ملف DSL', - overwriteAndImport: 'استبدال واستيراد', - importFailure: 'فشل الاستيراد', - importWarning: 'تحذير', - importWarningDetails: 'قد يؤثر اختلاف إصدار DSL على ميزات معينة', - importSuccess: 'تم الاستيراد بنجاح', - parallelTip: { - click: { - title: 'نقرة', - desc: ' للإضافة', - }, - drag: { - title: 'سحب', - desc: ' للتوصيل', - }, - limit: 'يقتصر التوازي على {{num}} فروع.', - depthLimit: 'حد طبقة التداخل المتوازي {{num}} طبقات', - }, - disconnect: 'قطع الاتصال', - jumpToNode: 'القفز إلى هذه العقدة', - addParallelNode: 'إضافة عقدة متوازية', - parallel: 'توازي', - branch: 'فرع', - onFailure: 'عند الفشل', - addFailureBranch: 'إضافة فرع فشل', - loadMore: 'تحميل المزيد', - noHistory: 'لا يوجد سجل', - tagBound: 'عدد التطبيقات التي تستخدم هذه العلامة', - }, - publishLimit: { - startNodeTitlePrefix: 'قم بالترقية إلى', - startNodeTitleSuffix: 'فتح مشغلات غير محدودة لكل سير عمل', - startNodeDesc: 'لقد وصلت إلى الحد المسموح به وهو 2 مشغلات لكل سير عمل لهذه الخطة. قم بالترقية لنشر سير العمل هذا.', - }, - env: { - envPanelTitle: 'متغيرات البيئة', - envDescription: 'يمكن استخدام متغيرات البيئة لتخزين المعلومات الخاصة وبيانات الاعتماد. فهي للقراءة فقط ويمكن فصلها عن ملف DSL أثناء التصدير.', - envPanelButton: 'إضافة متغير', - modal: { - title: 'إضافة متغير بيئة', - editTitle: 'تعديل متغير بيئة', - type: 'النوع', - name: 'الاسم', - namePlaceholder: 'اسم المتغير', - value: 'القيمة', - valuePlaceholder: 'قيمة المتغير', - secretTip: 'يستخدم لتحديد معلومات أو بيانات حساسة، مع إعدادات DSL المكونة لمنع التسرب.', - description: 'الوصف', - descriptionPlaceholder: 'وصف المتغير', - }, - export: { - title: 'تصدير متغيرات البيئة السرية؟', - checkbox: 'تصدير القيم السرية', - ignore: 'تصدير DSL', - export: 'تصدير DSL مع القيم السرية ', - }, - }, - globalVar: { - title: 'متغيرات النظام', - description: 'متغيرات النظام هي متغيرات عامة يمكن الإشارة إليها بواسطة أي عقدة دون توصيل عندما يكون النوع صحيحًا، مثل معرف المستخدم ومعرف سير العمل.', - fieldsDescription: { - conversationId: 'معرف المحادثة', - dialogCount: 'عدد المحادثات', - userId: 'معرف المستخدم', - triggerTimestamp: 'توقيت بدء التطبيق', - appId: 'معرف التطبيق', - workflowId: 'معرف سير العمل', - workflowRunId: 'معرف تشغيل سير العمل', - }, - }, - sidebar: { - exportWarning: 'تصدير النسخة المحفوظة الحالية', - exportWarningDesc: 'سيؤدي هذا إلى تصدير النسخة المحفوظة الحالية من سير العمل الخاص بك. إذا كانت لديك تغييرات غير محفوظة في المحرر، يرجى حفظها أولاً باستخدام خيار التصدير في لوحة سير العمل.', - }, - chatVariable: { - panelTitle: 'متغيرات المحادثة', - panelDescription: 'تستخدم متغيرات المحادثة لتخزين المعلومات التفاعلية التي يحتاج LLM إلى تذكرها، بما في ذلك سجل المحادثة والملفات التي تم تحميلها وتفضيلات المستخدم. هم للقراءة والكتابة. ', - docLink: 'قم بزيارة مستنداتنا لمعرفة المزيد.', - button: 'إضافة متغير', - modal: { - title: 'إضافة متغير محادثة', - editTitle: 'تعديل متغير محادثة', - name: 'الاسم', - namePlaceholder: 'اسم المتغير', - type: 'النوع', - value: 'القيمة الافتراضية', - valuePlaceholder: 'القيمة الافتراضية، اتركها فارغة لعدم التعيين', - description: 'الوصف', - descriptionPlaceholder: 'وصف المتغير', - editInJSON: 'تعديل في JSON', - oneByOne: 'إضافة واحدة تلو الأخرى', - editInForm: 'تعديل في النموذج', - arrayValue: 'القيمة', - addArrayValue: 'إضافة قيمة', - objectKey: 'مفتاح', - objectType: 'النوع', - objectValue: 'القيمة الافتراضية', - }, - storedContent: 'المحتوى المخزن', - updatedAt: 'تم التحديث في ', - }, - changeHistory: { - title: 'سجل التغييرات', - placeholder: 'لم تقم بتغيير أي شيء بعد', - clearHistory: 'مسح السجل', - hint: 'تلميح', - hintText: 'يتم تتبع إجراءات التحرير الخاصة بك في سجل التغييرات، والذي يتم تخزينه على جهازك طوال مدة هذه الجلسة. سيتم مسح هذا السجل عند مغادرة المحرر.', - stepBackward_one: '{{count}} خطوة إلى الوراء', - stepBackward_other: '{{count}} خطوات إلى الوراء', - stepForward_one: '{{count}} خطوة إلى الأمام', - stepForward_other: '{{count}} خطوات إلى الأمام', - sessionStart: 'بدء الجلسة', - currentState: 'الحالة الحالية', - nodeTitleChange: 'تم تغيير عنوان العقدة', - nodeDescriptionChange: 'تم تغيير وصف العقدة', - nodeDragStop: 'تم نقل العقدة', - nodeChange: 'تم تغيير العقدة', - nodeConnect: 'تم توصيل العقدة', - nodePaste: 'تم لصق العقدة', - nodeDelete: 'تم حذف العقدة', - nodeAdd: 'تم إضافة العقدة', - nodeResize: 'تم تغيير حجم العقدة', - noteAdd: 'تم إضافة ملاحظة', - noteChange: 'تم تغيير الملاحظة', - noteDelete: 'تم حذف الملاحظة', - edgeDelete: 'تم قطع اتصال العقدة', - }, - errorMsg: { - fieldRequired: '{{field}} مطلوب', - rerankModelRequired: 'مطلوب تكوين نموذج Rerank', - authRequired: 'الترخيص مطلوب', - invalidJson: '{{field}} هو JSON غير صالح', - fields: { - variable: 'اسم المتغير', - variableValue: 'قيمة المتغير', - code: 'الكود', - model: 'النموذج', - rerankModel: 'نموذج Rerank المكون', - visionVariable: 'متغير الرؤية', - }, - invalidVariable: 'متغير غير صالح', - noValidTool: '{{field}} لا توجد أداة صالحة محددة', - toolParameterRequired: '{{field}}: المعلمة [{{param}}] مطلوبة', - startNodeRequired: 'الرجاء إضافة عقدة البداية أولاً قبل {{operation}}', - }, - error: { - startNodeRequired: 'الرجاء إضافة عقدة البداية أولاً قبل {{operation}}', - operations: { - connectingNodes: 'توصيل العقد', - addingNodes: 'إضافة العقد', - modifyingWorkflow: 'تعديل سير العمل', - updatingWorkflow: 'تحديث سير العمل', - }, - }, - singleRun: { - testRun: 'تشغيل اختياري', - startRun: 'بدء التشغيل', - preparingDataSource: 'تحضير مصدر البيانات', - reRun: 'إعادة التشغيل', - running: 'جارٍ التشغيل', - testRunIteration: 'تكرار تشغيل الاختبار', - back: 'خلف', - iteration: 'تكرار', - loop: 'حلقة', - }, - tabs: { - 'searchBlock': 'بحث عن عقدة', - 'start': 'البداية', - 'blocks': 'العقد', - 'searchTool': 'أداة البحث', - 'searchTrigger': 'بحث عن المشغلات...', - 'allTriggers': 'كل المشغلات', - 'tools': 'الأدوات', - 'allTool': 'الكل', - 'plugin': 'الإضافة', - 'customTool': 'مخصص', - 'workflowTool': 'سير العمل', - 'question-understand': 'فهم السؤال', - 'logic': 'المنطق', - 'transform': 'تحويل', - 'utilities': 'الأدوات المساعدة', - 'noResult': 'لم يتم العثور على تطابق', - 'noPluginsFound': 'لم يتم العثور على إضافات', - 'requestToCommunity': 'طلبات للمجتمع', - 'agent': 'استراتيجية الوكيل', - 'allAdded': 'تمت إضافة الكل', - 'addAll': 'إضافة الكل', - 'sources': 'المصادر', - 'searchDataSource': 'بحث في مصدر البيانات', - 'featuredTools': 'المميزة', - 'showMoreFeatured': 'عرض المزيد', - 'showLessFeatured': 'عرض أقل', - 'installed': 'مثبت', - 'pluginByAuthor': 'بواسطة {{author}}', - 'usePlugin': 'حدد الأداة', - 'hideActions': 'إخفاء الأدوات', - 'noFeaturedPlugins': 'اكتشف المزيد من الأدوات في السوق', - 'noFeaturedTriggers': 'اكتشف المزيد من المشغلات في السوق', - 'startDisabledTip': 'تتعارض عقدة المشغل وعقدة إدخال المستخدم.', - }, - blocks: { - 'start': 'إدخال المستخدم', - 'originalStartNode': 'عقدة البداية الأصلية', - 'end': 'الإخراج', - 'answer': 'إجابة', - 'llm': 'LLM', - 'knowledge-retrieval': 'استرجاع المعرفة', - 'question-classifier': 'مصنف الأسئلة', - 'if-else': 'IF/ELSE', - 'code': 'كود', - 'template-transform': 'قالب', - 'http-request': 'طلب HTTP', - 'variable-assigner': 'مجمع المتغيرات', - 'variable-aggregator': 'مجمع المتغيرات', - 'assigner': 'معين المتغيرات', - 'iteration-start': 'بداية التكرار', - 'iteration': 'تكرار', - 'parameter-extractor': 'مستخرج المعلمات', - 'document-extractor': 'مستخرج المستندات', - 'list-operator': 'مشغل القائمة', - 'agent': 'وكيل', - 'loop-start': 'بداية الحلقة', - 'loop': 'حلقة', - 'loop-end': 'خروج من الحلقة', - 'knowledge-index': 'قاعدة المعرفة', - 'datasource': 'مصدر البيانات', - 'trigger-schedule': 'جدولة المشغل', - 'trigger-webhook': 'مشغل الويب هوك', - 'trigger-plugin': 'مشغل الإضافة', - }, - customWebhook: 'ويب هوك مخصص', - 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': 'تجميع متغيرات متعددة الفروع في متغير واحد للتكوين الموحد للعقد النهائية.', - 'assigner': 'تُستخدم عقدة تعيين المتغير لتعيين قيم للمتغيرات القابلة للكتابة (مثل متغيرات المحادثة).', - 'variable-aggregator': 'تجميع متغيرات متعددة الفروع في متغير واحد للتكوين الموحد للعقد النهائية.', - 'iteration': 'تنفيذ خطوات متعددة على كائن قائمة حتى يتم إخراج جميع النتائج.', - 'loop': 'تنفيذ حلقة من المنطق حتى يتم استيفاء شروط الإنهاء أو الوصول إلى الحد الأقصى لعدد الحلقات.', - 'loop-end': 'يعادل "break". هذه العقدة لا تحتوي على عناصر تكوين. عندما يصل جسم الحلقة إلى هذه العقدة، تنتهي الحلقة.', - 'parameter-extractor': 'استخدم LLM لاستخراج المعلمات الهيكلية من اللغة الطبيعية لاستدعاء الأدوات أو طلبات HTTP.', - 'document-extractor': 'تستخدم لتحليل المستندات التي تم تحميلها إلى محتوى نصي يسهل فهمه بواسطة LLM.', - 'list-operator': 'تستخدم لتصفية أو فرز محتوى المصفوفة.', - 'agent': 'استدعاء نماذج اللغة الكبيرة للإجابة على الأسئلة أو معالجة اللغة الطبيعية', - 'knowledge-index': 'حول قاعدة المعرفة', - 'datasource': 'حول مصدر البيانات', - 'trigger-schedule': 'مشغل سير عمل قائم على الوقت يبدأ سير العمل وفقًا لجدول زمني', - 'trigger-webhook': 'يتلقى مشغل Webhook دفعات HTTP من أنظمة خارجية لتشغيل سير العمل تلقائيًا.', - 'trigger-plugin': 'مشغل تكامل تابع لجهة خارجية يبدأ سير العمل من أحداث النظام الأساسي الخارجي', - }, - difyTeam: 'فريق Dify', - operator: { - zoomIn: 'تكبير', - zoomOut: 'تصغير', - zoomTo50: 'تكبير إلى 50%', - zoomTo100: 'تكبير إلى 100%', - zoomToFit: 'ملاءمة الشاشة', - alignNodes: 'محاذاة العقد', - alignLeft: 'يسار', - alignCenter: 'وسط', - alignRight: 'يمين', - alignTop: 'أعلى', - alignMiddle: 'وسط', - alignBottom: 'أسفل', - vertical: 'عمودي', - horizontal: 'أفقي', - distributeHorizontal: 'توزيع أفقي', - distributeVertical: 'توزيع عمودي', - selectionAlignment: 'محاذاة التحديد', - }, - variableReference: { - noAvailableVars: 'لا توجد متغيرات متاحة', - noVarsForOperation: 'لا توجد متغيرات متاحة للتعيين مع العملية المحددة.', - noAssignedVars: 'لا توجد متغيرات معينة متاحة', - assignedVarsDescription: 'يجب أن تكون المتغيرات المعينة متغيرات قابلة للكتابة، مثل ', - conversationVars: 'متغيرات المحادثة', - }, - panel: { - userInputField: 'حقل إدخال المستخدم', - changeBlock: 'تغيير العقدة', - helpLink: 'عرض المستندات', - openWorkflow: 'فتح سير العمل', - about: 'حول', - createdBy: 'تم الإنشاء بواسطة ', - nextStep: 'الخطوة التالية', - addNextStep: 'إضافة الخطوة التالية في هذا سير العمل', - selectNextStep: 'تحديد الخطوة التالية', - runThisStep: 'تشغيل هذه الخطوة', - checklist: 'قائمة المراجعة', - checklistTip: 'تأكد من حل جميع المشكلات قبل النشر', - checklistResolved: 'تم حل جميع المشكلات', - goTo: 'الذهاب إلى', - startNode: 'عقدة البداية', - organizeBlocks: 'تنظيم العقد', - change: 'تغيير', - optional: '(اختياري)', - maximize: 'تكبير القماش', - minimize: 'خروج من وضع ملء الشاشة', - scrollToSelectedNode: 'تمرير إلى العقدة المحددة', - optional_and_hidden: '(اختياري ومخفي)', - }, - nodes: { - common: { - outputVars: 'متغيرات الإخراج', - insertVarTip: 'إدراج متغير', - memory: { - memory: 'الذاكرة', - memoryTip: 'إعدادات ذاكرة الدردشة', - windowSize: 'حجم النافذة', - conversationRoleName: 'اسم دور المحادثة', - user: 'بادئة المستخدم', - assistant: 'بادئة المساعد', - }, - memories: { - title: 'الذكريات', - tip: 'ذاكرة الدردشة', - builtIn: 'مدمج', - }, - errorHandle: { - title: 'معالجة الأخطاء', - tip: 'استراتيجية التعامل مع الاستثناءات، يتم تشغيلها عندما تواجه العقدة استثناءً.', - none: { - title: 'لا شيء', - desc: 'ستتوقف العقدة عن العمل في حالة حدوث استثناء ولم يتم التعامل معه', - }, - defaultValue: { - title: 'القيم الافتراضية', - desc: 'عند حدوث خطأ، حدد محتوى إخراج ثابت.', - tip: 'عند الخطأ، سيعود القيمة أدناه.', - inLog: 'استثناء العقدة، الإخراج وفقًا للقيم الافتراضية.', - output: 'إخراج القيمة الافتراضية', - }, - failBranch: { - title: 'فرع الفشل', - desc: 'عند حدوث خطأ، سيتم تنفيذ فرع الاستثناء', - customize: 'انتقل إلى القماش لتخصيص منطق فرع الفشل.', - customizeTip: 'عند تنشيط فرع الفشل، لن تؤدي الاستثناءات التي تطرحها العقد إلى إنهاء العملية. بدلاً من ذلك، سيتم تنفيذ فرع الفشل المحدد مسبقًا تلقائيًا، مما يسمح لك بتقديم رسائل خطأ، وتقارير، وإصلاحات، أو اتخاذ إجراءات تخطي بمرونة.', - inLog: 'استثناء العقدة، سيتم تلقائيًا تنفيذ فرع الفشل. سيعيد إخراج العقدة نوع خطأ ورسالة خطأ ويمررهما إلى المصب.', - }, - partialSucceeded: { - tip: 'هناك {{num}} عقد في العملية تعمل بشكل غير طبيعي، يرجى الانتقال إلى التتبع للتحقق من السجلات.', - }, - }, - retry: { - retry: 'إعادة المحاولة', - retryOnFailure: 'إعادة المحاولة عند الفشل', - maxRetries: 'الحد الأقصى لإعادة المحاولة', - retryInterval: 'فاصل إعادة المحاولة', - retryTimes: 'أعد المحاولة {{times}} مرات عند الفشل', - retrying: 'جارٍ إعادة المحاولة...', - retrySuccessful: 'تمت إعادة المحاولة بنجاح', - retryFailed: 'فشلت إعادة المحاولة', - retryFailedTimes: 'فشلت {{times}} إعادة المحاولة', - times: 'مرات', - ms: 'مللي ثانية', - retries: '{{num}} إعادة محاولة', - }, - typeSwitch: { - input: 'قيمة الإدخال', - variable: 'استخدام متغير', - }, - inputVars: 'متغيرات الإدخال', - pluginNotInstalled: 'الإضافة غير مثبتة', - }, - 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.', - prompt: 'المطالبة', - roleDescription: { - system: 'أعط تعليمات عالية المستوى للمحادثة', - user: 'قدم تعليمات أو استفسارات أو أي إدخال نصي للنموذج', - assistant: 'استجابات النموذج بناءً على رسائل المستخدم', - }, - addMessage: 'إضافة رسالة', - vision: 'الرؤية', - files: 'الملفات', - resolution: { - name: 'الدقة', - high: 'عالية', - low: 'منخفضة', - }, - outputVars: { - output: 'إنشاء محتوى', - reasoning_content: 'محتوى التفكير', - usage: 'معلومات استخدام النموذج', - }, - singleRun: { - variable: 'متغير', - }, - sysQueryInUser: 'sys.query في رسالة المستخدم مطلوب', - reasoningFormat: { - title: 'تمكين فصل علامة التفكير', - tagged: 'الاحتفاظ بعلامات التفكير', - separated: 'فصل علامات التفكير', - tooltip: 'استخراج المحتوى من علامات التفكير وتخزينه في حقل content_reasoning.', - }, - jsonSchema: { - title: 'مخطط الإخراج المنظم', - instruction: 'تعليمات', - promptTooltip: 'تحويل الوصف النصي إلى هيكل مخطط JSON موحد.', - promptPlaceholder: 'صف مخطط JSON الخاص بك ...', - generate: 'توليد', - import: 'استيراد من JSON', - generateJsonSchema: 'توليد مخطط JSON', - generationTip: 'يمكنك استخدام اللغة الطبيعية لإنشاء مخطط JSON بسرعة.', - generating: 'توليد مخطط JSON ...', - generatedResult: 'النتائج المولدة', - resultTip: 'إليك النتائج المولدة. إذا لم تكن راضيًا، يمكنك العودة وتعديل مطالبتك.', - back: 'رجوع', - regenerate: 'إعادة التوليد', - apply: 'تطبيق', - doc: 'معرفة المزيد عن الإخراج المنظم', - resetDefaults: 'إعادة تعيين', - required: 'مطلوب', - addField: 'إضافة حقل', - addChildField: 'إضافة حقل فرعي', - showAdvancedOptions: 'عرض الخيارات المتقدمة', - stringValidations: 'التحقق من صحة السلسلة', - fieldNamePlaceholder: 'اسم الحقل', - descriptionPlaceholder: 'إضافة وصف', - warningTips: { - saveSchema: 'الرجاء إنهاء تحرير الحقل الحالي قبل حفظ المخطط', - }, - }, - }, - knowledgeRetrieval: { - queryVariable: 'متغير الاستعلام', - knowledge: 'المعرفة', - outputVars: { - output: 'استرجاع البيانات المقسمة', - content: 'المحتوى المقسم', - title: 'العنوان المقسم', - icon: 'أيقونة مقسمة', - url: 'عنوان URL المقسم', - metadata: 'بيانات وصفية أخرى', - files: 'الملفات المسترجعة', - }, - metadata: { - title: 'تصفية البيانات الوصفية', - tip: 'تصفية البيانات الوصفية هي عملية استخدام سمات البيانات الوصفية (مثل العلامات، الفئات، أو أذونات الوصول) لتحسين والتحكم في استرجاع المعلومات ذات الصلة داخل النظام.', - options: { - disabled: { - title: 'معطل', - subTitle: 'عدم تمكين تصفية البيانات الوصفية', - }, - automatic: { - title: 'تلقائي', - subTitle: 'إنشاء شروط تصفية البيانات الوصفية تلقائيًا بناءً على استعلام المستخدم', - desc: 'إنشاء شروط تصفية البيانات الوصفية تلقائيًا بناءً على متغير الاستعلام', - }, - manual: { - title: 'يدوي', - subTitle: 'إضافة شروط تصفية البيانات الوصفية يدويًا', - }, - }, - panel: { - title: 'شروط تصفية البيانات الوصفية', - conditions: 'الشروط', - add: 'إضافة شرط', - search: 'بحث في البيانات الوصفية', - placeholder: 'أدخل قيمة', - datePlaceholder: 'اختر وقتًا...', - select: 'حدد متغيرًا...', - }, - }, - queryText: 'نص الاستعلام', - queryAttachment: 'استعلام الصور', - }, - http: { - inputVars: 'متغيرات الإدخال', - api: 'API', - apiPlaceholder: 'أدخل URL، واكتب \'/\' لإدراج متغير', - extractListPlaceholder: 'أدخل فهرس عنصر القائمة، واكتب \'/\' لإدراج متغير', - notStartWithHttp: 'يجب أن يبدأ API بـ http:// أو https://', - key: 'المفتاح', - type: 'النوع', - value: 'القيمة', - bulkEdit: 'تحرير مجمع', - keyValueEdit: 'تحرير المفتاح والقيمة', - headers: 'الرؤوس', - params: 'المعلمات', - body: 'الجسم', - binaryFileVariable: 'متغير ملف ثنائي', - outputVars: { - body: 'محتوى الاستجابة', - statusCode: 'رمز حالة الاستجابة', - headers: 'قائمة رؤوس الاستجابة JSON', - files: 'قائمة الملفات', - }, - authorization: { - 'authorization': 'تخويل', - 'authorizationType': 'نوع التخويل', - 'no-auth': 'لا شيء', - 'api-key': 'مفتاح API', - 'auth-type': 'نوع المصادقة', - 'basic': 'أساسي', - 'bearer': 'Bearer', - 'custom': 'مخصص', - 'api-key-title': 'مفتاح API', - 'header': 'Header', - }, - insertVarPlaceholder: 'اكتب \'/\' لإدراج متغير', - timeout: { - title: 'المهلة', - connectLabel: 'مهلة الاتصال', - connectPlaceholder: 'أدخل مهلة الاتصال بالثواني', - readLabel: 'مهلة القراءة', - readPlaceholder: 'أدخل مهلة القراءة بالثواني', - writeLabel: 'مهلة الكتابة', - writePlaceholder: 'أدخل مهلة الكتابة بالثواني', - }, - curl: { - title: 'استيراد من cURL', - placeholder: 'لصق سلسلة cURL هنا', - }, - verifySSL: { - title: 'التحقق من شهادة SSL', - warningTooltip: 'لا يوصى بتعطيل التحقق من SSL لبيئات الإنتاج. يجب استخدامه فقط في التطوير أو الاختبار، حيث إنه يجعل الاتصال عرضة لتهديدات الأمان مثل هجمات الوسيط.', - }, - }, - code: { - inputVars: 'متغيرات الإدخال', - outputVars: 'متغيرات الإخراج', - advancedDependencies: 'التبعيات المتقدمة', - advancedDependenciesTip: 'أضف بعض التبعيات المحملة مسبقًا التي تستغرق وقتًا أطول للاستهلاك أو ليست افتراضية مضمنة هنا', - searchDependencies: 'بحث في التبعيات', - syncFunctionSignature: 'مزامنة توقيع الوظيفة للكود', - }, - templateTransform: { - inputVars: 'متغيرات الإدخال', - code: 'الكود', - codeSupportTip: 'يدعم Jinja2 فقط', - outputVars: { - output: 'المحتوى المحول', - }, - }, - ifElse: { - if: 'If', - else: 'Else', - elseDescription: 'يستخدم لتحديد المنطق الذي ينبغي تنفيذه عندما لا يتم استيفاء شرط if.', - and: 'و', - or: 'أو', - operator: 'المشغل', - notSetVariable: 'الرجاء تعيين المتغير أولاً', - comparisonOperator: { - 'contains': 'يحتوي على', - 'not contains': 'لا يحتوي على', - 'start with': 'يبدأ بـ', - 'end with': 'ينتهي بـ', - 'is': 'هو', - 'is not': 'ليس', - 'empty': 'فارغ', - 'not empty': 'ليس فارغًا', - 'null': 'null', - 'not null': 'ليس null', - 'in': 'في', - 'not in': 'ليس في', - 'all of': 'كل من', - 'exists': 'موجود', - 'not exists': 'غير موجود', - 'before': 'قبل', - 'after': 'بعد', - }, - optionName: { - image: 'صورة', - doc: 'مستند', - audio: 'صوت', - video: 'فيديو', - localUpload: 'تحميل محلي', - url: 'URL', - }, - enterValue: 'أدخل قيمة', - addCondition: 'إضافة شرط', - conditionNotSetup: 'لم يتم إعداد الشرط', - selectVariable: 'حدد متغيرًا...', - addSubVariable: 'متغير فرعي', - select: 'تحديد', - }, - variableAssigner: { - title: 'تعيين المتغيرات', - outputType: 'نوع الإخراج', - varNotSet: 'المتغير غير معين', - noVarTip: 'أضف المتغيرات التي سيتم تعيينها', - type: { - string: 'سلسلة', - number: 'رقم', - object: 'كائن', - array: 'مصفوفة', - }, - aggregationGroup: 'مجموعة التجميع', - aggregationGroupTip: 'يسمح تمكين هذه الميزة لمجمع المتغيرات بتجميع مجموعات متعددة من المتغيرات.', - addGroup: 'إضافة مجموعة', - outputVars: { - varDescribe: 'إخراج {{groupName}}', - }, - setAssignVariable: 'تعيين متغير التعيين', - }, - assigner: { - 'assignedVariable': 'المتغير المعين', - 'varNotSet': 'المتغير غير معين', - 'variables': 'المتغيرات', - 'noVarTip': 'انقر على زر "+" لإضافة متغيرات', - 'writeMode': 'وضع الكتابة', - 'writeModeTip': 'وضع الإلحاق: متاح لمتغيرات المصفوفة فقط.', - 'over-write': 'الكتابة الفوقية', - 'append': 'إلحاق', - 'plus': 'إضافة', - 'clear': 'مسح', - 'setVariable': 'تعيين المتغير', - 'selectAssignedVariable': 'حدد المتغير المعين...', - 'setParameter': 'تعيين المعلمة...', - 'operations': { - 'title': 'عملية', - 'over-write': 'الكتابة الفوقية', - 'overwrite': 'الكتابة الفوقية', - 'set': 'تعيين', - 'clear': 'مسح', - 'extend': 'تمديد', - 'append': 'إلحاق', - 'remove-first': 'إزالة الأول', - 'remove-last': 'إزالة الأخير', - '+=': '+=', - '-=': '-=', - '*=': '*=', - '/=': '/=', - }, - 'variable': 'متغير', - 'noAssignedVars': 'لا توجد متغيرات معينة متاحة', - 'assignedVarsDescription': 'يجب أن تكون المتغيرات المعينة متغيرات قابلة للكتابة، مثل متغيرات المحادثة.', - }, - tool: { - authorize: 'تخويل', - inputVars: 'متغيرات الإدخال', - settings: 'الإعدادات', - insertPlaceholder1: 'اكتب أو اضغط', - insertPlaceholder2: 'لإدراج متغير', - outputVars: { - text: 'محتوى تم إنشاؤه بواسطة الأداة', - files: { - title: 'ملفات تم إنشاؤها بواسطة الأداة', - type: 'نوع الدعم. الآن يدعم الصورة فقط', - transfer_method: 'طريقة النقل. القيمة هي remote_url أو local_file', - url: 'رابط الصورة', - upload_file_id: 'معرف ملف التحميل', - }, - json: 'json تم إنشاؤه بواسطة الأداة', - }, - }, - triggerPlugin: { - authorized: 'مخول', - notConfigured: 'لم يتم التكوين', - notAuthorized: 'غير مخول', - selectSubscription: 'تصديق الاشتراك', - availableSubscriptions: 'الاشتراكات المتاحة', - addSubscription: 'إضافة اشتراك جديد', - removeSubscription: 'إزالة الاشتراك', - subscriptionRemoved: 'تمت إزالة الاشتراك بنجاح', - error: 'خطأ', - configuration: 'التكوين', - remove: 'إزالة', - or: 'أو', - useOAuth: 'استخدام OAuth', - useApiKey: 'استخدام مفتاح API', - authenticationFailed: 'فشلت المصادقة', - authenticationSuccess: 'نجحت المصادقة', - oauthConfigFailed: 'فشل تكوين OAuth', - configureOAuthClient: 'تكوين عميل OAuth', - oauthClientDescription: 'تكوين بيانات اعتماد عميل OAuth لتمكين المصادقة', - oauthClientSaved: 'تم حفظ تكوين عميل OAuth بنجاح', - configureApiKey: 'تكوين مفتاح API', - apiKeyDescription: 'تكوين بيانات اعتماد مفتاح API للمصادقة', - apiKeyConfigured: 'تم تكوين مفتاح API بنجاح', - configurationFailed: 'فشل التكوين', - failedToStart: 'فشل بدء تدفق المصادقة', - credentialsVerified: 'تم التحقق من بيانات الاعتماد بنجاح', - credentialVerificationFailed: 'فشل التحقق من بيانات الاعتماد', - verifyAndContinue: 'تحقق ومتابعة', - configureParameters: 'تكوين المعلمات', - parametersDescription: 'تكوين معلمات المشغل والخصائص', - configurationComplete: 'اكتمل التكوين', - configurationCompleteDescription: 'تم تكوين المشغل الخاص بك بنجاح', - configurationCompleteMessage: 'اكتمل تكوين المشغل الخاص بك الآن وهو جاهز للاستخدام.', - parameters: 'المعلمات', - properties: 'الخصائص', - propertiesDescription: 'خصائص تكوين إضافية لهذا المشغل', - noConfigurationRequired: 'لا يلزم تكوين إضافي لهذا المشغل.', - subscriptionName: 'اسم الاشتراك', - subscriptionNameDescription: 'أدخل اسمًا فريدًا لاشتراك المشغل هذا', - subscriptionNamePlaceholder: 'أدخل اسم الاشتراك...', - subscriptionNameRequired: 'اسم الاشتراك مطلوب', - subscriptionRequired: 'الاشتراك مطلوب', - }, - questionClassifiers: { - model: 'النموذج', - inputVars: 'متغيرات الإدخال', - outputVars: { - className: 'اسم الفئة', - usage: 'معلومات استخدام النموذج', - }, - class: 'فئة', - classNamePlaceholder: 'اكتب اسم الفئة الخاصة بك', - advancedSetting: 'إعدادات متقدمة', - topicName: 'اسم الموضوع', - topicPlaceholder: 'اكتب اسم الموضوع الخاص بك', - addClass: 'إضافة فئة', - instruction: 'تعليمات', - instructionTip: 'أدخل تعليمات إضافية لمساعدة مصنف الأسئلة على فهم كيفية تصنيف الأسئلة بشكل أفضل.', - instructionPlaceholder: 'اكتب تعليماتك', - }, - parameterExtractor: { - inputVar: 'متغير الإدخال', - outputVars: { - isSuccess: 'هو نجاح. عند النجاح تكون القيمة 1، عند الفشل تكون القيمة 0.', - errorReason: 'سبب الخطأ', - usage: 'معلومات استخدام النموذج', - }, - extractParameters: 'استخراج المعلمات', - importFromTool: 'استيراد من الأدوات', - addExtractParameter: 'إضافة معلمة استخراج', - addExtractParameterContent: { - name: 'الاسم', - namePlaceholder: 'اسم معلمة الاستخراج', - type: 'النوع', - typePlaceholder: 'نوع معلمة الاستخراج', - description: 'الوصف', - descriptionPlaceholder: 'وصف معلمة الاستخراج', - required: 'مطلوب', - requiredContent: 'مطلوب يستخدم فقط كمرجع لاستدلال النموذج، وليس للتحقق الإلزامي من إخراج المعلمة.', - }, - extractParametersNotSet: 'لم يتم إعداد استخراج المعلمات', - instruction: 'تعليمات', - instructionTip: 'أدخل تعليمات إضافية لمساعدة مستخرج المعلمات على فهم كيفية استخراج المعلمات.', - advancedSetting: 'إعدادات متقدمة', - reasoningMode: 'وضع التفكير', - reasoningModeTip: 'يمكنك اختيار وضع التفكير المناسب بناءً على قدرة النموذج على الاستجابة للتعليمات لاستدعاء الوظيفة أو المطالبات.', - }, - iteration: { - deleteTitle: 'حذف عقدة التكرار؟', - deleteDesc: 'سيؤدي حذف عقدة التكرار إلى حذف جميع العقد الفرعية', - input: 'إدخال', - output: 'متغيرات الإخراج', - iteration_one: '{{count}} تكرار', - iteration_other: '{{count}} تكرارات', - currentIteration: 'التكرار الحالي', - comma: '، ', - error_one: '{{count}} خطأ', - error_other: '{{count}} أخطاء', - parallelMode: 'الوضع المتوازي', - parallelModeUpper: 'الوضع المتوازي', - parallelModeEnableTitle: 'تم تمكين الوضع المتوازي', - parallelModeEnableDesc: 'في الوضع المتوازي، تدعم المهام داخل التكرارات التنفيذ المتوازي. يمكنك تكوين هذا في لوحة الخصائص على اليمين.', - parallelPanelDesc: 'في الوضع المتوازي، تدعم المهام في التكرار التنفيذ المتوازي.', - MaxParallelismTitle: 'الحد الأقصى للتوازي', - MaxParallelismDesc: 'يتم استخدام الحد الأقصى للتوازي للتحكم في عدد المهام التي يتم تنفيذها في وقت واحد في تكرار واحد.', - errorResponseMethod: 'طريقة استجابة الخطأ', - ErrorMethod: { - operationTerminated: 'تم الإنهاء', - continueOnError: 'متابعة عند الخطأ', - removeAbnormalOutput: 'إزالة الإخراج غير الطبيعي', - }, - answerNodeWarningDesc: 'تحذير الوضع المتوازي: قد تتسبب عقد الإجابة وتعيينات متغيرات المحادثة وعمليات القراءة/الكتابة الدائمة داخل التكرارات في حدوث استثناءات.', - flattenOutput: 'تسطيح الإخراج', - flattenOutputDesc: 'عند التمكين، إذا كانت جميع مخرجات التكرار مصفوفات، فسيتم تسطيحها في مصفوفة واحدة. عند التعطيل، ستحافظ المخرجات على هيكل مصفوفة متداخلة.', - }, - loop: { - deleteTitle: 'حذف عقدة الحلقة؟', - deleteDesc: 'سيؤدي حذف عقدة الحلقة إلى إزالة جميع العقد الفرعية', - input: 'إدخال', - output: 'متغير الإخراج', - loop_one: '{{count}} حلقة', - loop_other: '{{count}} حلقات', - currentLoop: 'الحلقة الحالية', - comma: '، ', - error_one: '{{count}} خطأ', - error_other: '{{count}} أخطاء', - breakCondition: 'شرط إنهاء الحلقة', - breakConditionTip: 'يمكن الإشارة فقط إلى المتغيرات داخل الحلقات ذات شروط الإنهاء ومتغيرات المحادثة.', - loopMaxCount: 'الحد الأقصى لعدد الحلقات', - loopMaxCountError: 'الرجاء إدخال حد أقصى صالح لعدد الحلقات، يتراوح بين 1 و {{maxCount}}', - errorResponseMethod: 'طريقة استجابة الخطأ', - ErrorMethod: { - operationTerminated: 'تم الإنهاء', - continueOnError: 'متابعة عند الخطأ', - removeAbnormalOutput: 'إزالة الإخراج غير الطبيعي', - }, - loopVariables: 'متغيرات الحلقة', - initialLoopVariables: 'متغيرات الحلقة الأولية', - finalLoopVariables: 'متغيرات الحلقة النهائية', - setLoopVariables: 'تعيين المتغيرات داخل نطاق الحلقة', - variableName: 'اسم المتغير', - inputMode: 'وضع الإدخال', - exitConditionTip: 'تحتاج عقدة الحلقة إلى شرط خروج واحد على الأقل', - loopNode: 'عقدة الحلقة', - currentLoopCount: 'عدد الحلقات الحالي: {{count}}', - totalLoopCount: 'إجمالي عدد الحلقات: {{count}}', - }, - note: { - addNote: 'إضافة ملاحظة', - editor: { - placeholder: 'اكتب ملاحظتك...', - small: 'صغير', - medium: 'متوسط', - large: 'كبير', - bold: 'غامق', - italic: 'مائل', - strikethrough: 'يتوسطه خط', - link: 'رابط', - openLink: 'فتح', - unlink: 'إلغاء الرابط', - enterUrl: 'أدخل URL...', - invalidUrl: 'URL غير صالح', - bulletList: 'قائمة نقطية', - showAuthor: 'عرض المؤلف', - }, - }, - docExtractor: { - inputVar: 'متغير الإدخال', - outputVars: { - text: 'نص مستخرج', - }, - supportFileTypes: 'أنواع الملفات المدعومة: {{types}}.', - learnMore: 'تعرف على المزيد', - }, - listFilter: { - inputVar: 'متغير الإدخال', - filterCondition: 'شرط التصفية', - filterConditionKey: 'مفتاح شرط التصفية', - extractsCondition: 'استخراج العنصر N', - filterConditionComparisonOperator: 'مشغل مقارنة شرط التصفية', - filterConditionComparisonValue: 'قيمة شرط التصفية', - selectVariableKeyPlaceholder: 'حدد مفتاح المتغير الفرعي', - limit: 'أعلى N', - orderBy: 'ترتيب حسب', - asc: 'ASC', - desc: 'DESC', - outputVars: { - result: 'نتيجة التصفية', - first_record: 'السجل الأول', - last_record: 'السجل الأخير', - }, - }, - agent: { - strategy: { - label: 'استراتيجية الوكيل', - tooltip: 'تحدد استراتيجيات الوكيل المختلفة كيفية تخطيط النظام وتنفيذ استدعاءات الأدوات متعددة الخطوات', - shortLabel: 'استراتيجية', - configureTip: 'يرجى تكوين استراتيجية الوكيل.', - configureTipDesc: 'بعد تكوين استراتيجية الوكيل، ستقوم هذه العقدة تلقائيًا بتحميل التكوينات المتبقية. ستؤثر الاستراتيجية على آلية التفكير في الأدوات متعددة الخطوات. ', - selectTip: 'حدد استراتيجية الوكيل', - searchPlaceholder: 'بحث في استراتيجية الوكيل', - }, - learnMore: 'تعرف على المزيد', - pluginNotInstalled: 'هذا الملحق غير مثبت', - pluginNotInstalledDesc: 'تم تثبيت هذا الملحق من GitHub. يرجى الانتقال إلى الملحقات لإعادة التثبيت', - linkToPlugin: 'رابط للإضافات', - pluginInstaller: { - install: 'تثبيت', - installing: 'جاري التثبيت', - }, - modelNotInMarketplace: { - title: 'النموذج غير مثبت', - desc: 'تم تثبيت هذا النموذج من مستودع محلي أو GitHub. الرجاء استخدامه بعد التثبيت.', - manageInPlugins: 'إدارة في الإضافات', - }, - modelNotSupport: { - title: 'نموذج غير مدعوم', - desc: 'لا يوفر إصدار الملحق المثبت هذا النموذج.', - descForVersionSwitch: 'لا يوفر إصدار الملحق المثبت هذا النموذج. انقر لتبديل الإصدار.', - }, - configureModel: 'تكوين النموذج', - notAuthorized: 'غير مخول', - model: 'النموذج', - toolbox: 'صندوق الأدوات', - strategyNotSet: 'لم يتم تعيين استراتيجية الوكيل', - tools: 'الأدوات', - maxIterations: 'الحد الأقصى للتكرارات', - modelNotSelected: 'النموذج غير محدد', - modelNotInstallTooltip: 'هذا النموذج غير مثبت', - toolNotInstallTooltip: '{{tool}} غير مثبت', - toolNotAuthorizedTooltip: '{{tool}} غير مخول', - strategyNotInstallTooltip: '{{strategy}} غير مثبتة', - unsupportedStrategy: 'استراتيجية غير مدعومة', - pluginNotFoundDesc: 'تم تثبيت هذا الملحق من GitHub. يرجى الانتقال إلى الملحقات لإعادة التثبيت', - strategyNotFoundDesc: 'لا يوفر إصدار الملحق المثبت هذه الاستراتيجية.', - strategyNotFoundDescAndSwitchVersion: 'لا يوفر إصدار الملحق المثبت هذه الاستراتيجية. انقر لتبديل الإصدار.', - modelSelectorTooltips: { - deprecated: 'تم إهمال هذا النموذج', - }, - outputVars: { - text: 'محتوى تم إنشاؤه بواسطة الوكيل', - usage: 'معلومات استخدام النموذج', - files: { - title: 'ملفات تم إنشاؤها بواسطة الوكيل', - type: 'نوع الدعم. الآن يدعم الصورة فقط', - transfer_method: 'طريقة النقل. القيمة هي remote_url أو local_file', - url: 'رابط الصورة', - upload_file_id: 'معرف ملف التحميل', - }, - json: 'json تم إنشاؤه بواسطة الوكيل', - }, - checkList: { - strategyNotSelected: 'الاستراتيجية غير محددة', - }, - installPlugin: { - title: 'تثبيت الإضافة', - desc: 'على وشك تثبيت الإضافة التالية', - changelog: 'سجل التغييرات', - install: 'تثبيت', - cancel: 'إلغاء', - }, - clickToViewParameterSchema: 'انقر لعرض مخطط المعلمة', - parameterSchema: 'مخطط المعلمة', - }, - dataSource: { - supportedFileFormats: 'تنسيقات الملفات المدعومة', - supportedFileFormatsPlaceholder: 'امتداد الملف، مثل doc', - add: 'إضافة مصدر بيانات', - }, - knowledgeBase: { - chunkStructure: 'هيكل القطعة', - chooseChunkStructure: 'اختر هيكل القطعة', - chunkStructureTip: { - title: 'الرجاء اختيار هيكل القطعة', - message: 'تدعم قاعدة المعرفة Dify ثلاثة هياكل للقطع: عام، وأصل-طفل، وسؤال وجواب. يمكن أن يكون لكل قاعدة معرفة هيكل واحد فقط. يجب أن يتوافق الإخراج من العقدة السابقة مع هيكل القطعة المحدد. لاحظ أن اختيار هيكل القطع يؤثر على طرق الفهرسة المتاحة.', - learnMore: 'تعرف على المزيد', - }, - changeChunkStructure: 'تغيير هيكل القطعة', - chunksInput: 'القطع', - chunksInputTip: 'متغير الإدخال لعقدة قاعدة المعرفة هو Pieces. نوع المتغير هو كائن بمخطط JSON محدد يجب أن يكون متسقًا مع هيكل القطعة المحدد.', - aboutRetrieval: 'حول طريقة الاسترجاع.', - chunkIsRequired: 'هيكل القطعة مطلوب', - indexMethodIsRequired: 'طريقة الفهرسة مطلوبة', - chunksVariableIsRequired: 'متغير القطع مطلوب', - embeddingModelIsRequired: 'نموذج التضمين مطلوب', - embeddingModelIsInvalid: 'نموذج التضمين غير صالح', - retrievalSettingIsRequired: 'إعداد الاسترجاع مطلوب', - rerankingModelIsRequired: 'نموذج إعادة الترتيب مطلوب', - rerankingModelIsInvalid: 'نموذج إعادة الترتيب غير صالح', - }, - triggerSchedule: { - title: 'الجدول الزمني', - nodeTitle: 'جدولة المشغل', - notConfigured: 'لم يتم التكوين', - useCronExpression: 'استخدم تعبير cron', - useVisualPicker: 'استخدم منتقي مرئي', - frequency: { - label: 'التكرار', - hourly: 'كل ساعة', - daily: 'يوميًا', - weekly: 'أسبوعيًا', - monthly: 'شهريًا', - }, - selectFrequency: 'حدد التكرار', - frequencyLabel: 'التكرار', - nextExecution: 'التنفيذ التالي', - weekdays: 'أيام الأسبوع', - time: 'الوقت', - cronExpression: 'تعبير Cron', - nextExecutionTime: 'وقت التنفيذ التالي', - nextExecutionTimes: 'أوقات التنفيذ الـ 5 التالية', - startTime: 'وقت البدء', - executeNow: 'التنفيذ الآن', - selectDateTime: 'حدد التاريخ والوقت', - hours: 'الساعات', - minutes: 'الدقائق', - onMinute: 'في الدقيقة', - days: 'الأيام', - lastDay: 'اليوم الأخير', - lastDayTooltip: 'ليست كل الأشهر 31 يومًا. استخدم خيار "اليوم الأخير" لتحديد اليوم الأخير من كل شهر.', - mode: 'الوضع', - timezone: 'المنطقة الزمنية', - visualConfig: 'التكوين المرئي', - monthlyDay: 'يوم شهري', - executionTime: 'وقت التنفيذ', - invalidTimezone: 'منطقة زمنية غير صالحة', - invalidCronExpression: 'تعبير cron غير صالح', - noValidExecutionTime: 'لا يمكن حساب وقت تنفيذ صالح', - executionTimeCalculationError: 'فشل حساب أوقات التنفيذ', - invalidFrequency: 'تكرار غير صالح', - invalidStartTime: 'وقت البدء غير صالح', - startTimeMustBeFuture: 'يجب أن يكون وقت البدء في المستقبل', - invalidTimeFormat: 'تنسيق الوقت غير صالح (المتوقع HH:MM AM/PM)', - invalidWeekday: 'يوم أسبوع غير صالح: {{weekday}}', - invalidMonthlyDay: 'يجب أن يكون اليوم الشهري بين 1-31 أو "last"', - invalidOnMinute: 'يجب أن تكون الدقيقة بين 0-59', - invalidExecutionTime: 'وقت التنفيذ غير صالح', - executionTimeMustBeFuture: 'يجب أن يكون وقت التنفيذ في المستقبل', - }, - triggerWebhook: { - title: 'مشغل Webhook', - nodeTitle: '🔗 مشغل Webhook', - configPlaceholder: 'سيتم تنفيذ تكوين مشغل webhook هنا', - webhookUrl: 'Webhook URL', - webhookUrlPlaceholder: 'انقر فوق إنشاء لإنشاء عنوان URL لـ webhook', - generate: 'توليد', - copy: 'نسخ', - test: 'اختبار', - urlGenerated: 'تم إنشاء عنوان URL لـ webhook بنجاح', - urlGenerationFailed: 'فشل إنشاء عنوان URL لـ webhook', - urlCopied: 'تم نسخ عنوان URL إلى الحافظة', - method: 'الطريقة', - contentType: 'نوع المحتوى', - queryParameters: 'معلمات الاستعلام', - headerParameters: 'معلمات الرأس', - requestBodyParameters: 'معلمات جسم الطلب', - parameterName: 'اسم المتغير', - varName: 'اسم المتغير', - varType: 'النوع', - varNamePlaceholder: 'أدخل اسم المتغير...', - required: 'مطلوب', - addParameter: 'إضافة', - addHeader: 'إضافة', - noParameters: 'لم يتم تكوين أي معلمات', - noQueryParameters: 'لم يتم تكوين أي معلمات استعلام', - noHeaders: 'لم يتم تكوين أي رؤوس', - noBodyParameters: 'لم يتم تكوين أي معلمات جسم', - debugUrlTitle: 'للتشغيل الاختياري، استخدم دائمًا هذا العنوان', - debugUrlCopy: 'انقر للنسخ', - debugUrlCopied: 'تم النسخ!', - debugUrlPrivateAddressWarning: 'يبدو أن عنوان URL هذا عنوان داخلي، مما قد يتسبب في فشل طلبات webhook. يمكنك تغيير TRIGGER_URL إلى عنوان عام.', - errorHandling: 'معالجة الأخطاء', - errorStrategy: 'معالجة الأخطاء', - responseConfiguration: 'استجابة', - asyncMode: 'وضع غير متزامن', - statusCode: 'رمز الحالة', - responseBody: 'جسم الاستجابة', - responseBodyPlaceholder: 'اكتب جسم الاستجابة هنا', - headers: 'الرؤوس', - validation: { - webhookUrlRequired: 'عنوان URL لـ Webhook مطلوب', - invalidParameterType: 'نوع المعلمة غير صالح "{{type}}" للمعلمة "{{name}}"', - }, - }, - }, - triggerStatus: { - enabled: 'مشغل', - disabled: 'مشغل • معطل', - }, - entryNodeStatus: { - enabled: 'بدء', - disabled: 'بدء • معطل', - }, - tracing: { - stopBy: 'توقف بواسطة {{user}}', - }, - versionHistory: { - title: 'الإصدارات', - currentDraft: 'المسودة الحالية', - latest: 'الأحدث', - filter: { - all: 'الكل', - onlyYours: 'الخاص بك فقط', - onlyShowNamedVersions: 'إظهار الإصدارات المسماة فقط', - reset: 'إعادة تعيين التصفية', - empty: 'لم يتم العثور على سجل إصدار مطابق', - }, - defaultName: 'إصدار بدون عنوان', - nameThisVersion: 'تسمية هذا الإصدار', - editVersionInfo: 'تعديل معلومات الإصدار', - copyId: 'نسخ المعرف', - editField: { - title: 'العنوان', - releaseNotes: 'ملاحظات الإصدار', - titleLengthLimit: 'لا يمكن أن يتجاوز العنوان {{limit}} حرفًا', - releaseNotesLengthLimit: 'لا يمكن أن تتجاوز ملاحظات الإصدار {{limit}} حرفًا', - }, - releaseNotesPlaceholder: 'صف ما تغير', - restorationTip: 'بعد استعادة الإصدار، سيتم استبدال المسودة الحالية.', - deletionTip: 'الحذف لا رجعة فيه، يرجى التأكد.', - action: { - restoreSuccess: 'تم استعادة الإصدار', - restoreFailure: 'فشل استعادة الإصدار', - deleteSuccess: 'تم حذف الإصدار', - deleteFailure: 'فشل حذف الإصدار', - updateSuccess: 'تم تحديث الإصدار', - updateFailure: 'فشل تحديث الإصدار', - copyIdSuccess: 'تم نسخ المعرف إلى الحافظة', - }, - }, - debug: { - settingsTab: 'الإعدادات', - lastRunTab: 'آخر تشغيل', - relationsTab: 'العلاقات', - copyLastRun: 'نسخ آخر تشغيل', - noLastRunFound: 'لم يتم العثور على تشغيل سابق', - noMatchingInputsFound: 'لم يتم العثور على مدخلات مطابقة من آخر تشغيل', - lastRunInputsCopied: 'تم نسخ {{count}} إدخال (إدخالات) من آخر تشغيل', - copyLastRunError: 'فشل نسخ مدخلات آخر تشغيل', - noData: { - description: 'سيتم عرض نتائج آخر تشغيل هنا', - runThisNode: 'تشغيل هذه العقدة', - }, - variableInspect: { - title: 'فحص المتغير', - emptyTip: 'بعد تخطي عقدة على اللوحة أو تشغيل عقدة خطوة بخطوة، يمكنك عرض القيمة الحالية لمتغير العقدة في فحص المتغير', - emptyLink: 'تعرف على المزيد', - clearAll: 'إعادة تعيين الكل', - clearNode: 'مسح المتغير المخبأ', - resetConversationVar: 'إعادة تعيين متغير المحادثة إلى القيمة الافتراضية', - view: 'عرض السجل', - edited: 'تم التعديل', - reset: 'إعادة تعيين إلى قيمة آخر تشغيل', - listening: { - title: 'الاستماع للأحداث من المشغلات...', - tip: 'يمكنك الآن محاكاة مشغلات الحدث عن طريق إرسال طلبات اختبار إلى نقطة نهاية HTTP {{nodeName}} أو استخدامها كعنوان URL لرد الاتصال لتصحيح أخطاء الحدث المباشر. يمكن عرض جميع المخرجات مباشرة في فحص المتغير.', - tipPlugin: 'الآن يمكنك إنشاء أحداث في {{- pluginName}}، واسترجاع المخرجات من هذه الأحداث في فحص المتغير.', - tipSchedule: 'الاستماع للأحداث من مشغلات الجدول.\nالتشغيل المجدول التالي: {{nextTriggerTime}}', - tipFallback: 'انتظار أحداث المشغل الواردة. ستظهر المخرجات هنا.', - defaultNodeName: 'هذا المشغل', - defaultPluginName: 'مشغل الإضافة هذا', - defaultScheduleTime: 'لم يتم التكوين', - selectedTriggers: 'المشغلات المحددة', - stopButton: 'توقف', - }, - trigger: { - normal: 'فحص المتغير', - running: 'التخزين المؤقت لحالة التشغيل', - stop: 'إيقاف التشغيل', - cached: 'عرض المتغيرات المخبأة', - clear: 'مسح', - }, - envNode: 'البيئة', - chatNode: 'المحادثة', - systemNode: 'النظام', - exportToolTip: 'تصدير متغير كملف', - largeData: 'بيانات كبيرة، معاينة للقراءة فقط. تصدير لعرض الكل.', - largeDataNoExport: 'بيانات كبيرة - معاينة جزئية فقط', - export: 'تصدير', - }, - lastOutput: 'آخر إخراج', - relations: { - dependencies: 'التبعيات', - dependents: 'المعتمدون', - dependenciesDescription: 'العقد التي تعتمد عليها هذه العقدة', - dependentsDescription: 'العقد التي تعتمد على هذه العقدة', - noDependencies: 'لا توجد تبعيات', - noDependents: 'لا يوجد معتمدون', - }, - }, - onboarding: { - title: 'حدد عقدة البداية للبدء', - description: 'لدى عقد البداية المختلفة قدرات مختلفة. لا تقلق، يمكنك دائمًا تغييرها لاحقًا.', - userInputFull: 'إدخال المستخدم (عقدة البداية الأصلية)', - userInputDescription: 'عقدة البداية التي تسمح بتعيين متغيرات إدخال المستخدم، مع إمكانيات تطبيق الويب، وواجهة برمجة تطبيقات الخدمة، وخادم MCP، وقدرات سير العمل كأداة.', - trigger: 'مشغل', - triggerDescription: 'يمكن أن تعمل المشغلات كعقدة بداية لسير العمل، مثل المهام المجدولة، أو خطافات الويب المخصصة، أو التكامل مع تطبيقات أخرى.', - back: 'رجوع', - learnMore: 'تعرف على المزيد', - aboutStartNode: 'حول عقدة البداية.', - escTip: { - press: 'اضغط', - key: 'esc', - toDismiss: 'للرفض', - }, - }, -} - -export default translation diff --git a/web/i18n/de-DE/app-annotation.json b/web/i18n/de-DE/app-annotation.json new file mode 100644 index 0000000000..3f11e1109f --- /dev/null +++ b/web/i18n/de-DE/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "Anmerkungen", + "name": "Antwort Anmerkung", + "editBy": "Antwort bearbeitet von {{author}}", + "noData": { + "title": "Keine Anmerkungen", + "description": "Sie können Anmerkungen während des App-Debuggings bearbeiten oder hier Anmerkungen in großen Mengen importieren für eine hochwertige Antwort." + }, + "table": { + "header": { + "question": "Frage", + "answer": "Antwort", + "createdAt": "erstellt am", + "hits": "Treffer", + "actions": "Aktionen", + "addAnnotation": "Anmerkung hinzufügen", + "bulkImport": "Massenimport", + "bulkExport": "Massenexport", + "clearAll": "Alle Anmerkungen löschen", + "clearAllConfirm": "Alle Anmerkungen löschen?" + } + }, + "editModal": { + "title": "Antwort Anmerkung bearbeiten", + "queryName": "Benutzeranfrage", + "answerName": "Geschichtenerzähler Bot", + "yourAnswer": "Ihre Antwort", + "answerPlaceholder": "Geben Sie hier Ihre Antwort ein", + "yourQuery": "Ihre Anfrage", + "queryPlaceholder": "Geben Sie hier Ihre Anfrage ein", + "removeThisCache": "Diese Anmerkung entfernen", + "createdAt": "Erstellt am" + }, + "addModal": { + "title": "Antwort Anmerkung hinzufügen", + "queryName": "Frage", + "answerName": "Antwort", + "answerPlaceholder": "Antwort hier eingeben", + "queryPlaceholder": "Anfrage hier eingeben", + "createNext": "Eine weitere annotierte Antwort hinzufügen" + }, + "batchModal": { + "title": "Massenimport", + "csvUploadTitle": "Ziehen Sie Ihre CSV-Datei hierher oder ", + "browse": "durchsuchen", + "tip": "Die CSV-Datei muss der folgenden Struktur entsprechen:", + "question": "Frage", + "answer": "Antwort", + "contentTitle": "Inhaltsabschnitt", + "content": "Inhalt", + "template": "Laden Sie die Vorlage hier herunter", + "cancel": "Abbrechen", + "run": "Batch ausführen", + "runError": "Batch-Ausführung fehlgeschlagen", + "processing": "In Batch-Verarbeitung", + "completed": "Import abgeschlossen", + "error": "Importfehler", + "ok": "OK" + }, + "errorMessage": { + "answerRequired": "Antwort erforderlich", + "queryRequired": "Frage erforderlich" + }, + "viewModal": { + "annotatedResponse": "Antwort Anmerkung", + "hitHistory": "Trefferhistorie", + "hit": "Treffer", + "hits": "Treffer", + "noHitHistory": "Keine Trefferhistorie" + }, + "hitHistoryTable": { + "query": "Anfrage", + "match": "Übereinstimmung", + "response": "Antwort", + "source": "Quelle", + "score": "Punktzahl", + "time": "Zeit" + }, + "initSetup": { + "title": "Initialeinrichtung Antwort Anmerkung", + "configTitle": "Einrichtung Antwort Anmerkung", + "confirmBtn": "Speichern & Aktivieren", + "configConfirmBtn": "Speichern" + }, + "embeddingModelSwitchTip": "Anmerkungstext-Vektorisierungsmodell, das Wechseln von Modellen wird neu eingebettet, was zusätzliche Kosten verursacht.", + "list": { + "delete": { + "title": "Bist du sicher, dass du löschen möchtest?" + } + }, + "batchAction": { + "cancel": "Abbrechen", + "selected": "Ausgewählt", + "delete": "Löschen" + } +} diff --git a/web/i18n/de-DE/app-annotation.ts b/web/i18n/de-DE/app-annotation.ts deleted file mode 100644 index be6f1948a2..0000000000 --- a/web/i18n/de-DE/app-annotation.ts +++ /dev/null @@ -1,98 +0,0 @@ -const translation = { - title: 'Anmerkungen', - name: 'Antwort Anmerkung', - editBy: 'Antwort bearbeitet von {{author}}', - noData: { - title: 'Keine Anmerkungen', - description: 'Sie können Anmerkungen während des App-Debuggings bearbeiten oder hier Anmerkungen in großen Mengen importieren für eine hochwertige Antwort.', - }, - table: { - header: { - question: 'Frage', - answer: 'Antwort', - createdAt: 'erstellt am', - hits: 'Treffer', - actions: 'Aktionen', - addAnnotation: 'Anmerkung hinzufügen', - bulkImport: 'Massenimport', - bulkExport: 'Massenexport', - clearAll: 'Alle Anmerkungen löschen', - clearAllConfirm: 'Alle Anmerkungen löschen?', - }, - }, - editModal: { - title: 'Antwort Anmerkung bearbeiten', - queryName: 'Benutzeranfrage', - answerName: 'Geschichtenerzähler Bot', - yourAnswer: 'Ihre Antwort', - answerPlaceholder: 'Geben Sie hier Ihre Antwort ein', - yourQuery: 'Ihre Anfrage', - queryPlaceholder: 'Geben Sie hier Ihre Anfrage ein', - removeThisCache: 'Diese Anmerkung entfernen', - createdAt: 'Erstellt am', - }, - addModal: { - title: 'Antwort Anmerkung hinzufügen', - queryName: 'Frage', - answerName: 'Antwort', - answerPlaceholder: 'Antwort hier eingeben', - queryPlaceholder: 'Anfrage hier eingeben', - createNext: 'Eine weitere annotierte Antwort hinzufügen', - }, - batchModal: { - title: 'Massenimport', - csvUploadTitle: 'Ziehen Sie Ihre CSV-Datei hierher oder ', - browse: 'durchsuchen', - tip: 'Die CSV-Datei muss der folgenden Struktur entsprechen:', - question: 'Frage', - answer: 'Antwort', - contentTitle: 'Inhaltsabschnitt', - content: 'Inhalt', - template: 'Laden Sie die Vorlage hier herunter', - cancel: 'Abbrechen', - run: 'Batch ausführen', - runError: 'Batch-Ausführung fehlgeschlagen', - processing: 'In Batch-Verarbeitung', - completed: 'Import abgeschlossen', - error: 'Importfehler', - ok: 'OK', - }, - errorMessage: { - answerRequired: 'Antwort erforderlich', - queryRequired: 'Frage erforderlich', - }, - viewModal: { - annotatedResponse: 'Antwort Anmerkung', - hitHistory: 'Trefferhistorie', - hit: 'Treffer', - hits: 'Treffer', - noHitHistory: 'Keine Trefferhistorie', - }, - hitHistoryTable: { - query: 'Anfrage', - match: 'Übereinstimmung', - response: 'Antwort', - source: 'Quelle', - score: 'Punktzahl', - time: 'Zeit', - }, - initSetup: { - title: 'Initialeinrichtung Antwort Anmerkung', - configTitle: 'Einrichtung Antwort Anmerkung', - confirmBtn: 'Speichern & Aktivieren', - configConfirmBtn: 'Speichern', - }, - embeddingModelSwitchTip: 'Anmerkungstext-Vektorisierungsmodell, das Wechseln von Modellen wird neu eingebettet, was zusätzliche Kosten verursacht.', - list: { - delete: { - title: 'Bist du sicher, dass du löschen möchtest?', - }, - }, - batchAction: { - cancel: 'Abbrechen', - selected: 'Ausgewählt', - delete: 'Löschen', - }, -} - -export default translation diff --git a/web/i18n/de-DE/app-api.json b/web/i18n/de-DE/app-api.json new file mode 100644 index 0000000000..acd0e94aa2 --- /dev/null +++ b/web/i18n/de-DE/app-api.json @@ -0,0 +1,83 @@ +{ + "apiServer": "API Server", + "apiKey": "API Schlüssel", + "status": "Status", + "disabled": "Deaktiviert", + "ok": "In Betrieb", + "copy": "Kopieren", + "copied": "Kopiert", + "play": "Abspielen", + "pause": "Pause", + "playing": "Wiedergabe", + "merMaid": { + "rerender": "Neu rendern" + }, + "never": "Nie", + "apiKeyModal": { + "apiSecretKey": "API Geheimschlüssel", + "apiSecretKeyTips": "Um Missbrauch der API zu verhindern, schützen Sie Ihren API Schlüssel. Vermeiden Sie es, ihn als Klartext im Frontend-Code zu verwenden. :)", + "createNewSecretKey": "Neuen Geheimschlüssel erstellen", + "secretKey": "Geheimschlüssel", + "created": "ERSTELLT", + "lastUsed": "ZULETZT VERWENDET", + "generateTips": "Bewahren Sie diesen Schlüssel an einem sicheren und zugänglichen Ort auf." + }, + "actionMsg": { + "deleteConfirmTitle": "Diesen Geheimschlüssel löschen?", + "deleteConfirmTips": "Diese Aktion kann nicht rückgängig gemacht werden.", + "ok": "OK" + }, + "completionMode": { + "title": "Completion App API", + "info": "Für die Erzeugung von hochwertigem Text, wie z.B. Artikel, Zusammenfassungen und Übersetzungen, verwenden Sie die Completion-Messages API mit Benutzereingaben. Die Texterzeugung basiert auf den Modellparametern und Vorlagen für Aufforderungen in Dify Prompt Engineering.", + "createCompletionApi": "Completion Nachricht erstellen", + "createCompletionApiTip": "Erstellen Sie eine Completion Nachricht, um den Frage-Antwort-Modus zu unterstützen.", + "inputsTips": "(Optional) Geben Sie Benutzereingabefelder als Schlüssel-Wert-Paare an, die Variablen in Prompt Eng. entsprechen. Schlüssel ist der Variablenname, Wert ist der Parameterwert. Wenn der Feldtyp Select ist, muss der übermittelte Wert eine der voreingestellten Optionen sein.", + "queryTips": "Textinhalt der Benutzereingabe.", + "blocking": "Blockierender Typ, wartet auf die Fertigstellung der Ausführung und gibt Ergebnisse zurück. (Anfragen können unterbrochen werden, wenn der Prozess lang ist)", + "streaming": "Streaming Rückgaben. Implementierung der Streaming-Rückgabe basierend auf SSE (Server-Sent Events).", + "messageFeedbackApi": "Nachrichtenfeedback (Like)", + "messageFeedbackApiTip": "Bewerten Sie empfangene Nachrichten im Namen der Endbenutzer mit Likes oder Dislikes. Diese Daten sind auf der Seite Logs & Annotations sichtbar und werden für zukünftige Modellanpassungen verwendet.", + "messageIDTip": "Nachrichten-ID", + "ratingTip": "like oder dislike, null ist rückgängig machen", + "parametersApi": "Anwendungsparameterinformationen abrufen", + "parametersApiTip": "Abrufen konfigurierter Eingabeparameter, einschließlich Variablennamen, Feldnamen, Typen und Standardwerten. Typischerweise verwendet, um diese Felder in einem Formular anzuzeigen oder Standardwerte nach dem Laden des Clients auszufüllen." + }, + "chatMode": { + "title": "Chat App API", + "info": "Für vielseitige Gesprächsanwendungen im Q&A-Format rufen Sie die chat-messages API auf, um einen Dialog zu initiieren. Führen Sie laufende Gespräche fort, indem Sie die zurückgegebene conversation_id übergeben. Antwortparameter und -vorlagen hängen von den Einstellungen in Dify Prompt Eng. ab.", + "createChatApi": "Chatnachricht erstellen", + "createChatApiTip": "Eine neue Konversationsnachricht erstellen oder einen bestehenden Dialog fortsetzen.", + "inputsTips": "(Optional) Geben Sie Benutzereingabefelder als Schlüssel-Wert-Paare an, die Variablen in Prompt Eng. entsprechen. Schlüssel ist der Variablenname, Wert ist der Parameterwert. Wenn der Feldtyp Select ist, muss der übermittelte Wert eine der voreingestellten Optionen sein.", + "queryTips": "Inhalt der Benutzereingabe/Frage", + "blocking": "Blockierender Typ, wartet auf die Fertigstellung der Ausführung und gibt Ergebnisse zurück. (Anfragen können unterbrochen werden, wenn der Prozess lang ist)", + "streaming": "Streaming Rückgaben. Implementierung der Streaming-Rückgabe basierend auf SSE (Server-Sent Events).", + "conversationIdTip": "(Optional) Konversations-ID: für erstmalige Konversation leer lassen; conversation_id aus dem Kontext übergeben, um den Dialog fortzusetzen.", + "messageFeedbackApi": "Nachrichtenfeedback des Endbenutzers, like", + "messageFeedbackApiTip": "Bewerten Sie empfangene Nachrichten im Namen der Endbenutzer mit Likes oder Dislikes. Diese Daten sind auf der Seite Logs & Annotations sichtbar und werden für zukünftige Modellanpassungen verwendet.", + "messageIDTip": "Nachrichten-ID", + "ratingTip": "like oder dislike, null ist rückgängig machen", + "chatMsgHistoryApi": "Chatverlaufsnachricht abrufen", + "chatMsgHistoryApiTip": "Die erste Seite gibt die neuesten `limit` Einträge in umgekehrter Reihenfolge zurück.", + "chatMsgHistoryConversationIdTip": "Konversations-ID", + "chatMsgHistoryFirstId": "ID des ersten Chat-Datensatzes auf der aktuellen Seite. Standardmäßig keiner.", + "chatMsgHistoryLimit": "Wie viele Chats in einer Anfrage zurückgegeben werden", + "conversationsListApi": "Konversationsliste abrufen", + "conversationsListApiTip": "Ruft die Sitzungsliste des aktuellen Benutzers ab. Standardmäßig werden die letzten 20 Sitzungen zurückgegeben.", + "conversationsListFirstIdTip": "Die ID des letzten Datensatzes auf der aktuellen Seite, standardmäßig keine.", + "conversationsListLimitTip": "Wie viele Chats in einer Anfrage zurückgegeben werden", + "conversationRenamingApi": "Konversation umbenennen", + "conversationRenamingApiTip": "Konversationen umbenennen; der Name wird in Mehrsitzungs-Client-Schnittstellen angezeigt.", + "conversationRenamingNameTip": "Neuer Name", + "parametersApi": "Anwendungsparameterinformationen abrufen", + "parametersApiTip": "Abrufen konfigurierter Eingabeparameter, einschließlich Variablennamen, Feldnamen, Typen und Standardwerten. Typischerweise verwendet, um diese Felder in einem Formular anzuzeigen oder Standardwerte nach dem Laden des Clients auszufüllen." + }, + "develop": { + "requestBody": "Anfragekörper", + "pathParams": "Pfadparameter", + "query": "Anfrage", + "toc": "Inhalt" + }, + "loading": "Laden", + "regenerate": "Erneuern" +} diff --git a/web/i18n/de-DE/app-api.ts b/web/i18n/de-DE/app-api.ts deleted file mode 100644 index d785e34fe9..0000000000 --- a/web/i18n/de-DE/app-api.ts +++ /dev/null @@ -1,85 +0,0 @@ -const translation = { - apiServer: 'API Server', - apiKey: 'API Schlüssel', - status: 'Status', - disabled: 'Deaktiviert', - ok: 'In Betrieb', - copy: 'Kopieren', - copied: 'Kopiert', - play: 'Abspielen', - pause: 'Pause', - playing: 'Wiedergabe', - merMaid: { - rerender: 'Neu rendern', - }, - never: 'Nie', - apiKeyModal: { - apiSecretKey: 'API Geheimschlüssel', - apiSecretKeyTips: 'Um Missbrauch der API zu verhindern, schützen Sie Ihren API Schlüssel. Vermeiden Sie es, ihn als Klartext im Frontend-Code zu verwenden. :)', - createNewSecretKey: 'Neuen Geheimschlüssel erstellen', - secretKey: 'Geheimschlüssel', - created: 'ERSTELLT', - lastUsed: 'ZULETZT VERWENDET', - generateTips: 'Bewahren Sie diesen Schlüssel an einem sicheren und zugänglichen Ort auf.', - }, - actionMsg: { - deleteConfirmTitle: 'Diesen Geheimschlüssel löschen?', - deleteConfirmTips: 'Diese Aktion kann nicht rückgängig gemacht werden.', - ok: 'OK', - }, - completionMode: { - title: 'Completion App API', - info: 'Für die Erzeugung von hochwertigem Text, wie z.B. Artikel, Zusammenfassungen und Übersetzungen, verwenden Sie die Completion-Messages API mit Benutzereingaben. Die Texterzeugung basiert auf den Modellparametern und Vorlagen für Aufforderungen in Dify Prompt Engineering.', - createCompletionApi: 'Completion Nachricht erstellen', - createCompletionApiTip: 'Erstellen Sie eine Completion Nachricht, um den Frage-Antwort-Modus zu unterstützen.', - inputsTips: '(Optional) Geben Sie Benutzereingabefelder als Schlüssel-Wert-Paare an, die Variablen in Prompt Eng. entsprechen. Schlüssel ist der Variablenname, Wert ist der Parameterwert. Wenn der Feldtyp Select ist, muss der übermittelte Wert eine der voreingestellten Optionen sein.', - queryTips: 'Textinhalt der Benutzereingabe.', - blocking: 'Blockierender Typ, wartet auf die Fertigstellung der Ausführung und gibt Ergebnisse zurück. (Anfragen können unterbrochen werden, wenn der Prozess lang ist)', - streaming: 'Streaming Rückgaben. Implementierung der Streaming-Rückgabe basierend auf SSE (Server-Sent Events).', - messageFeedbackApi: 'Nachrichtenfeedback (Like)', - messageFeedbackApiTip: 'Bewerten Sie empfangene Nachrichten im Namen der Endbenutzer mit Likes oder Dislikes. Diese Daten sind auf der Seite Logs & Annotations sichtbar und werden für zukünftige Modellanpassungen verwendet.', - messageIDTip: 'Nachrichten-ID', - ratingTip: 'like oder dislike, null ist rückgängig machen', - parametersApi: 'Anwendungsparameterinformationen abrufen', - parametersApiTip: 'Abrufen konfigurierter Eingabeparameter, einschließlich Variablennamen, Feldnamen, Typen und Standardwerten. Typischerweise verwendet, um diese Felder in einem Formular anzuzeigen oder Standardwerte nach dem Laden des Clients auszufüllen.', - }, - chatMode: { - title: 'Chat App API', - info: 'Für vielseitige Gesprächsanwendungen im Q&A-Format rufen Sie die chat-messages API auf, um einen Dialog zu initiieren. Führen Sie laufende Gespräche fort, indem Sie die zurückgegebene conversation_id übergeben. Antwortparameter und -vorlagen hängen von den Einstellungen in Dify Prompt Eng. ab.', - createChatApi: 'Chatnachricht erstellen', - createChatApiTip: 'Eine neue Konversationsnachricht erstellen oder einen bestehenden Dialog fortsetzen.', - inputsTips: '(Optional) Geben Sie Benutzereingabefelder als Schlüssel-Wert-Paare an, die Variablen in Prompt Eng. entsprechen. Schlüssel ist der Variablenname, Wert ist der Parameterwert. Wenn der Feldtyp Select ist, muss der übermittelte Wert eine der voreingestellten Optionen sein.', - queryTips: 'Inhalt der Benutzereingabe/Frage', - blocking: 'Blockierender Typ, wartet auf die Fertigstellung der Ausführung und gibt Ergebnisse zurück. (Anfragen können unterbrochen werden, wenn der Prozess lang ist)', - streaming: 'Streaming Rückgaben. Implementierung der Streaming-Rückgabe basierend auf SSE (Server-Sent Events).', - conversationIdTip: '(Optional) Konversations-ID: für erstmalige Konversation leer lassen; conversation_id aus dem Kontext übergeben, um den Dialog fortzusetzen.', - messageFeedbackApi: 'Nachrichtenfeedback des Endbenutzers, like', - messageFeedbackApiTip: 'Bewerten Sie empfangene Nachrichten im Namen der Endbenutzer mit Likes oder Dislikes. Diese Daten sind auf der Seite Logs & Annotations sichtbar und werden für zukünftige Modellanpassungen verwendet.', - messageIDTip: 'Nachrichten-ID', - ratingTip: 'like oder dislike, null ist rückgängig machen', - chatMsgHistoryApi: 'Chatverlaufsnachricht abrufen', - chatMsgHistoryApiTip: 'Die erste Seite gibt die neuesten `limit` Einträge in umgekehrter Reihenfolge zurück.', - chatMsgHistoryConversationIdTip: 'Konversations-ID', - chatMsgHistoryFirstId: 'ID des ersten Chat-Datensatzes auf der aktuellen Seite. Standardmäßig keiner.', - chatMsgHistoryLimit: 'Wie viele Chats in einer Anfrage zurückgegeben werden', - conversationsListApi: 'Konversationsliste abrufen', - conversationsListApiTip: 'Ruft die Sitzungsliste des aktuellen Benutzers ab. Standardmäßig werden die letzten 20 Sitzungen zurückgegeben.', - conversationsListFirstIdTip: 'Die ID des letzten Datensatzes auf der aktuellen Seite, standardmäßig keine.', - conversationsListLimitTip: 'Wie viele Chats in einer Anfrage zurückgegeben werden', - conversationRenamingApi: 'Konversation umbenennen', - conversationRenamingApiTip: 'Konversationen umbenennen; der Name wird in Mehrsitzungs-Client-Schnittstellen angezeigt.', - conversationRenamingNameTip: 'Neuer Name', - parametersApi: 'Anwendungsparameterinformationen abrufen', - parametersApiTip: 'Abrufen konfigurierter Eingabeparameter, einschließlich Variablennamen, Feldnamen, Typen und Standardwerten. Typischerweise verwendet, um diese Felder in einem Formular anzuzeigen oder Standardwerte nach dem Laden des Clients auszufüllen.', - }, - develop: { - requestBody: 'Anfragekörper', - pathParams: 'Pfadparameter', - query: 'Anfrage', - toc: 'Inhalt', - }, - loading: 'Laden', - regenerate: 'Erneuern', -} - -export default translation diff --git a/web/i18n/de-DE/app-debug.json b/web/i18n/de-DE/app-debug.json new file mode 100644 index 0000000000..dc37fcfdd4 --- /dev/null +++ b/web/i18n/de-DE/app-debug.json @@ -0,0 +1,562 @@ +{ + "pageTitle": { + "line1": "PROMPT", + "line2": "Engineering" + }, + "orchestrate": "Orchestrieren", + "promptMode": { + "simple": "Wechseln Sie in den Expertenmodus, um das gesamte PROMPT zu bearbeiten", + "advanced": "Expertenmodus", + "switchBack": "Zurückwechseln", + "advancedWarning": { + "title": "Sie haben in den Expertenmodus gewechselt, und sobald Sie das PROMPT ändern, können Sie NICHT zum Basis-Modus zurückkehren.", + "description": "Im Expertenmodus können Sie das gesamte PROMPT bearbeiten.", + "learnMore": "Mehr erfahren", + "ok": "OK" + }, + "operation": { + "addMessage": "Nachricht hinzufügen" + }, + "contextMissing": "Komponente fehlt, die Wirksamkeit des Prompts könnte schlecht sein." + }, + "operation": { + "applyConfig": "Veröffentlichen", + "resetConfig": "Zurücksetzen", + "debugConfig": "Debuggen", + "addFeature": "Funktion hinzufügen", + "automatic": "Generieren", + "stopResponding": "Antworten stoppen", + "agree": "gefällt mir", + "disagree": "gefällt mir nicht", + "cancelAgree": "Gefällt mir zurücknehmen", + "cancelDisagree": "Gefällt mir nicht zurücknehmen", + "userAction": "Benutzer " + }, + "notSetAPIKey": { + "title": "LLM-Anbieterschlüssel wurde nicht festgelegt", + "trailFinished": "Testversion beendet", + "description": "Der LLM-Anbieterschlüssel wurde nicht festgelegt und muss vor dem Debuggen festgelegt werden.", + "settingBtn": "Zu den Einstellungen gehen" + }, + "trailUseGPT4Info": { + "title": "Unterstützt derzeit kein gpt-4", + "description": "Um gpt-4 zu verwenden, bitte API-Schlüssel festlegen." + }, + "feature": { + "groupChat": { + "title": "Chatverbesserung", + "description": "Voreinstellungen für Konversationen zu Apps hinzufügen kann die Benutzererfahrung verbessern." + }, + "groupExperience": { + "title": "Erfahrungsverbesserung" + }, + "conversationOpener": { + "title": "Gesprächseröffnungen", + "description": "In einer Chat-App wird der erste Satz, den die KI aktiv an den Benutzer richtet, üblicherweise als Begrüßung verwendet." + }, + "suggestedQuestionsAfterAnswer": { + "title": "Nachfolgefragen", + "description": "Das Einrichten von Vorschlägen für nächste Fragen kann den Chat für Benutzer verbessern.", + "resDes": "3 Vorschläge für die nächste Benutzerfrage.", + "tryToAsk": "Versuchen Sie zu fragen" + }, + "moreLikeThis": { + "title": "Mehr davon", + "description": "Mehrere Texte gleichzeitig generieren und dann bearbeiten und weiter generieren", + "generateNumTip": "Anzahl der generierten Texte pro Durchgang", + "tip": "Die Verwendung dieser Funktion verursacht zusätzliche Token-Kosten" + }, + "speechToText": { + "title": "Sprache zu Text", + "description": "Einmal aktiviert, können Sie Spracheingabe verwenden.", + "resDes": "Spracheingabe ist aktiviert" + }, + "textToSpeech": { + "title": "Text zu Sprache", + "description": "Einmal aktiviert, kann Text in Sprache umgewandelt werden.", + "resDes": "Text zu Audio ist aktiviert" + }, + "citation": { + "title": "Zitate und Urheberangaben", + "description": "Einmal aktiviert, zeigen Sie das Quelldokument und den zugeordneten Abschnitt des generierten Inhalts an.", + "resDes": "Zitate und Urheberangaben sind aktiviert" + }, + "annotation": { + "title": "Annotation Antwort", + "description": "Sie können manuell hochwertige Antworten zum Cache hinzufügen für bevorzugte Übereinstimmung mit ähnlichen Benutzerfragen.", + "resDes": "Annotationsantwort ist aktiviert", + "scoreThreshold": { + "title": "Schwellenwert", + "description": "Wird verwendet, um den Ähnlichkeitsschwellenwert für die Annotation Antwort einzustellen.", + "easyMatch": "Einfache Übereinstimmung", + "accurateMatch": "Genaue Übereinstimmung" + }, + "matchVariable": { + "title": "Übereinstimmungsvariable", + "choosePlaceholder": "Wählen Sie Übereinstimmungsvariable" + }, + "cacheManagement": "Annotationen", + "cached": "Annotiert", + "remove": "Entfernen", + "removeConfirm": "Diese Annotation löschen?", + "add": "Annotation hinzufügen", + "edit": "Annotation bearbeiten" + }, + "dataSet": { + "title": "Kontext", + "noData": "Sie können Wissen als Kontext importieren", + "selectTitle": "Wählen Sie Referenzwissen", + "selected": "Wissen ausgewählt", + "noDataSet": "Kein Wissen gefunden", + "toCreate": "Erstellen gehen", + "notSupportSelectMulti": "Unterstützt derzeit nur ein Wissen", + "queryVariable": { + "title": "Abfragevariable", + "tip": "Diese Variable wird als Eingabe für die Kontextabfrage verwendet, um kontextbezogene Informationen in Bezug auf die Eingabe dieser Variable zu erhalten.", + "choosePlaceholder": "Wählen Sie Abfragevariable", + "noVar": "Keine Variablen", + "noVarTip": "Bitte erstellen Sie eine Variable im Variablenbereich", + "unableToQueryDataSet": "Konnte das Wissen nicht abfragen", + "unableToQueryDataSetTip": "Konnte das Wissen nicht erfolgreich abfragen, bitte wählen Sie eine Kontextabfragevariable im Kontextbereich.", + "ok": "OK", + "contextVarNotEmpty": "Kontextabfragevariable darf nicht leer sein", + "deleteContextVarTitle": "Variable „{{varName}}“ löschen?", + "deleteContextVarTip": "Diese Variable wurde als Kontextabfragevariable festgelegt und deren Entfernung wird die normale Verwendung des Wissens beeinträchtigen. Wenn Sie sie trotzdem löschen müssen, wählen Sie sie bitte im Kontextbereich erneut." + } + }, + "tools": { + "title": "Werkzeuge", + "tips": "Werkzeuge bieten eine standardisierte API-Aufrufmethode, die Benutzereingaben oder Variablen als Anfrageparameter für die Abfrage externer Daten als Kontext verwendet.", + "toolsInUse": "{{count}} Werkzeuge in Verwendung", + "modal": { + "title": "Werkzeug", + "toolType": { + "title": "Werkzeugtyp", + "placeholder": "Bitte wählen Sie den Werkzeugtyp" + }, + "name": { + "title": "Name", + "placeholder": "Bitte geben Sie den Namen ein" + }, + "variableName": { + "title": "Variablenname", + "placeholder": "Bitte geben Sie den Variablennamen ein" + } + } + }, + "conversationHistory": { + "title": "Konversationsverlauf", + "description": "Präfixnamen für Konversationsrollen festlegen", + "tip": "Der Konversationsverlauf ist nicht aktiviert, bitte fügen Sie im Prompt oben ein.", + "learnMore": "Mehr erfahren", + "editModal": { + "title": "Konversationsrollennamen bearbeiten", + "userPrefix": "Benutzerpräfix", + "assistantPrefix": "Assistentenpräfix" + } + }, + "toolbox": { + "title": "WERKZEUGKASTEN" + }, + "moderation": { + "title": "Inhaltsmoderation", + "description": "Sichern Sie die Ausgabe des Modells durch Verwendung der Moderations-API oder durch Pflege einer Liste sensibler Wörter.", + "allEnabled": "INHALT von EINGABE/AUSGABE aktiviert", + "inputEnabled": "INHALT von EINGABE aktiviert", + "outputEnabled": "INHALT von AUSGABE aktiviert", + "modal": { + "title": "Einstellungen zur Inhaltsmoderation", + "provider": { + "title": "Anbieter", + "openai": "OpenAI-Moderation", + "openaiTip": { + "prefix": "OpenAI-Moderation erfordert einen konfigurierten OpenAI-API-Schlüssel in den ", + "suffix": "." + }, + "keywords": "Schlüsselwörter" + }, + "keywords": { + "tip": "Jeweils eine pro Zeile, getrennt durch Zeilenumbrüche. Bis zu 100 Zeichen pro Zeile.", + "placeholder": "Jeweils eine pro Zeile, getrennt durch Zeilenumbrüche", + "line": "Zeile" + }, + "content": { + "input": "INHALT der EINGABE moderieren", + "output": "INHALT der AUSGABE moderieren", + "preset": "Voreingestellte Antworten", + "placeholder": "Inhalt der voreingestellten Antworten hier", + "condition": "Moderation von INHALT der EINGABE und AUSGABE mindestens eine aktiviert", + "fromApi": "Voreingestellte Antworten werden durch API zurückgegeben", + "errorMessage": "Voreingestellte Antworten dürfen nicht leer sein", + "supportMarkdown": "Markdown unterstützt" + }, + "openaiNotConfig": { + "before": "OpenAI-Moderation erfordert einen konfigurierten OpenAI-API-Schlüssel in den", + "after": "" + } + }, + "contentEnableLabel": "Inhaltsmoderation aktiviert" + }, + "fileUpload": { + "title": "Datei-Upload", + "description": "Das Chat-Eingabefeld unterstützt das Hochladen von Bildern, Dokumenten und anderen Dateien.", + "supportedTypes": "Unterstützte Dateitypen", + "numberLimit": "Max. Uploads", + "modalTitle": "Datei-Upload-Einstellung" + }, + "imageUpload": { + "title": "Bild-Upload", + "description": "Ermöglicht das Hochladen von Bildern.", + "supportedTypes": "Unterstützte Dateitypen", + "numberLimit": "Max. Uploads", + "modalTitle": "Bild-Upload-Einstellung" + }, + "bar": { + "empty": "Funktionen aktivieren, um die Web-App-Benutzererfahrung zu verbessern", + "enableText": "Funktionen aktiviert", + "manage": "Verwalten" + }, + "documentUpload": { + "title": "Dokument", + "description": "Das Aktivieren von Dokumenten ermöglicht es dem Modell, Dokumente aufzunehmen und Fragen zu ihnen zu beantworten." + }, + "audioUpload": { + "title": "Audio", + "description": "Das Aktivieren von Audio ermöglicht es dem Modell, Audiodateien für Transkription und Analyse zu verarbeiten." + } + }, + "resetConfig": { + "title": "Zurücksetzen bestätigen?", + "message": "Zurücksetzen verwirft Änderungen und stellt die zuletzt veröffentlichte Konfiguration wieder her." + }, + "errorMessage": { + "nameOfKeyRequired": "Name des Schlüssels: {{key}} erforderlich", + "valueOfVarRequired": "{{key}} Wert darf nicht leer sein", + "queryRequired": "Anfragetext ist erforderlich.", + "waitForResponse": "Bitte warten Sie auf die Antwort auf die vorherige Nachricht, um abzuschließen.", + "waitForBatchResponse": "Bitte warten Sie auf die Antwort auf die Stapelaufgabe, um abzuschließen.", + "notSelectModel": "Bitte wählen Sie ein Modell", + "waitForImgUpload": "Bitte warten Sie, bis das Bild hochgeladen ist", + "waitForFileUpload": "Bitte warten Sie, bis die Datei(en) hochgeladen sind" + }, + "chatSubTitle": "Anweisungen", + "completionSubTitle": "Vor-Prompt", + "promptTip": "Prompts leiten KI-Antworten mit Anweisungen und Einschränkungen. Fügen Sie Variablen wie {{input}} ein. Dieses Prompt wird den Benutzern nicht angezeigt.", + "formattingChangedTitle": "Formatierung geändert", + "formattingChangedText": "Die Änderung der Formatierung wird den Debug-Bereich zurücksetzen, sind Sie sicher?", + "variableTitle": "Variablen", + "variableTip": "Benutzer füllen Variablen in einem Formular aus, automatisches Ersetzen von Variablen im Prompt.", + "notSetVar": "Variablen ermöglichen es Benutzern, Aufforderungswörter oder Eröffnungsbemerkungen einzuführen, wenn sie Formulare ausfüllen. Sie könnten versuchen, \"{{input}}\" im Prompt einzugeben.", + "autoAddVar": "Im Vor-Prompt referenzierte undefinierte Variablen, möchten Sie sie im Benutzereingabeformular hinzufügen?", + "variableTable": { + "key": "Variablenschlüssel", + "name": "Name des Benutzereingabefelds", + "type": "Eingabetyp", + "action": "Aktionen", + "typeString": "String", + "typeSelect": "Auswählen" + }, + "varKeyError": { + "canNoBeEmpty": "{{key}} ist erforderlich", + "tooLong": "{{key}} zu lang. Darf nicht länger als 30 Zeichen sein", + "notValid": "{{key}} ist ungültig. Darf nur Buchstaben, Zahlen und Unterstriche enthalten", + "notStartWithNumber": "{{key}} darf nicht mit einer Zahl beginnen", + "keyAlreadyExists": "{{key}} existiert bereits" + }, + "otherError": { + "promptNoBeEmpty": "Prompt darf nicht leer sein", + "historyNoBeEmpty": "Konversationsverlauf muss im Prompt gesetzt sein", + "queryNoBeEmpty": "Anfrage muss im Prompt gesetzt sein" + }, + "variableConfig": { + "description": "Einstellung für Variable {{varName}}", + "fieldType": "Feldtyp", + "string": "Kurztext", + "paragraph": "Absatz", + "select": "Auswählen", + "notSet": "Nicht gesetzt, versuchen Sie, {{input}} im Vor-Prompt zu tippen", + "stringTitle": "Formular-Textfeldoptionen", + "maxLength": "Maximale Länge", + "options": "Optionen", + "addOption": "Option hinzufügen", + "apiBasedVar": "API-basierte Variable", + "defaultValue": "Standardwert", + "noDefaultValue": "Kein Standardwert", + "selectDefaultValue": "Standardwert auswählen", + "file": { + "image": { + "name": "Bild" + }, + "audio": { + "name": "Audio" + }, + "document": { + "name": "Dokument" + }, + "video": { + "name": "Video" + }, + "custom": { + "description": "Geben Sie andere Dateitypen an.", + "createPlaceholder": " Dateiendung, z.B. .doc", + "name": "Andere Dateitypen" + }, + "supportFileTypes": "Unterstützte Dateitypen" + }, + "errorMsg": { + "optionRepeat": "Hat Wiederholungsoptionen", + "atLeastOneOption": "Mindestens eine Option ist erforderlich", + "labelNameRequired": "Labelname ist erforderlich", + "varNameCanBeRepeat": "Variablenname kann nicht wiederholt werden" + }, + "multi-files": "Dateiliste", + "varName": "Variablenname", + "content": "Inhalt", + "single-file": "Einzelne Datei", + "labelName": "Kennsatzname", + "addModalTitle": "Eingabefeld hinzufügen", + "hide": "Verstecken", + "inputPlaceholder": "Bitte geben Sie ein", + "both": "Beide", + "uploadFileTypes": "Dateitypen hochladen", + "maxNumberOfUploads": "Maximale Anzahl von Uploads", + "maxNumberTip": "Dokument < {{docLimit}}, Bild < {{imgLimit}}, Audio < {{audioLimit}}, Video < {{videoLimit}}", + "number": "Zahl", + "editModalTitle": "Eingabefeld bearbeiten", + "required": "Erforderlich", + "text-input": "Kurztext", + "localUpload": "Lokaler Upload", + "json": "JSON-Code", + "optional": "optional", + "checkbox": "Checkbox", + "jsonSchema": "JSON-Schema", + "tooltips": "Tooltips", + "placeholder": "Platzhalter", + "displayName": "Anzeigename", + "unit": "Einheit", + "showAllSettings": "Alle Einstellungen anzeigen", + "startChecked": "Start aktiviert", + "uploadMethod": "Upload-Methode", + "noDefaultSelected": "Nicht auswählen", + "defaultValuePlaceholder": "Geben Sie den Standardwert ein, um das Feld vorab auszufüllen", + "unitPlaceholder": "Einheiten nach Zahlen anzeigen, z.B. Token", + "startSelectedOption": "Ausgewählte Option starten", + "placeholderPlaceholder": "Geben Sie Text ein, der angezeigt werden soll, wenn das Feld leer ist", + "tooltipsPlaceholder": "Geben Sie hilfreichen Text ein, der angezeigt wird, wenn Sie den Mauszeiger über die Beschriftung bewegen" + }, + "vision": { + "name": "Vision", + "description": "Vision zu aktivieren ermöglicht es dem Modell, Bilder aufzunehmen und Fragen dazu zu beantworten.", + "settings": "Einstellungen", + "visionSettings": { + "title": "Vision-Einstellungen", + "resolution": "Auflösung", + "resolutionTooltip": "Niedrige Auflösung ermöglicht es dem Modell, eine Bildversion mit niedriger Auflösung von 512 x 512 zu erhalten und das Bild mit einem Budget von 65 Tokens darzustellen. Dies ermöglicht schnellere Antworten des API und verbraucht weniger Eingabetokens für Anwendungsfälle, die kein hohes Detail benötigen.\nHohe Auflösung ermöglicht zunächst, dass das Modell das Bild mit niedriger Auflösung sieht und dann detaillierte Ausschnitte von Eingabebildern als 512px Quadrate basierend auf der Größe des Eingabebildes erstellt. Jeder der detaillierten Ausschnitte verwendet das doppelte Token-Budget für insgesamt 129 Tokens.", + "high": "Hoch", + "low": "Niedrig", + "uploadMethod": "Upload-Methode", + "both": "Beides", + "localUpload": "Lokaler Upload", + "url": "URL", + "uploadLimit": "Upload-Limit" + }, + "onlySupportVisionModelTip": "Unterstützt nur Bildverarbeitungsmodelle" + }, + "voice": { + "name": "Stimme", + "defaultDisplay": "Standardstimme", + "description": "Text-zu-Sprache-Stimmeinstellungen", + "settings": "Einstellungen", + "voiceSettings": { + "title": "Stimmeinstellungen", + "language": "Sprache", + "resolutionTooltip": "Text-zu-Sprache unterstützte Sprache.", + "voice": "Stimme", + "autoPlay": "Automatische Wiedergabe", + "autoPlayEnabled": "Auf", + "autoPlayDisabled": "Aus" + } + }, + "openingStatement": { + "title": "Gesprächseröffner", + "add": "Hinzufügen", + "writeOpener": "Eröffnung schreiben", + "placeholder": "Schreiben Sie hier Ihre Eröffnungsnachricht, Sie können Variablen verwenden, versuchen Sie {{Variable}} zu tippen.", + "openingQuestionPlaceholder": "Sie können Variablen verwenden, versuchen Sie {{variable}} einzugeben.", + "openingQuestion": "Eröffnungsfragen", + "noDataPlaceHolder": "Den Dialog mit dem Benutzer zu beginnen, kann helfen, in konversationellen Anwendungen eine engere Verbindung mit ihnen herzustellen.", + "varTip": "Sie können Variablen verwenden, versuchen Sie {{Variable}} zu tippen", + "tooShort": "Für die Erzeugung von Eröffnungsbemerkungen für das Gespräch werden mindestens 20 Wörter des Anfangsprompts benötigt.", + "notIncludeKey": "Das Anfangsprompt enthält nicht die Variable: {{key}}. Bitte fügen Sie sie dem Anfangsprompt hinzu." + }, + "modelConfig": { + "model": "Modell", + "setTone": "Ton der Antworten festlegen", + "title": "Modell und Parameter", + "modeType": { + "chat": "Chat", + "completion": "Vollständig" + } + }, + "inputs": { + "title": "Debug und Vorschau", + "noPrompt": "Versuchen Sie, etwas Prompt im Vor-Prompt-Eingabefeld zu schreiben", + "userInputField": "Benutzereingabefeld", + "noVar": "Füllen Sie den Wert der Variable aus, der bei jedem Start einer neuen Sitzung automatisch im Prompt ersetzt wird.", + "chatVarTip": "Füllen Sie den Wert der Variable aus, der bei jedem Start einer neuen Sitzung automatisch im Prompt ersetzt wird", + "completionVarTip": "Füllen Sie den Wert der Variable aus, der bei jeder Einreichung einer Frage automatisch in den Prompt-Wörtern ersetzt wird.", + "previewTitle": "Prompt-Vorschau", + "queryTitle": "Anfrageinhalt", + "queryPlaceholder": "Bitte geben Sie den Anfragetext ein.", + "run": "AUSFÜHREN" + }, + "result": "Ausgabetext", + "datasetConfig": { + "settingTitle": "Abfragen-Einstellungen", + "retrieveOneWay": { + "title": "N-zu-1-Abfrage", + "description": "Basierend auf Benutzerabsicht und Beschreibungen des Wissens wählt der Agent autonom das beste Wissen für die Abfrage aus. Am besten für Anwendungen mit deutlichen, begrenzten Wissensgebieten." + }, + "retrieveMultiWay": { + "title": "Mehrwegabfrage", + "description": "Basierend auf Benutzerabsicht werden Abfragen über alle Wissensbereiche hinweg durchgeführt, relevante Texte aus Mehrfachquellen abgerufen und die besten Ergebnisse, die der Benutzerabfrage entsprechen, nach einer Neubewertung ausgewählt. Konfiguration des Rerank-Modell-APIs erforderlich." + }, + "rerankModelRequired": "Rerank-Modell erforderlich", + "params": "Parameter", + "top_k": "Top K", + "top_kTip": "Wird verwendet, um Abschnitte zu filtern, die am ähnlichsten zu Benutzerfragen sind. Das System wird auch dynamisch den Wert von Top K anpassen, entsprechend max_tokens des ausgewählten Modells.", + "score_threshold": "Schwellenwert", + "score_thresholdTip": "Wird verwendet, um den Ähnlichkeitsschwellenwert für die Abschnittsfilterung einzustellen.", + "retrieveChangeTip": "Das Ändern des Indexmodus und des Abfragemodus kann Anwendungen beeinflussen, die mit diesem Wissen verbunden sind.", + "embeddingModelRequired": "Ein konfiguriertes Einbettungsmodell ist erforderlich", + "knowledgeTip": "Klicken Sie auf die Schaltfläche \" \", um Wissen hinzuzufügen" + }, + "debugAsSingleModel": "Als Einzelmodell debuggen", + "debugAsMultipleModel": "Als Mehrfachmodelle debuggen", + "duplicateModel": "Duplizieren", + "publishAs": "Veröffentlichen als", + "assistantType": { + "name": "Assistententyp", + "chatAssistant": { + "name": "Basisassistent", + "description": "Erstellen eines chatbasierten Assistenten mit einem Großsprachmodell" + }, + "agentAssistant": { + "name": "Agentenassistent", + "description": "Erstellen eines intelligenten Agenten, der autonom Werkzeuge wählen kann, um Aufgaben zu erfüllen" + } + }, + "agent": { + "agentMode": "Agentenmodus", + "agentModeDes": "Den Typ des Inferenzmodus für den Agenten festlegen", + "agentModeType": { + "ReACT": "ReAct", + "functionCall": "Funktionsaufruf" + }, + "setting": { + "name": "Agenten-Einstellungen", + "description": "Agentenassistenten-Einstellungen ermöglichen die Festlegung des Agentenmodus und erweiterte Funktionen wie integrierte Prompts, nur verfügbar im Agententyp.", + "maximumIterations": { + "name": "Maximale Iterationen", + "description": "Begrenzt die Anzahl der Iterationen, die ein Agentenassistent ausführen kann" + } + }, + "buildInPrompt": "Eingebautes Prompt", + "firstPrompt": "Erstes Prompt", + "nextIteration": "Nächste Iteration", + "promptPlaceholder": "Schreiben Sie hier Ihr Prompt", + "tools": { + "name": "Werkzeuge", + "description": "Die Verwendung von Werkzeugen kann die Fähigkeiten von LLM erweitern, z.B. das Internet durchsuchen oder wissenschaftliche Berechnungen durchführen", + "enabled": "Aktiviert" + } + }, + "codegen": { + "applyChanges": "Änderungen übernehmen", + "generatedCodeTitle": "Generierter Code", + "instructionPlaceholder": "Geben Sie eine detaillierte Beschreibung des Codes ein, den Sie generieren möchten.", + "overwriteConfirmMessage": "Durch diese Aktion wird der vorhandene Code überschrieben. Möchten Sie fortfahren?", + "title": "Codegenerator", + "noDataLine1": "Beschreiben Sie links Ihren Anwendungsfall,", + "loading": "Code wird generiert...", + "resTitle": "Generierter Code", + "description": "Der Code-Generator verwendet konfigurierte Modelle, um qualitativ hochwertigen Code basierend auf Ihren Anweisungen zu generieren. Bitte geben Sie klare und detaillierte Anweisungen.", + "instruction": "Anweisungen", + "apply": "Anwenden", + "generate": "Erzeugen", + "overwriteConfirmTitle": "Vorhandenen Code überschreiben?", + "noDataLine2": "Die Codevorschau wird hier angezeigt." + }, + "generate": { + "template": { + "pythonDebugger": { + "instruction": "Ein Bot, der Ihren Code basierend auf Ihren Anweisungen generieren und debuggen kann", + "name": "Python-Debugger" + }, + "translation": { + "instruction": "Ein Übersetzer, der mehrere Sprachen übersetzen kann", + "name": "Übersetzung" + }, + "professionalAnalyst": { + "name": "Professioneller Analyst", + "instruction": "Extrahieren Sie Erkenntnisse, identifizieren Sie Risiken und destillieren Sie wichtige Informationen aus langen Berichten in einem einzigen Memo" + }, + "excelFormulaExpert": { + "instruction": "Ein Chatbot, der Anfängern helfen kann, Excel-Formeln basierend auf Benutzeranweisungen zu verstehen, zu verwenden und zu erstellen", + "name": "Excel-Formel-Experte" + }, + "travelPlanning": { + "instruction": "Der Reiseplanungsassistent ist ein intelligentes Tool, mit dem Benutzer ihre Reisen mühelos planen können", + "name": "Reiseplanung" + }, + "SQLSorcerer": { + "name": "SQL-Zauberer", + "instruction": "Verwandeln Sie alltägliche Sprache in SQL-Abfragen" + }, + "GitGud": { + "name": "Git gud", + "instruction": "Generieren geeigneter Git-Befehle basierend auf vom Benutzer beschriebenen Aktionen zur Versionskontrolle" + }, + "meetingTakeaways": { + "instruction": "Fassen Sie Meetings in prägnante Zusammenfassungen zusammen, die Diskussionsthemen, wichtige Erkenntnisse und Aktionspunkte enthalten", + "name": "Takeaways für Meetings" + }, + "writingsPolisher": { + "instruction": "Verwenden Sie fortgeschrittene Lektoratstechniken, um Ihre Texte zu verbessern", + "name": "Polierer für Schreibstil" + } + }, + "title": "Eingabeaufforderungs-Generator", + "apply": "Anwenden", + "overwriteTitle": "Vorhandene Konfiguration überschreiben?", + "instruction": "Anweisungen", + "tryIt": "Versuch es", + "generate": "Erzeugen", + "overwriteMessage": "Durch Anwenden dieser Eingabeaufforderung wird die vorhandene Konfiguration überschrieben.", + "loading": "Orchestrieren Sie die Anwendung für Sie...", + "resTitle": "Generierte Eingabeaufforderung", + "description": "Der Eingabeaufforderungsgenerator verwendet das konfigurierte Modell, um Eingabeaufforderungen für eine höhere Qualität und bessere Struktur zu optimieren. Bitte schreiben Sie klare und detaillierte Anweisungen.", + "version": "Version", + "dismiss": "Ablehnen", + "idealOutput": "Ideale Ausgabe", + "optional": "Optional", + "insertContext": "Kontext einfügen", + "to": "zu", + "optimizationNote": "Optimierungsanmerkung", + "press": "Drücken", + "versions": "Versionen", + "instructionPlaceHolderLine2": "Das Ausgabeformat ist inkorrekt, bitte halten Sie sich strikt an das JSON-Format.", + "latest": "Neueste", + "optimizePromptTooltip": "Optimieren im Eingabeaufforderungsgenerator", + "idealOutputPlaceholder": "Beschreiben Sie Ihr ideales Antwortformat, die Länge, den Ton und die Inhaltsanforderungen...", + "newNoDataLine1": "Schreiben Sie eine Anweisung in die linke Spalte und klicken Sie auf Generieren, um die Antwort zu sehen.", + "codeGenInstructionPlaceHolderLine": "Je detaillierter das Feedback ist, wie zum Beispiel die Datentypen der Eingabe und Ausgabe sowie die Verarbeitung der Variablen, desto genauer wird die Codegenerierung sein.", + "instructionPlaceHolderLine1": "Machen Sie die Ausgabe prägnanter und bewahren Sie die wichtigsten Punkte.", + "instructionPlaceHolderTitle": "Beschreiben Sie, wie Sie diesen Prompt verbessern möchten. Zum Beispiel:", + "instructionPlaceHolderLine3": "Der Ton ist zu scharf, bitte machen Sie ihn freundlicher." + }, + "warningMessage": { + "timeoutExceeded": "Die Ergebnisse werden aufgrund einer Zeitüberschreitung nicht angezeigt. Bitte beziehen Sie sich auf die Protokolle, um die vollständigen Ergebnisse zu erhalten." + }, + "noResult": "Hier wird die Ausgabe angezeigt." +} diff --git a/web/i18n/de-DE/app-debug.ts b/web/i18n/de-DE/app-debug.ts deleted file mode 100644 index c12a1f5291..0000000000 --- a/web/i18n/de-DE/app-debug.ts +++ /dev/null @@ -1,573 +0,0 @@ -const translation = { - pageTitle: { - line1: 'PROMPT', - line2: 'Engineering', - }, - orchestrate: 'Orchestrieren', - promptMode: { - simple: 'Wechseln Sie in den Expertenmodus, um das gesamte PROMPT zu bearbeiten', - advanced: 'Expertenmodus', - switchBack: 'Zurückwechseln', - advancedWarning: { - title: 'Sie haben in den Expertenmodus gewechselt, und sobald Sie das PROMPT ändern, können Sie NICHT zum Basis-Modus zurückkehren.', - description: 'Im Expertenmodus können Sie das gesamte PROMPT bearbeiten.', - learnMore: 'Mehr erfahren', - ok: 'OK', - }, - operation: { - addMessage: 'Nachricht hinzufügen', - }, - contextMissing: 'Komponente fehlt, die Wirksamkeit des Prompts könnte schlecht sein.', - }, - operation: { - applyConfig: 'Veröffentlichen', - resetConfig: 'Zurücksetzen', - debugConfig: 'Debuggen', - addFeature: 'Funktion hinzufügen', - automatic: 'Generieren', - stopResponding: 'Antworten stoppen', - agree: 'gefällt mir', - disagree: 'gefällt mir nicht', - cancelAgree: 'Gefällt mir zurücknehmen', - cancelDisagree: 'Gefällt mir nicht zurücknehmen', - userAction: 'Benutzer ', - }, - notSetAPIKey: { - title: 'LLM-Anbieterschlüssel wurde nicht festgelegt', - trailFinished: 'Testversion beendet', - description: 'Der LLM-Anbieterschlüssel wurde nicht festgelegt und muss vor dem Debuggen festgelegt werden.', - settingBtn: 'Zu den Einstellungen gehen', - }, - trailUseGPT4Info: { - title: 'Unterstützt derzeit kein gpt-4', - description: 'Um gpt-4 zu verwenden, bitte API-Schlüssel festlegen.', - }, - feature: { - groupChat: { - title: 'Chatverbesserung', - description: 'Voreinstellungen für Konversationen zu Apps hinzufügen kann die Benutzererfahrung verbessern.', - }, - groupExperience: { - title: 'Erfahrungsverbesserung', - }, - conversationOpener: { - title: 'Gesprächseröffnungen', - description: 'In einer Chat-App wird der erste Satz, den die KI aktiv an den Benutzer richtet, üblicherweise als Begrüßung verwendet.', - }, - suggestedQuestionsAfterAnswer: { - title: 'Nachfolgefragen', - description: 'Das Einrichten von Vorschlägen für nächste Fragen kann den Chat für Benutzer verbessern.', - resDes: '3 Vorschläge für die nächste Benutzerfrage.', - tryToAsk: 'Versuchen Sie zu fragen', - }, - moreLikeThis: { - title: 'Mehr davon', - description: 'Mehrere Texte gleichzeitig generieren und dann bearbeiten und weiter generieren', - generateNumTip: 'Anzahl der generierten Texte pro Durchgang', - tip: 'Die Verwendung dieser Funktion verursacht zusätzliche Token-Kosten', - }, - speechToText: { - title: 'Sprache zu Text', - description: 'Einmal aktiviert, können Sie Spracheingabe verwenden.', - resDes: 'Spracheingabe ist aktiviert', - }, - textToSpeech: { - title: 'Text zu Sprache', - description: 'Einmal aktiviert, kann Text in Sprache umgewandelt werden.', - resDes: 'Text zu Audio ist aktiviert', - }, - citation: { - title: 'Zitate und Urheberangaben', - description: 'Einmal aktiviert, zeigen Sie das Quelldokument und den zugeordneten Abschnitt des generierten Inhalts an.', - resDes: 'Zitate und Urheberangaben sind aktiviert', - }, - annotation: { - title: 'Annotation Antwort', - description: 'Sie können manuell hochwertige Antworten zum Cache hinzufügen für bevorzugte Übereinstimmung mit ähnlichen Benutzerfragen.', - resDes: 'Annotationsantwort ist aktiviert', - scoreThreshold: { - title: 'Schwellenwert', - description: 'Wird verwendet, um den Ähnlichkeitsschwellenwert für die Annotation Antwort einzustellen.', - easyMatch: 'Einfache Übereinstimmung', - accurateMatch: 'Genaue Übereinstimmung', - }, - matchVariable: { - title: 'Übereinstimmungsvariable', - choosePlaceholder: 'Wählen Sie Übereinstimmungsvariable', - }, - cacheManagement: 'Annotationen', - cached: 'Annotiert', - remove: 'Entfernen', - removeConfirm: 'Diese Annotation löschen?', - add: 'Annotation hinzufügen', - edit: 'Annotation bearbeiten', - }, - dataSet: { - title: 'Kontext', - noData: 'Sie können Wissen als Kontext importieren', - selectTitle: 'Wählen Sie Referenzwissen', - selected: 'Wissen ausgewählt', - noDataSet: 'Kein Wissen gefunden', - toCreate: 'Erstellen gehen', - notSupportSelectMulti: 'Unterstützt derzeit nur ein Wissen', - queryVariable: { - title: 'Abfragevariable', - tip: 'Diese Variable wird als Eingabe für die Kontextabfrage verwendet, um kontextbezogene Informationen in Bezug auf die Eingabe dieser Variable zu erhalten.', - choosePlaceholder: 'Wählen Sie Abfragevariable', - noVar: 'Keine Variablen', - noVarTip: 'Bitte erstellen Sie eine Variable im Variablenbereich', - unableToQueryDataSet: 'Konnte das Wissen nicht abfragen', - unableToQueryDataSetTip: 'Konnte das Wissen nicht erfolgreich abfragen, bitte wählen Sie eine Kontextabfragevariable im Kontextbereich.', - ok: 'OK', - contextVarNotEmpty: 'Kontextabfragevariable darf nicht leer sein', - deleteContextVarTitle: 'Variable „{{varName}}“ löschen?', - deleteContextVarTip: 'Diese Variable wurde als Kontextabfragevariable festgelegt und deren Entfernung wird die normale Verwendung des Wissens beeinträchtigen. Wenn Sie sie trotzdem löschen müssen, wählen Sie sie bitte im Kontextbereich erneut.', - }, - }, - tools: { - title: 'Werkzeuge', - tips: 'Werkzeuge bieten eine standardisierte API-Aufrufmethode, die Benutzereingaben oder Variablen als Anfrageparameter für die Abfrage externer Daten als Kontext verwendet.', - toolsInUse: '{{count}} Werkzeuge in Verwendung', - modal: { - title: 'Werkzeug', - toolType: { - title: 'Werkzeugtyp', - placeholder: 'Bitte wählen Sie den Werkzeugtyp', - }, - name: { - title: 'Name', - placeholder: 'Bitte geben Sie den Namen ein', - }, - variableName: { - title: 'Variablenname', - placeholder: 'Bitte geben Sie den Variablennamen ein', - }, - }, - }, - conversationHistory: { - title: 'Konversationsverlauf', - description: 'Präfixnamen für Konversationsrollen festlegen', - tip: 'Der Konversationsverlauf ist nicht aktiviert, bitte fügen Sie im Prompt oben ein.', - learnMore: 'Mehr erfahren', - editModal: { - title: 'Konversationsrollennamen bearbeiten', - userPrefix: 'Benutzerpräfix', - assistantPrefix: 'Assistentenpräfix', - }, - }, - toolbox: { - title: 'WERKZEUGKASTEN', - }, - moderation: { - title: 'Inhaltsmoderation', - description: 'Sichern Sie die Ausgabe des Modells durch Verwendung der Moderations-API oder durch Pflege einer Liste sensibler Wörter.', - allEnabled: 'INHALT von EINGABE/AUSGABE aktiviert', - inputEnabled: 'INHALT von EINGABE aktiviert', - outputEnabled: 'INHALT von AUSGABE aktiviert', - modal: { - title: 'Einstellungen zur Inhaltsmoderation', - provider: { - title: 'Anbieter', - openai: 'OpenAI-Moderation', - openaiTip: { - prefix: 'OpenAI-Moderation erfordert einen konfigurierten OpenAI-API-Schlüssel in den ', - suffix: '.', - }, - keywords: 'Schlüsselwörter', - }, - keywords: { - tip: 'Jeweils eine pro Zeile, getrennt durch Zeilenumbrüche. Bis zu 100 Zeichen pro Zeile.', - placeholder: 'Jeweils eine pro Zeile, getrennt durch Zeilenumbrüche', - line: 'Zeile', - }, - content: { - input: 'INHALT der EINGABE moderieren', - output: 'INHALT der AUSGABE moderieren', - preset: 'Voreingestellte Antworten', - placeholder: 'Inhalt der voreingestellten Antworten hier', - condition: 'Moderation von INHALT der EINGABE und AUSGABE mindestens eine aktiviert', - fromApi: 'Voreingestellte Antworten werden durch API zurückgegeben', - errorMessage: 'Voreingestellte Antworten dürfen nicht leer sein', - supportMarkdown: 'Markdown unterstützt', - }, - openaiNotConfig: { - before: 'OpenAI-Moderation erfordert einen konfigurierten OpenAI-API-Schlüssel in den', - after: '', - }, - }, - contentEnableLabel: 'Inhaltsmoderation aktiviert', - }, - fileUpload: { - title: 'Datei-Upload', - description: 'Das Chat-Eingabefeld unterstützt das Hochladen von Bildern, Dokumenten und anderen Dateien.', - supportedTypes: 'Unterstützte Dateitypen', - numberLimit: 'Max. Uploads', - modalTitle: 'Datei-Upload-Einstellung', - }, - imageUpload: { - title: 'Bild-Upload', - description: 'Ermöglicht das Hochladen von Bildern.', - supportedTypes: 'Unterstützte Dateitypen', - numberLimit: 'Max. Uploads', - modalTitle: 'Bild-Upload-Einstellung', - }, - bar: { - empty: 'Funktionen aktivieren, um die Web-App-Benutzererfahrung zu verbessern', - enableText: 'Funktionen aktiviert', - manage: 'Verwalten', - }, - documentUpload: { - title: 'Dokument', - description: 'Das Aktivieren von Dokumenten ermöglicht es dem Modell, Dokumente aufzunehmen und Fragen zu ihnen zu beantworten.', - }, - audioUpload: { - title: 'Audio', - description: 'Das Aktivieren von Audio ermöglicht es dem Modell, Audiodateien für Transkription und Analyse zu verarbeiten.', - }, - }, - resetConfig: { - title: 'Zurücksetzen bestätigen?', - message: - 'Zurücksetzen verwirft Änderungen und stellt die zuletzt veröffentlichte Konfiguration wieder her.', - }, - errorMessage: { - nameOfKeyRequired: 'Name des Schlüssels: {{key}} erforderlich', - valueOfVarRequired: '{{key}} Wert darf nicht leer sein', - queryRequired: 'Anfragetext ist erforderlich.', - waitForResponse: - 'Bitte warten Sie auf die Antwort auf die vorherige Nachricht, um abzuschließen.', - waitForBatchResponse: - 'Bitte warten Sie auf die Antwort auf die Stapelaufgabe, um abzuschließen.', - notSelectModel: 'Bitte wählen Sie ein Modell', - waitForImgUpload: 'Bitte warten Sie, bis das Bild hochgeladen ist', - waitForFileUpload: 'Bitte warten Sie, bis die Datei(en) hochgeladen sind', - }, - chatSubTitle: 'Anweisungen', - completionSubTitle: 'Vor-Prompt', - promptTip: - 'Prompts leiten KI-Antworten mit Anweisungen und Einschränkungen. Fügen Sie Variablen wie {{input}} ein. Dieses Prompt wird den Benutzern nicht angezeigt.', - formattingChangedTitle: 'Formatierung geändert', - formattingChangedText: - 'Die Änderung der Formatierung wird den Debug-Bereich zurücksetzen, sind Sie sicher?', - variableTitle: 'Variablen', - variableTip: - 'Benutzer füllen Variablen in einem Formular aus, automatisches Ersetzen von Variablen im Prompt.', - notSetVar: 'Variablen ermöglichen es Benutzern, Aufforderungswörter oder Eröffnungsbemerkungen einzuführen, wenn sie Formulare ausfüllen. Sie könnten versuchen, "{{input}}" im Prompt einzugeben.', - autoAddVar: 'Im Vor-Prompt referenzierte undefinierte Variablen, möchten Sie sie im Benutzereingabeformular hinzufügen?', - variableTable: { - key: 'Variablenschlüssel', - name: 'Name des Benutzereingabefelds', - type: 'Eingabetyp', - action: 'Aktionen', - typeString: 'String', - typeSelect: 'Auswählen', - }, - varKeyError: { - canNoBeEmpty: '{{key}} ist erforderlich', - tooLong: '{{key}} zu lang. Darf nicht länger als 30 Zeichen sein', - notValid: '{{key}} ist ungültig. Darf nur Buchstaben, Zahlen und Unterstriche enthalten', - notStartWithNumber: '{{key}} darf nicht mit einer Zahl beginnen', - keyAlreadyExists: '{{key}} existiert bereits', - }, - otherError: { - promptNoBeEmpty: 'Prompt darf nicht leer sein', - historyNoBeEmpty: 'Konversationsverlauf muss im Prompt gesetzt sein', - queryNoBeEmpty: 'Anfrage muss im Prompt gesetzt sein', - }, - variableConfig: { - 'description': 'Einstellung für Variable {{varName}}', - 'fieldType': 'Feldtyp', - 'string': 'Kurztext', - 'paragraph': 'Absatz', - 'select': 'Auswählen', - 'notSet': 'Nicht gesetzt, versuchen Sie, {{input}} im Vor-Prompt zu tippen', - 'stringTitle': 'Formular-Textfeldoptionen', - 'maxLength': 'Maximale Länge', - 'options': 'Optionen', - 'addOption': 'Option hinzufügen', - 'apiBasedVar': 'API-basierte Variable', - 'defaultValue': 'Standardwert', - 'noDefaultValue': 'Kein Standardwert', - 'selectDefaultValue': 'Standardwert auswählen', - 'file': { - image: { - name: 'Bild', - }, - audio: { - name: 'Audio', - }, - document: { - name: 'Dokument', - }, - video: { - name: 'Video', - }, - custom: { - description: 'Geben Sie andere Dateitypen an.', - createPlaceholder: ' Dateiendung, z.B. .doc', - name: 'Andere Dateitypen', - }, - supportFileTypes: 'Unterstützte Dateitypen', - }, - 'errorMsg': { - optionRepeat: 'Hat Wiederholungsoptionen', - atLeastOneOption: 'Mindestens eine Option ist erforderlich', - labelNameRequired: 'Labelname ist erforderlich', - varNameCanBeRepeat: 'Variablenname kann nicht wiederholt werden', - }, - 'multi-files': 'Dateiliste', - 'varName': 'Variablenname', - 'content': 'Inhalt', - 'single-file': 'Einzelne Datei', - 'labelName': 'Kennsatzname', - 'addModalTitle': 'Eingabefeld hinzufügen', - 'hide': 'Verstecken', - 'inputPlaceholder': 'Bitte geben Sie ein', - 'both': 'Beide', - 'uploadFileTypes': 'Dateitypen hochladen', - 'maxNumberOfUploads': 'Maximale Anzahl von Uploads', - 'maxNumberTip': 'Dokument < {{docLimit}}, Bild < {{imgLimit}}, Audio < {{audioLimit}}, Video < {{videoLimit}}', - 'number': 'Zahl', - 'editModalTitle': 'Eingabefeld bearbeiten', - 'required': 'Erforderlich', - 'text-input': 'Kurztext', - 'localUpload': 'Lokaler Upload', - 'json': 'JSON-Code', - 'optional': 'optional', - 'checkbox': 'Checkbox', - 'jsonSchema': 'JSON-Schema', - 'tooltips': 'Tooltips', - 'placeholder': 'Platzhalter', - 'displayName': 'Anzeigename', - 'unit': 'Einheit', - 'showAllSettings': 'Alle Einstellungen anzeigen', - 'startChecked': 'Start aktiviert', - 'uploadMethod': 'Upload-Methode', - 'noDefaultSelected': 'Nicht auswählen', - 'defaultValuePlaceholder': 'Geben Sie den Standardwert ein, um das Feld vorab auszufüllen', - 'unitPlaceholder': 'Einheiten nach Zahlen anzeigen, z.B. Token', - 'startSelectedOption': 'Ausgewählte Option starten', - 'placeholderPlaceholder': 'Geben Sie Text ein, der angezeigt werden soll, wenn das Feld leer ist', - 'tooltipsPlaceholder': 'Geben Sie hilfreichen Text ein, der angezeigt wird, wenn Sie den Mauszeiger über die Beschriftung bewegen', - }, - vision: { - name: 'Vision', - description: 'Vision zu aktivieren ermöglicht es dem Modell, Bilder aufzunehmen und Fragen dazu zu beantworten.', - settings: 'Einstellungen', - visionSettings: { - title: 'Vision-Einstellungen', - resolution: 'Auflösung', - resolutionTooltip: 'Niedrige Auflösung ermöglicht es dem Modell, eine Bildversion mit niedriger Auflösung von 512 x 512 zu erhalten und das Bild mit einem Budget von 65 Tokens darzustellen. Dies ermöglicht schnellere Antworten des API und verbraucht weniger Eingabetokens für Anwendungsfälle, die kein hohes Detail benötigen.\nHohe Auflösung ermöglicht zunächst, dass das Modell das Bild mit niedriger Auflösung sieht und dann detaillierte Ausschnitte von Eingabebildern als 512px Quadrate basierend auf der Größe des Eingabebildes erstellt. Jeder der detaillierten Ausschnitte verwendet das doppelte Token-Budget für insgesamt 129 Tokens.', - high: 'Hoch', - low: 'Niedrig', - uploadMethod: 'Upload-Methode', - both: 'Beides', - localUpload: 'Lokaler Upload', - url: 'URL', - uploadLimit: 'Upload-Limit', - }, - onlySupportVisionModelTip: 'Unterstützt nur Bildverarbeitungsmodelle', - }, - voice: { - name: 'Stimme', - defaultDisplay: 'Standardstimme', - description: 'Text-zu-Sprache-Stimmeinstellungen', - settings: 'Einstellungen', - voiceSettings: { - title: 'Stimmeinstellungen', - language: 'Sprache', - resolutionTooltip: 'Text-zu-Sprache unterstützte Sprache.', - voice: 'Stimme', - autoPlay: 'Automatische Wiedergabe', - autoPlayEnabled: 'Auf', - autoPlayDisabled: 'Aus', - }, - }, - openingStatement: { - title: 'Gesprächseröffner', - add: 'Hinzufügen', - writeOpener: 'Eröffnung schreiben', - placeholder: 'Schreiben Sie hier Ihre Eröffnungsnachricht, Sie können Variablen verwenden, versuchen Sie {{Variable}} zu tippen.', - openingQuestionPlaceholder: 'Sie können Variablen verwenden, versuchen Sie {{variable}} einzugeben.', - openingQuestion: 'Eröffnungsfragen', - noDataPlaceHolder: - 'Den Dialog mit dem Benutzer zu beginnen, kann helfen, in konversationellen Anwendungen eine engere Verbindung mit ihnen herzustellen.', - varTip: 'Sie können Variablen verwenden, versuchen Sie {{Variable}} zu tippen', - tooShort: 'Für die Erzeugung von Eröffnungsbemerkungen für das Gespräch werden mindestens 20 Wörter des Anfangsprompts benötigt.', - notIncludeKey: 'Das Anfangsprompt enthält nicht die Variable: {{key}}. Bitte fügen Sie sie dem Anfangsprompt hinzu.', - }, - modelConfig: { - model: 'Modell', - setTone: 'Ton der Antworten festlegen', - title: 'Modell und Parameter', - modeType: { - chat: 'Chat', - completion: 'Vollständig', - }, - }, - inputs: { - title: 'Debug und Vorschau', - noPrompt: 'Versuchen Sie, etwas Prompt im Vor-Prompt-Eingabefeld zu schreiben', - userInputField: 'Benutzereingabefeld', - noVar: 'Füllen Sie den Wert der Variable aus, der bei jedem Start einer neuen Sitzung automatisch im Prompt ersetzt wird.', - chatVarTip: - 'Füllen Sie den Wert der Variable aus, der bei jedem Start einer neuen Sitzung automatisch im Prompt ersetzt wird', - completionVarTip: - 'Füllen Sie den Wert der Variable aus, der bei jeder Einreichung einer Frage automatisch in den Prompt-Wörtern ersetzt wird.', - previewTitle: 'Prompt-Vorschau', - queryTitle: 'Anfrageinhalt', - queryPlaceholder: 'Bitte geben Sie den Anfragetext ein.', - run: 'AUSFÜHREN', - }, - result: 'Ausgabetext', - datasetConfig: { - settingTitle: 'Abfragen-Einstellungen', - retrieveOneWay: { - title: 'N-zu-1-Abfrage', - description: 'Basierend auf Benutzerabsicht und Beschreibungen des Wissens wählt der Agent autonom das beste Wissen für die Abfrage aus. Am besten für Anwendungen mit deutlichen, begrenzten Wissensgebieten.', - }, - retrieveMultiWay: { - title: 'Mehrwegabfrage', - description: 'Basierend auf Benutzerabsicht werden Abfragen über alle Wissensbereiche hinweg durchgeführt, relevante Texte aus Mehrfachquellen abgerufen und die besten Ergebnisse, die der Benutzerabfrage entsprechen, nach einer Neubewertung ausgewählt. Konfiguration des Rerank-Modell-APIs erforderlich.', - }, - rerankModelRequired: 'Rerank-Modell erforderlich', - params: 'Parameter', - top_k: 'Top K', - top_kTip: 'Wird verwendet, um Abschnitte zu filtern, die am ähnlichsten zu Benutzerfragen sind. Das System wird auch dynamisch den Wert von Top K anpassen, entsprechend max_tokens des ausgewählten Modells.', - score_threshold: 'Schwellenwert', - score_thresholdTip: 'Wird verwendet, um den Ähnlichkeitsschwellenwert für die Abschnittsfilterung einzustellen.', - retrieveChangeTip: 'Das Ändern des Indexmodus und des Abfragemodus kann Anwendungen beeinflussen, die mit diesem Wissen verbunden sind.', - embeddingModelRequired: 'Ein konfiguriertes Einbettungsmodell ist erforderlich', - knowledgeTip: 'Klicken Sie auf die Schaltfläche " ", um Wissen hinzuzufügen', - }, - debugAsSingleModel: 'Als Einzelmodell debuggen', - debugAsMultipleModel: 'Als Mehrfachmodelle debuggen', - duplicateModel: 'Duplizieren', - publishAs: 'Veröffentlichen als', - assistantType: { - name: 'Assistententyp', - chatAssistant: { - name: 'Basisassistent', - description: 'Erstellen eines chatbasierten Assistenten mit einem Großsprachmodell', - }, - agentAssistant: { - name: 'Agentenassistent', - description: 'Erstellen eines intelligenten Agenten, der autonom Werkzeuge wählen kann, um Aufgaben zu erfüllen', - }, - }, - agent: { - agentMode: 'Agentenmodus', - agentModeDes: 'Den Typ des Inferenzmodus für den Agenten festlegen', - agentModeType: { - ReACT: 'ReAct', - functionCall: 'Funktionsaufruf', - }, - setting: { - name: 'Agenten-Einstellungen', - description: 'Agentenassistenten-Einstellungen ermöglichen die Festlegung des Agentenmodus und erweiterte Funktionen wie integrierte Prompts, nur verfügbar im Agententyp.', - maximumIterations: { - name: 'Maximale Iterationen', - description: 'Begrenzt die Anzahl der Iterationen, die ein Agentenassistent ausführen kann', - }, - }, - buildInPrompt: 'Eingebautes Prompt', - firstPrompt: 'Erstes Prompt', - nextIteration: 'Nächste Iteration', - promptPlaceholder: 'Schreiben Sie hier Ihr Prompt', - tools: { - name: 'Werkzeuge', - description: 'Die Verwendung von Werkzeugen kann die Fähigkeiten von LLM erweitern, z.B. das Internet durchsuchen oder wissenschaftliche Berechnungen durchführen', - enabled: 'Aktiviert', - }, - }, - codegen: { - applyChanges: 'Änderungen übernehmen', - generatedCodeTitle: 'Generierter Code', - instructionPlaceholder: 'Geben Sie eine detaillierte Beschreibung des Codes ein, den Sie generieren möchten.', - overwriteConfirmMessage: 'Durch diese Aktion wird der vorhandene Code überschrieben. Möchten Sie fortfahren?', - title: 'Codegenerator', - noDataLine1: 'Beschreiben Sie links Ihren Anwendungsfall,', - loading: 'Code wird generiert...', - resTitle: 'Generierter Code', - description: 'Der Code-Generator verwendet konfigurierte Modelle, um qualitativ hochwertigen Code basierend auf Ihren Anweisungen zu generieren. Bitte geben Sie klare und detaillierte Anweisungen.', - instruction: 'Anweisungen', - apply: 'Anwenden', - generate: 'Erzeugen', - overwriteConfirmTitle: 'Vorhandenen Code überschreiben?', - noDataLine2: 'Die Codevorschau wird hier angezeigt.', - }, - generate: { - template: { - pythonDebugger: { - instruction: 'Ein Bot, der Ihren Code basierend auf Ihren Anweisungen generieren und debuggen kann', - name: 'Python-Debugger', - }, - translation: { - instruction: 'Ein Übersetzer, der mehrere Sprachen übersetzen kann', - name: 'Übersetzung', - }, - professionalAnalyst: { - name: 'Professioneller Analyst', - instruction: 'Extrahieren Sie Erkenntnisse, identifizieren Sie Risiken und destillieren Sie wichtige Informationen aus langen Berichten in einem einzigen Memo', - }, - excelFormulaExpert: { - instruction: 'Ein Chatbot, der Anfängern helfen kann, Excel-Formeln basierend auf Benutzeranweisungen zu verstehen, zu verwenden und zu erstellen', - name: 'Excel-Formel-Experte', - }, - travelPlanning: { - instruction: 'Der Reiseplanungsassistent ist ein intelligentes Tool, mit dem Benutzer ihre Reisen mühelos planen können', - name: 'Reiseplanung', - }, - SQLSorcerer: { - name: 'SQL-Zauberer', - instruction: 'Verwandeln Sie alltägliche Sprache in SQL-Abfragen', - }, - GitGud: { - name: 'Git gud', - instruction: 'Generieren geeigneter Git-Befehle basierend auf vom Benutzer beschriebenen Aktionen zur Versionskontrolle', - }, - meetingTakeaways: { - instruction: 'Fassen Sie Meetings in prägnante Zusammenfassungen zusammen, die Diskussionsthemen, wichtige Erkenntnisse und Aktionspunkte enthalten', - name: 'Takeaways für Meetings', - }, - writingsPolisher: { - instruction: 'Verwenden Sie fortgeschrittene Lektoratstechniken, um Ihre Texte zu verbessern', - name: 'Polierer für Schreibstil', - }, - }, - title: 'Eingabeaufforderungs-Generator', - apply: 'Anwenden', - overwriteTitle: 'Vorhandene Konfiguration überschreiben?', - instruction: 'Anweisungen', - tryIt: 'Versuch es', - generate: 'Erzeugen', - overwriteMessage: 'Durch Anwenden dieser Eingabeaufforderung wird die vorhandene Konfiguration überschrieben.', - loading: 'Orchestrieren Sie die Anwendung für Sie...', - resTitle: 'Generierte Eingabeaufforderung', - description: 'Der Eingabeaufforderungsgenerator verwendet das konfigurierte Modell, um Eingabeaufforderungen für eine höhere Qualität und bessere Struktur zu optimieren. Bitte schreiben Sie klare und detaillierte Anweisungen.', - version: 'Version', - dismiss: 'Ablehnen', - idealOutput: 'Ideale Ausgabe', - optional: 'Optional', - insertContext: 'Kontext einfügen', - to: 'zu', - optimizationNote: 'Optimierungsanmerkung', - press: 'Drücken', - versions: 'Versionen', - instructionPlaceHolderLine2: 'Das Ausgabeformat ist inkorrekt, bitte halten Sie sich strikt an das JSON-Format.', - latest: 'Neueste', - optimizePromptTooltip: 'Optimieren im Eingabeaufforderungsgenerator', - idealOutputPlaceholder: 'Beschreiben Sie Ihr ideales Antwortformat, die Länge, den Ton und die Inhaltsanforderungen...', - newNoDataLine1: 'Schreiben Sie eine Anweisung in die linke Spalte und klicken Sie auf Generieren, um die Antwort zu sehen.', - codeGenInstructionPlaceHolderLine: 'Je detaillierter das Feedback ist, wie zum Beispiel die Datentypen der Eingabe und Ausgabe sowie die Verarbeitung der Variablen, desto genauer wird die Codegenerierung sein.', - instructionPlaceHolderLine1: 'Machen Sie die Ausgabe prägnanter und bewahren Sie die wichtigsten Punkte.', - instructionPlaceHolderTitle: 'Beschreiben Sie, wie Sie diesen Prompt verbessern möchten. Zum Beispiel:', - instructionPlaceHolderLine3: 'Der Ton ist zu scharf, bitte machen Sie ihn freundlicher.', - }, - warningMessage: { - timeoutExceeded: 'Die Ergebnisse werden aufgrund einer Zeitüberschreitung nicht angezeigt. Bitte beziehen Sie sich auf die Protokolle, um die vollständigen Ergebnisse zu erhalten.', - }, - noResult: 'Hier wird die Ausgabe angezeigt.', -} - -export default translation diff --git a/web/i18n/de-DE/app-log.json b/web/i18n/de-DE/app-log.json new file mode 100644 index 0000000000..e143c454ec --- /dev/null +++ b/web/i18n/de-DE/app-log.json @@ -0,0 +1,110 @@ +{ + "title": "Protokolle", + "description": "Die Protokolle zeichnen den Betriebsstatus der Anwendung auf, einschließlich Benutzereingaben und KI-Antworten.", + "dateTimeFormat": "MM/DD/YYYY hh:mm:ss A", + "dateFormat": "MM/DD/YYYY", + "table": { + "header": { + "updatedTime": "Aktualisierungszeit", + "time": "Erstellungszeit", + "endUser": "Endbenutzer oder Konto", + "input": "Eingabe", + "output": "Ausgabe", + "summary": "Titel", + "messageCount": "Nachrichtenzahl", + "userRate": "Benutzerbewertung", + "adminRate": "Op. Bewertung", + "user": "Endbenutzer oder Konto", + "status": "STATUS", + "runtime": "LAUFZEIT", + "version": "VERSION", + "tokens": "TOKEN", + "startTime": "STARTZEIT", + "triggered_from": "AUSGELÖST DURCH" + }, + "pagination": { + "previous": "Vorherige", + "next": "Nächste" + }, + "empty": { + "noChat": "Noch keine Konversation", + "noOutput": "Keine Ausgabe", + "element": { + "title": "Ist da jemand?", + "content": "Beobachten und annotieren Sie hier die Interaktionen zwischen Endbenutzern und KI-Anwendungen, um die Genauigkeit der KI kontinuierlich zu verbessern. Sie können versuchen, die Web-App selbst zu teilen oder zu testen, und dann zu dieser Seite zurückkehren." + } + } + }, + "detail": { + "time": "Zeit", + "conversationId": "Konversations-ID", + "promptTemplate": "Prompt-Vorlage", + "promptTemplateBeforeChat": "Prompt-Vorlage vor dem Chat · Als Systemnachricht", + "annotationTip": "Verbesserungen markiert von {{user}}", + "timeConsuming": "", + "second": "s", + "tokenCost": "Verbrauchte Token", + "loading": "lädt", + "operation": { + "like": "gefällt mir", + "dislike": "gefällt mir nicht", + "addAnnotation": "Verbesserung hinzufügen", + "editAnnotation": "Verbesserung bearbeiten", + "annotationPlaceholder": "Geben Sie die erwartete Antwort ein, die Sie möchten, dass die KI antwortet, welche für die Feinabstimmung des Modells und die kontinuierliche Verbesserung der Qualität der Textgenerierung in Zukunft verwendet werden kann." + }, + "variables": "Variablen", + "uploadImages": "Hochgeladene Bilder", + "modelParams": "Modellparameter" + }, + "filter": { + "period": { + "today": "Heute", + "last7days": "Letzte 7 Tage", + "last4weeks": "Letzte 4 Wochen", + "last3months": "Letzte 3 Monate", + "last12months": "Letzte 12 Monate", + "monthToDate": "Monat bis heute", + "quarterToDate": "Quartal bis heute", + "yearToDate": "Jahr bis heute", + "allTime": "Gesamte Zeit", + "last30days": "Letzte 30 Tage", + "custom": "Benutzerdefiniert" + }, + "annotation": { + "all": "Alle", + "annotated": "Markierte Verbesserungen ({{count}} Elemente)", + "not_annotated": "Nicht annotiert" + }, + "sortBy": "Sortieren nach:", + "descending": "absteigend", + "ascending": "aufsteigend" + }, + "workflowTitle": "Workflow-Protokolle", + "workflowSubtitle": "Das Protokoll hat den Vorgang von Automate aufgezeichnet.", + "runDetail": { + "title": "Konversationsprotokoll", + "workflowTitle": "Protokolldetail", + "fileListLabel": "Details zur Datei", + "fileListDetail": "Detail", + "testWithParams": "Test mit Parametern" + }, + "promptLog": "Prompt-Protokoll", + "agentLog": "Agentenprotokoll", + "viewLog": "Protokoll anzeigen", + "agentLogDetail": { + "agentMode": "Agentenmodus", + "toolUsed": "Verwendetes Werkzeug", + "iterations": "Iterationen", + "iteration": "Iteration", + "finalProcessing": "Endverarbeitung" + }, + "triggerBy": { + "debugging": "Fehlerbehebung", + "appRun": "Webanwendung", + "webhook": "Webhook", + "schedule": "Zeitplan", + "plugin": "Plugin", + "ragPipelineRun": "RAG-Pipeline", + "ragPipelineDebugging": "RAG-Debugging" + } +} diff --git a/web/i18n/de-DE/app-log.ts b/web/i18n/de-DE/app-log.ts deleted file mode 100644 index 5c1232dfe8..0000000000 --- a/web/i18n/de-DE/app-log.ts +++ /dev/null @@ -1,112 +0,0 @@ -const translation = { - title: 'Protokolle', - description: 'Die Protokolle zeichnen den Betriebsstatus der Anwendung auf, einschließlich Benutzereingaben und KI-Antworten.', - dateTimeFormat: 'MM/DD/YYYY hh:mm:ss A', - dateFormat: 'MM/DD/YYYY', - table: { - header: { - updatedTime: 'Aktualisierungszeit', - time: 'Erstellungszeit', - endUser: 'Endbenutzer oder Konto', - input: 'Eingabe', - output: 'Ausgabe', - summary: 'Titel', - messageCount: 'Nachrichtenzahl', - userRate: 'Benutzerbewertung', - adminRate: 'Op. Bewertung', - user: 'Endbenutzer oder Konto', - status: 'STATUS', - runtime: 'LAUFZEIT', - version: 'VERSION', - tokens: 'TOKEN', - startTime: 'STARTZEIT', - triggered_from: 'AUSGELÖST DURCH', - }, - pagination: { - previous: 'Vorherige', - next: 'Nächste', - }, - empty: { - noChat: 'Noch keine Konversation', - noOutput: 'Keine Ausgabe', - element: { - title: 'Ist da jemand?', - content: 'Beobachten und annotieren Sie hier die Interaktionen zwischen Endbenutzern und KI-Anwendungen, um die Genauigkeit der KI kontinuierlich zu verbessern. Sie können versuchen, die Web-App selbst zu teilen oder zu testen, und dann zu dieser Seite zurückkehren.', - }, - }, - }, - detail: { - time: 'Zeit', - conversationId: 'Konversations-ID', - promptTemplate: 'Prompt-Vorlage', - promptTemplateBeforeChat: 'Prompt-Vorlage vor dem Chat · Als Systemnachricht', - annotationTip: 'Verbesserungen markiert von {{user}}', - timeConsuming: '', - second: 's', - tokenCost: 'Verbrauchte Token', - loading: 'lädt', - operation: { - like: 'gefällt mir', - dislike: 'gefällt mir nicht', - addAnnotation: 'Verbesserung hinzufügen', - editAnnotation: 'Verbesserung bearbeiten', - annotationPlaceholder: 'Geben Sie die erwartete Antwort ein, die Sie möchten, dass die KI antwortet, welche für die Feinabstimmung des Modells und die kontinuierliche Verbesserung der Qualität der Textgenerierung in Zukunft verwendet werden kann.', - }, - variables: 'Variablen', - uploadImages: 'Hochgeladene Bilder', - modelParams: 'Modellparameter', - }, - filter: { - period: { - today: 'Heute', - last7days: 'Letzte 7 Tage', - last4weeks: 'Letzte 4 Wochen', - last3months: 'Letzte 3 Monate', - last12months: 'Letzte 12 Monate', - monthToDate: 'Monat bis heute', - quarterToDate: 'Quartal bis heute', - yearToDate: 'Jahr bis heute', - allTime: 'Gesamte Zeit', - last30days: 'Letzte 30 Tage', - custom: 'Benutzerdefiniert', - }, - annotation: { - all: 'Alle', - annotated: 'Markierte Verbesserungen ({{count}} Elemente)', - not_annotated: 'Nicht annotiert', - }, - sortBy: 'Sortieren nach:', - descending: 'absteigend', - ascending: 'aufsteigend', - }, - workflowTitle: 'Workflow-Protokolle', - workflowSubtitle: 'Das Protokoll hat den Vorgang von Automate aufgezeichnet.', - runDetail: { - title: 'Konversationsprotokoll', - workflowTitle: 'Protokolldetail', - fileListLabel: 'Details zur Datei', - fileListDetail: 'Detail', - testWithParams: 'Test mit Parametern', - }, - promptLog: 'Prompt-Protokoll', - agentLog: 'Agentenprotokoll', - viewLog: 'Protokoll anzeigen', - agentLogDetail: { - agentMode: 'Agentenmodus', - toolUsed: 'Verwendetes Werkzeug', - iterations: 'Iterationen', - iteration: 'Iteration', - finalProcessing: 'Endverarbeitung', - }, - triggerBy: { - debugging: 'Fehlerbehebung', - appRun: 'Webanwendung', - webhook: 'Webhook', - schedule: 'Zeitplan', - plugin: 'Plugin', - ragPipelineRun: 'RAG-Pipeline', - ragPipelineDebugging: 'RAG-Debugging', - }, -} - -export default translation diff --git a/web/i18n/de-DE/app-overview.json b/web/i18n/de-DE/app-overview.json new file mode 100644 index 0000000000..5f9b246f32 --- /dev/null +++ b/web/i18n/de-DE/app-overview.json @@ -0,0 +1,187 @@ +{ + "welcome": { + "firstStepTip": "Um zu beginnen,", + "enterKeyTip": "geben Sie unten Ihren OpenAI-API-Schlüssel ein", + "getKeyTip": "Holen Sie sich Ihren API-Schlüssel vom OpenAI-Dashboard", + "placeholder": "Ihr OpenAI-API-Schlüssel (z.B. sk-xxxx)" + }, + "apiKeyInfo": { + "cloud": { + "trial": { + "title": "Sie nutzen das Testkontingent von {{providerName}}.", + "description": "Das Testkontingent wird für Ihre Testnutzung bereitgestellt. Bevor das Testkontingent aufgebraucht ist, richten Sie bitte Ihren eigenen Modellanbieter ein oder kaufen zusätzliches Kontingent." + }, + "exhausted": { + "title": "Ihr Testkontingent wurde aufgebraucht, bitte richten Sie Ihren APIKey ein.", + "description": "Ihr Testkontingent ist aufgebraucht. Bitte richten Sie Ihren eigenen Modellanbieter ein oder kaufen zusätzliches Kontingent." + } + }, + "selfHost": { + "title": { + "row1": "Um zu beginnen,", + "row2": "richten Sie zuerst Ihren Modellanbieter ein." + } + }, + "callTimes": "Aufrufzeiten", + "usedToken": "Verwendetes Token", + "setAPIBtn": "Zum Einrichten des Modellanbieters gehen", + "tryCloud": "Oder probieren Sie die Cloud-Version von Dify mit kostenlosem Angebot aus" + }, + "overview": { + "title": "Übersicht", + "appInfo": { + "explanation": "Einsatzbereite AI-web app", + "accessibleAddress": "Öffentliche URL", + "preview": "Vorschau", + "regenerate": "Regenerieren", + "regenerateNotice": "Möchten Sie die öffentliche URL neu generieren?", + "preUseReminder": "Bitte aktivieren Sie web app, bevor Sie fortfahren.", + "settings": { + "entry": "Einstellungen", + "title": "web app Einstellungen", + "webName": "web app Name", + "webDesc": "web app Beschreibung", + "webDescTip": "Dieser Text wird auf der Clientseite angezeigt und bietet grundlegende Anleitungen zur Verwendung der Anwendung", + "webDescPlaceholder": "Geben Sie die Beschreibung der web app ein", + "language": "Sprache", + "workflow": { + "title": "Workflow-Schritte", + "show": "Anzeigen", + "hide": "Verbergen", + "subTitle": "Details zum Arbeitsablauf", + "showDesc": "Ein- oder Ausblenden von Workflow-Details in der web app" + }, + "chatColorTheme": "Chat-Farbschema", + "chatColorThemeDesc": "Legen Sie das Farbschema des Chatbots fest", + "chatColorThemeInverted": "Invertiert", + "invalidHexMessage": "Ungültiger Hex-Wert", + "invalidPrivacyPolicy": "Ungültiger Link zur Datenschutzrichtlinie. Bitte verwenden Sie einen gültigen Link, der mit http oder https beginnt", + "more": { + "entry": "Mehr Einstellungen anzeigen", + "copyright": "Urheberrecht", + "copyRightPlaceholder": "Geben Sie den Namen des Autors oder der Organisation ein", + "privacyPolicy": "Datenschutzrichtlinie", + "privacyPolicyPlaceholder": "Geben Sie den Link zur Datenschutzrichtlinie ein", + "privacyPolicyTip": "Hilft Besuchern zu verstehen, welche Daten die Anwendung sammelt, siehe Difys Datenschutzrichtlinie.", + "customDisclaimer": "Benutzerdefinierte Haftungsausschluss", + "customDisclaimerPlaceholder": "Geben Sie den benutzerdefinierten Haftungsausschluss-Text ein", + "customDisclaimerTip": "Der ben userdefinierte Haftungsausschluss-Text wird auf der Clientseite angezeigt und bietet zusätzliche Informationen über die Anwendung", + "copyrightTip": "Copyright-Informationen in der Webapp anzeigen", + "copyrightTooltip": "Bitte führen Sie ein Upgrade auf den Professional-Plan oder höher durch" + }, + "sso": { + "title": "web app SSO", + "description": "Alle Benutzer müssen sich mit SSO anmelden, bevor sie web app verwenden können", + "label": "SSO-Authentifizierung", + "tooltip": "Wenden Sie sich an den Administrator, um web app SSO zu aktivieren" + }, + "modalTip": "Einstellungen für clientseitige Web-Apps." + }, + "embedded": { + "entry": "Eingebettet", + "title": "Einbetten auf der Website", + "explanation": "Wählen Sie die Art und Weise, wie die Chat-App auf Ihrer Website eingebettet wird", + "iframe": "Um die Chat-App an einer beliebigen Stelle auf Ihrer Website hinzuzufügen, fügen Sie diesen iframe in Ihren HTML-Code ein.", + "scripts": "Um eine Chat-App unten rechts auf Ihrer Website hinzuzufügen, fügen Sie diesen Code in Ihren HTML-Code ein.", + "chromePlugin": "Installieren Sie die Dify Chatbot Chrome-Erweiterung", + "copied": "Kopiert", + "copy": "Kopieren" + }, + "qrcode": { + "title": "QR-Code zum Teilen", + "scan": "Teilen Sie die Anwendung per Scan", + "download": "QR-Code herunterladen" + }, + "customize": { + "way": "Art", + "entry": "Anpassen", + "title": "AI-web app anpassen", + "explanation": "Sie können das Frontend der Web-App an Ihre Szenarien und Stilbedürfnisse anpassen.", + "way1": { + "name": "Forken Sie den Client-Code, ändern Sie ihn und deployen Sie ihn auf Vercel (empfohlen)", + "step1": "Forken Sie den Client-Code und ändern Sie ihn", + "step1Tip": "Klicken Sie hier, um den Quellcode in Ihr GitHub-Konto zu forken und den Code zu ändern", + "step1Operation": "Dify-WebClient", + "step2": "Deployen auf Vercel", + "step2Tip": "Klicken Sie hier, um das Repository in Vercel zu importieren und zu deployen", + "step2Operation": "Repository importieren", + "step3": "Umgebungsvariablen konfigurieren", + "step3Tip": "Fügen Sie die folgenden Umgebungsvariablen in Vercel hinzu" + }, + "way2": { + "name": "Clientseitigen Code schreiben, um die API aufzurufen, und ihn auf einem Server deployen", + "operation": "Dokumentation" + } + }, + "launch": "Abschießen", + "enableTooltip": { + "description": "Um diese Funktion zu aktivieren, fügen Sie bitte einen Benutzer-Eingabe-Knoten zum Canvas hinzu. (Kann sich bereits im Entwurf befinden, wird nach der Veröffentlichung wirksam)", + "learnMore": "Mehr erfahren" + }, + "title": "Webanwendung" + }, + "apiInfo": { + "title": "Backend-Service-API", + "explanation": "Einfach in Ihre Anwendung integrierbar", + "accessibleAddress": "Service-API-Endpunkt", + "doc": "API-Referenz" + }, + "status": { + "running": "In Betrieb", + "disable": "Deaktivieren" + }, + "triggerInfo": { + "title": "Auslöser", + "explanation": "Verwaltung von Workflow-Triggern", + "triggersAdded": "{{count}} Auslöser hinzugefügt", + "noTriggerAdded": "Kein Auslöser hinzugefügt", + "triggerStatusDescription": "Der Status des Trigger-Knotens wird hier angezeigt. (Kann bereits im Entwurf vorhanden sein, tritt nach der Veröffentlichung in Kraft)", + "learnAboutTriggers": "Erfahren Sie mehr über Auslöser" + }, + "disableTooltip": { + "triggerMode": "Die Funktion {{feature}} wird im Trigger-Knoten-Modus nicht unterstützt." + } + }, + "analysis": { + "title": "Analyse", + "ms": "ms", + "tokenPS": "Token/s", + "totalMessages": { + "title": "Gesamtnachrichten", + "explanation": "Tägliche Anzahl der KI-Interaktionen." + }, + "totalConversations": { + "title": "Gesamte Konversationen", + "explanation": "Tägliche Anzahl der KI-Konversationen; Prompt-Engineering/Debugging ausgeschlossen." + }, + "activeUsers": { + "title": "Aktive Benutzer", + "explanation": "Einzigartige Benutzer, die mit AI Q&A führen; Prompt-Engineering/Debugging ausgenommen." + }, + "tokenUsage": { + "title": "Token-Verbrauch", + "explanation": "Spiegelt den täglichen Token-Verbrauch des Sprachmodells für die Anwendung wider, nützlich für Kostenkontrollzwecke.", + "consumed": "Verbraucht" + }, + "avgSessionInteractions": { + "title": "Durchschn. Sitzungsinteraktionen", + "explanation": "Fortlaufende Benutzer-KI-Kommunikationszählung; für konversationsbasierte Apps." + }, + "userSatisfactionRate": { + "title": "Benutzerzufriedenheitsrate", + "explanation": "Die Anzahl der Likes pro 1.000 Nachrichten. Dies zeigt den Anteil der Antworten an, mit denen die Benutzer sehr zufrieden sind." + }, + "avgResponseTime": { + "title": "Durchschn. Antwortzeit", + "explanation": "Zeit (ms) für die AI, um zu verarbeiten/antworten; für textbasierte Apps." + }, + "tps": { + "title": "Token-Ausgabegeschwindigkeit", + "explanation": "Misst die Leistung des LLM. Zählt die Token-Ausgabegeschwindigkeit des LLM vom Beginn der Anfrage bis zum Abschluss der Ausgabe." + }, + "avgUserInteractions": { + "explanation": "Spiegelt die tägliche Nutzungshäufigkeit der Benutzer wider. Diese Metrik spiegelt die Bindung der Benutzer wider.", + "title": "Durchschnittliche Benutzerinteraktionen" + } + } +} diff --git a/web/i18n/de-DE/app-overview.ts b/web/i18n/de-DE/app-overview.ts deleted file mode 100644 index c27ac0c181..0000000000 --- a/web/i18n/de-DE/app-overview.ts +++ /dev/null @@ -1,189 +0,0 @@ -const translation = { - welcome: { - firstStepTip: 'Um zu beginnen,', - enterKeyTip: 'geben Sie unten Ihren OpenAI-API-Schlüssel ein', - getKeyTip: 'Holen Sie sich Ihren API-Schlüssel vom OpenAI-Dashboard', - placeholder: 'Ihr OpenAI-API-Schlüssel (z.B. sk-xxxx)', - }, - apiKeyInfo: { - cloud: { - trial: { - title: 'Sie nutzen das Testkontingent von {{providerName}}.', - description: 'Das Testkontingent wird für Ihre Testnutzung bereitgestellt. Bevor das Testkontingent aufgebraucht ist, richten Sie bitte Ihren eigenen Modellanbieter ein oder kaufen zusätzliches Kontingent.', - }, - exhausted: { - title: 'Ihr Testkontingent wurde aufgebraucht, bitte richten Sie Ihren APIKey ein.', - description: 'Ihr Testkontingent ist aufgebraucht. Bitte richten Sie Ihren eigenen Modellanbieter ein oder kaufen zusätzliches Kontingent.', - }, - }, - selfHost: { - title: { - row1: 'Um zu beginnen,', - row2: 'richten Sie zuerst Ihren Modellanbieter ein.', - }, - }, - callTimes: 'Aufrufzeiten', - usedToken: 'Verwendetes Token', - setAPIBtn: 'Zum Einrichten des Modellanbieters gehen', - tryCloud: 'Oder probieren Sie die Cloud-Version von Dify mit kostenlosem Angebot aus', - }, - overview: { - title: 'Übersicht', - appInfo: { - explanation: 'Einsatzbereite AI-web app', - accessibleAddress: 'Öffentliche URL', - preview: 'Vorschau', - regenerate: 'Regenerieren', - regenerateNotice: 'Möchten Sie die öffentliche URL neu generieren?', - preUseReminder: 'Bitte aktivieren Sie web app, bevor Sie fortfahren.', - settings: { - entry: 'Einstellungen', - title: 'web app Einstellungen', - webName: 'web app Name', - webDesc: 'web app Beschreibung', - webDescTip: 'Dieser Text wird auf der Clientseite angezeigt und bietet grundlegende Anleitungen zur Verwendung der Anwendung', - webDescPlaceholder: 'Geben Sie die Beschreibung der web app ein', - language: 'Sprache', - workflow: { - title: 'Workflow-Schritte', - show: 'Anzeigen', - hide: 'Verbergen', - subTitle: 'Details zum Arbeitsablauf', - showDesc: 'Ein- oder Ausblenden von Workflow-Details in der web app', - }, - chatColorTheme: 'Chat-Farbschema', - chatColorThemeDesc: 'Legen Sie das Farbschema des Chatbots fest', - chatColorThemeInverted: 'Invertiert', - invalidHexMessage: 'Ungültiger Hex-Wert', - invalidPrivacyPolicy: 'Ungültiger Link zur Datenschutzrichtlinie. Bitte verwenden Sie einen gültigen Link, der mit http oder https beginnt', - more: { - entry: 'Mehr Einstellungen anzeigen', - copyright: 'Urheberrecht', - copyRightPlaceholder: 'Geben Sie den Namen des Autors oder der Organisation ein', - privacyPolicy: 'Datenschutzrichtlinie', - privacyPolicyPlaceholder: 'Geben Sie den Link zur Datenschutzrichtlinie ein', - privacyPolicyTip: 'Hilft Besuchern zu verstehen, welche Daten die Anwendung sammelt, siehe Difys Datenschutzrichtlinie.', - customDisclaimer: 'Benutzerdefinierte Haftungsausschluss', - customDisclaimerPlaceholder: 'Geben Sie den benutzerdefinierten Haftungsausschluss-Text ein', - customDisclaimerTip: 'Der ben userdefinierte Haftungsausschluss-Text wird auf der Clientseite angezeigt und bietet zusätzliche Informationen über die Anwendung', - copyrightTip: 'Copyright-Informationen in der Webapp anzeigen', - copyrightTooltip: 'Bitte führen Sie ein Upgrade auf den Professional-Plan oder höher durch', - }, - sso: { - title: 'web app SSO', - description: 'Alle Benutzer müssen sich mit SSO anmelden, bevor sie web app verwenden können', - label: 'SSO-Authentifizierung', - tooltip: 'Wenden Sie sich an den Administrator, um web app SSO zu aktivieren', - }, - modalTip: 'Einstellungen für clientseitige Web-Apps.', - }, - embedded: { - entry: 'Eingebettet', - title: 'Einbetten auf der Website', - explanation: 'Wählen Sie die Art und Weise, wie die Chat-App auf Ihrer Website eingebettet wird', - iframe: 'Um die Chat-App an einer beliebigen Stelle auf Ihrer Website hinzuzufügen, fügen Sie diesen iframe in Ihren HTML-Code ein.', - scripts: 'Um eine Chat-App unten rechts auf Ihrer Website hinzuzufügen, fügen Sie diesen Code in Ihren HTML-Code ein.', - chromePlugin: 'Installieren Sie die Dify Chatbot Chrome-Erweiterung', - copied: 'Kopiert', - copy: 'Kopieren', - }, - qrcode: { - title: 'QR-Code zum Teilen', - scan: 'Teilen Sie die Anwendung per Scan', - download: 'QR-Code herunterladen', - }, - customize: { - way: 'Art', - entry: 'Anpassen', - title: 'AI-web app anpassen', - explanation: 'Sie können das Frontend der Web-App an Ihre Szenarien und Stilbedürfnisse anpassen.', - way1: { - name: 'Forken Sie den Client-Code, ändern Sie ihn und deployen Sie ihn auf Vercel (empfohlen)', - step1: 'Forken Sie den Client-Code und ändern Sie ihn', - step1Tip: 'Klicken Sie hier, um den Quellcode in Ihr GitHub-Konto zu forken und den Code zu ändern', - step1Operation: 'Dify-WebClient', - step2: 'Deployen auf Vercel', - step2Tip: 'Klicken Sie hier, um das Repository in Vercel zu importieren und zu deployen', - step2Operation: 'Repository importieren', - step3: 'Umgebungsvariablen konfigurieren', - step3Tip: 'Fügen Sie die folgenden Umgebungsvariablen in Vercel hinzu', - }, - way2: { - name: 'Clientseitigen Code schreiben, um die API aufzurufen, und ihn auf einem Server deployen', - operation: 'Dokumentation', - }, - }, - launch: 'Abschießen', - enableTooltip: { - description: 'Um diese Funktion zu aktivieren, fügen Sie bitte einen Benutzer-Eingabe-Knoten zum Canvas hinzu. (Kann sich bereits im Entwurf befinden, wird nach der Veröffentlichung wirksam)', - learnMore: 'Mehr erfahren', - }, - title: 'Webanwendung', - }, - apiInfo: { - title: 'Backend-Service-API', - explanation: 'Einfach in Ihre Anwendung integrierbar', - accessibleAddress: 'Service-API-Endpunkt', - doc: 'API-Referenz', - }, - status: { - running: 'In Betrieb', - disable: 'Deaktivieren', - }, - triggerInfo: { - title: 'Auslöser', - explanation: 'Verwaltung von Workflow-Triggern', - triggersAdded: '{{count}} Auslöser hinzugefügt', - noTriggerAdded: 'Kein Auslöser hinzugefügt', - triggerStatusDescription: 'Der Status des Trigger-Knotens wird hier angezeigt. (Kann bereits im Entwurf vorhanden sein, tritt nach der Veröffentlichung in Kraft)', - learnAboutTriggers: 'Erfahren Sie mehr über Auslöser', - }, - disableTooltip: { - triggerMode: 'Die Funktion {{feature}} wird im Trigger-Knoten-Modus nicht unterstützt.', - }, - }, - analysis: { - title: 'Analyse', - ms: 'ms', - tokenPS: 'Token/s', - totalMessages: { - title: 'Gesamtnachrichten', - explanation: 'Tägliche Anzahl der KI-Interaktionen.', - }, - totalConversations: { - title: 'Gesamte Konversationen', - explanation: 'Tägliche Anzahl der KI-Konversationen; Prompt-Engineering/Debugging ausgeschlossen.', - }, - activeUsers: { - title: 'Aktive Benutzer', - explanation: 'Einzigartige Benutzer, die mit AI Q&A führen; Prompt-Engineering/Debugging ausgenommen.', - }, - tokenUsage: { - title: 'Token-Verbrauch', - explanation: 'Spiegelt den täglichen Token-Verbrauch des Sprachmodells für die Anwendung wider, nützlich für Kostenkontrollzwecke.', - consumed: 'Verbraucht', - }, - avgSessionInteractions: { - title: 'Durchschn. Sitzungsinteraktionen', - explanation: 'Fortlaufende Benutzer-KI-Kommunikationszählung; für konversationsbasierte Apps.', - }, - userSatisfactionRate: { - title: 'Benutzerzufriedenheitsrate', - explanation: 'Die Anzahl der Likes pro 1.000 Nachrichten. Dies zeigt den Anteil der Antworten an, mit denen die Benutzer sehr zufrieden sind.', - }, - avgResponseTime: { - title: 'Durchschn. Antwortzeit', - explanation: 'Zeit (ms) für die AI, um zu verarbeiten/antworten; für textbasierte Apps.', - }, - tps: { - title: 'Token-Ausgabegeschwindigkeit', - explanation: 'Misst die Leistung des LLM. Zählt die Token-Ausgabegeschwindigkeit des LLM vom Beginn der Anfrage bis zum Abschluss der Ausgabe.', - }, - avgUserInteractions: { - explanation: 'Spiegelt die tägliche Nutzungshäufigkeit der Benutzer wider. Diese Metrik spiegelt die Bindung der Benutzer wider.', - title: 'Durchschnittliche Benutzerinteraktionen', - }, - }, -} - -export default translation diff --git a/web/i18n/de-DE/app.json b/web/i18n/de-DE/app.json new file mode 100644 index 0000000000..4328890dbc --- /dev/null +++ b/web/i18n/de-DE/app.json @@ -0,0 +1,346 @@ +{ + "createApp": "Neue App erstellen", + "types": { + "all": "Alle", + "completion": "Vervollständigung", + "workflow": "Arbeitsablauf", + "agent": "Agent", + "chatbot": "Chatbot", + "basic": "Grundlegend", + "advanced": "Chatflow" + }, + "modes": {}, + "createFromConfigFile": "App aus Konfigurationsdatei erstellen", + "deleteAppConfirmTitle": "Diese App löschen?", + "deleteAppConfirmContent": "Das Löschen der App ist unwiderruflich. Nutzer werden keinen Zugang mehr zu Ihrer App haben, und alle Prompt-Konfigurationen und Logs werden dauerhaft gelöscht.", + "appDeleted": "App gelöscht", + "appDeleteFailed": "Löschen der App fehlgeschlagen", + "join": "Treten Sie der Gemeinschaft bei", + "communityIntro": "Diskutieren Sie mit Teammitgliedern, Mitwirkenden und Entwicklern auf verschiedenen Kanälen.", + "roadmap": "Sehen Sie unseren Fahrplan", + "newApp": { + "captionName": "App-Symbol & Name", + "previewDemo": "Vorschau-Demo", + "chatApp": "Assistent", + "chatAppIntro": "Ich möchte eine Chat-basierte Anwendung bauen. Diese App verwendet ein Frage-Antwort-Format und ermöglicht mehrere Runden kontinuierlicher Konversation.", + "agentAssistant": "Neuer Agentenassistent", + "completeApp": "Textgenerator", + "completeAppIntro": "Ich möchte eine Anwendung erstellen, die hochwertigen Text basierend auf Aufforderungen generiert, wie z.B. das Erstellen von Artikeln, Zusammenfassungen, Übersetzungen und mehr.", + "showTemplates": "Ich möchte aus einer Vorlage wählen", + "hideTemplates": "Zurück zur Modusauswahl", + "Create": "Erstellen", + "Cancel": "Abbrechen", + "nameNotEmpty": "Name darf nicht leer sein", + "appTemplateNotSelected": "Bitte wählen Sie eine Vorlage", + "appTypeRequired": "Bitte wählen Sie einen App-Typ", + "appCreated": "App erstellt", + "appCreateFailed": "Erstellen der App fehlgeschlagen", + "startFromTemplate": "Aus Vorlage erstellen", + "appNamePlaceholder": "Geben Sie Ihrer App einen Namen", + "startFromBlank": "Aus Leer erstellen", + "workflowWarning": "Derzeit in der Beta-Phase", + "captionDescription": "Beschreibung", + "useTemplate": "Diese Vorlage verwenden", + "appDescriptionPlaceholder": "Geben Sie die Beschreibung der App ein", + "caution": "Vorsicht", + "Confirm": "Bestätigen", + "appCreateDSLErrorTitle": "Inkompatibilität der Version", + "appCreateDSLErrorPart2": "Möchten Sie fortfahren?", + "appCreateDSLErrorPart4": "Systemgestützte DSL-Version:", + "appCreateDSLErrorPart1": "Es wurde ein signifikanter Unterschied bei den DSL-Versionen festgestellt. Das Erzwingen des Imports kann zu Fehlfunktionen der Anwendung führen.", + "appCreateDSLErrorPart3": "Aktuelle DSL-Version der Anwendung:", + "appCreateDSLWarning": "Achtung: Ein unterschiedlicher DSL-Versionsunterschied kann sich auf bestimmte Funktionen auswirken", + "learnMore": "Weitere Informationen", + "optional": "Wahlfrei", + "noTemplateFound": "Keine Vorlagen gefunden", + "workflowUserDescription": "Autonome KI-Arbeitsabläufe visuell per Drag-and-Drop erstellen.", + "foundResults": "{{count}} Befund", + "chatbotShortDescription": "LLM-basierter Chatbot mit einfacher Einrichtung", + "completionUserDescription": "Erstellen Sie schnell einen KI-Assistenten für Textgenerierungsaufgaben mit einfacher Konfiguration.", + "noAppsFound": "Keine Apps gefunden", + "advancedShortDescription": "Workflow optimiert für mehrstufige Chats", + "forAdvanced": "FÜR FORTGESCHRITTENE", + "chooseAppType": "App-Typ auswählen", + "completionShortDescription": "KI-Assistent für Textgenerierungsaufgaben", + "forBeginners": "Einfachere App-Typen", + "noIdeaTip": "Keine Ideen? Schauen Sie sich unsere Vorlagen an", + "workflowShortDescription": "Agentischer Ablauf für intelligente Automatisierungen", + "noTemplateFoundTip": "Versuchen Sie, mit verschiedenen Schlüsselwörtern zu suchen.", + "advancedUserDescription": "Workflow mit Speicherfunktionen und Chatbot-Oberfläche.", + "chatbotUserDescription": "Erstellen Sie schnell einen LLM-basierten Chatbot mit einfacher Konfiguration. Sie können später zu Chatflow wechseln.", + "foundResult": "{{count}} Ergebnis", + "agentUserDescription": "Ein intelligenter Agent, der in der Lage ist, iteratives Denken zu führen und autonome Werkzeuge zu verwenden, um Aufgabenziele zu erreichen.", + "agentShortDescription": "Intelligenter Agent mit logischem Denken und autonomer Werkzeugnutzung", + "dropDSLToCreateApp": "Ziehen Sie die DSL-Datei hierher, um die App zu erstellen", + "import": "Importieren" + }, + "editApp": "App bearbeiten", + "editAppTitle": "App-Informationen bearbeiten", + "editDone": "App-Informationen wurden aktualisiert", + "editFailed": "Aktualisierung der App-Informationen fehlgeschlagen", + "iconPicker": { + "ok": "OK", + "cancel": "Abbrechen", + "emoji": "Emoji", + "image": "Bild" + }, + "switch": "Zu Workflow-Orchestrierung wechseln", + "switchTipStart": "Eine neue App-Kopie wird für Sie erstellt, und die neue Kopie wird zur Workflow-Orchestrierung wechseln. Die neue Kopie wird ", + "switchTip": "nicht erlauben", + "switchTipEnd": " zur Basis-Orchestrierung zurückzuwechseln.", + "switchLabel": "Die zu erstellende App-Kopie", + "removeOriginal": "Ursprüngliche App löschen", + "switchStart": "Wechsel starten", + "typeSelector": { + "all": "ALLE Typen", + "chatbot": "Chatbot", + "agent": "Agent", + "workflow": "Workflow", + "completion": "Vervollständigung", + "advanced": "Chatflow" + }, + "tracing": { + "title": "Anwendungsleistung nachverfolgen", + "description": "Konfiguration eines Drittanbieter-LLMOps-Anbieters und Nachverfolgung der Anwendungsleistung.", + "config": "Konfigurieren", + "collapse": "Einklappen", + "expand": "Ausklappen", + "tracing": "Nachverfolgung", + "disabled": "Deaktiviert", + "disabledTip": "Bitte zuerst den Anbieter konfigurieren", + "enabled": "In Betrieb", + "tracingDescription": "Erfassung des vollständigen Kontexts der Anwendungsausführung, einschließlich LLM-Aufrufe, Kontext, Prompts, HTTP-Anfragen und mehr, auf einer Nachverfolgungsplattform von Drittanbietern.", + "configProviderTitle": { + "configured": "Konfiguriert", + "notConfigured": "Anbieter konfigurieren, um Nachverfolgung zu aktivieren", + "moreProvider": "Weitere Anbieter" + }, + "arize": { + "title": "Arize", + "description": "Unternehmensgerechte LLM-Observierbarkeit, Online- und Offline-Bewertung, Überwachung und Experimentierung—unterstützt durch OpenTelemetry. Speziell für LLM- und agentenbasierte Anwendungen entwickelt." + }, + "phoenix": { + "title": "Phoenix", + "description": "Open-Source- und OpenTelemetry-basierte Plattform für Observierbarkeit, Bewertung, Prompt-Engineering und Experimentierung für Ihre LLM-Workflows und -Agenten." + }, + "langsmith": { + "title": "LangSmith", + "description": "Eine All-in-One-Entwicklerplattform für jeden Schritt des LLM-gesteuerten Anwendungslebenszyklus." + }, + "langfuse": { + "title": "Langfuse", + "description": "Traces, Bewertungen, Prompt-Management und Metriken zum Debuggen und Verbessern Ihrer LLM-Anwendung." + }, + "inUse": "In Verwendung", + "configProvider": { + "title": "Konfigurieren ", + "placeholder": "Geben Sie Ihren {{key}} ein", + "project": "Projekt", + "publicKey": "Öffentlicher Schlüssel", + "secretKey": "Geheimer Schlüssel", + "viewDocsLink": "{{key}}-Dokumentation ansehen", + "removeConfirmTitle": "{{key}}-Konfiguration entfernen?", + "removeConfirmContent": "Die aktuelle Konfiguration wird verwendet. Das Entfernen wird die Nachverfolgungsfunktion ausschalten.", + "password": "Passwort", + "databricksHost": "Databricks-Workspace-URL", + "clientSecret": "OAuth-Client-Geheimnis", + "personalAccessToken": "Persönliches Zugriffstoken (veraltet)", + "experimentId": "Experiment-ID", + "username": "Benutzername", + "trackingUri": "Tracking-URI", + "clientId": "OAuth-Client-ID" + }, + "view": "Ansehen", + "opik": { + "description": "Opik ist eine Open-Source-Plattform zum Bewerten, Testen und Überwachen von LLM-Anwendungen.", + "title": "Opik" + }, + "weave": { + "title": "Weben", + "description": "Weave ist eine Open-Source-Plattform zur Bewertung, Testung und Überwachung von LLM-Anwendungen." + }, + "aliyun": { + "title": "Cloud-Monitor", + "description": "Die vollständig verwaltete und wartungsfreie Observability-Plattform von Alibaba Cloud ermöglicht eine sofortige Überwachung, Verfolgung und Bewertung von Dify-Anwendungen." + }, + "mlflow": { + "title": "MLflow", + "description": "Open-Source-LLMOps-Plattform mit Experiment-Tracking, Observability und Evaluierungen für die sichere Entwicklung von AI/LLM-Anwendungen." + }, + "databricks": { + "title": "Databricks", + "description": "Databricks bietet vollständig verwaltetes MLflow mit starker Governance und Sicherheit für die Speicherung von Trace-Daten." + }, + "tencent": { + "title": "Tencent APM", + "description": "Tencent Application Performance Monitoring bietet umfassendes Tracing und multidimensionale Analyse für LLM-Anwendungen." + } + }, + "answerIcon": { + "descriptionInExplore": "Gibt an, ob das web app Symbol zum Ersetzen 🤖 in Explore verwendet werden soll", + "title": "Verwenden Sie das web app Symbol, um es zu ersetzen 🤖", + "description": "Gibt an, ob das web app Symbol zum Ersetzen 🤖 in der freigegebenen Anwendung verwendet werden soll" + }, + "importFromDSLUrlPlaceholder": "DSL-Link hier einfügen", + "dslUploader": { + "button": "Datei per Drag & Drop ablegen oder", + "browse": "Durchsuchen" + }, + "duplicate": "Duplikat", + "importFromDSL": "Import von DSL", + "importDSL": "DSL-Datei importieren", + "importFromDSLUrl": "Von URL", + "exportFailed": "Fehler beim Exportieren von DSL.", + "importFromDSLFile": "Aus DSL-Datei", + "export": "DSL exportieren", + "duplicateTitle": "App duplizieren", + "mermaid": { + "handDrawn": "Handgezeichnet", + "classic": "Klassisch" + }, + "openInExplore": "In Explore öffnen", + "newAppFromTemplate": { + "sidebar": { + "Recommended": "Empfohlen", + "Assistant": "Assistent", + "Writing": "Schrift", + "Workflow": "Arbeitsablauf", + "Programming": "Programmieren", + "Agent": "Agent", + "HR": "HR" + }, + "byCategories": "NACH KATEGORIEN", + "searchAllTemplate": "Alle Vorlagen durchsuchen..." + }, + "showMyCreatedAppsOnly": "Nur meine erstellten Apps anzeigen", + "appSelector": { + "placeholder": "Wählen Sie eine App aus...", + "params": "APP-PARAMETER", + "label": "APP", + "noParams": "Keine Parameter erforderlich" + }, + "structOutput": { + "required": "Erforderlich", + "structured": "Strukturiert", + "structuredTip": "Strukturierte Ausgaben ist eine Funktion, die sicherstellt, dass das Modell immer Antworten generiert, die Ihrem bereitgestellten JSON-Schema entsprechen.", + "modelNotSupportedTip": "Das aktuelle Modell unterstützt diese Funktion nicht und wird automatisch auf Eingabeinjektion heruntergestuft.", + "modelNotSupported": "Modell nicht unterstützt", + "configure": "Konfigurieren", + "notConfiguredTip": "Die strukturierte Ausgabe wurde bisher nicht konfiguriert.", + "moreFillTip": "Maximal 10 Ebenen der Verschachtelung anzeigen", + "LLMResponse": "LLM-Antwort" + }, + "accessItemsDescription": { + "anyone": "Jeder kann auf die Webanwendung zugreifen.", + "specific": "Nur bestimmte Gruppen oder Mitglieder können auf die Webanwendung zugreifen.", + "organization": "Jeder in der Organisation kann auf die Webanwendung zugreifen.", + "external": "Nur authentifizierte externe Benutzer können auf die Webanwendung zugreifen." + }, + "accessControlDialog": { + "accessItems": { + "anyone": "Jeder mit dem Link", + "specific": "Spezifische Gruppen oder Mitglieder", + "organization": "Nur Mitglieder innerhalb des Unternehmens", + "external": "Authentifizierte externe Benutzer" + }, + "operateGroupAndMember": { + "searchPlaceholder": "Gruppen und Mitglieder suchen", + "allMembers": "Alle Mitglieder", + "expand": "Erweitern", + "noResult": "Kein Ergebnis" + }, + "title": "Zugriffskontrolle für Webanwendungen", + "description": "Webanwendungszugriffsberechtigungen festlegen", + "accessLabel": "Wer hat Zugang", + "groups_one": "{{count}} GRUPPE", + "members_one": "{{count}} MITGLIED", + "members_other": "{{count}} MITGLIEDER", + "noGroupsOrMembers": "Keine Gruppen oder Mitglieder ausgewählt", + "webAppSSONotEnabledTip": "Bitte kontaktieren Sie den Unternehmensadministrator, um die Authentifizierungsmethode der Webanwendung zu konfigurieren.", + "updateSuccess": "Erfolgreich aktualisiert", + "groups_other": "{{count}} GRUPPEN" + }, + "publishApp": { + "title": "Wer kann auf die Webanwendung zugreifen?", + "notSetDesc": "Derzeit kann niemand auf die Webanwendung zugreifen. Bitte setzen Sie die Berechtigungen.", + "notSet": "Nicht festgelegt" + }, + "accessControl": "Zugriffskontrolle für Webanwendungen", + "noAccessPermission": "Keine Berechtigung zum Zugriff auf die Webanwendung", + "maxActiveRequests": "Maximale gleichzeitige Anfragen", + "maxActiveRequestsPlaceholder": "Geben Sie 0 für unbegrenzt ein", + "maxActiveRequestsTip": "Maximale Anzahl gleichzeitiger aktiver Anfragen pro App (0 für unbegrenzt)", + "gotoAnything": { + "actions": { + "searchPlugins": "Plugins durchsuchen", + "searchKnowledgeBases": "Wissensdatenbanken durchsuchen", + "searchWorkflowNodes": "Workflow-Knoten durchsuchen", + "searchKnowledgeBasesDesc": "Suchen und navigieren Sie zu Ihren Wissensdatenbanken", + "searchApplications": "Anwendungen durchsuchen", + "searchWorkflowNodesHelp": "Diese Funktion funktioniert nur, wenn ein Workflow angezeigt wird. Navigieren Sie zuerst zu einem Workflow.", + "searchApplicationsDesc": "Suchen und navigieren Sie zu Ihren Anwendungen", + "searchPluginsDesc": "Suchen und navigieren Sie zu Ihren Plugins", + "searchWorkflowNodesDesc": "Suchen und Springen zu Knoten im aktuellen Workflow nach Name oder Typ", + "themeCategoryDesc": "Anwendungsthema wechseln", + "themeSystemDesc": "Folgen Sie dem Aussehen Ihres Betriebssystems", + "themeLight": "Helles Design", + "runTitle": "Befehle", + "languageCategoryTitle": "Sprache", + "themeDark": "Dunkles Thema", + "languageChangeDesc": "UI-Sprache ändern", + "languageCategoryDesc": "Wechseln Sie die Schnittstellensprache", + "themeSystem": "Systemthema", + "themeLightDesc": "Verwenden Sie das helle Erscheinungsbild", + "themeDarkDesc": "Verwenden Sie das dunkle Erscheinungsbild", + "runDesc": "Führen Sie schnelle Befehle aus (Thema, Sprache, ...)", + "themeCategoryTitle": "Thema", + "slashDesc": "Führen Sie Befehle wie /theme, /lang aus", + "accountDesc": "Gehe zur Kontoseite", + "feedbackDesc": "Offene Diskussionen zum Feedback der Gemeinschaft", + "communityDesc": "Offene Discord-Community", + "docDesc": "Öffnen Sie die Hilfedokumentation", + "zenTitle": "Zen Mode", + "zenDesc": "Toggle canvas focus mode" + }, + "emptyState": { + "noPluginsFound": "Keine Plugins gefunden", + "noWorkflowNodesFound": "Keine Workflow-Knoten gefunden", + "noKnowledgeBasesFound": "Keine Wissensdatenbanken gefunden", + "noAppsFound": "Keine Apps gefunden", + "tryDifferentTerm": "Versuchen Sie einen anderen Suchbegriff oder entfernen Sie den {{mode}}-Filter", + "trySpecificSearch": "Versuchen Sie {{shortcuts}} für spezifische Suchen" + }, + "groups": { + "knowledgeBases": "Wissensdatenbanken", + "plugins": "Plugins", + "apps": "Apps", + "workflowNodes": "Workflow-Knoten", + "commands": "Befehle" + }, + "clearToSearchAll": "Löschen Sie @, um alle zu durchsuchen", + "searchTemporarilyUnavailable": "Suche vorübergehend nicht verfügbar", + "searchFailed": "Suche fehlgeschlagen", + "someServicesUnavailable": "Einige Suchdienste sind nicht verfügbar", + "servicesUnavailableMessage": "Bei einigen Suchdiensten können Probleme auftreten. Versuchen Sie es gleich noch einmal.", + "noResults": "Keine Ergebnisse gefunden", + "searchPlaceholder": "Suchen Sie nach Befehlen, oder geben Sie @ ein...", + "useAtForSpecific": "Verwenden von @ für bestimmte Typen", + "searchTitle": "Suchen Sie nach irgendetwas", + "searching": "Suche...", + "selectSearchType": "Wählen Sie aus, wonach gesucht werden soll", + "commandHint": "Geben Sie @ ein, um nach Kategorie zu suchen", + "searchHint": "Beginnen Sie mit der Eingabe, um alles sofort zu durchsuchen", + "resultCount": "{{count}} Ergebnis", + "resultCount_other": "{{count}} Ergebnisse", + "inScope": "in {{scope}}s", + "noMatchingCommands": "Keine übereinstimmenden Befehle gefunden", + "tryDifferentSearch": "Versuchen Sie es mit einem anderen Suchbegriff", + "slashHint": "Geben Sie / ein, um alle verfügbaren Befehle anzuzeigen.", + "tips": "Drücken Sie ↑↓, um zu navigieren", + "pressEscToClose": "Drücken Sie ESC, um zu schließen", + "startTyping": "Beginnen Sie mit der Eingabe, um zu suchen", + "selectToNavigate": "Auswählen, um zu navigieren" + }, + "notPublishedYet": "App ist noch nicht veröffentlicht", + "noUserInputNode": "Fehlender Benutzereingabeknoten" +} diff --git a/web/i18n/de-DE/app.ts b/web/i18n/de-DE/app.ts deleted file mode 100644 index 221e94b60b..0000000000 --- a/web/i18n/de-DE/app.ts +++ /dev/null @@ -1,353 +0,0 @@ -const translation = { - createApp: 'Neue App erstellen', - types: { - all: 'Alle', - completion: 'Vervollständigung', - workflow: 'Arbeitsablauf', - agent: 'Agent', - chatbot: 'Chatbot', - basic: 'Grundlegend', - advanced: 'Chatflow', - }, - modes: { - }, - createFromConfigFile: 'App aus Konfigurationsdatei erstellen', - deleteAppConfirmTitle: 'Diese App löschen?', - deleteAppConfirmContent: - 'Das Löschen der App ist unwiderruflich. Nutzer werden keinen Zugang mehr zu Ihrer App haben, und alle Prompt-Konfigurationen und Logs werden dauerhaft gelöscht.', - appDeleted: 'App gelöscht', - appDeleteFailed: 'Löschen der App fehlgeschlagen', - join: 'Treten Sie der Gemeinschaft bei', - communityIntro: - 'Diskutieren Sie mit Teammitgliedern, Mitwirkenden und Entwicklern auf verschiedenen Kanälen.', - roadmap: 'Sehen Sie unseren Fahrplan', - newApp: { - captionName: 'App-Symbol & Name', - previewDemo: 'Vorschau-Demo', - chatApp: 'Assistent', - chatAppIntro: - 'Ich möchte eine Chat-basierte Anwendung bauen. Diese App verwendet ein Frage-Antwort-Format und ermöglicht mehrere Runden kontinuierlicher Konversation.', - agentAssistant: 'Neuer Agentenassistent', - completeApp: 'Textgenerator', - completeAppIntro: - 'Ich möchte eine Anwendung erstellen, die hochwertigen Text basierend auf Aufforderungen generiert, wie z.B. das Erstellen von Artikeln, Zusammenfassungen, Übersetzungen und mehr.', - showTemplates: 'Ich möchte aus einer Vorlage wählen', - hideTemplates: 'Zurück zur Modusauswahl', - Create: 'Erstellen', - Cancel: 'Abbrechen', - nameNotEmpty: 'Name darf nicht leer sein', - appTemplateNotSelected: 'Bitte wählen Sie eine Vorlage', - appTypeRequired: 'Bitte wählen Sie einen App-Typ', - appCreated: 'App erstellt', - appCreateFailed: 'Erstellen der App fehlgeschlagen', - startFromTemplate: 'Aus Vorlage erstellen', - appNamePlaceholder: 'Geben Sie Ihrer App einen Namen', - startFromBlank: 'Aus Leer erstellen', - workflowWarning: 'Derzeit in der Beta-Phase', - captionDescription: 'Beschreibung', - useTemplate: 'Diese Vorlage verwenden', - appDescriptionPlaceholder: 'Geben Sie die Beschreibung der App ein', - caution: 'Vorsicht', - Confirm: 'Bestätigen', - appCreateDSLErrorTitle: 'Inkompatibilität der Version', - appCreateDSLErrorPart2: 'Möchten Sie fortfahren?', - appCreateDSLErrorPart4: 'Systemgestützte DSL-Version:', - appCreateDSLErrorPart1: 'Es wurde ein signifikanter Unterschied bei den DSL-Versionen festgestellt. Das Erzwingen des Imports kann zu Fehlfunktionen der Anwendung führen.', - appCreateDSLErrorPart3: 'Aktuelle DSL-Version der Anwendung:', - appCreateDSLWarning: 'Achtung: Ein unterschiedlicher DSL-Versionsunterschied kann sich auf bestimmte Funktionen auswirken', - learnMore: 'Weitere Informationen', - optional: 'Wahlfrei', - noTemplateFound: 'Keine Vorlagen gefunden', - workflowUserDescription: 'Autonome KI-Arbeitsabläufe visuell per Drag-and-Drop erstellen.', - foundResults: '{{count}} Befund', - chatbotShortDescription: 'LLM-basierter Chatbot mit einfacher Einrichtung', - completionUserDescription: 'Erstellen Sie schnell einen KI-Assistenten für Textgenerierungsaufgaben mit einfacher Konfiguration.', - noAppsFound: 'Keine Apps gefunden', - advancedShortDescription: 'Workflow optimiert für mehrstufige Chats', - forAdvanced: 'FÜR FORTGESCHRITTENE', - chooseAppType: 'App-Typ auswählen', - completionShortDescription: 'KI-Assistent für Textgenerierungsaufgaben', - forBeginners: 'Einfachere App-Typen', - noIdeaTip: 'Keine Ideen? Schauen Sie sich unsere Vorlagen an', - workflowShortDescription: 'Agentischer Ablauf für intelligente Automatisierungen', - noTemplateFoundTip: 'Versuchen Sie, mit verschiedenen Schlüsselwörtern zu suchen.', - advancedUserDescription: 'Workflow mit Speicherfunktionen und Chatbot-Oberfläche.', - chatbotUserDescription: 'Erstellen Sie schnell einen LLM-basierten Chatbot mit einfacher Konfiguration. Sie können später zu Chatflow wechseln.', - foundResult: '{{count}} Ergebnis', - agentUserDescription: 'Ein intelligenter Agent, der in der Lage ist, iteratives Denken zu führen und autonome Werkzeuge zu verwenden, um Aufgabenziele zu erreichen.', - agentShortDescription: 'Intelligenter Agent mit logischem Denken und autonomer Werkzeugnutzung', - dropDSLToCreateApp: 'Ziehen Sie die DSL-Datei hierher, um die App zu erstellen', - import: 'Importieren', - }, - editApp: 'App bearbeiten', - editAppTitle: 'App-Informationen bearbeiten', - editDone: 'App-Informationen wurden aktualisiert', - editFailed: 'Aktualisierung der App-Informationen fehlgeschlagen', - iconPicker: { - ok: 'OK', - cancel: 'Abbrechen', - emoji: 'Emoji', - image: 'Bild', - }, - switch: 'Zu Workflow-Orchestrierung wechseln', - switchTipStart: 'Eine neue App-Kopie wird für Sie erstellt, und die neue Kopie wird zur Workflow-Orchestrierung wechseln. Die neue Kopie wird ', - switchTip: 'nicht erlauben', - switchTipEnd: ' zur Basis-Orchestrierung zurückzuwechseln.', - switchLabel: 'Die zu erstellende App-Kopie', - removeOriginal: 'Ursprüngliche App löschen', - switchStart: 'Wechsel starten', - typeSelector: { - all: 'ALLE Typen', - chatbot: 'Chatbot', - agent: 'Agent', - workflow: 'Workflow', - completion: 'Vervollständigung', - advanced: 'Chatflow', - }, - tracing: { - title: 'Anwendungsleistung nachverfolgen', - description: 'Konfiguration eines Drittanbieter-LLMOps-Anbieters und Nachverfolgung der Anwendungsleistung.', - config: 'Konfigurieren', - collapse: 'Einklappen', - expand: 'Ausklappen', - tracing: 'Nachverfolgung', - disabled: 'Deaktiviert', - disabledTip: 'Bitte zuerst den Anbieter konfigurieren', - enabled: 'In Betrieb', - tracingDescription: 'Erfassung des vollständigen Kontexts der Anwendungsausführung, einschließlich LLM-Aufrufe, Kontext, Prompts, HTTP-Anfragen und mehr, auf einer Nachverfolgungsplattform von Drittanbietern.', - configProviderTitle: { - configured: 'Konfiguriert', - notConfigured: 'Anbieter konfigurieren, um Nachverfolgung zu aktivieren', - moreProvider: 'Weitere Anbieter', - }, - arize: { - title: 'Arize', - description: 'Unternehmensgerechte LLM-Observierbarkeit, Online- und Offline-Bewertung, Überwachung und Experimentierung—unterstützt durch OpenTelemetry. Speziell für LLM- und agentenbasierte Anwendungen entwickelt.', - }, - phoenix: { - title: 'Phoenix', - description: 'Open-Source- und OpenTelemetry-basierte Plattform für Observierbarkeit, Bewertung, Prompt-Engineering und Experimentierung für Ihre LLM-Workflows und -Agenten.', - }, - langsmith: { - title: 'LangSmith', - description: 'Eine All-in-One-Entwicklerplattform für jeden Schritt des LLM-gesteuerten Anwendungslebenszyklus.', - }, - langfuse: { - title: 'Langfuse', - description: 'Traces, Bewertungen, Prompt-Management und Metriken zum Debuggen und Verbessern Ihrer LLM-Anwendung.', - }, - inUse: 'In Verwendung', - configProvider: { - title: 'Konfigurieren ', - placeholder: 'Geben Sie Ihren {{key}} ein', - project: 'Projekt', - publicKey: 'Öffentlicher Schlüssel', - secretKey: 'Geheimer Schlüssel', - viewDocsLink: '{{key}}-Dokumentation ansehen', - removeConfirmTitle: '{{key}}-Konfiguration entfernen?', - removeConfirmContent: 'Die aktuelle Konfiguration wird verwendet. Das Entfernen wird die Nachverfolgungsfunktion ausschalten.', - password: 'Passwort', - databricksHost: 'Databricks-Workspace-URL', - clientSecret: 'OAuth-Client-Geheimnis', - personalAccessToken: 'Persönliches Zugriffstoken (veraltet)', - experimentId: 'Experiment-ID', - username: 'Benutzername', - trackingUri: 'Tracking-URI', - clientId: 'OAuth-Client-ID', - }, - view: 'Ansehen', - opik: { - description: 'Opik ist eine Open-Source-Plattform zum Bewerten, Testen und Überwachen von LLM-Anwendungen.', - title: 'Opik', - }, - weave: { - title: 'Weben', - description: 'Weave ist eine Open-Source-Plattform zur Bewertung, Testung und Überwachung von LLM-Anwendungen.', - }, - aliyun: { - title: 'Cloud-Monitor', - description: 'Die vollständig verwaltete und wartungsfreie Observability-Plattform von Alibaba Cloud ermöglicht eine sofortige Überwachung, Verfolgung und Bewertung von Dify-Anwendungen.', - }, - mlflow: { - title: 'MLflow', - description: 'Open-Source-LLMOps-Plattform mit Experiment-Tracking, Observability und Evaluierungen für die sichere Entwicklung von AI/LLM-Anwendungen.', - }, - databricks: { - title: 'Databricks', - description: 'Databricks bietet vollständig verwaltetes MLflow mit starker Governance und Sicherheit für die Speicherung von Trace-Daten.', - }, - tencent: { - title: 'Tencent APM', - description: 'Tencent Application Performance Monitoring bietet umfassendes Tracing und multidimensionale Analyse für LLM-Anwendungen.', - }, - }, - answerIcon: { - descriptionInExplore: 'Gibt an, ob das web app Symbol zum Ersetzen 🤖 in Explore verwendet werden soll', - title: 'Verwenden Sie das web app Symbol, um es zu ersetzen 🤖', - description: 'Gibt an, ob das web app Symbol zum Ersetzen 🤖 in der freigegebenen Anwendung verwendet werden soll', - }, - importFromDSLUrlPlaceholder: 'DSL-Link hier einfügen', - dslUploader: { - button: 'Datei per Drag & Drop ablegen oder', - browse: 'Durchsuchen', - }, - duplicate: 'Duplikat', - importFromDSL: 'Import von DSL', - importDSL: 'DSL-Datei importieren', - importFromDSLUrl: 'Von URL', - exportFailed: 'Fehler beim Exportieren von DSL.', - importFromDSLFile: 'Aus DSL-Datei', - export: 'DSL exportieren', - duplicateTitle: 'App duplizieren', - mermaid: { - handDrawn: 'Handgezeichnet', - classic: 'Klassisch', - }, - openInExplore: 'In Explore öffnen', - newAppFromTemplate: { - sidebar: { - Recommended: 'Empfohlen', - Assistant: 'Assistent', - Writing: 'Schrift', - Workflow: 'Arbeitsablauf', - Programming: 'Programmieren', - Agent: 'Agent', - HR: 'HR', - }, - byCategories: 'NACH KATEGORIEN', - searchAllTemplate: 'Alle Vorlagen durchsuchen...', - }, - showMyCreatedAppsOnly: 'Nur meine erstellten Apps anzeigen', - appSelector: { - placeholder: 'Wählen Sie eine App aus...', - params: 'APP-PARAMETER', - label: 'APP', - noParams: 'Keine Parameter erforderlich', - }, - structOutput: { - required: 'Erforderlich', - structured: 'Strukturiert', - structuredTip: 'Strukturierte Ausgaben ist eine Funktion, die sicherstellt, dass das Modell immer Antworten generiert, die Ihrem bereitgestellten JSON-Schema entsprechen.', - modelNotSupportedTip: 'Das aktuelle Modell unterstützt diese Funktion nicht und wird automatisch auf Eingabeinjektion heruntergestuft.', - modelNotSupported: 'Modell nicht unterstützt', - configure: 'Konfigurieren', - notConfiguredTip: 'Die strukturierte Ausgabe wurde bisher nicht konfiguriert.', - moreFillTip: 'Maximal 10 Ebenen der Verschachtelung anzeigen', - LLMResponse: 'LLM-Antwort', - }, - accessItemsDescription: { - anyone: 'Jeder kann auf die Webanwendung zugreifen.', - specific: 'Nur bestimmte Gruppen oder Mitglieder können auf die Webanwendung zugreifen.', - organization: 'Jeder in der Organisation kann auf die Webanwendung zugreifen.', - external: 'Nur authentifizierte externe Benutzer können auf die Webanwendung zugreifen.', - }, - accessControlDialog: { - accessItems: { - anyone: 'Jeder mit dem Link', - specific: 'Spezifische Gruppen oder Mitglieder', - organization: 'Nur Mitglieder innerhalb des Unternehmens', - external: 'Authentifizierte externe Benutzer', - }, - operateGroupAndMember: { - searchPlaceholder: 'Gruppen und Mitglieder suchen', - allMembers: 'Alle Mitglieder', - expand: 'Erweitern', - noResult: 'Kein Ergebnis', - }, - title: 'Zugriffskontrolle für Webanwendungen', - description: 'Webanwendungszugriffsberechtigungen festlegen', - accessLabel: 'Wer hat Zugang', - groups_one: '{{count}} GRUPPE', - members_one: '{{count}} MITGLIED', - members_other: '{{count}} MITGLIEDER', - noGroupsOrMembers: 'Keine Gruppen oder Mitglieder ausgewählt', - webAppSSONotEnabledTip: 'Bitte kontaktieren Sie den Unternehmensadministrator, um die Authentifizierungsmethode der Webanwendung zu konfigurieren.', - updateSuccess: 'Erfolgreich aktualisiert', - groups_other: '{{count}} GRUPPEN', - }, - publishApp: { - title: 'Wer kann auf die Webanwendung zugreifen?', - notSetDesc: 'Derzeit kann niemand auf die Webanwendung zugreifen. Bitte setzen Sie die Berechtigungen.', - notSet: 'Nicht festgelegt', - }, - accessControl: 'Zugriffskontrolle für Webanwendungen', - noAccessPermission: 'Keine Berechtigung zum Zugriff auf die Webanwendung', - maxActiveRequests: 'Maximale gleichzeitige Anfragen', - maxActiveRequestsPlaceholder: 'Geben Sie 0 für unbegrenzt ein', - maxActiveRequestsTip: 'Maximale Anzahl gleichzeitiger aktiver Anfragen pro App (0 für unbegrenzt)', - gotoAnything: { - actions: { - searchPlugins: 'Plugins durchsuchen', - searchKnowledgeBases: 'Wissensdatenbanken durchsuchen', - searchWorkflowNodes: 'Workflow-Knoten durchsuchen', - searchKnowledgeBasesDesc: 'Suchen und navigieren Sie zu Ihren Wissensdatenbanken', - searchApplications: 'Anwendungen durchsuchen', - searchWorkflowNodesHelp: 'Diese Funktion funktioniert nur, wenn ein Workflow angezeigt wird. Navigieren Sie zuerst zu einem Workflow.', - searchApplicationsDesc: 'Suchen und navigieren Sie zu Ihren Anwendungen', - searchPluginsDesc: 'Suchen und navigieren Sie zu Ihren Plugins', - searchWorkflowNodesDesc: 'Suchen und Springen zu Knoten im aktuellen Workflow nach Name oder Typ', - themeCategoryDesc: 'Anwendungsthema wechseln', - themeSystemDesc: 'Folgen Sie dem Aussehen Ihres Betriebssystems', - themeLight: 'Helles Design', - runTitle: 'Befehle', - languageCategoryTitle: 'Sprache', - themeDark: 'Dunkles Thema', - languageChangeDesc: 'UI-Sprache ändern', - languageCategoryDesc: 'Wechseln Sie die Schnittstellensprache', - themeSystem: 'Systemthema', - themeLightDesc: 'Verwenden Sie das helle Erscheinungsbild', - themeDarkDesc: 'Verwenden Sie das dunkle Erscheinungsbild', - runDesc: 'Führen Sie schnelle Befehle aus (Thema, Sprache, ...)', - themeCategoryTitle: 'Thema', - slashDesc: 'Führen Sie Befehle wie /theme, /lang aus', - accountDesc: 'Gehe zur Kontoseite', - feedbackDesc: 'Offene Diskussionen zum Feedback der Gemeinschaft', - communityDesc: 'Offene Discord-Community', - docDesc: 'Öffnen Sie die Hilfedokumentation', - zenTitle: 'Zen Mode', - zenDesc: 'Toggle canvas focus mode', - }, - emptyState: { - noPluginsFound: 'Keine Plugins gefunden', - noWorkflowNodesFound: 'Keine Workflow-Knoten gefunden', - noKnowledgeBasesFound: 'Keine Wissensdatenbanken gefunden', - noAppsFound: 'Keine Apps gefunden', - tryDifferentTerm: 'Versuchen Sie einen anderen Suchbegriff oder entfernen Sie den {{mode}}-Filter', - trySpecificSearch: 'Versuchen Sie {{shortcuts}} für spezifische Suchen', - }, - groups: { - knowledgeBases: 'Wissensdatenbanken', - plugins: 'Plugins', - apps: 'Apps', - workflowNodes: 'Workflow-Knoten', - commands: 'Befehle', - }, - clearToSearchAll: 'Löschen Sie @, um alle zu durchsuchen', - searchTemporarilyUnavailable: 'Suche vorübergehend nicht verfügbar', - searchFailed: 'Suche fehlgeschlagen', - someServicesUnavailable: 'Einige Suchdienste sind nicht verfügbar', - servicesUnavailableMessage: 'Bei einigen Suchdiensten können Probleme auftreten. Versuchen Sie es gleich noch einmal.', - noResults: 'Keine Ergebnisse gefunden', - searchPlaceholder: 'Suchen Sie nach Befehlen, oder geben Sie @ ein...', - useAtForSpecific: 'Verwenden von @ für bestimmte Typen', - searchTitle: 'Suchen Sie nach irgendetwas', - searching: 'Suche...', - selectSearchType: 'Wählen Sie aus, wonach gesucht werden soll', - commandHint: 'Geben Sie @ ein, um nach Kategorie zu suchen', - searchHint: 'Beginnen Sie mit der Eingabe, um alles sofort zu durchsuchen', - resultCount: '{{count}} Ergebnis', - resultCount_other: '{{count}} Ergebnisse', - inScope: 'in {{scope}}s', - noMatchingCommands: 'Keine übereinstimmenden Befehle gefunden', - tryDifferentSearch: 'Versuchen Sie es mit einem anderen Suchbegriff', - slashHint: 'Geben Sie / ein, um alle verfügbaren Befehle anzuzeigen.', - tips: 'Drücken Sie ↑↓, um zu navigieren', - pressEscToClose: 'Drücken Sie ESC, um zu schließen', - startTyping: 'Beginnen Sie mit der Eingabe, um zu suchen', - selectToNavigate: 'Auswählen, um zu navigieren', - }, - notPublishedYet: 'App ist noch nicht veröffentlicht', - noUserInputNode: 'Fehlender Benutzereingabeknoten', -} - -export default translation diff --git a/web/i18n/de-DE/billing.json b/web/i18n/de-DE/billing.json new file mode 100644 index 0000000000..e81d803cb3 --- /dev/null +++ b/web/i18n/de-DE/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "Aktueller Tarif", + "upgradeBtn": { + "plain": "Tarif Upgraden", + "encourage": "Jetzt Upgraden", + "encourageShort": "Upgraden" + }, + "viewBilling": "Abrechnung und Abonnements verwalten", + "buyPermissionDeniedTip": "Bitte kontaktieren Sie Ihren Unternehmensadministrator, um zu abonnieren", + "plansCommon": { + "yearlyTip": "Erhalten Sie 2 Monate kostenlos durch jährliches Abonnieren!", + "mostPopular": "Am beliebtesten", + "planRange": { + "monthly": "Monatlich", + "yearly": "Jährlich" + }, + "month": "Monat", + "year": "Jahr", + "save": "Sparen ", + "free": "Kostenlos", + "currentPlan": "Aktueller Tarif", + "contractSales": "Vertrieb kontaktieren", + "contractOwner": "Teammanager kontaktieren", + "startForFree": "Kostenlos starten", + "contactSales": "Vertrieb kontaktieren", + "talkToSales": "Mit dem Vertrieb sprechen", + "modelProviders": "Modellanbieter", + "buildApps": "Apps bauen", + "vectorSpace": "Vektorraum", + "vectorSpaceTooltip": "Vektorraum ist das Langzeitspeichersystem, das erforderlich ist, damit LLMs Ihre Daten verstehen können.", + "documentProcessingPriority": "Priorität der Dokumentenverarbeitung", + "documentProcessingPriorityTip": "Für eine höhere Priorität bei der Dokumentenverarbeitung upgraden Sie bitte Ihren Plan.", + "documentProcessingPriorityUpgrade": "Mehr Daten mit höherer Genauigkeit bei schnelleren Geschwindigkeiten verarbeiten.", + "priority": { + "standard": "Standard", + "priority": "Priorität", + "top-priority": "Höchste Priorität" + }, + "logsHistory": "Protokollverlauf", + "customTools": "Benutzerdefinierte Werkzeuge", + "unavailable": "Nicht verfügbar", + "days": "Tage", + "unlimited": "Unbegrenzt", + "support": "Support", + "supportItems": { + "communityForums": "Community-Foren", + "emailSupport": "E-Mail-Support", + "priorityEmail": "Priorisierter E-Mail- und Chat-Support", + "logoChange": "Logo-Änderung", + "SSOAuthentication": "SSO-Authentifizierung", + "personalizedSupport": "Persönlicher Support", + "dedicatedAPISupport": "Dedizierter API-Support", + "customIntegration": "Benutzerdefinierte Integration und Support", + "ragAPIRequest": "RAG-API-Anfragen", + "bulkUpload": "Massenupload von Dokumenten", + "agentMode": "Agentenmodus", + "workflow": "Workflow", + "llmLoadingBalancing": "LLM-Lastausgleich", + "llmLoadingBalancingTooltip": "Fügen Sie Modellen mehrere API-Schlüssel hinzu, um die API-Ratenlimits effektiv zu umgehen." + }, + "comingSoon": "Demnächst", + "member": "Mitglied", + "memberAfter": "Mitglied", + "messageRequest": { + "title": "Nachrichtenguthaben", + "tooltip": "Nachrichtenaufrufkontingente für verschiedene Tarife unter Verwendung von OpenAI-Modellen (außer gpt4).Nachrichten über dem Limit verwenden Ihren OpenAI-API-Schlüssel.", + "titlePerMonth": "{{count,number}} Nachrichten/Monat" + }, + "annotatedResponse": { + "title": "Kontingentgrenzen für Annotationen", + "tooltip": "Manuelle Bearbeitung und Annotation von Antworten bieten anpassbare, hochwertige Frage-Antwort-Fähigkeiten für Apps. (Nur anwendbar in Chat-Apps)" + }, + "ragAPIRequestTooltip": "Bezieht sich auf die Anzahl der API-Aufrufe, die nur die Wissensdatenbankverarbeitungsfähigkeiten von Dify aufrufen.", + "receiptInfo": "Nur der Teaminhaber und der Teamadministrator können abonnieren und Abrechnungsinformationen einsehen", + "annotationQuota": "Kontingent für Anmerkungen", + "unlimitedApiRate": "Keine API-Ratebeschränkung", + "teamMember_other": "{{count,number}} Teammitglieder", + "priceTip": "pro Arbeitsbereich/", + "teamWorkspace": "{{count,number}} Team Arbeitsplatz", + "annualBilling": "Jährliche Abrechnung", + "self": "Selbst gehostet", + "freeTrialTipPrefix": "Melden Sie sich an und erhalten Sie ein", + "cloud": "Cloud-Dienst", + "apiRateLimitTooltip": "Die API-Datenbeschränkung gilt für alle Anfragen, die über die Dify-API gemacht werden, einschließlich Textgenerierung, Chat-Konversationen, Workflow-Ausführungen und Dokumentenverarbeitung.", + "getStarted": "Loslegen", + "apiRateLimitUnit": "{{count,number}}", + "documentsTooltip": "Vorgabe für die Anzahl der Dokumente, die aus der Wissensdatenquelle importiert werden.", + "apiRateLimit": "API-Datenlimit", + "documents": "{{count,number}} Wissensdokumente", + "comparePlanAndFeatures": "Pläne und Funktionen vergleichen", + "freeTrialTipSuffix": "Keine Kreditkarte erforderlich", + "freeTrialTip": "kostenlose Testversion von 200 OpenAI-Anfragen.", + "documentsRequestQuota": "{{count,number}}/min Wissensanforderungsratenlimit", + "teamMember_one": "{{count,number}} Teammitglied", + "documentsRequestQuotaTooltip": "Gibt die Gesamtzahl der Aktionen an, die ein Arbeitsbereich pro Minute innerhalb der Wissensbasis ausführen kann, einschließlich der Erstellung, Löschung, Aktualisierung von Datensätzen, des Hochladens von Dokumenten, von Änderungen, der Archivierung und von Abfragen in der Wissensbasis. Diese Kennzahl wird verwendet, um die Leistung von Anfragen an die Wissensbasis zu bewerten. Wenn ein Sandbox-Nutzer beispielsweise in einer Minute 10 aufeinanderfolgende Testdurchläufe durchführt, wird sein Arbeitsbereich für die nächste Minute vorübergehend daran gehindert, die folgenden Aktionen auszuführen: Erstellung, Löschung, Aktualisierung von Datensätzen sowie das Hochladen oder Ändern von Dokumenten.", + "startBuilding": "Beginnen Sie mit der Entwicklung", + "taxTipSecond": "Wenn in Ihrer Region keine relevanten Steuervorschriften gelten, wird an der Kasse keine Steuer angezeigt und Ihnen werden während der gesamten Abonnementlaufzeit keine zusätzlichen Gebühren berechnet.", + "taxTip": "Alle Abonnementspreise (monatlich/jährlich) verstehen sich zuzüglich der geltenden Steuern (z. B. MwSt., Umsatzsteuer).", + "triggerEvents": { + "tooltip": "Die Anzahl der Ereignisse, die Workflows automatisch über Plugin-, Zeitplan- oder Webhook-Auslöser starten.", + "unlimited": "Unbegrenzte Auslöser-Ereignisse", + "sandbox": "{{count,number}} Ereignisse auslösen", + "professional": "{{count,number}} Auslöseereignisse/Monat" + }, + "workflowExecution": { + "faster": "Schnellere Arbeitsablauf-Ausführung", + "tooltip": "Priorität und Geschwindigkeit der Arbeitsablauf-Ausführungswarteschlange.", + "priority": "Prioritäts-Workflow-Ausführung", + "standard": "Standard-Workflow-Ausführung" + }, + "startNodes": { + "unlimited": "Unbegrenzte Auslöser/Workflows", + "limited": "Bis zu {{count}} Auslöser/Workflows" + }, + "title": { + "plans": "Pläne", + "description": "Wählen Sie den Plan, der am besten zu den Bedürfnissen Ihres Teams passt." + } + }, + "plans": { + "sandbox": { + "name": "Sandbox", + "description": "200 mal GPT kostenlos testen", + "for": "Kostenlose Testversion der Kernfunktionen" + }, + "professional": { + "name": "Professionell", + "description": "Für Einzelpersonen und kleine Teams, um mehr Leistung erschwinglich freizuschalten.", + "for": "Für unabhängige Entwickler/kleine Teams" + }, + "team": { + "name": "Team", + "description": "Zusammenarbeiten ohne Grenzen und Top-Leistung genießen.", + "for": "Für mittelgroße Teams" + }, + "enterprise": { + "name": "Unternehmen", + "description": "Erhalten Sie volle Fähigkeiten und Unterstützung für großangelegte, missionskritische Systeme.", + "includesTitle": "Alles im Team-Tarif, plus:", + "btnText": "Vertrieb kontaktieren", + "price": "Benutzerdefiniert", + "priceTip": "Jährliche Abrechnung nur", + "for": "Für große Teams", + "features": [ + "Unternehmensgerechte skalierbare Bereitstellungslösungen", + "Gewerbliche Lizenzgenehmigung", + "Exklusive Unternehmensfunktionen", + "Mehrere Arbeitsbereiche & Unternehmensverwaltung", + "SSO", + "Von Dify-Partnern ausgehandelte SLAs", + "Erweiterte Sicherheit & Steuerungen", + "Updates und Wartung offiziell von Dify", + "Professioneller technischer Support" + ] + }, + "community": { + "description": "Für Einzelbenutzer, kleine Teams oder nicht-kommerzielle Projekte", + "for": "Für Einzelbenutzer, kleine Teams oder nicht-kommerzielle Projekte", + "btnText": "Beginnen Sie mit der Gemeinschaft", + "price": "Kostenlos", + "includesTitle": "Kostenlose Funktionen:", + "name": "Gemeinschaft", + "features": [ + "Alle Kernfunktionen im öffentlichen Repository veröffentlicht", + "Einzelarbeitsbereich", + "Entspricht der Dify Open-Source-Lizenz" + ] + }, + "premium": { + "includesTitle": "Alles aus der Community, plus:", + "name": "Premium", + "priceTip": "Basierend auf dem Cloud-Marktplatz", + "for": "Für mittelgroße Organisationen und Teams", + "btnText": "Jetzt Premium erhalten in", + "comingSoon": "Microsoft Azure- und Google Cloud-Support demnächst verfügbar", + "description": "Für mittelgroße Organisationen und Teams", + "price": "Skalierbar", + "features": [ + "Selbstverwaltete Zuverlässigkeit durch verschiedene Cloud-Anbieter", + "Einzelarbeitsbereich", + "WebApp-Logo & Markenanpassung", + "Priorisierte E-Mail- und Chatsupport" + ] + } + }, + "vectorSpace": { + "fullTip": "Vektorraum ist voll.", + "fullSolution": "Upgraden Sie Ihren Tarif, um mehr Speicherplatz zu erhalten." + }, + "apps": { + "contactUs": "Kontaktieren Sie uns", + "fullTip1": "Upgrade, um mehr Apps zu erstellen", + "fullTip2des": "Es wird empfohlen, inaktive Anwendungen zu bereinigen, um Speicherplatz freizugeben, oder uns zu kontaktieren.", + "fullTip1des": "Sie haben das Limit für das Erstellen von Apps in diesem Plan erreicht.", + "fullTip2": "Limit erreicht" + }, + "annotatedResponse": { + "fullTipLine1": "Upgraden Sie Ihren Tarif, um", + "fullTipLine2": "mehr Konversationen zu annotieren.", + "quotaTitle": "Kontingent für Annotation-Antworten" + }, + "usagePage": { + "buildApps": "Apps erstellen", + "annotationQuota": "Annotierungsquote", + "teamMembers": "Teammitglieder", + "documentsUploadQuota": "Dokumenten-Upload-Quota", + "vectorSpace": "Wissensdatenbank", + "vectorSpaceTooltip": "Dokumente mit dem Hochqualitäts-Indexierungsmodus verbrauchen Ressourcen des Knowledge Data Storage. Wenn der Knowledge Data Storage die Grenze erreicht, werden keine neuen Dokumente hochgeladen.", + "perMonth": "pro Monat", + "triggerEvents": "Auslöser-Ereignisse", + "resetsIn": "Setzt in {{count,number}} Tagen zurück" + }, + "teamMembers": "Teammitglieder", + "triggerLimitModal": { + "dismiss": "Schließen", + "upgrade": "Aktualisieren", + "title": "Upgrade, um mehr Auslöser-Ereignisse freizuschalten", + "usageTitle": "AUSLÖSEEREIGNISSE", + "description": "Sie haben das Limit der Workflow-Ereignisauslöser für diesen Plan erreicht." + }, + "viewBillingTitle": "Abrechnung und Abonnements", + "viewBillingDescription": "Zahlungsmethoden, Rechnungen und Abonnementänderungen verwalten", + "viewBillingAction": "Verwalten", + "upgrade": { + "uploadMultiplePages": { + "title": "Upgrade, um mehrere Dokumente gleichzeitig hochzuladen", + "description": "Sie haben das Upload-Limit erreicht – in Ihrem aktuellen Tarif kann jeweils nur ein Dokument ausgewählt und hochgeladen werden." + }, + "uploadMultipleFiles": { + "title": "Upgrade, um den Massen-Upload von Dokumenten freizuschalten", + "description": "Lade mehrere Dokumente gleichzeitig hoch, um Zeit zu sparen und die Effizienz zu steigern." + }, + "addChunks": { + "title": "Upgraden, um weiterhin Abschnitte hinzuzufügen", + "description": "Sie haben das Limit für das Hinzufügen von Abschnitten in diesem Tarif erreicht." + } + } +} diff --git a/web/i18n/de-DE/billing.ts b/web/i18n/de-DE/billing.ts deleted file mode 100644 index 1b92851558..0000000000 --- a/web/i18n/de-DE/billing.ts +++ /dev/null @@ -1,221 +0,0 @@ -const translation = { - currentPlan: 'Aktueller Tarif', - upgradeBtn: { - plain: 'Tarif Upgraden', - encourage: 'Jetzt Upgraden', - encourageShort: 'Upgraden', - }, - viewBilling: 'Abrechnung und Abonnements verwalten', - buyPermissionDeniedTip: 'Bitte kontaktieren Sie Ihren Unternehmensadministrator, um zu abonnieren', - plansCommon: { - yearlyTip: 'Erhalten Sie 2 Monate kostenlos durch jährliches Abonnieren!', - mostPopular: 'Am beliebtesten', - planRange: { - monthly: 'Monatlich', - yearly: 'Jährlich', - }, - month: 'Monat', - year: 'Jahr', - save: 'Sparen ', - free: 'Kostenlos', - currentPlan: 'Aktueller Tarif', - contractSales: 'Vertrieb kontaktieren', - contractOwner: 'Teammanager kontaktieren', - startForFree: 'Kostenlos starten', - contactSales: 'Vertrieb kontaktieren', - talkToSales: 'Mit dem Vertrieb sprechen', - modelProviders: 'Modellanbieter', - buildApps: 'Apps bauen', - vectorSpace: 'Vektorraum', - vectorSpaceTooltip: 'Vektorraum ist das Langzeitspeichersystem, das erforderlich ist, damit LLMs Ihre Daten verstehen können.', - documentProcessingPriority: 'Priorität der Dokumentenverarbeitung', - documentProcessingPriorityTip: 'Für eine höhere Priorität bei der Dokumentenverarbeitung upgraden Sie bitte Ihren Plan.', - documentProcessingPriorityUpgrade: 'Mehr Daten mit höherer Genauigkeit bei schnelleren Geschwindigkeiten verarbeiten.', - priority: { - 'standard': 'Standard', - 'priority': 'Priorität', - 'top-priority': 'Höchste Priorität', - }, - logsHistory: 'Protokollverlauf', - customTools: 'Benutzerdefinierte Werkzeuge', - unavailable: 'Nicht verfügbar', - days: 'Tage', - unlimited: 'Unbegrenzt', - support: 'Support', - supportItems: { - communityForums: 'Community-Foren', - emailSupport: 'E-Mail-Support', - priorityEmail: 'Priorisierter E-Mail- und Chat-Support', - logoChange: 'Logo-Änderung', - SSOAuthentication: 'SSO-Authentifizierung', - personalizedSupport: 'Persönlicher Support', - dedicatedAPISupport: 'Dedizierter API-Support', - customIntegration: 'Benutzerdefinierte Integration und Support', - ragAPIRequest: 'RAG-API-Anfragen', - bulkUpload: 'Massenupload von Dokumenten', - agentMode: 'Agentenmodus', - workflow: 'Workflow', - llmLoadingBalancing: 'LLM-Lastausgleich', - llmLoadingBalancingTooltip: 'Fügen Sie Modellen mehrere API-Schlüssel hinzu, um die API-Ratenlimits effektiv zu umgehen.', - }, - comingSoon: 'Demnächst', - member: 'Mitglied', - memberAfter: 'Mitglied', - messageRequest: { - title: 'Nachrichtenguthaben', - tooltip: 'Nachrichtenaufrufkontingente für verschiedene Tarife unter Verwendung von OpenAI-Modellen (außer gpt4).Nachrichten über dem Limit verwenden Ihren OpenAI-API-Schlüssel.', - titlePerMonth: '{{count,number}} Nachrichten/Monat', - }, - annotatedResponse: { - title: 'Kontingentgrenzen für Annotationen', - tooltip: 'Manuelle Bearbeitung und Annotation von Antworten bieten anpassbare, hochwertige Frage-Antwort-Fähigkeiten für Apps. (Nur anwendbar in Chat-Apps)', - }, - ragAPIRequestTooltip: 'Bezieht sich auf die Anzahl der API-Aufrufe, die nur die Wissensdatenbankverarbeitungsfähigkeiten von Dify aufrufen.', - receiptInfo: 'Nur der Teaminhaber und der Teamadministrator können abonnieren und Abrechnungsinformationen einsehen', - annotationQuota: 'Kontingent für Anmerkungen', - unlimitedApiRate: 'Keine API-Ratebeschränkung', - teamMember_other: '{{count,number}} Teammitglieder', - priceTip: 'pro Arbeitsbereich/', - teamWorkspace: '{{count,number}} Team Arbeitsplatz', - annualBilling: 'Jährliche Abrechnung', - self: 'Selbst gehostet', - freeTrialTipPrefix: 'Melden Sie sich an und erhalten Sie ein', - cloud: 'Cloud-Dienst', - apiRateLimitTooltip: 'Die API-Datenbeschränkung gilt für alle Anfragen, die über die Dify-API gemacht werden, einschließlich Textgenerierung, Chat-Konversationen, Workflow-Ausführungen und Dokumentenverarbeitung.', - getStarted: 'Loslegen', - apiRateLimitUnit: '{{count,number}}', - documentsTooltip: 'Vorgabe für die Anzahl der Dokumente, die aus der Wissensdatenquelle importiert werden.', - apiRateLimit: 'API-Datenlimit', - documents: '{{count,number}} Wissensdokumente', - comparePlanAndFeatures: 'Pläne und Funktionen vergleichen', - freeTrialTipSuffix: 'Keine Kreditkarte erforderlich', - freeTrialTip: 'kostenlose Testversion von 200 OpenAI-Anfragen.', - documentsRequestQuota: '{{count,number}}/min Wissensanforderungsratenlimit', - teamMember_one: '{{count,number}} Teammitglied', - documentsRequestQuotaTooltip: 'Gibt die Gesamtzahl der Aktionen an, die ein Arbeitsbereich pro Minute innerhalb der Wissensbasis ausführen kann, einschließlich der Erstellung, Löschung, Aktualisierung von Datensätzen, des Hochladens von Dokumenten, von Änderungen, der Archivierung und von Abfragen in der Wissensbasis. Diese Kennzahl wird verwendet, um die Leistung von Anfragen an die Wissensbasis zu bewerten. Wenn ein Sandbox-Nutzer beispielsweise in einer Minute 10 aufeinanderfolgende Testdurchläufe durchführt, wird sein Arbeitsbereich für die nächste Minute vorübergehend daran gehindert, die folgenden Aktionen auszuführen: Erstellung, Löschung, Aktualisierung von Datensätzen sowie das Hochladen oder Ändern von Dokumenten.', - startBuilding: 'Beginnen Sie mit der Entwicklung', - taxTipSecond: 'Wenn in Ihrer Region keine relevanten Steuervorschriften gelten, wird an der Kasse keine Steuer angezeigt und Ihnen werden während der gesamten Abonnementlaufzeit keine zusätzlichen Gebühren berechnet.', - taxTip: 'Alle Abonnementspreise (monatlich/jährlich) verstehen sich zuzüglich der geltenden Steuern (z. B. MwSt., Umsatzsteuer).', - triggerEvents: { - tooltip: 'Die Anzahl der Ereignisse, die Workflows automatisch über Plugin-, Zeitplan- oder Webhook-Auslöser starten.', - unlimited: 'Unbegrenzte Auslöser-Ereignisse', - sandbox: '{{count,number}} Ereignisse auslösen', - professional: '{{count,number}} Auslöseereignisse/Monat', - }, - workflowExecution: { - faster: 'Schnellere Arbeitsablauf-Ausführung', - tooltip: 'Priorität und Geschwindigkeit der Arbeitsablauf-Ausführungswarteschlange.', - priority: 'Prioritäts-Workflow-Ausführung', - standard: 'Standard-Workflow-Ausführung', - }, - startNodes: { - unlimited: 'Unbegrenzte Auslöser/Workflows', - limited: 'Bis zu {{count}} Auslöser/Workflows', - }, - title: { - plans: 'Pläne', - description: 'Wählen Sie den Plan, der am besten zu den Bedürfnissen Ihres Teams passt.', - }, - }, - plans: { - sandbox: { - name: 'Sandbox', - description: '200 mal GPT kostenlos testen', - for: 'Kostenlose Testversion der Kernfunktionen', - }, - professional: { - name: 'Professionell', - description: 'Für Einzelpersonen und kleine Teams, um mehr Leistung erschwinglich freizuschalten.', - for: 'Für unabhängige Entwickler/kleine Teams', - }, - team: { - name: 'Team', - description: 'Zusammenarbeiten ohne Grenzen und Top-Leistung genießen.', - for: 'Für mittelgroße Teams', - }, - enterprise: { - name: 'Unternehmen', - description: 'Erhalten Sie volle Fähigkeiten und Unterstützung für großangelegte, missionskritische Systeme.', - includesTitle: 'Alles im Team-Tarif, plus:', - btnText: 'Vertrieb kontaktieren', - price: 'Benutzerdefiniert', - priceTip: 'Jährliche Abrechnung nur', - for: 'Für große Teams', - features: ['Unternehmensgerechte skalierbare Bereitstellungslösungen', 'Gewerbliche Lizenzgenehmigung', 'Exklusive Unternehmensfunktionen', 'Mehrere Arbeitsbereiche & Unternehmensverwaltung', 'SSO', 'Von Dify-Partnern ausgehandelte SLAs', 'Erweiterte Sicherheit & Steuerungen', 'Updates und Wartung offiziell von Dify', 'Professioneller technischer Support'], - }, - community: { - description: 'Für Einzelbenutzer, kleine Teams oder nicht-kommerzielle Projekte', - for: 'Für Einzelbenutzer, kleine Teams oder nicht-kommerzielle Projekte', - btnText: 'Beginnen Sie mit der Gemeinschaft', - price: 'Kostenlos', - includesTitle: 'Kostenlose Funktionen:', - name: 'Gemeinschaft', - features: ['Alle Kernfunktionen im öffentlichen Repository veröffentlicht', 'Einzelarbeitsbereich', 'Entspricht der Dify Open-Source-Lizenz'], - }, - premium: { - includesTitle: 'Alles aus der Community, plus:', - name: 'Premium', - priceTip: 'Basierend auf dem Cloud-Marktplatz', - for: 'Für mittelgroße Organisationen und Teams', - btnText: 'Jetzt Premium erhalten in', - comingSoon: 'Microsoft Azure- und Google Cloud-Support demnächst verfügbar', - description: 'Für mittelgroße Organisationen und Teams', - price: 'Skalierbar', - features: ['Selbstverwaltete Zuverlässigkeit durch verschiedene Cloud-Anbieter', 'Einzelarbeitsbereich', 'WebApp-Logo & Markenanpassung', 'Priorisierte E-Mail- und Chatsupport'], - }, - }, - vectorSpace: { - fullTip: 'Vektorraum ist voll.', - fullSolution: 'Upgraden Sie Ihren Tarif, um mehr Speicherplatz zu erhalten.', - }, - apps: { - contactUs: 'Kontaktieren Sie uns', - fullTip1: 'Upgrade, um mehr Apps zu erstellen', - fullTip2des: 'Es wird empfohlen, inaktive Anwendungen zu bereinigen, um Speicherplatz freizugeben, oder uns zu kontaktieren.', - fullTip1des: 'Sie haben das Limit für das Erstellen von Apps in diesem Plan erreicht.', - fullTip2: 'Limit erreicht', - }, - annotatedResponse: { - fullTipLine1: 'Upgraden Sie Ihren Tarif, um', - fullTipLine2: 'mehr Konversationen zu annotieren.', - quotaTitle: 'Kontingent für Annotation-Antworten', - }, - usagePage: { - buildApps: 'Apps erstellen', - annotationQuota: 'Annotierungsquote', - teamMembers: 'Teammitglieder', - documentsUploadQuota: 'Dokumenten-Upload-Quota', - vectorSpace: 'Wissensdatenbank', - vectorSpaceTooltip: 'Dokumente mit dem Hochqualitäts-Indexierungsmodus verbrauchen Ressourcen des Knowledge Data Storage. Wenn der Knowledge Data Storage die Grenze erreicht, werden keine neuen Dokumente hochgeladen.', - perMonth: 'pro Monat', - triggerEvents: 'Auslöser-Ereignisse', - resetsIn: 'Setzt in {{count,number}} Tagen zurück', - }, - teamMembers: 'Teammitglieder', - triggerLimitModal: { - dismiss: 'Schließen', - upgrade: 'Aktualisieren', - title: 'Upgrade, um mehr Auslöser-Ereignisse freizuschalten', - usageTitle: 'AUSLÖSEEREIGNISSE', - description: 'Sie haben das Limit der Workflow-Ereignisauslöser für diesen Plan erreicht.', - }, - viewBillingTitle: 'Abrechnung und Abonnements', - viewBillingDescription: 'Zahlungsmethoden, Rechnungen und Abonnementänderungen verwalten', - viewBillingAction: 'Verwalten', - upgrade: { - uploadMultiplePages: { - title: 'Upgrade, um mehrere Dokumente gleichzeitig hochzuladen', - description: 'Sie haben das Upload-Limit erreicht – in Ihrem aktuellen Tarif kann jeweils nur ein Dokument ausgewählt und hochgeladen werden.', - }, - uploadMultipleFiles: { - title: 'Upgrade, um den Massen-Upload von Dokumenten freizuschalten', - description: 'Lade mehrere Dokumente gleichzeitig hoch, um Zeit zu sparen und die Effizienz zu steigern.', - }, - addChunks: { - title: 'Upgraden, um weiterhin Abschnitte hinzuzufügen', - description: 'Sie haben das Limit für das Hinzufügen von Abschnitten in diesem Tarif erreicht.', - }, - }, -} - -export default translation diff --git a/web/i18n/de-DE/common.json b/web/i18n/de-DE/common.json new file mode 100644 index 0000000000..7fc6ddf474 --- /dev/null +++ b/web/i18n/de-DE/common.json @@ -0,0 +1,785 @@ +{ + "api": { + "success": "Erfolg", + "actionSuccess": "Aktion erfolgreich", + "saved": "Gespeichert", + "create": "Erstellt", + "remove": "Entfernt", + "actionFailed": "Aktion fehlgeschlagen" + }, + "operation": { + "create": "Erstellen", + "confirm": "Bestätigen", + "cancel": "Abbrechen", + "clear": "Leeren", + "save": "Speichern", + "saveAndEnable": "Speichern und Aktivieren", + "edit": "Bearbeiten", + "add": "Hinzufügen", + "added": "Hinzugefügt", + "refresh": "Neustart", + "reset": "Zurücksetzen", + "search": "Suchen", + "change": "Ändern", + "remove": "Entfernen", + "send": "Senden", + "copy": "Kopieren", + "lineBreak": "Zeilenumbruch", + "sure": "Ich bin sicher", + "download": "Herunterladen", + "delete": "Löschen", + "settings": "Einstellungen", + "setup": "Einrichten", + "getForFree": "Kostenlos erhalten", + "reload": "Neu laden", + "ok": "OK", + "log": "Protokoll", + "learnMore": "Mehr erfahren", + "params": "Parameter", + "duplicate": "Duplikat", + "rename": "Umbenennen", + "audioSourceUnavailable": "AudioSource ist nicht verfügbar", + "zoomOut": "Verkleinern", + "zoomIn": "Vergrößern", + "openInNewTab": "In neuem Tab öffnen", + "copyImage": "Bild kopieren", + "close": "Schließen", + "viewMore": "MEHR SEHEN", + "regenerate": "Erneuern", + "saveAndRegenerate": "Speichern und Regenerieren von untergeordneten Chunks", + "view": "Ansehen", + "submit": "Senden", + "skip": "Schiff", + "imageCopied": "Kopiertes Bild", + "deleteApp": "App löschen", + "viewDetails": "Details anzeigen", + "in": "in", + "copied": "Kopiert", + "downloadFailed": "Download fehlgeschlagen. Bitte versuchen Sie es später erneut.", + "downloadSuccess": "Download abgeschlossen.", + "more": "Mehr", + "format": "Format", + "selectAll": "Alles auswählen", + "deSelectAll": "Alle abwählen", + "config": "Konfiguration", + "yes": "Ja", + "deleteConfirmTitle": "Löschen?", + "no": "Nein", + "confirmAction": "Bitte bestätigen Sie Ihre Aktion.", + "noSearchResults": "Es wurden keine {{content}} gefunden", + "resetKeywords": "Schlüsselwörter zurücksetzen", + "selectCount": "{{count}} Ausgewählt", + "searchCount": "Finde {{count}} {{content}}", + "noSearchCount": "0 {{content}}", + "now": "Jetzt" + }, + "placeholder": { + "input": "Bitte eingeben", + "select": "Bitte auswählen", + "search": "Suchen..." + }, + "voice": { + "language": { + "zhHans": "Chinesisch", + "zhHant": "Chinesisch (traditionell)", + "enUS": "Englisch", + "deDE": "Deutsch", + "frFR": "Französisch", + "esES": "Spanisch", + "itIT": "Italienisch", + "thTH": "Thailändisch", + "idID": "Indonesisch", + "jaJP": "Japanisch", + "koKR": "Koreanisch", + "ptBR": "Portugiesisch", + "ruRU": "Russisch", + "ukUA": "Ukrainisch", + "viVN": "Vietnamesisch", + "plPL": "Polnisch", + "roRO": "Rumänisch", + "hiIN": "Hindi", + "trTR": "Türkisch", + "faIR": "Persisch", + "slSI": "Slowenisch", + "arTN": "Tunesisches Arabisch" + } + }, + "unit": { + "char": "Zeichen" + }, + "actionMsg": { + "noModification": "Im Moment keine Änderungen.", + "modifiedSuccessfully": "Erfolgreich geändert", + "modifiedUnsuccessfully": "Änderung nicht erfolgreich", + "copySuccessfully": "Erfolgreich kopiert", + "paySucceeded": "Zahlung erfolgreich", + "payCancelled": "Zahlung abgebrochen", + "generatedSuccessfully": "Erfolgreich generiert", + "generatedUnsuccessfully": "Generierung nicht erfolgreich" + }, + "model": { + "params": { + "temperature": "Temperatur", + "temperatureTip": "Kontrolliert Zufälligkeit: Eine niedrigere Temperatur führt zu weniger zufälligen Ergebnissen. Nähert sich die Temperatur null, wird das Modell deterministisch und repetitiv.", + "top_p": "Top P", + "top_pTip": "Kontrolliert Diversität über Nukleus-Sampling: 0,5 bedeutet, dass die Hälfte aller wahrscheinlichkeitsgewichteten Optionen berücksichtigt wird.", + "presence_penalty": "Präsenz-Strafe", + "presence_penaltyTip": "Wie stark neue Tokens basierend darauf bestraft werden, ob sie bereits im Text erschienen sind.\nErhöht die Wahrscheinlichkeit des Modells, über neue Themen zu sprechen.", + "frequency_penalty": "Häufigkeitsstrafe", + "frequency_penaltyTip": "Wie stark neue Tokens basierend auf ihrer bisherigen Häufigkeit im Text bestraft werden.\nVerringert die Wahrscheinlichkeit des Modells, denselben Satz wortwörtlich zu wiederholen.", + "max_tokens": "Maximale Token", + "max_tokensTip": "Begrenzt die maximale Länge der Antwort in Token. \nGrößere Werte können den Platz für Eingabeaufforderungen, Chat-Logs und Wissen begrenzen. \nEs wird empfohlen, dies unter zwei Dritteln zu setzen\ngpt-4-1106-Vorschau, gpt-4-vision-Vorschau maximale Token (Eingabe 128k Ausgabe 4k)", + "maxTokenSettingTip": "Ihre Einstellung für maximale Token ist hoch, was den Platz für Eingabeaufforderungen, Abfragen und Daten potenziell begrenzen kann. Erwägen Sie, dies unter 2/3 zu setzen.", + "setToCurrentModelMaxTokenTip": "Maximale Token auf 80 % der maximalen Token des aktuellen Modells {{maxToken}} aktualisiert.", + "stop_sequences": "Stop-Sequenzen", + "stop_sequencesTip": "Bis zu vier Sequenzen, bei denen die API die Generierung weiterer Token stoppt. Der zurückgegebene Text wird die Stop-Sequenz nicht enthalten.", + "stop_sequencesPlaceholder": "Sequenz eingeben und Tab drücken" + }, + "tone": { + "Creative": "Kreativ", + "Balanced": "Ausgewogen", + "Precise": "Präzise", + "Custom": "Benutzerdefiniert" + }, + "addMoreModel": "Gehen Sie zu den Einstellungen, um mehr Modelle hinzuzufügen", + "settingsLink": "Einstellungen für Modellanbieter", + "capabilities": "Multimodale Fähigkeiten" + }, + "menus": { + "status": "Beta", + "explore": "Erkunden", + "apps": "Studio", + "plugins": "Plugins", + "pluginsTips": "Integrieren Sie Plugins von Drittanbietern oder erstellen Sie ChatGPT-kompatible KI-Plugins.", + "datasets": "Wissen", + "datasetsTips": "BALD VERFÜGBAR: Importieren Sie Ihre eigenen Textdaten oder schreiben Sie Daten in Echtzeit über Webhook, um den LLM-Kontext zu verbessern.", + "newApp": "Neue App", + "newDataset": "Wissen erstellen", + "tools": "Werkzeuge", + "exploreMarketplace": "Marketplace erkunden", + "appDetail": "App-Details", + "account": "Konto" + }, + "userProfile": { + "settings": "Einstellungen", + "emailSupport": "E-Mail-Support", + "workspace": "Arbeitsbereich", + "createWorkspace": "Arbeitsbereich erstellen", + "helpCenter": "Hilfe", + "roadmap": "Fahrplan", + "community": "Gemeinschaft", + "about": "Über", + "logout": "Abmelden", + "compliance": "Einhaltung", + "support": "Unterstützung", + "github": "GitHub", + "contactUs": "Kontaktieren Sie uns", + "forum": "Forum" + }, + "settings": { + "accountGroup": "KONTO", + "workplaceGroup": "ARBEITSBEREICH", + "account": "Mein Konto", + "members": "Mitglieder", + "billing": "Abrechnung", + "integrations": "Integrationen", + "language": "Sprache", + "provider": "Modellanbieter", + "dataSource": "Datenquelle", + "plugin": "Plugins", + "apiBasedExtension": "API-Erweiterung", + "generalGroup": "ALLGEMEIN" + }, + "account": { + "avatar": "Avatar", + "name": "Name", + "email": "E-Mail", + "password": "Passwort", + "passwordTip": "Sie können ein dauerhaftes Passwort festlegen, wenn Sie keine temporären Anmeldecodes verwenden möchten", + "setPassword": "Ein Passwort festlegen", + "resetPassword": "Passwort zurücksetzen", + "currentPassword": "Aktuelles Passwort", + "newPassword": "Neues Passwort", + "confirmPassword": "Passwort bestätigen", + "notEqual": "Die Passwörter sind unterschiedlich.", + "langGeniusAccount": "Dify-Konto", + "langGeniusAccountTip": "Ihr Dify-Konto und zugehörige Benutzerdaten.", + "editName": "Namen bearbeiten", + "showAppLength": "{{length}} Apps anzeigen", + "delete": "Konto löschen", + "deleteTip": "Wenn Sie Ihr Konto löschen, werden alle Ihre Daten dauerhaft gelöscht und können nicht wiederhergestellt werden.", + "myAccount": "Mein Konto", + "studio": "Dify Studio", + "account": "Konto", + "deletePrivacyLinkTip": "Weitere Informationen darüber, wie wir mit Ihren Daten umgehen, finden Sie in unserer", + "deletePrivacyLink": "Datenschutzrichtlinie.", + "deleteSuccessTip": "Das Löschen Ihres Kontos benötigt einige Zeit, um vollständig gelöscht zu werden. Wir senden Ihnen eine E-Mail, wenn alles erledigt ist.", + "deleteLabel": "Zur Bestätigung geben Sie bitte unten Ihre E-Mail-Adresse ein", + "deletePlaceholder": "Bitte geben Sie Ihre E-Mail-Adresse ein", + "sendVerificationButton": "Verifizierungscode senden", + "verificationLabel": "Verifizierungs-Code", + "verificationPlaceholder": "Fügen Sie den 6-stelligen Code ein", + "feedbackTitle": "Feedback", + "feedbackLabel": "Sagen Sie uns, warum Sie Ihr Konto gelöscht haben?", + "feedbackPlaceholder": "Wahlfrei", + "permanentlyDeleteButton": "Konto dauerhaft löschen", + "workspaceIcon": "Arbeitsbereichssymbol", + "workspaceName": "Arbeitsbereichsname", + "editWorkspaceInfo": "Arbeitsbereichsinformationen bearbeiten", + "changeEmail": { + "codeLabel": "Bestätigungscode", + "sendVerifyCode": "Überprüfungs-Code senden", + "resend": "Erneut senden", + "continue": "Fortsetzen", + "verifyEmail": "Überprüfen Sie Ihre aktuelle E-Mail", + "newEmail": "Richten Sie eine neue E-Mail-Adresse ein", + "codePlaceholder": "Geben Sie den 6-stelligen Code ein", + "resendTip": "Haben Sie keinen Code erhalten?", + "title": "E-Mail ändern", + "content2": "Ihre aktuelle E-Mail-Adresse lautet {{email}}. Der Bestätigungscode wurde an diese E-Mail-Adresse gesendet.", + "verifyNew": "Bestätigen Sie Ihre neue E-Mail", + "changeTo": "Ändern zu {{email}}", + "content1": "Wenn Sie fortfahren, senden wir einen Bestätigungscode an {{email}} zur erneuten Authentifizierung.", + "resendCount": "Erneut senden in {{count}}s", + "content4": "Wir haben Ihnen gerade einen vorübergehenden Verifizierungscode an {{email}} gesendet.", + "emailPlaceholder": "Geben Sie eine neue E-Mail-Adresse ein", + "content3": "Geben Sie eine neue E-Mail-Adresse ein, und wir senden Ihnen einen Bestätigungscode.", + "existingEmail": "Ein Benutzer mit dieser E-Mail-Adresse existiert bereits.", + "emailLabel": "Neue E-Mail", + "authTip": "Sobald Ihre E-Mail geändert wurde, können Google- oder GitHub-Konten, die mit Ihrer alten E-Mail verknüpft sind, nicht mehr auf dieses Konto zugreifen.", + "unAvailableEmail": "Diese E-Mail ist vorübergehend nicht verfügbar." + } + }, + "members": { + "team": "Team", + "invite": "Hinzufügen", + "name": "NAME", + "lastActive": "ZULETZT AKTIV", + "role": "ROLLEN", + "pending": "Ausstehend...", + "owner": "Eigentümer", + "admin": "Admin", + "adminTip": "Kann Apps erstellen & Team-Einstellungen verwalten", + "normal": "Normal", + "normalTip": "Kann nur Apps verwenden, kann keine Apps erstellen", + "editor": "Editor", + "editorTip": "Kann Apps erstellen & bearbeiten", + "inviteTeamMember": "Teammitglied hinzufügen", + "inviteTeamMemberTip": "Sie können direkt nach der Anmeldung auf Ihre Teamdaten zugreifen.", + "emailNotSetup": "E-Mail-Server ist nicht eingerichtet, daher können keine Einladungs-E-Mails versendet werden. Bitte informieren Sie die Benutzer über den Einladungslink, der nach der Einladung ausgestellt wird.", + "email": "E-Mail", + "emailInvalid": "Ungültiges E-Mail-Format", + "emailPlaceholder": "Bitte E-Mails eingeben", + "sendInvite": "Einladung senden", + "invitedAsRole": "Eingeladen als {{role}}-Benutzer", + "invitationSent": "Einladung gesendet", + "invitationSentTip": "Einladung gesendet, und sie können sich bei Dify anmelden, um auf Ihre Teamdaten zuzugreifen.", + "invitationLink": "Einladungslink", + "failedInvitationEmails": "Die folgenden Benutzer wurden nicht erfolgreich eingeladen", + "ok": "OK", + "removeFromTeam": "Vom Team entfernen", + "removeFromTeamTip": "Wird den Teamzugang entfernen", + "setAdmin": "Als Administrator einstellen", + "setMember": "Als normales Mitglied einstellen", + "setEditor": "Als Editor einstellen", + "disInvite": "Einladung widerrufen", + "deleteMember": "Mitglied löschen", + "you": "(Du)", + "setBuilder": "Als Builder festlegen", + "datasetOperator": "Wissensadministrator", + "datasetOperatorTip": "Kann die Wissensdatenbank nur verwalten", + "builder": "Bauherr", + "builderTip": "Kann eigene Apps erstellen und bearbeiten", + "transferModal": { + "verifyEmail": "Überprüfen Sie Ihre aktuelle E-Mail", + "resendTip": "Haben Sie keinen Code erhalten?", + "continue": "Fortsetzen", + "resend": "Erneut senden", + "sendVerifyCode": "Überprüfungs-Code senden", + "title": "Übertragung des Besitzes des Arbeitsbereichs", + "codePlaceholder": "Geben Sie den 6-stelligen Code ein", + "transfer": "Übertragung des Besitzes des Arbeitsbereichs", + "warningTip": "Du wirst ein Administrationsmitglied, und der neue Eigentümer wird die volle Kontrolle haben.", + "codeLabel": "Bestätigungscode", + "transferPlaceholder": "Wählen Sie ein Arbeitsbereichsmitglied aus…", + "verifyContent": "Ihre aktuelle E-Mail ist {{email}}.", + "resendCount": "Erneut senden in {{count}}s", + "transferLabel": "Übertragen Sie die Eigentümerschaft des Arbeitsbereichs auf", + "warning": "Sie sind dabei, das Eigentum an „{{workspace}}“ zu übertragen. Dies tritt sofort in Kraft und kann nicht rückgängig gemacht werden.", + "verifyContent2": "Wir werden einen temporären Bestätigungscode an diese E-Mail senden, um die erneute Authentifizierung durchzuführen.", + "sendTip": "Wenn Sie fortfahren, senden wir einen Bestätigungscode an {{email}} zur erneuten Authentifizierung." + }, + "transferOwnership": "Eigentum übertragen" + }, + "integrations": { + "connected": "Verbunden", + "google": "Google", + "googleAccount": "Mit Google-Konto anmelden", + "github": "GitHub", + "githubAccount": "Mit GitHub-Konto anmelden", + "connect": "Verbinden" + }, + "language": { + "displayLanguage": "Anzeigesprache", + "timezone": "Zeitzone" + }, + "provider": { + "apiKey": "API-Schlüssel", + "enterYourKey": "Geben Sie hier Ihren API-Schlüssel ein", + "invalidKey": "Ungültiger OpenAI API-Schlüssel", + "validatedError": "Validierung fehlgeschlagen: ", + "validating": "Schlüssel wird validiert...", + "saveFailed": "API-Schlüssel speichern fehlgeschlagen", + "apiKeyExceedBill": "Dieser API-SCHLÜSSEL verfügt über kein verfügbares Kontingent, bitte lesen", + "addKey": "Schlüssel hinzufügen", + "comingSoon": "Demnächst verfügbar", + "editKey": "Bearbeiten", + "invalidApiKey": "Ungültiger API-Schlüssel", + "azure": { + "apiBase": "API-Basis", + "apiBasePlaceholder": "Die API-Basis-URL Ihres Azure OpenAI-Endpunkts.", + "apiKey": "API-Schlüssel", + "apiKeyPlaceholder": "Geben Sie hier Ihren API-Schlüssel ein", + "helpTip": "Azure OpenAI Service kennenlernen" + }, + "openaiHosted": { + "openaiHosted": "Gehostetes OpenAI", + "onTrial": "IN PROBE", + "exhausted": "KONTINGENT ERSCHÖPFT", + "desc": "Der OpenAI-Hostingdienst von Dify ermöglicht es Ihnen, Modelle wie GPT-3.5 zu verwenden. Bevor Ihr Probe-Kontingent aufgebraucht ist, müssen Sie andere Modellanbieter einrichten.", + "callTimes": "Anrufzeiten", + "usedUp": "Probe-Kontingent aufgebraucht. Eigenen Modellanbieter hinzufügen.", + "useYourModel": "Derzeit wird eigener Modellanbieter verwendet.", + "close": "Schließen" + }, + "anthropicHosted": { + "anthropicHosted": "Anthropic Claude", + "onTrial": "IN PROBE", + "exhausted": "KONTINGENT ERSCHÖPFT", + "desc": "Leistungsstarkes Modell, das bei einer Vielzahl von Aufgaben von anspruchsvollen Dialogen und kreativer Inhalteerstellung bis hin zu detaillierten Anweisungen hervorragend ist.", + "callTimes": "Anrufzeiten", + "usedUp": "Testkontingent aufgebraucht. Eigenen Modellanbieter hinzufügen.", + "useYourModel": "Derzeit wird eigener Modellanbieter verwendet.", + "close": "Schließen", + "trialQuotaTip": "Ihr Anthropic-Testkontingent läuft am 11.03.2025 ab und steht danach nicht mehr zur Verfügung. Bitte machen Sie rechtzeitig davon Gebrauch." + }, + "anthropic": { + "using": "Die Einbettungsfähigkeit verwendet", + "enableTip": "Um das Anthropische Modell zu aktivieren, müssen Sie sich zuerst mit OpenAI oder Azure OpenAI Service verbinden.", + "notEnabled": "Nicht aktiviert", + "keyFrom": "Holen Sie Ihren API-Schlüssel von Anthropic" + }, + "encrypted": { + "front": "Ihr API-SCHLÜSSEL wird verschlüsselt und mit", + "back": " Technologie gespeichert." + } + }, + "modelProvider": { + "notConfigured": "Das Systemmodell wurde noch nicht vollständig konfiguriert, und einige Funktionen sind möglicherweise nicht verfügbar.", + "systemModelSettings": "Systemmodell-Einstellungen", + "systemModelSettingsLink": "Warum ist es notwendig, ein Systemmodell einzurichten?", + "selectModel": "Wählen Sie Ihr Modell", + "setupModelFirst": "Bitte richten Sie zuerst Ihr Modell ein", + "systemReasoningModel": { + "key": "System-Reasoning-Modell", + "tip": "Legen Sie das Standardinferenzmodell fest, das für die Erstellung von Anwendungen verwendet wird, sowie Funktionen wie die Generierung von Dialognamen und die Vorschlagserstellung für die nächste Frage, die auch das Standardinferenzmodell verwenden." + }, + "embeddingModel": { + "key": "Einbettungsmodell", + "tip": "Legen Sie das Standardmodell für die Dokumenteneinbettungsverarbeitung des Wissens fest, sowohl die Wiederherstellung als auch der Import des Wissens verwenden dieses Einbettungsmodell für die Vektorisierungsverarbeitung. Ein Wechsel wird dazu führen, dass die Vektordimension zwischen dem importierten Wissen und der Frage inkonsistent ist, was zu einem Wiederherstellungsfehler führt. Um einen Wiederherstellungsfehler zu vermeiden, wechseln Sie dieses Modell bitte nicht willkürlich.", + "required": "Einbettungsmodell ist erforderlich" + }, + "speechToTextModel": { + "key": "Sprach-zu-Text-Modell", + "tip": "Legen Sie das Standardmodell für die Spracheingabe in Konversationen fest." + }, + "ttsModel": { + "key": "Text-zu-Sprache-Modell", + "tip": "Legen Sie das Standardmodell für die Text-zu-Sprache-Eingabe in Konversationen fest." + }, + "rerankModel": { + "key": "Rerank-Modell", + "tip": "Rerank-Modell wird die Kandidatendokumentenliste basierend auf der semantischen Übereinstimmung mit der Benutzeranfrage neu ordnen und die Ergebnisse der semantischen Rangordnung verbessern" + }, + "quota": "Kontingent", + "searchModel": "Suchmodell", + "noModelFound": "Kein Modell für {{model}} gefunden", + "models": "Modelle", + "showMoreModelProvider": "Zeige mehr Modellanbieter", + "selector": { + "tip": "Dieses Modell wurde entfernt. Bitte fügen Sie ein Modell hinzu oder wählen Sie ein anderes Modell.", + "emptyTip": "Keine verfügbaren Modelle", + "emptySetting": "Bitte gehen Sie zu den Einstellungen, um zu konfigurieren", + "rerankTip": "Bitte richten Sie das Rerank-Modell ein" + }, + "card": { + "quota": "KONTINGENT", + "onTrial": "In Probe", + "paid": "Bezahlt", + "quotaExhausted": "Kontingent erschöpft", + "callTimes": "Anrufzeiten", + "tokens": "Token", + "buyQuota": "Kontingent kaufen", + "priorityUse": "Priorisierte Nutzung", + "removeKey": "API-Schlüssel entfernen", + "tip": "Der bezahlten Kontingent wird Vorrang gegeben. Das Testkontingent wird nach dem Verbrauch des bezahlten Kontingents verwendet." + }, + "item": { + "deleteDesc": "{{modelName}} werden als System-Reasoning-Modelle verwendet. Einige Funktionen stehen nach der Entfernung nicht zur Verfügung. Bitte bestätigen.", + "freeQuota": "KOSTENLOSES KONTINGENT" + }, + "addApiKey": "Fügen Sie Ihren API-Schlüssel hinzu", + "invalidApiKey": "Ungültiger API-Schlüssel", + "encrypted": { + "front": "Ihr API-SCHLÜSSEL wird verschlüsselt und mit", + "back": " Technologie gespeichert." + }, + "freeQuota": { + "howToEarn": "Wie zu verdienen" + }, + "addMoreModelProvider": "MEHR MODELLANBIETER HINZUFÜGEN", + "addModel": "Modell hinzufügen", + "modelsNum": "{{num}} Modelle", + "showModels": "Modelle anzeigen", + "showModelsNum": "Zeige {{num}} Modelle", + "collapse": "Einklappen", + "config": "Konfigurieren", + "modelAndParameters": "Modell und Parameter", + "model": "Modell", + "featureSupported": "{{feature}} unterstützt", + "callTimes": "Anrufzeiten", + "credits": "Nachrichtenguthaben", + "buyQuota": "Kontingent kaufen", + "getFreeTokens": "Kostenlose Token erhalten", + "priorityUsing": "Bevorzugte Nutzung", + "deprecated": "Veraltet", + "confirmDelete": "Löschung bestätigen?", + "quotaTip": "Verbleibende verfügbare kostenlose Token", + "loadPresets": "Voreinstellungen laden", + "parameters": "PARAMETER", + "loadBalancingHeadline": "Lastenausgleich", + "apiKey": "API-SCHLÜSSEL", + "editConfig": "Konfiguration bearbeiten", + "loadBalancing": "Lastenausgleich", + "addConfig": "Konfiguration hinzufügen", + "configLoadBalancing": "Lastenausgleich für die Konfiguration", + "providerManagedDescription": "Verwenden Sie den einzelnen Satz von Anmeldeinformationen, der vom Modellanbieter bereitgestellt wird.", + "loadBalancingDescription": "Reduzieren Sie den Druck mit mehreren Sätzen von Anmeldeinformationen.", + "modelHasBeenDeprecated": "Dieses Modell ist veraltet", + "loadBalancingLeastKeyWarning": "Um den Lastausgleich zu aktivieren, müssen mindestens 2 Schlüssel aktiviert sein.", + "providerManaged": "Vom Anbieter verwaltet", + "apiKeyStatusNormal": "APIKey-Status ist normal", + "upgradeForLoadBalancing": "Aktualisieren Sie Ihren Plan, um den Lastenausgleich zu aktivieren.", + "defaultConfig": "Standardkonfiguration", + "apiKeyRateLimit": "Ratenlimit wurde erreicht, verfügbar nach {{seconds}}s", + "loadBalancingInfo": "Standardmäßig wird für den Lastenausgleich die Round-Robin-Strategie verwendet. Wenn die Ratenbegrenzung ausgelöst wird, wird eine Abklingzeit von 1 Minute angewendet.", + "emptyProviderTip": "Bitte installieren Sie zuerst einen Modellanbieter.", + "configureTip": "Einrichten des API-Schlüssels oder Hinzufügen des zu verwendenden Modells", + "discoverMore": "Erfahren Sie mehr in", + "installProvider": "Installieren von Modellanbietern", + "toBeConfigured": "Zu konfigurieren", + "emptyProviderTitle": "Modellanbieter nicht eingerichtet", + "auth": { + "apiKeyModal": { + "addModel": "Modell hinzufügen", + "title": "API-Schlüssel-Autorisierungskonfiguration", + "desc": "Nachdem die Anmeldeinformationen konfiguriert wurden, können alle Mitglieder des Arbeitsbereichs dieses Modell beim Orchestrieren von Anwendungen verwenden." + }, + "specifyModelCredential": "Angeben von Modellanmeldeinformationen", + "addNewModel": "Neues Modell hinzufügen", + "addCredential": "Anmeldeinformationen hinzufügen", + "providerManaged": "Anbieter verwaltet", + "addApiKey": "API-Schlüssel hinzufügen", + "apiKeys": "API-Schlüssel", + "unAuthorized": "Unbefugt", + "authorizationError": "Autorisierungsfehler", + "modelCredentials": "Modellanmeldeinformationen", + "configModel": "Konfigurationsmodell", + "authRemoved": "Die Authentifizierung wurde entfernt.", + "addModelCredential": "Modellberechtigungen hinzufügen", + "providerManagedTip": "Die aktuelle Konfiguration wird vom Anbieter gehostet.", + "configLoadBalancing": "Konfiguration Lastenverteilung", + "specifyModelCredentialTip": "Verwenden Sie ein konfiguriertes Modellzugang.", + "manageCredentials": "Anmeldeinformationen verwalten", + "selectModelCredential": "Wählen Sie eine Modellberechtigung aus", + "modelCredential": "Zeugnis des Modells", + "addModel": "Modell hinzufügen", + "customModelCredentials": "Anmeldeinformationen für benutzerdefinierte Modelle", + "removeModel": "Modell entfernen", + "addNewModelCredential": "Hinzufügen neuer Modellanmeldeinformationen", + "editModelCredential": "Bearbeiten von Modellanmeldeinformationen", + "customModelCredentialsDeleteTip": "Anmeldeinformationen werden verwendet und können nicht gelöscht werden" + }, + "parametersInvalidRemoved": "Einige Parameter sind ungültig und wurden entfernt.", + "installDataSourceProvider": "Datenquellenanbieter installieren" + }, + "dataSource": { + "add": "Eine Datenquelle hinzufügen", + "connect": "Verbinden", + "notion": { + "title": "Notion", + "description": "Notion als Datenquelle für das Wissen verwenden.", + "connectedWorkspace": "Verbundener Arbeitsbereich", + "addWorkspace": "Arbeitsbereich hinzufügen", + "connected": "Verbunden", + "disconnected": "Getrennt", + "changeAuthorizedPages": "Autorisierte Seiten ändern", + "pagesAuthorized": "Autorisierte Seiten", + "sync": "Synchronisieren", + "remove": "Entfernen", + "selector": { + "pageSelected": "Ausgewählte Seiten", + "searchPages": "Seiten suchen...", + "noSearchResult": "Keine Suchergebnisse", + "addPages": "Seiten hinzufügen", + "preview": "VORSCHAU" + }, + "integratedAlert": "Notion ist über interne Anmeldeinformationen integriert, es ist keine erneute Autorisierung erforderlich." + }, + "website": { + "inactive": "Inaktiv", + "description": "Importieren Sie Inhalte von Websites mit dem Webcrawler.", + "title": "Website", + "configuredCrawlers": "Konfigurierte Crawler", + "active": "Aktiv", + "with": "Mit" + }, + "configure": "Konfigurieren" + }, + "plugin": { + "serpapi": { + "apiKey": "API-Schlüssel", + "apiKeyPlaceholder": "Geben Sie Ihren API-Schlüssel ein", + "keyFrom": "Holen Sie Ihren SerpAPI-Schlüssel von der SerpAPI-Kontoseite" + } + }, + "apiBasedExtension": { + "title": "API-Erweiterungen bieten zentralisiertes API-Management und vereinfachen die Konfiguration für eine einfache Verwendung in Difys Anwendungen.", + "link": "Erfahren Sie, wie Sie Ihre eigene API-Erweiterung entwickeln.", + "add": "API-Erweiterung hinzufügen", + "selector": { + "title": "API-Erweiterung", + "placeholder": "Bitte wählen Sie API-Erweiterung", + "manage": "API-Erweiterung verwalten" + }, + "modal": { + "title": "API-Erweiterung hinzufügen", + "editTitle": "API-Erweiterung bearbeiten", + "name": { + "title": "Name", + "placeholder": "Bitte geben Sie den Namen ein" + }, + "apiEndpoint": { + "title": "API-Endpunkt", + "placeholder": "Bitte geben Sie den API-Endpunkt ein" + }, + "apiKey": { + "title": "API-Schlüssel", + "placeholder": "Bitte geben Sie den API-Schlüssel ein", + "lengthError": "Die Länge des API-Schlüssels darf nicht weniger als 5 Zeichen betragen" + } + }, + "type": "Typ" + }, + "about": { + "changeLog": "Änderungsprotokoll", + "updateNow": "Jetzt aktualisieren", + "nowAvailable": "Dify {{version}} ist jetzt verfügbar.", + "latestAvailable": "Dify {{version}} ist die neueste verfügbare Version." + }, + "appMenus": { + "overview": "Übersicht", + "promptEng": "Orchestrieren", + "apiAccess": "API-Zugriff", + "logAndAnn": "Protokolle & Ank.", + "logs": "Baumstämme" + }, + "environment": { + "testing": "TESTEN", + "development": "ENTWICKLUNG" + }, + "appModes": { + "completionApp": "Textgenerator", + "chatApp": "Chat-App" + }, + "datasetMenus": { + "documents": "Dokumente", + "hitTesting": "Wiederherstellungstest", + "settings": "Einstellungen", + "emptyTip": "Das Wissen wurde nicht zugeordnet, bitte gehen Sie zur Anwendung oder zum Plug-in, um die Zuordnung abzuschließen.", + "viewDoc": "Dokumentation anzeigen", + "relatedApp": "verbundene Apps", + "noRelatedApp": "Keine verknüpften Apps", + "pipeline": "Rohrleitung" + }, + "voiceInput": { + "speaking": "Sprechen Sie jetzt...", + "converting": "Umwandlung in Text...", + "notAllow": "Mikrofon nicht autorisiert" + }, + "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": "Flüstern-1", + "claude-instant-1": "Claude-Instant", + "claude-2": "Claude-2" + }, + "chat": { + "renameConversation": "Konversation umbenennen", + "conversationName": "Konversationsname", + "conversationNamePlaceholder": "Bitte geben Sie den Konversationsnamen ein", + "conversationNameCanNotEmpty": "Konversationsname erforderlich", + "citation": { + "title": "ZITIERUNGEN", + "linkToDataset": "Link zum Wissen", + "characters": "Zeichen:", + "hitCount": "Abrufanzahl:", + "vectorHash": "Vektorhash:", + "hitScore": "Abrufwertung:" + }, + "inputPlaceholder": "Sprechen Sie mit dem {{botName}}", + "thought": "Gedanke", + "thinking": "Denken...", + "resend": "Erneut senden" + }, + "promptEditor": { + "placeholder": "Schreiben Sie hier Ihr Aufforderungswort, geben Sie '{' ein, um eine Variable einzufügen, geben Sie '/' ein, um einen Aufforderungs-Inhaltsblock einzufügen", + "context": { + "item": { + "title": "Kontext", + "desc": "Kontextvorlage einfügen" + }, + "modal": { + "title": "{{num}} Wissen im Kontext", + "add": "Kontext hinzufügen", + "footer": "Sie können Kontexte im unten stehenden Kontextabschnitt verwalten." + } + }, + "history": { + "item": { + "title": "Konversationsgeschichte", + "desc": "Vorlage für historische Nachricht einfügen" + }, + "modal": { + "title": "BEISPIEL", + "user": "Hallo", + "assistant": "Hallo! Wie kann ich Ihnen heute helfen?", + "edit": "Konversationsrollennamen bearbeiten" + } + }, + "variable": { + "item": { + "title": "Variablen & Externe Werkzeuge", + "desc": "Variablen & Externe Werkzeuge einfügen" + }, + "modal": { + "add": "Neue Variable", + "addTool": "Neues Werkzeug" + }, + "outputToolDisabledItem": { + "desc": "Variablen einfügen", + "title": "Variablen" + } + }, + "query": { + "item": { + "title": "Abfrage", + "desc": "Benutzerabfragevorlage einfügen" + } + }, + "existed": "Bereits im Aufforderungstext vorhanden" + }, + "imageUploader": { + "uploadFromComputer": "Vom Computer hochladen", + "uploadFromComputerReadError": "Bildlesung fehlgeschlagen, bitte versuchen Sie es erneut.", + "uploadFromComputerUploadError": "Bildupload fehlgeschlagen, bitte erneut hochladen.", + "uploadFromComputerLimit": "Hochgeladene Bilder dürfen {{size}} MB nicht überschreiten", + "pasteImageLink": "Bildlink einfügen", + "pasteImageLinkInputPlaceholder": "Bildlink hier einfügen", + "pasteImageLinkInvalid": "Ungültiger Bildlink", + "imageUpload": "Bild-Upload" + }, + "tag": { + "placeholder": "Alle Tags", + "addNew": "Neues Tag hinzufügen", + "noTag": "Keine Tags", + "noTagYet": "Noch keine Tags", + "addTag": "Tags hinzufügen", + "editTag": "Tags bearbeiten", + "manageTags": "Tags verwalten", + "selectorPlaceholder": "Typ zum Suchen oder Erstellen", + "create": "Erstellen", + "delete": "Tag löschen", + "deleteTip": "Das Tag wird verwendet, löschen?", + "created": "Tag erfolgreich erstellt", + "failed": "Tag-Erstellung fehlgeschlagen" + }, + "errorMsg": { + "fieldRequired": "{{field}} ist erforderlich", + "urlError": "Die URL sollte mit http:// oder https:// beginnen" + }, + "fileUploader": { + "uploadFromComputer": "Lokaler Upload", + "pasteFileLinkInvalid": "Ungültiger Dateilink", + "pasteFileLinkInputPlaceholder": "URL eingeben...", + "pasteFileLink": "Dateilink einfügen", + "uploadFromComputerUploadError": "Datei-Upload fehlgeschlagen, bitte erneut hochladen.", + "uploadFromComputerLimit": "Datei hochladen darf {{size}} nicht überschreiten", + "uploadFromComputerReadError": "Lesen der Datei fehlgeschlagen, bitte versuchen Sie es erneut.", + "fileExtensionNotSupport": "Dateiendung nicht bedient", + "fileExtensionBlocked": "Dieser Dateityp ist aus Sicherheitsgründen gesperrt", + "uploadDisabled": "Datei-Upload ist deaktiviert" + }, + "license": { + "expiring": "Läuft an einem Tag ab", + "expiring_plural": "Läuft in {{count}} Tagen ab", + "unlimited": "Unbegrenzt" + }, + "pagination": { + "perPage": "Artikel pro Seite" + }, + "theme": { + "light": "Licht", + "theme": "Thema", + "dark": "dunkel", + "auto": "System" + }, + "compliance": { + "iso27001": "ISO 27001:2022 Zertifizierung", + "professionalUpgradeTooltip": "Nur verfügbar mit einem Teamplan oder höher.", + "gdpr": "DSGVO DPA", + "soc2Type2": "SOC 2 Typ II Bericht", + "soc2Type1": "SOC 2 Typ I Bericht", + "sandboxUpgradeTooltip": "Nur verfügbar mit einem Professional- oder Teamplan." + }, + "imageInput": { + "dropImageHere": "Laden Sie Ihr Bild hierher hoch oder", + "browse": "blättern", + "supportedFormats": "Unterstützt PNG, JPG, JPEG, WEBP und GIF" + }, + "you": "Du", + "avatar": { + "deleteTitle": "Avatar entfernen", + "deleteDescription": "Bist du sicher, dass du dein Profilbild entfernen möchtest? Dein Konto wird das standardmäßige Anfangs-Avatar verwenden." + }, + "feedback": { + "content": "Feedback-Inhalt", + "title": "Feedback geben", + "subtitle": "Bitte sagen Sie uns, was mit dieser Antwort falsch gelaufen ist.", + "placeholder": "Bitte beschreiben Sie, was schiefgelaufen ist oder wie wir uns verbessern können..." + }, + "label": { + "optional": "(fakultativ)" + }, + "noData": "Keine Daten", + "dynamicSelect": { + "error": "Ladeoptionen konnten nicht geladen werden", + "noData": "Keine Optionen verfügbar", + "loading": "Optionen werden geladen...", + "selected": "{{count}} ausgewählt" + } +} diff --git a/web/i18n/de-DE/common.ts b/web/i18n/de-DE/common.ts deleted file mode 100644 index d9ebfd60e0..0000000000 --- a/web/i18n/de-DE/common.ts +++ /dev/null @@ -1,792 +0,0 @@ -const translation = { - api: { - success: 'Erfolg', - actionSuccess: 'Aktion erfolgreich', - saved: 'Gespeichert', - create: 'Erstellt', - remove: 'Entfernt', - actionFailed: 'Aktion fehlgeschlagen', - }, - operation: { - create: 'Erstellen', - confirm: 'Bestätigen', - cancel: 'Abbrechen', - clear: 'Leeren', - save: 'Speichern', - saveAndEnable: 'Speichern und Aktivieren', - edit: 'Bearbeiten', - add: 'Hinzufügen', - added: 'Hinzugefügt', - refresh: 'Neustart', - reset: 'Zurücksetzen', - search: 'Suchen', - change: 'Ändern', - remove: 'Entfernen', - send: 'Senden', - copy: 'Kopieren', - lineBreak: 'Zeilenumbruch', - sure: 'Ich bin sicher', - download: 'Herunterladen', - delete: 'Löschen', - settings: 'Einstellungen', - setup: 'Einrichten', - getForFree: 'Kostenlos erhalten', - reload: 'Neu laden', - ok: 'OK', - log: 'Protokoll', - learnMore: 'Mehr erfahren', - params: 'Parameter', - duplicate: 'Duplikat', - rename: 'Umbenennen', - audioSourceUnavailable: 'AudioSource ist nicht verfügbar', - zoomOut: 'Verkleinern', - zoomIn: 'Vergrößern', - openInNewTab: 'In neuem Tab öffnen', - copyImage: 'Bild kopieren', - close: 'Schließen', - viewMore: 'MEHR SEHEN', - regenerate: 'Erneuern', - saveAndRegenerate: 'Speichern und Regenerieren von untergeordneten Chunks', - view: 'Ansehen', - submit: 'Senden', - skip: 'Schiff', - imageCopied: 'Kopiertes Bild', - deleteApp: 'App löschen', - viewDetails: 'Details anzeigen', - in: 'in', - copied: 'Kopiert', - downloadFailed: 'Download fehlgeschlagen. Bitte versuchen Sie es später erneut.', - downloadSuccess: 'Download abgeschlossen.', - more: 'Mehr', - format: 'Format', - selectAll: 'Alles auswählen', - deSelectAll: 'Alle abwählen', - config: 'Konfiguration', - yes: 'Ja', - deleteConfirmTitle: 'Löschen?', - no: 'Nein', - confirmAction: 'Bitte bestätigen Sie Ihre Aktion.', - noSearchResults: 'Es wurden keine {{content}} gefunden', - resetKeywords: 'Schlüsselwörter zurücksetzen', - selectCount: '{{count}} Ausgewählt', - searchCount: 'Finde {{count}} {{content}}', - noSearchCount: '0 {{content}}', - now: 'Jetzt', - }, - placeholder: { - input: 'Bitte eingeben', - select: 'Bitte auswählen', - search: 'Suchen...', - }, - voice: { - language: { - zhHans: 'Chinesisch', - zhHant: 'Chinesisch (traditionell)', - enUS: 'Englisch', - deDE: 'Deutsch', - frFR: 'Französisch', - esES: 'Spanisch', - itIT: 'Italienisch', - thTH: 'Thailändisch', - idID: 'Indonesisch', - jaJP: 'Japanisch', - koKR: 'Koreanisch', - ptBR: 'Portugiesisch', - ruRU: 'Russisch', - ukUA: 'Ukrainisch', - viVN: 'Vietnamesisch', - plPL: 'Polnisch', - roRO: 'Rumänisch', - hiIN: 'Hindi', - trTR: 'Türkisch', - faIR: 'Persisch', - slSI: 'Slowenisch', - arTN: 'Tunesisches Arabisch', - }, - }, - unit: { - char: 'Zeichen', - }, - actionMsg: { - noModification: 'Im Moment keine Änderungen.', - modifiedSuccessfully: 'Erfolgreich geändert', - modifiedUnsuccessfully: 'Änderung nicht erfolgreich', - copySuccessfully: 'Erfolgreich kopiert', - paySucceeded: 'Zahlung erfolgreich', - payCancelled: 'Zahlung abgebrochen', - generatedSuccessfully: 'Erfolgreich generiert', - generatedUnsuccessfully: 'Generierung nicht erfolgreich', - }, - model: { - params: { - temperature: 'Temperatur', - temperatureTip: - 'Kontrolliert Zufälligkeit: Eine niedrigere Temperatur führt zu weniger zufälligen Ergebnissen. Nähert sich die Temperatur null, wird das Modell deterministisch und repetitiv.', - top_p: 'Top P', - top_pTip: - 'Kontrolliert Diversität über Nukleus-Sampling: 0,5 bedeutet, dass die Hälfte aller wahrscheinlichkeitsgewichteten Optionen berücksichtigt wird.', - presence_penalty: 'Präsenz-Strafe', - presence_penaltyTip: - 'Wie stark neue Tokens basierend darauf bestraft werden, ob sie bereits im Text erschienen sind.\nErhöht die Wahrscheinlichkeit des Modells, über neue Themen zu sprechen.', - frequency_penalty: 'Häufigkeitsstrafe', - frequency_penaltyTip: - 'Wie stark neue Tokens basierend auf ihrer bisherigen Häufigkeit im Text bestraft werden.\nVerringert die Wahrscheinlichkeit des Modells, denselben Satz wortwörtlich zu wiederholen.', - max_tokens: 'Maximale Token', - max_tokensTip: - 'Begrenzt die maximale Länge der Antwort in Token. \nGrößere Werte können den Platz für Eingabeaufforderungen, Chat-Logs und Wissen begrenzen. \nEs wird empfohlen, dies unter zwei Dritteln zu setzen\ngpt-4-1106-Vorschau, gpt-4-vision-Vorschau maximale Token (Eingabe 128k Ausgabe 4k)', - maxTokenSettingTip: 'Ihre Einstellung für maximale Token ist hoch, was den Platz für Eingabeaufforderungen, Abfragen und Daten potenziell begrenzen kann. Erwägen Sie, dies unter 2/3 zu setzen.', - setToCurrentModelMaxTokenTip: 'Maximale Token auf 80 % der maximalen Token des aktuellen Modells {{maxToken}} aktualisiert.', - stop_sequences: 'Stop-Sequenzen', - stop_sequencesTip: 'Bis zu vier Sequenzen, bei denen die API die Generierung weiterer Token stoppt. Der zurückgegebene Text wird die Stop-Sequenz nicht enthalten.', - stop_sequencesPlaceholder: 'Sequenz eingeben und Tab drücken', - }, - tone: { - Creative: 'Kreativ', - Balanced: 'Ausgewogen', - Precise: 'Präzise', - Custom: 'Benutzerdefiniert', - }, - addMoreModel: 'Gehen Sie zu den Einstellungen, um mehr Modelle hinzuzufügen', - settingsLink: 'Einstellungen für Modellanbieter', - capabilities: 'Multimodale Fähigkeiten', - }, - menus: { - status: 'Beta', - explore: 'Erkunden', - apps: 'Studio', - plugins: 'Plugins', - pluginsTips: 'Integrieren Sie Plugins von Drittanbietern oder erstellen Sie ChatGPT-kompatible KI-Plugins.', - datasets: 'Wissen', - datasetsTips: 'BALD VERFÜGBAR: Importieren Sie Ihre eigenen Textdaten oder schreiben Sie Daten in Echtzeit über Webhook, um den LLM-Kontext zu verbessern.', - newApp: 'Neue App', - newDataset: 'Wissen erstellen', - tools: 'Werkzeuge', - exploreMarketplace: 'Marketplace erkunden', - appDetail: 'App-Details', - account: 'Konto', - }, - userProfile: { - settings: 'Einstellungen', - emailSupport: 'E-Mail-Support', - workspace: 'Arbeitsbereich', - createWorkspace: 'Arbeitsbereich erstellen', - helpCenter: 'Hilfe', - roadmap: 'Fahrplan', - community: 'Gemeinschaft', - about: 'Über', - logout: 'Abmelden', - compliance: 'Einhaltung', - support: 'Unterstützung', - github: 'GitHub', - contactUs: 'Kontaktieren Sie uns', - forum: 'Forum', - }, - settings: { - accountGroup: 'KONTO', - workplaceGroup: 'ARBEITSBEREICH', - account: 'Mein Konto', - members: 'Mitglieder', - billing: 'Abrechnung', - integrations: 'Integrationen', - language: 'Sprache', - provider: 'Modellanbieter', - dataSource: 'Datenquelle', - plugin: 'Plugins', - apiBasedExtension: 'API-Erweiterung', - generalGroup: 'ALLGEMEIN', - }, - account: { - avatar: 'Avatar', - name: 'Name', - email: 'E-Mail', - password: 'Passwort', - passwordTip: 'Sie können ein dauerhaftes Passwort festlegen, wenn Sie keine temporären Anmeldecodes verwenden möchten', - setPassword: 'Ein Passwort festlegen', - resetPassword: 'Passwort zurücksetzen', - currentPassword: 'Aktuelles Passwort', - newPassword: 'Neues Passwort', - confirmPassword: 'Passwort bestätigen', - notEqual: 'Die Passwörter sind unterschiedlich.', - langGeniusAccount: 'Dify-Konto', - langGeniusAccountTip: 'Ihr Dify-Konto und zugehörige Benutzerdaten.', - editName: 'Namen bearbeiten', - showAppLength: '{{length}} Apps anzeigen', - delete: 'Konto löschen', - deleteTip: 'Wenn Sie Ihr Konto löschen, werden alle Ihre Daten dauerhaft gelöscht und können nicht wiederhergestellt werden.', - myAccount: 'Mein Konto', - studio: 'Dify Studio', - account: 'Konto', - deletePrivacyLinkTip: 'Weitere Informationen darüber, wie wir mit Ihren Daten umgehen, finden Sie in unserer', - deletePrivacyLink: 'Datenschutzrichtlinie.', - deleteSuccessTip: 'Das Löschen Ihres Kontos benötigt einige Zeit, um vollständig gelöscht zu werden. Wir senden Ihnen eine E-Mail, wenn alles erledigt ist.', - deleteLabel: 'Zur Bestätigung geben Sie bitte unten Ihre E-Mail-Adresse ein', - deletePlaceholder: 'Bitte geben Sie Ihre E-Mail-Adresse ein', - sendVerificationButton: 'Verifizierungscode senden', - verificationLabel: 'Verifizierungs-Code', - verificationPlaceholder: 'Fügen Sie den 6-stelligen Code ein', - feedbackTitle: 'Feedback', - feedbackLabel: 'Sagen Sie uns, warum Sie Ihr Konto gelöscht haben?', - feedbackPlaceholder: 'Wahlfrei', - permanentlyDeleteButton: 'Konto dauerhaft löschen', - workspaceIcon: 'Arbeitsbereichssymbol', - workspaceName: 'Arbeitsbereichsname', - editWorkspaceInfo: 'Arbeitsbereichsinformationen bearbeiten', - changeEmail: { - codeLabel: 'Bestätigungscode', - sendVerifyCode: 'Überprüfungs-Code senden', - resend: 'Erneut senden', - continue: 'Fortsetzen', - verifyEmail: 'Überprüfen Sie Ihre aktuelle E-Mail', - newEmail: 'Richten Sie eine neue E-Mail-Adresse ein', - codePlaceholder: 'Geben Sie den 6-stelligen Code ein', - resendTip: 'Haben Sie keinen Code erhalten?', - title: 'E-Mail ändern', - content2: 'Ihre aktuelle E-Mail-Adresse lautet {{email}}. Der Bestätigungscode wurde an diese E-Mail-Adresse gesendet.', - verifyNew: 'Bestätigen Sie Ihre neue E-Mail', - changeTo: 'Ändern zu {{email}}', - content1: 'Wenn Sie fortfahren, senden wir einen Bestätigungscode an {{email}} zur erneuten Authentifizierung.', - resendCount: 'Erneut senden in {{count}}s', - content4: 'Wir haben Ihnen gerade einen vorübergehenden Verifizierungscode an {{email}} gesendet.', - emailPlaceholder: 'Geben Sie eine neue E-Mail-Adresse ein', - content3: 'Geben Sie eine neue E-Mail-Adresse ein, und wir senden Ihnen einen Bestätigungscode.', - existingEmail: 'Ein Benutzer mit dieser E-Mail-Adresse existiert bereits.', - emailLabel: 'Neue E-Mail', - authTip: 'Sobald Ihre E-Mail geändert wurde, können Google- oder GitHub-Konten, die mit Ihrer alten E-Mail verknüpft sind, nicht mehr auf dieses Konto zugreifen.', - unAvailableEmail: 'Diese E-Mail ist vorübergehend nicht verfügbar.', - }, - }, - members: { - team: 'Team', - invite: 'Hinzufügen', - name: 'NAME', - lastActive: 'ZULETZT AKTIV', - role: 'ROLLEN', - pending: 'Ausstehend...', - owner: 'Eigentümer', - admin: 'Admin', - adminTip: 'Kann Apps erstellen & Team-Einstellungen verwalten', - normal: 'Normal', - normalTip: 'Kann nur Apps verwenden, kann keine Apps erstellen', - editor: 'Editor', - editorTip: 'Kann Apps erstellen & bearbeiten', - inviteTeamMember: 'Teammitglied hinzufügen', - inviteTeamMemberTip: 'Sie können direkt nach der Anmeldung auf Ihre Teamdaten zugreifen.', - emailNotSetup: 'E-Mail-Server ist nicht eingerichtet, daher können keine Einladungs-E-Mails versendet werden. Bitte informieren Sie die Benutzer über den Einladungslink, der nach der Einladung ausgestellt wird.', - email: 'E-Mail', - emailInvalid: 'Ungültiges E-Mail-Format', - emailPlaceholder: 'Bitte E-Mails eingeben', - sendInvite: 'Einladung senden', - invitedAsRole: 'Eingeladen als {{role}}-Benutzer', - invitationSent: 'Einladung gesendet', - invitationSentTip: 'Einladung gesendet, und sie können sich bei Dify anmelden, um auf Ihre Teamdaten zuzugreifen.', - invitationLink: 'Einladungslink', - failedInvitationEmails: 'Die folgenden Benutzer wurden nicht erfolgreich eingeladen', - ok: 'OK', - removeFromTeam: 'Vom Team entfernen', - removeFromTeamTip: 'Wird den Teamzugang entfernen', - setAdmin: 'Als Administrator einstellen', - setMember: 'Als normales Mitglied einstellen', - setEditor: 'Als Editor einstellen', - disInvite: 'Einladung widerrufen', - deleteMember: 'Mitglied löschen', - you: '(Du)', - setBuilder: 'Als Builder festlegen', - datasetOperator: 'Wissensadministrator', - datasetOperatorTip: 'Kann die Wissensdatenbank nur verwalten', - builder: 'Bauherr', - builderTip: 'Kann eigene Apps erstellen und bearbeiten', - transferModal: { - verifyEmail: 'Überprüfen Sie Ihre aktuelle E-Mail', - resendTip: 'Haben Sie keinen Code erhalten?', - continue: 'Fortsetzen', - resend: 'Erneut senden', - sendVerifyCode: 'Überprüfungs-Code senden', - title: 'Übertragung des Besitzes des Arbeitsbereichs', - codePlaceholder: 'Geben Sie den 6-stelligen Code ein', - transfer: 'Übertragung des Besitzes des Arbeitsbereichs', - warningTip: 'Du wirst ein Administrationsmitglied, und der neue Eigentümer wird die volle Kontrolle haben.', - codeLabel: 'Bestätigungscode', - transferPlaceholder: 'Wählen Sie ein Arbeitsbereichsmitglied aus…', - verifyContent: 'Ihre aktuelle E-Mail ist {{email}}.', - resendCount: 'Erneut senden in {{count}}s', - transferLabel: 'Übertragen Sie die Eigentümerschaft des Arbeitsbereichs auf', - warning: 'Sie sind dabei, das Eigentum an „{{workspace}}“ zu übertragen. Dies tritt sofort in Kraft und kann nicht rückgängig gemacht werden.', - verifyContent2: 'Wir werden einen temporären Bestätigungscode an diese E-Mail senden, um die erneute Authentifizierung durchzuführen.', - sendTip: 'Wenn Sie fortfahren, senden wir einen Bestätigungscode an {{email}} zur erneuten Authentifizierung.', - }, - transferOwnership: 'Eigentum übertragen', - }, - integrations: { - connected: 'Verbunden', - google: 'Google', - googleAccount: 'Mit Google-Konto anmelden', - github: 'GitHub', - githubAccount: 'Mit GitHub-Konto anmelden', - connect: 'Verbinden', - }, - language: { - displayLanguage: 'Anzeigesprache', - timezone: 'Zeitzone', - }, - provider: { - apiKey: 'API-Schlüssel', - enterYourKey: 'Geben Sie hier Ihren API-Schlüssel ein', - invalidKey: 'Ungültiger OpenAI API-Schlüssel', - validatedError: 'Validierung fehlgeschlagen: ', - validating: 'Schlüssel wird validiert...', - saveFailed: 'API-Schlüssel speichern fehlgeschlagen', - apiKeyExceedBill: 'Dieser API-SCHLÜSSEL verfügt über kein verfügbares Kontingent, bitte lesen', - addKey: 'Schlüssel hinzufügen', - comingSoon: 'Demnächst verfügbar', - editKey: 'Bearbeiten', - invalidApiKey: 'Ungültiger API-Schlüssel', - azure: { - apiBase: 'API-Basis', - apiBasePlaceholder: 'Die API-Basis-URL Ihres Azure OpenAI-Endpunkts.', - apiKey: 'API-Schlüssel', - apiKeyPlaceholder: 'Geben Sie hier Ihren API-Schlüssel ein', - helpTip: 'Azure OpenAI Service kennenlernen', - }, - openaiHosted: { - openaiHosted: 'Gehostetes OpenAI', - onTrial: 'IN PROBE', - exhausted: 'KONTINGENT ERSCHÖPFT', - desc: 'Der OpenAI-Hostingdienst von Dify ermöglicht es Ihnen, Modelle wie GPT-3.5 zu verwenden. Bevor Ihr Probe-Kontingent aufgebraucht ist, müssen Sie andere Modellanbieter einrichten.', - callTimes: 'Anrufzeiten', - usedUp: 'Probe-Kontingent aufgebraucht. Eigenen Modellanbieter hinzufügen.', - useYourModel: 'Derzeit wird eigener Modellanbieter verwendet.', - close: 'Schließen', - }, - anthropicHosted: { - anthropicHosted: 'Anthropic Claude', - onTrial: 'IN PROBE', - exhausted: 'KONTINGENT ERSCHÖPFT', - desc: 'Leistungsstarkes Modell, das bei einer Vielzahl von Aufgaben von anspruchsvollen Dialogen und kreativer Inhalteerstellung bis hin zu detaillierten Anweisungen hervorragend ist.', - callTimes: 'Anrufzeiten', - usedUp: 'Testkontingent aufgebraucht. Eigenen Modellanbieter hinzufügen.', - useYourModel: 'Derzeit wird eigener Modellanbieter verwendet.', - close: 'Schließen', - trialQuotaTip: 'Ihr Anthropic-Testkontingent läuft am 11.03.2025 ab und steht danach nicht mehr zur Verfügung. Bitte machen Sie rechtzeitig davon Gebrauch.', - }, - anthropic: { - using: 'Die Einbettungsfähigkeit verwendet', - enableTip: 'Um das Anthropische Modell zu aktivieren, müssen Sie sich zuerst mit OpenAI oder Azure OpenAI Service verbinden.', - notEnabled: 'Nicht aktiviert', - keyFrom: 'Holen Sie Ihren API-Schlüssel von Anthropic', - }, - encrypted: { - front: 'Ihr API-SCHLÜSSEL wird verschlüsselt und mit', - back: ' Technologie gespeichert.', - }, - }, - modelProvider: { - notConfigured: 'Das Systemmodell wurde noch nicht vollständig konfiguriert, und einige Funktionen sind möglicherweise nicht verfügbar.', - systemModelSettings: 'Systemmodell-Einstellungen', - systemModelSettingsLink: 'Warum ist es notwendig, ein Systemmodell einzurichten?', - selectModel: 'Wählen Sie Ihr Modell', - setupModelFirst: 'Bitte richten Sie zuerst Ihr Modell ein', - systemReasoningModel: { - key: 'System-Reasoning-Modell', - tip: 'Legen Sie das Standardinferenzmodell fest, das für die Erstellung von Anwendungen verwendet wird, sowie Funktionen wie die Generierung von Dialognamen und die Vorschlagserstellung für die nächste Frage, die auch das Standardinferenzmodell verwenden.', - }, - embeddingModel: { - key: 'Einbettungsmodell', - tip: 'Legen Sie das Standardmodell für die Dokumenteneinbettungsverarbeitung des Wissens fest, sowohl die Wiederherstellung als auch der Import des Wissens verwenden dieses Einbettungsmodell für die Vektorisierungsverarbeitung. Ein Wechsel wird dazu führen, dass die Vektordimension zwischen dem importierten Wissen und der Frage inkonsistent ist, was zu einem Wiederherstellungsfehler führt. Um einen Wiederherstellungsfehler zu vermeiden, wechseln Sie dieses Modell bitte nicht willkürlich.', - required: 'Einbettungsmodell ist erforderlich', - }, - speechToTextModel: { - key: 'Sprach-zu-Text-Modell', - tip: 'Legen Sie das Standardmodell für die Spracheingabe in Konversationen fest.', - }, - ttsModel: { - key: 'Text-zu-Sprache-Modell', - tip: 'Legen Sie das Standardmodell für die Text-zu-Sprache-Eingabe in Konversationen fest.', - }, - rerankModel: { - key: 'Rerank-Modell', - tip: 'Rerank-Modell wird die Kandidatendokumentenliste basierend auf der semantischen Übereinstimmung mit der Benutzeranfrage neu ordnen und die Ergebnisse der semantischen Rangordnung verbessern', - }, - quota: 'Kontingent', - searchModel: 'Suchmodell', - noModelFound: 'Kein Modell für {{model}} gefunden', - models: 'Modelle', - showMoreModelProvider: 'Zeige mehr Modellanbieter', - selector: { - tip: 'Dieses Modell wurde entfernt. Bitte fügen Sie ein Modell hinzu oder wählen Sie ein anderes Modell.', - emptyTip: 'Keine verfügbaren Modelle', - emptySetting: 'Bitte gehen Sie zu den Einstellungen, um zu konfigurieren', - rerankTip: 'Bitte richten Sie das Rerank-Modell ein', - }, - card: { - quota: 'KONTINGENT', - onTrial: 'In Probe', - paid: 'Bezahlt', - quotaExhausted: 'Kontingent erschöpft', - callTimes: 'Anrufzeiten', - tokens: 'Token', - buyQuota: 'Kontingent kaufen', - priorityUse: 'Priorisierte Nutzung', - removeKey: 'API-Schlüssel entfernen', - tip: 'Der bezahlten Kontingent wird Vorrang gegeben. Das Testkontingent wird nach dem Verbrauch des bezahlten Kontingents verwendet.', - }, - item: { - deleteDesc: '{{modelName}} werden als System-Reasoning-Modelle verwendet. Einige Funktionen stehen nach der Entfernung nicht zur Verfügung. Bitte bestätigen.', - freeQuota: 'KOSTENLOSES KONTINGENT', - }, - addApiKey: 'Fügen Sie Ihren API-Schlüssel hinzu', - invalidApiKey: 'Ungültiger API-Schlüssel', - encrypted: { - front: 'Ihr API-SCHLÜSSEL wird verschlüsselt und mit', - back: ' Technologie gespeichert.', - }, - freeQuota: { - howToEarn: 'Wie zu verdienen', - }, - addMoreModelProvider: 'MEHR MODELLANBIETER HINZUFÜGEN', - addModel: 'Modell hinzufügen', - modelsNum: '{{num}} Modelle', - showModels: 'Modelle anzeigen', - showModelsNum: 'Zeige {{num}} Modelle', - collapse: 'Einklappen', - config: 'Konfigurieren', - modelAndParameters: 'Modell und Parameter', - model: 'Modell', - featureSupported: '{{feature}} unterstützt', - callTimes: 'Anrufzeiten', - credits: 'Nachrichtenguthaben', - buyQuota: 'Kontingent kaufen', - getFreeTokens: 'Kostenlose Token erhalten', - priorityUsing: 'Bevorzugte Nutzung', - deprecated: 'Veraltet', - confirmDelete: 'Löschung bestätigen?', - quotaTip: 'Verbleibende verfügbare kostenlose Token', - loadPresets: 'Voreinstellungen laden', - parameters: 'PARAMETER', - loadBalancingHeadline: 'Lastenausgleich', - apiKey: 'API-SCHLÜSSEL', - editConfig: 'Konfiguration bearbeiten', - loadBalancing: 'Lastenausgleich', - addConfig: 'Konfiguration hinzufügen', - configLoadBalancing: 'Lastenausgleich für die Konfiguration', - providerManagedDescription: 'Verwenden Sie den einzelnen Satz von Anmeldeinformationen, der vom Modellanbieter bereitgestellt wird.', - loadBalancingDescription: 'Reduzieren Sie den Druck mit mehreren Sätzen von Anmeldeinformationen.', - modelHasBeenDeprecated: 'Dieses Modell ist veraltet', - loadBalancingLeastKeyWarning: 'Um den Lastausgleich zu aktivieren, müssen mindestens 2 Schlüssel aktiviert sein.', - providerManaged: 'Vom Anbieter verwaltet', - apiKeyStatusNormal: 'APIKey-Status ist normal', - upgradeForLoadBalancing: 'Aktualisieren Sie Ihren Plan, um den Lastenausgleich zu aktivieren.', - defaultConfig: 'Standardkonfiguration', - apiKeyRateLimit: 'Ratenlimit wurde erreicht, verfügbar nach {{seconds}}s', - loadBalancingInfo: 'Standardmäßig wird für den Lastenausgleich die Round-Robin-Strategie verwendet. Wenn die Ratenbegrenzung ausgelöst wird, wird eine Abklingzeit von 1 Minute angewendet.', - emptyProviderTip: 'Bitte installieren Sie zuerst einen Modellanbieter.', - configureTip: 'Einrichten des API-Schlüssels oder Hinzufügen des zu verwendenden Modells', - discoverMore: 'Erfahren Sie mehr in', - installProvider: 'Installieren von Modellanbietern', - toBeConfigured: 'Zu konfigurieren', - emptyProviderTitle: 'Modellanbieter nicht eingerichtet', - auth: { - apiKeyModal: { - addModel: 'Modell hinzufügen', - title: 'API-Schlüssel-Autorisierungskonfiguration', - desc: 'Nachdem die Anmeldeinformationen konfiguriert wurden, können alle Mitglieder des Arbeitsbereichs dieses Modell beim Orchestrieren von Anwendungen verwenden.', - }, - specifyModelCredential: 'Angeben von Modellanmeldeinformationen', - addNewModel: 'Neues Modell hinzufügen', - addCredential: 'Anmeldeinformationen hinzufügen', - providerManaged: 'Anbieter verwaltet', - addApiKey: 'API-Schlüssel hinzufügen', - apiKeys: 'API-Schlüssel', - unAuthorized: 'Unbefugt', - authorizationError: 'Autorisierungsfehler', - modelCredentials: 'Modellanmeldeinformationen', - configModel: 'Konfigurationsmodell', - authRemoved: 'Die Authentifizierung wurde entfernt.', - addModelCredential: 'Modellberechtigungen hinzufügen', - providerManagedTip: 'Die aktuelle Konfiguration wird vom Anbieter gehostet.', - configLoadBalancing: 'Konfiguration Lastenverteilung', - specifyModelCredentialTip: 'Verwenden Sie ein konfiguriertes Modellzugang.', - manageCredentials: 'Anmeldeinformationen verwalten', - selectModelCredential: 'Wählen Sie eine Modellberechtigung aus', - modelCredential: 'Zeugnis des Modells', - addModel: 'Modell hinzufügen', - customModelCredentials: 'Anmeldeinformationen für benutzerdefinierte Modelle', - removeModel: 'Modell entfernen', - addNewModelCredential: 'Hinzufügen neuer Modellanmeldeinformationen', - editModelCredential: 'Bearbeiten von Modellanmeldeinformationen', - customModelCredentialsDeleteTip: 'Anmeldeinformationen werden verwendet und können nicht gelöscht werden', - }, - parametersInvalidRemoved: 'Einige Parameter sind ungültig und wurden entfernt.', - installDataSourceProvider: 'Datenquellenanbieter installieren', - }, - dataSource: { - add: 'Eine Datenquelle hinzufügen', - connect: 'Verbinden', - notion: { - title: 'Notion', - description: 'Notion als Datenquelle für das Wissen verwenden.', - connectedWorkspace: 'Verbundener Arbeitsbereich', - addWorkspace: 'Arbeitsbereich hinzufügen', - connected: 'Verbunden', - disconnected: 'Getrennt', - changeAuthorizedPages: 'Autorisierte Seiten ändern', - pagesAuthorized: 'Autorisierte Seiten', - sync: 'Synchronisieren', - remove: 'Entfernen', - selector: { - pageSelected: 'Ausgewählte Seiten', - searchPages: 'Seiten suchen...', - noSearchResult: 'Keine Suchergebnisse', - addPages: 'Seiten hinzufügen', - preview: 'VORSCHAU', - }, - integratedAlert: 'Notion ist über interne Anmeldeinformationen integriert, es ist keine erneute Autorisierung erforderlich.', - }, - website: { - inactive: 'Inaktiv', - description: 'Importieren Sie Inhalte von Websites mit dem Webcrawler.', - title: 'Website', - configuredCrawlers: 'Konfigurierte Crawler', - active: 'Aktiv', - with: 'Mit', - }, - configure: 'Konfigurieren', - }, - plugin: { - serpapi: { - apiKey: 'API-Schlüssel', - apiKeyPlaceholder: 'Geben Sie Ihren API-Schlüssel ein', - keyFrom: 'Holen Sie Ihren SerpAPI-Schlüssel von der SerpAPI-Kontoseite', - }, - }, - apiBasedExtension: { - title: 'API-Erweiterungen bieten zentralisiertes API-Management und vereinfachen die Konfiguration für eine einfache Verwendung in Difys Anwendungen.', - link: 'Erfahren Sie, wie Sie Ihre eigene API-Erweiterung entwickeln.', - add: 'API-Erweiterung hinzufügen', - selector: { - title: 'API-Erweiterung', - placeholder: 'Bitte wählen Sie API-Erweiterung', - manage: 'API-Erweiterung verwalten', - }, - modal: { - title: 'API-Erweiterung hinzufügen', - editTitle: 'API-Erweiterung bearbeiten', - name: { - title: 'Name', - placeholder: 'Bitte geben Sie den Namen ein', - }, - apiEndpoint: { - title: 'API-Endpunkt', - placeholder: 'Bitte geben Sie den API-Endpunkt ein', - }, - apiKey: { - title: 'API-Schlüssel', - placeholder: 'Bitte geben Sie den API-Schlüssel ein', - lengthError: 'Die Länge des API-Schlüssels darf nicht weniger als 5 Zeichen betragen', - }, - }, - type: 'Typ', - }, - about: { - changeLog: 'Änderungsprotokoll', - updateNow: 'Jetzt aktualisieren', - nowAvailable: 'Dify {{version}} ist jetzt verfügbar.', - latestAvailable: 'Dify {{version}} ist die neueste verfügbare Version.', - }, - appMenus: { - overview: 'Übersicht', - promptEng: 'Orchestrieren', - apiAccess: 'API-Zugriff', - logAndAnn: 'Protokolle & Ank.', - logs: 'Baumstämme', - }, - environment: { - testing: 'TESTEN', - development: 'ENTWICKLUNG', - }, - appModes: { - completionApp: 'Textgenerator', - chatApp: 'Chat-App', - }, - datasetMenus: { - documents: 'Dokumente', - hitTesting: 'Wiederherstellungstest', - settings: 'Einstellungen', - emptyTip: 'Das Wissen wurde nicht zugeordnet, bitte gehen Sie zur Anwendung oder zum Plug-in, um die Zuordnung abzuschließen.', - viewDoc: 'Dokumentation anzeigen', - relatedApp: 'verbundene Apps', - noRelatedApp: 'Keine verknüpften Apps', - pipeline: 'Rohrleitung', - }, - voiceInput: { - speaking: 'Sprechen Sie jetzt...', - converting: 'Umwandlung in Text...', - notAllow: 'Mikrofon nicht autorisiert', - }, - 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': 'Flüstern-1', - 'claude-instant-1': 'Claude-Instant', - 'claude-2': 'Claude-2', - }, - chat: { - renameConversation: 'Konversation umbenennen', - conversationName: 'Konversationsname', - conversationNamePlaceholder: 'Bitte geben Sie den Konversationsnamen ein', - conversationNameCanNotEmpty: 'Konversationsname erforderlich', - citation: { - title: 'ZITIERUNGEN', - linkToDataset: 'Link zum Wissen', - characters: 'Zeichen:', - hitCount: 'Abrufanzahl:', - vectorHash: 'Vektorhash:', - hitScore: 'Abrufwertung:', - }, - inputPlaceholder: 'Sprechen Sie mit dem {{botName}}', - thought: 'Gedanke', - thinking: 'Denken...', - resend: 'Erneut senden', - }, - promptEditor: { - placeholder: 'Schreiben Sie hier Ihr Aufforderungswort, geben Sie \'{\' ein, um eine Variable einzufügen, geben Sie \'/\' ein, um einen Aufforderungs-Inhaltsblock einzufügen', - context: { - item: { - title: 'Kontext', - desc: 'Kontextvorlage einfügen', - }, - modal: { - title: '{{num}} Wissen im Kontext', - add: 'Kontext hinzufügen', - footer: 'Sie können Kontexte im unten stehenden Kontextabschnitt verwalten.', - }, - }, - history: { - item: { - title: 'Konversationsgeschichte', - desc: 'Vorlage für historische Nachricht einfügen', - }, - modal: { - title: 'BEISPIEL', - user: 'Hallo', - assistant: 'Hallo! Wie kann ich Ihnen heute helfen?', - edit: 'Konversationsrollennamen bearbeiten', - }, - }, - variable: { - item: { - title: 'Variablen & Externe Werkzeuge', - desc: 'Variablen & Externe Werkzeuge einfügen', - }, - modal: { - add: 'Neue Variable', - addTool: 'Neues Werkzeug', - }, - outputToolDisabledItem: { - desc: 'Variablen einfügen', - title: 'Variablen', - }, - }, - query: { - item: { - title: 'Abfrage', - desc: 'Benutzerabfragevorlage einfügen', - }, - }, - existed: 'Bereits im Aufforderungstext vorhanden', - }, - imageUploader: { - uploadFromComputer: 'Vom Computer hochladen', - uploadFromComputerReadError: 'Bildlesung fehlgeschlagen, bitte versuchen Sie es erneut.', - uploadFromComputerUploadError: 'Bildupload fehlgeschlagen, bitte erneut hochladen.', - uploadFromComputerLimit: 'Hochgeladene Bilder dürfen {{size}} MB nicht überschreiten', - pasteImageLink: 'Bildlink einfügen', - pasteImageLinkInputPlaceholder: 'Bildlink hier einfügen', - pasteImageLinkInvalid: 'Ungültiger Bildlink', - imageUpload: 'Bild-Upload', - }, - tag: { - placeholder: 'Alle Tags', - addNew: 'Neues Tag hinzufügen', - noTag: 'Keine Tags', - noTagYet: 'Noch keine Tags', - addTag: 'Tags hinzufügen', - editTag: 'Tags bearbeiten', - manageTags: 'Tags verwalten', - selectorPlaceholder: 'Typ zum Suchen oder Erstellen', - create: 'Erstellen', - delete: 'Tag löschen', - deleteTip: 'Das Tag wird verwendet, löschen?', - created: 'Tag erfolgreich erstellt', - failed: 'Tag-Erstellung fehlgeschlagen', - }, - errorMsg: { - fieldRequired: '{{field}} ist erforderlich', - urlError: 'Die URL sollte mit http:// oder https:// beginnen', - }, - fileUploader: { - uploadFromComputer: 'Lokaler Upload', - pasteFileLinkInvalid: 'Ungültiger Dateilink', - pasteFileLinkInputPlaceholder: 'URL eingeben...', - pasteFileLink: 'Dateilink einfügen', - uploadFromComputerUploadError: 'Datei-Upload fehlgeschlagen, bitte erneut hochladen.', - uploadFromComputerLimit: 'Datei hochladen darf {{size}} nicht überschreiten', - uploadFromComputerReadError: 'Lesen der Datei fehlgeschlagen, bitte versuchen Sie es erneut.', - fileExtensionNotSupport: 'Dateiendung nicht bedient', - fileExtensionBlocked: 'Dieser Dateityp ist aus Sicherheitsgründen gesperrt', - uploadDisabled: 'Datei-Upload ist deaktiviert', - }, - license: { - expiring: 'Läuft an einem Tag ab', - expiring_plural: 'Läuft in {{count}} Tagen ab', - unlimited: 'Unbegrenzt', - }, - pagination: { - perPage: 'Artikel pro Seite', - }, - theme: { - light: 'Licht', - theme: 'Thema', - dark: 'dunkel', - auto: 'System', - }, - compliance: { - iso27001: 'ISO 27001:2022 Zertifizierung', - professionalUpgradeTooltip: 'Nur verfügbar mit einem Teamplan oder höher.', - gdpr: 'DSGVO DPA', - soc2Type2: 'SOC 2 Typ II Bericht', - soc2Type1: 'SOC 2 Typ I Bericht', - sandboxUpgradeTooltip: 'Nur verfügbar mit einem Professional- oder Teamplan.', - }, - imageInput: { - dropImageHere: 'Laden Sie Ihr Bild hierher hoch oder', - browse: 'blättern', - supportedFormats: 'Unterstützt PNG, JPG, JPEG, WEBP und GIF', - }, - you: 'Du', - avatar: { - deleteTitle: 'Avatar entfernen', - deleteDescription: 'Bist du sicher, dass du dein Profilbild entfernen möchtest? Dein Konto wird das standardmäßige Anfangs-Avatar verwenden.', - }, - feedback: { - content: 'Feedback-Inhalt', - title: 'Feedback geben', - subtitle: 'Bitte sagen Sie uns, was mit dieser Antwort falsch gelaufen ist.', - placeholder: 'Bitte beschreiben Sie, was schiefgelaufen ist oder wie wir uns verbessern können...', - }, - label: { - optional: '(fakultativ)', - }, - noData: 'Keine Daten', - dynamicSelect: { - error: 'Ladeoptionen konnten nicht geladen werden', - noData: 'Keine Optionen verfügbar', - loading: 'Optionen werden geladen...', - selected: '{{count}} ausgewählt', - }, -} - -export default translation diff --git a/web/i18n/de-DE/custom.json b/web/i18n/de-DE/custom.json new file mode 100644 index 0000000000..27c1420422 --- /dev/null +++ b/web/i18n/de-DE/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "Anpassung", + "upgradeTip": { + "prefix": "Erweitere deinen Plan auf", + "suffix": "um deine Marke anzupassen.", + "title": "Upgrade deinen Plan", + "des": "Upgrade deinen Plan, um deine Marke anzupassen." + }, + "webapp": { + "title": "web app Marke anpassen", + "removeBrand": "Entferne Powered by Dify", + "changeLogo": "Ändere Powered by Markenbild", + "changeLogoTip": "SVG oder PNG Format mit einer Mindestgröße von 40x40px" + }, + "app": { + "title": "App Kopfzeilen Marke anpassen", + "changeLogoTip": "SVG oder PNG Format mit einer Mindestgröße von 80x80px" + }, + "upload": "Hochladen", + "uploading": "Lade hoch", + "uploadedFail": "Bild-Upload fehlgeschlagen, bitte erneut hochladen.", + "change": "Ändern", + "apply": "Anwenden", + "restore": "Standardeinstellungen wiederherstellen", + "customize": { + "contactUs": " kontaktiere uns ", + "prefix": "Um das Markenlogo innerhalb der App anzupassen, bitte", + "suffix": "um auf die Enterprise-Edition zu upgraden." + } +} diff --git a/web/i18n/de-DE/custom.ts b/web/i18n/de-DE/custom.ts deleted file mode 100644 index 42001e0863..0000000000 --- a/web/i18n/de-DE/custom.ts +++ /dev/null @@ -1,32 +0,0 @@ -const translation = { - custom: 'Anpassung', - upgradeTip: { - prefix: 'Erweitere deinen Plan auf', - suffix: 'um deine Marke anzupassen.', - title: 'Upgrade deinen Plan', - des: 'Upgrade deinen Plan, um deine Marke anzupassen.', - }, - webapp: { - title: 'web app Marke anpassen', - removeBrand: 'Entferne Powered by Dify', - changeLogo: 'Ändere Powered by Markenbild', - changeLogoTip: 'SVG oder PNG Format mit einer Mindestgröße von 40x40px', - }, - app: { - title: 'App Kopfzeilen Marke anpassen', - changeLogoTip: 'SVG oder PNG Format mit einer Mindestgröße von 80x80px', - }, - upload: 'Hochladen', - uploading: 'Lade hoch', - uploadedFail: 'Bild-Upload fehlgeschlagen, bitte erneut hochladen.', - change: 'Ändern', - apply: 'Anwenden', - restore: 'Standardeinstellungen wiederherstellen', - customize: { - contactUs: ' kontaktiere uns ', - prefix: 'Um das Markenlogo innerhalb der App anzupassen, bitte', - suffix: 'um auf die Enterprise-Edition zu upgraden.', - }, -} - -export default translation diff --git a/web/i18n/de-DE/dataset-creation.json b/web/i18n/de-DE/dataset-creation.json new file mode 100644 index 0000000000..c2b228e2ba --- /dev/null +++ b/web/i18n/de-DE/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "Wissen" + }, + "one": "Datenquelle wählen", + "two": "Textvorverarbeitung und Bereinigung", + "three": "Ausführen und beenden" + }, + "error": { + "unavailable": "Dieses Wissen ist nicht verfügbar" + }, + "stepOne": { + "filePreview": "Dateivorschau", + "pagePreview": "Seitenvorschau", + "dataSourceType": { + "file": "Import aus Textdatei", + "notion": "Synchronisation aus Notion", + "web": "Synchronisation von Webseite" + }, + "uploader": { + "title": "Textdatei hochladen", + "button": "Dateien und Ordner hierher ziehen oder klicken", + "buttonSingleFile": "Datei hierher ziehen oder klicken", + "browse": "Durchsuchen", + "tip": "Unterstützt {{supportTypes}}. Maximal {{size}}MB pro Datei.", + "validation": { + "typeError": "Dateityp nicht unterstützt", + "size": "Datei zu groß. Maximum ist {{size}}MB", + "count": "Mehrere Dateien nicht unterstützt", + "filesNumber": "Sie haben das Limit für die Stapelverarbeitung von {{filesNumber}} erreicht." + }, + "cancel": "Abbrechen", + "change": "Ändern", + "failed": "Hochladen fehlgeschlagen" + }, + "notionSyncTitle": "Notion ist nicht verbunden", + "notionSyncTip": "Um mit Notion zu synchronisieren, muss zuerst eine Verbindung zu Notion hergestellt werden.", + "connect": "Verbinden gehen", + "button": "weiter", + "emptyDatasetCreation": "Ich möchte ein leeres Wissen erstellen", + "modal": { + "title": "Ein leeres Wissen erstellen", + "tip": "Ein leeres Wissen enthält keine Dokumente, und Sie können jederzeit Dokumente hochladen.", + "input": "Wissensname", + "placeholder": "Bitte eingeben", + "nameNotEmpty": "Name darf nicht leer sein", + "nameLengthInvalid": "Name muss zwischen 1 bis 40 Zeichen lang sein", + "cancelButton": "Abbrechen", + "confirmButton": "Erstellen", + "failed": "Erstellung fehlgeschlagen" + }, + "website": { + "preview": "Vorschau", + "totalPageScraped": "Gesamtzahl der gescrapten Seiten:", + "fireCrawlNotConfigured": "Firecrawl ist nicht konfiguriert", + "options": "Optionen", + "excludePaths": "Pfade ausschließen", + "limit": "Grenze", + "exceptionErrorTitle": "Beim Ausführen des Firecrawl-Auftrags ist eine Ausnahme aufgetreten:", + "selectAll": "Alles auswählen", + "includeOnlyPaths": "Nur Pfade einschließen", + "run": "Laufen", + "firecrawlDoc": "Firecrawl-Dokumente", + "configure": "Konfigurieren", + "fireCrawlNotConfiguredDescription": "Konfigurieren Sie Firecrawl mit dem API-Schlüssel, um es zu verwenden.", + "maxDepth": "Maximale Tiefe", + "unknownError": "Unbekannter Fehler", + "resetAll": "Alles zurücksetzen", + "extractOnlyMainContent": "Extrahieren Sie nur den Hauptinhalt (keine Kopf-, Navigations- und Fußzeilen usw.)", + "firecrawlTitle": "Extrahieren von Webinhalten mit 🔥Firecrawl", + "maxDepthTooltip": "Maximale Tiefe für das Crawlen relativ zur eingegebenen URL. Tiefe 0 kratzt nur die Seite der eingegebenen URL, Tiefe 1 kratzt die URL und alles nach der eingegebenen URL + ein / und so weiter.", + "crawlSubPage": "Unterseiten crawlen", + "scrapTimeInfo": "Insgesamt {{{total}} Seiten innerhalb von {{time}}s gescrapt", + "jinaReaderDocLink": "https://jina.ai/reader", + "jinaReaderTitle": "Konvertieren Sie die gesamte Website in Markdown", + "useSitemap": "Sitemap verwenden", + "chooseProvider": "Wählen Sie einen Anbieter", + "jinaReaderNotConfigured": "Jina Reader ist nicht konfiguriert", + "jinaReaderNotConfiguredDescription": "Richten Sie Jina Reader ein, indem Sie Ihren kostenlosen API-Schlüssel für den Zugriff eingeben.", + "useSitemapTooltip": "Folgen Sie der Sitemap, um die Website zu crawlen. Ist dies nicht der Fall, crawlt Jina Reader iterativ basierend auf der Seitenrelevanz, sodass weniger, aber qualitativ hochwertigere Seiten angezeigt werden.", + "jinaReaderDoc": "Erfahre mehr über Jina Reader", + "configureJinaReader": "Jina Reader konfigurieren", + "waterCrawlNotConfigured": "Watercrawl ist nicht konfiguriert", + "configureWatercrawl": "Wasserkrabbe konfigurieren", + "watercrawlTitle": "Webinhalt mit Watercrawl extrahieren", + "watercrawlDoc": "Wasserkriechen-Dokumente", + "configureFirecrawl": "Firecrawl konfigurieren", + "waterCrawlNotConfiguredDescription": "Konfigurieren Sie Watercrawl mit dem API-Schlüssel, um es zu verwenden.", + "running": "Ausgeführte" + }, + "cancel": "Abbrechen" + }, + "stepTwo": { + "segmentation": "Chunk-Einstellungen", + "auto": "Automatisch", + "autoDescription": "Stellt Chunk- und Vorverarbeitungsregeln automatisch ein. Unbekannten Benutzern wird dies empfohlen.", + "custom": "Benutzerdefiniert", + "customDescription": "Chunk-Regeln, Chunk-Länge und Vorverarbeitungsregeln usw. anpassen.", + "separator": "Segmentidentifikator", + "separatorPlaceholder": "Zum Beispiel Neuer Absatz (\\\\n) oder spezieller Separator (wie \"***\")", + "maxLength": "Maximale Chunk-Länge", + "overlap": "Chunk-Überlappung", + "overlapTip": "Die Einstellung der Chunk-Überlappung kann die semantische Relevanz zwischen ihnen aufrechterhalten und so die Abrufeffekt verbessern. Es wird empfohlen, 10%-25% der maximalen Chunk-Größe einzustellen.", + "overlapCheck": "Chunk-Überlappung sollte nicht größer als maximale Chunk-Länge sein", + "rules": "Textvorverarbeitungsregeln", + "removeExtraSpaces": "Mehrfache Leerzeichen, Zeilenumbrüche und Tabulatoren ersetzen", + "removeUrlEmails": "Alle URLs und E-Mail-Adressen löschen", + "removeStopwords": "Stopwörter wie \"ein\", \"eine\", \"der\" entfernen", + "preview": "Bestätigen & Vorschau", + "reset": "Zurücksetzen", + "indexMode": "Indexmodus", + "qualified": "Hohe Qualität", + "recommend": "Empfehlen", + "qualifiedTip": "Ruft standardmäßige Systemeinbettungsschnittstelle für die Verarbeitung auf, um höhere Genauigkeit bei Benutzerabfragen zu bieten.", + "warning": "Bitte zuerst den API-Schlüssel des Modellanbieters einrichten.", + "click": "Zu den Einstellungen gehen", + "economical": "Ökonomisch", + "economicalTip": "Verwendet Offline-Vektor-Engines, Schlagwortindizes usw., um die Genauigkeit ohne Tokenverbrauch zu reduzieren", + "QATitle": "Segmentierung im Frage-und-Antwort-Format", + "QATip": "Diese Option zu aktivieren, wird mehr Tokens verbrauchen", + "QALanguage": "Segmentierung verwenden", + "estimateCost": "Schätzung", + "estimateSegment": "Geschätzte Chunks", + "segmentCount": "Chunks", + "calculating": "Berechnung...", + "fileSource": "Dokumente vorverarbeiten", + "notionSource": "Seiten vorverarbeiten", + "other": "und weitere ", + "fileUnit": " Dateien", + "notionUnit": " Seiten", + "previousStep": "Vorheriger Schritt", + "nextStep": "Speichern & Verarbeiten", + "save": "Speichern & Verarbeiten", + "cancel": "Abbrechen", + "sideTipTitle": "Warum segmentieren und vorverarbeiten?", + "sideTipP1": "Bei der Verarbeitung von Textdaten sind Segmentierung und Bereinigung zwei wichtige Vorverarbeitungsschritte.", + "sideTipP2": "Segmentierung teilt langen Text in Absätze, damit Modelle ihn besser verstehen können. Dies verbessert die Qualität und Relevanz der Modellergebnisse.", + "sideTipP3": "Bereinigung entfernt unnötige Zeichen und Formate, macht das Wissen sauberer und leichter zu parsen.", + "sideTipP4": "Richtige Segmentierung und Bereinigung verbessern die Modellleistung und liefern genauere und wertvollere Ergebnisse.", + "previewTitle": "Vorschau", + "previewTitleButton": "Vorschau", + "previewButton": "Umschalten zum Frage-und-Antwort-Format", + "previewSwitchTipStart": "Die aktuelle Chunk-Vorschau ist im Textformat, ein Wechsel zur Vorschau im Frage-und-Antwort-Format wird", + "previewSwitchTipEnd": " zusätzliche Tokens verbrauchen", + "characters": "Zeichen", + "indexSettingTip": "Um die Indexmethode zu ändern, bitte gehen Sie zu den ", + "retrievalSettingTip": "Um die Indexmethode zu ändern, bitte gehen Sie zu den ", + "datasetSettingLink": "Wissenseinstellungen.", + "websiteSource": "Preprocess-Website", + "webpageUnit": "Seiten", + "separatorTip": "Ein Trennzeichen ist das Zeichen, das zum Trennen von Text verwendet wird. \\n\\n und \\n sind häufig verwendete Trennzeichen zum Trennen von Absätzen und Zeilen. In Kombination mit Kommas (\\n\\n,\\n) werden Absätze nach Zeilen segmentiert, wenn die maximale Blocklänge überschritten wird. Sie können auch spezielle, von Ihnen selbst definierte Trennzeichen verwenden (z. B. ***).", + "maxLengthCheck": "Die maximale Stücklänge sollte weniger als {{limit}} betragen", + "switch": "Schalter", + "previewChunk": "Vorschau Chunk", + "highQualityTip": "Sobald die Einbettung im Modus \"Hohe Qualität\" abgeschlossen ist, ist es nicht mehr möglich, in den Modus \"Wirtschaftlich\" zurückzukehren.", + "parentChildTip": "Wenn Sie den Parent-Child-Modus verwenden, wird der Child-Chunk für den Abruf und der Parent-Chunk für den Abruf als Kontext verwendet.", + "fullDoc": "Vollständiges Dokument", + "parentChildDelimiterTip": "Ein Trennzeichen ist das Zeichen, das zum Trennen von Text verwendet wird. \\n\\n wird empfohlen, um das Originaldokument in große übergeordnete Blöcke aufzuteilen. Sie können auch spezielle Trennzeichen verwenden, die Sie selbst definiert haben.", + "qaSwitchHighQualityTipContent": "Derzeit unterstützt nur eine hochwertige Indexmethode das Q&A-Format-Chunking. Möchten Sie in den High-Quality-Modus wechseln?", + "childChunkForRetrieval": "Child-Chunk zum Abrufen", + "previewChunkCount": "{{Anzahl}} Geschätzte Chunks", + "previewChunkTip": "Klicken Sie auf die Schaltfläche \"Preview Chunk\" auf der linken Seite, um die Vorschau zu laden", + "qaSwitchHighQualityTipTitle": "Das Q&A-Format erfordert eine qualitativ hochwertige Indizierungsmethode", + "general": "Allgemein", + "generalTip": "Allgemeiner Text-Chunking-Modus, die abgerufenen und zurückgerufenen Chunks sind gleich.", + "notAvailableForQA": "Nicht verfügbar für Q&A Index", + "notAvailableForParentChild": "Nicht verfügbar für den Parent-Child-Index", + "parentChild": "Eltern-Kind", + "parentChunkForContext": "Parent-chunk für Context", + "parentChildChunkDelimiterTip": "Ein Trennzeichen ist das Zeichen, das zum Trennen von Text verwendet wird. \\n wird empfohlen, um übergeordnete Blöcke in kleine untergeordnete Blöcke aufzuteilen. Sie können auch spezielle Trennzeichen verwenden, die Sie selbst definiert haben.", + "useQALanguage": "Chunk im Q&A-Format in", + "paragraph": "Absatz", + "fullDocTip": "Das gesamte Dokument wird als übergeordneter Block verwendet und direkt abgerufen. Bitte beachten Sie, dass aus Leistungsgründen Texte, die 10000 Token überschreiten, automatisch abgeschnitten werden.", + "paragraphTip": "In diesem Modus wird der Text basierend auf Trennzeichen und der maximalen Blocklänge in Absätze aufgeteilt, wobei der geteilte Text als übergeordneter Block für den Abruf verwendet wird.", + "qaTip": "Wenn Sie strukturierte Q&A-Daten verwenden, können Sie Dokumente erstellen, die Fragen mit Antworten verknüpfen. Diese Dokumente werden basierend auf dem Frageteil indiziert, sodass das System relevante Antworten basierend auf der Ähnlichkeit der Abfrage abrufen kann." + }, + "stepThree": { + "creationTitle": "🎉 Wissen erstellt", + "creationContent": "Wir haben das Wissen automatisch benannt, Sie können es jederzeit ändern", + "label": "Wissensname", + "additionTitle": "🎉 Dokument hochgeladen", + "additionP1": "Das Dokument wurde zum Wissen hinzugefügt", + "additionP2": ", Sie können es in der Dokumentenliste des Wissens finden.", + "stop": "Verarbeitung stoppen", + "resume": "Verarbeitung fortsetzen", + "navTo": "Zum Dokument gehen", + "sideTipTitle": "Was kommt als Nächstes", + "sideTipContent": "Nachdem das Dokument indiziert wurde, kann das Wissen in die Anwendung als Kontext integriert werden, Sie finden die Kontexteinstellung auf der Seite zur Eingabeaufforderungen-Orchestrierung. Sie können es auch als unabhängiges ChatGPT-Indexierungsplugin zur Veröffentlichung erstellen.", + "modelTitle": "Sind Sie sicher, dass Sie die Einbettung stoppen möchten?", + "modelContent": "Wenn Sie die Verarbeitung später fortsetzen möchten, werden Sie dort weitermachen, wo Sie aufgehört haben.", + "modelButtonConfirm": "Bestätigen", + "modelButtonCancel": "Abbrechen" + }, + "firecrawl": { + "apiKeyPlaceholder": "API-Schlüssel von firecrawl.dev", + "configFirecrawl": "Konfigurieren von 🔥Firecrawl", + "getApiKeyLinkText": "Holen Sie sich Ihren API-Schlüssel von firecrawl.dev" + }, + "jinaReader": { + "configJinaReader": "Jina Reader konfigurieren", + "apiKeyPlaceholder": "API-Schlüssel von jina.ai", + "getApiKeyLinkText": "Holen Sie sich Ihren kostenlosen API-Schlüssel bei jina.ai" + }, + "otherDataSource": { + "learnMore": "Weitere Informationen", + "title": "Verbinden Sie sich mit anderen Datenquellen?", + "description": "Derzeit verfügt die Wissensdatenbank von Dify nur über begrenzte Datenquellen. Das Beitragen einer Datenquelle zur Dify-Wissensdatenbank ist eine fantastische Möglichkeit, die Flexibilität und Leistungsfähigkeit der Plattform für alle Benutzer zu verbessern. Unser Beitragsleitfaden erleichtert Ihnen den Einstieg. Bitte klicken Sie auf den untenstehenden Link, um mehr zu erfahren." + }, + "watercrawl": { + "configWatercrawl": "Wasserkrabbe konfigurieren", + "apiKeyPlaceholder": "API-Schlüssel von watercrawl.dev", + "getApiKeyLinkText": "Holen Sie sich Ihren API-Schlüssel von watercrawl.dev" + } +} diff --git a/web/i18n/de-DE/dataset-creation.ts b/web/i18n/de-DE/dataset-creation.ts deleted file mode 100644 index ac7f6039f8..0000000000 --- a/web/i18n/de-DE/dataset-creation.ts +++ /dev/null @@ -1,217 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: 'Wissen', - }, - one: 'Datenquelle wählen', - two: 'Textvorverarbeitung und Bereinigung', - three: 'Ausführen und beenden', - }, - error: { - unavailable: 'Dieses Wissen ist nicht verfügbar', - }, - stepOne: { - filePreview: 'Dateivorschau', - pagePreview: 'Seitenvorschau', - dataSourceType: { - file: 'Import aus Textdatei', - notion: 'Synchronisation aus Notion', - web: 'Synchronisation von Webseite', - }, - uploader: { - title: 'Textdatei hochladen', - button: 'Dateien und Ordner hierher ziehen oder klicken', - buttonSingleFile: 'Datei hierher ziehen oder klicken', - browse: 'Durchsuchen', - tip: 'Unterstützt {{supportTypes}}. Maximal {{size}}MB pro Datei.', - validation: { - typeError: 'Dateityp nicht unterstützt', - size: 'Datei zu groß. Maximum ist {{size}}MB', - count: 'Mehrere Dateien nicht unterstützt', - filesNumber: 'Sie haben das Limit für die Stapelverarbeitung von {{filesNumber}} erreicht.', - }, - cancel: 'Abbrechen', - change: 'Ändern', - failed: 'Hochladen fehlgeschlagen', - }, - notionSyncTitle: 'Notion ist nicht verbunden', - notionSyncTip: 'Um mit Notion zu synchronisieren, muss zuerst eine Verbindung zu Notion hergestellt werden.', - connect: 'Verbinden gehen', - button: 'weiter', - emptyDatasetCreation: 'Ich möchte ein leeres Wissen erstellen', - modal: { - title: 'Ein leeres Wissen erstellen', - tip: 'Ein leeres Wissen enthält keine Dokumente, und Sie können jederzeit Dokumente hochladen.', - input: 'Wissensname', - placeholder: 'Bitte eingeben', - nameNotEmpty: 'Name darf nicht leer sein', - nameLengthInvalid: 'Name muss zwischen 1 bis 40 Zeichen lang sein', - cancelButton: 'Abbrechen', - confirmButton: 'Erstellen', - failed: 'Erstellung fehlgeschlagen', - }, - website: { - preview: 'Vorschau', - totalPageScraped: 'Gesamtzahl der gescrapten Seiten:', - fireCrawlNotConfigured: 'Firecrawl ist nicht konfiguriert', - options: 'Optionen', - excludePaths: 'Pfade ausschließen', - limit: 'Grenze', - exceptionErrorTitle: 'Beim Ausführen des Firecrawl-Auftrags ist eine Ausnahme aufgetreten:', - selectAll: 'Alles auswählen', - includeOnlyPaths: 'Nur Pfade einschließen', - run: 'Laufen', - firecrawlDoc: 'Firecrawl-Dokumente', - configure: 'Konfigurieren', - fireCrawlNotConfiguredDescription: 'Konfigurieren Sie Firecrawl mit dem API-Schlüssel, um es zu verwenden.', - maxDepth: 'Maximale Tiefe', - unknownError: 'Unbekannter Fehler', - resetAll: 'Alles zurücksetzen', - extractOnlyMainContent: 'Extrahieren Sie nur den Hauptinhalt (keine Kopf-, Navigations- und Fußzeilen usw.)', - firecrawlTitle: 'Extrahieren von Webinhalten mit 🔥Firecrawl', - maxDepthTooltip: 'Maximale Tiefe für das Crawlen relativ zur eingegebenen URL. Tiefe 0 kratzt nur die Seite der eingegebenen URL, Tiefe 1 kratzt die URL und alles nach der eingegebenen URL + ein / und so weiter.', - crawlSubPage: 'Unterseiten crawlen', - scrapTimeInfo: 'Insgesamt {{{total}} Seiten innerhalb von {{time}}s gescrapt', - jinaReaderDocLink: 'https://jina.ai/reader', - jinaReaderTitle: 'Konvertieren Sie die gesamte Website in Markdown', - useSitemap: 'Sitemap verwenden', - chooseProvider: 'Wählen Sie einen Anbieter', - jinaReaderNotConfigured: 'Jina Reader ist nicht konfiguriert', - jinaReaderNotConfiguredDescription: 'Richten Sie Jina Reader ein, indem Sie Ihren kostenlosen API-Schlüssel für den Zugriff eingeben.', - useSitemapTooltip: 'Folgen Sie der Sitemap, um die Website zu crawlen. Ist dies nicht der Fall, crawlt Jina Reader iterativ basierend auf der Seitenrelevanz, sodass weniger, aber qualitativ hochwertigere Seiten angezeigt werden.', - jinaReaderDoc: 'Erfahre mehr über Jina Reader', - configureJinaReader: 'Jina Reader konfigurieren', - waterCrawlNotConfigured: 'Watercrawl ist nicht konfiguriert', - configureWatercrawl: 'Wasserkrabbe konfigurieren', - watercrawlTitle: 'Webinhalt mit Watercrawl extrahieren', - watercrawlDoc: 'Wasserkriechen-Dokumente', - configureFirecrawl: 'Firecrawl konfigurieren', - waterCrawlNotConfiguredDescription: 'Konfigurieren Sie Watercrawl mit dem API-Schlüssel, um es zu verwenden.', - running: 'Ausgeführte', - }, - cancel: 'Abbrechen', - }, - stepTwo: { - segmentation: 'Chunk-Einstellungen', - auto: 'Automatisch', - autoDescription: 'Stellt Chunk- und Vorverarbeitungsregeln automatisch ein. Unbekannten Benutzern wird dies empfohlen.', - custom: 'Benutzerdefiniert', - customDescription: 'Chunk-Regeln, Chunk-Länge und Vorverarbeitungsregeln usw. anpassen.', - separator: 'Segmentidentifikator', - separatorPlaceholder: 'Zum Beispiel Neuer Absatz (\\\\n) oder spezieller Separator (wie "***")', - maxLength: 'Maximale Chunk-Länge', - overlap: 'Chunk-Überlappung', - overlapTip: 'Die Einstellung der Chunk-Überlappung kann die semantische Relevanz zwischen ihnen aufrechterhalten und so die Abrufeffekt verbessern. Es wird empfohlen, 10%-25% der maximalen Chunk-Größe einzustellen.', - overlapCheck: 'Chunk-Überlappung sollte nicht größer als maximale Chunk-Länge sein', - rules: 'Textvorverarbeitungsregeln', - removeExtraSpaces: 'Mehrfache Leerzeichen, Zeilenumbrüche und Tabulatoren ersetzen', - removeUrlEmails: 'Alle URLs und E-Mail-Adressen löschen', - removeStopwords: 'Stopwörter wie "ein", "eine", "der" entfernen', - preview: 'Bestätigen & Vorschau', - reset: 'Zurücksetzen', - indexMode: 'Indexmodus', - qualified: 'Hohe Qualität', - recommend: 'Empfehlen', - qualifiedTip: 'Ruft standardmäßige Systemeinbettungsschnittstelle für die Verarbeitung auf, um höhere Genauigkeit bei Benutzerabfragen zu bieten.', - warning: 'Bitte zuerst den API-Schlüssel des Modellanbieters einrichten.', - click: 'Zu den Einstellungen gehen', - economical: 'Ökonomisch', - economicalTip: 'Verwendet Offline-Vektor-Engines, Schlagwortindizes usw., um die Genauigkeit ohne Tokenverbrauch zu reduzieren', - QATitle: 'Segmentierung im Frage-und-Antwort-Format', - QATip: 'Diese Option zu aktivieren, wird mehr Tokens verbrauchen', - QALanguage: 'Segmentierung verwenden', - estimateCost: 'Schätzung', - estimateSegment: 'Geschätzte Chunks', - segmentCount: 'Chunks', - calculating: 'Berechnung...', - fileSource: 'Dokumente vorverarbeiten', - notionSource: 'Seiten vorverarbeiten', - other: 'und weitere ', - fileUnit: ' Dateien', - notionUnit: ' Seiten', - previousStep: 'Vorheriger Schritt', - nextStep: 'Speichern & Verarbeiten', - save: 'Speichern & Verarbeiten', - cancel: 'Abbrechen', - sideTipTitle: 'Warum segmentieren und vorverarbeiten?', - sideTipP1: 'Bei der Verarbeitung von Textdaten sind Segmentierung und Bereinigung zwei wichtige Vorverarbeitungsschritte.', - sideTipP2: 'Segmentierung teilt langen Text in Absätze, damit Modelle ihn besser verstehen können. Dies verbessert die Qualität und Relevanz der Modellergebnisse.', - sideTipP3: 'Bereinigung entfernt unnötige Zeichen und Formate, macht das Wissen sauberer und leichter zu parsen.', - sideTipP4: 'Richtige Segmentierung und Bereinigung verbessern die Modellleistung und liefern genauere und wertvollere Ergebnisse.', - previewTitle: 'Vorschau', - previewTitleButton: 'Vorschau', - previewButton: 'Umschalten zum Frage-und-Antwort-Format', - previewSwitchTipStart: 'Die aktuelle Chunk-Vorschau ist im Textformat, ein Wechsel zur Vorschau im Frage-und-Antwort-Format wird', - previewSwitchTipEnd: ' zusätzliche Tokens verbrauchen', - characters: 'Zeichen', - indexSettingTip: 'Um die Indexmethode zu ändern, bitte gehen Sie zu den ', - retrievalSettingTip: 'Um die Indexmethode zu ändern, bitte gehen Sie zu den ', - datasetSettingLink: 'Wissenseinstellungen.', - websiteSource: 'Preprocess-Website', - webpageUnit: 'Seiten', - separatorTip: 'Ein Trennzeichen ist das Zeichen, das zum Trennen von Text verwendet wird. \\n\\n und \\n sind häufig verwendete Trennzeichen zum Trennen von Absätzen und Zeilen. In Kombination mit Kommas (\\n\\n,\\n) werden Absätze nach Zeilen segmentiert, wenn die maximale Blocklänge überschritten wird. Sie können auch spezielle, von Ihnen selbst definierte Trennzeichen verwenden (z. B. ***).', - maxLengthCheck: 'Die maximale Stücklänge sollte weniger als {{limit}} betragen', - switch: 'Schalter', - previewChunk: 'Vorschau Chunk', - highQualityTip: 'Sobald die Einbettung im Modus "Hohe Qualität" abgeschlossen ist, ist es nicht mehr möglich, in den Modus "Wirtschaftlich" zurückzukehren.', - parentChildTip: 'Wenn Sie den Parent-Child-Modus verwenden, wird der Child-Chunk für den Abruf und der Parent-Chunk für den Abruf als Kontext verwendet.', - fullDoc: 'Vollständiges Dokument', - parentChildDelimiterTip: 'Ein Trennzeichen ist das Zeichen, das zum Trennen von Text verwendet wird. \\n\\n wird empfohlen, um das Originaldokument in große übergeordnete Blöcke aufzuteilen. Sie können auch spezielle Trennzeichen verwenden, die Sie selbst definiert haben.', - qaSwitchHighQualityTipContent: 'Derzeit unterstützt nur eine hochwertige Indexmethode das Q&A-Format-Chunking. Möchten Sie in den High-Quality-Modus wechseln?', - childChunkForRetrieval: 'Child-Chunk zum Abrufen', - previewChunkCount: '{{Anzahl}} Geschätzte Chunks', - previewChunkTip: 'Klicken Sie auf die Schaltfläche "Preview Chunk" auf der linken Seite, um die Vorschau zu laden', - qaSwitchHighQualityTipTitle: 'Das Q&A-Format erfordert eine qualitativ hochwertige Indizierungsmethode', - general: 'Allgemein', - generalTip: 'Allgemeiner Text-Chunking-Modus, die abgerufenen und zurückgerufenen Chunks sind gleich.', - notAvailableForQA: 'Nicht verfügbar für Q&A Index', - notAvailableForParentChild: 'Nicht verfügbar für den Parent-Child-Index', - parentChild: 'Eltern-Kind', - parentChunkForContext: 'Parent-chunk für Context', - parentChildChunkDelimiterTip: 'Ein Trennzeichen ist das Zeichen, das zum Trennen von Text verwendet wird. \\n wird empfohlen, um übergeordnete Blöcke in kleine untergeordnete Blöcke aufzuteilen. Sie können auch spezielle Trennzeichen verwenden, die Sie selbst definiert haben.', - useQALanguage: 'Chunk im Q&A-Format in', - paragraph: 'Absatz', - fullDocTip: 'Das gesamte Dokument wird als übergeordneter Block verwendet und direkt abgerufen. Bitte beachten Sie, dass aus Leistungsgründen Texte, die 10000 Token überschreiten, automatisch abgeschnitten werden.', - paragraphTip: 'In diesem Modus wird der Text basierend auf Trennzeichen und der maximalen Blocklänge in Absätze aufgeteilt, wobei der geteilte Text als übergeordneter Block für den Abruf verwendet wird.', - qaTip: 'Wenn Sie strukturierte Q&A-Daten verwenden, können Sie Dokumente erstellen, die Fragen mit Antworten verknüpfen. Diese Dokumente werden basierend auf dem Frageteil indiziert, sodass das System relevante Antworten basierend auf der Ähnlichkeit der Abfrage abrufen kann.', - }, - stepThree: { - creationTitle: '🎉 Wissen erstellt', - creationContent: 'Wir haben das Wissen automatisch benannt, Sie können es jederzeit ändern', - label: 'Wissensname', - additionTitle: '🎉 Dokument hochgeladen', - additionP1: 'Das Dokument wurde zum Wissen hinzugefügt', - additionP2: ', Sie können es in der Dokumentenliste des Wissens finden.', - stop: 'Verarbeitung stoppen', - resume: 'Verarbeitung fortsetzen', - navTo: 'Zum Dokument gehen', - sideTipTitle: 'Was kommt als Nächstes', - sideTipContent: 'Nachdem das Dokument indiziert wurde, kann das Wissen in die Anwendung als Kontext integriert werden, Sie finden die Kontexteinstellung auf der Seite zur Eingabeaufforderungen-Orchestrierung. Sie können es auch als unabhängiges ChatGPT-Indexierungsplugin zur Veröffentlichung erstellen.', - modelTitle: 'Sind Sie sicher, dass Sie die Einbettung stoppen möchten?', - modelContent: 'Wenn Sie die Verarbeitung später fortsetzen möchten, werden Sie dort weitermachen, wo Sie aufgehört haben.', - modelButtonConfirm: 'Bestätigen', - modelButtonCancel: 'Abbrechen', - }, - firecrawl: { - apiKeyPlaceholder: 'API-Schlüssel von firecrawl.dev', - configFirecrawl: 'Konfigurieren von 🔥Firecrawl', - getApiKeyLinkText: 'Holen Sie sich Ihren API-Schlüssel von firecrawl.dev', - }, - jinaReader: { - configJinaReader: 'Jina Reader konfigurieren', - apiKeyPlaceholder: 'API-Schlüssel von jina.ai', - getApiKeyLinkText: 'Holen Sie sich Ihren kostenlosen API-Schlüssel bei jina.ai', - }, - otherDataSource: { - learnMore: 'Weitere Informationen', - title: 'Verbinden Sie sich mit anderen Datenquellen?', - description: 'Derzeit verfügt die Wissensdatenbank von Dify nur über begrenzte Datenquellen. Das Beitragen einer Datenquelle zur Dify-Wissensdatenbank ist eine fantastische Möglichkeit, die Flexibilität und Leistungsfähigkeit der Plattform für alle Benutzer zu verbessern. Unser Beitragsleitfaden erleichtert Ihnen den Einstieg. Bitte klicken Sie auf den untenstehenden Link, um mehr zu erfahren.', - }, - watercrawl: { - configWatercrawl: 'Wasserkrabbe konfigurieren', - apiKeyPlaceholder: 'API-Schlüssel von watercrawl.dev', - getApiKeyLinkText: 'Holen Sie sich Ihren API-Schlüssel von watercrawl.dev', - }, -} - -export default translation diff --git a/web/i18n/de-DE/dataset-documents.json b/web/i18n/de-DE/dataset-documents.json new file mode 100644 index 0000000000..961e37f7e8 --- /dev/null +++ b/web/i18n/de-DE/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "Dokumente", + "desc": "Alle Dateien des Wissens werden hier angezeigt, und das gesamte Wissen kann mit Dify-Zitaten verknüpft oder über das Chat-Plugin indiziert werden.", + "addFile": "Datei hinzufügen", + "addPages": "Seiten hinzufügen", + "table": { + "header": { + "fileName": "DATEINAME", + "words": "WÖRTER", + "hitCount": "SUCHANFRAGEN", + "uploadTime": "HOCHLADEZEIT", + "status": "STATUS", + "action": "AKTION", + "chunkingMode": "CHUNKING-MODUS" + }, + "name": "Name", + "rename": "Umbenennen" + }, + "action": { + "uploadFile": "Neue Datei hochladen", + "settings": "Segment-Einstellungen", + "addButton": "Chunk hinzufügen", + "add": "Einen Chunk hinzufügen", + "batchAdd": "Batch hinzufügen", + "archive": "Archivieren", + "unarchive": "Archivierung aufheben", + "delete": "Löschen", + "enableWarning": "Archivierte Datei kann nicht aktiviert werden", + "sync": "Synchronisieren", + "resume": "Fortsetzen", + "pause": "Pause" + }, + "index": { + "enable": "Aktivieren", + "disable": "Deaktivieren", + "all": "Alle", + "enableTip": "Die Datei kann indiziert werden", + "disableTip": "Die Datei kann nicht indiziert werden" + }, + "status": { + "queuing": "In Warteschlange", + "indexing": "Indizierung", + "paused": "Pausiert", + "error": "Fehler", + "available": "Verfügbar", + "enabled": "Aktiviert", + "disabled": "Deaktiviert", + "archived": "Archiviert" + }, + "empty": { + "title": "Es gibt noch keine Dokumentation", + "upload": { + "tip": "Sie können Dateien hochladen, von der Website oder von Web-Apps wie Notion, GitHub usw. synchronisieren." + }, + "sync": { + "tip": "Dify wird periodisch Dateien von Ihrem Notion herunterladen und die Verarbeitung abschließen." + } + }, + "delete": { + "title": "Sind Sie sicher, dass Sie löschen möchten?", + "content": "Wenn Sie die Verarbeitung später fortsetzen müssen, werden Sie dort weitermachen, wo Sie aufgehört haben" + }, + "batchModal": { + "title": "Chunks in Batch hinzufügen", + "csvUploadTitle": "Ziehen Sie Ihre CSV-Datei hierher oder ", + "browse": "durchsuchen", + "tip": "Die CSV-Datei muss der folgenden Struktur entsprechen:", + "question": "Frage", + "answer": "Antwort", + "contentTitle": "Chunk-Inhalt", + "content": "Inhalt", + "template": "Laden Sie die Vorlage hier herunter", + "cancel": "Abbrechen", + "run": "Batch ausführen", + "runError": "Batch-Ausführung fehlgeschlagen", + "processing": "In Batch-Verarbeitung", + "completed": "Import abgeschlossen", + "error": "Importfehler", + "ok": "OK" + }, + "addUrl": "URL hinzufügen", + "learnMore": "Weitere Informationen", + "sort": { + "uploadTime": "Upload-Zeit", + "hitCount": "Abrufanzahl" + } + }, + "metadata": { + "title": "Metadaten", + "desc": "Das Kennzeichnen von Metadaten für Dokumente ermöglicht es der KI, sie rechtzeitig zu erreichen und die Quelle der Referenzen für die Benutzer offenzulegen.", + "dateTimeFormat": "MMMM D, YYYY hh:mm A", + "docTypeSelectTitle": "Bitte wählen Sie einen Dokumenttyp", + "docTypeChangeTitle": "Dokumenttyp ändern", + "docTypeSelectWarning": "Wenn der Dokumenttyp geändert wird, werden die jetzt ausgefüllten Metadaten nicht mehr erhalten bleiben", + "firstMetaAction": "Los geht's", + "placeholder": { + "add": "Hinzufügen ", + "select": "Auswählen " + }, + "source": { + "upload_file": "Datei hochladen", + "notion": "Von Notion synchronisieren", + "github": "Von Github synchronisieren", + "online_document": "Online-Dokument", + "local_file": "Lokale Datei", + "website_crawl": "Website-Crawl" + }, + "type": { + "book": "Buch", + "webPage": "Webseite", + "paper": "Aufsatz", + "socialMediaPost": "Social Media Beitrag", + "personalDocument": "Persönliches Dokument", + "businessDocument": "Geschäftsdokument", + "IMChat": "IM Chat", + "wikipediaEntry": "Wikipedia-Eintrag", + "notion": "Von Notion synchronisieren", + "github": "Von Github synchronisieren", + "technicalParameters": "Technische Parameter" + }, + "field": { + "processRule": { + "processDoc": "Dokument verarbeiten", + "segmentRule": "Chunk-Regel", + "segmentLength": "Chunk-Länge", + "processClean": "Textverarbeitung bereinigen" + }, + "book": { + "title": "Titel", + "language": "Sprache", + "author": "Autor", + "publisher": "Verlag", + "publicationDate": "Veröffentlichungsdatum", + "ISBN": "ISBN", + "category": "Kategorie" + }, + "webPage": { + "title": "Titel", + "url": "URL", + "language": "Sprache", + "authorPublisher": "Autor/Verlag", + "publishDate": "Veröffentlichungsdatum", + "topicKeywords": "Themen/Schlüsselwörter", + "description": "Beschreibung" + }, + "paper": { + "title": "Titel", + "language": "Sprache", + "author": "Autor", + "publishDate": "Veröffentlichungsdatum", + "journalConferenceName": "Zeitschrift/Konferenzname", + "volumeIssuePage": "Band/Ausgabe/Seite", + "DOI": "DOI", + "abstract": "Zusammenfassung", + "topicsKeywords": "Themen/Stichworte" + }, + "socialMediaPost": { + "platform": "Plattform", + "authorUsername": "Autor/Benutzername", + "publishDate": "Veröffentlichungsdatum", + "postURL": "Beitrags-URL", + "topicsTags": "Themen/Tags" + }, + "personalDocument": { + "title": "Titel", + "author": "Autor", + "creationDate": "Erstellungsdatum", + "lastModifiedDate": "Letztes Änderungsdatum", + "documentType": "Dokumenttyp", + "tagsCategory": "Tags/Kategorie" + }, + "businessDocument": { + "title": "Titel", + "author": "Autor", + "creationDate": "Erstellungsdatum", + "lastModifiedDate": "Letztes Änderungsdatum", + "documentType": "Dokumenttyp", + "departmentTeam": "Abteilung/Team" + }, + "IMChat": { + "chatPlatform": "Chat-Plattform", + "chatPartiesGroupName": "Chat-Parteien/Gruppenname", + "participants": "Teilnehmer", + "startDate": "Startdatum", + "endDate": "Enddatum", + "topicsKeywords": "Themen/Schlüsselwörter", + "fileType": "Dateityp" + }, + "wikipediaEntry": { + "title": "Titel", + "language": "Sprache", + "webpageURL": "Webseiten-URL", + "editorContributor": "Editor/Beitragender", + "lastEditDate": "Letztes Bearbeitungsdatum", + "summaryIntroduction": "Zusammenfassung/Einführung" + }, + "notion": { + "title": "Titel", + "language": "Sprache", + "author": "Autor", + "createdTime": "Erstellungszeit", + "lastModifiedTime": "Letzte Änderungszeit", + "url": "URL", + "tag": "Tag", + "description": "Beschreibung" + }, + "github": { + "repoName": "Repository-Name", + "repoDesc": "Repository-Beschreibung", + "repoOwner": "Repository-Eigentümer", + "fileName": "Dateiname", + "filePath": "Dateipfad", + "programmingLang": "Programmiersprache", + "url": "URL", + "license": "Lizenz", + "lastCommitTime": "Letzte Commit-Zeit", + "lastCommitAuthor": "Letzter Commit-Autor" + }, + "originInfo": { + "originalFilename": "Originaldateiname", + "originalFileSize": "Originaldateigröße", + "uploadDate": "Hochladedatum", + "lastUpdateDate": "Letztes Änderungsdatum", + "source": "Quelle" + }, + "technicalParameters": { + "segmentSpecification": "Chunk-Spezifikation", + "segmentLength": "Chunk-Länge", + "avgParagraphLength": "Durchschn. Absatzlänge", + "paragraphs": "Absätze", + "hitCount": "Abrufanzahl", + "embeddingTime": "Einbettungszeit", + "embeddedSpend": "Einbettungsausgaben" + } + }, + "languageMap": { + "zh": "Chinesisch", + "en": "Englisch", + "es": "Spanisch", + "fr": "Französisch", + "de": "Deutsch", + "ja": "Japanisch", + "ko": "Koreanisch", + "ru": "Russisch", + "ar": "Arabisch", + "pt": "Portugiesisch", + "it": "Italienisch", + "nl": "Niederländisch", + "pl": "Polnisch", + "sv": "Schwedisch", + "tr": "Türkisch", + "he": "Hebräisch", + "hi": "Hindi", + "da": "Dänisch", + "fi": "Finnisch", + "no": "Norwegisch", + "hu": "Ungarisch", + "el": "Griechisch", + "cs": "Tschechisch", + "th": "Thai", + "id": "Indonesisch" + }, + "categoryMap": { + "book": { + "fiction": "Fiktion", + "biography": "Biografie", + "history": "Geschichte", + "science": "Wissenschaft", + "technology": "Technologie", + "education": "Bildung", + "philosophy": "Philosophie", + "religion": "Religion", + "socialSciences": "Sozialwissenschaften", + "art": "Kunst", + "travel": "Reisen", + "health": "Gesundheit", + "selfHelp": "Selbsthilfe", + "businessEconomics": "Wirtschaft", + "cooking": "Kochen", + "childrenYoungAdults": "Kinder & Jugendliche", + "comicsGraphicNovels": "Comics & Grafische Romane", + "poetry": "Poesie", + "drama": "Drama", + "other": "Andere" + }, + "personalDoc": { + "notes": "Notizen", + "blogDraft": "Blog-Entwurf", + "diary": "Tagebuch", + "researchReport": "Forschungsbericht", + "bookExcerpt": "Buchauszug", + "schedule": "Zeitplan", + "list": "Liste", + "projectOverview": "Projektübersicht", + "photoCollection": "Fotosammlung", + "creativeWriting": "Kreatives Schreiben", + "codeSnippet": "Code-Snippet", + "designDraft": "Design-Entwurf", + "personalResume": "Persönlicher Lebenslauf", + "other": "Andere" + }, + "businessDoc": { + "meetingMinutes": "Protokolle", + "researchReport": "Forschungsbericht", + "proposal": "Vorschlag", + "employeeHandbook": "Mitarbeiterhandbuch", + "trainingMaterials": "Schulungsmaterialien", + "requirementsDocument": "Anforderungsdokumentation", + "designDocument": "Design-Dokument", + "productSpecification": "Produktspezifikation", + "financialReport": "Finanzbericht", + "marketAnalysis": "Marktanalyse", + "projectPlan": "Projektplan", + "teamStructure": "Teamstruktur", + "policiesProcedures": "Richtlinien & Verfahren", + "contractsAgreements": "Verträge & Vereinbarungen", + "emailCorrespondence": "E-Mail-Korrespondenz", + "other": "Andere" + } + } + }, + "embedding": { + "processing": "Einbettungsverarbeitung...", + "paused": "Einbettung pausiert", + "completed": "Einbettung abgeschlossen", + "error": "Einbettungsfehler", + "docName": "Dokument vorbereiten", + "mode": "Segmentierungsregel", + "segmentLength": "Chunk-Länge", + "textCleaning": "Textvordefinition und -bereinigung", + "segments": "Absätze", + "highQuality": "Hochwertiger Modus", + "economy": "Wirtschaftlicher Modus", + "estimate": "Geschätzter Verbrauch", + "stop": "Verarbeitung stoppen", + "resume": "Verarbeitung fortsetzen", + "automatic": "Automatisch", + "custom": "Benutzerdefiniert", + "previewTip": "Absatzvorschau ist nach Abschluss der Einbettung verfügbar", + "parentMaxTokens": "Elternteil", + "childMaxTokens": "Kind", + "hierarchical": "Eltern-Kind", + "pause": "Pause", + "waiting": "Einbettung wartet..." + }, + "segment": { + "paragraphs": "Absätze", + "keywords": "Schlüsselwörter", + "addKeyWord": "Schlüsselwort hinzufügen", + "keywordError": "Die maximale Länge des Schlüsselworts beträgt 20", + "hitCount": "Abrufanzahl", + "vectorHash": "Vektor-Hash: ", + "questionPlaceholder": "Frage hier hinzufügen", + "questionEmpty": "Frage darf nicht leer sein", + "answerPlaceholder": "Antwort hier hinzufügen", + "answerEmpty": "Antwort darf nicht leer sein", + "contentPlaceholder": "Inhalt hier hinzufügen", + "contentEmpty": "Inhalt darf nicht leer sein", + "newTextSegment": "Neues Textsegment", + "newQaSegment": "Neues Q&A-Segment", + "delete": "Diesen Chunk löschen?", + "parentChunks_one": "ÜBERGEORDNETER CHUNK", + "searchResults_other": "BEFUND", + "clearFilter": "Filter löschen", + "chunk": "Stück", + "childChunk": "Untergeordneter Brocken", + "newChildChunk": "Neuer untergeordneter Block", + "chunkDetail": "Chunk-Detail", + "regeneratingMessage": "Das kann einen Moment dauern, bitte warten...", + "searchResults_zero": "ERGEBNIS", + "parentChunks_other": "ÜBERGEORDNETE BLÖCKE", + "editParentChunk": "Übergeordneter Block bearbeiten", + "childChunks_other": "UNTERGEORDNETE BLÖCKE", + "editChunk": "Chunk bearbeiten", + "regenerationSuccessTitle": "Regeneration abgeschlossen", + "parentChunk": "Übergeordneter Chunk", + "childChunkAdded": "1 untergeordneter Block hinzugefügt", + "edited": "BEARBEITETE", + "collapseChunks": "Blöcke reduzieren", + "empty": "Kein Chunk gefunden", + "regenerationSuccessMessage": "Sie können dieses Fenster schließen.", + "chunks_other": "STÜCKE", + "regenerationConfirmMessage": "Beim Regenerieren von untergeordneten Blöcken werden die aktuellen untergeordneten Blöcke überschrieben, einschließlich bearbeiteter und neu hinzugefügter Blöcke. Die Regeneration kann nicht rückgängig gemacht werden.", + "childChunks_one": "UNTERGEORDNETER CHUNK", + "characters_other": "Zeichen", + "newChunk": "Neuer Brocken", + "editChildChunk": "Untergeordneten Block bearbeiten", + "chunkAdded": "1 Stück hinzugefügt", + "expandChunks": "Blöcke erweitern", + "editedAt": "Bearbeitet am", + "dateTimeFormat": "MM/DD/YYYY h:mm", + "addChunk": "Block hinzufügen", + "addAnother": "Fügen Sie eine weitere hinzu", + "regeneratingTitle": "Regenerieren von untergeordneten Blöcken", + "chunks_one": "STÜCK", + "characters_one": "Zeichen", + "addChildChunk": "Untergeordneten Block hinzufügen", + "regenerationConfirmTitle": "Möchten Sie untergeordnete Chunks regenerieren?", + "searchResults_one": "ERGEBNIS", + "keywordEmpty": "Das Schlüsselwort darf nicht leer sein.", + "keywordDuplicate": "Das Schlüsselwort existiert bereits", + "allFilesUploaded": "Alle Dateien müssen vor dem Speichern hochgeladen werden" + } +} diff --git a/web/i18n/de-DE/dataset-documents.ts b/web/i18n/de-DE/dataset-documents.ts deleted file mode 100644 index 26711d36ac..0000000000 --- a/web/i18n/de-DE/dataset-documents.ts +++ /dev/null @@ -1,408 +0,0 @@ -const translation = { - list: { - title: 'Dokumente', - desc: 'Alle Dateien des Wissens werden hier angezeigt, und das gesamte Wissen kann mit Dify-Zitaten verknüpft oder über das Chat-Plugin indiziert werden.', - addFile: 'Datei hinzufügen', - addPages: 'Seiten hinzufügen', - table: { - header: { - fileName: 'DATEINAME', - words: 'WÖRTER', - hitCount: 'SUCHANFRAGEN', - uploadTime: 'HOCHLADEZEIT', - status: 'STATUS', - action: 'AKTION', - chunkingMode: 'CHUNKING-MODUS', - }, - name: 'Name', - rename: 'Umbenennen', - }, - action: { - uploadFile: 'Neue Datei hochladen', - settings: 'Segment-Einstellungen', - addButton: 'Chunk hinzufügen', - add: 'Einen Chunk hinzufügen', - batchAdd: 'Batch hinzufügen', - archive: 'Archivieren', - unarchive: 'Archivierung aufheben', - delete: 'Löschen', - enableWarning: 'Archivierte Datei kann nicht aktiviert werden', - sync: 'Synchronisieren', - resume: 'Fortsetzen', - pause: 'Pause', - }, - index: { - enable: 'Aktivieren', - disable: 'Deaktivieren', - all: 'Alle', - enableTip: 'Die Datei kann indiziert werden', - disableTip: 'Die Datei kann nicht indiziert werden', - }, - status: { - queuing: 'In Warteschlange', - indexing: 'Indizierung', - paused: 'Pausiert', - error: 'Fehler', - available: 'Verfügbar', - enabled: 'Aktiviert', - disabled: 'Deaktiviert', - archived: 'Archiviert', - }, - empty: { - title: 'Es gibt noch keine Dokumentation', - upload: { - tip: 'Sie können Dateien hochladen, von der Website oder von Web-Apps wie Notion, GitHub usw. synchronisieren.', - }, - sync: { - tip: 'Dify wird periodisch Dateien von Ihrem Notion herunterladen und die Verarbeitung abschließen.', - }, - }, - delete: { - title: 'Sind Sie sicher, dass Sie löschen möchten?', - content: 'Wenn Sie die Verarbeitung später fortsetzen müssen, werden Sie dort weitermachen, wo Sie aufgehört haben', - }, - batchModal: { - title: 'Chunks in Batch hinzufügen', - csvUploadTitle: 'Ziehen Sie Ihre CSV-Datei hierher oder ', - browse: 'durchsuchen', - tip: 'Die CSV-Datei muss der folgenden Struktur entsprechen:', - question: 'Frage', - answer: 'Antwort', - contentTitle: 'Chunk-Inhalt', - content: 'Inhalt', - template: 'Laden Sie die Vorlage hier herunter', - cancel: 'Abbrechen', - run: 'Batch ausführen', - runError: 'Batch-Ausführung fehlgeschlagen', - processing: 'In Batch-Verarbeitung', - completed: 'Import abgeschlossen', - error: 'Importfehler', - ok: 'OK', - }, - addUrl: 'URL hinzufügen', - learnMore: 'Weitere Informationen', - sort: { - uploadTime: 'Upload-Zeit', - hitCount: 'Abrufanzahl', - }, - }, - metadata: { - title: 'Metadaten', - desc: 'Das Kennzeichnen von Metadaten für Dokumente ermöglicht es der KI, sie rechtzeitig zu erreichen und die Quelle der Referenzen für die Benutzer offenzulegen.', - dateTimeFormat: 'MMMM D, YYYY hh:mm A', - docTypeSelectTitle: 'Bitte wählen Sie einen Dokumenttyp', - docTypeChangeTitle: 'Dokumenttyp ändern', - docTypeSelectWarning: - 'Wenn der Dokumenttyp geändert wird, werden die jetzt ausgefüllten Metadaten nicht mehr erhalten bleiben', - firstMetaAction: 'Los geht\'s', - placeholder: { - add: 'Hinzufügen ', - select: 'Auswählen ', - }, - source: { - upload_file: 'Datei hochladen', - notion: 'Von Notion synchronisieren', - github: 'Von Github synchronisieren', - online_document: 'Online-Dokument', - local_file: 'Lokale Datei', - website_crawl: 'Website-Crawl', - }, - type: { - book: 'Buch', - webPage: 'Webseite', - paper: 'Aufsatz', - socialMediaPost: 'Social Media Beitrag', - personalDocument: 'Persönliches Dokument', - businessDocument: 'Geschäftsdokument', - IMChat: 'IM Chat', - wikipediaEntry: 'Wikipedia-Eintrag', - notion: 'Von Notion synchronisieren', - github: 'Von Github synchronisieren', - technicalParameters: 'Technische Parameter', - }, - field: { - processRule: { - processDoc: 'Dokument verarbeiten', - segmentRule: 'Chunk-Regel', - segmentLength: 'Chunk-Länge', - processClean: 'Textverarbeitung bereinigen', - }, - book: { - title: 'Titel', - language: 'Sprache', - author: 'Autor', - publisher: 'Verlag', - publicationDate: 'Veröffentlichungsdatum', - ISBN: 'ISBN', - category: 'Kategorie', - }, - webPage: { - title: 'Titel', - url: 'URL', - language: 'Sprache', - authorPublisher: 'Autor/Verlag', - publishDate: 'Veröffentlichungsdatum', - topicKeywords: 'Themen/Schlüsselwörter', - description: 'Beschreibung', - }, - paper: { - title: 'Titel', - language: 'Sprache', - author: 'Autor', - publishDate: 'Veröffentlichungsdatum', - journalConferenceName: 'Zeitschrift/Konferenzname', - volumeIssuePage: 'Band/Ausgabe/Seite', - DOI: 'DOI', - abstract: 'Zusammenfassung', - topicsKeywords: 'Themen/Stichworte', - }, - socialMediaPost: { - platform: 'Plattform', - authorUsername: 'Autor/Benutzername', - publishDate: 'Veröffentlichungsdatum', - postURL: 'Beitrags-URL', - topicsTags: 'Themen/Tags', - }, - personalDocument: { - title: 'Titel', - author: 'Autor', - creationDate: 'Erstellungsdatum', - lastModifiedDate: 'Letztes Änderungsdatum', - documentType: 'Dokumenttyp', - tagsCategory: 'Tags/Kategorie', - }, - businessDocument: { - title: 'Titel', - author: 'Autor', - creationDate: 'Erstellungsdatum', - lastModifiedDate: 'Letztes Änderungsdatum', - documentType: 'Dokumenttyp', - departmentTeam: 'Abteilung/Team', - }, - IMChat: { - chatPlatform: 'Chat-Plattform', - chatPartiesGroupName: 'Chat-Parteien/Gruppenname', - participants: 'Teilnehmer', - startDate: 'Startdatum', - endDate: 'Enddatum', - topicsKeywords: 'Themen/Schlüsselwörter', - fileType: 'Dateityp', - }, - wikipediaEntry: { - title: 'Titel', - language: 'Sprache', - webpageURL: 'Webseiten-URL', - editorContributor: 'Editor/Beitragender', - lastEditDate: 'Letztes Bearbeitungsdatum', - summaryIntroduction: 'Zusammenfassung/Einführung', - }, - notion: { - title: 'Titel', - language: 'Sprache', - author: 'Autor', - createdTime: 'Erstellungszeit', - lastModifiedTime: 'Letzte Änderungszeit', - url: 'URL', - tag: 'Tag', - description: 'Beschreibung', - }, - github: { - repoName: 'Repository-Name', - repoDesc: 'Repository-Beschreibung', - repoOwner: 'Repository-Eigentümer', - fileName: 'Dateiname', - filePath: 'Dateipfad', - programmingLang: 'Programmiersprache', - url: 'URL', - license: 'Lizenz', - lastCommitTime: 'Letzte Commit-Zeit', - lastCommitAuthor: 'Letzter Commit-Autor', - }, - originInfo: { - originalFilename: 'Originaldateiname', - originalFileSize: 'Originaldateigröße', - uploadDate: 'Hochladedatum', - lastUpdateDate: 'Letztes Änderungsdatum', - source: 'Quelle', - }, - technicalParameters: { - segmentSpecification: 'Chunk-Spezifikation', - segmentLength: 'Chunk-Länge', - avgParagraphLength: 'Durchschn. Absatzlänge', - paragraphs: 'Absätze', - hitCount: 'Abrufanzahl', - embeddingTime: 'Einbettungszeit', - embeddedSpend: 'Einbettungsausgaben', - }, - }, - languageMap: { - zh: 'Chinesisch', - en: 'Englisch', - es: 'Spanisch', - fr: 'Französisch', - de: 'Deutsch', - ja: 'Japanisch', - ko: 'Koreanisch', - ru: 'Russisch', - ar: 'Arabisch', - pt: 'Portugiesisch', - it: 'Italienisch', - nl: 'Niederländisch', - pl: 'Polnisch', - sv: 'Schwedisch', - tr: 'Türkisch', - he: 'Hebräisch', - hi: 'Hindi', - da: 'Dänisch', - fi: 'Finnisch', - no: 'Norwegisch', - hu: 'Ungarisch', - el: 'Griechisch', - cs: 'Tschechisch', - th: 'Thai', - id: 'Indonesisch', - }, - categoryMap: { - book: { - fiction: 'Fiktion', - biography: 'Biografie', - history: 'Geschichte', - science: 'Wissenschaft', - technology: 'Technologie', - education: 'Bildung', - philosophy: 'Philosophie', - religion: 'Religion', - socialSciences: 'Sozialwissenschaften', - art: 'Kunst', - travel: 'Reisen', - health: 'Gesundheit', - selfHelp: 'Selbsthilfe', - businessEconomics: 'Wirtschaft', - cooking: 'Kochen', - childrenYoungAdults: 'Kinder & Jugendliche', - comicsGraphicNovels: 'Comics & Grafische Romane', - poetry: 'Poesie', - drama: 'Drama', - other: 'Andere', - }, - personalDoc: { - notes: 'Notizen', - blogDraft: 'Blog-Entwurf', - diary: 'Tagebuch', - researchReport: 'Forschungsbericht', - bookExcerpt: 'Buchauszug', - schedule: 'Zeitplan', - list: 'Liste', - projectOverview: 'Projektübersicht', - photoCollection: 'Fotosammlung', - creativeWriting: 'Kreatives Schreiben', - codeSnippet: 'Code-Snippet', - designDraft: 'Design-Entwurf', - personalResume: 'Persönlicher Lebenslauf', - other: 'Andere', - }, - businessDoc: { - meetingMinutes: 'Protokolle', - researchReport: 'Forschungsbericht', - proposal: 'Vorschlag', - employeeHandbook: 'Mitarbeiterhandbuch', - trainingMaterials: 'Schulungsmaterialien', - requirementsDocument: 'Anforderungsdokumentation', - designDocument: 'Design-Dokument', - productSpecification: 'Produktspezifikation', - financialReport: 'Finanzbericht', - marketAnalysis: 'Marktanalyse', - projectPlan: 'Projektplan', - teamStructure: 'Teamstruktur', - policiesProcedures: 'Richtlinien & Verfahren', - contractsAgreements: 'Verträge & Vereinbarungen', - emailCorrespondence: 'E-Mail-Korrespondenz', - other: 'Andere', - }, - }, - }, - embedding: { - processing: 'Einbettungsverarbeitung...', - paused: 'Einbettung pausiert', - completed: 'Einbettung abgeschlossen', - error: 'Einbettungsfehler', - docName: 'Dokument vorbereiten', - mode: 'Segmentierungsregel', - segmentLength: 'Chunk-Länge', - textCleaning: 'Textvordefinition und -bereinigung', - segments: 'Absätze', - highQuality: 'Hochwertiger Modus', - economy: 'Wirtschaftlicher Modus', - estimate: 'Geschätzter Verbrauch', - stop: 'Verarbeitung stoppen', - resume: 'Verarbeitung fortsetzen', - automatic: 'Automatisch', - custom: 'Benutzerdefiniert', - previewTip: 'Absatzvorschau ist nach Abschluss der Einbettung verfügbar', - parentMaxTokens: 'Elternteil', - childMaxTokens: 'Kind', - hierarchical: 'Eltern-Kind', - pause: 'Pause', - waiting: 'Einbettung wartet...', - }, - segment: { - paragraphs: 'Absätze', - keywords: 'Schlüsselwörter', - addKeyWord: 'Schlüsselwort hinzufügen', - keywordError: 'Die maximale Länge des Schlüsselworts beträgt 20', - hitCount: 'Abrufanzahl', - vectorHash: 'Vektor-Hash: ', - questionPlaceholder: 'Frage hier hinzufügen', - questionEmpty: 'Frage darf nicht leer sein', - answerPlaceholder: 'Antwort hier hinzufügen', - answerEmpty: 'Antwort darf nicht leer sein', - contentPlaceholder: 'Inhalt hier hinzufügen', - contentEmpty: 'Inhalt darf nicht leer sein', - newTextSegment: 'Neues Textsegment', - newQaSegment: 'Neues Q&A-Segment', - delete: 'Diesen Chunk löschen?', - parentChunks_one: 'ÜBERGEORDNETER CHUNK', - searchResults_other: 'BEFUND', - clearFilter: 'Filter löschen', - chunk: 'Stück', - childChunk: 'Untergeordneter Brocken', - newChildChunk: 'Neuer untergeordneter Block', - chunkDetail: 'Chunk-Detail', - regeneratingMessage: 'Das kann einen Moment dauern, bitte warten...', - searchResults_zero: 'ERGEBNIS', - parentChunks_other: 'ÜBERGEORDNETE BLÖCKE', - editParentChunk: 'Übergeordneter Block bearbeiten', - childChunks_other: 'UNTERGEORDNETE BLÖCKE', - editChunk: 'Chunk bearbeiten', - regenerationSuccessTitle: 'Regeneration abgeschlossen', - parentChunk: 'Übergeordneter Chunk', - childChunkAdded: '1 untergeordneter Block hinzugefügt', - edited: 'BEARBEITETE', - collapseChunks: 'Blöcke reduzieren', - empty: 'Kein Chunk gefunden', - regenerationSuccessMessage: 'Sie können dieses Fenster schließen.', - chunks_other: 'STÜCKE', - regenerationConfirmMessage: 'Beim Regenerieren von untergeordneten Blöcken werden die aktuellen untergeordneten Blöcke überschrieben, einschließlich bearbeiteter und neu hinzugefügter Blöcke. Die Regeneration kann nicht rückgängig gemacht werden.', - childChunks_one: 'UNTERGEORDNETER CHUNK', - characters_other: 'Zeichen', - newChunk: 'Neuer Brocken', - editChildChunk: 'Untergeordneten Block bearbeiten', - chunkAdded: '1 Stück hinzugefügt', - expandChunks: 'Blöcke erweitern', - editedAt: 'Bearbeitet am', - dateTimeFormat: 'MM/DD/YYYY h:mm', - addChunk: 'Block hinzufügen', - addAnother: 'Fügen Sie eine weitere hinzu', - regeneratingTitle: 'Regenerieren von untergeordneten Blöcken', - chunks_one: 'STÜCK', - characters_one: 'Zeichen', - addChildChunk: 'Untergeordneten Block hinzufügen', - regenerationConfirmTitle: 'Möchten Sie untergeordnete Chunks regenerieren?', - searchResults_one: 'ERGEBNIS', - keywordEmpty: 'Das Schlüsselwort darf nicht leer sein.', - keywordDuplicate: 'Das Schlüsselwort existiert bereits', - allFilesUploaded: 'Alle Dateien müssen vor dem Speichern hochgeladen werden', - }, -} - -export default translation diff --git a/web/i18n/de-DE/dataset-hit-testing.json b/web/i18n/de-DE/dataset-hit-testing.json new file mode 100644 index 0000000000..f987755c58 --- /dev/null +++ b/web/i18n/de-DE/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "Abruf-Test", + "desc": "Testen Sie die Treffereffektivität des Wissens anhand des gegebenen Abfragetextes.", + "dateTimeFormat": "MM/DD/YYYY hh:mm A", + "table": { + "header": { + "source": "Quelle", + "time": "Zeit", + "queryContent": "Inhaltsabfrage" + } + }, + "input": { + "title": "Quelltext", + "placeholder": "Bitte geben Sie einen Text ein, ein kurzer aussagekräftiger Satz wird empfohlen.", + "countWarning": "Bis zu 200 Zeichen.", + "indexWarning": "Nur Wissen hoher Qualität.", + "testing": "Testen" + }, + "hit": { + "title": "ABRUFPARAGRAFEN", + "emptyTip": "Ergebnisse des Abruf-Tests werden hier angezeigt" + }, + "noRecentTip": "Keine kürzlichen Abfrageergebnisse hier", + "viewChart": "VEKTORDIAGRAMM ansehen", + "viewDetail": "Im Detail sehen", + "settingTitle": "Einstellung für den Abruf", + "records": "Aufzeichnungen", + "open": "Offen", + "hitChunks": "Klicken Sie auf {{num}} untergeordnete Chunks", + "keyword": "Schlüsselwörter", + "chunkDetail": "Chunk-Detail", + "imageUploader": { + "tip": "Bilder hochladen oder ablegen (Max. {{batchCount}}, {{size}} MB pro Bild)", + "tooltip": "Bilder hochladen (Max. {{batchCount}}, jeweils {{size}} MB)", + "dropZoneTip": "Datei hierher ziehen, um sie hochzuladen", + "singleChunkAttachmentLimitTooltip": "Die Anzahl der Einzelblock-Anhänge darf {{limit}} nicht überschreiten" + } +} diff --git a/web/i18n/de-DE/dataset-hit-testing.ts b/web/i18n/de-DE/dataset-hit-testing.ts deleted file mode 100644 index 7c4007ff5d..0000000000 --- a/web/i18n/de-DE/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - title: 'Abruf-Test', - desc: 'Testen Sie die Treffereffektivität des Wissens anhand des gegebenen Abfragetextes.', - dateTimeFormat: 'MM/DD/YYYY hh:mm A', - table: { - header: { - source: 'Quelle', - time: 'Zeit', - queryContent: 'Inhaltsabfrage', - }, - }, - input: { - title: 'Quelltext', - placeholder: 'Bitte geben Sie einen Text ein, ein kurzer aussagekräftiger Satz wird empfohlen.', - countWarning: 'Bis zu 200 Zeichen.', - indexWarning: 'Nur Wissen hoher Qualität.', - testing: 'Testen', - }, - hit: { - title: 'ABRUFPARAGRAFEN', - emptyTip: 'Ergebnisse des Abruf-Tests werden hier angezeigt', - }, - noRecentTip: 'Keine kürzlichen Abfrageergebnisse hier', - viewChart: 'VEKTORDIAGRAMM ansehen', - viewDetail: 'Im Detail sehen', - settingTitle: 'Einstellung für den Abruf', - records: 'Aufzeichnungen', - open: 'Offen', - hitChunks: 'Klicken Sie auf {{num}} untergeordnete Chunks', - keyword: 'Schlüsselwörter', - chunkDetail: 'Chunk-Detail', - imageUploader: { - tip: 'Bilder hochladen oder ablegen (Max. {{batchCount}}, {{size}} MB pro Bild)', - tooltip: 'Bilder hochladen (Max. {{batchCount}}, jeweils {{size}} MB)', - dropZoneTip: 'Datei hierher ziehen, um sie hochzuladen', - singleChunkAttachmentLimitTooltip: 'Die Anzahl der Einzelblock-Anhänge darf {{limit}} nicht überschreiten', - }, -} - -export default translation diff --git a/web/i18n/de-DE/dataset-pipeline.json b/web/i18n/de-DE/dataset-pipeline.json new file mode 100644 index 0000000000..bc9101dce8 --- /dev/null +++ b/web/i18n/de-DE/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "createFromScratch": { + "title": "Leere Wissenspipeline", + "description": "Erstellen Sie eine benutzerdefinierte Pipeline von Grund auf neu mit vollständiger Kontrolle über die Datenverarbeitung und -struktur." + }, + "caution": "Vorsicht", + "backToKnowledge": "Zurück zu Wissen", + "createKnowledge": "Wissen schaffen", + "importDSL": "Importieren aus einer DSL-Datei", + "successTip": "Erfolgreich eine Wissensdatenbank erstellt", + "errorTip": "Fehler beim Erstellen einer Wissensdatenbank" + }, + "templates": { + "customized": "Angepasst" + }, + "operations": { + "dataSource": "Datenquelle", + "details": "Details", + "process": "Prozess", + "preview": "Vorschau", + "convert": "Umwandeln", + "useTemplate": "Verwenden dieser Wissenspipeline", + "backToDataSource": "Zurück zur Datenquelle", + "exportPipeline": "Pipeline exportieren", + "editInfo": "Info bearbeiten", + "choose": "Wählen", + "saveAndProcess": "Speichern & Verarbeiten" + }, + "deletePipeline": { + "title": "Sind Sie sicher, dass Sie diese Pipeline-Vorlage löschen möchten?", + "content": "Das Löschen der Pipelinevorlage kann nicht rückgängig gemacht werden." + }, + "publishPipeline": { + "success": { + "message": "Knowledge Pipeline veröffentlicht", + "tip": "Gehe zu Dokumente, um Dokumente hinzuzufügen oder zu verwalten." + }, + "error": { + "message": "Fehler beim Veröffentlichen der Wissenspipeline" + } + }, + "publishTemplate": { + "success": { + "learnMore": "Weitere Informationen", + "tip": "Sie können diese Vorlage auf der Erstellungsseite verwenden.", + "message": "Pipeline-Vorlage veröffentlicht" + }, + "error": { + "message": "Fehler beim Veröffentlichen der Pipeline-Vorlage" + } + }, + "exportDSL": { + "successTip": "Pipeline-DSL erfolgreich exportieren", + "errorTip": "Fehler beim Exportieren der Pipeline-DSL" + }, + "details": { + "structure": "Struktur", + "structureTooltip": "Die Blockstruktur bestimmt, wie Dokumente aufgeteilt und indiziert werden, und bietet die Modi \"Allgemein\", \"Über-Eltern-Kind\" und \"Q&A\" und ist für jede Wissensdatenbank einzigartig.", + "createdBy": "Von {{author}}" + }, + "testRun": { + "steps": { + "documentProcessing": "Verarbeitung von Dokumenten", + "dataSource": "Datenquelle" + }, + "dataSource": { + "localFiles": "Lokale Dateien" + }, + "notion": { + "docTitle": "Notion docs", + "title": "Wählen Sie Notion Pages" + }, + "title": "Testlauf", + "tooltip": "Im Testlaufmodus darf jeweils nur ein Dokument importiert werden, um das Debuggen und Beobachten zu vereinfachen." + }, + "inputFieldPanel": { + "uniqueInputs": { + "title": "Einzigartige Eingänge für jeden Eingang", + "tooltip": "Eindeutige Eingaben sind nur für die ausgewählte Datenquelle und ihre Downstream-Knoten zugänglich. Benutzer müssen sie nicht ausfüllen, wenn sie andere Datenquellen auswählen. Im ersten Schritt (Datenquelle) werden nur Eingabefelder angezeigt, auf die von Datenquellenvariablen verwiesen wird. Alle anderen Felder werden im zweiten Schritt (Dokumente bearbeiten) angezeigt." + }, + "globalInputs": { + "title": "Globale Eingänge für alle Eingänge", + "tooltip": "Globale Eingaben werden von allen Knoten gemeinsam genutzt. Benutzer müssen sie ausfüllen, wenn sie eine Datenquelle auswählen. Beispielsweise können Felder wie Trennzeichen und maximale Blocklänge einheitlich auf mehrere Datenquellen angewendet werden. Im ersten Schritt (Datenquelle) werden nur Eingabefelder angezeigt, die von Datenquellenvariablen referenziert werden. Alle anderen Felder werden im zweiten Schritt (Dokumente bearbeiten) angezeigt." + }, + "preview": { + "stepTwoTitle": "Dokumente verarbeiten", + "stepOneTitle": "Datenquelle" + }, + "error": { + "variableDuplicate": "Der Variablenname ist bereits vorhanden. Bitte wählen Sie einen anderen Namen." + }, + "editInputField": "Eingabefeld bearbeiten", + "addInputField": "Eingabefeld hinzufügen", + "title": "Eingabefelder für Benutzer", + "description": "Benutzereingabefelder werden verwendet, um Variablen zu definieren und zu erfassen, die während des Pipeline-Ausführungsprozesses erforderlich sind. Benutzer können den Feldtyp anpassen und den Eingabewert flexibel konfigurieren, um den Anforderungen verschiedener Datenquellen oder Dokumentverarbeitungsschritte gerecht zu werden." + }, + "addDocuments": { + "steps": { + "processDocuments": "Dokumente verarbeiten", + "processingDocuments": "Verarbeiten von Dokumenten", + "chooseDatasource": "Auswählen einer Datenquelle" + }, + "stepOne": { + "preview": "Vorschau" + }, + "stepTwo": { + "previewChunks": "Vorschau von Chunks", + "chunkSettings": "Chunk-Einstellungen" + }, + "stepThree": { + "learnMore": "Weitere Informationen" + }, + "characters": "Zeichen", + "backToDataSource": "Datenquelle", + "title": "Dokumente hinzufügen", + "selectOnlineDocumentTip": "Bis zu {{count}} Seiten verarbeiten", + "selectOnlineDriveTip": "Verarbeiten Sie bis zu {{count}} Dateien, maximal {{fileSize}} MB pro Datei" + }, + "documentSettings": { + "title": "Dokument-Einstellungen" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} Seiten" + }, + "onlineDrive": { + "breadcrumbs": { + "allFiles": "Alle Dateien", + "allBuckets": "Alle Cloud Storage-Buckets", + "searchPlaceholder": "Dateien suchen...", + "searchResult": "{{searchResultsLength}} Elemente im Ordner \"{{folderName}}\" finden" + }, + "emptySearchResult": "Es wurden keine Gegenstände gefunden", + "resetKeywords": "Schlüsselwörter zurücksetzen", + "notSupportedFileType": "Dieser Dateityp wird nicht unterstützt", + "emptyFolder": "Dieser Ordner ist leer", + "notConnected": "{{name}} ist nicht verbunden", + "notConnectedTip": "Um mit {{name}} zu synchronisieren, muss zuerst eine Verbindung zu {{name}} hergestellt werden." + }, + "conversion": { + "confirm": { + "title": "Bestätigung", + "content": "Diese Aktion ist dauerhaft. Sie können die vorherige Methode nicht wiederherstellen. Bitte bestätigen Sie, um umzurechnen." + }, + "title": "In Wissenspipeline konvertieren", + "successMessage": "Erfolgreiches Konvertieren des Datasets in eine Pipeline", + "errorMessage": "Fehler beim Konvertieren des Datasets in eine Pipeline.", + "warning": "Diese Aktion kann nicht rückgängig gemacht werden.", + "descriptionChunk1": "Sie können jetzt Ihre vorhandene Wissensdatenbank konvertieren, um die Knowledge Pipeline für die Dokumentenverarbeitung zu verwenden", + "descriptionChunk2": "– ein offenerer und flexiblerer Ansatz mit Zugang zu Plugins aus unserem Marktplatz. Dadurch wird die neue Verarbeitungsmethode auf alle zukünftigen Dokumente angewendet." + }, + "knowledgePermissions": "Erlaubnisse", + "inputField": "Eingabefeld", + "knowledgeDescription": "Beschreibung des Wissens", + "editPipelineInfo": "Bearbeiten von Pipeline-Informationen", + "knowledgeNameAndIcon": "Name und Symbol des Wissens", + "pipelineNameAndIcon": "Name und Symbol der Pipeline", + "knowledgeDescriptionPlaceholder": "Beschreiben Sie, was in dieser Wissensdatenbank enthalten ist. Eine detaillierte Beschreibung ermöglicht es der KI, genauer auf den Inhalt des Datensatzes zuzugreifen. Wenn das Feld leer ist, verwendet Dify die Standard-Trefferstrategie. (Fakultativ)", + "knowledgeNameAndIconPlaceholder": "Bitte geben Sie den Namen der Knowledge Base ein.", + "configurationTip": "Konfigurieren {{pluginName}}" +} diff --git a/web/i18n/de-DE/dataset-pipeline.ts b/web/i18n/de-DE/dataset-pipeline.ts deleted file mode 100644 index 7ae47383cc..0000000000 --- a/web/i18n/de-DE/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - createFromScratch: { - title: 'Leere Wissenspipeline', - description: 'Erstellen Sie eine benutzerdefinierte Pipeline von Grund auf neu mit vollständiger Kontrolle über die Datenverarbeitung und -struktur.', - }, - caution: 'Vorsicht', - backToKnowledge: 'Zurück zu Wissen', - createKnowledge: 'Wissen schaffen', - importDSL: 'Importieren aus einer DSL-Datei', - successTip: 'Erfolgreich eine Wissensdatenbank erstellt', - errorTip: 'Fehler beim Erstellen einer Wissensdatenbank', - }, - templates: { - customized: 'Angepasst', - }, - operations: { - dataSource: 'Datenquelle', - details: 'Details', - process: 'Prozess', - preview: 'Vorschau', - convert: 'Umwandeln', - useTemplate: 'Verwenden dieser Wissenspipeline', - backToDataSource: 'Zurück zur Datenquelle', - exportPipeline: 'Pipeline exportieren', - editInfo: 'Info bearbeiten', - choose: 'Wählen', - saveAndProcess: 'Speichern & Verarbeiten', - }, - deletePipeline: { - title: 'Sind Sie sicher, dass Sie diese Pipeline-Vorlage löschen möchten?', - content: 'Das Löschen der Pipelinevorlage kann nicht rückgängig gemacht werden.', - }, - publishPipeline: { - success: { - message: 'Knowledge Pipeline veröffentlicht', - tip: 'Gehe zu Dokumente, um Dokumente hinzuzufügen oder zu verwalten.', - }, - error: { - message: 'Fehler beim Veröffentlichen der Wissenspipeline', - }, - }, - publishTemplate: { - success: { - learnMore: 'Weitere Informationen', - tip: 'Sie können diese Vorlage auf der Erstellungsseite verwenden.', - message: 'Pipeline-Vorlage veröffentlicht', - }, - error: { - message: 'Fehler beim Veröffentlichen der Pipeline-Vorlage', - }, - }, - exportDSL: { - successTip: 'Pipeline-DSL erfolgreich exportieren', - errorTip: 'Fehler beim Exportieren der Pipeline-DSL', - }, - details: { - structure: 'Struktur', - structureTooltip: 'Die Blockstruktur bestimmt, wie Dokumente aufgeteilt und indiziert werden, und bietet die Modi "Allgemein", "Über-Eltern-Kind" und "Q&A" und ist für jede Wissensdatenbank einzigartig.', - createdBy: 'Von {{author}}', - }, - testRun: { - steps: { - documentProcessing: 'Verarbeitung von Dokumenten', - dataSource: 'Datenquelle', - }, - dataSource: { - localFiles: 'Lokale Dateien', - }, - notion: { - docTitle: 'Notion docs', - title: 'Wählen Sie Notion Pages', - }, - title: 'Testlauf', - tooltip: 'Im Testlaufmodus darf jeweils nur ein Dokument importiert werden, um das Debuggen und Beobachten zu vereinfachen.', - }, - inputFieldPanel: { - uniqueInputs: { - title: 'Einzigartige Eingänge für jeden Eingang', - tooltip: 'Eindeutige Eingaben sind nur für die ausgewählte Datenquelle und ihre Downstream-Knoten zugänglich. Benutzer müssen sie nicht ausfüllen, wenn sie andere Datenquellen auswählen. Im ersten Schritt (Datenquelle) werden nur Eingabefelder angezeigt, auf die von Datenquellenvariablen verwiesen wird. Alle anderen Felder werden im zweiten Schritt (Dokumente bearbeiten) angezeigt.', - }, - globalInputs: { - title: 'Globale Eingänge für alle Eingänge', - tooltip: 'Globale Eingaben werden von allen Knoten gemeinsam genutzt. Benutzer müssen sie ausfüllen, wenn sie eine Datenquelle auswählen. Beispielsweise können Felder wie Trennzeichen und maximale Blocklänge einheitlich auf mehrere Datenquellen angewendet werden. Im ersten Schritt (Datenquelle) werden nur Eingabefelder angezeigt, die von Datenquellenvariablen referenziert werden. Alle anderen Felder werden im zweiten Schritt (Dokumente bearbeiten) angezeigt.', - }, - preview: { - stepTwoTitle: 'Dokumente verarbeiten', - stepOneTitle: 'Datenquelle', - }, - error: { - variableDuplicate: 'Der Variablenname ist bereits vorhanden. Bitte wählen Sie einen anderen Namen.', - }, - editInputField: 'Eingabefeld bearbeiten', - addInputField: 'Eingabefeld hinzufügen', - title: 'Eingabefelder für Benutzer', - description: 'Benutzereingabefelder werden verwendet, um Variablen zu definieren und zu erfassen, die während des Pipeline-Ausführungsprozesses erforderlich sind. Benutzer können den Feldtyp anpassen und den Eingabewert flexibel konfigurieren, um den Anforderungen verschiedener Datenquellen oder Dokumentverarbeitungsschritte gerecht zu werden.', - }, - addDocuments: { - steps: { - processDocuments: 'Dokumente verarbeiten', - processingDocuments: 'Verarbeiten von Dokumenten', - chooseDatasource: 'Auswählen einer Datenquelle', - }, - stepOne: { - preview: 'Vorschau', - }, - stepTwo: { - previewChunks: 'Vorschau von Chunks', - chunkSettings: 'Chunk-Einstellungen', - }, - stepThree: { - learnMore: 'Weitere Informationen', - }, - characters: 'Zeichen', - backToDataSource: 'Datenquelle', - title: 'Dokumente hinzufügen', - selectOnlineDocumentTip: 'Bis zu {{count}} Seiten verarbeiten', - selectOnlineDriveTip: 'Verarbeiten Sie bis zu {{count}} Dateien, maximal {{fileSize}} MB pro Datei', - }, - documentSettings: { - title: 'Dokument-Einstellungen', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} Seiten', - }, - onlineDrive: { - breadcrumbs: { - allFiles: 'Alle Dateien', - allBuckets: 'Alle Cloud Storage-Buckets', - searchPlaceholder: 'Dateien suchen...', - searchResult: '{{searchResultsLength}} Elemente im Ordner "{{folderName}}" finden', - }, - emptySearchResult: 'Es wurden keine Gegenstände gefunden', - resetKeywords: 'Schlüsselwörter zurücksetzen', - notSupportedFileType: 'Dieser Dateityp wird nicht unterstützt', - emptyFolder: 'Dieser Ordner ist leer', - notConnected: '{{name}} ist nicht verbunden', - notConnectedTip: 'Um mit {{name}} zu synchronisieren, muss zuerst eine Verbindung zu {{name}} hergestellt werden.', - }, - conversion: { - confirm: { - title: 'Bestätigung', - content: 'Diese Aktion ist dauerhaft. Sie können die vorherige Methode nicht wiederherstellen. Bitte bestätigen Sie, um umzurechnen.', - }, - title: 'In Wissenspipeline konvertieren', - successMessage: 'Erfolgreiches Konvertieren des Datasets in eine Pipeline', - errorMessage: 'Fehler beim Konvertieren des Datasets in eine Pipeline.', - warning: 'Diese Aktion kann nicht rückgängig gemacht werden.', - descriptionChunk1: 'Sie können jetzt Ihre vorhandene Wissensdatenbank konvertieren, um die Knowledge Pipeline für die Dokumentenverarbeitung zu verwenden', - descriptionChunk2: '– ein offenerer und flexiblerer Ansatz mit Zugang zu Plugins aus unserem Marktplatz. Dadurch wird die neue Verarbeitungsmethode auf alle zukünftigen Dokumente angewendet.', - }, - knowledgePermissions: 'Erlaubnisse', - inputField: 'Eingabefeld', - knowledgeDescription: 'Beschreibung des Wissens', - editPipelineInfo: 'Bearbeiten von Pipeline-Informationen', - knowledgeNameAndIcon: 'Name und Symbol des Wissens', - pipelineNameAndIcon: 'Name und Symbol der Pipeline', - knowledgeDescriptionPlaceholder: 'Beschreiben Sie, was in dieser Wissensdatenbank enthalten ist. Eine detaillierte Beschreibung ermöglicht es der KI, genauer auf den Inhalt des Datensatzes zuzugreifen. Wenn das Feld leer ist, verwendet Dify die Standard-Trefferstrategie. (Fakultativ)', - knowledgeNameAndIconPlaceholder: 'Bitte geben Sie den Namen der Knowledge Base ein.', - configurationTip: 'Konfigurieren {{pluginName}}', -} - -export default translation diff --git a/web/i18n/de-DE/dataset-settings.json b/web/i18n/de-DE/dataset-settings.json new file mode 100644 index 0000000000..7fc6922821 --- /dev/null +++ b/web/i18n/de-DE/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "Wissenseinstellungen", + "desc": "Hier können Sie die Eigenschaften und Arbeitsweisen des Wissens anpassen.", + "form": { + "name": "Wissensname", + "namePlaceholder": "Bitte geben Sie den Namen des Wissens ein", + "nameError": "Name darf nicht leer sein", + "desc": "Wissensbeschreibung", + "descInfo": "Bitte schreiben Sie eine klare textuelle Beschreibung, um den Inhalt des Wissens zu umreißen. Diese Beschreibung wird als Grundlage für die Auswahl aus mehreren Wissensdatenbanken zur Inferenz verwendet.", + "descPlaceholder": "Beschreiben Sie, was in diesem Wissen enthalten ist. Eine detaillierte Beschreibung ermöglicht es der KI, zeitnah auf den Inhalt des Wissens zuzugreifen. Wenn leer, verwendet Dify die Standard-Treffstrategie.", + "descWrite": "Erfahren Sie, wie man eine gute Wissensbeschreibung schreibt.", + "permissions": "Berechtigungen", + "permissionsOnlyMe": "Nur ich", + "permissionsAllMember": "Alle Teammitglieder", + "indexMethod": "Indexierungsmethode", + "indexMethodHighQuality": "Hohe Qualität", + "indexMethodHighQualityTip": "Den Embedding-Modell zur Verarbeitung aufrufen, um bei Benutzeranfragen eine höhere Genauigkeit zu bieten.", + "indexMethodEconomy": "Ökonomisch", + "indexMethodEconomyTip": "Verwendet Offline-Vektor-Engines, Schlagwortindizes usw., um die Genauigkeit ohne Tokenverbrauch zu reduzieren", + "embeddingModel": "Einbettungsmodell", + "embeddingModelTip": "Ändern Sie das eingebettete Modell, bitte gehen Sie zu ", + "embeddingModelTipLink": "Einstellungen", + "retrievalSetting": { + "title": "Abrufeinstellung", + "learnMore": "Mehr erfahren", + "description": " über die Abrufmethode.", + "longDescription": " über die Abrufmethode, dies kann jederzeit in den Wissenseinstellungen geändert werden.", + "method": "Abrufmethode", + "multiModalTip": "Wenn das Embedding-Modell multimodal unterstützt, wählen Sie bitte ein multimodales Reranking-Modell für eine bessere Leistung." + }, + "save": "Speichern", + "permissionsInvitedMembers": "Teilweise Teammitglieder", + "me": "(Sie)", + "externalKnowledgeID": "ID für externes Wissen", + "externalKnowledgeAPI": "API für externes Wissen", + "retrievalSettings": "Einstellungen für den Abruf", + "upgradeHighQualityTip": "Nach dem Upgrade auf den Modus \"Hohe Qualität\" ist das Zurücksetzen auf den Modus \"Wirtschaftlich\" nicht mehr möglich", + "helpText": "Erfahren Sie, wie Sie eine gute Datensatzbeschreibung schreiben.", + "indexMethodChangeToEconomyDisabledTip": "Nicht verfügbar für ein Downgrade von HQ auf ECO", + "searchModel": "Modell suchen", + "chunkStructure": { + "learnMore": "Weitere Informationen", + "title": "Chunk-Struktur", + "description": "über Chunk Structure." + }, + "nameAndIcon": "Name & Symbol", + "onSearchResults": "Kein Mitglied stimmt mit Ihrer Suchanfrage überein.\nVersuchen Sie Ihre Suche erneut.", + "numberOfKeywords": "Anzahl der Schlüsselwörter" + } +} diff --git a/web/i18n/de-DE/dataset-settings.ts b/web/i18n/de-DE/dataset-settings.ts deleted file mode 100644 index d28eba1050..0000000000 --- a/web/i18n/de-DE/dataset-settings.ts +++ /dev/null @@ -1,52 +0,0 @@ -const translation = { - title: 'Wissenseinstellungen', - desc: 'Hier können Sie die Eigenschaften und Arbeitsweisen des Wissens anpassen.', - form: { - name: 'Wissensname', - namePlaceholder: 'Bitte geben Sie den Namen des Wissens ein', - nameError: 'Name darf nicht leer sein', - desc: 'Wissensbeschreibung', - descInfo: 'Bitte schreiben Sie eine klare textuelle Beschreibung, um den Inhalt des Wissens zu umreißen. Diese Beschreibung wird als Grundlage für die Auswahl aus mehreren Wissensdatenbanken zur Inferenz verwendet.', - descPlaceholder: 'Beschreiben Sie, was in diesem Wissen enthalten ist. Eine detaillierte Beschreibung ermöglicht es der KI, zeitnah auf den Inhalt des Wissens zuzugreifen. Wenn leer, verwendet Dify die Standard-Treffstrategie.', - descWrite: 'Erfahren Sie, wie man eine gute Wissensbeschreibung schreibt.', - permissions: 'Berechtigungen', - permissionsOnlyMe: 'Nur ich', - permissionsAllMember: 'Alle Teammitglieder', - indexMethod: 'Indexierungsmethode', - indexMethodHighQuality: 'Hohe Qualität', - indexMethodHighQualityTip: 'Den Embedding-Modell zur Verarbeitung aufrufen, um bei Benutzeranfragen eine höhere Genauigkeit zu bieten.', - indexMethodEconomy: 'Ökonomisch', - indexMethodEconomyTip: 'Verwendet Offline-Vektor-Engines, Schlagwortindizes usw., um die Genauigkeit ohne Tokenverbrauch zu reduzieren', - embeddingModel: 'Einbettungsmodell', - embeddingModelTip: 'Ändern Sie das eingebettete Modell, bitte gehen Sie zu ', - embeddingModelTipLink: 'Einstellungen', - retrievalSetting: { - title: 'Abrufeinstellung', - learnMore: 'Mehr erfahren', - description: ' über die Abrufmethode.', - longDescription: ' über die Abrufmethode, dies kann jederzeit in den Wissenseinstellungen geändert werden.', - method: 'Abrufmethode', - multiModalTip: 'Wenn das Embedding-Modell multimodal unterstützt, wählen Sie bitte ein multimodales Reranking-Modell für eine bessere Leistung.', - }, - save: 'Speichern', - permissionsInvitedMembers: 'Teilweise Teammitglieder', - me: '(Sie)', - externalKnowledgeID: 'ID für externes Wissen', - externalKnowledgeAPI: 'API für externes Wissen', - retrievalSettings: 'Einstellungen für den Abruf', - upgradeHighQualityTip: 'Nach dem Upgrade auf den Modus "Hohe Qualität" ist das Zurücksetzen auf den Modus "Wirtschaftlich" nicht mehr möglich', - helpText: 'Erfahren Sie, wie Sie eine gute Datensatzbeschreibung schreiben.', - indexMethodChangeToEconomyDisabledTip: 'Nicht verfügbar für ein Downgrade von HQ auf ECO', - searchModel: 'Modell suchen', - chunkStructure: { - learnMore: 'Weitere Informationen', - title: 'Chunk-Struktur', - description: 'über Chunk Structure.', - }, - nameAndIcon: 'Name & Symbol', - onSearchResults: 'Kein Mitglied stimmt mit Ihrer Suchanfrage überein.\nVersuchen Sie Ihre Suche erneut.', - numberOfKeywords: 'Anzahl der Schlüsselwörter', - }, -} - -export default translation diff --git a/web/i18n/de-DE/dataset.json b/web/i18n/de-DE/dataset.json new file mode 100644 index 0000000000..1b44e578c0 --- /dev/null +++ b/web/i18n/de-DE/dataset.json @@ -0,0 +1,249 @@ +{ + "knowledge": "Wissen", + "documentCount": " Dokumente", + "wordCount": " k Wörter", + "appCount": " verknüpfte Apps", + "createDataset": "Wissen erstellen", + "createDatasetIntro": "Importiere deine eigenen Textdaten oder schreibe Daten in Echtzeit über Webhook für die LLM-Kontextverbesserung.", + "deleteDatasetConfirmTitle": "Dieses Wissen löschen?", + "deleteDatasetConfirmContent": "Das Löschen des Wissens ist unwiderruflich. Benutzer werden nicht mehr auf Ihr Wissen zugreifen können und alle Eingabeaufforderungen, Konfigurationen und Protokolle werden dauerhaft gelöscht.", + "datasetUsedByApp": "Das Wissen wird von einigen Apps verwendet. Apps werden dieses Wissen nicht mehr nutzen können, und alle Prompt-Konfigurationen und Protokolle werden dauerhaft gelöscht.", + "datasetDeleted": "Wissen gelöscht", + "datasetDeleteFailed": "Löschen des Wissens fehlgeschlagen", + "didYouKnow": "Wusstest du schon?", + "intro1": "Das Wissen kann in die Dify-Anwendung ", + "intro2": "als Kontext", + "intro3": ",", + "intro4": "oder es ", + "intro5": "kann erstellt werden", + "intro6": " als ein eigenständiges ChatGPT-Index-Plugin zum Veröffentlichen", + "unavailable": "Nicht verfügbar", + "datasets": "WISSEN", + "datasetsApi": "API", + "retrieval": { + "semantic_search": { + "title": "Vektorsuche", + "description": "Erzeuge Abfrage-Einbettungen und suche nach dem Textstück, das seiner Vektorrepräsentation am ähnlichsten ist." + }, + "full_text_search": { + "title": "Volltextsuche", + "description": "Indiziere alle Begriffe im Dokument, sodass Benutzer jeden Begriff suchen und den relevanten Textabschnitt finden können, der diese Begriffe enthält." + }, + "hybrid_search": { + "title": "Hybridsuche", + "description": "Führe Volltextsuche und Vektorsuchen gleichzeitig aus, ordne neu, um die beste Übereinstimmung für die Abfrage des Benutzers auszuwählen. Konfiguration des Rerank-Modell-APIs ist notwendig.", + "recommend": "Empfehlen" + }, + "invertedIndex": {}, + "change": "Ändern", + "changeRetrievalMethod": "Abfragemethode ändern", + "keyword_search": { + "title": "Invertierter Index", + "description": "Der invertierte Index ist eine Struktur, die für einen effizienten Abruf verwendet wird. Jeder Begriff ist nach Begriffen geordnet und verweist auf Dokumente oder Webseiten, die ihn enthalten." + } + }, + "docsFailedNotice": "Dokumente konnten nicht indiziert werden", + "retry": "Wiederholen", + "indexingTechnique": { + "high_quality": "HQ", + "economy": "ECO" + }, + "indexingMethod": { + "semantic_search": "VEKTOR", + "full_text_search": "VOLLTEXT", + "hybrid_search": "HYBRID", + "invertedIndex": "INVERTIERT" + }, + "mixtureHighQualityAndEconomicTip": "Für die Mischung von hochwertigen und wirtschaftlichen Wissensbasen ist das Rerank-Modell erforderlich.", + "inconsistentEmbeddingModelTip": "Das Rerank-Modell ist erforderlich, wenn die Embedding-Modelle der ausgewählten Wissensbasen inkonsistent sind.", + "retrievalSettings": "Abrufeinstellungen", + "rerankSettings": "Rerank-Einstellungen", + "weightedScore": { + "title": "Gewichtete Bewertung", + "description": "Durch Anpassung der zugewiesenen Gewichte bestimmt diese Rerank-Strategie, ob semantische oder Schlüsselwort-Übereinstimmung priorisiert werden soll.", + "semanticFirst": "Semantik zuerst", + "keywordFirst": "Schlüsselwort zuerst", + "customized": "Angepasst", + "semantic": "Semantisch", + "keyword": "Schlüsselwort" + }, + "nTo1RetrievalLegacy": "N-zu-1-Abruf wird ab September offiziell eingestellt. Es wird empfohlen, den neuesten Multi-Pfad-Abruf zu verwenden, um bessere Ergebnisse zu erzielen.", + "nTo1RetrievalLegacyLink": "Mehr erfahren", + "nTo1RetrievalLegacyLinkText": "N-zu-1-Abruf wird im September offiziell eingestellt.", + "defaultRetrievalTip": "Standardmäßig wird der Multi-Path-Abruf verwendet. Das Wissen wird aus mehreren Wissensdatenbanken abgerufen und dann neu eingestuft.", + "editExternalAPIConfirmWarningContent": { + "end": "externes Wissen, und diese Modifikation wird auf alle angewendet. Sind Sie sicher, dass Sie diese Änderung speichern möchten?", + "front": "Diese External Knowledge API ist verknüpft mit" + }, + "editExternalAPIFormWarning": { + "front": "Diese externe API ist verknüpft mit", + "end": "externes Wissen" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "front": "Löschen", + "end": "?" + }, + "content": { + "front": "Diese External Knowledge API ist verknüpft mit", + "end": "externes Wissen. Wenn Sie diese API löschen, werden alle ungültig. Sind Sie sicher, dass Sie diese API löschen möchten?" + }, + "noConnectionContent": "Sind Sie sicher, dass Sie diese API löschen möchten?" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "Auswählen einer externen Wissens-API" + }, + "connectDatasetIntro": { + "content": { + "front": "Um eine Verbindung zu einer externen Wissensdatenbank herzustellen, müssen Sie zuerst eine externe API erstellen. Bitte lesen Sie diese sorgfältig durch und beziehen Sie sich auf", + "link": "Erfahren Sie, wie Sie eine externe API erstellen", + "end": ". Suchen Sie dann die entsprechende Wissens-ID und füllen Sie diese in das Formular links aus. Wenn alle Informationen korrekt sind, wird nach dem Klicken auf die Schaltfläche \"Verbinden\" automatisch zum Abruftest in der Wissensdatenbank gesprungen." + }, + "learnMore": "Weitere Informationen", + "title": "So stellen Sie eine Verbindung zu einer externen Wissensdatenbank her" + }, + "connectHelper": { + "helper3": ". Wir empfehlen Ihnen dringend,", + "helper2": "Es wird nur die Retrieval-Funktionalität unterstützt", + "helper5": "bevor Sie diese Funktion verwenden.", + "helper4": "Lesen Sie die Hilfedokumentation", + "helper1": "Verbinden Sie sich mit externen Wissensdatenbanken über API und Wissensdatenbank-ID." + }, + "externalKnowledgeForm": { + "connect": "Verbinden", + "cancel": "Abbrechen" + }, + "externalAPIForm": { + "encrypted": { + "front": "Ihr API-Token wird verschlüsselt und gespeichert mit", + "end": "Technologie." + }, + "save": "Retten", + "cancel": "Abbrechen", + "endpoint": "API-Endpunkt", + "name": "Name", + "edit": "Redigieren", + "apiKey": "API-Schlüssel" + }, + "externalTag": "Äußerlich", + "createExternalAPI": "Hinzufügen einer externen Knowledge-API", + "externalAPIPanelDescription": "Die API für externes Wissen wird verwendet, um eine Verbindung zu einer Wissensdatenbank außerhalb von Dify herzustellen und Wissen aus dieser Wissensdatenbank abzurufen.", + "createNewExternalAPI": "Erstellen einer neuen API für externes Wissen", + "externalKnowledgeDescriptionPlaceholder": "Beschreiben Sie, was in dieser Wissensdatenbank enthalten ist (optional)", + "externalAPIPanelDocumentation": "Erfahren Sie, wie Sie eine API für externes Wissen erstellen", + "externalAPIPanelTitle": "API für externes Wissen", + "learnHowToWriteGoodKnowledgeDescription": "Erfahren Sie, wie Sie eine gute Wissensbeschreibung schreiben", + "editExternalAPITooltipTitle": "VERKNÜPFTES WISSEN", + "externalKnowledgeIdPlaceholder": "Bitte geben Sie die Knowledge ID ein", + "connectDataset": "Herstellen einer Verbindung mit einer externen Wissensdatenbank", + "externalAPI": "Externe API", + "externalKnowledgeName": "Name des externen Wissens", + "allExternalTip": "Wenn nur externes Wissen verwendet wird, kann der Benutzer auswählen, ob das Rerank-Modell aktiviert werden soll. Wenn diese Option nicht aktiviert ist, werden die abgerufenen Blöcke basierend auf den Punktzahlen sortiert. Wenn die Abrufstrategien verschiedener Wissensdatenbanken inkonsistent sind, ist dies ungenau.", + "externalKnowledgeDescription": "Wissen Beschreibung", + "noExternalKnowledge": "Es gibt noch keine External Knowledge API, klicken Sie hier, um zu erstellen", + "externalKnowledgeNamePlaceholder": "Bitte geben Sie den Namen der Wissensdatenbank ein.", + "mixtureInternalAndExternalTip": "Das Rerank-Modell ist für die Mischung von internem und externem Wissen erforderlich.", + "externalKnowledgeId": "ID für externes Wissen", + "editExternalAPIFormTitle": "Bearbeiten der API für externes Wissen", + "chunkingMode": { + "parentChild": "Eltern-Kind", + "general": "Allgemein", + "graph": "Graph", + "qa": "Fragen und Antworten" + }, + "parentMode": { + "paragraph": "Absatz", + "fullDoc": "Vollständiges Dokument" + }, + "batchAction": { + "selected": "Ausgewählt", + "cancel": "Abbrechen", + "archive": "Archiv", + "disable": "Abschalten", + "delete": "Löschen", + "enable": "Ermöglichen" + }, + "enable": "Ermöglichen", + "localDocs": "Lokale Dokumente", + "preprocessDocument": "{{num}} Vorverarbeiten von Dokumenten", + "documentsDisabled": "{{num}} Dokumente deaktiviert - seit über 30 Tagen inaktiv", + "allKnowledge": "Alles Wissen", + "allKnowledgeDescription": "Wählen Sie diese Option aus, um das gesamte Wissen in diesem Arbeitsbereich anzuzeigen. Nur der Workspace-Besitzer kann das gesamte Wissen verwalten.", + "metadata": { + "createMetadata": { + "namePlaceholder": "Metadatenname hinzufügen", + "back": "Zurück", + "title": "Neue Metadaten", + "name": "Name", + "type": "Art" + }, + "checkName": { + "empty": "Der Metadatenname darf nicht leer sein.", + "invalid": "Der Metadatenname darf nur Kleinbuchstaben, Zahlen und Unterstriche enthalten und muss mit einem Kleinbuchstaben beginnen.", + "tooLong": "Der Metadatenname darf {{max}} Zeichen nicht überschreiten." + }, + "batchEditMetadata": { + "editMetadata": "Metadaten bearbeiten", + "multipleValue": "Mehrwert", + "applyToAllSelectDocument": "Auf alle ausgewählten Dokumente anwenden", + "applyToAllSelectDocumentTip": "Erstellen Sie automatisch alle oben bearbeiteten und neuen Metadaten für alle ausgewählten Dokumente, andernfalls wird die Bearbeitung der Metadaten nur auf Dokumente angewendet, die bereits Metadaten enthalten.", + "editDocumentsNum": "Bearbeiten von {{num}} Dokumenten" + }, + "selectMetadata": { + "manageAction": "Verwalten", + "search": "Metadaten durchsuchen", + "newAction": "Neue Metadaten" + }, + "datasetMetadata": { + "name": "Name", + "disabled": "Deaktiviert", + "description": "Sie können alle Metadaten in diesem Wissen hier verwalten. Änderungen werden mit jedem Dokument synchronisiert.", + "deleteContent": "Bist du sicher, dass du die Metadaten \"{{name}}\" löschen möchtest?", + "addMetaData": "Metadaten hinzufügen", + "deleteTitle": "Bestätigen Sie das Löschen", + "values": "{{num}} Werte", + "builtIn": "Eingebaut", + "rename": "Umbenennen", + "builtInDescription": "Integrierte Metadaten werden automatisch extrahiert und generiert. Sie müssen vor der Verwendung aktiviert werden und können nicht bearbeitet werden.", + "namePlaceholder": "Metadatenname" + }, + "documentMetadata": { + "startLabeling": "Labeling starten", + "technicalParameters": "Technische Parameter", + "documentInformation": "Dokumentinformationen", + "metadataToolTip": "Metadaten dienen als ein entscheidender Filter, der die Genauigkeit und Relevanz der Informationsbeschaffung verbessert. Sie können die Metadaten für dieses Dokument hier ändern und hinzufügen." + }, + "chooseTime": "Wählen Sie eine Zeit...", + "metadata": "Metadaten", + "addMetadata": "Metadaten hinzufügen" + }, + "embeddingModelNotAvailable": "Das Einbettungsmodell ist nicht verfügbar.", + "updated": "Aktualisierte", + "externalKnowledgeBase": "Externe Wissensdatenbank", + "createFromPipeline": "Aus Wissenspipeline erstellen", + "serviceApi": { + "card": { + "title": "Backend-Dienst-API", + "apiReference": "API Referenz", + "apiKey": "API-Schlüssel", + "endpoint": "Service-API-Endpunkt" + }, + "title": "Service-API", + "enabled": "Im Dienst", + "disabled": "Behindert" + }, + "docAllEnabled_one": "{{count}} Dokument aktiviert", + "docAllEnabled_other": "Alle {{count}} Dokumente aktiviert", + "partialEnabled_one": "Insgesamt {{count}} Dokumente, {{num}} verfügbar", + "partialEnabled_other": "Insgesamt {{count}} Dokumente, {{num}} verfügbar", + "cornerLabel": { + "unavailable": "Nicht verfügbar", + "pipeline": "Pipeline" + }, + "multimodal": "Multimodal", + "imageUploader": { + "button": "Datei oder Ordner ziehen und ablegen, oder", + "browse": "Durchsuchen", + "tip": "{{supportTypes}} (Max {{batchCount}}, je {{size}}MB)" + } +} diff --git a/web/i18n/de-DE/dataset.ts b/web/i18n/de-DE/dataset.ts deleted file mode 100644 index a7cd1702ff..0000000000 --- a/web/i18n/de-DE/dataset.ts +++ /dev/null @@ -1,253 +0,0 @@ -const translation = { - knowledge: 'Wissen', - documentCount: ' Dokumente', - wordCount: ' k Wörter', - appCount: ' verknüpfte Apps', - createDataset: 'Wissen erstellen', - createDatasetIntro: 'Importiere deine eigenen Textdaten oder schreibe Daten in Echtzeit über Webhook für die LLM-Kontextverbesserung.', - deleteDatasetConfirmTitle: 'Dieses Wissen löschen?', - deleteDatasetConfirmContent: - 'Das Löschen des Wissens ist unwiderruflich. Benutzer werden nicht mehr auf Ihr Wissen zugreifen können und alle Eingabeaufforderungen, Konfigurationen und Protokolle werden dauerhaft gelöscht.', - datasetUsedByApp: 'Das Wissen wird von einigen Apps verwendet. Apps werden dieses Wissen nicht mehr nutzen können, und alle Prompt-Konfigurationen und Protokolle werden dauerhaft gelöscht.', - datasetDeleted: 'Wissen gelöscht', - datasetDeleteFailed: 'Löschen des Wissens fehlgeschlagen', - didYouKnow: 'Wusstest du schon?', - intro1: 'Das Wissen kann in die Dify-Anwendung ', - intro2: 'als Kontext', - intro3: ',', - intro4: 'oder es ', - intro5: 'kann erstellt werden', - intro6: ' als ein eigenständiges ChatGPT-Index-Plugin zum Veröffentlichen', - unavailable: 'Nicht verfügbar', - datasets: 'WISSEN', - datasetsApi: 'API', - retrieval: { - semantic_search: { - title: 'Vektorsuche', - description: 'Erzeuge Abfrage-Einbettungen und suche nach dem Textstück, das seiner Vektorrepräsentation am ähnlichsten ist.', - }, - full_text_search: { - title: 'Volltextsuche', - description: 'Indiziere alle Begriffe im Dokument, sodass Benutzer jeden Begriff suchen und den relevanten Textabschnitt finden können, der diese Begriffe enthält.', - }, - hybrid_search: { - title: 'Hybridsuche', - description: 'Führe Volltextsuche und Vektorsuchen gleichzeitig aus, ordne neu, um die beste Übereinstimmung für die Abfrage des Benutzers auszuwählen. Konfiguration des Rerank-Modell-APIs ist notwendig.', - recommend: 'Empfehlen', - }, - invertedIndex: { - }, - change: 'Ändern', - changeRetrievalMethod: 'Abfragemethode ändern', - keyword_search: { - title: 'Invertierter Index', - description: 'Der invertierte Index ist eine Struktur, die für einen effizienten Abruf verwendet wird. Jeder Begriff ist nach Begriffen geordnet und verweist auf Dokumente oder Webseiten, die ihn enthalten.', - }, - }, - docsFailedNotice: 'Dokumente konnten nicht indiziert werden', - retry: 'Wiederholen', - indexingTechnique: { - high_quality: 'HQ', - economy: 'ECO', - }, - indexingMethod: { - semantic_search: 'VEKTOR', - full_text_search: 'VOLLTEXT', - hybrid_search: 'HYBRID', - invertedIndex: 'INVERTIERT', - }, - mixtureHighQualityAndEconomicTip: 'Für die Mischung von hochwertigen und wirtschaftlichen Wissensbasen ist das Rerank-Modell erforderlich.', - inconsistentEmbeddingModelTip: 'Das Rerank-Modell ist erforderlich, wenn die Embedding-Modelle der ausgewählten Wissensbasen inkonsistent sind.', - retrievalSettings: 'Abrufeinstellungen', - rerankSettings: 'Rerank-Einstellungen', - weightedScore: { - title: 'Gewichtete Bewertung', - description: 'Durch Anpassung der zugewiesenen Gewichte bestimmt diese Rerank-Strategie, ob semantische oder Schlüsselwort-Übereinstimmung priorisiert werden soll.', - semanticFirst: 'Semantik zuerst', - keywordFirst: 'Schlüsselwort zuerst', - customized: 'Angepasst', - semantic: 'Semantisch', - keyword: 'Schlüsselwort', - }, - nTo1RetrievalLegacy: 'N-zu-1-Abruf wird ab September offiziell eingestellt. Es wird empfohlen, den neuesten Multi-Pfad-Abruf zu verwenden, um bessere Ergebnisse zu erzielen.', - nTo1RetrievalLegacyLink: 'Mehr erfahren', - nTo1RetrievalLegacyLinkText: 'N-zu-1-Abruf wird im September offiziell eingestellt.', - defaultRetrievalTip: 'Standardmäßig wird der Multi-Path-Abruf verwendet. Das Wissen wird aus mehreren Wissensdatenbanken abgerufen und dann neu eingestuft.', - editExternalAPIConfirmWarningContent: { - end: 'externes Wissen, und diese Modifikation wird auf alle angewendet. Sind Sie sicher, dass Sie diese Änderung speichern möchten?', - front: 'Diese External Knowledge API ist verknüpft mit', - }, - editExternalAPIFormWarning: { - front: 'Diese externe API ist verknüpft mit', - end: 'externes Wissen', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - front: 'Löschen', - end: '?', - }, - content: { - front: 'Diese External Knowledge API ist verknüpft mit', - end: 'externes Wissen. Wenn Sie diese API löschen, werden alle ungültig. Sind Sie sicher, dass Sie diese API löschen möchten?', - }, - noConnectionContent: 'Sind Sie sicher, dass Sie diese API löschen möchten?', - }, - selectExternalKnowledgeAPI: { - placeholder: 'Auswählen einer externen Wissens-API', - }, - connectDatasetIntro: { - content: { - front: 'Um eine Verbindung zu einer externen Wissensdatenbank herzustellen, müssen Sie zuerst eine externe API erstellen. Bitte lesen Sie diese sorgfältig durch und beziehen Sie sich auf', - link: 'Erfahren Sie, wie Sie eine externe API erstellen', - end: '. Suchen Sie dann die entsprechende Wissens-ID und füllen Sie diese in das Formular links aus. Wenn alle Informationen korrekt sind, wird nach dem Klicken auf die Schaltfläche "Verbinden" automatisch zum Abruftest in der Wissensdatenbank gesprungen.', - }, - learnMore: 'Weitere Informationen', - title: 'So stellen Sie eine Verbindung zu einer externen Wissensdatenbank her', - }, - connectHelper: { - helper3: '. Wir empfehlen Ihnen dringend,', - helper2: 'Es wird nur die Retrieval-Funktionalität unterstützt', - helper5: 'bevor Sie diese Funktion verwenden.', - helper4: 'Lesen Sie die Hilfedokumentation', - helper1: 'Verbinden Sie sich mit externen Wissensdatenbanken über API und Wissensdatenbank-ID.', - }, - externalKnowledgeForm: { - connect: 'Verbinden', - cancel: 'Abbrechen', - }, - externalAPIForm: { - encrypted: { - front: 'Ihr API-Token wird verschlüsselt und gespeichert mit', - end: 'Technologie.', - }, - save: 'Retten', - cancel: 'Abbrechen', - endpoint: 'API-Endpunkt', - name: 'Name', - edit: 'Redigieren', - apiKey: 'API-Schlüssel', - }, - externalTag: 'Äußerlich', - createExternalAPI: 'Hinzufügen einer externen Knowledge-API', - externalAPIPanelDescription: 'Die API für externes Wissen wird verwendet, um eine Verbindung zu einer Wissensdatenbank außerhalb von Dify herzustellen und Wissen aus dieser Wissensdatenbank abzurufen.', - createNewExternalAPI: 'Erstellen einer neuen API für externes Wissen', - externalKnowledgeDescriptionPlaceholder: 'Beschreiben Sie, was in dieser Wissensdatenbank enthalten ist (optional)', - externalAPIPanelDocumentation: 'Erfahren Sie, wie Sie eine API für externes Wissen erstellen', - externalAPIPanelTitle: 'API für externes Wissen', - learnHowToWriteGoodKnowledgeDescription: 'Erfahren Sie, wie Sie eine gute Wissensbeschreibung schreiben', - editExternalAPITooltipTitle: 'VERKNÜPFTES WISSEN', - externalKnowledgeIdPlaceholder: 'Bitte geben Sie die Knowledge ID ein', - connectDataset: 'Herstellen einer Verbindung mit einer externen Wissensdatenbank', - externalAPI: 'Externe API', - externalKnowledgeName: 'Name des externen Wissens', - allExternalTip: 'Wenn nur externes Wissen verwendet wird, kann der Benutzer auswählen, ob das Rerank-Modell aktiviert werden soll. Wenn diese Option nicht aktiviert ist, werden die abgerufenen Blöcke basierend auf den Punktzahlen sortiert. Wenn die Abrufstrategien verschiedener Wissensdatenbanken inkonsistent sind, ist dies ungenau.', - externalKnowledgeDescription: 'Wissen Beschreibung', - noExternalKnowledge: 'Es gibt noch keine External Knowledge API, klicken Sie hier, um zu erstellen', - externalKnowledgeNamePlaceholder: 'Bitte geben Sie den Namen der Wissensdatenbank ein.', - mixtureInternalAndExternalTip: 'Das Rerank-Modell ist für die Mischung von internem und externem Wissen erforderlich.', - externalKnowledgeId: 'ID für externes Wissen', - editExternalAPIFormTitle: 'Bearbeiten der API für externes Wissen', - chunkingMode: { - parentChild: 'Eltern-Kind', - general: 'Allgemein', - graph: 'Graph', - qa: 'Fragen und Antworten', - }, - parentMode: { - paragraph: 'Absatz', - fullDoc: 'Vollständiges Dokument', - }, - batchAction: { - selected: 'Ausgewählt', - cancel: 'Abbrechen', - archive: 'Archiv', - disable: 'Abschalten', - delete: 'Löschen', - enable: 'Ermöglichen', - }, - enable: 'Ermöglichen', - localDocs: 'Lokale Dokumente', - preprocessDocument: '{{num}} Vorverarbeiten von Dokumenten', - documentsDisabled: '{{num}} Dokumente deaktiviert - seit über 30 Tagen inaktiv', - allKnowledge: 'Alles Wissen', - allKnowledgeDescription: 'Wählen Sie diese Option aus, um das gesamte Wissen in diesem Arbeitsbereich anzuzeigen. Nur der Workspace-Besitzer kann das gesamte Wissen verwalten.', - metadata: { - createMetadata: { - namePlaceholder: 'Metadatenname hinzufügen', - back: 'Zurück', - title: 'Neue Metadaten', - name: 'Name', - type: 'Art', - }, - checkName: { - empty: 'Der Metadatenname darf nicht leer sein.', - invalid: 'Der Metadatenname darf nur Kleinbuchstaben, Zahlen und Unterstriche enthalten und muss mit einem Kleinbuchstaben beginnen.', - tooLong: 'Der Metadatenname darf {{max}} Zeichen nicht überschreiten.', - }, - batchEditMetadata: { - editMetadata: 'Metadaten bearbeiten', - multipleValue: 'Mehrwert', - applyToAllSelectDocument: 'Auf alle ausgewählten Dokumente anwenden', - applyToAllSelectDocumentTip: 'Erstellen Sie automatisch alle oben bearbeiteten und neuen Metadaten für alle ausgewählten Dokumente, andernfalls wird die Bearbeitung der Metadaten nur auf Dokumente angewendet, die bereits Metadaten enthalten.', - editDocumentsNum: 'Bearbeiten von {{num}} Dokumenten', - }, - selectMetadata: { - manageAction: 'Verwalten', - search: 'Metadaten durchsuchen', - newAction: 'Neue Metadaten', - }, - datasetMetadata: { - name: 'Name', - disabled: 'Deaktiviert', - description: 'Sie können alle Metadaten in diesem Wissen hier verwalten. Änderungen werden mit jedem Dokument synchronisiert.', - deleteContent: 'Bist du sicher, dass du die Metadaten "{{name}}" löschen möchtest?', - addMetaData: 'Metadaten hinzufügen', - deleteTitle: 'Bestätigen Sie das Löschen', - values: '{{num}} Werte', - builtIn: 'Eingebaut', - rename: 'Umbenennen', - builtInDescription: 'Integrierte Metadaten werden automatisch extrahiert und generiert. Sie müssen vor der Verwendung aktiviert werden und können nicht bearbeitet werden.', - namePlaceholder: 'Metadatenname', - }, - documentMetadata: { - startLabeling: 'Labeling starten', - technicalParameters: 'Technische Parameter', - documentInformation: 'Dokumentinformationen', - metadataToolTip: 'Metadaten dienen als ein entscheidender Filter, der die Genauigkeit und Relevanz der Informationsbeschaffung verbessert. Sie können die Metadaten für dieses Dokument hier ändern und hinzufügen.', - }, - chooseTime: 'Wählen Sie eine Zeit...', - metadata: 'Metadaten', - addMetadata: 'Metadaten hinzufügen', - }, - embeddingModelNotAvailable: 'Das Einbettungsmodell ist nicht verfügbar.', - updated: 'Aktualisierte', - externalKnowledgeBase: 'Externe Wissensdatenbank', - createFromPipeline: 'Aus Wissenspipeline erstellen', - serviceApi: { - card: { - title: 'Backend-Dienst-API', - apiReference: 'API Referenz', - apiKey: 'API-Schlüssel', - endpoint: 'Service-API-Endpunkt', - }, - title: 'Service-API', - enabled: 'Im Dienst', - disabled: 'Behindert', - }, - docAllEnabled_one: '{{count}} Dokument aktiviert', - docAllEnabled_other: 'Alle {{count}} Dokumente aktiviert', - partialEnabled_one: 'Insgesamt {{count}} Dokumente, {{num}} verfügbar', - partialEnabled_other: 'Insgesamt {{count}} Dokumente, {{num}} verfügbar', - cornerLabel: { - unavailable: 'Nicht verfügbar', - pipeline: 'Pipeline', - }, - multimodal: 'Multimodal', - imageUploader: { - button: 'Datei oder Ordner ziehen und ablegen, oder', - browse: 'Durchsuchen', - tip: '{{supportTypes}} (Max {{batchCount}}, je {{size}}MB)', - }, -} - -export default translation diff --git a/web/i18n/de-DE/education.json b/web/i18n/de-DE/education.json new file mode 100644 index 0000000000..70af9e855c --- /dev/null +++ b/web/i18n/de-DE/education.json @@ -0,0 +1,74 @@ +{ + "toVerifiedTip": { + "coupon": "exklusiver 100% Gutschein", + "end": "für den Dify Professional Plan.", + "front": "Sie sind jetzt berechtigt, den Status „Bildung verifiziert“ zu erhalten. Bitte geben Sie unten Ihre Bildungsinformationen ein, um den Prozess abzuschließen und eine Zu erhalten." + }, + "form": { + "schoolName": { + "placeholder": "Geben Sie den offiziellen, unabgekürzten Namen Ihrer Schule ein.", + "title": "Ihr Schulname" + }, + "schoolRole": { + "option": { + "teacher": "Lehrer", + "administrator": "Schuladministrator", + "student": "Schüler" + }, + "title": "Ihre Schulrolle" + }, + "terms": { + "desc": { + "and": "und", + "privacyPolicy": "Datenschutzrichtlinie", + "termsOfService": "Nutzungsbedingungen", + "end": ". Durch die Einreichung:", + "front": "Ihre Informationen und die Nutzung des Status \"Bildung bestätigt\" unterliegen unseren" + }, + "option": { + "inSchool": "Ich bestätige, dass ich an der angegebenen Einrichtung eingeschrieben oder angestellt bin. Dify kann einen Nachweis über die Einschreibung/Anstellung anfordern. Wenn ich meine Berechtigung falsch darstelle, stimme ich zu, alle Gebühren zu zahlen, die aufgrund meines Bildungsstatus ursprünglich erlassen wurden.", + "age": "Ich bestätige, dass ich mindestens 18 Jahre alt bin." + }, + "title": "Allgemeine Geschäftsbedingungen" + } + }, + "toVerified": "Bildung überprüfen lassen", + "rejectTitle": "Ihre Dify-Ausbildungsüberprüfung wurde abgelehnt.", + "currentSigned": "DERZEIT ANGEMELDET ALS", + "submit": "Einreichen", + "submitError": "Die Formularübermittlung ist fehlgeschlagen. Bitte versuchen Sie es später erneut.", + "rejectContent": "Leider sind Sie nicht für den Status \"Education Verified\" berechtigt und können daher den exklusiven 100%-Gutschein für den Dify Professional Plan nicht erhalten, wenn Sie diese E-Mail-Adresse verwenden.", + "successContent": "Wir haben einen 100% Rabattgutschein für den Dify Professional Plan auf Ihr Konto ausgestellt. Der Gutschein ist ein Jahr lang gültig, bitte nutzen Sie ihn innerhalb des Gültigkeitszeitraums.", + "learn": "Erfahren Sie, wie Sie Ihre Ausbildung überprüfen lassen.", + "emailLabel": "Ihre aktuelle E-Mail", + "successTitle": "Sie haben die Dify-Ausbildung verifiziert", + "notice": { + "expired": { + "summary": { + "line1": "Sie können weiterhin auf Dify zugreifen und es nutzen.", + "line2": "Allerdings sind Sie nicht mehr berechtigt, neue Bildungsgutscheine zu erhalten." + }, + "title": "Ihr Bildungsstatus ist abgelaufen." + }, + "isAboutToExpire": { + "summary": "Keine Sorge - das wird sich nicht auf Ihr aktuelles Abonnement auswirken, aber Sie werden den Bildungspreis beim nächsten Verzicht nicht erhalten, es sei denn, Sie überprüfen Ihren Status erneut.", + "title": "Ihr Bildungsstatus läuft am {{date}} ab" + }, + "stillInEducation": { + "title": "Immer noch in der Ausbildung?", + "isAboutToExpire": "Überprüfen Sie jetzt erneut, um einen neuen Gutschein für das kommende Studienjahr zu erhalten. Er wird in Ihrem Konto gespeichert und ist bereit zur Nutzung bei Ihrer nächsten Verlängerung.", + "expired": "Überprüfen Sie jetzt erneut, um einen neuen Gutschein für das kommende akademische Jahr zu erhalten. Wir fügen ihn Ihrem Konto hinzu und Sie können ihn für das nächste Upgrade verwenden." + }, + "alreadyGraduated": { + "title": "Bereits abgeschlossen?", + "expired": "Fühlen Sie sich frei, jederzeit ein Upgrade durchzuführen, um vollen Zugriff auf die kostenpflichtigen Funktionen zu erhalten.", + "isAboutToExpire": "Ihr aktuelles Abonnement bleibt weiterhin aktiv. Wenn es endet, werden Sie auf den Sandbox-Plan umgestellt, oder Sie können jederzeit upgraden, um den vollen Zugang zu den kostenpflichtigen Funktionen wiederherzustellen." + }, + "action": { + "dismiss": "Ablehnen", + "upgrade": "Upgrade", + "reVerify": "Überprüfen Sie es erneut" + }, + "dateFormat": "MM/TT/JJJJ" + } +} diff --git a/web/i18n/de-DE/education.ts b/web/i18n/de-DE/education.ts deleted file mode 100644 index ca7287142d..0000000000 --- a/web/i18n/de-DE/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerifiedTip: { - coupon: 'exklusiver 100% Gutschein', - end: 'für den Dify Professional Plan.', - front: 'Sie sind jetzt berechtigt, den Status „Bildung verifiziert“ zu erhalten. Bitte geben Sie unten Ihre Bildungsinformationen ein, um den Prozess abzuschließen und eine Zu erhalten.', - }, - form: { - schoolName: { - placeholder: 'Geben Sie den offiziellen, unabgekürzten Namen Ihrer Schule ein.', - title: 'Ihr Schulname', - }, - schoolRole: { - option: { - teacher: 'Lehrer', - administrator: 'Schuladministrator', - student: 'Schüler', - }, - title: 'Ihre Schulrolle', - }, - terms: { - desc: { - and: 'und', - privacyPolicy: 'Datenschutzrichtlinie', - termsOfService: 'Nutzungsbedingungen', - end: '. Durch die Einreichung:', - front: 'Ihre Informationen und die Nutzung des Status "Bildung bestätigt" unterliegen unseren', - }, - option: { - inSchool: 'Ich bestätige, dass ich an der angegebenen Einrichtung eingeschrieben oder angestellt bin. Dify kann einen Nachweis über die Einschreibung/Anstellung anfordern. Wenn ich meine Berechtigung falsch darstelle, stimme ich zu, alle Gebühren zu zahlen, die aufgrund meines Bildungsstatus ursprünglich erlassen wurden.', - age: 'Ich bestätige, dass ich mindestens 18 Jahre alt bin.', - }, - title: 'Allgemeine Geschäftsbedingungen', - }, - }, - toVerified: 'Bildung überprüfen lassen', - rejectTitle: 'Ihre Dify-Ausbildungsüberprüfung wurde abgelehnt.', - currentSigned: 'DERZEIT ANGEMELDET ALS', - submit: 'Einreichen', - submitError: 'Die Formularübermittlung ist fehlgeschlagen. Bitte versuchen Sie es später erneut.', - rejectContent: 'Leider sind Sie nicht für den Status "Education Verified" berechtigt und können daher den exklusiven 100%-Gutschein für den Dify Professional Plan nicht erhalten, wenn Sie diese E-Mail-Adresse verwenden.', - successContent: 'Wir haben einen 100% Rabattgutschein für den Dify Professional Plan auf Ihr Konto ausgestellt. Der Gutschein ist ein Jahr lang gültig, bitte nutzen Sie ihn innerhalb des Gültigkeitszeitraums.', - learn: 'Erfahren Sie, wie Sie Ihre Ausbildung überprüfen lassen.', - emailLabel: 'Ihre aktuelle E-Mail', - successTitle: 'Sie haben die Dify-Ausbildung verifiziert', - notice: { - expired: { - summary: { - line1: 'Sie können weiterhin auf Dify zugreifen und es nutzen.', - line2: 'Allerdings sind Sie nicht mehr berechtigt, neue Bildungsgutscheine zu erhalten.', - }, - title: 'Ihr Bildungsstatus ist abgelaufen.', - }, - isAboutToExpire: { - summary: 'Keine Sorge - das wird sich nicht auf Ihr aktuelles Abonnement auswirken, aber Sie werden den Bildungspreis beim nächsten Verzicht nicht erhalten, es sei denn, Sie überprüfen Ihren Status erneut.', - title: 'Ihr Bildungsstatus läuft am {{date}} ab', - }, - stillInEducation: { - title: 'Immer noch in der Ausbildung?', - isAboutToExpire: 'Überprüfen Sie jetzt erneut, um einen neuen Gutschein für das kommende Studienjahr zu erhalten. Er wird in Ihrem Konto gespeichert und ist bereit zur Nutzung bei Ihrer nächsten Verlängerung.', - expired: 'Überprüfen Sie jetzt erneut, um einen neuen Gutschein für das kommende akademische Jahr zu erhalten. Wir fügen ihn Ihrem Konto hinzu und Sie können ihn für das nächste Upgrade verwenden.', - }, - alreadyGraduated: { - title: 'Bereits abgeschlossen?', - expired: 'Fühlen Sie sich frei, jederzeit ein Upgrade durchzuführen, um vollen Zugriff auf die kostenpflichtigen Funktionen zu erhalten.', - isAboutToExpire: 'Ihr aktuelles Abonnement bleibt weiterhin aktiv. Wenn es endet, werden Sie auf den Sandbox-Plan umgestellt, oder Sie können jederzeit upgraden, um den vollen Zugang zu den kostenpflichtigen Funktionen wiederherzustellen.', - }, - action: { - dismiss: 'Ablehnen', - upgrade: 'Upgrade', - reVerify: 'Überprüfen Sie es erneut', - }, - dateFormat: 'MM/TT/JJJJ', - }, -} - -export default translation diff --git a/web/i18n/de-DE/explore.json b/web/i18n/de-DE/explore.json new file mode 100644 index 0000000000..945df028ee --- /dev/null +++ b/web/i18n/de-DE/explore.json @@ -0,0 +1,42 @@ +{ + "title": "Entdecken", + "sidebar": { + "discovery": "Entdeckung", + "chat": "Chat", + "workspace": "Arbeitsbereich", + "action": { + "pin": "Anheften", + "unpin": "Lösen", + "rename": "Umbenennen", + "delete": "Löschen" + }, + "delete": { + "title": "App löschen", + "content": "Sind Sie sicher, dass Sie diese App löschen möchten?" + } + }, + "apps": { + "title": "Apps von Dify erkunden", + "description": "Nutzen Sie diese Vorlagen-Apps sofort oder passen Sie Ihre eigenen Apps basierend auf den Vorlagen an.", + "allCategories": "Alle Kategorien" + }, + "appCard": { + "addToWorkspace": "Zum Arbeitsbereich hinzufügen", + "customize": "Anpassen" + }, + "appCustomize": { + "title": "App aus {{name}} erstellen", + "subTitle": "App-Symbol & Name", + "nameRequired": "App-Name ist erforderlich" + }, + "category": { + "Assistant": "Assistent", + "Writing": "Schreiben", + "Translate": "Übersetzen", + "Programming": "Programmieren", + "HR": "Personalwesen", + "Agent": "Agent", + "Workflow": "Arbeitsablauf", + "Entertainment": "Unterhaltung" + } +} diff --git a/web/i18n/de-DE/explore.ts b/web/i18n/de-DE/explore.ts deleted file mode 100644 index 7a8e8e04bb..0000000000 --- a/web/i18n/de-DE/explore.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - title: 'Entdecken', - sidebar: { - discovery: 'Entdeckung', - chat: 'Chat', - workspace: 'Arbeitsbereich', - action: { - pin: 'Anheften', - unpin: 'Lösen', - rename: 'Umbenennen', - delete: 'Löschen', - }, - delete: { - title: 'App löschen', - content: 'Sind Sie sicher, dass Sie diese App löschen möchten?', - }, - }, - apps: { - title: 'Apps von Dify erkunden', - description: 'Nutzen Sie diese Vorlagen-Apps sofort oder passen Sie Ihre eigenen Apps basierend auf den Vorlagen an.', - allCategories: 'Alle Kategorien', - }, - appCard: { - addToWorkspace: 'Zum Arbeitsbereich hinzufügen', - customize: 'Anpassen', - }, - appCustomize: { - title: 'App aus {{name}} erstellen', - subTitle: 'App-Symbol & Name', - nameRequired: 'App-Name ist erforderlich', - }, - category: { - Assistant: 'Assistent', - Writing: 'Schreiben', - Translate: 'Übersetzen', - Programming: 'Programmieren', - HR: 'Personalwesen', - Agent: 'Agent', - Workflow: 'Arbeitsablauf', - Entertainment: 'Unterhaltung', - }, -} - -export default translation diff --git a/web/i18n/de-DE/layout.json b/web/i18n/de-DE/layout.json new file mode 100644 index 0000000000..0e7319ac6c --- /dev/null +++ b/web/i18n/de-DE/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "collapseSidebar": "Seitenleiste einklappen", + "expandSidebar": "Seitenleiste erweitern" + } +} diff --git a/web/i18n/de-DE/layout.ts b/web/i18n/de-DE/layout.ts deleted file mode 100644 index a45e36f474..0000000000 --- a/web/i18n/de-DE/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - collapseSidebar: 'Seitenleiste einklappen', - expandSidebar: 'Seitenleiste erweitern', - }, -} - -export default translation diff --git a/web/i18n/de-DE/login.json b/web/i18n/de-DE/login.json new file mode 100644 index 0000000000..e53fceffa7 --- /dev/null +++ b/web/i18n/de-DE/login.json @@ -0,0 +1,124 @@ +{ + "pageTitle": "Hey, lass uns anfangen!👋", + "welcome": "Willkommen bei Dify, bitte melde dich an, um fortzufahren.", + "email": "E-Mail-Adresse", + "emailPlaceholder": "Deine E-Mail", + "password": "Passwort", + "passwordPlaceholder": "Dein Passwort", + "name": "Benutzername", + "namePlaceholder": "Dein Benutzername", + "forget": "Passwort vergessen?", + "signBtn": "Anmelden", + "installBtn": "Einrichten", + "setAdminAccount": "Admin-Konto einrichten", + "setAdminAccountDesc": "Maximale Berechtigungen für das Admin-Konto, das verwendet werden kann, um Anwendungen zu erstellen und LLM-Anbieter usw. zu verwalten.", + "createAndSignIn": "Erstellen und anmelden", + "oneMoreStep": "Nur noch ein Schritt", + "createSample": "Basierend auf diesen Informationen erstellen wir eine Beispielanwendung für dich", + "invitationCode": "Einladungscode", + "invitationCodePlaceholder": "Dein Einladungscode", + "interfaceLanguage": "Oberflächensprache", + "timezone": "Zeitzone", + "go": "Zu Dify gehen", + "sendUsMail": "Sende uns deine Vorstellung per E-Mail, und wir bearbeiten die Einladungsanfrage.", + "acceptPP": "Ich habe die Datenschutzbestimmungen gelesen und akzeptiere sie", + "reset": "Bitte führe den folgenden Befehl aus, um dein Passwort zurückzusetzen", + "withGitHub": "Mit GitHub fortfahren", + "withGoogle": "Mit Google fortfahren", + "rightTitle": "Das volle Potenzial von LLM ausschöpfen", + "rightDesc": "Mühelos optisch ansprechende, bedienbare und verbesserbare KI-Anwendungen erstellen.", + "tos": "Nutzungsbedingungen", + "pp": "Datenschutzbestimmungen", + "tosDesc": "Mit der Anmeldung stimmst du unseren", + "goToInit": "Wenn du das Konto noch nicht initialisiert hast, gehe bitte zur Initialisierungsseite", + "dontHave": "Hast du nicht?", + "invalidInvitationCode": "Ungültiger Einladungscode", + "accountAlreadyInited": "Konto bereits initialisiert", + "forgotPassword": "Passwort vergessen?", + "resetLinkSent": "Link zum Zurücksetzen gesendet", + "sendResetLink": "Link zum Zurücksetzen senden", + "backToSignIn": "Zurück zur Anmeldung", + "forgotPasswordDesc": "Bitte geben Sie Ihre E-Mail-Adresse ein, um Ihr Passwort zurückzusetzen. Wir senden Ihnen eine E-Mail mit Anweisungen zum Zurücksetzen Ihres Passworts.", + "checkEmailForResetLink": "Bitte überprüfen Sie Ihre E-Mails auf einen Link zum Zurücksetzen Ihres Passworts. Wenn er nicht innerhalb weniger Minuten erscheint, überprüfen Sie bitte Ihren Spam-Ordner.", + "passwordChanged": "Jetzt anmelden", + "changePassword": "Passwort ändern", + "changePasswordTip": "Bitte geben Sie ein neues Passwort für Ihr Konto ein", + "invalidToken": "Ungültiges oder abgelaufenes Token", + "confirmPassword": "Passwort bestätigen", + "confirmPasswordPlaceholder": "Bestätigen Sie Ihr neues Passwort", + "passwordChangedTip": "Ihr Passwort wurde erfolgreich geändert", + "error": { + "emailEmpty": "E-Mail-Adresse wird benötigt", + "emailInValid": "Bitte gib eine gültige E-Mail-Adresse ein", + "nameEmpty": "Name wird benötigt", + "passwordEmpty": "Passwort wird benötigt", + "passwordInvalid": "Das Passwort muss Buchstaben und Zahlen enthalten und länger als 8 Zeichen sein", + "passwordLengthInValid": "Das Passwort muss mindestens 8 Zeichen lang sein", + "registrationNotAllowed": "Konto nicht gefunden. Bitte wenden Sie sich an den Systemadministrator, um sich zu registrieren.", + "invalidEmailOrPassword": "Ungültige E-Mail oder Passwort." + }, + "license": { + "tip": "Bevor du mit Dify Community Edition beginnst, lies die", + "link": "Open-Source-Lizenz" + }, + "join": "Beitreten", + "joinTipStart": "Lade dich ein, dem", + "joinTipEnd": "Team auf Dify beizutreten", + "invalid": "Der Link ist abgelaufen", + "explore": "Dify erkunden", + "activatedTipStart": "Du bist dem", + "activatedTipEnd": "Team beigetreten", + "activated": "Jetzt anmelden", + "adminInitPassword": "Admin-Initialpasswort", + "validate": "Validieren", + "checkCode": { + "didNotReceiveCode": "Sie haben den Code nicht erhalten?", + "verificationCodePlaceholder": "Geben Sie den 6-stelligen Code ein", + "checkYourEmail": "Überprüfen Sie Ihre E-Mails", + "verify": "Überprüfen", + "verificationCode": "Verifizierungscode", + "useAnotherMethod": "Verwenden Sie eine andere Methode", + "validTime": "Beachten Sie, dass der Code 5 Minuten lang gültig ist", + "emptyCode": "Code ist erforderlich", + "invalidCode": "Ungültiger Code", + "resend": "Wieder senden", + "tipsPrefix": "Wir senden einen Bestätigungscode an" + }, + "or": "ODER", + "back": "Zurück", + "changePasswordBtn": "Festlegen eines Kennworts", + "enterYourName": "Bitte geben Sie Ihren Benutzernamen ein", + "setYourAccount": "Richten Sie Ihr Konto ein", + "sendVerificationCode": "Verifizierungscode senden", + "useVerificationCode": "Verifizierungscode verwenden", + "withSSO": "Mit SSO fortfahren", + "resetPasswordDesc": "Geben Sie die E-Mail-Adresse ein, mit der Sie sich bei Dify angemeldet haben, und wir senden Ihnen eine E-Mail zum Zurücksetzen des Passworts.", + "continueWithCode": "Fahren Sie mit dem Code fort", + "resetPassword": "Passwort zurücksetzen", + "backToLogin": "Zurück zum Login", + "noLoginMethodTip": "Wenden Sie sich an den Systemadministrator, um eine Authentifizierungsmethode hinzuzufügen.", + "usePassword": "Passwort verwenden", + "noLoginMethod": "Authentifizierungsmethode nicht konfiguriert", + "licenseExpired": "Lizenz abgelaufen", + "licenseLostTip": "Fehler beim Verbinden des Dify-Lizenzservers. Wenden Sie sich an Ihren Administrator, um Dify weiterhin zu verwenden.", + "licenseInactive": "Lizenz inaktiv", + "licenseInactiveTip": "Die Dify Enterprise-Lizenz für Ihren Arbeitsbereich ist inaktiv. Wenden Sie sich an Ihren Administrator, um Dify weiterhin zu verwenden.", + "licenseExpiredTip": "Die Dify Enterprise-Lizenz für Ihren Arbeitsbereich ist abgelaufen. Wenden Sie sich an Ihren Administrator, um Dify weiterhin zu verwenden.", + "licenseLost": "Lizenz verloren", + "webapp": { + "noLoginMethod": "Authentifizierungsmethode ist nicht für die Webanwendung konfiguriert", + "noLoginMethodTip": "Bitte kontaktieren Sie den Systemadministrator, um eine Authentifizierungsmethode hinzuzufügen.", + "disabled": "Die Webanmeldeauthentifizierung ist deaktiviert. Bitte kontaktieren Sie den Systemadministrator, um sie zu aktivieren. Sie können versuchen, die App direkt zu verwenden.", + "login": "Anmelden" + }, + "signup": { + "createAccount": "Erstellen Sie Ihr Konto", + "signIn": "Anmelden", + "signUp": "Anmelden", + "welcome": "👋 Willkommen! Bitte füllen Sie die Einzelheiten aus, um zu beginnen.", + "haveAccount": "Haben Sie bereits ein Konto?", + "noAccount": "Haben Sie kein Konto?", + "verifyMail": "Fahren Sie mit dem Bestätigungscode fort" + }, + "pageTitleForE": "Hey, lass uns anfangen!" +} diff --git a/web/i18n/de-DE/login.ts b/web/i18n/de-DE/login.ts deleted file mode 100644 index 4705a73087..0000000000 --- a/web/i18n/de-DE/login.ts +++ /dev/null @@ -1,126 +0,0 @@ -const translation = { - pageTitle: 'Hey, lass uns anfangen!👋', - welcome: 'Willkommen bei Dify, bitte melde dich an, um fortzufahren.', - email: 'E-Mail-Adresse', - emailPlaceholder: 'Deine E-Mail', - password: 'Passwort', - passwordPlaceholder: 'Dein Passwort', - name: 'Benutzername', - namePlaceholder: 'Dein Benutzername', - forget: 'Passwort vergessen?', - signBtn: 'Anmelden', - installBtn: 'Einrichten', - setAdminAccount: 'Admin-Konto einrichten', - setAdminAccountDesc: 'Maximale Berechtigungen für das Admin-Konto, das verwendet werden kann, um Anwendungen zu erstellen und LLM-Anbieter usw. zu verwalten.', - createAndSignIn: 'Erstellen und anmelden', - oneMoreStep: 'Nur noch ein Schritt', - createSample: 'Basierend auf diesen Informationen erstellen wir eine Beispielanwendung für dich', - invitationCode: 'Einladungscode', - invitationCodePlaceholder: 'Dein Einladungscode', - interfaceLanguage: 'Oberflächensprache', - timezone: 'Zeitzone', - go: 'Zu Dify gehen', - sendUsMail: 'Sende uns deine Vorstellung per E-Mail, und wir bearbeiten die Einladungsanfrage.', - acceptPP: 'Ich habe die Datenschutzbestimmungen gelesen und akzeptiere sie', - reset: 'Bitte führe den folgenden Befehl aus, um dein Passwort zurückzusetzen', - withGitHub: 'Mit GitHub fortfahren', - withGoogle: 'Mit Google fortfahren', - rightTitle: 'Das volle Potenzial von LLM ausschöpfen', - rightDesc: 'Mühelos optisch ansprechende, bedienbare und verbesserbare KI-Anwendungen erstellen.', - tos: 'Nutzungsbedingungen', - pp: 'Datenschutzbestimmungen', - tosDesc: 'Mit der Anmeldung stimmst du unseren', - goToInit: 'Wenn du das Konto noch nicht initialisiert hast, gehe bitte zur Initialisierungsseite', - dontHave: 'Hast du nicht?', - invalidInvitationCode: 'Ungültiger Einladungscode', - accountAlreadyInited: 'Konto bereits initialisiert', - forgotPassword: 'Passwort vergessen?', - resetLinkSent: 'Link zum Zurücksetzen gesendet', - sendResetLink: 'Link zum Zurücksetzen senden', - backToSignIn: 'Zurück zur Anmeldung', - forgotPasswordDesc: 'Bitte geben Sie Ihre E-Mail-Adresse ein, um Ihr Passwort zurückzusetzen. Wir senden Ihnen eine E-Mail mit Anweisungen zum Zurücksetzen Ihres Passworts.', - checkEmailForResetLink: 'Bitte überprüfen Sie Ihre E-Mails auf einen Link zum Zurücksetzen Ihres Passworts. Wenn er nicht innerhalb weniger Minuten erscheint, überprüfen Sie bitte Ihren Spam-Ordner.', - passwordChanged: 'Jetzt anmelden', - changePassword: 'Passwort ändern', - changePasswordTip: 'Bitte geben Sie ein neues Passwort für Ihr Konto ein', - invalidToken: 'Ungültiges oder abgelaufenes Token', - confirmPassword: 'Passwort bestätigen', - confirmPasswordPlaceholder: 'Bestätigen Sie Ihr neues Passwort', - passwordChangedTip: 'Ihr Passwort wurde erfolgreich geändert', - error: { - emailEmpty: 'E-Mail-Adresse wird benötigt', - emailInValid: 'Bitte gib eine gültige E-Mail-Adresse ein', - nameEmpty: 'Name wird benötigt', - passwordEmpty: 'Passwort wird benötigt', - passwordInvalid: 'Das Passwort muss Buchstaben und Zahlen enthalten und länger als 8 Zeichen sein', - passwordLengthInValid: 'Das Passwort muss mindestens 8 Zeichen lang sein', - registrationNotAllowed: 'Konto nicht gefunden. Bitte wenden Sie sich an den Systemadministrator, um sich zu registrieren.', - invalidEmailOrPassword: 'Ungültige E-Mail oder Passwort.', - }, - license: { - tip: 'Bevor du mit Dify Community Edition beginnst, lies die', - link: 'Open-Source-Lizenz', - }, - join: 'Beitreten', - joinTipStart: 'Lade dich ein, dem', - joinTipEnd: 'Team auf Dify beizutreten', - invalid: 'Der Link ist abgelaufen', - explore: 'Dify erkunden', - activatedTipStart: 'Du bist dem', - activatedTipEnd: 'Team beigetreten', - activated: 'Jetzt anmelden', - adminInitPassword: 'Admin-Initialpasswort', - validate: 'Validieren', - checkCode: { - didNotReceiveCode: 'Sie haben den Code nicht erhalten?', - verificationCodePlaceholder: 'Geben Sie den 6-stelligen Code ein', - checkYourEmail: 'Überprüfen Sie Ihre E-Mails', - verify: 'Überprüfen', - verificationCode: 'Verifizierungscode', - useAnotherMethod: 'Verwenden Sie eine andere Methode', - validTime: 'Beachten Sie, dass der Code 5 Minuten lang gültig ist', - emptyCode: 'Code ist erforderlich', - invalidCode: 'Ungültiger Code', - resend: 'Wieder senden', - tipsPrefix: 'Wir senden einen Bestätigungscode an', - }, - or: 'ODER', - back: 'Zurück', - changePasswordBtn: 'Festlegen eines Kennworts', - enterYourName: 'Bitte geben Sie Ihren Benutzernamen ein', - setYourAccount: 'Richten Sie Ihr Konto ein', - sendVerificationCode: 'Verifizierungscode senden', - useVerificationCode: 'Verifizierungscode verwenden', - withSSO: 'Mit SSO fortfahren', - resetPasswordDesc: 'Geben Sie die E-Mail-Adresse ein, mit der Sie sich bei Dify angemeldet haben, und wir senden Ihnen eine E-Mail zum Zurücksetzen des Passworts.', - continueWithCode: 'Fahren Sie mit dem Code fort', - resetPassword: 'Passwort zurücksetzen', - backToLogin: 'Zurück zum Login', - noLoginMethodTip: 'Wenden Sie sich an den Systemadministrator, um eine Authentifizierungsmethode hinzuzufügen.', - usePassword: 'Passwort verwenden', - noLoginMethod: 'Authentifizierungsmethode nicht konfiguriert', - licenseExpired: 'Lizenz abgelaufen', - licenseLostTip: 'Fehler beim Verbinden des Dify-Lizenzservers. Wenden Sie sich an Ihren Administrator, um Dify weiterhin zu verwenden.', - licenseInactive: 'Lizenz inaktiv', - licenseInactiveTip: 'Die Dify Enterprise-Lizenz für Ihren Arbeitsbereich ist inaktiv. Wenden Sie sich an Ihren Administrator, um Dify weiterhin zu verwenden.', - licenseExpiredTip: 'Die Dify Enterprise-Lizenz für Ihren Arbeitsbereich ist abgelaufen. Wenden Sie sich an Ihren Administrator, um Dify weiterhin zu verwenden.', - licenseLost: 'Lizenz verloren', - webapp: { - noLoginMethod: 'Authentifizierungsmethode ist nicht für die Webanwendung konfiguriert', - noLoginMethodTip: 'Bitte kontaktieren Sie den Systemadministrator, um eine Authentifizierungsmethode hinzuzufügen.', - disabled: 'Die Webanmeldeauthentifizierung ist deaktiviert. Bitte kontaktieren Sie den Systemadministrator, um sie zu aktivieren. Sie können versuchen, die App direkt zu verwenden.', - login: 'Anmelden', - }, - signup: { - createAccount: 'Erstellen Sie Ihr Konto', - signIn: 'Anmelden', - signUp: 'Anmelden', - welcome: '👋 Willkommen! Bitte füllen Sie die Einzelheiten aus, um zu beginnen.', - haveAccount: 'Haben Sie bereits ein Konto?', - noAccount: 'Haben Sie kein Konto?', - verifyMail: 'Fahren Sie mit dem Bestätigungscode fort', - }, - pageTitleForE: 'Hey, lass uns anfangen!', -} - -export default translation diff --git a/web/i18n/de-DE/oauth.json b/web/i18n/de-DE/oauth.json new file mode 100644 index 0000000000..1a0b7bdafb --- /dev/null +++ b/web/i18n/de-DE/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "common": "Wir respektieren Ihre Privatsphäre und werden diese Informationen nur verwenden, um Ihre Erfahrung mit unseren Entwickler-Tools zu verbessern.", + "notLoggedIn": "Diese App möchte auf Ihr Dify Cloud-Konto zugreifen", + "loggedIn": "Diese App möchte auf die folgenden Informationen aus Ihrem Dify Cloud-Konto zugreifen.", + "needLogin": "Bitte melden Sie sich an, um zu autorisieren." + }, + "scopes": { + "avatar": "Avatar", + "timezone": "Zeitzone", + "name": "Name", + "email": "E-Mail", + "languagePreference": "Sprachauswahl" + }, + "error": { + "invalidParams": "Ungültige Parameter", + "authAppInfoFetchFailed": "Fehler beim Abrufen der App-Informationen für die Autorisierung", + "authorizeFailed": "Autorisierung fehlgeschlagen" + }, + "switchAccount": "Konto wechseln", + "login": "Anmelden", + "unknownApp": "Unbekannte App", + "continue": "Fortsetzen", + "connect": "Verbinden mit" +} diff --git a/web/i18n/de-DE/oauth.ts b/web/i18n/de-DE/oauth.ts deleted file mode 100644 index 7478a4afd5..0000000000 --- a/web/i18n/de-DE/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - common: 'Wir respektieren Ihre Privatsphäre und werden diese Informationen nur verwenden, um Ihre Erfahrung mit unseren Entwickler-Tools zu verbessern.', - notLoggedIn: 'Diese App möchte auf Ihr Dify Cloud-Konto zugreifen', - loggedIn: 'Diese App möchte auf die folgenden Informationen aus Ihrem Dify Cloud-Konto zugreifen.', - needLogin: 'Bitte melden Sie sich an, um zu autorisieren.', - }, - scopes: { - avatar: 'Avatar', - timezone: 'Zeitzone', - name: 'Name', - email: 'E-Mail', - languagePreference: 'Sprachauswahl', - }, - error: { - invalidParams: 'Ungültige Parameter', - authAppInfoFetchFailed: 'Fehler beim Abrufen der App-Informationen für die Autorisierung', - authorizeFailed: 'Autorisierung fehlgeschlagen', - }, - switchAccount: 'Konto wechseln', - login: 'Anmelden', - unknownApp: 'Unbekannte App', - continue: 'Fortsetzen', - connect: 'Verbinden mit', -} - -export default translation diff --git a/web/i18n/de-DE/pipeline.json b/web/i18n/de-DE/pipeline.json new file mode 100644 index 0000000000..7a229a40e1 --- /dev/null +++ b/web/i18n/de-DE/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "publishAsPipeline": { + "description": "Beschreibung des Wissens", + "name": "Name und Symbol der Pipeline", + "namePlaceholder": "Geben Sie den Namen dieser Knowledge Pipeline ein. (Erforderlich)", + "descriptionPlaceholder": "Bitte geben Sie die Beschreibung dieser Knowledge Pipeline ein. (Fakultativ)" + }, + "testRun": "Testlauf", + "reRun": "Erneuter Lauf", + "goToAddDocuments": "Gehen Sie zu Dokumente hinzufügen", + "confirmPublish": "Bestätigen Sie die Veröffentlichung", + "publishAs": "Veröffentlichen als Wissenspipeline", + "confirmPublishContent": "Nach der erfolgreichen Veröffentlichung der Wissenspipeline kann die Chunk-Struktur dieser Wissensdatenbank nicht mehr geändert werden. Sind Sie sicher, dass Sie es veröffentlichen möchten?", + "processing": "Verarbeitung", + "preparingDataSource": "Vorbereiten der Datenquelle" + }, + "inputField": { + "create": "Benutzereingabefeld erstellen", + "manage": "Verwalten" + }, + "publishToast": { + "title": "Diese Pipeline wurde noch nicht veröffentlicht", + "desc": "Wenn die Pipeline nicht veröffentlicht wird, können Sie die Chunk-Struktur im Wissensdatenbank-Knoten ändern, und die Pipeline-Orchestrierung und -Änderungen werden automatisch als Entwurf gespeichert." + }, + "result": { + "resultPreview": { + "viewDetails": "Details anzeigen", + "error": "Während der Ausführung ist ein Fehler aufgetreten", + "loading": "Verarbeitung... Bitte warten", + "footerTip": "Im Testlaufmodus bis zu {{count}} Abschnitte anzeigen" + } + }, + "ragToolSuggestions": { + "title": "Vorschläge für die RAG", + "noRecommendationPlugins": "Keine empfohlenen Plugins, finde mehr im Marktplatz" + } +} diff --git a/web/i18n/de-DE/pipeline.ts b/web/i18n/de-DE/pipeline.ts deleted file mode 100644 index 2504c001be..0000000000 --- a/web/i18n/de-DE/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - publishAsPipeline: { - description: 'Beschreibung des Wissens', - name: 'Name und Symbol der Pipeline', - namePlaceholder: 'Geben Sie den Namen dieser Knowledge Pipeline ein. (Erforderlich)', - descriptionPlaceholder: 'Bitte geben Sie die Beschreibung dieser Knowledge Pipeline ein. (Fakultativ)', - }, - testRun: 'Testlauf', - reRun: 'Erneuter Lauf', - goToAddDocuments: 'Gehen Sie zu Dokumente hinzufügen', - confirmPublish: 'Bestätigen Sie die Veröffentlichung', - publishAs: 'Veröffentlichen als Wissenspipeline', - confirmPublishContent: 'Nach der erfolgreichen Veröffentlichung der Wissenspipeline kann die Chunk-Struktur dieser Wissensdatenbank nicht mehr geändert werden. Sind Sie sicher, dass Sie es veröffentlichen möchten?', - processing: 'Verarbeitung', - preparingDataSource: 'Vorbereiten der Datenquelle', - }, - inputField: { - create: 'Benutzereingabefeld erstellen', - manage: 'Verwalten', - }, - publishToast: { - title: 'Diese Pipeline wurde noch nicht veröffentlicht', - desc: 'Wenn die Pipeline nicht veröffentlicht wird, können Sie die Chunk-Struktur im Wissensdatenbank-Knoten ändern, und die Pipeline-Orchestrierung und -Änderungen werden automatisch als Entwurf gespeichert.', - }, - result: { - resultPreview: { - viewDetails: 'Details anzeigen', - error: 'Während der Ausführung ist ein Fehler aufgetreten', - loading: 'Verarbeitung... Bitte warten', - footerTip: 'Im Testlaufmodus bis zu {{count}} Abschnitte anzeigen', - }, - }, - ragToolSuggestions: { - title: 'Vorschläge für die RAG', - noRecommendationPlugins: 'Keine empfohlenen Plugins, finde mehr im Marktplatz', - }, -} - -export default translation diff --git a/web/i18n/de-DE/plugin-tags.json b/web/i18n/de-DE/plugin-tags.json new file mode 100644 index 0000000000..070d294a3d --- /dev/null +++ b/web/i18n/de-DE/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "tags": { + "weather": "Wetter", + "social": "Sozial", + "image": "Bild", + "education": "Bildung", + "travel": "Reise", + "agent": "Agent", + "design": "Entwurf", + "finance": "Finanzieren", + "search": "Suchen", + "medical": "Medizinisch", + "business": "Geschäft", + "news": "Nachrichten", + "videos": "Videos", + "other": "Andere", + "entertainment": "Unterhaltung", + "utilities": "Versorgungswirtschaft", + "productivity": "Produktivität", + "rag": "LAPPEN" + }, + "searchTags": "Such-Tags", + "allTags": "Alle Schlagwörter" +} diff --git a/web/i18n/de-DE/plugin-tags.ts b/web/i18n/de-DE/plugin-tags.ts deleted file mode 100644 index 49408b5b10..0000000000 --- a/web/i18n/de-DE/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - tags: { - weather: 'Wetter', - social: 'Sozial', - image: 'Bild', - education: 'Bildung', - travel: 'Reise', - agent: 'Agent', - design: 'Entwurf', - finance: 'Finanzieren', - search: 'Suchen', - medical: 'Medizinisch', - business: 'Geschäft', - news: 'Nachrichten', - videos: 'Videos', - other: 'Andere', - entertainment: 'Unterhaltung', - utilities: 'Versorgungswirtschaft', - productivity: 'Produktivität', - rag: 'LAPPEN', - }, - searchTags: 'Such-Tags', - allTags: 'Alle Schlagwörter', -} - -export default translation diff --git a/web/i18n/de-DE/plugin-trigger.json b/web/i18n/de-DE/plugin-trigger.json new file mode 100644 index 0000000000..00dc413413 --- /dev/null +++ b/web/i18n/de-DE/plugin-trigger.json @@ -0,0 +1,184 @@ +{ + "subscription": { + "title": "Abonnements", + "listNum": "{{num}} Abonnements", + "empty": { + "title": "Keine Abonnements", + "button": "Neues Abonnement" + }, + "createButton": { + "oauth": "Neue Anmeldung mit OAuth", + "apiKey": "Neues Abonnement mit API-Schlüssel", + "manual": "URL einfügen, um ein neues Abonnement zu erstellen" + }, + "createSuccess": "Abonnement erfolgreich erstellt", + "createFailed": "Fehler beim Erstellen des Abonnements", + "maxCount": "Max {{num}} Abonnements", + "selectPlaceholder": "Abonnement auswählen", + "noSubscriptionSelected": "Kein Abonnement ausgewählt", + "subscriptionRemoved": "Abonnement entfernt", + "list": { + "title": "Abonnements", + "addButton": "Hinzufügen", + "tip": "Ereignisse über ein Abonnement empfangen", + "item": { + "enabled": "Aktiviert", + "disabled": "Deaktiviert", + "credentialType": { + "api_key": "API-Schlüssel", + "oauth2": "OAuth", + "unauthorized": "Handbuch" + }, + "actions": { + "delete": "Löschen", + "deleteConfirm": { + "title": "„{{name}} löschen?“", + "success": "Abonnement {{name}} erfolgreich gelöscht", + "error": "Löschen des Abonnements {{name}} fehlgeschlagen", + "content": "Einmal gelöscht, kann dieses Abonnement nicht wiederhergestellt werden. Bitte bestätigen Sie.", + "contentWithApps": "Das aktuelle Abonnement wird von {{count}} Anwendungen referenziert. Wenn es gelöscht wird, werden die konfigurierten Anwendungen keine Abonnementereignisse mehr erhalten.", + "confirm": "Löschen bestätigen", + "cancel": "Abbrechen", + "confirmInputWarning": "Bitte geben Sie den korrekten Namen zur Bestätigung ein.", + "confirmInputPlaceholder": "Geben Sie \"{{name}}\" ein, um zu bestätigen.", + "confirmInputTip": "Bitte geben Sie „{{name}}“ zur Bestätigung ein." + } + }, + "status": { + "active": "Aktiv", + "inactive": "Inaktiv" + }, + "usedByNum": "Verwendet von {{num}} Workflows", + "noUsed": "Kein Workflow verwendet" + } + }, + "addType": { + "title": "Abonnement hinzufügen", + "description": "Wählen Sie aus, wie Sie Ihr Trigger-Abonnement erstellen möchten", + "options": { + "apikey": { + "title": "Mit API-Schlüssel erstellen", + "description": "Abonnement automatisch mit API-Zugangsdaten erstellen" + }, + "oauth": { + "title": "Erstellen Sie mit OAuth", + "description": "Bei einer Drittanbieterplattform autorisieren, um ein Abonnement zu erstellen", + "clientSettings": "OAuth-Client-Einstellungen", + "clientTitle": "OAuth-Client", + "default": "Standard", + "custom": "Benutzerdefiniert" + }, + "manual": { + "title": "Manuelle Einrichtung", + "description": "URL einfügen, um ein neues Abonnement zu erstellen", + "tip": "URL auf einer Drittanbieterplattform manuell konfigurieren" + } + } + } + }, + "modal": { + "steps": { + "verify": "Überprüfen", + "configuration": "Konfiguration" + }, + "common": { + "cancel": "Abbrechen", + "back": "Zurück", + "next": "Weiter", + "create": "Erstellen", + "verify": "Überprüfen", + "authorize": "Autorisieren", + "creating": "Erstellen...", + "verifying": "Überprüfen...", + "authorizing": "Autorisierung läuft..." + }, + "oauthRedirectInfo": "Da für diesen Toolanbieter keine System-Client-Geheimnisse gefunden wurden, ist eine manuelle Einrichtung erforderlich. Für redirect_uri verwenden Sie bitte", + "apiKey": { + "title": "Mit API-Schlüssel erstellen", + "verify": { + "title": "Anmeldeinformationen überprüfen", + "description": "Bitte geben Sie Ihre API-Zugangsdaten ein, um den Zugriff zu überprüfen", + "error": "Überprüfung der Anmeldedaten fehlgeschlagen. Bitte überprüfen Sie Ihren API-Schlüssel.", + "success": "Anmeldedaten erfolgreich überprüft" + }, + "configuration": { + "title": "Abonnement konfigurieren", + "description": "Richten Sie Ihre Abonnementparameter ein" + } + }, + "oauth": { + "title": "Mit OAuth erstellen", + "authorization": { + "title": "OAuth-Autorisierung", + "description": "Erlaube Dify den Zugriff auf dein Konto", + "redirectUrl": "Weiterleitungs-URL", + "redirectUrlHelp": "Verwenden Sie diese URL in der Konfiguration Ihrer OAuth-App", + "authorizeButton": "Autorisieren mit {{provider}}", + "waitingAuth": "Warten auf die Autorisierung...", + "authSuccess": "Autorisierung erfolgreich", + "authFailed": "Fehler beim Abrufen der OAuth-Autorisierungsinformationen", + "waitingJump": "Autorisierte, warten auf den Sprung" + }, + "configuration": { + "title": "Abonnement konfigurieren", + "description": "Richten Sie Ihre Abonnementparameter nach der Autorisierung ein", + "success": "OAuth-Konfiguration erfolgreich", + "failed": "OAuth-Konfiguration fehlgeschlagen" + }, + "remove": { + "success": "OAuth erfolgreich entfernt", + "failed": "OAuth-Entfernung fehlgeschlagen" + }, + "save": { + "success": "OAuth-Konfiguration erfolgreich gespeichert" + } + }, + "manual": { + "title": "Manuelle Einrichtung", + "description": "Konfigurieren Sie Ihr Webhook-Abonnement manuell", + "logs": { + "title": "Anforderungsprotokolle", + "request": "Anfrage", + "loading": "Warten auf Anfrage von {{pluginName}}..." + } + }, + "form": { + "subscriptionName": { + "label": "Abonnementname", + "placeholder": "Abonnementname eingeben", + "required": "Der Abonnementname ist erforderlich" + }, + "callbackUrl": { + "label": "Rückruf-URL", + "description": "Diese URL wird Webhook-Ereignisse empfangen", + "tooltip": "Stellen Sie einen öffentlich zugänglichen Endpunkt bereit, der Callback-Anfragen vom Auslöseranbieter empfangen kann.", + "placeholder": "Generierung...", + "privateAddressWarning": "Diese URL scheint eine interne Adresse zu sein, was dazu führen kann, dass Webhook-Anfragen fehlschlagen. Sie können TRIGGER_URL auf eine öffentliche Adresse ändern." + } + }, + "errors": { + "createFailed": "Fehler beim Erstellen des Abonnements", + "verifyFailed": "Anmeldeinformationen konnten nicht überprüft werden", + "authFailed": "Autorisierung fehlgeschlagen", + "networkError": "Netzwerkfehler, bitte versuchen Sie es erneut" + } + }, + "events": { + "title": "Verfügbare Veranstaltungen", + "description": "Ereignisse, auf die dieses Trigger-Plugin reagieren kann", + "empty": "Keine Veranstaltungen verfügbar", + "event": "Veranstaltung", + "events": "Veranstaltungen", + "actionNum": "{{num}} {{event}} ENTHALTEN", + "item": { + "parameters": "{{count}} Parameter", + "noParameters": "Keine Parameter" + }, + "output": "Ausgabe" + }, + "node": { + "status": { + "warning": "Trennen" + } + } +} diff --git a/web/i18n/de-DE/plugin-trigger.ts b/web/i18n/de-DE/plugin-trigger.ts deleted file mode 100644 index 68f6da5a4e..0000000000 --- a/web/i18n/de-DE/plugin-trigger.ts +++ /dev/null @@ -1,186 +0,0 @@ -const translation = { - subscription: { - title: 'Abonnements', - listNum: '{{num}} Abonnements', - empty: { - title: 'Keine Abonnements', - button: 'Neues Abonnement', - }, - createButton: { - oauth: 'Neue Anmeldung mit OAuth', - apiKey: 'Neues Abonnement mit API-Schlüssel', - manual: 'URL einfügen, um ein neues Abonnement zu erstellen', - }, - createSuccess: 'Abonnement erfolgreich erstellt', - createFailed: 'Fehler beim Erstellen des Abonnements', - maxCount: 'Max {{num}} Abonnements', - selectPlaceholder: 'Abonnement auswählen', - noSubscriptionSelected: 'Kein Abonnement ausgewählt', - subscriptionRemoved: 'Abonnement entfernt', - list: { - title: 'Abonnements', - addButton: 'Hinzufügen', - tip: 'Ereignisse über ein Abonnement empfangen', - item: { - enabled: 'Aktiviert', - disabled: 'Deaktiviert', - credentialType: { - api_key: 'API-Schlüssel', - oauth2: 'OAuth', - unauthorized: 'Handbuch', - }, - actions: { - delete: 'Löschen', - deleteConfirm: { - title: '„{{name}} löschen?“', - success: 'Abonnement {{name}} erfolgreich gelöscht', - error: 'Löschen des Abonnements {{name}} fehlgeschlagen', - content: 'Einmal gelöscht, kann dieses Abonnement nicht wiederhergestellt werden. Bitte bestätigen Sie.', - contentWithApps: 'Das aktuelle Abonnement wird von {{count}} Anwendungen referenziert. Wenn es gelöscht wird, werden die konfigurierten Anwendungen keine Abonnementereignisse mehr erhalten.', - confirm: 'Löschen bestätigen', - cancel: 'Abbrechen', - confirmInputWarning: 'Bitte geben Sie den korrekten Namen zur Bestätigung ein.', - confirmInputPlaceholder: 'Geben Sie "{{name}}" ein, um zu bestätigen.', - confirmInputTip: 'Bitte geben Sie „{{name}}“ zur Bestätigung ein.', - }, - }, - status: { - active: 'Aktiv', - inactive: 'Inaktiv', - }, - usedByNum: 'Verwendet von {{num}} Workflows', - noUsed: 'Kein Workflow verwendet', - }, - }, - addType: { - title: 'Abonnement hinzufügen', - description: 'Wählen Sie aus, wie Sie Ihr Trigger-Abonnement erstellen möchten', - options: { - apikey: { - title: 'Mit API-Schlüssel erstellen', - description: 'Abonnement automatisch mit API-Zugangsdaten erstellen', - }, - oauth: { - title: 'Erstellen Sie mit OAuth', - description: 'Bei einer Drittanbieterplattform autorisieren, um ein Abonnement zu erstellen', - clientSettings: 'OAuth-Client-Einstellungen', - clientTitle: 'OAuth-Client', - default: 'Standard', - custom: 'Benutzerdefiniert', - }, - manual: { - title: 'Manuelle Einrichtung', - description: 'URL einfügen, um ein neues Abonnement zu erstellen', - tip: 'URL auf einer Drittanbieterplattform manuell konfigurieren', - }, - }, - }, - }, - modal: { - steps: { - verify: 'Überprüfen', - configuration: 'Konfiguration', - }, - common: { - cancel: 'Abbrechen', - back: 'Zurück', - next: 'Weiter', - create: 'Erstellen', - verify: 'Überprüfen', - authorize: 'Autorisieren', - creating: 'Erstellen...', - verifying: 'Überprüfen...', - authorizing: 'Autorisierung läuft...', - }, - oauthRedirectInfo: 'Da für diesen Toolanbieter keine System-Client-Geheimnisse gefunden wurden, ist eine manuelle Einrichtung erforderlich. Für redirect_uri verwenden Sie bitte', - apiKey: { - title: 'Mit API-Schlüssel erstellen', - verify: { - title: 'Anmeldeinformationen überprüfen', - description: 'Bitte geben Sie Ihre API-Zugangsdaten ein, um den Zugriff zu überprüfen', - error: 'Überprüfung der Anmeldedaten fehlgeschlagen. Bitte überprüfen Sie Ihren API-Schlüssel.', - success: 'Anmeldedaten erfolgreich überprüft', - }, - configuration: { - title: 'Abonnement konfigurieren', - description: 'Richten Sie Ihre Abonnementparameter ein', - }, - }, - oauth: { - title: 'Mit OAuth erstellen', - authorization: { - title: 'OAuth-Autorisierung', - description: 'Erlaube Dify den Zugriff auf dein Konto', - redirectUrl: 'Weiterleitungs-URL', - redirectUrlHelp: 'Verwenden Sie diese URL in der Konfiguration Ihrer OAuth-App', - authorizeButton: 'Autorisieren mit {{provider}}', - waitingAuth: 'Warten auf die Autorisierung...', - authSuccess: 'Autorisierung erfolgreich', - authFailed: 'Fehler beim Abrufen der OAuth-Autorisierungsinformationen', - waitingJump: 'Autorisierte, warten auf den Sprung', - }, - configuration: { - title: 'Abonnement konfigurieren', - description: 'Richten Sie Ihre Abonnementparameter nach der Autorisierung ein', - success: 'OAuth-Konfiguration erfolgreich', - failed: 'OAuth-Konfiguration fehlgeschlagen', - }, - remove: { - success: 'OAuth erfolgreich entfernt', - failed: 'OAuth-Entfernung fehlgeschlagen', - }, - save: { - success: 'OAuth-Konfiguration erfolgreich gespeichert', - }, - }, - manual: { - title: 'Manuelle Einrichtung', - description: 'Konfigurieren Sie Ihr Webhook-Abonnement manuell', - logs: { - title: 'Anforderungsprotokolle', - request: 'Anfrage', - loading: 'Warten auf Anfrage von {{pluginName}}...', - }, - }, - form: { - subscriptionName: { - label: 'Abonnementname', - placeholder: 'Abonnementname eingeben', - required: 'Der Abonnementname ist erforderlich', - }, - callbackUrl: { - label: 'Rückruf-URL', - description: 'Diese URL wird Webhook-Ereignisse empfangen', - tooltip: 'Stellen Sie einen öffentlich zugänglichen Endpunkt bereit, der Callback-Anfragen vom Auslöseranbieter empfangen kann.', - placeholder: 'Generierung...', - privateAddressWarning: 'Diese URL scheint eine interne Adresse zu sein, was dazu führen kann, dass Webhook-Anfragen fehlschlagen. Sie können TRIGGER_URL auf eine öffentliche Adresse ändern.', - }, - }, - errors: { - createFailed: 'Fehler beim Erstellen des Abonnements', - verifyFailed: 'Anmeldeinformationen konnten nicht überprüft werden', - authFailed: 'Autorisierung fehlgeschlagen', - networkError: 'Netzwerkfehler, bitte versuchen Sie es erneut', - }, - }, - events: { - title: 'Verfügbare Veranstaltungen', - description: 'Ereignisse, auf die dieses Trigger-Plugin reagieren kann', - empty: 'Keine Veranstaltungen verfügbar', - event: 'Veranstaltung', - events: 'Veranstaltungen', - actionNum: '{{num}} {{event}} ENTHALTEN', - item: { - parameters: '{{count}} Parameter', - noParameters: 'Keine Parameter', - }, - output: 'Ausgabe', - }, - node: { - status: { - warning: 'Trennen', - }, - }, -} - -export default translation diff --git a/web/i18n/de-DE/plugin.json b/web/i18n/de-DE/plugin.json new file mode 100644 index 0000000000..b33f7403c4 --- /dev/null +++ b/web/i18n/de-DE/plugin.json @@ -0,0 +1,323 @@ +{ + "category": { + "extensions": "Erweiterungen", + "bundles": "Bündel", + "agents": "Agenten-Strategien", + "models": "Modelle", + "all": "Alle", + "tools": "Werkzeuge", + "datasources": "Datenquellen", + "triggers": "Auslöser" + }, + "categorySingle": { + "extension": "Erweiterung", + "agent": "Agenten-Strategie", + "bundle": "Bündel", + "model": "Modell", + "tool": "Werkzeug", + "datasource": "Datenquelle", + "trigger": "Auslöser" + }, + "list": { + "source": { + "marketplace": "Installation aus dem Marketplace", + "github": "Installation von GitHub", + "local": "Installation aus lokaler Paketdatei" + }, + "notFound": "Keine Plugins gefunden", + "noInstalled": "Keine Plugins installiert" + }, + "source": { + "github": "GitHub (Englisch)", + "marketplace": "Marktplatz", + "local": "Lokale Paketdatei" + }, + "detailPanel": { + "categoryTip": { + "local": "Lokales Plugin", + "github": "Installiert von Github", + "marketplace": "Installiert aus dem Marketplace", + "debugging": "Debuggen-Plugin" + }, + "operation": { + "remove": "Entfernen", + "detail": "Einzelheiten", + "install": "Installieren", + "info": "Plugin-Informationen", + "checkUpdate": "Update prüfen", + "update": "Aktualisieren", + "viewDetail": "Im Detail sehen", + "back": "Zurück" + }, + "toolSelector": { + "paramsTip1": "Steuert LLM-Inferenzparameter.", + "settings": "BENUTZEREINSTELLUNGEN", + "uninstalledLink": "In Plugins verwalten", + "descriptionLabel": "Beschreibung des Werkzeugs", + "empty": "Klicken Sie auf die Schaltfläche \"+\", um Werkzeuge hinzuzufügen. Sie können mehrere Werkzeuge hinzufügen.", + "title": "Werkzeug \"Hinzufügen\"", + "paramsTip2": "Wenn \"Automatisch\" ausgeschaltet ist, wird der Standardwert verwendet.", + "unsupportedContent": "Die installierte Plug-in-Version bietet diese Aktion nicht.", + "unsupportedTitle": "Nicht unterstützte Aktion", + "descriptionPlaceholder": "Kurze Beschreibung des Zwecks des Werkzeugs, z. B. um die Temperatur für einen bestimmten Ort zu ermitteln.", + "auto": "Auto", + "params": "KONFIGURATION DER ARGUMENTATION", + "unsupportedContent2": "Klicken Sie hier, um die Version zu wechseln.", + "placeholder": "Wählen Sie ein Werkzeug aus...", + "uninstalledTitle": "Tool nicht installiert", + "toolLabel": "Werkzeug", + "uninstalledContent": "Dieses Plugin wird aus dem lokalen/GitHub-Repository installiert. Bitte nach der Installation verwenden.", + "toolSetting": "Werkzeugs Einstellungen", + "unsupportedMCPTool": "Die derzeit ausgewählte Agentenstrategie-Plugin-Version unterstützt keine MCP-Tools." + }, + "strategyNum": "{{num}} {{Strategie}} IINKLUSIVE", + "configureApp": "App konfigurieren", + "endpointDeleteContent": "Möchten Sie {{name}} entfernen?", + "endpointsEmpty": "Klicken Sie auf die Schaltfläche \"+\", um einen Endpunkt hinzuzufügen", + "disabled": "Arbeitsunfähig", + "endpointsDocLink": "Dokument anzeigen", + "endpointDisableTip": "Endpunkt deaktivieren", + "endpoints": "Endpunkte", + "actionNum": "{{num}} {{Aktion}} IINKLUSIVE", + "endpointModalTitle": "Endpunkt einrichten", + "endpointModalDesc": "Nach der Konfiguration können die Funktionen, die das Plugin über API-Endpunkte bereitstellt, verwendet werden.", + "configureTool": "Werkzeug konfigurieren", + "endpointsTip": "Dieses Plugin bietet bestimmte Funktionen über Endpunkte, und Sie können mehrere Endpunktsätze für den aktuellen Arbeitsbereich konfigurieren.", + "modelNum": "{{num}} ENTHALTENE MODELLE", + "configureModel": "Modell konfigurieren", + "endpointDisableContent": "Möchten Sie {{name}} deaktivieren?", + "endpointDeleteTip": "Endpunkt entfernen", + "serviceOk": "Service in Ordnung", + "switchVersion": "Version wechseln", + "deprecation": { + "reason": { + "noMaintainer": "kein Wartender", + "ownershipTransferred": "Eigentum übertragen", + "businessAdjustments": "Geschäftsanpassungen" + }, + "onlyReason": "Dieses Plugin wurde aufgrund von {{deprecatedReason}} abgelehnt und wird nicht länger aktualisiert.", + "fullMessage": "Dieses Plugin wurde aufgrund von {{deprecatedReason}} eingestellt und wird nicht mehr aktualisiert. Bitte verwenden Sie stattdessen {{-alternativePluginId}}.", + "noReason": "Dieses Plugin wurde eingestellt und wird nicht mehr aktualisiert." + } + }, + "debugInfo": { + "title": "Debuggen", + "viewDocs": "Dokumente anzeigen" + }, + "privilege": { + "everyone": "Jeder", + "title": "Plugin-Einstellungen", + "noone": "Niemand", + "admins": "Administratoren", + "whoCanDebug": "Wer kann Plugins debuggen?", + "whoCanInstall": "Wer kann Plugins installieren und verwalten?" + }, + "pluginInfoModal": { + "repository": "Aufbewahrungsort", + "title": "Plugin-Info", + "packageName": "Paket", + "release": "Loslassen" + }, + "action": { + "checkForUpdates": "Nach Updates suchen", + "pluginInfo": "Plugin-Info", + "usedInApps": "Dieses Plugin wird in {{num}} Apps verwendet.", + "delete": "Plugin entfernen", + "deleteContentRight": "Plugin?", + "deleteContentLeft": "Möchten Sie" + }, + "installModal": { + "labels": { + "repository": "Aufbewahrungsort", + "package": "Paket", + "version": "Version" + }, + "installFailed": "Installation fehlgeschlagen", + "installPlugin": "Plugin installieren", + "uploadFailed": "Upload fehlgeschlagen", + "install": "Installieren", + "installComplete": "Installation abgeschlossen", + "installing": "Installation...", + "installedSuccessfullyDesc": "Das Plugin wurde erfolgreich installiert.", + "installedSuccessfully": "Installation erfolgreich", + "installFailedDesc": "Die Installation des Plugins ist fehlgeschlagen.", + "pluginLoadError": "Fehler beim Laden des Plugins", + "close": "Schließen", + "pluginLoadErrorDesc": "Dieses Plugin wird nicht installiert", + "cancel": "Abbrechen", + "back": "Zurück", + "uploadingPackage": "Das Hochladen von {{packageName}}...", + "readyToInstallPackage": "Über die Installation des folgenden Plugins", + "readyToInstallPackages": "Über die Installation der folgenden {{num}} Plugins", + "fromTrustSource": "Bitte stellen Sie sicher, dass Sie nur Plugins aus einer vertrauenswürdigen Quelle installieren.", + "readyToInstall": "Über die Installation des folgenden Plugins", + "dropPluginToInstall": "Legen Sie das Plugin-Paket hier ab, um es zu installieren", + "next": "Nächster", + "installWarning": "Dieses Plugin darf nicht installiert werden." + }, + "installFromGitHub": { + "selectPackagePlaceholder": "Bitte wählen Sie ein Paket aus", + "gitHubRepo": "GitHub-Repository", + "uploadFailed": "Upload fehlgeschlagen", + "selectPackage": "Paket auswählen", + "installFailed": "Installation fehlgeschlagen", + "installNote": "Bitte stellen Sie sicher, dass Sie nur Plugins aus einer vertrauenswürdigen Quelle installieren.", + "selectVersionPlaceholder": "Bitte wählen Sie eine Version aus", + "updatePlugin": "Update-Plugin von GitHub", + "installPlugin": "Plugin von GitHub installieren", + "installedSuccessfully": "Installation erfolgreich", + "selectVersion": "Ausführung wählen" + }, + "upgrade": { + "usedInApps": "Wird in {{num}} Apps verwendet", + "description": "Über die Installation des folgenden Plugins", + "upgrading": "Installation...", + "successfulTitle": "Installation erfolgreich", + "upgrade": "Installieren", + "title": "Plugin installieren", + "close": "Schließen" + }, + "error": { + "inValidGitHubUrl": "Ungültige GitHub-URL. Bitte geben Sie eine gültige URL im Format ein: https://github.com/owner/repo", + "noReleasesFound": "Keine Veröffentlichungen gefunden. Bitte überprüfen Sie das GitHub-Repository oder die Eingabe-URL.", + "fetchReleasesError": "Freigaben können nicht abgerufen werden. Bitte versuchen Sie es später erneut." + }, + "marketplace": { + "sortOption": { + "newlyReleased": "Neu veröffentlicht", + "mostPopular": "Beliebteste", + "firstReleased": "Zuerst veröffentlicht", + "recentlyUpdated": "Kürzlich aktualisiert" + }, + "viewMore": "Mehr anzeigen", + "sortBy": "Sortieren nach", + "discover": "Entdecken", + "noPluginFound": "Kein Plugin gefunden", + "difyMarketplace": "Dify Marktplatz", + "moreFrom": "Mehr aus dem Marketplace", + "pluginsResult": "{{num}} Ergebnisse", + "empower": "Unterstützen Sie Ihre KI-Entwicklung", + "and": "und", + "partnerTip": "Von einem Dify-Partner verifiziert", + "verifiedTip": "Von Dify überprüft" + }, + "task": { + "clearAll": "Alle löschen", + "installingWithError": "Installation von {{installingLength}} Plugins, {{successLength}} erfolgreich, {{errorLength}} fehlgeschlagen", + "installingWithSuccess": "Installation von {{installingLength}} Plugins, {{successLength}} erfolgreich.", + "installedError": "{{errorLength}} Plugins konnten nicht installiert werden", + "installing": "Installation von {{installingLength}} Plugins, 0 erledigt.", + "installError": "{{errorLength}} Plugins konnten nicht installiert werden, klicken Sie hier, um sie anzusehen", + "installSuccess": "{{successLength}} plugins installed successfully", + "installed": "Installed", + "runningPlugins": "Installing Plugins", + "successPlugins": "Successfully Installed Plugins", + "errorPlugins": "Failed to Install Plugins" + }, + "allCategories": "Alle Kategorien", + "install": "{{num}} Installationen", + "installAction": "Installieren", + "from": "Von", + "fromMarketplace": "Aus dem Marketplace", + "search": "Suchen", + "searchCategories": "Kategorien durchsuchen", + "searchPlugins": "Plugins suchen", + "endpointsEnabled": "{{num}} Gruppen von Endpunkten aktiviert", + "searchInMarketplace": "Suche im Marketplace", + "searchTools": "Suchwerkzeuge...", + "findMoreInMarketplace": "Weitere Informationen finden Sie im Marketplace", + "installPlugin": "Plugin installieren", + "installFrom": "INSTALLIEREN VON", + "metadata": { + "title": "Plugins" + }, + "difyVersionNotCompatible": "Die aktuelle Dify-Version ist mit diesem Plugin nicht kompatibel, bitte aktualisieren Sie auf die erforderliche Mindestversion: {{minimalDifyVersion}}", + "requestAPlugin": "Ein Plugin anfordern", + "publishPlugins": "Plugins veröffentlichen", + "auth": { + "addOAuth": "OAuth hinzufügen", + "useOAuthAuth": "Verwenden Sie die OAuth-Authentifizierung", + "saveAndAuth": "Speichern und autorisieren", + "setDefault": "Als Standard festlegen", + "oauthClientSettings": "OAuth-Client-Einstellungen", + "saveOnly": "Nur speichern", + "authorizations": "Berechtigungen", + "authorization": "Befugnis", + "workspaceDefault": "Arbeitsbereich Standard", + "custom": "Benutzerdefiniert", + "default": "Standard", + "setupOAuth": "OAuth-Client einrichten", + "addApi": "API-Schlüssel hinzufügen", + "useOAuth": "Verwenden Sie OAuth", + "useApi": "Verwenden Sie den API-Schlüssel", + "oauthClient": "OAuth-Client", + "authorizationName": "Genehmigungsname", + "useApiAuth": "API-Schlüssel Autorisierungs-Konfiguration", + "clientInfo": "Da keine System-Client-Geheimnisse für diesen Tool-Anbieter gefunden wurden, ist eine manuelle Einrichtung erforderlich. Bitte verwenden Sie für redirect_uri", + "useApiAuthDesc": "Nachdem die Anmeldeinformationen konfiguriert wurden, können alle Mitglieder des Arbeitsbereichs dieses Tool beim Orchestrieren von Anwendungen verwenden.", + "authRemoved": "Die Authentifizierung wurde entfernt.", + "unavailable": "Nicht verfügbar", + "credentialUnavailable": "Anmeldeinformationen derzeit nicht verfügbar. Bitte kontaktieren Sie den Administrator.", + "customCredentialUnavailable": "Benutzerdefinierte Anmeldeinformationen derzeit nicht verfügbar", + "credentialUnavailableInButton": "Zugangsdaten nicht verfügbar", + "connectedWorkspace": "Vernetzter Arbeitsbereich", + "emptyAuth": "Bitte konfigurieren Sie die Authentifizierung" + }, + "deprecated": "Abgelehnt", + "autoUpdate": { + "strategy": { + "disabled": { + "description": "Plugins werden nicht automatisch aktualisiert", + "name": "Behindert" + }, + "fixOnly": { + "name": "Nur fixieren", + "selectedDescription": "Auto-Update nur für Patch-Versionen", + "description": "Automatische Aktualisierung nur für Patchversionen (z. B. 1.0.1 → 1.0.2). Kleinere Versionsänderungen lösen keine Aktualisierungen aus." + }, + "latest": { + "description": "Immer auf die neueste Version aktualisieren", + "selectedDescription": "Immer auf die neueste Version aktualisieren", + "name": "Neueste" + } + }, + "upgradeMode": { + "exclude": "Ausgewählte ausschließen", + "partial": "Nur ausgewählt", + "all": "Alle aktualisieren" + }, + "upgradeModePlaceholder": { + "exclude": "Ausgewählte Plugins werden nicht automatisch aktualisiert", + "partial": "Nur ausgewählte Plugins werden automatisch aktualisiert. Derzeit sind keine Plugins ausgewählt, daher werden keine Plugins automatisch aktualisiert." + }, + "operation": { + "clearAll": "Alles löschen", + "select": "Plugins auswählen" + }, + "pluginDowngradeWarning": { + "downgrade": "Trotzdem downgraden", + "title": "Plugin Downgrade", + "exclude": "Von der automatischen Aktualisierung ausschließen", + "description": "Die automatische Aktualisierung ist derzeit für dieses Plugin aktiviert. Ein Downgrade der Version kann dazu führen, dass Ihre Änderungen während des nächsten automatischen Updates überschrieben werden." + }, + "noPluginPlaceholder": { + "noInstalled": "Keine Plugins installiert", + "noFound": "Keine Plugins gefunden." + }, + "automaticUpdates": "Automatische Updates", + "updateTimeTitle": "Aktualisierungszeit", + "updateTime": "Aktualisierungszeit", + "excludeUpdate": "Die folgenden {{num}} Plugins werden nicht automatisch aktualisiert.", + "changeTimezone": "Um die Zeitzone zu ändern, gehen Sie zu Einstellungen ", + "nextUpdateTime": "Nächstes automatisches Update: {{time}}", + "partialUPdate": "Nur die folgenden {{num}} Plugins werden automatisch aktualisiert", + "specifyPluginsToUpdate": "Geben Sie die zu aktualisierenden Plugins an", + "updateSettings": "Einstellungen aktualisieren" + }, + "readmeInfo": { + "title": "LIESMICH", + "needHelpCheckReadme": "Brauchst du Hilfe? Sieh dir die README an.", + "noReadmeAvailable": "Keine README verfügbar", + "failedToFetch": "README konnte nicht abgerufen werden" + } +} diff --git a/web/i18n/de-DE/plugin.ts b/web/i18n/de-DE/plugin.ts deleted file mode 100644 index 50d42b3671..0000000000 --- a/web/i18n/de-DE/plugin.ts +++ /dev/null @@ -1,358 +0,0 @@ -const translation = { - category: { - extensions: 'Erweiterungen', - bundles: 'Bündel', - agents: 'Agenten-Strategien', - models: 'Modelle', - all: 'Alle', - tools: 'Werkzeuge', - datasources: 'Datenquellen', - triggers: 'Auslöser', - }, - categorySingle: { - extension: 'Erweiterung', - agent: 'Agenten-Strategie', - bundle: 'Bündel', - model: 'Modell', - tool: 'Werkzeug', - datasource: 'Datenquelle', - trigger: 'Auslöser', - }, - list: { - source: { - marketplace: 'Installation aus dem Marketplace', - github: 'Installation von GitHub', - local: 'Installation aus lokaler Paketdatei', - }, - notFound: 'Keine Plugins gefunden', - noInstalled: 'Keine Plugins installiert', - }, - source: { - github: 'GitHub (Englisch)', - marketplace: 'Marktplatz', - local: 'Lokale Paketdatei', - }, - detailPanel: { - categoryTip: { - local: 'Lokales Plugin', - github: 'Installiert von Github', - marketplace: 'Installiert aus dem Marketplace', - debugging: 'Debuggen-Plugin', - }, - operation: { - remove: 'Entfernen', - detail: 'Einzelheiten', - install: 'Installieren', - info: 'Plugin-Informationen', - checkUpdate: 'Update prüfen', - update: 'Aktualisieren', - viewDetail: 'Im Detail sehen', - back: 'Zurück', - }, - toolSelector: { - paramsTip1: 'Steuert LLM-Inferenzparameter.', - settings: 'BENUTZEREINSTELLUNGEN', - uninstalledLink: 'In Plugins verwalten', - descriptionLabel: 'Beschreibung des Werkzeugs', - empty: - 'Klicken Sie auf die Schaltfläche "+", um Werkzeuge hinzuzufügen. Sie können mehrere Werkzeuge hinzufügen.', - title: 'Werkzeug "Hinzufügen"', - paramsTip2: - 'Wenn "Automatisch" ausgeschaltet ist, wird der Standardwert verwendet.', - unsupportedContent: - 'Die installierte Plug-in-Version bietet diese Aktion nicht.', - unsupportedTitle: 'Nicht unterstützte Aktion', - descriptionPlaceholder: - 'Kurze Beschreibung des Zwecks des Werkzeugs, z. B. um die Temperatur für einen bestimmten Ort zu ermitteln.', - auto: 'Auto', - params: 'KONFIGURATION DER ARGUMENTATION', - unsupportedContent2: 'Klicken Sie hier, um die Version zu wechseln.', - placeholder: 'Wählen Sie ein Werkzeug aus...', - uninstalledTitle: 'Tool nicht installiert', - toolLabel: 'Werkzeug', - uninstalledContent: - 'Dieses Plugin wird aus dem lokalen/GitHub-Repository installiert. Bitte nach der Installation verwenden.', - toolSetting: 'Werkzeugs Einstellungen', - unsupportedMCPTool: - 'Die derzeit ausgewählte Agentenstrategie-Plugin-Version unterstützt keine MCP-Tools.', - }, - strategyNum: '{{num}} {{Strategie}} IINKLUSIVE', - configureApp: 'App konfigurieren', - endpointDeleteContent: 'Möchten Sie {{name}} entfernen?', - endpointsEmpty: - 'Klicken Sie auf die Schaltfläche "+", um einen Endpunkt hinzuzufügen', - disabled: 'Arbeitsunfähig', - endpointsDocLink: 'Dokument anzeigen', - endpointDisableTip: 'Endpunkt deaktivieren', - endpoints: 'Endpunkte', - actionNum: '{{num}} {{Aktion}} IINKLUSIVE', - endpointModalTitle: 'Endpunkt einrichten', - endpointModalDesc: - 'Nach der Konfiguration können die Funktionen, die das Plugin über API-Endpunkte bereitstellt, verwendet werden.', - configureTool: 'Werkzeug konfigurieren', - endpointsTip: - 'Dieses Plugin bietet bestimmte Funktionen über Endpunkte, und Sie können mehrere Endpunktsätze für den aktuellen Arbeitsbereich konfigurieren.', - modelNum: '{{num}} ENTHALTENE MODELLE', - configureModel: 'Modell konfigurieren', - endpointDisableContent: 'Möchten Sie {{name}} deaktivieren?', - endpointDeleteTip: 'Endpunkt entfernen', - serviceOk: 'Service in Ordnung', - switchVersion: 'Version wechseln', - deprecation: { - reason: { - noMaintainer: 'kein Wartender', - ownershipTransferred: 'Eigentum übertragen', - businessAdjustments: 'Geschäftsanpassungen', - }, - onlyReason: - 'Dieses Plugin wurde aufgrund von {{deprecatedReason}} abgelehnt und wird nicht länger aktualisiert.', - fullMessage: - 'Dieses Plugin wurde aufgrund von {{deprecatedReason}} eingestellt und wird nicht mehr aktualisiert. Bitte verwenden Sie stattdessen {{-alternativePluginId}}.', - noReason: - 'Dieses Plugin wurde eingestellt und wird nicht mehr aktualisiert.', - }, - }, - debugInfo: { - title: 'Debuggen', - viewDocs: 'Dokumente anzeigen', - }, - privilege: { - everyone: 'Jeder', - title: 'Plugin-Einstellungen', - noone: 'Niemand', - admins: 'Administratoren', - whoCanDebug: 'Wer kann Plugins debuggen?', - whoCanInstall: 'Wer kann Plugins installieren und verwalten?', - }, - pluginInfoModal: { - repository: 'Aufbewahrungsort', - title: 'Plugin-Info', - packageName: 'Paket', - release: 'Loslassen', - }, - action: { - checkForUpdates: 'Nach Updates suchen', - pluginInfo: 'Plugin-Info', - usedInApps: 'Dieses Plugin wird in {{num}} Apps verwendet.', - delete: 'Plugin entfernen', - deleteContentRight: 'Plugin?', - deleteContentLeft: 'Möchten Sie', - }, - installModal: { - labels: { - repository: 'Aufbewahrungsort', - package: 'Paket', - version: 'Version', - }, - installFailed: 'Installation fehlgeschlagen', - installPlugin: 'Plugin installieren', - uploadFailed: 'Upload fehlgeschlagen', - install: 'Installieren', - installComplete: 'Installation abgeschlossen', - installing: 'Installation...', - installedSuccessfullyDesc: 'Das Plugin wurde erfolgreich installiert.', - installedSuccessfully: 'Installation erfolgreich', - installFailedDesc: 'Die Installation des Plugins ist fehlgeschlagen.', - pluginLoadError: 'Fehler beim Laden des Plugins', - close: 'Schließen', - pluginLoadErrorDesc: 'Dieses Plugin wird nicht installiert', - cancel: 'Abbrechen', - back: 'Zurück', - uploadingPackage: 'Das Hochladen von {{packageName}}...', - readyToInstallPackage: 'Über die Installation des folgenden Plugins', - readyToInstallPackages: - 'Über die Installation der folgenden {{num}} Plugins', - fromTrustSource: - 'Bitte stellen Sie sicher, dass Sie nur Plugins aus einer vertrauenswürdigen Quelle installieren.', - readyToInstall: 'Über die Installation des folgenden Plugins', - dropPluginToInstall: - 'Legen Sie das Plugin-Paket hier ab, um es zu installieren', - next: 'Nächster', - installWarning: 'Dieses Plugin darf nicht installiert werden.', - }, - installFromGitHub: { - selectPackagePlaceholder: 'Bitte wählen Sie ein Paket aus', - gitHubRepo: 'GitHub-Repository', - uploadFailed: 'Upload fehlgeschlagen', - selectPackage: 'Paket auswählen', - installFailed: 'Installation fehlgeschlagen', - installNote: - 'Bitte stellen Sie sicher, dass Sie nur Plugins aus einer vertrauenswürdigen Quelle installieren.', - selectVersionPlaceholder: 'Bitte wählen Sie eine Version aus', - updatePlugin: 'Update-Plugin von GitHub', - installPlugin: 'Plugin von GitHub installieren', - installedSuccessfully: 'Installation erfolgreich', - selectVersion: 'Ausführung wählen', - }, - upgrade: { - usedInApps: 'Wird in {{num}} Apps verwendet', - description: 'Über die Installation des folgenden Plugins', - upgrading: 'Installation...', - successfulTitle: 'Installation erfolgreich', - upgrade: 'Installieren', - title: 'Plugin installieren', - close: 'Schließen', - }, - error: { - inValidGitHubUrl: - 'Ungültige GitHub-URL. Bitte geben Sie eine gültige URL im Format ein: https://github.com/owner/repo', - noReleasesFound: - 'Keine Veröffentlichungen gefunden. Bitte überprüfen Sie das GitHub-Repository oder die Eingabe-URL.', - fetchReleasesError: - 'Freigaben können nicht abgerufen werden. Bitte versuchen Sie es später erneut.', - }, - marketplace: { - sortOption: { - newlyReleased: 'Neu veröffentlicht', - mostPopular: 'Beliebteste', - firstReleased: 'Zuerst veröffentlicht', - recentlyUpdated: 'Kürzlich aktualisiert', - }, - viewMore: 'Mehr anzeigen', - sortBy: 'Sortieren nach', - discover: 'Entdecken', - noPluginFound: 'Kein Plugin gefunden', - difyMarketplace: 'Dify Marktplatz', - moreFrom: 'Mehr aus dem Marketplace', - pluginsResult: '{{num}} Ergebnisse', - empower: 'Unterstützen Sie Ihre KI-Entwicklung', - and: 'und', - partnerTip: 'Von einem Dify-Partner verifiziert', - verifiedTip: 'Von Dify überprüft', - }, - task: { - clearAll: 'Alle löschen', - installingWithError: - 'Installation von {{installingLength}} Plugins, {{successLength}} erfolgreich, {{errorLength}} fehlgeschlagen', - installingWithSuccess: - 'Installation von {{installingLength}} Plugins, {{successLength}} erfolgreich.', - installedError: '{{errorLength}} Plugins konnten nicht installiert werden', - installing: 'Installation von {{installingLength}} Plugins, 0 erledigt.', - installError: - '{{errorLength}} Plugins konnten nicht installiert werden, klicken Sie hier, um sie anzusehen', - installSuccess: '{{successLength}} plugins installed successfully', - installed: 'Installed', - runningPlugins: 'Installing Plugins', - successPlugins: 'Successfully Installed Plugins', - errorPlugins: 'Failed to Install Plugins', - }, - allCategories: 'Alle Kategorien', - install: '{{num}} Installationen', - installAction: 'Installieren', - from: 'Von', - fromMarketplace: 'Aus dem Marketplace', - search: 'Suchen', - searchCategories: 'Kategorien durchsuchen', - searchPlugins: 'Plugins suchen', - endpointsEnabled: '{{num}} Gruppen von Endpunkten aktiviert', - searchInMarketplace: 'Suche im Marketplace', - searchTools: 'Suchwerkzeuge...', - findMoreInMarketplace: 'Weitere Informationen finden Sie im Marketplace', - installPlugin: 'Plugin installieren', - installFrom: 'INSTALLIEREN VON', - metadata: { - title: 'Plugins', - }, - difyVersionNotCompatible: - 'Die aktuelle Dify-Version ist mit diesem Plugin nicht kompatibel, bitte aktualisieren Sie auf die erforderliche Mindestversion: {{minimalDifyVersion}}', - requestAPlugin: 'Ein Plugin anfordern', - publishPlugins: 'Plugins veröffentlichen', - auth: { - addOAuth: 'OAuth hinzufügen', - useOAuthAuth: 'Verwenden Sie die OAuth-Authentifizierung', - saveAndAuth: 'Speichern und autorisieren', - setDefault: 'Als Standard festlegen', - oauthClientSettings: 'OAuth-Client-Einstellungen', - saveOnly: 'Nur speichern', - authorizations: 'Berechtigungen', - authorization: 'Befugnis', - workspaceDefault: 'Arbeitsbereich Standard', - custom: 'Benutzerdefiniert', - default: 'Standard', - setupOAuth: 'OAuth-Client einrichten', - addApi: 'API-Schlüssel hinzufügen', - useOAuth: 'Verwenden Sie OAuth', - useApi: 'Verwenden Sie den API-Schlüssel', - oauthClient: 'OAuth-Client', - authorizationName: 'Genehmigungsname', - useApiAuth: 'API-Schlüssel Autorisierungs-Konfiguration', - clientInfo: - 'Da keine System-Client-Geheimnisse für diesen Tool-Anbieter gefunden wurden, ist eine manuelle Einrichtung erforderlich. Bitte verwenden Sie für redirect_uri', - useApiAuthDesc: - 'Nachdem die Anmeldeinformationen konfiguriert wurden, können alle Mitglieder des Arbeitsbereichs dieses Tool beim Orchestrieren von Anwendungen verwenden.', - authRemoved: 'Die Authentifizierung wurde entfernt.', - unavailable: 'Nicht verfügbar', - credentialUnavailable: - 'Anmeldeinformationen derzeit nicht verfügbar. Bitte kontaktieren Sie den Administrator.', - customCredentialUnavailable: - 'Benutzerdefinierte Anmeldeinformationen derzeit nicht verfügbar', - credentialUnavailableInButton: 'Zugangsdaten nicht verfügbar', - connectedWorkspace: 'Vernetzter Arbeitsbereich', - emptyAuth: 'Bitte konfigurieren Sie die Authentifizierung', - }, - deprecated: 'Abgelehnt', - autoUpdate: { - strategy: { - disabled: { - description: 'Plugins werden nicht automatisch aktualisiert', - name: 'Behindert', - }, - fixOnly: { - name: 'Nur fixieren', - selectedDescription: 'Auto-Update nur für Patch-Versionen', - description: - 'Automatische Aktualisierung nur für Patchversionen (z. B. 1.0.1 → 1.0.2). Kleinere Versionsänderungen lösen keine Aktualisierungen aus.', - }, - latest: { - description: 'Immer auf die neueste Version aktualisieren', - selectedDescription: 'Immer auf die neueste Version aktualisieren', - name: 'Neueste', - }, - }, - upgradeMode: { - exclude: 'Ausgewählte ausschließen', - partial: 'Nur ausgewählt', - all: 'Alle aktualisieren', - }, - upgradeModePlaceholder: { - exclude: 'Ausgewählte Plugins werden nicht automatisch aktualisiert', - partial: - 'Nur ausgewählte Plugins werden automatisch aktualisiert. Derzeit sind keine Plugins ausgewählt, daher werden keine Plugins automatisch aktualisiert.', - }, - operation: { - clearAll: 'Alles löschen', - select: 'Plugins auswählen', - }, - pluginDowngradeWarning: { - downgrade: 'Trotzdem downgraden', - title: 'Plugin Downgrade', - exclude: 'Von der automatischen Aktualisierung ausschließen', - description: - 'Die automatische Aktualisierung ist derzeit für dieses Plugin aktiviert. Ein Downgrade der Version kann dazu führen, dass Ihre Änderungen während des nächsten automatischen Updates überschrieben werden.', - }, - noPluginPlaceholder: { - noInstalled: 'Keine Plugins installiert', - noFound: 'Keine Plugins gefunden.', - }, - automaticUpdates: 'Automatische Updates', - updateTimeTitle: 'Aktualisierungszeit', - updateTime: 'Aktualisierungszeit', - excludeUpdate: - 'Die folgenden {{num}} Plugins werden nicht automatisch aktualisiert.', - changeTimezone: - 'Um die Zeitzone zu ändern, gehen Sie zu Einstellungen ', - nextUpdateTime: 'Nächstes automatisches Update: {{time}}', - partialUPdate: - 'Nur die folgenden {{num}} Plugins werden automatisch aktualisiert', - specifyPluginsToUpdate: 'Geben Sie die zu aktualisierenden Plugins an', - updateSettings: 'Einstellungen aktualisieren', - }, - readmeInfo: { - title: 'LIESMICH', - needHelpCheckReadme: 'Brauchst du Hilfe? Sieh dir die README an.', - noReadmeAvailable: 'Keine README verfügbar', - failedToFetch: 'README konnte nicht abgerufen werden', - }, -} - -export default translation diff --git a/web/i18n/de-DE/register.json b/web/i18n/de-DE/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/de-DE/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/de-DE/register.ts b/web/i18n/de-DE/register.ts deleted file mode 100644 index 928649474b..0000000000 --- a/web/i18n/de-DE/register.ts +++ /dev/null @@ -1,4 +0,0 @@ -const translation = { -} - -export default translation diff --git a/web/i18n/de-DE/run-log.json b/web/i18n/de-DE/run-log.json new file mode 100644 index 0000000000..831caeb375 --- /dev/null +++ b/web/i18n/de-DE/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "EINGABE", + "result": "ERGEBNIS", + "detail": "DETAILS", + "tracing": "NACHVERFOLGUNG", + "resultPanel": { + "status": "STATUS", + "time": "VERSTRICHENE ZEIT", + "tokens": "GESAMTZEICHEN" + }, + "meta": { + "title": "METADATEN", + "status": "Status", + "version": "Version", + "executor": "Ausführender", + "startTime": "Startzeit", + "time": "Verstrichene Zeit", + "tokens": "Gesamtzeichen", + "steps": "Ausführungsschritte" + }, + "resultEmpty": { + "title": "Dieser Lauf gibt nur das JSON-Format aus", + "tipLeft": "Bitte gehen Sie zum ", + "tipRight": "ansehen.", + "link": "Gruppe Detail" + }, + "actionLogs": "Aktionsprotokolle", + "circularInvocationTip": "Es gibt einen zirkulären Aufruf von Werkzeugen/Knoten im aktuellen Workflow." +} diff --git a/web/i18n/de-DE/run-log.ts b/web/i18n/de-DE/run-log.ts deleted file mode 100644 index 873054973f..0000000000 --- a/web/i18n/de-DE/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -const translation = { - input: 'EINGABE', - result: 'ERGEBNIS', - detail: 'DETAILS', - tracing: 'NACHVERFOLGUNG', - resultPanel: { - status: 'STATUS', - time: 'VERSTRICHENE ZEIT', - tokens: 'GESAMTZEICHEN', - }, - meta: { - title: 'METADATEN', - status: 'Status', - version: 'Version', - executor: 'Ausführender', - startTime: 'Startzeit', - time: 'Verstrichene Zeit', - tokens: 'Gesamtzeichen', - steps: 'Ausführungsschritte', - }, - resultEmpty: { - title: 'Dieser Lauf gibt nur das JSON-Format aus', - tipLeft: 'Bitte gehen Sie zum ', - tipRight: 'ansehen.', - link: 'Gruppe Detail', - }, - actionLogs: 'Aktionsprotokolle', - circularInvocationTip: 'Es gibt einen zirkulären Aufruf von Werkzeugen/Knoten im aktuellen Workflow.', -} - -export default translation diff --git a/web/i18n/de-DE/share.json b/web/i18n/de-DE/share.json new file mode 100644 index 0000000000..a2291455e6 --- /dev/null +++ b/web/i18n/de-DE/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "", + "appUnavailable": "App ist nicht verfügbar", + "appUnknownError": "App ist nicht verfügbar" + }, + "chat": { + "newChat": "Neuer Chat", + "pinnedTitle": "Angeheftet", + "unpinnedTitle": "Chats", + "newChatDefaultName": "Neues Gespräch", + "resetChat": "Gespräch zurücksetzen", + "poweredBy": "Bereitgestellt von", + "prompt": "Aufforderung", + "privatePromptConfigTitle": "Konversationseinstellungen", + "publicPromptConfigTitle": "Anfängliche Aufforderung", + "configStatusDes": "Vor dem Start können Sie die Konversationseinstellungen ändern", + "configDisabled": "Voreinstellungen der vorherigen Sitzung wurden für diese Sitzung verwendet.", + "startChat": "Chat starten", + "privacyPolicyLeft": "Bitte lesen Sie die ", + "privacyPolicyMiddle": "Datenschutzrichtlinien", + "privacyPolicyRight": ", die vom App-Entwickler bereitgestellt wurden.", + "deleteConversation": { + "title": "Konversation löschen", + "content": "Sind Sie sicher, dass Sie diese Konversation löschen möchten?" + }, + "tryToSolve": "Versuchen zu lösen", + "temporarySystemIssue": "Entschuldigung, vorübergehendes Systemproblem.", + "expand": "Erweitern", + "collapse": "Reduzieren", + "chatSettingsTitle": "Neues Chat-Setup", + "newChatTip": "Bereits in einem neuen Chat", + "viewChatSettings": "Chateinstellungen anzeigen", + "chatFormTip": "Chat-Einstellungen können nach Beginn des Chats nicht mehr geändert werden." + }, + "generation": { + "tabs": { + "create": "Einmal ausführen", + "batch": "Stapelverarbeitung", + "saved": "Gespeichert" + }, + "savedNoData": { + "title": "Sie haben noch kein Ergebnis gespeichert!", + "description": "Beginnen Sie mit der Inhaltserstellung und finden Sie hier Ihre gespeicherten Ergebnisse.", + "startCreateContent": "Beginnen Sie mit der Inhaltserstellung" + }, + "title": "KI-Vervollständigung", + "queryTitle": "Abfrageinhalt", + "completionResult": "Vervollständigungsergebnis", + "queryPlaceholder": "Schreiben Sie Ihren Abfrageinhalt...", + "run": "Ausführen", + "copy": "Kopieren", + "resultTitle": "KI-Vervollständigung", + "noData": "KI wird Ihnen hier geben, was Sie möchten.", + "csvUploadTitle": "Ziehen Sie Ihre CSV-Datei hierher oder ", + "browse": "durchsuchen", + "csvStructureTitle": "Die CSV-Datei muss der folgenden Struktur entsprechen:", + "downloadTemplate": "Laden Sie die Vorlage hier herunter", + "field": "Feld", + "batchFailed": { + "info": "{{num}} fehlgeschlagene Ausführungen", + "retry": "Wiederholen", + "outputPlaceholder": "Kein Ausgabeanhalt" + }, + "errorMsg": { + "empty": "Bitte geben Sie Inhalte in die hochgeladene Datei ein.", + "fileStructNotMatch": "Die hochgeladene CSV-Datei entspricht nicht der Struktur.", + "emptyLine": "Zeile {{rowIndex}} ist leer", + "invalidLine": "Zeile {{rowIndex}}: {{varName}} Wert darf nicht leer sein", + "moreThanMaxLengthLine": "Zeile {{rowIndex}}: {{varName}} Wert darf nicht mehr als {{maxLength}} Zeichen sein", + "atLeastOne": "Bitte geben Sie mindestens eine Zeile in die hochgeladene Datei ein." + }, + "execution": "Ausführen", + "executions": "{{num}} Ausführungen", + "stopRun": "Ausführung stoppen" + }, + "login": { + "backToHome": "Zurück zur Startseite" + } +} diff --git a/web/i18n/de-DE/share.ts b/web/i18n/de-DE/share.ts deleted file mode 100644 index c1d7ed946a..0000000000 --- a/web/i18n/de-DE/share.ts +++ /dev/null @@ -1,86 +0,0 @@ -const translation = { - common: { - welcome: '', - appUnavailable: 'App ist nicht verfügbar', - appUnknownError: 'App ist nicht verfügbar', - }, - chat: { - newChat: 'Neuer Chat', - pinnedTitle: 'Angeheftet', - unpinnedTitle: 'Chats', - newChatDefaultName: 'Neues Gespräch', - resetChat: 'Gespräch zurücksetzen', - poweredBy: 'Bereitgestellt von', - prompt: 'Aufforderung', - privatePromptConfigTitle: 'Konversationseinstellungen', - publicPromptConfigTitle: 'Anfängliche Aufforderung', - configStatusDes: 'Vor dem Start können Sie die Konversationseinstellungen ändern', - configDisabled: - 'Voreinstellungen der vorherigen Sitzung wurden für diese Sitzung verwendet.', - startChat: 'Chat starten', - privacyPolicyLeft: - 'Bitte lesen Sie die ', - privacyPolicyMiddle: - 'Datenschutzrichtlinien', - privacyPolicyRight: - ', die vom App-Entwickler bereitgestellt wurden.', - deleteConversation: { - title: 'Konversation löschen', - content: 'Sind Sie sicher, dass Sie diese Konversation löschen möchten?', - }, - tryToSolve: 'Versuchen zu lösen', - temporarySystemIssue: 'Entschuldigung, vorübergehendes Systemproblem.', - expand: 'Erweitern', - collapse: 'Reduzieren', - chatSettingsTitle: 'Neues Chat-Setup', - newChatTip: 'Bereits in einem neuen Chat', - viewChatSettings: 'Chateinstellungen anzeigen', - chatFormTip: 'Chat-Einstellungen können nach Beginn des Chats nicht mehr geändert werden.', - }, - generation: { - tabs: { - create: 'Einmal ausführen', - batch: 'Stapelverarbeitung', - saved: 'Gespeichert', - }, - savedNoData: { - title: 'Sie haben noch kein Ergebnis gespeichert!', - description: 'Beginnen Sie mit der Inhaltserstellung und finden Sie hier Ihre gespeicherten Ergebnisse.', - startCreateContent: 'Beginnen Sie mit der Inhaltserstellung', - }, - title: 'KI-Vervollständigung', - queryTitle: 'Abfrageinhalt', - completionResult: 'Vervollständigungsergebnis', - queryPlaceholder: 'Schreiben Sie Ihren Abfrageinhalt...', - run: 'Ausführen', - copy: 'Kopieren', - resultTitle: 'KI-Vervollständigung', - noData: 'KI wird Ihnen hier geben, was Sie möchten.', - csvUploadTitle: 'Ziehen Sie Ihre CSV-Datei hierher oder ', - browse: 'durchsuchen', - csvStructureTitle: 'Die CSV-Datei muss der folgenden Struktur entsprechen:', - downloadTemplate: 'Laden Sie die Vorlage hier herunter', - field: 'Feld', - batchFailed: { - info: '{{num}} fehlgeschlagene Ausführungen', - retry: 'Wiederholen', - outputPlaceholder: 'Kein Ausgabeanhalt', - }, - errorMsg: { - empty: 'Bitte geben Sie Inhalte in die hochgeladene Datei ein.', - fileStructNotMatch: 'Die hochgeladene CSV-Datei entspricht nicht der Struktur.', - emptyLine: 'Zeile {{rowIndex}} ist leer', - invalidLine: 'Zeile {{rowIndex}}: {{varName}} Wert darf nicht leer sein', - moreThanMaxLengthLine: 'Zeile {{rowIndex}}: {{varName}} Wert darf nicht mehr als {{maxLength}} Zeichen sein', - atLeastOne: 'Bitte geben Sie mindestens eine Zeile in die hochgeladene Datei ein.', - }, - execution: 'Ausführen', - executions: '{{num}} Ausführungen', - stopRun: 'Ausführung stoppen', - }, - login: { - backToHome: 'Zurück zur Startseite', - }, -} - -export default translation diff --git a/web/i18n/de-DE/time.json b/web/i18n/de-DE/time.json new file mode 100644 index 0000000000..ca840c5f88 --- /dev/null +++ b/web/i18n/de-DE/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Sat": "Sat", + "Fri": "Freitag", + "Thu": "Donnerstag", + "Tue": "Tue", + "Sun": "Sonne", + "Mon": "Mon", + "Wed": "Mittwoch" + }, + "months": { + "August": "August", + "March": "März", + "January": "Januar", + "June": "Juni", + "July": "Juli", + "November": "November", + "September": "September", + "April": "April", + "February": "Februar", + "May": "Mai", + "December": "Dezember", + "October": "Oktober" + }, + "operation": { + "pickDate": "Datum auswählen", + "ok": "OK", + "cancel": "Stornieren", + "now": "Jetzt" + }, + "title": { + "pickTime": "Wähle Zeit" + }, + "defaultPlaceholder": "Wähle eine Zeit...", + "dateFormats": { + "displayWithTime": "MMMM D, YYYY hh:mm A", + "output": "YYYY-MM-DD", + "display": "MMMM D, YYYY", + "input": "YYYY-MM-DD", + "outputWithTime": "YYYY-MM-DDTHH:mm:ss.SSSZ" + } +} diff --git a/web/i18n/de-DE/time.ts b/web/i18n/de-DE/time.ts deleted file mode 100644 index 8e443881ef..0000000000 --- a/web/i18n/de-DE/time.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - daysInWeek: { - Sat: 'Sat', - Fri: 'Freitag', - Thu: 'Donnerstag', - Tue: 'Tue', - Sun: 'Sonne', - Mon: 'Mon', - Wed: 'Mittwoch', - }, - months: { - August: 'August', - March: 'März', - January: 'Januar', - June: 'Juni', - July: 'Juli', - November: 'November', - September: 'September', - April: 'April', - February: 'Februar', - May: 'Mai', - December: 'Dezember', - October: 'Oktober', - }, - operation: { - pickDate: 'Datum auswählen', - ok: 'OK', - cancel: 'Stornieren', - now: 'Jetzt', - }, - title: { - pickTime: 'Wähle Zeit', - }, - defaultPlaceholder: 'Wähle eine Zeit...', - dateFormats: { - displayWithTime: 'MMMM D, YYYY hh:mm A', - output: 'YYYY-MM-DD', - display: 'MMMM D, YYYY', - input: 'YYYY-MM-DD', - outputWithTime: 'YYYY-MM-DDTHH:mm:ss.SSSZ', - }, -} - -export default translation diff --git a/web/i18n/de-DE/tools.json b/web/i18n/de-DE/tools.json new file mode 100644 index 0000000000..bc5450a27b --- /dev/null +++ b/web/i18n/de-DE/tools.json @@ -0,0 +1,262 @@ +{ + "title": "Werkzeuge", + "createCustomTool": "Eigenes Werkzeug erstellen", + "type": { + "builtIn": "Integriert", + "custom": "Benutzerdefiniert", + "workflow": "Arbeitsablauf" + }, + "contribute": { + "line1": "Ich interessiere mich dafür, ", + "line2": "Werkzeuge zu Dify beizutragen.", + "viewGuide": "Leitfaden anzeigen" + }, + "author": "Von", + "auth": { + "authorized": "Autorisiert", + "setup": "Autorisierung einrichten, um zu nutzen", + "setupModalTitle": "Autorisierung einrichten", + "setupModalTitleDescription": "Nach der Konfiguration der Anmeldeinformationen können alle Mitglieder im Arbeitsbereich dieses Werkzeug beim Orchestrieren von Anwendungen nutzen." + }, + "includeToolNum": "{{num}} Werkzeuge inkludiert", + "createTool": { + "title": "Eigenes Werkzeug erstellen", + "editAction": "Konfigurieren", + "editTitle": "Eigenes Werkzeug bearbeiten", + "name": "Name", + "toolNamePlaceHolder": "Geben Sie den Werkzeugnamen ein", + "schema": "Schema", + "schemaPlaceHolder": "Geben Sie hier Ihr OpenAPI-Schema ein", + "viewSchemaSpec": "Die OpenAPI-Swagger-Spezifikation anzeigen", + "importFromUrl": "Von URL importieren", + "importFromUrlPlaceHolder": "https://...", + "urlError": "Bitte geben Sie eine gültige URL ein", + "examples": "Beispiele", + "exampleOptions": { + "json": "Wetter(JSON)", + "yaml": "Pet Store(YAML)", + "blankTemplate": "Leere Vorlage" + }, + "availableTools": { + "title": "Verfügbare Werkzeuge", + "name": "Name", + "description": "Beschreibung", + "method": "Methode", + "path": "Pfad", + "action": "Aktionen", + "test": "Test" + }, + "authMethod": { + "title": "Autorisierungsmethode", + "type": "Autorisierungstyp", + "keyTooltip": "Http Header Key, Sie können es bei \"Authorization\" belassen, wenn Sie nicht wissen, was es ist, oder auf einen benutzerdefinierten Wert setzen", + "types": { + "none": "Keine", + "apiKeyPlaceholder": "HTTP-Headername für API-Key", + "apiValuePlaceholder": "API-Key eingeben", + "api_key_header": "Kopfzeile", + "queryParamPlaceholder": "Abfrageparametername für den API-Schlüssel", + "api_key_query": "Abfrageparameter" + }, + "key": "Schlüssel", + "value": "Wert", + "queryParam": "Abfrageparameter", + "queryParamTooltip": "Der Name des API-Schlüssel-Abfrageparameters, der übergeben werden soll, z. B. \"key\" in \"https://example.com/test?key=API_KEY\"." + }, + "authHeaderPrefix": { + "title": "Auth-Typ", + "types": { + "basic": "Basic", + "bearer": "Bearer", + "custom": "Benutzerdefiniert" + } + }, + "privacyPolicy": "Datenschutzrichtlinie", + "privacyPolicyPlaceholder": "Bitte Datenschutzrichtlinie eingeben", + "customDisclaimer": "Benutzer Haftungsausschluss", + "customDisclaimerPlaceholder": "Bitte benutzerdefinierten Haftungsausschluss eingeben", + "deleteToolConfirmTitle": "Löschen Sie dieses Werkzeug?", + "deleteToolConfirmContent": "Das Löschen des Werkzeugs ist irreversibel. Benutzer können Ihr Werkzeug nicht mehr verwenden.", + "toolInput": { + "description": "Beschreibung", + "methodParameterTip": "LLM-Füllungen während der Inferenz", + "method": "Methode", + "methodParameter": "Parameter", + "label": "Schilder", + "required": "Erforderlich", + "methodSetting": "Einstellung", + "name": "Name", + "title": "Werkzeug-Eingabe", + "methodSettingTip": "Der Benutzer füllt die Werkzeugkonfiguration aus", + "descriptionPlaceholder": "Beschreibung der Bedeutung des Parameters", + "labelPlaceholder": "Tags auswählen(optional)" + }, + "description": "Beschreibung", + "confirmTip": "Apps, die dieses Tool verwenden, sind davon betroffen", + "nameForToolCallTip": "Unterstützt nur Zahlen, Buchstaben und Unterstriche.", + "nameForToolCall": "Name des Werkzeugaufrufs", + "confirmTitle": "Bestätigen, um zu speichern?", + "nameForToolCallPlaceHolder": "Wird für die Maschinenerkennung verwendet, z. B. getCurrentWeather, list_pets", + "descriptionPlaceholder": "Kurze Beschreibung des Zwecks des Werkzeugs, z. B. um die Temperatur für einen bestimmten Ort zu ermitteln.", + "toolOutput": { + "title": "Werkzeugausgabe", + "name": "Name", + "reserved": "Reserviert", + "reservedParameterDuplicateTip": "Text, JSON und Dateien sind reservierte Variablen. Variablen mit diesen Namen dürfen im Ausgabeschema nicht erscheinen.", + "description": "Beschreibung" + } + }, + "test": { + "title": "Test", + "parametersValue": "Parameter & Wert", + "parameters": "Parameter", + "value": "Wert", + "testResult": "Testergebnisse", + "testResultPlaceholder": "Testergebnis wird hier angezeigt" + }, + "thought": { + "using": "Nutzung", + "used": "Genutzt", + "requestTitle": "Anfrage an", + "responseTitle": "Antwort von" + }, + "setBuiltInTools": { + "info": "Info", + "setting": "Einstellung", + "toolDescription": "Werkzeugbeschreibung", + "parameters": "Parameter", + "string": "Zeichenkette", + "number": "Nummer", + "required": "Erforderlich", + "infoAndSetting": "Info & Einstellungen", + "file": "Datei" + }, + "noCustomTool": { + "title": "Keine benutzerdefinierten Werkzeuge!", + "content": "Fügen Sie hier Ihre benutzerdefinierten Werkzeuge hinzu und verwalten Sie sie, um KI-Apps zu erstellen.", + "createTool": "Werkzeug erstellen" + }, + "noSearchRes": { + "title": "Leider keine Ergebnisse!", + "content": "Wir konnten keine Werkzeuge finden, die Ihrer Suche entsprechen.", + "reset": "Suche zurücksetzen" + }, + "builtInPromptTitle": "Aufforderung", + "toolRemoved": "Werkzeug entfernt", + "notAuthorized": "Werkzeug nicht autorisiert", + "howToGet": "Wie erhält man", + "addToolModal": { + "type": "Art", + "category": "Kategorie", + "added": "zugefügt", + "custom": { + "title": "Kein benutzerdefiniertes Werkzeug verfügbar", + "tip": "Benutzerdefiniertes Werkzeug erstellen" + }, + "workflow": { + "title": "Kein Workflow-Werkzeug verfügbar", + "tip": "Veröffentlichen Sie Workflows als Werkzeuge im Studio" + }, + "mcp": { + "title": "Kein MCP-Werkzeug verfügbar", + "tip": "Einen MCP-Server hinzufügen" + }, + "agent": { + "title": "Keine Agentenstrategie verfügbar" + } + }, + "toolNameUsageTip": "Name des Tool-Aufrufs für die Argumentation und Aufforderung des Agenten", + "customToolTip": "Erfahren Sie mehr über benutzerdefinierte Dify-Tools", + "openInStudio": "In Studio öffnen", + "noTools": "Keine Werkzeuge gefunden", + "copyToolName": "Name kopieren", + "mcp": { + "create": { + "cardTitle": "MCP-Server hinzufügen (HTTP)", + "cardLink": "Mehr über MCP-Server-Integration erfahren" + }, + "noConfigured": "Nicht konfigurierter Server", + "updateTime": "Aktualisiert", + "toolsCount": "{{count}} Tools", + "noTools": "Keine Tools verfügbar", + "modal": { + "title": "MCP-Server hinzufügen (HTTP)", + "editTitle": "MCP-Server bearbeiten (HTTP)", + "name": "Name & Symbol", + "namePlaceholder": "Benennen Sie Ihren MCP-Server", + "serverUrl": "Server-URL", + "serverUrlPlaceholder": "URL zum Server-Endpunkt", + "serverUrlWarning": "Das Ändern der Serveradresse kann Anwendungen unterbrechen, die von diesem Server abhängen", + "serverIdentifier": "Serverkennung", + "serverIdentifierTip": "Eindeutige Kennung für den MCP-Server im Arbeitsbereich. Nur Kleinbuchstaben, Zahlen, Unterstriche und Bindestriche. Maximal 24 Zeichen.", + "serverIdentifierPlaceholder": "Eindeutige Kennung, z.B. mein-mcp-server", + "serverIdentifierWarning": "Nach einer ID-Änderung wird der Server von vorhandenen Apps nicht erkannt", + "cancel": "Abbrechen", + "save": "Speichern", + "confirm": "Hinzufügen & Autorisieren", + "sseReadTimeout": "SSE-Lesezeitüberschreitung", + "timeout": "Zeitüberschreitung", + "headers": "Kopfzeilen", + "timeoutPlaceholder": "dreißig", + "headerKeyPlaceholder": "z.B., Autorisierung", + "addHeader": "Kopfzeile hinzufügen", + "headerValuePlaceholder": "z.B., Träger Token123", + "headerValue": "Header-Wert", + "headerKey": "Kopfzeilenname", + "noHeaders": "Keine benutzerdefinierten Header konfiguriert", + "maskedHeadersTip": "Headerwerte sind zum Schutz maskiert. Änderungen werden die tatsächlichen Werte aktualisieren.", + "headersTip": "Zusätzliche HTTP-Header, die mit MCP-Serveranfragen gesendet werden sollen", + "clientSecret": "Client-Geheimnis", + "clientSecretPlaceholder": "Client-Geheimnis", + "clientID": "Kunden-ID", + "authentication": "Authentifizierung", + "useDynamicClientRegistration": "Dynamische Client-Registrierung verwenden", + "configurations": "Konfigurationen", + "redirectUrlWarning": "Bitte konfigurieren Sie Ihre OAuth-Umleitungs-URL wie folgt:" + }, + "delete": "MCP-Server entfernen", + "deleteConfirmTitle": "Möchten Sie {{mcp}} entfernen?", + "operation": { + "edit": "Bearbeiten", + "remove": "Entfernen" + }, + "authorize": "Autorisieren", + "authorizing": "Wird autorisiert...", + "authorizingRequired": "Autorisierung erforderlich", + "authorizeTip": "Nach der Autorisierung werden Tools hier angezeigt.", + "update": "Aktualisieren", + "updating": "Wird aktualisiert", + "gettingTools": "Tools werden abgerufen...", + "updateTools": "Tools werden aktualisiert...", + "toolsEmpty": "Tools nicht geladen", + "getTools": "Tools abrufen", + "toolUpdateConfirmTitle": "Tool-Liste aktualisieren", + "toolUpdateConfirmContent": "Das Aktualisieren der Tool-Liste kann bestehende Apps beeinflussen. Fortfahren?", + "toolsNum": "{{count}} Tools enthalten", + "onlyTool": "1 Tool enthalten", + "identifier": "Serverkennung (Zum Kopieren klicken)", + "server": { + "title": "MCP-Server", + "url": "Server-URL", + "reGen": "Server-URL neu generieren?", + "addDescription": "Beschreibung hinzufügen", + "edit": "Beschreibung bearbeiten", + "modal": { + "addTitle": "Beschreibung hinzufügen, um MCP-Server zu aktivieren", + "editTitle": "Beschreibung bearbeiten", + "description": "Beschreibung", + "descriptionPlaceholder": "Erklären Sie, was dieses Tool tut und wie es vom LLM verwendet werden soll", + "parameters": "Parameter", + "parametersTip": "Fügen Sie Beschreibungen für jeden Parameter hinzu, um dem LLM Zweck und Einschränkungen zu verdeutlichen.", + "parametersPlaceholder": "Zweck und Einschränkungen des Parameters", + "confirm": "MCP-Server aktivieren" + }, + "publishTip": "App nicht veröffentlicht. Bitte zuerst die App veröffentlichen." + }, + "toolItem": { + "parameters": "Parameter", + "noDescription": "Keine Beschreibung" + } + }, + "allTools": "Alle Werkzeuge" +} diff --git a/web/i18n/de-DE/tools.ts b/web/i18n/de-DE/tools.ts deleted file mode 100644 index fc498462cb..0000000000 --- a/web/i18n/de-DE/tools.ts +++ /dev/null @@ -1,264 +0,0 @@ -const translation = { - title: 'Werkzeuge', - createCustomTool: 'Eigenes Werkzeug erstellen', - type: { - builtIn: 'Integriert', - custom: 'Benutzerdefiniert', - workflow: 'Arbeitsablauf', - }, - contribute: { - line1: 'Ich interessiere mich dafür, ', - line2: 'Werkzeuge zu Dify beizutragen.', - viewGuide: 'Leitfaden anzeigen', - }, - author: 'Von', - auth: { - authorized: 'Autorisiert', - setup: 'Autorisierung einrichten, um zu nutzen', - setupModalTitle: 'Autorisierung einrichten', - setupModalTitleDescription: 'Nach der Konfiguration der Anmeldeinformationen können alle Mitglieder im Arbeitsbereich dieses Werkzeug beim Orchestrieren von Anwendungen nutzen.', - }, - includeToolNum: '{{num}} Werkzeuge inkludiert', - createTool: { - title: 'Eigenes Werkzeug erstellen', - editAction: 'Konfigurieren', - editTitle: 'Eigenes Werkzeug bearbeiten', - name: 'Name', - toolNamePlaceHolder: 'Geben Sie den Werkzeugnamen ein', - schema: 'Schema', - schemaPlaceHolder: 'Geben Sie hier Ihr OpenAPI-Schema ein', - viewSchemaSpec: 'Die OpenAPI-Swagger-Spezifikation anzeigen', - importFromUrl: 'Von URL importieren', - importFromUrlPlaceHolder: 'https://...', - urlError: 'Bitte geben Sie eine gültige URL ein', - examples: 'Beispiele', - exampleOptions: { - json: 'Wetter(JSON)', - yaml: 'Pet Store(YAML)', - blankTemplate: 'Leere Vorlage', - }, - availableTools: { - title: 'Verfügbare Werkzeuge', - name: 'Name', - description: 'Beschreibung', - method: 'Methode', - path: 'Pfad', - action: 'Aktionen', - test: 'Test', - }, - authMethod: { - title: 'Autorisierungsmethode', - type: 'Autorisierungstyp', - keyTooltip: 'Http Header Key, Sie können es bei "Authorization" belassen, wenn Sie nicht wissen, was es ist, oder auf einen benutzerdefinierten Wert setzen', - types: { - none: 'Keine', - apiKeyPlaceholder: 'HTTP-Headername für API-Key', - apiValuePlaceholder: 'API-Key eingeben', - api_key_header: 'Kopfzeile', - queryParamPlaceholder: 'Abfrageparametername für den API-Schlüssel', - api_key_query: 'Abfrageparameter', - }, - key: 'Schlüssel', - value: 'Wert', - queryParam: 'Abfrageparameter', - queryParamTooltip: 'Der Name des API-Schlüssel-Abfrageparameters, der übergeben werden soll, z. B. "key" in "https://example.com/test?key=API_KEY".', - }, - authHeaderPrefix: { - title: 'Auth-Typ', - types: { - basic: 'Basic', - bearer: 'Bearer', - custom: 'Benutzerdefiniert', - }, - }, - privacyPolicy: 'Datenschutzrichtlinie', - privacyPolicyPlaceholder: 'Bitte Datenschutzrichtlinie eingeben', - customDisclaimer: 'Benutzer Haftungsausschluss', - customDisclaimerPlaceholder: 'Bitte benutzerdefinierten Haftungsausschluss eingeben', - deleteToolConfirmTitle: 'Löschen Sie dieses Werkzeug?', - deleteToolConfirmContent: 'Das Löschen des Werkzeugs ist irreversibel. Benutzer können Ihr Werkzeug nicht mehr verwenden.', - toolInput: { - description: 'Beschreibung', - methodParameterTip: 'LLM-Füllungen während der Inferenz', - method: 'Methode', - methodParameter: 'Parameter', - label: 'Schilder', - required: 'Erforderlich', - methodSetting: 'Einstellung', - name: 'Name', - title: 'Werkzeug-Eingabe', - methodSettingTip: 'Der Benutzer füllt die Werkzeugkonfiguration aus', - descriptionPlaceholder: 'Beschreibung der Bedeutung des Parameters', - labelPlaceholder: 'Tags auswählen(optional)', - }, - description: 'Beschreibung', - confirmTip: 'Apps, die dieses Tool verwenden, sind davon betroffen', - nameForToolCallTip: 'Unterstützt nur Zahlen, Buchstaben und Unterstriche.', - nameForToolCall: 'Name des Werkzeugaufrufs', - confirmTitle: 'Bestätigen, um zu speichern?', - nameForToolCallPlaceHolder: 'Wird für die Maschinenerkennung verwendet, z. B. getCurrentWeather, list_pets', - descriptionPlaceholder: 'Kurze Beschreibung des Zwecks des Werkzeugs, z. B. um die Temperatur für einen bestimmten Ort zu ermitteln.', - toolOutput: { - title: 'Werkzeugausgabe', - name: 'Name', - reserved: 'Reserviert', - reservedParameterDuplicateTip: 'Text, JSON und Dateien sind reservierte Variablen. Variablen mit diesen Namen dürfen im Ausgabeschema nicht erscheinen.', - description: 'Beschreibung', - }, - }, - test: { - title: 'Test', - parametersValue: 'Parameter & Wert', - parameters: 'Parameter', - value: 'Wert', - testResult: 'Testergebnisse', - testResultPlaceholder: 'Testergebnis wird hier angezeigt', - }, - thought: { - using: 'Nutzung', - used: 'Genutzt', - requestTitle: 'Anfrage an', - responseTitle: 'Antwort von', - }, - setBuiltInTools: { - info: 'Info', - setting: 'Einstellung', - toolDescription: 'Werkzeugbeschreibung', - parameters: 'Parameter', - string: 'Zeichenkette', - number: 'Nummer', - required: 'Erforderlich', - infoAndSetting: 'Info & Einstellungen', - file: 'Datei', - }, - noCustomTool: { - title: 'Keine benutzerdefinierten Werkzeuge!', - content: 'Fügen Sie hier Ihre benutzerdefinierten Werkzeuge hinzu und verwalten Sie sie, um KI-Apps zu erstellen.', - createTool: 'Werkzeug erstellen', - }, - noSearchRes: { - title: 'Leider keine Ergebnisse!', - content: 'Wir konnten keine Werkzeuge finden, die Ihrer Suche entsprechen.', - reset: 'Suche zurücksetzen', - }, - builtInPromptTitle: 'Aufforderung', - toolRemoved: 'Werkzeug entfernt', - notAuthorized: 'Werkzeug nicht autorisiert', - howToGet: 'Wie erhält man', - addToolModal: { - type: 'Art', - category: 'Kategorie', - added: 'zugefügt', - custom: { - title: 'Kein benutzerdefiniertes Werkzeug verfügbar', - tip: 'Benutzerdefiniertes Werkzeug erstellen', - }, - workflow: { - title: 'Kein Workflow-Werkzeug verfügbar', - tip: 'Veröffentlichen Sie Workflows als Werkzeuge im Studio', - }, - mcp: { - title: 'Kein MCP-Werkzeug verfügbar', - tip: 'Einen MCP-Server hinzufügen', - }, - agent: { - title: 'Keine Agentenstrategie verfügbar', - }, - }, - toolNameUsageTip: 'Name des Tool-Aufrufs für die Argumentation und Aufforderung des Agenten', - customToolTip: 'Erfahren Sie mehr über benutzerdefinierte Dify-Tools', - openInStudio: 'In Studio öffnen', - noTools: 'Keine Werkzeuge gefunden', - copyToolName: 'Name kopieren', - mcp: { - create: { - cardTitle: 'MCP-Server hinzufügen (HTTP)', - cardLink: 'Mehr über MCP-Server-Integration erfahren', - }, - noConfigured: 'Nicht konfigurierter Server', - updateTime: 'Aktualisiert', - toolsCount: '{{count}} Tools', - noTools: 'Keine Tools verfügbar', - modal: { - title: 'MCP-Server hinzufügen (HTTP)', - editTitle: 'MCP-Server bearbeiten (HTTP)', - name: 'Name & Symbol', - namePlaceholder: 'Benennen Sie Ihren MCP-Server', - serverUrl: 'Server-URL', - serverUrlPlaceholder: 'URL zum Server-Endpunkt', - serverUrlWarning: 'Das Ändern der Serveradresse kann Anwendungen unterbrechen, die von diesem Server abhängen', - serverIdentifier: 'Serverkennung', - serverIdentifierTip: 'Eindeutige Kennung für den MCP-Server im Arbeitsbereich. Nur Kleinbuchstaben, Zahlen, Unterstriche und Bindestriche. Maximal 24 Zeichen.', - serverIdentifierPlaceholder: 'Eindeutige Kennung, z.B. mein-mcp-server', - serverIdentifierWarning: 'Nach einer ID-Änderung wird der Server von vorhandenen Apps nicht erkannt', - cancel: 'Abbrechen', - save: 'Speichern', - confirm: 'Hinzufügen & Autorisieren', - sseReadTimeout: 'SSE-Lesezeitüberschreitung', - timeout: 'Zeitüberschreitung', - headers: 'Kopfzeilen', - timeoutPlaceholder: 'dreißig', - headerKeyPlaceholder: 'z.B., Autorisierung', - addHeader: 'Kopfzeile hinzufügen', - headerValuePlaceholder: 'z.B., Träger Token123', - headerValue: 'Header-Wert', - headerKey: 'Kopfzeilenname', - noHeaders: 'Keine benutzerdefinierten Header konfiguriert', - maskedHeadersTip: 'Headerwerte sind zum Schutz maskiert. Änderungen werden die tatsächlichen Werte aktualisieren.', - headersTip: 'Zusätzliche HTTP-Header, die mit MCP-Serveranfragen gesendet werden sollen', - clientSecret: 'Client-Geheimnis', - clientSecretPlaceholder: 'Client-Geheimnis', - clientID: 'Kunden-ID', - authentication: 'Authentifizierung', - useDynamicClientRegistration: 'Dynamische Client-Registrierung verwenden', - configurations: 'Konfigurationen', - redirectUrlWarning: 'Bitte konfigurieren Sie Ihre OAuth-Umleitungs-URL wie folgt:', - }, - delete: 'MCP-Server entfernen', - deleteConfirmTitle: 'Möchten Sie {{mcp}} entfernen?', - operation: { - edit: 'Bearbeiten', - remove: 'Entfernen', - }, - authorize: 'Autorisieren', - authorizing: 'Wird autorisiert...', - authorizingRequired: 'Autorisierung erforderlich', - authorizeTip: 'Nach der Autorisierung werden Tools hier angezeigt.', - update: 'Aktualisieren', - updating: 'Wird aktualisiert', - gettingTools: 'Tools werden abgerufen...', - updateTools: 'Tools werden aktualisiert...', - toolsEmpty: 'Tools nicht geladen', - getTools: 'Tools abrufen', - toolUpdateConfirmTitle: 'Tool-Liste aktualisieren', - toolUpdateConfirmContent: 'Das Aktualisieren der Tool-Liste kann bestehende Apps beeinflussen. Fortfahren?', - toolsNum: '{{count}} Tools enthalten', - onlyTool: '1 Tool enthalten', - identifier: 'Serverkennung (Zum Kopieren klicken)', - server: { - title: 'MCP-Server', - url: 'Server-URL', - reGen: 'Server-URL neu generieren?', - addDescription: 'Beschreibung hinzufügen', - edit: 'Beschreibung bearbeiten', - modal: { - addTitle: 'Beschreibung hinzufügen, um MCP-Server zu aktivieren', - editTitle: 'Beschreibung bearbeiten', - description: 'Beschreibung', - descriptionPlaceholder: 'Erklären Sie, was dieses Tool tut und wie es vom LLM verwendet werden soll', - parameters: 'Parameter', - parametersTip: 'Fügen Sie Beschreibungen für jeden Parameter hinzu, um dem LLM Zweck und Einschränkungen zu verdeutlichen.', - parametersPlaceholder: 'Zweck und Einschränkungen des Parameters', - confirm: 'MCP-Server aktivieren', - }, - publishTip: 'App nicht veröffentlicht. Bitte zuerst die App veröffentlichen.', - }, - toolItem: { - parameters: 'Parameter', - noDescription: 'Keine Beschreibung', - }, - }, - allTools: 'Alle Werkzeuge', -} - -export default translation diff --git a/web/i18n/de-DE/workflow.json b/web/i18n/de-DE/workflow.json new file mode 100644 index 0000000000..32b8e5ca4f --- /dev/null +++ b/web/i18n/de-DE/workflow.json @@ -0,0 +1,1294 @@ +{ + "common": { + "undo": "Rückgängig", + "redo": "Wiederholen", + "editing": "Bearbeitung", + "autoSaved": "Automatisch gespeichert", + "unpublished": "Unveröffentlicht", + "published": "Veröffentlicht", + "publish": "Veröffentlichen", + "update": "Aktualisieren", + "run": "Test ausführen", + "running": "Wird ausgeführt", + "inRunMode": "Im Ausführungsmodus", + "inPreview": "In der Vorschau", + "inPreviewMode": "Im Vorschaumodus", + "preview": "Vorschau", + "viewRunHistory": "Ausführungsverlauf anzeigen", + "runHistory": "Ausführungsverlauf", + "goBackToEdit": "Zurück zum Editor", + "conversationLog": "Konversationsprotokoll", + "debugAndPreview": "Vorschau", + "restart": "Neustarten", + "currentDraft": "Aktueller Entwurf", + "currentDraftUnpublished": "Aktueller Entwurf unveröffentlicht", + "latestPublished": "Zuletzt veröffentlicht", + "publishedAt": "Veröffentlicht am", + "restore": "Wiederherstellen", + "runApp": "App ausführen", + "batchRunApp": "App im Batch-Modus ausführen", + "accessAPIReference": "API-Referenz aufrufen", + "embedIntoSite": "In die Webseite einbetten", + "addTitle": "Titel hinzufügen...", + "addDescription": "Beschreibung hinzufügen...", + "noVar": "Keine Variable", + "searchVar": "Variable suchen", + "variableNamePlaceholder": "Variablenname", + "setVarValuePlaceholder": "Variable setzen", + "needConnectTip": "Dieser Schritt ist mit nichts verbunden", + "maxTreeDepth": "Maximales Limit von {{depth}} Knoten pro Ast", + "workflowProcess": "Arbeitsablauf", + "notRunning": "Noch nicht ausgeführt", + "previewPlaceholder": "Geben Sie den Inhalt in das Feld unten ein, um das Debuggen des Chatbots zu starten", + "effectVarConfirm": { + "title": "Variable entfernen", + "content": "Die Variable wird in anderen Knoten verwendet. Möchten Sie sie trotzdem entfernen?" + }, + "insertVarTip": "Drücken Sie die Taste '/' zum schnellen Einfügen", + "processData": "Daten verarbeiten", + "input": "Eingabe", + "output": "Ausgabe", + "jinjaEditorPlaceholder": "Tippen Sie '/' oder '{' um eine Variable einzufügen", + "viewOnly": "Nur anzeigen", + "showRunHistory": "Ausführungsverlauf anzeigen", + "enableJinja": "Jinja-Vorlagenunterstützung aktivieren", + "learnMore": "Mehr erfahren", + "copy": "Kopieren", + "duplicate": "Duplizieren", + "pasteHere": "Hier einfügen", + "pointerMode": "Zeigermodus", + "handMode": "Handmodus", + "model": "Modell", + "workflowAsTool": "Workflow als Tool", + "configureRequired": "Konfiguration erforderlich", + "configure": "Konfigurieren", + "manageInTools": "In den Tools verwalten", + "workflowAsToolTip": "Nach dem Workflow-Update ist eine Neukonfiguration des Tools erforderlich.", + "viewDetailInTracingPanel": "Details anzeigen", + "importDSL": "DSL importieren", + "importFailure": "Fehler beim Import", + "syncingData": "Synchronisieren von Daten, nur wenige Sekunden.", + "chooseDSL": "Wählen Sie eine DSL(yml)-Datei", + "importSuccess": "Erfolg beim Import", + "importDSLTip": "Der aktuelle Entwurf wird überschrieben. Exportieren Sie den Workflow vor dem Import als Backup.", + "overwriteAndImport": "Überschreiben und Importieren", + "backupCurrentDraft": "Aktuellen Entwurf sichern", + "parallelTip": { + "click": { + "title": "Klicken", + "desc": "hinzuzufügen" + }, + "drag": { + "title": "Ziehen", + "desc": "um eine Verbindung herzustellen" + }, + "limit": "Die Parallelität ist auf {{num}} Zweige beschränkt.", + "depthLimit": "Begrenzung der parallelen Verschachtelungsschicht von {{num}} Schichten" + }, + "disconnect": "Trennen", + "jumpToNode": "Zu diesem Knoten springen", + "addParallelNode": "Parallelen Knoten hinzufügen", + "parallel": "PARALLEL", + "branch": "ZWEIG", + "ImageUploadLegacyTip": "Sie können jetzt Dateitypvariablen im Startformular erstellen. Wir werden die Funktion zum Hochladen von Bildern in Zukunft nicht mehr unterstützen.", + "fileUploadTip": "Die Funktionen zum Hochladen von Bildern wurden auf das Hochladen von Dateien aktualisiert.", + "importWarning": "Vorsicht", + "importWarningDetails": "Der Unterschied zwischen den DSL-Versionen kann sich auf bestimmte Funktionen auswirken", + "openInExplore": "In Explore öffnen", + "onFailure": "Bei Ausfall", + "addFailureBranch": "Fail-Branch hinzufügen", + "loadMore": "Weitere Workflows laden", + "noHistory": "Keine Geschichte", + "exportSVG": "Als SVG exportieren", + "versionHistory": "Versionsverlauf", + "publishUpdate": "Update veröffentlichen", + "exportImage": "Bild exportieren", + "exportJPEG": "Als JPEG exportieren", + "exitVersions": "Ausgangsversionen", + "exportPNG": "Als PNG exportieren", + "addBlock": "Knoten hinzufügen", + "needOutputNode": "Der Ausgabeknoten muss hinzugefügt werden", + "needAnswerNode": "Der Antwortknoten muss hinzugefügt werden.", + "tagBound": "Anzahl der Apps, die dieses Tag verwenden", + "currentWorkflow": "Aktueller Arbeitsablauf", + "currentView": "Aktuelle Ansicht", + "moreActions": "Weitere Aktionen", + "listening": "Zuhören", + "chooseStartNodeToRun": "Wählen Sie den Startknoten zum Ausführen", + "runAllTriggers": "Alle Auslöser ausführen", + "features": "Funktionen", + "featuresDescription": "Verbessern Sie die Benutzererfahrung der Webanwendung", + "featuresDocLink": "Mehr erfahren", + "needAdd": "{{node}} Knoten muss hinzugefügt werden", + "needStartNode": "Es muss mindestens ein Startknoten hinzugefügt werden", + "workflowAsToolDisabledHint": "Veröffentlichen Sie den neuesten Workflow und stellen Sie sicher, dass ein verbundener User-Input-Knoten vorhanden ist, bevor Sie ihn als Werkzeug konfigurieren." + }, + "env": { + "envPanelTitle": "Umgebungsvariablen", + "envDescription": "Umgebungsvariablen können zur Speicherung privater Informationen und Anmeldedaten verwendet werden. Sie sind schreibgeschützt und können beim Export vom DSL-File getrennt werden.", + "envPanelButton": "Variable hinzufügen", + "modal": { + "title": "Umgebungsvariable hinzufügen", + "editTitle": "Umgebungsvariable bearbeiten", + "type": "Typ", + "name": "Name", + "namePlaceholder": "Umgebungsname", + "value": "Wert", + "valuePlaceholder": "Umgebungswert", + "secretTip": "Wird verwendet, um sensible Informationen oder Daten zu definieren, wobei DSL-Einstellungen zur Verhinderung von Lecks konfiguriert sind.", + "description": "Beschreibung", + "descriptionPlaceholder": "Beschreiben Sie die Variable" + }, + "export": { + "title": "Geheime Umgebungsvariablen exportieren?", + "checkbox": "Geheime Werte exportieren", + "ignore": "DSL exportieren", + "export": "DSL mit geheimen Werten exportieren" + } + }, + "globalVar": { + "title": "Systemvariablen", + "description": "Systemvariablen sind globale Variablen, die von jedem Knoten ohne Verkabelung referenziert werden können, sofern der Typ passt, etwa Endnutzer-ID und Workflow-ID.", + "fieldsDescription": { + "conversationId": "Konversations-ID", + "dialogCount": "Konversationsanzahl", + "userId": "Benutzer-ID", + "triggerTimestamp": "Zeitstempel des Anwendungsstarts", + "appId": "Anwendungs-ID", + "workflowId": "Workflow-ID", + "workflowRunId": "Workflow-Ausführungs-ID" + } + }, + "chatVariable": { + "panelTitle": "Gesprächsvariablen", + "panelDescription": "Gesprächsvariablen werden verwendet, um interaktive Informationen zu speichern, die das LLM benötigt, einschließlich Gesprächsverlauf, hochgeladene Dateien und Benutzereinstellungen. Sie sind les- und schreibbar.", + "docLink": "Besuchen Sie unsere Dokumentation für weitere Informationen.", + "button": "Variable hinzufügen", + "modal": { + "title": "Gesprächsvariable hinzufügen", + "editTitle": "Gesprächsvariable bearbeiten", + "name": "Name", + "namePlaceholder": "Variablenname", + "type": "Typ", + "value": "Standardwert", + "valuePlaceholder": "Standardwert, leer lassen für keine Festlegung", + "description": "Beschreibung", + "descriptionPlaceholder": "Beschreiben Sie die Variable", + "editInJSON": "In JSON bearbeiten", + "oneByOne": "Einzeln hinzufügen", + "editInForm": "Im Formular bearbeiten", + "arrayValue": "Wert", + "addArrayValue": "Wert hinzufügen", + "objectKey": "Schlüssel", + "objectType": "Typ", + "objectValue": "Standardwert" + }, + "storedContent": "Gespeicherter Inhalt", + "updatedAt": "Aktualisiert am " + }, + "changeHistory": { + "title": "Änderungsverlauf", + "placeholder": "Du hast noch nichts geändert", + "clearHistory": "Änderungsverlauf löschen", + "hint": "Hinweis", + "hintText": "Änderungen werden im Änderungsverlauf aufgezeichnet, der für die Dauer dieser Sitzung auf Ihrem Gerät gespeichert wird. Dieser Verlauf wird gelöscht, wenn Sie den Editor verlassen.", + "stepBackward_one": "{{count}} Schritt zurück", + "stepBackward_other": "{{count}} Schritte zurück", + "stepForward_one": "{{count}} Schritt vorwärts", + "stepForward_other": "{{count}} Schritte vorwärts", + "sessionStart": "Sitzungsstart", + "currentState": "Aktueller Zustand", + "noteAdd": "Notiz hinzugefügt", + "noteChange": "Notiz geändert", + "noteDelete": "Notiz gelöscht", + "edgeDelete": "Knoten getrennt", + "nodeAdd": "Knoten hinzugefügt", + "nodeTitleChange": "Knotenüberschrift geändert", + "nodePaste": "Knoten eingefügt", + "nodeResize": "Knoten verkleinert", + "nodeDescriptionChange": "Die Knotenbeschreibung wurde geändert", + "nodeChange": "Knoten geändert", + "nodeConnect": "Node verbunden", + "nodeDragStop": "Knoten verschoben", + "nodeDelete": "Knoten gelöscht" + }, + "errorMsg": { + "fieldRequired": "{{field}} ist erforderlich", + "authRequired": "Autorisierung ist erforderlich", + "invalidJson": "{{field}} ist ein ungültiges JSON", + "fields": { + "variable": "Variablenname", + "variableValue": "Variablenwert", + "code": "Code", + "model": "Modell", + "rerankModel": "Neusortierungsmodell", + "visionVariable": "Vision variabel" + }, + "invalidVariable": "Ungültige Variable", + "rerankModelRequired": "Bevor Sie das Rerank-Modell aktivieren, bestätigen Sie bitte, dass das Modell in den Einstellungen erfolgreich konfiguriert wurde.", + "toolParameterRequired": "{{field}}: Parameter [{{param}}] ist erforderlich", + "noValidTool": "{{field}} kein gültiges Werkzeug ausgewählt", + "startNodeRequired": "Bitte füge zuerst einen Startknoten hinzu, bevor du {{operation}}." + }, + "singleRun": { + "testRun": "Testlauf ", + "startRun": "Lauf starten", + "running": "Wird ausgeführt", + "testRunIteration": "Testlaufiteration", + "back": "Zurück", + "iteration": "Iteration", + "loop": "Schleife", + "reRun": "Erneuter Lauf", + "preparingDataSource": "Vorbereiten der Datenquelle" + }, + "tabs": { + "tools": "Werkzeuge", + "allTool": "Alle", + "customTool": "Benutzerdefiniert", + "workflowTool": "Arbeitsablauf", + "question-understand": "Fragen verstehen", + "logic": "Logik", + "transform": "Transformieren", + "utilities": "Dienstprogramme", + "noResult": "Kein Ergebnis gefunden", + "searchTool": "Suchwerkzeug", + "plugin": "Stecker", + "agent": "Agenten-Strategie", + "searchBlock": "Suchknoten", + "blocks": "Knoten", + "allAdded": "Alle hinzugefügt", + "addAll": "Alles hinzufügen", + "sources": "Quellen", + "searchDataSource": "Datenquelle durchsuchen", + "start": "Start", + "searchTrigger": "Suchauslöser...", + "allTriggers": "Alle Auslöser", + "noPluginsFound": "Es wurden keine Plugins gefunden", + "requestToCommunity": "Anfragen an die Community", + "featuredTools": "Ausgewählt", + "showMoreFeatured": "Mehr anzeigen", + "showLessFeatured": "Weniger anzeigen", + "installed": "Installiert", + "pluginByAuthor": "Von {{author}}", + "usePlugin": "Werkzeug auswählen", + "hideActions": "Werkzeuge ausblenden", + "noFeaturedPlugins": "Entdecken Sie weitere Tools im Marktplatz", + "noFeaturedTriggers": "Entdecken Sie weitere Auslöser im Marketplace", + "startDisabledTip": "Trigger-Knoten und Benutzereingabeknoten schließen sich gegenseitig aus." + }, + "blocks": { + "start": "Start", + "end": "Ausgabe", + "answer": "Antwort", + "llm": "LLM", + "knowledge-retrieval": "Wissensabruf", + "question-classifier": "Fragenklassifizierer", + "if-else": "WENN/SONST", + "code": "Code", + "template-transform": "Vorlage", + "http-request": "HTTP-Anfrage", + "variable-assigner": "Variablen-Zuweiser", + "variable-aggregator": "Variablen-Aggregator", + "assigner": "Variablenzuweiser", + "iteration-start": "Iterationsstart", + "iteration": "Iteration", + "parameter-extractor": "Parameter-Extraktor", + "list-operator": "List-Operator", + "document-extractor": "Doc Extraktor", + "agent": "Agent", + "loop": "Schleife", + "loop-start": "Schleifenbeginn", + "loop-end": "Schleife beenden", + "datasource": "Datenquelle", + "knowledge-index": "Wissensdatenbank", + "originalStartNode": "ursprünglicher Startknoten", + "trigger-schedule": "Zeitplan-Auslöser", + "trigger-webhook": "Webhook-Auslöser", + "trigger-plugin": "Plugin-Auslöser" + }, + "blocksAbout": { + "start": "Definieren Sie die Anfangsparameter zum Starten eines Workflows", + "end": "Definieren Sie die Ausgabe und den Ergebnistyp eines Workflows", + "answer": "Definieren Sie den Antwortinhalt einer Chat-Konversation", + "llm": "Große Sprachmodelle aufrufen, um Fragen zu beantworten oder natürliche Sprache zu verarbeiten", + "knowledge-retrieval": "Ermöglicht das Abfragen von Textinhalten, die sich auf Benutzerfragen aus der Wissensdatenbank beziehen", + "question-classifier": "Definieren Sie die Klassifizierungsbedingungen von Benutzerfragen, LLM kann basierend auf der Klassifikationsbeschreibung festlegen, wie die Konversation fortschreitet", + "if-else": "Ermöglicht das Aufteilen des Workflows in zwei Zweige basierend auf if/else-Bedingungen", + "code": "Ein Stück Python- oder NodeJS-Code ausführen, um benutzerdefinierte Logik zu implementieren", + "template-transform": "Daten in Zeichenfolgen mit Jinja-Vorlagensyntax umwandeln", + "http-request": "Ermöglichen, dass Serveranforderungen über das HTTP-Protokoll gesendet werden", + "variable-assigner": "Variablen aus mehreren Zweigen in eine einzige Variable zusammenführen, um eine einheitliche Konfiguration der nachgelagerten Knoten zu ermöglichen.", + "assigner": "Der Variablenzuweisungsknoten wird verwendet, um beschreibbaren Variablen (wie Gesprächsvariablen) Werte zuzuweisen.", + "variable-aggregator": "Variablen aus mehreren Zweigen in eine einzige Variable zusammenführen, um eine einheitliche Konfiguration der nachgelagerten Knoten zu ermöglichen.", + "iteration": "Mehrere Schritte an einem Listenobjekt ausführen, bis alle Ergebnisse ausgegeben wurden.", + "parameter-extractor": "Verwenden Sie LLM, um strukturierte Parameter aus natürlicher Sprache für Werkzeugaufrufe oder HTTP-Anfragen zu extrahieren.", + "list-operator": "Wird verwendet, um Array-Inhalte zu filtern oder zu sortieren.", + "document-extractor": "Wird verwendet, um hochgeladene Dokumente in Textinhalte zu analysieren, die für LLM leicht verständlich sind.", + "agent": "Aufruf großer Sprachmodelle zur Beantwortung von Fragen oder zur Verarbeitung natürlicher Sprache", + "loop": "Führen Sie eine Schleife aus, bis die Abschlussbedingungen erfüllt sind oder die maximalen Schleifenanzahl erreicht ist.", + "loop-end": "Entspricht \"break\". Dieser Knoten hat keine Konfigurationselemente. Wenn der Schleifenrumpf diesen Knoten erreicht, wird die Schleife beendet.", + "datasource": "Datenquelle Über", + "knowledge-index": "Wissensdatenbank Über", + "trigger-schedule": "Zeitbasierter Workflow-Auslöser, der Workflows nach einem Zeitplan startet", + "trigger-webhook": "Webhook-Trigger empfängt HTTP-Pushes von Drittanbietersystemen, um Workflows automatisch auszulösen.", + "trigger-plugin": "Auslöser für die Integration von Drittanbietern, der Workflows anhand von Ereignissen externer Plattformen startet" + }, + "operator": { + "zoomIn": "Vergrößern", + "zoomOut": "Verkleinern", + "zoomTo50": "Auf 50% vergrößern", + "zoomTo100": "Auf 100% vergrößern", + "zoomToFit": "An Bildschirm anpassen", + "selectionAlignment": "Ausrichtung der Auswahl", + "alignLeft": "Links", + "alignTop": "Nach oben", + "distributeVertical": "Vertikal verteilen", + "alignBottom": "Nach unten", + "distributeHorizontal": "Horizontal verteilen", + "vertical": "Vertikal", + "alignMiddle": "Mitte", + "alignCenter": "Mitte", + "alignRight": "Rechts", + "alignNodes": "Knoten ausrichten", + "horizontal": "Horizontal" + }, + "panel": { + "userInputField": "Benutzereingabefeld", + "helpLink": "Hilfe", + "about": "Über", + "createdBy": "Erstellt von ", + "nextStep": "Nächster Schritt", + "runThisStep": "Diesen Schritt ausführen", + "checklist": "Checkliste", + "checklistTip": "Stellen Sie sicher, dass alle Probleme vor der Veröffentlichung gelöst sind", + "checklistResolved": "Alle Probleme wurden gelöst", + "change": "Ändern", + "optional": "(optional)", + "selectNextStep": "Nächsten Schritt auswählen", + "addNextStep": "Fügen Sie den nächsten Schritt in diesem Arbeitsablauf hinzu.", + "organizeBlocks": "Knoten organisieren", + "changeBlock": "Knoten ändern", + "maximize": "Maximiere die Leinwand", + "minimize": "Vollbildmodus beenden", + "scrollToSelectedNode": "Zum ausgewählten Knoten scrollen", + "optional_and_hidden": "(optional & hidden)", + "goTo": "Gehe zu", + "startNode": "Startknoten", + "openWorkflow": "Workflow öffnen" + }, + "nodes": { + "common": { + "outputVars": "Ausgabevariablen", + "insertVarTip": "Variable einfügen", + "memory": { + "memory": "Speicher", + "memoryTip": "Einstellungen des Chat-Speichers", + "windowSize": "Fenstergröße", + "conversationRoleName": "Rollenname in der Konversation", + "user": "Benutzer-Präfix", + "assistant": "Assistenten-Präfix" + }, + "memories": { + "title": "Erinnerungen", + "tip": "Chat-Speicher", + "builtIn": "Eingebaut" + }, + "errorHandle": { + "none": { + "title": "Nichts", + "desc": "Der Knoten wird nicht mehr ausgeführt, wenn eine Ausnahme auftritt und nicht behandelt wird" + }, + "defaultValue": { + "title": "Standardwert", + "desc": "Wenn ein Fehler auftritt, geben Sie einen statischen Ausgabeinhalt an.", + "tip": "Bei einem Fehler wird der untere Wert zurückgegeben.", + "inLog": "Knotenausnahme, Ausgabe nach Vorschlagswerten.", + "output": "Standardwert für die Ausgabe" + }, + "failBranch": { + "title": "Fehlgeschlagener Zweig", + "desc": "Wenn ein Fehler auftritt, wird der Ausnahmezweig ausgeführt", + "customize": "Wechseln Sie zur Arbeitsfläche, um die Fehlerverzweigungslogik anzupassen.", + "customizeTip": "Wenn der Fail-Zweig aktiviert ist, wird der Prozess durch Ausnahmen, die von Knoten ausgelöst werden, nicht beendet. Stattdessen wird automatisch der vordefinierte Fehlerzweig ausgeführt, sodass Sie flexibel Fehlermeldungen, Berichte, Korrekturen oder Überspringen von Aktionen bereitstellen können.", + "inLog": "Knotenausnahme, führt den Fail-Zweig automatisch aus. Die Knotenausgabe gibt einen Fehlertyp und eine Fehlermeldung zurück und übergibt sie an den Downstream." + }, + "partialSucceeded": { + "tip": "Es gibt {{num}} Knoten im Prozess, die nicht normal laufen, bitte gehen Sie zur Ablaufverfolgung, um die Protokolle zu überprüfen." + }, + "title": "Fehlerbehandlung", + "tip": "Ausnahmebehandlungsstrategie, die ausgelöst wird, wenn ein Knoten auf eine Ausnahme stößt." + }, + "retry": { + "retry": "Wiederholen", + "retryOnFailure": "Wiederholen bei Fehler", + "maxRetries": "Max. Wiederholungen", + "retryInterval": "Wiederholungsintervall", + "retryTimes": "Wiederholen Sie {{times}} mal bei einem Fehler", + "retrying": "Wiederholung...", + "retrySuccessful": "Wiederholen erfolgreich", + "retryFailed": "Wiederholung fehlgeschlagen", + "retryFailedTimes": "{{times}} fehlgeschlagene Wiederholungen", + "times": "mal", + "ms": "Frau", + "retries": "{{num}} Wiederholungen" + }, + "typeSwitch": { + "input": "Eingabewert", + "variable": "Verwende die Variable" + }, + "inputVars": "Eingabevariablen", + "pluginNotInstalled": "Plugin ist nicht installiert" + }, + "start": { + "required": "erforderlich", + "inputField": "Eingabefeld", + "builtInVar": "Eingebaute Variablen", + "outputVars": { + "query": "Benutzereingabe", + "memories": { + "des": "Konversationsverlauf", + "type": "Nachrichtentyp", + "content": "Nachrichteninhalt" + }, + "files": "Dateiliste" + }, + "noVarTip": "Legen Sie Eingaben fest, die im Workflow verwendet werden können" + }, + "end": { + "outputs": "Ausgaben", + "output": { + "type": "Ausgabetyp", + "variable": "Ausgabevariable" + }, + "type": { + "none": "Keine", + "plain-text": "Klartext", + "structured": "Strukturiert" + } + }, + "answer": { + "answer": "Antwort", + "outputVars": "Ausgabevariablen" + }, + "llm": { + "model": "Modell", + "variables": "Variablen", + "context": "Kontext", + "contextTooltip": "Sie können Wissen als Kontext importieren", + "notSetContextInPromptTip": "Um die Kontextfunktion zu aktivieren, füllen Sie die Kontextvariable im PROMPT aus.", + "prompt": "Prompt", + "roleDescription": { + "system": "Geben Sie hochrangige Anweisungen für die Konversation", + "user": "Geben Sie dem Modell Anweisungen, Abfragen oder beliebigen texteingabebasierten Input", + "assistant": "Die Antworten des Modells basierend auf den Benutzernachrichten" + }, + "addMessage": "Nachricht hinzufügen", + "vision": "Vision", + "files": "Dateien", + "resolution": { + "name": "Auflösung", + "high": "Hoch", + "low": "Niedrig" + }, + "outputVars": { + "output": "Generierter Inhalt", + "reasoning_content": "Reasoning-Inhalt", + "usage": "Nutzungsinformationen des Modells" + }, + "singleRun": { + "variable": "Variable" + }, + "sysQueryInUser": "sys.query in Benutzernachricht erforderlich", + "jsonSchema": { + "warningTips": { + "saveSchema": "Bitte beenden Sie die Bearbeitung des aktuellen Feldes, bevor Sie das Schema speichern." + }, + "stringValidations": "Stringvalidierungen", + "addField": "Feld hinzufügen", + "generateJsonSchema": "JSON-Schema generieren", + "back": "Zurück", + "addChildField": "Kindfeld hinzufügen", + "generationTip": "Sie können natürliche Sprache verwenden, um schnell ein JSON-Schema zu erstellen.", + "title": "Strukturiertes Ausgabeschema", + "resetDefaults": "Zurücksetzen", + "showAdvancedOptions": "Erweiterte Optionen anzeigen", + "fieldNamePlaceholder": "Feldname", + "descriptionPlaceholder": "Fügen Sie eine Beschreibung hinzu.", + "resultTip": "Hier ist das generierte Ergebnis. Wenn Sie nicht zufrieden sind, können Sie zurückgehen und Ihre Eingabeaufforderung ändern.", + "generatedResult": "Generiertes Ergebnis", + "promptTooltip": "Konvertiere die Textbeschreibung in eine standardisierte JSON-Schema-Struktur.", + "promptPlaceholder": "Beschreibe dein JSON-Schema...", + "doc": "Erfahren Sie mehr über strukturierten Output.", + "required": "erforderlich", + "generate": "Generieren", + "apply": "Bewerben", + "import": "Import aus JSON", + "generating": "Generiere JSON-Schema...", + "instruction": "Anleitung", + "regenerate": "Regenerieren" + }, + "reasoningFormat": { + "tooltip": "Inhalte aus Denk-Tags extrahieren und im Feld reasoning_content speichern.", + "separated": "Separate Denk tags", + "title": "Aktivieren Sie die Trennung von Argumentations-Tags", + "tagged": "Behalte die Denk-Tags" + } + }, + "knowledgeRetrieval": { + "queryVariable": "Abfragevariable", + "knowledge": "Wissen", + "outputVars": { + "output": "Abgerufene segmentierte Daten", + "content": "Segmentierter Inhalt", + "title": "Segmentierter Titel", + "icon": "Segmentiertes Symbol", + "url": "Segmentierte URL", + "metadata": "Weitere Metadaten", + "files": "Abgerufene Dateien" + }, + "metadata": { + "options": { + "disabled": { + "title": "Deaktiviert", + "subTitle": "Keine Aktivierung der Metadatfilterung" + }, + "automatic": { + "desc": "Automatisch Filterbedingungen für Metadaten basierend auf Abfragevariablen generieren.", + "title": "Automatisch", + "subTitle": "Automatisch Metadatenfilterbedingungen basierend auf der Benutzeranfrage generieren" + }, + "manual": { + "title": "Handbuch", + "subTitle": "Manuell Filterbedingungen für Metadaten hinzufügen" + } + }, + "panel": { + "placeholder": "Wert eingeben", + "datePlaceholder": "Wählen Sie eine Zeit...", + "add": "Bedingung hinzufügen", + "title": "Metadatenfilterbedingungen", + "select": "Wählen Sie eine Variable aus...", + "conditions": "Bedingungen", + "search": "Suchmetadaten" + }, + "title": "Metadatenfilterung", + "tip": "Metadatenfilterung ist der Prozess, Metadatenattribute (wie Tags, Kategorien oder Zugriffsberechtigungen) zu verwenden, um die Abfrage und Kontrolle der relevanten Informationen innerhalb eines Systems zu verfeinern." + }, + "queryText": "Abfrage Text", + "queryAttachment": "Abfragebilder" + }, + "http": { + "inputVars": "Eingabevariablen", + "api": "API", + "apiPlaceholder": "Geben Sie die URL ein, tippen Sie ‘/’, um Variable einzufügen", + "notStartWithHttp": "API sollte mit http:// oder https:// beginnen", + "key": "Schlüssel", + "value": "Wert", + "bulkEdit": "Massenerfassung", + "keyValueEdit": "Schlüssel-Wert-Erfassung", + "headers": "Header", + "params": "Parameter", + "body": "Body", + "outputVars": { + "body": "Antwortinhalt", + "statusCode": "Antwortstatuscode", + "headers": "Antwort-Header-Liste im JSON-Format", + "files": "Dateiliste" + }, + "authorization": { + "authorization": "Autorisierung", + "authorizationType": "Autorisierungstyp", + "no-auth": "Keine", + "api-key": "API-Schlüssel", + "auth-type": "Autorisierungstyp", + "basic": "Basis", + "bearer": "Bearer", + "custom": "Benutzerdefiniert", + "api-key-title": "API-Schlüssel", + "header": "Header" + }, + "insertVarPlaceholder": "tippen Sie ‘/’, um Variable einzufügen", + "timeout": { + "title": "Zeitüberschreitung", + "connectLabel": "Verbindungs-Zeitüberschreitung", + "connectPlaceholder": "Geben Sie die Verbindungs-Zeitüberschreitung in Sekunden ein", + "readLabel": "Lese-Zeitüberschreitung", + "readPlaceholder": "Geben Sie die Lese-Zeitüberschreitung in Sekunden ein", + "writeLabel": "Schreib-Zeitüberschreitung", + "writePlaceholder": "Geben Sie die Schreib-Zeitüberschreitung in Sekunden ein" + }, + "type": "Art", + "binaryFileVariable": "Variable der Binärdatei", + "extractListPlaceholder": "Geben Sie den Index des Listeneintrags ein, geben Sie '/' ein, fügen Sie die Variable ein", + "curl": { + "title": "Importieren von cURL", + "placeholder": "Fügen Sie hier die cURL-Zeichenfolge ein" + }, + "verifySSL": { + "title": "SSL-Zertifikat überprüfen", + "warningTooltip": "Das Deaktivieren der SSL-Überprüfung wird für Produktionsumgebungen nicht empfohlen. Dies sollte nur in der Entwicklung oder im Test verwendet werden, da es die Verbindung anfällig für Sicherheitsbedrohungen wie Man-in-the-Middle-Angriffe macht." + } + }, + "code": { + "inputVars": "Eingabevariablen", + "outputVars": "Ausgabevariablen", + "advancedDependencies": "Erweiterte Abhängigkeiten", + "advancedDependenciesTip": "Fügen Sie hier einige vorinstallierte Abhängigkeiten hinzu, die mehr Zeit in Anspruch nehmen oder nicht standardmäßig eingebaut sind", + "searchDependencies": "Abhängigkeiten suchen", + "syncFunctionSignature": "Synchronisiere die Funktionssignatur mit dem Code" + }, + "templateTransform": { + "inputVars": "Eingabevariablen", + "code": "Code", + "codeSupportTip": "Unterstützt nur Jinja2", + "outputVars": { + "output": "Transformierter Inhalt" + } + }, + "ifElse": { + "if": "Wenn", + "else": "Sonst", + "elseDescription": "Wird verwendet, um die Logik zu definieren, die ausgeführt werden soll, wenn die if-Bedingung nicht erfüllt ist.", + "and": "und", + "or": "oder", + "operator": "Operator", + "notSetVariable": "Bitte setzen Sie zuerst die Variable", + "comparisonOperator": { + "contains": "enthält", + "not contains": "enthält nicht", + "start with": "beginnt mit", + "end with": "endet mit", + "is": "ist", + "is not": "ist nicht", + "empty": "ist leer", + "not empty": "ist nicht leer", + "null": "ist null", + "not null": "ist nicht null", + "not exists": "existiert nicht", + "in": "in", + "all of": "alle", + "exists": "existiert", + "not in": "nicht in", + "after": "nach", + "before": "vor" + }, + "enterValue": "Wert eingeben", + "addCondition": "Bedingung hinzufügen", + "conditionNotSetup": "Bedingung NICHT eingerichtet", + "selectVariable": "Variable auswählen...", + "optionName": { + "video": "Video", + "url": "URL (Englisch)", + "image": "Bild", + "localUpload": "Lokaler Upload", + "audio": "Audio", + "doc": "Doktor" + }, + "select": "Auswählen", + "addSubVariable": "Untervariable" + }, + "variableAssigner": { + "title": "Variablen zuweisen", + "outputType": "Ausgabetyp", + "varNotSet": "Variable nicht gesetzt", + "noVarTip": "Fügen Sie die zuzuweisenden Variablen hinzu", + "type": { + "string": "String", + "number": "Nummer", + "object": "Objekt", + "array": "Array" + }, + "aggregationGroup": "Aggregationsgruppe", + "aggregationGroupTip": "Durch Aktivieren dieser Funktion kann der Variablen-Aggregator mehrere Variablensätze aggregieren.", + "addGroup": "Gruppe hinzufügen", + "outputVars": { + "varDescribe": "Ausgabe {{groupName}}" + }, + "setAssignVariable": "Zuweisungsvariable festlegen" + }, + "assigner": { + "assignedVariable": "Zugewiesene Variable", + "writeMode": "Schreibmodus", + "writeModeTip": "Wenn die ZUGEWIESENE VARIABLE ein Array ist, fügt der Anhängemodus am Ende hinzu.", + "over-write": "Überschreiben", + "append": "Anhängen", + "plus": "Plus", + "clear": "Löschen", + "setVariable": "Variable setzen", + "variable": "Variable", + "operations": { + "title": "Operation", + "clear": "Klar", + "over-write": "Überschreiben", + "set": "Garnitur", + "-=": "-=", + "+=": "+=", + "/=": "/=", + "append": "Anfügen", + "extend": "Ausdehnen", + "*=": "*=", + "overwrite": "Überschreiben", + "remove-first": "Erste entfernen", + "remove-last": "Letzte entfernen" + }, + "setParameter": "Parameter setzen...", + "noVarTip": "Klicken Sie auf die Schaltfläche \"+\", um Variablen hinzuzufügen", + "variables": "Variablen", + "noAssignedVars": "Keine verfügbaren zugewiesenen Variablen", + "selectAssignedVariable": "Zugewiesene Variable auswählen...", + "varNotSet": "Variable NICHT gesetzt", + "assignedVarsDescription": "Zugewiesene Variablen müssen beschreibbare Variablen sein, z. B. Konversationsvariablen." + }, + "tool": { + "inputVars": "Eingabevariablen", + "outputVars": { + "text": "durch das Tool generierter Inhalt", + "files": { + "title": "durch das Tool generierte Dateien", + "type": "Unterstützungstyp. Derzeit nur Bild unterstützt", + "transfer_method": "Übertragungsmethode. Der Wert ist remote_url oder local_file", + "url": "Bild-URL", + "upload_file_id": "Hochgeladene Datei-ID" + }, + "json": "von einem Tool generiertes JSON" + }, + "authorize": "Autorisieren", + "insertPlaceholder2": "Fügen Sie die Variable ein.", + "insertPlaceholder1": "Tippen oder drücken", + "settings": "Einstellungen" + }, + "questionClassifiers": { + "model": "Modell", + "inputVars": "Eingabevariablen", + "outputVars": { + "className": "Klassennamen", + "usage": "Nutzungsinformationen des Modells" + }, + "class": "Klasse", + "classNamePlaceholder": "Geben Sie Ihren Klassennamen ein", + "advancedSetting": "Erweiterte Einstellung", + "topicName": "Themenname", + "topicPlaceholder": "Geben Sie Ihren Themennamen ein", + "addClass": "Klasse hinzufügen", + "instruction": "Anweisung", + "instructionTip": "Geben Sie zusätzliche Anweisungen ein, um dem Fragenklassifizierer zu helfen, besser zu verstehen, wie Fragen kategorisiert werden sollen.", + "instructionPlaceholder": "Geben Sie Ihre Anweisung ein" + }, + "parameterExtractor": { + "inputVar": "Eingabevariable", + "outputVars": { + "isSuccess": "Ist Erfolg. Bei Erfolg beträgt der Wert 1, bei Misserfolg beträgt der Wert 0.", + "errorReason": "Fehlergrund", + "usage": "Nutzungsinformationen des Modells" + }, + "extractParameters": "Parameter extrahieren", + "importFromTool": "Aus Tools importieren", + "addExtractParameter": "Extraktionsparameter hinzufügen", + "addExtractParameterContent": { + "name": "Name", + "namePlaceholder": "Name des Extraktionsparameters", + "type": "Typ", + "typePlaceholder": "Typ des Extraktionsparameters", + "description": "Beschreibung", + "descriptionPlaceholder": "Beschreibung des Extraktionsparameters", + "required": "Erforderlich", + "requiredContent": "Erforderlich wird nur als Referenz für die Modellschlussfolgerung verwendet und nicht für die zwingende Validierung der Parameter-Ausgabe." + }, + "extractParametersNotSet": "Extraktionsparameter nicht eingerichtet", + "instruction": "Anweisung", + "instructionTip": "Geben Sie zusätzliche Anweisungen ein, um dem Parameter-Extraktor zu helfen, zu verstehen, wie Parameter extrahiert werden.", + "advancedSetting": "Erweiterte Einstellung", + "reasoningMode": "Schlussfolgerungsmodus", + "reasoningModeTip": "Sie können den entsprechenden Schlussfolgerungsmodus basierend auf der Fähigkeit des Modells wählen, auf Anweisungen zur Funktionsaufruf- oder Eingabeaufforderungen zu reagieren." + }, + "iteration": { + "deleteTitle": "Iterationsknoten löschen?", + "deleteDesc": "Das Löschen des Iterationsknotens löscht alle untergeordneten Knoten", + "input": "Eingabe", + "output": "Ausgabevariablen", + "iteration_one": "{{count}} Iteration", + "iteration_other": "{{count}} Iterationen", + "currentIteration": "Aktuelle Iteration", + "ErrorMethod": { + "operationTerminated": "beendet", + "removeAbnormalOutput": "remove-abnormale_ausgabe", + "continueOnError": "Fehler \"Fortfahren bei\"" + }, + "MaxParallelismTitle": "Maximale Parallelität", + "parallelMode": "Paralleler Modus", + "errorResponseMethod": "Methode der Fehlerantwort", + "error_one": "{{Anzahl}} Fehler", + "error_other": "{{Anzahl}} Irrtümer", + "MaxParallelismDesc": "Die maximale Parallelität wird verwendet, um die Anzahl der Aufgaben zu steuern, die gleichzeitig in einer einzigen Iteration ausgeführt werden.", + "parallelPanelDesc": "Im parallelen Modus unterstützen Aufgaben in der Iteration die parallele Ausführung.", + "parallelModeEnableDesc": "Im parallelen Modus unterstützen Aufgaben innerhalb von Iterationen die parallele Ausführung. Sie können dies im Eigenschaftenbereich auf der rechten Seite konfigurieren.", + "answerNodeWarningDesc": "Warnung im parallelen Modus: Antwortknoten, Zuweisungen von Konversationsvariablen und persistente Lese-/Schreibvorgänge innerhalb von Iterationen können Ausnahmen verursachen.", + "parallelModeEnableTitle": "Paralleler Modus aktiviert", + "parallelModeUpper": "PARALLELER MODUS", + "comma": ",", + "flattenOutput": "Ausgabe abflachen", + "flattenOutputDesc": "Wenn aktiviert, werden alle Iterationsergebnisse, die Arrays sind, in ein einzelnes Array zusammengeführt. Wenn deaktiviert, behalten die Ergebnisse eine verschachtelte Array-Struktur bei." + }, + "note": { + "editor": { + "strikethrough": "Durchgestrichen", + "large": "Groß", + "bulletList": "Aufzählung", + "italic": "Kursiv", + "small": "Klein", + "bold": "Kühn", + "placeholder": "Schreiben Sie Ihre Notiz...", + "openLink": "Offen", + "showAuthor": "Autor anzeigen", + "medium": "Mittel", + "unlink": "Trennen", + "link": "Verbinden", + "enterUrl": "URL eingeben...", + "invalidUrl": "Ungültige URL" + }, + "addNote": "Notiz hinzufügen" + }, + "docExtractor": { + "outputVars": { + "text": "Extrahierter Text" + }, + "supportFileTypes": "Unterstützte Dateitypen: {{types}}.", + "inputVar": "Eingabevariable", + "learnMore": "Weitere Informationen" + }, + "listFilter": { + "outputVars": { + "first_record": "Erste Aufnahme", + "result": "Ergebnis filtern", + "last_record": "Letzter Datensatz" + }, + "asc": "ASC", + "limit": "Top N", + "desc": "DESC", + "orderBy": "Sortieren nach", + "inputVar": "Eingabevariable", + "filterConditionComparisonOperator": "Operator für den Bedingungsvergleich filtern", + "filterConditionComparisonValue": "Wert der Filterbedingung", + "filterConditionKey": "Bedingungsschlüssel filtern", + "filterCondition": "Filter-Bedingung", + "selectVariableKeyPlaceholder": "Untervariablenschlüssel auswählen", + "extractsCondition": "Extrahieren des N-Elements" + }, + "agent": { + "strategy": { + "configureTipDesc": "Nach der Konfiguration der agentischen Strategie lädt dieser Knoten automatisch die verbleibenden Konfigurationen. Die Strategie wirkt sich auf den Mechanismus des mehrstufigen Tool-Reasoning aus.", + "shortLabel": "Strategie", + "tooltip": "Unterschiedliche Agentenstrategien bestimmen, wie das System mehrstufige Werkzeugaufrufe plant und ausführt", + "configureTip": "Bitte konfigurieren Sie die Agentenstrategie.", + "selectTip": "Agentische Strategie auswählen", + "searchPlaceholder": "Agentenstrategie suchen", + "label": "Agentische Strategie" + }, + "pluginInstaller": { + "install": "Installieren", + "installing": "Installation" + }, + "modelNotInMarketplace": { + "desc": "Dieses Modell wird aus dem lokalen oder GitHub-Repository installiert. Bitte nach der Installation verwenden.", + "manageInPlugins": "In Plugins verwalten", + "title": "Modell nicht installiert" + }, + "modelNotSupport": { + "descForVersionSwitch": "Die installierte Plugin-Version stellt dieses Modell nicht zur Verfügung. Klicken Sie hier, um die Version zu wechseln.", + "desc": "Die installierte Plugin-Version stellt dieses Modell nicht zur Verfügung.", + "title": "Nicht unterstütztes Modell" + }, + "modelSelectorTooltips": { + "deprecated": "Dieses Modell ist veraltet" + }, + "outputVars": { + "files": { + "type": "Art der Unterstützung. Jetzt nur noch Image unterstützen", + "url": "Bild-URL", + "title": "Vom Agenten generierte Dateien", + "upload_file_id": "Datei-ID hochladen", + "transfer_method": "Übertragungsmethode. Wert ist remote_url oder local_file" + }, + "text": "Von Agenten generierte Inhalte", + "usage": "Nutzungsinformationen des Modells", + "json": "Vom Agenten generiertes JSON" + }, + "checkList": { + "strategyNotSelected": "Strategie nicht ausgewählt" + }, + "installPlugin": { + "cancel": "Abbrechen", + "desc": "Über die Installation des folgenden Plugins", + "changelog": "Änderungsprotokoll", + "title": "Plugin installieren", + "install": "Installieren" + }, + "modelNotSelected": "Modell nicht ausgewählt", + "modelNotInstallTooltip": "Dieses Modell ist nicht installiert", + "strategyNotFoundDesc": "Die installierte Plugin-Version bietet diese Strategie nicht.", + "unsupportedStrategy": "Nicht unterstützte Strategie", + "toolNotInstallTooltip": "{{tool}} ist nicht installiert", + "notAuthorized": "Nicht autorisiert", + "pluginNotInstalled": "Dieses Plugin ist nicht installiert", + "toolbox": "Werkzeugkasten", + "toolNotAuthorizedTooltip": "{{Werkzeug}} Nicht autorisiert", + "maxIterations": "Max. Iterationen", + "model": "Modell", + "strategyNotInstallTooltip": "{{strategy}} ist nicht installiert", + "pluginNotInstalledDesc": "Dieses Plugin wird von GitHub installiert. Bitte gehen Sie zu Plugins, um sie neu zu installieren", + "strategyNotSet": "Agentische Strategie nicht festgelegt", + "strategyNotFoundDescAndSwitchVersion": "Die installierte Plugin-Version bietet diese Strategie nicht. Klicken Sie hier, um die Version zu wechseln.", + "tools": "Werkzeuge", + "pluginNotFoundDesc": "Dieses Plugin wird von GitHub installiert. Bitte gehen Sie zu Plugins, um sie neu zu installieren", + "learnMore": "Weitere Informationen", + "configureModel": "Modell konfigurieren", + "linkToPlugin": "Link zu Plugins", + "parameterSchema": "Parameter-Schema", + "clickToViewParameterSchema": "Klicken Sie hier, um das Parameterschema anzuzeigen." + }, + "loop": { + "ErrorMethod": { + "removeAbnormalOutput": "Abnormale Ausgaben entfernen", + "continueOnError": "Fortfahren bei Fehler", + "operationTerminated": "Beendet" + }, + "comma": ",", + "loopNode": "Schleifen-Knoten", + "loop_other": "{{count}} Schleifen", + "totalLoopCount": "Gesamtanzahl der Schleifen: {{count}}", + "deleteDesc": "Das Löschen des Schleifen-Knotens entfernt alle untergeordneten Knoten.", + "loopVariables": "Schleifenvariablen", + "loop_one": "{{count}} Schleife", + "breakCondition": "Schleifenbeendigungsbedingung", + "setLoopVariables": "Setze Variablen innerhalb des Schleifenbereichs", + "breakConditionTip": "Nur Variablen innerhalb von Schleifen mit Abbruchbedingungen und Konversationsvariablen können referenziert werden.", + "loopMaxCountError": "Bitte geben Sie eine gültige maximale Schleifenanzahl ein, die von 1 bis {{maxCount}} reicht.", + "deleteTitle": "Schleifen-Knoten löschen?", + "currentLoop": "Aktueller Loop", + "loopMaxCount": "Maximale Schleifenanzahl", + "finalLoopVariables": "Endgültige Schleifenvariablen", + "exitConditionTip": "Ein Schleifen-Knoten benötigt mindestens eine Ausgangsbedingung.", + "errorResponseMethod": "Fehlerantwortmethode", + "initialLoopVariables": "Ursprüngliche Schleifenvariablen", + "variableName": "Variablenname", + "error_one": "{{count}} Fehler", + "currentLoopCount": "Aktuelle Schleifenanzahl: {{count}}", + "inputMode": "Eingabemodus", + "error_other": "{{count}} Fehler", + "output": "Ausgabewert", + "input": "Eingabe" + }, + "dataSource": { + "add": "Hinzufügen einer Datenquelle", + "supportedFileFormats": "Unterstützte Dateiformate", + "supportedFileFormatsPlaceholder": "Dateiendung, e.g. doc" + }, + "knowledgeBase": { + "chunkStructureTip": { + "learnMore": "Weitere Informationen", + "title": "Bitte wählen Sie eine Chunk-Struktur", + "message": "Die Dify-Wissensdatenbank unterstützt drei Chunking-Strukturen: Allgemein, Über- und Untergeordnetes Element und Q&A. Jede Wissensdatenbank kann nur eine Struktur haben. Die Ausgabe des vorherigen Knotens muss an der ausgewählten Blockstruktur ausgerichtet sein. Beachten Sie, dass sich die Wahl der Chunking-Struktur auf die verfügbaren Indexmethoden auswirkt." + }, + "changeChunkStructure": "Chunk-Struktur ändern", + "retrievalSettingIsRequired": "Abrufeinstellung ist erforderlich", + "chunkStructure": "Chunk-Struktur", + "indexMethodIsRequired": "Index-Methode ist erforderlich", + "aboutRetrieval": "Über die Abrufmethode.", + "chooseChunkStructure": "Auswählen einer Chunk-Struktur", + "chunkIsRequired": "Chunk-Struktur ist erforderlich", + "chunksInput": "Stücke", + "chunksInputTip": "Die Eingangsvariable des Wissensbasis-Knotens sind Chunks. Der Variablentyp ist ein Objekt mit einem spezifischen JSON-Schema, das konsistent mit der ausgewählten Chunk-Struktur sein muss.", + "embeddingModelIsRequired": "Ein Einbettungsmodell ist erforderlich", + "chunksVariableIsRequired": "Die Variable 'Chunks' ist erforderlich", + "rerankingModelIsRequired": "Ein Reranking-Modell ist erforderlich", + "embeddingModelIsInvalid": "Einbettungsmodell ist ungültig", + "rerankingModelIsInvalid": "Das Reranking-Modell ist ungültig" + }, + "triggerPlugin": { + "authorized": "Autorisiert", + "notConfigured": "Nicht konfiguriert", + "notAuthorized": "Nicht autorisiert", + "selectSubscription": "Abonnement auswählen", + "availableSubscriptions": "Verfügbare Abonnements", + "addSubscription": "Neue Anmeldung hinzufügen", + "removeSubscription": "Abonnement kündigen", + "subscriptionRemoved": "Abonnement erfolgreich entfernt", + "error": "Fehler", + "configuration": "Konfiguration", + "remove": "Entfernen", + "or": "ODER", + "useOAuth": "OAuth verwenden", + "useApiKey": "API-Schlüssel verwenden", + "authenticationFailed": "Authentifizierung fehlgeschlagen", + "authenticationSuccess": "Authentifizierung erfolgreich", + "oauthConfigFailed": "OAuth-Konfiguration fehlgeschlagen", + "configureOAuthClient": "OAuth-Client konfigurieren", + "oauthClientDescription": "Konfigurieren Sie OAuth-Client-Anmeldeinformationen, um die Authentifizierung zu ermöglichen", + "oauthClientSaved": "OAuth-Clientkonfiguration erfolgreich gespeichert", + "configureApiKey": "API-Schlüssel konfigurieren", + "apiKeyDescription": "API-Schlüssel-Anmeldeinformationen für die Authentifizierung konfigurieren", + "apiKeyConfigured": "API-Schlüssel erfolgreich konfiguriert", + "configurationFailed": "Konfiguration fehlgeschlagen", + "failedToStart": "Authentifizierungsablauf konnte nicht gestartet werden", + "credentialsVerified": "Anmeldedaten erfolgreich überprüft", + "credentialVerificationFailed": "Anmeldeinformationen konnten nicht überprüft werden", + "verifyAndContinue": "Überprüfen & Fortfahren", + "configureParameters": "Parameter konfigurieren", + "parametersDescription": "Trigger-Parameter und -Eigenschaften konfigurieren", + "configurationComplete": "Konfiguration abgeschlossen", + "configurationCompleteDescription": "Ihr Trigger wurde erfolgreich konfiguriert", + "configurationCompleteMessage": "Ihre Auslöserkonfiguration ist jetzt abgeschlossen und einsatzbereit.", + "parameters": "Parameter", + "properties": "Eigenschaften", + "propertiesDescription": "Zusätzliche Konfigurationseigenschaften für diesen Auslöser", + "noConfigurationRequired": "Für diesen Auslöser ist keine zusätzliche Konfiguration erforderlich.", + "subscriptionName": "Abonnementname", + "subscriptionNameDescription": "Geben Sie einen eindeutigen Namen für dieses Trigger-Abonnement ein", + "subscriptionNamePlaceholder": "Abonnementnamen eingeben...", + "subscriptionNameRequired": "Der Abonnementname ist erforderlich", + "subscriptionRequired": "Abonnement erforderlich" + }, + "triggerSchedule": { + "title": "Zeitplan", + "nodeTitle": "Zeitplan-Auslöser", + "notConfigured": "Nicht konfiguriert", + "useCronExpression": "Cron-Ausdruck verwenden", + "useVisualPicker": "Visuellen Auswähler verwenden", + "frequency": { + "label": "FREQUENZ", + "hourly": "Stündlich", + "daily": "Täglich", + "weekly": "Wöchentlich", + "monthly": "Monatlich" + }, + "selectFrequency": "Frequenz auswählen", + "frequencyLabel": "Frequenz", + "nextExecution": "Nächste Ausführung", + "weekdays": "Wochentage", + "time": "Zeit", + "cronExpression": "Cron-Ausdruck", + "nextExecutionTime": "NÄCHSTE AUSFÜHRUNGSZEIT", + "nextExecutionTimes": "Nächste 5 Ausführungszeiten", + "startTime": "Startzeit", + "executeNow": "Jetzt ausführen", + "selectDateTime": "Datum und Uhrzeit auswählen", + "hours": "Stunden", + "minutes": "Protokoll", + "onMinute": "In einer Minute", + "days": "Tage", + "lastDay": "Letzter Tag", + "lastDayTooltip": "Nicht alle Monate haben 31 Tage. Verwenden Sie die Option ‚Letzter Tag‘, um den letzten Tag jedes Monats auszuwählen.", + "mode": "Mode", + "timezone": "Zeitzone", + "visualConfig": "Visuelle Konfiguration", + "monthlyDay": "Monatlicher Tag", + "executionTime": "Ausführungszeit", + "invalidTimezone": "Ungültige Zeitzone", + "invalidCronExpression": "Ungültiger Cron-Ausdruck", + "noValidExecutionTime": "Es kann keine gültige Ausführungszeit berechnet werden", + "executionTimeCalculationError": "Fehler beim Berechnen der Ausführungszeiten", + "invalidFrequency": "Ungültige Frequenz", + "invalidStartTime": "Ungültige Startzeit", + "startTimeMustBeFuture": "Die Startzeit muss in der Zukunft liegen", + "invalidTimeFormat": "Ungültiges Zeitformat (erwartet HH:MM AM/PM)", + "invalidWeekday": "Ungültiger Wochentag: {{weekday}}", + "invalidMonthlyDay": "Der monatliche Tag muss zwischen 1 und 31 oder \"letzter\" liegen", + "invalidOnMinute": "Die Minute muss zwischen 0 und 59 liegen", + "invalidExecutionTime": "Ungültige Ausführungszeit", + "executionTimeMustBeFuture": "Die Ausführungszeit muss in der Zukunft liegen" + }, + "triggerWebhook": { + "title": "Webhook-Auslöser", + "nodeTitle": "🔗 Webhook-Auslöser", + "configPlaceholder": "Webhook-Trigger-Konfiguration wird hier implementiert", + "webhookUrl": "Webhook-URL", + "webhookUrlPlaceholder": "Klicken Sie auf Erstellen, um die Webhook-URL zu erstellen", + "generate": "Erzeugen", + "copy": "Kopieren", + "test": "Test", + "urlGenerated": "Webhook-URL erfolgreich erstellt", + "urlGenerationFailed": "Fehler beim Erstellen der Webhook-URL", + "urlCopied": "URL in die Zwischenablage kopiert", + "method": "Methode", + "contentType": "Inhaltstyp", + "queryParameters": "Abfrageparameter", + "headerParameters": "Header-Parameter", + "requestBodyParameters": "Anforderungs-Body-Parameter", + "parameterName": "Variablenname", + "varName": "Variablenname", + "varType": "Typ", + "varNamePlaceholder": "Variablennamen eingeben...", + "required": "Erforderlich", + "addParameter": "Hinzufügen", + "addHeader": "Hinzufügen", + "noParameters": "Keine Parameter konfiguriert", + "noQueryParameters": "Keine Abfrageparameter konfiguriert", + "noHeaders": "Keine Kopfzeilen konfiguriert", + "noBodyParameters": "Keine Körperparameter konfiguriert", + "debugUrlTitle": "Für Testläufe verwenden Sie immer diese URL", + "debugUrlCopy": "Zum Kopieren klicken", + "debugUrlCopied": "Kopiert!", + "debugUrlPrivateAddressWarning": "Diese URL scheint eine interne Adresse zu sein, was dazu führen kann, dass Webhook-Anfragen fehlschlagen. Sie können TRIGGER_URL auf eine öffentliche Adresse ändern.", + "errorHandling": "Fehlerbehandlung", + "errorStrategy": "Fehlerbehandlung", + "responseConfiguration": "Antwort", + "asyncMode": "Asynchroner Modus", + "statusCode": "Statuscode", + "responseBody": "Antworttext", + "responseBodyPlaceholder": "Schreiben Sie hier Ihren Antworttext", + "headers": "Überschriften", + "validation": { + "webhookUrlRequired": "Webhook-URL ist erforderlich", + "invalidParameterType": "Ungültiger Parametertyp \"{{type}}\" für den Parameter \"{{name}}\"" + } + } + }, + "tracing": { + "stopBy": "Gestoppt von {{user}}" + }, + "variableReference": { + "noAvailableVars": "Keine verfügbaren Variablen", + "conversationVars": "Konversations-Variablen", + "noAssignedVars": "Keine verfügbaren zugewiesenen Variablen", + "noVarsForOperation": "Es stehen keine Variablen für die Zuweisung mit der ausgewählten Operation zur Verfügung.", + "assignedVarsDescription": "Zugewiesene Variablen müssen beschreibbare Variablen sein, z. B." + }, + "versionHistory": { + "filter": { + "all": "Alle", + "onlyShowNamedVersions": "Nur benannte Versionen anzeigen", + "onlyYours": "Nur dein", + "reset": "Filter zurücksetzen", + "empty": "Kein passendes Versionsprotokoll gefunden." + }, + "editField": { + "releaseNotesLengthLimit": "Die Versionshinweise dürfen {{limit}} Zeichen nicht überschreiten.", + "titleLengthLimit": "Der Titel darf {{limit}} Zeichen nicht überschreiten.", + "releaseNotes": "Versionshinweise", + "title": "Titel" + }, + "action": { + "restoreFailure": "Wiederherstellung der Version fehlgeschlagen", + "updateSuccess": "Version aktualisiert", + "deleteSuccess": "Version gelöscht", + "deleteFailure": "Version löschen fehlgeschlagen", + "restoreSuccess": "Version wiederhergestellt", + "updateFailure": "Aktualisierung der Version fehlgeschlagen", + "copyIdSuccess": "ID in die Zwischenablage kopiert" + }, + "latest": "Neueste", + "nameThisVersion": "Nennen Sie diese Version", + "currentDraft": "Aktueller Entwurf", + "releaseNotesPlaceholder": "Beschreibe, was sich geändert hat.", + "defaultName": "Unbetitelte Version", + "title": "Versionen", + "editVersionInfo": "Versionsinformationen bearbeiten", + "deletionTip": "Die Löschung ist unumkehrbar, bitte bestätigen Sie.", + "restorationTip": "Nach der Wiederherstellung der Version wird der aktuelle Entwurf überschrieben.", + "copyId": "ID kopieren" + }, + "debug": { + "noData": { + "runThisNode": "Führe diesen Knoten aus", + "description": "Die Ergebnisse des letzten Laufs werden hier angezeigt." + }, + "variableInspect": { + "trigger": { + "normal": "Variable untersuchen", + "stop": "Halt an", + "running": "Caching-Betriebsstatus", + "clear": "Klar", + "cached": "Cached-Variablen anzeigen" + }, + "title": "Variable untersuchen", + "clearAll": "Alles zurücksetzen", + "emptyLink": "Erfahren Sie mehr", + "view": "Protokoll anzeigen", + "systemNode": "System", + "edited": "Bearbeitet", + "clearNode": "Cache-Variable löschen", + "envNode": "Umwelt", + "chatNode": "Gespräch", + "resetConversationVar": "Setze die Gesprächsvariable auf den Standardwert zurück", + "reset": "Auf den letzten Ausführungswert zurücksetzen", + "emptyTip": "Nachdem Sie einen Knoten auf der Leinwand durchlaufen oder einen Knoten Schritt für Schritt ausgeführt haben, können Sie den aktuellen Wert der Knotenvariable in der Variableninspektion anzeigen.", + "largeData": "Große Datenmengen, schreibgeschützte Vorschau. Exportieren, um alle anzuzeigen.", + "export": "exportieren", + "exportToolTip": "Variable als Datei exportieren", + "largeDataNoExport": "Große Datenmengen – nur teilweise Vorschau", + "listening": { + "title": "Höre auf Ereignisse von Triggern...", + "tip": "Sie können jetzt Ereignisauslöser simulieren, indem Sie Testanfragen an den HTTP-{{nodeName}}-Endpunkt senden oder ihn als Rückruf-URL für das Live-Debugging von Ereignissen verwenden. Alle Ausgaben können direkt im Variableninspektor angezeigt werden.", + "tipPlugin": "Jetzt können Sie in {{- pluginName}} Ereignisse erstellen und Ausgaben dieser Ereignisse im Variableninspektor abrufen.", + "tipSchedule": "Hört auf Ereignisse von Zeitplan-Auslösern. Nächster geplanter Lauf: {{nextTriggerTime}}", + "tipFallback": "Auf eingehende Trigger-Ereignisse warten. Ausgaben werden hier angezeigt.", + "defaultNodeName": "dieser Auslöser", + "defaultPluginName": "dieses Plugin auslösen", + "defaultScheduleTime": "Nicht konfiguriert", + "selectedTriggers": "ausgewählte Auslöser", + "stopButton": "Stopp" + } + }, + "settingsTab": "Einstellungen", + "lastRunTab": "Letzte Ausführung", + "relations": { + "dependents": "Angehörige", + "dependenciesDescription": "Knoten, auf die sich dieser Knoten stützt", + "dependencies": "Abhängigkeiten", + "noDependencies": "Keine Abhängigkeiten", + "dependentsDescription": "Knoten, die auf diesem Knoten basieren", + "noDependents": "Keine Angehörigen" + }, + "relationsTab": "Beziehungen", + "copyLastRun": "Letzte Ausführung kopieren", + "copyLastRunError": "Fehler beim Kopieren der letzten Lauf-Eingaben", + "noMatchingInputsFound": "Keine übereinstimmenden Eingaben aus dem letzten Lauf gefunden.", + "noLastRunFound": "Kein vorheriger Lauf gefunden", + "lastOutput": "Letzte Ausgabe", + "lastRunInputsCopied": "{{count}} Eingabe(n) aus dem letzten Durchlauf kopiert" + }, + "sidebar": { + "exportWarning": "Aktuelle gespeicherte Version exportieren", + "exportWarningDesc": "Dies wird die derzeit gespeicherte Version Ihres Workflows exportieren. Wenn Sie ungespeicherte Änderungen im Editor haben, speichern Sie diese bitte zuerst, indem Sie die Exportoption im Workflow-Canvas verwenden." + }, + "publishLimit": { + "startNodeTitlePrefix": "Upgrade auf", + "startNodeTitleSuffix": "uneingeschränkt viele Auslöser pro Arbeitsablauf freischalten", + "startNodeDesc": "Sie haben das Limit von 2 Auslösern pro Workflow für diesen Plan erreicht. Upgraden Sie, um diesen Workflow zu veröffentlichen." + }, + "error": { + "startNodeRequired": "Bitte füge zuerst einen Startknoten hinzu, bevor du {{operation}}.", + "operations": { + "connectingNodes": "Knoten verbinden", + "addingNodes": "Knoten hinzufügen", + "modifyingWorkflow": "Arbeitsablauf ändern", + "updatingWorkflow": "Arbeitsablauf aktualisieren" + } + }, + "customWebhook": "Benutzerdefinierter Webhook", + "difyTeam": "Dify-Team", + "triggerStatus": { + "enabled": "AUSLÖSER", + "disabled": "AUSLÖSER • DEAKTIVIERT" + }, + "entryNodeStatus": { + "enabled": "START", + "disabled": "START • DEAKTIVIERT" + }, + "onboarding": { + "title": "Wählen Sie einen Startknoten, um zu beginnen", + "description": "Verschiedene Startknoten haben unterschiedliche Fähigkeiten. Keine Sorge, du kannst sie später jederzeit ändern.", + "userInputFull": "Benutzereingabe (ursprünglicher Startknoten)", + "userInputDescription": "Startknoten, der das Festlegen von Benutzereingabevariablen ermöglicht, mit Web-App, Service-API, MCP-Server und Workflow als Werkzeugfunktionen.", + "trigger": "Auslöser", + "triggerDescription": "Trigger können als Startpunkt eines Workflows dienen, wie zum Beispiel geplante Aufgaben, benutzerdefinierte Webhooks oder Integrationen mit anderen Apps.", + "back": "Zurück", + "learnMore": "Mehr erfahren", + "aboutStartNode": "über den Startknoten.", + "escTip": { + "press": "Presse", + "key": "esc", + "toDismiss": "entlassen" + } + } +} diff --git a/web/i18n/de-DE/workflow.ts b/web/i18n/de-DE/workflow.ts deleted file mode 100644 index d670d97d5b..0000000000 --- a/web/i18n/de-DE/workflow.ts +++ /dev/null @@ -1,1296 +0,0 @@ -const translation = { - common: { - undo: 'Rückgängig', - redo: 'Wiederholen', - editing: 'Bearbeitung', - autoSaved: 'Automatisch gespeichert', - unpublished: 'Unveröffentlicht', - published: 'Veröffentlicht', - publish: 'Veröffentlichen', - update: 'Aktualisieren', - run: 'Test ausführen', - running: 'Wird ausgeführt', - inRunMode: 'Im Ausführungsmodus', - inPreview: 'In der Vorschau', - inPreviewMode: 'Im Vorschaumodus', - preview: 'Vorschau', - viewRunHistory: 'Ausführungsverlauf anzeigen', - runHistory: 'Ausführungsverlauf', - goBackToEdit: 'Zurück zum Editor', - conversationLog: 'Konversationsprotokoll', - debugAndPreview: 'Vorschau', - restart: 'Neustarten', - currentDraft: 'Aktueller Entwurf', - currentDraftUnpublished: 'Aktueller Entwurf unveröffentlicht', - latestPublished: 'Zuletzt veröffentlicht', - publishedAt: 'Veröffentlicht am', - restore: 'Wiederherstellen', - runApp: 'App ausführen', - batchRunApp: 'App im Batch-Modus ausführen', - accessAPIReference: 'API-Referenz aufrufen', - embedIntoSite: 'In die Webseite einbetten', - addTitle: 'Titel hinzufügen...', - addDescription: 'Beschreibung hinzufügen...', - noVar: 'Keine Variable', - searchVar: 'Variable suchen', - variableNamePlaceholder: 'Variablenname', - setVarValuePlaceholder: 'Variable setzen', - needConnectTip: 'Dieser Schritt ist mit nichts verbunden', - maxTreeDepth: 'Maximales Limit von {{depth}} Knoten pro Ast', - workflowProcess: 'Arbeitsablauf', - notRunning: 'Noch nicht ausgeführt', - previewPlaceholder: 'Geben Sie den Inhalt in das Feld unten ein, um das Debuggen des Chatbots zu starten', - effectVarConfirm: { - title: 'Variable entfernen', - content: 'Die Variable wird in anderen Knoten verwendet. Möchten Sie sie trotzdem entfernen?', - }, - insertVarTip: 'Drücken Sie die Taste \'/\' zum schnellen Einfügen', - processData: 'Daten verarbeiten', - input: 'Eingabe', - output: 'Ausgabe', - jinjaEditorPlaceholder: 'Tippen Sie \'/\' oder \'{\' um eine Variable einzufügen', - viewOnly: 'Nur anzeigen', - showRunHistory: 'Ausführungsverlauf anzeigen', - enableJinja: 'Jinja-Vorlagenunterstützung aktivieren', - learnMore: 'Mehr erfahren', - copy: 'Kopieren', - duplicate: 'Duplizieren', - pasteHere: 'Hier einfügen', - pointerMode: 'Zeigermodus', - handMode: 'Handmodus', - model: 'Modell', - workflowAsTool: 'Workflow als Tool', - configureRequired: 'Konfiguration erforderlich', - configure: 'Konfigurieren', - manageInTools: 'In den Tools verwalten', - workflowAsToolTip: 'Nach dem Workflow-Update ist eine Neukonfiguration des Tools erforderlich.', - viewDetailInTracingPanel: 'Details anzeigen', - importDSL: 'DSL importieren', - importFailure: 'Fehler beim Import', - syncingData: 'Synchronisieren von Daten, nur wenige Sekunden.', - chooseDSL: 'Wählen Sie eine DSL(yml)-Datei', - importSuccess: 'Erfolg beim Import', - importDSLTip: 'Der aktuelle Entwurf wird überschrieben. Exportieren Sie den Workflow vor dem Import als Backup.', - overwriteAndImport: 'Überschreiben und Importieren', - backupCurrentDraft: 'Aktuellen Entwurf sichern', - parallelTip: { - click: { - title: 'Klicken', - desc: 'hinzuzufügen', - }, - drag: { - title: 'Ziehen', - desc: 'um eine Verbindung herzustellen', - }, - limit: 'Die Parallelität ist auf {{num}} Zweige beschränkt.', - depthLimit: 'Begrenzung der parallelen Verschachtelungsschicht von {{num}} Schichten', - }, - disconnect: 'Trennen', - jumpToNode: 'Zu diesem Knoten springen', - addParallelNode: 'Parallelen Knoten hinzufügen', - parallel: 'PARALLEL', - branch: 'ZWEIG', - ImageUploadLegacyTip: 'Sie können jetzt Dateitypvariablen im Startformular erstellen. Wir werden die Funktion zum Hochladen von Bildern in Zukunft nicht mehr unterstützen.', - fileUploadTip: 'Die Funktionen zum Hochladen von Bildern wurden auf das Hochladen von Dateien aktualisiert.', - importWarning: 'Vorsicht', - importWarningDetails: 'Der Unterschied zwischen den DSL-Versionen kann sich auf bestimmte Funktionen auswirken', - openInExplore: 'In Explore öffnen', - onFailure: 'Bei Ausfall', - addFailureBranch: 'Fail-Branch hinzufügen', - loadMore: 'Weitere Workflows laden', - noHistory: 'Keine Geschichte', - exportSVG: 'Als SVG exportieren', - versionHistory: 'Versionsverlauf', - publishUpdate: 'Update veröffentlichen', - exportImage: 'Bild exportieren', - exportJPEG: 'Als JPEG exportieren', - exitVersions: 'Ausgangsversionen', - exportPNG: 'Als PNG exportieren', - addBlock: 'Knoten hinzufügen', - needOutputNode: 'Der Ausgabeknoten muss hinzugefügt werden', - needAnswerNode: 'Der Antwortknoten muss hinzugefügt werden.', - tagBound: 'Anzahl der Apps, die dieses Tag verwenden', - currentWorkflow: 'Aktueller Arbeitsablauf', - currentView: 'Aktuelle Ansicht', - moreActions: 'Weitere Aktionen', - listening: 'Zuhören', - chooseStartNodeToRun: 'Wählen Sie den Startknoten zum Ausführen', - runAllTriggers: 'Alle Auslöser ausführen', - features: 'Funktionen', - featuresDescription: 'Verbessern Sie die Benutzererfahrung der Webanwendung', - featuresDocLink: 'Mehr erfahren', - needAdd: '{{node}} Knoten muss hinzugefügt werden', - needStartNode: 'Es muss mindestens ein Startknoten hinzugefügt werden', - workflowAsToolDisabledHint: 'Veröffentlichen Sie den neuesten Workflow und stellen Sie sicher, dass ein verbundener User-Input-Knoten vorhanden ist, bevor Sie ihn als Werkzeug konfigurieren.', - }, - env: { - envPanelTitle: 'Umgebungsvariablen', - envDescription: 'Umgebungsvariablen können zur Speicherung privater Informationen und Anmeldedaten verwendet werden. Sie sind schreibgeschützt und können beim Export vom DSL-File getrennt werden.', - envPanelButton: 'Variable hinzufügen', - modal: { - title: 'Umgebungsvariable hinzufügen', - editTitle: 'Umgebungsvariable bearbeiten', - type: 'Typ', - name: 'Name', - namePlaceholder: 'Umgebungsname', - value: 'Wert', - valuePlaceholder: 'Umgebungswert', - secretTip: 'Wird verwendet, um sensible Informationen oder Daten zu definieren, wobei DSL-Einstellungen zur Verhinderung von Lecks konfiguriert sind.', - description: 'Beschreibung', - descriptionPlaceholder: 'Beschreiben Sie die Variable', - }, - export: { - title: 'Geheime Umgebungsvariablen exportieren?', - checkbox: 'Geheime Werte exportieren', - ignore: 'DSL exportieren', - export: 'DSL mit geheimen Werten exportieren', - }, - }, - globalVar: { - title: 'Systemvariablen', - description: 'Systemvariablen sind globale Variablen, die von jedem Knoten ohne Verkabelung referenziert werden können, sofern der Typ passt, etwa Endnutzer-ID und Workflow-ID.', - fieldsDescription: { - conversationId: 'Konversations-ID', - dialogCount: 'Konversationsanzahl', - userId: 'Benutzer-ID', - triggerTimestamp: 'Zeitstempel des Anwendungsstarts', - appId: 'Anwendungs-ID', - workflowId: 'Workflow-ID', - workflowRunId: 'Workflow-Ausführungs-ID', - }, - }, - chatVariable: { - panelTitle: 'Gesprächsvariablen', - panelDescription: 'Gesprächsvariablen werden verwendet, um interaktive Informationen zu speichern, die das LLM benötigt, einschließlich Gesprächsverlauf, hochgeladene Dateien und Benutzereinstellungen. Sie sind les- und schreibbar.', - docLink: 'Besuchen Sie unsere Dokumentation für weitere Informationen.', - button: 'Variable hinzufügen', - modal: { - title: 'Gesprächsvariable hinzufügen', - editTitle: 'Gesprächsvariable bearbeiten', - name: 'Name', - namePlaceholder: 'Variablenname', - type: 'Typ', - value: 'Standardwert', - valuePlaceholder: 'Standardwert, leer lassen für keine Festlegung', - description: 'Beschreibung', - descriptionPlaceholder: 'Beschreiben Sie die Variable', - editInJSON: 'In JSON bearbeiten', - oneByOne: 'Einzeln hinzufügen', - editInForm: 'Im Formular bearbeiten', - arrayValue: 'Wert', - addArrayValue: 'Wert hinzufügen', - objectKey: 'Schlüssel', - objectType: 'Typ', - objectValue: 'Standardwert', - }, - storedContent: 'Gespeicherter Inhalt', - updatedAt: 'Aktualisiert am ', - }, - changeHistory: { - title: 'Änderungsverlauf', - placeholder: 'Du hast noch nichts geändert', - clearHistory: 'Änderungsverlauf löschen', - hint: 'Hinweis', - hintText: 'Änderungen werden im Änderungsverlauf aufgezeichnet, der für die Dauer dieser Sitzung auf Ihrem Gerät gespeichert wird. Dieser Verlauf wird gelöscht, wenn Sie den Editor verlassen.', - stepBackward_one: '{{count}} Schritt zurück', - stepBackward_other: '{{count}} Schritte zurück', - stepForward_one: '{{count}} Schritt vorwärts', - stepForward_other: '{{count}} Schritte vorwärts', - sessionStart: 'Sitzungsstart', - currentState: 'Aktueller Zustand', - noteAdd: 'Notiz hinzugefügt', - noteChange: 'Notiz geändert', - noteDelete: 'Notiz gelöscht', - edgeDelete: 'Knoten getrennt', - nodeAdd: 'Knoten hinzugefügt', - nodeTitleChange: 'Knotenüberschrift geändert', - nodePaste: 'Knoten eingefügt', - nodeResize: 'Knoten verkleinert', - nodeDescriptionChange: 'Die Knotenbeschreibung wurde geändert', - nodeChange: 'Knoten geändert', - nodeConnect: 'Node verbunden', - nodeDragStop: 'Knoten verschoben', - nodeDelete: 'Knoten gelöscht', - }, - errorMsg: { - fieldRequired: '{{field}} ist erforderlich', - authRequired: 'Autorisierung ist erforderlich', - invalidJson: '{{field}} ist ein ungültiges JSON', - fields: { - variable: 'Variablenname', - variableValue: 'Variablenwert', - code: 'Code', - model: 'Modell', - rerankModel: 'Neusortierungsmodell', - visionVariable: 'Vision variabel', - }, - invalidVariable: 'Ungültige Variable', - rerankModelRequired: 'Bevor Sie das Rerank-Modell aktivieren, bestätigen Sie bitte, dass das Modell in den Einstellungen erfolgreich konfiguriert wurde.', - toolParameterRequired: '{{field}}: Parameter [{{param}}] ist erforderlich', - noValidTool: '{{field}} kein gültiges Werkzeug ausgewählt', - startNodeRequired: 'Bitte füge zuerst einen Startknoten hinzu, bevor du {{operation}}.', - }, - singleRun: { - testRun: 'Testlauf ', - startRun: 'Lauf starten', - running: 'Wird ausgeführt', - testRunIteration: 'Testlaufiteration', - back: 'Zurück', - iteration: 'Iteration', - loop: 'Schleife', - reRun: 'Erneuter Lauf', - preparingDataSource: 'Vorbereiten der Datenquelle', - }, - tabs: { - 'tools': 'Werkzeuge', - 'allTool': 'Alle', - 'customTool': 'Benutzerdefiniert', - 'workflowTool': 'Arbeitsablauf', - 'question-understand': 'Fragen verstehen', - 'logic': 'Logik', - 'transform': 'Transformieren', - 'utilities': 'Dienstprogramme', - 'noResult': 'Kein Ergebnis gefunden', - 'searchTool': 'Suchwerkzeug', - 'plugin': 'Stecker', - 'agent': 'Agenten-Strategie', - 'searchBlock': 'Suchknoten', - 'blocks': 'Knoten', - 'allAdded': 'Alle hinzugefügt', - 'addAll': 'Alles hinzufügen', - 'sources': 'Quellen', - 'searchDataSource': 'Datenquelle durchsuchen', - 'start': 'Start', - 'searchTrigger': 'Suchauslöser...', - 'allTriggers': 'Alle Auslöser', - 'noPluginsFound': 'Es wurden keine Plugins gefunden', - 'requestToCommunity': 'Anfragen an die Community', - 'featuredTools': 'Ausgewählt', - 'showMoreFeatured': 'Mehr anzeigen', - 'showLessFeatured': 'Weniger anzeigen', - 'installed': 'Installiert', - 'pluginByAuthor': 'Von {{author}}', - 'usePlugin': 'Werkzeug auswählen', - 'hideActions': 'Werkzeuge ausblenden', - 'noFeaturedPlugins': 'Entdecken Sie weitere Tools im Marktplatz', - 'noFeaturedTriggers': 'Entdecken Sie weitere Auslöser im Marketplace', - 'startDisabledTip': 'Trigger-Knoten und Benutzereingabeknoten schließen sich gegenseitig aus.', - }, - blocks: { - 'start': 'Start', - 'end': 'Ausgabe', - 'answer': 'Antwort', - 'llm': 'LLM', - 'knowledge-retrieval': 'Wissensabruf', - 'question-classifier': 'Fragenklassifizierer', - 'if-else': 'WENN/SONST', - 'code': 'Code', - 'template-transform': 'Vorlage', - 'http-request': 'HTTP-Anfrage', - 'variable-assigner': 'Variablen-Zuweiser', - 'variable-aggregator': 'Variablen-Aggregator', - 'assigner': 'Variablenzuweiser', - 'iteration-start': 'Iterationsstart', - 'iteration': 'Iteration', - 'parameter-extractor': 'Parameter-Extraktor', - 'list-operator': 'List-Operator', - 'document-extractor': 'Doc Extraktor', - 'agent': 'Agent', - 'loop': 'Schleife', - 'loop-start': 'Schleifenbeginn', - 'loop-end': 'Schleife beenden', - 'datasource': 'Datenquelle', - 'knowledge-index': 'Wissensdatenbank', - 'originalStartNode': 'ursprünglicher Startknoten', - 'trigger-schedule': 'Zeitplan-Auslöser', - 'trigger-webhook': 'Webhook-Auslöser', - 'trigger-plugin': 'Plugin-Auslöser', - }, - blocksAbout: { - 'start': 'Definieren Sie die Anfangsparameter zum Starten eines Workflows', - 'end': 'Definieren Sie die Ausgabe und den Ergebnistyp eines Workflows', - 'answer': 'Definieren Sie den Antwortinhalt einer Chat-Konversation', - 'llm': 'Große Sprachmodelle aufrufen, um Fragen zu beantworten oder natürliche Sprache zu verarbeiten', - 'knowledge-retrieval': 'Ermöglicht das Abfragen von Textinhalten, die sich auf Benutzerfragen aus der Wissensdatenbank beziehen', - 'question-classifier': 'Definieren Sie die Klassifizierungsbedingungen von Benutzerfragen, LLM kann basierend auf der Klassifikationsbeschreibung festlegen, wie die Konversation fortschreitet', - 'if-else': 'Ermöglicht das Aufteilen des Workflows in zwei Zweige basierend auf if/else-Bedingungen', - 'code': 'Ein Stück Python- oder NodeJS-Code ausführen, um benutzerdefinierte Logik zu implementieren', - 'template-transform': 'Daten in Zeichenfolgen mit Jinja-Vorlagensyntax umwandeln', - 'http-request': 'Ermöglichen, dass Serveranforderungen über das HTTP-Protokoll gesendet werden', - 'variable-assigner': 'Variablen aus mehreren Zweigen in eine einzige Variable zusammenführen, um eine einheitliche Konfiguration der nachgelagerten Knoten zu ermöglichen.', - 'assigner': 'Der Variablenzuweisungsknoten wird verwendet, um beschreibbaren Variablen (wie Gesprächsvariablen) Werte zuzuweisen.', - 'variable-aggregator': 'Variablen aus mehreren Zweigen in eine einzige Variable zusammenführen, um eine einheitliche Konfiguration der nachgelagerten Knoten zu ermöglichen.', - 'iteration': 'Mehrere Schritte an einem Listenobjekt ausführen, bis alle Ergebnisse ausgegeben wurden.', - 'parameter-extractor': 'Verwenden Sie LLM, um strukturierte Parameter aus natürlicher Sprache für Werkzeugaufrufe oder HTTP-Anfragen zu extrahieren.', - 'list-operator': 'Wird verwendet, um Array-Inhalte zu filtern oder zu sortieren.', - 'document-extractor': 'Wird verwendet, um hochgeladene Dokumente in Textinhalte zu analysieren, die für LLM leicht verständlich sind.', - 'agent': 'Aufruf großer Sprachmodelle zur Beantwortung von Fragen oder zur Verarbeitung natürlicher Sprache', - 'loop': 'Führen Sie eine Schleife aus, bis die Abschlussbedingungen erfüllt sind oder die maximalen Schleifenanzahl erreicht ist.', - 'loop-end': 'Entspricht "break". Dieser Knoten hat keine Konfigurationselemente. Wenn der Schleifenrumpf diesen Knoten erreicht, wird die Schleife beendet.', - 'datasource': 'Datenquelle Über', - 'knowledge-index': 'Wissensdatenbank Über', - 'trigger-schedule': 'Zeitbasierter Workflow-Auslöser, der Workflows nach einem Zeitplan startet', - 'trigger-webhook': 'Webhook-Trigger empfängt HTTP-Pushes von Drittanbietersystemen, um Workflows automatisch auszulösen.', - 'trigger-plugin': 'Auslöser für die Integration von Drittanbietern, der Workflows anhand von Ereignissen externer Plattformen startet', - }, - operator: { - zoomIn: 'Vergrößern', - zoomOut: 'Verkleinern', - zoomTo50: 'Auf 50% vergrößern', - zoomTo100: 'Auf 100% vergrößern', - zoomToFit: 'An Bildschirm anpassen', - selectionAlignment: 'Ausrichtung der Auswahl', - alignLeft: 'Links', - alignTop: 'Nach oben', - distributeVertical: 'Vertikal verteilen', - alignBottom: 'Nach unten', - distributeHorizontal: 'Horizontal verteilen', - vertical: 'Vertikal', - alignMiddle: 'Mitte', - alignCenter: 'Mitte', - alignRight: 'Rechts', - alignNodes: 'Knoten ausrichten', - horizontal: 'Horizontal', - }, - panel: { - userInputField: 'Benutzereingabefeld', - helpLink: 'Hilfe', - about: 'Über', - createdBy: 'Erstellt von ', - nextStep: 'Nächster Schritt', - runThisStep: 'Diesen Schritt ausführen', - checklist: 'Checkliste', - checklistTip: 'Stellen Sie sicher, dass alle Probleme vor der Veröffentlichung gelöst sind', - checklistResolved: 'Alle Probleme wurden gelöst', - change: 'Ändern', - optional: '(optional)', - selectNextStep: 'Nächsten Schritt auswählen', - addNextStep: 'Fügen Sie den nächsten Schritt in diesem Arbeitsablauf hinzu.', - organizeBlocks: 'Knoten organisieren', - changeBlock: 'Knoten ändern', - maximize: 'Maximiere die Leinwand', - minimize: 'Vollbildmodus beenden', - scrollToSelectedNode: 'Zum ausgewählten Knoten scrollen', - optional_and_hidden: '(optional & hidden)', - goTo: 'Gehe zu', - startNode: 'Startknoten', - openWorkflow: 'Workflow öffnen', - }, - nodes: { - common: { - outputVars: 'Ausgabevariablen', - insertVarTip: 'Variable einfügen', - memory: { - memory: 'Speicher', - memoryTip: 'Einstellungen des Chat-Speichers', - windowSize: 'Fenstergröße', - conversationRoleName: 'Rollenname in der Konversation', - user: 'Benutzer-Präfix', - assistant: 'Assistenten-Präfix', - }, - memories: { - title: 'Erinnerungen', - tip: 'Chat-Speicher', - builtIn: 'Eingebaut', - }, - errorHandle: { - none: { - title: 'Nichts', - desc: 'Der Knoten wird nicht mehr ausgeführt, wenn eine Ausnahme auftritt und nicht behandelt wird', - }, - defaultValue: { - title: 'Standardwert', - desc: 'Wenn ein Fehler auftritt, geben Sie einen statischen Ausgabeinhalt an.', - tip: 'Bei einem Fehler wird der untere Wert zurückgegeben.', - inLog: 'Knotenausnahme, Ausgabe nach Vorschlagswerten.', - output: 'Standardwert für die Ausgabe', - }, - failBranch: { - title: 'Fehlgeschlagener Zweig', - desc: 'Wenn ein Fehler auftritt, wird der Ausnahmezweig ausgeführt', - customize: 'Wechseln Sie zur Arbeitsfläche, um die Fehlerverzweigungslogik anzupassen.', - customizeTip: 'Wenn der Fail-Zweig aktiviert ist, wird der Prozess durch Ausnahmen, die von Knoten ausgelöst werden, nicht beendet. Stattdessen wird automatisch der vordefinierte Fehlerzweig ausgeführt, sodass Sie flexibel Fehlermeldungen, Berichte, Korrekturen oder Überspringen von Aktionen bereitstellen können.', - inLog: 'Knotenausnahme, führt den Fail-Zweig automatisch aus. Die Knotenausgabe gibt einen Fehlertyp und eine Fehlermeldung zurück und übergibt sie an den Downstream.', - }, - partialSucceeded: { - tip: 'Es gibt {{num}} Knoten im Prozess, die nicht normal laufen, bitte gehen Sie zur Ablaufverfolgung, um die Protokolle zu überprüfen.', - }, - title: 'Fehlerbehandlung', - tip: 'Ausnahmebehandlungsstrategie, die ausgelöst wird, wenn ein Knoten auf eine Ausnahme stößt.', - }, - retry: { - retry: 'Wiederholen', - retryOnFailure: 'Wiederholen bei Fehler', - maxRetries: 'Max. Wiederholungen', - retryInterval: 'Wiederholungsintervall', - retryTimes: 'Wiederholen Sie {{times}} mal bei einem Fehler', - retrying: 'Wiederholung...', - retrySuccessful: 'Wiederholen erfolgreich', - retryFailed: 'Wiederholung fehlgeschlagen', - retryFailedTimes: '{{times}} fehlgeschlagene Wiederholungen', - times: 'mal', - ms: 'Frau', - retries: '{{num}} Wiederholungen', - }, - typeSwitch: { - input: 'Eingabewert', - variable: 'Verwende die Variable', - }, - inputVars: 'Eingabevariablen', - pluginNotInstalled: 'Plugin ist nicht installiert', - }, - start: { - required: 'erforderlich', - inputField: 'Eingabefeld', - builtInVar: 'Eingebaute Variablen', - outputVars: { - query: 'Benutzereingabe', - memories: { - des: 'Konversationsverlauf', - type: 'Nachrichtentyp', - content: 'Nachrichteninhalt', - }, - files: 'Dateiliste', - }, - noVarTip: 'Legen Sie Eingaben fest, die im Workflow verwendet werden können', - }, - end: { - outputs: 'Ausgaben', - output: { - type: 'Ausgabetyp', - variable: 'Ausgabevariable', - }, - type: { - 'none': 'Keine', - 'plain-text': 'Klartext', - 'structured': 'Strukturiert', - }, - }, - answer: { - answer: 'Antwort', - outputVars: 'Ausgabevariablen', - }, - llm: { - model: 'Modell', - variables: 'Variablen', - context: 'Kontext', - contextTooltip: 'Sie können Wissen als Kontext importieren', - notSetContextInPromptTip: 'Um die Kontextfunktion zu aktivieren, füllen Sie die Kontextvariable im PROMPT aus.', - prompt: 'Prompt', - roleDescription: { - system: 'Geben Sie hochrangige Anweisungen für die Konversation', - user: 'Geben Sie dem Modell Anweisungen, Abfragen oder beliebigen texteingabebasierten Input', - assistant: 'Die Antworten des Modells basierend auf den Benutzernachrichten', - }, - addMessage: 'Nachricht hinzufügen', - vision: 'Vision', - files: 'Dateien', - resolution: { - name: 'Auflösung', - high: 'Hoch', - low: 'Niedrig', - }, - outputVars: { - output: 'Generierter Inhalt', - reasoning_content: 'Reasoning-Inhalt', - usage: 'Nutzungsinformationen des Modells', - }, - singleRun: { - variable: 'Variable', - }, - sysQueryInUser: 'sys.query in Benutzernachricht erforderlich', - jsonSchema: { - warningTips: { - saveSchema: 'Bitte beenden Sie die Bearbeitung des aktuellen Feldes, bevor Sie das Schema speichern.', - }, - stringValidations: 'Stringvalidierungen', - addField: 'Feld hinzufügen', - generateJsonSchema: 'JSON-Schema generieren', - back: 'Zurück', - addChildField: 'Kindfeld hinzufügen', - generationTip: 'Sie können natürliche Sprache verwenden, um schnell ein JSON-Schema zu erstellen.', - title: 'Strukturiertes Ausgabeschema', - resetDefaults: 'Zurücksetzen', - showAdvancedOptions: 'Erweiterte Optionen anzeigen', - fieldNamePlaceholder: 'Feldname', - descriptionPlaceholder: 'Fügen Sie eine Beschreibung hinzu.', - resultTip: 'Hier ist das generierte Ergebnis. Wenn Sie nicht zufrieden sind, können Sie zurückgehen und Ihre Eingabeaufforderung ändern.', - generatedResult: 'Generiertes Ergebnis', - promptTooltip: 'Konvertiere die Textbeschreibung in eine standardisierte JSON-Schema-Struktur.', - promptPlaceholder: 'Beschreibe dein JSON-Schema...', - doc: 'Erfahren Sie mehr über strukturierten Output.', - required: 'erforderlich', - generate: 'Generieren', - apply: 'Bewerben', - import: 'Import aus JSON', - generating: 'Generiere JSON-Schema...', - instruction: 'Anleitung', - regenerate: 'Regenerieren', - }, - reasoningFormat: { - tooltip: 'Inhalte aus Denk-Tags extrahieren und im Feld reasoning_content speichern.', - separated: 'Separate Denk tags', - title: 'Aktivieren Sie die Trennung von Argumentations-Tags', - tagged: 'Behalte die Denk-Tags', - }, - }, - knowledgeRetrieval: { - queryVariable: 'Abfragevariable', - knowledge: 'Wissen', - outputVars: { - output: 'Abgerufene segmentierte Daten', - content: 'Segmentierter Inhalt', - title: 'Segmentierter Titel', - icon: 'Segmentiertes Symbol', - url: 'Segmentierte URL', - metadata: 'Weitere Metadaten', - files: 'Abgerufene Dateien', - }, - metadata: { - options: { - disabled: { - title: 'Deaktiviert', - subTitle: 'Keine Aktivierung der Metadatfilterung', - }, - automatic: { - desc: 'Automatisch Filterbedingungen für Metadaten basierend auf Abfragevariablen generieren.', - title: 'Automatisch', - subTitle: 'Automatisch Metadatenfilterbedingungen basierend auf der Benutzeranfrage generieren', - }, - manual: { - title: 'Handbuch', - subTitle: 'Manuell Filterbedingungen für Metadaten hinzufügen', - }, - }, - panel: { - placeholder: 'Wert eingeben', - datePlaceholder: 'Wählen Sie eine Zeit...', - add: 'Bedingung hinzufügen', - title: 'Metadatenfilterbedingungen', - select: 'Wählen Sie eine Variable aus...', - conditions: 'Bedingungen', - search: 'Suchmetadaten', - }, - title: 'Metadatenfilterung', - tip: 'Metadatenfilterung ist der Prozess, Metadatenattribute (wie Tags, Kategorien oder Zugriffsberechtigungen) zu verwenden, um die Abfrage und Kontrolle der relevanten Informationen innerhalb eines Systems zu verfeinern.', - }, - queryText: 'Abfrage Text', - queryAttachment: 'Abfragebilder', - }, - http: { - inputVars: 'Eingabevariablen', - api: 'API', - apiPlaceholder: 'Geben Sie die URL ein, tippen Sie ‘/’, um Variable einzufügen', - notStartWithHttp: 'API sollte mit http:// oder https:// beginnen', - key: 'Schlüssel', - value: 'Wert', - bulkEdit: 'Massenerfassung', - keyValueEdit: 'Schlüssel-Wert-Erfassung', - headers: 'Header', - params: 'Parameter', - body: 'Body', - outputVars: { - body: 'Antwortinhalt', - statusCode: 'Antwortstatuscode', - headers: 'Antwort-Header-Liste im JSON-Format', - files: 'Dateiliste', - }, - authorization: { - 'authorization': 'Autorisierung', - 'authorizationType': 'Autorisierungstyp', - 'no-auth': 'Keine', - 'api-key': 'API-Schlüssel', - 'auth-type': 'Autorisierungstyp', - 'basic': 'Basis', - 'bearer': 'Bearer', - 'custom': 'Benutzerdefiniert', - 'api-key-title': 'API-Schlüssel', - 'header': 'Header', - }, - insertVarPlaceholder: 'tippen Sie ‘/’, um Variable einzufügen', - timeout: { - title: 'Zeitüberschreitung', - connectLabel: 'Verbindungs-Zeitüberschreitung', - connectPlaceholder: 'Geben Sie die Verbindungs-Zeitüberschreitung in Sekunden ein', - readLabel: 'Lese-Zeitüberschreitung', - readPlaceholder: 'Geben Sie die Lese-Zeitüberschreitung in Sekunden ein', - writeLabel: 'Schreib-Zeitüberschreitung', - writePlaceholder: 'Geben Sie die Schreib-Zeitüberschreitung in Sekunden ein', - }, - type: 'Art', - binaryFileVariable: 'Variable der Binärdatei', - extractListPlaceholder: 'Geben Sie den Index des Listeneintrags ein, geben Sie \'/\' ein, fügen Sie die Variable ein', - curl: { - title: 'Importieren von cURL', - placeholder: 'Fügen Sie hier die cURL-Zeichenfolge ein', - }, - verifySSL: { - title: 'SSL-Zertifikat überprüfen', - warningTooltip: 'Das Deaktivieren der SSL-Überprüfung wird für Produktionsumgebungen nicht empfohlen. Dies sollte nur in der Entwicklung oder im Test verwendet werden, da es die Verbindung anfällig für Sicherheitsbedrohungen wie Man-in-the-Middle-Angriffe macht.', - }, - }, - code: { - inputVars: 'Eingabevariablen', - outputVars: 'Ausgabevariablen', - advancedDependencies: 'Erweiterte Abhängigkeiten', - advancedDependenciesTip: 'Fügen Sie hier einige vorinstallierte Abhängigkeiten hinzu, die mehr Zeit in Anspruch nehmen oder nicht standardmäßig eingebaut sind', - searchDependencies: 'Abhängigkeiten suchen', - syncFunctionSignature: 'Synchronisiere die Funktionssignatur mit dem Code', - }, - templateTransform: { - inputVars: 'Eingabevariablen', - code: 'Code', - codeSupportTip: 'Unterstützt nur Jinja2', - outputVars: { - output: 'Transformierter Inhalt', - }, - }, - ifElse: { - if: 'Wenn', - else: 'Sonst', - elseDescription: 'Wird verwendet, um die Logik zu definieren, die ausgeführt werden soll, wenn die if-Bedingung nicht erfüllt ist.', - and: 'und', - or: 'oder', - operator: 'Operator', - notSetVariable: 'Bitte setzen Sie zuerst die Variable', - comparisonOperator: { - 'contains': 'enthält', - 'not contains': 'enthält nicht', - 'start with': 'beginnt mit', - 'end with': 'endet mit', - 'is': 'ist', - 'is not': 'ist nicht', - 'empty': 'ist leer', - 'not empty': 'ist nicht leer', - 'null': 'ist null', - 'not null': 'ist nicht null', - 'not exists': 'existiert nicht', - 'in': 'in', - 'all of': 'alle', - 'exists': 'existiert', - 'not in': 'nicht in', - 'after': 'nach', - 'before': 'vor', - }, - enterValue: 'Wert eingeben', - addCondition: 'Bedingung hinzufügen', - conditionNotSetup: 'Bedingung NICHT eingerichtet', - selectVariable: 'Variable auswählen...', - optionName: { - video: 'Video', - url: 'URL (Englisch)', - image: 'Bild', - localUpload: 'Lokaler Upload', - audio: 'Audio', - doc: 'Doktor', - }, - select: 'Auswählen', - addSubVariable: 'Untervariable', - }, - variableAssigner: { - title: 'Variablen zuweisen', - outputType: 'Ausgabetyp', - varNotSet: 'Variable nicht gesetzt', - noVarTip: 'Fügen Sie die zuzuweisenden Variablen hinzu', - type: { - string: 'String', - number: 'Nummer', - object: 'Objekt', - array: 'Array', - }, - aggregationGroup: 'Aggregationsgruppe', - aggregationGroupTip: 'Durch Aktivieren dieser Funktion kann der Variablen-Aggregator mehrere Variablensätze aggregieren.', - addGroup: 'Gruppe hinzufügen', - outputVars: { - varDescribe: 'Ausgabe {{groupName}}', - }, - setAssignVariable: 'Zuweisungsvariable festlegen', - }, - assigner: { - 'assignedVariable': 'Zugewiesene Variable', - 'writeMode': 'Schreibmodus', - 'writeModeTip': 'Wenn die ZUGEWIESENE VARIABLE ein Array ist, fügt der Anhängemodus am Ende hinzu.', - 'over-write': 'Überschreiben', - 'append': 'Anhängen', - 'plus': 'Plus', - 'clear': 'Löschen', - 'setVariable': 'Variable setzen', - 'variable': 'Variable', - 'operations': { - 'title': 'Operation', - 'clear': 'Klar', - 'over-write': 'Überschreiben', - 'set': 'Garnitur', - '-=': '-=', - '+=': '+=', - '/=': '/=', - 'append': 'Anfügen', - 'extend': 'Ausdehnen', - '*=': '*=', - 'overwrite': 'Überschreiben', - 'remove-first': 'Erste entfernen', - 'remove-last': 'Letzte entfernen', - }, - 'setParameter': 'Parameter setzen...', - 'noVarTip': 'Klicken Sie auf die Schaltfläche "+", um Variablen hinzuzufügen', - 'variables': 'Variablen', - 'noAssignedVars': 'Keine verfügbaren zugewiesenen Variablen', - 'selectAssignedVariable': 'Zugewiesene Variable auswählen...', - 'varNotSet': 'Variable NICHT gesetzt', - 'assignedVarsDescription': 'Zugewiesene Variablen müssen beschreibbare Variablen sein, z. B. Konversationsvariablen.', - }, - tool: { - inputVars: 'Eingabevariablen', - outputVars: { - text: 'durch das Tool generierter Inhalt', - files: { - title: 'durch das Tool generierte Dateien', - type: 'Unterstützungstyp. Derzeit nur Bild unterstützt', - transfer_method: 'Übertragungsmethode. Der Wert ist remote_url oder local_file', - url: 'Bild-URL', - upload_file_id: 'Hochgeladene Datei-ID', - }, - json: 'von einem Tool generiertes JSON', - }, - authorize: 'Autorisieren', - insertPlaceholder2: 'Fügen Sie die Variable ein.', - insertPlaceholder1: 'Tippen oder drücken', - settings: 'Einstellungen', - }, - questionClassifiers: { - model: 'Modell', - inputVars: 'Eingabevariablen', - outputVars: { - className: 'Klassennamen', - usage: 'Nutzungsinformationen des Modells', - }, - class: 'Klasse', - classNamePlaceholder: 'Geben Sie Ihren Klassennamen ein', - advancedSetting: 'Erweiterte Einstellung', - topicName: 'Themenname', - topicPlaceholder: 'Geben Sie Ihren Themennamen ein', - addClass: 'Klasse hinzufügen', - instruction: 'Anweisung', - instructionTip: 'Geben Sie zusätzliche Anweisungen ein, um dem Fragenklassifizierer zu helfen, besser zu verstehen, wie Fragen kategorisiert werden sollen.', - instructionPlaceholder: 'Geben Sie Ihre Anweisung ein', - }, - parameterExtractor: { - inputVar: 'Eingabevariable', - outputVars: { - isSuccess: 'Ist Erfolg. Bei Erfolg beträgt der Wert 1, bei Misserfolg beträgt der Wert 0.', - errorReason: 'Fehlergrund', - usage: 'Nutzungsinformationen des Modells', - }, - extractParameters: 'Parameter extrahieren', - importFromTool: 'Aus Tools importieren', - addExtractParameter: 'Extraktionsparameter hinzufügen', - addExtractParameterContent: { - name: 'Name', - namePlaceholder: 'Name des Extraktionsparameters', - type: 'Typ', - typePlaceholder: 'Typ des Extraktionsparameters', - description: 'Beschreibung', - descriptionPlaceholder: 'Beschreibung des Extraktionsparameters', - required: 'Erforderlich', - requiredContent: 'Erforderlich wird nur als Referenz für die Modellschlussfolgerung verwendet und nicht für die zwingende Validierung der Parameter-Ausgabe.', - }, - extractParametersNotSet: 'Extraktionsparameter nicht eingerichtet', - instruction: 'Anweisung', - instructionTip: 'Geben Sie zusätzliche Anweisungen ein, um dem Parameter-Extraktor zu helfen, zu verstehen, wie Parameter extrahiert werden.', - advancedSetting: 'Erweiterte Einstellung', - reasoningMode: 'Schlussfolgerungsmodus', - reasoningModeTip: 'Sie können den entsprechenden Schlussfolgerungsmodus basierend auf der Fähigkeit des Modells wählen, auf Anweisungen zur Funktionsaufruf- oder Eingabeaufforderungen zu reagieren.', - }, - iteration: { - deleteTitle: 'Iterationsknoten löschen?', - deleteDesc: 'Das Löschen des Iterationsknotens löscht alle untergeordneten Knoten', - input: 'Eingabe', - output: 'Ausgabevariablen', - iteration_one: '{{count}} Iteration', - iteration_other: '{{count}} Iterationen', - currentIteration: 'Aktuelle Iteration', - ErrorMethod: { - operationTerminated: 'beendet', - removeAbnormalOutput: 'remove-abnormale_ausgabe', - continueOnError: 'Fehler "Fortfahren bei"', - }, - MaxParallelismTitle: 'Maximale Parallelität', - parallelMode: 'Paralleler Modus', - errorResponseMethod: 'Methode der Fehlerantwort', - error_one: '{{Anzahl}} Fehler', - error_other: '{{Anzahl}} Irrtümer', - MaxParallelismDesc: 'Die maximale Parallelität wird verwendet, um die Anzahl der Aufgaben zu steuern, die gleichzeitig in einer einzigen Iteration ausgeführt werden.', - parallelPanelDesc: 'Im parallelen Modus unterstützen Aufgaben in der Iteration die parallele Ausführung.', - parallelModeEnableDesc: 'Im parallelen Modus unterstützen Aufgaben innerhalb von Iterationen die parallele Ausführung. Sie können dies im Eigenschaftenbereich auf der rechten Seite konfigurieren.', - answerNodeWarningDesc: 'Warnung im parallelen Modus: Antwortknoten, Zuweisungen von Konversationsvariablen und persistente Lese-/Schreibvorgänge innerhalb von Iterationen können Ausnahmen verursachen.', - parallelModeEnableTitle: 'Paralleler Modus aktiviert', - parallelModeUpper: 'PARALLELER MODUS', - comma: ',', - flattenOutput: 'Ausgabe abflachen', - flattenOutputDesc: 'Wenn aktiviert, werden alle Iterationsergebnisse, die Arrays sind, in ein einzelnes Array zusammengeführt. Wenn deaktiviert, behalten die Ergebnisse eine verschachtelte Array-Struktur bei.', - }, - note: { - editor: { - strikethrough: 'Durchgestrichen', - large: 'Groß', - bulletList: 'Aufzählung', - italic: 'Kursiv', - small: 'Klein', - bold: 'Kühn', - placeholder: 'Schreiben Sie Ihre Notiz...', - openLink: 'Offen', - showAuthor: 'Autor anzeigen', - medium: 'Mittel', - unlink: 'Trennen', - link: 'Verbinden', - enterUrl: 'URL eingeben...', - invalidUrl: 'Ungültige URL', - }, - addNote: 'Notiz hinzufügen', - }, - docExtractor: { - outputVars: { - text: 'Extrahierter Text', - }, - supportFileTypes: 'Unterstützte Dateitypen: {{types}}.', - inputVar: 'Eingabevariable', - learnMore: 'Weitere Informationen', - }, - listFilter: { - outputVars: { - first_record: 'Erste Aufnahme', - result: 'Ergebnis filtern', - last_record: 'Letzter Datensatz', - }, - asc: 'ASC', - limit: 'Top N', - desc: 'DESC', - orderBy: 'Sortieren nach', - inputVar: 'Eingabevariable', - filterConditionComparisonOperator: 'Operator für den Bedingungsvergleich filtern', - filterConditionComparisonValue: 'Wert der Filterbedingung', - filterConditionKey: 'Bedingungsschlüssel filtern', - filterCondition: 'Filter-Bedingung', - selectVariableKeyPlaceholder: 'Untervariablenschlüssel auswählen', - extractsCondition: 'Extrahieren des N-Elements', - }, - agent: { - strategy: { - configureTipDesc: 'Nach der Konfiguration der agentischen Strategie lädt dieser Knoten automatisch die verbleibenden Konfigurationen. Die Strategie wirkt sich auf den Mechanismus des mehrstufigen Tool-Reasoning aus.', - shortLabel: 'Strategie', - tooltip: 'Unterschiedliche Agentenstrategien bestimmen, wie das System mehrstufige Werkzeugaufrufe plant und ausführt', - configureTip: 'Bitte konfigurieren Sie die Agentenstrategie.', - selectTip: 'Agentische Strategie auswählen', - searchPlaceholder: 'Agentenstrategie suchen', - label: 'Agentische Strategie', - }, - pluginInstaller: { - install: 'Installieren', - installing: 'Installation', - }, - modelNotInMarketplace: { - desc: 'Dieses Modell wird aus dem lokalen oder GitHub-Repository installiert. Bitte nach der Installation verwenden.', - manageInPlugins: 'In Plugins verwalten', - title: 'Modell nicht installiert', - }, - modelNotSupport: { - descForVersionSwitch: 'Die installierte Plugin-Version stellt dieses Modell nicht zur Verfügung. Klicken Sie hier, um die Version zu wechseln.', - desc: 'Die installierte Plugin-Version stellt dieses Modell nicht zur Verfügung.', - title: 'Nicht unterstütztes Modell', - }, - modelSelectorTooltips: { - deprecated: 'Dieses Modell ist veraltet', - }, - outputVars: { - files: { - type: 'Art der Unterstützung. Jetzt nur noch Image unterstützen', - url: 'Bild-URL', - title: 'Vom Agenten generierte Dateien', - upload_file_id: 'Datei-ID hochladen', - transfer_method: 'Übertragungsmethode. Wert ist remote_url oder local_file', - }, - text: 'Von Agenten generierte Inhalte', - usage: 'Nutzungsinformationen des Modells', - json: 'Vom Agenten generiertes JSON', - }, - checkList: { - strategyNotSelected: 'Strategie nicht ausgewählt', - }, - installPlugin: { - cancel: 'Abbrechen', - desc: 'Über die Installation des folgenden Plugins', - changelog: 'Änderungsprotokoll', - title: 'Plugin installieren', - install: 'Installieren', - }, - modelNotSelected: 'Modell nicht ausgewählt', - modelNotInstallTooltip: 'Dieses Modell ist nicht installiert', - strategyNotFoundDesc: 'Die installierte Plugin-Version bietet diese Strategie nicht.', - unsupportedStrategy: 'Nicht unterstützte Strategie', - toolNotInstallTooltip: '{{tool}} ist nicht installiert', - notAuthorized: 'Nicht autorisiert', - pluginNotInstalled: 'Dieses Plugin ist nicht installiert', - toolbox: 'Werkzeugkasten', - toolNotAuthorizedTooltip: '{{Werkzeug}} Nicht autorisiert', - maxIterations: 'Max. Iterationen', - model: 'Modell', - strategyNotInstallTooltip: '{{strategy}} ist nicht installiert', - pluginNotInstalledDesc: 'Dieses Plugin wird von GitHub installiert. Bitte gehen Sie zu Plugins, um sie neu zu installieren', - strategyNotSet: 'Agentische Strategie nicht festgelegt', - strategyNotFoundDescAndSwitchVersion: 'Die installierte Plugin-Version bietet diese Strategie nicht. Klicken Sie hier, um die Version zu wechseln.', - tools: 'Werkzeuge', - pluginNotFoundDesc: 'Dieses Plugin wird von GitHub installiert. Bitte gehen Sie zu Plugins, um sie neu zu installieren', - learnMore: 'Weitere Informationen', - configureModel: 'Modell konfigurieren', - linkToPlugin: 'Link zu Plugins', - parameterSchema: 'Parameter-Schema', - clickToViewParameterSchema: 'Klicken Sie hier, um das Parameterschema anzuzeigen.', - }, - loop: { - ErrorMethod: { - removeAbnormalOutput: 'Abnormale Ausgaben entfernen', - continueOnError: 'Fortfahren bei Fehler', - operationTerminated: 'Beendet', - }, - comma: ',', - loopNode: 'Schleifen-Knoten', - loop_other: '{{count}} Schleifen', - totalLoopCount: 'Gesamtanzahl der Schleifen: {{count}}', - deleteDesc: 'Das Löschen des Schleifen-Knotens entfernt alle untergeordneten Knoten.', - loopVariables: 'Schleifenvariablen', - loop_one: '{{count}} Schleife', - breakCondition: 'Schleifenbeendigungsbedingung', - setLoopVariables: 'Setze Variablen innerhalb des Schleifenbereichs', - breakConditionTip: 'Nur Variablen innerhalb von Schleifen mit Abbruchbedingungen und Konversationsvariablen können referenziert werden.', - loopMaxCountError: 'Bitte geben Sie eine gültige maximale Schleifenanzahl ein, die von 1 bis {{maxCount}} reicht.', - deleteTitle: 'Schleifen-Knoten löschen?', - currentLoop: 'Aktueller Loop', - loopMaxCount: 'Maximale Schleifenanzahl', - finalLoopVariables: 'Endgültige Schleifenvariablen', - exitConditionTip: 'Ein Schleifen-Knoten benötigt mindestens eine Ausgangsbedingung.', - errorResponseMethod: 'Fehlerantwortmethode', - initialLoopVariables: 'Ursprüngliche Schleifenvariablen', - variableName: 'Variablenname', - error_one: '{{count}} Fehler', - currentLoopCount: 'Aktuelle Schleifenanzahl: {{count}}', - inputMode: 'Eingabemodus', - error_other: '{{count}} Fehler', - output: 'Ausgabewert', - input: 'Eingabe', - }, - dataSource: { - add: 'Hinzufügen einer Datenquelle', - supportedFileFormats: 'Unterstützte Dateiformate', - supportedFileFormatsPlaceholder: 'Dateiendung, e.g. doc', - }, - knowledgeBase: { - chunkStructureTip: { - learnMore: 'Weitere Informationen', - title: 'Bitte wählen Sie eine Chunk-Struktur', - message: 'Die Dify-Wissensdatenbank unterstützt drei Chunking-Strukturen: Allgemein, Über- und Untergeordnetes Element und Q&A. Jede Wissensdatenbank kann nur eine Struktur haben. Die Ausgabe des vorherigen Knotens muss an der ausgewählten Blockstruktur ausgerichtet sein. Beachten Sie, dass sich die Wahl der Chunking-Struktur auf die verfügbaren Indexmethoden auswirkt.', - }, - changeChunkStructure: 'Chunk-Struktur ändern', - retrievalSettingIsRequired: 'Abrufeinstellung ist erforderlich', - chunkStructure: 'Chunk-Struktur', - indexMethodIsRequired: 'Index-Methode ist erforderlich', - aboutRetrieval: 'Über die Abrufmethode.', - chooseChunkStructure: 'Auswählen einer Chunk-Struktur', - chunkIsRequired: 'Chunk-Struktur ist erforderlich', - chunksInput: 'Stücke', - chunksInputTip: 'Die Eingangsvariable des Wissensbasis-Knotens sind Chunks. Der Variablentyp ist ein Objekt mit einem spezifischen JSON-Schema, das konsistent mit der ausgewählten Chunk-Struktur sein muss.', - embeddingModelIsRequired: 'Ein Einbettungsmodell ist erforderlich', - chunksVariableIsRequired: 'Die Variable \'Chunks\' ist erforderlich', - rerankingModelIsRequired: 'Ein Reranking-Modell ist erforderlich', - embeddingModelIsInvalid: 'Einbettungsmodell ist ungültig', - rerankingModelIsInvalid: 'Das Reranking-Modell ist ungültig', - }, - triggerPlugin: { - authorized: 'Autorisiert', - notConfigured: 'Nicht konfiguriert', - notAuthorized: 'Nicht autorisiert', - selectSubscription: 'Abonnement auswählen', - availableSubscriptions: 'Verfügbare Abonnements', - addSubscription: 'Neue Anmeldung hinzufügen', - removeSubscription: 'Abonnement kündigen', - subscriptionRemoved: 'Abonnement erfolgreich entfernt', - error: 'Fehler', - configuration: 'Konfiguration', - remove: 'Entfernen', - or: 'ODER', - useOAuth: 'OAuth verwenden', - useApiKey: 'API-Schlüssel verwenden', - authenticationFailed: 'Authentifizierung fehlgeschlagen', - authenticationSuccess: 'Authentifizierung erfolgreich', - oauthConfigFailed: 'OAuth-Konfiguration fehlgeschlagen', - configureOAuthClient: 'OAuth-Client konfigurieren', - oauthClientDescription: 'Konfigurieren Sie OAuth-Client-Anmeldeinformationen, um die Authentifizierung zu ermöglichen', - oauthClientSaved: 'OAuth-Clientkonfiguration erfolgreich gespeichert', - configureApiKey: 'API-Schlüssel konfigurieren', - apiKeyDescription: 'API-Schlüssel-Anmeldeinformationen für die Authentifizierung konfigurieren', - apiKeyConfigured: 'API-Schlüssel erfolgreich konfiguriert', - configurationFailed: 'Konfiguration fehlgeschlagen', - failedToStart: 'Authentifizierungsablauf konnte nicht gestartet werden', - credentialsVerified: 'Anmeldedaten erfolgreich überprüft', - credentialVerificationFailed: 'Anmeldeinformationen konnten nicht überprüft werden', - verifyAndContinue: 'Überprüfen & Fortfahren', - configureParameters: 'Parameter konfigurieren', - parametersDescription: 'Trigger-Parameter und -Eigenschaften konfigurieren', - configurationComplete: 'Konfiguration abgeschlossen', - configurationCompleteDescription: 'Ihr Trigger wurde erfolgreich konfiguriert', - configurationCompleteMessage: 'Ihre Auslöserkonfiguration ist jetzt abgeschlossen und einsatzbereit.', - parameters: 'Parameter', - properties: 'Eigenschaften', - propertiesDescription: 'Zusätzliche Konfigurationseigenschaften für diesen Auslöser', - noConfigurationRequired: 'Für diesen Auslöser ist keine zusätzliche Konfiguration erforderlich.', - subscriptionName: 'Abonnementname', - subscriptionNameDescription: 'Geben Sie einen eindeutigen Namen für dieses Trigger-Abonnement ein', - subscriptionNamePlaceholder: 'Abonnementnamen eingeben...', - subscriptionNameRequired: 'Der Abonnementname ist erforderlich', - subscriptionRequired: 'Abonnement erforderlich', - }, - triggerSchedule: { - title: 'Zeitplan', - nodeTitle: 'Zeitplan-Auslöser', - notConfigured: 'Nicht konfiguriert', - useCronExpression: 'Cron-Ausdruck verwenden', - useVisualPicker: 'Visuellen Auswähler verwenden', - frequency: { - label: 'FREQUENZ', - hourly: 'Stündlich', - daily: 'Täglich', - weekly: 'Wöchentlich', - monthly: 'Monatlich', - }, - selectFrequency: 'Frequenz auswählen', - frequencyLabel: 'Frequenz', - nextExecution: 'Nächste Ausführung', - weekdays: 'Wochentage', - time: 'Zeit', - cronExpression: 'Cron-Ausdruck', - nextExecutionTime: 'NÄCHSTE AUSFÜHRUNGSZEIT', - nextExecutionTimes: 'Nächste 5 Ausführungszeiten', - startTime: 'Startzeit', - executeNow: 'Jetzt ausführen', - selectDateTime: 'Datum und Uhrzeit auswählen', - hours: 'Stunden', - minutes: 'Protokoll', - onMinute: 'In einer Minute', - days: 'Tage', - lastDay: 'Letzter Tag', - lastDayTooltip: 'Nicht alle Monate haben 31 Tage. Verwenden Sie die Option ‚Letzter Tag‘, um den letzten Tag jedes Monats auszuwählen.', - mode: 'Mode', - timezone: 'Zeitzone', - visualConfig: 'Visuelle Konfiguration', - monthlyDay: 'Monatlicher Tag', - executionTime: 'Ausführungszeit', - invalidTimezone: 'Ungültige Zeitzone', - invalidCronExpression: 'Ungültiger Cron-Ausdruck', - noValidExecutionTime: 'Es kann keine gültige Ausführungszeit berechnet werden', - executionTimeCalculationError: 'Fehler beim Berechnen der Ausführungszeiten', - invalidFrequency: 'Ungültige Frequenz', - invalidStartTime: 'Ungültige Startzeit', - startTimeMustBeFuture: 'Die Startzeit muss in der Zukunft liegen', - invalidTimeFormat: 'Ungültiges Zeitformat (erwartet HH:MM AM/PM)', - invalidWeekday: 'Ungültiger Wochentag: {{weekday}}', - invalidMonthlyDay: 'Der monatliche Tag muss zwischen 1 und 31 oder "letzter" liegen', - invalidOnMinute: 'Die Minute muss zwischen 0 und 59 liegen', - invalidExecutionTime: 'Ungültige Ausführungszeit', - executionTimeMustBeFuture: 'Die Ausführungszeit muss in der Zukunft liegen', - }, - triggerWebhook: { - title: 'Webhook-Auslöser', - nodeTitle: '🔗 Webhook-Auslöser', - configPlaceholder: 'Webhook-Trigger-Konfiguration wird hier implementiert', - webhookUrl: 'Webhook-URL', - webhookUrlPlaceholder: 'Klicken Sie auf Erstellen, um die Webhook-URL zu erstellen', - generate: 'Erzeugen', - copy: 'Kopieren', - test: 'Test', - urlGenerated: 'Webhook-URL erfolgreich erstellt', - urlGenerationFailed: 'Fehler beim Erstellen der Webhook-URL', - urlCopied: 'URL in die Zwischenablage kopiert', - method: 'Methode', - contentType: 'Inhaltstyp', - queryParameters: 'Abfrageparameter', - headerParameters: 'Header-Parameter', - requestBodyParameters: 'Anforderungs-Body-Parameter', - parameterName: 'Variablenname', - varName: 'Variablenname', - varType: 'Typ', - varNamePlaceholder: 'Variablennamen eingeben...', - required: 'Erforderlich', - addParameter: 'Hinzufügen', - addHeader: 'Hinzufügen', - noParameters: 'Keine Parameter konfiguriert', - noQueryParameters: 'Keine Abfrageparameter konfiguriert', - noHeaders: 'Keine Kopfzeilen konfiguriert', - noBodyParameters: 'Keine Körperparameter konfiguriert', - debugUrlTitle: 'Für Testläufe verwenden Sie immer diese URL', - debugUrlCopy: 'Zum Kopieren klicken', - debugUrlCopied: 'Kopiert!', - debugUrlPrivateAddressWarning: 'Diese URL scheint eine interne Adresse zu sein, was dazu führen kann, dass Webhook-Anfragen fehlschlagen. Sie können TRIGGER_URL auf eine öffentliche Adresse ändern.', - errorHandling: 'Fehlerbehandlung', - errorStrategy: 'Fehlerbehandlung', - responseConfiguration: 'Antwort', - asyncMode: 'Asynchroner Modus', - statusCode: 'Statuscode', - responseBody: 'Antworttext', - responseBodyPlaceholder: 'Schreiben Sie hier Ihren Antworttext', - headers: 'Überschriften', - validation: { - webhookUrlRequired: 'Webhook-URL ist erforderlich', - invalidParameterType: 'Ungültiger Parametertyp "{{type}}" für den Parameter "{{name}}"', - }, - }, - }, - tracing: { - stopBy: 'Gestoppt von {{user}}', - }, - variableReference: { - noAvailableVars: 'Keine verfügbaren Variablen', - conversationVars: 'Konversations-Variablen', - noAssignedVars: 'Keine verfügbaren zugewiesenen Variablen', - noVarsForOperation: 'Es stehen keine Variablen für die Zuweisung mit der ausgewählten Operation zur Verfügung.', - assignedVarsDescription: 'Zugewiesene Variablen müssen beschreibbare Variablen sein, z. B.', - }, - versionHistory: { - filter: { - all: 'Alle', - onlyShowNamedVersions: 'Nur benannte Versionen anzeigen', - onlyYours: 'Nur dein', - reset: 'Filter zurücksetzen', - empty: 'Kein passendes Versionsprotokoll gefunden.', - }, - editField: { - releaseNotesLengthLimit: 'Die Versionshinweise dürfen {{limit}} Zeichen nicht überschreiten.', - titleLengthLimit: 'Der Titel darf {{limit}} Zeichen nicht überschreiten.', - releaseNotes: 'Versionshinweise', - title: 'Titel', - }, - action: { - restoreFailure: 'Wiederherstellung der Version fehlgeschlagen', - updateSuccess: 'Version aktualisiert', - deleteSuccess: 'Version gelöscht', - deleteFailure: 'Version löschen fehlgeschlagen', - restoreSuccess: 'Version wiederhergestellt', - updateFailure: 'Aktualisierung der Version fehlgeschlagen', - copyIdSuccess: 'ID in die Zwischenablage kopiert', - }, - latest: 'Neueste', - nameThisVersion: 'Nennen Sie diese Version', - currentDraft: 'Aktueller Entwurf', - releaseNotesPlaceholder: 'Beschreibe, was sich geändert hat.', - defaultName: 'Unbetitelte Version', - title: 'Versionen', - editVersionInfo: 'Versionsinformationen bearbeiten', - deletionTip: 'Die Löschung ist unumkehrbar, bitte bestätigen Sie.', - restorationTip: 'Nach der Wiederherstellung der Version wird der aktuelle Entwurf überschrieben.', - copyId: 'ID kopieren', - }, - debug: { - noData: { - runThisNode: 'Führe diesen Knoten aus', - description: 'Die Ergebnisse des letzten Laufs werden hier angezeigt.', - }, - variableInspect: { - trigger: { - normal: 'Variable untersuchen', - stop: 'Halt an', - running: 'Caching-Betriebsstatus', - clear: 'Klar', - cached: 'Cached-Variablen anzeigen', - }, - title: 'Variable untersuchen', - clearAll: 'Alles zurücksetzen', - emptyLink: 'Erfahren Sie mehr', - view: 'Protokoll anzeigen', - systemNode: 'System', - edited: 'Bearbeitet', - clearNode: 'Cache-Variable löschen', - envNode: 'Umwelt', - chatNode: 'Gespräch', - resetConversationVar: 'Setze die Gesprächsvariable auf den Standardwert zurück', - reset: 'Auf den letzten Ausführungswert zurücksetzen', - emptyTip: 'Nachdem Sie einen Knoten auf der Leinwand durchlaufen oder einen Knoten Schritt für Schritt ausgeführt haben, können Sie den aktuellen Wert der Knotenvariable in der Variableninspektion anzeigen.', - largeData: 'Große Datenmengen, schreibgeschützte Vorschau. Exportieren, um alle anzuzeigen.', - export: 'exportieren', - exportToolTip: 'Variable als Datei exportieren', - largeDataNoExport: 'Große Datenmengen – nur teilweise Vorschau', - listening: { - title: 'Höre auf Ereignisse von Triggern...', - tip: 'Sie können jetzt Ereignisauslöser simulieren, indem Sie Testanfragen an den HTTP-{{nodeName}}-Endpunkt senden oder ihn als Rückruf-URL für das Live-Debugging von Ereignissen verwenden. Alle Ausgaben können direkt im Variableninspektor angezeigt werden.', - tipPlugin: 'Jetzt können Sie in {{- pluginName}} Ereignisse erstellen und Ausgaben dieser Ereignisse im Variableninspektor abrufen.', - tipSchedule: 'Hört auf Ereignisse von Zeitplan-Auslösern. Nächster geplanter Lauf: {{nextTriggerTime}}', - tipFallback: 'Auf eingehende Trigger-Ereignisse warten. Ausgaben werden hier angezeigt.', - defaultNodeName: 'dieser Auslöser', - defaultPluginName: 'dieses Plugin auslösen', - defaultScheduleTime: 'Nicht konfiguriert', - selectedTriggers: 'ausgewählte Auslöser', - stopButton: 'Stopp', - }, - }, - settingsTab: 'Einstellungen', - lastRunTab: 'Letzte Ausführung', - relations: { - dependents: 'Angehörige', - dependenciesDescription: 'Knoten, auf die sich dieser Knoten stützt', - dependencies: 'Abhängigkeiten', - noDependencies: 'Keine Abhängigkeiten', - dependentsDescription: 'Knoten, die auf diesem Knoten basieren', - noDependents: 'Keine Angehörigen', - }, - relationsTab: 'Beziehungen', - copyLastRun: 'Letzte Ausführung kopieren', - copyLastRunError: 'Fehler beim Kopieren der letzten Lauf-Eingaben', - noMatchingInputsFound: 'Keine übereinstimmenden Eingaben aus dem letzten Lauf gefunden.', - noLastRunFound: 'Kein vorheriger Lauf gefunden', - lastOutput: 'Letzte Ausgabe', - lastRunInputsCopied: '{{count}} Eingabe(n) aus dem letzten Durchlauf kopiert', - }, - sidebar: { - exportWarning: 'Aktuelle gespeicherte Version exportieren', - exportWarningDesc: 'Dies wird die derzeit gespeicherte Version Ihres Workflows exportieren. Wenn Sie ungespeicherte Änderungen im Editor haben, speichern Sie diese bitte zuerst, indem Sie die Exportoption im Workflow-Canvas verwenden.', - }, - publishLimit: { - startNodeTitlePrefix: 'Upgrade auf', - startNodeTitleSuffix: 'uneingeschränkt viele Auslöser pro Arbeitsablauf freischalten', - startNodeDesc: 'Sie haben das Limit von 2 Auslösern pro Workflow für diesen Plan erreicht. Upgraden Sie, um diesen Workflow zu veröffentlichen.', - }, - error: { - startNodeRequired: 'Bitte füge zuerst einen Startknoten hinzu, bevor du {{operation}}.', - operations: { - connectingNodes: 'Knoten verbinden', - addingNodes: 'Knoten hinzufügen', - modifyingWorkflow: 'Arbeitsablauf ändern', - updatingWorkflow: 'Arbeitsablauf aktualisieren', - }, - }, - customWebhook: 'Benutzerdefinierter Webhook', - difyTeam: 'Dify-Team', - triggerStatus: { - enabled: 'AUSLÖSER', - disabled: 'AUSLÖSER • DEAKTIVIERT', - }, - entryNodeStatus: { - enabled: 'START', - disabled: 'START • DEAKTIVIERT', - }, - onboarding: { - title: 'Wählen Sie einen Startknoten, um zu beginnen', - description: 'Verschiedene Startknoten haben unterschiedliche Fähigkeiten. Keine Sorge, du kannst sie später jederzeit ändern.', - userInputFull: 'Benutzereingabe (ursprünglicher Startknoten)', - userInputDescription: 'Startknoten, der das Festlegen von Benutzereingabevariablen ermöglicht, mit Web-App, Service-API, MCP-Server und Workflow als Werkzeugfunktionen.', - trigger: 'Auslöser', - triggerDescription: 'Trigger können als Startpunkt eines Workflows dienen, wie zum Beispiel geplante Aufgaben, benutzerdefinierte Webhooks oder Integrationen mit anderen Apps.', - back: 'Zurück', - learnMore: 'Mehr erfahren', - aboutStartNode: 'über den Startknoten.', - escTip: { - press: 'Presse', - key: 'esc', - toDismiss: 'entlassen', - }, - }, -} - -export default translation diff --git a/web/i18n/en-US/app-annotation.json b/web/i18n/en-US/app-annotation.json new file mode 100644 index 0000000000..97cc6033f7 --- /dev/null +++ b/web/i18n/en-US/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "Annotations", + "name": "Annotation Reply", + "editBy": "Answer edited by {{author}}", + "noData": { + "title": "No annotations", + "description": "You can edit annotations during app debugging or import annotations in bulk here for a high-quality response." + }, + "table": { + "header": { + "question": "question", + "answer": "answer", + "createdAt": "created at", + "hits": "hits", + "actions": "actions", + "addAnnotation": "Add Annotation", + "bulkImport": "Bulk Import", + "bulkExport": "Bulk Export", + "clearAll": "Delete All", + "clearAllConfirm": "Delete all annotations?" + } + }, + "editModal": { + "title": "Edit Annotation Reply", + "queryName": "User Query", + "answerName": "Storyteller Bot", + "yourAnswer": "Your Answer", + "answerPlaceholder": "Type your answer here", + "yourQuery": "Your Query", + "queryPlaceholder": "Type your query here", + "removeThisCache": "Remove this Annotation", + "createdAt": "Created At" + }, + "addModal": { + "title": "Add Annotation Reply", + "queryName": "Question", + "answerName": "Answer", + "answerPlaceholder": "Type answer here", + "queryPlaceholder": "Type query here", + "createNext": "Add another annotated response" + }, + "batchModal": { + "title": "Bulk Import", + "csvUploadTitle": "Drag and drop your CSV file here, or ", + "browse": "browse", + "tip": "The CSV file must conform to the following structure:", + "question": "question", + "answer": "answer", + "contentTitle": "chunk content", + "content": "content", + "template": "Download the template here", + "cancel": "Cancel", + "run": "Run Batch", + "runError": "Run batch failed", + "processing": "In batch processing", + "completed": "Import completed", + "error": "Import Error", + "ok": "OK" + }, + "list": { + "delete": { + "title": "Are you sure Delete?" + } + }, + "batchAction": { + "selected": "Selected", + "delete": "Delete", + "cancel": "Cancel" + }, + "errorMessage": { + "answerRequired": "Answer is required", + "queryRequired": "Question is required" + }, + "viewModal": { + "annotatedResponse": "Annotation Reply", + "hitHistory": "Hit History", + "hit": "Hit", + "hits": "Hits", + "noHitHistory": "No hit history" + }, + "hitHistoryTable": { + "query": "Query", + "match": "Match", + "response": "Response", + "source": "Source", + "score": "Score", + "time": "Time" + }, + "initSetup": { + "title": "Annotation Reply Initial Setup", + "configTitle": "Annotation Reply Setup", + "confirmBtn": "Save & Enable", + "configConfirmBtn": "Save" + }, + "embeddingModelSwitchTip": "Annotation text vectorization model, switching models will be re-embedded, resulting in additional costs." +} diff --git a/web/i18n/en-US/app-annotation.ts b/web/i18n/en-US/app-annotation.ts deleted file mode 100644 index f7cd24dc37..0000000000 --- a/web/i18n/en-US/app-annotation.ts +++ /dev/null @@ -1,98 +0,0 @@ -const translation = { - title: 'Annotations', - name: 'Annotation Reply', - editBy: 'Answer edited by {{author}}', - noData: { - title: 'No annotations', - description: 'You can edit annotations during app debugging or import annotations in bulk here for a high-quality response.', - }, - table: { - header: { - question: 'question', - answer: 'answer', - createdAt: 'created at', - hits: 'hits', - actions: 'actions', - addAnnotation: 'Add Annotation', - bulkImport: 'Bulk Import', - bulkExport: 'Bulk Export', - clearAll: 'Delete All', - clearAllConfirm: 'Delete all annotations?', - }, - }, - editModal: { - title: 'Edit Annotation Reply', - queryName: 'User Query', - answerName: 'Storyteller Bot', - yourAnswer: 'Your Answer', - answerPlaceholder: 'Type your answer here', - yourQuery: 'Your Query', - queryPlaceholder: 'Type your query here', - removeThisCache: 'Remove this Annotation', - createdAt: 'Created At', - }, - addModal: { - title: 'Add Annotation Reply', - queryName: 'Question', - answerName: 'Answer', - answerPlaceholder: 'Type answer here', - queryPlaceholder: 'Type query here', - createNext: 'Add another annotated response', - }, - batchModal: { - title: 'Bulk Import', - csvUploadTitle: 'Drag and drop your CSV file here, or ', - browse: 'browse', - tip: 'The CSV file must conform to the following structure:', - question: 'question', - answer: 'answer', - contentTitle: 'chunk content', - content: 'content', - template: 'Download the template here', - cancel: 'Cancel', - run: 'Run Batch', - runError: 'Run batch failed', - processing: 'In batch processing', - completed: 'Import completed', - error: 'Import Error', - ok: 'OK', - }, - list: { - delete: { - title: 'Are you sure Delete?', - }, - }, - batchAction: { - selected: 'Selected', - delete: 'Delete', - cancel: 'Cancel', - }, - errorMessage: { - answerRequired: 'Answer is required', - queryRequired: 'Question is required', - }, - viewModal: { - annotatedResponse: 'Annotation Reply', - hitHistory: 'Hit History', - hit: 'Hit', - hits: 'Hits', - noHitHistory: 'No hit history', - }, - hitHistoryTable: { - query: 'Query', - match: 'Match', - response: 'Response', - source: 'Source', - score: 'Score', - time: 'Time', - }, - initSetup: { - title: 'Annotation Reply Initial Setup', - configTitle: 'Annotation Reply Setup', - confirmBtn: 'Save & Enable', - configConfirmBtn: 'Save', - }, - embeddingModelSwitchTip: 'Annotation text vectorization model, switching models will be re-embedded, resulting in additional costs.', -} - -export default translation diff --git a/web/i18n/en-US/app-api.json b/web/i18n/en-US/app-api.json new file mode 100644 index 0000000000..70e1ed94f2 --- /dev/null +++ b/web/i18n/en-US/app-api.json @@ -0,0 +1,84 @@ +{ + "apiServer": "API Server", + "apiKey": "API Key", + "status": "Status", + "disabled": "Disabled", + "ok": "In Service", + "copy": "Copy", + "copied": "Copied", + "regenerate": "Regenerate", + "play": "Play", + "pause": "Pause", + "playing": "Playing", + "loading": "Loading", + "merMaid": { + "rerender": "Redo Rerender" + }, + "never": "Never", + "apiKeyModal": { + "apiSecretKey": "API Secret key", + "apiSecretKeyTips": "To prevent API abuse, protect your API Key. Avoid using it as plain text in front-end code. :)", + "createNewSecretKey": "Create new Secret key", + "secretKey": "Secret Key", + "created": "CREATED", + "lastUsed": "LAST USED", + "generateTips": "Keep this key in a secure and accessible place." + }, + "actionMsg": { + "deleteConfirmTitle": "Delete this secret key?", + "deleteConfirmTips": "This action cannot be undone.", + "ok": "OK" + }, + "completionMode": { + "title": "Completion App API", + "info": "For high-quality text generation, such as articles, summaries, and translations, use the completion-messages API with user input. Text generation relies on the model parameters and prompt templates set in Dify Prompt Engineering.", + "createCompletionApi": "Create Completion Message", + "createCompletionApiTip": "Create a Completion Message to support the question-and-answer mode.", + "inputsTips": "(Optional) Provide user input fields as key-value pairs, corresponding to variables in Prompt Eng. Key is the variable name, Value is the parameter value. If the field type is Select, the submitted Value must be one of the preset choices.", + "queryTips": "User input text content.", + "blocking": "Blocking type, waiting for execution to complete and returning results. (Requests may be interrupted if the process is long)", + "streaming": "streaming returns. Implementation of streaming return based on SSE (Server-Sent Events).", + "messageFeedbackApi": "Message feedback (like)", + "messageFeedbackApiTip": "Rate received messages on behalf of end-users with likes or dislikes. This data is visible in the Logs & Annotations page and used for future model fine-tuning.", + "messageIDTip": "Message ID", + "ratingTip": "like or dislike, null is undo", + "parametersApi": "Obtain application parameter information", + "parametersApiTip": "Retrieve configured Input parameters, including variable names, field names, types, and default values. Typically used for displaying these fields in a form or filling in default values after the client loads." + }, + "chatMode": { + "title": "Chat App API", + "info": "For versatile conversational apps using a Q&A format, call the chat-messages API to initiate dialogue. Maintain ongoing conversations by passing the returned conversation_id. Response parameters and templates depend on Dify Prompt Eng. settings.", + "createChatApi": "Create chat message", + "createChatApiTip": "Create a new conversation message or continue an existing dialogue.", + "inputsTips": "(Optional) Provide user input fields as key-value pairs, corresponding to variables in Prompt Eng. Key is the variable name, Value is the parameter value. If the field type is Select, the submitted Value must be one of the preset choices.", + "queryTips": "User input/question content", + "blocking": "Blocking type, waiting for execution to complete and returning results. (Requests may be interrupted if the process is long)", + "streaming": "streaming returns. Implementation of streaming return based on SSE (Server-Sent Events).", + "conversationIdTip": "(Optional) Conversation ID: leave empty for first-time conversation; pass conversation_id from context to continue dialogue.", + "messageFeedbackApi": "Message terminal user feedback, like", + "messageFeedbackApiTip": "Rate received messages on behalf of end-users with likes or dislikes. This data is visible in the Logs & Annotations page and used for future model fine-tuning.", + "messageIDTip": "Message ID", + "ratingTip": "like or dislike, null is undo", + "chatMsgHistoryApi": "Get the chat history message", + "chatMsgHistoryApiTip": "The first page returns the latest `limit` bar, which is in reverse order.", + "chatMsgHistoryConversationIdTip": "Conversation ID", + "chatMsgHistoryFirstId": "ID of the first chat record on the current page. The default is none.", + "chatMsgHistoryLimit": "How many chats are returned in one request", + "conversationsListApi": "Get conversation list", + "conversationsListApiTip": "Gets the session list of the current user. By default, the last 20 sessions are returned.", + "conversationsListFirstIdTip": "The ID of the last record on the current page, default none.", + "conversationsListLimitTip": "How many chats are returned in one request", + "conversationRenamingApi": "Conversation renaming", + "conversationRenamingApiTip": "Rename conversations; the name is displayed in multi-session client interfaces.", + "conversationRenamingNameTip": "New name", + "parametersApi": "Obtain application parameter information", + "parametersApiTip": "Retrieve configured Input parameters, including variable names, field names, types, and default values. Typically used for displaying these fields in a form or filling in default values after the client loads." + }, + "develop": { + "requestBody": "Request Body", + "pathParams": "Path Params", + "query": "Query", + "toc": "Contents", + "noContent": "No content" + } +} diff --git a/web/i18n/en-US/app-api.ts b/web/i18n/en-US/app-api.ts deleted file mode 100644 index 17f1a06782..0000000000 --- a/web/i18n/en-US/app-api.ts +++ /dev/null @@ -1,86 +0,0 @@ -const translation = { - apiServer: 'API Server', - apiKey: 'API Key', - status: 'Status', - disabled: 'Disabled', - ok: 'In Service', - copy: 'Copy', - copied: 'Copied', - regenerate: 'Regenerate', - play: 'Play', - pause: 'Pause', - playing: 'Playing', - loading: 'Loading', - merMaid: { - rerender: 'Redo Rerender', - }, - never: 'Never', - apiKeyModal: { - apiSecretKey: 'API Secret key', - apiSecretKeyTips: 'To prevent API abuse, protect your API Key. Avoid using it as plain text in front-end code. :)', - createNewSecretKey: 'Create new Secret key', - secretKey: 'Secret Key', - created: 'CREATED', - lastUsed: 'LAST USED', - generateTips: 'Keep this key in a secure and accessible place.', - }, - actionMsg: { - deleteConfirmTitle: 'Delete this secret key?', - deleteConfirmTips: 'This action cannot be undone.', - ok: 'OK', - }, - completionMode: { - title: 'Completion App API', - info: 'For high-quality text generation, such as articles, summaries, and translations, use the completion-messages API with user input. Text generation relies on the model parameters and prompt templates set in Dify Prompt Engineering.', - createCompletionApi: 'Create Completion Message', - createCompletionApiTip: 'Create a Completion Message to support the question-and-answer mode.', - inputsTips: '(Optional) Provide user input fields as key-value pairs, corresponding to variables in Prompt Eng. Key is the variable name, Value is the parameter value. If the field type is Select, the submitted Value must be one of the preset choices.', - queryTips: 'User input text content.', - blocking: 'Blocking type, waiting for execution to complete and returning results. (Requests may be interrupted if the process is long)', - streaming: 'streaming returns. Implementation of streaming return based on SSE (Server-Sent Events).', - messageFeedbackApi: 'Message feedback (like)', - messageFeedbackApiTip: 'Rate received messages on behalf of end-users with likes or dislikes. This data is visible in the Logs & Annotations page and used for future model fine-tuning.', - messageIDTip: 'Message ID', - ratingTip: 'like or dislike, null is undo', - parametersApi: 'Obtain application parameter information', - parametersApiTip: 'Retrieve configured Input parameters, including variable names, field names, types, and default values. Typically used for displaying these fields in a form or filling in default values after the client loads.', - }, - chatMode: { - title: 'Chat App API', - info: 'For versatile conversational apps using a Q&A format, call the chat-messages API to initiate dialogue. Maintain ongoing conversations by passing the returned conversation_id. Response parameters and templates depend on Dify Prompt Eng. settings.', - createChatApi: 'Create chat message', - createChatApiTip: 'Create a new conversation message or continue an existing dialogue.', - inputsTips: '(Optional) Provide user input fields as key-value pairs, corresponding to variables in Prompt Eng. Key is the variable name, Value is the parameter value. If the field type is Select, the submitted Value must be one of the preset choices.', - queryTips: 'User input/question content', - blocking: 'Blocking type, waiting for execution to complete and returning results. (Requests may be interrupted if the process is long)', - streaming: 'streaming returns. Implementation of streaming return based on SSE (Server-Sent Events).', - conversationIdTip: '(Optional) Conversation ID: leave empty for first-time conversation; pass conversation_id from context to continue dialogue.', - messageFeedbackApi: 'Message terminal user feedback, like', - messageFeedbackApiTip: 'Rate received messages on behalf of end-users with likes or dislikes. This data is visible in the Logs & Annotations page and used for future model fine-tuning.', - messageIDTip: 'Message ID', - ratingTip: 'like or dislike, null is undo', - chatMsgHistoryApi: 'Get the chat history message', - chatMsgHistoryApiTip: 'The first page returns the latest `limit` bar, which is in reverse order.', - chatMsgHistoryConversationIdTip: 'Conversation ID', - chatMsgHistoryFirstId: 'ID of the first chat record on the current page. The default is none.', - chatMsgHistoryLimit: 'How many chats are returned in one request', - conversationsListApi: 'Get conversation list', - conversationsListApiTip: 'Gets the session list of the current user. By default, the last 20 sessions are returned.', - conversationsListFirstIdTip: 'The ID of the last record on the current page, default none.', - conversationsListLimitTip: 'How many chats are returned in one request', - conversationRenamingApi: 'Conversation renaming', - conversationRenamingApiTip: 'Rename conversations; the name is displayed in multi-session client interfaces.', - conversationRenamingNameTip: 'New name', - parametersApi: 'Obtain application parameter information', - parametersApiTip: 'Retrieve configured Input parameters, including variable names, field names, types, and default values. Typically used for displaying these fields in a form or filling in default values after the client loads.', - }, - develop: { - requestBody: 'Request Body', - pathParams: 'Path Params', - query: 'Query', - toc: 'Contents', - noContent: 'No content', - }, -} - -export default translation diff --git a/web/i18n/en-US/app-debug.json b/web/i18n/en-US/app-debug.json new file mode 100644 index 0000000000..26d0f743ae --- /dev/null +++ b/web/i18n/en-US/app-debug.json @@ -0,0 +1,565 @@ +{ + "pageTitle": { + "line1": "PROMPT", + "line2": "Engineering" + }, + "orchestrate": "Orchestrate", + "promptMode": { + "simple": "Switch to Expert Mode to edit the whole PROMPT", + "advanced": "Expert Mode", + "switchBack": "Switch back", + "advancedWarning": { + "title": "You have switched to Expert Mode, and once you modify the PROMPT, you CANNOT return to the basic mode.", + "description": "In Expert Mode, you can edit whole PROMPT.", + "learnMore": "Learn more", + "ok": "OK" + }, + "operation": { + "addMessage": "Add Message" + }, + "contextMissing": "Context component missed, the effectiveness of the prompt may not be good." + }, + "operation": { + "applyConfig": "Publish", + "resetConfig": "Reset", + "debugConfig": "Debug", + "addFeature": "Add Feature", + "automatic": "Generate", + "stopResponding": "Stop responding", + "agree": "like", + "disagree": "dislike", + "cancelAgree": "Cancel like", + "cancelDisagree": "Cancel dislike", + "userAction": "User " + }, + "code": { + "instruction": "Instruction" + }, + "notSetAPIKey": { + "title": "LLM provider key has not been set", + "trailFinished": "Trail finished", + "description": "The LLM provider key has not been set, and it needs to be set before debugging.", + "settingBtn": "Go to settings" + }, + "trailUseGPT4Info": { + "title": "Does not support gpt-4 now", + "description": "Use gpt-4, please set API Key." + }, + "feature": { + "groupChat": { + "title": "Chat enhance", + "description": "Add pre-conversation settings for apps can enhance user experience." + }, + "groupExperience": { + "title": "Experience enhance" + }, + "conversationOpener": { + "title": "Conversation Opener", + "description": "In a chat app, the first sentence that the AI actively speaks to the user is usually used as a welcome." + }, + "suggestedQuestionsAfterAnswer": { + "title": "Follow-up", + "description": "Setting up next questions suggestion can give users a better chat.", + "resDes": "3 suggestions for user next question.", + "tryToAsk": "Try to ask" + }, + "moreLikeThis": { + "title": "More like this", + "description": "Generate multiple texts at once, and then edit and continue to generate", + "generateNumTip": "Number of each generated times", + "tip": "Using this feature will incur additional tokens overhead" + }, + "speechToText": { + "title": "Speech to Text", + "description": "Voice input can be used in chat.", + "resDes": "Voice input is enabled" + }, + "textToSpeech": { + "title": "Text to Speech", + "description": "Conversation messages can be converted to speech.", + "resDes": "Text to Audio is enabled" + }, + "citation": { + "title": "Citations and Attributions", + "description": "Show source document and attributed section of the generated content.", + "resDes": "Citations and Attributions is enabled" + }, + "annotation": { + "title": "Annotation Reply", + "description": "You can manually add high-quality response to the cache for prioritized matching with similar user questions.", + "resDes": "Annotation Response is enabled", + "scoreThreshold": { + "title": "Score Threshold", + "description": "Used to set the similarity threshold for annotation reply.", + "easyMatch": "Easy Match", + "accurateMatch": "Accurate Match" + }, + "matchVariable": { + "title": "Match Variable", + "choosePlaceholder": "Choose match variable" + }, + "cacheManagement": "Annotations", + "cached": "Annotated", + "remove": "Remove", + "removeConfirm": "Delete this annotation ?", + "add": "Add annotation", + "edit": "Edit annotation" + }, + "dataSet": { + "title": "Knowledge", + "noData": "You can import Knowledge as context", + "selectTitle": "Select reference Knowledge", + "selected": "Knowledge selected", + "noDataSet": "No Knowledge found", + "toCreate": "Go to create", + "notSupportSelectMulti": "Currently only support one Knowledge", + "queryVariable": { + "title": "Query variable", + "tip": "This variable will be used as the query input for context retrieval, obtaining context information related to the input of this variable.", + "choosePlaceholder": "Choose query variable", + "noVar": "No variables", + "noVarTip": "please create a variable under the Variables section", + "unableToQueryDataSet": "Unable to query the Knowledge", + "unableToQueryDataSetTip": "Unable to query the Knowledge successfully, please choose a context query variable in the context section.", + "ok": "OK", + "contextVarNotEmpty": "context query variable can not be empty", + "deleteContextVarTitle": "Delete variable “{{varName}}”?", + "deleteContextVarTip": "This variable has been set as a context query variable, and removing it will impact the normal use of the Knowledge. If you still need to delete it, please reselect it in the context section." + } + }, + "tools": { + "title": "Tools", + "tips": "Tools provide a standard API call method, taking user input or variables as request parameters for querying external data as context.", + "toolsInUse": "{{count}} tools in use", + "modal": { + "title": "Tool", + "toolType": { + "title": "Tool Type", + "placeholder": "Please select the tool type" + }, + "name": { + "title": "Name", + "placeholder": "Please enter the name" + }, + "variableName": { + "title": "Variable Name", + "placeholder": "Please enter the variable name" + } + } + }, + "conversationHistory": { + "title": "Conversation History", + "description": "Set prefix names for conversation roles", + "tip": "The Conversation History is not enabled, please add in the prompt above.", + "learnMore": "Learn more", + "editModal": { + "title": "Edit Conversation Role Names", + "userPrefix": "User prefix", + "assistantPrefix": "Assistant prefix" + } + }, + "toolbox": { + "title": "TOOLBOX" + }, + "moderation": { + "title": "Content moderation", + "description": "Secure model output by using moderation API or maintaining a sensitive word list.", + "contentEnableLabel": "Content moderation enabled", + "allEnabled": "INPUT & OUTPUT", + "inputEnabled": "INPUT", + "outputEnabled": "OUTPUT", + "modal": { + "title": "Content moderation settings", + "provider": { + "title": "Provider", + "openai": "OpenAI Moderation", + "openaiTip": { + "prefix": "OpenAI Moderation requires an OpenAI API key configured in the ", + "suffix": "." + }, + "keywords": "Keywords" + }, + "keywords": { + "tip": "One per line, separated by line breaks. Up to 100 characters per line.", + "placeholder": "One per line, separated by line breaks", + "line": "Line" + }, + "content": { + "input": "Moderate INPUT Content", + "output": "Moderate OUTPUT Content", + "preset": "Preset replies", + "placeholder": "Preset replies content here", + "condition": "Moderate INPUT and OUTPUT Content enabled at least one", + "fromApi": "Preset replies are returned by API", + "errorMessage": "Preset replies cannot be empty", + "supportMarkdown": "Markdown supported" + }, + "openaiNotConfig": { + "before": "OpenAI Moderation requires an OpenAI API key configured in the", + "after": "" + } + } + }, + "fileUpload": { + "title": "File Upload", + "description": "The chat input box allows uploading of images, documents, and other files.", + "supportedTypes": "Support File Types", + "numberLimit": "Max uploads", + "modalTitle": "File Upload Setting" + }, + "imageUpload": { + "title": "Image Upload", + "description": "Allow uploading images.", + "supportedTypes": "Support File Types", + "numberLimit": "Max uploads", + "modalTitle": "Image Upload Setting" + }, + "bar": { + "empty": "Enable feature to enhance web app user experience", + "enableText": "Features Enabled", + "manage": "Manage" + }, + "documentUpload": { + "title": "Document", + "description": "Enable Document will allows the model to take in documents and answer questions about them." + }, + "audioUpload": { + "title": "Audio", + "description": "Enable Audio will allow the model to process audio files for transcription and analysis." + } + }, + "codegen": { + "title": "Code Generator", + "description": "The Code Generator uses configured models to generate high-quality code based on your instructions. Please provide clear and detailed instructions.", + "instruction": "Instructions", + "instructionPlaceholder": "Enter detailed description of the code you want to generate.", + "noDataLine1": "Describe your use case on the left,", + "noDataLine2": "the code preview will show here.", + "generate": "Generate", + "generatedCodeTitle": "Generated Code", + "loading": "Generating code...", + "apply": "Apply", + "applyChanges": "Apply Changes", + "resTitle": "Generated Code", + "overwriteConfirmTitle": "Overwrite existing code?", + "overwriteConfirmMessage": "This action will overwrite the existing code. Do you want to continue?" + }, + "generate": { + "title": "Prompt Generator", + "description": "The Prompt Generator uses the configured model to optimize prompts for higher quality and better structure. Please write clear and detailed instructions.", + "tryIt": "Try it", + "instruction": "Instructions", + "instructionPlaceHolderTitle": "Describe how you would like to improve this Prompt. For example:", + "instructionPlaceHolderLine1": "Make the output more concise, retaining the core points.", + "instructionPlaceHolderLine2": "The output format is incorrect, please strictly follow the JSON format.", + "instructionPlaceHolderLine3": "The tone is too harsh, please make it more friendly.", + "codeGenInstructionPlaceHolderLine": "The more detailed the feedback, such as the data types of input and output as well as how variables are processed, the more accurate the code generation will be.", + "idealOutput": "Ideal Output", + "idealOutputPlaceholder": "Describe your ideal response format, length, tone, and content requirements...", + "optional": "Optional", + "dismiss": "Dismiss", + "generate": "Generate", + "resTitle": "Generated Prompt", + "newNoDataLine1": "Write a instruction in the left column, and click Generate to see response. ", + "apply": "Apply", + "loading": "Orchestrating the application for you...", + "overwriteTitle": "Override existing configuration?", + "overwriteMessage": "Applying this prompt will override existing configuration.", + "template": { + "pythonDebugger": { + "name": "Python debugger", + "instruction": "A bot that can generate and debug your code based on your instruction" + }, + "translation": { + "name": "Translation", + "instruction": "A translator that can translate multiple languages" + }, + "professionalAnalyst": { + "name": "Professional analyst", + "instruction": "Extract insights, identify risk and distill key information from long reports into single memo" + }, + "excelFormulaExpert": { + "name": "Excel formula expert", + "instruction": "A chatbot that can help novice users understand, use and create Excel formulas based on user instructions" + }, + "travelPlanning": { + "name": "Travel planning", + "instruction": "The Travel Planning Assistant is an intelligent tool designed to help users effortlessly plan their trips" + }, + "SQLSorcerer": { + "name": "SQL sorcerer", + "instruction": "Transform everyday language into SQL queries" + }, + "GitGud": { + "name": "Git gud", + "instruction": "Generate appropriate Git commands based on user described version control actions" + }, + "meetingTakeaways": { + "name": "Meeting takeaways", + "instruction": "Distill meetings into concise summaries including discussion topics, key takeaways, and action items" + }, + "writingsPolisher": { + "name": "Writing polisher", + "instruction": "Use advanced copyediting techniques to improve your writings" + } + }, + "press": "Press", + "to": "to ", + "insertContext": "insert context", + "optimizePromptTooltip": "Optimize in Prompt Generator", + "optimizationNote": "Optimization Note", + "versions": "Versions", + "version": "Version", + "latest": "Latest" + }, + "resetConfig": { + "title": "Confirm reset?", + "message": "Reset discards changes, restoring the last published configuration." + }, + "errorMessage": { + "nameOfKeyRequired": "name of the key: {{key}} required", + "valueOfVarRequired": "{{key}} value can not be empty", + "queryRequired": "Request text is required.", + "waitForResponse": "Please wait for the response to the previous message to complete.", + "waitForBatchResponse": "Please wait for the response to the batch task to complete.", + "notSelectModel": "Please choose a model", + "waitForImgUpload": "Please wait for the image to upload", + "waitForFileUpload": "Please wait for the file/files to upload" + }, + "warningMessage": { + "timeoutExceeded": "Results are not displayed due to timeout. Please refer to the logs to gather complete results." + }, + "chatSubTitle": "Instructions", + "completionSubTitle": "Prefix Prompt", + "promptTip": "Prompts guide AI responses with instructions and constraints. Insert variables like {{input}}. This prompt won't be visible to users.", + "formattingChangedTitle": "Formatting changed", + "formattingChangedText": "Modifying the formatting will reset the debug area, are you sure?", + "variableTitle": "Variables", + "variableTip": "Users fill variables in a form, automatically replacing variables in the prompt.", + "notSetVar": "Variables allow users to introduce prompt words or opening remarks when filling out forms. You can try entering \"{{input}}\" in the prompt words.", + "autoAddVar": "Undefined variables referenced in pre-prompt, are you want to add them in user input form?", + "variableTable": { + "key": "Variable Key", + "name": "User Input Field Name", + "type": "Input Type", + "action": "Actions", + "typeString": "String", + "typeSelect": "Select" + }, + "varKeyError": { + "canNoBeEmpty": "{{key}} is required", + "tooLong": "{{key}} is too length. Can not be longer then 30 characters", + "notValid": "{{key}} is invalid. Can only contain letters, numbers, and underscores", + "notStartWithNumber": "{{key}} can not start with a number", + "keyAlreadyExists": "{{key}} already exists" + }, + "otherError": { + "promptNoBeEmpty": "Prompt can not be empty", + "historyNoBeEmpty": "Conversation history must be set in the prompt", + "queryNoBeEmpty": "Query must be set in the prompt" + }, + "variableConfig": { + "addModalTitle": "Add Input Field", + "editModalTitle": "Edit Input Field", + "description": "Setting for variable {{varName}}", + "fieldType": "Field Type", + "string": "Short Text", + "text-input": "Short Text", + "paragraph": "Paragraph", + "select": "Select", + "number": "Number", + "checkbox": "Checkbox", + "json": "JSON Code", + "jsonSchema": "JSON Schema", + "optional": "optional", + "single-file": "Single File", + "multi-files": "File List", + "notSet": "Not set, try typing {{input}} in the prefix prompt", + "stringTitle": "Form text box options", + "maxLength": "Max Length", + "options": "Options", + "addOption": "Add option", + "apiBasedVar": "API-based Variable", + "varName": "Variable Name", + "labelName": "Label Name", + "displayName": "Display Name", + "inputPlaceholder": "Please input", + "content": "Content", + "required": "Required", + "placeholder": "Placeholder", + "placeholderPlaceholder": "Enter text to display when the field is empty", + "defaultValue": "Default Value", + "defaultValuePlaceholder": "Enter default value to pre-populate the field", + "unit": "Unit", + "unitPlaceholder": "Display units after numbers, e.g. tokens", + "tooltips": "Tooltips", + "tooltipsPlaceholder": "Enter helpful text shown when hovering over the label", + "showAllSettings": "Show All Settings", + "startSelectedOption": "Start selected option", + "noDefaultSelected": "Don't select", + "hide": "Hide", + "file": { + "supportFileTypes": "Support File Types", + "image": { + "name": "Image" + }, + "audio": { + "name": "Audio" + }, + "document": { + "name": "Document" + }, + "video": { + "name": "Video" + }, + "custom": { + "name": "Other file types", + "description": "Specify other file types.", + "createPlaceholder": "+ File extension, e.g .doc" + } + }, + "uploadFileTypes": "Upload File Types", + "uploadMethod": "Upload Method", + "localUpload": "Local Upload", + "both": "Both", + "maxNumberOfUploads": "Max number of uploads", + "maxNumberTip": "Document < {{docLimit}}, image < {{imgLimit}}, audio < {{audioLimit}}, video < {{videoLimit}}", + "errorMsg": { + "labelNameRequired": "Label name is required", + "varNameCanBeRepeat": "Variable name can not be repeated", + "atLeastOneOption": "At least one option is required", + "optionRepeat": "Has repeat options" + }, + "startChecked": "Start checked", + "noDefaultValue": "No default value", + "selectDefaultValue": "Select default value" + }, + "vision": { + "name": "Vision", + "description": "Enable Vision will allows the model to take in images and answer questions about them. ", + "onlySupportVisionModelTip": "Only supports vision models", + "settings": "Settings", + "visionSettings": { + "title": "Vision Settings", + "resolution": "Resolution", + "resolutionTooltip": "low res will allow model receive a low-res 512 x 512 version of the image, and represent the image with a budget of 65 tokens. This allows the API to return faster responses and consume fewer input tokens for use cases that do not require high detail.\nhigh res will first allows the model to see the low res image and then creates detailed crops of input images as 512px squares based on the input image size. Each of the detailed crops uses twice the token budget for a total of 129 tokens.", + "high": "High", + "low": "Low", + "uploadMethod": "Upload Method", + "both": "Both", + "localUpload": "Local Upload", + "url": "URL", + "uploadLimit": "Upload Limit" + } + }, + "voice": { + "name": "Voice", + "defaultDisplay": "Default Voice", + "description": "Text to speech voice Settings", + "settings": "Settings", + "voiceSettings": { + "title": "Voice Settings", + "language": "Language", + "resolutionTooltip": "Text-to-speech voice support language。", + "voice": "Voice", + "autoPlay": "Auto Play", + "autoPlayEnabled": "On", + "autoPlayDisabled": "Off" + } + }, + "openingStatement": { + "title": "Conversation Opener", + "add": "Add", + "writeOpener": "Edit opener", + "placeholder": "Write your opener message here, you can use variables, try type {{variable}}.", + "openingQuestion": "Opening Questions", + "openingQuestionPlaceholder": "You can use variables, try typing {{variable}}.", + "noDataPlaceHolder": "Starting the conversation with the user can help AI establish a closer connection with them in conversational applications.", + "varTip": "You can use variables, try type {{variable}}", + "tooShort": "At least 20 words of initial prompt are required to generate an opening remarks for the conversation.", + "notIncludeKey": "The initial prompt does not include the variable: {{key}}. Please add it to the initial prompt." + }, + "modelConfig": { + "model": "Model", + "setTone": "Set tone of responses", + "title": "Model and Parameters", + "modeType": { + "chat": "Chat", + "completion": "Complete" + } + }, + "inputs": { + "title": "Debug & Preview", + "noPrompt": "Try write some prompt in pre-prompt input", + "userInputField": "User Input Field", + "noVar": "Fill in the value of the variable, which will be automatically replaced in the prompt word every time a new session is started.", + "chatVarTip": "Fill in the value of the variable, which will be automatically replaced in the prompt word every time a new session is started", + "completionVarTip": "Fill in the value of the variable, which will be automatically replaced in the prompt words every time a question is submitted.", + "previewTitle": "Prompt preview", + "queryTitle": "Query content", + "queryPlaceholder": "Please enter the request text.", + "run": "RUN" + }, + "result": "Output Text", + "noResult": "Output will be displayed here.", + "datasetConfig": { + "settingTitle": "Retrieval settings", + "knowledgeTip": "Click the “+” button to add knowledge", + "retrieveOneWay": { + "title": "N-to-1 retrieval", + "description": "Based on user intent and Knowledge descriptions, the Agent autonomously selects the best Knowledge for querying. Best for applications with distinct, limited Knowledge." + }, + "retrieveMultiWay": { + "title": "Multi-path retrieval", + "description": "Based on user intent, queries across all Knowledge, retrieves relevant text from multi-sources, and selects the best results matching the user query after reranking." + }, + "embeddingModelRequired": "A configured Embedding Model is required", + "rerankModelRequired": "A configured Rerank Model is required", + "params": "Params", + "top_k": "Top K", + "top_kTip": "Used to filter chunks that are most similar to user questions. The system will also dynamically adjust the value of Top K, according to max_tokens of the selected model.", + "score_threshold": "Score Threshold", + "score_thresholdTip": "Used to set the similarity threshold for chunks filtering.", + "retrieveChangeTip": "Modifying the index mode and retrieval mode may affect applications associated with this Knowledge." + }, + "debugAsSingleModel": "Debug as Single Model", + "debugAsMultipleModel": "Debug as Multiple Models", + "duplicateModel": "Duplicate", + "publishAs": "Publish as", + "assistantType": { + "name": "Assistant Type", + "chatAssistant": { + "name": "Basic Assistant", + "description": "Build a chat-based assistant using a Large Language Model" + }, + "agentAssistant": { + "name": "Agent Assistant", + "description": "Build an intelligent Agent which can autonomously choose tools to complete the tasks" + } + }, + "agent": { + "agentMode": "Agent Mode", + "agentModeDes": "Set the type of inference mode for the agent", + "agentModeType": { + "ReACT": "ReAct", + "functionCall": "Function Calling" + }, + "setting": { + "name": "Agent Settings", + "description": "Agent Assistant settings allow setting agent mode and advanced features like built-in prompts, only available in Agent type.", + "maximumIterations": { + "name": "Maximum Iterations", + "description": "Limit the number of iterations an agent assistant can execute" + } + }, + "buildInPrompt": "Build-In Prompt", + "firstPrompt": "First Prompt", + "nextIteration": "Next Iteration", + "promptPlaceholder": "Write your prompt here", + "tools": { + "name": "Tools", + "description": "Using tools can extend the capabilities of LLM, such as searching the internet or performing scientific calculations", + "enabled": "Enabled" + } + } +} diff --git a/web/i18n/en-US/app-debug.ts b/web/i18n/en-US/app-debug.ts deleted file mode 100644 index 9d69c36d83..0000000000 --- a/web/i18n/en-US/app-debug.ts +++ /dev/null @@ -1,576 +0,0 @@ -const translation = { - pageTitle: { - line1: 'PROMPT', - line2: 'Engineering', - }, - orchestrate: 'Orchestrate', - promptMode: { - simple: 'Switch to Expert Mode to edit the whole PROMPT', - advanced: 'Expert Mode', - switchBack: 'Switch back', - advancedWarning: { - title: 'You have switched to Expert Mode, and once you modify the PROMPT, you CANNOT return to the basic mode.', - description: 'In Expert Mode, you can edit whole PROMPT.', - learnMore: 'Learn more', - ok: 'OK', - }, - operation: { - addMessage: 'Add Message', - }, - contextMissing: 'Context component missed, the effectiveness of the prompt may not be good.', - }, - operation: { - applyConfig: 'Publish', - resetConfig: 'Reset', - debugConfig: 'Debug', - addFeature: 'Add Feature', - automatic: 'Generate', - stopResponding: 'Stop responding', - agree: 'like', - disagree: 'dislike', - cancelAgree: 'Cancel like', - cancelDisagree: 'Cancel dislike', - userAction: 'User ', - }, - code: { - instruction: 'Instruction', - }, - notSetAPIKey: { - title: 'LLM provider key has not been set', - trailFinished: 'Trail finished', - description: 'The LLM provider key has not been set, and it needs to be set before debugging.', - settingBtn: 'Go to settings', - }, - trailUseGPT4Info: { - title: 'Does not support gpt-4 now', - description: 'Use gpt-4, please set API Key.', - }, - feature: { - groupChat: { - title: 'Chat enhance', - description: 'Add pre-conversation settings for apps can enhance user experience.', - }, - groupExperience: { - title: 'Experience enhance', - }, - conversationOpener: { - title: 'Conversation Opener', - description: 'In a chat app, the first sentence that the AI actively speaks to the user is usually used as a welcome.', - }, - suggestedQuestionsAfterAnswer: { - title: 'Follow-up', - description: 'Setting up next questions suggestion can give users a better chat.', - resDes: '3 suggestions for user next question.', - tryToAsk: 'Try to ask', - }, - moreLikeThis: { - title: 'More like this', - description: 'Generate multiple texts at once, and then edit and continue to generate', - generateNumTip: 'Number of each generated times', - tip: 'Using this feature will incur additional tokens overhead', - }, - speechToText: { - title: 'Speech to Text', - description: 'Voice input can be used in chat.', - resDes: 'Voice input is enabled', - }, - textToSpeech: { - title: 'Text to Speech', - description: 'Conversation messages can be converted to speech.', - resDes: 'Text to Audio is enabled', - }, - citation: { - title: 'Citations and Attributions', - description: 'Show source document and attributed section of the generated content.', - resDes: 'Citations and Attributions is enabled', - }, - annotation: { - title: 'Annotation Reply', - description: 'You can manually add high-quality response to the cache for prioritized matching with similar user questions.', - resDes: 'Annotation Response is enabled', - scoreThreshold: { - title: 'Score Threshold', - description: 'Used to set the similarity threshold for annotation reply.', - easyMatch: 'Easy Match', - accurateMatch: 'Accurate Match', - }, - matchVariable: { - title: 'Match Variable', - choosePlaceholder: 'Choose match variable', - }, - cacheManagement: 'Annotations', - cached: 'Annotated', - remove: 'Remove', - removeConfirm: 'Delete this annotation ?', - add: 'Add annotation', - edit: 'Edit annotation', - }, - dataSet: { - title: 'Knowledge', - noData: 'You can import Knowledge as context', - selectTitle: 'Select reference Knowledge', - selected: 'Knowledge selected', - noDataSet: 'No Knowledge found', - toCreate: 'Go to create', - notSupportSelectMulti: 'Currently only support one Knowledge', - queryVariable: { - title: 'Query variable', - tip: 'This variable will be used as the query input for context retrieval, obtaining context information related to the input of this variable.', - choosePlaceholder: 'Choose query variable', - noVar: 'No variables', - noVarTip: 'please create a variable under the Variables section', - unableToQueryDataSet: 'Unable to query the Knowledge', - unableToQueryDataSetTip: 'Unable to query the Knowledge successfully, please choose a context query variable in the context section.', - ok: 'OK', - contextVarNotEmpty: 'context query variable can not be empty', - deleteContextVarTitle: 'Delete variable “{{varName}}”?', - deleteContextVarTip: 'This variable has been set as a context query variable, and removing it will impact the normal use of the Knowledge. If you still need to delete it, please reselect it in the context section.', - }, - }, - tools: { - title: 'Tools', - tips: 'Tools provide a standard API call method, taking user input or variables as request parameters for querying external data as context.', - toolsInUse: '{{count}} tools in use', - modal: { - title: 'Tool', - toolType: { - title: 'Tool Type', - placeholder: 'Please select the tool type', - }, - name: { - title: 'Name', - placeholder: 'Please enter the name', - }, - variableName: { - title: 'Variable Name', - placeholder: 'Please enter the variable name', - }, - }, - }, - conversationHistory: { - title: 'Conversation History', - description: 'Set prefix names for conversation roles', - tip: 'The Conversation History is not enabled, please add in the prompt above.', - learnMore: 'Learn more', - editModal: { - title: 'Edit Conversation Role Names', - userPrefix: 'User prefix', - assistantPrefix: 'Assistant prefix', - }, - }, - toolbox: { - title: 'TOOLBOX', - }, - moderation: { - title: 'Content moderation', - description: 'Secure model output by using moderation API or maintaining a sensitive word list.', - contentEnableLabel: 'Content moderation enabled', - allEnabled: 'INPUT & OUTPUT', - inputEnabled: 'INPUT', - outputEnabled: 'OUTPUT', - modal: { - title: 'Content moderation settings', - provider: { - title: 'Provider', - openai: 'OpenAI Moderation', - openaiTip: { - prefix: 'OpenAI Moderation requires an OpenAI API key configured in the ', - suffix: '.', - }, - keywords: 'Keywords', - }, - keywords: { - tip: 'One per line, separated by line breaks. Up to 100 characters per line.', - placeholder: 'One per line, separated by line breaks', - line: 'Line', - }, - content: { - input: 'Moderate INPUT Content', - output: 'Moderate OUTPUT Content', - preset: 'Preset replies', - placeholder: 'Preset replies content here', - condition: 'Moderate INPUT and OUTPUT Content enabled at least one', - fromApi: 'Preset replies are returned by API', - errorMessage: 'Preset replies cannot be empty', - supportMarkdown: 'Markdown supported', - }, - openaiNotConfig: { - before: 'OpenAI Moderation requires an OpenAI API key configured in the', - after: '', - }, - }, - }, - fileUpload: { - title: 'File Upload', - description: 'The chat input box allows uploading of images, documents, and other files.', - supportedTypes: 'Support File Types', - numberLimit: 'Max uploads', - modalTitle: 'File Upload Setting', - }, - imageUpload: { - title: 'Image Upload', - description: 'Allow uploading images.', - supportedTypes: 'Support File Types', - numberLimit: 'Max uploads', - modalTitle: 'Image Upload Setting', - }, - bar: { - empty: 'Enable feature to enhance web app user experience', - enableText: 'Features Enabled', - manage: 'Manage', - }, - documentUpload: { - title: 'Document', - description: 'Enable Document will allows the model to take in documents and answer questions about them.', - }, - audioUpload: { - title: 'Audio', - description: 'Enable Audio will allow the model to process audio files for transcription and analysis.', - }, - }, - codegen: { - title: 'Code Generator', - description: 'The Code Generator uses configured models to generate high-quality code based on your instructions. Please provide clear and detailed instructions.', - instruction: 'Instructions', - instructionPlaceholder: 'Enter detailed description of the code you want to generate.', - noDataLine1: 'Describe your use case on the left,', - noDataLine2: 'the code preview will show here.', - generate: 'Generate', - generatedCodeTitle: 'Generated Code', - loading: 'Generating code...', - apply: 'Apply', - applyChanges: 'Apply Changes', - resTitle: 'Generated Code', - overwriteConfirmTitle: 'Overwrite existing code?', - overwriteConfirmMessage: 'This action will overwrite the existing code. Do you want to continue?', - }, - generate: { - title: 'Prompt Generator', - description: 'The Prompt Generator uses the configured model to optimize prompts for higher quality and better structure. Please write clear and detailed instructions.', - tryIt: 'Try it', - instruction: 'Instructions', - instructionPlaceHolderTitle: 'Describe how you would like to improve this Prompt. For example:', - instructionPlaceHolderLine1: 'Make the output more concise, retaining the core points.', - instructionPlaceHolderLine2: 'The output format is incorrect, please strictly follow the JSON format.', - instructionPlaceHolderLine3: 'The tone is too harsh, please make it more friendly.', - codeGenInstructionPlaceHolderLine: 'The more detailed the feedback, such as the data types of input and output as well as how variables are processed, the more accurate the code generation will be.', - idealOutput: 'Ideal Output', - idealOutputPlaceholder: 'Describe your ideal response format, length, tone, and content requirements...', - optional: 'Optional', - dismiss: 'Dismiss', - generate: 'Generate', - resTitle: 'Generated Prompt', - newNoDataLine1: 'Write a instruction in the left column, and click Generate to see response. ', - apply: 'Apply', - loading: 'Orchestrating the application for you...', - overwriteTitle: 'Override existing configuration?', - overwriteMessage: 'Applying this prompt will override existing configuration.', - template: { - pythonDebugger: { - name: 'Python debugger', - instruction: 'A bot that can generate and debug your code based on your instruction', - }, - translation: { - name: 'Translation', - instruction: 'A translator that can translate multiple languages', - }, - professionalAnalyst: { - name: 'Professional analyst', - instruction: 'Extract insights, identify risk and distill key information from long reports into single memo', - }, - excelFormulaExpert: { - name: 'Excel formula expert', - instruction: 'A chatbot that can help novice users understand, use and create Excel formulas based on user instructions', - }, - travelPlanning: { - name: 'Travel planning', - instruction: 'The Travel Planning Assistant is an intelligent tool designed to help users effortlessly plan their trips', - }, - SQLSorcerer: { - name: 'SQL sorcerer', - instruction: 'Transform everyday language into SQL queries', - }, - GitGud: { - name: 'Git gud', - instruction: 'Generate appropriate Git commands based on user described version control actions', - }, - meetingTakeaways: { - name: 'Meeting takeaways', - instruction: 'Distill meetings into concise summaries including discussion topics, key takeaways, and action items', - }, - writingsPolisher: { - name: 'Writing polisher', - instruction: 'Use advanced copyediting techniques to improve your writings', - }, - }, - press: 'Press', - to: 'to ', - insertContext: 'insert context', - optimizePromptTooltip: 'Optimize in Prompt Generator', - optimizationNote: 'Optimization Note', - versions: 'Versions', - version: 'Version', - latest: 'Latest', - }, - resetConfig: { - title: 'Confirm reset?', - message: - 'Reset discards changes, restoring the last published configuration.', - }, - errorMessage: { - nameOfKeyRequired: 'name of the key: {{key}} required', - valueOfVarRequired: '{{key}} value can not be empty', - queryRequired: 'Request text is required.', - waitForResponse: - 'Please wait for the response to the previous message to complete.', - waitForBatchResponse: - 'Please wait for the response to the batch task to complete.', - notSelectModel: 'Please choose a model', - waitForImgUpload: 'Please wait for the image to upload', - waitForFileUpload: 'Please wait for the file/files to upload', - }, - warningMessage: { - timeoutExceeded: 'Results are not displayed due to timeout. Please refer to the logs to gather complete results.', - }, - chatSubTitle: 'Instructions', - completionSubTitle: 'Prefix Prompt', - promptTip: - 'Prompts guide AI responses with instructions and constraints. Insert variables like {{input}}. This prompt won\'t be visible to users.', - formattingChangedTitle: 'Formatting changed', - formattingChangedText: - 'Modifying the formatting will reset the debug area, are you sure?', - variableTitle: 'Variables', - variableTip: - 'Users fill variables in a form, automatically replacing variables in the prompt.', - notSetVar: 'Variables allow users to introduce prompt words or opening remarks when filling out forms. You can try entering "{{input}}" in the prompt words.', - autoAddVar: 'Undefined variables referenced in pre-prompt, are you want to add them in user input form?', - variableTable: { - key: 'Variable Key', - name: 'User Input Field Name', - type: 'Input Type', - action: 'Actions', - typeString: 'String', - typeSelect: 'Select', - }, - varKeyError: { - canNoBeEmpty: '{{key}} is required', - tooLong: '{{key}} is too length. Can not be longer then 30 characters', - notValid: '{{key}} is invalid. Can only contain letters, numbers, and underscores', - notStartWithNumber: '{{key}} can not start with a number', - keyAlreadyExists: '{{key}} already exists', - }, - otherError: { - promptNoBeEmpty: 'Prompt can not be empty', - historyNoBeEmpty: 'Conversation history must be set in the prompt', - queryNoBeEmpty: 'Query must be set in the prompt', - }, - variableConfig: { - 'addModalTitle': 'Add Input Field', - 'editModalTitle': 'Edit Input Field', - 'description': 'Setting for variable {{varName}}', - 'fieldType': 'Field Type', - 'string': 'Short Text', - 'text-input': 'Short Text', - 'paragraph': 'Paragraph', - 'select': 'Select', - 'number': 'Number', - 'checkbox': 'Checkbox', - 'json': 'JSON Code', - 'jsonSchema': 'JSON Schema', - 'optional': 'optional', - 'single-file': 'Single File', - 'multi-files': 'File List', - 'notSet': 'Not set, try typing {{input}} in the prefix prompt', - 'stringTitle': 'Form text box options', - 'maxLength': 'Max Length', - 'options': 'Options', - 'addOption': 'Add option', - 'apiBasedVar': 'API-based Variable', - 'varName': 'Variable Name', - 'labelName': 'Label Name', - 'displayName': 'Display Name', - 'inputPlaceholder': 'Please input', - 'content': 'Content', - 'required': 'Required', - 'placeholder': 'Placeholder', - 'placeholderPlaceholder': 'Enter text to display when the field is empty', - 'defaultValue': 'Default Value', - 'defaultValuePlaceholder': 'Enter default value to pre-populate the field', - 'unit': 'Unit', - 'unitPlaceholder': 'Display units after numbers, e.g. tokens', - 'tooltips': 'Tooltips', - 'tooltipsPlaceholder': 'Enter helpful text shown when hovering over the label', - 'showAllSettings': 'Show All Settings', - 'startSelectedOption': 'Start selected option', - 'noDefaultSelected': 'Don\'t select', - 'hide': 'Hide', - 'file': { - supportFileTypes: 'Support File Types', - image: { - name: 'Image', - }, - audio: { - name: 'Audio', - }, - document: { - name: 'Document', - }, - video: { - name: 'Video', - }, - custom: { - name: 'Other file types', - description: 'Specify other file types.', - createPlaceholder: '+ File extension, e.g .doc', - }, - }, - 'uploadFileTypes': 'Upload File Types', - 'uploadMethod': 'Upload Method', - 'localUpload': 'Local Upload', - 'both': 'Both', - 'maxNumberOfUploads': 'Max number of uploads', - 'maxNumberTip': 'Document < {{docLimit}}, image < {{imgLimit}}, audio < {{audioLimit}}, video < {{videoLimit}}', - 'errorMsg': { - labelNameRequired: 'Label name is required', - varNameCanBeRepeat: 'Variable name can not be repeated', - atLeastOneOption: 'At least one option is required', - optionRepeat: 'Has repeat options', - }, - 'startChecked': 'Start checked', - 'noDefaultValue': 'No default value', - 'selectDefaultValue': 'Select default value', - }, - vision: { - name: 'Vision', - description: 'Enable Vision will allows the model to take in images and answer questions about them. ', - onlySupportVisionModelTip: 'Only supports vision models', - settings: 'Settings', - visionSettings: { - title: 'Vision Settings', - resolution: 'Resolution', - resolutionTooltip: 'low res will allow model receive a low-res 512 x 512 version of the image, and represent the image with a budget of 65 tokens. This allows the API to return faster responses and consume fewer input tokens for use cases that do not require high detail.\nhigh res will first allows the model to see the low res image and then creates detailed crops of input images as 512px squares based on the input image size. Each of the detailed crops uses twice the token budget for a total of 129 tokens.', - high: 'High', - low: 'Low', - uploadMethod: 'Upload Method', - both: 'Both', - localUpload: 'Local Upload', - url: 'URL', - uploadLimit: 'Upload Limit', - }, - }, - voice: { - name: 'Voice', - defaultDisplay: 'Default Voice', - description: 'Text to speech voice Settings', - settings: 'Settings', - voiceSettings: { - title: 'Voice Settings', - language: 'Language', - resolutionTooltip: 'Text-to-speech voice support language。', - voice: 'Voice', - autoPlay: 'Auto Play', - autoPlayEnabled: 'On', - autoPlayDisabled: 'Off', - }, - }, - openingStatement: { - title: 'Conversation Opener', - add: 'Add', - writeOpener: 'Edit opener', - placeholder: 'Write your opener message here, you can use variables, try type {{variable}}.', - openingQuestion: 'Opening Questions', - openingQuestionPlaceholder: 'You can use variables, try typing {{variable}}.', - noDataPlaceHolder: - 'Starting the conversation with the user can help AI establish a closer connection with them in conversational applications.', - varTip: 'You can use variables, try type {{variable}}', - tooShort: 'At least 20 words of initial prompt are required to generate an opening remarks for the conversation.', - notIncludeKey: 'The initial prompt does not include the variable: {{key}}. Please add it to the initial prompt.', - }, - modelConfig: { - model: 'Model', - setTone: 'Set tone of responses', - title: 'Model and Parameters', - modeType: { - chat: 'Chat', - completion: 'Complete', - }, - }, - inputs: { - title: 'Debug & Preview', - noPrompt: 'Try write some prompt in pre-prompt input', - userInputField: 'User Input Field', - noVar: 'Fill in the value of the variable, which will be automatically replaced in the prompt word every time a new session is started.', - chatVarTip: - 'Fill in the value of the variable, which will be automatically replaced in the prompt word every time a new session is started', - completionVarTip: - 'Fill in the value of the variable, which will be automatically replaced in the prompt words every time a question is submitted.', - previewTitle: 'Prompt preview', - queryTitle: 'Query content', - queryPlaceholder: 'Please enter the request text.', - run: 'RUN', - }, - result: 'Output Text', - noResult: 'Output will be displayed here.', - datasetConfig: { - settingTitle: 'Retrieval settings', - knowledgeTip: 'Click the “+” button to add knowledge', - retrieveOneWay: { - title: 'N-to-1 retrieval', - description: 'Based on user intent and Knowledge descriptions, the Agent autonomously selects the best Knowledge for querying. Best for applications with distinct, limited Knowledge.', - }, - retrieveMultiWay: { - title: 'Multi-path retrieval', - description: 'Based on user intent, queries across all Knowledge, retrieves relevant text from multi-sources, and selects the best results matching the user query after reranking.', - }, - embeddingModelRequired: 'A configured Embedding Model is required', - rerankModelRequired: 'A configured Rerank Model is required', - params: 'Params', - top_k: 'Top K', - top_kTip: 'Used to filter chunks that are most similar to user questions. The system will also dynamically adjust the value of Top K, according to max_tokens of the selected model.', - score_threshold: 'Score Threshold', - score_thresholdTip: 'Used to set the similarity threshold for chunks filtering.', - retrieveChangeTip: 'Modifying the index mode and retrieval mode may affect applications associated with this Knowledge.', - }, - debugAsSingleModel: 'Debug as Single Model', - debugAsMultipleModel: 'Debug as Multiple Models', - duplicateModel: 'Duplicate', - publishAs: 'Publish as', - assistantType: { - name: 'Assistant Type', - chatAssistant: { - name: 'Basic Assistant', - description: 'Build a chat-based assistant using a Large Language Model', - }, - agentAssistant: { - name: 'Agent Assistant', - description: 'Build an intelligent Agent which can autonomously choose tools to complete the tasks', - }, - }, - agent: { - agentMode: 'Agent Mode', - agentModeDes: 'Set the type of inference mode for the agent', - agentModeType: { - ReACT: 'ReAct', - functionCall: 'Function Calling', - }, - setting: { - name: 'Agent Settings', - description: 'Agent Assistant settings allow setting agent mode and advanced features like built-in prompts, only available in Agent type.', - maximumIterations: { - name: 'Maximum Iterations', - description: 'Limit the number of iterations an agent assistant can execute', - }, - }, - buildInPrompt: 'Build-In Prompt', - firstPrompt: 'First Prompt', - nextIteration: 'Next Iteration', - promptPlaceholder: 'Write your prompt here', - tools: { - name: 'Tools', - description: 'Using tools can extend the capabilities of LLM, such as searching the internet or performing scientific calculations', - enabled: 'Enabled', - }, - }, -} - -export default translation diff --git a/web/i18n/en-US/app-log.json b/web/i18n/en-US/app-log.json new file mode 100644 index 0000000000..bfc678a4f1 --- /dev/null +++ b/web/i18n/en-US/app-log.json @@ -0,0 +1,110 @@ +{ + "title": "Logs", + "description": "The logs record the running status of the application, including user inputs and AI replies.", + "dateTimeFormat": "MM/DD/YYYY hh:mm:ss A", + "dateFormat": "MM/DD/YYYY", + "table": { + "header": { + "updatedTime": "Updated time", + "time": "Created time", + "endUser": "End User or Account", + "input": "Input", + "output": "Output", + "summary": "Title", + "messageCount": "Message Count", + "userRate": "User Rate", + "adminRate": "Op. Rate", + "startTime": "START TIME", + "status": "STATUS", + "runtime": "RUN TIME", + "tokens": "TOKENS", + "user": "END USER OR ACCOUNT", + "version": "VERSION", + "triggered_from": "TRIGGER BY" + }, + "pagination": { + "previous": "Prev", + "next": "Next" + }, + "empty": { + "noChat": "No conversation yet", + "noOutput": "No output", + "element": { + "title": "Is anyone there?", + "content": "Observe and annotate interactions between end-users and AI applications here to continuously improve AI accuracy. You can try sharing or testing the Web App yourself, then return to this page." + } + } + }, + "detail": { + "time": "Time", + "conversationId": "Conversation ID", + "promptTemplate": "Prompt Template", + "promptTemplateBeforeChat": "Prompt Template Before Chat · As System Message", + "annotationTip": "Improvements Marked by {{user}}", + "timeConsuming": "", + "second": "s", + "tokenCost": "Token spent", + "loading": "loading", + "operation": { + "like": "like", + "dislike": "dislike", + "addAnnotation": "Add Improvement", + "editAnnotation": "Edit Improvement", + "annotationPlaceholder": "Enter the expected answer that you want AI to reply, which can be used for model fine-tuning and continuous improvement of text generation quality in the future." + }, + "variables": "Variables", + "uploadImages": "Uploaded Images", + "modelParams": "Model parameters" + }, + "filter": { + "period": { + "today": "Today", + "last7days": "Last 7 Days", + "last30days": "Last 30 Days", + "last4weeks": "Last 4 weeks", + "last3months": "Last 3 months", + "last12months": "Last 12 months", + "monthToDate": "Month to date", + "quarterToDate": "Quarter to date", + "yearToDate": "Year to date", + "allTime": "All time", + "custom": "Custom" + }, + "annotation": { + "all": "All", + "annotated": "Annotated Improvements ({{count}} items)", + "not_annotated": "Not Annotated" + }, + "sortBy": "Sort by:", + "descending": "descending", + "ascending": "ascending" + }, + "workflowTitle": "Workflow Logs", + "workflowSubtitle": "The log recorded the operation of Automate.", + "runDetail": { + "title": "Conversation Log", + "workflowTitle": "Log Detail", + "fileListLabel": "File Details", + "fileListDetail": "Detail", + "testWithParams": "Test With Params" + }, + "promptLog": "Prompt Log", + "agentLog": "Agent Log", + "viewLog": "View Log", + "agentLogDetail": { + "agentMode": "Agent Mode", + "toolUsed": "Tool Used", + "iterations": "Iterations", + "iteration": "Iteration", + "finalProcessing": "Final Processing" + }, + "triggerBy": { + "debugging": "Debugging", + "appRun": "WebApp", + "webhook": "Webhook", + "schedule": "Schedule", + "plugin": "Plugin", + "ragPipelineRun": "RAG Pipeline", + "ragPipelineDebugging": "RAG Debugging" + } +} diff --git a/web/i18n/en-US/app-log.ts b/web/i18n/en-US/app-log.ts deleted file mode 100644 index 7c5024a68f..0000000000 --- a/web/i18n/en-US/app-log.ts +++ /dev/null @@ -1,112 +0,0 @@ -const translation = { - title: 'Logs', - description: 'The logs record the running status of the application, including user inputs and AI replies.', - dateTimeFormat: 'MM/DD/YYYY hh:mm:ss A', - dateFormat: 'MM/DD/YYYY', - table: { - header: { - updatedTime: 'Updated time', - time: 'Created time', - endUser: 'End User or Account', - input: 'Input', - output: 'Output', - summary: 'Title', - messageCount: 'Message Count', - userRate: 'User Rate', - adminRate: 'Op. Rate', - startTime: 'START TIME', - status: 'STATUS', - runtime: 'RUN TIME', - tokens: 'TOKENS', - user: 'END USER OR ACCOUNT', - version: 'VERSION', - triggered_from: 'TRIGGER BY', - }, - pagination: { - previous: 'Prev', - next: 'Next', - }, - empty: { - noChat: 'No conversation yet', - noOutput: 'No output', - element: { - title: 'Is anyone there?', - content: 'Observe and annotate interactions between end-users and AI applications here to continuously improve AI accuracy. You can try sharing or testing the Web App yourself, then return to this page.', - }, - }, - }, - detail: { - time: 'Time', - conversationId: 'Conversation ID', - promptTemplate: 'Prompt Template', - promptTemplateBeforeChat: 'Prompt Template Before Chat · As System Message', - annotationTip: 'Improvements Marked by {{user}}', - timeConsuming: '', - second: 's', - tokenCost: 'Token spent', - loading: 'loading', - operation: { - like: 'like', - dislike: 'dislike', - addAnnotation: 'Add Improvement', - editAnnotation: 'Edit Improvement', - annotationPlaceholder: 'Enter the expected answer that you want AI to reply, which can be used for model fine-tuning and continuous improvement of text generation quality in the future.', - }, - variables: 'Variables', - uploadImages: 'Uploaded Images', - modelParams: 'Model parameters', - }, - filter: { - period: { - today: 'Today', - last7days: 'Last 7 Days', - last30days: 'Last 30 Days', - last4weeks: 'Last 4 weeks', - last3months: 'Last 3 months', - last12months: 'Last 12 months', - monthToDate: 'Month to date', - quarterToDate: 'Quarter to date', - yearToDate: 'Year to date', - allTime: 'All time', - custom: 'Custom', - }, - annotation: { - all: 'All', - annotated: 'Annotated Improvements ({{count}} items)', - not_annotated: 'Not Annotated', - }, - sortBy: 'Sort by:', - descending: 'descending', - ascending: 'ascending', - }, - workflowTitle: 'Workflow Logs', - workflowSubtitle: 'The log recorded the operation of Automate.', - runDetail: { - title: 'Conversation Log', - workflowTitle: 'Log Detail', - fileListLabel: 'File Details', - fileListDetail: 'Detail', - testWithParams: 'Test With Params', - }, - promptLog: 'Prompt Log', - agentLog: 'Agent Log', - viewLog: 'View Log', - agentLogDetail: { - agentMode: 'Agent Mode', - toolUsed: 'Tool Used', - iterations: 'Iterations', - iteration: 'Iteration', - finalProcessing: 'Final Processing', - }, - triggerBy: { - debugging: 'Debugging', - appRun: 'WebApp', - webhook: 'Webhook', - schedule: 'Schedule', - plugin: 'Plugin', - ragPipelineRun: 'RAG Pipeline', - ragPipelineDebugging: 'RAG Debugging', - }, -} - -export default translation diff --git a/web/i18n/en-US/app-overview.json b/web/i18n/en-US/app-overview.json new file mode 100644 index 0000000000..59cc89e4ed --- /dev/null +++ b/web/i18n/en-US/app-overview.json @@ -0,0 +1,187 @@ +{ + "welcome": { + "firstStepTip": "To get started,", + "enterKeyTip": "enter your OpenAI API Key below", + "getKeyTip": "Get your API Key from OpenAI dashboard", + "placeholder": "Your OpenAI API Key (eg.sk-xxxx)" + }, + "apiKeyInfo": { + "cloud": { + "trial": { + "title": "You are using the {{providerName}} trial quota.", + "description": "The trial quota is provided for your testing purposes. Before the trial quota is exhausted, please set up your own model provider or purchase additional quota." + }, + "exhausted": { + "title": "Your trial quota have been used up, please set up your APIKey.", + "description": "You have exhausted your trial quota. Please set up your own model provider or purchase additional quota." + } + }, + "selfHost": { + "title": { + "row1": "To get started,", + "row2": "setup your model provider first." + } + }, + "callTimes": "Call times", + "usedToken": "Used token", + "setAPIBtn": "Go to setup model provider", + "tryCloud": "Or try the cloud version of Dify with free quote" + }, + "overview": { + "title": "Overview", + "appInfo": { + "title": "Web App", + "explanation": "Ready-to-use AI web app", + "accessibleAddress": "Public URL", + "preview": "Preview", + "launch": "Launch", + "regenerate": "Regenerate", + "regenerateNotice": "Do you want to regenerate the public URL?", + "preUseReminder": "Please enable web app before continuing.", + "enableTooltip": { + "description": "To enable this feature, please add a User Input node to the canvas. (May already exist in draft, takes effect after publishing)", + "learnMore": "Learn more" + }, + "settings": { + "entry": "Settings", + "title": "Web App Settings", + "modalTip": "Client-side web app settings. ", + "webName": "web app Name", + "webDesc": "web app Description", + "webDescTip": "This text will be displayed on the client side, providing basic guidance on how to use the application", + "webDescPlaceholder": "Enter the description of the web app", + "language": "Language", + "workflow": { + "title": "Workflow", + "subTitle": "Workflow Details", + "show": "Show", + "hide": "Hide", + "showDesc": "Show or hide workflow details in web app" + }, + "chatColorTheme": "Chat color theme", + "chatColorThemeDesc": "Set the color theme of the chatbot", + "chatColorThemeInverted": "Inverted", + "invalidHexMessage": "Invalid hex value", + "invalidPrivacyPolicy": "Invalid privacy policy link. Please use a valid link that starts with http or https", + "sso": { + "label": "SSO Enforcement", + "title": "web app SSO", + "description": "All users are required to login with SSO before using web app", + "tooltip": "Contact the administrator to enable web app SSO" + }, + "more": { + "entry": "Show more settings", + "copyright": "Copyright", + "copyrightTip": "Display copyright information in the web app", + "copyrightTooltip": "Please upgrade to Professional plan or above", + "copyRightPlaceholder": "Enter the name of the author or organization", + "privacyPolicy": "Privacy Policy", + "privacyPolicyPlaceholder": "Enter the privacy policy link", + "privacyPolicyTip": "Helps visitors understand the data the application collects, see Dify's Privacy Policy.", + "customDisclaimer": "Custom Disclaimer", + "customDisclaimerPlaceholder": "Enter the custom disclaimer text", + "customDisclaimerTip": "Custom disclaimer text will be displayed on the client side, providing additional information about the application" + } + }, + "embedded": { + "entry": "Embedded", + "title": "Embed on website", + "explanation": "Choose the way to embed chat app to your website", + "iframe": "To add the chat app any where on your website, add this iframe to your html code.", + "scripts": "To add a chat app to the bottom right of your website add this code to your html.", + "chromePlugin": "Install Dify Chatbot Chrome Extension", + "copied": "Copied", + "copy": "Copy" + }, + "qrcode": { + "title": "Link QR Code", + "scan": "Scan To Share", + "download": "Download QR Code" + }, + "customize": { + "way": "way", + "entry": "Customize", + "title": "Customize AI web app", + "explanation": "You can customize the frontend of the Web App to fit your scenario and style needs.", + "way1": { + "name": "Fork the client code, modify it and deploy to Vercel (recommended)", + "step1": "Fork the client code and modify it", + "step1Tip": "Click here to fork the source code into your GitHub account and modify the code", + "step1Operation": "Dify-WebClient", + "step2": "Deploy to Vercel", + "step2Tip": "Click here to import the repository into Vercel and deploy", + "step2Operation": "Import repository", + "step3": "Configure environment variables", + "step3Tip": "Add the following environment variables in Vercel" + }, + "way2": { + "name": "Write client-side code to call the API and deploy it to a server", + "operation": "Documentation" + } + } + }, + "apiInfo": { + "title": "Backend Service API", + "explanation": "Easily integrated into your application", + "accessibleAddress": "Service API Endpoint", + "doc": "API Reference" + }, + "triggerInfo": { + "title": "Triggers", + "explanation": "Workflow trigger management", + "triggersAdded": "{{count}} Triggers added", + "noTriggerAdded": "No trigger added", + "triggerStatusDescription": "Trigger node status appears here. (May already exist in draft, takes effect after publishing)", + "learnAboutTriggers": "Learn about Triggers" + }, + "status": { + "running": "In Service", + "disable": "Disabled" + }, + "disableTooltip": { + "triggerMode": "The {{feature}} feature is not supported in Trigger Node mode." + } + }, + "analysis": { + "title": "Analysis", + "ms": "ms", + "tokenPS": "Token/s", + "totalMessages": { + "title": "Total Messages", + "explanation": "Daily AI interactions count." + }, + "totalConversations": { + "title": "Total Conversations", + "explanation": "Daily AI conversations count; prompt engineering/debugging excluded." + }, + "activeUsers": { + "title": "Active Users", + "explanation": "Unique users engaging in Q&A with AI; prompt engineering/debugging excluded." + }, + "tokenUsage": { + "title": "Token Usage", + "explanation": "Reflects the daily token usage of the language model for the application, useful for cost control purposes.", + "consumed": "Consumed" + }, + "avgSessionInteractions": { + "title": "Avg. Session Interactions", + "explanation": "Continuous user-AI communication count; for conversation-based apps." + }, + "avgUserInteractions": { + "title": "Avg. User Interactions", + "explanation": "Reflects the daily usage frequency of users. This metric reflects user stickiness." + }, + "userSatisfactionRate": { + "title": "User Satisfaction Rate", + "explanation": "The number of likes per 1,000 messages. This indicates the proportion of answers that users are highly satisfied with." + }, + "avgResponseTime": { + "title": "Avg. Response Time", + "explanation": "Time (ms) for AI to process/respond; for text-based apps." + }, + "tps": { + "title": "Token Output Speed", + "explanation": "Measure the performance of the LLM. Count the Tokens output speed of LLM from the beginning of the request to the completion of the output." + } + } +} diff --git a/web/i18n/en-US/app-overview.ts b/web/i18n/en-US/app-overview.ts deleted file mode 100644 index 20730636f4..0000000000 --- a/web/i18n/en-US/app-overview.ts +++ /dev/null @@ -1,189 +0,0 @@ -const translation = { - welcome: { - firstStepTip: 'To get started,', - enterKeyTip: 'enter your OpenAI API Key below', - getKeyTip: 'Get your API Key from OpenAI dashboard', - placeholder: 'Your OpenAI API Key (eg.sk-xxxx)', - }, - apiKeyInfo: { - cloud: { - trial: { - title: 'You are using the {{providerName}} trial quota.', - description: 'The trial quota is provided for your testing purposes. Before the trial quota is exhausted, please set up your own model provider or purchase additional quota.', - }, - exhausted: { - title: 'Your trial quota have been used up, please set up your APIKey.', - description: 'You have exhausted your trial quota. Please set up your own model provider or purchase additional quota.', - }, - }, - selfHost: { - title: { - row1: 'To get started,', - row2: 'setup your model provider first.', - }, - }, - callTimes: 'Call times', - usedToken: 'Used token', - setAPIBtn: 'Go to setup model provider', - tryCloud: 'Or try the cloud version of Dify with free quote', - }, - overview: { - title: 'Overview', - appInfo: { - title: 'Web App', - explanation: 'Ready-to-use AI web app', - accessibleAddress: 'Public URL', - preview: 'Preview', - launch: 'Launch', - regenerate: 'Regenerate', - regenerateNotice: 'Do you want to regenerate the public URL?', - preUseReminder: 'Please enable web app before continuing.', - enableTooltip: { - description: 'To enable this feature, please add a User Input node to the canvas. (May already exist in draft, takes effect after publishing)', - learnMore: 'Learn more', - }, - settings: { - entry: 'Settings', - title: 'Web App Settings', - modalTip: 'Client-side web app settings. ', - webName: 'web app Name', - webDesc: 'web app Description', - webDescTip: 'This text will be displayed on the client side, providing basic guidance on how to use the application', - webDescPlaceholder: 'Enter the description of the web app', - language: 'Language', - workflow: { - title: 'Workflow', - subTitle: 'Workflow Details', - show: 'Show', - hide: 'Hide', - showDesc: 'Show or hide workflow details in web app', - }, - chatColorTheme: 'Chat color theme', - chatColorThemeDesc: 'Set the color theme of the chatbot', - chatColorThemeInverted: 'Inverted', - invalidHexMessage: 'Invalid hex value', - invalidPrivacyPolicy: 'Invalid privacy policy link. Please use a valid link that starts with http or https', - sso: { - label: 'SSO Enforcement', - title: 'web app SSO', - description: 'All users are required to login with SSO before using web app', - tooltip: 'Contact the administrator to enable web app SSO', - }, - more: { - entry: 'Show more settings', - copyright: 'Copyright', - copyrightTip: 'Display copyright information in the web app', - copyrightTooltip: 'Please upgrade to Professional plan or above', - copyRightPlaceholder: 'Enter the name of the author or organization', - privacyPolicy: 'Privacy Policy', - privacyPolicyPlaceholder: 'Enter the privacy policy link', - privacyPolicyTip: 'Helps visitors understand the data the application collects, see Dify\'s Privacy Policy.', - customDisclaimer: 'Custom Disclaimer', - customDisclaimerPlaceholder: 'Enter the custom disclaimer text', - customDisclaimerTip: 'Custom disclaimer text will be displayed on the client side, providing additional information about the application', - }, - }, - embedded: { - entry: 'Embedded', - title: 'Embed on website', - explanation: 'Choose the way to embed chat app to your website', - iframe: 'To add the chat app any where on your website, add this iframe to your html code.', - scripts: 'To add a chat app to the bottom right of your website add this code to your html.', - chromePlugin: 'Install Dify Chatbot Chrome Extension', - copied: 'Copied', - copy: 'Copy', - }, - qrcode: { - title: 'Link QR Code', - scan: 'Scan To Share', - download: 'Download QR Code', - }, - customize: { - way: 'way', - entry: 'Customize', - title: 'Customize AI web app', - explanation: 'You can customize the frontend of the Web App to fit your scenario and style needs.', - way1: { - name: 'Fork the client code, modify it and deploy to Vercel (recommended)', - step1: 'Fork the client code and modify it', - step1Tip: 'Click here to fork the source code into your GitHub account and modify the code', - step1Operation: 'Dify-WebClient', - step2: 'Deploy to Vercel', - step2Tip: 'Click here to import the repository into Vercel and deploy', - step2Operation: 'Import repository', - step3: 'Configure environment variables', - step3Tip: 'Add the following environment variables in Vercel', - }, - way2: { - name: 'Write client-side code to call the API and deploy it to a server', - operation: 'Documentation', - }, - }, - }, - apiInfo: { - title: 'Backend Service API', - explanation: 'Easily integrated into your application', - accessibleAddress: 'Service API Endpoint', - doc: 'API Reference', - }, - triggerInfo: { - title: 'Triggers', - explanation: 'Workflow trigger management', - triggersAdded: '{{count}} Triggers added', - noTriggerAdded: 'No trigger added', - triggerStatusDescription: 'Trigger node status appears here. (May already exist in draft, takes effect after publishing)', - learnAboutTriggers: 'Learn about Triggers', - }, - status: { - running: 'In Service', - disable: 'Disabled', - }, - disableTooltip: { - triggerMode: 'The {{feature}} feature is not supported in Trigger Node mode.', - }, - }, - analysis: { - title: 'Analysis', - ms: 'ms', - tokenPS: 'Token/s', - totalMessages: { - title: 'Total Messages', - explanation: 'Daily AI interactions count.', - }, - totalConversations: { - title: 'Total Conversations', - explanation: 'Daily AI conversations count; prompt engineering/debugging excluded.', - }, - activeUsers: { - title: 'Active Users', - explanation: 'Unique users engaging in Q&A with AI; prompt engineering/debugging excluded.', - }, - tokenUsage: { - title: 'Token Usage', - explanation: 'Reflects the daily token usage of the language model for the application, useful for cost control purposes.', - consumed: 'Consumed', - }, - avgSessionInteractions: { - title: 'Avg. Session Interactions', - explanation: 'Continuous user-AI communication count; for conversation-based apps.', - }, - avgUserInteractions: { - title: 'Avg. User Interactions', - explanation: 'Reflects the daily usage frequency of users. This metric reflects user stickiness.', - }, - userSatisfactionRate: { - title: 'User Satisfaction Rate', - explanation: 'The number of likes per 1,000 messages. This indicates the proportion of answers that users are highly satisfied with.', - }, - avgResponseTime: { - title: 'Avg. Response Time', - explanation: 'Time (ms) for AI to process/respond; for text-based apps.', - }, - tps: { - title: 'Token Output Speed', - explanation: 'Measure the performance of the LLM. Count the Tokens output speed of LLM from the beginning of the request to the completion of the output.', - }, - }, -} - -export default translation diff --git a/web/i18n/en-US/app.json b/web/i18n/en-US/app.json new file mode 100644 index 0000000000..48dd400d0b --- /dev/null +++ b/web/i18n/en-US/app.json @@ -0,0 +1,351 @@ +{ + "theme": { + "switchDark": "Switch to dark theme", + "switchLight": "Switch to light theme" + }, + "appNamePlaceholder": "Give your app a name", + "createApp": "CREATE APP", + "types": { + "all": "All", + "chatbot": "Chatbot", + "agent": "Agent", + "workflow": "Workflow", + "completion": "Completion", + "advanced": "Chatflow", + "basic": "Basic" + }, + "duplicate": "Duplicate", + "mermaid": { + "handDrawn": "Hand Drawn", + "classic": "Classic" + }, + "duplicateTitle": "Duplicate App", + "export": "Export DSL", + "exportFailed": "Export DSL failed.", + "importDSL": "Import DSL file", + "createFromConfigFile": "Create from DSL file", + "importFromDSL": "Import from DSL", + "importFromDSLFile": "From DSL file", + "importFromDSLUrl": "From URL", + "importFromDSLUrlPlaceholder": "Paste DSL link here", + "dslUploader": { + "button": "Drag and drop file, or", + "browse": "Browse" + }, + "deleteAppConfirmTitle": "Delete this app?", + "deleteAppConfirmContent": "Deleting the app is irreversible. Users will no longer be able to access your app, and all prompt configurations and logs will be permanently deleted.", + "appDeleted": "App deleted", + "appDeleteFailed": "Failed to delete app", + "join": "Join the community", + "communityIntro": "Discuss with team members, contributors and developers on different channels.", + "roadmap": "See our roadmap", + "newApp": { + "learnMore": "Learn more", + "startFromBlank": "Create from Blank", + "startFromTemplate": "Create from Template", + "foundResult": "{{count}} Result", + "foundResults": "{{count}} Results", + "noAppsFound": "No apps found", + "noTemplateFound": "No templates found", + "noTemplateFoundTip": "Try searching using different keywords.", + "chatbotShortDescription": "LLM-based chatbot with simple setup", + "chatbotUserDescription": "Quickly build an LLM-based chatbot with simple configuration. You can switch to Chatflow later.", + "completionShortDescription": "AI assistant for text generation tasks", + "completionUserDescription": "Quickly build an AI assistant for text generation tasks with simple configuration.", + "agentShortDescription": "Intelligent agent with reasoning and autonomous tool use", + "agentUserDescription": "An intelligent agent capable of iterative reasoning and autonomous tool use to achieve task goals.", + "workflowShortDescription": "Agentic flow for intelligent automations", + "workflowUserDescription": "Visually build autonomous AI workflows with drag-and-drop simplicity.", + "workflowWarning": "Currently in beta", + "advancedShortDescription": "Workflow enhanced for multi-turn chats", + "advancedUserDescription": "Workflow with additional memory features and a chatbot interface.", + "chooseAppType": "Choose an App Type", + "forBeginners": "More basic app types", + "forAdvanced": "FOR ADVANCED USERS", + "noIdeaTip": "No ideas? Check out our templates", + "captionName": "App Name & Icon", + "appNamePlaceholder": "Give your app a name", + "captionDescription": "Description", + "optional": "Optional", + "appDescriptionPlaceholder": "Enter the description of the app", + "useTemplate": "Use this template", + "previewDemo": "Preview demo", + "chatApp": "Assistant", + "chatAppIntro": "I want to build a chat-based application. This app uses a question-and-answer format, allowing for multiple rounds of continuous conversation.", + "agentAssistant": "New Agent Assistant", + "completeApp": "Text Generator", + "completeAppIntro": "I want to create an application that generates high-quality text based on prompts, such as generating articles, summaries, translations, and more.", + "showTemplates": "I want to choose from a template", + "hideTemplates": "Go back to mode selection", + "Create": "Create", + "Cancel": "Cancel", + "Confirm": "Confirm", + "import": "Import", + "nameNotEmpty": "Name cannot be empty", + "appTemplateNotSelected": "Please select a template", + "appTypeRequired": "Please select an app type", + "appCreated": "App created", + "caution": "Caution", + "appCreateDSLWarning": "Caution: DSL version difference may affect certain features", + "appCreateDSLErrorTitle": "Version Incompatibility", + "appCreateDSLErrorPart1": "A significant difference in DSL versions has been detected. Forcing the import may cause the application to malfunction.", + "appCreateDSLErrorPart2": "Do you want to continue?", + "appCreateDSLErrorPart3": "Current application DSL version: ", + "appCreateDSLErrorPart4": "System-supported DSL version: ", + "appCreateFailed": "Failed to create app", + "dropDSLToCreateApp": "Drop DSL file here to create app" + }, + "newAppFromTemplate": { + "byCategories": "BY CATEGORIES", + "searchAllTemplate": "Search all templates...", + "sidebar": { + "Recommended": "Recommended", + "Agent": "Agent", + "Assistant": "Assistant", + "HR": "HR", + "Workflow": "Workflow", + "Writing": "Writing", + "Programming": "Programming" + } + }, + "editApp": "Edit Info", + "editAppTitle": "Edit App Info", + "editDone": "App info updated", + "editFailed": "Failed to update app info", + "iconPicker": { + "ok": "OK", + "cancel": "Cancel", + "emoji": "Emoji", + "image": "Image" + }, + "answerIcon": { + "title": "Use web app icon to replace 🤖", + "description": "Whether to use the web app icon to replace 🤖 in the shared application", + "descriptionInExplore": "Whether to use the web app icon to replace 🤖 in Explore" + }, + "switch": "Switch to Workflow Orchestrate", + "switchTipStart": "A new app copy will be created for you, and the new copy will switch to Workflow Orchestrate. The new copy will ", + "switchTip": "not allow", + "switchTipEnd": " switching back to Basic Orchestrate.", + "switchLabel": "The app copy to be created", + "removeOriginal": "Delete the original app", + "switchStart": "Start switch", + "openInExplore": "Open in Explore", + "typeSelector": { + "all": "All Types ", + "chatbot": "Chatbot", + "agent": "Agent", + "workflow": "Workflow", + "completion": "Completion", + "advanced": "Chatflow" + }, + "tracing": { + "title": "Tracing app performance", + "description": "Configuring a Third-Party LLMOps provider and tracing app performance.", + "config": "Config", + "view": "View", + "collapse": "Collapse", + "expand": "Expand", + "tracing": "Tracing", + "disabled": "Disabled", + "disabledTip": "Please config provider first", + "enabled": "In Service", + "tracingDescription": "Capture the full context of app execution, including LLM calls, context, prompts, HTTP requests, and more, to a third-party tracing platform.", + "configProviderTitle": { + "configured": "Configured", + "notConfigured": "Config provider to enable tracing", + "moreProvider": "More Provider" + }, + "arize": { + "title": "Arize", + "description": "Enterprise-grade LLM observability, online & offline evaluation, monitoring, and experimentation—powered by OpenTelemetry. Purpose-built for LLM & agent-driven applications." + }, + "phoenix": { + "title": "Phoenix", + "description": "Open-source & OpenTelemetry-based observability, evaluation, prompt engineering and experimentation platform for your LLM workflows and agents." + }, + "langsmith": { + "title": "LangSmith", + "description": "An all-in-one developer platform for every step of the LLM-powered application lifecycle." + }, + "langfuse": { + "title": "Langfuse", + "description": "Open-source LLM observability, evaluation, prompt management and metrics to debug and improve your LLM application." + }, + "opik": { + "title": "Opik", + "description": "Opik is an open-source platform for evaluating, testing, and monitoring LLM applications." + }, + "weave": { + "title": "Weave", + "description": "Weave is an open-source platform for evaluating, testing, and monitoring LLM applications." + }, + "aliyun": { + "title": "Cloud Monitor", + "description": "The fully-managed and maintenance-free observability platform provided by Alibaba Cloud, enables out-of-the-box monitoring, tracing, and evaluation of Dify applications." + }, + "mlflow": { + "title": "MLflow", + "description": "MLflow is an open-source platform for experiment management, evaluation, and monitoring of LLM applications." + }, + "databricks": { + "title": "Databricks", + "description": "Databricks offers fully-managed MLflow with strong governance and security for storing trace data." + }, + "tencent": { + "title": "Tencent APM", + "description": "Tencent Application Performance Monitoring provides comprehensive tracing and multi-dimensional analysis for LLM applications." + }, + "inUse": "In use", + "configProvider": { + "title": "Config ", + "placeholder": "Enter your {{key}}", + "project": "Project", + "trackingUri": "Tracking URI", + "experimentId": "Experiment ID", + "username": "Username", + "password": "Password", + "publicKey": "Public Key", + "secretKey": "Secret Key", + "viewDocsLink": "View {{key}} docs", + "removeConfirmTitle": "Remove {{key}} configuration?", + "removeConfirmContent": "The current configuration is in use, removing it will turn off the Tracing feature.", + "clientId": "OAuth Client ID", + "clientSecret": "OAuth Client Secret", + "personalAccessToken": "Personal Access Token (legacy)", + "databricksHost": "Databricks Workspace URL" + } + }, + "appSelector": { + "label": "APP", + "placeholder": "Select an app...", + "params": "APP PARAMETERS", + "noParams": "No parameters needed" + }, + "showMyCreatedAppsOnly": "Created by me", + "structOutput": { + "moreFillTip": "Showing max 10 levels of nesting", + "required": "Required", + "LLMResponse": "LLM Response", + "configure": "Configure", + "notConfiguredTip": "Structured output has not been configured yet", + "structured": "Structured", + "structuredTip": "Structured Outputs is a feature that ensures the model will always generate responses that adhere to your supplied JSON Schema", + "modelNotSupported": "Model not supported", + "modelNotSupportedTip": "The current model does not support this feature and is automatically downgraded to prompt injection." + }, + "accessControl": "Web App Access Control", + "accessItemsDescription": { + "anyone": "Anyone can access the web app (no login required)", + "specific": "Only specific members within the platform can access the web app", + "organization": "All members within the platform can access the web app", + "external": "Only authenticated external users can access the web app" + }, + "accessControlDialog": { + "title": "Web App Access Control", + "description": "Set web app access permissions", + "accessLabel": "Who has access", + "accessItems": { + "anyone": "Anyone with the link", + "specific": "Specific members within the platform", + "organization": "All members within the platform", + "external": "Authenticated external users" + }, + "groups_one": "{{count}} GROUP", + "groups_other": "{{count}} GROUPS", + "members_one": "{{count}} MEMBER", + "members_other": "{{count}} MEMBERS", + "noGroupsOrMembers": "No groups or members selected", + "webAppSSONotEnabledTip": "Please contact your organization administrator to configure external authentication for the web app.", + "operateGroupAndMember": { + "searchPlaceholder": "Search groups and members", + "allMembers": "All members", + "expand": "Expand", + "noResult": "No result" + }, + "updateSuccess": "Update successfully" + }, + "publishApp": { + "title": "Who can access web app", + "notSet": "Not set", + "notSetDesc": "Currently nobody can access the web app. Please set permissions." + }, + "noAccessPermission": "No permission to access web app", + "noUserInputNode": "Missing user input node", + "notPublishedYet": "App is not published yet", + "maxActiveRequests": "Max concurrent requests", + "maxActiveRequestsPlaceholder": "Enter 0 for unlimited", + "maxActiveRequestsTip": "Maximum number of concurrent active requests per app (0 for unlimited)", + "gotoAnything": { + "searchPlaceholder": "Search or type @ or / for commands...", + "searchTitle": "Search for anything", + "searching": "Searching...", + "noResults": "No results found", + "searchFailed": "Search failed", + "searchTemporarilyUnavailable": "Search temporarily unavailable", + "servicesUnavailableMessage": "Some search services may be experiencing issues. Try again in a moment.", + "someServicesUnavailable": "Some search services unavailable", + "resultCount": "{{count}} result", + "resultCount_other": "{{count}} results", + "inScope": "in {{scope}}s", + "clearToSearchAll": "Clear @ to search all", + "useAtForSpecific": "Use @ for specific types", + "selectToNavigate": "Select to navigate", + "startTyping": "Start typing to search", + "tips": "Press ↑↓ to navigate", + "pressEscToClose": "Press ESC to close", + "selectSearchType": "Choose what to search for", + "searchHint": "Start typing to search everything instantly", + "commandHint": "Type @ to browse by category", + "slashHint": "Type / to see all available commands", + "actions": { + "slashTitle": "Commands", + "searchApplications": "Search Applications", + "searchApplicationsDesc": "Search and navigate to your applications", + "searchPlugins": "Search Plugins", + "searchPluginsDesc": "Search and navigate to your plugins", + "searchKnowledgeBases": "Search Knowledge Bases", + "searchKnowledgeBasesDesc": "Search and navigate to your knowledge bases", + "searchWorkflowNodes": "Search Workflow Nodes", + "searchWorkflowNodesDesc": "Find and jump to nodes in the current workflow by name or type", + "searchWorkflowNodesHelp": "This feature only works when viewing a workflow. Navigate to a workflow first.", + "runTitle": "Commands", + "runDesc": "Run quick commands (theme, language, ...)", + "themeCategoryTitle": "Theme", + "themeCategoryDesc": "Switch application theme", + "themeSystem": "System Theme", + "themeSystemDesc": "Follow your OS appearance", + "themeLight": "Light Theme", + "themeLightDesc": "Use light appearance", + "themeDark": "Dark Theme", + "themeDarkDesc": "Use dark appearance", + "languageCategoryTitle": "Language", + "languageCategoryDesc": "Switch interface language", + "languageChangeDesc": "Change UI language", + "slashDesc": "Execute commands (type / to see all available commands)", + "accountDesc": "Navigate to account page", + "communityDesc": "Open Discord community", + "docDesc": "Open help documentation", + "feedbackDesc": "Open community feedback discussions", + "zenTitle": "Zen Mode", + "zenDesc": "Toggle canvas focus mode" + }, + "emptyState": { + "noAppsFound": "No apps found", + "noPluginsFound": "No plugins found", + "noKnowledgeBasesFound": "No knowledge bases found", + "noWorkflowNodesFound": "No workflow nodes found", + "tryDifferentTerm": "Try a different search term", + "trySpecificSearch": "Try {{shortcuts}} for specific searches" + }, + "groups": { + "apps": "Apps", + "plugins": "Plugins", + "knowledgeBases": "Knowledge Bases", + "workflowNodes": "Workflow Nodes", + "commands": "Commands" + }, + "noMatchingCommands": "No matching commands found", + "tryDifferentSearch": "Try a different search term" + } +} diff --git a/web/i18n/en-US/app.ts b/web/i18n/en-US/app.ts deleted file mode 100644 index 45ebd61aec..0000000000 --- a/web/i18n/en-US/app.ts +++ /dev/null @@ -1,357 +0,0 @@ -const translation = { - theme: { - switchDark: 'Switch to dark theme', - switchLight: 'Switch to light theme', - }, - appNamePlaceholder: 'Give your app a name', - createApp: 'CREATE APP', - types: { - all: 'All', - chatbot: 'Chatbot', - agent: 'Agent', - workflow: 'Workflow', - completion: 'Completion', - advanced: 'Chatflow', - basic: 'Basic', - }, - duplicate: 'Duplicate', - mermaid: { - handDrawn: 'Hand Drawn', - classic: 'Classic', - }, - duplicateTitle: 'Duplicate App', - export: 'Export DSL', - exportFailed: 'Export DSL failed.', - importDSL: 'Import DSL file', - createFromConfigFile: 'Create from DSL file', - importFromDSL: 'Import from DSL', - importFromDSLFile: 'From DSL file', - importFromDSLUrl: 'From URL', - importFromDSLUrlPlaceholder: 'Paste DSL link here', - dslUploader: { - button: 'Drag and drop file, or', - browse: 'Browse', - }, - deleteAppConfirmTitle: 'Delete this app?', - deleteAppConfirmContent: - 'Deleting the app is irreversible. Users will no longer be able to access your app, and all prompt configurations and logs will be permanently deleted.', - appDeleted: 'App deleted', - appDeleteFailed: 'Failed to delete app', - join: 'Join the community', - communityIntro: - 'Discuss with team members, contributors and developers on different channels.', - roadmap: 'See our roadmap', - newApp: { - learnMore: 'Learn more', - startFromBlank: 'Create from Blank', - startFromTemplate: 'Create from Template', - foundResult: '{{count}} Result', - foundResults: '{{count}} Results', - noAppsFound: 'No apps found', - noTemplateFound: 'No templates found', - noTemplateFoundTip: 'Try searching using different keywords.', - chatbotShortDescription: 'LLM-based chatbot with simple setup', - chatbotUserDescription: 'Quickly build an LLM-based chatbot with simple configuration. You can switch to Chatflow later.', - completionShortDescription: 'AI assistant for text generation tasks', - completionUserDescription: 'Quickly build an AI assistant for text generation tasks with simple configuration.', - agentShortDescription: 'Intelligent agent with reasoning and autonomous tool use', - agentUserDescription: 'An intelligent agent capable of iterative reasoning and autonomous tool use to achieve task goals.', - workflowShortDescription: 'Agentic flow for intelligent automations', - workflowUserDescription: 'Visually build autonomous AI workflows with drag-and-drop simplicity.', - workflowWarning: 'Currently in beta', - advancedShortDescription: 'Workflow enhanced for multi-turn chats', - advancedUserDescription: 'Workflow with additional memory features and a chatbot interface.', - chooseAppType: 'Choose an App Type', - forBeginners: 'More basic app types', - forAdvanced: 'FOR ADVANCED USERS', - noIdeaTip: 'No ideas? Check out our templates', - captionName: 'App Name & Icon', - appNamePlaceholder: 'Give your app a name', - captionDescription: 'Description', - optional: 'Optional', - appDescriptionPlaceholder: 'Enter the description of the app', - useTemplate: 'Use this template', - previewDemo: 'Preview demo', - chatApp: 'Assistant', - chatAppIntro: - 'I want to build a chat-based application. This app uses a question-and-answer format, allowing for multiple rounds of continuous conversation.', - agentAssistant: 'New Agent Assistant', - completeApp: 'Text Generator', - completeAppIntro: - 'I want to create an application that generates high-quality text based on prompts, such as generating articles, summaries, translations, and more.', - showTemplates: 'I want to choose from a template', - hideTemplates: 'Go back to mode selection', - Create: 'Create', - Cancel: 'Cancel', - Confirm: 'Confirm', - import: 'Import', - nameNotEmpty: 'Name cannot be empty', - appTemplateNotSelected: 'Please select a template', - appTypeRequired: 'Please select an app type', - appCreated: 'App created', - caution: 'Caution', - appCreateDSLWarning: 'Caution: DSL version difference may affect certain features', - appCreateDSLErrorTitle: 'Version Incompatibility', - appCreateDSLErrorPart1: 'A significant difference in DSL versions has been detected. Forcing the import may cause the application to malfunction.', - appCreateDSLErrorPart2: 'Do you want to continue?', - appCreateDSLErrorPart3: 'Current application DSL version: ', - appCreateDSLErrorPart4: 'System-supported DSL version: ', - appCreateFailed: 'Failed to create app', - dropDSLToCreateApp: 'Drop DSL file here to create app', - }, - newAppFromTemplate: { - byCategories: 'BY CATEGORIES', - searchAllTemplate: 'Search all templates...', - sidebar: { - Recommended: 'Recommended', - Agent: 'Agent', - Assistant: 'Assistant', - HR: 'HR', - Workflow: 'Workflow', - Writing: 'Writing', - Programming: 'Programming', - }, - }, - editApp: 'Edit Info', - editAppTitle: 'Edit App Info', - editDone: 'App info updated', - editFailed: 'Failed to update app info', - iconPicker: { - ok: 'OK', - cancel: 'Cancel', - emoji: 'Emoji', - image: 'Image', - }, - answerIcon: { - title: 'Use web app icon to replace 🤖', - description: 'Whether to use the web app icon to replace 🤖 in the shared application', - descriptionInExplore: 'Whether to use the web app icon to replace 🤖 in Explore', - }, - switch: 'Switch to Workflow Orchestrate', - switchTipStart: 'A new app copy will be created for you, and the new copy will switch to Workflow Orchestrate. The new copy will ', - switchTip: 'not allow', - switchTipEnd: ' switching back to Basic Orchestrate.', - switchLabel: 'The app copy to be created', - removeOriginal: 'Delete the original app', - switchStart: 'Start switch', - openInExplore: 'Open in Explore', - typeSelector: { - all: 'All Types ', - chatbot: 'Chatbot', - agent: 'Agent', - workflow: 'Workflow', - completion: 'Completion', - advanced: 'Chatflow', - }, - tracing: { - title: 'Tracing app performance', - description: 'Configuring a Third-Party LLMOps provider and tracing app performance.', - config: 'Config', - view: 'View', - collapse: 'Collapse', - expand: 'Expand', - tracing: 'Tracing', - disabled: 'Disabled', - disabledTip: 'Please config provider first', - enabled: 'In Service', - tracingDescription: 'Capture the full context of app execution, including LLM calls, context, prompts, HTTP requests, and more, to a third-party tracing platform.', - configProviderTitle: { - configured: 'Configured', - notConfigured: 'Config provider to enable tracing', - moreProvider: 'More Provider', - }, - arize: { - title: 'Arize', - description: 'Enterprise-grade LLM observability, online & offline evaluation, monitoring, and experimentation—powered by OpenTelemetry. Purpose-built for LLM & agent-driven applications.', - }, - phoenix: { - title: 'Phoenix', - description: 'Open-source & OpenTelemetry-based observability, evaluation, prompt engineering and experimentation platform for your LLM workflows and agents.', - }, - langsmith: { - title: 'LangSmith', - description: 'An all-in-one developer platform for every step of the LLM-powered application lifecycle.', - }, - langfuse: { - title: 'Langfuse', - description: 'Open-source LLM observability, evaluation, prompt management and metrics to debug and improve your LLM application.', - }, - opik: { - title: 'Opik', - description: 'Opik is an open-source platform for evaluating, testing, and monitoring LLM applications.', - }, - weave: { - title: 'Weave', - description: 'Weave is an open-source platform for evaluating, testing, and monitoring LLM applications.', - }, - aliyun: { - title: 'Cloud Monitor', - description: 'The fully-managed and maintenance-free observability platform provided by Alibaba Cloud, enables out-of-the-box monitoring, tracing, and evaluation of Dify applications.', - }, - mlflow: { - title: 'MLflow', - description: 'MLflow is an open-source platform for experiment management, evaluation, and monitoring of LLM applications.', - }, - databricks: { - title: 'Databricks', - description: 'Databricks offers fully-managed MLflow with strong governance and security for storing trace data.', - }, - tencent: { - title: 'Tencent APM', - description: 'Tencent Application Performance Monitoring provides comprehensive tracing and multi-dimensional analysis for LLM applications.', - }, - inUse: 'In use', - configProvider: { - title: 'Config ', - placeholder: 'Enter your {{key}}', - project: 'Project', - trackingUri: 'Tracking URI', - experimentId: 'Experiment ID', - username: 'Username', - password: 'Password', - publicKey: 'Public Key', - secretKey: 'Secret Key', - viewDocsLink: 'View {{key}} docs', - removeConfirmTitle: 'Remove {{key}} configuration?', - removeConfirmContent: 'The current configuration is in use, removing it will turn off the Tracing feature.', - clientId: 'OAuth Client ID', - clientSecret: 'OAuth Client Secret', - personalAccessToken: 'Personal Access Token (legacy)', - databricksHost: 'Databricks Workspace URL', - }, - }, - appSelector: { - label: 'APP', - placeholder: 'Select an app...', - params: 'APP PARAMETERS', - noParams: 'No parameters needed', - }, - showMyCreatedAppsOnly: 'Created by me', - structOutput: { - moreFillTip: 'Showing max 10 levels of nesting', - required: 'Required', - LLMResponse: 'LLM Response', - configure: 'Configure', - notConfiguredTip: 'Structured output has not been configured yet', - structured: 'Structured', - structuredTip: 'Structured Outputs is a feature that ensures the model will always generate responses that adhere to your supplied JSON Schema', - modelNotSupported: 'Model not supported', - modelNotSupportedTip: 'The current model does not support this feature and is automatically downgraded to prompt injection.', - }, - accessControl: 'Web App Access Control', - accessItemsDescription: { - anyone: 'Anyone can access the web app (no login required)', - specific: 'Only specific members within the platform can access the web app', - organization: 'All members within the platform can access the web app', - external: 'Only authenticated external users can access the web app', - }, - accessControlDialog: { - title: 'Web App Access Control', - description: 'Set web app access permissions', - accessLabel: 'Who has access', - accessItems: { - anyone: 'Anyone with the link', - specific: 'Specific members within the platform', - organization: 'All members within the platform', - external: 'Authenticated external users', - }, - groups_one: '{{count}} GROUP', - groups_other: '{{count}} GROUPS', - members_one: '{{count}} MEMBER', - members_other: '{{count}} MEMBERS', - noGroupsOrMembers: 'No groups or members selected', - webAppSSONotEnabledTip: 'Please contact your organization administrator to configure external authentication for the web app.', - operateGroupAndMember: { - searchPlaceholder: 'Search groups and members', - allMembers: 'All members', - expand: 'Expand', - noResult: 'No result', - }, - updateSuccess: 'Update successfully', - }, - publishApp: { - title: 'Who can access web app', - notSet: 'Not set', - notSetDesc: 'Currently nobody can access the web app. Please set permissions.', - }, - noAccessPermission: 'No permission to access web app', - noUserInputNode: 'Missing user input node', - notPublishedYet: 'App is not published yet', - maxActiveRequests: 'Max concurrent requests', - maxActiveRequestsPlaceholder: 'Enter 0 for unlimited', - maxActiveRequestsTip: 'Maximum number of concurrent active requests per app (0 for unlimited)', - gotoAnything: { - searchPlaceholder: 'Search or type @ or / for commands...', - searchTitle: 'Search for anything', - searching: 'Searching...', - noResults: 'No results found', - searchFailed: 'Search failed', - searchTemporarilyUnavailable: 'Search temporarily unavailable', - servicesUnavailableMessage: 'Some search services may be experiencing issues. Try again in a moment.', - someServicesUnavailable: 'Some search services unavailable', - resultCount: '{{count}} result', - resultCount_other: '{{count}} results', - inScope: 'in {{scope}}s', - clearToSearchAll: 'Clear @ to search all', - useAtForSpecific: 'Use @ for specific types', - selectToNavigate: 'Select to navigate', - startTyping: 'Start typing to search', - tips: 'Press ↑↓ to navigate', - pressEscToClose: 'Press ESC to close', - selectSearchType: 'Choose what to search for', - searchHint: 'Start typing to search everything instantly', - commandHint: 'Type @ to browse by category', - slashHint: 'Type / to see all available commands', - actions: { - slashTitle: 'Commands', - searchApplications: 'Search Applications', - searchApplicationsDesc: 'Search and navigate to your applications', - searchPlugins: 'Search Plugins', - searchPluginsDesc: 'Search and navigate to your plugins', - searchKnowledgeBases: 'Search Knowledge Bases', - searchKnowledgeBasesDesc: 'Search and navigate to your knowledge bases', - searchWorkflowNodes: 'Search Workflow Nodes', - searchWorkflowNodesDesc: 'Find and jump to nodes in the current workflow by name or type', - searchWorkflowNodesHelp: 'This feature only works when viewing a workflow. Navigate to a workflow first.', - runTitle: 'Commands', - runDesc: 'Run quick commands (theme, language, ...)', - themeCategoryTitle: 'Theme', - themeCategoryDesc: 'Switch application theme', - themeSystem: 'System Theme', - themeSystemDesc: 'Follow your OS appearance', - themeLight: 'Light Theme', - themeLightDesc: 'Use light appearance', - themeDark: 'Dark Theme', - themeDarkDesc: 'Use dark appearance', - languageCategoryTitle: 'Language', - languageCategoryDesc: 'Switch interface language', - languageChangeDesc: 'Change UI language', - slashDesc: 'Execute commands (type / to see all available commands)', - accountDesc: 'Navigate to account page', - communityDesc: 'Open Discord community', - docDesc: 'Open help documentation', - feedbackDesc: 'Open community feedback discussions', - zenTitle: 'Zen Mode', - zenDesc: 'Toggle canvas focus mode', - }, - emptyState: { - noAppsFound: 'No apps found', - noPluginsFound: 'No plugins found', - noKnowledgeBasesFound: 'No knowledge bases found', - noWorkflowNodesFound: 'No workflow nodes found', - tryDifferentTerm: 'Try a different search term', - trySpecificSearch: 'Try {{shortcuts}} for specific searches', - }, - groups: { - apps: 'Apps', - plugins: 'Plugins', - knowledgeBases: 'Knowledge Bases', - workflowNodes: 'Workflow Nodes', - commands: 'Commands', - }, - noMatchingCommands: 'No matching commands found', - tryDifferentSearch: 'Try a different search term', - }, -} - -export default translation diff --git a/web/i18n/en-US/billing.json b/web/i18n/en-US/billing.json new file mode 100644 index 0000000000..16864daaa4 --- /dev/null +++ b/web/i18n/en-US/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "Current Plan", + "usagePage": { + "teamMembers": "Team Members", + "buildApps": "Build Apps", + "annotationQuota": "Annotation Quota", + "documentsUploadQuota": "Documents Upload Quota", + "vectorSpace": "Knowledge Data Storage", + "vectorSpaceTooltip": "Documents with the High Quality indexing mode will consume Knowledge Data Storage resources. When Knowledge Data Storage reaches the limit, new documents will not be uploaded.", + "triggerEvents": "Trigger Events", + "perMonth": "per month", + "resetsIn": "Resets in {{count,number}} days" + }, + "teamMembers": "Team Members", + "triggerLimitModal": { + "title": "Upgrade to unlock more trigger events", + "description": "You've reached the limit of workflow event triggers for this plan.", + "dismiss": "Dismiss", + "upgrade": "Upgrade", + "usageTitle": "TRIGGER EVENTS" + }, + "upgradeBtn": { + "plain": "View Plan", + "encourage": "Upgrade Now", + "encourageShort": "Upgrade" + }, + "viewBilling": "Manage billing and subscriptions", + "viewBillingTitle": "Billing and Subscriptions", + "viewBillingDescription": "Manage payment methods, invoices, and subscription changes", + "viewBillingAction": "Manage", + "buyPermissionDeniedTip": "Please contact your enterprise administrator to subscribe", + "plansCommon": { + "title": { + "plans": "plans", + "description": "Select the plan that best fits your team's needs." + }, + "freeTrialTipPrefix": "Sign up and get a ", + "freeTrialTip": "free trial of 200 OpenAI calls. ", + "freeTrialTipSuffix": "No credit card required", + "yearlyTip": "Pay for 10 months, enjoy 1 Year!", + "mostPopular": "Popular", + "cloud": "Cloud Service", + "self": "Self-Hosted", + "planRange": { + "monthly": "Monthly", + "yearly": "Yearly" + }, + "month": "month", + "year": "year", + "save": "Save ", + "free": "Free", + "annualBilling": "Bill Annually Save {{percent}}%", + "taxTip": "All subscription prices (monthly/annual) exclude applicable taxes (e.g., VAT, sales tax).", + "taxTipSecond": "If your region has no applicable tax requirements, no tax will appear in your checkout, and you won’t be charged any additional fees for the entire subscription term.", + "comparePlanAndFeatures": "Compare plans & features", + "priceTip": "per workspace/", + "currentPlan": "Current Plan", + "contractSales": "Contact sales", + "contractOwner": "Contact team manager", + "startForFree": "Start for Free", + "startBuilding": "Start Building", + "getStarted": "Get Started", + "contactSales": "Contact Sales", + "talkToSales": "Talk to Sales", + "modelProviders": "Support OpenAI/Anthropic/Llama2/Azure OpenAI/Hugging Face/Replicate", + "teamWorkspace": "{{count,number}} Team Workspace", + "teamMember_one": "{{count,number}} Team Member", + "teamMember_other": "{{count,number}} Team Members", + "annotationQuota": "Annotation Quota", + "buildApps": "{{count,number}} Apps", + "documents": "{{count,number}} Knowledge Documents", + "documentsTooltip": "Quota on the number of documents imported from the Knowledge Data Source.", + "vectorSpace": "{{size}} Knowledge Data Storage", + "vectorSpaceTooltip": "Documents with the High Quality indexing mode will consume Knowledge Data Storage resources. When Knowledge Data Storage reaches the limit, new documents will not be uploaded.", + "documentsRequestQuota": "{{count,number}} Knowledge Request/min", + "documentsRequestQuotaTooltip": "Specifies the total number of actions a workspace can perform per minute within the knowledge base, including dataset creation, deletion, updates, document uploads, modifications, archiving, and knowledge base queries. This metric is used to evaluate the performance of knowledge base requests. For example, if a Sandbox user performs 10 consecutive hit tests within one minute, their workspace will be temporarily restricted from performing the following actions for the next minute: dataset creation, deletion, updates, and document uploads or modifications. ", + "apiRateLimit": "API Rate Limit", + "apiRateLimitUnit": "{{count,number}}", + "unlimitedApiRate": "No Dify API Rate Limit", + "apiRateLimitTooltip": "API Rate Limit applies to all requests made through the Dify API, including text generation, chat conversations, workflow executions, and document processing.", + "documentProcessingPriority": " Document Processing", + "documentProcessingPriorityTip": "For higher document processing priority, please upgrade your plan.", + "documentProcessingPriorityUpgrade": "Process more data with higher accuracy at faster speeds.", + "priority": { + "standard": "Standard", + "priority": "Priority", + "top-priority": "Top Priority" + }, + "triggerEvents": { + "sandbox": "{{count,number}} Trigger Events", + "professional": "{{count,number}} Trigger Events/month", + "unlimited": "Unlimited Trigger Events", + "tooltip": "The number of events that automatically start workflows through Plugin, Schedule, or Webhook triggers." + }, + "workflowExecution": { + "standard": "Standard Workflow Execution", + "faster": "Faster Workflow Execution", + "priority": "Priority Workflow Execution", + "tooltip": "Workflow execution queue priority and speed." + }, + "startNodes": { + "limited": "Up to {{count}} Triggers/workflow", + "unlimited": "Unlimited Triggers/workflow" + }, + "logsHistory": "{{days}} Log history", + "customTools": "Custom Tools", + "unavailable": "Unavailable", + "days": "Days", + "unlimited": "Unlimited", + "support": "Support", + "supportItems": { + "communityForums": "Community forums", + "emailSupport": "Email support", + "priorityEmail": "Priority email & chat support", + "logoChange": "Logo change", + "SSOAuthentication": "SSO authentication", + "personalizedSupport": "Personalized support", + "dedicatedAPISupport": "Dedicated API support", + "customIntegration": "Custom integration and support", + "ragAPIRequest": "RAG API Requests", + "bulkUpload": "Bulk upload documents", + "agentMode": "Agent Mode", + "workflow": "Workflow", + "llmLoadingBalancing": "LLM Load Balancing", + "llmLoadingBalancingTooltip": "Add multiple API keys to models, effectively bypassing the API rate limits. " + }, + "comingSoon": "Coming soon", + "member": "Member", + "memberAfter": "Member", + "messageRequest": { + "title": "{{count,number}} message credits", + "titlePerMonth": "{{count,number}} message credits/month", + "tooltip": "Message credits are provided to help you easily try out different OpenAI models in Dify. Credits are consumed based on the model type. Once they’re used up, you can switch to your own OpenAI API key." + }, + "annotatedResponse": { + "title": "{{count,number}} Annotation Quota Limits", + "tooltip": "Manual editing and annotation of responses provides customizable high-quality question-answering abilities for apps. (Applicable only in Chat apps)" + }, + "ragAPIRequestTooltip": "Refers to the number of API calls invoking only the knowledge base processing capabilities of Dify.", + "receiptInfo": "Only team owner and team admin can subscribe and view billing information" + }, + "plans": { + "sandbox": { + "name": "Sandbox", + "for": "Free Trial of Core Capabilities", + "description": "Try core features for free." + }, + "professional": { + "name": "Professional", + "for": "For Independent Developers/Small Teams", + "description": "For independent developers & small teams ready to build production AI applications." + }, + "team": { + "name": "Team", + "for": "For Medium-sized Teams", + "description": "For medium-sized teams requiring collaboration and higher throughput." + }, + "community": { + "name": "Community", + "for": "For Individual Users, Small Teams, or Non-commercial Projects", + "description": "For open-source enthusiasts, individual developers, and non-commercial projects", + "price": "Free", + "btnText": "Get Started", + "includesTitle": "Free Features:", + "features": [ + "All Core Features Released Under the Public Repository", + "Single Workspace", + "Complies with Dify Open Source License" + ] + }, + "premium": { + "name": "Premium", + "for": "For Mid-sized Organizations and Teams", + "description": "For Mid-sized organizations needing deployment flexibility and enhanced support", + "price": "Scalable", + "priceTip": "Based on Cloud Marketplace", + "btnText": "Get Premium on", + "includesTitle": "Everything from Community, plus:", + "comingSoon": "Microsoft Azure & Google Cloud Support Coming Soon", + "features": [ + "Self-managed Reliability by Various Cloud Providers", + "Single Workspace", + "WebApp Logo & Branding Customization", + "Priority Email & Chat Support" + ] + }, + "enterprise": { + "name": "Enterprise", + "for": "For large-sized Teams", + "description": "For enterprise requiring organization-grade security, compliance, scalability, control and custom solutions", + "price": "Custom", + "priceTip": "Annual Billing Only", + "btnText": "Contact Sales", + "includesTitle": "Everything from Premium, plus:", + "features": [ + "Enterprise-grade Scalable Deployment Solutions", + "Commercial License Authorization", + "Exclusive Enterprise Features", + "Multiple Workspaces & Enterprise Management", + "SSO", + "Negotiated SLAs by Dify Partners", + "Advanced Security & Controls", + "Updates and Maintenance by Dify Officially", + "Professional Technical Support" + ] + } + }, + "vectorSpace": { + "fullTip": "Vector Space is full.", + "fullSolution": "Upgrade your plan to get more space." + }, + "apps": { + "fullTip1": "Upgrade to create more apps", + "fullTip1des": "You've reached the limit of build apps on this plan", + "fullTip2": "Plan limit reached", + "fullTip2des": "It is recommended to clean up inactive applications to free up usage, or contact us.", + "contactUs": "Contact us" + }, + "annotatedResponse": { + "fullTipLine1": "Upgrade your plan to", + "fullTipLine2": "annotate more conversations.", + "quotaTitle": "Annotation Reply Quota" + }, + "upgrade": { + "uploadMultiplePages": { + "title": "Upgrade to upload multiple documents at once", + "description": "You’ve reached the upload limit — only one document can be selected and uploaded at a time on your current plan." + }, + "uploadMultipleFiles": { + "title": "Upgrade to unlock batch document upload", + "description": "Batch-upload more documents at once to save time and improve efficiency." + }, + "addChunks": { + "title": "Upgrade to continue adding chunks", + "description": "You’ve reached the limit of adding chunks for this plan." + } + } +} diff --git a/web/i18n/en-US/billing.ts b/web/i18n/en-US/billing.ts deleted file mode 100644 index 1ab4e3f0d4..0000000000 --- a/web/i18n/en-US/billing.ts +++ /dev/null @@ -1,240 +0,0 @@ -const translation = { - currentPlan: 'Current Plan', - usagePage: { - teamMembers: 'Team Members', - buildApps: 'Build Apps', - annotationQuota: 'Annotation Quota', - documentsUploadQuota: 'Documents Upload Quota', - vectorSpace: 'Knowledge Data Storage', - vectorSpaceTooltip: 'Documents with the High Quality indexing mode will consume Knowledge Data Storage resources. When Knowledge Data Storage reaches the limit, new documents will not be uploaded.', - triggerEvents: 'Trigger Events', - perMonth: 'per month', - resetsIn: 'Resets in {{count,number}} days', - }, - teamMembers: 'Team Members', - triggerLimitModal: { - title: 'Upgrade to unlock more trigger events', - description: 'You\'ve reached the limit of workflow event triggers for this plan.', - dismiss: 'Dismiss', - upgrade: 'Upgrade', - usageTitle: 'TRIGGER EVENTS', - }, - upgradeBtn: { - plain: 'View Plan', - encourage: 'Upgrade Now', - encourageShort: 'Upgrade', - }, - viewBilling: 'Manage billing and subscriptions', - viewBillingTitle: 'Billing and Subscriptions', - viewBillingDescription: 'Manage payment methods, invoices, and subscription changes', - viewBillingAction: 'Manage', - buyPermissionDeniedTip: 'Please contact your enterprise administrator to subscribe', - plansCommon: { - title: { - plans: 'plans', - description: 'Select the plan that best fits your team\'s needs.', - }, - freeTrialTipPrefix: 'Sign up and get a ', - freeTrialTip: 'free trial of 200 OpenAI calls. ', - freeTrialTipSuffix: 'No credit card required', - yearlyTip: 'Pay for 10 months, enjoy 1 Year!', - mostPopular: 'Popular', - cloud: 'Cloud Service', - self: 'Self-Hosted', - planRange: { - monthly: 'Monthly', - yearly: 'Yearly', - }, - month: 'month', - year: 'year', - save: 'Save ', - free: 'Free', - annualBilling: 'Bill Annually Save {{percent}}%', - taxTip: 'All subscription prices (monthly/annual) exclude applicable taxes (e.g., VAT, sales tax).', - taxTipSecond: 'If your region has no applicable tax requirements, no tax will appear in your checkout, and you won’t be charged any additional fees for the entire subscription term.', - comparePlanAndFeatures: 'Compare plans & features', - priceTip: 'per workspace/', - currentPlan: 'Current Plan', - contractSales: 'Contact sales', - contractOwner: 'Contact team manager', - startForFree: 'Start for Free', - startBuilding: 'Start Building', - getStarted: 'Get Started', - contactSales: 'Contact Sales', - talkToSales: 'Talk to Sales', - modelProviders: 'Support OpenAI/Anthropic/Llama2/Azure OpenAI/Hugging Face/Replicate', - teamWorkspace: '{{count,number}} Team Workspace', - teamMember_one: '{{count,number}} Team Member', - teamMember_other: '{{count,number}} Team Members', - annotationQuota: 'Annotation Quota', - buildApps: '{{count,number}} Apps', - documents: '{{count,number}} Knowledge Documents', - documentsTooltip: 'Quota on the number of documents imported from the Knowledge Data Source.', - vectorSpace: '{{size}} Knowledge Data Storage', - vectorSpaceTooltip: 'Documents with the High Quality indexing mode will consume Knowledge Data Storage resources. When Knowledge Data Storage reaches the limit, new documents will not be uploaded.', - documentsRequestQuota: '{{count,number}} Knowledge Request/min', - documentsRequestQuotaTooltip: 'Specifies the total number of actions a workspace can perform per minute within the knowledge base, including dataset creation, deletion, updates, document uploads, modifications, archiving, and knowledge base queries. This metric is used to evaluate the performance of knowledge base requests. For example, if a Sandbox user performs 10 consecutive hit tests within one minute, their workspace will be temporarily restricted from performing the following actions for the next minute: dataset creation, deletion, updates, and document uploads or modifications. ', - apiRateLimit: 'API Rate Limit', - apiRateLimitUnit: '{{count,number}}', - unlimitedApiRate: 'No Dify API Rate Limit', - apiRateLimitTooltip: 'API Rate Limit applies to all requests made through the Dify API, including text generation, chat conversations, workflow executions, and document processing.', - documentProcessingPriority: ' Document Processing', - documentProcessingPriorityTip: 'For higher document processing priority, please upgrade your plan.', - documentProcessingPriorityUpgrade: 'Process more data with higher accuracy at faster speeds.', - priority: { - 'standard': 'Standard', - 'priority': 'Priority', - 'top-priority': 'Top Priority', - }, - triggerEvents: { - sandbox: '{{count,number}} Trigger Events', - professional: '{{count,number}} Trigger Events/month', - unlimited: 'Unlimited Trigger Events', - tooltip: 'The number of events that automatically start workflows through Plugin, Schedule, or Webhook triggers.', - }, - workflowExecution: { - standard: 'Standard Workflow Execution', - faster: 'Faster Workflow Execution', - priority: 'Priority Workflow Execution', - tooltip: 'Workflow execution queue priority and speed.', - }, - startNodes: { - limited: 'Up to {{count}} Triggers/workflow', - unlimited: 'Unlimited Triggers/workflow', - }, - logsHistory: '{{days}} Log history', - customTools: 'Custom Tools', - unavailable: 'Unavailable', - days: 'Days', - unlimited: 'Unlimited', - support: 'Support', - supportItems: { - communityForums: 'Community forums', - emailSupport: 'Email support', - priorityEmail: 'Priority email & chat support', - logoChange: 'Logo change', - SSOAuthentication: 'SSO authentication', - personalizedSupport: 'Personalized support', - dedicatedAPISupport: 'Dedicated API support', - customIntegration: 'Custom integration and support', - ragAPIRequest: 'RAG API Requests', - bulkUpload: 'Bulk upload documents', - agentMode: 'Agent Mode', - workflow: 'Workflow', - llmLoadingBalancing: 'LLM Load Balancing', - llmLoadingBalancingTooltip: 'Add multiple API keys to models, effectively bypassing the API rate limits. ', - }, - comingSoon: 'Coming soon', - member: 'Member', - memberAfter: 'Member', - messageRequest: { - title: '{{count,number}} message credits', - titlePerMonth: '{{count,number}} message credits/month', - tooltip: 'Message credits are provided to help you easily try out different OpenAI models in Dify. Credits are consumed based on the model type. Once they’re used up, you can switch to your own OpenAI API key.', - }, - annotatedResponse: { - title: '{{count,number}} Annotation Quota Limits', - tooltip: 'Manual editing and annotation of responses provides customizable high-quality question-answering abilities for apps. (Applicable only in Chat apps)', - }, - ragAPIRequestTooltip: 'Refers to the number of API calls invoking only the knowledge base processing capabilities of Dify.', - receiptInfo: 'Only team owner and team admin can subscribe and view billing information', - }, - plans: { - sandbox: { - name: 'Sandbox', - for: 'Free Trial of Core Capabilities', - description: 'Try core features for free.', - }, - professional: { - name: 'Professional', - for: 'For Independent Developers/Small Teams', - description: 'For independent developers & small teams ready to build production AI applications.', - }, - team: { - name: 'Team', - for: 'For Medium-sized Teams', - description: 'For medium-sized teams requiring collaboration and higher throughput.', - }, - community: { - name: 'Community', - for: 'For Individual Users, Small Teams, or Non-commercial Projects', - description: 'For open-source enthusiasts, individual developers, and non-commercial projects', - price: 'Free', - btnText: 'Get Started', - includesTitle: 'Free Features:', - features: [ - 'All Core Features Released Under the Public Repository', - 'Single Workspace', - 'Complies with Dify Open Source License', - ], - }, - premium: { - name: 'Premium', - for: 'For Mid-sized Organizations and Teams', - description: 'For Mid-sized organizations needing deployment flexibility and enhanced support', - price: 'Scalable', - priceTip: 'Based on Cloud Marketplace', - btnText: 'Get Premium on', - includesTitle: 'Everything from Community, plus:', - comingSoon: 'Microsoft Azure & Google Cloud Support Coming Soon', - features: [ - 'Self-managed Reliability by Various Cloud Providers', - 'Single Workspace', - 'WebApp Logo & Branding Customization', - 'Priority Email & Chat Support', - ], - }, - enterprise: { - name: 'Enterprise', - for: 'For large-sized Teams', - description: 'For enterprise requiring organization-grade security, compliance, scalability, control and custom solutions', - price: 'Custom', - priceTip: 'Annual Billing Only', - btnText: 'Contact Sales', - includesTitle: 'Everything from Premium, plus:', - features: [ - 'Enterprise-grade Scalable Deployment Solutions', - 'Commercial License Authorization', - 'Exclusive Enterprise Features', - 'Multiple Workspaces & Enterprise Management', - 'SSO', - 'Negotiated SLAs by Dify Partners', - 'Advanced Security & Controls', - 'Updates and Maintenance by Dify Officially', - 'Professional Technical Support', - ], - }, - }, - vectorSpace: { - fullTip: 'Vector Space is full.', - fullSolution: 'Upgrade your plan to get more space.', - }, - apps: { - fullTip1: 'Upgrade to create more apps', - fullTip1des: 'You\'ve reached the limit of build apps on this plan', - fullTip2: 'Plan limit reached', - fullTip2des: 'It is recommended to clean up inactive applications to free up usage, or contact us.', - contactUs: 'Contact us', - }, - annotatedResponse: { - fullTipLine1: 'Upgrade your plan to', - fullTipLine2: 'annotate more conversations.', - quotaTitle: 'Annotation Reply Quota', - }, - upgrade: { - uploadMultiplePages: { - title: 'Upgrade to upload multiple documents at once', - description: 'You’ve reached the upload limit — only one document can be selected and uploaded at a time on your current plan.', - }, - uploadMultipleFiles: { - title: 'Upgrade to unlock batch document upload', - description: 'Batch-upload more documents at once to save time and improve efficiency.', - }, - addChunks: { - title: 'Upgrade to continue adding chunks', - description: 'You’ve reached the limit of adding chunks for this plan.', - }, - }, -} - -export default translation diff --git a/web/i18n/en-US/common.json b/web/i18n/en-US/common.json new file mode 100644 index 0000000000..758fda50f6 --- /dev/null +++ b/web/i18n/en-US/common.json @@ -0,0 +1,791 @@ +{ + "loading": "Loading", + "error": "Error", + "theme": { + "theme": "Theme", + "light": "light", + "dark": "dark", + "auto": "system" + }, + "api": { + "success": "Success", + "actionSuccess": "Action succeeded", + "actionFailed": "Action failed", + "saved": "Saved", + "create": "Created", + "remove": "Removed" + }, + "operation": { + "create": "Create", + "confirm": "Confirm", + "cancel": "Cancel", + "clear": "Clear", + "save": "Save", + "yes": "Yes", + "no": "No", + "deleteConfirmTitle": "Delete?", + "confirmAction": "Please confirm your action.", + "saveAndEnable": "Save & Enable", + "edit": "Edit", + "add": "Add", + "added": "Added", + "refresh": "Restart", + "reset": "Reset", + "search": "Search", + "noSearchResults": "No {{content}} were found", + "resetKeywords": "Reset keywords", + "selectCount": "{{count}} Selected", + "searchCount": "Find {{count}} {{content}}", + "noSearchCount": "0 {{content}}", + "change": "Change", + "remove": "Remove", + "send": "Send", + "copy": "Copy", + "copied": "Copied", + "lineBreak": "Line break", + "sure": "I'm sure", + "download": "Download", + "downloadSuccess": "Download Completed.", + "downloadFailed": "Download failed. Please try again later.", + "viewDetails": "View Details", + "delete": "Delete", + "now": "Now", + "deleteApp": "Delete App", + "settings": "Settings", + "setup": "Setup", + "config": "Config", + "getForFree": "Get for free", + "reload": "Reload", + "ok": "OK", + "log": "Log", + "learnMore": "Learn More", + "params": "Params", + "duplicate": "Duplicate", + "rename": "Rename", + "audioSourceUnavailable": "AudioSource is unavailable", + "close": "Close", + "copyImage": "Copy Image", + "imageCopied": "Image copied", + "zoomOut": "Zoom Out", + "zoomIn": "Zoom In", + "openInNewTab": "Open in new tab", + "in": "in", + "saveAndRegenerate": "Save & Regenerate Child Chunks", + "view": "View", + "viewMore": "VIEW MORE", + "back": "Back", + "imageDownloaded": "Image downloaded", + "regenerate": "Regenerate", + "submit": "Submit", + "skip": "Skip", + "format": "Format", + "more": "More", + "selectAll": "Select All", + "deSelectAll": "Deselect All" + }, + "errorMsg": { + "fieldRequired": "{{field}} is required", + "urlError": "url should start with http:// or https://" + }, + "placeholder": { + "input": "Please enter", + "select": "Please select", + "search": "Search..." + }, + "noData": "No data", + "label": { + "optional": "(optional)" + }, + "voice": { + "language": { + "zhHans": "Chinese", + "zhHant": "Traditional Chinese", + "enUS": "English", + "deDE": "German", + "frFR": "French", + "esES": "Spanish", + "itIT": "Italian", + "thTH": "Thai", + "idID": "Indonesian", + "jaJP": "Japanese", + "koKR": "Korean", + "ptBR": "Portuguese", + "ruRU": "Russian", + "ukUA": "Ukrainian", + "viVN": "Vietnamese", + "plPL": "Polish", + "roRO": "Romanian", + "hiIN": "Hindi", + "trTR": "Türkçe", + "faIR": "Farsi", + "slSI": "Slovenian", + "arTN": "Tunisian Arabic" + } + }, + "unit": { + "char": "chars" + }, + "actionMsg": { + "noModification": "No modifications at the moment.", + "modifiedSuccessfully": "Modified successfully", + "modifiedUnsuccessfully": "Modified unsuccessfully", + "copySuccessfully": "Copied successfully", + "paySucceeded": "Payment succeeded", + "payCancelled": "Payment cancelled", + "generatedSuccessfully": "Generated successfully", + "generatedUnsuccessfully": "Generated unsuccessfully" + }, + "model": { + "params": { + "temperature": "Temperature", + "temperatureTip": "Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.", + "top_p": "Top P", + "top_pTip": "Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered.", + "presence_penalty": "Presence penalty", + "presence_penaltyTip": "How much to penalize new tokens based on whether they appear in the text so far.\nIncreases the model's likelihood to talk about new topics.", + "frequency_penalty": "Frequency penalty", + "frequency_penaltyTip": "How much to penalize new tokens based on their existing frequency in the text so far.\nDecreases the model's likelihood to repeat the same line verbatim.", + "max_tokens": "Max token", + "max_tokensTip": "Used to limit the maximum length of the reply, in tokens. \nLarger values may limit the space left for prompt words, chat logs, and Knowledge. \nIt is recommended to set it below two-thirds\ngpt-4-1106-preview, gpt-4-vision-preview max token (input 128k output 4k)", + "maxTokenSettingTip": "Your max token setting is high, potentially limiting space for prompts, queries, and data. Consider setting it below 2/3.", + "setToCurrentModelMaxTokenTip": "Max token is updated to the 80% maximum token of the current model {{maxToken}}.", + "stop_sequences": "Stop sequences", + "stop_sequencesTip": "Up to four sequences where the API will stop generating further tokens. The returned text will not contain the stop sequence.", + "stop_sequencesPlaceholder": "Enter sequence and press Tab" + }, + "tone": { + "Creative": "Creative", + "Balanced": "Balanced", + "Precise": "Precise", + "Custom": "Custom" + }, + "addMoreModel": "Go to settings to add more models", + "settingsLink": "Model Provider Settings", + "capabilities": "MultiModal Capabilities" + }, + "menus": { + "status": "beta", + "explore": "Explore", + "apps": "Studio", + "appDetail": "App Detail", + "account": "Account", + "plugins": "Plugins", + "exploreMarketplace": "Explore Marketplace", + "pluginsTips": "Integrate third-party plugins or create ChatGPT-compatible AI-Plugins.", + "datasets": "Knowledge", + "datasetsTips": "COMING SOON: Import your own text data or write data in real-time via Webhook for LLM context enhancement.", + "newApp": "New App", + "newDataset": "Create Knowledge", + "tools": "Tools" + }, + "userProfile": { + "settings": "Settings", + "contactUs": "Contact Us", + "emailSupport": "Email Support", + "workspace": "Workspace", + "createWorkspace": "Create Workspace", + "helpCenter": "View Docs", + "support": "Support", + "compliance": "Compliance", + "forum": "Forum", + "roadmap": "Roadmap", + "github": "GitHub", + "community": "Community", + "about": "About", + "logout": "Log out" + }, + "compliance": { + "soc2Type1": "SOC 2 Type I Report", + "soc2Type2": "SOC 2 Type II Report", + "iso27001": "ISO 27001:2022 Certification", + "gdpr": "GDPR DPA", + "sandboxUpgradeTooltip": "Only available with a Professional or Team plan.", + "professionalUpgradeTooltip": "Only available with a Team plan or above." + }, + "settings": { + "accountGroup": "GENERAL", + "workplaceGroup": "WORKSPACE", + "generalGroup": "GENERAL", + "account": "My account", + "members": "Members", + "billing": "Billing", + "integrations": "Integrations", + "language": "Language", + "provider": "Model Provider", + "dataSource": "Data Source", + "plugin": "Plugins", + "apiBasedExtension": "API Extension" + }, + "account": { + "account": "Account", + "myAccount": "My Account", + "studio": "Studio", + "avatar": "Avatar", + "name": "Name", + "email": "Email", + "password": "Password", + "passwordTip": "You can set a permanent password if you don’t want to use temporary login codes", + "setPassword": "Set a password", + "resetPassword": "Reset password", + "currentPassword": "Current password", + "newPassword": "New password", + "confirmPassword": "Confirm password", + "notEqual": "Two passwords are different.", + "langGeniusAccount": "Account's data", + "langGeniusAccountTip": "The user data of your account.", + "editName": "Edit Name", + "showAppLength": "Show {{length}} apps", + "delete": "Delete Account", + "deleteTip": "Please note, once confirmed, as the Owner of any Workspaces, your workspaces will be scheduled in a queue for permanent deletion, and all your user data will be queued for permanent deletion.", + "deletePrivacyLinkTip": "For more information about how we handle your data, please see our ", + "deletePrivacyLink": "Privacy Policy.", + "deleteSuccessTip": "Your account needs time to finish deleting. We'll email you when it's all done.", + "deleteLabel": "To confirm, please type in your email below", + "deletePlaceholder": "Please enter your email", + "sendVerificationButton": "Send Verification Code", + "verificationLabel": "Verification Code", + "verificationPlaceholder": "Paste the 6-digit code", + "permanentlyDeleteButton": "Permanently Delete Account", + "feedbackTitle": "Feedback", + "feedbackLabel": "Tell us why you deleted your account?", + "feedbackPlaceholder": "Optional", + "editWorkspaceInfo": "Edit Workspace Info", + "workspaceName": "Workspace Name", + "workspaceNamePlaceholder": "Enter workspace name", + "workspaceIcon": "Workspace Icon", + "changeEmail": { + "title": "Change Email", + "verifyEmail": "Verify your current email", + "newEmail": "Set up a new email address", + "verifyNew": "Verify your new email", + "authTip": "Once your email is changed, Google or GitHub accounts linked to your old email will no longer be able to log in to this account.", + "content1": "If you continue, we'll send a verification code to {{email}} for re-authentication.", + "content2": "Your current email is {{email}}. Verification code has been sent to this email address.", + "content3": "Enter a new email and we will send you a verification code.", + "content4": "We just sent you a temporary verification code to {{email}}.", + "codeLabel": "Verification code", + "codePlaceholder": "Paste the 6-digit code", + "emailLabel": "New email", + "emailPlaceholder": "Enter a new email", + "existingEmail": "A user with this email already exists.", + "unAvailableEmail": "This email is temporarily unavailable.", + "sendVerifyCode": "Send verification code", + "continue": "Continue", + "changeTo": "Change to {{email}}", + "resendTip": "Didn't receive a code?", + "resendCount": "Resend in {{count}}s", + "resend": "Resend" + } + }, + "members": { + "team": "Team", + "invite": "Add", + "name": "NAME", + "lastActive": "LAST ACTIVE", + "role": "ROLES", + "pending": "Pending...", + "owner": "Owner", + "admin": "Admin", + "adminTip": "Can build apps & manage team settings", + "normal": "Normal", + "normalTip": "Only can use apps, can not build apps", + "builder": "Builder", + "builderTip": "Can build & edit own apps", + "editor": "Editor", + "editorTip": "Can build & edit apps", + "datasetOperator": "Knowledge Admin", + "datasetOperatorTip": "Only can manage the knowledge base", + "inviteTeamMember": "Add team member", + "inviteTeamMemberTip": "They can access your team data directly after signing in.", + "emailNotSetup": "Email server is not set up, so invitation emails cannot be sent. Please notify users of the invitation link that will be issued after invitation instead.", + "email": "Email", + "emailInvalid": "Invalid Email Format", + "emailPlaceholder": "Please input emails", + "sendInvite": "Send Invite", + "invitedAsRole": "Invited as {{role}} user", + "invitationSent": "Invitation sent", + "invitationSentTip": "Invitation sent, and they can sign in to Dify to access your team data.", + "invitationLink": "Invitation Link", + "failedInvitationEmails": "Below users were not invited successfully", + "ok": "OK", + "removeFromTeam": "Remove from team", + "removeFromTeamTip": "Will remove team access", + "setAdmin": "Set as administrator", + "setMember": "Set to ordinary member", + "setBuilder": "Set as builder", + "setEditor": "Set as editor", + "disInvite": "Cancel the invitation", + "deleteMember": "Delete Member", + "you": "(You)", + "transferOwnership": "Transfer Ownership", + "transferModal": { + "title": "Transfer workspace ownership", + "warning": "You're about to transfer ownership of “{{workspace}}”. This takes effect immediately and can't be undone.", + "warningTip": "You'll become an admin member, and the new owner will have full control.", + "sendTip": "If you continue, we'll send a verification code to {{email}} for re-authentication.", + "verifyEmail": "Verify your current email", + "verifyContent": "Your current email is {{email}}.", + "verifyContent2": "We'll send a temporary verification code to this email for re-authentication.", + "codeLabel": "Verification code", + "codePlaceholder": "Paste the 6-digit code", + "resendTip": "Didn't receive a code?", + "resendCount": "Resend in {{count}}s", + "resend": "Resend", + "transferLabel": "Transfer workspace ownership to", + "transferPlaceholder": "Select a workspace member…", + "sendVerifyCode": "Send verification code", + "continue": "Continue", + "transfer": "Transfer workspace ownership" + } + }, + "feedback": { + "title": "Provide Feedback", + "subtitle": "Please tell us what went wrong with this response", + "content": "Feedback Content", + "placeholder": "Please describe what went wrong or how we can improve..." + }, + "integrations": { + "connected": "Connected", + "google": "Google", + "googleAccount": "Login with Google account", + "github": "GitHub", + "githubAccount": "Login with GitHub account", + "connect": "Connect" + }, + "language": { + "displayLanguage": "Display Language", + "timezone": "Time Zone" + }, + "provider": { + "apiKey": "API Key", + "enterYourKey": "Enter your API key here", + "invalidKey": "Invalid OpenAI API key", + "validatedError": "Validation failed: ", + "validating": "Validating key...", + "saveFailed": "Save api key failed", + "apiKeyExceedBill": "This API KEY has no quota available, please read", + "addKey": "Add Key", + "comingSoon": "Coming Soon", + "editKey": "Edit", + "invalidApiKey": "Invalid API key", + "azure": { + "apiBase": "API Base", + "apiBasePlaceholder": "The API Base URL of your Azure OpenAI Endpoint.", + "apiKey": "API Key", + "apiKeyPlaceholder": "Enter your API key here", + "helpTip": "Learn Azure OpenAI Service" + }, + "openaiHosted": { + "openaiHosted": "Hosted OpenAI", + "onTrial": "ON TRIAL", + "exhausted": "QUOTA EXHAUSTED", + "desc": "The OpenAI hosting service provided by Dify allows you to use models such as GPT-3.5. Before your trial quota is used up, you need to set up other model providers.", + "callTimes": "Call times", + "usedUp": "Trial quota used up. Add own Model Provider.", + "useYourModel": "Currently using own Model Provider.", + "close": "Close" + }, + "anthropicHosted": { + "anthropicHosted": "Anthropic Claude", + "onTrial": "ON TRIAL", + "exhausted": "QUOTA EXHAUSTED", + "desc": "Powerful model, which excels at a wide range of tasks from sophisticated dialogue and creative content generation to detailed instruction.", + "callTimes": "Call times", + "usedUp": "Trial quota used up. Add own Model Provider.", + "useYourModel": "Currently using own Model Provider.", + "close": "Close", + "trialQuotaTip": "Your Anthropic trial quota will expire on 2025/03/17 and will no longer be available thereafter. Please make use of it in time." + }, + "anthropic": { + "using": "The embedding capability is using", + "enableTip": "To enable the Anthropic model, you need to bind to OpenAI or Azure OpenAI Service first.", + "notEnabled": "Not enabled", + "keyFrom": "Get your API key from Anthropic" + }, + "encrypted": { + "front": "Your API KEY will be encrypted and stored using", + "back": " technology." + } + }, + "modelProvider": { + "notConfigured": "The system model has not yet been fully configured", + "systemModelSettings": "System Model Settings", + "systemModelSettingsLink": "Why is it necessary to set up a system model?", + "selectModel": "Select your model", + "setupModelFirst": "Please set up your model first", + "systemReasoningModel": { + "key": "System Reasoning Model", + "tip": "Set the default inference model to be used for creating applications, as well as features such as dialogue name generation and next question suggestion will also use the default inference model." + }, + "embeddingModel": { + "key": "Embedding Model", + "tip": "Set the default model for document embedding processing of the Knowledge, both retrieval and import of the Knowledge use this Embedding model for vectorization processing. Switching will cause the vector dimension between the imported Knowledge and the question to be inconsistent, resulting in retrieval failure. To avoid retrieval failure, please do not switch this model at will.", + "required": "Embedding Model is required" + }, + "speechToTextModel": { + "key": "Speech-to-Text Model", + "tip": "Set the default model for speech-to-text input in conversation." + }, + "ttsModel": { + "key": "Text-to-Speech Model", + "tip": "Set the default model for text-to-speech input in conversation." + }, + "rerankModel": { + "key": "Rerank Model", + "tip": "Rerank model will reorder the candidate document list based on the semantic match with user query, improving the results of semantic ranking" + }, + "apiKey": "API-KEY", + "quota": "Quota", + "searchModel": "Search model", + "noModelFound": "No model found for {{model}}", + "models": "Models", + "showMoreModelProvider": "Show more model provider", + "selector": { + "tip": "This model has been removed. Please add a model or select another model.", + "emptyTip": "No available models", + "emptySetting": "Please go to settings to configure", + "rerankTip": "Please set up the Rerank model" + }, + "card": { + "quota": "QUOTA", + "onTrial": "On Trial", + "paid": "Paid", + "quotaExhausted": "Quota exhausted", + "callTimes": "Call times", + "tokens": "Tokens", + "buyQuota": "Buy Quota", + "priorityUse": "Priority use", + "removeKey": "Remove API Key", + "tip": "Priority will be given to the paid quota. The Trial quota will be used after the paid quota is exhausted." + }, + "item": { + "deleteDesc": "{{modelName}} are being used as system reasoning models. Some functions will not be available after removal. Please confirm.", + "freeQuota": "FREE QUOTA" + }, + "addApiKey": "Add your API key", + "invalidApiKey": "Invalid API key", + "encrypted": { + "front": "Your API KEY will be encrypted and stored using", + "back": " technology." + }, + "freeQuota": { + "howToEarn": "How to earn" + }, + "addMoreModelProvider": "ADD MORE MODEL PROVIDER", + "addModel": "Add Model", + "modelsNum": "{{num}} Models", + "showModels": "Show Models", + "showModelsNum": "Show {{num}} Models", + "collapse": "Collapse", + "config": "Config", + "modelAndParameters": "Model and Parameters", + "model": "Model", + "featureSupported": "{{feature}} supported", + "callTimes": "Call times", + "credits": "Message Credits", + "buyQuota": "Buy Quota", + "getFreeTokens": "Get free Tokens", + "priorityUsing": "Prioritize using", + "deprecated": "Deprecated", + "confirmDelete": "Confirm deletion?", + "quotaTip": "Remaining available free tokens", + "loadPresets": "Load Presets", + "parameters": "PARAMETERS", + "loadBalancing": "Load balancing", + "loadBalancingDescription": "Configure multiple credentials for the model and invoke them automatically. ", + "loadBalancingHeadline": "Load Balancing", + "configLoadBalancing": "Config Load Balancing", + "modelHasBeenDeprecated": "This model has been deprecated", + "providerManaged": "Provider managed", + "providerManagedDescription": "Use the single set of credentials provided by the model provider.", + "defaultConfig": "Default Config", + "apiKeyStatusNormal": "APIKey status is normal", + "apiKeyRateLimit": "Rate limit was reached, available after {{seconds}}s", + "addConfig": "Add Config", + "editConfig": "Edit Config", + "loadBalancingLeastKeyWarning": "To enable load balancing at least 2 keys must be enabled.", + "loadBalancingInfo": "By default, load balancing uses the Round-robin strategy. If rate limiting is triggered, a 1-minute cooldown period will be applied.", + "upgradeForLoadBalancing": "Upgrade your plan to enable Load Balancing.", + "toBeConfigured": "To be configured", + "configureTip": "Set up api-key or add model to use", + "installProvider": "Install model providers", + "installDataSourceProvider": "Install data source providers", + "discoverMore": "Discover more in ", + "emptyProviderTitle": "Model provider not set up", + "emptyProviderTip": "Please install a model provider first.", + "auth": { + "unAuthorized": "Unauthorized", + "credentialRemoved": "Credential removed", + "authRemoved": "Auth removed", + "apiKeys": "API Keys", + "addApiKey": "Add API Key", + "addModel": "Add model", + "addNewModel": "Add new model", + "addCredential": "Add credential", + "addModelCredential": "Add model credential", + "editModelCredential": "Edit model credential", + "modelCredentials": "Model credentials", + "modelCredential": "Model credential", + "configModel": "Config model", + "configLoadBalancing": "Config Load Balancing", + "authorizationError": "Authorization error", + "specifyModelCredential": "Specify model credential", + "specifyModelCredentialTip": "Use a configured model credential.", + "providerManaged": "Provider managed", + "providerManagedTip": "The current configuration is hosted by the provider.", + "apiKeyModal": { + "title": "API Key Authorization Configuration", + "desc": "After configuring credentials, all members within the workspace can use this model when orchestrating applications.", + "addModel": "Add model" + }, + "manageCredentials": "Manage Credentials", + "customModelCredentials": "Custom Model Credentials", + "addNewModelCredential": "Add new model credential", + "removeModel": "Remove Model", + "selectModelCredential": "Select a model credential", + "customModelCredentialsDeleteTip": "Credential is in use and cannot be deleted" + }, + "parametersInvalidRemoved": "Some parameters are invalid and have been removed" + }, + "dataSource": { + "add": "Add a data source", + "connect": "Connect", + "configure": "Configure", + "notion": { + "title": "Notion", + "description": "Using Notion as a data source for the Knowledge.", + "connectedWorkspace": "Connected workspace", + "addWorkspace": "Add workspace", + "connected": "Connected", + "disconnected": "Disconnected", + "changeAuthorizedPages": "Change authorized pages", + "integratedAlert": "Notion is integrated via internal credential, no need to re-authorize.", + "pagesAuthorized": "Pages authorized", + "sync": "Sync", + "remove": "Remove", + "selector": { + "pageSelected": "Pages Selected", + "searchPages": "Search pages...", + "noSearchResult": "No search results", + "addPages": "Add pages", + "preview": "PREVIEW" + } + }, + "website": { + "title": "Website", + "description": "Import content from websites using web crawler.", + "with": "With", + "configuredCrawlers": "Configured crawlers", + "active": "Active", + "inactive": "Inactive" + } + }, + "plugin": { + "serpapi": { + "apiKey": "API Key", + "apiKeyPlaceholder": "Enter your API key", + "keyFrom": "Get your SerpAPI key from SerpAPI Account Page" + } + }, + "apiBasedExtension": { + "title": "API extensions provide centralized API management, simplifying configuration for easy use across Dify's applications.", + "link": "Learn how to develop your own API Extension.", + "add": "Add API Extension", + "selector": { + "title": "API Extension", + "placeholder": "Please select API extension", + "manage": "Manage API Extension" + }, + "modal": { + "title": "Add API Extension", + "editTitle": "Edit API Extension", + "name": { + "title": "Name", + "placeholder": "Please enter the name" + }, + "apiEndpoint": { + "title": "API Endpoint", + "placeholder": "Please enter the API endpoint" + }, + "apiKey": { + "title": "API-key", + "placeholder": "Please enter the API-key", + "lengthError": "API-key length cannot be less than 5 characters" + } + }, + "type": "Type" + }, + "about": { + "changeLog": "Changelog", + "updateNow": "Update now", + "nowAvailable": "Dify {{version}} is now available.", + "latestAvailable": "Dify {{version}} is the latest version available." + }, + "appMenus": { + "overview": "Monitoring", + "promptEng": "Orchestrate", + "apiAccess": "API Access", + "logAndAnn": "Logs & Annotations", + "logs": "Logs" + }, + "environment": { + "testing": "TESTING", + "development": "DEVELOPMENT" + }, + "appModes": { + "completionApp": "Text Generator", + "chatApp": "Chat App" + }, + "datasetMenus": { + "documents": "Documents", + "hitTesting": "Retrieval Testing", + "settings": "Settings", + "emptyTip": "This Knowledge has not been integrated within any application. Please refer to the document for guidance.", + "viewDoc": "View documentation", + "relatedApp": "linked apps", + "noRelatedApp": "No linked apps", + "pipeline": "Pipeline" + }, + "voiceInput": { + "speaking": "Speak now...", + "converting": "Converting to text...", + "notAllow": "microphone not authorized" + }, + "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": "Rename Conversation", + "conversationName": "Conversation name", + "conversationNamePlaceholder": "Please input conversation name", + "conversationNameCanNotEmpty": "Conversation name required", + "citation": { + "title": "CITATIONS", + "linkToDataset": "Link to Knowledge", + "characters": "Characters:", + "hitCount": "Retrieval count:", + "vectorHash": "Vector hash:", + "hitScore": "Retrieval Score:" + }, + "inputPlaceholder": "Talk to {{botName}}", + "thinking": "Thinking...", + "thought": "Thought", + "resend": "Resend" + }, + "promptEditor": { + "placeholder": "Write your prompt word here, enter '{' to insert a variable, enter '/' to insert a prompt content block", + "context": { + "item": { + "title": "Context", + "desc": "Insert context template" + }, + "modal": { + "title": "{{num}} Knowledge in Context", + "add": "Add Context ", + "footer": "You can manage contexts in the Context section below." + } + }, + "history": { + "item": { + "title": "Conversation History", + "desc": "Insert historical message template" + }, + "modal": { + "title": "EXAMPLE", + "user": "Hello", + "assistant": "Hello! How can I assist you today?", + "edit": "Edit Conversation Role Names" + } + }, + "variable": { + "item": { + "title": "Variables & External Tools", + "desc": "Insert Variables & External Tools" + }, + "outputToolDisabledItem": { + "title": "Variables", + "desc": "Insert Variables" + }, + "modal": { + "add": "New variable", + "addTool": "New tool" + } + }, + "query": { + "item": { + "title": "Query", + "desc": "Insert user query template" + } + }, + "existed": "Already exists in the prompt" + }, + "imageUploader": { + "uploadFromComputer": "Upload from Computer", + "uploadFromComputerReadError": "Image reading failed, please try again.", + "uploadFromComputerUploadError": "Image upload failed, please upload again.", + "uploadFromComputerLimit": "Upload images cannot exceed {{size}} MB", + "pasteImageLink": "Paste image link", + "pasteImageLinkInputPlaceholder": "Paste image link here", + "pasteImageLinkInvalid": "Invalid image link", + "imageUpload": "Image Upload" + }, + "fileUploader": { + "uploadFromComputer": "Local upload", + "pasteFileLink": "Paste file link", + "pasteFileLinkInputPlaceholder": "Enter URL...", + "uploadFromComputerReadError": "File reading failed, please try again.", + "uploadFromComputerUploadError": "File upload failed, please upload again.", + "uploadFromComputerLimit": "Upload {{type}} cannot exceed {{size}}", + "pasteFileLinkInvalid": "Invalid file link", + "fileExtensionNotSupport": "File extension not supported", + "fileExtensionBlocked": "This file type is blocked for security reasons", + "uploadDisabled": "File upload is disabled" + }, + "tag": { + "placeholder": "All Tags", + "addNew": "Add new tag", + "noTag": "No tags", + "noTagYet": "No tags yet", + "addTag": "Add tags", + "editTag": "Edit tags", + "manageTags": "Manage Tags", + "selectorPlaceholder": "Type to search or create", + "create": "Create", + "delete": "Delete tag", + "deleteTip": "The tag is being used, delete it?", + "created": "Tag created successfully", + "failed": "Tag creation failed" + }, + "license": { + "expiring": "Expiring in one day", + "expiring_plural": "Expiring in {{count}} days", + "unlimited": "Unlimited" + }, + "pagination": { + "perPage": "Items per page" + }, + "avatar": { + "deleteTitle": "Remove Avatar", + "deleteDescription": "Are you sure you want to remove your profile picture? Your account will use the default initial avatar." + }, + "imageInput": { + "dropImageHere": "Drop your image here, or", + "browse": "browse", + "supportedFormats": "Supports PNG, JPG, JPEG, WEBP and GIF" + }, + "you": "You", + "dynamicSelect": { + "error": "Loading options failed", + "noData": "No options available", + "loading": "Loading options...", + "selected": "{{count}} selected" + } +} diff --git a/web/i18n/en-US/common.ts b/web/i18n/en-US/common.ts deleted file mode 100644 index 2e378afeda..0000000000 --- a/web/i18n/en-US/common.ts +++ /dev/null @@ -1,798 +0,0 @@ -const translation = { - loading: 'Loading', - error: 'Error', - theme: { - theme: 'Theme', - light: 'light', - dark: 'dark', - auto: 'system', - }, - api: { - success: 'Success', - actionSuccess: 'Action succeeded', - actionFailed: 'Action failed', - saved: 'Saved', - create: 'Created', - remove: 'Removed', - }, - operation: { - create: 'Create', - confirm: 'Confirm', - cancel: 'Cancel', - clear: 'Clear', - save: 'Save', - yes: 'Yes', - no: 'No', - deleteConfirmTitle: 'Delete?', - confirmAction: 'Please confirm your action.', - saveAndEnable: 'Save & Enable', - edit: 'Edit', - add: 'Add', - added: 'Added', - refresh: 'Restart', - reset: 'Reset', - search: 'Search', - noSearchResults: 'No {{content}} were found', - resetKeywords: 'Reset keywords', - selectCount: '{{count}} Selected', - searchCount: 'Find {{count}} {{content}}', - noSearchCount: '0 {{content}}', - change: 'Change', - remove: 'Remove', - send: 'Send', - copy: 'Copy', - copied: 'Copied', - lineBreak: 'Line break', - sure: 'I\'m sure', - download: 'Download', - downloadSuccess: 'Download Completed.', - downloadFailed: 'Download failed. Please try again later.', - viewDetails: 'View Details', - delete: 'Delete', - now: 'Now', - deleteApp: 'Delete App', - settings: 'Settings', - setup: 'Setup', - config: 'Config', - getForFree: 'Get for free', - reload: 'Reload', - ok: 'OK', - log: 'Log', - learnMore: 'Learn More', - params: 'Params', - duplicate: 'Duplicate', - rename: 'Rename', - audioSourceUnavailable: 'AudioSource is unavailable', - close: 'Close', - copyImage: 'Copy Image', - imageCopied: 'Image copied', - zoomOut: 'Zoom Out', - zoomIn: 'Zoom In', - openInNewTab: 'Open in new tab', - in: 'in', - saveAndRegenerate: 'Save & Regenerate Child Chunks', - view: 'View', - viewMore: 'VIEW MORE', - back: 'Back', - imageDownloaded: 'Image downloaded', - regenerate: 'Regenerate', - submit: 'Submit', - skip: 'Skip', - format: 'Format', - more: 'More', - selectAll: 'Select All', - deSelectAll: 'Deselect All', - }, - errorMsg: { - fieldRequired: '{{field}} is required', - urlError: 'url should start with http:// or https://', - }, - placeholder: { - input: 'Please enter', - select: 'Please select', - search: 'Search...', - }, - noData: 'No data', - label: { - optional: '(optional)', - }, - voice: { - language: { - zhHans: 'Chinese', - zhHant: 'Traditional Chinese', - enUS: 'English', - deDE: 'German', - frFR: 'French', - esES: 'Spanish', - itIT: 'Italian', - thTH: 'Thai', - idID: 'Indonesian', - jaJP: 'Japanese', - koKR: 'Korean', - ptBR: 'Portuguese', - ruRU: 'Russian', - ukUA: 'Ukrainian', - viVN: 'Vietnamese', - plPL: 'Polish', - roRO: 'Romanian', - hiIN: 'Hindi', - trTR: 'Türkçe', - faIR: 'Farsi', - slSI: 'Slovenian', - arTN: 'Tunisian Arabic', - }, - }, - unit: { - char: 'chars', - }, - actionMsg: { - noModification: 'No modifications at the moment.', - modifiedSuccessfully: 'Modified successfully', - modifiedUnsuccessfully: 'Modified unsuccessfully', - copySuccessfully: 'Copied successfully', - paySucceeded: 'Payment succeeded', - payCancelled: 'Payment cancelled', - generatedSuccessfully: 'Generated successfully', - generatedUnsuccessfully: 'Generated unsuccessfully', - }, - model: { - params: { - temperature: 'Temperature', - temperatureTip: - 'Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.', - top_p: 'Top P', - top_pTip: - 'Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered.', - presence_penalty: 'Presence penalty', - presence_penaltyTip: - 'How much to penalize new tokens based on whether they appear in the text so far.\nIncreases the model\'s likelihood to talk about new topics.', - frequency_penalty: 'Frequency penalty', - frequency_penaltyTip: - 'How much to penalize new tokens based on their existing frequency in the text so far.\nDecreases the model\'s likelihood to repeat the same line verbatim.', - max_tokens: 'Max token', - max_tokensTip: - 'Used to limit the maximum length of the reply, in tokens. \nLarger values may limit the space left for prompt words, chat logs, and Knowledge. \nIt is recommended to set it below two-thirds\ngpt-4-1106-preview, gpt-4-vision-preview max token (input 128k output 4k)', - maxTokenSettingTip: 'Your max token setting is high, potentially limiting space for prompts, queries, and data. Consider setting it below 2/3.', - setToCurrentModelMaxTokenTip: 'Max token is updated to the 80% maximum token of the current model {{maxToken}}.', - stop_sequences: 'Stop sequences', - stop_sequencesTip: 'Up to four sequences where the API will stop generating further tokens. The returned text will not contain the stop sequence.', - stop_sequencesPlaceholder: 'Enter sequence and press Tab', - }, - tone: { - Creative: 'Creative', - Balanced: 'Balanced', - Precise: 'Precise', - Custom: 'Custom', - }, - addMoreModel: 'Go to settings to add more models', - settingsLink: 'Model Provider Settings', - capabilities: 'MultiModal Capabilities', - }, - menus: { - status: 'beta', - explore: 'Explore', - apps: 'Studio', - appDetail: 'App Detail', - account: 'Account', - plugins: 'Plugins', - exploreMarketplace: 'Explore Marketplace', - pluginsTips: 'Integrate third-party plugins or create ChatGPT-compatible AI-Plugins.', - datasets: 'Knowledge', - datasetsTips: 'COMING SOON: Import your own text data or write data in real-time via Webhook for LLM context enhancement.', - newApp: 'New App', - newDataset: 'Create Knowledge', - tools: 'Tools', - }, - userProfile: { - settings: 'Settings', - contactUs: 'Contact Us', - emailSupport: 'Email Support', - workspace: 'Workspace', - createWorkspace: 'Create Workspace', - helpCenter: 'View Docs', - support: 'Support', - compliance: 'Compliance', - forum: 'Forum', - roadmap: 'Roadmap', - github: 'GitHub', - community: 'Community', - about: 'About', - logout: 'Log out', - }, - compliance: { - soc2Type1: 'SOC 2 Type I Report', - soc2Type2: 'SOC 2 Type II Report', - iso27001: 'ISO 27001:2022 Certification', - gdpr: 'GDPR DPA', - sandboxUpgradeTooltip: 'Only available with a Professional or Team plan.', - professionalUpgradeTooltip: 'Only available with a Team plan or above.', - }, - settings: { - accountGroup: 'GENERAL', - workplaceGroup: 'WORKSPACE', - generalGroup: 'GENERAL', - account: 'My account', - members: 'Members', - billing: 'Billing', - integrations: 'Integrations', - language: 'Language', - provider: 'Model Provider', - dataSource: 'Data Source', - plugin: 'Plugins', - apiBasedExtension: 'API Extension', - }, - account: { - account: 'Account', - myAccount: 'My Account', - studio: 'Studio', - avatar: 'Avatar', - name: 'Name', - email: 'Email', - password: 'Password', - passwordTip: 'You can set a permanent password if you don’t want to use temporary login codes', - setPassword: 'Set a password', - resetPassword: 'Reset password', - currentPassword: 'Current password', - newPassword: 'New password', - confirmPassword: 'Confirm password', - notEqual: 'Two passwords are different.', - langGeniusAccount: 'Account\'s data', - langGeniusAccountTip: 'The user data of your account.', - editName: 'Edit Name', - showAppLength: 'Show {{length}} apps', - delete: 'Delete Account', - deleteTip: 'Please note, once confirmed, as the Owner of any Workspaces, your workspaces will be scheduled in a queue for permanent deletion, and all your user data will be queued for permanent deletion.', - deletePrivacyLinkTip: 'For more information about how we handle your data, please see our ', - deletePrivacyLink: 'Privacy Policy.', - deleteSuccessTip: 'Your account needs time to finish deleting. We\'ll email you when it\'s all done.', - deleteLabel: 'To confirm, please type in your email below', - deletePlaceholder: 'Please enter your email', - sendVerificationButton: 'Send Verification Code', - verificationLabel: 'Verification Code', - verificationPlaceholder: 'Paste the 6-digit code', - permanentlyDeleteButton: 'Permanently Delete Account', - feedbackTitle: 'Feedback', - feedbackLabel: 'Tell us why you deleted your account?', - feedbackPlaceholder: 'Optional', - editWorkspaceInfo: 'Edit Workspace Info', - workspaceName: 'Workspace Name', - workspaceNamePlaceholder: 'Enter workspace name', - workspaceIcon: 'Workspace Icon', - changeEmail: { - title: 'Change Email', - verifyEmail: 'Verify your current email', - newEmail: 'Set up a new email address', - verifyNew: 'Verify your new email', - authTip: 'Once your email is changed, Google or GitHub accounts linked to your old email will no longer be able to log in to this account.', - content1: 'If you continue, we\'ll send a verification code to {{email}} for re-authentication.', - content2: 'Your current email is {{email}}. Verification code has been sent to this email address.', - content3: 'Enter a new email and we will send you a verification code.', - content4: 'We just sent you a temporary verification code to {{email}}.', - codeLabel: 'Verification code', - codePlaceholder: 'Paste the 6-digit code', - emailLabel: 'New email', - emailPlaceholder: 'Enter a new email', - existingEmail: 'A user with this email already exists.', - unAvailableEmail: 'This email is temporarily unavailable.', - sendVerifyCode: 'Send verification code', - continue: 'Continue', - changeTo: 'Change to {{email}}', - resendTip: 'Didn\'t receive a code?', - resendCount: 'Resend in {{count}}s', - resend: 'Resend', - }, - }, - members: { - team: 'Team', - invite: 'Add', - name: 'NAME', - lastActive: 'LAST ACTIVE', - role: 'ROLES', - pending: 'Pending...', - owner: 'Owner', - admin: 'Admin', - adminTip: 'Can build apps & manage team settings', - normal: 'Normal', - normalTip: 'Only can use apps, can not build apps', - builder: 'Builder', - builderTip: 'Can build & edit own apps', - editor: 'Editor', - editorTip: 'Can build & edit apps', - datasetOperator: 'Knowledge Admin', - datasetOperatorTip: 'Only can manage the knowledge base', - inviteTeamMember: 'Add team member', - inviteTeamMemberTip: 'They can access your team data directly after signing in.', - emailNotSetup: 'Email server is not set up, so invitation emails cannot be sent. Please notify users of the invitation link that will be issued after invitation instead.', - email: 'Email', - emailInvalid: 'Invalid Email Format', - emailPlaceholder: 'Please input emails', - sendInvite: 'Send Invite', - invitedAsRole: 'Invited as {{role}} user', - invitationSent: 'Invitation sent', - invitationSentTip: 'Invitation sent, and they can sign in to Dify to access your team data.', - invitationLink: 'Invitation Link', - failedInvitationEmails: 'Below users were not invited successfully', - ok: 'OK', - removeFromTeam: 'Remove from team', - removeFromTeamTip: 'Will remove team access', - setAdmin: 'Set as administrator', - setMember: 'Set to ordinary member', - setBuilder: 'Set as builder', - setEditor: 'Set as editor', - disInvite: 'Cancel the invitation', - deleteMember: 'Delete Member', - you: '(You)', - transferOwnership: 'Transfer Ownership', - transferModal: { - title: 'Transfer workspace ownership', - warning: 'You\'re about to transfer ownership of “{{workspace}}”. This takes effect immediately and can\'t be undone.', - warningTip: 'You\'ll become an admin member, and the new owner will have full control.', - sendTip: 'If you continue, we\'ll send a verification code to {{email}} for re-authentication.', - verifyEmail: 'Verify your current email', - verifyContent: 'Your current email is {{email}}.', - verifyContent2: 'We\'ll send a temporary verification code to this email for re-authentication.', - codeLabel: 'Verification code', - codePlaceholder: 'Paste the 6-digit code', - resendTip: 'Didn\'t receive a code?', - resendCount: 'Resend in {{count}}s', - resend: 'Resend', - transferLabel: 'Transfer workspace ownership to', - transferPlaceholder: 'Select a workspace member…', - sendVerifyCode: 'Send verification code', - continue: 'Continue', - transfer: 'Transfer workspace ownership', - }, - }, - feedback: { - title: 'Provide Feedback', - subtitle: 'Please tell us what went wrong with this response', - content: 'Feedback Content', - placeholder: 'Please describe what went wrong or how we can improve...', - }, - integrations: { - connected: 'Connected', - google: 'Google', - googleAccount: 'Login with Google account', - github: 'GitHub', - githubAccount: 'Login with GitHub account', - connect: 'Connect', - }, - language: { - displayLanguage: 'Display Language', - timezone: 'Time Zone', - }, - provider: { - apiKey: 'API Key', - enterYourKey: 'Enter your API key here', - invalidKey: 'Invalid OpenAI API key', - validatedError: 'Validation failed: ', - validating: 'Validating key...', - saveFailed: 'Save api key failed', - apiKeyExceedBill: 'This API KEY has no quota available, please read', - addKey: 'Add Key', - comingSoon: 'Coming Soon', - editKey: 'Edit', - invalidApiKey: 'Invalid API key', - azure: { - apiBase: 'API Base', - apiBasePlaceholder: 'The API Base URL of your Azure OpenAI Endpoint.', - apiKey: 'API Key', - apiKeyPlaceholder: 'Enter your API key here', - helpTip: 'Learn Azure OpenAI Service', - }, - openaiHosted: { - openaiHosted: 'Hosted OpenAI', - onTrial: 'ON TRIAL', - exhausted: 'QUOTA EXHAUSTED', - desc: 'The OpenAI hosting service provided by Dify allows you to use models such as GPT-3.5. Before your trial quota is used up, you need to set up other model providers.', - callTimes: 'Call times', - usedUp: 'Trial quota used up. Add own Model Provider.', - useYourModel: 'Currently using own Model Provider.', - close: 'Close', - }, - anthropicHosted: { - anthropicHosted: 'Anthropic Claude', - onTrial: 'ON TRIAL', - exhausted: 'QUOTA EXHAUSTED', - desc: 'Powerful model, which excels at a wide range of tasks from sophisticated dialogue and creative content generation to detailed instruction.', - callTimes: 'Call times', - usedUp: 'Trial quota used up. Add own Model Provider.', - useYourModel: 'Currently using own Model Provider.', - close: 'Close', - trialQuotaTip: 'Your Anthropic trial quota will expire on 2025/03/17 and will no longer be available thereafter. Please make use of it in time.', - }, - anthropic: { - using: 'The embedding capability is using', - enableTip: 'To enable the Anthropic model, you need to bind to OpenAI or Azure OpenAI Service first.', - notEnabled: 'Not enabled', - keyFrom: 'Get your API key from Anthropic', - }, - encrypted: { - front: 'Your API KEY will be encrypted and stored using', - back: ' technology.', - }, - }, - modelProvider: { - notConfigured: 'The system model has not yet been fully configured', - systemModelSettings: 'System Model Settings', - systemModelSettingsLink: 'Why is it necessary to set up a system model?', - selectModel: 'Select your model', - setupModelFirst: 'Please set up your model first', - systemReasoningModel: { - key: 'System Reasoning Model', - tip: 'Set the default inference model to be used for creating applications, as well as features such as dialogue name generation and next question suggestion will also use the default inference model.', - }, - embeddingModel: { - key: 'Embedding Model', - tip: 'Set the default model for document embedding processing of the Knowledge, both retrieval and import of the Knowledge use this Embedding model for vectorization processing. Switching will cause the vector dimension between the imported Knowledge and the question to be inconsistent, resulting in retrieval failure. To avoid retrieval failure, please do not switch this model at will.', - required: 'Embedding Model is required', - }, - speechToTextModel: { - key: 'Speech-to-Text Model', - tip: 'Set the default model for speech-to-text input in conversation.', - }, - ttsModel: { - key: 'Text-to-Speech Model', - tip: 'Set the default model for text-to-speech input in conversation.', - }, - rerankModel: { - key: 'Rerank Model', - tip: 'Rerank model will reorder the candidate document list based on the semantic match with user query, improving the results of semantic ranking', - }, - apiKey: 'API-KEY', - quota: 'Quota', - searchModel: 'Search model', - noModelFound: 'No model found for {{model}}', - models: 'Models', - showMoreModelProvider: 'Show more model provider', - selector: { - tip: 'This model has been removed. Please add a model or select another model.', - emptyTip: 'No available models', - emptySetting: 'Please go to settings to configure', - rerankTip: 'Please set up the Rerank model', - }, - card: { - quota: 'QUOTA', - onTrial: 'On Trial', - paid: 'Paid', - quotaExhausted: 'Quota exhausted', - callTimes: 'Call times', - tokens: 'Tokens', - buyQuota: 'Buy Quota', - priorityUse: 'Priority use', - removeKey: 'Remove API Key', - tip: 'Priority will be given to the paid quota. The Trial quota will be used after the paid quota is exhausted.', - }, - item: { - deleteDesc: '{{modelName}} are being used as system reasoning models. Some functions will not be available after removal. Please confirm.', - freeQuota: 'FREE QUOTA', - }, - addApiKey: 'Add your API key', - invalidApiKey: 'Invalid API key', - encrypted: { - front: 'Your API KEY will be encrypted and stored using', - back: ' technology.', - }, - freeQuota: { - howToEarn: 'How to earn', - }, - addMoreModelProvider: 'ADD MORE MODEL PROVIDER', - addModel: 'Add Model', - modelsNum: '{{num}} Models', - showModels: 'Show Models', - showModelsNum: 'Show {{num}} Models', - collapse: 'Collapse', - config: 'Config', - modelAndParameters: 'Model and Parameters', - model: 'Model', - featureSupported: '{{feature}} supported', - callTimes: 'Call times', - credits: 'Message Credits', - buyQuota: 'Buy Quota', - getFreeTokens: 'Get free Tokens', - priorityUsing: 'Prioritize using', - deprecated: 'Deprecated', - confirmDelete: 'Confirm deletion?', - quotaTip: 'Remaining available free tokens', - loadPresets: 'Load Presets', - parameters: 'PARAMETERS', - loadBalancing: 'Load balancing', - loadBalancingDescription: 'Configure multiple credentials for the model and invoke them automatically. ', - loadBalancingHeadline: 'Load Balancing', - configLoadBalancing: 'Config Load Balancing', - modelHasBeenDeprecated: 'This model has been deprecated', - providerManaged: 'Provider managed', - providerManagedDescription: 'Use the single set of credentials provided by the model provider.', - defaultConfig: 'Default Config', - apiKeyStatusNormal: 'APIKey status is normal', - apiKeyRateLimit: 'Rate limit was reached, available after {{seconds}}s', - addConfig: 'Add Config', - editConfig: 'Edit Config', - loadBalancingLeastKeyWarning: 'To enable load balancing at least 2 keys must be enabled.', - loadBalancingInfo: 'By default, load balancing uses the Round-robin strategy. If rate limiting is triggered, a 1-minute cooldown period will be applied.', - upgradeForLoadBalancing: 'Upgrade your plan to enable Load Balancing.', - toBeConfigured: 'To be configured', - configureTip: 'Set up api-key or add model to use', - installProvider: 'Install model providers', - installDataSourceProvider: 'Install data source providers', - discoverMore: 'Discover more in ', - emptyProviderTitle: 'Model provider not set up', - emptyProviderTip: 'Please install a model provider first.', - auth: { - unAuthorized: 'Unauthorized', - credentialRemoved: 'Credential removed', - authRemoved: 'Auth removed', - apiKeys: 'API Keys', - addApiKey: 'Add API Key', - addModel: 'Add model', - addNewModel: 'Add new model', - addCredential: 'Add credential', - addModelCredential: 'Add model credential', - editModelCredential: 'Edit model credential', - modelCredentials: 'Model credentials', - modelCredential: 'Model credential', - configModel: 'Config model', - configLoadBalancing: 'Config Load Balancing', - authorizationError: 'Authorization error', - specifyModelCredential: 'Specify model credential', - specifyModelCredentialTip: 'Use a configured model credential.', - providerManaged: 'Provider managed', - providerManagedTip: 'The current configuration is hosted by the provider.', - apiKeyModal: { - title: 'API Key Authorization Configuration', - desc: 'After configuring credentials, all members within the workspace can use this model when orchestrating applications.', - addModel: 'Add model', - }, - manageCredentials: 'Manage Credentials', - customModelCredentials: 'Custom Model Credentials', - addNewModelCredential: 'Add new model credential', - removeModel: 'Remove Model', - selectModelCredential: 'Select a model credential', - customModelCredentialsDeleteTip: 'Credential is in use and cannot be deleted', - }, - parametersInvalidRemoved: 'Some parameters are invalid and have been removed', - }, - dataSource: { - add: 'Add a data source', - connect: 'Connect', - configure: 'Configure', - notion: { - title: 'Notion', - description: 'Using Notion as a data source for the Knowledge.', - connectedWorkspace: 'Connected workspace', - addWorkspace: 'Add workspace', - connected: 'Connected', - disconnected: 'Disconnected', - changeAuthorizedPages: 'Change authorized pages', - integratedAlert: 'Notion is integrated via internal credential, no need to re-authorize.', - pagesAuthorized: 'Pages authorized', - sync: 'Sync', - remove: 'Remove', - selector: { - pageSelected: 'Pages Selected', - searchPages: 'Search pages...', - noSearchResult: 'No search results', - addPages: 'Add pages', - preview: 'PREVIEW', - }, - }, - website: { - title: 'Website', - description: 'Import content from websites using web crawler.', - with: 'With', - configuredCrawlers: 'Configured crawlers', - active: 'Active', - inactive: 'Inactive', - }, - }, - plugin: { - serpapi: { - apiKey: 'API Key', - apiKeyPlaceholder: 'Enter your API key', - keyFrom: 'Get your SerpAPI key from SerpAPI Account Page', - }, - }, - apiBasedExtension: { - title: 'API extensions provide centralized API management, simplifying configuration for easy use across Dify\'s applications.', - link: 'Learn how to develop your own API Extension.', - add: 'Add API Extension', - selector: { - title: 'API Extension', - placeholder: 'Please select API extension', - manage: 'Manage API Extension', - }, - modal: { - title: 'Add API Extension', - editTitle: 'Edit API Extension', - name: { - title: 'Name', - placeholder: 'Please enter the name', - }, - apiEndpoint: { - title: 'API Endpoint', - placeholder: 'Please enter the API endpoint', - }, - apiKey: { - title: 'API-key', - placeholder: 'Please enter the API-key', - lengthError: 'API-key length cannot be less than 5 characters', - }, - }, - type: 'Type', - }, - about: { - changeLog: 'Changelog', - updateNow: 'Update now', - nowAvailable: 'Dify {{version}} is now available.', - latestAvailable: 'Dify {{version}} is the latest version available.', - }, - appMenus: { - overview: 'Monitoring', - promptEng: 'Orchestrate', - apiAccess: 'API Access', - logAndAnn: 'Logs & Annotations', - logs: 'Logs', - }, - environment: { - testing: 'TESTING', - development: 'DEVELOPMENT', - }, - appModes: { - completionApp: 'Text Generator', - chatApp: 'Chat App', - }, - datasetMenus: { - documents: 'Documents', - hitTesting: 'Retrieval Testing', - settings: 'Settings', - emptyTip: 'This Knowledge has not been integrated within any application. Please refer to the document for guidance.', - viewDoc: 'View documentation', - relatedApp: 'linked apps', - noRelatedApp: 'No linked apps', - pipeline: 'Pipeline', - }, - voiceInput: { - speaking: 'Speak now...', - converting: 'Converting to text...', - notAllow: 'microphone not authorized', - }, - 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: 'Rename Conversation', - conversationName: 'Conversation name', - conversationNamePlaceholder: 'Please input conversation name', - conversationNameCanNotEmpty: 'Conversation name required', - citation: { - title: 'CITATIONS', - linkToDataset: 'Link to Knowledge', - characters: 'Characters:', - hitCount: 'Retrieval count:', - vectorHash: 'Vector hash:', - hitScore: 'Retrieval Score:', - }, - inputPlaceholder: 'Talk to {{botName}}', - thinking: 'Thinking...', - thought: 'Thought', - resend: 'Resend', - }, - promptEditor: { - placeholder: 'Write your prompt word here, enter \'{\' to insert a variable, enter \'/\' to insert a prompt content block', - context: { - item: { - title: 'Context', - desc: 'Insert context template', - }, - modal: { - title: '{{num}} Knowledge in Context', - add: 'Add Context ', - footer: 'You can manage contexts in the Context section below.', - }, - }, - history: { - item: { - title: 'Conversation History', - desc: 'Insert historical message template', - }, - modal: { - title: 'EXAMPLE', - user: 'Hello', - assistant: 'Hello! How can I assist you today?', - edit: 'Edit Conversation Role Names', - }, - }, - variable: { - item: { - title: 'Variables & External Tools', - desc: 'Insert Variables & External Tools', - }, - outputToolDisabledItem: { - title: 'Variables', - desc: 'Insert Variables', - }, - modal: { - add: 'New variable', - addTool: 'New tool', - }, - }, - query: { - item: { - title: 'Query', - desc: 'Insert user query template', - }, - }, - existed: 'Already exists in the prompt', - }, - imageUploader: { - uploadFromComputer: 'Upload from Computer', - uploadFromComputerReadError: 'Image reading failed, please try again.', - uploadFromComputerUploadError: 'Image upload failed, please upload again.', - uploadFromComputerLimit: 'Upload images cannot exceed {{size}} MB', - pasteImageLink: 'Paste image link', - pasteImageLinkInputPlaceholder: 'Paste image link here', - pasteImageLinkInvalid: 'Invalid image link', - imageUpload: 'Image Upload', - }, - fileUploader: { - uploadFromComputer: 'Local upload', - pasteFileLink: 'Paste file link', - pasteFileLinkInputPlaceholder: 'Enter URL...', - uploadFromComputerReadError: 'File reading failed, please try again.', - uploadFromComputerUploadError: 'File upload failed, please upload again.', - uploadFromComputerLimit: 'Upload {{type}} cannot exceed {{size}}', - pasteFileLinkInvalid: 'Invalid file link', - fileExtensionNotSupport: 'File extension not supported', - fileExtensionBlocked: 'This file type is blocked for security reasons', - uploadDisabled: 'File upload is disabled', - }, - tag: { - placeholder: 'All Tags', - addNew: 'Add new tag', - noTag: 'No tags', - noTagYet: 'No tags yet', - addTag: 'Add tags', - editTag: 'Edit tags', - manageTags: 'Manage Tags', - selectorPlaceholder: 'Type to search or create', - create: 'Create', - delete: 'Delete tag', - deleteTip: 'The tag is being used, delete it?', - created: 'Tag created successfully', - failed: 'Tag creation failed', - }, - license: { - expiring: 'Expiring in one day', - expiring_plural: 'Expiring in {{count}} days', - unlimited: 'Unlimited', - }, - pagination: { - perPage: 'Items per page', - }, - avatar: { - deleteTitle: 'Remove Avatar', - deleteDescription: 'Are you sure you want to remove your profile picture? Your account will use the default initial avatar.', - }, - imageInput: { - dropImageHere: 'Drop your image here, or', - browse: 'browse', - supportedFormats: 'Supports PNG, JPG, JPEG, WEBP and GIF', - }, - you: 'You', - dynamicSelect: { - error: 'Loading options failed', - noData: 'No options available', - loading: 'Loading options...', - selected: '{{count}} selected', - }, -} - -export default translation diff --git a/web/i18n/en-US/custom.json b/web/i18n/en-US/custom.json new file mode 100644 index 0000000000..fb9778fc59 --- /dev/null +++ b/web/i18n/en-US/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "Customization", + "upgradeTip": { + "title": "Upgrade your plan", + "des": "Upgrade your plan to customize your brand", + "prefix": "Upgrade your plan to", + "suffix": "customize your brand." + }, + "webapp": { + "title": "Customize web app brand", + "removeBrand": "Remove Powered by Dify", + "changeLogo": "Change Powered by Brand Image", + "changeLogoTip": "SVG or PNG format with a minimum size of 40x40px" + }, + "app": { + "title": "Customize app header brand", + "changeLogoTip": "SVG or PNG format with a minimum size of 80x80px" + }, + "upload": "Upload", + "uploading": "Uploading", + "uploadedFail": "Image upload failed, please re-upload.", + "change": "Change", + "apply": "Apply", + "restore": "Restore Defaults", + "customize": { + "contactUs": " contact us ", + "prefix": "To customize the brand logo within the app, please", + "suffix": "to upgrade to the Enterprise edition." + } +} diff --git a/web/i18n/en-US/custom.ts b/web/i18n/en-US/custom.ts deleted file mode 100644 index d88071a018..0000000000 --- a/web/i18n/en-US/custom.ts +++ /dev/null @@ -1,32 +0,0 @@ -const translation = { - custom: 'Customization', - upgradeTip: { - title: 'Upgrade your plan', - des: 'Upgrade your plan to customize your brand', - prefix: 'Upgrade your plan to', - suffix: 'customize your brand.', - }, - webapp: { - title: 'Customize web app brand', - removeBrand: 'Remove Powered by Dify', - changeLogo: 'Change Powered by Brand Image', - changeLogoTip: 'SVG or PNG format with a minimum size of 40x40px', - }, - app: { - title: 'Customize app header brand', - changeLogoTip: 'SVG or PNG format with a minimum size of 80x80px', - }, - upload: 'Upload', - uploading: 'Uploading', - uploadedFail: 'Image upload failed, please re-upload.', - change: 'Change', - apply: 'Apply', - restore: 'Restore Defaults', - customize: { - contactUs: ' contact us ', - prefix: 'To customize the brand logo within the app, please', - suffix: 'to upgrade to the Enterprise edition.', - }, -} - -export default translation diff --git a/web/i18n/en-US/dataset-creation.json b/web/i18n/en-US/dataset-creation.json new file mode 100644 index 0000000000..d803eb627b --- /dev/null +++ b/web/i18n/en-US/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "Knowledge" + }, + "one": "Data Source", + "two": "Document Processing", + "three": "Execute & Finish" + }, + "error": { + "unavailable": "This Knowledge is not available" + }, + "firecrawl": { + "configFirecrawl": "Configure 🔥Firecrawl", + "apiKeyPlaceholder": "API key from firecrawl.dev", + "getApiKeyLinkText": "Get your API key from firecrawl.dev" + }, + "watercrawl": { + "configWatercrawl": "Configure Watercrawl", + "apiKeyPlaceholder": "API key from watercrawl.dev", + "getApiKeyLinkText": "Get your API key from watercrawl.dev" + }, + "jinaReader": { + "configJinaReader": "Configure Jina Reader", + "apiKeyPlaceholder": "API key from jina.ai", + "getApiKeyLinkText": "Get your free API key at jina.ai" + }, + "stepOne": { + "filePreview": "File Preview", + "pagePreview": "Page Preview", + "dataSourceType": { + "file": "Import from file", + "notion": "Sync from Notion", + "web": "Sync from website" + }, + "uploader": { + "title": "Upload file", + "button": "Drag and drop file or folder, or", + "buttonSingleFile": "Drag and drop file, or", + "browse": "Browse", + "tip": "Supports {{supportTypes}}. Max {{batchCount}} in a batch and {{size}} MB each. Max total {{totalCount}} files.", + "validation": { + "typeError": "File type not supported", + "size": "File too large. Maximum is {{size}}MB", + "count": "Multiple files not supported", + "filesNumber": "You have reached the batch upload limit of {{filesNumber}}." + }, + "cancel": "Cancel", + "change": "Change", + "failed": "Upload failed" + }, + "notionSyncTitle": "Notion is not connected", + "notionSyncTip": "To sync with Notion, connection to Notion must be established first.", + "connect": "Go to connect", + "cancel": "Cancel", + "button": "Next", + "emptyDatasetCreation": "I want to create an empty Knowledge", + "modal": { + "title": "Create an empty Knowledge", + "tip": "An empty Knowledge will contain no documents, and you can upload documents any time.", + "input": "Knowledge name", + "placeholder": "Please input", + "nameNotEmpty": "Name cannot be empty", + "nameLengthInvalid": "Name must be between 1 to 40 characters", + "cancelButton": "Cancel", + "confirmButton": "Create", + "failed": "Creation failed" + }, + "website": { + "chooseProvider": "Select a provider", + "fireCrawlNotConfigured": "Firecrawl is not configured", + "fireCrawlNotConfiguredDescription": "Configure Firecrawl with API key to use it.", + "jinaReaderNotConfigured": "Jina Reader is not configured", + "jinaReaderNotConfiguredDescription": "Set up Jina Reader by entering your free API key for access.", + "waterCrawlNotConfigured": "Watercrawl is not configured", + "waterCrawlNotConfiguredDescription": "Configure Watercrawl with API key to use it.", + "configure": "Configure", + "configureFirecrawl": "Configure Firecrawl", + "configureWatercrawl": "Configure Watercrawl", + "configureJinaReader": "Configure Jina Reader", + "run": "Run", + "running": "Running", + "firecrawlTitle": "Extract web content with 🔥Firecrawl", + "firecrawlDoc": "Firecrawl docs", + "watercrawlTitle": "Extract web content with Watercrawl", + "watercrawlDoc": "Watercrawl docs", + "jinaReaderTitle": "Convert the entire site to Markdown", + "jinaReaderDoc": "Learn more about Jina Reader", + "jinaReaderDocLink": "https://jina.ai/reader", + "useSitemap": "Use sitemap", + "useSitemapTooltip": "Follow the sitemap to crawl the site. If not, Jina Reader will crawl iteratively based on page relevance, yielding fewer but higher-quality pages.", + "options": "Options", + "crawlSubPage": "Crawl sub-pages", + "limit": "Limit", + "maxDepth": "Max depth", + "excludePaths": "Exclude paths", + "includeOnlyPaths": "Include only paths", + "extractOnlyMainContent": "Extract only main content (no headers, navs, footers, etc.)", + "exceptionErrorTitle": "An exception occurred while running crawling job:", + "unknownError": "Unknown error", + "totalPageScraped": "Total pages scraped:", + "selectAll": "Select All", + "resetAll": "Reset All", + "scrapTimeInfo": "Scraped {{total}} pages in total within {{time}}s", + "preview": "Preview", + "maxDepthTooltip": "Maximum depth to crawl relative to the entered URL. Depth 0 just scrapes the page of the entered url, depth 1 scrapes the url and everything after enteredURL + one /, and so on." + } + }, + "stepTwo": { + "segmentation": "Chunk Settings", + "auto": "Automatic", + "autoDescription": "Automatically set chunk and preprocessing rules. Unfamiliar users are recommended to select this.", + "custom": "Custom", + "customDescription": "Customize chunks rules, chunks length, and preprocessing rules, etc.", + "general": "General", + "generalTip": "General text chunking mode, the chunks retrieved and recalled are the same.", + "parentChild": "Parent-child", + "parentChildTip": "When using the parent-child mode, the child-chunk is used for retrieval and the parent-chunk is used for recall as context.", + "parentChunkForContext": "Parent-chunk for Context", + "childChunkForRetrieval": "Child-chunk for Retrieval", + "paragraph": "Paragraph", + "paragraphTip": "This mode splits the text in to paragraphs based on delimiters and the maximum chunk length, using the split text as the parent chunk for retrieval.", + "fullDoc": "Full Doc", + "fullDocTip": "The entire document is used as the parent chunk and retrieved directly. Please note that for performance reasons, text exceeding 10000 tokens will be automatically truncated.", + "qaTip": "When using structured Q&A data, you can create documents that pair questions with answers. These documents are indexed based on the question portion, allowing the system to retrieve relevant answers based on query similarity.", + "separator": "Delimiter", + "separatorTip": "A delimiter is the character used to separate text. \\n\\n and \\n are commonly used delimiters for separating paragraphs and lines. Combined with commas (\\n\\n,\\n), paragraphs will be segmented by lines when exceeding the maximum chunk length. You can also use special delimiters defined by yourself (e.g. ***).", + "separatorPlaceholder": "\\n\\n for paragraphs; \\n for lines", + "maxLength": "Maximum chunk length", + "maxLengthCheck": "Maximum chunk length should be less than {{limit}}", + "overlap": "Chunk overlap", + "overlapTip": "Setting the chunk overlap can maintain the semantic relevance between them, enhancing the retrieve effect. It is recommended to set 10%-25% of the maximum chunk size.", + "overlapCheck": "chunk overlap should not bigger than maximum chunk length", + "rules": "Text Pre-processing Rules", + "removeExtraSpaces": "Replace consecutive spaces, newlines and tabs", + "removeUrlEmails": "Delete all URLs and email addresses", + "removeStopwords": "Remove stopwords such as \"a\", \"an\", \"the\"", + "preview": "Preview", + "previewChunk": "Preview Chunk", + "reset": "Reset", + "indexMode": "Index Method", + "qualified": "High Quality", + "highQualityTip": "Once finishing embedding in High Quality mode, reverting to Economical mode is not available.", + "recommend": "Recommend", + "qualifiedTip": "Calling the embedding model to process documents for more precise retrieval helps LLM generate high-quality answers.", + "warning": "Please set up the model provider API key first.", + "click": "Go to settings", + "economical": "Economical", + "economicalTip": "Using 10 keywords per chunk for retrieval, no tokens are consumed at the expense of reduced retrieval accuracy.", + "QATitle": "Segmenting in Question & Answer format", + "QATip": "Enable this option will consume more tokens", + "QALanguage": "Segment using", + "useQALanguage": "Chunk using Q&A format in", + "estimateCost": "Estimation", + "estimateSegment": "Estimated chunks", + "segmentCount": "chunks", + "calculating": "Calculating...", + "fileSource": "Preprocess documents", + "notionSource": "Preprocess pages", + "websiteSource": "Preprocess website", + "other": "and other ", + "fileUnit": " files", + "notionUnit": " pages", + "webpageUnit": " pages", + "previousStep": "Previous step", + "nextStep": "Save & Process", + "save": "Save & Process", + "cancel": "Cancel", + "sideTipTitle": "Why chunk and preprocess?", + "sideTipP1": "When processing text data, chunk and cleaning are two important preprocessing steps.", + "sideTipP2": "Segmentation splits long text into paragraphs so models can understand better. This improves the quality and relevance of model results.", + "sideTipP3": "Cleaning removes unnecessary characters and formats, making Knowledge cleaner and easier to parse.", + "sideTipP4": "Proper chunk and cleaning improve model performance, providing more accurate and valuable results.", + "previewTitle": "Preview", + "previewTitleButton": "Preview", + "previewButton": "Switching to Q&A format", + "previewSwitchTipStart": "The current chunk preview is in text format, switching to a question-and-answer format preview will", + "previewSwitchTipEnd": " consume additional tokens", + "characters": "characters", + "indexSettingTip": "To change the index method & embedding model, please go to the ", + "retrievalSettingTip": "To change the retrieval setting, please go to the ", + "datasetSettingLink": "Knowledge settings.", + "previewChunkTip": "Click the 'Preview Chunk' button on the left to load the preview", + "previewChunkCount": "{{count}} Estimated chunks", + "switch": "Switch", + "qaSwitchHighQualityTipTitle": "Q&A Format Requires High-quality Indexing Method", + "qaSwitchHighQualityTipContent": "Currently, only high-quality index method supports Q&A format chunking. Would you like to switch to high-quality mode?", + "notAvailableForParentChild": "Not available for Parent-child Index", + "notAvailableForQA": "Not available for Q&A Index", + "parentChildDelimiterTip": "A delimiter is the character used to separate text. \\n\\n is recommended for splitting the original document into large parent chunks. You can also use special delimiters defined by yourself.", + "parentChildChunkDelimiterTip": "A delimiter is the character used to separate text. \\n is recommended for splitting parent chunks into small child chunks. You can also use special delimiters defined by yourself." + }, + "stepThree": { + "creationTitle": "🎉 Knowledge created", + "creationContent": "We automatically named the Knowledge, you can modify it at any time.", + "label": "Knowledge name", + "additionTitle": "🎉 Document uploaded", + "additionP1": "The document has been uploaded to the Knowledge", + "additionP2": ", you can find it in the document list of the Knowledge.", + "stop": "Stop processing", + "resume": "Resume processing", + "navTo": "Go to document", + "sideTipTitle": "What's next", + "sideTipContent": "After finishing document indexing, you can manage and edit documents, run retrieval tests, and modify knowledge settings. Knowledge can then be integrated into your application as context, so make sure to adjust the Retrieval Setting to ensure optimal performance.", + "modelTitle": "Are you sure to stop embedding?", + "modelContent": "If you need to resume processing later, you will continue from where you left off.", + "modelButtonConfirm": "Confirm", + "modelButtonCancel": "Cancel" + }, + "otherDataSource": { + "title": "Connect to other data sources?", + "description": "Currently, Dify's knowledge base only has limited data sources. Contributing a data source to the Dify knowledge base is a fantastic way to help enhance the platform's flexibility and power for all users. Our contribution guide makes it easy to get started. Please click on the link below to learn more.", + "learnMore": "Learn more" + } +} diff --git a/web/i18n/en-US/dataset-creation.ts b/web/i18n/en-US/dataset-creation.ts deleted file mode 100644 index f32639a6b4..0000000000 --- a/web/i18n/en-US/dataset-creation.ts +++ /dev/null @@ -1,217 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: 'Knowledge', - }, - one: 'Data Source', - two: 'Document Processing', - three: 'Execute & Finish', - }, - error: { - unavailable: 'This Knowledge is not available', - }, - firecrawl: { - configFirecrawl: 'Configure 🔥Firecrawl', - apiKeyPlaceholder: 'API key from firecrawl.dev', - getApiKeyLinkText: 'Get your API key from firecrawl.dev', - }, - watercrawl: { - configWatercrawl: 'Configure Watercrawl', - apiKeyPlaceholder: 'API key from watercrawl.dev', - getApiKeyLinkText: 'Get your API key from watercrawl.dev', - }, - jinaReader: { - configJinaReader: 'Configure Jina Reader', - apiKeyPlaceholder: 'API key from jina.ai', - getApiKeyLinkText: 'Get your free API key at jina.ai', - }, - stepOne: { - filePreview: 'File Preview', - pagePreview: 'Page Preview', - dataSourceType: { - file: 'Import from file', - notion: 'Sync from Notion', - web: 'Sync from website', - }, - uploader: { - title: 'Upload file', - button: 'Drag and drop file or folder, or', - buttonSingleFile: 'Drag and drop file, or', - browse: 'Browse', - tip: 'Supports {{supportTypes}}. Max {{batchCount}} in a batch and {{size}} MB each. Max total {{totalCount}} files.', - validation: { - typeError: 'File type not supported', - size: 'File too large. Maximum is {{size}}MB', - count: 'Multiple files not supported', - filesNumber: 'You have reached the batch upload limit of {{filesNumber}}.', - }, - cancel: 'Cancel', - change: 'Change', - failed: 'Upload failed', - }, - notionSyncTitle: 'Notion is not connected', - notionSyncTip: 'To sync with Notion, connection to Notion must be established first.', - connect: 'Go to connect', - cancel: 'Cancel', - button: 'Next', - emptyDatasetCreation: 'I want to create an empty Knowledge', - modal: { - title: 'Create an empty Knowledge', - tip: 'An empty Knowledge will contain no documents, and you can upload documents any time.', - input: 'Knowledge name', - placeholder: 'Please input', - nameNotEmpty: 'Name cannot be empty', - nameLengthInvalid: 'Name must be between 1 to 40 characters', - cancelButton: 'Cancel', - confirmButton: 'Create', - failed: 'Creation failed', - }, - website: { - chooseProvider: 'Select a provider', - fireCrawlNotConfigured: 'Firecrawl is not configured', - fireCrawlNotConfiguredDescription: 'Configure Firecrawl with API key to use it.', - jinaReaderNotConfigured: 'Jina Reader is not configured', - jinaReaderNotConfiguredDescription: 'Set up Jina Reader by entering your free API key for access.', - waterCrawlNotConfigured: 'Watercrawl is not configured', - waterCrawlNotConfiguredDescription: 'Configure Watercrawl with API key to use it.', - configure: 'Configure', - configureFirecrawl: 'Configure Firecrawl', - configureWatercrawl: 'Configure Watercrawl', - configureJinaReader: 'Configure Jina Reader', - run: 'Run', - running: 'Running', - firecrawlTitle: 'Extract web content with 🔥Firecrawl', - firecrawlDoc: 'Firecrawl docs', - watercrawlTitle: 'Extract web content with Watercrawl', - watercrawlDoc: 'Watercrawl docs', - jinaReaderTitle: 'Convert the entire site to Markdown', - jinaReaderDoc: 'Learn more about Jina Reader', - jinaReaderDocLink: 'https://jina.ai/reader', - useSitemap: 'Use sitemap', - useSitemapTooltip: 'Follow the sitemap to crawl the site. If not, Jina Reader will crawl iteratively based on page relevance, yielding fewer but higher-quality pages.', - options: 'Options', - crawlSubPage: 'Crawl sub-pages', - limit: 'Limit', - maxDepth: 'Max depth', - excludePaths: 'Exclude paths', - includeOnlyPaths: 'Include only paths', - extractOnlyMainContent: 'Extract only main content (no headers, navs, footers, etc.)', - exceptionErrorTitle: 'An exception occurred while running crawling job:', - unknownError: 'Unknown error', - totalPageScraped: 'Total pages scraped:', - selectAll: 'Select All', - resetAll: 'Reset All', - scrapTimeInfo: 'Scraped {{total}} pages in total within {{time}}s', - preview: 'Preview', - maxDepthTooltip: 'Maximum depth to crawl relative to the entered URL. Depth 0 just scrapes the page of the entered url, depth 1 scrapes the url and everything after enteredURL + one /, and so on.', - }, - }, - stepTwo: { - segmentation: 'Chunk Settings', - auto: 'Automatic', - autoDescription: 'Automatically set chunk and preprocessing rules. Unfamiliar users are recommended to select this.', - custom: 'Custom', - customDescription: 'Customize chunks rules, chunks length, and preprocessing rules, etc.', - general: 'General', - generalTip: 'General text chunking mode, the chunks retrieved and recalled are the same.', - parentChild: 'Parent-child', - parentChildTip: 'When using the parent-child mode, the child-chunk is used for retrieval and the parent-chunk is used for recall as context.', - parentChunkForContext: 'Parent-chunk for Context', - childChunkForRetrieval: 'Child-chunk for Retrieval', - paragraph: 'Paragraph', - paragraphTip: 'This mode splits the text in to paragraphs based on delimiters and the maximum chunk length, using the split text as the parent chunk for retrieval.', - fullDoc: 'Full Doc', - fullDocTip: 'The entire document is used as the parent chunk and retrieved directly. Please note that for performance reasons, text exceeding 10000 tokens will be automatically truncated.', - qaTip: 'When using structured Q&A data, you can create documents that pair questions with answers. These documents are indexed based on the question portion, allowing the system to retrieve relevant answers based on query similarity.', - separator: 'Delimiter', - separatorTip: 'A delimiter is the character used to separate text. \\n\\n and \\n are commonly used delimiters for separating paragraphs and lines. Combined with commas (\\n\\n,\\n), paragraphs will be segmented by lines when exceeding the maximum chunk length. You can also use special delimiters defined by yourself (e.g. ***).', - separatorPlaceholder: '\\n\\n for paragraphs; \\n for lines', - maxLength: 'Maximum chunk length', - maxLengthCheck: 'Maximum chunk length should be less than {{limit}}', - overlap: 'Chunk overlap', - overlapTip: 'Setting the chunk overlap can maintain the semantic relevance between them, enhancing the retrieve effect. It is recommended to set 10%-25% of the maximum chunk size.', - overlapCheck: 'chunk overlap should not bigger than maximum chunk length', - rules: 'Text Pre-processing Rules', - removeExtraSpaces: 'Replace consecutive spaces, newlines and tabs', - removeUrlEmails: 'Delete all URLs and email addresses', - removeStopwords: 'Remove stopwords such as "a", "an", "the"', - preview: 'Preview', - previewChunk: 'Preview Chunk', - reset: 'Reset', - indexMode: 'Index Method', - qualified: 'High Quality', - highQualityTip: 'Once finishing embedding in High Quality mode, reverting to Economical mode is not available.', - recommend: 'Recommend', - qualifiedTip: 'Calling the embedding model to process documents for more precise retrieval helps LLM generate high-quality answers.', - warning: 'Please set up the model provider API key first.', - click: 'Go to settings', - economical: 'Economical', - economicalTip: 'Using 10 keywords per chunk for retrieval, no tokens are consumed at the expense of reduced retrieval accuracy.', - QATitle: 'Segmenting in Question & Answer format', - QATip: 'Enable this option will consume more tokens', - QALanguage: 'Segment using', - useQALanguage: 'Chunk using Q&A format in', - estimateCost: 'Estimation', - estimateSegment: 'Estimated chunks', - segmentCount: 'chunks', - calculating: 'Calculating...', - fileSource: 'Preprocess documents', - notionSource: 'Preprocess pages', - websiteSource: 'Preprocess website', - other: 'and other ', - fileUnit: ' files', - notionUnit: ' pages', - webpageUnit: ' pages', - previousStep: 'Previous step', - nextStep: 'Save & Process', - save: 'Save & Process', - cancel: 'Cancel', - sideTipTitle: 'Why chunk and preprocess?', - sideTipP1: 'When processing text data, chunk and cleaning are two important preprocessing steps.', - sideTipP2: 'Segmentation splits long text into paragraphs so models can understand better. This improves the quality and relevance of model results.', - sideTipP3: 'Cleaning removes unnecessary characters and formats, making Knowledge cleaner and easier to parse.', - sideTipP4: 'Proper chunk and cleaning improve model performance, providing more accurate and valuable results.', - previewTitle: 'Preview', - previewTitleButton: 'Preview', - previewButton: 'Switching to Q&A format', - previewSwitchTipStart: 'The current chunk preview is in text format, switching to a question-and-answer format preview will', - previewSwitchTipEnd: ' consume additional tokens', - characters: 'characters', - indexSettingTip: 'To change the index method & embedding model, please go to the ', - retrievalSettingTip: 'To change the retrieval setting, please go to the ', - datasetSettingLink: 'Knowledge settings.', - previewChunkTip: 'Click the \'Preview Chunk\' button on the left to load the preview', - previewChunkCount: '{{count}} Estimated chunks', - switch: 'Switch', - qaSwitchHighQualityTipTitle: 'Q&A Format Requires High-quality Indexing Method', - qaSwitchHighQualityTipContent: 'Currently, only high-quality index method supports Q&A format chunking. Would you like to switch to high-quality mode?', - notAvailableForParentChild: 'Not available for Parent-child Index', - notAvailableForQA: 'Not available for Q&A Index', - parentChildDelimiterTip: 'A delimiter is the character used to separate text. \\n\\n is recommended for splitting the original document into large parent chunks. You can also use special delimiters defined by yourself.', - parentChildChunkDelimiterTip: 'A delimiter is the character used to separate text. \\n is recommended for splitting parent chunks into small child chunks. You can also use special delimiters defined by yourself.', - }, - stepThree: { - creationTitle: '🎉 Knowledge created', - creationContent: 'We automatically named the Knowledge, you can modify it at any time.', - label: 'Knowledge name', - additionTitle: '🎉 Document uploaded', - additionP1: 'The document has been uploaded to the Knowledge', - additionP2: ', you can find it in the document list of the Knowledge.', - stop: 'Stop processing', - resume: 'Resume processing', - navTo: 'Go to document', - sideTipTitle: 'What\'s next', - sideTipContent: 'After finishing document indexing, you can manage and edit documents, run retrieval tests, and modify knowledge settings. Knowledge can then be integrated into your application as context, so make sure to adjust the Retrieval Setting to ensure optimal performance.', - modelTitle: 'Are you sure to stop embedding?', - modelContent: 'If you need to resume processing later, you will continue from where you left off.', - modelButtonConfirm: 'Confirm', - modelButtonCancel: 'Cancel', - }, - otherDataSource: { - title: 'Connect to other data sources?', - description: 'Currently, Dify\'s knowledge base only has limited data sources. Contributing a data source to the Dify knowledge base is a fantastic way to help enhance the platform\'s flexibility and power for all users. Our contribution guide makes it easy to get started. Please click on the link below to learn more.', - learnMore: 'Learn more', - }, -} - -export default translation diff --git a/web/i18n/en-US/dataset-documents.json b/web/i18n/en-US/dataset-documents.json new file mode 100644 index 0000000000..efdcffa0cc --- /dev/null +++ b/web/i18n/en-US/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "Documents", + "desc": "All files of the Knowledge are shown here, and the entire Knowledge can be linked to Dify citations or indexed via the Chat plugin.", + "learnMore": "Learn more", + "addFile": "Add file", + "addPages": "Add Pages", + "addUrl": "Add URL", + "table": { + "header": { + "fileName": "NAME", + "chunkingMode": "CHUNKING MODE", + "words": "WORDS", + "hitCount": "RETRIEVAL COUNT", + "uploadTime": "UPLOAD TIME", + "status": "STATUS", + "action": "ACTION" + }, + "rename": "Rename", + "name": "Name" + }, + "action": { + "uploadFile": "Upload new file", + "settings": "Chunking Settings", + "addButton": "Add chunk", + "add": "Add a chunk", + "batchAdd": "Batch add", + "archive": "Archive", + "unarchive": "Unarchive", + "delete": "Delete", + "enableWarning": "Archived file cannot be enabled", + "sync": "Sync", + "pause": "Pause", + "resume": "Resume" + }, + "index": { + "enable": "Enable", + "disable": "Disable", + "all": "All", + "enableTip": "The file can be indexed", + "disableTip": "The file cannot be indexed" + }, + "sort": { + "uploadTime": "Upload Time", + "hitCount": "Retrieval Count" + }, + "status": { + "queuing": "Queuing", + "indexing": "Indexing", + "paused": "Paused", + "error": "Error", + "available": "Available", + "enabled": "Enabled", + "disabled": "Disabled", + "archived": "Archived" + }, + "empty": { + "title": "There is no documentation yet", + "upload": { + "tip": "You can upload files, sync from the website, or from web apps like Notion, GitHub, etc." + }, + "sync": { + "tip": "Dify will periodically download files from your Notion and complete processing." + } + }, + "delete": { + "title": "Are you sure Delete?", + "content": "If you need to resume processing later, you will continue from where you left off" + }, + "batchModal": { + "title": "Batch add chunks", + "csvUploadTitle": "Drag and drop your CSV file here, or ", + "browse": "browse", + "tip": "The CSV file must conform to the following structure:", + "question": "question", + "answer": "answer", + "contentTitle": "chunk content", + "content": "content", + "template": "Download the template here", + "cancel": "Cancel", + "run": "Run Batch", + "runError": "Run batch failed", + "processing": "In batch processing", + "completed": "Import completed", + "error": "Import Error", + "ok": "OK" + } + }, + "metadata": { + "title": "Metadata", + "desc": "Labeling metadata for documents allows AI to access them in a timely manner and exposes the source of references for users.", + "dateTimeFormat": "MMMM D, YYYY hh:mm A", + "docTypeSelectTitle": "Please select a document type", + "docTypeChangeTitle": "Change document type", + "docTypeSelectWarning": "If the document type is changed, the now filled metadata will no longer be preserved", + "firstMetaAction": "Let's go", + "placeholder": { + "add": "Add ", + "select": "Select " + }, + "source": { + "upload_file": "Upload File", + "notion": "Sync form Notion", + "github": "Sync form Github", + "local_file": "Local File", + "website_crawl": "Website Crawl", + "online_document": "Online Document" + }, + "type": { + "book": "Book", + "webPage": "Web Page", + "paper": "Paper", + "socialMediaPost": "Social Media Post", + "personalDocument": "Personal Document", + "businessDocument": "Business Document", + "IMChat": "IM Chat", + "wikipediaEntry": "Wikipedia Entry", + "notion": "Sync form Notion", + "github": "Sync form Github", + "technicalParameters": "Technical Parameters" + }, + "field": { + "processRule": { + "processDoc": "Process Document", + "segmentRule": "Chunk Rule", + "segmentLength": "Chunks Length", + "processClean": "Text Process Clean" + }, + "book": { + "title": "Title", + "language": "Language", + "author": "Author", + "publisher": "Publisher", + "publicationDate": "Publication Date", + "ISBN": "ISBN", + "category": "Category" + }, + "webPage": { + "title": "Title", + "url": "URL", + "language": "Language", + "authorPublisher": "Author/Publisher", + "publishDate": "Publish Date", + "topicKeywords": "Topic/Keywords", + "description": "Description" + }, + "paper": { + "title": "Title", + "language": "Language", + "author": "Author", + "publishDate": "Publish Date", + "journalConferenceName": "Journal/Conference Name", + "volumeIssuePage": "Volume/Issue/Page", + "DOI": "DOI", + "topicsKeywords": "Topics/Keywords", + "abstract": "Abstract" + }, + "socialMediaPost": { + "platform": "Platform", + "authorUsername": "Author/Username", + "publishDate": "Publish Date", + "postURL": "Post URL", + "topicsTags": "Topics/Tags" + }, + "personalDocument": { + "title": "Title", + "author": "Author", + "creationDate": "Creation Date", + "lastModifiedDate": "Last Modified Date", + "documentType": "Document Type", + "tagsCategory": "Tags/Category" + }, + "businessDocument": { + "title": "Title", + "author": "Author", + "creationDate": "Creation Date", + "lastModifiedDate": "Last Modified Date", + "documentType": "Document Type", + "departmentTeam": "Department/Team" + }, + "IMChat": { + "chatPlatform": "Chat Platform", + "chatPartiesGroupName": "Chat Parties/Group Name", + "participants": "Participants", + "startDate": "Start Date", + "endDate": "End Date", + "topicsKeywords": "Topics/Keywords", + "fileType": "File Type" + }, + "wikipediaEntry": { + "title": "Title", + "language": "Language", + "webpageURL": "Webpage URL", + "editorContributor": "Editor/Contributor", + "lastEditDate": "Last Edit Date", + "summaryIntroduction": "Summary/Introduction" + }, + "notion": { + "title": "Title", + "language": "Language", + "author": "Author", + "createdTime": "Created Time", + "lastModifiedTime": "Last Modified Time", + "url": "URL", + "tag": "Tag", + "description": "Description" + }, + "github": { + "repoName": "Repo Name", + "repoDesc": "Repo Description", + "repoOwner": "Repo Owner", + "fileName": "File Name", + "filePath": "File Path", + "programmingLang": "Programming Language", + "url": "URL", + "license": "License", + "lastCommitTime": "Last Commit Time", + "lastCommitAuthor": "Last Commit Author" + }, + "originInfo": { + "originalFilename": "Original filename", + "originalFileSize": "Original file size", + "uploadDate": "Upload date", + "lastUpdateDate": "Last update date", + "source": "Source" + }, + "technicalParameters": { + "segmentSpecification": "Chunks specification", + "segmentLength": "Chunks length", + "avgParagraphLength": "Avg. paragraph length", + "paragraphs": "Paragraphs", + "hitCount": "Retrieval count", + "embeddingTime": "Embedding time", + "embeddedSpend": "Embedded spend" + } + }, + "languageMap": { + "zh": "Chinese", + "en": "English", + "es": "Spanish", + "fr": "French", + "de": "German", + "ja": "Japanese", + "ko": "Korean", + "ru": "Russian", + "ar": "Arabic", + "pt": "Portuguese", + "it": "Italian", + "nl": "Dutch", + "pl": "Polish", + "sv": "Swedish", + "tr": "Turkish", + "he": "Hebrew", + "hi": "Hindi", + "da": "Danish", + "fi": "Finnish", + "no": "Norwegian", + "hu": "Hungarian", + "el": "Greek", + "cs": "Czech", + "th": "Thai", + "id": "Indonesian" + }, + "categoryMap": { + "book": { + "fiction": "Fiction", + "biography": "Biography", + "history": "History", + "science": "Science", + "technology": "Technology", + "education": "Education", + "philosophy": "Philosophy", + "religion": "Religion", + "socialSciences": "SocialSciences", + "art": "Art", + "travel": "Travel", + "health": "Health", + "selfHelp": "SelfHelp", + "businessEconomics": "BusinessEconomics", + "cooking": "Cooking", + "childrenYoungAdults": "ChildrenYoungAdults", + "comicsGraphicNovels": "ComicsGraphicNovels", + "poetry": "Poetry", + "drama": "Drama", + "other": "Other" + }, + "personalDoc": { + "notes": "Notes", + "blogDraft": "Blog Draft", + "diary": "Diary", + "researchReport": "Research Report", + "bookExcerpt": "Book Excerpt", + "schedule": "Schedule", + "list": "List", + "projectOverview": "Project Overview", + "photoCollection": "Photo Collection", + "creativeWriting": "Creative Writing", + "codeSnippet": "Code Snippet", + "designDraft": "Design Draft", + "personalResume": "Personal Resume", + "other": "Other" + }, + "businessDoc": { + "meetingMinutes": "Meeting Minutes", + "researchReport": "Research Report", + "proposal": "Proposal", + "employeeHandbook": "Employee Handbook", + "trainingMaterials": "Training Materials", + "requirementsDocument": "Requirements Document", + "designDocument": "Design Document", + "productSpecification": "Product Specification", + "financialReport": "Financial Report", + "marketAnalysis": "Market Analysis", + "projectPlan": "Project Plan", + "teamStructure": "Team Structure", + "policiesProcedures": "Policies & Procedures", + "contractsAgreements": "Contracts & Agreements", + "emailCorrespondence": "Email Correspondence", + "other": "Other" + } + } + }, + "embedding": { + "waiting": "Embedding waiting...", + "processing": "Embedding processing...", + "paused": "Embedding paused", + "completed": "Embedding completed", + "error": "Embedding error", + "docName": "Preprocessing document", + "mode": "Chunking Setting", + "segmentLength": "Maximum Chunk Length", + "textCleaning": "Text Preprocessing Rules", + "segments": "Paragraphs", + "highQuality": "High-quality mode", + "economy": "Economy mode", + "estimate": "Estimated consumption", + "stop": "Stop processing", + "pause": "Pause", + "resume": "Resume", + "automatic": "Automatic", + "custom": "Custom", + "hierarchical": "Parent-child", + "previewTip": "Paragraph preview will be available after embedding is complete", + "parentMaxTokens": "Parent", + "childMaxTokens": "Child" + }, + "segment": { + "paragraphs": "Paragraphs", + "chunks_one": "CHUNK", + "chunks_other": "CHUNKS", + "parentChunks_one": "PARENT CHUNK", + "parentChunks_other": "PARENT CHUNKS", + "childChunks_one": "CHILD CHUNK", + "childChunks_other": "CHILD CHUNKS", + "searchResults_zero": "RESULT", + "searchResults_one": "RESULT", + "searchResults_other": "RESULTS", + "empty": "No Chunk found", + "clearFilter": "Clear filter", + "chunk": "Chunk", + "parentChunk": "Parent-Chunk", + "newChunk": "New Chunk", + "childChunk": "Child-Chunk", + "newChildChunk": "New Child Chunk", + "keywords": "KEYWORDS", + "addKeyWord": "Add keyword", + "keywordEmpty": "The keyword cannot be empty", + "keywordError": "The maximum length of keyword is 20", + "keywordDuplicate": "The keyword already exists", + "characters_one": "character", + "characters_other": "characters", + "hitCount": "Retrieval count", + "vectorHash": "Vector hash: ", + "questionPlaceholder": "Add question here", + "questionEmpty": "Question can not be empty", + "answerPlaceholder": "Add answer here", + "answerEmpty": "Answer can not be empty", + "contentPlaceholder": "Add content here", + "contentEmpty": "Content can not be empty", + "allFilesUploaded": "All files must be uploaded before saving", + "newTextSegment": "New Text Segment", + "newQaSegment": "New Q&A Segment", + "addChunk": "Add Chunk", + "addChildChunk": "Add Child Chunk", + "addAnother": "Add another", + "delete": "Delete this chunk ?", + "chunkAdded": "1 chunk added", + "childChunkAdded": "1 child chunk added", + "editChunk": "Edit Chunk", + "editParentChunk": "Edit Parent Chunk", + "editChildChunk": "Edit Child Chunk", + "chunkDetail": "Chunk Detail", + "regenerationConfirmTitle": "Do you want to regenerate child chunks?", + "regenerationConfirmMessage": "Regenerating child chunks will overwrite the current child chunks, including edited chunks and newly added chunks. The regeneration cannot be undone.", + "regeneratingTitle": "Regenerating child chunks", + "regeneratingMessage": "This may take a moment, please wait...", + "regenerationSuccessTitle": "Regeneration completed", + "regenerationSuccessMessage": "You can close this window.", + "edited": "EDITED", + "editedAt": "Edited at", + "dateTimeFormat": "MM/DD/YYYY h:mm", + "expandChunks": "Expand chunks", + "collapseChunks": "Collapse chunks" + } +} diff --git a/web/i18n/en-US/dataset-documents.ts b/web/i18n/en-US/dataset-documents.ts deleted file mode 100644 index 97ca08885c..0000000000 --- a/web/i18n/en-US/dataset-documents.ts +++ /dev/null @@ -1,408 +0,0 @@ -const translation = { - list: { - title: 'Documents', - desc: 'All files of the Knowledge are shown here, and the entire Knowledge can be linked to Dify citations or indexed via the Chat plugin.', - learnMore: 'Learn more', - addFile: 'Add file', - addPages: 'Add Pages', - addUrl: 'Add URL', - table: { - header: { - fileName: 'NAME', - chunkingMode: 'CHUNKING MODE', - words: 'WORDS', - hitCount: 'RETRIEVAL COUNT', - uploadTime: 'UPLOAD TIME', - status: 'STATUS', - action: 'ACTION', - }, - rename: 'Rename', - name: 'Name', - }, - action: { - uploadFile: 'Upload new file', - settings: 'Chunking Settings', - addButton: 'Add chunk', - add: 'Add a chunk', - batchAdd: 'Batch add', - archive: 'Archive', - unarchive: 'Unarchive', - delete: 'Delete', - enableWarning: 'Archived file cannot be enabled', - sync: 'Sync', - pause: 'Pause', - resume: 'Resume', - }, - index: { - enable: 'Enable', - disable: 'Disable', - all: 'All', - enableTip: 'The file can be indexed', - disableTip: 'The file cannot be indexed', - }, - sort: { - uploadTime: 'Upload Time', - hitCount: 'Retrieval Count', - }, - status: { - queuing: 'Queuing', - indexing: 'Indexing', - paused: 'Paused', - error: 'Error', - available: 'Available', - enabled: 'Enabled', - disabled: 'Disabled', - archived: 'Archived', - }, - empty: { - title: 'There is no documentation yet', - upload: { - tip: 'You can upload files, sync from the website, or from web apps like Notion, GitHub, etc.', - }, - sync: { - tip: 'Dify will periodically download files from your Notion and complete processing.', - }, - }, - delete: { - title: 'Are you sure Delete?', - content: 'If you need to resume processing later, you will continue from where you left off', - }, - batchModal: { - title: 'Batch add chunks', - csvUploadTitle: 'Drag and drop your CSV file here, or ', - browse: 'browse', - tip: 'The CSV file must conform to the following structure:', - question: 'question', - answer: 'answer', - contentTitle: 'chunk content', - content: 'content', - template: 'Download the template here', - cancel: 'Cancel', - run: 'Run Batch', - runError: 'Run batch failed', - processing: 'In batch processing', - completed: 'Import completed', - error: 'Import Error', - ok: 'OK', - }, - }, - metadata: { - title: 'Metadata', - desc: 'Labeling metadata for documents allows AI to access them in a timely manner and exposes the source of references for users.', - dateTimeFormat: 'MMMM D, YYYY hh:mm A', - docTypeSelectTitle: 'Please select a document type', - docTypeChangeTitle: 'Change document type', - docTypeSelectWarning: - 'If the document type is changed, the now filled metadata will no longer be preserved', - firstMetaAction: 'Let\'s go', - placeholder: { - add: 'Add ', - select: 'Select ', - }, - source: { - upload_file: 'Upload File', - notion: 'Sync form Notion', - github: 'Sync form Github', - local_file: 'Local File', - website_crawl: 'Website Crawl', - online_document: 'Online Document', - }, - type: { - book: 'Book', - webPage: 'Web Page', - paper: 'Paper', - socialMediaPost: 'Social Media Post', - personalDocument: 'Personal Document', - businessDocument: 'Business Document', - IMChat: 'IM Chat', - wikipediaEntry: 'Wikipedia Entry', - notion: 'Sync form Notion', - github: 'Sync form Github', - technicalParameters: 'Technical Parameters', - }, - field: { - processRule: { - processDoc: 'Process Document', - segmentRule: 'Chunk Rule', - segmentLength: 'Chunks Length', - processClean: 'Text Process Clean', - }, - book: { - title: 'Title', - language: 'Language', - author: 'Author', - publisher: 'Publisher', - publicationDate: 'Publication Date', - ISBN: 'ISBN', - category: 'Category', - }, - webPage: { - title: 'Title', - url: 'URL', - language: 'Language', - authorPublisher: 'Author/Publisher', - publishDate: 'Publish Date', - topicKeywords: 'Topic/Keywords', - description: 'Description', - }, - paper: { - title: 'Title', - language: 'Language', - author: 'Author', - publishDate: 'Publish Date', - journalConferenceName: 'Journal/Conference Name', - volumeIssuePage: 'Volume/Issue/Page', - DOI: 'DOI', - topicsKeywords: 'Topics/Keywords', - abstract: 'Abstract', - }, - socialMediaPost: { - platform: 'Platform', - authorUsername: 'Author/Username', - publishDate: 'Publish Date', - postURL: 'Post URL', - topicsTags: 'Topics/Tags', - }, - personalDocument: { - title: 'Title', - author: 'Author', - creationDate: 'Creation Date', - lastModifiedDate: 'Last Modified Date', - documentType: 'Document Type', - tagsCategory: 'Tags/Category', - }, - businessDocument: { - title: 'Title', - author: 'Author', - creationDate: 'Creation Date', - lastModifiedDate: 'Last Modified Date', - documentType: 'Document Type', - departmentTeam: 'Department/Team', - }, - IMChat: { - chatPlatform: 'Chat Platform', - chatPartiesGroupName: 'Chat Parties/Group Name', - participants: 'Participants', - startDate: 'Start Date', - endDate: 'End Date', - topicsKeywords: 'Topics/Keywords', - fileType: 'File Type', - }, - wikipediaEntry: { - title: 'Title', - language: 'Language', - webpageURL: 'Webpage URL', - editorContributor: 'Editor/Contributor', - lastEditDate: 'Last Edit Date', - summaryIntroduction: 'Summary/Introduction', - }, - notion: { - title: 'Title', - language: 'Language', - author: 'Author', - createdTime: 'Created Time', - lastModifiedTime: 'Last Modified Time', - url: 'URL', - tag: 'Tag', - description: 'Description', - }, - github: { - repoName: 'Repo Name', - repoDesc: 'Repo Description', - repoOwner: 'Repo Owner', - fileName: 'File Name', - filePath: 'File Path', - programmingLang: 'Programming Language', - url: 'URL', - license: 'License', - lastCommitTime: 'Last Commit Time', - lastCommitAuthor: 'Last Commit Author', - }, - originInfo: { - originalFilename: 'Original filename', - originalFileSize: 'Original file size', - uploadDate: 'Upload date', - lastUpdateDate: 'Last update date', - source: 'Source', - }, - technicalParameters: { - segmentSpecification: 'Chunks specification', - segmentLength: 'Chunks length', - avgParagraphLength: 'Avg. paragraph length', - paragraphs: 'Paragraphs', - hitCount: 'Retrieval count', - embeddingTime: 'Embedding time', - embeddedSpend: 'Embedded spend', - }, - }, - languageMap: { - zh: 'Chinese', - en: 'English', - es: 'Spanish', - fr: 'French', - de: 'German', - ja: 'Japanese', - ko: 'Korean', - ru: 'Russian', - ar: 'Arabic', - pt: 'Portuguese', - it: 'Italian', - nl: 'Dutch', - pl: 'Polish', - sv: 'Swedish', - tr: 'Turkish', - he: 'Hebrew', - hi: 'Hindi', - da: 'Danish', - fi: 'Finnish', - no: 'Norwegian', - hu: 'Hungarian', - el: 'Greek', - cs: 'Czech', - th: 'Thai', - id: 'Indonesian', - }, - categoryMap: { - book: { - fiction: 'Fiction', - biography: 'Biography', - history: 'History', - science: 'Science', - technology: 'Technology', - education: 'Education', - philosophy: 'Philosophy', - religion: 'Religion', - socialSciences: 'SocialSciences', - art: 'Art', - travel: 'Travel', - health: 'Health', - selfHelp: 'SelfHelp', - businessEconomics: 'BusinessEconomics', - cooking: 'Cooking', - childrenYoungAdults: 'ChildrenYoungAdults', - comicsGraphicNovels: 'ComicsGraphicNovels', - poetry: 'Poetry', - drama: 'Drama', - other: 'Other', - }, - personalDoc: { - notes: 'Notes', - blogDraft: 'Blog Draft', - diary: 'Diary', - researchReport: 'Research Report', - bookExcerpt: 'Book Excerpt', - schedule: 'Schedule', - list: 'List', - projectOverview: 'Project Overview', - photoCollection: 'Photo Collection', - creativeWriting: 'Creative Writing', - codeSnippet: 'Code Snippet', - designDraft: 'Design Draft', - personalResume: 'Personal Resume', - other: 'Other', - }, - businessDoc: { - meetingMinutes: 'Meeting Minutes', - researchReport: 'Research Report', - proposal: 'Proposal', - employeeHandbook: 'Employee Handbook', - trainingMaterials: 'Training Materials', - requirementsDocument: 'Requirements Document', - designDocument: 'Design Document', - productSpecification: 'Product Specification', - financialReport: 'Financial Report', - marketAnalysis: 'Market Analysis', - projectPlan: 'Project Plan', - teamStructure: 'Team Structure', - policiesProcedures: 'Policies & Procedures', - contractsAgreements: 'Contracts & Agreements', - emailCorrespondence: 'Email Correspondence', - other: 'Other', - }, - }, - }, - embedding: { - waiting: 'Embedding waiting...', - processing: 'Embedding processing...', - paused: 'Embedding paused', - completed: 'Embedding completed', - error: 'Embedding error', - docName: 'Preprocessing document', - mode: 'Chunking Setting', - segmentLength: 'Maximum Chunk Length', - textCleaning: 'Text Preprocessing Rules', - segments: 'Paragraphs', - highQuality: 'High-quality mode', - economy: 'Economy mode', - estimate: 'Estimated consumption', - stop: 'Stop processing', - pause: 'Pause', - resume: 'Resume', - automatic: 'Automatic', - custom: 'Custom', - hierarchical: 'Parent-child', - previewTip: 'Paragraph preview will be available after embedding is complete', - parentMaxTokens: 'Parent', - childMaxTokens: 'Child', - }, - segment: { - paragraphs: 'Paragraphs', - chunks_one: 'CHUNK', - chunks_other: 'CHUNKS', - parentChunks_one: 'PARENT CHUNK', - parentChunks_other: 'PARENT CHUNKS', - childChunks_one: 'CHILD CHUNK', - childChunks_other: 'CHILD CHUNKS', - searchResults_zero: 'RESULT', - searchResults_one: 'RESULT', - searchResults_other: 'RESULTS', - empty: 'No Chunk found', - clearFilter: 'Clear filter', - chunk: 'Chunk', - parentChunk: 'Parent-Chunk', - newChunk: 'New Chunk', - childChunk: 'Child-Chunk', - newChildChunk: 'New Child Chunk', - keywords: 'KEYWORDS', - addKeyWord: 'Add keyword', - keywordEmpty: 'The keyword cannot be empty', - keywordError: 'The maximum length of keyword is 20', - keywordDuplicate: 'The keyword already exists', - characters_one: 'character', - characters_other: 'characters', - hitCount: 'Retrieval count', - vectorHash: 'Vector hash: ', - questionPlaceholder: 'Add question here', - questionEmpty: 'Question can not be empty', - answerPlaceholder: 'Add answer here', - answerEmpty: 'Answer can not be empty', - contentPlaceholder: 'Add content here', - contentEmpty: 'Content can not be empty', - allFilesUploaded: 'All files must be uploaded before saving', - newTextSegment: 'New Text Segment', - newQaSegment: 'New Q&A Segment', - addChunk: 'Add Chunk', - addChildChunk: 'Add Child Chunk', - addAnother: 'Add another', - delete: 'Delete this chunk ?', - chunkAdded: '1 chunk added', - childChunkAdded: '1 child chunk added', - editChunk: 'Edit Chunk', - editParentChunk: 'Edit Parent Chunk', - editChildChunk: 'Edit Child Chunk', - chunkDetail: 'Chunk Detail', - regenerationConfirmTitle: 'Do you want to regenerate child chunks?', - regenerationConfirmMessage: 'Regenerating child chunks will overwrite the current child chunks, including edited chunks and newly added chunks. The regeneration cannot be undone.', - regeneratingTitle: 'Regenerating child chunks', - regeneratingMessage: 'This may take a moment, please wait...', - regenerationSuccessTitle: 'Regeneration completed', - regenerationSuccessMessage: 'You can close this window.', - edited: 'EDITED', - editedAt: 'Edited at', - dateTimeFormat: 'MM/DD/YYYY h:mm', - expandChunks: 'Expand chunks', - collapseChunks: 'Collapse chunks', - }, -} - -export default translation diff --git a/web/i18n/en-US/dataset-hit-testing.json b/web/i18n/en-US/dataset-hit-testing.json new file mode 100644 index 0000000000..10bd513656 --- /dev/null +++ b/web/i18n/en-US/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "Retrieval Test", + "settingTitle": "Retrieval Setting", + "desc": "Test the hitting effect of the Knowledge based on the given query text.", + "dateTimeFormat": "MM/DD/YYYY hh:mm A", + "records": "Records", + "table": { + "header": { + "source": "Source", + "queryContent": "Query Content", + "time": "Time" + } + }, + "input": { + "title": "Source text", + "placeholder": "Please enter a text, a short declarative sentence is recommended.", + "countWarning": "Up to 200 characters.", + "indexWarning": "High quality Knowledge only.", + "testing": "Test" + }, + "hit": { + "title": "{{num}} Retrieved Chunks", + "emptyTip": "Retrieval Testing results will show here" + }, + "noRecentTip": "No recent query results here", + "viewChart": "View VECTOR CHART", + "viewDetail": "View Detail", + "chunkDetail": "Chunk Detail", + "hitChunks": "Hit {{num}} child chunks", + "open": "Open", + "keyword": "Keywords", + "imageUploader": { + "tip": "Upload or drop images (Max {{batchCount}}, {{size}}MB each)", + "tooltip": "Upload images (Max {{batchCount}}, {{size}}MB each)", + "dropZoneTip": "Drag file here to upload", + "singleChunkAttachmentLimitTooltip": "The number of single chunk attachments cannot exceed {{limit}}" + } +} diff --git a/web/i18n/en-US/dataset-hit-testing.ts b/web/i18n/en-US/dataset-hit-testing.ts deleted file mode 100644 index 37354c6f82..0000000000 --- a/web/i18n/en-US/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - title: 'Retrieval Test', - settingTitle: 'Retrieval Setting', - desc: 'Test the hitting effect of the Knowledge based on the given query text.', - dateTimeFormat: 'MM/DD/YYYY hh:mm A', - records: 'Records', - table: { - header: { - source: 'Source', - queryContent: 'Query Content', - time: 'Time', - }, - }, - input: { - title: 'Source text', - placeholder: 'Please enter a text, a short declarative sentence is recommended.', - countWarning: 'Up to 200 characters.', - indexWarning: 'High quality Knowledge only.', - testing: 'Test', - }, - hit: { - title: '{{num}} Retrieved Chunks', - emptyTip: 'Retrieval Testing results will show here', - }, - noRecentTip: 'No recent query results here', - viewChart: 'View VECTOR CHART', - viewDetail: 'View Detail', - chunkDetail: 'Chunk Detail', - hitChunks: 'Hit {{num}} child chunks', - open: 'Open', - keyword: 'Keywords', - imageUploader: { - tip: 'Upload or drop images (Max {{batchCount}}, {{size}}MB each)', - tooltip: 'Upload images (Max {{batchCount}}, {{size}}MB each)', - dropZoneTip: 'Drag file here to upload', - singleChunkAttachmentLimitTooltip: 'The number of single chunk attachments cannot exceed {{limit}}', - }, -} - -export default translation diff --git a/web/i18n/en-US/dataset-pipeline.json b/web/i18n/en-US/dataset-pipeline.json new file mode 100644 index 0000000000..a844dfaed6 --- /dev/null +++ b/web/i18n/en-US/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "backToKnowledge": "Back to Knowledge", + "createFromScratch": { + "title": "Blank knowledge pipeline", + "description": "Create a custom pipeline from scratch with full control over data processing and structure." + }, + "importDSL": "Import from a DSL file", + "createKnowledge": "Create Knowledge", + "errorTip": "Failed to create a Knowledge Base", + "successTip": "Successfully created a Knowledge Base", + "caution": "Caution" + }, + "templates": { + "customized": "Customized" + }, + "operations": { + "choose": "Choose", + "details": "Details", + "editInfo": "Edit info", + "useTemplate": "Use this Knowledge Pipeline", + "backToDataSource": "Back to Data Source", + "process": "Process", + "dataSource": "Data Source", + "saveAndProcess": "Save & Process", + "preview": "Preview", + "exportPipeline": "Export Pipeline", + "convert": "Convert" + }, + "knowledgeNameAndIcon": "Knowledge name & icon", + "knowledgeNameAndIconPlaceholder": "Please enter the name of the Knowledge Base", + "knowledgeDescription": "Knowledge description", + "knowledgeDescriptionPlaceholder": "Describe what is in this Knowledge Base. A detailed description allows AI to access the content of the dataset more accurately. If empty, Dify will use the default hit strategy. (Optional)", + "knowledgePermissions": "Permissions", + "editPipelineInfo": "Edit pipeline info", + "pipelineNameAndIcon": "Pipeline name & icon", + "deletePipeline": { + "title": "Are you sure to delete this pipeline template?", + "content": "Deleting the pipeline template is irreversible." + }, + "publishPipeline": { + "success": { + "message": "Knowledge Pipeline Published", + "tip": "Go to Documents to add or manage documents." + }, + "error": { + "message": "Failed to Publish Knowledge Pipeline" + } + }, + "publishTemplate": { + "success": { + "message": "Pipeline Template Published", + "tip": "You can use this template on the creation page.", + "learnMore": "Learn more" + }, + "error": { + "message": "Failed to Publish Pipeline Template" + } + }, + "exportDSL": { + "successTip": "Export pipeline DSL successfully", + "errorTip": "Failed to export pipeline DSL" + }, + "details": { + "createdBy": "By {{author}}", + "structure": "Structure", + "structureTooltip": "Chunk Structure determines how documents are split and indexed—offering General, Parent-Child, and Q&A modes—and is unique to each knowledge base." + }, + "testRun": { + "title": "Test Run", + "tooltip": "In test run mode, only one document is allowed to be imported at a time for easier debugging and observation.", + "steps": { + "dataSource": "Data Source", + "documentProcessing": "Document Processing" + }, + "dataSource": { + "localFiles": "Local Files" + }, + "notion": { + "title": "Choose Notion Pages", + "docTitle": "Notion docs" + } + }, + "inputField": "Input Field", + "inputFieldPanel": { + "title": "User Input Fields", + "description": "User input fields are used to define and collect variables required during the pipeline execution process. Users can customize the field type and flexibly configure the input value to meet the needs of different data sources or document processing steps.", + "uniqueInputs": { + "title": "Unique Inputs for Each Entrance", + "tooltip": "Unique Inputs are only accessible to the selected data source and its downstream nodes. Users won't need to fill it in when choosing other data sources. Only input fields referenced by data source variables will appear in the first step(Data Source). All other fields will be shown in the second step(Process Documents)." + }, + "globalInputs": { + "title": "Global Inputs for All Entrances", + "tooltip": "Global Inputs are shared across all nodes. Users will need to fill them in when selecting any data source. For example, fields like delimiter and maximum chunk length can be uniformly applied across multiple data sources. Only input fields referenced by Data Source variables appear in the first step (Data Source). All other fields show up in the second step (Process Documents)." + }, + "addInputField": "Add Input Field", + "editInputField": "Edit Input Field", + "preview": { + "stepOneTitle": "Data Source", + "stepTwoTitle": "Process Documents" + }, + "error": { + "variableDuplicate": "Variable name already exists. Please choose a different name." + } + }, + "addDocuments": { + "title": "Add Documents", + "steps": { + "chooseDatasource": "Choose a Data Source", + "processDocuments": "Process Documents", + "processingDocuments": "Processing Documents" + }, + "backToDataSource": "Data Source", + "stepOne": { + "preview": "Preview" + }, + "stepTwo": { + "chunkSettings": "Chunk Settings", + "previewChunks": "Preview Chunks" + }, + "stepThree": { + "learnMore": "Learn more" + }, + "characters": "characters", + "selectOnlineDocumentTip": "Process up to {{count}} pages", + "selectOnlineDriveTip": "Process up to {{count}} files, maximum {{fileSize}} MB each" + }, + "documentSettings": { + "title": "Document Settings" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} pages" + }, + "onlineDrive": { + "notConnected": "{{name}} is not connected", + "notConnectedTip": "To sync with {{name}}, connection to {{name}} must be established first.", + "breadcrumbs": { + "allBuckets": "All Cloud Storage Buckets", + "allFiles": "All Files", + "searchResult": "Find {{searchResultsLength}} items in \"{{folderName}}\" folder", + "searchPlaceholder": "Search files..." + }, + "notSupportedFileType": "This file type is not supported", + "emptyFolder": "This folder is empty", + "emptySearchResult": "No items were found", + "resetKeywords": "Reset keywords" + }, + "configurationTip": "Configure {{pluginName}}", + "conversion": { + "title": "Convert to Knowledge Pipeline", + "descriptionChunk1": "You can now convert your existing knowledge base to use the Knowledge Pipeline for document processing", + "descriptionChunk2": " — a more open and flexible approach with access to plugins from our marketplace. This will apply the new processing method to all future documents.", + "warning": "This action cannot be undone.", + "confirm": { + "title": "Confirmation", + "content": "This action is permanent. You won't be able to revert to the previous method.Please confirm to convert." + }, + "errorMessage": "Failed to convert the dataset to a pipeline", + "successMessage": "Successfully converted the dataset to a pipeline" + } +} diff --git a/web/i18n/en-US/dataset-pipeline.ts b/web/i18n/en-US/dataset-pipeline.ts deleted file mode 100644 index 29237e844a..0000000000 --- a/web/i18n/en-US/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - backToKnowledge: 'Back to Knowledge', - createFromScratch: { - title: 'Blank knowledge pipeline', - description: 'Create a custom pipeline from scratch with full control over data processing and structure.', - }, - importDSL: 'Import from a DSL file', - createKnowledge: 'Create Knowledge', - errorTip: 'Failed to create a Knowledge Base', - successTip: 'Successfully created a Knowledge Base', - caution: 'Caution', - }, - templates: { - customized: 'Customized', - }, - operations: { - choose: 'Choose', - details: 'Details', - editInfo: 'Edit info', - useTemplate: 'Use this Knowledge Pipeline', - backToDataSource: 'Back to Data Source', - process: 'Process', - dataSource: 'Data Source', - saveAndProcess: 'Save & Process', - preview: 'Preview', - exportPipeline: 'Export Pipeline', - convert: 'Convert', - }, - knowledgeNameAndIcon: 'Knowledge name & icon', - knowledgeNameAndIconPlaceholder: 'Please enter the name of the Knowledge Base', - knowledgeDescription: 'Knowledge description', - knowledgeDescriptionPlaceholder: 'Describe what is in this Knowledge Base. A detailed description allows AI to access the content of the dataset more accurately. If empty, Dify will use the default hit strategy. (Optional)', - knowledgePermissions: 'Permissions', - editPipelineInfo: 'Edit pipeline info', - pipelineNameAndIcon: 'Pipeline name & icon', - deletePipeline: { - title: 'Are you sure to delete this pipeline template?', - content: 'Deleting the pipeline template is irreversible.', - }, - publishPipeline: { - success: { - message: 'Knowledge Pipeline Published', - tip: 'Go to Documents to add or manage documents.', - }, - error: { - message: 'Failed to Publish Knowledge Pipeline', - }, - }, - publishTemplate: { - success: { - message: 'Pipeline Template Published', - tip: 'You can use this template on the creation page.', - learnMore: 'Learn more', - }, - error: { - message: 'Failed to Publish Pipeline Template', - }, - }, - exportDSL: { - successTip: 'Export pipeline DSL successfully', - errorTip: 'Failed to export pipeline DSL', - }, - details: { - createdBy: 'By {{author}}', - structure: 'Structure', - structureTooltip: 'Chunk Structure determines how documents are split and indexed—offering General, Parent-Child, and Q&A modes—and is unique to each knowledge base.', - }, - testRun: { - title: 'Test Run', - tooltip: 'In test run mode, only one document is allowed to be imported at a time for easier debugging and observation.', - steps: { - dataSource: 'Data Source', - documentProcessing: 'Document Processing', - }, - dataSource: { - localFiles: 'Local Files', - }, - notion: { - title: 'Choose Notion Pages', - docTitle: 'Notion docs', - }, - }, - inputField: 'Input Field', - inputFieldPanel: { - title: 'User Input Fields', - description: 'User input fields are used to define and collect variables required during the pipeline execution process. Users can customize the field type and flexibly configure the input value to meet the needs of different data sources or document processing steps.', - uniqueInputs: { - title: 'Unique Inputs for Each Entrance', - tooltip: 'Unique Inputs are only accessible to the selected data source and its downstream nodes. Users won\'t need to fill it in when choosing other data sources. Only input fields referenced by data source variables will appear in the first step(Data Source). All other fields will be shown in the second step(Process Documents).', - }, - globalInputs: { - title: 'Global Inputs for All Entrances', - tooltip: 'Global Inputs are shared across all nodes. Users will need to fill them in when selecting any data source. For example, fields like delimiter and maximum chunk length can be uniformly applied across multiple data sources. Only input fields referenced by Data Source variables appear in the first step (Data Source). All other fields show up in the second step (Process Documents).', - }, - addInputField: 'Add Input Field', - editInputField: 'Edit Input Field', - preview: { - stepOneTitle: 'Data Source', - stepTwoTitle: 'Process Documents', - }, - error: { - variableDuplicate: 'Variable name already exists. Please choose a different name.', - }, - }, - addDocuments: { - title: 'Add Documents', - steps: { - chooseDatasource: 'Choose a Data Source', - processDocuments: 'Process Documents', - processingDocuments: 'Processing Documents', - }, - backToDataSource: 'Data Source', - stepOne: { - preview: 'Preview', - }, - stepTwo: { - chunkSettings: 'Chunk Settings', - previewChunks: 'Preview Chunks', - }, - stepThree: { - learnMore: 'Learn more', - }, - characters: 'characters', - selectOnlineDocumentTip: 'Process up to {{count}} pages', - selectOnlineDriveTip: 'Process up to {{count}} files, maximum {{fileSize}} MB each', - }, - documentSettings: { - title: 'Document Settings', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} pages', - }, - onlineDrive: { - notConnected: '{{name}} is not connected', - notConnectedTip: 'To sync with {{name}}, connection to {{name}} must be established first.', - breadcrumbs: { - allBuckets: 'All Cloud Storage Buckets', - allFiles: 'All Files', - searchResult: 'Find {{searchResultsLength}} items in "{{folderName}}" folder', - searchPlaceholder: 'Search files...', - }, - notSupportedFileType: 'This file type is not supported', - emptyFolder: 'This folder is empty', - emptySearchResult: 'No items were found', - resetKeywords: 'Reset keywords', - }, - configurationTip: 'Configure {{pluginName}}', - conversion: { - title: 'Convert to Knowledge Pipeline', - descriptionChunk1: 'You can now convert your existing knowledge base to use the Knowledge Pipeline for document processing', - descriptionChunk2: ' — a more open and flexible approach with access to plugins from our marketplace. This will apply the new processing method to all future documents.', - warning: 'This action cannot be undone.', - confirm: { - title: 'Confirmation', - content: 'This action is permanent. You won\'t be able to revert to the previous method.Please confirm to convert.', - }, - errorMessage: 'Failed to convert the dataset to a pipeline', - successMessage: 'Successfully converted the dataset to a pipeline', - }, -} - -export default translation diff --git a/web/i18n/en-US/dataset-settings.json b/web/i18n/en-US/dataset-settings.json new file mode 100644 index 0000000000..fe3859d261 --- /dev/null +++ b/web/i18n/en-US/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "Knowledge settings", + "desc": "Here you can modify the properties and retrieval settings of this Knowledge.", + "form": { + "name": "Knowledge Name", + "nameAndIcon": "Name & Icon", + "namePlaceholder": "Please enter the Knowledge name", + "nameError": "Name cannot be empty", + "desc": "Description", + "descInfo": "Please write a clear textual description to outline the content of the Knowledge. This description will be used as a basis for matching when selecting from multiple Knowledge for inference.", + "descPlaceholder": "Describe what is in this data set. A detailed description allows AI to access the content of the data set in a timely manner. If empty, Dify will use the default hit strategy.", + "helpText": "Learn how to write a good dataset description.", + "descWrite": "Learn how to write a good Knowledge description.", + "permissions": "Permissions", + "permissionsOnlyMe": "Only me", + "permissionsAllMember": "All team members", + "permissionsInvitedMembers": "Partial team members", + "me": "(You)", + "onSearchResults": "No members match your search query.\nTry your search again.", + "chunkStructure": { + "title": "Chunk Structure", + "learnMore": "Learn more", + "description": " about Chunk Structure." + }, + "indexMethod": "Index Method", + "indexMethodHighQuality": "High Quality", + "indexMethodHighQualityTip": "Calling the embedding model to process documents for more precise retrieval helps LLM generate high-quality answers.", + "upgradeHighQualityTip": "Once upgrading to High Quality mode, reverting to Economical mode is not available", + "indexMethodEconomy": "Economical", + "indexMethodEconomyTip": "Using {{count}} keywords per chunk for retrieval, no tokens are consumed at the expense of reduced retrieval accuracy.", + "numberOfKeywords": "Number of Keywords", + "embeddingModel": "Embedding Model", + "embeddingModelTip": "Change the embedded model, please go to ", + "embeddingModelTipLink": "Settings", + "retrievalSetting": { + "title": "Retrieval Setting", + "method": "Retrieval Method", + "learnMore": "Learn more", + "description": " about retrieval method.", + "longDescription": " about retrieval method, you can change this at any time in the Knowledge settings.", + "multiModalTip": "When embedding model supports multi-modal, please select a multi-modal rerank model for better performance." + }, + "externalKnowledgeAPI": "External Knowledge API", + "externalKnowledgeID": "External Knowledge ID", + "retrievalSettings": "Retrieval Settings", + "save": "Save", + "indexMethodChangeToEconomyDisabledTip": "Not available for downgrading from HQ to ECO", + "searchModel": "Search model" + } +} diff --git a/web/i18n/en-US/dataset-settings.ts b/web/i18n/en-US/dataset-settings.ts deleted file mode 100644 index 9eddcc6cb2..0000000000 --- a/web/i18n/en-US/dataset-settings.ts +++ /dev/null @@ -1,52 +0,0 @@ -const translation = { - title: 'Knowledge settings', - desc: 'Here you can modify the properties and retrieval settings of this Knowledge.', - form: { - name: 'Knowledge Name', - nameAndIcon: 'Name & Icon', - namePlaceholder: 'Please enter the Knowledge name', - nameError: 'Name cannot be empty', - desc: 'Description', - descInfo: 'Please write a clear textual description to outline the content of the Knowledge. This description will be used as a basis for matching when selecting from multiple Knowledge for inference.', - descPlaceholder: 'Describe what is in this data set. A detailed description allows AI to access the content of the data set in a timely manner. If empty, Dify will use the default hit strategy.', - helpText: 'Learn how to write a good dataset description.', - descWrite: 'Learn how to write a good Knowledge description.', - permissions: 'Permissions', - permissionsOnlyMe: 'Only me', - permissionsAllMember: 'All team members', - permissionsInvitedMembers: 'Partial team members', - me: '(You)', - onSearchResults: 'No members match your search query.\nTry your search again.', - chunkStructure: { - title: 'Chunk Structure', - learnMore: 'Learn more', - description: ' about Chunk Structure.', - }, - indexMethod: 'Index Method', - indexMethodHighQuality: 'High Quality', - indexMethodHighQualityTip: 'Calling the embedding model to process documents for more precise retrieval helps LLM generate high-quality answers.', - upgradeHighQualityTip: 'Once upgrading to High Quality mode, reverting to Economical mode is not available', - indexMethodEconomy: 'Economical', - indexMethodEconomyTip: 'Using {{count}} keywords per chunk for retrieval, no tokens are consumed at the expense of reduced retrieval accuracy.', - numberOfKeywords: 'Number of Keywords', - embeddingModel: 'Embedding Model', - embeddingModelTip: 'Change the embedded model, please go to ', - embeddingModelTipLink: 'Settings', - retrievalSetting: { - title: 'Retrieval Setting', - method: 'Retrieval Method', - learnMore: 'Learn more', - description: ' about retrieval method.', - longDescription: ' about retrieval method, you can change this at any time in the Knowledge settings.', - multiModalTip: 'When embedding model supports multi-modal, please select a multi-modal rerank model for better performance.', - }, - externalKnowledgeAPI: 'External Knowledge API', - externalKnowledgeID: 'External Knowledge ID', - retrievalSettings: 'Retrieval Settings', - save: 'Save', - indexMethodChangeToEconomyDisabledTip: 'Not available for downgrading from HQ to ECO', - searchModel: 'Search model', - }, -} - -export default translation diff --git a/web/i18n/en-US/dataset.json b/web/i18n/en-US/dataset.json new file mode 100644 index 0000000000..03b98188b1 --- /dev/null +++ b/web/i18n/en-US/dataset.json @@ -0,0 +1,249 @@ +{ + "knowledge": "Knowledge", + "chunkingMode": { + "general": "General", + "parentChild": "Parent-child", + "qa": "Q&A", + "graph": "Graph" + }, + "parentMode": { + "paragraph": "Paragraph", + "fullDoc": "Full-doc" + }, + "externalTag": "External", + "externalAPI": "External API", + "externalAPIPanelTitle": "External Knowledge API", + "externalKnowledgeId": "External Knowledge ID", + "externalKnowledgeName": "External Knowledge Name", + "externalKnowledgeDescription": "Knowledge Description", + "externalKnowledgeIdPlaceholder": "Please enter the Knowledge ID", + "externalKnowledgeNamePlaceholder": "Please enter the name of the knowledge base", + "externalKnowledgeDescriptionPlaceholder": "Describe what's in this Knowledge Base (optional)", + "learnHowToWriteGoodKnowledgeDescription": "Learn how to write a good knowledge description", + "externalAPIPanelDescription": "The external knowledge API is used to connect to a knowledge base outside of Dify and retrieve knowledge from that knowledge base.", + "externalAPIPanelDocumentation": "Learn how to create an External Knowledge API", + "externalKnowledgeBase": "External Knowledge Base", + "localDocs": "Local Docs", + "documentCount": " docs", + "docAllEnabled_one": "{{count}} document enabled", + "docAllEnabled_other": "All {{count}} documents enabled", + "partialEnabled_one": "Total of {{count}} document, {{num}} available", + "partialEnabled_other": "Total of {{count}} documents, {{num}} available", + "wordCount": " k words", + "appCount": " linked apps", + "updated": "Updated", + "createDataset": "Create Knowledge", + "createFromPipeline": "Create from Knowledge Pipeline", + "createNewExternalAPI": "Create a new External Knowledge API", + "noExternalKnowledge": "There is no External Knowledge API yet, click here to create", + "createExternalAPI": "Add an External Knowledge API", + "editExternalAPIFormTitle": "Edit the External Knowledge API", + "editExternalAPITooltipTitle": "LINKED KNOWLEDGE", + "editExternalAPIConfirmWarningContent": { + "front": "This External Knowledge API is linked to", + "end": "external knowledge, and this modification will be applied to all of them. Are you sure you want to save this change?" + }, + "editExternalAPIFormWarning": { + "front": "This External API is linked to", + "end": "external knowledge" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "front": "Delete", + "end": "?" + }, + "content": { + "front": "This External Knowledge API is linked to", + "end": "external knowledge. Deleting this API will invalidate all of them. Are you sure you want to delete this API?" + }, + "noConnectionContent": "Are you sure to delete this API?" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "Choose an External Knowledge API" + }, + "connectDataset": "Connect to an External Knowledge Base", + "connectDatasetIntro": { + "title": "How to Connect to an External Knowledge Base", + "content": { + "front": "To connect to an external knowledge base, you need to create an external API first. Please read carefully and refer to", + "link": "Learn how to create an external API", + "end": ". Then find the corresponding knowledge ID and fill it in the form on the left. If all the information is correct, it will automatically jump to the retrieval test in the knowledge base after clicking the connect button." + }, + "learnMore": "Learn More" + }, + "connectHelper": { + "helper1": "Connect to external knowledge bases via API and knowledge base ID. Currently, ", + "helper2": "only the retrieval functionality is supported", + "helper3": ". We strongly recommend that you ", + "helper4": "read the help documentation", + "helper5": " carefully before using this feature." + }, + "createDatasetIntro": "Import your own text data or write data in real-time via Webhook for LLM context enhancement.", + "deleteDatasetConfirmTitle": "Delete this Knowledge?", + "deleteDatasetConfirmContent": "Deleting the Knowledge is irreversible. Users will no longer be able to access your Knowledge, and all prompt configurations and logs will be permanently deleted.", + "datasetUsedByApp": "The knowledge is being used by some apps. Apps will no longer be able to use this Knowledge, and all prompt configurations and logs will be permanently deleted.", + "datasetDeleted": "Knowledge deleted", + "datasetDeleteFailed": "Failed to delete Knowledge", + "didYouKnow": "Did you know?", + "intro1": "The Knowledge can be integrated into the Dify application ", + "intro2": "as a context", + "intro3": ",", + "intro4": "or it ", + "intro5": "can be published", + "intro6": " as an independent service.", + "unavailable": "Unavailable", + "datasets": "KNOWLEDGE", + "datasetsApi": "API ACCESS", + "externalKnowledgeForm": { + "connect": "Connect", + "cancel": "Cancel" + }, + "externalAPIForm": { + "name": "Name", + "endpoint": "API Endpoint", + "apiKey": "API Key", + "save": "Save", + "cancel": "Cancel", + "edit": "Edit", + "encrypted": { + "front": "Your API Token will be encrypted and stored using", + "end": "technology." + } + }, + "retrieval": { + "semantic_search": { + "title": "Vector Search", + "description": "Generate query embeddings and search for the text chunk most similar to its vector representation." + }, + "full_text_search": { + "title": "Full-Text Search", + "description": "Index all terms in the document, allowing users to search any term and retrieve relevant text chunk containing those terms." + }, + "hybrid_search": { + "title": "Hybrid Search", + "description": "Execute full-text search and vector searches simultaneously, re-rank to select the best match for the user's query. Users can choose to set weights or configure to a Rerank model.", + "recommend": "Recommend" + }, + "keyword_search": { + "title": "Inverted Index", + "description": "Inverted Index is a structure used for efficient retrieval. Organized by terms, each term points to documents or web pages containing it." + }, + "change": "Change", + "changeRetrievalMethod": "Change retrieval method" + }, + "docsFailedNotice": "documents indexed failed", + "retry": "Retry", + "documentsDisabled": "{{num}} documents disabled - inactive for over 30 days", + "enable": "Enable", + "indexingTechnique": { + "high_quality": "HQ", + "economy": "ECO" + }, + "indexingMethod": { + "semantic_search": "VECTOR", + "full_text_search": "FULL TEXT", + "hybrid_search": "HYBRID", + "invertedIndex": "INVERTED" + }, + "defaultRetrievalTip": "Multi-path retrieval is used by default. Knowledge is retrieved from multiple knowledge bases and then re-ranked.", + "mixtureHighQualityAndEconomicTip": "The Rerank model is required for mixture of high quality and economical knowledge bases.", + "inconsistentEmbeddingModelTip": "The Rerank model is required if the Embedding models of the selected knowledge bases are inconsistent.", + "mixtureInternalAndExternalTip": "The Rerank model is required for mixture of internal and external knowledge.", + "allExternalTip": "When using external knowledge only, the user can choose whether to enable the Rerank model. If not enabled, retrieved chunks will be sorted based on scores. When the retrieval strategies of different knowledge bases are inconsistent, it will be inaccurate.", + "retrievalSettings": "Retrieval Setting", + "rerankSettings": "Rerank Setting", + "weightedScore": { + "title": "Weighted Score", + "description": "By adjusting the weights assigned, this rerank strategy determines whether to prioritize semantic or keyword matching.", + "semanticFirst": "Semantic first", + "keywordFirst": "Keyword first", + "customized": "Customized", + "semantic": "Semantic", + "keyword": "Keyword" + }, + "nTo1RetrievalLegacy": "N-to-1 retrieval will be officially deprecated from September. It is recommended to use the latest Multi-path retrieval to obtain better results. ", + "nTo1RetrievalLegacyLink": "Learn more", + "nTo1RetrievalLegacyLinkText": " N-to-1 retrieval will be officially deprecated in September.", + "batchAction": { + "selected": "Selected", + "enable": "Enable", + "disable": "Disable", + "archive": "Archive", + "delete": "Delete", + "cancel": "Cancel" + }, + "preprocessDocument": "{{num}} Preprocess Documents", + "allKnowledge": "All Knowledge", + "allKnowledgeDescription": "Select to display all knowledge in this workspace. Only the Workspace Owner can manage all knowledge.", + "embeddingModelNotAvailable": "Embedding model is unavailable.", + "metadata": { + "metadata": "Metadata", + "addMetadata": "Add Metadata", + "chooseTime": "Choose a time...", + "createMetadata": { + "title": "New Metadata", + "back": "Back", + "type": "Type", + "name": "Name", + "namePlaceholder": "Add metadata name" + }, + "checkName": { + "empty": "Metadata name cannot be empty", + "invalid": "Metadata name can only contain lowercase letters, numbers, and underscores and must start with a lowercase letter", + "tooLong": "Metadata name cannot exceed {{max}} characters" + }, + "batchEditMetadata": { + "editMetadata": "Edit Metadata", + "editDocumentsNum": "Editing {{num}} documents", + "applyToAllSelectDocument": "Apply to all selected documents", + "applyToAllSelectDocumentTip": "Automatically create all the above edited and new metadata for all selected documents, otherwise editing metadata will only apply to documents with it.", + "multipleValue": "Multiple Value" + }, + "selectMetadata": { + "search": "Search metadata", + "newAction": "New Metadata", + "manageAction": "Manage" + }, + "datasetMetadata": { + "description": "You can manage all metadata in this knowledge here. Modifications will be synchronized to every document.", + "addMetaData": "Add Metadata", + "values": "{{num}} Values", + "disabled": "Disabled", + "rename": "Rename", + "name": "Name", + "namePlaceholder": "Metadata name", + "builtIn": "Built-in", + "builtInDescription": "Built-in metadata is automatically extracted and generated. It must be enabled before use and cannot be edited.", + "deleteTitle": "Confirm to delete", + "deleteContent": "Are you sure you want to delete the metadata \"{{name}}\"" + }, + "documentMetadata": { + "metadataToolTip": "Metadata serves as a critical filter that enhances the accuracy and relevance of information retrieval. You can modify and add metadata for this document here.", + "startLabeling": "Start Labeling", + "documentInformation": "Document Information", + "technicalParameters": "Technical Parameters" + } + }, + "serviceApi": { + "title": "Service API", + "enabled": "In Service", + "disabled": "Disabled", + "card": { + "title": "Backend service api", + "endpoint": "Service API Endpoint", + "apiKey": "API Key", + "apiReference": "API Reference" + } + }, + "cornerLabel": { + "unavailable": "Unavailable", + "pipeline": "Pipeline" + }, + "multimodal": "Multimodal", + "imageUploader": { + "button": "Drag and drop file or folder, or", + "browse": "Browse", + "tip": "{{supportTypes}} (Max {{batchCount}}, {{size}}MB each)", + "fileSizeLimitExceeded": "File size exceeds the {{size}}MB limit" + } +} diff --git a/web/i18n/en-US/dataset.ts b/web/i18n/en-US/dataset.ts deleted file mode 100644 index ee1997f699..0000000000 --- a/web/i18n/en-US/dataset.ts +++ /dev/null @@ -1,252 +0,0 @@ -const translation = { - knowledge: 'Knowledge', - chunkingMode: { - general: 'General', - parentChild: 'Parent-child', - qa: 'Q&A', - graph: 'Graph', - }, - parentMode: { - paragraph: 'Paragraph', - fullDoc: 'Full-doc', - }, - externalTag: 'External', - externalAPI: 'External API', - externalAPIPanelTitle: 'External Knowledge API', - externalKnowledgeId: 'External Knowledge ID', - externalKnowledgeName: 'External Knowledge Name', - externalKnowledgeDescription: 'Knowledge Description', - externalKnowledgeIdPlaceholder: 'Please enter the Knowledge ID', - externalKnowledgeNamePlaceholder: 'Please enter the name of the knowledge base', - externalKnowledgeDescriptionPlaceholder: 'Describe what\'s in this Knowledge Base (optional)', - learnHowToWriteGoodKnowledgeDescription: 'Learn how to write a good knowledge description', - externalAPIPanelDescription: 'The external knowledge API is used to connect to a knowledge base outside of Dify and retrieve knowledge from that knowledge base.', - externalAPIPanelDocumentation: 'Learn how to create an External Knowledge API', - externalKnowledgeBase: 'External Knowledge Base', - localDocs: 'Local Docs', - documentCount: ' docs', - docAllEnabled_one: '{{count}} document enabled', - docAllEnabled_other: 'All {{count}} documents enabled', - partialEnabled_one: 'Total of {{count}} document, {{num}} available', - partialEnabled_other: 'Total of {{count}} documents, {{num}} available', - wordCount: ' k words', - appCount: ' linked apps', - updated: 'Updated', - createDataset: 'Create Knowledge', - createFromPipeline: 'Create from Knowledge Pipeline', - createNewExternalAPI: 'Create a new External Knowledge API', - noExternalKnowledge: 'There is no External Knowledge API yet, click here to create', - createExternalAPI: 'Add an External Knowledge API', - editExternalAPIFormTitle: 'Edit the External Knowledge API', - editExternalAPITooltipTitle: 'LINKED KNOWLEDGE', - editExternalAPIConfirmWarningContent: { - front: 'This External Knowledge API is linked to', - end: 'external knowledge, and this modification will be applied to all of them. Are you sure you want to save this change?', - }, - editExternalAPIFormWarning: { - front: 'This External API is linked to', - end: 'external knowledge', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - front: 'Delete', - end: '?', - }, - content: { - front: 'This External Knowledge API is linked to', - end: 'external knowledge. Deleting this API will invalidate all of them. Are you sure you want to delete this API?', - }, - noConnectionContent: 'Are you sure to delete this API?', - }, - selectExternalKnowledgeAPI: { - placeholder: 'Choose an External Knowledge API', - }, - connectDataset: 'Connect to an External Knowledge Base', - connectDatasetIntro: { - title: 'How to Connect to an External Knowledge Base', - content: { - front: 'To connect to an external knowledge base, you need to create an external API first. Please read carefully and refer to', - link: 'Learn how to create an external API', - end: '. Then find the corresponding knowledge ID and fill it in the form on the left. If all the information is correct, it will automatically jump to the retrieval test in the knowledge base after clicking the connect button.', - }, - learnMore: 'Learn More', - }, - connectHelper: { - helper1: 'Connect to external knowledge bases via API and knowledge base ID. Currently, ', - helper2: 'only the retrieval functionality is supported', - helper3: '. We strongly recommend that you ', - helper4: 'read the help documentation', - helper5: ' carefully before using this feature.', - }, - createDatasetIntro: 'Import your own text data or write data in real-time via Webhook for LLM context enhancement.', - deleteDatasetConfirmTitle: 'Delete this Knowledge?', - deleteDatasetConfirmContent: - 'Deleting the Knowledge is irreversible. Users will no longer be able to access your Knowledge, and all prompt configurations and logs will be permanently deleted.', - datasetUsedByApp: 'The knowledge is being used by some apps. Apps will no longer be able to use this Knowledge, and all prompt configurations and logs will be permanently deleted.', - datasetDeleted: 'Knowledge deleted', - datasetDeleteFailed: 'Failed to delete Knowledge', - didYouKnow: 'Did you know?', - intro1: 'The Knowledge can be integrated into the Dify application ', - intro2: 'as a context', - intro3: ',', - intro4: 'or it ', - intro5: 'can be published', - intro6: ' as an independent service.', - unavailable: 'Unavailable', - datasets: 'KNOWLEDGE', - datasetsApi: 'API ACCESS', - externalKnowledgeForm: { - connect: 'Connect', - cancel: 'Cancel', - }, - externalAPIForm: { - name: 'Name', - endpoint: 'API Endpoint', - apiKey: 'API Key', - save: 'Save', - cancel: 'Cancel', - edit: 'Edit', - encrypted: { - front: 'Your API Token will be encrypted and stored using', - end: 'technology.', - }, - }, - retrieval: { - semantic_search: { - title: 'Vector Search', - description: 'Generate query embeddings and search for the text chunk most similar to its vector representation.', - }, - full_text_search: { - title: 'Full-Text Search', - description: 'Index all terms in the document, allowing users to search any term and retrieve relevant text chunk containing those terms.', - }, - hybrid_search: { - title: 'Hybrid Search', - description: 'Execute full-text search and vector searches simultaneously, re-rank to select the best match for the user\'s query. Users can choose to set weights or configure to a Rerank model.', - recommend: 'Recommend', - }, - keyword_search: { - title: 'Inverted Index', - description: 'Inverted Index is a structure used for efficient retrieval. Organized by terms, each term points to documents or web pages containing it.', - }, - change: 'Change', - changeRetrievalMethod: 'Change retrieval method', - }, - docsFailedNotice: 'documents indexed failed', - retry: 'Retry', - documentsDisabled: '{{num}} documents disabled - inactive for over 30 days', - enable: 'Enable', - indexingTechnique: { - high_quality: 'HQ', - economy: 'ECO', - }, - indexingMethod: { - semantic_search: 'VECTOR', - full_text_search: 'FULL TEXT', - hybrid_search: 'HYBRID', - invertedIndex: 'INVERTED', - }, - defaultRetrievalTip: 'Multi-path retrieval is used by default. Knowledge is retrieved from multiple knowledge bases and then re-ranked.', - mixtureHighQualityAndEconomicTip: 'The Rerank model is required for mixture of high quality and economical knowledge bases.', - inconsistentEmbeddingModelTip: 'The Rerank model is required if the Embedding models of the selected knowledge bases are inconsistent.', - mixtureInternalAndExternalTip: 'The Rerank model is required for mixture of internal and external knowledge.', - allExternalTip: 'When using external knowledge only, the user can choose whether to enable the Rerank model. If not enabled, retrieved chunks will be sorted based on scores. When the retrieval strategies of different knowledge bases are inconsistent, it will be inaccurate.', - retrievalSettings: 'Retrieval Setting', - rerankSettings: 'Rerank Setting', - weightedScore: { - title: 'Weighted Score', - description: 'By adjusting the weights assigned, this rerank strategy determines whether to prioritize semantic or keyword matching.', - semanticFirst: 'Semantic first', - keywordFirst: 'Keyword first', - customized: 'Customized', - semantic: 'Semantic', - keyword: 'Keyword', - }, - nTo1RetrievalLegacy: 'N-to-1 retrieval will be officially deprecated from September. It is recommended to use the latest Multi-path retrieval to obtain better results. ', - nTo1RetrievalLegacyLink: 'Learn more', - nTo1RetrievalLegacyLinkText: ' N-to-1 retrieval will be officially deprecated in September.', - batchAction: { - selected: 'Selected', - enable: 'Enable', - disable: 'Disable', - archive: 'Archive', - delete: 'Delete', - cancel: 'Cancel', - }, - preprocessDocument: '{{num}} Preprocess Documents', - allKnowledge: 'All Knowledge', - allKnowledgeDescription: 'Select to display all knowledge in this workspace. Only the Workspace Owner can manage all knowledge.', - embeddingModelNotAvailable: 'Embedding model is unavailable.', - metadata: { - metadata: 'Metadata', - addMetadata: 'Add Metadata', - chooseTime: 'Choose a time...', - createMetadata: { - title: 'New Metadata', - back: 'Back', - type: 'Type', - name: 'Name', - namePlaceholder: 'Add metadata name', - }, - checkName: { - empty: 'Metadata name cannot be empty', - invalid: 'Metadata name can only contain lowercase letters, numbers, and underscores and must start with a lowercase letter', - tooLong: 'Metadata name cannot exceed {{max}} characters', - }, - batchEditMetadata: { - editMetadata: 'Edit Metadata', - editDocumentsNum: 'Editing {{num}} documents', - applyToAllSelectDocument: 'Apply to all selected documents', - applyToAllSelectDocumentTip: 'Automatically create all the above edited and new metadata for all selected documents, otherwise editing metadata will only apply to documents with it.', - multipleValue: 'Multiple Value', - }, - selectMetadata: { - search: 'Search metadata', - newAction: 'New Metadata', - manageAction: 'Manage', - }, - datasetMetadata: { - description: 'You can manage all metadata in this knowledge here. Modifications will be synchronized to every document.', - addMetaData: 'Add Metadata', - values: '{{num}} Values', - disabled: 'Disabled', - rename: 'Rename', - name: 'Name', - namePlaceholder: 'Metadata name', - builtIn: 'Built-in', - builtInDescription: 'Built-in metadata is automatically extracted and generated. It must be enabled before use and cannot be edited.', - deleteTitle: 'Confirm to delete', - deleteContent: 'Are you sure you want to delete the metadata "{{name}}"', - }, - documentMetadata: { - metadataToolTip: 'Metadata serves as a critical filter that enhances the accuracy and relevance of information retrieval. You can modify and add metadata for this document here.', - startLabeling: 'Start Labeling', - documentInformation: 'Document Information', - technicalParameters: 'Technical Parameters', - }, - }, - serviceApi: { - title: 'Service API', - enabled: 'In Service', - disabled: 'Disabled', - card: { - title: 'Backend service api', - endpoint: 'Service API Endpoint', - apiKey: 'API Key', - apiReference: 'API Reference', - }, - }, - cornerLabel: { - unavailable: 'Unavailable', - pipeline: 'Pipeline', - }, - multimodal: 'Multimodal', - imageUploader: { - button: 'Drag and drop file or folder, or', - browse: 'Browse', - tip: '{{supportTypes}} (Max {{batchCount}}, {{size}}MB each)', - fileSizeLimitExceeded: 'File size exceeds the {{size}}MB limit', - }, -} - -export default translation diff --git a/web/i18n/en-US/education.json b/web/i18n/en-US/education.json new file mode 100644 index 0000000000..7ab2de7bda --- /dev/null +++ b/web/i18n/en-US/education.json @@ -0,0 +1,74 @@ +{ + "toVerified": "Get Education Verified", + "toVerifiedTip": { + "front": "You are now eligible for Education Verified status. Please enter your education information below to complete the process and receive an", + "coupon": "exclusive 100% coupon", + "end": "for the Dify Professional Plan." + }, + "currentSigned": "CURRENTLY SIGNED IN AS", + "form": { + "schoolName": { + "title": "Your School Name", + "placeholder": "Enter the official, unabbreviated name of your school" + }, + "schoolRole": { + "title": "Your School Role", + "option": { + "student": "Student", + "teacher": "Teacher", + "administrator": "School Administrator" + } + }, + "terms": { + "title": "Terms & Agreements", + "desc": { + "front": "Your information and use of Education Verified status are subject to our", + "and": "and", + "end": ". By submitting:", + "termsOfService": "Terms of Service", + "privacyPolicy": "Privacy Policy" + }, + "option": { + "age": "I confirm I am at least 18 years old", + "inSchool": "I confirm I am enrolled or employed at the institution provided. Dify may request proof of enrollment/employment. If I misrepresent my eligibility, I agree to pay any fees initially waived based on my education status." + } + } + }, + "submit": "Submit", + "submitError": "Form submission failed. Please try again later.", + "learn": "Learn how to get education verified", + "successTitle": "You Have Got Dify Education Verified", + "successContent": "We have issued a 100% discount coupon for the Dify Professional plan to your account. The coupon is valid for one year, please use it within the validity period.", + "rejectTitle": "Your Dify Educational Verification Has Been Rejected", + "rejectContent": "Unfortunately, you are not eligible for Education Verified status and therefore cannot receive the exclusive 100% coupon for the Dify Professional Plan if you use this email address.", + "emailLabel": "Your current email", + "notice": { + "dateFormat": "MM/DD/YYYY", + "expired": { + "title": "Your education status has expired", + "summary": { + "line1": "You can still access and use Dify. ", + "line2": "However, you're no longer eligible for new education discount coupons." + } + }, + "isAboutToExpire": { + "title": "Your education status will expire on {{date}}", + "summary": "Don't worry — this won't affect your current subscription, but you won't get the education discount when it renews unless you verify your status again." + }, + "stillInEducation": { + "title": "Still in education?", + "expired": "Re-verify now to get a new coupon for the upcoming academic year. We'll add it to your account and you can use it for the next upgrade.", + "isAboutToExpire": "Re-verify now to get a new coupon for the upcoming academic year. It'll be saved to your account and ready to use at your next renewal." + }, + "alreadyGraduated": { + "title": "Already graduated?", + "expired": "Feel free to upgrade anytime to get full access to paid features.", + "isAboutToExpire": "Your current subscription will still remain active. When it ends, you'll be moved to the Sandbox plan, or you can upgrade anytime to restore full access to paid features." + }, + "action": { + "dismiss": "Dismiss", + "upgrade": "Upgrade", + "reVerify": "Re-verify" + } + } +} diff --git a/web/i18n/en-US/education.ts b/web/i18n/en-US/education.ts deleted file mode 100644 index 4eb57bc354..0000000000 --- a/web/i18n/en-US/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerified: 'Get Education Verified', - toVerifiedTip: { - front: 'You are now eligible for Education Verified status. Please enter your education information below to complete the process and receive an', - coupon: 'exclusive 100% coupon', - end: 'for the Dify Professional Plan.', - }, - currentSigned: 'CURRENTLY SIGNED IN AS', - form: { - schoolName: { - title: 'Your School Name', - placeholder: 'Enter the official, unabbreviated name of your school', - }, - schoolRole: { - title: 'Your School Role', - option: { - student: 'Student', - teacher: 'Teacher', - administrator: 'School Administrator', - }, - }, - terms: { - title: 'Terms & Agreements', - desc: { - front: 'Your information and use of Education Verified status are subject to our', - and: 'and', - end: '. By submitting:', - termsOfService: 'Terms of Service', - privacyPolicy: 'Privacy Policy', - }, - option: { - age: 'I confirm I am at least 18 years old', - inSchool: 'I confirm I am enrolled or employed at the institution provided. Dify may request proof of enrollment/employment. If I misrepresent my eligibility, I agree to pay any fees initially waived based on my education status.', - }, - }, - }, - submit: 'Submit', - submitError: 'Form submission failed. Please try again later.', - learn: 'Learn how to get education verified', - successTitle: 'You Have Got Dify Education Verified', - successContent: 'We have issued a 100% discount coupon for the Dify Professional plan to your account. The coupon is valid for one year, please use it within the validity period.', - rejectTitle: 'Your Dify Educational Verification Has Been Rejected', - rejectContent: 'Unfortunately, you are not eligible for Education Verified status and therefore cannot receive the exclusive 100% coupon for the Dify Professional Plan if you use this email address.', - emailLabel: 'Your current email', - notice: { - dateFormat: 'MM/DD/YYYY', - expired: { - title: 'Your education status has expired', - summary: { - line1: 'You can still access and use Dify. ', - line2: 'However, you\'re no longer eligible for new education discount coupons.', - }, - }, - isAboutToExpire: { - title: 'Your education status will expire on {{date}}', - summary: 'Don\'t worry — this won\'t affect your current subscription, but you won\'t get the education discount when it renews unless you verify your status again.', - }, - stillInEducation: { - title: 'Still in education?', - expired: 'Re-verify now to get a new coupon for the upcoming academic year. We\'ll add it to your account and you can use it for the next upgrade.', - isAboutToExpire: 'Re-verify now to get a new coupon for the upcoming academic year. It\'ll be saved to your account and ready to use at your next renewal.', - }, - alreadyGraduated: { - title: 'Already graduated?', - expired: 'Feel free to upgrade anytime to get full access to paid features.', - isAboutToExpire: 'Your current subscription will still remain active. When it ends, you\'ll be moved to the Sandbox plan, or you can upgrade anytime to restore full access to paid features.', - }, - action: { - dismiss: 'Dismiss', - upgrade: 'Upgrade', - reVerify: 'Re-verify', - }, - }, -} - -export default translation diff --git a/web/i18n/en-US/explore.json b/web/i18n/en-US/explore.json new file mode 100644 index 0000000000..9b2aab48ac --- /dev/null +++ b/web/i18n/en-US/explore.json @@ -0,0 +1,42 @@ +{ + "title": "Explore", + "sidebar": { + "discovery": "Discovery", + "chat": "Chat", + "workspace": "Workspace", + "action": { + "pin": "Pin", + "unpin": "Unpin", + "rename": "Rename", + "delete": "Delete" + }, + "delete": { + "title": "Delete app", + "content": "Are you sure you want to delete this app?" + } + }, + "apps": { + "title": "Explore Apps", + "description": "Use these template apps instantly or customize your own apps based on the templates.", + "allCategories": "Recommended" + }, + "appCard": { + "addToWorkspace": "Add to Workspace", + "customize": "Customize" + }, + "appCustomize": { + "title": "Create app from {{name}}", + "subTitle": "App icon & name", + "nameRequired": "App name is required" + }, + "category": { + "Agent": "Agent", + "Assistant": "Assistant", + "Writing": "Writing", + "Translate": "Translate", + "Programming": "Programming", + "HR": "HR", + "Workflow": "Workflow", + "Entertainment": "Entertainment" + } +} diff --git a/web/i18n/en-US/explore.ts b/web/i18n/en-US/explore.ts deleted file mode 100644 index 7ae457ce9d..0000000000 --- a/web/i18n/en-US/explore.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - title: 'Explore', - sidebar: { - discovery: 'Discovery', - chat: 'Chat', - workspace: 'Workspace', - action: { - pin: 'Pin', - unpin: 'Unpin', - rename: 'Rename', - delete: 'Delete', - }, - delete: { - title: 'Delete app', - content: 'Are you sure you want to delete this app?', - }, - }, - apps: { - title: 'Explore Apps', - description: 'Use these template apps instantly or customize your own apps based on the templates.', - allCategories: 'Recommended', - }, - appCard: { - addToWorkspace: 'Add to Workspace', - customize: 'Customize', - }, - appCustomize: { - title: 'Create app from {{name}}', - subTitle: 'App icon & name', - nameRequired: 'App name is required', - }, - category: { - Agent: 'Agent', - Assistant: 'Assistant', - Writing: 'Writing', - Translate: 'Translate', - Programming: 'Programming', - HR: 'HR', - Workflow: 'Workflow', - Entertainment: 'Entertainment', - }, -} - -export default translation diff --git a/web/i18n/en-US/layout.json b/web/i18n/en-US/layout.json new file mode 100644 index 0000000000..6ac27ac233 --- /dev/null +++ b/web/i18n/en-US/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "expandSidebar": "Expand Sidebar", + "collapseSidebar": "Collapse Sidebar" + } +} diff --git a/web/i18n/en-US/layout.ts b/web/i18n/en-US/layout.ts deleted file mode 100644 index 64f405f7c7..0000000000 --- a/web/i18n/en-US/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - expandSidebar: 'Expand Sidebar', - collapseSidebar: 'Collapse Sidebar', - }, -} - -export default translation diff --git a/web/i18n/en-US/login.json b/web/i18n/en-US/login.json new file mode 100644 index 0000000000..2c9cb9e1ed --- /dev/null +++ b/web/i18n/en-US/login.json @@ -0,0 +1,125 @@ +{ + "pageTitle": "Log in to Dify", + "pageTitleForE": "Hey, let's get started!", + "welcome": "👋 Welcome! Please log in to get started.", + "email": "Email address", + "emailPlaceholder": "Your email", + "password": "Password", + "passwordPlaceholder": "Your password", + "name": "Username", + "namePlaceholder": "Your username", + "forget": "Forgot your password?", + "signBtn": "Sign in", + "continueWithCode": "Continue With Code", + "sendVerificationCode": "Send Verification Code", + "usePassword": "Use Password", + "useVerificationCode": "Use Verification Code", + "or": "OR", + "installBtn": "Set up", + "setAdminAccount": "Setting up an admin account", + "setAdminAccountDesc": "Maximum privileges for admin account, which can be used to create applications and manage LLM providers, etc.", + "createAndSignIn": "Create and sign in", + "oneMoreStep": "One more step", + "createSample": "Based on this information, we'll create sample application for you", + "invitationCode": "Invitation Code", + "invitationCodePlaceholder": "Your invitation code", + "interfaceLanguage": "Interface Language", + "timezone": "Time zone", + "go": "Go to Dify", + "sendUsMail": "Email us your introduction, and we'll handle the invitation request.", + "acceptPP": "I have read and accept the privacy policy", + "reset": "Please run following command to reset your password", + "withGitHub": "Continue with GitHub", + "withGoogle": "Continue with Google", + "withSSO": "Continue with SSO", + "rightTitle": "Unlock the full potential of LLM", + "rightDesc": "Effortlessly build visually captivating, operable, and improvable AI applications.", + "tos": "Terms of Service", + "pp": "Privacy Policy", + "tosDesc": "By signing up, you agree to our", + "goToInit": "If you have not initialized the account, please go to the initialization page", + "dontHave": "Don't have?", + "invalidInvitationCode": "Invalid invitation code", + "accountAlreadyInited": "Account already initialized", + "forgotPassword": "Forgot your password?", + "resetLinkSent": "Reset link sent", + "sendResetLink": "Send reset link", + "backToSignIn": "Return to sign in", + "forgotPasswordDesc": "Please enter your email address to reset your password. We will send you an email with instructions on how to reset your password.", + "checkEmailForResetLink": "Please check your email for a link to reset your password. If it doesn't appear within a few minutes, make sure to check your spam folder.", + "passwordChanged": "Sign in now", + "changePassword": "Set a password", + "changePasswordTip": "Please enter a new password for your account", + "changePasswordBtn": "Set a password", + "invalidToken": "Invalid or expired token", + "confirmPassword": "Confirm Password", + "confirmPasswordPlaceholder": "Confirm your new password", + "passwordChangedTip": "Your password has been successfully changed", + "error": { + "emailEmpty": "Email address is required", + "emailInValid": "Please enter a valid email address", + "nameEmpty": "Name is required", + "passwordEmpty": "Password is required", + "passwordLengthInValid": "Password must be at least 8 characters", + "passwordInvalid": "Password must contain letters and numbers, and the length must be greater than 8", + "registrationNotAllowed": "Account not found. Please contact the system admin to register.", + "invalidEmailOrPassword": "Invalid email or password.", + "redirectUrlMissing": "Redirect URL is missing" + }, + "license": { + "tip": "Before starting Dify Community Edition, read the GitHub", + "link": "Open-source License" + }, + "join": "Join ", + "joinTipStart": "Invite you join ", + "joinTipEnd": " team on Dify", + "invalid": "The link has expired", + "explore": "Explore Dify", + "activatedTipStart": "You have joined the", + "activatedTipEnd": "team", + "activated": "Sign in now", + "adminInitPassword": "Admin initialization password", + "validate": "Validate", + "checkCode": { + "checkYourEmail": "Check your email", + "tipsPrefix": "We send a verification code to ", + "validTime": "Bear in mind that the code is valid for 5 minutes", + "verificationCode": "Verification code", + "verificationCodePlaceholder": "Enter 6-digit code", + "verify": "Verify", + "didNotReceiveCode": "Didn't receive the code? ", + "resend": "Resend", + "useAnotherMethod": "Use another method", + "emptyCode": "Code is required", + "invalidCode": "Invalid code" + }, + "resetPassword": "Reset Password", + "resetPasswordDesc": "Type the email you used to sign up on Dify and we will send you a password reset email.", + "backToLogin": "Back to login", + "setYourAccount": "Set Your Account", + "enterYourName": "Please enter your username", + "back": "Back", + "noLoginMethod": "Authentication method not configured", + "noLoginMethodTip": "Please contact the system admin to add an authentication method.", + "licenseExpired": "License Expired", + "licenseExpiredTip": "The Dify Enterprise license for your workspace has expired. Please contact your administrator to continue using Dify.", + "licenseLost": "License Lost", + "licenseLostTip": "Failed to connect Dify license server. Please contact your administrator to continue using Dify.", + "licenseInactive": "License Inactive", + "licenseInactiveTip": "The Dify Enterprise license for your workspace is inactive. Please contact your administrator to continue using Dify.", + "webapp": { + "login": "Login", + "noLoginMethod": "Authentication method not configured for web app", + "noLoginMethodTip": "Please contact the system admin to add an authentication method.", + "disabled": "Webapp authentication is disabled. Please contact the system admin to enable it. You can try to use the app directly." + }, + "signup": { + "noAccount": "Don’t have an account? ", + "signUp": "Sign Up", + "createAccount": "Create your account", + "welcome": "👋 Welcome! Please fill in the details to get started.", + "verifyMail": "Continue with verification code", + "haveAccount": "Already have an account? ", + "signIn": "Sign In" + } +} diff --git a/web/i18n/en-US/login.ts b/web/i18n/en-US/login.ts deleted file mode 100644 index 3b0c8bbba1..0000000000 --- a/web/i18n/en-US/login.ts +++ /dev/null @@ -1,127 +0,0 @@ -const translation = { - pageTitle: 'Log in to Dify', - pageTitleForE: 'Hey, let\'s get started!', - welcome: '👋 Welcome! Please log in to get started.', - email: 'Email address', - emailPlaceholder: 'Your email', - password: 'Password', - passwordPlaceholder: 'Your password', - name: 'Username', - namePlaceholder: 'Your username', - forget: 'Forgot your password?', - signBtn: 'Sign in', - continueWithCode: 'Continue With Code', - sendVerificationCode: 'Send Verification Code', - usePassword: 'Use Password', - useVerificationCode: 'Use Verification Code', - or: 'OR', - installBtn: 'Set up', - setAdminAccount: 'Setting up an admin account', - setAdminAccountDesc: 'Maximum privileges for admin account, which can be used to create applications and manage LLM providers, etc.', - createAndSignIn: 'Create and sign in', - oneMoreStep: 'One more step', - createSample: 'Based on this information, we\'ll create sample application for you', - invitationCode: 'Invitation Code', - invitationCodePlaceholder: 'Your invitation code', - interfaceLanguage: 'Interface Language', - timezone: 'Time zone', - go: 'Go to Dify', - sendUsMail: 'Email us your introduction, and we\'ll handle the invitation request.', - acceptPP: 'I have read and accept the privacy policy', - reset: 'Please run following command to reset your password', - withGitHub: 'Continue with GitHub', - withGoogle: 'Continue with Google', - withSSO: 'Continue with SSO', - rightTitle: 'Unlock the full potential of LLM', - rightDesc: 'Effortlessly build visually captivating, operable, and improvable AI applications.', - tos: 'Terms of Service', - pp: 'Privacy Policy', - tosDesc: 'By signing up, you agree to our', - goToInit: 'If you have not initialized the account, please go to the initialization page', - dontHave: 'Don\'t have?', - invalidInvitationCode: 'Invalid invitation code', - accountAlreadyInited: 'Account already initialized', - forgotPassword: 'Forgot your password?', - resetLinkSent: 'Reset link sent', - sendResetLink: 'Send reset link', - backToSignIn: 'Return to sign in', - forgotPasswordDesc: 'Please enter your email address to reset your password. We will send you an email with instructions on how to reset your password.', - checkEmailForResetLink: 'Please check your email for a link to reset your password. If it doesn\'t appear within a few minutes, make sure to check your spam folder.', - passwordChanged: 'Sign in now', - changePassword: 'Set a password', - changePasswordTip: 'Please enter a new password for your account', - changePasswordBtn: 'Set a password', - invalidToken: 'Invalid or expired token', - confirmPassword: 'Confirm Password', - confirmPasswordPlaceholder: 'Confirm your new password', - passwordChangedTip: 'Your password has been successfully changed', - error: { - emailEmpty: 'Email address is required', - emailInValid: 'Please enter a valid email address', - nameEmpty: 'Name is required', - passwordEmpty: 'Password is required', - passwordLengthInValid: 'Password must be at least 8 characters', - passwordInvalid: 'Password must contain letters and numbers, and the length must be greater than 8', - registrationNotAllowed: 'Account not found. Please contact the system admin to register.', - invalidEmailOrPassword: 'Invalid email or password.', - redirectUrlMissing: 'Redirect URL is missing', - }, - license: { - tip: 'Before starting Dify Community Edition, read the GitHub', - link: 'Open-source License', - }, - join: 'Join ', - joinTipStart: 'Invite you join ', - joinTipEnd: ' team on Dify', - invalid: 'The link has expired', - explore: 'Explore Dify', - activatedTipStart: 'You have joined the', - activatedTipEnd: 'team', - activated: 'Sign in now', - adminInitPassword: 'Admin initialization password', - validate: 'Validate', - checkCode: { - checkYourEmail: 'Check your email', - tipsPrefix: 'We send a verification code to ', - validTime: 'Bear in mind that the code is valid for 5 minutes', - verificationCode: 'Verification code', - verificationCodePlaceholder: 'Enter 6-digit code', - verify: 'Verify', - didNotReceiveCode: 'Didn\'t receive the code? ', - resend: 'Resend', - useAnotherMethod: 'Use another method', - emptyCode: 'Code is required', - invalidCode: 'Invalid code', - }, - resetPassword: 'Reset Password', - resetPasswordDesc: 'Type the email you used to sign up on Dify and we will send you a password reset email.', - backToLogin: 'Back to login', - setYourAccount: 'Set Your Account', - enterYourName: 'Please enter your username', - back: 'Back', - noLoginMethod: 'Authentication method not configured', - noLoginMethodTip: 'Please contact the system admin to add an authentication method.', - licenseExpired: 'License Expired', - licenseExpiredTip: 'The Dify Enterprise license for your workspace has expired. Please contact your administrator to continue using Dify.', - licenseLost: 'License Lost', - licenseLostTip: 'Failed to connect Dify license server. Please contact your administrator to continue using Dify.', - licenseInactive: 'License Inactive', - licenseInactiveTip: 'The Dify Enterprise license for your workspace is inactive. Please contact your administrator to continue using Dify.', - webapp: { - login: 'Login', - noLoginMethod: 'Authentication method not configured for web app', - noLoginMethodTip: 'Please contact the system admin to add an authentication method.', - disabled: 'Webapp authentication is disabled. Please contact the system admin to enable it. You can try to use the app directly.', - }, - signup: { - noAccount: 'Don’t have an account? ', - signUp: 'Sign Up', - createAccount: 'Create your account', - welcome: '👋 Welcome! Please fill in the details to get started.', - verifyMail: 'Continue with verification code', - haveAccount: 'Already have an account? ', - signIn: 'Sign In', - }, -} - -export default translation diff --git a/web/i18n/en-US/oauth.json b/web/i18n/en-US/oauth.json new file mode 100644 index 0000000000..8ff38d131f --- /dev/null +++ b/web/i18n/en-US/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "loggedIn": "This app wants to access the following information from your Dify Cloud account.", + "notLoggedIn": "This app wants to access your Dify Cloud account", + "needLogin": "Please log in to authorize", + "common": "We respect your privacy and will only use this information to enhance your experience with our developer tools." + }, + "connect": "Connect to", + "continue": "Continue", + "switchAccount": "Switch Account", + "login": "Login", + "scopes": { + "name": "Name", + "email": "Email", + "avatar": "Avatar", + "languagePreference": "Language Preference", + "timezone": "Timezone" + }, + "error": { + "invalidParams": "Invalid parameters", + "authorizeFailed": "Authorization failed", + "authAppInfoFetchFailed": "Failed to fetch app info for authorization" + }, + "unknownApp": "Unknown App" +} diff --git a/web/i18n/en-US/oauth.ts b/web/i18n/en-US/oauth.ts deleted file mode 100644 index 5215330587..0000000000 --- a/web/i18n/en-US/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - loggedIn: 'This app wants to access the following information from your Dify Cloud account.', - notLoggedIn: 'This app wants to access your Dify Cloud account', - needLogin: 'Please log in to authorize', - common: 'We respect your privacy and will only use this information to enhance your experience with our developer tools.', - }, - connect: 'Connect to', - continue: 'Continue', - switchAccount: 'Switch Account', - login: 'Login', - scopes: { - name: 'Name', - email: 'Email', - avatar: 'Avatar', - languagePreference: 'Language Preference', - timezone: 'Timezone', - }, - error: { - invalidParams: 'Invalid parameters', - authorizeFailed: 'Authorization failed', - authAppInfoFetchFailed: 'Failed to fetch app info for authorization', - }, - unknownApp: 'Unknown App', -} - -export default translation diff --git a/web/i18n/en-US/pipeline.json b/web/i18n/en-US/pipeline.json new file mode 100644 index 0000000000..f4e1477a4b --- /dev/null +++ b/web/i18n/en-US/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "goToAddDocuments": "Go to add documents", + "publishAs": "Publish as a Customized Pipeline Template", + "confirmPublish": "Confirm Publish", + "confirmPublishContent": "After successfully publishing the knowledge pipeline, the chunk structure of this knowledge base cannot be modified. Are you sure you want to publish it?", + "publishAsPipeline": { + "name": "Pipeline name & icon", + "namePlaceholder": "Please enter the name of this Knowledge Pipeline. (Required) ", + "description": "Knowledge description", + "descriptionPlaceholder": "Please enter the description of this Knowledge Pipeline. (Optional) " + }, + "testRun": "Test Run", + "preparingDataSource": "Preparing Data Source", + "reRun": "Re-run", + "processing": "Processing" + }, + "inputField": { + "create": "Create user input field", + "manage": "Manage" + }, + "publishToast": { + "title": "This pipeline has not yet been published", + "desc": "When the pipeline is not published, you can modify the chunk structure in the knowledge base node, and the pipeline orchestration and changes will be automatically saved as a draft." + }, + "result": { + "resultPreview": { + "loading": "Processing...Please wait", + "error": "Error occurred during execution", + "viewDetails": "View details", + "footerTip": "In test run mode, preview up to {{count}} chunks" + } + }, + "ragToolSuggestions": { + "title": "Suggestions for RAG", + "noRecommendationPlugins": "No recommended plugins, find more in Marketplace" + } +} diff --git a/web/i18n/en-US/pipeline.ts b/web/i18n/en-US/pipeline.ts deleted file mode 100644 index 8e5fd8a3e0..0000000000 --- a/web/i18n/en-US/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - goToAddDocuments: 'Go to add documents', - publishAs: 'Publish as a Customized Pipeline Template', - confirmPublish: 'Confirm Publish', - confirmPublishContent: 'After successfully publishing the knowledge pipeline, the chunk structure of this knowledge base cannot be modified. Are you sure you want to publish it?', - publishAsPipeline: { - name: 'Pipeline name & icon', - namePlaceholder: 'Please enter the name of this Knowledge Pipeline. (Required) ', - description: 'Knowledge description', - descriptionPlaceholder: 'Please enter the description of this Knowledge Pipeline. (Optional) ', - }, - testRun: 'Test Run', - preparingDataSource: 'Preparing Data Source', - reRun: 'Re-run', - processing: 'Processing', - }, - inputField: { - create: 'Create user input field', - manage: 'Manage', - }, - publishToast: { - title: 'This pipeline has not yet been published', - desc: 'When the pipeline is not published, you can modify the chunk structure in the knowledge base node, and the pipeline orchestration and changes will be automatically saved as a draft.', - }, - result: { - resultPreview: { - loading: 'Processing...Please wait', - error: 'Error occurred during execution', - viewDetails: 'View details', - footerTip: 'In test run mode, preview up to {{count}} chunks', - }, - }, - ragToolSuggestions: { - title: 'Suggestions for RAG', - noRecommendationPlugins: 'No recommended plugins, find more in Marketplace', - }, -} - -export default translation diff --git a/web/i18n/en-US/plugin-tags.json b/web/i18n/en-US/plugin-tags.json new file mode 100644 index 0000000000..b5a92f02b5 --- /dev/null +++ b/web/i18n/en-US/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "allTags": "All Tags", + "searchTags": "Search Tags", + "tags": { + "agent": "Agent", + "rag": "RAG", + "search": "Search", + "image": "Image", + "videos": "Videos", + "weather": "Weather", + "finance": "Finance", + "design": "Design", + "travel": "Travel", + "social": "Social", + "news": "News", + "medical": "Medical", + "productivity": "Productivity", + "education": "Education", + "business": "Business", + "entertainment": "Entertainment", + "utilities": "Utilities", + "other": "Other" + } +} diff --git a/web/i18n/en-US/plugin-tags.ts b/web/i18n/en-US/plugin-tags.ts deleted file mode 100644 index 840c22af0f..0000000000 --- a/web/i18n/en-US/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - allTags: 'All Tags', - searchTags: 'Search Tags', - tags: { - agent: 'Agent', - rag: 'RAG', - search: 'Search', - image: 'Image', - videos: 'Videos', - weather: 'Weather', - finance: 'Finance', - design: 'Design', - travel: 'Travel', - social: 'Social', - news: 'News', - medical: 'Medical', - productivity: 'Productivity', - education: 'Education', - business: 'Business', - entertainment: 'Entertainment', - utilities: 'Utilities', - other: 'Other', - }, -} - -export default translation diff --git a/web/i18n/en-US/plugin-trigger.json b/web/i18n/en-US/plugin-trigger.json new file mode 100644 index 0000000000..83d0c451da --- /dev/null +++ b/web/i18n/en-US/plugin-trigger.json @@ -0,0 +1,185 @@ +{ + "subscription": { + "title": "Subscriptions", + "listNum": "{{num}} subscriptions", + "empty": { + "title": "No subscriptions", + "button": "New subscription" + }, + "createButton": { + "oauth": "New subscription with OAuth", + "apiKey": "New subscription with API Key", + "manual": "Paste URL to create a new subscription" + }, + "createSuccess": "Subscription created successfully", + "createFailed": "Failed to create subscription", + "maxCount": "Max {{num}} subscriptions", + "selectPlaceholder": "Select subscription", + "noSubscriptionSelected": "No subscription selected", + "subscriptionRemoved": "Subscription removed", + "list": { + "title": "Subscriptions", + "addButton": "Add", + "tip": "Receive events via Subscription", + "item": { + "enabled": "Enabled", + "disabled": "Disabled", + "credentialType": { + "api_key": "API Key", + "oauth2": "OAuth", + "unauthorized": "Manual" + }, + "actions": { + "delete": "Delete", + "deleteConfirm": { + "title": "Delete {{name}}?", + "success": "Subscription {{name}} deleted successfully", + "error": "Failed to delete subscription {{name}}", + "content": "Once deleted, this subscription cannot be recovered. Please confirm.", + "contentWithApps": "The current subscription is referenced by {{count}} applications. Deleting it will cause the configured applications to stop receiving subscription events.", + "confirm": "Confirm Delete", + "cancel": "Cancel", + "confirmInputWarning": "Please enter the correct name to confirm.", + "confirmInputPlaceholder": "Enter \"{{name}}\" to confirm.", + "confirmInputTip": "Please enter “{{name}}” to confirm." + } + }, + "status": { + "active": "Active", + "inactive": "Inactive" + }, + "usedByNum": "Used by {{num}} workflows", + "noUsed": "No workflow used" + } + }, + "addType": { + "title": "Add subscription", + "description": "Choose how you want to create your trigger subscription", + "options": { + "apikey": { + "title": "Create with API Key", + "description": "Automatically create subscription using API credentials" + }, + "oauth": { + "title": "Create with OAuth", + "description": "Authorize with third-party platform to create subscription", + "clientSettings": "OAuth Client Settings", + "clientTitle": "OAuth Client", + "default": "Default", + "custom": "Custom" + }, + "manual": { + "title": "Manual Setup", + "description": "Paste URL to create a new subscription", + "tip": "Configure URL on third-party platform manually" + } + } + } + }, + "modal": { + "steps": { + "verify": "Verify", + "configuration": "Configuration" + }, + "common": { + "cancel": "Cancel", + "back": "Back", + "next": "Next", + "create": "Create", + "verify": "Verify", + "authorize": "Authorize", + "creating": "Creating...", + "verifying": "Verifying...", + "authorizing": "Authorizing..." + }, + "oauthRedirectInfo": "As no system client secrets found for this tool provider, setup it manually is required, for redirect_uri, please use", + "apiKey": { + "title": "Create with API Key", + "verify": { + "title": "Verify Credentials", + "description": "Please provide your API credentials to verify access", + "error": "Credential verification failed. Please check your API key.", + "success": "Credentials verified successfully" + }, + "configuration": { + "title": "Configure Subscription", + "description": "Set up your subscription parameters" + } + }, + "oauth": { + "title": "Create with OAuth", + "authorization": { + "title": "OAuth Authorization", + "description": "Authorize Dify to access your account", + "redirectUrl": "Redirect URL", + "redirectUrlHelp": "Use this URL in your OAuth app configuration", + "authorizeButton": "Authorize with {{provider}}", + "waitingAuth": "Waiting for authorization...", + "authSuccess": "Authorization successful", + "authFailed": "Failed to get OAuth authorization information", + "waitingJump": "Authorized, waiting for jump" + }, + "configuration": { + "title": "Configure Subscription", + "description": "Set up your subscription parameters after authorization", + "success": "OAuth configuration successful", + "failed": "OAuth configuration failed" + }, + "remove": { + "success": "OAuth remove successful", + "failed": "OAuth remove failed" + }, + "save": { + "success": "OAuth configuration saved successfully" + } + }, + "manual": { + "title": "Manual Setup", + "description": "Configure your webhook subscription manually", + "logs": { + "title": "Request Logs", + "request": "Request", + "loading": "Awaiting request from {{pluginName}}..." + } + }, + "form": { + "subscriptionName": { + "label": "Subscription Name", + "placeholder": "Enter subscription name", + "required": "Subscription name is required" + }, + "callbackUrl": { + "label": "Callback URL", + "description": "This URL will receive webhook events", + "tooltip": "Provide a publicly accessible endpoint that can receive callback requests from the trigger provider.", + "placeholder": "Generating...", + "privateAddressWarning": "This URL appears to be an internal address, which may cause webhook requests to fail. You may change TRIGGER_URL to a public address." + } + }, + "errors": { + "createFailed": "Failed to create subscription", + "updateFailed": "Failed to update subscription", + "verifyFailed": "Failed to verify credentials", + "authFailed": "Authorization failed", + "networkError": "Network error, please try again" + } + }, + "events": { + "title": "Available Events", + "description": "Events that this trigger plugin can subscribe to", + "empty": "No events available", + "event": "Event", + "events": "Events", + "actionNum": "{{num}} {{event}} INCLUDED", + "item": { + "parameters": "{{count}} parameters", + "noParameters": "No parameters" + }, + "output": "Output" + }, + "node": { + "status": { + "warning": "Disconnect" + } + } +} diff --git a/web/i18n/en-US/plugin-trigger.ts b/web/i18n/en-US/plugin-trigger.ts deleted file mode 100644 index f1d697e507..0000000000 --- a/web/i18n/en-US/plugin-trigger.ts +++ /dev/null @@ -1,187 +0,0 @@ -const translation = { - subscription: { - title: 'Subscriptions', - listNum: '{{num}} subscriptions', - empty: { - title: 'No subscriptions', - button: 'New subscription', - }, - createButton: { - oauth: 'New subscription with OAuth', - apiKey: 'New subscription with API Key', - manual: 'Paste URL to create a new subscription', - }, - createSuccess: 'Subscription created successfully', - createFailed: 'Failed to create subscription', - maxCount: 'Max {{num}} subscriptions', - selectPlaceholder: 'Select subscription', - noSubscriptionSelected: 'No subscription selected', - subscriptionRemoved: 'Subscription removed', - list: { - title: 'Subscriptions', - addButton: 'Add', - tip: 'Receive events via Subscription', - item: { - enabled: 'Enabled', - disabled: 'Disabled', - credentialType: { - api_key: 'API Key', - oauth2: 'OAuth', - unauthorized: 'Manual', - }, - actions: { - delete: 'Delete', - deleteConfirm: { - title: 'Delete {{name}}?', - success: 'Subscription {{name}} deleted successfully', - error: 'Failed to delete subscription {{name}}', - content: 'Once deleted, this subscription cannot be recovered. Please confirm.', - contentWithApps: 'The current subscription is referenced by {{count}} applications. Deleting it will cause the configured applications to stop receiving subscription events.', - confirm: 'Confirm Delete', - cancel: 'Cancel', - confirmInputWarning: 'Please enter the correct name to confirm.', - confirmInputPlaceholder: 'Enter "{{name}}" to confirm.', - confirmInputTip: 'Please enter “{{name}}” to confirm.', - }, - }, - status: { - active: 'Active', - inactive: 'Inactive', - }, - usedByNum: 'Used by {{num}} workflows', - noUsed: 'No workflow used', - }, - }, - addType: { - title: 'Add subscription', - description: 'Choose how you want to create your trigger subscription', - options: { - apikey: { - title: 'Create with API Key', - description: 'Automatically create subscription using API credentials', - }, - oauth: { - title: 'Create with OAuth', - description: 'Authorize with third-party platform to create subscription', - clientSettings: 'OAuth Client Settings', - clientTitle: 'OAuth Client', - default: 'Default', - custom: 'Custom', - }, - manual: { - title: 'Manual Setup', - description: 'Paste URL to create a new subscription', - tip: 'Configure URL on third-party platform manually', - }, - }, - }, - }, - modal: { - steps: { - verify: 'Verify', - configuration: 'Configuration', - }, - common: { - cancel: 'Cancel', - back: 'Back', - next: 'Next', - create: 'Create', - verify: 'Verify', - authorize: 'Authorize', - creating: 'Creating...', - verifying: 'Verifying...', - authorizing: 'Authorizing...', - }, - oauthRedirectInfo: 'As no system client secrets found for this tool provider, setup it manually is required, for redirect_uri, please use', - apiKey: { - title: 'Create with API Key', - verify: { - title: 'Verify Credentials', - description: 'Please provide your API credentials to verify access', - error: 'Credential verification failed. Please check your API key.', - success: 'Credentials verified successfully', - }, - configuration: { - title: 'Configure Subscription', - description: 'Set up your subscription parameters', - }, - }, - oauth: { - title: 'Create with OAuth', - authorization: { - title: 'OAuth Authorization', - description: 'Authorize Dify to access your account', - redirectUrl: 'Redirect URL', - redirectUrlHelp: 'Use this URL in your OAuth app configuration', - authorizeButton: 'Authorize with {{provider}}', - waitingAuth: 'Waiting for authorization...', - authSuccess: 'Authorization successful', - authFailed: 'Failed to get OAuth authorization information', - waitingJump: 'Authorized, waiting for jump', - }, - configuration: { - title: 'Configure Subscription', - description: 'Set up your subscription parameters after authorization', - success: 'OAuth configuration successful', - failed: 'OAuth configuration failed', - }, - remove: { - success: 'OAuth remove successful', - failed: 'OAuth remove failed', - }, - save: { - success: 'OAuth configuration saved successfully', - }, - }, - manual: { - title: 'Manual Setup', - description: 'Configure your webhook subscription manually', - logs: { - title: 'Request Logs', - request: 'Request', - loading: 'Awaiting request from {{pluginName}}...', - }, - }, - form: { - subscriptionName: { - label: 'Subscription Name', - placeholder: 'Enter subscription name', - required: 'Subscription name is required', - }, - callbackUrl: { - label: 'Callback URL', - description: 'This URL will receive webhook events', - tooltip: 'Provide a publicly accessible endpoint that can receive callback requests from the trigger provider.', - placeholder: 'Generating...', - privateAddressWarning: 'This URL appears to be an internal address, which may cause webhook requests to fail. You may change TRIGGER_URL to a public address.', - }, - }, - errors: { - createFailed: 'Failed to create subscription', - updateFailed: 'Failed to update subscription', - verifyFailed: 'Failed to verify credentials', - authFailed: 'Authorization failed', - networkError: 'Network error, please try again', - }, - }, - events: { - title: 'Available Events', - description: 'Events that this trigger plugin can subscribe to', - empty: 'No events available', - event: 'Event', - events: 'Events', - actionNum: '{{num}} {{event}} INCLUDED', - item: { - parameters: '{{count}} parameters', - noParameters: 'No parameters', - }, - output: 'Output', - }, - node: { - status: { - warning: 'Disconnect', - }, - }, -} - -export default translation diff --git a/web/i18n/en-US/plugin.json b/web/i18n/en-US/plugin.json new file mode 100644 index 0000000000..a09acde3b3 --- /dev/null +++ b/web/i18n/en-US/plugin.json @@ -0,0 +1,323 @@ +{ + "metadata": { + "title": "Plugins" + }, + "category": { + "all": "All", + "models": "Models", + "tools": "Tools", + "agents": "Agent Strategies", + "extensions": "Extensions", + "triggers": "Triggers", + "bundles": "Bundles", + "datasources": "Data Sources" + }, + "categorySingle": { + "model": "Model", + "tool": "Tool", + "agent": "Agent Strategy", + "extension": "Extension", + "trigger": "Trigger", + "bundle": "Bundle", + "datasource": "Data Source" + }, + "search": "Search", + "allCategories": "All Categories", + "searchCategories": "Search Categories", + "searchPlugins": "Search plugins", + "from": "From", + "findMoreInMarketplace": "Find more in Marketplace", + "searchInMarketplace": "Search in Marketplace", + "fromMarketplace": "From Marketplace", + "endpointsEnabled": "{{num}} sets of endpoints enabled", + "searchTools": "Search tools...", + "installPlugin": "Install plugin", + "installFrom": "INSTALL FROM", + "deprecated": "Deprecated", + "list": { + "noInstalled": "No plugins installed", + "notFound": "No plugins found", + "source": { + "marketplace": "Install from Marketplace", + "github": "Install from GitHub", + "local": "Install from Local Package File" + } + }, + "source": { + "marketplace": "Marketplace", + "github": "GitHub", + "local": "Local Package File" + }, + "detailPanel": { + "switchVersion": "Switch Version", + "categoryTip": { + "marketplace": "Installed from Marketplace", + "github": "Installed from Github", + "local": "Local Plugin", + "debugging": "Debugging Plugin" + }, + "operation": { + "install": "Install", + "detail": "Details", + "update": "Update", + "info": "Plugin Info", + "checkUpdate": "Check Update", + "viewDetail": "View Detail", + "remove": "Remove", + "back": "Back" + }, + "actionNum": "{{num}} {{action}} INCLUDED", + "strategyNum": "{{num}} {{strategy}} INCLUDED", + "endpoints": "Endpoints", + "endpointsTip": "This plugin provides specific functionalities via endpoints, and you can configure multiple endpoint sets for current workspace.", + "endpointsDocLink": "View the document", + "endpointsEmpty": "Click the '+' button to add an endpoint", + "endpointDisableTip": "Disable Endpoint", + "endpointDisableContent": "Would you like to disable {{name}}? ", + "endpointDeleteTip": "Remove Endpoint", + "endpointDeleteContent": "Would you like to remove {{name}}? ", + "endpointModalTitle": "Setup endpoint", + "endpointModalDesc": "Once configured, the features provided by the plugin via API endpoints can be used.", + "serviceOk": "Service OK", + "disabled": "Disabled", + "modelNum": "{{num}} MODELS INCLUDED", + "toolSelector": { + "title": "Add tool", + "toolSetting": "Tool Settings", + "toolLabel": "Tool", + "descriptionLabel": "Tool description", + "descriptionPlaceholder": "Brief description of the tool's purpose, e.g., get the temperature for a specific location.", + "placeholder": "Select a tool...", + "settings": "USER SETTINGS", + "params": "REASONING CONFIG", + "paramsTip1": "Controls LLM inference parameters.", + "paramsTip2": "When 'Auto' is off, the default value is used.", + "auto": "Auto", + "empty": "Click the '+' button to add tools. You can add multiple tools.", + "uninstalledTitle": "Tool not installed", + "uninstalledContent": "This plugin is installed from the local/GitHub repository. Please use after installation.", + "uninstalledLink": "Manage in Plugins", + "unsupportedTitle": "Unsupported Action", + "unsupportedContent": "The installed plugin version does not provide this action.", + "unsupportedContent2": "Click to switch version.", + "unsupportedMCPTool": "Currently selected agent strategy plugin version does not support MCP tools." + }, + "configureApp": "Configure App", + "configureModel": "Configure model", + "configureTool": "Configure tool", + "deprecation": { + "fullMessage": "This plugin has been deprecated due to {{deprecatedReason}}, and will no longer be updated. Please use {{-alternativePluginId}} instead.", + "onlyReason": "This plugin has been deprecated due to {{deprecatedReason}} and will no longer be updated.", + "noReason": "This plugin has been deprecated and will no longer be updated.", + "reason": { + "businessAdjustments": "business adjustments", + "ownershipTransferred": "ownership transferred", + "noMaintainer": "no maintainer" + } + } + }, + "install": "{{num}} installs", + "installAction": "Install", + "debugInfo": { + "title": "Debugging", + "viewDocs": "View Docs" + }, + "privilege": { + "title": "Plugin Preferences", + "whoCanInstall": "Who can install and manage plugins?", + "whoCanDebug": "Who can debug plugins?", + "everyone": "Everyone", + "admins": "Admins", + "noone": "No one" + }, + "autoUpdate": { + "automaticUpdates": "Automatic updates", + "updateTime": "Update time", + "specifyPluginsToUpdate": "Specify plugins to update", + "strategy": { + "disabled": { + "name": "Disabled", + "description": "Plugins will not auto-update" + }, + "fixOnly": { + "name": "Fix Only", + "description": "Auto-update for patch versions only (e.g., 1.0.1 → 1.0.2). Minor version changes won't trigger updates.", + "selectedDescription": "Auto-update for patch versions only" + }, + "latest": { + "name": "Latest", + "description": "Always update to latest version", + "selectedDescription": "Always update to latest version" + } + }, + "updateTimeTitle": "Update time", + "upgradeMode": { + "all": "Update all", + "exclude": "Exclude selected", + "partial": "Only selected" + }, + "upgradeModePlaceholder": { + "exclude": "Selected plugins will not auto-update", + "partial": "Only selected plugins will auto-update. No plugins are currently selected, so no plugins will auto-update." + }, + "excludeUpdate": "The following {{num}} plugins will not auto-update", + "partialUPdate": "Only the following {{num}} plugins will auto-update", + "operation": { + "clearAll": "Clear all", + "select": "Select plugins" + }, + "nextUpdateTime": "Next auto-update: {{time}}", + "pluginDowngradeWarning": { + "title": "Plugin Downgrade", + "description": "Auto-update is currently enabled for this plugin. Downgrading the version may cause your changes to be overwritten during the next automatic update.", + "downgrade": "Downgrade anyway", + "exclude": "Exclude from auto-update" + }, + "noPluginPlaceholder": { + "noFound": "No plugins were found", + "noInstalled": "No plugins installed" + }, + "updateSettings": "Update Settings", + "changeTimezone": "To change time zone, go to Settings" + }, + "pluginInfoModal": { + "title": "Plugin info", + "repository": "Repository", + "release": "Release", + "packageName": "Package" + }, + "action": { + "checkForUpdates": "Check for updates", + "pluginInfo": "Plugin info", + "delete": "Remove plugin", + "deleteContentLeft": "Would you like to remove ", + "deleteContentRight": " plugin?", + "usedInApps": "This plugin is being used in {{num}} apps." + }, + "installModal": { + "installPlugin": "Install Plugin", + "installComplete": "Installation complete", + "installedSuccessfully": "Installation successful", + "installedSuccessfullyDesc": "The plugin has been installed successfully.", + "uploadFailed": "Upload failed", + "installFailed": "Installation failed", + "installFailedDesc": "The plugin has been installed failed.", + "install": "Install", + "installing": "Installing...", + "uploadingPackage": "Uploading {{packageName}}...", + "readyToInstall": "About to install the following plugin", + "readyToInstallPackage": "About to install the following plugin", + "readyToInstallPackages": "About to install the following {{num}} plugins", + "fromTrustSource": "Please make sure that you only install plugins from a trusted source.", + "dropPluginToInstall": "Drop plugin package here to install", + "labels": { + "repository": "Repository", + "version": "Version", + "package": "Package" + }, + "close": "Close", + "cancel": "Cancel", + "back": "Back", + "next": "Next", + "pluginLoadError": "Plugin load error", + "pluginLoadErrorDesc": "This plugin will not be installed", + "installWarning": "This plugin is not allowed to be installed." + }, + "installFromGitHub": { + "installPlugin": "Install plugin from GitHub", + "updatePlugin": "Update plugin from GitHub", + "installedSuccessfully": "Installation successful", + "installFailed": "Installation failed", + "uploadFailed": "Upload failed", + "gitHubRepo": "GitHub repository", + "selectVersion": "Select version", + "selectVersionPlaceholder": "Please select a version", + "installNote": "Please make sure that you only install plugins from a trusted source.", + "selectPackage": "Select package", + "selectPackagePlaceholder": "Please select a package" + }, + "upgrade": { + "title": "Install Plugin", + "successfulTitle": "Install successful", + "description": "About to install the following plugin", + "usedInApps": "Used in {{num}} apps", + "upgrade": "Install", + "upgrading": "Installing...", + "close": "Close" + }, + "error": { + "inValidGitHubUrl": "Invalid GitHub URL. Please enter a valid URL in the format: https://github.com/owner/repo", + "fetchReleasesError": "Unable to retrieve releases. Please try again later.", + "noReleasesFound": "No releases found. Please check the GitHub repository or the input URL." + }, + "marketplace": { + "empower": "Empower your AI development", + "discover": "Discover", + "and": "and", + "difyMarketplace": "Dify Marketplace", + "moreFrom": "More from Marketplace", + "noPluginFound": "No plugin found", + "pluginsResult": "{{num}} results", + "sortBy": "Sort by", + "sortOption": { + "mostPopular": "Most Popular", + "recentlyUpdated": "Recently Updated", + "newlyReleased": "Newly Released", + "firstReleased": "First Released" + }, + "viewMore": "View more", + "verifiedTip": "Verified by Dify", + "partnerTip": "Verified by a Dify partner" + }, + "task": { + "installing": "Installing plugins", + "installingWithSuccess": "Installing {{installingLength}} plugins, {{successLength}} success.", + "installingWithError": "Installing {{installingLength}} plugins, {{successLength}} success, {{errorLength}} failed", + "installError": "{{errorLength}} plugins failed to install, click to view", + "installedError": "{{errorLength}} plugins failed to install", + "installSuccess": "{{successLength}} plugins installed successfully", + "installed": "Installed", + "clearAll": "Clear all", + "runningPlugins": "Installing Plugins", + "successPlugins": "Successfully Installed Plugins", + "errorPlugins": "Failed to Install Plugins" + }, + "requestAPlugin": "Request a plugin", + "publishPlugins": "Publish plugins", + "difyVersionNotCompatible": "The current Dify version is not compatible with this plugin, please upgrade to the minimum version required: {{minimalDifyVersion}}", + "auth": { + "default": "Default", + "custom": "Custom", + "setDefault": "Set as default", + "useOAuth": "Use OAuth", + "useOAuthAuth": "Use OAuth Authorization", + "addOAuth": "Add OAuth", + "setupOAuth": "Setup OAuth Client", + "useApi": "Use API Key", + "addApi": "Add API Key", + "useApiAuth": "API Key Authorization Configuration", + "useApiAuthDesc": "After configuring credentials, all members within the workspace can use this tool when orchestrating applications.", + "oauthClientSettings": "OAuth Client Settings", + "saveOnly": "Save only", + "saveAndAuth": "Save and Authorize", + "authorization": "Authorization", + "authorizations": "Authorizations", + "authorizationName": "Authorization Name", + "workspaceDefault": "Workspace Default", + "authRemoved": "Auth removed", + "clientInfo": "As no system client secrets found for this tool provider, setup it manually is required, for redirect_uri, please use", + "oauthClient": "OAuth Client", + "credentialUnavailable": "Credentials currently unavailable. Please contact admin.", + "credentialUnavailableInButton": "Credential unavailable", + "customCredentialUnavailable": "Custom credentials currently unavailable", + "unavailable": "Unavailable", + "connectedWorkspace": "Connected Workspace", + "emptyAuth": "Please configure authentication" + }, + "readmeInfo": { + "title": "README", + "needHelpCheckReadme": "Need help? Check the README.", + "noReadmeAvailable": "No README available", + "failedToFetch": "Failed to fetch README" + } +} diff --git a/web/i18n/en-US/plugin.ts b/web/i18n/en-US/plugin.ts deleted file mode 100644 index edd60d65fb..0000000000 --- a/web/i18n/en-US/plugin.ts +++ /dev/null @@ -1,325 +0,0 @@ -const translation = { - metadata: { - title: 'Plugins', - }, - category: { - all: 'All', - models: 'Models', - tools: 'Tools', - agents: 'Agent Strategies', - extensions: 'Extensions', - triggers: 'Triggers', - bundles: 'Bundles', - datasources: 'Data Sources', - }, - categorySingle: { - model: 'Model', - tool: 'Tool', - agent: 'Agent Strategy', - extension: 'Extension', - trigger: 'Trigger', - bundle: 'Bundle', - datasource: 'Data Source', - }, - search: 'Search', - allCategories: 'All Categories', - searchCategories: 'Search Categories', - searchPlugins: 'Search plugins', - from: 'From', - findMoreInMarketplace: 'Find more in Marketplace', - searchInMarketplace: 'Search in Marketplace', - fromMarketplace: 'From Marketplace', - endpointsEnabled: '{{num}} sets of endpoints enabled', - searchTools: 'Search tools...', - installPlugin: 'Install plugin', - installFrom: 'INSTALL FROM', - deprecated: 'Deprecated', - list: { - noInstalled: 'No plugins installed', - notFound: 'No plugins found', - source: { - marketplace: 'Install from Marketplace', - github: 'Install from GitHub', - local: 'Install from Local Package File', - }, - }, - source: { - marketplace: 'Marketplace', - github: 'GitHub', - local: 'Local Package File', - }, - detailPanel: { - switchVersion: 'Switch Version', - categoryTip: { - marketplace: 'Installed from Marketplace', - github: 'Installed from Github', - local: 'Local Plugin', - debugging: 'Debugging Plugin', - }, - operation: { - install: 'Install', - detail: 'Details', - update: 'Update', - info: 'Plugin Info', - checkUpdate: 'Check Update', - viewDetail: 'View Detail', - remove: 'Remove', - back: 'Back', - }, - actionNum: '{{num}} {{action}} INCLUDED', - strategyNum: '{{num}} {{strategy}} INCLUDED', - endpoints: 'Endpoints', - endpointsTip: 'This plugin provides specific functionalities via endpoints, and you can configure multiple endpoint sets for current workspace.', - endpointsDocLink: 'View the document', - endpointsEmpty: 'Click the \'+\' button to add an endpoint', - endpointDisableTip: 'Disable Endpoint', - endpointDisableContent: 'Would you like to disable {{name}}? ', - endpointDeleteTip: 'Remove Endpoint', - endpointDeleteContent: 'Would you like to remove {{name}}? ', - endpointModalTitle: 'Setup endpoint', - endpointModalDesc: 'Once configured, the features provided by the plugin via API endpoints can be used.', - serviceOk: 'Service OK', - disabled: 'Disabled', - modelNum: '{{num}} MODELS INCLUDED', - toolSelector: { - title: 'Add tool', - toolSetting: 'Tool Settings', - toolLabel: 'Tool', - descriptionLabel: 'Tool description', - descriptionPlaceholder: 'Brief description of the tool\'s purpose, e.g., get the temperature for a specific location.', - placeholder: 'Select a tool...', - settings: 'USER SETTINGS', - params: 'REASONING CONFIG', - paramsTip1: 'Controls LLM inference parameters.', - paramsTip2: 'When \'Auto\' is off, the default value is used.', - auto: 'Auto', - empty: 'Click the \'+\' button to add tools. You can add multiple tools.', - uninstalledTitle: 'Tool not installed', - uninstalledContent: 'This plugin is installed from the local/GitHub repository. Please use after installation.', - uninstalledLink: 'Manage in Plugins', - unsupportedTitle: 'Unsupported Action', - unsupportedContent: 'The installed plugin version does not provide this action.', - unsupportedContent2: 'Click to switch version.', - unsupportedMCPTool: 'Currently selected agent strategy plugin version does not support MCP tools.', - }, - configureApp: 'Configure App', - configureModel: 'Configure model', - configureTool: 'Configure tool', - deprecation: { - fullMessage: 'This plugin has been deprecated due to {{deprecatedReason}}, and will no longer be updated. Please use {{-alternativePluginId}} instead.', - onlyReason: 'This plugin has been deprecated due to {{deprecatedReason}} and will no longer be updated.', - noReason: 'This plugin has been deprecated and will no longer be updated.', - reason: { - businessAdjustments: 'business adjustments', - ownershipTransferred: 'ownership transferred', - noMaintainer: 'no maintainer', - }, - }, - }, - install: '{{num}} installs', - installAction: 'Install', - debugInfo: { - title: 'Debugging', - viewDocs: 'View Docs', - }, - privilege: { - title: 'Plugin Preferences', - whoCanInstall: 'Who can install and manage plugins?', - whoCanDebug: 'Who can debug plugins?', - everyone: 'Everyone', - admins: 'Admins', - noone: 'No one', - }, - autoUpdate: { - automaticUpdates: 'Automatic updates', - updateTime: 'Update time', - specifyPluginsToUpdate: 'Specify plugins to update', - strategy: { - disabled: { - name: 'Disabled', - description: 'Plugins will not auto-update', - }, - fixOnly: { - name: 'Fix Only', - description: 'Auto-update for patch versions only (e.g., 1.0.1 → 1.0.2). Minor version changes won\'t trigger updates.', - selectedDescription: 'Auto-update for patch versions only', - }, - latest: { - name: 'Latest', - description: 'Always update to latest version', - selectedDescription: 'Always update to latest version', - }, - }, - updateTimeTitle: 'Update time', - upgradeMode: { - all: 'Update all', - exclude: 'Exclude selected', - partial: 'Only selected', - }, - upgradeModePlaceholder: { - exclude: 'Selected plugins will not auto-update', - partial: 'Only selected plugins will auto-update. No plugins are currently selected, so no plugins will auto-update.', - }, - excludeUpdate: 'The following {{num}} plugins will not auto-update', - partialUPdate: 'Only the following {{num}} plugins will auto-update', - operation: { - clearAll: 'Clear all', - select: 'Select plugins', - }, - nextUpdateTime: 'Next auto-update: {{time}}', - pluginDowngradeWarning: { - title: 'Plugin Downgrade', - description: 'Auto-update is currently enabled for this plugin. Downgrading the version may cause your changes to be overwritten during the next automatic update.', - downgrade: 'Downgrade anyway', - exclude: 'Exclude from auto-update', - }, - noPluginPlaceholder: { - noFound: 'No plugins were found', - noInstalled: 'No plugins installed', - }, - updateSettings: 'Update Settings', - changeTimezone: 'To change time zone, go to Settings', - }, - pluginInfoModal: { - title: 'Plugin info', - repository: 'Repository', - release: 'Release', - packageName: 'Package', - }, - action: { - checkForUpdates: 'Check for updates', - pluginInfo: 'Plugin info', - delete: 'Remove plugin', - deleteContentLeft: 'Would you like to remove ', - deleteContentRight: ' plugin?', - usedInApps: 'This plugin is being used in {{num}} apps.', - }, - installModal: { - installPlugin: 'Install Plugin', - installComplete: 'Installation complete', - installedSuccessfully: 'Installation successful', - installedSuccessfullyDesc: 'The plugin has been installed successfully.', - uploadFailed: 'Upload failed', - installFailed: 'Installation failed', - installFailedDesc: 'The plugin has been installed failed.', - install: 'Install', - installing: 'Installing...', - uploadingPackage: 'Uploading {{packageName}}...', - readyToInstall: 'About to install the following plugin', - readyToInstallPackage: 'About to install the following plugin', - readyToInstallPackages: 'About to install the following {{num}} plugins', - fromTrustSource: 'Please make sure that you only install plugins from a trusted source.', - dropPluginToInstall: 'Drop plugin package here to install', - labels: { - repository: 'Repository', - version: 'Version', - package: 'Package', - }, - close: 'Close', - cancel: 'Cancel', - back: 'Back', - next: 'Next', - pluginLoadError: 'Plugin load error', - pluginLoadErrorDesc: 'This plugin will not be installed', - installWarning: 'This plugin is not allowed to be installed.', - }, - installFromGitHub: { - installPlugin: 'Install plugin from GitHub', - updatePlugin: 'Update plugin from GitHub', - installedSuccessfully: 'Installation successful', - installFailed: 'Installation failed', - uploadFailed: 'Upload failed', - gitHubRepo: 'GitHub repository', - selectVersion: 'Select version', - selectVersionPlaceholder: 'Please select a version', - installNote: 'Please make sure that you only install plugins from a trusted source.', - selectPackage: 'Select package', - selectPackagePlaceholder: 'Please select a package', - }, - upgrade: { - title: 'Install Plugin', - successfulTitle: 'Install successful', - description: 'About to install the following plugin', - usedInApps: 'Used in {{num}} apps', - upgrade: 'Install', - upgrading: 'Installing...', - close: 'Close', - }, - error: { - inValidGitHubUrl: 'Invalid GitHub URL. Please enter a valid URL in the format: https://github.com/owner/repo', - fetchReleasesError: 'Unable to retrieve releases. Please try again later.', - noReleasesFound: 'No releases found. Please check the GitHub repository or the input URL.', - }, - marketplace: { - empower: 'Empower your AI development', - discover: 'Discover', - and: 'and', - difyMarketplace: 'Dify Marketplace', - moreFrom: 'More from Marketplace', - noPluginFound: 'No plugin found', - pluginsResult: '{{num}} results', - sortBy: 'Sort by', - sortOption: { - mostPopular: 'Most Popular', - recentlyUpdated: 'Recently Updated', - newlyReleased: 'Newly Released', - firstReleased: 'First Released', - }, - viewMore: 'View more', - verifiedTip: 'Verified by Dify', - partnerTip: 'Verified by a Dify partner', - }, - task: { - installing: 'Installing plugins', - installingWithSuccess: 'Installing {{installingLength}} plugins, {{successLength}} success.', - installingWithError: 'Installing {{installingLength}} plugins, {{successLength}} success, {{errorLength}} failed', - installError: '{{errorLength}} plugins failed to install, click to view', - installedError: '{{errorLength}} plugins failed to install', - installSuccess: '{{successLength}} plugins installed successfully', - installed: 'Installed', - clearAll: 'Clear all', - runningPlugins: 'Installing Plugins', - successPlugins: 'Successfully Installed Plugins', - errorPlugins: 'Failed to Install Plugins', - }, - requestAPlugin: 'Request a plugin', - publishPlugins: 'Publish plugins', - difyVersionNotCompatible: 'The current Dify version is not compatible with this plugin, please upgrade to the minimum version required: {{minimalDifyVersion}}', - auth: { - default: 'Default', - custom: 'Custom', - setDefault: 'Set as default', - useOAuth: 'Use OAuth', - useOAuthAuth: 'Use OAuth Authorization', - addOAuth: 'Add OAuth', - setupOAuth: 'Setup OAuth Client', - useApi: 'Use API Key', - addApi: 'Add API Key', - useApiAuth: 'API Key Authorization Configuration', - useApiAuthDesc: 'After configuring credentials, all members within the workspace can use this tool when orchestrating applications.', - oauthClientSettings: 'OAuth Client Settings', - saveOnly: 'Save only', - saveAndAuth: 'Save and Authorize', - authorization: 'Authorization', - authorizations: 'Authorizations', - authorizationName: 'Authorization Name', - workspaceDefault: 'Workspace Default', - authRemoved: 'Auth removed', - clientInfo: 'As no system client secrets found for this tool provider, setup it manually is required, for redirect_uri, please use', - oauthClient: 'OAuth Client', - credentialUnavailable: 'Credentials currently unavailable. Please contact admin.', - credentialUnavailableInButton: 'Credential unavailable', - customCredentialUnavailable: 'Custom credentials currently unavailable', - unavailable: 'Unavailable', - connectedWorkspace: 'Connected Workspace', - emptyAuth: 'Please configure authentication', - }, - readmeInfo: { - title: 'README', - needHelpCheckReadme: 'Need help? Check the README.', - noReadmeAvailable: 'No README available', - failedToFetch: 'Failed to fetch README', - }, -} - -export default translation diff --git a/web/i18n/en-US/register.json b/web/i18n/en-US/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/en-US/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/en-US/register.ts b/web/i18n/en-US/register.ts deleted file mode 100644 index 928649474b..0000000000 --- a/web/i18n/en-US/register.ts +++ /dev/null @@ -1,4 +0,0 @@ -const translation = { -} - -export default translation diff --git a/web/i18n/en-US/run-log.json b/web/i18n/en-US/run-log.json new file mode 100644 index 0000000000..1025323722 --- /dev/null +++ b/web/i18n/en-US/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "INPUT", + "result": "RESULT", + "detail": "DETAIL", + "tracing": "TRACING", + "resultPanel": { + "status": "STATUS", + "time": "ELAPSED TIME", + "tokens": "TOTAL TOKENS" + }, + "meta": { + "title": "METADATA", + "status": "Status", + "version": "Version", + "executor": "Executor", + "startTime": "Start Time", + "time": "Elapsed Time", + "tokens": "Total Tokens", + "steps": "Run Steps" + }, + "resultEmpty": { + "title": "This run only output JSON format,", + "tipLeft": "please go to the ", + "link": "detail panel", + "tipRight": " view it." + }, + "actionLogs": "Action Logs", + "circularInvocationTip": "There is circular invocation of tools/nodes in the current workflow." +} diff --git a/web/i18n/en-US/run-log.ts b/web/i18n/en-US/run-log.ts deleted file mode 100644 index 3c851f4548..0000000000 --- a/web/i18n/en-US/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -const translation = { - input: 'INPUT', - result: 'RESULT', - detail: 'DETAIL', - tracing: 'TRACING', - resultPanel: { - status: 'STATUS', - time: 'ELAPSED TIME', - tokens: 'TOTAL TOKENS', - }, - meta: { - title: 'METADATA', - status: 'Status', - version: 'Version', - executor: 'Executor', - startTime: 'Start Time', - time: 'Elapsed Time', - tokens: 'Total Tokens', - steps: 'Run Steps', - }, - resultEmpty: { - title: 'This run only output JSON format,', - tipLeft: 'please go to the ', - link: 'detail panel', - tipRight: ' view it.', - }, - actionLogs: 'Action Logs', - circularInvocationTip: 'There is circular invocation of tools/nodes in the current workflow.', -} - -export default translation diff --git a/web/i18n/en-US/share.json b/web/i18n/en-US/share.json new file mode 100644 index 0000000000..ce440d3b5f --- /dev/null +++ b/web/i18n/en-US/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "", + "appUnavailable": "App is unavailable", + "appUnknownError": "App is unavailable" + }, + "chat": { + "newChat": "Start New chat", + "newChatTip": "Already in a new chat", + "chatSettingsTitle": "New chat setup", + "chatFormTip": "Chat settings cannot be modified after the chat has started.", + "pinnedTitle": "Pinned", + "unpinnedTitle": "Recent", + "newChatDefaultName": "New conversation", + "resetChat": "Reset conversation", + "viewChatSettings": "View chat settings", + "poweredBy": "Powered by", + "prompt": "Prompt", + "privatePromptConfigTitle": "Conversation settings", + "publicPromptConfigTitle": "Initial Prompt", + "configStatusDes": "Before starting, you can modify the conversation settings", + "configDisabled": "Previous session settings have been used for this session.", + "startChat": "Start Chat", + "privacyPolicyLeft": "Please read the ", + "privacyPolicyMiddle": "privacy policy", + "privacyPolicyRight": " provided by the app developer.", + "deleteConversation": { + "title": "Delete conversation", + "content": "Are you sure you want to delete this conversation?" + }, + "tryToSolve": "Try to solve", + "temporarySystemIssue": "Sorry, temporary system issue.", + "expand": "Expand", + "collapse": "Collapse" + }, + "generation": { + "tabs": { + "create": "Run Once", + "batch": "Run Batch", + "saved": "Saved" + }, + "savedNoData": { + "title": "You haven't saved a result yet!", + "description": "Start generating content, and find your saved results here.", + "startCreateContent": "Start create content" + }, + "title": "AI Completion", + "queryTitle": "Query content", + "completionResult": "Completion result", + "queryPlaceholder": "Write your query content...", + "run": "Execute", + "execution": "Run", + "executions": "{{num}} runs", + "copy": "Copy", + "resultTitle": "AI Completion", + "noData": "AI will give you what you want here.", + "csvUploadTitle": "Drag and drop your CSV file here, or ", + "browse": "browse", + "csvStructureTitle": "The CSV file must conform to the following structure:", + "downloadTemplate": "Download the template here", + "field": "Field", + "stopRun": "Stop Run", + "batchFailed": { + "info": "{{num}} failed executions", + "retry": "Retry", + "outputPlaceholder": "No output content" + }, + "errorMsg": { + "empty": "Please input content in the uploaded file.", + "fileStructNotMatch": "The uploaded CSV file not match the struct.", + "emptyLine": "Row {{rowIndex}} is empty", + "invalidLine": "Row {{rowIndex}}: {{varName}} value can not be empty", + "moreThanMaxLengthLine": "Row {{rowIndex}}: {{varName}} value can not be more than {{maxLength}} characters", + "atLeastOne": "Please input at least one row in the uploaded file." + } + }, + "login": { + "backToHome": "Back to Home" + } +} diff --git a/web/i18n/en-US/share.ts b/web/i18n/en-US/share.ts deleted file mode 100644 index 9139a03514..0000000000 --- a/web/i18n/en-US/share.ts +++ /dev/null @@ -1,86 +0,0 @@ -const translation = { - common: { - welcome: '', - appUnavailable: 'App is unavailable', - appUnknownError: 'App is unavailable', - }, - chat: { - newChat: 'Start New chat', - newChatTip: 'Already in a new chat', - chatSettingsTitle: 'New chat setup', - chatFormTip: 'Chat settings cannot be modified after the chat has started.', - pinnedTitle: 'Pinned', - unpinnedTitle: 'Recent', - newChatDefaultName: 'New conversation', - resetChat: 'Reset conversation', - viewChatSettings: 'View chat settings', - poweredBy: 'Powered by', - prompt: 'Prompt', - privatePromptConfigTitle: 'Conversation settings', - publicPromptConfigTitle: 'Initial Prompt', - configStatusDes: 'Before starting, you can modify the conversation settings', - configDisabled: - 'Previous session settings have been used for this session.', - startChat: 'Start Chat', - privacyPolicyLeft: - 'Please read the ', - privacyPolicyMiddle: - 'privacy policy', - privacyPolicyRight: - ' provided by the app developer.', - deleteConversation: { - title: 'Delete conversation', - content: 'Are you sure you want to delete this conversation?', - }, - tryToSolve: 'Try to solve', - temporarySystemIssue: 'Sorry, temporary system issue.', - expand: 'Expand', - collapse: 'Collapse', - }, - generation: { - tabs: { - create: 'Run Once', - batch: 'Run Batch', - saved: 'Saved', - }, - savedNoData: { - title: 'You haven\'t saved a result yet!', - description: 'Start generating content, and find your saved results here.', - startCreateContent: 'Start create content', - }, - title: 'AI Completion', - queryTitle: 'Query content', - completionResult: 'Completion result', - queryPlaceholder: 'Write your query content...', - run: 'Execute', - execution: 'Run', - executions: '{{num}} runs', - copy: 'Copy', - resultTitle: 'AI Completion', - noData: 'AI will give you what you want here.', - csvUploadTitle: 'Drag and drop your CSV file here, or ', - browse: 'browse', - csvStructureTitle: 'The CSV file must conform to the following structure:', - downloadTemplate: 'Download the template here', - field: 'Field', - stopRun: 'Stop Run', - batchFailed: { - info: '{{num}} failed executions', - retry: 'Retry', - outputPlaceholder: 'No output content', - }, - errorMsg: { - empty: 'Please input content in the uploaded file.', - fileStructNotMatch: 'The uploaded CSV file not match the struct.', - emptyLine: 'Row {{rowIndex}} is empty', - invalidLine: 'Row {{rowIndex}}: {{varName}} value can not be empty', - moreThanMaxLengthLine: 'Row {{rowIndex}}: {{varName}} value can not be more than {{maxLength}} characters', - atLeastOne: 'Please input at least one row in the uploaded file.', - }, - }, - login: { - backToHome: 'Back to Home', - }, -} - -export default translation diff --git a/web/i18n/en-US/time.json b/web/i18n/en-US/time.json new file mode 100644 index 0000000000..ff32d2a405 --- /dev/null +++ b/web/i18n/en-US/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Sun": "Sun", + "Mon": "Mon", + "Tue": "Tue", + "Wed": "Wed", + "Thu": "Thu", + "Fri": "Fri", + "Sat": "Sat" + }, + "months": { + "January": "January", + "February": "February", + "March": "March", + "April": "April", + "May": "May", + "June": "June", + "July": "July", + "August": "August", + "September": "September", + "October": "October", + "November": "November", + "December": "December" + }, + "operation": { + "now": "Now", + "ok": "OK", + "cancel": "Cancel", + "pickDate": "Pick Date" + }, + "title": { + "pickTime": "Pick Time" + }, + "defaultPlaceholder": "Pick a time...", + "dateFormats": { + "display": "MMMM D, YYYY", + "displayWithTime": "MMMM D, YYYY hh:mm A", + "input": "YYYY-MM-DD", + "output": "YYYY-MM-DD", + "outputWithTime": "YYYY-MM-DDTHH:mm:ss.SSSZ" + } +} diff --git a/web/i18n/en-US/time.ts b/web/i18n/en-US/time.ts deleted file mode 100644 index 9d72637d84..0000000000 --- a/web/i18n/en-US/time.ts +++ /dev/null @@ -1,45 +0,0 @@ -const translation = { - daysInWeek: { - Sun: 'Sun', - Mon: 'Mon', - Tue: 'Tue', - Wed: 'Wed', - Thu: 'Thu', - Fri: 'Fri', - Sat: 'Sat', - }, - months: { - January: 'January', - February: 'February', - March: 'March', - April: 'April', - May: 'May', - June: 'June', - July: 'July', - August: 'August', - September: 'September', - October: 'October', - November: 'November', - December: 'December', - }, - operation: { - now: 'Now', - ok: 'OK', - cancel: 'Cancel', - pickDate: 'Pick Date', - }, - title: { - pickTime: 'Pick Time', - }, - defaultPlaceholder: 'Pick a time...', - // Date format configurations - dateFormats: { - display: 'MMMM D, YYYY', - displayWithTime: 'MMMM D, YYYY hh:mm A', - input: 'YYYY-MM-DD', - output: 'YYYY-MM-DD', - outputWithTime: 'YYYY-MM-DDTHH:mm:ss.SSSZ', - }, -} - -export default translation diff --git a/web/i18n/en-US/tools.json b/web/i18n/en-US/tools.json new file mode 100644 index 0000000000..f9b1eb252f --- /dev/null +++ b/web/i18n/en-US/tools.json @@ -0,0 +1,263 @@ +{ + "title": "Tools", + "createCustomTool": "Create Custom Tool", + "customToolTip": "Learn more about Dify custom tools", + "type": { + "builtIn": "Tools", + "custom": "Custom", + "workflow": "Workflow" + }, + "contribute": { + "line1": "I'm interested in ", + "line2": "contributing tools to Dify.", + "viewGuide": "View the guide" + }, + "author": "By", + "auth": { + "unauthorized": "Unauthorized", + "authorized": "Authorized", + "setup": "Set up authorization to use", + "setupModalTitle": "Set Up Authorization", + "setupModalTitleDescription": "After configuring credentials, all members within the workspace can use this tool when orchestrating applications." + }, + "includeToolNum": "{{num}} {{action}} included", + "addToolModal": { + "type": "type", + "category": "category", + "added": "added", + "custom": { + "title": "No custom tool available", + "tip": "Create a custom tool" + }, + "workflow": { + "title": "No workflow tool available", + "tip": "Publish workflows as tools in Studio" + }, + "mcp": { + "title": "No MCP tool available", + "tip": "Add an MCP server" + }, + "agent": { + "title": "No agent strategy available" + } + }, + "createTool": { + "title": "Create Custom Tool", + "editAction": "Configure", + "editTitle": "Edit Custom Tool", + "name": "Name", + "toolNamePlaceHolder": "Enter the tool name", + "nameForToolCall": "Tool call name", + "nameForToolCallPlaceHolder": "Used for machine recognition, such as getCurrentWeather, list_pets", + "nameForToolCallTip": "Only supports numbers, letters, and underscores.", + "description": "Description", + "descriptionPlaceholder": "Brief description of the tool's purpose, e.g., get the temperature for a specific location.", + "schema": "Schema", + "schemaPlaceHolder": "Enter your OpenAPI schema here", + "viewSchemaSpec": "View the OpenAPI-Swagger Specification", + "importFromUrl": "Import from URL", + "importFromUrlPlaceHolder": "https://...", + "urlError": "Please enter a valid URL", + "examples": "Examples", + "exampleOptions": { + "json": "Weather(JSON)", + "yaml": "Pet Store(YAML)", + "blankTemplate": "Blank Template" + }, + "availableTools": { + "title": "Available Tools", + "name": "Name", + "description": "Description", + "method": "Method", + "path": "Path", + "action": "Actions", + "test": "Test" + }, + "authMethod": { + "title": "Authorization method", + "type": "Authorization type", + "keyTooltip": "Http Header Key, You can leave it with \"Authorization\" if you have no idea what it is or set it to a custom value", + "queryParam": "Query Parameter", + "queryParamTooltip": "The name of the API key query parameter to pass, e.g. \"key\" in \"https://example.com/test?key=API_KEY\".", + "types": { + "none": "None", + "api_key_header": "Header", + "api_key_query": "Query Param", + "apiKeyPlaceholder": "HTTP header name for API Key", + "apiValuePlaceholder": "Enter API Key", + "queryParamPlaceholder": "Query parameter name for API Key" + }, + "key": "Key", + "value": "Value" + }, + "authHeaderPrefix": { + "title": "Auth Type", + "types": { + "basic": "Basic", + "bearer": "Bearer", + "custom": "Custom" + } + }, + "privacyPolicy": "Privacy policy", + "privacyPolicyPlaceholder": "Please enter privacy policy", + "toolInput": { + "title": "Tool Input", + "name": "Name", + "required": "Required", + "method": "Method", + "methodSetting": "Setting", + "methodSettingTip": "User fills in the tool configuration", + "methodParameter": "Parameter", + "methodParameterTip": "LLM fills during inference", + "label": "Tags", + "labelPlaceholder": "Choose tags(optional)", + "description": "Description", + "descriptionPlaceholder": "Description of the parameter's meaning" + }, + "toolOutput": { + "title": "Tool Output", + "name": "Name", + "reserved": "Reserved", + "reservedParameterDuplicateTip": "text, json, and files are reserved variables. Variables with these names cannot appear in the output schema.", + "description": "Description" + }, + "customDisclaimer": "Custom disclaimer", + "customDisclaimerPlaceholder": "Please enter custom disclaimer", + "confirmTitle": "Confirm to save ?", + "confirmTip": "Apps using this tool will be affected", + "deleteToolConfirmTitle": "Delete this Tool?", + "deleteToolConfirmContent": "Deleting the Tool is irreversible. Users will no longer be able to access your Tool." + }, + "test": { + "title": "Test", + "parametersValue": "Parameters & Value", + "parameters": "Parameters", + "value": "Value", + "testResult": "Test Results", + "testResultPlaceholder": "Test result will show here" + }, + "thought": { + "using": "Using", + "used": "Used", + "requestTitle": "Request", + "responseTitle": "Response" + }, + "setBuiltInTools": { + "info": "Info", + "setting": "Setting", + "toolDescription": "Tool description", + "parameters": "parameters", + "string": "string", + "number": "number", + "file": "file", + "required": "Required", + "infoAndSetting": "Info & Settings" + }, + "noCustomTool": { + "title": "No custom tools!", + "content": "Add and manage your custom tools here for building AI apps.", + "createTool": "Create Tool" + }, + "noSearchRes": { + "title": "Sorry, no results!", + "content": "We couldn't find any tools that match your search.", + "reset": "Reset Search" + }, + "builtInPromptTitle": "Prompt", + "toolRemoved": "Tool removed", + "notAuthorized": "Not authorized", + "howToGet": "How to get", + "openInStudio": "Open in Studio", + "toolNameUsageTip": "Tool call name for agent reasoning and prompting", + "copyToolName": "Copy Name", + "noTools": "No tools found", + "mcp": { + "create": { + "cardTitle": "Add MCP Server (HTTP)", + "cardLink": "Learn more about MCP server integration" + }, + "noConfigured": "Unconfigured", + "updateTime": "Updated", + "toolsCount": "{{count}} tools", + "noTools": "No tools available", + "modal": { + "title": "Add MCP Server (HTTP)", + "editTitle": "Edit MCP Server (HTTP)", + "name": "Name & Icon", + "namePlaceholder": "Name your MCP server", + "serverUrl": "Server URL", + "serverUrlPlaceholder": "URL to server endpoint", + "serverUrlWarning": "Updating the server address may disrupt applications that depend on this server", + "serverIdentifier": "Server Identifier", + "serverIdentifierTip": "Unique identifier for the MCP server within the workspace. Lowercase letters, numbers, underscores, and hyphens only. Up to 24 characters.", + "serverIdentifierPlaceholder": "Unique identifier, e.g., my-mcp-server", + "serverIdentifierWarning": "The server won't be recognized by existing apps after an ID change", + "headers": "Headers", + "headersTip": "Additional HTTP headers to send with MCP server requests", + "headerKey": "Header Name", + "headerValue": "Header Value", + "headerKeyPlaceholder": "e.g., Authorization", + "headerValuePlaceholder": "e.g., Bearer token123", + "addHeader": "Add Header", + "noHeaders": "No custom headers configured", + "maskedHeadersTip": "Header values are masked for security. Changes will update the actual values.", + "cancel": "Cancel", + "save": "Save", + "confirm": "Add & Authorize", + "timeout": "Timeout", + "sseReadTimeout": "SSE Read Timeout", + "timeoutPlaceholder": "30", + "authentication": "Authentication", + "useDynamicClientRegistration": "Use Dynamic Client Registration", + "redirectUrlWarning": "Please configure your OAuth redirect URL to:", + "clientID": "Client ID", + "clientSecret": "Client Secret", + "clientSecretPlaceholder": "Client Secret", + "configurations": "Configurations" + }, + "delete": "Remove MCP Server", + "deleteConfirmTitle": "Would you like to remove {{mcp}}?", + "operation": { + "edit": "Edit", + "remove": "Remove" + }, + "authorize": "Authorize", + "authorizing": "Authorizing...", + "authorizingRequired": "Authorization is required", + "authorizeTip": "After authorization, tools will be displayed here.", + "update": "Update", + "updating": "Updating", + "gettingTools": "Getting Tools...", + "updateTools": "Updating Tools...", + "toolsEmpty": "Tools not loaded", + "getTools": "Get tools", + "toolUpdateConfirmTitle": "Update Tool List", + "toolUpdateConfirmContent": "Updating the tool list may affect existing apps. Do you wish to proceed?", + "toolsNum": "{{count}} tools included", + "onlyTool": "1 tool included", + "identifier": "Server Identifier (Click to Copy)", + "server": { + "title": "MCP Server", + "url": "Server URL", + "reGen": "Do you want to regenerator server URL?", + "addDescription": "Add description", + "edit": "Edit description", + "modal": { + "addTitle": "Add description to enable MCP server", + "editTitle": "Edit description", + "description": "Description", + "descriptionPlaceholder": "Explain what this tool does and how it should be used by the LLM", + "parameters": "Parameters", + "parametersTip": "Add descriptions for each parameter to help the LLM understand their purpose and constraints.", + "parametersPlaceholder": "Parameter purpose and constraints", + "confirm": "Enable MCP Server" + }, + "publishTip": "App not published. Please publish the app first." + }, + "toolItem": { + "noDescription": "No description", + "parameters": "Parameters" + } + }, + "allTools": "All tools" +} diff --git a/web/i18n/en-US/tools.ts b/web/i18n/en-US/tools.ts deleted file mode 100644 index b2753a5721..0000000000 --- a/web/i18n/en-US/tools.ts +++ /dev/null @@ -1,265 +0,0 @@ -const translation = { - title: 'Tools', - createCustomTool: 'Create Custom Tool', - customToolTip: 'Learn more about Dify custom tools', - type: { - builtIn: 'Tools', - custom: 'Custom', - workflow: 'Workflow', - }, - contribute: { - line1: 'I\'m interested in ', - line2: 'contributing tools to Dify.', - viewGuide: 'View the guide', - }, - author: 'By', - auth: { - unauthorized: 'Unauthorized', - authorized: 'Authorized', - setup: 'Set up authorization to use', - setupModalTitle: 'Set Up Authorization', - setupModalTitleDescription: 'After configuring credentials, all members within the workspace can use this tool when orchestrating applications.', - }, - includeToolNum: '{{num}} {{action}} included', - addToolModal: { - type: 'type', - category: 'category', - added: 'added', - custom: { - title: 'No custom tool available', - tip: 'Create a custom tool', - }, - workflow: { - title: 'No workflow tool available', - tip: 'Publish workflows as tools in Studio', - }, - mcp: { - title: 'No MCP tool available', - tip: 'Add an MCP server', - }, - agent: { - title: 'No agent strategy available', - }, - }, - createTool: { - title: 'Create Custom Tool', - editAction: 'Configure', - editTitle: 'Edit Custom Tool', - name: 'Name', - toolNamePlaceHolder: 'Enter the tool name', - nameForToolCall: 'Tool call name', - nameForToolCallPlaceHolder: 'Used for machine recognition, such as getCurrentWeather, list_pets', - nameForToolCallTip: 'Only supports numbers, letters, and underscores.', - description: 'Description', - descriptionPlaceholder: 'Brief description of the tool\'s purpose, e.g., get the temperature for a specific location.', - schema: 'Schema', - schemaPlaceHolder: 'Enter your OpenAPI schema here', - viewSchemaSpec: 'View the OpenAPI-Swagger Specification', - importFromUrl: 'Import from URL', - importFromUrlPlaceHolder: 'https://...', - urlError: 'Please enter a valid URL', - examples: 'Examples', - exampleOptions: { - json: 'Weather(JSON)', - yaml: 'Pet Store(YAML)', - blankTemplate: 'Blank Template', - }, - availableTools: { - title: 'Available Tools', - name: 'Name', - description: 'Description', - method: 'Method', - path: 'Path', - action: 'Actions', - test: 'Test', - }, - authMethod: { - title: 'Authorization method', - type: 'Authorization type', - keyTooltip: 'Http Header Key, You can leave it with "Authorization" if you have no idea what it is or set it to a custom value', - queryParam: 'Query Parameter', - queryParamTooltip: 'The name of the API key query parameter to pass, e.g. "key" in "https://example.com/test?key=API_KEY".', - types: { - none: 'None', - api_key_header: 'Header', - api_key_query: 'Query Param', - apiKeyPlaceholder: 'HTTP header name for API Key', - apiValuePlaceholder: 'Enter API Key', - queryParamPlaceholder: 'Query parameter name for API Key', - }, - key: 'Key', - value: 'Value', - }, - authHeaderPrefix: { - title: 'Auth Type', - types: { - basic: 'Basic', - bearer: 'Bearer', - custom: 'Custom', - }, - }, - privacyPolicy: 'Privacy policy', - privacyPolicyPlaceholder: 'Please enter privacy policy', - toolInput: { - title: 'Tool Input', - name: 'Name', - required: 'Required', - method: 'Method', - methodSetting: 'Setting', - methodSettingTip: 'User fills in the tool configuration', - methodParameter: 'Parameter', - methodParameterTip: 'LLM fills during inference', - label: 'Tags', - labelPlaceholder: 'Choose tags(optional)', - description: 'Description', - descriptionPlaceholder: 'Description of the parameter\'s meaning', - }, - toolOutput: { - title: 'Tool Output', - name: 'Name', - reserved: 'Reserved', - reservedParameterDuplicateTip: 'text, json, and files are reserved variables. Variables with these names cannot appear in the output schema.', - description: 'Description', - }, - customDisclaimer: 'Custom disclaimer', - customDisclaimerPlaceholder: 'Please enter custom disclaimer', - confirmTitle: 'Confirm to save ?', - confirmTip: 'Apps using this tool will be affected', - deleteToolConfirmTitle: 'Delete this Tool?', - deleteToolConfirmContent: 'Deleting the Tool is irreversible. Users will no longer be able to access your Tool.', - }, - test: { - title: 'Test', - parametersValue: 'Parameters & Value', - parameters: 'Parameters', - value: 'Value', - testResult: 'Test Results', - testResultPlaceholder: 'Test result will show here', - }, - thought: { - using: 'Using', - used: 'Used', - requestTitle: 'Request', - responseTitle: 'Response', - }, - setBuiltInTools: { - info: 'Info', - setting: 'Setting', - toolDescription: 'Tool description', - parameters: 'parameters', - string: 'string', - number: 'number', - file: 'file', - required: 'Required', - infoAndSetting: 'Info & Settings', - }, - noCustomTool: { - title: 'No custom tools!', - content: 'Add and manage your custom tools here for building AI apps.', - createTool: 'Create Tool', - }, - noSearchRes: { - title: 'Sorry, no results!', - content: 'We couldn\'t find any tools that match your search.', - reset: 'Reset Search', - }, - builtInPromptTitle: 'Prompt', - toolRemoved: 'Tool removed', - notAuthorized: 'Not authorized', - howToGet: 'How to get', - openInStudio: 'Open in Studio', - toolNameUsageTip: 'Tool call name for agent reasoning and prompting', - copyToolName: 'Copy Name', - noTools: 'No tools found', - mcp: { - create: { - cardTitle: 'Add MCP Server (HTTP)', - cardLink: 'Learn more about MCP server integration', - }, - noConfigured: 'Unconfigured', - updateTime: 'Updated', - toolsCount: '{{count}} tools', - noTools: 'No tools available', - modal: { - title: 'Add MCP Server (HTTP)', - editTitle: 'Edit MCP Server (HTTP)', - name: 'Name & Icon', - namePlaceholder: 'Name your MCP server', - serverUrl: 'Server URL', - serverUrlPlaceholder: 'URL to server endpoint', - serverUrlWarning: 'Updating the server address may disrupt applications that depend on this server', - serverIdentifier: 'Server Identifier', - serverIdentifierTip: 'Unique identifier for the MCP server within the workspace. Lowercase letters, numbers, underscores, and hyphens only. Up to 24 characters.', - serverIdentifierPlaceholder: 'Unique identifier, e.g., my-mcp-server', - serverIdentifierWarning: 'The server won\'t be recognized by existing apps after an ID change', - headers: 'Headers', - headersTip: 'Additional HTTP headers to send with MCP server requests', - headerKey: 'Header Name', - headerValue: 'Header Value', - headerKeyPlaceholder: 'e.g., Authorization', - headerValuePlaceholder: 'e.g., Bearer token123', - addHeader: 'Add Header', - noHeaders: 'No custom headers configured', - maskedHeadersTip: 'Header values are masked for security. Changes will update the actual values.', - cancel: 'Cancel', - save: 'Save', - confirm: 'Add & Authorize', - timeout: 'Timeout', - sseReadTimeout: 'SSE Read Timeout', - timeoutPlaceholder: '30', - authentication: 'Authentication', - useDynamicClientRegistration: 'Use Dynamic Client Registration', - redirectUrlWarning: 'Please configure your OAuth redirect URL to:', - clientID: 'Client ID', - clientSecret: 'Client Secret', - clientSecretPlaceholder: 'Client Secret', - configurations: 'Configurations', - }, - delete: 'Remove MCP Server', - deleteConfirmTitle: 'Would you like to remove {{mcp}}?', - operation: { - edit: 'Edit', - remove: 'Remove', - }, - authorize: 'Authorize', - authorizing: 'Authorizing...', - authorizingRequired: 'Authorization is required', - authorizeTip: 'After authorization, tools will be displayed here.', - update: 'Update', - updating: 'Updating', - gettingTools: 'Getting Tools...', - updateTools: 'Updating Tools...', - toolsEmpty: 'Tools not loaded', - getTools: 'Get tools', - toolUpdateConfirmTitle: 'Update Tool List', - toolUpdateConfirmContent: 'Updating the tool list may affect existing apps. Do you wish to proceed?', - toolsNum: '{{count}} tools included', - onlyTool: '1 tool included', - identifier: 'Server Identifier (Click to Copy)', - server: { - title: 'MCP Server', - url: 'Server URL', - reGen: 'Do you want to regenerator server URL?', - addDescription: 'Add description', - edit: 'Edit description', - modal: { - addTitle: 'Add description to enable MCP server', - editTitle: 'Edit description', - description: 'Description', - descriptionPlaceholder: 'Explain what this tool does and how it should be used by the LLM', - parameters: 'Parameters', - parametersTip: 'Add descriptions for each parameter to help the LLM understand their purpose and constraints.', - parametersPlaceholder: 'Parameter purpose and constraints', - confirm: 'Enable MCP Server', - }, - publishTip: 'App not published. Please publish the app first.', - }, - toolItem: { - noDescription: 'No description', - parameters: 'Parameters', - }, - }, - allTools: 'All tools', -} - -export default translation diff --git a/web/i18n/en-US/workflow.json b/web/i18n/en-US/workflow.json new file mode 100644 index 0000000000..431b9df67f --- /dev/null +++ b/web/i18n/en-US/workflow.json @@ -0,0 +1,1297 @@ +{ + "common": { + "undo": "Undo", + "redo": "Redo", + "editing": "Editing", + "autoSaved": "Auto-Saved", + "unpublished": "Unpublished", + "published": "Published", + "publish": "Publish", + "update": "Update", + "publishUpdate": "Publish Update", + "run": "Test Run", + "running": "Running", + "listening": "Listening", + "chooseStartNodeToRun": "Choose the start node to run", + "runAllTriggers": "Run all triggers", + "inRunMode": "In Run Mode", + "inPreview": "In Preview", + "inPreviewMode": "In Preview Mode", + "preview": "Preview", + "viewRunHistory": "View run history", + "runHistory": "Run History", + "goBackToEdit": "Go back to editor", + "conversationLog": "Conversation Log", + "features": "Features", + "featuresDescription": "Enhance web app user experience", + "ImageUploadLegacyTip": "You can now create file type variables in the start form. We will no longer support the image upload feature in the future. ", + "fileUploadTip": "Image upload features have been upgraded to file upload. ", + "featuresDocLink": "Learn more", + "debugAndPreview": "Preview", + "restart": "Restart", + "currentDraft": "Current Draft", + "currentDraftUnpublished": "Current Draft Unpublished", + "latestPublished": "Latest Published", + "publishedAt": "Published", + "restore": "Restore", + "versionHistory": "Version History", + "exitVersions": "Exit Versions", + "runApp": "Run App", + "batchRunApp": "Batch Run App", + "openInExplore": "Open in Explore", + "accessAPIReference": "Access API Reference", + "embedIntoSite": "Embed Into Site", + "addTitle": "Add title...", + "addDescription": "Add description...", + "noVar": "No variable", + "searchVar": "Search variable", + "variableNamePlaceholder": "Variable name", + "setVarValuePlaceholder": "Set variable", + "needConnectTip": "This step is not connected to anything", + "maxTreeDepth": "Maximum limit of {{depth}} nodes per branch", + "needAdd": "{{node}} node must be added", + "needOutputNode": "The Output node must be added", + "needStartNode": "At least one start node must be added", + "needAnswerNode": "The Answer node must be added", + "workflowProcess": "Workflow Process", + "notRunning": "Not running yet", + "previewPlaceholder": "Enter content in the box below to start debugging the Chatbot", + "effectVarConfirm": { + "title": "Remove Variable", + "content": "The variable is used in other nodes. Do you still want to remove it?" + }, + "insertVarTip": "Press the '/' key to insert quickly", + "processData": "Process Data", + "input": "Input", + "output": "Output", + "jinjaEditorPlaceholder": "Type '/' or '{' to insert variable", + "viewOnly": "View Only", + "showRunHistory": "Show Run History", + "enableJinja": "Enable Jinja template support", + "learnMore": "Learn More", + "copy": "Copy", + "duplicate": "Duplicate", + "addBlock": "Add Node", + "pasteHere": "Paste Here", + "pointerMode": "Pointer Mode", + "handMode": "Hand Mode", + "exportImage": "Export Image", + "exportPNG": "Export as PNG", + "exportJPEG": "Export as JPEG", + "exportSVG": "Export as SVG", + "currentView": "Current View", + "currentWorkflow": "Current Workflow", + "moreActions": "More Actions", + "model": "Model", + "workflowAsTool": "Workflow as Tool", + "configureRequired": "Configure Required", + "configure": "Configure", + "manageInTools": "Manage in Tools", + "workflowAsToolTip": "Tool reconfiguration is required after the workflow update.", + "workflowAsToolDisabledHint": "Publish the latest workflow and ensure a connected User Input node before configuring it as a tool.", + "viewDetailInTracingPanel": "View details", + "syncingData": "Syncing data, just a few seconds.", + "importDSL": "Import DSL", + "importDSLTip": "Current draft will be overwritten.\nExport workflow as backup before importing.", + "backupCurrentDraft": "Backup Current Draft", + "chooseDSL": "Choose DSL file", + "overwriteAndImport": "Overwrite and Import", + "importFailure": "Import Failed", + "importWarning": "Caution", + "importWarningDetails": "DSL version difference may affect certain features", + "importSuccess": "Import Successfully", + "parallelTip": { + "click": { + "title": "Click", + "desc": " to add" + }, + "drag": { + "title": "Drag", + "desc": " to connect" + }, + "limit": "Parallelism is limited to {{num}} branches.", + "depthLimit": "Parallel nesting layer limit of {{num}} layers" + }, + "disconnect": "Disconnect", + "jumpToNode": "Jump to this node", + "addParallelNode": "Add Parallel Node", + "parallel": "PARALLEL", + "branch": "BRANCH", + "onFailure": "On Failure", + "addFailureBranch": "Add Fail Branch", + "loadMore": "Load More", + "noHistory": "No History", + "tagBound": "Number of apps using this tag" + }, + "publishLimit": { + "startNodeTitlePrefix": "Upgrade to", + "startNodeTitleSuffix": "unlock unlimited triggers per workflow", + "startNodeDesc": "You’ve reached the limit of 2 triggers per workflow for this plan. Upgrade to publish this workflow." + }, + "env": { + "envPanelTitle": "Environment Variables", + "envDescription": "Environment variables can be used to store private information and credentials. They are read-only and can be separated from the DSL file during export.", + "envPanelButton": "Add Variable", + "modal": { + "title": "Add Environment Variable", + "editTitle": "Edit Environment Variable", + "type": "Type", + "name": "Name", + "namePlaceholder": "env name", + "value": "Value", + "valuePlaceholder": "env value", + "secretTip": "Used to define sensitive information or data, with DSL settings configured for leak prevention.", + "description": "Description", + "descriptionPlaceholder": "Describe the variable" + }, + "export": { + "title": "Export Secret environment variables?", + "checkbox": "Export secret values", + "ignore": "Export DSL", + "export": "Export DSL with secret values " + } + }, + "globalVar": { + "title": "System Variables", + "description": "System variables are global variables that can be referenced by any node without wiring when the type is correct, such as end-user ID and workflow ID.", + "fieldsDescription": { + "conversationId": "Conversation ID", + "dialogCount": "Conversation Count", + "userId": "User ID", + "triggerTimestamp": "Application start timestamp", + "appId": "Application ID", + "workflowId": "Workflow ID", + "workflowRunId": "Workflow run ID" + } + }, + "sidebar": { + "exportWarning": "Export Current Saved Version", + "exportWarningDesc": "This will export the current saved version of your workflow. If you have unsaved changes in the editor, please save them first by using the export option in the workflow canvas." + }, + "chatVariable": { + "panelTitle": "Conversation Variables", + "panelDescription": "Conversation Variables are used to store interactive information that LLM needs to remember, including conversation history, uploaded files, user preferences. They are read-write. ", + "docLink": "Visit our docs to learn more.", + "button": "Add Variable", + "modal": { + "title": "Add Conversation Variable", + "editTitle": "Edit Conversation Variable", + "name": "Name", + "namePlaceholder": "Variable name", + "type": "Type", + "value": "Default Value", + "valuePlaceholder": "Default value, leave blank to not set", + "description": "Description", + "descriptionPlaceholder": "Describe the variable", + "editInJSON": "Edit in JSON", + "oneByOne": "Add one by one", + "editInForm": "Edit in Form", + "arrayValue": "Value", + "addArrayValue": "Add Value", + "objectKey": "Key", + "objectType": "Type", + "objectValue": "Default Value" + }, + "storedContent": "Stored content", + "updatedAt": "Updated at " + }, + "changeHistory": { + "title": "Change History", + "placeholder": "You haven't changed anything yet", + "clearHistory": "Clear History", + "hint": "Hint", + "hintText": "Your editing actions are tracked in a change history, which is stored on your device for the duration of this session. This history will be cleared when you leave the editor.", + "stepBackward_one": "{{count}} step backward", + "stepBackward_other": "{{count}} steps backward", + "stepForward_one": "{{count}} step forward", + "stepForward_other": "{{count}} steps forward", + "sessionStart": "Session Start", + "currentState": "Current State", + "nodeTitleChange": "Node title changed", + "nodeDescriptionChange": "Node description changed", + "nodeDragStop": "Node moved", + "nodeChange": "Node changed", + "nodeConnect": "Node connected", + "nodePaste": "Node pasted", + "nodeDelete": "Node deleted", + "nodeAdd": "Node added", + "nodeResize": "Node resized", + "noteAdd": "Note added", + "noteChange": "Note changed", + "noteDelete": "Note deleted", + "edgeDelete": "Node disconnected" + }, + "errorMsg": { + "fieldRequired": "{{field}} is required", + "rerankModelRequired": "A configured Rerank Model is required", + "authRequired": "Authorization is required", + "invalidJson": "{{field}} is invalid JSON", + "fields": { + "variable": "Variable Name", + "variableValue": "Variable Value", + "code": "Code", + "model": "Model", + "rerankModel": "A configured Rerank Model", + "visionVariable": "Vision Variable" + }, + "invalidVariable": "Invalid variable", + "noValidTool": "{{field}} no valid tool selected", + "toolParameterRequired": "{{field}}: parameter [{{param}}] is required", + "startNodeRequired": "Please add a start node first before {{operation}}" + }, + "error": { + "startNodeRequired": "Please add a start node first before {{operation}}", + "operations": { + "connectingNodes": "connecting nodes", + "addingNodes": "adding nodes", + "modifyingWorkflow": "modifying workflow", + "updatingWorkflow": "updating workflow" + } + }, + "singleRun": { + "testRun": "Test Run", + "startRun": "Start Run", + "preparingDataSource": "Preparing Data Source", + "reRun": "Re-run", + "running": "Running", + "testRunIteration": "Test Run Iteration", + "back": "Back", + "iteration": "Iteration", + "loop": "Loop" + }, + "tabs": { + "searchBlock": "Search node", + "start": "Start", + "blocks": "Nodes", + "searchTool": "Search tool", + "searchTrigger": "Search triggers...", + "allTriggers": "All triggers", + "tools": "Tools", + "allTool": "All", + "plugin": "Plugin", + "customTool": "Custom", + "workflowTool": "Workflow", + "question-understand": "Question Understand", + "logic": "Logic", + "transform": "Transform", + "utilities": "Utilities", + "noResult": "No match found", + "noPluginsFound": "No plugins were found", + "requestToCommunity": "Requests to the community", + "agent": "Agent Strategy", + "allAdded": "All added", + "addAll": "Add all", + "sources": "Sources", + "searchDataSource": "Search Data Source", + "featuredTools": "Featured", + "showMoreFeatured": "Show more", + "showLessFeatured": "Show less", + "installed": "Installed", + "pluginByAuthor": "By {{author}}", + "usePlugin": "Select tool", + "hideActions": "Hide tools", + "noFeaturedPlugins": "Discover more tools in Marketplace", + "noFeaturedTriggers": "Discover more triggers in Marketplace", + "startDisabledTip": "Trigger node and user input node are mutually exclusive." + }, + "blocks": { + "start": "User Input", + "originalStartNode": "original start node", + "end": "Output", + "answer": "Answer", + "llm": "LLM", + "knowledge-retrieval": "Knowledge Retrieval", + "question-classifier": "Question Classifier", + "if-else": "IF/ELSE", + "code": "Code", + "template-transform": "Template", + "http-request": "HTTP Request", + "variable-assigner": "Variable Aggregator", + "variable-aggregator": "Variable Aggregator", + "assigner": "Variable Assigner", + "iteration-start": "Iteration Start", + "iteration": "Iteration", + "parameter-extractor": "Parameter Extractor", + "document-extractor": "Doc Extractor", + "list-operator": "List Operator", + "agent": "Agent", + "loop-start": "Loop Start", + "loop": "Loop", + "loop-end": "Exit Loop", + "knowledge-index": "Knowledge Base", + "datasource": "Data Source", + "trigger-schedule": "Schedule Trigger", + "trigger-webhook": "Webhook Trigger", + "trigger-plugin": "Plugin Trigger" + }, + "customWebhook": "Custom Webhook", + "blocksAbout": { + "start": "Define the initial parameters for launching a workflow", + "end": "Define the output and result type of a workflow", + "answer": "Define the reply content of a chat conversation", + "llm": "Invoking large language models to answer questions or process natural language", + "knowledge-retrieval": "Allows you to query text content related to user questions from the Knowledge", + "question-classifier": "Define the classification conditions of user questions, LLM can define how the conversation progresses based on the classification description", + "if-else": "Allows you to split the workflow into two branches based on if/else conditions", + "code": "Execute a piece of Python or NodeJS code to implement custom logic", + "template-transform": "Convert data to string using Jinja template syntax", + "http-request": "Allow server requests to be sent over the HTTP protocol", + "variable-assigner": "Aggregate multi-branch variables into a single variable for unified configuration of downstream nodes.", + "assigner": "The variable assignment node is used for assigning values to writable variables(like conversation variables).", + "variable-aggregator": "Aggregate multi-branch variables into a single variable for unified configuration of downstream nodes.", + "iteration": "Perform multiple steps on a list object until all results are outputted.", + "loop": "Execute a loop of logic until the termination condition is met or the maximum loop count is reached.", + "loop-end": "Equivalent to \"break\". This node has no configuration items. When the loop body reaches this node, the loop terminates.", + "parameter-extractor": "Use LLM to extract structured parameters from natural language for tool invocations or HTTP requests.", + "document-extractor": "Used to parse uploaded documents into text content that is easily understandable by LLM.", + "list-operator": "Used to filter or sort array content.", + "agent": "Invoking large language models to answer questions or process natural language", + "knowledge-index": "Knowledge Base About", + "datasource": "Data Source About", + "trigger-schedule": "Time-based workflow trigger that starts workflows on a schedule", + "trigger-webhook": "Webhook Trigger receives HTTP pushes from third-party systems to automatically trigger workflows.", + "trigger-plugin": "Third-party integration trigger that starts workflows from external platform events" + }, + "difyTeam": "Dify Team", + "operator": { + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "zoomTo50": "Zoom to 50%", + "zoomTo100": "Zoom to 100%", + "zoomToFit": "Zoom to Fit", + "alignNodes": "Align Nodes", + "alignLeft": "Left", + "alignCenter": "Center", + "alignRight": "Right", + "alignTop": "Top", + "alignMiddle": "Middle", + "alignBottom": "Bottom", + "vertical": "Vertical", + "horizontal": "Horizontal", + "distributeHorizontal": "Space Horizontally", + "distributeVertical": "Space Vertically", + "selectionAlignment": "Selection Alignment" + }, + "variableReference": { + "noAvailableVars": "No available variables", + "noVarsForOperation": "There are no variables available for assignment with the selected operation.", + "noAssignedVars": "No available assigned variables", + "assignedVarsDescription": "Assigned variables must be writable variables, such as ", + "conversationVars": "conversation variables" + }, + "panel": { + "userInputField": "User Input Field", + "changeBlock": "Change Node", + "helpLink": "View Docs", + "openWorkflow": "Open Workflow", + "about": "About", + "createdBy": "Created By ", + "nextStep": "Next Step", + "addNextStep": "Add the next step in this workflow", + "selectNextStep": "Select Next Step", + "runThisStep": "Run this step", + "checklist": "Checklist", + "checklistTip": "Make sure all issues are resolved before publishing", + "checklistResolved": "All issues are resolved", + "goTo": "Go to", + "startNode": "Start Node", + "organizeBlocks": "Organize nodes", + "change": "Change", + "optional": "(optional)", + "maximize": "Maximize Canvas", + "minimize": "Exit Full Screen", + "scrollToSelectedNode": "Scroll to selected node", + "optional_and_hidden": "(optional & hidden)" + }, + "nodes": { + "common": { + "outputVars": "Output Variables", + "insertVarTip": "Insert Variable", + "memory": { + "memory": "Memory", + "memoryTip": "Chat memory settings", + "windowSize": "Window Size", + "conversationRoleName": "Conversation Role Name", + "user": "User prefix", + "assistant": "Assistant prefix" + }, + "memories": { + "title": "Memories", + "tip": "Chat memory", + "builtIn": "Built-in" + }, + "errorHandle": { + "title": "Error Handling", + "tip": "Exception handling strategy, triggered when a node encounters an exception.", + "none": { + "title": "None", + "desc": "The node will stop running if an exception occurs and is not handled" + }, + "defaultValue": { + "title": "Default Value", + "desc": "When an error occurs, specify a static output content.", + "tip": "On error, will return below value.", + "inLog": "Node exception, outputting according to default values.", + "output": "Output Default Value" + }, + "failBranch": { + "title": "Fail Branch", + "desc": "When an error occurs, it will execute the exception branch", + "customize": "Go to the canvas to customize the fail branch logic.", + "customizeTip": "When the fail branch is activated, exceptions thrown by nodes will not terminate the process. Instead, it will automatically execute the predefined fail branch, allowing you to flexibly provide error messages, reports, fixes, or skip actions.", + "inLog": "Node exception, will automatically execute the fail branch. The node output will return an error type and error message and pass them to downstream." + }, + "partialSucceeded": { + "tip": "There are {{num}} nodes in the process running abnormally, please go to tracing to check the logs." + } + }, + "retry": { + "retry": "Retry", + "retryOnFailure": "retry on failure", + "maxRetries": "max retries", + "retryInterval": "retry interval", + "retryTimes": "Retry {{times}} times on failure", + "retrying": "Retrying...", + "retrySuccessful": "Retry successful", + "retryFailed": "Retry failed", + "retryFailedTimes": "{{times}} retries failed", + "times": "times", + "ms": "ms", + "retries": "{{num}} Retries" + }, + "typeSwitch": { + "input": "Input value", + "variable": "Use variable" + }, + "inputVars": "Input Variables", + "pluginNotInstalled": "Plugin is not installed" + }, + "start": { + "required": "required", + "inputField": "Input Field", + "builtInVar": "Built-in Variables", + "outputVars": { + "query": "User input", + "memories": { + "des": "Conversation history", + "type": "message type", + "content": "message content" + }, + "files": "File list" + }, + "noVarTip": "Set inputs that can be used in the Workflow" + }, + "end": { + "outputs": "Outputs", + "output": { + "type": "output type", + "variable": "output variable" + }, + "type": { + "none": "None", + "plain-text": "Plain Text", + "structured": "Structured" + } + }, + "answer": { + "answer": "Answer", + "outputVars": "Output Variables" + }, + "llm": { + "model": "model", + "variables": "variables", + "context": "context", + "contextTooltip": "You can import Knowledge as context", + "notSetContextInPromptTip": "To enable the context feature, please fill in the context variable in PROMPT.", + "prompt": "prompt", + "roleDescription": { + "system": "Give high level instructions for the conversation", + "user": "Provide instructions, queries, or any text-based input to the model", + "assistant": "The model’s responses based on the user messages" + }, + "addMessage": "Add Message", + "vision": "vision", + "files": "Files", + "resolution": { + "name": "Resolution", + "high": "High", + "low": "Low" + }, + "outputVars": { + "output": "Generate content", + "reasoning_content": "Reasoning Content", + "usage": "Model Usage Information" + }, + "singleRun": { + "variable": "Variable" + }, + "sysQueryInUser": "sys.query in user message is required", + "reasoningFormat": { + "title": "Enable reasoning tag separation", + "tagged": "Keep think tags", + "separated": "Separate think tags", + "tooltip": "Extract content from think tags and store it in the reasoning_content field." + }, + "jsonSchema": { + "title": "Structured Output Schema", + "instruction": "Instruction", + "promptTooltip": "Convert the text description into a standardized JSON Schema structure.", + "promptPlaceholder": "Describe your JSON Schema...", + "generate": "Generate", + "import": "Import from JSON", + "generateJsonSchema": "Generate JSON Schema", + "generationTip": "You can use natural language to quickly create a JSON Schema.", + "generating": "Generating JSON Schema...", + "generatedResult": "Generated Result", + "resultTip": "Here is the generated result. If you're not satisfied, you can go back and modify your prompt.", + "back": "Back", + "regenerate": "Regenerate", + "apply": "Apply", + "doc": "Learn more about structured output", + "resetDefaults": "Reset", + "required": "required", + "addField": "Add Field", + "addChildField": "Add Child Field", + "showAdvancedOptions": "Show advanced options", + "stringValidations": "String Validations", + "fieldNamePlaceholder": "Field Name", + "descriptionPlaceholder": "Add description", + "warningTips": { + "saveSchema": "Please finish editing the current field before saving the schema" + } + } + }, + "knowledgeRetrieval": { + "queryVariable": "Query Variable", + "queryText": "Query Text", + "queryAttachment": "Query Images", + "knowledge": "Knowledge", + "outputVars": { + "output": "Retrieval segmented data", + "content": "Segmented content", + "title": "Segmented title", + "icon": "Segmented icon", + "url": "Segmented URL", + "metadata": "Other metadata", + "files": "Retrieved files" + }, + "metadata": { + "title": "Metadata Filtering", + "tip": "Metadata filtering is the process of using metadata attributes (such as tags, categories, or access permissions) to refine and control the retrieval of relevant information within a system.", + "options": { + "disabled": { + "title": "Disabled", + "subTitle": "Not enabling metadata filtering" + }, + "automatic": { + "title": "Automatic", + "subTitle": "Automatically generate metadata filtering conditions based on user query", + "desc": "Automatically generate metadata filtering conditions based on Query Variable" + }, + "manual": { + "title": "Manual", + "subTitle": "Manually add metadata filtering conditions" + } + }, + "panel": { + "title": "Metadata Filter Conditions", + "conditions": "Conditions", + "add": "Add Condition", + "search": "Search metadata", + "placeholder": "Enter value", + "datePlaceholder": "Choose a time...", + "select": "Select variable..." + } + } + }, + "http": { + "inputVars": "Input Variables", + "api": "API", + "apiPlaceholder": "Enter URL, type ‘/’ insert variable", + "extractListPlaceholder": "Enter list item index, type ‘/’ insert variable", + "notStartWithHttp": "API should start with http:// or https://", + "key": "Key", + "type": "Type", + "value": "Value", + "bulkEdit": "Bulk Edit", + "keyValueEdit": "Key-Value Edit", + "headers": "Headers", + "params": "Params", + "body": "Body", + "binaryFileVariable": "Binary File Variable", + "outputVars": { + "body": "Response Content", + "statusCode": "Response Status Code", + "headers": "Response Header List JSON", + "files": "Files List" + }, + "authorization": { + "authorization": "Authorization", + "authorizationType": "Authorization Type", + "no-auth": "None", + "api-key": "API-Key", + "auth-type": "Auth Type", + "basic": "Basic", + "bearer": "Bearer", + "custom": "Custom", + "api-key-title": "API Key", + "header": "Header" + }, + "insertVarPlaceholder": "type '/' to insert variable", + "timeout": { + "title": "Timeout", + "connectLabel": "Connection Timeout", + "connectPlaceholder": "Enter connection timeout in seconds", + "readLabel": "Read Timeout", + "readPlaceholder": "Enter read timeout in seconds", + "writeLabel": "Write Timeout", + "writePlaceholder": "Enter write timeout in seconds" + }, + "curl": { + "title": "Import from cURL", + "placeholder": "Paste cURL string here" + }, + "verifySSL": { + "title": "Verify SSL Certificate", + "warningTooltip": "Disabling SSL verification is not recommended for production environments. This should only be used in development or testing, as it makes the connection vulnerable to security threats like man-in-the-middle attacks." + } + }, + "code": { + "inputVars": "Input Variables", + "outputVars": "Output Variables", + "advancedDependencies": "Advanced Dependencies", + "advancedDependenciesTip": "Add some preloaded dependencies that take more time to consume or are not default built-in here", + "searchDependencies": "Search Dependencies", + "syncFunctionSignature": "Sync function signature to code" + }, + "templateTransform": { + "inputVars": "Input Variables", + "code": "Code", + "codeSupportTip": "Only supports Jinja2", + "outputVars": { + "output": "Transformed content" + } + }, + "ifElse": { + "if": "If", + "else": "Else", + "elseDescription": "Used to define the logic that should be executed when the if condition is not met.", + "and": "and", + "or": "or", + "operator": "Operator", + "notSetVariable": "Please set variable first", + "comparisonOperator": { + "contains": "contains", + "not contains": "not contains", + "start with": "start with", + "end with": "end with", + "is": "is", + "is not": "is not", + "empty": "is empty", + "not empty": "is not empty", + "null": "is null", + "not null": "is not null", + "in": "in", + "not in": "not in", + "all of": "all of", + "exists": "exists", + "not exists": "not exists", + "before": "before", + "after": "after" + }, + "optionName": { + "image": "Image", + "doc": "Doc", + "audio": "Audio", + "video": "Video", + "localUpload": "Local Upload", + "url": "URL" + }, + "enterValue": "Enter value", + "addCondition": "Add Condition", + "conditionNotSetup": "Condition NOT setup", + "selectVariable": "Select variable...", + "addSubVariable": "Sub Variable", + "select": "Select" + }, + "variableAssigner": { + "title": "Assign variables", + "outputType": "Output Type", + "varNotSet": "Variable not set", + "noVarTip": "Add the variables to be assigned", + "type": { + "string": "String", + "number": "Number", + "object": "Object", + "array": "Array" + }, + "aggregationGroup": "Aggregation Group", + "aggregationGroupTip": "Enabling this feature allows the variable aggregator to aggregate multiple sets of variables.", + "addGroup": "Add Group", + "outputVars": { + "varDescribe": "{{groupName}} output" + }, + "setAssignVariable": "Set assign variable" + }, + "assigner": { + "assignedVariable": "Assigned Variable", + "varNotSet": "Variable NOT Set", + "variables": "Variables", + "noVarTip": "Click the \"+\" button to add variables", + "writeMode": "Write Mode", + "writeModeTip": "Append mode: Available for array variables only.", + "over-write": "Overwrite", + "append": "Append", + "plus": "Plus", + "clear": "Clear", + "setVariable": "Set Variable", + "selectAssignedVariable": "Select assigned variable...", + "setParameter": "Set parameter...", + "operations": { + "title": "Operation", + "over-write": "Overwrite", + "overwrite": "Overwrite", + "set": "Set", + "clear": "Clear", + "extend": "Extend", + "append": "Append", + "remove-first": "Remove First", + "remove-last": "Remove Last", + "+=": "+=", + "-=": "-=", + "*=": "*=", + "/=": "/=" + }, + "variable": "Variable", + "noAssignedVars": "No available assigned variables", + "assignedVarsDescription": "Assigned variables must be writable variables, such as conversation variables." + }, + "tool": { + "authorize": "Authorize", + "inputVars": "Input Variables", + "settings": "Settings", + "insertPlaceholder1": "Type or press", + "insertPlaceholder2": "insert variable", + "outputVars": { + "text": "tool generated content", + "files": { + "title": "tool generated files", + "type": "Support type. Now only support image", + "transfer_method": "Transfer method.Value is remote_url or local_file", + "url": "Image url", + "upload_file_id": "Upload file id" + }, + "json": "tool generated json" + } + }, + "triggerPlugin": { + "authorized": "Authorized", + "notConfigured": "Not Configured", + "notAuthorized": "Not Authorized", + "selectSubscription": "Select Subscription", + "availableSubscriptions": "Available Subscriptions", + "addSubscription": "Add New Subscription", + "removeSubscription": "Remove Subscription", + "subscriptionRemoved": "Subscription removed successfully", + "error": "Error", + "configuration": "Configuration", + "remove": "Remove", + "or": "OR", + "useOAuth": "Use OAuth", + "useApiKey": "Use API Key", + "authenticationFailed": "Authentication failed", + "authenticationSuccess": "Authentication successful", + "oauthConfigFailed": "OAuth configuration failed", + "configureOAuthClient": "Configure OAuth Client", + "oauthClientDescription": "Configure OAuth client credentials to enable authentication", + "oauthClientSaved": "OAuth client configuration saved successfully", + "configureApiKey": "Configure API Key", + "apiKeyDescription": "Configure API key credentials for authentication", + "apiKeyConfigured": "API key configured successfully", + "configurationFailed": "Configuration failed", + "failedToStart": "Failed to start authentication flow", + "credentialsVerified": "Credentials verified successfully", + "credentialVerificationFailed": "Credential verification failed", + "verifyAndContinue": "Verify & Continue", + "configureParameters": "Configure Parameters", + "parametersDescription": "Configure trigger parameters and properties", + "configurationComplete": "Configuration Complete", + "configurationCompleteDescription": "Your trigger has been configured successfully", + "configurationCompleteMessage": "Your trigger configuration is now complete and ready to use.", + "parameters": "Parameters", + "properties": "Properties", + "propertiesDescription": "Additional configuration properties for this trigger", + "noConfigurationRequired": "No additional configuration required for this trigger.", + "subscriptionName": "Subscription Name", + "subscriptionNameDescription": "Enter a unique name for this trigger subscription", + "subscriptionNamePlaceholder": "Enter subscription name...", + "subscriptionNameRequired": "Subscription name is required", + "subscriptionRequired": "Subscription is required" + }, + "questionClassifiers": { + "model": "model", + "inputVars": "Input Variables", + "outputVars": { + "className": "Class Name", + "usage": "Model Usage Information" + }, + "class": "Class", + "classNamePlaceholder": "Write your class name", + "advancedSetting": "Advanced Setting", + "topicName": "Topic Name", + "topicPlaceholder": "Write your topic name", + "addClass": "Add Class", + "instruction": "Instruction", + "instructionTip": "Input additional instructions to help the question classifier better understand how to categorize questions.", + "instructionPlaceholder": "Write your instruction" + }, + "parameterExtractor": { + "inputVar": "Input Variable", + "outputVars": { + "isSuccess": "Is Success.On success the value is 1, on failure the value is 0.", + "errorReason": "Error Reason", + "usage": "Model Usage Information" + }, + "extractParameters": "Extract Parameters", + "importFromTool": "Import from tools", + "addExtractParameter": "Add Extract Parameter", + "addExtractParameterContent": { + "name": "Name", + "namePlaceholder": "Extract Parameter Name", + "type": "Type", + "typePlaceholder": "Extract Parameter Type", + "description": "Description", + "descriptionPlaceholder": "Extract Parameter Description", + "required": "Required", + "requiredContent": "Required is only used as a reference for model inference, and not for mandatory validation of parameter output." + }, + "extractParametersNotSet": "Extract Parameters not setup", + "instruction": "Instruction", + "instructionTip": "Input additional instructions to help the parameter extractor understand how to extract parameters.", + "advancedSetting": "Advanced Setting", + "reasoningMode": "Reasoning Mode", + "reasoningModeTip": "You can choose the appropriate reasoning mode based on the model's ability to respond to instructions for function calling or prompts." + }, + "iteration": { + "deleteTitle": "Delete Iteration Node?", + "deleteDesc": "Deleting the iteration node will delete all child nodes", + "input": "Input", + "output": "Output Variables", + "iteration_one": "{{count}} Iteration", + "iteration_other": "{{count}} Iterations", + "currentIteration": "Current Iteration", + "comma": ", ", + "error_one": "{{count}} Error", + "error_other": "{{count}} Errors", + "parallelMode": "Parallel Mode", + "parallelModeUpper": "PARALLEL MODE", + "parallelModeEnableTitle": "Parallel Mode Enabled", + "parallelModeEnableDesc": "In parallel mode, tasks within iterations support parallel execution. You can configure this in the properties panel on the right.", + "parallelPanelDesc": "In parallel mode, tasks in the iteration support parallel execution.", + "MaxParallelismTitle": "Maximum parallelism", + "MaxParallelismDesc": "The maximum parallelism is used to control the number of tasks executed simultaneously in a single iteration.", + "errorResponseMethod": "Error response method", + "ErrorMethod": { + "operationTerminated": "Terminated", + "continueOnError": "Continue on Error", + "removeAbnormalOutput": "Remove Abnormal Output" + }, + "answerNodeWarningDesc": "Parallel mode warning: Answer nodes, conversation variable assignments, and persistent read/write operations within iterations may cause exceptions.", + "flattenOutput": "Flatten Output", + "flattenOutputDesc": "When enabled, if all iteration outputs are arrays, they will be flattened into a single array. When disabled, outputs will maintain a nested array structure." + }, + "loop": { + "deleteTitle": "Delete Loop Node?", + "deleteDesc": "Deleting the loop node will remove all child nodes", + "input": "Input", + "output": "Output Variable", + "loop_one": "{{count}} Loop", + "loop_other": "{{count}} Loops", + "currentLoop": "Current Loop", + "comma": ", ", + "error_one": "{{count}} Error", + "error_other": "{{count}} Errors", + "breakCondition": "Loop Termination Condition", + "breakConditionTip": "Only variables within loops with termination conditions and conversation variables can be referenced.", + "loopMaxCount": "Maximum Loop Count", + "loopMaxCountError": "Please enter a valid maximum loop count, ranging from 1 to {{maxCount}}", + "errorResponseMethod": "Error Response Method", + "ErrorMethod": { + "operationTerminated": "Terminated", + "continueOnError": "Continue on Error", + "removeAbnormalOutput": "Remove Abnormal Output" + }, + "loopVariables": "Loop Variables", + "initialLoopVariables": "Initial Loop Variables", + "finalLoopVariables": "Final Loop Variables", + "setLoopVariables": "Set variables within the loop scope", + "variableName": "Variable Name", + "inputMode": "Input Mode", + "exitConditionTip": "A loop node needs at least one exit condition", + "loopNode": "Loop Node", + "currentLoopCount": "Current loop count: {{count}}", + "totalLoopCount": "Total loop count: {{count}}" + }, + "note": { + "addNote": "Add Note", + "editor": { + "placeholder": "Write your note...", + "small": "Small", + "medium": "Medium", + "large": "Large", + "bold": "Bold", + "italic": "Italic", + "strikethrough": "Strikethrough", + "link": "Link", + "openLink": "Open", + "unlink": "Unlink", + "enterUrl": "Enter URL...", + "invalidUrl": "Invalid URL", + "bulletList": "Bullet List", + "showAuthor": "Show Author" + } + }, + "docExtractor": { + "inputVar": "Input Variable", + "outputVars": { + "text": "Extracted text" + }, + "supportFileTypes": "Support file types: {{types}}.", + "learnMore": "Learn more" + }, + "listFilter": { + "inputVar": "Input Variable", + "filterCondition": "Filter Condition", + "filterConditionKey": "Filter Condition Key", + "extractsCondition": "Extract the N item", + "filterConditionComparisonOperator": "Filter Condition Comparison Operator", + "filterConditionComparisonValue": "Filter Condition value", + "selectVariableKeyPlaceholder": "Select sub variable key", + "limit": "Top N", + "orderBy": "Order by", + "asc": "ASC", + "desc": "DESC", + "outputVars": { + "result": "Filter result", + "first_record": "First record", + "last_record": "Last record" + } + }, + "agent": { + "strategy": { + "label": "Agentic Strategy", + "tooltip": "Different Agentic strategies determine how the system plans and executes multi-step tool calls", + "shortLabel": "Strategy", + "configureTip": "Please configure agentic strategy.", + "configureTipDesc": "After configuring the agentic strategy, this node will automatically load the remaining configurations. The strategy will affect the mechanism of multi-step tool reasoning. ", + "selectTip": "Select agentic strategy", + "searchPlaceholder": "Search agentic strategy" + }, + "learnMore": "Learn more", + "pluginNotInstalled": "This plugin is not installed", + "pluginNotInstalledDesc": "This plugin is installed from GitHub. Please go to Plugins to reinstall", + "linkToPlugin": "Link to Plugins", + "pluginInstaller": { + "install": "Install", + "installing": "Installing" + }, + "modelNotInMarketplace": { + "title": "Model not installed", + "desc": "This model is installed from Local or GitHub repository. Please use after installation.", + "manageInPlugins": "Manage in Plugins" + }, + "modelNotSupport": { + "title": "Unsupported Model", + "desc": "The installed plugin version does not provide this model.", + "descForVersionSwitch": "The installed plugin version does not provide this model. Click to switch version." + }, + "configureModel": "Configure Model", + "notAuthorized": "Not Authorized", + "model": "model", + "toolbox": "toolbox", + "strategyNotSet": "Agentic strategy Not Set", + "tools": "Tools", + "maxIterations": "Max Iterations", + "modelNotSelected": "Model not selected", + "modelNotInstallTooltip": "This model is not installed", + "toolNotInstallTooltip": "{{tool}} is not installed", + "toolNotAuthorizedTooltip": "{{tool}} Not Authorized", + "strategyNotInstallTooltip": "{{strategy}} is not installed", + "unsupportedStrategy": "Unsupported strategy", + "pluginNotFoundDesc": "This plugin is installed from GitHub. Please go to Plugins to reinstall", + "strategyNotFoundDesc": "The installed plugin version does not provide this strategy.", + "strategyNotFoundDescAndSwitchVersion": "The installed plugin version does not provide this strategy. Click to switch version.", + "modelSelectorTooltips": { + "deprecated": "This model is deprecated" + }, + "outputVars": { + "text": "agent generated content", + "usage": "Model Usage Information", + "files": { + "title": "agent generated files", + "type": "Support type. Now only support image", + "transfer_method": "Transfer method.Value is remote_url or local_file", + "url": "Image url", + "upload_file_id": "Upload file id" + }, + "json": "agent generated json" + }, + "checkList": { + "strategyNotSelected": "Strategy not selected" + }, + "installPlugin": { + "title": "Install Plugin", + "desc": "About to install the following plugin", + "changelog": "Change log", + "install": "Install", + "cancel": "Cancel" + }, + "clickToViewParameterSchema": "Click to view parameter schema", + "parameterSchema": "Parameter Schema" + }, + "dataSource": { + "supportedFileFormats": "Supported file formats", + "supportedFileFormatsPlaceholder": "File extension, e.g. doc", + "add": "Add data source" + }, + "knowledgeBase": { + "chunkStructure": "Chunk Structure", + "chooseChunkStructure": "Choose a chunk structure", + "chunkStructureTip": { + "title": "Please choose a chunk structure", + "message": "The Dify Knowledge Base supports three chunking structures: General, Parent-child, and Q&A. Each knowledge base can have only one structure. The output from the preceding node must align with the selected chunk structure. Note that the choice of chunking structure affects the available index methods.", + "learnMore": "Learn more" + }, + "changeChunkStructure": "Change Chunk Structure", + "chunksInput": "Chunks", + "chunksInputTip": "The input variable of the knowledge base node is Chunks. The variable type is an object with a specific JSON Schema which must be consistent with the selected chunk structure.", + "aboutRetrieval": "about retrieval method.", + "chunkIsRequired": "Chunk structure is required", + "indexMethodIsRequired": "Index method is required", + "chunksVariableIsRequired": "Chunks variable is required", + "embeddingModelIsRequired": "Embedding model is required", + "embeddingModelIsInvalid": "Embedding model is invalid", + "retrievalSettingIsRequired": "Retrieval setting is required", + "rerankingModelIsRequired": "Reranking model is required", + "rerankingModelIsInvalid": "Reranking model is invalid" + }, + "triggerSchedule": { + "title": "Schedule", + "nodeTitle": "Schedule Trigger", + "notConfigured": "Not configured", + "useCronExpression": "Use cron expression", + "useVisualPicker": "Use visual picker", + "frequency": { + "label": "FREQUENCY", + "hourly": "Hourly", + "daily": "Daily", + "weekly": "Weekly", + "monthly": "Monthly" + }, + "selectFrequency": "Select frequency", + "frequencyLabel": "Frequency", + "nextExecution": "Next execution", + "weekdays": "Week days", + "time": "Time", + "cronExpression": "Cron expression", + "nextExecutionTime": "NEXT EXECUTION TIME", + "nextExecutionTimes": "Next 5 execution times", + "startTime": "Start Time", + "executeNow": "Execution now", + "selectDateTime": "Select Date & Time", + "hours": "Hours", + "minutes": "Minutes", + "onMinute": "On Minute", + "days": "Days", + "lastDay": "Last day", + "lastDayTooltip": "Not all months have 31 days. Use the 'last day' option to select each month's final day.", + "mode": "Mode", + "modeVisual": "Visual", + "modeCron": "Cron", + "selectTime": "Select time", + "timezone": "Timezone", + "visualConfig": "Visual Configuration", + "monthlyDay": "Monthly Day", + "executionTime": "Execution Time", + "invalidTimezone": "Invalid timezone", + "invalidCronExpression": "Invalid cron expression", + "noValidExecutionTime": "No valid execution time can be calculated", + "executionTimeCalculationError": "Failed to calculate execution times", + "invalidFrequency": "Invalid frequency", + "invalidStartTime": "Invalid start time", + "startTimeMustBeFuture": "Start time must be in the future", + "invalidTimeFormat": "Invalid time format (expected HH:MM AM/PM)", + "invalidWeekday": "Invalid weekday: {{weekday}}", + "invalidMonthlyDay": "Monthly day must be between 1-31 or \"last\"", + "invalidOnMinute": "On minute must be between 0-59", + "invalidExecutionTime": "Invalid execution time", + "executionTimeMustBeFuture": "Execution time must be in the future" + }, + "triggerWebhook": { + "title": "Webhook Trigger", + "nodeTitle": "🔗 Webhook Trigger", + "configPlaceholder": "Webhook trigger configuration will be implemented here", + "webhookUrl": "Webhook URL", + "webhookUrlPlaceholder": "Click generate to create webhook URL", + "generate": "Generate", + "copy": "Copy", + "test": "Test", + "urlGenerated": "Webhook URL generated successfully", + "urlGenerationFailed": "Failed to generate webhook URL", + "urlCopied": "URL copied to clipboard", + "method": "Method", + "contentType": "Content Type", + "queryParameters": "Query Parameters", + "headerParameters": "Header Parameters", + "requestBodyParameters": "Request Body Parameters", + "parameterName": "Variable name", + "varName": "Variable name", + "varType": "Type", + "varNamePlaceholder": "Enter variable name...", + "required": "Required", + "addParameter": "Add", + "addHeader": "Add", + "noParameters": "No parameters configured", + "noQueryParameters": "No query parameters configured", + "noHeaders": "No headers configured", + "noBodyParameters": "No body parameters configured", + "debugUrlTitle": "For test runs, always use this URL", + "debugUrlCopy": "Click to copy", + "debugUrlCopied": "Copied!", + "debugUrlPrivateAddressWarning": "This URL appears to be an internal address, which may cause webhook requests to fail. You may change TRIGGER_URL to a public address.", + "errorHandling": "Error Handling", + "errorStrategy": "Error Handling", + "responseConfiguration": "Response", + "asyncMode": "Async Mode", + "statusCode": "Status Code", + "responseBody": "Response Body", + "responseBodyPlaceholder": "Write your response body here", + "headers": "Headers", + "validation": { + "webhookUrlRequired": "Webhook URL is required", + "invalidParameterType": "Invalid parameter type \"{{type}}\" for parameter \"{{name}}\"" + } + } + }, + "triggerStatus": { + "enabled": "TRIGGER", + "disabled": "TRIGGER • DISABLED" + }, + "entryNodeStatus": { + "enabled": "START", + "disabled": "START • DISABLED" + }, + "tracing": { + "stopBy": "Stop by {{user}}" + }, + "versionHistory": { + "title": "Versions", + "currentDraft": "Current Draft", + "latest": "Latest", + "filter": { + "all": "All", + "onlyYours": "Only yours", + "onlyShowNamedVersions": "Only show named versions", + "reset": "Reset Filter", + "empty": "No matching version history found" + }, + "defaultName": "Untitled Version", + "nameThisVersion": "Name this version", + "editVersionInfo": "Edit version info", + "copyId": "Copy ID", + "editField": { + "title": "Title", + "releaseNotes": "Release Notes", + "titleLengthLimit": "Title can't exceed {{limit}} characters", + "releaseNotesLengthLimit": "Release notes can't exceed {{limit}} characters" + }, + "releaseNotesPlaceholder": "Describe what changed", + "restorationTip": "After version restoration, the current draft will be overwritten.", + "deletionTip": "Deletion is irreversible, please confirm.", + "action": { + "restoreSuccess": "Version restored", + "restoreFailure": "Failed to restore version", + "deleteSuccess": "Version deleted", + "deleteFailure": "Failed to delete version", + "updateSuccess": "Version updated", + "updateFailure": "Failed to update version", + "copyIdSuccess": "ID copied to clipboard" + } + }, + "debug": { + "settingsTab": "Settings", + "lastRunTab": "Last Run", + "relationsTab": "Relations", + "copyLastRun": "Copy Last Run", + "noLastRunFound": "No previous run found", + "noMatchingInputsFound": "No matching inputs found from last run", + "lastRunInputsCopied": "{{count}} input(s) copied from last run", + "copyLastRunError": "Failed to copy last run inputs", + "noData": { + "description": "The results of the last run will be displayed here", + "runThisNode": "Run this node" + }, + "variableInspect": { + "title": "Variable Inspect", + "emptyTip": "After stepping through a node on the canvas or running a node step by step, you can view the current value of the node variable in Variable Inspect", + "emptyLink": "Learn more", + "clearAll": "Reset all", + "clearNode": "Clear cached variable", + "resetConversationVar": "Reset conversation variable to default value", + "view": "View log", + "edited": "Edited", + "reset": "Reset to last run value", + "listening": { + "title": "Listening for events from triggers...", + "tip": "You can now simulate event triggers by sending test requests to HTTP {{nodeName}} endpoint or use it as a callback URL for live event debugging. All outputs can be viewed directly in the Variable Inspector.", + "tipPlugin": "Now you can create events in {{- pluginName}}, and retrieve outputs from these events in the Variable Inspector.", + "tipSchedule": "Listening for events from schedule triggers.\nNext scheduled run: {{nextTriggerTime}}", + "tipFallback": "Await incoming trigger events. Outputs will appear here.", + "defaultNodeName": "this trigger", + "defaultPluginName": "this plugin trigger", + "defaultScheduleTime": "Not configured", + "selectedTriggers": "selected triggers", + "stopButton": "Stop" + }, + "trigger": { + "normal": "Variable Inspect", + "running": "Caching running status", + "stop": "Stop run", + "cached": "View cached variables", + "clear": "Clear" + }, + "envNode": "Environment", + "chatNode": "Conversation", + "systemNode": "System", + "exportToolTip": "Export Variable as File", + "largeData": "Large data, read-only preview. Export to view all.", + "largeDataNoExport": "Large data - partial preview only", + "export": "export" + }, + "lastOutput": "Last Output", + "relations": { + "dependencies": "Dependencies", + "dependents": "Dependents", + "dependenciesDescription": "Nodes that this node relies on", + "dependentsDescription": "Nodes that rely on this node", + "noDependencies": "No dependencies", + "noDependents": "No dependents" + } + }, + "onboarding": { + "title": "Select a start node to begin", + "description": "Different start nodes have different capabilities. Don't worry, you can always change them later.", + "userInputFull": "User Input (original start node)", + "userInputDescription": "Start node that allows setting user input variables, with web app, service API, MCP server, and workflow as tool capabilities.", + "trigger": "Trigger", + "triggerDescription": "Triggers can serve as the start node of a workflow, such as scheduled tasks, custom webhooks, or integrations with other apps.", + "back": "Back", + "learnMore": "Learn more", + "aboutStartNode": "about start node.", + "escTip": { + "press": "Press", + "key": "esc", + "toDismiss": "to dismiss" + } + } +} diff --git a/web/i18n/en-US/workflow.ts b/web/i18n/en-US/workflow.ts deleted file mode 100644 index 2122c20aaa..0000000000 --- a/web/i18n/en-US/workflow.ts +++ /dev/null @@ -1,1299 +0,0 @@ -const translation = { - common: { - undo: 'Undo', - redo: 'Redo', - editing: 'Editing', - autoSaved: 'Auto-Saved', - unpublished: 'Unpublished', - published: 'Published', - publish: 'Publish', - update: 'Update', - publishUpdate: 'Publish Update', - run: 'Test Run', - running: 'Running', - listening: 'Listening', - chooseStartNodeToRun: 'Choose the start node to run', - runAllTriggers: 'Run all triggers', - inRunMode: 'In Run Mode', - inPreview: 'In Preview', - inPreviewMode: 'In Preview Mode', - preview: 'Preview', - viewRunHistory: 'View run history', - runHistory: 'Run History', - goBackToEdit: 'Go back to editor', - conversationLog: 'Conversation Log', - features: 'Features', - featuresDescription: 'Enhance web app user experience', - ImageUploadLegacyTip: 'You can now create file type variables in the start form. We will no longer support the image upload feature in the future. ', - fileUploadTip: 'Image upload features have been upgraded to file upload. ', - featuresDocLink: 'Learn more', - debugAndPreview: 'Preview', - restart: 'Restart', - currentDraft: 'Current Draft', - currentDraftUnpublished: 'Current Draft Unpublished', - latestPublished: 'Latest Published', - publishedAt: 'Published', - restore: 'Restore', - versionHistory: 'Version History', - exitVersions: 'Exit Versions', - runApp: 'Run App', - batchRunApp: 'Batch Run App', - openInExplore: 'Open in Explore', - accessAPIReference: 'Access API Reference', - embedIntoSite: 'Embed Into Site', - addTitle: 'Add title...', - addDescription: 'Add description...', - noVar: 'No variable', - searchVar: 'Search variable', - variableNamePlaceholder: 'Variable name', - setVarValuePlaceholder: 'Set variable', - needConnectTip: 'This step is not connected to anything', - maxTreeDepth: 'Maximum limit of {{depth}} nodes per branch', - needAdd: '{{node}} node must be added', - needOutputNode: 'The Output node must be added', - needStartNode: 'At least one start node must be added', - needAnswerNode: 'The Answer node must be added', - workflowProcess: 'Workflow Process', - notRunning: 'Not running yet', - previewPlaceholder: 'Enter content in the box below to start debugging the Chatbot', - effectVarConfirm: { - title: 'Remove Variable', - content: 'The variable is used in other nodes. Do you still want to remove it?', - }, - insertVarTip: 'Press the \'/\' key to insert quickly', - processData: 'Process Data', - input: 'Input', - output: 'Output', - jinjaEditorPlaceholder: 'Type \'/\' or \'{\' to insert variable', - viewOnly: 'View Only', - showRunHistory: 'Show Run History', - enableJinja: 'Enable Jinja template support', - learnMore: 'Learn More', - copy: 'Copy', - duplicate: 'Duplicate', - addBlock: 'Add Node', - pasteHere: 'Paste Here', - pointerMode: 'Pointer Mode', - handMode: 'Hand Mode', - exportImage: 'Export Image', - exportPNG: 'Export as PNG', - exportJPEG: 'Export as JPEG', - exportSVG: 'Export as SVG', - currentView: 'Current View', - currentWorkflow: 'Current Workflow', - moreActions: 'More Actions', - model: 'Model', - workflowAsTool: 'Workflow as Tool', - configureRequired: 'Configure Required', - configure: 'Configure', - manageInTools: 'Manage in Tools', - workflowAsToolTip: 'Tool reconfiguration is required after the workflow update.', - workflowAsToolDisabledHint: 'Publish the latest workflow and ensure a connected User Input node before configuring it as a tool.', - viewDetailInTracingPanel: 'View details', - syncingData: 'Syncing data, just a few seconds.', - importDSL: 'Import DSL', - importDSLTip: 'Current draft will be overwritten.\nExport workflow as backup before importing.', - backupCurrentDraft: 'Backup Current Draft', - chooseDSL: 'Choose DSL file', - overwriteAndImport: 'Overwrite and Import', - importFailure: 'Import Failed', - importWarning: 'Caution', - importWarningDetails: 'DSL version difference may affect certain features', - importSuccess: 'Import Successfully', - parallelTip: { - click: { - title: 'Click', - desc: ' to add', - }, - drag: { - title: 'Drag', - desc: ' to connect', - }, - limit: 'Parallelism is limited to {{num}} branches.', - depthLimit: 'Parallel nesting layer limit of {{num}} layers', - }, - disconnect: 'Disconnect', - jumpToNode: 'Jump to this node', - addParallelNode: 'Add Parallel Node', - parallel: 'PARALLEL', - branch: 'BRANCH', - onFailure: 'On Failure', - addFailureBranch: 'Add Fail Branch', - loadMore: 'Load More', - noHistory: 'No History', - tagBound: 'Number of apps using this tag', - }, - publishLimit: { - startNodeTitlePrefix: 'Upgrade to', - startNodeTitleSuffix: 'unlock unlimited triggers per workflow', - startNodeDesc: 'You’ve reached the limit of 2 triggers per workflow for this plan. Upgrade to publish this workflow.', - }, - env: { - envPanelTitle: 'Environment Variables', - envDescription: 'Environment variables can be used to store private information and credentials. They are read-only and can be separated from the DSL file during export.', - envPanelButton: 'Add Variable', - modal: { - title: 'Add Environment Variable', - editTitle: 'Edit Environment Variable', - type: 'Type', - name: 'Name', - namePlaceholder: 'env name', - value: 'Value', - valuePlaceholder: 'env value', - secretTip: 'Used to define sensitive information or data, with DSL settings configured for leak prevention.', - description: 'Description', - descriptionPlaceholder: 'Describe the variable', - }, - export: { - title: 'Export Secret environment variables?', - checkbox: 'Export secret values', - ignore: 'Export DSL', - export: 'Export DSL with secret values ', - }, - }, - globalVar: { - title: 'System Variables', - description: 'System variables are global variables that can be referenced by any node without wiring when the type is correct, such as end-user ID and workflow ID.', - fieldsDescription: { - conversationId: 'Conversation ID', - dialogCount: 'Conversation Count', - userId: 'User ID', - triggerTimestamp: 'Application start timestamp', - appId: 'Application ID', - workflowId: 'Workflow ID', - workflowRunId: 'Workflow run ID', - }, - }, - sidebar: { - exportWarning: 'Export Current Saved Version', - exportWarningDesc: 'This will export the current saved version of your workflow. If you have unsaved changes in the editor, please save them first by using the export option in the workflow canvas.', - }, - chatVariable: { - panelTitle: 'Conversation Variables', - panelDescription: 'Conversation Variables are used to store interactive information that LLM needs to remember, including conversation history, uploaded files, user preferences. They are read-write. ', - docLink: 'Visit our docs to learn more.', - button: 'Add Variable', - modal: { - title: 'Add Conversation Variable', - editTitle: 'Edit Conversation Variable', - name: 'Name', - namePlaceholder: 'Variable name', - type: 'Type', - value: 'Default Value', - valuePlaceholder: 'Default value, leave blank to not set', - description: 'Description', - descriptionPlaceholder: 'Describe the variable', - editInJSON: 'Edit in JSON', - oneByOne: 'Add one by one', - editInForm: 'Edit in Form', - arrayValue: 'Value', - addArrayValue: 'Add Value', - objectKey: 'Key', - objectType: 'Type', - objectValue: 'Default Value', - }, - storedContent: 'Stored content', - updatedAt: 'Updated at ', - }, - changeHistory: { - title: 'Change History', - placeholder: 'You haven\'t changed anything yet', - clearHistory: 'Clear History', - hint: 'Hint', - hintText: 'Your editing actions are tracked in a change history, which is stored on your device for the duration of this session. This history will be cleared when you leave the editor.', - stepBackward_one: '{{count}} step backward', - stepBackward_other: '{{count}} steps backward', - stepForward_one: '{{count}} step forward', - stepForward_other: '{{count}} steps forward', - sessionStart: 'Session Start', - currentState: 'Current State', - nodeTitleChange: 'Node title changed', - nodeDescriptionChange: 'Node description changed', - nodeDragStop: 'Node moved', - nodeChange: 'Node changed', - nodeConnect: 'Node connected', - nodePaste: 'Node pasted', - nodeDelete: 'Node deleted', - nodeAdd: 'Node added', - nodeResize: 'Node resized', - noteAdd: 'Note added', - noteChange: 'Note changed', - noteDelete: 'Note deleted', - edgeDelete: 'Node disconnected', - }, - errorMsg: { - fieldRequired: '{{field}} is required', - rerankModelRequired: 'A configured Rerank Model is required', - authRequired: 'Authorization is required', - invalidJson: '{{field}} is invalid JSON', - fields: { - variable: 'Variable Name', - variableValue: 'Variable Value', - code: 'Code', - model: 'Model', - rerankModel: 'A configured Rerank Model', - visionVariable: 'Vision Variable', - }, - invalidVariable: 'Invalid variable', - noValidTool: '{{field}} no valid tool selected', - toolParameterRequired: '{{field}}: parameter [{{param}}] is required', - startNodeRequired: 'Please add a start node first before {{operation}}', - }, - error: { - startNodeRequired: 'Please add a start node first before {{operation}}', - operations: { - connectingNodes: 'connecting nodes', - addingNodes: 'adding nodes', - modifyingWorkflow: 'modifying workflow', - updatingWorkflow: 'updating workflow', - }, - }, - singleRun: { - testRun: 'Test Run', - startRun: 'Start Run', - preparingDataSource: 'Preparing Data Source', - reRun: 'Re-run', - running: 'Running', - testRunIteration: 'Test Run Iteration', - back: 'Back', - iteration: 'Iteration', - loop: 'Loop', - }, - tabs: { - 'searchBlock': 'Search node', - 'start': 'Start', - 'blocks': 'Nodes', - 'searchTool': 'Search tool', - 'searchTrigger': 'Search triggers...', - 'allTriggers': 'All triggers', - 'tools': 'Tools', - 'allTool': 'All', - 'plugin': 'Plugin', - 'customTool': 'Custom', - 'workflowTool': 'Workflow', - 'question-understand': 'Question Understand', - 'logic': 'Logic', - 'transform': 'Transform', - 'utilities': 'Utilities', - 'noResult': 'No match found', - 'noPluginsFound': 'No plugins were found', - 'requestToCommunity': 'Requests to the community', - 'agent': 'Agent Strategy', - 'allAdded': 'All added', - 'addAll': 'Add all', - 'sources': 'Sources', - 'searchDataSource': 'Search Data Source', - 'featuredTools': 'Featured', - 'showMoreFeatured': 'Show more', - 'showLessFeatured': 'Show less', - 'installed': 'Installed', - 'pluginByAuthor': 'By {{author}}', - 'usePlugin': 'Select tool', - 'hideActions': 'Hide tools', - 'noFeaturedPlugins': 'Discover more tools in Marketplace', - 'noFeaturedTriggers': 'Discover more triggers in Marketplace', - 'startDisabledTip': 'Trigger node and user input node are mutually exclusive.', - }, - blocks: { - 'start': 'User Input', - 'originalStartNode': 'original start node', - 'end': 'Output', - 'answer': 'Answer', - 'llm': 'LLM', - 'knowledge-retrieval': 'Knowledge Retrieval', - 'question-classifier': 'Question Classifier', - 'if-else': 'IF/ELSE', - 'code': 'Code', - 'template-transform': 'Template', - 'http-request': 'HTTP Request', - 'variable-assigner': 'Variable Aggregator', - 'variable-aggregator': 'Variable Aggregator', - 'assigner': 'Variable Assigner', - 'iteration-start': 'Iteration Start', - 'iteration': 'Iteration', - 'parameter-extractor': 'Parameter Extractor', - 'document-extractor': 'Doc Extractor', - 'list-operator': 'List Operator', - 'agent': 'Agent', - 'loop-start': 'Loop Start', - 'loop': 'Loop', - 'loop-end': 'Exit Loop', - 'knowledge-index': 'Knowledge Base', - 'datasource': 'Data Source', - 'trigger-schedule': 'Schedule Trigger', - 'trigger-webhook': 'Webhook Trigger', - 'trigger-plugin': 'Plugin Trigger', - }, - customWebhook: 'Custom Webhook', - blocksAbout: { - 'start': 'Define the initial parameters for launching a workflow', - 'end': 'Define the output and result type of a workflow', - 'answer': 'Define the reply content of a chat conversation', - 'llm': 'Invoking large language models to answer questions or process natural language', - 'knowledge-retrieval': 'Allows you to query text content related to user questions from the Knowledge', - 'question-classifier': 'Define the classification conditions of user questions, LLM can define how the conversation progresses based on the classification description', - 'if-else': 'Allows you to split the workflow into two branches based on if/else conditions', - 'code': 'Execute a piece of Python or NodeJS code to implement custom logic', - 'template-transform': 'Convert data to string using Jinja template syntax', - 'http-request': 'Allow server requests to be sent over the HTTP protocol', - 'variable-assigner': 'Aggregate multi-branch variables into a single variable for unified configuration of downstream nodes.', - 'assigner': 'The variable assignment node is used for assigning values to writable variables(like conversation variables).', - 'variable-aggregator': 'Aggregate multi-branch variables into a single variable for unified configuration of downstream nodes.', - 'iteration': 'Perform multiple steps on a list object until all results are outputted.', - 'loop': 'Execute a loop of logic until the termination condition is met or the maximum loop count is reached.', - 'loop-end': 'Equivalent to "break". This node has no configuration items. When the loop body reaches this node, the loop terminates.', - 'parameter-extractor': 'Use LLM to extract structured parameters from natural language for tool invocations or HTTP requests.', - 'document-extractor': 'Used to parse uploaded documents into text content that is easily understandable by LLM.', - 'list-operator': 'Used to filter or sort array content.', - 'agent': 'Invoking large language models to answer questions or process natural language', - 'knowledge-index': 'Knowledge Base About', - 'datasource': 'Data Source About', - 'trigger-schedule': 'Time-based workflow trigger that starts workflows on a schedule', - 'trigger-webhook': 'Webhook Trigger receives HTTP pushes from third-party systems to automatically trigger workflows.', - 'trigger-plugin': 'Third-party integration trigger that starts workflows from external platform events', - }, - difyTeam: 'Dify Team', - operator: { - zoomIn: 'Zoom In', - zoomOut: 'Zoom Out', - zoomTo50: 'Zoom to 50%', - zoomTo100: 'Zoom to 100%', - zoomToFit: 'Zoom to Fit', - alignNodes: 'Align Nodes', - alignLeft: 'Left', - alignCenter: 'Center', - alignRight: 'Right', - alignTop: 'Top', - alignMiddle: 'Middle', - alignBottom: 'Bottom', - vertical: 'Vertical', - horizontal: 'Horizontal', - distributeHorizontal: 'Space Horizontally', - distributeVertical: 'Space Vertically', - selectionAlignment: 'Selection Alignment', - }, - variableReference: { - noAvailableVars: 'No available variables', - noVarsForOperation: 'There are no variables available for assignment with the selected operation.', - noAssignedVars: 'No available assigned variables', - assignedVarsDescription: 'Assigned variables must be writable variables, such as ', - conversationVars: 'conversation variables', - }, - panel: { - userInputField: 'User Input Field', - changeBlock: 'Change Node', - helpLink: 'View Docs', - openWorkflow: 'Open Workflow', - about: 'About', - createdBy: 'Created By ', - nextStep: 'Next Step', - addNextStep: 'Add the next step in this workflow', - selectNextStep: 'Select Next Step', - runThisStep: 'Run this step', - checklist: 'Checklist', - checklistTip: 'Make sure all issues are resolved before publishing', - checklistResolved: 'All issues are resolved', - goTo: 'Go to', - startNode: 'Start Node', - organizeBlocks: 'Organize nodes', - change: 'Change', - optional: '(optional)', - maximize: 'Maximize Canvas', - minimize: 'Exit Full Screen', - scrollToSelectedNode: 'Scroll to selected node', - optional_and_hidden: '(optional & hidden)', - }, - nodes: { - common: { - outputVars: 'Output Variables', - insertVarTip: 'Insert Variable', - memory: { - memory: 'Memory', - memoryTip: 'Chat memory settings', - windowSize: 'Window Size', - conversationRoleName: 'Conversation Role Name', - user: 'User prefix', - assistant: 'Assistant prefix', - }, - memories: { - title: 'Memories', - tip: 'Chat memory', - builtIn: 'Built-in', - }, - errorHandle: { - title: 'Error Handling', - tip: 'Exception handling strategy, triggered when a node encounters an exception.', - none: { - title: 'None', - desc: 'The node will stop running if an exception occurs and is not handled', - }, - defaultValue: { - title: 'Default Value', - desc: 'When an error occurs, specify a static output content.', - tip: 'On error, will return below value.', - inLog: 'Node exception, outputting according to default values.', - output: 'Output Default Value', - }, - failBranch: { - title: 'Fail Branch', - desc: 'When an error occurs, it will execute the exception branch', - customize: 'Go to the canvas to customize the fail branch logic.', - customizeTip: 'When the fail branch is activated, exceptions thrown by nodes will not terminate the process. Instead, it will automatically execute the predefined fail branch, allowing you to flexibly provide error messages, reports, fixes, or skip actions.', - inLog: 'Node exception, will automatically execute the fail branch. The node output will return an error type and error message and pass them to downstream.', - }, - partialSucceeded: { - tip: 'There are {{num}} nodes in the process running abnormally, please go to tracing to check the logs.', - }, - }, - retry: { - retry: 'Retry', - retryOnFailure: 'retry on failure', - maxRetries: 'max retries', - retryInterval: 'retry interval', - retryTimes: 'Retry {{times}} times on failure', - retrying: 'Retrying...', - retrySuccessful: 'Retry successful', - retryFailed: 'Retry failed', - retryFailedTimes: '{{times}} retries failed', - times: 'times', - ms: 'ms', - retries: '{{num}} Retries', - }, - typeSwitch: { - input: 'Input value', - variable: 'Use variable', - }, - inputVars: 'Input Variables', - pluginNotInstalled: 'Plugin is not installed', - }, - start: { - required: 'required', - inputField: 'Input Field', - builtInVar: 'Built-in Variables', - outputVars: { - query: 'User input', - memories: { - des: 'Conversation history', - type: 'message type', - content: 'message content', - }, - files: 'File list', - }, - noVarTip: 'Set inputs that can be used in the Workflow', - }, - end: { - outputs: 'Outputs', - output: { - type: 'output type', - variable: 'output variable', - }, - type: { - 'none': 'None', - 'plain-text': 'Plain Text', - 'structured': 'Structured', - }, - }, - answer: { - answer: 'Answer', - outputVars: 'Output Variables', - }, - llm: { - model: 'model', - variables: 'variables', - context: 'context', - contextTooltip: 'You can import Knowledge as context', - notSetContextInPromptTip: 'To enable the context feature, please fill in the context variable in PROMPT.', - prompt: 'prompt', - roleDescription: { - system: 'Give high level instructions for the conversation', - user: 'Provide instructions, queries, or any text-based input to the model', - assistant: 'The model’s responses based on the user messages', - }, - addMessage: 'Add Message', - vision: 'vision', - files: 'Files', - resolution: { - name: 'Resolution', - high: 'High', - low: 'Low', - }, - outputVars: { - output: 'Generate content', - reasoning_content: 'Reasoning Content', - usage: 'Model Usage Information', - }, - singleRun: { - variable: 'Variable', - }, - sysQueryInUser: 'sys.query in user message is required', - reasoningFormat: { - title: 'Enable reasoning tag separation', - tagged: 'Keep think tags', - separated: 'Separate think tags', - tooltip: 'Extract content from think tags and store it in the reasoning_content field.', - }, - jsonSchema: { - title: 'Structured Output Schema', - instruction: 'Instruction', - promptTooltip: 'Convert the text description into a standardized JSON Schema structure.', - promptPlaceholder: 'Describe your JSON Schema...', - generate: 'Generate', - import: 'Import from JSON', - generateJsonSchema: 'Generate JSON Schema', - generationTip: 'You can use natural language to quickly create a JSON Schema.', - generating: 'Generating JSON Schema...', - generatedResult: 'Generated Result', - resultTip: 'Here is the generated result. If you\'re not satisfied, you can go back and modify your prompt.', - back: 'Back', - regenerate: 'Regenerate', - apply: 'Apply', - doc: 'Learn more about structured output', - resetDefaults: 'Reset', - required: 'required', - addField: 'Add Field', - addChildField: 'Add Child Field', - showAdvancedOptions: 'Show advanced options', - stringValidations: 'String Validations', - fieldNamePlaceholder: 'Field Name', - descriptionPlaceholder: 'Add description', - warningTips: { - saveSchema: 'Please finish editing the current field before saving the schema', - }, - }, - }, - knowledgeRetrieval: { - queryVariable: 'Query Variable', - queryText: 'Query Text', - queryAttachment: 'Query Images', - knowledge: 'Knowledge', - outputVars: { - output: 'Retrieval segmented data', - content: 'Segmented content', - title: 'Segmented title', - icon: 'Segmented icon', - url: 'Segmented URL', - metadata: 'Other metadata', - files: 'Retrieved files', - }, - metadata: { - title: 'Metadata Filtering', - tip: 'Metadata filtering is the process of using metadata attributes (such as tags, categories, or access permissions) to refine and control the retrieval of relevant information within a system.', - options: { - disabled: { - title: 'Disabled', - subTitle: 'Not enabling metadata filtering', - }, - automatic: { - title: 'Automatic', - subTitle: 'Automatically generate metadata filtering conditions based on user query', - desc: 'Automatically generate metadata filtering conditions based on Query Variable', - }, - manual: { - title: 'Manual', - subTitle: 'Manually add metadata filtering conditions', - }, - }, - panel: { - title: 'Metadata Filter Conditions', - conditions: 'Conditions', - add: 'Add Condition', - search: 'Search metadata', - placeholder: 'Enter value', - datePlaceholder: 'Choose a time...', - select: 'Select variable...', - }, - }, - }, - http: { - inputVars: 'Input Variables', - api: 'API', - apiPlaceholder: 'Enter URL, type ‘/’ insert variable', - extractListPlaceholder: 'Enter list item index, type ‘/’ insert variable', - notStartWithHttp: 'API should start with http:// or https://', - key: 'Key', - type: 'Type', - value: 'Value', - bulkEdit: 'Bulk Edit', - keyValueEdit: 'Key-Value Edit', - headers: 'Headers', - params: 'Params', - body: 'Body', - binaryFileVariable: 'Binary File Variable', - outputVars: { - body: 'Response Content', - statusCode: 'Response Status Code', - headers: 'Response Header List JSON', - files: 'Files List', - }, - authorization: { - 'authorization': 'Authorization', - 'authorizationType': 'Authorization Type', - 'no-auth': 'None', - 'api-key': 'API-Key', - 'auth-type': 'Auth Type', - 'basic': 'Basic', - 'bearer': 'Bearer', - 'custom': 'Custom', - 'api-key-title': 'API Key', - 'header': 'Header', - }, - insertVarPlaceholder: 'type \'/\' to insert variable', - timeout: { - title: 'Timeout', - connectLabel: 'Connection Timeout', - connectPlaceholder: 'Enter connection timeout in seconds', - readLabel: 'Read Timeout', - readPlaceholder: 'Enter read timeout in seconds', - writeLabel: 'Write Timeout', - writePlaceholder: 'Enter write timeout in seconds', - }, - curl: { - title: 'Import from cURL', - placeholder: 'Paste cURL string here', - }, - verifySSL: { - title: 'Verify SSL Certificate', - warningTooltip: 'Disabling SSL verification is not recommended for production environments. This should only be used in development or testing, as it makes the connection vulnerable to security threats like man-in-the-middle attacks.', - }, - }, - code: { - inputVars: 'Input Variables', - outputVars: 'Output Variables', - advancedDependencies: 'Advanced Dependencies', - advancedDependenciesTip: 'Add some preloaded dependencies that take more time to consume or are not default built-in here', - searchDependencies: 'Search Dependencies', - syncFunctionSignature: 'Sync function signature to code', - }, - templateTransform: { - inputVars: 'Input Variables', - code: 'Code', - codeSupportTip: 'Only supports Jinja2', - outputVars: { - output: 'Transformed content', - }, - }, - ifElse: { - if: 'If', - else: 'Else', - elseDescription: 'Used to define the logic that should be executed when the if condition is not met.', - and: 'and', - or: 'or', - operator: 'Operator', - notSetVariable: 'Please set variable first', - comparisonOperator: { - 'contains': 'contains', - 'not contains': 'not contains', - 'start with': 'start with', - 'end with': 'end with', - 'is': 'is', - 'is not': 'is not', - 'empty': 'is empty', - 'not empty': 'is not empty', - 'null': 'is null', - 'not null': 'is not null', - 'in': 'in', - 'not in': 'not in', - 'all of': 'all of', - 'exists': 'exists', - 'not exists': 'not exists', - 'before': 'before', - 'after': 'after', - }, - optionName: { - image: 'Image', - doc: 'Doc', - audio: 'Audio', - video: 'Video', - localUpload: 'Local Upload', - url: 'URL', - }, - enterValue: 'Enter value', - addCondition: 'Add Condition', - conditionNotSetup: 'Condition NOT setup', - selectVariable: 'Select variable...', - addSubVariable: 'Sub Variable', - select: 'Select', - }, - variableAssigner: { - title: 'Assign variables', - outputType: 'Output Type', - varNotSet: 'Variable not set', - noVarTip: 'Add the variables to be assigned', - type: { - string: 'String', - number: 'Number', - object: 'Object', - array: 'Array', - }, - aggregationGroup: 'Aggregation Group', - aggregationGroupTip: 'Enabling this feature allows the variable aggregator to aggregate multiple sets of variables.', - addGroup: 'Add Group', - outputVars: { - varDescribe: '{{groupName}} output', - }, - setAssignVariable: 'Set assign variable', - }, - assigner: { - 'assignedVariable': 'Assigned Variable', - 'varNotSet': 'Variable NOT Set', - 'variables': 'Variables', - 'noVarTip': 'Click the "+" button to add variables', - 'writeMode': 'Write Mode', - 'writeModeTip': 'Append mode: Available for array variables only.', - 'over-write': 'Overwrite', - 'append': 'Append', - 'plus': 'Plus', - 'clear': 'Clear', - 'setVariable': 'Set Variable', - 'selectAssignedVariable': 'Select assigned variable...', - 'setParameter': 'Set parameter...', - 'operations': { - 'title': 'Operation', - 'over-write': 'Overwrite', - 'overwrite': 'Overwrite', - 'set': 'Set', - 'clear': 'Clear', - 'extend': 'Extend', - 'append': 'Append', - 'remove-first': 'Remove First', - 'remove-last': 'Remove Last', - '+=': '+=', - '-=': '-=', - '*=': '*=', - '/=': '/=', - }, - 'variable': 'Variable', - 'noAssignedVars': 'No available assigned variables', - 'assignedVarsDescription': 'Assigned variables must be writable variables, such as conversation variables.', - }, - tool: { - authorize: 'Authorize', - inputVars: 'Input Variables', - settings: 'Settings', - insertPlaceholder1: 'Type or press', - insertPlaceholder2: 'insert variable', - outputVars: { - text: 'tool generated content', - files: { - title: 'tool generated files', - type: 'Support type. Now only support image', - transfer_method: 'Transfer method.Value is remote_url or local_file', - url: 'Image url', - upload_file_id: 'Upload file id', - }, - json: 'tool generated json', - }, - }, - triggerPlugin: { - authorized: 'Authorized', - notConfigured: 'Not Configured', - notAuthorized: 'Not Authorized', - selectSubscription: 'Select Subscription', - availableSubscriptions: 'Available Subscriptions', - addSubscription: 'Add New Subscription', - removeSubscription: 'Remove Subscription', - subscriptionRemoved: 'Subscription removed successfully', - error: 'Error', - configuration: 'Configuration', - remove: 'Remove', - or: 'OR', - useOAuth: 'Use OAuth', - useApiKey: 'Use API Key', - authenticationFailed: 'Authentication failed', - authenticationSuccess: 'Authentication successful', - oauthConfigFailed: 'OAuth configuration failed', - configureOAuthClient: 'Configure OAuth Client', - oauthClientDescription: 'Configure OAuth client credentials to enable authentication', - oauthClientSaved: 'OAuth client configuration saved successfully', - configureApiKey: 'Configure API Key', - apiKeyDescription: 'Configure API key credentials for authentication', - apiKeyConfigured: 'API key configured successfully', - configurationFailed: 'Configuration failed', - failedToStart: 'Failed to start authentication flow', - credentialsVerified: 'Credentials verified successfully', - credentialVerificationFailed: 'Credential verification failed', - verifyAndContinue: 'Verify & Continue', - configureParameters: 'Configure Parameters', - parametersDescription: 'Configure trigger parameters and properties', - configurationComplete: 'Configuration Complete', - configurationCompleteDescription: 'Your trigger has been configured successfully', - configurationCompleteMessage: 'Your trigger configuration is now complete and ready to use.', - parameters: 'Parameters', - properties: 'Properties', - propertiesDescription: 'Additional configuration properties for this trigger', - noConfigurationRequired: 'No additional configuration required for this trigger.', - subscriptionName: 'Subscription Name', - subscriptionNameDescription: 'Enter a unique name for this trigger subscription', - subscriptionNamePlaceholder: 'Enter subscription name...', - subscriptionNameRequired: 'Subscription name is required', - subscriptionRequired: 'Subscription is required', - }, - questionClassifiers: { - model: 'model', - inputVars: 'Input Variables', - outputVars: { - className: 'Class Name', - usage: 'Model Usage Information', - }, - class: 'Class', - classNamePlaceholder: 'Write your class name', - advancedSetting: 'Advanced Setting', - topicName: 'Topic Name', - topicPlaceholder: 'Write your topic name', - addClass: 'Add Class', - instruction: 'Instruction', - instructionTip: 'Input additional instructions to help the question classifier better understand how to categorize questions.', - instructionPlaceholder: 'Write your instruction', - }, - parameterExtractor: { - inputVar: 'Input Variable', - outputVars: { - isSuccess: 'Is Success.On success the value is 1, on failure the value is 0.', - errorReason: 'Error Reason', - usage: 'Model Usage Information', - }, - extractParameters: 'Extract Parameters', - importFromTool: 'Import from tools', - addExtractParameter: 'Add Extract Parameter', - addExtractParameterContent: { - name: 'Name', - namePlaceholder: 'Extract Parameter Name', - type: 'Type', - typePlaceholder: 'Extract Parameter Type', - description: 'Description', - descriptionPlaceholder: 'Extract Parameter Description', - required: 'Required', - requiredContent: 'Required is only used as a reference for model inference, and not for mandatory validation of parameter output.', - }, - extractParametersNotSet: 'Extract Parameters not setup', - instruction: 'Instruction', - instructionTip: 'Input additional instructions to help the parameter extractor understand how to extract parameters.', - advancedSetting: 'Advanced Setting', - reasoningMode: 'Reasoning Mode', - reasoningModeTip: 'You can choose the appropriate reasoning mode based on the model\'s ability to respond to instructions for function calling or prompts.', - }, - iteration: { - deleteTitle: 'Delete Iteration Node?', - deleteDesc: 'Deleting the iteration node will delete all child nodes', - input: 'Input', - output: 'Output Variables', - iteration_one: '{{count}} Iteration', - iteration_other: '{{count}} Iterations', - currentIteration: 'Current Iteration', - comma: ', ', - error_one: '{{count}} Error', - error_other: '{{count}} Errors', - parallelMode: 'Parallel Mode', - parallelModeUpper: 'PARALLEL MODE', - parallelModeEnableTitle: 'Parallel Mode Enabled', - parallelModeEnableDesc: 'In parallel mode, tasks within iterations support parallel execution. You can configure this in the properties panel on the right.', - parallelPanelDesc: 'In parallel mode, tasks in the iteration support parallel execution.', - MaxParallelismTitle: 'Maximum parallelism', - MaxParallelismDesc: 'The maximum parallelism is used to control the number of tasks executed simultaneously in a single iteration.', - errorResponseMethod: 'Error response method', - ErrorMethod: { - operationTerminated: 'Terminated', - continueOnError: 'Continue on Error', - removeAbnormalOutput: 'Remove Abnormal Output', - }, - answerNodeWarningDesc: 'Parallel mode warning: Answer nodes, conversation variable assignments, and persistent read/write operations within iterations may cause exceptions.', - flattenOutput: 'Flatten Output', - flattenOutputDesc: 'When enabled, if all iteration outputs are arrays, they will be flattened into a single array. When disabled, outputs will maintain a nested array structure.', - }, - loop: { - deleteTitle: 'Delete Loop Node?', - deleteDesc: 'Deleting the loop node will remove all child nodes', - input: 'Input', - output: 'Output Variable', - loop_one: '{{count}} Loop', - loop_other: '{{count}} Loops', - currentLoop: 'Current Loop', - comma: ', ', - error_one: '{{count}} Error', - error_other: '{{count}} Errors', - breakCondition: 'Loop Termination Condition', - breakConditionTip: 'Only variables within loops with termination conditions and conversation variables can be referenced.', - loopMaxCount: 'Maximum Loop Count', - loopMaxCountError: 'Please enter a valid maximum loop count, ranging from 1 to {{maxCount}}', - errorResponseMethod: 'Error Response Method', - ErrorMethod: { - operationTerminated: 'Terminated', - continueOnError: 'Continue on Error', - removeAbnormalOutput: 'Remove Abnormal Output', - }, - loopVariables: 'Loop Variables', - initialLoopVariables: 'Initial Loop Variables', - finalLoopVariables: 'Final Loop Variables', - setLoopVariables: 'Set variables within the loop scope', - variableName: 'Variable Name', - inputMode: 'Input Mode', - exitConditionTip: 'A loop node needs at least one exit condition', - loopNode: 'Loop Node', - currentLoopCount: 'Current loop count: {{count}}', - totalLoopCount: 'Total loop count: {{count}}', - }, - note: { - addNote: 'Add Note', - editor: { - placeholder: 'Write your note...', - small: 'Small', - medium: 'Medium', - large: 'Large', - bold: 'Bold', - italic: 'Italic', - strikethrough: 'Strikethrough', - link: 'Link', - openLink: 'Open', - unlink: 'Unlink', - enterUrl: 'Enter URL...', - invalidUrl: 'Invalid URL', - bulletList: 'Bullet List', - showAuthor: 'Show Author', - }, - }, - docExtractor: { - inputVar: 'Input Variable', - outputVars: { - text: 'Extracted text', - }, - supportFileTypes: 'Support file types: {{types}}.', - learnMore: 'Learn more', - }, - listFilter: { - inputVar: 'Input Variable', - filterCondition: 'Filter Condition', - filterConditionKey: 'Filter Condition Key', - extractsCondition: 'Extract the N item', - filterConditionComparisonOperator: 'Filter Condition Comparison Operator', - filterConditionComparisonValue: 'Filter Condition value', - selectVariableKeyPlaceholder: 'Select sub variable key', - limit: 'Top N', - orderBy: 'Order by', - asc: 'ASC', - desc: 'DESC', - outputVars: { - result: 'Filter result', - first_record: 'First record', - last_record: 'Last record', - }, - }, - agent: { - strategy: { - label: 'Agentic Strategy', - tooltip: 'Different Agentic strategies determine how the system plans and executes multi-step tool calls', - shortLabel: 'Strategy', - configureTip: 'Please configure agentic strategy.', - configureTipDesc: 'After configuring the agentic strategy, this node will automatically load the remaining configurations. The strategy will affect the mechanism of multi-step tool reasoning. ', - selectTip: 'Select agentic strategy', - searchPlaceholder: 'Search agentic strategy', - }, - learnMore: 'Learn more', - pluginNotInstalled: 'This plugin is not installed', - pluginNotInstalledDesc: 'This plugin is installed from GitHub. Please go to Plugins to reinstall', - linkToPlugin: 'Link to Plugins', - pluginInstaller: { - install: 'Install', - installing: 'Installing', - }, - modelNotInMarketplace: { - title: 'Model not installed', - desc: 'This model is installed from Local or GitHub repository. Please use after installation.', - manageInPlugins: 'Manage in Plugins', - }, - modelNotSupport: { - title: 'Unsupported Model', - desc: 'The installed plugin version does not provide this model.', - descForVersionSwitch: 'The installed plugin version does not provide this model. Click to switch version.', - }, - configureModel: 'Configure Model', - notAuthorized: 'Not Authorized', - model: 'model', - toolbox: 'toolbox', - strategyNotSet: 'Agentic strategy Not Set', - tools: 'Tools', - maxIterations: 'Max Iterations', - modelNotSelected: 'Model not selected', - modelNotInstallTooltip: 'This model is not installed', - toolNotInstallTooltip: '{{tool}} is not installed', - toolNotAuthorizedTooltip: '{{tool}} Not Authorized', - strategyNotInstallTooltip: '{{strategy}} is not installed', - unsupportedStrategy: 'Unsupported strategy', - pluginNotFoundDesc: 'This plugin is installed from GitHub. Please go to Plugins to reinstall', - strategyNotFoundDesc: 'The installed plugin version does not provide this strategy.', - strategyNotFoundDescAndSwitchVersion: 'The installed plugin version does not provide this strategy. Click to switch version.', - modelSelectorTooltips: { - deprecated: 'This model is deprecated', - }, - outputVars: { - text: 'agent generated content', - usage: 'Model Usage Information', - files: { - title: 'agent generated files', - type: 'Support type. Now only support image', - transfer_method: 'Transfer method.Value is remote_url or local_file', - url: 'Image url', - upload_file_id: 'Upload file id', - }, - json: 'agent generated json', - }, - checkList: { - strategyNotSelected: 'Strategy not selected', - }, - installPlugin: { - title: 'Install Plugin', - desc: 'About to install the following plugin', - changelog: 'Change log', - install: 'Install', - cancel: 'Cancel', - }, - clickToViewParameterSchema: 'Click to view parameter schema', - parameterSchema: 'Parameter Schema', - }, - dataSource: { - supportedFileFormats: 'Supported file formats', - supportedFileFormatsPlaceholder: 'File extension, e.g. doc', - add: 'Add data source', - }, - knowledgeBase: { - chunkStructure: 'Chunk Structure', - chooseChunkStructure: 'Choose a chunk structure', - chunkStructureTip: { - title: 'Please choose a chunk structure', - message: 'The Dify Knowledge Base supports three chunking structures: General, Parent-child, and Q&A. Each knowledge base can have only one structure. The output from the preceding node must align with the selected chunk structure. Note that the choice of chunking structure affects the available index methods.', - learnMore: 'Learn more', - }, - changeChunkStructure: 'Change Chunk Structure', - chunksInput: 'Chunks', - chunksInputTip: 'The input variable of the knowledge base node is Chunks. The variable type is an object with a specific JSON Schema which must be consistent with the selected chunk structure.', - aboutRetrieval: 'about retrieval method.', - chunkIsRequired: 'Chunk structure is required', - indexMethodIsRequired: 'Index method is required', - chunksVariableIsRequired: 'Chunks variable is required', - embeddingModelIsRequired: 'Embedding model is required', - embeddingModelIsInvalid: 'Embedding model is invalid', - retrievalSettingIsRequired: 'Retrieval setting is required', - rerankingModelIsRequired: 'Reranking model is required', - rerankingModelIsInvalid: 'Reranking model is invalid', - }, - triggerSchedule: { - title: 'Schedule', - nodeTitle: 'Schedule Trigger', - notConfigured: 'Not configured', - useCronExpression: 'Use cron expression', - useVisualPicker: 'Use visual picker', - frequency: { - label: 'FREQUENCY', - hourly: 'Hourly', - daily: 'Daily', - weekly: 'Weekly', - monthly: 'Monthly', - }, - selectFrequency: 'Select frequency', - frequencyLabel: 'Frequency', - nextExecution: 'Next execution', - weekdays: 'Week days', - time: 'Time', - cronExpression: 'Cron expression', - nextExecutionTime: 'NEXT EXECUTION TIME', - nextExecutionTimes: 'Next 5 execution times', - startTime: 'Start Time', - executeNow: 'Execution now', - selectDateTime: 'Select Date & Time', - hours: 'Hours', - minutes: 'Minutes', - onMinute: 'On Minute', - days: 'Days', - lastDay: 'Last day', - lastDayTooltip: 'Not all months have 31 days. Use the \'last day\' option to select each month\'s final day.', - mode: 'Mode', - modeVisual: 'Visual', - modeCron: 'Cron', - selectTime: 'Select time', - timezone: 'Timezone', - visualConfig: 'Visual Configuration', - monthlyDay: 'Monthly Day', - executionTime: 'Execution Time', - invalidTimezone: 'Invalid timezone', - invalidCronExpression: 'Invalid cron expression', - noValidExecutionTime: 'No valid execution time can be calculated', - executionTimeCalculationError: 'Failed to calculate execution times', - invalidFrequency: 'Invalid frequency', - invalidStartTime: 'Invalid start time', - startTimeMustBeFuture: 'Start time must be in the future', - invalidTimeFormat: 'Invalid time format (expected HH:MM AM/PM)', - invalidWeekday: 'Invalid weekday: {{weekday}}', - invalidMonthlyDay: 'Monthly day must be between 1-31 or "last"', - invalidOnMinute: 'On minute must be between 0-59', - invalidExecutionTime: 'Invalid execution time', - executionTimeMustBeFuture: 'Execution time must be in the future', - }, - triggerWebhook: { - title: 'Webhook Trigger', - nodeTitle: '🔗 Webhook Trigger', - configPlaceholder: 'Webhook trigger configuration will be implemented here', - webhookUrl: 'Webhook URL', - webhookUrlPlaceholder: 'Click generate to create webhook URL', - generate: 'Generate', - copy: 'Copy', - test: 'Test', - urlGenerated: 'Webhook URL generated successfully', - urlGenerationFailed: 'Failed to generate webhook URL', - urlCopied: 'URL copied to clipboard', - method: 'Method', - contentType: 'Content Type', - queryParameters: 'Query Parameters', - headerParameters: 'Header Parameters', - requestBodyParameters: 'Request Body Parameters', - parameterName: 'Variable name', - varName: 'Variable name', - varType: 'Type', - varNamePlaceholder: 'Enter variable name...', - required: 'Required', - addParameter: 'Add', - addHeader: 'Add', - noParameters: 'No parameters configured', - noQueryParameters: 'No query parameters configured', - noHeaders: 'No headers configured', - noBodyParameters: 'No body parameters configured', - debugUrlTitle: 'For test runs, always use this URL', - debugUrlCopy: 'Click to copy', - debugUrlCopied: 'Copied!', - debugUrlPrivateAddressWarning: 'This URL appears to be an internal address, which may cause webhook requests to fail. You may change TRIGGER_URL to a public address.', - errorHandling: 'Error Handling', - errorStrategy: 'Error Handling', - responseConfiguration: 'Response', - asyncMode: 'Async Mode', - statusCode: 'Status Code', - responseBody: 'Response Body', - responseBodyPlaceholder: 'Write your response body here', - headers: 'Headers', - validation: { - webhookUrlRequired: 'Webhook URL is required', - invalidParameterType: 'Invalid parameter type "{{type}}" for parameter "{{name}}"', - }, - }, - }, - triggerStatus: { - enabled: 'TRIGGER', - disabled: 'TRIGGER • DISABLED', - }, - entryNodeStatus: { - enabled: 'START', - disabled: 'START • DISABLED', - }, - tracing: { - stopBy: 'Stop by {{user}}', - }, - versionHistory: { - title: 'Versions', - currentDraft: 'Current Draft', - latest: 'Latest', - filter: { - all: 'All', - onlyYours: 'Only yours', - onlyShowNamedVersions: 'Only show named versions', - reset: 'Reset Filter', - empty: 'No matching version history found', - }, - defaultName: 'Untitled Version', - nameThisVersion: 'Name this version', - editVersionInfo: 'Edit version info', - copyId: 'Copy ID', - editField: { - title: 'Title', - releaseNotes: 'Release Notes', - titleLengthLimit: 'Title can\'t exceed {{limit}} characters', - releaseNotesLengthLimit: 'Release notes can\'t exceed {{limit}} characters', - }, - releaseNotesPlaceholder: 'Describe what changed', - restorationTip: 'After version restoration, the current draft will be overwritten.', - deletionTip: 'Deletion is irreversible, please confirm.', - action: { - restoreSuccess: 'Version restored', - restoreFailure: 'Failed to restore version', - deleteSuccess: 'Version deleted', - deleteFailure: 'Failed to delete version', - updateSuccess: 'Version updated', - updateFailure: 'Failed to update version', - copyIdSuccess: 'ID copied to clipboard', - }, - }, - debug: { - settingsTab: 'Settings', - lastRunTab: 'Last Run', - relationsTab: 'Relations', - copyLastRun: 'Copy Last Run', - noLastRunFound: 'No previous run found', - noMatchingInputsFound: 'No matching inputs found from last run', - lastRunInputsCopied: '{{count}} input(s) copied from last run', - copyLastRunError: 'Failed to copy last run inputs', - noData: { - description: 'The results of the last run will be displayed here', - runThisNode: 'Run this node', - }, - variableInspect: { - title: 'Variable Inspect', - emptyTip: 'After stepping through a node on the canvas or running a node step by step, you can view the current value of the node variable in Variable Inspect', - emptyLink: 'Learn more', - clearAll: 'Reset all', - clearNode: 'Clear cached variable', - resetConversationVar: 'Reset conversation variable to default value', - view: 'View log', - edited: 'Edited', - reset: 'Reset to last run value', - listening: { - title: 'Listening for events from triggers...', - tip: 'You can now simulate event triggers by sending test requests to HTTP {{nodeName}} endpoint or use it as a callback URL for live event debugging. All outputs can be viewed directly in the Variable Inspector.', - tipPlugin: 'Now you can create events in {{- pluginName}}, and retrieve outputs from these events in the Variable Inspector.', - tipSchedule: 'Listening for events from schedule triggers.\nNext scheduled run: {{nextTriggerTime}}', - tipFallback: 'Await incoming trigger events. Outputs will appear here.', - defaultNodeName: 'this trigger', - defaultPluginName: 'this plugin trigger', - defaultScheduleTime: 'Not configured', - selectedTriggers: 'selected triggers', - stopButton: 'Stop', - }, - trigger: { - normal: 'Variable Inspect', - running: 'Caching running status', - stop: 'Stop run', - cached: 'View cached variables', - clear: 'Clear', - }, - envNode: 'Environment', - chatNode: 'Conversation', - systemNode: 'System', - exportToolTip: 'Export Variable as File', - largeData: 'Large data, read-only preview. Export to view all.', - largeDataNoExport: 'Large data - partial preview only', - export: 'export', - }, - lastOutput: 'Last Output', - relations: { - dependencies: 'Dependencies', - dependents: 'Dependents', - dependenciesDescription: 'Nodes that this node relies on', - dependentsDescription: 'Nodes that rely on this node', - noDependencies: 'No dependencies', - noDependents: 'No dependents', - }, - }, - onboarding: { - title: 'Select a start node to begin', - description: 'Different start nodes have different capabilities. Don\'t worry, you can always change them later.', - userInputFull: 'User Input (original start node)', - userInputDescription: 'Start node that allows setting user input variables, with web app, service API, MCP server, and workflow as tool capabilities.', - trigger: 'Trigger', - triggerDescription: 'Triggers can serve as the start node of a workflow, such as scheduled tasks, custom webhooks, or integrations with other apps.', - back: 'Back', - learnMore: 'Learn more', - aboutStartNode: 'about start node.', - escTip: { - press: 'Press', - key: 'esc', - toDismiss: 'to dismiss', - }, - }, -} - -export default translation diff --git a/web/i18n/es-ES/app-annotation.json b/web/i18n/es-ES/app-annotation.json new file mode 100644 index 0000000000..64b6ebe2b1 --- /dev/null +++ b/web/i18n/es-ES/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "Anotaciones", + "name": "Respuesta de Anotación", + "editBy": "Respuesta editada por {{author}}", + "noData": { + "title": "Sin anotaciones", + "description": "Puedes editar anotaciones durante la depuración de la aplicación o importar anotaciones en masa aquí para obtener una respuesta de alta calidad." + }, + "table": { + "header": { + "question": "pregunta", + "answer": "respuesta", + "createdAt": "creado el", + "hits": "aciertos", + "actions": "acciones", + "addAnnotation": "Agregar Anotación", + "bulkImport": "Importar en Masa", + "bulkExport": "Exportar en Masa", + "clearAll": "Borrar Todas las Anotaciones", + "clearAllConfirm": "¿Eliminar todas las anotaciones?" + } + }, + "editModal": { + "title": "Editar Respuesta de Anotación", + "queryName": "Consulta del Usuario", + "answerName": "Bot Narrador", + "yourAnswer": "Tu Respuesta", + "answerPlaceholder": "Escribe tu respuesta aquí", + "yourQuery": "Tu Consulta", + "queryPlaceholder": "Escribe tu consulta aquí", + "removeThisCache": "Eliminar esta Anotación", + "createdAt": "Creado el" + }, + "addModal": { + "title": "Agregar Respuesta de Anotación", + "queryName": "Pregunta", + "answerName": "Respuesta", + "answerPlaceholder": "Escribe la respuesta aquí", + "queryPlaceholder": "Escribe la pregunta aquí", + "createNext": "Agregar otra respuesta anotada" + }, + "batchModal": { + "title": "Importación en Masa", + "csvUploadTitle": "Arrastra y suelta tu archivo CSV aquí, o ", + "browse": "navega", + "tip": "El archivo CSV debe cumplir con la siguiente estructura:", + "question": "pregunta", + "answer": "respuesta", + "contentTitle": "contenido del fragmento", + "content": "contenido", + "template": "Descarga la plantilla aquí", + "cancel": "Cancelar", + "run": "Ejecutar Lote", + "runError": "Error al ejecutar el lote", + "processing": "En proceso de lote", + "completed": "Importación completada", + "error": "Error de importación", + "ok": "OK" + }, + "errorMessage": { + "answerRequired": "Se requiere una respuesta", + "queryRequired": "Se requiere una pregunta" + }, + "viewModal": { + "annotatedResponse": "Respuesta de Anotación", + "hitHistory": "Historial de Aciertos", + "hit": "Acierto", + "hits": "Aciertos", + "noHitHistory": "Sin historial de aciertos" + }, + "hitHistoryTable": { + "query": "Consulta", + "match": "Coincidencia", + "response": "Respuesta", + "source": "Fuente", + "score": "Puntuación", + "time": "Tiempo" + }, + "initSetup": { + "title": "Configuración Inicial de Respuesta de Anotación", + "configTitle": "Configuración de Respuesta de Anotación", + "confirmBtn": "Guardar y Habilitar", + "configConfirmBtn": "Guardar" + }, + "embeddingModelSwitchTip": "Modelo de vectorización de texto de anotación, cambiar de modelo volverá a incrustar, lo que resultará en costos adicionales.", + "list": { + "delete": { + "title": "¿Estás seguro de que deseas eliminar?" + } + }, + "batchAction": { + "delete": "Eliminar", + "selected": "Seleccionado", + "cancel": "Cancelar" + } +} diff --git a/web/i18n/es-ES/app-annotation.ts b/web/i18n/es-ES/app-annotation.ts deleted file mode 100644 index 9a25037e18..0000000000 --- a/web/i18n/es-ES/app-annotation.ts +++ /dev/null @@ -1,98 +0,0 @@ -const translation = { - title: 'Anotaciones', - name: 'Respuesta de Anotación', - editBy: 'Respuesta editada por {{author}}', - noData: { - title: 'Sin anotaciones', - description: 'Puedes editar anotaciones durante la depuración de la aplicación o importar anotaciones en masa aquí para obtener una respuesta de alta calidad.', - }, - table: { - header: { - question: 'pregunta', - answer: 'respuesta', - createdAt: 'creado el', - hits: 'aciertos', - actions: 'acciones', - addAnnotation: 'Agregar Anotación', - bulkImport: 'Importar en Masa', - bulkExport: 'Exportar en Masa', - clearAll: 'Borrar Todas las Anotaciones', - clearAllConfirm: '¿Eliminar todas las anotaciones?', - }, - }, - editModal: { - title: 'Editar Respuesta de Anotación', - queryName: 'Consulta del Usuario', - answerName: 'Bot Narrador', - yourAnswer: 'Tu Respuesta', - answerPlaceholder: 'Escribe tu respuesta aquí', - yourQuery: 'Tu Consulta', - queryPlaceholder: 'Escribe tu consulta aquí', - removeThisCache: 'Eliminar esta Anotación', - createdAt: 'Creado el', - }, - addModal: { - title: 'Agregar Respuesta de Anotación', - queryName: 'Pregunta', - answerName: 'Respuesta', - answerPlaceholder: 'Escribe la respuesta aquí', - queryPlaceholder: 'Escribe la pregunta aquí', - createNext: 'Agregar otra respuesta anotada', - }, - batchModal: { - title: 'Importación en Masa', - csvUploadTitle: 'Arrastra y suelta tu archivo CSV aquí, o ', - browse: 'navega', - tip: 'El archivo CSV debe cumplir con la siguiente estructura:', - question: 'pregunta', - answer: 'respuesta', - contentTitle: 'contenido del fragmento', - content: 'contenido', - template: 'Descarga la plantilla aquí', - cancel: 'Cancelar', - run: 'Ejecutar Lote', - runError: 'Error al ejecutar el lote', - processing: 'En proceso de lote', - completed: 'Importación completada', - error: 'Error de importación', - ok: 'OK', - }, - errorMessage: { - answerRequired: 'Se requiere una respuesta', - queryRequired: 'Se requiere una pregunta', - }, - viewModal: { - annotatedResponse: 'Respuesta de Anotación', - hitHistory: 'Historial de Aciertos', - hit: 'Acierto', - hits: 'Aciertos', - noHitHistory: 'Sin historial de aciertos', - }, - hitHistoryTable: { - query: 'Consulta', - match: 'Coincidencia', - response: 'Respuesta', - source: 'Fuente', - score: 'Puntuación', - time: 'Tiempo', - }, - initSetup: { - title: 'Configuración Inicial de Respuesta de Anotación', - configTitle: 'Configuración de Respuesta de Anotación', - confirmBtn: 'Guardar y Habilitar', - configConfirmBtn: 'Guardar', - }, - embeddingModelSwitchTip: 'Modelo de vectorización de texto de anotación, cambiar de modelo volverá a incrustar, lo que resultará en costos adicionales.', - list: { - delete: { - title: '¿Estás seguro de que deseas eliminar?', - }, - }, - batchAction: { - delete: 'Eliminar', - selected: 'Seleccionado', - cancel: 'Cancelar', - }, -} - -export default translation diff --git a/web/i18n/es-ES/app-api.json b/web/i18n/es-ES/app-api.json new file mode 100644 index 0000000000..24627d8b83 --- /dev/null +++ b/web/i18n/es-ES/app-api.json @@ -0,0 +1,83 @@ +{ + "apiServer": "Servidor de API", + "apiKey": "Clave de API", + "status": "Estado", + "disabled": "Desactivado", + "ok": "En servicio", + "copy": "Copiar", + "copied": "Copiado", + "play": "Reproducir", + "pause": "Pausa", + "playing": "Reproduciendo", + "loading": "Cargando", + "merMaid": { + "rerender": "Rehacer Rerender" + }, + "never": "Nunca", + "apiKeyModal": { + "apiSecretKey": "Clave secreta de API", + "apiSecretKeyTips": "Para evitar el abuso de la API, protege tu clave de API. Evita usarla como texto plano en el código del frontend. :)", + "createNewSecretKey": "Crear nueva clave secreta", + "secretKey": "Clave secreta", + "created": "CREADA", + "lastUsed": "ÚLTIMO USO", + "generateTips": "Guarda esta clave en un lugar seguro y accesible." + }, + "actionMsg": { + "deleteConfirmTitle": "¿Eliminar esta clave secreta?", + "deleteConfirmTips": "Esta acción no se puede deshacer.", + "ok": "OK" + }, + "completionMode": { + "title": "Completar App API", + "info": "Para generar texto de alta calidad, como artículos, resúmenes y traducciones, utiliza la API de mensajes de completado con la entrada del usuario. La generación de texto depende de los parámetros del modelo y las plantillas de inicio establecidas en Dify Prompt Engineering.", + "createCompletionApi": "Crear mensaje de completado", + "createCompletionApiTip": "Crea un mensaje de completado para admitir el modo de pregunta y respuesta.", + "inputsTips": "(Opcional) Proporciona campos de entrada de usuario como pares clave-valor, que corresponden a las variables en Prompt Eng. La clave es el nombre de la variable, el valor es el valor del parámetro. Si el tipo de campo es Select, el valor enviado debe ser una de las opciones predefinidas.", + "queryTips": "Contenido de texto de entrada del usuario.", + "blocking": "Tipo de bloqueo, esperando a que se complete la ejecución y devuelva los resultados. (Las solicitudes pueden interrumpirse si el proceso es largo)", + "streaming": "devoluciones de transmisión. Implementación de la devolución de transmisión basada en SSE (Eventos enviados por el servidor).", + "messageFeedbackApi": "Comentarios de mensajes (me gusta)", + "messageFeedbackApiTip": "Califica los mensajes recibidos en nombre de los usuarios finales con me gusta o no me gusta. Estos datos son visibles en la página de Registros y Anotaciones y se utilizan para ajustar el modelo en el futuro.", + "messageIDTip": "ID del mensaje", + "ratingTip": "me gusta o no me gusta, null es deshacer", + "parametersApi": "Obtener información de parámetros de la aplicación", + "parametersApiTip": "Recupera los parámetros de entrada configurados, incluidos los nombres de variables, los nombres de campos, los tipos y los valores predeterminados. Normalmente se utiliza para mostrar estos campos en un formulario o completar los valores predeterminados después de que el cliente se carga." + }, + "chatMode": { + "title": "Chat App API", + "info": "Para aplicaciones de conversación versátiles que utilizan un formato de preguntas y respuestas, llama a la API de mensajes de chat para iniciar el diálogo. Mantén conversaciones en curso pasando el conversation_id devuelto. Los parámetros de respuesta y las plantillas dependen de la configuración de Dify Prompt Eng.", + "createChatApi": "Crear mensaje de chat", + "createChatApiTip": "Crea un nuevo mensaje de conversación o continúa un diálogo existente.", + "inputsTips": "(Opcional) Proporciona campos de entrada de usuario como pares clave-valor, que corresponden a las variables en Prompt Eng. La clave es el nombre de la variable, el valor es el valor del parámetro. Si el tipo de campo es Select, el valor enviado debe ser una de las opciones predefinidas.", + "queryTips": "Contenido de entrada/pregunta del usuario", + "blocking": "Tipo de bloqueo, esperando a que se complete la ejecución y devuelva los resultados. (Las solicitudes pueden interrumpirse si el proceso es largo)", + "streaming": "devoluciones de transmisión. Implementación de la devolución de transmisión basada en SSE (Eventos enviados por el servidor).", + "conversationIdTip": "(Opcional) ID de conversación: dejar vacío para la primera conversación; pasar conversation_id del contexto para continuar el diálogo.", + "messageFeedbackApi": "Comentarios terminales de mensajes, me gusta", + "messageFeedbackApiTip": "Califica los mensajes recibidos en nombre de los usuarios finales con me gusta o no me gusta. Estos datos son visibles en la página de Registros y Anotaciones y se utilizan para ajustar el modelo en el futuro.", + "messageIDTip": "ID del mensaje", + "ratingTip": "me gusta o no me gusta, null es deshacer", + "chatMsgHistoryApi": "Obtener el historial de mensajes de chat", + "chatMsgHistoryApiTip": "La primera página devuelve las últimas `limit` barras, en orden inverso.", + "chatMsgHistoryConversationIdTip": "ID de conversación", + "chatMsgHistoryFirstId": "ID del primer registro de chat en la página actual. El valor predeterminado es ninguno.", + "chatMsgHistoryLimit": "Cuántos chats se devuelven en una solicitud", + "conversationsListApi": "Obtener lista de conversaciones", + "conversationsListApiTip": "Obtiene la lista de sesiones del usuario actual. De forma predeterminada, se devuelven las últimas 20 sesiones.", + "conversationsListFirstIdTip": "ID del último registro en la página actual, predeterminado ninguno.", + "conversationsListLimitTip": "Cuántos chats se devuelven en una solicitud", + "conversationRenamingApi": "Renombrar conversación", + "conversationRenamingApiTip": "Cambia el nombre de las conversaciones; el nombre se muestra en las interfaces de cliente de múltiples sesiones.", + "conversationRenamingNameTip": "Nuevo nombre", + "parametersApi": "Obtener información de parámetros de la aplicación", + "parametersApiTip": "Recupera los parámetros de entrada configurados, incluidos los nombres de variables, los nombres de campos, los tipos y los valores predeterminados. Normalmente se utiliza para mostrar estos campos en un formulario o completar los valores predeterminados después de que el cliente se carga." + }, + "develop": { + "requestBody": "Cuerpo de la solicitud", + "pathParams": "Parámetros de ruta", + "query": "Consulta", + "toc": "Contenido" + }, + "regenerate": "Regenerar" +} diff --git a/web/i18n/es-ES/app-api.ts b/web/i18n/es-ES/app-api.ts deleted file mode 100644 index 425545fef7..0000000000 --- a/web/i18n/es-ES/app-api.ts +++ /dev/null @@ -1,85 +0,0 @@ -const translation = { - apiServer: 'Servidor de API', - apiKey: 'Clave de API', - status: 'Estado', - disabled: 'Desactivado', - ok: 'En servicio', - copy: 'Copiar', - copied: 'Copiado', - play: 'Reproducir', - pause: 'Pausa', - playing: 'Reproduciendo', - loading: 'Cargando', - merMaid: { - rerender: 'Rehacer Rerender', - }, - never: 'Nunca', - apiKeyModal: { - apiSecretKey: 'Clave secreta de API', - apiSecretKeyTips: 'Para evitar el abuso de la API, protege tu clave de API. Evita usarla como texto plano en el código del frontend. :)', - createNewSecretKey: 'Crear nueva clave secreta', - secretKey: 'Clave secreta', - created: 'CREADA', - lastUsed: 'ÚLTIMO USO', - generateTips: 'Guarda esta clave en un lugar seguro y accesible.', - }, - actionMsg: { - deleteConfirmTitle: '¿Eliminar esta clave secreta?', - deleteConfirmTips: 'Esta acción no se puede deshacer.', - ok: 'OK', - }, - completionMode: { - title: 'Completar App API', - info: 'Para generar texto de alta calidad, como artículos, resúmenes y traducciones, utiliza la API de mensajes de completado con la entrada del usuario. La generación de texto depende de los parámetros del modelo y las plantillas de inicio establecidas en Dify Prompt Engineering.', - createCompletionApi: 'Crear mensaje de completado', - createCompletionApiTip: 'Crea un mensaje de completado para admitir el modo de pregunta y respuesta.', - inputsTips: '(Opcional) Proporciona campos de entrada de usuario como pares clave-valor, que corresponden a las variables en Prompt Eng. La clave es el nombre de la variable, el valor es el valor del parámetro. Si el tipo de campo es Select, el valor enviado debe ser una de las opciones predefinidas.', - queryTips: 'Contenido de texto de entrada del usuario.', - blocking: 'Tipo de bloqueo, esperando a que se complete la ejecución y devuelva los resultados. (Las solicitudes pueden interrumpirse si el proceso es largo)', - streaming: 'devoluciones de transmisión. Implementación de la devolución de transmisión basada en SSE (Eventos enviados por el servidor).', - messageFeedbackApi: 'Comentarios de mensajes (me gusta)', - messageFeedbackApiTip: 'Califica los mensajes recibidos en nombre de los usuarios finales con me gusta o no me gusta. Estos datos son visibles en la página de Registros y Anotaciones y se utilizan para ajustar el modelo en el futuro.', - messageIDTip: 'ID del mensaje', - ratingTip: 'me gusta o no me gusta, null es deshacer', - parametersApi: 'Obtener información de parámetros de la aplicación', - parametersApiTip: 'Recupera los parámetros de entrada configurados, incluidos los nombres de variables, los nombres de campos, los tipos y los valores predeterminados. Normalmente se utiliza para mostrar estos campos en un formulario o completar los valores predeterminados después de que el cliente se carga.', - }, - chatMode: { - title: 'Chat App API', - info: 'Para aplicaciones de conversación versátiles que utilizan un formato de preguntas y respuestas, llama a la API de mensajes de chat para iniciar el diálogo. Mantén conversaciones en curso pasando el conversation_id devuelto. Los parámetros de respuesta y las plantillas dependen de la configuración de Dify Prompt Eng.', - createChatApi: 'Crear mensaje de chat', - createChatApiTip: 'Crea un nuevo mensaje de conversación o continúa un diálogo existente.', - inputsTips: '(Opcional) Proporciona campos de entrada de usuario como pares clave-valor, que corresponden a las variables en Prompt Eng. La clave es el nombre de la variable, el valor es el valor del parámetro. Si el tipo de campo es Select, el valor enviado debe ser una de las opciones predefinidas.', - queryTips: 'Contenido de entrada/pregunta del usuario', - blocking: 'Tipo de bloqueo, esperando a que se complete la ejecución y devuelva los resultados. (Las solicitudes pueden interrumpirse si el proceso es largo)', - streaming: 'devoluciones de transmisión. Implementación de la devolución de transmisión basada en SSE (Eventos enviados por el servidor).', - conversationIdTip: '(Opcional) ID de conversación: dejar vacío para la primera conversación; pasar conversation_id del contexto para continuar el diálogo.', - messageFeedbackApi: 'Comentarios terminales de mensajes, me gusta', - messageFeedbackApiTip: 'Califica los mensajes recibidos en nombre de los usuarios finales con me gusta o no me gusta. Estos datos son visibles en la página de Registros y Anotaciones y se utilizan para ajustar el modelo en el futuro.', - messageIDTip: 'ID del mensaje', - ratingTip: 'me gusta o no me gusta, null es deshacer', - chatMsgHistoryApi: 'Obtener el historial de mensajes de chat', - chatMsgHistoryApiTip: 'La primera página devuelve las últimas `limit` barras, en orden inverso.', - chatMsgHistoryConversationIdTip: 'ID de conversación', - chatMsgHistoryFirstId: 'ID del primer registro de chat en la página actual. El valor predeterminado es ninguno.', - chatMsgHistoryLimit: 'Cuántos chats se devuelven en una solicitud', - conversationsListApi: 'Obtener lista de conversaciones', - conversationsListApiTip: 'Obtiene la lista de sesiones del usuario actual. De forma predeterminada, se devuelven las últimas 20 sesiones.', - conversationsListFirstIdTip: 'ID del último registro en la página actual, predeterminado ninguno.', - conversationsListLimitTip: 'Cuántos chats se devuelven en una solicitud', - conversationRenamingApi: 'Renombrar conversación', - conversationRenamingApiTip: 'Cambia el nombre de las conversaciones; el nombre se muestra en las interfaces de cliente de múltiples sesiones.', - conversationRenamingNameTip: 'Nuevo nombre', - parametersApi: 'Obtener información de parámetros de la aplicación', - parametersApiTip: 'Recupera los parámetros de entrada configurados, incluidos los nombres de variables, los nombres de campos, los tipos y los valores predeterminados. Normalmente se utiliza para mostrar estos campos en un formulario o completar los valores predeterminados después de que el cliente se carga.', - }, - develop: { - requestBody: 'Cuerpo de la solicitud', - pathParams: 'Parámetros de ruta', - query: 'Consulta', - toc: 'Contenido', - }, - regenerate: 'Regenerar', -} - -export default translation diff --git a/web/i18n/es-ES/app-debug.json b/web/i18n/es-ES/app-debug.json new file mode 100644 index 0000000000..b10268a5bd --- /dev/null +++ b/web/i18n/es-ES/app-debug.json @@ -0,0 +1,563 @@ +{ + "pageTitle": { + "line1": "INDICACIÓN", + "line2": "Ingeniería" + }, + "orchestrate": "Orquestar", + "promptMode": { + "simple": "Cambia a Modo Experto para editar toda la INDICACIÓN", + "advanced": "Modo Experto", + "switchBack": "Volver", + "advancedWarning": { + "title": "Has cambiado a Modo Experto, y una vez que modifiques la INDICACIÓN, NO PODRÁS regresar al modo básico.", + "description": "En Modo Experto, puedes editar toda la INDICACIÓN.", + "learnMore": "Aprender más", + "ok": "OK" + }, + "operation": { + "addMessage": "Agregar Mensaje" + }, + "contextMissing": "Componente de contexto faltante, la efectividad de la indicación puede no ser buena." + }, + "operation": { + "applyConfig": "Publicar", + "resetConfig": "Restablecer", + "debugConfig": "Depurar", + "addFeature": "Agregar Función", + "automatic": "Automático", + "stopResponding": "Dejar de responder", + "agree": "Me gusta", + "disagree": "No me gusta", + "cancelAgree": "Cancelar Me gusta", + "cancelDisagree": "Cancelar No me gusta", + "userAction": "Usuario " + }, + "notSetAPIKey": { + "title": "La clave del proveedor LLM no se ha establecido", + "trailFinished": "Prueba terminada", + "description": "La clave del proveedor LLM no se ha establecido, y debe configurarse antes de depurar.", + "settingBtn": "Ir a configuración" + }, + "trailUseGPT4Info": { + "title": "No se admite GPT-4 ahora", + "description": "Para usar GPT-4, configure la clave API." + }, + "feature": { + "groupChat": { + "title": "Mejorar chat", + "description": "Agregar configuraciones previas a la conversación en aplicaciones puede mejorar la experiencia del usuario." + }, + "groupExperience": { + "title": "Mejorar experiencia" + }, + "conversationOpener": { + "title": "Iniciadores de conversación", + "description": "En una aplicación de chat, la primera oración que la IA dice al usuario suele usarse como bienvenida." + }, + "suggestedQuestionsAfterAnswer": { + "title": "Seguimiento", + "description": "Configurar sugerencias de próximas preguntas puede proporcionar una mejor conversación.", + "resDes": "3 sugerencias para la próxima pregunta del usuario.", + "tryToAsk": "Intenta preguntar" + }, + "moreLikeThis": { + "title": "Más como esto", + "description": "Genera múltiples textos a la vez, luego edítalos y continúa generando", + "generateNumTip": "Número de veces generado cada vez", + "tip": "Usar esta función incurrirá en un costo adicional de tokens" + }, + "speechToText": { + "title": "Voz a Texto", + "description": "Una vez habilitado, puedes usar la entrada de voz.", + "resDes": "Entrada de voz habilitada" + }, + "textToSpeech": { + "title": "Texto a Voz", + "description": "Una vez habilitado, el texto puede convertirse en voz.", + "resDes": "Texto a Audio habilitado" + }, + "citation": { + "title": "Citas y Atribuciones", + "description": "Una vez habilitado, muestra el documento fuente y la sección atribuida del contenido generado.", + "resDes": "Citas y Atribuciones habilitadas" + }, + "annotation": { + "title": "Respuesta de Anotación", + "description": "Puedes agregar manualmente una respuesta de alta calidad a la caché para una coincidencia prioritaria con preguntas similares de los usuarios.", + "resDes": "Respuesta de Anotación habilitada", + "scoreThreshold": { + "title": "Umbral de Puntuación", + "description": "Usado para establecer el umbral de similitud para la respuesta de anotación.", + "easyMatch": "Coincidencia Fácil", + "accurateMatch": "Coincidencia Precisa" + }, + "matchVariable": { + "title": "Variable de Coincidencia", + "choosePlaceholder": "Elige la variable de coincidencia" + }, + "cacheManagement": "Anotaciones", + "cached": "Anotado", + "remove": "Eliminar", + "removeConfirm": "¿Eliminar esta anotación?", + "add": "Agregar anotación", + "edit": "Editar anotación" + }, + "dataSet": { + "title": "Contexto", + "noData": "Puedes importar Conocimiento como contexto", + "selectTitle": "Seleccionar Conocimiento de referencia", + "selected": "Conocimiento seleccionado", + "noDataSet": "No se encontró Conocimiento", + "toCreate": "Ir a crear", + "notSupportSelectMulti": "Actualmente solo se admite un Conocimiento", + "queryVariable": { + "title": "Variable de Consulta", + "tip": "Esta variable se utilizará como entrada de consulta para la recuperación de contexto, obteniendo información de contexto relacionada con la entrada de esta variable.", + "choosePlaceholder": "Elige la variable de consulta", + "noVar": "No hay variables", + "noVarTip": "por favor, crea una variable en la sección Variables", + "unableToQueryDataSet": "No se puede consultar el Conocimiento", + "unableToQueryDataSetTip": "No se puede consultar el Conocimiento con éxito, por favor elige una variable de consulta de contexto en la sección de contexto.", + "ok": "OK", + "contextVarNotEmpty": "La variable de consulta de contexto no puede estar vacía", + "deleteContextVarTitle": "¿Eliminar variable \"{{varName}}\"?", + "deleteContextVarTip": "Esta variable ha sido establecida como una variable de consulta de contexto, y eliminarla afectará el uso normal del Conocimiento. Si aún necesitas eliminarla, por favor vuelve a seleccionarla en la sección de contexto." + } + }, + "tools": { + "title": "Herramientas", + "tips": "Las herramientas proporcionan un método estándar de llamada API, tomando la entrada del usuario o variables como parámetros de solicitud para consultar datos externos como contexto.", + "toolsInUse": "{{count}} herramientas en uso", + "modal": { + "title": "Herramienta", + "toolType": { + "title": "Tipo de Herramienta", + "placeholder": "Por favor selecciona el tipo de herramienta" + }, + "name": { + "title": "Nombre", + "placeholder": "Por favor ingresa el nombre" + }, + "variableName": { + "title": "Nombre de la Variable", + "placeholder": "Por favor ingresa el nombre de la variable" + } + } + }, + "conversationHistory": { + "title": "Historial de Conversaciones", + "description": "Establecer nombres de prefijo para los roles de conversación", + "tip": "El Historial de Conversaciones no está habilitado, por favor agrega en la indicación arriba.", + "learnMore": "Aprender más", + "editModal": { + "title": "Editar Nombres de Roles de Conversación", + "userPrefix": "Prefijo de Usuario", + "assistantPrefix": "Prefijo de Asistente" + } + }, + "toolbox": { + "title": "CAJA DE HERRAMIENTAS" + }, + "moderation": { + "title": "Moderación de contenido", + "description": "Asegura la salida del modelo utilizando API de moderación o manteniendo una lista de palabras sensibles.", + "allEnabled": "Contenido de ENTRADA/SALIDA Habilitado", + "inputEnabled": "Contenido de ENTRADA Habilitado", + "outputEnabled": "Contenido de SALIDA Habilitado", + "modal": { + "title": "Configuración de moderación de contenido", + "provider": { + "title": "Proveedor", + "openai": "Moderación de OpenAI", + "openaiTip": { + "prefix": "La Moderación de OpenAI requiere una clave API de OpenAI configurada en la ", + "suffix": "." + }, + "keywords": "Palabras clave" + }, + "keywords": { + "tip": "Una por línea, separadas por saltos de línea. Hasta 100 caracteres por línea.", + "placeholder": "Una por línea, separadas por saltos de línea", + "line": "Línea" + }, + "content": { + "input": "Moderar Contenido de ENTRADA", + "output": "Moderar Contenido de SALIDA", + "preset": "Respuestas predefinidas", + "placeholder": "Contenido de respuestas predefinidas aquí", + "condition": "Moderar Contenido de ENTRADA y SALIDA habilitado al menos uno", + "fromApi": "Las respuestas predefinidas son devueltas por la API", + "errorMessage": "Las respuestas predefinidas no pueden estar vacías", + "supportMarkdown": "Markdown soportado" + }, + "openaiNotConfig": { + "before": "La Moderación de OpenAI requiere una clave API de OpenAI configurada en la", + "after": "" + } + }, + "contentEnableLabel": "Moderación de contenido habilitada" + }, + "fileUpload": { + "title": "Subida de archivos", + "description": "La caja de entrada del chat permite subir imágenes, documentos y otros archivos.", + "supportedTypes": "Tipos de archivo soportados", + "numberLimit": "Máximo de subidas", + "modalTitle": "Configuración de subida de archivos" + }, + "imageUpload": { + "title": "Subida de imágenes", + "description": "Permite subir imágenes.", + "supportedTypes": "Tipos de archivo soportados", + "numberLimit": "Máximo de subidas", + "modalTitle": "Configuración de subida de imágenes" + }, + "bar": { + "empty": "Habilitar funciones para mejorar la experiencia del usuario de la aplicación web", + "enableText": "Funciones habilitadas", + "manage": "Gestionar" + }, + "documentUpload": { + "title": "Documento", + "description": "Habilitar Documento permitirá al modelo aceptar documentos y responder preguntas sobre ellos." + }, + "audioUpload": { + "title": "Audio", + "description": "Habilitar Audio permitirá al modelo procesar archivos de audio para transcripción y análisis." + } + }, + "automatic": {}, + "resetConfig": { + "title": "¿Confirmar restablecimiento?", + "message": "Restablecer descarta cambios, restaurando la última configuración publicada." + }, + "errorMessage": { + "nameOfKeyRequired": "nombre de la clave: {{key}} requerido", + "valueOfVarRequired": "el valor de {{key}} no puede estar vacío", + "queryRequired": "Se requiere texto de solicitud.", + "waitForResponse": "Por favor espera la respuesta al mensaje anterior para completar.", + "waitForBatchResponse": "Por favor espera la respuesta a la tarea por lotes para completar.", + "notSelectModel": "Por favor elige un modelo", + "waitForImgUpload": "Por favor espera a que la imagen se cargue", + "waitForFileUpload": "Espere a que se cargue el archivo o los archivos" + }, + "chatSubTitle": "Instrucciones", + "completionSubTitle": "Prefijo de la Indicación", + "promptTip": "Las indicaciones guían las respuestas de la IA con instrucciones y restricciones. Inserta variables como {{input}}. Esta indicación no será visible para los usuarios.", + "formattingChangedTitle": "Formato cambiado", + "formattingChangedText": "Modificar el formato restablecerá el área de depuración, ¿estás seguro?", + "variableTitle": "Variables", + "variableTip": "Los usuarios completan las variables en un formulario, reemplazando automáticamente las variables en la indicación.", + "notSetVar": "Las variables permiten a los usuarios introducir palabras de indicación u observaciones de apertura al completar formularios. Puedes intentar ingresar \"{{input}}\" en las palabras de indicación.", + "autoAddVar": "Variables no definidas referenciadas en la pre-indicación, ¿quieres agregarlas en el formulario de entrada del usuario?", + "variableTable": { + "key": "Clave de Variable", + "name": "Nombre del Campo de Entrada del Usuario", + "type": "Tipo de Entrada", + "action": "Acciones", + "typeString": "Cadena", + "typeSelect": "Seleccionar" + }, + "varKeyError": { + "canNoBeEmpty": "Se requiere {{key}}", + "tooLong": "{{key}} demasiado larga. No puede tener más de 30 caracteres", + "notValid": "{{key}} no es válida. Solo puede contener letras, números y guiones bajos", + "notStartWithNumber": "{{key}} no puede comenzar con un número", + "keyAlreadyExists": "{{key}} ya existe" + }, + "otherError": { + "promptNoBeEmpty": "La indicación no puede estar vacía", + "historyNoBeEmpty": "El historial de conversaciones debe establecerse en la indicación", + "queryNoBeEmpty": "La consulta debe establecerse en la indicación" + }, + "variableConfig": { + "addModalTitle": "Agregar Campo de Entrada", + "editModalTitle": "Editar Campo de Entrada", + "description": "Configuración para la variable {{varName}}", + "fieldType": "Tipo de campo", + "string": "Texto corto", + "text-input": "Texto corto", + "paragraph": "Párrafo", + "select": "Seleccionar", + "number": "Número", + "notSet": "No configurado, intenta escribir {{input}} en la indicación de prefijo", + "stringTitle": "Opciones de cuadro de texto de formulario", + "maxLength": "Longitud máxima", + "options": "Opciones", + "addOption": "Agregar opción", + "apiBasedVar": "Variable basada en API", + "varName": "Nombre de la Variable", + "labelName": "Nombre de la Etiqueta", + "inputPlaceholder": "Por favor ingresa", + "content": "Contenido", + "required": "Requerido", + "hide": "Ocultar", + "errorMsg": { + "labelNameRequired": "Nombre de la etiqueta es requerido", + "varNameCanBeRepeat": "El nombre de la variable no puede repetirse", + "atLeastOneOption": "Se requiere al menos una opción", + "optionRepeat": "Hay opciones repetidas" + }, + "defaultValue": "Valor predeterminado", + "noDefaultValue": "Sin valor predeterminado", + "selectDefaultValue": "Seleccionar valor predeterminado", + "file": { + "image": { + "name": "Imagen" + }, + "audio": { + "name": "Audio" + }, + "document": { + "name": "Documento" + }, + "video": { + "name": "Vídeo" + }, + "custom": { + "name": "Otros tipos de archivos", + "description": "Especifique otros tipos de archivo.", + "createPlaceholder": " Extensión de archivo, por ejemplo, .doc" + }, + "supportFileTypes": "Tipos de archivos de soporte" + }, + "uploadFileTypes": "Cargar tipos de archivos", + "localUpload": "Carga local", + "both": "ambos", + "single-file": "En fila india", + "maxNumberOfUploads": "Número máximo de cargas", + "maxNumberTip": "Documento < {{docLimit}}, imagen < {{imgLimit}}, audio < {{audioLimit}}, vídeo < {{videoLimit}}", + "multi-files": "Lista de archivos", + "jsonSchema": "Esquema JSON", + "json": "Código JSON", + "checkbox": "Checkbox", + "optional": "opcional", + "placeholder": "Marcador", + "uploadMethod": "Método de carga", + "displayName": "Nombre para mostrar", + "startSelectedOption": "Iniciar opción seleccionada", + "noDefaultSelected": "No seleccionar", + "startChecked": "Empezar marcado", + "placeholderPlaceholder": "Introduzca el texto que se mostrará cuando el campo esté vacío", + "defaultValuePlaceholder": "Introduzca el valor predeterminado para rellenar previamente el campo", + "tooltips": "Información sobre herramientas", + "tooltipsPlaceholder": "Ingrese el texto útil que se muestra al pasar el cursor sobre la etiqueta", + "unitPlaceholder": "Mostrar unidades después de números, por ejemplo, fichas", + "showAllSettings": "Mostrar todas las configuraciones", + "unit": "Unidad" + }, + "vision": { + "name": "Visión", + "description": "Habilitar Visión permitirá al modelo recibir imágenes y responder preguntas sobre ellas.", + "settings": "Configuraciones", + "visionSettings": { + "title": "Configuraciones de Visión", + "resolution": "Resolución", + "resolutionTooltip": "Baja resolución permitirá que el modelo reciba una versión de baja resolución de 512 x 512 de la imagen, y represente la imagen con un presupuesto de 65 tokens. Esto permite que la API devuelva respuestas más rápidas y consuma menos tokens de entrada para casos de uso que no requieren alta detalle.\nAlta resolución permitirá primero que el modelo vea la imagen de baja resolución y luego crea recortes detallados de las imágenes de entrada como cuadrados de 512px basados en el tamaño de la imagen de entrada. Cada uno de los recortes detallados usa el doble del presupuesto de tokens para un total de 129 tokens.", + "high": "Alta", + "low": "Baja", + "uploadMethod": "Método de carga", + "both": "Ambos", + "localUpload": "Carga Local", + "url": "URL", + "uploadLimit": "Límite de carga" + }, + "onlySupportVisionModelTip": "Solo admite modelos de visión" + }, + "voice": { + "name": "Voz", + "defaultDisplay": "Voz Predeterminada", + "description": "Configuraciones de voz a texto", + "settings": "Configuraciones", + "voiceSettings": { + "title": "Configuraciones de Voz", + "language": "Idioma", + "resolutionTooltip": "Soporte de idioma para voz a texto.", + "voice": "Voz", + "autoPlay": "Auto-reproducción", + "autoPlayEnabled": "Abierto", + "autoPlayDisabled": "Cierre" + } + }, + "openingStatement": { + "title": "Apertura de Conversación", + "add": "Agregar", + "writeOpener": "Escribir apertura", + "placeholder": "Escribe tu mensaje de apertura aquí, puedes usar variables, intenta escribir {{variable}}.", + "openingQuestion": "Preguntas de Apertura", + "openingQuestionPlaceholder": "Puede usar variables, intente escribir {{variable}}.", + "noDataPlaceHolder": "Iniciar la conversación con el usuario puede ayudar a la IA a establecer una conexión más cercana con ellos en aplicaciones de conversación.", + "varTip": "Puedes usar variables, intenta escribir {{variable}}", + "tooShort": "Se requieren al menos 20 palabras en la indicación inicial para generar una apertura de conversación.", + "notIncludeKey": "La indicación inicial no incluye la variable: {{key}}. Por favor agrégala a la indicación inicial." + }, + "modelConfig": { + "model": "Modelo", + "setTone": "Establecer tono de respuestas", + "title": "Modelo y Parámetros", + "modeType": { + "chat": "Chat", + "completion": "Completar" + } + }, + "inputs": { + "title": "Depurar y Previsualizar", + "noPrompt": "Intenta escribir alguna indicación en la entrada de pre-indicación", + "userInputField": "Campo de Entrada del Usuario", + "noVar": "Completa el valor de la variable, que se reemplazará automáticamente en la palabra de indicación cada vez que se inicie una nueva sesión.", + "chatVarTip": "Completa el valor de la variable, que se reemplazará automáticamente en la palabra de indicación cada vez que se inicie una nueva sesión", + "completionVarTip": "Completa el valor de la variable, que se reemplazará automáticamente en las palabras de indicación cada vez que se envíe una pregunta.", + "previewTitle": "Vista previa de la indicación", + "queryTitle": "Contenido de la consulta", + "queryPlaceholder": "Por favor ingresa el texto de la solicitud.", + "run": "EJECUTAR" + }, + "result": "Texto de salida", + "datasetConfig": { + "settingTitle": "Configuraciones de Recuperación", + "knowledgeTip": "Haz clic en el botón “+” para agregar conocimiento", + "retrieveOneWay": { + "title": "Recuperación N-a-1", + "description": "Basado en la intención del usuario y las descripciones de Conocimiento, el Agente selecciona autónomamente el mejor Conocimiento para consultar. Ideal para aplicaciones con Conocimiento limitado y distintivo." + }, + "retrieveMultiWay": { + "title": "Recuperación Multi-camino", + "description": "Basado en la intención del usuario, consulta a través de todo el Conocimiento, recupera texto relevante de múltiples fuentes y selecciona los mejores resultados que coinciden con la consulta del usuario después de reordenar. Se requiere configuración de la API del modelo de Reordenar." + }, + "rerankModelRequired": "Se requiere modelo de Reordenar", + "params": "Parámetros", + "top_k": "Top K", + "top_kTip": "Usado para filtrar fragmentos que son más similares a las preguntas del usuario. El sistema también ajustará dinámicamente el valor de Top K, de acuerdo con los max_tokens del modelo seleccionado.", + "score_threshold": "Umbral de Puntuación", + "score_thresholdTip": "Usado para establecer el umbral de similitud para la filtración de fragmentos.", + "retrieveChangeTip": "Modificar el modo de índice y el modo de recuperación puede afectar las aplicaciones asociadas con este Conocimiento.", + "embeddingModelRequired": "Se requiere un modelo de incrustación configurado" + }, + "debugAsSingleModel": "Depurar como Modelo Único", + "debugAsMultipleModel": "Depurar como Múltiples Modelos", + "duplicateModel": "Duplicar", + "publishAs": "Publicar como", + "assistantType": { + "name": "Tipo de Asistente", + "chatAssistant": { + "name": "Asistente Básico", + "description": "Construye un asistente basado en chat usando un Modelo de Lenguaje Grande" + }, + "agentAssistant": { + "name": "Asistente Agente", + "description": "Construye un Agente inteligente que puede elegir herramientas autónomamente para completar tareas" + } + }, + "agent": { + "agentMode": "Modo Agente", + "agentModeDes": "Establecer el tipo de modo de inferencia para el agente", + "agentModeType": { + "ReACT": "ReAct", + "functionCall": "Llamada de Función" + }, + "setting": { + "name": "Configuraciones del Agente", + "description": "Las configuraciones del Asistente Agente permiten establecer el modo del agente y funciones avanzadas como indicaciones integradas, disponibles solo en el tipo Agente.", + "maximumIterations": { + "name": "Iteraciones Máximas", + "description": "Limitar el número de iteraciones que un asistente agente puede ejecutar" + } + }, + "buildInPrompt": "Indicación Integrada", + "firstPrompt": "Primera Indicación", + "nextIteration": "Próxima Iteración", + "promptPlaceholder": "Escribe tu indicación aquí", + "tools": { + "name": "Herramientas", + "description": "El uso de herramientas puede extender las capacidades del LLM, como buscar en internet o realizar cálculos científicos", + "enabled": "Habilitado" + } + }, + "codegen": { + "apply": "Aplicar", + "overwriteConfirmMessage": "Esta acción sobrescribirá el código existente. ¿Quieres continuar?", + "instruction": "Instrucciones", + "loading": "Generando código...", + "title": "Generador de código", + "resTitle": "Código generado", + "description": "El Generador de código utiliza modelos configurados para generar código de alta calidad basado en sus instrucciones. Proporcione instrucciones claras y detalladas.", + "noDataLine1": "Describa su caso de uso a la izquierda,", + "generate": "Generar", + "generatedCodeTitle": "Código generado", + "noDataLine2": "La vista previa del código se mostrará aquí.", + "overwriteConfirmTitle": "¿Sobrescribir el código existente?", + "instructionPlaceholder": "Introduzca una descripción detallada del código que desea generar.", + "applyChanges": "Aplicar cambios" + }, + "generate": { + "template": { + "pythonDebugger": { + "name": "Depurador de Python", + "instruction": "Un bot que puede generar y depurar el código en función de las instrucciones" + }, + "translation": { + "instruction": "Un traductor que puede traducir varios idiomas", + "name": "Traducción" + }, + "professionalAnalyst": { + "instruction": "Extraiga información, identifique riesgos y extraiga información clave de informes largos en un solo memorándum", + "name": "Analista profesional" + }, + "excelFormulaExpert": { + "name": "Experto en fórmulas de Excel", + "instruction": "Un chatbot que puede ayudar a los usuarios novatos a comprender, usar y crear fórmulas de Excel basadas en las instrucciones del usuario" + }, + "travelPlanning": { + "instruction": "El Asistente de planificación de viajes es una herramienta inteligente diseñada para ayudar a los usuarios a planificar sus viajes sin esfuerzo", + "name": "Planificación de viajes" + }, + "SQLSorcerer": { + "instruction": "Transforme el lenguaje cotidiano en consultas SQL", + "name": "Hechicero SQL" + }, + "GitGud": { + "name": "Git gud", + "instruction": "Generar comandos de Git adecuados basados en acciones de control de versiones descritas por el usuario" + }, + "meetingTakeaways": { + "name": "Conclusiones de la reunión", + "instruction": "Destilar las reuniones en resúmenes concisos que incluyan temas de discusión, conclusiones clave y elementos de acción" + }, + "writingsPolisher": { + "name": "Pulidora de escritura", + "instruction": "Utiliza técnicas avanzadas de corrección de textos para mejorar tus escritos" + } + }, + "apply": "Aplicar", + "instruction": "Instrucciones", + "description": "El generador de mensajes utiliza el modelo configurado para optimizar los mensajes para una mayor calidad y una mejor estructura. Escriba instrucciones claras y detalladas.", + "generate": "Generar", + "title": "Generador de avisos", + "tryIt": "Pruébalo", + "overwriteMessage": "La aplicación de este mensaje anulará la configuración existente.", + "resTitle": "Mensaje generado", + "overwriteTitle": "¿Anular la configuración existente?", + "loading": "Orquestando la aplicación para usted...", + "to": "a", + "dismiss": "Descartar", + "press": "Prensa", + "versions": "Versiones", + "idealOutputPlaceholder": "Describe tu formato de respuesta ideal, longitud, tono y requisitos de contenido...", + "instructionPlaceHolderTitle": "Describe cómo te gustaría mejorar este aviso. Por ejemplo:", + "optimizationNote": "Nota de Optimización", + "optional": "Opcional", + "instructionPlaceHolderLine1": "Haz el resultado más conciso, reteniendo los puntos clave.", + "optimizePromptTooltip": "Optimizar en el generador de mensajes", + "instructionPlaceHolderLine3": "El tono es demasiado brusco, por favor hazlo más amigable.", + "instructionPlaceHolderLine2": "El formato de salida es incorrecto, por favor siga estrictamente el formato JSON.", + "version": "Versión", + "idealOutput": "Salida Ideal", + "insertContext": "insertar contexto", + "latest": "último", + "codeGenInstructionPlaceHolderLine": "Cuanto más detallada sea la retroalimentación, como los tipos de datos de entrada y salida, así como la forma en que se procesan las variables, más precisa será la generación de código.", + "newNoDataLine1": "Escribe una instrucción en la columna de la izquierda y haz clic en Generar para ver la respuesta." + }, + "warningMessage": { + "timeoutExceeded": "Los resultados no se muestran debido al tiempo de espera. Consulte los registros para obtener resultados completos." + }, + "noResult": "La salida se mostrará aquí." +} diff --git a/web/i18n/es-ES/app-debug.ts b/web/i18n/es-ES/app-debug.ts deleted file mode 100644 index 4252037e1f..0000000000 --- a/web/i18n/es-ES/app-debug.ts +++ /dev/null @@ -1,566 +0,0 @@ -const translation = { - pageTitle: { - line1: 'INDICACIÓN', - line2: 'Ingeniería', - }, - orchestrate: 'Orquestar', - promptMode: { - simple: 'Cambia a Modo Experto para editar toda la INDICACIÓN', - advanced: 'Modo Experto', - switchBack: 'Volver', - advancedWarning: { - title: 'Has cambiado a Modo Experto, y una vez que modifiques la INDICACIÓN, NO PODRÁS regresar al modo básico.', - description: 'En Modo Experto, puedes editar toda la INDICACIÓN.', - learnMore: 'Aprender más', - ok: 'OK', - }, - operation: { - addMessage: 'Agregar Mensaje', - }, - contextMissing: 'Componente de contexto faltante, la efectividad de la indicación puede no ser buena.', - }, - operation: { - applyConfig: 'Publicar', - resetConfig: 'Restablecer', - debugConfig: 'Depurar', - addFeature: 'Agregar Función', - automatic: 'Automático', - stopResponding: 'Dejar de responder', - agree: 'Me gusta', - disagree: 'No me gusta', - cancelAgree: 'Cancelar Me gusta', - cancelDisagree: 'Cancelar No me gusta', - userAction: 'Usuario ', - }, - notSetAPIKey: { - title: 'La clave del proveedor LLM no se ha establecido', - trailFinished: 'Prueba terminada', - description: 'La clave del proveedor LLM no se ha establecido, y debe configurarse antes de depurar.', - settingBtn: 'Ir a configuración', - }, - trailUseGPT4Info: { - title: 'No se admite GPT-4 ahora', - description: 'Para usar GPT-4, configure la clave API.', - }, - feature: { - groupChat: { - title: 'Mejorar chat', - description: 'Agregar configuraciones previas a la conversación en aplicaciones puede mejorar la experiencia del usuario.', - }, - groupExperience: { - title: 'Mejorar experiencia', - }, - conversationOpener: { - title: 'Iniciadores de conversación', - description: 'En una aplicación de chat, la primera oración que la IA dice al usuario suele usarse como bienvenida.', - }, - suggestedQuestionsAfterAnswer: { - title: 'Seguimiento', - description: 'Configurar sugerencias de próximas preguntas puede proporcionar una mejor conversación.', - resDes: '3 sugerencias para la próxima pregunta del usuario.', - tryToAsk: 'Intenta preguntar', - }, - moreLikeThis: { - title: 'Más como esto', - description: 'Genera múltiples textos a la vez, luego edítalos y continúa generando', - generateNumTip: 'Número de veces generado cada vez', - tip: 'Usar esta función incurrirá en un costo adicional de tokens', - }, - speechToText: { - title: 'Voz a Texto', - description: 'Una vez habilitado, puedes usar la entrada de voz.', - resDes: 'Entrada de voz habilitada', - }, - textToSpeech: { - title: 'Texto a Voz', - description: 'Una vez habilitado, el texto puede convertirse en voz.', - resDes: 'Texto a Audio habilitado', - }, - citation: { - title: 'Citas y Atribuciones', - description: 'Una vez habilitado, muestra el documento fuente y la sección atribuida del contenido generado.', - resDes: 'Citas y Atribuciones habilitadas', - }, - annotation: { - title: 'Respuesta de Anotación', - description: 'Puedes agregar manualmente una respuesta de alta calidad a la caché para una coincidencia prioritaria con preguntas similares de los usuarios.', - resDes: 'Respuesta de Anotación habilitada', - scoreThreshold: { - title: 'Umbral de Puntuación', - description: 'Usado para establecer el umbral de similitud para la respuesta de anotación.', - easyMatch: 'Coincidencia Fácil', - accurateMatch: 'Coincidencia Precisa', - }, - matchVariable: { - title: 'Variable de Coincidencia', - choosePlaceholder: 'Elige la variable de coincidencia', - }, - cacheManagement: 'Anotaciones', - cached: 'Anotado', - remove: 'Eliminar', - removeConfirm: '¿Eliminar esta anotación?', - add: 'Agregar anotación', - edit: 'Editar anotación', - }, - dataSet: { - title: 'Contexto', - noData: 'Puedes importar Conocimiento como contexto', - selectTitle: 'Seleccionar Conocimiento de referencia', - selected: 'Conocimiento seleccionado', - noDataSet: 'No se encontró Conocimiento', - toCreate: 'Ir a crear', - notSupportSelectMulti: 'Actualmente solo se admite un Conocimiento', - queryVariable: { - title: 'Variable de Consulta', - tip: 'Esta variable se utilizará como entrada de consulta para la recuperación de contexto, obteniendo información de contexto relacionada con la entrada de esta variable.', - choosePlaceholder: 'Elige la variable de consulta', - noVar: 'No hay variables', - noVarTip: 'por favor, crea una variable en la sección Variables', - unableToQueryDataSet: 'No se puede consultar el Conocimiento', - unableToQueryDataSetTip: 'No se puede consultar el Conocimiento con éxito, por favor elige una variable de consulta de contexto en la sección de contexto.', - ok: 'OK', - contextVarNotEmpty: 'La variable de consulta de contexto no puede estar vacía', - deleteContextVarTitle: '¿Eliminar variable "{{varName}}"?', - deleteContextVarTip: 'Esta variable ha sido establecida como una variable de consulta de contexto, y eliminarla afectará el uso normal del Conocimiento. Si aún necesitas eliminarla, por favor vuelve a seleccionarla en la sección de contexto.', - }, - }, - tools: { - title: 'Herramientas', - tips: 'Las herramientas proporcionan un método estándar de llamada API, tomando la entrada del usuario o variables como parámetros de solicitud para consultar datos externos como contexto.', - toolsInUse: '{{count}} herramientas en uso', - modal: { - title: 'Herramienta', - toolType: { - title: 'Tipo de Herramienta', - placeholder: 'Por favor selecciona el tipo de herramienta', - }, - name: { - title: 'Nombre', - placeholder: 'Por favor ingresa el nombre', - }, - variableName: { - title: 'Nombre de la Variable', - placeholder: 'Por favor ingresa el nombre de la variable', - }, - }, - }, - conversationHistory: { - title: 'Historial de Conversaciones', - description: 'Establecer nombres de prefijo para los roles de conversación', - tip: 'El Historial de Conversaciones no está habilitado, por favor agrega en la indicación arriba.', - learnMore: 'Aprender más', - editModal: { - title: 'Editar Nombres de Roles de Conversación', - userPrefix: 'Prefijo de Usuario', - assistantPrefix: 'Prefijo de Asistente', - }, - }, - toolbox: { - title: 'CAJA DE HERRAMIENTAS', - }, - moderation: { - title: 'Moderación de contenido', - description: 'Asegura la salida del modelo utilizando API de moderación o manteniendo una lista de palabras sensibles.', - allEnabled: 'Contenido de ENTRADA/SALIDA Habilitado', - inputEnabled: 'Contenido de ENTRADA Habilitado', - outputEnabled: 'Contenido de SALIDA Habilitado', - modal: { - title: 'Configuración de moderación de contenido', - provider: { - title: 'Proveedor', - openai: 'Moderación de OpenAI', - openaiTip: { - prefix: 'La Moderación de OpenAI requiere una clave API de OpenAI configurada en la ', - suffix: '.', - }, - keywords: 'Palabras clave', - }, - keywords: { - tip: 'Una por línea, separadas por saltos de línea. Hasta 100 caracteres por línea.', - placeholder: 'Una por línea, separadas por saltos de línea', - line: 'Línea', - }, - content: { - input: 'Moderar Contenido de ENTRADA', - output: 'Moderar Contenido de SALIDA', - preset: 'Respuestas predefinidas', - placeholder: 'Contenido de respuestas predefinidas aquí', - condition: 'Moderar Contenido de ENTRADA y SALIDA habilitado al menos uno', - fromApi: 'Las respuestas predefinidas son devueltas por la API', - errorMessage: 'Las respuestas predefinidas no pueden estar vacías', - supportMarkdown: 'Markdown soportado', - }, - openaiNotConfig: { - before: 'La Moderación de OpenAI requiere una clave API de OpenAI configurada en la', - after: '', - }, - }, - contentEnableLabel: 'Moderación de contenido habilitada', - }, - fileUpload: { - title: 'Subida de archivos', - description: 'La caja de entrada del chat permite subir imágenes, documentos y otros archivos.', - supportedTypes: 'Tipos de archivo soportados', - numberLimit: 'Máximo de subidas', - modalTitle: 'Configuración de subida de archivos', - }, - imageUpload: { - title: 'Subida de imágenes', - description: 'Permite subir imágenes.', - supportedTypes: 'Tipos de archivo soportados', - numberLimit: 'Máximo de subidas', - modalTitle: 'Configuración de subida de imágenes', - }, - bar: { - empty: 'Habilitar funciones para mejorar la experiencia del usuario de la aplicación web', - enableText: 'Funciones habilitadas', - manage: 'Gestionar', - }, - documentUpload: { - title: 'Documento', - description: 'Habilitar Documento permitirá al modelo aceptar documentos y responder preguntas sobre ellos.', - }, - audioUpload: { - title: 'Audio', - description: 'Habilitar Audio permitirá al modelo procesar archivos de audio para transcripción y análisis.', - }, - }, - automatic: { - }, - resetConfig: { - title: '¿Confirmar restablecimiento?', - message: 'Restablecer descarta cambios, restaurando la última configuración publicada.', - }, - errorMessage: { - nameOfKeyRequired: 'nombre de la clave: {{key}} requerido', - valueOfVarRequired: 'el valor de {{key}} no puede estar vacío', - queryRequired: 'Se requiere texto de solicitud.', - waitForResponse: 'Por favor espera la respuesta al mensaje anterior para completar.', - waitForBatchResponse: 'Por favor espera la respuesta a la tarea por lotes para completar.', - notSelectModel: 'Por favor elige un modelo', - waitForImgUpload: 'Por favor espera a que la imagen se cargue', - waitForFileUpload: 'Espere a que se cargue el archivo o los archivos', - }, - chatSubTitle: 'Instrucciones', - completionSubTitle: 'Prefijo de la Indicación', - promptTip: 'Las indicaciones guían las respuestas de la IA con instrucciones y restricciones. Inserta variables como {{input}}. Esta indicación no será visible para los usuarios.', - formattingChangedTitle: 'Formato cambiado', - formattingChangedText: 'Modificar el formato restablecerá el área de depuración, ¿estás seguro?', - variableTitle: 'Variables', - variableTip: 'Los usuarios completan las variables en un formulario, reemplazando automáticamente las variables en la indicación.', - notSetVar: 'Las variables permiten a los usuarios introducir palabras de indicación u observaciones de apertura al completar formularios. Puedes intentar ingresar "{{input}}" en las palabras de indicación.', - autoAddVar: 'Variables no definidas referenciadas en la pre-indicación, ¿quieres agregarlas en el formulario de entrada del usuario?', - variableTable: { - key: 'Clave de Variable', - name: 'Nombre del Campo de Entrada del Usuario', - type: 'Tipo de Entrada', - action: 'Acciones', - typeString: 'Cadena', - typeSelect: 'Seleccionar', - }, - varKeyError: { - canNoBeEmpty: 'Se requiere {{key}}', - tooLong: '{{key}} demasiado larga. No puede tener más de 30 caracteres', - notValid: '{{key}} no es válida. Solo puede contener letras, números y guiones bajos', - notStartWithNumber: '{{key}} no puede comenzar con un número', - keyAlreadyExists: '{{key}} ya existe', - }, - otherError: { - promptNoBeEmpty: 'La indicación no puede estar vacía', - historyNoBeEmpty: 'El historial de conversaciones debe establecerse en la indicación', - queryNoBeEmpty: 'La consulta debe establecerse en la indicación', - }, - variableConfig: { - 'addModalTitle': 'Agregar Campo de Entrada', - 'editModalTitle': 'Editar Campo de Entrada', - 'description': 'Configuración para la variable {{varName}}', - 'fieldType': 'Tipo de campo', - 'string': 'Texto corto', - 'text-input': 'Texto corto', - 'paragraph': 'Párrafo', - 'select': 'Seleccionar', - 'number': 'Número', - 'notSet': 'No configurado, intenta escribir {{input}} en la indicación de prefijo', - 'stringTitle': 'Opciones de cuadro de texto de formulario', - 'maxLength': 'Longitud máxima', - 'options': 'Opciones', - 'addOption': 'Agregar opción', - 'apiBasedVar': 'Variable basada en API', - 'varName': 'Nombre de la Variable', - 'labelName': 'Nombre de la Etiqueta', - 'inputPlaceholder': 'Por favor ingresa', - 'content': 'Contenido', - 'required': 'Requerido', - 'hide': 'Ocultar', - 'errorMsg': { - labelNameRequired: 'Nombre de la etiqueta es requerido', - varNameCanBeRepeat: 'El nombre de la variable no puede repetirse', - atLeastOneOption: 'Se requiere al menos una opción', - optionRepeat: 'Hay opciones repetidas', - }, - 'defaultValue': 'Valor predeterminado', - 'noDefaultValue': 'Sin valor predeterminado', - 'selectDefaultValue': 'Seleccionar valor predeterminado', - 'file': { - image: { - name: 'Imagen', - }, - audio: { - name: 'Audio', - }, - document: { - name: 'Documento', - }, - video: { - name: 'Vídeo', - }, - custom: { - name: 'Otros tipos de archivos', - description: 'Especifique otros tipos de archivo.', - createPlaceholder: ' Extensión de archivo, por ejemplo, .doc', - }, - supportFileTypes: 'Tipos de archivos de soporte', - }, - 'uploadFileTypes': 'Cargar tipos de archivos', - 'localUpload': 'Carga local', - 'both': 'ambos', - 'single-file': 'En fila india', - 'maxNumberOfUploads': 'Número máximo de cargas', - 'maxNumberTip': 'Documento < {{docLimit}}, imagen < {{imgLimit}}, audio < {{audioLimit}}, vídeo < {{videoLimit}}', - 'multi-files': 'Lista de archivos', - 'jsonSchema': 'Esquema JSON', - 'json': 'Código JSON', - 'checkbox': 'Checkbox', - 'optional': 'opcional', - 'placeholder': 'Marcador', - 'uploadMethod': 'Método de carga', - 'displayName': 'Nombre para mostrar', - 'startSelectedOption': 'Iniciar opción seleccionada', - 'noDefaultSelected': 'No seleccionar', - 'startChecked': 'Empezar marcado', - 'placeholderPlaceholder': 'Introduzca el texto que se mostrará cuando el campo esté vacío', - 'defaultValuePlaceholder': 'Introduzca el valor predeterminado para rellenar previamente el campo', - 'tooltips': 'Información sobre herramientas', - 'tooltipsPlaceholder': 'Ingrese el texto útil que se muestra al pasar el cursor sobre la etiqueta', - 'unitPlaceholder': 'Mostrar unidades después de números, por ejemplo, fichas', - 'showAllSettings': 'Mostrar todas las configuraciones', - 'unit': 'Unidad', - }, - vision: { - name: 'Visión', - description: 'Habilitar Visión permitirá al modelo recibir imágenes y responder preguntas sobre ellas.', - settings: 'Configuraciones', - visionSettings: { - title: 'Configuraciones de Visión', - resolution: 'Resolución', - resolutionTooltip: 'Baja resolución permitirá que el modelo reciba una versión de baja resolución de 512 x 512 de la imagen, y represente la imagen con un presupuesto de 65 tokens. Esto permite que la API devuelva respuestas más rápidas y consuma menos tokens de entrada para casos de uso que no requieren alta detalle.\nAlta resolución permitirá primero que el modelo vea la imagen de baja resolución y luego crea recortes detallados de las imágenes de entrada como cuadrados de 512px basados en el tamaño de la imagen de entrada. Cada uno de los recortes detallados usa el doble del presupuesto de tokens para un total de 129 tokens.', - high: 'Alta', - low: 'Baja', - uploadMethod: 'Método de carga', - both: 'Ambos', - localUpload: 'Carga Local', - url: 'URL', - uploadLimit: 'Límite de carga', - }, - onlySupportVisionModelTip: 'Solo admite modelos de visión', - }, - voice: { - name: 'Voz', - defaultDisplay: 'Voz Predeterminada', - description: 'Configuraciones de voz a texto', - settings: 'Configuraciones', - voiceSettings: { - title: 'Configuraciones de Voz', - language: 'Idioma', - resolutionTooltip: 'Soporte de idioma para voz a texto.', - voice: 'Voz', - autoPlay: 'Auto-reproducción', - autoPlayEnabled: 'Abierto', - autoPlayDisabled: 'Cierre', - }, - }, - openingStatement: { - title: 'Apertura de Conversación', - add: 'Agregar', - writeOpener: 'Escribir apertura', - placeholder: 'Escribe tu mensaje de apertura aquí, puedes usar variables, intenta escribir {{variable}}.', - openingQuestion: 'Preguntas de Apertura', - openingQuestionPlaceholder: 'Puede usar variables, intente escribir {{variable}}.', - noDataPlaceHolder: 'Iniciar la conversación con el usuario puede ayudar a la IA a establecer una conexión más cercana con ellos en aplicaciones de conversación.', - varTip: 'Puedes usar variables, intenta escribir {{variable}}', - tooShort: 'Se requieren al menos 20 palabras en la indicación inicial para generar una apertura de conversación.', - notIncludeKey: 'La indicación inicial no incluye la variable: {{key}}. Por favor agrégala a la indicación inicial.', - }, - modelConfig: { - model: 'Modelo', - setTone: 'Establecer tono de respuestas', - title: 'Modelo y Parámetros', - modeType: { - chat: 'Chat', - completion: 'Completar', - }, - }, - inputs: { - title: 'Depurar y Previsualizar', - noPrompt: 'Intenta escribir alguna indicación en la entrada de pre-indicación', - userInputField: 'Campo de Entrada del Usuario', - noVar: 'Completa el valor de la variable, que se reemplazará automáticamente en la palabra de indicación cada vez que se inicie una nueva sesión.', - chatVarTip: 'Completa el valor de la variable, que se reemplazará automáticamente en la palabra de indicación cada vez que se inicie una nueva sesión', - completionVarTip: 'Completa el valor de la variable, que se reemplazará automáticamente en las palabras de indicación cada vez que se envíe una pregunta.', - previewTitle: 'Vista previa de la indicación', - queryTitle: 'Contenido de la consulta', - queryPlaceholder: 'Por favor ingresa el texto de la solicitud.', - run: 'EJECUTAR', - }, - result: 'Texto de salida', - datasetConfig: { - settingTitle: 'Configuraciones de Recuperación', - knowledgeTip: 'Haz clic en el botón “+” para agregar conocimiento', - retrieveOneWay: { - title: 'Recuperación N-a-1', - description: 'Basado en la intención del usuario y las descripciones de Conocimiento, el Agente selecciona autónomamente el mejor Conocimiento para consultar. Ideal para aplicaciones con Conocimiento limitado y distintivo.', - }, - retrieveMultiWay: { - title: 'Recuperación Multi-camino', - description: 'Basado en la intención del usuario, consulta a través de todo el Conocimiento, recupera texto relevante de múltiples fuentes y selecciona los mejores resultados que coinciden con la consulta del usuario después de reordenar. Se requiere configuración de la API del modelo de Reordenar.', - }, - rerankModelRequired: 'Se requiere modelo de Reordenar', - params: 'Parámetros', - top_k: 'Top K', - top_kTip: 'Usado para filtrar fragmentos que son más similares a las preguntas del usuario. El sistema también ajustará dinámicamente el valor de Top K, de acuerdo con los max_tokens del modelo seleccionado.', - score_threshold: 'Umbral de Puntuación', - score_thresholdTip: 'Usado para establecer el umbral de similitud para la filtración de fragmentos.', - retrieveChangeTip: 'Modificar el modo de índice y el modo de recuperación puede afectar las aplicaciones asociadas con este Conocimiento.', - embeddingModelRequired: 'Se requiere un modelo de incrustación configurado', - }, - debugAsSingleModel: 'Depurar como Modelo Único', - debugAsMultipleModel: 'Depurar como Múltiples Modelos', - duplicateModel: 'Duplicar', - publishAs: 'Publicar como', - assistantType: { - name: 'Tipo de Asistente', - chatAssistant: { - name: 'Asistente Básico', - description: 'Construye un asistente basado en chat usando un Modelo de Lenguaje Grande', - }, - agentAssistant: { - name: 'Asistente Agente', - description: 'Construye un Agente inteligente que puede elegir herramientas autónomamente para completar tareas', - }, - }, - agent: { - agentMode: 'Modo Agente', - agentModeDes: 'Establecer el tipo de modo de inferencia para el agente', - agentModeType: { - ReACT: 'ReAct', - functionCall: 'Llamada de Función', - }, - setting: { - name: 'Configuraciones del Agente', - description: 'Las configuraciones del Asistente Agente permiten establecer el modo del agente y funciones avanzadas como indicaciones integradas, disponibles solo en el tipo Agente.', - maximumIterations: { - name: 'Iteraciones Máximas', - description: 'Limitar el número de iteraciones que un asistente agente puede ejecutar', - }, - }, - buildInPrompt: 'Indicación Integrada', - firstPrompt: 'Primera Indicación', - nextIteration: 'Próxima Iteración', - promptPlaceholder: 'Escribe tu indicación aquí', - tools: { - name: 'Herramientas', - description: 'El uso de herramientas puede extender las capacidades del LLM, como buscar en internet o realizar cálculos científicos', - enabled: 'Habilitado', - }, - }, - codegen: { - apply: 'Aplicar', - overwriteConfirmMessage: 'Esta acción sobrescribirá el código existente. ¿Quieres continuar?', - instruction: 'Instrucciones', - loading: 'Generando código...', - title: 'Generador de código', - resTitle: 'Código generado', - description: 'El Generador de código utiliza modelos configurados para generar código de alta calidad basado en sus instrucciones. Proporcione instrucciones claras y detalladas.', - noDataLine1: 'Describa su caso de uso a la izquierda,', - generate: 'Generar', - generatedCodeTitle: 'Código generado', - noDataLine2: 'La vista previa del código se mostrará aquí.', - overwriteConfirmTitle: '¿Sobrescribir el código existente?', - instructionPlaceholder: 'Introduzca una descripción detallada del código que desea generar.', - applyChanges: 'Aplicar cambios', - }, - generate: { - template: { - pythonDebugger: { - name: 'Depurador de Python', - instruction: 'Un bot que puede generar y depurar el código en función de las instrucciones', - }, - translation: { - instruction: 'Un traductor que puede traducir varios idiomas', - name: 'Traducción', - }, - professionalAnalyst: { - instruction: 'Extraiga información, identifique riesgos y extraiga información clave de informes largos en un solo memorándum', - name: 'Analista profesional', - }, - excelFormulaExpert: { - name: 'Experto en fórmulas de Excel', - instruction: 'Un chatbot que puede ayudar a los usuarios novatos a comprender, usar y crear fórmulas de Excel basadas en las instrucciones del usuario', - }, - travelPlanning: { - instruction: 'El Asistente de planificación de viajes es una herramienta inteligente diseñada para ayudar a los usuarios a planificar sus viajes sin esfuerzo', - name: 'Planificación de viajes', - }, - SQLSorcerer: { - instruction: 'Transforme el lenguaje cotidiano en consultas SQL', - name: 'Hechicero SQL', - }, - GitGud: { - name: 'Git gud', - instruction: 'Generar comandos de Git adecuados basados en acciones de control de versiones descritas por el usuario', - }, - meetingTakeaways: { - name: 'Conclusiones de la reunión', - instruction: 'Destilar las reuniones en resúmenes concisos que incluyan temas de discusión, conclusiones clave y elementos de acción', - }, - writingsPolisher: { - name: 'Pulidora de escritura', - instruction: 'Utiliza técnicas avanzadas de corrección de textos para mejorar tus escritos', - }, - }, - apply: 'Aplicar', - instruction: 'Instrucciones', - description: 'El generador de mensajes utiliza el modelo configurado para optimizar los mensajes para una mayor calidad y una mejor estructura. Escriba instrucciones claras y detalladas.', - generate: 'Generar', - title: 'Generador de avisos', - tryIt: 'Pruébalo', - overwriteMessage: 'La aplicación de este mensaje anulará la configuración existente.', - resTitle: 'Mensaje generado', - overwriteTitle: '¿Anular la configuración existente?', - loading: 'Orquestando la aplicación para usted...', - to: 'a', - dismiss: 'Descartar', - press: 'Prensa', - versions: 'Versiones', - idealOutputPlaceholder: 'Describe tu formato de respuesta ideal, longitud, tono y requisitos de contenido...', - instructionPlaceHolderTitle: 'Describe cómo te gustaría mejorar este aviso. Por ejemplo:', - optimizationNote: 'Nota de Optimización', - optional: 'Opcional', - instructionPlaceHolderLine1: 'Haz el resultado más conciso, reteniendo los puntos clave.', - optimizePromptTooltip: 'Optimizar en el generador de mensajes', - instructionPlaceHolderLine3: 'El tono es demasiado brusco, por favor hazlo más amigable.', - instructionPlaceHolderLine2: 'El formato de salida es incorrecto, por favor siga estrictamente el formato JSON.', - version: 'Versión', - idealOutput: 'Salida Ideal', - insertContext: 'insertar contexto', - latest: 'último', - codeGenInstructionPlaceHolderLine: 'Cuanto más detallada sea la retroalimentación, como los tipos de datos de entrada y salida, así como la forma en que se procesan las variables, más precisa será la generación de código.', - newNoDataLine1: 'Escribe una instrucción en la columna de la izquierda y haz clic en Generar para ver la respuesta.', - }, - warningMessage: { - timeoutExceeded: 'Los resultados no se muestran debido al tiempo de espera. Consulte los registros para obtener resultados completos.', - }, - noResult: 'La salida se mostrará aquí.', -} - -export default translation diff --git a/web/i18n/es-ES/app-log.json b/web/i18n/es-ES/app-log.json new file mode 100644 index 0000000000..87f311e398 --- /dev/null +++ b/web/i18n/es-ES/app-log.json @@ -0,0 +1,110 @@ +{ + "title": "Registros", + "description": "Los registros registran el estado de ejecución de la aplicación, incluyendo las entradas de usuario y las respuestas de la IA.", + "dateTimeFormat": "MM/DD/YYYY hh:mm:ss A", + "table": { + "header": { + "updatedTime": "Hora actualizada", + "time": "Hora creada", + "endUser": "Usuario Final o Cuenta", + "input": "Entrada", + "output": "Salida", + "summary": "Título", + "messageCount": "Cantidad de Mensajes", + "userRate": "Tasa de Usuario", + "adminRate": "Tasa de Op.", + "startTime": "HORA DE INICIO", + "status": "ESTADO", + "runtime": "TIEMPO DE EJECUCIÓN", + "tokens": "TOKENS", + "user": "USUARIO FINAL O CUENTA", + "version": "VERSIÓN", + "triggered_from": "ACTIVADO POR" + }, + "pagination": { + "previous": "Anterior", + "next": "Siguiente" + }, + "empty": { + "noChat": "Aún no hay conversación", + "noOutput": "Sin salida", + "element": { + "title": "¿Hay alguien ahí?", + "content": "Observa y anota las interacciones entre los usuarios finales y las aplicaciones de IA aquí para mejorar continuamente la precisión de la IA. Puedes probar compartiendo o probando la aplicación web tú mismo, y luego regresar a esta página." + } + } + }, + "detail": { + "time": "Tiempo", + "conversationId": "ID de Conversación", + "promptTemplate": "Plantilla de Indicación", + "promptTemplateBeforeChat": "Plantilla de Indicación Antes de la Conversación · Como Mensaje del Sistema", + "annotationTip": "Mejoras Marcadas por {{user}}", + "timeConsuming": "", + "second": "s", + "tokenCost": "Tokens gastados", + "loading": "cargando", + "operation": { + "like": "me gusta", + "dislike": "no me gusta", + "addAnnotation": "Agregar Mejora", + "editAnnotation": "Editar Mejora", + "annotationPlaceholder": "Ingresa la respuesta esperada que deseas que la IA responda, lo cual se puede utilizar para el ajuste del modelo y la mejora continua de la calidad de generación de texto en el futuro." + }, + "variables": "Variables", + "uploadImages": "Imágenes Cargadas", + "modelParams": "Parámetros del modelo" + }, + "filter": { + "period": { + "today": "Hoy", + "last7days": "Últimos 7 Días", + "last4weeks": "Últimas 4 semanas", + "last3months": "Últimos 3 meses", + "last12months": "Últimos 12 meses", + "monthToDate": "Mes hasta la fecha", + "quarterToDate": "Trimestre hasta la fecha", + "yearToDate": "Año hasta la fecha", + "allTime": "Todo el tiempo", + "custom": "Personalizado", + "last30days": "Últimos 30 días" + }, + "annotation": { + "all": "Todos", + "annotated": "Mejoras Anotadas ({{count}} elementos)", + "not_annotated": "No Anotadas" + }, + "sortBy": "Ordenar por:", + "descending": "descendente", + "ascending": "ascendente" + }, + "workflowTitle": "Registros de Flujo de Trabajo", + "workflowSubtitle": "El registro registró la operación de Automate.", + "runDetail": { + "title": "Registro de Conversación", + "workflowTitle": "Detalle del Registro", + "fileListLabel": "Detalles del archivo", + "fileListDetail": "Detalle", + "testWithParams": "Prueba con parámetros" + }, + "promptLog": "Registro de Indicación", + "agentLog": "Registro de Agente", + "viewLog": "Ver Registro", + "agentLogDetail": { + "agentMode": "Modo de Agente", + "toolUsed": "Herramienta Utilizada", + "iterations": "Iteraciones", + "iteration": "Iteración", + "finalProcessing": "Procesamiento Final" + }, + "dateFormat": "DD/MM/YYYY", + "triggerBy": { + "debugging": "Depuración", + "appRun": "Aplicación web", + "webhook": "Webhook", + "schedule": "Horario", + "plugin": "Complemento", + "ragPipelineRun": "Pipeline RAG", + "ragPipelineDebugging": "Depuración RAG" + } +} diff --git a/web/i18n/es-ES/app-log.ts b/web/i18n/es-ES/app-log.ts deleted file mode 100644 index 07b8ec663f..0000000000 --- a/web/i18n/es-ES/app-log.ts +++ /dev/null @@ -1,112 +0,0 @@ -const translation = { - title: 'Registros', - description: 'Los registros registran el estado de ejecución de la aplicación, incluyendo las entradas de usuario y las respuestas de la IA.', - dateTimeFormat: 'MM/DD/YYYY hh:mm:ss A', - table: { - header: { - updatedTime: 'Hora actualizada', - time: 'Hora creada', - endUser: 'Usuario Final o Cuenta', - input: 'Entrada', - output: 'Salida', - summary: 'Título', - messageCount: 'Cantidad de Mensajes', - userRate: 'Tasa de Usuario', - adminRate: 'Tasa de Op.', - startTime: 'HORA DE INICIO', - status: 'ESTADO', - runtime: 'TIEMPO DE EJECUCIÓN', - tokens: 'TOKENS', - user: 'USUARIO FINAL O CUENTA', - version: 'VERSIÓN', - triggered_from: 'ACTIVADO POR', - }, - pagination: { - previous: 'Anterior', - next: 'Siguiente', - }, - empty: { - noChat: 'Aún no hay conversación', - noOutput: 'Sin salida', - element: { - title: '¿Hay alguien ahí?', - content: 'Observa y anota las interacciones entre los usuarios finales y las aplicaciones de IA aquí para mejorar continuamente la precisión de la IA. Puedes probar compartiendo o probando la aplicación web tú mismo, y luego regresar a esta página.', - }, - }, - }, - detail: { - time: 'Tiempo', - conversationId: 'ID de Conversación', - promptTemplate: 'Plantilla de Indicación', - promptTemplateBeforeChat: 'Plantilla de Indicación Antes de la Conversación · Como Mensaje del Sistema', - annotationTip: 'Mejoras Marcadas por {{user}}', - timeConsuming: '', - second: 's', - tokenCost: 'Tokens gastados', - loading: 'cargando', - operation: { - like: 'me gusta', - dislike: 'no me gusta', - addAnnotation: 'Agregar Mejora', - editAnnotation: 'Editar Mejora', - annotationPlaceholder: 'Ingresa la respuesta esperada que deseas que la IA responda, lo cual se puede utilizar para el ajuste del modelo y la mejora continua de la calidad de generación de texto en el futuro.', - }, - variables: 'Variables', - uploadImages: 'Imágenes Cargadas', - modelParams: 'Parámetros del modelo', - }, - filter: { - period: { - today: 'Hoy', - last7days: 'Últimos 7 Días', - last4weeks: 'Últimas 4 semanas', - last3months: 'Últimos 3 meses', - last12months: 'Últimos 12 meses', - monthToDate: 'Mes hasta la fecha', - quarterToDate: 'Trimestre hasta la fecha', - yearToDate: 'Año hasta la fecha', - allTime: 'Todo el tiempo', - custom: 'Personalizado', - last30days: 'Últimos 30 días', - }, - annotation: { - all: 'Todos', - annotated: 'Mejoras Anotadas ({{count}} elementos)', - not_annotated: 'No Anotadas', - }, - sortBy: 'Ordenar por:', - descending: 'descendente', - ascending: 'ascendente', - }, - workflowTitle: 'Registros de Flujo de Trabajo', - workflowSubtitle: 'El registro registró la operación de Automate.', - runDetail: { - title: 'Registro de Conversación', - workflowTitle: 'Detalle del Registro', - fileListLabel: 'Detalles del archivo', - fileListDetail: 'Detalle', - testWithParams: 'Prueba con parámetros', - }, - promptLog: 'Registro de Indicación', - agentLog: 'Registro de Agente', - viewLog: 'Ver Registro', - agentLogDetail: { - agentMode: 'Modo de Agente', - toolUsed: 'Herramienta Utilizada', - iterations: 'Iteraciones', - iteration: 'Iteración', - finalProcessing: 'Procesamiento Final', - }, - dateFormat: 'DD/MM/YYYY', - triggerBy: { - debugging: 'Depuración', - appRun: 'Aplicación web', - webhook: 'Webhook', - schedule: 'Horario', - plugin: 'Complemento', - ragPipelineRun: 'Pipeline RAG', - ragPipelineDebugging: 'Depuración RAG', - }, -} - -export default translation diff --git a/web/i18n/es-ES/app-overview.json b/web/i18n/es-ES/app-overview.json new file mode 100644 index 0000000000..c87668d82d --- /dev/null +++ b/web/i18n/es-ES/app-overview.json @@ -0,0 +1,187 @@ +{ + "welcome": { + "firstStepTip": "Para comenzar,", + "enterKeyTip": "ingresa tu clave de API de OpenAI a continuación", + "getKeyTip": "Obtén tu clave de API desde el panel de control de OpenAI", + "placeholder": "Tu clave de API de OpenAI (ej. sk-xxxx)" + }, + "apiKeyInfo": { + "cloud": { + "trial": { + "title": "Estás utilizando la cuota de prueba de {{providerName}}.", + "description": "La cuota de prueba se proporciona para su uso de prueba. Antes de que se agoten las llamadas de la cuota de prueba, configure su propio proveedor de modelos o compre cuota adicional." + }, + "exhausted": { + "title": "Tu cuota de prueba se ha agotado, por favor configura tu APIKey.", + "description": "Tu cuota de prueba se ha agotado. Por favor, configure su propio proveedor de modelos o compre cuota adicional." + } + }, + "selfHost": { + "title": { + "row1": "Para comenzar,", + "row2": "configura primero tu proveedor de modelos." + } + }, + "callTimes": "Veces llamadas", + "usedToken": "Token utilizados", + "setAPIBtn": "Ir a configurar proveedor de modelos", + "tryCloud": "O prueba la versión en la nube de Dify con una cotización gratuita" + }, + "overview": { + "title": "Resumen", + "appInfo": { + "explanation": "Aplicación web de IA lista para usar", + "accessibleAddress": "URL pública", + "preview": "Vista previa", + "regenerate": "Regenerar", + "regenerateNotice": "¿Deseas regenerar la URL pública?", + "preUseReminder": "Por favor, habilita la aplicación web antes de continuar.", + "settings": { + "entry": "Configuración", + "title": "Configuración de la aplicación web", + "webName": "Nombre de la aplicación web", + "webDesc": "Descripción de la aplicación web", + "webDescTip": "Este texto se mostrará en el lado del cliente, proporcionando una guía básica sobre cómo usar la aplicación", + "webDescPlaceholder": "Ingresa la descripción de la aplicación web", + "language": "Idioma", + "workflow": { + "title": "Pasos del flujo de trabajo", + "show": "Mostrar", + "hide": "Ocultar", + "subTitle": "Detalles del flujo de trabajo", + "showDesc": "Mostrar u ocultar detalles del flujo de trabajo en web app" + }, + "chatColorTheme": "Tema de color del chat", + "chatColorThemeDesc": "Establece el tema de color del chatbot", + "chatColorThemeInverted": "Invertido", + "invalidHexMessage": "Valor hexadecimal no válido", + "invalidPrivacyPolicy": "Enlace de política de privacidad no válido. Por favor, utiliza un enlace válido que comience con http o https", + "more": { + "entry": "Mostrar más configuraciones", + "copyright": "Derechos de autor", + "copyRightPlaceholder": "Ingresa el nombre del autor o la organización", + "privacyPolicy": "Política de privacidad", + "privacyPolicyPlaceholder": "Ingresa el enlace de la política de privacidad", + "privacyPolicyTip": "Ayuda a los visitantes a comprender los datos que recopila la aplicación, consulta la Política de privacidad de Dify.", + "customDisclaimer": "Descargo de responsabilidad personalizado", + "customDisclaimerPlaceholder": "Ingresa el texto de descargo de responsabilidad personalizado", + "customDisclaimerTip": "El texto de descargo de responsabilidad personalizado se mostrará en el lado del cliente, proporcionando información adicional sobre la aplicación", + "copyrightTip": "Mostrar información de derechos de autor en la aplicación web", + "copyrightTooltip": "Actualice al plan Profesional o superior" + }, + "sso": { + "description": "Todos los usuarios deben iniciar sesión con SSO antes de usar web app", + "tooltip": "Póngase en contacto con el administrador para habilitar el inicio de sesión único de web app", + "label": "Autenticación SSO", + "title": "web app SSO" + }, + "modalTip": "Configuración de la aplicación web del lado del cliente." + }, + "embedded": { + "entry": "Incrustado", + "title": "Incrustar en el sitio web", + "explanation": "Elige la forma de incrustar la aplicación de chat en tu sitio web", + "iframe": "Para agregar la aplicación de chat en cualquier lugar de tu sitio web, agrega este iframe a tu código HTML.", + "scripts": "Para agregar una aplicación de chat en la esquina inferior derecha de tu sitio web, agrega este código a tu HTML.", + "chromePlugin": "Instalar la extensión de Chrome de Dify Chatbot", + "copied": "Copiado", + "copy": "Copiar" + }, + "qrcode": { + "title": "Código QR para compartir", + "scan": "Escanear para compartir la aplicación", + "download": "Descargar código QR" + }, + "customize": { + "way": "forma", + "entry": "Personalizar", + "title": "Personalizar la aplicación web de IA", + "explanation": "Puedes personalizar el frontend de la aplicación web para adaptarlo a tus necesidades y estilo.", + "way1": { + "name": "Bifurca el código del cliente, modifícalo y despliégalo en Vercel (recomendado)", + "step1": "Bifurca el código del cliente y modifícalo", + "step1Tip": "Haz clic aquí para bifurcar el código fuente en tu cuenta de GitHub y modificar el código", + "step1Operation": "Dify-WebClient", + "step2": "Despliégalo en Vercel", + "step2Tip": "Haz clic aquí para importar el repositorio en Vercel y desplegarlo", + "step2Operation": "Importar repositorio", + "step3": "Configura las variables de entorno", + "step3Tip": "Agrega las siguientes variables de entorno en Vercel" + }, + "way2": { + "name": "Escribe código del lado del cliente para llamar a la API y despliégalo en un servidor", + "operation": "Documentación" + } + }, + "launch": "Lanzar", + "enableTooltip": { + "description": "Para habilitar esta función, por favor agrega un nodo de Entrada de Usuario al lienzo. (Puede que ya exista en el borrador, surte efecto después de publicar)", + "learnMore": "Aprender más" + }, + "title": "Aplicación web" + }, + "apiInfo": { + "title": "API del servicio backend", + "explanation": "Fácilmente integrable en tu aplicación", + "accessibleAddress": "Punto de conexión de la API del servicio", + "doc": "Referencia de la API" + }, + "status": { + "running": "En servicio", + "disable": "Deshabilitar" + }, + "triggerInfo": { + "title": "Desencadenantes", + "explanation": "Gestión de activadores de flujo de trabajo", + "triggersAdded": "Se añadieron los disparadores de {{count}}", + "noTriggerAdded": "No se agregó ningún disparador", + "triggerStatusDescription": "El estado del nodo de activación aparece aquí. (Puede que ya exista en el borrador, surte efecto después de publicar)", + "learnAboutTriggers": "Aprende sobre los desencadenantes" + }, + "disableTooltip": { + "triggerMode": "La función {{feature}} no es compatible en el modo Nodo de disparo." + } + }, + "analysis": { + "title": "Análisis", + "ms": "ms", + "tokenPS": "Token/s", + "totalMessages": { + "title": "Mensajes totales", + "explanation": "Recuento diario de interacciones con IA." + }, + "totalConversations": { + "title": "Conversaciones totales", + "explanation": "Recuento diario de conversaciones con IA; ingeniería/depuración de prompts excluida." + }, + "activeUsers": { + "title": "Usuarios activos", + "explanation": "Usuarios únicos que interactúan en preguntas y respuestas con IA; excluye la ingeniería/depuración de prompts." + }, + "tokenUsage": { + "title": "Uso de tokens", + "explanation": "Refleja el uso diario de tokens del modelo de lenguaje para la aplicación, útil para el control de costos.", + "consumed": "Consumidos" + }, + "avgSessionInteractions": { + "title": "Interacciones promedio por sesión", + "explanation": "Recuento continuo de comunicación usuario-IA; para aplicaciones basadas en conversaciones." + }, + "avgUserInteractions": { + "title": "Interacciones promedio por usuario", + "explanation": "Refleja la frecuencia de uso diario de los usuarios. Esta métrica refleja la fidelidad del usuario." + }, + "userSatisfactionRate": { + "title": "Tasa de satisfacción del usuario", + "explanation": "El número de likes por cada 1,000 mensajes. Esto indica la proporción de respuestas con las que los usuarios están muy satisfechos." + }, + "avgResponseTime": { + "title": "Tiempo promedio de respuesta", + "explanation": "Tiempo (ms) que tarda la IA en procesar/responder; para aplicaciones basadas en texto." + }, + "tps": { + "title": "Velocidad de salida de tokens", + "explanation": "Mide el rendimiento del LLM. Cuenta la velocidad de salida de tokens del LLM desde el inicio de la solicitud hasta la finalización de la salida." + } + } +} diff --git a/web/i18n/es-ES/app-overview.ts b/web/i18n/es-ES/app-overview.ts deleted file mode 100644 index 978141219c..0000000000 --- a/web/i18n/es-ES/app-overview.ts +++ /dev/null @@ -1,189 +0,0 @@ -const translation = { - welcome: { - firstStepTip: 'Para comenzar,', - enterKeyTip: 'ingresa tu clave de API de OpenAI a continuación', - getKeyTip: 'Obtén tu clave de API desde el panel de control de OpenAI', - placeholder: 'Tu clave de API de OpenAI (ej. sk-xxxx)', - }, - apiKeyInfo: { - cloud: { - trial: { - title: 'Estás utilizando la cuota de prueba de {{providerName}}.', - description: 'La cuota de prueba se proporciona para su uso de prueba. Antes de que se agoten las llamadas de la cuota de prueba, configure su propio proveedor de modelos o compre cuota adicional.', - }, - exhausted: { - title: 'Tu cuota de prueba se ha agotado, por favor configura tu APIKey.', - description: 'Tu cuota de prueba se ha agotado. Por favor, configure su propio proveedor de modelos o compre cuota adicional.', - }, - }, - selfHost: { - title: { - row1: 'Para comenzar,', - row2: 'configura primero tu proveedor de modelos.', - }, - }, - callTimes: 'Veces llamadas', - usedToken: 'Token utilizados', - setAPIBtn: 'Ir a configurar proveedor de modelos', - tryCloud: 'O prueba la versión en la nube de Dify con una cotización gratuita', - }, - overview: { - title: 'Resumen', - appInfo: { - explanation: 'Aplicación web de IA lista para usar', - accessibleAddress: 'URL pública', - preview: 'Vista previa', - regenerate: 'Regenerar', - regenerateNotice: '¿Deseas regenerar la URL pública?', - preUseReminder: 'Por favor, habilita la aplicación web antes de continuar.', - settings: { - entry: 'Configuración', - title: 'Configuración de la aplicación web', - webName: 'Nombre de la aplicación web', - webDesc: 'Descripción de la aplicación web', - webDescTip: 'Este texto se mostrará en el lado del cliente, proporcionando una guía básica sobre cómo usar la aplicación', - webDescPlaceholder: 'Ingresa la descripción de la aplicación web', - language: 'Idioma', - workflow: { - title: 'Pasos del flujo de trabajo', - show: 'Mostrar', - hide: 'Ocultar', - subTitle: 'Detalles del flujo de trabajo', - showDesc: 'Mostrar u ocultar detalles del flujo de trabajo en web app', - }, - chatColorTheme: 'Tema de color del chat', - chatColorThemeDesc: 'Establece el tema de color del chatbot', - chatColorThemeInverted: 'Invertido', - invalidHexMessage: 'Valor hexadecimal no válido', - invalidPrivacyPolicy: 'Enlace de política de privacidad no válido. Por favor, utiliza un enlace válido que comience con http o https', - more: { - entry: 'Mostrar más configuraciones', - copyright: 'Derechos de autor', - copyRightPlaceholder: 'Ingresa el nombre del autor o la organización', - privacyPolicy: 'Política de privacidad', - privacyPolicyPlaceholder: 'Ingresa el enlace de la política de privacidad', - privacyPolicyTip: 'Ayuda a los visitantes a comprender los datos que recopila la aplicación, consulta la Política de privacidad de Dify.', - customDisclaimer: 'Descargo de responsabilidad personalizado', - customDisclaimerPlaceholder: 'Ingresa el texto de descargo de responsabilidad personalizado', - customDisclaimerTip: 'El texto de descargo de responsabilidad personalizado se mostrará en el lado del cliente, proporcionando información adicional sobre la aplicación', - copyrightTip: 'Mostrar información de derechos de autor en la aplicación web', - copyrightTooltip: 'Actualice al plan Profesional o superior', - }, - sso: { - description: 'Todos los usuarios deben iniciar sesión con SSO antes de usar web app', - tooltip: 'Póngase en contacto con el administrador para habilitar el inicio de sesión único de web app', - label: 'Autenticación SSO', - title: 'web app SSO', - }, - modalTip: 'Configuración de la aplicación web del lado del cliente.', - }, - embedded: { - entry: 'Incrustado', - title: 'Incrustar en el sitio web', - explanation: 'Elige la forma de incrustar la aplicación de chat en tu sitio web', - iframe: 'Para agregar la aplicación de chat en cualquier lugar de tu sitio web, agrega este iframe a tu código HTML.', - scripts: 'Para agregar una aplicación de chat en la esquina inferior derecha de tu sitio web, agrega este código a tu HTML.', - chromePlugin: 'Instalar la extensión de Chrome de Dify Chatbot', - copied: 'Copiado', - copy: 'Copiar', - }, - qrcode: { - title: 'Código QR para compartir', - scan: 'Escanear para compartir la aplicación', - download: 'Descargar código QR', - }, - customize: { - way: 'forma', - entry: 'Personalizar', - title: 'Personalizar la aplicación web de IA', - explanation: 'Puedes personalizar el frontend de la aplicación web para adaptarlo a tus necesidades y estilo.', - way1: { - name: 'Bifurca el código del cliente, modifícalo y despliégalo en Vercel (recomendado)', - step1: 'Bifurca el código del cliente y modifícalo', - step1Tip: 'Haz clic aquí para bifurcar el código fuente en tu cuenta de GitHub y modificar el código', - step1Operation: 'Dify-WebClient', - step2: 'Despliégalo en Vercel', - step2Tip: 'Haz clic aquí para importar el repositorio en Vercel y desplegarlo', - step2Operation: 'Importar repositorio', - step3: 'Configura las variables de entorno', - step3Tip: 'Agrega las siguientes variables de entorno en Vercel', - }, - way2: { - name: 'Escribe código del lado del cliente para llamar a la API y despliégalo en un servidor', - operation: 'Documentación', - }, - }, - launch: 'Lanzar', - enableTooltip: { - description: 'Para habilitar esta función, por favor agrega un nodo de Entrada de Usuario al lienzo. (Puede que ya exista en el borrador, surte efecto después de publicar)', - learnMore: 'Aprender más', - }, - title: 'Aplicación web', - }, - apiInfo: { - title: 'API del servicio backend', - explanation: 'Fácilmente integrable en tu aplicación', - accessibleAddress: 'Punto de conexión de la API del servicio', - doc: 'Referencia de la API', - }, - status: { - running: 'En servicio', - disable: 'Deshabilitar', - }, - triggerInfo: { - title: 'Desencadenantes', - explanation: 'Gestión de activadores de flujo de trabajo', - triggersAdded: 'Se añadieron los disparadores de {{count}}', - noTriggerAdded: 'No se agregó ningún disparador', - triggerStatusDescription: 'El estado del nodo de activación aparece aquí. (Puede que ya exista en el borrador, surte efecto después de publicar)', - learnAboutTriggers: 'Aprende sobre los desencadenantes', - }, - disableTooltip: { - triggerMode: 'La función {{feature}} no es compatible en el modo Nodo de disparo.', - }, - }, - analysis: { - title: 'Análisis', - ms: 'ms', - tokenPS: 'Token/s', - totalMessages: { - title: 'Mensajes totales', - explanation: 'Recuento diario de interacciones con IA.', - }, - totalConversations: { - title: 'Conversaciones totales', - explanation: 'Recuento diario de conversaciones con IA; ingeniería/depuración de prompts excluida.', - }, - activeUsers: { - title: 'Usuarios activos', - explanation: 'Usuarios únicos que interactúan en preguntas y respuestas con IA; excluye la ingeniería/depuración de prompts.', - }, - tokenUsage: { - title: 'Uso de tokens', - explanation: 'Refleja el uso diario de tokens del modelo de lenguaje para la aplicación, útil para el control de costos.', - consumed: 'Consumidos', - }, - avgSessionInteractions: { - title: 'Interacciones promedio por sesión', - explanation: 'Recuento continuo de comunicación usuario-IA; para aplicaciones basadas en conversaciones.', - }, - avgUserInteractions: { - title: 'Interacciones promedio por usuario', - explanation: 'Refleja la frecuencia de uso diario de los usuarios. Esta métrica refleja la fidelidad del usuario.', - }, - userSatisfactionRate: { - title: 'Tasa de satisfacción del usuario', - explanation: 'El número de likes por cada 1,000 mensajes. Esto indica la proporción de respuestas con las que los usuarios están muy satisfechos.', - }, - avgResponseTime: { - title: 'Tiempo promedio de respuesta', - explanation: 'Tiempo (ms) que tarda la IA en procesar/responder; para aplicaciones basadas en texto.', - }, - tps: { - title: 'Velocidad de salida de tokens', - explanation: 'Mide el rendimiento del LLM. Cuenta la velocidad de salida de tokens del LLM desde el inicio de la solicitud hasta la finalización de la salida.', - }, - }, -} - -export default translation diff --git a/web/i18n/es-ES/app.json b/web/i18n/es-ES/app.json new file mode 100644 index 0000000000..ed85fdcb52 --- /dev/null +++ b/web/i18n/es-ES/app.json @@ -0,0 +1,345 @@ +{ + "createApp": "CREAR APP", + "types": { + "all": "Todos", + "chatbot": "Chatbot", + "agent": "Agente", + "workflow": "Flujo de trabajo", + "completion": "Finalización", + "basic": "Básico", + "advanced": "Flujo de chat" + }, + "duplicate": "Duplicar", + "duplicateTitle": "Duplicar App", + "export": "Exportar DSL", + "exportFailed": "Error al exportar DSL.", + "importDSL": "Importar archivo DSL", + "createFromConfigFile": "Crear desde archivo DSL", + "deleteAppConfirmTitle": "¿Eliminar esta app?", + "deleteAppConfirmContent": "Eliminar la app es irreversible. Los usuarios ya no podrán acceder a tu app y todas las configuraciones y registros de prompts se eliminarán permanentemente.", + "appDeleted": "App eliminada", + "appDeleteFailed": "Error al eliminar app", + "join": "Únete a la comunidad", + "communityIntro": "Discute con miembros del equipo, colaboradores y desarrolladores en diferentes canales.", + "roadmap": "Ver nuestro plan de desarrollo", + "newApp": { + "startFromBlank": "Crear desde cero", + "startFromTemplate": "Crear desde plantilla", + "workflowWarning": "Actualmente en beta", + "captionName": "Icono y nombre de la app", + "appNamePlaceholder": "Asigna un nombre a tu app", + "captionDescription": "Descripción", + "appDescriptionPlaceholder": "Ingresa la descripción de la app", + "useTemplate": "Usar esta plantilla", + "previewDemo": "Vista previa de demostración", + "chatApp": "Asistente", + "chatAppIntro": "Quiero construir una aplicación basada en chat. Esta app utiliza un formato de pregunta y respuesta, permitiendo múltiples rondas de conversación continua.", + "agentAssistant": "Nuevo Asistente de Agente", + "completeApp": "Generador de Texto", + "completeAppIntro": "Quiero crear una aplicación que genera texto de alta calidad basado en prompts, como la generación de artículos, resúmenes, traducciones y más.", + "showTemplates": "Quiero elegir una plantilla", + "hideTemplates": "Volver a la selección de modo", + "Create": "Crear", + "Cancel": "Cancelar", + "nameNotEmpty": "El nombre no puede estar vacío", + "appTemplateNotSelected": "Por favor, selecciona una plantilla", + "appTypeRequired": "Por favor, selecciona un tipo de app", + "appCreated": "App creada", + "appCreateFailed": "Error al crear app", + "Confirm": "Confirmar", + "caution": "Cautela", + "appCreateDSLErrorTitle": "Incompatibilidad de versiones", + "appCreateDSLErrorPart2": "¿Quieres continuar?", + "appCreateDSLErrorPart4": "Versión de DSL compatible con el sistema:", + "appCreateDSLErrorPart1": "Se ha detectado una diferencia significativa en las versiones de DSL. Forzar la importación puede hacer que la aplicación no funcione correctamente.", + "appCreateDSLWarning": "Precaución: La diferencia de versión de DSL puede afectar a determinadas funciones", + "appCreateDSLErrorPart3": "Versión actual de DSL de la aplicación:", + "forBeginners": "Tipos de aplicación más básicos", + "learnMore": "Aprende más", + "noTemplateFoundTip": "Intente buscar usando diferentes palabras clave.", + "chatbotShortDescription": "Chatbot basado en LLM con una configuración sencilla", + "chooseAppType": "Elija un tipo de aplicación", + "noAppsFound": "No se han encontrado aplicaciones", + "workflowUserDescription": "Construya flujos de trabajo autónomos de IA con la simplicidad de arrastrar y soltar.", + "advancedShortDescription": "Flujo de trabajo mejorado para chats de múltiples turnos", + "forAdvanced": "PARA USUARIOS AVANZADOS", + "completionShortDescription": "Asistente de IA para tareas de generación de texto", + "optional": "Opcional", + "noIdeaTip": "¿No tienes ideas? Echa un vistazo a nuestras plantillas", + "agentUserDescription": "Un agente inteligente capaz de realizar un razonamiento iterativo y un uso autónomo de las herramientas para alcanzar los objetivos de las tareas.", + "workflowShortDescription": "Flujo agéntico para automatizaciones inteligentes", + "advancedUserDescription": "Flujo de trabajo con funciones de memoria y una interfaz de chatbot.", + "agentShortDescription": "Agente inteligente con razonamiento y uso autónomo de herramientas", + "foundResults": "{{conteo}} Resultados", + "noTemplateFound": "No se han encontrado plantillas", + "foundResult": "{{conteo}} Resultado", + "chatbotUserDescription": "Cree rápidamente un chatbot basado en LLM con una configuración sencilla. Puedes cambiar a Chatflow más tarde.", + "completionUserDescription": "Cree rápidamente un asistente de IA para tareas de generación de texto con una configuración sencilla.", + "dropDSLToCreateApp": "Suelta el archivo DSL aquí para crear la aplicación", + "import": "Importación" + }, + "editApp": "Editar información", + "editAppTitle": "Editar información de la app", + "editDone": "Información de la app actualizada", + "editFailed": "Error al actualizar información de la app", + "iconPicker": { + "ok": "OK", + "cancel": "Cancelar", + "emoji": "Emoji", + "image": "Imagen" + }, + "switch": "Cambiar a Orquestación de Flujo de Trabajo", + "switchTipStart": "Se creará una nueva copia de la app para ti y la nueva copia cambiará a Orquestación de Flujo de Trabajo. La nueva copia no permitirá", + "switchTip": "volver", + "switchTipEnd": " a la Orquestación Básica.", + "switchLabel": "La copia de la app a crear", + "removeOriginal": "Eliminar la app original", + "switchStart": "Iniciar cambio", + "typeSelector": { + "all": "Todos los tipos", + "chatbot": "Chatbot", + "agent": "Agente", + "workflow": "Flujo de trabajo", + "completion": "Finalización", + "advanced": "Flujo de chat" + }, + "tracing": { + "title": "Rastreo del rendimiento de la app", + "description": "Configuración de un proveedor de LLMOps de terceros y rastreo del rendimiento de la app.", + "config": "Configurar", + "collapse": "Contraer", + "expand": "Expandir", + "tracing": "Rastreo", + "disabled": "Deshabilitado", + "disabledTip": "Por favor, configura el proveedor primero", + "enabled": "En servicio", + "tracingDescription": "Captura el contexto completo de la ejecución de la app, incluyendo llamadas LLM, contexto, prompts, solicitudes HTTP y más, en una plataforma de rastreo de terceros.", + "configProviderTitle": { + "configured": "Configurado", + "notConfigured": "Configurar proveedor para habilitar el rastreo", + "moreProvider": "Más proveedores" + }, + "arize": { + "title": "Arize", + "description": "Observabilidad de LLM de nivel empresarial, evaluación en línea y fuera de línea, monitoreo y experimentación—impulsada por OpenTelemetry. Diseñada específicamente para aplicaciones impulsadas por LLM y agentes." + }, + "phoenix": { + "title": "Phoenix", + "description": "Plataforma de observabilidad, evaluación, ingeniería de prompts y experimentación de código abierto basada en OpenTelemetry para sus flujos de trabajo y agentes de LLM." + }, + "langsmith": { + "title": "LangSmith", + "description": "Una plataforma de desarrollo todo en uno para cada paso del ciclo de vida de la aplicación impulsada por LLM." + }, + "langfuse": { + "title": "Langfuse", + "description": "Rastrea, evalúa, gestiona prompts y métricas para depurar y mejorar tu aplicación LLM." + }, + "inUse": "En uso", + "configProvider": { + "title": "Configurar ", + "placeholder": "Ingresa tu {{key}}", + "project": "Proyecto", + "publicKey": "Clave pública", + "secretKey": "Clave secreta", + "viewDocsLink": "Ver documentación de {{key}}", + "removeConfirmTitle": "¿Eliminar la configuración de {{key}}?", + "removeConfirmContent": "La configuración actual está en uso, eliminarla desactivará la función de rastreo.", + "password": "Contraseña", + "experimentId": "ID del experimento", + "trackingUri": "URI de seguimiento", + "username": "Nombre de usuario", + "databricksHost": "URL del espacio de trabajo de Databricks", + "clientSecret": "Secreto del cliente OAuth", + "clientId": "ID de cliente OAuth", + "personalAccessToken": "Token de Acceso Personal (antiguo)" + }, + "view": "Vista", + "opik": { + "description": "Opik es una plataforma de código abierto para evaluar, probar y monitorear aplicaciones LLM.", + "title": "Opik" + }, + "weave": { + "description": "Weave es una plataforma de código abierto para evaluar, probar y monitorear aplicaciones de LLM.", + "title": "Tejer" + }, + "aliyun": { + "title": "Monitor de Nubes", + "description": "La plataforma de observabilidad totalmente gestionada y sin mantenimiento proporcionada por Alibaba Cloud, permite la monitorización, trazado y evaluación de aplicaciones Dify de manera inmediata." + }, + "mlflow": { + "title": "MLflow", + "description": "Plataforma LLMOps de código abierto para seguimiento de experimentos, observabilidad y evaluación, para construir aplicaciones de IA/LLM con confianza." + }, + "databricks": { + "title": "Databricks", + "description": "Databricks ofrece MLflow completamente gestionado con fuerte gobernanza y seguridad para almacenar datos de trazabilidad." + }, + "tencent": { + "title": "Tencent APM", + "description": "Tencent Application Performance Monitoring proporciona rastreo integral y análisis multidimensional para aplicaciones LLM." + } + }, + "answerIcon": { + "title": "Usar el icono de la aplicación web para reemplazar 🤖", + "descriptionInExplore": "Si se debe usar el icono de la aplicación web para reemplazarlo 🤖 en Explore", + "description": "Si se va a usar el icono de la aplicación web para reemplazarlo 🤖 en la aplicación compartida" + }, + "importFromDSLUrl": "URL de origen", + "importFromDSLUrlPlaceholder": "Pegar enlace DSL aquí", + "dslUploader": { + "button": "Arrastrar y soltar archivo, o", + "browse": "Examinar" + }, + "importFromDSL": "Importar desde DSL", + "importFromDSLFile": "Desde el archivo DSL", + "mermaid": { + "handDrawn": "Dibujado a mano", + "classic": "Clásico" + }, + "openInExplore": "Abrir en Explorar", + "newAppFromTemplate": { + "sidebar": { + "Programming": "Programación", + "Agent": "Agente", + "Writing": "Escritura", + "Assistant": "Asistente", + "Recommended": "Recomendado", + "HR": "HR", + "Workflow": "Flujo de trabajo" + }, + "byCategories": "POR CATEGORÍAS", + "searchAllTemplate": "Buscar todas las plantillas..." + }, + "showMyCreatedAppsOnly": "Mostrar solo mis aplicaciones creadas", + "appSelector": { + "label": "APLICACIÓN", + "placeholder": "Selecciona una aplicación...", + "noParams": "No se necesitan parámetros", + "params": "PARÁMETROS DE LA APLICACIÓN" + }, + "structOutput": { + "notConfiguredTip": "La salida estructurada aún no ha sido configurada.", + "required": "Requerido", + "configure": "Configurar", + "LLMResponse": "Respuesta del LLM", + "moreFillTip": "Mostrando un máximo de 10 niveles de anidación", + "modelNotSupportedTip": "El modelo actual no admite esta función y se degrada automáticamente a inyección de comandos.", + "structuredTip": "Las Salidas Estructuradas son una función que garantiza que el modelo siempre generará respuestas que se ajusten a su esquema JSON proporcionado.", + "modelNotSupported": "Modelo no soportado", + "structured": "sistemático" + }, + "accessItemsDescription": { + "anyone": "Cualquiera puede acceder a la aplicación web.", + "specific": "Solo grupos o miembros específicos pueden acceder a la aplicación web", + "organization": "Cualquiera en la organización puede acceder a la aplicación web", + "external": "Solo los usuarios externos autenticados pueden acceder a la aplicación web." + }, + "accessControlDialog": { + "accessItems": { + "anyone": "Cualquiera con el enlace", + "specific": "Grupos o miembros específicos", + "organization": "Solo miembros dentro de la empresa", + "external": "Usuarios externos autenticados" + }, + "operateGroupAndMember": { + "searchPlaceholder": "Buscar grupos y miembros", + "allMembers": "Todos los miembros", + "expand": "Expandir", + "noResult": "Sin resultado" + }, + "title": "Control de Acceso a la Aplicación Web", + "description": "Establecer permisos de acceso a la aplicación web", + "accessLabel": "¿Quién tiene acceso?", + "groups_one": "{{count}} GRUPO", + "groups_other": "{{count}} GRUPOS", + "members_one": "{{count}} MIEMBRO", + "members_other": "{{count}} MIEMBROS", + "noGroupsOrMembers": "No grupos o miembros seleccionados", + "webAppSSONotEnabledTip": "Por favor, contacte al administrador de la empresa para configurar el método de autenticación de la aplicación web.", + "updateSuccess": "Actualización exitosa" + }, + "publishApp": { + "title": "¿Quién puede acceder a la aplicación web?", + "notSet": "No establecido", + "notSetDesc": "Actualmente nadie puede acceder a la aplicación web. Por favor, configure los permisos." + }, + "accessControl": "Control de Acceso a la Aplicación Web", + "noAccessPermission": "No se permite el acceso a la aplicación web", + "maxActiveRequestsPlaceholder": "Introduce 0 para ilimitado", + "maxActiveRequests": "Máximas solicitudes concurrentes", + "maxActiveRequestsTip": "Número máximo de solicitudes activas concurrentes por aplicación (0 para ilimitado)", + "gotoAnything": { + "actions": { + "searchApplications": "Buscar aplicaciones", + "searchKnowledgeBasesDesc": "Busque y navegue por sus bases de conocimiento", + "searchWorkflowNodes": "Buscar nodos de flujo de trabajo", + "searchPlugins": "Buscar complementos", + "searchWorkflowNodesDesc": "Buscar y saltar a nodos en el flujo de trabajo actual por nombre o tipo", + "searchKnowledgeBases": "Buscar en las bases de conocimiento", + "searchApplicationsDesc": "Buscar y navegar a sus aplicaciones", + "searchPluginsDesc": "Busca y navega a tus plugins", + "searchWorkflowNodesHelp": "Esta función solo funciona cuando se visualiza un flujo de trabajo. Primero vaya a un flujo de trabajo.", + "languageCategoryTitle": "Idioma", + "runDesc": "Ejecutar comandos rápidos (tema, idioma, ...)", + "runTitle": "Comandos", + "themeSystem": "Tema del sistema", + "themeDark": "Tema oscuro", + "themeLight": "Tema Claro", + "themeCategoryTitle": "Tema", + "themeLightDesc": "Usar apariencia clara", + "themeSystemDesc": "Sigue la apariencia de tu sistema operativo", + "languageChangeDesc": "Cambiar el idioma de la interfaz", + "themeDarkDesc": "Usar apariencia oscura", + "languageCategoryDesc": "Cambiar el idioma de la interfaz", + "themeCategoryDesc": "Cambiar el tema de la aplicación", + "slashDesc": "Ejecuta comandos como /tema, /idioma", + "accountDesc": "Navegar a la página de cuenta", + "communityDesc": "Abrir comunidad de Discord", + "feedbackDesc": "Discusiones de retroalimentación de la comunidad abierta", + "docDesc": "Abrir la documentación de ayuda", + "zenTitle": "Zen Mode", + "zenDesc": "Toggle canvas focus mode" + }, + "emptyState": { + "noAppsFound": "No se encontraron aplicaciones", + "noPluginsFound": "No se encontraron complementos", + "noWorkflowNodesFound": "No se encontraron nodos de flujo de trabajo", + "noKnowledgeBasesFound": "No se han encontrado bases de conocimiento", + "tryDifferentTerm": "Intenta un término de búsqueda diferente o elimina el filtro {{mode}}", + "trySpecificSearch": "Prueba {{shortcuts}} para búsquedas específicas" + }, + "groups": { + "apps": "Aplicaciones", + "workflowNodes": "Nodos de flujo de trabajo", + "knowledgeBases": "Bases de conocimiento", + "plugins": "Complementos", + "commands": "Comandos" + }, + "clearToSearchAll": "Borrar @ para buscar todo", + "noResults": "No se han encontrado resultados", + "searching": "Buscando...", + "searchTemporarilyUnavailable": "La búsqueda no está disponible temporalmente", + "searchFailed": "Error de búsqueda", + "useAtForSpecific": "Use @ para tipos específicos", + "searchPlaceholder": "Busque o escriba @ para los comandos...", + "searchTitle": "Busca cualquier cosa", + "someServicesUnavailable": "Algunos servicios de búsqueda no están disponibles", + "servicesUnavailableMessage": "Algunos servicios de búsqueda pueden estar experimentando problemas. Inténtalo de nuevo en un momento.", + "searchHint": "Empieza a escribir para buscar todo al instante", + "commandHint": "Escriba @ para buscar por categoría", + "selectSearchType": "Elige qué buscar", + "resultCount": "{{count}} resultado", + "resultCount_other": "{{count}} resultados", + "inScope": "en {{scope}}s", + "tryDifferentSearch": "Prueba con un término de búsqueda diferente", + "noMatchingCommands": "No se encontraron comandos coincidentes", + "slashHint": "Escribe / para ver todos los comandos disponibles", + "selectToNavigate": "Seleccionar para navegar", + "pressEscToClose": "Presiona ESC para cerrar", + "startTyping": "Empieza a escribir para buscar", + "tips": "Presiona ↑↓ para navegar" + }, + "notPublishedYet": "La aplicación aún no está publicada", + "noUserInputNode": "Nodo de entrada de usuario faltante" +} diff --git a/web/i18n/es-ES/app.ts b/web/i18n/es-ES/app.ts deleted file mode 100644 index 261c018dbf..0000000000 --- a/web/i18n/es-ES/app.ts +++ /dev/null @@ -1,351 +0,0 @@ -const translation = { - createApp: 'CREAR APP', - types: { - all: 'Todos', - chatbot: 'Chatbot', - agent: 'Agente', - workflow: 'Flujo de trabajo', - completion: 'Finalización', - basic: 'Básico', - advanced: 'Flujo de chat', - }, - duplicate: 'Duplicar', - duplicateTitle: 'Duplicar App', - export: 'Exportar DSL', - exportFailed: 'Error al exportar DSL.', - importDSL: 'Importar archivo DSL', - createFromConfigFile: 'Crear desde archivo DSL', - deleteAppConfirmTitle: '¿Eliminar esta app?', - deleteAppConfirmContent: - 'Eliminar la app es irreversible. Los usuarios ya no podrán acceder a tu app y todas las configuraciones y registros de prompts se eliminarán permanentemente.', - appDeleted: 'App eliminada', - appDeleteFailed: 'Error al eliminar app', - join: 'Únete a la comunidad', - communityIntro: - 'Discute con miembros del equipo, colaboradores y desarrolladores en diferentes canales.', - roadmap: 'Ver nuestro plan de desarrollo', - newApp: { - startFromBlank: 'Crear desde cero', - startFromTemplate: 'Crear desde plantilla', - workflowWarning: 'Actualmente en beta', - captionName: 'Icono y nombre de la app', - appNamePlaceholder: 'Asigna un nombre a tu app', - captionDescription: 'Descripción', - appDescriptionPlaceholder: 'Ingresa la descripción de la app', - useTemplate: 'Usar esta plantilla', - previewDemo: 'Vista previa de demostración', - chatApp: 'Asistente', - chatAppIntro: - 'Quiero construir una aplicación basada en chat. Esta app utiliza un formato de pregunta y respuesta, permitiendo múltiples rondas de conversación continua.', - agentAssistant: 'Nuevo Asistente de Agente', - completeApp: 'Generador de Texto', - completeAppIntro: - 'Quiero crear una aplicación que genera texto de alta calidad basado en prompts, como la generación de artículos, resúmenes, traducciones y más.', - showTemplates: 'Quiero elegir una plantilla', - hideTemplates: 'Volver a la selección de modo', - Create: 'Crear', - Cancel: 'Cancelar', - nameNotEmpty: 'El nombre no puede estar vacío', - appTemplateNotSelected: 'Por favor, selecciona una plantilla', - appTypeRequired: 'Por favor, selecciona un tipo de app', - appCreated: 'App creada', - appCreateFailed: 'Error al crear app', - Confirm: 'Confirmar', - caution: 'Cautela', - appCreateDSLErrorTitle: 'Incompatibilidad de versiones', - appCreateDSLErrorPart2: '¿Quieres continuar?', - appCreateDSLErrorPart4: 'Versión de DSL compatible con el sistema:', - appCreateDSLErrorPart1: 'Se ha detectado una diferencia significativa en las versiones de DSL. Forzar la importación puede hacer que la aplicación no funcione correctamente.', - appCreateDSLWarning: 'Precaución: La diferencia de versión de DSL puede afectar a determinadas funciones', - appCreateDSLErrorPart3: 'Versión actual de DSL de la aplicación:', - forBeginners: 'Tipos de aplicación más básicos', - learnMore: 'Aprende más', - noTemplateFoundTip: 'Intente buscar usando diferentes palabras clave.', - chatbotShortDescription: 'Chatbot basado en LLM con una configuración sencilla', - chooseAppType: 'Elija un tipo de aplicación', - noAppsFound: 'No se han encontrado aplicaciones', - workflowUserDescription: 'Construya flujos de trabajo autónomos de IA con la simplicidad de arrastrar y soltar.', - advancedShortDescription: 'Flujo de trabajo mejorado para chats de múltiples turnos', - forAdvanced: 'PARA USUARIOS AVANZADOS', - completionShortDescription: 'Asistente de IA para tareas de generación de texto', - optional: 'Opcional', - noIdeaTip: '¿No tienes ideas? Echa un vistazo a nuestras plantillas', - agentUserDescription: 'Un agente inteligente capaz de realizar un razonamiento iterativo y un uso autónomo de las herramientas para alcanzar los objetivos de las tareas.', - workflowShortDescription: 'Flujo agéntico para automatizaciones inteligentes', - advancedUserDescription: 'Flujo de trabajo con funciones de memoria y una interfaz de chatbot.', - agentShortDescription: 'Agente inteligente con razonamiento y uso autónomo de herramientas', - foundResults: '{{conteo}} Resultados', - noTemplateFound: 'No se han encontrado plantillas', - foundResult: '{{conteo}} Resultado', - chatbotUserDescription: 'Cree rápidamente un chatbot basado en LLM con una configuración sencilla. Puedes cambiar a Chatflow más tarde.', - completionUserDescription: 'Cree rápidamente un asistente de IA para tareas de generación de texto con una configuración sencilla.', - dropDSLToCreateApp: 'Suelta el archivo DSL aquí para crear la aplicación', - import: 'Importación', - }, - editApp: 'Editar información', - editAppTitle: 'Editar información de la app', - editDone: 'Información de la app actualizada', - editFailed: 'Error al actualizar información de la app', - iconPicker: { - ok: 'OK', - cancel: 'Cancelar', - emoji: 'Emoji', - image: 'Imagen', - }, - switch: 'Cambiar a Orquestación de Flujo de Trabajo', - switchTipStart: 'Se creará una nueva copia de la app para ti y la nueva copia cambiará a Orquestación de Flujo de Trabajo. La nueva copia no permitirá', - switchTip: 'volver', - switchTipEnd: ' a la Orquestación Básica.', - switchLabel: 'La copia de la app a crear', - removeOriginal: 'Eliminar la app original', - switchStart: 'Iniciar cambio', - typeSelector: { - all: 'Todos los tipos', - chatbot: 'Chatbot', - agent: 'Agente', - workflow: 'Flujo de trabajo', - completion: 'Finalización', - advanced: 'Flujo de chat', - }, - tracing: { - title: 'Rastreo del rendimiento de la app', - description: 'Configuración de un proveedor de LLMOps de terceros y rastreo del rendimiento de la app.', - config: 'Configurar', - collapse: 'Contraer', - expand: 'Expandir', - tracing: 'Rastreo', - disabled: 'Deshabilitado', - disabledTip: 'Por favor, configura el proveedor primero', - enabled: 'En servicio', - tracingDescription: 'Captura el contexto completo de la ejecución de la app, incluyendo llamadas LLM, contexto, prompts, solicitudes HTTP y más, en una plataforma de rastreo de terceros.', - configProviderTitle: { - configured: 'Configurado', - notConfigured: 'Configurar proveedor para habilitar el rastreo', - moreProvider: 'Más proveedores', - }, - arize: { - title: 'Arize', - description: 'Observabilidad de LLM de nivel empresarial, evaluación en línea y fuera de línea, monitoreo y experimentación—impulsada por OpenTelemetry. Diseñada específicamente para aplicaciones impulsadas por LLM y agentes.', - }, - phoenix: { - title: 'Phoenix', - description: 'Plataforma de observabilidad, evaluación, ingeniería de prompts y experimentación de código abierto basada en OpenTelemetry para sus flujos de trabajo y agentes de LLM.', - }, - langsmith: { - title: 'LangSmith', - description: 'Una plataforma de desarrollo todo en uno para cada paso del ciclo de vida de la aplicación impulsada por LLM.', - }, - langfuse: { - title: 'Langfuse', - description: 'Rastrea, evalúa, gestiona prompts y métricas para depurar y mejorar tu aplicación LLM.', - }, - inUse: 'En uso', - configProvider: { - title: 'Configurar ', - placeholder: 'Ingresa tu {{key}}', - project: 'Proyecto', - publicKey: 'Clave pública', - secretKey: 'Clave secreta', - viewDocsLink: 'Ver documentación de {{key}}', - removeConfirmTitle: '¿Eliminar la configuración de {{key}}?', - removeConfirmContent: 'La configuración actual está en uso, eliminarla desactivará la función de rastreo.', - password: 'Contraseña', - experimentId: 'ID del experimento', - trackingUri: 'URI de seguimiento', - username: 'Nombre de usuario', - databricksHost: 'URL del espacio de trabajo de Databricks', - clientSecret: 'Secreto del cliente OAuth', - clientId: 'ID de cliente OAuth', - personalAccessToken: 'Token de Acceso Personal (antiguo)', - }, - view: 'Vista', - opik: { - description: 'Opik es una plataforma de código abierto para evaluar, probar y monitorear aplicaciones LLM.', - title: 'Opik', - }, - weave: { - description: 'Weave es una plataforma de código abierto para evaluar, probar y monitorear aplicaciones de LLM.', - title: 'Tejer', - }, - aliyun: { - title: 'Monitor de Nubes', - description: 'La plataforma de observabilidad totalmente gestionada y sin mantenimiento proporcionada por Alibaba Cloud, permite la monitorización, trazado y evaluación de aplicaciones Dify de manera inmediata.', - }, - mlflow: { - title: 'MLflow', - description: 'Plataforma LLMOps de código abierto para seguimiento de experimentos, observabilidad y evaluación, para construir aplicaciones de IA/LLM con confianza.', - }, - databricks: { - title: 'Databricks', - description: 'Databricks ofrece MLflow completamente gestionado con fuerte gobernanza y seguridad para almacenar datos de trazabilidad.', - }, - tencent: { - title: 'Tencent APM', - description: 'Tencent Application Performance Monitoring proporciona rastreo integral y análisis multidimensional para aplicaciones LLM.', - }, - }, - answerIcon: { - title: 'Usar el icono de la aplicación web para reemplazar 🤖', - descriptionInExplore: 'Si se debe usar el icono de la aplicación web para reemplazarlo 🤖 en Explore', - description: 'Si se va a usar el icono de la aplicación web para reemplazarlo 🤖 en la aplicación compartida', - }, - importFromDSLUrl: 'URL de origen', - importFromDSLUrlPlaceholder: 'Pegar enlace DSL aquí', - dslUploader: { - button: 'Arrastrar y soltar archivo, o', - browse: 'Examinar', - }, - importFromDSL: 'Importar desde DSL', - importFromDSLFile: 'Desde el archivo DSL', - mermaid: { - handDrawn: 'Dibujado a mano', - classic: 'Clásico', - }, - openInExplore: 'Abrir en Explorar', - newAppFromTemplate: { - sidebar: { - Programming: 'Programación', - Agent: 'Agente', - Writing: 'Escritura', - Assistant: 'Asistente', - Recommended: 'Recomendado', - HR: 'HR', - Workflow: 'Flujo de trabajo', - }, - byCategories: 'POR CATEGORÍAS', - searchAllTemplate: 'Buscar todas las plantillas...', - }, - showMyCreatedAppsOnly: 'Mostrar solo mis aplicaciones creadas', - appSelector: { - label: 'APLICACIÓN', - placeholder: 'Selecciona una aplicación...', - noParams: 'No se necesitan parámetros', - params: 'PARÁMETROS DE LA APLICACIÓN', - }, - structOutput: { - notConfiguredTip: 'La salida estructurada aún no ha sido configurada.', - required: 'Requerido', - configure: 'Configurar', - LLMResponse: 'Respuesta del LLM', - moreFillTip: 'Mostrando un máximo de 10 niveles de anidación', - modelNotSupportedTip: 'El modelo actual no admite esta función y se degrada automáticamente a inyección de comandos.', - structuredTip: 'Las Salidas Estructuradas son una función que garantiza que el modelo siempre generará respuestas que se ajusten a su esquema JSON proporcionado.', - modelNotSupported: 'Modelo no soportado', - structured: 'sistemático', - }, - accessItemsDescription: { - anyone: 'Cualquiera puede acceder a la aplicación web.', - specific: 'Solo grupos o miembros específicos pueden acceder a la aplicación web', - organization: 'Cualquiera en la organización puede acceder a la aplicación web', - external: 'Solo los usuarios externos autenticados pueden acceder a la aplicación web.', - }, - accessControlDialog: { - accessItems: { - anyone: 'Cualquiera con el enlace', - specific: 'Grupos o miembros específicos', - organization: 'Solo miembros dentro de la empresa', - external: 'Usuarios externos autenticados', - }, - operateGroupAndMember: { - searchPlaceholder: 'Buscar grupos y miembros', - allMembers: 'Todos los miembros', - expand: 'Expandir', - noResult: 'Sin resultado', - }, - title: 'Control de Acceso a la Aplicación Web', - description: 'Establecer permisos de acceso a la aplicación web', - accessLabel: '¿Quién tiene acceso?', - groups_one: '{{count}} GRUPO', - groups_other: '{{count}} GRUPOS', - members_one: '{{count}} MIEMBRO', - members_other: '{{count}} MIEMBROS', - noGroupsOrMembers: 'No grupos o miembros seleccionados', - webAppSSONotEnabledTip: 'Por favor, contacte al administrador de la empresa para configurar el método de autenticación de la aplicación web.', - updateSuccess: 'Actualización exitosa', - }, - publishApp: { - title: '¿Quién puede acceder a la aplicación web?', - notSet: 'No establecido', - notSetDesc: 'Actualmente nadie puede acceder a la aplicación web. Por favor, configure los permisos.', - }, - accessControl: 'Control de Acceso a la Aplicación Web', - noAccessPermission: 'No se permite el acceso a la aplicación web', - maxActiveRequestsPlaceholder: 'Introduce 0 para ilimitado', - maxActiveRequests: 'Máximas solicitudes concurrentes', - maxActiveRequestsTip: 'Número máximo de solicitudes activas concurrentes por aplicación (0 para ilimitado)', - gotoAnything: { - actions: { - searchApplications: 'Buscar aplicaciones', - searchKnowledgeBasesDesc: 'Busque y navegue por sus bases de conocimiento', - searchWorkflowNodes: 'Buscar nodos de flujo de trabajo', - searchPlugins: 'Buscar complementos', - searchWorkflowNodesDesc: 'Buscar y saltar a nodos en el flujo de trabajo actual por nombre o tipo', - searchKnowledgeBases: 'Buscar en las bases de conocimiento', - searchApplicationsDesc: 'Buscar y navegar a sus aplicaciones', - searchPluginsDesc: 'Busca y navega a tus plugins', - searchWorkflowNodesHelp: 'Esta función solo funciona cuando se visualiza un flujo de trabajo. Primero vaya a un flujo de trabajo.', - languageCategoryTitle: 'Idioma', - runDesc: 'Ejecutar comandos rápidos (tema, idioma, ...)', - runTitle: 'Comandos', - themeSystem: 'Tema del sistema', - themeDark: 'Tema oscuro', - themeLight: 'Tema Claro', - themeCategoryTitle: 'Tema', - themeLightDesc: 'Usar apariencia clara', - themeSystemDesc: 'Sigue la apariencia de tu sistema operativo', - languageChangeDesc: 'Cambiar el idioma de la interfaz', - themeDarkDesc: 'Usar apariencia oscura', - languageCategoryDesc: 'Cambiar el idioma de la interfaz', - themeCategoryDesc: 'Cambiar el tema de la aplicación', - slashDesc: 'Ejecuta comandos como /tema, /idioma', - accountDesc: 'Navegar a la página de cuenta', - communityDesc: 'Abrir comunidad de Discord', - feedbackDesc: 'Discusiones de retroalimentación de la comunidad abierta', - docDesc: 'Abrir la documentación de ayuda', - zenTitle: 'Zen Mode', - zenDesc: 'Toggle canvas focus mode', - }, - emptyState: { - noAppsFound: 'No se encontraron aplicaciones', - noPluginsFound: 'No se encontraron complementos', - noWorkflowNodesFound: 'No se encontraron nodos de flujo de trabajo', - noKnowledgeBasesFound: 'No se han encontrado bases de conocimiento', - tryDifferentTerm: 'Intenta un término de búsqueda diferente o elimina el filtro {{mode}}', - trySpecificSearch: 'Prueba {{shortcuts}} para búsquedas específicas', - }, - groups: { - apps: 'Aplicaciones', - workflowNodes: 'Nodos de flujo de trabajo', - knowledgeBases: 'Bases de conocimiento', - plugins: 'Complementos', - commands: 'Comandos', - }, - clearToSearchAll: 'Borrar @ para buscar todo', - noResults: 'No se han encontrado resultados', - searching: 'Buscando...', - searchTemporarilyUnavailable: 'La búsqueda no está disponible temporalmente', - searchFailed: 'Error de búsqueda', - useAtForSpecific: 'Use @ para tipos específicos', - searchPlaceholder: 'Busque o escriba @ para los comandos...', - searchTitle: 'Busca cualquier cosa', - someServicesUnavailable: 'Algunos servicios de búsqueda no están disponibles', - servicesUnavailableMessage: 'Algunos servicios de búsqueda pueden estar experimentando problemas. Inténtalo de nuevo en un momento.', - searchHint: 'Empieza a escribir para buscar todo al instante', - commandHint: 'Escriba @ para buscar por categoría', - selectSearchType: 'Elige qué buscar', - resultCount: '{{count}} resultado', - resultCount_other: '{{count}} resultados', - inScope: 'en {{scope}}s', - tryDifferentSearch: 'Prueba con un término de búsqueda diferente', - noMatchingCommands: 'No se encontraron comandos coincidentes', - slashHint: 'Escribe / para ver todos los comandos disponibles', - selectToNavigate: 'Seleccionar para navegar', - pressEscToClose: 'Presiona ESC para cerrar', - startTyping: 'Empieza a escribir para buscar', - tips: 'Presiona ↑↓ para navegar', - }, - notPublishedYet: 'La aplicación aún no está publicada', - noUserInputNode: 'Nodo de entrada de usuario faltante', -} - -export default translation diff --git a/web/i18n/es-ES/billing.json b/web/i18n/es-ES/billing.json new file mode 100644 index 0000000000..db694392f5 --- /dev/null +++ b/web/i18n/es-ES/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "Plan Actual", + "upgradeBtn": { + "plain": "Actualizar Plan", + "encourage": "Actualizar Ahora", + "encourageShort": "Actualizar" + }, + "viewBilling": "Administrar facturación y suscripciones", + "buyPermissionDeniedTip": "Por favor, contacta al administrador de tu empresa para suscribirte", + "plansCommon": { + "yearlyTip": "¡Obtén 2 meses gratis al suscribirte anualmente!", + "mostPopular": "Más Popular", + "planRange": { + "monthly": "Mensual", + "yearly": "Anual" + }, + "month": "mes", + "year": "año", + "save": "Ahorra ", + "free": "Gratis", + "currentPlan": "Plan Actual", + "contractSales": "Contactar ventas", + "contractOwner": "Contactar al administrador del equipo", + "startForFree": "Empezar gratis", + "contactSales": "Contactar Ventas", + "talkToSales": "Hablar con Ventas", + "modelProviders": "Proveedores de Modelos", + "annotationQuota": "Cuota de Anotación", + "buildApps": "Crear Aplicaciones", + "vectorSpace": "Espacio Vectorial", + "vectorSpaceTooltip": "El Espacio Vectorial es el sistema de memoria a largo plazo necesario para que los LLMs comprendan tus datos.", + "documentProcessingPriority": "Prioridad de Procesamiento de Documentos", + "documentProcessingPriorityTip": "Para una mayor prioridad en el procesamiento de documentos, actualice su plan.", + "documentProcessingPriorityUpgrade": "Procesa más datos con mayor precisión y velocidad.", + "priority": { + "standard": "Estándar", + "priority": "Prioridad", + "top-priority": "Prioridad Máxima" + }, + "logsHistory": "Historial de Registros", + "customTools": "Herramientas Personalizadas", + "unavailable": "No disponible", + "days": "días", + "unlimited": "Ilimitado", + "support": "Soporte", + "supportItems": { + "communityForums": "Foros Comunitarios", + "emailSupport": "Soporte por Correo Electrónico", + "priorityEmail": "Soporte Prioritario por Correo Electrónico y Chat", + "logoChange": "Cambio de Logotipo", + "SSOAuthentication": "Autenticación SSO", + "personalizedSupport": "Soporte Personalizado", + "dedicatedAPISupport": "Soporte API Dedicado", + "customIntegration": "Integración y Soporte Personalizado", + "ragAPIRequest": "Solicitudes API RAG", + "bulkUpload": "Carga Masiva de Documentos", + "agentMode": "Modo Agente", + "workflow": "Flujo de Trabajo", + "llmLoadingBalancing": "Balanceo de Carga LLM", + "llmLoadingBalancingTooltip": "Agrega múltiples claves API a los modelos, evitando efectivamente los límites de velocidad de API." + }, + "comingSoon": "Próximamente", + "member": "Miembro", + "memberAfter": "Miembro", + "messageRequest": { + "title": "Créditos de Mensajes", + "tooltip": "Cuotas de invocación de mensajes para varios planes utilizando modelos de OpenAI (excepto gpt4). Los mensajes que excedan el límite utilizarán tu clave API de OpenAI.", + "titlePerMonth": "{{count,number}} mensajes/mes" + }, + "annotatedResponse": { + "title": "Límites de Cuota de Anotación", + "tooltip": "Edición manual y anotación de respuestas proporciona habilidades de respuesta a preguntas personalizadas y de alta calidad para aplicaciones (aplicable solo en aplicaciones de chat)." + }, + "ragAPIRequestTooltip": "Se refiere al número de llamadas API que invocan solo las capacidades de procesamiento de base de conocimientos de Dify.", + "receiptInfo": "Solo el propietario del equipo y el administrador del equipo pueden suscribirse y ver la información de facturación.", + "priceTip": "por espacio de trabajo/", + "teamMember_one": "{{count, número}} Miembro del Equipo", + "getStarted": "Comenzar", + "apiRateLimitUnit": "{{count, número}}", + "freeTrialTipSuffix": "No se requiere tarjeta de crédito", + "unlimitedApiRate": "Sin límite de tasa de API", + "apiRateLimit": "Límite de tasa de API", + "documentsTooltip": "Cuota sobre el número de documentos importados desde la Fuente de Datos del Conocimiento.", + "comparePlanAndFeatures": "Compara planes y características", + "cloud": "Servicio en la nube", + "teamMember_other": "{{count,number}} Miembros del equipo", + "annualBilling": "Facturación Anual", + "self": "Autoalojado", + "freeTrialTip": "prueba gratuita de 200 llamadas de OpenAI.", + "teamWorkspace": "{{count,number}} Espacio de Trabajo en Equipo", + "documents": "{{count,number}} Documentos de Conocimiento", + "documentsRequestQuota": "{{count,number}}/min Límite de tasa de solicitud de conocimiento", + "freeTrialTipPrefix": "Regístrate y obtén un", + "apiRateLimitTooltip": "El límite de tasa de la API se aplica a todas las solicitudes realizadas a través de la API de Dify, incluidos la generación de texto, las conversaciones de chat, las ejecuciones de flujo de trabajo y el procesamiento de documentos.", + "documentsRequestQuotaTooltip": "Especifica el número total de acciones que un espacio de trabajo puede realizar por minuto dentro de la base de conocimientos, incluyendo la creación, eliminación, actualización de conjuntos de datos, carga de documentos, modificaciones, archivo y consultas a la base de conocimientos. Esta métrica se utiliza para evaluar el rendimiento de las solicitudes a la base de conocimientos. Por ejemplo, si un usuario de Sandbox realiza 10 pruebas consecutivas en un minuto, su espacio de trabajo será temporalmente restringido de realizar las siguientes acciones durante el siguiente minuto: creación de conjuntos de datos, eliminación, actualizaciones y carga o modificaciones de documentos.", + "startBuilding": "Empezar a construir", + "taxTip": "Todos los precios de suscripción (mensuales/anuales) excluyen los impuestos aplicables (por ejemplo, IVA, impuesto sobre ventas).", + "taxTipSecond": "Si su región no tiene requisitos fiscales aplicables, no se mostrará ningún impuesto en su pago y no se le cobrará ninguna tarifa adicional durante todo el período de suscripción.", + "triggerEvents": { + "unlimited": "Eventos de Disparo Ilimitados", + "tooltip": "El número de eventos que inician automáticamente flujos de trabajo mediante desencadenadores de Plugin, Programación o Webhook.", + "sandbox": "{{count,number}} Eventos de activación", + "professional": "{{count,number}} Eventos activadores/mes" + }, + "workflowExecution": { + "tooltip": "Prioridad y velocidad de la cola de ejecución de flujos de trabajo.", + "standard": "Ejecución estándar del flujo de trabajo", + "priority": "Ejecución de flujo de trabajo prioritaria", + "faster": "Ejecución de flujo de trabajo más rápida" + }, + "startNodes": { + "unlimited": "Disparadores/flujo de trabajo ilimitados", + "limited": "Hasta {{count}} Disparadores/flujo de trabajo" + }, + "title": { + "plans": "planes", + "description": "Selecciona el plan que mejor se adapte a las necesidades de tu equipo." + } + }, + "plans": { + "sandbox": { + "name": "Sandbox", + "description": "Prueba gratuita de 200 veces GPT", + "for": "Prueba gratuita de capacidades básicas" + }, + "professional": { + "name": "Profesional", + "description": "Para individuos y pequeños equipos que desean desbloquear más poder de manera asequible.", + "for": "Para desarrolladores independientes/equipos pequeños" + }, + "team": { + "name": "Equipo", + "description": "Colabora sin límites y disfruta de un rendimiento de primera categoría.", + "for": "Para equipos de tamaño mediano" + }, + "enterprise": { + "name": "Empresa", + "description": "Obtén capacidades completas y soporte para sistemas críticos a gran escala.", + "includesTitle": "Todo en el plan Equipo, más:", + "btnText": "Contactar ventas", + "for": "Para equipos de gran tamaño", + "price": "Personalizado", + "priceTip": "Facturación Anual Solo", + "features": [ + "Soluciones de Despliegue Escalables de Nivel Empresarial", + "Autorización de Licencia Comercial", + "Funciones Exclusivas para Empresas", + "Múltiples espacios de trabajo y gestión empresarial", + "SSO", + "Acuerdos de nivel de servicio negociados por socios de Dify", + "Seguridad y Controles Avanzados", + "Actualizaciones y Mantenimiento por Dify Oficialmente", + "Soporte Técnico Profesional" + ] + }, + "community": { + "includesTitle": "Características gratuitas:", + "for": "Para usuarios individuales, pequeños equipos o proyectos no comerciales", + "price": "Gratis", + "btnText": "Comienza con la Comunidad", + "name": "Comunidad", + "description": "Para usuarios individuales, pequeños equipos o proyectos no comerciales", + "features": [ + "Todas las características principales se publican en el repositorio público", + "Espacio de trabajo único", + "Cumple con la Licencia de Código Abierto de Dify" + ] + }, + "premium": { + "description": "Para organizaciones y equipos de tamaño mediano", + "comingSoon": "Soporte de Microsoft Azure y Google Cloud disponible próximamente", + "btnText": "Obtén Premium en", + "priceTip": "Basado en el Mercado de la Nube", + "price": "Escalable", + "includesTitle": "Todo de Community, además:", + "name": "Premium", + "for": "Para organizaciones y equipos de tamaño mediano", + "features": [ + "Confiabilidad autogestionada por varios proveedores de la nube", + "Espacio de trabajo único", + "Personalización de Logotipo y Marca de la Aplicación Web", + "Soporte prioritario por correo electrónico y chat" + ] + } + }, + "vectorSpace": { + "fullTip": "El Espacio Vectorial está lleno.", + "fullSolution": "Actualiza tu plan para obtener más espacio." + }, + "apps": { + "fullTip1des": "Has alcanzado el límite de aplicaciones de construcción en este plan", + "fullTip2des": "Se recomienda limpiar las aplicaciones inactivas para liberar espacio de uso, o contactarnos.", + "fullTip1": "Actualiza para crear más aplicaciones", + "fullTip2": "Límite de plan alcanzado", + "contactUs": "Contáctanos" + }, + "annotatedResponse": { + "fullTipLine1": "Actualiza tu plan para", + "fullTipLine2": "anotar más conversaciones.", + "quotaTitle": "Cuota de Respuesta Anotada" + }, + "usagePage": { + "buildApps": "Construir aplicaciones", + "documentsUploadQuota": "Cuota de carga de documentos", + "vectorSpace": "Almacenamiento de Datos de Conocimiento", + "teamMembers": "Miembros del equipo", + "annotationQuota": "Cuota de anotación", + "vectorSpaceTooltip": "Los documentos con el modo de indexación de alta calidad consumirán recursos de Almacenamiento de Datos de Conocimiento. Cuando el Almacenamiento de Datos de Conocimiento alcanza el límite, no se subirán nuevos documentos.", + "triggerEvents": "Eventos desencadenantes", + "perMonth": "por mes", + "resetsIn": "Se reinicia en {{count,number}} días" + }, + "teamMembers": "Miembros del equipo", + "triggerLimitModal": { + "dismiss": "Descartar", + "upgrade": "Actualizar", + "usageTitle": "EVENTOS DESENCADENANTES", + "title": "Actualiza para desbloquear más eventos desencadenantes", + "description": "Has alcanzado el límite de activadores de eventos de flujo de trabajo para este plan." + }, + "viewBillingTitle": "Facturación y Suscripciones", + "viewBillingDescription": "Gestiona métodos de pago, facturas y cambios de suscripción", + "viewBillingAction": "Gestionar", + "upgrade": { + "uploadMultiplePages": { + "title": "Actualiza para subir varios documentos a la vez", + "description": "Has alcanzado el límite de carga: solo se puede seleccionar y subir un documento a la vez en tu plan actual." + }, + "uploadMultipleFiles": { + "title": "Actualiza para desbloquear la carga de documentos en lote", + "description": "Carga en lote más documentos a la vez para ahorrar tiempo y mejorar la eficiencia." + }, + "addChunks": { + "title": "Actualiza para seguir agregando fragmentos", + "description": "Has alcanzado el límite de agregar fragmentos para este plan." + } + } +} diff --git a/web/i18n/es-ES/billing.ts b/web/i18n/es-ES/billing.ts deleted file mode 100644 index 37c8701948..0000000000 --- a/web/i18n/es-ES/billing.ts +++ /dev/null @@ -1,221 +0,0 @@ -const translation = { - currentPlan: 'Plan Actual', - upgradeBtn: { - plain: 'Actualizar Plan', - encourage: 'Actualizar Ahora', - encourageShort: 'Actualizar', - }, - viewBilling: 'Administrar facturación y suscripciones', - buyPermissionDeniedTip: 'Por favor, contacta al administrador de tu empresa para suscribirte', - plansCommon: { - yearlyTip: '¡Obtén 2 meses gratis al suscribirte anualmente!', - mostPopular: 'Más Popular', - planRange: { - monthly: 'Mensual', - yearly: 'Anual', - }, - month: 'mes', - year: 'año', - save: 'Ahorra ', - free: 'Gratis', - currentPlan: 'Plan Actual', - contractSales: 'Contactar ventas', - contractOwner: 'Contactar al administrador del equipo', - startForFree: 'Empezar gratis', - contactSales: 'Contactar Ventas', - talkToSales: 'Hablar con Ventas', - modelProviders: 'Proveedores de Modelos', - annotationQuota: 'Cuota de Anotación', - buildApps: 'Crear Aplicaciones', - vectorSpace: 'Espacio Vectorial', - vectorSpaceTooltip: 'El Espacio Vectorial es el sistema de memoria a largo plazo necesario para que los LLMs comprendan tus datos.', - documentProcessingPriority: 'Prioridad de Procesamiento de Documentos', - documentProcessingPriorityTip: 'Para una mayor prioridad en el procesamiento de documentos, actualice su plan.', - documentProcessingPriorityUpgrade: 'Procesa más datos con mayor precisión y velocidad.', - priority: { - 'standard': 'Estándar', - 'priority': 'Prioridad', - 'top-priority': 'Prioridad Máxima', - }, - logsHistory: 'Historial de Registros', - customTools: 'Herramientas Personalizadas', - unavailable: 'No disponible', - days: 'días', - unlimited: 'Ilimitado', - support: 'Soporte', - supportItems: { - communityForums: 'Foros Comunitarios', - emailSupport: 'Soporte por Correo Electrónico', - priorityEmail: 'Soporte Prioritario por Correo Electrónico y Chat', - logoChange: 'Cambio de Logotipo', - SSOAuthentication: 'Autenticación SSO', - personalizedSupport: 'Soporte Personalizado', - dedicatedAPISupport: 'Soporte API Dedicado', - customIntegration: 'Integración y Soporte Personalizado', - ragAPIRequest: 'Solicitudes API RAG', - bulkUpload: 'Carga Masiva de Documentos', - agentMode: 'Modo Agente', - workflow: 'Flujo de Trabajo', - llmLoadingBalancing: 'Balanceo de Carga LLM', - llmLoadingBalancingTooltip: 'Agrega múltiples claves API a los modelos, evitando efectivamente los límites de velocidad de API.', - }, - comingSoon: 'Próximamente', - member: 'Miembro', - memberAfter: 'Miembro', - messageRequest: { - title: 'Créditos de Mensajes', - tooltip: 'Cuotas de invocación de mensajes para varios planes utilizando modelos de OpenAI (excepto gpt4). Los mensajes que excedan el límite utilizarán tu clave API de OpenAI.', - titlePerMonth: '{{count,number}} mensajes/mes', - }, - annotatedResponse: { - title: 'Límites de Cuota de Anotación', - tooltip: 'Edición manual y anotación de respuestas proporciona habilidades de respuesta a preguntas personalizadas y de alta calidad para aplicaciones (aplicable solo en aplicaciones de chat).', - }, - ragAPIRequestTooltip: 'Se refiere al número de llamadas API que invocan solo las capacidades de procesamiento de base de conocimientos de Dify.', - receiptInfo: 'Solo el propietario del equipo y el administrador del equipo pueden suscribirse y ver la información de facturación.', - priceTip: 'por espacio de trabajo/', - teamMember_one: '{{count, número}} Miembro del Equipo', - getStarted: 'Comenzar', - apiRateLimitUnit: '{{count, número}}', - freeTrialTipSuffix: 'No se requiere tarjeta de crédito', - unlimitedApiRate: 'Sin límite de tasa de API', - apiRateLimit: 'Límite de tasa de API', - documentsTooltip: 'Cuota sobre el número de documentos importados desde la Fuente de Datos del Conocimiento.', - comparePlanAndFeatures: 'Compara planes y características', - cloud: 'Servicio en la nube', - teamMember_other: '{{count,number}} Miembros del equipo', - annualBilling: 'Facturación Anual', - self: 'Autoalojado', - freeTrialTip: 'prueba gratuita de 200 llamadas de OpenAI.', - teamWorkspace: '{{count,number}} Espacio de Trabajo en Equipo', - documents: '{{count,number}} Documentos de Conocimiento', - documentsRequestQuota: '{{count,number}}/min Límite de tasa de solicitud de conocimiento', - freeTrialTipPrefix: 'Regístrate y obtén un', - apiRateLimitTooltip: 'El límite de tasa de la API se aplica a todas las solicitudes realizadas a través de la API de Dify, incluidos la generación de texto, las conversaciones de chat, las ejecuciones de flujo de trabajo y el procesamiento de documentos.', - documentsRequestQuotaTooltip: 'Especifica el número total de acciones que un espacio de trabajo puede realizar por minuto dentro de la base de conocimientos, incluyendo la creación, eliminación, actualización de conjuntos de datos, carga de documentos, modificaciones, archivo y consultas a la base de conocimientos. Esta métrica se utiliza para evaluar el rendimiento de las solicitudes a la base de conocimientos. Por ejemplo, si un usuario de Sandbox realiza 10 pruebas consecutivas en un minuto, su espacio de trabajo será temporalmente restringido de realizar las siguientes acciones durante el siguiente minuto: creación de conjuntos de datos, eliminación, actualizaciones y carga o modificaciones de documentos.', - startBuilding: 'Empezar a construir', - taxTip: 'Todos los precios de suscripción (mensuales/anuales) excluyen los impuestos aplicables (por ejemplo, IVA, impuesto sobre ventas).', - taxTipSecond: 'Si su región no tiene requisitos fiscales aplicables, no se mostrará ningún impuesto en su pago y no se le cobrará ninguna tarifa adicional durante todo el período de suscripción.', - triggerEvents: { - unlimited: 'Eventos de Disparo Ilimitados', - tooltip: 'El número de eventos que inician automáticamente flujos de trabajo mediante desencadenadores de Plugin, Programación o Webhook.', - sandbox: '{{count,number}} Eventos de activación', - professional: '{{count,number}} Eventos activadores/mes', - }, - workflowExecution: { - tooltip: 'Prioridad y velocidad de la cola de ejecución de flujos de trabajo.', - standard: 'Ejecución estándar del flujo de trabajo', - priority: 'Ejecución de flujo de trabajo prioritaria', - faster: 'Ejecución de flujo de trabajo más rápida', - }, - startNodes: { - unlimited: 'Disparadores/flujo de trabajo ilimitados', - limited: 'Hasta {{count}} Disparadores/flujo de trabajo', - }, - title: { - plans: 'planes', - description: 'Selecciona el plan que mejor se adapte a las necesidades de tu equipo.', - }, - }, - plans: { - sandbox: { - name: 'Sandbox', - description: 'Prueba gratuita de 200 veces GPT', - for: 'Prueba gratuita de capacidades básicas', - }, - professional: { - name: 'Profesional', - description: 'Para individuos y pequeños equipos que desean desbloquear más poder de manera asequible.', - for: 'Para desarrolladores independientes/equipos pequeños', - }, - team: { - name: 'Equipo', - description: 'Colabora sin límites y disfruta de un rendimiento de primera categoría.', - for: 'Para equipos de tamaño mediano', - }, - enterprise: { - name: 'Empresa', - description: 'Obtén capacidades completas y soporte para sistemas críticos a gran escala.', - includesTitle: 'Todo en el plan Equipo, más:', - btnText: 'Contactar ventas', - for: 'Para equipos de gran tamaño', - price: 'Personalizado', - priceTip: 'Facturación Anual Solo', - features: ['Soluciones de Despliegue Escalables de Nivel Empresarial', 'Autorización de Licencia Comercial', 'Funciones Exclusivas para Empresas', 'Múltiples espacios de trabajo y gestión empresarial', 'SSO', 'Acuerdos de nivel de servicio negociados por socios de Dify', 'Seguridad y Controles Avanzados', 'Actualizaciones y Mantenimiento por Dify Oficialmente', 'Soporte Técnico Profesional'], - }, - community: { - includesTitle: 'Características gratuitas:', - for: 'Para usuarios individuales, pequeños equipos o proyectos no comerciales', - price: 'Gratis', - btnText: 'Comienza con la Comunidad', - name: 'Comunidad', - description: 'Para usuarios individuales, pequeños equipos o proyectos no comerciales', - features: ['Todas las características principales se publican en el repositorio público', 'Espacio de trabajo único', 'Cumple con la Licencia de Código Abierto de Dify'], - }, - premium: { - description: 'Para organizaciones y equipos de tamaño mediano', - comingSoon: 'Soporte de Microsoft Azure y Google Cloud disponible próximamente', - btnText: 'Obtén Premium en', - priceTip: 'Basado en el Mercado de la Nube', - price: 'Escalable', - includesTitle: 'Todo de Community, además:', - name: 'Premium', - for: 'Para organizaciones y equipos de tamaño mediano', - features: ['Confiabilidad autogestionada por varios proveedores de la nube', 'Espacio de trabajo único', 'Personalización de Logotipo y Marca de la Aplicación Web', 'Soporte prioritario por correo electrónico y chat'], - }, - }, - vectorSpace: { - fullTip: 'El Espacio Vectorial está lleno.', - fullSolution: 'Actualiza tu plan para obtener más espacio.', - }, - apps: { - fullTip1des: 'Has alcanzado el límite de aplicaciones de construcción en este plan', - fullTip2des: 'Se recomienda limpiar las aplicaciones inactivas para liberar espacio de uso, o contactarnos.', - fullTip1: 'Actualiza para crear más aplicaciones', - fullTip2: 'Límite de plan alcanzado', - contactUs: 'Contáctanos', - }, - annotatedResponse: { - fullTipLine1: 'Actualiza tu plan para', - fullTipLine2: 'anotar más conversaciones.', - quotaTitle: 'Cuota de Respuesta Anotada', - }, - usagePage: { - buildApps: 'Construir aplicaciones', - documentsUploadQuota: 'Cuota de carga de documentos', - vectorSpace: 'Almacenamiento de Datos de Conocimiento', - teamMembers: 'Miembros del equipo', - annotationQuota: 'Cuota de anotación', - vectorSpaceTooltip: 'Los documentos con el modo de indexación de alta calidad consumirán recursos de Almacenamiento de Datos de Conocimiento. Cuando el Almacenamiento de Datos de Conocimiento alcanza el límite, no se subirán nuevos documentos.', - triggerEvents: 'Eventos desencadenantes', - perMonth: 'por mes', - resetsIn: 'Se reinicia en {{count,number}} días', - }, - teamMembers: 'Miembros del equipo', - triggerLimitModal: { - dismiss: 'Descartar', - upgrade: 'Actualizar', - usageTitle: 'EVENTOS DESENCADENANTES', - title: 'Actualiza para desbloquear más eventos desencadenantes', - description: 'Has alcanzado el límite de activadores de eventos de flujo de trabajo para este plan.', - }, - viewBillingTitle: 'Facturación y Suscripciones', - viewBillingDescription: 'Gestiona métodos de pago, facturas y cambios de suscripción', - viewBillingAction: 'Gestionar', - upgrade: { - uploadMultiplePages: { - title: 'Actualiza para subir varios documentos a la vez', - description: 'Has alcanzado el límite de carga: solo se puede seleccionar y subir un documento a la vez en tu plan actual.', - }, - uploadMultipleFiles: { - title: 'Actualiza para desbloquear la carga de documentos en lote', - description: 'Carga en lote más documentos a la vez para ahorrar tiempo y mejorar la eficiencia.', - }, - addChunks: { - title: 'Actualiza para seguir agregando fragmentos', - description: 'Has alcanzado el límite de agregar fragmentos para este plan.', - }, - }, -} - -export default translation diff --git a/web/i18n/es-ES/common.json b/web/i18n/es-ES/common.json new file mode 100644 index 0000000000..eaa971d49e --- /dev/null +++ b/web/i18n/es-ES/common.json @@ -0,0 +1,785 @@ +{ + "api": { + "success": "Éxito", + "actionSuccess": "Acción exitosa", + "saved": "Guardado", + "create": "Creado", + "remove": "Eliminado", + "actionFailed": "Acción fallida" + }, + "operation": { + "create": "Crear", + "confirm": "Confirmar", + "cancel": "Cancelar", + "clear": "Limpiar", + "save": "Guardar", + "saveAndEnable": "Guardar y habilitar", + "edit": "Editar", + "add": "Agregar", + "added": "Agregado", + "refresh": "Reiniciar", + "reset": "Restablecer", + "search": "Buscar", + "change": "Cambiar", + "remove": "Eliminar", + "send": "Enviar", + "copy": "Copiar", + "lineBreak": "Salto de línea", + "sure": "Estoy seguro", + "download": "Descargar", + "delete": "Eliminar", + "settings": "Configuraciones", + "setup": "Configurar", + "getForFree": "Obtener gratis", + "reload": "Recargar", + "ok": "OK", + "log": "Registro", + "learnMore": "Aprender más", + "params": "Parámetros", + "duplicate": "Duplicar", + "rename": "Renombrar", + "audioSourceUnavailable": "AudioSource no está disponible", + "zoomOut": "Alejar", + "zoomIn": "Acercar", + "openInNewTab": "Abrir en una nueva pestaña", + "copyImage": "Copiar imagen", + "viewMore": "VER MÁS", + "regenerate": "Regenerar", + "close": "Cerrar", + "saveAndRegenerate": "Guardar y regenerar fragmentos secundarios", + "view": "Vista", + "submit": "Enviar", + "skip": "Navío", + "imageCopied": "Imagen copiada", + "deleteApp": "Eliminar aplicación", + "in": "en", + "viewDetails": "Ver detalles", + "copied": "Copiado", + "more": "Más", + "downloadSuccess": "Descarga completada.", + "downloadFailed": "La descarga ha fallado. Por favor, inténtalo de nuevo más tarde.", + "format": "Formato", + "deSelectAll": "Deseleccionar todo", + "selectAll": "Seleccionar todo", + "config": "Config", + "confirmAction": "Por favor, confirme su acción.", + "deleteConfirmTitle": "¿Eliminar?", + "yes": "Sí", + "no": "No", + "noSearchResults": "No se encontraron {{content}}", + "resetKeywords": "Restablecer palabras clave", + "selectCount": "{{count}} Seleccionado", + "searchCount": "Encuentra {{count}} {{content}}", + "noSearchCount": "0 {{content}}", + "now": "Ahora" + }, + "errorMsg": { + "fieldRequired": "{{field}} es requerido", + "urlError": "la URL debe comenzar con http:// o https://" + }, + "placeholder": { + "input": "Por favor ingresa", + "select": "Por favor selecciona", + "search": "Buscar..." + }, + "voice": { + "language": { + "zhHans": "Chino", + "zhHant": "Chino Tradicional", + "enUS": "Inglés", + "deDE": "Alemán", + "frFR": "Francés", + "esES": "Español", + "itIT": "Italiano", + "thTH": "Tailandés", + "idID": "Indonesio", + "jaJP": "Japonés", + "koKR": "Coreano", + "ptBR": "Portugués", + "ruRU": "Ruso", + "ukUA": "Ucraniano", + "viVN": "Vietnamita", + "plPL": "Polaco", + "roRO": "Rumano", + "hiIN": "Hindi", + "trTR": "Turco", + "faIR": "Persa", + "slSI": "Esloveno", + "arTN": "Árabe tunecino" + } + }, + "unit": { + "char": "caracteres" + }, + "actionMsg": { + "noModification": "No hay modificaciones en este momento.", + "modifiedSuccessfully": "Modificado exitosamente", + "modifiedUnsuccessfully": "Modificación no exitosa", + "copySuccessfully": "Copiado exitosamente", + "paySucceeded": "Pago exitoso", + "payCancelled": "Pago cancelado", + "generatedSuccessfully": "Generado exitosamente", + "generatedUnsuccessfully": "Generación no exitosa" + }, + "model": { + "params": { + "temperature": "Temperatura", + "temperatureTip": "Controla la aleatoriedad: Reducir resulta en completaciones menos aleatorias. A medida que la temperatura se acerca a cero, el modelo se vuelve determinista y repetitivo.", + "top_p": "Top P", + "top_pTip": "Controla la diversidad mediante el muestreo de núcleo: 0.5 significa que se consideran la mitad de todas las opciones ponderadas por probabilidad.", + "presence_penalty": "Penalización por presencia", + "presence_penaltyTip": "Cuánto penalizar los nuevos tokens según si aparecen en el texto hasta ahora.\nAumenta la probabilidad del modelo de hablar sobre nuevos temas.", + "frequency_penalty": "Penalización por frecuencia", + "frequency_penaltyTip": "Cuánto penalizar los nuevos tokens según su frecuencia existente en el texto hasta ahora.\nDisminuye la probabilidad del modelo de repetir la misma línea literalmente.", + "max_tokens": "Tokens máximos", + "max_tokensTip": "Se usa para limitar la longitud máxima de la respuesta, en tokens. \nValores más grandes pueden limitar el espacio disponible para palabras de indicación, registros de chat y Conocimiento. \nSe recomienda configurarlo por debajo de dos tercios\ngpt-4-1106-preview, gpt-4-vision-preview tokens máximos (entrada 128k salida 4k)", + "maxTokenSettingTip": "Tu configuración de tokens máximos es alta, lo que puede limitar el espacio para indicaciones, consultas y datos. Considera configurarlo por debajo de 2/3.", + "setToCurrentModelMaxTokenTip": "Tokens máximos actualizados al 80% del máximo de tokens del modelo actual {{maxToken}}.", + "stop_sequences": "Secuencias de parada", + "stop_sequencesTip": "Hasta cuatro secuencias donde la API dejará de generar más tokens. El texto devuelto no contendrá la secuencia de parada.", + "stop_sequencesPlaceholder": "Ingresa la secuencia y presiona Tab" + }, + "tone": { + "Creative": "Creativo", + "Balanced": "Equilibrado", + "Precise": "Preciso", + "Custom": "Personalizado" + }, + "addMoreModel": "Ir a configuraciones para agregar más modelos", + "capabilities": "Capacidades multimodales", + "settingsLink": "Configuración del proveedor de modelos" + }, + "menus": { + "status": "beta", + "explore": "Explorar", + "apps": "Estudio", + "plugins": "Plugins", + "pluginsTips": "Integrar plugins de terceros o crear Plugins AI compatibles con ChatGPT.", + "datasets": "Conocimiento", + "datasetsTips": "PRÓXIMAMENTE: Importa tus propios datos de texto o escribe datos en tiempo real a través de Webhook para la mejora del contexto LLM.", + "newApp": "Nueva App", + "newDataset": "Crear Conocimiento", + "tools": "Herramientas", + "exploreMarketplace": "Explora el mercado", + "appDetail": "Detalles de la aplicación", + "account": "Cuenta" + }, + "userProfile": { + "settings": "Configuraciones", + "emailSupport": "Soporte de Correo Electrónico", + "workspace": "Espacio de trabajo", + "createWorkspace": "Crear espacio de trabajo", + "helpCenter": "Ayuda", + "roadmap": "Hoja de ruta", + "community": "Comunidad", + "about": "Acerca de", + "logout": "Cerrar sesión", + "support": "Apoyo", + "compliance": "Cumplimiento", + "github": "GitHub", + "contactUs": "Contáctenos", + "forum": "Foro" + }, + "settings": { + "accountGroup": "CUENTA", + "workplaceGroup": "ESPACIO DE TRABAJO", + "account": "Mi cuenta", + "members": "Miembros", + "billing": "Facturación", + "integrations": "Integraciones", + "language": "Idioma", + "provider": "Proveedor de Modelo", + "dataSource": "Fuente de Datos", + "plugin": "Plugins", + "apiBasedExtension": "Extensión basada en API", + "generalGroup": "GENERAL" + }, + "account": { + "avatar": "Avatar", + "name": "Nombre", + "email": "Correo electrónico", + "password": "Contraseña", + "passwordTip": "Puedes establecer una contraseña permanente si no deseas usar códigos de inicio de sesión temporales", + "setPassword": "Establecer una contraseña", + "resetPassword": "Restablecer contraseña", + "currentPassword": "Contraseña actual", + "newPassword": "Nueva contraseña", + "confirmPassword": "Confirmar contraseña", + "notEqual": "Las dos contraseñas son diferentes.", + "langGeniusAccount": "Cuenta Dify", + "langGeniusAccountTip": "Tu cuenta Dify y los datos de usuario asociados.", + "editName": "Editar Nombre", + "showAppLength": "Mostrar {{length}} apps", + "delete": "Eliminar cuenta", + "deleteTip": "Eliminar tu cuenta borrará permanentemente todos tus datos y no se podrán recuperar.", + "account": "Cuenta", + "myAccount": "Mi Cuenta", + "studio": "Estudio Dify", + "deletePrivacyLinkTip": "Para obtener más información sobre cómo manejamos sus datos, consulte nuestra", + "deletePrivacyLink": "Política de privacidad.", + "deleteSuccessTip": "Su cuenta necesita tiempo para terminar de eliminarse. Te enviaremos un correo electrónico cuando todo esté listo.", + "deleteLabel": "Para confirmar, escriba su correo electrónico a continuación", + "deletePlaceholder": "Por favor, introduzca su correo electrónico", + "sendVerificationButton": "Enviar código de verificación", + "verificationLabel": "Código de verificación", + "verificationPlaceholder": "Pega el código de 6 dígitos", + "permanentlyDeleteButton": "Eliminar cuenta de forma permanente", + "feedbackTitle": "Retroalimentación", + "feedbackLabel": "¿Cuéntanos por qué eliminaste tu cuenta?", + "feedbackPlaceholder": "Opcional", + "workspaceIcon": "Icono de espacio de trabajo", + "editWorkspaceInfo": "Editar información del espacio de trabajo", + "workspaceName": "Nombre del espacio de trabajo", + "changeEmail": { + "continue": "Continuar", + "content3": "Introduce un nuevo correo electrónico y te enviaremos un código de verificación.", + "emailPlaceholder": "Introduce un nuevo correo electrónico", + "emailLabel": "Nuevo correo electrónico", + "sendVerifyCode": "Enviar código de verificación", + "changeTo": "Cambia a {{email}}", + "resendTip": "¿No recibiste un código?", + "codePlaceholder": "Pegue el código de 6 dígitos", + "content4": "Acabamos de enviarte un código de verificación temporal a {{email}}.", + "newEmail": "Configura una nueva dirección de correo electrónico", + "resend": "Reenviar", + "resendCount": "Reenviar en {{count}}s", + "content2": "Tu correo electrónico actual es {{email}}. Se ha enviado un código de verificación a esta dirección de correo electrónico.", + "content1": "Si continúas, enviaremos un código de verificación a {{email}} para la reautenticación.", + "title": "Cambiar Correo Electrónico", + "verifyEmail": "Verifica tu correo electrónico actual", + "existingEmail": "Ya existe un usuario con este correo electrónico.", + "verifyNew": "Verifica tu nuevo correo electrónico", + "codeLabel": "Código de verificación", + "authTip": "Una vez que tu correo electrónico sea cambiado, las cuentas de Google o GitHub vinculadas a tu antiguo correo electrónico ya no podrán iniciar sesión en esta cuenta.", + "unAvailableEmail": "Este correo electrónico no está disponible temporalmente." + } + }, + "members": { + "team": "Equipo", + "invite": "Agregar", + "name": "NOMBRE", + "lastActive": "ÚLTIMA ACTIVIDAD", + "role": "ROLES", + "pending": "Pendiente...", + "owner": "Propietario", + "admin": "Administrador", + "adminTip": "Puede crear aplicaciones y administrar configuraciones del equipo", + "normal": "Normal", + "normalTip": "Solo puede usar aplicaciones, no puede crear aplicaciones", + "builder": "Constructor", + "builderTip": "Puede crear y editar sus propias aplicaciones", + "editor": "Editor", + "editorTip": "Puede crear y editar aplicaciones", + "datasetOperator": "Administrador de Conocimiento", + "datasetOperatorTip": "Solo puede administrar la base de conocimiento", + "inviteTeamMember": "Agregar miembro del equipo", + "inviteTeamMemberTip": "Pueden acceder a tus datos del equipo directamente después de iniciar sesión.", + "emailNotSetup": "El servidor de correo no está configurado, por lo que no se pueden enviar correos de invitación. En su lugar, notifique a los usuarios el enlace de invitación que se emitirá después de la invitación.", + "email": "Correo electrónico", + "emailInvalid": "Formato de correo electrónico inválido", + "emailPlaceholder": "Por favor ingresa correos electrónicos", + "sendInvite": "Enviar invitación", + "invitedAsRole": "Invitado como usuario {{role}}", + "invitationSent": "Invitación enviada", + "invitationSentTip": "Invitación enviada, y pueden iniciar sesión en Dify para acceder a tus datos del equipo.", + "invitationLink": "Enlace de invitación", + "failedInvitationEmails": "Los siguientes usuarios no fueron invitados exitosamente", + "ok": "OK", + "removeFromTeam": "Eliminar del espacio de trabajo", + "removeFromTeamTip": "Se eliminará el acceso al equipo", + "setAdmin": "Establecer como administrador", + "setMember": "Establecer como miembro ordinario", + "setBuilder": "Establecer como constructor", + "setEditor": "Establecer como editor", + "disInvite": "Cancelar la invitación", + "deleteMember": "Eliminar miembro", + "you": "(Tú)", + "transferModal": { + "continue": "Continuar", + "codeLabel": "Código de verificación", + "verifyEmail": "Verifica tu correo electrónico actual", + "transfer": "Transferir la propiedad del espacio de trabajo", + "transferPlaceholder": "Selecciona un miembro del espacio de trabajo...", + "verifyContent": "Tu correo electrónico actual es {{email}}.", + "resendCount": "Reenviar en {{count}}s", + "resendTip": "¿No recibiste un código?", + "sendVerifyCode": "Enviar código de verificación", + "title": "Transferir la propiedad del espacio de trabajo", + "verifyContent2": "Enviaremos un código de verificación temporal a este correo electrónico para la re-autenticación.", + "transferLabel": "Transferir la propiedad del espacio de trabajo a", + "resend": "Reenviar", + "sendTip": "Si continúas, enviaremos un código de verificación a {{email}} para la reautenticación.", + "warningTip": "Te convertirás en un miembro administrador, y el nuevo propietario tendrá el control total.", + "codePlaceholder": "Pegue el código de 6 dígitos", + "warning": "Estás a punto de transferir la propiedad de “{{workspace}}”. Esto tendrá efecto inmediato y no se puede deshacer." + }, + "transferOwnership": "Transferir propiedad" + }, + "integrations": { + "connected": "Conectado", + "google": "Google", + "googleAccount": "Iniciar sesión con cuenta de Google", + "github": "GitHub", + "githubAccount": "Iniciar sesión con cuenta de GitHub", + "connect": "Conectar" + }, + "language": { + "displayLanguage": "Idioma de visualización", + "timezone": "Zona horaria" + }, + "provider": { + "apiKey": "Clave API", + "enterYourKey": "Ingresa tu clave API aquí", + "invalidKey": "Clave API de OpenAI inválida", + "validatedError": "Validación fallida: ", + "validating": "Validando clave...", + "saveFailed": "Error al guardar la clave API", + "apiKeyExceedBill": "Esta CLAVE API no tiene cuota disponible, por favor lee", + "addKey": "Agregar Clave", + "comingSoon": "Próximamente", + "editKey": "Editar", + "invalidApiKey": "Clave API inválida", + "azure": { + "apiBase": "Base API", + "apiBasePlaceholder": "La URL base de la API de tu Endpoint de Azure OpenAI.", + "apiKey": "Clave API", + "apiKeyPlaceholder": "Ingresa tu clave API aquí", + "helpTip": "Aprender sobre el Servicio Azure OpenAI" + }, + "openaiHosted": { + "openaiHosted": "OpenAI Hospedado", + "onTrial": "EN PRUEBA", + "exhausted": "CUOTA AGOTADA", + "desc": "El servicio de hospedaje OpenAI proporcionado por Dify te permite usar modelos como GPT-3.5. Antes de que se agote tu cuota de prueba, necesitas configurar otros proveedores de modelos.", + "callTimes": "Tiempos de llamada", + "usedUp": "Cuota de prueba agotada. Agrega tu propio proveedor de modelos.", + "useYourModel": "Actualmente usando tu propio proveedor de modelos.", + "close": "Cerrar" + }, + "anthropicHosted": { + "anthropicHosted": "Claude de Anthropíc", + "onTrial": "EN PRUEBA", + "exhausted": "CUOTA AGOTADA", + "desc": "Modelo poderoso, que se destaca en una amplia gama de tareas, desde diálogos sofisticados y generación de contenido creativo hasta instrucciones detalladas.", + "callTimes": "Tiempos de llamada", + "usedUp": "Cuota de prueba agotada. Agrega tu propio proveedor de modelos.", + "useYourModel": "Actualmente usando tu propio proveedor de modelos.", + "close": "Cerrar", + "trialQuotaTip": "Su cuota de prueba antrópica caducará el 11/03/2025 y ya no estará disponible a partir de entonces. Por favor, aprovéchelo a tiempo." + }, + "anthropic": { + "using": "La capacidad de incrustación está usando", + "enableTip": "Para habilitar el modelo de Anthropíc, primero necesitas vincularte al Servicio OpenAI o Azure OpenAI.", + "notEnabled": "No habilitado", + "keyFrom": "Obtén tu clave API de Anthropíc" + }, + "encrypted": { + "front": "Tu CLAVE API será encriptada y almacenada usando", + "back": " tecnología." + } + }, + "modelProvider": { + "notConfigured": "El modelo del sistema aún no ha sido completamente configurado, y algunas funciones pueden no estar disponibles.", + "systemModelSettings": "Configuraciones del Modelo del Sistema", + "systemModelSettingsLink": "¿Por qué es necesario configurar un modelo del sistema?", + "selectModel": "Selecciona tu modelo", + "setupModelFirst": "Por favor configura tu modelo primero", + "systemReasoningModel": { + "key": "Modelo de Razonamiento del Sistema", + "tip": "Establece el modelo de inferencia predeterminado para ser usado en la creación de aplicaciones, así como características como la generación de nombres de diálogo y sugerencias de la próxima pregunta también usarán el modelo de inferencia predeterminado." + }, + "embeddingModel": { + "key": "Modelo de Incrustación", + "tip": "Establece el modelo predeterminado para el procesamiento de incrustación de documentos del Conocimiento, tanto la recuperación como la importación del Conocimiento utilizan este modelo de Incrustación para el procesamiento de vectorización. Cambiarlo causará que la dimensión del vector entre el Conocimiento importado y la pregunta sea inconsistente, resultando en fallos en la recuperación. Para evitar fallos en la recuperación, por favor no cambies este modelo a voluntad.", + "required": "El Modelo de Incrustación es requerido" + }, + "speechToTextModel": { + "key": "Modelo de Voz a Texto", + "tip": "Establece el modelo predeterminado para la entrada de voz a texto en la conversación." + }, + "ttsModel": { + "key": "Modelo de Texto a Voz", + "tip": "Establece el modelo predeterminado para la entrada de texto a voz en la conversación." + }, + "rerankModel": { + "key": "Modelo de Reordenar", + "tip": "El modelo de reordenar reordenará la lista de documentos candidatos basada en la coincidencia semántica con la consulta del usuario, mejorando los resultados de clasificación semántica" + }, + "apiKey": "CLAVE API", + "quota": "Cuota", + "searchModel": "Modelo de búsqueda", + "noModelFound": "No se encontró modelo para {{model}}", + "models": "Modelos", + "showMoreModelProvider": "Mostrar más proveedores de modelos", + "selector": { + "tip": "Este modelo ha sido eliminado. Por favor agrega un modelo o selecciona otro modelo.", + "emptyTip": "No hay modelos disponibles", + "emptySetting": "Por favor ve a configuraciones para configurar", + "rerankTip": "Por favor configura el modelo de Reordenar" + }, + "card": { + "quota": "CUOTA", + "onTrial": "En prueba", + "paid": "Pagado", + "quotaExhausted": "Cuota agotada", + "callTimes": "Tiempos de llamada", + "tokens": "Tokens", + "buyQuota": "Comprar Cuota", + "priorityUse": "Uso prioritario", + "removeKey": "Eliminar CLAVE API", + "tip": "Se dará prioridad al uso de la cuota pagada. La cuota de prueba se utilizará después de que se agote la cuota pagada." + }, + "item": { + "deleteDesc": "{{modelName}} se está utilizando como modelo de razonamiento del sistema. Algunas funciones no estarán disponibles después de la eliminación. Por favor confirma.", + "freeQuota": "CUOTA GRATUITA" + }, + "addApiKey": "Agrega tu CLAVE API", + "invalidApiKey": "Clave API inválida", + "encrypted": { + "front": "Tu CLAVE API será encriptada y almacenada usando", + "back": " tecnología." + }, + "freeQuota": { + "howToEarn": "Cómo ganar" + }, + "addMoreModelProvider": "AGREGAR MÁS PROVEEDORES DE MODELOS", + "addModel": "Agregar Modelo", + "modelsNum": "{{num}} Modelos", + "showModels": "Mostrar Modelos", + "showModelsNum": "Mostrar {{num}} Modelos", + "collapse": "Colapsar", + "config": "Configurar", + "modelAndParameters": "Modelo y Parámetros", + "model": "Modelo", + "featureSupported": "{{feature}} soportado", + "callTimes": "Tiempos de llamada", + "credits": "Créditos de Mensaje", + "buyQuota": "Comprar Cuota", + "getFreeTokens": "Obtener Tokens gratis", + "priorityUsing": "Uso prioritario", + "deprecated": "Desaprobado", + "confirmDelete": "¿Confirmar eliminación?", + "quotaTip": "Tokens gratuitos restantes disponibles", + "loadPresets": "Cargar Presets", + "parameters": "PARÁMETROS", + "loadBalancing": "Balanceo de carga", + "loadBalancingDescription": "Reduce la presión con múltiples conjuntos de credenciales.", + "loadBalancingHeadline": "Balanceo de Carga", + "configLoadBalancing": "Configurar Balanceo de Carga", + "modelHasBeenDeprecated": "Este modelo ha sido desaprobado", + "providerManaged": "Gestionado por el proveedor", + "providerManagedDescription": "Usa el único conjunto de credenciales proporcionado por el proveedor del modelo.", + "defaultConfig": "Configuración Predeterminada", + "apiKeyStatusNormal": "El estado de la CLAVE API es normal", + "apiKeyRateLimit": "Se alcanzó el límite de velocidad, disponible después de {{seconds}}s", + "addConfig": "Agregar Configuración", + "editConfig": "Editar Configuración", + "loadBalancingLeastKeyWarning": "Para habilitar el balanceo de carga se deben habilitar al menos 2 claves.", + "loadBalancingInfo": "Por defecto, el balanceo de carga usa la estrategia Round-robin. Si se activa el límite de velocidad, se aplicará un período de enfriamiento de 1 minuto.", + "upgradeForLoadBalancing": "Actualiza tu plan para habilitar el Balanceo de Carga.", + "configureTip": "Configurar la clave de API o agregar el modelo que se va a usar", + "discoverMore": "Descubre más en", + "toBeConfigured": "A configurar", + "emptyProviderTip": "Instale primero un proveedor de modelos.", + "installProvider": "Instalación de proveedores de modelos", + "emptyProviderTitle": "Proveedor de modelos no configurado", + "auth": { + "apiKeyModal": { + "addModel": "Agregar modelo", + "title": "Configuración de Autorización de Clave API", + "desc": "Después de configurar las credenciales, todos los miembros dentro del espacio de trabajo pueden usar este modelo al orquestar aplicaciones." + }, + "configModel": "Modelo de configuración", + "authorizationError": "Error de autorización", + "specifyModelCredential": "Especificar las credenciales del modelo", + "addModelCredential": "Agregar credenciales del modelo", + "authRemoved": "Autorización retirada", + "unAuthorized": "No autorizado", + "addApiKey": "Agregar clave API", + "apiKeys": "Claves de API", + "providerManagedTip": "La configuración actual es hospedada por el proveedor.", + "providerManaged": "Proveedor gestionado", + "specifyModelCredentialTip": "Utiliza una credencial de modelo configurada.", + "addNewModel": "Agregar nuevo modelo", + "modelCredentials": "Credenciales del modelo", + "addCredential": "Agregar credencial", + "configLoadBalancing": "Configuración de balanceo de carga", + "modelCredential": "Credencial modelo", + "selectModelCredential": "Seleccione una credencial de modelo", + "addModel": "Agregar modelo", + "removeModel": "Eliminar modelo", + "customModelCredentials": "Credenciales de modelo personalizadas", + "addNewModelCredential": "Agregar nueva credencial de modelo", + "manageCredentials": "Administrar credenciales", + "customModelCredentialsDeleteTip": "La credencial está en uso y no se puede eliminar", + "editModelCredential": "Editar credencial de modelo" + }, + "parametersInvalidRemoved": "Algunos parámetros son inválidos y han sido eliminados", + "installDataSourceProvider": "Instalar proveedores de fuentes de datos" + }, + "dataSource": { + "add": "Agregar una fuente de datos", + "connect": "Conectar", + "configure": "Configurar", + "notion": { + "title": "Notion", + "description": "Usando Notion como fuente de datos para el Conocimiento.", + "connectedWorkspace": "Espacio de trabajo conectado", + "addWorkspace": "Agregar espacio de trabajo", + "connected": "Conectado", + "disconnected": "Desconectado", + "changeAuthorizedPages": "Cambiar páginas autorizadas", + "pagesAuthorized": "Páginas autorizadas", + "sync": "Sincronizar", + "remove": "Eliminar", + "selector": { + "pageSelected": "Páginas seleccionadas", + "searchPages": "Buscar páginas...", + "noSearchResult": "No hay resultados de búsqueda", + "addPages": "Agregar páginas", + "preview": "VISTA PREVIA" + }, + "integratedAlert": "Notion está integrado a través de credenciales internas, no es necesario volver a autorizar." + }, + "website": { + "title": "Sitio web", + "description": "Importar contenido de sitios web usando un rastreador web.", + "with": "Con", + "configuredCrawlers": "Rastreadores configurados", + "active": "Activo", + "inactive": "Inactivo" + } + }, + "plugin": { + "serpapi": { + "apiKey": "Clave API", + "apiKeyPlaceholder": "Ingresa tu clave API", + "keyFrom": "Obtén tu clave API de SerpAPI en la página de cuenta de SerpAPI" + } + }, + "apiBasedExtension": { + "title": "Las extensiones basadas en API proporcionan una gestión centralizada de API, simplificando la configuración para su fácil uso en las aplicaciones de Dify.", + "link": "Aprende cómo desarrollar tu propia Extensión API.", + "add": "Agregar Extensión API", + "selector": { + "title": "Extensión API", + "placeholder": "Por favor selecciona extensión API", + "manage": "Gestionar Extensión API" + }, + "modal": { + "title": "Agregar Extensión API", + "editTitle": "Editar Extensión API", + "name": { + "title": "Nombre", + "placeholder": "Por favor ingresa el nombre" + }, + "apiEndpoint": { + "title": "Punto final de la API", + "placeholder": "Por favor ingresa el punto final de la API" + }, + "apiKey": { + "title": "Clave API", + "placeholder": "Por favor ingresa la clave API", + "lengthError": "La longitud de la clave API no puede ser menor a 5 caracteres" + } + }, + "type": "Tipo" + }, + "about": { + "changeLog": "Registro de cambios", + "updateNow": "Actualizar ahora", + "nowAvailable": "Dify {{version}} ya está disponible.", + "latestAvailable": "Dify {{version}} es la última versión disponible." + }, + "appMenus": { + "overview": "Monitoreo", + "promptEng": "Orquestar", + "apiAccess": "Acceso API", + "logAndAnn": "Registros y Anuncios", + "logs": "Registros" + }, + "environment": { + "testing": "PRUEBAS", + "development": "DESARROLLO" + }, + "appModes": { + "completionApp": "Generador de Texto", + "chatApp": "Aplicación de Chat" + }, + "datasetMenus": { + "documents": "Documentos", + "hitTesting": "Pruebas de Recuperación", + "settings": "Configuraciones", + "emptyTip": "El Conocimiento no ha sido asociado, por favor ve a la aplicación o plugin para completar la asociación.", + "viewDoc": "Ver documentación", + "relatedApp": "aplicaciones vinculadas", + "noRelatedApp": "No hay aplicaciones vinculadas", + "pipeline": "Tubería" + }, + "voiceInput": { + "speaking": "Habla ahora...", + "converting": "Convirtiendo a texto...", + "notAllow": "micrófono no autorizado" + }, + "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": "Renombrar Conversación", + "conversationName": "Nombre de la conversación", + "conversationNamePlaceholder": "Por favor ingresa el nombre de la conversación", + "conversationNameCanNotEmpty": "Nombre de la conversación requerido", + "citation": { + "title": "CITAS", + "linkToDataset": "Enlace al Conocimiento", + "characters": "Caracteres:", + "hitCount": "Conteo de recuperaciones:", + "vectorHash": "Hash de vector:", + "hitScore": "Puntuación de recuperación:" + }, + "inputPlaceholder": "Hablar con el {{botName}}", + "thinking": "Pensamiento...", + "thought": "Pensamiento", + "resend": "Reenviar" + }, + "promptEditor": { + "placeholder": "Escribe tu palabra de indicación aquí, ingresa '{' para insertar una variable, ingresa '/' para insertar un bloque de contenido de indicación", + "context": { + "item": { + "title": "Contexto", + "desc": "Insertar plantilla de contexto" + }, + "modal": { + "title": "{{num}} Conocimiento en Contexto", + "add": "Agregar Contexto ", + "footer": "Puedes gestionar contextos en la sección de Contexto abajo." + } + }, + "history": { + "item": { + "title": "Historial de Conversación", + "desc": "Insertar plantilla de mensaje histórico" + }, + "modal": { + "title": "EJEMPLO", + "user": "Hola", + "assistant": "¡Hola! ¿Cómo puedo asistirte hoy?", + "edit": "Editar Nombres de Roles de Conversación" + } + }, + "variable": { + "item": { + "title": "Variables y Herramientas Externas", + "desc": "Insertar Variables y Herramientas Externas" + }, + "outputToolDisabledItem": { + "title": "Variables", + "desc": "Insertar Variables" + }, + "modal": { + "add": "Nueva variable", + "addTool": "Nueva herramienta" + } + }, + "query": { + "item": { + "title": "Consulta", + "desc": "Insertar plantilla de consulta del usuario" + } + }, + "existed": "Ya existe en la indicación" + }, + "imageUploader": { + "uploadFromComputer": "Cargar desde la Computadora", + "uploadFromComputerReadError": "Lectura de imagen fallida, por favor intenta nuevamente.", + "uploadFromComputerUploadError": "Carga de imagen fallida, por favor carga nuevamente.", + "uploadFromComputerLimit": "Las imágenes cargadas no pueden exceder {{size}} MB", + "pasteImageLink": "Pegar enlace de imagen", + "pasteImageLinkInputPlaceholder": "Pega el enlace de imagen aquí", + "pasteImageLinkInvalid": "Enlace de imagen inválido", + "imageUpload": "Carga de Imagen" + }, + "tag": { + "placeholder": "Todas las Etiquetas", + "addNew": "Agregar nueva etiqueta", + "noTag": "Sin etiquetas", + "noTagYet": "Aún sin etiquetas", + "addTag": "Agregar etiquetas", + "editTag": "Editar etiquetas", + "manageTags": "Gestionar Etiquetas", + "selectorPlaceholder": "Escribe para buscar o crear", + "create": "Crear", + "delete": "Eliminar etiqueta", + "deleteTip": "La etiqueta se está utilizando, ¿eliminarla?", + "created": "Etiqueta creada exitosamente", + "failed": "Creación de etiqueta fallida" + }, + "fileUploader": { + "uploadFromComputer": "Carga local", + "pasteFileLink": "Pegar enlace de archivo", + "uploadFromComputerReadError": "Error en la lectura del archivo, inténtelo de nuevo.", + "uploadFromComputerUploadError": "Error en la carga del archivo, vuelva a cargarlo.", + "pasteFileLinkInvalid": "Enlace de archivo no válido", + "fileExtensionNotSupport": "Extensión de archivo no compatible", + "pasteFileLinkInputPlaceholder": "Introduzca la URL...", + "uploadFromComputerLimit": "El archivo de carga no puede exceder {{size}}", + "fileExtensionBlocked": "Este tipo de archivo está bloqueado por motivos de seguridad", + "uploadDisabled": "La carga de archivos está deshabilitada" + }, + "license": { + "expiring": "Caduca en un día", + "expiring_plural": "Caducando en {{count}} días", + "unlimited": "Ilimitado" + }, + "pagination": { + "perPage": "Elementos por página" + }, + "theme": { + "auto": "sistema", + "light": "luz", + "theme": "Tema", + "dark": "noche" + }, + "compliance": { + "iso27001": "Certificación ISO 27001:2022", + "gdpr": "GDPR DPA", + "soc2Type1": "Informe SOC 2 Tipo I", + "sandboxUpgradeTooltip": "Solo disponible con un plan Profesional o de Equipo.", + "professionalUpgradeTooltip": "Solo disponible con un plan de equipo o superior.", + "soc2Type2": "Informe SOC 2 Tipo II" + }, + "imageInput": { + "supportedFormats": "Soporta PNG, JPG, JPEG, WEBP y GIF", + "browse": "navegar", + "dropImageHere": "Deja tu imagen aquí, o" + }, + "you": "Tú", + "avatar": { + "deleteTitle": "Eliminar Avatar", + "deleteDescription": "¿Estás seguro de que deseas eliminar tu foto de perfil? Tu cuenta usará el avatar inicial predeterminado." + }, + "feedback": { + "title": "Proporcionar retroalimentación", + "subtitle": "Por favor, díganos qué salió mal con esta respuesta.", + "placeholder": "Por favor, describe qué salió mal o cómo podemos mejorar...", + "content": "Contenido de retroalimentación" + }, + "label": { + "optional": "(opcional)" + }, + "noData": "Sin datos", + "dynamicSelect": { + "error": "Error al cargar las opciones", + "noData": "No hay opciones disponibles", + "loading": "Cargando opciones...", + "selected": "{{count}} seleccionado" + } +} diff --git a/web/i18n/es-ES/common.ts b/web/i18n/es-ES/common.ts deleted file mode 100644 index 8f56c7e668..0000000000 --- a/web/i18n/es-ES/common.ts +++ /dev/null @@ -1,792 +0,0 @@ -const translation = { - api: { - success: 'Éxito', - actionSuccess: 'Acción exitosa', - saved: 'Guardado', - create: 'Creado', - remove: 'Eliminado', - actionFailed: 'Acción fallida', - }, - operation: { - create: 'Crear', - confirm: 'Confirmar', - cancel: 'Cancelar', - clear: 'Limpiar', - save: 'Guardar', - saveAndEnable: 'Guardar y habilitar', - edit: 'Editar', - add: 'Agregar', - added: 'Agregado', - refresh: 'Reiniciar', - reset: 'Restablecer', - search: 'Buscar', - change: 'Cambiar', - remove: 'Eliminar', - send: 'Enviar', - copy: 'Copiar', - lineBreak: 'Salto de línea', - sure: 'Estoy seguro', - download: 'Descargar', - delete: 'Eliminar', - settings: 'Configuraciones', - setup: 'Configurar', - getForFree: 'Obtener gratis', - reload: 'Recargar', - ok: 'OK', - log: 'Registro', - learnMore: 'Aprender más', - params: 'Parámetros', - duplicate: 'Duplicar', - rename: 'Renombrar', - audioSourceUnavailable: 'AudioSource no está disponible', - zoomOut: 'Alejar', - zoomIn: 'Acercar', - openInNewTab: 'Abrir en una nueva pestaña', - copyImage: 'Copiar imagen', - viewMore: 'VER MÁS', - regenerate: 'Regenerar', - close: 'Cerrar', - saveAndRegenerate: 'Guardar y regenerar fragmentos secundarios', - view: 'Vista', - submit: 'Enviar', - skip: 'Navío', - imageCopied: 'Imagen copiada', - deleteApp: 'Eliminar aplicación', - in: 'en', - viewDetails: 'Ver detalles', - copied: 'Copiado', - more: 'Más', - downloadSuccess: 'Descarga completada.', - downloadFailed: 'La descarga ha fallado. Por favor, inténtalo de nuevo más tarde.', - format: 'Formato', - deSelectAll: 'Deseleccionar todo', - selectAll: 'Seleccionar todo', - config: 'Config', - confirmAction: 'Por favor, confirme su acción.', - deleteConfirmTitle: '¿Eliminar?', - yes: 'Sí', - no: 'No', - noSearchResults: 'No se encontraron {{content}}', - resetKeywords: 'Restablecer palabras clave', - selectCount: '{{count}} Seleccionado', - searchCount: 'Encuentra {{count}} {{content}}', - noSearchCount: '0 {{content}}', - now: 'Ahora', - }, - errorMsg: { - fieldRequired: '{{field}} es requerido', - urlError: 'la URL debe comenzar con http:// o https://', - }, - placeholder: { - input: 'Por favor ingresa', - select: 'Por favor selecciona', - search: 'Buscar...', - }, - voice: { - language: { - zhHans: 'Chino', - zhHant: 'Chino Tradicional', - enUS: 'Inglés', - deDE: 'Alemán', - frFR: 'Francés', - esES: 'Español', - itIT: 'Italiano', - thTH: 'Tailandés', - idID: 'Indonesio', - jaJP: 'Japonés', - koKR: 'Coreano', - ptBR: 'Portugués', - ruRU: 'Ruso', - ukUA: 'Ucraniano', - viVN: 'Vietnamita', - plPL: 'Polaco', - roRO: 'Rumano', - hiIN: 'Hindi', - trTR: 'Turco', - faIR: 'Persa', - slSI: 'Esloveno', - arTN: 'Árabe tunecino', - }, - }, - unit: { - char: 'caracteres', - }, - actionMsg: { - noModification: 'No hay modificaciones en este momento.', - modifiedSuccessfully: 'Modificado exitosamente', - modifiedUnsuccessfully: 'Modificación no exitosa', - copySuccessfully: 'Copiado exitosamente', - paySucceeded: 'Pago exitoso', - payCancelled: 'Pago cancelado', - generatedSuccessfully: 'Generado exitosamente', - generatedUnsuccessfully: 'Generación no exitosa', - }, - model: { - params: { - temperature: 'Temperatura', - temperatureTip: - 'Controla la aleatoriedad: Reducir resulta en completaciones menos aleatorias. A medida que la temperatura se acerca a cero, el modelo se vuelve determinista y repetitivo.', - top_p: 'Top P', - top_pTip: - 'Controla la diversidad mediante el muestreo de núcleo: 0.5 significa que se consideran la mitad de todas las opciones ponderadas por probabilidad.', - presence_penalty: 'Penalización por presencia', - presence_penaltyTip: - 'Cuánto penalizar los nuevos tokens según si aparecen en el texto hasta ahora.\nAumenta la probabilidad del modelo de hablar sobre nuevos temas.', - frequency_penalty: 'Penalización por frecuencia', - frequency_penaltyTip: - 'Cuánto penalizar los nuevos tokens según su frecuencia existente en el texto hasta ahora.\nDisminuye la probabilidad del modelo de repetir la misma línea literalmente.', - max_tokens: 'Tokens máximos', - max_tokensTip: - 'Se usa para limitar la longitud máxima de la respuesta, en tokens. \nValores más grandes pueden limitar el espacio disponible para palabras de indicación, registros de chat y Conocimiento. \nSe recomienda configurarlo por debajo de dos tercios\ngpt-4-1106-preview, gpt-4-vision-preview tokens máximos (entrada 128k salida 4k)', - maxTokenSettingTip: 'Tu configuración de tokens máximos es alta, lo que puede limitar el espacio para indicaciones, consultas y datos. Considera configurarlo por debajo de 2/3.', - setToCurrentModelMaxTokenTip: 'Tokens máximos actualizados al 80% del máximo de tokens del modelo actual {{maxToken}}.', - stop_sequences: 'Secuencias de parada', - stop_sequencesTip: 'Hasta cuatro secuencias donde la API dejará de generar más tokens. El texto devuelto no contendrá la secuencia de parada.', - stop_sequencesPlaceholder: 'Ingresa la secuencia y presiona Tab', - }, - tone: { - Creative: 'Creativo', - Balanced: 'Equilibrado', - Precise: 'Preciso', - Custom: 'Personalizado', - }, - addMoreModel: 'Ir a configuraciones para agregar más modelos', - capabilities: 'Capacidades multimodales', - settingsLink: 'Configuración del proveedor de modelos', - }, - menus: { - status: 'beta', - explore: 'Explorar', - apps: 'Estudio', - plugins: 'Plugins', - pluginsTips: 'Integrar plugins de terceros o crear Plugins AI compatibles con ChatGPT.', - datasets: 'Conocimiento', - datasetsTips: 'PRÓXIMAMENTE: Importa tus propios datos de texto o escribe datos en tiempo real a través de Webhook para la mejora del contexto LLM.', - newApp: 'Nueva App', - newDataset: 'Crear Conocimiento', - tools: 'Herramientas', - exploreMarketplace: 'Explora el mercado', - appDetail: 'Detalles de la aplicación', - account: 'Cuenta', - }, - userProfile: { - settings: 'Configuraciones', - emailSupport: 'Soporte de Correo Electrónico', - workspace: 'Espacio de trabajo', - createWorkspace: 'Crear espacio de trabajo', - helpCenter: 'Ayuda', - roadmap: 'Hoja de ruta', - community: 'Comunidad', - about: 'Acerca de', - logout: 'Cerrar sesión', - support: 'Apoyo', - compliance: 'Cumplimiento', - github: 'GitHub', - contactUs: 'Contáctenos', - forum: 'Foro', - }, - settings: { - accountGroup: 'CUENTA', - workplaceGroup: 'ESPACIO DE TRABAJO', - account: 'Mi cuenta', - members: 'Miembros', - billing: 'Facturación', - integrations: 'Integraciones', - language: 'Idioma', - provider: 'Proveedor de Modelo', - dataSource: 'Fuente de Datos', - plugin: 'Plugins', - apiBasedExtension: 'Extensión basada en API', - generalGroup: 'GENERAL', - }, - account: { - avatar: 'Avatar', - name: 'Nombre', - email: 'Correo electrónico', - password: 'Contraseña', - passwordTip: 'Puedes establecer una contraseña permanente si no deseas usar códigos de inicio de sesión temporales', - setPassword: 'Establecer una contraseña', - resetPassword: 'Restablecer contraseña', - currentPassword: 'Contraseña actual', - newPassword: 'Nueva contraseña', - confirmPassword: 'Confirmar contraseña', - notEqual: 'Las dos contraseñas son diferentes.', - langGeniusAccount: 'Cuenta Dify', - langGeniusAccountTip: 'Tu cuenta Dify y los datos de usuario asociados.', - editName: 'Editar Nombre', - showAppLength: 'Mostrar {{length}} apps', - delete: 'Eliminar cuenta', - deleteTip: 'Eliminar tu cuenta borrará permanentemente todos tus datos y no se podrán recuperar.', - account: 'Cuenta', - myAccount: 'Mi Cuenta', - studio: 'Estudio Dify', - deletePrivacyLinkTip: 'Para obtener más información sobre cómo manejamos sus datos, consulte nuestra', - deletePrivacyLink: 'Política de privacidad.', - deleteSuccessTip: 'Su cuenta necesita tiempo para terminar de eliminarse. Te enviaremos un correo electrónico cuando todo esté listo.', - deleteLabel: 'Para confirmar, escriba su correo electrónico a continuación', - deletePlaceholder: 'Por favor, introduzca su correo electrónico', - sendVerificationButton: 'Enviar código de verificación', - verificationLabel: 'Código de verificación', - verificationPlaceholder: 'Pega el código de 6 dígitos', - permanentlyDeleteButton: 'Eliminar cuenta de forma permanente', - feedbackTitle: 'Retroalimentación', - feedbackLabel: '¿Cuéntanos por qué eliminaste tu cuenta?', - feedbackPlaceholder: 'Opcional', - workspaceIcon: 'Icono de espacio de trabajo', - editWorkspaceInfo: 'Editar información del espacio de trabajo', - workspaceName: 'Nombre del espacio de trabajo', - changeEmail: { - continue: 'Continuar', - content3: 'Introduce un nuevo correo electrónico y te enviaremos un código de verificación.', - emailPlaceholder: 'Introduce un nuevo correo electrónico', - emailLabel: 'Nuevo correo electrónico', - sendVerifyCode: 'Enviar código de verificación', - changeTo: 'Cambia a {{email}}', - resendTip: '¿No recibiste un código?', - codePlaceholder: 'Pegue el código de 6 dígitos', - content4: 'Acabamos de enviarte un código de verificación temporal a {{email}}.', - newEmail: 'Configura una nueva dirección de correo electrónico', - resend: 'Reenviar', - resendCount: 'Reenviar en {{count}}s', - content2: 'Tu correo electrónico actual es {{email}}. Se ha enviado un código de verificación a esta dirección de correo electrónico.', - content1: 'Si continúas, enviaremos un código de verificación a {{email}} para la reautenticación.', - title: 'Cambiar Correo Electrónico', - verifyEmail: 'Verifica tu correo electrónico actual', - existingEmail: 'Ya existe un usuario con este correo electrónico.', - verifyNew: 'Verifica tu nuevo correo electrónico', - codeLabel: 'Código de verificación', - authTip: 'Una vez que tu correo electrónico sea cambiado, las cuentas de Google o GitHub vinculadas a tu antiguo correo electrónico ya no podrán iniciar sesión en esta cuenta.', - unAvailableEmail: 'Este correo electrónico no está disponible temporalmente.', - }, - }, - members: { - team: 'Equipo', - invite: 'Agregar', - name: 'NOMBRE', - lastActive: 'ÚLTIMA ACTIVIDAD', - role: 'ROLES', - pending: 'Pendiente...', - owner: 'Propietario', - admin: 'Administrador', - adminTip: 'Puede crear aplicaciones y administrar configuraciones del equipo', - normal: 'Normal', - normalTip: 'Solo puede usar aplicaciones, no puede crear aplicaciones', - builder: 'Constructor', - builderTip: 'Puede crear y editar sus propias aplicaciones', - editor: 'Editor', - editorTip: 'Puede crear y editar aplicaciones', - datasetOperator: 'Administrador de Conocimiento', - datasetOperatorTip: 'Solo puede administrar la base de conocimiento', - inviteTeamMember: 'Agregar miembro del equipo', - inviteTeamMemberTip: 'Pueden acceder a tus datos del equipo directamente después de iniciar sesión.', - emailNotSetup: 'El servidor de correo no está configurado, por lo que no se pueden enviar correos de invitación. En su lugar, notifique a los usuarios el enlace de invitación que se emitirá después de la invitación.', - email: 'Correo electrónico', - emailInvalid: 'Formato de correo electrónico inválido', - emailPlaceholder: 'Por favor ingresa correos electrónicos', - sendInvite: 'Enviar invitación', - invitedAsRole: 'Invitado como usuario {{role}}', - invitationSent: 'Invitación enviada', - invitationSentTip: 'Invitación enviada, y pueden iniciar sesión en Dify para acceder a tus datos del equipo.', - invitationLink: 'Enlace de invitación', - failedInvitationEmails: 'Los siguientes usuarios no fueron invitados exitosamente', - ok: 'OK', - removeFromTeam: 'Eliminar del espacio de trabajo', - removeFromTeamTip: 'Se eliminará el acceso al equipo', - setAdmin: 'Establecer como administrador', - setMember: 'Establecer como miembro ordinario', - setBuilder: 'Establecer como constructor', - setEditor: 'Establecer como editor', - disInvite: 'Cancelar la invitación', - deleteMember: 'Eliminar miembro', - you: '(Tú)', - transferModal: { - continue: 'Continuar', - codeLabel: 'Código de verificación', - verifyEmail: 'Verifica tu correo electrónico actual', - transfer: 'Transferir la propiedad del espacio de trabajo', - transferPlaceholder: 'Selecciona un miembro del espacio de trabajo...', - verifyContent: 'Tu correo electrónico actual es {{email}}.', - resendCount: 'Reenviar en {{count}}s', - resendTip: '¿No recibiste un código?', - sendVerifyCode: 'Enviar código de verificación', - title: 'Transferir la propiedad del espacio de trabajo', - verifyContent2: 'Enviaremos un código de verificación temporal a este correo electrónico para la re-autenticación.', - transferLabel: 'Transferir la propiedad del espacio de trabajo a', - resend: 'Reenviar', - sendTip: 'Si continúas, enviaremos un código de verificación a {{email}} para la reautenticación.', - warningTip: 'Te convertirás en un miembro administrador, y el nuevo propietario tendrá el control total.', - codePlaceholder: 'Pegue el código de 6 dígitos', - warning: 'Estás a punto de transferir la propiedad de “{{workspace}}”. Esto tendrá efecto inmediato y no se puede deshacer.', - }, - transferOwnership: 'Transferir propiedad', - }, - integrations: { - connected: 'Conectado', - google: 'Google', - googleAccount: 'Iniciar sesión con cuenta de Google', - github: 'GitHub', - githubAccount: 'Iniciar sesión con cuenta de GitHub', - connect: 'Conectar', - }, - language: { - displayLanguage: 'Idioma de visualización', - timezone: 'Zona horaria', - }, - provider: { - apiKey: 'Clave API', - enterYourKey: 'Ingresa tu clave API aquí', - invalidKey: 'Clave API de OpenAI inválida', - validatedError: 'Validación fallida: ', - validating: 'Validando clave...', - saveFailed: 'Error al guardar la clave API', - apiKeyExceedBill: 'Esta CLAVE API no tiene cuota disponible, por favor lee', - addKey: 'Agregar Clave', - comingSoon: 'Próximamente', - editKey: 'Editar', - invalidApiKey: 'Clave API inválida', - azure: { - apiBase: 'Base API', - apiBasePlaceholder: 'La URL base de la API de tu Endpoint de Azure OpenAI.', - apiKey: 'Clave API', - apiKeyPlaceholder: 'Ingresa tu clave API aquí', - helpTip: 'Aprender sobre el Servicio Azure OpenAI', - }, - openaiHosted: { - openaiHosted: 'OpenAI Hospedado', - onTrial: 'EN PRUEBA', - exhausted: 'CUOTA AGOTADA', - desc: 'El servicio de hospedaje OpenAI proporcionado por Dify te permite usar modelos como GPT-3.5. Antes de que se agote tu cuota de prueba, necesitas configurar otros proveedores de modelos.', - callTimes: 'Tiempos de llamada', - usedUp: 'Cuota de prueba agotada. Agrega tu propio proveedor de modelos.', - useYourModel: 'Actualmente usando tu propio proveedor de modelos.', - close: 'Cerrar', - }, - anthropicHosted: { - anthropicHosted: 'Claude de Anthropíc', - onTrial: 'EN PRUEBA', - exhausted: 'CUOTA AGOTADA', - desc: 'Modelo poderoso, que se destaca en una amplia gama de tareas, desde diálogos sofisticados y generación de contenido creativo hasta instrucciones detalladas.', - callTimes: 'Tiempos de llamada', - usedUp: 'Cuota de prueba agotada. Agrega tu propio proveedor de modelos.', - useYourModel: 'Actualmente usando tu propio proveedor de modelos.', - close: 'Cerrar', - trialQuotaTip: 'Su cuota de prueba antrópica caducará el 11/03/2025 y ya no estará disponible a partir de entonces. Por favor, aprovéchelo a tiempo.', - }, - anthropic: { - using: 'La capacidad de incrustación está usando', - enableTip: 'Para habilitar el modelo de Anthropíc, primero necesitas vincularte al Servicio OpenAI o Azure OpenAI.', - notEnabled: 'No habilitado', - keyFrom: 'Obtén tu clave API de Anthropíc', - }, - encrypted: { - front: 'Tu CLAVE API será encriptada y almacenada usando', - back: ' tecnología.', - }, - }, - modelProvider: { - notConfigured: 'El modelo del sistema aún no ha sido completamente configurado, y algunas funciones pueden no estar disponibles.', - systemModelSettings: 'Configuraciones del Modelo del Sistema', - systemModelSettingsLink: '¿Por qué es necesario configurar un modelo del sistema?', - selectModel: 'Selecciona tu modelo', - setupModelFirst: 'Por favor configura tu modelo primero', - systemReasoningModel: { - key: 'Modelo de Razonamiento del Sistema', - tip: 'Establece el modelo de inferencia predeterminado para ser usado en la creación de aplicaciones, así como características como la generación de nombres de diálogo y sugerencias de la próxima pregunta también usarán el modelo de inferencia predeterminado.', - }, - embeddingModel: { - key: 'Modelo de Incrustación', - tip: 'Establece el modelo predeterminado para el procesamiento de incrustación de documentos del Conocimiento, tanto la recuperación como la importación del Conocimiento utilizan este modelo de Incrustación para el procesamiento de vectorización. Cambiarlo causará que la dimensión del vector entre el Conocimiento importado y la pregunta sea inconsistente, resultando en fallos en la recuperación. Para evitar fallos en la recuperación, por favor no cambies este modelo a voluntad.', - required: 'El Modelo de Incrustación es requerido', - }, - speechToTextModel: { - key: 'Modelo de Voz a Texto', - tip: 'Establece el modelo predeterminado para la entrada de voz a texto en la conversación.', - }, - ttsModel: { - key: 'Modelo de Texto a Voz', - tip: 'Establece el modelo predeterminado para la entrada de texto a voz en la conversación.', - }, - rerankModel: { - key: 'Modelo de Reordenar', - tip: 'El modelo de reordenar reordenará la lista de documentos candidatos basada en la coincidencia semántica con la consulta del usuario, mejorando los resultados de clasificación semántica', - }, - apiKey: 'CLAVE API', - quota: 'Cuota', - searchModel: 'Modelo de búsqueda', - noModelFound: 'No se encontró modelo para {{model}}', - models: 'Modelos', - showMoreModelProvider: 'Mostrar más proveedores de modelos', - selector: { - tip: 'Este modelo ha sido eliminado. Por favor agrega un modelo o selecciona otro modelo.', - emptyTip: 'No hay modelos disponibles', - emptySetting: 'Por favor ve a configuraciones para configurar', - rerankTip: 'Por favor configura el modelo de Reordenar', - }, - card: { - quota: 'CUOTA', - onTrial: 'En prueba', - paid: 'Pagado', - quotaExhausted: 'Cuota agotada', - callTimes: 'Tiempos de llamada', - tokens: 'Tokens', - buyQuota: 'Comprar Cuota', - priorityUse: 'Uso prioritario', - removeKey: 'Eliminar CLAVE API', - tip: 'Se dará prioridad al uso de la cuota pagada. La cuota de prueba se utilizará después de que se agote la cuota pagada.', - }, - item: { - deleteDesc: '{{modelName}} se está utilizando como modelo de razonamiento del sistema. Algunas funciones no estarán disponibles después de la eliminación. Por favor confirma.', - freeQuota: 'CUOTA GRATUITA', - }, - addApiKey: 'Agrega tu CLAVE API', - invalidApiKey: 'Clave API inválida', - encrypted: { - front: 'Tu CLAVE API será encriptada y almacenada usando', - back: ' tecnología.', - }, - freeQuota: { - howToEarn: 'Cómo ganar', - }, - addMoreModelProvider: 'AGREGAR MÁS PROVEEDORES DE MODELOS', - addModel: 'Agregar Modelo', - modelsNum: '{{num}} Modelos', - showModels: 'Mostrar Modelos', - showModelsNum: 'Mostrar {{num}} Modelos', - collapse: 'Colapsar', - config: 'Configurar', - modelAndParameters: 'Modelo y Parámetros', - model: 'Modelo', - featureSupported: '{{feature}} soportado', - callTimes: 'Tiempos de llamada', - credits: 'Créditos de Mensaje', - buyQuota: 'Comprar Cuota', - getFreeTokens: 'Obtener Tokens gratis', - priorityUsing: 'Uso prioritario', - deprecated: 'Desaprobado', - confirmDelete: '¿Confirmar eliminación?', - quotaTip: 'Tokens gratuitos restantes disponibles', - loadPresets: 'Cargar Presets', - parameters: 'PARÁMETROS', - loadBalancing: 'Balanceo de carga', - loadBalancingDescription: 'Reduce la presión con múltiples conjuntos de credenciales.', - loadBalancingHeadline: 'Balanceo de Carga', - configLoadBalancing: 'Configurar Balanceo de Carga', - modelHasBeenDeprecated: 'Este modelo ha sido desaprobado', - providerManaged: 'Gestionado por el proveedor', - providerManagedDescription: 'Usa el único conjunto de credenciales proporcionado por el proveedor del modelo.', - defaultConfig: 'Configuración Predeterminada', - apiKeyStatusNormal: 'El estado de la CLAVE API es normal', - apiKeyRateLimit: 'Se alcanzó el límite de velocidad, disponible después de {{seconds}}s', - addConfig: 'Agregar Configuración', - editConfig: 'Editar Configuración', - loadBalancingLeastKeyWarning: 'Para habilitar el balanceo de carga se deben habilitar al menos 2 claves.', - loadBalancingInfo: 'Por defecto, el balanceo de carga usa la estrategia Round-robin. Si se activa el límite de velocidad, se aplicará un período de enfriamiento de 1 minuto.', - upgradeForLoadBalancing: 'Actualiza tu plan para habilitar el Balanceo de Carga.', - configureTip: 'Configurar la clave de API o agregar el modelo que se va a usar', - discoverMore: 'Descubre más en', - toBeConfigured: 'A configurar', - emptyProviderTip: 'Instale primero un proveedor de modelos.', - installProvider: 'Instalación de proveedores de modelos', - emptyProviderTitle: 'Proveedor de modelos no configurado', - auth: { - apiKeyModal: { - addModel: 'Agregar modelo', - title: 'Configuración de Autorización de Clave API', - desc: 'Después de configurar las credenciales, todos los miembros dentro del espacio de trabajo pueden usar este modelo al orquestar aplicaciones.', - }, - configModel: 'Modelo de configuración', - authorizationError: 'Error de autorización', - specifyModelCredential: 'Especificar las credenciales del modelo', - addModelCredential: 'Agregar credenciales del modelo', - authRemoved: 'Autorización retirada', - unAuthorized: 'No autorizado', - addApiKey: 'Agregar clave API', - apiKeys: 'Claves de API', - providerManagedTip: 'La configuración actual es hospedada por el proveedor.', - providerManaged: 'Proveedor gestionado', - specifyModelCredentialTip: 'Utiliza una credencial de modelo configurada.', - addNewModel: 'Agregar nuevo modelo', - modelCredentials: 'Credenciales del modelo', - addCredential: 'Agregar credencial', - configLoadBalancing: 'Configuración de balanceo de carga', - modelCredential: 'Credencial modelo', - selectModelCredential: 'Seleccione una credencial de modelo', - addModel: 'Agregar modelo', - removeModel: 'Eliminar modelo', - customModelCredentials: 'Credenciales de modelo personalizadas', - addNewModelCredential: 'Agregar nueva credencial de modelo', - manageCredentials: 'Administrar credenciales', - customModelCredentialsDeleteTip: 'La credencial está en uso y no se puede eliminar', - editModelCredential: 'Editar credencial de modelo', - }, - parametersInvalidRemoved: 'Algunos parámetros son inválidos y han sido eliminados', - installDataSourceProvider: 'Instalar proveedores de fuentes de datos', - }, - dataSource: { - add: 'Agregar una fuente de datos', - connect: 'Conectar', - configure: 'Configurar', - notion: { - title: 'Notion', - description: 'Usando Notion como fuente de datos para el Conocimiento.', - connectedWorkspace: 'Espacio de trabajo conectado', - addWorkspace: 'Agregar espacio de trabajo', - connected: 'Conectado', - disconnected: 'Desconectado', - changeAuthorizedPages: 'Cambiar páginas autorizadas', - pagesAuthorized: 'Páginas autorizadas', - sync: 'Sincronizar', - remove: 'Eliminar', - selector: { - pageSelected: 'Páginas seleccionadas', - searchPages: 'Buscar páginas...', - noSearchResult: 'No hay resultados de búsqueda', - addPages: 'Agregar páginas', - preview: 'VISTA PREVIA', - }, - integratedAlert: 'Notion está integrado a través de credenciales internas, no es necesario volver a autorizar.', - }, - website: { - title: 'Sitio web', - description: 'Importar contenido de sitios web usando un rastreador web.', - with: 'Con', - configuredCrawlers: 'Rastreadores configurados', - active: 'Activo', - inactive: 'Inactivo', - }, - }, - plugin: { - serpapi: { - apiKey: 'Clave API', - apiKeyPlaceholder: 'Ingresa tu clave API', - keyFrom: 'Obtén tu clave API de SerpAPI en la página de cuenta de SerpAPI', - }, - }, - apiBasedExtension: { - title: 'Las extensiones basadas en API proporcionan una gestión centralizada de API, simplificando la configuración para su fácil uso en las aplicaciones de Dify.', - link: 'Aprende cómo desarrollar tu propia Extensión API.', - add: 'Agregar Extensión API', - selector: { - title: 'Extensión API', - placeholder: 'Por favor selecciona extensión API', - manage: 'Gestionar Extensión API', - }, - modal: { - title: 'Agregar Extensión API', - editTitle: 'Editar Extensión API', - name: { - title: 'Nombre', - placeholder: 'Por favor ingresa el nombre', - }, - apiEndpoint: { - title: 'Punto final de la API', - placeholder: 'Por favor ingresa el punto final de la API', - }, - apiKey: { - title: 'Clave API', - placeholder: 'Por favor ingresa la clave API', - lengthError: 'La longitud de la clave API no puede ser menor a 5 caracteres', - }, - }, - type: 'Tipo', - }, - about: { - changeLog: 'Registro de cambios', - updateNow: 'Actualizar ahora', - nowAvailable: 'Dify {{version}} ya está disponible.', - latestAvailable: 'Dify {{version}} es la última versión disponible.', - }, - appMenus: { - overview: 'Monitoreo', - promptEng: 'Orquestar', - apiAccess: 'Acceso API', - logAndAnn: 'Registros y Anuncios', - logs: 'Registros', - }, - environment: { - testing: 'PRUEBAS', - development: 'DESARROLLO', - }, - appModes: { - completionApp: 'Generador de Texto', - chatApp: 'Aplicación de Chat', - }, - datasetMenus: { - documents: 'Documentos', - hitTesting: 'Pruebas de Recuperación', - settings: 'Configuraciones', - emptyTip: 'El Conocimiento no ha sido asociado, por favor ve a la aplicación o plugin para completar la asociación.', - viewDoc: 'Ver documentación', - relatedApp: 'aplicaciones vinculadas', - noRelatedApp: 'No hay aplicaciones vinculadas', - pipeline: 'Tubería', - }, - voiceInput: { - speaking: 'Habla ahora...', - converting: 'Convirtiendo a texto...', - notAllow: 'micrófono no autorizado', - }, - 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: 'Renombrar Conversación', - conversationName: 'Nombre de la conversación', - conversationNamePlaceholder: 'Por favor ingresa el nombre de la conversación', - conversationNameCanNotEmpty: 'Nombre de la conversación requerido', - citation: { - title: 'CITAS', - linkToDataset: 'Enlace al Conocimiento', - characters: 'Caracteres:', - hitCount: 'Conteo de recuperaciones:', - vectorHash: 'Hash de vector:', - hitScore: 'Puntuación de recuperación:', - }, - inputPlaceholder: 'Hablar con el {{botName}}', - thinking: 'Pensamiento...', - thought: 'Pensamiento', - resend: 'Reenviar', - }, - promptEditor: { - placeholder: 'Escribe tu palabra de indicación aquí, ingresa \'{\' para insertar una variable, ingresa \'/\' para insertar un bloque de contenido de indicación', - context: { - item: { - title: 'Contexto', - desc: 'Insertar plantilla de contexto', - }, - modal: { - title: '{{num}} Conocimiento en Contexto', - add: 'Agregar Contexto ', - footer: 'Puedes gestionar contextos en la sección de Contexto abajo.', - }, - }, - history: { - item: { - title: 'Historial de Conversación', - desc: 'Insertar plantilla de mensaje histórico', - }, - modal: { - title: 'EJEMPLO', - user: 'Hola', - assistant: '¡Hola! ¿Cómo puedo asistirte hoy?', - edit: 'Editar Nombres de Roles de Conversación', - }, - }, - variable: { - item: { - title: 'Variables y Herramientas Externas', - desc: 'Insertar Variables y Herramientas Externas', - }, - outputToolDisabledItem: { - title: 'Variables', - desc: 'Insertar Variables', - }, - modal: { - add: 'Nueva variable', - addTool: 'Nueva herramienta', - }, - }, - query: { - item: { - title: 'Consulta', - desc: 'Insertar plantilla de consulta del usuario', - }, - }, - existed: 'Ya existe en la indicación', - }, - imageUploader: { - uploadFromComputer: 'Cargar desde la Computadora', - uploadFromComputerReadError: 'Lectura de imagen fallida, por favor intenta nuevamente.', - uploadFromComputerUploadError: 'Carga de imagen fallida, por favor carga nuevamente.', - uploadFromComputerLimit: 'Las imágenes cargadas no pueden exceder {{size}} MB', - pasteImageLink: 'Pegar enlace de imagen', - pasteImageLinkInputPlaceholder: 'Pega el enlace de imagen aquí', - pasteImageLinkInvalid: 'Enlace de imagen inválido', - imageUpload: 'Carga de Imagen', - }, - tag: { - placeholder: 'Todas las Etiquetas', - addNew: 'Agregar nueva etiqueta', - noTag: 'Sin etiquetas', - noTagYet: 'Aún sin etiquetas', - addTag: 'Agregar etiquetas', - editTag: 'Editar etiquetas', - manageTags: 'Gestionar Etiquetas', - selectorPlaceholder: 'Escribe para buscar o crear', - create: 'Crear', - delete: 'Eliminar etiqueta', - deleteTip: 'La etiqueta se está utilizando, ¿eliminarla?', - created: 'Etiqueta creada exitosamente', - failed: 'Creación de etiqueta fallida', - }, - fileUploader: { - uploadFromComputer: 'Carga local', - pasteFileLink: 'Pegar enlace de archivo', - uploadFromComputerReadError: 'Error en la lectura del archivo, inténtelo de nuevo.', - uploadFromComputerUploadError: 'Error en la carga del archivo, vuelva a cargarlo.', - pasteFileLinkInvalid: 'Enlace de archivo no válido', - fileExtensionNotSupport: 'Extensión de archivo no compatible', - pasteFileLinkInputPlaceholder: 'Introduzca la URL...', - uploadFromComputerLimit: 'El archivo de carga no puede exceder {{size}}', - fileExtensionBlocked: 'Este tipo de archivo está bloqueado por motivos de seguridad', - uploadDisabled: 'La carga de archivos está deshabilitada', - }, - license: { - expiring: 'Caduca en un día', - expiring_plural: 'Caducando en {{count}} días', - unlimited: 'Ilimitado', - }, - pagination: { - perPage: 'Elementos por página', - }, - theme: { - auto: 'sistema', - light: 'luz', - theme: 'Tema', - dark: 'noche', - }, - compliance: { - iso27001: 'Certificación ISO 27001:2022', - gdpr: 'GDPR DPA', - soc2Type1: 'Informe SOC 2 Tipo I', - sandboxUpgradeTooltip: 'Solo disponible con un plan Profesional o de Equipo.', - professionalUpgradeTooltip: 'Solo disponible con un plan de equipo o superior.', - soc2Type2: 'Informe SOC 2 Tipo II', - }, - imageInput: { - supportedFormats: 'Soporta PNG, JPG, JPEG, WEBP y GIF', - browse: 'navegar', - dropImageHere: 'Deja tu imagen aquí, o', - }, - you: 'Tú', - avatar: { - deleteTitle: 'Eliminar Avatar', - deleteDescription: '¿Estás seguro de que deseas eliminar tu foto de perfil? Tu cuenta usará el avatar inicial predeterminado.', - }, - feedback: { - title: 'Proporcionar retroalimentación', - subtitle: 'Por favor, díganos qué salió mal con esta respuesta.', - placeholder: 'Por favor, describe qué salió mal o cómo podemos mejorar...', - content: 'Contenido de retroalimentación', - }, - label: { - optional: '(opcional)', - }, - noData: 'Sin datos', - dynamicSelect: { - error: 'Error al cargar las opciones', - noData: 'No hay opciones disponibles', - loading: 'Cargando opciones...', - selected: '{{count}} seleccionado', - }, -} - -export default translation diff --git a/web/i18n/es-ES/custom.json b/web/i18n/es-ES/custom.json new file mode 100644 index 0000000000..6bb5608be3 --- /dev/null +++ b/web/i18n/es-ES/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "Personalización", + "upgradeTip": { + "prefix": "Actualiza tu plan para", + "suffix": "personalizar tu marca.", + "des": "Actualiza tu plan para personalizar tu marca", + "title": "Actualiza tu plan" + }, + "webapp": { + "title": "Personalizar marca de web app", + "removeBrand": "Eliminar Powered by Dify", + "changeLogo": "Cambiar Imagen de Marca Powered by", + "changeLogoTip": "Formato SVG o PNG con un tamaño mínimo de 40x40px" + }, + "app": { + "title": "Personalizar encabezado de la aplicación", + "changeLogoTip": "Formato SVG o PNG con un tamaño mínimo de 80x80px" + }, + "upload": "Subir", + "uploading": "Subiendo", + "uploadedFail": "Error al subir la imagen, por favor vuelve a intentar.", + "change": "Cambiar", + "apply": "Aplicar", + "restore": "Restaurar valores predeterminados", + "customize": { + "contactUs": " contáctanos ", + "prefix": "Para personalizar el logotipo de la marca dentro de la aplicación, por favor", + "suffix": "para actualizar a la edición Enterprise." + } +} diff --git a/web/i18n/es-ES/custom.ts b/web/i18n/es-ES/custom.ts deleted file mode 100644 index b7997581d4..0000000000 --- a/web/i18n/es-ES/custom.ts +++ /dev/null @@ -1,32 +0,0 @@ -const translation = { - custom: 'Personalización', - upgradeTip: { - prefix: 'Actualiza tu plan para', - suffix: 'personalizar tu marca.', - des: 'Actualiza tu plan para personalizar tu marca', - title: 'Actualiza tu plan', - }, - webapp: { - title: 'Personalizar marca de web app', - removeBrand: 'Eliminar Powered by Dify', - changeLogo: 'Cambiar Imagen de Marca Powered by', - changeLogoTip: 'Formato SVG o PNG con un tamaño mínimo de 40x40px', - }, - app: { - title: 'Personalizar encabezado de la aplicación', - changeLogoTip: 'Formato SVG o PNG con un tamaño mínimo de 80x80px', - }, - upload: 'Subir', - uploading: 'Subiendo', - uploadedFail: 'Error al subir la imagen, por favor vuelve a intentar.', - change: 'Cambiar', - apply: 'Aplicar', - restore: 'Restaurar valores predeterminados', - customize: { - contactUs: ' contáctanos ', - prefix: 'Para personalizar el logotipo de la marca dentro de la aplicación, por favor', - suffix: 'para actualizar a la edición Enterprise.', - }, -} - -export default translation diff --git a/web/i18n/es-ES/dataset-creation.json b/web/i18n/es-ES/dataset-creation.json new file mode 100644 index 0000000000..8c9b1143ac --- /dev/null +++ b/web/i18n/es-ES/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "Conocimiento" + }, + "one": "Elegir fuente de datos", + "two": "Preprocesamiento y limpieza de texto", + "three": "Ejecutar y finalizar" + }, + "error": { + "unavailable": "Este conocimiento no está disponible" + }, + "firecrawl": { + "configFirecrawl": "Configurar 🔥Firecrawl", + "apiKeyPlaceholder": "Clave de API de firecrawl.dev", + "getApiKeyLinkText": "Obtener tu clave de API de firecrawl.dev" + }, + "stepOne": { + "filePreview": "Vista previa del archivo", + "pagePreview": "Vista previa de la página", + "dataSourceType": { + "file": "Importar desde archivo", + "notion": "Sincronizar desde Notion", + "web": "Sincronizar desde sitio web" + }, + "uploader": { + "title": "Cargar archivo", + "button": "Arrastre y suelte archivos o carpetas, o", + "buttonSingleFile": "Arrastre y suelte archivo, o", + "browse": "Buscar", + "tip": "Soporta {{supportTypes}}. Máximo {{size}}MB cada uno.", + "validation": { + "typeError": "Tipo de archivo no soportado", + "size": "Archivo demasiado grande. El máximo es {{size}}MB", + "count": "No se admiten varios archivos", + "filesNumber": "Has alcanzado el límite de carga por lotes de {{filesNumber}}." + }, + "cancel": "Cancelar", + "change": "Cambiar", + "failed": "Error al cargar" + }, + "notionSyncTitle": "Notion no está conectado", + "notionSyncTip": "Para sincronizar con Notion, primero se debe establecer la conexión con Notion.", + "connect": "Ir a conectar", + "button": "Siguiente", + "emptyDatasetCreation": "Quiero crear un conocimiento vacío", + "modal": { + "title": "Crear un conocimiento vacío", + "tip": "Un conocimiento vacío no contendrá documentos y podrás cargar documentos en cualquier momento.", + "input": "Nombre del conocimiento", + "placeholder": "Por favor ingresa", + "nameNotEmpty": "El nombre no puede estar vacío", + "nameLengthInvalid": "El nombre debe tener entre 1 y 40 caracteres", + "cancelButton": "Cancelar", + "confirmButton": "Crear", + "failed": "Error al crear" + }, + "website": { + "fireCrawlNotConfigured": "Firecrawl no está configurado", + "fireCrawlNotConfiguredDescription": "Configura Firecrawl con la clave de API para poder utilizarlo.", + "configure": "Configurar", + "run": "Ejecutar", + "firecrawlTitle": "Extraer contenido web con 🔥Firecrawl", + "firecrawlDoc": "Documentación de Firecrawl", + "options": "Opciones", + "crawlSubPage": "Rastrear subpáginas", + "limit": "Límite", + "maxDepth": "Profundidad máxima", + "excludePaths": "Excluir rutas", + "includeOnlyPaths": "Incluir solo rutas", + "extractOnlyMainContent": "Extraer solo el contenido principal (sin encabezados, navegación, pies de página, etc.)", + "exceptionErrorTitle": "Se produjo una excepción al ejecutar el trabajo de Firecrawl:", + "unknownError": "Error desconocido", + "totalPageScraped": "Total de páginas extraídas:", + "selectAll": "Seleccionar todo", + "resetAll": "Restablecer todo", + "scrapTimeInfo": "Se extrajeron {{total}} páginas en total en {{time}}s", + "preview": "Vista previa", + "maxDepthTooltip": "Profundidad máxima para rastrear en relación con la URL ingresada. La profundidad 0 solo extrae la página de la URL ingresada, la profundidad 1 extrae la URL y todo lo después de la URL ingresada + una /, y así sucesivamente.", + "jinaReaderDocLink": "https://jina.ai/reader", + "jinaReaderNotConfigured": "Jina Reader no está configurado", + "useSitemap": "Usar el mapa del sitio", + "jinaReaderTitle": "Convertir todo el sitio a Markdown", + "jinaReaderNotConfiguredDescription": "Configura Jina Reader introduciendo tu clave API gratuita para acceder.", + "useSitemapTooltip": "Siga el mapa del sitio para rastrear el sitio. De lo contrario, Jina Reader rastreará de forma iterativa en función de la relevancia de la página, lo que producirá menos páginas pero de mayor calidad.", + "chooseProvider": "Seleccione un proveedor", + "jinaReaderDoc": "Más información sobre Jina Reader", + "watercrawlTitle": "Extraer contenido web con Watercrawl", + "waterCrawlNotConfigured": "Watercrawl no está configurado", + "configureFirecrawl": "Configurar Firecrawl", + "watercrawlDoc": "Documentos de Watercrawl", + "configureJinaReader": "Configurar Jina Reader", + "configureWatercrawl": "Configurar Watercrawl", + "waterCrawlNotConfiguredDescription": "Configura Watercrawl con la clave de API para usarlo.", + "running": "Corriente" + }, + "cancel": "Cancelar" + }, + "stepTwo": { + "segmentation": "Configuración de fragmentos", + "auto": "Automático", + "autoDescription": "Configura automáticamente las reglas de fragmentación y preprocesamiento. Se recomienda seleccionar esto para usuarios no familiarizados.", + "custom": "Personalizado", + "customDescription": "Personaliza las reglas de fragmentación, longitud de fragmentos y reglas de preprocesamiento, etc.", + "separator": "Identificador de segmento", + "separatorPlaceholder": "Por ejemplo, salto de línea (\\\\n) o separador especial (como \"***\")", + "maxLength": "Longitud máxima del fragmento", + "overlap": "Superposición de fragmentos", + "overlapTip": "Configurar la superposición de fragmentos puede mantener la relevancia semántica entre ellos, mejorando el efecto de recuperación. Se recomienda configurar el 10%-25% del tamaño máximo del fragmento.", + "overlapCheck": "La superposición de fragmentos no debe ser mayor que la longitud máxima del fragmento", + "rules": "Reglas de preprocesamiento de texto", + "removeExtraSpaces": "Reemplazar espacios, saltos de línea y tabulaciones consecutivas", + "removeUrlEmails": "Eliminar todas las URL y direcciones de correo electrónico", + "removeStopwords": "Eliminar palabras vacías como \"un\", \"una\", \"el\"", + "preview": "Confirmar y vista previa", + "reset": "Restablecer", + "indexMode": "Modo de índice", + "qualified": "Alta calidad", + "recommend": "Recomendado", + "qualifiedTip": "Llama a la interfaz de incrustación del sistema por defecto para proporcionar una mayor precisión cuando los usuarios realizan consultas.", + "warning": "Por favor, configura primero la clave de API del proveedor del modelo.", + "click": "Ir a configuración", + "economical": "Económico", + "economicalTip": "Utiliza motores de vector sin conexión, índices de palabras clave, etc. para reducir la precisión sin gastar tokens", + "QATitle": "Segmentación en formato de pregunta y respuesta", + "QATip": "Habilitar esta opción consumirá más tokens", + "QALanguage": "Segmentar usando", + "estimateCost": "Estimación", + "estimateSegment": "Fragmentos estimados", + "segmentCount": "fragmentos", + "calculating": "Calculando...", + "fileSource": "Preprocesar documentos", + "notionSource": "Preprocesar páginas", + "websiteSource": "Preprocesar sitio web", + "other": "y otros ", + "fileUnit": " archivos", + "notionUnit": " páginas", + "webpageUnit": " páginas", + "previousStep": "Paso anterior", + "nextStep": "Guardar y procesar", + "save": "Guardar y procesar", + "cancel": "Cancelar", + "sideTipTitle": "¿Por qué fragmentar y preprocesar?", + "sideTipP1": "Al procesar datos de texto, la fragmentación y la limpieza son dos pasos de preprocesamiento importantes.", + "sideTipP2": "La segmentación divide el texto largo en párrafos para que los modelos puedan entenderlo mejor. Esto mejora la calidad y relevancia de los resultados del modelo.", + "sideTipP3": "La limpieza elimina caracteres y formatos innecesarios, haciendo que el conocimiento sea más limpio y fácil de analizar.", + "sideTipP4": "Una fragmentación y limpieza adecuadas mejoran el rendimiento del modelo, proporcionando resultados más precisos y valiosos.", + "previewTitle": "Vista previa", + "previewTitleButton": "Vista previa", + "previewButton": "Cambiar a formato de pregunta y respuesta", + "previewSwitchTipStart": "La vista previa actual del fragmento está en formato de texto, cambiar a una vista previa en formato de pregunta y respuesta", + "previewSwitchTipEnd": " consumirá tokens adicionales", + "characters": "caracteres", + "indexSettingTip": "Para cambiar el método de índice, por favor ve a la ", + "retrievalSettingTip": "Para cambiar el método de índice, por favor ve a la ", + "datasetSettingLink": "configuración del conocimiento.", + "separatorTip": "Un delimitador es el carácter que se utiliza para separar el texto. \\n\\n y \\n son delimitadores comúnmente utilizados para separar párrafos y líneas. Combinado con comas (\\n\\n,\\n), los párrafos se segmentarán por líneas cuando excedan la longitud máxima del fragmento. También puede utilizar delimitadores especiales definidos por usted mismo (por ejemplo, ***).", + "maxLengthCheck": "La longitud máxima del fragmento debe ser inferior a {{limit}}", + "previewChunkTip": "Haga clic en el botón 'Vista previa de fragmento' a la izquierda para cargar la vista previa", + "parentChildChunkDelimiterTip": "Un delimitador es el carácter que se utiliza para separar el texto. \\n se recomienda para dividir fragmentos primarios en fragmentos secundarios pequeños. También puede utilizar delimitadores especiales definidos por usted mismo.", + "parentChildTip": "Cuando se utiliza el modo padre-hijo, el fragmento secundario se utiliza para la recuperación y el fragmento primario se utiliza para la recuperación como contexto.", + "switch": "Interruptor", + "parentChild": "Padre-hijo", + "childChunkForRetrieval": "Fragmento secundario para la recuperación", + "previewChunk": "Fragmento de vista previa", + "notAvailableForParentChild": "No disponible para el índice de elementos primarios y secundarios", + "paragraph": "Párrafo", + "parentChunkForContext": "Fragmento primario para contexto", + "fullDoc": "Documento completo", + "parentChildDelimiterTip": "Un delimitador es el carácter que se utiliza para separar el texto. \\n\\n se recomienda para dividir el documento original en grandes fragmentos principales. También puede utilizar delimitadores especiales definidos por usted mismo.", + "generalTip": "Modo de fragmentación de texto general, los fragmentos recuperados y recuperados son los mismos.", + "qaSwitchHighQualityTipContent": "Actualmente, solo el método de índice de alta calidad admite la fragmentación en formato de preguntas y respuestas. ¿Le gustaría cambiar al modo de alta calidad?", + "useQALanguage": "Fragmento usando el formato de preguntas y respuestas en", + "fullDocTip": "Todo el documento se utiliza como fragmento principal y se recupera directamente. Tenga en cuenta que, por razones de rendimiento, el texto que supere los 10000 tokens se trunqueará automáticamente.", + "paragraphTip": "Este modo divide el texto en párrafos en función de los delimitadores y la longitud máxima del fragmento, utilizando el texto dividido como fragmento principal para la recuperación.", + "highQualityTip": "Una vez finalizada la incrustación en el modo de alta calidad, no está disponible volver al modo económico.", + "notAvailableForQA": "No disponible para el índice de preguntas y respuestas", + "qaSwitchHighQualityTipTitle": "El formato de preguntas y respuestas requiere un método de indexación de alta calidad", + "previewChunkCount": "{{conteo}} Fragmentos estimados", + "general": "General", + "qaTip": "Al usar datos estructurados de preguntas y respuestas, puede crear documentos que combinen preguntas con respuestas. Estos documentos se indexan en función de la parte de la pregunta, lo que permite que el sistema recupere respuestas relevantes en función de la similitud de la consulta." + }, + "stepThree": { + "creationTitle": "🎉 Conocimiento creado", + "creationContent": "Hemos asignado automáticamente un nombre al conocimiento, puedes modificarlo en cualquier momento", + "label": "Nombre del conocimiento", + "additionTitle": "🎉 Documento cargado", + "additionP1": "El documento se ha cargado en el conocimiento", + "additionP2": ", puedes encontrarlo en la lista de documentos del conocimiento.", + "stop": "Detener procesamiento", + "resume": "Reanudar procesamiento", + "navTo": "Ir al documento", + "sideTipTitle": "¿Qué sigue?", + "sideTipContent": "Después de que el documento termine de indexarse, el conocimiento se puede integrar en la aplicación como contexto. Puedes encontrar la configuración de contexto en la página de orquestación de indicaciones. También puedes crearlo como un plugin de indexación ChatGPT independiente para su lanzamiento.", + "modelTitle": "¿Estás seguro de detener la incrustación?", + "modelContent": "Si necesitas reanudar el procesamiento más tarde, continuarás desde donde lo dejaste.", + "modelButtonConfirm": "Confirmar", + "modelButtonCancel": "Cancelar" + }, + "jinaReader": { + "configJinaReader": "Configurar Jina Reader", + "apiKeyPlaceholder": "Clave de API de jina.ai", + "getApiKeyLinkText": "Obtén tu clave API gratuita en jina.ai" + }, + "otherDataSource": { + "learnMore": "Aprende más", + "description": "Actualmente, la base de conocimientos de Ifiy solo tiene fuentes de datos limitadas. Contribuir con una fuente de datos a la base de conocimientos de Dify es una manera fantástica de ayudar a mejorar la flexibilidad y el poder de la plataforma para todos los usuarios. Nuestra guía de contribuciones hace que sea fácil comenzar. Haga clic en el enlace a continuación para obtener más información.", + "title": "¿Conectarse a otras fuentes de datos?" + }, + "watercrawl": { + "getApiKeyLinkText": "Obtén tu clave API de watercrawl.dev", + "apiKeyPlaceholder": "Clave API de watercrawl.dev", + "configWatercrawl": "Configurar Watercrawl" + } +} diff --git a/web/i18n/es-ES/dataset-creation.ts b/web/i18n/es-ES/dataset-creation.ts deleted file mode 100644 index e2dfafde8e..0000000000 --- a/web/i18n/es-ES/dataset-creation.ts +++ /dev/null @@ -1,217 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: 'Conocimiento', - }, - one: 'Elegir fuente de datos', - two: 'Preprocesamiento y limpieza de texto', - three: 'Ejecutar y finalizar', - }, - error: { - unavailable: 'Este conocimiento no está disponible', - }, - firecrawl: { - configFirecrawl: 'Configurar 🔥Firecrawl', - apiKeyPlaceholder: 'Clave de API de firecrawl.dev', - getApiKeyLinkText: 'Obtener tu clave de API de firecrawl.dev', - }, - stepOne: { - filePreview: 'Vista previa del archivo', - pagePreview: 'Vista previa de la página', - dataSourceType: { - file: 'Importar desde archivo', - notion: 'Sincronizar desde Notion', - web: 'Sincronizar desde sitio web', - }, - uploader: { - title: 'Cargar archivo', - button: 'Arrastre y suelte archivos o carpetas, o', - buttonSingleFile: 'Arrastre y suelte archivo, o', - browse: 'Buscar', - tip: 'Soporta {{supportTypes}}. Máximo {{size}}MB cada uno.', - validation: { - typeError: 'Tipo de archivo no soportado', - size: 'Archivo demasiado grande. El máximo es {{size}}MB', - count: 'No se admiten varios archivos', - filesNumber: 'Has alcanzado el límite de carga por lotes de {{filesNumber}}.', - }, - cancel: 'Cancelar', - change: 'Cambiar', - failed: 'Error al cargar', - }, - notionSyncTitle: 'Notion no está conectado', - notionSyncTip: 'Para sincronizar con Notion, primero se debe establecer la conexión con Notion.', - connect: 'Ir a conectar', - button: 'Siguiente', - emptyDatasetCreation: 'Quiero crear un conocimiento vacío', - modal: { - title: 'Crear un conocimiento vacío', - tip: 'Un conocimiento vacío no contendrá documentos y podrás cargar documentos en cualquier momento.', - input: 'Nombre del conocimiento', - placeholder: 'Por favor ingresa', - nameNotEmpty: 'El nombre no puede estar vacío', - nameLengthInvalid: 'El nombre debe tener entre 1 y 40 caracteres', - cancelButton: 'Cancelar', - confirmButton: 'Crear', - failed: 'Error al crear', - }, - website: { - fireCrawlNotConfigured: 'Firecrawl no está configurado', - fireCrawlNotConfiguredDescription: 'Configura Firecrawl con la clave de API para poder utilizarlo.', - configure: 'Configurar', - run: 'Ejecutar', - firecrawlTitle: 'Extraer contenido web con 🔥Firecrawl', - firecrawlDoc: 'Documentación de Firecrawl', - options: 'Opciones', - crawlSubPage: 'Rastrear subpáginas', - limit: 'Límite', - maxDepth: 'Profundidad máxima', - excludePaths: 'Excluir rutas', - includeOnlyPaths: 'Incluir solo rutas', - extractOnlyMainContent: 'Extraer solo el contenido principal (sin encabezados, navegación, pies de página, etc.)', - exceptionErrorTitle: 'Se produjo una excepción al ejecutar el trabajo de Firecrawl:', - unknownError: 'Error desconocido', - totalPageScraped: 'Total de páginas extraídas:', - selectAll: 'Seleccionar todo', - resetAll: 'Restablecer todo', - scrapTimeInfo: 'Se extrajeron {{total}} páginas en total en {{time}}s', - preview: 'Vista previa', - maxDepthTooltip: 'Profundidad máxima para rastrear en relación con la URL ingresada. La profundidad 0 solo extrae la página de la URL ingresada, la profundidad 1 extrae la URL y todo lo después de la URL ingresada + una /, y así sucesivamente.', - jinaReaderDocLink: 'https://jina.ai/reader', - jinaReaderNotConfigured: 'Jina Reader no está configurado', - useSitemap: 'Usar el mapa del sitio', - jinaReaderTitle: 'Convertir todo el sitio a Markdown', - jinaReaderNotConfiguredDescription: 'Configura Jina Reader introduciendo tu clave API gratuita para acceder.', - useSitemapTooltip: 'Siga el mapa del sitio para rastrear el sitio. De lo contrario, Jina Reader rastreará de forma iterativa en función de la relevancia de la página, lo que producirá menos páginas pero de mayor calidad.', - chooseProvider: 'Seleccione un proveedor', - jinaReaderDoc: 'Más información sobre Jina Reader', - watercrawlTitle: 'Extraer contenido web con Watercrawl', - waterCrawlNotConfigured: 'Watercrawl no está configurado', - configureFirecrawl: 'Configurar Firecrawl', - watercrawlDoc: 'Documentos de Watercrawl', - configureJinaReader: 'Configurar Jina Reader', - configureWatercrawl: 'Configurar Watercrawl', - waterCrawlNotConfiguredDescription: 'Configura Watercrawl con la clave de API para usarlo.', - running: 'Corriente', - }, - cancel: 'Cancelar', - }, - stepTwo: { - segmentation: 'Configuración de fragmentos', - auto: 'Automático', - autoDescription: 'Configura automáticamente las reglas de fragmentación y preprocesamiento. Se recomienda seleccionar esto para usuarios no familiarizados.', - custom: 'Personalizado', - customDescription: 'Personaliza las reglas de fragmentación, longitud de fragmentos y reglas de preprocesamiento, etc.', - separator: 'Identificador de segmento', - separatorPlaceholder: 'Por ejemplo, salto de línea (\\\\n) o separador especial (como "***")', - maxLength: 'Longitud máxima del fragmento', - overlap: 'Superposición de fragmentos', - overlapTip: 'Configurar la superposición de fragmentos puede mantener la relevancia semántica entre ellos, mejorando el efecto de recuperación. Se recomienda configurar el 10%-25% del tamaño máximo del fragmento.', - overlapCheck: 'La superposición de fragmentos no debe ser mayor que la longitud máxima del fragmento', - rules: 'Reglas de preprocesamiento de texto', - removeExtraSpaces: 'Reemplazar espacios, saltos de línea y tabulaciones consecutivas', - removeUrlEmails: 'Eliminar todas las URL y direcciones de correo electrónico', - removeStopwords: 'Eliminar palabras vacías como "un", "una", "el"', - preview: 'Confirmar y vista previa', - reset: 'Restablecer', - indexMode: 'Modo de índice', - qualified: 'Alta calidad', - recommend: 'Recomendado', - qualifiedTip: 'Llama a la interfaz de incrustación del sistema por defecto para proporcionar una mayor precisión cuando los usuarios realizan consultas.', - warning: 'Por favor, configura primero la clave de API del proveedor del modelo.', - click: 'Ir a configuración', - economical: 'Económico', - economicalTip: 'Utiliza motores de vector sin conexión, índices de palabras clave, etc. para reducir la precisión sin gastar tokens', - QATitle: 'Segmentación en formato de pregunta y respuesta', - QATip: 'Habilitar esta opción consumirá más tokens', - QALanguage: 'Segmentar usando', - estimateCost: 'Estimación', - estimateSegment: 'Fragmentos estimados', - segmentCount: 'fragmentos', - calculating: 'Calculando...', - fileSource: 'Preprocesar documentos', - notionSource: 'Preprocesar páginas', - websiteSource: 'Preprocesar sitio web', - other: 'y otros ', - fileUnit: ' archivos', - notionUnit: ' páginas', - webpageUnit: ' páginas', - previousStep: 'Paso anterior', - nextStep: 'Guardar y procesar', - save: 'Guardar y procesar', - cancel: 'Cancelar', - sideTipTitle: '¿Por qué fragmentar y preprocesar?', - sideTipP1: 'Al procesar datos de texto, la fragmentación y la limpieza son dos pasos de preprocesamiento importantes.', - sideTipP2: 'La segmentación divide el texto largo en párrafos para que los modelos puedan entenderlo mejor. Esto mejora la calidad y relevancia de los resultados del modelo.', - sideTipP3: 'La limpieza elimina caracteres y formatos innecesarios, haciendo que el conocimiento sea más limpio y fácil de analizar.', - sideTipP4: 'Una fragmentación y limpieza adecuadas mejoran el rendimiento del modelo, proporcionando resultados más precisos y valiosos.', - previewTitle: 'Vista previa', - previewTitleButton: 'Vista previa', - previewButton: 'Cambiar a formato de pregunta y respuesta', - previewSwitchTipStart: 'La vista previa actual del fragmento está en formato de texto, cambiar a una vista previa en formato de pregunta y respuesta', - previewSwitchTipEnd: ' consumirá tokens adicionales', - characters: 'caracteres', - indexSettingTip: 'Para cambiar el método de índice, por favor ve a la ', - retrievalSettingTip: 'Para cambiar el método de índice, por favor ve a la ', - datasetSettingLink: 'configuración del conocimiento.', - separatorTip: 'Un delimitador es el carácter que se utiliza para separar el texto. \\n\\n y \\n son delimitadores comúnmente utilizados para separar párrafos y líneas. Combinado con comas (\\n\\n,\\n), los párrafos se segmentarán por líneas cuando excedan la longitud máxima del fragmento. También puede utilizar delimitadores especiales definidos por usted mismo (por ejemplo, ***).', - maxLengthCheck: 'La longitud máxima del fragmento debe ser inferior a {{limit}}', - previewChunkTip: 'Haga clic en el botón \'Vista previa de fragmento\' a la izquierda para cargar la vista previa', - parentChildChunkDelimiterTip: 'Un delimitador es el carácter que se utiliza para separar el texto. \\n se recomienda para dividir fragmentos primarios en fragmentos secundarios pequeños. También puede utilizar delimitadores especiales definidos por usted mismo.', - parentChildTip: 'Cuando se utiliza el modo padre-hijo, el fragmento secundario se utiliza para la recuperación y el fragmento primario se utiliza para la recuperación como contexto.', - switch: 'Interruptor', - parentChild: 'Padre-hijo', - childChunkForRetrieval: 'Fragmento secundario para la recuperación', - previewChunk: 'Fragmento de vista previa', - notAvailableForParentChild: 'No disponible para el índice de elementos primarios y secundarios', - paragraph: 'Párrafo', - parentChunkForContext: 'Fragmento primario para contexto', - fullDoc: 'Documento completo', - parentChildDelimiterTip: 'Un delimitador es el carácter que se utiliza para separar el texto. \\n\\n se recomienda para dividir el documento original en grandes fragmentos principales. También puede utilizar delimitadores especiales definidos por usted mismo.', - generalTip: 'Modo de fragmentación de texto general, los fragmentos recuperados y recuperados son los mismos.', - qaSwitchHighQualityTipContent: 'Actualmente, solo el método de índice de alta calidad admite la fragmentación en formato de preguntas y respuestas. ¿Le gustaría cambiar al modo de alta calidad?', - useQALanguage: 'Fragmento usando el formato de preguntas y respuestas en', - fullDocTip: 'Todo el documento se utiliza como fragmento principal y se recupera directamente. Tenga en cuenta que, por razones de rendimiento, el texto que supere los 10000 tokens se trunqueará automáticamente.', - paragraphTip: 'Este modo divide el texto en párrafos en función de los delimitadores y la longitud máxima del fragmento, utilizando el texto dividido como fragmento principal para la recuperación.', - highQualityTip: 'Una vez finalizada la incrustación en el modo de alta calidad, no está disponible volver al modo económico.', - notAvailableForQA: 'No disponible para el índice de preguntas y respuestas', - qaSwitchHighQualityTipTitle: 'El formato de preguntas y respuestas requiere un método de indexación de alta calidad', - previewChunkCount: '{{conteo}} Fragmentos estimados', - general: 'General', - qaTip: 'Al usar datos estructurados de preguntas y respuestas, puede crear documentos que combinen preguntas con respuestas. Estos documentos se indexan en función de la parte de la pregunta, lo que permite que el sistema recupere respuestas relevantes en función de la similitud de la consulta.', - }, - stepThree: { - creationTitle: '🎉 Conocimiento creado', - creationContent: 'Hemos asignado automáticamente un nombre al conocimiento, puedes modificarlo en cualquier momento', - label: 'Nombre del conocimiento', - additionTitle: '🎉 Documento cargado', - additionP1: 'El documento se ha cargado en el conocimiento', - additionP2: ', puedes encontrarlo en la lista de documentos del conocimiento.', - stop: 'Detener procesamiento', - resume: 'Reanudar procesamiento', - navTo: 'Ir al documento', - sideTipTitle: '¿Qué sigue?', - sideTipContent: 'Después de que el documento termine de indexarse, el conocimiento se puede integrar en la aplicación como contexto. Puedes encontrar la configuración de contexto en la página de orquestación de indicaciones. También puedes crearlo como un plugin de indexación ChatGPT independiente para su lanzamiento.', - modelTitle: '¿Estás seguro de detener la incrustación?', - modelContent: 'Si necesitas reanudar el procesamiento más tarde, continuarás desde donde lo dejaste.', - modelButtonConfirm: 'Confirmar', - modelButtonCancel: 'Cancelar', - }, - jinaReader: { - configJinaReader: 'Configurar Jina Reader', - apiKeyPlaceholder: 'Clave de API de jina.ai', - getApiKeyLinkText: 'Obtén tu clave API gratuita en jina.ai', - }, - otherDataSource: { - learnMore: 'Aprende más', - description: 'Actualmente, la base de conocimientos de Ifiy solo tiene fuentes de datos limitadas. Contribuir con una fuente de datos a la base de conocimientos de Dify es una manera fantástica de ayudar a mejorar la flexibilidad y el poder de la plataforma para todos los usuarios. Nuestra guía de contribuciones hace que sea fácil comenzar. Haga clic en el enlace a continuación para obtener más información.', - title: '¿Conectarse a otras fuentes de datos?', - }, - watercrawl: { - getApiKeyLinkText: 'Obtén tu clave API de watercrawl.dev', - apiKeyPlaceholder: 'Clave API de watercrawl.dev', - configWatercrawl: 'Configurar Watercrawl', - }, -} - -export default translation diff --git a/web/i18n/es-ES/dataset-documents.json b/web/i18n/es-ES/dataset-documents.json new file mode 100644 index 0000000000..ea59812e2c --- /dev/null +++ b/web/i18n/es-ES/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "Documentos", + "desc": "Aquí se muestran todos los archivos del Conocimiento, y todo el Conocimiento se puede vincular a citas de Dify o indexarse a través del complemento de Chat.", + "addFile": "Agregar archivo", + "addPages": "Agregar páginas", + "addUrl": "Agregar URL", + "table": { + "header": { + "fileName": "NOMBRE DEL ARCHIVO", + "words": "PALABRAS", + "hitCount": "CANTIDAD DE RECUPERACIÓN", + "uploadTime": "TIEMPO DE CARGA", + "status": "ESTADO", + "action": "ACCIÓN", + "chunkingMode": "MODO DE FRAGMENTACIÓN" + }, + "rename": "Renombrar", + "name": "Nombre" + }, + "action": { + "uploadFile": "Subir nuevo archivo", + "settings": "Configuración de segmento", + "addButton": "Agregar fragmento", + "add": "Agregar un fragmento", + "batchAdd": "Agregar en lotes", + "archive": "Archivar", + "unarchive": "Desarchivar", + "delete": "Eliminar", + "enableWarning": "El archivo archivado no puede habilitarse", + "sync": "Sincronizar", + "resume": "Reanudar", + "pause": "Pausa" + }, + "index": { + "enable": "Habilitar", + "disable": "Deshabilitar", + "all": "Todos", + "enableTip": "El archivo se puede indexar", + "disableTip": "El archivo no se puede indexar" + }, + "status": { + "queuing": "En cola", + "indexing": "Indexando", + "paused": "Pausado", + "error": "Error", + "available": "Disponible", + "enabled": "Habilitado", + "disabled": "Deshabilitado", + "archived": "Archivado" + }, + "empty": { + "title": "Aún no hay documentación", + "upload": { + "tip": "Puedes subir archivos, sincronizar desde el sitio web o desde aplicaciones web como Notion, GitHub, etc." + }, + "sync": { + "tip": "Dify descargará periódicamente archivos desde tu Notion y completará el procesamiento." + } + }, + "delete": { + "title": "¿Seguro que deseas eliminar?", + "content": "Si necesitas reanudar el procesamiento más tarde, continuarás desde donde lo dejaste." + }, + "batchModal": { + "title": "Agregar fragmentos en lotes", + "csvUploadTitle": "Arrastra y suelta tu archivo CSV aquí, o ", + "browse": "navega", + "tip": "El archivo CSV debe cumplir con la siguiente estructura:", + "question": "pregunta", + "answer": "respuesta", + "contentTitle": "contenido del fragmento", + "content": "contenido", + "template": "Descarga la plantilla aquí", + "cancel": "Cancelar", + "run": "Ejecutar en lotes", + "runError": "Error al ejecutar en lotes", + "processing": "Procesamiento en lotes", + "completed": "Importación completada", + "error": "Error de importación", + "ok": "Aceptar" + }, + "learnMore": "Aprende más", + "sort": { + "uploadTime": "Hora de subida", + "hitCount": "Conteo de Recuperaciones" + } + }, + "metadata": { + "title": "Metadatos", + "desc": "Etiquetar metadatos para documentos permite que la IA acceda a ellos de manera oportuna y expone la fuente de referencias para los usuarios.", + "dateTimeFormat": "MMMM D, YYYY hh:mm A", + "docTypeSelectTitle": "Por favor, selecciona un tipo de documento", + "docTypeChangeTitle": "Cambiar tipo de documento", + "docTypeSelectWarning": "Si se cambia el tipo de documento, los metadatos ahora llenos ya no se conservarán.", + "firstMetaAction": "Vamos D", + "placeholder": { + "add": "Agregar ", + "select": "Seleccionar " + }, + "source": { + "upload_file": "Subir archivo", + "notion": "Sincronizar desde Notion", + "github": "Sincronizar desde GitHub", + "online_document": "Documento en línea", + "local_file": "Archivo local", + "website_crawl": "Rastreo del sitio web" + }, + "type": { + "book": "Libro", + "webPage": "Página Web", + "paper": "Artículo", + "socialMediaPost": "Publicación en Redes Sociales", + "personalDocument": "Documento Personal", + "businessDocument": "Documento de Negocios", + "IMChat": "Chat IM", + "wikipediaEntry": "Entrada de Wikipedia", + "notion": "Sincronizar desde Notion", + "github": "Sincronizar desde GitHub", + "technicalParameters": "Parámetros Técnicos" + }, + "field": { + "processRule": { + "processDoc": "Procesar documento", + "segmentRule": "Regla de segmentación", + "segmentLength": "Longitud de fragmentos", + "processClean": "Limpieza de texto procesado" + }, + "book": { + "title": "Título", + "language": "Idioma", + "author": "Autor", + "publisher": "Editorial", + "publicationDate": "Fecha de publicación", + "ISBN": "ISBN", + "category": "Categoría" + }, + "webPage": { + "title": "Título", + "url": "URL", + "language": "Idioma", + "authorPublisher": "Autor/Editorial", + "publishDate": "Fecha de publicación", + "topicKeywords": "Temas/Palabras clave", + "description": "Descripción" + }, + "paper": { + "title": "Título", + "language": "Idioma", + "author": "Autor", + "publishDate": "Fecha de publicación", + "journalConferenceName": "Nombre de la revista/conferencia", + "volumeIssuePage": "Volumen/Número/Página", + "DOI": "DOI", + "topicsKeywords": "Temas/Palabras clave", + "abstract": "Resumen" + }, + "socialMediaPost": { + "platform": "Plataforma", + "authorUsername": "Autor/Nombre de usuario", + "publishDate": "Fecha de publicación", + "postURL": "URL de la publicación", + "topicsTags": "Temas/Etiquetas" + }, + "personalDocument": { + "title": "Título", + "author": "Autor", + "creationDate": "Fecha de creación", + "lastModifiedDate": "Última fecha de modificación", + "documentType": "Tipo de documento", + "tagsCategory": "Etiquetas/Categoría" + }, + "businessDocument": { + "title": "Título", + "author": "Autor", + "creationDate": "Fecha de creación", + "lastModifiedDate": "Última fecha de modificación", + "documentType": "Tipo de documento", + "departmentTeam": "Departamento/Equipo" + }, + "IMChat": { + "chatPlatform": "Plataforma de chat", + "chatPartiesGroupName": "Partes de chat/Nombre del grupo", + "participants": "Participantes", + "startDate": "Fecha de inicio", + "endDate": "Fecha de fin", + "topicsKeywords": "Temas/Palabras clave", + "fileType": "Tipo de archivo" + }, + "wikipediaEntry": { + "title": "Título", + "language": "Idioma", + "webpageURL": "URL de la página web", + "editorContributor": "Editor/Contribuidor", + "lastEditDate": "Última fecha de edición", + "summaryIntroduction": "Resumen/Introducción" + }, + "notion": { + "title": "Título", + "language": "Idioma", + "author": "Autor", + "createdTime": "Fecha de creación", + "lastModifiedTime": "Última fecha de modificación", + "url": "URL", + "tag": "Etiqueta", + "description": "Descripción" + }, + "github": { + "repoName": "Nombre del repositorio", + "repoDesc": "Descripción del repositorio", + "repoOwner": "Propietario del repositorio", + "fileName": "Nombre del archivo", + "filePath": "Ruta del archivo", + "programmingLang": "Lenguaje de programación", + "url": "URL", + "license": "Licencia", + "lastCommitTime": "Última hora de compromiso", + "lastCommitAuthor": "Último autor del compromiso" + }, + "originInfo": { + "originalFilename": "Nombre de archivo original", + "originalFileSize": "Tamaño de archivo original", + "uploadDate": "Fecha de carga", + "lastUpdateDate": "Última fecha de actualización", + "source": "Fuente" + }, + "technicalParameters": { + "segmentSpecification": "Especificación de fragmentos", + "segmentLength": "Longitud de fragmentos", + "avgParagraphLength": "Longitud promedio del párrafo", + "paragraphs": "Párrafos", + "hitCount": "Cantidad de recuperación", + "embeddingTime": "Tiempo de incrustación", + "embeddedSpend": "Gasto incrustado" + } + }, + "languageMap": { + "zh": "Chino", + "en": "Inglés", + "es": "Español", + "fr": "Francés", + "de": "Alemán", + "ja": "Japonés", + "ko": "Coreano", + "ru": "Ruso", + "ar": "Árabe", + "pt": "Portugués", + "it": "Italiano", + "nl": "Holandés", + "pl": "Polaco", + "sv": "Sueco", + "tr": "Turco", + "he": "Hebreo", + "hi": "Hindi", + "da": "Danés", + "fi": "Finlandés", + "no": "Noruego", + "hu": "Húngaro", + "el": "Griego", + "cs": "Checo", + "th": "Tailandés", + "id": "Indonesio" + }, + "categoryMap": { + "book": { + "fiction": "Ficción", + "biography": "Biografía", + "history": "Historia", + "science": "Ciencia", + "technology": "Tecnología", + "education": "Educación", + "philosophy": "Filosofía", + "religion": "Religión", + "socialSciences": "Ciencias Sociales", + "art": "Arte", + "travel": "Viaje", + "health": "Salud", + "selfHelp": "Autoayuda", + "businessEconomics": "Negocios y Economía", + "cooking": "Cocina", + "childrenYoungAdults": "Niños y Jóvenes Adultos", + "comicsGraphicNovels": "Cómics y Novelas Gráficas", + "poetry": "Poesía", + "drama": "Drama", + "other": "Otros" + }, + "personalDoc": { + "notes": "Notas", + "blogDraft": "Borrador de blog", + "diary": "Diario", + "researchReport": "Informe de investigación", + "bookExcerpt": "Extracto de libro", + "schedule": "Horario", + "list": "Lista", + "projectOverview": "Visión general del proyecto", + "photoCollection": "Colección de fotos", + "creativeWriting": "Escritura creativa", + "codeSnippet": "Fragmento de código", + "designDraft": "Borrador de diseño", + "personalResume": "Currículum personal", + "other": "Otros" + }, + "businessDoc": { + "meetingMinutes": "Minutos de reunión", + "researchReport": "Informe de investigación", + "proposal": "Propuesta", + "employeeHandbook": "Manual del empleado", + "trainingMaterials": "Materiales de capacitación", + "requirementsDocument": "Documento de requisitos", + "designDocument": "Documento de diseño", + "productSpecification": "Especificación del producto", + "financialReport": "Informe financiero", + "marketAnalysis": "Análisis de mercado", + "projectPlan": "Plan de proyecto", + "teamStructure": "Estructura del equipo", + "policiesProcedures": "Políticas y procedimientos", + "contractsAgreements": "Contratos y acuerdos", + "emailCorrespondence": "Correspondencia por correo electrónico", + "other": "Otros" + } + } + }, + "embedding": { + "processing": "Procesando incrustación...", + "paused": "Incrustación pausada", + "completed": "Incrustación completada", + "error": "Error de incrustación", + "docName": "Preprocesamiento del documento", + "mode": "Regla de segmentación", + "segmentLength": "Longitud de fragmentos", + "textCleaning": "Definición de texto y limpieza previa", + "segments": "Párrafos", + "highQuality": "Modo de alta calidad", + "economy": "Modo económico", + "estimate": "Consumo estimado", + "stop": "Detener procesamiento", + "resume": "Reanudar procesamiento", + "automatic": "Automático", + "custom": "Personalizado", + "previewTip": "La vista previa del párrafo estará disponible después de que se complete la incrustación", + "pause": "Pausa", + "childMaxTokens": "Niño", + "hierarchical": "Padre-hijo", + "parentMaxTokens": "Padre", + "waiting": "Esperando incrustación..." + }, + "segment": { + "paragraphs": "Párrafos", + "keywords": "Palabras clave", + "addKeyWord": "Agregar palabra clave", + "keywordError": "La longitud máxima de la palabra clave es 20", + "hitCount": "Cantidad de recuperación", + "vectorHash": "Hash de vector: ", + "questionPlaceholder": "agregar pregunta aquí", + "questionEmpty": "La pregunta no puede estar vacía", + "answerPlaceholder": "agregar respuesta aquí", + "answerEmpty": "La respuesta no puede estar vacía", + "contentPlaceholder": "agregar contenido aquí", + "contentEmpty": "El contenido no puede estar vacío", + "newTextSegment": "Nuevo segmento de texto", + "newQaSegment": "Nuevo segmento de preguntas y respuestas", + "delete": "¿Eliminar este fragmento?", + "chunks_one": "PEDAZO", + "childChunks_one": "FRAGMENTO SECUNDARIO", + "searchResults_other": "RESULTADOS", + "newChunk": "Nuevo fragmento", + "childChunk": "Fragmento secundario", + "addChunk": "Agregar fragmento", + "editParentChunk": "Editar fragmento principal", + "regenerationConfirmMessage": "La regeneración de fragmentos secundarios sobrescribirá los fragmentos secundarios actuales, incluidos los fragmentos editados y los fragmentos recién agregados. La regeneración no se puede deshacer.", + "addAnother": "Añade otro", + "regeneratingMessage": "Esto puede tardar un momento, por favor espere...", + "addChildChunk": "Agregar fragmento secundario", + "chunks_other": "TROZOS", + "editChunk": "Editar fragmento", + "searchResults_one": "RESULTADO", + "parentChunks_one": "FRAGMENTO PRIMARIO", + "edited": "EDITADO", + "childChunkAdded": "Se ha añadido 1 fragmento secundario", + "childChunks_other": "FRAGMENTOS SECUNDARIOS", + "chunkAdded": "1 trozo añadido", + "parentChunk": "Fragmento primario", + "editChildChunk": "Editar fragmento secundario", + "regeneratingTitle": "Regeneración de fragmentos secundarios", + "editedAt": "Editado en", + "dateTimeFormat": "MM/DD/YYYY h:mm", + "searchResults_zero": "RESULTADO", + "clearFilter": "Borrar filtro", + "newChildChunk": "Nuevo fragmento secundario", + "chunkDetail": "Detalle de fragmentos", + "chunk": "Pedazo", + "parentChunks_other": "FRAGMENTOS PRINCIPALES", + "expandChunks": "Expandir fragmentos", + "empty": "No se ha encontrado ningún fragmento", + "regenerationSuccessTitle": "Regeneración completada", + "collapseChunks": "Contraer fragmentos", + "characters_other": "Caracteres", + "characters_one": "carácter", + "regenerationSuccessMessage": "Puede cerrar esta ventana.", + "regenerationConfirmTitle": "¿Desea regenerar fragmentos secundarios?", + "keywordEmpty": "La palabra clave no puede estar vacía", + "keywordDuplicate": "La palabra clave ya existe", + "allFilesUploaded": "Todos los archivos deben subirse antes de guardar" + } +} diff --git a/web/i18n/es-ES/dataset-documents.ts b/web/i18n/es-ES/dataset-documents.ts deleted file mode 100644 index 379e3c47ff..0000000000 --- a/web/i18n/es-ES/dataset-documents.ts +++ /dev/null @@ -1,408 +0,0 @@ -const translation = { - list: { - title: 'Documentos', - desc: 'Aquí se muestran todos los archivos del Conocimiento, y todo el Conocimiento se puede vincular a citas de Dify o indexarse a través del complemento de Chat.', - addFile: 'Agregar archivo', - addPages: 'Agregar páginas', - addUrl: 'Agregar URL', - table: { - header: { - fileName: 'NOMBRE DEL ARCHIVO', - words: 'PALABRAS', - hitCount: 'CANTIDAD DE RECUPERACIÓN', - uploadTime: 'TIEMPO DE CARGA', - status: 'ESTADO', - action: 'ACCIÓN', - chunkingMode: 'MODO DE FRAGMENTACIÓN', - }, - rename: 'Renombrar', - name: 'Nombre', - }, - action: { - uploadFile: 'Subir nuevo archivo', - settings: 'Configuración de segmento', - addButton: 'Agregar fragmento', - add: 'Agregar un fragmento', - batchAdd: 'Agregar en lotes', - archive: 'Archivar', - unarchive: 'Desarchivar', - delete: 'Eliminar', - enableWarning: 'El archivo archivado no puede habilitarse', - sync: 'Sincronizar', - resume: 'Reanudar', - pause: 'Pausa', - }, - index: { - enable: 'Habilitar', - disable: 'Deshabilitar', - all: 'Todos', - enableTip: 'El archivo se puede indexar', - disableTip: 'El archivo no se puede indexar', - }, - status: { - queuing: 'En cola', - indexing: 'Indexando', - paused: 'Pausado', - error: 'Error', - available: 'Disponible', - enabled: 'Habilitado', - disabled: 'Deshabilitado', - archived: 'Archivado', - }, - empty: { - title: 'Aún no hay documentación', - upload: { - tip: 'Puedes subir archivos, sincronizar desde el sitio web o desde aplicaciones web como Notion, GitHub, etc.', - }, - sync: { - tip: 'Dify descargará periódicamente archivos desde tu Notion y completará el procesamiento.', - }, - }, - delete: { - title: '¿Seguro que deseas eliminar?', - content: 'Si necesitas reanudar el procesamiento más tarde, continuarás desde donde lo dejaste.', - }, - batchModal: { - title: 'Agregar fragmentos en lotes', - csvUploadTitle: 'Arrastra y suelta tu archivo CSV aquí, o ', - browse: 'navega', - tip: 'El archivo CSV debe cumplir con la siguiente estructura:', - question: 'pregunta', - answer: 'respuesta', - contentTitle: 'contenido del fragmento', - content: 'contenido', - template: 'Descarga la plantilla aquí', - cancel: 'Cancelar', - run: 'Ejecutar en lotes', - runError: 'Error al ejecutar en lotes', - processing: 'Procesamiento en lotes', - completed: 'Importación completada', - error: 'Error de importación', - ok: 'Aceptar', - }, - learnMore: 'Aprende más', - sort: { - uploadTime: 'Hora de subida', - hitCount: 'Conteo de Recuperaciones', - }, - }, - metadata: { - title: 'Metadatos', - desc: 'Etiquetar metadatos para documentos permite que la IA acceda a ellos de manera oportuna y expone la fuente de referencias para los usuarios.', - dateTimeFormat: 'MMMM D, YYYY hh:mm A', - docTypeSelectTitle: 'Por favor, selecciona un tipo de documento', - docTypeChangeTitle: 'Cambiar tipo de documento', - docTypeSelectWarning: - 'Si se cambia el tipo de documento, los metadatos ahora llenos ya no se conservarán.', - firstMetaAction: 'Vamos D', - placeholder: { - add: 'Agregar ', - select: 'Seleccionar ', - }, - source: { - upload_file: 'Subir archivo', - notion: 'Sincronizar desde Notion', - github: 'Sincronizar desde GitHub', - online_document: 'Documento en línea', - local_file: 'Archivo local', - website_crawl: 'Rastreo del sitio web', - }, - type: { - book: 'Libro', - webPage: 'Página Web', - paper: 'Artículo', - socialMediaPost: 'Publicación en Redes Sociales', - personalDocument: 'Documento Personal', - businessDocument: 'Documento de Negocios', - IMChat: 'Chat IM', - wikipediaEntry: 'Entrada de Wikipedia', - notion: 'Sincronizar desde Notion', - github: 'Sincronizar desde GitHub', - technicalParameters: 'Parámetros Técnicos', - }, - field: { - processRule: { - processDoc: 'Procesar documento', - segmentRule: 'Regla de segmentación', - segmentLength: 'Longitud de fragmentos', - processClean: 'Limpieza de texto procesado', - }, - book: { - title: 'Título', - language: 'Idioma', - author: 'Autor', - publisher: 'Editorial', - publicationDate: 'Fecha de publicación', - ISBN: 'ISBN', - category: 'Categoría', - }, - webPage: { - title: 'Título', - url: 'URL', - language: 'Idioma', - authorPublisher: 'Autor/Editorial', - publishDate: 'Fecha de publicación', - topicKeywords: 'Temas/Palabras clave', - description: 'Descripción', - }, - paper: { - title: 'Título', - language: 'Idioma', - author: 'Autor', - publishDate: 'Fecha de publicación', - journalConferenceName: 'Nombre de la revista/conferencia', - volumeIssuePage: 'Volumen/Número/Página', - DOI: 'DOI', - topicsKeywords: 'Temas/Palabras clave', - abstract: 'Resumen', - }, - socialMediaPost: { - platform: 'Plataforma', - authorUsername: 'Autor/Nombre de usuario', - publishDate: 'Fecha de publicación', - postURL: 'URL de la publicación', - topicsTags: 'Temas/Etiquetas', - }, - personalDocument: { - title: 'Título', - author: 'Autor', - creationDate: 'Fecha de creación', - lastModifiedDate: 'Última fecha de modificación', - documentType: 'Tipo de documento', - tagsCategory: 'Etiquetas/Categoría', - }, - businessDocument: { - title: 'Título', - author: 'Autor', - creationDate: 'Fecha de creación', - lastModifiedDate: 'Última fecha de modificación', - documentType: 'Tipo de documento', - departmentTeam: 'Departamento/Equipo', - }, - IMChat: { - chatPlatform: 'Plataforma de chat', - chatPartiesGroupName: 'Partes de chat/Nombre del grupo', - participants: 'Participantes', - startDate: 'Fecha de inicio', - endDate: 'Fecha de fin', - topicsKeywords: 'Temas/Palabras clave', - fileType: 'Tipo de archivo', - }, - wikipediaEntry: { - title: 'Título', - language: 'Idioma', - webpageURL: 'URL de la página web', - editorContributor: 'Editor/Contribuidor', - lastEditDate: 'Última fecha de edición', - summaryIntroduction: 'Resumen/Introducción', - }, - notion: { - title: 'Título', - language: 'Idioma', - author: 'Autor', - createdTime: 'Fecha de creación', - lastModifiedTime: 'Última fecha de modificación', - url: 'URL', - tag: 'Etiqueta', - description: 'Descripción', - }, - github: { - repoName: 'Nombre del repositorio', - repoDesc: 'Descripción del repositorio', - repoOwner: 'Propietario del repositorio', - fileName: 'Nombre del archivo', - filePath: 'Ruta del archivo', - programmingLang: 'Lenguaje de programación', - url: 'URL', - license: 'Licencia', - lastCommitTime: 'Última hora de compromiso', - lastCommitAuthor: 'Último autor del compromiso', - }, - originInfo: { - originalFilename: 'Nombre de archivo original', - originalFileSize: 'Tamaño de archivo original', - uploadDate: 'Fecha de carga', - lastUpdateDate: 'Última fecha de actualización', - source: 'Fuente', - }, - technicalParameters: { - segmentSpecification: 'Especificación de fragmentos', - segmentLength: 'Longitud de fragmentos', - avgParagraphLength: 'Longitud promedio del párrafo', - paragraphs: 'Párrafos', - hitCount: 'Cantidad de recuperación', - embeddingTime: 'Tiempo de incrustación', - embeddedSpend: 'Gasto incrustado', - }, - }, - languageMap: { - zh: 'Chino', - en: 'Inglés', - es: 'Español', - fr: 'Francés', - de: 'Alemán', - ja: 'Japonés', - ko: 'Coreano', - ru: 'Ruso', - ar: 'Árabe', - pt: 'Portugués', - it: 'Italiano', - nl: 'Holandés', - pl: 'Polaco', - sv: 'Sueco', - tr: 'Turco', - he: 'Hebreo', - hi: 'Hindi', - da: 'Danés', - fi: 'Finlandés', - no: 'Noruego', - hu: 'Húngaro', - el: 'Griego', - cs: 'Checo', - th: 'Tailandés', - id: 'Indonesio', - }, - categoryMap: { - book: { - fiction: 'Ficción', - biography: 'Biografía', - history: 'Historia', - science: 'Ciencia', - technology: 'Tecnología', - education: 'Educación', - philosophy: 'Filosofía', - religion: 'Religión', - socialSciences: 'Ciencias Sociales', - art: 'Arte', - travel: 'Viaje', - health: 'Salud', - selfHelp: 'Autoayuda', - businessEconomics: 'Negocios y Economía', - cooking: 'Cocina', - childrenYoungAdults: 'Niños y Jóvenes Adultos', - comicsGraphicNovels: 'Cómics y Novelas Gráficas', - poetry: 'Poesía', - drama: 'Drama', - other: 'Otros', - }, - personalDoc: { - notes: 'Notas', - blogDraft: 'Borrador de blog', - diary: 'Diario', - researchReport: 'Informe de investigación', - bookExcerpt: 'Extracto de libro', - schedule: 'Horario', - list: 'Lista', - projectOverview: 'Visión general del proyecto', - photoCollection: 'Colección de fotos', - creativeWriting: 'Escritura creativa', - codeSnippet: 'Fragmento de código', - designDraft: 'Borrador de diseño', - personalResume: 'Currículum personal', - other: 'Otros', - }, - businessDoc: { - meetingMinutes: 'Minutos de reunión', - researchReport: 'Informe de investigación', - proposal: 'Propuesta', - employeeHandbook: 'Manual del empleado', - trainingMaterials: 'Materiales de capacitación', - requirementsDocument: 'Documento de requisitos', - designDocument: 'Documento de diseño', - productSpecification: 'Especificación del producto', - financialReport: 'Informe financiero', - marketAnalysis: 'Análisis de mercado', - projectPlan: 'Plan de proyecto', - teamStructure: 'Estructura del equipo', - policiesProcedures: 'Políticas y procedimientos', - contractsAgreements: 'Contratos y acuerdos', - emailCorrespondence: 'Correspondencia por correo electrónico', - other: 'Otros', - }, - }, - }, - embedding: { - processing: 'Procesando incrustación...', - paused: 'Incrustación pausada', - completed: 'Incrustación completada', - error: 'Error de incrustación', - docName: 'Preprocesamiento del documento', - mode: 'Regla de segmentación', - segmentLength: 'Longitud de fragmentos', - textCleaning: 'Definición de texto y limpieza previa', - segments: 'Párrafos', - highQuality: 'Modo de alta calidad', - economy: 'Modo económico', - estimate: 'Consumo estimado', - stop: 'Detener procesamiento', - resume: 'Reanudar procesamiento', - automatic: 'Automático', - custom: 'Personalizado', - previewTip: 'La vista previa del párrafo estará disponible después de que se complete la incrustación', - pause: 'Pausa', - childMaxTokens: 'Niño', - hierarchical: 'Padre-hijo', - parentMaxTokens: 'Padre', - waiting: 'Esperando incrustación...', - }, - segment: { - paragraphs: 'Párrafos', - keywords: 'Palabras clave', - addKeyWord: 'Agregar palabra clave', - keywordError: 'La longitud máxima de la palabra clave es 20', - hitCount: 'Cantidad de recuperación', - vectorHash: 'Hash de vector: ', - questionPlaceholder: 'agregar pregunta aquí', - questionEmpty: 'La pregunta no puede estar vacía', - answerPlaceholder: 'agregar respuesta aquí', - answerEmpty: 'La respuesta no puede estar vacía', - contentPlaceholder: 'agregar contenido aquí', - contentEmpty: 'El contenido no puede estar vacío', - newTextSegment: 'Nuevo segmento de texto', - newQaSegment: 'Nuevo segmento de preguntas y respuestas', - delete: '¿Eliminar este fragmento?', - chunks_one: 'PEDAZO', - childChunks_one: 'FRAGMENTO SECUNDARIO', - searchResults_other: 'RESULTADOS', - newChunk: 'Nuevo fragmento', - childChunk: 'Fragmento secundario', - addChunk: 'Agregar fragmento', - editParentChunk: 'Editar fragmento principal', - regenerationConfirmMessage: 'La regeneración de fragmentos secundarios sobrescribirá los fragmentos secundarios actuales, incluidos los fragmentos editados y los fragmentos recién agregados. La regeneración no se puede deshacer.', - addAnother: 'Añade otro', - regeneratingMessage: 'Esto puede tardar un momento, por favor espere...', - addChildChunk: 'Agregar fragmento secundario', - chunks_other: 'TROZOS', - editChunk: 'Editar fragmento', - searchResults_one: 'RESULTADO', - parentChunks_one: 'FRAGMENTO PRIMARIO', - edited: 'EDITADO', - childChunkAdded: 'Se ha añadido 1 fragmento secundario', - childChunks_other: 'FRAGMENTOS SECUNDARIOS', - chunkAdded: '1 trozo añadido', - parentChunk: 'Fragmento primario', - editChildChunk: 'Editar fragmento secundario', - regeneratingTitle: 'Regeneración de fragmentos secundarios', - editedAt: 'Editado en', - dateTimeFormat: 'MM/DD/YYYY h:mm', - searchResults_zero: 'RESULTADO', - clearFilter: 'Borrar filtro', - newChildChunk: 'Nuevo fragmento secundario', - chunkDetail: 'Detalle de fragmentos', - chunk: 'Pedazo', - parentChunks_other: 'FRAGMENTOS PRINCIPALES', - expandChunks: 'Expandir fragmentos', - empty: 'No se ha encontrado ningún fragmento', - regenerationSuccessTitle: 'Regeneración completada', - collapseChunks: 'Contraer fragmentos', - characters_other: 'Caracteres', - characters_one: 'carácter', - regenerationSuccessMessage: 'Puede cerrar esta ventana.', - regenerationConfirmTitle: '¿Desea regenerar fragmentos secundarios?', - keywordEmpty: 'La palabra clave no puede estar vacía', - keywordDuplicate: 'La palabra clave ya existe', - allFilesUploaded: 'Todos los archivos deben subirse antes de guardar', - }, -} - -export default translation diff --git a/web/i18n/es-ES/dataset-hit-testing.json b/web/i18n/es-ES/dataset-hit-testing.json new file mode 100644 index 0000000000..f79d75130f --- /dev/null +++ b/web/i18n/es-ES/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "Prueba de recuperación", + "desc": "Prueba del efecto de impacto del conocimiento basado en el texto de consulta proporcionado.", + "dateTimeFormat": "MM/DD/YYYY hh:mm A", + "table": { + "header": { + "source": "Fuente", + "time": "Tiempo", + "queryContent": "Contenido de la consulta" + } + }, + "input": { + "title": "Texto fuente", + "placeholder": "Por favor ingrese un texto, se recomienda una oración declarativa corta.", + "countWarning": "Hasta 200 caracteres.", + "indexWarning": "Solo conocimiento de alta calidad.", + "testing": "Prueba" + }, + "hit": { + "title": "PÁRRAFOS DE RECUPERACIÓN", + "emptyTip": "Los resultados de la prueba de recuperación se mostrarán aquí" + }, + "noRecentTip": "No hay resultados de consulta recientes aquí", + "viewChart": "Ver GRÁFICO VECTORIAL", + "viewDetail": "Ver Detalle", + "settingTitle": "Configuración de recuperación", + "open": "Abrir", + "records": "Archivo", + "chunkDetail": "Detalle de fragmentos", + "keyword": "Palabras clave", + "hitChunks": "Golpea {{num}} fragmentos secundarios", + "imageUploader": { + "tip": "Sube o arrastra imágenes (Máx. {{batchCount}}, {{size}}MB cada una)", + "tooltip": "Sube imágenes (Máx. {{batchCount}}, {{size}} MB cada una)", + "dropZoneTip": "Arrastra el archivo aquí para subirlo", + "singleChunkAttachmentLimitTooltip": "El número de archivos adjuntos de un solo bloque no puede superar {{limit}}" + } +} diff --git a/web/i18n/es-ES/dataset-hit-testing.ts b/web/i18n/es-ES/dataset-hit-testing.ts deleted file mode 100644 index 3c33f18c1a..0000000000 --- a/web/i18n/es-ES/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - title: 'Prueba de recuperación', - desc: 'Prueba del efecto de impacto del conocimiento basado en el texto de consulta proporcionado.', - dateTimeFormat: 'MM/DD/YYYY hh:mm A', - table: { - header: { - source: 'Fuente', - time: 'Tiempo', - queryContent: 'Contenido de la consulta', - }, - }, - input: { - title: 'Texto fuente', - placeholder: 'Por favor ingrese un texto, se recomienda una oración declarativa corta.', - countWarning: 'Hasta 200 caracteres.', - indexWarning: 'Solo conocimiento de alta calidad.', - testing: 'Prueba', - }, - hit: { - title: 'PÁRRAFOS DE RECUPERACIÓN', - emptyTip: 'Los resultados de la prueba de recuperación se mostrarán aquí', - }, - noRecentTip: 'No hay resultados de consulta recientes aquí', - viewChart: 'Ver GRÁFICO VECTORIAL', - viewDetail: 'Ver Detalle', - settingTitle: 'Configuración de recuperación', - open: 'Abrir', - records: 'Archivo', - chunkDetail: 'Detalle de fragmentos', - keyword: 'Palabras clave', - hitChunks: 'Golpea {{num}} fragmentos secundarios', - imageUploader: { - tip: 'Sube o arrastra imágenes (Máx. {{batchCount}}, {{size}}MB cada una)', - tooltip: 'Sube imágenes (Máx. {{batchCount}}, {{size}} MB cada una)', - dropZoneTip: 'Arrastra el archivo aquí para subirlo', - singleChunkAttachmentLimitTooltip: 'El número de archivos adjuntos de un solo bloque no puede superar {{limit}}', - }, -} - -export default translation diff --git a/web/i18n/es-ES/dataset-pipeline.json b/web/i18n/es-ES/dataset-pipeline.json new file mode 100644 index 0000000000..6e467f14d3 --- /dev/null +++ b/web/i18n/es-ES/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "createFromScratch": { + "title": "Canalización de conocimiento en blanco", + "description": "Cree una canalización personalizada desde cero con control total sobre el procesamiento y la estructura de datos." + }, + "caution": "Cautela", + "backToKnowledge": "Volver al conocimiento", + "successTip": "Creó con éxito una base de conocimientos", + "createKnowledge": "Crear conocimiento", + "errorTip": "No se pudo crear una base de conocimiento", + "importDSL": "Importar desde un archivo DSL" + }, + "templates": { + "customized": "Personalizado" + }, + "operations": { + "preview": "Vista previa", + "details": "Detalles", + "dataSource": "Fuente de datos", + "convert": "Convertir", + "choose": "Elegir", + "process": "Proceso", + "backToDataSource": "Volver a la fuente de datos", + "editInfo": "Editar información", + "exportPipeline": "Canalización de exportación", + "useTemplate": "Utilice esta canalización de conocimiento", + "saveAndProcess": "Guardar y procesar" + }, + "deletePipeline": { + "content": "La eliminación de la plantilla de canalización es irreversible.", + "title": "¿Está seguro de eliminar esta plantilla de canalización?" + }, + "publishPipeline": { + "success": { + "message": "Publicación de Knowledge Pipeline", + "tip": "Ve a Documentos para agregar o gestionar documentos." + }, + "error": { + "message": "No se pudo publicar la canalización de conocimiento" + } + }, + "publishTemplate": { + "success": { + "learnMore": "Aprende más", + "message": "Plantilla de canalización publicada", + "tip": "Puede usar esta plantilla en la página de creación." + }, + "error": { + "message": "No se pudo publicar la plantilla de canalización" + } + }, + "exportDSL": { + "successTip": "Exportar DSL de canalización correctamente", + "errorTip": "No se pudo exportar DSL de canalización" + }, + "details": { + "structure": "Structure", + "structureTooltip": "La estructura de fragmentos determina cómo se dividen e indexan los documentos, ofreciendo modos General, Principal-Secundario y Preguntas y respuestas, y es única para cada base de conocimiento.", + "createdBy": "Por {{author}}" + }, + "testRun": { + "steps": { + "documentProcessing": "Procesamiento de documentos", + "dataSource": "Fuente de datos" + }, + "dataSource": { + "localFiles": "Archivos locales" + }, + "notion": { + "docTitle": "Documentos de Notion", + "title": "Elegir páginas de nociones" + }, + "title": "Ejecución de prueba", + "tooltip": "En el modo de ejecución de prueba, solo se permite importar un documento a la vez para facilitar la depuración y la observación." + }, + "inputFieldPanel": { + "uniqueInputs": { + "title": "Entradas únicas para cada entrada", + "tooltip": "Las entradas únicas solo son accesibles para la fuente de datos seleccionada y sus nodos posteriores. Los usuarios no tendrán que rellenarlo al elegir otros orígenes de datos. Solo los campos de entrada a los que hacen referencia las variables de origen de datos aparecerán en el primer paso (Origen de datos). Todos los demás campos se mostrarán en el segundo paso (Procesar documentos)." + }, + "globalInputs": { + "title": "Entradas globales para todas las entradas", + "tooltip": "Las entradas globales se comparten entre todos los nodos. Los usuarios deberán completarlos al seleccionar cualquier fuente de datos. Por ejemplo, campos como el delimitador y la longitud máxima del fragmento se pueden aplicar de manera uniforme en varias fuentes de datos. Solo los campos de entrada a los que hacen referencia las variables de origen de datos aparecen en el primer paso (origen de datos). Todos los demás campos aparecen en el segundo paso (Procesar documentos)." + }, + "preview": { + "stepTwoTitle": "Documentos de proceso", + "stepOneTitle": "Fuente de datos" + }, + "error": { + "variableDuplicate": "El nombre de la variable ya existe. Por favor, elija un nombre diferente." + }, + "addInputField": "Agregar campo de entrada", + "title": "Campos de entrada de usuario", + "editInputField": "Editar campo de entrada", + "description": "Los campos de entrada del usuario se utilizan para definir y recopilar las variables necesarias durante el proceso de ejecución de la canalización. Los usuarios pueden personalizar el tipo de campo y configurar de forma flexible el valor de entrada para satisfacer las necesidades de diferentes fuentes de datos o pasos de procesamiento de documentos." + }, + "addDocuments": { + "steps": { + "processingDocuments": "Procesamiento de documentos", + "processDocuments": "Documentos de proceso", + "chooseDatasource": "Elegir una fuente de datos" + }, + "stepOne": { + "preview": "Vista previa" + }, + "stepTwo": { + "chunkSettings": "Configuración de fragmentos", + "previewChunks": "Vista previa de fragmentos" + }, + "stepThree": { + "learnMore": "Aprende más" + }, + "characters": "Caracteres", + "title": "Agregar documentos", + "backToDataSource": "Fuente de datos", + "selectOnlineDocumentTip": "Procesar hasta {{count}} páginas", + "selectOnlineDriveTip": "Procesar hasta {{count}} archivos, máximo {{fileSize}} MB cada uno" + }, + "documentSettings": { + "title": "Parametrizaciones de documentos" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} páginas" + }, + "onlineDrive": { + "breadcrumbs": { + "allBuckets": "Todos los depósitos de Cloud Storage", + "allFiles": "Todos los archivos", + "searchPlaceholder": "Buscar archivos...", + "searchResult": "Encontrar {{searchResultsLength}} elementos en la carpeta \"{{folderName}}\"" + }, + "emptySearchResult": "No se encontraron artículos", + "resetKeywords": "Restablecer palabras clave", + "emptyFolder": "Esta carpeta está vacía", + "notSupportedFileType": "Este tipo de archivo no es compatible", + "notConnected": "{{name}} no está conectado", + "notConnectedTip": "Para sincronizar con {{name}}, primero se debe establecer conexión con {{name}}." + }, + "conversion": { + "confirm": { + "title": "Confirmación", + "content": "Esta acción es permanente. No podrá volver al método anterior. Por favor, confirme para convertir." + }, + "title": "Convertir en canalización de conocimiento", + "successMessage": "Convertir correctamente el conjunto de datos en una canalización", + "warning": "Esta acción no se puede deshacer.", + "errorMessage": "No se pudo convertir el conjunto de datos en una canalización", + "descriptionChunk2": "— un enfoque más abierto y flexible con acceso a complementos de nuestro mercado. Esto aplicará el nuevo método de procesamiento a todos los documentos futuros.", + "descriptionChunk1": "Ahora puede convertir su base de conocimientos existente para usar la canalización de conocimientos para el procesamiento de documentos" + }, + "knowledgeDescription": "Descripción del conocimiento", + "knowledgeNameAndIcon": "Nombre e icono de conocimiento", + "inputField": "Campo de entrada", + "knowledgeNameAndIconPlaceholder": "Ingrese el nombre de la base de conocimientos", + "knowledgeDescriptionPlaceholder": "Describa lo que hay en esta base de conocimientos. Una descripción detallada permite a la IA acceder al contenido del conjunto de datos con mayor precisión. Si está vacío, Dify usará la estrategia de golpe predeterminada. (Opcional)", + "pipelineNameAndIcon": "Nombre e icono de la tubería", + "knowledgePermissions": "Permisos", + "editPipelineInfo": "Editar información de canalización", + "configurationTip": "Configurar {{pluginName}}" +} diff --git a/web/i18n/es-ES/dataset-pipeline.ts b/web/i18n/es-ES/dataset-pipeline.ts deleted file mode 100644 index fc182179af..0000000000 --- a/web/i18n/es-ES/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - createFromScratch: { - title: 'Canalización de conocimiento en blanco', - description: 'Cree una canalización personalizada desde cero con control total sobre el procesamiento y la estructura de datos.', - }, - caution: 'Cautela', - backToKnowledge: 'Volver al conocimiento', - successTip: 'Creó con éxito una base de conocimientos', - createKnowledge: 'Crear conocimiento', - errorTip: 'No se pudo crear una base de conocimiento', - importDSL: 'Importar desde un archivo DSL', - }, - templates: { - customized: 'Personalizado', - }, - operations: { - preview: 'Vista previa', - details: 'Detalles', - dataSource: 'Fuente de datos', - convert: 'Convertir', - choose: 'Elegir', - process: 'Proceso', - backToDataSource: 'Volver a la fuente de datos', - editInfo: 'Editar información', - exportPipeline: 'Canalización de exportación', - useTemplate: 'Utilice esta canalización de conocimiento', - saveAndProcess: 'Guardar y procesar', - }, - deletePipeline: { - content: 'La eliminación de la plantilla de canalización es irreversible.', - title: '¿Está seguro de eliminar esta plantilla de canalización?', - }, - publishPipeline: { - success: { - message: 'Publicación de Knowledge Pipeline', - tip: 'Ve a Documentos para agregar o gestionar documentos.', - }, - error: { - message: 'No se pudo publicar la canalización de conocimiento', - }, - }, - publishTemplate: { - success: { - learnMore: 'Aprende más', - message: 'Plantilla de canalización publicada', - tip: 'Puede usar esta plantilla en la página de creación.', - }, - error: { - message: 'No se pudo publicar la plantilla de canalización', - }, - }, - exportDSL: { - successTip: 'Exportar DSL de canalización correctamente', - errorTip: 'No se pudo exportar DSL de canalización', - }, - details: { - structure: 'Structure', - structureTooltip: 'La estructura de fragmentos determina cómo se dividen e indexan los documentos, ofreciendo modos General, Principal-Secundario y Preguntas y respuestas, y es única para cada base de conocimiento.', - createdBy: 'Por {{author}}', - }, - testRun: { - steps: { - documentProcessing: 'Procesamiento de documentos', - dataSource: 'Fuente de datos', - }, - dataSource: { - localFiles: 'Archivos locales', - }, - notion: { - docTitle: 'Documentos de Notion', - title: 'Elegir páginas de nociones', - }, - title: 'Ejecución de prueba', - tooltip: 'En el modo de ejecución de prueba, solo se permite importar un documento a la vez para facilitar la depuración y la observación.', - }, - inputFieldPanel: { - uniqueInputs: { - title: 'Entradas únicas para cada entrada', - tooltip: 'Las entradas únicas solo son accesibles para la fuente de datos seleccionada y sus nodos posteriores. Los usuarios no tendrán que rellenarlo al elegir otros orígenes de datos. Solo los campos de entrada a los que hacen referencia las variables de origen de datos aparecerán en el primer paso (Origen de datos). Todos los demás campos se mostrarán en el segundo paso (Procesar documentos).', - }, - globalInputs: { - title: 'Entradas globales para todas las entradas', - tooltip: 'Las entradas globales se comparten entre todos los nodos. Los usuarios deberán completarlos al seleccionar cualquier fuente de datos. Por ejemplo, campos como el delimitador y la longitud máxima del fragmento se pueden aplicar de manera uniforme en varias fuentes de datos. Solo los campos de entrada a los que hacen referencia las variables de origen de datos aparecen en el primer paso (origen de datos). Todos los demás campos aparecen en el segundo paso (Procesar documentos).', - }, - preview: { - stepTwoTitle: 'Documentos de proceso', - stepOneTitle: 'Fuente de datos', - }, - error: { - variableDuplicate: 'El nombre de la variable ya existe. Por favor, elija un nombre diferente.', - }, - addInputField: 'Agregar campo de entrada', - title: 'Campos de entrada de usuario', - editInputField: 'Editar campo de entrada', - description: 'Los campos de entrada del usuario se utilizan para definir y recopilar las variables necesarias durante el proceso de ejecución de la canalización. Los usuarios pueden personalizar el tipo de campo y configurar de forma flexible el valor de entrada para satisfacer las necesidades de diferentes fuentes de datos o pasos de procesamiento de documentos.', - }, - addDocuments: { - steps: { - processingDocuments: 'Procesamiento de documentos', - processDocuments: 'Documentos de proceso', - chooseDatasource: 'Elegir una fuente de datos', - }, - stepOne: { - preview: 'Vista previa', - }, - stepTwo: { - chunkSettings: 'Configuración de fragmentos', - previewChunks: 'Vista previa de fragmentos', - }, - stepThree: { - learnMore: 'Aprende más', - }, - characters: 'Caracteres', - title: 'Agregar documentos', - backToDataSource: 'Fuente de datos', - selectOnlineDocumentTip: 'Procesar hasta {{count}} páginas', - selectOnlineDriveTip: 'Procesar hasta {{count}} archivos, máximo {{fileSize}} MB cada uno', - }, - documentSettings: { - title: 'Parametrizaciones de documentos', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} páginas', - }, - onlineDrive: { - breadcrumbs: { - allBuckets: 'Todos los depósitos de Cloud Storage', - allFiles: 'Todos los archivos', - searchPlaceholder: 'Buscar archivos...', - searchResult: 'Encontrar {{searchResultsLength}} elementos en la carpeta "{{folderName}}"', - }, - emptySearchResult: 'No se encontraron artículos', - resetKeywords: 'Restablecer palabras clave', - emptyFolder: 'Esta carpeta está vacía', - notSupportedFileType: 'Este tipo de archivo no es compatible', - notConnected: '{{name}} no está conectado', - notConnectedTip: 'Para sincronizar con {{name}}, primero se debe establecer conexión con {{name}}.', - }, - conversion: { - confirm: { - title: 'Confirmación', - content: 'Esta acción es permanente. No podrá volver al método anterior. Por favor, confirme para convertir.', - }, - title: 'Convertir en canalización de conocimiento', - successMessage: 'Convertir correctamente el conjunto de datos en una canalización', - warning: 'Esta acción no se puede deshacer.', - errorMessage: 'No se pudo convertir el conjunto de datos en una canalización', - descriptionChunk2: '— un enfoque más abierto y flexible con acceso a complementos de nuestro mercado. Esto aplicará el nuevo método de procesamiento a todos los documentos futuros.', - descriptionChunk1: 'Ahora puede convertir su base de conocimientos existente para usar la canalización de conocimientos para el procesamiento de documentos', - }, - knowledgeDescription: 'Descripción del conocimiento', - knowledgeNameAndIcon: 'Nombre e icono de conocimiento', - inputField: 'Campo de entrada', - knowledgeNameAndIconPlaceholder: 'Ingrese el nombre de la base de conocimientos', - knowledgeDescriptionPlaceholder: 'Describa lo que hay en esta base de conocimientos. Una descripción detallada permite a la IA acceder al contenido del conjunto de datos con mayor precisión. Si está vacío, Dify usará la estrategia de golpe predeterminada. (Opcional)', - pipelineNameAndIcon: 'Nombre e icono de la tubería', - knowledgePermissions: 'Permisos', - editPipelineInfo: 'Editar información de canalización', - configurationTip: 'Configurar {{pluginName}}', -} - -export default translation diff --git a/web/i18n/es-ES/dataset-settings.json b/web/i18n/es-ES/dataset-settings.json new file mode 100644 index 0000000000..f10ddd8bad --- /dev/null +++ b/web/i18n/es-ES/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "Configuración del conjunto de datos", + "desc": "Aquí puedes modificar las propiedades y los métodos de trabajo del conjunto de datos.", + "form": { + "name": "Nombre del conjunto de datos", + "namePlaceholder": "Por favor ingresa el nombre del conjunto de datos", + "nameError": "El nombre no puede estar vacío", + "desc": "Descripción del conjunto de datos", + "descInfo": "Por favor escribe una descripción textual clara para delinear el contenido del conjunto de datos. Esta descripción se utilizará como base para la coincidencia al seleccionar entre múltiples conjuntos de datos para la inferencia.", + "descPlaceholder": "Describe lo que hay en este conjunto de datos. Una descripción detallada permite que la IA acceda al contenido del conjunto de datos de manera oportuna. Si está vacío, Dify utilizará la estrategia de coincidencia predeterminada.", + "descWrite": "Aprende cómo escribir una buena descripción del conjunto de datos.", + "permissions": "Permisos", + "permissionsOnlyMe": "Solo yo", + "permissionsAllMember": "Todos los miembros del equipo", + "permissionsInvitedMembers": "Miembros del equipo invitados", + "me": "(Tú)", + "indexMethod": "Método de indexación", + "indexMethodHighQuality": "Alta calidad", + "indexMethodHighQualityTip": "Llama al modelo de incrustación para procesar y proporcionar una mayor precisión cuando los usuarios realizan consultas.", + "indexMethodEconomy": "Económico", + "indexMethodEconomyTip": "Utiliza motores de vectores sin conexión, índices de palabras clave, etc. para reducir la precisión sin gastar tokens.", + "embeddingModel": "Modelo de incrustación", + "embeddingModelTip": "Cambia el modelo de incrustación, por favor ve a ", + "embeddingModelTipLink": "Configuración", + "retrievalSetting": { + "title": "Configuración de recuperación", + "learnMore": "Aprende más", + "description": " sobre el método de recuperación.", + "longDescription": " sobre el método de recuperación, puedes cambiar esto en cualquier momento en la configuración del conjunto de datos.", + "method": "Método de recuperación", + "multiModalTip": "Cuando el modelo de incrustación soporte multimodal, seleccione un modelo de reordenamiento multimodal para un mejor rendimiento." + }, + "save": "Guardar", + "retrievalSettings": "Configuración de recuperación", + "externalKnowledgeID": "ID de conocimiento externo", + "externalKnowledgeAPI": "API de conocimiento externo", + "indexMethodChangeToEconomyDisabledTip": "No disponible para degradar de HQ a ECO", + "helpText": "Aprenda a escribir una buena descripción del conjunto de datos.", + "upgradeHighQualityTip": "Una vez que se actualiza al modo de alta calidad, no está disponible volver al modo económico", + "searchModel": "Buscar modelo", + "chunkStructure": { + "learnMore": "Aprende más", + "description": "sobre la estructura de fragmentos.", + "title": "Estructura de fragmentos" + }, + "numberOfKeywords": "Número de palabras clave", + "nameAndIcon": "Nombre e icono", + "onSearchResults": "Ningún miembro coincide con su consulta de búsqueda.\nIntente su búsqueda nuevamente." + } +} diff --git a/web/i18n/es-ES/dataset-settings.ts b/web/i18n/es-ES/dataset-settings.ts deleted file mode 100644 index 4afc05324a..0000000000 --- a/web/i18n/es-ES/dataset-settings.ts +++ /dev/null @@ -1,52 +0,0 @@ -const translation = { - title: 'Configuración del conjunto de datos', - desc: 'Aquí puedes modificar las propiedades y los métodos de trabajo del conjunto de datos.', - form: { - name: 'Nombre del conjunto de datos', - namePlaceholder: 'Por favor ingresa el nombre del conjunto de datos', - nameError: 'El nombre no puede estar vacío', - desc: 'Descripción del conjunto de datos', - descInfo: 'Por favor escribe una descripción textual clara para delinear el contenido del conjunto de datos. Esta descripción se utilizará como base para la coincidencia al seleccionar entre múltiples conjuntos de datos para la inferencia.', - descPlaceholder: 'Describe lo que hay en este conjunto de datos. Una descripción detallada permite que la IA acceda al contenido del conjunto de datos de manera oportuna. Si está vacío, Dify utilizará la estrategia de coincidencia predeterminada.', - descWrite: 'Aprende cómo escribir una buena descripción del conjunto de datos.', - permissions: 'Permisos', - permissionsOnlyMe: 'Solo yo', - permissionsAllMember: 'Todos los miembros del equipo', - permissionsInvitedMembers: 'Miembros del equipo invitados', - me: '(Tú)', - indexMethod: 'Método de indexación', - indexMethodHighQuality: 'Alta calidad', - indexMethodHighQualityTip: 'Llama al modelo de incrustación para procesar y proporcionar una mayor precisión cuando los usuarios realizan consultas.', - indexMethodEconomy: 'Económico', - indexMethodEconomyTip: 'Utiliza motores de vectores sin conexión, índices de palabras clave, etc. para reducir la precisión sin gastar tokens.', - embeddingModel: 'Modelo de incrustación', - embeddingModelTip: 'Cambia el modelo de incrustación, por favor ve a ', - embeddingModelTipLink: 'Configuración', - retrievalSetting: { - title: 'Configuración de recuperación', - learnMore: 'Aprende más', - description: ' sobre el método de recuperación.', - longDescription: ' sobre el método de recuperación, puedes cambiar esto en cualquier momento en la configuración del conjunto de datos.', - method: 'Método de recuperación', - multiModalTip: 'Cuando el modelo de incrustación soporte multimodal, seleccione un modelo de reordenamiento multimodal para un mejor rendimiento.', - }, - save: 'Guardar', - retrievalSettings: 'Configuración de recuperación', - externalKnowledgeID: 'ID de conocimiento externo', - externalKnowledgeAPI: 'API de conocimiento externo', - indexMethodChangeToEconomyDisabledTip: 'No disponible para degradar de HQ a ECO', - helpText: 'Aprenda a escribir una buena descripción del conjunto de datos.', - upgradeHighQualityTip: 'Una vez que se actualiza al modo de alta calidad, no está disponible volver al modo económico', - searchModel: 'Buscar modelo', - chunkStructure: { - learnMore: 'Aprende más', - description: 'sobre la estructura de fragmentos.', - title: 'Estructura de fragmentos', - }, - numberOfKeywords: 'Número de palabras clave', - nameAndIcon: 'Nombre e icono', - onSearchResults: 'Ningún miembro coincide con su consulta de búsqueda.\nIntente su búsqueda nuevamente.', - }, -} - -export default translation diff --git a/web/i18n/es-ES/dataset.json b/web/i18n/es-ES/dataset.json new file mode 100644 index 0000000000..fa209618fa --- /dev/null +++ b/web/i18n/es-ES/dataset.json @@ -0,0 +1,249 @@ +{ + "knowledge": "Conocimiento", + "documentCount": " documentos", + "wordCount": " mil palabras", + "appCount": " aplicaciones vinculadas", + "createDataset": "Crear Conocimiento", + "createDatasetIntro": "Importa tus propios datos de texto o escribe datos en tiempo real a través de Webhook para mejorar el contexto de LLM.", + "deleteDatasetConfirmTitle": "¿Eliminar este Conocimiento?", + "deleteDatasetConfirmContent": "Eliminar el Conocimiento es irreversible. Los usuarios ya no podrán acceder a tu Conocimiento y todas las configuraciones y registros de las sugerencias se eliminarán permanentemente.", + "datasetUsedByApp": "El conocimiento está siendo utilizado por algunas aplicaciones. Las aplicaciones ya no podrán utilizar este Conocimiento y todas las configuraciones y registros de las sugerencias se eliminarán permanentemente.", + "datasetDeleted": "Conocimiento eliminado", + "datasetDeleteFailed": "Error al eliminar el Conocimiento", + "didYouKnow": "¿Sabías?", + "intro1": "El Conocimiento se puede integrar en la aplicación Dify ", + "intro2": "como contexto", + "intro3": ",", + "intro4": "o ", + "intro5": "se puede crear", + "intro6": " como un complemento independiente de ChatGPT para publicar", + "unavailable": "No disponible", + "datasets": "CONOCIMIENTO", + "datasetsApi": "ACCESO A LA API", + "retrieval": { + "semantic_search": { + "title": "Búsqueda Vectorial", + "description": "Genera incrustaciones de consulta y busca el fragmento de texto más similar a su representación vectorial." + }, + "full_text_search": { + "title": "Búsqueda de Texto Completo", + "description": "Indexa todos los términos del documento, lo que permite a los usuarios buscar cualquier término y recuperar el fragmento de texto relevante que contiene esos términos." + }, + "hybrid_search": { + "title": "Búsqueda Híbrida", + "description": "Ejecuta búsquedas de texto completo y búsquedas vectoriales simultáneamente, reordena para seleccionar la mejor coincidencia para la consulta del usuario. Es necesaria la configuración de las API del modelo de reordenamiento.", + "recommend": "Recomendar" + }, + "invertedIndex": {}, + "change": "Cambiar", + "changeRetrievalMethod": "Cambiar método de recuperación", + "keyword_search": { + "title": "Índice invertido", + "description": "El índice invertido es una estructura utilizada para una recuperación eficiente. Organizado por términos, cada término apunta a documentos o páginas web que lo contienen." + } + }, + "docsFailedNotice": "no se pudieron indexar los documentos", + "retry": "Reintentar", + "indexingTechnique": { + "high_quality": "AC", + "economy": "ECO" + }, + "indexingMethod": { + "semantic_search": "VECTOR", + "full_text_search": "TEXTO COMPLETO", + "hybrid_search": "HÍBRIDO", + "invertedIndex": "INVERTIDO" + }, + "mixtureHighQualityAndEconomicTip": "Se requiere el modelo de reclasificación para la mezcla de bases de conocimiento de alta calidad y económicas.", + "inconsistentEmbeddingModelTip": "Se requiere el modelo de reclasificación si los modelos de incrustación de las bases de conocimiento seleccionadas son inconsistentes.", + "retrievalSettings": "Configuración de recuperación", + "rerankSettings": "Configuración de reclasificación", + "weightedScore": { + "title": "Puntuación ponderada", + "description": "Al ajustar los pesos asignados, esta estrategia de reclasificación determina si se debe priorizar la coincidencia semántica o de palabras clave.", + "semanticFirst": "Semántica primero", + "keywordFirst": "Palabra clave primero", + "customized": "Personalizado", + "semantic": "Semántico", + "keyword": "Palabra clave" + }, + "nTo1RetrievalLegacy": "La recuperación N-a-1 será oficialmente obsoleta a partir de septiembre. Se recomienda utilizar la última recuperación de múltiples rutas para obtener mejores resultados.", + "nTo1RetrievalLegacyLink": "Más información", + "nTo1RetrievalLegacyLinkText": "La recuperación N-a-1 será oficialmente obsoleta en septiembre.", + "defaultRetrievalTip": "De forma predeterminada, se utiliza la recuperación de varias rutas. El conocimiento se recupera de múltiples bases de conocimiento y luego se vuelve a clasificar.", + "editExternalAPIConfirmWarningContent": { + "front": "Esta API de conocimiento externo está vinculada a", + "end": "conocimiento externo, y esta modificación se aplicará a todos ellos. ¿Estás seguro de que quieres guardar este cambio?" + }, + "editExternalAPIFormWarning": { + "end": "Conocimiento externo", + "front": "Esta API externa está vinculada a" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "end": "?", + "front": "Borrar" + }, + "content": { + "end": "conocimiento externo. Al eliminar esta API, se invalidarán todos ellos. ¿Estás seguro de que quieres eliminar esta API?", + "front": "Esta API de conocimiento externo está vinculada a" + }, + "noConnectionContent": "¿Está seguro de eliminar esta API?" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "Elegir una API de conocimiento externa" + }, + "connectDatasetIntro": { + "content": { + "link": "Más información sobre cómo crear una API externa", + "front": "Para conectarse a una base de conocimientos externa, primero debe crear una API externa. Por favor, lea atentamente y consulte", + "end": ". A continuación, busque el ID de conocimiento correspondiente y rellénelo en el formulario de la izquierda. Si toda la información es correcta, saltará automáticamente a la prueba de recuperación en la base de conocimientos después de hacer clic en el botón conectar." + }, + "learnMore": "Aprende más", + "title": "Cómo conectarse a una base de conocimientos externa" + }, + "connectHelper": { + "helper5": "con cuidado antes de usar esta función.", + "helper2": "Solo se admite la funcionalidad de recuperación", + "helper1": "Conéctese a bases de conocimiento externas a través de la API y el ID de la base de conocimiento. Actualmente,", + "helper3": ". Le recomendamos encarecidamente que", + "helper4": "Leer la documentación de ayuda" + }, + "externalKnowledgeForm": { + "connect": "Conectar", + "cancel": "Cancelar" + }, + "externalAPIForm": { + "encrypted": { + "front": "Su token de API se cifrará y almacenará mediante", + "end": "Tecnología." + }, + "cancel": "Cancelar", + "apiKey": "Clave de API", + "save": "Salvar", + "edit": "Editar", + "name": "Nombre", + "endpoint": "Punto de conexión de API" + }, + "externalTag": "Externo", + "externalKnowledgeDescriptionPlaceholder": "Describa lo que hay en esta base de conocimientos (opcional)", + "externalKnowledgeNamePlaceholder": "Introduzca el nombre de la base de conocimientos", + "noExternalKnowledge": "Todavía no hay una API de conocimiento externo, haga clic aquí para crear", + "editExternalAPIFormTitle": "Editar la API de conocimiento externo", + "externalKnowledgeName": "Nombre del conocimiento externo", + "allExternalTip": "Al usar solo conocimiento externo, el usuario puede elegir si desea habilitar el modelo Rerank. Si no se habilita, los fragmentos recuperados se ordenarán en función de las puntuaciones. Cuando las estrategias de recuperación de diferentes bases de conocimiento son inconsistentes, serán inexactas.", + "createExternalAPI": "Adición de una API de conocimiento externa", + "externalKnowledgeId": "ID de conocimiento externo", + "connectDataset": "Conéctese a una base de conocimientos externa", + "createNewExternalAPI": "Creación de una nueva API de conocimiento externo", + "editExternalAPITooltipTitle": "CONOCIMIENTO VINCULADO", + "externalAPIPanelTitle": "API de conocimiento externo", + "externalKnowledgeDescription": "Descripción del conocimiento", + "externalAPIPanelDescription": "La API de conocimiento externo se utiliza para conectarse a una base de conocimiento fuera de Dify y recuperar conocimiento de esa base de conocimiento.", + "externalAPI": "API externa", + "externalKnowledgeIdPlaceholder": "Introduzca el ID de conocimiento", + "learnHowToWriteGoodKnowledgeDescription": "Aprende a escribir una buena descripción del conocimiento", + "externalAPIPanelDocumentation": "Más información sobre cómo crear una API de conocimiento externo", + "mixtureInternalAndExternalTip": "El modelo de Rerank es necesario para la mezcla de conocimiento interno y externo.", + "chunkingMode": { + "parentChild": "Padre-hijo", + "general": "General", + "graph": "gráfico", + "qa": "Preguntas y respuestas" + }, + "parentMode": { + "fullDoc": "Documento completo", + "paragraph": "Párrafo" + }, + "batchAction": { + "selected": "Seleccionado", + "enable": "Habilitar", + "disable": "Inutilizar", + "cancel": "Cancelar", + "archive": "Archivo", + "delete": "Borrar" + }, + "enable": "Habilitar", + "documentsDisabled": "{{num}} Documentos desactivados - inactivos durante más de 30 días", + "preprocessDocument": "{{num}} Documentos de preprocesamiento", + "localDocs": "Documentos locales", + "allKnowledgeDescription": "Seleccione esta opción para mostrar todos los conocimientos de este espacio de trabajo. Solo el propietario del espacio de trabajo puede administrar todo el conocimiento.", + "allKnowledge": "Todo el conocimiento", + "metadata": { + "createMetadata": { + "title": "Nuevos Metadatos", + "back": "Atrás", + "type": "Escribe", + "namePlaceholder": "Agregar nombre de metadatos", + "name": "Nombre" + }, + "checkName": { + "empty": "El nombre de metadatos no puede estar vacío", + "invalid": "El nombre de los metadatos solo puede contener letras minúsculas, números y guiones bajos, y debe comenzar con una letra minúscula.", + "tooLong": "El nombre de los metadatos no puede exceder {{max}} caracteres." + }, + "batchEditMetadata": { + "multipleValue": "Valor Múltiple", + "editMetadata": "Editar Metadatos", + "editDocumentsNum": "Editando {{num}} documentos", + "applyToAllSelectDocument": "Aplicar a todos los documentos seleccionados", + "applyToAllSelectDocumentTip": "Cree automáticamente todos los metadatos editados y nuevos anteriores para todos los documentos seleccionados, de lo contrario, la edición de metadatos solo se aplicará a los documentos que ya los tengan." + }, + "selectMetadata": { + "manageAction": "Gestionar", + "search": "Buscar metadatos", + "newAction": "Nuevos Metadatos" + }, + "datasetMetadata": { + "addMetaData": "Agregar Metadatos", + "values": "{{num}} Valores", + "deleteContent": "¿Estás seguro de que quieres eliminar los metadatos \"{{name}}\"?", + "rename": "Renombrar", + "deleteTitle": "Confirme para eliminar", + "namePlaceholder": "Nombre de metadatos", + "builtInDescription": "Los metadatos integrados se extraen y generan automáticamente. Deben estar habilitados antes de su uso y no se pueden editar.", + "name": "Nombre", + "description": "Puedes gestionar todos los metadatos en este conocimiento aquí. Las modificaciones se sincronizarán en todos los documentos.", + "disabled": "desactivar", + "builtIn": "Integrado" + }, + "documentMetadata": { + "technicalParameters": "Parámetros técnicos", + "startLabeling": "Comenzar a etiquetar", + "documentInformation": "Información del documento", + "metadataToolTip": "Los metadatos sirven como un filtro crítico que mejora la precisión y relevancia de la recuperación de información. Puede modificar y agregar metadatos para este documento aquí." + }, + "metadata": "Metadatos", + "chooseTime": "Elige una hora...", + "addMetadata": "Agregar Metadatos" + }, + "embeddingModelNotAvailable": "El modelo de embeddings no está disponible.", + "externalKnowledgeBase": "Base de conocimientos externa", + "createFromPipeline": "Crear desde Knowledge Pipeline", + "updated": "Actualizado", + "serviceApi": { + "card": { + "apiReference": "Referencia de la API", + "apiKey": "Clave API", + "endpoint": "Punto de enlace de la API de servicio", + "title": "API del servicio de backend" + }, + "enabled": "En servicio", + "title": "API de servicios", + "disabled": "Discapacitado" + }, + "docAllEnabled_one": "Documento {{count}} activado", + "docAllEnabled_other": "Todos los documentos {{count}} habilitados", + "partialEnabled_one": "Total de {{count}} documentos, {{num}} disponibles", + "partialEnabled_other": "Total de {{count}} documentos, {{num}} disponibles", + "cornerLabel": { + "unavailable": "No disponible", + "pipeline": "Tubería" + }, + "multimodal": "Multimodal", + "imageUploader": { + "button": "Arrastra y suelta el archivo o la carpeta, o", + "browse": "Examinar", + "tip": "{{supportTypes}} (Máx. {{batchCount}}, {{size}} MB cada uno)" + } +} diff --git a/web/i18n/es-ES/dataset.ts b/web/i18n/es-ES/dataset.ts deleted file mode 100644 index db2c141800..0000000000 --- a/web/i18n/es-ES/dataset.ts +++ /dev/null @@ -1,253 +0,0 @@ -const translation = { - knowledge: 'Conocimiento', - documentCount: ' documentos', - wordCount: ' mil palabras', - appCount: ' aplicaciones vinculadas', - createDataset: 'Crear Conocimiento', - createDatasetIntro: 'Importa tus propios datos de texto o escribe datos en tiempo real a través de Webhook para mejorar el contexto de LLM.', - deleteDatasetConfirmTitle: '¿Eliminar este Conocimiento?', - deleteDatasetConfirmContent: - 'Eliminar el Conocimiento es irreversible. Los usuarios ya no podrán acceder a tu Conocimiento y todas las configuraciones y registros de las sugerencias se eliminarán permanentemente.', - datasetUsedByApp: 'El conocimiento está siendo utilizado por algunas aplicaciones. Las aplicaciones ya no podrán utilizar este Conocimiento y todas las configuraciones y registros de las sugerencias se eliminarán permanentemente.', - datasetDeleted: 'Conocimiento eliminado', - datasetDeleteFailed: 'Error al eliminar el Conocimiento', - didYouKnow: '¿Sabías?', - intro1: 'El Conocimiento se puede integrar en la aplicación Dify ', - intro2: 'como contexto', - intro3: ',', - intro4: 'o ', - intro5: 'se puede crear', - intro6: ' como un complemento independiente de ChatGPT para publicar', - unavailable: 'No disponible', - datasets: 'CONOCIMIENTO', - datasetsApi: 'ACCESO A LA API', - retrieval: { - semantic_search: { - title: 'Búsqueda Vectorial', - description: 'Genera incrustaciones de consulta y busca el fragmento de texto más similar a su representación vectorial.', - }, - full_text_search: { - title: 'Búsqueda de Texto Completo', - description: 'Indexa todos los términos del documento, lo que permite a los usuarios buscar cualquier término y recuperar el fragmento de texto relevante que contiene esos términos.', - }, - hybrid_search: { - title: 'Búsqueda Híbrida', - description: 'Ejecuta búsquedas de texto completo y búsquedas vectoriales simultáneamente, reordena para seleccionar la mejor coincidencia para la consulta del usuario. Es necesaria la configuración de las API del modelo de reordenamiento.', - recommend: 'Recomendar', - }, - invertedIndex: { - }, - change: 'Cambiar', - changeRetrievalMethod: 'Cambiar método de recuperación', - keyword_search: { - title: 'Índice invertido', - description: 'El índice invertido es una estructura utilizada para una recuperación eficiente. Organizado por términos, cada término apunta a documentos o páginas web que lo contienen.', - }, - }, - docsFailedNotice: 'no se pudieron indexar los documentos', - retry: 'Reintentar', - indexingTechnique: { - high_quality: 'AC', - economy: 'ECO', - }, - indexingMethod: { - semantic_search: 'VECTOR', - full_text_search: 'TEXTO COMPLETO', - hybrid_search: 'HÍBRIDO', - invertedIndex: 'INVERTIDO', - }, - mixtureHighQualityAndEconomicTip: 'Se requiere el modelo de reclasificación para la mezcla de bases de conocimiento de alta calidad y económicas.', - inconsistentEmbeddingModelTip: 'Se requiere el modelo de reclasificación si los modelos de incrustación de las bases de conocimiento seleccionadas son inconsistentes.', - retrievalSettings: 'Configuración de recuperación', - rerankSettings: 'Configuración de reclasificación', - weightedScore: { - title: 'Puntuación ponderada', - description: 'Al ajustar los pesos asignados, esta estrategia de reclasificación determina si se debe priorizar la coincidencia semántica o de palabras clave.', - semanticFirst: 'Semántica primero', - keywordFirst: 'Palabra clave primero', - customized: 'Personalizado', - semantic: 'Semántico', - keyword: 'Palabra clave', - }, - nTo1RetrievalLegacy: 'La recuperación N-a-1 será oficialmente obsoleta a partir de septiembre. Se recomienda utilizar la última recuperación de múltiples rutas para obtener mejores resultados.', - nTo1RetrievalLegacyLink: 'Más información', - nTo1RetrievalLegacyLinkText: 'La recuperación N-a-1 será oficialmente obsoleta en septiembre.', - defaultRetrievalTip: 'De forma predeterminada, se utiliza la recuperación de varias rutas. El conocimiento se recupera de múltiples bases de conocimiento y luego se vuelve a clasificar.', - editExternalAPIConfirmWarningContent: { - front: 'Esta API de conocimiento externo está vinculada a', - end: 'conocimiento externo, y esta modificación se aplicará a todos ellos. ¿Estás seguro de que quieres guardar este cambio?', - }, - editExternalAPIFormWarning: { - end: 'Conocimiento externo', - front: 'Esta API externa está vinculada a', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - end: '?', - front: 'Borrar', - }, - content: { - end: 'conocimiento externo. Al eliminar esta API, se invalidarán todos ellos. ¿Estás seguro de que quieres eliminar esta API?', - front: 'Esta API de conocimiento externo está vinculada a', - }, - noConnectionContent: '¿Está seguro de eliminar esta API?', - }, - selectExternalKnowledgeAPI: { - placeholder: 'Elegir una API de conocimiento externa', - }, - connectDatasetIntro: { - content: { - link: 'Más información sobre cómo crear una API externa', - front: 'Para conectarse a una base de conocimientos externa, primero debe crear una API externa. Por favor, lea atentamente y consulte', - end: '. A continuación, busque el ID de conocimiento correspondiente y rellénelo en el formulario de la izquierda. Si toda la información es correcta, saltará automáticamente a la prueba de recuperación en la base de conocimientos después de hacer clic en el botón conectar.', - }, - learnMore: 'Aprende más', - title: 'Cómo conectarse a una base de conocimientos externa', - }, - connectHelper: { - helper5: 'con cuidado antes de usar esta función.', - helper2: 'Solo se admite la funcionalidad de recuperación', - helper1: 'Conéctese a bases de conocimiento externas a través de la API y el ID de la base de conocimiento. Actualmente,', - helper3: '. Le recomendamos encarecidamente que', - helper4: 'Leer la documentación de ayuda', - }, - externalKnowledgeForm: { - connect: 'Conectar', - cancel: 'Cancelar', - }, - externalAPIForm: { - encrypted: { - front: 'Su token de API se cifrará y almacenará mediante', - end: 'Tecnología.', - }, - cancel: 'Cancelar', - apiKey: 'Clave de API', - save: 'Salvar', - edit: 'Editar', - name: 'Nombre', - endpoint: 'Punto de conexión de API', - }, - externalTag: 'Externo', - externalKnowledgeDescriptionPlaceholder: 'Describa lo que hay en esta base de conocimientos (opcional)', - externalKnowledgeNamePlaceholder: 'Introduzca el nombre de la base de conocimientos', - noExternalKnowledge: 'Todavía no hay una API de conocimiento externo, haga clic aquí para crear', - editExternalAPIFormTitle: 'Editar la API de conocimiento externo', - externalKnowledgeName: 'Nombre del conocimiento externo', - allExternalTip: 'Al usar solo conocimiento externo, el usuario puede elegir si desea habilitar el modelo Rerank. Si no se habilita, los fragmentos recuperados se ordenarán en función de las puntuaciones. Cuando las estrategias de recuperación de diferentes bases de conocimiento son inconsistentes, serán inexactas.', - createExternalAPI: 'Adición de una API de conocimiento externa', - externalKnowledgeId: 'ID de conocimiento externo', - connectDataset: 'Conéctese a una base de conocimientos externa', - createNewExternalAPI: 'Creación de una nueva API de conocimiento externo', - editExternalAPITooltipTitle: 'CONOCIMIENTO VINCULADO', - externalAPIPanelTitle: 'API de conocimiento externo', - externalKnowledgeDescription: 'Descripción del conocimiento', - externalAPIPanelDescription: 'La API de conocimiento externo se utiliza para conectarse a una base de conocimiento fuera de Dify y recuperar conocimiento de esa base de conocimiento.', - externalAPI: 'API externa', - externalKnowledgeIdPlaceholder: 'Introduzca el ID de conocimiento', - learnHowToWriteGoodKnowledgeDescription: 'Aprende a escribir una buena descripción del conocimiento', - externalAPIPanelDocumentation: 'Más información sobre cómo crear una API de conocimiento externo', - mixtureInternalAndExternalTip: 'El modelo de Rerank es necesario para la mezcla de conocimiento interno y externo.', - chunkingMode: { - parentChild: 'Padre-hijo', - general: 'General', - graph: 'gráfico', - qa: 'Preguntas y respuestas', - }, - parentMode: { - fullDoc: 'Documento completo', - paragraph: 'Párrafo', - }, - batchAction: { - selected: 'Seleccionado', - enable: 'Habilitar', - disable: 'Inutilizar', - cancel: 'Cancelar', - archive: 'Archivo', - delete: 'Borrar', - }, - enable: 'Habilitar', - documentsDisabled: '{{num}} Documentos desactivados - inactivos durante más de 30 días', - preprocessDocument: '{{num}} Documentos de preprocesamiento', - localDocs: 'Documentos locales', - allKnowledgeDescription: 'Seleccione esta opción para mostrar todos los conocimientos de este espacio de trabajo. Solo el propietario del espacio de trabajo puede administrar todo el conocimiento.', - allKnowledge: 'Todo el conocimiento', - metadata: { - createMetadata: { - title: 'Nuevos Metadatos', - back: 'Atrás', - type: 'Escribe', - namePlaceholder: 'Agregar nombre de metadatos', - name: 'Nombre', - }, - checkName: { - empty: 'El nombre de metadatos no puede estar vacío', - invalid: 'El nombre de los metadatos solo puede contener letras minúsculas, números y guiones bajos, y debe comenzar con una letra minúscula.', - tooLong: 'El nombre de los metadatos no puede exceder {{max}} caracteres.', - }, - batchEditMetadata: { - multipleValue: 'Valor Múltiple', - editMetadata: 'Editar Metadatos', - editDocumentsNum: 'Editando {{num}} documentos', - applyToAllSelectDocument: 'Aplicar a todos los documentos seleccionados', - applyToAllSelectDocumentTip: 'Cree automáticamente todos los metadatos editados y nuevos anteriores para todos los documentos seleccionados, de lo contrario, la edición de metadatos solo se aplicará a los documentos que ya los tengan.', - }, - selectMetadata: { - manageAction: 'Gestionar', - search: 'Buscar metadatos', - newAction: 'Nuevos Metadatos', - }, - datasetMetadata: { - addMetaData: 'Agregar Metadatos', - values: '{{num}} Valores', - deleteContent: '¿Estás seguro de que quieres eliminar los metadatos "{{name}}"?', - rename: 'Renombrar', - deleteTitle: 'Confirme para eliminar', - namePlaceholder: 'Nombre de metadatos', - builtInDescription: 'Los metadatos integrados se extraen y generan automáticamente. Deben estar habilitados antes de su uso y no se pueden editar.', - name: 'Nombre', - description: 'Puedes gestionar todos los metadatos en este conocimiento aquí. Las modificaciones se sincronizarán en todos los documentos.', - disabled: 'desactivar', - builtIn: 'Integrado', - }, - documentMetadata: { - technicalParameters: 'Parámetros técnicos', - startLabeling: 'Comenzar a etiquetar', - documentInformation: 'Información del documento', - metadataToolTip: 'Los metadatos sirven como un filtro crítico que mejora la precisión y relevancia de la recuperación de información. Puede modificar y agregar metadatos para este documento aquí.', - }, - metadata: 'Metadatos', - chooseTime: 'Elige una hora...', - addMetadata: 'Agregar Metadatos', - }, - embeddingModelNotAvailable: 'El modelo de embeddings no está disponible.', - externalKnowledgeBase: 'Base de conocimientos externa', - createFromPipeline: 'Crear desde Knowledge Pipeline', - updated: 'Actualizado', - serviceApi: { - card: { - apiReference: 'Referencia de la API', - apiKey: 'Clave API', - endpoint: 'Punto de enlace de la API de servicio', - title: 'API del servicio de backend', - }, - enabled: 'En servicio', - title: 'API de servicios', - disabled: 'Discapacitado', - }, - docAllEnabled_one: 'Documento {{count}} activado', - docAllEnabled_other: 'Todos los documentos {{count}} habilitados', - partialEnabled_one: 'Total de {{count}} documentos, {{num}} disponibles', - partialEnabled_other: 'Total de {{count}} documentos, {{num}} disponibles', - cornerLabel: { - unavailable: 'No disponible', - pipeline: 'Tubería', - }, - multimodal: 'Multimodal', - imageUploader: { - button: 'Arrastra y suelta el archivo o la carpeta, o', - browse: 'Examinar', - tip: '{{supportTypes}} (Máx. {{batchCount}}, {{size}} MB cada uno)', - }, -} - -export default translation diff --git a/web/i18n/es-ES/education.json b/web/i18n/es-ES/education.json new file mode 100644 index 0000000000..93de1a64ee --- /dev/null +++ b/web/i18n/es-ES/education.json @@ -0,0 +1,74 @@ +{ + "toVerifiedTip": { + "coupon": "cupón exclusivo del 100%", + "end": "para el Plan Profesional de Dify.", + "front": "Ahora eres elegible para el estado de Educación Verificada. Por favor, introduce tu información educativa a continuación para completar el proceso y recibir un" + }, + "form": { + "schoolName": { + "title": "El nombre de tu escuela", + "placeholder": "Ingrese el nombre oficial y completo de su escuela" + }, + "schoolRole": { + "option": { + "student": "Estudiante", + "administrator": "Administrador escolar", + "teacher": "Profesor" + }, + "title": "Tu rol en la escuela" + }, + "terms": { + "desc": { + "termsOfService": "Términos de Servicio", + "privacyPolicy": "Política de privacidad", + "and": "y", + "front": "Su información y uso del estado de Educación Verificada están sujetos a nuestra", + "end": ". Al enviar:" + }, + "option": { + "age": "Confirmo que tengo al menos 18 años", + "inSchool": "Confirmo que estoy inscrito o empleado en la institución indicada. Dify puede solicitar prueba de inscripción/empleo. Si falseo mi elegibilidad, acepto pagar cualquier tarifa que se haya eximido inicialmente en función de mi estado educativo." + }, + "title": "Términos y Acuerdos" + } + }, + "emailLabel": "Tu correo electrónico actual", + "submit": "Enviar", + "submitError": "Error en el envío del formulario. Por favor, inténtelo de nuevo más tarde.", + "successTitle": "Tienes la educación Dify verificada", + "toVerified": "Verifica la educación", + "successContent": "Hemos emitido un cupón de descuento del 100% para el plan Dify Professional en tu cuenta. El cupón es válido por un año, por favor utilízalo dentro del período de validez.", + "learn": "Aprende cómo obtener la verificación de la educación", + "rejectTitle": "Su verificación educativa de Dify ha sido rechazada.", + "currentSigned": "ACTUALMENTE CONECTADO COMO", + "rejectContent": "Desafortunadamente, no eres elegible para el estado de Educación Verificada y, por lo tanto, no puedes recibir el exclusivo cupón del 100% para el Plan Profesional de Dify si utilizas esta dirección de correo electrónico.", + "notice": { + "expired": { + "summary": { + "line1": "Todavía puedes acceder y usar Dify.", + "line2": "Sin embargo, ya no eres elegible para nuevos cupones de descuento educativo." + }, + "title": "Tu estado de educación ha expirado" + }, + "isAboutToExpire": { + "summary": "No te preocupes, esto no afectará tu suscripción actual, pero no obtendrás el descuento educativo cuando se renueve a menos que verifiques tu estado nuevamente.", + "title": "Tu estado educativo expirará el {{date}}" + }, + "stillInEducation": { + "title": "¿Aún en educación?", + "expired": "Verifica de nuevo ahora para obtener un nuevo cupón para el próximo año académico. Lo añadiremos a tu cuenta y podrás usarlo para la próxima actualización.", + "isAboutToExpire": "Verifica de nuevo ahora para obtener un nuevo cupón para el próximo año académico. Se guardará en tu cuenta y estará listo para usar en tu próxima renovación." + }, + "alreadyGraduated": { + "title": "¿Ya te has graduado?", + "isAboutToExpire": "Tu suscripción actual seguirá activa. Cuando termine, serás trasladado al plan Sandbox, o puedes actualizar en cualquier momento para restaurar el acceso completo a las funciones de pago.", + "expired": "Siéntete libre de actualizar en cualquier momento para obtener acceso completo a las funciones de pago." + }, + "action": { + "reVerify": "Re-verificar", + "upgrade": "Actualizar", + "dismiss": "Descartar" + }, + "dateFormat": "DD/MM/YYYY" + } +} diff --git a/web/i18n/es-ES/education.ts b/web/i18n/es-ES/education.ts deleted file mode 100644 index 9ec1c531db..0000000000 --- a/web/i18n/es-ES/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerifiedTip: { - coupon: 'cupón exclusivo del 100%', - end: 'para el Plan Profesional de Dify.', - front: 'Ahora eres elegible para el estado de Educación Verificada. Por favor, introduce tu información educativa a continuación para completar el proceso y recibir un', - }, - form: { - schoolName: { - title: 'El nombre de tu escuela', - placeholder: 'Ingrese el nombre oficial y completo de su escuela', - }, - schoolRole: { - option: { - student: 'Estudiante', - administrator: 'Administrador escolar', - teacher: 'Profesor', - }, - title: 'Tu rol en la escuela', - }, - terms: { - desc: { - termsOfService: 'Términos de Servicio', - privacyPolicy: 'Política de privacidad', - and: 'y', - front: 'Su información y uso del estado de Educación Verificada están sujetos a nuestra', - end: '. Al enviar:', - }, - option: { - age: 'Confirmo que tengo al menos 18 años', - inSchool: 'Confirmo que estoy inscrito o empleado en la institución indicada. Dify puede solicitar prueba de inscripción/empleo. Si falseo mi elegibilidad, acepto pagar cualquier tarifa que se haya eximido inicialmente en función de mi estado educativo.', - }, - title: 'Términos y Acuerdos', - }, - }, - emailLabel: 'Tu correo electrónico actual', - submit: 'Enviar', - submitError: 'Error en el envío del formulario. Por favor, inténtelo de nuevo más tarde.', - successTitle: 'Tienes la educación Dify verificada', - toVerified: 'Verifica la educación', - successContent: 'Hemos emitido un cupón de descuento del 100% para el plan Dify Professional en tu cuenta. El cupón es válido por un año, por favor utilízalo dentro del período de validez.', - learn: 'Aprende cómo obtener la verificación de la educación', - rejectTitle: 'Su verificación educativa de Dify ha sido rechazada.', - currentSigned: 'ACTUALMENTE CONECTADO COMO', - rejectContent: 'Desafortunadamente, no eres elegible para el estado de Educación Verificada y, por lo tanto, no puedes recibir el exclusivo cupón del 100% para el Plan Profesional de Dify si utilizas esta dirección de correo electrónico.', - notice: { - expired: { - summary: { - line1: 'Todavía puedes acceder y usar Dify.', - line2: 'Sin embargo, ya no eres elegible para nuevos cupones de descuento educativo.', - }, - title: 'Tu estado de educación ha expirado', - }, - isAboutToExpire: { - summary: 'No te preocupes, esto no afectará tu suscripción actual, pero no obtendrás el descuento educativo cuando se renueve a menos que verifiques tu estado nuevamente.', - title: 'Tu estado educativo expirará el {{date}}', - }, - stillInEducation: { - title: '¿Aún en educación?', - expired: 'Verifica de nuevo ahora para obtener un nuevo cupón para el próximo año académico. Lo añadiremos a tu cuenta y podrás usarlo para la próxima actualización.', - isAboutToExpire: 'Verifica de nuevo ahora para obtener un nuevo cupón para el próximo año académico. Se guardará en tu cuenta y estará listo para usar en tu próxima renovación.', - }, - alreadyGraduated: { - title: '¿Ya te has graduado?', - isAboutToExpire: 'Tu suscripción actual seguirá activa. Cuando termine, serás trasladado al plan Sandbox, o puedes actualizar en cualquier momento para restaurar el acceso completo a las funciones de pago.', - expired: 'Siéntete libre de actualizar en cualquier momento para obtener acceso completo a las funciones de pago.', - }, - action: { - reVerify: 'Re-verificar', - upgrade: 'Actualizar', - dismiss: 'Descartar', - }, - dateFormat: 'DD/MM/YYYY', - }, -} - -export default translation diff --git a/web/i18n/es-ES/explore.json b/web/i18n/es-ES/explore.json new file mode 100644 index 0000000000..d46314dd63 --- /dev/null +++ b/web/i18n/es-ES/explore.json @@ -0,0 +1,42 @@ +{ + "title": "Explorar", + "sidebar": { + "discovery": "Descubrimiento", + "chat": "Chat", + "workspace": "Espacio de trabajo", + "action": { + "pin": "Anclar", + "unpin": "Desanclar", + "rename": "Renombrar", + "delete": "Eliminar" + }, + "delete": { + "title": "Eliminar aplicación", + "content": "¿Estás seguro de que quieres eliminar esta aplicación?" + } + }, + "apps": { + "title": "Explorar aplicaciones de Dify", + "description": "Utiliza estas aplicaciones de plantilla al instante o personaliza tus propias aplicaciones basadas en las plantillas.", + "allCategories": "Recomendado" + }, + "appCard": { + "addToWorkspace": "Agregar al espacio de trabajo", + "customize": "Personalizar" + }, + "appCustomize": { + "title": "Crear aplicación a partir de {{name}}", + "subTitle": "Icono y nombre de la aplicación", + "nameRequired": "El nombre de la aplicación es obligatorio" + }, + "category": { + "Assistant": "Asistente", + "Writing": "Escritura", + "Translate": "Traducción", + "Programming": "Programación", + "HR": "Recursos Humanos", + "Agent": "Agente", + "Workflow": "Flujo de trabajo", + "Entertainment": "Entretenimiento" + } +} diff --git a/web/i18n/es-ES/explore.ts b/web/i18n/es-ES/explore.ts deleted file mode 100644 index 204f8da6c3..0000000000 --- a/web/i18n/es-ES/explore.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - title: 'Explorar', - sidebar: { - discovery: 'Descubrimiento', - chat: 'Chat', - workspace: 'Espacio de trabajo', - action: { - pin: 'Anclar', - unpin: 'Desanclar', - rename: 'Renombrar', - delete: 'Eliminar', - }, - delete: { - title: 'Eliminar aplicación', - content: '¿Estás seguro de que quieres eliminar esta aplicación?', - }, - }, - apps: { - title: 'Explorar aplicaciones de Dify', - description: 'Utiliza estas aplicaciones de plantilla al instante o personaliza tus propias aplicaciones basadas en las plantillas.', - allCategories: 'Recomendado', - }, - appCard: { - addToWorkspace: 'Agregar al espacio de trabajo', - customize: 'Personalizar', - }, - appCustomize: { - title: 'Crear aplicación a partir de {{name}}', - subTitle: 'Icono y nombre de la aplicación', - nameRequired: 'El nombre de la aplicación es obligatorio', - }, - category: { - Assistant: 'Asistente', - Writing: 'Escritura', - Translate: 'Traducción', - Programming: 'Programación', - HR: 'Recursos Humanos', - Agent: 'Agente', - Workflow: 'Flujo de trabajo', - Entertainment: 'Entretenimiento', - }, -} - -export default translation diff --git a/web/i18n/es-ES/layout.json b/web/i18n/es-ES/layout.json new file mode 100644 index 0000000000..cf30adc243 --- /dev/null +++ b/web/i18n/es-ES/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "collapseSidebar": "Contraer barra lateral", + "expandSidebar": "Expandir barra lateral" + } +} diff --git a/web/i18n/es-ES/layout.ts b/web/i18n/es-ES/layout.ts deleted file mode 100644 index 13676ab666..0000000000 --- a/web/i18n/es-ES/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - collapseSidebar: 'Contraer barra lateral', - expandSidebar: 'Expandir barra lateral', - }, -} - -export default translation diff --git a/web/i18n/es-ES/login.json b/web/i18n/es-ES/login.json new file mode 100644 index 0000000000..48cd2d0295 --- /dev/null +++ b/web/i18n/es-ES/login.json @@ -0,0 +1,124 @@ +{ + "pageTitle": "¡Hola, vamos a empezar!👋", + "welcome": "Bienvenido a Dify, por favor inicia sesión para continuar.", + "email": "Correo electrónico", + "emailPlaceholder": "Tu correo electrónico", + "password": "Contraseña", + "passwordPlaceholder": "Tu contraseña", + "name": "Nombre de usuario", + "namePlaceholder": "Tu nombre de usuario", + "forget": "¿Olvidaste tu contraseña?", + "signBtn": "Iniciar sesión", + "installBtn": "Configurar", + "setAdminAccount": "Configurando una cuenta de administrador", + "setAdminAccountDesc": "Privilegios máximos para la cuenta de administrador, que se puede utilizar para crear aplicaciones y administrar proveedores de LLM, etc.", + "createAndSignIn": "Crear e iniciar sesión", + "oneMoreStep": "Un paso más", + "createSample": "Con esta información, crearemos una aplicación de muestra para ti", + "invitationCode": "Código de invitación", + "invitationCodePlaceholder": "Tu código de invitación", + "interfaceLanguage": "Idioma de interfaz", + "timezone": "Zona horaria", + "go": "Ir a Dify", + "sendUsMail": "Envíanos un correo electrónico con tu presentación y nosotros nos encargaremos de la solicitud de invitación.", + "acceptPP": "He leído y acepto la política de privacidad", + "reset": "Por favor, ejecuta el siguiente comando para restablecer tu contraseña", + "withGitHub": "Continuar con GitHub", + "withGoogle": "Continuar con Google", + "rightTitle": "Desbloquea todo el potencial de LLM", + "rightDesc": "Construye de manera sencilla aplicaciones de IA visualmente cautivadoras, operables y mejorables.", + "tos": "Términos de servicio", + "pp": "Política de privacidad", + "tosDesc": "Al registrarte, aceptas nuestros", + "goToInit": "Si no has inicializado la cuenta, por favor ve a la página de inicialización", + "dontHave": "¿No tienes?", + "invalidInvitationCode": "Código de invitación inválido", + "accountAlreadyInited": "La cuenta ya está inicializada", + "forgotPassword": "¿Olvidaste tu contraseña?", + "resetLinkSent": "Enlace de restablecimiento enviado", + "sendResetLink": "Enviar enlace de restablecimiento", + "backToSignIn": "Volver a iniciar sesión", + "forgotPasswordDesc": "Por favor, ingresa tu dirección de correo electrónico para restablecer tu contraseña. Te enviaremos un correo electrónico con instrucciones sobre cómo restablecer tu contraseña.", + "checkEmailForResetLink": "Por favor, revisa tu correo electrónico para encontrar un enlace para restablecer tu contraseña. Si no aparece en unos minutos, asegúrate de revisar tu carpeta de spam.", + "passwordChanged": "Inicia sesión ahora", + "changePassword": "Cambiar contraseña", + "changePasswordTip": "Por favor, ingresa una nueva contraseña para tu cuenta", + "invalidToken": "Token inválido o expirado", + "confirmPassword": "Confirmar contraseña", + "confirmPasswordPlaceholder": "Confirma tu nueva contraseña", + "passwordChangedTip": "Tu contraseña se ha cambiado correctamente", + "error": { + "emailEmpty": "Se requiere una dirección de correo electrónico", + "emailInValid": "Por favor, ingresa una dirección de correo electrónico válida", + "nameEmpty": "Se requiere un nombre", + "passwordEmpty": "Se requiere una contraseña", + "passwordLengthInValid": "La contraseña debe tener al menos 8 caracteres", + "passwordInvalid": "La contraseña debe contener letras y números, y tener una longitud mayor a 8", + "registrationNotAllowed": "Cuenta no encontrada. Póngase en contacto con el administrador del sistema para registrarse.", + "invalidEmailOrPassword": "Correo electrónico o contraseña inválidos." + }, + "license": { + "tip": "Antes de comenzar con Dify Community Edition, lee la", + "link": "Licencia de código abierto de GitHub" + }, + "join": "Unirse", + "joinTipStart": "Te invita a unirte al equipo de", + "joinTipEnd": "en Dify", + "invalid": "El enlace ha expirado", + "explore": "Explorar Dify", + "activatedTipStart": "Te has unido al equipo de", + "activatedTipEnd": "", + "activated": "Inicia sesión ahora", + "adminInitPassword": "Contraseña de inicialización de administrador", + "validate": "Validar", + "checkCode": { + "verify": "Verificar", + "didNotReceiveCode": "¿No recibiste el código?", + "verificationCodePlaceholder": "Ingresa el código de 6 dígitos", + "checkYourEmail": "Revisa tu correo electrónico", + "emptyCode": "Se requiere código", + "useAnotherMethod": "Usar otro método", + "resend": "Reenviar", + "verificationCode": "Código de verificación", + "validTime": "Ten en cuenta que el código es válido durante 5 minutos", + "invalidCode": "Código no válido", + "tipsPrefix": "Enviamos un código de verificación a" + }, + "or": "O", + "back": "Atrás", + "continueWithCode": "Continuar con el código", + "usePassword": "Usar contraseña", + "changePasswordBtn": "Establecer una contraseña", + "withSSO": "Continuar con SSO", + "sendVerificationCode": "Enviar código de verificación", + "backToLogin": "Volver al inicio de sesión", + "resetPassword": "Restablecer contraseña", + "enterYourName": "Por favor, introduzca su nombre de usuario", + "useVerificationCode": "Usar código de verificación", + "resetPasswordDesc": "Escriba el correo electrónico que utilizó para registrarse en Dify y le enviaremos un correo electrónico de restablecimiento de contraseña.", + "noLoginMethod": "Método de autenticación no configurado", + "setYourAccount": "Configura tu cuenta", + "noLoginMethodTip": "Póngase en contacto con el administrador del sistema para agregar un método de autenticación.", + "licenseInactive": "Licencia inactiva", + "licenseInactiveTip": "La licencia de Dify Enterprise para su espacio de trabajo está inactiva. Póngase en contacto con su administrador para seguir utilizando Dify.", + "licenseExpired": "Licencia caducada", + "licenseLost": "Licencia perdida", + "licenseExpiredTip": "La licencia de Dify Enterprise para su espacio de trabajo ha caducado. Póngase en contacto con su administrador para seguir utilizando Dify.", + "licenseLostTip": "No se pudo conectar el servidor de licencias de Dife. Póngase en contacto con su administrador para seguir utilizando Dify.", + "webapp": { + "disabled": "La autenticación de la aplicación web está desactivada. Por favor, contacte al administrador del sistema para habilitarla. Puede intentar usar la aplicación directamente.", + "noLoginMethodTip": "Por favor, contacta al administrador del sistema para agregar un método de autenticación.", + "noLoginMethod": "Método de autenticación no configurado para la aplicación web", + "login": "Iniciar sesión" + }, + "signup": { + "signIn": "Iniciar sesión", + "haveAccount": "¿Ya tienes una cuenta?", + "createAccount": "Crea tu cuenta", + "noAccount": "¿No tienes una cuenta?", + "signUp": "Regístrate", + "welcome": "👋 ¡Bienvenido! Por favor, completa los detalles para comenzar.", + "verifyMail": "Continuar con el código de verificación" + }, + "pageTitleForE": "¡Hola, vamos a empezar!" +} diff --git a/web/i18n/es-ES/login.ts b/web/i18n/es-ES/login.ts deleted file mode 100644 index cbc223e7da..0000000000 --- a/web/i18n/es-ES/login.ts +++ /dev/null @@ -1,126 +0,0 @@ -const translation = { - pageTitle: '¡Hola, vamos a empezar!👋', - welcome: 'Bienvenido a Dify, por favor inicia sesión para continuar.', - email: 'Correo electrónico', - emailPlaceholder: 'Tu correo electrónico', - password: 'Contraseña', - passwordPlaceholder: 'Tu contraseña', - name: 'Nombre de usuario', - namePlaceholder: 'Tu nombre de usuario', - forget: '¿Olvidaste tu contraseña?', - signBtn: 'Iniciar sesión', - installBtn: 'Configurar', - setAdminAccount: 'Configurando una cuenta de administrador', - setAdminAccountDesc: 'Privilegios máximos para la cuenta de administrador, que se puede utilizar para crear aplicaciones y administrar proveedores de LLM, etc.', - createAndSignIn: 'Crear e iniciar sesión', - oneMoreStep: 'Un paso más', - createSample: 'Con esta información, crearemos una aplicación de muestra para ti', - invitationCode: 'Código de invitación', - invitationCodePlaceholder: 'Tu código de invitación', - interfaceLanguage: 'Idioma de interfaz', - timezone: 'Zona horaria', - go: 'Ir a Dify', - sendUsMail: 'Envíanos un correo electrónico con tu presentación y nosotros nos encargaremos de la solicitud de invitación.', - acceptPP: 'He leído y acepto la política de privacidad', - reset: 'Por favor, ejecuta el siguiente comando para restablecer tu contraseña', - withGitHub: 'Continuar con GitHub', - withGoogle: 'Continuar con Google', - rightTitle: 'Desbloquea todo el potencial de LLM', - rightDesc: 'Construye de manera sencilla aplicaciones de IA visualmente cautivadoras, operables y mejorables.', - tos: 'Términos de servicio', - pp: 'Política de privacidad', - tosDesc: 'Al registrarte, aceptas nuestros', - goToInit: 'Si no has inicializado la cuenta, por favor ve a la página de inicialización', - dontHave: '¿No tienes?', - invalidInvitationCode: 'Código de invitación inválido', - accountAlreadyInited: 'La cuenta ya está inicializada', - forgotPassword: '¿Olvidaste tu contraseña?', - resetLinkSent: 'Enlace de restablecimiento enviado', - sendResetLink: 'Enviar enlace de restablecimiento', - backToSignIn: 'Volver a iniciar sesión', - forgotPasswordDesc: 'Por favor, ingresa tu dirección de correo electrónico para restablecer tu contraseña. Te enviaremos un correo electrónico con instrucciones sobre cómo restablecer tu contraseña.', - checkEmailForResetLink: 'Por favor, revisa tu correo electrónico para encontrar un enlace para restablecer tu contraseña. Si no aparece en unos minutos, asegúrate de revisar tu carpeta de spam.', - passwordChanged: 'Inicia sesión ahora', - changePassword: 'Cambiar contraseña', - changePasswordTip: 'Por favor, ingresa una nueva contraseña para tu cuenta', - invalidToken: 'Token inválido o expirado', - confirmPassword: 'Confirmar contraseña', - confirmPasswordPlaceholder: 'Confirma tu nueva contraseña', - passwordChangedTip: 'Tu contraseña se ha cambiado correctamente', - error: { - emailEmpty: 'Se requiere una dirección de correo electrónico', - emailInValid: 'Por favor, ingresa una dirección de correo electrónico válida', - nameEmpty: 'Se requiere un nombre', - passwordEmpty: 'Se requiere una contraseña', - passwordLengthInValid: 'La contraseña debe tener al menos 8 caracteres', - passwordInvalid: 'La contraseña debe contener letras y números, y tener una longitud mayor a 8', - registrationNotAllowed: 'Cuenta no encontrada. Póngase en contacto con el administrador del sistema para registrarse.', - invalidEmailOrPassword: 'Correo electrónico o contraseña inválidos.', - }, - license: { - tip: 'Antes de comenzar con Dify Community Edition, lee la', - link: 'Licencia de código abierto de GitHub', - }, - join: 'Unirse', - joinTipStart: 'Te invita a unirte al equipo de', - joinTipEnd: 'en Dify', - invalid: 'El enlace ha expirado', - explore: 'Explorar Dify', - activatedTipStart: 'Te has unido al equipo de', - activatedTipEnd: '', - activated: 'Inicia sesión ahora', - adminInitPassword: 'Contraseña de inicialización de administrador', - validate: 'Validar', - checkCode: { - verify: 'Verificar', - didNotReceiveCode: '¿No recibiste el código?', - verificationCodePlaceholder: 'Ingresa el código de 6 dígitos', - checkYourEmail: 'Revisa tu correo electrónico', - emptyCode: 'Se requiere código', - useAnotherMethod: 'Usar otro método', - resend: 'Reenviar', - verificationCode: 'Código de verificación', - validTime: 'Ten en cuenta que el código es válido durante 5 minutos', - invalidCode: 'Código no válido', - tipsPrefix: 'Enviamos un código de verificación a', - }, - or: 'O', - back: 'Atrás', - continueWithCode: 'Continuar con el código', - usePassword: 'Usar contraseña', - changePasswordBtn: 'Establecer una contraseña', - withSSO: 'Continuar con SSO', - sendVerificationCode: 'Enviar código de verificación', - backToLogin: 'Volver al inicio de sesión', - resetPassword: 'Restablecer contraseña', - enterYourName: 'Por favor, introduzca su nombre de usuario', - useVerificationCode: 'Usar código de verificación', - resetPasswordDesc: 'Escriba el correo electrónico que utilizó para registrarse en Dify y le enviaremos un correo electrónico de restablecimiento de contraseña.', - noLoginMethod: 'Método de autenticación no configurado', - setYourAccount: 'Configura tu cuenta', - noLoginMethodTip: 'Póngase en contacto con el administrador del sistema para agregar un método de autenticación.', - licenseInactive: 'Licencia inactiva', - licenseInactiveTip: 'La licencia de Dify Enterprise para su espacio de trabajo está inactiva. Póngase en contacto con su administrador para seguir utilizando Dify.', - licenseExpired: 'Licencia caducada', - licenseLost: 'Licencia perdida', - licenseExpiredTip: 'La licencia de Dify Enterprise para su espacio de trabajo ha caducado. Póngase en contacto con su administrador para seguir utilizando Dify.', - licenseLostTip: 'No se pudo conectar el servidor de licencias de Dife. Póngase en contacto con su administrador para seguir utilizando Dify.', - webapp: { - disabled: 'La autenticación de la aplicación web está desactivada. Por favor, contacte al administrador del sistema para habilitarla. Puede intentar usar la aplicación directamente.', - noLoginMethodTip: 'Por favor, contacta al administrador del sistema para agregar un método de autenticación.', - noLoginMethod: 'Método de autenticación no configurado para la aplicación web', - login: 'Iniciar sesión', - }, - signup: { - signIn: 'Iniciar sesión', - haveAccount: '¿Ya tienes una cuenta?', - createAccount: 'Crea tu cuenta', - noAccount: '¿No tienes una cuenta?', - signUp: 'Regístrate', - welcome: '👋 ¡Bienvenido! Por favor, completa los detalles para comenzar.', - verifyMail: 'Continuar con el código de verificación', - }, - pageTitleForE: '¡Hola, vamos a empezar!', -} - -export default translation diff --git a/web/i18n/es-ES/oauth.json b/web/i18n/es-ES/oauth.json new file mode 100644 index 0000000000..b40df608df --- /dev/null +++ b/web/i18n/es-ES/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "needLogin": "Por favor inicie sesión para autorizar", + "notLoggedIn": "Esta aplicación quiere acceder a su cuenta de Dify Cloud", + "loggedIn": "Esta aplicación quiere acceder a la siguiente información de su cuenta de Dify Cloud.", + "common": "Respetamos su privacidad y solo utilizaremos esta información para mejorar su experiencia con nuestras herramientas para desarrolladores." + }, + "scopes": { + "avatar": "Avatar", + "name": "Nombre", + "timezone": "Zona horaria", + "languagePreference": "Preferencia de idioma", + "email": "Correo electrónico" + }, + "error": { + "authAppInfoFetchFailed": "No se pudo obtener la información de la aplicación para la autorización", + "authorizeFailed": "La autorización falló", + "invalidParams": "Parámetros inválidos" + }, + "continue": "Continuar", + "unknownApp": "Aplicación Desconocida", + "switchAccount": "Cambiar de cuenta", + "login": "Iniciar sesión", + "connect": "Conectar a" +} diff --git a/web/i18n/es-ES/oauth.ts b/web/i18n/es-ES/oauth.ts deleted file mode 100644 index 23d7eaa895..0000000000 --- a/web/i18n/es-ES/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - needLogin: 'Por favor inicie sesión para autorizar', - notLoggedIn: 'Esta aplicación quiere acceder a su cuenta de Dify Cloud', - loggedIn: 'Esta aplicación quiere acceder a la siguiente información de su cuenta de Dify Cloud.', - common: 'Respetamos su privacidad y solo utilizaremos esta información para mejorar su experiencia con nuestras herramientas para desarrolladores.', - }, - scopes: { - avatar: 'Avatar', - name: 'Nombre', - timezone: 'Zona horaria', - languagePreference: 'Preferencia de idioma', - email: 'Correo electrónico', - }, - error: { - authAppInfoFetchFailed: 'No se pudo obtener la información de la aplicación para la autorización', - authorizeFailed: 'La autorización falló', - invalidParams: 'Parámetros inválidos', - }, - continue: 'Continuar', - unknownApp: 'Aplicación Desconocida', - switchAccount: 'Cambiar de cuenta', - login: 'Iniciar sesión', - connect: 'Conectar a', -} - -export default translation diff --git a/web/i18n/es-ES/pipeline.json b/web/i18n/es-ES/pipeline.json new file mode 100644 index 0000000000..8491c34003 --- /dev/null +++ b/web/i18n/es-ES/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "publishAsPipeline": { + "name": "Nombre e icono de la tubería", + "description": "Descripción del conocimiento", + "namePlaceholder": "Ingrese el nombre de esta canalización de conocimiento. (Obligatorio)", + "descriptionPlaceholder": "Ingrese la descripción de este canal de conocimiento. (Opcional)" + }, + "reRun": "Repetición", + "processing": "Tratamiento", + "publishAs": "Publicar como una canalización de conocimiento", + "confirmPublish": "Confirmar publicación", + "goToAddDocuments": "Ir a agregar documentos", + "confirmPublishContent": "Después de publicar correctamente la canalización de conocimiento, la estructura de fragmentos de esta base de conocimiento no se puede modificar. ¿Estás seguro de que quieres publicarlo?", + "preparingDataSource": "Preparar el origen de datos", + "testRun": "Ejecución de prueba" + }, + "inputField": { + "manage": "Gestionar", + "create": "Crear campo de entrada de usuario" + }, + "publishToast": { + "title": "Este pipeline aún no se ha publicado", + "desc": "Cuando la canalización no se publica, puede modificar la estructura de fragmentos en el nodo de la base de conocimiento y la orquestación y los cambios de la canalización se guardarán automáticamente como borrador." + }, + "result": { + "resultPreview": { + "loading": "Tratamiento... Espera", + "viewDetails": "Ver detalles", + "error": "Error ocurrido durante la ejecución", + "footerTip": "En modo de prueba, previsualiza hasta {{count}} fragmentos" + } + }, + "ragToolSuggestions": { + "title": "Sugerencias para el GAR", + "noRecommendationPlugins": "No hay complementos recomendados, encuentra más en Marketplace" + } +} diff --git a/web/i18n/es-ES/pipeline.ts b/web/i18n/es-ES/pipeline.ts deleted file mode 100644 index 1233a0b0f6..0000000000 --- a/web/i18n/es-ES/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - publishAsPipeline: { - name: 'Nombre e icono de la tubería', - description: 'Descripción del conocimiento', - namePlaceholder: 'Ingrese el nombre de esta canalización de conocimiento. (Obligatorio)', - descriptionPlaceholder: 'Ingrese la descripción de este canal de conocimiento. (Opcional)', - }, - reRun: 'Repetición', - processing: 'Tratamiento', - publishAs: 'Publicar como una canalización de conocimiento', - confirmPublish: 'Confirmar publicación', - goToAddDocuments: 'Ir a agregar documentos', - confirmPublishContent: 'Después de publicar correctamente la canalización de conocimiento, la estructura de fragmentos de esta base de conocimiento no se puede modificar. ¿Estás seguro de que quieres publicarlo?', - preparingDataSource: 'Preparar el origen de datos', - testRun: 'Ejecución de prueba', - }, - inputField: { - manage: 'Gestionar', - create: 'Crear campo de entrada de usuario', - }, - publishToast: { - title: 'Este pipeline aún no se ha publicado', - desc: 'Cuando la canalización no se publica, puede modificar la estructura de fragmentos en el nodo de la base de conocimiento y la orquestación y los cambios de la canalización se guardarán automáticamente como borrador.', - }, - result: { - resultPreview: { - loading: 'Tratamiento... Espera', - viewDetails: 'Ver detalles', - error: 'Error ocurrido durante la ejecución', - footerTip: 'En modo de prueba, previsualiza hasta {{count}} fragmentos', - }, - }, - ragToolSuggestions: { - title: 'Sugerencias para el GAR', - noRecommendationPlugins: 'No hay complementos recomendados, encuentra más en Marketplace', - }, -} - -export default translation diff --git a/web/i18n/es-ES/plugin-tags.json b/web/i18n/es-ES/plugin-tags.json new file mode 100644 index 0000000000..21bb0a7469 --- /dev/null +++ b/web/i18n/es-ES/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "tags": { + "image": "Imagen", + "agent": "Agente", + "medical": "Médico", + "weather": "Tiempo", + "design": "Diseño", + "videos": "Vídeos", + "education": "Educación", + "finance": "Finanzas", + "entertainment": "Diversión", + "social": "Social", + "travel": "Viajar", + "utilities": "Utilidades", + "search": "Buscar", + "news": "Noticia", + "business": "Negocio", + "other": "Otro", + "productivity": "Productividad", + "rag": "TRAPO" + }, + "allTags": "Todas las etiquetas", + "searchTags": "Etiquetas de búsqueda" +} diff --git a/web/i18n/es-ES/plugin-tags.ts b/web/i18n/es-ES/plugin-tags.ts deleted file mode 100644 index 336aa80d2c..0000000000 --- a/web/i18n/es-ES/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - tags: { - image: 'Imagen', - agent: 'Agente', - medical: 'Médico', - weather: 'Tiempo', - design: 'Diseño', - videos: 'Vídeos', - education: 'Educación', - finance: 'Finanzas', - entertainment: 'Diversión', - social: 'Social', - travel: 'Viajar', - utilities: 'Utilidades', - search: 'Buscar', - news: 'Noticia', - business: 'Negocio', - other: 'Otro', - productivity: 'Productividad', - rag: 'TRAPO', - }, - allTags: 'Todas las etiquetas', - searchTags: 'Etiquetas de búsqueda', -} - -export default translation diff --git a/web/i18n/es-ES/plugin-trigger.json b/web/i18n/es-ES/plugin-trigger.json new file mode 100644 index 0000000000..14d30657f1 --- /dev/null +++ b/web/i18n/es-ES/plugin-trigger.json @@ -0,0 +1,184 @@ +{ + "subscription": { + "title": "Suscripciones", + "listNum": "suscripciones de {{num}}", + "empty": { + "title": "Sin suscripciones", + "button": "Nueva suscripción" + }, + "createButton": { + "oauth": "Nueva suscripción con OAuth", + "apiKey": "Nueva suscripción con clave API", + "manual": "Pega la URL para crear una nueva suscripción" + }, + "createSuccess": "Suscripción creada con éxito", + "createFailed": "No se pudo crear la suscripción", + "maxCount": "Máximo {{num}} suscripciones", + "selectPlaceholder": "Seleccionar suscripción", + "noSubscriptionSelected": "No se ha seleccionado ninguna suscripción", + "subscriptionRemoved": "Suscripción eliminada", + "list": { + "title": "Suscripciones", + "addButton": "Agregar", + "tip": "Recibir eventos mediante suscripción", + "item": { + "enabled": "Habilitado", + "disabled": "Desactivado", + "credentialType": { + "api_key": "Clave de API", + "oauth2": "OAuth", + "unauthorized": "Manual" + }, + "actions": { + "delete": "Eliminar", + "deleteConfirm": { + "title": "¿Eliminar {{name}}?", + "success": "Suscripción {{name}} eliminada con éxito", + "error": "Error al eliminar la suscripción {{name}}", + "content": "Una vez eliminada, esta suscripción no se puede recuperar. Por favor, confirme.", + "contentWithApps": "La suscripción actual está referenciada por {{count}} aplicaciones. Eliminarla hará que las aplicaciones configuradas dejen de recibir eventos de suscripción.", + "confirm": "Confirmar eliminación", + "cancel": "Cancelar", + "confirmInputWarning": "Por favor, ingrese el nombre correcto para confirmar.", + "confirmInputPlaceholder": "Introduce \"{{name}}\" para confirmar.", + "confirmInputTip": "Por favor, introduzca “{{name}}” para confirmar." + } + }, + "status": { + "active": "activo", + "inactive": "inactivo" + }, + "usedByNum": "Utilizado por {{num}} flujos de trabajo", + "noUsed": "No se utilizó ningún flujo de trabajo" + } + }, + "addType": { + "title": "Añadir suscripción", + "description": "Elige cómo quieres crear tu suscripción de activador", + "options": { + "apikey": { + "title": "Crear con clave API", + "description": "Crear suscripción automáticamente usando credenciales de API" + }, + "oauth": { + "title": "Crear con OAuth", + "description": "Autorizar con una plataforma de terceros para crear una suscripción", + "clientSettings": "Configuración del cliente OAuth", + "clientTitle": "Cliente OAuth", + "default": "predeterminado", + "custom": "Personalizado" + }, + "manual": { + "title": "Configuración manual", + "description": "Pega la URL para crear una nueva suscripción", + "tip": "Configurar la URL en la plataforma de terceros manualmente" + } + } + } + }, + "modal": { + "steps": { + "verify": "Verificar", + "configuration": "Configuración" + }, + "common": { + "cancel": "Cancelar", + "back": "Atrás", + "next": "Siguiente", + "create": "Crear", + "verify": "Verificar", + "authorize": "Autorizar", + "creating": "Creando...", + "verifying": "Verificando...", + "authorizing": "Autorizando..." + }, + "oauthRedirectInfo": "Dado que no se encontraron secretos de cliente del sistema para este proveedor de herramientas, es necesario configurarlo manualmente; para redirect_uri, por favor use", + "apiKey": { + "title": "Crear con clave API", + "verify": { + "title": "Verificar credenciales", + "description": "Por favor, proporciona tus credenciales de API para verificar el acceso", + "error": "La verificación de las credenciales falló. Por favor, revisa tu clave API.", + "success": "Credenciales verificadas con éxito" + }, + "configuration": { + "title": "Configurar suscripción", + "description": "Configura los parámetros de tu suscripción" + } + }, + "oauth": { + "title": "Crear con OAuth", + "authorization": { + "title": "Autorización OAuth", + "description": "Autoriza a Dify para acceder a tu cuenta", + "redirectUrl": "URL de redirección", + "redirectUrlHelp": "Utiliza esta URL en la configuración de tu aplicación OAuth", + "authorizeButton": "Autorizar con {{provider}}", + "waitingAuth": "Esperando autorización...", + "authSuccess": "Autorización exitosa", + "authFailed": "Error al obtener la información de autorización OAuth", + "waitingJump": "Autorizado, esperando para saltar" + }, + "configuration": { + "title": "Configurar suscripción", + "description": "Configura los parámetros de tu suscripción después de la autorización", + "success": "Configuración de OAuth exitosa", + "failed": "La configuración de OAuth falló" + }, + "remove": { + "success": "Eliminación de OAuth exitosa", + "failed": "Error al eliminar OAuth" + }, + "save": { + "success": "Configuración de OAuth guardada con éxito" + } + }, + "manual": { + "title": "Configuración manual", + "description": "Configura tu suscripción al webhook manualmente", + "logs": { + "title": "Registros de solicitudes", + "request": "Solicitud", + "loading": "Esperando solicitud de {{pluginName}}..." + } + }, + "form": { + "subscriptionName": { + "label": "Nombre de la suscripción", + "placeholder": "Ingrese el nombre de la suscripción", + "required": "Se requiere el nombre de la suscripción" + }, + "callbackUrl": { + "label": "URL de retorno de llamada", + "description": "Esta URL recibirá eventos de webhook", + "tooltip": "Proporcione un endpoint accesible públicamente que pueda recibir solicitudes de devolución de llamada del proveedor del activador.", + "placeholder": "Generando...", + "privateAddressWarning": "Esta URL parece ser una dirección interna, lo que puede hacer que las solicitudes del webhook fallen. Puede cambiar TRIGGER_URL a una dirección pública." + } + }, + "errors": { + "createFailed": "No se pudo crear la suscripción", + "verifyFailed": "No se pudieron verificar las credenciales", + "authFailed": "Autorización fallida", + "networkError": "Error de red, por favor intenta de nuevo" + } + }, + "events": { + "title": "Eventos Disponibles", + "description": "Eventos a los que este complemento de activación puede suscribirse", + "empty": "No hay eventos disponibles", + "event": "Evento", + "events": "Eventos", + "actionNum": "{{num}} {{event}} INCLUIDO", + "item": { + "parameters": "parámetros {{count}}", + "noParameters": "Sin parámetros" + }, + "output": "Salida" + }, + "node": { + "status": { + "warning": "Desconectar" + } + } +} diff --git a/web/i18n/es-ES/plugin-trigger.ts b/web/i18n/es-ES/plugin-trigger.ts deleted file mode 100644 index 07f5729bc8..0000000000 --- a/web/i18n/es-ES/plugin-trigger.ts +++ /dev/null @@ -1,186 +0,0 @@ -const translation = { - subscription: { - title: 'Suscripciones', - listNum: 'suscripciones de {{num}}', - empty: { - title: 'Sin suscripciones', - button: 'Nueva suscripción', - }, - createButton: { - oauth: 'Nueva suscripción con OAuth', - apiKey: 'Nueva suscripción con clave API', - manual: 'Pega la URL para crear una nueva suscripción', - }, - createSuccess: 'Suscripción creada con éxito', - createFailed: 'No se pudo crear la suscripción', - maxCount: 'Máximo {{num}} suscripciones', - selectPlaceholder: 'Seleccionar suscripción', - noSubscriptionSelected: 'No se ha seleccionado ninguna suscripción', - subscriptionRemoved: 'Suscripción eliminada', - list: { - title: 'Suscripciones', - addButton: 'Agregar', - tip: 'Recibir eventos mediante suscripción', - item: { - enabled: 'Habilitado', - disabled: 'Desactivado', - credentialType: { - api_key: 'Clave de API', - oauth2: 'OAuth', - unauthorized: 'Manual', - }, - actions: { - delete: 'Eliminar', - deleteConfirm: { - title: '¿Eliminar {{name}}?', - success: 'Suscripción {{name}} eliminada con éxito', - error: 'Error al eliminar la suscripción {{name}}', - content: 'Una vez eliminada, esta suscripción no se puede recuperar. Por favor, confirme.', - contentWithApps: 'La suscripción actual está referenciada por {{count}} aplicaciones. Eliminarla hará que las aplicaciones configuradas dejen de recibir eventos de suscripción.', - confirm: 'Confirmar eliminación', - cancel: 'Cancelar', - confirmInputWarning: 'Por favor, ingrese el nombre correcto para confirmar.', - confirmInputPlaceholder: 'Introduce "{{name}}" para confirmar.', - confirmInputTip: 'Por favor, introduzca “{{name}}” para confirmar.', - }, - }, - status: { - active: 'activo', - inactive: 'inactivo', - }, - usedByNum: 'Utilizado por {{num}} flujos de trabajo', - noUsed: 'No se utilizó ningún flujo de trabajo', - }, - }, - addType: { - title: 'Añadir suscripción', - description: 'Elige cómo quieres crear tu suscripción de activador', - options: { - apikey: { - title: 'Crear con clave API', - description: 'Crear suscripción automáticamente usando credenciales de API', - }, - oauth: { - title: 'Crear con OAuth', - description: 'Autorizar con una plataforma de terceros para crear una suscripción', - clientSettings: 'Configuración del cliente OAuth', - clientTitle: 'Cliente OAuth', - default: 'predeterminado', - custom: 'Personalizado', - }, - manual: { - title: 'Configuración manual', - description: 'Pega la URL para crear una nueva suscripción', - tip: 'Configurar la URL en la plataforma de terceros manualmente', - }, - }, - }, - }, - modal: { - steps: { - verify: 'Verificar', - configuration: 'Configuración', - }, - common: { - cancel: 'Cancelar', - back: 'Atrás', - next: 'Siguiente', - create: 'Crear', - verify: 'Verificar', - authorize: 'Autorizar', - creating: 'Creando...', - verifying: 'Verificando...', - authorizing: 'Autorizando...', - }, - oauthRedirectInfo: 'Dado que no se encontraron secretos de cliente del sistema para este proveedor de herramientas, es necesario configurarlo manualmente; para redirect_uri, por favor use', - apiKey: { - title: 'Crear con clave API', - verify: { - title: 'Verificar credenciales', - description: 'Por favor, proporciona tus credenciales de API para verificar el acceso', - error: 'La verificación de las credenciales falló. Por favor, revisa tu clave API.', - success: 'Credenciales verificadas con éxito', - }, - configuration: { - title: 'Configurar suscripción', - description: 'Configura los parámetros de tu suscripción', - }, - }, - oauth: { - title: 'Crear con OAuth', - authorization: { - title: 'Autorización OAuth', - description: 'Autoriza a Dify para acceder a tu cuenta', - redirectUrl: 'URL de redirección', - redirectUrlHelp: 'Utiliza esta URL en la configuración de tu aplicación OAuth', - authorizeButton: 'Autorizar con {{provider}}', - waitingAuth: 'Esperando autorización...', - authSuccess: 'Autorización exitosa', - authFailed: 'Error al obtener la información de autorización OAuth', - waitingJump: 'Autorizado, esperando para saltar', - }, - configuration: { - title: 'Configurar suscripción', - description: 'Configura los parámetros de tu suscripción después de la autorización', - success: 'Configuración de OAuth exitosa', - failed: 'La configuración de OAuth falló', - }, - remove: { - success: 'Eliminación de OAuth exitosa', - failed: 'Error al eliminar OAuth', - }, - save: { - success: 'Configuración de OAuth guardada con éxito', - }, - }, - manual: { - title: 'Configuración manual', - description: 'Configura tu suscripción al webhook manualmente', - logs: { - title: 'Registros de solicitudes', - request: 'Solicitud', - loading: 'Esperando solicitud de {{pluginName}}...', - }, - }, - form: { - subscriptionName: { - label: 'Nombre de la suscripción', - placeholder: 'Ingrese el nombre de la suscripción', - required: 'Se requiere el nombre de la suscripción', - }, - callbackUrl: { - label: 'URL de retorno de llamada', - description: 'Esta URL recibirá eventos de webhook', - tooltip: 'Proporcione un endpoint accesible públicamente que pueda recibir solicitudes de devolución de llamada del proveedor del activador.', - placeholder: 'Generando...', - privateAddressWarning: 'Esta URL parece ser una dirección interna, lo que puede hacer que las solicitudes del webhook fallen. Puede cambiar TRIGGER_URL a una dirección pública.', - }, - }, - errors: { - createFailed: 'No se pudo crear la suscripción', - verifyFailed: 'No se pudieron verificar las credenciales', - authFailed: 'Autorización fallida', - networkError: 'Error de red, por favor intenta de nuevo', - }, - }, - events: { - title: 'Eventos Disponibles', - description: 'Eventos a los que este complemento de activación puede suscribirse', - empty: 'No hay eventos disponibles', - event: 'Evento', - events: 'Eventos', - actionNum: '{{num}} {{event}} INCLUIDO', - item: { - parameters: 'parámetros {{count}}', - noParameters: 'Sin parámetros', - }, - output: 'Salida', - }, - node: { - status: { - warning: 'Desconectar', - }, - }, -} - -export default translation diff --git a/web/i18n/es-ES/plugin.json b/web/i18n/es-ES/plugin.json new file mode 100644 index 0000000000..30b4598938 --- /dev/null +++ b/web/i18n/es-ES/plugin.json @@ -0,0 +1,323 @@ +{ + "category": { + "bundles": "Paquetes", + "all": "Todo", + "extensions": "Extensiones", + "tools": "Herramientas", + "agents": "Estrategias de los agentes", + "models": "Modelos", + "datasources": "Fuentes de datos", + "triggers": "Desencadenantes" + }, + "categorySingle": { + "bundle": "Haz", + "extension": "Extensión", + "tool": "Herramienta", + "model": "Modelo", + "agent": "Estrategia del agente", + "datasource": "Fuente de datos", + "trigger": "Disparador" + }, + "list": { + "source": { + "marketplace": "Instalar desde Marketplace", + "github": "Instalar desde GitHub", + "local": "Instalar desde el archivo de paquete local" + }, + "noInstalled": "No hay plugins instalados", + "notFound": "No se han encontrado plugins" + }, + "source": { + "marketplace": "Mercado", + "local": "Archivo de paquete local", + "github": "GitHub (en inglés)" + }, + "detailPanel": { + "categoryTip": { + "local": "Plugin Local", + "marketplace": "Instalado desde Marketplace", + "github": "Instalado desde Github", + "debugging": "Complemento de depuración" + }, + "operation": { + "viewDetail": "Ver Detalle", + "detail": "Detalles", + "checkUpdate": "Comprobar actualización", + "install": "Instalar", + "remove": "Eliminar", + "info": "Información del plugin", + "update": "Actualizar", + "back": "Atrás" + }, + "toolSelector": { + "toolLabel": "Herramienta", + "paramsTip1": "Controla los parámetros de inferencia de LLM.", + "settings": "CONFIGURACIÓN DEL USUARIO", + "unsupportedContent2": "Haga clic para cambiar de versión.", + "descriptionPlaceholder": "Breve descripción del propósito de la herramienta, por ejemplo, obtener la temperatura para una ubicación específica.", + "empty": "Haga clic en el botón '+' para agregar herramientas. Puede agregar varias herramientas.", + "paramsTip2": "Cuando 'Auto' está desactivado, se utiliza el valor predeterminado.", + "uninstalledTitle": "Herramienta no instalada", + "descriptionLabel": "Descripción de la herramienta", + "unsupportedContent": "La versión del plugin instalado no proporciona esta acción.", + "auto": "Auto", + "title": "Agregar herramienta", + "placeholder": "Seleccione una herramienta...", + "uninstalledContent": "Este plugin se instala desde el repositorio local/GitHub. Úselo después de la instalación.", + "unsupportedTitle": "Acción no admitida", + "params": "CONFIGURACIÓN DE RAZONAMIENTO", + "uninstalledLink": "Administrar en Plugins", + "toolSetting": "Configuraciones de la herramienta", + "unsupportedMCPTool": "La versión actual del plugin de estrategia del agente seleccionado no es compatible con las herramientas MCP." + }, + "endpointDeleteContent": "¿Te gustaría eliminar {{nombre}}?", + "endpointDisableTip": "Deshabilitar punto de conexión", + "endpointDeleteTip": "Eliminar punto de conexión", + "strategyNum": "{{num}} {{estrategia}} INCLUIDO", + "disabled": "Deshabilitado", + "serviceOk": "Servicio OK", + "endpointDisableContent": "¿Te gustaría desactivar {{name}}?", + "switchVersion": "Versión del interruptor", + "endpointsTip": "Este complemento proporciona funcionalidades específicas a través de puntos finales, y puede configurar varios conjuntos de puntos finales para el espacio de trabajo actual.", + "configureModel": "Configurar modelo", + "actionNum": "{{num}} {{acción}} INCLUIDO", + "configureTool": "Herramienta de configuración", + "endpointModalDesc": "Una vez configurado, se pueden utilizar las funciones proporcionadas por el complemento a través de los puntos finales de la API.", + "modelNum": "{{num}} MODELOS INCLUIDOS", + "endpoints": "Extremos", + "endpointModalTitle": "Punto de conexión de configuración", + "endpointsDocLink": "Ver el documento", + "endpointsEmpty": "Haga clic en el botón '+' para agregar un punto de conexión", + "configureApp": "Configurar la aplicación", + "deprecation": { + "reason": { + "ownershipTransferred": "propiedad transferida", + "noMaintainer": "sin mantenedor", + "businessAdjustments": "ajustes comerciales" + }, + "noReason": "Este complemento ha sido descontinuado y ya no se actualizará.", + "onlyReason": "Este complemento ha sido desaprobado debido a {{deprecatedReason}} y ya no se actualizará.", + "fullMessage": "Este complemento ha sido descontinuado debido a {{deprecatedReason}}, y ya no será actualizado. Por favor, utilice {{-alternativePluginId}} en su lugar." + } + }, + "debugInfo": { + "title": "Depuración", + "viewDocs": "Ver documentos" + }, + "privilege": { + "everyone": "Todos", + "title": "Preferencias del plugin", + "whoCanDebug": "¿Quién puede depurar plugins?", + "admins": "Administradores", + "whoCanInstall": "¿Quién puede instalar y administrar complementos?", + "noone": "Nadie" + }, + "pluginInfoModal": { + "repository": "Depósito", + "title": "Información del plugin", + "packageName": "Paquete", + "release": "Lanzamiento" + }, + "action": { + "checkForUpdates": "Buscar actualizaciones", + "deleteContentLeft": "¿Le gustaría eliminar", + "deleteContentRight": "¿Complemento?", + "usedInApps": "Este plugin se está utilizando en las aplicaciones {{num}}.", + "delete": "Eliminar plugin", + "pluginInfo": "Información del plugin" + }, + "installModal": { + "labels": { + "repository": "Depósito", + "version": "Versión", + "package": "Paquete" + }, + "installPlugin": "Instalar plugin", + "close": "Cerrar", + "uploadingPackage": "Subiendo {{packageName}}...", + "installComplete": "Instalación completa", + "installFailed": "Error de instalación", + "fromTrustSource": "Por favor, asegúrate de que sólo instalas plugins de una fuente de confianza.", + "installedSuccessfullyDesc": "El plugin se ha instalado correctamente.", + "back": "Atrás", + "installFailedDesc": "El plugin ha fallado en la instalación.", + "installing": "Instalar...", + "next": "Próximo", + "readyToInstallPackages": "A punto de instalar los siguientes plugins {{num}}", + "cancel": "Cancelar", + "uploadFailed": "Error de carga", + "install": "Instalar", + "pluginLoadError": "Error de carga del plugin", + "pluginLoadErrorDesc": "Este plugin no se instalará", + "readyToInstall": "A punto de instalar el siguiente plugin", + "dropPluginToInstall": "Suelte el paquete del complemento aquí para instalarlo", + "readyToInstallPackage": "A punto de instalar el siguiente plugin", + "installedSuccessfully": "Instalación exitosa", + "installWarning": "Este plugin no está permitido para instalar." + }, + "installFromGitHub": { + "uploadFailed": "Error de carga", + "updatePlugin": "Actualizar plugin desde GitHub", + "selectPackagePlaceholder": "Por favor, seleccione un paquete", + "installedSuccessfully": "Instalación exitosa", + "installNote": "Por favor, asegúrate de que sólo instalas plugins de una fuente de confianza.", + "gitHubRepo": "Repositorio de GitHub", + "selectPackage": "Seleccionar paquete", + "selectVersion": "Seleccionar versión", + "selectVersionPlaceholder": "Por favor, seleccione una versión", + "installPlugin": "Instalar plugin desde GitHub", + "installFailed": "Error de instalación" + }, + "upgrade": { + "upgrading": "Instalar...", + "close": "Cerrar", + "description": "A punto de instalar el siguiente plugin", + "upgrade": "Instalar", + "title": "Instalar plugin", + "successfulTitle": "Instalación correcta", + "usedInApps": "Usado en aplicaciones {{num}}" + }, + "error": { + "fetchReleasesError": "No se pueden recuperar las versiones. Por favor, inténtelo de nuevo más tarde.", + "noReleasesFound": "No se han encontrado versiones. Compruebe el repositorio de GitHub o la URL de entrada.", + "inValidGitHubUrl": "URL de GitHub no válida. Introduzca una URL válida en el formato: https://github.com/owner/repo" + }, + "marketplace": { + "sortOption": { + "recentlyUpdated": "Actualizado recientemente", + "newlyReleased": "Recién estrenado", + "firstReleased": "Lanzado por primera vez", + "mostPopular": "Lo más popular" + }, + "empower": "Potencie su desarrollo de IA", + "moreFrom": "Más de Marketplace", + "viewMore": "Ver más", + "sortBy": "Ordenar por", + "noPluginFound": "No se ha encontrado ningún plugin", + "pluginsResult": "{{num}} resultados", + "discover": "Descubrir", + "and": "y", + "difyMarketplace": "Mercado de Dify", + "verifiedTip": "Verificado por Dify", + "partnerTip": "Verificado por un socio de Dify" + }, + "task": { + "installing": "Instalando plugins {{installingLength}}, 0 hecho.", + "clearAll": "Borrar todo", + "installingWithSuccess": "Instalando plugins {{installingLength}}, {{successLength}} éxito.", + "installedError": "Los complementos {{errorLength}} no se pudieron instalar", + "installError": "Los complementos {{errorLength}} no se pudieron instalar, haga clic para ver", + "installingWithError": "Instalando plugins {{installingLength}}, {{successLength}} éxito, {{errorLength}} fallido", + "installSuccess": "{{successLength}} plugins installed successfully", + "installed": "Installed", + "runningPlugins": "Installing Plugins", + "successPlugins": "Successfully Installed Plugins", + "errorPlugins": "Failed to Install Plugins" + }, + "fromMarketplace": "De Marketplace", + "endpointsEnabled": "{{num}} conjuntos de puntos finales habilitados", + "from": "De", + "installAction": "Instalar", + "install": "{{num}} instalaciones", + "allCategories": "Todas las categorías", + "searchCategories": "Categorías de búsqueda", + "installFrom": "INSTALAR DESDE", + "search": "Buscar", + "searchInMarketplace": "Buscar en Marketplace", + "searchTools": "Herramientas de búsqueda...", + "findMoreInMarketplace": "Más información en Marketplace", + "installPlugin": "Instalar plugin", + "searchPlugins": "Plugins de búsqueda", + "metadata": { + "title": "Complementos" + }, + "difyVersionNotCompatible": "La versión actual de Dify no es compatible con este plugin, por favor actualiza a la versión mínima requerida: {{minimalDifyVersion}}", + "requestAPlugin": "Solicitar un plugin", + "publishPlugins": "Publicar plugins", + "auth": { + "oauthClient": "Cliente OAuth", + "authorizationName": "Nombre de autorización", + "authorization": "Autorización", + "addApi": "Agregar clave API", + "useApiAuth": "Configuración de Autorización de Clave API", + "addOAuth": "Agregar OAuth", + "authorizations": "Autorizaciones", + "authRemoved": "Autorización retirada", + "useOAuthAuth": "Usar autorización OAuth", + "setupOAuth": "Configurar el cliente OAuth", + "saveAndAuth": "Guardar y autorizar", + "useApi": "Usa la clave de API", + "workspaceDefault": "Espacio de trabajo predeterminado", + "custom": "Personalizado", + "useOAuth": "Usa OAuth", + "setDefault": "Establecer como predeterminado", + "useApiAuthDesc": "Después de configurar las credenciales, todos los miembros dentro del espacio de trabajo pueden usar esta herramienta al orquestar aplicaciones.", + "saveOnly": "Guardar solo", + "clientInfo": "Como no se encontraron secretos de cliente del sistema para este proveedor de herramientas, se requiere configurarlo manualmente. Para redirect_uri, por favor utiliza", + "oauthClientSettings": "Configuración del cliente OAuth", + "default": "Predeterminado", + "customCredentialUnavailable": "Las credenciales personalizadas no están disponibles actualmente.", + "unavailable": "No disponible", + "credentialUnavailable": "Credenciales actualmente no disponibles. Por favor, contacte al administrador.", + "credentialUnavailableInButton": "Credencial no disponible", + "emptyAuth": "Configure la autenticación", + "connectedWorkspace": "Espacio de trabajo conectado" + }, + "deprecated": "Obsoleto", + "autoUpdate": { + "strategy": { + "disabled": { + "description": "Los plugins no se actualizarán automáticamente", + "name": "Discapacitado" + }, + "fixOnly": { + "name": "Arreglar Solo", + "selectedDescription": "Actualización automática solo para versiones de parches", + "description": "Actualización automática solo para versiones de parche (por ejemplo, 1.0.1 → 1.0.2). Los cambios de versión menor no activarán actualizaciones." + }, + "latest": { + "selectedDescription": "Siempre actualiza a la última versión", + "description": "Siempre actualiza a la última versión", + "name": "último" + } + }, + "upgradeMode": { + "partial": "Solo seleccionado", + "all": "Actualizar todo", + "exclude": "Excluir seleccionado" + }, + "upgradeModePlaceholder": { + "exclude": "Los plugins seleccionados no se actualizarán automáticamente", + "partial": "Solo los plugins seleccionados se actualizarán automáticamente. Actualmente no hay plugins seleccionados, por lo que no se actualizarán automáticamente." + }, + "operation": { + "clearAll": "Borrar todo", + "select": "Seleccionar complementos" + }, + "pluginDowngradeWarning": { + "title": "Degradar plugin", + "exclude": "Excluir de la actualización automática", + "downgrade": "De todas formas, degradar", + "description": "La actualización automática está actualmente habilitada para este complemento. Downgradear la versión puede hacer que tus cambios se sobrescriban durante la próxima actualización automática." + }, + "noPluginPlaceholder": { + "noFound": "No se encontraron complementos", + "noInstalled": "No hay plugins instalados" + }, + "updateTimeTitle": "Hora de actualización", + "nextUpdateTime": "Próxima autoactualización: {{time}}", + "specifyPluginsToUpdate": "Especifique qué complementos actualizar", + "updateTime": "Actualizar tiempo", + "updateSettings": "Actualizar configuraciones", + "excludeUpdate": "Los siguientes {{num}} complementos no se actualizarán automáticamente", + "partialUPdate": "Solo los siguientes {{num}} complementos se actualizarán automáticamente", + "changeTimezone": "Para cambiar la zona horaria, ve a Configuración.", + "automaticUpdates": "Actualizaciones automáticas" + }, + "readmeInfo": { + "title": "LEEME", + "needHelpCheckReadme": "¿Necesitas ayuda? Revisa el README.", + "noReadmeAvailable": "No hay archivo README disponible", + "failedToFetch": "No se pudo obtener el README" + } +} diff --git a/web/i18n/es-ES/plugin.ts b/web/i18n/es-ES/plugin.ts deleted file mode 100644 index 2452161791..0000000000 --- a/web/i18n/es-ES/plugin.ts +++ /dev/null @@ -1,359 +0,0 @@ -const translation = { - category: { - bundles: 'Paquetes', - all: 'Todo', - extensions: 'Extensiones', - tools: 'Herramientas', - agents: 'Estrategias de los agentes', - models: 'Modelos', - datasources: 'Fuentes de datos', - triggers: 'Desencadenantes', - }, - categorySingle: { - bundle: 'Haz', - extension: 'Extensión', - tool: 'Herramienta', - model: 'Modelo', - agent: 'Estrategia del agente', - datasource: 'Fuente de datos', - trigger: 'Disparador', - }, - list: { - source: { - marketplace: 'Instalar desde Marketplace', - github: 'Instalar desde GitHub', - local: 'Instalar desde el archivo de paquete local', - }, - noInstalled: 'No hay plugins instalados', - notFound: 'No se han encontrado plugins', - }, - source: { - marketplace: 'Mercado', - local: 'Archivo de paquete local', - github: 'GitHub (en inglés)', - }, - detailPanel: { - categoryTip: { - local: 'Plugin Local', - marketplace: 'Instalado desde Marketplace', - github: 'Instalado desde Github', - debugging: 'Complemento de depuración', - }, - operation: { - viewDetail: 'Ver Detalle', - detail: 'Detalles', - checkUpdate: 'Comprobar actualización', - install: 'Instalar', - remove: 'Eliminar', - info: 'Información del plugin', - update: 'Actualizar', - back: 'Atrás', - }, - toolSelector: { - toolLabel: 'Herramienta', - paramsTip1: 'Controla los parámetros de inferencia de LLM.', - settings: 'CONFIGURACIÓN DEL USUARIO', - unsupportedContent2: 'Haga clic para cambiar de versión.', - descriptionPlaceholder: - 'Breve descripción del propósito de la herramienta, por ejemplo, obtener la temperatura para una ubicación específica.', - empty: - 'Haga clic en el botón \'+\' para agregar herramientas. Puede agregar varias herramientas.', - paramsTip2: - 'Cuando \'Auto\' está desactivado, se utiliza el valor predeterminado.', - uninstalledTitle: 'Herramienta no instalada', - descriptionLabel: 'Descripción de la herramienta', - unsupportedContent: - 'La versión del plugin instalado no proporciona esta acción.', - auto: 'Auto', - title: 'Agregar herramienta', - placeholder: 'Seleccione una herramienta...', - uninstalledContent: - 'Este plugin se instala desde el repositorio local/GitHub. Úselo después de la instalación.', - unsupportedTitle: 'Acción no admitida', - params: 'CONFIGURACIÓN DE RAZONAMIENTO', - uninstalledLink: 'Administrar en Plugins', - toolSetting: 'Configuraciones de la herramienta', - unsupportedMCPTool: - 'La versión actual del plugin de estrategia del agente seleccionado no es compatible con las herramientas MCP.', - }, - endpointDeleteContent: '¿Te gustaría eliminar {{nombre}}?', - endpointDisableTip: 'Deshabilitar punto de conexión', - endpointDeleteTip: 'Eliminar punto de conexión', - strategyNum: '{{num}} {{estrategia}} INCLUIDO', - disabled: 'Deshabilitado', - serviceOk: 'Servicio OK', - endpointDisableContent: '¿Te gustaría desactivar {{name}}?', - switchVersion: 'Versión del interruptor', - endpointsTip: - 'Este complemento proporciona funcionalidades específicas a través de puntos finales, y puede configurar varios conjuntos de puntos finales para el espacio de trabajo actual.', - configureModel: 'Configurar modelo', - actionNum: '{{num}} {{acción}} INCLUIDO', - configureTool: 'Herramienta de configuración', - endpointModalDesc: - 'Una vez configurado, se pueden utilizar las funciones proporcionadas por el complemento a través de los puntos finales de la API.', - modelNum: '{{num}} MODELOS INCLUIDOS', - endpoints: 'Extremos', - endpointModalTitle: 'Punto de conexión de configuración', - endpointsDocLink: 'Ver el documento', - endpointsEmpty: - 'Haga clic en el botón \'+\' para agregar un punto de conexión', - configureApp: 'Configurar la aplicación', - deprecation: { - reason: { - ownershipTransferred: 'propiedad transferida', - noMaintainer: 'sin mantenedor', - businessAdjustments: 'ajustes comerciales', - }, - noReason: - 'Este complemento ha sido descontinuado y ya no se actualizará.', - onlyReason: - 'Este complemento ha sido desaprobado debido a {{deprecatedReason}} y ya no se actualizará.', - fullMessage: - 'Este complemento ha sido descontinuado debido a {{deprecatedReason}}, y ya no será actualizado. Por favor, utilice {{-alternativePluginId}} en su lugar.', - }, - }, - debugInfo: { - title: 'Depuración', - viewDocs: 'Ver documentos', - }, - privilege: { - everyone: 'Todos', - title: 'Preferencias del plugin', - whoCanDebug: '¿Quién puede depurar plugins?', - admins: 'Administradores', - whoCanInstall: '¿Quién puede instalar y administrar complementos?', - noone: 'Nadie', - }, - pluginInfoModal: { - repository: 'Depósito', - title: 'Información del plugin', - packageName: 'Paquete', - release: 'Lanzamiento', - }, - action: { - checkForUpdates: 'Buscar actualizaciones', - deleteContentLeft: '¿Le gustaría eliminar', - deleteContentRight: '¿Complemento?', - usedInApps: 'Este plugin se está utilizando en las aplicaciones {{num}}.', - delete: 'Eliminar plugin', - pluginInfo: 'Información del plugin', - }, - installModal: { - labels: { - repository: 'Depósito', - version: 'Versión', - package: 'Paquete', - }, - installPlugin: 'Instalar plugin', - close: 'Cerrar', - uploadingPackage: 'Subiendo {{packageName}}...', - installComplete: 'Instalación completa', - installFailed: 'Error de instalación', - fromTrustSource: - 'Por favor, asegúrate de que sólo instalas plugins de una fuente de confianza.', - installedSuccessfullyDesc: 'El plugin se ha instalado correctamente.', - back: 'Atrás', - installFailedDesc: 'El plugin ha fallado en la instalación.', - installing: 'Instalar...', - next: 'Próximo', - readyToInstallPackages: - 'A punto de instalar los siguientes plugins {{num}}', - cancel: 'Cancelar', - uploadFailed: 'Error de carga', - install: 'Instalar', - pluginLoadError: 'Error de carga del plugin', - pluginLoadErrorDesc: 'Este plugin no se instalará', - readyToInstall: 'A punto de instalar el siguiente plugin', - dropPluginToInstall: - 'Suelte el paquete del complemento aquí para instalarlo', - readyToInstallPackage: 'A punto de instalar el siguiente plugin', - installedSuccessfully: 'Instalación exitosa', - installWarning: 'Este plugin no está permitido para instalar.', - }, - installFromGitHub: { - uploadFailed: 'Error de carga', - updatePlugin: 'Actualizar plugin desde GitHub', - selectPackagePlaceholder: 'Por favor, seleccione un paquete', - installedSuccessfully: 'Instalación exitosa', - installNote: - 'Por favor, asegúrate de que sólo instalas plugins de una fuente de confianza.', - gitHubRepo: 'Repositorio de GitHub', - selectPackage: 'Seleccionar paquete', - selectVersion: 'Seleccionar versión', - selectVersionPlaceholder: 'Por favor, seleccione una versión', - installPlugin: 'Instalar plugin desde GitHub', - installFailed: 'Error de instalación', - }, - upgrade: { - upgrading: 'Instalar...', - close: 'Cerrar', - description: 'A punto de instalar el siguiente plugin', - upgrade: 'Instalar', - title: 'Instalar plugin', - successfulTitle: 'Instalación correcta', - usedInApps: 'Usado en aplicaciones {{num}}', - }, - error: { - fetchReleasesError: - 'No se pueden recuperar las versiones. Por favor, inténtelo de nuevo más tarde.', - noReleasesFound: - 'No se han encontrado versiones. Compruebe el repositorio de GitHub o la URL de entrada.', - inValidGitHubUrl: - 'URL de GitHub no válida. Introduzca una URL válida en el formato: https://github.com/owner/repo', - }, - marketplace: { - sortOption: { - recentlyUpdated: 'Actualizado recientemente', - newlyReleased: 'Recién estrenado', - firstReleased: 'Lanzado por primera vez', - mostPopular: 'Lo más popular', - }, - empower: 'Potencie su desarrollo de IA', - moreFrom: 'Más de Marketplace', - viewMore: 'Ver más', - sortBy: 'Ordenar por', - noPluginFound: 'No se ha encontrado ningún plugin', - pluginsResult: '{{num}} resultados', - discover: 'Descubrir', - and: 'y', - difyMarketplace: 'Mercado de Dify', - verifiedTip: 'Verificado por Dify', - partnerTip: 'Verificado por un socio de Dify', - }, - task: { - installing: 'Instalando plugins {{installingLength}}, 0 hecho.', - clearAll: 'Borrar todo', - installingWithSuccess: - 'Instalando plugins {{installingLength}}, {{successLength}} éxito.', - installedError: 'Los complementos {{errorLength}} no se pudieron instalar', - installError: - 'Los complementos {{errorLength}} no se pudieron instalar, haga clic para ver', - installingWithError: - 'Instalando plugins {{installingLength}}, {{successLength}} éxito, {{errorLength}} fallido', - installSuccess: '{{successLength}} plugins installed successfully', - installed: 'Installed', - runningPlugins: 'Installing Plugins', - successPlugins: 'Successfully Installed Plugins', - errorPlugins: 'Failed to Install Plugins', - }, - fromMarketplace: 'De Marketplace', - endpointsEnabled: '{{num}} conjuntos de puntos finales habilitados', - from: 'De', - installAction: 'Instalar', - install: '{{num}} instalaciones', - allCategories: 'Todas las categorías', - searchCategories: 'Categorías de búsqueda', - installFrom: 'INSTALAR DESDE', - search: 'Buscar', - searchInMarketplace: 'Buscar en Marketplace', - searchTools: 'Herramientas de búsqueda...', - findMoreInMarketplace: 'Más información en Marketplace', - installPlugin: 'Instalar plugin', - searchPlugins: 'Plugins de búsqueda', - metadata: { - title: 'Complementos', - }, - difyVersionNotCompatible: - 'La versión actual de Dify no es compatible con este plugin, por favor actualiza a la versión mínima requerida: {{minimalDifyVersion}}', - requestAPlugin: 'Solicitar un plugin', - publishPlugins: 'Publicar plugins', - auth: { - oauthClient: 'Cliente OAuth', - authorizationName: 'Nombre de autorización', - authorization: 'Autorización', - addApi: 'Agregar clave API', - useApiAuth: 'Configuración de Autorización de Clave API', - addOAuth: 'Agregar OAuth', - authorizations: 'Autorizaciones', - authRemoved: 'Autorización retirada', - useOAuthAuth: 'Usar autorización OAuth', - setupOAuth: 'Configurar el cliente OAuth', - saveAndAuth: 'Guardar y autorizar', - useApi: 'Usa la clave de API', - workspaceDefault: 'Espacio de trabajo predeterminado', - custom: 'Personalizado', - useOAuth: 'Usa OAuth', - setDefault: 'Establecer como predeterminado', - useApiAuthDesc: - 'Después de configurar las credenciales, todos los miembros dentro del espacio de trabajo pueden usar esta herramienta al orquestar aplicaciones.', - saveOnly: 'Guardar solo', - clientInfo: - 'Como no se encontraron secretos de cliente del sistema para este proveedor de herramientas, se requiere configurarlo manualmente. Para redirect_uri, por favor utiliza', - oauthClientSettings: 'Configuración del cliente OAuth', - default: 'Predeterminado', - customCredentialUnavailable: - 'Las credenciales personalizadas no están disponibles actualmente.', - unavailable: 'No disponible', - credentialUnavailable: - 'Credenciales actualmente no disponibles. Por favor, contacte al administrador.', - credentialUnavailableInButton: 'Credencial no disponible', - emptyAuth: 'Configure la autenticación', - connectedWorkspace: 'Espacio de trabajo conectado', - }, - deprecated: 'Obsoleto', - autoUpdate: { - strategy: { - disabled: { - description: 'Los plugins no se actualizarán automáticamente', - name: 'Discapacitado', - }, - fixOnly: { - name: 'Arreglar Solo', - selectedDescription: - 'Actualización automática solo para versiones de parches', - description: - 'Actualización automática solo para versiones de parche (por ejemplo, 1.0.1 → 1.0.2). Los cambios de versión menor no activarán actualizaciones.', - }, - latest: { - selectedDescription: 'Siempre actualiza a la última versión', - description: 'Siempre actualiza a la última versión', - name: 'último', - }, - }, - upgradeMode: { - partial: 'Solo seleccionado', - all: 'Actualizar todo', - exclude: 'Excluir seleccionado', - }, - upgradeModePlaceholder: { - exclude: 'Los plugins seleccionados no se actualizarán automáticamente', - partial: - 'Solo los plugins seleccionados se actualizarán automáticamente. Actualmente no hay plugins seleccionados, por lo que no se actualizarán automáticamente.', - }, - operation: { - clearAll: 'Borrar todo', - select: 'Seleccionar complementos', - }, - pluginDowngradeWarning: { - title: 'Degradar plugin', - exclude: 'Excluir de la actualización automática', - downgrade: 'De todas formas, degradar', - description: - 'La actualización automática está actualmente habilitada para este complemento. Downgradear la versión puede hacer que tus cambios se sobrescriban durante la próxima actualización automática.', - }, - noPluginPlaceholder: { - noFound: 'No se encontraron complementos', - noInstalled: 'No hay plugins instalados', - }, - updateTimeTitle: 'Hora de actualización', - nextUpdateTime: 'Próxima autoactualización: {{time}}', - specifyPluginsToUpdate: 'Especifique qué complementos actualizar', - updateTime: 'Actualizar tiempo', - updateSettings: 'Actualizar configuraciones', - excludeUpdate: - 'Los siguientes {{num}} complementos no se actualizarán automáticamente', - partialUPdate: - 'Solo los siguientes {{num}} complementos se actualizarán automáticamente', - changeTimezone: - 'Para cambiar la zona horaria, ve a Configuración.', - automaticUpdates: 'Actualizaciones automáticas', - }, - readmeInfo: { - title: 'LEEME', - needHelpCheckReadme: '¿Necesitas ayuda? Revisa el README.', - noReadmeAvailable: 'No hay archivo README disponible', - failedToFetch: 'No se pudo obtener el README', - }, -} - -export default translation diff --git a/web/i18n/es-ES/register.json b/web/i18n/es-ES/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/es-ES/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/es-ES/register.ts b/web/i18n/es-ES/register.ts deleted file mode 100644 index 928649474b..0000000000 --- a/web/i18n/es-ES/register.ts +++ /dev/null @@ -1,4 +0,0 @@ -const translation = { -} - -export default translation diff --git a/web/i18n/es-ES/run-log.json b/web/i18n/es-ES/run-log.json new file mode 100644 index 0000000000..27576f5c1c --- /dev/null +++ b/web/i18n/es-ES/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "ENTRADA", + "result": "RESULTADO", + "detail": "DETALLE", + "tracing": "TRAZADO", + "resultPanel": { + "status": "ESTADO", + "time": "TIEMPO TRANSCURRIDO", + "tokens": "TOTAL DE TOKENS" + }, + "meta": { + "title": "METADATOS", + "status": "Estado", + "version": "Versión", + "executor": "Ejecutor", + "startTime": "Hora de inicio", + "time": "Tiempo transcurrido", + "tokens": "Total de tokens", + "steps": "Pasos de ejecución" + }, + "resultEmpty": { + "title": "Esta ejecución solo produce formato JSON,", + "tipLeft": "por favor ve al ", + "link": "panel de detalle", + "tipRight": " para verlo." + }, + "actionLogs": "Registros de acciones", + "circularInvocationTip": "Hay una invocación circular de herramientas/nodos en el flujo de trabajo actual." +} diff --git a/web/i18n/es-ES/run-log.ts b/web/i18n/es-ES/run-log.ts deleted file mode 100644 index 422c16431f..0000000000 --- a/web/i18n/es-ES/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -const translation = { - input: 'ENTRADA', - result: 'RESULTADO', - detail: 'DETALLE', - tracing: 'TRAZADO', - resultPanel: { - status: 'ESTADO', - time: 'TIEMPO TRANSCURRIDO', - tokens: 'TOTAL DE TOKENS', - }, - meta: { - title: 'METADATOS', - status: 'Estado', - version: 'Versión', - executor: 'Ejecutor', - startTime: 'Hora de inicio', - time: 'Tiempo transcurrido', - tokens: 'Total de tokens', - steps: 'Pasos de ejecución', - }, - resultEmpty: { - title: 'Esta ejecución solo produce formato JSON,', - tipLeft: 'por favor ve al ', - link: 'panel de detalle', - tipRight: ' para verlo.', - }, - actionLogs: 'Registros de acciones', - circularInvocationTip: 'Hay una invocación circular de herramientas/nodos en el flujo de trabajo actual.', -} - -export default translation diff --git a/web/i18n/es-ES/share.json b/web/i18n/es-ES/share.json new file mode 100644 index 0000000000..65fe29393b --- /dev/null +++ b/web/i18n/es-ES/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "", + "appUnavailable": "La aplicación no está disponible", + "appUnknownError": "La aplicación no está disponible" + }, + "chat": { + "newChat": "Nuevo chat", + "pinnedTitle": "Fijados", + "unpinnedTitle": "Chats", + "newChatDefaultName": "Nueva conversación", + "resetChat": "Reiniciar conversación", + "poweredBy": "Desarrollado por", + "prompt": "Indicación", + "privatePromptConfigTitle": "Configuración de la conversación", + "publicPromptConfigTitle": "Indicación inicial", + "configStatusDes": "Antes de comenzar, puedes modificar la configuración de la conversación", + "configDisabled": "Se han utilizado las configuraciones de la sesión anterior para esta sesión.", + "startChat": "Iniciar chat", + "privacyPolicyLeft": "Por favor, lee la ", + "privacyPolicyMiddle": "política de privacidad", + "privacyPolicyRight": " proporcionada por el desarrollador de la aplicación.", + "deleteConversation": { + "title": "Eliminar conversación", + "content": "¿Estás seguro/a de que quieres eliminar esta conversación?" + }, + "tryToSolve": "Intentar resolver", + "temporarySystemIssue": "Lo sentimos, hay un problema temporal del sistema.", + "expand": "Ampliar", + "collapse": "Contraer", + "viewChatSettings": "Ver configuraciones de chat", + "newChatTip": "Ya en un nuevo chat", + "chatFormTip": "No se pueden modificar los ajustes del chat después de que el chat ha comenzado.", + "chatSettingsTitle": "Nueva configuración de chat" + }, + "generation": { + "tabs": { + "create": "Ejecutar una vez", + "batch": "Ejecutar en lote", + "saved": "Guardado" + }, + "savedNoData": { + "title": "¡Aún no has guardado ningún resultado!", + "description": "Comienza a generar contenido y encuentra tus resultados guardados aquí.", + "startCreateContent": "Comenzar a crear contenido" + }, + "title": "Completado por IA", + "queryTitle": "Contenido de la consulta", + "completionResult": "Resultado del completado", + "queryPlaceholder": "Escribe tu contenido de consulta...", + "run": "Ejecutar", + "copy": "Copiar", + "resultTitle": "Completado por IA", + "noData": "La IA te dará lo que deseas aquí.", + "csvUploadTitle": "Arrastra y suelta tu archivo CSV aquí, o ", + "browse": "navega", + "csvStructureTitle": "El archivo CSV debe cumplir con la siguiente estructura:", + "downloadTemplate": "Descarga la plantilla aquí", + "field": "Campo", + "batchFailed": { + "info": "{{num}} ejecuciones fallidas", + "retry": "Reintentar", + "outputPlaceholder": "Sin contenido de salida" + }, + "errorMsg": { + "empty": "Por favor, ingresa contenido en el archivo cargado.", + "fileStructNotMatch": "El archivo CSV cargado no coincide con la estructura.", + "emptyLine": "La fila {{rowIndex}} está vacía", + "invalidLine": "Fila {{rowIndex}}: el valor de {{varName}} no puede estar vacío", + "moreThanMaxLengthLine": "Fila {{rowIndex}}: el valor de {{varName}} no puede tener más de {{maxLength}} caracteres", + "atLeastOne": "Por favor, ingresa al menos una fila en el archivo cargado." + }, + "execution": "Ejecutar", + "executions": "{{num}} ejecuciones", + "stopRun": "Detener ejecución" + }, + "login": { + "backToHome": "Volver a Inicio" + } +} diff --git a/web/i18n/es-ES/share.ts b/web/i18n/es-ES/share.ts deleted file mode 100644 index 4ec515bff5..0000000000 --- a/web/i18n/es-ES/share.ts +++ /dev/null @@ -1,86 +0,0 @@ -const translation = { - common: { - welcome: '', - appUnavailable: 'La aplicación no está disponible', - appUnknownError: 'La aplicación no está disponible', - }, - chat: { - newChat: 'Nuevo chat', - pinnedTitle: 'Fijados', - unpinnedTitle: 'Chats', - newChatDefaultName: 'Nueva conversación', - resetChat: 'Reiniciar conversación', - poweredBy: 'Desarrollado por', - prompt: 'Indicación', - privatePromptConfigTitle: 'Configuración de la conversación', - publicPromptConfigTitle: 'Indicación inicial', - configStatusDes: 'Antes de comenzar, puedes modificar la configuración de la conversación', - configDisabled: - 'Se han utilizado las configuraciones de la sesión anterior para esta sesión.', - startChat: 'Iniciar chat', - privacyPolicyLeft: - 'Por favor, lee la ', - privacyPolicyMiddle: - 'política de privacidad', - privacyPolicyRight: - ' proporcionada por el desarrollador de la aplicación.', - deleteConversation: { - title: 'Eliminar conversación', - content: '¿Estás seguro/a de que quieres eliminar esta conversación?', - }, - tryToSolve: 'Intentar resolver', - temporarySystemIssue: 'Lo sentimos, hay un problema temporal del sistema.', - expand: 'Ampliar', - collapse: 'Contraer', - viewChatSettings: 'Ver configuraciones de chat', - newChatTip: 'Ya en un nuevo chat', - chatFormTip: 'No se pueden modificar los ajustes del chat después de que el chat ha comenzado.', - chatSettingsTitle: 'Nueva configuración de chat', - }, - generation: { - tabs: { - create: 'Ejecutar una vez', - batch: 'Ejecutar en lote', - saved: 'Guardado', - }, - savedNoData: { - title: '¡Aún no has guardado ningún resultado!', - description: 'Comienza a generar contenido y encuentra tus resultados guardados aquí.', - startCreateContent: 'Comenzar a crear contenido', - }, - title: 'Completado por IA', - queryTitle: 'Contenido de la consulta', - completionResult: 'Resultado del completado', - queryPlaceholder: 'Escribe tu contenido de consulta...', - run: 'Ejecutar', - copy: 'Copiar', - resultTitle: 'Completado por IA', - noData: 'La IA te dará lo que deseas aquí.', - csvUploadTitle: 'Arrastra y suelta tu archivo CSV aquí, o ', - browse: 'navega', - csvStructureTitle: 'El archivo CSV debe cumplir con la siguiente estructura:', - downloadTemplate: 'Descarga la plantilla aquí', - field: 'Campo', - batchFailed: { - info: '{{num}} ejecuciones fallidas', - retry: 'Reintentar', - outputPlaceholder: 'Sin contenido de salida', - }, - errorMsg: { - empty: 'Por favor, ingresa contenido en el archivo cargado.', - fileStructNotMatch: 'El archivo CSV cargado no coincide con la estructura.', - emptyLine: 'La fila {{rowIndex}} está vacía', - invalidLine: 'Fila {{rowIndex}}: el valor de {{varName}} no puede estar vacío', - moreThanMaxLengthLine: 'Fila {{rowIndex}}: el valor de {{varName}} no puede tener más de {{maxLength}} caracteres', - atLeastOne: 'Por favor, ingresa al menos una fila en el archivo cargado.', - }, - execution: 'Ejecutar', - executions: '{{num}} ejecuciones', - stopRun: 'Detener ejecución', - }, - login: { - backToHome: 'Volver a Inicio', - }, -} - -export default translation diff --git a/web/i18n/es-ES/time.json b/web/i18n/es-ES/time.json new file mode 100644 index 0000000000..f3e9ca7b38 --- /dev/null +++ b/web/i18n/es-ES/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Sun": "Sol", + "Thu": "Jue", + "Tue": "Mar", + "Sat": "Sáb", + "Mon": "Mon", + "Fri": "Viernes", + "Wed": "Miércoles" + }, + "months": { + "August": "Agosto", + "September": "Septiembre", + "April": "Abril", + "February": "Febrero", + "January": "Enero", + "November": "Noviembre", + "October": "octubre", + "May": "Mayo", + "June": "Junio", + "December": "Diciembre", + "July": "Julio", + "March": "Marzo" + }, + "operation": { + "ok": "De acuerdo", + "pickDate": "Seleccionar fecha", + "cancel": "Cancelar", + "now": "Ahora" + }, + "title": { + "pickTime": "Elegir hora" + }, + "defaultPlaceholder": "Elige una hora...", + "dateFormats": { + "input": "AAAA-MM-DD", + "output": "AAAA-MM-DD", + "display": "MMMM D, AAAA", + "outputWithTime": "AAAA-MM-DDTHH:mm:ss.SSSZ", + "displayWithTime": "MMMM D, YYYY hh:mm A" + } +} diff --git a/web/i18n/es-ES/time.ts b/web/i18n/es-ES/time.ts deleted file mode 100644 index 25b0961a8d..0000000000 --- a/web/i18n/es-ES/time.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - daysInWeek: { - Sun: 'Sol', - Thu: 'Jue', - Tue: 'Mar', - Sat: 'Sáb', - Mon: 'Mon', - Fri: 'Viernes', - Wed: 'Miércoles', - }, - months: { - August: 'Agosto', - September: 'Septiembre', - April: 'Abril', - February: 'Febrero', - January: 'Enero', - November: 'Noviembre', - October: 'octubre', - May: 'Mayo', - June: 'Junio', - December: 'Diciembre', - July: 'Julio', - March: 'Marzo', - }, - operation: { - ok: 'De acuerdo', - pickDate: 'Seleccionar fecha', - cancel: 'Cancelar', - now: 'Ahora', - }, - title: { - pickTime: 'Elegir hora', - }, - defaultPlaceholder: 'Elige una hora...', - dateFormats: { - input: 'AAAA-MM-DD', - output: 'AAAA-MM-DD', - display: 'MMMM D, AAAA', - outputWithTime: 'AAAA-MM-DDTHH:mm:ss.SSSZ', - displayWithTime: 'MMMM D, YYYY hh:mm A', - }, -} - -export default translation diff --git a/web/i18n/es-ES/tools.json b/web/i18n/es-ES/tools.json new file mode 100644 index 0000000000..f470318131 --- /dev/null +++ b/web/i18n/es-ES/tools.json @@ -0,0 +1,262 @@ +{ + "title": "Herramientas", + "createCustomTool": "Crear Herramienta Personalizada", + "customToolTip": "Aprende más sobre las herramientas personalizadas de Dify", + "type": { + "builtIn": "Incorporadas", + "custom": "Personalizadas", + "workflow": "Flujo de Trabajo" + }, + "contribute": { + "line1": "Estoy interesado en ", + "line2": "contribuir herramientas a Dify.", + "viewGuide": "Ver la guía" + }, + "author": "Por", + "auth": { + "authorized": "Autorizado", + "setup": "Configurar la autorización para usar", + "setupModalTitle": "Configurar Autorización", + "setupModalTitleDescription": "Después de configurar las credenciales, todos los miembros dentro del espacio de trabajo pueden usar esta herramienta al orquestar aplicaciones." + }, + "includeToolNum": "{{num}} herramientas incluidas", + "addToolModal": { + "type": "tipo", + "category": "categoría", + "added": "agregada", + "custom": { + "title": "No hay herramienta personalizada disponible", + "tip": "Crear una herramienta personalizada" + }, + "workflow": { + "title": "No hay herramienta de flujo de trabajo disponible", + "tip": "Publicar flujos de trabajo como herramientas en el Estudio" + }, + "mcp": { + "title": "No hay herramienta MCP disponible", + "tip": "Añadir un servidor MCP" + }, + "agent": { + "title": "No hay estrategia de agente disponible" + } + }, + "createTool": { + "title": "Crear Herramienta Personalizada", + "editAction": "Configurar", + "editTitle": "Editar Herramienta Personalizada", + "name": "Nombre", + "toolNamePlaceHolder": "Ingresa el nombre de la herramienta", + "nameForToolCall": "Nombre de llamada de la herramienta", + "nameForToolCallPlaceHolder": "Utilizado para el reconocimiento automático, como getCurrentWeather, list_pets", + "nameForToolCallTip": "Solo soporta números, letras y guiones bajos.", + "description": "Descripción", + "descriptionPlaceholder": "Breve descripción del propósito de la herramienta, por ejemplo, obtener la temperatura de una ubicación específica.", + "schema": "Esquema", + "schemaPlaceHolder": "Ingresa tu esquema OpenAPI aquí", + "viewSchemaSpec": "Ver la Especificación OpenAPI-Swagger", + "importFromUrl": "Importar desde URL", + "importFromUrlPlaceHolder": "https://...", + "urlError": "Por favor, ingresa una URL válida", + "examples": "Ejemplos", + "exampleOptions": { + "json": "Clima (JSON)", + "yaml": "Tienda de Mascotas (YAML)", + "blankTemplate": "Plantilla en Blanco" + }, + "availableTools": { + "title": "Herramientas Disponibles", + "name": "Nombre", + "description": "Descripción", + "method": "Método", + "path": "Ruta", + "action": "Acciones", + "test": "Probar" + }, + "authMethod": { + "title": "Método de Autorización", + "type": "Tipo de Autorización", + "keyTooltip": "Clave del encabezado HTTP, puedes dejarla como \"Authorization\" si no tienes idea de qué es o configurarla con un valor personalizado", + "types": { + "none": "Ninguno", + "apiKeyPlaceholder": "Nombre del encabezado HTTP para la Clave API", + "apiValuePlaceholder": "Ingresa la Clave API", + "api_key_header": "Encabezado", + "api_key_query": "Parámetro de consulta", + "queryParamPlaceholder": "Nombre del parámetro de consulta para la clave de API" + }, + "key": "Clave", + "value": "Valor", + "queryParam": "Parámetro de consulta", + "queryParamTooltip": "El nombre del parámetro de consulta de clave de API que se debe pasar, por ejemplo, \"key\" en \"https://example.com/test?key=API_KEY\"." + }, + "authHeaderPrefix": { + "title": "Tipo de Autenticación", + "types": { + "basic": "Básica", + "bearer": "Bearer", + "custom": "Personalizada" + } + }, + "privacyPolicy": "Política de Privacidad", + "privacyPolicyPlaceholder": "Por favor, ingresa la política de privacidad", + "toolInput": { + "title": "Entrada de la Herramienta", + "name": "Nombre", + "required": "Requerido", + "method": "Método", + "methodSetting": "Configuración", + "methodSettingTip": "El usuario completa la configuración de la herramienta", + "methodParameter": "Parámetro", + "methodParameterTip": "LLM completa durante la inferencia", + "label": "Etiquetas", + "labelPlaceholder": "Elige etiquetas (opcional)", + "description": "Descripción", + "descriptionPlaceholder": "Descripción del significado del parámetro" + }, + "customDisclaimer": "Descargo de responsabilidad personalizado", + "customDisclaimerPlaceholder": "Por favor, ingresa el descargo de responsabilidad personalizado", + "confirmTitle": "¿Confirmar para guardar?", + "confirmTip": "Las aplicaciones que usen esta herramienta se verán afectadas", + "deleteToolConfirmTitle": "¿Eliminar esta Herramienta?", + "deleteToolConfirmContent": "Eliminar la herramienta es irreversible. Los usuarios ya no podrán acceder a tu herramienta.", + "toolOutput": { + "title": "Salida de la herramienta", + "name": "Nombre", + "reserved": "Reservado", + "reservedParameterDuplicateTip": "text, json y files son variables reservadas. Las variables con estos nombres no pueden aparecer en el esquema de salida.", + "description": "Descripción" + } + }, + "test": { + "title": "Probar", + "parametersValue": "Parámetros y Valor", + "parameters": "Parámetros", + "value": "Valor", + "testResult": "Resultados de la Prueba", + "testResultPlaceholder": "El resultado de la prueba se mostrará aquí" + }, + "thought": { + "using": "Usando", + "used": "Usado", + "requestTitle": "Solicitud a", + "responseTitle": "Respuesta de" + }, + "setBuiltInTools": { + "info": "Información", + "setting": "Ajuste", + "toolDescription": "Descripción de la herramienta", + "parameters": "parámetros", + "string": "cadena", + "number": "número", + "required": "Requerido", + "infoAndSetting": "Información y Ajustes", + "file": "archivo" + }, + "noCustomTool": { + "title": "¡Sin herramientas personalizadas!", + "content": "Agrega y administra tus herramientas personalizadas aquí para construir aplicaciones de inteligencia artificial.", + "createTool": "Crear Herramienta" + }, + "noSearchRes": { + "title": "¡Lo sentimos, no hay resultados!", + "content": "No encontramos herramientas que coincidan con tu búsqueda.", + "reset": "Restablecer Búsqueda" + }, + "builtInPromptTitle": "Aviso", + "toolRemoved": "Herramienta eliminada", + "notAuthorized": "Herramienta no autorizada", + "howToGet": "Cómo obtener", + "openInStudio": "Abrir en Studio", + "toolNameUsageTip": "Nombre de llamada de la herramienta para razonamiento y promoción de agentes", + "copyToolName": "Nombre de la copia", + "noTools": "No se han encontrado herramientas", + "mcp": { + "create": { + "cardTitle": "Añadir servidor MCP (HTTP)", + "cardLink": "Más información sobre integración de servidores MCP" + }, + "noConfigured": "Servidor no configurado", + "updateTime": "Actualizado", + "toolsCount": "{{count}} herramientas", + "noTools": "No hay herramientas disponibles", + "modal": { + "title": "Añadir servidor MCP (HTTP)", + "editTitle": "Editar servidor MCP (HTTP)", + "name": "Nombre e Icono", + "namePlaceholder": "Nombre de su servidor MCP", + "serverUrl": "URL del servidor", + "serverUrlPlaceholder": "URL del endpoint del servidor", + "serverUrlWarning": "Actualizar la dirección del servidor puede interrumpir aplicaciones que dependan de él", + "serverIdentifier": "Identificador del servidor", + "serverIdentifierTip": "Identificador único del servidor MCP en el espacio de trabajo. Solo letras minúsculas, números, guiones bajos y guiones. Máximo 24 caracteres.", + "serverIdentifierPlaceholder": "Identificador único, ej. mi-servidor-mcp", + "serverIdentifierWarning": "El servidor no será reconocido por aplicaciones existentes tras cambiar la ID", + "cancel": "Cancelar", + "save": "Guardar", + "confirm": "Añadir y Autorizar", + "sseReadTimeout": "Tiempo de espera de lectura SSE", + "timeout": "Tiempo de espera", + "timeoutPlaceholder": "treinta", + "headers": "Encabezados", + "addHeader": "Agregar encabezado", + "headerValuePlaceholder": "por ejemplo, token de portador123", + "headersTip": "Encabezados HTTP adicionales para enviar con las solicitudes del servidor MCP", + "maskedHeadersTip": "Los valores del encabezado están enmascarados por seguridad. Los cambios actualizarán los valores reales.", + "headerKeyPlaceholder": "por ejemplo, Autorización", + "headerValue": "Valor del encabezado", + "noHeaders": "No se han configurado encabezados personalizados", + "headerKey": "Nombre del encabezado", + "authentication": "Autenticación", + "clientID": "ID del Cliente", + "clientSecretPlaceholder": "Secreto del Cliente", + "useDynamicClientRegistration": "Usar registro dinámico de clientes", + "clientSecret": "Secreto del Cliente", + "configurations": "Configuraciones", + "redirectUrlWarning": "Por favor, configure su URL de redireccionamiento OAuth a:" + }, + "delete": "Eliminar servidor MCP", + "deleteConfirmTitle": "¿Eliminar {{mcp}}?", + "operation": { + "edit": "Editar", + "remove": "Eliminar" + }, + "authorize": "Autorizar", + "authorizing": "Autorizando...", + "authorizingRequired": "Se requiere autorización", + "authorizeTip": "Tras la autorización, las herramientas se mostrarán aquí.", + "update": "Actualizar", + "updating": "Actualizando", + "gettingTools": "Obteniendo herramientas...", + "updateTools": "Actualizando herramientas...", + "toolsEmpty": "Herramientas no cargadas", + "getTools": "Obtener herramientas", + "toolUpdateConfirmTitle": "Actualizar lista de herramientas", + "toolUpdateConfirmContent": "Actualizar la lista puede afectar a aplicaciones existentes. ¿Continuar?", + "toolsNum": "{{count}} herramientas incluidas", + "onlyTool": "1 herramienta incluida", + "identifier": "Identificador del servidor (Haz clic para copiar)", + "server": { + "title": "Servidor MCP", + "url": "URL del servidor", + "reGen": "¿Regenerar URL del servidor?", + "addDescription": "Añadir descripción", + "edit": "Editar descripción", + "modal": { + "addTitle": "Añade descripción para habilitar el servidor MCP", + "editTitle": "Editar descripción", + "description": "Descripción", + "descriptionPlaceholder": "Explica qué hace esta herramienta y cómo debe usarla el LLM", + "parameters": "Parámetros", + "parametersTip": "Añade descripciones de cada parámetro para ayudar al LLM a entender su propósito y restricciones.", + "parametersPlaceholder": "Propósito y restricciones del parámetro", + "confirm": "Habilitar servidor MCP" + }, + "publishTip": "App no publicada. Publícala primero." + }, + "toolItem": { + "noDescription": "Sin descripción", + "parameters": "Parámetros" + } + }, + "allTools": "Todas las herramientas" +} diff --git a/web/i18n/es-ES/tools.ts b/web/i18n/es-ES/tools.ts deleted file mode 100644 index 71881f95ed..0000000000 --- a/web/i18n/es-ES/tools.ts +++ /dev/null @@ -1,264 +0,0 @@ -const translation = { - title: 'Herramientas', - createCustomTool: 'Crear Herramienta Personalizada', - customToolTip: 'Aprende más sobre las herramientas personalizadas de Dify', - type: { - builtIn: 'Incorporadas', - custom: 'Personalizadas', - workflow: 'Flujo de Trabajo', - }, - contribute: { - line1: 'Estoy interesado en ', - line2: 'contribuir herramientas a Dify.', - viewGuide: 'Ver la guía', - }, - author: 'Por', - auth: { - authorized: 'Autorizado', - setup: 'Configurar la autorización para usar', - setupModalTitle: 'Configurar Autorización', - setupModalTitleDescription: 'Después de configurar las credenciales, todos los miembros dentro del espacio de trabajo pueden usar esta herramienta al orquestar aplicaciones.', - }, - includeToolNum: '{{num}} herramientas incluidas', - addToolModal: { - type: 'tipo', - category: 'categoría', - added: 'agregada', - custom: { - title: 'No hay herramienta personalizada disponible', - tip: 'Crear una herramienta personalizada', - }, - workflow: { - title: 'No hay herramienta de flujo de trabajo disponible', - tip: 'Publicar flujos de trabajo como herramientas en el Estudio', - }, - mcp: { - title: 'No hay herramienta MCP disponible', - tip: 'Añadir un servidor MCP', - }, - agent: { - title: 'No hay estrategia de agente disponible', - }, - }, - createTool: { - title: 'Crear Herramienta Personalizada', - editAction: 'Configurar', - editTitle: 'Editar Herramienta Personalizada', - name: 'Nombre', - toolNamePlaceHolder: 'Ingresa el nombre de la herramienta', - nameForToolCall: 'Nombre de llamada de la herramienta', - nameForToolCallPlaceHolder: 'Utilizado para el reconocimiento automático, como getCurrentWeather, list_pets', - nameForToolCallTip: 'Solo soporta números, letras y guiones bajos.', - description: 'Descripción', - descriptionPlaceholder: 'Breve descripción del propósito de la herramienta, por ejemplo, obtener la temperatura de una ubicación específica.', - schema: 'Esquema', - schemaPlaceHolder: 'Ingresa tu esquema OpenAPI aquí', - viewSchemaSpec: 'Ver la Especificación OpenAPI-Swagger', - importFromUrl: 'Importar desde URL', - importFromUrlPlaceHolder: 'https://...', - urlError: 'Por favor, ingresa una URL válida', - examples: 'Ejemplos', - exampleOptions: { - json: 'Clima (JSON)', - yaml: 'Tienda de Mascotas (YAML)', - blankTemplate: 'Plantilla en Blanco', - }, - availableTools: { - title: 'Herramientas Disponibles', - name: 'Nombre', - description: 'Descripción', - method: 'Método', - path: 'Ruta', - action: 'Acciones', - test: 'Probar', - }, - authMethod: { - title: 'Método de Autorización', - type: 'Tipo de Autorización', - keyTooltip: 'Clave del encabezado HTTP, puedes dejarla como "Authorization" si no tienes idea de qué es o configurarla con un valor personalizado', - types: { - none: 'Ninguno', - apiKeyPlaceholder: 'Nombre del encabezado HTTP para la Clave API', - apiValuePlaceholder: 'Ingresa la Clave API', - api_key_header: 'Encabezado', - api_key_query: 'Parámetro de consulta', - queryParamPlaceholder: 'Nombre del parámetro de consulta para la clave de API', - }, - key: 'Clave', - value: 'Valor', - queryParam: 'Parámetro de consulta', - queryParamTooltip: 'El nombre del parámetro de consulta de clave de API que se debe pasar, por ejemplo, "key" en "https://example.com/test?key=API_KEY".', - }, - authHeaderPrefix: { - title: 'Tipo de Autenticación', - types: { - basic: 'Básica', - bearer: 'Bearer', - custom: 'Personalizada', - }, - }, - privacyPolicy: 'Política de Privacidad', - privacyPolicyPlaceholder: 'Por favor, ingresa la política de privacidad', - toolInput: { - title: 'Entrada de la Herramienta', - name: 'Nombre', - required: 'Requerido', - method: 'Método', - methodSetting: 'Configuración', - methodSettingTip: 'El usuario completa la configuración de la herramienta', - methodParameter: 'Parámetro', - methodParameterTip: 'LLM completa durante la inferencia', - label: 'Etiquetas', - labelPlaceholder: 'Elige etiquetas (opcional)', - description: 'Descripción', - descriptionPlaceholder: 'Descripción del significado del parámetro', - }, - customDisclaimer: 'Descargo de responsabilidad personalizado', - customDisclaimerPlaceholder: 'Por favor, ingresa el descargo de responsabilidad personalizado', - confirmTitle: '¿Confirmar para guardar?', - confirmTip: 'Las aplicaciones que usen esta herramienta se verán afectadas', - deleteToolConfirmTitle: '¿Eliminar esta Herramienta?', - deleteToolConfirmContent: 'Eliminar la herramienta es irreversible. Los usuarios ya no podrán acceder a tu herramienta.', - toolOutput: { - title: 'Salida de la herramienta', - name: 'Nombre', - reserved: 'Reservado', - reservedParameterDuplicateTip: 'text, json y files son variables reservadas. Las variables con estos nombres no pueden aparecer en el esquema de salida.', - description: 'Descripción', - }, - }, - test: { - title: 'Probar', - parametersValue: 'Parámetros y Valor', - parameters: 'Parámetros', - value: 'Valor', - testResult: 'Resultados de la Prueba', - testResultPlaceholder: 'El resultado de la prueba se mostrará aquí', - }, - thought: { - using: 'Usando', - used: 'Usado', - requestTitle: 'Solicitud a', - responseTitle: 'Respuesta de', - }, - setBuiltInTools: { - info: 'Información', - setting: 'Ajuste', - toolDescription: 'Descripción de la herramienta', - parameters: 'parámetros', - string: 'cadena', - number: 'número', - required: 'Requerido', - infoAndSetting: 'Información y Ajustes', - file: 'archivo', - }, - noCustomTool: { - title: '¡Sin herramientas personalizadas!', - content: 'Agrega y administra tus herramientas personalizadas aquí para construir aplicaciones de inteligencia artificial.', - createTool: 'Crear Herramienta', - }, - noSearchRes: { - title: '¡Lo sentimos, no hay resultados!', - content: 'No encontramos herramientas que coincidan con tu búsqueda.', - reset: 'Restablecer Búsqueda', - }, - builtInPromptTitle: 'Aviso', - toolRemoved: 'Herramienta eliminada', - notAuthorized: 'Herramienta no autorizada', - howToGet: 'Cómo obtener', - openInStudio: 'Abrir en Studio', - toolNameUsageTip: 'Nombre de llamada de la herramienta para razonamiento y promoción de agentes', - copyToolName: 'Nombre de la copia', - noTools: 'No se han encontrado herramientas', - mcp: { - create: { - cardTitle: 'Añadir servidor MCP (HTTP)', - cardLink: 'Más información sobre integración de servidores MCP', - }, - noConfigured: 'Servidor no configurado', - updateTime: 'Actualizado', - toolsCount: '{{count}} herramientas', - noTools: 'No hay herramientas disponibles', - modal: { - title: 'Añadir servidor MCP (HTTP)', - editTitle: 'Editar servidor MCP (HTTP)', - name: 'Nombre e Icono', - namePlaceholder: 'Nombre de su servidor MCP', - serverUrl: 'URL del servidor', - serverUrlPlaceholder: 'URL del endpoint del servidor', - serverUrlWarning: 'Actualizar la dirección del servidor puede interrumpir aplicaciones que dependan de él', - serverIdentifier: 'Identificador del servidor', - serverIdentifierTip: 'Identificador único del servidor MCP en el espacio de trabajo. Solo letras minúsculas, números, guiones bajos y guiones. Máximo 24 caracteres.', - serverIdentifierPlaceholder: 'Identificador único, ej. mi-servidor-mcp', - serverIdentifierWarning: 'El servidor no será reconocido por aplicaciones existentes tras cambiar la ID', - cancel: 'Cancelar', - save: 'Guardar', - confirm: 'Añadir y Autorizar', - sseReadTimeout: 'Tiempo de espera de lectura SSE', - timeout: 'Tiempo de espera', - timeoutPlaceholder: 'treinta', - headers: 'Encabezados', - addHeader: 'Agregar encabezado', - headerValuePlaceholder: 'por ejemplo, token de portador123', - headersTip: 'Encabezados HTTP adicionales para enviar con las solicitudes del servidor MCP', - maskedHeadersTip: 'Los valores del encabezado están enmascarados por seguridad. Los cambios actualizarán los valores reales.', - headerKeyPlaceholder: 'por ejemplo, Autorización', - headerValue: 'Valor del encabezado', - noHeaders: 'No se han configurado encabezados personalizados', - headerKey: 'Nombre del encabezado', - authentication: 'Autenticación', - clientID: 'ID del Cliente', - clientSecretPlaceholder: 'Secreto del Cliente', - useDynamicClientRegistration: 'Usar registro dinámico de clientes', - clientSecret: 'Secreto del Cliente', - configurations: 'Configuraciones', - redirectUrlWarning: 'Por favor, configure su URL de redireccionamiento OAuth a:', - }, - delete: 'Eliminar servidor MCP', - deleteConfirmTitle: '¿Eliminar {{mcp}}?', - operation: { - edit: 'Editar', - remove: 'Eliminar', - }, - authorize: 'Autorizar', - authorizing: 'Autorizando...', - authorizingRequired: 'Se requiere autorización', - authorizeTip: 'Tras la autorización, las herramientas se mostrarán aquí.', - update: 'Actualizar', - updating: 'Actualizando', - gettingTools: 'Obteniendo herramientas...', - updateTools: 'Actualizando herramientas...', - toolsEmpty: 'Herramientas no cargadas', - getTools: 'Obtener herramientas', - toolUpdateConfirmTitle: 'Actualizar lista de herramientas', - toolUpdateConfirmContent: 'Actualizar la lista puede afectar a aplicaciones existentes. ¿Continuar?', - toolsNum: '{{count}} herramientas incluidas', - onlyTool: '1 herramienta incluida', - identifier: 'Identificador del servidor (Haz clic para copiar)', - server: { - title: 'Servidor MCP', - url: 'URL del servidor', - reGen: '¿Regenerar URL del servidor?', - addDescription: 'Añadir descripción', - edit: 'Editar descripción', - modal: { - addTitle: 'Añade descripción para habilitar el servidor MCP', - editTitle: 'Editar descripción', - description: 'Descripción', - descriptionPlaceholder: 'Explica qué hace esta herramienta y cómo debe usarla el LLM', - parameters: 'Parámetros', - parametersTip: 'Añade descripciones de cada parámetro para ayudar al LLM a entender su propósito y restricciones.', - parametersPlaceholder: 'Propósito y restricciones del parámetro', - confirm: 'Habilitar servidor MCP', - }, - publishTip: 'App no publicada. Publícala primero.', - }, - toolItem: { - noDescription: 'Sin descripción', - parameters: 'Parámetros', - }, - }, - allTools: 'Todas las herramientas', -} - -export default translation diff --git a/web/i18n/es-ES/workflow.json b/web/i18n/es-ES/workflow.json new file mode 100644 index 0000000000..6f44f9e3ec --- /dev/null +++ b/web/i18n/es-ES/workflow.json @@ -0,0 +1,1294 @@ +{ + "common": { + "undo": "Deshacer", + "redo": "Rehacer", + "editing": "Editando", + "autoSaved": "Guardado automático", + "unpublished": "No publicado", + "published": "Publicado", + "publish": "Publicar", + "update": "Actualizar", + "run": "Ejecutar prueba", + "running": "Ejecutando", + "inRunMode": "En modo de ejecución", + "inPreview": "En vista previa", + "inPreviewMode": "En modo de vista previa", + "preview": "Vista previa", + "viewRunHistory": "Ver historial de ejecución", + "runHistory": "Historial de ejecución", + "goBackToEdit": "Volver al editor", + "conversationLog": "Registro de conversación", + "debugAndPreview": "Vista previa", + "restart": "Reiniciar", + "currentDraft": "Borrador actual", + "currentDraftUnpublished": "Borrador actual no publicado", + "latestPublished": "Último publicado", + "publishedAt": "Publicado el", + "restore": "Restaurar", + "runApp": "Ejecutar aplicación", + "batchRunApp": "Ejecutar aplicación en lote", + "accessAPIReference": "Acceder a la referencia de la API", + "embedIntoSite": "Insertar en el sitio", + "addTitle": "Agregar título...", + "addDescription": "Agregar descripción...", + "noVar": "Sin variable", + "searchVar": "Buscar variable", + "variableNamePlaceholder": "Nombre de la variable", + "setVarValuePlaceholder": "Establecer variable", + "needConnectTip": "Este paso no está conectado a nada", + "maxTreeDepth": "Límite máximo de {{depth}} nodos por rama", + "workflowProcess": "Proceso de flujo de trabajo", + "notRunning": "Aún no se está ejecutando", + "previewPlaceholder": "Ingrese contenido en el cuadro de abajo para comenzar a depurar el Chatbot", + "effectVarConfirm": { + "title": "Eliminar variable", + "content": "La variable se utiliza en otros nodos. ¿Aún quieres eliminarla?" + }, + "insertVarTip": "Presiona la tecla '/' para insertar rápidamente", + "processData": "Procesar datos", + "input": "Entrada", + "output": "Salida", + "jinjaEditorPlaceholder": "Escribe '/' o '{' para insertar una variable", + "viewOnly": "Solo vista", + "showRunHistory": "Mostrar historial de ejecución", + "enableJinja": "Habilitar soporte de plantillas Jinja", + "learnMore": "Más información", + "copy": "Copiar", + "duplicate": "Duplicar", + "pasteHere": "Pegar aquí", + "pointerMode": "Modo puntero", + "handMode": "Modo mano", + "model": "Modelo", + "workflowAsTool": "Flujo de trabajo como herramienta", + "configureRequired": "Configuración requerida", + "configure": "Configurar", + "manageInTools": "Administrar en Herramientas", + "workflowAsToolTip": "Se requiere la reconfiguración de la herramienta después de la actualización del flujo de trabajo.", + "viewDetailInTracingPanel": "Ver detalles", + "syncingData": "Sincronizando datos, solo unos segundos.", + "importDSL": "Importar DSL", + "importDSLTip": "El borrador actual se sobrescribirá. Exporta el flujo de trabajo como respaldo antes de importar.", + "backupCurrentDraft": "Respaldar borrador actual", + "chooseDSL": "Elegir archivo DSL (yml)", + "overwriteAndImport": "Sobrescribir e importar", + "importFailure": "Error al importar", + "importSuccess": "Importación exitosa", + "parallelTip": { + "click": { + "title": "Clic", + "desc": "Para agregar" + }, + "drag": { + "title": "Arrastrar", + "desc": "Para conectarse" + }, + "limit": "El paralelismo se limita a {{num}} ramas.", + "depthLimit": "Límite de capa de anidamiento paralelo de capas {{num}}" + }, + "disconnect": "Desconectar", + "jumpToNode": "Saltar a este nodo", + "addParallelNode": "Agregar nodo paralelo", + "parallel": "PARALELO", + "branch": "RAMA", + "fileUploadTip": "Las funciones de carga de imágenes se han actualizado a la carga de archivos.", + "ImageUploadLegacyTip": "Ahora puede crear variables de tipo de archivo en el formulario de inicio. Ya no admitiremos la función de carga de imágenes en el futuro.", + "importWarning": "Cautela", + "importWarningDetails": "La diferencia de versión de DSL puede afectar a ciertas características", + "openInExplore": "Abrir en Explorar", + "onFailure": "Sobre el fracaso", + "addFailureBranch": "Agregar rama de error", + "noHistory": "Sin historia", + "loadMore": "Cargar más flujos de trabajo", + "versionHistory": "Historial de versiones", + "exportSVG": "Exportar como SVG", + "exitVersions": "Versiones de salida", + "exportJPEG": "Exportar como JPEG", + "exportPNG": "Exportar como PNG", + "publishUpdate": "Publicar actualización", + "exportImage": "Exportar imagen", + "needAnswerNode": "Se debe agregar el nodo de respuesta", + "needOutputNode": "Se debe agregar el nodo de Salida", + "addBlock": "Agregar nodo", + "tagBound": "Número de aplicaciones que utilizan esta etiqueta", + "currentView": "Vista actual", + "currentWorkflow": "Flujo de trabajo actual", + "moreActions": "Más acciones", + "listening": "Escucha", + "chooseStartNodeToRun": "Elige el nodo de inicio para ejecutar", + "runAllTriggers": "Ejecutar todos los desencadenadores", + "features": "Características", + "featuresDescription": "Mejorar la experiencia del usuario en la aplicación web", + "featuresDocLink": "Aprender más", + "needAdd": "Se debe añadir el nodo {{node}}", + "needStartNode": "Se debe añadir al menos un nodo de inicio", + "workflowAsToolDisabledHint": "Publica el flujo de trabajo más reciente y asegúrate de que haya un nodo de Entrada de Usuario conectado antes de configurarlo como una herramienta." + }, + "env": { + "envPanelTitle": "Variables de Entorno", + "envDescription": "Las variables de entorno se pueden utilizar para almacenar información privada y credenciales. Son de solo lectura y se pueden separar del archivo DSL durante la exportación.", + "envPanelButton": "Añadir Variable", + "modal": { + "title": "Añadir Variable de Entorno", + "editTitle": "Editar Variable de Entorno", + "type": "Tipo", + "name": "Nombre", + "namePlaceholder": "nombre de env", + "value": "Valor", + "valuePlaceholder": "valor de env", + "secretTip": "Se utiliza para definir información o datos sensibles, con configuraciones DSL configuradas para prevenir fugas.", + "description": "Descripción", + "descriptionPlaceholder": "Describa la variable" + }, + "export": { + "title": "¿Exportar variables de entorno secretas?", + "checkbox": "Exportar valores secretos", + "ignore": "Exportar DSL", + "export": "Exportar DSL con valores secretos" + } + }, + "globalVar": { + "title": "Variables del sistema", + "description": "Las variables del sistema son variables globales que cualquier nodo puede usar sin conexiones cuando el tipo es correcto, como el ID del usuario final y el ID del flujo de trabajo.", + "fieldsDescription": { + "conversationId": "ID de la conversación", + "dialogCount": "Número de conversaciones", + "userId": "ID de usuario", + "triggerTimestamp": "Marca de tiempo de inicio de la aplicación", + "appId": "ID de la aplicación", + "workflowId": "ID del flujo de trabajo", + "workflowRunId": "ID de ejecución del flujo de trabajo" + } + }, + "chatVariable": { + "panelTitle": "Variables de Conversación", + "panelDescription": "Las Variables de Conversación se utilizan para almacenar información interactiva que el LLM necesita recordar, incluyendo el historial de conversación, archivos subidos y preferencias del usuario. Son de lectura y escritura.", + "docLink": "Visite nuestra documentación para más información.", + "button": "Añadir Variable", + "modal": { + "title": "Añadir Variable de Conversación", + "editTitle": "Editar Variable de Conversación", + "name": "Nombre", + "namePlaceholder": "Nombre de la variable", + "type": "Tipo", + "value": "Valor Predeterminado", + "valuePlaceholder": "Valor predeterminado, dejar en blanco para no establecer", + "description": "Descripción", + "descriptionPlaceholder": "Describa la variable", + "editInJSON": "Editar en JSON", + "oneByOne": "Añadir uno por uno", + "editInForm": "Editar en Formulario", + "arrayValue": "Valor", + "addArrayValue": "Añadir Valor", + "objectKey": "Clave", + "objectType": "Tipo", + "objectValue": "Valor Predeterminado" + }, + "storedContent": "Contenido almacenado", + "updatedAt": "Actualizado el " + }, + "changeHistory": { + "title": "Historial de cambios", + "placeholder": "Aún no has realizado cambios", + "clearHistory": "Borrar historial", + "hint": "Sugerencia", + "hintText": "Tus acciones de edición se registran en un historial de cambios, que se almacena en tu dispositivo durante esta sesión. Este historial se borrará cuando salgas del editor.", + "stepBackward_one": "{{count}} paso hacia atrás", + "stepBackward_other": "{{count}} pasos hacia atrás", + "stepForward_one": "{{count}} paso hacia adelante", + "stepForward_other": "{{count}} pasos hacia adelante", + "sessionStart": "Inicio de sesión", + "currentState": "Estado actual", + "noteAdd": "Nota agregada", + "noteChange": "Nota cambiada", + "noteDelete": "Nota eliminada", + "nodeTitleChange": "Título del nodo cambiado", + "nodeAdd": "Nodo añadido", + "nodePaste": "Nodo pegado", + "nodeDragStop": "Nodo movido", + "nodeConnect": "Nodo conectado", + "edgeDelete": "Nodo desconectado", + "nodeDelete": "Nodo eliminado", + "nodeChange": "Nodo cambiado", + "nodeDescriptionChange": "Descripción del nodo cambiada", + "nodeResize": "Nodo redimensionado" + }, + "errorMsg": { + "fieldRequired": "Se requiere {{field}}", + "authRequired": "Se requiere autorización", + "invalidJson": "{{field}} no es un JSON válido", + "fields": { + "variable": "Nombre de la variable", + "variableValue": "Valor de la variable", + "code": "Código", + "model": "Modelo", + "rerankModel": "Modelo de reordenamiento", + "visionVariable": "Variable de visión" + }, + "invalidVariable": "Variable no válida", + "rerankModelRequired": "Antes de activar el modelo de reclasificación, confirme que el modelo se ha configurado correctamente en la configuración.", + "toolParameterRequired": "{{campo}}: el parámetro [{{param}}] es obligatorio", + "noValidTool": "{{campo}} no se ha seleccionado ninguna herramienta válida", + "startNodeRequired": "Por favor, agregue primero un nodo de inicio antes de {{operation}}" + }, + "singleRun": { + "testRun": "Ejecución de prueba", + "startRun": "Iniciar ejecución", + "running": "Ejecutando", + "testRunIteration": "Iteración de ejecución de prueba", + "back": "Atrás", + "iteration": "Iteración", + "loop": "Bucle", + "preparingDataSource": "Preparar el origen de datos", + "reRun": "Repetición" + }, + "tabs": { + "tools": "Herramientas", + "allTool": "Todos", + "customTool": "Personalizadas", + "workflowTool": "Flujo de trabajo", + "question-understand": "Entender pregunta", + "logic": "Lógica", + "transform": "Transformar", + "utilities": "Utilidades", + "noResult": "No se encontraron coincidencias", + "searchTool": "Herramienta de búsqueda", + "agent": "Estrategia del agente", + "plugin": "Plugin", + "searchBlock": "Buscar nodo", + "blocks": "Nodos", + "addAll": "Agregar todo", + "allAdded": "Todo añadido", + "sources": "Fuentes", + "searchDataSource": "Fuente de datos de búsqueda", + "start": "Iniciar", + "searchTrigger": "Buscar desencadenantes...", + "allTriggers": "Todos los desencadenantes", + "noPluginsFound": "No se encontraron complementos", + "requestToCommunity": "Solicitudes a la comunidad", + "featuredTools": "Destacado", + "showMoreFeatured": "Mostrar más", + "showLessFeatured": "Mostrar menos", + "installed": "Instalado", + "pluginByAuthor": "Por {{author}}", + "usePlugin": "Seleccionar herramienta", + "hideActions": "Ocultar herramientas", + "noFeaturedPlugins": "Descubre más herramientas en el Marketplace", + "noFeaturedTriggers": "Descubre más desencadenantes en el Marketplace", + "startDisabledTip": "El nodo activador y el nodo de entrada del usuario son mutuamente excluyentes." + }, + "blocks": { + "start": "Inicio", + "end": "Salida", + "answer": "Respuesta", + "llm": "LLM", + "knowledge-retrieval": "Recuperación de conocimiento", + "question-classifier": "Clasificador de preguntas", + "if-else": "SI/SINO", + "code": "Código", + "template-transform": "Plantilla", + "http-request": "Solicitud HTTP", + "variable-assigner": "Asignador de variables", + "variable-aggregator": "Agregador de variables", + "assigner": "Asignador de Variables", + "iteration-start": "Inicio de iteración", + "iteration": "Iteración", + "parameter-extractor": "Extractor de parámetros", + "document-extractor": "Extractor de documentos", + "list-operator": "Operador de lista", + "agent": "Agente", + "loop-end": "Salir del bucle", + "loop": "Bucle", + "loop-start": "Inicio del bucle", + "knowledge-index": "Knowledge base", + "datasource": "Fuente de datos", + "originalStartNode": "nodo inicial original", + "trigger-schedule": "Disparador de horario", + "trigger-webhook": "Disparador de Webhook", + "trigger-plugin": "Disparador de complemento" + }, + "blocksAbout": { + "start": "Define los parámetros iniciales para iniciar un flujo de trabajo", + "end": "Define la salida y el tipo de resultado de un flujo de trabajo", + "answer": "Define el contenido de respuesta de una conversación de chat", + "llm": "Invoca modelos de lenguaje grandes para responder preguntas o procesar lenguaje natural", + "knowledge-retrieval": "Te permite consultar contenido de texto relacionado con las preguntas de los usuarios desde el conocimiento", + "question-classifier": "Define las condiciones de clasificación de las preguntas de los usuarios, LLM puede definir cómo progresa la conversación en función de la descripción de clasificación", + "if-else": "Te permite dividir el flujo de trabajo en dos ramas basadas en condiciones SI/SINO", + "code": "Ejecuta un fragmento de código Python o NodeJS para implementar lógica personalizada", + "template-transform": "Convierte datos en una cadena utilizando la sintaxis de plantillas Jinja", + "http-request": "Permite enviar solicitudes al servidor a través del protocolo HTTP", + "variable-assigner": "Agrega variables de múltiples ramas en una sola variable para configurar de manera unificada los nodos descendentes.", + "assigner": "El nodo de asignación de variables se utiliza para asignar valores a variables escribibles (como variables de conversación).", + "variable-aggregator": "Agrega variables de múltiples ramas en una sola variable para configurar de manera unificada los nodos descendentes.", + "iteration": "Realiza múltiples pasos en un objeto de lista hasta que se generen todos los resultados.", + "parameter-extractor": "Utiliza LLM para extraer parámetros estructurados del lenguaje natural para invocaciones de herramientas o solicitudes HTTP.", + "list-operator": "Se utiliza para filtrar u ordenar el contenido de la matriz.", + "document-extractor": "Se utiliza para analizar documentos cargados en contenido de texto que es fácilmente comprensible por LLM.", + "agent": "Invocar modelos de lenguaje de gran tamaño para responder preguntas o procesar el lenguaje natural", + "loop-end": "Equivalente a \"romper\". Este nodo no tiene elementos de configuración. Cuando el cuerpo del bucle alcanza este nodo, el bucle termina.", + "loop": "Ejecuta un bucle de lógica hasta que se cumpla la condición de terminación o se alcance el conteo máximo de bucles.", + "knowledge-index": "Base de conocimientos Acerca de", + "datasource": "Fuente de datos Acerca de", + "trigger-schedule": "Disparador de flujo de trabajo basado en tiempo que inicia flujos de trabajo según un horario", + "trigger-webhook": "El disparador de Webhook recibe envíos HTTP de sistemas de terceros para activar automáticamente flujos de trabajo.", + "trigger-plugin": "Disparador de integración de terceros que inicia flujos de trabajo a partir de eventos de plataformas externas" + }, + "operator": { + "zoomIn": "Acercar", + "zoomOut": "Alejar", + "zoomTo50": "Zoom al 50%", + "zoomTo100": "Zoom al 100%", + "zoomToFit": "Ajustar al tamaño", + "alignTop": "Arriba", + "alignBottom": "Abajo", + "alignNodes": "Alinear nodos", + "alignCenter": "Centro", + "selectionAlignment": "Alineación de selección", + "horizontal": "Horizontal", + "distributeHorizontal": "Espaciar horizontalmente", + "vertical": "Vertical", + "distributeVertical": "Espaciar verticalmente", + "alignMiddle": "Centro", + "alignLeft": "Izquierda", + "alignRight": "Derecha" + }, + "panel": { + "userInputField": "Campo de entrada del usuario", + "helpLink": "Ayuda", + "about": "Acerca de", + "createdBy": "Creado por ", + "nextStep": "Siguiente paso", + "runThisStep": "Ejecutar este paso", + "checklist": "Lista de verificación", + "checklistTip": "Asegúrate de resolver todos los problemas antes de publicar", + "checklistResolved": "Se resolvieron todos los problemas", + "change": "Cambiar", + "optional": "(opcional)", + "organizeBlocks": "Organizar nodos", + "addNextStep": "Agrega el siguiente paso en este flujo de trabajo", + "changeBlock": "Cambiar Nodo", + "selectNextStep": "Seleccionar siguiente paso", + "maximize": "Maximizar Canvas", + "minimize": "Salir de pantalla completa", + "scrollToSelectedNode": "Desplácese hasta el nodo seleccionado", + "optional_and_hidden": "(opcional y oculto)", + "goTo": "Ir a", + "startNode": "Nodo de inicio", + "openWorkflow": "Abrir flujo de trabajo" + }, + "nodes": { + "common": { + "outputVars": "Variables de salida", + "insertVarTip": "Insertar variable", + "memory": { + "memory": "Memoria", + "memoryTip": "Configuración de memoria de chat", + "windowSize": "Tamaño de ventana", + "conversationRoleName": "Nombre del rol de conversación", + "user": "Prefijo de usuario", + "assistant": "Prefijo de asistente" + }, + "memories": { + "title": "Memorias", + "tip": "Memoria de chat", + "builtIn": "Incorporada" + }, + "errorHandle": { + "none": { + "title": "Ninguno", + "desc": "El nodo dejará de ejecutarse si se produce una excepción y no se controla" + }, + "defaultValue": { + "title": "Valor predeterminado", + "desc": "Cuando se produzca un error, especifique un contenido de salida estático.", + "tip": "En caso de error, devolverá un valor inferior.", + "inLog": "Excepción de nodo, salida según los valores predeterminados.", + "output": "Valor predeterminado de salida" + }, + "failBranch": { + "title": "Rama de error", + "desc": "Cuando se produce un error, ejecutará la rama de excepción", + "customize": "Vaya al lienzo para personalizar la lógica de la rama de error.", + "customizeTip": "Cuando se activa la rama fail, las excepciones lanzadas por los nodos no finalizarán el proceso. En su lugar, ejecutará automáticamente la rama de error predefinida, lo que le permitirá proporcionar de forma flexible mensajes de error, informes, correcciones u omitir acciones.", + "inLog": "Node, ejecutará automáticamente la rama de error. La salida del nodo devolverá un tipo de error y un mensaje de error y los pasará a la versión posterior." + }, + "partialSucceeded": { + "tip": "Hay nodos {{num}} en el proceso que se ejecutan de manera anormal, vaya a rastreo para verificar los registros." + }, + "title": "Manejo de errores", + "tip": "Estrategia de control de excepciones, que se desencadena cuando un nodo encuentra una excepción." + }, + "retry": { + "retryOnFailure": "Volver a intentarlo en caso de error", + "maxRetries": "Número máximo de reintentos", + "retryInterval": "Intervalo de reintento", + "retryTimes": "Reintentar {{times}} veces en caso de error", + "retrying": "Reintentando...", + "retrySuccessful": "Volver a intentarlo correctamente", + "retryFailed": "Error en el reintento", + "retryFailedTimes": "{{veces}} reintentos fallidos", + "times": "veces", + "ms": "Sra.", + "retries": "{{num}} Reintentos", + "retry": "Reintentar" + }, + "typeSwitch": { + "input": "Valor de entrada", + "variable": "Usa la variable" + }, + "inputVars": "Variables de entrada", + "pluginNotInstalled": "El complemento no está instalado" + }, + "start": { + "required": "requerido", + "inputField": "Campo de entrada", + "builtInVar": "Variables incorporadas", + "outputVars": { + "query": "Entrada del usuario", + "memories": { + "des": "Historial de conversación", + "type": "tipo de mensaje", + "content": "contenido del mensaje" + }, + "files": "Lista de archivos" + }, + "noVarTip": "Establece las entradas que se pueden utilizar en el flujo de trabajo" + }, + "end": { + "outputs": "Salidas", + "output": { + "type": "tipo de salida", + "variable": "variable de salida" + }, + "type": { + "none": "Ninguno", + "plain-text": "Texto sin formato", + "structured": "Estructurado" + } + }, + "answer": { + "answer": "Respuesta", + "outputVars": "Variables de salida" + }, + "llm": { + "model": "modelo", + "variables": "variables", + "context": "contexto", + "contextTooltip": "Puedes importar el conocimiento como contexto", + "notSetContextInPromptTip": "Para habilitar la función de contexto, completa la variable de contexto en PROMPT.", + "prompt": "indicación", + "roleDescription": { + "system": "Proporciona instrucciones generales para la conversación", + "user": "Proporciona instrucciones, consultas o cualquier entrada basada en texto al modelo", + "assistant": "Las respuestas del modelo basadas en los mensajes del usuario" + }, + "addMessage": "Agregar mensaje", + "vision": "visión", + "files": "Archivos", + "resolution": { + "name": "Resolución", + "high": "Alta", + "low": "Baja" + }, + "outputVars": { + "output": "Generar contenido", + "reasoning_content": "Contenido de razonamiento", + "usage": "Información de uso del modelo" + }, + "singleRun": { + "variable": "Variable" + }, + "sysQueryInUser": "se requiere sys.query en el mensaje del usuario", + "jsonSchema": { + "warningTips": { + "saveSchema": "Por favor, termina de editar el campo actual antes de guardar el esquema." + }, + "showAdvancedOptions": "Mostrar opciones avanzadas", + "addField": "Agregar campo", + "generatedResult": "Resultado Generado", + "generateJsonSchema": "Generar esquema JSON", + "apply": "Aplicar", + "descriptionPlaceholder": "Agregar descripción", + "stringValidations": "Validaciones de cadenas", + "addChildField": "Agregar campo de niño", + "back": "Atrás", + "promptTooltip": "Convierta la descripción del texto en una estructura de esquema JSON estandarizada.", + "doc": "Aprender más sobre la salida estructurada", + "generating": "Generando esquema JSON...", + "fieldNamePlaceholder": "Nombre del campo", + "resultTip": "Aquí está el resultado generado. Si no estás satisfecho, puedes regresar y modificar tu solicitud.", + "title": "Esquema de salida estructurada", + "regenerate": "Regenerar", + "instruction": "Instrucción", + "generationTip": "Puedes usar lenguaje natural para crear rápidamente un esquema JSON.", + "promptPlaceholder": "Describe tu esquema JSON...", + "required": "requerido", + "generate": "Generar", + "import": "Importar desde JSON", + "resetDefaults": "Restablecer" + }, + "reasoningFormat": { + "tagged": "Mantén las etiquetas de pensamiento", + "separated": "Separar etiquetas de pensamiento", + "title": "Habilitar la separación de etiquetas de razonamiento", + "tooltip": "Extraer contenido de las etiquetas de pensamiento y almacenarlo en el campo reasoning_content." + } + }, + "knowledgeRetrieval": { + "queryVariable": "Variable de consulta", + "knowledge": "Conocimiento", + "outputVars": { + "output": "Datos segmentados de recuperación", + "content": "Contenido segmentado", + "title": "Título segmentado", + "icon": "Ícono segmentado", + "url": "URL segmentada", + "metadata": "Metadatos adicionales", + "files": "Archivos recuperados" + }, + "metadata": { + "options": { + "disabled": { + "subTitle": "No habilitar el filtrado de metadatos", + "title": "Deshabilitado" + }, + "automatic": { + "subTitle": "Generar automáticamente condiciones de filtrado de metadatos basadas en la consulta del usuario", + "desc": "Generar automáticamente condiciones de filtrado de metadatos basadas en la variable de consulta", + "title": "Automático" + }, + "manual": { + "title": "Manual", + "subTitle": "Añadir manualmente condiciones de filtro de metadatos" + } + }, + "panel": { + "conditions": "Condiciones", + "title": "Condiciones del filtro de metadatos", + "add": "Agregar condición", + "select": "Seleccionar variable...", + "datePlaceholder": "Elige una hora...", + "placeholder": "Ingrese valor", + "search": "Buscar metadatos" + }, + "title": "Filtrado de Metadatos", + "tip": "El filtrado de metadatos es el proceso de utilizar atributos de metadatos (como etiquetas, categorías o permisos de acceso) para refinar y controlar la recuperación de información relevante dentro de un sistema." + }, + "queryText": "Texto de consulta", + "queryAttachment": "Consultar imágenes" + }, + "http": { + "inputVars": "Variables de entrada", + "api": "API", + "apiPlaceholder": "Ingresa la URL, escribe '/' para insertar una variable", + "notStartWithHttp": "La API debe comenzar con http:// o https://", + "key": "Clave", + "value": "Valor", + "bulkEdit": "Edición masiva", + "keyValueEdit": "Edición clave-valor", + "headers": "Encabezados", + "params": "Parámetros", + "body": "Cuerpo", + "outputVars": { + "body": "Contenido de la respuesta", + "statusCode": "Código de estado de la respuesta", + "headers": "Lista de encabezados de respuesta en formato JSON", + "files": "Lista de archivos" + }, + "authorization": { + "authorization": "Autorización", + "authorizationType": "Tipo de autorización", + "no-auth": "Ninguna", + "api-key": "Clave de API", + "auth-type": "Tipo de autenticación", + "basic": "Básica", + "bearer": "Bearer", + "custom": "Personalizada", + "api-key-title": "Clave de API", + "header": "Encabezado" + }, + "insertVarPlaceholder": "escribe '/' para insertar una variable", + "timeout": { + "title": "Tiempo de espera", + "connectLabel": "Tiempo de espera de conexión", + "connectPlaceholder": "Ingresa el tiempo de espera de conexión en segundos", + "readLabel": "Tiempo de espera de lectura", + "readPlaceholder": "Ingresa el tiempo de espera de lectura en segundos", + "writeLabel": "Tiempo de espera de escritura", + "writePlaceholder": "Ingresa el tiempo de espera de escritura en segundos" + }, + "type": "Tipo", + "binaryFileVariable": "Variable de archivo binario", + "extractListPlaceholder": "Introduzca el índice de elementos de la lista, escriba '/' insertar variable", + "curl": { + "title": "Importar desde cURL", + "placeholder": "Pegar la cadena cURL aquí" + }, + "verifySSL": { + "title": "Verificar el certificado SSL", + "warningTooltip": "Deshabilitar la verificación SSL no se recomienda para entornos de producción. Esto solo debe utilizarse en desarrollo o pruebas, ya que hace que la conexión sea vulnerable a amenazas de seguridad como ataques de intermediario." + } + }, + "code": { + "inputVars": "Variables de entrada", + "outputVars": "Variables de salida", + "advancedDependencies": "Dependencias avanzadas", + "advancedDependenciesTip": "Agrega algunas dependencias precargadas que consumen más tiempo o no son incorporadas por defecto aquí", + "searchDependencies": "Buscar dependencias", + "syncFunctionSignature": "Sincronizar la firma de la función con el código" + }, + "templateTransform": { + "inputVars": "Variables de entrada", + "code": "Código", + "codeSupportTip": "Solo admite Jinja2", + "outputVars": { + "output": "Contenido transformado" + } + }, + "ifElse": { + "if": "Si", + "else": "Sino", + "elseDescription": "Se utiliza para definir la lógica que se debe ejecutar cuando no se cumple la condición del si.", + "and": "y", + "or": "o", + "operator": "Operador", + "notSetVariable": "Por favor, establece primero la variable", + "comparisonOperator": { + "contains": "contiene", + "not contains": "no contiene", + "start with": "comienza con", + "end with": "termina con", + "is": "es", + "is not": "no es", + "empty": "está vacío", + "not empty": "no está vacío", + "null": "es nulo", + "not null": "no es nulo", + "not in": "no en", + "in": "en", + "exists": "Existe", + "all of": "Todos los", + "not exists": "no existe", + "after": "después", + "before": "antes" + }, + "enterValue": "Ingresa un valor", + "addCondition": "Agregar condición", + "conditionNotSetup": "Condición NO configurada", + "selectVariable": "Seleccionar variable...", + "optionName": { + "audio": "Audio", + "image": "Imagen", + "doc": "Doc", + "localUpload": "Carga local", + "video": "Vídeo", + "url": "URL" + }, + "select": "Escoger", + "addSubVariable": "Sub Variable" + }, + "variableAssigner": { + "title": "Asignar variables", + "outputType": "Tipo de salida", + "varNotSet": "Variable no establecida", + "noVarTip": "Agrega las variables que se asignarán", + "type": { + "string": "Cadena", + "number": "Número", + "object": "Objeto", + "array": "Arreglo" + }, + "aggregationGroup": "Grupo de agregación", + "aggregationGroupTip": "Al habilitar esta función, el agregador de variables puede agregar múltiples conjuntos de variables.", + "addGroup": "Agregar grupo", + "outputVars": { + "varDescribe": "Salida de {{groupName}}" + }, + "setAssignVariable": "Establecer variable asignada" + }, + "assigner": { + "assignedVariable": "Variable Asignada", + "writeMode": "Modo de Escritura", + "writeModeTip": "Cuando la VARIABLE ASIGNADA es un array, el modo de anexar agrega al final.", + "over-write": "Sobrescribir", + "append": "Anexar", + "plus": "Más", + "clear": "Limpiar", + "setVariable": "Establecer Variable", + "variable": "Variable", + "operations": { + "clear": "Claro", + "*=": "*=", + "-=": "-=", + "title": "Operación", + "extend": "Extender", + "append": "Añadir", + "+=": "+=", + "over-write": "Sobrescribir", + "overwrite": "Sobrescribir", + "/=": "/=", + "set": "Poner", + "remove-last": "Eliminar último", + "remove-first": "Eliminar primero" + }, + "variables": "Variables", + "setParameter": "Establecer parámetro...", + "noVarTip": "Haga clic en el botón \"+\" para agregar variables", + "varNotSet": "Variable NO establecida", + "noAssignedVars": "No hay variables asignadas disponibles", + "selectAssignedVariable": "Seleccione la variable asignada...", + "assignedVarsDescription": "Las variables asignadas deben ser variables grabables, como las variables de conversación." + }, + "tool": { + "inputVars": "Variables de entrada", + "outputVars": { + "text": "Contenido generado por la herramienta", + "files": { + "title": "Archivos generados por la herramienta", + "type": "Tipo de soporte. Ahora solo admite imágenes", + "transfer_method": "Método de transferencia. El valor es remote_url o local_file", + "url": "URL de la imagen", + "upload_file_id": "ID de archivo cargado" + }, + "json": "JSON generado por la herramienta" + }, + "authorize": "autorizar", + "insertPlaceholder2": "insertar variable", + "settings": "Ajustes", + "insertPlaceholder1": "Escribe o presiona" + }, + "questionClassifiers": { + "model": "modelo", + "inputVars": "Variables de entrada", + "outputVars": { + "className": "Nombre de la clase", + "usage": "Información de uso del modelo" + }, + "class": "Clase", + "classNamePlaceholder": "Escribe el nombre de tu clase", + "advancedSetting": "Configuración avanzada", + "topicName": "Nombre del tema", + "topicPlaceholder": "Escribe el nombre de tu tema", + "addClass": "Agregar clase", + "instruction": "Instrucción", + "instructionTip": "Input additional instructions to help the question classifier better understand how to categorize questions.", + "instructionPlaceholder": "Write your instruction" + }, + "parameterExtractor": { + "inputVar": "Variable de entrada", + "outputVars": { + "isSuccess": "Es éxito. En caso de éxito el valor es 1, en caso de fallo el valor es 0.", + "errorReason": "Motivo del error", + "usage": "Información de uso del modelo" + }, + "extractParameters": "Extraer parámetros", + "importFromTool": "Importar desde herramientas", + "addExtractParameter": "Agregar parámetro de extracción", + "addExtractParameterContent": { + "name": "Nombre", + "namePlaceholder": "Nombre del parámetro de extracción", + "type": "Tipo", + "typePlaceholder": "Tipo de parámetro de extracción", + "description": "Descripción", + "descriptionPlaceholder": "Descripción del parámetro de extracción", + "required": "Requerido", + "requiredContent": "El campo requerido se utiliza solo como referencia para la inferencia del modelo, y no para la validación obligatoria de la salida del parámetro." + }, + "extractParametersNotSet": "Parámetros de extracción no configurados", + "instruction": "Instrucción", + "instructionTip": "Ingrese instrucciones adicionales para ayudar al extractor de parámetros a entender cómo extraer parámetros.", + "advancedSetting": "Configuración avanzada", + "reasoningMode": "Modo de razonamiento", + "reasoningModeTip": "Puede elegir el modo de razonamiento apropiado basado en la capacidad del modelo para responder a instrucciones para llamadas de funciones o indicaciones." + }, + "iteration": { + "deleteTitle": "¿Eliminar nodo de iteración?", + "deleteDesc": "Eliminar el nodo de iteración eliminará todos los nodos secundarios", + "input": "Entrada", + "output": "Variables de salida", + "iteration_one": "{{count}} Iteración", + "iteration_other": "{{count}} Iteraciones", + "currentIteration": "Iteración actual", + "ErrorMethod": { + "operationTerminated": "Terminado", + "continueOnError": "Continuar en el error", + "removeAbnormalOutput": "eliminar-salida-anormal" + }, + "comma": ",", + "errorResponseMethod": "Método de respuesta a errores", + "error_one": "{{conteo}} Error", + "parallelPanelDesc": "En el modo paralelo, las tareas de la iteración admiten la ejecución en paralelo.", + "MaxParallelismTitle": "Máximo paralelismo", + "error_other": "{{conteo}} Errores", + "parallelMode": "Modo paralelo", + "parallelModeEnableDesc": "En el modo paralelo, las tareas dentro de las iteraciones admiten la ejecución en paralelo. Puede configurar esto en el panel de propiedades a la derecha.", + "parallelModeUpper": "MODO PARALELO", + "MaxParallelismDesc": "El paralelismo máximo se utiliza para controlar el número de tareas ejecutadas simultáneamente en una sola iteración.", + "answerNodeWarningDesc": "Advertencia de modo paralelo: Los nodos de respuesta, las asignaciones de variables de conversación y las operaciones de lectura/escritura persistentes dentro de las iteraciones pueden provocar excepciones.", + "parallelModeEnableTitle": "Modo paralelo habilitado", + "flattenOutput": "Aplanar salida", + "flattenOutputDesc": "Cuando está habilitado, si todas las salidas de la iteración son arrays, se aplanarán en un solo array. Cuando está deshabilitado, las salidas mantendrán una estructura de array anidada." + }, + "note": { + "addNote": "Agregar nota", + "editor": { + "placeholder": "Escribe tu nota...", + "small": "Pequeño", + "medium": "Mediano", + "large": "Grande", + "bold": "Negrita", + "italic": "Itálica", + "strikethrough": "Tachado", + "link": "Enlace", + "openLink": "Abrir", + "unlink": "Quitar enlace", + "enterUrl": "Introducir URL...", + "invalidUrl": "URL inválida", + "bulletList": "Lista de viñetas", + "showAuthor": "Mostrar autor" + } + }, + "docExtractor": { + "outputVars": { + "text": "Texto extraído" + }, + "learnMore": "Aprende más", + "supportFileTypes": "Tipos de archivos de soporte: {{tipos}}.", + "inputVar": "Variable de entrada" + }, + "listFilter": { + "outputVars": { + "first_record": "Primer registro", + "last_record": "Último registro", + "result": "Filtrar resultado" + }, + "filterCondition": "Condición del filtro", + "filterConditionComparisonValue": "Valor de la condición de filtro", + "inputVar": "Variable de entrada", + "desc": "DESC", + "limit": "Arriba N", + "filterConditionKey": "Clave de condición de filtro", + "orderBy": "Ordenar por", + "filterConditionComparisonOperator": "Operador de comparación de condiciones de filtro", + "asc": "ASC", + "selectVariableKeyPlaceholder": "Seleccione la clave de subvariable", + "extractsCondition": "Extraiga el elemento N" + }, + "agent": { + "strategy": { + "configureTip": "Configure la estrategia de agentes.", + "tooltip": "Diferentes estrategias agentic determinan cómo el sistema planifica y ejecuta las llamadas a herramientas de varios pasos", + "label": "Estrategia Agentica", + "shortLabel": "Estrategia", + "configureTipDesc": "Después de configurar la estrategia agentica, este nodo cargará automáticamente las configuraciones restantes. La estrategia afectará el mecanismo de razonamiento de herramientas de varios pasos.", + "selectTip": "Seleccionar estrategia agentica", + "searchPlaceholder": "Estrategia de agentes de búsqueda" + }, + "pluginInstaller": { + "install": "Instalar", + "installing": "Instalar" + }, + "modelNotInMarketplace": { + "manageInPlugins": "Administrar en Plugins", + "desc": "Este modelo se instala desde el repositorio local o de GitHub. Úselo después de la instalación.", + "title": "Modelo no instalado" + }, + "modelNotSupport": { + "descForVersionSwitch": "La versión del plugin instalado no proporciona este modelo. Haga clic para cambiar de versión.", + "desc": "La versión del plugin instalado no proporciona este modelo.", + "title": "Modelo no compatible" + }, + "modelSelectorTooltips": { + "deprecated": "Este modelo está en desuso" + }, + "outputVars": { + "files": { + "url": "URL de la imagen", + "title": "Archivos generados por el agente", + "upload_file_id": "Cargar ID de archivo", + "transfer_method": "Método de transferencia. El valor es remote_url o local_file", + "type": "Tipo de soporte. Ahora solo admite imagen" + }, + "json": "JSON generado por el agente", + "text": "Contenido generado por el agente", + "usage": "Información de uso del modelo" + }, + "checkList": { + "strategyNotSelected": "Estrategia no seleccionada" + }, + "installPlugin": { + "install": "Instalar", + "desc": "A punto de instalar el siguiente plugin", + "changelog": "Registro de cambios", + "title": "Instalar plugin", + "cancel": "Cancelar" + }, + "tools": "Herramientas", + "pluginNotFoundDesc": "Este plugin se instala desde GitHub. Por favor, vaya a Plugins para reinstalar", + "strategyNotFoundDesc": "La versión del plugin instalado no proporciona esta estrategia.", + "strategyNotInstallTooltip": "{{estrategia}} no está instalado", + "modelNotInstallTooltip": "Este modelo no está instalado", + "maxIterations": "Iteraciones máximas", + "notAuthorized": "No autorizado", + "toolNotInstallTooltip": "{{herramienta}} no está instalada", + "toolbox": "caja de herramientas", + "strategyNotSet": "Estrategia agentica No establecida", + "unsupportedStrategy": "Estrategia no respaldada", + "linkToPlugin": "Enlace a los plugins", + "learnMore": "Aprende más", + "configureModel": "Configurar modelo", + "pluginNotInstalled": "Este plugin no está instalado", + "model": "modelo", + "pluginNotInstalledDesc": "Este plugin se instala desde GitHub. Por favor, vaya a Plugins para reinstalar", + "strategyNotFoundDescAndSwitchVersion": "La versión del plugin instalado no proporciona esta estrategia. Haga clic para cambiar de versión.", + "toolNotAuthorizedTooltip": "{{herramienta}} No autorizado", + "modelNotSelected": "Modelo no seleccionado", + "clickToViewParameterSchema": "Haga clic para ver el esquema de parámetros", + "parameterSchema": "Esquema de Parámetros" + }, + "loop": { + "ErrorMethod": { + "removeAbnormalOutput": "Eliminar salida anormal", + "operationTerminated": "Terminado", + "continueOnError": "Continuar con el error" + }, + "loopMaxCount": "Conteo máximo de bucles", + "output": "Variable de Salida", + "currentLoopCount": "Contador de bucles actual: {{count}}", + "currentLoop": "Bucle de corriente", + "loopNode": "Nodo de bucle", + "deleteDesc": "Eliminar el nodo de bucle eliminará todos los nodos hijos", + "totalLoopCount": "Total de loops: {{count}}", + "comma": ",", + "finalLoopVariables": "Variables del Bucle Final", + "inputMode": "Modo de entrada", + "deleteTitle": "¿Eliminar nodo de bucle?", + "setLoopVariables": "Establecer variables dentro del alcance del bucle", + "loop_other": "{{count}} bucles", + "breakCondition": "Condición de terminación del bucle", + "loopMaxCountError": "Por favor, introduce un conteo máximo de bucles válido, que varíe entre 1 y {{maxCount}}.", + "exitConditionTip": "Un nodo de bucle necesita al menos una condición de salida", + "error_one": "{{count}} Error", + "loop_one": "{{count}} Bucle", + "initialLoopVariables": "Variables de Bucle Iniciales", + "errorResponseMethod": "Método de respuesta de error", + "breakConditionTip": "Solo se pueden hacer referencia a las variables dentro de bucles con condiciones de terminación y variables de conversación.", + "error_other": "{{count}} Errores", + "loopVariables": "Variables de bucle", + "variableName": "Nombre de Variable", + "input": "Entrada" + }, + "dataSource": { + "supportedFileFormats": "Formatos de archivo compatibles", + "add": "Agregar origen de datos", + "supportedFileFormatsPlaceholder": "Extensión de archivo, e.g. doc" + }, + "knowledgeBase": { + "chunkStructureTip": { + "learnMore": "Aprende más", + "title": "Elija una estructura de fragmentos", + "message": "La base de conocimientos de Dify admite tres estructuras de fragmentación: General, Padre-hijo y Preguntas y respuestas. Cada base de conocimiento solo puede tener una estructura. La salida del nodo anterior debe alinearse con la estructura de fragmentos seleccionada. Tenga en cuenta que la elección de la estructura de fragmentación afecta a los métodos de índice disponibles." + }, + "chooseChunkStructure": "Elegir una estructura de fragmentos", + "indexMethodIsRequired": "Se requiere el método de índice", + "aboutRetrieval": "sobre el método de recuperación.", + "changeChunkStructure": "Cambiar la estructura de fragmentos", + "retrievalSettingIsRequired": "Se requiere configuración de recuperación", + "chunkStructure": "Estructura de fragmentos", + "chunkIsRequired": "Se requiere una estructura de fragmentos", + "chunksInput": "Trozo", + "chunksInputTip": "La variable de entrada del nodo de la base de conocimientos es Chunks. El tipo de variable es un objeto con un esquema JSON específico que debe ser consistente con la estructura del fragmento seleccionado.", + "embeddingModelIsRequired": "Se requiere un modelo de incrustación", + "rerankingModelIsRequired": "Se requiere un modelo de reordenamiento", + "chunksVariableIsRequired": "La variable Chunks es obligatoria", + "rerankingModelIsInvalid": "El modelo de reordenación no es válido", + "embeddingModelIsInvalid": "El modelo de incrustación no es válido" + }, + "triggerPlugin": { + "authorized": "autorizado", + "notConfigured": "No Configurado", + "notAuthorized": "No autorizado", + "selectSubscription": "Seleccionar suscripción", + "availableSubscriptions": "Suscripciones disponibles", + "addSubscription": "Agregar nueva suscripción", + "removeSubscription": "Cancelar suscripción", + "subscriptionRemoved": "Suscripción eliminada con éxito", + "error": "Error", + "configuration": "Configuración", + "remove": "Eliminar", + "or": "O", + "useOAuth": "Usar OAuth", + "useApiKey": "Usar clave API", + "authenticationFailed": "Autenticación fallida", + "authenticationSuccess": "Autenticación exitosa", + "oauthConfigFailed": "La configuración de OAuth falló", + "configureOAuthClient": "Configurar cliente OAuth", + "oauthClientDescription": "Configura las credenciales del cliente OAuth para habilitar la autenticación", + "oauthClientSaved": "Configuración del cliente OAuth guardada correctamente", + "configureApiKey": "Configurar clave API", + "apiKeyDescription": "Configurar las credenciales de la clave API para la autenticación", + "apiKeyConfigured": "Clave API configurada correctamente", + "configurationFailed": "La configuración falló", + "failedToStart": "Error al iniciar el flujo de autenticación", + "credentialsVerified": "Credenciales verificadas con éxito", + "credentialVerificationFailed": "Verificación de credenciales fallida", + "verifyAndContinue": "Verificar y continuar", + "configureParameters": "Configurar parámetros", + "parametersDescription": "Configurar parámetros y propiedades del disparador", + "configurationComplete": "Configuración completa", + "configurationCompleteDescription": "Tu disparador se ha configurado correctamente", + "configurationCompleteMessage": "Tu configuración de activadores ya está completa y lista para usar.", + "parameters": "Parámetros", + "properties": "Propiedades", + "propertiesDescription": "Propiedades de configuración adicionales para este disparador", + "noConfigurationRequired": "No se requiere configuración adicional para este disparador.", + "subscriptionName": "Nombre de la suscripción", + "subscriptionNameDescription": "Ingresa un nombre único para esta suscripción de activador", + "subscriptionNamePlaceholder": "Ingrese el nombre de la suscripción...", + "subscriptionNameRequired": "Se requiere el nombre de la suscripción", + "subscriptionRequired": "Se requiere suscripción" + }, + "triggerSchedule": { + "title": "Horario", + "nodeTitle": "Disparador de horario", + "notConfigured": "No configurado", + "useCronExpression": "Usar expresión cron", + "useVisualPicker": "Usar selector visual", + "frequency": { + "label": "FRECUENCIA", + "hourly": "Por hora", + "daily": "diario", + "weekly": "Semanal", + "monthly": "Mensual" + }, + "selectFrequency": "Seleccionar frecuencia", + "frequencyLabel": "Frecuencia", + "nextExecution": "Próxima ejecución", + "weekdays": "Días de la semana", + "time": "Tiempo", + "cronExpression": "Expresión Cron", + "nextExecutionTime": "PRÓXIMA HORA DE EJECUCIÓN", + "nextExecutionTimes": "Próximos 5 tiempos de ejecución", + "startTime": "Hora de inicio", + "executeNow": "Ejecución ahora", + "selectDateTime": "Seleccionar fecha y hora", + "hours": "Horas", + "minutes": "Minutos", + "onMinute": "En un minuto", + "days": "Días", + "lastDay": "Último día", + "lastDayTooltip": "No todos los meses tienen 31 días. Usa la opción 'último día' para seleccionar el último día de cada mes.", + "mode": "Modo", + "timezone": "Zona horaria", + "visualConfig": "Configuración Visual", + "monthlyDay": "Día mensual", + "executionTime": "Tiempo de ejecución", + "invalidTimezone": "Zona horaria no válida", + "invalidCronExpression": "Expresión cron inválida", + "noValidExecutionTime": "No se puede calcular un tiempo de ejecución válido", + "executionTimeCalculationError": "Error al calcular los tiempos de ejecución", + "invalidFrequency": "Frecuencia inválida", + "invalidStartTime": "Hora de inicio no válida", + "startTimeMustBeFuture": "La hora de inicio debe ser en el futuro", + "invalidTimeFormat": "Formato de hora inválido (se esperaba HH:MM AM/PM)", + "invalidWeekday": "Día de la semana no válido: {{weekday}}", + "invalidMonthlyDay": "El día del mes debe estar entre 1 y 31 o \"último\"", + "invalidOnMinute": "El minuto debe estar entre 0 y 59", + "invalidExecutionTime": "Tiempo de ejecución inválido", + "executionTimeMustBeFuture": "El tiempo de ejecución debe estar en el futuro" + }, + "triggerWebhook": { + "title": "Disparador de Webhook", + "nodeTitle": "🔗 Disparador de Webhook", + "configPlaceholder": "La configuración del activador del webhook se implementará aquí", + "webhookUrl": "URL del webhook", + "webhookUrlPlaceholder": "Haz clic en generar para crear la URL del webhook", + "generate": "Generar", + "copy": "Copiar", + "test": "Prueba", + "urlGenerated": "URL del webhook generada con éxito", + "urlGenerationFailed": "No se pudo generar la URL del webhook", + "urlCopied": "URL copiada al portapapeles", + "method": "Método", + "contentType": "Tipo de contenido", + "queryParameters": "Parámetros de consulta", + "headerParameters": "Parámetros de encabezado", + "requestBodyParameters": "Parámetros del cuerpo de la solicitud", + "parameterName": "Nombre de la variable", + "varName": "Nombre de la variable", + "varType": "Tipo", + "varNamePlaceholder": "Ingrese el nombre de la variable...", + "required": "Requerido", + "addParameter": "Agregar", + "addHeader": "Agregar", + "noParameters": "No se han configurado parámetros", + "noQueryParameters": "No se han configurado parámetros de consulta", + "noHeaders": "No se han configurado encabezados", + "noBodyParameters": "No se configuraron parámetros de cuerpo", + "debugUrlTitle": "Para pruebas, siempre use esta URL", + "debugUrlCopy": "Haz clic para copiar", + "debugUrlCopied": "¡Copiado!", + "debugUrlPrivateAddressWarning": "Esta URL parece ser una dirección interna, lo que puede hacer que las solicitudes del webhook fallen. Puede cambiar TRIGGER_URL a una dirección pública.", + "errorHandling": "Manejo de errores", + "errorStrategy": "Manejo de errores", + "responseConfiguration": "Respuesta", + "asyncMode": "Modo Asíncrono", + "statusCode": "Código de estado", + "responseBody": "Cuerpo de la respuesta", + "responseBodyPlaceholder": "Escribe aquí el cuerpo de tu respuesta", + "headers": "Encabezados", + "validation": { + "webhookUrlRequired": "Se requiere la URL del webhook", + "invalidParameterType": "Tipo de parámetro inválido \"{{type}}\" para el parámetro \"{{name}}\"" + } + } + }, + "tracing": { + "stopBy": "Pásate por {{user}}" + }, + "variableReference": { + "noAvailableVars": "No hay variables disponibles", + "assignedVarsDescription": "Las variables asignadas deben ser variables grabables, como", + "noVarsForOperation": "No hay variables disponibles para la asignación con la operación seleccionada.", + "noAssignedVars": "No hay variables asignadas disponibles", + "conversationVars": "Variables de conversación" + }, + "versionHistory": { + "filter": { + "onlyYours": "Solo tuyo", + "onlyShowNamedVersions": "Solo muestra versiones nombradas", + "empty": "No se encontró un historial de versiones coincidente.", + "reset": "Restablecer filtro", + "all": "Todo" + }, + "editField": { + "titleLengthLimit": "El título no puede exceder {{limit}} caracteres", + "title": "Título", + "releaseNotesLengthLimit": "Las notas de lanzamiento no pueden exceder {{limit}} caracteres", + "releaseNotes": "Notas de Lanzamiento" + }, + "action": { + "deleteSuccess": "Versión eliminada", + "updateSuccess": "Versión actualizada", + "restoreFailure": "Error al restaurar la versión", + "deleteFailure": "Error al eliminar la versión", + "updateFailure": "Error al actualizar la versión", + "restoreSuccess": "Versión restaurada", + "copyIdSuccess": "ID copiado en el portapapeles" + }, + "releaseNotesPlaceholder": "Describe lo que cambió", + "restorationTip": "Después de la restauración de la versión, el borrador actual será sobrescrito.", + "nameThisVersion": "Nombra esta versión", + "defaultName": "Versión sin título", + "title": "Versiones", + "deletionTip": "La eliminación es irreversible, por favor confirma.", + "currentDraft": "Borrador Actual", + "editVersionInfo": "Editar información de la versión", + "latest": "Último", + "copyId": "Copiar ID" + }, + "debug": { + "noData": { + "runThisNode": "Ejecuta este nodo", + "description": "Los resultados de la última ejecución se mostrarán aquí" + }, + "variableInspect": { + "trigger": { + "running": "Estado de ejecución de la caché", + "stop": "Detén la carrera", + "normal": "Inspeccionar Variable", + "cached": "Ver variables en caché", + "clear": "Claro" + }, + "envNode": "Medio ambiente", + "chatNode": "Conversación", + "systemNode": "Sistema", + "view": "Ver registro", + "clearAll": "Restablecer todo", + "emptyLink": "Aprender más", + "title": "Inspeccionar Variable", + "reset": "Restablecer al último valor ejecutado", + "resetConversationVar": "Restablecer la variable de conversación al valor predeterminado", + "clearNode": "Limpiar variable en caché", + "emptyTip": "Después de recorrer un nodo en el lienzo o ejecutar un nodo paso a paso, puedes ver el valor actual de la variable del nodo en Inspección de Variables.", + "edited": "Editado", + "export": "exportar", + "exportToolTip": "Exportar variable como archivo", + "largeData": "Datos grandes, vista previa de solo lectura. Exportar para verlo todo.", + "largeDataNoExport": "Datos grandes: solo vista previa parcial", + "listening": { + "title": "Escuchando eventos desde los activadores...", + "tip": "Ahora puedes simular disparadores de eventos enviando solicitudes de prueba al endpoint HTTP {{nodeName}} o usarlo como una URL de retorno de llamada para la depuración de eventos en tiempo real. Todos los resultados se pueden ver directamente en el Inspector de Variables.", + "tipPlugin": "Ahora puedes crear eventos en {{- pluginName}} y obtener los resultados de estos eventos en el Inspector de Variables.", + "tipSchedule": "Escuchando eventos de los desencadenadores de programación.\nPróxima ejecución programada: {{nextTriggerTime}}", + "tipFallback": "Esperando eventos desencadenantes entrantes. Las salidas aparecerán aquí.", + "defaultNodeName": "este disparador", + "defaultPluginName": "este activador de plugin", + "defaultScheduleTime": "No configurado", + "selectedTriggers": "disparadores seleccionados", + "stopButton": "Para" + } + }, + "lastRunTab": "Última ejecución", + "settingsTab": "Ajustes", + "relations": { + "dependents": "Dependientes", + "dependenciesDescription": "Nodos en los que se basa este nodo", + "dependentsDescription": "Nodos que dependen de este nodo", + "noDependencies": "Sin dependencias", + "noDependents": "Sin dependientes", + "dependencies": "Dependencias" + }, + "relationsTab": "Relaciones", + "noLastRunFound": "No se encontró ninguna ejecución anterior", + "copyLastRunError": "No se pudo copiar las entradas de la última ejecución", + "copyLastRun": "Copiar última ejecución", + "noMatchingInputsFound": "No se encontraron entradas coincidentes de la última ejecución.", + "lastOutput": "Última salida", + "lastRunInputsCopied": "{{count}} entrada(s) copiadas de la última ejecución" + }, + "sidebar": { + "exportWarning": "Exportar la versión guardada actual", + "exportWarningDesc": "Esto exportará la versión guardada actual de tu flujo de trabajo. Si tienes cambios no guardados en el editor, guárdalos primero utilizando la opción de exportar en el lienzo del flujo de trabajo." + }, + "publishLimit": { + "startNodeTitlePrefix": "Actualizar a", + "startNodeTitleSuffix": "desbloquear disparadores ilimitados por flujo de trabajo", + "startNodeDesc": "Has alcanzado el límite de 2 desencadenadores por flujo de trabajo para este plan. Actualiza para publicar este flujo de trabajo." + }, + "error": { + "startNodeRequired": "Por favor, agregue primero un nodo de inicio antes de {{operation}}", + "operations": { + "connectingNodes": "conectando nodos", + "addingNodes": "agregando nodos", + "modifyingWorkflow": "modificando el flujo de trabajo", + "updatingWorkflow": "actualizando flujo de trabajo" + } + }, + "customWebhook": "Webhook personalizado", + "difyTeam": "Equipo Dify", + "triggerStatus": { + "enabled": "DISPARADOR", + "disabled": "DISPARADOR • DESACTIVADO" + }, + "entryNodeStatus": { + "enabled": "INICIAR", + "disabled": "INICIAR • DESACTIVADO" + }, + "onboarding": { + "title": "Selecciona un nodo de inicio para comenzar", + "description": "Los diferentes nodos iniciales tienen distintas capacidades. No te preocupes, siempre puedes cambiarlos más adelante.", + "userInputFull": "Entrada del usuario (nodo de inicio original)", + "userInputDescription": "Nodo de inicio que permite establecer variables de entrada del usuario, con capacidades de herramienta para aplicación web, API de servicio, servidor MCP y flujo de trabajo.", + "trigger": "Disparador", + "triggerDescription": "Los desencadenantes pueden servir como el nodo inicial de un flujo de trabajo, como tareas programadas, webhooks personalizados o integraciones con otras aplicaciones.", + "back": "Atrás", + "learnMore": "Aprender más", + "aboutStartNode": "sobre el nodo de inicio.", + "escTip": { + "press": "Prensa", + "key": "esc", + "toDismiss": "despedir" + } + } +} diff --git a/web/i18n/es-ES/workflow.ts b/web/i18n/es-ES/workflow.ts deleted file mode 100644 index ab853882f5..0000000000 --- a/web/i18n/es-ES/workflow.ts +++ /dev/null @@ -1,1296 +0,0 @@ -const translation = { - common: { - undo: 'Deshacer', - redo: 'Rehacer', - editing: 'Editando', - autoSaved: 'Guardado automático', - unpublished: 'No publicado', - published: 'Publicado', - publish: 'Publicar', - update: 'Actualizar', - run: 'Ejecutar prueba', - running: 'Ejecutando', - inRunMode: 'En modo de ejecución', - inPreview: 'En vista previa', - inPreviewMode: 'En modo de vista previa', - preview: 'Vista previa', - viewRunHistory: 'Ver historial de ejecución', - runHistory: 'Historial de ejecución', - goBackToEdit: 'Volver al editor', - conversationLog: 'Registro de conversación', - debugAndPreview: 'Vista previa', - restart: 'Reiniciar', - currentDraft: 'Borrador actual', - currentDraftUnpublished: 'Borrador actual no publicado', - latestPublished: 'Último publicado', - publishedAt: 'Publicado el', - restore: 'Restaurar', - runApp: 'Ejecutar aplicación', - batchRunApp: 'Ejecutar aplicación en lote', - accessAPIReference: 'Acceder a la referencia de la API', - embedIntoSite: 'Insertar en el sitio', - addTitle: 'Agregar título...', - addDescription: 'Agregar descripción...', - noVar: 'Sin variable', - searchVar: 'Buscar variable', - variableNamePlaceholder: 'Nombre de la variable', - setVarValuePlaceholder: 'Establecer variable', - needConnectTip: 'Este paso no está conectado a nada', - maxTreeDepth: 'Límite máximo de {{depth}} nodos por rama', - workflowProcess: 'Proceso de flujo de trabajo', - notRunning: 'Aún no se está ejecutando', - previewPlaceholder: 'Ingrese contenido en el cuadro de abajo para comenzar a depurar el Chatbot', - effectVarConfirm: { - title: 'Eliminar variable', - content: 'La variable se utiliza en otros nodos. ¿Aún quieres eliminarla?', - }, - insertVarTip: 'Presiona la tecla \'/\' para insertar rápidamente', - processData: 'Procesar datos', - input: 'Entrada', - output: 'Salida', - jinjaEditorPlaceholder: 'Escribe \'/\' o \'{\' para insertar una variable', - viewOnly: 'Solo vista', - showRunHistory: 'Mostrar historial de ejecución', - enableJinja: 'Habilitar soporte de plantillas Jinja', - learnMore: 'Más información', - copy: 'Copiar', - duplicate: 'Duplicar', - pasteHere: 'Pegar aquí', - pointerMode: 'Modo puntero', - handMode: 'Modo mano', - model: 'Modelo', - workflowAsTool: 'Flujo de trabajo como herramienta', - configureRequired: 'Configuración requerida', - configure: 'Configurar', - manageInTools: 'Administrar en Herramientas', - workflowAsToolTip: 'Se requiere la reconfiguración de la herramienta después de la actualización del flujo de trabajo.', - viewDetailInTracingPanel: 'Ver detalles', - syncingData: 'Sincronizando datos, solo unos segundos.', - importDSL: 'Importar DSL', - importDSLTip: 'El borrador actual se sobrescribirá. Exporta el flujo de trabajo como respaldo antes de importar.', - backupCurrentDraft: 'Respaldar borrador actual', - chooseDSL: 'Elegir archivo DSL (yml)', - overwriteAndImport: 'Sobrescribir e importar', - importFailure: 'Error al importar', - importSuccess: 'Importación exitosa', - parallelTip: { - click: { - title: 'Clic', - desc: 'Para agregar', - }, - drag: { - title: 'Arrastrar', - desc: 'Para conectarse', - }, - limit: 'El paralelismo se limita a {{num}} ramas.', - depthLimit: 'Límite de capa de anidamiento paralelo de capas {{num}}', - }, - disconnect: 'Desconectar', - jumpToNode: 'Saltar a este nodo', - addParallelNode: 'Agregar nodo paralelo', - parallel: 'PARALELO', - branch: 'RAMA', - fileUploadTip: 'Las funciones de carga de imágenes se han actualizado a la carga de archivos.', - ImageUploadLegacyTip: 'Ahora puede crear variables de tipo de archivo en el formulario de inicio. Ya no admitiremos la función de carga de imágenes en el futuro.', - importWarning: 'Cautela', - importWarningDetails: 'La diferencia de versión de DSL puede afectar a ciertas características', - openInExplore: 'Abrir en Explorar', - onFailure: 'Sobre el fracaso', - addFailureBranch: 'Agregar rama de error', - noHistory: 'Sin historia', - loadMore: 'Cargar más flujos de trabajo', - versionHistory: 'Historial de versiones', - exportSVG: 'Exportar como SVG', - exitVersions: 'Versiones de salida', - exportJPEG: 'Exportar como JPEG', - exportPNG: 'Exportar como PNG', - publishUpdate: 'Publicar actualización', - exportImage: 'Exportar imagen', - needAnswerNode: 'Se debe agregar el nodo de respuesta', - needOutputNode: 'Se debe agregar el nodo de Salida', - addBlock: 'Agregar nodo', - tagBound: 'Número de aplicaciones que utilizan esta etiqueta', - currentView: 'Vista actual', - currentWorkflow: 'Flujo de trabajo actual', - moreActions: 'Más acciones', - listening: 'Escucha', - chooseStartNodeToRun: 'Elige el nodo de inicio para ejecutar', - runAllTriggers: 'Ejecutar todos los desencadenadores', - features: 'Características', - featuresDescription: 'Mejorar la experiencia del usuario en la aplicación web', - featuresDocLink: 'Aprender más', - needAdd: 'Se debe añadir el nodo {{node}}', - needStartNode: 'Se debe añadir al menos un nodo de inicio', - workflowAsToolDisabledHint: 'Publica el flujo de trabajo más reciente y asegúrate de que haya un nodo de Entrada de Usuario conectado antes de configurarlo como una herramienta.', - }, - env: { - envPanelTitle: 'Variables de Entorno', - envDescription: 'Las variables de entorno se pueden utilizar para almacenar información privada y credenciales. Son de solo lectura y se pueden separar del archivo DSL durante la exportación.', - envPanelButton: 'Añadir Variable', - modal: { - title: 'Añadir Variable de Entorno', - editTitle: 'Editar Variable de Entorno', - type: 'Tipo', - name: 'Nombre', - namePlaceholder: 'nombre de env', - value: 'Valor', - valuePlaceholder: 'valor de env', - secretTip: 'Se utiliza para definir información o datos sensibles, con configuraciones DSL configuradas para prevenir fugas.', - description: 'Descripción', - descriptionPlaceholder: 'Describa la variable', - }, - export: { - title: '¿Exportar variables de entorno secretas?', - checkbox: 'Exportar valores secretos', - ignore: 'Exportar DSL', - export: 'Exportar DSL con valores secretos', - }, - }, - globalVar: { - title: 'Variables del sistema', - description: 'Las variables del sistema son variables globales que cualquier nodo puede usar sin conexiones cuando el tipo es correcto, como el ID del usuario final y el ID del flujo de trabajo.', - fieldsDescription: { - conversationId: 'ID de la conversación', - dialogCount: 'Número de conversaciones', - userId: 'ID de usuario', - triggerTimestamp: 'Marca de tiempo de inicio de la aplicación', - appId: 'ID de la aplicación', - workflowId: 'ID del flujo de trabajo', - workflowRunId: 'ID de ejecución del flujo de trabajo', - }, - }, - chatVariable: { - panelTitle: 'Variables de Conversación', - panelDescription: 'Las Variables de Conversación se utilizan para almacenar información interactiva que el LLM necesita recordar, incluyendo el historial de conversación, archivos subidos y preferencias del usuario. Son de lectura y escritura.', - docLink: 'Visite nuestra documentación para más información.', - button: 'Añadir Variable', - modal: { - title: 'Añadir Variable de Conversación', - editTitle: 'Editar Variable de Conversación', - name: 'Nombre', - namePlaceholder: 'Nombre de la variable', - type: 'Tipo', - value: 'Valor Predeterminado', - valuePlaceholder: 'Valor predeterminado, dejar en blanco para no establecer', - description: 'Descripción', - descriptionPlaceholder: 'Describa la variable', - editInJSON: 'Editar en JSON', - oneByOne: 'Añadir uno por uno', - editInForm: 'Editar en Formulario', - arrayValue: 'Valor', - addArrayValue: 'Añadir Valor', - objectKey: 'Clave', - objectType: 'Tipo', - objectValue: 'Valor Predeterminado', - }, - storedContent: 'Contenido almacenado', - updatedAt: 'Actualizado el ', - }, - changeHistory: { - title: 'Historial de cambios', - placeholder: 'Aún no has realizado cambios', - clearHistory: 'Borrar historial', - hint: 'Sugerencia', - hintText: 'Tus acciones de edición se registran en un historial de cambios, que se almacena en tu dispositivo durante esta sesión. Este historial se borrará cuando salgas del editor.', - stepBackward_one: '{{count}} paso hacia atrás', - stepBackward_other: '{{count}} pasos hacia atrás', - stepForward_one: '{{count}} paso hacia adelante', - stepForward_other: '{{count}} pasos hacia adelante', - sessionStart: 'Inicio de sesión', - currentState: 'Estado actual', - noteAdd: 'Nota agregada', - noteChange: 'Nota cambiada', - noteDelete: 'Nota eliminada', - nodeTitleChange: 'Título del nodo cambiado', - nodeAdd: 'Nodo añadido', - nodePaste: 'Nodo pegado', - nodeDragStop: 'Nodo movido', - nodeConnect: 'Nodo conectado', - edgeDelete: 'Nodo desconectado', - nodeDelete: 'Nodo eliminado', - nodeChange: 'Nodo cambiado', - nodeDescriptionChange: 'Descripción del nodo cambiada', - nodeResize: 'Nodo redimensionado', - }, - errorMsg: { - fieldRequired: 'Se requiere {{field}}', - authRequired: 'Se requiere autorización', - invalidJson: '{{field}} no es un JSON válido', - fields: { - variable: 'Nombre de la variable', - variableValue: 'Valor de la variable', - code: 'Código', - model: 'Modelo', - rerankModel: 'Modelo de reordenamiento', - visionVariable: 'Variable de visión', - }, - invalidVariable: 'Variable no válida', - rerankModelRequired: 'Antes de activar el modelo de reclasificación, confirme que el modelo se ha configurado correctamente en la configuración.', - toolParameterRequired: '{{campo}}: el parámetro [{{param}}] es obligatorio', - noValidTool: '{{campo}} no se ha seleccionado ninguna herramienta válida', - startNodeRequired: 'Por favor, agregue primero un nodo de inicio antes de {{operation}}', - }, - singleRun: { - testRun: 'Ejecución de prueba', - startRun: 'Iniciar ejecución', - running: 'Ejecutando', - testRunIteration: 'Iteración de ejecución de prueba', - back: 'Atrás', - iteration: 'Iteración', - loop: 'Bucle', - preparingDataSource: 'Preparar el origen de datos', - reRun: 'Repetición', - }, - tabs: { - 'tools': 'Herramientas', - 'allTool': 'Todos', - 'customTool': 'Personalizadas', - 'workflowTool': 'Flujo de trabajo', - 'question-understand': 'Entender pregunta', - 'logic': 'Lógica', - 'transform': 'Transformar', - 'utilities': 'Utilidades', - 'noResult': 'No se encontraron coincidencias', - 'searchTool': 'Herramienta de búsqueda', - 'agent': 'Estrategia del agente', - 'plugin': 'Plugin', - 'searchBlock': 'Buscar nodo', - 'blocks': 'Nodos', - 'addAll': 'Agregar todo', - 'allAdded': 'Todo añadido', - 'sources': 'Fuentes', - 'searchDataSource': 'Fuente de datos de búsqueda', - 'start': 'Iniciar', - 'searchTrigger': 'Buscar desencadenantes...', - 'allTriggers': 'Todos los desencadenantes', - 'noPluginsFound': 'No se encontraron complementos', - 'requestToCommunity': 'Solicitudes a la comunidad', - 'featuredTools': 'Destacado', - 'showMoreFeatured': 'Mostrar más', - 'showLessFeatured': 'Mostrar menos', - 'installed': 'Instalado', - 'pluginByAuthor': 'Por {{author}}', - 'usePlugin': 'Seleccionar herramienta', - 'hideActions': 'Ocultar herramientas', - 'noFeaturedPlugins': 'Descubre más herramientas en el Marketplace', - 'noFeaturedTriggers': 'Descubre más desencadenantes en el Marketplace', - 'startDisabledTip': 'El nodo activador y el nodo de entrada del usuario son mutuamente excluyentes.', - }, - blocks: { - 'start': 'Inicio', - 'end': 'Salida', - 'answer': 'Respuesta', - 'llm': 'LLM', - 'knowledge-retrieval': 'Recuperación de conocimiento', - 'question-classifier': 'Clasificador de preguntas', - 'if-else': 'SI/SINO', - 'code': 'Código', - 'template-transform': 'Plantilla', - 'http-request': 'Solicitud HTTP', - 'variable-assigner': 'Asignador de variables', - 'variable-aggregator': 'Agregador de variables', - 'assigner': 'Asignador de Variables', - 'iteration-start': 'Inicio de iteración', - 'iteration': 'Iteración', - 'parameter-extractor': 'Extractor de parámetros', - 'document-extractor': 'Extractor de documentos', - 'list-operator': 'Operador de lista', - 'agent': 'Agente', - 'loop-end': 'Salir del bucle', - 'loop': 'Bucle', - 'loop-start': 'Inicio del bucle', - 'knowledge-index': 'Knowledge base', - 'datasource': 'Fuente de datos', - 'originalStartNode': 'nodo inicial original', - 'trigger-schedule': 'Disparador de horario', - 'trigger-webhook': 'Disparador de Webhook', - 'trigger-plugin': 'Disparador de complemento', - }, - blocksAbout: { - 'start': 'Define los parámetros iniciales para iniciar un flujo de trabajo', - 'end': 'Define la salida y el tipo de resultado de un flujo de trabajo', - 'answer': 'Define el contenido de respuesta de una conversación de chat', - 'llm': 'Invoca modelos de lenguaje grandes para responder preguntas o procesar lenguaje natural', - 'knowledge-retrieval': 'Te permite consultar contenido de texto relacionado con las preguntas de los usuarios desde el conocimiento', - 'question-classifier': 'Define las condiciones de clasificación de las preguntas de los usuarios, LLM puede definir cómo progresa la conversación en función de la descripción de clasificación', - 'if-else': 'Te permite dividir el flujo de trabajo en dos ramas basadas en condiciones SI/SINO', - 'code': 'Ejecuta un fragmento de código Python o NodeJS para implementar lógica personalizada', - 'template-transform': 'Convierte datos en una cadena utilizando la sintaxis de plantillas Jinja', - 'http-request': 'Permite enviar solicitudes al servidor a través del protocolo HTTP', - 'variable-assigner': 'Agrega variables de múltiples ramas en una sola variable para configurar de manera unificada los nodos descendentes.', - 'assigner': 'El nodo de asignación de variables se utiliza para asignar valores a variables escribibles (como variables de conversación).', - 'variable-aggregator': 'Agrega variables de múltiples ramas en una sola variable para configurar de manera unificada los nodos descendentes.', - 'iteration': 'Realiza múltiples pasos en un objeto de lista hasta que se generen todos los resultados.', - 'parameter-extractor': 'Utiliza LLM para extraer parámetros estructurados del lenguaje natural para invocaciones de herramientas o solicitudes HTTP.', - 'list-operator': 'Se utiliza para filtrar u ordenar el contenido de la matriz.', - 'document-extractor': 'Se utiliza para analizar documentos cargados en contenido de texto que es fácilmente comprensible por LLM.', - 'agent': 'Invocar modelos de lenguaje de gran tamaño para responder preguntas o procesar el lenguaje natural', - 'loop-end': 'Equivalente a "romper". Este nodo no tiene elementos de configuración. Cuando el cuerpo del bucle alcanza este nodo, el bucle termina.', - 'loop': 'Ejecuta un bucle de lógica hasta que se cumpla la condición de terminación o se alcance el conteo máximo de bucles.', - 'knowledge-index': 'Base de conocimientos Acerca de', - 'datasource': 'Fuente de datos Acerca de', - 'trigger-schedule': 'Disparador de flujo de trabajo basado en tiempo que inicia flujos de trabajo según un horario', - 'trigger-webhook': 'El disparador de Webhook recibe envíos HTTP de sistemas de terceros para activar automáticamente flujos de trabajo.', - 'trigger-plugin': 'Disparador de integración de terceros que inicia flujos de trabajo a partir de eventos de plataformas externas', - }, - operator: { - zoomIn: 'Acercar', - zoomOut: 'Alejar', - zoomTo50: 'Zoom al 50%', - zoomTo100: 'Zoom al 100%', - zoomToFit: 'Ajustar al tamaño', - alignTop: 'Arriba', - alignBottom: 'Abajo', - alignNodes: 'Alinear nodos', - alignCenter: 'Centro', - selectionAlignment: 'Alineación de selección', - horizontal: 'Horizontal', - distributeHorizontal: 'Espaciar horizontalmente', - vertical: 'Vertical', - distributeVertical: 'Espaciar verticalmente', - alignMiddle: 'Centro', - alignLeft: 'Izquierda', - alignRight: 'Derecha', - }, - panel: { - userInputField: 'Campo de entrada del usuario', - helpLink: 'Ayuda', - about: 'Acerca de', - createdBy: 'Creado por ', - nextStep: 'Siguiente paso', - runThisStep: 'Ejecutar este paso', - checklist: 'Lista de verificación', - checklistTip: 'Asegúrate de resolver todos los problemas antes de publicar', - checklistResolved: 'Se resolvieron todos los problemas', - change: 'Cambiar', - optional: '(opcional)', - organizeBlocks: 'Organizar nodos', - addNextStep: 'Agrega el siguiente paso en este flujo de trabajo', - changeBlock: 'Cambiar Nodo', - selectNextStep: 'Seleccionar siguiente paso', - maximize: 'Maximizar Canvas', - minimize: 'Salir de pantalla completa', - scrollToSelectedNode: 'Desplácese hasta el nodo seleccionado', - optional_and_hidden: '(opcional y oculto)', - goTo: 'Ir a', - startNode: 'Nodo de inicio', - openWorkflow: 'Abrir flujo de trabajo', - }, - nodes: { - common: { - outputVars: 'Variables de salida', - insertVarTip: 'Insertar variable', - memory: { - memory: 'Memoria', - memoryTip: 'Configuración de memoria de chat', - windowSize: 'Tamaño de ventana', - conversationRoleName: 'Nombre del rol de conversación', - user: 'Prefijo de usuario', - assistant: 'Prefijo de asistente', - }, - memories: { - title: 'Memorias', - tip: 'Memoria de chat', - builtIn: 'Incorporada', - }, - errorHandle: { - none: { - title: 'Ninguno', - desc: 'El nodo dejará de ejecutarse si se produce una excepción y no se controla', - }, - defaultValue: { - title: 'Valor predeterminado', - desc: 'Cuando se produzca un error, especifique un contenido de salida estático.', - tip: 'En caso de error, devolverá un valor inferior.', - inLog: 'Excepción de nodo, salida según los valores predeterminados.', - output: 'Valor predeterminado de salida', - }, - failBranch: { - title: 'Rama de error', - desc: 'Cuando se produce un error, ejecutará la rama de excepción', - customize: 'Vaya al lienzo para personalizar la lógica de la rama de error.', - customizeTip: 'Cuando se activa la rama fail, las excepciones lanzadas por los nodos no finalizarán el proceso. En su lugar, ejecutará automáticamente la rama de error predefinida, lo que le permitirá proporcionar de forma flexible mensajes de error, informes, correcciones u omitir acciones.', - inLog: 'Node, ejecutará automáticamente la rama de error. La salida del nodo devolverá un tipo de error y un mensaje de error y los pasará a la versión posterior.', - }, - partialSucceeded: { - tip: 'Hay nodos {{num}} en el proceso que se ejecutan de manera anormal, vaya a rastreo para verificar los registros.', - }, - title: 'Manejo de errores', - tip: 'Estrategia de control de excepciones, que se desencadena cuando un nodo encuentra una excepción.', - }, - retry: { - retryOnFailure: 'Volver a intentarlo en caso de error', - maxRetries: 'Número máximo de reintentos', - retryInterval: 'Intervalo de reintento', - retryTimes: 'Reintentar {{times}} veces en caso de error', - retrying: 'Reintentando...', - retrySuccessful: 'Volver a intentarlo correctamente', - retryFailed: 'Error en el reintento', - retryFailedTimes: '{{veces}} reintentos fallidos', - times: 'veces', - ms: 'Sra.', - retries: '{{num}} Reintentos', - retry: 'Reintentar', - }, - typeSwitch: { - input: 'Valor de entrada', - variable: 'Usa la variable', - }, - inputVars: 'Variables de entrada', - pluginNotInstalled: 'El complemento no está instalado', - }, - start: { - required: 'requerido', - inputField: 'Campo de entrada', - builtInVar: 'Variables incorporadas', - outputVars: { - query: 'Entrada del usuario', - memories: { - des: 'Historial de conversación', - type: 'tipo de mensaje', - content: 'contenido del mensaje', - }, - files: 'Lista de archivos', - }, - noVarTip: 'Establece las entradas que se pueden utilizar en el flujo de trabajo', - }, - end: { - outputs: 'Salidas', - output: { - type: 'tipo de salida', - variable: 'variable de salida', - }, - type: { - 'none': 'Ninguno', - 'plain-text': 'Texto sin formato', - 'structured': 'Estructurado', - }, - }, - answer: { - answer: 'Respuesta', - outputVars: 'Variables de salida', - }, - llm: { - model: 'modelo', - variables: 'variables', - context: 'contexto', - contextTooltip: 'Puedes importar el conocimiento como contexto', - notSetContextInPromptTip: 'Para habilitar la función de contexto, completa la variable de contexto en PROMPT.', - prompt: 'indicación', - roleDescription: { - system: 'Proporciona instrucciones generales para la conversación', - user: 'Proporciona instrucciones, consultas o cualquier entrada basada en texto al modelo', - assistant: 'Las respuestas del modelo basadas en los mensajes del usuario', - }, - addMessage: 'Agregar mensaje', - vision: 'visión', - files: 'Archivos', - resolution: { - name: 'Resolución', - high: 'Alta', - low: 'Baja', - }, - outputVars: { - output: 'Generar contenido', - reasoning_content: 'Contenido de razonamiento', - usage: 'Información de uso del modelo', - }, - singleRun: { - variable: 'Variable', - }, - sysQueryInUser: 'se requiere sys.query en el mensaje del usuario', - jsonSchema: { - warningTips: { - saveSchema: 'Por favor, termina de editar el campo actual antes de guardar el esquema.', - }, - showAdvancedOptions: 'Mostrar opciones avanzadas', - addField: 'Agregar campo', - generatedResult: 'Resultado Generado', - generateJsonSchema: 'Generar esquema JSON', - apply: 'Aplicar', - descriptionPlaceholder: 'Agregar descripción', - stringValidations: 'Validaciones de cadenas', - addChildField: 'Agregar campo de niño', - back: 'Atrás', - promptTooltip: 'Convierta la descripción del texto en una estructura de esquema JSON estandarizada.', - doc: 'Aprender más sobre la salida estructurada', - generating: 'Generando esquema JSON...', - fieldNamePlaceholder: 'Nombre del campo', - resultTip: 'Aquí está el resultado generado. Si no estás satisfecho, puedes regresar y modificar tu solicitud.', - title: 'Esquema de salida estructurada', - regenerate: 'Regenerar', - instruction: 'Instrucción', - generationTip: 'Puedes usar lenguaje natural para crear rápidamente un esquema JSON.', - promptPlaceholder: 'Describe tu esquema JSON...', - required: 'requerido', - generate: 'Generar', - import: 'Importar desde JSON', - resetDefaults: 'Restablecer', - }, - reasoningFormat: { - tagged: 'Mantén las etiquetas de pensamiento', - separated: 'Separar etiquetas de pensamiento', - title: 'Habilitar la separación de etiquetas de razonamiento', - tooltip: 'Extraer contenido de las etiquetas de pensamiento y almacenarlo en el campo reasoning_content.', - }, - }, - knowledgeRetrieval: { - queryVariable: 'Variable de consulta', - knowledge: 'Conocimiento', - outputVars: { - output: 'Datos segmentados de recuperación', - content: 'Contenido segmentado', - title: 'Título segmentado', - icon: 'Ícono segmentado', - url: 'URL segmentada', - metadata: 'Metadatos adicionales', - files: 'Archivos recuperados', - }, - metadata: { - options: { - disabled: { - subTitle: 'No habilitar el filtrado de metadatos', - title: 'Deshabilitado', - }, - automatic: { - subTitle: 'Generar automáticamente condiciones de filtrado de metadatos basadas en la consulta del usuario', - desc: 'Generar automáticamente condiciones de filtrado de metadatos basadas en la variable de consulta', - title: 'Automático', - }, - manual: { - title: 'Manual', - subTitle: 'Añadir manualmente condiciones de filtro de metadatos', - }, - }, - panel: { - conditions: 'Condiciones', - title: 'Condiciones del filtro de metadatos', - add: 'Agregar condición', - select: 'Seleccionar variable...', - datePlaceholder: 'Elige una hora...', - placeholder: 'Ingrese valor', - search: 'Buscar metadatos', - }, - title: 'Filtrado de Metadatos', - tip: 'El filtrado de metadatos es el proceso de utilizar atributos de metadatos (como etiquetas, categorías o permisos de acceso) para refinar y controlar la recuperación de información relevante dentro de un sistema.', - }, - queryText: 'Texto de consulta', - queryAttachment: 'Consultar imágenes', - }, - http: { - inputVars: 'Variables de entrada', - api: 'API', - apiPlaceholder: 'Ingresa la URL, escribe \'/\' para insertar una variable', - notStartWithHttp: 'La API debe comenzar con http:// o https://', - key: 'Clave', - value: 'Valor', - bulkEdit: 'Edición masiva', - keyValueEdit: 'Edición clave-valor', - headers: 'Encabezados', - params: 'Parámetros', - body: 'Cuerpo', - outputVars: { - body: 'Contenido de la respuesta', - statusCode: 'Código de estado de la respuesta', - headers: 'Lista de encabezados de respuesta en formato JSON', - files: 'Lista de archivos', - }, - authorization: { - 'authorization': 'Autorización', - 'authorizationType': 'Tipo de autorización', - 'no-auth': 'Ninguna', - 'api-key': 'Clave de API', - 'auth-type': 'Tipo de autenticación', - 'basic': 'Básica', - 'bearer': 'Bearer', - 'custom': 'Personalizada', - 'api-key-title': 'Clave de API', - 'header': 'Encabezado', - }, - insertVarPlaceholder: 'escribe \'/\' para insertar una variable', - timeout: { - title: 'Tiempo de espera', - connectLabel: 'Tiempo de espera de conexión', - connectPlaceholder: 'Ingresa el tiempo de espera de conexión en segundos', - readLabel: 'Tiempo de espera de lectura', - readPlaceholder: 'Ingresa el tiempo de espera de lectura en segundos', - writeLabel: 'Tiempo de espera de escritura', - writePlaceholder: 'Ingresa el tiempo de espera de escritura en segundos', - }, - type: 'Tipo', - binaryFileVariable: 'Variable de archivo binario', - extractListPlaceholder: 'Introduzca el índice de elementos de la lista, escriba \'/\' insertar variable', - curl: { - title: 'Importar desde cURL', - placeholder: 'Pegar la cadena cURL aquí', - }, - verifySSL: { - title: 'Verificar el certificado SSL', - warningTooltip: 'Deshabilitar la verificación SSL no se recomienda para entornos de producción. Esto solo debe utilizarse en desarrollo o pruebas, ya que hace que la conexión sea vulnerable a amenazas de seguridad como ataques de intermediario.', - }, - }, - code: { - inputVars: 'Variables de entrada', - outputVars: 'Variables de salida', - advancedDependencies: 'Dependencias avanzadas', - advancedDependenciesTip: 'Agrega algunas dependencias precargadas que consumen más tiempo o no son incorporadas por defecto aquí', - searchDependencies: 'Buscar dependencias', - syncFunctionSignature: 'Sincronizar la firma de la función con el código', - }, - templateTransform: { - inputVars: 'Variables de entrada', - code: 'Código', - codeSupportTip: 'Solo admite Jinja2', - outputVars: { - output: 'Contenido transformado', - }, - }, - ifElse: { - if: 'Si', - else: 'Sino', - elseDescription: 'Se utiliza para definir la lógica que se debe ejecutar cuando no se cumple la condición del si.', - and: 'y', - or: 'o', - operator: 'Operador', - notSetVariable: 'Por favor, establece primero la variable', - comparisonOperator: { - 'contains': 'contiene', - 'not contains': 'no contiene', - 'start with': 'comienza con', - 'end with': 'termina con', - 'is': 'es', - 'is not': 'no es', - 'empty': 'está vacío', - 'not empty': 'no está vacío', - 'null': 'es nulo', - 'not null': 'no es nulo', - 'not in': 'no en', - 'in': 'en', - 'exists': 'Existe', - 'all of': 'Todos los', - 'not exists': 'no existe', - 'after': 'después', - 'before': 'antes', - }, - enterValue: 'Ingresa un valor', - addCondition: 'Agregar condición', - conditionNotSetup: 'Condición NO configurada', - selectVariable: 'Seleccionar variable...', - optionName: { - audio: 'Audio', - image: 'Imagen', - doc: 'Doc', - localUpload: 'Carga local', - video: 'Vídeo', - url: 'URL', - }, - select: 'Escoger', - addSubVariable: 'Sub Variable', - }, - variableAssigner: { - title: 'Asignar variables', - outputType: 'Tipo de salida', - varNotSet: 'Variable no establecida', - noVarTip: 'Agrega las variables que se asignarán', - type: { - string: 'Cadena', - number: 'Número', - object: 'Objeto', - array: 'Arreglo', - }, - aggregationGroup: 'Grupo de agregación', - aggregationGroupTip: 'Al habilitar esta función, el agregador de variables puede agregar múltiples conjuntos de variables.', - addGroup: 'Agregar grupo', - outputVars: { - varDescribe: 'Salida de {{groupName}}', - }, - setAssignVariable: 'Establecer variable asignada', - }, - assigner: { - 'assignedVariable': 'Variable Asignada', - 'writeMode': 'Modo de Escritura', - 'writeModeTip': 'Cuando la VARIABLE ASIGNADA es un array, el modo de anexar agrega al final.', - 'over-write': 'Sobrescribir', - 'append': 'Anexar', - 'plus': 'Más', - 'clear': 'Limpiar', - 'setVariable': 'Establecer Variable', - 'variable': 'Variable', - 'operations': { - 'clear': 'Claro', - '*=': '*=', - '-=': '-=', - 'title': 'Operación', - 'extend': 'Extender', - 'append': 'Añadir', - '+=': '+=', - 'over-write': 'Sobrescribir', - 'overwrite': 'Sobrescribir', - '/=': '/=', - 'set': 'Poner', - 'remove-last': 'Eliminar último', - 'remove-first': 'Eliminar primero', - }, - 'variables': 'Variables', - 'setParameter': 'Establecer parámetro...', - 'noVarTip': 'Haga clic en el botón "+" para agregar variables', - 'varNotSet': 'Variable NO establecida', - 'noAssignedVars': 'No hay variables asignadas disponibles', - 'selectAssignedVariable': 'Seleccione la variable asignada...', - 'assignedVarsDescription': 'Las variables asignadas deben ser variables grabables, como las variables de conversación.', - }, - tool: { - inputVars: 'Variables de entrada', - outputVars: { - text: 'Contenido generado por la herramienta', - files: { - title: 'Archivos generados por la herramienta', - type: 'Tipo de soporte. Ahora solo admite imágenes', - transfer_method: 'Método de transferencia. El valor es remote_url o local_file', - url: 'URL de la imagen', - upload_file_id: 'ID de archivo cargado', - }, - json: 'JSON generado por la herramienta', - }, - authorize: 'autorizar', - insertPlaceholder2: 'insertar variable', - settings: 'Ajustes', - insertPlaceholder1: 'Escribe o presiona', - }, - questionClassifiers: { - model: 'modelo', - inputVars: 'Variables de entrada', - outputVars: { - className: 'Nombre de la clase', - usage: 'Información de uso del modelo', - }, - class: 'Clase', - classNamePlaceholder: 'Escribe el nombre de tu clase', - advancedSetting: 'Configuración avanzada', - topicName: 'Nombre del tema', - topicPlaceholder: 'Escribe el nombre de tu tema', - addClass: 'Agregar clase', - instruction: 'Instrucción', - instructionTip: 'Input additional instructions to help the question classifier better understand how to categorize questions.', - instructionPlaceholder: 'Write your instruction', - }, - parameterExtractor: { - inputVar: 'Variable de entrada', - outputVars: { - isSuccess: 'Es éxito. En caso de éxito el valor es 1, en caso de fallo el valor es 0.', - errorReason: 'Motivo del error', - usage: 'Información de uso del modelo', - }, - extractParameters: 'Extraer parámetros', - importFromTool: 'Importar desde herramientas', - addExtractParameter: 'Agregar parámetro de extracción', - addExtractParameterContent: { - name: 'Nombre', - namePlaceholder: 'Nombre del parámetro de extracción', - type: 'Tipo', - typePlaceholder: 'Tipo de parámetro de extracción', - description: 'Descripción', - descriptionPlaceholder: 'Descripción del parámetro de extracción', - required: 'Requerido', - requiredContent: 'El campo requerido se utiliza solo como referencia para la inferencia del modelo, y no para la validación obligatoria de la salida del parámetro.', - }, - extractParametersNotSet: 'Parámetros de extracción no configurados', - instruction: 'Instrucción', - instructionTip: 'Ingrese instrucciones adicionales para ayudar al extractor de parámetros a entender cómo extraer parámetros.', - advancedSetting: 'Configuración avanzada', - reasoningMode: 'Modo de razonamiento', - reasoningModeTip: 'Puede elegir el modo de razonamiento apropiado basado en la capacidad del modelo para responder a instrucciones para llamadas de funciones o indicaciones.', - }, - iteration: { - deleteTitle: '¿Eliminar nodo de iteración?', - deleteDesc: 'Eliminar el nodo de iteración eliminará todos los nodos secundarios', - input: 'Entrada', - output: 'Variables de salida', - iteration_one: '{{count}} Iteración', - iteration_other: '{{count}} Iteraciones', - currentIteration: 'Iteración actual', - ErrorMethod: { - operationTerminated: 'Terminado', - continueOnError: 'Continuar en el error', - removeAbnormalOutput: 'eliminar-salida-anormal', - }, - comma: ',', - errorResponseMethod: 'Método de respuesta a errores', - error_one: '{{conteo}} Error', - parallelPanelDesc: 'En el modo paralelo, las tareas de la iteración admiten la ejecución en paralelo.', - MaxParallelismTitle: 'Máximo paralelismo', - error_other: '{{conteo}} Errores', - parallelMode: 'Modo paralelo', - parallelModeEnableDesc: 'En el modo paralelo, las tareas dentro de las iteraciones admiten la ejecución en paralelo. Puede configurar esto en el panel de propiedades a la derecha.', - parallelModeUpper: 'MODO PARALELO', - MaxParallelismDesc: 'El paralelismo máximo se utiliza para controlar el número de tareas ejecutadas simultáneamente en una sola iteración.', - answerNodeWarningDesc: 'Advertencia de modo paralelo: Los nodos de respuesta, las asignaciones de variables de conversación y las operaciones de lectura/escritura persistentes dentro de las iteraciones pueden provocar excepciones.', - parallelModeEnableTitle: 'Modo paralelo habilitado', - flattenOutput: 'Aplanar salida', - flattenOutputDesc: 'Cuando está habilitado, si todas las salidas de la iteración son arrays, se aplanarán en un solo array. Cuando está deshabilitado, las salidas mantendrán una estructura de array anidada.', - }, - note: { - addNote: 'Agregar nota', - editor: { - placeholder: 'Escribe tu nota...', - small: 'Pequeño', - medium: 'Mediano', - large: 'Grande', - bold: 'Negrita', - italic: 'Itálica', - strikethrough: 'Tachado', - link: 'Enlace', - openLink: 'Abrir', - unlink: 'Quitar enlace', - enterUrl: 'Introducir URL...', - invalidUrl: 'URL inválida', - bulletList: 'Lista de viñetas', - showAuthor: 'Mostrar autor', - }, - }, - docExtractor: { - outputVars: { - text: 'Texto extraído', - }, - learnMore: 'Aprende más', - supportFileTypes: 'Tipos de archivos de soporte: {{tipos}}.', - inputVar: 'Variable de entrada', - }, - listFilter: { - outputVars: { - first_record: 'Primer registro', - last_record: 'Último registro', - result: 'Filtrar resultado', - }, - filterCondition: 'Condición del filtro', - filterConditionComparisonValue: 'Valor de la condición de filtro', - inputVar: 'Variable de entrada', - desc: 'DESC', - limit: 'Arriba N', - filterConditionKey: 'Clave de condición de filtro', - orderBy: 'Ordenar por', - filterConditionComparisonOperator: 'Operador de comparación de condiciones de filtro', - asc: 'ASC', - selectVariableKeyPlaceholder: 'Seleccione la clave de subvariable', - extractsCondition: 'Extraiga el elemento N', - }, - agent: { - strategy: { - configureTip: 'Configure la estrategia de agentes.', - tooltip: 'Diferentes estrategias agentic determinan cómo el sistema planifica y ejecuta las llamadas a herramientas de varios pasos', - label: 'Estrategia Agentica', - shortLabel: 'Estrategia', - configureTipDesc: 'Después de configurar la estrategia agentica, este nodo cargará automáticamente las configuraciones restantes. La estrategia afectará el mecanismo de razonamiento de herramientas de varios pasos.', - selectTip: 'Seleccionar estrategia agentica', - searchPlaceholder: 'Estrategia de agentes de búsqueda', - }, - pluginInstaller: { - install: 'Instalar', - installing: 'Instalar', - }, - modelNotInMarketplace: { - manageInPlugins: 'Administrar en Plugins', - desc: 'Este modelo se instala desde el repositorio local o de GitHub. Úselo después de la instalación.', - title: 'Modelo no instalado', - }, - modelNotSupport: { - descForVersionSwitch: 'La versión del plugin instalado no proporciona este modelo. Haga clic para cambiar de versión.', - desc: 'La versión del plugin instalado no proporciona este modelo.', - title: 'Modelo no compatible', - }, - modelSelectorTooltips: { - deprecated: 'Este modelo está en desuso', - }, - outputVars: { - files: { - url: 'URL de la imagen', - title: 'Archivos generados por el agente', - upload_file_id: 'Cargar ID de archivo', - transfer_method: 'Método de transferencia. El valor es remote_url o local_file', - type: 'Tipo de soporte. Ahora solo admite imagen', - }, - json: 'JSON generado por el agente', - text: 'Contenido generado por el agente', - usage: 'Información de uso del modelo', - }, - checkList: { - strategyNotSelected: 'Estrategia no seleccionada', - }, - installPlugin: { - install: 'Instalar', - desc: 'A punto de instalar el siguiente plugin', - changelog: 'Registro de cambios', - title: 'Instalar plugin', - cancel: 'Cancelar', - }, - tools: 'Herramientas', - pluginNotFoundDesc: 'Este plugin se instala desde GitHub. Por favor, vaya a Plugins para reinstalar', - strategyNotFoundDesc: 'La versión del plugin instalado no proporciona esta estrategia.', - strategyNotInstallTooltip: '{{estrategia}} no está instalado', - modelNotInstallTooltip: 'Este modelo no está instalado', - maxIterations: 'Iteraciones máximas', - notAuthorized: 'No autorizado', - toolNotInstallTooltip: '{{herramienta}} no está instalada', - toolbox: 'caja de herramientas', - strategyNotSet: 'Estrategia agentica No establecida', - unsupportedStrategy: 'Estrategia no respaldada', - linkToPlugin: 'Enlace a los plugins', - learnMore: 'Aprende más', - configureModel: 'Configurar modelo', - pluginNotInstalled: 'Este plugin no está instalado', - model: 'modelo', - pluginNotInstalledDesc: 'Este plugin se instala desde GitHub. Por favor, vaya a Plugins para reinstalar', - strategyNotFoundDescAndSwitchVersion: 'La versión del plugin instalado no proporciona esta estrategia. Haga clic para cambiar de versión.', - toolNotAuthorizedTooltip: '{{herramienta}} No autorizado', - modelNotSelected: 'Modelo no seleccionado', - clickToViewParameterSchema: 'Haga clic para ver el esquema de parámetros', - parameterSchema: 'Esquema de Parámetros', - }, - loop: { - ErrorMethod: { - removeAbnormalOutput: 'Eliminar salida anormal', - operationTerminated: 'Terminado', - continueOnError: 'Continuar con el error', - }, - loopMaxCount: 'Conteo máximo de bucles', - output: 'Variable de Salida', - currentLoopCount: 'Contador de bucles actual: {{count}}', - currentLoop: 'Bucle de corriente', - loopNode: 'Nodo de bucle', - deleteDesc: 'Eliminar el nodo de bucle eliminará todos los nodos hijos', - totalLoopCount: 'Total de loops: {{count}}', - comma: ',', - finalLoopVariables: 'Variables del Bucle Final', - inputMode: 'Modo de entrada', - deleteTitle: '¿Eliminar nodo de bucle?', - setLoopVariables: 'Establecer variables dentro del alcance del bucle', - loop_other: '{{count}} bucles', - breakCondition: 'Condición de terminación del bucle', - loopMaxCountError: 'Por favor, introduce un conteo máximo de bucles válido, que varíe entre 1 y {{maxCount}}.', - exitConditionTip: 'Un nodo de bucle necesita al menos una condición de salida', - error_one: '{{count}} Error', - loop_one: '{{count}} Bucle', - initialLoopVariables: 'Variables de Bucle Iniciales', - errorResponseMethod: 'Método de respuesta de error', - breakConditionTip: 'Solo se pueden hacer referencia a las variables dentro de bucles con condiciones de terminación y variables de conversación.', - error_other: '{{count}} Errores', - loopVariables: 'Variables de bucle', - variableName: 'Nombre de Variable', - input: 'Entrada', - }, - dataSource: { - supportedFileFormats: 'Formatos de archivo compatibles', - add: 'Agregar origen de datos', - supportedFileFormatsPlaceholder: 'Extensión de archivo, e.g. doc', - }, - knowledgeBase: { - chunkStructureTip: { - learnMore: 'Aprende más', - title: 'Elija una estructura de fragmentos', - message: 'La base de conocimientos de Dify admite tres estructuras de fragmentación: General, Padre-hijo y Preguntas y respuestas. Cada base de conocimiento solo puede tener una estructura. La salida del nodo anterior debe alinearse con la estructura de fragmentos seleccionada. Tenga en cuenta que la elección de la estructura de fragmentación afecta a los métodos de índice disponibles.', - }, - chooseChunkStructure: 'Elegir una estructura de fragmentos', - indexMethodIsRequired: 'Se requiere el método de índice', - aboutRetrieval: 'sobre el método de recuperación.', - changeChunkStructure: 'Cambiar la estructura de fragmentos', - retrievalSettingIsRequired: 'Se requiere configuración de recuperación', - chunkStructure: 'Estructura de fragmentos', - chunkIsRequired: 'Se requiere una estructura de fragmentos', - chunksInput: 'Trozo', - chunksInputTip: 'La variable de entrada del nodo de la base de conocimientos es Chunks. El tipo de variable es un objeto con un esquema JSON específico que debe ser consistente con la estructura del fragmento seleccionado.', - embeddingModelIsRequired: 'Se requiere un modelo de incrustación', - rerankingModelIsRequired: 'Se requiere un modelo de reordenamiento', - chunksVariableIsRequired: 'La variable Chunks es obligatoria', - rerankingModelIsInvalid: 'El modelo de reordenación no es válido', - embeddingModelIsInvalid: 'El modelo de incrustación no es válido', - }, - triggerPlugin: { - authorized: 'autorizado', - notConfigured: 'No Configurado', - notAuthorized: 'No autorizado', - selectSubscription: 'Seleccionar suscripción', - availableSubscriptions: 'Suscripciones disponibles', - addSubscription: 'Agregar nueva suscripción', - removeSubscription: 'Cancelar suscripción', - subscriptionRemoved: 'Suscripción eliminada con éxito', - error: 'Error', - configuration: 'Configuración', - remove: 'Eliminar', - or: 'O', - useOAuth: 'Usar OAuth', - useApiKey: 'Usar clave API', - authenticationFailed: 'Autenticación fallida', - authenticationSuccess: 'Autenticación exitosa', - oauthConfigFailed: 'La configuración de OAuth falló', - configureOAuthClient: 'Configurar cliente OAuth', - oauthClientDescription: 'Configura las credenciales del cliente OAuth para habilitar la autenticación', - oauthClientSaved: 'Configuración del cliente OAuth guardada correctamente', - configureApiKey: 'Configurar clave API', - apiKeyDescription: 'Configurar las credenciales de la clave API para la autenticación', - apiKeyConfigured: 'Clave API configurada correctamente', - configurationFailed: 'La configuración falló', - failedToStart: 'Error al iniciar el flujo de autenticación', - credentialsVerified: 'Credenciales verificadas con éxito', - credentialVerificationFailed: 'Verificación de credenciales fallida', - verifyAndContinue: 'Verificar y continuar', - configureParameters: 'Configurar parámetros', - parametersDescription: 'Configurar parámetros y propiedades del disparador', - configurationComplete: 'Configuración completa', - configurationCompleteDescription: 'Tu disparador se ha configurado correctamente', - configurationCompleteMessage: 'Tu configuración de activadores ya está completa y lista para usar.', - parameters: 'Parámetros', - properties: 'Propiedades', - propertiesDescription: 'Propiedades de configuración adicionales para este disparador', - noConfigurationRequired: 'No se requiere configuración adicional para este disparador.', - subscriptionName: 'Nombre de la suscripción', - subscriptionNameDescription: 'Ingresa un nombre único para esta suscripción de activador', - subscriptionNamePlaceholder: 'Ingrese el nombre de la suscripción...', - subscriptionNameRequired: 'Se requiere el nombre de la suscripción', - subscriptionRequired: 'Se requiere suscripción', - }, - triggerSchedule: { - title: 'Horario', - nodeTitle: 'Disparador de horario', - notConfigured: 'No configurado', - useCronExpression: 'Usar expresión cron', - useVisualPicker: 'Usar selector visual', - frequency: { - label: 'FRECUENCIA', - hourly: 'Por hora', - daily: 'diario', - weekly: 'Semanal', - monthly: 'Mensual', - }, - selectFrequency: 'Seleccionar frecuencia', - frequencyLabel: 'Frecuencia', - nextExecution: 'Próxima ejecución', - weekdays: 'Días de la semana', - time: 'Tiempo', - cronExpression: 'Expresión Cron', - nextExecutionTime: 'PRÓXIMA HORA DE EJECUCIÓN', - nextExecutionTimes: 'Próximos 5 tiempos de ejecución', - startTime: 'Hora de inicio', - executeNow: 'Ejecución ahora', - selectDateTime: 'Seleccionar fecha y hora', - hours: 'Horas', - minutes: 'Minutos', - onMinute: 'En un minuto', - days: 'Días', - lastDay: 'Último día', - lastDayTooltip: 'No todos los meses tienen 31 días. Usa la opción \'último día\' para seleccionar el último día de cada mes.', - mode: 'Modo', - timezone: 'Zona horaria', - visualConfig: 'Configuración Visual', - monthlyDay: 'Día mensual', - executionTime: 'Tiempo de ejecución', - invalidTimezone: 'Zona horaria no válida', - invalidCronExpression: 'Expresión cron inválida', - noValidExecutionTime: 'No se puede calcular un tiempo de ejecución válido', - executionTimeCalculationError: 'Error al calcular los tiempos de ejecución', - invalidFrequency: 'Frecuencia inválida', - invalidStartTime: 'Hora de inicio no válida', - startTimeMustBeFuture: 'La hora de inicio debe ser en el futuro', - invalidTimeFormat: 'Formato de hora inválido (se esperaba HH:MM AM/PM)', - invalidWeekday: 'Día de la semana no válido: {{weekday}}', - invalidMonthlyDay: 'El día del mes debe estar entre 1 y 31 o "último"', - invalidOnMinute: 'El minuto debe estar entre 0 y 59', - invalidExecutionTime: 'Tiempo de ejecución inválido', - executionTimeMustBeFuture: 'El tiempo de ejecución debe estar en el futuro', - }, - triggerWebhook: { - title: 'Disparador de Webhook', - nodeTitle: '🔗 Disparador de Webhook', - configPlaceholder: 'La configuración del activador del webhook se implementará aquí', - webhookUrl: 'URL del webhook', - webhookUrlPlaceholder: 'Haz clic en generar para crear la URL del webhook', - generate: 'Generar', - copy: 'Copiar', - test: 'Prueba', - urlGenerated: 'URL del webhook generada con éxito', - urlGenerationFailed: 'No se pudo generar la URL del webhook', - urlCopied: 'URL copiada al portapapeles', - method: 'Método', - contentType: 'Tipo de contenido', - queryParameters: 'Parámetros de consulta', - headerParameters: 'Parámetros de encabezado', - requestBodyParameters: 'Parámetros del cuerpo de la solicitud', - parameterName: 'Nombre de la variable', - varName: 'Nombre de la variable', - varType: 'Tipo', - varNamePlaceholder: 'Ingrese el nombre de la variable...', - required: 'Requerido', - addParameter: 'Agregar', - addHeader: 'Agregar', - noParameters: 'No se han configurado parámetros', - noQueryParameters: 'No se han configurado parámetros de consulta', - noHeaders: 'No se han configurado encabezados', - noBodyParameters: 'No se configuraron parámetros de cuerpo', - debugUrlTitle: 'Para pruebas, siempre use esta URL', - debugUrlCopy: 'Haz clic para copiar', - debugUrlCopied: '¡Copiado!', - debugUrlPrivateAddressWarning: 'Esta URL parece ser una dirección interna, lo que puede hacer que las solicitudes del webhook fallen. Puede cambiar TRIGGER_URL a una dirección pública.', - errorHandling: 'Manejo de errores', - errorStrategy: 'Manejo de errores', - responseConfiguration: 'Respuesta', - asyncMode: 'Modo Asíncrono', - statusCode: 'Código de estado', - responseBody: 'Cuerpo de la respuesta', - responseBodyPlaceholder: 'Escribe aquí el cuerpo de tu respuesta', - headers: 'Encabezados', - validation: { - webhookUrlRequired: 'Se requiere la URL del webhook', - invalidParameterType: 'Tipo de parámetro inválido "{{type}}" para el parámetro "{{name}}"', - }, - }, - }, - tracing: { - stopBy: 'Pásate por {{user}}', - }, - variableReference: { - noAvailableVars: 'No hay variables disponibles', - assignedVarsDescription: 'Las variables asignadas deben ser variables grabables, como', - noVarsForOperation: 'No hay variables disponibles para la asignación con la operación seleccionada.', - noAssignedVars: 'No hay variables asignadas disponibles', - conversationVars: 'Variables de conversación', - }, - versionHistory: { - filter: { - onlyYours: 'Solo tuyo', - onlyShowNamedVersions: 'Solo muestra versiones nombradas', - empty: 'No se encontró un historial de versiones coincidente.', - reset: 'Restablecer filtro', - all: 'Todo', - }, - editField: { - titleLengthLimit: 'El título no puede exceder {{limit}} caracteres', - title: 'Título', - releaseNotesLengthLimit: 'Las notas de lanzamiento no pueden exceder {{limit}} caracteres', - releaseNotes: 'Notas de Lanzamiento', - }, - action: { - deleteSuccess: 'Versión eliminada', - updateSuccess: 'Versión actualizada', - restoreFailure: 'Error al restaurar la versión', - deleteFailure: 'Error al eliminar la versión', - updateFailure: 'Error al actualizar la versión', - restoreSuccess: 'Versión restaurada', - copyIdSuccess: 'ID copiado en el portapapeles', - }, - releaseNotesPlaceholder: 'Describe lo que cambió', - restorationTip: 'Después de la restauración de la versión, el borrador actual será sobrescrito.', - nameThisVersion: 'Nombra esta versión', - defaultName: 'Versión sin título', - title: 'Versiones', - deletionTip: 'La eliminación es irreversible, por favor confirma.', - currentDraft: 'Borrador Actual', - editVersionInfo: 'Editar información de la versión', - latest: 'Último', - copyId: 'Copiar ID', - }, - debug: { - noData: { - runThisNode: 'Ejecuta este nodo', - description: 'Los resultados de la última ejecución se mostrarán aquí', - }, - variableInspect: { - trigger: { - running: 'Estado de ejecución de la caché', - stop: 'Detén la carrera', - normal: 'Inspeccionar Variable', - cached: 'Ver variables en caché', - clear: 'Claro', - }, - envNode: 'Medio ambiente', - chatNode: 'Conversación', - systemNode: 'Sistema', - view: 'Ver registro', - clearAll: 'Restablecer todo', - emptyLink: 'Aprender más', - title: 'Inspeccionar Variable', - reset: 'Restablecer al último valor ejecutado', - resetConversationVar: 'Restablecer la variable de conversación al valor predeterminado', - clearNode: 'Limpiar variable en caché', - emptyTip: 'Después de recorrer un nodo en el lienzo o ejecutar un nodo paso a paso, puedes ver el valor actual de la variable del nodo en Inspección de Variables.', - edited: 'Editado', - export: 'exportar', - exportToolTip: 'Exportar variable como archivo', - largeData: 'Datos grandes, vista previa de solo lectura. Exportar para verlo todo.', - largeDataNoExport: 'Datos grandes: solo vista previa parcial', - listening: { - title: 'Escuchando eventos desde los activadores...', - tip: 'Ahora puedes simular disparadores de eventos enviando solicitudes de prueba al endpoint HTTP {{nodeName}} o usarlo como una URL de retorno de llamada para la depuración de eventos en tiempo real. Todos los resultados se pueden ver directamente en el Inspector de Variables.', - tipPlugin: 'Ahora puedes crear eventos en {{- pluginName}} y obtener los resultados de estos eventos en el Inspector de Variables.', - tipSchedule: 'Escuchando eventos de los desencadenadores de programación.\nPróxima ejecución programada: {{nextTriggerTime}}', - tipFallback: 'Esperando eventos desencadenantes entrantes. Las salidas aparecerán aquí.', - defaultNodeName: 'este disparador', - defaultPluginName: 'este activador de plugin', - defaultScheduleTime: 'No configurado', - selectedTriggers: 'disparadores seleccionados', - stopButton: 'Para', - }, - }, - lastRunTab: 'Última ejecución', - settingsTab: 'Ajustes', - relations: { - dependents: 'Dependientes', - dependenciesDescription: 'Nodos en los que se basa este nodo', - dependentsDescription: 'Nodos que dependen de este nodo', - noDependencies: 'Sin dependencias', - noDependents: 'Sin dependientes', - dependencies: 'Dependencias', - }, - relationsTab: 'Relaciones', - noLastRunFound: 'No se encontró ninguna ejecución anterior', - copyLastRunError: 'No se pudo copiar las entradas de la última ejecución', - copyLastRun: 'Copiar última ejecución', - noMatchingInputsFound: 'No se encontraron entradas coincidentes de la última ejecución.', - lastOutput: 'Última salida', - lastRunInputsCopied: '{{count}} entrada(s) copiadas de la última ejecución', - }, - sidebar: { - exportWarning: 'Exportar la versión guardada actual', - exportWarningDesc: 'Esto exportará la versión guardada actual de tu flujo de trabajo. Si tienes cambios no guardados en el editor, guárdalos primero utilizando la opción de exportar en el lienzo del flujo de trabajo.', - }, - publishLimit: { - startNodeTitlePrefix: 'Actualizar a', - startNodeTitleSuffix: 'desbloquear disparadores ilimitados por flujo de trabajo', - startNodeDesc: 'Has alcanzado el límite de 2 desencadenadores por flujo de trabajo para este plan. Actualiza para publicar este flujo de trabajo.', - }, - error: { - startNodeRequired: 'Por favor, agregue primero un nodo de inicio antes de {{operation}}', - operations: { - connectingNodes: 'conectando nodos', - addingNodes: 'agregando nodos', - modifyingWorkflow: 'modificando el flujo de trabajo', - updatingWorkflow: 'actualizando flujo de trabajo', - }, - }, - customWebhook: 'Webhook personalizado', - difyTeam: 'Equipo Dify', - triggerStatus: { - enabled: 'DISPARADOR', - disabled: 'DISPARADOR • DESACTIVADO', - }, - entryNodeStatus: { - enabled: 'INICIAR', - disabled: 'INICIAR • DESACTIVADO', - }, - onboarding: { - title: 'Selecciona un nodo de inicio para comenzar', - description: 'Los diferentes nodos iniciales tienen distintas capacidades. No te preocupes, siempre puedes cambiarlos más adelante.', - userInputFull: 'Entrada del usuario (nodo de inicio original)', - userInputDescription: 'Nodo de inicio que permite establecer variables de entrada del usuario, con capacidades de herramienta para aplicación web, API de servicio, servidor MCP y flujo de trabajo.', - trigger: 'Disparador', - triggerDescription: 'Los desencadenantes pueden servir como el nodo inicial de un flujo de trabajo, como tareas programadas, webhooks personalizados o integraciones con otras aplicaciones.', - back: 'Atrás', - learnMore: 'Aprender más', - aboutStartNode: 'sobre el nodo de inicio.', - escTip: { - press: 'Prensa', - key: 'esc', - toDismiss: 'despedir', - }, - }, -} - -export default translation diff --git a/web/i18n/fa-IR/app-annotation.json b/web/i18n/fa-IR/app-annotation.json new file mode 100644 index 0000000000..221a57bada --- /dev/null +++ b/web/i18n/fa-IR/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "یادداشت‌ها", + "name": "پاسخ یادداشت", + "editBy": "پاسخ ویرایش شده توسط {{author}}", + "noData": { + "title": "بدون یادداشت", + "description": "شما می‌توانید یادداشت‌ها را در حین اشکال‌زدایی برنامه ویرایش کنید یا یادداشت‌ها را به صورت انبوه در اینجا برای پاسخگویی با کیفیت بالا وارد کنید." + }, + "table": { + "header": { + "question": "سوال", + "answer": "پاسخ", + "createdAt": "ایجاد شده در", + "hits": "بازدیدها", + "actions": "اقدامات", + "addAnnotation": "افزودن یادداشت", + "bulkImport": "واردات انبوه", + "bulkExport": "صادرات انبوه", + "clearAll": "پاک کردن همه یادداشت‌ها", + "clearAllConfirm": "آیا همه حاشیه‌نویسی‌ها را حذف کنیم؟" + } + }, + "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": "مدل برداری‌سازی متن یادداشت، تغییر مدل‌ها باعث جاسازی مجدد خواهد شد و هزینه‌های اضافی به همراه خواهد داشت.", + "list": { + "delete": { + "title": "آیا مطمئن هستید که می‌خواهید حذف کنید؟" + } + }, + "batchAction": { + "cancel": "لغو", + "selected": "انتخاب شده", + "delete": "حذف کنید" + } +} diff --git a/web/i18n/fa-IR/app-annotation.ts b/web/i18n/fa-IR/app-annotation.ts deleted file mode 100644 index 7bedf8371f..0000000000 --- a/web/i18n/fa-IR/app-annotation.ts +++ /dev/null @@ -1,98 +0,0 @@ -const translation = { - title: 'یادداشت‌ها', - name: 'پاسخ یادداشت', - editBy: 'پاسخ ویرایش شده توسط {{author}}', - noData: { - title: 'بدون یادداشت', - description: 'شما می‌توانید یادداشت‌ها را در حین اشکال‌زدایی برنامه ویرایش کنید یا یادداشت‌ها را به صورت انبوه در اینجا برای پاسخگویی با کیفیت بالا وارد کنید.', - }, - table: { - header: { - question: 'سوال', - answer: 'پاسخ', - createdAt: 'ایجاد شده در', - hits: 'بازدیدها', - actions: 'اقدامات', - addAnnotation: 'افزودن یادداشت', - bulkImport: 'واردات انبوه', - bulkExport: 'صادرات انبوه', - clearAll: 'پاک کردن همه یادداشت‌ها', - clearAllConfirm: 'آیا همه حاشیه‌نویسی‌ها را حذف کنیم؟', - }, - }, - 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: 'مدل برداری‌سازی متن یادداشت، تغییر مدل‌ها باعث جاسازی مجدد خواهد شد و هزینه‌های اضافی به همراه خواهد داشت.', - list: { - delete: { - title: 'آیا مطمئن هستید که می‌خواهید حذف کنید؟', - }, - }, - batchAction: { - cancel: 'لغو', - selected: 'انتخاب شده', - delete: 'حذف کنید', - }, -} - -export default translation diff --git a/web/i18n/fa-IR/app-api.json b/web/i18n/fa-IR/app-api.json new file mode 100644 index 0000000000..68b4a02e87 --- /dev/null +++ b/web/i18n/fa-IR/app-api.json @@ -0,0 +1,83 @@ +{ + "apiServer": "سرور API", + "apiKey": "کلید API", + "status": "وضعیت", + "disabled": "غیرفعال", + "ok": "در سرویس", + "copy": "کپی", + "copied": "کپی شد", + "play": "پخش", + "pause": "مکث", + "playing": "در حال پخش", + "loading": "در حال بارگذاری", + "merMaid": { + "rerender": "بازسازی مجدد" + }, + "never": "هرگز", + "apiKeyModal": { + "apiSecretKey": "کلید مخفی API", + "apiSecretKeyTips": "برای جلوگیری از سوء استفاده از API، از کلید API خود محافظت کنید. از استفاده از آن به صورت متن ساده در کد فرانت‌اند خودداری کنید. :)", + "createNewSecretKey": "ایجاد کلید مخفی جدید", + "secretKey": "کلید مخفی", + "created": "ایجاد شده", + "lastUsed": "آخرین استفاده", + "generateTips": "این کلید را در مکانی امن و قابل دسترس نگه دارید." + }, + "actionMsg": { + "deleteConfirmTitle": "این کلید مخفی حذف شود؟", + "deleteConfirmTips": "این عمل قابل بازگشت نیست.", + "ok": "تایید" + }, + "completionMode": { + "title": "API برنامه تکمیل", + "info": "برای تولید متن با کیفیت بالا، مانند مقالات، خلاصه‌ها و ترجمه‌ها، از API پیام‌های تکمیلی با ورودی کاربر استفاده کنید. تولید متن به پارامترهای مدل و قالب‌های پرامپت تنظیم شده در مهندسی پرامپت Dify بستگی دارد.", + "createCompletionApi": "ایجاد پیام تکمیلی", + "createCompletionApiTip": "یک پیام تکمیلی برای پشتیبانی از حالت سوال و جواب ایجاد کنید.", + "inputsTips": "(اختیاری) فیلدهای ورودی کاربر را به صورت جفت‌های کلید-مقدار ارائه دهید که با متغیرهای موجود در مهندسی پرامپت مطابقت دارند. کلید نام متغیر است و مقدار، مقدار پارامتر است. اگر نوع فیلد انتخابی باشد، مقدار ارسال شده باید یکی از گزینه‌های از پیش تعیین شده باشد.", + "queryTips": "محتوای متن ورودی کاربر.", + "blocking": "نوع مسدودکننده، منتظر اتمام اجرا و بازگشت نتایج. (درخواست‌ها ممکن است در صورت طولانی بودن فرآیند قطع شوند)", + "streaming": "بازگشت جریانی. پیاده‌سازی بازگشت جریانی بر اساس SSE (رویدادهای ارسالی سرور).", + "messageFeedbackApi": "بازخورد پیام (لایک)", + "messageFeedbackApiTip": "پیام‌های دریافتی را از طرف کاربران نهایی با لایک یا دیسلایک ارزیابی کنید. این داده‌ها در صفحه گزارش‌ها و یادداشت‌ها قابل مشاهده هستند و برای تنظیم دقیق مدل در آینده استفاده می‌شوند.", + "messageIDTip": "شناسه پیام", + "ratingTip": "لایک یا دیسلایک، null برای لغو", + "parametersApi": "دریافت اطلاعات پارامترهای برنامه", + "parametersApiTip": "بازیابی پارامترهای ورودی پیکربندی شده، شامل نام‌های متغیر، نام‌های فیلد، انواع و مقادیر پیش‌فرض. معمولاً برای نمایش این فیلدها در یک فرم یا پر کردن مقادیر پیش‌فرض پس از بارگیری کلاینت استفاده می‌شود." + }, + "chatMode": { + "title": "API برنامه چت", + "info": "برای برنامه‌های مکالمه‌ای چندمنظوره با استفاده از فرمت سوال و جواب، API پیام‌های چت را برای شروع گفتگو فراخوانی کنید. با ارسال شناسه مکالمه بازگشتی، گفتگوهای مداوم را حفظ کنید. پارامترهای پاسخ و قالب‌ها به تنظیمات مهندسی پرامپت Dify بستگی دارند.", + "createChatApi": "ایجاد پیام چت", + "createChatApiTip": "یک پیام مکالمه جدید ایجاد کنید یا یک گفتگوی موجود را ادامه دهید.", + "inputsTips": "(اختیاری) فیلدهای ورودی کاربر را به صورت جفت‌های کلید-مقدار ارائه دهید که با متغیرهای موجود در مهندسی پرامپت مطابقت دارند. کلید نام متغیر است و مقدار، مقدار پارامتر است. اگر نوع فیلد انتخابی باشد، مقدار ارسال شده باید یکی از گزینه‌های از پیش تعیین شده باشد.", + "queryTips": "محتوای ورودی/سوال کاربر", + "blocking": "نوع مسدودکننده، منتظر اتمام اجرا و بازگشت نتایج. (درخواست‌ها ممکن است در صورت طولانی بودن فرآیند قطع شوند)", + "streaming": "بازگشت جریانی. پیاده‌سازی بازگشت جریانی بر اساس SSE (رویدادهای ارسالی سرور).", + "conversationIdTip": "(اختیاری) شناسه مکالمه: برای اولین مکالمه خالی بگذارید؛ برای ادامه گفتگو، شناسه مکالمه را از متن ارسال کنید.", + "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": "پرس‌وجو", + "toc": "محتویات" + }, + "regenerate": "بازسازی" +} diff --git a/web/i18n/fa-IR/app-api.ts b/web/i18n/fa-IR/app-api.ts deleted file mode 100644 index 1891e8f133..0000000000 --- a/web/i18n/fa-IR/app-api.ts +++ /dev/null @@ -1,85 +0,0 @@ -const translation = { - apiServer: 'سرور API', - apiKey: 'کلید API', - status: 'وضعیت', - disabled: 'غیرفعال', - ok: 'در سرویس', - copy: 'کپی', - copied: 'کپی شد', - play: 'پخش', - pause: 'مکث', - playing: 'در حال پخش', - loading: 'در حال بارگذاری', - merMaid: { - rerender: 'بازسازی مجدد', - }, - never: 'هرگز', - apiKeyModal: { - apiSecretKey: 'کلید مخفی API', - apiSecretKeyTips: 'برای جلوگیری از سوء استفاده از API، از کلید API خود محافظت کنید. از استفاده از آن به صورت متن ساده در کد فرانت‌اند خودداری کنید. :)', - createNewSecretKey: 'ایجاد کلید مخفی جدید', - secretKey: 'کلید مخفی', - created: 'ایجاد شده', - lastUsed: 'آخرین استفاده', - generateTips: 'این کلید را در مکانی امن و قابل دسترس نگه دارید.', - }, - actionMsg: { - deleteConfirmTitle: 'این کلید مخفی حذف شود؟', - deleteConfirmTips: 'این عمل قابل بازگشت نیست.', - ok: 'تایید', - }, - completionMode: { - title: 'API برنامه تکمیل', - info: 'برای تولید متن با کیفیت بالا، مانند مقالات، خلاصه‌ها و ترجمه‌ها، از API پیام‌های تکمیلی با ورودی کاربر استفاده کنید. تولید متن به پارامترهای مدل و قالب‌های پرامپت تنظیم شده در مهندسی پرامپت Dify بستگی دارد.', - createCompletionApi: 'ایجاد پیام تکمیلی', - createCompletionApiTip: 'یک پیام تکمیلی برای پشتیبانی از حالت سوال و جواب ایجاد کنید.', - inputsTips: '(اختیاری) فیلدهای ورودی کاربر را به صورت جفت‌های کلید-مقدار ارائه دهید که با متغیرهای موجود در مهندسی پرامپت مطابقت دارند. کلید نام متغیر است و مقدار، مقدار پارامتر است. اگر نوع فیلد انتخابی باشد، مقدار ارسال شده باید یکی از گزینه‌های از پیش تعیین شده باشد.', - queryTips: 'محتوای متن ورودی کاربر.', - blocking: 'نوع مسدودکننده، منتظر اتمام اجرا و بازگشت نتایج. (درخواست‌ها ممکن است در صورت طولانی بودن فرآیند قطع شوند)', - streaming: 'بازگشت جریانی. پیاده‌سازی بازگشت جریانی بر اساس SSE (رویدادهای ارسالی سرور).', - messageFeedbackApi: 'بازخورد پیام (لایک)', - messageFeedbackApiTip: 'پیام‌های دریافتی را از طرف کاربران نهایی با لایک یا دیسلایک ارزیابی کنید. این داده‌ها در صفحه گزارش‌ها و یادداشت‌ها قابل مشاهده هستند و برای تنظیم دقیق مدل در آینده استفاده می‌شوند.', - messageIDTip: 'شناسه پیام', - ratingTip: 'لایک یا دیسلایک، null برای لغو', - parametersApi: 'دریافت اطلاعات پارامترهای برنامه', - parametersApiTip: 'بازیابی پارامترهای ورودی پیکربندی شده، شامل نام‌های متغیر، نام‌های فیلد، انواع و مقادیر پیش‌فرض. معمولاً برای نمایش این فیلدها در یک فرم یا پر کردن مقادیر پیش‌فرض پس از بارگیری کلاینت استفاده می‌شود.', - }, - chatMode: { - title: 'API برنامه چت', - info: 'برای برنامه‌های مکالمه‌ای چندمنظوره با استفاده از فرمت سوال و جواب، API پیام‌های چت را برای شروع گفتگو فراخوانی کنید. با ارسال شناسه مکالمه بازگشتی، گفتگوهای مداوم را حفظ کنید. پارامترهای پاسخ و قالب‌ها به تنظیمات مهندسی پرامپت Dify بستگی دارند.', - createChatApi: 'ایجاد پیام چت', - createChatApiTip: 'یک پیام مکالمه جدید ایجاد کنید یا یک گفتگوی موجود را ادامه دهید.', - inputsTips: '(اختیاری) فیلدهای ورودی کاربر را به صورت جفت‌های کلید-مقدار ارائه دهید که با متغیرهای موجود در مهندسی پرامپت مطابقت دارند. کلید نام متغیر است و مقدار، مقدار پارامتر است. اگر نوع فیلد انتخابی باشد، مقدار ارسال شده باید یکی از گزینه‌های از پیش تعیین شده باشد.', - queryTips: 'محتوای ورودی/سوال کاربر', - blocking: 'نوع مسدودکننده، منتظر اتمام اجرا و بازگشت نتایج. (درخواست‌ها ممکن است در صورت طولانی بودن فرآیند قطع شوند)', - streaming: 'بازگشت جریانی. پیاده‌سازی بازگشت جریانی بر اساس SSE (رویدادهای ارسالی سرور).', - conversationIdTip: '(اختیاری) شناسه مکالمه: برای اولین مکالمه خالی بگذارید؛ برای ادامه گفتگو، شناسه مکالمه را از متن ارسال کنید.', - 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: 'پرس‌وجو', - toc: 'محتویات', - }, - regenerate: 'بازسازی', -} - -export default translation diff --git a/web/i18n/fa-IR/app-debug.json b/web/i18n/fa-IR/app-debug.json new file mode 100644 index 0000000000..32edc66c22 --- /dev/null +++ b/web/i18n/fa-IR/app-debug.json @@ -0,0 +1,562 @@ +{ + "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": "کلید ارائه‌دهنده LLM تنظیم نشده است", + "trailFinished": "آزمایش تمام شد", + "description": "کلید ارائه‌دهنده LLM تنظیم نشده است و باید قبل از دیباگ تنظیم شود.", + "settingBtn": "به تنظیمات بروید" + }, + "trailUseGPT4Info": { + "title": "در حال حاضر پشتیبانی نمی‌شود gpt-4", + "description": "برای استفاده از gpt-4، لطفاً کلید API را تنظیم کنید." + }, + "feature": { + "groupChat": { + "title": "تقویت گفتگو", + "description": "افزودن تنظیمات پیش از گفتگو برای برنامه‌ها می‌تواند تجربه کاربری را بهبود بخشد." + }, + "groupExperience": { + "title": "تقویت تجربه" + }, + "conversationOpener": { + "title": "شروع‌کننده گفتگو", + "description": "در یک برنامه چت، اولین جمله‌ای که AI فعالانه با کاربر صحبت می‌کند، معمولاً به عنوان خوشامدگویی استفاده می‌شود." + }, + "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": "Used to set the similarity threshold for annotation reply.", + "easyMatch": "تطابق آسان", + "accurateMatch": "تطابق دقیق" + }, + "matchVariable": { + "title": "تغییر متغیر", + "choosePlaceholder": "انتخاب متغیر تغییر" + }, + "cacheManagement": "حاشیه نویسی", + "cached": "حاشیه نویسی شده", + "remove": "حذف", + "removeConfirm": "این حاشیه نویسی را حذف کنید؟", + "add": "افزودن حاشیه نویسی", + "edit": "ویرایش حاشیه نویسی" + }, + "dataSet": { + "title": "زمینه", + "noData": "شما می‌توانید دانش را به عنوان زمینه وارد کنید", + "selectTitle": "انتخاب دانش مرجع", + "selected": "دانش انتخاب شده", + "noDataSet": "هیچ دانشی یافت نشد", + "toCreate": "برای ایجاد بروید", + "notSupportSelectMulti": "در حال حاضر فقط یک دانش پشتیبانی می‌شود", + "queryVariable": { + "title": "متغیر پرس و جو", + "tip": "این متغیر به عنوان ورودی پرس و جو برای بازیابی زمینه استفاده خواهد شد و اطلاعات زمینه مرتبط با ورودی این متغیر را به دست می‌آورد.", + "choosePlaceholder": "انتخاب متغیر پرس و جو", + "noVar": "بدون متغیر", + "noVarTip": "لطفاً متغیری را در بخش متغیرها ایجاد کنید", + "unableToQueryDataSet": "عدم امکان پرس و جو از دانش", + "unableToQueryDataSetTip": "پرس و جوی موفقیت آمیز دانش ممکن نیست، لطفاً یک متغیر پرس و جو زمینه را در بخش زمینه انتخاب کنید.", + "ok": "باشه", + "contextVarNotEmpty": "متغیر پرس و جو زمینه نمی‌تواند خالی باشد", + "deleteContextVarTitle": "متغیر \"{{varName}}\" را حذف کنید؟", + "deleteContextVarTip": "این متغیر به عنوان متغیر پرس و جو زمینه تنظیم شده است و حذف آن بر استفاده عادی از دانش تأثیر می‌گذارد. اگر هنوز نیاز به حذف دارید، لطفاً آن را در بخش زمینه دوباره انتخاب کنید." + } + }, + "tools": { + "title": "ابزارها", + "tips": "ابزارها یک روش استاندارد برای فراخوانی API فراهم می‌کنند و ورودی کاربر یا متغیرها را به عنوان پارامترهای درخواست برای پرس و جو داده‌های خارجی به عنوان زمینه می‌گیرند.", + "toolsInUse": "{{count}} ابزار در حال استفاده", + "modal": { + "title": "ابزار", + "toolType": { + "title": "نوع ابزار", + "placeholder": "لطفاً نوع ابزار را انتخاب کنید" + }, + "name": { + "title": "نام", + "placeholder": "لطفاً نام را وارد کنید" + }, + "variableName": { + "title": "نام متغیر", + "placeholder": "لطفاً نام متغیر را وارد کنید" + } + } + }, + "conversationHistory": { + "title": "تاریخچه مکالمه", + "description": "تنظیم پیشوند نام‌ها برای نقش‌های مکالمه", + "tip": "تاریخچه مکالمه فعال نشده است، لطفاً را در فراخوانی بالا اضافه کنید.", + "learnMore": "بیشتر بدانید", + "editModal": { + "title": "ویرایش نام نقش‌های مکالمه", + "userPrefix": "پیشوند کاربر", + "assistantPrefix": "پیشوند دستیار" + } + }, + "toolbox": { + "title": "جعبه ابزار" + }, + "moderation": { + "title": "مدیریت محتوا", + "description": "خروجی مدل را با استفاده از API مدیریت یا نگهداری فهرست کلمات حساس امن کنید.", + "allEnabled": "محتوای ورودی/خروجی فعال شده", + "inputEnabled": "محتوای ورودی فعال شده", + "outputEnabled": "محتوای خروجی فعال شده", + "modal": { + "title": "تنظیمات مدیریت محتوا", + "provider": { + "title": "ارائه دهنده", + "openai": "مدیریت OpenAI", + "openaiTip": { + "prefix": "مدیریت OpenAI نیاز به کلید API OpenAI دارد که در ", + "suffix": " تنظیم شده باشد." + }, + "keywords": "کلمات کلیدی" + }, + "keywords": { + "tip": "هر خط یک کلمه، با شکست خطوط جدا شده. حداکثر 100 کاراکتر در هر خط.", + "placeholder": "هر خط یک کلمه، با شکست خطوط جدا شده", + "line": "خط" + }, + "content": { + "input": "مدیریت محتوای ورودی", + "output": "مدیریت محتوای خروجی", + "preset": "پاسخ‌های پیش فرض", + "placeholder": "محتوای پاسخ‌های پیش فرض در اینجا", + "condition": "مدیریت محتوای ورودی و خروجی حداقل یک مورد فعال شده است", + "fromApi": "پاسخ‌های پیش فرض از API برگردانده می‌شود", + "errorMessage": "پاسخ‌های پیش فرض نمی‌تواند خالی باشد", + "supportMarkdown": "پشتیبانی از Markdown" + }, + "openaiNotConfig": { + "before": "مدیریت OpenAI نیاز به کلید API OpenAI دارد که در", + "after": "" + } + }, + "contentEnableLabel": "مدیریت محتوا فعال شده است" + }, + "fileUpload": { + "title": "آپلود فایل", + "description": "جعبه ورودی چت امکان آپلود تصاویر، اسناد و سایر فایل‌ها را فراهم می‌کند.", + "supportedTypes": "انواع فایل‌های پشتیبانی شده", + "numberLimit": "حداکثر آپلود", + "modalTitle": "تنظیمات آپلود فایل" + }, + "imageUpload": { + "title": "آپلود تصویر", + "description": "امکان آپلود تصاویر را فراهم می‌کند.", + "supportedTypes": "انواع فایل‌های پشتیبانی شده", + "numberLimit": "حداکثر آپلود", + "modalTitle": "تنظیمات آپلود تصویر" + }, + "bar": { + "empty": "فعال‌سازی ویژگی برای بهبود تجربه کاربری اپلیکیشن وب", + "enableText": "ویژگی‌های فعال", + "manage": "مدیریت" + }, + "documentUpload": { + "title": "سند", + "description": "فعال‌سازی سند به مدل اجازه می‌دهد اسناد را دریافت کرده و درباره آن‌ها پاسخ دهد." + }, + "audioUpload": { + "title": "صوتی", + "description": "فعال‌سازی صوت به مدل اجازه می‌دهد فایل‌های صوتی را برای رونویسی و تجزیه و تحلیل پردازش کند." + } + }, + "codegen": { + "apply": "درخواست", + "resTitle": "کد تولید شده", + "generate": "تولید", + "loading": "تولید کد...", + "applyChanges": "اعمال تغییرات", + "generatedCodeTitle": "کد تولید شده", + "title": "ژنراتور کد", + "instruction": "دستورالعمل", + "instructionPlaceholder": "توضیحات دقیق کدی را که می خواهید تولید کنید وارد کنید.", + "overwriteConfirmMessage": "این عمل کد موجود را بازنویسی می کند. آیا می خواهید ادامه دهید؟", + "overwriteConfirmTitle": "کد موجود را بازنویسی کنید؟", + "noDataLine2": "پیش نمایش کد در اینجا نشان داده می شود.", + "noDataLine1": "مورد استفاده خود را در سمت چپ شرح دهید،", + "description": "Code Generator از مدل های پیکربندی شده برای تولید کد با کیفیت بالا بر اساس دستورالعمل های شما استفاده می کند. لطفا دستورالعمل های واضح و دقیق ارائه دهید." + }, + "generate": { + "template": { + "pythonDebugger": { + "name": "اشکال زدایی پایتون", + "instruction": "رباتی که می تواند کد شما را بر اساس دستورالعمل شما تولید و اشکال زدایی کند" + }, + "translation": { + "name": "ترجمه", + "instruction": "مترجمی که می تواند چندین زبان را ترجمه کند" + }, + "professionalAnalyst": { + "name": "تحلیلگر حرفه ای", + "instruction": "استخراج بینش، شناسایی ریسک و تقطیر اطلاعات کلیدی از گزارش های طولانی در یک یادداشت" + }, + "excelFormulaExpert": { + "name": "کارشناس فرمول اکسل", + "instruction": "یک ربات چت که می تواند به کاربران تازه کار کمک کند تا فرمول های اکسل را بر اساس دستورالعمل های کاربر درک، استفاده و ایجاد کنند" + }, + "travelPlanning": { + "name": "برنامه ریزی سفر", + "instruction": "دستیار برنامه ریزی سفر ابزاری هوشمند است که برای کمک به کاربران در برنامه ریزی بدون زحمت سفرهای خود طراحی شده است" + }, + "SQLSorcerer": { + "name": "جادوگر SQL", + "instruction": "تبدیل زبان روزمره به کوئری های SQL" + }, + "GitGud": { + "name": "گیت گود", + "instruction": "فرمان های Git مناسب را بر اساس اکشن های کنترل نسخه توصیف شده توسط کاربر ایجاد کنید" + }, + "meetingTakeaways": { + "name": "نکات مهم جلسه", + "instruction": "جلسات را به خلاصه های مختصر از جمله موضوعات بحث، نکات کلیدی و موارد اقدام تقطیر کنید" + }, + "writingsPolisher": { + "name": "پولیش نوشتن", + "instruction": "از تکنیک های پیشرفته ویرایش کپی برای بهبود نوشته های خود استفاده کنید" + } + }, + "title": "ژنراتور سریع", + "resTitle": "اعلان تولید شده", + "overwriteTitle": "پیکربندی موجود را لغو کنید؟", + "generate": "تولید", + "apply": "درخواست", + "instruction": "دستورالعمل", + "overwriteMessage": "اعمال این اعلان پیکربندی موجود را لغو می کند.", + "tryIt": "آن را امتحان کنید", + "loading": "هماهنگ کردن برنامه برای شما...", + "description": "Prompt Generator از مدل پیکربندی شده برای بهینه سازی درخواست ها برای کیفیت بالاتر و ساختار بهتر استفاده می کند. لطفا دستورالعمل های واضح و دقیق بنویسید.", + "press": "فشار", + "to": "به", + "version": "نسخه", + "latest": "آخرین", + "optional": "اختیاری", + "dismiss": "رد کردن", + "insertContext": "متن را وارد کنید", + "optimizationNote": "یادداشت بهینه‌سازی", + "versions": "نسخه‌ها", + "optimizePromptTooltip": "بهینه‌سازی در تولیدکننده پرامپت", + "idealOutput": "خروجی ایده ال", + "instructionPlaceHolderLine1": "خروجی را مختصرتر کنید و نکات اصلی را حفظ کنید.", + "instructionPlaceHolderTitle": "توصیف کنید که چگونه می‌خواهید این دستورالعمل را بهبود ببخشید. به عنوان مثال:", + "idealOutputPlaceholder": "ایده‌آل پاسخ شما چه شکلی باید باشد؟ لطفاً درباره فرمت، طول، لحن و الزامات محتوایی آن توضیح دهید ...", + "newNoDataLine1": "یک دستور در ستون چپ بنویسید و برای مشاهده پاسخ، روی تولید کلیک کنید.", + "instructionPlaceHolderLine3": "لحن خیلی تند است، لطفاً آن را دوستانه‌تر کنید.", + "codeGenInstructionPlaceHolderLine": "هر چه بازخورد دقیق‌تر باشد، مانند نوع داده‌های ورودی و خروجی و همچنین نحوه پردازش متغیرها، تولید کد دقیق‌تر خواهد بود.", + "instructionPlaceHolderLine2": "فرمت خروجی نادرست است، لطفاً به شکل JSON به دقت پایبند باشید." + }, + "resetConfig": { + "title": "بازنشانی را تأیید کنید؟", + "message": "بازنشانی تغییرات را دور می اندازد و آخرین پیکربندی منتشر شده را بازیابی می کند." + }, + "errorMessage": { + "notSelectModel": "لطفا یک مدل را انتخاب کنید", + "waitForResponse": "لطفا منتظر بمانید تا پاسخ به پیام قبلی کامل شود.", + "queryRequired": "درخواست متن الزامی است.", + "waitForFileUpload": "لطفا منتظر بمانید تا فایل/فایل ها آپلود شوند", + "waitForImgUpload": "لطفا منتظر بمانید تا تصویر آپلود شود", + "waitForBatchResponse": "لطفا منتظر بمانید تا پاسخ به کار دسته ای تکمیل شود.", + "nameOfKeyRequired": "نام کلید: {{key}} الزامی است", + "valueOfVarRequired": "مقدار {{key}} نمی‌تواند خالی باشد" + }, + "warningMessage": { + "timeoutExceeded": "نتایج به دلیل مهلت زمانی نمایش داده نمی شوند. لطفا برای جمع آوری نتایج کامل به گزارش ها مراجعه کنید." + }, + "variableTable": { + "key": "کلید متغیر", + "typeSelect": "انتخاب", + "action": "اقدامات", + "typeString": "رشته", + "name": "نام فیلد ورودی کاربر", + "type": "نوع ورودی" + }, + "varKeyError": { + "canNoBeEmpty": "{{key}} مورد نیاز است", + "tooLong": "{{key}} خیلی طولانی است. نمی‌تواند بیش از ۳۰ کاراکتر باشد", + "notValid": "{{key}} نامعتبر است. فقط می‌تواند شامل حروف، اعداد و زیرخط باشد", + "notStartWithNumber": "{{key}} نمی‌تواند با یک عدد شروع شود", + "keyAlreadyExists": "{{key}} قبلاً موجود است" + }, + "otherError": { + "promptNoBeEmpty": "اعلان نمی تواند خالی باشد", + "historyNoBeEmpty": "سابقه مکالمه باید در اعلان تنظیم شود", + "queryNoBeEmpty": "پرس و جو باید در اعلان تنظیم شود" + }, + "variableConfig": { + "file": { + "image": { + "name": "تصویر" + }, + "audio": { + "name": "صوتی" + }, + "document": { + "name": "سند" + }, + "video": { + "name": "ویدئو" + }, + "custom": { + "name": "انواع فایل های دیگر", + "createPlaceholder": " پسوند فایل، به عنوان مثال .doc", + "description": "انواع فایل های دیگر را مشخص کنید." + }, + "supportFileTypes": "انواع فایل های پشتیبانی" + }, + "errorMsg": { + "optionRepeat": "دارای گزینه های تکرار", + "varNameCanBeRepeat": "نام متغیر را نمی توان تکرار کرد", + "labelNameRequired": "نام برچسب الزامی است", + "atLeastOneOption": "حداقل یک گزینه مورد نیاز است" + }, + "number": "شماره", + "hide": "مخفی کردن", + "both": "هر دو", + "single-file": "تک فایل", + "select": "انتخاب", + "inputPlaceholder": "لطفا وارد کنید", + "editModalTitle": "ویرایش فیلد ورودی", + "paragraph": "پاراگراف", + "fieldType": "نوع فیلد", + "maxLength": "حداکثر طول", + "varName": "نام متغیر", + "maxNumberOfUploads": "حداکثر تعداد آپلود", + "noDefaultValue": "بدون مقدار پیش فرض", + "addOption": "افزودن گزینه", + "stringTitle": "گزینه های جعبه متن فرم", + "options": "گزینه", + "selectDefaultValue": "مقدار پیش فرض را انتخاب کنید", + "content": "محتوای", + "multi-files": "لیست فایل ها", + "labelName": "نام برچسب", + "defaultValue": "مقدار پیش فرض", + "required": "مورد نیاز", + "uploadFileTypes": "آپلود انواع فایل", + "apiBasedVar": "متغیر مبتنی بر API", + "addModalTitle": "افزودن فیلد ورودی", + "string": "متن کوتاه", + "text-input": "متن کوتاه", + "localUpload": "آپلود محلی", + "json": "کد JSON", + "jsonSchema": "طرح‌واره JSON", + "optional": "اختیاری", + "checkbox": "چک باکس", + "unit": "واحد", + "tooltips": "Tooltips", + "uploadMethod": "روش آپلود", + "displayName": "نام نمایشی", + "startChecked": "شروع بررسی شده", + "noDefaultSelected": "انتخاب نکنید", + "placeholder": "مکان نگهدارنده", + "showAllSettings": "نمایش همه تنظیمات", + "startSelectedOption": "گزینه انتخاب شده را شروع کنید", + "defaultValuePlaceholder": "مقدار پیش فرض را وارد کنید تا فیلد را از قبل پر کنید", + "unitPlaceholder": "نمایش واحدها بعد از اعداد، به عنوان مثال توکن ها", + "placeholderPlaceholder": "متن را وارد کنید تا زمانی که فیلد خالی است نمایش داده شود", + "tooltipsPlaceholder": "نوشتار مفیدی را که هنگام نگه داشتن ماوس روی برچسب نشان داده می شود وارد کنید", + "description": "تنظیم برای متغیر {{varName}}", + "notSet": "تنظیم نشده است، سعی کنید {{input}} را در پیش‌نویس وارد کنید", + "maxNumberTip": "سند < {{docLimit}}، تصویر < {{imgLimit}}، صوت < {{audioLimit}}، ویدئو < {{videoLimit}}" + }, + "vision": { + "visionSettings": { + "url": "آدرس", + "high": "بالا", + "low": "کم", + "resolution": "وضوح", + "uploadLimit": "محدودیت آپلود", + "uploadMethod": "روش آپلود", + "localUpload": "آپلود محلی", + "title": "تنظیمات بینایی", + "both": "هر دو", + "resolutionTooltip": "رزولوشن پایین به مدل اجازه می‌دهد نسخه‌ای کم‌رزولوشن از تصویر با اندازه ۵۱۲ در ۵۱۲ دریافت کند و تصویر را با بودجه ۶۵ توکن نمایش دهد. این امکان باعث می‌شود API پاسخ‌ها را سریع‌تر بازگرداند و توکن‌های ورودی کمتری برای مواردی که نیازی به جزئیات بالا ندارند، مصرف کند.\n\nرزولوشن بالا ابتدا به مدل اجازه می‌دهد تصویر کم‌رزولوشن را ببیند و سپس کات‌های دقیقی از تصاویر ورودی به صورت مربع‌های ۵۱۲ پیکسلی بنا بر اندازه تصویر ورودی ایجاد می‌کند. هر کدام از کات‌های دقیق از دو برابر بودجه توکن استفاده می‌کنند که مجموعاً ۱۲۹ توکن می‌شود." + }, + "settings": "تنظیمات", + "name": "چشم انداز", + "onlySupportVisionModelTip": "فقط از مدل های بینایی پشتیبانی می کند", + "description": "Enable Vision به مدل اجازه می دهد تا تصاویر را بگیرد و به سؤالات مربوط به آنها پاسخ دهد." + }, + "voice": { + "voiceSettings": { + "voice": "صوتی", + "autoPlayEnabled": "در", + "autoPlayDisabled": "خاموش", + "language": "زبان", + "title": "تنظیمات صدا", + "resolutionTooltip": "زبان پشتیبانی از صدای متن به گفتار。", + "autoPlay": "پخش خودکار" + }, + "settings": "تنظیمات", + "name": "صوتی", + "description": "متن به گفتار به گفتار تنظیمات", + "defaultDisplay": "صدای پیش فرض" + }, + "openingStatement": { + "tooShort": "حداقل 20 کلمه درخواست اولیه برای ایجاد یک سخنرانی آغازین برای مکالمه مورد نیاز است.", + "writeOpener": "ویرایش بازکن", + "add": "اضافه کردن", + "title": "افتتاحیه مکالمه", + "openingQuestion": "سوالات آغازین", + "noDataPlaceHolder": "شروع مکالمه با کاربر می تواند به هوش مصنوعی کمک کند تا در برنامه های مکالمه ارتباط نزدیک تری با آنها برقرار کند.", + "placeholder": "پیام شروع خود را اینجا بنویسید، می‌توانید از متغیرها استفاده کنید، امتحان کنید تایپ {{variable}}.", + "openingQuestionPlaceholder": "می‌توانید از متغیرها استفاده کنید، امتحان کنید {{variable}} را تایپ کنید.", + "varTip": "می‌توانید از متغیرها استفاده کنید، نوع {{variable}} را امتحان کنید", + "notIncludeKey": "پیام اولیه شامل متغیر {{key}} نیست. لطفاً آن را به پیام اولیه اضافه کنید." + }, + "modelConfig": { + "modeType": { + "chat": "چت", + "completion": "کامل" + }, + "model": "مدل", + "title": "مدل و پارامترها", + "setTone": "لحن پاسخ ها را تنظیم کنید" + }, + "inputs": { + "run": "اجرا", + "queryTitle": "محتوای پرس و جو", + "userInputField": "فیلد ورودی کاربر", + "previewTitle": "پیش نمایش سریع", + "title": "اشکال زدایی و پیش نمایش", + "queryPlaceholder": "لطفا متن درخواست را وارد کنید.", + "noPrompt": "سعی کنید مقداری اعلان در ورودی پیش از اعلان بنویسید", + "completionVarTip": "مقدار متغیر را پر کنید، که هر بار که سوالی ارسال می شود، به طور خودکار در کلمات سریع جایگزین می شود.", + "chatVarTip": "مقدار متغیر را پر کنید، که هر بار که یک جلسه جدید شروع می شود، به طور خودکار در کلمه prompt جایگزین می شود", + "noVar": "مقدار متغیر را پر کنید، که هر بار که یک جلسه جدید شروع می شود، به طور خودکار در کلمه prompt جایگزین می شود." + }, + "datasetConfig": { + "retrieveOneWay": { + "title": "بازیابی N-to-1", + "description": "بر اساس هدف کاربر و توضیحات دانش، عامل به طور مستقل بهترین دانش را برای پرس و جو انتخاب می کند. بهترین برای برنامه های کاربردی با دانش متمایز و محدود." + }, + "retrieveMultiWay": { + "title": "بازیابی چند مسیری", + "description": "بر اساس هدف کاربر، پرس و جوها را در تمام دانش انجام می دهد، متن مربوطه را از چند منبع بازیابی می کند و پس از رتبه بندی مجدد، بهترین نتایج را مطابق با پرس و جو کاربر انتخاب می کند." + }, + "top_k": "K بالا", + "knowledgeTip": "برای افزودن دانش روی دکمه \" کلیک کنید", + "score_threshold": "آستانه امتیاز", + "settingTitle": "تنظیمات بازیابی", + "params": "پارام ها", + "embeddingModelRequired": "یک مدل تعبیه پیکربندی شده مورد نیاز است", + "rerankModelRequired": "یک مدل Rerank پیکربندی شده مورد نیاز است", + "score_thresholdTip": "برای تنظیم آستانه شباهت برای فیلتر کردن تکه ها استفاده می شود.", + "top_kTip": "برای فیلتر کردن تکه هایی که بیشتر شبیه به سؤالات کاربر هستند استفاده می شود. این سیستم همچنین با توجه به max_tokens مدل انتخاب شده، مقدار Top K را به صورت پویا تنظیم می کند.", + "retrieveChangeTip": "اصلاح حالت نمایه و حالت بازیابی ممکن است بر کاربردهای مرتبط با این دانش تأثیر بگذارد." + }, + "assistantType": { + "chatAssistant": { + "description": "ساخت یک دستیار مبتنی بر چت با استفاده از یک مدل زبان بزرگ", + "name": "دستیار پایه" + }, + "agentAssistant": { + "description": "یک عامل هوشمند بسازید که بتواند به طور مستقل ابزارهایی را برای تکمیل تسک ها انتخاب کند.", + "name": "دستیار نماینده" + }, + "name": "نوع دستیار" + }, + "agent": { + "agentModeType": { + "functionCall": "فراخوانی تابع", + "ReACT": "واکنش" + }, + "setting": { + "maximumIterations": { + "name": "حداکثر تکرارها", + "description": "تعداد تکرارهایی را که یک دستیار عامل می تواند اجرا کند محدود کنید" + }, + "name": "تنظیمات نماینده", + "description": "تنظیمات Agent Assistant امکان تنظیم حالت عامل و ویژگی های پیشرفته مانند اعلان های داخلی را فراهم می کند که فقط در نوع Agent موجود است." + }, + "tools": { + "enabled": "فعال", + "name": "ابزار", + "description": "استفاده از ابزارها می تواند قابلیت های LLM مانند جستجو در اینترنت یا انجام محاسبات علمی را گسترش دهد" + }, + "agentMode": "حالت عامل", + "nextIteration": "تکرار بعدی", + "promptPlaceholder": "درخواست خود را اینجا بنویسید", + "agentModeDes": "نوع حالت استنتاج را برای عامل تنظیم کنید", + "buildInPrompt": "اعلان داخلی", + "firstPrompt": "اولین اعلان" + }, + "result": "متن خروجی", + "completionSubTitle": "اعلان پیشوند", + "variableTitle": "متغیرهای", + "formattingChangedTitle": "قالب بندی تغییر کرد", + "chatSubTitle": "دستورالعمل", + "debugAsSingleModel": "اشکال زدایی به عنوان مدل واحد", + "publishAs": "انتشار به عنوان", + "duplicateModel": "تکراری", + "noResult": "خروجی در اینجا نمایش داده می شود.", + "debugAsMultipleModel": "اشکال زدایی به عنوان چندین مدل", + "formattingChangedText": "با تغییر قالب بندی، ناحیه اشکال زدایی بازنشانی می شود، مطمئن هستید؟", + "variableTip": "کاربران متغیرها را در یک فرم پر می کنند و به طور خودکار متغیرها را در اعلان جایگزین می کنند.", + "autoAddVar": "متغیرهای تعریف نشده که در پیش اعلان ارجاع داده شده اند، آیا می خواهید آنها را به صورت ورودی کاربر اضافه کنید؟", + "promptTip": "پرومپت‌ها پاسخ‌های هوش مصنوعی را با دستورالعمل‌ها و محدودیت‌ها هدایت می‌کنند. متغیرهایی مانند {{input}} را وارد کنید. این پرومپت برای کاربران قابل مشاهده نخواهد بود.", + "notSetVar": "متغیرها به کاربران امکان می‌دهند تا هنگام پر کردن فرم‌ها، کلمات راهنما یا سخنان افتتاحیه را وارد کنند. می‌توانید امتحان کنید که '{{input}}' را در کلمات راهنما وارد کنید." +} diff --git a/web/i18n/fa-IR/app-debug.ts b/web/i18n/fa-IR/app-debug.ts deleted file mode 100644 index fc70ecf95d..0000000000 --- a/web/i18n/fa-IR/app-debug.ts +++ /dev/null @@ -1,564 +0,0 @@ -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: 'کلید ارائه‌دهنده LLM تنظیم نشده است', - trailFinished: 'آزمایش تمام شد', - description: 'کلید ارائه‌دهنده LLM تنظیم نشده است و باید قبل از دیباگ تنظیم شود.', - settingBtn: 'به تنظیمات بروید', - }, - trailUseGPT4Info: { - title: 'در حال حاضر پشتیبانی نمی‌شود gpt-4', - description: 'برای استفاده از gpt-4، لطفاً کلید API را تنظیم کنید.', - }, - feature: { - groupChat: { - title: 'تقویت گفتگو', - description: 'افزودن تنظیمات پیش از گفتگو برای برنامه‌ها می‌تواند تجربه کاربری را بهبود بخشد.', - }, - groupExperience: { - title: 'تقویت تجربه', - }, - conversationOpener: { - title: 'شروع‌کننده گفتگو', - description: 'در یک برنامه چت، اولین جمله‌ای که AI فعالانه با کاربر صحبت می‌کند، معمولاً به عنوان خوشامدگویی استفاده می‌شود.', - }, - 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: 'Used to set the similarity threshold for annotation reply.', - easyMatch: 'تطابق آسان', - accurateMatch: 'تطابق دقیق', - }, - matchVariable: { - title: 'تغییر متغیر', - choosePlaceholder: 'انتخاب متغیر تغییر', - }, - cacheManagement: 'حاشیه نویسی', - cached: 'حاشیه نویسی شده', - remove: 'حذف', - removeConfirm: 'این حاشیه نویسی را حذف کنید؟', - add: 'افزودن حاشیه نویسی', - edit: 'ویرایش حاشیه نویسی', - }, - dataSet: { - title: 'زمینه', - noData: 'شما می‌توانید دانش را به عنوان زمینه وارد کنید', - selectTitle: 'انتخاب دانش مرجع', - selected: 'دانش انتخاب شده', - noDataSet: 'هیچ دانشی یافت نشد', - toCreate: 'برای ایجاد بروید', - notSupportSelectMulti: 'در حال حاضر فقط یک دانش پشتیبانی می‌شود', - queryVariable: { - title: 'متغیر پرس و جو', - tip: 'این متغیر به عنوان ورودی پرس و جو برای بازیابی زمینه استفاده خواهد شد و اطلاعات زمینه مرتبط با ورودی این متغیر را به دست می‌آورد.', - choosePlaceholder: 'انتخاب متغیر پرس و جو', - noVar: 'بدون متغیر', - noVarTip: 'لطفاً متغیری را در بخش متغیرها ایجاد کنید', - unableToQueryDataSet: 'عدم امکان پرس و جو از دانش', - unableToQueryDataSetTip: 'پرس و جوی موفقیت آمیز دانش ممکن نیست، لطفاً یک متغیر پرس و جو زمینه را در بخش زمینه انتخاب کنید.', - ok: 'باشه', - contextVarNotEmpty: 'متغیر پرس و جو زمینه نمی‌تواند خالی باشد', - deleteContextVarTitle: 'متغیر "{{varName}}" را حذف کنید؟', - deleteContextVarTip: 'این متغیر به عنوان متغیر پرس و جو زمینه تنظیم شده است و حذف آن بر استفاده عادی از دانش تأثیر می‌گذارد. اگر هنوز نیاز به حذف دارید، لطفاً آن را در بخش زمینه دوباره انتخاب کنید.', - }, - }, - tools: { - title: 'ابزارها', - tips: 'ابزارها یک روش استاندارد برای فراخوانی API فراهم می‌کنند و ورودی کاربر یا متغیرها را به عنوان پارامترهای درخواست برای پرس و جو داده‌های خارجی به عنوان زمینه می‌گیرند.', - toolsInUse: '{{count}} ابزار در حال استفاده', - modal: { - title: 'ابزار', - toolType: { - title: 'نوع ابزار', - placeholder: 'لطفاً نوع ابزار را انتخاب کنید', - }, - name: { - title: 'نام', - placeholder: 'لطفاً نام را وارد کنید', - }, - variableName: { - title: 'نام متغیر', - placeholder: 'لطفاً نام متغیر را وارد کنید', - }, - }, - }, - conversationHistory: { - title: 'تاریخچه مکالمه', - description: 'تنظیم پیشوند نام‌ها برای نقش‌های مکالمه', - tip: 'تاریخچه مکالمه فعال نشده است، لطفاً را در فراخوانی بالا اضافه کنید.', - learnMore: 'بیشتر بدانید', - editModal: { - title: 'ویرایش نام نقش‌های مکالمه', - userPrefix: 'پیشوند کاربر', - assistantPrefix: 'پیشوند دستیار', - }, - }, - toolbox: { - title: 'جعبه ابزار', - }, - moderation: { - title: 'مدیریت محتوا', - description: 'خروجی مدل را با استفاده از API مدیریت یا نگهداری فهرست کلمات حساس امن کنید.', - allEnabled: 'محتوای ورودی/خروجی فعال شده', - inputEnabled: 'محتوای ورودی فعال شده', - outputEnabled: 'محتوای خروجی فعال شده', - modal: { - title: 'تنظیمات مدیریت محتوا', - provider: { - title: 'ارائه دهنده', - openai: 'مدیریت OpenAI', - openaiTip: { - prefix: 'مدیریت OpenAI نیاز به کلید API OpenAI دارد که در ', - suffix: ' تنظیم شده باشد.', - }, - keywords: 'کلمات کلیدی', - }, - keywords: { - tip: 'هر خط یک کلمه، با شکست خطوط جدا شده. حداکثر 100 کاراکتر در هر خط.', - placeholder: 'هر خط یک کلمه، با شکست خطوط جدا شده', - line: 'خط', - }, - content: { - input: 'مدیریت محتوای ورودی', - output: 'مدیریت محتوای خروجی', - preset: 'پاسخ‌های پیش فرض', - placeholder: 'محتوای پاسخ‌های پیش فرض در اینجا', - condition: 'مدیریت محتوای ورودی و خروجی حداقل یک مورد فعال شده است', - fromApi: 'پاسخ‌های پیش فرض از API برگردانده می‌شود', - errorMessage: 'پاسخ‌های پیش فرض نمی‌تواند خالی باشد', - supportMarkdown: 'پشتیبانی از Markdown', - }, - openaiNotConfig: { - before: 'مدیریت OpenAI نیاز به کلید API OpenAI دارد که در', - after: '', - }, - }, - contentEnableLabel: 'مدیریت محتوا فعال شده است', - }, - fileUpload: { - title: 'آپلود فایل', - description: 'جعبه ورودی چت امکان آپلود تصاویر، اسناد و سایر فایل‌ها را فراهم می‌کند.', - supportedTypes: 'انواع فایل‌های پشتیبانی شده', - numberLimit: 'حداکثر آپلود', - modalTitle: 'تنظیمات آپلود فایل', - }, - imageUpload: { - title: 'آپلود تصویر', - description: 'امکان آپلود تصاویر را فراهم می‌کند.', - supportedTypes: 'انواع فایل‌های پشتیبانی شده', - numberLimit: 'حداکثر آپلود', - modalTitle: 'تنظیمات آپلود تصویر', - }, - bar: { - empty: 'فعال‌سازی ویژگی برای بهبود تجربه کاربری اپلیکیشن وب', - enableText: 'ویژگی‌های فعال', - manage: 'مدیریت', - }, - documentUpload: { - title: 'سند', - description: 'فعال‌سازی سند به مدل اجازه می‌دهد اسناد را دریافت کرده و درباره آن‌ها پاسخ دهد.', - }, - audioUpload: { - title: 'صوتی', - description: 'فعال‌سازی صوت به مدل اجازه می‌دهد فایل‌های صوتی را برای رونویسی و تجزیه و تحلیل پردازش کند.', - }, - }, - codegen: { - apply: 'درخواست', - resTitle: 'کد تولید شده', - generate: 'تولید', - loading: 'تولید کد...', - applyChanges: 'اعمال تغییرات', - generatedCodeTitle: 'کد تولید شده', - title: 'ژنراتور کد', - instruction: 'دستورالعمل', - instructionPlaceholder: 'توضیحات دقیق کدی را که می خواهید تولید کنید وارد کنید.', - overwriteConfirmMessage: 'این عمل کد موجود را بازنویسی می کند. آیا می خواهید ادامه دهید؟', - overwriteConfirmTitle: 'کد موجود را بازنویسی کنید؟', - noDataLine2: 'پیش نمایش کد در اینجا نشان داده می شود.', - noDataLine1: 'مورد استفاده خود را در سمت چپ شرح دهید،', - description: 'Code Generator از مدل های پیکربندی شده برای تولید کد با کیفیت بالا بر اساس دستورالعمل های شما استفاده می کند. لطفا دستورالعمل های واضح و دقیق ارائه دهید.', - }, - generate: { - template: { - pythonDebugger: { - name: 'اشکال زدایی پایتون', - instruction: 'رباتی که می تواند کد شما را بر اساس دستورالعمل شما تولید و اشکال زدایی کند', - }, - translation: { - name: 'ترجمه', - instruction: 'مترجمی که می تواند چندین زبان را ترجمه کند', - }, - professionalAnalyst: { - name: 'تحلیلگر حرفه ای', - instruction: 'استخراج بینش، شناسایی ریسک و تقطیر اطلاعات کلیدی از گزارش های طولانی در یک یادداشت', - }, - excelFormulaExpert: { - name: 'کارشناس فرمول اکسل', - instruction: 'یک ربات چت که می تواند به کاربران تازه کار کمک کند تا فرمول های اکسل را بر اساس دستورالعمل های کاربر درک، استفاده و ایجاد کنند', - }, - travelPlanning: { - name: 'برنامه ریزی سفر', - instruction: 'دستیار برنامه ریزی سفر ابزاری هوشمند است که برای کمک به کاربران در برنامه ریزی بدون زحمت سفرهای خود طراحی شده است', - }, - SQLSorcerer: { - name: 'جادوگر SQL', - instruction: 'تبدیل زبان روزمره به کوئری های SQL', - }, - GitGud: { - name: 'گیت گود', - instruction: 'فرمان های Git مناسب را بر اساس اکشن های کنترل نسخه توصیف شده توسط کاربر ایجاد کنید', - }, - meetingTakeaways: { - name: 'نکات مهم جلسه', - instruction: 'جلسات را به خلاصه های مختصر از جمله موضوعات بحث، نکات کلیدی و موارد اقدام تقطیر کنید', - }, - writingsPolisher: { - name: 'پولیش نوشتن', - instruction: 'از تکنیک های پیشرفته ویرایش کپی برای بهبود نوشته های خود استفاده کنید', - }, - }, - title: 'ژنراتور سریع', - resTitle: 'اعلان تولید شده', - overwriteTitle: 'پیکربندی موجود را لغو کنید؟', - generate: 'تولید', - apply: 'درخواست', - instruction: 'دستورالعمل', - overwriteMessage: 'اعمال این اعلان پیکربندی موجود را لغو می کند.', - tryIt: 'آن را امتحان کنید', - loading: 'هماهنگ کردن برنامه برای شما...', - description: 'Prompt Generator از مدل پیکربندی شده برای بهینه سازی درخواست ها برای کیفیت بالاتر و ساختار بهتر استفاده می کند. لطفا دستورالعمل های واضح و دقیق بنویسید.', - press: 'فشار', - to: 'به', - version: 'نسخه', - latest: 'آخرین', - optional: 'اختیاری', - dismiss: 'رد کردن', - insertContext: 'متن را وارد کنید', - optimizationNote: 'یادداشت بهینه‌سازی', - versions: 'نسخه‌ها', - optimizePromptTooltip: 'بهینه‌سازی در تولیدکننده پرامپت', - idealOutput: 'خروجی ایده ال', - instructionPlaceHolderLine1: 'خروجی را مختصرتر کنید و نکات اصلی را حفظ کنید.', - instructionPlaceHolderTitle: 'توصیف کنید که چگونه می‌خواهید این دستورالعمل را بهبود ببخشید. به عنوان مثال:', - idealOutputPlaceholder: 'ایده‌آل پاسخ شما چه شکلی باید باشد؟ لطفاً درباره فرمت، طول، لحن و الزامات محتوایی آن توضیح دهید ...', - newNoDataLine1: 'یک دستور در ستون چپ بنویسید و برای مشاهده پاسخ، روی تولید کلیک کنید.', - instructionPlaceHolderLine3: 'لحن خیلی تند است، لطفاً آن را دوستانه‌تر کنید.', - codeGenInstructionPlaceHolderLine: 'هر چه بازخورد دقیق‌تر باشد، مانند نوع داده‌های ورودی و خروجی و همچنین نحوه پردازش متغیرها، تولید کد دقیق‌تر خواهد بود.', - instructionPlaceHolderLine2: 'فرمت خروجی نادرست است، لطفاً به شکل JSON به دقت پایبند باشید.', - }, - resetConfig: { - title: 'بازنشانی را تأیید کنید؟', - message: 'بازنشانی تغییرات را دور می اندازد و آخرین پیکربندی منتشر شده را بازیابی می کند.', - }, - errorMessage: { - notSelectModel: 'لطفا یک مدل را انتخاب کنید', - waitForResponse: 'لطفا منتظر بمانید تا پاسخ به پیام قبلی کامل شود.', - queryRequired: 'درخواست متن الزامی است.', - waitForFileUpload: 'لطفا منتظر بمانید تا فایل/فایل ها آپلود شوند', - waitForImgUpload: 'لطفا منتظر بمانید تا تصویر آپلود شود', - waitForBatchResponse: 'لطفا منتظر بمانید تا پاسخ به کار دسته ای تکمیل شود.', - nameOfKeyRequired: 'نام کلید: {{key}} الزامی است', - valueOfVarRequired: 'مقدار {{key}} نمی‌تواند خالی باشد', - }, - warningMessage: { - timeoutExceeded: 'نتایج به دلیل مهلت زمانی نمایش داده نمی شوند. لطفا برای جمع آوری نتایج کامل به گزارش ها مراجعه کنید.', - }, - variableTable: { - key: 'کلید متغیر', - typeSelect: 'انتخاب', - action: 'اقدامات', - typeString: 'رشته', - name: 'نام فیلد ورودی کاربر', - type: 'نوع ورودی', - }, - varKeyError: { - canNoBeEmpty: '{{key}} مورد نیاز است', - tooLong: '{{key}} خیلی طولانی است. نمی‌تواند بیش از ۳۰ کاراکتر باشد', - notValid: '{{key}} نامعتبر است. فقط می‌تواند شامل حروف، اعداد و زیرخط باشد', - notStartWithNumber: '{{key}} نمی‌تواند با یک عدد شروع شود', - keyAlreadyExists: '{{key}} قبلاً موجود است', - }, - otherError: { - promptNoBeEmpty: 'اعلان نمی تواند خالی باشد', - historyNoBeEmpty: 'سابقه مکالمه باید در اعلان تنظیم شود', - queryNoBeEmpty: 'پرس و جو باید در اعلان تنظیم شود', - }, - variableConfig: { - 'file': { - image: { - name: 'تصویر', - }, - audio: { - name: 'صوتی', - }, - document: { - name: 'سند', - }, - video: { - name: 'ویدئو', - }, - custom: { - name: 'انواع فایل های دیگر', - createPlaceholder: ' پسوند فایل، به عنوان مثال .doc', - description: 'انواع فایل های دیگر را مشخص کنید.', - }, - supportFileTypes: 'انواع فایل های پشتیبانی', - }, - 'errorMsg': { - optionRepeat: 'دارای گزینه های تکرار', - varNameCanBeRepeat: 'نام متغیر را نمی توان تکرار کرد', - labelNameRequired: 'نام برچسب الزامی است', - atLeastOneOption: 'حداقل یک گزینه مورد نیاز است', - }, - 'number': 'شماره', - 'hide': 'مخفی کردن', - 'both': 'هر دو', - 'single-file': 'تک فایل', - 'select': 'انتخاب', - 'inputPlaceholder': 'لطفا وارد کنید', - 'editModalTitle': 'ویرایش فیلد ورودی', - 'paragraph': 'پاراگراف', - 'fieldType': 'نوع فیلد', - 'maxLength': 'حداکثر طول', - 'varName': 'نام متغیر', - 'maxNumberOfUploads': 'حداکثر تعداد آپلود', - 'noDefaultValue': 'بدون مقدار پیش فرض', - 'addOption': 'افزودن گزینه', - 'stringTitle': 'گزینه های جعبه متن فرم', - 'options': 'گزینه', - 'selectDefaultValue': 'مقدار پیش فرض را انتخاب کنید', - 'content': 'محتوای', - 'multi-files': 'لیست فایل ها', - 'labelName': 'نام برچسب', - 'defaultValue': 'مقدار پیش فرض', - 'required': 'مورد نیاز', - 'uploadFileTypes': 'آپلود انواع فایل', - 'apiBasedVar': 'متغیر مبتنی بر API', - 'addModalTitle': 'افزودن فیلد ورودی', - 'string': 'متن کوتاه', - 'text-input': 'متن کوتاه', - 'localUpload': 'آپلود محلی', - 'json': 'کد JSON', - 'jsonSchema': 'طرح‌واره JSON', - 'optional': 'اختیاری', - 'checkbox': 'چک باکس', - 'unit': 'واحد', - 'tooltips': 'Tooltips', - 'uploadMethod': 'روش آپلود', - 'displayName': 'نام نمایشی', - 'startChecked': 'شروع بررسی شده', - 'noDefaultSelected': 'انتخاب نکنید', - 'placeholder': 'مکان نگهدارنده', - 'showAllSettings': 'نمایش همه تنظیمات', - 'startSelectedOption': 'گزینه انتخاب شده را شروع کنید', - 'defaultValuePlaceholder': 'مقدار پیش فرض را وارد کنید تا فیلد را از قبل پر کنید', - 'unitPlaceholder': 'نمایش واحدها بعد از اعداد، به عنوان مثال توکن ها', - 'placeholderPlaceholder': 'متن را وارد کنید تا زمانی که فیلد خالی است نمایش داده شود', - 'tooltipsPlaceholder': 'نوشتار مفیدی را که هنگام نگه داشتن ماوس روی برچسب نشان داده می شود وارد کنید', - 'description': 'تنظیم برای متغیر {{varName}}', - 'notSet': 'تنظیم نشده است، سعی کنید {{input}} را در پیش‌نویس وارد کنید', - 'maxNumberTip': 'سند < {{docLimit}}، تصویر < {{imgLimit}}، صوت < {{audioLimit}}، ویدئو < {{videoLimit}}', - }, - vision: { - visionSettings: { - url: 'آدرس', - high: 'بالا', - low: 'کم', - resolution: 'وضوح', - uploadLimit: 'محدودیت آپلود', - uploadMethod: 'روش آپلود', - localUpload: 'آپلود محلی', - title: 'تنظیمات بینایی', - both: 'هر دو', - resolutionTooltip: 'رزولوشن پایین به مدل اجازه می‌دهد نسخه‌ای کم‌رزولوشن از تصویر با اندازه ۵۱۲ در ۵۱۲ دریافت کند و تصویر را با بودجه ۶۵ توکن نمایش دهد. این امکان باعث می‌شود API پاسخ‌ها را سریع‌تر بازگرداند و توکن‌های ورودی کمتری برای مواردی که نیازی به جزئیات بالا ندارند، مصرف کند.\n\nرزولوشن بالا ابتدا به مدل اجازه می‌دهد تصویر کم‌رزولوشن را ببیند و سپس کات‌های دقیقی از تصاویر ورودی به صورت مربع‌های ۵۱۲ پیکسلی بنا بر اندازه تصویر ورودی ایجاد می‌کند. هر کدام از کات‌های دقیق از دو برابر بودجه توکن استفاده می‌کنند که مجموعاً ۱۲۹ توکن می‌شود.', - }, - settings: 'تنظیمات', - name: 'چشم انداز', - onlySupportVisionModelTip: 'فقط از مدل های بینایی پشتیبانی می کند', - description: 'Enable Vision به مدل اجازه می دهد تا تصاویر را بگیرد و به سؤالات مربوط به آنها پاسخ دهد.', - }, - voice: { - voiceSettings: { - voice: 'صوتی', - autoPlayEnabled: 'در', - autoPlayDisabled: 'خاموش', - language: 'زبان', - title: 'تنظیمات صدا', - resolutionTooltip: 'زبان پشتیبانی از صدای متن به گفتار。', - autoPlay: 'پخش خودکار', - }, - settings: 'تنظیمات', - name: 'صوتی', - description: 'متن به گفتار به گفتار تنظیمات', - defaultDisplay: 'صدای پیش فرض', - }, - openingStatement: { - tooShort: 'حداقل 20 کلمه درخواست اولیه برای ایجاد یک سخنرانی آغازین برای مکالمه مورد نیاز است.', - writeOpener: 'ویرایش بازکن', - add: 'اضافه کردن', - title: 'افتتاحیه مکالمه', - openingQuestion: 'سوالات آغازین', - noDataPlaceHolder: 'شروع مکالمه با کاربر می تواند به هوش مصنوعی کمک کند تا در برنامه های مکالمه ارتباط نزدیک تری با آنها برقرار کند.', - placeholder: 'پیام شروع خود را اینجا بنویسید، می‌توانید از متغیرها استفاده کنید، امتحان کنید تایپ {{variable}}.', - openingQuestionPlaceholder: 'می‌توانید از متغیرها استفاده کنید، امتحان کنید {{variable}} را تایپ کنید.', - varTip: 'می‌توانید از متغیرها استفاده کنید، نوع {{variable}} را امتحان کنید', - notIncludeKey: 'پیام اولیه شامل متغیر {{key}} نیست. لطفاً آن را به پیام اولیه اضافه کنید.', - }, - modelConfig: { - modeType: { - chat: 'چت', - completion: 'کامل', - }, - model: 'مدل', - title: 'مدل و پارامترها', - setTone: 'لحن پاسخ ها را تنظیم کنید', - }, - inputs: { - run: 'اجرا', - queryTitle: 'محتوای پرس و جو', - userInputField: 'فیلد ورودی کاربر', - previewTitle: 'پیش نمایش سریع', - title: 'اشکال زدایی و پیش نمایش', - queryPlaceholder: 'لطفا متن درخواست را وارد کنید.', - noPrompt: 'سعی کنید مقداری اعلان در ورودی پیش از اعلان بنویسید', - completionVarTip: 'مقدار متغیر را پر کنید، که هر بار که سوالی ارسال می شود، به طور خودکار در کلمات سریع جایگزین می شود.', - chatVarTip: 'مقدار متغیر را پر کنید، که هر بار که یک جلسه جدید شروع می شود، به طور خودکار در کلمه prompt جایگزین می شود', - noVar: 'مقدار متغیر را پر کنید، که هر بار که یک جلسه جدید شروع می شود، به طور خودکار در کلمه prompt جایگزین می شود.', - }, - datasetConfig: { - retrieveOneWay: { - title: 'بازیابی N-to-1', - description: 'بر اساس هدف کاربر و توضیحات دانش، عامل به طور مستقل بهترین دانش را برای پرس و جو انتخاب می کند. بهترین برای برنامه های کاربردی با دانش متمایز و محدود.', - }, - retrieveMultiWay: { - title: 'بازیابی چند مسیری', - description: 'بر اساس هدف کاربر، پرس و جوها را در تمام دانش انجام می دهد، متن مربوطه را از چند منبع بازیابی می کند و پس از رتبه بندی مجدد، بهترین نتایج را مطابق با پرس و جو کاربر انتخاب می کند.', - }, - top_k: 'K بالا', - knowledgeTip: 'برای افزودن دانش روی دکمه " کلیک کنید', - score_threshold: 'آستانه امتیاز', - settingTitle: 'تنظیمات بازیابی', - params: 'پارام ها', - embeddingModelRequired: 'یک مدل تعبیه پیکربندی شده مورد نیاز است', - rerankModelRequired: 'یک مدل Rerank پیکربندی شده مورد نیاز است', - score_thresholdTip: 'برای تنظیم آستانه شباهت برای فیلتر کردن تکه ها استفاده می شود.', - top_kTip: 'برای فیلتر کردن تکه هایی که بیشتر شبیه به سؤالات کاربر هستند استفاده می شود. این سیستم همچنین با توجه به max_tokens مدل انتخاب شده، مقدار Top K را به صورت پویا تنظیم می کند.', - retrieveChangeTip: 'اصلاح حالت نمایه و حالت بازیابی ممکن است بر کاربردهای مرتبط با این دانش تأثیر بگذارد.', - }, - assistantType: { - chatAssistant: { - description: 'ساخت یک دستیار مبتنی بر چت با استفاده از یک مدل زبان بزرگ', - name: 'دستیار پایه', - }, - agentAssistant: { - description: 'یک عامل هوشمند بسازید که بتواند به طور مستقل ابزارهایی را برای تکمیل تسک ها انتخاب کند.', - name: 'دستیار نماینده', - }, - name: 'نوع دستیار', - }, - agent: { - agentModeType: { - functionCall: 'فراخوانی تابع', - ReACT: 'واکنش', - }, - setting: { - maximumIterations: { - name: 'حداکثر تکرارها', - description: 'تعداد تکرارهایی را که یک دستیار عامل می تواند اجرا کند محدود کنید', - }, - name: 'تنظیمات نماینده', - description: 'تنظیمات Agent Assistant امکان تنظیم حالت عامل و ویژگی های پیشرفته مانند اعلان های داخلی را فراهم می کند که فقط در نوع Agent موجود است.', - }, - tools: { - enabled: 'فعال', - name: 'ابزار', - description: 'استفاده از ابزارها می تواند قابلیت های LLM مانند جستجو در اینترنت یا انجام محاسبات علمی را گسترش دهد', - }, - agentMode: 'حالت عامل', - nextIteration: 'تکرار بعدی', - promptPlaceholder: 'درخواست خود را اینجا بنویسید', - agentModeDes: 'نوع حالت استنتاج را برای عامل تنظیم کنید', - buildInPrompt: 'اعلان داخلی', - firstPrompt: 'اولین اعلان', - }, - result: 'متن خروجی', - completionSubTitle: 'اعلان پیشوند', - variableTitle: 'متغیرهای', - formattingChangedTitle: 'قالب بندی تغییر کرد', - chatSubTitle: 'دستورالعمل', - debugAsSingleModel: 'اشکال زدایی به عنوان مدل واحد', - publishAs: 'انتشار به عنوان', - duplicateModel: 'تکراری', - noResult: 'خروجی در اینجا نمایش داده می شود.', - debugAsMultipleModel: 'اشکال زدایی به عنوان چندین مدل', - formattingChangedText: 'با تغییر قالب بندی، ناحیه اشکال زدایی بازنشانی می شود، مطمئن هستید؟', - variableTip: 'کاربران متغیرها را در یک فرم پر می کنند و به طور خودکار متغیرها را در اعلان جایگزین می کنند.', - autoAddVar: 'متغیرهای تعریف نشده که در پیش اعلان ارجاع داده شده اند، آیا می خواهید آنها را به صورت ورودی کاربر اضافه کنید؟', - promptTip: 'پرومپت‌ها پاسخ‌های هوش مصنوعی را با دستورالعمل‌ها و محدودیت‌ها هدایت می‌کنند. متغیرهایی مانند {{input}} را وارد کنید. این پرومپت برای کاربران قابل مشاهده نخواهد بود.', - notSetVar: 'متغیرها به کاربران امکان می‌دهند تا هنگام پر کردن فرم‌ها، کلمات راهنما یا سخنان افتتاحیه را وارد کنند. می‌توانید امتحان کنید که \'{{input}}\' را در کلمات راهنما وارد کنید.', -} - -export default translation diff --git a/web/i18n/fa-IR/app-log.json b/web/i18n/fa-IR/app-log.json new file mode 100644 index 0000000000..48cf53227d --- /dev/null +++ b/web/i18n/fa-IR/app-log.json @@ -0,0 +1,110 @@ +{ + "title": "لاگ‌ها", + "description": "لاگ‌ها وضعیت اجرایی برنامه را ثبت می‌کنند، شامل ورودی‌های کاربر و پاسخ‌های هوش مصنوعی.", + "dateTimeFormat": "MM/DD/YYYY hh:mm:ss A", + "table": { + "header": { + "updatedTime": "زمان به‌روزرسانی", + "time": "زمان ایجاد", + "endUser": "کاربر نهایی یا حساب", + "input": "ورودی", + "output": "خروجی", + "summary": "عنوان", + "messageCount": "تعداد پیام", + "userRate": "امتیاز کاربر", + "adminRate": "امتیاز اپراتور", + "startTime": "زمان شروع", + "status": "وضعیت", + "runtime": "زمان اجرا", + "tokens": "توکن‌ها", + "user": "کاربر نهایی یا حساب", + "version": "نسخه", + "triggered_from": "فعال شده توسط" + }, + "pagination": { + "previous": "قبلی", + "next": "بعدی" + }, + "empty": { + "noChat": "هنوز مکالمه‌ای وجود ندارد", + "noOutput": "خروجی وجود ندارد", + "element": { + "title": "کسی هست؟", + "content": "در اینجا تعاملات بین کاربران نهایی و برنامه‌های هوش مصنوعی را مشاهده و حاشیه‌نویسی کنید تا دقت هوش مصنوعی بهبود یابد. می‌توانید به اشتراک بگذارید یا برنامه وب را تست کنید و سپس به این صفحه برگردید." + } + } + }, + "detail": { + "time": "زمان", + "conversationId": "شناسه مکالمه", + "promptTemplate": "قالب درخواست", + "promptTemplateBeforeChat": "قالب درخواست قبل از چت · به عنوان پیام سیستمی", + "annotationTip": "بهبودها توسط {{user}} علامت‌گذاری شده است", + "timeConsuming": "", + "second": "ثانیه", + "tokenCost": "توکن مصرفی", + "loading": "در حال بارگذاری", + "operation": { + "like": "پسندیدن", + "dislike": "نپسندیدن", + "addAnnotation": "اضافه کردن بهبود", + "editAnnotation": "ویرایش بهبود", + "annotationPlaceholder": "پاسخ مورد انتظاری که می‌خواهید هوش مصنوعی بدهد را وارد کنید، که می‌تواند برای بهبود مدل و کیفیت تولید متن در آینده استفاده شود." + }, + "variables": "متغیرها", + "uploadImages": "تصاویر آپلود شده", + "modelParams": "پارامترهای مدل" + }, + "filter": { + "period": { + "today": "امروز", + "last7days": "7 روز گذشته", + "last4weeks": "4 هفته گذشته", + "last3months": "3 ماه گذشته", + "last12months": "12 ماه گذشته", + "monthToDate": "از ابتدای ماه تاکنون", + "quarterToDate": "از ابتدای فصل تاکنون", + "yearToDate": "از ابتدای سال تاکنون", + "allTime": "همه زمان‌ها", + "last30days": "۳۰ روز گذشته", + "custom": "سفارشی" + }, + "annotation": { + "all": "همه", + "annotated": "بهبودهای حاشیه‌نویسی شده ({{count}} آیتم)", + "not_annotated": "حاشیه‌نویسی نشده" + }, + "sortBy": "مرتب‌سازی بر اساس:", + "descending": "نزولی", + "ascending": "صعودی" + }, + "workflowTitle": "لاگ‌های جریان کاری", + "workflowSubtitle": "لاگ عملیات خودکار را ثبت کرده است.", + "runDetail": { + "title": "لاگ مکالمه", + "workflowTitle": "جزئیات لاگ", + "fileListLabel": "جزئیات فایل", + "fileListDetail": "جزئیات", + "testWithParams": "تست با پارامترها" + }, + "promptLog": "لاگ درخواست", + "agentLog": "لاگ عامل", + "viewLog": "مشاهده لاگ", + "agentLogDetail": { + "agentMode": "حالت عامل", + "toolUsed": "ابزار استفاده شده", + "iterations": "تکرارها", + "iteration": "تکرار", + "finalProcessing": "پردازش نهایی" + }, + "dateFormat": "MM/DD/YYYY", + "triggerBy": { + "debugging": "رفع اشکال", + "appRun": "وب اپ", + "webhook": "وب‌هوک", + "schedule": "برنامه", + "plugin": "افزونه", + "ragPipelineRun": "خط لوله RAG", + "ragPipelineDebugging": "رفع اشکال RAG" + } +} diff --git a/web/i18n/fa-IR/app-log.ts b/web/i18n/fa-IR/app-log.ts deleted file mode 100644 index 09587da817..0000000000 --- a/web/i18n/fa-IR/app-log.ts +++ /dev/null @@ -1,112 +0,0 @@ -const translation = { - title: 'لاگ‌ها', - description: 'لاگ‌ها وضعیت اجرایی برنامه را ثبت می‌کنند، شامل ورودی‌های کاربر و پاسخ‌های هوش مصنوعی.', - dateTimeFormat: 'MM/DD/YYYY hh:mm:ss A', - table: { - header: { - updatedTime: 'زمان به‌روزرسانی', - time: 'زمان ایجاد', - endUser: 'کاربر نهایی یا حساب', - input: 'ورودی', - output: 'خروجی', - summary: 'عنوان', - messageCount: 'تعداد پیام', - userRate: 'امتیاز کاربر', - adminRate: 'امتیاز اپراتور', - startTime: 'زمان شروع', - status: 'وضعیت', - runtime: 'زمان اجرا', - tokens: 'توکن‌ها', - user: 'کاربر نهایی یا حساب', - version: 'نسخه', - triggered_from: 'فعال شده توسط', - }, - pagination: { - previous: 'قبلی', - next: 'بعدی', - }, - empty: { - noChat: 'هنوز مکالمه‌ای وجود ندارد', - noOutput: 'خروجی وجود ندارد', - element: { - title: 'کسی هست؟', - content: 'در اینجا تعاملات بین کاربران نهایی و برنامه‌های هوش مصنوعی را مشاهده و حاشیه‌نویسی کنید تا دقت هوش مصنوعی بهبود یابد. می‌توانید به اشتراک بگذارید یا برنامه وب را تست کنید و سپس به این صفحه برگردید.', - }, - }, - }, - detail: { - time: 'زمان', - conversationId: 'شناسه مکالمه', - promptTemplate: 'قالب درخواست', - promptTemplateBeforeChat: 'قالب درخواست قبل از چت · به عنوان پیام سیستمی', - annotationTip: 'بهبودها توسط {{user}} علامت‌گذاری شده است', - timeConsuming: '', - second: 'ثانیه', - tokenCost: 'توکن مصرفی', - loading: 'در حال بارگذاری', - operation: { - like: 'پسندیدن', - dislike: 'نپسندیدن', - addAnnotation: 'اضافه کردن بهبود', - editAnnotation: 'ویرایش بهبود', - annotationPlaceholder: 'پاسخ مورد انتظاری که می‌خواهید هوش مصنوعی بدهد را وارد کنید، که می‌تواند برای بهبود مدل و کیفیت تولید متن در آینده استفاده شود.', - }, - variables: 'متغیرها', - uploadImages: 'تصاویر آپلود شده', - modelParams: 'پارامترهای مدل', - }, - filter: { - period: { - today: 'امروز', - last7days: '7 روز گذشته', - last4weeks: '4 هفته گذشته', - last3months: '3 ماه گذشته', - last12months: '12 ماه گذشته', - monthToDate: 'از ابتدای ماه تاکنون', - quarterToDate: 'از ابتدای فصل تاکنون', - yearToDate: 'از ابتدای سال تاکنون', - allTime: 'همه زمان‌ها', - last30days: '۳۰ روز گذشته', - custom: 'سفارشی', - }, - annotation: { - all: 'همه', - annotated: 'بهبودهای حاشیه‌نویسی شده ({{count}} آیتم)', - not_annotated: 'حاشیه‌نویسی نشده', - }, - sortBy: 'مرتب‌سازی بر اساس:', - descending: 'نزولی', - ascending: 'صعودی', - }, - workflowTitle: 'لاگ‌های جریان کاری', - workflowSubtitle: 'لاگ عملیات خودکار را ثبت کرده است.', - runDetail: { - title: 'لاگ مکالمه', - workflowTitle: 'جزئیات لاگ', - fileListLabel: 'جزئیات فایل', - fileListDetail: 'جزئیات', - testWithParams: 'تست با پارامترها', - }, - promptLog: 'لاگ درخواست', - agentLog: 'لاگ عامل', - viewLog: 'مشاهده لاگ', - agentLogDetail: { - agentMode: 'حالت عامل', - toolUsed: 'ابزار استفاده شده', - iterations: 'تکرارها', - iteration: 'تکرار', - finalProcessing: 'پردازش نهایی', - }, - dateFormat: 'MM/DD/YYYY', - triggerBy: { - debugging: 'رفع اشکال', - appRun: 'وب اپ', - webhook: 'وب‌هوک', - schedule: 'برنامه', - plugin: 'افزونه', - ragPipelineRun: 'خط لوله RAG', - ragPipelineDebugging: 'رفع اشکال RAG', - }, -} - -export default translation diff --git a/web/i18n/fa-IR/app-overview.json b/web/i18n/fa-IR/app-overview.json new file mode 100644 index 0000000000..286fa40c17 --- /dev/null +++ b/web/i18n/fa-IR/app-overview.json @@ -0,0 +1,187 @@ +{ + "welcome": { + "firstStepTip": "برای شروع،", + "enterKeyTip": "کلید API خود را در زیر وارد کنید", + "getKeyTip": "کلید API خود را از داشبورد OpenAI دریافت کنید", + "placeholder": "کلید 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": "آدرس عمومی", + "preview": "پیش‌نمایش", + "regenerate": "تولید مجدد", + "regenerateNotice": "آیا می‌خواهید آدرس عمومی را دوباره تولید کنید؟", + "preUseReminder": "لطفاً قبل از ادامه، web app را فعال کنید.", + "settings": { + "entry": "تنظیمات", + "title": "تنظیمات web app", + "webName": "نام web app", + "webDesc": "توضیحات web app", + "webDescTip": "این متن در سمت مشتری نمایش داده می‌شود و راهنمایی‌های اولیه در مورد نحوه استفاده از برنامه را ارائه می‌دهد", + "webDescPlaceholder": "توضیحات web app را وارد کنید", + "language": "زبان", + "workflow": { + "title": "مراحل کاری", + "show": "نمایش", + "hide": "مخفی کردن", + "showDesc": "نمایش یا پنهان کردن جزئیات گردش کار در web app", + "subTitle": "جزئیات گردش کار" + }, + "chatColorTheme": "تم رنگی چت", + "chatColorThemeDesc": "تم رنگی چت‌بات را تنظیم کنید", + "chatColorThemeInverted": "معکوس", + "invalidHexMessage": "مقدار هگز نامعتبر", + "invalidPrivacyPolicy": "لینک سیاست حفظ حریم خصوصی نامعتبر است. لطفاً از یک لینک معتبر که با http یا https شروع میشود استفاده کنید", + "more": { + "entry": "نمایش تنظیمات بیشتر", + "copyright": "حق نسخه‌برداری", + "copyRightPlaceholder": "نام نویسنده یا سازمان را وارد کنید", + "privacyPolicy": "سیاست حفظ حریم خصوصی", + "privacyPolicyPlaceholder": "لینک سیاست حفظ حریم خصوصی را وارد کنید", + "privacyPolicyTip": "به بازدیدکنندگان کمک می‌کند تا بفهمند برنامه چه داده‌هایی را جمع‌آوری می‌کند، به سیاست حفظ حریم خصوصی Dify نگاه کنید Privacy Policy.", + "customDisclaimer": "سلب مسئولیت سفارشی", + "customDisclaimerPlaceholder": "متن سلب مسئولیت سفارشی را وارد کنید", + "customDisclaimerTip": "متن سلب مسئولیت سفارشی در سمت مشتری نمایش داده می‌شود و اطلاعات بیشتری درباره برنامه ارائه می‌دهد", + "copyrightTip": "نمایش اطلاعات حق نسخه برداری در برنامه وب", + "copyrightTooltip": "لطفا به طرح حرفه ای یا بالاتر ارتقا دهید" + }, + "sso": { + "title": "web app SSO", + "label": "احراز هویت SSO", + "description": "همه کاربران باید قبل از استفاده از web app با SSO وارد شوند", + "tooltip": "برای فعال کردن web app SSO با سرپرست تماس بگیرید" + }, + "modalTip": "تنظیمات برنامه وب سمت مشتری." + }, + "embedded": { + "entry": "جاسازی شده", + "title": "جاسازی در وب‌سایت", + "explanation": "روش‌های جاسازی برنامه چت در وب‌سایت خود را انتخاب کنید", + "iframe": "برای افزودن برنامه چت در هرجای وب‌سایت خود، این iframe را به کد HTML خود اضافه کنید.", + "scripts": "برای افزودن برنامه چت به گوشه پایین سمت راست وب‌سایت خود، این کد را به HTML خود اضافه کنید.", + "chromePlugin": "نصب افزونه Chrome Chatbot Dify", + "copied": "کپی شد", + "copy": "کپی" + }, + "qrcode": { + "title": "کد QR لینک", + "scan": "اسکن برای اشتراک‌گذاری", + "download": "دانلود کد QR" + }, + "customize": { + "way": "راه", + "entry": "سفارشی‌سازی", + "title": "سفارشی‌سازی web app AI", + "explanation": "شما می‌توانید ظاهر جلویی برنامه وب را برای برآوردن نیازهای سناریو و سبک خود سفارشی کنید.", + "way1": { + "name": "کلاینت را شاخه کنید، آن را تغییر دهید و در Vercel مستقر کنید (توصیه می‌شود)", + "step1": "کلاینت را شاخه کنید و آن را تغییر دهید", + "step1Tip": "برای شاخه کردن کد منبع به حساب GitHub خود و تغییر کد اینجا کلیک کنید", + "step1Operation": "Dify-WebClient", + "step2": "استقرار در Vercel", + "step2Tip": "برای وارد کردن مخزن به Vercel و استقرار اینجا کلیک کنید", + "step2Operation": "وارد کردن مخزن", + "step3": "پیکربندی متغیرهای محیطی", + "step3Tip": "متغیرهای محیطی زیر را در Vercel اضافه کنید" + }, + "way2": { + "name": "نوشتن کد سمت کلاینت برای فراخوانی API و استقرار آن بر روی سرور", + "operation": "مستندات" + } + }, + "launch": "راه اندازی", + "enableTooltip": { + "description": "برای فعال کردن این ویژگی، لطفاً یک گره ورودی کاربر به صفحه اضافه کنید. (ممکن است قبلاً در پیش‌نویس وجود داشته باشد، بعد از انتشار اعمال می‌شود)", + "learnMore": "بیشتر بدانید" + }, + "title": "وب اپ" + }, + "apiInfo": { + "title": "API سرویس بک‌اند", + "explanation": "به راحتی در برنامه خود یکپارچه می‌شود", + "accessibleAddress": "نقطه پایانی سرویس API", + "doc": "مرجع API" + }, + "status": { + "running": "در حال سرویس‌دهی", + "disable": "غیرفعال" + }, + "triggerInfo": { + "title": "محرک‌ها", + "explanation": "مدیریت فعال‌سازی جریان کاری", + "triggersAdded": "{{count}} محرک‌ها اضافه شدند", + "noTriggerAdded": "هیچ ماشه‌ای افزوده نشده است", + "triggerStatusDescription": "وضعیت گره تریگر در اینجا نمایش داده می‌شود. (ممکن است قبلاً در پیش‌نویس وجود داشته باشد، پس از انتشار اعمال می‌شود)", + "learnAboutTriggers": "با محرک‌ها آشنا شوید" + }, + "disableTooltip": { + "triggerMode": "ویژگی {{feature}} در حالت گره تریگر پشتیبانی نمی‌شود." + } + }, + "analysis": { + "title": "تحلیل", + "ms": "میلی‌ثانیه", + "tokenPS": "توکن/ثانیه", + "totalMessages": { + "title": "کل پیام‌ها", + "explanation": "تعداد تعاملات روزانه با هوش مصنوعی." + }, + "totalConversations": { + "title": "کل مکالمات", + "explanation": "تعداد مکالمات روزانه با هوش مصنوعی؛ مهندسی/اشکال‌زدایی پرامپت مستثنی است." + }, + "activeUsers": { + "title": "کاربران فعال", + "explanation": "کاربران منحصر به فردی که در پرسش و پاسخ با AI شرکت می‌کنند؛ مهندسی/اشکال‌زدایی دستورات مستثنی هستند." + }, + "tokenUsage": { + "title": "استفاده از توکن", + "explanation": "مصرف روزانه توکن‌های مدل زبان برای برنامه را نشان می‌دهد، که برای کنترل هزینه‌ها مفید است.", + "consumed": "مصرف‌شده" + }, + "avgSessionInteractions": { + "title": "میانگین تعاملات جلسه", + "explanation": "تعداد تعاملات پیوسته کاربر-AI؛ برای برنامه‌های مبتنی بر گفتگو." + }, + "avgUserInteractions": { + "title": "میانگین تعاملات کاربران", + "explanation": "تکرار استفاده روزانه کاربران را نشان می‌دهد. این معیار چسبندگی کاربران را نشان می‌دهد." + }, + "userSatisfactionRate": { + "title": "نرخ رضایت کاربران", + "explanation": "تعداد لایک‌ها به ازای هر ۱۰۰۰ پیام. این نشان‌دهنده نسبت پاسخ‌هایی است که کاربران به شدت رضایت دارند." + }, + "avgResponseTime": { + "title": "میانگین زمان پاسخ", + "explanation": "زمان (میلی‌ثانیه) برای پردازش/پاسخ AI؛ برای برنامه‌های مبتنی بر متن." + }, + "tps": { + "title": "سرعت خروجی توکن", + "explanation": "عملکرد مدل زبان بزرگ را اندازه‌گیری می‌کند. سرعت خروجی توکن‌های مدل زبان بزرگ از آغاز درخواست تا تکمیل خروجی را بشمارید." + } + } +} diff --git a/web/i18n/fa-IR/app-overview.ts b/web/i18n/fa-IR/app-overview.ts deleted file mode 100644 index 6fede71b20..0000000000 --- a/web/i18n/fa-IR/app-overview.ts +++ /dev/null @@ -1,189 +0,0 @@ -const translation = { - welcome: { - firstStepTip: 'برای شروع،', - enterKeyTip: 'کلید API خود را در زیر وارد کنید', - getKeyTip: 'کلید API خود را از داشبورد OpenAI دریافت کنید', - placeholder: 'کلید 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: 'آدرس عمومی', - preview: 'پیش‌نمایش', - regenerate: 'تولید مجدد', - regenerateNotice: 'آیا می‌خواهید آدرس عمومی را دوباره تولید کنید؟', - preUseReminder: 'لطفاً قبل از ادامه، web app را فعال کنید.', - settings: { - entry: 'تنظیمات', - title: 'تنظیمات web app', - webName: 'نام web app', - webDesc: 'توضیحات web app', - webDescTip: 'این متن در سمت مشتری نمایش داده می‌شود و راهنمایی‌های اولیه در مورد نحوه استفاده از برنامه را ارائه می‌دهد', - webDescPlaceholder: 'توضیحات web app را وارد کنید', - language: 'زبان', - workflow: { - title: 'مراحل کاری', - show: 'نمایش', - hide: 'مخفی کردن', - showDesc: 'نمایش یا پنهان کردن جزئیات گردش کار در web app', - subTitle: 'جزئیات گردش کار', - }, - chatColorTheme: 'تم رنگی چت', - chatColorThemeDesc: 'تم رنگی چت‌بات را تنظیم کنید', - chatColorThemeInverted: 'معکوس', - invalidHexMessage: 'مقدار هگز نامعتبر', - invalidPrivacyPolicy: 'لینک سیاست حفظ حریم خصوصی نامعتبر است. لطفاً از یک لینک معتبر که با http یا https شروع میشود استفاده کنید', - more: { - entry: 'نمایش تنظیمات بیشتر', - copyright: 'حق نسخه‌برداری', - copyRightPlaceholder: 'نام نویسنده یا سازمان را وارد کنید', - privacyPolicy: 'سیاست حفظ حریم خصوصی', - privacyPolicyPlaceholder: 'لینک سیاست حفظ حریم خصوصی را وارد کنید', - privacyPolicyTip: 'به بازدیدکنندگان کمک می‌کند تا بفهمند برنامه چه داده‌هایی را جمع‌آوری می‌کند، به سیاست حفظ حریم خصوصی Dify نگاه کنید Privacy Policy.', - customDisclaimer: 'سلب مسئولیت سفارشی', - customDisclaimerPlaceholder: 'متن سلب مسئولیت سفارشی را وارد کنید', - customDisclaimerTip: 'متن سلب مسئولیت سفارشی در سمت مشتری نمایش داده می‌شود و اطلاعات بیشتری درباره برنامه ارائه می‌دهد', - copyrightTip: 'نمایش اطلاعات حق نسخه برداری در برنامه وب', - copyrightTooltip: 'لطفا به طرح حرفه ای یا بالاتر ارتقا دهید', - }, - sso: { - title: 'web app SSO', - label: 'احراز هویت SSO', - description: 'همه کاربران باید قبل از استفاده از web app با SSO وارد شوند', - tooltip: 'برای فعال کردن web app SSO با سرپرست تماس بگیرید', - }, - modalTip: 'تنظیمات برنامه وب سمت مشتری.', - }, - embedded: { - entry: 'جاسازی شده', - title: 'جاسازی در وب‌سایت', - explanation: 'روش‌های جاسازی برنامه چت در وب‌سایت خود را انتخاب کنید', - iframe: 'برای افزودن برنامه چت در هرجای وب‌سایت خود، این iframe را به کد HTML خود اضافه کنید.', - scripts: 'برای افزودن برنامه چت به گوشه پایین سمت راست وب‌سایت خود، این کد را به HTML خود اضافه کنید.', - chromePlugin: 'نصب افزونه Chrome Chatbot Dify', - copied: 'کپی شد', - copy: 'کپی', - }, - qrcode: { - title: 'کد QR لینک', - scan: 'اسکن برای اشتراک‌گذاری', - download: 'دانلود کد QR', - }, - customize: { - way: 'راه', - entry: 'سفارشی‌سازی', - title: 'سفارشی‌سازی web app AI', - explanation: 'شما می‌توانید ظاهر جلویی برنامه وب را برای برآوردن نیازهای سناریو و سبک خود سفارشی کنید.', - way1: { - name: 'کلاینت را شاخه کنید، آن را تغییر دهید و در Vercel مستقر کنید (توصیه می‌شود)', - step1: 'کلاینت را شاخه کنید و آن را تغییر دهید', - step1Tip: 'برای شاخه کردن کد منبع به حساب GitHub خود و تغییر کد اینجا کلیک کنید', - step1Operation: 'Dify-WebClient', - step2: 'استقرار در Vercel', - step2Tip: 'برای وارد کردن مخزن به Vercel و استقرار اینجا کلیک کنید', - step2Operation: 'وارد کردن مخزن', - step3: 'پیکربندی متغیرهای محیطی', - step3Tip: 'متغیرهای محیطی زیر را در Vercel اضافه کنید', - }, - way2: { - name: 'نوشتن کد سمت کلاینت برای فراخوانی API و استقرار آن بر روی سرور', - operation: 'مستندات', - }, - }, - launch: 'راه اندازی', - enableTooltip: { - description: 'برای فعال کردن این ویژگی، لطفاً یک گره ورودی کاربر به صفحه اضافه کنید. (ممکن است قبلاً در پیش‌نویس وجود داشته باشد، بعد از انتشار اعمال می‌شود)', - learnMore: 'بیشتر بدانید', - }, - title: 'وب اپ', - }, - apiInfo: { - title: 'API سرویس بک‌اند', - explanation: 'به راحتی در برنامه خود یکپارچه می‌شود', - accessibleAddress: 'نقطه پایانی سرویس API', - doc: 'مرجع API', - }, - status: { - running: 'در حال سرویس‌دهی', - disable: 'غیرفعال', - }, - triggerInfo: { - title: 'محرک‌ها', - explanation: 'مدیریت فعال‌سازی جریان کاری', - triggersAdded: '{{count}} محرک‌ها اضافه شدند', - noTriggerAdded: 'هیچ ماشه‌ای افزوده نشده است', - triggerStatusDescription: 'وضعیت گره تریگر در اینجا نمایش داده می‌شود. (ممکن است قبلاً در پیش‌نویس وجود داشته باشد، پس از انتشار اعمال می‌شود)', - learnAboutTriggers: 'با محرک‌ها آشنا شوید', - }, - disableTooltip: { - triggerMode: 'ویژگی {{feature}} در حالت گره تریگر پشتیبانی نمی‌شود.', - }, - }, - analysis: { - title: 'تحلیل', - ms: 'میلی‌ثانیه', - tokenPS: 'توکن/ثانیه', - totalMessages: { - title: 'کل پیام‌ها', - explanation: 'تعداد تعاملات روزانه با هوش مصنوعی.', - }, - totalConversations: { - title: 'کل مکالمات', - explanation: 'تعداد مکالمات روزانه با هوش مصنوعی؛ مهندسی/اشکال‌زدایی پرامپت مستثنی است.', - }, - activeUsers: { - title: 'کاربران فعال', - explanation: 'کاربران منحصر به فردی که در پرسش و پاسخ با AI شرکت می‌کنند؛ مهندسی/اشکال‌زدایی دستورات مستثنی هستند.', - }, - tokenUsage: { - title: 'استفاده از توکن', - explanation: 'مصرف روزانه توکن‌های مدل زبان برای برنامه را نشان می‌دهد، که برای کنترل هزینه‌ها مفید است.', - consumed: 'مصرف‌شده', - }, - avgSessionInteractions: { - title: 'میانگین تعاملات جلسه', - explanation: 'تعداد تعاملات پیوسته کاربر-AI؛ برای برنامه‌های مبتنی بر گفتگو.', - }, - avgUserInteractions: { - title: 'میانگین تعاملات کاربران', - explanation: 'تکرار استفاده روزانه کاربران را نشان می‌دهد. این معیار چسبندگی کاربران را نشان می‌دهد.', - }, - userSatisfactionRate: { - title: 'نرخ رضایت کاربران', - explanation: 'تعداد لایک‌ها به ازای هر ۱۰۰۰ پیام. این نشان‌دهنده نسبت پاسخ‌هایی است که کاربران به شدت رضایت دارند.', - }, - avgResponseTime: { - title: 'میانگین زمان پاسخ', - explanation: 'زمان (میلی‌ثانیه) برای پردازش/پاسخ AI؛ برای برنامه‌های مبتنی بر متن.', - }, - tps: { - title: 'سرعت خروجی توکن', - explanation: 'عملکرد مدل زبان بزرگ را اندازه‌گیری می‌کند. سرعت خروجی توکن‌های مدل زبان بزرگ از آغاز درخواست تا تکمیل خروجی را بشمارید.', - }, - }, -} - -export default translation diff --git a/web/i18n/fa-IR/app.json b/web/i18n/fa-IR/app.json new file mode 100644 index 0000000000..7a798f5015 --- /dev/null +++ b/web/i18n/fa-IR/app.json @@ -0,0 +1,345 @@ +{ + "createApp": "ایجاد برنامه", + "types": { + "all": "همه", + "chatbot": "چت‌بات", + "agent": "نماینده", + "workflow": "گردش کار", + "completion": "تکمیل", + "basic": "اساسی", + "advanced": "چت‌فلو" + }, + "duplicate": "تکرار", + "duplicateTitle": "تکرار برنامه", + "export": "صادر کردن DSL", + "exportFailed": "صادر کردن DSL ناموفق بود.", + "importDSL": "وارد کردن فایل DSL", + "createFromConfigFile": "ایجاد از فایل DSL", + "importFromDSL": "وارد کردن از DSL", + "importFromDSLFile": "از فایل DSL", + "importFromDSLUrl": "از URL", + "importFromDSLUrlPlaceholder": "لینک DSL را اینجا بچسبانید", + "dslUploader": { + "button": "فایل را بکشید و رها کنید، یا", + "browse": "مرور" + }, + "deleteAppConfirmTitle": "آیا این برنامه حذف شود؟", + "deleteAppConfirmContent": "حذف برنامه غیرقابل برگشت است. کاربران دیگر قادر به دسترسی به برنامه شما نخواهند بود و تمام تنظیمات و گزارشات درخواست‌ها به صورت دائم حذف خواهند شد.", + "appDeleted": "برنامه حذف شد", + "appDeleteFailed": "حذف برنامه ناموفق بود", + "join": "پیوستن به جامعه", + "communityIntro": "در کانال‌های مختلف با اعضای تیم، مشارکت‌کنندگان و توسعه‌دهندگان بحث کنید.", + "roadmap": "نقشه راه ما را ببینید", + "newApp": { + "startFromBlank": "ایجاد از خالی", + "startFromTemplate": "ایجاد از قالب", + "workflowWarning": "در حال حاضر در نسخه بتا", + "captionName": "آیکون و نام برنامه", + "appNamePlaceholder": "به برنامه خود یک نام بدهید", + "captionDescription": "توضیحات", + "appDescriptionPlaceholder": "توضیحات برنامه را وارد کنید", + "useTemplate": "استفاده از این قالب", + "previewDemo": "پیش‌نمایش دمو", + "chatApp": "دستیار", + "chatAppIntro": "می‌خواهم یک برنامه مبتنی بر چت بسازم. این برنامه از قالب پرسش و پاسخ استفاده می‌کند و امکان چندین دور مکالمه مداوم را فراهم می‌کند.", + "agentAssistant": "دستیار نماینده جدید", + "completeApp": "تولید کننده متن", + "completeAppIntro": "می‌خواهم برنامه‌ای بسازم که متن با کیفیت بالا بر اساس درخواست‌ها تولید کند، مانند تولید مقالات، خلاصه‌ها، ترجمه‌ها و بیشتر.", + "showTemplates": "می‌خواهم از یک قالب انتخاب کنم", + "hideTemplates": "بازگشت به انتخاب حالت", + "Create": "ایجاد", + "Cancel": "لغو", + "nameNotEmpty": "نام نمی‌تواند خالی باشد", + "appTemplateNotSelected": "لطفاً یک قالب انتخاب کنید", + "appTypeRequired": "لطفاً نوع برنامه را انتخاب کنید", + "appCreated": "برنامه ایجاد شد", + "appCreateFailed": "ایجاد برنامه ناموفق بود", + "Confirm": "تایید", + "appCreateDSLErrorTitle": "ناسازگاری نسخه", + "caution": "احتیاط", + "appCreateDSLErrorPart3": "نسخه DSL برنامه فعلی:", + "appCreateDSLErrorPart2": "آیا می خواهید ادامه دهید؟", + "appCreateDSLErrorPart4": "نسخه DSL پشتیبانی شده توسط سیستم:", + "appCreateDSLErrorPart1": "تفاوت قابل توجهی در نسخه های DSL مشاهده شده است. اجبار به واردات ممکن است باعث اختلال در عملکرد برنامه شود.", + "appCreateDSLWarning": "احتیاط: تفاوت نسخه DSL ممکن است بر ویژگی های خاصی تأثیر بگذارد", + "completionShortDescription": "دستیار هوش مصنوعی برای تسک های تولید متن", + "foundResult": "{{count}} نتیجه", + "chatbotUserDescription": "به سرعت یک چت بات مبتنی بر LLM با پیکربندی ساده بسازید. بعدا می توانید به Chatflow بروید.", + "chooseAppType": "انتخاب نوع برنامه", + "foundResults": "{{count}} نتیجه", + "noIdeaTip": "ایده ای ندارید؟ قالب های ما را بررسی کنید", + "forBeginners": "انواع برنامه‌های پایه‌تر", + "noAppsFound": "هیچ برنامه ای یافت نشد", + "chatbotShortDescription": "چت بات مبتنی بر LLM با راه اندازی ساده", + "optional": "اختیاری", + "learnMore": "بیشتر بدانید", + "agentShortDescription": "عامل هوشمند با استدلال و استفاده از ابزار مستقل", + "noTemplateFoundTip": "سعی کنید با استفاده از کلمات کلیدی مختلف جستجو کنید.", + "noTemplateFound": "هیچ الگویی یافت نشد", + "forAdvanced": "برای کاربران پیشرفته", + "workflowShortDescription": "جریان عاملی برای اتوماسیون‌های هوشمند", + "workflowUserDescription": "ساخت بصری گردش‌کارهای خودکار هوش مصنوعی با سادگی کشیدن و رها کردن", + "advancedUserDescription": "گردش‌کار با ویژگی‌های حافظه اضافی و رابط چت‌بات", + "completionUserDescription": "به سرعت یک دستیار هوش مصنوعی برای وظایف تولید متن با پیکربندی ساده بسازید.", + "advancedShortDescription": "گردش‌کار پیشرفته برای گفتگوهای چند مرحله‌ای", + "agentUserDescription": "یک عامل هوشمند که قادر به استدلال تکراری و استفاده از ابزار مستقل برای دستیابی به اهداف وظیفه است.", + "dropDSLToCreateApp": "فایل DSL را اینجا رها کنید تا برنامه ساخته شود", + "import": "واردات" + }, + "editApp": "ویرایش اطلاعات", + "editAppTitle": "ویرایش اطلاعات برنامه", + "editDone": "اطلاعات برنامه به‌روزرسانی شد", + "editFailed": "به‌روزرسانی اطلاعات برنامه ناموفق بود", + "iconPicker": { + "ok": "باشه", + "cancel": "لغو", + "emoji": "ایموجی", + "image": "تصویر" + }, + "switch": "تغییر به سازماندهی گردش کار", + "switchTipStart": "یک نسخه جدید از برنامه برای شما ایجاد خواهد شد و نسخه جدید به سازماندهی گردش کار تغییر خواهد کرد. نسخه جدید ", + "switchTip": "اجازه نمی‌دهد", + "switchTipEnd": " تغییر به سازماندهی اساسی بازگردد.", + "switchLabel": "نسخه برنامه که ایجاد می‌شود", + "removeOriginal": "حذف برنامه اصلی", + "switchStart": "شروع تغییر", + "typeSelector": { + "all": "همه انواع", + "chatbot": "چت‌بات", + "agent": "نماینده", + "workflow": "گردش کار", + "completion": "تکمیل", + "advanced": "چت‌فلو" + }, + "tracing": { + "title": "ردیابی عملکرد برنامه", + "description": "پیکربندی ارائه‌دهنده شخص ثالث LLMOps و ردیابی عملکرد برنامه.", + "config": "پیکربندی", + "collapse": "بستن", + "expand": "باز کردن", + "tracing": "ردیابی", + "disabled": "غیرفعال", + "disabledTip": "لطفاً ابتدا ارائه‌دهنده را پیکربندی کنید", + "enabled": "در حال خدمت", + "tracingDescription": "ثبت کامل متن اجرای برنامه، از جمله تماس‌های LLM، متن، درخواست‌های HTTP و بیشتر، به یک پلتفرم ردیابی شخص ثالث.", + "configProviderTitle": { + "configured": "پیکربندی شده", + "notConfigured": "برای فعال‌سازی ردیابی ارائه‌دهنده را پیکربندی کنید", + "moreProvider": "ارائه‌دهندگان بیشتر" + }, + "arize": { + "title": "Arize", + "description": "قابلیت مشاهده LLM در سطح سازمانی، ارزیابی آنلاین و آفلاین، نظارت و آزمایش — با پشتیبانی از OpenTelemetry. طراحی‌شده مخصوص برنامه‌های مبتنی بر LLM و عامل‌ها." + }, + "phoenix": { + "title": "Phoenix", + "description": "پلتفرم متن‌باز و مبتنی بر OpenTelemetry برای مشاهده‌پذیری، ارزیابی، مهندسی پرامپت و آزمایش برای جریان‌های کاری و عامل‌های LLM شما." + }, + "langsmith": { + "title": "LangSmith", + "description": "یک پلتفرم همه‌کاره برای هر مرحله از چرخه عمر برنامه‌های مبتنی بر LLM." + }, + "langfuse": { + "title": "Langfuse", + "description": "ردیابی، ارزیابی، مدیریت درخواست‌ها و معیارها برای رفع اشکال و بهبود برنامه LLM شما." + }, + "inUse": "در حال استفاده", + "configProvider": { + "title": "پیکربندی", + "placeholder": "کلید {{key}} خود را وارد کنید", + "project": "پروژه", + "publicKey": "کلید عمومی", + "secretKey": "کلید محرمانه", + "viewDocsLink": "مشاهده مستندات {{key}}", + "removeConfirmTitle": "حذف پیکربندی {{key}}؟", + "removeConfirmContent": "پیکربندی فعلی در حال استفاده است، حذف آن ویژگی ردیابی را غیرفعال خواهد کرد.", + "clientId": "شناسه مشتری OAuth", + "username": "نام کاربری", + "password": "رمز عبور", + "experimentId": "شناسه آزمایش", + "personalAccessToken": "نشانه دسترسی شخصی (قدیمی)", + "databricksHost": "نشانی اینترنتی محیط کاری دیتابریکس", + "trackingUri": "آدرس URI ردیابی", + "clientSecret": "رمز مخفی مشتری OAuth" + }, + "view": "مشاهده", + "opik": { + "title": "اوپیک", + "description": "Opik یک پلت فرم منبع باز برای ارزیابی، آزمایش و نظارت بر برنامه های LLM است." + }, + "weave": { + "title": "بافندگی", + "description": "ویو یک پلتفرم متن باز برای ارزیابی، آزمایش و نظارت بر برنامه‌های LLM است." + }, + "aliyun": { + "title": "نظارت بر ابر", + "description": "پلتفرم مشاهده‌پذیری کاملاً مدیریت‌شده و بدون نیاز به نگهداری که توسط Alibaba Cloud ارائه شده، امکان نظارت، ردیابی و ارزیابی برنامه‌های Dify را به‌صورت آماده و با تنظیمات اولیه فراهم می‌کند." + }, + "mlflow": { + "title": "MLflow", + "description": "پلتفرم LLMOps متن‌باز برای ردیابی آزمایش‌ها، مشاهده‌پذیری و ارزیابی، برای ساخت برنامه‌های AI/LLM با اطمینان." + }, + "databricks": { + "title": "Databricks", + "description": "Databricks MLflow کاملاً مدیریت‌شده با حکمرانی و امنیت قوی برای ذخیره‌سازی داده‌های ردیابی ارائه می‌دهد." + }, + "tencent": { + "title": "تنست ای‌پی‌ام", + "description": "نظارت بر عملکرد برنامه‌های Tencent تحلیل‌های جامع و ردیابی چندبعدی برای برنامه‌های LLM ارائه می‌دهد." + } + }, + "answerIcon": { + "descriptionInExplore": "آیا از نماد web app برای جایگزینی 🤖 در Explore استفاده کنیم یا خیر", + "description": "آیا از نماد web app برای جایگزینی 🤖 در برنامه مشترک استفاده کنیم یا خیر", + "title": "از نماد web app برای جایگزینی 🤖 استفاده کنید" + }, + "mermaid": { + "handDrawn": "دست کشیده شده", + "classic": "کلاسیک" + }, + "openInExplore": "باز کردن در کاوش", + "newAppFromTemplate": { + "sidebar": { + "Agent": "عامل", + "Programming": "برنامه نویسی", + "Recommended": "توصیه", + "Assistant": "دستیار", + "Workflow": "گردش", + "HR": "ساعت", + "Writing": "نوشتن" + }, + "byCategories": "بر اساس دسته بندی ها", + "searchAllTemplate": "همه قالب ها را جستجو کنید..." + }, + "showMyCreatedAppsOnly": "فقط برنامه‌های ایجاد شده توسط من را نشان بده", + "appSelector": { + "params": "پارامترهای برنامه", + "noParams": "بدون پارامتر مورد نیاز است", + "label": "برنامه", + "placeholder": "برنامه ای را انتخاب کنید..." + }, + "structOutput": { + "required": "ضروری", + "modelNotSupported": "مدل پشتیبانی نمی شود", + "notConfiguredTip": "خروجی ساختاری هنوز تنظیم نشده است", + "structured": "ساختار یافته", + "configure": "تنظیمات", + "moreFillTip": "نمایش حداکثر ۱۰ سطح تو در تو", + "LLMResponse": "پاسخ مدل زبان بزرگ", + "modelNotSupportedTip": "مدل فعلی این ویژگی را پشتیبانی نمی‌کند و به‌طور خودکار به تزریق درخواست تنزل پیدا می‌کند.", + "structuredTip": "خروجی‌های ساختاری یک ویژگی است که تضمین می‌کند مدل همیشه پاسخ‌هایی تولید می‌کند که به طرح JSON ارائه شده شما پایبند باشد." + }, + "accessItemsDescription": { + "specific": "فقط گروه‌ها یا اعضای خاصی می‌توانند به اپلیکیشن وب دسترسی پیدا کنند.", + "anyone": "هر کسی می‌تواند به وب‌اپلیکیشن دسترسی پیدا کند", + "organization": "هر کسی در سازمان می‌تواند به اپلیکیشن وب دسترسی پیدا کند.", + "external": "تنها کاربران خارجی تأیید شده می‌توانند به برنامه وب دسترسی پیدا کنند." + }, + "accessControlDialog": { + "accessItems": { + "specific": "گروه‌ها یا اعضای خاص", + "organization": "فقط اعضای داخل سازمان", + "anyone": "هر کسی که لینک را داشته باشد", + "external": "کاربران خارجی تأیید شده" + }, + "operateGroupAndMember": { + "searchPlaceholder": "گروه‌ها و اعضا را جستجو کنید", + "allMembers": "تمام اعضا", + "noResult": "نتیجه‌ای نیست", + "expand": "گسترش" + }, + "description": "مجوزهای دسترسی به برنامه وب را تنظیم کنید", + "accessLabel": "چه کسی به آن دسترسی دارد", + "groups_one": "{{count}} گروه", + "groups_other": "{{count}} گروه", + "members_one": "{{count}} عضو", + "members_other": "{{count}} عضو", + "noGroupsOrMembers": "هیچ گروه یا عضوی انتخاب نشده است", + "title": "کنترل دسترسی به وب اپلیکیشن", + "updateSuccess": "به‌روز رسانی با موفقیت انجام شد", + "webAppSSONotEnabledTip": "لطفاً با مدیر شرکت تماس بگیرید تا روش احراز هویت برنامه وب را پیکربندی کند." + }, + "publishApp": { + "notSet": "تنظیم نشده است", + "notSetDesc": "در حال حاضر هیچ‌کس نمی‌تواند به برنامه وب دسترسی پیدا کند. لطفاً مجوزها را تنظیم کنید.", + "title": "چه کسی می‌تواند به برنامه وب دسترسی داشته باشد؟" + }, + "accessControl": "کنترل دسترسی به وب اپلیکیشن", + "noAccessPermission": "دسترسی به برنامه وب مجاز نیست", + "maxActiveRequests": "بیشترین درخواست‌های همزمان", + "maxActiveRequestsPlaceholder": "برای نامحدود، 0 را وارد کنید", + "maxActiveRequestsTip": "حداکثر تعداد درخواست‌های فعال همزمان در هر برنامه (0 برای نامحدود)", + "gotoAnything": { + "actions": { + "searchPlugins": "جستجوی افزونه ها", + "searchWorkflowNodes": "جستجوی گره های گردش کار", + "searchApplications": "جستجوی برنامه ها", + "searchKnowledgeBases": "جستجو در پایگاه های دانش", + "searchWorkflowNodesHelp": "این ویژگی فقط هنگام مشاهده گردش کار کار می کند. ابتدا به گردش کار بروید.", + "searchApplicationsDesc": "جستجو و پیمایش به برنامه های خود", + "searchKnowledgeBasesDesc": "پایگاه های دانش خود را جستجو کرده و به آن ناوبری کنید", + "searchPluginsDesc": "افزونه های خود را جستجو کرده و به آنها پیمایش کنید", + "searchWorkflowNodesDesc": "گره ها را در گردش کار فعلی بر اساس نام یا نوع پیدا کنید و به آنها بروید", + "themeCategoryTitle": "تم", + "languageCategoryTitle": "زبان", + "runTitle": "دستورات", + "themeSystem": "تم سیستم", + "themeLight": "تم روشن", + "themeDark": "تم تاریک", + "languageCategoryDesc": "زبان رابط را تغییر دهید", + "themeCategoryDesc": "تغییر تم برنامه", + "themeDarkDesc": "از ظاهر تیره استفاده کنید", + "themeLightDesc": "از ظاهر روشن استفاده کنید", + "languageChangeDesc": "زبان رابط کاربری را تغییر دهید", + "themeSystemDesc": "به ظاهر سیستم‌عامل خود پایبند باشید", + "runDesc": "دستورات سریع اجرا کنید (موضوع، زبان، ...)", + "slashDesc": "دستورات را مانند /theme، /lang اجرا کنید", + "feedbackDesc": "بحث‌های باز بازخورد جامعه", + "accountDesc": "به صفحه حساب کاربری بروید", + "communityDesc": "جامعه دیسکورد باز", + "docDesc": "مستندات کمک را باز کنید", + "zenTitle": "Zen Mode", + "zenDesc": "Toggle canvas focus mode" + }, + "emptyState": { + "noKnowledgeBasesFound": "هیچ پایگاه دانش یافت نشد", + "noAppsFound": "هیچ برنامه ای یافت نشد", + "noPluginsFound": "هیچ افزونه ای یافت نشد", + "noWorkflowNodesFound": "هیچ گره گردش کاری یافت نشد", + "tryDifferentTerm": "یک عبارت جستجوی متفاوت را امتحان کنید یا فیلتر {{mode}} را حذف کنید", + "trySpecificSearch": "{{shortcuts}} را برای جستجوهای خاص امتحان کنید" + }, + "groups": { + "plugins": "پلاگین", + "apps": "برنامه‌ها", + "knowledgeBases": "پایگاه های دانش", + "workflowNodes": "گره های گردش کار", + "commands": "دستورات" + }, + "searching": "جستجو...", + "searchFailed": "جستجو انجام نشد", + "useAtForSpecific": "از @ برای انواع خاص استفاده کنید", + "clearToSearchAll": "پاک کردن @ برای جستجوی همه", + "noResults": "هیچ نتیجه ای یافت نشد", + "searchTitle": "هر چیزی را جستجو کنید", + "searchPlaceholder": "جستجو یا تایپ @ برای دستورات...", + "searchTemporarilyUnavailable": "جستجو به طور موقت در دسترس نیست", + "servicesUnavailableMessage": "برخی از سرویس های جستجو ممکن است با مشکل مواجه شوند. یک لحظه دیگر دوباره امتحان کنید.", + "someServicesUnavailable": "برخی از سرویس های جستجو دردسترس نیستند", + "selectSearchType": "انتخاب کنید چه چیزی را جستجو کنید", + "commandHint": "@ را برای مرور بر اساس دسته بندی تایپ کنید", + "searchHint": "شروع به تایپ کنید تا فورا همه چیز را جستجو کنید", + "resultCount": "{{count}} نتیجه", + "resultCount_other": "{{count}} نتیجه", + "inScope": "در {{scope}}s", + "noMatchingCommands": "هیچ دستوری منطبق یافت نشد", + "tryDifferentSearch": "عبارت جستجوی دیگری را امتحان کنید", + "slashHint": "برای مشاهده تمام دستورات موجود / را تایپ کنید", + "startTyping": "برای جستجو شروع به تایپ کنید", + "selectToNavigate": "انتخاب کنید تا برای حرکت", + "pressEscToClose": "برای بستن ESC را فشار دهید", + "tips": "برای حرکت به بالا و پایین کلیدهای ↑ و ↓ را فشار دهید" + }, + "noUserInputNode": "ورودی کاربر پیدا نشد", + "notPublishedYet": "اپ هنوز منتشر نشده است" +} diff --git a/web/i18n/fa-IR/app.ts b/web/i18n/fa-IR/app.ts deleted file mode 100644 index ae5c1bc8e6..0000000000 --- a/web/i18n/fa-IR/app.ts +++ /dev/null @@ -1,351 +0,0 @@ -const translation = { - createApp: 'ایجاد برنامه', - types: { - all: 'همه', - chatbot: 'چت‌بات', - agent: 'نماینده', - workflow: 'گردش کار', - completion: 'تکمیل', - basic: 'اساسی', - advanced: 'چت‌فلو', - }, - duplicate: 'تکرار', - duplicateTitle: 'تکرار برنامه', - export: 'صادر کردن DSL', - exportFailed: 'صادر کردن DSL ناموفق بود.', - importDSL: 'وارد کردن فایل DSL', - createFromConfigFile: 'ایجاد از فایل DSL', - importFromDSL: 'وارد کردن از DSL', - importFromDSLFile: 'از فایل DSL', - importFromDSLUrl: 'از URL', - importFromDSLUrlPlaceholder: 'لینک DSL را اینجا بچسبانید', - dslUploader: { - button: 'فایل را بکشید و رها کنید، یا', - browse: 'مرور', - }, - deleteAppConfirmTitle: 'آیا این برنامه حذف شود؟', - deleteAppConfirmContent: - 'حذف برنامه غیرقابل برگشت است. کاربران دیگر قادر به دسترسی به برنامه شما نخواهند بود و تمام تنظیمات و گزارشات درخواست‌ها به صورت دائم حذف خواهند شد.', - appDeleted: 'برنامه حذف شد', - appDeleteFailed: 'حذف برنامه ناموفق بود', - join: 'پیوستن به جامعه', - communityIntro: - 'در کانال‌های مختلف با اعضای تیم، مشارکت‌کنندگان و توسعه‌دهندگان بحث کنید.', - roadmap: 'نقشه راه ما را ببینید', - newApp: { - startFromBlank: 'ایجاد از خالی', - startFromTemplate: 'ایجاد از قالب', - workflowWarning: 'در حال حاضر در نسخه بتا', - captionName: 'آیکون و نام برنامه', - appNamePlaceholder: 'به برنامه خود یک نام بدهید', - captionDescription: 'توضیحات', - appDescriptionPlaceholder: 'توضیحات برنامه را وارد کنید', - useTemplate: 'استفاده از این قالب', - previewDemo: 'پیش‌نمایش دمو', - chatApp: 'دستیار', - chatAppIntro: - 'می‌خواهم یک برنامه مبتنی بر چت بسازم. این برنامه از قالب پرسش و پاسخ استفاده می‌کند و امکان چندین دور مکالمه مداوم را فراهم می‌کند.', - agentAssistant: 'دستیار نماینده جدید', - completeApp: 'تولید کننده متن', - completeAppIntro: - 'می‌خواهم برنامه‌ای بسازم که متن با کیفیت بالا بر اساس درخواست‌ها تولید کند، مانند تولید مقالات، خلاصه‌ها، ترجمه‌ها و بیشتر.', - showTemplates: 'می‌خواهم از یک قالب انتخاب کنم', - hideTemplates: 'بازگشت به انتخاب حالت', - Create: 'ایجاد', - Cancel: 'لغو', - nameNotEmpty: 'نام نمی‌تواند خالی باشد', - appTemplateNotSelected: 'لطفاً یک قالب انتخاب کنید', - appTypeRequired: 'لطفاً نوع برنامه را انتخاب کنید', - appCreated: 'برنامه ایجاد شد', - appCreateFailed: 'ایجاد برنامه ناموفق بود', - Confirm: 'تایید', - appCreateDSLErrorTitle: 'ناسازگاری نسخه', - caution: 'احتیاط', - appCreateDSLErrorPart3: 'نسخه DSL برنامه فعلی:', - appCreateDSLErrorPart2: 'آیا می خواهید ادامه دهید؟', - appCreateDSLErrorPart4: 'نسخه DSL پشتیبانی شده توسط سیستم:', - appCreateDSLErrorPart1: 'تفاوت قابل توجهی در نسخه های DSL مشاهده شده است. اجبار به واردات ممکن است باعث اختلال در عملکرد برنامه شود.', - appCreateDSLWarning: 'احتیاط: تفاوت نسخه DSL ممکن است بر ویژگی های خاصی تأثیر بگذارد', - completionShortDescription: 'دستیار هوش مصنوعی برای تسک های تولید متن', - foundResult: '{{count}} نتیجه', - chatbotUserDescription: 'به سرعت یک چت بات مبتنی بر LLM با پیکربندی ساده بسازید. بعدا می توانید به Chatflow بروید.', - chooseAppType: 'انتخاب نوع برنامه', - foundResults: '{{count}} نتیجه', - noIdeaTip: 'ایده ای ندارید؟ قالب های ما را بررسی کنید', - forBeginners: 'انواع برنامه‌های پایه‌تر', - noAppsFound: 'هیچ برنامه ای یافت نشد', - chatbotShortDescription: 'چت بات مبتنی بر LLM با راه اندازی ساده', - optional: 'اختیاری', - learnMore: 'بیشتر بدانید', - agentShortDescription: 'عامل هوشمند با استدلال و استفاده از ابزار مستقل', - noTemplateFoundTip: 'سعی کنید با استفاده از کلمات کلیدی مختلف جستجو کنید.', - noTemplateFound: 'هیچ الگویی یافت نشد', - forAdvanced: 'برای کاربران پیشرفته', - workflowShortDescription: 'جریان عاملی برای اتوماسیون‌های هوشمند', - workflowUserDescription: 'ساخت بصری گردش‌کارهای خودکار هوش مصنوعی با سادگی کشیدن و رها کردن', - advancedUserDescription: 'گردش‌کار با ویژگی‌های حافظه اضافی و رابط چت‌بات', - completionUserDescription: 'به سرعت یک دستیار هوش مصنوعی برای وظایف تولید متن با پیکربندی ساده بسازید.', - advancedShortDescription: 'گردش‌کار پیشرفته برای گفتگوهای چند مرحله‌ای', - agentUserDescription: 'یک عامل هوشمند که قادر به استدلال تکراری و استفاده از ابزار مستقل برای دستیابی به اهداف وظیفه است.', - dropDSLToCreateApp: 'فایل DSL را اینجا رها کنید تا برنامه ساخته شود', - import: 'واردات', - }, - editApp: 'ویرایش اطلاعات', - editAppTitle: 'ویرایش اطلاعات برنامه', - editDone: 'اطلاعات برنامه به‌روزرسانی شد', - editFailed: 'به‌روزرسانی اطلاعات برنامه ناموفق بود', - iconPicker: { - ok: 'باشه', - cancel: 'لغو', - emoji: 'ایموجی', - image: 'تصویر', - }, - switch: 'تغییر به سازماندهی گردش کار', - switchTipStart: 'یک نسخه جدید از برنامه برای شما ایجاد خواهد شد و نسخه جدید به سازماندهی گردش کار تغییر خواهد کرد. نسخه جدید ', - switchTip: 'اجازه نمی‌دهد', - switchTipEnd: ' تغییر به سازماندهی اساسی بازگردد.', - switchLabel: 'نسخه برنامه که ایجاد می‌شود', - removeOriginal: 'حذف برنامه اصلی', - switchStart: 'شروع تغییر', - typeSelector: { - all: 'همه انواع', - chatbot: 'چت‌بات', - agent: 'نماینده', - workflow: 'گردش کار', - completion: 'تکمیل', - advanced: 'چت‌فلو', - }, - tracing: { - title: 'ردیابی عملکرد برنامه', - description: 'پیکربندی ارائه‌دهنده شخص ثالث LLMOps و ردیابی عملکرد برنامه.', - config: 'پیکربندی', - collapse: 'بستن', - expand: 'باز کردن', - tracing: 'ردیابی', - disabled: 'غیرفعال', - disabledTip: 'لطفاً ابتدا ارائه‌دهنده را پیکربندی کنید', - enabled: 'در حال خدمت', - tracingDescription: 'ثبت کامل متن اجرای برنامه، از جمله تماس‌های LLM، متن، درخواست‌های HTTP و بیشتر، به یک پلتفرم ردیابی شخص ثالث.', - configProviderTitle: { - configured: 'پیکربندی شده', - notConfigured: 'برای فعال‌سازی ردیابی ارائه‌دهنده را پیکربندی کنید', - moreProvider: 'ارائه‌دهندگان بیشتر', - }, - arize: { - title: 'Arize', - description: 'قابلیت مشاهده LLM در سطح سازمانی، ارزیابی آنلاین و آفلاین، نظارت و آزمایش — با پشتیبانی از OpenTelemetry. طراحی‌شده مخصوص برنامه‌های مبتنی بر LLM و عامل‌ها.', - }, - phoenix: { - title: 'Phoenix', - description: 'پلتفرم متن‌باز و مبتنی بر OpenTelemetry برای مشاهده‌پذیری، ارزیابی، مهندسی پرامپت و آزمایش برای جریان‌های کاری و عامل‌های LLM شما.', - }, - langsmith: { - title: 'LangSmith', - description: 'یک پلتفرم همه‌کاره برای هر مرحله از چرخه عمر برنامه‌های مبتنی بر LLM.', - }, - langfuse: { - title: 'Langfuse', - description: 'ردیابی، ارزیابی، مدیریت درخواست‌ها و معیارها برای رفع اشکال و بهبود برنامه LLM شما.', - }, - inUse: 'در حال استفاده', - configProvider: { - title: 'پیکربندی', - placeholder: 'کلید {{key}} خود را وارد کنید', - project: 'پروژه', - publicKey: 'کلید عمومی', - secretKey: 'کلید محرمانه', - viewDocsLink: 'مشاهده مستندات {{key}}', - removeConfirmTitle: 'حذف پیکربندی {{key}}؟', - removeConfirmContent: 'پیکربندی فعلی در حال استفاده است، حذف آن ویژگی ردیابی را غیرفعال خواهد کرد.', - clientId: 'شناسه مشتری OAuth', - username: 'نام کاربری', - password: 'رمز عبور', - experimentId: 'شناسه آزمایش', - personalAccessToken: 'نشانه دسترسی شخصی (قدیمی)', - databricksHost: 'نشانی اینترنتی محیط کاری دیتابریکس', - trackingUri: 'آدرس URI ردیابی', - clientSecret: 'رمز مخفی مشتری OAuth', - }, - view: 'مشاهده', - opik: { - title: 'اوپیک', - description: 'Opik یک پلت فرم منبع باز برای ارزیابی، آزمایش و نظارت بر برنامه های LLM است.', - }, - weave: { - title: 'بافندگی', - description: 'ویو یک پلتفرم متن باز برای ارزیابی، آزمایش و نظارت بر برنامه‌های LLM است.', - }, - aliyun: { - title: 'نظارت بر ابر', - description: 'پلتفرم مشاهده‌پذیری کاملاً مدیریت‌شده و بدون نیاز به نگهداری که توسط Alibaba Cloud ارائه شده، امکان نظارت، ردیابی و ارزیابی برنامه‌های Dify را به‌صورت آماده و با تنظیمات اولیه فراهم می‌کند.', - }, - mlflow: { - title: 'MLflow', - description: 'پلتفرم LLMOps متن‌باز برای ردیابی آزمایش‌ها، مشاهده‌پذیری و ارزیابی، برای ساخت برنامه‌های AI/LLM با اطمینان.', - }, - databricks: { - title: 'Databricks', - description: 'Databricks MLflow کاملاً مدیریت‌شده با حکمرانی و امنیت قوی برای ذخیره‌سازی داده‌های ردیابی ارائه می‌دهد.', - }, - tencent: { - title: 'تنست ای‌پی‌ام', - description: 'نظارت بر عملکرد برنامه‌های Tencent تحلیل‌های جامع و ردیابی چندبعدی برای برنامه‌های LLM ارائه می‌دهد.', - }, - }, - answerIcon: { - descriptionInExplore: 'آیا از نماد web app برای جایگزینی 🤖 در Explore استفاده کنیم یا خیر', - description: 'آیا از نماد web app برای جایگزینی 🤖 در برنامه مشترک استفاده کنیم یا خیر', - title: 'از نماد web app برای جایگزینی 🤖 استفاده کنید', - }, - mermaid: { - handDrawn: 'دست کشیده شده', - classic: 'کلاسیک', - }, - openInExplore: 'باز کردن در کاوش', - newAppFromTemplate: { - sidebar: { - Agent: 'عامل', - Programming: 'برنامه نویسی', - Recommended: 'توصیه', - Assistant: 'دستیار', - Workflow: 'گردش', - HR: 'ساعت', - Writing: 'نوشتن', - }, - byCategories: 'بر اساس دسته بندی ها', - searchAllTemplate: 'همه قالب ها را جستجو کنید...', - }, - showMyCreatedAppsOnly: 'فقط برنامه‌های ایجاد شده توسط من را نشان بده', - appSelector: { - params: 'پارامترهای برنامه', - noParams: 'بدون پارامتر مورد نیاز است', - label: 'برنامه', - placeholder: 'برنامه ای را انتخاب کنید...', - }, - structOutput: { - required: 'ضروری', - modelNotSupported: 'مدل پشتیبانی نمی شود', - notConfiguredTip: 'خروجی ساختاری هنوز تنظیم نشده است', - structured: 'ساختار یافته', - configure: 'تنظیمات', - moreFillTip: 'نمایش حداکثر ۱۰ سطح تو در تو', - LLMResponse: 'پاسخ مدل زبان بزرگ', - modelNotSupportedTip: 'مدل فعلی این ویژگی را پشتیبانی نمی‌کند و به‌طور خودکار به تزریق درخواست تنزل پیدا می‌کند.', - structuredTip: 'خروجی‌های ساختاری یک ویژگی است که تضمین می‌کند مدل همیشه پاسخ‌هایی تولید می‌کند که به طرح JSON ارائه شده شما پایبند باشد.', - }, - accessItemsDescription: { - specific: 'فقط گروه‌ها یا اعضای خاصی می‌توانند به اپلیکیشن وب دسترسی پیدا کنند.', - anyone: 'هر کسی می‌تواند به وب‌اپلیکیشن دسترسی پیدا کند', - organization: 'هر کسی در سازمان می‌تواند به اپلیکیشن وب دسترسی پیدا کند.', - external: 'تنها کاربران خارجی تأیید شده می‌توانند به برنامه وب دسترسی پیدا کنند.', - }, - accessControlDialog: { - accessItems: { - specific: 'گروه‌ها یا اعضای خاص', - organization: 'فقط اعضای داخل سازمان', - anyone: 'هر کسی که لینک را داشته باشد', - external: 'کاربران خارجی تأیید شده', - }, - operateGroupAndMember: { - searchPlaceholder: 'گروه‌ها و اعضا را جستجو کنید', - allMembers: 'تمام اعضا', - noResult: 'نتیجه‌ای نیست', - expand: 'گسترش', - }, - description: 'مجوزهای دسترسی به برنامه وب را تنظیم کنید', - accessLabel: 'چه کسی به آن دسترسی دارد', - groups_one: '{{count}} گروه', - groups_other: '{{count}} گروه', - members_one: '{{count}} عضو', - members_other: '{{count}} عضو', - noGroupsOrMembers: 'هیچ گروه یا عضوی انتخاب نشده است', - title: 'کنترل دسترسی به وب اپلیکیشن', - updateSuccess: 'به‌روز رسانی با موفقیت انجام شد', - webAppSSONotEnabledTip: 'لطفاً با مدیر شرکت تماس بگیرید تا روش احراز هویت برنامه وب را پیکربندی کند.', - }, - publishApp: { - notSet: 'تنظیم نشده است', - notSetDesc: 'در حال حاضر هیچ‌کس نمی‌تواند به برنامه وب دسترسی پیدا کند. لطفاً مجوزها را تنظیم کنید.', - title: 'چه کسی می‌تواند به برنامه وب دسترسی داشته باشد؟', - }, - accessControl: 'کنترل دسترسی به وب اپلیکیشن', - noAccessPermission: 'دسترسی به برنامه وب مجاز نیست', - maxActiveRequests: 'بیشترین درخواست‌های همزمان', - maxActiveRequestsPlaceholder: 'برای نامحدود، 0 را وارد کنید', - maxActiveRequestsTip: 'حداکثر تعداد درخواست‌های فعال همزمان در هر برنامه (0 برای نامحدود)', - gotoAnything: { - actions: { - searchPlugins: 'جستجوی افزونه ها', - searchWorkflowNodes: 'جستجوی گره های گردش کار', - searchApplications: 'جستجوی برنامه ها', - searchKnowledgeBases: 'جستجو در پایگاه های دانش', - searchWorkflowNodesHelp: 'این ویژگی فقط هنگام مشاهده گردش کار کار می کند. ابتدا به گردش کار بروید.', - searchApplicationsDesc: 'جستجو و پیمایش به برنامه های خود', - searchKnowledgeBasesDesc: 'پایگاه های دانش خود را جستجو کرده و به آن ناوبری کنید', - searchPluginsDesc: 'افزونه های خود را جستجو کرده و به آنها پیمایش کنید', - searchWorkflowNodesDesc: 'گره ها را در گردش کار فعلی بر اساس نام یا نوع پیدا کنید و به آنها بروید', - themeCategoryTitle: 'تم', - languageCategoryTitle: 'زبان', - runTitle: 'دستورات', - themeSystem: 'تم سیستم', - themeLight: 'تم روشن', - themeDark: 'تم تاریک', - languageCategoryDesc: 'زبان رابط را تغییر دهید', - themeCategoryDesc: 'تغییر تم برنامه', - themeDarkDesc: 'از ظاهر تیره استفاده کنید', - themeLightDesc: 'از ظاهر روشن استفاده کنید', - languageChangeDesc: 'زبان رابط کاربری را تغییر دهید', - themeSystemDesc: 'به ظاهر سیستم‌عامل خود پایبند باشید', - runDesc: 'دستورات سریع اجرا کنید (موضوع، زبان، ...)', - slashDesc: 'دستورات را مانند /theme، /lang اجرا کنید', - feedbackDesc: 'بحث‌های باز بازخورد جامعه', - accountDesc: 'به صفحه حساب کاربری بروید', - communityDesc: 'جامعه دیسکورد باز', - docDesc: 'مستندات کمک را باز کنید', - zenTitle: 'Zen Mode', - zenDesc: 'Toggle canvas focus mode', - }, - emptyState: { - noKnowledgeBasesFound: 'هیچ پایگاه دانش یافت نشد', - noAppsFound: 'هیچ برنامه ای یافت نشد', - noPluginsFound: 'هیچ افزونه ای یافت نشد', - noWorkflowNodesFound: 'هیچ گره گردش کاری یافت نشد', - tryDifferentTerm: 'یک عبارت جستجوی متفاوت را امتحان کنید یا فیلتر {{mode}} را حذف کنید', - trySpecificSearch: '{{shortcuts}} را برای جستجوهای خاص امتحان کنید', - }, - groups: { - plugins: 'پلاگین', - apps: 'برنامه‌ها', - knowledgeBases: 'پایگاه های دانش', - workflowNodes: 'گره های گردش کار', - commands: 'دستورات', - }, - searching: 'جستجو...', - searchFailed: 'جستجو انجام نشد', - useAtForSpecific: 'از @ برای انواع خاص استفاده کنید', - clearToSearchAll: 'پاک کردن @ برای جستجوی همه', - noResults: 'هیچ نتیجه ای یافت نشد', - searchTitle: 'هر چیزی را جستجو کنید', - searchPlaceholder: 'جستجو یا تایپ @ برای دستورات...', - searchTemporarilyUnavailable: 'جستجو به طور موقت در دسترس نیست', - servicesUnavailableMessage: 'برخی از سرویس های جستجو ممکن است با مشکل مواجه شوند. یک لحظه دیگر دوباره امتحان کنید.', - someServicesUnavailable: 'برخی از سرویس های جستجو دردسترس نیستند', - selectSearchType: 'انتخاب کنید چه چیزی را جستجو کنید', - commandHint: '@ را برای مرور بر اساس دسته بندی تایپ کنید', - searchHint: 'شروع به تایپ کنید تا فورا همه چیز را جستجو کنید', - resultCount: '{{count}} نتیجه', - resultCount_other: '{{count}} نتیجه', - inScope: 'در {{scope}}s', - noMatchingCommands: 'هیچ دستوری منطبق یافت نشد', - tryDifferentSearch: 'عبارت جستجوی دیگری را امتحان کنید', - slashHint: 'برای مشاهده تمام دستورات موجود / را تایپ کنید', - startTyping: 'برای جستجو شروع به تایپ کنید', - selectToNavigate: 'انتخاب کنید تا برای حرکت', - pressEscToClose: 'برای بستن ESC را فشار دهید', - tips: 'برای حرکت به بالا و پایین کلیدهای ↑ و ↓ را فشار دهید', - }, - noUserInputNode: 'ورودی کاربر پیدا نشد', - notPublishedYet: 'اپ هنوز منتشر نشده است', -} - -export default translation diff --git a/web/i18n/fa-IR/billing.json b/web/i18n/fa-IR/billing.json new file mode 100644 index 0000000000..ac612a975a --- /dev/null +++ b/web/i18n/fa-IR/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "طرح فعلی", + "upgradeBtn": { + "plain": "ارتقاء طرح", + "encourage": "هم اکنون ارتقاء دهید", + "encourageShort": "ارتقاء دهید" + }, + "viewBilling": "مدیریت صورتحساب‌ها و اشتراک‌ها", + "buyPermissionDeniedTip": "لطفاً با مدیر سازمان خود تماس بگیرید تا اشتراک تهیه کنید", + "plansCommon": { + "yearlyTip": "با اشتراک سالانه 2 ماه رایگان دریافت کنید!", + "mostPopular": "محبوب‌ترین", + "planRange": { + "monthly": "ماهانه", + "yearly": "سالانه" + }, + "month": "ماه", + "year": "سال", + "save": "صرفه‌جویی کنید ", + "free": "رایگان", + "currentPlan": "طرح فعلی", + "contractSales": "تماس با فروش", + "contractOwner": "تماس با مدیر تیم", + "startForFree": "رایگان شروع کنید", + "contactSales": "تماس با فروش", + "talkToSales": "صحبت با فروش", + "modelProviders": "ارائه‌دهندگان مدل", + "annotationQuota": "سهمیه حاشیه‌نویسی", + "buildApps": "ساخت اپلیکیشن‌ها", + "vectorSpace": "فضای وکتور", + "vectorSpaceTooltip": "فضای وکتور سیستم حافظه بلند مدت است که برای درک داده‌های شما توسط LLM‌ها مورد نیاز است.", + "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": "درخواست‌های API RAG", + "bulkUpload": "بارگذاری دسته‌ای مستندات", + "agentMode": "حالت Agent", + "workflow": "جریان کار", + "llmLoadingBalancing": "توزیع بار LLM", + "llmLoadingBalancingTooltip": "اضافه کردن چندین کلید API به مدل‌ها، به طور مؤثر از محدودیت‌های نرخ API عبور می‌کند." + }, + "comingSoon": "به زودی", + "member": "عضو", + "memberAfter": "عضو", + "messageRequest": { + "title": "اعتبارات پیام", + "tooltip": "سهمیه‌های فراخوانی پیام برای طرح‌های مختلف با استفاده از مدل‌های OpenAI (به جز gpt4). پیام‌های بیش از حد محدودیت از کلید API OpenAI شما استفاده می‌کنند.", + "titlePerMonth": "{{count,number}} پیام در ماه" + }, + "annotatedResponse": { + "title": "محدودیت‌های سهمیه حاشیه‌نویسی", + "tooltip": "ویرایش دستی و حاشیه‌نویسی پاسخ‌ها، قابلیت‌های پرسش و پاسخ با کیفیت بالا و قابل تنظیم برای اپلیکیشن‌ها را فراهم می‌کند. (فقط در اپلیکیشن‌های چت اعمال می‌شود)" + }, + "ragAPIRequestTooltip": "به تعداد درخواست‌های API که فقط قابلیت‌های پردازش پایگاه دانش Dify را فراخوانی می‌کنند اشاره دارد.", + "receiptInfo": "فقط صاحب تیم و مدیر تیم می‌توانند اشتراک تهیه کنند و اطلاعات صورتحساب را مشاهده کنند", + "apiRateLimitUnit": "{{count,number}}", + "cloud": "سرویس ابری", + "documents": "{{count,number}} سندهای دانش", + "self": "خود میزبان", + "apiRateLimit": "محدودیت نرخ API", + "annualBilling": "صورتحساب سالانه", + "freeTrialTip": "آزمایش رایگان ۲۰۰ تماس OpenAI.", + "teamMember_other": "{{count,number}} اعضای تیم", + "unlimitedApiRate": "هیچ محدودیتی برای نرخ API وجود ندارد.", + "freeTrialTipPrefix": "ثبت‌نام کنید و یک", + "comparePlanAndFeatures": "طرح ها و ویژگی ها را مقایسه کنید", + "teamMember_one": "{{count,number}} عضو تیم", + "priceTip": "برای هر محیط کار/", + "documentsTooltip": "حجم مستندات وارد شده از منبع داده‌های دانش.", + "freeTrialTipSuffix": "نیاز به کارت اعتباری نیست", + "teamWorkspace": "{{count,number}} فضاي کار تيمي", + "getStarted": "شروع کنید", + "documentsRequestQuota": "{{count,number}}/دقیقه محدودیت نرخ درخواست دانش", + "apiRateLimitTooltip": "محدودیت نرخ API برای همه درخواست‌های انجام شده از طریق API Dify اعمال می‌شود، از جمله تولید متن، محاوره‌های چت، اجرای گردش‌های کار و پردازش اسناد.", + "documentsRequestQuotaTooltip": "تعیین می‌کند که تعداد کلی اقداماتی که یک فضای کاری می‌تواند در هر دقیقه در داخل پایگاه دانش انجام دهد، شامل ایجاد مجموعه داده، حذف، به‌روزرسانی، بارگذاری مستندات، تغییرات، بایگانی و پرسش از پایگاه دانش است. این معیار برای ارزیابی عملکرد درخواست‌های پایگاه دانش استفاده می‌شود. به عنوان مثال، اگر یک کاربر Sandbox در طی یک دقیقه 10 آزمایش متوالی انجام دهد، فضای کاری او به طور موقت از انجام اقدامات زیر در دقیقه بعدی محدود خواهد شد: ایجاد مجموعه داده، حذف، به‌روزرسانی و بارگذاری یا تغییر مستندات.", + "startBuilding": "شروع به ساخت کنید", + "taxTip": "تمام قیمت‌های اشتراک (ماهانه/سالانه) شامل مالیات‌های مربوطه (مثلاً مالیات بر ارزش افزوده، مالیات فروش) نمی‌شوند.", + "taxTipSecond": "اگر منطقه شما هیچ الزامات مالیاتی قابل اجرا نداشته باشد، هیچ مالیاتی در هنگام پرداخت نشان داده نمی‌شود و برای کل مدت اشتراک هیچ هزینه اضافی از شما دریافت نخواهد شد.", + "triggerEvents": { + "unlimited": "رویدادهای ماشه‌ای نامحدود", + "tooltip": "تعداد رویدادهایی که به‌طور خودکار گردش‌های کاری را از طریق افزونه، برنامه‌زمان‌بندی یا ماشه‌های وب‌هوک آغاز می‌کنند.", + "sandbox": "{{count,number}} رویدادهای محرک", + "professional": "{{count,number}} رویدادهای فعال‌سازی/ماه" + }, + "workflowExecution": { + "faster": "اجرای سریع‌تر جریان کاری", + "priority": "اجرای جریان کاری اولویت‌دار", + "standard": "اجرای جریان کاری استاندارد", + "tooltip": "اولویت و سرعت صف اجرای گردش کار." + }, + "startNodes": { + "unlimited": "راه‌اندازی/فرآیندهای نامحدود", + "limited": "تا {{count}} محرک/جریان‌کاری" + }, + "title": { + "plans": "طرح‌ها", + "description": "برنامه‌ای را انتخاب کنید که بهترین تناسب را با نیازهای تیم شما دارد." + } + }, + "plans": { + "sandbox": { + "name": "محیط آزمایشی", + "description": "200 بار آزمایش رایگان GPT", + "for": "دوره آزمایشی رایگان قابلیت‌های اصلی" + }, + "professional": { + "name": "حرفه‌ای", + "description": "برای افراد و تیم‌های کوچک برای باز کردن قدرت بیشتر به طور مقرون به صرفه.", + "for": "برای توسعه‌دهندگان مستقل/تیم‌های کوچک" + }, + "team": { + "name": "تیم", + "description": "همکاری بدون محدودیت و لذت بردن از عملکرد برتر.", + "for": "برای تیم‌های متوسط" + }, + "enterprise": { + "name": "سازمانی", + "description": "دریافت کامل‌ترین قابلیت‌ها و پشتیبانی برای سیستم‌های بزرگ و بحرانی.", + "includesTitle": "همه چیز در طرح تیم، به علاوه:", + "price": "سفارشی", + "btnText": "تماس با فروش", + "for": "برای تیم‌های بزرگ", + "priceTip": "فقط صورتحساب سالیانه", + "features": [ + "راه‌حل‌های مستقرسازی مقیاس‌پذیر با سطح سازمانی", + "مجوز استفاده تجاری", + "ویژگی‌های اختصاصی سازمانی", + "چند فضای کاری و مدیریت سازمانی", + "ورود یکپارچه", + "توافق‌نامه‌های سطح خدمات مذاکره شده توسط شرکای Dify", + "امنیت و کنترل‌های پیشرفته", + "به‌روزرسانی‌ها و نگهداری توسط دیفی به‌طور رسمی", + "پشتیبانی فنی حرفه‌ای" + ] + }, + "community": { + "btnText": "شروع کنید با جامعه", + "price": "رایگان", + "includesTitle": "ویژگی‌های رایگان:", + "description": "برای کاربران فردی، تیم‌های کوچک یا پروژه‌های غیر تجاری", + "name": "جامعه", + "for": "برای کاربران فردی، تیم‌های کوچک یا پروژه‌های غیر تجاری", + "features": [ + "تمام ویژگی‌های اصلی تحت مخزن عمومی منتشر شدند", + "فضای کاری تنها", + "مطابق با مجوز متن باز Dify" + ] + }, + "premium": { + "btnText": "گرفتن نسخه پریمیوم در", + "description": "برای سازمان‌ها و تیم‌های میان‌رده", + "price": "قابل گسترش", + "includesTitle": "همه چیز از جامعه، به علاوه:", + "for": "برای سازمان‌ها و تیم‌های میان‌رده", + "name": "پیشرفته", + "priceTip": "بر اساس بازار ابری", + "comingSoon": "پشتیبانی مایکروسافت آژور و گوگل کلود به زودی در دسترس خواهد بود", + "features": [ + "قابلیت اطمینان خودمدیریتی توسط ارائه‌دهندگان مختلف ابری", + "فضای کاری تنها", + "سفارشی‌سازی لوگو و برندینگ وب‌اپ", + "پشتیبانی اولویت‌دار ایمیل و چت" + ] + } + }, + "vectorSpace": { + "fullTip": "فضای وکتور پر است.", + "fullSolution": "طرح خود را ارتقاء دهید تا فضای بیشتری دریافت کنید." + }, + "apps": { + "fullTip2": "محدودیت طرح به پایان رسید", + "contactUs": "با ما تماس بگیرید", + "fullTip1": "به‌روزرسانی کنید تا برنامه‌های بیشتری ایجاد کنید", + "fullTip1des": "شما به محدودیت ساخت برنامه‌ها در این طرح رسیده‌اید", + "fullTip2des": "توصیه می‌شود برنامه‌های غیرفعال را پاک کنید تا فضای استفاده را آزاد کنید، یا با ما تماس بگیرید." + }, + "annotatedResponse": { + "fullTipLine1": "طرح خود را ارتقاء دهید تا", + "fullTipLine2": "مکالمات بیشتری را حاشیه‌نویسی کنید.", + "quotaTitle": "سهمیه پاسخ حاشیه‌نویسی" + }, + "usagePage": { + "documentsUploadQuota": "حجم بارگذاری اسناد", + "vectorSpace": "ذخیره‌سازی داده‌های دانش", + "teamMembers": "اعضای تیم", + "annotationQuota": "سهام حاشیه", + "buildApps": "ساخت برنامه ها", + "vectorSpaceTooltip": "سندهایی که با حالت نمایه‌سازی با کیفیت بالا تهیه می‌شوند، منابع ذخیره‌سازی داده‌های دانش را مصرف خواهند کرد. زمانی که ذخیره‌سازی داده‌های دانش به حد خود برسد، اسناد جدید بارگزاری نخواهند شد.", + "perMonth": "در ماه", + "triggerEvents": "رویدادهای محرک", + "resetsIn": "در {{count,number}} روز بازنشانی می‌شود" + }, + "teamMembers": "اعضای تیم", + "triggerLimitModal": { + "upgrade": "ارتقا", + "description": "شما به حد مجاز تریگرهای رویداد گردش کار برای این طرح رسیده‌اید.", + "dismiss": "رد کردن", + "title": "ارتقا دهید تا رویدادهای محرک بیشتری باز شود", + "usageTitle": "رویدادهای محرک" + }, + "viewBillingTitle": "صورتحساب و اشتراک‌ها", + "viewBillingDescription": "مدیریت روش‌های پرداخت، صورت‌حساب‌ها و تغییرات اشتراک", + "viewBillingAction": "مدیریت", + "upgrade": { + "uploadMultiplePages": { + "title": "ارتقا برای آپلود همزمان چندین سند", + "description": "شما به حد آپلود رسیده‌اید — در طرح فعلی خود تنها می‌توانید یک سند را در هر بار انتخاب و آپلود کنید." + }, + "uploadMultipleFiles": { + "title": "ارتقا دهید تا امکان بارگذاری دسته‌ای اسناد فعال شود", + "description": "بارگذاری دسته‌ای چندین سند به‌طور همزمان برای صرفه‌جویی در زمان و افزایش کارایی." + }, + "addChunks": { + "title": "برای ادامه افزودن بخش‌ها ارتقا دهید", + "description": "شما به حد اضافه کردن بخش‌ها برای این طرح رسیده‌اید." + } + } +} diff --git a/web/i18n/fa-IR/billing.ts b/web/i18n/fa-IR/billing.ts deleted file mode 100644 index db050fc76d..0000000000 --- a/web/i18n/fa-IR/billing.ts +++ /dev/null @@ -1,221 +0,0 @@ -const translation = { - currentPlan: 'طرح فعلی', - upgradeBtn: { - plain: 'ارتقاء طرح', - encourage: 'هم اکنون ارتقاء دهید', - encourageShort: 'ارتقاء دهید', - }, - viewBilling: 'مدیریت صورتحساب‌ها و اشتراک‌ها', - buyPermissionDeniedTip: 'لطفاً با مدیر سازمان خود تماس بگیرید تا اشتراک تهیه کنید', - plansCommon: { - yearlyTip: 'با اشتراک سالانه 2 ماه رایگان دریافت کنید!', - mostPopular: 'محبوب‌ترین', - planRange: { - monthly: 'ماهانه', - yearly: 'سالانه', - }, - month: 'ماه', - year: 'سال', - save: 'صرفه‌جویی کنید ', - free: 'رایگان', - currentPlan: 'طرح فعلی', - contractSales: 'تماس با فروش', - contractOwner: 'تماس با مدیر تیم', - startForFree: 'رایگان شروع کنید', - contactSales: 'تماس با فروش', - talkToSales: 'صحبت با فروش', - modelProviders: 'ارائه‌دهندگان مدل', - annotationQuota: 'سهمیه حاشیه‌نویسی', - buildApps: 'ساخت اپلیکیشن‌ها', - vectorSpace: 'فضای وکتور', - vectorSpaceTooltip: 'فضای وکتور سیستم حافظه بلند مدت است که برای درک داده‌های شما توسط LLM‌ها مورد نیاز است.', - 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: 'درخواست‌های API RAG', - bulkUpload: 'بارگذاری دسته‌ای مستندات', - agentMode: 'حالت Agent', - workflow: 'جریان کار', - llmLoadingBalancing: 'توزیع بار LLM', - llmLoadingBalancingTooltip: 'اضافه کردن چندین کلید API به مدل‌ها، به طور مؤثر از محدودیت‌های نرخ API عبور می‌کند.', - }, - comingSoon: 'به زودی', - member: 'عضو', - memberAfter: 'عضو', - messageRequest: { - title: 'اعتبارات پیام', - tooltip: 'سهمیه‌های فراخوانی پیام برای طرح‌های مختلف با استفاده از مدل‌های OpenAI (به جز gpt4). پیام‌های بیش از حد محدودیت از کلید API OpenAI شما استفاده می‌کنند.', - titlePerMonth: '{{count,number}} پیام در ماه', - }, - annotatedResponse: { - title: 'محدودیت‌های سهمیه حاشیه‌نویسی', - tooltip: 'ویرایش دستی و حاشیه‌نویسی پاسخ‌ها، قابلیت‌های پرسش و پاسخ با کیفیت بالا و قابل تنظیم برای اپلیکیشن‌ها را فراهم می‌کند. (فقط در اپلیکیشن‌های چت اعمال می‌شود)', - }, - ragAPIRequestTooltip: 'به تعداد درخواست‌های API که فقط قابلیت‌های پردازش پایگاه دانش Dify را فراخوانی می‌کنند اشاره دارد.', - receiptInfo: 'فقط صاحب تیم و مدیر تیم می‌توانند اشتراک تهیه کنند و اطلاعات صورتحساب را مشاهده کنند', - apiRateLimitUnit: '{{count,number}}', - cloud: 'سرویس ابری', - documents: '{{count,number}} سندهای دانش', - self: 'خود میزبان', - apiRateLimit: 'محدودیت نرخ API', - annualBilling: 'صورتحساب سالانه', - freeTrialTip: 'آزمایش رایگان ۲۰۰ تماس OpenAI.', - teamMember_other: '{{count,number}} اعضای تیم', - unlimitedApiRate: 'هیچ محدودیتی برای نرخ API وجود ندارد.', - freeTrialTipPrefix: 'ثبت‌نام کنید و یک', - comparePlanAndFeatures: 'طرح ها و ویژگی ها را مقایسه کنید', - teamMember_one: '{{count,number}} عضو تیم', - priceTip: 'برای هر محیط کار/', - documentsTooltip: 'حجم مستندات وارد شده از منبع داده‌های دانش.', - freeTrialTipSuffix: 'نیاز به کارت اعتباری نیست', - teamWorkspace: '{{count,number}} فضاي کار تيمي', - getStarted: 'شروع کنید', - documentsRequestQuota: '{{count,number}}/دقیقه محدودیت نرخ درخواست دانش', - apiRateLimitTooltip: 'محدودیت نرخ API برای همه درخواست‌های انجام شده از طریق API Dify اعمال می‌شود، از جمله تولید متن، محاوره‌های چت، اجرای گردش‌های کار و پردازش اسناد.', - documentsRequestQuotaTooltip: 'تعیین می‌کند که تعداد کلی اقداماتی که یک فضای کاری می‌تواند در هر دقیقه در داخل پایگاه دانش انجام دهد، شامل ایجاد مجموعه داده، حذف، به‌روزرسانی، بارگذاری مستندات، تغییرات، بایگانی و پرسش از پایگاه دانش است. این معیار برای ارزیابی عملکرد درخواست‌های پایگاه دانش استفاده می‌شود. به عنوان مثال، اگر یک کاربر Sandbox در طی یک دقیقه 10 آزمایش متوالی انجام دهد، فضای کاری او به طور موقت از انجام اقدامات زیر در دقیقه بعدی محدود خواهد شد: ایجاد مجموعه داده، حذف، به‌روزرسانی و بارگذاری یا تغییر مستندات.', - startBuilding: 'شروع به ساخت کنید', - taxTip: 'تمام قیمت‌های اشتراک (ماهانه/سالانه) شامل مالیات‌های مربوطه (مثلاً مالیات بر ارزش افزوده، مالیات فروش) نمی‌شوند.', - taxTipSecond: 'اگر منطقه شما هیچ الزامات مالیاتی قابل اجرا نداشته باشد، هیچ مالیاتی در هنگام پرداخت نشان داده نمی‌شود و برای کل مدت اشتراک هیچ هزینه اضافی از شما دریافت نخواهد شد.', - triggerEvents: { - unlimited: 'رویدادهای ماشه‌ای نامحدود', - tooltip: 'تعداد رویدادهایی که به‌طور خودکار گردش‌های کاری را از طریق افزونه، برنامه‌زمان‌بندی یا ماشه‌های وب‌هوک آغاز می‌کنند.', - sandbox: '{{count,number}} رویدادهای محرک', - professional: '{{count,number}} رویدادهای فعال‌سازی/ماه', - }, - workflowExecution: { - faster: 'اجرای سریع‌تر جریان کاری', - priority: 'اجرای جریان کاری اولویت‌دار', - standard: 'اجرای جریان کاری استاندارد', - tooltip: 'اولویت و سرعت صف اجرای گردش کار.', - }, - startNodes: { - unlimited: 'راه‌اندازی/فرآیندهای نامحدود', - limited: 'تا {{count}} محرک/جریان‌کاری', - }, - title: { - plans: 'طرح‌ها', - description: 'برنامه‌ای را انتخاب کنید که بهترین تناسب را با نیازهای تیم شما دارد.', - }, - }, - plans: { - sandbox: { - name: 'محیط آزمایشی', - description: '200 بار آزمایش رایگان GPT', - for: 'دوره آزمایشی رایگان قابلیت‌های اصلی', - }, - professional: { - name: 'حرفه‌ای', - description: 'برای افراد و تیم‌های کوچک برای باز کردن قدرت بیشتر به طور مقرون به صرفه.', - for: 'برای توسعه‌دهندگان مستقل/تیم‌های کوچک', - }, - team: { - name: 'تیم', - description: 'همکاری بدون محدودیت و لذت بردن از عملکرد برتر.', - for: 'برای تیم‌های متوسط', - }, - enterprise: { - name: 'سازمانی', - description: 'دریافت کامل‌ترین قابلیت‌ها و پشتیبانی برای سیستم‌های بزرگ و بحرانی.', - includesTitle: 'همه چیز در طرح تیم، به علاوه:', - price: 'سفارشی', - btnText: 'تماس با فروش', - for: 'برای تیم‌های بزرگ', - priceTip: 'فقط صورتحساب سالیانه', - features: ['راه‌حل‌های مستقرسازی مقیاس‌پذیر با سطح سازمانی', 'مجوز استفاده تجاری', 'ویژگی‌های اختصاصی سازمانی', 'چند فضای کاری و مدیریت سازمانی', 'ورود یکپارچه', 'توافق‌نامه‌های سطح خدمات مذاکره شده توسط شرکای Dify', 'امنیت و کنترل‌های پیشرفته', 'به‌روزرسانی‌ها و نگهداری توسط دیفی به‌طور رسمی', 'پشتیبانی فنی حرفه‌ای'], - }, - community: { - btnText: 'شروع کنید با جامعه', - price: 'رایگان', - includesTitle: 'ویژگی‌های رایگان:', - description: 'برای کاربران فردی، تیم‌های کوچک یا پروژه‌های غیر تجاری', - name: 'جامعه', - for: 'برای کاربران فردی، تیم‌های کوچک یا پروژه‌های غیر تجاری', - features: ['تمام ویژگی‌های اصلی تحت مخزن عمومی منتشر شدند', 'فضای کاری تنها', 'مطابق با مجوز متن باز Dify'], - }, - premium: { - btnText: 'گرفتن نسخه پریمیوم در', - description: 'برای سازمان‌ها و تیم‌های میان‌رده', - price: 'قابل گسترش', - includesTitle: 'همه چیز از جامعه، به علاوه:', - for: 'برای سازمان‌ها و تیم‌های میان‌رده', - name: 'پیشرفته', - priceTip: 'بر اساس بازار ابری', - comingSoon: 'پشتیبانی مایکروسافت آژور و گوگل کلود به زودی در دسترس خواهد بود', - features: ['قابلیت اطمینان خودمدیریتی توسط ارائه‌دهندگان مختلف ابری', 'فضای کاری تنها', 'سفارشی‌سازی لوگو و برندینگ وب‌اپ', 'پشتیبانی اولویت‌دار ایمیل و چت'], - }, - }, - vectorSpace: { - fullTip: 'فضای وکتور پر است.', - fullSolution: 'طرح خود را ارتقاء دهید تا فضای بیشتری دریافت کنید.', - }, - apps: { - fullTip2: 'محدودیت طرح به پایان رسید', - contactUs: 'با ما تماس بگیرید', - fullTip1: 'به‌روزرسانی کنید تا برنامه‌های بیشتری ایجاد کنید', - fullTip1des: 'شما به محدودیت ساخت برنامه‌ها در این طرح رسیده‌اید', - fullTip2des: 'توصیه می‌شود برنامه‌های غیرفعال را پاک کنید تا فضای استفاده را آزاد کنید، یا با ما تماس بگیرید.', - }, - annotatedResponse: { - fullTipLine1: 'طرح خود را ارتقاء دهید تا', - fullTipLine2: 'مکالمات بیشتری را حاشیه‌نویسی کنید.', - quotaTitle: 'سهمیه پاسخ حاشیه‌نویسی', - }, - usagePage: { - documentsUploadQuota: 'حجم بارگذاری اسناد', - vectorSpace: 'ذخیره‌سازی داده‌های دانش', - teamMembers: 'اعضای تیم', - annotationQuota: 'سهام حاشیه', - buildApps: 'ساخت برنامه ها', - vectorSpaceTooltip: 'سندهایی که با حالت نمایه‌سازی با کیفیت بالا تهیه می‌شوند، منابع ذخیره‌سازی داده‌های دانش را مصرف خواهند کرد. زمانی که ذخیره‌سازی داده‌های دانش به حد خود برسد، اسناد جدید بارگزاری نخواهند شد.', - perMonth: 'در ماه', - triggerEvents: 'رویدادهای محرک', - resetsIn: 'در {{count,number}} روز بازنشانی می‌شود', - }, - teamMembers: 'اعضای تیم', - triggerLimitModal: { - upgrade: 'ارتقا', - description: 'شما به حد مجاز تریگرهای رویداد گردش کار برای این طرح رسیده‌اید.', - dismiss: 'رد کردن', - title: 'ارتقا دهید تا رویدادهای محرک بیشتری باز شود', - usageTitle: 'رویدادهای محرک', - }, - viewBillingTitle: 'صورتحساب و اشتراک‌ها', - viewBillingDescription: 'مدیریت روش‌های پرداخت، صورت‌حساب‌ها و تغییرات اشتراک', - viewBillingAction: 'مدیریت', - upgrade: { - uploadMultiplePages: { - title: 'ارتقا برای آپلود همزمان چندین سند', - description: 'شما به حد آپلود رسیده‌اید — در طرح فعلی خود تنها می‌توانید یک سند را در هر بار انتخاب و آپلود کنید.', - }, - uploadMultipleFiles: { - title: 'ارتقا دهید تا امکان بارگذاری دسته‌ای اسناد فعال شود', - description: 'بارگذاری دسته‌ای چندین سند به‌طور همزمان برای صرفه‌جویی در زمان و افزایش کارایی.', - }, - addChunks: { - title: 'برای ادامه افزودن بخش‌ها ارتقا دهید', - description: 'شما به حد اضافه کردن بخش‌ها برای این طرح رسیده‌اید.', - }, - }, -} - -export default translation diff --git a/web/i18n/fa-IR/common.json b/web/i18n/fa-IR/common.json new file mode 100644 index 0000000000..864cae9e8b --- /dev/null +++ b/web/i18n/fa-IR/common.json @@ -0,0 +1,785 @@ +{ + "api": { + "success": "موفقیت", + "actionSuccess": "عملیات موفق", + "saved": "ذخیره شد", + "create": "ایجاد شد", + "remove": "حذف شد", + "actionFailed": "عمل شکست خورد" + }, + "operation": { + "create": "ایجاد", + "confirm": "تایید", + "cancel": "لغو", + "clear": "پاک کردن", + "save": "ذخیره", + "saveAndEnable": "ذخیره و فعال سازی", + "edit": "ویرایش", + "add": "افزودن", + "added": "اضافه شد", + "refresh": "شروع مجدد", + "reset": "بازنشانی", + "search": "جستجو", + "change": "تغییر", + "remove": "حذف", + "send": "ارسال", + "copy": "کپی", + "lineBreak": "خط جدید", + "sure": "مطمئن هستم", + "download": "دانلود", + "delete": "حذف", + "settings": "تنظیمات", + "setup": "راه اندازی", + "getForFree": "دریافت رایگان", + "reload": "بارگذاری مجدد", + "ok": "تایید", + "log": "گزارش", + "learnMore": "اطلاعات بیشتر", + "params": "پارامترها", + "duplicate": "تکرار", + "rename": "تغییر نام", + "audioSourceUnavailable": "منبع صوتی در دسترس نیست", + "zoomIn": "بزرگنمایی", + "copyImage": "کپی تصویر", + "openInNewTab": "باز کردن در برگه جدید", + "zoomOut": "کوچک نمایی", + "close": "نزدیک", + "regenerate": "بازسازی", + "view": "مشاهده", + "viewMore": "بیشتر ببینید", + "saveAndRegenerate": "ذخیره و بازسازی تکه های فرزند", + "submit": "ارسال", + "skip": "کشتی", + "imageCopied": "تصویر کپی شده", + "deleteApp": "حذف برنامه", + "copied": "کپی", + "viewDetails": "دیدن جزئیات", + "in": "در", + "downloadFailed": "دانلود ناموفق بود. لطفاً بعداً دوباره تلاش کنید.", + "more": "بیشتر", + "format": "قالب", + "downloadSuccess": "دانلود کامل شد.", + "selectAll": "انتخاب همه", + "deSelectAll": "همه را انتخاب نکنید", + "config": "تنظیمات", + "no": "نه", + "deleteConfirmTitle": "حذف شود؟", + "yes": "بله", + "confirmAction": "لطفاً اقدام خود را تأیید کنید.", + "noSearchResults": "هیچ {{content}} یافت نشد", + "resetKeywords": "بازنشانی کلمات کلیدی", + "selectCount": "{{count}} انتخاب شد", + "searchCount": "یافتن {{count}} {{content}}", + "noSearchCount": "0 {{content}}", + "now": "الان" + }, + "errorMsg": { + "fieldRequired": "{{field}} الزامی است", + "urlError": "آدرس باید با http:// یا https:// شروع شود" + }, + "placeholder": { + "input": "لطفا وارد کنید", + "select": "لطفا انتخاب کنید", + "search": "جستجو..." + }, + "voice": { + "language": { + "zhHans": "چینی", + "zhHant": "چینی سنتی", + "enUS": "انگلیسی", + "deDE": "آلمانی", + "frFR": "فرانسوی", + "esES": "اسپانیایی", + "itIT": "ایتالیایی", + "thTH": "تایلندی", + "idID": "اندونزیایی", + "jaJP": "ژاپنی", + "koKR": "کره‌ای", + "ptBR": "پرتغالی", + "ruRU": "روسی", + "ukUA": "اوکراینی", + "viVN": "ویتنامی", + "plPL": "لهستانی", + "roRO": "رومانیایی", + "hiIN": "هندی", + "trTR": "ترکی", + "faIR": "فارسی", + "slSI": "اسلوونیایی", + "arTN": "عربی تونسی" + } + }, + "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": "حداکثر توکن به 80٪ حداکثر توکن مدل فعلی {{maxToken}} به‌روزرسانی شد.", + "stop_sequences": "توالی‌های توقف", + "stop_sequencesTip": "حداکثر چهار توالی که API تولید توکن‌های بیشتر را متوقف می‌کند. متن برگردانده شده شامل توالی توقف نخواهد بود.", + "stop_sequencesPlaceholder": "توالی را وارد کنید و Tab را فشار دهید" + }, + "tone": { + "Creative": "خلاقانه", + "Balanced": "متعادل", + "Precise": "دقیق", + "Custom": "سفارشی" + }, + "addMoreModel": "برای افزودن مدل‌های بیشتر به تنظیمات بروید", + "settingsLink": "تنظیمات ارائه دهنده مدل", + "capabilities": "قابلیت های چند وجهی" + }, + "menus": { + "status": "بتا", + "explore": "کاوش", + "apps": "استودیو", + "plugins": "افزونه‌ها", + "pluginsTips": "افزونه‌های شخص ثالث را ادغام کنید یا افزونه‌های هوش مصنوعی سازگار با ChatGPT ایجاد کنید.", + "datasets": "دانش", + "datasetsTips": "به زودی: داده‌های متنی خود را وارد کنید یا از طریق Webhook داده‌ها را در زمان واقعی برای بهبود زمینه LLM بنویسید.", + "newApp": "برنامه جدید", + "newDataset": "ایجاد دانش", + "tools": "ابزارها", + "exploreMarketplace": "بازار را کاوش کنید", + "appDetail": "جزئیات برنامه", + "account": "حساب" + }, + "userProfile": { + "settings": "تنظیمات", + "emailSupport": "پشتیبانی ایمیل", + "workspace": "فضای کاری", + "createWorkspace": "ایجاد فضای کاری", + "helpCenter": "راهنما", + "roadmap": "نقشه راه", + "community": "انجمن", + "about": "درباره", + "logout": "خروج", + "github": "گیت‌هاب", + "compliance": "انطباق", + "support": "پشتیبانی", + "contactUs": "با ما تماس بگیرید", + "forum": "انجمن" + }, + "settings": { + "accountGroup": "حساب کاربری", + "workplaceGroup": "فضای کاری", + "account": "حساب من", + "members": "اعضا", + "billing": "صورتحساب", + "integrations": "ادغام‌ها", + "language": "زبان", + "provider": "ارائه دهنده مدل", + "dataSource": "منبع داده", + "plugin": "افزونه‌ها", + "apiBasedExtension": "توسعه مبتنی بر API", + "generalGroup": "عمومی" + }, + "account": { + "avatar": "آواتار", + "name": "نام", + "email": "ایمیل", + "password": "رمز عبور", + "passwordTip": "اگر نمی‌خواهید از کدهای ورود موقت استفاده کنید، می‌توانید یک رمز عبور دائمی تنظیم کنید", + "setPassword": "تنظیم رمز عبور", + "resetPassword": "بازنشانی رمز عبور", + "currentPassword": "رمز عبور فعلی", + "newPassword": "رمز عبور جدید", + "confirmPassword": "تأیید رمز عبور", + "notEqual": "دو رمز عبور متفاوت هستند.", + "langGeniusAccount": "حساب Dify", + "langGeniusAccountTip": "حساب Dify شما و داده‌های کاربری مرتبط.", + "editName": "ویرایش نام", + "showAppLength": "نمایش {{length}} برنامه", + "delete": "حذف حساب کاربری", + "deleteTip": "حذف حساب کاربری شما تمام داده‌های شما را به طور دائمی پاک می‌کند و قابل بازیابی نیست.", + "account": "حساب", + "myAccount": "حساب من", + "studio": "استودیو Dify", + "feedbackTitle": "بازخورد", + "verificationPlaceholder": "کد 6 رقمی را جایگذاری کنید", + "deletePlaceholder": "لطفا ایمیل خود را وارد کنید", + "permanentlyDeleteButton": "حذف دائمی حساب", + "verificationLabel": "کد تأیید", + "feedbackPlaceholder": "اختیاری", + "sendVerificationButton": "ارسال کد تأیید", + "deletePrivacyLink": "سیاست حفظ حریم خصوصی.", + "deleteLabel": "برای تایید، لطفا ایمیل خود را در زیر تایپ کنید", + "deleteSuccessTip": "حساب شما برای پایان دادن به حذف به زمان نیاز دارد. وقتی همه چیز تمام شد به شما ایمیل خواهیم زد.", + "deletePrivacyLinkTip": "برای کسب اطلاعات بیشتر در مورد نحوه مدیریت داده های شما، لطفا به ما مراجعه کنید", + "feedbackLabel": "به ما بگویید چرا حساب خود را حذف کرده اید؟", + "editWorkspaceInfo": "ویرایش اطلاعات فضای کار", + "workspaceName": "نام فضای کاری", + "workspaceIcon": "آیکون محیط کار", + "changeEmail": { + "changeTo": "تغییر به {{email}}", + "resendTip": "کدی دریافت نکردید؟", + "codeLabel": "کد تأیید", + "resend": "دوباره ارسال کنید", + "emailLabel": "ایمیل جدید", + "title": "تغییر ایمیل", + "verifyNew": "ایمیل جدید خود را تأیید کنید", + "sendVerifyCode": "کد تأیید را ارسال کنید", + "newEmail": "یک آدرس ایمیل جدید راه‌اندازی کنید", + "emailPlaceholder": "یک ایمیل جدید وارد کنید", + "codePlaceholder": "کد ۶ رقمی را وارد کنید", + "existingEmail": "کاربری با این ایمیل از قبل وجود دارد.", + "content2": "ایمیل فعلی شما {{email}} است. کد تأیید به این آدرس ایمیل ارسال شده است.", + "resendCount": "دوباره ارسال کنید در {{count}} ثانیه", + "continue": "ادامه دهید", + "verifyEmail": "ایمیل فعلی خود را تأیید کنید", + "content4": "ما یک کد تأیید موقت برای شما به {{email}} ارسال کردیم.", + "content1": "اگر ادامه دهید، ما یک کد تأیید به {{email}} برای بازگشایی مجدد ارسال خواهیم کرد.", + "content3": "یک ایمیل جدید وارد کنید و ما یک کد تأیید برای شما ارسال خواهیم کرد.", + "authTip": "زمانی که ایمیل شما تغییر کند، حساب‌های گوگل یا گیت‌هاب مرتبط با ایمیل قدیمی شما دیگر قادر به ورود به این حساب نخواهند بود.", + "unAvailableEmail": "این ایمیل به طور موقت در دسترس نیست." + } + }, + "members": { + "team": "تیم", + "invite": "افزودن", + "name": "نام", + "lastActive": "آخرین فعالیت", + "role": "نقش‌ها", + "pending": "در انتظار...", + "owner": "مالک", + "admin": "مدیر", + "adminTip": "می‌تواند برنامه‌ها را بسازد و تنظیمات تیم را مدیریت کند", + "normal": "عادی", + "normalTip": "فقط می‌تواند از برنامه‌ها استفاده کند، نمی‌تواند برنامه بسازد", + "builder": "سازنده", + "builderTip": "می‌تواند برنامه‌های خود را بسازد و ویرایش کند", + "editor": "ویرایشگر", + "editorTip": "می‌تواند برنامه‌ها را بسازد و ویرایش کند", + "datasetOperator": "مدیر دانش", + "datasetOperatorTip": "فقط می‌تواند پایگاه دانش را مدیریت کند", + "inviteTeamMember": "افزودن عضو تیم", + "inviteTeamMemberTip": "آنها می‌توانند پس از ورود به سیستم، مستقیماً به داده‌های تیم شما دسترسی پیدا کنند.", + "emailNotSetup": "سرور ایمیل راه‌اندازی نشده است، بنابراین ایمیل‌های دعوت نمی‌توانند ارسال شوند. لطفاً کاربران را از لینک دعوت که پس از دعوت صادر خواهد شد مطلع کنید。", + "email": "ایمیل", + "emailInvalid": "فرمت ایمیل نامعتبر است", + "emailPlaceholder": "لطفاً ایمیل‌ها را وارد کنید", + "sendInvite": "ارسال دعوت", + "invitedAsRole": "به عنوان کاربر {{role}} دعوت شده", + "invitationSent": "دعوت‌نامه ارسال شد", + "invitationSentTip": "دعوت‌نامه ارسال شد و آنها می‌توانند وارد Dify شوند تا به داده‌های تیم شما دسترسی پیدا کنند.", + "invitationLink": "لینک دعوت", + "failedInvitationEmails": "کاربران زیر با موفقیت دعوت نشدند", + "ok": "تایید", + "removeFromTeam": "حذف از تیم", + "removeFromTeamTip": "دسترسی تیم را حذف می‌کند", + "setAdmin": "تنظیم به عنوان مدیر", + "setMember": "تنظیم به عنوان عضو عادی", + "setBuilder": "تنظیم به عنوان سازنده", + "setEditor": "تنظیم به عنوان ویرایشگر", + "disInvite": "لغو دعوت", + "deleteMember": "حذف عضو", + "you": "(شما)", + "transferModal": { + "resendTip": "کدی دریافت نکردید؟", + "resend": "دوباره ارسال کنید", + "continue": "ادامه دهید", + "codeLabel": "کد تأیید", + "sendVerifyCode": "کد تأیید را ارسال کنید", + "title": "انتقال مالکیت فضای کاری", + "verifyContent": "ایمیل فعلی شما {{email}} است.", + "transfer": "انتقال مالکیت فضای کاری", + "warning": "شما در حال انتقال مالکیت \"{{workspace}}\" هستید. این بلافاصله اجرایی می‌شود و قابل بازگشت نیست.", + "resendCount": "دوباره ارسال کنید در {{count}} ثانیه", + "warningTip": "شما به یک عضو مدیر تبدیل خواهید شد و مالک جدید کنترل کامل خواهد داشت.", + "transferLabel": "مالکیت فضای کار را به منتقل کنید", + "verifyEmail": "ایمیل فعلی خود را تأیید کنید", + "sendTip": "اگر ادامه دهید، ما یک کد تأیید به {{email}} برای بازگشایی مجدد ارسال خواهیم کرد.", + "codePlaceholder": "کد ۶ رقمی را وارد کنید", + "transferPlaceholder": "یک عضو از فضای کاری را انتخاب کنید…", + "verifyContent2": "ما یک کد تأیید موقت به این ایمیل برای تأیید مجدد ارسال خواهیم کرد." + }, + "transferOwnership": "انتقال مالکیت" + }, + "integrations": { + "connected": "متصل شده", + "google": "گوگل", + "googleAccount": "ورود با حساب گوگل", + "github": "گیت‌هاب", + "githubAccount": "ورود با حساب گیت‌هاب", + "connect": "اتصال" + }, + "language": { + "displayLanguage": "زبان نمایش", + "timezone": "منطقه زمانی" + }, + "provider": { + "apiKey": "کلید API", + "enterYourKey": "کلید API خود را اینجا وارد کنید", + "invalidKey": "کلید API OpenAI نامعتبر است", + "validatedError": "اعتبارسنجی ناموفق بود: ", + "validating": "در حال اعتبارسنجی کلید...", + "saveFailed": "ذخیره کلید API ناموفق بود", + "apiKeyExceedBill": "این کلید API سهمیه موجود ندارد، لطفاً بخوانید", + "addKey": "افزودن کلید", + "comingSoon": "به زودی", + "editKey": "ویرایش", + "invalidApiKey": "کلید API نامعتبر", + "azure": { + "apiBase": "پایه API", + "apiBasePlaceholder": "آدرس پایه API نقطه پایانی Azure OpenAI شما.", + "apiKey": "کلید API", + "apiKeyPlaceholder": "کلید API خود را اینجا وارد کنید", + "helpTip": "آشنایی با سرویس Azure OpenAI" + }, + "openaiHosted": { + "openaiHosted": "OpenAI میزبانی شده", + "onTrial": "در حال آزمایش", + "exhausted": "سهمیه تمام شده", + "desc": "سرویس میزبانی OpenAI ارائه شده توسط Dify به شما اجازه می‌دهد از مدل‌هایی مانند GPT-3.5 استفاده کنید. قبل از اتمام سهمیه آزمایشی خود، باید سایر ارائه‌دهندگان مدل را تنظیم کنید.", + "callTimes": "تعداد فراخوانی", + "usedUp": "سهمیه آزمایشی تمام شده است. ارائه‌دهنده مدل خود را اضافه کنید.", + "useYourModel": "در حال حاضر از ارائه‌دهنده مدل خود استفاده می‌کنید.", + "close": "بستن" + }, + "anthropicHosted": { + "anthropicHosted": "Anthropic Claude", + "onTrial": "در حال آزمایش", + "exhausted": "سهمیه تمام شده", + "desc": "مدل قدرتمند که در طیف گسترده‌ای از وظایف از گفتگوی پیشرفته و تولید محتوای خلاقانه تا دستورالعمل‌های دقیق عالی عمل می‌کند.", + "callTimes": "تعداد فراخوانی", + "usedUp": "سهمیه آزمایشی تمام شده است. ارائه‌دهنده مدل خود را اضافه کنید.", + "useYourModel": "در حال حاضر از ارائه‌دهنده مدل خود استفاده می‌کنید.", + "close": "بستن", + "trialQuotaTip": "سهمیه آزمایشی Anthropic شما در تاریخ 2025/03/11 منقضی می شود و پس از آن دیگر در دسترس نخواهد بود. لطفا به موقع از آن استفاده کنید." + }, + "anthropic": { + "using": "قابلیت تعبیه از این استفاده می‌کند", + "enableTip": "برای فعال‌سازی مدل Anthropic، ابتدا باید به OpenAI یا سرویس Azure OpenAI متصل شوید.", + "notEnabled": "فعال نشده", + "keyFrom": "کلید API خود را از Anthropic دریافت کنید" + }, + "encrypted": { + "front": "کلید API شما با استفاده از فناوری", + "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", + "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 شما با استفاده از فناوری", + "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": "وضعیت کلید API عادی است", + "apiKeyRateLimit": "محدودیت نرخ به دست آمد، پس از {{seconds}} ثانیه در دسترس خواهد بود", + "addConfig": "افزودن پیکربندی", + "editConfig": "ویرایش پیکربندی", + "loadBalancingLeastKeyWarning": "برای فعال کردن تعادل بار، حداقل 2 کلید باید فعال باشند.", + "loadBalancingInfo": "به طور پیش‌فرض، تعادل بار از استراتژی Round-robin استفاده می‌کند. اگر محدودیت نرخ فعال شود، یک دوره خنک شدن 1 دقیقه‌ای اعمال خواهد شد.", + "upgradeForLoadBalancing": "برای فعال کردن تعادل بار، طرح خود را ارتقا دهید.", + "emptyProviderTitle": "ارائه دهنده مدل راه اندازی نشده است", + "toBeConfigured": "پیکربندی شود", + "configureTip": "api-key را راه اندازی کنید یا مدل را برای استفاده اضافه کنید", + "installProvider": "نصب ارائه دهندگان مدل", + "discoverMore": "اطلاعات بیشتر در", + "emptyProviderTip": "لطفا ابتدا یک ارائه دهنده مدل نصب کنید.", + "auth": { + "apiKeyModal": { + "title": "پیکربندی مجوز کلید API", + "addModel": "مدل اضافه کنید", + "desc": "پس از پیکربندی اعتبارنامه‌ها، تمامی اعضای درون فضای کاری می‌توانند از این مدل هنگام نظم‌دهی به برنامه‌ها استفاده کنند." + }, + "authorizationError": "خطای مجوز", + "unAuthorized": "بدون مجوز", + "configModel": "مدل پیکربندی", + "apiKeys": "کلیدهای API", + "addCredential": "مدرک اضافه کنید", + "addNewModel": "مدل جدید اضافه کن", + "addApiKey": "کلید API را اضافه کنید", + "authRemoved": "منبع حذف شد", + "configLoadBalancing": "پیکربندی بارگذاری متوازن", + "specifyModelCredential": "مدل اعتبارنامه را مشخص کنید", + "providerManaged": "مدیریت شده توسط ارائه‌دهنده", + "addModelCredential": "مدرک مدل را اضافه کنید", + "specifyModelCredentialTip": "از اعتبارنامه مدل پیکربندی شده استفاده کنید.", + "providerManagedTip": "تنظیمات فعلی توسط ارائه‌دهنده میزبانی می‌شود.", + "modelCredentials": "مدل اعتبارنامه", + "manageCredentials": "مدیریت اعتبارنامه ها", + "addModel": "افزودن مدل", + "removeModel": "حذف مدل", + "modelCredential": "اعتبار مدل", + "selectModelCredential": "یک اعتبار مدل را انتخاب کنید", + "editModelCredential": "اعتبار مدل را ویرایش کنید", + "addNewModelCredential": "افزودن اعتبار مدل جدید", + "customModelCredentials": "اعتبار مدل سفارشی", + "customModelCredentialsDeleteTip": "اعتبار در حال استفاده است و قابل حذف نیست" + }, + "parametersInvalidRemoved": "برخی پارامترها نامعتبر هستند و حذف شده‌اند", + "installDataSourceProvider": "نصب ارائه‌دهندگان منبع داده" + }, + "dataSource": { + "add": "افزودن منبع داده", + "connect": "اتصال", + "configure": "پیکربندی", + "notion": { + "title": "نوشن", + "description": "استفاده از نوشن به عنوان منبع داده برای دانش.", + "connectedWorkspace": "فضای کاری متصل", + "addWorkspace": "افزودن فضای کاری", + "connected": "متصل شده", + "disconnected": "قطع شده", + "changeAuthorizedPages": "تغییر صفحات مجاز", + "pagesAuthorized": "صفحات مجاز", + "sync": "همگام‌سازی", + "remove": "حذف", + "selector": { + "pageSelected": "صفحات انتخاب شده", + "searchPages": "جستجوی صفحات...", + "noSearchResult": "نتیجه جستجویی یافت نشد", + "addPages": "افزودن صفحات", + "preview": "پیش‌نمایش" + }, + "integratedAlert": "نوشته به طور داخلی از طریق اعتبارنامه یکپارچه شده است، نیازی به دوباره مجاز کردن نیست." + }, + "website": { + "title": "وب‌سایت", + "description": "وارد کردن محتوا از وب‌سایت‌ها با استفاده از خزنده وب.", + "with": "با", + "configuredCrawlers": "خزنده‌های پیکربندی شده", + "active": "فعال", + "inactive": "غیرفعال" + } + }, + "plugin": { + "serpapi": { + "apiKey": "کلید API", + "apiKeyPlaceholder": "کلید API خود را وارد کنید", + "keyFrom": "کلید SerpAPI خود را از صفحه حساب SerpAPI دریافت کنید" + } + }, + "apiBasedExtension": { + "title": "افزونه‌های مبتنی بر API مدیریت متمرکز API را فراهم می‌کنند و پیکربندی را برای استفاده آسان در برنامه‌های Dify ساده می‌کنند.", + "link": "نحوه توسعه افزونه API خود را بیاموزید.", + "add": "افزودن افزونه API", + "selector": { + "title": "افزونه API", + "placeholder": "لطفاً افزونه API را انتخاب کنید", + "manage": "مدیریت افزونه API" + }, + "modal": { + "title": "افزودن افزونه API", + "editTitle": "ویرایش افزونه API", + "name": { + "title": "نام", + "placeholder": "لطفاً نام را وارد کنید" + }, + "apiEndpoint": { + "title": "نقطه پایانی API", + "placeholder": "لطفاً نقطه پایانی API را وارد کنید" + }, + "apiKey": { + "title": "کلید API", + "placeholder": "لطفاً کلید API را وارد کنید", + "lengthError": "طول کلید API نمی‌تواند کمتر از ۵ کاراکتر باشد" + } + }, + "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": "برنامه‌های مرتبط", + "noRelatedApp": "هیچ برنامه پیوندی وجود ندارد", + "pipeline": "خط لوله" + }, + "voiceInput": { + "speaking": "اکنون صحبت کنید...", + "converting": "در حال تبدیل به متن...", + "notAllow": "میکروفون مجاز نیست" + }, + "modelName": { + "gpt-3.5-turbo": "جی‌پی‌تی-۳.۵-توربو", + "gpt-3.5-turbo-16k": "جی‌پی‌تی-۳.۵-توربو-۱۶کا", + "gpt-4": "جی‌پی‌تی-۴", + "gpt-4-32k": "جی‌پی‌تی-۴-۳۲کا", + "text-davinci-003": "متن-داوینچی-۰۰۳", + "text-embedding-ada-002": "متن-تعبیه-آدا-۰۰۲", + "whisper-1": "ویسپر-۱", + "claude-instant-1": "کلاود-فوری", + "claude-2": "کلاود-۲" + }, + "chat": { + "renameConversation": "تغییر نام مکالمه", + "conversationName": "نام مکالمه", + "conversationNamePlaceholder": "لطفاً نام مکالمه را وارد کنید", + "conversationNameCanNotEmpty": "نام مکالمه الزامی است", + "citation": { + "title": "استنادها", + "linkToDataset": "پیوند به دانش", + "characters": "کاراکترها:", + "hitCount": "تعداد بازیابی:", + "vectorHash": "هش بردار:", + "hitScore": "امتیاز بازیابی:" + }, + "inputPlaceholder": "با ربات صحبت کنید", + "thought": "فکر", + "thinking": "تفکر...", + "resend": "دوباره ارسال کنید" + }, + "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}} مگابایت بیشتر باشد", + "pasteImageLink": "پیوند تصویر را بچسبانید", + "pasteImageLinkInputPlaceholder": "پیوند تصویر را اینجا بچسبانید", + "pasteImageLinkInvalid": "پیوند تصویر نامعتبر", + "imageUpload": "بارگذاری تصویر" + }, + "tag": { + "placeholder": "همه برچسب‌ها", + "addNew": "افزودن برچسب جدید", + "noTag": "بدون برچسب", + "noTagYet": "هنوز برچسبی وجود ندارد", + "addTag": "افزودن برچسب‌ها", + "editTag": "ویرایش برچسب‌ها", + "manageTags": "مدیریت برچسب‌ها", + "selectorPlaceholder": "برای جستجو یا ایجاد تایپ کنید", + "create": "ایجاد", + "delete": "حذف برچسب", + "deleteTip": "برچسب در حال استفاده است، آیا آن را حذف می‌کنید؟", + "created": "برچسب با موفقیت ایجاد شد", + "failed": "ایجاد برچسب ناموفق بود" + }, + "fileUploader": { + "uploadFromComputer": "آپلود محلی", + "pasteFileLinkInputPlaceholder": "URL را وارد کنید...", + "pasteFileLinkInvalid": "پیوند فایل نامعتبر", + "fileExtensionNotSupport": "پسوند فایل پشتیبانی نمی شود", + "uploadFromComputerReadError": "خواندن فایل انجام نشد، لطفا دوباره امتحان کنید.", + "uploadFromComputerUploadError": "آپلود فایل انجام نشد، لطفا دوباره آپلود کنید.", + "pasteFileLink": "پیوند فایل را جایگذاری کنید", + "uploadFromComputerLimit": "آپلود فایل نمی تواند از {{size}} تجاوز کند", + "fileExtensionBlocked": "این نوع فایل به دلایل امنیتی مسدود شده است", + "uploadDisabled": "بارگذاری فایل غیرفعال است" + }, + "license": { + "expiring_plural": "انقضا در {{count}} روز", + "expiring": "انقضا در یک روز", + "unlimited": "نامحدود" + }, + "pagination": { + "perPage": "موارد در هر صفحه" + }, + "theme": { + "auto": "سیستم", + "theme": "تم", + "dark": "تاریک", + "light": "نور" + }, + "compliance": { + "soc2Type1": "گزارش نوع I SOC 2", + "sandboxUpgradeTooltip": "تنها با برنامه حرفه‌ای یا تیمی در دسترس است.", + "gdpr": "GDPR DPA", + "soc2Type2": "گزارش نوع II SOC 2", + "iso27001": "گواهینامه ISO 27001:2022", + "professionalUpgradeTooltip": "تنها با برنامه تیم یا بالاتر در دسترس است." + }, + "imageInput": { + "dropImageHere": "عکس خود را اینجا رها کنید، یا", + "supportedFormats": "از فرمت‌های PNG، JPG، JPEG، WEBP و GIF پشتیبانی می‌کند", + "browse": "مرورگر" + }, + "you": "تو", + "avatar": { + "deleteTitle": "حذف آواتار", + "deleteDescription": "آیا مطمئن هستید که می‌خواهید تصویر پروفایل خود را حذف کنید؟ حساب شما از آواتار اولیه پیش‌فرض استفاده خواهد کرد." + }, + "feedback": { + "title": "بازخورد ارائه دهید", + "subtitle": "لطفاً به ما بگویید که چه مشکلی در این پاسخ پیش آمده است.", + "content": "محتوای بازخورد", + "placeholder": "لطفاً توضیح دهید که چه مشکلی پیش آمد یا چگونه می‌توانیم بهبود پیدا کنیم..." + }, + "label": { + "optional": "(اختیاری)" + }, + "noData": "بدون داده", + "dynamicSelect": { + "error": "بارگیری گزینه‌ها ناموفق بود", + "noData": "هیچ گزینه‌ای در دسترس نیست", + "loading": "در حال بارگذاری گزینه‌ها...", + "selected": "{{count}} انتخاب شد" + } +} diff --git a/web/i18n/fa-IR/common.ts b/web/i18n/fa-IR/common.ts deleted file mode 100644 index afd6f760aa..0000000000 --- a/web/i18n/fa-IR/common.ts +++ /dev/null @@ -1,792 +0,0 @@ -const translation = { - api: { - success: 'موفقیت', - actionSuccess: 'عملیات موفق', - saved: 'ذخیره شد', - create: 'ایجاد شد', - remove: 'حذف شد', - actionFailed: 'عمل شکست خورد', - }, - operation: { - create: 'ایجاد', - confirm: 'تایید', - cancel: 'لغو', - clear: 'پاک کردن', - save: 'ذخیره', - saveAndEnable: 'ذخیره و فعال سازی', - edit: 'ویرایش', - add: 'افزودن', - added: 'اضافه شد', - refresh: 'شروع مجدد', - reset: 'بازنشانی', - search: 'جستجو', - change: 'تغییر', - remove: 'حذف', - send: 'ارسال', - copy: 'کپی', - lineBreak: 'خط جدید', - sure: 'مطمئن هستم', - download: 'دانلود', - delete: 'حذف', - settings: 'تنظیمات', - setup: 'راه اندازی', - getForFree: 'دریافت رایگان', - reload: 'بارگذاری مجدد', - ok: 'تایید', - log: 'گزارش', - learnMore: 'اطلاعات بیشتر', - params: 'پارامترها', - duplicate: 'تکرار', - rename: 'تغییر نام', - audioSourceUnavailable: 'منبع صوتی در دسترس نیست', - zoomIn: 'بزرگنمایی', - copyImage: 'کپی تصویر', - openInNewTab: 'باز کردن در برگه جدید', - zoomOut: 'کوچک نمایی', - close: 'نزدیک', - regenerate: 'بازسازی', - view: 'مشاهده', - viewMore: 'بیشتر ببینید', - saveAndRegenerate: 'ذخیره و بازسازی تکه های فرزند', - submit: 'ارسال', - skip: 'کشتی', - imageCopied: 'تصویر کپی شده', - deleteApp: 'حذف برنامه', - copied: 'کپی', - viewDetails: 'دیدن جزئیات', - in: 'در', - downloadFailed: 'دانلود ناموفق بود. لطفاً بعداً دوباره تلاش کنید.', - more: 'بیشتر', - format: 'قالب', - downloadSuccess: 'دانلود کامل شد.', - selectAll: 'انتخاب همه', - deSelectAll: 'همه را انتخاب نکنید', - config: 'تنظیمات', - no: 'نه', - deleteConfirmTitle: 'حذف شود؟', - yes: 'بله', - confirmAction: 'لطفاً اقدام خود را تأیید کنید.', - noSearchResults: 'هیچ {{content}} یافت نشد', - resetKeywords: 'بازنشانی کلمات کلیدی', - selectCount: '{{count}} انتخاب شد', - searchCount: 'یافتن {{count}} {{content}}', - noSearchCount: '0 {{content}}', - now: 'الان', - }, - errorMsg: { - fieldRequired: '{{field}} الزامی است', - urlError: 'آدرس باید با http:// یا https:// شروع شود', - }, - placeholder: { - input: 'لطفا وارد کنید', - select: 'لطفا انتخاب کنید', - search: 'جستجو...', - }, - voice: { - language: { - zhHans: 'چینی', - zhHant: 'چینی سنتی', - enUS: 'انگلیسی', - deDE: 'آلمانی', - frFR: 'فرانسوی', - esES: 'اسپانیایی', - itIT: 'ایتالیایی', - thTH: 'تایلندی', - idID: 'اندونزیایی', - jaJP: 'ژاپنی', - koKR: 'کره‌ای', - ptBR: 'پرتغالی', - ruRU: 'روسی', - ukUA: 'اوکراینی', - viVN: 'ویتنامی', - plPL: 'لهستانی', - roRO: 'رومانیایی', - hiIN: 'هندی', - trTR: 'ترکی', - faIR: 'فارسی', - slSI: 'اسلوونیایی', - arTN: 'عربی تونسی', - }, - }, - 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: 'حداکثر توکن به 80٪ حداکثر توکن مدل فعلی {{maxToken}} به‌روزرسانی شد.', - stop_sequences: 'توالی‌های توقف', - stop_sequencesTip: 'حداکثر چهار توالی که API تولید توکن‌های بیشتر را متوقف می‌کند. متن برگردانده شده شامل توالی توقف نخواهد بود.', - stop_sequencesPlaceholder: 'توالی را وارد کنید و Tab را فشار دهید', - }, - tone: { - Creative: 'خلاقانه', - Balanced: 'متعادل', - Precise: 'دقیق', - Custom: 'سفارشی', - }, - addMoreModel: 'برای افزودن مدل‌های بیشتر به تنظیمات بروید', - settingsLink: 'تنظیمات ارائه دهنده مدل', - capabilities: 'قابلیت های چند وجهی', - }, - menus: { - status: 'بتا', - explore: 'کاوش', - apps: 'استودیو', - plugins: 'افزونه‌ها', - pluginsTips: 'افزونه‌های شخص ثالث را ادغام کنید یا افزونه‌های هوش مصنوعی سازگار با ChatGPT ایجاد کنید.', - datasets: 'دانش', - datasetsTips: 'به زودی: داده‌های متنی خود را وارد کنید یا از طریق Webhook داده‌ها را در زمان واقعی برای بهبود زمینه LLM بنویسید.', - newApp: 'برنامه جدید', - newDataset: 'ایجاد دانش', - tools: 'ابزارها', - exploreMarketplace: 'بازار را کاوش کنید', - appDetail: 'جزئیات برنامه', - account: 'حساب', - }, - userProfile: { - settings: 'تنظیمات', - emailSupport: 'پشتیبانی ایمیل', - workspace: 'فضای کاری', - createWorkspace: 'ایجاد فضای کاری', - helpCenter: 'راهنما', - roadmap: 'نقشه راه', - community: 'انجمن', - about: 'درباره', - logout: 'خروج', - github: 'گیت‌هاب', - compliance: 'انطباق', - support: 'پشتیبانی', - contactUs: 'با ما تماس بگیرید', - forum: 'انجمن', - }, - settings: { - accountGroup: 'حساب کاربری', - workplaceGroup: 'فضای کاری', - account: 'حساب من', - members: 'اعضا', - billing: 'صورتحساب', - integrations: 'ادغام‌ها', - language: 'زبان', - provider: 'ارائه دهنده مدل', - dataSource: 'منبع داده', - plugin: 'افزونه‌ها', - apiBasedExtension: 'توسعه مبتنی بر API', - generalGroup: 'عمومی', - }, - account: { - avatar: 'آواتار', - name: 'نام', - email: 'ایمیل', - password: 'رمز عبور', - passwordTip: 'اگر نمی‌خواهید از کدهای ورود موقت استفاده کنید، می‌توانید یک رمز عبور دائمی تنظیم کنید', - setPassword: 'تنظیم رمز عبور', - resetPassword: 'بازنشانی رمز عبور', - currentPassword: 'رمز عبور فعلی', - newPassword: 'رمز عبور جدید', - confirmPassword: 'تأیید رمز عبور', - notEqual: 'دو رمز عبور متفاوت هستند.', - langGeniusAccount: 'حساب Dify', - langGeniusAccountTip: 'حساب Dify شما و داده‌های کاربری مرتبط.', - editName: 'ویرایش نام', - showAppLength: 'نمایش {{length}} برنامه', - delete: 'حذف حساب کاربری', - deleteTip: 'حذف حساب کاربری شما تمام داده‌های شما را به طور دائمی پاک می‌کند و قابل بازیابی نیست.', - account: 'حساب', - myAccount: 'حساب من', - studio: 'استودیو Dify', - feedbackTitle: 'بازخورد', - verificationPlaceholder: 'کد 6 رقمی را جایگذاری کنید', - deletePlaceholder: 'لطفا ایمیل خود را وارد کنید', - permanentlyDeleteButton: 'حذف دائمی حساب', - verificationLabel: 'کد تأیید', - feedbackPlaceholder: 'اختیاری', - sendVerificationButton: 'ارسال کد تأیید', - deletePrivacyLink: 'سیاست حفظ حریم خصوصی.', - deleteLabel: 'برای تایید، لطفا ایمیل خود را در زیر تایپ کنید', - deleteSuccessTip: 'حساب شما برای پایان دادن به حذف به زمان نیاز دارد. وقتی همه چیز تمام شد به شما ایمیل خواهیم زد.', - deletePrivacyLinkTip: 'برای کسب اطلاعات بیشتر در مورد نحوه مدیریت داده های شما، لطفا به ما مراجعه کنید', - feedbackLabel: 'به ما بگویید چرا حساب خود را حذف کرده اید؟', - editWorkspaceInfo: 'ویرایش اطلاعات فضای کار', - workspaceName: 'نام فضای کاری', - workspaceIcon: 'آیکون محیط کار', - changeEmail: { - changeTo: 'تغییر به {{email}}', - resendTip: 'کدی دریافت نکردید؟', - codeLabel: 'کد تأیید', - resend: 'دوباره ارسال کنید', - emailLabel: 'ایمیل جدید', - title: 'تغییر ایمیل', - verifyNew: 'ایمیل جدید خود را تأیید کنید', - sendVerifyCode: 'کد تأیید را ارسال کنید', - newEmail: 'یک آدرس ایمیل جدید راه‌اندازی کنید', - emailPlaceholder: 'یک ایمیل جدید وارد کنید', - codePlaceholder: 'کد ۶ رقمی را وارد کنید', - existingEmail: 'کاربری با این ایمیل از قبل وجود دارد.', - content2: 'ایمیل فعلی شما {{email}} است. کد تأیید به این آدرس ایمیل ارسال شده است.', - resendCount: 'دوباره ارسال کنید در {{count}} ثانیه', - continue: 'ادامه دهید', - verifyEmail: 'ایمیل فعلی خود را تأیید کنید', - content4: 'ما یک کد تأیید موقت برای شما به {{email}} ارسال کردیم.', - content1: 'اگر ادامه دهید، ما یک کد تأیید به {{email}} برای بازگشایی مجدد ارسال خواهیم کرد.', - content3: 'یک ایمیل جدید وارد کنید و ما یک کد تأیید برای شما ارسال خواهیم کرد.', - authTip: 'زمانی که ایمیل شما تغییر کند، حساب‌های گوگل یا گیت‌هاب مرتبط با ایمیل قدیمی شما دیگر قادر به ورود به این حساب نخواهند بود.', - unAvailableEmail: 'این ایمیل به طور موقت در دسترس نیست.', - }, - }, - members: { - team: 'تیم', - invite: 'افزودن', - name: 'نام', - lastActive: 'آخرین فعالیت', - role: 'نقش‌ها', - pending: 'در انتظار...', - owner: 'مالک', - admin: 'مدیر', - adminTip: 'می‌تواند برنامه‌ها را بسازد و تنظیمات تیم را مدیریت کند', - normal: 'عادی', - normalTip: 'فقط می‌تواند از برنامه‌ها استفاده کند، نمی‌تواند برنامه بسازد', - builder: 'سازنده', - builderTip: 'می‌تواند برنامه‌های خود را بسازد و ویرایش کند', - editor: 'ویرایشگر', - editorTip: 'می‌تواند برنامه‌ها را بسازد و ویرایش کند', - datasetOperator: 'مدیر دانش', - datasetOperatorTip: 'فقط می‌تواند پایگاه دانش را مدیریت کند', - inviteTeamMember: 'افزودن عضو تیم', - inviteTeamMemberTip: 'آنها می‌توانند پس از ورود به سیستم، مستقیماً به داده‌های تیم شما دسترسی پیدا کنند.', - emailNotSetup: 'سرور ایمیل راه‌اندازی نشده است، بنابراین ایمیل‌های دعوت نمی‌توانند ارسال شوند. لطفاً کاربران را از لینک دعوت که پس از دعوت صادر خواهد شد مطلع کنید。', - email: 'ایمیل', - emailInvalid: 'فرمت ایمیل نامعتبر است', - emailPlaceholder: 'لطفاً ایمیل‌ها را وارد کنید', - sendInvite: 'ارسال دعوت', - invitedAsRole: 'به عنوان کاربر {{role}} دعوت شده', - invitationSent: 'دعوت‌نامه ارسال شد', - invitationSentTip: 'دعوت‌نامه ارسال شد و آنها می‌توانند وارد Dify شوند تا به داده‌های تیم شما دسترسی پیدا کنند.', - invitationLink: 'لینک دعوت', - failedInvitationEmails: 'کاربران زیر با موفقیت دعوت نشدند', - ok: 'تایید', - removeFromTeam: 'حذف از تیم', - removeFromTeamTip: 'دسترسی تیم را حذف می‌کند', - setAdmin: 'تنظیم به عنوان مدیر', - setMember: 'تنظیم به عنوان عضو عادی', - setBuilder: 'تنظیم به عنوان سازنده', - setEditor: 'تنظیم به عنوان ویرایشگر', - disInvite: 'لغو دعوت', - deleteMember: 'حذف عضو', - you: '(شما)', - transferModal: { - resendTip: 'کدی دریافت نکردید؟', - resend: 'دوباره ارسال کنید', - continue: 'ادامه دهید', - codeLabel: 'کد تأیید', - sendVerifyCode: 'کد تأیید را ارسال کنید', - title: 'انتقال مالکیت فضای کاری', - verifyContent: 'ایمیل فعلی شما {{email}} است.', - transfer: 'انتقال مالکیت فضای کاری', - warning: 'شما در حال انتقال مالکیت "{{workspace}}" هستید. این بلافاصله اجرایی می‌شود و قابل بازگشت نیست.', - resendCount: 'دوباره ارسال کنید در {{count}} ثانیه', - warningTip: 'شما به یک عضو مدیر تبدیل خواهید شد و مالک جدید کنترل کامل خواهد داشت.', - transferLabel: 'مالکیت فضای کار را به منتقل کنید', - verifyEmail: 'ایمیل فعلی خود را تأیید کنید', - sendTip: 'اگر ادامه دهید، ما یک کد تأیید به {{email}} برای بازگشایی مجدد ارسال خواهیم کرد.', - codePlaceholder: 'کد ۶ رقمی را وارد کنید', - transferPlaceholder: 'یک عضو از فضای کاری را انتخاب کنید…', - verifyContent2: 'ما یک کد تأیید موقت به این ایمیل برای تأیید مجدد ارسال خواهیم کرد.', - }, - transferOwnership: 'انتقال مالکیت', - }, - integrations: { - connected: 'متصل شده', - google: 'گوگل', - googleAccount: 'ورود با حساب گوگل', - github: 'گیت‌هاب', - githubAccount: 'ورود با حساب گیت‌هاب', - connect: 'اتصال', - }, - language: { - displayLanguage: 'زبان نمایش', - timezone: 'منطقه زمانی', - }, - provider: { - apiKey: 'کلید API', - enterYourKey: 'کلید API خود را اینجا وارد کنید', - invalidKey: 'کلید API OpenAI نامعتبر است', - validatedError: 'اعتبارسنجی ناموفق بود: ', - validating: 'در حال اعتبارسنجی کلید...', - saveFailed: 'ذخیره کلید API ناموفق بود', - apiKeyExceedBill: 'این کلید API سهمیه موجود ندارد، لطفاً بخوانید', - addKey: 'افزودن کلید', - comingSoon: 'به زودی', - editKey: 'ویرایش', - invalidApiKey: 'کلید API نامعتبر', - azure: { - apiBase: 'پایه API', - apiBasePlaceholder: 'آدرس پایه API نقطه پایانی Azure OpenAI شما.', - apiKey: 'کلید API', - apiKeyPlaceholder: 'کلید API خود را اینجا وارد کنید', - helpTip: 'آشنایی با سرویس Azure OpenAI', - }, - openaiHosted: { - openaiHosted: 'OpenAI میزبانی شده', - onTrial: 'در حال آزمایش', - exhausted: 'سهمیه تمام شده', - desc: 'سرویس میزبانی OpenAI ارائه شده توسط Dify به شما اجازه می‌دهد از مدل‌هایی مانند GPT-3.5 استفاده کنید. قبل از اتمام سهمیه آزمایشی خود، باید سایر ارائه‌دهندگان مدل را تنظیم کنید.', - callTimes: 'تعداد فراخوانی', - usedUp: 'سهمیه آزمایشی تمام شده است. ارائه‌دهنده مدل خود را اضافه کنید.', - useYourModel: 'در حال حاضر از ارائه‌دهنده مدل خود استفاده می‌کنید.', - close: 'بستن', - }, - anthropicHosted: { - anthropicHosted: 'Anthropic Claude', - onTrial: 'در حال آزمایش', - exhausted: 'سهمیه تمام شده', - desc: 'مدل قدرتمند که در طیف گسترده‌ای از وظایف از گفتگوی پیشرفته و تولید محتوای خلاقانه تا دستورالعمل‌های دقیق عالی عمل می‌کند.', - callTimes: 'تعداد فراخوانی', - usedUp: 'سهمیه آزمایشی تمام شده است. ارائه‌دهنده مدل خود را اضافه کنید.', - useYourModel: 'در حال حاضر از ارائه‌دهنده مدل خود استفاده می‌کنید.', - close: 'بستن', - trialQuotaTip: 'سهمیه آزمایشی Anthropic شما در تاریخ 2025/03/11 منقضی می شود و پس از آن دیگر در دسترس نخواهد بود. لطفا به موقع از آن استفاده کنید.', - }, - anthropic: { - using: 'قابلیت تعبیه از این استفاده می‌کند', - enableTip: 'برای فعال‌سازی مدل Anthropic، ابتدا باید به OpenAI یا سرویس Azure OpenAI متصل شوید.', - notEnabled: 'فعال نشده', - keyFrom: 'کلید API خود را از Anthropic دریافت کنید', - }, - encrypted: { - front: 'کلید API شما با استفاده از فناوری', - 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', - 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 شما با استفاده از فناوری', - 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: 'وضعیت کلید API عادی است', - apiKeyRateLimit: 'محدودیت نرخ به دست آمد، پس از {{seconds}} ثانیه در دسترس خواهد بود', - addConfig: 'افزودن پیکربندی', - editConfig: 'ویرایش پیکربندی', - loadBalancingLeastKeyWarning: 'برای فعال کردن تعادل بار، حداقل 2 کلید باید فعال باشند.', - loadBalancingInfo: 'به طور پیش‌فرض، تعادل بار از استراتژی Round-robin استفاده می‌کند. اگر محدودیت نرخ فعال شود، یک دوره خنک شدن 1 دقیقه‌ای اعمال خواهد شد.', - upgradeForLoadBalancing: 'برای فعال کردن تعادل بار، طرح خود را ارتقا دهید.', - emptyProviderTitle: 'ارائه دهنده مدل راه اندازی نشده است', - toBeConfigured: 'پیکربندی شود', - configureTip: 'api-key را راه اندازی کنید یا مدل را برای استفاده اضافه کنید', - installProvider: 'نصب ارائه دهندگان مدل', - discoverMore: 'اطلاعات بیشتر در', - emptyProviderTip: 'لطفا ابتدا یک ارائه دهنده مدل نصب کنید.', - auth: { - apiKeyModal: { - title: 'پیکربندی مجوز کلید API', - addModel: 'مدل اضافه کنید', - desc: 'پس از پیکربندی اعتبارنامه‌ها، تمامی اعضای درون فضای کاری می‌توانند از این مدل هنگام نظم‌دهی به برنامه‌ها استفاده کنند.', - }, - authorizationError: 'خطای مجوز', - unAuthorized: 'بدون مجوز', - configModel: 'مدل پیکربندی', - apiKeys: 'کلیدهای API', - addCredential: 'مدرک اضافه کنید', - addNewModel: 'مدل جدید اضافه کن', - addApiKey: 'کلید API را اضافه کنید', - authRemoved: 'منبع حذف شد', - configLoadBalancing: 'پیکربندی بارگذاری متوازن', - specifyModelCredential: 'مدل اعتبارنامه را مشخص کنید', - providerManaged: 'مدیریت شده توسط ارائه‌دهنده', - addModelCredential: 'مدرک مدل را اضافه کنید', - specifyModelCredentialTip: 'از اعتبارنامه مدل پیکربندی شده استفاده کنید.', - providerManagedTip: 'تنظیمات فعلی توسط ارائه‌دهنده میزبانی می‌شود.', - modelCredentials: 'مدل اعتبارنامه', - manageCredentials: 'مدیریت اعتبارنامه ها', - addModel: 'افزودن مدل', - removeModel: 'حذف مدل', - modelCredential: 'اعتبار مدل', - selectModelCredential: 'یک اعتبار مدل را انتخاب کنید', - editModelCredential: 'اعتبار مدل را ویرایش کنید', - addNewModelCredential: 'افزودن اعتبار مدل جدید', - customModelCredentials: 'اعتبار مدل سفارشی', - customModelCredentialsDeleteTip: 'اعتبار در حال استفاده است و قابل حذف نیست', - }, - parametersInvalidRemoved: 'برخی پارامترها نامعتبر هستند و حذف شده‌اند', - installDataSourceProvider: 'نصب ارائه‌دهندگان منبع داده', - }, - dataSource: { - add: 'افزودن منبع داده', - connect: 'اتصال', - configure: 'پیکربندی', - notion: { - title: 'نوشن', - description: 'استفاده از نوشن به عنوان منبع داده برای دانش.', - connectedWorkspace: 'فضای کاری متصل', - addWorkspace: 'افزودن فضای کاری', - connected: 'متصل شده', - disconnected: 'قطع شده', - changeAuthorizedPages: 'تغییر صفحات مجاز', - pagesAuthorized: 'صفحات مجاز', - sync: 'همگام‌سازی', - remove: 'حذف', - selector: { - pageSelected: 'صفحات انتخاب شده', - searchPages: 'جستجوی صفحات...', - noSearchResult: 'نتیجه جستجویی یافت نشد', - addPages: 'افزودن صفحات', - preview: 'پیش‌نمایش', - }, - integratedAlert: 'نوشته به طور داخلی از طریق اعتبارنامه یکپارچه شده است، نیازی به دوباره مجاز کردن نیست.', - }, - website: { - title: 'وب‌سایت', - description: 'وارد کردن محتوا از وب‌سایت‌ها با استفاده از خزنده وب.', - with: 'با', - configuredCrawlers: 'خزنده‌های پیکربندی شده', - active: 'فعال', - inactive: 'غیرفعال', - }, - }, - plugin: { - serpapi: { - apiKey: 'کلید API', - apiKeyPlaceholder: 'کلید API خود را وارد کنید', - keyFrom: 'کلید SerpAPI خود را از صفحه حساب SerpAPI دریافت کنید', - }, - }, - apiBasedExtension: { - title: 'افزونه‌های مبتنی بر API مدیریت متمرکز API را فراهم می‌کنند و پیکربندی را برای استفاده آسان در برنامه‌های Dify ساده می‌کنند.', - link: 'نحوه توسعه افزونه API خود را بیاموزید.', - add: 'افزودن افزونه API', - selector: { - title: 'افزونه API', - placeholder: 'لطفاً افزونه API را انتخاب کنید', - manage: 'مدیریت افزونه API', - }, - modal: { - title: 'افزودن افزونه API', - editTitle: 'ویرایش افزونه API', - name: { - title: 'نام', - placeholder: 'لطفاً نام را وارد کنید', - }, - apiEndpoint: { - title: 'نقطه پایانی API', - placeholder: 'لطفاً نقطه پایانی API را وارد کنید', - }, - apiKey: { - title: 'کلید API', - placeholder: 'لطفاً کلید API را وارد کنید', - lengthError: 'طول کلید API نمی‌تواند کمتر از ۵ کاراکتر باشد', - }, - }, - 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: 'برنامه‌های مرتبط', - noRelatedApp: 'هیچ برنامه پیوندی وجود ندارد', - pipeline: 'خط لوله', - }, - voiceInput: { - speaking: 'اکنون صحبت کنید...', - converting: 'در حال تبدیل به متن...', - notAllow: 'میکروفون مجاز نیست', - }, - modelName: { - 'gpt-3.5-turbo': 'جی‌پی‌تی-۳.۵-توربو', - 'gpt-3.5-turbo-16k': 'جی‌پی‌تی-۳.۵-توربو-۱۶کا', - 'gpt-4': 'جی‌پی‌تی-۴', - 'gpt-4-32k': 'جی‌پی‌تی-۴-۳۲کا', - 'text-davinci-003': 'متن-داوینچی-۰۰۳', - 'text-embedding-ada-002': 'متن-تعبیه-آدا-۰۰۲', - 'whisper-1': 'ویسپر-۱', - 'claude-instant-1': 'کلاود-فوری', - 'claude-2': 'کلاود-۲', - }, - chat: { - renameConversation: 'تغییر نام مکالمه', - conversationName: 'نام مکالمه', - conversationNamePlaceholder: 'لطفاً نام مکالمه را وارد کنید', - conversationNameCanNotEmpty: 'نام مکالمه الزامی است', - citation: { - title: 'استنادها', - linkToDataset: 'پیوند به دانش', - characters: 'کاراکترها:', - hitCount: 'تعداد بازیابی:', - vectorHash: 'هش بردار:', - hitScore: 'امتیاز بازیابی:', - }, - inputPlaceholder: 'با ربات صحبت کنید', - thought: 'فکر', - thinking: 'تفکر...', - resend: 'دوباره ارسال کنید', - }, - 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}} مگابایت بیشتر باشد', - pasteImageLink: 'پیوند تصویر را بچسبانید', - pasteImageLinkInputPlaceholder: 'پیوند تصویر را اینجا بچسبانید', - pasteImageLinkInvalid: 'پیوند تصویر نامعتبر', - imageUpload: 'بارگذاری تصویر', - }, - tag: { - placeholder: 'همه برچسب‌ها', - addNew: 'افزودن برچسب جدید', - noTag: 'بدون برچسب', - noTagYet: 'هنوز برچسبی وجود ندارد', - addTag: 'افزودن برچسب‌ها', - editTag: 'ویرایش برچسب‌ها', - manageTags: 'مدیریت برچسب‌ها', - selectorPlaceholder: 'برای جستجو یا ایجاد تایپ کنید', - create: 'ایجاد', - delete: 'حذف برچسب', - deleteTip: 'برچسب در حال استفاده است، آیا آن را حذف می‌کنید؟', - created: 'برچسب با موفقیت ایجاد شد', - failed: 'ایجاد برچسب ناموفق بود', - }, - fileUploader: { - uploadFromComputer: 'آپلود محلی', - pasteFileLinkInputPlaceholder: 'URL را وارد کنید...', - pasteFileLinkInvalid: 'پیوند فایل نامعتبر', - fileExtensionNotSupport: 'پسوند فایل پشتیبانی نمی شود', - uploadFromComputerReadError: 'خواندن فایل انجام نشد، لطفا دوباره امتحان کنید.', - uploadFromComputerUploadError: 'آپلود فایل انجام نشد، لطفا دوباره آپلود کنید.', - pasteFileLink: 'پیوند فایل را جایگذاری کنید', - uploadFromComputerLimit: 'آپلود فایل نمی تواند از {{size}} تجاوز کند', - fileExtensionBlocked: 'این نوع فایل به دلایل امنیتی مسدود شده است', - uploadDisabled: 'بارگذاری فایل غیرفعال است', - }, - license: { - expiring_plural: 'انقضا در {{count}} روز', - expiring: 'انقضا در یک روز', - unlimited: 'نامحدود', - }, - pagination: { - perPage: 'موارد در هر صفحه', - }, - theme: { - auto: 'سیستم', - theme: 'تم', - dark: 'تاریک', - light: 'نور', - }, - compliance: { - soc2Type1: 'گزارش نوع I SOC 2', - sandboxUpgradeTooltip: 'تنها با برنامه حرفه‌ای یا تیمی در دسترس است.', - gdpr: 'GDPR DPA', - soc2Type2: 'گزارش نوع II SOC 2', - iso27001: 'گواهینامه ISO 27001:2022', - professionalUpgradeTooltip: 'تنها با برنامه تیم یا بالاتر در دسترس است.', - }, - imageInput: { - dropImageHere: 'عکس خود را اینجا رها کنید، یا', - supportedFormats: 'از فرمت‌های PNG، JPG، JPEG، WEBP و GIF پشتیبانی می‌کند', - browse: 'مرورگر', - }, - you: 'تو', - avatar: { - deleteTitle: 'حذف آواتار', - deleteDescription: 'آیا مطمئن هستید که می‌خواهید تصویر پروفایل خود را حذف کنید؟ حساب شما از آواتار اولیه پیش‌فرض استفاده خواهد کرد.', - }, - feedback: { - title: 'بازخورد ارائه دهید', - subtitle: 'لطفاً به ما بگویید که چه مشکلی در این پاسخ پیش آمده است.', - content: 'محتوای بازخورد', - placeholder: 'لطفاً توضیح دهید که چه مشکلی پیش آمد یا چگونه می‌توانیم بهبود پیدا کنیم...', - }, - label: { - optional: '(اختیاری)', - }, - noData: 'بدون داده', - dynamicSelect: { - error: 'بارگیری گزینه‌ها ناموفق بود', - noData: 'هیچ گزینه‌ای در دسترس نیست', - loading: 'در حال بارگذاری گزینه‌ها...', - selected: '{{count}} انتخاب شد', - }, -} - -export default translation diff --git a/web/i18n/fa-IR/custom.json b/web/i18n/fa-IR/custom.json new file mode 100644 index 0000000000..cb0aa298d6 --- /dev/null +++ b/web/i18n/fa-IR/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "سفارشی سازی", + "upgradeTip": { + "prefix": "طرح خود را ارتقا دهید به", + "suffix": "تا برند خود را سفارشی کنید.", + "title": "طرح خود را ارتقا دهید", + "des": "طرح خود را ارتقا دهید تا برند خود را سفارشی کنید" + }, + "webapp": { + "title": "سفارشی سازی برند وب اپ", + "removeBrand": "حذف \"Powered by Dify\"", + "changeLogo": "تغییر تصویر برند \"Powered by\"", + "changeLogoTip": "فرمت SVG یا PNG با حداقل اندازه 40x40px" + }, + "app": { + "title": "سفارشی سازی برند هدر اپلیکیشن", + "changeLogoTip": "فرمت SVG یا PNG با حداقل اندازه 80x80px" + }, + "upload": "بارگذاری", + "uploading": "در حال بارگذاری", + "uploadedFail": "بارگذاری تصویر ناموفق بود، لطفاً دوباره بارگذاری کنید.", + "change": "تغییر", + "apply": "اعمال", + "restore": "بازگرداندن به پیشفرضها", + "customize": { + "contactUs": " با ما تماس بگیرید ", + "prefix": "برای سفارشیسازی لوگوی برند در اپلیکیشن، لطفاً", + "suffix": "برای ارتقا به نسخه Enterprise." + } +} diff --git a/web/i18n/fa-IR/custom.ts b/web/i18n/fa-IR/custom.ts deleted file mode 100644 index d06f60e983..0000000000 --- a/web/i18n/fa-IR/custom.ts +++ /dev/null @@ -1,32 +0,0 @@ -const translation = { - custom: 'سفارشی سازی', - upgradeTip: { - prefix: 'طرح خود را ارتقا دهید به', - suffix: 'تا برند خود را سفارشی کنید.', - title: 'طرح خود را ارتقا دهید', - des: 'طرح خود را ارتقا دهید تا برند خود را سفارشی کنید', - }, - webapp: { - title: 'سفارشی سازی برند وب اپ', - removeBrand: 'حذف "Powered by Dify"', - changeLogo: 'تغییر تصویر برند "Powered by"', - changeLogoTip: 'فرمت SVG یا PNG با حداقل اندازه 40x40px', - }, - app: { - title: 'سفارشی سازی برند هدر اپلیکیشن', - changeLogoTip: 'فرمت SVG یا PNG با حداقل اندازه 80x80px', - }, - upload: 'بارگذاری', - uploading: 'در حال بارگذاری', - uploadedFail: 'بارگذاری تصویر ناموفق بود، لطفاً دوباره بارگذاری کنید.', - change: 'تغییر', - apply: 'اعمال', - restore: 'بازگرداندن به پیشفرضها', - customize: { - contactUs: ' با ما تماس بگیرید ', - prefix: 'برای سفارشیسازی لوگوی برند در اپلیکیشن، لطفاً', - suffix: 'برای ارتقا به نسخه Enterprise.', - }, -} - -export default translation diff --git a/web/i18n/fa-IR/dataset-creation.json b/web/i18n/fa-IR/dataset-creation.json new file mode 100644 index 0000000000..65f002286c --- /dev/null +++ b/web/i18n/fa-IR/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "دانش" + }, + "one": "انتخاب منبع داده", + "two": "پیشپردازش و پاکسازی متن", + "three": "اجرا و پایان" + }, + "error": { + "unavailable": "این دانش در دسترس نیست" + }, + "firecrawl": { + "configFirecrawl": "پیکربندی fireFirecrawl", + "apiKeyPlaceholder": "کلید API از firecrawl.dev", + "getApiKeyLinkText": "کلید API خود را از firecrawl.dev دریافت کنید" + }, + "stepOne": { + "filePreview": "پیشنمایش فایل", + "pagePreview": "پیشنمایش صفحه", + "dataSourceType": { + "file": "وارد کردن از فایل", + "notion": "همگامسازی از Notion", + "web": "همگامسازی از وبسایت" + }, + "uploader": { + "title": "بارگذاری فایل", + "button": "فایل ها یا پوشه ها را بکشید و رها کنید یا", + "buttonSingleFile": "فایل را بکشید و رها کنید یا", + "browse": "مرور", + "tip": "پشتیبانی از {{supportTypes}}. حداکثر {{size}}MB هر کدام.", + "validation": { + "typeError": "نوع فایل پشتیبانی نمیشود", + "size": "فایل خیلی بزرگ است. حداکثر {{size}}MB", + "count": "چندین فایل پشتیبانی نمیشود", + "filesNumber": "شما به حد مجاز بارگذاری دستهای {{filesNumber}} رسیدهاید." + }, + "cancel": "لغو", + "change": "تغییر", + "failed": "بارگذاری ناموفق بود" + }, + "notionSyncTitle": "Notion متصل نیست", + "notionSyncTip": "برای همگامسازی با Notion، ابتدا باید اتصال به Notion برقرار شود.", + "connect": "رفتن به اتصال", + "button": "بعدی", + "emptyDatasetCreation": "میخواهم یک دانش خالی ایجاد کنم", + "modal": { + "title": "ایجاد یک دانش خالی", + "tip": "یک دانش خالی هیچ سندی نخواهد داشت و شما میتوانید هر زمان اسناد را بارگذاری کنید.", + "input": "نام دانش", + "placeholder": "لطفاً وارد کنید", + "nameNotEmpty": "نام نمیتواند خالی باشد", + "nameLengthInvalid": "نام باید بین 1 تا 40 کاراکتر باشد", + "cancelButton": "لغو", + "confirmButton": "ایجاد", + "failed": "ایجاد ناموفق بود" + }, + "website": { + "fireCrawlNotConfigured": "Firecrawl پیکربندی نشده است", + "fireCrawlNotConfiguredDescription": "برای استفاده از Firecrawl با کلید API پیکربندی کنید.", + "configure": "پیکربندی", + "run": "اجرا", + "firecrawlTitle": "استخراج محتوای وب با fireFirecrawl", + "firecrawlDoc": "مستندات Firecrawl", + "options": "گزینهها", + "crawlSubPage": "خزش صفحات فرعی", + "limit": "محدودیت", + "maxDepth": "حداکثر عمق", + "excludePaths": "مسیرهای مستثنی", + "includeOnlyPaths": "فقط مسیرهای شامل", + "extractOnlyMainContent": "فقط محتوای اصلی را استخراج کنید (بدون هدرها، ناوبریها، پاورقیها و غیره)", + "exceptionErrorTitle": "یک استثنا در حین اجرای کار Firecrawl رخ داد:", + "unknownError": "خطای ناشناخته", + "totalPageScraped": "کل صفحات خراشیده شده:", + "selectAll": "انتخاب همه", + "resetAll": "بازنشانی همه", + "scrapTimeInfo": "در مجموع {{total}} صفحه در {{time}} ثانیه خراشیده شد", + "preview": "پیشنمایش", + "maxDepthTooltip": "حداکثر عمق برای خزش نسبت به URL وارد شده. عمق 0 فقط صفحه URL وارد شده را خراش میدهد، عمق 1 URL و همه چیز بعد از URL وارد شده + یک / را خراش میدهد، و غیره.", + "jinaReaderDocLink": "https://jina.ai/reader", + "chooseProvider": "یک ارائه دهنده را انتخاب کنید", + "jinaReaderTitle": "کل سایت را به Markdown تبدیل کنید", + "jinaReaderNotConfigured": "Jina Reader پیکربندی نشده است", + "jinaReaderDoc": "درباره Jina Reader بیشتر بدانید", + "useSitemap": "از نقشه سایت استفاده کنید", + "jinaReaderNotConfiguredDescription": "با وارد کردن کلید API رایگان خود برای دسترسی، Jina Reader را راه اندازی کنید.", + "useSitemapTooltip": "نقشه سایت را دنبال کنید تا سایت را بخزید. در غیر این صورت، Jina Reader بر اساس ارتباط صفحه به صورت تکراری می خزد و صفحات کمتر اما با کیفیت بالاتر را به دست می آورد.", + "watercrawlDoc": "مستندات واتر کراول", + "configureFirecrawl": "تنظیم Firecrawl", + "waterCrawlNotConfiguredDescription": "برای استفاده از Watercrawl، آن را با کلید API پیکربندی کنید.", + "waterCrawlNotConfigured": "Watercrawl پیکربندی نشده است", + "configureJinaReader": "پیکربندی خواننده جینا", + "watercrawlTitle": "محتوای وب را با واترکرال استخراج کنید", + "configureWatercrawl": "تنظیم واترکراول", + "running": "اجرا" + }, + "cancel": "لغو" + }, + "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": "بخشبندی با استفاده از", + "estimateCost": "برآورد", + "estimateSegment": "بخشهای برآورد شده", + "segmentCount": "بخشها", + "calculating": "در حال محاسبه...", + "fileSource": "پیشپردازش اسناد", + "notionSource": "پیشپردازش صفحات", + "websiteSource": "پیشپردازش وبسایت", + "other": "و سایر", + "fileUnit": " فایلها", + "notionUnit": " صفحات", + "webpageUnit": " صفحات", + "previousStep": "مرحله قبلی", + "nextStep": "ذخیره و پردازش", + "save": "ذخیره و پردازش", + "cancel": "لغو", + "sideTipTitle": "چرا بخشبندی و پیشپردازش؟", + "sideTipP1": "هنگام پردازش دادههای متنی، بخشبندی و پاکسازی دو مرحله مهم پیشپردازش هستند.", + "sideTipP2": "بخشبندی متن طولانی را به پاراگرافها تقسیم میکند تا مدلها بهتر بتوانند آن را درک کنند. این کیفیت و ارتباط نتایج مدل را بهبود میبخشد.", + "sideTipP3": "پاکسازی کاراکترها و فرمتهای غیرضروری را حذف میکند و دانش را پاکتر و آسانتر برای تجزیه میکند.", + "sideTipP4": "بخشبندی و پاکسازی مناسب عملکرد مدل را بهبود میبخشد و نتایج دقیقتر و ارزشمندتری ارائه میدهد.", + "previewTitle": "پیشنمایش", + "previewTitleButton": "پیشنمایش", + "previewButton": "تغییر به قالب پرسش و پاسخ", + "previewSwitchTipStart": "پیشنمایش بخش فعلی در قالب متن است، تغییر به پیشنمایش قالب پرسش و پاسخ", + "previewSwitchTipEnd": " توکنهای اضافی مصرف خواهد کرد", + "characters": "کاراکترها", + "indexSettingTip": "برای تغییر روش شاخص، لطفاً به", + "retrievalSettingTip": "برای تغییر روش شاخص، لطفاً به", + "datasetSettingLink": "تنظیمات دانش بروید.", + "separatorTip": "جداکننده نویسه ای است که برای جداسازی متن استفاده می شود. \\n\\n و \\n معمولا برای جداسازی پاراگراف ها و خطوط استفاده می شوند. همراه با کاما (\\n\\n,\\n)، پاراگراف ها زمانی که از حداکثر طول تکه فراتر می روند، با خطوط تقسیم بندی می شوند. همچنین می توانید از جداکننده های خاصی که توسط خودتان تعریف شده اند استفاده کنید (مثلا ***).", + "maxLengthCheck": "حداکثر طول تکه باید کمتر از {{limit}} باشد", + "notAvailableForQA": "برای شاخص پرسش و پاسخ در دسترس نیست", + "parentChild": "پدر و مادر و فرزند", + "qaSwitchHighQualityTipContent": "در حال حاضر، فقط روش شاخص با کیفیت بالا از تکه تکه کردن فرمت پرسش و پاسخ پشتیبانی می کند. آیا می خواهید به حالت با کیفیت بالا بروید؟", + "previewChunk": "پیش نمایش تکه", + "previewChunkCount": "{{تعداد}} تکه های تخمینی", + "previewChunkTip": "روی دکمه \"پیش نمایش قطعه\" در سمت چپ کلیک کنید تا پیش نمایش بارگیری شود", + "general": "عمومی", + "paragraphTip": "این حالت متن را بر اساس جداکننده ها و حداکثر طول تکه به پاراگراف ها تقسیم می کند و از متن تقسیم شده به عنوان تکه والد برای بازیابی استفاده می کند.", + "parentChunkForContext": "تکه والد برای زمینه", + "fullDoc": "مستند کامل", + "switch": "سوئیچ", + "parentChildChunkDelimiterTip": "جداکننده نویسه ای است که برای جداسازی متن استفاده می شود. \\n برای تقسیم تکه های والد به تکه های کوچک کودک توصیه می شود. همچنین می توانید از جداکننده های ویژه ای که توسط خودتان تعریف شده است استفاده کنید.", + "generalTip": "حالت تکه تکه کردن متن عمومی، تکه های بازیابی شده و فراخوانی شده یکسان هستند.", + "paragraph": "پاراگراف", + "highQualityTip": "پس از اتمام جاسازی در حالت کیفیت بالا، بازگشت به حالت اقتصادی در دسترس نیست.", + "parentChildTip": "هنگام استفاده از حالت والد-فرزند، تکه فرزند برای بازیابی و تکه والد برای یادآوری به عنوان زمینه استفاده می شود.", + "notAvailableForParentChild": "برای نمایه والد-فرزند در دسترس نیست", + "parentChildDelimiterTip": "جداکننده نویسه ای است که برای جداسازی متن استفاده می شود. \\n\\n برای تقسیم سند اصلی به تکه های والد بزرگ توصیه می شود. همچنین می توانید از جداکننده های ویژه ای که توسط خودتان تعریف شده است استفاده کنید.", + "childChunkForRetrieval": "تکه کودک برای بازیابی", + "fullDocTip": "کل سند به عنوان تکه والد استفاده می شود و مستقیما بازیابی می شود. لطفا توجه داشته باشید که به دلایل عملکردی، متن بیش از 10000 توکن به طور خودکار کوتاه می شود.", + "qaSwitchHighQualityTipTitle": "فرمت پرسش و پاسخ به روش نمایه سازی با کیفیت بالا نیاز دارد", + "useQALanguage": "تکه با استفاده از فرمت پرسش و پاسخ در", + "qaTip": "هنگام استفاده از داده های پرسش و پاسخ ساختاریافته، می توانید اسنادی ایجاد کنید که سوالات را با پاسخ جفت می کند. این اسناد بر اساس بخش سؤال نمایه می شوند و به سیستم اجازه می دهند پاسخ های مربوطه را بر اساس شباهت پرس و جو بازیابی کند." + }, + "stepThree": { + "creationTitle": " دانش ایجاد شد", + "creationContent": "ما به طور خودکار نام دانش را تعیین کردیم، شما میتوانید هر زمان آن را تغییر دهید", + "label": "نام دانش", + "additionTitle": " سند بارگذاری شد", + "additionP1": "سند به دانش بارگذاری شده است", + "additionP2": "، میتوانید آن را در لیست اسناد دانش پیدا کنید.", + "stop": "توقف پردازش", + "resume": "ادامه پردازش", + "navTo": "رفتن به سند", + "sideTipTitle": "بعدی چیست", + "sideTipContent": "پس از اتمام فهرستبندی سند، دانش میتواند به عنوان زمینه در برنامه یکپارچه شود، میتوانید تنظیمات زمینه را در صفحه ارکستراسیون درخواست پیدا کنید. همچنین میتوانید آن را به عنوان یک افزونه فهرستبندی مستقل ChatGPT برای انتشار ایجاد کنید.", + "modelTitle": "آیا مطمئن هستید که میخواهید جاسازی را متوقف کنید؟", + "modelContent": "اگر نیاز به ادامه پردازش بعداً دارید، از جایی که متوقف شدهاید ادامه خواهید داد.", + "modelButtonConfirm": "تأیید", + "modelButtonCancel": "لغو" + }, + "jinaReader": { + "configJinaReader": "پیکربندی Jina Reader", + "apiKeyPlaceholder": "کلید API از jina.ai", + "getApiKeyLinkText": "کلید API رایگان خود را در jina.ai دریافت کنید" + }, + "otherDataSource": { + "learnMore": "بیشتر بدانید", + "description": "در حال حاضر، پایگاه دانش Dify فقط منابع داده محدودی دارد. کمک به یک منبع داده به پایگاه دانش Dify راهی فوق العاده برای کمک به افزایش انعطاف پذیری و قدرت پلتفرم برای همه کاربران است. راهنمای مشارکت ما شروع کار را آسان می کند. لطفا برای کسب اطلاعات بیشتر روی لینک زیر کلیک کنید.", + "title": "به منابع داده دیگر متصل شوید؟" + }, + "watercrawl": { + "getApiKeyLinkText": "کلید API خود را از watercrawl.dev دریافت کنید", + "configWatercrawl": "تنظیم واترکراول", + "apiKeyPlaceholder": "کلید API از watercrawl.dev" + } +} diff --git a/web/i18n/fa-IR/dataset-creation.ts b/web/i18n/fa-IR/dataset-creation.ts deleted file mode 100644 index 9058403ee0..0000000000 --- a/web/i18n/fa-IR/dataset-creation.ts +++ /dev/null @@ -1,217 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: 'دانش', - }, - one: 'انتخاب منبع داده', - two: 'پیشپردازش و پاکسازی متن', - three: 'اجرا و پایان', - }, - error: { - unavailable: 'این دانش در دسترس نیست', - }, - firecrawl: { - configFirecrawl: 'پیکربندی fireFirecrawl', - apiKeyPlaceholder: 'کلید API از firecrawl.dev', - getApiKeyLinkText: 'کلید API خود را از firecrawl.dev دریافت کنید', - }, - stepOne: { - filePreview: 'پیشنمایش فایل', - pagePreview: 'پیشنمایش صفحه', - dataSourceType: { - file: 'وارد کردن از فایل', - notion: 'همگامسازی از Notion', - web: 'همگامسازی از وبسایت', - }, - uploader: { - title: 'بارگذاری فایل', - button: 'فایل ها یا پوشه ها را بکشید و رها کنید یا', - buttonSingleFile: 'فایل را بکشید و رها کنید یا', - browse: 'مرور', - tip: 'پشتیبانی از {{supportTypes}}. حداکثر {{size}}MB هر کدام.', - validation: { - typeError: 'نوع فایل پشتیبانی نمیشود', - size: 'فایل خیلی بزرگ است. حداکثر {{size}}MB', - count: 'چندین فایل پشتیبانی نمیشود', - filesNumber: 'شما به حد مجاز بارگذاری دستهای {{filesNumber}} رسیدهاید.', - }, - cancel: 'لغو', - change: 'تغییر', - failed: 'بارگذاری ناموفق بود', - }, - notionSyncTitle: 'Notion متصل نیست', - notionSyncTip: 'برای همگامسازی با Notion، ابتدا باید اتصال به Notion برقرار شود.', - connect: 'رفتن به اتصال', - button: 'بعدی', - emptyDatasetCreation: 'میخواهم یک دانش خالی ایجاد کنم', - modal: { - title: 'ایجاد یک دانش خالی', - tip: 'یک دانش خالی هیچ سندی نخواهد داشت و شما میتوانید هر زمان اسناد را بارگذاری کنید.', - input: 'نام دانش', - placeholder: 'لطفاً وارد کنید', - nameNotEmpty: 'نام نمیتواند خالی باشد', - nameLengthInvalid: 'نام باید بین 1 تا 40 کاراکتر باشد', - cancelButton: 'لغو', - confirmButton: 'ایجاد', - failed: 'ایجاد ناموفق بود', - }, - website: { - fireCrawlNotConfigured: 'Firecrawl پیکربندی نشده است', - fireCrawlNotConfiguredDescription: 'برای استفاده از Firecrawl با کلید API پیکربندی کنید.', - configure: 'پیکربندی', - run: 'اجرا', - firecrawlTitle: 'استخراج محتوای وب با fireFirecrawl', - firecrawlDoc: 'مستندات Firecrawl', - options: 'گزینهها', - crawlSubPage: 'خزش صفحات فرعی', - limit: 'محدودیت', - maxDepth: 'حداکثر عمق', - excludePaths: 'مسیرهای مستثنی', - includeOnlyPaths: 'فقط مسیرهای شامل', - extractOnlyMainContent: 'فقط محتوای اصلی را استخراج کنید (بدون هدرها، ناوبریها، پاورقیها و غیره)', - exceptionErrorTitle: 'یک استثنا در حین اجرای کار Firecrawl رخ داد:', - unknownError: 'خطای ناشناخته', - totalPageScraped: 'کل صفحات خراشیده شده:', - selectAll: 'انتخاب همه', - resetAll: 'بازنشانی همه', - scrapTimeInfo: 'در مجموع {{total}} صفحه در {{time}} ثانیه خراشیده شد', - preview: 'پیشنمایش', - maxDepthTooltip: 'حداکثر عمق برای خزش نسبت به URL وارد شده. عمق 0 فقط صفحه URL وارد شده را خراش میدهد، عمق 1 URL و همه چیز بعد از URL وارد شده + یک / را خراش میدهد، و غیره.', - jinaReaderDocLink: 'https://jina.ai/reader', - chooseProvider: 'یک ارائه دهنده را انتخاب کنید', - jinaReaderTitle: 'کل سایت را به Markdown تبدیل کنید', - jinaReaderNotConfigured: 'Jina Reader پیکربندی نشده است', - jinaReaderDoc: 'درباره Jina Reader بیشتر بدانید', - useSitemap: 'از نقشه سایت استفاده کنید', - jinaReaderNotConfiguredDescription: 'با وارد کردن کلید API رایگان خود برای دسترسی، Jina Reader را راه اندازی کنید.', - useSitemapTooltip: 'نقشه سایت را دنبال کنید تا سایت را بخزید. در غیر این صورت، Jina Reader بر اساس ارتباط صفحه به صورت تکراری می خزد و صفحات کمتر اما با کیفیت بالاتر را به دست می آورد.', - watercrawlDoc: 'مستندات واتر کراول', - configureFirecrawl: 'تنظیم Firecrawl', - waterCrawlNotConfiguredDescription: 'برای استفاده از Watercrawl، آن را با کلید API پیکربندی کنید.', - waterCrawlNotConfigured: 'Watercrawl پیکربندی نشده است', - configureJinaReader: 'پیکربندی خواننده جینا', - watercrawlTitle: 'محتوای وب را با واترکرال استخراج کنید', - configureWatercrawl: 'تنظیم واترکراول', - running: 'اجرا', - }, - cancel: 'لغو', - }, - 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: 'بخشبندی با استفاده از', - estimateCost: 'برآورد', - estimateSegment: 'بخشهای برآورد شده', - segmentCount: 'بخشها', - calculating: 'در حال محاسبه...', - fileSource: 'پیشپردازش اسناد', - notionSource: 'پیشپردازش صفحات', - websiteSource: 'پیشپردازش وبسایت', - other: 'و سایر', - fileUnit: ' فایلها', - notionUnit: ' صفحات', - webpageUnit: ' صفحات', - previousStep: 'مرحله قبلی', - nextStep: 'ذخیره و پردازش', - save: 'ذخیره و پردازش', - cancel: 'لغو', - sideTipTitle: 'چرا بخشبندی و پیشپردازش؟', - sideTipP1: 'هنگام پردازش دادههای متنی، بخشبندی و پاکسازی دو مرحله مهم پیشپردازش هستند.', - sideTipP2: 'بخشبندی متن طولانی را به پاراگرافها تقسیم میکند تا مدلها بهتر بتوانند آن را درک کنند. این کیفیت و ارتباط نتایج مدل را بهبود میبخشد.', - sideTipP3: 'پاکسازی کاراکترها و فرمتهای غیرضروری را حذف میکند و دانش را پاکتر و آسانتر برای تجزیه میکند.', - sideTipP4: 'بخشبندی و پاکسازی مناسب عملکرد مدل را بهبود میبخشد و نتایج دقیقتر و ارزشمندتری ارائه میدهد.', - previewTitle: 'پیشنمایش', - previewTitleButton: 'پیشنمایش', - previewButton: 'تغییر به قالب پرسش و پاسخ', - previewSwitchTipStart: 'پیشنمایش بخش فعلی در قالب متن است، تغییر به پیشنمایش قالب پرسش و پاسخ', - previewSwitchTipEnd: ' توکنهای اضافی مصرف خواهد کرد', - characters: 'کاراکترها', - indexSettingTip: 'برای تغییر روش شاخص، لطفاً به', - retrievalSettingTip: 'برای تغییر روش شاخص، لطفاً به', - datasetSettingLink: 'تنظیمات دانش بروید.', - separatorTip: 'جداکننده نویسه ای است که برای جداسازی متن استفاده می شود. \\n\\n و \\n معمولا برای جداسازی پاراگراف ها و خطوط استفاده می شوند. همراه با کاما (\\n\\n,\\n)، پاراگراف ها زمانی که از حداکثر طول تکه فراتر می روند، با خطوط تقسیم بندی می شوند. همچنین می توانید از جداکننده های خاصی که توسط خودتان تعریف شده اند استفاده کنید (مثلا ***).', - maxLengthCheck: 'حداکثر طول تکه باید کمتر از {{limit}} باشد', - notAvailableForQA: 'برای شاخص پرسش و پاسخ در دسترس نیست', - parentChild: 'پدر و مادر و فرزند', - qaSwitchHighQualityTipContent: 'در حال حاضر، فقط روش شاخص با کیفیت بالا از تکه تکه کردن فرمت پرسش و پاسخ پشتیبانی می کند. آیا می خواهید به حالت با کیفیت بالا بروید؟', - previewChunk: 'پیش نمایش تکه', - previewChunkCount: '{{تعداد}} تکه های تخمینی', - previewChunkTip: 'روی دکمه "پیش نمایش قطعه" در سمت چپ کلیک کنید تا پیش نمایش بارگیری شود', - general: 'عمومی', - paragraphTip: 'این حالت متن را بر اساس جداکننده ها و حداکثر طول تکه به پاراگراف ها تقسیم می کند و از متن تقسیم شده به عنوان تکه والد برای بازیابی استفاده می کند.', - parentChunkForContext: 'تکه والد برای زمینه', - fullDoc: 'مستند کامل', - switch: 'سوئیچ', - parentChildChunkDelimiterTip: 'جداکننده نویسه ای است که برای جداسازی متن استفاده می شود. \\n برای تقسیم تکه های والد به تکه های کوچک کودک توصیه می شود. همچنین می توانید از جداکننده های ویژه ای که توسط خودتان تعریف شده است استفاده کنید.', - generalTip: 'حالت تکه تکه کردن متن عمومی، تکه های بازیابی شده و فراخوانی شده یکسان هستند.', - paragraph: 'پاراگراف', - highQualityTip: 'پس از اتمام جاسازی در حالت کیفیت بالا، بازگشت به حالت اقتصادی در دسترس نیست.', - parentChildTip: 'هنگام استفاده از حالت والد-فرزند، تکه فرزند برای بازیابی و تکه والد برای یادآوری به عنوان زمینه استفاده می شود.', - notAvailableForParentChild: 'برای نمایه والد-فرزند در دسترس نیست', - parentChildDelimiterTip: 'جداکننده نویسه ای است که برای جداسازی متن استفاده می شود. \\n\\n برای تقسیم سند اصلی به تکه های والد بزرگ توصیه می شود. همچنین می توانید از جداکننده های ویژه ای که توسط خودتان تعریف شده است استفاده کنید.', - childChunkForRetrieval: 'تکه کودک برای بازیابی', - fullDocTip: 'کل سند به عنوان تکه والد استفاده می شود و مستقیما بازیابی می شود. لطفا توجه داشته باشید که به دلایل عملکردی، متن بیش از 10000 توکن به طور خودکار کوتاه می شود.', - qaSwitchHighQualityTipTitle: 'فرمت پرسش و پاسخ به روش نمایه سازی با کیفیت بالا نیاز دارد', - useQALanguage: 'تکه با استفاده از فرمت پرسش و پاسخ در', - qaTip: 'هنگام استفاده از داده های پرسش و پاسخ ساختاریافته، می توانید اسنادی ایجاد کنید که سوالات را با پاسخ جفت می کند. این اسناد بر اساس بخش سؤال نمایه می شوند و به سیستم اجازه می دهند پاسخ های مربوطه را بر اساس شباهت پرس و جو بازیابی کند.', - }, - stepThree: { - creationTitle: ' دانش ایجاد شد', - creationContent: 'ما به طور خودکار نام دانش را تعیین کردیم، شما میتوانید هر زمان آن را تغییر دهید', - label: 'نام دانش', - additionTitle: ' سند بارگذاری شد', - additionP1: 'سند به دانش بارگذاری شده است', - additionP2: '، میتوانید آن را در لیست اسناد دانش پیدا کنید.', - stop: 'توقف پردازش', - resume: 'ادامه پردازش', - navTo: 'رفتن به سند', - sideTipTitle: 'بعدی چیست', - sideTipContent: 'پس از اتمام فهرستبندی سند، دانش میتواند به عنوان زمینه در برنامه یکپارچه شود، میتوانید تنظیمات زمینه را در صفحه ارکستراسیون درخواست پیدا کنید. همچنین میتوانید آن را به عنوان یک افزونه فهرستبندی مستقل ChatGPT برای انتشار ایجاد کنید.', - modelTitle: 'آیا مطمئن هستید که میخواهید جاسازی را متوقف کنید؟', - modelContent: 'اگر نیاز به ادامه پردازش بعداً دارید، از جایی که متوقف شدهاید ادامه خواهید داد.', - modelButtonConfirm: 'تأیید', - modelButtonCancel: 'لغو', - }, - jinaReader: { - configJinaReader: 'پیکربندی Jina Reader', - apiKeyPlaceholder: 'کلید API از jina.ai', - getApiKeyLinkText: 'کلید API رایگان خود را در jina.ai دریافت کنید', - }, - otherDataSource: { - learnMore: 'بیشتر بدانید', - description: 'در حال حاضر، پایگاه دانش Dify فقط منابع داده محدودی دارد. کمک به یک منبع داده به پایگاه دانش Dify راهی فوق العاده برای کمک به افزایش انعطاف پذیری و قدرت پلتفرم برای همه کاربران است. راهنمای مشارکت ما شروع کار را آسان می کند. لطفا برای کسب اطلاعات بیشتر روی لینک زیر کلیک کنید.', - title: 'به منابع داده دیگر متصل شوید؟', - }, - watercrawl: { - getApiKeyLinkText: 'کلید API خود را از watercrawl.dev دریافت کنید', - configWatercrawl: 'تنظیم واترکراول', - apiKeyPlaceholder: 'کلید API از watercrawl.dev', - }, -} - -export default translation diff --git a/web/i18n/fa-IR/dataset-documents.json b/web/i18n/fa-IR/dataset-documents.json new file mode 100644 index 0000000000..bd8cc10d24 --- /dev/null +++ b/web/i18n/fa-IR/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "اسناد", + "desc": "تمامی فایل‌های دانش در اینجا نمایش داده می‌شوند و کل دانش می‌تواند به ارجاعات Dify متصل شود یا از طریق افزونه چت ایندکس شود.", + "addFile": "اضافه کردن فایل", + "addPages": "اضافه کردن صفحات", + "addUrl": "اضافه کردن URL", + "table": { + "header": { + "fileName": "نام فایل", + "words": "کلمات", + "hitCount": "تعداد بازیابی", + "uploadTime": "زمان بارگذاری", + "status": "وضعیت", + "action": "اقدام", + "chunkingMode": "حالت تکه تکه کردن" + }, + "rename": "تغییر نام", + "name": "نام" + }, + "action": { + "uploadFile": "بارگذاری فایل جدید", + "settings": "تنظیمات بخش‌بندی", + "addButton": "اضافه کردن قطعه", + "add": "اضافه کردن یک قطعه", + "batchAdd": "افزودن گروهی", + "archive": "بایگانی", + "unarchive": "خارج کردن از بایگانی", + "delete": "حذف", + "enableWarning": "فایل بایگانی شده نمی‌تواند فعال شود", + "sync": "همگام‌سازی", + "resume": "ادامه", + "pause": "مکث" + }, + "index": { + "enable": "فعال کردن", + "disable": "غیرفعال کردن", + "all": "همه", + "enableTip": "فایل می‌تواند ایندکس شود", + "disableTip": "فایل نمی‌تواند ایندکس شود" + }, + "status": { + "queuing": "در صف", + "indexing": "ایندکس‌سازی", + "paused": "متوقف شده", + "error": "خطا", + "available": "موجود", + "enabled": "فعال شده", + "disabled": "غیرفعال شده", + "archived": "بایگانی شده" + }, + "empty": { + "title": "هنوز هیچ سندی وجود ندارد", + "upload": { + "tip": "شما می‌توانید فایل‌ها را بارگذاری کنید، از وب‌سایت همگام‌سازی کنید، یا از برنامه‌های وبی مانند Notion، GitHub و غیره." + }, + "sync": { + "tip": "Dify به‌طور دوره‌ای فایل‌ها را از Notion شما دانلود و پردازش را کامل می‌کند." + } + }, + "delete": { + "title": "آیا مطمئن هستید که حذف شود؟", + "content": "اگر بعداً نیاز به ادامه پردازش داشتید، از همان جایی که مانده بودید ادامه می‌دهید" + }, + "batchModal": { + "title": "افزودن گروهی قطعات", + "csvUploadTitle": "فایل CSV خود را اینجا بکشید و رها کنید، یا ", + "browse": "مرور کنید", + "tip": "فایل CSV باید به ساختار زیر مطابقت داشته باشد:", + "question": "سؤال", + "answer": "پاسخ", + "contentTitle": "محتوای قطعه", + "content": "محتوا", + "template": "الگو را از اینجا دانلود کنید", + "cancel": "لغو", + "run": "اجرای گروهی", + "runError": "اجرای گروهی ناموفق بود", + "processing": "در حال پردازش گروهی", + "completed": "واردات کامل شد", + "error": "خطای واردات", + "ok": "تأیید" + }, + "learnMore": "بیشتر بدانید", + "sort": { + "uploadTime": "زمان بارگذاری", + "hitCount": "تعداد بازیابی" + } + }, + "metadata": { + "title": "اطلاعات متا", + "desc": "برچسب‌گذاری متادیتا برای اسناد به هوش مصنوعی اجازه می‌دهد تا به موقع به آن‌ها دسترسی پیدا کند و منبع ارجاعات را برای کاربران آشکار کند.", + "dateTimeFormat": "D MMMM YYYY hh:mm A", + "docTypeSelectTitle": "لطفاً یک نوع سند را انتخاب کنید", + "docTypeChangeTitle": "تغییر نوع سند", + "docTypeSelectWarning": "اگر نوع سند تغییر کند، متادیتای پر شده فعلی دیگر حفظ نخواهد شد", + "firstMetaAction": "بزن بریم", + "placeholder": { + "add": "اضافه کردن ", + "select": "انتخاب " + }, + "source": { + "upload_file": "بارگذاری فایل", + "notion": "همگام‌سازی از Notion", + "github": "همگام‌سازی از Github", + "online_document": "سند آنلاین", + "website_crawl": "خزیدن وب سایت", + "local_file": "فایل محلی" + }, + "type": { + "book": "کتاب", + "webPage": "صفحه وب", + "paper": "مقاله", + "socialMediaPost": "پست شبکه‌های اجتماعی", + "personalDocument": "سند شخصی", + "businessDocument": "سند تجاری", + "IMChat": "چت IM", + "wikipediaEntry": "ورودی ویکی‌پدیا", + "notion": "همگام‌سازی از Notion", + "github": "همگام‌سازی از Github", + "technicalParameters": "پارامترهای فنی" + }, + "field": { + "processRule": { + "processDoc": "پردازش سند", + "segmentRule": "قانون قطعه‌بندی", + "segmentLength": "طول قطعات", + "processClean": "تمیز کردن پردازش متن" + }, + "book": { + "title": "عنوان", + "language": "زبان", + "author": "نویسنده", + "publisher": "ناشر", + "publicationDate": "تاریخ انتشار", + "ISBN": "ISBN", + "category": "دسته‌بندی" + }, + "webPage": { + "title": "عنوان", + "url": "URL", + "language": "زبان", + "authorPublisher": "نویسنده/ناشر", + "publishDate": "تاریخ انتشار", + "topicKeywords": "موضوعات/کلیدواژه‌ها", + "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": "پیش‌نمایش پاراگراف پس از اتمام جاسازی در دسترس خواهد بود", + "parentMaxTokens": "مادر", + "pause": "مکث", + "childMaxTokens": "کودک", + "hierarchical": "پدر و مادر و فرزند", + "waiting": "در حال انتظار برای جاسازی..." + }, + "segment": { + "paragraphs": "پاراگراف‌ها", + "keywords": "کلیدواژه‌ها", + "addKeyWord": "اضافه کردن کلیدواژه", + "keywordError": "حداکثر طول کلیدواژه ۲۰ کاراکتر است", + "hitCount": "تعداد بازیابی", + "vectorHash": "هش برداری: ", + "questionPlaceholder": "سؤال را اینجا اضافه کنید", + "questionEmpty": "سؤال نمی‌تواند خالی باشد", + "answerPlaceholder": "پاسخ را اینجا اضافه کنید", + "answerEmpty": "پاسخ نمی‌تواند خالی باشد", + "contentPlaceholder": "محتوا را اینجا اضافه کنید", + "contentEmpty": "محتوا نمی‌تواند خالی باشد", + "newTextSegment": "قطعه متن جدید", + "newQaSegment": "قطعه پرسش و پاسخ جدید", + "delete": "حذف این قطعه؟", + "chunks_other": "تکه", + "characters_one": "شخصیت", + "editedAt": "ویرایش شده در", + "dateTimeFormat": "MM/DD/YYYY h:mm", + "parentChunks_other": "تکه های والدین", + "editChunk": "ویرایش تکه", + "collapseChunks": "جمع کردن تکه ها", + "clearFilter": "فیلتر را پاک کنید", + "characters_other": "کاراکتر", + "chunkDetail": "جزئیات تکه", + "searchResults_other": "نتیجه", + "addAnother": "اضافه کردن دیگری", + "parentChunks_one": "تکه والدین", + "childChunk": "تکه کودک", + "regenerationSuccessTitle": "بازسازی به پایان رسید", + "chunk": "تکه", + "addChildChunk": "افزودن تکه فرزند", + "chunkAdded": "1 تکه اضافه شد", + "childChunks_one": "تکه کودک", + "edited": "ویرایش", + "editParentChunk": "ویرایش تکه والد", + "regeneratingTitle": "بازسازی تکه های فرزند", + "expandChunks": "تکه ها را گسترش دهید", + "childChunks_other": "تکه های کودک", + "newChildChunk": "تکه کودک جدید", + "editChildChunk": "ویرایش Child Chunk", + "parentChunk": "تکه والدین", + "chunks_one": "تکه", + "empty": "هیچ تکه ای یافت نشد", + "addChunk": "افزودن تکه", + "searchResults_one": "نتیجه", + "regenerationConfirmMessage": "بازآفرینی تکه های فرزند تکه های فرزند فعلی، از جمله تکه های ویرایش شده و تکه های تازه اضافه شده را بازنویسی می کند. بازسازی را نمی توان خنثی کرد.", + "childChunkAdded": "1 تکه کودک اضافه شد", + "searchResults_zero": "نتیجه", + "newChunk": "تکه جدید", + "regeneratingMessage": "این ممکن است یک لحظه طول بکشد، لطفا صبر کنید...", + "regenerationConfirmTitle": "آیا می خواهید تکه های کودک را بازسازی کنید؟", + "regenerationSuccessMessage": "می توانید این پنجره را ببندید.", + "keywordEmpty": "کلمه کلیدی نمی‌تواند خالی باشد", + "keywordDuplicate": "این کلیدواژه قبلاً وجود دارد", + "allFilesUploaded": "تمام فایل‌ها باید قبل از ذخیره شدن بارگذاری شوند" + } +} diff --git a/web/i18n/fa-IR/dataset-documents.ts b/web/i18n/fa-IR/dataset-documents.ts deleted file mode 100644 index fc808989ce..0000000000 --- a/web/i18n/fa-IR/dataset-documents.ts +++ /dev/null @@ -1,407 +0,0 @@ -const translation = { - list: { - title: 'اسناد', - desc: 'تمامی فایل‌های دانش در اینجا نمایش داده می‌شوند و کل دانش می‌تواند به ارجاعات Dify متصل شود یا از طریق افزونه چت ایندکس شود.', - addFile: 'اضافه کردن فایل', - addPages: 'اضافه کردن صفحات', - addUrl: 'اضافه کردن URL', - table: { - header: { - fileName: 'نام فایل', - words: 'کلمات', - hitCount: 'تعداد بازیابی', - uploadTime: 'زمان بارگذاری', - status: 'وضعیت', - action: 'اقدام', - chunkingMode: 'حالت تکه تکه کردن', - }, - rename: 'تغییر نام', - name: 'نام', - }, - action: { - uploadFile: 'بارگذاری فایل جدید', - settings: 'تنظیمات بخش‌بندی', - addButton: 'اضافه کردن قطعه', - add: 'اضافه کردن یک قطعه', - batchAdd: 'افزودن گروهی', - archive: 'بایگانی', - unarchive: 'خارج کردن از بایگانی', - delete: 'حذف', - enableWarning: 'فایل بایگانی شده نمی‌تواند فعال شود', - sync: 'همگام‌سازی', - resume: 'ادامه', - pause: 'مکث', - }, - index: { - enable: 'فعال کردن', - disable: 'غیرفعال کردن', - all: 'همه', - enableTip: 'فایل می‌تواند ایندکس شود', - disableTip: 'فایل نمی‌تواند ایندکس شود', - }, - status: { - queuing: 'در صف', - indexing: 'ایندکس‌سازی', - paused: 'متوقف شده', - error: 'خطا', - available: 'موجود', - enabled: 'فعال شده', - disabled: 'غیرفعال شده', - archived: 'بایگانی شده', - }, - empty: { - title: 'هنوز هیچ سندی وجود ندارد', - upload: { - tip: 'شما می‌توانید فایل‌ها را بارگذاری کنید، از وب‌سایت همگام‌سازی کنید، یا از برنامه‌های وبی مانند Notion، GitHub و غیره.', - }, - sync: { - tip: 'Dify به‌طور دوره‌ای فایل‌ها را از Notion شما دانلود و پردازش را کامل می‌کند.', - }, - }, - delete: { - title: 'آیا مطمئن هستید که حذف شود؟', - content: 'اگر بعداً نیاز به ادامه پردازش داشتید، از همان جایی که مانده بودید ادامه می‌دهید', - }, - batchModal: { - title: 'افزودن گروهی قطعات', - csvUploadTitle: 'فایل CSV خود را اینجا بکشید و رها کنید، یا ', - browse: 'مرور کنید', - tip: 'فایل CSV باید به ساختار زیر مطابقت داشته باشد:', - question: 'سؤال', - answer: 'پاسخ', - contentTitle: 'محتوای قطعه', - content: 'محتوا', - template: 'الگو را از اینجا دانلود کنید', - cancel: 'لغو', - run: 'اجرای گروهی', - runError: 'اجرای گروهی ناموفق بود', - processing: 'در حال پردازش گروهی', - completed: 'واردات کامل شد', - error: 'خطای واردات', - ok: 'تأیید', - }, - learnMore: 'بیشتر بدانید', - sort: { - uploadTime: 'زمان بارگذاری', - hitCount: 'تعداد بازیابی', - }, - }, - metadata: { - title: 'اطلاعات متا', - desc: 'برچسب‌گذاری متادیتا برای اسناد به هوش مصنوعی اجازه می‌دهد تا به موقع به آن‌ها دسترسی پیدا کند و منبع ارجاعات را برای کاربران آشکار کند.', - dateTimeFormat: 'D MMMM YYYY hh:mm A', - docTypeSelectTitle: 'لطفاً یک نوع سند را انتخاب کنید', - docTypeChangeTitle: 'تغییر نوع سند', - docTypeSelectWarning: 'اگر نوع سند تغییر کند، متادیتای پر شده فعلی دیگر حفظ نخواهد شد', - firstMetaAction: 'بزن بریم', - placeholder: { - add: 'اضافه کردن ', - select: 'انتخاب ', - }, - source: { - upload_file: 'بارگذاری فایل', - notion: 'همگام‌سازی از Notion', - github: 'همگام‌سازی از Github', - online_document: 'سند آنلاین', - website_crawl: 'خزیدن وب سایت', - local_file: 'فایل محلی', - }, - type: { - book: 'کتاب', - webPage: 'صفحه وب', - paper: 'مقاله', - socialMediaPost: 'پست شبکه‌های اجتماعی', - personalDocument: 'سند شخصی', - businessDocument: 'سند تجاری', - IMChat: 'چت IM', - wikipediaEntry: 'ورودی ویکی‌پدیا', - notion: 'همگام‌سازی از Notion', - github: 'همگام‌سازی از Github', - technicalParameters: 'پارامترهای فنی', - }, - field: { - processRule: { - processDoc: 'پردازش سند', - segmentRule: 'قانون قطعه‌بندی', - segmentLength: 'طول قطعات', - processClean: 'تمیز کردن پردازش متن', - }, - book: { - title: 'عنوان', - language: 'زبان', - author: 'نویسنده', - publisher: 'ناشر', - publicationDate: 'تاریخ انتشار', - ISBN: 'ISBN', - category: 'دسته‌بندی', - }, - webPage: { - title: 'عنوان', - url: 'URL', - language: 'زبان', - authorPublisher: 'نویسنده/ناشر', - publishDate: 'تاریخ انتشار', - topicKeywords: 'موضوعات/کلیدواژه‌ها', - 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: 'پیش‌نمایش پاراگراف پس از اتمام جاسازی در دسترس خواهد بود', - parentMaxTokens: 'مادر', - pause: 'مکث', - childMaxTokens: 'کودک', - hierarchical: 'پدر و مادر و فرزند', - waiting: 'در حال انتظار برای جاسازی...', - }, - segment: { - paragraphs: 'پاراگراف‌ها', - keywords: 'کلیدواژه‌ها', - addKeyWord: 'اضافه کردن کلیدواژه', - keywordError: 'حداکثر طول کلیدواژه ۲۰ کاراکتر است', - hitCount: 'تعداد بازیابی', - vectorHash: 'هش برداری: ', - questionPlaceholder: 'سؤال را اینجا اضافه کنید', - questionEmpty: 'سؤال نمی‌تواند خالی باشد', - answerPlaceholder: 'پاسخ را اینجا اضافه کنید', - answerEmpty: 'پاسخ نمی‌تواند خالی باشد', - contentPlaceholder: 'محتوا را اینجا اضافه کنید', - contentEmpty: 'محتوا نمی‌تواند خالی باشد', - newTextSegment: 'قطعه متن جدید', - newQaSegment: 'قطعه پرسش و پاسخ جدید', - delete: 'حذف این قطعه؟', - chunks_other: 'تکه', - characters_one: 'شخصیت', - editedAt: 'ویرایش شده در', - dateTimeFormat: 'MM/DD/YYYY h:mm', - parentChunks_other: 'تکه های والدین', - editChunk: 'ویرایش تکه', - collapseChunks: 'جمع کردن تکه ها', - clearFilter: 'فیلتر را پاک کنید', - characters_other: 'کاراکتر', - chunkDetail: 'جزئیات تکه', - searchResults_other: 'نتیجه', - addAnother: 'اضافه کردن دیگری', - parentChunks_one: 'تکه والدین', - childChunk: 'تکه کودک', - regenerationSuccessTitle: 'بازسازی به پایان رسید', - chunk: 'تکه', - addChildChunk: 'افزودن تکه فرزند', - chunkAdded: '1 تکه اضافه شد', - childChunks_one: 'تکه کودک', - edited: 'ویرایش', - editParentChunk: 'ویرایش تکه والد', - regeneratingTitle: 'بازسازی تکه های فرزند', - expandChunks: 'تکه ها را گسترش دهید', - childChunks_other: 'تکه های کودک', - newChildChunk: 'تکه کودک جدید', - editChildChunk: 'ویرایش Child Chunk', - parentChunk: 'تکه والدین', - chunks_one: 'تکه', - empty: 'هیچ تکه ای یافت نشد', - addChunk: 'افزودن تکه', - searchResults_one: 'نتیجه', - regenerationConfirmMessage: 'بازآفرینی تکه های فرزند تکه های فرزند فعلی، از جمله تکه های ویرایش شده و تکه های تازه اضافه شده را بازنویسی می کند. بازسازی را نمی توان خنثی کرد.', - childChunkAdded: '1 تکه کودک اضافه شد', - searchResults_zero: 'نتیجه', - newChunk: 'تکه جدید', - regeneratingMessage: 'این ممکن است یک لحظه طول بکشد، لطفا صبر کنید...', - regenerationConfirmTitle: 'آیا می خواهید تکه های کودک را بازسازی کنید؟', - regenerationSuccessMessage: 'می توانید این پنجره را ببندید.', - keywordEmpty: 'کلمه کلیدی نمی‌تواند خالی باشد', - keywordDuplicate: 'این کلیدواژه قبلاً وجود دارد', - allFilesUploaded: 'تمام فایل‌ها باید قبل از ذخیره شدن بارگذاری شوند', - }, -} - -export default translation diff --git a/web/i18n/fa-IR/dataset-hit-testing.json b/web/i18n/fa-IR/dataset-hit-testing.json new file mode 100644 index 0000000000..e553b80e3b --- /dev/null +++ b/web/i18n/fa-IR/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "آزمون بازیابی", + "desc": "آزمون اثرگذاری دانش بر اساس متن پرسش داده شده.", + "dateTimeFormat": "MM/DD/YYYY hh:mm A", + "table": { + "header": { + "source": "منبع", + "time": "زمان", + "queryContent": "محتوای پرس‌وجو" + } + }, + "input": { + "title": "متن منبع", + "placeholder": "لطفاً یک متن وارد کنید، یک جمله کوتاه خبری توصیه می‌شود.", + "countWarning": "تا ۲۰۰ کاراکتر.", + "indexWarning": "فقط دانش با کیفیت بالا.", + "testing": "در حال آزمون" + }, + "hit": { + "title": "پاراگراف‌های بازیابی", + "emptyTip": "نتایج آزمون بازیابی اینجا نمایش داده می‌شوند" + }, + "noRecentTip": "اینجا نتیجه پرسش اخیر وجود ندارد", + "viewChart": "مشاهده نمودار بُرداری", + "settingTitle": "تنظیمات بازیابی", + "viewDetail": "نمایش جزئیات", + "records": "سوابق", + "keyword": "کليدواژه", + "hitChunks": "{{num}} را بزنید تکه های فرزند", + "chunkDetail": "جزئیات تکه", + "open": "باز", + "imageUploader": { + "tip": "تصاویر را آپلود کنید یا رها کنید (حداکثر {{batchCount}} تصویر، هر کدام {{size}} مگابایت)", + "tooltip": "آپلود تصاویر (حداکثر {{batchCount}}، هر کدام {{size}} مگابایت)", + "dropZoneTip": "فایل را اینجا بکشید تا بارگذاری شود", + "singleChunkAttachmentLimitTooltip": "تعداد پیوست‌های تک قطعه‌ای نمی‌تواند از {{limit}} بیشتر باشد" + } +} diff --git a/web/i18n/fa-IR/dataset-hit-testing.ts b/web/i18n/fa-IR/dataset-hit-testing.ts deleted file mode 100644 index e43f11dbfd..0000000000 --- a/web/i18n/fa-IR/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - title: 'آزمون بازیابی', - desc: 'آزمون اثرگذاری دانش بر اساس متن پرسش داده شده.', - dateTimeFormat: 'MM/DD/YYYY hh:mm A', - table: { - header: { - source: 'منبع', - time: 'زمان', - queryContent: 'محتوای پرس‌وجو', - }, - }, - input: { - title: 'متن منبع', - placeholder: 'لطفاً یک متن وارد کنید، یک جمله کوتاه خبری توصیه می‌شود.', - countWarning: 'تا ۲۰۰ کاراکتر.', - indexWarning: 'فقط دانش با کیفیت بالا.', - testing: 'در حال آزمون', - }, - hit: { - title: 'پاراگراف‌های بازیابی', - emptyTip: 'نتایج آزمون بازیابی اینجا نمایش داده می‌شوند', - }, - noRecentTip: 'اینجا نتیجه پرسش اخیر وجود ندارد', - viewChart: 'مشاهده نمودار بُرداری', - settingTitle: 'تنظیمات بازیابی', - viewDetail: 'نمایش جزئیات', - records: 'سوابق', - keyword: 'کليدواژه', - hitChunks: '{{num}} را بزنید تکه های فرزند', - chunkDetail: 'جزئیات تکه', - open: 'باز', - imageUploader: { - tip: 'تصاویر را آپلود کنید یا رها کنید (حداکثر {{batchCount}} تصویر، هر کدام {{size}} مگابایت)', - tooltip: 'آپلود تصاویر (حداکثر {{batchCount}}، هر کدام {{size}} مگابایت)', - dropZoneTip: 'فایل را اینجا بکشید تا بارگذاری شود', - singleChunkAttachmentLimitTooltip: 'تعداد پیوست‌های تک قطعه‌ای نمی‌تواند از {{limit}} بیشتر باشد', - }, -} - -export default translation diff --git a/web/i18n/fa-IR/dataset-pipeline.json b/web/i18n/fa-IR/dataset-pipeline.json new file mode 100644 index 0000000000..493604b4b8 --- /dev/null +++ b/web/i18n/fa-IR/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "createFromScratch": { + "title": "خط لوله دانش خالی", + "description": "یک پایپ لاین سفارشی از ابتدا با کنترل کامل بر پردازش و ساختار داده ایجاد کنید." + }, + "caution": "احتیاط", + "createKnowledge": "ایجاد دانش", + "backToKnowledge": "بازگشت به دانش", + "importDSL": "ایمپورت از یک فایل DSL", + "successTip": "با موفقیت یک پایگاه دانش ایجاد کرد", + "errorTip": "ایجاد پایگاه دانش ناموفق است" + }, + "templates": { + "customized": "سفارشی" + }, + "operations": { + "dataSource": "منبع داده", + "details": "جزئیات", + "convert": "تبدیل", + "choose": "انتخاب", + "preview": "پیشنمایش", + "process": "فرایند", + "editInfo": "ویرایش اطلاعات", + "useTemplate": "از این پایپ لاین دانش استفاده کنید", + "saveAndProcess": "ذخیره و پردازش", + "backToDataSource": "بازگشت به منبع داده", + "exportPipeline": "خط لوله صادرات" + }, + "deletePipeline": { + "content": "حذف الگوی خط لوله برگشت ناپذیر است.", + "title": "آیا مطمئن هستید که این الگوی خط لوله را حذف می کنید؟" + }, + "publishPipeline": { + "success": { + "message": "خط لوله دانش منتشر شد", + "tip": "برای افزودن یا مدیریت اسناد، به اسناد بروید." + }, + "error": { + "message": "انتشار پایپ لاین دانش ناموفق است" + } + }, + "publishTemplate": { + "success": { + "learnMore": "بیشتر بدانید", + "message": "الگوی خط لوله منتشر شد", + "tip": "می توانید از این الگو در صفحه ایجاد استفاده کنید." + }, + "error": { + "message": "انتشار الگوی خط لوله انجام نشد" + } + }, + "exportDSL": { + "successTip": "DSL خط لوله را با موفقیت صادر کنید", + "errorTip": "صادرات DSL خط لوله انجام نشد" + }, + "details": { + "structure": "ساختار", + "structureTooltip": "ساختار Chunk نحوه تقسیم و نمایه سازی اسناد را تعیین می کند - حالت های عمومی، والد-فرزند و پرسش و پاسخ را ارائه می دهد - و برای هر پایگاه دانش منحصر به فرد است.", + "createdBy": "توسط {{author}}" + }, + "testRun": { + "steps": { + "dataSource": "منبع داده", + "documentProcessing": "پردازش اسناد" + }, + "dataSource": { + "localFiles": "فایل های محلی" + }, + "notion": { + "docTitle": "اسناد مفهومی", + "title": "صفحات مفهومی را انتخاب کنید" + }, + "title": "اجرای آزمایشی", + "tooltip": "در حالت اجرای آزمایشی، فقط یک سند مجاز به وارد کردن در یک زمان برای اشکال زدایی و مشاهده آسان تر است." + }, + "inputFieldPanel": { + "uniqueInputs": { + "title": "ورودی های منحصر به فرد برای هر ورودی", + "tooltip": "ورودی های منحصر به فرد فقط برای منبع داده انتخاب شده و گره های پایین دستی آن قابل دسترسی هستند. کاربران هنگام انتخاب منابع داده دیگر نیازی به پر کردن آن نخواهند داشت. فقط فیلدهای ورودی که توسط متغیرهای منبع داده ارجاع داده شده اند در مرحله اول ظاهر می شوند (منبع داده). تمام فیلدهای دیگر در مرحله دوم (اسناد فرآیند) نشان داده می شوند." + }, + "globalInputs": { + "title": "ورودی های جهانی برای همه ورودی ها", + "tooltip": "ورودی های جهانی در همه گره ها به اشتراک گذاشته می شوند. کاربران باید هنگام انتخاب هر منبع داده ای آنها را پر کنند. به عنوان مثال، فیلدهایی مانند جداکننده و حداکثر طول تکه را می توان به طور یکنواخت در چندین منبع داده اعمال کرد. فقط فیلدهای ورودی که توسط متغیرهای منبع داده ارجاع داده می شوند در مرحله اول ظاهر می شوند (منبع داده). تمام فیلدهای دیگر در مرحله دوم نشان داده می شوند (اسناد پردازش)." + }, + "preview": { + "stepOneTitle": "منبع داده", + "stepTwoTitle": "اسناد پردازش" + }, + "error": { + "variableDuplicate": "نام متغیر از قبل وجود دارد. لطفا نام دیگری را انتخاب کنید." + }, + "addInputField": "افزودن فیلد ورودی", + "title": "فیلدهای ورودی کاربر", + "editInputField": "ویرایش فیلد ورودی", + "description": "فیلدهای ورودی کاربر برای تعریف و جمع آوری متغیرهای مورد نیاز در طول فرآیند اجرای خط لوله استفاده می شود. کاربران می توانند نوع فیلد را سفارشی کنند و مقدار ورودی را به طور انعطاف پذیر پیکربندی کنند تا نیازهای منابع داده مختلف یا مراحل پردازش سند را برآورده کنند." + }, + "addDocuments": { + "steps": { + "processDocuments": "اسناد پردازش", + "processingDocuments": "پردازش اسناد", + "chooseDatasource": "یک منبع داده را انتخاب کنید" + }, + "stepOne": { + "preview": "پیشنمایش" + }, + "stepTwo": { + "chunkSettings": "تنظیمات تکه", + "previewChunks": "پیش نمایش تکه ها" + }, + "stepThree": { + "learnMore": "بیشتر بدانید" + }, + "backToDataSource": "منبع داده", + "characters": "کاراکتر", + "title": "اسناد را اضافه کنید", + "selectOnlineDocumentTip": "پردازش تا {{count}} صفحه", + "selectOnlineDriveTip": "پردازش تا {{count}} فایل، حداکثر {{fileSize}} مگابایت برای هر فایل" + }, + "documentSettings": { + "title": "تنظیمات سند" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} صفحه" + }, + "onlineDrive": { + "breadcrumbs": { + "allFiles": "همه فایل ها", + "searchPlaceholder": "فایل های جستجو...", + "allBuckets": "همه سطل های ذخیره سازی ابری", + "searchResult": "یافتن {{searchResultsLength}} مورد در پوشه «{{folderName}}»" + }, + "emptyFolder": "این پوشه خالی است", + "resetKeywords": "بازنشانی کلمات کلیدی", + "emptySearchResult": "هیچ موردی یافت نشد", + "notSupportedFileType": "این نوع فایل پشتیبانی نمی شود", + "notConnected": "{{name}} متصل نیست", + "notConnectedTip": "برای همگام‌سازی با {{name}}، ابتدا باید اتصال به {{name}} برقرار شود." + }, + "conversion": { + "confirm": { + "title": "تایید", + "content": "این عمل دائمی است. نمی توانید به روش قبلی برگردید. لطفا برای تبدیل تأیید کنید." + }, + "title": "تبدیل به پایپ لاین دانش", + "warning": "این عمل قابل برگشت نیست.", + "errorMessage": "تبدیل مجموعه داده به خط لوله انجام نشد", + "successMessage": "مجموعه داده را با موفقیت به یک خط لوله تبدیل کرد", + "descriptionChunk2": "- یک رویکرد بازتر و انعطاف پذیرتر با دسترسی به افزونه ها از بازار ما. این روش پردازش جدید را برای تمام اسناد آینده اعمال می کند.", + "descriptionChunk1": "اکنون می توانید پایگاه دانش موجود خود را برای استفاده از خط لوله دانش برای پردازش اسناد تبدیل کنید" + }, + "knowledgePermissions": "مجوزهای", + "inputField": "فیلد ورودی", + "knowledgeNameAndIcon": "نام و نماد دانش", + "knowledgeDescription": "شرح دانش", + "pipelineNameAndIcon": "نام و نماد خط لوله", + "editPipelineInfo": "ویرایش اطلاعات خط لوله", + "knowledgeNameAndIconPlaceholder": "لطفا نام پایگاه دانش را وارد کنید", + "knowledgeDescriptionPlaceholder": "آنچه در این پایگاه دانش وجود دارد را شرح دهید. توضیحات دقیق به هوش مصنوعی اجازه می دهد تا با دقت بیشتری به محتوای مجموعه داده دسترسی داشته باشد. اگر خالی باشد، Dify از استراتژی ضربه پیش فرض استفاده می کند. (اختیاری)", + "configurationTip": "پیکربندی {{pluginName}}" +} diff --git a/web/i18n/fa-IR/dataset-pipeline.ts b/web/i18n/fa-IR/dataset-pipeline.ts deleted file mode 100644 index 709a616a75..0000000000 --- a/web/i18n/fa-IR/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - createFromScratch: { - title: 'خط لوله دانش خالی', - description: 'یک پایپ لاین سفارشی از ابتدا با کنترل کامل بر پردازش و ساختار داده ایجاد کنید.', - }, - caution: 'احتیاط', - createKnowledge: 'ایجاد دانش', - backToKnowledge: 'بازگشت به دانش', - importDSL: 'ایمپورت از یک فایل DSL', - successTip: 'با موفقیت یک پایگاه دانش ایجاد کرد', - errorTip: 'ایجاد پایگاه دانش ناموفق است', - }, - templates: { - customized: 'سفارشی', - }, - operations: { - dataSource: 'منبع داده', - details: 'جزئیات', - convert: 'تبدیل', - choose: 'انتخاب', - preview: 'پیشنمایش', - process: 'فرایند', - editInfo: 'ویرایش اطلاعات', - useTemplate: 'از این پایپ لاین دانش استفاده کنید', - saveAndProcess: 'ذخیره و پردازش', - backToDataSource: 'بازگشت به منبع داده', - exportPipeline: 'خط لوله صادرات', - }, - deletePipeline: { - content: 'حذف الگوی خط لوله برگشت ناپذیر است.', - title: 'آیا مطمئن هستید که این الگوی خط لوله را حذف می کنید؟', - }, - publishPipeline: { - success: { - message: 'خط لوله دانش منتشر شد', - tip: 'برای افزودن یا مدیریت اسناد، به اسناد بروید.', - }, - error: { - message: 'انتشار پایپ لاین دانش ناموفق است', - }, - }, - publishTemplate: { - success: { - learnMore: 'بیشتر بدانید', - message: 'الگوی خط لوله منتشر شد', - tip: 'می توانید از این الگو در صفحه ایجاد استفاده کنید.', - }, - error: { - message: 'انتشار الگوی خط لوله انجام نشد', - }, - }, - exportDSL: { - successTip: 'DSL خط لوله را با موفقیت صادر کنید', - errorTip: 'صادرات DSL خط لوله انجام نشد', - }, - details: { - structure: 'ساختار', - structureTooltip: 'ساختار Chunk نحوه تقسیم و نمایه سازی اسناد را تعیین می کند - حالت های عمومی، والد-فرزند و پرسش و پاسخ را ارائه می دهد - و برای هر پایگاه دانش منحصر به فرد است.', - createdBy: 'توسط {{author}}', - }, - testRun: { - steps: { - dataSource: 'منبع داده', - documentProcessing: 'پردازش اسناد', - }, - dataSource: { - localFiles: 'فایل های محلی', - }, - notion: { - docTitle: 'اسناد مفهومی', - title: 'صفحات مفهومی را انتخاب کنید', - }, - title: 'اجرای آزمایشی', - tooltip: 'در حالت اجرای آزمایشی، فقط یک سند مجاز به وارد کردن در یک زمان برای اشکال زدایی و مشاهده آسان تر است.', - }, - inputFieldPanel: { - uniqueInputs: { - title: 'ورودی های منحصر به فرد برای هر ورودی', - tooltip: 'ورودی های منحصر به فرد فقط برای منبع داده انتخاب شده و گره های پایین دستی آن قابل دسترسی هستند. کاربران هنگام انتخاب منابع داده دیگر نیازی به پر کردن آن نخواهند داشت. فقط فیلدهای ورودی که توسط متغیرهای منبع داده ارجاع داده شده اند در مرحله اول ظاهر می شوند (منبع داده). تمام فیلدهای دیگر در مرحله دوم (اسناد فرآیند) نشان داده می شوند.', - }, - globalInputs: { - title: 'ورودی های جهانی برای همه ورودی ها', - tooltip: 'ورودی های جهانی در همه گره ها به اشتراک گذاشته می شوند. کاربران باید هنگام انتخاب هر منبع داده ای آنها را پر کنند. به عنوان مثال، فیلدهایی مانند جداکننده و حداکثر طول تکه را می توان به طور یکنواخت در چندین منبع داده اعمال کرد. فقط فیلدهای ورودی که توسط متغیرهای منبع داده ارجاع داده می شوند در مرحله اول ظاهر می شوند (منبع داده). تمام فیلدهای دیگر در مرحله دوم نشان داده می شوند (اسناد پردازش).', - }, - preview: { - stepOneTitle: 'منبع داده', - stepTwoTitle: 'اسناد پردازش', - }, - error: { - variableDuplicate: 'نام متغیر از قبل وجود دارد. لطفا نام دیگری را انتخاب کنید.', - }, - addInputField: 'افزودن فیلد ورودی', - title: 'فیلدهای ورودی کاربر', - editInputField: 'ویرایش فیلد ورودی', - description: 'فیلدهای ورودی کاربر برای تعریف و جمع آوری متغیرهای مورد نیاز در طول فرآیند اجرای خط لوله استفاده می شود. کاربران می توانند نوع فیلد را سفارشی کنند و مقدار ورودی را به طور انعطاف پذیر پیکربندی کنند تا نیازهای منابع داده مختلف یا مراحل پردازش سند را برآورده کنند.', - }, - addDocuments: { - steps: { - processDocuments: 'اسناد پردازش', - processingDocuments: 'پردازش اسناد', - chooseDatasource: 'یک منبع داده را انتخاب کنید', - }, - stepOne: { - preview: 'پیشنمایش', - }, - stepTwo: { - chunkSettings: 'تنظیمات تکه', - previewChunks: 'پیش نمایش تکه ها', - }, - stepThree: { - learnMore: 'بیشتر بدانید', - }, - backToDataSource: 'منبع داده', - characters: 'کاراکتر', - title: 'اسناد را اضافه کنید', - selectOnlineDocumentTip: 'پردازش تا {{count}} صفحه', - selectOnlineDriveTip: 'پردازش تا {{count}} فایل، حداکثر {{fileSize}} مگابایت برای هر فایل', - }, - documentSettings: { - title: 'تنظیمات سند', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} صفحه', - }, - onlineDrive: { - breadcrumbs: { - allFiles: 'همه فایل ها', - searchPlaceholder: 'فایل های جستجو...', - allBuckets: 'همه سطل های ذخیره سازی ابری', - searchResult: 'یافتن {{searchResultsLength}} مورد در پوشه «{{folderName}}»', - }, - emptyFolder: 'این پوشه خالی است', - resetKeywords: 'بازنشانی کلمات کلیدی', - emptySearchResult: 'هیچ موردی یافت نشد', - notSupportedFileType: 'این نوع فایل پشتیبانی نمی شود', - notConnected: '{{name}} متصل نیست', - notConnectedTip: 'برای همگام‌سازی با {{name}}، ابتدا باید اتصال به {{name}} برقرار شود.', - }, - conversion: { - confirm: { - title: 'تایید', - content: 'این عمل دائمی است. نمی توانید به روش قبلی برگردید. لطفا برای تبدیل تأیید کنید.', - }, - title: 'تبدیل به پایپ لاین دانش', - warning: 'این عمل قابل برگشت نیست.', - errorMessage: 'تبدیل مجموعه داده به خط لوله انجام نشد', - successMessage: 'مجموعه داده را با موفقیت به یک خط لوله تبدیل کرد', - descriptionChunk2: '- یک رویکرد بازتر و انعطاف پذیرتر با دسترسی به افزونه ها از بازار ما. این روش پردازش جدید را برای تمام اسناد آینده اعمال می کند.', - descriptionChunk1: 'اکنون می توانید پایگاه دانش موجود خود را برای استفاده از خط لوله دانش برای پردازش اسناد تبدیل کنید', - }, - knowledgePermissions: 'مجوزهای', - inputField: 'فیلد ورودی', - knowledgeNameAndIcon: 'نام و نماد دانش', - knowledgeDescription: 'شرح دانش', - pipelineNameAndIcon: 'نام و نماد خط لوله', - editPipelineInfo: 'ویرایش اطلاعات خط لوله', - knowledgeNameAndIconPlaceholder: 'لطفا نام پایگاه دانش را وارد کنید', - knowledgeDescriptionPlaceholder: 'آنچه در این پایگاه دانش وجود دارد را شرح دهید. توضیحات دقیق به هوش مصنوعی اجازه می دهد تا با دقت بیشتری به محتوای مجموعه داده دسترسی داشته باشد. اگر خالی باشد، Dify از استراتژی ضربه پیش فرض استفاده می کند. (اختیاری)', - configurationTip: 'پیکربندی {{pluginName}}', -} - -export default translation diff --git a/web/i18n/fa-IR/dataset-settings.json b/web/i18n/fa-IR/dataset-settings.json new file mode 100644 index 0000000000..d7f2ef46b2 --- /dev/null +++ b/web/i18n/fa-IR/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "تنظیمات دانش", + "desc": "اینجا می‌توانید ویژگی‌ها و روش‌های کاری دانش را تغییر دهید.", + "form": { + "name": "نام دانش", + "namePlaceholder": "لطفاً نام دانش را وارد کنید", + "nameError": "نام نمی‌تواند خالی باشد", + "desc": "توضیحات دانش", + "descInfo": "لطفاً یک توضیح متنی واضح بنویسید تا محتوای دانش را مشخص کند. این توضیحات به عنوان مبنایی برای تطبیق هنگام انتخاب از چندین دانش برای استنتاج استفاده خواهد شد.", + "descPlaceholder": "توضیح دهید که در این دانش چه چیزی وجود دارد. توضیحات دقیق به هوش مصنوعی اجازه می‌دهد تا به موقع به محتوای دانش دسترسی پیدا کند. اگر خالی باشد، دیفی از استراتژی پیش‌فرض استفاده خواهد کرد.", + "descWrite": "یاد بگیرید چگونه یک توضیح دانش خوب بنویسید.", + "permissions": "مجوزها", + "permissionsOnlyMe": "فقط من", + "permissionsAllMember": "تمام اعضای تیم", + "permissionsInvitedMembers": "برخی از اعضای تیم", + "me": "(شما)", + "indexMethod": "روش نمایه‌سازی", + "indexMethodHighQuality": "کیفیت بالا", + "indexMethodHighQualityTip": "مدل تعبیه را برای پردازش فراخوانی کنید تا دقت بالاتری هنگام جستجوی کاربران فراهم شود.", + "indexMethodEconomy": "اقتصادی", + "indexMethodEconomyTip": "استفاده از موتورهای برداری آفلاین، شاخص‌های کلمات کلیدی و غیره برای کاهش دقت بدون صرف توکن‌ها", + "embeddingModel": "مدل تعبیه", + "embeddingModelTip": "برای تغییر مدل تعبیه، لطفاً به ", + "embeddingModelTipLink": "تنظیمات", + "retrievalSetting": { + "title": "تنظیمات بازیابی", + "learnMore": "بیشتر بدانید", + "description": " درباره روش بازیابی.", + "longDescription": " درباره روش بازیابی، می‌توانید در هر زمانی در تنظیمات دانش این را تغییر دهید.", + "method": "روش بازیابی", + "multiModalTip": "وقتی مدل جاسازی از چندرسانه‌ای پشتیبانی می‌کند، لطفاً برای عملکرد بهتر یک مدل بازرتبه‌بندی چندرسانه‌ای انتخاب کنید." + }, + "save": "ذخیره", + "externalKnowledgeAPI": "API دانش خارجی", + "retrievalSettings": "تنظیمات بازیابی", + "externalKnowledgeID": "شناسه دانش خارجی", + "indexMethodChangeToEconomyDisabledTip": "برای تنزل رتبه از HQ به ECO در دسترس نیست", + "helpText": "یاد بگیرید که چگونه یک توضیحات مجموعه داده خوب بنویسید.", + "upgradeHighQualityTip": "پس از ارتقاء به حالت کیفیت بالا، بازگشت به حالت اقتصادی در دسترس نیست", + "searchModel": "جستجوی مدل", + "chunkStructure": { + "title": "ساختار تکه", + "learnMore": "بیشتر بدانید", + "description": "درباره ساختار تکه تکه است." + }, + "nameAndIcon": "نام و نماد", + "numberOfKeywords": "تعداد کلمات کلیدی", + "onSearchResults": "هیچ عضوی با عبارت جستجوی شما مطابقت ندارد.\nجستجویتان را دوباره امتحان کنید." + } +} diff --git a/web/i18n/fa-IR/dataset-settings.ts b/web/i18n/fa-IR/dataset-settings.ts deleted file mode 100644 index 12df158105..0000000000 --- a/web/i18n/fa-IR/dataset-settings.ts +++ /dev/null @@ -1,52 +0,0 @@ -const translation = { - title: 'تنظیمات دانش', - desc: 'اینجا می‌توانید ویژگی‌ها و روش‌های کاری دانش را تغییر دهید.', - form: { - name: 'نام دانش', - namePlaceholder: 'لطفاً نام دانش را وارد کنید', - nameError: 'نام نمی‌تواند خالی باشد', - desc: 'توضیحات دانش', - descInfo: 'لطفاً یک توضیح متنی واضح بنویسید تا محتوای دانش را مشخص کند. این توضیحات به عنوان مبنایی برای تطبیق هنگام انتخاب از چندین دانش برای استنتاج استفاده خواهد شد.', - descPlaceholder: 'توضیح دهید که در این دانش چه چیزی وجود دارد. توضیحات دقیق به هوش مصنوعی اجازه می‌دهد تا به موقع به محتوای دانش دسترسی پیدا کند. اگر خالی باشد، دیفی از استراتژی پیش‌فرض استفاده خواهد کرد.', - descWrite: 'یاد بگیرید چگونه یک توضیح دانش خوب بنویسید.', - permissions: 'مجوزها', - permissionsOnlyMe: 'فقط من', - permissionsAllMember: 'تمام اعضای تیم', - permissionsInvitedMembers: 'برخی از اعضای تیم', - me: '(شما)', - indexMethod: 'روش نمایه‌سازی', - indexMethodHighQuality: 'کیفیت بالا', - indexMethodHighQualityTip: 'مدل تعبیه را برای پردازش فراخوانی کنید تا دقت بالاتری هنگام جستجوی کاربران فراهم شود.', - indexMethodEconomy: 'اقتصادی', - indexMethodEconomyTip: 'استفاده از موتورهای برداری آفلاین، شاخص‌های کلمات کلیدی و غیره برای کاهش دقت بدون صرف توکن‌ها', - embeddingModel: 'مدل تعبیه', - embeddingModelTip: 'برای تغییر مدل تعبیه، لطفاً به ', - embeddingModelTipLink: 'تنظیمات', - retrievalSetting: { - title: 'تنظیمات بازیابی', - learnMore: 'بیشتر بدانید', - description: ' درباره روش بازیابی.', - longDescription: ' درباره روش بازیابی، می‌توانید در هر زمانی در تنظیمات دانش این را تغییر دهید.', - method: 'روش بازیابی', - multiModalTip: 'وقتی مدل جاسازی از چندرسانه‌ای پشتیبانی می‌کند، لطفاً برای عملکرد بهتر یک مدل بازرتبه‌بندی چندرسانه‌ای انتخاب کنید.', - }, - save: 'ذخیره', - externalKnowledgeAPI: 'API دانش خارجی', - retrievalSettings: 'تنظیمات بازیابی', - externalKnowledgeID: 'شناسه دانش خارجی', - indexMethodChangeToEconomyDisabledTip: 'برای تنزل رتبه از HQ به ECO در دسترس نیست', - helpText: 'یاد بگیرید که چگونه یک توضیحات مجموعه داده خوب بنویسید.', - upgradeHighQualityTip: 'پس از ارتقاء به حالت کیفیت بالا، بازگشت به حالت اقتصادی در دسترس نیست', - searchModel: 'جستجوی مدل', - chunkStructure: { - title: 'ساختار تکه', - learnMore: 'بیشتر بدانید', - description: 'درباره ساختار تکه تکه است.', - }, - nameAndIcon: 'نام و نماد', - numberOfKeywords: 'تعداد کلمات کلیدی', - onSearchResults: 'هیچ عضوی با عبارت جستجوی شما مطابقت ندارد.\nجستجویتان را دوباره امتحان کنید.', - }, -} - -export default translation diff --git a/web/i18n/fa-IR/dataset.json b/web/i18n/fa-IR/dataset.json new file mode 100644 index 0000000000..eb6e7659a4 --- /dev/null +++ b/web/i18n/fa-IR/dataset.json @@ -0,0 +1,249 @@ +{ + "knowledge": "دانش", + "documentCount": " سند", + "wordCount": " هزار کلمه", + "appCount": " برنامه‌های متصل", + "createDataset": "ایجاد دانش", + "createDatasetIntro": "داده‌های متنی خود را وارد کنید یا از طریق Webhook در زمان واقعی برای بهبود زمینه LLM بنویسید.", + "deleteDatasetConfirmTitle": "حذف این دانش؟", + "deleteDatasetConfirmContent": "حذف دانش غیر قابل برگشت است. کاربران دیگر نمی‌توانند به دانش شما دسترسی پیدا کنند و تمام تنظیمات درخواست و گزارش‌ها به طور دائم حذف خواهند شد.", + "datasetUsedByApp": "دانش توسط برخی برنامه‌ها استفاده می‌شود. برنامه‌ها دیگر نمی‌توانند از این دانش استفاده کنند و تمام تنظیمات درخواست و گزارش‌ها به طور دائم حذف خواهند شد.", + "datasetDeleted": "دانش حذف شد", + "datasetDeleteFailed": "حذف دانش ناموفق بود", + "didYouKnow": "آیا می‌دانستید؟", + "intro1": "دانش می‌تواند در برنامه Dify ", + "intro2": "به عنوان یک زمینه", + "intro3": "ادغام شود", + "intro4": "یا می‌تواند ", + "intro5": "به عنوان یک افزونه مستقل ChatGPT برای انتشار", + "intro6": "ایجاد شود", + "unavailable": "در دسترس نیست", + "datasets": "دانش", + "datasetsApi": "دسترسی API", + "retrieval": { + "semantic_search": { + "title": "جستجوی برداری", + "description": "تولید جاسازی‌های جستجو و جستجوی بخش متنی که بیشترین شباهت را به نمایش برداری آن دارد." + }, + "full_text_search": { + "title": "جستجوی متن کامل", + "description": "فهرست کردن تمام اصطلاحات در سند، به کاربران اجازه می‌دهد هر اصطلاحی را جستجو کنند و بخش متنی مربوط به آن اصطلاحات را بازیابی کنند." + }, + "hybrid_search": { + "title": "جستجوی هیبریدی", + "description": "جستجوی متن کامل و برداری را همزمان اجرا می‌کند، دوباره رتبه‌بندی می‌کند تا بهترین تطابق برای درخواست کاربر انتخاب شود. کاربران می‌توانند وزن‌ها را تنظیم کنند یا به یک مدل دوباره رتبه‌بندی تنظیم کنند.", + "recommend": "توصیه" + }, + "invertedIndex": {}, + "change": "تغییر", + "changeRetrievalMethod": "تغییر روش بازیابی", + "keyword_search": { + "title": "شاخص معکوس", + "description": "شاخص معکوس ساختاری است که برای بازیابی کارآمد استفاده می شود. هر اصطلاح که بر اساس اصطلاحات سازماندهی شده است، به اسناد یا صفحات وب حاوی آن اشاره می کند." + } + }, + "docsFailedNotice": "اسناد نتوانستند فهرست‌بندی شوند", + "retry": "تلاش مجدد", + "indexingTechnique": { + "high_quality": "HQ", + "economy": "ECO" + }, + "indexingMethod": { + "semantic_search": "برداری", + "full_text_search": "متن کامل", + "hybrid_search": "هیبریدی", + "invertedIndex": "معکوس" + }, + "mixtureHighQualityAndEconomicTip": "مدل دوباره رتبه‌بندی برای ترکیب پایگاه‌های دانش با کیفیت بالا و اقتصادی لازم است.", + "inconsistentEmbeddingModelTip": "مدل دوباره رتبه‌بندی لازم است اگر مدل‌های جاسازی پایگاه‌های دانش انتخابی ناسازگار باشند.", + "retrievalSettings": "تنظیمات بازیابی", + "rerankSettings": "تنظیمات دوباره رتبه‌بندی", + "weightedScore": { + "title": "امتیاز وزنی", + "description": "با تنظیم وزن‌های اختصاص داده شده، این استراتژی دوباره رتبه‌بندی تعیین می‌کند که آیا اولویت با تطابق معنایی یا کلمات کلیدی است.", + "semanticFirst": "اولویت معنایی", + "keywordFirst": "اولویت کلمه کلیدی", + "customized": "سفارشی‌سازی شده", + "semantic": "معنایی", + "keyword": "کلمه کلیدی" + }, + "nTo1RetrievalLegacy": "بازیابی N-to-1 از سپتامبر به طور رسمی منسوخ خواهد شد. توصیه می‌شود از بازیابی چند مسیر جدید استفاده کنید تا نتایج بهتری بدست آورید.", + "nTo1RetrievalLegacyLink": "بیشتر بدانید", + "nTo1RetrievalLegacyLinkText": " بازیابی N-to-1 از سپتامبر به طور رسمی منسوخ خواهد شد.", + "defaultRetrievalTip": "بازیابی چند مسیره به طور پیش فرض استفاده می شود. دانش از چندین پایگاه دانش بازیابی می شود و سپس دوباره رتبه بندی می شود.", + "editExternalAPIConfirmWarningContent": { + "front": "این API دانش خارجی به", + "end": "دانش خارجی ، و این اصلاح برای همه آنها اعمال خواهد شد. آیا مطمئن هستید که می خواهید این تغییر را ذخیره کنید؟" + }, + "editExternalAPIFormWarning": { + "front": "این API خارجی به", + "end": "دانش بیرونی" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "front": "حذف", + "end": "?" + }, + "content": { + "front": "این API دانش خارجی به", + "end": "دانش بیرونی. حذف این API همه آنها را باطل می کند. آیا مطمئن هستید که می خواهید این API را حذف کنید؟" + }, + "noConnectionContent": "آیا مطمئن هستید که این API را حذف خواهید کرد؟" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "یک API دانش خارجی را انتخاب کنید" + }, + "connectDatasetIntro": { + "content": { + "link": "یادگیری نحوه ایجاد یک API خارجی", + "front": "برای اتصال به یک پایگاه دانش خارجی، ابتدا باید یک API خارجی ایجاد کنید. لطفا با دقت بخوانید و به", + "end": ". سپس شناسه دانش مربوطه را پیدا کرده و آن را در فرم سمت چپ پر کنید. اگر تمام اطلاعات صحیح باشد، پس از کلیک بر روی دکمه اتصال، به طور خودکار به آزمون بازیابی در پایگاه دانش می رود." + }, + "learnMore": "بیشتر بدانید", + "title": "چگونه به یک پایگاه دانش خارجی متصل شویم؟" + }, + "connectHelper": { + "helper5": "قبل از استفاده از این ویژگی با دقت", + "helper3": ". اکیدا توصیه می کنیم که", + "helper2": "فقط قابلیت بازیابی پشتیبانی می شود", + "helper4": "مستندات راهنما را بخوانید", + "helper1": "از طریق API و شناسه پایگاه دانش به پایگاه های دانش خارجی متصل شوید. در حال حاضر،" + }, + "externalKnowledgeForm": { + "cancel": "لغو", + "connect": "اتصال" + }, + "externalAPIForm": { + "encrypted": { + "front": "توکن API شما رمزگذاری و با استفاده از", + "end": "فناوری." + }, + "apiKey": "کلید API", + "edit": "ویرایش", + "save": "ذخیره", + "cancel": "لغو", + "endpoint": "نقطه پایانی API", + "name": "نام" + }, + "editExternalAPITooltipTitle": "دانش مرتبط", + "externalKnowledgeNamePlaceholder": "لطفا نام پایگاه دانش را وارد کنید", + "externalAPIPanelDocumentation": "یادگیری نحوه ایجاد یک API دانش خارجی", + "externalKnowledgeDescriptionPlaceholder": "آنچه در این پایگاه دانش وجود دارد را توضیح دهید (اختیاری)", + "externalKnowledgeDescription": "توضیحات دانش", + "externalTag": "خارجی", + "externalKnowledgeIdPlaceholder": "لطفا شناسه دانش را وارد کنید", + "noExternalKnowledge": "هنوز هیچ API دانش خارجی وجود ندارد، برای ایجاد اینجا را کلیک کنید", + "externalAPIPanelTitle": "API دانش خارجی", + "connectDataset": "اتصال به یک پایگاه دانش خارجی", + "externalKnowledgeId": "شناسه دانش خارجی", + "externalAPI": "API خارجی", + "externalKnowledgeName": "نام دانش خارجی", + "createExternalAPI": "افزودن یک API دانش خارجی", + "createNewExternalAPI": "ایجاد یک API دانش خارجی جدید", + "learnHowToWriteGoodKnowledgeDescription": "یاد بگیرید که چگونه یک توضیحات دانش خوب بنویسید.", + "editExternalAPIFormTitle": "ویرایش API دانش خارجی", + "externalAPIPanelDescription": "API دانش خارجی برای اتصال به یک پایگاه دانش خارج از Dify و بازیابی دانش از آن پایگاه دانش استفاده می شود.", + "allExternalTip": "هنگامی که فقط از دانش خارجی استفاده می کنید، کاربر می تواند انتخاب کند که آیا مدل Rerank را فعال کند یا خیر. اگر فعال نباشد، تکه های بازیابی شده بر اساس امتیازات مرتب می شوند. هنگامی که استراتژی های بازیابی پایگاه های دانش مختلف متناقض باشد، نادرست خواهد بود.", + "mixtureInternalAndExternalTip": "مدل Rerank برای آمیختگی دانش درونی و بیرونی مورد نیاز است.", + "chunkingMode": { + "parentChild": "پدر و مادر و فرزند", + "general": "عمومی", + "graph": "گراف", + "qa": "پرسش و پاسخ" + }, + "parentMode": { + "fullDoc": "مستند کامل", + "paragraph": "پاراگراف" + }, + "batchAction": { + "disable": "غیر فعال کردن", + "cancel": "لغو", + "selected": "انتخاب", + "enable": "فعال", + "delete": "حذف", + "archive": "بایگانی" + }, + "enable": "فعال", + "documentsDisabled": "{{num}} اسناد غیرفعال - غیرفعال برای بیش از 30 روز", + "preprocessDocument": "{{عدد}} اسناد پیش پردازش", + "localDocs": "اسناد محلی", + "allKnowledge": "همه دانش ها", + "allKnowledgeDescription": "برای نمایش تمام دانش در این فضای کاری انتخاب کنید. فقط مالک فضای کاری می تواند تمام دانش را مدیریت کند.", + "metadata": { + "createMetadata": { + "name": "نام", + "title": "متادیتای جدید", + "namePlaceholder": "افزودن نام متاداده", + "back": "عقب", + "type": "نوع" + }, + "checkName": { + "invalid": "نام متاداده فقط می‌تواند شامل حروف کوچک، اعداد و زیرخط‌ها باشد و باید با یک حرف کوچک آغاز شود.", + "empty": "نام فراداده نمی‌تواند خالی باشد", + "tooLong": "نام متا داده نمی‌تواند بیشتر از {{max}} کاراکتر باشد" + }, + "batchEditMetadata": { + "multipleValue": "چندین ارزش", + "editDocumentsNum": "ویرایش {{num}} سند", + "applyToAllSelectDocumentTip": "به‌طور خودکار تمام متاداده‌های ویرایش شده و جدید فوق را برای تمام اسناد انتخاب شده ایجاد کنید، در غیر این صورت ویرایش متاداده فقط به اسنادی که دارای آن هستند اعمال خواهد شد.", + "applyToAllSelectDocument": "به تمام اسناد انتخاب شده اعمال کنید", + "editMetadata": "ویرایش متا داده ها" + }, + "selectMetadata": { + "search": "جستجوی متا داده", + "newAction": "متادیتای جدید", + "manageAction": "مدیریت" + }, + "datasetMetadata": { + "deleteContent": "آیا از حذف متاداده \"{{name}}\" اطمینان دارید؟", + "builtIn": "ساخته شده درون‌سازی", + "description": "شما می‌توانید تمام فراداده‌ها را در این دانش مدیریت کنید. تغییرات به هر سندی همزمان می‌شوند.", + "deleteTitle": "برای حذف تأیید کنید", + "disabled": "متعادل", + "values": "{{num}} مقدار", + "namePlaceholder": "نام متادیتا", + "addMetaData": "متادیتا اضافه کنید", + "builtInDescription": "متاداده‌های داخلی به‌طور خودکار استخراج و تولید می‌شوند. قبل از استفاده باید فعال شود و قابل ویرایش نیست.", + "name": "نام", + "rename": "تغییر نام" + }, + "documentMetadata": { + "technicalParameters": "پارامترهای فنی", + "documentInformation": "اطلاعات سند", + "startLabeling": "شروع برچسب‌گذاری", + "metadataToolTip": "متادیتا به عنوان یک فیلتر حیاتی عمل می‌کند که دقت و ارتباط اطلاعات بازیابی را بهبود می‌بخشد. شما می‌توانید متادیتا را برای این سند در اینجا ویرایش و اضافه کنید." + }, + "addMetadata": "متادیتا اضافه کنید", + "chooseTime": "زمانی را انتخاب کنید...", + "metadata": "متادیتا" + }, + "embeddingModelNotAvailable": "مدل جاسازی در دسترس نیست.", + "updated": "بروز رسانی", + "createFromPipeline": "ایجاد از پایپ لاین دانش", + "externalKnowledgeBase": "پایگاه دانش خارجی", + "serviceApi": { + "card": { + "apiKey": "کلید API", + "title": "رابط برنامه‌نویسی سرویس پشتیبان", + "apiReference": "مرجع API", + "endpoint": "نقطه انتهایی رابط برنامه‌نویسی سرویس" + }, + "disabled": "معلول", + "enabled": "در حال خدمت", + "title": "رابط برنامه‌نویسی سرویس" + }, + "docAllEnabled_one": "سند {{count}} فعال شد", + "docAllEnabled_other": "تمام اسناد {{count}} فعال شدند", + "partialEnabled_one": "مجموعاً {{count}} سند، {{num}} موجود", + "partialEnabled_other": "مجموع {{count}} سند، {{num}} موجود", + "cornerLabel": { + "unavailable": "غیر قابل دسترسی", + "pipeline": "خط لوله" + }, + "multimodal": "چندوجهی", + "imageUploader": { + "button": "کشیدن و رها کردن فایل یا پوشه، یا", + "browse": "مرور کردن", + "tip": "{{supportTypes}} (حداکثر {{batchCount}}، هر کدام {{size}} مگابایت)" + } +} diff --git a/web/i18n/fa-IR/dataset.ts b/web/i18n/fa-IR/dataset.ts deleted file mode 100644 index ac60e7c5c7..0000000000 --- a/web/i18n/fa-IR/dataset.ts +++ /dev/null @@ -1,253 +0,0 @@ -const translation = { - knowledge: 'دانش', - documentCount: ' سند', - wordCount: ' هزار کلمه', - appCount: ' برنامه‌های متصل', - createDataset: 'ایجاد دانش', - createDatasetIntro: 'داده‌های متنی خود را وارد کنید یا از طریق Webhook در زمان واقعی برای بهبود زمینه LLM بنویسید.', - deleteDatasetConfirmTitle: 'حذف این دانش؟', - deleteDatasetConfirmContent: - 'حذف دانش غیر قابل برگشت است. کاربران دیگر نمی‌توانند به دانش شما دسترسی پیدا کنند و تمام تنظیمات درخواست و گزارش‌ها به طور دائم حذف خواهند شد.', - datasetUsedByApp: 'دانش توسط برخی برنامه‌ها استفاده می‌شود. برنامه‌ها دیگر نمی‌توانند از این دانش استفاده کنند و تمام تنظیمات درخواست و گزارش‌ها به طور دائم حذف خواهند شد.', - datasetDeleted: 'دانش حذف شد', - datasetDeleteFailed: 'حذف دانش ناموفق بود', - didYouKnow: 'آیا می‌دانستید؟', - intro1: 'دانش می‌تواند در برنامه Dify ', - intro2: 'به عنوان یک زمینه', - intro3: 'ادغام شود', - intro4: 'یا می‌تواند ', - intro5: 'به عنوان یک افزونه مستقل ChatGPT برای انتشار', - intro6: 'ایجاد شود', - unavailable: 'در دسترس نیست', - datasets: 'دانش', - datasetsApi: 'دسترسی API', - retrieval: { - semantic_search: { - title: 'جستجوی برداری', - description: 'تولید جاسازی‌های جستجو و جستجوی بخش متنی که بیشترین شباهت را به نمایش برداری آن دارد.', - }, - full_text_search: { - title: 'جستجوی متن کامل', - description: 'فهرست کردن تمام اصطلاحات در سند، به کاربران اجازه می‌دهد هر اصطلاحی را جستجو کنند و بخش متنی مربوط به آن اصطلاحات را بازیابی کنند.', - }, - hybrid_search: { - title: 'جستجوی هیبریدی', - description: 'جستجوی متن کامل و برداری را همزمان اجرا می‌کند، دوباره رتبه‌بندی می‌کند تا بهترین تطابق برای درخواست کاربر انتخاب شود. کاربران می‌توانند وزن‌ها را تنظیم کنند یا به یک مدل دوباره رتبه‌بندی تنظیم کنند.', - recommend: 'توصیه', - }, - invertedIndex: { - }, - change: 'تغییر', - changeRetrievalMethod: 'تغییر روش بازیابی', - keyword_search: { - title: 'شاخص معکوس', - description: 'شاخص معکوس ساختاری است که برای بازیابی کارآمد استفاده می شود. هر اصطلاح که بر اساس اصطلاحات سازماندهی شده است، به اسناد یا صفحات وب حاوی آن اشاره می کند.', - }, - }, - docsFailedNotice: 'اسناد نتوانستند فهرست‌بندی شوند', - retry: 'تلاش مجدد', - indexingTechnique: { - high_quality: 'HQ', - economy: 'ECO', - }, - indexingMethod: { - semantic_search: 'برداری', - full_text_search: 'متن کامل', - hybrid_search: 'هیبریدی', - invertedIndex: 'معکوس', - }, - mixtureHighQualityAndEconomicTip: 'مدل دوباره رتبه‌بندی برای ترکیب پایگاه‌های دانش با کیفیت بالا و اقتصادی لازم است.', - inconsistentEmbeddingModelTip: 'مدل دوباره رتبه‌بندی لازم است اگر مدل‌های جاسازی پایگاه‌های دانش انتخابی ناسازگار باشند.', - retrievalSettings: 'تنظیمات بازیابی', - rerankSettings: 'تنظیمات دوباره رتبه‌بندی', - weightedScore: { - title: 'امتیاز وزنی', - description: 'با تنظیم وزن‌های اختصاص داده شده، این استراتژی دوباره رتبه‌بندی تعیین می‌کند که آیا اولویت با تطابق معنایی یا کلمات کلیدی است.', - semanticFirst: 'اولویت معنایی', - keywordFirst: 'اولویت کلمه کلیدی', - customized: 'سفارشی‌سازی شده', - semantic: 'معنایی', - keyword: 'کلمه کلیدی', - }, - nTo1RetrievalLegacy: 'بازیابی N-to-1 از سپتامبر به طور رسمی منسوخ خواهد شد. توصیه می‌شود از بازیابی چند مسیر جدید استفاده کنید تا نتایج بهتری بدست آورید.', - nTo1RetrievalLegacyLink: 'بیشتر بدانید', - nTo1RetrievalLegacyLinkText: ' بازیابی N-to-1 از سپتامبر به طور رسمی منسوخ خواهد شد.', - defaultRetrievalTip: 'بازیابی چند مسیره به طور پیش فرض استفاده می شود. دانش از چندین پایگاه دانش بازیابی می شود و سپس دوباره رتبه بندی می شود.', - editExternalAPIConfirmWarningContent: { - front: 'این API دانش خارجی به', - end: 'دانش خارجی ، و این اصلاح برای همه آنها اعمال خواهد شد. آیا مطمئن هستید که می خواهید این تغییر را ذخیره کنید؟', - }, - editExternalAPIFormWarning: { - front: 'این API خارجی به', - end: 'دانش بیرونی', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - front: 'حذف', - end: '?', - }, - content: { - front: 'این API دانش خارجی به', - end: 'دانش بیرونی. حذف این API همه آنها را باطل می کند. آیا مطمئن هستید که می خواهید این API را حذف کنید؟', - }, - noConnectionContent: 'آیا مطمئن هستید که این API را حذف خواهید کرد؟', - }, - selectExternalKnowledgeAPI: { - placeholder: 'یک API دانش خارجی را انتخاب کنید', - }, - connectDatasetIntro: { - content: { - link: 'یادگیری نحوه ایجاد یک API خارجی', - front: 'برای اتصال به یک پایگاه دانش خارجی، ابتدا باید یک API خارجی ایجاد کنید. لطفا با دقت بخوانید و به', - end: '. سپس شناسه دانش مربوطه را پیدا کرده و آن را در فرم سمت چپ پر کنید. اگر تمام اطلاعات صحیح باشد، پس از کلیک بر روی دکمه اتصال، به طور خودکار به آزمون بازیابی در پایگاه دانش می رود.', - }, - learnMore: 'بیشتر بدانید', - title: 'چگونه به یک پایگاه دانش خارجی متصل شویم؟', - }, - connectHelper: { - helper5: 'قبل از استفاده از این ویژگی با دقت', - helper3: '. اکیدا توصیه می کنیم که', - helper2: 'فقط قابلیت بازیابی پشتیبانی می شود', - helper4: 'مستندات راهنما را بخوانید', - helper1: 'از طریق API و شناسه پایگاه دانش به پایگاه های دانش خارجی متصل شوید. در حال حاضر،', - }, - externalKnowledgeForm: { - cancel: 'لغو', - connect: 'اتصال', - }, - externalAPIForm: { - encrypted: { - front: 'توکن API شما رمزگذاری و با استفاده از', - end: 'فناوری.', - }, - apiKey: 'کلید API', - edit: 'ویرایش', - save: 'ذخیره', - cancel: 'لغو', - endpoint: 'نقطه پایانی API', - name: 'نام', - }, - editExternalAPITooltipTitle: 'دانش مرتبط', - externalKnowledgeNamePlaceholder: 'لطفا نام پایگاه دانش را وارد کنید', - externalAPIPanelDocumentation: 'یادگیری نحوه ایجاد یک API دانش خارجی', - externalKnowledgeDescriptionPlaceholder: 'آنچه در این پایگاه دانش وجود دارد را توضیح دهید (اختیاری)', - externalKnowledgeDescription: 'توضیحات دانش', - externalTag: 'خارجی', - externalKnowledgeIdPlaceholder: 'لطفا شناسه دانش را وارد کنید', - noExternalKnowledge: 'هنوز هیچ API دانش خارجی وجود ندارد، برای ایجاد اینجا را کلیک کنید', - externalAPIPanelTitle: 'API دانش خارجی', - connectDataset: 'اتصال به یک پایگاه دانش خارجی', - externalKnowledgeId: 'شناسه دانش خارجی', - externalAPI: 'API خارجی', - externalKnowledgeName: 'نام دانش خارجی', - createExternalAPI: 'افزودن یک API دانش خارجی', - createNewExternalAPI: 'ایجاد یک API دانش خارجی جدید', - learnHowToWriteGoodKnowledgeDescription: 'یاد بگیرید که چگونه یک توضیحات دانش خوب بنویسید.', - editExternalAPIFormTitle: 'ویرایش API دانش خارجی', - externalAPIPanelDescription: 'API دانش خارجی برای اتصال به یک پایگاه دانش خارج از Dify و بازیابی دانش از آن پایگاه دانش استفاده می شود.', - allExternalTip: 'هنگامی که فقط از دانش خارجی استفاده می کنید، کاربر می تواند انتخاب کند که آیا مدل Rerank را فعال کند یا خیر. اگر فعال نباشد، تکه های بازیابی شده بر اساس امتیازات مرتب می شوند. هنگامی که استراتژی های بازیابی پایگاه های دانش مختلف متناقض باشد، نادرست خواهد بود.', - mixtureInternalAndExternalTip: 'مدل Rerank برای آمیختگی دانش درونی و بیرونی مورد نیاز است.', - chunkingMode: { - parentChild: 'پدر و مادر و فرزند', - general: 'عمومی', - graph: 'گراف', - qa: 'پرسش و پاسخ', - }, - parentMode: { - fullDoc: 'مستند کامل', - paragraph: 'پاراگراف', - }, - batchAction: { - disable: 'غیر فعال کردن', - cancel: 'لغو', - selected: 'انتخاب', - enable: 'فعال', - delete: 'حذف', - archive: 'بایگانی', - }, - enable: 'فعال', - documentsDisabled: '{{num}} اسناد غیرفعال - غیرفعال برای بیش از 30 روز', - preprocessDocument: '{{عدد}} اسناد پیش پردازش', - localDocs: 'اسناد محلی', - allKnowledge: 'همه دانش ها', - allKnowledgeDescription: 'برای نمایش تمام دانش در این فضای کاری انتخاب کنید. فقط مالک فضای کاری می تواند تمام دانش را مدیریت کند.', - metadata: { - createMetadata: { - name: 'نام', - title: 'متادیتای جدید', - namePlaceholder: 'افزودن نام متاداده', - back: 'عقب', - type: 'نوع', - }, - checkName: { - invalid: 'نام متاداده فقط می‌تواند شامل حروف کوچک، اعداد و زیرخط‌ها باشد و باید با یک حرف کوچک آغاز شود.', - empty: 'نام فراداده نمی‌تواند خالی باشد', - tooLong: 'نام متا داده نمی‌تواند بیشتر از {{max}} کاراکتر باشد', - }, - batchEditMetadata: { - multipleValue: 'چندین ارزش', - editDocumentsNum: 'ویرایش {{num}} سند', - applyToAllSelectDocumentTip: 'به‌طور خودکار تمام متاداده‌های ویرایش شده و جدید فوق را برای تمام اسناد انتخاب شده ایجاد کنید، در غیر این صورت ویرایش متاداده فقط به اسنادی که دارای آن هستند اعمال خواهد شد.', - applyToAllSelectDocument: 'به تمام اسناد انتخاب شده اعمال کنید', - editMetadata: 'ویرایش متا داده ها', - }, - selectMetadata: { - search: 'جستجوی متا داده', - newAction: 'متادیتای جدید', - manageAction: 'مدیریت', - }, - datasetMetadata: { - deleteContent: 'آیا از حذف متاداده "{{name}}" اطمینان دارید؟', - builtIn: 'ساخته شده درون‌سازی', - description: 'شما می‌توانید تمام فراداده‌ها را در این دانش مدیریت کنید. تغییرات به هر سندی همزمان می‌شوند.', - deleteTitle: 'برای حذف تأیید کنید', - disabled: 'متعادل', - values: '{{num}} مقدار', - namePlaceholder: 'نام متادیتا', - addMetaData: 'متادیتا اضافه کنید', - builtInDescription: 'متاداده‌های داخلی به‌طور خودکار استخراج و تولید می‌شوند. قبل از استفاده باید فعال شود و قابل ویرایش نیست.', - name: 'نام', - rename: 'تغییر نام', - }, - documentMetadata: { - technicalParameters: 'پارامترهای فنی', - documentInformation: 'اطلاعات سند', - startLabeling: 'شروع برچسب‌گذاری', - metadataToolTip: 'متادیتا به عنوان یک فیلتر حیاتی عمل می‌کند که دقت و ارتباط اطلاعات بازیابی را بهبود می‌بخشد. شما می‌توانید متادیتا را برای این سند در اینجا ویرایش و اضافه کنید.', - }, - addMetadata: 'متادیتا اضافه کنید', - chooseTime: 'زمانی را انتخاب کنید...', - metadata: 'متادیتا', - }, - embeddingModelNotAvailable: 'مدل جاسازی در دسترس نیست.', - updated: 'بروز رسانی', - createFromPipeline: 'ایجاد از پایپ لاین دانش', - externalKnowledgeBase: 'پایگاه دانش خارجی', - serviceApi: { - card: { - apiKey: 'کلید API', - title: 'رابط برنامه‌نویسی سرویس پشتیبان', - apiReference: 'مرجع API', - endpoint: 'نقطه انتهایی رابط برنامه‌نویسی سرویس', - }, - disabled: 'معلول', - enabled: 'در حال خدمت', - title: 'رابط برنامه‌نویسی سرویس', - }, - docAllEnabled_one: 'سند {{count}} فعال شد', - docAllEnabled_other: 'تمام اسناد {{count}} فعال شدند', - partialEnabled_one: 'مجموعاً {{count}} سند، {{num}} موجود', - partialEnabled_other: 'مجموع {{count}} سند، {{num}} موجود', - cornerLabel: { - unavailable: 'غیر قابل دسترسی', - pipeline: 'خط لوله', - }, - multimodal: 'چندوجهی', - imageUploader: { - button: 'کشیدن و رها کردن فایل یا پوشه، یا', - browse: 'مرور کردن', - tip: '{{supportTypes}} (حداکثر {{batchCount}}، هر کدام {{size}} مگابایت)', - }, -} - -export default translation diff --git a/web/i18n/fa-IR/education.json b/web/i18n/fa-IR/education.json new file mode 100644 index 0000000000..072ed57a87 --- /dev/null +++ b/web/i18n/fa-IR/education.json @@ -0,0 +1,74 @@ +{ + "toVerifiedTip": { + "coupon": "کوپن انحصاری ۱۰۰٪", + "end": "برای طرح حرفه‌ای دیفی.", + "front": "شما اکنون برای وضعیت تأیید شده آموزشی واجد شرایط هستید. لطفاً اطلاعات تحصیلی خود را در زیر وارد کنید تا فرآیند را کامل کرده و یک دریافت کنید." + }, + "form": { + "schoolName": { + "title": "نام مدرسه شما", + "placeholder": "نام رسمی و کامل مدرسه خود را وارد کنید" + }, + "schoolRole": { + "option": { + "teacher": "معلم", + "student": "دانش آموز", + "administrator": "مدیر مدرسه" + }, + "title": "نقش شما در مدرسه" + }, + "terms": { + "desc": { + "privacyPolicy": "سیاست حریم خصوصی", + "end": "با ارسال:", + "and": "و", + "termsOfService": "شرایط خدمات", + "front": "اطلاعات شما و استفاده از وضعیت تأیید شده آموزشی تابع شرایط ما است." + }, + "option": { + "age": "من تأیید می‌کنم که حداقل ۱۸ سال سن دارم", + "inSchool": "من تأیید می‌کنم که در مؤسسه‌ای که نام برده شده، ثبت‌نام شده یا استخدام شده‌ام. دیفی ممکن است از من بخواهد مدرکی برای ثبت‌نام/استخدام ارائه دهم. اگر صلاحیتم را اشتباه نمایم، موافقت می‌کنم که هر گونه هزینه‌ای که به‌خاطر وضعیت تحصیلی من ابتدا معاف شده، پرداخت کنم." + }, + "title": "شرایط و توافقات" + } + }, + "submitError": "ارسال فرم ناموفق بود. لطفا بعداً دوباره تلاش کنید.", + "emailLabel": "ایمیل فعلی شما", + "currentSigned": "اکنون به عنوان", + "rejectContent": "متاسفانه، شما واجد شرایط وضعیت تأیید شده آموزشی نیستید و به همین دلیل نمی‌توانید کوپن انحصاری ۱۰۰٪ برای طرح حرفه‌ای Dify را در صورت استفاده از این آدرس ایمیل دریافت کنید.", + "learn": "یاد بگیرید چگونه مدارک تحصیلی خود را تأیید کنید", + "successContent": "ما یک کوپن تخفیف ۱۰۰٪ برای طرح حرفه‌ای Dify به حساب شما صادر کرده‌ایم. این کوپن به مدت یک سال اعتبار دارد، لطفاً در بازه اعتبار از آن استفاده کنید.", + "toVerified": "تحصیلات خود را تأیید کنید", + "rejectTitle": "تأییدیه آموزشی دیفی شما رد شده است", + "submit": "ارسال", + "successTitle": "شما آموزش دیفی تأیید شده دارید", + "notice": { + "expired": { + "summary": { + "line1": "شما هنوز می‌توانید به دیفی دسترسی داشته باشید و از آن استفاده کنید.", + "line2": "با این حال، شما دیگر واجد شرایط برای دریافت کوپن‌های تخفیف آموزشی جدید نیستید." + }, + "title": "وضعیت تحصیلی شما منقضی شده است" + }, + "isAboutToExpire": { + "summary": "نگران نباشید — این بر اشتراک فعلی شما تأثیر نخواهد گذاشت، اما زمانیکه تمدید شود، شما تخفیف آموزشی را دریافت نخواهید کرد مگر اینکه وضعیت خود را دوباره تأیید کنید.", + "title": "وضعیت تحصیلی شما در {{date}} منقضی خواهد شد" + }, + "stillInEducation": { + "title": "آیا هنوز در حال تحصیل هستید؟", + "expired": "هم‌اکنون دوباره تأیید کنید تا یک کوپن جدید برای سال تحصیلی آینده دریافت کنید. ما آن را به حساب شما اضافه خواهیم کرد و می‌توانید از آن برای ارتقاء بعدی استفاده کنید.", + "isAboutToExpire": "در حال حاضر دوباره تأیید کنید تا یک کوپن جدید برای سال تحصیلی آینده دریافت کنید. این کوپن به حساب شما ذخیره خواهد شد و در زمان تمدید بعدی شما آماده استفاده است." + }, + "alreadyGraduated": { + "title": "قبلاً فارغ‌التحصیل شده‌ای؟", + "expired": "هر زمان که بخواهید می‌توانید ارتقا دهید تا دسترسی کامل به ویژگی‌های پرداختی داشته باشید.", + "isAboutToExpire": "اشتراک فعلی شما همچنان فعال خواهد ماند. وقتی که به پایان رسید، به طرح Sandbox منتقل خواهید شد، یا می‌توانید هر زمان به منظور بازگرداندن دسترسی کامل به ویژگی‌های پرداختی، ارتقا دهید." + }, + "action": { + "dismiss": "رد کردن", + "upgrade": "ارتقاء", + "reVerify": "دوباره تأیید کنید" + }, + "dateFormat": "MM/DD/YYYY" + } +} diff --git a/web/i18n/fa-IR/education.ts b/web/i18n/fa-IR/education.ts deleted file mode 100644 index 8befbd4517..0000000000 --- a/web/i18n/fa-IR/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerifiedTip: { - coupon: 'کوپن انحصاری ۱۰۰٪', - end: 'برای طرح حرفه‌ای دیفی.', - front: 'شما اکنون برای وضعیت تأیید شده آموزشی واجد شرایط هستید. لطفاً اطلاعات تحصیلی خود را در زیر وارد کنید تا فرآیند را کامل کرده و یک دریافت کنید.', - }, - form: { - schoolName: { - title: 'نام مدرسه شما', - placeholder: 'نام رسمی و کامل مدرسه خود را وارد کنید', - }, - schoolRole: { - option: { - teacher: 'معلم', - student: 'دانش آموز', - administrator: 'مدیر مدرسه', - }, - title: 'نقش شما در مدرسه', - }, - terms: { - desc: { - privacyPolicy: 'سیاست حریم خصوصی', - end: 'با ارسال:', - and: 'و', - termsOfService: 'شرایط خدمات', - front: 'اطلاعات شما و استفاده از وضعیت تأیید شده آموزشی تابع شرایط ما است.', - }, - option: { - age: 'من تأیید می‌کنم که حداقل ۱۸ سال سن دارم', - inSchool: 'من تأیید می‌کنم که در مؤسسه‌ای که نام برده شده، ثبت‌نام شده یا استخدام شده‌ام. دیفی ممکن است از من بخواهد مدرکی برای ثبت‌نام/استخدام ارائه دهم. اگر صلاحیتم را اشتباه نمایم، موافقت می‌کنم که هر گونه هزینه‌ای که به‌خاطر وضعیت تحصیلی من ابتدا معاف شده، پرداخت کنم.', - }, - title: 'شرایط و توافقات', - }, - }, - submitError: 'ارسال فرم ناموفق بود. لطفا بعداً دوباره تلاش کنید.', - emailLabel: 'ایمیل فعلی شما', - currentSigned: 'اکنون به عنوان', - rejectContent: 'متاسفانه، شما واجد شرایط وضعیت تأیید شده آموزشی نیستید و به همین دلیل نمی‌توانید کوپن انحصاری ۱۰۰٪ برای طرح حرفه‌ای Dify را در صورت استفاده از این آدرس ایمیل دریافت کنید.', - learn: 'یاد بگیرید چگونه مدارک تحصیلی خود را تأیید کنید', - successContent: 'ما یک کوپن تخفیف ۱۰۰٪ برای طرح حرفه‌ای Dify به حساب شما صادر کرده‌ایم. این کوپن به مدت یک سال اعتبار دارد، لطفاً در بازه اعتبار از آن استفاده کنید.', - toVerified: 'تحصیلات خود را تأیید کنید', - rejectTitle: 'تأییدیه آموزشی دیفی شما رد شده است', - submit: 'ارسال', - successTitle: 'شما آموزش دیفی تأیید شده دارید', - notice: { - expired: { - summary: { - line1: 'شما هنوز می‌توانید به دیفی دسترسی داشته باشید و از آن استفاده کنید.', - line2: 'با این حال، شما دیگر واجد شرایط برای دریافت کوپن‌های تخفیف آموزشی جدید نیستید.', - }, - title: 'وضعیت تحصیلی شما منقضی شده است', - }, - isAboutToExpire: { - summary: 'نگران نباشید — این بر اشتراک فعلی شما تأثیر نخواهد گذاشت، اما زمانیکه تمدید شود، شما تخفیف آموزشی را دریافت نخواهید کرد مگر اینکه وضعیت خود را دوباره تأیید کنید.', - title: 'وضعیت تحصیلی شما در {{date}} منقضی خواهد شد', - }, - stillInEducation: { - title: 'آیا هنوز در حال تحصیل هستید؟', - expired: 'هم‌اکنون دوباره تأیید کنید تا یک کوپن جدید برای سال تحصیلی آینده دریافت کنید. ما آن را به حساب شما اضافه خواهیم کرد و می‌توانید از آن برای ارتقاء بعدی استفاده کنید.', - isAboutToExpire: 'در حال حاضر دوباره تأیید کنید تا یک کوپن جدید برای سال تحصیلی آینده دریافت کنید. این کوپن به حساب شما ذخیره خواهد شد و در زمان تمدید بعدی شما آماده استفاده است.', - }, - alreadyGraduated: { - title: 'قبلاً فارغ‌التحصیل شده‌ای؟', - expired: 'هر زمان که بخواهید می‌توانید ارتقا دهید تا دسترسی کامل به ویژگی‌های پرداختی داشته باشید.', - isAboutToExpire: 'اشتراک فعلی شما همچنان فعال خواهد ماند. وقتی که به پایان رسید، به طرح Sandbox منتقل خواهید شد، یا می‌توانید هر زمان به منظور بازگرداندن دسترسی کامل به ویژگی‌های پرداختی، ارتقا دهید.', - }, - action: { - dismiss: 'رد کردن', - upgrade: 'ارتقاء', - reVerify: 'دوباره تأیید کنید', - }, - dateFormat: 'MM/DD/YYYY', - }, -} - -export default translation diff --git a/web/i18n/fa-IR/explore.json b/web/i18n/fa-IR/explore.json new file mode 100644 index 0000000000..52e98bbd21 --- /dev/null +++ b/web/i18n/fa-IR/explore.json @@ -0,0 +1,42 @@ +{ + "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": "منابع انسانی", + "Agent": "عامل", + "Workflow": "گردش", + "Entertainment": "سرگرمی" + } +} diff --git a/web/i18n/fa-IR/explore.ts b/web/i18n/fa-IR/explore.ts deleted file mode 100644 index b2c6708b54..0000000000 --- a/web/i18n/fa-IR/explore.ts +++ /dev/null @@ -1,44 +0,0 @@ -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: 'منابع انسانی', - Agent: 'عامل', - Workflow: 'گردش', - Entertainment: 'سرگرمی', - }, -} - -export default translation diff --git a/web/i18n/fa-IR/layout.json b/web/i18n/fa-IR/layout.json new file mode 100644 index 0000000000..596d3b39e6 --- /dev/null +++ b/web/i18n/fa-IR/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "expandSidebar": "نوار کناری را گسترش دهید", + "collapseSidebar": "جمع کردن نوار کناری" + } +} diff --git a/web/i18n/fa-IR/layout.ts b/web/i18n/fa-IR/layout.ts deleted file mode 100644 index 58d41ac00f..0000000000 --- a/web/i18n/fa-IR/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - expandSidebar: 'نوار کناری را گسترش دهید', - collapseSidebar: 'جمع کردن نوار کناری', - }, -} - -export default translation diff --git a/web/i18n/fa-IR/login.json b/web/i18n/fa-IR/login.json new file mode 100644 index 0000000000..f666b2b7af --- /dev/null +++ b/web/i18n/fa-IR/login.json @@ -0,0 +1,124 @@ +{ + "pageTitle": "هی، بیایید شروع کنیم!👋", + "welcome": "به Dify خوش آمدید، لطفا برای ادامه وارد شوید.", + "email": "آدرس ایمیل", + "emailPlaceholder": "ایمیل شما", + "password": "رمز عبور", + "passwordPlaceholder": "رمز عبور شما", + "name": "نام کاربری", + "namePlaceholder": "نام کاربری شما", + "forget": "رمز عبور خود را فراموش کرده‌اید؟", + "signBtn": "ورود", + "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": "حساب قبلاً اولیه شده است", + "forgotPassword": "رمز عبور خود را فراموش کرده‌اید؟", + "resetLinkSent": "لینک بازنشانی ارسال شد", + "sendResetLink": "ارسال لینک بازنشانی", + "backToSignIn": "بازگشت به ورود", + "forgotPasswordDesc": "لطفاً آدرس ایمیل خود را وارد کنید تا رمز عبور خود را بازنشانی کنید. ما یک ایمیل با دستورالعمل‌های بازنشانی برای شما ارسال خواهیم کرد.", + "checkEmailForResetLink": "لطفاً ایمیل خود را برای لینک بازنشانی رمز عبور بررسی کنید. اگر در عرض چند دقیقه ظاهر نشد، پوشه اسپم خود را بررسی کنید.", + "passwordChanged": "اکنون وارد شوید", + "changePassword": "تغییر رمز عبور", + "changePasswordTip": "لطفاً یک رمز عبور جدید برای حساب خود وارد کنید", + "invalidToken": "توکن نامعتبر یا منقضی شده است", + "confirmPassword": "تایید رمز عبور", + "confirmPasswordPlaceholder": "رمز عبور جدید خود را تایید کنید", + "passwordChangedTip": "رمز عبور شما با موفقیت تغییر یافت", + "error": { + "emailEmpty": "آدرس ایمیل لازم است", + "emailInValid": "لطفاً یک آدرس ایمیل معتبر وارد کنید", + "nameEmpty": "نام لازم است", + "passwordEmpty": "رمز عبور لازم است", + "passwordLengthInValid": "رمز عبور باید حداقل ۸ کاراکتر باشد", + "passwordInvalid": "رمز عبور باید شامل حروف و اعداد باشد و طول آن بیشتر از ۸ کاراکتر باشد", + "registrationNotAllowed": "حساب پیدا نشد. لطفا برای ثبت نام با مدیر سیستم تماس حاصل فرمایید.", + "invalidEmailOrPassword": "ایمیل یا رمز عبور نامعتبر است." + }, + "license": { + "tip": "قبل از شروع Dify Community Edition، GitHub را بخوانید", + "link": "مجوز منبع باز" + }, + "join": "عضویت", + "joinTipStart": "شما را دعوت می‌کنیم به", + "joinTipEnd": "تیم در Dify", + "invalid": "لینک منقضی شده است", + "explore": "کاوش Dify", + "activatedTipStart": "شما به", + "activatedTipEnd": "تیم پیوسته‌اید", + "activated": "اکنون وارد شوید", + "adminInitPassword": "رمز عبور اولیه مدیر", + "validate": "اعتبارسنجی", + "checkCode": { + "verify": "تایید", + "verificationCode": "کد تأیید", + "invalidCode": "کد نامعتبر", + "emptyCode": "کد مورد نیاز است", + "didNotReceiveCode": "کد را دریافت نکردید؟", + "verificationCodePlaceholder": "کد 6 رقمی را وارد کنید", + "useAnotherMethod": "از روش دیگری استفاده کنید", + "checkYourEmail": "ایمیل خود را بررسی کنید", + "validTime": "به خاطر داشته باشید که کد 5 دقیقه اعتبار دارد", + "resend": "ارسال مجدد", + "tipsPrefix": "ما یک کد تأیید می‌فرستیم به " + }, + "or": "یا", + "back": "بازگشت", + "backToLogin": "بازگشت به ورود", + "changePasswordBtn": "تنظیم رمز عبور", + "continueWithCode": "با کد ادامه دهید", + "withSSO": "با SSO ادامه دهید", + "resetPassword": "بازنشانی رمز عبور", + "usePassword": "از رمز عبور استفاده کنید", + "enterYourName": "لطفا نام کاربری خود را وارد کنید", + "useVerificationCode": "از کد تأیید استفاده کنید", + "sendVerificationCode": "ارسال کد تأیید", + "setYourAccount": "حساب خود را تنظیم کنید", + "noLoginMethod": "روش احراز هویت پیکربندی نشده است", + "noLoginMethodTip": "لطفا برای افزودن روش احراز هویت با مدیر سیستم تماس بگیرید.", + "resetPasswordDesc": "ایمیلی را که برای ثبت نام در Dify استفاده کرده اید تایپ کنید و ما یک ایمیل بازنشانی رمز عبور برای شما ارسال خواهیم کرد.", + "licenseInactive": "مجوز غیر فعال", + "licenseLost": "مجوز گم شده است", + "licenseExpired": "مجوز منقضی شده است", + "licenseExpiredTip": "مجوز Dify Enterprise برای فضای کاری شما منقضی شده است. لطفا برای ادامه استفاده از Dify با سرپرست خود تماس بگیرید.", + "licenseInactiveTip": "مجوز Dify Enterprise برای فضای کاری شما غیرفعال است. لطفا برای ادامه استفاده از Dify با سرپرست خود تماس بگیرید.", + "licenseLostTip": "اتصال سرور مجوز Dify انجام نشد. لطفا برای ادامه استفاده از Dify با سرپرست خود تماس بگیرید.", + "webapp": { + "disabled": "احراز هویت وب اپ غیرفعال است. لطفاً با مدیر سیستم تماس بگیرید تا آن را فعال کند. می‌توانید سعی کنید مستقیماً از اپلیکیشن استفاده کنید.", + "noLoginMethodTip": "لطفاً با مدیر سیستم تماس بگیرید تا یک روش احراز هویت اضافه کند.", + "noLoginMethod": "روش احراز هویت برای برنامه وب پیکربندی نشده است", + "login": "ورود" + }, + "signup": { + "signIn": "ورود", + "createAccount": "حساب کاربری خود را ایجاد کنید", + "haveAccount": "قبلاً حساب کاربری دارید؟", + "signUp": "ثبت نام", + "welcome": "👋 خوش آمدید! لطفاً جزئیات را برای شروع پر کنید.", + "noAccount": "حساب کاربری ندارید؟", + "verifyMail": "ادامه با کد تأیید" + }, + "pageTitleForE": "هی، بیا شروع کنیم!" +} diff --git a/web/i18n/fa-IR/login.ts b/web/i18n/fa-IR/login.ts deleted file mode 100644 index 83382f3c9d..0000000000 --- a/web/i18n/fa-IR/login.ts +++ /dev/null @@ -1,126 +0,0 @@ -const translation = { - pageTitle: 'هی، بیایید شروع کنیم!👋', - welcome: 'به Dify خوش آمدید، لطفا برای ادامه وارد شوید.', - email: 'آدرس ایمیل', - emailPlaceholder: 'ایمیل شما', - password: 'رمز عبور', - passwordPlaceholder: 'رمز عبور شما', - name: 'نام کاربری', - namePlaceholder: 'نام کاربری شما', - forget: 'رمز عبور خود را فراموش کرده‌اید؟', - signBtn: 'ورود', - 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: 'حساب قبلاً اولیه شده است', - forgotPassword: 'رمز عبور خود را فراموش کرده‌اید؟', - resetLinkSent: 'لینک بازنشانی ارسال شد', - sendResetLink: 'ارسال لینک بازنشانی', - backToSignIn: 'بازگشت به ورود', - forgotPasswordDesc: 'لطفاً آدرس ایمیل خود را وارد کنید تا رمز عبور خود را بازنشانی کنید. ما یک ایمیل با دستورالعمل‌های بازنشانی برای شما ارسال خواهیم کرد.', - checkEmailForResetLink: 'لطفاً ایمیل خود را برای لینک بازنشانی رمز عبور بررسی کنید. اگر در عرض چند دقیقه ظاهر نشد، پوشه اسپم خود را بررسی کنید.', - passwordChanged: 'اکنون وارد شوید', - changePassword: 'تغییر رمز عبور', - changePasswordTip: 'لطفاً یک رمز عبور جدید برای حساب خود وارد کنید', - invalidToken: 'توکن نامعتبر یا منقضی شده است', - confirmPassword: 'تایید رمز عبور', - confirmPasswordPlaceholder: 'رمز عبور جدید خود را تایید کنید', - passwordChangedTip: 'رمز عبور شما با موفقیت تغییر یافت', - error: { - emailEmpty: 'آدرس ایمیل لازم است', - emailInValid: 'لطفاً یک آدرس ایمیل معتبر وارد کنید', - nameEmpty: 'نام لازم است', - passwordEmpty: 'رمز عبور لازم است', - passwordLengthInValid: 'رمز عبور باید حداقل ۸ کاراکتر باشد', - passwordInvalid: 'رمز عبور باید شامل حروف و اعداد باشد و طول آن بیشتر از ۸ کاراکتر باشد', - registrationNotAllowed: 'حساب پیدا نشد. لطفا برای ثبت نام با مدیر سیستم تماس حاصل فرمایید.', - invalidEmailOrPassword: 'ایمیل یا رمز عبور نامعتبر است.', - }, - license: { - tip: 'قبل از شروع Dify Community Edition، GitHub را بخوانید', - link: 'مجوز منبع باز', - }, - join: 'عضویت', - joinTipStart: 'شما را دعوت می‌کنیم به', - joinTipEnd: 'تیم در Dify', - invalid: 'لینک منقضی شده است', - explore: 'کاوش Dify', - activatedTipStart: 'شما به', - activatedTipEnd: 'تیم پیوسته‌اید', - activated: 'اکنون وارد شوید', - adminInitPassword: 'رمز عبور اولیه مدیر', - validate: 'اعتبارسنجی', - checkCode: { - verify: 'تایید', - verificationCode: 'کد تأیید', - invalidCode: 'کد نامعتبر', - emptyCode: 'کد مورد نیاز است', - didNotReceiveCode: 'کد را دریافت نکردید؟', - verificationCodePlaceholder: 'کد 6 رقمی را وارد کنید', - useAnotherMethod: 'از روش دیگری استفاده کنید', - checkYourEmail: 'ایمیل خود را بررسی کنید', - validTime: 'به خاطر داشته باشید که کد 5 دقیقه اعتبار دارد', - resend: 'ارسال مجدد', - tipsPrefix: 'ما یک کد تأیید می‌فرستیم به ', - }, - or: 'یا', - back: 'بازگشت', - backToLogin: 'بازگشت به ورود', - changePasswordBtn: 'تنظیم رمز عبور', - continueWithCode: 'با کد ادامه دهید', - withSSO: 'با SSO ادامه دهید', - resetPassword: 'بازنشانی رمز عبور', - usePassword: 'از رمز عبور استفاده کنید', - enterYourName: 'لطفا نام کاربری خود را وارد کنید', - useVerificationCode: 'از کد تأیید استفاده کنید', - sendVerificationCode: 'ارسال کد تأیید', - setYourAccount: 'حساب خود را تنظیم کنید', - noLoginMethod: 'روش احراز هویت پیکربندی نشده است', - noLoginMethodTip: 'لطفا برای افزودن روش احراز هویت با مدیر سیستم تماس بگیرید.', - resetPasswordDesc: 'ایمیلی را که برای ثبت نام در Dify استفاده کرده اید تایپ کنید و ما یک ایمیل بازنشانی رمز عبور برای شما ارسال خواهیم کرد.', - licenseInactive: 'مجوز غیر فعال', - licenseLost: 'مجوز گم شده است', - licenseExpired: 'مجوز منقضی شده است', - licenseExpiredTip: 'مجوز Dify Enterprise برای فضای کاری شما منقضی شده است. لطفا برای ادامه استفاده از Dify با سرپرست خود تماس بگیرید.', - licenseInactiveTip: 'مجوز Dify Enterprise برای فضای کاری شما غیرفعال است. لطفا برای ادامه استفاده از Dify با سرپرست خود تماس بگیرید.', - licenseLostTip: 'اتصال سرور مجوز Dify انجام نشد. لطفا برای ادامه استفاده از Dify با سرپرست خود تماس بگیرید.', - webapp: { - disabled: 'احراز هویت وب اپ غیرفعال است. لطفاً با مدیر سیستم تماس بگیرید تا آن را فعال کند. می‌توانید سعی کنید مستقیماً از اپلیکیشن استفاده کنید.', - noLoginMethodTip: 'لطفاً با مدیر سیستم تماس بگیرید تا یک روش احراز هویت اضافه کند.', - noLoginMethod: 'روش احراز هویت برای برنامه وب پیکربندی نشده است', - login: 'ورود', - }, - signup: { - signIn: 'ورود', - createAccount: 'حساب کاربری خود را ایجاد کنید', - haveAccount: 'قبلاً حساب کاربری دارید؟', - signUp: 'ثبت نام', - welcome: '👋 خوش آمدید! لطفاً جزئیات را برای شروع پر کنید.', - noAccount: 'حساب کاربری ندارید؟', - verifyMail: 'ادامه با کد تأیید', - }, - pageTitleForE: 'هی، بیا شروع کنیم!', -} - -export default translation diff --git a/web/i18n/fa-IR/oauth.json b/web/i18n/fa-IR/oauth.json new file mode 100644 index 0000000000..3c8f350e15 --- /dev/null +++ b/web/i18n/fa-IR/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "needLogin": "لطفاً برای تأیید وارد شوید", + "notLoggedIn": "این برنامه می‌خواهد به حساب Dify Cloud شما دسترسی پیدا کند", + "loggedIn": "این برنامه می‌خواهد به اطلاعات زیر از حساب ابر دیفی شما دسترسی پیدا کند.", + "common": "ما به حریم خصوصی شما احترام می‌گذاریم و تنها از این اطلاعات برای بهبود تجربه شما با ابزارهای توسعه‌دهنده‌مان استفاده خواهیم کرد." + }, + "scopes": { + "name": "نام", + "avatar": "آواتار", + "timezone": "منطقه زمانی", + "email": "ایمیل", + "languagePreference": "ترجیحات زبانی" + }, + "error": { + "invalidParams": "پارامترهای نامعتبر", + "authAppInfoFetchFailed": "عدم موفقیت در دریافت اطلاعات برنامه برای مجوز", + "authorizeFailed": "احراز هویت ناموفق بود" + }, + "login": "ورود", + "connect": "متصل به", + "continue": "ادامه دهید", + "unknownApp": "برنامه نامشخص", + "switchAccount": "تغییر حساب" +} diff --git a/web/i18n/fa-IR/oauth.ts b/web/i18n/fa-IR/oauth.ts deleted file mode 100644 index 380b4f78b5..0000000000 --- a/web/i18n/fa-IR/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - needLogin: 'لطفاً برای تأیید وارد شوید', - notLoggedIn: 'این برنامه می‌خواهد به حساب Dify Cloud شما دسترسی پیدا کند', - loggedIn: 'این برنامه می‌خواهد به اطلاعات زیر از حساب ابر دیفی شما دسترسی پیدا کند.', - common: 'ما به حریم خصوصی شما احترام می‌گذاریم و تنها از این اطلاعات برای بهبود تجربه شما با ابزارهای توسعه‌دهنده‌مان استفاده خواهیم کرد.', - }, - scopes: { - name: 'نام', - avatar: 'آواتار', - timezone: 'منطقه زمانی', - email: 'ایمیل', - languagePreference: 'ترجیحات زبانی', - }, - error: { - invalidParams: 'پارامترهای نامعتبر', - authAppInfoFetchFailed: 'عدم موفقیت در دریافت اطلاعات برنامه برای مجوز', - authorizeFailed: 'احراز هویت ناموفق بود', - }, - login: 'ورود', - connect: 'متصل به', - continue: 'ادامه دهید', - unknownApp: 'برنامه نامشخص', - switchAccount: 'تغییر حساب', -} - -export default translation diff --git a/web/i18n/fa-IR/pipeline.json b/web/i18n/fa-IR/pipeline.json new file mode 100644 index 0000000000..a26a426ae6 --- /dev/null +++ b/web/i18n/fa-IR/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "publishAsPipeline": { + "description": "شرح دانش", + "name": "نام و نماد خط لوله", + "namePlaceholder": "لطفا نام این خط لوله دانش را وارد کنید. (ضروری)", + "descriptionPlaceholder": "لطفا توضیحات این خط لوله دانش را وارد کنید. (اختیاری)" + }, + "processing": "پردازش", + "preparingDataSource": "آماده سازی منبع داده", + "reRun": "دوباره اجرا کنید", + "confirmPublish": "تایید انتشار", + "testRun": "اجرای آزمایشی", + "publishAs": "انتشار به عنوان یک پایپ لاین دانش", + "goToAddDocuments": "به افزودن اسناد بروید", + "confirmPublishContent": "پس از انتشار موفقیت آمیز خط لوله دانش، ساختار تکه ای این پایگاه دانش قابل تغییر نیست. آیا مطمئن هستید که می خواهید آن را منتشر کنید؟" + }, + "inputField": { + "manage": "مدیریت", + "create": "ایجاد فیلد ورودی کاربر" + }, + "publishToast": { + "title": "این خط لوله هنوز منتشر نشده است", + "desc": "هنگامی که خط لوله منتشر نمی شود، می توانید ساختار تکه را در گره پایگاه دانش تغییر دهید و ارکستراسیون و تغییرات خط لوله به طور خودکار به عنوان پیش نویس ذخیره می شود." + }, + "result": { + "resultPreview": { + "viewDetails": "مشاهده جزئیات", + "loading": "پردازش... لطفاً منتظر بمانید", + "error": "خطا در حین اجرا رخ داد", + "footerTip": "در حالت اجرای آزمایشی، پیش‌نمایش تا {{count}} بخش" + } + }, + "ragToolSuggestions": { + "title": "پیشنهاداتی برای RAG", + "noRecommendationPlugins": "هیچ افزونه‌ای پیشنهادی وجود ندارد، برای یافتن بیشتر به بازار مراجعه کنید" + } +} diff --git a/web/i18n/fa-IR/pipeline.ts b/web/i18n/fa-IR/pipeline.ts deleted file mode 100644 index 3a4815f23a..0000000000 --- a/web/i18n/fa-IR/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - publishAsPipeline: { - description: 'شرح دانش', - name: 'نام و نماد خط لوله', - namePlaceholder: 'لطفا نام این خط لوله دانش را وارد کنید. (ضروری)', - descriptionPlaceholder: 'لطفا توضیحات این خط لوله دانش را وارد کنید. (اختیاری)', - }, - processing: 'پردازش', - preparingDataSource: 'آماده سازی منبع داده', - reRun: 'دوباره اجرا کنید', - confirmPublish: 'تایید انتشار', - testRun: 'اجرای آزمایشی', - publishAs: 'انتشار به عنوان یک پایپ لاین دانش', - goToAddDocuments: 'به افزودن اسناد بروید', - confirmPublishContent: 'پس از انتشار موفقیت آمیز خط لوله دانش، ساختار تکه ای این پایگاه دانش قابل تغییر نیست. آیا مطمئن هستید که می خواهید آن را منتشر کنید؟', - }, - inputField: { - manage: 'مدیریت', - create: 'ایجاد فیلد ورودی کاربر', - }, - publishToast: { - title: 'این خط لوله هنوز منتشر نشده است', - desc: 'هنگامی که خط لوله منتشر نمی شود، می توانید ساختار تکه را در گره پایگاه دانش تغییر دهید و ارکستراسیون و تغییرات خط لوله به طور خودکار به عنوان پیش نویس ذخیره می شود.', - }, - result: { - resultPreview: { - viewDetails: 'مشاهده جزئیات', - loading: 'پردازش... لطفاً منتظر بمانید', - error: 'خطا در حین اجرا رخ داد', - footerTip: 'در حالت اجرای آزمایشی، پیش‌نمایش تا {{count}} بخش', - }, - }, - ragToolSuggestions: { - title: 'پیشنهاداتی برای RAG', - noRecommendationPlugins: 'هیچ افزونه‌ای پیشنهادی وجود ندارد، برای یافتن بیشتر به بازار مراجعه کنید', - }, -} - -export default translation diff --git a/web/i18n/fa-IR/plugin-tags.json b/web/i18n/fa-IR/plugin-tags.json new file mode 100644 index 0000000000..2079b41ca5 --- /dev/null +++ b/web/i18n/fa-IR/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "tags": { + "productivity": "بهره وری", + "news": "اخبار", + "medical": "پزشکی", + "image": "تصویر", + "search": "جستجو", + "other": "دیگر", + "utilities": "تاسیسات", + "design": "طراحی", + "entertainment": "سرگرمی", + "social": "اجتماعی", + "education": "آموزش", + "business": "تجاری", + "finance": "مالی", + "weather": "هوا", + "travel": "سفر", + "videos": "فیلم", + "agent": "عامل", + "rag": "پوش" + }, + "searchTags": "جستجو برچسب ها", + "allTags": "همه برچسب ها" +} diff --git a/web/i18n/fa-IR/plugin-tags.ts b/web/i18n/fa-IR/plugin-tags.ts deleted file mode 100644 index 29a87daedf..0000000000 --- a/web/i18n/fa-IR/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - tags: { - productivity: 'بهره وری', - news: 'اخبار', - medical: 'پزشکی', - image: 'تصویر', - search: 'جستجو', - other: 'دیگر', - utilities: 'تاسیسات', - design: 'طراحی', - entertainment: 'سرگرمی', - social: 'اجتماعی', - education: 'آموزش', - business: 'تجاری', - finance: 'مالی', - weather: 'هوا', - travel: 'سفر', - videos: 'فیلم', - agent: 'عامل', - rag: 'پوش', - }, - searchTags: 'جستجو برچسب ها', - allTags: 'همه برچسب ها', -} - -export default translation diff --git a/web/i18n/fa-IR/plugin-trigger.json b/web/i18n/fa-IR/plugin-trigger.json new file mode 100644 index 0000000000..55db85dab0 --- /dev/null +++ b/web/i18n/fa-IR/plugin-trigger.json @@ -0,0 +1,184 @@ +{ + "subscription": { + "title": "اشتراک‌ها", + "listNum": "اشتراک‌های {{num}}", + "empty": { + "title": "بدون اشتراک", + "button": "اشتراک جدید" + }, + "createButton": { + "oauth": "اشتراک جدید با OAuth", + "apiKey": "اشتراک جدید با کلید API", + "manual": "چسباندن URL برای ایجاد اشتراک جدید" + }, + "createSuccess": "اشتراک با موفقیت ایجاد شد", + "createFailed": "ایجاد اشتراک با شکست مواجه شد", + "maxCount": "حداکثر {{num}} اشتراک", + "selectPlaceholder": "انتخاب اشتراک", + "noSubscriptionSelected": "هیچ اشتراکی انتخاب نشده است", + "subscriptionRemoved": "اشتراک حذف شد", + "list": { + "title": "اشتراک‌ها", + "addButton": "افزودن", + "tip": "دریافت رویدادها از طریق اشتراک", + "item": { + "enabled": "فعال", + "disabled": "غیرفعال", + "credentialType": { + "api_key": "کلید API", + "oauth2": "اواف", + "unauthorized": "دستی" + }, + "actions": { + "delete": "حذف", + "deleteConfirm": { + "title": "آیا {{name}} را حذف می‌کنید؟", + "success": "اشتراک {{name}} با موفقیت حذف شد", + "error": "حذف اشتراک {{name}} ناموفق بود", + "content": "پس از حذف، این اشتراک قابل بازیابی نخواهد بود. لطفاً تأیید کنید.", + "contentWithApps": "اشتراک فعلی توسط {{count}} برنامه مورد استفاده قرار گرفته است. حذف آن باعث می‌شود برنامه‌های پیکربندی‌شده دریافت رویدادهای اشتراک را متوقف کنند.", + "confirm": "تأیید حذف", + "cancel": "لغو", + "confirmInputWarning": "لطفاً نام صحیح را برای تأیید وارد کنید.", + "confirmInputPlaceholder": "برای تأیید «{{name}}» را وارد کنید.", + "confirmInputTip": "لطفاً برای تأیید «{{name}}» را وارد کنید." + } + }, + "status": { + "active": "فعال", + "inactive": "غیرفعال" + }, + "usedByNum": "استفاده شده توسط {{num}} جریان‌های کاری", + "noUsed": "هیچ روند کاری استفاده نشده است" + } + }, + "addType": { + "title": "افزودن اشتراک", + "description": "انتخاب کنید که چگونه می‌خواهید اشتراک محرک خود را ایجاد کنید", + "options": { + "apikey": { + "title": "ایجاد با کلید API", + "description": "ایجاد اشتراک به‌صورت خودکار با استفاده از اطلاعات ورود API" + }, + "oauth": { + "title": "ایجاد با OAuth", + "description": "با پلتفرم شخص ثالث مجوز بدهید تا اشتراک ایجاد شود", + "clientSettings": "تنظیمات کلاینت OAuth", + "clientTitle": "کلاینت OAuth", + "default": "پیش‌فرض", + "custom": "سفارشی" + }, + "manual": { + "title": "راه‌اندازی دستی", + "description": "چسباندن URL برای ایجاد اشتراک جدید", + "tip": "تنظیم دستی URL در پلتفرم شخص ثالث" + } + } + } + }, + "modal": { + "steps": { + "verify": "تأیید کردن", + "configuration": "پیکربندی" + }, + "common": { + "cancel": "لغو", + "back": "بازگشت", + "next": "بعدی", + "create": "ایجاد کردن", + "verify": "تأیید کردن", + "authorize": "مجاز کردن", + "creating": "در حال ایجاد...", + "verifying": "در حال تأیید...", + "authorizing": "در حال مجازسازی..." + }, + "oauthRedirectInfo": "چون هیچ راز کلاینت سیستمی برای این ارائه‌دهنده ابزار پیدا نشد، تنظیم آن به صورت دستی لازم است، برای redirect_uri لطفاً استفاده کنید", + "apiKey": { + "title": "ایجاد با کلید API", + "verify": { + "title": "تأیید اطلاعات کاربری", + "description": "لطفاً اطلاعات API خود را برای تأیید دسترسی ارائه دهید", + "error": "تأیید اعتبار ناموفق بود. لطفاً کلید API خود را بررسی کنید.", + "success": "اعتبارات با موفقیت تأیید شد" + }, + "configuration": { + "title": "پیکربندی اشتراک", + "description": "پارامترهای اشتراک خود را تنظیم کنید" + } + }, + "oauth": { + "title": "ایجاد با OAuth", + "authorization": { + "title": "مجوز او‌آه‌اِس", + "description": "اجازه دهید دیفی به حساب شما دسترسی داشته باشد", + "redirectUrl": "تغییر مسیر آدرس اینترنتی", + "redirectUrlHelp": "از این URL در تنظیمات برنامه OAuth خود استفاده کنید", + "authorizeButton": "مجوزدهی با {{provider}}", + "waitingAuth": "در انتظار مجوز...", + "authSuccess": "مجوز با موفقیت صادر شد", + "authFailed": "دریافت اطلاعات مجوز OAuth ناکام ماند", + "waitingJump": "مجاز، در انتظار پرش" + }, + "configuration": { + "title": "پیکربندی اشتراک", + "description": "پس از تأیید هویت، پارامترهای اشتراک خود را تنظیم کنید", + "success": "پیکربندی OAuth با موفقیت انجام شد", + "failed": "پیکربندی OAuth با شکست مواجه شد" + }, + "remove": { + "success": "حذف OAuth با موفقیت انجام شد", + "failed": "حذف OAuth ناموفق بود" + }, + "save": { + "success": "پیکربندی OAuth با موفقیت ذخیره شد" + } + }, + "manual": { + "title": "راه‌اندازی دستی", + "description": "اشتراک وب‌هوک خود را به‌صورت دستی تنظیم کنید", + "logs": { + "title": "گزارش‌های درخواست", + "request": "درخواست", + "loading": "در انتظار درخواست از {{pluginName}}..." + } + }, + "form": { + "subscriptionName": { + "label": "نام اشتراک", + "placeholder": "نام اشتراک را وارد کنید", + "required": "نام اشتراک الزامی است" + }, + "callbackUrl": { + "label": "آدرس بازگشت تماس", + "description": "این آدرس URL رویدادهای وب هوک را دریافت خواهد کرد", + "tooltip": "یک نقطه دسترسی عمومی فراهم کنید که بتواند درخواست‌های بازگشتی از ارائه‌دهنده تریگر را دریافت کند.", + "placeholder": "در حال تولید...", + "privateAddressWarning": "به نظر می‌رسد این URL یک آدرس داخلی است که ممکن است باعث شود درخواست‌های وب‌هوک با شکست مواجه شوند. شما می‌توانید TRIGGER_URL را به یک آدرس عمومی تغییر دهید." + } + }, + "errors": { + "createFailed": "ایجاد اشتراک با شکست مواجه شد", + "verifyFailed": "تأیید اطلاعات ورود ناموفق بود", + "authFailed": "مجوز ناموفق بود", + "networkError": "خطای شبکه، لطفاً دوباره تلاش کنید" + } + }, + "events": { + "title": "رویدادهای موجود", + "description": "رویدادهایی که این افزونه فعال‌سازی می‌تواند به آن‌ها مشترک شود", + "empty": "هیچ رویدادی در دسترس نیست", + "event": "رویداد", + "events": "رویدادها", + "actionNum": "{{num}} {{event}} گنجانده شده", + "item": { + "parameters": "پارامترهای {{count}}", + "noParameters": "هیچ پارامتری" + }, + "output": "خروجی" + }, + "node": { + "status": { + "warning": "قطع ارتباط" + } + } +} diff --git a/web/i18n/fa-IR/plugin-trigger.ts b/web/i18n/fa-IR/plugin-trigger.ts deleted file mode 100644 index 6021266cc6..0000000000 --- a/web/i18n/fa-IR/plugin-trigger.ts +++ /dev/null @@ -1,186 +0,0 @@ -const translation = { - subscription: { - title: 'اشتراک‌ها', - listNum: 'اشتراک‌های {{num}}', - empty: { - title: 'بدون اشتراک', - button: 'اشتراک جدید', - }, - createButton: { - oauth: 'اشتراک جدید با OAuth', - apiKey: 'اشتراک جدید با کلید API', - manual: 'چسباندن URL برای ایجاد اشتراک جدید', - }, - createSuccess: 'اشتراک با موفقیت ایجاد شد', - createFailed: 'ایجاد اشتراک با شکست مواجه شد', - maxCount: 'حداکثر {{num}} اشتراک', - selectPlaceholder: 'انتخاب اشتراک', - noSubscriptionSelected: 'هیچ اشتراکی انتخاب نشده است', - subscriptionRemoved: 'اشتراک حذف شد', - list: { - title: 'اشتراک‌ها', - addButton: 'افزودن', - tip: 'دریافت رویدادها از طریق اشتراک', - item: { - enabled: 'فعال', - disabled: 'غیرفعال', - credentialType: { - api_key: 'کلید API', - oauth2: 'اواف', - unauthorized: 'دستی', - }, - actions: { - delete: 'حذف', - deleteConfirm: { - title: 'آیا {{name}} را حذف می‌کنید؟', - success: 'اشتراک {{name}} با موفقیت حذف شد', - error: 'حذف اشتراک {{name}} ناموفق بود', - content: 'پس از حذف، این اشتراک قابل بازیابی نخواهد بود. لطفاً تأیید کنید.', - contentWithApps: 'اشتراک فعلی توسط {{count}} برنامه مورد استفاده قرار گرفته است. حذف آن باعث می‌شود برنامه‌های پیکربندی‌شده دریافت رویدادهای اشتراک را متوقف کنند.', - confirm: 'تأیید حذف', - cancel: 'لغو', - confirmInputWarning: 'لطفاً نام صحیح را برای تأیید وارد کنید.', - confirmInputPlaceholder: 'برای تأیید «{{name}}» را وارد کنید.', - confirmInputTip: 'لطفاً برای تأیید «{{name}}» را وارد کنید.', - }, - }, - status: { - active: 'فعال', - inactive: 'غیرفعال', - }, - usedByNum: 'استفاده شده توسط {{num}} جریان‌های کاری', - noUsed: 'هیچ روند کاری استفاده نشده است', - }, - }, - addType: { - title: 'افزودن اشتراک', - description: 'انتخاب کنید که چگونه می‌خواهید اشتراک محرک خود را ایجاد کنید', - options: { - apikey: { - title: 'ایجاد با کلید API', - description: 'ایجاد اشتراک به‌صورت خودکار با استفاده از اطلاعات ورود API', - }, - oauth: { - title: 'ایجاد با OAuth', - description: 'با پلتفرم شخص ثالث مجوز بدهید تا اشتراک ایجاد شود', - clientSettings: 'تنظیمات کلاینت OAuth', - clientTitle: 'کلاینت OAuth', - default: 'پیش‌فرض', - custom: 'سفارشی', - }, - manual: { - title: 'راه‌اندازی دستی', - description: 'چسباندن URL برای ایجاد اشتراک جدید', - tip: 'تنظیم دستی URL در پلتفرم شخص ثالث', - }, - }, - }, - }, - modal: { - steps: { - verify: 'تأیید کردن', - configuration: 'پیکربندی', - }, - common: { - cancel: 'لغو', - back: 'بازگشت', - next: 'بعدی', - create: 'ایجاد کردن', - verify: 'تأیید کردن', - authorize: 'مجاز کردن', - creating: 'در حال ایجاد...', - verifying: 'در حال تأیید...', - authorizing: 'در حال مجازسازی...', - }, - oauthRedirectInfo: 'چون هیچ راز کلاینت سیستمی برای این ارائه‌دهنده ابزار پیدا نشد، تنظیم آن به صورت دستی لازم است، برای redirect_uri لطفاً استفاده کنید', - apiKey: { - title: 'ایجاد با کلید API', - verify: { - title: 'تأیید اطلاعات کاربری', - description: 'لطفاً اطلاعات API خود را برای تأیید دسترسی ارائه دهید', - error: 'تأیید اعتبار ناموفق بود. لطفاً کلید API خود را بررسی کنید.', - success: 'اعتبارات با موفقیت تأیید شد', - }, - configuration: { - title: 'پیکربندی اشتراک', - description: 'پارامترهای اشتراک خود را تنظیم کنید', - }, - }, - oauth: { - title: 'ایجاد با OAuth', - authorization: { - title: 'مجوز او‌آه‌اِس', - description: 'اجازه دهید دیفی به حساب شما دسترسی داشته باشد', - redirectUrl: 'تغییر مسیر آدرس اینترنتی', - redirectUrlHelp: 'از این URL در تنظیمات برنامه OAuth خود استفاده کنید', - authorizeButton: 'مجوزدهی با {{provider}}', - waitingAuth: 'در انتظار مجوز...', - authSuccess: 'مجوز با موفقیت صادر شد', - authFailed: 'دریافت اطلاعات مجوز OAuth ناکام ماند', - waitingJump: 'مجاز، در انتظار پرش', - }, - configuration: { - title: 'پیکربندی اشتراک', - description: 'پس از تأیید هویت، پارامترهای اشتراک خود را تنظیم کنید', - success: 'پیکربندی OAuth با موفقیت انجام شد', - failed: 'پیکربندی OAuth با شکست مواجه شد', - }, - remove: { - success: 'حذف OAuth با موفقیت انجام شد', - failed: 'حذف OAuth ناموفق بود', - }, - save: { - success: 'پیکربندی OAuth با موفقیت ذخیره شد', - }, - }, - manual: { - title: 'راه‌اندازی دستی', - description: 'اشتراک وب‌هوک خود را به‌صورت دستی تنظیم کنید', - logs: { - title: 'گزارش‌های درخواست', - request: 'درخواست', - loading: 'در انتظار درخواست از {{pluginName}}...', - }, - }, - form: { - subscriptionName: { - label: 'نام اشتراک', - placeholder: 'نام اشتراک را وارد کنید', - required: 'نام اشتراک الزامی است', - }, - callbackUrl: { - label: 'آدرس بازگشت تماس', - description: 'این آدرس URL رویدادهای وب هوک را دریافت خواهد کرد', - tooltip: 'یک نقطه دسترسی عمومی فراهم کنید که بتواند درخواست‌های بازگشتی از ارائه‌دهنده تریگر را دریافت کند.', - placeholder: 'در حال تولید...', - privateAddressWarning: 'به نظر می‌رسد این URL یک آدرس داخلی است که ممکن است باعث شود درخواست‌های وب‌هوک با شکست مواجه شوند. شما می‌توانید TRIGGER_URL را به یک آدرس عمومی تغییر دهید.', - }, - }, - errors: { - createFailed: 'ایجاد اشتراک با شکست مواجه شد', - verifyFailed: 'تأیید اطلاعات ورود ناموفق بود', - authFailed: 'مجوز ناموفق بود', - networkError: 'خطای شبکه، لطفاً دوباره تلاش کنید', - }, - }, - events: { - title: 'رویدادهای موجود', - description: 'رویدادهایی که این افزونه فعال‌سازی می‌تواند به آن‌ها مشترک شود', - empty: 'هیچ رویدادی در دسترس نیست', - event: 'رویداد', - events: 'رویدادها', - actionNum: '{{num}} {{event}} گنجانده شده', - item: { - parameters: 'پارامترهای {{count}}', - noParameters: 'هیچ پارامتری', - }, - output: 'خروجی', - }, - node: { - status: { - warning: 'قطع ارتباط', - }, - }, -} - -export default translation diff --git a/web/i18n/fa-IR/plugin.json b/web/i18n/fa-IR/plugin.json new file mode 100644 index 0000000000..c8916a36d3 --- /dev/null +++ b/web/i18n/fa-IR/plugin.json @@ -0,0 +1,323 @@ +{ + "category": { + "all": "همه", + "models": "مدل", + "bundles": "بسته", + "agents": "استراتژی های عامل", + "tools": "ابزار", + "extensions": "پسوند", + "datasources": "منابع داده", + "triggers": "محرک‌ها" + }, + "categorySingle": { + "tool": "ابزار", + "agent": "استراتژی نمایندگی", + "extension": "فرمت", + "model": "مدل", + "bundle": "بسته", + "datasource": "منبع داده", + "trigger": "محرک" + }, + "list": { + "source": { + "marketplace": "از Marketplace نصب کنید", + "github": "نصب از GitHub", + "local": "نصب از فایل بسته محلی" + }, + "notFound": "هیچ افزونه ای یافت نشد", + "noInstalled": "هیچ افزونه ای نصب نشده است" + }, + "source": { + "github": "گیت‌هاب", + "marketplace": "بازار", + "local": "فایل بسته محلی" + }, + "detailPanel": { + "categoryTip": { + "debugging": "اشکال زدایی پلاگین", + "marketplace": "نصب شده از Marketplace", + "local": "پلاگین محلی", + "github": "نصب شده از Github" + }, + "operation": { + "checkUpdate": "به روز رسانی را بررسی کنید", + "info": "اطلاعات پلاگین", + "remove": "حذف", + "update": "روز رسانی", + "detail": "جزئیات", + "viewDetail": "نمایش جزئیات", + "install": "نصب", + "back": "بازگشت" + }, + "toolSelector": { + "descriptionPlaceholder": "شرح مختصری از هدف ابزار، به عنوان مثال، دما را برای یک مکان خاص دریافت کنید.", + "auto": "خودکار", + "unsupportedContent": "نسخه افزونه نصب شده این عمل را ارائه نمی دهد.", + "paramsTip1": "پارامترهای استنتاج LLM را کنترل می کند.", + "params": "پیکربندی استدلال", + "placeholder": "یک ابزار را انتخاب کنید...", + "paramsTip2": "وقتی «خودکار» خاموش باشد، از مقدار پیش فرض استفاده می شود.", + "descriptionLabel": "توضیحات ابزار", + "title": "ابزار افزودن", + "settings": "تنظیمات کاربر", + "empty": "برای افزودن ابزارها روی دکمه \"+\" کلیک کنید. می توانید چندین ابزار اضافه کنید.", + "toolLabel": "ابزار", + "uninstalledTitle": "ابزار نصب نشده است", + "uninstalledLink": "مدیریت در پلاگین ها", + "uninstalledContent": "این افزونه از مخزن local/GitHub نصب شده است. لطفا پس از نصب استفاده کنید.", + "unsupportedTitle": "اکشن پشتیبانی نشده", + "unsupportedContent2": "برای تغییر نسخه کلیک کنید.", + "toolSetting": "تنظیمات ابزار", + "unsupportedMCPTool": "نسخه فعلی پلاگین استراتژی عامل انتخاب‌شده از ابزارهای MCP پشتیبانی نمی‌کند." + }, + "endpointDeleteTip": "حذف نقطه پایانی", + "disabled": "غیر فعال", + "strategyNum": "{{عدد}} {{استراتژی}} شامل", + "configureApp": "پیکربندی اپلیکیشن", + "endpoints": "نقاط پایانی", + "endpointsDocLink": "مشاهده سند", + "actionNum": "{{عدد}} {{اقدام}} شامل", + "endpointDisableContent": "آیا می خواهید {{name}} را غیرفعال کنید؟", + "endpointModalTitle": "راه اندازی اندپوینت", + "endpointsTip": "این افزونه عملکردهای خاصی را از طریق نقاط پایانی ارائه می دهد و می توانید چندین مجموعه نقطه پایانی را برای فضای کاری فعلی پیکربندی کنید.", + "serviceOk": "خدمات خوب", + "modelNum": "{{عدد}} مدل های گنجانده شده است", + "endpointDisableTip": "غیرفعال کردن نقطه پایانی", + "configureModel": "مدل را پیکربندی کنید", + "configureTool": "ابزار پیکربندی", + "endpointsEmpty": "برای افزودن نقطه پایانی روی دکمه \"+\" کلیک کنید", + "endpointModalDesc": "پس از پیکربندی، می توان از ویژگی های ارائه شده توسط افزونه از طریق نقاط پایانی API استفاده کرد.", + "switchVersion": "نسخه سوئیچ", + "endpointDeleteContent": "آیا می خواهید {{name}} را حذف کنید؟", + "deprecation": { + "reason": { + "ownershipTransferred": "مالکیت منتقل شد", + "businessAdjustments": "تنظیمات کسب و کار", + "noMaintainer": "بدون نگهدارنده" + }, + "noReason": "این افزونه منسوخ شده است و دیگر به روز رسانی نخواهد شد.", + "onlyReason": "این افزونه به دلیل {{deprecatedReason}} منسوخ شده و دیگر به‌روزرسانی نخواهد شد.", + "fullMessage": "این افزونه به دلیل {{deprecatedReason}} منسوخ شده است و دیگر به‌روزرسانی نخواهد شد. لطفا به‌جای آن از {{-alternativePluginId}} استفاده کنید." + } + }, + "debugInfo": { + "title": "اشکال زدایی", + "viewDocs": "مشاهده اسناد" + }, + "privilege": { + "everyone": "همه", + "admins": "مدیران", + "whoCanInstall": "چه کسی می تواند افزونه ها را نصب و مدیریت کند؟", + "title": "تنظیمات پلاگین", + "noone": "هیچ", + "whoCanDebug": "چه کسی می تواند افزونه ها را اشکال زدایی کند؟" + }, + "pluginInfoModal": { + "repository": "مخزن", + "packageName": "بسته", + "title": "اطلاعات پلاگین", + "release": "انتشار" + }, + "action": { + "pluginInfo": "اطلاعات پلاگین", + "usedInApps": "این افزونه در برنامه های {{num}} استفاده می شود.", + "deleteContentLeft": "آیا می خواهید", + "checkForUpdates": "بررسی به روزرسانی ها", + "delete": "حذف افزونه", + "deleteContentRight": "افزونه?" + }, + "installModal": { + "labels": { + "package": "بسته", + "version": "نسخهٔ", + "repository": "مخزن" + }, + "back": "بازگشت", + "next": "بعدی", + "cancel": "لغو", + "uploadingPackage": "آپلود {{packageName}}...", + "fromTrustSource": "لطفا مطمئن شوید که افزونه ها را فقط از یک منبع قابل اعتماد نصب می کنید.", + "readyToInstall": "در مورد نصب افزونه زیر", + "install": "نصب", + "pluginLoadError": "خطای بارگذاری افزونه", + "pluginLoadErrorDesc": "این افزونه نصب نخواهد شد", + "close": "نزدیک", + "installFailed": "نصب ناموفق بود", + "installFailedDesc": "افزونه نصب شده است ناموفق است.", + "installedSuccessfullyDesc": "این افزونه با موفقیت نصب شد.", + "dropPluginToInstall": "بسته افزونه را برای نصب اینجا رها کنید", + "installing": "نصب...", + "readyToInstallPackage": "در مورد نصب افزونه زیر", + "readyToInstallPackages": "در شرف نصب افزونه های {{num}} زیر", + "installedSuccessfully": "نصب موفقیت آمیز بود", + "installPlugin": "افزونه را نصب کنید", + "installComplete": "نصب کامل شد", + "uploadFailed": "آپلود انجام نشد", + "installWarning": "این افزونه اجازه نصب ندارد." + }, + "installFromGitHub": { + "installPlugin": "افزونه را از GitHub نصب کنید", + "selectPackagePlaceholder": "لطفا یک بسته را انتخاب کنید", + "gitHubRepo": "مخزن GitHub", + "updatePlugin": "افزونه را از GitHub به روز کنید", + "uploadFailed": "آپلود انجام نشد", + "installedSuccessfully": "نصب موفقیت آمیز بود", + "installNote": "لطفا مطمئن شوید که افزونه ها را فقط از یک منبع قابل اعتماد نصب می کنید.", + "installFailed": "نصب ناموفق بود", + "selectVersionPlaceholder": "لطفا یک نسخه را انتخاب کنید", + "selectPackage": "بسته را انتخاب کنید", + "selectVersion": "انتخاب نسخه" + }, + "upgrade": { + "usedInApps": "استفاده شده در برنامه های {{num}}", + "successfulTitle": "نصب موفقیت آمیز", + "close": "نزدیک", + "title": "افزونه را نصب کنید", + "upgrading": "نصب...", + "upgrade": "نصب", + "description": "در مورد نصب افزونه زیر" + }, + "error": { + "noReleasesFound": "هیچ نسخه ای یافت نشد. لطفا مخزن GitHub یا URL ورودی را بررسی کنید.", + "inValidGitHubUrl": "URL GitHub نامعتبر است. لطفا یک URL معتبر را در قالب وارد کنید: https://github.com/owner/repo", + "fetchReleasesError": "امکان بازیابی نسخه ها وجود ندارد. لطفا بعدا دوباره امتحان کنید." + }, + "marketplace": { + "sortOption": { + "firstReleased": "اولین منتشر شد", + "recentlyUpdated": "اخیرا به روز شده است", + "mostPopular": "محبوب ترین", + "newlyReleased": "تازه منتشر شده" + }, + "and": "و", + "viewMore": "بیشتر ببینید", + "moreFrom": "اطلاعات بیشتر از Marketplace", + "pluginsResult": "نتایج {{num}}", + "noPluginFound": "هیچ افزونه ای یافت نشد", + "sortBy": "شهر سیاه", + "difyMarketplace": "بازار دیفی", + "empower": "توسعه هوش مصنوعی خود را توانمند کنید", + "discover": "کشف", + "verifiedTip": "تأیید شده توسط دیفی", + "partnerTip": "تأیید شده توسط یک شریک دیفی" + }, + "task": { + "installing": "نصب پلاگین های {{installingLength}}، 0 انجام شد.", + "clearAll": "پاک کردن همه", + "installedError": "افزونه های {{errorLength}} نصب نشدند", + "installError": "پلاگین های {{errorLength}} نصب نشدند، برای مشاهده کلیک کنید", + "installingWithSuccess": "نصب پلاگین های {{installingLength}}، {{successLength}} موفقیت آمیز است.", + "installingWithError": "نصب پلاگین های {{installingLength}}، {{successLength}} با موفقیت مواجه شد، {{errorLength}} ناموفق بود", + "installSuccess": "{{successLength}} plugins installed successfully", + "installed": "Installed", + "runningPlugins": "Installing Plugins", + "successPlugins": "Successfully Installed Plugins", + "errorPlugins": "Failed to Install Plugins" + }, + "searchTools": "ابزارهای جستجو...", + "findMoreInMarketplace": "اطلاعات بیشتر در Marketplace", + "searchInMarketplace": "جستجو در Marketplace", + "searchCategories": "دسته بندی ها را جستجو کنید", + "fromMarketplace": "از بازار", + "installPlugin": "افزونه را نصب کنید", + "from": "از", + "install": "{{num}} نصب می شود", + "endpointsEnabled": "{{num}} مجموعه نقاط پایانی فعال شده است", + "searchPlugins": "جستجوی افزونه ها", + "installFrom": "نصب از", + "installAction": "نصب", + "allCategories": "همه دسته بندی ها", + "search": "جستجو", + "metadata": { + "title": "پلاگین ها" + }, + "difyVersionNotCompatible": "نسخه فعلی دیفی با این پلاگین سازگار نیست، لطفاً به نسخه حداقل مورد نیاز به‌روزرسانی کنید: {{minimalDifyVersion}}", + "requestAPlugin": "درخواست یک افزونه", + "publishPlugins": "انتشار افزونه ها", + "auth": { + "useOAuthAuth": "از مجوز OAuth استفاده کنید", + "oauthClient": "کلاینت اوتور", + "custom": "سفارشی", + "addOAuth": "OAuth اضافه کنید", + "workspaceDefault": "پیش فرض محیط کار", + "authorization": "مجوز", + "default": "پیش‌فرض", + "setupOAuth": "راه‌اندازی کلاینت OAuth", + "useOAuth": "از OAuth استفاده کنید", + "setDefault": "به عنوان پیش‌فرض تنظیم شود", + "useApi": "از کلید API استفاده کنید", + "useApiAuth": "پیکربندی مجوز کلید API", + "authRemoved": "منبع حذف شد", + "authorizations": "مجوزها", + "authorizationName": "نام مجوز", + "addApi": "کلید API را اضافه کنید", + "saveAndAuth": "ذخیره و تأیید", + "saveOnly": "فقط ذخیره کنید", + "oauthClientSettings": "تنظیمات کلاینت اوتور", + "clientInfo": "از آنجایی که هیچ راز مشتری سیستم برای این ارائه‌دهنده ابزار پیدا نشد، تنظیم دستی آن ضروری است، لطفاً برای redirect_uri از", + "useApiAuthDesc": "پس از پیکربندی اعتبارنامه‌ها، تمامی اعضای درون فضای کاری می‌توانند از این ابزار هنگام نظم‌دهی به برنامه‌ها استفاده کنند.", + "unavailable": "در دسترس نیست", + "credentialUnavailable": "دسترسی به مدارک در حال حاضر امکان‌پذیر نیست. لطفاً با مدیر تماس بگیرید.", + "customCredentialUnavailable": "اعتبارنامه‌های سفارشی در حال حاضر در دسترس نیستند", + "credentialUnavailableInButton": "گواهی در دسترس نیست", + "connectedWorkspace": "فضای کاری متصل", + "emptyAuth": "لطفا احراز هویت را پیکربندی کنید" + }, + "deprecated": "منسوخ شده", + "autoUpdate": { + "strategy": { + "disabled": { + "name": "ناتوان", + "description": "پلاگین‌ها به‌طور خودکار به‌روزرسانی نخواهند شد" + }, + "fixOnly": { + "name": "فقط تعمیر کنید", + "selectedDescription": "به‌روزرسانی خودکار تنها برای نسخه‌های وصله", + "description": "به‌روزرسانی خودکار فقط برای نسخه‌های پچ (مانند ۱.۰.۱ → ۱.۰.۲). تغییرات جزئی نسخه باعث راه‌اندازی به‌روزرسانی‌ها نمی‌شود." + }, + "latest": { + "name": "جدیدترین", + "selectedDescription": "همیشه به آخرین نسخه بروزرسانی کنید", + "description": "همیشه به آخرین نسخه بروزرسانی کنید" + } + }, + "upgradeMode": { + "all": "همه را بروزرسانی کن", + "partial": "فقط انتخاب شده", + "exclude": "انتخاب شده را استثنا کن" + }, + "upgradeModePlaceholder": { + "exclude": "افزونه‌های انتخاب شده به‌صورت خودکار به‌روزرسانی نخواهند شد", + "partial": "فقط پلاگین‌های انتخاب شده به‌روزرسانی خودکار خواهند داشت. در حال حاضر هیچ پلاگینی انتخاب نشده است، بنابراین هیچ پلاگینی به‌روزرسانی خودکار نخواهد شد." + }, + "operation": { + "select": "افزونه‌ها را انتخاب کنید", + "clearAll": "همه را پاک کن" + }, + "pluginDowngradeWarning": { + "title": "کاهش نسخه افزونه", + "downgrade": "به هر حال تنزل دهید", + "exclude": "از بروزرسانی خودکار مستثنی شود", + "description": "به‌روزرسانی خودکار برای این افزونه در حال حاضر فعال است. کاهش نسخه ممکن است باعث شود تغییرات شما در حین به‌روزرسانی خودکار بعدی نادیده گرفته شود." + }, + "noPluginPlaceholder": { + "noFound": "هیچ افزونه‌ای یافت نشد", + "noInstalled": "هیچ افزونه‌ای نصب نشده است" + }, + "updateTimeTitle": "زمان به‌روزرسانی", + "specifyPluginsToUpdate": "ماژول‌هایی را برای به‌روزرسانی مشخص کنید", + "updateTime": "زمان به‌روزرسانی", + "automaticUpdates": "بروز رسانی خودکار", + "updateSettings": "تنظیمات را به‌روزرسانی کنید", + "changeTimezone": "برای تغییر منطقه زمانی، به تنظیمات بروید", + "excludeUpdate": "پلاگین‌های زیر {{num}} به‌طور خودکار به‌روزرسانی نخواهند شد", + "nextUpdateTime": "به‌روزرسانی خودکار بعدی: {{time}}", + "partialUPdate": "تنها {{num}} پلاگین زیر به‌طور خودکار به‌روزرسانی خواهد شد." + }, + "readmeInfo": { + "title": "خواندنی", + "needHelpCheckReadme": "نیاز به کمک دارید؟ فایل README را بررسی کنید.", + "noReadmeAvailable": "بدون پرونده README موجود", + "failedToFetch": "بارگیری فایل README با شکست مواجه شد" + } +} diff --git a/web/i18n/fa-IR/plugin.ts b/web/i18n/fa-IR/plugin.ts deleted file mode 100644 index 030ca0022d..0000000000 --- a/web/i18n/fa-IR/plugin.ts +++ /dev/null @@ -1,351 +0,0 @@ -const translation = { - category: { - all: 'همه', - models: 'مدل', - bundles: 'بسته', - agents: 'استراتژی های عامل', - tools: 'ابزار', - extensions: 'پسوند', - datasources: 'منابع داده', - triggers: 'محرک‌ها', - }, - categorySingle: { - tool: 'ابزار', - agent: 'استراتژی نمایندگی', - extension: 'فرمت', - model: 'مدل', - bundle: 'بسته', - datasource: 'منبع داده', - trigger: 'محرک', - }, - list: { - source: { - marketplace: 'از Marketplace نصب کنید', - github: 'نصب از GitHub', - local: 'نصب از فایل بسته محلی', - }, - notFound: 'هیچ افزونه ای یافت نشد', - noInstalled: 'هیچ افزونه ای نصب نشده است', - }, - source: { - github: 'گیت‌هاب', - marketplace: 'بازار', - local: 'فایل بسته محلی', - }, - detailPanel: { - categoryTip: { - debugging: 'اشکال زدایی پلاگین', - marketplace: 'نصب شده از Marketplace', - local: 'پلاگین محلی', - github: 'نصب شده از Github', - }, - operation: { - checkUpdate: 'به روز رسانی را بررسی کنید', - info: 'اطلاعات پلاگین', - remove: 'حذف', - update: 'روز رسانی', - detail: 'جزئیات', - viewDetail: 'نمایش جزئیات', - install: 'نصب', - back: 'بازگشت', - }, - toolSelector: { - descriptionPlaceholder: - 'شرح مختصری از هدف ابزار، به عنوان مثال، دما را برای یک مکان خاص دریافت کنید.', - auto: 'خودکار', - unsupportedContent: 'نسخه افزونه نصب شده این عمل را ارائه نمی دهد.', - paramsTip1: 'پارامترهای استنتاج LLM را کنترل می کند.', - params: 'پیکربندی استدلال', - placeholder: 'یک ابزار را انتخاب کنید...', - paramsTip2: 'وقتی «خودکار» خاموش باشد، از مقدار پیش فرض استفاده می شود.', - descriptionLabel: 'توضیحات ابزار', - title: 'ابزار افزودن', - settings: 'تنظیمات کاربر', - empty: - 'برای افزودن ابزارها روی دکمه "+" کلیک کنید. می توانید چندین ابزار اضافه کنید.', - toolLabel: 'ابزار', - uninstalledTitle: 'ابزار نصب نشده است', - uninstalledLink: 'مدیریت در پلاگین ها', - uninstalledContent: - 'این افزونه از مخزن local/GitHub نصب شده است. لطفا پس از نصب استفاده کنید.', - unsupportedTitle: 'اکشن پشتیبانی نشده', - unsupportedContent2: 'برای تغییر نسخه کلیک کنید.', - toolSetting: 'تنظیمات ابزار', - unsupportedMCPTool: - 'نسخه فعلی پلاگین استراتژی عامل انتخاب‌شده از ابزارهای MCP پشتیبانی نمی‌کند.', - }, - endpointDeleteTip: 'حذف نقطه پایانی', - disabled: 'غیر فعال', - strategyNum: '{{عدد}} {{استراتژی}} شامل', - configureApp: 'پیکربندی اپلیکیشن', - endpoints: 'نقاط پایانی', - endpointsDocLink: 'مشاهده سند', - actionNum: '{{عدد}} {{اقدام}} شامل', - endpointDisableContent: 'آیا می خواهید {{name}} را غیرفعال کنید؟', - endpointModalTitle: 'راه اندازی اندپوینت', - endpointsTip: - 'این افزونه عملکردهای خاصی را از طریق نقاط پایانی ارائه می دهد و می توانید چندین مجموعه نقطه پایانی را برای فضای کاری فعلی پیکربندی کنید.', - serviceOk: 'خدمات خوب', - modelNum: '{{عدد}} مدل های گنجانده شده است', - endpointDisableTip: 'غیرفعال کردن نقطه پایانی', - configureModel: 'مدل را پیکربندی کنید', - configureTool: 'ابزار پیکربندی', - endpointsEmpty: 'برای افزودن نقطه پایانی روی دکمه "+" کلیک کنید', - endpointModalDesc: - 'پس از پیکربندی، می توان از ویژگی های ارائه شده توسط افزونه از طریق نقاط پایانی API استفاده کرد.', - switchVersion: 'نسخه سوئیچ', - endpointDeleteContent: 'آیا می خواهید {{name}} را حذف کنید؟', - deprecation: { - reason: { - ownershipTransferred: 'مالکیت منتقل شد', - businessAdjustments: 'تنظیمات کسب و کار', - noMaintainer: 'بدون نگهدارنده', - }, - noReason: 'این افزونه منسوخ شده است و دیگر به روز رسانی نخواهد شد.', - onlyReason: - 'این افزونه به دلیل {{deprecatedReason}} منسوخ شده و دیگر به‌روزرسانی نخواهد شد.', - fullMessage: - 'این افزونه به دلیل {{deprecatedReason}} منسوخ شده است و دیگر به‌روزرسانی نخواهد شد. لطفا به‌جای آن از {{-alternativePluginId}} استفاده کنید.', - }, - }, - debugInfo: { - title: 'اشکال زدایی', - viewDocs: 'مشاهده اسناد', - }, - privilege: { - everyone: 'همه', - admins: 'مدیران', - whoCanInstall: 'چه کسی می تواند افزونه ها را نصب و مدیریت کند؟', - title: 'تنظیمات پلاگین', - noone: 'هیچ', - whoCanDebug: 'چه کسی می تواند افزونه ها را اشکال زدایی کند؟', - }, - pluginInfoModal: { - repository: 'مخزن', - packageName: 'بسته', - title: 'اطلاعات پلاگین', - release: 'انتشار', - }, - action: { - pluginInfo: 'اطلاعات پلاگین', - usedInApps: 'این افزونه در برنامه های {{num}} استفاده می شود.', - deleteContentLeft: 'آیا می خواهید', - checkForUpdates: 'بررسی به روزرسانی ها', - delete: 'حذف افزونه', - deleteContentRight: 'افزونه?', - }, - installModal: { - labels: { - package: 'بسته', - version: 'نسخهٔ', - repository: 'مخزن', - }, - back: 'بازگشت', - next: 'بعدی', - cancel: 'لغو', - uploadingPackage: 'آپلود {{packageName}}...', - fromTrustSource: - 'لطفا مطمئن شوید که افزونه ها را فقط از یک منبع قابل اعتماد نصب می کنید.', - readyToInstall: 'در مورد نصب افزونه زیر', - install: 'نصب', - pluginLoadError: 'خطای بارگذاری افزونه', - pluginLoadErrorDesc: 'این افزونه نصب نخواهد شد', - close: 'نزدیک', - installFailed: 'نصب ناموفق بود', - installFailedDesc: 'افزونه نصب شده است ناموفق است.', - installedSuccessfullyDesc: 'این افزونه با موفقیت نصب شد.', - dropPluginToInstall: 'بسته افزونه را برای نصب اینجا رها کنید', - installing: 'نصب...', - readyToInstallPackage: 'در مورد نصب افزونه زیر', - readyToInstallPackages: 'در شرف نصب افزونه های {{num}} زیر', - installedSuccessfully: 'نصب موفقیت آمیز بود', - installPlugin: 'افزونه را نصب کنید', - installComplete: 'نصب کامل شد', - uploadFailed: 'آپلود انجام نشد', - installWarning: 'این افزونه اجازه نصب ندارد.', - }, - installFromGitHub: { - installPlugin: 'افزونه را از GitHub نصب کنید', - selectPackagePlaceholder: 'لطفا یک بسته را انتخاب کنید', - gitHubRepo: 'مخزن GitHub', - updatePlugin: 'افزونه را از GitHub به روز کنید', - uploadFailed: 'آپلود انجام نشد', - installedSuccessfully: 'نصب موفقیت آمیز بود', - installNote: - 'لطفا مطمئن شوید که افزونه ها را فقط از یک منبع قابل اعتماد نصب می کنید.', - installFailed: 'نصب ناموفق بود', - selectVersionPlaceholder: 'لطفا یک نسخه را انتخاب کنید', - selectPackage: 'بسته را انتخاب کنید', - selectVersion: 'انتخاب نسخه', - }, - upgrade: { - usedInApps: 'استفاده شده در برنامه های {{num}}', - successfulTitle: 'نصب موفقیت آمیز', - close: 'نزدیک', - title: 'افزونه را نصب کنید', - upgrading: 'نصب...', - upgrade: 'نصب', - description: 'در مورد نصب افزونه زیر', - }, - error: { - noReleasesFound: - 'هیچ نسخه ای یافت نشد. لطفا مخزن GitHub یا URL ورودی را بررسی کنید.', - inValidGitHubUrl: - 'URL GitHub نامعتبر است. لطفا یک URL معتبر را در قالب وارد کنید: https://github.com/owner/repo', - fetchReleasesError: - 'امکان بازیابی نسخه ها وجود ندارد. لطفا بعدا دوباره امتحان کنید.', - }, - marketplace: { - sortOption: { - firstReleased: 'اولین منتشر شد', - recentlyUpdated: 'اخیرا به روز شده است', - mostPopular: 'محبوب ترین', - newlyReleased: 'تازه منتشر شده', - }, - and: 'و', - viewMore: 'بیشتر ببینید', - moreFrom: 'اطلاعات بیشتر از Marketplace', - pluginsResult: 'نتایج {{num}}', - noPluginFound: 'هیچ افزونه ای یافت نشد', - sortBy: 'شهر سیاه', - difyMarketplace: 'بازار دیفی', - empower: 'توسعه هوش مصنوعی خود را توانمند کنید', - discover: 'کشف', - verifiedTip: 'تأیید شده توسط دیفی', - partnerTip: 'تأیید شده توسط یک شریک دیفی', - }, - task: { - installing: 'نصب پلاگین های {{installingLength}}، 0 انجام شد.', - clearAll: 'پاک کردن همه', - installedError: 'افزونه های {{errorLength}} نصب نشدند', - installError: 'پلاگین های {{errorLength}} نصب نشدند، برای مشاهده کلیک کنید', - installingWithSuccess: - 'نصب پلاگین های {{installingLength}}، {{successLength}} موفقیت آمیز است.', - installingWithError: - 'نصب پلاگین های {{installingLength}}، {{successLength}} با موفقیت مواجه شد، {{errorLength}} ناموفق بود', - installSuccess: '{{successLength}} plugins installed successfully', - installed: 'Installed', - runningPlugins: 'Installing Plugins', - successPlugins: 'Successfully Installed Plugins', - errorPlugins: 'Failed to Install Plugins', - }, - searchTools: 'ابزارهای جستجو...', - findMoreInMarketplace: 'اطلاعات بیشتر در Marketplace', - searchInMarketplace: 'جستجو در Marketplace', - searchCategories: 'دسته بندی ها را جستجو کنید', - fromMarketplace: 'از بازار', - installPlugin: 'افزونه را نصب کنید', - from: 'از', - install: '{{num}} نصب می شود', - endpointsEnabled: '{{num}} مجموعه نقاط پایانی فعال شده است', - searchPlugins: 'جستجوی افزونه ها', - installFrom: 'نصب از', - installAction: 'نصب', - allCategories: 'همه دسته بندی ها', - search: 'جستجو', - metadata: { - title: 'پلاگین ها', - }, - difyVersionNotCompatible: - 'نسخه فعلی دیفی با این پلاگین سازگار نیست، لطفاً به نسخه حداقل مورد نیاز به‌روزرسانی کنید: {{minimalDifyVersion}}', - requestAPlugin: 'درخواست یک افزونه', - publishPlugins: 'انتشار افزونه ها', - auth: { - useOAuthAuth: 'از مجوز OAuth استفاده کنید', - oauthClient: 'کلاینت اوتور', - custom: 'سفارشی', - addOAuth: 'OAuth اضافه کنید', - workspaceDefault: 'پیش فرض محیط کار', - authorization: 'مجوز', - default: 'پیش‌فرض', - setupOAuth: 'راه‌اندازی کلاینت OAuth', - useOAuth: 'از OAuth استفاده کنید', - setDefault: 'به عنوان پیش‌فرض تنظیم شود', - useApi: 'از کلید API استفاده کنید', - useApiAuth: 'پیکربندی مجوز کلید API', - authRemoved: 'منبع حذف شد', - authorizations: 'مجوزها', - authorizationName: 'نام مجوز', - addApi: 'کلید API را اضافه کنید', - saveAndAuth: 'ذخیره و تأیید', - saveOnly: 'فقط ذخیره کنید', - oauthClientSettings: 'تنظیمات کلاینت اوتور', - clientInfo: - 'از آنجایی که هیچ راز مشتری سیستم برای این ارائه‌دهنده ابزار پیدا نشد، تنظیم دستی آن ضروری است، لطفاً برای redirect_uri از', - useApiAuthDesc: - 'پس از پیکربندی اعتبارنامه‌ها، تمامی اعضای درون فضای کاری می‌توانند از این ابزار هنگام نظم‌دهی به برنامه‌ها استفاده کنند.', - unavailable: 'در دسترس نیست', - credentialUnavailable: - 'دسترسی به مدارک در حال حاضر امکان‌پذیر نیست. لطفاً با مدیر تماس بگیرید.', - customCredentialUnavailable: - 'اعتبارنامه‌های سفارشی در حال حاضر در دسترس نیستند', - credentialUnavailableInButton: 'گواهی در دسترس نیست', - connectedWorkspace: 'فضای کاری متصل', - emptyAuth: 'لطفا احراز هویت را پیکربندی کنید', - }, - deprecated: 'منسوخ شده', - autoUpdate: { - strategy: { - disabled: { - name: 'ناتوان', - description: 'پلاگین‌ها به‌طور خودکار به‌روزرسانی نخواهند شد', - }, - fixOnly: { - name: 'فقط تعمیر کنید', - selectedDescription: 'به‌روزرسانی خودکار تنها برای نسخه‌های وصله', - description: - 'به‌روزرسانی خودکار فقط برای نسخه‌های پچ (مانند ۱.۰.۱ → ۱.۰.۲). تغییرات جزئی نسخه باعث راه‌اندازی به‌روزرسانی‌ها نمی‌شود.', - }, - latest: { - name: 'جدیدترین', - selectedDescription: 'همیشه به آخرین نسخه بروزرسانی کنید', - description: 'همیشه به آخرین نسخه بروزرسانی کنید', - }, - }, - upgradeMode: { - all: 'همه را بروزرسانی کن', - partial: 'فقط انتخاب شده', - exclude: 'انتخاب شده را استثنا کن', - }, - upgradeModePlaceholder: { - exclude: 'افزونه‌های انتخاب شده به‌صورت خودکار به‌روزرسانی نخواهند شد', - partial: - 'فقط پلاگین‌های انتخاب شده به‌روزرسانی خودکار خواهند داشت. در حال حاضر هیچ پلاگینی انتخاب نشده است، بنابراین هیچ پلاگینی به‌روزرسانی خودکار نخواهد شد.', - }, - operation: { - select: 'افزونه‌ها را انتخاب کنید', - clearAll: 'همه را پاک کن', - }, - pluginDowngradeWarning: { - title: 'کاهش نسخه افزونه', - downgrade: 'به هر حال تنزل دهید', - exclude: 'از بروزرسانی خودکار مستثنی شود', - description: - 'به‌روزرسانی خودکار برای این افزونه در حال حاضر فعال است. کاهش نسخه ممکن است باعث شود تغییرات شما در حین به‌روزرسانی خودکار بعدی نادیده گرفته شود.', - }, - noPluginPlaceholder: { - noFound: 'هیچ افزونه‌ای یافت نشد', - noInstalled: 'هیچ افزونه‌ای نصب نشده است', - }, - updateTimeTitle: 'زمان به‌روزرسانی', - specifyPluginsToUpdate: 'ماژول‌هایی را برای به‌روزرسانی مشخص کنید', - updateTime: 'زمان به‌روزرسانی', - automaticUpdates: 'بروز رسانی خودکار', - updateSettings: 'تنظیمات را به‌روزرسانی کنید', - changeTimezone: - 'برای تغییر منطقه زمانی، به تنظیمات بروید', - excludeUpdate: - 'پلاگین‌های زیر {{num}} به‌طور خودکار به‌روزرسانی نخواهند شد', - nextUpdateTime: 'به‌روزرسانی خودکار بعدی: {{time}}', - partialUPdate: - 'تنها {{num}} پلاگین زیر به‌طور خودکار به‌روزرسانی خواهد شد.', - }, - readmeInfo: { - title: 'خواندنی', - needHelpCheckReadme: 'نیاز به کمک دارید؟ فایل README را بررسی کنید.', - noReadmeAvailable: 'بدون پرونده README موجود', - failedToFetch: 'بارگیری فایل README با شکست مواجه شد', - }, -} - -export default translation diff --git a/web/i18n/fa-IR/register.json b/web/i18n/fa-IR/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/fa-IR/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/fa-IR/register.ts b/web/i18n/fa-IR/register.ts deleted file mode 100644 index 928649474b..0000000000 --- a/web/i18n/fa-IR/register.ts +++ /dev/null @@ -1,4 +0,0 @@ -const translation = { -} - -export default translation diff --git a/web/i18n/fa-IR/run-log.json b/web/i18n/fa-IR/run-log.json new file mode 100644 index 0000000000..08e5e7e465 --- /dev/null +++ b/web/i18n/fa-IR/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "ورودی", + "result": "نتیجه", + "detail": "جزئیات", + "tracing": "ردیابی", + "resultPanel": { + "status": "وضعیت", + "time": "زمان گذشته", + "tokens": "کل توکن‌ها" + }, + "meta": { + "title": "فراداده", + "status": "وضعیت", + "version": "نسخه", + "executor": "اجراکننده", + "startTime": "زمان شروع", + "time": "زمان گذشته", + "tokens": "کل توکن‌ها", + "steps": "گام‌های اجرا" + }, + "resultEmpty": { + "title": "این اجرا فقط خروجی به فرمت JSON دارد،", + "tipLeft": "لطفاً به ", + "link": "پنل جزئیات", + "tipRight": " بروید و آن را مشاهده کنید." + }, + "actionLogs": "گزارش های اکشن", + "circularInvocationTip": "فراخوانی دایره ای ابزارها/گره ها در گردش کار فعلی وجود دارد." +} diff --git a/web/i18n/fa-IR/run-log.ts b/web/i18n/fa-IR/run-log.ts deleted file mode 100644 index e84450e7dc..0000000000 --- a/web/i18n/fa-IR/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -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: ' بروید و آن را مشاهده کنید.', - }, - actionLogs: 'گزارش های اکشن', - circularInvocationTip: 'فراخوانی دایره ای ابزارها/گره ها در گردش کار فعلی وجود دارد.', -} - -export default translation diff --git a/web/i18n/fa-IR/share.json b/web/i18n/fa-IR/share.json new file mode 100644 index 0000000000..51cd5cc0de --- /dev/null +++ b/web/i18n/fa-IR/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "", + "appUnavailable": "اپ در دسترس نیست", + "appUnknownError": "اپ در دسترس نیست" + }, + "chat": { + "newChat": "چت جدید", + "pinnedTitle": "پین شده", + "unpinnedTitle": "چت‌ها", + "newChatDefaultName": "مکالمه جدید", + "resetChat": "بازنشانی مکالمه", + "poweredBy": "قدرت‌گرفته از", + "prompt": "پیشنهاد", + "privatePromptConfigTitle": "تنظیمات مکالمه", + "publicPromptConfigTitle": "پیشنهاد اولیه", + "configStatusDes": "قبل از شروع، می‌توانید تنظیمات مکالمه را تغییر دهید", + "configDisabled": "تنظیمات جلسه قبلی برای این جلسه استفاده شده است.", + "startChat": "شروع چت", + "privacyPolicyLeft": "لطفاً ", + "privacyPolicyMiddle": "سیاست حریم خصوصی", + "privacyPolicyRight": " ارائه شده توسط توسعه‌دهنده اپ را بخوانید.", + "deleteConversation": { + "title": "حذف مکالمه", + "content": "آیا مطمئن هستید که می‌خواهید این مکالمه را حذف کنید؟" + }, + "tryToSolve": "سعی کنید حل کنید", + "temporarySystemIssue": "ببخشید، مشکل موقت سیستمی.", + "expand": "باز کردن", + "collapse": "بستن", + "newChatTip": "قبلاً در یک چت جدید", + "viewChatSettings": "تنظیمات چت را مشاهده کنید", + "chatFormTip": "تنظیمات چت پس از شروع چت قابل تغییر نیستند.", + "chatSettingsTitle": "راه‌اندازی چت جدید" + }, + "generation": { + "tabs": { + "create": "یک‌بار اجرا کن", + "batch": "اجرا به صورت گروهی", + "saved": "ذخیره شده" + }, + "savedNoData": { + "title": "شما هنوز نتیجه‌ای ذخیره نکرده‌اید!", + "description": "شروع به تولید محتوا کنید و نتایج ذخیره شده خود را اینجا پیدا کنید.", + "startCreateContent": "شروع به تولید محتوا" + }, + "title": "تکمیل هوش مصنوعی", + "queryTitle": "محتوای درخواست", + "completionResult": "نتیجه تکمیل", + "queryPlaceholder": "محتوای درخواست خود را بنویسید...", + "run": "اجرا", + "copy": "کپی", + "resultTitle": "تکمیل هوش مصنوعی", + "noData": "هوش مصنوعی آنچه را که می‌خواهید اینجا به شما می‌دهد.", + "csvUploadTitle": "فایل CSV خود را اینجا بکشید و رها کنید، یا ", + "browse": "جستجو", + "csvStructureTitle": "فایل CSV باید با ساختار زیر مطابقت داشته باشد:", + "downloadTemplate": "الگو را اینجا دانلود کنید", + "field": "فیلد", + "batchFailed": { + "info": "{{num}} اجرای ناموفق", + "retry": "تلاش مجدد", + "outputPlaceholder": "محتوای خروجی وجود ندارد" + }, + "errorMsg": { + "empty": "لطفاً محتوا را در فایل بارگذاری شده وارد کنید.", + "fileStructNotMatch": "فایل CSV بارگذاری شده با ساختار مطابقت ندارد.", + "emptyLine": "ردیف {{rowIndex}} خالی است", + "invalidLine": "ردیف {{rowIndex}}: مقدار {{varName}} نمی‌تواند خالی باشد", + "moreThanMaxLengthLine": "ردیف {{rowIndex}}: مقدار {{varName}} نمی‌تواند بیشتر از {{maxLength}} کاراکتر باشد", + "atLeastOne": "لطفاً حداقل یک ردیف در فایل بارگذاری شده وارد کنید." + }, + "execution": "اجرا", + "executions": "{{num}} بار اجرا", + "stopRun": "توقف اجرا" + }, + "login": { + "backToHome": "بازگشت به خانه" + } +} diff --git a/web/i18n/fa-IR/share.ts b/web/i18n/fa-IR/share.ts deleted file mode 100644 index ee40f6bab5..0000000000 --- a/web/i18n/fa-IR/share.ts +++ /dev/null @@ -1,82 +0,0 @@ -const translation = { - common: { - welcome: '', - appUnavailable: 'اپ در دسترس نیست', - appUnknownError: 'اپ در دسترس نیست', - }, - chat: { - newChat: 'چت جدید', - pinnedTitle: 'پین شده', - unpinnedTitle: 'چت‌ها', - newChatDefaultName: 'مکالمه جدید', - resetChat: 'بازنشانی مکالمه', - poweredBy: 'قدرت‌گرفته از', - prompt: 'پیشنهاد', - privatePromptConfigTitle: 'تنظیمات مکالمه', - publicPromptConfigTitle: 'پیشنهاد اولیه', - configStatusDes: 'قبل از شروع، می‌توانید تنظیمات مکالمه را تغییر دهید', - configDisabled: 'تنظیمات جلسه قبلی برای این جلسه استفاده شده است.', - startChat: 'شروع چت', - privacyPolicyLeft: 'لطفاً ', - privacyPolicyMiddle: 'سیاست حریم خصوصی', - privacyPolicyRight: ' ارائه شده توسط توسعه‌دهنده اپ را بخوانید.', - deleteConversation: { - title: 'حذف مکالمه', - content: 'آیا مطمئن هستید که می‌خواهید این مکالمه را حذف کنید؟', - }, - tryToSolve: 'سعی کنید حل کنید', - temporarySystemIssue: 'ببخشید، مشکل موقت سیستمی.', - expand: 'باز کردن', - collapse: 'بستن', - newChatTip: 'قبلاً در یک چت جدید', - viewChatSettings: 'تنظیمات چت را مشاهده کنید', - chatFormTip: 'تنظیمات چت پس از شروع چت قابل تغییر نیستند.', - chatSettingsTitle: 'راه‌اندازی چت جدید', - }, - generation: { - tabs: { - create: 'یک‌بار اجرا کن', - batch: 'اجرا به صورت گروهی', - saved: 'ذخیره شده', - }, - savedNoData: { - title: 'شما هنوز نتیجه‌ای ذخیره نکرده‌اید!', - description: 'شروع به تولید محتوا کنید و نتایج ذخیره شده خود را اینجا پیدا کنید.', - startCreateContent: 'شروع به تولید محتوا', - }, - title: 'تکمیل هوش مصنوعی', - queryTitle: 'محتوای درخواست', - completionResult: 'نتیجه تکمیل', - queryPlaceholder: 'محتوای درخواست خود را بنویسید...', - run: 'اجرا', - copy: 'کپی', - resultTitle: 'تکمیل هوش مصنوعی', - noData: 'هوش مصنوعی آنچه را که می‌خواهید اینجا به شما می‌دهد.', - csvUploadTitle: 'فایل CSV خود را اینجا بکشید و رها کنید، یا ', - browse: 'جستجو', - csvStructureTitle: 'فایل CSV باید با ساختار زیر مطابقت داشته باشد:', - downloadTemplate: 'الگو را اینجا دانلود کنید', - field: 'فیلد', - batchFailed: { - info: '{{num}} اجرای ناموفق', - retry: 'تلاش مجدد', - outputPlaceholder: 'محتوای خروجی وجود ندارد', - }, - errorMsg: { - empty: 'لطفاً محتوا را در فایل بارگذاری شده وارد کنید.', - fileStructNotMatch: 'فایل CSV بارگذاری شده با ساختار مطابقت ندارد.', - emptyLine: 'ردیف {{rowIndex}} خالی است', - invalidLine: 'ردیف {{rowIndex}}: مقدار {{varName}} نمی‌تواند خالی باشد', - moreThanMaxLengthLine: 'ردیف {{rowIndex}}: مقدار {{varName}} نمی‌تواند بیشتر از {{maxLength}} کاراکتر باشد', - atLeastOne: 'لطفاً حداقل یک ردیف در فایل بارگذاری شده وارد کنید.', - }, - execution: 'اجرا', - executions: '{{num}} بار اجرا', - stopRun: 'توقف اجرا', - }, - login: { - backToHome: 'بازگشت به خانه', - }, -} - -export default translation diff --git a/web/i18n/fa-IR/time.json b/web/i18n/fa-IR/time.json new file mode 100644 index 0000000000..87d62bccfc --- /dev/null +++ b/web/i18n/fa-IR/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Sat": "شنبه", + "Sun": "خورشید", + "Mon": "مون", + "Wed": "چهارشنبه", + "Fri": "جمعه", + "Tue": "سه شنبه", + "Thu": "پنج‌شنبه" + }, + "months": { + "October": "اکتبر", + "February": "فوریه", + "September": "سپتامبر", + "July": "جولای", + "August": "اوت", + "January": "ژانویه", + "April": "آوریل", + "November": "نوامبر", + "March": "مارس", + "May": "مه", + "June": "ژوئن", + "December": "دسامبر" + }, + "operation": { + "pickDate": "تاریخ را انتخاب کنید", + "ok": "خوب", + "now": "حالا", + "cancel": "لغو" + }, + "title": { + "pickTime": "زمان انتخاب کنید" + }, + "defaultPlaceholder": "زمانی را انتخاب کنید...", + "dateFormats": { + "output": "YYYY-MM-DD", + "input": "YYYY-MM-DD", + "display": "MMMM D, YYYY", + "displayWithTime": "MMMM D, YYYY hh:mm A", + "outputWithTime": "YYYY-MM-DDTHH:mm:ss.SSSZ" + } +} diff --git a/web/i18n/fa-IR/time.ts b/web/i18n/fa-IR/time.ts deleted file mode 100644 index 1f0452d172..0000000000 --- a/web/i18n/fa-IR/time.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - daysInWeek: { - Sat: 'شنبه', - Sun: 'خورشید', - Mon: 'مون', - Wed: 'چهارشنبه', - Fri: 'جمعه', - Tue: 'سه شنبه', - Thu: 'پنج‌شنبه', - }, - months: { - October: 'اکتبر', - February: 'فوریه', - September: 'سپتامبر', - July: 'جولای', - August: 'اوت', - January: 'ژانویه', - April: 'آوریل', - November: 'نوامبر', - March: 'مارس', - May: 'مه', - June: 'ژوئن', - December: 'دسامبر', - }, - operation: { - pickDate: 'تاریخ را انتخاب کنید', - ok: 'خوب', - now: 'حالا', - cancel: 'لغو', - }, - title: { - pickTime: 'زمان انتخاب کنید', - }, - defaultPlaceholder: 'زمانی را انتخاب کنید...', - dateFormats: { - output: 'YYYY-MM-DD', - input: 'YYYY-MM-DD', - display: 'MMMM D, YYYY', - displayWithTime: 'MMMM D, YYYY hh:mm A', - outputWithTime: 'YYYY-MM-DDTHH:mm:ss.SSSZ', - }, -} - -export default translation diff --git a/web/i18n/fa-IR/tools.json b/web/i18n/fa-IR/tools.json new file mode 100644 index 0000000000..9b19ab2a74 --- /dev/null +++ b/web/i18n/fa-IR/tools.json @@ -0,0 +1,262 @@ +{ + "title": "ابزارها", + "createCustomTool": "ایجاد ابزار سفارشی", + "customToolTip": "بیشتر در مورد ابزارهای سفارشی Dify بیاموزید", + "type": { + "builtIn": "سفارشی شده", + "custom": "سفارشی", + "workflow": "جریان کار" + }, + "contribute": { + "line1": "من علاقه‌مند به ", + "line2": "مشارکت در ابزارهای Dify هستم.", + "viewGuide": "مشاهده راهنما" + }, + "author": "توسط", + "auth": { + "authorized": "مجوز داده شده", + "setup": "تنظیم مجوز برای استفاده", + "setupModalTitle": "تنظیم مجوز", + "setupModalTitleDescription": "پس از پیکربندی اعتبارنامه‌ها، همه اعضای موجود در فضای کاری می‌توانند از این ابزار هنگام هماهنگی برنامه‌ها استفاده کنند." + }, + "includeToolNum": "{{num}} ابزار شامل شد", + "addToolModal": { + "type": "نوع", + "category": "دسته‌بندی", + "added": "افزوده شد", + "custom": { + "title": "هیچ ابزار سفارشی موجود نیست", + "tip": "یک ابزار سفارشی ایجاد کنید" + }, + "workflow": { + "title": "هیچ ابزار جریان کاری موجود نیست", + "tip": "جریان‌های کاری را به عنوان ابزار در استودیو منتشر کنید" + }, + "mcp": { + "title": "هیچ ابزار MCP موجود نیست", + "tip": "یک سرور MCP اضافه کنید" + }, + "agent": { + "title": "هیچ استراتژی عاملی موجود نیست" + } + }, + "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 Header، می‌توانید آن را با \"Authorization\" ترک کنید اگر نمی‌دانید چیست یا آن را به یک مقدار سفارشی تنظیم کنید", + "types": { + "none": "هیچ", + "apiKeyPlaceholder": "نام هدر HTTP برای کلید API", + "apiValuePlaceholder": "کلید API را وارد کنید", + "api_key_header": "عنوان", + "api_key_query": "پارامتر جستجو", + "queryParamPlaceholder": "نام پارامتر جستجو برای کلید API" + }, + "key": "کلید", + "value": "مقدار", + "queryParam": "پارامتر جستجو", + "queryParamTooltip": "نام پارامتر پرس و جو کلید API که باید ارسال شود، به عنوان مثال \"key\" در \"https://example.com/test?key=API_KEY\"." + }, + "authHeaderPrefix": { + "title": "نوع مجوز", + "types": { + "basic": "پایه", + "bearer": "Bearer", + "custom": "سفارشی" + } + }, + "privacyPolicy": "سیاست حفظ حریم خصوصی", + "privacyPolicyPlaceholder": "لطفاً سیاست حفظ حریم خصوصی را وارد کنید", + "toolInput": { + "title": "ورودی ابزار", + "name": "نام", + "required": "الزامی", + "method": "روش", + "methodSetting": "تنظیم", + "methodSettingTip": "کاربر پیکربندی ابزار را پر می‌کند", + "methodParameter": "پارامتر", + "methodParameterTip": "LLM در طول استنباط پر می‌کند", + "label": "برچسب‌ها", + "labelPlaceholder": "برچسب‌ها را انتخاب کنید (اختیاری)", + "description": "توضیحات", + "descriptionPlaceholder": "توضیحات معنی پارامتر" + }, + "customDisclaimer": "توجهیه سفارشی", + "customDisclaimerPlaceholder": "لطفاً توجهیه سفارشی را وارد کنید", + "confirmTitle": "آیا می‌خواهید ذخیره کنید؟", + "confirmTip": "برنامه‌هایی که از این ابزار استفاده می‌کنند تحت تأثیر قرار خواهند گرفت", + "deleteToolConfirmTitle": "آیا این ابزار را حذف کنید؟", + "deleteToolConfirmContent": "حذف ابزار غیرقابل بازگشت است. کاربران دیگر قادر به دسترسی به ابزار شما نخواهند بود.", + "toolOutput": { + "title": "خروجی ابزار", + "name": "نام", + "reserved": "رزرو شده", + "reservedParameterDuplicateTip": "متن، JSON و فایل‌ها متغیرهای رزرو شده هستند. متغیرهایی با این نام‌ها نمی‌توانند در طرح خروجی ظاهر شوند.", + "description": "توضیحات" + } + }, + "test": { + "title": "آزمایش", + "parametersValue": "پارامترها و مقدار", + "parameters": "پارامترها", + "value": "مقدار", + "testResult": "نتایج آزمایش", + "testResultPlaceholder": "نتیجه آزمایش در اینجا نمایش داده می‌شود" + }, + "thought": { + "using": "در حال استفاده", + "used": "استفاده شده", + "requestTitle": "درخواست به", + "responseTitle": "پاسخ از" + }, + "setBuiltInTools": { + "info": "اطلاعات", + "setting": "تنظیمات", + "toolDescription": "توضیحات ابزار", + "parameters": "پارامترها", + "string": "رشته", + "number": "عدد", + "required": "الزامی", + "infoAndSetting": "اطلاعات و تنظیمات", + "file": "فایل" + }, + "noCustomTool": { + "title": "ابزار سفارشی وجود ندارد!", + "content": "ابزارهای سفارشی خود را در اینجا اضافه و مدیریت کنید تا برنامه‌های هوش مصنوعی بسازید.", + "createTool": "ایجاد ابزار" + }, + "noSearchRes": { + "title": "متأسفیم، نتیجه‌ای پیدا نشد!", + "content": "ما نتوانستیم ابزارهایی که با جستجوی شما مطابقت داشته باشد پیدا کنیم.", + "reset": "بازنشانی جستجو" + }, + "builtInPromptTitle": "پرامپت", + "toolRemoved": "ابزار حذف شد", + "notAuthorized": "ابزار مجوز ندارد", + "howToGet": "چگونه دریافت کنید", + "openInStudio": "باز کردن در استودیو", + "toolNameUsageTip": "نام فراخوانی ابزار برای استدلال و پرامپت‌های عامل", + "copyToolName": "کپی نام", + "noTools": "هیچ ابزاری یافت نشد", + "mcp": { + "create": { + "cardTitle": "افزودن سرور MCP (HTTP)", + "cardLink": "اطلاعات بیشتر درباره یکپارچه‌سازی سرور MCP" + }, + "noConfigured": "سرور پیکربندی نشده", + "updateTime": "آخرین بروزرسانی", + "toolsCount": "{count} ابزار", + "noTools": "ابزاری موجود نیست", + "modal": { + "title": "افزودن سرور MCP (HTTP)", + "editTitle": "ویرایش سرور MCP (HTTP)", + "name": "نام و آیکون", + "namePlaceholder": "برای سرور MCP خود نام انتخاب کنید", + "serverUrl": "آدرس سرور", + "serverUrlPlaceholder": "URL نقطه پایانی سرور", + "serverUrlWarning": "به‌روزرسانی آدرس سرور ممکن است برنامه‌های وابسته به آن را مختل کند", + "serverIdentifier": "شناسه سرور", + "serverIdentifierTip": "شناسه منحصر به فرد برای سرور MCP در فضای کاری. فقط حروف کوچک، اعداد، زیرخط و خط تیره. حداکثر 24 کاراکتر.", + "serverIdentifierPlaceholder": "شناسه منحصر به فرد، مثال: my-mcp-server", + "serverIdentifierWarning": "پس از تغییر شناسه، سرور توسط برنامه‌های موجود شناسایی نخواهد شد", + "cancel": "لغو", + "save": "ذخیره", + "confirm": "افزودن و مجوزدهی", + "timeout": "مهلت", + "sseReadTimeout": "زمان.out خواندن SSE", + "headers": "هدرها", + "timeoutPlaceholder": "30", + "headerKey": "نام هدر", + "headerValue": "مقدار هدر", + "addHeader": "هدر اضافه کنید", + "headerKeyPlaceholder": "Authorization", + "headerValuePlaceholder": "مثلاً، Bearer 123", + "noHeaders": "هیچ هدر سفارشی پیکربندی نشده است", + "headersTip": "هدرهای HTTP اضافی برای ارسال با درخواست‌های سرور MCP", + "maskedHeadersTip": "مقدارهای هدر به خاطر امنیت مخفی شده‌اند. تغییرات مقادیر واقعی را به‌روزرسانی خواهد کرد.", + "authentication": "احراز هویت", + "configurations": "تنظیمات", + "clientSecretPlaceholder": "رمز مشتری", + "clientID": "شناسه مشتری", + "clientSecret": "رمز مشتری", + "useDynamicClientRegistration": "استفاده از ثبت‌نام پویا برای مشتری", + "redirectUrlWarning": "لطفاً URL بازگشت OAuth خود را پیکربندی کنید به:" + }, + "delete": "حذف سرور MCP", + "deleteConfirmTitle": "آیا مایل به حذف {mcp} هستید؟", + "operation": { + "edit": "ویرایش", + "remove": "حذف" + }, + "authorize": "مجوزدهی", + "authorizing": "در حال مجوزدهی...", + "authorizingRequired": "مجوز مورد نیاز است", + "authorizeTip": "پس از مجوزدهی، ابزارها در اینجا نمایش داده می‌شوند.", + "update": "به‌روزرسانی", + "updating": "در حال به‌روزرسانی...", + "gettingTools": "دریافت ابزارها...", + "updateTools": "به‌روزرسانی ابزارها...", + "toolsEmpty": "ابزارها بارگیری نشدند", + "getTools": "دریافت ابزارها", + "toolUpdateConfirmTitle": "به‌روزرسانی فهرست ابزارها", + "toolUpdateConfirmContent": "به‌روزرسانی فهرست ابزارها ممکن است بر برنامه‌های موجود تأثیر بگذارد. آیا ادامه می‌دهید؟", + "toolsNum": "{count} ابزار موجود است", + "onlyTool": "1 ابزار موجود است", + "identifier": "شناسه سرور (کلیک برای کپی)", + "server": { + "title": "سرور MCP", + "url": "آدرس سرور", + "reGen": "تولید مجدد آدرس سرور؟", + "addDescription": "افزودن توضیحات", + "edit": "ویرایش توضیحات", + "modal": { + "addTitle": "برای فعال‌سازی سرور MCP توضیحات اضافه کنید", + "editTitle": "ویرایش توضیحات", + "description": "توضیحات", + "descriptionPlaceholder": "عملکرد این ابزار و نحوه استفاده LLM از آن را توضیح دهید", + "parameters": "پارامترها", + "parametersTip": "برای کمک به LLM در درک هدف و محدودیت‌ها، برای هر پارامتر توضیحات اضافه کنید.", + "parametersPlaceholder": "هدف و محدودیت‌های پارامتر", + "confirm": "فعال‌سازی سرور MCP" + }, + "publishTip": "برنامه منتشر نشده است. لطفاً ابتدا برنامه را منتشر کنید." + }, + "toolItem": { + "parameters": "پارامترها", + "noDescription": "بدون توضیح" + } + }, + "allTools": "همه ابزارها" +} diff --git a/web/i18n/fa-IR/tools.ts b/web/i18n/fa-IR/tools.ts deleted file mode 100644 index 2bce2a2995..0000000000 --- a/web/i18n/fa-IR/tools.ts +++ /dev/null @@ -1,264 +0,0 @@ -const translation = { - title: 'ابزارها', - createCustomTool: 'ایجاد ابزار سفارشی', - customToolTip: 'بیشتر در مورد ابزارهای سفارشی Dify بیاموزید', - type: { - builtIn: 'سفارشی شده', - custom: 'سفارشی', - workflow: 'جریان کار', - }, - contribute: { - line1: 'من علاقه‌مند به ', - line2: 'مشارکت در ابزارهای Dify هستم.', - viewGuide: 'مشاهده راهنما', - }, - author: 'توسط', - auth: { - authorized: 'مجوز داده شده', - setup: 'تنظیم مجوز برای استفاده', - setupModalTitle: 'تنظیم مجوز', - setupModalTitleDescription: 'پس از پیکربندی اعتبارنامه‌ها، همه اعضای موجود در فضای کاری می‌توانند از این ابزار هنگام هماهنگی برنامه‌ها استفاده کنند.', - }, - includeToolNum: '{{num}} ابزار شامل شد', - addToolModal: { - type: 'نوع', - category: 'دسته‌بندی', - added: 'افزوده شد', - custom: { - title: 'هیچ ابزار سفارشی موجود نیست', - tip: 'یک ابزار سفارشی ایجاد کنید', - }, - workflow: { - title: 'هیچ ابزار جریان کاری موجود نیست', - tip: 'جریان‌های کاری را به عنوان ابزار در استودیو منتشر کنید', - }, - mcp: { - title: 'هیچ ابزار MCP موجود نیست', - tip: 'یک سرور MCP اضافه کنید', - }, - agent: { - title: 'هیچ استراتژی عاملی موجود نیست', - }, - }, - 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 Header، می‌توانید آن را با "Authorization" ترک کنید اگر نمی‌دانید چیست یا آن را به یک مقدار سفارشی تنظیم کنید', - types: { - none: 'هیچ', - apiKeyPlaceholder: 'نام هدر HTTP برای کلید API', - apiValuePlaceholder: 'کلید API را وارد کنید', - api_key_header: 'عنوان', - api_key_query: 'پارامتر جستجو', - queryParamPlaceholder: 'نام پارامتر جستجو برای کلید API', - }, - key: 'کلید', - value: 'مقدار', - queryParam: 'پارامتر جستجو', - queryParamTooltip: 'نام پارامتر پرس و جو کلید API که باید ارسال شود، به عنوان مثال "key" در "https://example.com/test?key=API_KEY".', - }, - authHeaderPrefix: { - title: 'نوع مجوز', - types: { - basic: 'پایه', - bearer: 'Bearer', - custom: 'سفارشی', - }, - }, - privacyPolicy: 'سیاست حفظ حریم خصوصی', - privacyPolicyPlaceholder: 'لطفاً سیاست حفظ حریم خصوصی را وارد کنید', - toolInput: { - title: 'ورودی ابزار', - name: 'نام', - required: 'الزامی', - method: 'روش', - methodSetting: 'تنظیم', - methodSettingTip: 'کاربر پیکربندی ابزار را پر می‌کند', - methodParameter: 'پارامتر', - methodParameterTip: 'LLM در طول استنباط پر می‌کند', - label: 'برچسب‌ها', - labelPlaceholder: 'برچسب‌ها را انتخاب کنید (اختیاری)', - description: 'توضیحات', - descriptionPlaceholder: 'توضیحات معنی پارامتر', - }, - customDisclaimer: 'توجهیه سفارشی', - customDisclaimerPlaceholder: 'لطفاً توجهیه سفارشی را وارد کنید', - confirmTitle: 'آیا می‌خواهید ذخیره کنید؟', - confirmTip: 'برنامه‌هایی که از این ابزار استفاده می‌کنند تحت تأثیر قرار خواهند گرفت', - deleteToolConfirmTitle: 'آیا این ابزار را حذف کنید؟', - deleteToolConfirmContent: 'حذف ابزار غیرقابل بازگشت است. کاربران دیگر قادر به دسترسی به ابزار شما نخواهند بود.', - toolOutput: { - title: 'خروجی ابزار', - name: 'نام', - reserved: 'رزرو شده', - reservedParameterDuplicateTip: 'متن، JSON و فایل‌ها متغیرهای رزرو شده هستند. متغیرهایی با این نام‌ها نمی‌توانند در طرح خروجی ظاهر شوند.', - description: 'توضیحات', - }, - }, - test: { - title: 'آزمایش', - parametersValue: 'پارامترها و مقدار', - parameters: 'پارامترها', - value: 'مقدار', - testResult: 'نتایج آزمایش', - testResultPlaceholder: 'نتیجه آزمایش در اینجا نمایش داده می‌شود', - }, - thought: { - using: 'در حال استفاده', - used: 'استفاده شده', - requestTitle: 'درخواست به', - responseTitle: 'پاسخ از', - }, - setBuiltInTools: { - info: 'اطلاعات', - setting: 'تنظیمات', - toolDescription: 'توضیحات ابزار', - parameters: 'پارامترها', - string: 'رشته', - number: 'عدد', - required: 'الزامی', - infoAndSetting: 'اطلاعات و تنظیمات', - file: 'فایل', - }, - noCustomTool: { - title: 'ابزار سفارشی وجود ندارد!', - content: 'ابزارهای سفارشی خود را در اینجا اضافه و مدیریت کنید تا برنامه‌های هوش مصنوعی بسازید.', - createTool: 'ایجاد ابزار', - }, - noSearchRes: { - title: 'متأسفیم، نتیجه‌ای پیدا نشد!', - content: 'ما نتوانستیم ابزارهایی که با جستجوی شما مطابقت داشته باشد پیدا کنیم.', - reset: 'بازنشانی جستجو', - }, - builtInPromptTitle: 'پرامپت', - toolRemoved: 'ابزار حذف شد', - notAuthorized: 'ابزار مجوز ندارد', - howToGet: 'چگونه دریافت کنید', - openInStudio: 'باز کردن در استودیو', - toolNameUsageTip: 'نام فراخوانی ابزار برای استدلال و پرامپت‌های عامل', - copyToolName: 'کپی نام', - noTools: 'هیچ ابزاری یافت نشد', - mcp: { - create: { - cardTitle: 'افزودن سرور MCP (HTTP)', - cardLink: 'اطلاعات بیشتر درباره یکپارچه‌سازی سرور MCP', - }, - noConfigured: 'سرور پیکربندی نشده', - updateTime: 'آخرین بروزرسانی', - toolsCount: '{count} ابزار', - noTools: 'ابزاری موجود نیست', - modal: { - title: 'افزودن سرور MCP (HTTP)', - editTitle: 'ویرایش سرور MCP (HTTP)', - name: 'نام و آیکون', - namePlaceholder: 'برای سرور MCP خود نام انتخاب کنید', - serverUrl: 'آدرس سرور', - serverUrlPlaceholder: 'URL نقطه پایانی سرور', - serverUrlWarning: 'به‌روزرسانی آدرس سرور ممکن است برنامه‌های وابسته به آن را مختل کند', - serverIdentifier: 'شناسه سرور', - serverIdentifierTip: 'شناسه منحصر به فرد برای سرور MCP در فضای کاری. فقط حروف کوچک، اعداد، زیرخط و خط تیره. حداکثر 24 کاراکتر.', - serverIdentifierPlaceholder: 'شناسه منحصر به فرد، مثال: my-mcp-server', - serverIdentifierWarning: 'پس از تغییر شناسه، سرور توسط برنامه‌های موجود شناسایی نخواهد شد', - cancel: 'لغو', - save: 'ذخیره', - confirm: 'افزودن و مجوزدهی', - timeout: 'مهلت', - sseReadTimeout: 'زمان.out خواندن SSE', - headers: 'هدرها', - timeoutPlaceholder: '30', - headerKey: 'نام هدر', - headerValue: 'مقدار هدر', - addHeader: 'هدر اضافه کنید', - headerKeyPlaceholder: 'Authorization', - headerValuePlaceholder: 'مثلاً، Bearer 123', - noHeaders: 'هیچ هدر سفارشی پیکربندی نشده است', - headersTip: 'هدرهای HTTP اضافی برای ارسال با درخواست‌های سرور MCP', - maskedHeadersTip: 'مقدارهای هدر به خاطر امنیت مخفی شده‌اند. تغییرات مقادیر واقعی را به‌روزرسانی خواهد کرد.', - authentication: 'احراز هویت', - configurations: 'تنظیمات', - clientSecretPlaceholder: 'رمز مشتری', - clientID: 'شناسه مشتری', - clientSecret: 'رمز مشتری', - useDynamicClientRegistration: 'استفاده از ثبت‌نام پویا برای مشتری', - redirectUrlWarning: 'لطفاً URL بازگشت OAuth خود را پیکربندی کنید به:', - }, - delete: 'حذف سرور MCP', - deleteConfirmTitle: 'آیا مایل به حذف {mcp} هستید؟', - operation: { - edit: 'ویرایش', - remove: 'حذف', - }, - authorize: 'مجوزدهی', - authorizing: 'در حال مجوزدهی...', - authorizingRequired: 'مجوز مورد نیاز است', - authorizeTip: 'پس از مجوزدهی، ابزارها در اینجا نمایش داده می‌شوند.', - update: 'به‌روزرسانی', - updating: 'در حال به‌روزرسانی...', - gettingTools: 'دریافت ابزارها...', - updateTools: 'به‌روزرسانی ابزارها...', - toolsEmpty: 'ابزارها بارگیری نشدند', - getTools: 'دریافت ابزارها', - toolUpdateConfirmTitle: 'به‌روزرسانی فهرست ابزارها', - toolUpdateConfirmContent: 'به‌روزرسانی فهرست ابزارها ممکن است بر برنامه‌های موجود تأثیر بگذارد. آیا ادامه می‌دهید؟', - toolsNum: '{count} ابزار موجود است', - onlyTool: '1 ابزار موجود است', - identifier: 'شناسه سرور (کلیک برای کپی)', - server: { - title: 'سرور MCP', - url: 'آدرس سرور', - reGen: 'تولید مجدد آدرس سرور؟', - addDescription: 'افزودن توضیحات', - edit: 'ویرایش توضیحات', - modal: { - addTitle: 'برای فعال‌سازی سرور MCP توضیحات اضافه کنید', - editTitle: 'ویرایش توضیحات', - description: 'توضیحات', - descriptionPlaceholder: 'عملکرد این ابزار و نحوه استفاده LLM از آن را توضیح دهید', - parameters: 'پارامترها', - parametersTip: 'برای کمک به LLM در درک هدف و محدودیت‌ها، برای هر پارامتر توضیحات اضافه کنید.', - parametersPlaceholder: 'هدف و محدودیت‌های پارامتر', - confirm: 'فعال‌سازی سرور MCP', - }, - publishTip: 'برنامه منتشر نشده است. لطفاً ابتدا برنامه را منتشر کنید.', - }, - toolItem: { - parameters: 'پارامترها', - noDescription: 'بدون توضیح', - }, - }, - allTools: 'همه ابزارها', -} - -export default translation diff --git a/web/i18n/fa-IR/workflow.json b/web/i18n/fa-IR/workflow.json new file mode 100644 index 0000000000..33cb649269 --- /dev/null +++ b/web/i18n/fa-IR/workflow.json @@ -0,0 +1,1294 @@ +{ + "common": { + "undo": "بازگشت", + "redo": "پیشرفت", + "editing": "ویرایش", + "autoSaved": "ذخیره خودکار", + "unpublished": "منتشر نشده", + "published": "منتشر شده", + "publish": "انتشار", + "update": "به‌روزرسانی", + "run": "اجرای تست", + "running": "در حال اجرا", + "inRunMode": "در حالت اجرا", + "inPreview": "در پیش‌نمایش", + "inPreviewMode": "در حالت پیش‌نمایش", + "preview": "پیش‌نمایش", + "viewRunHistory": "مشاهده تاریخچه اجرا", + "runHistory": "تاریخچه اجرا", + "goBackToEdit": "بازگشت به ویرایشگر", + "conversationLog": "گزارش مکالمات", + "debugAndPreview": "پیش‌نمایش", + "restart": "راه‌اندازی مجدد", + "currentDraft": "پیش‌نویس فعلی", + "currentDraftUnpublished": "پیش‌نویس فعلی منتشر نشده", + "latestPublished": "آخرین نسخه منتشر شده", + "publishedAt": "منتشر شده", + "restore": "بازیابی", + "runApp": "اجرای اپلیکیشن", + "batchRunApp": "اجرای دسته‌ای اپلیکیشن", + "accessAPIReference": "دسترسی به مستندات API", + "embedIntoSite": "درج در سایت", + "addTitle": "افزودن عنوان...", + "addDescription": "افزودن توضیحات...", + "noVar": "هیچ متغیری", + "searchVar": "جستجوی متغیر", + "variableNamePlaceholder": "نام متغیر", + "setVarValuePlaceholder": "تنظیم متغیر", + "needConnectTip": "این مرحله به هیچ چیزی متصل نیست", + "maxTreeDepth": "حداکثر عمق {{depth}} نود در هر شاخه", + "workflowProcess": "فرآیند جریان کار", + "notRunning": "هنوز در حال اجرا نیست", + "previewPlaceholder": "محتوا را در کادر زیر وارد کنید تا اشکال‌زدایی چت‌بات را شروع کنید", + "effectVarConfirm": { + "title": "حذف متغیر", + "content": "متغیر در نودهای دیگر استفاده شده است. آیا همچنان می‌خواهید آن را حذف کنید؟" + }, + "insertVarTip": "برای درج سریع کلید '/' را فشار دهید", + "processData": "پردازش داده‌ها", + "input": "ورودی", + "output": "خروجی", + "jinjaEditorPlaceholder": "برای درج متغیر '/' یا '{' را تایپ کنید", + "viewOnly": "فقط مشاهده", + "showRunHistory": "نمایش تاریخچه اجرا", + "enableJinja": "فعال‌سازی پشتیبانی از الگوهای Jinja", + "learnMore": "اطلاعات بیشتر", + "copy": "کپی", + "duplicate": "تکرار", + "pasteHere": "چسباندن اینجا", + "pointerMode": "حالت اشاره‌گر", + "handMode": "حالت دست", + "model": "مدل", + "workflowAsTool": "جریان کار به عنوان ابزار", + "configureRequired": "پیکربندی مورد نیاز", + "configure": "پیکربندی", + "manageInTools": "مدیریت در ابزارها", + "workflowAsToolTip": "پیکربندی ابزار پس از به‌روزرسانی جریان کار مورد نیاز است.", + "viewDetailInTracingPanel": "مشاهده جزئیات", + "syncingData": "همگام‌سازی داده‌ها، فقط چند ثانیه", + "importDSL": "وارد کردن DSL", + "importDSLTip": "پیش‌نویس فعلی بر روی هم نوشته خواهد شد. قبل از وارد کردن، جریان کار را به عنوان نسخه پشتیبان صادر کنید.", + "backupCurrentDraft": "پشتیبان‌گیری از پیش‌نویس فعلی", + "chooseDSL": "انتخاب فایل DSL(yml)", + "overwriteAndImport": "بازنویسی و وارد کردن", + "importFailure": "خطا در وارد کردن", + "importSuccess": "وارد کردن موفقیت‌آمیز", + "parallelTip": { + "click": { + "title": "کلیک کنید", + "desc": "اضافه کردن" + }, + "drag": { + "desc": "برای اتصال", + "title": "کشیدن" + }, + "depthLimit": "حد لایه تودرتو موازی لایه های {{num}}", + "limit": "موازی سازی به شاخه های {{num}} محدود می شود." + }, + "disconnect": "قطع", + "jumpToNode": "پرش به این گره", + "addParallelNode": "افزودن گره موازی", + "parallel": "موازی", + "branch": "شاخه", + "ImageUploadLegacyTip": "اکنون می توانید متغیرهای نوع فایل را در فرم شروع ایجاد کنید. ما دیگر از ویژگی آپلود تصویر در آینده پشتیبانی نخواهیم کرد.", + "fileUploadTip": "ویژگی های آپلود تصویر برای آپلود فایل ارتقا یافته است.", + "importWarning": "احتیاط", + "importWarningDetails": "تفاوت نسخه DSL ممکن است بر ویژگی های خاصی تأثیر بگذارد", + "openInExplore": "باز کردن در کاوش", + "onFailure": "در مورد شکست", + "addFailureBranch": "افزودن برنچ Fail", + "noHistory": "بدون تاریخچه", + "loadMore": "بارگذاری گردش کار بیشتر", + "exportPNG": "صادرات به فرمت PNG", + "exitVersions": "نسخه‌های خروجی", + "exportSVG": "صادرات به فرمت SVG", + "exportJPEG": "صادرات به فرمت JPEG", + "exportImage": "تصویر را صادر کنید", + "versionHistory": "تاریخچه نسخه", + "publishUpdate": "به‌روزرسانی منتشر کنید", + "needOutputNode": "باید گره خروجی اضافه شود", + "needAnswerNode": "باید گره پاسخ اضافه شود", + "addBlock": "نود اضافه کنید", + "tagBound": "تعداد برنامه‌هایی که از این برچسب استفاده می‌کنند", + "currentView": "نمای فعلی", + "currentWorkflow": "گردش کار فعلی", + "moreActions": "اقدامات بیشتر", + "listening": "گوش دادن", + "chooseStartNodeToRun": "گره شروع را برای اجرا انتخاب کنید", + "runAllTriggers": "اجرای همه‌ی تریگرها", + "features": "ویژگی‌ها", + "featuresDescription": "بهبود تجربه کاربری برنامه وب", + "featuresDocLink": "بیشتر بدانید", + "needAdd": "باید یک گره {{node}} اضافه شود", + "needStartNode": "حداقل یک گره شروع باید اضافه شود", + "workflowAsToolDisabledHint": "آخرین جریان کاری را منتشر کنید و قبل از تنظیم آن به عنوان یک ابزار، مطمئن شوید که یک گره ورودی کاربر متصل وجود دارد." + }, + "env": { + "envPanelTitle": "متغیرهای محیطی", + "envDescription": "متغیرهای محیطی می‌توانند برای ذخیره اطلاعات خصوصی و اعتبارنامه‌ها استفاده شوند. آنها فقط خواندنی هستند و می‌توانند در حین صادر کردن از فایل DSL جدا شوند.", + "envPanelButton": "افزودن متغیر", + "modal": { + "title": "افزودن متغیر محیطی", + "editTitle": "ویرایش متغیر محیطی", + "type": "نوع", + "name": "نام", + "namePlaceholder": "نام متغیر", + "value": "مقدار", + "valuePlaceholder": "مقدار متغیر", + "secretTip": "برای تعریف اطلاعات حساس یا داده‌ها، با تنظیمات DSL برای جلوگیری از نشت پیکربندی شده است.", + "description": "توضیحات", + "descriptionPlaceholder": "متغیر را توصیف کنید" + }, + "export": { + "title": "آیا متغیرهای محیطی مخفی را صادر کنید؟", + "checkbox": "صادر کردن مقادیر مخفی", + "ignore": "صادر کردن DSL", + "export": "صادر کردن DSL با مقادیر مخفی" + } + }, + "globalVar": { + "title": "متغیرهای سیستمی", + "description": "متغیرهای سیستمی متغیرهای سراسری هستند که هر گره در صورت مطابقت نوع می‌تواند بدون سیم‌کشی از آن‌ها استفاده کند، مانند شناسه کاربر نهایی و شناسه گردش‌کار.", + "fieldsDescription": { + "conversationId": "شناسه گفتگو", + "dialogCount": "تعداد گفتگو", + "userId": "شناسه کاربر", + "triggerTimestamp": "برچسب زمانی شروع اجرای برنامه", + "appId": "شناسه برنامه", + "workflowId": "شناسه گردش‌کار", + "workflowRunId": "شناسه اجرای گردش‌کار" + } + }, + "chatVariable": { + "panelTitle": "متغیرهای مکالمه", + "panelDescription": "متغیرهای مکالمه برای ذخیره اطلاعات تعاملی که LLM نیاز به یادآوری دارد استفاده می‌شوند، از جمله تاریخچه مکالمه، فایل‌های آپلود شده و ترجیحات کاربر. آنها قابل خواندن و نوشتن هستند.", + "docLink": "برای اطلاعات بیشتر به مستندات ما مراجعه کنید.", + "button": "افزودن متغیر", + "modal": { + "title": "افزودن متغیر مکالمه", + "editTitle": "ویرایش متغیر مکالمه", + "name": "نام", + "namePlaceholder": "نام متغیر", + "type": "نوع", + "value": "مقدار پیش‌فرض", + "valuePlaceholder": "مقدار پیش‌فرض، برای عدم تنظیم خالی بگذارید", + "description": "توضیحات", + "descriptionPlaceholder": "متغیر را توصیف کنید", + "editInJSON": "ویرایش در JSON", + "oneByOne": "افزودن یکی یکی", + "editInForm": "ویرایش در فرم", + "arrayValue": "مقدار", + "addArrayValue": "افزودن مقدار", + "objectKey": "کلید", + "objectType": "نوع", + "objectValue": "مقدار پیش‌فرض" + }, + "storedContent": "محتوای ذخیره شده", + "updatedAt": "به‌روزرسانی شده در " + }, + "changeHistory": { + "title": "تاریخچه تغییرات", + "placeholder": "هنوز تغییری ایجاد نکردید", + "clearHistory": "پاک کردن تاریخچه", + "hint": "راهنما", + "hintText": "عملیات ویرایش شما در تاریخچه تغییرات پیگیری می‌شود که برای مدت این جلسه بر روی دستگاه شما ذخیره می‌شود. این تاریخچه هنگام خروج از ویرایشگر پاک خواهد شد.", + "stepBackward_one": "{{count}} قدم به عقب", + "stepBackward_other": "{{count}} قدم به عقب", + "stepForward_one": "{{count}} قدم به جلو", + "stepForward_other": "{{count}} قدم به جلو", + "sessionStart": "شروع جلسه", + "currentState": "وضعیت کنونی", + "noteAdd": "یادداشت اضافه شده است", + "noteChange": "یادداشت تغییر کرده است", + "noteDelete": "یادداشت حذف شده است", + "nodeDelete": "نود حذف شد", + "nodeAdd": "نود اضافه شد", + "nodeDragStop": "گره منتقل شد", + "edgeDelete": "گره قطع شده است", + "nodeResize": "اندازه نود تغییر یافته است", + "nodePaste": "نود پیست شده است", + "nodeTitleChange": "عنوان نود تغییر کرد", + "nodeConnect": "گره متصل است", + "nodeDescriptionChange": "شرح نود تغییر کرد", + "nodeChange": "نود تغییر کرد" + }, + "errorMsg": { + "fieldRequired": "{{field}} الزامی است", + "authRequired": "احراز هویت ضروری است", + "invalidJson": "{{field}} JSON معتبر نیست", + "fields": { + "variable": "نام متغیر", + "variableValue": "مقدار متغیر", + "code": "کد", + "model": "مدل", + "rerankModel": "مدل مجدد رتبه‌بندی", + "visionVariable": "متغیر بینایی" + }, + "invalidVariable": "متغیر نامعتبر", + "rerankModelRequired": "قبل از روشن کردن Rerank Model، لطفا تأیید کنید که مدل با موفقیت در تنظیمات پیکربندی شده است.", + "noValidTool": "{{field}} هیچ ابزار معتبری انتخاب نشده است", + "toolParameterRequired": "{{field}}: پارامتر [{{param}}] مورد نیاز است", + "startNodeRequired": "لطفاً ابتدا یک گره شروع اضافه کنید قبل از {{operation}}" + }, + "singleRun": { + "testRun": "اجرای آزمایشی", + "startRun": "شروع اجرا", + "running": "در حال اجرا", + "testRunIteration": "تکرار اجرای آزمایشی", + "back": "بازگشت", + "iteration": "تکرار", + "loop": "حلقه", + "reRun": "دوباره اجرا کنید", + "preparingDataSource": "آماده سازی منبع داده" + }, + "tabs": { + "tools": "ابزارها", + "allTool": "همه", + "customTool": "سفارشی", + "workflowTool": "جریان کار", + "question-understand": "درک سوال", + "logic": "منطق", + "transform": "تبدیل", + "utilities": "ابزارهای کاربردی", + "noResult": "نتیجه‌ای پیدا نشد", + "searchTool": "ابزار جستجو", + "plugin": "افزونه", + "agent": "استراتژی نمایندگی", + "blocks": "گره‌ها", + "searchBlock": "گره جستجو", + "addAll": "همه را اضافه کنید", + "allAdded": "همه اضافه شده است", + "sources": "منابع", + "searchDataSource": "منبع داده جستجو", + "start": "شروع", + "searchTrigger": "فعال‌سازی جستجو...", + "allTriggers": "همه‌ی محرک‌ها", + "noPluginsFound": "هیچ پلاگینی پیدا نشد", + "requestToCommunity": "درخواست‌ها از جامعه", + "featuredTools": "ویژه", + "showMoreFeatured": "نمایش بیشتر", + "showLessFeatured": "نمایش کمتر", + "installed": "نصب شده", + "pluginByAuthor": "توسط {{author}}", + "usePlugin": "انتخاب ابزار", + "hideActions": "ابزارها را مخفی کن", + "noFeaturedPlugins": "ابزارهای بیشتر را در بازار پیدا کنید", + "noFeaturedTriggers": "کشف محرک‌های بیشتر در بازار", + "startDisabledTip": "گره تریگر و گره ورودی کاربر به‌طور متقابل انحصاری هستند." + }, + "blocks": { + "start": "شروع", + "end": "خروجی", + "answer": "پاسخ", + "llm": "مدل زبان بزرگ", + "knowledge-retrieval": "استخراج دانش", + "question-classifier": "دسته‌بندی سوالات", + "if-else": "IF/ELSE", + "code": "کد", + "template-transform": "الگو", + "http-request": "درخواست HTTP", + "variable-assigner": "تخصیص‌دهنده متغیر", + "variable-aggregator": "تجمع‌دهنده متغیر", + "assigner": "تخصیص‌دهنده متغیر", + "iteration-start": "شروع تکرار", + "iteration": "تکرار", + "parameter-extractor": "استخراج‌کننده پارامتر", + "list-operator": "عملگر لیست", + "document-extractor": "استخراج کننده سند", + "agent": "عامل", + "loop-start": "شروع حلقه", + "loop-end": "خروج از حلقه", + "loop": "حلقه", + "datasource": "منبع داده", + "knowledge-index": "پایگاه دانش", + "originalStartNode": "گره شروع اصلی", + "trigger-schedule": "راه‌اندازی زمان‌بندی", + "trigger-webhook": "راه‌انداز وبهوک", + "trigger-plugin": "راه‌انداز پلاگین" + }, + "blocksAbout": { + "start": "پارامترهای اولیه برای راه‌اندازی جریان کار را تعریف کنید", + "end": "خروجی و نوع نتیجه یک جریان کار را تعریف کنید", + "answer": "محتوای پاسخ مکالمه چت را تعریف کنید", + "llm": "استفاده از مدل‌های زبان بزرگ برای پاسخ به سوالات یا پردازش زبان طبیعی", + "knowledge-retrieval": "اجازه می‌دهد تا محتوای متنی مرتبط با سوالات کاربر از دانش استخراج شود", + "question-classifier": "شرایط دسته‌بندی سوالات کاربر را تعریف کنید، مدل زبان بزرگ می‌تواند بر اساس توضیحات دسته‌بندی، نحوه پیشرفت مکالمه را تعریف کند", + "if-else": "اجازه می‌دهد تا جریان کار به دو شاخه بر اساس شرایط if/else تقسیم شود", + "code": "اجرای یک قطعه کد Python یا NodeJS برای پیاده‌سازی منطق سفارشی", + "template-transform": "تبدیل داده‌ها به رشته با استفاده از سینتاکس الگوهای Jinja", + "http-request": "اجازه می‌دهد تا درخواست‌های سرور از طریق پروتکل HTTP ارسال شوند", + "variable-assigner": "تجمع متغیرهای چند شاخه‌ای به یک متغیر واحد برای پیکربندی یکپارچه نودهای پایین‌دستی.", + "assigner": "گره تخصیص متغیر برای اختصاص مقادیر به متغیرهای قابل نوشتن (مانند متغیرهای مکالمه) استفاده می‌شود.", + "variable-aggregator": "تجمع متغیرهای چند شاخه‌ای به یک متغیر واحد برای پیکربندی یکپارچه نودهای پایین‌دستی.", + "iteration": "اجرای چندین مرحله روی یک شیء لیست تا همه نتایج خروجی داده شوند.", + "parameter-extractor": "استفاده از مدل زبان بزرگ برای استخراج پارامترهای ساختاری از زبان طبیعی برای فراخوانی ابزارها یا درخواست‌های HTTP.", + "list-operator": "برای فیلتر کردن یا مرتب سازی محتوای آرایه استفاده می شود.", + "document-extractor": "برای تجزیه اسناد آپلود شده به محتوای متنی استفاده می شود که به راحتی توسط LLM قابل درک است.", + "agent": "فراخوانی مدل های زبان بزرگ برای پاسخ به سوالات یا پردازش زبان طبیعی", + "loop-end": "معادل \"شکستن\". این گره هیچ مورد پیکربندی ندارد. هنگامی که بدنه حلقه به این گره می‌رسد، حلقه متوقف می‌شود.", + "loop": "یک حلقه منطقی را اجرا کنید تا زمانی که شرایط خاتمه برآورده شود یا حداکثر تعداد حلقه به پایان برسد.", + "knowledge-index": "پایگاه دانش درباره", + "datasource": "منبع داده درباره", + "trigger-schedule": "راه‌اندازی گردش کار مبتنی بر زمان که گردش کارها را بر اساس برنامه آغاز می‌کند", + "trigger-webhook": "Webhook Trigger دریافت‌کنندهٔ push‌های HTTP از سیستم‌های شخص ثالث است تا به‌طور خودکار جریان‌های کاری را راه‌اندازی کند.", + "trigger-plugin": "راه‌اندازی یکپارچه‌سازی با شخص ثالث که گردش‌های کاری را از رویدادهای پلتفرم خارجی شروع می‌کند" + }, + "operator": { + "zoomIn": "بزرگ‌نمایی", + "zoomOut": "کوچک‌نمایی", + "zoomTo50": "بزرگ‌نمایی به 50%", + "zoomTo100": "بزرگ‌نمایی به 100%", + "zoomToFit": "تناسب با اندازه", + "horizontal": "افقی", + "alignBottom": "پایین", + "alignRight": "راست", + "vertical": "عمودی", + "alignCenter": "مرکز", + "alignLeft": "چپ", + "distributeVertical": "توزیع عمودی", + "distributeHorizontal": "توزیع افقی", + "alignTop": "بالا", + "alignNodes": "تراز کردن گره ها", + "selectionAlignment": "تراز انتخاب", + "alignMiddle": "وسط" + }, + "panel": { + "userInputField": "فیلد ورودی کاربر", + "helpLink": "راهنما", + "about": "درباره", + "createdBy": "ساخته شده توسط", + "nextStep": "مرحله بعدی", + "runThisStep": "اجرا کردن این مرحله", + "checklist": "چک‌لیست", + "checklistTip": "اطمینان حاصل کنید که همه مسائل قبل از انتشار حل شده‌اند", + "checklistResolved": "تمام مسائل حل شده‌اند", + "change": "تغییر", + "optional": "(اختیاری)", + "selectNextStep": "گام بعدی را انتخاب کنید", + "changeBlock": "تغییر گره", + "organizeBlocks": "گره‌ها را سازماندهی کنید", + "addNextStep": "مرحله بعدی را به این فرآیند اضافه کنید", + "minimize": "خروج از حالت تمام صفحه", + "maximize": "بیشینه‌سازی بوم", + "scrollToSelectedNode": "به گره انتخاب شده بروید", + "optional_and_hidden": "(اختیاری و پنهان)", + "goTo": "برو به", + "startNode": "گره شروع", + "openWorkflow": "باز کردن جریان کاری" + }, + "nodes": { + "common": { + "outputVars": "متغیرهای خروجی", + "insertVarTip": "درج متغیر", + "memory": { + "memory": "حافظه", + "memoryTip": "تنظیمات حافظه چت", + "windowSize": "اندازه پنجره", + "conversationRoleName": "نام نقش مکالمه", + "user": "پیشوند کاربر", + "assistant": "پیشوند دستیار" + }, + "memories": { + "title": "حافظه‌ها", + "tip": "حافظه چت", + "builtIn": "درون‌ساخت" + }, + "errorHandle": { + "none": { + "title": "هیچ کدام", + "desc": "اگر یک استثنا رخ دهد و مدیریت نشود، گره از کار می افتد" + }, + "defaultValue": { + "title": "مقدار پیش فرض", + "output": "مقدار پیش فرض خروجی", + "tip": "در صورت خطا، به زیر مقدار برمی گردد.", + "inLog": "استثنای گره، خروجی بر اساس مقادیر پیش فرض.", + "desc": "هنگامی که خطایی رخ می دهد، یک محتوای خروجی ثابت را مشخص کنید." + }, + "failBranch": { + "title": "شاخه Fail", + "desc": "هنگامی که خطایی رخ می دهد، شاخه استثنا را اجرا می کند", + "customize": "برای سفارشی کردن منطق برنچ fail به بوم بروید.", + "inLog": "Node exception، به طور خودکار شاخه fail را اجرا می کند. خروجی گره یک نوع خطا و پیام خطا را برمی گرداند و آنها را به پایین دست ارسال می کند.", + "customizeTip": "هنگامی که شاخه fail فعال می شود، استثنائات پرتاب شده توسط گره ها فرآیند را خاتمه نمی دهند. در عوض، به طور خودکار شاخه شکست از پیش تعریف شده را اجرا می کند و به شما امکان می دهد پیام های خطا، گزارش ها، اصلاحات یا پرش از اقدامات را به طور انعطاف پذیر ارائه دهید." + }, + "partialSucceeded": { + "tip": "گره های {{num}} در این فرآیند وجود دارند که به طور غیرعادی اجرا می شوند، لطفا برای بررسی سیاههها به ردیابی بروید." + }, + "title": "مدیریت خطا", + "tip": "استراتژی مدیریت استثنا، زمانی که یک گره با یک استثنا مواجه می شود، فعال می شود." + }, + "retry": { + "times": "بار", + "retryInterval": "فاصله تلاش مجدد", + "retryOnFailure": "در مورد شکست دوباره امتحان کنید", + "ms": "خانم", + "retry": "دوباره", + "retries": "{{عدد}} تلاش های مجدد", + "maxRetries": "حداکثر تلاش مجدد", + "retrying": "تلاش مجدد...", + "retryFailed": "تلاش مجدد ناموفق بود", + "retryTimes": "{{times}} بار در صورت شکست دوباره امتحان کنید", + "retrySuccessful": "امتحان مجدد با موفقیت انجام دهید", + "retryFailedTimes": "{{بار}} تلاش های مجدد ناموفق بود" + }, + "typeSwitch": { + "input": "مقدار ورودی", + "variable": "از متغیر استفاده کن" + }, + "inputVars": "متغیرهای ورودی", + "pluginNotInstalled": "افزونه نصب نشده است" + }, + "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 پر کنید.", + "prompt": "پیشنهاد", + "roleDescription": { + "system": "دستورات سطح بالا برای مکالمه را ارائه دهید", + "user": "دستورات، پرسش‌ها، یا هر ورودی متنی را به مدل ارائه دهید", + "assistant": "پاسخ‌های مدل بر اساس پیام‌های کاربر" + }, + "addMessage": "افزودن پیام", + "vision": "بینایی", + "files": "فایل‌ها", + "resolution": { + "name": "وضوح", + "high": "بالا", + "low": "پایین" + }, + "outputVars": { + "output": "تولید محتوا", + "reasoning_content": "محتوای استدلال", + "usage": "اطلاعات استفاده از مدل" + }, + "singleRun": { + "variable": "متغیر" + }, + "sysQueryInUser": "sys.query در پیام کاربر ضروری است", + "jsonSchema": { + "warningTips": { + "saveSchema": "لطفاً قبل از ذخیره‌سازی طرح، ویرایش فیلد فعلی را کامل کنید." + }, + "import": "واردات از JSON", + "addField": "فیلد اضافه کنید", + "required": "ضروری", + "generatedResult": "نتیجه تولید شده", + "generate": "تولید کنید", + "doc": "بیشتر درباره خروجی ساختار یافته بیاموزید", + "generating": "تولید طرح‌واره JSON...", + "instruction": "دستورالعمل", + "back": "عقب", + "resetDefaults": "تنظیم مجدد", + "showAdvancedOptions": "نمایش گزینه‌های پیشرفته", + "regenerate": "تولید مجدد", + "apply": "اعمال کنید", + "title": "الگوی خروجی ساختاری", + "promptTooltip": "تبدیل توصیف متنی به یک ساختار استاندارد شده JSON Schema.", + "stringValidations": "اعتبارسنجی رشته", + "resultTip": "این نتیجه تولید شده است. اگر راضی نیستید، می‌توانید به عقب برگردید و درخواست خود را ویرایش کنید.", + "descriptionPlaceholder": "توضیحات را اضافه کنید", + "addChildField": "افزودن فیلد فرزند", + "generateJsonSchema": "ایجاد اسکیما JSON", + "promptPlaceholder": "اسکیمای JSON خود را توصیف کنید...", + "fieldNamePlaceholder": "نام میدان", + "generationTip": "شما می‌توانید از زبان طبیعی برای ایجاد سریع یک طرح‌واره JSON استفاده کنید." + }, + "reasoningFormat": { + "separated": "تگ‌های تفکر جداگانه", + "title": "فعال‌سازی جداسازی برچسب‌های استدلال", + "tagged": "به فکر برچسب‌ها باشید", + "tooltip": "محتوا را از تگ‌های تفکر استخراج کرده و در فیلد reasoning_content ذخیره کنید." + } + }, + "knowledgeRetrieval": { + "queryVariable": "متغیر جستجو", + "knowledge": "دانش", + "outputVars": { + "output": "داده‌های تقسیم‌بندی شده بازیابی", + "content": "محتوای تقسیم‌بندی شده", + "title": "عنوان تقسیم‌بندی شده", + "icon": "آیکون تقسیم‌بندی شده", + "url": "URL تقسیم‌بندی شده", + "metadata": "سایر متاداده‌ها", + "files": "فایل‌های بازیابی‌شده" + }, + "metadata": { + "options": { + "disabled": { + "title": "متعادل", + "subTitle": "عدم فعال‌سازی فیلترهای متاداده" + }, + "automatic": { + "title": "خودکار", + "desc": "شرایط فیلتر متاداده را بر اساس متغیر جستجو به صورت خودکار تولید کنید", + "subTitle": "شرایط فیلتر متادیتا را به طور خودکار بر اساس پرسش کاربر تولید کنید" + }, + "manual": { + "subTitle": "به‌صورت دستی شرایط فیلتر کردن متادیتا را اضافه کنید", + "title": "دستوری" + } + }, + "panel": { + "add": "شرط اضافه کنید", + "placeholder": "مقدار را وارد کنید", + "datePlaceholder": "زمانی را انتخاب کنید...", + "search": "جستجوی متا داده", + "select": "متغیر را انتخاب کنید...", + "title": "شرایط فیلتر متادیتا", + "conditions": "شرایط" + }, + "title": "فیلتر کردن فراداده", + "tip": "فیلتر کردن متاداده فرایند استفاده از ویژگی‌های متاداده (مانند برچسب‌ها، دسته‌ها یا مجوزهای دسترسی) برای تصفیه و کنترل بازیابی اطلاعات مرتبط در یک سیستم است." + }, + "queryText": "متن پرس و جو", + "queryAttachment": "تصاویر پرس‌وجو" + }, + "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": "زمان‌توقف نوشتن را به ثانیه وارد کنید" + }, + "binaryFileVariable": "متغیر فایل باینری", + "type": "نوع", + "extractListPlaceholder": "فهرست آیتم لیست را وارد کنید، متغیر درج '/' را تایپ کنید", + "curl": { + "title": "وارد کردن از cURL", + "placeholder": "رشته cURL را اینجا بچسبانید" + }, + "verifySSL": { + "title": "گواهی SSL را تأیید کنید", + "warningTooltip": "غیرفعال کردن تأیید SSL برای محیط‌های تولید توصیه نمی‌شود. این فقط باید در توسعه یا آزمایش استفاده شود، زیرا این کار اتصال را در معرض تهدیدات امنیتی مانند حملات میانی قرار می‌دهد." + } + }, + "code": { + "inputVars": "متغیرهای ورودی", + "outputVars": "متغیرهای خروجی", + "advancedDependencies": "وابستگی‌های پیشرفته", + "advancedDependenciesTip": "برخی وابستگی‌های پیش‌بارگذاری شده که زمان بیشتری برای مصرف نیاز دارند یا به طور پیش‌فرض در اینجا موجود نیستند، اضافه کنید", + "searchDependencies": "جستجوی وابستگی‌ها", + "syncFunctionSignature": "امضای تابع همگام‌سازی را به کد متصل کنید" + }, + "templateTransform": { + "inputVars": "متغیرهای ورودی", + "code": "کد", + "codeSupportTip": "فقط Jinja2 را پشتیبانی می‌کند", + "outputVars": { + "output": "محتوای تبدیل‌شده" + } + }, + "ifElse": { + "if": "اگر", + "else": "در غیر این صورت", + "elseDescription": "برای تعریف منطق که باید زمانی که شرط if برآورده نشود، اجرا شود.", + "and": "و", + "or": "یا", + "operator": "عملگر", + "notSetVariable": "لطفاً ابتدا متغیر را تنظیم کنید", + "comparisonOperator": { + "contains": "شامل", + "not contains": "شامل نمی‌شود", + "start with": "شروع با", + "end with": "پایان با", + "is": "است", + "is not": "نیست", + "empty": "خالی است", + "not empty": "خالی نیست", + "null": "خالی", + "not null": "خالی نیست", + "in": "در", + "not exists": "وجود ندارد", + "all of": "همه از", + "not in": "نه در", + "exists": "موجود", + "after": "بعد از", + "before": "قبل از" + }, + "enterValue": "مقدار را وارد کنید", + "addCondition": "افزودن شرط", + "conditionNotSetup": "شرط تنظیم نشده است", + "selectVariable": "متغیر را انتخاب کنید...", + "optionName": { + "video": "ویدئو", + "doc": "توضیحات", + "localUpload": "آپلود محلی", + "audio": "صوتی", + "url": "آدرس", + "image": "تصویر" + }, + "select": "انتخاب", + "addSubVariable": "متغیر فرعی" + }, + "variableAssigner": { + "title": "تخصیص متغیرها", + "outputType": "نوع خروجی", + "varNotSet": "متغیر تنظیم نشده است", + "noVarTip": "متغیرهایی را که باید اختصاص داده شوند اضافه کنید", + "type": { + "string": "رشته", + "number": "عدد", + "object": "شیء", + "array": "آرایه" + }, + "aggregationGroup": "گروه تجمع", + "aggregationGroupTip": "فعال کردن این ویژگی اجازه می‌دهد تا تجمع‌کننده متغیرها چندین مجموعه متغیر را تجمیع کند.", + "addGroup": "افزودن گروه", + "outputVars": { + "varDescribe": "{{groupName}} خروجی" + }, + "setAssignVariable": "تعیین متغیر تخصیص یافته" + }, + "assigner": { + "assignedVariable": "متغیر اختصاص داده شده", + "writeMode": "حالت نوشتن", + "writeModeTip": "وقتی متغیر اختصاص داده شده یک آرایه است، حالت افزودن به انتها اضافه می‌کند.", + "over-write": "بازنویسی", + "append": "افزودن", + "plus": "به علاوه", + "clear": "پاک کردن", + "setVariable": "تنظیم متغیر", + "variable": "متغیر", + "operations": { + "clear": "روشن", + "over-write": "بازنویسی", + "set": "مجموعه", + "*=": "*=", + "overwrite": "بازنویسی", + "+=": "+=", + "title": "عملیات", + "extend": "گسترش", + "-=": "-=", + "append": "الحاق", + "/=": "/=", + "remove-first": "حذف اول", + "remove-last": "آخرین را حذف کنید" + }, + "noVarTip": "برای افزودن متغیرها روی دکمه \"+\" کلیک کنید", + "selectAssignedVariable": "متغیر اختصاص داده شده را انتخاب کنید...", + "noAssignedVars": "هیچ متغیر اختصاص داده شده در دسترس نیست", + "setParameter": "پارامتر را تنظیم کنید...", + "assignedVarsDescription": "متغیرهای اختصاص داده شده باید متغیرهای قابل نوشتن مانند متغیرهای مکالمه باشند.", + "variables": "متغیرهای", + "varNotSet": "متغیر NOT Set" + }, + "tool": { + "inputVars": "متغیرهای ورودی", + "outputVars": { + "text": "محتوای تولید شده توسط ابزار", + "files": { + "title": "فایل‌های تولید شده توسط ابزار", + "type": "نوع پشتیبانی. در حال حاضر فقط تصاویر پشتیبانی می‌شود", + "transfer_method": "روش انتقال. مقدار آن remote_url یا local_file است", + "url": "URL تصویر", + "upload_file_id": "شناسه فایل آپلود شده" + }, + "json": "json تولید شده توسط ابزار" + }, + "authorize": "مجوز دادن", + "settings": "تنظیمات", + "insertPlaceholder2": "متغیر را وارد کنید", + "insertPlaceholder1": "نوع کنید یا فشار دهید" + }, + "questionClassifiers": { + "model": "مدل", + "inputVars": "متغیرهای ورودی", + "outputVars": { + "className": "نام کلاس", + "usage": "اطلاعات استفاده از مدل" + }, + "class": "کلاس", + "classNamePlaceholder": "نام کلاس خود را بنویسید", + "advancedSetting": "تنظیمات پیشرفته", + "topicName": "نام موضوع", + "topicPlaceholder": "نام موضوع خود را بنویسید", + "addClass": "افزودن کلاس", + "instruction": "دستورالعمل", + "instructionTip": "دستورالعمل‌های اضافی را برای کمک به دسته‌بند سوالات برای درک بهتر نحوه دسته‌بندی سوالات وارد کنید.", + "instructionPlaceholder": "دستورالعمل خود را بنویسید" + }, + "parameterExtractor": { + "inputVar": "متغیر ورودی", + "outputVars": { + "isSuccess": "موفقیت‌آمیز است. در صورت موفقیت مقدار 1 و در صورت شکست مقدار 0 است.", + "errorReason": "دلیل خطا", + "usage": "اطلاعات استفاده از مدل" + }, + "extractParameters": "استخراج پارامترها", + "importFromTool": "وارد کردن از ابزارها", + "addExtractParameter": "افزودن پارامتر استخراج شده", + "addExtractParameterContent": { + "name": "نام", + "namePlaceholder": "نام پارامتر استخراج شده", + "type": "نوع", + "typePlaceholder": "نوع پارامتر استخراج شده", + "description": "توضیحات", + "descriptionPlaceholder": "توضیحات پارامتر استخراج شده", + "required": "الزامی", + "requiredContent": "الزامی فقط به عنوان مرجع برای استنتاج مدل استفاده می‌شود و برای اعتبارسنجی اجباری خروجی پارامتر نیست." + }, + "extractParametersNotSet": "پارامترهای استخراج شده تنظیم نشده‌اند", + "instruction": "دستورالعمل", + "instructionTip": "دستورالعمل‌های اضافی را برای کمک به استخراج‌کننده پارامتر برای درک نحوه استخراج پارامترها وارد کنید.", + "advancedSetting": "تنظیمات پیشرفته", + "reasoningMode": "حالت استدلال", + "reasoningModeTip": "می‌توانید حالت استدلال مناسب را بر اساس توانایی مدل برای پاسخ به دستورات برای فراخوانی عملکردها یا پیشنهادات انتخاب کنید." + }, + "iteration": { + "deleteTitle": "حذف نود تکرار؟", + "deleteDesc": "حذف نود تکرار باعث حذف تمام نودهای فرزند خواهد شد", + "input": "ورودی", + "output": "متغیرهای خروجی", + "iteration_one": "{{count}} تکرار", + "iteration_other": "{{count}} تکرارها", + "currentIteration": "تکرار فعلی", + "ErrorMethod": { + "continueOnError": "ادامه در خطا", + "operationTerminated": "فسخ", + "removeAbnormalOutput": "حذف خروجی غیرطبیعی" + }, + "error_one": "{{تعداد}} خطا", + "error_other": "{{تعداد}} خطاهای", + "parallelMode": "حالت موازی", + "errorResponseMethod": "روش پاسخ به خطا", + "parallelModeEnableTitle": "حالت موازی فعال است", + "parallelModeUpper": "حالت موازی", + "comma": ",", + "parallelModeEnableDesc": "در حالت موازی، وظایف درون تکرارها از اجرای موازی پشتیبانی می کنند. می توانید این را در پانل ویژگی ها در سمت راست پیکربندی کنید.", + "MaxParallelismTitle": "حداکثر موازی سازی", + "parallelPanelDesc": "در حالت موازی، وظایف در تکرار از اجرای موازی پشتیبانی می کنند.", + "MaxParallelismDesc": "حداکثر موازی سازی برای کنترل تعداد وظایف اجرا شده به طور همزمان در یک تکرار واحد استفاده می شود.", + "answerNodeWarningDesc": "هشدار حالت موازی: گره های پاسخ، تکالیف متغیر مکالمه و عملیات خواندن/نوشتن مداوم در تکرارها ممکن است باعث استثنائات شود.", + "flattenOutput": "صاف کردن خروجی", + "flattenOutputDesc": "هنگامی که فعال باشد، اگر تمام خروجی‌های تکرار آرایه باشند، آنها به یک آرایهٔ واحد تبدیل خواهند شد. هنگامی که غیرفعال باشد، خروجی‌ها ساختار آرایهٔ تو در تو را حفظ می‌کنند." + }, + "note": { + "addNote": "افزودن یادداشت", + "editor": { + "placeholder": "یادداشت خود را بنویسید...", + "small": "کوچک", + "medium": "متوسط", + "large": "بزرگ", + "bold": "پررنگ", + "italic": "ایتالیک", + "strikethrough": "خط‌خورده", + "link": "لینک", + "openLink": "باز کردن", + "unlink": "حذف لینک", + "enterUrl": "URL را وارد کنید...", + "invalidUrl": "URL نامعتبر", + "bulletList": "فهرست گلوله‌ای", + "showAuthor": "نمایش نویسنده" + } + }, + "docExtractor": { + "outputVars": { + "text": "متن استخراج شده" + }, + "inputVar": "متغیر ورودی", + "learnMore": "بیشتر بدانید", + "supportFileTypes": "انواع فایل های پشتیبانی: {{types}}." + }, + "listFilter": { + "outputVars": { + "result": "نتیجه فیلتر", + "first_record": "اولین رکورد", + "last_record": "آخرین رکورد" + }, + "limit": "بالا N", + "inputVar": "متغیر ورودی", + "filterCondition": "وضعیت فیلتر", + "orderBy": "سفارش بر اساس", + "filterConditionKey": "کلید وضعیت فیلتر", + "desc": "نزولی", + "filterConditionComparisonOperator": "عملگر مقایسه شرایط فیلتر", + "filterConditionComparisonValue": "مقدار شرایط فیلتر", + "selectVariableKeyPlaceholder": "کلید متغیر فرعی را انتخاب کنید", + "asc": "صعودی", + "extractsCondition": "مورد N را استخراج کنید" + }, + "agent": { + "strategy": { + "searchPlaceholder": "جست وجو در استراتژی های عاملی", + "tooltip": "استراتژی های مختلف عامل تعیین می کنند که سیستم چگونه فراخوانی های ابزار چند مرحله ای را برنامه ریزی و اجرا می کند.", + "label": "استراتژی عامل", + "configureTip": "لطفا استراتژی عامل را پیکربندی کنید.", + "selectTip": "استراتژی عامل را انتخاب کنید", + "configureTipDesc": "پس از پیکربندی استراتژی عامل، این گره به طور خودکار پیکربندی های باقیمانده را بارگیری می کند. این استراتژی بر مکانیسم استدلال ابزار چند مرحله ای تأثیر خواهد گذاشت.", + "shortLabel": "استراتژی" + }, + "pluginInstaller": { + "installing": "نصب", + "install": "نصب" + }, + "modelNotInMarketplace": { + "manageInPlugins": "مدیریت در پلاگین ها", + "title": "مدل نصب نشده است", + "desc": "این مدل از مخزن Local یا GitHub نصب شده است. لطفا پس از نصب استفاده کنید." + }, + "modelNotSupport": { + "desc": "نسخه افزونه نصب شده این مدل را ارائه نمی دهد.", + "title": "مدل پشتیبانی نشده", + "descForVersionSwitch": "نسخه افزونه نصب شده این مدل را ارائه نمی دهد. برای تغییر نسخه کلیک کنید." + }, + "modelSelectorTooltips": { + "deprecated": "این مدل منسوخ شده است" + }, + "outputVars": { + "files": { + "transfer_method": "روش انتقال. ارزش remote_url یا local_file", + "upload_file_id": "شناسه فایل را آپلود کنید", + "title": "فایل های تولید شده توسط عامل", + "url": "آدرس اینترنتی تصویر", + "type": "نوع پشتیبانی. اکنون فقط از تصویر پشتیبانی می کند" + }, + "text": "محتوای تولید شده توسط عامل", + "usage": "اطلاعات استفاده از مدل", + "json": "عامل JSON را تولید کرد" + }, + "checkList": { + "strategyNotSelected": "استراتژی انتخاب نشده است" + }, + "installPlugin": { + "changelog": "گزارش تغییر", + "install": "نصب", + "cancel": "لغو", + "title": "افزونه را نصب کنید", + "desc": "در مورد نصب افزونه زیر" + }, + "pluginNotFoundDesc": "این پلاگین از GitHub نصب شده است. لطفا برای نصب مجدد به پلاگین ها بروید", + "linkToPlugin": "پیوند به پلاگین ها", + "toolbox": "جعبه ابزار", + "maxIterations": "حداکثر تکرارها", + "strategyNotSet": "استراتژی عامل تنظیم نشده است", + "strategyNotInstallTooltip": "{{strategy}} نصب نشده است", + "modelNotSelected": "مدل انتخاب نشده است", + "toolNotInstallTooltip": "{{ابزار}} نصب نشده است", + "tools": "ابزار", + "learnMore": "بیشتر بدانید", + "pluginNotInstalledDesc": "این پلاگین از GitHub نصب شده است. لطفا برای نصب مجدد به پلاگین ها بروید", + "unsupportedStrategy": "استراتژی پشتیبانی نشده", + "modelNotInstallTooltip": "این مدل نصب نشده است", + "notAuthorized": "مجاز نیست", + "toolNotAuthorizedTooltip": "{{ابزار}} مجاز نیست", + "configureModel": "پیکربندی مدل", + "pluginNotInstalled": "این افزونه نصب نشده است", + "strategyNotFoundDesc": "نسخه افزونه نصب شده این استراتژی را ارائه نمی دهد.", + "strategyNotFoundDescAndSwitchVersion": "نسخه افزونه نصب شده این استراتژی را ارائه نمی دهد. برای تغییر نسخه کلیک کنید.", + "model": "مدل", + "parameterSchema": "طرح پارامتر", + "clickToViewParameterSchema": "برای مشاهده طرح پارامتر کلیک کنید" + }, + "loop": { + "ErrorMethod": { + "removeAbnormalOutput": "خروجی غیرعادی را حذف کنید", + "operationTerminated": "منحل شد", + "continueOnError": "ادامه در صورت بروز خطا" + }, + "variableName": "نام متغیر", + "error_other": "{{count}} خطا", + "loopNode": "گره حلقه", + "exitConditionTip": "یک گره حلقه به حداقل یک شرط خروج نیاز دارد.", + "inputMode": "حالت ورودی", + "loop_other": "{{count}} حلقه", + "error_one": "{{count}} خطا", + "comma": ",", + "loopVariables": "متغیرهای حلقه", + "setLoopVariables": "متغیرها را در محدوده حلقه تنظیم کنید", + "loop_one": "{{count}} حلقه", + "deleteTitle": "حذف گره حلقه؟", + "input": "ورودی", + "finalLoopVariables": "متغیرهای نهایی حلقه", + "output": "متغیر خروجی", + "totalLoopCount": "تعداد کل حلقه: {{count}}", + "currentLoop": "حلقه جاری", + "initialLoopVariables": "متغیرهای حلقه اولیه", + "errorResponseMethod": "روش پاسخ خطا", + "loopMaxCountError": "لطفاً یک تعداد حداکثر حلقه معتبر وارد کنید که در بازه‌ی ۱ تا {{maxCount}} باشد.", + "deleteDesc": "حذف نود حلقه همه نودهای فرزند را حذف خواهد کرد", + "loopMaxCount": "حداکثر تعداد حلقه", + "currentLoopCount": "تعداد حلقه‌های فعلی: {{count}}", + "breakCondition": "شرط خاتمه حلقه", + "breakConditionTip": "فقط متغیرهای داخل حلقه‌ها با شرایط خاتمه و متغیرهای گفتگو می‌توانند مورد ارجاع قرار گیرند." + }, + "dataSource": { + "supportedFileFormatsPlaceholder": "پسوند فایل، e.g. doc", + "add": "منبع داده را اضافه کنید", + "supportedFileFormats": "فرمت های فایل پشتیبانی شده" + }, + "knowledgeBase": { + "chunkStructureTip": { + "learnMore": "بیشتر بدانید", + "title": "لطفا یک ساختار تکه ای را انتخاب کنید", + "message": "پایگاه دانش Dify از سه ساختار تکه ای پشتیبانی می کند: عمومی، والد-فرزند و پرسش و پاسخ. هر پایگاه دانش فقط می تواند یک ساختار داشته باشد. خروجی گره قبلی باید با ساختار تکه انتخاب شده هماهنگ باشد. توجه داشته باشید که انتخاب ساختار تکه بندی بر روش های شاخص موجود تأثیر می گذارد." + }, + "chunkStructure": "ساختار تکه", + "retrievalSettingIsRequired": "تنظیمات بازیابی مورد نیاز است", + "indexMethodIsRequired": "روش شاخص مورد نیاز است", + "changeChunkStructure": "تغییر ساختار تکه", + "aboutRetrieval": "درباره روش بازیابی.", + "chunkIsRequired": "ساختار تکه ای مورد نیاز است", + "chooseChunkStructure": "یک ساختار تکه ای را انتخاب کنید", + "chunksInput": "تکه‌ها", + "chunksInputTip": "متغیر ورودی گره پایگاه دانش تکه‌ها است. نوع متغیر یک شیء با یک طرح JSON خاص است که باید با ساختار تکه انتخاب شده سازگار باشد.", + "embeddingModelIsRequired": "مدل جاسازی مورد نیاز است", + "chunksVariableIsRequired": "متغیر تکه‌ها الزامی است", + "rerankingModelIsRequired": "مدل رتبه‌بندی مجدد مورد نیاز است", + "embeddingModelIsInvalid": "مدل جاسازی نامعتبر است", + "rerankingModelIsInvalid": "مدل رتبه‌بندی مجدد نامعتبر است" + }, + "triggerPlugin": { + "authorized": "مجاز", + "notConfigured": "پیکربندی نشده", + "notAuthorized": "مجوز ندارد", + "selectSubscription": "انتخاب اشتراک", + "availableSubscriptions": "اشتراک‌های موجود", + "addSubscription": "افزودن اشتراک جدید", + "removeSubscription": "لغو اشتراک", + "subscriptionRemoved": "اشتراک با موفقیت حذف شد", + "error": "خطا", + "configuration": "پیکربندی", + "remove": "حذف", + "or": "یا", + "useOAuth": "استفاده از OAuth", + "useApiKey": "استفاده از کلید API", + "authenticationFailed": "احراز هویت ناموفق بود", + "authenticationSuccess": "احراز هویت با موفقیت انجام شد", + "oauthConfigFailed": "پیکربندی OAuth با شکست مواجه شد", + "configureOAuthClient": "پیکربندی مشتری OAuth", + "oauthClientDescription": "تنظیم اطلاعات مشتری OAuth برای فعال‌سازی احراز هویت", + "oauthClientSaved": "پیکربندی کلاینت OAuth با موفقیت ذخیره شد", + "configureApiKey": "پیکربندی کلید API", + "apiKeyDescription": "تنظیم اطلاعات کلید API برای احراز هویت", + "apiKeyConfigured": "کلید API با موفقیت پیکربندی شد", + "configurationFailed": "پیکربندی ناموفق بود", + "failedToStart": "شروع فرآیند احراز هویت ناکام ماند", + "credentialsVerified": "اعتبارات با موفقیت تأیید شد", + "credentialVerificationFailed": "اعتبارسنجی مدارک ناموفق بود", + "verifyAndContinue": "تأیید و ادامه", + "configureParameters": "پیکربندی پارامترها", + "parametersDescription": "تنظیم پارامترها و ویژگی‌های تریگر", + "configurationComplete": "پیکربندی کامل شد", + "configurationCompleteDescription": "راه‌انداز شما با موفقیت پیکربندی شد", + "configurationCompleteMessage": "پیکربندی ماشه شما اکنون کامل شده و آماده استفاده است.", + "parameters": "پارامترها", + "properties": "ویژگی‌ها", + "propertiesDescription": "خصوصیات پیکربندی اضافی برای این تریگر", + "noConfigurationRequired": "برای این محرک تنظیمات اضافی لازم نیست.", + "subscriptionName": "نام اشتراک", + "subscriptionNameDescription": "یک نام منحصر به فرد برای اشتراک این تریگر وارد کنید", + "subscriptionNamePlaceholder": "نام اشتراک را وارد کنید...", + "subscriptionNameRequired": "نام اشتراک الزامی است", + "subscriptionRequired": "اشتراک لازم است" + }, + "triggerSchedule": { + "title": "برنامه", + "nodeTitle": "راه‌اندازی زمان‌بندی", + "notConfigured": "پیکربندی نشده", + "useCronExpression": "استفاده از عبارت کران", + "useVisualPicker": "استفاده از انتخابگر بصری", + "frequency": { + "label": "فرکانس", + "hourly": "ساعتی", + "daily": "روزانه", + "weekly": "هفتگی", + "monthly": "ماهانه" + }, + "selectFrequency": "انتخاب فرکانس", + "frequencyLabel": "فرکانس", + "nextExecution": "اجرای بعدی", + "weekdays": "روزهای هفته", + "time": "زمان", + "cronExpression": "بیان کرون", + "nextExecutionTime": "زمان اجرای بعدی", + "nextExecutionTimes": "۵ زمان اجرای بعدی", + "startTime": "زمان شروع", + "executeNow": "اجرا اکنون", + "selectDateTime": "تاریخ و زمان را انتخاب کنید", + "hours": "ساعات", + "minutes": "دقایق", + "onMinute": "در دقیقه", + "days": "روزها", + "lastDay": "آخرین روز", + "lastDayTooltip": "تمام ماه‌ها ۳۱ روز ندارند. از گزینه «آخرین روز» برای انتخاب روز آخر هر ماه استفاده کنید.", + "mode": "مد", + "timezone": "منطقه زمانی", + "visualConfig": "پیکربندی بصری", + "monthlyDay": "روز ماهانه", + "executionTime": "زمان اجرا", + "invalidTimezone": "منطقه زمانی نامعتبر", + "invalidCronExpression": "عبارت کرون نامعتبر", + "noValidExecutionTime": "زمان اجرای معتبر نمی‌تواند محاسبه شود", + "executionTimeCalculationError": "محاسبه زمان‌های اجرا با شکست مواجه شد", + "invalidFrequency": "فرکانس نامعتبر", + "invalidStartTime": "زمان شروع نامعتبر", + "startTimeMustBeFuture": "زمان شروع باید در آینده باشد", + "invalidTimeFormat": "فرمت زمان نامعتبر است (انتظار می‌رفت HH:MM AM/PM باشد)", + "invalidWeekday": "روز هفته نامعتبر: {{weekday}}", + "invalidMonthlyDay": "روز ماهانه باید بین ۱ تا ۳۱ یا «آخر» باشد", + "invalidOnMinute": "دقیقه باید بین ۰ تا ۵۹ باشد", + "invalidExecutionTime": "زمان اجرای نامعتبر", + "executionTimeMustBeFuture": "زمان اجرا باید در آینده باشد" + }, + "triggerWebhook": { + "title": "راه‌اندازی وبهوک", + "nodeTitle": "🔗 فعال‌سازی وبهوک", + "configPlaceholder": "پیکربندی فعال‌سازی وب هوک در اینجا انجام خواهد شد", + "webhookUrl": "آدرس وب هوک", + "webhookUrlPlaceholder": "برای ایجاد آدرس وبهوک روی تولید کلیک کنید", + "generate": "تولید کردن", + "copy": "کپی", + "test": "تست", + "urlGenerated": "آدرس وبهوک با موفقیت ایجاد شد", + "urlGenerationFailed": "ایجاد URL وب‌هوک ناموفق بود", + "urlCopied": "آدرس وب‌سایت در حافظه موقت کپی شد", + "method": "روش", + "contentType": "نوع محتوا", + "queryParameters": "پارامترهای پرس‌وجو", + "headerParameters": "پارامترهای هدر", + "requestBodyParameters": "پارامترهای بدنه درخواست", + "parameterName": "نام متغیر", + "varName": "نام متغیر", + "varType": "نوع", + "varNamePlaceholder": "نام متغیر را وارد کنید...", + "required": "الزامی", + "addParameter": "افزودن", + "addHeader": "افزودن", + "noParameters": "هیچ پارامتری پیکربندی نشده است", + "noQueryParameters": "پارامترهای پرس‌وجو تنظیم نشده‌اند", + "noHeaders": "هیچ هدر پیکربندی نشده است", + "noBodyParameters": "هیچ پارامتر بدنی پیکربندی نشده است", + "debugUrlTitle": "برای اجرای آزمایشی، همیشه از این آدرس اینترنتی استفاده کنید", + "debugUrlCopy": "برای کپی کلیک کنید", + "debugUrlCopied": "کپی شد!", + "debugUrlPrivateAddressWarning": "به نظر می‌رسد این URL یک آدرس داخلی است که ممکن است باعث شود درخواست‌های وب‌هوک با شکست مواجه شوند. شما می‌توانید TRIGGER_URL را به یک آدرس عمومی تغییر دهید.", + "errorHandling": "مدیریت خطا", + "errorStrategy": "مدیریت خطا", + "responseConfiguration": "پاسخ", + "asyncMode": "حالت غیرهمزمان", + "statusCode": "کد وضعیت", + "responseBody": "بدنه پاسخ", + "responseBodyPlaceholder": "بدنه پاسخ خود را اینجا بنویسید", + "headers": "سرتیترها", + "validation": { + "webhookUrlRequired": "آدرس وبهوک الزامی است", + "invalidParameterType": "نوع پارامتر نامعتبر \"{{type}}\" برای پارامتر \"{{name}}\"" + } + } + }, + "tracing": { + "stopBy": "متوقف شده توسط {{user}}" + }, + "variableReference": { + "noAvailableVars": "هیچ متغیری در دسترس نیست", + "conversationVars": "متغیرهای مکالمه", + "noVarsForOperation": "هیچ متغیری برای تخصیص با عملیات انتخاب شده در دسترس نیست.", + "assignedVarsDescription": "متغیرهای اختصاص داده شده باید متغیرهای قابل نوشتن باشند، مانند", + "noAssignedVars": "هیچ متغیر اختصاص داده شده در دسترس نیست" + }, + "versionHistory": { + "filter": { + "reset": "بازنشانی فیلتر", + "onlyYours": "فقط مال شماست", + "onlyShowNamedVersions": "فقط نسخه‌های نام‌گذاری شده را نمایش بدهید", + "all": "همه", + "empty": "هیچ تاریخچه نسخه‌ای مطابق پیدا نشد" + }, + "editField": { + "title": "عنوان", + "releaseNotes": "یادداشت‌های نسخه", + "titleLengthLimit": "عنوان نمی‌تواند از {{limit}} کاراکتر بیشتر شود", + "releaseNotesLengthLimit": "یادداشت‌های انتشار نمی‌توانند از {{limit}} کاراکتر تجاوز کنند" + }, + "action": { + "updateSuccess": "نسخه به‌روزرسانی شد", + "deleteSuccess": "نسخه حذف شد", + "restoreSuccess": "نسخه بازگردانی شده", + "deleteFailure": "حذف نسخه موفق نبود", + "restoreFailure": "بازگرداندن نسخه ناموفق بود", + "updateFailure": "به‌روزرسانی نسخه ناموفق بود", + "copyIdSuccess": "شناسه در کلیپ بورد کپی شده است" + }, + "latest": "آخرین", + "editVersionInfo": "ویرایش اطلاعات نسخه", + "nameThisVersion": "این نسخه را نامگذاری کنید", + "currentDraft": "پیش نویس فعلی", + "defaultName": "نسخه بدون عنوان", + "title": "نسخه‌ها", + "releaseNotesPlaceholder": "شرح دهید چه چیزی تغییر کرده است", + "restorationTip": "پس از بازیابی نسخه، پیش‌نویس فعلی بازنویسی خواهد شد.", + "deletionTip": "حذف غیرقابل برگشت است، لطفا تأیید کنید.", + "copyId": "شناسه کپی" + }, + "debug": { + "noData": { + "runThisNode": "این نود را اجرا کن", + "description": "نتایج آخرین اجرا در اینجا نمایش داده خواهد شد" + }, + "variableInspect": { + "trigger": { + "clear": "شفاف", + "stop": "متوقف کن، برو", + "running": "وضعیت اجرای کشینگ", + "normal": "بازبینی متغیر", + "cached": "مشاهده متغیرهای کش شده" + }, + "chatNode": "گفتگو", + "edited": "ویرایش شده", + "systemNode": "سیستم", + "title": "بازبینی متغیر", + "clearAll": "همه را بازنشانی کن", + "emptyLink": "بیشتر یاد بگیرید", + "reset": "تنظیم به آخرین مقدار اجرا شده", + "view": "مشاهده لاگ", + "envNode": "محیط زیست", + "clearNode": "کش متغیر کش شده را پاک کنید", + "emptyTip": "پس از عبور از یک گره روی بوم یا اجرای گره به صورت مرحله‌ای، می‌توانید مقدار فعلی متغیر گره را در بازرسی متغیر مشاهده کنید.", + "resetConversationVar": "متغیر گفتگو را به مقدار پیش‌فرض بازنشانی کنید", + "export": "صادرات", + "exportToolTip": "اکسپورت متغیر به عنوان فایل", + "largeData": "داده های بزرگ، پیش نمایش فقط خواندنی صادرات برای مشاهده همه.", + "largeDataNoExport": "داده های بزرگ - فقط پیش نمایش جزئی", + "listening": { + "title": "در انتظار رویدادها از تریگرها...", + "tip": "اکنون می‌توانید با ارسال درخواست‌های آزمایشی به نقطه پایانی HTTP {{nodeName}} رویدادها را شبیه‌سازی کنید یا از آن به عنوان URL بازخوانی برای دیباگ رویدادهای زنده استفاده کنید. تمام خروجی‌ها را می‌توان به طور مستقیم در بازرس متغیر مشاهده کرد.", + "tipPlugin": "حال می‌توانید در {{- pluginName}} رویداد ایجاد کنید و خروجی‌های این رویدادها را در بازرس متغیرها بازیابی کنید.", + "tipSchedule": "گوش دادن به رویدادها از طریق محرک‌های زمان‌بندی شده.\nزمان اجرای بعدی برنامه‌ریزی شده: {{nextTriggerTime}}", + "tipFallback": "در انتظار رویدادهای فعال‌سازی ورودی باشید. خروجی‌ها در اینجا نمایش داده خواهند شد.", + "defaultNodeName": "این محرک", + "defaultPluginName": "این افزونه فعال می‌شود", + "defaultScheduleTime": "پیکربندی نشده", + "selectedTriggers": "تریگرهای انتخاب‌شده", + "stopButton": "توقف" + } + }, + "settingsTab": "تنظیمات", + "lastRunTab": "آخرین اجرا", + "relations": { + "dependents": "وابسته", + "dependencies": "وابسته", + "noDependents": "بدون وابستگان", + "noDependencies": "بدون وابستگی", + "dependenciesDescription": "گره هایی که این گره به آنها متکی است", + "dependentsDescription": "گره هایی که به این گره متکی هستند" + }, + "relationsTab": "روابط", + "copyLastRun": "کپی آخرین اجرا", + "noLastRunFound": "هیچ اجرای قبلی یافت نشد", + "noMatchingInputsFound": "هیچ ورودی مطابقی از آخرین اجرا یافت نشد", + "copyLastRunError": "نتوانستم ورودی‌های آخرین اجرای را کپی کنم", + "lastOutput": "آخرین خروجی", + "lastRunInputsCopied": "{{count}} ورودی(ها) از اجرای قبلی کپی شد" + }, + "sidebar": { + "exportWarning": "صادرات نسخه ذخیره شده فعلی", + "exportWarningDesc": "این نسخه فعلی ذخیره شده از کار خود را صادر خواهد کرد. اگر تغییرات غیرذخیره شده‌ای در ویرایشگر دارید، لطفاً ابتدا از گزینه صادرات در بوم کار برای ذخیره آنها استفاده کنید." + }, + "publishLimit": { + "startNodeTitlePrefix": "ارتقا به", + "startNodeTitleSuffix": "فعال‌سازی تعداد نامحدود تریگر در هر جریان کاری", + "startNodeDesc": "شما به حد مجاز ۲ ماشه در هر گردش کار برای این طرح رسیده‌اید. برای انتشار این گردش کار ارتقا دهید." + }, + "error": { + "startNodeRequired": "لطفاً ابتدا یک گره شروع اضافه کنید قبل از {{operation}}", + "operations": { + "connectingNodes": "اتصال گره‌ها", + "addingNodes": "افزودن گره‌ها", + "modifyingWorkflow": "تغییر جریان کاری", + "updatingWorkflow": "به‌روزرسانی جریان کاری" + } + }, + "customWebhook": "وبهوک سفارشی", + "difyTeam": "تیم دیفی", + "triggerStatus": { + "enabled": "محرک", + "disabled": "فعال‌سازی • غیرفعال" + }, + "entryNodeStatus": { + "enabled": "شروع", + "disabled": "شروع • غیر فعال" + }, + "onboarding": { + "title": "یک گره شروع را برای آغاز انتخاب کنید", + "description": "گره‌های شروع مختلف، قابلیت‌های متفاوتی دارند. نگران نباشید، همیشه می‌توانید بعداً آن‌ها را تغییر دهید.", + "userInputFull": "ورودی کاربر (گره شروع اصلی)", + "userInputDescription": "گره شروع که امکان تنظیم متغیرهای ورودی کاربر را دارد، با برنامه وب، API سرویس، سرور MCP و جریان کاری به عنوان قابلیت‌های ابزار.", + "trigger": "محرک", + "triggerDescription": "تریگرها می‌توانند به عنوان گره شروع یک گردش کار عمل کنند، مانند کارهای زمان‌بندی‌شده، وبهوک‌های سفارشی، یا یکپارچه‌سازی با برنامه‌های دیگر.", + "back": "بازگشت", + "learnMore": "بیشتر بدانید", + "aboutStartNode": "درباره گره شروع.", + "escTip": { + "press": "چاپ", + "key": "فرار", + "toDismiss": "اخراج کردن" + } + } +} diff --git a/web/i18n/fa-IR/workflow.ts b/web/i18n/fa-IR/workflow.ts deleted file mode 100644 index a2a83acdfb..0000000000 --- a/web/i18n/fa-IR/workflow.ts +++ /dev/null @@ -1,1296 +0,0 @@ -const translation = { - common: { - undo: 'بازگشت', - redo: 'پیشرفت', - editing: 'ویرایش', - autoSaved: 'ذخیره خودکار', - unpublished: 'منتشر نشده', - published: 'منتشر شده', - publish: 'انتشار', - update: 'به‌روزرسانی', - run: 'اجرای تست', - running: 'در حال اجرا', - inRunMode: 'در حالت اجرا', - inPreview: 'در پیش‌نمایش', - inPreviewMode: 'در حالت پیش‌نمایش', - preview: 'پیش‌نمایش', - viewRunHistory: 'مشاهده تاریخچه اجرا', - runHistory: 'تاریخچه اجرا', - goBackToEdit: 'بازگشت به ویرایشگر', - conversationLog: 'گزارش مکالمات', - debugAndPreview: 'پیش‌نمایش', - restart: 'راه‌اندازی مجدد', - currentDraft: 'پیش‌نویس فعلی', - currentDraftUnpublished: 'پیش‌نویس فعلی منتشر نشده', - latestPublished: 'آخرین نسخه منتشر شده', - publishedAt: 'منتشر شده', - restore: 'بازیابی', - runApp: 'اجرای اپلیکیشن', - batchRunApp: 'اجرای دسته‌ای اپلیکیشن', - accessAPIReference: 'دسترسی به مستندات API', - embedIntoSite: 'درج در سایت', - addTitle: 'افزودن عنوان...', - addDescription: 'افزودن توضیحات...', - noVar: 'هیچ متغیری', - searchVar: 'جستجوی متغیر', - variableNamePlaceholder: 'نام متغیر', - setVarValuePlaceholder: 'تنظیم متغیر', - needConnectTip: 'این مرحله به هیچ چیزی متصل نیست', - maxTreeDepth: 'حداکثر عمق {{depth}} نود در هر شاخه', - workflowProcess: 'فرآیند جریان کار', - notRunning: 'هنوز در حال اجرا نیست', - previewPlaceholder: 'محتوا را در کادر زیر وارد کنید تا اشکال‌زدایی چت‌بات را شروع کنید', - effectVarConfirm: { - title: 'حذف متغیر', - content: 'متغیر در نودهای دیگر استفاده شده است. آیا همچنان می‌خواهید آن را حذف کنید؟', - }, - insertVarTip: 'برای درج سریع کلید \'/\' را فشار دهید', - processData: 'پردازش داده‌ها', - input: 'ورودی', - output: 'خروجی', - jinjaEditorPlaceholder: 'برای درج متغیر \'/\' یا \'{\' را تایپ کنید', - viewOnly: 'فقط مشاهده', - showRunHistory: 'نمایش تاریخچه اجرا', - enableJinja: 'فعال‌سازی پشتیبانی از الگوهای Jinja', - learnMore: 'اطلاعات بیشتر', - copy: 'کپی', - duplicate: 'تکرار', - pasteHere: 'چسباندن اینجا', - pointerMode: 'حالت اشاره‌گر', - handMode: 'حالت دست', - model: 'مدل', - workflowAsTool: 'جریان کار به عنوان ابزار', - configureRequired: 'پیکربندی مورد نیاز', - configure: 'پیکربندی', - manageInTools: 'مدیریت در ابزارها', - workflowAsToolTip: 'پیکربندی ابزار پس از به‌روزرسانی جریان کار مورد نیاز است.', - viewDetailInTracingPanel: 'مشاهده جزئیات', - syncingData: 'همگام‌سازی داده‌ها، فقط چند ثانیه', - importDSL: 'وارد کردن DSL', - importDSLTip: 'پیش‌نویس فعلی بر روی هم نوشته خواهد شد. قبل از وارد کردن، جریان کار را به عنوان نسخه پشتیبان صادر کنید.', - backupCurrentDraft: 'پشتیبان‌گیری از پیش‌نویس فعلی', - chooseDSL: 'انتخاب فایل DSL(yml)', - overwriteAndImport: 'بازنویسی و وارد کردن', - importFailure: 'خطا در وارد کردن', - importSuccess: 'وارد کردن موفقیت‌آمیز', - parallelTip: { - click: { - title: 'کلیک کنید', - desc: 'اضافه کردن', - }, - drag: { - desc: 'برای اتصال', - title: 'کشیدن', - }, - depthLimit: 'حد لایه تودرتو موازی لایه های {{num}}', - limit: 'موازی سازی به شاخه های {{num}} محدود می شود.', - }, - disconnect: 'قطع', - jumpToNode: 'پرش به این گره', - addParallelNode: 'افزودن گره موازی', - parallel: 'موازی', - branch: 'شاخه', - ImageUploadLegacyTip: 'اکنون می توانید متغیرهای نوع فایل را در فرم شروع ایجاد کنید. ما دیگر از ویژگی آپلود تصویر در آینده پشتیبانی نخواهیم کرد.', - fileUploadTip: 'ویژگی های آپلود تصویر برای آپلود فایل ارتقا یافته است.', - importWarning: 'احتیاط', - importWarningDetails: 'تفاوت نسخه DSL ممکن است بر ویژگی های خاصی تأثیر بگذارد', - openInExplore: 'باز کردن در کاوش', - onFailure: 'در مورد شکست', - addFailureBranch: 'افزودن برنچ Fail', - noHistory: 'بدون تاریخچه', - loadMore: 'بارگذاری گردش کار بیشتر', - exportPNG: 'صادرات به فرمت PNG', - exitVersions: 'نسخه‌های خروجی', - exportSVG: 'صادرات به فرمت SVG', - exportJPEG: 'صادرات به فرمت JPEG', - exportImage: 'تصویر را صادر کنید', - versionHistory: 'تاریخچه نسخه', - publishUpdate: 'به‌روزرسانی منتشر کنید', - needOutputNode: 'باید گره خروجی اضافه شود', - needAnswerNode: 'باید گره پاسخ اضافه شود', - addBlock: 'نود اضافه کنید', - tagBound: 'تعداد برنامه‌هایی که از این برچسب استفاده می‌کنند', - currentView: 'نمای فعلی', - currentWorkflow: 'گردش کار فعلی', - moreActions: 'اقدامات بیشتر', - listening: 'گوش دادن', - chooseStartNodeToRun: 'گره شروع را برای اجرا انتخاب کنید', - runAllTriggers: 'اجرای همه‌ی تریگرها', - features: 'ویژگی‌ها', - featuresDescription: 'بهبود تجربه کاربری برنامه وب', - featuresDocLink: 'بیشتر بدانید', - needAdd: 'باید یک گره {{node}} اضافه شود', - needStartNode: 'حداقل یک گره شروع باید اضافه شود', - workflowAsToolDisabledHint: 'آخرین جریان کاری را منتشر کنید و قبل از تنظیم آن به عنوان یک ابزار، مطمئن شوید که یک گره ورودی کاربر متصل وجود دارد.', - }, - env: { - envPanelTitle: 'متغیرهای محیطی', - envDescription: 'متغیرهای محیطی می‌توانند برای ذخیره اطلاعات خصوصی و اعتبارنامه‌ها استفاده شوند. آنها فقط خواندنی هستند و می‌توانند در حین صادر کردن از فایل DSL جدا شوند.', - envPanelButton: 'افزودن متغیر', - modal: { - title: 'افزودن متغیر محیطی', - editTitle: 'ویرایش متغیر محیطی', - type: 'نوع', - name: 'نام', - namePlaceholder: 'نام متغیر', - value: 'مقدار', - valuePlaceholder: 'مقدار متغیر', - secretTip: 'برای تعریف اطلاعات حساس یا داده‌ها، با تنظیمات DSL برای جلوگیری از نشت پیکربندی شده است.', - description: 'توضیحات', - descriptionPlaceholder: 'متغیر را توصیف کنید', - }, - export: { - title: 'آیا متغیرهای محیطی مخفی را صادر کنید؟', - checkbox: 'صادر کردن مقادیر مخفی', - ignore: 'صادر کردن DSL', - export: 'صادر کردن DSL با مقادیر مخفی', - }, - }, - globalVar: { - title: 'متغیرهای سیستمی', - description: 'متغیرهای سیستمی متغیرهای سراسری هستند که هر گره در صورت مطابقت نوع می‌تواند بدون سیم‌کشی از آن‌ها استفاده کند، مانند شناسه کاربر نهایی و شناسه گردش‌کار.', - fieldsDescription: { - conversationId: 'شناسه گفتگو', - dialogCount: 'تعداد گفتگو', - userId: 'شناسه کاربر', - triggerTimestamp: 'برچسب زمانی شروع اجرای برنامه', - appId: 'شناسه برنامه', - workflowId: 'شناسه گردش‌کار', - workflowRunId: 'شناسه اجرای گردش‌کار', - }, - }, - chatVariable: { - panelTitle: 'متغیرهای مکالمه', - panelDescription: 'متغیرهای مکالمه برای ذخیره اطلاعات تعاملی که LLM نیاز به یادآوری دارد استفاده می‌شوند، از جمله تاریخچه مکالمه، فایل‌های آپلود شده و ترجیحات کاربر. آنها قابل خواندن و نوشتن هستند.', - docLink: 'برای اطلاعات بیشتر به مستندات ما مراجعه کنید.', - button: 'افزودن متغیر', - modal: { - title: 'افزودن متغیر مکالمه', - editTitle: 'ویرایش متغیر مکالمه', - name: 'نام', - namePlaceholder: 'نام متغیر', - type: 'نوع', - value: 'مقدار پیش‌فرض', - valuePlaceholder: 'مقدار پیش‌فرض، برای عدم تنظیم خالی بگذارید', - description: 'توضیحات', - descriptionPlaceholder: 'متغیر را توصیف کنید', - editInJSON: 'ویرایش در JSON', - oneByOne: 'افزودن یکی یکی', - editInForm: 'ویرایش در فرم', - arrayValue: 'مقدار', - addArrayValue: 'افزودن مقدار', - objectKey: 'کلید', - objectType: 'نوع', - objectValue: 'مقدار پیش‌فرض', - }, - storedContent: 'محتوای ذخیره شده', - updatedAt: 'به‌روزرسانی شده در ', - }, - changeHistory: { - title: 'تاریخچه تغییرات', - placeholder: 'هنوز تغییری ایجاد نکردید', - clearHistory: 'پاک کردن تاریخچه', - hint: 'راهنما', - hintText: 'عملیات ویرایش شما در تاریخچه تغییرات پیگیری می‌شود که برای مدت این جلسه بر روی دستگاه شما ذخیره می‌شود. این تاریخچه هنگام خروج از ویرایشگر پاک خواهد شد.', - stepBackward_one: '{{count}} قدم به عقب', - stepBackward_other: '{{count}} قدم به عقب', - stepForward_one: '{{count}} قدم به جلو', - stepForward_other: '{{count}} قدم به جلو', - sessionStart: 'شروع جلسه', - currentState: 'وضعیت کنونی', - noteAdd: 'یادداشت اضافه شده است', - noteChange: 'یادداشت تغییر کرده است', - noteDelete: 'یادداشت حذف شده است', - nodeDelete: 'نود حذف شد', - nodeAdd: 'نود اضافه شد', - nodeDragStop: 'گره منتقل شد', - edgeDelete: 'گره قطع شده است', - nodeResize: 'اندازه نود تغییر یافته است', - nodePaste: 'نود پیست شده است', - nodeTitleChange: 'عنوان نود تغییر کرد', - nodeConnect: 'گره متصل است', - nodeDescriptionChange: 'شرح نود تغییر کرد', - nodeChange: 'نود تغییر کرد', - }, - errorMsg: { - fieldRequired: '{{field}} الزامی است', - authRequired: 'احراز هویت ضروری است', - invalidJson: '{{field}} JSON معتبر نیست', - fields: { - variable: 'نام متغیر', - variableValue: 'مقدار متغیر', - code: 'کد', - model: 'مدل', - rerankModel: 'مدل مجدد رتبه‌بندی', - visionVariable: 'متغیر بینایی', - }, - invalidVariable: 'متغیر نامعتبر', - rerankModelRequired: 'قبل از روشن کردن Rerank Model، لطفا تأیید کنید که مدل با موفقیت در تنظیمات پیکربندی شده است.', - noValidTool: '{{field}} هیچ ابزار معتبری انتخاب نشده است', - toolParameterRequired: '{{field}}: پارامتر [{{param}}] مورد نیاز است', - startNodeRequired: 'لطفاً ابتدا یک گره شروع اضافه کنید قبل از {{operation}}', - }, - singleRun: { - testRun: 'اجرای آزمایشی', - startRun: 'شروع اجرا', - running: 'در حال اجرا', - testRunIteration: 'تکرار اجرای آزمایشی', - back: 'بازگشت', - iteration: 'تکرار', - loop: 'حلقه', - reRun: 'دوباره اجرا کنید', - preparingDataSource: 'آماده سازی منبع داده', - }, - tabs: { - 'tools': 'ابزارها', - 'allTool': 'همه', - 'customTool': 'سفارشی', - 'workflowTool': 'جریان کار', - 'question-understand': 'درک سوال', - 'logic': 'منطق', - 'transform': 'تبدیل', - 'utilities': 'ابزارهای کاربردی', - 'noResult': 'نتیجه‌ای پیدا نشد', - 'searchTool': 'ابزار جستجو', - 'plugin': 'افزونه', - 'agent': 'استراتژی نمایندگی', - 'blocks': 'گره‌ها', - 'searchBlock': 'گره جستجو', - 'addAll': 'همه را اضافه کنید', - 'allAdded': 'همه اضافه شده است', - 'sources': 'منابع', - 'searchDataSource': 'منبع داده جستجو', - 'start': 'شروع', - 'searchTrigger': 'فعال‌سازی جستجو...', - 'allTriggers': 'همه‌ی محرک‌ها', - 'noPluginsFound': 'هیچ پلاگینی پیدا نشد', - 'requestToCommunity': 'درخواست‌ها از جامعه', - 'featuredTools': 'ویژه', - 'showMoreFeatured': 'نمایش بیشتر', - 'showLessFeatured': 'نمایش کمتر', - 'installed': 'نصب شده', - 'pluginByAuthor': 'توسط {{author}}', - 'usePlugin': 'انتخاب ابزار', - 'hideActions': 'ابزارها را مخفی کن', - 'noFeaturedPlugins': 'ابزارهای بیشتر را در بازار پیدا کنید', - 'noFeaturedTriggers': 'کشف محرک‌های بیشتر در بازار', - 'startDisabledTip': 'گره تریگر و گره ورودی کاربر به‌طور متقابل انحصاری هستند.', - }, - blocks: { - 'start': 'شروع', - 'end': 'خروجی', - 'answer': 'پاسخ', - 'llm': 'مدل زبان بزرگ', - 'knowledge-retrieval': 'استخراج دانش', - 'question-classifier': 'دسته‌بندی سوالات', - 'if-else': 'IF/ELSE', - 'code': 'کد', - 'template-transform': 'الگو', - 'http-request': 'درخواست HTTP', - 'variable-assigner': 'تخصیص‌دهنده متغیر', - 'variable-aggregator': 'تجمع‌دهنده متغیر', - 'assigner': 'تخصیص‌دهنده متغیر', - 'iteration-start': 'شروع تکرار', - 'iteration': 'تکرار', - 'parameter-extractor': 'استخراج‌کننده پارامتر', - 'list-operator': 'عملگر لیست', - 'document-extractor': 'استخراج کننده سند', - 'agent': 'عامل', - 'loop-start': 'شروع حلقه', - 'loop-end': 'خروج از حلقه', - 'loop': 'حلقه', - 'datasource': 'منبع داده', - 'knowledge-index': 'پایگاه دانش', - 'originalStartNode': 'گره شروع اصلی', - 'trigger-schedule': 'راه‌اندازی زمان‌بندی', - 'trigger-webhook': 'راه‌انداز وبهوک', - 'trigger-plugin': 'راه‌انداز پلاگین', - }, - blocksAbout: { - 'start': 'پارامترهای اولیه برای راه‌اندازی جریان کار را تعریف کنید', - 'end': 'خروجی و نوع نتیجه یک جریان کار را تعریف کنید', - 'answer': 'محتوای پاسخ مکالمه چت را تعریف کنید', - 'llm': 'استفاده از مدل‌های زبان بزرگ برای پاسخ به سوالات یا پردازش زبان طبیعی', - 'knowledge-retrieval': 'اجازه می‌دهد تا محتوای متنی مرتبط با سوالات کاربر از دانش استخراج شود', - 'question-classifier': 'شرایط دسته‌بندی سوالات کاربر را تعریف کنید، مدل زبان بزرگ می‌تواند بر اساس توضیحات دسته‌بندی، نحوه پیشرفت مکالمه را تعریف کند', - 'if-else': 'اجازه می‌دهد تا جریان کار به دو شاخه بر اساس شرایط if/else تقسیم شود', - 'code': 'اجرای یک قطعه کد Python یا NodeJS برای پیاده‌سازی منطق سفارشی', - 'template-transform': 'تبدیل داده‌ها به رشته با استفاده از سینتاکس الگوهای Jinja', - 'http-request': 'اجازه می‌دهد تا درخواست‌های سرور از طریق پروتکل HTTP ارسال شوند', - 'variable-assigner': 'تجمع متغیرهای چند شاخه‌ای به یک متغیر واحد برای پیکربندی یکپارچه نودهای پایین‌دستی.', - 'assigner': 'گره تخصیص متغیر برای اختصاص مقادیر به متغیرهای قابل نوشتن (مانند متغیرهای مکالمه) استفاده می‌شود.', - 'variable-aggregator': 'تجمع متغیرهای چند شاخه‌ای به یک متغیر واحد برای پیکربندی یکپارچه نودهای پایین‌دستی.', - 'iteration': 'اجرای چندین مرحله روی یک شیء لیست تا همه نتایج خروجی داده شوند.', - 'parameter-extractor': 'استفاده از مدل زبان بزرگ برای استخراج پارامترهای ساختاری از زبان طبیعی برای فراخوانی ابزارها یا درخواست‌های HTTP.', - 'list-operator': 'برای فیلتر کردن یا مرتب سازی محتوای آرایه استفاده می شود.', - 'document-extractor': 'برای تجزیه اسناد آپلود شده به محتوای متنی استفاده می شود که به راحتی توسط LLM قابل درک است.', - 'agent': 'فراخوانی مدل های زبان بزرگ برای پاسخ به سوالات یا پردازش زبان طبیعی', - 'loop-end': 'معادل "شکستن". این گره هیچ مورد پیکربندی ندارد. هنگامی که بدنه حلقه به این گره می‌رسد، حلقه متوقف می‌شود.', - 'loop': 'یک حلقه منطقی را اجرا کنید تا زمانی که شرایط خاتمه برآورده شود یا حداکثر تعداد حلقه به پایان برسد.', - 'knowledge-index': 'پایگاه دانش درباره', - 'datasource': 'منبع داده درباره', - 'trigger-schedule': 'راه‌اندازی گردش کار مبتنی بر زمان که گردش کارها را بر اساس برنامه آغاز می‌کند', - 'trigger-webhook': 'Webhook Trigger دریافت‌کنندهٔ push‌های HTTP از سیستم‌های شخص ثالث است تا به‌طور خودکار جریان‌های کاری را راه‌اندازی کند.', - 'trigger-plugin': 'راه‌اندازی یکپارچه‌سازی با شخص ثالث که گردش‌های کاری را از رویدادهای پلتفرم خارجی شروع می‌کند', - }, - operator: { - zoomIn: 'بزرگ‌نمایی', - zoomOut: 'کوچک‌نمایی', - zoomTo50: 'بزرگ‌نمایی به 50%', - zoomTo100: 'بزرگ‌نمایی به 100%', - zoomToFit: 'تناسب با اندازه', - horizontal: 'افقی', - alignBottom: 'پایین', - alignRight: 'راست', - vertical: 'عمودی', - alignCenter: 'مرکز', - alignLeft: 'چپ', - distributeVertical: 'توزیع عمودی', - distributeHorizontal: 'توزیع افقی', - alignTop: 'بالا', - alignNodes: 'تراز کردن گره ها', - selectionAlignment: 'تراز انتخاب', - alignMiddle: 'وسط', - }, - panel: { - userInputField: 'فیلد ورودی کاربر', - helpLink: 'راهنما', - about: 'درباره', - createdBy: 'ساخته شده توسط', - nextStep: 'مرحله بعدی', - runThisStep: 'اجرا کردن این مرحله', - checklist: 'چک‌لیست', - checklistTip: 'اطمینان حاصل کنید که همه مسائل قبل از انتشار حل شده‌اند', - checklistResolved: 'تمام مسائل حل شده‌اند', - change: 'تغییر', - optional: '(اختیاری)', - selectNextStep: 'گام بعدی را انتخاب کنید', - changeBlock: 'تغییر گره', - organizeBlocks: 'گره‌ها را سازماندهی کنید', - addNextStep: 'مرحله بعدی را به این فرآیند اضافه کنید', - minimize: 'خروج از حالت تمام صفحه', - maximize: 'بیشینه‌سازی بوم', - scrollToSelectedNode: 'به گره انتخاب شده بروید', - optional_and_hidden: '(اختیاری و پنهان)', - goTo: 'برو به', - startNode: 'گره شروع', - openWorkflow: 'باز کردن جریان کاری', - }, - nodes: { - common: { - outputVars: 'متغیرهای خروجی', - insertVarTip: 'درج متغیر', - memory: { - memory: 'حافظه', - memoryTip: 'تنظیمات حافظه چت', - windowSize: 'اندازه پنجره', - conversationRoleName: 'نام نقش مکالمه', - user: 'پیشوند کاربر', - assistant: 'پیشوند دستیار', - }, - memories: { - title: 'حافظه‌ها', - tip: 'حافظه چت', - builtIn: 'درون‌ساخت', - }, - errorHandle: { - none: { - title: 'هیچ کدام', - desc: 'اگر یک استثنا رخ دهد و مدیریت نشود، گره از کار می افتد', - }, - defaultValue: { - title: 'مقدار پیش فرض', - output: 'مقدار پیش فرض خروجی', - tip: 'در صورت خطا، به زیر مقدار برمی گردد.', - inLog: 'استثنای گره، خروجی بر اساس مقادیر پیش فرض.', - desc: 'هنگامی که خطایی رخ می دهد، یک محتوای خروجی ثابت را مشخص کنید.', - }, - failBranch: { - title: 'شاخه Fail', - desc: 'هنگامی که خطایی رخ می دهد، شاخه استثنا را اجرا می کند', - customize: 'برای سفارشی کردن منطق برنچ fail به بوم بروید.', - inLog: 'Node exception، به طور خودکار شاخه fail را اجرا می کند. خروجی گره یک نوع خطا و پیام خطا را برمی گرداند و آنها را به پایین دست ارسال می کند.', - customizeTip: 'هنگامی که شاخه fail فعال می شود، استثنائات پرتاب شده توسط گره ها فرآیند را خاتمه نمی دهند. در عوض، به طور خودکار شاخه شکست از پیش تعریف شده را اجرا می کند و به شما امکان می دهد پیام های خطا، گزارش ها، اصلاحات یا پرش از اقدامات را به طور انعطاف پذیر ارائه دهید.', - }, - partialSucceeded: { - tip: 'گره های {{num}} در این فرآیند وجود دارند که به طور غیرعادی اجرا می شوند، لطفا برای بررسی سیاههها به ردیابی بروید.', - }, - title: 'مدیریت خطا', - tip: 'استراتژی مدیریت استثنا، زمانی که یک گره با یک استثنا مواجه می شود، فعال می شود.', - }, - retry: { - times: 'بار', - retryInterval: 'فاصله تلاش مجدد', - retryOnFailure: 'در مورد شکست دوباره امتحان کنید', - ms: 'خانم', - retry: 'دوباره', - retries: '{{عدد}} تلاش های مجدد', - maxRetries: 'حداکثر تلاش مجدد', - retrying: 'تلاش مجدد...', - retryFailed: 'تلاش مجدد ناموفق بود', - retryTimes: '{{times}} بار در صورت شکست دوباره امتحان کنید', - retrySuccessful: 'امتحان مجدد با موفقیت انجام دهید', - retryFailedTimes: '{{بار}} تلاش های مجدد ناموفق بود', - }, - typeSwitch: { - input: 'مقدار ورودی', - variable: 'از متغیر استفاده کن', - }, - inputVars: 'متغیرهای ورودی', - pluginNotInstalled: 'افزونه نصب نشده است', - }, - 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 پر کنید.', - prompt: 'پیشنهاد', - roleDescription: { - system: 'دستورات سطح بالا برای مکالمه را ارائه دهید', - user: 'دستورات، پرسش‌ها، یا هر ورودی متنی را به مدل ارائه دهید', - assistant: 'پاسخ‌های مدل بر اساس پیام‌های کاربر', - }, - addMessage: 'افزودن پیام', - vision: 'بینایی', - files: 'فایل‌ها', - resolution: { - name: 'وضوح', - high: 'بالا', - low: 'پایین', - }, - outputVars: { - output: 'تولید محتوا', - reasoning_content: 'محتوای استدلال', - usage: 'اطلاعات استفاده از مدل', - }, - singleRun: { - variable: 'متغیر', - }, - sysQueryInUser: 'sys.query در پیام کاربر ضروری است', - jsonSchema: { - warningTips: { - saveSchema: 'لطفاً قبل از ذخیره‌سازی طرح، ویرایش فیلد فعلی را کامل کنید.', - }, - import: 'واردات از JSON', - addField: 'فیلد اضافه کنید', - required: 'ضروری', - generatedResult: 'نتیجه تولید شده', - generate: 'تولید کنید', - doc: 'بیشتر درباره خروجی ساختار یافته بیاموزید', - generating: 'تولید طرح‌واره JSON...', - instruction: 'دستورالعمل', - back: 'عقب', - resetDefaults: 'تنظیم مجدد', - showAdvancedOptions: 'نمایش گزینه‌های پیشرفته', - regenerate: 'تولید مجدد', - apply: 'اعمال کنید', - title: 'الگوی خروجی ساختاری', - promptTooltip: 'تبدیل توصیف متنی به یک ساختار استاندارد شده JSON Schema.', - stringValidations: 'اعتبارسنجی رشته', - resultTip: 'این نتیجه تولید شده است. اگر راضی نیستید، می‌توانید به عقب برگردید و درخواست خود را ویرایش کنید.', - descriptionPlaceholder: 'توضیحات را اضافه کنید', - addChildField: 'افزودن فیلد فرزند', - generateJsonSchema: 'ایجاد اسکیما JSON', - promptPlaceholder: 'اسکیمای JSON خود را توصیف کنید...', - fieldNamePlaceholder: 'نام میدان', - generationTip: 'شما می‌توانید از زبان طبیعی برای ایجاد سریع یک طرح‌واره JSON استفاده کنید.', - }, - reasoningFormat: { - separated: 'تگ‌های تفکر جداگانه', - title: 'فعال‌سازی جداسازی برچسب‌های استدلال', - tagged: 'به فکر برچسب‌ها باشید', - tooltip: 'محتوا را از تگ‌های تفکر استخراج کرده و در فیلد reasoning_content ذخیره کنید.', - }, - }, - knowledgeRetrieval: { - queryVariable: 'متغیر جستجو', - knowledge: 'دانش', - outputVars: { - output: 'داده‌های تقسیم‌بندی شده بازیابی', - content: 'محتوای تقسیم‌بندی شده', - title: 'عنوان تقسیم‌بندی شده', - icon: 'آیکون تقسیم‌بندی شده', - url: 'URL تقسیم‌بندی شده', - metadata: 'سایر متاداده‌ها', - files: 'فایل‌های بازیابی‌شده', - }, - metadata: { - options: { - disabled: { - title: 'متعادل', - subTitle: 'عدم فعال‌سازی فیلترهای متاداده', - }, - automatic: { - title: 'خودکار', - desc: 'شرایط فیلتر متاداده را بر اساس متغیر جستجو به صورت خودکار تولید کنید', - subTitle: 'شرایط فیلتر متادیتا را به طور خودکار بر اساس پرسش کاربر تولید کنید', - }, - manual: { - subTitle: 'به‌صورت دستی شرایط فیلتر کردن متادیتا را اضافه کنید', - title: 'دستوری', - }, - }, - panel: { - add: 'شرط اضافه کنید', - placeholder: 'مقدار را وارد کنید', - datePlaceholder: 'زمانی را انتخاب کنید...', - search: 'جستجوی متا داده', - select: 'متغیر را انتخاب کنید...', - title: 'شرایط فیلتر متادیتا', - conditions: 'شرایط', - }, - title: 'فیلتر کردن فراداده', - tip: 'فیلتر کردن متاداده فرایند استفاده از ویژگی‌های متاداده (مانند برچسب‌ها، دسته‌ها یا مجوزهای دسترسی) برای تصفیه و کنترل بازیابی اطلاعات مرتبط در یک سیستم است.', - }, - queryText: 'متن پرس و جو', - queryAttachment: 'تصاویر پرس‌وجو', - }, - 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: 'زمان‌توقف نوشتن را به ثانیه وارد کنید', - }, - binaryFileVariable: 'متغیر فایل باینری', - type: 'نوع', - extractListPlaceholder: 'فهرست آیتم لیست را وارد کنید، متغیر درج \'/\' را تایپ کنید', - curl: { - title: 'وارد کردن از cURL', - placeholder: 'رشته cURL را اینجا بچسبانید', - }, - verifySSL: { - title: 'گواهی SSL را تأیید کنید', - warningTooltip: 'غیرفعال کردن تأیید SSL برای محیط‌های تولید توصیه نمی‌شود. این فقط باید در توسعه یا آزمایش استفاده شود، زیرا این کار اتصال را در معرض تهدیدات امنیتی مانند حملات میانی قرار می‌دهد.', - }, - }, - code: { - inputVars: 'متغیرهای ورودی', - outputVars: 'متغیرهای خروجی', - advancedDependencies: 'وابستگی‌های پیشرفته', - advancedDependenciesTip: 'برخی وابستگی‌های پیش‌بارگذاری شده که زمان بیشتری برای مصرف نیاز دارند یا به طور پیش‌فرض در اینجا موجود نیستند، اضافه کنید', - searchDependencies: 'جستجوی وابستگی‌ها', - syncFunctionSignature: 'امضای تابع همگام‌سازی را به کد متصل کنید', - }, - templateTransform: { - inputVars: 'متغیرهای ورودی', - code: 'کد', - codeSupportTip: 'فقط Jinja2 را پشتیبانی می‌کند', - outputVars: { - output: 'محتوای تبدیل‌شده', - }, - }, - ifElse: { - if: 'اگر', - else: 'در غیر این صورت', - elseDescription: 'برای تعریف منطق که باید زمانی که شرط if برآورده نشود، اجرا شود.', - and: 'و', - or: 'یا', - operator: 'عملگر', - notSetVariable: 'لطفاً ابتدا متغیر را تنظیم کنید', - comparisonOperator: { - 'contains': 'شامل', - 'not contains': 'شامل نمی‌شود', - 'start with': 'شروع با', - 'end with': 'پایان با', - 'is': 'است', - 'is not': 'نیست', - 'empty': 'خالی است', - 'not empty': 'خالی نیست', - 'null': 'خالی', - 'not null': 'خالی نیست', - 'in': 'در', - 'not exists': 'وجود ندارد', - 'all of': 'همه از', - 'not in': 'نه در', - 'exists': 'موجود', - 'after': 'بعد از', - 'before': 'قبل از', - }, - enterValue: 'مقدار را وارد کنید', - addCondition: 'افزودن شرط', - conditionNotSetup: 'شرط تنظیم نشده است', - selectVariable: 'متغیر را انتخاب کنید...', - optionName: { - video: 'ویدئو', - doc: 'توضیحات', - localUpload: 'آپلود محلی', - audio: 'صوتی', - url: 'آدرس', - image: 'تصویر', - }, - select: 'انتخاب', - addSubVariable: 'متغیر فرعی', - }, - variableAssigner: { - title: 'تخصیص متغیرها', - outputType: 'نوع خروجی', - varNotSet: 'متغیر تنظیم نشده است', - noVarTip: 'متغیرهایی را که باید اختصاص داده شوند اضافه کنید', - type: { - string: 'رشته', - number: 'عدد', - object: 'شیء', - array: 'آرایه', - }, - aggregationGroup: 'گروه تجمع', - aggregationGroupTip: 'فعال کردن این ویژگی اجازه می‌دهد تا تجمع‌کننده متغیرها چندین مجموعه متغیر را تجمیع کند.', - addGroup: 'افزودن گروه', - outputVars: { - varDescribe: '{{groupName}} خروجی', - }, - setAssignVariable: 'تعیین متغیر تخصیص یافته', - }, - assigner: { - 'assignedVariable': 'متغیر اختصاص داده شده', - 'writeMode': 'حالت نوشتن', - 'writeModeTip': 'وقتی متغیر اختصاص داده شده یک آرایه است، حالت افزودن به انتها اضافه می‌کند.', - 'over-write': 'بازنویسی', - 'append': 'افزودن', - 'plus': 'به علاوه', - 'clear': 'پاک کردن', - 'setVariable': 'تنظیم متغیر', - 'variable': 'متغیر', - 'operations': { - 'clear': 'روشن', - 'over-write': 'بازنویسی', - 'set': 'مجموعه', - '*=': '*=', - 'overwrite': 'بازنویسی', - '+=': '+=', - 'title': 'عملیات', - 'extend': 'گسترش', - '-=': '-=', - 'append': 'الحاق', - '/=': '/=', - 'remove-first': 'حذف اول', - 'remove-last': 'آخرین را حذف کنید', - }, - 'noVarTip': 'برای افزودن متغیرها روی دکمه "+" کلیک کنید', - 'selectAssignedVariable': 'متغیر اختصاص داده شده را انتخاب کنید...', - 'noAssignedVars': 'هیچ متغیر اختصاص داده شده در دسترس نیست', - 'setParameter': 'پارامتر را تنظیم کنید...', - 'assignedVarsDescription': 'متغیرهای اختصاص داده شده باید متغیرهای قابل نوشتن مانند متغیرهای مکالمه باشند.', - 'variables': 'متغیرهای', - 'varNotSet': 'متغیر NOT Set', - }, - tool: { - inputVars: 'متغیرهای ورودی', - outputVars: { - text: 'محتوای تولید شده توسط ابزار', - files: { - title: 'فایل‌های تولید شده توسط ابزار', - type: 'نوع پشتیبانی. در حال حاضر فقط تصاویر پشتیبانی می‌شود', - transfer_method: 'روش انتقال. مقدار آن remote_url یا local_file است', - url: 'URL تصویر', - upload_file_id: 'شناسه فایل آپلود شده', - }, - json: 'json تولید شده توسط ابزار', - }, - authorize: 'مجوز دادن', - settings: 'تنظیمات', - insertPlaceholder2: 'متغیر را وارد کنید', - insertPlaceholder1: 'نوع کنید یا فشار دهید', - }, - questionClassifiers: { - model: 'مدل', - inputVars: 'متغیرهای ورودی', - outputVars: { - className: 'نام کلاس', - usage: 'اطلاعات استفاده از مدل', - }, - class: 'کلاس', - classNamePlaceholder: 'نام کلاس خود را بنویسید', - advancedSetting: 'تنظیمات پیشرفته', - topicName: 'نام موضوع', - topicPlaceholder: 'نام موضوع خود را بنویسید', - addClass: 'افزودن کلاس', - instruction: 'دستورالعمل', - instructionTip: 'دستورالعمل‌های اضافی را برای کمک به دسته‌بند سوالات برای درک بهتر نحوه دسته‌بندی سوالات وارد کنید.', - instructionPlaceholder: 'دستورالعمل خود را بنویسید', - }, - parameterExtractor: { - inputVar: 'متغیر ورودی', - outputVars: { - isSuccess: 'موفقیت‌آمیز است. در صورت موفقیت مقدار 1 و در صورت شکست مقدار 0 است.', - errorReason: 'دلیل خطا', - usage: 'اطلاعات استفاده از مدل', - }, - extractParameters: 'استخراج پارامترها', - importFromTool: 'وارد کردن از ابزارها', - addExtractParameter: 'افزودن پارامتر استخراج شده', - addExtractParameterContent: { - name: 'نام', - namePlaceholder: 'نام پارامتر استخراج شده', - type: 'نوع', - typePlaceholder: 'نوع پارامتر استخراج شده', - description: 'توضیحات', - descriptionPlaceholder: 'توضیحات پارامتر استخراج شده', - required: 'الزامی', - requiredContent: 'الزامی فقط به عنوان مرجع برای استنتاج مدل استفاده می‌شود و برای اعتبارسنجی اجباری خروجی پارامتر نیست.', - }, - extractParametersNotSet: 'پارامترهای استخراج شده تنظیم نشده‌اند', - instruction: 'دستورالعمل', - instructionTip: 'دستورالعمل‌های اضافی را برای کمک به استخراج‌کننده پارامتر برای درک نحوه استخراج پارامترها وارد کنید.', - advancedSetting: 'تنظیمات پیشرفته', - reasoningMode: 'حالت استدلال', - reasoningModeTip: 'می‌توانید حالت استدلال مناسب را بر اساس توانایی مدل برای پاسخ به دستورات برای فراخوانی عملکردها یا پیشنهادات انتخاب کنید.', - }, - iteration: { - deleteTitle: 'حذف نود تکرار؟', - deleteDesc: 'حذف نود تکرار باعث حذف تمام نودهای فرزند خواهد شد', - input: 'ورودی', - output: 'متغیرهای خروجی', - iteration_one: '{{count}} تکرار', - iteration_other: '{{count}} تکرارها', - currentIteration: 'تکرار فعلی', - ErrorMethod: { - continueOnError: 'ادامه در خطا', - operationTerminated: 'فسخ', - removeAbnormalOutput: 'حذف خروجی غیرطبیعی', - }, - error_one: '{{تعداد}} خطا', - error_other: '{{تعداد}} خطاهای', - parallelMode: 'حالت موازی', - errorResponseMethod: 'روش پاسخ به خطا', - parallelModeEnableTitle: 'حالت موازی فعال است', - parallelModeUpper: 'حالت موازی', - comma: ',', - parallelModeEnableDesc: 'در حالت موازی، وظایف درون تکرارها از اجرای موازی پشتیبانی می کنند. می توانید این را در پانل ویژگی ها در سمت راست پیکربندی کنید.', - MaxParallelismTitle: 'حداکثر موازی سازی', - parallelPanelDesc: 'در حالت موازی، وظایف در تکرار از اجرای موازی پشتیبانی می کنند.', - MaxParallelismDesc: 'حداکثر موازی سازی برای کنترل تعداد وظایف اجرا شده به طور همزمان در یک تکرار واحد استفاده می شود.', - answerNodeWarningDesc: 'هشدار حالت موازی: گره های پاسخ، تکالیف متغیر مکالمه و عملیات خواندن/نوشتن مداوم در تکرارها ممکن است باعث استثنائات شود.', - flattenOutput: 'صاف کردن خروجی', - flattenOutputDesc: 'هنگامی که فعال باشد، اگر تمام خروجی‌های تکرار آرایه باشند، آنها به یک آرایهٔ واحد تبدیل خواهند شد. هنگامی که غیرفعال باشد، خروجی‌ها ساختار آرایهٔ تو در تو را حفظ می‌کنند.', - }, - note: { - addNote: 'افزودن یادداشت', - editor: { - placeholder: 'یادداشت خود را بنویسید...', - small: 'کوچک', - medium: 'متوسط', - large: 'بزرگ', - bold: 'پررنگ', - italic: 'ایتالیک', - strikethrough: 'خط‌خورده', - link: 'لینک', - openLink: 'باز کردن', - unlink: 'حذف لینک', - enterUrl: 'URL را وارد کنید...', - invalidUrl: 'URL نامعتبر', - bulletList: 'فهرست گلوله‌ای', - showAuthor: 'نمایش نویسنده', - }, - }, - docExtractor: { - outputVars: { - text: 'متن استخراج شده', - }, - inputVar: 'متغیر ورودی', - learnMore: 'بیشتر بدانید', - supportFileTypes: 'انواع فایل های پشتیبانی: {{types}}.', - }, - listFilter: { - outputVars: { - result: 'نتیجه فیلتر', - first_record: 'اولین رکورد', - last_record: 'آخرین رکورد', - }, - limit: 'بالا N', - inputVar: 'متغیر ورودی', - filterCondition: 'وضعیت فیلتر', - orderBy: 'سفارش بر اساس', - filterConditionKey: 'کلید وضعیت فیلتر', - desc: 'نزولی', - filterConditionComparisonOperator: 'عملگر مقایسه شرایط فیلتر', - filterConditionComparisonValue: 'مقدار شرایط فیلتر', - selectVariableKeyPlaceholder: 'کلید متغیر فرعی را انتخاب کنید', - asc: 'صعودی', - extractsCondition: 'مورد N را استخراج کنید', - }, - agent: { - strategy: { - searchPlaceholder: 'جست وجو در استراتژی های عاملی', - tooltip: 'استراتژی های مختلف عامل تعیین می کنند که سیستم چگونه فراخوانی های ابزار چند مرحله ای را برنامه ریزی و اجرا می کند.', - label: 'استراتژی عامل', - configureTip: 'لطفا استراتژی عامل را پیکربندی کنید.', - selectTip: 'استراتژی عامل را انتخاب کنید', - configureTipDesc: 'پس از پیکربندی استراتژی عامل، این گره به طور خودکار پیکربندی های باقیمانده را بارگیری می کند. این استراتژی بر مکانیسم استدلال ابزار چند مرحله ای تأثیر خواهد گذاشت.', - shortLabel: 'استراتژی', - }, - pluginInstaller: { - installing: 'نصب', - install: 'نصب', - }, - modelNotInMarketplace: { - manageInPlugins: 'مدیریت در پلاگین ها', - title: 'مدل نصب نشده است', - desc: 'این مدل از مخزن Local یا GitHub نصب شده است. لطفا پس از نصب استفاده کنید.', - }, - modelNotSupport: { - desc: 'نسخه افزونه نصب شده این مدل را ارائه نمی دهد.', - title: 'مدل پشتیبانی نشده', - descForVersionSwitch: 'نسخه افزونه نصب شده این مدل را ارائه نمی دهد. برای تغییر نسخه کلیک کنید.', - }, - modelSelectorTooltips: { - deprecated: 'این مدل منسوخ شده است', - }, - outputVars: { - files: { - transfer_method: 'روش انتقال. ارزش remote_url یا local_file', - upload_file_id: 'شناسه فایل را آپلود کنید', - title: 'فایل های تولید شده توسط عامل', - url: 'آدرس اینترنتی تصویر', - type: 'نوع پشتیبانی. اکنون فقط از تصویر پشتیبانی می کند', - }, - text: 'محتوای تولید شده توسط عامل', - usage: 'اطلاعات استفاده از مدل', - json: 'عامل JSON را تولید کرد', - }, - checkList: { - strategyNotSelected: 'استراتژی انتخاب نشده است', - }, - installPlugin: { - changelog: 'گزارش تغییر', - install: 'نصب', - cancel: 'لغو', - title: 'افزونه را نصب کنید', - desc: 'در مورد نصب افزونه زیر', - }, - pluginNotFoundDesc: 'این پلاگین از GitHub نصب شده است. لطفا برای نصب مجدد به پلاگین ها بروید', - linkToPlugin: 'پیوند به پلاگین ها', - toolbox: 'جعبه ابزار', - maxIterations: 'حداکثر تکرارها', - strategyNotSet: 'استراتژی عامل تنظیم نشده است', - strategyNotInstallTooltip: '{{strategy}} نصب نشده است', - modelNotSelected: 'مدل انتخاب نشده است', - toolNotInstallTooltip: '{{ابزار}} نصب نشده است', - tools: 'ابزار', - learnMore: 'بیشتر بدانید', - pluginNotInstalledDesc: 'این پلاگین از GitHub نصب شده است. لطفا برای نصب مجدد به پلاگین ها بروید', - unsupportedStrategy: 'استراتژی پشتیبانی نشده', - modelNotInstallTooltip: 'این مدل نصب نشده است', - notAuthorized: 'مجاز نیست', - toolNotAuthorizedTooltip: '{{ابزار}} مجاز نیست', - configureModel: 'پیکربندی مدل', - pluginNotInstalled: 'این افزونه نصب نشده است', - strategyNotFoundDesc: 'نسخه افزونه نصب شده این استراتژی را ارائه نمی دهد.', - strategyNotFoundDescAndSwitchVersion: 'نسخه افزونه نصب شده این استراتژی را ارائه نمی دهد. برای تغییر نسخه کلیک کنید.', - model: 'مدل', - parameterSchema: 'طرح پارامتر', - clickToViewParameterSchema: 'برای مشاهده طرح پارامتر کلیک کنید', - }, - loop: { - ErrorMethod: { - removeAbnormalOutput: 'خروجی غیرعادی را حذف کنید', - operationTerminated: 'منحل شد', - continueOnError: 'ادامه در صورت بروز خطا', - }, - variableName: 'نام متغیر', - error_other: '{{count}} خطا', - loopNode: 'گره حلقه', - exitConditionTip: 'یک گره حلقه به حداقل یک شرط خروج نیاز دارد.', - inputMode: 'حالت ورودی', - loop_other: '{{count}} حلقه', - error_one: '{{count}} خطا', - comma: ',', - loopVariables: 'متغیرهای حلقه', - setLoopVariables: 'متغیرها را در محدوده حلقه تنظیم کنید', - loop_one: '{{count}} حلقه', - deleteTitle: 'حذف گره حلقه؟', - input: 'ورودی', - finalLoopVariables: 'متغیرهای نهایی حلقه', - output: 'متغیر خروجی', - totalLoopCount: 'تعداد کل حلقه: {{count}}', - currentLoop: 'حلقه جاری', - initialLoopVariables: 'متغیرهای حلقه اولیه', - errorResponseMethod: 'روش پاسخ خطا', - loopMaxCountError: 'لطفاً یک تعداد حداکثر حلقه معتبر وارد کنید که در بازه‌ی ۱ تا {{maxCount}} باشد.', - deleteDesc: 'حذف نود حلقه همه نودهای فرزند را حذف خواهد کرد', - loopMaxCount: 'حداکثر تعداد حلقه', - currentLoopCount: 'تعداد حلقه‌های فعلی: {{count}}', - breakCondition: 'شرط خاتمه حلقه', - breakConditionTip: 'فقط متغیرهای داخل حلقه‌ها با شرایط خاتمه و متغیرهای گفتگو می‌توانند مورد ارجاع قرار گیرند.', - }, - dataSource: { - supportedFileFormatsPlaceholder: 'پسوند فایل، e.g. doc', - add: 'منبع داده را اضافه کنید', - supportedFileFormats: 'فرمت های فایل پشتیبانی شده', - }, - knowledgeBase: { - chunkStructureTip: { - learnMore: 'بیشتر بدانید', - title: 'لطفا یک ساختار تکه ای را انتخاب کنید', - message: 'پایگاه دانش Dify از سه ساختار تکه ای پشتیبانی می کند: عمومی، والد-فرزند و پرسش و پاسخ. هر پایگاه دانش فقط می تواند یک ساختار داشته باشد. خروجی گره قبلی باید با ساختار تکه انتخاب شده هماهنگ باشد. توجه داشته باشید که انتخاب ساختار تکه بندی بر روش های شاخص موجود تأثیر می گذارد.', - }, - chunkStructure: 'ساختار تکه', - retrievalSettingIsRequired: 'تنظیمات بازیابی مورد نیاز است', - indexMethodIsRequired: 'روش شاخص مورد نیاز است', - changeChunkStructure: 'تغییر ساختار تکه', - aboutRetrieval: 'درباره روش بازیابی.', - chunkIsRequired: 'ساختار تکه ای مورد نیاز است', - chooseChunkStructure: 'یک ساختار تکه ای را انتخاب کنید', - chunksInput: 'تکه‌ها', - chunksInputTip: 'متغیر ورودی گره پایگاه دانش تکه‌ها است. نوع متغیر یک شیء با یک طرح JSON خاص است که باید با ساختار تکه انتخاب شده سازگار باشد.', - embeddingModelIsRequired: 'مدل جاسازی مورد نیاز است', - chunksVariableIsRequired: 'متغیر تکه‌ها الزامی است', - rerankingModelIsRequired: 'مدل رتبه‌بندی مجدد مورد نیاز است', - embeddingModelIsInvalid: 'مدل جاسازی نامعتبر است', - rerankingModelIsInvalid: 'مدل رتبه‌بندی مجدد نامعتبر است', - }, - triggerPlugin: { - authorized: 'مجاز', - notConfigured: 'پیکربندی نشده', - notAuthorized: 'مجوز ندارد', - selectSubscription: 'انتخاب اشتراک', - availableSubscriptions: 'اشتراک‌های موجود', - addSubscription: 'افزودن اشتراک جدید', - removeSubscription: 'لغو اشتراک', - subscriptionRemoved: 'اشتراک با موفقیت حذف شد', - error: 'خطا', - configuration: 'پیکربندی', - remove: 'حذف', - or: 'یا', - useOAuth: 'استفاده از OAuth', - useApiKey: 'استفاده از کلید API', - authenticationFailed: 'احراز هویت ناموفق بود', - authenticationSuccess: 'احراز هویت با موفقیت انجام شد', - oauthConfigFailed: 'پیکربندی OAuth با شکست مواجه شد', - configureOAuthClient: 'پیکربندی مشتری OAuth', - oauthClientDescription: 'تنظیم اطلاعات مشتری OAuth برای فعال‌سازی احراز هویت', - oauthClientSaved: 'پیکربندی کلاینت OAuth با موفقیت ذخیره شد', - configureApiKey: 'پیکربندی کلید API', - apiKeyDescription: 'تنظیم اطلاعات کلید API برای احراز هویت', - apiKeyConfigured: 'کلید API با موفقیت پیکربندی شد', - configurationFailed: 'پیکربندی ناموفق بود', - failedToStart: 'شروع فرآیند احراز هویت ناکام ماند', - credentialsVerified: 'اعتبارات با موفقیت تأیید شد', - credentialVerificationFailed: 'اعتبارسنجی مدارک ناموفق بود', - verifyAndContinue: 'تأیید و ادامه', - configureParameters: 'پیکربندی پارامترها', - parametersDescription: 'تنظیم پارامترها و ویژگی‌های تریگر', - configurationComplete: 'پیکربندی کامل شد', - configurationCompleteDescription: 'راه‌انداز شما با موفقیت پیکربندی شد', - configurationCompleteMessage: 'پیکربندی ماشه شما اکنون کامل شده و آماده استفاده است.', - parameters: 'پارامترها', - properties: 'ویژگی‌ها', - propertiesDescription: 'خصوصیات پیکربندی اضافی برای این تریگر', - noConfigurationRequired: 'برای این محرک تنظیمات اضافی لازم نیست.', - subscriptionName: 'نام اشتراک', - subscriptionNameDescription: 'یک نام منحصر به فرد برای اشتراک این تریگر وارد کنید', - subscriptionNamePlaceholder: 'نام اشتراک را وارد کنید...', - subscriptionNameRequired: 'نام اشتراک الزامی است', - subscriptionRequired: 'اشتراک لازم است', - }, - triggerSchedule: { - title: 'برنامه', - nodeTitle: 'راه‌اندازی زمان‌بندی', - notConfigured: 'پیکربندی نشده', - useCronExpression: 'استفاده از عبارت کران', - useVisualPicker: 'استفاده از انتخابگر بصری', - frequency: { - label: 'فرکانس', - hourly: 'ساعتی', - daily: 'روزانه', - weekly: 'هفتگی', - monthly: 'ماهانه', - }, - selectFrequency: 'انتخاب فرکانس', - frequencyLabel: 'فرکانس', - nextExecution: 'اجرای بعدی', - weekdays: 'روزهای هفته', - time: 'زمان', - cronExpression: 'بیان کرون', - nextExecutionTime: 'زمان اجرای بعدی', - nextExecutionTimes: '۵ زمان اجرای بعدی', - startTime: 'زمان شروع', - executeNow: 'اجرا اکنون', - selectDateTime: 'تاریخ و زمان را انتخاب کنید', - hours: 'ساعات', - minutes: 'دقایق', - onMinute: 'در دقیقه', - days: 'روزها', - lastDay: 'آخرین روز', - lastDayTooltip: 'تمام ماه‌ها ۳۱ روز ندارند. از گزینه «آخرین روز» برای انتخاب روز آخر هر ماه استفاده کنید.', - mode: 'مد', - timezone: 'منطقه زمانی', - visualConfig: 'پیکربندی بصری', - monthlyDay: 'روز ماهانه', - executionTime: 'زمان اجرا', - invalidTimezone: 'منطقه زمانی نامعتبر', - invalidCronExpression: 'عبارت کرون نامعتبر', - noValidExecutionTime: 'زمان اجرای معتبر نمی‌تواند محاسبه شود', - executionTimeCalculationError: 'محاسبه زمان‌های اجرا با شکست مواجه شد', - invalidFrequency: 'فرکانس نامعتبر', - invalidStartTime: 'زمان شروع نامعتبر', - startTimeMustBeFuture: 'زمان شروع باید در آینده باشد', - invalidTimeFormat: 'فرمت زمان نامعتبر است (انتظار می‌رفت HH:MM AM/PM باشد)', - invalidWeekday: 'روز هفته نامعتبر: {{weekday}}', - invalidMonthlyDay: 'روز ماهانه باید بین ۱ تا ۳۱ یا «آخر» باشد', - invalidOnMinute: 'دقیقه باید بین ۰ تا ۵۹ باشد', - invalidExecutionTime: 'زمان اجرای نامعتبر', - executionTimeMustBeFuture: 'زمان اجرا باید در آینده باشد', - }, - triggerWebhook: { - title: 'راه‌اندازی وبهوک', - nodeTitle: '🔗 فعال‌سازی وبهوک', - configPlaceholder: 'پیکربندی فعال‌سازی وب هوک در اینجا انجام خواهد شد', - webhookUrl: 'آدرس وب هوک', - webhookUrlPlaceholder: 'برای ایجاد آدرس وبهوک روی تولید کلیک کنید', - generate: 'تولید کردن', - copy: 'کپی', - test: 'تست', - urlGenerated: 'آدرس وبهوک با موفقیت ایجاد شد', - urlGenerationFailed: 'ایجاد URL وب‌هوک ناموفق بود', - urlCopied: 'آدرس وب‌سایت در حافظه موقت کپی شد', - method: 'روش', - contentType: 'نوع محتوا', - queryParameters: 'پارامترهای پرس‌وجو', - headerParameters: 'پارامترهای هدر', - requestBodyParameters: 'پارامترهای بدنه درخواست', - parameterName: 'نام متغیر', - varName: 'نام متغیر', - varType: 'نوع', - varNamePlaceholder: 'نام متغیر را وارد کنید...', - required: 'الزامی', - addParameter: 'افزودن', - addHeader: 'افزودن', - noParameters: 'هیچ پارامتری پیکربندی نشده است', - noQueryParameters: 'پارامترهای پرس‌وجو تنظیم نشده‌اند', - noHeaders: 'هیچ هدر پیکربندی نشده است', - noBodyParameters: 'هیچ پارامتر بدنی پیکربندی نشده است', - debugUrlTitle: 'برای اجرای آزمایشی، همیشه از این آدرس اینترنتی استفاده کنید', - debugUrlCopy: 'برای کپی کلیک کنید', - debugUrlCopied: 'کپی شد!', - debugUrlPrivateAddressWarning: 'به نظر می‌رسد این URL یک آدرس داخلی است که ممکن است باعث شود درخواست‌های وب‌هوک با شکست مواجه شوند. شما می‌توانید TRIGGER_URL را به یک آدرس عمومی تغییر دهید.', - errorHandling: 'مدیریت خطا', - errorStrategy: 'مدیریت خطا', - responseConfiguration: 'پاسخ', - asyncMode: 'حالت غیرهمزمان', - statusCode: 'کد وضعیت', - responseBody: 'بدنه پاسخ', - responseBodyPlaceholder: 'بدنه پاسخ خود را اینجا بنویسید', - headers: 'سرتیترها', - validation: { - webhookUrlRequired: 'آدرس وبهوک الزامی است', - invalidParameterType: 'نوع پارامتر نامعتبر "{{type}}" برای پارامتر "{{name}}"', - }, - }, - }, - tracing: { - stopBy: 'متوقف شده توسط {{user}}', - }, - variableReference: { - noAvailableVars: 'هیچ متغیری در دسترس نیست', - conversationVars: 'متغیرهای مکالمه', - noVarsForOperation: 'هیچ متغیری برای تخصیص با عملیات انتخاب شده در دسترس نیست.', - assignedVarsDescription: 'متغیرهای اختصاص داده شده باید متغیرهای قابل نوشتن باشند، مانند', - noAssignedVars: 'هیچ متغیر اختصاص داده شده در دسترس نیست', - }, - versionHistory: { - filter: { - reset: 'بازنشانی فیلتر', - onlyYours: 'فقط مال شماست', - onlyShowNamedVersions: 'فقط نسخه‌های نام‌گذاری شده را نمایش بدهید', - all: 'همه', - empty: 'هیچ تاریخچه نسخه‌ای مطابق پیدا نشد', - }, - editField: { - title: 'عنوان', - releaseNotes: 'یادداشت‌های نسخه', - titleLengthLimit: 'عنوان نمی‌تواند از {{limit}} کاراکتر بیشتر شود', - releaseNotesLengthLimit: 'یادداشت‌های انتشار نمی‌توانند از {{limit}} کاراکتر تجاوز کنند', - }, - action: { - updateSuccess: 'نسخه به‌روزرسانی شد', - deleteSuccess: 'نسخه حذف شد', - restoreSuccess: 'نسخه بازگردانی شده', - deleteFailure: 'حذف نسخه موفق نبود', - restoreFailure: 'بازگرداندن نسخه ناموفق بود', - updateFailure: 'به‌روزرسانی نسخه ناموفق بود', - copyIdSuccess: 'شناسه در کلیپ بورد کپی شده است', - }, - latest: 'آخرین', - editVersionInfo: 'ویرایش اطلاعات نسخه', - nameThisVersion: 'این نسخه را نامگذاری کنید', - currentDraft: 'پیش نویس فعلی', - defaultName: 'نسخه بدون عنوان', - title: 'نسخه‌ها', - releaseNotesPlaceholder: 'شرح دهید چه چیزی تغییر کرده است', - restorationTip: 'پس از بازیابی نسخه، پیش‌نویس فعلی بازنویسی خواهد شد.', - deletionTip: 'حذف غیرقابل برگشت است، لطفا تأیید کنید.', - copyId: 'شناسه کپی', - }, - debug: { - noData: { - runThisNode: 'این نود را اجرا کن', - description: 'نتایج آخرین اجرا در اینجا نمایش داده خواهد شد', - }, - variableInspect: { - trigger: { - clear: 'شفاف', - stop: 'متوقف کن، برو', - running: 'وضعیت اجرای کشینگ', - normal: 'بازبینی متغیر', - cached: 'مشاهده متغیرهای کش شده', - }, - chatNode: 'گفتگو', - edited: 'ویرایش شده', - systemNode: 'سیستم', - title: 'بازبینی متغیر', - clearAll: 'همه را بازنشانی کن', - emptyLink: 'بیشتر یاد بگیرید', - reset: 'تنظیم به آخرین مقدار اجرا شده', - view: 'مشاهده لاگ', - envNode: 'محیط زیست', - clearNode: 'کش متغیر کش شده را پاک کنید', - emptyTip: 'پس از عبور از یک گره روی بوم یا اجرای گره به صورت مرحله‌ای، می‌توانید مقدار فعلی متغیر گره را در بازرسی متغیر مشاهده کنید.', - resetConversationVar: 'متغیر گفتگو را به مقدار پیش‌فرض بازنشانی کنید', - export: 'صادرات', - exportToolTip: 'اکسپورت متغیر به عنوان فایل', - largeData: 'داده های بزرگ، پیش نمایش فقط خواندنی صادرات برای مشاهده همه.', - largeDataNoExport: 'داده های بزرگ - فقط پیش نمایش جزئی', - listening: { - title: 'در انتظار رویدادها از تریگرها...', - tip: 'اکنون می‌توانید با ارسال درخواست‌های آزمایشی به نقطه پایانی HTTP {{nodeName}} رویدادها را شبیه‌سازی کنید یا از آن به عنوان URL بازخوانی برای دیباگ رویدادهای زنده استفاده کنید. تمام خروجی‌ها را می‌توان به طور مستقیم در بازرس متغیر مشاهده کرد.', - tipPlugin: 'حال می‌توانید در {{- pluginName}} رویداد ایجاد کنید و خروجی‌های این رویدادها را در بازرس متغیرها بازیابی کنید.', - tipSchedule: 'گوش دادن به رویدادها از طریق محرک‌های زمان‌بندی شده.\nزمان اجرای بعدی برنامه‌ریزی شده: {{nextTriggerTime}}', - tipFallback: 'در انتظار رویدادهای فعال‌سازی ورودی باشید. خروجی‌ها در اینجا نمایش داده خواهند شد.', - defaultNodeName: 'این محرک', - defaultPluginName: 'این افزونه فعال می‌شود', - defaultScheduleTime: 'پیکربندی نشده', - selectedTriggers: 'تریگرهای انتخاب‌شده', - stopButton: 'توقف', - }, - }, - settingsTab: 'تنظیمات', - lastRunTab: 'آخرین اجرا', - relations: { - dependents: 'وابسته', - dependencies: 'وابسته', - noDependents: 'بدون وابستگان', - noDependencies: 'بدون وابستگی', - dependenciesDescription: 'گره هایی که این گره به آنها متکی است', - dependentsDescription: 'گره هایی که به این گره متکی هستند', - }, - relationsTab: 'روابط', - copyLastRun: 'کپی آخرین اجرا', - noLastRunFound: 'هیچ اجرای قبلی یافت نشد', - noMatchingInputsFound: 'هیچ ورودی مطابقی از آخرین اجرا یافت نشد', - copyLastRunError: 'نتوانستم ورودی‌های آخرین اجرای را کپی کنم', - lastOutput: 'آخرین خروجی', - lastRunInputsCopied: '{{count}} ورودی(ها) از اجرای قبلی کپی شد', - }, - sidebar: { - exportWarning: 'صادرات نسخه ذخیره شده فعلی', - exportWarningDesc: 'این نسخه فعلی ذخیره شده از کار خود را صادر خواهد کرد. اگر تغییرات غیرذخیره شده‌ای در ویرایشگر دارید، لطفاً ابتدا از گزینه صادرات در بوم کار برای ذخیره آنها استفاده کنید.', - }, - publishLimit: { - startNodeTitlePrefix: 'ارتقا به', - startNodeTitleSuffix: 'فعال‌سازی تعداد نامحدود تریگر در هر جریان کاری', - startNodeDesc: 'شما به حد مجاز ۲ ماشه در هر گردش کار برای این طرح رسیده‌اید. برای انتشار این گردش کار ارتقا دهید.', - }, - error: { - startNodeRequired: 'لطفاً ابتدا یک گره شروع اضافه کنید قبل از {{operation}}', - operations: { - connectingNodes: 'اتصال گره‌ها', - addingNodes: 'افزودن گره‌ها', - modifyingWorkflow: 'تغییر جریان کاری', - updatingWorkflow: 'به‌روزرسانی جریان کاری', - }, - }, - customWebhook: 'وبهوک سفارشی', - difyTeam: 'تیم دیفی', - triggerStatus: { - enabled: 'محرک', - disabled: 'فعال‌سازی • غیرفعال', - }, - entryNodeStatus: { - enabled: 'شروع', - disabled: 'شروع • غیر فعال', - }, - onboarding: { - title: 'یک گره شروع را برای آغاز انتخاب کنید', - description: 'گره‌های شروع مختلف، قابلیت‌های متفاوتی دارند. نگران نباشید، همیشه می‌توانید بعداً آن‌ها را تغییر دهید.', - userInputFull: 'ورودی کاربر (گره شروع اصلی)', - userInputDescription: 'گره شروع که امکان تنظیم متغیرهای ورودی کاربر را دارد، با برنامه وب، API سرویس، سرور MCP و جریان کاری به عنوان قابلیت‌های ابزار.', - trigger: 'محرک', - triggerDescription: 'تریگرها می‌توانند به عنوان گره شروع یک گردش کار عمل کنند، مانند کارهای زمان‌بندی‌شده، وبهوک‌های سفارشی، یا یکپارچه‌سازی با برنامه‌های دیگر.', - back: 'بازگشت', - learnMore: 'بیشتر بدانید', - aboutStartNode: 'درباره گره شروع.', - escTip: { - press: 'چاپ', - key: 'فرار', - toDismiss: 'اخراج کردن', - }, - }, -} - -export default translation diff --git a/web/i18n/fr-FR/app-annotation.json b/web/i18n/fr-FR/app-annotation.json new file mode 100644 index 0000000000..1b4f2f9da7 --- /dev/null +++ b/web/i18n/fr-FR/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "Annotations", + "name": "Réponse à l'Annotation", + "editBy": "Réponse éditée par {{author}}", + "noData": { + "title": "Aucune annotation", + "description": "Vous pouvez modifier les annotations en déboguant l'application, ou importer des annotations en masse ici pour une réponse de haute qualité." + }, + "table": { + "header": { + "question": "question", + "answer": "réponse", + "createdAt": "créé à", + "hits": "clics", + "actions": "actions", + "addAnnotation": "Ajouter une Annotation", + "bulkImport": "Importation en Vrac", + "bulkExport": "Exportation en Vrac", + "clearAll": "Effacer toutes les annotations", + "clearAllConfirm": "Supprimer toutes les annotations ?" + } + }, + "editModal": { + "title": "Modifier la réponse à l'annotation", + "queryName": "Requête de l'utilisateur", + "answerName": "Bot conteur", + "yourAnswer": "Votre réponse", + "answerPlaceholder": "Tapez votre réponse ici", + "yourQuery": "Votre requête", + "queryPlaceholder": "Tapez votre requête ici", + "removeThisCache": "Supprimez cette Annotation", + "createdAt": "Créé à" + }, + "addModal": { + "title": "Ajouter une réponse d'annotation", + "queryName": "Question", + "answerName": "Réponse", + "answerPlaceholder": "Tapez la réponse ici", + "queryPlaceholder": "Tapez la requête ici", + "createNext": "Ajoutez une autre réponse annotée" + }, + "batchModal": { + "title": "Importation en masse", + "csvUploadTitle": "Glissez et déposez votre fichier CSV ici, ou", + "browse": "parcourir", + "tip": "Le fichier CSV doit se conformer à la structure suivante :", + "question": "question", + "answer": "réponse", + "contentTitle": "contenu du bloc", + "content": "contenu", + "template": "Téléchargez le modèle ici", + "cancel": "Annuler", + "run": "Exécuter le lot", + "runError": "L'exécution du lot a échoué", + "processing": "Dans le traitement par lots", + "completed": "Importation terminée", + "error": "Erreur d'Importation", + "ok": "D'accord" + }, + "errorMessage": { + "answerRequired": "Une réponse est requise", + "queryRequired": "La question est requise" + }, + "viewModal": { + "annotatedResponse": "Réponse à l'annotation", + "hitHistory": "Historique des coups", + "hit": "Clic", + "hits": "Clics", + "noHitHistory": "Aucun historique de recherche" + }, + "hitHistoryTable": { + "query": "Requête", + "match": "Correspondance", + "response": "Réponse", + "source": "Source", + "score": "Score", + "time": "Temps" + }, + "initSetup": { + "title": "Réponse d'Annotation Configuration Initiale", + "configTitle": "Configuration de la Réponse d'Annotation", + "confirmBtn": "Enregistrer & Activer", + "configConfirmBtn": "Enregistrer" + }, + "embeddingModelSwitchTip": "Modèle de vectorisation de texte d'annotation, changer de modèles entraînera une ré-intégration, ce qui entraînera des coûts supplémentaires.", + "list": { + "delete": { + "title": "Êtes-vous sûr de vouloir supprimer ?" + } + }, + "batchAction": { + "cancel": "Annuler", + "delete": "Supprimer", + "selected": "sélectionné" + } +} diff --git a/web/i18n/fr-FR/app-annotation.ts b/web/i18n/fr-FR/app-annotation.ts deleted file mode 100644 index 648a1b93cc..0000000000 --- a/web/i18n/fr-FR/app-annotation.ts +++ /dev/null @@ -1,98 +0,0 @@ -const translation = { - title: 'Annotations', - name: 'Réponse à l\'Annotation', - editBy: 'Réponse éditée par {{author}}', - noData: { - title: 'Aucune annotation', - description: 'Vous pouvez modifier les annotations en déboguant l\'application, ou importer des annotations en masse ici pour une réponse de haute qualité.', - }, - table: { - header: { - question: 'question', - answer: 'réponse', - createdAt: 'créé à', - hits: 'clics', - actions: 'actions', - addAnnotation: 'Ajouter une Annotation', - bulkImport: 'Importation en Vrac', - bulkExport: 'Exportation en Vrac', - clearAll: 'Effacer toutes les annotations', - clearAllConfirm: 'Supprimer toutes les annotations ?', - }, - }, - editModal: { - title: 'Modifier la réponse à l\'annotation', - queryName: 'Requête de l\'utilisateur', - answerName: 'Bot conteur', - yourAnswer: 'Votre réponse', - answerPlaceholder: 'Tapez votre réponse ici', - yourQuery: 'Votre requête', - queryPlaceholder: 'Tapez votre requête ici', - removeThisCache: 'Supprimez cette Annotation', - createdAt: 'Créé à', - }, - addModal: { - title: 'Ajouter une réponse d\'annotation', - queryName: 'Question', - answerName: 'Réponse', - answerPlaceholder: 'Tapez la réponse ici', - queryPlaceholder: 'Tapez la requête ici', - createNext: 'Ajoutez une autre réponse annotée', - }, - batchModal: { - title: 'Importation en masse', - csvUploadTitle: 'Glissez et déposez votre fichier CSV ici, ou', - browse: 'parcourir', - tip: 'Le fichier CSV doit se conformer à la structure suivante :', - question: 'question', - answer: 'réponse', - contentTitle: 'contenu du bloc', - content: 'contenu', - template: 'Téléchargez le modèle ici', - cancel: 'Annuler', - run: 'Exécuter le lot', - runError: 'L\'exécution du lot a échoué', - processing: 'Dans le traitement par lots', - completed: 'Importation terminée', - error: 'Erreur d\'Importation', - ok: 'D\'accord', - }, - errorMessage: { - answerRequired: 'Une réponse est requise', - queryRequired: 'La question est requise', - }, - viewModal: { - annotatedResponse: 'Réponse à l\'annotation', - hitHistory: 'Historique des coups', - hit: 'Clic', - hits: 'Clics', - noHitHistory: 'Aucun historique de recherche', - }, - hitHistoryTable: { - query: 'Requête', - match: 'Correspondance', - response: 'Réponse', - source: 'Source', - score: 'Score', - time: 'Temps', - }, - initSetup: { - title: 'Réponse d\'Annotation Configuration Initiale', - configTitle: 'Configuration de la Réponse d\'Annotation', - confirmBtn: 'Enregistrer & Activer', - configConfirmBtn: 'Enregistrer', - }, - embeddingModelSwitchTip: 'Modèle de vectorisation de texte d\'annotation, changer de modèles entraînera une ré-intégration, ce qui entraînera des coûts supplémentaires.', - list: { - delete: { - title: 'Êtes-vous sûr de vouloir supprimer ?', - }, - }, - batchAction: { - cancel: 'Annuler', - delete: 'Supprimer', - selected: 'sélectionné', - }, -} - -export default translation diff --git a/web/i18n/fr-FR/app-api.json b/web/i18n/fr-FR/app-api.json new file mode 100644 index 0000000000..bccff906e5 --- /dev/null +++ b/web/i18n/fr-FR/app-api.json @@ -0,0 +1,83 @@ +{ + "apiServer": "Serveur API", + "apiKey": "Clé API", + "status": "Statut", + "disabled": "Désactivé", + "ok": "En Service", + "copy": "Copier", + "copied": "Copié", + "play": "Jouer", + "pause": "Pause", + "playing": "Jouant", + "merMaid": { + "rerender": "Refaire Rerendu" + }, + "never": "Jamais", + "apiKeyModal": { + "apiSecretKey": "Clé secrète de l'API", + "apiSecretKeyTips": "Pour prévenir l'abus de l'API, protégez votre clé API. Évitez de l'utiliser comme du texte brut dans le code front-end. :)", + "createNewSecretKey": "Créer une nouvelle clé secrète", + "secretKey": "Clé Secrète", + "created": "CRÉÉ", + "lastUsed": "DERNIÈRE UTILISATION", + "generateTips": "Gardez cette clé dans un endroit sûr et accessible." + }, + "actionMsg": { + "deleteConfirmTitle": "Supprimer cette clé secrète ?", + "deleteConfirmTips": "Cette action ne peut pas être annulée.", + "ok": "D'accord" + }, + "completionMode": { + "title": "API de l'application Completion", + "info": "Pour une génération de texte de haute qualité, telle que des articles, des résumés et des traductions, utilisez l'API completion-messages avec l'entrée de l'utilisateur. La génération de texte repose sur les paramètres du modèle et les modèles de prompt définis dans", + "createCompletionApi": "Créer un Message de Fin", + "createCompletionApiTip": "Créez un message de fin pour soutenir le mode question-réponse.", + "inputsTips": "(Facultatif) Fournissez des champs de saisie utilisateur sous forme de paires clé-valeur, correspondant aux variables dans Prompt Eng. La clé est le nom de la variable, la valeur est la valeur du paramètre. Si le type de champ est Sélection, la valeur sou", + "queryTips": "Contenu du texte saisi par l'utilisateur.", + "blocking": "Type de blocage, en attente de l'exécution pour terminer et renvoyer les résultats. (Les demandes peuvent être interrompues si le processus est long)", + "streaming": "retours en continu. Mise en œuvre de retours en continu basée sur SSE (Server-Sent Events).", + "messageFeedbackApi": "Retour de message (j'aime)", + "messageFeedbackApiTip": "Évaluez les messages reçus au nom des utilisateurs finaux avec des likes ou des dislikes. Ces données sont visibles sur la page Logs & Annotations et sont utilisées pour le réglage fin des modèles futurs.", + "messageIDTip": "ID de message", + "ratingTip": "aimer ou ne pas aimer, null est annuler", + "parametersApi": "Obtenir des informations sur les paramètres de l'application", + "parametersApiTip": "Récupérer les paramètres d'entrée configurés, y compris les noms de variables, les noms de champs, les types et les valeurs par défaut. Généralement utilisé pour afficher ces champs dans un formulaire ou pour remplir les valeurs par défaut après le charg" + }, + "chatMode": { + "title": "API de l'application de chat", + "info": "Pour des applications conversationnelles polyvalentes utilisant un format Q&R, appelez l'API de chat-messages pour initier le dialogue. Maintenez les conversations en cours en passant l'ID de conversation retourné. Les paramètres de réponse et les modèles dépendent des paramètres de", + "createChatApi": "Créer un message de chat", + "createChatApiTip": "Créez un nouveau message de conversation ou continuez un dialogue existant.", + "inputsTips": "(Facultatif) Fournir des champs de saisie utilisateur sous forme de paires clé-valeur, correspondant aux variables dans Prompt Eng. La clé est le nom de la variable, la valeur est la valeur du paramètre. Si le type de champ est Sélection, la valeur soumise", + "queryTips": "Contenu de la question/saisie de l'utilisateur", + "blocking": "Type de blocage, en attente de l'exécution pour terminer et renvoyer les résultats. (Les demandes peuvent être interrompues si le processus est long)", + "streaming": "retours en continu. Mise en œuvre de retours en continu basée sur SSE (Server-Sent Events).", + "conversationIdTip": "(Optional) Conversation ID: leave empty for first-time conversation; pass conversation_id from context to continue dialogue.", + "messageFeedbackApi": "Message de retour d'information de l'utilisateur du terminal, comme", + "messageFeedbackApiTip": "Évaluez les messages reçus au nom des utilisateurs finaux avec des likes ou des dislikes. Ces données sont visibles sur la page Logs & Annotations et sont utilisées pour l'ajustement futur du modèle.", + "messageIDTip": "ID de message", + "ratingTip": "aimer ou ne pas aimer, null est annuler", + "chatMsgHistoryApi": "Obtenez le message de l'historique de chat", + "chatMsgHistoryApiTip": "La première page renvoie la dernière `limit` bar, qui est en ordre inverse.", + "chatMsgHistoryConversationIdTip": "ID de conversation", + "chatMsgHistoryFirstId": "ID du premier enregistrement de chat sur la page actuelle. La valeur par défaut est aucune.", + "chatMsgHistoryLimit": "Combien de chats sont renvoyés en une seule demande", + "conversationsListApi": "Obtenir la liste des conversations", + "conversationsListApiTip": "Obtient la liste des sessions de l'utilisateur actuel. Par défaut, les 20 dernières sessions sont renvoyées.", + "conversationsListFirstIdTip": "L'ID du dernier enregistrement sur la page actuelle, par défaut aucun.", + "conversationsListLimitTip": "Combien de chats sont renvoyés dans une seule requête", + "conversationRenamingApi": "Renommage de la conversation", + "conversationRenamingApiTip": "Renommez les conversations ; le nom est affiché dans les interfaces client multi-session.", + "conversationRenamingNameTip": "Nouveau nom", + "parametersApi": "Obtenir des informations sur les paramètres de l'application", + "parametersApiTip": "Récupérer les paramètres d'entrée configurés, y compris les noms de variables, les noms de champs, les types et les valeurs par défaut. Typiquement utilisé pour afficher ces champs dans un formulaire ou pour remplir les valeurs par défaut après le chargement du" + }, + "develop": { + "requestBody": "Corps de la Requête", + "pathParams": "Params de chemin", + "query": "Requête", + "toc": "Contenu" + }, + "loading": "Chargement", + "regenerate": "Régénérer" +} diff --git a/web/i18n/fr-FR/app-api.ts b/web/i18n/fr-FR/app-api.ts deleted file mode 100644 index eb2f35d060..0000000000 --- a/web/i18n/fr-FR/app-api.ts +++ /dev/null @@ -1,85 +0,0 @@ -const translation = { - apiServer: 'Serveur API', - apiKey: 'Clé API', - status: 'Statut', - disabled: 'Désactivé', - ok: 'En Service', - copy: 'Copier', - copied: 'Copié', - play: 'Jouer', - pause: 'Pause', - playing: 'Jouant', - merMaid: { - rerender: 'Refaire Rerendu', - }, - never: 'Jamais', - apiKeyModal: { - apiSecretKey: 'Clé secrète de l\'API', - apiSecretKeyTips: 'Pour prévenir l\'abus de l\'API, protégez votre clé API. Évitez de l\'utiliser comme du texte brut dans le code front-end. :)', - createNewSecretKey: 'Créer une nouvelle clé secrète', - secretKey: 'Clé Secrète', - created: 'CRÉÉ', - lastUsed: 'DERNIÈRE UTILISATION', - generateTips: 'Gardez cette clé dans un endroit sûr et accessible.', - }, - actionMsg: { - deleteConfirmTitle: 'Supprimer cette clé secrète ?', - deleteConfirmTips: 'Cette action ne peut pas être annulée.', - ok: 'D\'accord', - }, - completionMode: { - title: 'API de l\'application Completion', - info: 'Pour une génération de texte de haute qualité, telle que des articles, des résumés et des traductions, utilisez l\'API completion-messages avec l\'entrée de l\'utilisateur. La génération de texte repose sur les paramètres du modèle et les modèles de prompt définis dans', - createCompletionApi: 'Créer un Message de Fin', - createCompletionApiTip: 'Créez un message de fin pour soutenir le mode question-réponse.', - inputsTips: '(Facultatif) Fournissez des champs de saisie utilisateur sous forme de paires clé-valeur, correspondant aux variables dans Prompt Eng. La clé est le nom de la variable, la valeur est la valeur du paramètre. Si le type de champ est Sélection, la valeur sou', - queryTips: 'Contenu du texte saisi par l\'utilisateur.', - blocking: 'Type de blocage, en attente de l\'exécution pour terminer et renvoyer les résultats. (Les demandes peuvent être interrompues si le processus est long)', - streaming: 'retours en continu. Mise en œuvre de retours en continu basée sur SSE (Server-Sent Events).', - messageFeedbackApi: 'Retour de message (j\'aime)', - messageFeedbackApiTip: 'Évaluez les messages reçus au nom des utilisateurs finaux avec des likes ou des dislikes. Ces données sont visibles sur la page Logs & Annotations et sont utilisées pour le réglage fin des modèles futurs.', - messageIDTip: 'ID de message', - ratingTip: 'aimer ou ne pas aimer, null est annuler', - parametersApi: 'Obtenir des informations sur les paramètres de l\'application', - parametersApiTip: 'Récupérer les paramètres d\'entrée configurés, y compris les noms de variables, les noms de champs, les types et les valeurs par défaut. Généralement utilisé pour afficher ces champs dans un formulaire ou pour remplir les valeurs par défaut après le charg', - }, - chatMode: { - title: 'API de l\'application de chat', - info: 'Pour des applications conversationnelles polyvalentes utilisant un format Q&R, appelez l\'API de chat-messages pour initier le dialogue. Maintenez les conversations en cours en passant l\'ID de conversation retourné. Les paramètres de réponse et les modèles dépendent des paramètres de', - createChatApi: 'Créer un message de chat', - createChatApiTip: 'Créez un nouveau message de conversation ou continuez un dialogue existant.', - inputsTips: '(Facultatif) Fournir des champs de saisie utilisateur sous forme de paires clé-valeur, correspondant aux variables dans Prompt Eng. La clé est le nom de la variable, la valeur est la valeur du paramètre. Si le type de champ est Sélection, la valeur soumise', - queryTips: 'Contenu de la question/saisie de l\'utilisateur', - blocking: 'Type de blocage, en attente de l\'exécution pour terminer et renvoyer les résultats. (Les demandes peuvent être interrompues si le processus est long)', - streaming: 'retours en continu. Mise en œuvre de retours en continu basée sur SSE (Server-Sent Events).', - conversationIdTip: '(Optional) Conversation ID: leave empty for first-time conversation; pass conversation_id from context to continue dialogue.', - messageFeedbackApi: 'Message de retour d\'information de l\'utilisateur du terminal, comme', - messageFeedbackApiTip: 'Évaluez les messages reçus au nom des utilisateurs finaux avec des likes ou des dislikes. Ces données sont visibles sur la page Logs & Annotations et sont utilisées pour l\'ajustement futur du modèle.', - messageIDTip: 'ID de message', - ratingTip: 'aimer ou ne pas aimer, null est annuler', - chatMsgHistoryApi: 'Obtenez le message de l\'historique de chat', - chatMsgHistoryApiTip: 'La première page renvoie la dernière `limit` bar, qui est en ordre inverse.', - chatMsgHistoryConversationIdTip: 'ID de conversation', - chatMsgHistoryFirstId: 'ID du premier enregistrement de chat sur la page actuelle. La valeur par défaut est aucune.', - chatMsgHistoryLimit: 'Combien de chats sont renvoyés en une seule demande', - conversationsListApi: 'Obtenir la liste des conversations', - conversationsListApiTip: 'Obtient la liste des sessions de l\'utilisateur actuel. Par défaut, les 20 dernières sessions sont renvoyées.', - conversationsListFirstIdTip: 'L\'ID du dernier enregistrement sur la page actuelle, par défaut aucun.', - conversationsListLimitTip: 'Combien de chats sont renvoyés dans une seule requête', - conversationRenamingApi: 'Renommage de la conversation', - conversationRenamingApiTip: 'Renommez les conversations ; le nom est affiché dans les interfaces client multi-session.', - conversationRenamingNameTip: 'Nouveau nom', - parametersApi: 'Obtenir des informations sur les paramètres de l\'application', - parametersApiTip: 'Récupérer les paramètres d\'entrée configurés, y compris les noms de variables, les noms de champs, les types et les valeurs par défaut. Typiquement utilisé pour afficher ces champs dans un formulaire ou pour remplir les valeurs par défaut après le chargement du', - }, - develop: { - requestBody: 'Corps de la Requête', - pathParams: 'Params de chemin', - query: 'Requête', - toc: 'Contenu', - }, - loading: 'Chargement', - regenerate: 'Régénérer', -} - -export default translation diff --git a/web/i18n/fr-FR/app-debug.json b/web/i18n/fr-FR/app-debug.json new file mode 100644 index 0000000000..0085cc73c8 --- /dev/null +++ b/web/i18n/fr-FR/app-debug.json @@ -0,0 +1,562 @@ +{ + "pageTitle": { + "line1": "INVITATION", + "line2": "Ingénierie" + }, + "orchestrate": "Orchestrer", + "promptMode": { + "simple": "Passez en Mode Expert pour modifier l'intégralité du PROMPT", + "advanced": "Mode Expert", + "switchBack": "Revenir en arrière", + "advancedWarning": { + "title": "Vous êtes passé en Mode Expert, et une fois que vous modifiez le PROMPT, vous NE POUVEZ PAS revenir au mode basique.", + "description": "En mode Expert, vous pouvez modifier l'intégralité du PROMPT.", + "learnMore": "En savoir plus", + "ok": "D'accord" + }, + "operation": { + "addMessage": "Ajouter un message" + }, + "contextMissing": "Le composant de contexte est manquant, l'efficacité de la suggestion peut ne pas être bonne." + }, + "operation": { + "applyConfig": "Publier", + "resetConfig": "Réinitialiser", + "debugConfig": "Déboguer", + "addFeature": "Ajouter une fonctionnalité", + "automatic": "Générer", + "stopResponding": "Arrêtez de répondre", + "agree": "comme", + "disagree": "déteste", + "cancelAgree": "Annuler comme", + "cancelDisagree": "Annuler le dislike", + "userAction": "Utilisateur" + }, + "notSetAPIKey": { + "title": "La clé du fournisseur LLM n'a pas été définie", + "trailFinished": "Parcours terminé", + "description": "La clé du fournisseur LLM n'a pas été définie, et elle doit être définie avant le débogage.", + "settingBtn": "Aller aux paramètres" + }, + "trailUseGPT4Info": { + "title": "Ne prend pas en charge gpt-4 pour le moment", + "description": "Utilisez gpt-4, veuillez définir la clé API." + }, + "feature": { + "groupChat": { + "title": "Amélioration de chat", + "description": "Ajouter des paramètres de pré-conversation pour les applications peut améliorer l'expérience utilisateur." + }, + "groupExperience": { + "title": "Amélioration de l'expérience" + }, + "conversationOpener": { + "title": "Convertisseurs de conversation", + "description": "Dans une application de chat, la première phrase que l'IA prononce activement à l'utilisateur est généralement utilisée comme message de bienvenue." + }, + "suggestedQuestionsAfterAnswer": { + "title": "Suivi", + "description": "La configuration de la suggestion des prochaines questions peut offrir aux utilisateurs une meilleure discussion.", + "resDes": "3 suggestions pour la prochaine question de l'utilisateur.", + "tryToAsk": "Essayez de demander" + }, + "moreLikeThis": { + "title": "Plus comme ça", + "description": "Générez plusieurs textes à la fois, puis modifiez et continuez à générer", + "generateNumTip": "Nombre de chaque temps généré", + "tip": "L'utilisation de cette fonctionnalité entraînera un surcoût de tokens supplémentaires" + }, + "speechToText": { + "title": "Discours en Texte", + "description": "Une fois activé, vous pouvez utiliser l'entrée vocale.", + "resDes": "La saisie vocale est activée" + }, + "textToSpeech": { + "title": "Texte à la parole", + "description": "Une fois activé, le texte peut être converti en parole.", + "resDes": "La Texte à Audio est activée" + }, + "citation": { + "title": "Citations et Attributions", + "description": "Une fois activé, affichez le document source et la section attribuée du contenu généré.", + "resDes": "Les citations et attributions sont activées" + }, + "annotation": { + "title": "Réponse d'Annotation", + "description": "Vous pouvez manuellement ajouter une réponse de haute qualité au cache pour une correspondance prioritaire avec des questions d'utilisateur similaires.", + "resDes": "La réponse d'annotation est activée", + "scoreThreshold": { + "title": "Seuil de Score", + "description": "Utilisé pour définir le seuil de similarité pour la réponse d'annotation.", + "easyMatch": "Correspondance Facile", + "accurateMatch": "Correspondance précise" + }, + "matchVariable": { + "title": "Correspondance de Variable", + "choosePlaceholder": "Choisissez la variable correspondante" + }, + "cacheManagement": "Annotations", + "cached": "Annoté", + "remove": "Supprimer", + "removeConfirm": "Supprimer cette annotation ?", + "add": "Ajouter une annotation", + "edit": "Modifier l'annotation" + }, + "dataSet": { + "title": "Contexte", + "noData": "Vous pouvez importer des Connaissances comme contexte", + "selectTitle": "Sélectionnez la connaissance de référence", + "selected": "Connaissance sélectionnée", + "noDataSet": "Aucune connaissance trouvée", + "toCreate": "Aller à créer", + "notSupportSelectMulti": "Actuellement, ne prend en charge qu'une seule Connaissance", + "queryVariable": { + "title": "Variable de requête", + "tip": "Cette variable sera utilisée comme entrée de requête pour la récupération du contexte, obtenant des informations contextuelles liées à l'entrée de cette variable.", + "choosePlaceholder": "Choisissez la variable de requête", + "noVar": "Aucune variable", + "noVarTip": "veuillez créer une variable sous la section Variables", + "unableToQueryDataSet": "Impossible de questionner la Connaissance", + "unableToQueryDataSetTip": "Impossible d'interroger la Connaissance avec succès, veuillez choisir une variable de requête de contexte dans la section contexte.", + "ok": "D'accord", + "contextVarNotEmpty": "la variable de requête de contexte ne peut pas être vide", + "deleteContextVarTitle": "Supprimer la variable \"{{varName}}\" ?", + "deleteContextVarTip": "Cette variable a été définie comme une variable de requête de contexte, et sa suppression affectera l'utilisation normale de la Connaissance. Si vous devez toujours la supprimer, veuillez la re-sélectionner dans la section contexte." + } + }, + "tools": { + "title": "Outils", + "tips": "Les outils fournissent une méthode d'appel API standard, prenant en compte les entrées de l'utilisateur ou des variables comme paramètres de requête pour interroger des données externes en tant que contexte.", + "toolsInUse": "{{count}} outils en usage", + "modal": { + "title": "Outil", + "toolType": { + "title": "Type d'outil", + "placeholder": "Veuillez sélectionner le type d'outil" + }, + "name": { + "title": "Nom", + "placeholder": "Veuillez entrer le nom" + }, + "variableName": { + "title": "Nom de la Variable", + "placeholder": "Veuillez entrer le nom de la variable" + } + } + }, + "conversationHistory": { + "title": "Historique de Conversation", + "description": "Définir les noms de préfixe pour les rôles de conversation", + "tip": "L'historique de conversation n'est pas activé, veuillez ajouter dans le prompt ci-dessus.", + "learnMore": "En savoir plus", + "editModal": { + "title": "Modifier les noms de rôles de conversation", + "userPrefix": "Préfixe utilisateur", + "assistantPrefix": "Préfixe de l'assistant" + } + }, + "toolbox": { + "title": "BOÎTE À OUTILS" + }, + "moderation": { + "title": "Modération de contenu", + "description": "Sécurisez la sortie du modèle en utilisant l'API de modération ou en conservant une liste de mots sensibles.", + "allEnabled": "Contenu Entrant/Sortant Activé", + "inputEnabled": "Contenu Activé", + "outputEnabled": "Contenu de SORTIE activé", + "modal": { + "title": "Paramètres de modération de contenu", + "provider": { + "title": "Fournisseur", + "openai": "Modération OpenAI", + "openaiTip": { + "prefix": "La modération d'OpenAI nécessite une clé API OpenAI configurée dans le", + "suffix": "." + }, + "keywords": "Mots-clés" + }, + "keywords": { + "tip": "Un par ligne, séparés par des sauts de ligne. Jusqu'à 100 caractères par ligne.", + "placeholder": "Un par ligne, séparé par des sauts de ligne", + "line": "Ligne" + }, + "content": { + "input": "Modérer le contenu INPUT", + "output": "Modérer le contenu de SORTIE", + "preset": "Réponses préétablies", + "placeholder": "Contenu des réponses prédéfinies ici", + "condition": "Contenu MODÉRÉ pour INPUT et OUTPUT activé au moins une fois", + "fromApi": "Les réponses prédéfinies sont renvoyées par l'API", + "errorMessage": "Les réponses prédéfinies ne peuvent pas être vides", + "supportMarkdown": "Prise en charge de Markdown" + }, + "openaiNotConfig": { + "before": "La modération d'OpenAI nécessite une clé API OpenAI configurée dans le", + "after": "Sorry, but you didn't provide a text to translate. Could you please provide the text?" + } + }, + "contentEnableLabel": "Modération de contenu activée" + }, + "fileUpload": { + "title": "Téléchargement de fichier", + "description": "La boîte de saisie de chat permet de télécharger des images, des documents et d'autres fichiers.", + "supportedTypes": "Types de fichiers supportés", + "numberLimit": "Nombre max de téléchargements", + "modalTitle": "Paramètres de téléchargement de fichier" + }, + "imageUpload": { + "title": "Téléchargement d'image", + "description": "Permet de télécharger des images.", + "supportedTypes": "Types de fichiers supportés", + "numberLimit": "Nombre max de téléchargements", + "modalTitle": "Paramètres de téléchargement d'image" + }, + "bar": { + "empty": "Activer la fonctionnalité pour améliorer l'expérience utilisateur de l'application web", + "enableText": "Fonctionnalités activées", + "manage": "Gérer" + }, + "documentUpload": { + "title": "Document", + "description": "Activer Document permettra au modèle de prendre des documents et de répondre aux questions à leur sujet." + }, + "audioUpload": { + "title": "Audio", + "description": "Activer Audio permettra au modèle de traiter les fichiers audio pour la transcription et l'analyse." + } + }, + "resetConfig": { + "title": "Confirmer la réinitialisation ?", + "message": "Réinitialiser supprime les modifications, en restaurant la dernière configuration publiée." + }, + "errorMessage": { + "nameOfKeyRequired": "name of the key: {{key}} required", + "valueOfVarRequired": "La valeur de {{key}} ne peut pas être vide", + "queryRequired": "Le texte de la requête est requis.", + "waitForResponse": "Veuillez attendre que la réponse au message précédent soit terminée.", + "waitForBatchResponse": "Veuillez attendre que la réponse à la tâche en lot soit terminée.", + "notSelectModel": "Veuillez choisir un modèle", + "waitForImgUpload": "Veuillez attendre que l'image soit téléchargée", + "waitForFileUpload": "Veuillez patienter pendant le téléchargement du/des fichier(s)" + }, + "chatSubTitle": "Instructions", + "completionSubTitle": "Indicatif de Prompt", + "promptTip": "Les prompts guident les réponses de l'IA avec des instructions et des contraintes. Insérez des variables comme {{input}}. Ce prompt ne sera pas visible pour les utilisateurs.", + "formattingChangedTitle": "Formatage modifié", + "formattingChangedText": "La modification du formatage réinitialisera la zone de débogage, êtes-vous sûr ?", + "variableTitle": "Variables", + "variableTip": "Les utilisateurs remplissent des variables dans un formulaire, remplaçant automatiquement les variables dans le prompt.", + "notSetVar": "Les variables permettent aux utilisateurs d'introduire des mots de prompt ou des remarques d'ouverture lors du remplissage des formulaires. Vous pouvez essayer de saisir \"{{input}}\" dans les mots de prompt.", + "autoAddVar": "Des variables indéfinies référencées dans le pre-prompt, voulez-vous les ajouter dans le formulaire d'entrée de l'utilisateur ?", + "variableTable": { + "key": "Clé Variable", + "name": "Nom du champ d'entrée de l'utilisateur", + "type": "Type d'Entrée", + "action": "Actions", + "typeString": "Chaîne", + "typeSelect": "Sélectionner" + }, + "varKeyError": { + "canNoBeEmpty": "{{key}} est obligatoire", + "tooLong": "{{key}} too length. Can not be longer then 30 characters", + "notValid": "{{key}} is invalid. Can only contain letters, numbers, and underscores", + "notStartWithNumber": "{{key}} can not start with a number", + "keyAlreadyExists": "{{key}} already exists" + }, + "otherError": { + "promptNoBeEmpty": "Le prompt ne peut pas être vide", + "historyNoBeEmpty": "L'historique de la conversation doit être défini dans le prompt", + "queryNoBeEmpty": "La requête doit être définie dans le prompt" + }, + "variableConfig": { + "addModalTitle": "Add Input Field", + "editModalTitle": "Edit Input Field", + "description": "Setting for variable {{varName}}", + "fieldType": "Field Type", + "string": "Short Text", + "text-input": "Short Text", + "paragraph": "Paragraph", + "select": "Select", + "number": "Number", + "notSet": "Not set, try typing {{input}} in the prefix prompt", + "stringTitle": "Form text box options", + "maxLength": "Max Length", + "options": "Options", + "addOption": "Add option", + "apiBasedVar": "API-based Variable", + "varName": "Variable Name", + "labelName": "Label Name", + "inputPlaceholder": "Please input", + "required": "Required", + "hide": "Caché", + "errorMsg": { + "labelNameRequired": "Label name is required", + "varNameCanBeRepeat": "Variable name can not be repeated", + "atLeastOneOption": "At least one option is required", + "optionRepeat": "Has repeat options" + }, + "defaultValue": "Valeur par défaut", + "noDefaultValue": "Aucune valeur par défaut", + "selectDefaultValue": "Sélectionner la valeur par défaut", + "file": { + "image": { + "name": "Image" + }, + "audio": { + "name": "Audio" + }, + "document": { + "name": "Document" + }, + "video": { + "name": "Vidéo" + }, + "custom": { + "description": "Spécifiez d’autres types de fichiers.", + "name": "Autres types de fichiers", + "createPlaceholder": " Extension de fichier, par exemple .doc" + }, + "supportFileTypes": "Types de fichiers de support" + }, + "content": "Contenu", + "uploadFileTypes": "Types de fichiers de téléchargement", + "multi-files": "Liste des fichiers", + "both": "Les deux", + "maxNumberOfUploads": "Nombre maximal de téléchargements", + "maxNumberTip": "Document < {{docLimit}}, image < {{imgLimit}}, audio < {{audioLimit}}, vidéo < {{videoLimit}}", + "localUpload": "Téléchargement local", + "single-file": "En file indienne", + "optional": "optionnel", + "checkbox": "Checkbox", + "jsonSchema": "Schéma JSON", + "json": "Code JSON", + "unit": "Unité", + "placeholder": "Espace réservé", + "startChecked": "Démarrer vérifié", + "displayName": "Nom d’affichage", + "startSelectedOption": "Démarrer l’option sélectionnée", + "uploadMethod": "Méthode de téléchargement", + "showAllSettings": "Afficher tous les paramètres", + "defaultValuePlaceholder": "Entrez la valeur par défaut pour pré-remplir le champ", + "placeholderPlaceholder": "Saisissez le texte à afficher lorsque le champ est vide", + "tooltips": "Infobulles", + "tooltipsPlaceholder": "Entrez le texte utile affiché lorsque vous passez la souris sur l’étiquette", + "unitPlaceholder": "Affichage des unités après les nombres, par exemple les jetons", + "noDefaultSelected": "Ne sélectionnez pas" + }, + "vision": { + "name": "Vision", + "description": "Enable Vision permettra au modèle de prendre des images et de répondre à des questions à leur sujet.", + "settings": "Paramètres", + "visionSettings": { + "title": "Paramètres de Vision", + "resolution": "Résolution", + "resolutionTooltip": "low res will allow model receive a low-res 512 x 512 version of the image, and represent the image with a budget of 65 tokens. This allows the API to return faster responses and consume fewer input tokens for use cases that do not require high detail.\nhigh res will first allows the model to see the low res image and then creates detailed crops of input images as 512px squares based on the input image size. Each of the detailed crops uses twice the token budget for a total of 129 tokens.", + "high": "Élevé", + "low": "Faible", + "uploadMethod": "Méthode de Téléchargement", + "both": "Les deux", + "localUpload": "Téléchargement Local", + "url": "URL", + "uploadLimit": "Limite de téléchargement" + }, + "onlySupportVisionModelTip": "Ne prend en charge que les modèles de vision" + }, + "voice": { + "name": "Voix", + "defaultDisplay": "Voix par défaut", + "description": "Paramètres de la voix de synthèse vocale", + "settings": "Paramètres", + "voiceSettings": { + "title": "Paramètres de voix", + "language": "Langue", + "resolutionTooltip": "Support de la langue pour la voix de synthèse de texte.", + "voice": "Voix", + "autoPlay": "Lecture Automatique", + "autoPlayEnabled": "Allumer", + "autoPlayDisabled": "Fermeture" + } + }, + "openingStatement": { + "title": "Ouverture de Conversation", + "add": "Ajouter", + "writeOpener": "Écrire l'introduction", + "placeholder": "Rédigez votre message d'ouverture ici, vous pouvez utiliser des variables, essayez de taper {{variable}}.", + "openingQuestion": "Questions d'ouverture", + "openingQuestionPlaceholder": "Vous pouvez utiliser des variables, essayez de taper {{variable}}.", + "noDataPlaceHolder": "Commencer la conversation avec l'utilisateur peut aider l'IA à établir une connexion plus proche avec eux dans les applications conversationnelles.", + "varTip": "Vous pouvez utiliser des variables, essayez de taper {{variable}}", + "tooShort": "Au moins 20 mots de l'invite initiale sont requis pour générer des remarques d'ouverture pour la conversation.", + "notIncludeKey": "The initial prompt does not include the variable: {{key}}. Please add it to the initial prompt." + }, + "modelConfig": { + "model": "Modèle", + "setTone": "Définir le ton des réponses", + "title": "Modèle et Paramètres", + "modeType": { + "chat": "Discussion", + "completion": "Complet" + } + }, + "inputs": { + "title": "Déboguer et Aperçu", + "noPrompt": "Essayez d'écrire une proposition dans l'entrée pré-proposition", + "userInputField": "Champ de saisie utilisateur", + "noVar": "Remplissez la valeur de la variable, qui sera automatiquement remplacée dans le mot d'invite chaque fois qu'une nouvelle session est démarrée.", + "chatVarTip": "Remplissez la valeur de la variable, qui sera automatiquement remplacée dans le mot d'invite chaque fois qu'une nouvelle session est démarrée", + "completionVarTip": "Remplissez la valeur de la variable, qui sera automatiquement remplacée dans les mots de l'invite chaque fois qu'une question est soumise.", + "previewTitle": "Aperçu de la prompte", + "queryTitle": "Contenu de la requête", + "queryPlaceholder": "Veuillez entrer le texte de la demande.", + "run": "EXÉCUTER" + }, + "result": "Texte de sortie", + "datasetConfig": { + "settingTitle": "Paramètres de récupération", + "knowledgeTip": "Cliquez sur le bouton “+” pour ajouter des connaissances", + "retrieveOneWay": { + "title": "Récupération N-vers-1", + "description": "En fonction de l'intention de l'utilisateur et des descriptions de Connaissance, l'Agent sélectionne de manière autonome la meilleure Connaissance pour interroger. Idéal pour les applications avec une Connaissance distincte et limitée." + }, + "retrieveMultiWay": { + "title": "Récupération multi-chemins", + "description": "En fonction de l'intention de l'utilisateur, interroge toutes les connaissances, récupère le texte pertinent de plusieurs sources et sélectionne les meilleurs résultats correspondant à la requête de l'utilisateur après réordonnancement. La configuration de l'API du modèle de réordonnancement est requise" + }, + "rerankModelRequired": "Un modèle de réorganisation est nécessaire", + "params": "Paramètres", + "top_k": "Top K", + "top_kTip": "Utilisé pour filtrer les morceaux qui sont les plus similaires aux questions de l'utilisateur. Le système ajustera également dynamiquement la valeur de Top K, selon max_tokens du modèle sélectionné.", + "score_threshold": "Seuil de Score", + "score_thresholdTip": "Utilisé pour définir le seuil de similarité pour le filtrage des morceaux.", + "retrieveChangeTip": "La modification du mode d'indexation et du mode de récupération peut affecter les applications associées à cette Connaissance.", + "embeddingModelRequired": "Un modèle d’incorporation configuré est requis" + }, + "debugAsSingleModel": "Déboguer comme Modèle Unique", + "debugAsMultipleModel": "Déboguer en tant que Modèles Multiples", + "duplicateModel": "Dupliquer", + "publishAs": "Publier comme", + "assistantType": { + "name": "Type d'Assistant", + "chatAssistant": { + "name": "Assistant de Base", + "description": "Construisez un assistant basé sur le chat en utilisant un grand modèle de langage" + }, + "agentAssistant": { + "name": "Assistant Agent", + "description": "Construisez un Agent intelligent qui peut choisir de manière autonome des outils pour accomplir les tâches" + } + }, + "agent": { + "agentMode": "Mode Agent", + "agentModeDes": "Définissez le type de mode d'inférence pour l'agent", + "agentModeType": { + "ReACT": "RéAgir", + "functionCall": "Appel de fonction" + }, + "setting": { + "name": "Paramètres de l'Agent", + "description": "Les paramètres de l'Assistant Agent permettent de définir le mode de l'agent et des fonctionnalités avancées comme les prompts intégrés, uniquement disponibles dans le type Agent.", + "maximumIterations": { + "name": "Nombre Maximum d'Itérations", + "description": "Limiter le nombre d'itérations qu'un assistant agent peut exécuter" + } + }, + "buildInPrompt": "Prompt Intégré", + "firstPrompt": "Première Prompte", + "nextIteration": "Prochaine Itération", + "promptPlaceholder": "Écrivez votre prompt ici", + "tools": { + "name": "Outils", + "description": "L'utilisation d'outils peut étendre les capacités des LLM, comme la recherche sur internet ou l'exécution de calculs scientifiques.", + "enabled": "Activé" + } + }, + "codegen": { + "noDataLine1": "Décrivez votre cas d’utilisation sur la gauche,", + "instruction": "Instructions", + "generate": "Générer", + "noDataLine2": "L’aperçu du code s’affichera ici.", + "resTitle": "Code généré", + "applyChanges": "Appliquer les modifications", + "overwriteConfirmTitle": "Écraser le code existant ?", + "description": "Le générateur de code utilise des modèles configurés pour générer un code de haute qualité basé sur vos instructions. Veuillez fournir des instructions claires et détaillées.", + "loading": "Génération de code...", + "overwriteConfirmMessage": "Cette action remplacera le code existant. Voulez-vous continuer ?", + "generatedCodeTitle": "Code généré", + "apply": "Appliquer", + "title": "Générateur de code", + "instructionPlaceholder": "Entrez une description détaillée du code que vous souhaitez générer." + }, + "generate": { + "template": { + "pythonDebugger": { + "name": "Débogueur Python", + "instruction": "Un bot capable de générer et de déboguer votre code en fonction de vos instructions" + }, + "translation": { + "name": "Traduction", + "instruction": "Un traducteur capable de traduire en plusieurs langues" + }, + "professionalAnalyst": { + "instruction": "Extrayez des informations, identifiez les risques et distillez les informations clés des rapports longs dans un seul mémo", + "name": "Analyste professionnel" + }, + "excelFormulaExpert": { + "name": "Expert en formules Excel", + "instruction": "Un chatbot qui peut aider les utilisateurs novices à comprendre, utiliser et créer des formules Excel basées sur les instructions de l’utilisateur" + }, + "travelPlanning": { + "instruction": "L’assistant de planification de voyage est un outil intelligent conçu pour aider les utilisateurs à planifier sans effort leurs voyages", + "name": "Planification de voyage" + }, + "SQLSorcerer": { + "instruction": "Transformez le langage quotidien en requêtes SQL", + "name": "Sorcier SQL" + }, + "GitGud": { + "name": "Git gud", + "instruction": "Générer des commandes Git appropriées en fonction des actions de contrôle de version décrites par l’utilisateur" + }, + "meetingTakeaways": { + "name": "Points à retenir de la réunion", + "instruction": "Distillez les réunions en résumés concis comprenant les sujets de discussion, les points clés à retenir et les actions à prendre" + }, + "writingsPolisher": { + "name": "Polisseuse d’écriture", + "instruction": "Utilisez des techniques de révision avancées pour améliorer vos écrits" + } + }, + "instruction": "Instructions", + "generate": "Générer", + "tryIt": "Essaie", + "overwriteTitle": "Remplacer la configuration existante ?", + "overwriteMessage": "L’application de cette invite remplacera la configuration existante.", + "title": "Générateur d’invites", + "apply": "Appliquer", + "resTitle": "Invite générée", + "loading": "Orchestrer l’application pour vous...", + "description": "Le générateur d’invites utilise le modèle configuré pour optimiser les invites afin d’obtenir une meilleure qualité et une meilleure structure. Veuillez rédiger des instructions claires et détaillées.", + "version": "Version", + "latest": "Dernier", + "versions": "Versions", + "optional": "Facultatif", + "optimizationNote": "Remarque d'optimisation", + "to": "à", + "press": "Presse", + "instructionPlaceHolderLine2": "Le format de sortie est incorrect, veuillez suivre strictement le format JSON.", + "instructionPlaceHolderTitle": "Décrivez comment vous aimeriez améliorer cette invite. Par exemple:", + "optimizePromptTooltip": "Optimiser dans le générateur de prompts", + "instructionPlaceHolderLine1": "Rendez la sortie plus concise, en conservant les points clés.", + "instructionPlaceHolderLine3": "Le ton est trop brusque, veuillez le rendre plus amical.", + "insertContext": "insérer le contexte", + "idealOutputPlaceholder": "Décrivez votre format de réponse idéal, la longueur, le ton et les exigences en matière de contenu...", + "newNoDataLine1": "Écrivez une instruction dans la colonne de gauche, puis cliquez sur Générer pour voir la réponse.", + "dismiss": "Rejeter", + "idealOutput": "Sortie Idéale", + "codeGenInstructionPlaceHolderLine": "Plus le retour d'information est détaillé, comme les types de données d'entrée et de sortie ainsi que la manière dont les variables sont traitées, plus la génération de code sera précise." + }, + "warningMessage": { + "timeoutExceeded": "Les résultats ne s’affichent pas en raison d’un délai d’expiration. Veuillez vous référer aux journaux pour rassembler les résultats complets." + }, + "noResult": "La sortie sera affichée ici." +} diff --git a/web/i18n/fr-FR/app-debug.ts b/web/i18n/fr-FR/app-debug.ts deleted file mode 100644 index 2e65e681ca..0000000000 --- a/web/i18n/fr-FR/app-debug.ts +++ /dev/null @@ -1,573 +0,0 @@ -const translation = { - pageTitle: { - line1: 'INVITATION', - line2: 'Ingénierie', - }, - orchestrate: 'Orchestrer', - promptMode: { - simple: 'Passez en Mode Expert pour modifier l\'intégralité du PROMPT', - advanced: 'Mode Expert', - switchBack: 'Revenir en arrière', - advancedWarning: { - title: 'Vous êtes passé en Mode Expert, et une fois que vous modifiez le PROMPT, vous NE POUVEZ PAS revenir au mode basique.', - description: 'En mode Expert, vous pouvez modifier l\'intégralité du PROMPT.', - learnMore: 'En savoir plus', - ok: 'D\'accord', - }, - operation: { - addMessage: 'Ajouter un message', - }, - contextMissing: 'Le composant de contexte est manquant, l\'efficacité de la suggestion peut ne pas être bonne.', - }, - operation: { - applyConfig: 'Publier', - resetConfig: 'Réinitialiser', - debugConfig: 'Déboguer', - addFeature: 'Ajouter une fonctionnalité', - automatic: 'Générer', - stopResponding: 'Arrêtez de répondre', - agree: 'comme', - disagree: 'déteste', - cancelAgree: 'Annuler comme', - cancelDisagree: 'Annuler le dislike', - userAction: 'Utilisateur', - }, - notSetAPIKey: { - title: 'La clé du fournisseur LLM n\'a pas été définie', - trailFinished: 'Parcours terminé', - description: 'La clé du fournisseur LLM n\'a pas été définie, et elle doit être définie avant le débogage.', - settingBtn: 'Aller aux paramètres', - }, - trailUseGPT4Info: { - title: 'Ne prend pas en charge gpt-4 pour le moment', - description: 'Utilisez gpt-4, veuillez définir la clé API.', - }, - feature: { - groupChat: { - title: 'Amélioration de chat', - description: 'Ajouter des paramètres de pré-conversation pour les applications peut améliorer l\'expérience utilisateur.', - }, - groupExperience: { - title: 'Amélioration de l\'expérience', - }, - conversationOpener: { - title: 'Convertisseurs de conversation', - description: 'Dans une application de chat, la première phrase que l\'IA prononce activement à l\'utilisateur est généralement utilisée comme message de bienvenue.', - }, - suggestedQuestionsAfterAnswer: { - title: 'Suivi', - description: 'La configuration de la suggestion des prochaines questions peut offrir aux utilisateurs une meilleure discussion.', - resDes: '3 suggestions pour la prochaine question de l\'utilisateur.', - tryToAsk: 'Essayez de demander', - }, - moreLikeThis: { - title: 'Plus comme ça', - description: 'Générez plusieurs textes à la fois, puis modifiez et continuez à générer', - generateNumTip: 'Nombre de chaque temps généré', - tip: 'L\'utilisation de cette fonctionnalité entraînera un surcoût de tokens supplémentaires', - }, - speechToText: { - title: 'Discours en Texte', - description: 'Une fois activé, vous pouvez utiliser l\'entrée vocale.', - resDes: 'La saisie vocale est activée', - }, - textToSpeech: { - title: 'Texte à la parole', - description: 'Une fois activé, le texte peut être converti en parole.', - resDes: 'La Texte à Audio est activée', - }, - citation: { - title: 'Citations et Attributions', - description: 'Une fois activé, affichez le document source et la section attribuée du contenu généré.', - resDes: 'Les citations et attributions sont activées', - }, - annotation: { - title: 'Réponse d\'Annotation', - description: 'Vous pouvez manuellement ajouter une réponse de haute qualité au cache pour une correspondance prioritaire avec des questions d\'utilisateur similaires.', - resDes: 'La réponse d\'annotation est activée', - scoreThreshold: { - title: 'Seuil de Score', - description: 'Utilisé pour définir le seuil de similarité pour la réponse d\'annotation.', - easyMatch: 'Correspondance Facile', - accurateMatch: 'Correspondance précise', - }, - matchVariable: { - title: 'Correspondance de Variable', - choosePlaceholder: 'Choisissez la variable correspondante', - }, - cacheManagement: 'Annotations', - cached: 'Annoté', - remove: 'Supprimer', - removeConfirm: 'Supprimer cette annotation ?', - add: 'Ajouter une annotation', - edit: 'Modifier l\'annotation', - }, - dataSet: { - title: 'Contexte', - noData: 'Vous pouvez importer des Connaissances comme contexte', - selectTitle: 'Sélectionnez la connaissance de référence', - selected: 'Connaissance sélectionnée', - noDataSet: 'Aucune connaissance trouvée', - toCreate: 'Aller à créer', - notSupportSelectMulti: 'Actuellement, ne prend en charge qu\'une seule Connaissance', - queryVariable: { - title: 'Variable de requête', - tip: 'Cette variable sera utilisée comme entrée de requête pour la récupération du contexte, obtenant des informations contextuelles liées à l\'entrée de cette variable.', - choosePlaceholder: 'Choisissez la variable de requête', - noVar: 'Aucune variable', - noVarTip: 'veuillez créer une variable sous la section Variables', - unableToQueryDataSet: 'Impossible de questionner la Connaissance', - unableToQueryDataSetTip: 'Impossible d\'interroger la Connaissance avec succès, veuillez choisir une variable de requête de contexte dans la section contexte.', - ok: 'D\'accord', - contextVarNotEmpty: 'la variable de requête de contexte ne peut pas être vide', - deleteContextVarTitle: 'Supprimer la variable "{{varName}}" ?', - deleteContextVarTip: 'Cette variable a été définie comme une variable de requête de contexte, et sa suppression affectera l\'utilisation normale de la Connaissance. Si vous devez toujours la supprimer, veuillez la re-sélectionner dans la section contexte.', - }, - }, - tools: { - title: 'Outils', - tips: 'Les outils fournissent une méthode d\'appel API standard, prenant en compte les entrées de l\'utilisateur ou des variables comme paramètres de requête pour interroger des données externes en tant que contexte.', - toolsInUse: '{{count}} outils en usage', - modal: { - title: 'Outil', - toolType: { - title: 'Type d\'outil', - placeholder: 'Veuillez sélectionner le type d\'outil', - }, - name: { - title: 'Nom', - placeholder: 'Veuillez entrer le nom', - }, - variableName: { - title: 'Nom de la Variable', - placeholder: 'Veuillez entrer le nom de la variable', - }, - }, - }, - conversationHistory: { - title: 'Historique de Conversation', - description: 'Définir les noms de préfixe pour les rôles de conversation', - tip: 'L\'historique de conversation n\'est pas activé, veuillez ajouter dans le prompt ci-dessus.', - learnMore: 'En savoir plus', - editModal: { - title: 'Modifier les noms de rôles de conversation', - userPrefix: 'Préfixe utilisateur', - assistantPrefix: 'Préfixe de l\'assistant', - }, - }, - toolbox: { - title: 'BOÎTE À OUTILS', - }, - moderation: { - title: 'Modération de contenu', - description: 'Sécurisez la sortie du modèle en utilisant l\'API de modération ou en conservant une liste de mots sensibles.', - allEnabled: 'Contenu Entrant/Sortant Activé', - inputEnabled: 'Contenu Activé', - outputEnabled: 'Contenu de SORTIE activé', - modal: { - title: 'Paramètres de modération de contenu', - provider: { - title: 'Fournisseur', - openai: 'Modération OpenAI', - openaiTip: { - prefix: 'La modération d\'OpenAI nécessite une clé API OpenAI configurée dans le', - suffix: '.', - }, - keywords: 'Mots-clés', - }, - keywords: { - tip: 'Un par ligne, séparés par des sauts de ligne. Jusqu\'à 100 caractères par ligne.', - placeholder: 'Un par ligne, séparé par des sauts de ligne', - line: 'Ligne', - }, - content: { - input: 'Modérer le contenu INPUT', - output: 'Modérer le contenu de SORTIE', - preset: 'Réponses préétablies', - placeholder: 'Contenu des réponses prédéfinies ici', - condition: 'Contenu MODÉRÉ pour INPUT et OUTPUT activé au moins une fois', - fromApi: 'Les réponses prédéfinies sont renvoyées par l\'API', - errorMessage: 'Les réponses prédéfinies ne peuvent pas être vides', - supportMarkdown: 'Prise en charge de Markdown', - }, - openaiNotConfig: { - before: 'La modération d\'OpenAI nécessite une clé API OpenAI configurée dans le', - after: 'Sorry, but you didn\'t provide a text to translate. Could you please provide the text?', - }, - }, - contentEnableLabel: 'Modération de contenu activée', - }, - fileUpload: { - title: 'Téléchargement de fichier', - description: 'La boîte de saisie de chat permet de télécharger des images, des documents et d\'autres fichiers.', - supportedTypes: 'Types de fichiers supportés', - numberLimit: 'Nombre max de téléchargements', - modalTitle: 'Paramètres de téléchargement de fichier', - }, - imageUpload: { - title: 'Téléchargement d\'image', - description: 'Permet de télécharger des images.', - supportedTypes: 'Types de fichiers supportés', - numberLimit: 'Nombre max de téléchargements', - modalTitle: 'Paramètres de téléchargement d\'image', - }, - bar: { - empty: 'Activer la fonctionnalité pour améliorer l\'expérience utilisateur de l\'application web', - enableText: 'Fonctionnalités activées', - manage: 'Gérer', - }, - documentUpload: { - title: 'Document', - description: 'Activer Document permettra au modèle de prendre des documents et de répondre aux questions à leur sujet.', - }, - audioUpload: { - title: 'Audio', - description: 'Activer Audio permettra au modèle de traiter les fichiers audio pour la transcription et l\'analyse.', - }, - }, - resetConfig: { - title: 'Confirmer la réinitialisation ?', - message: - 'Réinitialiser supprime les modifications, en restaurant la dernière configuration publiée.', - }, - errorMessage: { - nameOfKeyRequired: 'name of the key: {{key}} required', - valueOfVarRequired: 'La valeur de {{key}} ne peut pas être vide', - queryRequired: 'Le texte de la requête est requis.', - waitForResponse: - 'Veuillez attendre que la réponse au message précédent soit terminée.', - waitForBatchResponse: - 'Veuillez attendre que la réponse à la tâche en lot soit terminée.', - notSelectModel: 'Veuillez choisir un modèle', - waitForImgUpload: 'Veuillez attendre que l\'image soit téléchargée', - waitForFileUpload: 'Veuillez patienter pendant le téléchargement du/des fichier(s)', - }, - chatSubTitle: 'Instructions', - completionSubTitle: 'Indicatif de Prompt', - promptTip: - 'Les prompts guident les réponses de l\'IA avec des instructions et des contraintes. Insérez des variables comme {{input}}. Ce prompt ne sera pas visible pour les utilisateurs.', - formattingChangedTitle: 'Formatage modifié', - formattingChangedText: - 'La modification du formatage réinitialisera la zone de débogage, êtes-vous sûr ?', - variableTitle: 'Variables', - variableTip: - 'Les utilisateurs remplissent des variables dans un formulaire, remplaçant automatiquement les variables dans le prompt.', - notSetVar: 'Les variables permettent aux utilisateurs d\'introduire des mots de prompt ou des remarques d\'ouverture lors du remplissage des formulaires. Vous pouvez essayer de saisir "{{input}}" dans les mots de prompt.', - autoAddVar: 'Des variables indéfinies référencées dans le pre-prompt, voulez-vous les ajouter dans le formulaire d\'entrée de l\'utilisateur ?', - variableTable: { - key: 'Clé Variable', - name: 'Nom du champ d\'entrée de l\'utilisateur', - type: 'Type d\'Entrée', - action: 'Actions', - typeString: 'Chaîne', - typeSelect: 'Sélectionner', - }, - varKeyError: { - canNoBeEmpty: '{{key}} est obligatoire', - tooLong: '{{key}} too length. Can not be longer then 30 characters', - notValid: '{{key}} is invalid. Can only contain letters, numbers, and underscores', - notStartWithNumber: '{{key}} can not start with a number', - keyAlreadyExists: '{{key}} already exists', - }, - otherError: { - promptNoBeEmpty: 'Le prompt ne peut pas être vide', - historyNoBeEmpty: 'L\'historique de la conversation doit être défini dans le prompt', - queryNoBeEmpty: 'La requête doit être définie dans le prompt', - }, - variableConfig: { - 'addModalTitle': 'Add Input Field', - 'editModalTitle': 'Edit Input Field', - 'description': 'Setting for variable {{varName}}', - 'fieldType': 'Field Type', - 'string': 'Short Text', - 'text-input': 'Short Text', - 'paragraph': 'Paragraph', - 'select': 'Select', - 'number': 'Number', - 'notSet': 'Not set, try typing {{input}} in the prefix prompt', - 'stringTitle': 'Form text box options', - 'maxLength': 'Max Length', - 'options': 'Options', - 'addOption': 'Add option', - 'apiBasedVar': 'API-based Variable', - 'varName': 'Variable Name', - 'labelName': 'Label Name', - 'inputPlaceholder': 'Please input', - 'required': 'Required', - 'hide': 'Caché', - 'errorMsg': { - labelNameRequired: 'Label name is required', - varNameCanBeRepeat: 'Variable name can not be repeated', - atLeastOneOption: 'At least one option is required', - optionRepeat: 'Has repeat options', - }, - 'defaultValue': 'Valeur par défaut', - 'noDefaultValue': 'Aucune valeur par défaut', - 'selectDefaultValue': 'Sélectionner la valeur par défaut', - 'file': { - image: { - name: 'Image', - }, - audio: { - name: 'Audio', - }, - document: { - name: 'Document', - }, - video: { - name: 'Vidéo', - }, - custom: { - description: 'Spécifiez d’autres types de fichiers.', - name: 'Autres types de fichiers', - createPlaceholder: ' Extension de fichier, par exemple .doc', - }, - supportFileTypes: 'Types de fichiers de support', - }, - 'content': 'Contenu', - 'uploadFileTypes': 'Types de fichiers de téléchargement', - 'multi-files': 'Liste des fichiers', - 'both': 'Les deux', - 'maxNumberOfUploads': 'Nombre maximal de téléchargements', - 'maxNumberTip': 'Document < {{docLimit}}, image < {{imgLimit}}, audio < {{audioLimit}}, vidéo < {{videoLimit}}', - 'localUpload': 'Téléchargement local', - 'single-file': 'En file indienne', - 'optional': 'optionnel', - 'checkbox': 'Checkbox', - 'jsonSchema': 'Schéma JSON', - 'json': 'Code JSON', - 'unit': 'Unité', - 'placeholder': 'Espace réservé', - 'startChecked': 'Démarrer vérifié', - 'displayName': 'Nom d’affichage', - 'startSelectedOption': 'Démarrer l’option sélectionnée', - 'uploadMethod': 'Méthode de téléchargement', - 'showAllSettings': 'Afficher tous les paramètres', - 'defaultValuePlaceholder': 'Entrez la valeur par défaut pour pré-remplir le champ', - 'placeholderPlaceholder': 'Saisissez le texte à afficher lorsque le champ est vide', - 'tooltips': 'Infobulles', - 'tooltipsPlaceholder': 'Entrez le texte utile affiché lorsque vous passez la souris sur l’étiquette', - 'unitPlaceholder': 'Affichage des unités après les nombres, par exemple les jetons', - 'noDefaultSelected': 'Ne sélectionnez pas', - }, - vision: { - name: 'Vision', - description: 'Enable Vision permettra au modèle de prendre des images et de répondre à des questions à leur sujet.', - settings: 'Paramètres', - visionSettings: { - title: 'Paramètres de Vision', - resolution: 'Résolution', - resolutionTooltip: 'low res will allow model receive a low-res 512 x 512 version of the image, and represent the image with a budget of 65 tokens. This allows the API to return faster responses and consume fewer input tokens for use cases that do not require high detail.\nhigh res will first allows the model to see the low res image and then creates detailed crops of input images as 512px squares based on the input image size. Each of the detailed crops uses twice the token budget for a total of 129 tokens.', - high: 'Élevé', - low: 'Faible', - uploadMethod: 'Méthode de Téléchargement', - both: 'Les deux', - localUpload: 'Téléchargement Local', - url: 'URL', - uploadLimit: 'Limite de téléchargement', - }, - onlySupportVisionModelTip: 'Ne prend en charge que les modèles de vision', - }, - voice: { - name: 'Voix', - defaultDisplay: 'Voix par défaut', - description: 'Paramètres de la voix de synthèse vocale', - settings: 'Paramètres', - voiceSettings: { - title: 'Paramètres de voix', - language: 'Langue', - resolutionTooltip: 'Support de la langue pour la voix de synthèse de texte.', - voice: 'Voix', - autoPlay: 'Lecture Automatique', - autoPlayEnabled: 'Allumer', - autoPlayDisabled: 'Fermeture', - }, - }, - openingStatement: { - title: 'Ouverture de Conversation', - add: 'Ajouter', - writeOpener: 'Écrire l\'introduction', - placeholder: 'Rédigez votre message d\'ouverture ici, vous pouvez utiliser des variables, essayez de taper {{variable}}.', - openingQuestion: 'Questions d\'ouverture', - openingQuestionPlaceholder: 'Vous pouvez utiliser des variables, essayez de taper {{variable}}.', - noDataPlaceHolder: - 'Commencer la conversation avec l\'utilisateur peut aider l\'IA à établir une connexion plus proche avec eux dans les applications conversationnelles.', - varTip: 'Vous pouvez utiliser des variables, essayez de taper {{variable}}', - tooShort: 'Au moins 20 mots de l\'invite initiale sont requis pour générer des remarques d\'ouverture pour la conversation.', - notIncludeKey: 'The initial prompt does not include the variable: {{key}}. Please add it to the initial prompt.', - }, - modelConfig: { - model: 'Modèle', - setTone: 'Définir le ton des réponses', - title: 'Modèle et Paramètres', - modeType: { - chat: 'Discussion', - completion: 'Complet', - }, - }, - inputs: { - title: 'Déboguer et Aperçu', - noPrompt: 'Essayez d\'écrire une proposition dans l\'entrée pré-proposition', - userInputField: 'Champ de saisie utilisateur', - noVar: 'Remplissez la valeur de la variable, qui sera automatiquement remplacée dans le mot d\'invite chaque fois qu\'une nouvelle session est démarrée.', - chatVarTip: - 'Remplissez la valeur de la variable, qui sera automatiquement remplacée dans le mot d\'invite chaque fois qu\'une nouvelle session est démarrée', - completionVarTip: - 'Remplissez la valeur de la variable, qui sera automatiquement remplacée dans les mots de l\'invite chaque fois qu\'une question est soumise.', - previewTitle: 'Aperçu de la prompte', - queryTitle: 'Contenu de la requête', - queryPlaceholder: 'Veuillez entrer le texte de la demande.', - run: 'EXÉCUTER', - }, - result: 'Texte de sortie', - datasetConfig: { - settingTitle: 'Paramètres de récupération', - knowledgeTip: 'Cliquez sur le bouton “+” pour ajouter des connaissances', - retrieveOneWay: { - title: 'Récupération N-vers-1', - description: 'En fonction de l\'intention de l\'utilisateur et des descriptions de Connaissance, l\'Agent sélectionne de manière autonome la meilleure Connaissance pour interroger. Idéal pour les applications avec une Connaissance distincte et limitée.', - }, - retrieveMultiWay: { - title: 'Récupération multi-chemins', - description: 'En fonction de l\'intention de l\'utilisateur, interroge toutes les connaissances, récupère le texte pertinent de plusieurs sources et sélectionne les meilleurs résultats correspondant à la requête de l\'utilisateur après réordonnancement. La configuration de l\'API du modèle de réordonnancement est requise', - }, - rerankModelRequired: 'Un modèle de réorganisation est nécessaire', - params: 'Paramètres', - top_k: 'Top K', - top_kTip: 'Utilisé pour filtrer les morceaux qui sont les plus similaires aux questions de l\'utilisateur. Le système ajustera également dynamiquement la valeur de Top K, selon max_tokens du modèle sélectionné.', - score_threshold: 'Seuil de Score', - score_thresholdTip: 'Utilisé pour définir le seuil de similarité pour le filtrage des morceaux.', - retrieveChangeTip: 'La modification du mode d\'indexation et du mode de récupération peut affecter les applications associées à cette Connaissance.', - embeddingModelRequired: 'Un modèle d’incorporation configuré est requis', - }, - debugAsSingleModel: 'Déboguer comme Modèle Unique', - debugAsMultipleModel: 'Déboguer en tant que Modèles Multiples', - duplicateModel: 'Dupliquer', - publishAs: 'Publier comme', - assistantType: { - name: 'Type d\'Assistant', - chatAssistant: { - name: 'Assistant de Base', - description: 'Construisez un assistant basé sur le chat en utilisant un grand modèle de langage', - }, - agentAssistant: { - name: 'Assistant Agent', - description: 'Construisez un Agent intelligent qui peut choisir de manière autonome des outils pour accomplir les tâches', - }, - }, - agent: { - agentMode: 'Mode Agent', - agentModeDes: 'Définissez le type de mode d\'inférence pour l\'agent', - agentModeType: { - ReACT: 'RéAgir', - functionCall: 'Appel de fonction', - }, - setting: { - name: 'Paramètres de l\'Agent', - description: 'Les paramètres de l\'Assistant Agent permettent de définir le mode de l\'agent et des fonctionnalités avancées comme les prompts intégrés, uniquement disponibles dans le type Agent.', - maximumIterations: { - name: 'Nombre Maximum d\'Itérations', - description: 'Limiter le nombre d\'itérations qu\'un assistant agent peut exécuter', - }, - }, - buildInPrompt: 'Prompt Intégré', - firstPrompt: 'Première Prompte', - nextIteration: 'Prochaine Itération', - promptPlaceholder: 'Écrivez votre prompt ici', - tools: { - name: 'Outils', - description: 'L\'utilisation d\'outils peut étendre les capacités des LLM, comme la recherche sur internet ou l\'exécution de calculs scientifiques.', - enabled: 'Activé', - }, - }, - codegen: { - noDataLine1: 'Décrivez votre cas d’utilisation sur la gauche,', - instruction: 'Instructions', - generate: 'Générer', - noDataLine2: 'L’aperçu du code s’affichera ici.', - resTitle: 'Code généré', - applyChanges: 'Appliquer les modifications', - overwriteConfirmTitle: 'Écraser le code existant ?', - description: 'Le générateur de code utilise des modèles configurés pour générer un code de haute qualité basé sur vos instructions. Veuillez fournir des instructions claires et détaillées.', - loading: 'Génération de code...', - overwriteConfirmMessage: 'Cette action remplacera le code existant. Voulez-vous continuer ?', - generatedCodeTitle: 'Code généré', - apply: 'Appliquer', - title: 'Générateur de code', - instructionPlaceholder: 'Entrez une description détaillée du code que vous souhaitez générer.', - }, - generate: { - template: { - pythonDebugger: { - name: 'Débogueur Python', - instruction: 'Un bot capable de générer et de déboguer votre code en fonction de vos instructions', - }, - translation: { - name: 'Traduction', - instruction: 'Un traducteur capable de traduire en plusieurs langues', - }, - professionalAnalyst: { - instruction: 'Extrayez des informations, identifiez les risques et distillez les informations clés des rapports longs dans un seul mémo', - name: 'Analyste professionnel', - }, - excelFormulaExpert: { - name: 'Expert en formules Excel', - instruction: 'Un chatbot qui peut aider les utilisateurs novices à comprendre, utiliser et créer des formules Excel basées sur les instructions de l’utilisateur', - }, - travelPlanning: { - instruction: 'L’assistant de planification de voyage est un outil intelligent conçu pour aider les utilisateurs à planifier sans effort leurs voyages', - name: 'Planification de voyage', - }, - SQLSorcerer: { - instruction: 'Transformez le langage quotidien en requêtes SQL', - name: 'Sorcier SQL', - }, - GitGud: { - name: 'Git gud', - instruction: 'Générer des commandes Git appropriées en fonction des actions de contrôle de version décrites par l’utilisateur', - }, - meetingTakeaways: { - name: 'Points à retenir de la réunion', - instruction: 'Distillez les réunions en résumés concis comprenant les sujets de discussion, les points clés à retenir et les actions à prendre', - }, - writingsPolisher: { - name: 'Polisseuse d’écriture', - instruction: 'Utilisez des techniques de révision avancées pour améliorer vos écrits', - }, - }, - instruction: 'Instructions', - generate: 'Générer', - tryIt: 'Essaie', - overwriteTitle: 'Remplacer la configuration existante ?', - overwriteMessage: 'L’application de cette invite remplacera la configuration existante.', - title: 'Générateur d’invites', - apply: 'Appliquer', - resTitle: 'Invite générée', - loading: 'Orchestrer l’application pour vous...', - description: 'Le générateur d’invites utilise le modèle configuré pour optimiser les invites afin d’obtenir une meilleure qualité et une meilleure structure. Veuillez rédiger des instructions claires et détaillées.', - version: 'Version', - latest: 'Dernier', - versions: 'Versions', - optional: 'Facultatif', - optimizationNote: 'Remarque d\'optimisation', - to: 'à', - press: 'Presse', - instructionPlaceHolderLine2: 'Le format de sortie est incorrect, veuillez suivre strictement le format JSON.', - instructionPlaceHolderTitle: 'Décrivez comment vous aimeriez améliorer cette invite. Par exemple:', - optimizePromptTooltip: 'Optimiser dans le générateur de prompts', - instructionPlaceHolderLine1: 'Rendez la sortie plus concise, en conservant les points clés.', - instructionPlaceHolderLine3: 'Le ton est trop brusque, veuillez le rendre plus amical.', - insertContext: 'insérer le contexte', - idealOutputPlaceholder: 'Décrivez votre format de réponse idéal, la longueur, le ton et les exigences en matière de contenu...', - newNoDataLine1: 'Écrivez une instruction dans la colonne de gauche, puis cliquez sur Générer pour voir la réponse.', - dismiss: 'Rejeter', - idealOutput: 'Sortie Idéale', - codeGenInstructionPlaceHolderLine: 'Plus le retour d\'information est détaillé, comme les types de données d\'entrée et de sortie ainsi que la manière dont les variables sont traitées, plus la génération de code sera précise.', - }, - warningMessage: { - timeoutExceeded: 'Les résultats ne s’affichent pas en raison d’un délai d’expiration. Veuillez vous référer aux journaux pour rassembler les résultats complets.', - }, - noResult: 'La sortie sera affichée ici.', -} - -export default translation diff --git a/web/i18n/fr-FR/app-log.json b/web/i18n/fr-FR/app-log.json new file mode 100644 index 0000000000..77484ca21a --- /dev/null +++ b/web/i18n/fr-FR/app-log.json @@ -0,0 +1,110 @@ +{ + "title": "Journaux", + "description": "Les journaux enregistrent l'état d'exécution de l'application, y compris les entrées utilisateur et les réponses de l'IA.", + "dateTimeFormat": "MM/DD/YYYY hh:mm:ss A", + "table": { + "header": { + "updatedTime": "Heure de mise à jour", + "time": "Heure de création", + "endUser": "Utilisateur final ou compte", + "input": "Entrée", + "output": "Sortie", + "summary": "Titre", + "messageCount": "Nombre de messages", + "userRate": "Taux utilisateur", + "adminRate": "Taux op.", + "startTime": "HEURE DE DÉBUT", + "status": "STATUT", + "runtime": "TEMPS D'EXÉCUTION", + "tokens": "JETONS", + "user": "UTILISATEUR FINAL OU COMPTE", + "version": "VERSION", + "triggered_from": "DÉCLENCHÉ PAR" + }, + "pagination": { + "previous": "Précédent", + "next": "Suivant" + }, + "empty": { + "noChat": "Aucune conversation pour le moment", + "noOutput": "Aucune sortie", + "element": { + "title": "Y a-t-il quelqu'un ?", + "content": "Observez et annotez ici les interactions entre les utilisateurs finaux et les applications d'IA pour améliorer en continu la précision de l'IA. Vous pouvez essayer de partager ou de tester l'application Web vous-même, puis revenir sur cette page." + } + } + }, + "detail": { + "time": "Heure", + "conversationId": "ID de conversation", + "promptTemplate": "Modèle de consigne", + "promptTemplateBeforeChat": "Modèle de consigne avant la conversation · En tant que message système", + "annotationTip": "Améliorations marquées par {{user}}", + "timeConsuming": "", + "second": "s", + "tokenCost": "Jeton dépensé", + "loading": "chargement", + "operation": { + "like": "j'aime", + "dislike": "je n'aime pas", + "addAnnotation": "Ajouter une amélioration", + "editAnnotation": "Modifier une amélioration", + "annotationPlaceholder": "Entrez la réponse attendue que vous souhaitez que l'IA donne, cela peut être utilisé pour le réglage fin du modèle et l'amélioration continue de la qualité de génération de texte à l'avenir." + }, + "variables": "Variables", + "uploadImages": "Images téléchargées", + "modelParams": "Paramètres du modèle" + }, + "filter": { + "period": { + "today": "Aujourd'hui", + "last7days": "7 derniers jours", + "last4weeks": "4 dernières semaines", + "last3months": "3 derniers mois", + "last12months": "12 derniers mois", + "monthToDate": "Mois à ce jour", + "quarterToDate": "Trimestre à ce jour", + "yearToDate": "Année à ce jour", + "allTime": "Tout le temps", + "custom": "Personnalisé", + "last30days": "Derniers 30 jours" + }, + "annotation": { + "all": "Tous", + "annotated": "Améliorations annotées ({{count}} éléments)", + "not_annotated": "Non annoté" + }, + "sortBy": "Trier par :", + "descending": "décroissant", + "ascending": "croissant" + }, + "workflowTitle": "Journaux de workflow", + "workflowSubtitle": "Le journal enregistre l'opération d'Automate.", + "runDetail": { + "title": "Journal de conversation", + "workflowTitle": "Détail du journal", + "fileListDetail": "Détail", + "fileListLabel": "Détails du fichier", + "testWithParams": "Test avec paramètres" + }, + "promptLog": "Journal de consigne", + "agentLog": "Journal des agents", + "viewLog": "Voir le journal", + "agentLogDetail": { + "agentMode": "Mode Agent", + "toolUsed": "Outil utilisé", + "iterations": "Itérations", + "iteration": "Itération", + "finalProcessing": "Traitement final" + }, + "dateFormat": "JJ/MM/YYYY", + "triggerBy": { + "debugging": "Débogage", + "appRun": "Application Web", + "webhook": "Webhook", + "schedule": "Programme", + "plugin": "Plugin", + "ragPipelineRun": "Pipeline RAG", + "ragPipelineDebugging": "Débogage RAG" + } +} diff --git a/web/i18n/fr-FR/app-log.ts b/web/i18n/fr-FR/app-log.ts deleted file mode 100644 index 5406ae211e..0000000000 --- a/web/i18n/fr-FR/app-log.ts +++ /dev/null @@ -1,112 +0,0 @@ -const translation = { - title: 'Journaux', - description: 'Les journaux enregistrent l\'état d\'exécution de l\'application, y compris les entrées utilisateur et les réponses de l\'IA.', - dateTimeFormat: 'MM/DD/YYYY hh:mm:ss A', - table: { - header: { - updatedTime: 'Heure de mise à jour', - time: 'Heure de création', - endUser: 'Utilisateur final ou compte', - input: 'Entrée', - output: 'Sortie', - summary: 'Titre', - messageCount: 'Nombre de messages', - userRate: 'Taux utilisateur', - adminRate: 'Taux op.', - startTime: 'HEURE DE DÉBUT', - status: 'STATUT', - runtime: 'TEMPS D\'EXÉCUTION', - tokens: 'JETONS', - user: 'UTILISATEUR FINAL OU COMPTE', - version: 'VERSION', - triggered_from: 'DÉCLENCHÉ PAR', - }, - pagination: { - previous: 'Précédent', - next: 'Suivant', - }, - empty: { - noChat: 'Aucune conversation pour le moment', - noOutput: 'Aucune sortie', - element: { - title: 'Y a-t-il quelqu\'un ?', - content: 'Observez et annotez ici les interactions entre les utilisateurs finaux et les applications d\'IA pour améliorer en continu la précision de l\'IA. Vous pouvez essayer de partager ou de tester l\'application Web vous-même, puis revenir sur cette page.', - }, - }, - }, - detail: { - time: 'Heure', - conversationId: 'ID de conversation', - promptTemplate: 'Modèle de consigne', - promptTemplateBeforeChat: 'Modèle de consigne avant la conversation · En tant que message système', - annotationTip: 'Améliorations marquées par {{user}}', - timeConsuming: '', - second: 's', - tokenCost: 'Jeton dépensé', - loading: 'chargement', - operation: { - like: 'j\'aime', - dislike: 'je n\'aime pas', - addAnnotation: 'Ajouter une amélioration', - editAnnotation: 'Modifier une amélioration', - annotationPlaceholder: 'Entrez la réponse attendue que vous souhaitez que l\'IA donne, cela peut être utilisé pour le réglage fin du modèle et l\'amélioration continue de la qualité de génération de texte à l\'avenir.', - }, - variables: 'Variables', - uploadImages: 'Images téléchargées', - modelParams: 'Paramètres du modèle', - }, - filter: { - period: { - today: 'Aujourd\'hui', - last7days: '7 derniers jours', - last4weeks: '4 dernières semaines', - last3months: '3 derniers mois', - last12months: '12 derniers mois', - monthToDate: 'Mois à ce jour', - quarterToDate: 'Trimestre à ce jour', - yearToDate: 'Année à ce jour', - allTime: 'Tout le temps', - custom: 'Personnalisé', - last30days: 'Derniers 30 jours', - }, - annotation: { - all: 'Tous', - annotated: 'Améliorations annotées ({{count}} éléments)', - not_annotated: 'Non annoté', - }, - sortBy: 'Trier par :', - descending: 'décroissant', - ascending: 'croissant', - }, - workflowTitle: 'Journaux de workflow', - workflowSubtitle: 'Le journal enregistre l\'opération d\'Automate.', - runDetail: { - title: 'Journal de conversation', - workflowTitle: 'Détail du journal', - fileListDetail: 'Détail', - fileListLabel: 'Détails du fichier', - testWithParams: 'Test avec paramètres', - }, - promptLog: 'Journal de consigne', - agentLog: 'Journal des agents', - viewLog: 'Voir le journal', - agentLogDetail: { - agentMode: 'Mode Agent', - toolUsed: 'Outil utilisé', - iterations: 'Itérations', - iteration: 'Itération', - finalProcessing: 'Traitement final', - }, - dateFormat: 'JJ/MM/YYYY', - triggerBy: { - debugging: 'Débogage', - appRun: 'Application Web', - webhook: 'Webhook', - schedule: 'Programme', - plugin: 'Plugin', - ragPipelineRun: 'Pipeline RAG', - ragPipelineDebugging: 'Débogage RAG', - }, -} - -export default translation diff --git a/web/i18n/fr-FR/app-overview.json b/web/i18n/fr-FR/app-overview.json new file mode 100644 index 0000000000..14962927a8 --- /dev/null +++ b/web/i18n/fr-FR/app-overview.json @@ -0,0 +1,187 @@ +{ + "welcome": { + "firstStepTip": "Pour commencer,", + "enterKeyTip": "saisissez votre clé API OpenAI ci-dessous", + "getKeyTip": "Obtenez votre clé API depuis le tableau de bord OpenAI", + "placeholder": "Votre clé API OpenAI (ex. sk-xxxx)" + }, + "apiKeyInfo": { + "cloud": { + "trial": { + "title": "Vous utilisez le quota d'essai de {{providerName}}.", + "description": "Le quota d'essai est fourni pour votre usage de test. Avant l'épuisement des appels de quota d'essai, veuillez configurer votre propre fournisseur de modèle ou acheter un quota supplémentaire." + }, + "exhausted": { + "title": "Votre quota d'essai a été utilisé, veuillez configurer votre clé API.", + "description": "Votre quota d'essai a été épuisé. Veuillez configurer votre propre fournisseur de modèle ou acheter un quota supplémentaire." + } + }, + "selfHost": { + "title": { + "row1": "Pour commencer,", + "row2": "configurez d'abord votre fournisseur de modèle." + } + }, + "callTimes": "Appels", + "usedToken": "Token utilisés", + "setAPIBtn": "Aller à la configuration du fournisseur de modèle", + "tryCloud": "Ou essayez la version cloud de Dify avec un devis gratuit" + }, + "overview": { + "title": "Aperçu", + "appInfo": { + "explanation": "web app AI prête à l'emploi", + "accessibleAddress": "URL publique", + "preview": "Aperçu", + "regenerate": "Regénérer", + "regenerateNotice": "Voulez-vous régénérer l'URL publique ?", + "preUseReminder": "Veuillez activer web app avant de continuer.", + "settings": { + "entry": "Paramètres", + "title": "Paramètres de l'application Web", + "webName": "Nom de l'application Web", + "webDesc": "Description de l'application Web", + "webDescTip": "Ce texte sera affiché côté client, fournissant des directives de base sur la façon d'utiliser l'application", + "webDescPlaceholder": "Entrez la description de l'application Web", + "language": "Langue", + "workflow": { + "title": "Étapes du workflow", + "show": "Afficher", + "hide": "Masquer", + "showDesc": "Afficher ou masquer les détails du flux de travail dans web app", + "subTitle": "Détails du flux de travail" + }, + "chatColorTheme": "Thème de couleur du chatbot", + "chatColorThemeDesc": "Définir le thème de couleur du chatbot", + "chatColorThemeInverted": "Inversé", + "invalidHexMessage": "Valeur hexadécimale invalide", + "invalidPrivacyPolicy": "Lien de politique de confidentialité invalide. Veuillez utiliser un lien valide commençant par http ou https", + "more": { + "entry": "Afficher plus de paramètres", + "copyright": "Droits d'auteur", + "copyRightPlaceholder": "Entrez le nom de l'auteur ou de l'organisation", + "privacyPolicy": "Politique de confidentialité", + "privacyPolicyPlaceholder": "Entrez le lien de la politique de confidentialité", + "privacyPolicyTip": "Aide les visiteurs à comprendre les données collectées par l'application, voir la Politique de confidentialité de Dify.", + "customDisclaimer": "Clause de non-responsabilité personnalisée", + "customDisclaimerPlaceholder": "Entrez le texte de la clause de non-responsabilité personnalisée", + "customDisclaimerTip": "Le texte de la clause de non-responsabilité personnalisée sera affiché côté client, fournissant des informations supplémentaires sur l'application", + "copyrightTip": "Afficher les informations de copyright dans l’application web", + "copyrightTooltip": "Veuillez passer à l’abonnement professionnel ou supérieur" + }, + "sso": { + "label": "Authentification SSO", + "title": "web app SSO", + "tooltip": "Contactez l’administrateur pour activer l’authentification unique web app", + "description": "Tous les utilisateurs doivent se connecter avec l’authentification unique avant d’utiliser web app" + }, + "modalTip": "Paramètres de l’application web côté client." + }, + "embedded": { + "entry": "Intégré", + "title": "Intégrer sur un site Web", + "explanation": "Choisissez la manière d'intégrer l'application de chat à votre site Web", + "iframe": "Pour ajouter l'application de chat n'importe où sur votre site Web, ajoutez cette iframe à votre code HTML.", + "scripts": "Pour ajouter une application de chat en bas à droite de votre site Web, ajoutez ce code à votre HTML.", + "chromePlugin": "Installer l'extension Chrome Dify Chatbot", + "copied": "Copié", + "copy": "Copier" + }, + "qrcode": { + "title": "QR code à partager", + "scan": "Scanner et partager l'application", + "download": "Télécharger le code QR" + }, + "customize": { + "way": "façon", + "entry": "Personnaliser", + "title": "Personnaliser l'application Web AI", + "explanation": "Vous pouvez personnaliser l'interface utilisateur de l'application Web pour répondre à vos besoins de scénario et de style.", + "way1": { + "name": "Faire une copie du code client, le modifier et le déployer sur Vercel (recommandé)", + "step1": "Faire une copie du code client et le modifier", + "step1Tip": "Cliquez ici pour faire une copie du code source dans votre compte GitHub et le modifier", + "step1Operation": "Client-Web-Dify", + "step2": "Déployer sur Vercel", + "step2Tip": "Cliquez ici pour importer le dépôt dans Vercel et le déployer", + "step2Operation": "Importer le dépôt", + "step3": "Configurer les variables d'environnement", + "step3Tip": "Ajoutez les variables d'environnement suivantes dans Vercel" + }, + "way2": { + "name": "Écrire du code côté client pour appeler l'API et le déployer sur un serveur", + "operation": "Documentation" + } + }, + "launch": "Lancer", + "enableTooltip": { + "description": "Pour activer cette fonctionnalité, veuillez ajouter un nœud d'entrée utilisateur sur le canevas. (Peut déjà exister dans le brouillon, prend effet après publication)", + "learnMore": "En savoir plus" + }, + "title": "Application Web" + }, + "apiInfo": { + "title": "API de service Backend", + "explanation": "Facilement intégré dans votre application", + "accessibleAddress": "Point de terminaison du service API", + "doc": "Référence de l'API" + }, + "status": { + "running": "En service", + "disable": "Désactiver" + }, + "triggerInfo": { + "title": "Déclencheurs", + "explanation": "Gestion des déclencheurs de flux de travail", + "triggersAdded": "Déclencheurs ajoutés", + "noTriggerAdded": "Aucun déclencheur ajouté", + "triggerStatusDescription": "L'état du nœud de déclenchement apparaît ici. (Peut déjà exister dans le brouillon, prend effet après publication)", + "learnAboutTriggers": "En savoir plus sur les déclencheurs" + }, + "disableTooltip": { + "triggerMode": "La fonctionnalité {{feature}} n'est pas prise en charge en mode Nœud Déclencheur." + } + }, + "analysis": { + "title": "Analyse", + "ms": "ms", + "tokenPS": "Token/s", + "totalMessages": { + "title": "Total des messages", + "explanation": "Nombre d'interactions quotidiennes avec l'IA." + }, + "totalConversations": { + "title": "Conversations totales", + "explanation": "Nombre de conversations quotidiennes avec l'IA ; ingénierie/débogage des prompts exclus." + }, + "activeUsers": { + "title": "Utilisateurs actifs", + "explanation": "Utilisateurs uniques engagés dans des Q&R avec l'IA ; l'ingénierie/le débogage des prompts sont exclus." + }, + "tokenUsage": { + "title": "Utilisation des tokens", + "explanation": "Reflet de l'utilisation quotidienne des tokens du modèle de langue pour l'application, utile pour le contrôle des coûts.", + "consumed": "Consommé" + }, + "avgSessionInteractions": { + "title": "Interactions moyennes par session", + "explanation": "Nombre de communications continu utilisateur-IA ; pour les applications basées sur la conversation." + }, + "avgUserInteractions": { + "title": "Interactions moyennes par utilisateur", + "explanation": "Reflet de la fréquence d'utilisation quotidienne des utilisateurs. Cette métrique reflète la fidélité des utilisateurs." + }, + "userSatisfactionRate": { + "title": "Taux de satisfaction des utilisateurs", + "explanation": "Le nombre de likes parmi 1 000 messages. Cela indique la proportion de réponses avec lesquelles les utilisateurs sont très satisfaits." + }, + "avgResponseTime": { + "title": "Temps de réponse moyen", + "explanation": "Temps (ms) pour l'IA pour traiter/répondre ; pour les applications basées sur du texte." + }, + "tps": { + "title": "Vitesse de sortie de token", + "explanation": "Mesurer les performances du LLM. Compter la vitesse de sortie des tokens du LLM depuis le début de la requête jusqu'à l'achèvement de la sortie." + } + } +} diff --git a/web/i18n/fr-FR/app-overview.ts b/web/i18n/fr-FR/app-overview.ts deleted file mode 100644 index c59d7c1cce..0000000000 --- a/web/i18n/fr-FR/app-overview.ts +++ /dev/null @@ -1,189 +0,0 @@ -const translation = { - welcome: { - firstStepTip: 'Pour commencer,', - enterKeyTip: 'saisissez votre clé API OpenAI ci-dessous', - getKeyTip: 'Obtenez votre clé API depuis le tableau de bord OpenAI', - placeholder: 'Votre clé API OpenAI (ex. sk-xxxx)', - }, - apiKeyInfo: { - cloud: { - trial: { - title: 'Vous utilisez le quota d\'essai de {{providerName}}.', - description: 'Le quota d\'essai est fourni pour votre usage de test. Avant l\'épuisement des appels de quota d\'essai, veuillez configurer votre propre fournisseur de modèle ou acheter un quota supplémentaire.', - }, - exhausted: { - title: 'Votre quota d\'essai a été utilisé, veuillez configurer votre clé API.', - description: 'Votre quota d\'essai a été épuisé. Veuillez configurer votre propre fournisseur de modèle ou acheter un quota supplémentaire.', - }, - }, - selfHost: { - title: { - row1: 'Pour commencer,', - row2: 'configurez d\'abord votre fournisseur de modèle.', - }, - }, - callTimes: 'Appels', - usedToken: 'Token utilisés', - setAPIBtn: 'Aller à la configuration du fournisseur de modèle', - tryCloud: 'Ou essayez la version cloud de Dify avec un devis gratuit', - }, - overview: { - title: 'Aperçu', - appInfo: { - explanation: 'web app AI prête à l\'emploi', - accessibleAddress: 'URL publique', - preview: 'Aperçu', - regenerate: 'Regénérer', - regenerateNotice: 'Voulez-vous régénérer l\'URL publique ?', - preUseReminder: 'Veuillez activer web app avant de continuer.', - settings: { - entry: 'Paramètres', - title: 'Paramètres de l\'application Web', - webName: 'Nom de l\'application Web', - webDesc: 'Description de l\'application Web', - webDescTip: 'Ce texte sera affiché côté client, fournissant des directives de base sur la façon d\'utiliser l\'application', - webDescPlaceholder: 'Entrez la description de l\'application Web', - language: 'Langue', - workflow: { - title: 'Étapes du workflow', - show: 'Afficher', - hide: 'Masquer', - showDesc: 'Afficher ou masquer les détails du flux de travail dans web app', - subTitle: 'Détails du flux de travail', - }, - chatColorTheme: 'Thème de couleur du chatbot', - chatColorThemeDesc: 'Définir le thème de couleur du chatbot', - chatColorThemeInverted: 'Inversé', - invalidHexMessage: 'Valeur hexadécimale invalide', - invalidPrivacyPolicy: 'Lien de politique de confidentialité invalide. Veuillez utiliser un lien valide commençant par http ou https', - more: { - entry: 'Afficher plus de paramètres', - copyright: 'Droits d\'auteur', - copyRightPlaceholder: 'Entrez le nom de l\'auteur ou de l\'organisation', - privacyPolicy: 'Politique de confidentialité', - privacyPolicyPlaceholder: 'Entrez le lien de la politique de confidentialité', - privacyPolicyTip: 'Aide les visiteurs à comprendre les données collectées par l\'application, voir la Politique de confidentialité de Dify.', - customDisclaimer: 'Clause de non-responsabilité personnalisée', - customDisclaimerPlaceholder: 'Entrez le texte de la clause de non-responsabilité personnalisée', - customDisclaimerTip: 'Le texte de la clause de non-responsabilité personnalisée sera affiché côté client, fournissant des informations supplémentaires sur l\'application', - copyrightTip: 'Afficher les informations de copyright dans l’application web', - copyrightTooltip: 'Veuillez passer à l’abonnement professionnel ou supérieur', - }, - sso: { - label: 'Authentification SSO', - title: 'web app SSO', - tooltip: 'Contactez l’administrateur pour activer l’authentification unique web app', - description: 'Tous les utilisateurs doivent se connecter avec l’authentification unique avant d’utiliser web app', - }, - modalTip: 'Paramètres de l’application web côté client.', - }, - embedded: { - entry: 'Intégré', - title: 'Intégrer sur un site Web', - explanation: 'Choisissez la manière d\'intégrer l\'application de chat à votre site Web', - iframe: 'Pour ajouter l\'application de chat n\'importe où sur votre site Web, ajoutez cette iframe à votre code HTML.', - scripts: 'Pour ajouter une application de chat en bas à droite de votre site Web, ajoutez ce code à votre HTML.', - chromePlugin: 'Installer l\'extension Chrome Dify Chatbot', - copied: 'Copié', - copy: 'Copier', - }, - qrcode: { - title: 'QR code à partager', - scan: 'Scanner et partager l\'application', - download: 'Télécharger le code QR', - }, - customize: { - way: 'façon', - entry: 'Personnaliser', - title: 'Personnaliser l\'application Web AI', - explanation: 'Vous pouvez personnaliser l\'interface utilisateur de l\'application Web pour répondre à vos besoins de scénario et de style.', - way1: { - name: 'Faire une copie du code client, le modifier et le déployer sur Vercel (recommandé)', - step1: 'Faire une copie du code client et le modifier', - step1Tip: 'Cliquez ici pour faire une copie du code source dans votre compte GitHub et le modifier', - step1Operation: 'Client-Web-Dify', - step2: 'Déployer sur Vercel', - step2Tip: 'Cliquez ici pour importer le dépôt dans Vercel et le déployer', - step2Operation: 'Importer le dépôt', - step3: 'Configurer les variables d\'environnement', - step3Tip: 'Ajoutez les variables d\'environnement suivantes dans Vercel', - }, - way2: { - name: 'Écrire du code côté client pour appeler l\'API et le déployer sur un serveur', - operation: 'Documentation', - }, - }, - launch: 'Lancer', - enableTooltip: { - description: 'Pour activer cette fonctionnalité, veuillez ajouter un nœud d\'entrée utilisateur sur le canevas. (Peut déjà exister dans le brouillon, prend effet après publication)', - learnMore: 'En savoir plus', - }, - title: 'Application Web', - }, - apiInfo: { - title: 'API de service Backend', - explanation: 'Facilement intégré dans votre application', - accessibleAddress: 'Point de terminaison du service API', - doc: 'Référence de l\'API', - }, - status: { - running: 'En service', - disable: 'Désactiver', - }, - triggerInfo: { - title: 'Déclencheurs', - explanation: 'Gestion des déclencheurs de flux de travail', - triggersAdded: 'Déclencheurs ajoutés', - noTriggerAdded: 'Aucun déclencheur ajouté', - triggerStatusDescription: 'L\'état du nœud de déclenchement apparaît ici. (Peut déjà exister dans le brouillon, prend effet après publication)', - learnAboutTriggers: 'En savoir plus sur les déclencheurs', - }, - disableTooltip: { - triggerMode: 'La fonctionnalité {{feature}} n\'est pas prise en charge en mode Nœud Déclencheur.', - }, - }, - analysis: { - title: 'Analyse', - ms: 'ms', - tokenPS: 'Token/s', - totalMessages: { - title: 'Total des messages', - explanation: 'Nombre d\'interactions quotidiennes avec l\'IA.', - }, - totalConversations: { - title: 'Conversations totales', - explanation: 'Nombre de conversations quotidiennes avec l\'IA ; ingénierie/débogage des prompts exclus.', - }, - activeUsers: { - title: 'Utilisateurs actifs', - explanation: 'Utilisateurs uniques engagés dans des Q&R avec l\'IA ; l\'ingénierie/le débogage des prompts sont exclus.', - }, - tokenUsage: { - title: 'Utilisation des tokens', - explanation: 'Reflet de l\'utilisation quotidienne des tokens du modèle de langue pour l\'application, utile pour le contrôle des coûts.', - consumed: 'Consommé', - }, - avgSessionInteractions: { - title: 'Interactions moyennes par session', - explanation: 'Nombre de communications continu utilisateur-IA ; pour les applications basées sur la conversation.', - }, - avgUserInteractions: { - title: 'Interactions moyennes par utilisateur', - explanation: 'Reflet de la fréquence d\'utilisation quotidienne des utilisateurs. Cette métrique reflète la fidélité des utilisateurs.', - }, - userSatisfactionRate: { - title: 'Taux de satisfaction des utilisateurs', - explanation: 'Le nombre de likes parmi 1 000 messages. Cela indique la proportion de réponses avec lesquelles les utilisateurs sont très satisfaits.', - }, - avgResponseTime: { - title: 'Temps de réponse moyen', - explanation: 'Temps (ms) pour l\'IA pour traiter/répondre ; pour les applications basées sur du texte.', - }, - tps: { - title: 'Vitesse de sortie de token', - explanation: 'Mesurer les performances du LLM. Compter la vitesse de sortie des tokens du LLM depuis le début de la requête jusqu\'à l\'achèvement de la sortie.', - }, - }, -} - -export default translation diff --git a/web/i18n/fr-FR/app.json b/web/i18n/fr-FR/app.json new file mode 100644 index 0000000000..540c8c070c --- /dev/null +++ b/web/i18n/fr-FR/app.json @@ -0,0 +1,345 @@ +{ + "createApp": "CRÉER UNE APPLICATION", + "types": { + "all": "Tout", + "chatbot": "Chatbot", + "agent": "Agent", + "workflow": "Flux de travail", + "completion": "Terminaison", + "basic": "Basique", + "advanced": "Chatflow" + }, + "duplicate": "Dupliquer", + "duplicateTitle": "Dupliquer l'application", + "export": "Exporter DSL", + "exportFailed": "Échec de l'exportation du DSL.", + "importDSL": "Importer le fichier DSL", + "createFromConfigFile": "Créer à partir du fichier DSL", + "deleteAppConfirmTitle": "Supprimer cette application ?", + "deleteAppConfirmContent": "La suppression de l'application est irréversible. Les utilisateurs ne pourront plus accéder à votre application et toutes les configurations de prompt et les journaux seront définitivement supprimés.", + "appDeleted": "Application supprimée", + "appDeleteFailed": "Échec de la suppression de l'application", + "join": "Rejoindre la communauté", + "communityIntro": "Discutez avec les membres de l'équipe, les contributeurs et les développeurs sur différents canaux.", + "roadmap": "Voir notre feuille de route", + "newApp": { + "startFromBlank": "Créer à partir de zéro", + "startFromTemplate": "Créer à partir d'un modèle", + "workflowWarning": "Actuellement en version bêta", + "captionName": "Icône et nom de l'application", + "appNamePlaceholder": "Donnez un nom à votre application", + "captionDescription": "Description", + "appDescriptionPlaceholder": "Entrez la description de l'application", + "useTemplate": "Utiliser ce modèle", + "previewDemo": "Aperçu de la démo", + "chatApp": "Assistant", + "chatAppIntro": "Je veux construire une application basée sur le chat. Cette application utilise un format question-réponse, permettant plusieurs tours de conversation continue.", + "agentAssistant": "Nouvel assistant agent", + "completeApp": "Générateur de texte", + "completeAppIntro": "Je veux créer une application qui génère du texte de haute qualité en fonction des invites, telles que la génération d'articles, de résumés, de traductions, et plus encore.", + "showTemplates": "Je veux choisir parmi un modèle", + "hideTemplates": "Revenir à la sélection de mode", + "Create": "Créer", + "Cancel": "Annuler", + "nameNotEmpty": "Le nom ne peut pas être vide", + "appTemplateNotSelected": "Veuillez sélectionner un modèle", + "appTypeRequired": "Veuillez sélectionner un type d'application", + "appCreated": "Application créée", + "appCreateFailed": "Échec de la création de l'application", + "Confirm": "Confirmer", + "caution": "Prudence", + "appCreateDSLWarning": "Attention : la différence de version DSL peut affecter certaines fonctionnalités", + "appCreateDSLErrorPart4": "Version DSL prise en charge par le système :", + "appCreateDSLErrorPart1": "Une différence significative entre les versions DSL a été détectée. Forcer l’importation peut entraîner un dysfonctionnement de l’application.", + "appCreateDSLErrorTitle": "Incompatibilité de version", + "appCreateDSLErrorPart3": "Version actuelle de l’application DSL :", + "appCreateDSLErrorPart2": "Voulez-vous continuer ?", + "foundResults": "{{count}} Résultats", + "workflowShortDescription": "Flux agentique pour automatisations intelligentes", + "agentShortDescription": "Agent intelligent avec raisonnement et utilisation autonome de l’outil", + "learnMore": "Pour en savoir plus", + "noTemplateFound": "Aucun modèle trouvé", + "completionShortDescription": "Assistant IA pour les tâches de génération de texte", + "chatbotShortDescription": "Chatbot basé sur LLM avec configuration simple", + "advancedUserDescription": "Workflow avec fonctionnalités de mémoire et interface de chatbot.", + "noTemplateFoundTip": "Essayez d’effectuer une recherche à l’aide de mots-clés différents.", + "noAppsFound": "Aucune application trouvée", + "chooseAppType": "Choisissez un type d’application", + "forAdvanced": "POUR LES UTILISATEURS AVANCÉS", + "chatbotUserDescription": "Créez rapidement un chatbot basé sur LLM avec une configuration simple. Vous pouvez passer à Chatflow plus tard.", + "workflowUserDescription": "Créez visuellement des flux IA autonomes avec la simplicité du glisser-déposer.", + "completionUserDescription": "Créez rapidement un assistant IA pour les tâches de génération de texte avec une configuration simple.", + "agentUserDescription": "Un agent intelligent capable d’un raisonnement itératif et d’une utilisation autonome d’outils pour atteindre les objectifs de la tâche.", + "forBeginners": "Types d’applications plus basiques", + "foundResult": "{{count}} Résultat", + "noIdeaTip": "Pas d’idées ? Consultez nos modèles", + "optional": "Optionnel", + "advancedShortDescription": "Workflow amélioré pour conversations multi-tours", + "dropDSLToCreateApp": "Déposez le fichier DSL ici pour créer une application", + "import": "Importation" + }, + "editApp": "Modifier les informations", + "editAppTitle": "Modifier les informations de l'application", + "editDone": "Informations sur l'application mises à jour", + "editFailed": "Échec de la mise à jour des informations de l'application", + "iconPicker": { + "ok": "OK", + "cancel": "Annuler", + "emoji": "Emoji", + "image": "Image" + }, + "switch": "Passer à l'orchestration de flux de travail", + "switchTipStart": "Une nouvelle copie de l'application sera créée pour vous, et la nouvelle copie passera à l'orchestration de flux de travail. La nouvelle copie ne permettra pas le ", + "switchTip": "retour", + "switchTipEnd": " à l'orchestration de base.", + "switchLabel": "La copie de l'application à créer", + "removeOriginal": "Supprimer l'application d'origine", + "switchStart": "Commencer la commutation", + "typeSelector": { + "all": "Tous Types", + "chatbot": "Chatbot", + "agent": "Agent", + "workflow": "Flux de travail", + "completion": "Terminaison", + "advanced": "Chatflow" + }, + "tracing": { + "title": "Traçage des performances de l'application", + "description": "Configuration d'un fournisseur LLMOps tiers et traçage des performances de l'application.", + "config": "Configurer", + "collapse": "Réduire", + "expand": "Développer", + "tracing": "Traçage", + "disabled": "Désactivé", + "disabledTip": "Veuillez d'abord configurer le fournisseur", + "enabled": "En service", + "tracingDescription": "Capturez le contexte complet de l'exécution de l'application, y compris les appels LLM, le contexte, les prompts, les requêtes HTTP et plus encore, vers une plateforme de traçage tierce.", + "configProviderTitle": { + "configured": "Configuré", + "notConfigured": "Configurez le fournisseur pour activer le traçage", + "moreProvider": "Plus de fournisseurs" + }, + "arize": { + "title": "Arize", + "description": "Observabilité de LLM de niveau entreprise, évaluation en ligne et hors ligne, surveillance et expérimentation—alimentée par OpenTelemetry. Conçue spécialement pour les applications basées sur LLM et agents." + }, + "phoenix": { + "title": "Phoenix", + "description": "Plateforme open-source basée sur OpenTelemetry pour l’observabilité, l’évaluation, l’ingénierie des prompts et l’expérimentation de vos flux de travail et agents LLM." + }, + "langsmith": { + "title": "LangSmith", + "description": "Une plateforme de développement tout-en-un pour chaque étape du cycle de vie des applications basées sur LLM." + }, + "langfuse": { + "title": "Langfuse", + "description": "Traces, évaluations, gestion des prompts et métriques pour déboguer et améliorer votre application LLM." + }, + "inUse": "En utilisation", + "configProvider": { + "title": "Configurer ", + "placeholder": "Entrez votre {{key}}", + "project": "Projet", + "publicKey": "Clé Publique", + "secretKey": "Clé Secrète", + "viewDocsLink": "Voir la documentation de {{key}}", + "removeConfirmTitle": "Supprimer la configuration de {{key}} ?", + "removeConfirmContent": "La configuration actuelle est en cours d'utilisation, sa suppression désactivera la fonction de Traçage.", + "password": "Mot de passe", + "trackingUri": "URI de suivi", + "clientId": "ID client OAuth", + "clientSecret": "Secret client OAuth", + "username": "Nom d'utilisateur", + "experimentId": "ID de l'expérience", + "personalAccessToken": "Jeton d'accès personnel (ancien)", + "databricksHost": "URL de l'espace de travail Databricks" + }, + "view": "Vue", + "opik": { + "description": "Opik est une plate-forme open-source pour l’évaluation, le test et la surveillance des applications LLM.", + "title": "Opik" + }, + "weave": { + "title": "Tisser", + "description": "Weave est une plateforme open-source pour évaluer, tester et surveiller les applications LLM." + }, + "aliyun": { + "title": "Surveillance Cloud", + "description": "La plateforme d'observabilité entièrement gérée et sans maintenance fournie par Alibaba Cloud permet une surveillance, un traçage et une évaluation prêts à l'emploi des applications Dify." + }, + "mlflow": { + "title": "MLflow", + "description": "Plateforme LLMOps open source pour le suivi d'expériences, l'observabilité et l'évaluation, pour créer des applications IA/LLM en toute confiance." + }, + "databricks": { + "title": "Databricks", + "description": "Databricks propose MLflow entièrement géré avec une gouvernance et une sécurité robustes pour stocker les données de traçabilité." + }, + "tencent": { + "title": "Tencent APM", + "description": "Tencent Application Performance Monitoring fournit une traçabilité complète et une analyse multidimensionnelle pour les applications LLM." + } + }, + "answerIcon": { + "description": "S’il faut utiliser l’icône web app pour remplacer 🤖 dans l’application partagée", + "title": "Utiliser l’icône web app pour remplacer 🤖", + "descriptionInExplore": "Utilisation de l’icône web app pour remplacer 🤖 dans Explore" + }, + "importFromDSLUrlPlaceholder": "Collez le lien DSL ici", + "dslUploader": { + "button": "Glisser-déposer un fichier, ou", + "browse": "Parcourir" + }, + "importFromDSL": "Importation à partir d'une DSL", + "importFromDSLUrl": "À partir de l’URL", + "importFromDSLFile": "À partir d’un fichier DSL", + "mermaid": { + "handDrawn": "Dessiné à la main", + "classic": "Classique" + }, + "openInExplore": "Ouvrir dans Explorer", + "newAppFromTemplate": { + "sidebar": { + "HR": "RH", + "Assistant": "Assistant", + "Writing": "Écriture", + "Programming": "Programmation", + "Recommended": "Recommandé", + "Workflow": "Flux de travail", + "Agent": "Agent" + }, + "byCategories": "PAR CATÉGORIES", + "searchAllTemplate": "Rechercher dans tous les modèles..." + }, + "showMyCreatedAppsOnly": "Afficher uniquement mes applications créées", + "appSelector": { + "noParams": "Aucun paramètre nécessaire", + "params": "PARAMÈTRES DE L’APPLICATION", + "label": "APPLI", + "placeholder": "Sélectionnez une application..." + }, + "structOutput": { + "LLMResponse": "Réponse LLM", + "notConfiguredTip": "La sortie structurée n'a pas encore été configurée.", + "required": "Obligatoire", + "structuredTip": "Les sorties structurées sont une fonctionnalité qui garantit que le modèle générera toujours des réponses qui respectent votre schéma JSON fourni.", + "modelNotSupportedTip": "Le modèle actuel ne prend pas en charge cette fonctionnalité et est automatiquement rétrogradé à l'injection de prompt.", + "modelNotSupported": "Modèle non pris en charge", + "moreFillTip": "Affichage d'un maximum de 10 niveaux d'imbrication", + "configure": "Configurer", + "structured": "systématique" + }, + "accessItemsDescription": { + "anyone": "Tout le monde peut accéder à l'application web.", + "specific": "Seules des groupes ou membres spécifiques peuvent accéder à l'application web.", + "organization": "Toute personne dans l'organisation peut accéder à l'application web.", + "external": "Seuls les utilisateurs externes authentifiés peuvent accéder à l'application Web." + }, + "accessControlDialog": { + "accessItems": { + "anyone": "Quiconque avec le lien", + "specific": "Groupes ou membres spécifiques", + "organization": "Seuls les membres au sein de l'entreprise", + "external": "Utilisateurs externes authentifiés" + }, + "operateGroupAndMember": { + "searchPlaceholder": "Rechercher des groupes et des membres", + "allMembers": "Tous les membres", + "expand": "Développer", + "noResult": "Aucun résultat" + }, + "title": "Contrôle d'accès à l'application Web", + "description": "Définir les autorisations d'accès à l'application web", + "accessLabel": "Qui a accès", + "groups_one": "{{count}} GROUPE", + "groups_other": "{{count}} GROUPES", + "members_one": "{{count}} MEMBRE", + "members_other": "{{count}} MEMBRES", + "noGroupsOrMembers": "Aucun groupe ou membre sélectionné", + "webAppSSONotEnabledTip": "Veuillez contacter l'administrateur de l'entreprise pour configurer la méthode d'authentification de l'application web.", + "updateSuccess": "Mise à jour réussie" + }, + "publishApp": { + "title": "Qui peut accéder à l'application web", + "notSet": "Non défini", + "notSetDesc": "Actuellement, personne ne peut accéder à l'application web. Veuillez définir les autorisations." + }, + "accessControl": "Contrôle d'accès à l'application Web", + "noAccessPermission": "Pas de permission d'accéder à l'application web", + "maxActiveRequestsPlaceholder": "Entrez 0 pour illimité", + "maxActiveRequests": "Nombre maximal de requêtes simultanées", + "maxActiveRequestsTip": "Nombre maximum de requêtes actives concurrentes par application (0 pour illimité)", + "gotoAnything": { + "actions": { + "searchPluginsDesc": "Recherchez et naviguez vers vos plugins", + "searchKnowledgeBasesDesc": "Recherchez et accédez à vos bases de connaissances", + "searchWorkflowNodesDesc": "Recherchez et accédez aux nœuds du flux de travail actuel par nom ou type", + "searchApplicationsDesc": "Recherchez et accédez à vos applications", + "searchPlugins": "Rechercher des plugins", + "searchWorkflowNodes": "Rechercher des nœuds de workflow", + "searchKnowledgeBases": "Rechercher dans les bases de connaissances", + "searchApplications": "Rechercher des applications", + "searchWorkflowNodesHelp": "Cette fonctionnalité ne fonctionne que lors de l'affichage d'un flux de travail. Accédez d'abord à un flux de travail.", + "runTitle": "Commandes", + "languageCategoryTitle": "Langue", + "themeSystem": "Thème du système", + "themeDark": "Thème Sombre", + "themeCategoryTitle": "Thème", + "themeLight": "Thème clair", + "themeCategoryDesc": "Changer le thème de l'application", + "themeLightDesc": "Utiliser une apparence légère", + "languageChangeDesc": "Changer la langue de l'interface", + "themeDarkDesc": "Utiliser l'apparence sombre", + "themeSystemDesc": "Suivez l'apparence de votre système d'exploitation", + "languageCategoryDesc": "Changer la langue de l'interface", + "runDesc": "Exécuter des commandes rapides (thème, langue, ...)", + "slashDesc": "Exécutez des commandes telles que /theme, /lang", + "communityDesc": "Ouvrir la communauté Discord", + "docDesc": "Ouvrir la documentation d'aide", + "accountDesc": "Accédez à la page de compte", + "feedbackDesc": "Discussions de rétroaction de la communauté ouverte", + "zenTitle": "Zen Mode", + "zenDesc": "Toggle canvas focus mode" + }, + "emptyState": { + "noKnowledgeBasesFound": "Aucune base de connaissances trouvée", + "noAppsFound": "Aucune application trouvée", + "noPluginsFound": "Aucun plugin trouvé", + "noWorkflowNodesFound": "Aucun nœud de workflow trouvé", + "tryDifferentTerm": "Essayez un terme de recherche différent ou supprimez le filtre {{mode}}", + "trySpecificSearch": "Essayez {{shortcuts}} pour des recherches spécifiques" + }, + "groups": { + "apps": "Applications", + "workflowNodes": "Nœuds de flux de travail", + "knowledgeBases": "Bases de connaissances", + "plugins": "Plug-ins", + "commands": "Commandes" + }, + "someServicesUnavailable": "Certains services de recherche indisponibles", + "servicesUnavailableMessage": "Certains services de recherche peuvent rencontrer des problèmes. Réessayez dans un instant.", + "useAtForSpecific": "Utilisez @ pour des types spécifiques", + "searchTemporarilyUnavailable": "Recherche temporairement indisponible", + "searchTitle": "Recherchez n'importe quoi", + "clearToSearchAll": "Effacer @ pour rechercher tout", + "searching": "Recherche...", + "searchPlaceholder": "Recherchez ou tapez @ pour les commandes...", + "searchFailed": "Echec de la recherche", + "noResults": "Aucun résultat trouvé", + "commandHint": "Tapez @ pour parcourir par catégorie", + "selectSearchType": "Choisissez les éléments de recherche", + "searchHint": "Commencez à taper pour tout rechercher instantanément", + "resultCount": "{{count}} résultat", + "resultCount_other": "{{count}} résultats", + "inScope": "dans {{scope}}s", + "noMatchingCommands": "Aucune commande correspondante n’a été trouvée", + "tryDifferentSearch": "Essayez un autre terme de recherche", + "slashHint": "Tapez / pour voir toutes les commandes disponibles", + "pressEscToClose": "Appuyez sur Échap pour fermer", + "tips": "Appuyez sur ↑↓ pour naviguer", + "startTyping": "Commencez à taper pour rechercher", + "selectToNavigate": "Sélectionnez pour naviguer" + }, + "noUserInputNode": "Nœud d'entrée utilisateur manquant", + "notPublishedYet": "L'application n'est pas encore publiée" +} diff --git a/web/i18n/fr-FR/app.ts b/web/i18n/fr-FR/app.ts deleted file mode 100644 index 5d416f3a5e..0000000000 --- a/web/i18n/fr-FR/app.ts +++ /dev/null @@ -1,351 +0,0 @@ -const translation = { - createApp: 'CRÉER UNE APPLICATION', - types: { - all: 'Tout', - chatbot: 'Chatbot', - agent: 'Agent', - workflow: 'Flux de travail', - completion: 'Terminaison', - basic: 'Basique', - advanced: 'Chatflow', - }, - duplicate: 'Dupliquer', - duplicateTitle: 'Dupliquer l\'application', - export: 'Exporter DSL', - exportFailed: 'Échec de l\'exportation du DSL.', - importDSL: 'Importer le fichier DSL', - createFromConfigFile: 'Créer à partir du fichier DSL', - deleteAppConfirmTitle: 'Supprimer cette application ?', - deleteAppConfirmContent: - 'La suppression de l\'application est irréversible. Les utilisateurs ne pourront plus accéder à votre application et toutes les configurations de prompt et les journaux seront définitivement supprimés.', - appDeleted: 'Application supprimée', - appDeleteFailed: 'Échec de la suppression de l\'application', - join: 'Rejoindre la communauté', - communityIntro: - 'Discutez avec les membres de l\'équipe, les contributeurs et les développeurs sur différents canaux.', - roadmap: 'Voir notre feuille de route', - newApp: { - startFromBlank: 'Créer à partir de zéro', - startFromTemplate: 'Créer à partir d\'un modèle', - workflowWarning: 'Actuellement en version bêta', - captionName: 'Icône et nom de l\'application', - appNamePlaceholder: 'Donnez un nom à votre application', - captionDescription: 'Description', - appDescriptionPlaceholder: 'Entrez la description de l\'application', - useTemplate: 'Utiliser ce modèle', - previewDemo: 'Aperçu de la démo', - chatApp: 'Assistant', - chatAppIntro: - 'Je veux construire une application basée sur le chat. Cette application utilise un format question-réponse, permettant plusieurs tours de conversation continue.', - agentAssistant: 'Nouvel assistant agent', - completeApp: 'Générateur de texte', - completeAppIntro: - 'Je veux créer une application qui génère du texte de haute qualité en fonction des invites, telles que la génération d\'articles, de résumés, de traductions, et plus encore.', - showTemplates: 'Je veux choisir parmi un modèle', - hideTemplates: 'Revenir à la sélection de mode', - Create: 'Créer', - Cancel: 'Annuler', - nameNotEmpty: 'Le nom ne peut pas être vide', - appTemplateNotSelected: 'Veuillez sélectionner un modèle', - appTypeRequired: 'Veuillez sélectionner un type d\'application', - appCreated: 'Application créée', - appCreateFailed: 'Échec de la création de l\'application', - Confirm: 'Confirmer', - caution: 'Prudence', - appCreateDSLWarning: 'Attention : la différence de version DSL peut affecter certaines fonctionnalités', - appCreateDSLErrorPart4: 'Version DSL prise en charge par le système :', - appCreateDSLErrorPart1: 'Une différence significative entre les versions DSL a été détectée. Forcer l’importation peut entraîner un dysfonctionnement de l’application.', - appCreateDSLErrorTitle: 'Incompatibilité de version', - appCreateDSLErrorPart3: 'Version actuelle de l’application DSL :', - appCreateDSLErrorPart2: 'Voulez-vous continuer ?', - foundResults: '{{count}} Résultats', - workflowShortDescription: 'Flux agentique pour automatisations intelligentes', - agentShortDescription: 'Agent intelligent avec raisonnement et utilisation autonome de l’outil', - learnMore: 'Pour en savoir plus', - noTemplateFound: 'Aucun modèle trouvé', - completionShortDescription: 'Assistant IA pour les tâches de génération de texte', - chatbotShortDescription: 'Chatbot basé sur LLM avec configuration simple', - advancedUserDescription: 'Workflow avec fonctionnalités de mémoire et interface de chatbot.', - noTemplateFoundTip: 'Essayez d’effectuer une recherche à l’aide de mots-clés différents.', - noAppsFound: 'Aucune application trouvée', - chooseAppType: 'Choisissez un type d’application', - forAdvanced: 'POUR LES UTILISATEURS AVANCÉS', - chatbotUserDescription: 'Créez rapidement un chatbot basé sur LLM avec une configuration simple. Vous pouvez passer à Chatflow plus tard.', - workflowUserDescription: 'Créez visuellement des flux IA autonomes avec la simplicité du glisser-déposer.', - completionUserDescription: 'Créez rapidement un assistant IA pour les tâches de génération de texte avec une configuration simple.', - agentUserDescription: 'Un agent intelligent capable d’un raisonnement itératif et d’une utilisation autonome d’outils pour atteindre les objectifs de la tâche.', - forBeginners: 'Types d’applications plus basiques', - foundResult: '{{count}} Résultat', - noIdeaTip: 'Pas d’idées ? Consultez nos modèles', - optional: 'Optionnel', - advancedShortDescription: 'Workflow amélioré pour conversations multi-tours', - dropDSLToCreateApp: 'Déposez le fichier DSL ici pour créer une application', - import: 'Importation', - }, - editApp: 'Modifier les informations', - editAppTitle: 'Modifier les informations de l\'application', - editDone: 'Informations sur l\'application mises à jour', - editFailed: 'Échec de la mise à jour des informations de l\'application', - iconPicker: { - ok: 'OK', - cancel: 'Annuler', - emoji: 'Emoji', - image: 'Image', - }, - switch: 'Passer à l\'orchestration de flux de travail', - switchTipStart: 'Une nouvelle copie de l\'application sera créée pour vous, et la nouvelle copie passera à l\'orchestration de flux de travail. La nouvelle copie ne permettra pas le ', - switchTip: 'retour', - switchTipEnd: ' à l\'orchestration de base.', - switchLabel: 'La copie de l\'application à créer', - removeOriginal: 'Supprimer l\'application d\'origine', - switchStart: 'Commencer la commutation', - typeSelector: { - all: 'Tous Types', - chatbot: 'Chatbot', - agent: 'Agent', - workflow: 'Flux de travail', - completion: 'Terminaison', - advanced: 'Chatflow', - }, - tracing: { - title: 'Traçage des performances de l\'application', - description: 'Configuration d\'un fournisseur LLMOps tiers et traçage des performances de l\'application.', - config: 'Configurer', - collapse: 'Réduire', - expand: 'Développer', - tracing: 'Traçage', - disabled: 'Désactivé', - disabledTip: 'Veuillez d\'abord configurer le fournisseur', - enabled: 'En service', - tracingDescription: 'Capturez le contexte complet de l\'exécution de l\'application, y compris les appels LLM, le contexte, les prompts, les requêtes HTTP et plus encore, vers une plateforme de traçage tierce.', - configProviderTitle: { - configured: 'Configuré', - notConfigured: 'Configurez le fournisseur pour activer le traçage', - moreProvider: 'Plus de fournisseurs', - }, - arize: { - title: 'Arize', - description: 'Observabilité de LLM de niveau entreprise, évaluation en ligne et hors ligne, surveillance et expérimentation—alimentée par OpenTelemetry. Conçue spécialement pour les applications basées sur LLM et agents.', - }, - phoenix: { - title: 'Phoenix', - description: 'Plateforme open-source basée sur OpenTelemetry pour l’observabilité, l’évaluation, l’ingénierie des prompts et l’expérimentation de vos flux de travail et agents LLM.', - }, - langsmith: { - title: 'LangSmith', - description: 'Une plateforme de développement tout-en-un pour chaque étape du cycle de vie des applications basées sur LLM.', - }, - langfuse: { - title: 'Langfuse', - description: 'Traces, évaluations, gestion des prompts et métriques pour déboguer et améliorer votre application LLM.', - }, - inUse: 'En utilisation', - configProvider: { - title: 'Configurer ', - placeholder: 'Entrez votre {{key}}', - project: 'Projet', - publicKey: 'Clé Publique', - secretKey: 'Clé Secrète', - viewDocsLink: 'Voir la documentation de {{key}}', - removeConfirmTitle: 'Supprimer la configuration de {{key}} ?', - removeConfirmContent: 'La configuration actuelle est en cours d\'utilisation, sa suppression désactivera la fonction de Traçage.', - password: 'Mot de passe', - trackingUri: 'URI de suivi', - clientId: 'ID client OAuth', - clientSecret: 'Secret client OAuth', - username: 'Nom d\'utilisateur', - experimentId: 'ID de l\'expérience', - personalAccessToken: 'Jeton d\'accès personnel (ancien)', - databricksHost: 'URL de l\'espace de travail Databricks', - }, - view: 'Vue', - opik: { - description: 'Opik est une plate-forme open-source pour l’évaluation, le test et la surveillance des applications LLM.', - title: 'Opik', - }, - weave: { - title: 'Tisser', - description: 'Weave est une plateforme open-source pour évaluer, tester et surveiller les applications LLM.', - }, - aliyun: { - title: 'Surveillance Cloud', - description: 'La plateforme d\'observabilité entièrement gérée et sans maintenance fournie par Alibaba Cloud permet une surveillance, un traçage et une évaluation prêts à l\'emploi des applications Dify.', - }, - mlflow: { - title: 'MLflow', - description: 'Plateforme LLMOps open source pour le suivi d\'expériences, l\'observabilité et l\'évaluation, pour créer des applications IA/LLM en toute confiance.', - }, - databricks: { - title: 'Databricks', - description: 'Databricks propose MLflow entièrement géré avec une gouvernance et une sécurité robustes pour stocker les données de traçabilité.', - }, - tencent: { - title: 'Tencent APM', - description: 'Tencent Application Performance Monitoring fournit une traçabilité complète et une analyse multidimensionnelle pour les applications LLM.', - }, - }, - answerIcon: { - description: 'S’il faut utiliser l’icône web app pour remplacer 🤖 dans l’application partagée', - title: 'Utiliser l’icône web app pour remplacer 🤖', - descriptionInExplore: 'Utilisation de l’icône web app pour remplacer 🤖 dans Explore', - }, - importFromDSLUrlPlaceholder: 'Collez le lien DSL ici', - dslUploader: { - button: 'Glisser-déposer un fichier, ou', - browse: 'Parcourir', - }, - importFromDSL: 'Importation à partir d\'une DSL', - importFromDSLUrl: 'À partir de l’URL', - importFromDSLFile: 'À partir d’un fichier DSL', - mermaid: { - handDrawn: 'Dessiné à la main', - classic: 'Classique', - }, - openInExplore: 'Ouvrir dans Explorer', - newAppFromTemplate: { - sidebar: { - HR: 'RH', - Assistant: 'Assistant', - Writing: 'Écriture', - Programming: 'Programmation', - Recommended: 'Recommandé', - Workflow: 'Flux de travail', - Agent: 'Agent', - }, - byCategories: 'PAR CATÉGORIES', - searchAllTemplate: 'Rechercher dans tous les modèles...', - }, - showMyCreatedAppsOnly: 'Afficher uniquement mes applications créées', - appSelector: { - noParams: 'Aucun paramètre nécessaire', - params: 'PARAMÈTRES DE L’APPLICATION', - label: 'APPLI', - placeholder: 'Sélectionnez une application...', - }, - structOutput: { - LLMResponse: 'Réponse LLM', - notConfiguredTip: 'La sortie structurée n\'a pas encore été configurée.', - required: 'Obligatoire', - structuredTip: 'Les sorties structurées sont une fonctionnalité qui garantit que le modèle générera toujours des réponses qui respectent votre schéma JSON fourni.', - modelNotSupportedTip: 'Le modèle actuel ne prend pas en charge cette fonctionnalité et est automatiquement rétrogradé à l\'injection de prompt.', - modelNotSupported: 'Modèle non pris en charge', - moreFillTip: 'Affichage d\'un maximum de 10 niveaux d\'imbrication', - configure: 'Configurer', - structured: 'systématique', - }, - accessItemsDescription: { - anyone: 'Tout le monde peut accéder à l\'application web.', - specific: 'Seules des groupes ou membres spécifiques peuvent accéder à l\'application web.', - organization: 'Toute personne dans l\'organisation peut accéder à l\'application web.', - external: 'Seuls les utilisateurs externes authentifiés peuvent accéder à l\'application Web.', - }, - accessControlDialog: { - accessItems: { - anyone: 'Quiconque avec le lien', - specific: 'Groupes ou membres spécifiques', - organization: 'Seuls les membres au sein de l\'entreprise', - external: 'Utilisateurs externes authentifiés', - }, - operateGroupAndMember: { - searchPlaceholder: 'Rechercher des groupes et des membres', - allMembers: 'Tous les membres', - expand: 'Développer', - noResult: 'Aucun résultat', - }, - title: 'Contrôle d\'accès à l\'application Web', - description: 'Définir les autorisations d\'accès à l\'application web', - accessLabel: 'Qui a accès', - groups_one: '{{count}} GROUPE', - groups_other: '{{count}} GROUPES', - members_one: '{{count}} MEMBRE', - members_other: '{{count}} MEMBRES', - noGroupsOrMembers: 'Aucun groupe ou membre sélectionné', - webAppSSONotEnabledTip: 'Veuillez contacter l\'administrateur de l\'entreprise pour configurer la méthode d\'authentification de l\'application web.', - updateSuccess: 'Mise à jour réussie', - }, - publishApp: { - title: 'Qui peut accéder à l\'application web', - notSet: 'Non défini', - notSetDesc: 'Actuellement, personne ne peut accéder à l\'application web. Veuillez définir les autorisations.', - }, - accessControl: 'Contrôle d\'accès à l\'application Web', - noAccessPermission: 'Pas de permission d\'accéder à l\'application web', - maxActiveRequestsPlaceholder: 'Entrez 0 pour illimité', - maxActiveRequests: 'Nombre maximal de requêtes simultanées', - maxActiveRequestsTip: 'Nombre maximum de requêtes actives concurrentes par application (0 pour illimité)', - gotoAnything: { - actions: { - searchPluginsDesc: 'Recherchez et naviguez vers vos plugins', - searchKnowledgeBasesDesc: 'Recherchez et accédez à vos bases de connaissances', - searchWorkflowNodesDesc: 'Recherchez et accédez aux nœuds du flux de travail actuel par nom ou type', - searchApplicationsDesc: 'Recherchez et accédez à vos applications', - searchPlugins: 'Rechercher des plugins', - searchWorkflowNodes: 'Rechercher des nœuds de workflow', - searchKnowledgeBases: 'Rechercher dans les bases de connaissances', - searchApplications: 'Rechercher des applications', - searchWorkflowNodesHelp: 'Cette fonctionnalité ne fonctionne que lors de l\'affichage d\'un flux de travail. Accédez d\'abord à un flux de travail.', - runTitle: 'Commandes', - languageCategoryTitle: 'Langue', - themeSystem: 'Thème du système', - themeDark: 'Thème Sombre', - themeCategoryTitle: 'Thème', - themeLight: 'Thème clair', - themeCategoryDesc: 'Changer le thème de l\'application', - themeLightDesc: 'Utiliser une apparence légère', - languageChangeDesc: 'Changer la langue de l\'interface', - themeDarkDesc: 'Utiliser l\'apparence sombre', - themeSystemDesc: 'Suivez l\'apparence de votre système d\'exploitation', - languageCategoryDesc: 'Changer la langue de l\'interface', - runDesc: 'Exécuter des commandes rapides (thème, langue, ...)', - slashDesc: 'Exécutez des commandes telles que /theme, /lang', - communityDesc: 'Ouvrir la communauté Discord', - docDesc: 'Ouvrir la documentation d\'aide', - accountDesc: 'Accédez à la page de compte', - feedbackDesc: 'Discussions de rétroaction de la communauté ouverte', - zenTitle: 'Zen Mode', - zenDesc: 'Toggle canvas focus mode', - }, - emptyState: { - noKnowledgeBasesFound: 'Aucune base de connaissances trouvée', - noAppsFound: 'Aucune application trouvée', - noPluginsFound: 'Aucun plugin trouvé', - noWorkflowNodesFound: 'Aucun nœud de workflow trouvé', - tryDifferentTerm: 'Essayez un terme de recherche différent ou supprimez le filtre {{mode}}', - trySpecificSearch: 'Essayez {{shortcuts}} pour des recherches spécifiques', - }, - groups: { - apps: 'Applications', - workflowNodes: 'Nœuds de flux de travail', - knowledgeBases: 'Bases de connaissances', - plugins: 'Plug-ins', - commands: 'Commandes', - }, - someServicesUnavailable: 'Certains services de recherche indisponibles', - servicesUnavailableMessage: 'Certains services de recherche peuvent rencontrer des problèmes. Réessayez dans un instant.', - useAtForSpecific: 'Utilisez @ pour des types spécifiques', - searchTemporarilyUnavailable: 'Recherche temporairement indisponible', - searchTitle: 'Recherchez n\'importe quoi', - clearToSearchAll: 'Effacer @ pour rechercher tout', - searching: 'Recherche...', - searchPlaceholder: 'Recherchez ou tapez @ pour les commandes...', - searchFailed: 'Echec de la recherche', - noResults: 'Aucun résultat trouvé', - commandHint: 'Tapez @ pour parcourir par catégorie', - selectSearchType: 'Choisissez les éléments de recherche', - searchHint: 'Commencez à taper pour tout rechercher instantanément', - resultCount: '{{count}} résultat', - resultCount_other: '{{count}} résultats', - inScope: 'dans {{scope}}s', - noMatchingCommands: 'Aucune commande correspondante n’a été trouvée', - tryDifferentSearch: 'Essayez un autre terme de recherche', - slashHint: 'Tapez / pour voir toutes les commandes disponibles', - pressEscToClose: 'Appuyez sur Échap pour fermer', - tips: 'Appuyez sur ↑↓ pour naviguer', - startTyping: 'Commencez à taper pour rechercher', - selectToNavigate: 'Sélectionnez pour naviguer', - }, - noUserInputNode: 'Nœud d\'entrée utilisateur manquant', - notPublishedYet: 'L\'application n\'est pas encore publiée', -} - -export default translation diff --git a/web/i18n/fr-FR/billing.json b/web/i18n/fr-FR/billing.json new file mode 100644 index 0000000000..a00fe5790b --- /dev/null +++ b/web/i18n/fr-FR/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "Plan Actuel", + "upgradeBtn": { + "plain": "Mettre à jour le plan", + "encourage": "Mettre à niveau maintenant", + "encourageShort": "Mise à niveau" + }, + "viewBilling": "Gérer la facturation et les abonnements", + "buyPermissionDeniedTip": "Veuillez contacter votre administrateur d'entreprise pour vous abonner", + "plansCommon": { + "yearlyTip": "Obtenez 2 mois gratuitement en vous abonnant annuellement !", + "mostPopular": "Le Plus Populaire", + "planRange": { + "monthly": "Mensuel", + "yearly": "Annuel" + }, + "month": "mois", + "year": "année", + "save": "Enregistrer", + "free": "Gratuit", + "currentPlan": "Plan Actuel", + "contractSales": "Contactez les ventes", + "contractOwner": "Contacter le chef d'équipe", + "startForFree": "Commencez gratuitement", + "contactSales": "Contacter les ventes", + "talkToSales": "Parlez aux Ventes", + "modelProviders": "Fournisseurs de Modèles", + "buildApps": "Construire des Applications", + "vectorSpace": "Espace Vectoriel", + "vectorSpaceTooltip": "L'espace vectoriel est le système de mémoire à long terme nécessaire pour que les LLMs comprennent vos données.", + "documentProcessingPriority": "Priorité de Traitement de Document", + "documentProcessingPriorityTip": "Pour une priorité de traitement des documents plus élevée, veuillez mettre à niveau votre plan.", + "documentProcessingPriorityUpgrade": "Traitez plus de données avec une précision plus élevée à des vitesses plus rapides.", + "priority": { + "standard": "Standard", + "priority": "Priorité", + "top-priority": "Priorité Maximale" + }, + "logsHistory": "Historique des logs", + "customTools": "Outils personnalisés", + "unavailable": "Indisponible", + "days": "jours", + "unlimited": "Illimité", + "support": "Assistance", + "supportItems": { + "communityForums": "Forums communautaires", + "emailSupport": "Support par email", + "priorityEmail": "Support prioritaire par email et chat", + "logoChange": "Changement de logo", + "SSOAuthentication": "Authentification SSO", + "personalizedSupport": "Soutien personnalisé", + "dedicatedAPISupport": "Support dédié pour l'API", + "customIntegration": "Intégration personnalisée et support", + "ragAPIRequest": "Requêtes API RAG", + "bulkUpload": "Téléchargement en masse de documents", + "agentMode": "Mode Agent", + "workflow": "Flux de travail", + "llmLoadingBalancingTooltip": "Ajoutez plusieurs clés API aux modèles, en contournant efficacement les limites de débit de l’API.", + "llmLoadingBalancing": "Équilibrage de charge LLM" + }, + "comingSoon": "Bientôt disponible", + "member": "Membre", + "memberAfter": "Membre", + "messageRequest": { + "title": "Crédits de message", + "tooltip": "Quotas d'invocation de messages pour divers plans utilisant les modèles OpenAI (sauf gpt4). Les messages dépassant la limite utiliseront votre clé API OpenAI.", + "titlePerMonth": "{{count,number}} messages/mois" + }, + "annotatedResponse": { + "title": "Limites de quota d'annotation", + "tooltip": "L'édition manuelle et l'annotation des réponses fournissent des capacités de réponse aux questions de haute qualité personnalisables pour les applications. (Applicable uniquement dans les applications de chat)" + }, + "ragAPIRequestTooltip": "Fait référence au nombre d'appels API invoquant uniquement les capacités de traitement de la base de connaissances de Dify.", + "receiptInfo": "Seuls le propriétaire de l'équipe et l'administrateur de l'équipe peuvent s'abonner et consulter les informations de facturation", + "annotationQuota": "Quota d’annotation", + "apiRateLimitUnit": "{{count,number}}", + "priceTip": "par espace de travail/", + "freeTrialTipSuffix": "Aucune carte de crédit requise", + "teamWorkspace": "{{count,number}} Espace de travail d'équipe", + "teamMember_one": "{{count,number}} membre de l'équipe", + "annualBilling": "Facturation Annuelle", + "self": "Auto-hébergé", + "documentsRequestQuota": "{{count,number}}/min Limite de Fréquence de Demande de Connaissance", + "teamMember_other": "{{count,number}} Membres de l'équipe", + "getStarted": "Commencer", + "unlimitedApiRate": "Pas de limite de taux d'API", + "cloud": "Service cloud", + "documentsTooltip": "Quota sur le nombre de documents importés à partir de la source de données de connaissance.", + "freeTrialTip": "essai gratuit de 200 appels OpenAI.", + "freeTrialTipPrefix": "Inscrivez-vous et obtenez un", + "apiRateLimit": "Limite de taux de l'API", + "comparePlanAndFeatures": "Comparer les plans et les fonctionnalités", + "apiRateLimitTooltip": "La limite de taux de l'API s'applique à toutes les demandes effectuées via l'API Dify, y compris la génération de texte, les conversations de chat, les exécutions de flux de travail et le traitement de documents.", + "documents": "{{count,number}} Documents de connaissance", + "documentsRequestQuotaTooltip": "Spécifie le nombre total d'actions qu'un espace de travail peut effectuer par minute dans la base de connaissances, y compris la création, la suppression, les mises à jour de jeux de données, le téléchargement de documents, les modifications, l'archivage et les requêtes de la base de connaissances. Ce paramètre est utilisé pour évaluer les performances des requêtes de la base de connaissances. Par exemple, si un utilisateur de Sandbox effectue 10 tests de validité consécutifs en une minute, son espace de travail sera temporairement restreint dans l'exécution des actions suivantes pendant la minute suivante : création, suppression, mises à jour de jeux de données, et téléchargements ou modifications de documents.", + "startBuilding": "Commencez à construire", + "taxTip": "Tous les prix des abonnements (mensuels/annuels) s'entendent hors taxes applicables (par exemple, TVA, taxe de vente).", + "taxTipSecond": "Si votre région n'a pas de exigences fiscales applicables, aucune taxe n'apparaîtra lors de votre paiement et vous ne serez pas facturé de frais supplémentaires pendant toute la durée de l'abonnement.", + "triggerEvents": { + "unlimited": "Événements Déclencheurs Illimités", + "tooltip": "Le nombre d'événements qui déclenchent automatiquement des flux de travail via des déclencheurs Plugin, Planification ou Webhook.", + "sandbox": "{{count,number}} Déclencher des événements", + "professional": "{{count,number}} Déclenchements par mois" + }, + "workflowExecution": { + "priority": "Exécution du flux de travail prioritaire", + "standard": "Exécution du flux de travail standard", + "tooltip": "Priorité et vitesse de la file d'exécution des flux de travail.", + "faster": "Exécution de flux de travail plus rapide" + }, + "startNodes": { + "unlimited": "Déclencheurs/workflows illimités", + "limited": "Jusqu'à {{count}} déclencheurs/workflow" + }, + "title": { + "plans": "plans", + "description": "Sélectionnez le plan qui correspond le mieux aux besoins de votre équipe." + } + }, + "plans": { + "sandbox": { + "name": "Bac à sable", + "description": "200 essais gratuits de GPT", + "for": "Essai gratuit des fonctionnalités principales" + }, + "professional": { + "name": "Professionnel", + "description": "Pour les individus et les petites équipes afin de débloquer plus de puissance à un prix abordable.", + "for": "Pour les développeurs indépendants/petites équipes" + }, + "team": { + "name": "Équipe", + "description": "Collaborez sans limites et profitez d'une performance de premier ordre.", + "for": "Pour les équipes de taille moyenne" + }, + "enterprise": { + "name": "Entreprise", + "description": "Obtenez toutes les capacités et le support pour les systèmes à grande échelle et critiques pour la mission.", + "includesTitle": "Tout ce qui est inclus dans le plan Équipe, plus :", + "features": [ + "Solutions de déploiement évolutives de niveau entreprise", + "Autorisation de licence commerciale", + "Fonctionnalités exclusives pour les entreprises", + "Espaces de travail multiples et gestion d'entreprise", + "SSO", + "Accords sur les SLA négociés par les partenaires Dify", + "Sécurité et contrôles avancés", + "Mises à jour et maintenance par Dify Officiellement", + "Assistance technique professionnelle" + ], + "for": "Pour les équipes de grande taille", + "btnText": "Contacter les ventes", + "priceTip": "Facturation Annuel Seulement", + "price": "Personnalisé" + }, + "community": { + "features": [ + "Toutes les fonctionnalités principales publiées dans le dépôt public", + "Espace de travail unique", + "Conforme à la licence open source Dify" + ], + "name": "Communauté", + "btnText": "Commencez avec la communauté", + "for": "Pour les utilisateurs individuels, les petites équipes ou les projets non commerciaux", + "includesTitle": "Fonctionnalités gratuites :", + "price": "Gratuit", + "description": "Pour les utilisateurs individuels, les petites équipes ou les projets non commerciaux" + }, + "premium": { + "features": [ + "Fiabilité autonome par divers fournisseurs de cloud", + "Espace de travail unique", + "Personnalisation du logo et de l'image de marque de l'application web", + "Assistance prioritaire par e-mail et chat" + ], + "for": "Pour les organisations et les équipes de taille moyenne", + "includesTitle": "Tout de la communauté, en plus :", + "name": "Premium", + "description": "Pour les organisations et les équipes de taille moyenne", + "comingSoon": "Support de Microsoft Azure et Google Cloud bientôt disponible", + "btnText": "Obtenez Premium dans", + "price": "Scalable", + "priceTip": "Basé sur le marché des nuages" + } + }, + "vectorSpace": { + "fullTip": "L'espace vectoriel est plein.", + "fullSolution": "Mettez à niveau votre plan pour obtenir plus d'espace." + }, + "apps": { + "fullTip2": "Limite de plan atteinte", + "contactUs": "Contactez-nous", + "fullTip1": "Mettez à niveau pour créer plus d'applications", + "fullTip2des": "Il est recommandé de nettoyer les applications inactives pour libérer de l'espace d'utilisation, ou de nous contacter.", + "fullTip1des": "Vous avez atteint la limite de création d'applications avec ce plan." + }, + "annotatedResponse": { + "fullTipLine1": "Mettez à niveau votre plan pour", + "fullTipLine2": "annotez plus de conversations.", + "quotaTitle": "Quota de Réponse d'Annotation" + }, + "usagePage": { + "buildApps": "Construire des applications", + "vectorSpace": "Stockage de données de connaissance", + "vectorSpaceTooltip": "Les documents avec le mode d'indexation de haute qualité utiliseront des ressources de stockage de données de connaissance. Lorsque le stockage de données de connaissance atteindra la limite, de nouveaux documents ne pourront pas être téléchargés.", + "teamMembers": "Membres de l'équipe", + "annotationQuota": "Quota d'annotation", + "documentsUploadQuota": "Quota de téléchargement de documents", + "perMonth": "par mois", + "triggerEvents": "Événements déclencheurs", + "resetsIn": "Réinitialisations dans {{count,number}} jours" + }, + "teamMembers": "Membres de l'équipe", + "triggerLimitModal": { + "upgrade": "Mettre à niveau", + "usageTitle": "ÉVÉNEMENTS DÉCLENCHEURS", + "description": "Vous avez atteint la limite des déclencheurs d'événements de flux de travail pour ce plan.", + "dismiss": "Fermer", + "title": "Mettez à niveau pour débloquer plus d'événements déclencheurs" + }, + "viewBillingTitle": "Facturation et abonnements", + "viewBillingDescription": "Gérer les méthodes de paiement, les factures et les modifications d'abonnement", + "viewBillingAction": "Gérer", + "upgrade": { + "uploadMultiplePages": { + "title": "Passez à la version supérieure pour télécharger plusieurs documents à la fois", + "description": "Vous avez atteint la limite de téléchargement — un seul document peut être sélectionné et téléchargé à la fois avec votre abonnement actuel." + }, + "uploadMultipleFiles": { + "title": "Passez à la version supérieure pour débloquer le téléchargement de documents en lot", + "description": "Téléchargez plusieurs documents à la fois pour gagner du temps et améliorer l'efficacité." + }, + "addChunks": { + "title": "Mettez à niveau pour continuer à ajouter des morceaux", + "description": "Vous avez atteint la limite d'ajout de morceaux pour ce plan." + } + } +} diff --git a/web/i18n/fr-FR/billing.ts b/web/i18n/fr-FR/billing.ts deleted file mode 100644 index 7e163df86f..0000000000 --- a/web/i18n/fr-FR/billing.ts +++ /dev/null @@ -1,221 +0,0 @@ -const translation = { - currentPlan: 'Plan Actuel', - upgradeBtn: { - plain: 'Mettre à jour le plan', - encourage: 'Mettre à niveau maintenant', - encourageShort: 'Mise à niveau', - }, - viewBilling: 'Gérer la facturation et les abonnements', - buyPermissionDeniedTip: 'Veuillez contacter votre administrateur d\'entreprise pour vous abonner', - plansCommon: { - yearlyTip: 'Obtenez 2 mois gratuitement en vous abonnant annuellement !', - mostPopular: 'Le Plus Populaire', - planRange: { - monthly: 'Mensuel', - yearly: 'Annuel', - }, - month: 'mois', - year: 'année', - save: 'Enregistrer', - free: 'Gratuit', - currentPlan: 'Plan Actuel', - contractSales: 'Contactez les ventes', - contractOwner: 'Contacter le chef d\'équipe', - startForFree: 'Commencez gratuitement', - contactSales: 'Contacter les ventes', - talkToSales: 'Parlez aux Ventes', - modelProviders: 'Fournisseurs de Modèles', - buildApps: 'Construire des Applications', - vectorSpace: 'Espace Vectoriel', - vectorSpaceTooltip: 'L\'espace vectoriel est le système de mémoire à long terme nécessaire pour que les LLMs comprennent vos données.', - documentProcessingPriority: 'Priorité de Traitement de Document', - documentProcessingPriorityTip: 'Pour une priorité de traitement des documents plus élevée, veuillez mettre à niveau votre plan.', - documentProcessingPriorityUpgrade: 'Traitez plus de données avec une précision plus élevée à des vitesses plus rapides.', - priority: { - 'standard': 'Standard', - 'priority': 'Priorité', - 'top-priority': 'Priorité Maximale', - }, - logsHistory: 'Historique des logs', - customTools: 'Outils personnalisés', - unavailable: 'Indisponible', - days: 'jours', - unlimited: 'Illimité', - support: 'Assistance', - supportItems: { - communityForums: 'Forums communautaires', - emailSupport: 'Support par email', - priorityEmail: 'Support prioritaire par email et chat', - logoChange: 'Changement de logo', - SSOAuthentication: 'Authentification SSO', - personalizedSupport: 'Soutien personnalisé', - dedicatedAPISupport: 'Support dédié pour l\'API', - customIntegration: 'Intégration personnalisée et support', - ragAPIRequest: 'Requêtes API RAG', - bulkUpload: 'Téléchargement en masse de documents', - agentMode: 'Mode Agent', - workflow: 'Flux de travail', - llmLoadingBalancingTooltip: 'Ajoutez plusieurs clés API aux modèles, en contournant efficacement les limites de débit de l’API.', - llmLoadingBalancing: 'Équilibrage de charge LLM', - }, - comingSoon: 'Bientôt disponible', - member: 'Membre', - memberAfter: 'Membre', - messageRequest: { - title: 'Crédits de message', - tooltip: 'Quotas d\'invocation de messages pour divers plans utilisant les modèles OpenAI (sauf gpt4). Les messages dépassant la limite utiliseront votre clé API OpenAI.', - titlePerMonth: '{{count,number}} messages/mois', - }, - annotatedResponse: { - title: 'Limites de quota d\'annotation', - tooltip: 'L\'édition manuelle et l\'annotation des réponses fournissent des capacités de réponse aux questions de haute qualité personnalisables pour les applications. (Applicable uniquement dans les applications de chat)', - }, - ragAPIRequestTooltip: 'Fait référence au nombre d\'appels API invoquant uniquement les capacités de traitement de la base de connaissances de Dify.', - receiptInfo: 'Seuls le propriétaire de l\'équipe et l\'administrateur de l\'équipe peuvent s\'abonner et consulter les informations de facturation', - annotationQuota: 'Quota d’annotation', - apiRateLimitUnit: '{{count,number}}', - priceTip: 'par espace de travail/', - freeTrialTipSuffix: 'Aucune carte de crédit requise', - teamWorkspace: '{{count,number}} Espace de travail d\'équipe', - teamMember_one: '{{count,number}} membre de l\'équipe', - annualBilling: 'Facturation Annuelle', - self: 'Auto-hébergé', - documentsRequestQuota: '{{count,number}}/min Limite de Fréquence de Demande de Connaissance', - teamMember_other: '{{count,number}} Membres de l\'équipe', - getStarted: 'Commencer', - unlimitedApiRate: 'Pas de limite de taux d\'API', - cloud: 'Service cloud', - documentsTooltip: 'Quota sur le nombre de documents importés à partir de la source de données de connaissance.', - freeTrialTip: 'essai gratuit de 200 appels OpenAI.', - freeTrialTipPrefix: 'Inscrivez-vous et obtenez un', - apiRateLimit: 'Limite de taux de l\'API', - comparePlanAndFeatures: 'Comparer les plans et les fonctionnalités', - apiRateLimitTooltip: 'La limite de taux de l\'API s\'applique à toutes les demandes effectuées via l\'API Dify, y compris la génération de texte, les conversations de chat, les exécutions de flux de travail et le traitement de documents.', - documents: '{{count,number}} Documents de connaissance', - documentsRequestQuotaTooltip: 'Spécifie le nombre total d\'actions qu\'un espace de travail peut effectuer par minute dans la base de connaissances, y compris la création, la suppression, les mises à jour de jeux de données, le téléchargement de documents, les modifications, l\'archivage et les requêtes de la base de connaissances. Ce paramètre est utilisé pour évaluer les performances des requêtes de la base de connaissances. Par exemple, si un utilisateur de Sandbox effectue 10 tests de validité consécutifs en une minute, son espace de travail sera temporairement restreint dans l\'exécution des actions suivantes pendant la minute suivante : création, suppression, mises à jour de jeux de données, et téléchargements ou modifications de documents.', - startBuilding: 'Commencez à construire', - taxTip: 'Tous les prix des abonnements (mensuels/annuels) s\'entendent hors taxes applicables (par exemple, TVA, taxe de vente).', - taxTipSecond: 'Si votre région n\'a pas de exigences fiscales applicables, aucune taxe n\'apparaîtra lors de votre paiement et vous ne serez pas facturé de frais supplémentaires pendant toute la durée de l\'abonnement.', - triggerEvents: { - unlimited: 'Événements Déclencheurs Illimités', - tooltip: 'Le nombre d\'événements qui déclenchent automatiquement des flux de travail via des déclencheurs Plugin, Planification ou Webhook.', - sandbox: '{{count,number}} Déclencher des événements', - professional: '{{count,number}} Déclenchements par mois', - }, - workflowExecution: { - priority: 'Exécution du flux de travail prioritaire', - standard: 'Exécution du flux de travail standard', - tooltip: 'Priorité et vitesse de la file d\'exécution des flux de travail.', - faster: 'Exécution de flux de travail plus rapide', - }, - startNodes: { - unlimited: 'Déclencheurs/workflows illimités', - limited: 'Jusqu\'à {{count}} déclencheurs/workflow', - }, - title: { - plans: 'plans', - description: 'Sélectionnez le plan qui correspond le mieux aux besoins de votre équipe.', - }, - }, - plans: { - sandbox: { - name: 'Bac à sable', - description: '200 essais gratuits de GPT', - for: 'Essai gratuit des fonctionnalités principales', - }, - professional: { - name: 'Professionnel', - description: 'Pour les individus et les petites équipes afin de débloquer plus de puissance à un prix abordable.', - for: 'Pour les développeurs indépendants/petites équipes', - }, - team: { - name: 'Équipe', - description: 'Collaborez sans limites et profitez d\'une performance de premier ordre.', - for: 'Pour les équipes de taille moyenne', - }, - enterprise: { - name: 'Entreprise', - description: 'Obtenez toutes les capacités et le support pour les systèmes à grande échelle et critiques pour la mission.', - includesTitle: 'Tout ce qui est inclus dans le plan Équipe, plus :', - features: ['Solutions de déploiement évolutives de niveau entreprise', 'Autorisation de licence commerciale', 'Fonctionnalités exclusives pour les entreprises', 'Espaces de travail multiples et gestion d\'entreprise', 'SSO', 'Accords sur les SLA négociés par les partenaires Dify', 'Sécurité et contrôles avancés', 'Mises à jour et maintenance par Dify Officiellement', 'Assistance technique professionnelle'], - for: 'Pour les équipes de grande taille', - btnText: 'Contacter les ventes', - priceTip: 'Facturation Annuel Seulement', - price: 'Personnalisé', - }, - community: { - features: ['Toutes les fonctionnalités principales publiées dans le dépôt public', 'Espace de travail unique', 'Conforme à la licence open source Dify'], - name: 'Communauté', - btnText: 'Commencez avec la communauté', - for: 'Pour les utilisateurs individuels, les petites équipes ou les projets non commerciaux', - includesTitle: 'Fonctionnalités gratuites :', - price: 'Gratuit', - description: 'Pour les utilisateurs individuels, les petites équipes ou les projets non commerciaux', - }, - premium: { - features: ['Fiabilité autonome par divers fournisseurs de cloud', 'Espace de travail unique', 'Personnalisation du logo et de l\'image de marque de l\'application web', 'Assistance prioritaire par e-mail et chat'], - for: 'Pour les organisations et les équipes de taille moyenne', - includesTitle: 'Tout de la communauté, en plus :', - name: 'Premium', - description: 'Pour les organisations et les équipes de taille moyenne', - comingSoon: 'Support de Microsoft Azure et Google Cloud bientôt disponible', - btnText: 'Obtenez Premium dans', - price: 'Scalable', - priceTip: 'Basé sur le marché des nuages', - }, - }, - vectorSpace: { - fullTip: 'L\'espace vectoriel est plein.', - fullSolution: 'Mettez à niveau votre plan pour obtenir plus d\'espace.', - }, - apps: { - fullTip2: 'Limite de plan atteinte', - contactUs: 'Contactez-nous', - fullTip1: 'Mettez à niveau pour créer plus d\'applications', - fullTip2des: 'Il est recommandé de nettoyer les applications inactives pour libérer de l\'espace d\'utilisation, ou de nous contacter.', - fullTip1des: 'Vous avez atteint la limite de création d\'applications avec ce plan.', - }, - annotatedResponse: { - fullTipLine1: 'Mettez à niveau votre plan pour', - fullTipLine2: 'annotez plus de conversations.', - quotaTitle: 'Quota de Réponse d\'Annotation', - }, - usagePage: { - buildApps: 'Construire des applications', - vectorSpace: 'Stockage de données de connaissance', - vectorSpaceTooltip: 'Les documents avec le mode d\'indexation de haute qualité utiliseront des ressources de stockage de données de connaissance. Lorsque le stockage de données de connaissance atteindra la limite, de nouveaux documents ne pourront pas être téléchargés.', - teamMembers: 'Membres de l\'équipe', - annotationQuota: 'Quota d\'annotation', - documentsUploadQuota: 'Quota de téléchargement de documents', - perMonth: 'par mois', - triggerEvents: 'Événements déclencheurs', - resetsIn: 'Réinitialisations dans {{count,number}} jours', - }, - teamMembers: 'Membres de l\'équipe', - triggerLimitModal: { - upgrade: 'Mettre à niveau', - usageTitle: 'ÉVÉNEMENTS DÉCLENCHEURS', - description: 'Vous avez atteint la limite des déclencheurs d\'événements de flux de travail pour ce plan.', - dismiss: 'Fermer', - title: 'Mettez à niveau pour débloquer plus d\'événements déclencheurs', - }, - viewBillingTitle: 'Facturation et abonnements', - viewBillingDescription: 'Gérer les méthodes de paiement, les factures et les modifications d\'abonnement', - viewBillingAction: 'Gérer', - upgrade: { - uploadMultiplePages: { - title: 'Passez à la version supérieure pour télécharger plusieurs documents à la fois', - description: 'Vous avez atteint la limite de téléchargement — un seul document peut être sélectionné et téléchargé à la fois avec votre abonnement actuel.', - }, - uploadMultipleFiles: { - title: 'Passez à la version supérieure pour débloquer le téléchargement de documents en lot', - description: 'Téléchargez plusieurs documents à la fois pour gagner du temps et améliorer l\'efficacité.', - }, - addChunks: { - title: 'Mettez à niveau pour continuer à ajouter des morceaux', - description: 'Vous avez atteint la limite d\'ajout de morceaux pour ce plan.', - }, - }, -} - -export default translation diff --git a/web/i18n/fr-FR/common.json b/web/i18n/fr-FR/common.json new file mode 100644 index 0000000000..001646688d --- /dev/null +++ b/web/i18n/fr-FR/common.json @@ -0,0 +1,785 @@ +{ + "api": { + "success": "Succès", + "actionSuccess": "Action réussie", + "saved": "Sauvegardé", + "create": "Créé", + "remove": "Supprimé", + "actionFailed": "Action échouée" + }, + "operation": { + "create": "Créer", + "confirm": "Confirmer", + "cancel": "Annuler", + "clear": "Effacer", + "save": "Enregistrer", + "saveAndEnable": "Enregistrer et Activer", + "edit": "Modifier", + "add": "Ajouter", + "added": "Ajouté", + "refresh": "Redémarrer", + "reset": "Réinitialiser", + "search": "Recherche", + "change": "Changer", + "remove": "Supprimer", + "send": "Envoyer", + "copy": "Copier", + "lineBreak": "Saut de ligne", + "sure": "Je suis sûr", + "download": "Télécharger", + "delete": "Supprimer", + "settings": "Paramètres", + "setup": "Configuration", + "getForFree": "Obtenez gratuitement", + "reload": "Recharger", + "ok": "D'accord", + "log": "Journal", + "learnMore": "En savoir plus", + "params": "Paramètres", + "duplicate": "Dupliquer", + "rename": "Renommer", + "audioSourceUnavailable": "AudioSource n’est pas disponible", + "zoomOut": "Zoom arrière", + "zoomIn": "Zoom avant", + "openInNewTab": "Ouvrir dans un nouvel onglet", + "copyImage": "Copier l’image", + "view": "Vue", + "viewMore": "VOIR PLUS", + "close": "Fermer", + "saveAndRegenerate": "Enregistrer et régénérer des morceaux enfants", + "regenerate": "Régénérer", + "submit": "Envoyer", + "skip": "Bateau", + "imageCopied": "Image copied", + "deleteApp": "Supprimer l’application", + "viewDetails": "Voir les détails", + "copied": "Copied", + "in": "dans", + "format": "Format", + "downloadFailed": "Échec du téléchargement. Veuillez réessayer plus tard.", + "more": "Plus", + "downloadSuccess": "Téléchargement terminé.", + "deSelectAll": "Désélectionner tout", + "selectAll": "Sélectionner tout", + "config": "Config", + "no": "Non", + "confirmAction": "Veuillez confirmer votre action.", + "deleteConfirmTitle": "Supprimer ?", + "yes": "Oui", + "noSearchResults": "Aucun {{content}} n'a été trouvé", + "resetKeywords": "Réinitialiser les mots-clés", + "selectCount": "{{count}} Sélectionné", + "searchCount": "Trouver {{count}} {{content}}", + "noSearchCount": "0 {{content}}", + "now": "Maintenant" + }, + "placeholder": { + "input": "Veuillez entrer", + "select": "Veuillez sélectionner", + "search": "Rechercher..." + }, + "voice": { + "language": { + "zhHans": "Chinois", + "zhHant": "Chinois (traditionnel)", + "enUS": "Anglais", + "deDE": "Allemand", + "frFR": "Français", + "esES": "Espagnol", + "itIT": "Italien", + "thTH": "Thaï", + "idID": "Indonésien", + "jaJP": "Japonais", + "koKR": "Coréen", + "ptBR": "Portugais", + "ruRU": "Russe", + "ukUA": "Ukrainien", + "viVN": "Vietnamien", + "plPL": "Polonais", + "roRO": "Roumain", + "hiIN": "Hindi", + "trTR": "Turc", + "faIR": "Persan", + "slSI": "Slovène", + "arTN": "Arabe tunisien" + } + }, + "unit": { + "char": "caractères" + }, + "actionMsg": { + "noModification": "Aucune modification pour le moment.", + "modifiedSuccessfully": "Modifié avec succès", + "modifiedUnsuccessfully": "Modifié sans succès", + "copySuccessfully": "Copié avec succès", + "paySucceeded": "Paiement réussi", + "payCancelled": "Paiement annulé", + "generatedSuccessfully": "Généré avec succès", + "generatedUnsuccessfully": "Généré sans succès" + }, + "model": { + "params": { + "temperature": "Température", + "temperatureTip": "Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.", + "top_p": "Haut P", + "top_pTip": "Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered.", + "presence_penalty": "Pénalité de présence", + "presence_penaltyTip": "Combien pénaliser les nouveaux tokens en fonction de leur apparition dans le texte jusqu'à présent. Augmente la probabilité du modèle de parler de nouveaux sujets.", + "frequency_penalty": "Pénalité de fréquence", + "frequency_penaltyTip": "Combien pénaliser les nouveaux tokens en fonction de leur fréquence existante dans le texte jusqu'à présent. Réduit la probabilité du modèle de répéter la même ligne mot pour mot.", + "max_tokens": "Max jeton", + "max_tokensTip": "Utilisé pour limiter la longueur maximale de la réponse, en jetons. \nDes valeurs plus grandes peuvent limiter l'espace restant pour les mots de prompt, les journaux de chat, et la Connaissance. \nIl est recommandé de le régler en dessous des", + "maxTokenSettingTip": "Votre réglage de max token est élevé, limitant potentiellement l'espace pour les prompts, les requêtes et les données. Envisagez de le définir en dessous de 2/3.", + "setToCurrentModelMaxTokenTip": "Le max token est mis à jour à 80% du max token du modèle actuel {{maxToken}}.", + "stop_sequences": "Séquences d'arrêt", + "stop_sequencesTip": "Jusqu'à quatre séquences où l'API arrêtera de générer d'autres tokens. Le texte renvoyé ne contiendra pas la séquence d'arrêt.", + "stop_sequencesPlaceholder": "Entrez la séquence et appuyez sur Tab" + }, + "tone": { + "Creative": "Créatif", + "Balanced": "Équilibré", + "Precise": "Précis", + "Custom": "Personnalisé" + }, + "addMoreModel": "Allez dans les paramètres pour ajouter plus de modèles", + "capabilities": "Capacités multimodales", + "settingsLink": "Paramètres du fournisseur de modèles" + }, + "menus": { + "status": "bêta", + "explore": "Explorer", + "apps": "Studio", + "plugins": "Plugins", + "pluginsTips": "Intégrez des plugins tiers ou créez des AI-Plugins compatibles avec ChatGPT.", + "datasets": "Connaissance", + "datasetsTips": "COMING SOON: Import your own text data or write data in real-time via Webhook for LLM context enhancement.", + "newApp": "Nouvelle Application", + "newDataset": "Créer des Connaissances", + "tools": "Outils", + "exploreMarketplace": "Explorer Marketplace", + "appDetail": "Détails de l'application", + "account": "Compte" + }, + "userProfile": { + "settings": "Paramètres", + "emailSupport": "Support par courriel", + "workspace": "Espace de travail", + "createWorkspace": "Créer un Espace de Travail", + "helpCenter": "Aide", + "roadmap": "Feuille de route", + "community": "Communauté", + "about": "À propos", + "logout": "Se déconnecter", + "support": "Soutien", + "github": "GitHub", + "compliance": "Conformité", + "contactUs": "Contactez-nous", + "forum": "Forum" + }, + "settings": { + "accountGroup": "COMPTE", + "workplaceGroup": "ESPACE DE TRAVAIL", + "account": "Mon compte", + "members": "Membres", + "billing": "Facturation", + "integrations": "Intégrations", + "language": "Langue", + "provider": "Fournisseur de Modèle", + "dataSource": "Source de Données", + "plugin": "Plugins", + "apiBasedExtension": "Extension API", + "generalGroup": "GÉNÉRALITÉS" + }, + "account": { + "avatar": "Avatar", + "name": "Nom", + "email": "Courriel", + "password": "Mot de passe", + "passwordTip": "Vous pouvez définir un mot de passe permanent si vous ne souhaitez pas utiliser des codes de connexion temporaires.", + "setPassword": "Définir un mot de passe", + "resetPassword": "Réinitialiser le mot de passe", + "currentPassword": "Mot de passe actuel", + "newPassword": "Nouveau mot de passe", + "confirmPassword": "Confirmer le mot de passe", + "notEqual": "Les deux mots de passe sont différents.", + "langGeniusAccount": "Compte Dify", + "langGeniusAccountTip": "Votre compte Dify et les données utilisateur associées.", + "editName": "Modifier le nom", + "showAppLength": "Afficher {{length}} applications", + "delete": "Supprimer le compte", + "deleteTip": "La suppression de votre compte effacera définitivement toutes vos données et elles ne pourront pas être récupérées.", + "myAccount": "Mon compte", + "account": "Compte", + "studio": "Dify Studio", + "deletePrivacyLinkTip": "Pour plus d’informations sur la façon dont nous traitons vos données, veuillez consulter notre", + "deletePrivacyLink": "Politique de confidentialité.", + "deleteSuccessTip": "Votre compte a besoin de temps pour terminer la suppression. Nous vous enverrons un e-mail lorsque tout sera terminé.", + "deleteLabel": "Pour confirmer, veuillez saisir votre adresse e-mail ci-dessous", + "deletePlaceholder": "Veuillez entrer votre adresse e-mail", + "sendVerificationButton": "Envoyer le code de vérification", + "verificationLabel": "Code de vérification", + "verificationPlaceholder": "Collez le code à 6 chiffres", + "permanentlyDeleteButton": "Supprimer définitivement le compte", + "feedbackTitle": "Rétroaction", + "feedbackLabel": "Dites-nous pourquoi vous avez supprimé votre compte ?", + "feedbackPlaceholder": "Optionnel", + "workspaceName": "Nom de l'espace de travail", + "workspaceIcon": "Icône de l'espace de travail", + "editWorkspaceInfo": "Modifier les informations de l'espace de travail", + "changeEmail": { + "codePlaceholder": "Collez le code à 6 chiffres", + "emailLabel": "Nouveau courriel", + "newEmail": "Créez une nouvelle adresse email", + "verifyNew": "Vérifiez votre nouvel e-mail", + "existingEmail": "Un utilisateur avec cet email existe déjà.", + "title": "Changer l'email", + "resendTip": "Vous n'avez pas reçu de code ?", + "emailPlaceholder": "Entrez un nouvel e-mail", + "sendVerifyCode": "Envoyer le code de vérification", + "continue": "Continuer", + "changeTo": "Changer pour {{email}}", + "authTip": "Une fois que votre email est changé, les comptes Google ou GitHub liés à votre ancien email ne pourront plus se connecter à ce compte.", + "content3": "Entrez un nouvel e-mail et nous vous enverrons un code de vérification.", + "resendCount": "Renvoyer dans {{count}}s", + "content4": "Nous vous avons juste envoyé un code de vérification temporaire à {{email}}.", + "resend": "Renvoyer", + "verifyEmail": "Vérifiez votre adresse e-mail actuelle", + "content2": "Votre adresse e-mail actuelle est {{email}}. Un code de vérification a été envoyé à cette adresse e-mail.", + "codeLabel": "Code de vérification", + "content1": "Si vous continuez, nous enverrons un code de vérification à {{email}} pour une nouvelle authentification.", + "unAvailableEmail": "Cet e-mail est temporairement indisponible." + } + }, + "members": { + "team": "Équipe", + "invite": "Ajouter", + "name": "NOM", + "lastActive": "DERNIÈRE ACTIVITÉ", + "role": "RÔLES", + "pending": "En attente...", + "owner": "Propriétaire", + "admin": "Administrateur", + "adminTip": "Peut construire des applications & gérer les paramètres de l'équipe", + "normal": "Normal", + "normalTip": "Peut seulement utiliser des applications, ne peut pas construire des applications", + "editor": "Éditeur", + "editorTip": "Peut construire des applications, mais ne peut pas gérer les paramètres de l'équipe", + "inviteTeamMember": "Ajouter un membre de l'équipe", + "inviteTeamMemberTip": "Ils peuvent accéder directement à vos données d'équipe après s'être connectés.", + "emailNotSetup": "Le serveur de messagerie n'est pas configuré, les e-mails d'invitation ne peuvent donc pas être envoyés. Veuillez informer les utilisateurs du lien d'invitation qui sera émis après l'invitation.", + "email": "Courrier électronique", + "emailInvalid": "Format de courriel invalide", + "emailPlaceholder": "Veuillez entrer des emails", + "sendInvite": "Envoyer une invitation", + "invitedAsRole": "Invité en tant qu'utilisateur {{role}}", + "invitationSent": "Invitation envoyée", + "invitationSentTip": "Invitation envoyée, et ils peuvent se connecter à Dify pour accéder aux données de votre équipe.", + "invitationLink": "Lien d'invitation", + "failedInvitationEmails": "Les utilisateurs ci-dessous n'ont pas été invités avec succès", + "ok": "D'accord", + "removeFromTeam": "Retirer de l'équipe", + "removeFromTeamTip": "Supprimera l'accès de l'équipe", + "setAdmin": "Définir comme administrateur", + "setMember": "Définir en tant que membre ordinaire", + "setEditor": "Définir en tant qu'éditeur", + "disInvite": "Annuler l'invitation", + "deleteMember": "Supprimer Membre", + "you": "(Vous)", + "builder": "Constructeur", + "datasetOperatorTip": "Seul peut gérer la base de connaissances", + "datasetOperator": "Administrateur des connaissances", + "setBuilder": "Définir en tant que constructeur", + "builderTip": "Peut créer et modifier ses propres applications", + "transferModal": { + "resend": "Renvoyer", + "continue": "Continuer", + "verifyEmail": "Vérifiez votre adresse e-mail actuelle", + "resendCount": "Renvoyer dans {{count}}s", + "verifyContent2": "Nous enverrons un code de vérification temporaire à cet email pour la ré-authentification.", + "codePlaceholder": "Collez le code à 6 chiffres", + "transfer": "Transférer la propriété de l'espace de travail", + "sendVerifyCode": "Envoyer le code de vérification", + "title": "Transférer la propriété de l'espace de travail", + "codeLabel": "Code de vérification", + "transferLabel": "Transférer la propriété de l'espace de travail à", + "verifyContent": "Votre adresse e-mail actuelle est {{email}}.", + "transferPlaceholder": "Sélectionnez un membre de l'espace de travail…", + "warningTip": "Vous deviendrez membre administrateur, et le nouveau propriétaire aura le contrôle total.", + "resendTip": "Vous n'avez pas reçu de code ?", + "sendTip": "Si vous continuez, nous enverrons un code de vérification à {{email}} pour la ré-authentification.", + "warning": "Vous êtes sur le point de transférer la propriété de « {{workspace}} ». Cela prend effet immédiatement et ne peut pas être annulé." + }, + "transferOwnership": "Transférer la propriété" + }, + "integrations": { + "connected": "Connecté", + "google": "Google", + "googleAccount": "Connectez-vous avec un compte Google", + "github": "GitHub", + "githubAccount": "Connectez-vous avec un compte GitHub", + "connect": "Connecter" + }, + "language": { + "displayLanguage": "Langue d'affichage", + "timezone": "Fuseau horaire" + }, + "provider": { + "apiKey": "Clé API", + "enterYourKey": "Entrez votre clé API ici", + "invalidKey": "Clé API OpenAI invalide", + "validatedError": "Validation failed: ", + "validating": "Validation de la clé...", + "saveFailed": "La sauvegarde de la clé API a échoué", + "apiKeyExceedBill": "Cette clé API n'a pas de quota disponible, veuillez lire", + "addKey": "Ajouter une clé", + "comingSoon": "Bientôt disponible", + "editKey": "Modifier", + "invalidApiKey": "Clé API invalide", + "azure": { + "apiBase": "Base de l'API", + "apiBasePlaceholder": "L'URL de base de l'API de votre point de terminaison Azure OpenAI.", + "apiKey": "Clé API", + "apiKeyPlaceholder": "Entrez votre clé API ici", + "helpTip": "Apprenez le service OpenAI Azure" + }, + "openaiHosted": { + "openaiHosted": "OpenAI Hébergé", + "onTrial": "EN ESSAI", + "exhausted": "QUOTA ÉPUISÉ", + "desc": "Le service d'hébergement OpenAI fourni par Dify vous permet d'utiliser des modèles tels que GPT-3.5. Avant que votre quota d'essai ne soit épuisé, vous devez configurer d'autres fournisseurs de modèles.", + "callTimes": "Temps d'appel", + "usedUp": "Quota d'essai épuisé. Ajoutez votre propre fournisseur de modèle.", + "useYourModel": "Utilise actuellement son propre fournisseur de modèle.", + "close": "Fermer" + }, + "anthropicHosted": { + "anthropicHosted": "Anthropic Claude", + "onTrial": "EN ESSAI", + "exhausted": "QUOTA ÉPUISÉ", + "desc": "Modèle puissant, qui excelle dans une large gamme de tâches allant du dialogue sophistiqué et de la génération de contenu créatif à l'instruction détaillée.", + "callTimes": "Temps d'appel", + "usedUp": "Quota d'essai épuisé. Ajoutez votre propre fournisseur de modèle.", + "useYourModel": "Utilise actuellement son propre fournisseur de modèle.", + "close": "Fermer", + "trialQuotaTip": "Votre quota d’essai Anthropic expirera le 11/03/2025 et ne sera plus disponible par la suite. Veuillez l’utiliser à temps." + }, + "anthropic": { + "using": "La capacité d'embedding est utilisée", + "enableTip": "Pour activer le modèle Anthropic, vous devez d'abord vous lier à OpenAI ou au service Azure OpenAI.", + "notEnabled": "Non activé", + "keyFrom": "Obtenez votre clé API de chez Anthropic" + }, + "encrypted": { + "front": "Votre clé API sera chiffrée et stockée en utilisant", + "back": "technologie." + } + }, + "modelProvider": { + "notConfigured": "Le modèle du système n'a pas encore été entièrement configuré, et certaines fonctions peuvent être indisponibles.", + "systemModelSettings": "Paramètres du Modèle Système", + "systemModelSettingsLink": "Pourquoi est-il nécessaire de mettre en place un modèle de système ?", + "selectModel": "Sélectionnez votre modèle", + "setupModelFirst": "Veuillez d'abord configurer votre modèle", + "systemReasoningModel": { + "key": "Modèle de Raisonnement du Système", + "tip": "Définissez le modèle d'inférence par défaut à utiliser pour la création d'applications, ainsi que des fonctionnalités telles que la génération de noms de dialogue et la suggestion de la prochaine question utiliseront également le modèle d'inférence par défaut." + }, + "embeddingModel": { + "key": "Modèle d'Embedding", + "tip": "Définissez le modèle par défaut pour le traitement d'incorporation de documents de la Connaissance, à la fois la récupération et l'importation de la Connaissance utilisent ce modèle d'Embedding pour le traitement de vectorisation. Si vous changez de modèle, la dimension du vecteur entre la connaissance importée et la question ne sera pas cohérente, ce qui entraînera un échec de la recherche. Pour éviter les échecs de recherche, veuillez ne pas changer de modèle à volonté.", + "required": "Le modèle d'embedding est requis" + }, + "speechToTextModel": { + "key": "Modèle de Texte-à-Parole", + "tip": "Définissez le modèle par défaut pour l'entrée de texte par la parole dans la conversation." + }, + "ttsModel": { + "key": "Modèle de Texte-à-Parole", + "tip": "Définissez le modèle par défaut pour l'entrée de texte à la parole dans une conversation." + }, + "rerankModel": { + "key": "Modèle de Réorganisation", + "tip": "Le modèle de réorganisation réorganisera la liste des documents candidats en fonction de la correspondance sémantique avec la requête de l'utilisateur, améliorant ainsi les résultats du classement sémantique." + }, + "quota": "Quota", + "searchModel": "Modèle de recherche", + "noModelFound": "Aucun modèle trouvé pour {{model}}", + "models": "Modèles", + "showMoreModelProvider": "Montrer plus de fournisseur de modèle", + "selector": { + "tip": "Ce modèle a été supprimé. Veuillez ajouter un modèle ou sélectionner un autre modèle.", + "emptyTip": "Aucun modèle disponible", + "emptySetting": "Veuillez aller dans les paramètres pour configurer", + "rerankTip": "Veuillez configurer le modèle Rerank" + }, + "card": { + "quota": "QUOTA", + "onTrial": "En Essai", + "paid": "Payé", + "quotaExhausted": "Quota épuisé", + "callTimes": "Temps d'appel", + "tokens": "Jetons", + "buyQuota": "Acheter Quota", + "priorityUse": "Utilisation prioritaire", + "removeKey": "Supprimer la clé API", + "tip": "La priorité sera donnée au quota payant. Le quota d'essai sera utilisé après épuisement du quota payant." + }, + "item": { + "deleteDesc": "{{modelName}} sont utilisés comme modèles de raisonnement système. Certaines fonctions ne seront pas disponibles après la suppression. Veuillez confirmer.", + "freeQuota": "QUOTA GRATUIT" + }, + "addApiKey": "Ajoutez votre clé API", + "invalidApiKey": "Clé API invalide", + "encrypted": { + "front": "Votre clé API sera cryptée et stockée en utilisant", + "back": "technologie." + }, + "freeQuota": { + "howToEarn": "Comment gagner" + }, + "addMoreModelProvider": "AJOUTER PLUS DE FOURNISSEUR DE MODÈLE", + "addModel": "Ajouter un modèle", + "modelsNum": "{{num}} Modèles", + "showModels": "Montrer les modèles", + "showModelsNum": "Afficher {{num}} Modèles", + "collapse": "Effondrer", + "config": "Configuration", + "modelAndParameters": "Modèle et Paramètres", + "model": "Modèle", + "featureSupported": "{{feature}} pris en charge", + "callTimes": "Temps d'appel", + "credits": "Crédits de Messages", + "buyQuota": "Acheter Quota", + "getFreeTokens": "Obtenez des Tokens gratuits", + "priorityUsing": "Prioriser l'utilisation", + "deprecated": "Obsolète", + "confirmDelete": "confirmer la suppression?", + "quotaTip": "Tokens gratuits restants disponibles", + "loadPresets": "Charger les Présents", + "parameters": "PARAMÈTRES", + "modelHasBeenDeprecated": "Ce modèle est obsolète", + "providerManagedDescription": "Utilisez l’ensemble unique d’informations d’identification fourni par le fournisseur de modèle.", + "loadBalancingHeadline": "Équilibrage", + "loadBalancing": "Équilibrage", + "loadBalancingLeastKeyWarning": "Pour activer l’équilibrage de charge, au moins 2 clés doivent être activées.", + "apiKey": "API-KEY", + "apiKeyStatusNormal": "L’état de l’APIKey est normal", + "configLoadBalancing": "Équilibrage de charge de configuration", + "loadBalancingInfo": "Par défaut, l’équilibrage de charge utilise la stratégie Round-robin. Si la limitation de vitesse est déclenchée, une période de recharge de 1 minute sera appliquée.", + "editConfig": "Modifier la configuration", + "addConfig": "Ajouter une configuration", + "apiKeyRateLimit": "La limite de débit a été atteinte, disponible après {{secondes}}s", + "defaultConfig": "Configuration par défaut", + "loadBalancingDescription": "Réduisez la pression grâce à plusieurs ensembles d’informations d’identification.", + "providerManaged": "Géré par le fournisseur", + "upgradeForLoadBalancing": "Mettez à niveau votre plan pour activer l’équilibrage de charge.", + "emptyProviderTitle": "Le fournisseur de modèles n’est pas configuré", + "toBeConfigured": "À configurer", + "configureTip": "Configurer api-key ou ajouter un modèle à utiliser", + "installProvider": "Installer des fournisseurs de modèles", + "discoverMore": "Découvrez-en plus dans", + "emptyProviderTip": "Veuillez d’abord installer un fournisseur de modèles.", + "auth": { + "apiKeyModal": { + "addModel": "Ajouter un modèle", + "title": "Configuration de l'autorisation de clé API", + "desc": "Après avoir configuré les identifiants, tous les membres de l'espace de travail peuvent utiliser ce modèle lors de l'orchestration des applications." + }, + "addModelCredential": "Ajouter des informations d’identification de modèle", + "configModel": "Configurer le modèle", + "addNewModel": "Ajouter un nouveau modèle", + "apiKeys": "Clés API", + "providerManaged": "Fournisseur géré", + "configLoadBalancing": "Configuration de l'équilibrage de charge", + "modelCredentials": "Informations d'identification du modèle", + "addApiKey": "Ajouter une clé API", + "specifyModelCredential": "Spécifiez les identifiants du modèle", + "authorizationError": "Erreur d'autorisation", + "authRemoved": "Autorisation retirée", + "addCredential": "Ajouter un identifiant", + "unAuthorized": "Non autorisé", + "specifyModelCredentialTip": "Utilisez un identifiant de modèle configuré.", + "providerManagedTip": "La configuration actuelle est hébergée par le fournisseur.", + "customModelCredentials": "Informations d’identification du modèle personnalisé", + "manageCredentials": "Gérer les informations d’identification", + "modelCredential": "Références du modèle", + "addModel": "Ajouter un modèle", + "addNewModelCredential": "Ajouter de nouvelles informations d’identification de modèle", + "selectModelCredential": "Sélectionnez les informations d’identification d’un modèle", + "customModelCredentialsDeleteTip": "Les informations d’identification sont en cours d’utilisation et ne peuvent pas être supprimées", + "removeModel": "Supprimer le modèle", + "editModelCredential": "Modifier les informations d’identification du modèle" + }, + "parametersInvalidRemoved": "Certains paramètres sont invalides et ont été supprimés.", + "installDataSourceProvider": "Installer les fournisseurs de sources de données" + }, + "dataSource": { + "add": "Ajouter une source de données", + "connect": "Connecter", + "notion": { + "title": "Notion", + "description": "Utiliser Notion comme source de données pour la Connaissance.", + "connectedWorkspace": "Espace de travail connecté", + "addWorkspace": "Ajouter un espace de travail", + "connected": "Connecté", + "disconnected": "Déconnecté", + "changeAuthorizedPages": "Modifier les pages autorisées", + "pagesAuthorized": "Pages autorisées", + "sync": "Synchronisation", + "remove": "Supprimer", + "selector": { + "pageSelected": "Pages Sélectionnées", + "searchPages": "Rechercher des pages...", + "noSearchResult": "Aucun résultat de recherche", + "addPages": "Ajouter des pages", + "preview": "APERÇU" + }, + "integratedAlert": "Notion est intégré via des identifiants internes, aucune autorisation supplémentaire n'est nécessaire." + }, + "website": { + "configuredCrawlers": "Robots d’exploration configurés", + "with": "Avec", + "inactive": "Inactif", + "active": "Actif", + "title": "Site internet", + "description": "Importez du contenu à partir de sites Web à l’aide du robot d’indexation." + }, + "configure": "Configurer" + }, + "plugin": { + "serpapi": { + "apiKey": "Clé API", + "apiKeyPlaceholder": "Entrez votre clé API", + "keyFrom": "Obtenez votre clé SerpAPI depuis la page de compte SerpAPI" + } + }, + "apiBasedExtension": { + "title": "Les extensions API fournissent une gestion centralisée des API, simplifiant la configuration pour une utilisation facile à travers les applications de Dify.", + "link": "Apprenez comment développer votre propre Extension API.", + "add": "Ajouter l'extension API", + "selector": { + "title": "Extension de l'API", + "placeholder": "Veuillez sélectionner l'extension API", + "manage": "Gérer l'extension API" + }, + "modal": { + "title": "Ajouter une extension API", + "editTitle": "Modifier l'extension API", + "name": { + "title": "Nom", + "placeholder": "Veuillez entrer le nom" + }, + "apiEndpoint": { + "title": "Point de terminaison API", + "placeholder": "Veuillez entrer le point de terminaison de l'API" + }, + "apiKey": { + "title": "clé API", + "placeholder": "Veuillez entrer la clé API", + "lengthError": "La longueur de la clé API ne peut pas être inférieure à 5 caractères" + } + }, + "type": "Tapez" + }, + "about": { + "changeLog": "Journal des modifications", + "updateNow": "Mettre à jour maintenant", + "nowAvailable": "Dify {{version}} est maintenant disponible.", + "latestAvailable": "Dify {{version}} est la dernière version disponible." + }, + "appMenus": { + "overview": "Surveillance", + "promptEng": "Orchestrer", + "apiAccess": "Accès API", + "logAndAnn": "Journaux & Annonces.", + "logs": "Journaux" + }, + "environment": { + "testing": "TESTER", + "development": "DÉVELOPPEMENT" + }, + "appModes": { + "completionApp": "Générateur de Texte", + "chatApp": "Appli de Chat" + }, + "datasetMenus": { + "documents": "Documents", + "hitTesting": "Test de Récupération", + "settings": "Paramètres", + "emptyTip": "La Connaissance n'a pas été associée, veuillez aller à l'application ou au plug-in pour compléter l'association.", + "viewDoc": "Voir la documentation", + "relatedApp": "applications liées", + "noRelatedApp": "Pas d’applications liées", + "pipeline": "Pipeline" + }, + "voiceInput": { + "speaking": "Parle maintenant...", + "converting": "Conversion en texte...", + "notAllow": "microphone non autorisé" + }, + "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": "Texte-Davinci-003", + "text-embedding-ada-002": "Texte-Intégration-Ada-002", + "whisper-1": "Whisper-1", + "claude-instant-1": "Claude-Instant", + "claude-2": "Claude-2" + }, + "chat": { + "renameConversation": "Renommer la conversation", + "conversationName": "Nom de la conversation", + "conversationNamePlaceholder": "Veuillez entrer le nom de la conversation", + "conversationNameCanNotEmpty": "Nom de la conversation requis", + "citation": { + "title": "CITATIONS", + "linkToDataset": "Lien vers la Connaissance", + "characters": "Personnages :", + "hitCount": "Nombre de récupérations :", + "vectorHash": "Hachage vectoriel:", + "hitScore": "Score de Récupération:" + }, + "inputPlaceholder": "Parler au {{botName}}", + "thinking": "Pensée...", + "thought": "Pensée", + "resend": "Renvoyer" + }, + "promptEditor": { + "placeholder": "Écrivez votre mot d'invite ici, entrez '{' pour insérer une variable, entrez '/' pour insérer un bloc de contenu d'invite", + "context": { + "item": { + "title": "Contexte", + "desc": "Insérez le modèle de contexte" + }, + "modal": { + "title": "{{num}} Connaissance en Contexte", + "add": "Ajouter Contexte", + "footer": "Vous pouvez gérer les contextes dans la section Contexte ci-dessous." + } + }, + "history": { + "item": { + "title": "Historique des conversations", + "desc": "Insérer le modèle de message historique" + }, + "modal": { + "title": "EXEMPLE", + "user": "Bonjour", + "assistant": "Bonjour ! Comment puis-je vous aider aujourd'hui ?", + "edit": "Modifier les Noms des Rôles de Conversation" + } + }, + "variable": { + "item": { + "title": "Variables & Outils Externes", + "desc": "Insérer des Variables & Outils Externes" + }, + "outputToolDisabledItem": { + "title": "Variables", + "desc": "Insérer Variables" + }, + "modal": { + "add": "Nouvelle variable", + "addTool": "Nouvel outil" + } + }, + "query": { + "item": { + "title": "Requête", + "desc": "Insérez le modèle de requête utilisateur" + } + }, + "existed": "Existe déjà dans le prompt" + }, + "imageUploader": { + "uploadFromComputer": "Télécharger depuis l'ordinateur", + "uploadFromComputerReadError": "La lecture de l'image a échoué, veuillez réessayer.", + "uploadFromComputerUploadError": "Le téléchargement de l'image a échoué, veuillez télécharger à nouveau.", + "uploadFromComputerLimit": "Le téléchargement d'images ne peut pas dépasser {{size}} MB", + "pasteImageLink": "Collez le lien de l'image", + "pasteImageLinkInputPlaceholder": "Collez le lien de l'image ici", + "pasteImageLinkInvalid": "Lien d'image invalide", + "imageUpload": "Téléchargement d'image" + }, + "tag": { + "placeholder": "Toutes les balises", + "addNew": "Ajouter une nouvelle balise", + "noTag": "Aucune balise", + "noTagYet": "Aucune balise pour l'instant", + "addTag": "ajouter une balise", + "editTag": "Modifier les balises", + "manageTags": "Gérer les balises", + "selectorPlaceholder": "Type de recherche ou de création", + "create": "Créer", + "delete": "Supprimer la balise", + "deleteTip": "Le tag est utilisé, le supprimer ?", + "created": "Tag créé avec succès", + "failed": "La création de la balise a échoué" + }, + "errorMsg": { + "fieldRequired": "{{field}} est obligatoire", + "urlError": "L’URL doit commencer par http:// ou https://" + }, + "fileUploader": { + "pasteFileLinkInputPlaceholder": "Entrez l’URL...", + "uploadFromComputer": "Téléchargement local", + "pasteFileLink": "Coller le lien du fichier", + "uploadFromComputerReadError": "Échec de la lecture du fichier, veuillez réessayer.", + "uploadFromComputerUploadError": "Le téléchargement du fichier a échoué, veuillez le télécharger à nouveau.", + "fileExtensionNotSupport": "Extension de fichier non prise en charge", + "pasteFileLinkInvalid": "Lien de fichier non valide", + "uploadFromComputerLimit": "Le fichier de téléchargement ne peut pas dépasser {{size}}", + "fileExtensionBlocked": "Ce type de fichier est bloqué pour des raisons de sécurité", + "uploadDisabled": "Le téléchargement de fichiers est désactivé" + }, + "license": { + "expiring": "Expirant dans un jour", + "expiring_plural": "Expirant dans {{count}} jours", + "unlimited": "Illimité" + }, + "pagination": { + "perPage": "Articles par page" + }, + "theme": { + "auto": "système", + "light": "lumière", + "dark": "sombre", + "theme": "Thème" + }, + "compliance": { + "soc2Type1": "Rapport SOC 2 Type I", + "iso27001": "Certification ISO 27001:2022", + "professionalUpgradeTooltip": "Disponible uniquement avec un plan Équipe ou supérieur.", + "gdpr": "RGPD DPA", + "soc2Type2": "Rapport SOC 2 Type II", + "sandboxUpgradeTooltip": "Disponible uniquement avec un plan Professionnel ou Équipe." + }, + "imageInput": { + "browse": "naviguer", + "dropImageHere": "Déposez votre image ici, ou", + "supportedFormats": "Prend en charge PNG, JPG, JPEG, WEBP et GIF" + }, + "you": "Vous", + "avatar": { + "deleteTitle": "Supprimer l'avatar", + "deleteDescription": "Êtes-vous sûr de vouloir supprimer votre photo de profil ? Votre compte utilisera l'avatar par défaut." + }, + "feedback": { + "content": "Contenu des retours", + "title": "Fournir des retours", + "placeholder": "Veuillez décrire ce qui n'a pas fonctionné ou comment nous pourrions nous améliorer...", + "subtitle": "Veuillez nous dire ce qui n'a pas fonctionné avec cette réponse." + }, + "label": { + "optional": "(facultatif)" + }, + "noData": "Aucune donnée", + "dynamicSelect": { + "error": "Échec du chargement des options", + "noData": "Aucune option disponible", + "loading": "Chargement des options...", + "selected": "{{count}} sélectionné" + } +} diff --git a/web/i18n/fr-FR/common.ts b/web/i18n/fr-FR/common.ts deleted file mode 100644 index 4b0deb4a8c..0000000000 --- a/web/i18n/fr-FR/common.ts +++ /dev/null @@ -1,792 +0,0 @@ -const translation = { - api: { - success: 'Succès', - actionSuccess: 'Action réussie', - saved: 'Sauvegardé', - create: 'Créé', - remove: 'Supprimé', - actionFailed: 'Action échouée', - }, - operation: { - create: 'Créer', - confirm: 'Confirmer', - cancel: 'Annuler', - clear: 'Effacer', - save: 'Enregistrer', - saveAndEnable: 'Enregistrer et Activer', - edit: 'Modifier', - add: 'Ajouter', - added: 'Ajouté', - refresh: 'Redémarrer', - reset: 'Réinitialiser', - search: 'Recherche', - change: 'Changer', - remove: 'Supprimer', - send: 'Envoyer', - copy: 'Copier', - lineBreak: 'Saut de ligne', - sure: 'Je suis sûr', - download: 'Télécharger', - delete: 'Supprimer', - settings: 'Paramètres', - setup: 'Configuration', - getForFree: 'Obtenez gratuitement', - reload: 'Recharger', - ok: 'D\'accord', - log: 'Journal', - learnMore: 'En savoir plus', - params: 'Paramètres', - duplicate: 'Dupliquer', - rename: 'Renommer', - audioSourceUnavailable: 'AudioSource n’est pas disponible', - zoomOut: 'Zoom arrière', - zoomIn: 'Zoom avant', - openInNewTab: 'Ouvrir dans un nouvel onglet', - copyImage: 'Copier l’image', - view: 'Vue', - viewMore: 'VOIR PLUS', - close: 'Fermer', - saveAndRegenerate: 'Enregistrer et régénérer des morceaux enfants', - regenerate: 'Régénérer', - submit: 'Envoyer', - skip: 'Bateau', - imageCopied: 'Image copied', - deleteApp: 'Supprimer l’application', - viewDetails: 'Voir les détails', - copied: 'Copied', - in: 'dans', - format: 'Format', - downloadFailed: 'Échec du téléchargement. Veuillez réessayer plus tard.', - more: 'Plus', - downloadSuccess: 'Téléchargement terminé.', - deSelectAll: 'Désélectionner tout', - selectAll: 'Sélectionner tout', - config: 'Config', - no: 'Non', - confirmAction: 'Veuillez confirmer votre action.', - deleteConfirmTitle: 'Supprimer ?', - yes: 'Oui', - noSearchResults: 'Aucun {{content}} n\'a été trouvé', - resetKeywords: 'Réinitialiser les mots-clés', - selectCount: '{{count}} Sélectionné', - searchCount: 'Trouver {{count}} {{content}}', - noSearchCount: '0 {{content}}', - now: 'Maintenant', - }, - placeholder: { - input: 'Veuillez entrer', - select: 'Veuillez sélectionner', - search: 'Rechercher...', - }, - voice: { - language: { - zhHans: 'Chinois', - zhHant: 'Chinois (traditionnel)', - enUS: 'Anglais', - deDE: 'Allemand', - frFR: 'Français', - esES: 'Espagnol', - itIT: 'Italien', - thTH: 'Thaï', - idID: 'Indonésien', - jaJP: 'Japonais', - koKR: 'Coréen', - ptBR: 'Portugais', - ruRU: 'Russe', - ukUA: 'Ukrainien', - viVN: 'Vietnamien', - plPL: 'Polonais', - roRO: 'Roumain', - hiIN: 'Hindi', - trTR: 'Turc', - faIR: 'Persan', - slSI: 'Slovène', - arTN: 'Arabe tunisien', - }, - }, - unit: { - char: 'caractères', - }, - actionMsg: { - noModification: 'Aucune modification pour le moment.', - modifiedSuccessfully: 'Modifié avec succès', - modifiedUnsuccessfully: 'Modifié sans succès', - copySuccessfully: 'Copié avec succès', - paySucceeded: 'Paiement réussi', - payCancelled: 'Paiement annulé', - generatedSuccessfully: 'Généré avec succès', - generatedUnsuccessfully: 'Généré sans succès', - }, - model: { - params: { - temperature: 'Température', - temperatureTip: - 'Controls randomness: Lowering results in less random completions. As the temperature approaches zero, the model will become deterministic and repetitive.', - top_p: 'Haut P', - top_pTip: - 'Controls diversity via nucleus sampling: 0.5 means half of all likelihood-weighted options are considered.', - presence_penalty: 'Pénalité de présence', - presence_penaltyTip: - 'Combien pénaliser les nouveaux tokens en fonction de leur apparition dans le texte jusqu\'à présent. Augmente la probabilité du modèle de parler de nouveaux sujets.', - frequency_penalty: 'Pénalité de fréquence', - frequency_penaltyTip: - 'Combien pénaliser les nouveaux tokens en fonction de leur fréquence existante dans le texte jusqu\'à présent. Réduit la probabilité du modèle de répéter la même ligne mot pour mot.', - max_tokens: 'Max jeton', - max_tokensTip: - 'Utilisé pour limiter la longueur maximale de la réponse, en jetons. \nDes valeurs plus grandes peuvent limiter l\'espace restant pour les mots de prompt, les journaux de chat, et la Connaissance. \nIl est recommandé de le régler en dessous des', - maxTokenSettingTip: 'Votre réglage de max token est élevé, limitant potentiellement l\'espace pour les prompts, les requêtes et les données. Envisagez de le définir en dessous de 2/3.', - setToCurrentModelMaxTokenTip: 'Le max token est mis à jour à 80% du max token du modèle actuel {{maxToken}}.', - stop_sequences: 'Séquences d\'arrêt', - stop_sequencesTip: 'Jusqu\'à quatre séquences où l\'API arrêtera de générer d\'autres tokens. Le texte renvoyé ne contiendra pas la séquence d\'arrêt.', - stop_sequencesPlaceholder: 'Entrez la séquence et appuyez sur Tab', - }, - tone: { - Creative: 'Créatif', - Balanced: 'Équilibré', - Precise: 'Précis', - Custom: 'Personnalisé', - }, - addMoreModel: 'Allez dans les paramètres pour ajouter plus de modèles', - capabilities: 'Capacités multimodales', - settingsLink: 'Paramètres du fournisseur de modèles', - }, - menus: { - status: 'bêta', - explore: 'Explorer', - apps: 'Studio', - plugins: 'Plugins', - pluginsTips: 'Intégrez des plugins tiers ou créez des AI-Plugins compatibles avec ChatGPT.', - datasets: 'Connaissance', - datasetsTips: 'COMING SOON: Import your own text data or write data in real-time via Webhook for LLM context enhancement.', - newApp: 'Nouvelle Application', - newDataset: 'Créer des Connaissances', - tools: 'Outils', - exploreMarketplace: 'Explorer Marketplace', - appDetail: 'Détails de l\'application', - account: 'Compte', - }, - userProfile: { - settings: 'Paramètres', - emailSupport: 'Support par courriel', - workspace: 'Espace de travail', - createWorkspace: 'Créer un Espace de Travail', - helpCenter: 'Aide', - roadmap: 'Feuille de route', - community: 'Communauté', - about: 'À propos', - logout: 'Se déconnecter', - support: 'Soutien', - github: 'GitHub', - compliance: 'Conformité', - contactUs: 'Contactez-nous', - forum: 'Forum', - }, - settings: { - accountGroup: 'COMPTE', - workplaceGroup: 'ESPACE DE TRAVAIL', - account: 'Mon compte', - members: 'Membres', - billing: 'Facturation', - integrations: 'Intégrations', - language: 'Langue', - provider: 'Fournisseur de Modèle', - dataSource: 'Source de Données', - plugin: 'Plugins', - apiBasedExtension: 'Extension API', - generalGroup: 'GÉNÉRALITÉS', - }, - account: { - avatar: 'Avatar', - name: 'Nom', - email: 'Courriel', - password: 'Mot de passe', - passwordTip: 'Vous pouvez définir un mot de passe permanent si vous ne souhaitez pas utiliser des codes de connexion temporaires.', - setPassword: 'Définir un mot de passe', - resetPassword: 'Réinitialiser le mot de passe', - currentPassword: 'Mot de passe actuel', - newPassword: 'Nouveau mot de passe', - confirmPassword: 'Confirmer le mot de passe', - notEqual: 'Les deux mots de passe sont différents.', - langGeniusAccount: 'Compte Dify', - langGeniusAccountTip: 'Votre compte Dify et les données utilisateur associées.', - editName: 'Modifier le nom', - showAppLength: 'Afficher {{length}} applications', - delete: 'Supprimer le compte', - deleteTip: 'La suppression de votre compte effacera définitivement toutes vos données et elles ne pourront pas être récupérées.', - myAccount: 'Mon compte', - account: 'Compte', - studio: 'Dify Studio', - deletePrivacyLinkTip: 'Pour plus d’informations sur la façon dont nous traitons vos données, veuillez consulter notre', - deletePrivacyLink: 'Politique de confidentialité.', - deleteSuccessTip: 'Votre compte a besoin de temps pour terminer la suppression. Nous vous enverrons un e-mail lorsque tout sera terminé.', - deleteLabel: 'Pour confirmer, veuillez saisir votre adresse e-mail ci-dessous', - deletePlaceholder: 'Veuillez entrer votre adresse e-mail', - sendVerificationButton: 'Envoyer le code de vérification', - verificationLabel: 'Code de vérification', - verificationPlaceholder: 'Collez le code à 6 chiffres', - permanentlyDeleteButton: 'Supprimer définitivement le compte', - feedbackTitle: 'Rétroaction', - feedbackLabel: 'Dites-nous pourquoi vous avez supprimé votre compte ?', - feedbackPlaceholder: 'Optionnel', - workspaceName: 'Nom de l\'espace de travail', - workspaceIcon: 'Icône de l\'espace de travail', - editWorkspaceInfo: 'Modifier les informations de l\'espace de travail', - changeEmail: { - codePlaceholder: 'Collez le code à 6 chiffres', - emailLabel: 'Nouveau courriel', - newEmail: 'Créez une nouvelle adresse email', - verifyNew: 'Vérifiez votre nouvel e-mail', - existingEmail: 'Un utilisateur avec cet email existe déjà.', - title: 'Changer l\'email', - resendTip: 'Vous n\'avez pas reçu de code ?', - emailPlaceholder: 'Entrez un nouvel e-mail', - sendVerifyCode: 'Envoyer le code de vérification', - continue: 'Continuer', - changeTo: 'Changer pour {{email}}', - authTip: 'Une fois que votre email est changé, les comptes Google ou GitHub liés à votre ancien email ne pourront plus se connecter à ce compte.', - content3: 'Entrez un nouvel e-mail et nous vous enverrons un code de vérification.', - resendCount: 'Renvoyer dans {{count}}s', - content4: 'Nous vous avons juste envoyé un code de vérification temporaire à {{email}}.', - resend: 'Renvoyer', - verifyEmail: 'Vérifiez votre adresse e-mail actuelle', - content2: 'Votre adresse e-mail actuelle est {{email}}. Un code de vérification a été envoyé à cette adresse e-mail.', - codeLabel: 'Code de vérification', - content1: 'Si vous continuez, nous enverrons un code de vérification à {{email}} pour une nouvelle authentification.', - unAvailableEmail: 'Cet e-mail est temporairement indisponible.', - }, - }, - members: { - team: 'Équipe', - invite: 'Ajouter', - name: 'NOM', - lastActive: 'DERNIÈRE ACTIVITÉ', - role: 'RÔLES', - pending: 'En attente...', - owner: 'Propriétaire', - admin: 'Administrateur', - adminTip: 'Peut construire des applications & gérer les paramètres de l\'équipe', - normal: 'Normal', - normalTip: 'Peut seulement utiliser des applications, ne peut pas construire des applications', - editor: 'Éditeur', - editorTip: 'Peut construire des applications, mais ne peut pas gérer les paramètres de l\'équipe', - inviteTeamMember: 'Ajouter un membre de l\'équipe', - inviteTeamMemberTip: 'Ils peuvent accéder directement à vos données d\'équipe après s\'être connectés.', - emailNotSetup: 'Le serveur de messagerie n\'est pas configuré, les e-mails d\'invitation ne peuvent donc pas être envoyés. Veuillez informer les utilisateurs du lien d\'invitation qui sera émis après l\'invitation.', - email: 'Courrier électronique', - emailInvalid: 'Format de courriel invalide', - emailPlaceholder: 'Veuillez entrer des emails', - sendInvite: 'Envoyer une invitation', - invitedAsRole: 'Invité en tant qu\'utilisateur {{role}}', - invitationSent: 'Invitation envoyée', - invitationSentTip: 'Invitation envoyée, et ils peuvent se connecter à Dify pour accéder aux données de votre équipe.', - invitationLink: 'Lien d\'invitation', - failedInvitationEmails: 'Les utilisateurs ci-dessous n\'ont pas été invités avec succès', - ok: 'D\'accord', - removeFromTeam: 'Retirer de l\'équipe', - removeFromTeamTip: 'Supprimera l\'accès de l\'équipe', - setAdmin: 'Définir comme administrateur', - setMember: 'Définir en tant que membre ordinaire', - setEditor: 'Définir en tant qu\'éditeur', - disInvite: 'Annuler l\'invitation', - deleteMember: 'Supprimer Membre', - you: '(Vous)', - builder: 'Constructeur', - datasetOperatorTip: 'Seul peut gérer la base de connaissances', - datasetOperator: 'Administrateur des connaissances', - setBuilder: 'Définir en tant que constructeur', - builderTip: 'Peut créer et modifier ses propres applications', - transferModal: { - resend: 'Renvoyer', - continue: 'Continuer', - verifyEmail: 'Vérifiez votre adresse e-mail actuelle', - resendCount: 'Renvoyer dans {{count}}s', - verifyContent2: 'Nous enverrons un code de vérification temporaire à cet email pour la ré-authentification.', - codePlaceholder: 'Collez le code à 6 chiffres', - transfer: 'Transférer la propriété de l\'espace de travail', - sendVerifyCode: 'Envoyer le code de vérification', - title: 'Transférer la propriété de l\'espace de travail', - codeLabel: 'Code de vérification', - transferLabel: 'Transférer la propriété de l\'espace de travail à', - verifyContent: 'Votre adresse e-mail actuelle est {{email}}.', - transferPlaceholder: 'Sélectionnez un membre de l\'espace de travail…', - warningTip: 'Vous deviendrez membre administrateur, et le nouveau propriétaire aura le contrôle total.', - resendTip: 'Vous n\'avez pas reçu de code ?', - sendTip: 'Si vous continuez, nous enverrons un code de vérification à {{email}} pour la ré-authentification.', - warning: 'Vous êtes sur le point de transférer la propriété de « {{workspace}} ». Cela prend effet immédiatement et ne peut pas être annulé.', - }, - transferOwnership: 'Transférer la propriété', - }, - integrations: { - connected: 'Connecté', - google: 'Google', - googleAccount: 'Connectez-vous avec un compte Google', - github: 'GitHub', - githubAccount: 'Connectez-vous avec un compte GitHub', - connect: 'Connecter', - }, - language: { - displayLanguage: 'Langue d\'affichage', - timezone: 'Fuseau horaire', - }, - provider: { - apiKey: 'Clé API', - enterYourKey: 'Entrez votre clé API ici', - invalidKey: 'Clé API OpenAI invalide', - validatedError: 'Validation failed: ', - validating: 'Validation de la clé...', - saveFailed: 'La sauvegarde de la clé API a échoué', - apiKeyExceedBill: 'Cette clé API n\'a pas de quota disponible, veuillez lire', - addKey: 'Ajouter une clé', - comingSoon: 'Bientôt disponible', - editKey: 'Modifier', - invalidApiKey: 'Clé API invalide', - azure: { - apiBase: 'Base de l\'API', - apiBasePlaceholder: 'L\'URL de base de l\'API de votre point de terminaison Azure OpenAI.', - apiKey: 'Clé API', - apiKeyPlaceholder: 'Entrez votre clé API ici', - helpTip: 'Apprenez le service OpenAI Azure', - }, - openaiHosted: { - openaiHosted: 'OpenAI Hébergé', - onTrial: 'EN ESSAI', - exhausted: 'QUOTA ÉPUISÉ', - desc: 'Le service d\'hébergement OpenAI fourni par Dify vous permet d\'utiliser des modèles tels que GPT-3.5. Avant que votre quota d\'essai ne soit épuisé, vous devez configurer d\'autres fournisseurs de modèles.', - callTimes: 'Temps d\'appel', - usedUp: 'Quota d\'essai épuisé. Ajoutez votre propre fournisseur de modèle.', - useYourModel: 'Utilise actuellement son propre fournisseur de modèle.', - close: 'Fermer', - }, - anthropicHosted: { - anthropicHosted: 'Anthropic Claude', - onTrial: 'EN ESSAI', - exhausted: 'QUOTA ÉPUISÉ', - desc: 'Modèle puissant, qui excelle dans une large gamme de tâches allant du dialogue sophistiqué et de la génération de contenu créatif à l\'instruction détaillée.', - callTimes: 'Temps d\'appel', - usedUp: 'Quota d\'essai épuisé. Ajoutez votre propre fournisseur de modèle.', - useYourModel: 'Utilise actuellement son propre fournisseur de modèle.', - close: 'Fermer', - trialQuotaTip: 'Votre quota d’essai Anthropic expirera le 11/03/2025 et ne sera plus disponible par la suite. Veuillez l’utiliser à temps.', - }, - anthropic: { - using: 'La capacité d\'embedding est utilisée', - enableTip: 'Pour activer le modèle Anthropic, vous devez d\'abord vous lier à OpenAI ou au service Azure OpenAI.', - notEnabled: 'Non activé', - keyFrom: 'Obtenez votre clé API de chez Anthropic', - }, - encrypted: { - front: 'Votre clé API sera chiffrée et stockée en utilisant', - back: 'technologie.', - }, - }, - modelProvider: { - notConfigured: 'Le modèle du système n\'a pas encore été entièrement configuré, et certaines fonctions peuvent être indisponibles.', - systemModelSettings: 'Paramètres du Modèle Système', - systemModelSettingsLink: 'Pourquoi est-il nécessaire de mettre en place un modèle de système ?', - selectModel: 'Sélectionnez votre modèle', - setupModelFirst: 'Veuillez d\'abord configurer votre modèle', - systemReasoningModel: { - key: 'Modèle de Raisonnement du Système', - tip: 'Définissez le modèle d\'inférence par défaut à utiliser pour la création d\'applications, ainsi que des fonctionnalités telles que la génération de noms de dialogue et la suggestion de la prochaine question utiliseront également le modèle d\'inférence par défaut.', - }, - embeddingModel: { - key: 'Modèle d\'Embedding', - tip: 'Définissez le modèle par défaut pour le traitement d\'incorporation de documents de la Connaissance, à la fois la récupération et l\'importation de la Connaissance utilisent ce modèle d\'Embedding pour le traitement de vectorisation. Si vous changez de modèle, la dimension du vecteur entre la connaissance importée et la question ne sera pas cohérente, ce qui entraînera un échec de la recherche. Pour éviter les échecs de recherche, veuillez ne pas changer de modèle à volonté.', - required: 'Le modèle d\'embedding est requis', - }, - speechToTextModel: { - key: 'Modèle de Texte-à-Parole', - tip: 'Définissez le modèle par défaut pour l\'entrée de texte par la parole dans la conversation.', - }, - ttsModel: { - key: 'Modèle de Texte-à-Parole', - tip: 'Définissez le modèle par défaut pour l\'entrée de texte à la parole dans une conversation.', - }, - rerankModel: { - key: 'Modèle de Réorganisation', - tip: 'Le modèle de réorganisation réorganisera la liste des documents candidats en fonction de la correspondance sémantique avec la requête de l\'utilisateur, améliorant ainsi les résultats du classement sémantique.', - }, - quota: 'Quota', - searchModel: 'Modèle de recherche', - noModelFound: 'Aucun modèle trouvé pour {{model}}', - models: 'Modèles', - showMoreModelProvider: 'Montrer plus de fournisseur de modèle', - selector: { - tip: 'Ce modèle a été supprimé. Veuillez ajouter un modèle ou sélectionner un autre modèle.', - emptyTip: 'Aucun modèle disponible', - emptySetting: 'Veuillez aller dans les paramètres pour configurer', - rerankTip: 'Veuillez configurer le modèle Rerank', - }, - card: { - quota: 'QUOTA', - onTrial: 'En Essai', - paid: 'Payé', - quotaExhausted: 'Quota épuisé', - callTimes: 'Temps d\'appel', - tokens: 'Jetons', - buyQuota: 'Acheter Quota', - priorityUse: 'Utilisation prioritaire', - removeKey: 'Supprimer la clé API', - tip: 'La priorité sera donnée au quota payant. Le quota d\'essai sera utilisé après épuisement du quota payant.', - }, - item: { - deleteDesc: '{{modelName}} sont utilisés comme modèles de raisonnement système. Certaines fonctions ne seront pas disponibles après la suppression. Veuillez confirmer.', - freeQuota: 'QUOTA GRATUIT', - }, - addApiKey: 'Ajoutez votre clé API', - invalidApiKey: 'Clé API invalide', - encrypted: { - front: 'Votre clé API sera cryptée et stockée en utilisant', - back: 'technologie.', - }, - freeQuota: { - howToEarn: 'Comment gagner', - }, - addMoreModelProvider: 'AJOUTER PLUS DE FOURNISSEUR DE MODÈLE', - addModel: 'Ajouter un modèle', - modelsNum: '{{num}} Modèles', - showModels: 'Montrer les modèles', - showModelsNum: 'Afficher {{num}} Modèles', - collapse: 'Effondrer', - config: 'Configuration', - modelAndParameters: 'Modèle et Paramètres', - model: 'Modèle', - featureSupported: '{{feature}} pris en charge', - callTimes: 'Temps d\'appel', - credits: 'Crédits de Messages', - buyQuota: 'Acheter Quota', - getFreeTokens: 'Obtenez des Tokens gratuits', - priorityUsing: 'Prioriser l\'utilisation', - deprecated: 'Obsolète', - confirmDelete: 'confirmer la suppression?', - quotaTip: 'Tokens gratuits restants disponibles', - loadPresets: 'Charger les Présents', - parameters: 'PARAMÈTRES', - modelHasBeenDeprecated: 'Ce modèle est obsolète', - providerManagedDescription: 'Utilisez l’ensemble unique d’informations d’identification fourni par le fournisseur de modèle.', - loadBalancingHeadline: 'Équilibrage', - loadBalancing: 'Équilibrage', - loadBalancingLeastKeyWarning: 'Pour activer l’équilibrage de charge, au moins 2 clés doivent être activées.', - apiKey: 'API-KEY', - apiKeyStatusNormal: 'L’état de l’APIKey est normal', - configLoadBalancing: 'Équilibrage de charge de configuration', - loadBalancingInfo: 'Par défaut, l’équilibrage de charge utilise la stratégie Round-robin. Si la limitation de vitesse est déclenchée, une période de recharge de 1 minute sera appliquée.', - editConfig: 'Modifier la configuration', - addConfig: 'Ajouter une configuration', - apiKeyRateLimit: 'La limite de débit a été atteinte, disponible après {{secondes}}s', - defaultConfig: 'Configuration par défaut', - loadBalancingDescription: 'Réduisez la pression grâce à plusieurs ensembles d’informations d’identification.', - providerManaged: 'Géré par le fournisseur', - upgradeForLoadBalancing: 'Mettez à niveau votre plan pour activer l’équilibrage de charge.', - emptyProviderTitle: 'Le fournisseur de modèles n’est pas configuré', - toBeConfigured: 'À configurer', - configureTip: 'Configurer api-key ou ajouter un modèle à utiliser', - installProvider: 'Installer des fournisseurs de modèles', - discoverMore: 'Découvrez-en plus dans', - emptyProviderTip: 'Veuillez d’abord installer un fournisseur de modèles.', - auth: { - apiKeyModal: { - addModel: 'Ajouter un modèle', - title: 'Configuration de l\'autorisation de clé API', - desc: 'Après avoir configuré les identifiants, tous les membres de l\'espace de travail peuvent utiliser ce modèle lors de l\'orchestration des applications.', - }, - addModelCredential: 'Ajouter des informations d’identification de modèle', - configModel: 'Configurer le modèle', - addNewModel: 'Ajouter un nouveau modèle', - apiKeys: 'Clés API', - providerManaged: 'Fournisseur géré', - configLoadBalancing: 'Configuration de l\'équilibrage de charge', - modelCredentials: 'Informations d\'identification du modèle', - addApiKey: 'Ajouter une clé API', - specifyModelCredential: 'Spécifiez les identifiants du modèle', - authorizationError: 'Erreur d\'autorisation', - authRemoved: 'Autorisation retirée', - addCredential: 'Ajouter un identifiant', - unAuthorized: 'Non autorisé', - specifyModelCredentialTip: 'Utilisez un identifiant de modèle configuré.', - providerManagedTip: 'La configuration actuelle est hébergée par le fournisseur.', - customModelCredentials: 'Informations d’identification du modèle personnalisé', - manageCredentials: 'Gérer les informations d’identification', - modelCredential: 'Références du modèle', - addModel: 'Ajouter un modèle', - addNewModelCredential: 'Ajouter de nouvelles informations d’identification de modèle', - selectModelCredential: 'Sélectionnez les informations d’identification d’un modèle', - customModelCredentialsDeleteTip: 'Les informations d’identification sont en cours d’utilisation et ne peuvent pas être supprimées', - removeModel: 'Supprimer le modèle', - editModelCredential: 'Modifier les informations d’identification du modèle', - }, - parametersInvalidRemoved: 'Certains paramètres sont invalides et ont été supprimés.', - installDataSourceProvider: 'Installer les fournisseurs de sources de données', - }, - dataSource: { - add: 'Ajouter une source de données', - connect: 'Connecter', - notion: { - title: 'Notion', - description: 'Utiliser Notion comme source de données pour la Connaissance.', - connectedWorkspace: 'Espace de travail connecté', - addWorkspace: 'Ajouter un espace de travail', - connected: 'Connecté', - disconnected: 'Déconnecté', - changeAuthorizedPages: 'Modifier les pages autorisées', - pagesAuthorized: 'Pages autorisées', - sync: 'Synchronisation', - remove: 'Supprimer', - selector: { - pageSelected: 'Pages Sélectionnées', - searchPages: 'Rechercher des pages...', - noSearchResult: 'Aucun résultat de recherche', - addPages: 'Ajouter des pages', - preview: 'APERÇU', - }, - integratedAlert: 'Notion est intégré via des identifiants internes, aucune autorisation supplémentaire n\'est nécessaire.', - }, - website: { - configuredCrawlers: 'Robots d’exploration configurés', - with: 'Avec', - inactive: 'Inactif', - active: 'Actif', - title: 'Site internet', - description: 'Importez du contenu à partir de sites Web à l’aide du robot d’indexation.', - }, - configure: 'Configurer', - }, - plugin: { - serpapi: { - apiKey: 'Clé API', - apiKeyPlaceholder: 'Entrez votre clé API', - keyFrom: 'Obtenez votre clé SerpAPI depuis la page de compte SerpAPI', - }, - }, - apiBasedExtension: { - title: 'Les extensions API fournissent une gestion centralisée des API, simplifiant la configuration pour une utilisation facile à travers les applications de Dify.', - link: 'Apprenez comment développer votre propre Extension API.', - add: 'Ajouter l\'extension API', - selector: { - title: 'Extension de l\'API', - placeholder: 'Veuillez sélectionner l\'extension API', - manage: 'Gérer l\'extension API', - }, - modal: { - title: 'Ajouter une extension API', - editTitle: 'Modifier l\'extension API', - name: { - title: 'Nom', - placeholder: 'Veuillez entrer le nom', - }, - apiEndpoint: { - title: 'Point de terminaison API', - placeholder: 'Veuillez entrer le point de terminaison de l\'API', - }, - apiKey: { - title: 'clé API', - placeholder: 'Veuillez entrer la clé API', - lengthError: 'La longueur de la clé API ne peut pas être inférieure à 5 caractères', - }, - }, - type: 'Tapez', - }, - about: { - changeLog: 'Journal des modifications', - updateNow: 'Mettre à jour maintenant', - nowAvailable: 'Dify {{version}} est maintenant disponible.', - latestAvailable: 'Dify {{version}} est la dernière version disponible.', - }, - appMenus: { - overview: 'Surveillance', - promptEng: 'Orchestrer', - apiAccess: 'Accès API', - logAndAnn: 'Journaux & Annonces.', - logs: 'Journaux', - }, - environment: { - testing: 'TESTER', - development: 'DÉVELOPPEMENT', - }, - appModes: { - completionApp: 'Générateur de Texte', - chatApp: 'Appli de Chat', - }, - datasetMenus: { - documents: 'Documents', - hitTesting: 'Test de Récupération', - settings: 'Paramètres', - emptyTip: 'La Connaissance n\'a pas été associée, veuillez aller à l\'application ou au plug-in pour compléter l\'association.', - viewDoc: 'Voir la documentation', - relatedApp: 'applications liées', - noRelatedApp: 'Pas d’applications liées', - pipeline: 'Pipeline', - }, - voiceInput: { - speaking: 'Parle maintenant...', - converting: 'Conversion en texte...', - notAllow: 'microphone non autorisé', - }, - 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': 'Texte-Davinci-003', - 'text-embedding-ada-002': 'Texte-Intégration-Ada-002', - 'whisper-1': 'Whisper-1', - 'claude-instant-1': 'Claude-Instant', - 'claude-2': 'Claude-2', - }, - chat: { - renameConversation: 'Renommer la conversation', - conversationName: 'Nom de la conversation', - conversationNamePlaceholder: 'Veuillez entrer le nom de la conversation', - conversationNameCanNotEmpty: 'Nom de la conversation requis', - citation: { - title: 'CITATIONS', - linkToDataset: 'Lien vers la Connaissance', - characters: 'Personnages :', - hitCount: 'Nombre de récupérations :', - vectorHash: 'Hachage vectoriel:', - hitScore: 'Score de Récupération:', - }, - inputPlaceholder: 'Parler au {{botName}}', - thinking: 'Pensée...', - thought: 'Pensée', - resend: 'Renvoyer', - }, - promptEditor: { - placeholder: 'Écrivez votre mot d\'invite ici, entrez \'{\' pour insérer une variable, entrez \'/\' pour insérer un bloc de contenu d\'invite', - context: { - item: { - title: 'Contexte', - desc: 'Insérez le modèle de contexte', - }, - modal: { - title: '{{num}} Connaissance en Contexte', - add: 'Ajouter Contexte', - footer: 'Vous pouvez gérer les contextes dans la section Contexte ci-dessous.', - }, - }, - history: { - item: { - title: 'Historique des conversations', - desc: 'Insérer le modèle de message historique', - }, - modal: { - title: 'EXEMPLE', - user: 'Bonjour', - assistant: 'Bonjour ! Comment puis-je vous aider aujourd\'hui ?', - edit: 'Modifier les Noms des Rôles de Conversation', - }, - }, - variable: { - item: { - title: 'Variables & Outils Externes', - desc: 'Insérer des Variables & Outils Externes', - }, - outputToolDisabledItem: { - title: 'Variables', - desc: 'Insérer Variables', - }, - modal: { - add: 'Nouvelle variable', - addTool: 'Nouvel outil', - }, - }, - query: { - item: { - title: 'Requête', - desc: 'Insérez le modèle de requête utilisateur', - }, - }, - existed: 'Existe déjà dans le prompt', - }, - imageUploader: { - uploadFromComputer: 'Télécharger depuis l\'ordinateur', - uploadFromComputerReadError: 'La lecture de l\'image a échoué, veuillez réessayer.', - uploadFromComputerUploadError: 'Le téléchargement de l\'image a échoué, veuillez télécharger à nouveau.', - uploadFromComputerLimit: 'Le téléchargement d\'images ne peut pas dépasser {{size}} MB', - pasteImageLink: 'Collez le lien de l\'image', - pasteImageLinkInputPlaceholder: 'Collez le lien de l\'image ici', - pasteImageLinkInvalid: 'Lien d\'image invalide', - imageUpload: 'Téléchargement d\'image', - }, - tag: { - placeholder: 'Toutes les balises', - addNew: 'Ajouter une nouvelle balise', - noTag: 'Aucune balise', - noTagYet: 'Aucune balise pour l\'instant', - addTag: 'ajouter une balise', - editTag: 'Modifier les balises', - manageTags: 'Gérer les balises', - selectorPlaceholder: 'Type de recherche ou de création', - create: 'Créer', - delete: 'Supprimer la balise', - deleteTip: 'Le tag est utilisé, le supprimer ?', - created: 'Tag créé avec succès', - failed: 'La création de la balise a échoué', - }, - errorMsg: { - fieldRequired: '{{field}} est obligatoire', - urlError: 'L’URL doit commencer par http:// ou https://', - }, - fileUploader: { - pasteFileLinkInputPlaceholder: 'Entrez l’URL...', - uploadFromComputer: 'Téléchargement local', - pasteFileLink: 'Coller le lien du fichier', - uploadFromComputerReadError: 'Échec de la lecture du fichier, veuillez réessayer.', - uploadFromComputerUploadError: 'Le téléchargement du fichier a échoué, veuillez le télécharger à nouveau.', - fileExtensionNotSupport: 'Extension de fichier non prise en charge', - pasteFileLinkInvalid: 'Lien de fichier non valide', - uploadFromComputerLimit: 'Le fichier de téléchargement ne peut pas dépasser {{size}}', - fileExtensionBlocked: 'Ce type de fichier est bloqué pour des raisons de sécurité', - uploadDisabled: 'Le téléchargement de fichiers est désactivé', - }, - license: { - expiring: 'Expirant dans un jour', - expiring_plural: 'Expirant dans {{count}} jours', - unlimited: 'Illimité', - }, - pagination: { - perPage: 'Articles par page', - }, - theme: { - auto: 'système', - light: 'lumière', - dark: 'sombre', - theme: 'Thème', - }, - compliance: { - soc2Type1: 'Rapport SOC 2 Type I', - iso27001: 'Certification ISO 27001:2022', - professionalUpgradeTooltip: 'Disponible uniquement avec un plan Équipe ou supérieur.', - gdpr: 'RGPD DPA', - soc2Type2: 'Rapport SOC 2 Type II', - sandboxUpgradeTooltip: 'Disponible uniquement avec un plan Professionnel ou Équipe.', - }, - imageInput: { - browse: 'naviguer', - dropImageHere: 'Déposez votre image ici, ou', - supportedFormats: 'Prend en charge PNG, JPG, JPEG, WEBP et GIF', - }, - you: 'Vous', - avatar: { - deleteTitle: 'Supprimer l\'avatar', - deleteDescription: 'Êtes-vous sûr de vouloir supprimer votre photo de profil ? Votre compte utilisera l\'avatar par défaut.', - }, - feedback: { - content: 'Contenu des retours', - title: 'Fournir des retours', - placeholder: 'Veuillez décrire ce qui n\'a pas fonctionné ou comment nous pourrions nous améliorer...', - subtitle: 'Veuillez nous dire ce qui n\'a pas fonctionné avec cette réponse.', - }, - label: { - optional: '(facultatif)', - }, - noData: 'Aucune donnée', - dynamicSelect: { - error: 'Échec du chargement des options', - noData: 'Aucune option disponible', - loading: 'Chargement des options...', - selected: '{{count}} sélectionné', - }, -} - -export default translation diff --git a/web/i18n/fr-FR/custom.json b/web/i18n/fr-FR/custom.json new file mode 100644 index 0000000000..6f263060e2 --- /dev/null +++ b/web/i18n/fr-FR/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "Personnalisation", + "upgradeTip": { + "prefix": "Mettez à niveau votre plan pour", + "suffix": "personnalisez votre marque.", + "des": "Mettez à niveau votre plan pour personnaliser votre marque", + "title": "Améliorez votre plan" + }, + "webapp": { + "title": "Personnalisez la marque web app", + "removeBrand": "Supprimer Propulsé par Dify", + "changeLogo": "Changer Propulsé par l'Image de Marque", + "changeLogoTip": "Format SVG ou PNG avec une taille minimum de 40x40px" + }, + "app": { + "title": "Personnaliser la marque de l'en-tête de l'application", + "changeLogoTip": "Format SVG ou PNG avec une taille minimale de 80x80px" + }, + "upload": "Télécharger", + "uploading": "Téléchargement", + "uploadedFail": "Le téléchargement de l'image a échoué, veuillez la télécharger à nouveau.", + "change": "Changer", + "apply": "Appliquer", + "restore": "Rétablir les paramètres par défaut", + "customize": { + "contactUs": "Contactez-nous", + "prefix": "Pour personnaliser le logo de la marque dans l'application, s'il vous plaît", + "suffix": "pour passer à l'édition Enterprise." + } +} diff --git a/web/i18n/fr-FR/custom.ts b/web/i18n/fr-FR/custom.ts deleted file mode 100644 index ddb35cac4f..0000000000 --- a/web/i18n/fr-FR/custom.ts +++ /dev/null @@ -1,32 +0,0 @@ -const translation = { - custom: 'Personnalisation', - upgradeTip: { - prefix: 'Mettez à niveau votre plan pour', - suffix: 'personnalisez votre marque.', - des: 'Mettez à niveau votre plan pour personnaliser votre marque', - title: 'Améliorez votre plan', - }, - webapp: { - title: 'Personnalisez la marque web app', - removeBrand: 'Supprimer Propulsé par Dify', - changeLogo: 'Changer Propulsé par l\'Image de Marque', - changeLogoTip: 'Format SVG ou PNG avec une taille minimum de 40x40px', - }, - app: { - title: 'Personnaliser la marque de l\'en-tête de l\'application', - changeLogoTip: 'Format SVG ou PNG avec une taille minimale de 80x80px', - }, - upload: 'Télécharger', - uploading: 'Téléchargement', - uploadedFail: 'Le téléchargement de l\'image a échoué, veuillez la télécharger à nouveau.', - change: 'Changer', - apply: 'Appliquer', - restore: 'Rétablir les paramètres par défaut', - customize: { - contactUs: 'Contactez-nous', - prefix: 'Pour personnaliser le logo de la marque dans l\'application, s\'il vous plaît', - suffix: 'pour passer à l\'édition Enterprise.', - }, -} - -export default translation diff --git a/web/i18n/fr-FR/dataset-creation.json b/web/i18n/fr-FR/dataset-creation.json new file mode 100644 index 0000000000..40b01c09c0 --- /dev/null +++ b/web/i18n/fr-FR/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "Connaissance" + }, + "one": "Choisissez la source de données", + "two": "Prétraitement et Nettoyage du Texte", + "three": "Exécutez et terminez" + }, + "error": { + "unavailable": "Cette connaissance n'est pas disponible" + }, + "stepOne": { + "filePreview": "Aperçu du fichier", + "pagePreview": "Aperçu de la page", + "dataSourceType": { + "file": "Importer à partir d'un fichier texte", + "notion": "Synchroniser depuis Notion", + "web": "Synchroniser depuis le site web" + }, + "uploader": { + "title": "Télécharger le fichier texte", + "button": "Faites glisser et déposez des fichiers ou des dossiers, ou", + "buttonSingleFile": "Faites glisser et déposez un fichier, ou", + "browse": "Parcourir", + "tip": "Prend en charge {{supportTypes}}. Max {{size}}MB chacun.", + "validation": { + "typeError": "Type de fichier non pris en charge", + "size": "Fichier trop volumineux. Le maximum est de {{size}}MB", + "count": "Plusieurs fichiers non pris en charge", + "filesNumber": "Vous avez atteint la limite de téléchargement par lot de {{filesNumber}}." + }, + "cancel": "Annuler", + "change": "Changer", + "failed": "Le téléchargement a échoué" + }, + "notionSyncTitle": "Notion n'est pas connecté", + "notionSyncTip": "Pour synchroniser avec Notion, une connexion à Notion doit d'abord être établie.", + "connect": "Aller à connecter", + "button": "suivant", + "emptyDatasetCreation": "Je veux créer un Savoir vide", + "modal": { + "title": "Créer une Connaissance vide", + "tip": "Une Connaissance vide ne contiendra aucun document, et vous pouvez télécharger des documents à tout moment.", + "input": "Nom de la connaissance", + "placeholder": "Veuillez entrer", + "nameNotEmpty": "Le nom ne peut pas être vide", + "nameLengthInvalid": "Le nom doit comporter entre 1 et 40 caractères.", + "cancelButton": "Annuler", + "confirmButton": "Créer", + "failed": "Création échouée" + }, + "website": { + "limit": "Limite", + "fireCrawlNotConfiguredDescription": "Configurez Firecrawl avec la clé API pour l’utiliser.", + "selectAll": "Tout sélectionner", + "unknownError": "Erreur inconnue", + "firecrawlDoc": "Docs Firecrawl", + "totalPageScraped": "Nombre total de pages extraites :", + "preview": "Aperçu", + "crawlSubPage": "Explorer les sous-pages", + "configure": "Configurer", + "maxDepth": "Profondeur maximale", + "fireCrawlNotConfigured": "Firecrawl n’est pas configuré", + "firecrawlTitle": "Extraire du contenu web avec 🔥Firecrawl", + "scrapTimeInfo": "Pages récupérées au total dans un délai de {{time}}s", + "options": "Options", + "exceptionErrorTitle": "Une exception s’est produite lors de l’exécution de la tâche Firecrawl :", + "includeOnlyPaths": "Inclure uniquement les chemins d’accès", + "resetAll": "Tout réinitialiser", + "run": "Courir", + "extractOnlyMainContent": "Extraire uniquement le contenu principal (pas d’en-têtes, de navigations, de pieds de page, etc.)", + "excludePaths": "Exclure les chemins d’accès", + "maxDepthTooltip": "Profondeur maximale à explorer par rapport à l’URL saisie. La profondeur 0 gratte simplement la page de l’URL saisie, la profondeur 1 récupère l’URL et tout ce qui suit l’URL saisie + un /, et ainsi de suite.", + "jinaReaderDocLink": "https://jina.ai/reader", + "jinaReaderDoc": "En savoir plus sur Jina Reader", + "useSitemapTooltip": "Suivez le plan du site pour explorer le site. Si ce n’est pas le cas, Jina Reader explorera de manière itérative en fonction de la pertinence de la page, produisant des pages moins nombreuses mais de meilleure qualité.", + "jinaReaderNotConfiguredDescription": "Configurez Jina Reader en saisissant votre clé API gratuite pour y accéder.", + "useSitemap": "Utiliser le sitemap", + "jinaReaderNotConfigured": "Jina Reader n’est pas configuré", + "chooseProvider": "Sélectionnez un fournisseur", + "jinaReaderTitle": "Convertir l’intégralité du site en Markdown", + "watercrawlTitle": "Extraire du contenu web avec Watercrawl", + "watercrawlDoc": "Documents Watercrawl", + "waterCrawlNotConfiguredDescription": "Configurez Watercrawl avec la clé API pour l'utiliser.", + "configureJinaReader": "Configurer le lecteur Jina", + "configureWatercrawl": "Configurer Watercrawl", + "waterCrawlNotConfigured": "Watercrawl n'est pas configuré", + "configureFirecrawl": "Configurer Firecrawl", + "running": "Course" + }, + "cancel": "Annuler" + }, + "stepTwo": { + "segmentation": "Paramètres de bloc", + "auto": "Automatique", + "autoDescription": "Définir automatiquement les règles de découpage et de prétraitement. Il est recommandé aux utilisateurs non familiers de sélectionner ceci.", + "custom": "Personnalisé", + "customDescription": "Personnalisez les règles de morceaux, la longueur des morceaux et les règles de prétraitement, etc.", + "separator": "Identifiant de segment", + "separatorPlaceholder": "Par exemple, nouvelle ligne (\\\\n) ou séparateur spécial (tel que \"***\")", + "maxLength": "Longueur maximale du morceau", + "overlap": "Chevauchement de morceaux", + "overlapTip": "La définition d'un chevauchement de morceaux peut maintenir la pertinence sémantique entre eux, améliorant ainsi l'effet de récupération. Il est recommandé de définir 10%-25% de la taille maximale du morceau.", + "overlapCheck": "le chevauchement de morceaux ne doit pas être plus grand que la longueur maximale de morceau", + "rules": "Règles de prétraitement du texte", + "removeExtraSpaces": "Remplacer les espaces consécutifs, les sauts de ligne et les tabulations", + "removeUrlEmails": "Supprimez toutes les URL et adresses e-mail", + "removeStopwords": "Supprimez les mots vides tels que \"a\", \"an\", \"the\"", + "preview": "Confirmer & Aperçu", + "reset": "Réinitialiser", + "indexMode": "Mode d'index", + "qualified": "Haute Qualité", + "recommend": "Recommander", + "qualifiedTip": "Appelez l'interface d'embedding système par défaut pour le traitement afin de fournir une précision plus élevée lorsque les utilisateurs font une requête.", + "warning": "Veuillez d'abord configurer la clé API du fournisseur de modèle.", + "click": "Aller aux paramètres", + "economical": "Économique", + "economicalTip": "Utilisez des moteurs vectoriels hors ligne, des index de mots-clés, etc. pour réduire la précision sans dépenser de jetons", + "QATitle": "Segmentation en format Question & Réponse", + "QATip": "Activer cette option consommera plus de jetons", + "QALanguage": "Segmenter en utilisant", + "estimateCost": "Estimation", + "estimateSegment": "Morceaux estimés", + "segmentCount": "morceaux", + "calculating": "En calcul...", + "fileSource": "Prétraiter les documents", + "notionSource": "Prétraiter les pages", + "other": "et autres", + "fileUnit": "fichiers", + "notionUnit": "pages", + "previousStep": "Étape précédente", + "nextStep": "Enregistrer & Traiter", + "save": "Enregistrer & Traiter", + "cancel": "Annuler", + "sideTipTitle": "Pourquoi découper et prétraiter ?", + "sideTipP1": "Lors du traitement des données textuelles, le découpage et le nettoyage sont deux étapes importantes de la prétraitement.", + "sideTipP2": "La segmentation divise les longs textes en paragraphes afin que les modèles puissent mieux comprendre. Cela améliore la qualité et la pertinence des résultats du modèle.", + "sideTipP3": "Le nettoyage élimine les caractères et les formats inutiles, rendant le Savoir plus propre et plus facile à analyser.", + "sideTipP4": "Un bon découpage et nettoyage améliorent les performances du modèle, fournissant des résultats plus précis et précieux.", + "previewTitle": "Aperçu", + "previewTitleButton": "Aperçu", + "previewButton": "Passage au format Q&R", + "previewSwitchTipStart": "L'aperçu actuel du morceau est en format texte, passer à un aperçu en format de questions-réponses va", + "previewSwitchTipEnd": "consommer des tokens supplémentaires", + "characters": "personnages", + "indexSettingTip": "Pour changer la méthode d'index, veuillez aller à la", + "retrievalSettingTip": "Pour changer la méthode d'index, veuillez aller à la", + "datasetSettingLink": "Paramètres de connaissance.", + "webpageUnit": "Pages", + "websiteSource": "Site web de prétraitement", + "separatorTip": "Un délimiteur est le caractère utilisé pour séparer le texte. \\n\\n et \\n sont des délimiteurs couramment utilisés pour séparer les paragraphes et les lignes. Combiné à des virgules (\\n\\n,\\n), les paragraphes seront segmentés par des lignes lorsqu’ils dépasseront la longueur maximale des morceaux. Vous pouvez également utiliser des délimiteurs spéciaux définis par vous-même (par exemple ***).", + "maxLengthCheck": "La longueur maximale des morceaux doit être inférieure à {{limit}}", + "parentChunkForContext": "Parent-chunk pour le contexte", + "notAvailableForParentChild": "Non disponible pour l’indice parent-enfant", + "parentChild": "Parent-enfant", + "useQALanguage": "Chunk utilisant le format Q&A dans", + "highQualityTip": "Une fois l’intégration terminée en mode Haute qualité, il n’est pas possible de revenir au mode économique.", + "switch": "Interrupteur", + "paragraph": "Paragraphe", + "general": "Généralités", + "fullDocTip": "L’intégralité du document est utilisée comme morceau parent et récupérée directement. Veuillez noter que pour des raisons de performance, le texte dépassant 10000 jetons sera automatiquement tronqué.", + "fullDoc": "Doc complet", + "previewChunkCount": "{{count}} Tronçons estimés", + "childChunkForRetrieval": "Child-chunk pour l’extraction", + "parentChildDelimiterTip": "Un délimiteur est le caractère utilisé pour séparer le texte. \\n\\n est recommandé pour diviser le document d’origine en gros morceaux parents. Vous pouvez également utiliser des délimiteurs spéciaux définis par vous-même.", + "qaSwitchHighQualityTipTitle": "Le format Q&R nécessite une méthode d’indexation de haute qualité", + "notAvailableForQA": "Non disponible pour l’indice Q&R", + "previewChunk": "Aperçu du morceau", + "parentChildTip": "Lors de l’utilisation du mode parent-enfant, le morceau enfant est utilisé pour la récupération et le morceau parent est utilisé pour le rappel en tant que contexte.", + "paragraphTip": "Ce mode divise le texte en paragraphes en fonction des délimiteurs et de la longueur maximale du morceau, en utilisant le texte scindé comme morceau parent pour la récupération.", + "qaSwitchHighQualityTipContent": "Actuellement, seule la méthode d’index de haute qualité prend en charge la segmentation du format Q&R. Vous souhaitez passer en mode haute qualité ?", + "previewChunkTip": "Cliquez sur le bouton « Preview Chunk » sur la gauche pour charger l’aperçu", + "parentChildChunkDelimiterTip": "Un délimiteur est le caractère utilisé pour séparer le texte. \\n est recommandé pour diviser les blocs parents en petits blocs enfants. Vous pouvez également utiliser des délimiteurs spéciaux définis par vous-même.", + "generalTip": "Mode général de segmentation du texte, les morceaux récupérés et rappelés sont les mêmes.", + "qaTip": "Lorsque vous utilisez des données de questions-réponses structurées, vous pouvez créer des documents qui associent des questions et des réponses. Ces documents sont indexés en fonction de la partie question, ce qui permet au système de récupérer des réponses pertinentes en fonction de la similarité des requêtes." + }, + "stepThree": { + "creationTitle": "🎉 Connaissance créée", + "creationContent": "Nous avons automatiquement nommé le Savoir, vous pouvez le modifier à tout moment", + "label": "Nom de la connaissance", + "additionTitle": "🎉 Document téléchargé", + "additionP1": "Le document a été téléchargé dans la Connaissance", + "additionP2": ", vous pouvez le trouver dans la liste des documents de la Connaissance.", + "stop": "Arrêter le traitement", + "resume": "Reprendre le traitement", + "navTo": "Aller au document", + "sideTipTitle": "Qu'est-ce qui suit ?", + "sideTipContent": "Après l'indexation du document, la Connaissance peut être intégrée dans l'application en tant que contexte, vous pouvez trouver le paramètre de contexte sur la page d'orchestration de prompt. Vous pouvez également le créer en tant que plugin d'indexation ChatGPT ind", + "modelTitle": "Êtes-vous sûr de vouloir arrêter l'embedding ?", + "modelContent": "Si vous devez reprendre le traitement plus tard, vous continuerez à partir de l'endroit où vous vous êtes arrêté.", + "modelButtonConfirm": "Confirmer", + "modelButtonCancel": "Annuler" + }, + "firecrawl": { + "apiKeyPlaceholder": "Clé API de firecrawl.dev", + "configFirecrawl": "Configurer 🔥Firecrawl", + "getApiKeyLinkText": "Obtenez votre clé API auprès de firecrawl.dev" + }, + "jinaReader": { + "getApiKeyLinkText": "Obtenez votre clé API gratuite chez jina.ai", + "apiKeyPlaceholder": "Clé API de jina.ai", + "configJinaReader": "Configurer Jina Reader" + }, + "otherDataSource": { + "learnMore": "Pour en savoir plus", + "description": "Actuellement, la base de connaissances de Dify ne dispose que de sources de données limitées. Contribuer à une source de données dans la base de connaissances Dify est un moyen fantastique d’améliorer la flexibilité et la puissance de la plateforme pour tous les utilisateurs. Notre guide de contribution facilite la prise en main. Veuillez cliquer sur le lien ci-dessous pour en savoir plus.", + "title": "Se connecter à d’autres sources de données ?" + }, + "watercrawl": { + "apiKeyPlaceholder": "Clé API de watercrawl.dev", + "configWatercrawl": "Configurer Watercrawl", + "getApiKeyLinkText": "Obtenez votre clé API sur watercrawl.dev" + } +} diff --git a/web/i18n/fr-FR/dataset-creation.ts b/web/i18n/fr-FR/dataset-creation.ts deleted file mode 100644 index 4232f04652..0000000000 --- a/web/i18n/fr-FR/dataset-creation.ts +++ /dev/null @@ -1,217 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: 'Connaissance', - }, - one: 'Choisissez la source de données', - two: 'Prétraitement et Nettoyage du Texte', - three: 'Exécutez et terminez', - }, - error: { - unavailable: 'Cette connaissance n\'est pas disponible', - }, - stepOne: { - filePreview: 'Aperçu du fichier', - pagePreview: 'Aperçu de la page', - dataSourceType: { - file: 'Importer à partir d\'un fichier texte', - notion: 'Synchroniser depuis Notion', - web: 'Synchroniser depuis le site web', - }, - uploader: { - title: 'Télécharger le fichier texte', - button: 'Faites glisser et déposez des fichiers ou des dossiers, ou', - buttonSingleFile: 'Faites glisser et déposez un fichier, ou', - browse: 'Parcourir', - tip: 'Prend en charge {{supportTypes}}. Max {{size}}MB chacun.', - validation: { - typeError: 'Type de fichier non pris en charge', - size: 'Fichier trop volumineux. Le maximum est de {{size}}MB', - count: 'Plusieurs fichiers non pris en charge', - filesNumber: 'Vous avez atteint la limite de téléchargement par lot de {{filesNumber}}.', - }, - cancel: 'Annuler', - change: 'Changer', - failed: 'Le téléchargement a échoué', - }, - notionSyncTitle: 'Notion n\'est pas connecté', - notionSyncTip: 'Pour synchroniser avec Notion, une connexion à Notion doit d\'abord être établie.', - connect: 'Aller à connecter', - button: 'suivant', - emptyDatasetCreation: 'Je veux créer un Savoir vide', - modal: { - title: 'Créer une Connaissance vide', - tip: 'Une Connaissance vide ne contiendra aucun document, et vous pouvez télécharger des documents à tout moment.', - input: 'Nom de la connaissance', - placeholder: 'Veuillez entrer', - nameNotEmpty: 'Le nom ne peut pas être vide', - nameLengthInvalid: 'Le nom doit comporter entre 1 et 40 caractères.', - cancelButton: 'Annuler', - confirmButton: 'Créer', - failed: 'Création échouée', - }, - website: { - limit: 'Limite', - fireCrawlNotConfiguredDescription: 'Configurez Firecrawl avec la clé API pour l’utiliser.', - selectAll: 'Tout sélectionner', - unknownError: 'Erreur inconnue', - firecrawlDoc: 'Docs Firecrawl', - totalPageScraped: 'Nombre total de pages extraites :', - preview: 'Aperçu', - crawlSubPage: 'Explorer les sous-pages', - configure: 'Configurer', - maxDepth: 'Profondeur maximale', - fireCrawlNotConfigured: 'Firecrawl n’est pas configuré', - firecrawlTitle: 'Extraire du contenu web avec 🔥Firecrawl', - scrapTimeInfo: 'Pages récupérées au total dans un délai de {{time}}s', - options: 'Options', - exceptionErrorTitle: 'Une exception s’est produite lors de l’exécution de la tâche Firecrawl :', - includeOnlyPaths: 'Inclure uniquement les chemins d’accès', - resetAll: 'Tout réinitialiser', - run: 'Courir', - extractOnlyMainContent: 'Extraire uniquement le contenu principal (pas d’en-têtes, de navigations, de pieds de page, etc.)', - excludePaths: 'Exclure les chemins d’accès', - maxDepthTooltip: 'Profondeur maximale à explorer par rapport à l’URL saisie. La profondeur 0 gratte simplement la page de l’URL saisie, la profondeur 1 récupère l’URL et tout ce qui suit l’URL saisie + un /, et ainsi de suite.', - jinaReaderDocLink: 'https://jina.ai/reader', - jinaReaderDoc: 'En savoir plus sur Jina Reader', - useSitemapTooltip: 'Suivez le plan du site pour explorer le site. Si ce n’est pas le cas, Jina Reader explorera de manière itérative en fonction de la pertinence de la page, produisant des pages moins nombreuses mais de meilleure qualité.', - jinaReaderNotConfiguredDescription: 'Configurez Jina Reader en saisissant votre clé API gratuite pour y accéder.', - useSitemap: 'Utiliser le sitemap', - jinaReaderNotConfigured: 'Jina Reader n’est pas configuré', - chooseProvider: 'Sélectionnez un fournisseur', - jinaReaderTitle: 'Convertir l’intégralité du site en Markdown', - watercrawlTitle: 'Extraire du contenu web avec Watercrawl', - watercrawlDoc: 'Documents Watercrawl', - waterCrawlNotConfiguredDescription: 'Configurez Watercrawl avec la clé API pour l\'utiliser.', - configureJinaReader: 'Configurer le lecteur Jina', - configureWatercrawl: 'Configurer Watercrawl', - waterCrawlNotConfigured: 'Watercrawl n\'est pas configuré', - configureFirecrawl: 'Configurer Firecrawl', - running: 'Course', - }, - cancel: 'Annuler', - }, - stepTwo: { - segmentation: 'Paramètres de bloc', - auto: 'Automatique', - autoDescription: 'Définir automatiquement les règles de découpage et de prétraitement. Il est recommandé aux utilisateurs non familiers de sélectionner ceci.', - custom: 'Personnalisé', - customDescription: 'Personnalisez les règles de morceaux, la longueur des morceaux et les règles de prétraitement, etc.', - separator: 'Identifiant de segment', - separatorPlaceholder: 'Par exemple, nouvelle ligne (\\\\n) ou séparateur spécial (tel que "***")', - maxLength: 'Longueur maximale du morceau', - overlap: 'Chevauchement de morceaux', - overlapTip: 'La définition d\'un chevauchement de morceaux peut maintenir la pertinence sémantique entre eux, améliorant ainsi l\'effet de récupération. Il est recommandé de définir 10%-25% de la taille maximale du morceau.', - overlapCheck: 'le chevauchement de morceaux ne doit pas être plus grand que la longueur maximale de morceau', - rules: 'Règles de prétraitement du texte', - removeExtraSpaces: 'Remplacer les espaces consécutifs, les sauts de ligne et les tabulations', - removeUrlEmails: 'Supprimez toutes les URL et adresses e-mail', - removeStopwords: 'Supprimez les mots vides tels que "a", "an", "the"', - preview: 'Confirmer & Aperçu', - reset: 'Réinitialiser', - indexMode: 'Mode d\'index', - qualified: 'Haute Qualité', - recommend: 'Recommander', - qualifiedTip: 'Appelez l\'interface d\'embedding système par défaut pour le traitement afin de fournir une précision plus élevée lorsque les utilisateurs font une requête.', - warning: 'Veuillez d\'abord configurer la clé API du fournisseur de modèle.', - click: 'Aller aux paramètres', - economical: 'Économique', - economicalTip: 'Utilisez des moteurs vectoriels hors ligne, des index de mots-clés, etc. pour réduire la précision sans dépenser de jetons', - QATitle: 'Segmentation en format Question & Réponse', - QATip: 'Activer cette option consommera plus de jetons', - QALanguage: 'Segmenter en utilisant', - estimateCost: 'Estimation', - estimateSegment: 'Morceaux estimés', - segmentCount: 'morceaux', - calculating: 'En calcul...', - fileSource: 'Prétraiter les documents', - notionSource: 'Prétraiter les pages', - other: 'et autres', - fileUnit: 'fichiers', - notionUnit: 'pages', - previousStep: 'Étape précédente', - nextStep: 'Enregistrer & Traiter', - save: 'Enregistrer & Traiter', - cancel: 'Annuler', - sideTipTitle: 'Pourquoi découper et prétraiter ?', - sideTipP1: 'Lors du traitement des données textuelles, le découpage et le nettoyage sont deux étapes importantes de la prétraitement.', - sideTipP2: 'La segmentation divise les longs textes en paragraphes afin que les modèles puissent mieux comprendre. Cela améliore la qualité et la pertinence des résultats du modèle.', - sideTipP3: 'Le nettoyage élimine les caractères et les formats inutiles, rendant le Savoir plus propre et plus facile à analyser.', - sideTipP4: 'Un bon découpage et nettoyage améliorent les performances du modèle, fournissant des résultats plus précis et précieux.', - previewTitle: 'Aperçu', - previewTitleButton: 'Aperçu', - previewButton: 'Passage au format Q&R', - previewSwitchTipStart: 'L\'aperçu actuel du morceau est en format texte, passer à un aperçu en format de questions-réponses va', - previewSwitchTipEnd: 'consommer des tokens supplémentaires', - characters: 'personnages', - indexSettingTip: 'Pour changer la méthode d\'index, veuillez aller à la', - retrievalSettingTip: 'Pour changer la méthode d\'index, veuillez aller à la', - datasetSettingLink: 'Paramètres de connaissance.', - webpageUnit: 'Pages', - websiteSource: 'Site web de prétraitement', - separatorTip: 'Un délimiteur est le caractère utilisé pour séparer le texte. \\n\\n et \\n sont des délimiteurs couramment utilisés pour séparer les paragraphes et les lignes. Combiné à des virgules (\\n\\n,\\n), les paragraphes seront segmentés par des lignes lorsqu’ils dépasseront la longueur maximale des morceaux. Vous pouvez également utiliser des délimiteurs spéciaux définis par vous-même (par exemple ***).', - maxLengthCheck: 'La longueur maximale des morceaux doit être inférieure à {{limit}}', - parentChunkForContext: 'Parent-chunk pour le contexte', - notAvailableForParentChild: 'Non disponible pour l’indice parent-enfant', - parentChild: 'Parent-enfant', - useQALanguage: 'Chunk utilisant le format Q&A dans', - highQualityTip: 'Une fois l’intégration terminée en mode Haute qualité, il n’est pas possible de revenir au mode économique.', - switch: 'Interrupteur', - paragraph: 'Paragraphe', - general: 'Généralités', - fullDocTip: 'L’intégralité du document est utilisée comme morceau parent et récupérée directement. Veuillez noter que pour des raisons de performance, le texte dépassant 10000 jetons sera automatiquement tronqué.', - fullDoc: 'Doc complet', - previewChunkCount: '{{count}} Tronçons estimés', - childChunkForRetrieval: 'Child-chunk pour l’extraction', - parentChildDelimiterTip: 'Un délimiteur est le caractère utilisé pour séparer le texte. \\n\\n est recommandé pour diviser le document d’origine en gros morceaux parents. Vous pouvez également utiliser des délimiteurs spéciaux définis par vous-même.', - qaSwitchHighQualityTipTitle: 'Le format Q&R nécessite une méthode d’indexation de haute qualité', - notAvailableForQA: 'Non disponible pour l’indice Q&R', - previewChunk: 'Aperçu du morceau', - parentChildTip: 'Lors de l’utilisation du mode parent-enfant, le morceau enfant est utilisé pour la récupération et le morceau parent est utilisé pour le rappel en tant que contexte.', - paragraphTip: 'Ce mode divise le texte en paragraphes en fonction des délimiteurs et de la longueur maximale du morceau, en utilisant le texte scindé comme morceau parent pour la récupération.', - qaSwitchHighQualityTipContent: 'Actuellement, seule la méthode d’index de haute qualité prend en charge la segmentation du format Q&R. Vous souhaitez passer en mode haute qualité ?', - previewChunkTip: 'Cliquez sur le bouton « Preview Chunk » sur la gauche pour charger l’aperçu', - parentChildChunkDelimiterTip: 'Un délimiteur est le caractère utilisé pour séparer le texte. \\n est recommandé pour diviser les blocs parents en petits blocs enfants. Vous pouvez également utiliser des délimiteurs spéciaux définis par vous-même.', - generalTip: 'Mode général de segmentation du texte, les morceaux récupérés et rappelés sont les mêmes.', - qaTip: 'Lorsque vous utilisez des données de questions-réponses structurées, vous pouvez créer des documents qui associent des questions et des réponses. Ces documents sont indexés en fonction de la partie question, ce qui permet au système de récupérer des réponses pertinentes en fonction de la similarité des requêtes.', - }, - stepThree: { - creationTitle: '🎉 Connaissance créée', - creationContent: 'Nous avons automatiquement nommé le Savoir, vous pouvez le modifier à tout moment', - label: 'Nom de la connaissance', - additionTitle: '🎉 Document téléchargé', - additionP1: 'Le document a été téléchargé dans la Connaissance', - additionP2: ', vous pouvez le trouver dans la liste des documents de la Connaissance.', - stop: 'Arrêter le traitement', - resume: 'Reprendre le traitement', - navTo: 'Aller au document', - sideTipTitle: 'Qu\'est-ce qui suit ?', - sideTipContent: 'Après l\'indexation du document, la Connaissance peut être intégrée dans l\'application en tant que contexte, vous pouvez trouver le paramètre de contexte sur la page d\'orchestration de prompt. Vous pouvez également le créer en tant que plugin d\'indexation ChatGPT ind', - modelTitle: 'Êtes-vous sûr de vouloir arrêter l\'embedding ?', - modelContent: 'Si vous devez reprendre le traitement plus tard, vous continuerez à partir de l\'endroit où vous vous êtes arrêté.', - modelButtonConfirm: 'Confirmer', - modelButtonCancel: 'Annuler', - }, - firecrawl: { - apiKeyPlaceholder: 'Clé API de firecrawl.dev', - configFirecrawl: 'Configurer 🔥Firecrawl', - getApiKeyLinkText: 'Obtenez votre clé API auprès de firecrawl.dev', - }, - jinaReader: { - getApiKeyLinkText: 'Obtenez votre clé API gratuite chez jina.ai', - apiKeyPlaceholder: 'Clé API de jina.ai', - configJinaReader: 'Configurer Jina Reader', - }, - otherDataSource: { - learnMore: 'Pour en savoir plus', - description: 'Actuellement, la base de connaissances de Dify ne dispose que de sources de données limitées. Contribuer à une source de données dans la base de connaissances Dify est un moyen fantastique d’améliorer la flexibilité et la puissance de la plateforme pour tous les utilisateurs. Notre guide de contribution facilite la prise en main. Veuillez cliquer sur le lien ci-dessous pour en savoir plus.', - title: 'Se connecter à d’autres sources de données ?', - }, - watercrawl: { - apiKeyPlaceholder: 'Clé API de watercrawl.dev', - configWatercrawl: 'Configurer Watercrawl', - getApiKeyLinkText: 'Obtenez votre clé API sur watercrawl.dev', - }, -} - -export default translation diff --git a/web/i18n/fr-FR/dataset-documents.json b/web/i18n/fr-FR/dataset-documents.json new file mode 100644 index 0000000000..95675a37cc --- /dev/null +++ b/web/i18n/fr-FR/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "Documents", + "desc": "Tous les fichiers de la Connaissance sont affichés ici, et l'ensemble de la Connaissance peut être lié aux citations Dify ou indexé via le plugin Chat.", + "addFile": "ajouter un fichier", + "addPages": "Ajouter des Pages", + "table": { + "header": { + "fileName": "NOM DU FICHIER", + "words": "MOTS", + "hitCount": "NOMBRE DE RÉCUPÉRATIONS", + "uploadTime": "TEMPS DE TÉLÉCHARGEMENT", + "status": "STATUT", + "action": "ACTION", + "chunkingMode": "MODE DE MORCEAU" + }, + "rename": "Renommer", + "name": "Nom" + }, + "action": { + "uploadFile": "Télécharger un nouveau fichier", + "settings": "Paramètres de segment", + "addButton": "Ajouter un morceau", + "add": "Ajouter un morceau", + "batchAdd": "Ajout en lot", + "archive": "Archive", + "unarchive": "Décompresser", + "delete": "Supprimer", + "enableWarning": "Le fichier archivé ne peut pas être activé", + "sync": "Synchroniser", + "pause": "Pause", + "resume": "Reprendre" + }, + "index": { + "enable": "Activer", + "disable": "Désactiver", + "all": "Tout", + "enableTip": "Le fichier peut être indexé", + "disableTip": "Le fichier ne peut pas être indexé" + }, + "status": { + "queuing": "Mise en file d'attente", + "indexing": "Indexation", + "paused": "En pause", + "error": "Erreur", + "available": "Disponible", + "enabled": "Activé", + "disabled": "Désactivé", + "archived": "Archivé" + }, + "empty": { + "title": "Il n'y a pas encore de documentation", + "upload": { + "tip": "Vous pouvez télécharger des fichiers, synchroniser à partir du site web, ou à partir d'applications web comme Notion, GitHub, etc." + }, + "sync": { + "tip": "Dify téléchargera périodiquement des fichiers de votre Notion et terminera le traitement." + } + }, + "delete": { + "title": "Êtes-vous sûr de vouloir supprimer ?", + "content": "Si vous avez besoin de reprendre le traitement plus tard, vous continuerez à partir de l'endroit où vous vous êtes arrêté" + }, + "batchModal": { + "title": "Ajouter des lots de segments", + "csvUploadTitle": "Faites glisser et déposez votre fichier CSV ici, ou", + "browse": "parcourir", + "tip": "Le fichier CSV doit se conformer à la structure suivante :", + "question": "question", + "answer": "réponse", + "contentTitle": "contenu du bloc", + "content": "contenu", + "template": "Téléchargez le modèle ici", + "cancel": "Annuler", + "run": "Exécuter le lot", + "runError": "L'exécution du lot a échoué", + "processing": "Dans le traitement par lots", + "completed": "Importation terminée", + "error": "Erreur d'Importation", + "ok": "D'accord" + }, + "addUrl": "Ajouter une URL", + "learnMore": "Pour en savoir plus", + "sort": { + "uploadTime": "Heure de téléchargement", + "hitCount": "Nombre de récupérations" + } + }, + "metadata": { + "title": "Métadonnées", + "desc": "L'étiquetage des métadonnées pour les documents permet à l'IA d'y accéder en temps opportun et expose la source des références pour les utilisateurs.", + "dateTimeFormat": "MMMM D, YYYY hh:mm A", + "docTypeSelectTitle": "Veuillez sélectionner un type de document", + "docTypeChangeTitle": "Changer le type de document", + "docTypeSelectWarning": "Si le type de document est modifié, les métadonnées actuellement remplies ne seront plus conservées", + "firstMetaAction": "Allons-y", + "placeholder": { + "add": "Ajouter", + "select": "Sélectionner" + }, + "source": { + "upload_file": "Télécharger le fichier", + "notion": "Synchroniser le formulaire depuis Notion", + "github": "Synchroniser à partir de Github", + "local_file": "Fichier local", + "online_document": "Document en ligne", + "website_crawl": "Exploration du site Web" + }, + "type": { + "book": "Livre", + "webPage": "Page Web", + "paper": "Papier", + "socialMediaPost": "Publication sur les Réseaux Sociaux", + "personalDocument": "Document Personnel", + "businessDocument": "Document Commercial", + "IMChat": "Chat IM", + "wikipediaEntry": "Entrée Wikipédia", + "notion": "Synchroniser depuis Notion", + "github": "Synchroniser depuis Github", + "technicalParameters": "Paramètres Techniques" + }, + "field": { + "processRule": { + "processDoc": "Document de Processus", + "segmentRule": "Règle de Segment", + "segmentLength": "Longueur des Morceaux", + "processClean": "Processus de Nettoyage du Texte" + }, + "book": { + "title": "Titre", + "language": "Langue", + "author": "Auteur", + "publisher": "Éditeur", + "publicationDate": "Date de publication", + "ISBN": "ISBN", + "category": "Catégorie" + }, + "webPage": { + "title": "Titre", + "url": "URL", + "language": "Langue", + "authorPublisher": "Auteur/Éditeur", + "publishDate": "Date de publication", + "topicKeywords": "Sujets/Mots-clés", + "description": "Description" + }, + "paper": { + "title": "Titre", + "language": "Langue", + "author": "Auteur", + "publishDate": "Date de publication", + "journalConferenceName": "Nom du Journal/Conférence", + "volumeIssuePage": "Volume/Numéro/Page", + "DOI": "DOI", + "topicsKeywords": "Sujets/Mots-clés", + "abstract": "Résumé" + }, + "socialMediaPost": { + "platform": "Plateforme", + "authorUsername": "Auteur/Nom d'utilisateur", + "publishDate": "Date de publication", + "postURL": "URL de publication", + "topicsTags": "Sujets/Tags" + }, + "personalDocument": { + "title": "Titre", + "author": "Auteur", + "creationDate": "Date de Création", + "lastModifiedDate": "Date de Dernière Modification", + "documentType": "Type de Document", + "tagsCategory": "Tags/Catégorie" + }, + "businessDocument": { + "title": "Titre", + "author": "Auteur", + "creationDate": "Date de création", + "lastModifiedDate": "Date de Dernière Modification", + "documentType": "Type de Document", + "departmentTeam": "Département/Équipe" + }, + "IMChat": { + "chatPlatform": "Plateforme de Chat", + "chatPartiesGroupName": "Nom du groupe/Parties de discussion", + "participants": "Participants", + "startDate": "Date de Début", + "endDate": "Date de fin", + "topicsKeywords": "Sujets/Mots-clés", + "fileType": "Type de fichier" + }, + "wikipediaEntry": { + "title": "Titre", + "language": "Langue", + "webpageURL": "URL de la page web", + "editorContributor": "Éditeur/Contributeur", + "lastEditDate": "Date de dernière modification", + "summaryIntroduction": "Résumé/Introduction" + }, + "notion": { + "title": "Titre", + "language": "Langue", + "author": "Auteur", + "createdTime": "Heure de création", + "lastModifiedTime": "Dernière Modification", + "url": "URL", + "tag": "Étiquette", + "description": "Description" + }, + "github": { + "repoName": "Nom du dépôt", + "repoDesc": "Description du dépôt", + "repoOwner": "Propriétaire du dépôt", + "fileName": "Nom du Fichier", + "filePath": "Chemin du fichier", + "programmingLang": "Langage de programmation", + "url": "URL", + "license": "Licence", + "lastCommitTime": "Heure du dernier commit", + "lastCommitAuthor": "Auteur du dernier commit" + }, + "originInfo": { + "originalFilename": "Nom de fichier original", + "originalFileSize": "Taille originale du fichier", + "uploadDate": "Date de téléchargement", + "lastUpdateDate": "Date de dernière mise à jour", + "source": "Source" + }, + "technicalParameters": { + "segmentSpecification": "Spécification des morceaux", + "segmentLength": "Longueur des morceaux", + "avgParagraphLength": "Longueur moyenne de paragraphe", + "paragraphs": "Paragraphes", + "hitCount": "Nombre de récupérations", + "embeddingTime": "Temps d'incorporation", + "embeddedSpend": "Dépenses intégrées" + } + }, + "languageMap": { + "zh": "Chinois", + "en": "Anglais", + "es": "Espagnol", + "fr": "Français", + "de": "Allemand", + "ja": "Japonais", + "ko": "Coréen", + "ru": "Russe", + "ar": "Arabe", + "pt": "Portugais", + "it": "Italien", + "nl": "Néerlandais", + "pl": "Polonais", + "sv": "Suédois", + "tr": "Turc", + "he": "Hébreu", + "hi": "Hindi", + "da": "Danois", + "fi": "Finlandais", + "no": "Norvégien", + "hu": "Hongrois", + "el": "Grec", + "cs": "Tchèque", + "th": "Thaï", + "id": "Indonésien" + }, + "categoryMap": { + "book": { + "fiction": "Fiction", + "biography": "Biographie", + "history": "Histoire", + "science": "Science", + "technology": "Technologie", + "education": "Éducation", + "philosophy": "Philosophie", + "religion": "Religion", + "socialSciences": "Sciences Sociales", + "art": "Art", + "travel": "Voyage", + "health": "Santé", + "selfHelp": "AutoAssistance", + "businessEconomics": "Économie d'entreprise", + "cooking": "Cuisson", + "childrenYoungAdults": "EnfantsJeunesAdultes", + "comicsGraphicNovels": "BandesDessinéesRomansGraphiques", + "poetry": "Poésie", + "drama": "Drame", + "other": "Autre" + }, + "personalDoc": { + "notes": "Notes", + "blogDraft": "Brouillon de Blog", + "diary": "Journal", + "researchReport": "Rapport de Recherche", + "bookExcerpt": "Extrait de livre", + "schedule": "Programme", + "list": "Liste", + "projectOverview": "Aperçu du Projet", + "photoCollection": "Collection de Photos", + "creativeWriting": "Écriture Créative", + "codeSnippet": "Extrait de Code", + "designDraft": "Projet de Conception", + "personalResume": "Curriculum Vitae Personnel", + "other": "Autre" + }, + "businessDoc": { + "meetingMinutes": "Compte-rendu de Réunion", + "researchReport": "Rapport de Recherche", + "proposal": "Proposition", + "employeeHandbook": "Manuel de l'employé", + "trainingMaterials": "Matériaux de Formation", + "requirementsDocument": "Document de Spécifications", + "designDocument": "Document de Conception", + "productSpecification": "Spécification du produit", + "financialReport": "Rapport Financier", + "marketAnalysis": "Analyse de marché", + "projectPlan": "Plan de Projet", + "teamStructure": "Structure de l'équipe", + "policiesProcedures": "Politiques & Procédures", + "contractsAgreements": "Contrats & Accords", + "emailCorrespondence": "Correspondance par Email", + "other": "Autre" + } + } + }, + "embedding": { + "processing": "Traitement des embeddings...", + "paused": "Intégration en pause", + "completed": "Intégration terminée", + "error": "Erreur d'embedding", + "docName": "Prétraitement du document", + "mode": "Règle de segmentation", + "segmentLength": "Longueur des morceaux", + "textCleaning": "Pré-définition du texte et nettoyage", + "segments": "Paragraphes", + "highQuality": "Mode haute qualité", + "economy": "Mode économique", + "estimate": "Consommation estimée", + "stop": "Arrêtez le traitement", + "resume": "Reprendre le traitement", + "automatic": "Automatique", + "custom": "Personnalisé", + "previewTip": "L'aperçu du paragraphe sera disponible après la fin de l'embedding.", + "childMaxTokens": "Enfant", + "hierarchical": "Parent-enfant", + "pause": "Pause", + "parentMaxTokens": "Parent", + "waiting": "En attente d'incorporation..." + }, + "segment": { + "paragraphs": "Paragraphes", + "keywords": "Mots Clés", + "addKeyWord": "Ajouter un mot-clé", + "keywordError": "La longueur maximale du mot-clé est de 20", + "hitCount": "Nombre de récupérations", + "vectorHash": "Vector hash: ", + "questionPlaceholder": "ajoutez la question ici", + "questionEmpty": "La question ne peut pas être vide", + "answerPlaceholder": "ajoutez une réponse ici", + "answerEmpty": "La réponse ne peut pas être vide", + "contentPlaceholder": "ajoutez du contenu ici", + "contentEmpty": "Le contenu ne peut pas être vide", + "newTextSegment": "Nouveau Segment de Texte", + "newQaSegment": "Nouveau Segment Q&R", + "delete": "Supprimer ce morceau ?", + "chunks_other": "MORCEAUX", + "childChunks_other": "MORCEAUX ENFANTS", + "clearFilter": "Effacer le filtre", + "newChunk": "Nouveau Chunk", + "childChunk": "Enfant-Chunk", + "newChildChunk": "Nouveau morceau enfant", + "addChunk": "Ajouter un morceau", + "chunkAdded": "1 morceau ajouté", + "editChunk": "Modifier le morceau", + "regenerationConfirmMessage": "La régénération des blocs enfants remplacera les blocs enfants actuels, y compris les blocs modifiés et les blocs nouvellement ajoutés. La régénération ne peut pas être annulée.", + "regenerationSuccessTitle": "Régénération terminée", + "edited": "ÉDITION", + "collapseChunks": "Réduire les morceaux", + "childChunkAdded": "1 morceau enfant ajouté", + "addAnother": "Ajouter un autre", + "searchResults_one": "RÉSULTAT", + "regeneratingTitle": "Régénération de blocs enfants", + "expandChunks": "Développer des blocs", + "characters_other": "caractères", + "editedAt": "Édité le", + "dateTimeFormat": "DD/MM/YYYY HH:mm", + "searchResults_other": "RÉSULTATS", + "regenerationSuccessMessage": "Vous pouvez fermer cette fenêtre.", + "parentChunks_one": "MORCEAU PARENT", + "regenerationConfirmTitle": "Voulez-vous régénérer des morceaux enfants ?", + "chunks_one": "MORCEAU", + "childChunks_one": "MORCEAU ENFANT", + "parentChunk": "Parent-Chunk", + "chunkDetail": "Détail du morceau", + "chunk": "Morceau", + "parentChunks_other": "MORCEAUX PARENTS", + "regeneratingMessage": "Cela peut prendre un moment, veuillez patienter...", + "addChildChunk": "Ajouter un morceau enfant", + "editParentChunk": "Modifier le bloc parent", + "characters_one": "personnage", + "searchResults_zero": "RÉSULTAT", + "empty": "Aucun Chunk trouvé", + "editChildChunk": "Modifier le morceau enfant", + "keywordDuplicate": "Le mot-clé existe déjà", + "keywordEmpty": "Le mot-clé ne peut pas être vide.", + "allFilesUploaded": "Tous les fichiers doivent être téléchargés avant de sauvegarder" + } +} diff --git a/web/i18n/fr-FR/dataset-documents.ts b/web/i18n/fr-FR/dataset-documents.ts deleted file mode 100644 index 4548635bfe..0000000000 --- a/web/i18n/fr-FR/dataset-documents.ts +++ /dev/null @@ -1,408 +0,0 @@ -const translation = { - list: { - title: 'Documents', - desc: 'Tous les fichiers de la Connaissance sont affichés ici, et l\'ensemble de la Connaissance peut être lié aux citations Dify ou indexé via le plugin Chat.', - addFile: 'ajouter un fichier', - addPages: 'Ajouter des Pages', - table: { - header: { - fileName: 'NOM DU FICHIER', - words: 'MOTS', - hitCount: 'NOMBRE DE RÉCUPÉRATIONS', - uploadTime: 'TEMPS DE TÉLÉCHARGEMENT', - status: 'STATUT', - action: 'ACTION', - chunkingMode: 'MODE DE MORCEAU', - }, - rename: 'Renommer', - name: 'Nom', - }, - action: { - uploadFile: 'Télécharger un nouveau fichier', - settings: 'Paramètres de segment', - addButton: 'Ajouter un morceau', - add: 'Ajouter un morceau', - batchAdd: 'Ajout en lot', - archive: 'Archive', - unarchive: 'Décompresser', - delete: 'Supprimer', - enableWarning: 'Le fichier archivé ne peut pas être activé', - sync: 'Synchroniser', - pause: 'Pause', - resume: 'Reprendre', - }, - index: { - enable: 'Activer', - disable: 'Désactiver', - all: 'Tout', - enableTip: 'Le fichier peut être indexé', - disableTip: 'Le fichier ne peut pas être indexé', - }, - status: { - queuing: 'Mise en file d\'attente', - indexing: 'Indexation', - paused: 'En pause', - error: 'Erreur', - available: 'Disponible', - enabled: 'Activé', - disabled: 'Désactivé', - archived: 'Archivé', - }, - empty: { - title: 'Il n\'y a pas encore de documentation', - upload: { - tip: 'Vous pouvez télécharger des fichiers, synchroniser à partir du site web, ou à partir d\'applications web comme Notion, GitHub, etc.', - }, - sync: { - tip: 'Dify téléchargera périodiquement des fichiers de votre Notion et terminera le traitement.', - }, - }, - delete: { - title: 'Êtes-vous sûr de vouloir supprimer ?', - content: 'Si vous avez besoin de reprendre le traitement plus tard, vous continuerez à partir de l\'endroit où vous vous êtes arrêté', - }, - batchModal: { - title: 'Ajouter des lots de segments', - csvUploadTitle: 'Faites glisser et déposez votre fichier CSV ici, ou', - browse: 'parcourir', - tip: 'Le fichier CSV doit se conformer à la structure suivante :', - question: 'question', - answer: 'réponse', - contentTitle: 'contenu du bloc', - content: 'contenu', - template: 'Téléchargez le modèle ici', - cancel: 'Annuler', - run: 'Exécuter le lot', - runError: 'L\'exécution du lot a échoué', - processing: 'Dans le traitement par lots', - completed: 'Importation terminée', - error: 'Erreur d\'Importation', - ok: 'D\'accord', - }, - addUrl: 'Ajouter une URL', - learnMore: 'Pour en savoir plus', - sort: { - uploadTime: 'Heure de téléchargement', - hitCount: 'Nombre de récupérations', - }, - }, - metadata: { - title: 'Métadonnées', - desc: 'L\'étiquetage des métadonnées pour les documents permet à l\'IA d\'y accéder en temps opportun et expose la source des références pour les utilisateurs.', - dateTimeFormat: 'MMMM D, YYYY hh:mm A', - docTypeSelectTitle: 'Veuillez sélectionner un type de document', - docTypeChangeTitle: 'Changer le type de document', - docTypeSelectWarning: - 'Si le type de document est modifié, les métadonnées actuellement remplies ne seront plus conservées', - firstMetaAction: 'Allons-y', - placeholder: { - add: 'Ajouter', - select: 'Sélectionner', - }, - source: { - upload_file: 'Télécharger le fichier', - notion: 'Synchroniser le formulaire depuis Notion', - github: 'Synchroniser à partir de Github', - local_file: 'Fichier local', - online_document: 'Document en ligne', - website_crawl: 'Exploration du site Web', - }, - type: { - book: 'Livre', - webPage: 'Page Web', - paper: 'Papier', - socialMediaPost: 'Publication sur les Réseaux Sociaux', - personalDocument: 'Document Personnel', - businessDocument: 'Document Commercial', - IMChat: 'Chat IM', - wikipediaEntry: 'Entrée Wikipédia', - notion: 'Synchroniser depuis Notion', - github: 'Synchroniser depuis Github', - technicalParameters: 'Paramètres Techniques', - }, - field: { - processRule: { - processDoc: 'Document de Processus', - segmentRule: 'Règle de Segment', - segmentLength: 'Longueur des Morceaux', - processClean: 'Processus de Nettoyage du Texte', - }, - book: { - title: 'Titre', - language: 'Langue', - author: 'Auteur', - publisher: 'Éditeur', - publicationDate: 'Date de publication', - ISBN: 'ISBN', - category: 'Catégorie', - }, - webPage: { - title: 'Titre', - url: 'URL', - language: 'Langue', - authorPublisher: 'Auteur/Éditeur', - publishDate: 'Date de publication', - topicKeywords: 'Sujets/Mots-clés', - description: 'Description', - }, - paper: { - title: 'Titre', - language: 'Langue', - author: 'Auteur', - publishDate: 'Date de publication', - journalConferenceName: 'Nom du Journal/Conférence', - volumeIssuePage: 'Volume/Numéro/Page', - DOI: 'DOI', - topicsKeywords: 'Sujets/Mots-clés', - abstract: 'Résumé', - }, - socialMediaPost: { - platform: 'Plateforme', - authorUsername: 'Auteur/Nom d\'utilisateur', - publishDate: 'Date de publication', - postURL: 'URL de publication', - topicsTags: 'Sujets/Tags', - }, - personalDocument: { - title: 'Titre', - author: 'Auteur', - creationDate: 'Date de Création', - lastModifiedDate: 'Date de Dernière Modification', - documentType: 'Type de Document', - tagsCategory: 'Tags/Catégorie', - }, - businessDocument: { - title: 'Titre', - author: 'Auteur', - creationDate: 'Date de création', - lastModifiedDate: 'Date de Dernière Modification', - documentType: 'Type de Document', - departmentTeam: 'Département/Équipe', - }, - IMChat: { - chatPlatform: 'Plateforme de Chat', - chatPartiesGroupName: 'Nom du groupe/Parties de discussion', - participants: 'Participants', - startDate: 'Date de Début', - endDate: 'Date de fin', - topicsKeywords: 'Sujets/Mots-clés', - fileType: 'Type de fichier', - }, - wikipediaEntry: { - title: 'Titre', - language: 'Langue', - webpageURL: 'URL de la page web', - editorContributor: 'Éditeur/Contributeur', - lastEditDate: 'Date de dernière modification', - summaryIntroduction: 'Résumé/Introduction', - }, - notion: { - title: 'Titre', - language: 'Langue', - author: 'Auteur', - createdTime: 'Heure de création', - lastModifiedTime: 'Dernière Modification', - url: 'URL', - tag: 'Étiquette', - description: 'Description', - }, - github: { - repoName: 'Nom du dépôt', - repoDesc: 'Description du dépôt', - repoOwner: 'Propriétaire du dépôt', - fileName: 'Nom du Fichier', - filePath: 'Chemin du fichier', - programmingLang: 'Langage de programmation', - url: 'URL', - license: 'Licence', - lastCommitTime: 'Heure du dernier commit', - lastCommitAuthor: 'Auteur du dernier commit', - }, - originInfo: { - originalFilename: 'Nom de fichier original', - originalFileSize: 'Taille originale du fichier', - uploadDate: 'Date de téléchargement', - lastUpdateDate: 'Date de dernière mise à jour', - source: 'Source', - }, - technicalParameters: { - segmentSpecification: 'Spécification des morceaux', - segmentLength: 'Longueur des morceaux', - avgParagraphLength: 'Longueur moyenne de paragraphe', - paragraphs: 'Paragraphes', - hitCount: 'Nombre de récupérations', - embeddingTime: 'Temps d\'incorporation', - embeddedSpend: 'Dépenses intégrées', - }, - }, - languageMap: { - zh: 'Chinois', - en: 'Anglais', - es: 'Espagnol', - fr: 'Français', - de: 'Allemand', - ja: 'Japonais', - ko: 'Coréen', - ru: 'Russe', - ar: 'Arabe', - pt: 'Portugais', - it: 'Italien', - nl: 'Néerlandais', - pl: 'Polonais', - sv: 'Suédois', - tr: 'Turc', - he: 'Hébreu', - hi: 'Hindi', - da: 'Danois', - fi: 'Finlandais', - no: 'Norvégien', - hu: 'Hongrois', - el: 'Grec', - cs: 'Tchèque', - th: 'Thaï', - id: 'Indonésien', - }, - categoryMap: { - book: { - fiction: 'Fiction', - biography: 'Biographie', - history: 'Histoire', - science: 'Science', - technology: 'Technologie', - education: 'Éducation', - philosophy: 'Philosophie', - religion: 'Religion', - socialSciences: 'Sciences Sociales', - art: 'Art', - travel: 'Voyage', - health: 'Santé', - selfHelp: 'AutoAssistance', - businessEconomics: 'Économie d\'entreprise', - cooking: 'Cuisson', - childrenYoungAdults: 'EnfantsJeunesAdultes', - comicsGraphicNovels: 'BandesDessinéesRomansGraphiques', - poetry: 'Poésie', - drama: 'Drame', - other: 'Autre', - }, - personalDoc: { - notes: 'Notes', - blogDraft: 'Brouillon de Blog', - diary: 'Journal', - researchReport: 'Rapport de Recherche', - bookExcerpt: 'Extrait de livre', - schedule: 'Programme', - list: 'Liste', - projectOverview: 'Aperçu du Projet', - photoCollection: 'Collection de Photos', - creativeWriting: 'Écriture Créative', - codeSnippet: 'Extrait de Code', - designDraft: 'Projet de Conception', - personalResume: 'Curriculum Vitae Personnel', - other: 'Autre', - }, - businessDoc: { - meetingMinutes: 'Compte-rendu de Réunion', - researchReport: 'Rapport de Recherche', - proposal: 'Proposition', - employeeHandbook: 'Manuel de l\'employé', - trainingMaterials: 'Matériaux de Formation', - requirementsDocument: 'Document de Spécifications', - designDocument: 'Document de Conception', - productSpecification: 'Spécification du produit', - financialReport: 'Rapport Financier', - marketAnalysis: 'Analyse de marché', - projectPlan: 'Plan de Projet', - teamStructure: 'Structure de l\'équipe', - policiesProcedures: 'Politiques & Procédures', - contractsAgreements: 'Contrats & Accords', - emailCorrespondence: 'Correspondance par Email', - other: 'Autre', - }, - }, - }, - embedding: { - processing: 'Traitement des embeddings...', - paused: 'Intégration en pause', - completed: 'Intégration terminée', - error: 'Erreur d\'embedding', - docName: 'Prétraitement du document', - mode: 'Règle de segmentation', - segmentLength: 'Longueur des morceaux', - textCleaning: 'Pré-définition du texte et nettoyage', - segments: 'Paragraphes', - highQuality: 'Mode haute qualité', - economy: 'Mode économique', - estimate: 'Consommation estimée', - stop: 'Arrêtez le traitement', - resume: 'Reprendre le traitement', - automatic: 'Automatique', - custom: 'Personnalisé', - previewTip: 'L\'aperçu du paragraphe sera disponible après la fin de l\'embedding.', - childMaxTokens: 'Enfant', - hierarchical: 'Parent-enfant', - pause: 'Pause', - parentMaxTokens: 'Parent', - waiting: 'En attente d\'incorporation...', - }, - segment: { - paragraphs: 'Paragraphes', - keywords: 'Mots Clés', - addKeyWord: 'Ajouter un mot-clé', - keywordError: 'La longueur maximale du mot-clé est de 20', - hitCount: 'Nombre de récupérations', - vectorHash: 'Vector hash: ', - questionPlaceholder: 'ajoutez la question ici', - questionEmpty: 'La question ne peut pas être vide', - answerPlaceholder: 'ajoutez une réponse ici', - answerEmpty: 'La réponse ne peut pas être vide', - contentPlaceholder: 'ajoutez du contenu ici', - contentEmpty: 'Le contenu ne peut pas être vide', - newTextSegment: 'Nouveau Segment de Texte', - newQaSegment: 'Nouveau Segment Q&R', - delete: 'Supprimer ce morceau ?', - chunks_other: 'MORCEAUX', - childChunks_other: 'MORCEAUX ENFANTS', - clearFilter: 'Effacer le filtre', - newChunk: 'Nouveau Chunk', - childChunk: 'Enfant-Chunk', - newChildChunk: 'Nouveau morceau enfant', - addChunk: 'Ajouter un morceau', - chunkAdded: '1 morceau ajouté', - editChunk: 'Modifier le morceau', - regenerationConfirmMessage: 'La régénération des blocs enfants remplacera les blocs enfants actuels, y compris les blocs modifiés et les blocs nouvellement ajoutés. La régénération ne peut pas être annulée.', - regenerationSuccessTitle: 'Régénération terminée', - edited: 'ÉDITION', - collapseChunks: 'Réduire les morceaux', - childChunkAdded: '1 morceau enfant ajouté', - addAnother: 'Ajouter un autre', - searchResults_one: 'RÉSULTAT', - regeneratingTitle: 'Régénération de blocs enfants', - expandChunks: 'Développer des blocs', - characters_other: 'caractères', - editedAt: 'Édité le', - dateTimeFormat: 'DD/MM/YYYY HH:mm', - searchResults_other: 'RÉSULTATS', - regenerationSuccessMessage: 'Vous pouvez fermer cette fenêtre.', - parentChunks_one: 'MORCEAU PARENT', - regenerationConfirmTitle: 'Voulez-vous régénérer des morceaux enfants ?', - chunks_one: 'MORCEAU', - childChunks_one: 'MORCEAU ENFANT', - parentChunk: 'Parent-Chunk', - chunkDetail: 'Détail du morceau', - chunk: 'Morceau', - parentChunks_other: 'MORCEAUX PARENTS', - regeneratingMessage: 'Cela peut prendre un moment, veuillez patienter...', - addChildChunk: 'Ajouter un morceau enfant', - editParentChunk: 'Modifier le bloc parent', - characters_one: 'personnage', - searchResults_zero: 'RÉSULTAT', - empty: 'Aucun Chunk trouvé', - editChildChunk: 'Modifier le morceau enfant', - keywordDuplicate: 'Le mot-clé existe déjà', - keywordEmpty: 'Le mot-clé ne peut pas être vide.', - allFilesUploaded: 'Tous les fichiers doivent être téléchargés avant de sauvegarder', - }, -} - -export default translation diff --git a/web/i18n/fr-FR/dataset-hit-testing.json b/web/i18n/fr-FR/dataset-hit-testing.json new file mode 100644 index 0000000000..f3724dc8cb --- /dev/null +++ b/web/i18n/fr-FR/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "Test de Récupération", + "desc": "Testez l'effet d'impact de la Connaissance basée sur le texte de la requête donnée.", + "dateTimeFormat": "JJ/MM/AAAA hh:mm A", + "table": { + "header": { + "source": "Source", + "time": "Temps", + "queryContent": "Contenu de la requête" + } + }, + "input": { + "title": "Texte source", + "placeholder": "Veuillez entrer un texte, une phrase déclarative courte est recommandée.", + "countWarning": "Jusqu'à 200 caractères.", + "indexWarning": "Connaissances de haute qualité uniquement.", + "testing": "Test" + }, + "hit": { + "title": "PARAGRAPHES DE RÉCUPÉRATION", + "emptyTip": "Les résultats des tests de récupération s'afficheront ici" + }, + "noRecentTip": "Aucun résultat de requête récent ici", + "viewChart": "Voir GRAPHIQUE VECTORIEL", + "settingTitle": "Réglage de récupération", + "viewDetail": "Voir les détails", + "hitChunks": "Appuyez sur {{num}} morceaux enfants", + "records": "Archives", + "chunkDetail": "Détail du morceau", + "open": "Ouvrir", + "keyword": "Mots-clés", + "imageUploader": { + "tip": "Téléchargez ou glissez-déposez des images (Max {{batchCount}}, {{size}} Mo chacune)", + "tooltip": "Télécharger des images (Max {{batchCount}}, {{size}} Mo chacune)", + "dropZoneTip": "Faites glisser le fichier ici pour le télécharger", + "singleChunkAttachmentLimitTooltip": "Le nombre de pièces jointes à bloc unique ne peut pas dépasser {{limit}}" + } +} diff --git a/web/i18n/fr-FR/dataset-hit-testing.ts b/web/i18n/fr-FR/dataset-hit-testing.ts deleted file mode 100644 index 5ca06c2ca5..0000000000 --- a/web/i18n/fr-FR/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - title: 'Test de Récupération', - desc: 'Testez l\'effet d\'impact de la Connaissance basée sur le texte de la requête donnée.', - dateTimeFormat: 'JJ/MM/AAAA hh:mm A', - table: { - header: { - source: 'Source', - time: 'Temps', - queryContent: 'Contenu de la requête', - }, - }, - input: { - title: 'Texte source', - placeholder: 'Veuillez entrer un texte, une phrase déclarative courte est recommandée.', - countWarning: 'Jusqu\'à 200 caractères.', - indexWarning: 'Connaissances de haute qualité uniquement.', - testing: 'Test', - }, - hit: { - title: 'PARAGRAPHES DE RÉCUPÉRATION', - emptyTip: 'Les résultats des tests de récupération s\'afficheront ici', - }, - noRecentTip: 'Aucun résultat de requête récent ici', - viewChart: 'Voir GRAPHIQUE VECTORIEL', - settingTitle: 'Réglage de récupération', - viewDetail: 'Voir les détails', - hitChunks: 'Appuyez sur {{num}} morceaux enfants', - records: 'Archives', - chunkDetail: 'Détail du morceau', - open: 'Ouvrir', - keyword: 'Mots-clés', - imageUploader: { - tip: 'Téléchargez ou glissez-déposez des images (Max {{batchCount}}, {{size}} Mo chacune)', - tooltip: 'Télécharger des images (Max {{batchCount}}, {{size}} Mo chacune)', - dropZoneTip: 'Faites glisser le fichier ici pour le télécharger', - singleChunkAttachmentLimitTooltip: 'Le nombre de pièces jointes à bloc unique ne peut pas dépasser {{limit}}', - }, -} - -export default translation diff --git a/web/i18n/fr-FR/dataset-pipeline.json b/web/i18n/fr-FR/dataset-pipeline.json new file mode 100644 index 0000000000..d80c151571 --- /dev/null +++ b/web/i18n/fr-FR/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "createFromScratch": { + "title": "Pipeline de connaissances vide", + "description": "Créez un pipeline personnalisé à partir de zéro avec un contrôle total sur le traitement et la structure des données." + }, + "caution": "Prudence", + "createKnowledge": "Créer des connaissances", + "successTip": "Création réussie d’une base de connaissances", + "backToKnowledge": "Retour à la page Connaissances", + "importDSL": "Importation à partir d’un fichier DSL", + "errorTip": "Échec de la création d’une base de connaissances" + }, + "templates": { + "customized": "Personnalisé" + }, + "operations": { + "preview": "Aperçu", + "process": "Processus", + "convert": "Convertir", + "exportPipeline": "Pipeline d’exportation", + "choose": "Choisir", + "details": "Détails", + "saveAndProcess": "Enregistrer et traiter", + "editInfo": "Modifier les infos", + "useTemplate": "Utiliser ce pipeline de connaissances", + "dataSource": "Source des données", + "backToDataSource": "Retour à la source de données" + }, + "deletePipeline": { + "title": "Êtes-vous sûr de supprimer ce modèle de pipeline ?", + "content": "La suppression du modèle de pipeline est irréversible." + }, + "publishPipeline": { + "success": { + "message": "Pipeline de connaissances publié", + "tip": "Allez dans Documents pour ajouter ou gérer des documents." + }, + "error": { + "message": "Échec de la publication du pipeline de connaissances" + } + }, + "publishTemplate": { + "success": { + "learnMore": "Pour en savoir plus", + "tip": "Vous pouvez utiliser ce modèle sur la page de création.", + "message": "Modèle de pipeline publié" + }, + "error": { + "message": "Échec de la publication du modèle de pipeline" + } + }, + "exportDSL": { + "errorTip": "Echec de l’exportation du DSL du pipeline", + "successTip": "Pipeline d’exportation DSL réussi" + }, + "details": { + "structure": "Structure", + "structureTooltip": "La structure par blocs détermine la façon dont les documents sont divisés et indexés (en proposant les modes Général, Parent-Enfant et Q&R) et est unique à chaque base de connaissances.", + "createdBy": "Par {{author}}" + }, + "testRun": { + "steps": { + "dataSource": "Source des données", + "documentProcessing": "Traitement des documents" + }, + "dataSource": { + "localFiles": "Fichiers locaux" + }, + "notion": { + "title": "Choisissez les pages Notion", + "docTitle": "Docs Notion" + }, + "title": "Série d’essai", + "tooltip": "En mode de test, un seul document peut être importé à la fois pour faciliter le débogage et l’observation." + }, + "inputFieldPanel": { + "uniqueInputs": { + "title": "Entrées uniques pour chaque entrée", + "tooltip": "Les entrées uniques ne sont accessibles qu’à la source de données sélectionnée et à ses nœuds en aval. Les utilisateurs n’auront pas besoin de le remplir lorsqu’ils choisiront d’autres sources de données. Seuls les champs de saisie référencés par les variables de source de données apparaîtront dans la première étape (Source de données). Tous les autres champs seront affichés à la deuxième étape (Traiter les documents)." + }, + "globalInputs": { + "title": "Entrées globales pour toutes les entrées", + "tooltip": "Les entrées globales sont partagées entre tous les nœuds. Les utilisateurs devront les remplir lors de la sélection d’une source de données. Par exemple, des champs tels que le délimiteur et la longueur maximale des morceaux peuvent être appliqués uniformément à plusieurs sources de données. Seuls les champs de saisie référencés par les variables de source de données apparaissent dans la première étape (Source de données). Tous les autres champs s’affichent à la deuxième étape (Traiter les documents)." + }, + "preview": { + "stepTwoTitle": "Documents de processus", + "stepOneTitle": "Source des données" + }, + "error": { + "variableDuplicate": "Le nom de la variable existe déjà. Veuillez choisir un autre nom." + }, + "editInputField": "Modifier le champ de saisie", + "title": "Champs de saisie utilisateur", + "addInputField": "Ajouter un champ de saisie", + "description": "Les champs de saisie utilisateur sont utilisés pour définir et collecter les variables requises pendant le processus d’exécution du pipeline. Les utilisateurs peuvent personnaliser le type de champ et configurer de manière flexible la valeur d’entrée pour répondre aux besoins des différentes sources de données ou étapes de traitement des documents." + }, + "addDocuments": { + "steps": { + "processDocuments": "Documents de processus", + "processingDocuments": "Traitement des documents", + "chooseDatasource": "Choisissez une source de données" + }, + "stepOne": { + "preview": "Aperçu" + }, + "stepTwo": { + "previewChunks": "Prévisualiser les morceaux", + "chunkSettings": "Paramètres de bloc" + }, + "stepThree": { + "learnMore": "Pour en savoir plus" + }, + "characters": "caractères", + "title": "Ajouter des documents", + "backToDataSource": "Source des données", + "selectOnlineDocumentTip": "Traiter jusqu'à {{count}} pages", + "selectOnlineDriveTip": "Traiter jusqu'à {{count}} fichiers, maximum {{fileSize}} Mo chacun" + }, + "documentSettings": { + "title": "Paramètres du document" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} pages" + }, + "onlineDrive": { + "breadcrumbs": { + "searchPlaceholder": "Rechercher des fichiers...", + "allBuckets": "Tous les compartiments de stockage dans le cloud", + "allFiles": "Tous les fichiers", + "searchResult": "Trouver {{searchResultsLength}} éléments dans le dossier « {{folderName}} »" + }, + "notSupportedFileType": "Ce type de fichier n’est pas pris en charge", + "emptySearchResult": "Aucun objet n’a été trouvé", + "emptyFolder": "Ce dossier est vide", + "resetKeywords": "Réinitialiser les mots-clés", + "notConnected": "{{name}} n'est pas connecté", + "notConnectedTip": "Pour se synchroniser avec {{name}}, une connexion à {{name}} doit d'abord être établie." + }, + "conversion": { + "confirm": { + "title": "Confirmation", + "content": "Cette action est permanente. Vous ne pourrez pas revenir à la méthode précédente. Veuillez confirmer la conversion." + }, + "title": "Convertir vers le pipeline de connaissances", + "warning": "Cette action ne peut pas être annulée.", + "successMessage": "Conversion réussie du jeu de données en pipeline", + "errorMessage": "Échec de la conversion du jeu de données en pipeline", + "descriptionChunk2": "— une approche plus ouverte et plus flexible avec un accès aux plugins de notre Marketplace. Cela appliquera la nouvelle méthode de traitement à tous les documents futurs.", + "descriptionChunk1": "Vous pouvez désormais convertir votre base de connaissances existante pour utiliser le pipeline de connaissances pour le traitement des documents" + }, + "knowledgePermissions": "Autorisations", + "editPipelineInfo": "Modifier les informations sur le pipeline", + "knowledgeNameAndIconPlaceholder": "Entrez le nom de la base de connaissances", + "pipelineNameAndIcon": "Nom et icône du pipeline", + "knowledgeDescription": "Description des connaissances", + "knowledgeNameAndIcon": "Nom et icône de la connaissance", + "inputField": "Champ de saisie", + "knowledgeDescriptionPlaceholder": "Décrivez le contenu de cette base de connaissances. Une description détaillée permet à l’IA d’accéder plus précisément au contenu de l’ensemble de données. S’il est vide, Dify utilisera la stratégie d’accès par défaut. (Facultatif)", + "configurationTip": "Configurer {{pluginName}}" +} diff --git a/web/i18n/fr-FR/dataset-pipeline.ts b/web/i18n/fr-FR/dataset-pipeline.ts deleted file mode 100644 index aae98f3d80..0000000000 --- a/web/i18n/fr-FR/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - createFromScratch: { - title: 'Pipeline de connaissances vide', - description: 'Créez un pipeline personnalisé à partir de zéro avec un contrôle total sur le traitement et la structure des données.', - }, - caution: 'Prudence', - createKnowledge: 'Créer des connaissances', - successTip: 'Création réussie d’une base de connaissances', - backToKnowledge: 'Retour à la page Connaissances', - importDSL: 'Importation à partir d’un fichier DSL', - errorTip: 'Échec de la création d’une base de connaissances', - }, - templates: { - customized: 'Personnalisé', - }, - operations: { - preview: 'Aperçu', - process: 'Processus', - convert: 'Convertir', - exportPipeline: 'Pipeline d’exportation', - choose: 'Choisir', - details: 'Détails', - saveAndProcess: 'Enregistrer et traiter', - editInfo: 'Modifier les infos', - useTemplate: 'Utiliser ce pipeline de connaissances', - dataSource: 'Source des données', - backToDataSource: 'Retour à la source de données', - }, - deletePipeline: { - title: 'Êtes-vous sûr de supprimer ce modèle de pipeline ?', - content: 'La suppression du modèle de pipeline est irréversible.', - }, - publishPipeline: { - success: { - message: 'Pipeline de connaissances publié', - tip: 'Allez dans Documents pour ajouter ou gérer des documents.', - }, - error: { - message: 'Échec de la publication du pipeline de connaissances', - }, - }, - publishTemplate: { - success: { - learnMore: 'Pour en savoir plus', - tip: 'Vous pouvez utiliser ce modèle sur la page de création.', - message: 'Modèle de pipeline publié', - }, - error: { - message: 'Échec de la publication du modèle de pipeline', - }, - }, - exportDSL: { - errorTip: 'Echec de l’exportation du DSL du pipeline', - successTip: 'Pipeline d’exportation DSL réussi', - }, - details: { - structure: 'Structure', - structureTooltip: 'La structure par blocs détermine la façon dont les documents sont divisés et indexés (en proposant les modes Général, Parent-Enfant et Q&R) et est unique à chaque base de connaissances.', - createdBy: 'Par {{author}}', - }, - testRun: { - steps: { - dataSource: 'Source des données', - documentProcessing: 'Traitement des documents', - }, - dataSource: { - localFiles: 'Fichiers locaux', - }, - notion: { - title: 'Choisissez les pages Notion', - docTitle: 'Docs Notion', - }, - title: 'Série d’essai', - tooltip: 'En mode de test, un seul document peut être importé à la fois pour faciliter le débogage et l’observation.', - }, - inputFieldPanel: { - uniqueInputs: { - title: 'Entrées uniques pour chaque entrée', - tooltip: 'Les entrées uniques ne sont accessibles qu’à la source de données sélectionnée et à ses nœuds en aval. Les utilisateurs n’auront pas besoin de le remplir lorsqu’ils choisiront d’autres sources de données. Seuls les champs de saisie référencés par les variables de source de données apparaîtront dans la première étape (Source de données). Tous les autres champs seront affichés à la deuxième étape (Traiter les documents).', - }, - globalInputs: { - title: 'Entrées globales pour toutes les entrées', - tooltip: 'Les entrées globales sont partagées entre tous les nœuds. Les utilisateurs devront les remplir lors de la sélection d’une source de données. Par exemple, des champs tels que le délimiteur et la longueur maximale des morceaux peuvent être appliqués uniformément à plusieurs sources de données. Seuls les champs de saisie référencés par les variables de source de données apparaissent dans la première étape (Source de données). Tous les autres champs s’affichent à la deuxième étape (Traiter les documents).', - }, - preview: { - stepTwoTitle: 'Documents de processus', - stepOneTitle: 'Source des données', - }, - error: { - variableDuplicate: 'Le nom de la variable existe déjà. Veuillez choisir un autre nom.', - }, - editInputField: 'Modifier le champ de saisie', - title: 'Champs de saisie utilisateur', - addInputField: 'Ajouter un champ de saisie', - description: 'Les champs de saisie utilisateur sont utilisés pour définir et collecter les variables requises pendant le processus d’exécution du pipeline. Les utilisateurs peuvent personnaliser le type de champ et configurer de manière flexible la valeur d’entrée pour répondre aux besoins des différentes sources de données ou étapes de traitement des documents.', - }, - addDocuments: { - steps: { - processDocuments: 'Documents de processus', - processingDocuments: 'Traitement des documents', - chooseDatasource: 'Choisissez une source de données', - }, - stepOne: { - preview: 'Aperçu', - }, - stepTwo: { - previewChunks: 'Prévisualiser les morceaux', - chunkSettings: 'Paramètres de bloc', - }, - stepThree: { - learnMore: 'Pour en savoir plus', - }, - characters: 'caractères', - title: 'Ajouter des documents', - backToDataSource: 'Source des données', - selectOnlineDocumentTip: 'Traiter jusqu\'à {{count}} pages', - selectOnlineDriveTip: 'Traiter jusqu\'à {{count}} fichiers, maximum {{fileSize}} Mo chacun', - }, - documentSettings: { - title: 'Paramètres du document', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} pages', - }, - onlineDrive: { - breadcrumbs: { - searchPlaceholder: 'Rechercher des fichiers...', - allBuckets: 'Tous les compartiments de stockage dans le cloud', - allFiles: 'Tous les fichiers', - searchResult: 'Trouver {{searchResultsLength}} éléments dans le dossier « {{folderName}} »', - }, - notSupportedFileType: 'Ce type de fichier n’est pas pris en charge', - emptySearchResult: 'Aucun objet n’a été trouvé', - emptyFolder: 'Ce dossier est vide', - resetKeywords: 'Réinitialiser les mots-clés', - notConnected: '{{name}} n\'est pas connecté', - notConnectedTip: 'Pour se synchroniser avec {{name}}, une connexion à {{name}} doit d\'abord être établie.', - }, - conversion: { - confirm: { - title: 'Confirmation', - content: 'Cette action est permanente. Vous ne pourrez pas revenir à la méthode précédente. Veuillez confirmer la conversion.', - }, - title: 'Convertir vers le pipeline de connaissances', - warning: 'Cette action ne peut pas être annulée.', - successMessage: 'Conversion réussie du jeu de données en pipeline', - errorMessage: 'Échec de la conversion du jeu de données en pipeline', - descriptionChunk2: '— une approche plus ouverte et plus flexible avec un accès aux plugins de notre Marketplace. Cela appliquera la nouvelle méthode de traitement à tous les documents futurs.', - descriptionChunk1: 'Vous pouvez désormais convertir votre base de connaissances existante pour utiliser le pipeline de connaissances pour le traitement des documents', - }, - knowledgePermissions: 'Autorisations', - editPipelineInfo: 'Modifier les informations sur le pipeline', - knowledgeNameAndIconPlaceholder: 'Entrez le nom de la base de connaissances', - pipelineNameAndIcon: 'Nom et icône du pipeline', - knowledgeDescription: 'Description des connaissances', - knowledgeNameAndIcon: 'Nom et icône de la connaissance', - inputField: 'Champ de saisie', - knowledgeDescriptionPlaceholder: 'Décrivez le contenu de cette base de connaissances. Une description détaillée permet à l’IA d’accéder plus précisément au contenu de l’ensemble de données. S’il est vide, Dify utilisera la stratégie d’accès par défaut. (Facultatif)', - configurationTip: 'Configurer {{pluginName}}', -} - -export default translation diff --git a/web/i18n/fr-FR/dataset-settings.json b/web/i18n/fr-FR/dataset-settings.json new file mode 100644 index 0000000000..36ee52a5b9 --- /dev/null +++ b/web/i18n/fr-FR/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "Paramètres de connaissance", + "desc": "Ici, vous pouvez modifier les propriétés et les méthodes de fonctionnement de la Connaissance.", + "form": { + "name": "Nom de la Connaissance", + "namePlaceholder": "Veuillez entrer le nom de la Connaissance", + "nameError": "Le nom ne peut pas être vide", + "desc": "Description des connaissances", + "descInfo": "Veuillez rédiger une description textuelle claire pour décrire le contenu de la Connaissance. Cette description sera utilisée comme base pour la correspondance lors de la sélection parmi plusieurs Connaissances pour l'inférence.", + "descPlaceholder": "Décrivez ce qui se trouve dans cette Connaissance. Une description détaillée permet à l'IA d'accéder au contenu de la Connaissance en temps opportun. Si vide, Dify utilisera la stratégie de hit par défaut.", + "descWrite": "Apprenez comment rédiger une bonne description de connaissance.", + "permissions": "Autorisations", + "permissionsOnlyMe": "Seulement moi", + "permissionsAllMember": "Tous les membres de l'équipe", + "indexMethod": "Méthode d'Indexation", + "indexMethodHighQuality": "Haute Qualité", + "indexMethodHighQualityTip": "Appeler le modèle d'Embedding pour le traitement afin de fournir une plus grande précision lors des requêtes des utilisateurs.", + "indexMethodEconomy": "Économique", + "indexMethodEconomyTip": "Utilisez des moteurs vectoriels hors ligne, des index de mots-clés, etc. pour réduire la précision sans dépenser de jetons", + "embeddingModel": "Modèle d'Embedding", + "embeddingModelTip": "Changez le modèle intégré, veuillez aller à", + "embeddingModelTipLink": "Paramètres", + "retrievalSetting": { + "title": "Paramètre de récupération", + "learnMore": "En savoir plus", + "description": "à propos de la méthode de récupération.", + "longDescription": "À propos de la méthode de récupération, vous pouvez la modifier à tout moment dans les paramètres de Connaissance.", + "method": "Méthode de récupération", + "multiModalTip": "Lorsque le modèle d'intégration prend en charge le multimodal, veuillez sélectionner un modèle de réévaluation multimodal pour de meilleures performances." + }, + "save": "Enregistrer", + "me": "(Vous)", + "permissionsInvitedMembers": "Membres partiels de l’équipe", + "retrievalSettings": "Paramètres de récupération", + "externalKnowledgeAPI": "API de connaissances externes", + "externalKnowledgeID": "Identification des connaissances externes", + "indexMethodChangeToEconomyDisabledTip": "Non disponible pour le déclassement de HQ à ECO", + "upgradeHighQualityTip": "Une fois la mise à niveau vers le mode Haute Qualité, il n’est pas possible de revenir au mode Économique", + "helpText": "Apprenez à rédiger une bonne description de jeu de données.", + "searchModel": "Rechercher un modèle", + "chunkStructure": { + "learnMore": "Pour en savoir plus", + "title": "Structure de morceaux", + "description": "sur la structure des morceaux." + }, + "numberOfKeywords": "Nombre de mots-clés", + "onSearchResults": "Aucun membre ne correspond à votre recherche.\nRéessayez votre recherche.", + "nameAndIcon": "Nom et icône" + } +} diff --git a/web/i18n/fr-FR/dataset-settings.ts b/web/i18n/fr-FR/dataset-settings.ts deleted file mode 100644 index 6719ac5a01..0000000000 --- a/web/i18n/fr-FR/dataset-settings.ts +++ /dev/null @@ -1,52 +0,0 @@ -const translation = { - title: 'Paramètres de connaissance', - desc: 'Ici, vous pouvez modifier les propriétés et les méthodes de fonctionnement de la Connaissance.', - form: { - name: 'Nom de la Connaissance', - namePlaceholder: 'Veuillez entrer le nom de la Connaissance', - nameError: 'Le nom ne peut pas être vide', - desc: 'Description des connaissances', - descInfo: 'Veuillez rédiger une description textuelle claire pour décrire le contenu de la Connaissance. Cette description sera utilisée comme base pour la correspondance lors de la sélection parmi plusieurs Connaissances pour l\'inférence.', - descPlaceholder: 'Décrivez ce qui se trouve dans cette Connaissance. Une description détaillée permet à l\'IA d\'accéder au contenu de la Connaissance en temps opportun. Si vide, Dify utilisera la stratégie de hit par défaut.', - descWrite: 'Apprenez comment rédiger une bonne description de connaissance.', - permissions: 'Autorisations', - permissionsOnlyMe: 'Seulement moi', - permissionsAllMember: 'Tous les membres de l\'équipe', - indexMethod: 'Méthode d\'Indexation', - indexMethodHighQuality: 'Haute Qualité', - indexMethodHighQualityTip: 'Appeler le modèle d\'Embedding pour le traitement afin de fournir une plus grande précision lors des requêtes des utilisateurs.', - indexMethodEconomy: 'Économique', - indexMethodEconomyTip: 'Utilisez des moteurs vectoriels hors ligne, des index de mots-clés, etc. pour réduire la précision sans dépenser de jetons', - embeddingModel: 'Modèle d\'Embedding', - embeddingModelTip: 'Changez le modèle intégré, veuillez aller à', - embeddingModelTipLink: 'Paramètres', - retrievalSetting: { - title: 'Paramètre de récupération', - learnMore: 'En savoir plus', - description: 'à propos de la méthode de récupération.', - longDescription: 'À propos de la méthode de récupération, vous pouvez la modifier à tout moment dans les paramètres de Connaissance.', - method: 'Méthode de récupération', - multiModalTip: 'Lorsque le modèle d\'intégration prend en charge le multimodal, veuillez sélectionner un modèle de réévaluation multimodal pour de meilleures performances.', - }, - save: 'Enregistrer', - me: '(Vous)', - permissionsInvitedMembers: 'Membres partiels de l’équipe', - retrievalSettings: 'Paramètres de récupération', - externalKnowledgeAPI: 'API de connaissances externes', - externalKnowledgeID: 'Identification des connaissances externes', - indexMethodChangeToEconomyDisabledTip: 'Non disponible pour le déclassement de HQ à ECO', - upgradeHighQualityTip: 'Une fois la mise à niveau vers le mode Haute Qualité, il n’est pas possible de revenir au mode Économique', - helpText: 'Apprenez à rédiger une bonne description de jeu de données.', - searchModel: 'Rechercher un modèle', - chunkStructure: { - learnMore: 'Pour en savoir plus', - title: 'Structure de morceaux', - description: 'sur la structure des morceaux.', - }, - numberOfKeywords: 'Nombre de mots-clés', - onSearchResults: 'Aucun membre ne correspond à votre recherche.\nRéessayez votre recherche.', - nameAndIcon: 'Nom et icône', - }, -} - -export default translation diff --git a/web/i18n/fr-FR/dataset.json b/web/i18n/fr-FR/dataset.json new file mode 100644 index 0000000000..aebe869657 --- /dev/null +++ b/web/i18n/fr-FR/dataset.json @@ -0,0 +1,249 @@ +{ + "knowledge": "Connaissance", + "documentCount": " documents", + "wordCount": " k mots", + "appCount": " applications liées", + "createDataset": "Créer des Connaissances", + "createDatasetIntro": "Importez vos propres données textuelles ou écrivez des données en temps réel via Webhook pour l'amélioration du contexte LLM.", + "deleteDatasetConfirmTitle": "Supprimer cette Connaissance ?", + "deleteDatasetConfirmContent": "La suppression de la Connaissance est irréversible. Les utilisateurs ne pourront plus accéder à votre Savoir, et toutes les configurations de prompt et les journaux seront supprimés de façon permanente.", + "datasetUsedByApp": "La connaissance est utilisée par certaines applications. Les applications ne pourront plus utiliser cette Connaissance, et toutes les configurations de prompts et les journaux seront définitivement supprimés.", + "datasetDeleted": "Connaissance supprimée", + "datasetDeleteFailed": "Échec de la suppression de la Connaissance", + "didYouKnow": "Saviez-vous ?", + "intro1": "La Connaissance peut être intégrée dans l'application Dify", + "intro2": "comme un contexte", + "intro3": ",", + "intro4": "ou ça ", + "intro5": "peut être créé", + "intro6": "comme un plug-in d'index ChatGPT autonome à publier", + "unavailable": "Indisponible", + "datasets": "CONNAISSANCE", + "datasetsApi": "API", + "retrieval": { + "semantic_search": { + "title": "Recherche Vectorielle", + "description": "Générez des embeddings de requête et recherchez le morceau de texte le plus similaire à sa représentation vectorielle." + }, + "full_text_search": { + "title": "Recherche en Texte Intégral", + "description": "Indexez tous les termes dans le document, permettant aux utilisateurs de rechercher n'importe quel terme et de récupérer le fragment de texte pertinent contenant ces termes." + }, + "hybrid_search": { + "title": "Recherche Hybride", + "description": "Exécutez une recherche en texte intégral et des recherches vectorielles en même temps, réorganisez pour sélectionner la meilleure correspondance pour la requête de l'utilisateur. La configuration de l'API du modèle de réorganisation est nécessaire.", + "recommend": "Recommander" + }, + "invertedIndex": {}, + "change": "Changer", + "changeRetrievalMethod": "Changer la méthode de récupération", + "keyword_search": { + "title": "Index inversé", + "description": "L’indice inversé est une structure utilisée pour une récupération efficace. Organisé par termes, chaque terme pointe vers des documents ou des pages web qui le contiennent." + } + }, + "docsFailedNotice": "Les documents n'ont pas pu être indexés", + "retry": "Réessayer", + "indexingTechnique": { + "high_quality": "HQ", + "economy": "ÉCO" + }, + "indexingMethod": { + "semantic_search": "VECTEUR", + "full_text_search": "TEXTE INTÉGRAL", + "hybrid_search": "HYBRIDE", + "invertedIndex": "INVERSÉ" + }, + "mixtureHighQualityAndEconomicTip": "Le modèle de reclassement est nécessaire pour le mélange de bases de connaissances de haute qualité et économiques.", + "inconsistentEmbeddingModelTip": "Le modèle de reclassement est nécessaire si les modèles d'incorporation des bases de connaissances sélectionnées sont incohérents.", + "retrievalSettings": "Paramètres de récupération", + "rerankSettings": "Paramètres de reclassement", + "weightedScore": { + "title": "Score pondéré", + "description": "En ajustant les poids attribués, cette stratégie de reclassement détermine s'il faut prioriser la correspondance sémantique ou par mots-clés.", + "semanticFirst": "Sémantique d'abord", + "keywordFirst": "Mot-clé d'abord", + "customized": "Personnalisé", + "semantic": "Sémantique", + "keyword": "Mot-clé" + }, + "nTo1RetrievalLegacy": "La récupération N-à-1 sera officiellement obsolète à partir de septembre. Il est recommandé d'utiliser la dernière récupération multi-chemins pour obtenir de meilleurs résultats.", + "nTo1RetrievalLegacyLink": "En savoir plus", + "nTo1RetrievalLegacyLinkText": "La récupération N-à-1 sera officiellement obsolète en septembre.", + "defaultRetrievalTip": "La récupération à chemins multiples est utilisée par défaut. Les connaissances sont extraites de plusieurs bases de connaissances, puis reclassées.", + "editExternalAPIConfirmWarningContent": { + "front": "Cette API de connaissances externes est liée à", + "end": "connaissances externes, et cette modification sera appliquée à tous. Êtes-vous sûr de vouloir enregistrer cette modification ?" + }, + "editExternalAPIFormWarning": { + "end": "Connaissances externes", + "front": "Cette API externe est liée à" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "end": "?", + "front": "Supprimer" + }, + "content": { + "front": "Cette API de connaissances externes est liée à", + "end": "connaissances externes. La suppression de cette API les invalidera toutes. Êtes-vous sûr de vouloir supprimer cette API ?" + }, + "noConnectionContent": "Êtes-vous sûr de supprimer cette API ?" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "Choisir une API de connaissances externe" + }, + "connectDatasetIntro": { + "content": { + "link": "Découvrez comment créer une API externe", + "end": ". Trouvez ensuite l’ID de connaissances correspondant et remplissez-le dans le formulaire sur la gauche. Si toutes les informations sont correctes, il passera automatiquement au test de récupération dans la base de connaissances après avoir cliqué sur le bouton de connexion.", + "front": "Pour vous connecter à une base de connaissances externe, vous devez d’abord créer une API externe. Veuillez lire attentivement et vous référer à" + }, + "learnMore": "Pour en savoir plus", + "title": "Comment se connecter à une base de connaissances externe" + }, + "connectHelper": { + "helper2": "Seule la fonctionnalité de récupération est prise en charge", + "helper3": ". Nous vous recommandons vivement de", + "helper4": "Lire la documentation d’aide", + "helper5": "soigneusement avant d’utiliser cette fonctionnalité.", + "helper1": "Connectez-vous à des bases de connaissances externes via l’API et l’ID de base de connaissances." + }, + "externalKnowledgeForm": { + "cancel": "Annuler", + "connect": "Relier" + }, + "externalAPIForm": { + "encrypted": { + "end": "Technologie.", + "front": "Votre jeton API sera chiffré et stocké à l’aide de" + }, + "name": "Nom", + "apiKey": "Clé API", + "save": "Sauvegarder", + "cancel": "Annuler", + "edit": "Éditer", + "endpoint": "Point de terminaison de l’API" + }, + "externalKnowledgeName": "Nom de la connaissance externe", + "mixtureInternalAndExternalTip": "Le modèle Rerank est nécessaire pour mélanger les connaissances internes et externes.", + "externalKnowledgeIdPlaceholder": "Entrez l’ID de connaissances", + "createExternalAPI": "Ajouter une API de connaissances externe", + "externalKnowledgeNamePlaceholder": "Entrez le nom de la base de connaissances", + "allExternalTip": "Lorsqu’il utilise uniquement des connaissances externes, l’utilisateur peut choisir d’activer ou non le modèle Rerank. S’il n’est pas activé, les morceaux récupérés seront triés en fonction des scores. Lorsque les stratégies de récupération des différentes bases de connaissances sont incohérentes, elles seront inexactes.", + "externalAPI": "API externe", + "editExternalAPIFormTitle": "Modifier l’API de connaissances externes", + "externalTag": "Externe", + "editExternalAPITooltipTitle": "CONNAISSANCES ASSOCIÉES", + "connectDataset": "Se connecter à une base de connaissances externe", + "externalKnowledgeDescription": "Description des connaissances", + "externalAPIPanelDocumentation": "Découvrez comment créer une API de connaissances externe", + "createNewExternalAPI": "Créer une API de connaissances externe", + "externalKnowledgeDescriptionPlaceholder": "Décrivez le contenu de cette base de connaissances (facultatif)", + "externalAPIPanelDescription": "L’API de connaissances externe est utilisée pour se connecter à une base de connaissances en dehors de Dify et récupérer des connaissances de cette base de connaissances.", + "externalKnowledgeId": "Identification des connaissances externes", + "externalAPIPanelTitle": "API de connaissances externes", + "noExternalKnowledge": "Il n’y a pas encore d’API de connaissances externes, cliquez ici pour créer", + "learnHowToWriteGoodKnowledgeDescription": "Apprenez à rédiger une bonne description des connaissances", + "chunkingMode": { + "general": "Généralités", + "parentChild": "Parent-enfant", + "graph": "Graphique", + "qa": "Q&R" + }, + "parentMode": { + "paragraph": "Paragraphe", + "fullDoc": "Doc complet" + }, + "batchAction": { + "archive": "Archiver", + "disable": "Désactiver", + "delete": "Supprimer", + "cancel": "Annuler", + "enable": "Activer", + "selected": "Sélectionné" + }, + "preprocessDocument": "{{num}} Prétraiter les documents", + "documentsDisabled": "{{num}} documents désactivés - inactifs depuis plus de 30 jours", + "localDocs": "Docs locaux", + "enable": "Activer", + "allKnowledge": "Toutes les connaissances", + "allKnowledgeDescription": "Sélectionnez cette option pour afficher toutes les connaissances dans cet espace de travail. Seul le propriétaire de l’espace de travail peut gérer toutes les connaissances.", + "metadata": { + "createMetadata": { + "name": "Nom", + "title": "Nouveaux Métadonnées", + "namePlaceholder": "Ajouter le nom des métadonnées", + "type": "Type", + "back": "Retour" + }, + "checkName": { + "empty": "Le nom des métadonnées ne peut pas être vide", + "invalid": "Le nom des métadonnées ne peut contenir que des lettres minuscules, des chiffres et des tirets bas et doit commencer par une lettre minuscule.", + "tooLong": "Le nom des métadonnées ne peut pas dépasser {{max}} caractères" + }, + "batchEditMetadata": { + "editMetadata": "Modifier les métadonnées", + "applyToAllSelectDocumentTip": "Créez automatiquement toutes les métadonnées modifiées et nouvelles pour tous les documents sélectionnés, sinon l'édition des métadonnées ne s'appliquera qu'aux documents qui en ont.", + "applyToAllSelectDocument": "Appliquer à tous les documents sélectionnés", + "multipleValue": "Valeur multiple", + "editDocumentsNum": "Édition de {{num}} documents" + }, + "selectMetadata": { + "search": "Rechercher des métadonnées", + "newAction": "Nouveaux métadonnées", + "manageAction": "Gérer" + }, + "datasetMetadata": { + "description": "Vous pouvez gérer toutes les métadonnées dans cette connaissance ici. Les modifications seront synchronisées avec chaque document.", + "rename": "Renommer", + "builtIn": "Intégré", + "addMetaData": "Ajouter des métadonnées", + "namePlaceholder": "Nom de métadonnées", + "builtInDescription": "Les métadonnées intégrées sont automatiquement extraites et générées. Elles doivent être activées avant utilisation et ne peuvent pas être modifiées.", + "deleteTitle": "Confirmer la suppression", + "values": "{{num}} Valeurs", + "deleteContent": "Êtes-vous sûr de vouloir supprimer les métadonnées \"{{name}}\" ?", + "name": "Nom", + "disabled": "handicapés" + }, + "documentMetadata": { + "technicalParameters": "Paramètres techniques", + "metadataToolTip": "Les métadonnées servent de filtre essentiel qui améliore l'exactitude et la pertinence de la recherche d'informations. Vous pouvez modifier et ajouter des métadonnées pour ce document ici.", + "documentInformation": "Informations du document", + "startLabeling": "Commencer l'étiquetage" + }, + "addMetadata": "Ajouter des métadonnées", + "metadata": "Métadonnées", + "chooseTime": "Choisissez un moment..." + }, + "embeddingModelNotAvailable": "Le modèle d'embedding n'est pas disponible.", + "updated": "Actualisé", + "createFromPipeline": "Créer à partir du pipeline de connaissances", + "externalKnowledgeBase": "Base de connaissances externe", + "serviceApi": { + "card": { + "apiKey": "Clé API", + "apiReference": "Référence API", + "title": "API du service backend", + "endpoint": "Point de terminaison de l'API" + }, + "enabled": "En service", + "title": "API de service", + "disabled": "désactivé" + }, + "docAllEnabled_one": "Document {{count}} activé", + "docAllEnabled_other": "Tous les documents {{count}} activés", + "partialEnabled_one": "Total de {{count}} documents, {{num}} disponibles", + "partialEnabled_other": "Total de {{count}} documents, {{num}} disponibles", + "cornerLabel": { + "unavailable": "Indisponible", + "pipeline": "Pipeline" + }, + "multimodal": "Multimodal", + "imageUploader": { + "button": "Faites glisser et déposez un fichier ou un dossier, ou", + "browse": "Parcourir", + "tip": "{{supportTypes}} (Max {{batchCount}}, {{size}} Mo chacun)" + } +} diff --git a/web/i18n/fr-FR/dataset.ts b/web/i18n/fr-FR/dataset.ts deleted file mode 100644 index bdf76fee6f..0000000000 --- a/web/i18n/fr-FR/dataset.ts +++ /dev/null @@ -1,253 +0,0 @@ -const translation = { - knowledge: 'Connaissance', - documentCount: ' documents', - wordCount: ' k mots', - appCount: ' applications liées', - createDataset: 'Créer des Connaissances', - createDatasetIntro: 'Importez vos propres données textuelles ou écrivez des données en temps réel via Webhook pour l\'amélioration du contexte LLM.', - deleteDatasetConfirmTitle: 'Supprimer cette Connaissance ?', - deleteDatasetConfirmContent: - 'La suppression de la Connaissance est irréversible. Les utilisateurs ne pourront plus accéder à votre Savoir, et toutes les configurations de prompt et les journaux seront supprimés de façon permanente.', - datasetUsedByApp: 'La connaissance est utilisée par certaines applications. Les applications ne pourront plus utiliser cette Connaissance, et toutes les configurations de prompts et les journaux seront définitivement supprimés.', - datasetDeleted: 'Connaissance supprimée', - datasetDeleteFailed: 'Échec de la suppression de la Connaissance', - didYouKnow: 'Saviez-vous ?', - intro1: 'La Connaissance peut être intégrée dans l\'application Dify', - intro2: 'comme un contexte', - intro3: ',', - intro4: 'ou ça ', - intro5: 'peut être créé', - intro6: 'comme un plug-in d\'index ChatGPT autonome à publier', - unavailable: 'Indisponible', - datasets: 'CONNAISSANCE', - datasetsApi: 'API', - retrieval: { - semantic_search: { - title: 'Recherche Vectorielle', - description: 'Générez des embeddings de requête et recherchez le morceau de texte le plus similaire à sa représentation vectorielle.', - }, - full_text_search: { - title: 'Recherche en Texte Intégral', - description: 'Indexez tous les termes dans le document, permettant aux utilisateurs de rechercher n\'importe quel terme et de récupérer le fragment de texte pertinent contenant ces termes.', - }, - hybrid_search: { - title: 'Recherche Hybride', - description: 'Exécutez une recherche en texte intégral et des recherches vectorielles en même temps, réorganisez pour sélectionner la meilleure correspondance pour la requête de l\'utilisateur. La configuration de l\'API du modèle de réorganisation est nécessaire.', - recommend: 'Recommander', - }, - invertedIndex: { - }, - change: 'Changer', - changeRetrievalMethod: 'Changer la méthode de récupération', - keyword_search: { - title: 'Index inversé', - description: 'L’indice inversé est une structure utilisée pour une récupération efficace. Organisé par termes, chaque terme pointe vers des documents ou des pages web qui le contiennent.', - }, - }, - docsFailedNotice: 'Les documents n\'ont pas pu être indexés', - retry: 'Réessayer', - indexingTechnique: { - high_quality: 'HQ', - economy: 'ÉCO', - }, - indexingMethod: { - semantic_search: 'VECTEUR', - full_text_search: 'TEXTE INTÉGRAL', - hybrid_search: 'HYBRIDE', - invertedIndex: 'INVERSÉ', - }, - mixtureHighQualityAndEconomicTip: 'Le modèle de reclassement est nécessaire pour le mélange de bases de connaissances de haute qualité et économiques.', - inconsistentEmbeddingModelTip: 'Le modèle de reclassement est nécessaire si les modèles d\'incorporation des bases de connaissances sélectionnées sont incohérents.', - retrievalSettings: 'Paramètres de récupération', - rerankSettings: 'Paramètres de reclassement', - weightedScore: { - title: 'Score pondéré', - description: 'En ajustant les poids attribués, cette stratégie de reclassement détermine s\'il faut prioriser la correspondance sémantique ou par mots-clés.', - semanticFirst: 'Sémantique d\'abord', - keywordFirst: 'Mot-clé d\'abord', - customized: 'Personnalisé', - semantic: 'Sémantique', - keyword: 'Mot-clé', - }, - nTo1RetrievalLegacy: 'La récupération N-à-1 sera officiellement obsolète à partir de septembre. Il est recommandé d\'utiliser la dernière récupération multi-chemins pour obtenir de meilleurs résultats.', - nTo1RetrievalLegacyLink: 'En savoir plus', - nTo1RetrievalLegacyLinkText: 'La récupération N-à-1 sera officiellement obsolète en septembre.', - defaultRetrievalTip: 'La récupération à chemins multiples est utilisée par défaut. Les connaissances sont extraites de plusieurs bases de connaissances, puis reclassées.', - editExternalAPIConfirmWarningContent: { - front: 'Cette API de connaissances externes est liée à', - end: 'connaissances externes, et cette modification sera appliquée à tous. Êtes-vous sûr de vouloir enregistrer cette modification ?', - }, - editExternalAPIFormWarning: { - end: 'Connaissances externes', - front: 'Cette API externe est liée à', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - end: '?', - front: 'Supprimer', - }, - content: { - front: 'Cette API de connaissances externes est liée à', - end: 'connaissances externes. La suppression de cette API les invalidera toutes. Êtes-vous sûr de vouloir supprimer cette API ?', - }, - noConnectionContent: 'Êtes-vous sûr de supprimer cette API ?', - }, - selectExternalKnowledgeAPI: { - placeholder: 'Choisir une API de connaissances externe', - }, - connectDatasetIntro: { - content: { - link: 'Découvrez comment créer une API externe', - end: '. Trouvez ensuite l’ID de connaissances correspondant et remplissez-le dans le formulaire sur la gauche. Si toutes les informations sont correctes, il passera automatiquement au test de récupération dans la base de connaissances après avoir cliqué sur le bouton de connexion.', - front: 'Pour vous connecter à une base de connaissances externe, vous devez d’abord créer une API externe. Veuillez lire attentivement et vous référer à', - }, - learnMore: 'Pour en savoir plus', - title: 'Comment se connecter à une base de connaissances externe', - }, - connectHelper: { - helper2: 'Seule la fonctionnalité de récupération est prise en charge', - helper3: '. Nous vous recommandons vivement de', - helper4: 'Lire la documentation d’aide', - helper5: 'soigneusement avant d’utiliser cette fonctionnalité.', - helper1: 'Connectez-vous à des bases de connaissances externes via l’API et l’ID de base de connaissances.', - }, - externalKnowledgeForm: { - cancel: 'Annuler', - connect: 'Relier', - }, - externalAPIForm: { - encrypted: { - end: 'Technologie.', - front: 'Votre jeton API sera chiffré et stocké à l’aide de', - }, - name: 'Nom', - apiKey: 'Clé API', - save: 'Sauvegarder', - cancel: 'Annuler', - edit: 'Éditer', - endpoint: 'Point de terminaison de l’API', - }, - externalKnowledgeName: 'Nom de la connaissance externe', - mixtureInternalAndExternalTip: 'Le modèle Rerank est nécessaire pour mélanger les connaissances internes et externes.', - externalKnowledgeIdPlaceholder: 'Entrez l’ID de connaissances', - createExternalAPI: 'Ajouter une API de connaissances externe', - externalKnowledgeNamePlaceholder: 'Entrez le nom de la base de connaissances', - allExternalTip: 'Lorsqu’il utilise uniquement des connaissances externes, l’utilisateur peut choisir d’activer ou non le modèle Rerank. S’il n’est pas activé, les morceaux récupérés seront triés en fonction des scores. Lorsque les stratégies de récupération des différentes bases de connaissances sont incohérentes, elles seront inexactes.', - externalAPI: 'API externe', - editExternalAPIFormTitle: 'Modifier l’API de connaissances externes', - externalTag: 'Externe', - editExternalAPITooltipTitle: 'CONNAISSANCES ASSOCIÉES', - connectDataset: 'Se connecter à une base de connaissances externe', - externalKnowledgeDescription: 'Description des connaissances', - externalAPIPanelDocumentation: 'Découvrez comment créer une API de connaissances externe', - createNewExternalAPI: 'Créer une API de connaissances externe', - externalKnowledgeDescriptionPlaceholder: 'Décrivez le contenu de cette base de connaissances (facultatif)', - externalAPIPanelDescription: 'L’API de connaissances externe est utilisée pour se connecter à une base de connaissances en dehors de Dify et récupérer des connaissances de cette base de connaissances.', - externalKnowledgeId: 'Identification des connaissances externes', - externalAPIPanelTitle: 'API de connaissances externes', - noExternalKnowledge: 'Il n’y a pas encore d’API de connaissances externes, cliquez ici pour créer', - learnHowToWriteGoodKnowledgeDescription: 'Apprenez à rédiger une bonne description des connaissances', - chunkingMode: { - general: 'Généralités', - parentChild: 'Parent-enfant', - graph: 'Graphique', - qa: 'Q&R', - }, - parentMode: { - paragraph: 'Paragraphe', - fullDoc: 'Doc complet', - }, - batchAction: { - archive: 'Archiver', - disable: 'Désactiver', - delete: 'Supprimer', - cancel: 'Annuler', - enable: 'Activer', - selected: 'Sélectionné', - }, - preprocessDocument: '{{num}} Prétraiter les documents', - documentsDisabled: '{{num}} documents désactivés - inactifs depuis plus de 30 jours', - localDocs: 'Docs locaux', - enable: 'Activer', - allKnowledge: 'Toutes les connaissances', - allKnowledgeDescription: 'Sélectionnez cette option pour afficher toutes les connaissances dans cet espace de travail. Seul le propriétaire de l’espace de travail peut gérer toutes les connaissances.', - metadata: { - createMetadata: { - name: 'Nom', - title: 'Nouveaux Métadonnées', - namePlaceholder: 'Ajouter le nom des métadonnées', - type: 'Type', - back: 'Retour', - }, - checkName: { - empty: 'Le nom des métadonnées ne peut pas être vide', - invalid: 'Le nom des métadonnées ne peut contenir que des lettres minuscules, des chiffres et des tirets bas et doit commencer par une lettre minuscule.', - tooLong: 'Le nom des métadonnées ne peut pas dépasser {{max}} caractères', - }, - batchEditMetadata: { - editMetadata: 'Modifier les métadonnées', - applyToAllSelectDocumentTip: 'Créez automatiquement toutes les métadonnées modifiées et nouvelles pour tous les documents sélectionnés, sinon l\'édition des métadonnées ne s\'appliquera qu\'aux documents qui en ont.', - applyToAllSelectDocument: 'Appliquer à tous les documents sélectionnés', - multipleValue: 'Valeur multiple', - editDocumentsNum: 'Édition de {{num}} documents', - }, - selectMetadata: { - search: 'Rechercher des métadonnées', - newAction: 'Nouveaux métadonnées', - manageAction: 'Gérer', - }, - datasetMetadata: { - description: 'Vous pouvez gérer toutes les métadonnées dans cette connaissance ici. Les modifications seront synchronisées avec chaque document.', - rename: 'Renommer', - builtIn: 'Intégré', - addMetaData: 'Ajouter des métadonnées', - namePlaceholder: 'Nom de métadonnées', - builtInDescription: 'Les métadonnées intégrées sont automatiquement extraites et générées. Elles doivent être activées avant utilisation et ne peuvent pas être modifiées.', - deleteTitle: 'Confirmer la suppression', - values: '{{num}} Valeurs', - deleteContent: 'Êtes-vous sûr de vouloir supprimer les métadonnées "{{name}}" ?', - name: 'Nom', - disabled: 'handicapés', - }, - documentMetadata: { - technicalParameters: 'Paramètres techniques', - metadataToolTip: 'Les métadonnées servent de filtre essentiel qui améliore l\'exactitude et la pertinence de la recherche d\'informations. Vous pouvez modifier et ajouter des métadonnées pour ce document ici.', - documentInformation: 'Informations du document', - startLabeling: 'Commencer l\'étiquetage', - }, - addMetadata: 'Ajouter des métadonnées', - metadata: 'Métadonnées', - chooseTime: 'Choisissez un moment...', - }, - embeddingModelNotAvailable: 'Le modèle d\'embedding n\'est pas disponible.', - updated: 'Actualisé', - createFromPipeline: 'Créer à partir du pipeline de connaissances', - externalKnowledgeBase: 'Base de connaissances externe', - serviceApi: { - card: { - apiKey: 'Clé API', - apiReference: 'Référence API', - title: 'API du service backend', - endpoint: 'Point de terminaison de l\'API', - }, - enabled: 'En service', - title: 'API de service', - disabled: 'désactivé', - }, - docAllEnabled_one: 'Document {{count}} activé', - docAllEnabled_other: 'Tous les documents {{count}} activés', - partialEnabled_one: 'Total de {{count}} documents, {{num}} disponibles', - partialEnabled_other: 'Total de {{count}} documents, {{num}} disponibles', - cornerLabel: { - unavailable: 'Indisponible', - pipeline: 'Pipeline', - }, - multimodal: 'Multimodal', - imageUploader: { - button: 'Faites glisser et déposez un fichier ou un dossier, ou', - browse: 'Parcourir', - tip: '{{supportTypes}} (Max {{batchCount}}, {{size}} Mo chacun)', - }, -} - -export default translation diff --git a/web/i18n/fr-FR/education.json b/web/i18n/fr-FR/education.json new file mode 100644 index 0000000000..667f94d74b --- /dev/null +++ b/web/i18n/fr-FR/education.json @@ -0,0 +1,74 @@ +{ + "toVerifiedTip": { + "front": "Vous êtes maintenant éligible pour le statut Vérifié en Éducation. Veuillez entrer vos informations éducatives ci-dessous pour compléter le processus et recevoir un", + "coupon": "coupon exclusif 100%", + "end": "pour le Plan Professionnel Dify." + }, + "form": { + "schoolName": { + "placeholder": "Entrez le nom officiel et complet de votre école", + "title": "Le nom de votre école" + }, + "schoolRole": { + "option": { + "administrator": "Administrateur scolaire", + "student": "Étudiant", + "teacher": "Professeur" + }, + "title": "Votre rôle à l'école" + }, + "terms": { + "desc": { + "and": "et", + "privacyPolicy": "Politique de confidentialité", + "termsOfService": "Conditions d'utilisation", + "end": ". En soumettant :", + "front": "Vos informations et votre utilisation du statut Éducation Vérifiée sont soumises à notre" + }, + "option": { + "age": "Je confirme que j'ai au moins 18 ans.", + "inSchool": "Je confirme que je suis inscrit ou employé dans l'institution indiquée. Dify peut demander une preuve d'inscription/employé. Si je falsifie mon éligibilité, j'accepte de payer tous les frais initialement annulés en fonction de mon statut éducatif." + }, + "title": "Conditions et accords" + } + }, + "emailLabel": "Votre email actuel", + "learn": "Apprenez comment faire vérifier votre éducation", + "currentSigned": "ACTUELLEMENT CONNECTÉ EN TANT QUE", + "successTitle": "Vous avez obtenu une éducation Dify vérifiée.", + "successContent": "Nous avons émis un coupon de réduction de 100 % pour le plan Dify Professionnel sur votre compte. Le coupon est valable pendant un an, veuillez l'utiliser dans la période de validité.", + "rejectTitle": "Votre vérification éducative Dify a été rejetée.", + "submit": "Soumettre", + "submitError": "L'envoi du formulaire a échoué. Veuillez réessayer plus tard.", + "toVerified": "Faire vérifier l'éducation", + "rejectContent": "Malheureusement, vous n'êtes pas éligible au statut Éducation Vérifié et ne pouvez donc pas recevoir le coupon exclusif de 100 % pour le Plan Professionnel Dify si vous utilisez cette adresse e-mail.", + "notice": { + "expired": { + "summary": { + "line2": "Cependant, vous n'êtes plus éligible pour de nouveaux bons de réduction pour l'éducation.", + "line1": "Vous pouvez toujours accéder à Dify et l'utiliser." + }, + "title": "Votre statut éducatif a expiré" + }, + "isAboutToExpire": { + "summary": "Ne vous inquiétez pas — cela n'affectera pas votre abonnement actuel, mais vous n'obtiendrez pas la remise éducative lors de son renouvellement à moins que vous ne vérifiiez à nouveau votre statut.", + "title": "Votre statut éducatif expirera le {{date}}" + }, + "stillInEducation": { + "title": "Encore dans l'éducation ?", + "expired": "Veuillez vérifier à nouveau maintenant pour obtenir un nouveau coupon pour la prochaine année académique. Nous l'ajouterons à votre compte et vous pourrez l'utiliser pour la prochaine mise à niveau.", + "isAboutToExpire": "Vérifiez de nouveau maintenant pour obtenir un nouveau coupon pour la prochaine année académique. Il sera enregistré dans votre compte et prêt à être utilisé lors de votre prochain renouvellement." + }, + "alreadyGraduated": { + "expired": "N'hésitez pas à vous abonner à tout moment pour accéder à toutes les fonctionnalités payantes.", + "title": "Déjà diplômé ?", + "isAboutToExpire": "Votre abonnement actuel restera actif. Lorsqu'il se terminera, vous serez transféré au plan Sandbox, ou vous pourrez mettre à niveau à tout moment pour restaurer l'accès complet aux fonctionnalités payantes." + }, + "action": { + "reVerify": "Re-vérifier", + "dismiss": "Rejeter", + "upgrade": "Améliorer" + }, + "dateFormat": "JJ/MM/YYYY" + } +} diff --git a/web/i18n/fr-FR/education.ts b/web/i18n/fr-FR/education.ts deleted file mode 100644 index 90aa69bc2c..0000000000 --- a/web/i18n/fr-FR/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerifiedTip: { - front: 'Vous êtes maintenant éligible pour le statut Vérifié en Éducation. Veuillez entrer vos informations éducatives ci-dessous pour compléter le processus et recevoir un', - coupon: 'coupon exclusif 100%', - end: 'pour le Plan Professionnel Dify.', - }, - form: { - schoolName: { - placeholder: 'Entrez le nom officiel et complet de votre école', - title: 'Le nom de votre école', - }, - schoolRole: { - option: { - administrator: 'Administrateur scolaire', - student: 'Étudiant', - teacher: 'Professeur', - }, - title: 'Votre rôle à l\'école', - }, - terms: { - desc: { - and: 'et', - privacyPolicy: 'Politique de confidentialité', - termsOfService: 'Conditions d\'utilisation', - end: '. En soumettant :', - front: 'Vos informations et votre utilisation du statut Éducation Vérifiée sont soumises à notre', - }, - option: { - age: 'Je confirme que j\'ai au moins 18 ans.', - inSchool: 'Je confirme que je suis inscrit ou employé dans l\'institution indiquée. Dify peut demander une preuve d\'inscription/employé. Si je falsifie mon éligibilité, j\'accepte de payer tous les frais initialement annulés en fonction de mon statut éducatif.', - }, - title: 'Conditions et accords', - }, - }, - emailLabel: 'Votre email actuel', - learn: 'Apprenez comment faire vérifier votre éducation', - currentSigned: 'ACTUELLEMENT CONNECTÉ EN TANT QUE', - successTitle: 'Vous avez obtenu une éducation Dify vérifiée.', - successContent: 'Nous avons émis un coupon de réduction de 100 % pour le plan Dify Professionnel sur votre compte. Le coupon est valable pendant un an, veuillez l\'utiliser dans la période de validité.', - rejectTitle: 'Votre vérification éducative Dify a été rejetée.', - submit: 'Soumettre', - submitError: 'L\'envoi du formulaire a échoué. Veuillez réessayer plus tard.', - toVerified: 'Faire vérifier l\'éducation', - rejectContent: 'Malheureusement, vous n\'êtes pas éligible au statut Éducation Vérifié et ne pouvez donc pas recevoir le coupon exclusif de 100 % pour le Plan Professionnel Dify si vous utilisez cette adresse e-mail.', - notice: { - expired: { - summary: { - line2: 'Cependant, vous n\'êtes plus éligible pour de nouveaux bons de réduction pour l\'éducation.', - line1: 'Vous pouvez toujours accéder à Dify et l\'utiliser.', - }, - title: 'Votre statut éducatif a expiré', - }, - isAboutToExpire: { - summary: 'Ne vous inquiétez pas — cela n\'affectera pas votre abonnement actuel, mais vous n\'obtiendrez pas la remise éducative lors de son renouvellement à moins que vous ne vérifiiez à nouveau votre statut.', - title: 'Votre statut éducatif expirera le {{date}}', - }, - stillInEducation: { - title: 'Encore dans l\'éducation ?', - expired: 'Veuillez vérifier à nouveau maintenant pour obtenir un nouveau coupon pour la prochaine année académique. Nous l\'ajouterons à votre compte et vous pourrez l\'utiliser pour la prochaine mise à niveau.', - isAboutToExpire: 'Vérifiez de nouveau maintenant pour obtenir un nouveau coupon pour la prochaine année académique. Il sera enregistré dans votre compte et prêt à être utilisé lors de votre prochain renouvellement.', - }, - alreadyGraduated: { - expired: 'N\'hésitez pas à vous abonner à tout moment pour accéder à toutes les fonctionnalités payantes.', - title: 'Déjà diplômé ?', - isAboutToExpire: 'Votre abonnement actuel restera actif. Lorsqu\'il se terminera, vous serez transféré au plan Sandbox, ou vous pourrez mettre à niveau à tout moment pour restaurer l\'accès complet aux fonctionnalités payantes.', - }, - action: { - reVerify: 'Re-vérifier', - dismiss: 'Rejeter', - upgrade: 'Améliorer', - }, - dateFormat: 'JJ/MM/YYYY', - }, -} - -export default translation diff --git a/web/i18n/fr-FR/explore.json b/web/i18n/fr-FR/explore.json new file mode 100644 index 0000000000..3a1f720f41 --- /dev/null +++ b/web/i18n/fr-FR/explore.json @@ -0,0 +1,42 @@ +{ + "title": "Explorer", + "sidebar": { + "discovery": "Découverte", + "chat": "Discussion", + "workspace": "Espace de travail", + "action": { + "pin": "Épingle", + "unpin": "Détacher", + "rename": "Renommer", + "delete": "Supprimer" + }, + "delete": { + "title": "Supprimer l'application", + "content": "Êtes-vous sûr de vouloir supprimer cette application ?" + } + }, + "apps": { + "title": "Explorez les applications par Dify", + "description": "Utilisez ces applications modèles instantanément ou personnalisez vos propres applications basées sur les modèles.", + "allCategories": "Recommandé" + }, + "appCard": { + "addToWorkspace": "Ajouter à l'espace de travail", + "customize": "Personnaliser" + }, + "appCustomize": { + "title": "Créer une application à partir de {{name}}", + "subTitle": "Icône de l'application & nom", + "nameRequired": "Le nom de l'application est requis" + }, + "category": { + "Assistant": "Assistant", + "Writing": "Écriture", + "Translate": "Traduire", + "Programming": "Programmation", + "HR": "RH", + "Agent": "Agent", + "Workflow": "Flux de travail", + "Entertainment": "Divertissement" + } +} diff --git a/web/i18n/fr-FR/explore.ts b/web/i18n/fr-FR/explore.ts deleted file mode 100644 index d868ebd2df..0000000000 --- a/web/i18n/fr-FR/explore.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - title: 'Explorer', - sidebar: { - discovery: 'Découverte', - chat: 'Discussion', - workspace: 'Espace de travail', - action: { - pin: 'Épingle', - unpin: 'Détacher', - rename: 'Renommer', - delete: 'Supprimer', - }, - delete: { - title: 'Supprimer l\'application', - content: 'Êtes-vous sûr de vouloir supprimer cette application ?', - }, - }, - apps: { - title: 'Explorez les applications par Dify', - description: 'Utilisez ces applications modèles instantanément ou personnalisez vos propres applications basées sur les modèles.', - allCategories: 'Recommandé', - }, - appCard: { - addToWorkspace: 'Ajouter à l\'espace de travail', - customize: 'Personnaliser', - }, - appCustomize: { - title: 'Créer une application à partir de {{name}}', - subTitle: 'Icône de l\'application & nom', - nameRequired: 'Le nom de l\'application est requis', - }, - category: { - Assistant: 'Assistant', - Writing: 'Écriture', - Translate: 'Traduire', - Programming: 'Programmation', - HR: 'RH', - Agent: 'Agent', - Workflow: 'Flux de travail', - Entertainment: 'Divertissement', - }, -} - -export default translation diff --git a/web/i18n/fr-FR/layout.json b/web/i18n/fr-FR/layout.json new file mode 100644 index 0000000000..85a03f8583 --- /dev/null +++ b/web/i18n/fr-FR/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "collapseSidebar": "Réduire la barre latérale", + "expandSidebar": "Développer la barre latérale" + } +} diff --git a/web/i18n/fr-FR/layout.ts b/web/i18n/fr-FR/layout.ts deleted file mode 100644 index b3f273fc0a..0000000000 --- a/web/i18n/fr-FR/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - collapseSidebar: 'Réduire la barre latérale', - expandSidebar: 'Développer la barre latérale', - }, -} - -export default translation diff --git a/web/i18n/fr-FR/login.json b/web/i18n/fr-FR/login.json new file mode 100644 index 0000000000..1e4ffd9901 --- /dev/null +++ b/web/i18n/fr-FR/login.json @@ -0,0 +1,124 @@ +{ + "pageTitle": "Salut, commençons !👋", + "welcome": "Bienvenue sur Dify, veuillez vous connecter pour continuer.", + "email": "Adresse e-mail", + "emailPlaceholder": "Votre email", + "password": "Mot de passe", + "passwordPlaceholder": "Votre mot de passe", + "name": "Nom d'utilisateur", + "namePlaceholder": "Votre nom d'utilisateur", + "forget": "Mot de passe oublié ?", + "signBtn": "Se connecter", + "installBtn": "Mettre en place", + "setAdminAccount": "Configuration d'un compte administrateur", + "setAdminAccountDesc": "Privilèges maximum pour le compte administrateur, qui peut être utilisé pour créer des applications et gérer les fournisseurs de LLM, etc.", + "createAndSignIn": "Créer et se connecter", + "oneMoreStep": "Une étape de plus", + "createSample": "Sur la base de ces informations, nous créerons une application exemple pour vous", + "invitationCode": "Code d'invitation", + "invitationCodePlaceholder": "Votre code d'invitation", + "interfaceLanguage": "Langue de l'interface", + "timezone": "Fuseau horaire", + "go": "Aller à Dify", + "sendUsMail": "Envoyez-nous votre introduction, et nous nous occuperons de la demande d'invitation.", + "acceptPP": "J'ai lu et j'accepte la politique de confidentialité", + "reset": "Veuillez exécuter la commande suivante pour réinitialiser votre mot de passe", + "withGitHub": "Continuer avec GitHub", + "withGoogle": "Continuer avec Google", + "rightTitle": "Débloquez le plein potentiel des LLM", + "rightDesc": "Construisez sans effort des applications IA visuellement captivantes, opérationnelles et améliorables.", + "tos": "Conditions de Service", + "pp": "Politique de Confidentialité", + "tosDesc": "En vous inscrivant, vous acceptez nos", + "goToInit": "Si vous n'avez pas initialisé le compte, veuillez vous rendre sur la page d'initialisation", + "dontHave": "Vous n'avez pas ?", + "invalidInvitationCode": "Code d'invitation invalide", + "accountAlreadyInited": "Compte déjà initialisé", + "forgotPassword": "Mot de passe oublié?", + "resetLinkSent": "Lien de réinitialisation envoyé", + "sendResetLink": "Envoyer le lien de réinitialisation", + "backToSignIn": "Retour à la connexion", + "forgotPasswordDesc": "Veuillez entrer votre adresse e-mail pour réinitialiser votre mot de passe. Nous vous enverrons un e-mail avec des instructions sur la réinitialisation de votre mot de passe.", + "checkEmailForResetLink": "Veuillez vérifier votre e-mail pour un lien de réinitialisation de votre mot de passe. S'il n'apparaît pas dans quelques minutes, assurez-vous de vérifier votre dossier de spam.", + "passwordChanged": "Connectez-vous maintenant", + "changePassword": "Changer le mot de passe", + "changePasswordTip": "Veuillez entrer un nouveau mot de passe pour votre compte", + "invalidToken": "Token invalide ou expiré", + "confirmPassword": "Confirmez le mot de passe", + "confirmPasswordPlaceholder": "Confirmez votre nouveau mot de passe", + "passwordChangedTip": "Votre mot de passe a été changé avec succès", + "error": { + "emailEmpty": "Une adresse e-mail est requise", + "emailInValid": "Veuillez entrer une adresse email valide", + "nameEmpty": "Le nom est requis", + "passwordEmpty": "Un mot de passe est requis", + "passwordInvalid": "Le mot de passe doit contenir des lettres et des chiffres, et la longueur doit être supérieure à 8.", + "passwordLengthInValid": "Le mot de passe doit comporter au moins 8 caractères.", + "registrationNotAllowed": "Compte introuvable. Veuillez contacter l’administrateur système pour vous inscrire.", + "invalidEmailOrPassword": "Adresse e-mail ou mot de passe invalide." + }, + "license": { + "tip": "Avant de commencer Dify Community Edition, lisez le GitHub", + "link": "Licence Open-source" + }, + "join": "Rejoindre", + "joinTipStart": "Je vous invite à rejoindre", + "joinTipEnd": "équipe sur Dify", + "invalid": "Le lien a expiré", + "explore": "Explorez Dify", + "activatedTipStart": "Vous avez rejoint le", + "activatedTipEnd": "équipe", + "activated": "Connectez-vous maintenant", + "adminInitPassword": "Mot de passe d'initialisation de l'administrateur", + "validate": "Valider", + "checkCode": { + "verificationCode": "Code de vérification", + "useAnotherMethod": "Utiliser une autre méthode", + "didNotReceiveCode": "Vous n’avez pas reçu le code ?", + "emptyCode": "Le code est requis", + "verify": "Vérifier", + "verificationCodePlaceholder": "Entrez le code à 6 chiffres", + "resend": "Renvoyer", + "invalidCode": "Code non valide", + "checkYourEmail": "Vérifiez vos e-mails", + "validTime": "Gardez à l’esprit que le code est valable 5 minutes", + "tipsPrefix": "Nous envoyons un code de vérification à" + }, + "sendVerificationCode": "Envoyer le code de vérification", + "or": "OU", + "continueWithCode": "Continuer avec le code", + "useVerificationCode": "Utiliser le code de vérification", + "noLoginMethod": "Méthode d’authentification non configurée", + "backToLogin": "Retour à la connexion", + "changePasswordBtn": "Définir un mot de passe", + "setYourAccount": "Configurer votre compte", + "withSSO": "Poursuivre avec l’authentification unique", + "resetPassword": "Réinitialiser le mot de passe", + "back": "Précédent", + "enterYourName": "Veuillez entrer votre nom d’utilisateur", + "noLoginMethodTip": "Veuillez contacter l’administrateur système pour ajouter une méthode d’authentification.", + "resetPasswordDesc": "Tapez l’adresse e-mail que vous avez utilisée pour vous inscrire sur Dify et nous vous enverrons un e-mail de réinitialisation de mot de passe.", + "usePassword": "Utiliser le mot de passe", + "licenseInactiveTip": "La licence Dify Enterprise de votre espace de travail est inactive. Veuillez contacter votre administrateur pour continuer à utiliser Dify.", + "licenseLostTip": "Échec de la connexion au serveur de licences Dify. Veuillez contacter votre administrateur pour continuer à utiliser Dify.", + "licenseExpired": "Licence expirée", + "licenseLost": "Licence perdue", + "licenseExpiredTip": "La licence Dify Enterprise de votre espace de travail a expiré. Veuillez contacter votre administrateur pour continuer à utiliser Dify.", + "licenseInactive": "Licence inactive", + "webapp": { + "noLoginMethodTip": "Veuillez contacter l'administrateur système pour ajouter une méthode d'authentification.", + "noLoginMethod": "Méthode d'authentification non configurée pour l'application web", + "disabled": "L'authentification de l'application web est désactivée. Veuillez contacter l'administrateur du système pour l'activer. Vous pouvez essayer d'utiliser l'application directement.", + "login": "Connexion" + }, + "signup": { + "signUp": "S'inscrire", + "noAccount": "Vous n'avez pas de compte ?", + "welcome": "👋 Bienvenue ! Veuillez remplir les détails pour commencer.", + "signIn": "Se connecter", + "haveAccount": "Vous avez déjà un compte ?", + "verifyMail": "Continuez avec le code de vérification", + "createAccount": "Créez votre compte" + }, + "pageTitleForE": "Hé, commençons !" +} diff --git a/web/i18n/fr-FR/login.ts b/web/i18n/fr-FR/login.ts deleted file mode 100644 index 3abb6fba2a..0000000000 --- a/web/i18n/fr-FR/login.ts +++ /dev/null @@ -1,126 +0,0 @@ -const translation = { - pageTitle: 'Salut, commençons !👋', - welcome: 'Bienvenue sur Dify, veuillez vous connecter pour continuer.', - email: 'Adresse e-mail', - emailPlaceholder: 'Votre email', - password: 'Mot de passe', - passwordPlaceholder: 'Votre mot de passe', - name: 'Nom d\'utilisateur', - namePlaceholder: 'Votre nom d\'utilisateur', - forget: 'Mot de passe oublié ?', - signBtn: 'Se connecter', - installBtn: 'Mettre en place', - setAdminAccount: 'Configuration d\'un compte administrateur', - setAdminAccountDesc: 'Privilèges maximum pour le compte administrateur, qui peut être utilisé pour créer des applications et gérer les fournisseurs de LLM, etc.', - createAndSignIn: 'Créer et se connecter', - oneMoreStep: 'Une étape de plus', - createSample: 'Sur la base de ces informations, nous créerons une application exemple pour vous', - invitationCode: 'Code d\'invitation', - invitationCodePlaceholder: 'Votre code d\'invitation', - interfaceLanguage: 'Langue de l\'interface', - timezone: 'Fuseau horaire', - go: 'Aller à Dify', - sendUsMail: 'Envoyez-nous votre introduction, et nous nous occuperons de la demande d\'invitation.', - acceptPP: 'J\'ai lu et j\'accepte la politique de confidentialité', - reset: 'Veuillez exécuter la commande suivante pour réinitialiser votre mot de passe', - withGitHub: 'Continuer avec GitHub', - withGoogle: 'Continuer avec Google', - rightTitle: 'Débloquez le plein potentiel des LLM', - rightDesc: 'Construisez sans effort des applications IA visuellement captivantes, opérationnelles et améliorables.', - tos: 'Conditions de Service', - pp: 'Politique de Confidentialité', - tosDesc: 'En vous inscrivant, vous acceptez nos', - goToInit: 'Si vous n\'avez pas initialisé le compte, veuillez vous rendre sur la page d\'initialisation', - dontHave: 'Vous n\'avez pas ?', - invalidInvitationCode: 'Code d\'invitation invalide', - accountAlreadyInited: 'Compte déjà initialisé', - forgotPassword: 'Mot de passe oublié?', - resetLinkSent: 'Lien de réinitialisation envoyé', - sendResetLink: 'Envoyer le lien de réinitialisation', - backToSignIn: 'Retour à la connexion', - forgotPasswordDesc: 'Veuillez entrer votre adresse e-mail pour réinitialiser votre mot de passe. Nous vous enverrons un e-mail avec des instructions sur la réinitialisation de votre mot de passe.', - checkEmailForResetLink: 'Veuillez vérifier votre e-mail pour un lien de réinitialisation de votre mot de passe. S\'il n\'apparaît pas dans quelques minutes, assurez-vous de vérifier votre dossier de spam.', - passwordChanged: 'Connectez-vous maintenant', - changePassword: 'Changer le mot de passe', - changePasswordTip: 'Veuillez entrer un nouveau mot de passe pour votre compte', - invalidToken: 'Token invalide ou expiré', - confirmPassword: 'Confirmez le mot de passe', - confirmPasswordPlaceholder: 'Confirmez votre nouveau mot de passe', - passwordChangedTip: 'Votre mot de passe a été changé avec succès', - error: { - emailEmpty: 'Une adresse e-mail est requise', - emailInValid: 'Veuillez entrer une adresse email valide', - nameEmpty: 'Le nom est requis', - passwordEmpty: 'Un mot de passe est requis', - passwordInvalid: 'Le mot de passe doit contenir des lettres et des chiffres, et la longueur doit être supérieure à 8.', - passwordLengthInValid: 'Le mot de passe doit comporter au moins 8 caractères.', - registrationNotAllowed: 'Compte introuvable. Veuillez contacter l’administrateur système pour vous inscrire.', - invalidEmailOrPassword: 'Adresse e-mail ou mot de passe invalide.', - }, - license: { - tip: 'Avant de commencer Dify Community Edition, lisez le GitHub', - link: 'Licence Open-source', - }, - join: 'Rejoindre', - joinTipStart: 'Je vous invite à rejoindre', - joinTipEnd: 'équipe sur Dify', - invalid: 'Le lien a expiré', - explore: 'Explorez Dify', - activatedTipStart: 'Vous avez rejoint le', - activatedTipEnd: 'équipe', - activated: 'Connectez-vous maintenant', - adminInitPassword: 'Mot de passe d\'initialisation de l\'administrateur', - validate: 'Valider', - checkCode: { - verificationCode: 'Code de vérification', - useAnotherMethod: 'Utiliser une autre méthode', - didNotReceiveCode: 'Vous n’avez pas reçu le code ?', - emptyCode: 'Le code est requis', - verify: 'Vérifier', - verificationCodePlaceholder: 'Entrez le code à 6 chiffres', - resend: 'Renvoyer', - invalidCode: 'Code non valide', - checkYourEmail: 'Vérifiez vos e-mails', - validTime: 'Gardez à l’esprit que le code est valable 5 minutes', - tipsPrefix: 'Nous envoyons un code de vérification à', - }, - sendVerificationCode: 'Envoyer le code de vérification', - or: 'OU', - continueWithCode: 'Continuer avec le code', - useVerificationCode: 'Utiliser le code de vérification', - noLoginMethod: 'Méthode d’authentification non configurée', - backToLogin: 'Retour à la connexion', - changePasswordBtn: 'Définir un mot de passe', - setYourAccount: 'Configurer votre compte', - withSSO: 'Poursuivre avec l’authentification unique', - resetPassword: 'Réinitialiser le mot de passe', - back: 'Précédent', - enterYourName: 'Veuillez entrer votre nom d’utilisateur', - noLoginMethodTip: 'Veuillez contacter l’administrateur système pour ajouter une méthode d’authentification.', - resetPasswordDesc: 'Tapez l’adresse e-mail que vous avez utilisée pour vous inscrire sur Dify et nous vous enverrons un e-mail de réinitialisation de mot de passe.', - usePassword: 'Utiliser le mot de passe', - licenseInactiveTip: 'La licence Dify Enterprise de votre espace de travail est inactive. Veuillez contacter votre administrateur pour continuer à utiliser Dify.', - licenseLostTip: 'Échec de la connexion au serveur de licences Dify. Veuillez contacter votre administrateur pour continuer à utiliser Dify.', - licenseExpired: 'Licence expirée', - licenseLost: 'Licence perdue', - licenseExpiredTip: 'La licence Dify Enterprise de votre espace de travail a expiré. Veuillez contacter votre administrateur pour continuer à utiliser Dify.', - licenseInactive: 'Licence inactive', - webapp: { - noLoginMethodTip: 'Veuillez contacter l\'administrateur système pour ajouter une méthode d\'authentification.', - noLoginMethod: 'Méthode d\'authentification non configurée pour l\'application web', - disabled: 'L\'authentification de l\'application web est désactivée. Veuillez contacter l\'administrateur du système pour l\'activer. Vous pouvez essayer d\'utiliser l\'application directement.', - login: 'Connexion', - }, - signup: { - signUp: 'S\'inscrire', - noAccount: 'Vous n\'avez pas de compte ?', - welcome: '👋 Bienvenue ! Veuillez remplir les détails pour commencer.', - signIn: 'Se connecter', - haveAccount: 'Vous avez déjà un compte ?', - verifyMail: 'Continuez avec le code de vérification', - createAccount: 'Créez votre compte', - }, - pageTitleForE: 'Hé, commençons !', -} - -export default translation diff --git a/web/i18n/fr-FR/oauth.json b/web/i18n/fr-FR/oauth.json new file mode 100644 index 0000000000..4d1109c1b8 --- /dev/null +++ b/web/i18n/fr-FR/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "needLogin": "Veuillez vous connecter pour autoriser", + "notLoggedIn": "Cette application veut accéder à votre compte Dify Cloud", + "common": "Nous respectons votre vie privée et n'utiliserons ces informations que pour améliorer votre expérience avec nos outils de développement.", + "loggedIn": "Cette application veut accéder aux informations suivantes de votre compte Dify Cloud." + }, + "scopes": { + "email": "E-mail", + "name": "Nom", + "timezone": "Fuseau horaire", + "avatar": "Avatar", + "languagePreference": "Préférence de langue" + }, + "error": { + "authAppInfoFetchFailed": "Échec de la récupération des informations de l'application pour l'autorisation", + "invalidParams": "Paramètres invalides", + "authorizeFailed": "Autorisation échouée" + }, + "switchAccount": "Changer de compte", + "login": "Connexion", + "unknownApp": "Application inconnue", + "continue": "Continuer", + "connect": "Se connecter à" +} diff --git a/web/i18n/fr-FR/oauth.ts b/web/i18n/fr-FR/oauth.ts deleted file mode 100644 index 7ce46b9d5e..0000000000 --- a/web/i18n/fr-FR/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - needLogin: 'Veuillez vous connecter pour autoriser', - notLoggedIn: 'Cette application veut accéder à votre compte Dify Cloud', - common: 'Nous respectons votre vie privée et n\'utiliserons ces informations que pour améliorer votre expérience avec nos outils de développement.', - loggedIn: 'Cette application veut accéder aux informations suivantes de votre compte Dify Cloud.', - }, - scopes: { - email: 'E-mail', - name: 'Nom', - timezone: 'Fuseau horaire', - avatar: 'Avatar', - languagePreference: 'Préférence de langue', - }, - error: { - authAppInfoFetchFailed: 'Échec de la récupération des informations de l\'application pour l\'autorisation', - invalidParams: 'Paramètres invalides', - authorizeFailed: 'Autorisation échouée', - }, - switchAccount: 'Changer de compte', - login: 'Connexion', - unknownApp: 'Application inconnue', - continue: 'Continuer', - connect: 'Se connecter à', -} - -export default translation diff --git a/web/i18n/fr-FR/pipeline.json b/web/i18n/fr-FR/pipeline.json new file mode 100644 index 0000000000..4ba7db84d0 --- /dev/null +++ b/web/i18n/fr-FR/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "publishAsPipeline": { + "description": "Description des connaissances", + "name": "Nom et icône du pipeline", + "namePlaceholder": "Entrez le nom de ce pipeline de connaissances. (Obligatoire)", + "descriptionPlaceholder": "Entrez la description de ce pipeline de connaissances. (Facultatif)" + }, + "processing": "Traitement", + "testRun": "Série d’essai", + "confirmPublish": "Confirmer la publication", + "publishAs": "Publier en tant que pipeline de connaissances", + "goToAddDocuments": "Aller à ajouter des documents", + "reRun": "Relancer", + "confirmPublishContent": "Une fois le pipeline de connaissances publié avec succès, la structure de blocs de cette base de connaissances ne peut pas être modifiée. Êtes-vous sûr de vouloir le publier ?", + "preparingDataSource": "Préparation de la source de données" + }, + "inputField": { + "manage": "Gérer", + "create": "Créer un champ de saisie utilisateur" + }, + "publishToast": { + "title": "Ce pipeline n’a pas encore été publié", + "desc": "Lorsque le pipeline n’est pas publié, vous pouvez modifier la structure des blocs dans le nœud de la base de connaissances, et l’orchestration et les modifications du pipeline seront automatiquement enregistrées en tant que brouillon." + }, + "result": { + "resultPreview": { + "loading": "Traitement... Veuillez patienter", + "viewDetails": "Voir les détails", + "error": "Une erreur s’est produite lors de l’exécution", + "footerTip": "En mode de test, prévisualisez jusqu'à {{count}} morceaux" + } + }, + "ragToolSuggestions": { + "title": "Suggestions pour RAG", + "noRecommendationPlugins": "Aucun plugin recommandé, trouvez-en plus dans le Marketplace" + } +} diff --git a/web/i18n/fr-FR/pipeline.ts b/web/i18n/fr-FR/pipeline.ts deleted file mode 100644 index 6ee682ff8c..0000000000 --- a/web/i18n/fr-FR/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - publishAsPipeline: { - description: 'Description des connaissances', - name: 'Nom et icône du pipeline', - namePlaceholder: 'Entrez le nom de ce pipeline de connaissances. (Obligatoire)', - descriptionPlaceholder: 'Entrez la description de ce pipeline de connaissances. (Facultatif)', - }, - processing: 'Traitement', - testRun: 'Série d’essai', - confirmPublish: 'Confirmer la publication', - publishAs: 'Publier en tant que pipeline de connaissances', - goToAddDocuments: 'Aller à ajouter des documents', - reRun: 'Relancer', - confirmPublishContent: 'Une fois le pipeline de connaissances publié avec succès, la structure de blocs de cette base de connaissances ne peut pas être modifiée. Êtes-vous sûr de vouloir le publier ?', - preparingDataSource: 'Préparation de la source de données', - }, - inputField: { - manage: 'Gérer', - create: 'Créer un champ de saisie utilisateur', - }, - publishToast: { - title: 'Ce pipeline n’a pas encore été publié', - desc: 'Lorsque le pipeline n’est pas publié, vous pouvez modifier la structure des blocs dans le nœud de la base de connaissances, et l’orchestration et les modifications du pipeline seront automatiquement enregistrées en tant que brouillon.', - }, - result: { - resultPreview: { - loading: 'Traitement... Veuillez patienter', - viewDetails: 'Voir les détails', - error: 'Une erreur s’est produite lors de l’exécution', - footerTip: 'En mode de test, prévisualisez jusqu\'à {{count}} morceaux', - }, - }, - ragToolSuggestions: { - title: 'Suggestions pour RAG', - noRecommendationPlugins: 'Aucun plugin recommandé, trouvez-en plus dans le Marketplace', - }, -} - -export default translation diff --git a/web/i18n/fr-FR/plugin-tags.json b/web/i18n/fr-FR/plugin-tags.json new file mode 100644 index 0000000000..2c9e82df71 --- /dev/null +++ b/web/i18n/fr-FR/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "tags": { + "news": "Nouvelles", + "design": "Concevoir", + "videos": "Vidéos", + "agent": "Agent", + "finance": "Finance", + "entertainment": "Divertissement", + "travel": "Voyager", + "productivity": "Productivité", + "search": "Rechercher", + "education": "Éducation", + "business": "Affaire", + "weather": "Temps", + "image": "Image", + "social": "Social", + "medical": "Médical", + "other": "Autre", + "utilities": "Utilitaires", + "rag": "CHIFFON" + }, + "searchTags": "Mots-clés de recherche", + "allTags": "Tous les mots-clés" +} diff --git a/web/i18n/fr-FR/plugin-tags.ts b/web/i18n/fr-FR/plugin-tags.ts deleted file mode 100644 index 1b3e377058..0000000000 --- a/web/i18n/fr-FR/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - tags: { - news: 'Nouvelles', - design: 'Concevoir', - videos: 'Vidéos', - agent: 'Agent', - finance: 'Finance', - entertainment: 'Divertissement', - travel: 'Voyager', - productivity: 'Productivité', - search: 'Rechercher', - education: 'Éducation', - business: 'Affaire', - weather: 'Temps', - image: 'Image', - social: 'Social', - medical: 'Médical', - other: 'Autre', - utilities: 'Utilitaires', - rag: 'CHIFFON', - }, - searchTags: 'Mots-clés de recherche', - allTags: 'Tous les mots-clés', -} - -export default translation diff --git a/web/i18n/fr-FR/plugin-trigger.json b/web/i18n/fr-FR/plugin-trigger.json new file mode 100644 index 0000000000..4adcedcf73 --- /dev/null +++ b/web/i18n/fr-FR/plugin-trigger.json @@ -0,0 +1,184 @@ +{ + "subscription": { + "title": "Abonnements", + "listNum": "abonnements {{num}}", + "empty": { + "title": "Aucun abonnement", + "button": "Nouvel abonnement" + }, + "createButton": { + "oauth": "Nouvelle abonnement avec OAuth", + "apiKey": "Nouvel abonnement avec clé API", + "manual": "Collez l'URL pour créer un nouvel abonnement" + }, + "createSuccess": "Abonnement créé avec succès", + "createFailed": "Échec de la création de l'abonnement", + "maxCount": "Nombre maximal d'abonnements {{num}}", + "selectPlaceholder": "Sélectionner un abonnement", + "noSubscriptionSelected": "Aucun abonnement sélectionné", + "subscriptionRemoved": "Abonnement supprimé", + "list": { + "title": "Abonnements", + "addButton": "Ajouter", + "tip": "Recevoir des événements via abonnement", + "item": { + "enabled": "Activé", + "disabled": "désactivé", + "credentialType": { + "api_key": "Clé API", + "oauth2": "OAuth", + "unauthorized": "Manuel" + }, + "actions": { + "delete": "Supprimer", + "deleteConfirm": { + "title": "Supprimer {{name}} ?", + "success": "Abonnement {{name}} supprimé avec succès", + "error": "Échec de la suppression de l'abonnement {{name}}", + "content": "Une fois supprimé, cet abonnement ne peut pas être récupéré. Veuillez confirmer.", + "contentWithApps": "L'abonnement actuel est référencé par {{count}} applications. Le supprimer fera en sorte que les applications configurées ne reçoivent plus d'événements d'abonnement.", + "confirm": "Confirmer la suppression", + "cancel": "Annuler", + "confirmInputWarning": "Veuillez entrer le nom correct pour confirmer.", + "confirmInputPlaceholder": "Entrez \"{{name}}\" pour confirmer.", + "confirmInputTip": "Veuillez entrer « {{name}} » pour confirmer." + } + }, + "status": { + "active": "actif", + "inactive": "Inactif" + }, + "usedByNum": "Utilisé par {{num}} flux de travail", + "noUsed": "Aucun flux de travail utilisé" + } + }, + "addType": { + "title": "Ajouter un abonnement", + "description": "Choisissez comment vous souhaitez créer votre abonnement de déclenchement", + "options": { + "apikey": { + "title": "Créer avec la clé API", + "description": "Créer automatiquement un abonnement en utilisant les identifiants API" + }, + "oauth": { + "title": "Créer avec OAuth", + "description": "Autoriser la plateforme tierce à créer un abonnement", + "clientSettings": "Paramètres du client OAuth", + "clientTitle": "Client OAuth", + "default": "Par défaut", + "custom": "Personnalisé" + }, + "manual": { + "title": "Configuration manuelle", + "description": "Collez l'URL pour créer un nouvel abonnement", + "tip": "Configurer l'URL sur une plateforme tierce manuellement" + } + } + } + }, + "modal": { + "steps": { + "verify": "Vérifier", + "configuration": "Configuration" + }, + "common": { + "cancel": "Annuler", + "back": "Retour", + "next": "Suivant", + "create": "Créer", + "verify": "Vérifier", + "authorize": "Autoriser", + "creating": "Création...", + "verifying": "Vérification...", + "authorizing": "Autorisation en cours..." + }, + "oauthRedirectInfo": "Comme aucun secret client système n'a été trouvé pour ce fournisseur d'outil, une configuration manuelle est requise ; pour redirect_uri, veuillez utiliser", + "apiKey": { + "title": "Créer avec la clé API", + "verify": { + "title": "Vérifier les identifiants", + "description": "Veuillez fournir vos identifiants API pour vérifier l'accès", + "error": "Échec de la vérification des identifiants. Veuillez vérifier votre clé API.", + "success": "Identifiants vérifiés avec succès" + }, + "configuration": { + "title": "Configurer l'abonnement", + "description": "Configurez les paramètres de votre abonnement" + } + }, + "oauth": { + "title": "Créer avec OAuth", + "authorization": { + "title": "Autorisation OAuth", + "description": "Autorisez Dify à accéder à votre compte", + "redirectUrl": "URL de redirection", + "redirectUrlHelp": "Utilisez cette URL dans la configuration de votre application OAuth", + "authorizeButton": "Autoriser avec {{provider}}", + "waitingAuth": "En attente d'autorisation...", + "authSuccess": "Autorisation réussie", + "authFailed": "Échec de l’obtention des informations d’autorisation OAuth", + "waitingJump": "Autorisé, en attente du saut" + }, + "configuration": { + "title": "Configurer l'abonnement", + "description": "Configurez les paramètres de votre abonnement après l'autorisation", + "success": "Configuration OAuth réussie", + "failed": "Échec de la configuration OAuth" + }, + "remove": { + "success": "Suppression d'OAuth réussie", + "failed": "Échec de la suppression d'OAuth" + }, + "save": { + "success": "Configuration OAuth enregistrée avec succès" + } + }, + "manual": { + "title": "Configuration manuelle", + "description": "Configurez votre abonnement webhook manuellement", + "logs": { + "title": "Journaux des requêtes", + "request": "Demande", + "loading": "En attente de la demande de {{pluginName}}..." + } + }, + "form": { + "subscriptionName": { + "label": "Nom de l'abonnement", + "placeholder": "Entrez le nom de l'abonnement", + "required": "Le nom de l'abonnement est requis" + }, + "callbackUrl": { + "label": "URL de rappel", + "description": "Cette URL recevra des événements webhook", + "tooltip": "Fournissez un point de terminaison accessible publiquement qui peut recevoir des requêtes de rappel du fournisseur de déclenchement.", + "placeholder": "Génération...", + "privateAddressWarning": "Cette URL semble être une adresse interne, ce qui peut provoquer l'échec des requêtes webhook. Vous pouvez changer TRIGGER_URL pour une adresse publique." + } + }, + "errors": { + "createFailed": "Échec de la création de l'abonnement", + "verifyFailed": "Échec de la vérification des identifiants", + "authFailed": "Autorisation échouée", + "networkError": "Erreur réseau, veuillez réessayer" + } + }, + "events": { + "title": "Événements disponibles", + "description": "Événements auxquels ce plugin de déclenchement peut s'abonner", + "empty": "Aucun événement disponible", + "event": "Événement", + "events": "Événements", + "actionNum": "{{num}} {{event}} INCLUS", + "item": { + "parameters": "paramètres {{count}}", + "noParameters": "Aucun paramètre" + }, + "output": "Sortie" + }, + "node": { + "status": { + "warning": "Se déconnecter" + } + } +} diff --git a/web/i18n/fr-FR/plugin-trigger.ts b/web/i18n/fr-FR/plugin-trigger.ts deleted file mode 100644 index 4b7929c61e..0000000000 --- a/web/i18n/fr-FR/plugin-trigger.ts +++ /dev/null @@ -1,186 +0,0 @@ -const translation = { - subscription: { - title: 'Abonnements', - listNum: 'abonnements {{num}}', - empty: { - title: 'Aucun abonnement', - button: 'Nouvel abonnement', - }, - createButton: { - oauth: 'Nouvelle abonnement avec OAuth', - apiKey: 'Nouvel abonnement avec clé API', - manual: 'Collez l\'URL pour créer un nouvel abonnement', - }, - createSuccess: 'Abonnement créé avec succès', - createFailed: 'Échec de la création de l\'abonnement', - maxCount: 'Nombre maximal d\'abonnements {{num}}', - selectPlaceholder: 'Sélectionner un abonnement', - noSubscriptionSelected: 'Aucun abonnement sélectionné', - subscriptionRemoved: 'Abonnement supprimé', - list: { - title: 'Abonnements', - addButton: 'Ajouter', - tip: 'Recevoir des événements via abonnement', - item: { - enabled: 'Activé', - disabled: 'désactivé', - credentialType: { - api_key: 'Clé API', - oauth2: 'OAuth', - unauthorized: 'Manuel', - }, - actions: { - delete: 'Supprimer', - deleteConfirm: { - title: 'Supprimer {{name}} ?', - success: 'Abonnement {{name}} supprimé avec succès', - error: 'Échec de la suppression de l\'abonnement {{name}}', - content: 'Une fois supprimé, cet abonnement ne peut pas être récupéré. Veuillez confirmer.', - contentWithApps: 'L\'abonnement actuel est référencé par {{count}} applications. Le supprimer fera en sorte que les applications configurées ne reçoivent plus d\'événements d\'abonnement.', - confirm: 'Confirmer la suppression', - cancel: 'Annuler', - confirmInputWarning: 'Veuillez entrer le nom correct pour confirmer.', - confirmInputPlaceholder: 'Entrez "{{name}}" pour confirmer.', - confirmInputTip: 'Veuillez entrer « {{name}} » pour confirmer.', - }, - }, - status: { - active: 'actif', - inactive: 'Inactif', - }, - usedByNum: 'Utilisé par {{num}} flux de travail', - noUsed: 'Aucun flux de travail utilisé', - }, - }, - addType: { - title: 'Ajouter un abonnement', - description: 'Choisissez comment vous souhaitez créer votre abonnement de déclenchement', - options: { - apikey: { - title: 'Créer avec la clé API', - description: 'Créer automatiquement un abonnement en utilisant les identifiants API', - }, - oauth: { - title: 'Créer avec OAuth', - description: 'Autoriser la plateforme tierce à créer un abonnement', - clientSettings: 'Paramètres du client OAuth', - clientTitle: 'Client OAuth', - default: 'Par défaut', - custom: 'Personnalisé', - }, - manual: { - title: 'Configuration manuelle', - description: 'Collez l\'URL pour créer un nouvel abonnement', - tip: 'Configurer l\'URL sur une plateforme tierce manuellement', - }, - }, - }, - }, - modal: { - steps: { - verify: 'Vérifier', - configuration: 'Configuration', - }, - common: { - cancel: 'Annuler', - back: 'Retour', - next: 'Suivant', - create: 'Créer', - verify: 'Vérifier', - authorize: 'Autoriser', - creating: 'Création...', - verifying: 'Vérification...', - authorizing: 'Autorisation en cours...', - }, - oauthRedirectInfo: 'Comme aucun secret client système n\'a été trouvé pour ce fournisseur d\'outil, une configuration manuelle est requise ; pour redirect_uri, veuillez utiliser', - apiKey: { - title: 'Créer avec la clé API', - verify: { - title: 'Vérifier les identifiants', - description: 'Veuillez fournir vos identifiants API pour vérifier l\'accès', - error: 'Échec de la vérification des identifiants. Veuillez vérifier votre clé API.', - success: 'Identifiants vérifiés avec succès', - }, - configuration: { - title: 'Configurer l\'abonnement', - description: 'Configurez les paramètres de votre abonnement', - }, - }, - oauth: { - title: 'Créer avec OAuth', - authorization: { - title: 'Autorisation OAuth', - description: 'Autorisez Dify à accéder à votre compte', - redirectUrl: 'URL de redirection', - redirectUrlHelp: 'Utilisez cette URL dans la configuration de votre application OAuth', - authorizeButton: 'Autoriser avec {{provider}}', - waitingAuth: 'En attente d\'autorisation...', - authSuccess: 'Autorisation réussie', - authFailed: 'Échec de l’obtention des informations d’autorisation OAuth', - waitingJump: 'Autorisé, en attente du saut', - }, - configuration: { - title: 'Configurer l\'abonnement', - description: 'Configurez les paramètres de votre abonnement après l\'autorisation', - success: 'Configuration OAuth réussie', - failed: 'Échec de la configuration OAuth', - }, - remove: { - success: 'Suppression d\'OAuth réussie', - failed: 'Échec de la suppression d\'OAuth', - }, - save: { - success: 'Configuration OAuth enregistrée avec succès', - }, - }, - manual: { - title: 'Configuration manuelle', - description: 'Configurez votre abonnement webhook manuellement', - logs: { - title: 'Journaux des requêtes', - request: 'Demande', - loading: 'En attente de la demande de {{pluginName}}...', - }, - }, - form: { - subscriptionName: { - label: 'Nom de l\'abonnement', - placeholder: 'Entrez le nom de l\'abonnement', - required: 'Le nom de l\'abonnement est requis', - }, - callbackUrl: { - label: 'URL de rappel', - description: 'Cette URL recevra des événements webhook', - tooltip: 'Fournissez un point de terminaison accessible publiquement qui peut recevoir des requêtes de rappel du fournisseur de déclenchement.', - placeholder: 'Génération...', - privateAddressWarning: 'Cette URL semble être une adresse interne, ce qui peut provoquer l\'échec des requêtes webhook. Vous pouvez changer TRIGGER_URL pour une adresse publique.', - }, - }, - errors: { - createFailed: 'Échec de la création de l\'abonnement', - verifyFailed: 'Échec de la vérification des identifiants', - authFailed: 'Autorisation échouée', - networkError: 'Erreur réseau, veuillez réessayer', - }, - }, - events: { - title: 'Événements disponibles', - description: 'Événements auxquels ce plugin de déclenchement peut s\'abonner', - empty: 'Aucun événement disponible', - event: 'Événement', - events: 'Événements', - actionNum: '{{num}} {{event}} INCLUS', - item: { - parameters: 'paramètres {{count}}', - noParameters: 'Aucun paramètre', - }, - output: 'Sortie', - }, - node: { - status: { - warning: 'Se déconnecter', - }, - }, -} - -export default translation diff --git a/web/i18n/fr-FR/plugin.json b/web/i18n/fr-FR/plugin.json new file mode 100644 index 0000000000..d6968cc037 --- /dev/null +++ b/web/i18n/fr-FR/plugin.json @@ -0,0 +1,323 @@ +{ + "category": { + "extensions": "Extensions", + "agents": "Stratégies des agents", + "models": "Modèle", + "tools": "Outils", + "bundles": "Paquets", + "all": "Tout", + "datasources": "Sources des données", + "triggers": "Déclencheurs" + }, + "categorySingle": { + "extension": "Extension", + "tool": "Outil", + "model": "Modèle", + "agent": "Stratégie d’agent", + "bundle": "Paquet", + "datasource": "Source des données", + "trigger": "Déclencheur" + }, + "list": { + "source": { + "github": "Installer à partir de GitHub", + "local": "Installer à partir d’un fichier de package local", + "marketplace": "Installer à partir de Marketplace" + }, + "notFound": "Aucun plugin trouvé", + "noInstalled": "Aucun plugin installé" + }, + "source": { + "local": "Fichier de package local", + "github": "Lien avec GitHub", + "marketplace": "Marché" + }, + "detailPanel": { + "categoryTip": { + "debugging": "Plugin de débogage", + "local": "Plugin local", + "github": "Installé à partir de Github", + "marketplace": "Installé à partir de Marketplace" + }, + "operation": { + "viewDetail": "Voir les détails", + "info": "Informations sur le plugin", + "checkUpdate": "Vérifier la mise à jour", + "update": "Mettre à jour", + "install": "Installer", + "remove": "Enlever", + "detail": "Détails", + "back": "Retour" + }, + "toolSelector": { + "uninstalledLink": "Gérer dans les plugins", + "title": "Ajouter un outil", + "uninstalledContent": "Ce plugin est installé à partir du référentiel local/GitHub. Veuillez utiliser après l’installation.", + "unsupportedTitle": "Action non soutenue", + "descriptionLabel": "Description de l’outil", + "placeholder": "Sélectionnez un outil...", + "params": "CONFIGURATION DE RAISONNEMENT", + "unsupportedContent": "La version du plugin installée ne fournit pas cette action.", + "auto": "Auto", + "descriptionPlaceholder": "Brève description de l’objectif de l’outil, par exemple, obtenir la température d’un endroit spécifique.", + "unsupportedContent2": "Cliquez pour changer de version.", + "uninstalledTitle": "Outil non installé", + "empty": "Cliquez sur le bouton « + » pour ajouter des outils. Vous pouvez ajouter plusieurs outils.", + "toolLabel": "Outil", + "settings": "PARAMÈTRES UTILISATEUR", + "paramsTip2": "Lorsque « Auto » est désactivé, la valeur par défaut est utilisée.", + "paramsTip1": "Contrôle les paramètres d’inférence LLM.", + "toolSetting": "Paramètres de l'outil", + "unsupportedMCPTool": "La version actuelle du plugin de stratégie d'agent sélectionné ne prend pas en charge les outils MCP." + }, + "modelNum": "{{num}} MODÈLES INCLUS", + "endpointDeleteTip": "Supprimer le point de terminaison", + "endpoints": "Terminaison", + "endpointsDocLink": "Voir le document", + "switchVersion": "Version du commutateur", + "strategyNum": "{{num}} {{stratégie}} INCLUS", + "configureTool": "Configurer l’outil", + "endpointDeleteContent": "Souhaitez-vous supprimer {{name}} ?", + "disabled": "Handicapé", + "endpointsTip": "Ce plug-in fournit des fonctionnalités spécifiques via des points de terminaison, et vous pouvez configurer plusieurs ensembles de points de terminaison pour l’espace de travail actuel.", + "configureModel": "Configurer le modèle", + "configureApp": "Configurer l’application", + "endpointsEmpty": "Cliquez sur le bouton « + » pour ajouter un point de terminaison", + "actionNum": "{{num}} {{action}} INCLUS", + "endpointDisableContent": "Souhaitez-vous désactiver {{name}} ?", + "endpointDisableTip": "Désactiver le point de terminaison", + "endpointModalTitle": "Configurer le point de terminaison", + "serviceOk": "Service OK", + "endpointModalDesc": "Une fois configuré, les fonctionnalités fournies par le plugin via les points de terminaison de l’API peuvent être utilisées.", + "deprecation": { + "reason": { + "ownershipTransferred": "propriété transférée", + "businessAdjustments": "ajustements commerciaux", + "noMaintainer": "aucun mainteneur" + }, + "noReason": "Ce plugin a été abandonné et ne sera plus mis à jour.", + "onlyReason": "Ce plugin a été déprécié en raison de {{deprecatedReason}} et ne sera plus mis à jour.", + "fullMessage": "Ce plugin a été déprécié en raison de {{deprecatedReason}}, et ne sera plus mis à jour. Veuillez utiliser {{-alternativePluginId}} à la place." + } + }, + "debugInfo": { + "title": "Débogage", + "viewDocs": "Voir la documentation" + }, + "privilege": { + "whoCanInstall": "Qui peut installer et gérer les plugins ?", + "admins": "Administrateurs", + "noone": "Personne", + "title": "Préférences du plugin", + "everyone": "Tout le monde", + "whoCanDebug": "Qui peut déboguer les plugins ?" + }, + "pluginInfoModal": { + "release": "Libérer", + "title": "Informations sur le plugin", + "packageName": "Colis", + "repository": "Dépôt" + }, + "action": { + "checkForUpdates": "Rechercher des mises à jour", + "pluginInfo": "Informations sur le plugin", + "delete": "Supprimer le plugin", + "deleteContentLeft": "Souhaitez-vous supprimer", + "deleteContentRight": "Plug-in ?", + "usedInApps": "Ce plugin est utilisé dans les applications {{num}}." + }, + "installModal": { + "labels": { + "package": "Colis", + "version": "Version", + "repository": "Dépôt" + }, + "installedSuccessfullyDesc": "Le plugin a été installé avec succès.", + "uploadingPackage": "Téléchargement de {{packageName}}...", + "readyToInstallPackage": "Sur le point d’installer le plugin suivant", + "back": "Précédent", + "fromTrustSource": "Assurez-vous de n’installer que des plugins provenant d’une source fiable.", + "close": "Fermer", + "installing": "Installation...", + "pluginLoadErrorDesc": "Ce plugin ne sera pas installé", + "cancel": "Annuler", + "installFailed": "Échec de l’installation", + "readyToInstallPackages": "Sur le point d’installer les plugins {{num}} suivants", + "install": "Installer", + "uploadFailed": "Échec du téléchargement", + "installComplete": "Installation terminée", + "pluginLoadError": "Erreur de chargement du plugin", + "dropPluginToInstall": "Déposez le package de plugin ici pour l’installer", + "readyToInstall": "Sur le point d’installer le plugin suivant", + "installedSuccessfully": "Installation réussie", + "next": "Prochain", + "installPlugin": "Installer le plugin", + "installFailedDesc": "L’installation du plug-in a échoué.", + "installWarning": "Ce plugin n’est pas autorisé à être installé." + }, + "installFromGitHub": { + "installFailed": "Échec de l’installation", + "installPlugin": "Installer le plugin depuis GitHub", + "gitHubRepo": "Référentiel GitHub", + "selectPackage": "Sélectionnez le forfait", + "selectVersion": "Sélectionner la version", + "uploadFailed": "Échec du téléchargement", + "installNote": "Assurez-vous de n’installer que des plugins provenant d’une source fiable.", + "selectVersionPlaceholder": "Veuillez sélectionner une version", + "installedSuccessfully": "Installation réussie", + "updatePlugin": "Mettre à jour le plugin à partir de GitHub", + "selectPackagePlaceholder": "Veuillez sélectionner un forfait" + }, + "upgrade": { + "upgrading": "Installation...", + "usedInApps": "Utilisé dans les applications {{num}}", + "close": "Fermer", + "description": "Sur le point d’installer le plugin suivant", + "upgrade": "Installer", + "title": "Installer le plugin", + "successfulTitle": "Installation réussie" + }, + "error": { + "noReleasesFound": "Aucune version n’a été trouvée. Vérifiez le référentiel GitHub ou l’URL d’entrée.", + "inValidGitHubUrl": "URL GitHub non valide. Entrez une URL valide au format : https://github.com/owner/repo", + "fetchReleasesError": "Impossible de récupérer les versions. Veuillez réessayer plus tard." + }, + "marketplace": { + "sortOption": { + "firstReleased": "Première sortie", + "mostPopular": "Les plus populaires", + "recentlyUpdated": "Récemment mis à jour", + "newlyReleased": "Nouvellement publié" + }, + "noPluginFound": "Aucun plugin trouvé", + "moreFrom": "Plus de Marketplace", + "and": "et", + "viewMore": "Voir plus", + "pluginsResult": "{{num}} résultats", + "discover": "Découvrir", + "difyMarketplace": "Marché Dify", + "empower": "Renforcez le développement de votre IA", + "sortBy": "Ville noire", + "partnerTip": "Vérifié par un partenaire Dify", + "verifiedTip": "Vérifié par Dify" + }, + "task": { + "installError": "{{errorLength}} les plugins n’ont pas pu être installés, cliquez pour voir", + "installingWithSuccess": "Installation des plugins {{installingLength}}, succès de {{successLength}}.", + "installingWithError": "Installation des plugins {{installingLength}}, succès de {{successLength}}, échec de {{errorLength}}", + "installedError": "{{errorLength}} les plugins n’ont pas pu être installés", + "clearAll": "Effacer tout", + "installing": "Installation des plugins {{installingLength}}, 0 fait.", + "installSuccess": "{{successLength}} plugins installed successfully", + "installed": "Installed", + "runningPlugins": "Installing Plugins", + "successPlugins": "Successfully Installed Plugins", + "errorPlugins": "Failed to Install Plugins" + }, + "search": "Rechercher", + "installAction": "Installer", + "from": "De", + "searchCategories": "Catégories de recherche", + "searchPlugins": "Rechercher des plugins", + "fromMarketplace": "À partir de Marketplace", + "findMoreInMarketplace": "En savoir plus sur Marketplace", + "install": "{{num}} s’installe", + "installFrom": "INSTALLER À PARTIR DE", + "searchInMarketplace": "Rechercher sur Marketplace", + "allCategories": "Toutes les catégories", + "endpointsEnabled": "{{num}} ensembles de points de terminaison activés", + "searchTools": "Outils de recherche...", + "installPlugin": "Installer le plugin", + "metadata": { + "title": "Plugins" + }, + "difyVersionNotCompatible": "La version actuelle de Dify n'est pas compatible avec ce plugin, veuillez mettre à niveau vers la version minimale requise : {{minimalDifyVersion}}", + "requestAPlugin": "Demander un plugin", + "publishPlugins": "Publier des plugins", + "auth": { + "oauthClient": "Client OAuth", + "authorizationName": "Nom d'autorisation", + "authorizations": "Autorisations", + "workspaceDefault": "Espace de travail par défaut", + "default": "Par défaut", + "addOAuth": "Ajouter OAuth", + "saveAndAuth": "Enregistrer et autoriser", + "custom": "Personnalisé", + "authRemoved": "Autorisation retirée", + "saveOnly": "Sauvegarder seulement", + "setupOAuth": "Configurer le client OAuth", + "useApiAuth": "Configuration de l'autorisation de clé API", + "addApi": "Ajouter une clé API", + "useOAuth": "Utilisez OAuth", + "oauthClientSettings": "Paramètres du client OAuth", + "useOAuthAuth": "Utilisez l'autorisation OAuth", + "useApiAuthDesc": "Après avoir configuré les identifiants, tous les membres de l'espace de travail peuvent utiliser cet outil lors de l'orchestration des applications.", + "clientInfo": "Comme aucun secret client du système n'a été trouvé pour ce fournisseur d'outils, une configuration manuelle est requise. Pour redirect_uri, veuillez utiliser", + "setDefault": "Définir comme par défaut", + "authorization": "Autorisation", + "useApi": "Utilisez la clé API", + "customCredentialUnavailable": "Les identifiants personnalisés ne sont actuellement pas disponibles.", + "credentialUnavailable": "Les informations d'identification ne sont actuellement pas disponibles. Veuillez contacter l'administrateur.", + "unavailable": "Non disponible", + "credentialUnavailableInButton": "Identifiant indisponible", + "connectedWorkspace": "Espace de travail connecté", + "emptyAuth": "Veuillez configurer l’authentification" + }, + "deprecated": "Obsolète", + "autoUpdate": { + "strategy": { + "disabled": { + "description": "Les plugins ne se mettront pas à jour automatiquement", + "name": "désactivé" + }, + "fixOnly": { + "selectedDescription": "Mise à jour automatique uniquement pour les versions de correctif", + "name": "Réparer seulement", + "description": "Mise à jour automatique uniquement pour les versions de correctif (par exemple, 1.0.1 → 1.0.2). Les changements de version mineure ne déclencheront pas de mises à jour." + }, + "latest": { + "name": "Dernier", + "selectedDescription": "Mettez toujours à jour vers la dernière version", + "description": "Mettez toujours à jour vers la dernière version" + } + }, + "upgradeMode": { + "exclude": "Exclure sélectionné", + "all": "Mettre à jour tout", + "partial": "Seulement sélectionné" + }, + "upgradeModePlaceholder": { + "partial": "Seuls les plugins sélectionnés se mettront à jour automatiquement. Aucun plugin n'est actuellement sélectionné, donc aucun plugin ne se mettra à jour automatiquement.", + "exclude": "Les plugins sélectionnés ne se mettront pas à jour automatiquement." + }, + "operation": { + "clearAll": "Tout effacer", + "select": "Sélectionner des plugins" + }, + "pluginDowngradeWarning": { + "title": "Baisse de version du plugin", + "exclude": "Exclure de la mise à jour automatique", + "downgrade": "Dégradez de toute façon", + "description": "La mise à jour automatique est actuellement activée pour ce plugin. Le fait de rétrograder la version peut entraîner la perte de vos modifications lors de la prochaine mise à jour automatique." + }, + "noPluginPlaceholder": { + "noInstalled": "Aucun plugin installé", + "noFound": "Aucun plugin n'a été trouvé" + }, + "updateTime": "Temps de mise à jour", + "specifyPluginsToUpdate": "Spécifiez les plugins à mettre à jour", + "updateTimeTitle": "Temps de mise à jour", + "changeTimezone": "Pour changer de fuseau horaire, allez dans Paramètres", + "automaticUpdates": "Mises à jour automatiques", + "updateSettings": "Mettre à jour les paramètres", + "excludeUpdate": "Les {{num}} plugins suivants ne se mettront pas à jour automatiquement", + "partialUPdate": "Seuls les {{num}} plugins suivants se mettront à jour automatiquement", + "nextUpdateTime": "Prochaine mise à jour automatique : {{time}}" + }, + "readmeInfo": { + "title": "Lisez-moi", + "needHelpCheckReadme": "Besoin d'aide ? Consultez le README.", + "noReadmeAvailable": "Aucun README disponible", + "failedToFetch": "Échec de la récupération du README" + } +} diff --git a/web/i18n/fr-FR/plugin.ts b/web/i18n/fr-FR/plugin.ts deleted file mode 100644 index f19f08eb6f..0000000000 --- a/web/i18n/fr-FR/plugin.ts +++ /dev/null @@ -1,358 +0,0 @@ -const translation = { - category: { - extensions: 'Extensions', - agents: 'Stratégies des agents', - models: 'Modèle', - tools: 'Outils', - bundles: 'Paquets', - all: 'Tout', - datasources: 'Sources des données', - triggers: 'Déclencheurs', - }, - categorySingle: { - extension: 'Extension', - tool: 'Outil', - model: 'Modèle', - agent: 'Stratégie d’agent', - bundle: 'Paquet', - datasource: 'Source des données', - trigger: 'Déclencheur', - }, - list: { - source: { - github: 'Installer à partir de GitHub', - local: 'Installer à partir d’un fichier de package local', - marketplace: 'Installer à partir de Marketplace', - }, - notFound: 'Aucun plugin trouvé', - noInstalled: 'Aucun plugin installé', - }, - source: { - local: 'Fichier de package local', - github: 'Lien avec GitHub', - marketplace: 'Marché', - }, - detailPanel: { - categoryTip: { - debugging: 'Plugin de débogage', - local: 'Plugin local', - github: 'Installé à partir de Github', - marketplace: 'Installé à partir de Marketplace', - }, - operation: { - viewDetail: 'Voir les détails', - info: 'Informations sur le plugin', - checkUpdate: 'Vérifier la mise à jour', - update: 'Mettre à jour', - install: 'Installer', - remove: 'Enlever', - detail: 'Détails', - back: 'Retour', - }, - toolSelector: { - uninstalledLink: 'Gérer dans les plugins', - title: 'Ajouter un outil', - uninstalledContent: - 'Ce plugin est installé à partir du référentiel local/GitHub. Veuillez utiliser après l’installation.', - unsupportedTitle: 'Action non soutenue', - descriptionLabel: 'Description de l’outil', - placeholder: 'Sélectionnez un outil...', - params: 'CONFIGURATION DE RAISONNEMENT', - unsupportedContent: - 'La version du plugin installée ne fournit pas cette action.', - auto: 'Auto', - descriptionPlaceholder: - 'Brève description de l’objectif de l’outil, par exemple, obtenir la température d’un endroit spécifique.', - unsupportedContent2: 'Cliquez pour changer de version.', - uninstalledTitle: 'Outil non installé', - empty: - 'Cliquez sur le bouton « + » pour ajouter des outils. Vous pouvez ajouter plusieurs outils.', - toolLabel: 'Outil', - settings: 'PARAMÈTRES UTILISATEUR', - paramsTip2: - 'Lorsque « Auto » est désactivé, la valeur par défaut est utilisée.', - paramsTip1: 'Contrôle les paramètres d’inférence LLM.', - toolSetting: 'Paramètres de l\'outil', - unsupportedMCPTool: - 'La version actuelle du plugin de stratégie d\'agent sélectionné ne prend pas en charge les outils MCP.', - }, - modelNum: '{{num}} MODÈLES INCLUS', - endpointDeleteTip: 'Supprimer le point de terminaison', - endpoints: 'Terminaison', - endpointsDocLink: 'Voir le document', - switchVersion: 'Version du commutateur', - strategyNum: '{{num}} {{stratégie}} INCLUS', - configureTool: 'Configurer l’outil', - endpointDeleteContent: 'Souhaitez-vous supprimer {{name}} ?', - disabled: 'Handicapé', - endpointsTip: - 'Ce plug-in fournit des fonctionnalités spécifiques via des points de terminaison, et vous pouvez configurer plusieurs ensembles de points de terminaison pour l’espace de travail actuel.', - configureModel: 'Configurer le modèle', - configureApp: 'Configurer l’application', - endpointsEmpty: - 'Cliquez sur le bouton « + » pour ajouter un point de terminaison', - actionNum: '{{num}} {{action}} INCLUS', - endpointDisableContent: 'Souhaitez-vous désactiver {{name}} ?', - endpointDisableTip: 'Désactiver le point de terminaison', - endpointModalTitle: 'Configurer le point de terminaison', - serviceOk: 'Service OK', - endpointModalDesc: - 'Une fois configuré, les fonctionnalités fournies par le plugin via les points de terminaison de l’API peuvent être utilisées.', - deprecation: { - reason: { - ownershipTransferred: 'propriété transférée', - businessAdjustments: 'ajustements commerciaux', - noMaintainer: 'aucun mainteneur', - }, - noReason: 'Ce plugin a été abandonné et ne sera plus mis à jour.', - onlyReason: - 'Ce plugin a été déprécié en raison de {{deprecatedReason}} et ne sera plus mis à jour.', - fullMessage: - 'Ce plugin a été déprécié en raison de {{deprecatedReason}}, et ne sera plus mis à jour. Veuillez utiliser {{-alternativePluginId}} à la place.', - }, - }, - debugInfo: { - title: 'Débogage', - viewDocs: 'Voir la documentation', - }, - privilege: { - whoCanInstall: 'Qui peut installer et gérer les plugins ?', - admins: 'Administrateurs', - noone: 'Personne', - title: 'Préférences du plugin', - everyone: 'Tout le monde', - whoCanDebug: 'Qui peut déboguer les plugins ?', - }, - pluginInfoModal: { - release: 'Libérer', - title: 'Informations sur le plugin', - packageName: 'Colis', - repository: 'Dépôt', - }, - action: { - checkForUpdates: 'Rechercher des mises à jour', - pluginInfo: 'Informations sur le plugin', - delete: 'Supprimer le plugin', - deleteContentLeft: 'Souhaitez-vous supprimer', - deleteContentRight: 'Plug-in ?', - usedInApps: 'Ce plugin est utilisé dans les applications {{num}}.', - }, - installModal: { - labels: { - package: 'Colis', - version: 'Version', - repository: 'Dépôt', - }, - installedSuccessfullyDesc: 'Le plugin a été installé avec succès.', - uploadingPackage: 'Téléchargement de {{packageName}}...', - readyToInstallPackage: 'Sur le point d’installer le plugin suivant', - back: 'Précédent', - fromTrustSource: - 'Assurez-vous de n’installer que des plugins provenant d’une source fiable.', - close: 'Fermer', - installing: 'Installation...', - pluginLoadErrorDesc: 'Ce plugin ne sera pas installé', - cancel: 'Annuler', - installFailed: 'Échec de l’installation', - readyToInstallPackages: - 'Sur le point d’installer les plugins {{num}} suivants', - install: 'Installer', - uploadFailed: 'Échec du téléchargement', - installComplete: 'Installation terminée', - pluginLoadError: 'Erreur de chargement du plugin', - dropPluginToInstall: 'Déposez le package de plugin ici pour l’installer', - readyToInstall: 'Sur le point d’installer le plugin suivant', - installedSuccessfully: 'Installation réussie', - next: 'Prochain', - installPlugin: 'Installer le plugin', - installFailedDesc: 'L’installation du plug-in a échoué.', - installWarning: 'Ce plugin n’est pas autorisé à être installé.', - }, - installFromGitHub: { - installFailed: 'Échec de l’installation', - installPlugin: 'Installer le plugin depuis GitHub', - gitHubRepo: 'Référentiel GitHub', - selectPackage: 'Sélectionnez le forfait', - selectVersion: 'Sélectionner la version', - uploadFailed: 'Échec du téléchargement', - installNote: - 'Assurez-vous de n’installer que des plugins provenant d’une source fiable.', - selectVersionPlaceholder: 'Veuillez sélectionner une version', - installedSuccessfully: 'Installation réussie', - updatePlugin: 'Mettre à jour le plugin à partir de GitHub', - selectPackagePlaceholder: 'Veuillez sélectionner un forfait', - }, - upgrade: { - upgrading: 'Installation...', - usedInApps: 'Utilisé dans les applications {{num}}', - close: 'Fermer', - description: 'Sur le point d’installer le plugin suivant', - upgrade: 'Installer', - title: 'Installer le plugin', - successfulTitle: 'Installation réussie', - }, - error: { - noReleasesFound: - 'Aucune version n’a été trouvée. Vérifiez le référentiel GitHub ou l’URL d’entrée.', - inValidGitHubUrl: - 'URL GitHub non valide. Entrez une URL valide au format : https://github.com/owner/repo', - fetchReleasesError: - 'Impossible de récupérer les versions. Veuillez réessayer plus tard.', - }, - marketplace: { - sortOption: { - firstReleased: 'Première sortie', - mostPopular: 'Les plus populaires', - recentlyUpdated: 'Récemment mis à jour', - newlyReleased: 'Nouvellement publié', - }, - noPluginFound: 'Aucun plugin trouvé', - moreFrom: 'Plus de Marketplace', - and: 'et', - viewMore: 'Voir plus', - pluginsResult: '{{num}} résultats', - discover: 'Découvrir', - difyMarketplace: 'Marché Dify', - empower: 'Renforcez le développement de votre IA', - sortBy: 'Ville noire', - partnerTip: 'Vérifié par un partenaire Dify', - verifiedTip: 'Vérifié par Dify', - }, - task: { - installError: - '{{errorLength}} les plugins n’ont pas pu être installés, cliquez pour voir', - installingWithSuccess: - 'Installation des plugins {{installingLength}}, succès de {{successLength}}.', - installingWithError: - 'Installation des plugins {{installingLength}}, succès de {{successLength}}, échec de {{errorLength}}', - installedError: '{{errorLength}} les plugins n’ont pas pu être installés', - clearAll: 'Effacer tout', - installing: 'Installation des plugins {{installingLength}}, 0 fait.', - installSuccess: '{{successLength}} plugins installed successfully', - installed: 'Installed', - runningPlugins: 'Installing Plugins', - successPlugins: 'Successfully Installed Plugins', - errorPlugins: 'Failed to Install Plugins', - }, - search: 'Rechercher', - installAction: 'Installer', - from: 'De', - searchCategories: 'Catégories de recherche', - searchPlugins: 'Rechercher des plugins', - fromMarketplace: 'À partir de Marketplace', - findMoreInMarketplace: 'En savoir plus sur Marketplace', - install: '{{num}} s’installe', - installFrom: 'INSTALLER À PARTIR DE', - searchInMarketplace: 'Rechercher sur Marketplace', - allCategories: 'Toutes les catégories', - endpointsEnabled: '{{num}} ensembles de points de terminaison activés', - searchTools: 'Outils de recherche...', - installPlugin: 'Installer le plugin', - metadata: { - title: 'Plugins', - }, - difyVersionNotCompatible: - 'La version actuelle de Dify n\'est pas compatible avec ce plugin, veuillez mettre à niveau vers la version minimale requise : {{minimalDifyVersion}}', - requestAPlugin: 'Demander un plugin', - publishPlugins: 'Publier des plugins', - auth: { - oauthClient: 'Client OAuth', - authorizationName: 'Nom d\'autorisation', - authorizations: 'Autorisations', - workspaceDefault: 'Espace de travail par défaut', - default: 'Par défaut', - addOAuth: 'Ajouter OAuth', - saveAndAuth: 'Enregistrer et autoriser', - custom: 'Personnalisé', - authRemoved: 'Autorisation retirée', - saveOnly: 'Sauvegarder seulement', - setupOAuth: 'Configurer le client OAuth', - useApiAuth: 'Configuration de l\'autorisation de clé API', - addApi: 'Ajouter une clé API', - useOAuth: 'Utilisez OAuth', - oauthClientSettings: 'Paramètres du client OAuth', - useOAuthAuth: 'Utilisez l\'autorisation OAuth', - useApiAuthDesc: - 'Après avoir configuré les identifiants, tous les membres de l\'espace de travail peuvent utiliser cet outil lors de l\'orchestration des applications.', - clientInfo: - 'Comme aucun secret client du système n\'a été trouvé pour ce fournisseur d\'outils, une configuration manuelle est requise. Pour redirect_uri, veuillez utiliser', - setDefault: 'Définir comme par défaut', - authorization: 'Autorisation', - useApi: 'Utilisez la clé API', - customCredentialUnavailable: - 'Les identifiants personnalisés ne sont actuellement pas disponibles.', - credentialUnavailable: - 'Les informations d\'identification ne sont actuellement pas disponibles. Veuillez contacter l\'administrateur.', - unavailable: 'Non disponible', - credentialUnavailableInButton: 'Identifiant indisponible', - connectedWorkspace: 'Espace de travail connecté', - emptyAuth: 'Veuillez configurer l’authentification', - }, - deprecated: 'Obsolète', - autoUpdate: { - strategy: { - disabled: { - description: 'Les plugins ne se mettront pas à jour automatiquement', - name: 'désactivé', - }, - fixOnly: { - selectedDescription: - 'Mise à jour automatique uniquement pour les versions de correctif', - name: 'Réparer seulement', - description: - 'Mise à jour automatique uniquement pour les versions de correctif (par exemple, 1.0.1 → 1.0.2). Les changements de version mineure ne déclencheront pas de mises à jour.', - }, - latest: { - name: 'Dernier', - selectedDescription: 'Mettez toujours à jour vers la dernière version', - description: 'Mettez toujours à jour vers la dernière version', - }, - }, - upgradeMode: { - exclude: 'Exclure sélectionné', - all: 'Mettre à jour tout', - partial: 'Seulement sélectionné', - }, - upgradeModePlaceholder: { - partial: - 'Seuls les plugins sélectionnés se mettront à jour automatiquement. Aucun plugin n\'est actuellement sélectionné, donc aucun plugin ne se mettra à jour automatiquement.', - exclude: - 'Les plugins sélectionnés ne se mettront pas à jour automatiquement.', - }, - operation: { - clearAll: 'Tout effacer', - select: 'Sélectionner des plugins', - }, - pluginDowngradeWarning: { - title: 'Baisse de version du plugin', - exclude: 'Exclure de la mise à jour automatique', - downgrade: 'Dégradez de toute façon', - description: - 'La mise à jour automatique est actuellement activée pour ce plugin. Le fait de rétrograder la version peut entraîner la perte de vos modifications lors de la prochaine mise à jour automatique.', - }, - noPluginPlaceholder: { - noInstalled: 'Aucun plugin installé', - noFound: 'Aucun plugin n\'a été trouvé', - }, - updateTime: 'Temps de mise à jour', - specifyPluginsToUpdate: 'Spécifiez les plugins à mettre à jour', - updateTimeTitle: 'Temps de mise à jour', - changeTimezone: - 'Pour changer de fuseau horaire, allez dans Paramètres', - automaticUpdates: 'Mises à jour automatiques', - updateSettings: 'Mettre à jour les paramètres', - excludeUpdate: - 'Les {{num}} plugins suivants ne se mettront pas à jour automatiquement', - partialUPdate: - 'Seuls les {{num}} plugins suivants se mettront à jour automatiquement', - nextUpdateTime: 'Prochaine mise à jour automatique : {{time}}', - }, - readmeInfo: { - title: 'Lisez-moi', - needHelpCheckReadme: 'Besoin d\'aide ? Consultez le README.', - noReadmeAvailable: 'Aucun README disponible', - failedToFetch: 'Échec de la récupération du README', - }, -} - -export default translation diff --git a/web/i18n/fr-FR/register.json b/web/i18n/fr-FR/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/fr-FR/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/fr-FR/register.ts b/web/i18n/fr-FR/register.ts deleted file mode 100644 index 928649474b..0000000000 --- a/web/i18n/fr-FR/register.ts +++ /dev/null @@ -1,4 +0,0 @@ -const translation = { -} - -export default translation diff --git a/web/i18n/fr-FR/run-log.json b/web/i18n/fr-FR/run-log.json new file mode 100644 index 0000000000..79c9ae6035 --- /dev/null +++ b/web/i18n/fr-FR/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "ENTRÉE", + "result": "RÉSULTAT", + "detail": "DÉTAIL", + "tracing": "TRACE", + "resultPanel": { + "status": "STATUT", + "time": "TEMPS ÉCOULÉ", + "tokens": "TOTAL DES JETONS" + }, + "meta": { + "title": "MÉTADONNÉES", + "status": "Statut", + "version": "Version", + "executor": "Exécuteur", + "startTime": "Heure de début", + "time": "Temps écoulé", + "tokens": "Total des jetons", + "steps": "Étapes d'exécution" + }, + "resultEmpty": { + "title": "Cela exécute uniquement le format de sortie JSON,", + "tipLeft": "veuillez aller à ", + "link": "panneau de détail", + "tipRight": " visualisez-le." + }, + "actionLogs": "Journaux d’actions", + "circularInvocationTip": "Il y a un appel circulaire d’outils/nœuds dans le flux de travail actuel." +} diff --git a/web/i18n/fr-FR/run-log.ts b/web/i18n/fr-FR/run-log.ts deleted file mode 100644 index d963efc8f2..0000000000 --- a/web/i18n/fr-FR/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -const translation = { - input: 'ENTRÉE', - result: 'RÉSULTAT', - detail: 'DÉTAIL', - tracing: 'TRACE', - resultPanel: { - status: 'STATUT', - time: 'TEMPS ÉCOULÉ', - tokens: 'TOTAL DES JETONS', - }, - meta: { - title: 'MÉTADONNÉES', - status: 'Statut', - version: 'Version', - executor: 'Exécuteur', - startTime: 'Heure de début', - time: 'Temps écoulé', - tokens: 'Total des jetons', - steps: 'Étapes d\'exécution', - }, - resultEmpty: { - title: 'Cela exécute uniquement le format de sortie JSON,', - tipLeft: 'veuillez aller à ', - link: 'panneau de détail', - tipRight: ' visualisez-le.', - }, - actionLogs: 'Journaux d’actions', - circularInvocationTip: 'Il y a un appel circulaire d’outils/nœuds dans le flux de travail actuel.', -} - -export default translation diff --git a/web/i18n/fr-FR/share.json b/web/i18n/fr-FR/share.json new file mode 100644 index 0000000000..bcc8c1eff7 --- /dev/null +++ b/web/i18n/fr-FR/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "", + "appUnavailable": "L'application n'est pas disponible", + "appUnknownError": "L'application n'est pas disponible" + }, + "chat": { + "newChat": "Nouveau chat", + "pinnedTitle": "Épinglé", + "unpinnedTitle": "Discussions", + "newChatDefaultName": "Nouvelle conversation", + "resetChat": "Réinitialiser la conversation", + "poweredBy": "Propulsé par", + "prompt": "Prompt", + "privatePromptConfigTitle": "Paramètres de conversation", + "publicPromptConfigTitle": "Prompt Initial", + "configStatusDes": "Avant de commencer, vous pouvez modifier les paramètres de conversation", + "configDisabled": "Les paramètres de la session précédente ont été utilisés pour cette session.", + "startChat": "Commencer le Chat", + "privacyPolicyLeft": "Veuillez lire", + "privacyPolicyMiddle": "politique de confidentialité", + "privacyPolicyRight": "fourni par le développeur de l'application.", + "deleteConversation": { + "title": "Supprimer la conversation", + "content": "Êtes-vous sûr de vouloir supprimer cette conversation ?" + }, + "tryToSolve": "Essayez de résoudre", + "temporarySystemIssue": "Désolé, problème temporaire du système.", + "expand": "Développer", + "collapse": "Réduire", + "chatSettingsTitle": "Nouvelle configuration de chat", + "viewChatSettings": "Voir les paramètres de chat", + "newChatTip": "Déjà dans une nouvelle discussion", + "chatFormTip": "Les paramètres de chat ne peuvent pas être modifiés une fois que le chat a commencé." + }, + "generation": { + "tabs": { + "create": "Exécuter une fois", + "batch": "Exécuter le lot", + "saved": "Enregistré" + }, + "savedNoData": { + "title": "Vous n'avez pas encore enregistré de résultat !", + "description": "Commencez à générer du contenu et retrouvez vos résultats sauvegardés ici.", + "startCreateContent": "Commencez à créer du contenu" + }, + "title": "Complétion IA", + "queryTitle": "Contenu de la requête", + "completionResult": "Résultat de la complétion", + "queryPlaceholder": "Rédigez le contenu de votre requête...", + "run": "Exécuter", + "copy": "Copier", + "resultTitle": "Complétion IA", + "noData": "L'IA vous donnera ce que vous voulez ici.", + "csvUploadTitle": "Faites glisser et déposez votre fichier CSV ici, ou", + "browse": "parcourir", + "csvStructureTitle": "Le fichier CSV doit se conformer à la structure suivante :", + "downloadTemplate": "Téléchargez le modèle ici", + "field": "Champ", + "batchFailed": { + "info": "{{num}} exécutions échouées", + "retry": "Réessayer", + "outputPlaceholder": "Aucun contenu de sortie" + }, + "errorMsg": { + "empty": "Veuillez entrer le contenu dans le fichier téléchargé.", + "fileStructNotMatch": "Le fichier CSV téléchargé ne correspond pas à la structure.", + "emptyLine": "La ligne {{rowIndex}} est vide", + "invalidLine": "Row {{rowIndex}}: {{varName}} value can not be empty", + "moreThanMaxLengthLine": "Row {{rowIndex}}: {{varName}} value can not be more than {{maxLength}} characters", + "atLeastOne": "Veuillez entrer au moins une ligne dans le fichier téléchargé." + }, + "execution": "Exécuter", + "executions": "{{num}} exécutions", + "stopRun": "Arrêter l'exécution" + }, + "login": { + "backToHome": "Retour à l'accueil" + } +} diff --git a/web/i18n/fr-FR/share.ts b/web/i18n/fr-FR/share.ts deleted file mode 100644 index 6c7a9e4f4e..0000000000 --- a/web/i18n/fr-FR/share.ts +++ /dev/null @@ -1,86 +0,0 @@ -const translation = { - common: { - welcome: '', - appUnavailable: 'L\'application n\'est pas disponible', - appUnknownError: 'L\'application n\'est pas disponible', - }, - chat: { - newChat: 'Nouveau chat', - pinnedTitle: 'Épinglé', - unpinnedTitle: 'Discussions', - newChatDefaultName: 'Nouvelle conversation', - resetChat: 'Réinitialiser la conversation', - poweredBy: 'Propulsé par', - prompt: 'Prompt', - privatePromptConfigTitle: 'Paramètres de conversation', - publicPromptConfigTitle: 'Prompt Initial', - configStatusDes: 'Avant de commencer, vous pouvez modifier les paramètres de conversation', - configDisabled: - 'Les paramètres de la session précédente ont été utilisés pour cette session.', - startChat: 'Commencer le Chat', - privacyPolicyLeft: - 'Veuillez lire', - privacyPolicyMiddle: - 'politique de confidentialité', - privacyPolicyRight: - 'fourni par le développeur de l\'application.', - deleteConversation: { - title: 'Supprimer la conversation', - content: 'Êtes-vous sûr de vouloir supprimer cette conversation ?', - }, - tryToSolve: 'Essayez de résoudre', - temporarySystemIssue: 'Désolé, problème temporaire du système.', - expand: 'Développer', - collapse: 'Réduire', - chatSettingsTitle: 'Nouvelle configuration de chat', - viewChatSettings: 'Voir les paramètres de chat', - newChatTip: 'Déjà dans une nouvelle discussion', - chatFormTip: 'Les paramètres de chat ne peuvent pas être modifiés une fois que le chat a commencé.', - }, - generation: { - tabs: { - create: 'Exécuter une fois', - batch: 'Exécuter le lot', - saved: 'Enregistré', - }, - savedNoData: { - title: 'Vous n\'avez pas encore enregistré de résultat !', - description: 'Commencez à générer du contenu et retrouvez vos résultats sauvegardés ici.', - startCreateContent: 'Commencez à créer du contenu', - }, - title: 'Complétion IA', - queryTitle: 'Contenu de la requête', - completionResult: 'Résultat de la complétion', - queryPlaceholder: 'Rédigez le contenu de votre requête...', - run: 'Exécuter', - copy: 'Copier', - resultTitle: 'Complétion IA', - noData: 'L\'IA vous donnera ce que vous voulez ici.', - csvUploadTitle: 'Faites glisser et déposez votre fichier CSV ici, ou', - browse: 'parcourir', - csvStructureTitle: 'Le fichier CSV doit se conformer à la structure suivante :', - downloadTemplate: 'Téléchargez le modèle ici', - field: 'Champ', - batchFailed: { - info: '{{num}} exécutions échouées', - retry: 'Réessayer', - outputPlaceholder: 'Aucun contenu de sortie', - }, - errorMsg: { - empty: 'Veuillez entrer le contenu dans le fichier téléchargé.', - fileStructNotMatch: 'Le fichier CSV téléchargé ne correspond pas à la structure.', - emptyLine: 'La ligne {{rowIndex}} est vide', - invalidLine: 'Row {{rowIndex}}: {{varName}} value can not be empty', - moreThanMaxLengthLine: 'Row {{rowIndex}}: {{varName}} value can not be more than {{maxLength}} characters', - atLeastOne: 'Veuillez entrer au moins une ligne dans le fichier téléchargé.', - }, - execution: 'Exécuter', - executions: '{{num}} exécutions', - stopRun: 'Arrêter l\'exécution', - }, - login: { - backToHome: 'Retour à l\'accueil', - }, -} - -export default translation diff --git a/web/i18n/fr-FR/time.json b/web/i18n/fr-FR/time.json new file mode 100644 index 0000000000..fd2231a7ac --- /dev/null +++ b/web/i18n/fr-FR/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Sat": "Sat", + "Fri": "Libre", + "Wed": "Mercredi", + "Mon": "Mon", + "Thu": "Jeudi", + "Tue": "Mardi", + "Sun": "Soleil" + }, + "months": { + "October": "octobre", + "July": "Juillet", + "June": "Juin", + "December": "Décembre", + "November": "Novembre", + "April": "Avril", + "September": "Septembre", + "February": "Février", + "May": "Mai", + "January": "Janvier", + "August": "août", + "March": "Mars" + }, + "operation": { + "now": "Maintenant", + "pickDate": "Choisir une date", + "cancel": "Annuler", + "ok": "D'accord" + }, + "title": { + "pickTime": "Choisir le temps" + }, + "defaultPlaceholder": "Choisissez un moment...", + "dateFormats": { + "display": "MMMM D, AAAA", + "output": "AAAA-MM-JJ", + "input": "AAAA-MM-JJ", + "displayWithTime": "MMMM D, YYYY hh:mm A", + "outputWithTime": "AAAA-MM-JJTHH:mm:ss.SSSZ" + } +} diff --git a/web/i18n/fr-FR/time.ts b/web/i18n/fr-FR/time.ts deleted file mode 100644 index 7ca19407df..0000000000 --- a/web/i18n/fr-FR/time.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - daysInWeek: { - Sat: 'Sat', - Fri: 'Libre', - Wed: 'Mercredi', - Mon: 'Mon', - Thu: 'Jeudi', - Tue: 'Mardi', - Sun: 'Soleil', - }, - months: { - October: 'octobre', - July: 'Juillet', - June: 'Juin', - December: 'Décembre', - November: 'Novembre', - April: 'Avril', - September: 'Septembre', - February: 'Février', - May: 'Mai', - January: 'Janvier', - August: 'août', - March: 'Mars', - }, - operation: { - now: 'Maintenant', - pickDate: 'Choisir une date', - cancel: 'Annuler', - ok: 'D\'accord', - }, - title: { - pickTime: 'Choisir le temps', - }, - defaultPlaceholder: 'Choisissez un moment...', - dateFormats: { - display: 'MMMM D, AAAA', - output: 'AAAA-MM-JJ', - input: 'AAAA-MM-JJ', - displayWithTime: 'MMMM D, YYYY hh:mm A', - outputWithTime: 'AAAA-MM-JJTHH:mm:ss.SSSZ', - }, -} - -export default translation diff --git a/web/i18n/fr-FR/tools.json b/web/i18n/fr-FR/tools.json new file mode 100644 index 0000000000..5dd947dccd --- /dev/null +++ b/web/i18n/fr-FR/tools.json @@ -0,0 +1,262 @@ +{ + "title": "Outils", + "createCustomTool": "Créer un Outil Personnalisé", + "type": { + "builtIn": "Intégré", + "custom": "Personnalisé", + "workflow": "Flux de travail" + }, + "contribute": { + "line1": "Je suis intéressé par", + "line2": "contribuer des outils à Dify.", + "viewGuide": "Voir le guide" + }, + "author": "Par", + "auth": { + "authorized": "Autorisé", + "setup": "Mettez en place l'autorisation à utiliser", + "setupModalTitle": "Configurer l'Autorisation", + "setupModalTitleDescription": "Après avoir configuré les identifiants, tous les membres de l'espace de travail peuvent utiliser cet outil lors de l'orchestration des applications." + }, + "includeToolNum": "{{num}} outils inclus", + "createTool": { + "title": "Créer un Outil Personnalisé", + "editAction": "Configurer", + "editTitle": "Modifier l'Outil Personnalisé", + "name": "Nom", + "toolNamePlaceHolder": "Entrez le nom de l'outil", + "schema": "Schéma", + "schemaPlaceHolder": "Entrez votre schéma OpenAPI ici", + "viewSchemaSpec": "Voir la spécification OpenAPI-Swagger", + "importFromUrl": "Importer depuis l'URL", + "importFromUrlPlaceHolder": "https://...", + "urlError": "Veuillez entrer une URL valide", + "examples": "Exemples", + "exampleOptions": { + "json": "Météo(JSON)", + "yaml": "Animalerie (YAML)", + "blankTemplate": "Modèle Vierge" + }, + "availableTools": { + "title": "Outils Disponibles", + "name": "Nom", + "description": "Description", + "method": "Méthode", + "path": "Chemin", + "action": "Actions", + "test": "Test" + }, + "authMethod": { + "title": "Méthode d'autorisation", + "type": "Type d'autorisation", + "keyTooltip": "Clé de l'en-tête HTTP. Vous pouvez la laisser telle quelle avec \"Autorisation\" si vous n'avez aucune idée de ce que c'est, ou la définir sur une valeur personnalisée.", + "types": { + "none": "Aucun", + "apiKeyPlaceholder": "Nom de l'en-tête HTTP pour la clé API", + "apiValuePlaceholder": "Entrez la clé API", + "api_key_query": "Paramètre de requête", + "queryParamPlaceholder": "Nom du paramètre de requête pour la clé API", + "api_key_header": "En-tête" + }, + "key": "Clé", + "value": "Valeur", + "queryParam": "Paramètre de requête", + "queryParamTooltip": "Le nom du paramètre de requête de la clé API à passer, par exemple \"key\" dans \"https://example.com/test?key=API_KEY\"." + }, + "authHeaderPrefix": { + "title": "Type d'Authentification", + "types": { + "basic": "Basique", + "bearer": "Porteur", + "custom": "Personnalisé" + } + }, + "privacyPolicy": "Politique de confidentialité", + "privacyPolicyPlaceholder": "Veuillez entrer la politique de confidentialité", + "customDisclaimer": "Clause de non-responsabilité personnalisée", + "customDisclaimerPlaceholder": "Entrez le texte de la clause de non-responsabilité personnalisée", + "deleteToolConfirmTitle": "Supprimer cet outil ?", + "deleteToolConfirmContent": "La suppression de l'outil est irréversible. Les utilisateurs ne pourront plus accéder à votre outil.", + "toolInput": { + "required": "Obligatoire", + "name": "Nom", + "label": "Étiquettes", + "title": "Entrée d’outil", + "methodSetting": "Réglage", + "labelPlaceholder": "Choisir des balises(facultatif)", + "descriptionPlaceholder": "Description de la signification du paramètre", + "method": "Méthode", + "methodParameter": "Paramètre", + "methodSettingTip": "L’utilisateur renseigne la configuration de l’outil", + "methodParameterTip": "Remplissages LLM pendant l’inférence", + "description": "Description" + }, + "nameForToolCallTip": "Ne prend en charge que les chiffres, les lettres et les traits de soulignement.", + "confirmTitle": "Confirmer pour enregistrer ?", + "nameForToolCall": "Nom de l’appel de l’outil", + "confirmTip": "Les applications utilisant cet outil seront affectées", + "description": "Description", + "nameForToolCallPlaceHolder": "Utilisé pour la reconnaissance automatique, tels que getCurrentWeather, list_pets", + "descriptionPlaceholder": "Brève description de l’objectif de l’outil, par exemple, obtenir la température d’un endroit spécifique.", + "toolOutput": { + "title": "Sortie de l'outil", + "name": "Nom", + "reserved": "Réservé", + "reservedParameterDuplicateTip": "text, json et files sont des variables réservées. Les variables portant ces noms ne peuvent pas apparaître dans le schéma de sortie.", + "description": "Description" + } + }, + "test": { + "title": "Test", + "parametersValue": "Paramètres & Valeur", + "parameters": "Paramètres", + "value": "Valeur", + "testResult": "Résultats du Test", + "testResultPlaceholder": "Le résultat du test s'affichera ici" + }, + "thought": { + "using": "Utilisation", + "used": "Utilisé", + "requestTitle": "Demande à", + "responseTitle": "Réponse de" + }, + "setBuiltInTools": { + "info": "Infos", + "setting": "Paramètres", + "toolDescription": "Description de l'outil", + "parameters": "paramètres", + "string": "chaîne", + "number": "nombre", + "required": "Requis", + "infoAndSetting": "Infos & Paramètres", + "file": "lime" + }, + "noCustomTool": { + "title": "Pas d'outils personnalisés !", + "content": "Ajoutez et gérez vos outils personnalisés ici pour construire des applications IA.", + "createTool": "Créer un outil" + }, + "noSearchRes": { + "title": "Désolé, aucun résultat !", + "content": "Nous n'avons trouvé aucun outil correspondant à votre recherche.", + "reset": "Réinitialiser la recherche" + }, + "builtInPromptTitle": "Invite", + "toolRemoved": "Outil supprimé", + "notAuthorized": "Outil non autorisé", + "howToGet": "Comment obtenir", + "addToolModal": { + "type": "type", + "added": "supplémentaire", + "category": "catégorie", + "custom": { + "title": "Aucun outil personnalisé disponible", + "tip": "Créer un outil personnalisé" + }, + "workflow": { + "title": "Aucun outil de workflow disponible", + "tip": "Publier des workflows en tant qu'outils dans le Studio" + }, + "mcp": { + "title": "Aucun outil MCP disponible", + "tip": "Ajouter un serveur MCP" + }, + "agent": { + "title": "Aucune stratégie d'agent disponible" + } + }, + "openInStudio": "Ouvrir dans Studio", + "customToolTip": "En savoir plus sur les outils personnalisés Dify", + "toolNameUsageTip": "Nom de l’appel de l’outil pour le raisonnement et l’invite de l’agent", + "copyToolName": "Copier le nom", + "noTools": "Aucun outil trouvé", + "mcp": { + "create": { + "cardTitle": "Ajouter un Serveur MCP (HTTP)", + "cardLink": "En savoir plus sur l'intégration du serveur MCP" + }, + "noConfigured": "Serveur Non Configuré", + "updateTime": "Mis à jour", + "toolsCount": "{count} outils", + "noTools": "Aucun outil disponible", + "modal": { + "title": "Ajouter un Serveur MCP (HTTP)", + "editTitle": "Modifier le Serveur MCP (HTTP)", + "name": "Nom & Icône", + "namePlaceholder": "Nommez votre serveur MCP", + "serverUrl": "URL du Serveur", + "serverUrlPlaceholder": "URL de l'endpoint du serveur", + "serverUrlWarning": "Mettre à jour l'adresse du serveur peut perturber les applications qui dépendent de ce serveur", + "serverIdentifier": "Identifiant du Serveur", + "serverIdentifierTip": "Identifiant unique pour le serveur MCP au sein de l'espace de travail. Seulement des lettres minuscules, des chiffres, des traits de soulignement et des tirets. Jusqu'à 24 caractères.", + "serverIdentifierPlaceholder": "Identifiant unique, par ex. mon-serveur-mcp", + "serverIdentifierWarning": "Le serveur ne sera pas reconnu par les applications existantes après un changement d'ID", + "cancel": "Annuler", + "save": "Enregistrer", + "confirm": "Ajouter & Authoriser", + "sseReadTimeout": "Délai d'attente de lecture SSE", + "timeout": "Délai d'attente", + "timeoutPlaceholder": "trente", + "headerValue": "Valeur d'en-tête", + "headerKey": "Nom de l'en-tête", + "noHeaders": "Aucun en-tête personnalisé configuré", + "headers": "En-têtes", + "headerKeyPlaceholder": "par exemple, Autorisation", + "headerValuePlaceholder": "par exemple, Jeton d'accès123", + "headersTip": "En-têtes HTTP supplémentaires à envoyer avec les requêtes au serveur MCP", + "addHeader": "Ajouter un en-tête", + "maskedHeadersTip": "Les valeurs d'en-tête sont masquées pour des raisons de sécurité. Les modifications mettront à jour les valeurs réelles.", + "clientSecretPlaceholder": "Secret client", + "configurations": "Configurations", + "clientID": "ID client", + "authentication": "Authentification", + "useDynamicClientRegistration": "Utiliser l'enregistrement dynamique des clients", + "clientSecret": "Secret client", + "redirectUrlWarning": "Veuillez configurer votre URL de redirection OAuth sur :" + }, + "delete": "Supprimer le Serveur MCP", + "deleteConfirmTitle": "Souhaitez-vous supprimer {mcp}?", + "operation": { + "edit": "Modifier", + "remove": "Supprimer" + }, + "authorize": "Autoriser", + "authorizing": "Autorisation en cours...", + "authorizingRequired": "L'autorisation est requise", + "authorizeTip": "Après autorisation, les outils seront affichés ici.", + "update": "Mettre à jour", + "updating": "Mise à jour en cours", + "gettingTools": "Obtention des Outils...", + "updateTools": "Mise à jour des Outils...", + "toolsEmpty": "Outils non chargés", + "getTools": "Obtenir des outils", + "toolUpdateConfirmTitle": "Mettre à jour la Liste des Outils", + "toolUpdateConfirmContent": "La mise à jour de la liste des outils peut affecter les applications existantes. Souhaitez-vous continuer?", + "toolsNum": "{count} outils inclus", + "onlyTool": "1 outil inclus", + "identifier": "Identifiant du Serveur (Cliquez pour Copier)", + "server": { + "title": "Serveur MCP", + "url": "URL du Serveur", + "reGen": "Voulez-vous régénérer l'URL du serveur?", + "addDescription": "Ajouter une description", + "edit": "Modifier la description", + "modal": { + "addTitle": "Ajouter une description pour activer le serveur MCP", + "editTitle": "Modifier la description", + "description": "Description", + "descriptionPlaceholder": "Expliquez ce que fait cet outil et comment il doit être utilisé par le LLM", + "parameters": "Paramètres", + "parametersTip": "Ajoutez des descriptions pour chaque paramètre afin d'aider le LLM à comprendre leur objectif et leurs contraintes.", + "parametersPlaceholder": "Objectif et contraintes du paramètre", + "confirm": "Activer le Serveur MCP" + }, + "publishTip": "Application non publiée. Merci de publier l'application en premier." + }, + "toolItem": { + "parameters": "Paramètres", + "noDescription": "Aucune description" + } + }, + "allTools": "Tous les outils" +} diff --git a/web/i18n/fr-FR/tools.ts b/web/i18n/fr-FR/tools.ts deleted file mode 100644 index 08331e3013..0000000000 --- a/web/i18n/fr-FR/tools.ts +++ /dev/null @@ -1,264 +0,0 @@ -const translation = { - title: 'Outils', - createCustomTool: 'Créer un Outil Personnalisé', - type: { - builtIn: 'Intégré', - custom: 'Personnalisé', - workflow: 'Flux de travail', - }, - contribute: { - line1: 'Je suis intéressé par', - line2: 'contribuer des outils à Dify.', - viewGuide: 'Voir le guide', - }, - author: 'Par', - auth: { - authorized: 'Autorisé', - setup: 'Mettez en place l\'autorisation à utiliser', - setupModalTitle: 'Configurer l\'Autorisation', - setupModalTitleDescription: 'Après avoir configuré les identifiants, tous les membres de l\'espace de travail peuvent utiliser cet outil lors de l\'orchestration des applications.', - }, - includeToolNum: '{{num}} outils inclus', - createTool: { - title: 'Créer un Outil Personnalisé', - editAction: 'Configurer', - editTitle: 'Modifier l\'Outil Personnalisé', - name: 'Nom', - toolNamePlaceHolder: 'Entrez le nom de l\'outil', - schema: 'Schéma', - schemaPlaceHolder: 'Entrez votre schéma OpenAPI ici', - viewSchemaSpec: 'Voir la spécification OpenAPI-Swagger', - importFromUrl: 'Importer depuis l\'URL', - importFromUrlPlaceHolder: 'https://...', - urlError: 'Veuillez entrer une URL valide', - examples: 'Exemples', - exampleOptions: { - json: 'Météo(JSON)', - yaml: 'Animalerie (YAML)', - blankTemplate: 'Modèle Vierge', - }, - availableTools: { - title: 'Outils Disponibles', - name: 'Nom', - description: 'Description', - method: 'Méthode', - path: 'Chemin', - action: 'Actions', - test: 'Test', - }, - authMethod: { - title: 'Méthode d\'autorisation', - type: 'Type d\'autorisation', - keyTooltip: 'Clé de l\'en-tête HTTP. Vous pouvez la laisser telle quelle avec "Autorisation" si vous n\'avez aucune idée de ce que c\'est, ou la définir sur une valeur personnalisée.', - types: { - none: 'Aucun', - apiKeyPlaceholder: 'Nom de l\'en-tête HTTP pour la clé API', - apiValuePlaceholder: 'Entrez la clé API', - api_key_query: 'Paramètre de requête', - queryParamPlaceholder: 'Nom du paramètre de requête pour la clé API', - api_key_header: 'En-tête', - }, - key: 'Clé', - value: 'Valeur', - queryParam: 'Paramètre de requête', - queryParamTooltip: 'Le nom du paramètre de requête de la clé API à passer, par exemple "key" dans "https://example.com/test?key=API_KEY".', - }, - authHeaderPrefix: { - title: 'Type d\'Authentification', - types: { - basic: 'Basique', - bearer: 'Porteur', - custom: 'Personnalisé', - }, - }, - privacyPolicy: 'Politique de confidentialité', - privacyPolicyPlaceholder: 'Veuillez entrer la politique de confidentialité', - customDisclaimer: 'Clause de non-responsabilité personnalisée', - customDisclaimerPlaceholder: 'Entrez le texte de la clause de non-responsabilité personnalisée', - deleteToolConfirmTitle: 'Supprimer cet outil ?', - deleteToolConfirmContent: 'La suppression de l\'outil est irréversible. Les utilisateurs ne pourront plus accéder à votre outil.', - toolInput: { - required: 'Obligatoire', - name: 'Nom', - label: 'Étiquettes', - title: 'Entrée d’outil', - methodSetting: 'Réglage', - labelPlaceholder: 'Choisir des balises(facultatif)', - descriptionPlaceholder: 'Description de la signification du paramètre', - method: 'Méthode', - methodParameter: 'Paramètre', - methodSettingTip: 'L’utilisateur renseigne la configuration de l’outil', - methodParameterTip: 'Remplissages LLM pendant l’inférence', - description: 'Description', - }, - nameForToolCallTip: 'Ne prend en charge que les chiffres, les lettres et les traits de soulignement.', - confirmTitle: 'Confirmer pour enregistrer ?', - nameForToolCall: 'Nom de l’appel de l’outil', - confirmTip: 'Les applications utilisant cet outil seront affectées', - description: 'Description', - nameForToolCallPlaceHolder: 'Utilisé pour la reconnaissance automatique, tels que getCurrentWeather, list_pets', - descriptionPlaceholder: 'Brève description de l’objectif de l’outil, par exemple, obtenir la température d’un endroit spécifique.', - toolOutput: { - title: 'Sortie de l\'outil', - name: 'Nom', - reserved: 'Réservé', - reservedParameterDuplicateTip: 'text, json et files sont des variables réservées. Les variables portant ces noms ne peuvent pas apparaître dans le schéma de sortie.', - description: 'Description', - }, - }, - test: { - title: 'Test', - parametersValue: 'Paramètres & Valeur', - parameters: 'Paramètres', - value: 'Valeur', - testResult: 'Résultats du Test', - testResultPlaceholder: 'Le résultat du test s\'affichera ici', - }, - thought: { - using: 'Utilisation', - used: 'Utilisé', - requestTitle: 'Demande à', - responseTitle: 'Réponse de', - }, - setBuiltInTools: { - info: 'Infos', - setting: 'Paramètres', - toolDescription: 'Description de l\'outil', - parameters: 'paramètres', - string: 'chaîne', - number: 'nombre', - required: 'Requis', - infoAndSetting: 'Infos & Paramètres', - file: 'lime', - }, - noCustomTool: { - title: 'Pas d\'outils personnalisés !', - content: 'Ajoutez et gérez vos outils personnalisés ici pour construire des applications IA.', - createTool: 'Créer un outil', - }, - noSearchRes: { - title: 'Désolé, aucun résultat !', - content: 'Nous n\'avons trouvé aucun outil correspondant à votre recherche.', - reset: 'Réinitialiser la recherche', - }, - builtInPromptTitle: 'Invite', - toolRemoved: 'Outil supprimé', - notAuthorized: 'Outil non autorisé', - howToGet: 'Comment obtenir', - addToolModal: { - type: 'type', - added: 'supplémentaire', - category: 'catégorie', - custom: { - title: 'Aucun outil personnalisé disponible', - tip: 'Créer un outil personnalisé', - }, - workflow: { - title: 'Aucun outil de workflow disponible', - tip: 'Publier des workflows en tant qu\'outils dans le Studio', - }, - mcp: { - title: 'Aucun outil MCP disponible', - tip: 'Ajouter un serveur MCP', - }, - agent: { - title: 'Aucune stratégie d\'agent disponible', - }, - }, - openInStudio: 'Ouvrir dans Studio', - customToolTip: 'En savoir plus sur les outils personnalisés Dify', - toolNameUsageTip: 'Nom de l’appel de l’outil pour le raisonnement et l’invite de l’agent', - copyToolName: 'Copier le nom', - noTools: 'Aucun outil trouvé', - mcp: { - create: { - cardTitle: 'Ajouter un Serveur MCP (HTTP)', - cardLink: 'En savoir plus sur l\'intégration du serveur MCP', - }, - noConfigured: 'Serveur Non Configuré', - updateTime: 'Mis à jour', - toolsCount: '{count} outils', - noTools: 'Aucun outil disponible', - modal: { - title: 'Ajouter un Serveur MCP (HTTP)', - editTitle: 'Modifier le Serveur MCP (HTTP)', - name: 'Nom & Icône', - namePlaceholder: 'Nommez votre serveur MCP', - serverUrl: 'URL du Serveur', - serverUrlPlaceholder: 'URL de l\'endpoint du serveur', - serverUrlWarning: 'Mettre à jour l\'adresse du serveur peut perturber les applications qui dépendent de ce serveur', - serverIdentifier: 'Identifiant du Serveur', - serverIdentifierTip: 'Identifiant unique pour le serveur MCP au sein de l\'espace de travail. Seulement des lettres minuscules, des chiffres, des traits de soulignement et des tirets. Jusqu\'à 24 caractères.', - serverIdentifierPlaceholder: 'Identifiant unique, par ex. mon-serveur-mcp', - serverIdentifierWarning: 'Le serveur ne sera pas reconnu par les applications existantes après un changement d\'ID', - cancel: 'Annuler', - save: 'Enregistrer', - confirm: 'Ajouter & Authoriser', - sseReadTimeout: 'Délai d\'attente de lecture SSE', - timeout: 'Délai d\'attente', - timeoutPlaceholder: 'trente', - headerValue: 'Valeur d\'en-tête', - headerKey: 'Nom de l\'en-tête', - noHeaders: 'Aucun en-tête personnalisé configuré', - headers: 'En-têtes', - headerKeyPlaceholder: 'par exemple, Autorisation', - headerValuePlaceholder: 'par exemple, Jeton d\'accès123', - headersTip: 'En-têtes HTTP supplémentaires à envoyer avec les requêtes au serveur MCP', - addHeader: 'Ajouter un en-tête', - maskedHeadersTip: 'Les valeurs d\'en-tête sont masquées pour des raisons de sécurité. Les modifications mettront à jour les valeurs réelles.', - clientSecretPlaceholder: 'Secret client', - configurations: 'Configurations', - clientID: 'ID client', - authentication: 'Authentification', - useDynamicClientRegistration: 'Utiliser l\'enregistrement dynamique des clients', - clientSecret: 'Secret client', - redirectUrlWarning: 'Veuillez configurer votre URL de redirection OAuth sur :', - }, - delete: 'Supprimer le Serveur MCP', - deleteConfirmTitle: 'Souhaitez-vous supprimer {mcp}?', - operation: { - edit: 'Modifier', - remove: 'Supprimer', - }, - authorize: 'Autoriser', - authorizing: 'Autorisation en cours...', - authorizingRequired: 'L\'autorisation est requise', - authorizeTip: 'Après autorisation, les outils seront affichés ici.', - update: 'Mettre à jour', - updating: 'Mise à jour en cours', - gettingTools: 'Obtention des Outils...', - updateTools: 'Mise à jour des Outils...', - toolsEmpty: 'Outils non chargés', - getTools: 'Obtenir des outils', - toolUpdateConfirmTitle: 'Mettre à jour la Liste des Outils', - toolUpdateConfirmContent: 'La mise à jour de la liste des outils peut affecter les applications existantes. Souhaitez-vous continuer?', - toolsNum: '{count} outils inclus', - onlyTool: '1 outil inclus', - identifier: 'Identifiant du Serveur (Cliquez pour Copier)', - server: { - title: 'Serveur MCP', - url: 'URL du Serveur', - reGen: 'Voulez-vous régénérer l\'URL du serveur?', - addDescription: 'Ajouter une description', - edit: 'Modifier la description', - modal: { - addTitle: 'Ajouter une description pour activer le serveur MCP', - editTitle: 'Modifier la description', - description: 'Description', - descriptionPlaceholder: 'Expliquez ce que fait cet outil et comment il doit être utilisé par le LLM', - parameters: 'Paramètres', - parametersTip: 'Ajoutez des descriptions pour chaque paramètre afin d\'aider le LLM à comprendre leur objectif et leurs contraintes.', - parametersPlaceholder: 'Objectif et contraintes du paramètre', - confirm: 'Activer le Serveur MCP', - }, - publishTip: 'Application non publiée. Merci de publier l\'application en premier.', - }, - toolItem: { - parameters: 'Paramètres', - noDescription: 'Aucune description', - }, - }, - allTools: 'Tous les outils', -} - -export default translation diff --git a/web/i18n/fr-FR/workflow.json b/web/i18n/fr-FR/workflow.json new file mode 100644 index 0000000000..e477f5ad4b --- /dev/null +++ b/web/i18n/fr-FR/workflow.json @@ -0,0 +1,1294 @@ +{ + "common": { + "undo": "Défaire", + "redo": "Réexécuter", + "editing": "Édition", + "autoSaved": "Sauvegardé automatiquement", + "unpublished": "Non publié", + "published": "Publié", + "publish": "Publier", + "update": "Mettre à jour", + "run": "Exécuter test", + "running": "En cours d'exécution", + "inRunMode": "En mode exécution", + "inPreview": "En aperçu", + "inPreviewMode": "En mode aperçu", + "preview": "Aperçu", + "viewRunHistory": "Voir l'historique des exécutions", + "runHistory": "Historique des exécutions", + "goBackToEdit": "Retour à l'éditeur", + "conversationLog": "Journal de conversation", + "debugAndPreview": "Aperçu", + "restart": "Redémarrer", + "currentDraft": "Brouillon actuel", + "currentDraftUnpublished": "Brouillon actuel non publié", + "latestPublished": "Dernière publication", + "publishedAt": "Publié le", + "restore": "Restaurer", + "runApp": "Exécuter l'application", + "batchRunApp": "Exécuter l'application en lot", + "accessAPIReference": "Accéder à la référence API", + "embedIntoSite": "Intégrer au site", + "addTitle": "Ajouter un titre...", + "addDescription": "Ajouter une description...", + "noVar": "Pas de variable", + "searchVar": "Rechercher une variable", + "variableNamePlaceholder": "Nom de la variable", + "setVarValuePlaceholder": "Définir la valeur de la variable", + "needConnectTip": "Cette étape n'est connectée à rien", + "maxTreeDepth": "Limite maximale de {{depth}} nœuds par branche", + "workflowProcess": "Processus de flux de travail", + "notRunning": "Pas encore en cours d'exécution", + "previewPlaceholder": "Entrez le contenu dans la boîte ci-dessous pour commencer à déboguer le Chatbot", + "effectVarConfirm": { + "title": "Supprimer la variable", + "content": "La variable est utilisée dans d'autres nœuds. Voulez-vous toujours la supprimer?" + }, + "insertVarTip": "Appuyez sur la touche '/' pour insérer rapidement", + "processData": "Traiter les données", + "input": "Entrée", + "output": "Sortie", + "jinjaEditorPlaceholder": "Tapez '/' ou '{' pour insérer une variable", + "viewOnly": "Affichage seulement", + "showRunHistory": "Afficher l'historique des exécutions", + "enableJinja": "Activer le support des templates Jinja", + "learnMore": "En savoir plus", + "copy": "Copier", + "duplicate": "Dupliquer", + "pasteHere": "Coller ici", + "pointerMode": "Mode pointeur", + "handMode": "Mode main", + "model": "Modèle", + "workflowAsTool": "Flux de travail en tant qu'outil", + "configureRequired": "Configuration requise", + "configure": "Configurer", + "manageInTools": "Gérer dans les outils", + "workflowAsToolTip": "Reconfiguration de l'outil requise après la mise à jour du flux de travail.", + "viewDetailInTracingPanel": "Voir les détails", + "syncingData": "Synchroniser des données en quelques secondes.", + "importDSL": "Importe DSL", + "importDSLTip": "Le projet actuel sera écrasé. Exporter le flux de travail en tant que sauvegarde avant d'importer.", + "backupCurrentDraft": "Sauvegarder le projet actuel", + "chooseDSL": "Choisir le fichier DSL(yml)", + "overwriteAndImport": "Écraser et importer", + "importFailure": "Echec de l'importation", + "importSuccess": "Import avec succès", + "parallelTip": { + "click": { + "title": "Cliquer", + "desc": "à ajouter" + }, + "drag": { + "title": "Traîner", + "desc": "pour se connecter" + }, + "limit": "Le parallélisme est limité aux branches {{num}}.", + "depthLimit": "Limite de couches d’imbrication parallèle de {{num}} couches" + }, + "disconnect": "Déconnecter", + "jumpToNode": "Aller à ce nœud", + "addParallelNode": "Ajouter un nœud parallèle", + "parallel": "PARALLÈLE", + "branch": "BRANCHE", + "ImageUploadLegacyTip": "Vous pouvez désormais créer des variables de type de fichier dans le formulaire de démarrage. À l’avenir, nous ne prendrons plus en charge la fonctionnalité de téléchargement d’images.", + "fileUploadTip": "Les fonctionnalités de téléchargement d’images ont été mises à niveau vers le téléchargement de fichiers.", + "importWarning": "Prudence", + "importWarningDetails": "La différence de version DSL peut affecter certaines fonctionnalités", + "openInExplore": "Ouvrir dans Explorer", + "onFailure": "Sur l’échec", + "addFailureBranch": "Ajouter une branche d’échec", + "loadMore": "Charger plus de flux de travail", + "noHistory": "Pas d’histoire", + "exportPNG": "Exporter en PNG", + "exitVersions": "Versions de sortie", + "exportSVG": "Exporter en SVG", + "publishUpdate": "Publier une mise à jour", + "versionHistory": "Historique des versions", + "exportImage": "Exporter l'image", + "exportJPEG": "Exporter en JPEG", + "needOutputNode": "Le nœud de sortie doit être ajouté", + "needAnswerNode": "Le nœud de réponse doit être ajouté.", + "addBlock": "Ajouter un nœud", + "tagBound": "Nombre d'applications utilisant cette étiquette", + "currentView": "Vue actuelle", + "currentWorkflow": "Flux de travail actuel", + "moreActions": "Plus d’actions", + "listening": "Écouter", + "chooseStartNodeToRun": "Choisissez le nœud de départ pour lancer", + "runAllTriggers": "Exécuter tous les déclencheurs", + "features": "Fonctionnalités", + "featuresDescription": "Améliorer l'expérience utilisateur de l'application web", + "featuresDocLink": "En savoir plus", + "needAdd": "Le nœud {{node}} doit être ajouté", + "needStartNode": "Au moins un nœud de départ doit être ajouté", + "workflowAsToolDisabledHint": "Publiez le dernier flux de travail et assurez-vous qu'un nœud d'entrée utilisateur est connecté avant de le configurer comme outil." + }, + "env": { + "envPanelTitle": "Variables d'Environnement", + "envDescription": "Les variables d'environnement peuvent être utilisées pour stocker des informations privées et des informations d'identification. Elles sont en lecture seule et peuvent être séparées du fichier DSL lors de l'exportation.", + "envPanelButton": "Ajouter Variable", + "modal": { + "title": "Ajouter Variables d'Environnement", + "editTitle": "Editer titre", + "type": "Type", + "name": "Nom", + "namePlaceholder": "Nom de l'env", + "value": "valeur", + "valuePlaceholder": "Valeur de l'env", + "secretTip": "Utilisé pour définir des informations ou des données sensibles, avec des paramètres DSL configurés pour la prévention des fuites.", + "description": "Description", + "descriptionPlaceholder": "Décrivez la variable" + }, + "export": { + "title": "Exporter des variables d'environnement secrètes?", + "checkbox": "Exporter les valeurs secrètes", + "ignore": "Exporter DSL", + "export": "Exporter les DSL avec des valeurs secrètes" + } + }, + "globalVar": { + "title": "Variables système", + "description": "Les variables système sont des variables globales que tout nœud peut référencer sans câblage lorsque le type correspond, comme l'ID utilisateur final et l'ID du workflow.", + "fieldsDescription": { + "conversationId": "ID de conversation", + "dialogCount": "Nombre de conversations", + "userId": "ID utilisateur", + "triggerTimestamp": "Horodatage du lancement de l'application", + "appId": "ID de l'application", + "workflowId": "ID du workflow", + "workflowRunId": "ID d'exécution du workflow" + } + }, + "chatVariable": { + "panelTitle": "Variables de Conversation", + "panelDescription": "Les Variables de Conversation sont utilisées pour stocker des informations interactives dont le LLM a besoin de se souvenir, y compris l'historique des conversations, les fichiers téléchargés et les préférences de l'utilisateur. Elles sont en lecture-écriture.", + "docLink": "Consultez notre documentation pour en savoir plus.", + "button": "Ajouter une Variable", + "modal": { + "title": "Ajouter une Variable de Conversation", + "editTitle": "Modifier une Variable de Conversation", + "name": "Nom", + "namePlaceholder": "Nom de la variable", + "type": "Type", + "value": "Valeur par Défaut", + "valuePlaceholder": "Valeur par défaut, laisser vide pour ne pas définir", + "description": "Description", + "descriptionPlaceholder": "Décrivez la variable", + "editInJSON": "Éditer en JSON", + "oneByOne": "Ajouter un par un", + "editInForm": "Éditer dans le Formulaire", + "arrayValue": "Valeur", + "addArrayValue": "Ajouter une Valeur", + "objectKey": "Clé", + "objectType": "Type", + "objectValue": "Valeur par Défaut" + }, + "storedContent": "Contenu stocké", + "updatedAt": "Mis à jour le " + }, + "changeHistory": { + "title": "Historique des modifications", + "placeholder": "Vous n'avez encore rien modifié", + "clearHistory": "Effacer l'historique", + "hint": "Conseil", + "hintText": "Vos actions d'édition sont suivies dans un historique des modifications, qui est stocké sur votre appareil pour la durée de cette session. Cet historique sera effacé lorsque vous quitterez l'éditeur.", + "stepBackward_one": "{{count}} pas en arrière", + "stepBackward_other": "{{count}} pas en arrière", + "stepForward_one": "{{count}} pas en avant", + "stepForward_other": "{{count}} pas en avant", + "sessionStart": "Début de la session", + "currentState": "État actuel", + "noteAdd": "Note ajoutée", + "noteChange": "Note modifiée", + "noteDelete": "Note supprimée", + "nodeConnect": "Node connecté", + "nodeChange": "Nœud changé", + "nodeResize": "Nœud redimensionné", + "edgeDelete": "Nœud déconnecté", + "nodeDelete": "Nœud supprimé", + "nodePaste": "Node collé", + "nodeDragStop": "Nœud déplacé", + "nodeTitleChange": "Titre du nœud modifié", + "nodeAdd": "Nœud ajouté", + "nodeDescriptionChange": "La description du nœud a changé" + }, + "errorMsg": { + "fieldRequired": "{{field}} est requis", + "authRequired": "Autorisation requise", + "invalidJson": "{{field}} est un JSON invalide", + "fields": { + "variable": "Nom de la variable", + "variableValue": "Valeur de la variable", + "code": "Code", + "model": "Modèle", + "rerankModel": "Modèle de rerank", + "visionVariable": "Vision Variable" + }, + "invalidVariable": "Variable invalide", + "rerankModelRequired": "Avant d’activer le modèle de reclassement, veuillez confirmer que le modèle a été correctement configuré dans les paramètres.", + "noValidTool": "{{field}} aucun outil valide sélectionné", + "toolParameterRequired": "{{field}} : le paramètre [{{param}}] est obligatoire", + "startNodeRequired": "Veuillez d'abord ajouter un nœud de départ avant {{operation}}" + }, + "singleRun": { + "testRun": "Exécution de test", + "startRun": "Démarrer l'exécution", + "running": "En cours d'exécution", + "testRunIteration": "Itération de l'exécution de test", + "back": "Retour", + "iteration": "Itération", + "loop": "Boucle", + "reRun": "Relancer", + "preparingDataSource": "Préparation de la source de données" + }, + "tabs": { + "tools": "Outils", + "allTool": "Tous", + "customTool": "Personnalisé", + "workflowTool": "Flux de travail", + "question-understand": "Compréhension des questions", + "logic": "Logique", + "transform": "Transformer", + "utilities": "Utilitaires", + "noResult": "Aucun résultat trouvé", + "searchTool": "Outil de recherche", + "plugin": "Plugin", + "agent": "Stratégie d’agent", + "blocks": "Nœuds", + "searchBlock": "Nœud de recherche", + "addAll": "Ajouter tout", + "allAdded": "Tout ajouté", + "sources": "Sources", + "searchDataSource": "Source de données de recherche", + "start": "Démarrer", + "searchTrigger": "Déclencheurs de recherche...", + "allTriggers": "Tous les déclencheurs", + "noPluginsFound": "Aucun plugin n'a été trouvé", + "requestToCommunity": "Demandes à la communauté", + "featuredTools": "En vedette", + "showMoreFeatured": "Afficher plus", + "showLessFeatured": "Afficher moins", + "installed": "Installé", + "pluginByAuthor": "Par {{author}}", + "usePlugin": "Sélectionner l'outil", + "hideActions": "Cacher les outils", + "noFeaturedPlugins": "Découvrez plus d'outils dans le Marketplace", + "noFeaturedTriggers": "Découvrez plus de déclencheurs dans le Marketplace", + "startDisabledTip": "Le nœud de déclenchement et le nœud d'entrée utilisateur sont mutuellement exclusifs." + }, + "blocks": { + "start": "Début", + "end": "Sortie", + "answer": "Réponse", + "llm": "LLM", + "knowledge-retrieval": "Récupération de connaissances", + "question-classifier": "Classificateur de questions", + "if-else": "SI/SINON", + "code": "Code", + "template-transform": "Modèle", + "http-request": "Requête HTTP", + "variable-assigner": "Assigneur de variables", + "variable-aggregator": "Agrégateur de variables", + "assigner": "Assignateur de Variables", + "iteration-start": "Début d'itération", + "iteration": "Itération", + "parameter-extractor": "Extracteur de paramètres", + "list-operator": "Opérateur de liste", + "document-extractor": "Extracteur de documents", + "agent": "Agent", + "loop-end": "Sortir de la boucle", + "loop": "Boucle", + "loop-start": "Début de boucle", + "knowledge-index": "Base de connaissances", + "datasource": "Source des données", + "originalStartNode": "nœud de départ original", + "trigger-schedule": "Déclencheur de programmation", + "trigger-webhook": "Déclencheur Webhook", + "trigger-plugin": "Déclencheur de plugin" + }, + "blocksAbout": { + "start": "Définir les paramètres initiaux pour lancer un flux de travail", + "end": "Définir la sortie et le type de résultat d'un flux de travail", + "answer": "Définir le contenu de la réponse d'une conversation", + "llm": "Inviter de grands modèles de langage pour répondre aux questions ou traiter le langage naturel", + "knowledge-retrieval": "Permet de consulter le contenu textuel lié aux questions des utilisateurs à partir de la base de connaissances", + "question-classifier": "Définir les conditions de classification des questions des utilisateurs, LLM peut définir comment la conversation progresse en fonction de la description de la classification", + "if-else": "Permet de diviser le flux de travail en deux branches basées sur des conditions if/else", + "code": "Exécuter un morceau de code Python ou NodeJS pour implémenter une logique personnalisée", + "template-transform": "Convertir les données en chaîne en utilisant la syntaxe du template Jinja", + "http-request": "Permettre l'envoi de requêtes serveur via le protocole HTTP", + "variable-assigner": "Agrégation de variables de plusieurs branches en une seule variable pour la configuration unifiée des nœuds en aval.", + "assigner": "Le nœud d'assignation de variables est utilisé pour attribuer des valeurs aux variables modifiables (comme les variables de conversation).", + "variable-aggregator": "Agrégation de variables de plusieurs branches en une seule variable pour la configuration unifiée des nœuds en aval.", + "iteration": "Effectuer plusieurs étapes sur un objet de liste jusqu'à ce que tous les résultats soient produits.", + "parameter-extractor": "Utiliser LLM pour extraire des paramètres structurés du langage naturel pour les invocations d'outils ou les requêtes HTTP.", + "list-operator": "Utilisé pour filtrer ou trier le contenu d’un tableau.", + "document-extractor": "Utilisé pour analyser les documents téléchargés en contenu texte facilement compréhensible par LLM.", + "agent": "Appel de grands modèles de langage pour répondre à des questions ou traiter le langage naturel", + "loop": "Exécutez une boucle de logique jusqu'à ce que la condition de terminaison soit remplie ou que le nombre maximum de boucles soit atteint.", + "loop-end": "Équivalent à \"break\". Ce nœud n'a pas d'éléments de configuration. Lorsque le corps de la boucle atteint ce nœud, la boucle se termine.", + "datasource": "Source de données À propos", + "knowledge-index": "Base de connaissances À propos", + "trigger-schedule": "Déclencheur de flux de travail basé sur le temps qui démarre les flux de travail selon un calendrier", + "trigger-webhook": "Le déclencheur Webhook reçoit des pushs HTTP provenant de systèmes tiers pour déclencher automatiquement des flux de travail.", + "trigger-plugin": "Déclencheur d’intégration tierce qui démarre des flux de travail à partir d’événements d’une plateforme externe" + }, + "operator": { + "zoomIn": "Zoomer", + "zoomOut": "Dézoomer", + "zoomTo50": "Zoomer à 50%", + "zoomTo100": "Zoomer à 100%", + "zoomToFit": "Zoomer pour ajuster", + "alignBottom": "Bas", + "alignLeft": "Gauche", + "alignCenter": "Centre", + "alignTop": "Haut", + "alignNodes": "Aligner les nœuds", + "distributeHorizontal": "Répartir horizontalement", + "alignMiddle": "Milieu", + "horizontal": "Horizontal", + "selectionAlignment": "Alignement de la sélection", + "alignRight": "Droite", + "vertical": "Vertical", + "distributeVertical": "Répartir verticalement" + }, + "panel": { + "userInputField": "Champ de saisie de l'utilisateur", + "helpLink": "Aide", + "about": "À propos", + "createdBy": "Créé par", + "nextStep": "Étape suivante", + "runThisStep": "Exécuter cette étape", + "checklist": "Liste de contrôle", + "checklistTip": "Assurez-vous que tous les problèmes sont résolus avant de publier", + "checklistResolved": "Tous les problèmes ont été résolus", + "change": "Modifier", + "optional": "(facultatif)", + "organizeBlocks": "Organiser les nœuds", + "addNextStep": "Ajoutez la prochaine étape dans ce flux de travail", + "selectNextStep": "Sélectionner la prochaine étape", + "changeBlock": "Changer de nœud", + "maximize": "Maximiser le Canvas", + "minimize": "Sortir du mode plein écran", + "scrollToSelectedNode": "Faites défiler jusqu’au nœud sélectionné", + "optional_and_hidden": "(optionnel et caché)", + "goTo": "Aller à", + "startNode": "Nœud de départ", + "openWorkflow": "Ouvrir le flux de travail" + }, + "nodes": { + "common": { + "outputVars": "Variables de sortie", + "insertVarTip": "Insérer une variable", + "memory": { + "memory": "Mémoire", + "memoryTip": "Paramètres de mémoire de conversation", + "windowSize": "Taille de la fenêtre", + "conversationRoleName": "Nom du rôle de conversation", + "user": "Préfixe utilisateur", + "assistant": "Préfixe assistant" + }, + "memories": { + "title": "Mémoires", + "tip": "Mémoire de conversation", + "builtIn": "Intégré" + }, + "errorHandle": { + "none": { + "title": "Aucun", + "desc": "Le nœud cessera de s’exécuter si une exception se produit et n’est pas gérée" + }, + "defaultValue": { + "title": "Valeur par défaut", + "desc": "Lorsqu’une erreur se produit, spécifiez un contenu de sortie statique.", + "tip": "En cas d’erreur, le retour est inférieur à la valeur.", + "inLog": "Exception de nœud, sortie en fonction des valeurs par défaut.", + "output": "Valeur par défaut de sortie" + }, + "failBranch": { + "desc": "Lorsqu’une erreur se produit, il exécute la branche d’exception", + "customize": "Accédez au canevas pour personnaliser la logique de branche d’échec.", + "customizeTip": "Lorsque la branche fail est activée, les exceptions levées par les nœuds ne mettent pas fin au processus. Au lieu de cela, il exécutera automatiquement la branche d’échec prédéfinie, ce qui vous permettra de fournir de manière flexible des messages d’erreur, des rapports, des correctifs ou des actions d’ignorance.", + "inLog": "Exception de nœud, exécutera automatiquement la branche d’échec. La sortie du nœud renverra un type d’erreur et un message d’erreur et les transmettra en aval.", + "title": "Branche d’échec" + }, + "partialSucceeded": { + "tip": "Il y a des nœuds {{num}} dans le processus qui fonctionnent anormalement, veuillez aller dans le traçage pour vérifier les journaux." + }, + "title": "Gestion des erreurs", + "tip": "Stratégie de gestion des exceptions, déclenchée lorsqu’un nœud rencontre une exception." + }, + "retry": { + "retry": "Réessayer", + "retryOnFailure": "Réessai en cas d’échec", + "maxRetries": "Nombre maximal de tentatives", + "retryInterval": "intervalle de nouvelle tentative", + "retryTimes": "Réessayez {{times}} fois en cas d’échec", + "retrying": "Réessayer...", + "retrySuccessful": "Réessai réussi", + "retryFailed": "Échec de la nouvelle tentative", + "retryFailedTimes": "{{times}} les tentatives ont échoué", + "times": "fois", + "ms": "ms", + "retries": "{{num}} Tentatives" + }, + "typeSwitch": { + "input": "Valeur d'entrée", + "variable": "Utilisez une variable" + }, + "inputVars": "Variables d’entrée", + "pluginNotInstalled": "Le plugin n'est pas installé" + }, + "start": { + "required": "requis", + "inputField": "Champ de saisie", + "builtInVar": "Variables intégrées", + "outputVars": { + "query": "Saisie utilisateur", + "memories": { + "des": "Historique de conversation", + "type": "type de message", + "content": "contenu du message" + }, + "files": "Liste de fichiers" + }, + "noVarTip": "Définir les entrées qui peuvent être utilisées dans le flux de travail" + }, + "end": { + "outputs": "Sorties", + "output": { + "type": "type de sortie", + "variable": "variable de sortie" + }, + "type": { + "none": "Aucun", + "plain-text": "Texte brut", + "structured": "Structuré" + } + }, + "answer": { + "answer": "Réponse", + "outputVars": "Variables de sortie" + }, + "llm": { + "model": "modèle", + "variables": "variables", + "context": "contexte", + "contextTooltip": "Vous pouvez importer des connaissances en tant que contexte", + "notSetContextInPromptTip": "Pour activer la fonctionnalité de contexte, remplissez la variable de contexte dans le PROMPT.", + "prompt": "invite", + "roleDescription": { + "system": "Donner des instructions de haut niveau pour la conversation", + "user": "Fournir des instructions, des questions ou toute entrée textuelle au modèle", + "assistant": "Les réponses du modèle basées sur les messages des utilisateurs" + }, + "addMessage": "Ajouter un message", + "vision": "vision", + "files": "Fichiers", + "resolution": { + "name": "Résolution", + "high": "Haute", + "low": "Basse" + }, + "outputVars": { + "output": "Contenu généré", + "reasoning_content": "Contenu de raisonnement", + "usage": "Informations sur l'utilisation du modèle" + }, + "singleRun": { + "variable": "Variable" + }, + "sysQueryInUser": "sys.query dans le message utilisateur est requis", + "jsonSchema": { + "warningTips": { + "saveSchema": "Veuillez terminer la modification du champ actuel avant d'enregistrer le schéma." + }, + "apply": "Appliquer", + "addField": "Ajouter un champ", + "generationTip": "Vous pouvez utiliser un langage naturel pour créer rapidement un schéma JSON.", + "promptPlaceholder": "Décrivez votre schéma JSON...", + "descriptionPlaceholder": "Ajouter une description", + "instruction": "Instruction", + "resetDefaults": "Réinitialiser", + "generatedResult": "Résultat généré", + "fieldNamePlaceholder": "Nom du champ", + "addChildField": "Ajouter un champ enfant", + "back": "Retour", + "showAdvancedOptions": "Afficher les options avancées", + "title": "Schéma de sortie structuré", + "generating": "Génération de schéma JSON...", + "stringValidations": "Validations de chaîne", + "import": "Importer depuis JSON", + "promptTooltip": "Convertissez la description textuelle en une structure de schéma JSON standardisé.", + "generate": "Générer", + "doc": "En savoir plus sur la sortie structurée", + "regenerate": "Régénérer", + "required": "nécessaire", + "generateJsonSchema": "Générer un schéma JSON", + "resultTip": "Voici le résultat généré. Si vous n'êtes pas satisfait, vous pouvez revenir en arrière et modifier votre demande." + }, + "reasoningFormat": { + "title": "Activer la séparation des balises de raisonnement", + "tagged": "Gardez les étiquettes de pensée", + "separated": "Séparer les balises de réflexion", + "tooltip": "Extraire le contenu des balises think et le stocker dans le champ reasoning_content." + } + }, + "knowledgeRetrieval": { + "queryVariable": "Variable de requête", + "knowledge": "Connaissances", + "outputVars": { + "output": "Données segmentées récupérées", + "content": "Contenu segmenté", + "title": "Titre segmenté", + "icon": "Icône segmentée", + "url": "URL segmentée", + "metadata": "Autres métadonnées", + "files": "Fichiers récupérés" + }, + "metadata": { + "options": { + "disabled": { + "subTitle": "Ne pas activer le filtrage des métadonnées", + "title": "Handicapé" + }, + "automatic": { + "subTitle": "Générer automatiquement des conditions de filtrage des métadonnées en fonction de la requête de l'utilisateur", + "title": "Automatique", + "desc": "Générer automatiquement des conditions de filtrage de métadonnées en fonction de la variable de requête." + }, + "manual": { + "subTitle": "Ajouter manuellement des conditions de filtrage des métadonnées", + "title": "Manuel" + } + }, + "panel": { + "placeholder": "Entrez la valeur", + "add": "Ajouter une condition", + "search": "Rechercher des métadonnées", + "conditions": "Conditions", + "datePlaceholder": "Choisissez un moment...", + "select": "Sélectionner une variable...", + "title": "Conditions de filtrage des métadonnées" + }, + "title": "Filtrage des métadonnées", + "tip": "Le filtrage des métadonnées est le processus d'utilisation des attributs de métadonnées (tels que les étiquettes, les catégories ou les autorisations d'accès) pour affiner et contrôler la récupération d'informations pertinentes au sein d'un système." + }, + "queryText": "Texte de la requête", + "queryAttachment": "Images de requête" + }, + "http": { + "inputVars": "Variables de saisie", + "api": "API", + "apiPlaceholder": "Entrez l'URL, tapez ‘/’ pour insérer une variable", + "notStartWithHttp": "L'API doit commencer par http:// ou https://", + "key": "Clé", + "value": "Valeur", + "bulkEdit": "Édition en masse", + "keyValueEdit": "Édition clé-valeur", + "headers": "En-têtes", + "params": "Paramètres", + "body": "Corps", + "outputVars": { + "body": "Contenu de la réponse", + "statusCode": "Code de statut de la réponse", + "headers": "Liste des en-têtes de réponse JSON", + "files": "Liste des fichiers" + }, + "authorization": { + "authorization": "Autorisation", + "authorizationType": "Type d'autorisation", + "no-auth": "Aucune", + "api-key": "Clé API", + "auth-type": "Type d'authentification", + "basic": "De base", + "bearer": "Bearer", + "custom": "Personnalisé", + "api-key-title": "Clé API", + "header": "En-tête" + }, + "insertVarPlaceholder": "tapez '/' pour insérer une variable", + "timeout": { + "title": "Délai d'expiration", + "connectLabel": "Délai de connexion", + "connectPlaceholder": "Entrez le délai de connexion en secondes", + "readLabel": "Délai de lecture", + "readPlaceholder": "Entrez le délai de lecture en secondes", + "writeLabel": "Délai d'écriture", + "writePlaceholder": "Entrez le délai d'écriture en secondes" + }, + "binaryFileVariable": "Variable de fichier binaire", + "type": "Type", + "extractListPlaceholder": "Entrez l’index de l’élément de liste, tapez '/' insérer la variable", + "curl": { + "placeholder": "Collez la chaîne cURL ici", + "title": "Importer à partir de cURL" + }, + "verifySSL": { + "title": "Vérifier le certificat SSL", + "warningTooltip": "Désactiver la vérification SSL n'est pas recommandé pour les environnements de production. Cela ne devrait être utilisé que dans le développement ou les tests, car cela rend la connexion vulnérable aux menaces de sécurité telles que les attaques de type 'man-in-the-middle'." + } + }, + "code": { + "inputVars": "Variables de saisie", + "outputVars": "Variables de sortie", + "advancedDependencies": "Dépendances avancées", + "advancedDependenciesTip": "Ajoutez quelques dépendances préchargées qui prennent plus de temps à consommer ou ne sont pas par défaut ici", + "searchDependencies": "Rechercher des dépendances", + "syncFunctionSignature": "Synchroniser la signature de fonction avec le code" + }, + "templateTransform": { + "inputVars": "Variables de saisie", + "code": "Code", + "codeSupportTip": "Prend en charge uniquement Jinja2", + "outputVars": { + "output": "Contenu transformé" + } + }, + "ifElse": { + "if": "Si", + "else": "Sinon", + "elseDescription": "Utilisé pour définir la logique à exécuter lorsque la condition if n'est pas remplie.", + "and": "et", + "or": "ou", + "operator": "Opérateur", + "notSetVariable": "Veuillez d'abord définir la variable", + "comparisonOperator": { + "contains": "contient", + "not contains": "ne contient pas", + "start with": "commence par", + "end with": "se termine par", + "is": "est", + "is not": "n'est pas", + "empty": "est vide", + "not empty": "n'est pas vide", + "null": "est nul", + "not null": "n'est pas nul", + "in": "dans", + "not in": "pas dans", + "exists": "Existe", + "all of": "l’ensemble des", + "not exists": "n’existe pas", + "before": "avant", + "after": "après" + }, + "enterValue": "Entrez la valeur", + "addCondition": "Ajouter une condition", + "conditionNotSetup": "Condition NON configurée", + "selectVariable": "Sélectionner une variable...", + "optionName": { + "video": "Vidéo", + "image": "Image", + "audio": "Audio", + "doc": "Médecin", + "localUpload": "Téléchargement local", + "url": "URL" + }, + "select": "Choisir", + "addSubVariable": "Sous-variable" + }, + "variableAssigner": { + "title": "Attribuer des variables", + "outputType": "Type de sortie", + "varNotSet": "Variable non définie", + "noVarTip": "Ajoutez les variables à attribuer", + "type": { + "string": "Chaîne", + "number": "Nombre", + "object": "Objet", + "array": "Tableau" + }, + "aggregationGroup": "Groupe d'agrégation", + "aggregationGroupTip": "L'activation de cette fonctionnalité permet à l'agrégateur de variables d'agréger plusieurs ensembles de variables.", + "addGroup": "Ajouter un groupe", + "outputVars": { + "varDescribe": "Sortie {{groupName}}" + }, + "setAssignVariable": "Définir la variable à attribuer" + }, + "assigner": { + "assignedVariable": "Variable Assignée", + "writeMode": "Mode d'Écriture", + "writeModeTip": "Lorsque la VARIABLE ASSIGNÉE est un tableau, le mode d'ajout ajoute à la fin.", + "over-write": "Écraser", + "append": "Ajouter", + "plus": "Plus", + "clear": "Effacer", + "setVariable": "Définir Variable", + "variable": "Variable", + "operations": { + "clear": "Clair", + "*=": "*=", + "-=": "-=", + "extend": "Étendre", + "+=": "+=", + "over-write": "Écraser", + "set": "Poser", + "append": "Ajouter", + "title": "Opération", + "/=": "/=", + "overwrite": "Écraser", + "remove-last": "Supprimer le dernier", + "remove-first": "Retirer le premier" + }, + "assignedVarsDescription": "Les variables affectées doivent être accessibles en écriture, telles que des variables de conversation.", + "noVarTip": "Cliquez sur le bouton « + » pour ajouter des variables", + "variables": "Variables", + "setParameter": "Définir le paramètre...", + "noAssignedVars": "Aucune variable affectée disponible", + "varNotSet": "Variable NON définie", + "selectAssignedVariable": "Sélectionner la variable affectée..." + }, + "tool": { + "inputVars": "Variables de saisie", + "outputVars": { + "text": "contenu généré par l'outil", + "files": { + "title": "fichiers générés par l'outil", + "type": "Type de support. Actuellement ne prend en charge que l'image", + "transfer_method": "Méthode de transfert. La valeur est remote_url ou local_file", + "url": "URL de l'image", + "upload_file_id": "ID du fichier téléchargé" + }, + "json": "JSON généré par un outil" + }, + "authorize": "Autoriser", + "insertPlaceholder2": "insérer une variable", + "settings": "Paramètres", + "insertPlaceholder1": "Tapez ou appuyez" + }, + "questionClassifiers": { + "model": "modèle", + "inputVars": "Variables de saisie", + "outputVars": { + "className": "Nom de la classe", + "usage": "Informations sur l'utilisation du modèle" + }, + "class": "Classe", + "classNamePlaceholder": "Écrivez le nom de votre classe", + "advancedSetting": "Paramètre avancé", + "topicName": "Nom du sujet", + "topicPlaceholder": "Écrivez le nom de votre sujet", + "addClass": "Ajouter une classe", + "instruction": "Instruction", + "instructionTip": "Entrez des instructions supplémentaires pour aider le classificateur de questions à mieux comprendre comment catégoriser les questions.", + "instructionPlaceholder": "Écrivez votre instruction" + }, + "parameterExtractor": { + "inputVar": "Variable de saisie", + "outputVars": { + "isSuccess": "Est réussi. En cas de succès, la valeur est 1, en cas d'échec, la valeur est 0.", + "errorReason": "Raison de l'erreur", + "usage": "Informations sur l'utilisation du modèle" + }, + "extractParameters": "Extraire des paramètres", + "importFromTool": "Importer des outils", + "addExtractParameter": "Ajouter un paramètre d'extraction", + "addExtractParameterContent": { + "name": "Nom", + "namePlaceholder": "Nom du paramètre d'extraction", + "type": "Type", + "typePlaceholder": "Type de paramètre d'extraction", + "description": "Description", + "descriptionPlaceholder": "Description du paramètre d'extraction", + "required": "Requis", + "requiredContent": "Requis est utilisé uniquement comme référence pour l'inférence du modèle, et non pour la validation obligatoire de la sortiedu paramètre." + }, + "extractParametersNotSet": "Paramètres d'extraction non configurés", + "instruction": "Instruction", + "instructionTip": "Entrez des instructions supplémentaires pour aider l'extracteur de paramètres à comprendre comment extraire les paramètres.", + "advancedSetting": "Paramètre avancé", + "reasoningMode": "Mode de raisonnement", + "reasoningModeTip": "Vous pouvez choisir le mode de raisonnement approprié en fonction de la capacité du modèle à répondre aux instructions pour les appels de fonction ou les invites." + }, + "iteration": { + "deleteTitle": "Supprimer le nœud d'itération?", + "deleteDesc": "La suppression du nœud d'itération supprimera tous les nœuds enfants", + "input": "Entrée", + "output": "Variables de sortie", + "iteration_one": "{{count}} Itération", + "iteration_other": "{{count}} Itérations", + "currentIteration": "Itération actuelle", + "ErrorMethod": { + "operationTerminated": "Terminé", + "removeAbnormalOutput": "remove-abnormal-output", + "continueOnError": "continuer sur l’erreur" + }, + "comma": ",", + "error_one": "{{count}} Erreur", + "error_other": "{{count}} Erreurs", + "parallelModeEnableDesc": "En mode parallèle, les tâches au sein des itérations prennent en charge l’exécution parallèle. Vous pouvez le configurer dans le panneau des propriétés à droite.", + "parallelModeUpper": "MODE PARALLÈLE", + "parallelPanelDesc": "En mode parallèle, les tâches de l’itération prennent en charge l’exécution parallèle.", + "MaxParallelismDesc": "Le parallélisme maximal est utilisé pour contrôler le nombre de tâches exécutées simultanément en une seule itération.", + "errorResponseMethod": "Méthode de réponse aux erreurs", + "MaxParallelismTitle": "Parallélisme maximal", + "answerNodeWarningDesc": "Avertissement en mode parallèle : les nœuds de réponse, les affectations de variables de conversation et les opérations de lecture/écriture persistantes au sein des itérations peuvent provoquer des exceptions.", + "parallelModeEnableTitle": "Mode parallèle activé", + "parallelMode": "Mode parallèle", + "flattenOutput": "Aplatir la sortie", + "flattenOutputDesc": "Lorsqu'il est activé, si toutes les sorties d'itération sont des tableaux, elles seront aplaties en un seul tableau. Lorsqu'il est désactivé, les sorties conserveront une structure de tableau imbriqué." + }, + "note": { + "addNote": "Ajouter note", + "editor": { + "placeholder": "Redigez votre note...", + "small": "Petit", + "medium": "Moyen", + "large": "Grand", + "bold": "Gras", + "italic": "Italique", + "strikethrough": "Barré", + "link": "Lien", + "openLink": "Ouvrir", + "unlink": "Annuler le lien", + "enterUrl": "Entrer l'URL...", + "invalidUrl": "URL invalide", + "bulletList": "Liste à puces", + "showAuthor": "Afficher l'auteur" + } + }, + "docExtractor": { + "outputVars": { + "text": "Texte extrait" + }, + "learnMore": "Pour en savoir plus", + "inputVar": "Variable d’entrée", + "supportFileTypes": "Types de fichiers de support : {{types}}." + }, + "listFilter": { + "outputVars": { + "result": "Filtrer le résultat", + "last_record": "Dernier enregistrement", + "first_record": "Premier enregistrement" + }, + "filterCondition": "État du filtre", + "asc": "L’ASC", + "inputVar": "Variable d’entrée", + "filterConditionComparisonValue": "Valeur de la condition de filtre", + "desc": "DESC", + "filterConditionComparisonOperator": "Opérateur de comparaison de l’état des filtres", + "selectVariableKeyPlaceholder": "Sélectionner la clé de sous-variable", + "limit": "Haut N", + "orderBy": "Trier par", + "filterConditionKey": "Clé de condition de filtre", + "extractsCondition": "Extraire l’élément N" + }, + "agent": { + "strategy": { + "configureTip": "Veuillez configurer la stratégie agentique.", + "tooltip": "Différentes stratégies agentiques déterminent la façon dont le système planifie et exécute les appels d’outils en plusieurs étapes", + "shortLabel": "Stratégie", + "selectTip": "Sélectionner la stratégie agentique", + "configureTipDesc": "Après avoir configuré la stratégie agentique, ce nœud chargera automatiquement les configurations restantes. La stratégie affectera le mécanisme du raisonnement à l’outil en plusieurs étapes.", + "searchPlaceholder": "Stratégie de recherche agentique", + "label": "Stratégie agentique" + }, + "pluginInstaller": { + "installing": "Installation", + "install": "Installer" + }, + "modelNotInMarketplace": { + "manageInPlugins": "Gérer dans les plugins", + "desc": "Ce modèle est installé à partir d’un référentiel local ou GitHub. Veuillez utiliser après l’installation.", + "title": "Modèle non installé" + }, + "modelNotSupport": { + "title": "Modèle non pris en charge", + "desc": "La version du plugin installée ne fournit pas ce modèle.", + "descForVersionSwitch": "La version du plugin installée ne fournit pas ce modèle. Cliquez pour changer de version." + }, + "modelSelectorTooltips": { + "deprecated": "Ce modèle est obsolète" + }, + "outputVars": { + "files": { + "title": "Fichiers générés par l’agent", + "url": "URL de l’image", + "transfer_method": "Méthode de transfert. La valeur est remote_url ou local_file", + "type": "Type de support. Maintenant, seulement l’image de support", + "upload_file_id": "Télécharger l’identifiant du fichier" + }, + "json": "JSON généré par l’agent", + "text": "Contenu généré par l’agent", + "usage": "Informations sur l’utilisation du modèle" + }, + "checkList": { + "strategyNotSelected": "Stratégie non sélectionnée" + }, + "installPlugin": { + "title": "Installer le plugin", + "install": "Installer", + "changelog": "Journal des modifications", + "cancel": "Annuler", + "desc": "Sur le point d’installer le plugin suivant" + }, + "modelNotSelected": "Modèle non sélectionné", + "configureModel": "Configurer le modèle", + "pluginNotFoundDesc": "Ce plugin est installé à partir de GitHub. Veuillez aller dans Plugins pour réinstaller", + "strategyNotSet": "Stratégie agentique non définie", + "unsupportedStrategy": "Stratégie non soutenue", + "linkToPlugin": "Lien vers les plugins", + "toolNotInstallTooltip": "{{tool}} n’est pas installé", + "model": "modèle", + "learnMore": "Pour en savoir plus", + "pluginNotInstalled": "Ce plugin n’est pas installé", + "modelNotInstallTooltip": "Ce modèle n’est pas installé", + "tools": "Outils", + "notAuthorized": "Non autorisé", + "strategyNotInstallTooltip": "{{strategy}} n’est pas installé", + "strategyNotFoundDesc": "La version du plugin installée ne fournit pas cette stratégie.", + "strategyNotFoundDescAndSwitchVersion": "La version du plugin installée ne fournit pas cette stratégie. Cliquez pour changer de version.", + "toolbox": "boîte à outils", + "pluginNotInstalledDesc": "Ce plugin est installé à partir de GitHub. Veuillez aller dans Plugins pour réinstaller", + "maxIterations": "Nombre maximal d’itérations", + "toolNotAuthorizedTooltip": "{{outil}} Non autorisé", + "clickToViewParameterSchema": "Cliquez pour voir le schéma des paramètres", + "parameterSchema": "Schéma de Paramètres" + }, + "loop": { + "ErrorMethod": { + "operationTerminated": "Terminé", + "removeAbnormalOutput": "Supprimer la sortie anormale", + "continueOnError": "Continuer en cas d'erreur" + }, + "currentLoop": "Boucle de courant", + "loopMaxCount": "Nombre maximum de boucles", + "loop_one": "{{count}} Boucle", + "output": "Variable de sortie", + "error_other": "{{count}} erreurs", + "loopMaxCountError": "Veuillez entrer un nombre maximal de boucles valide, compris entre 1 et {{maxCount}}.", + "totalLoopCount": "Nombre total de boucles : {{count}}", + "initialLoopVariables": "Variables de boucle initiales", + "breakCondition": "Condition de terminaison de boucle", + "variableName": "Nom de Variable", + "finalLoopVariables": "Variables de boucle finales", + "inputMode": "Mode d'entrée", + "setLoopVariables": "Définir des variables dans la portée de la boucle", + "loop_other": "{{count}} Boucles", + "comma": ",", + "loopNode": "Nœud de boucle", + "error_one": "{{count}} Erreur", + "errorResponseMethod": "Méthode de réponse d'erreur", + "input": "Entrée", + "currentLoopCount": "Nombre de boucles actuel : {{count}}", + "deleteDesc": "Supprimer le nœud de boucle supprimera tous les nœuds enfants.", + "exitConditionTip": "Un nœud de boucle nécessite au moins une condition de sortie", + "breakConditionTip": "Seules les variables dans les boucles avec des conditions de terminaison et les variables de conversation peuvent être référencées.", + "loopVariables": "Variables de boucle", + "deleteTitle": "Supprimer le nœud de boucle ?" + }, + "dataSource": { + "supportedFileFormatsPlaceholder": "Extension de fichier, e.g. doc", + "add": "Ajouter une source de données", + "supportedFileFormats": "Formats de fichiers pris en charge" + }, + "knowledgeBase": { + "chunkStructureTip": { + "learnMore": "Pour en savoir plus", + "title": "Veuillez choisir une structure de morceaux", + "message": "La base de connaissances Dify prend en charge trois structures de segmentation : Général, Parent-enfant et Q&R. Chaque base de connaissances ne peut avoir qu’une seule structure. La sortie du nœud précédent doit s’aligner sur la structure de blocs sélectionnée. Notez que le choix de la structure de segmentation affecte les méthodes d’index disponibles." + }, + "chunkStructure": "Structure de morceaux", + "chunkIsRequired": "Une structure de morceaux est requise", + "chooseChunkStructure": "Choisir une structure de blocs", + "aboutRetrieval": "À propos de la méthode de récupération.", + "changeChunkStructure": "Modifier la structure des morceaux", + "indexMethodIsRequired": "La méthode d’indexation est requise", + "retrievalSettingIsRequired": "Le paramètre de récupération est requis", + "chunksInput": "Morceaux", + "chunksInputTip": "La variable d'entrée du nœud de la base de connaissances est Chunks. Le type de variable est un objet avec un schéma JSON spécifique qui doit être cohérent avec la structure de morceau sélectionnée.", + "rerankingModelIsRequired": "Un modèle de rerankage est requis", + "embeddingModelIsRequired": "Un modèle d'intégration est requis", + "chunksVariableIsRequired": "La variable Chunks est requise", + "rerankingModelIsInvalid": "Le modèle de rerank est invalide", + "embeddingModelIsInvalid": "Le modèle d'intégration est invalide" + }, + "triggerPlugin": { + "authorized": "autorisé", + "notConfigured": "Non configuré", + "notAuthorized": "Non autorisé", + "selectSubscription": "Sélectionner un abonnement", + "availableSubscriptions": "Abonnements disponibles", + "addSubscription": "Ajouter un nouvel abonnement", + "removeSubscription": "Supprimer l'abonnement", + "subscriptionRemoved": "Abonnement supprimé avec succès", + "error": "Erreur", + "configuration": "Configuration", + "remove": "Supprimer", + "or": "OU", + "useOAuth": "Utiliser OAuth", + "useApiKey": "Utiliser la clé API", + "authenticationFailed": "Échec de l'authentification", + "authenticationSuccess": "Authentification réussie", + "oauthConfigFailed": "Échec de la configuration OAuth", + "configureOAuthClient": "Configurer le client OAuth", + "oauthClientDescription": "Configurez les identifiants du client OAuth pour activer l'authentification", + "oauthClientSaved": "Configuration du client OAuth enregistrée avec succès", + "configureApiKey": "Configurer la clé API", + "apiKeyDescription": "Configurer les identifiants de clé API pour l'authentification", + "apiKeyConfigured": "Clé API configurée avec succès", + "configurationFailed": "Échec de la configuration", + "failedToStart": "Échec du démarrage du processus d'authentification", + "credentialsVerified": "Identifiants vérifiés avec succès", + "credentialVerificationFailed": "Échec de la vérification des identifiants", + "verifyAndContinue": "Vérifier et continuer", + "configureParameters": "Configurer les paramètres", + "parametersDescription": "Configurer les paramètres et les propriétés du déclencheur", + "configurationComplete": "Configuration terminée", + "configurationCompleteDescription": "Votre déclencheur a été configuré avec succès", + "configurationCompleteMessage": "La configuration de votre déclencheur est maintenant complète et prête à l'emploi.", + "parameters": "Paramètres", + "properties": "Propriétés", + "propertiesDescription": "Propriétés de configuration supplémentaires pour ce déclencheur", + "noConfigurationRequired": "Aucune configuration supplémentaire n'est requise pour ce déclencheur.", + "subscriptionName": "Nom de l'abonnement", + "subscriptionNameDescription": "Entrez un nom unique pour cet abonnement de déclencheur", + "subscriptionNamePlaceholder": "Entrez le nom de l'abonnement...", + "subscriptionNameRequired": "Le nom de l'abonnement est requis", + "subscriptionRequired": "L'abonnement est requis" + }, + "triggerSchedule": { + "title": "Programme", + "nodeTitle": "Déclencheur de programmation", + "notConfigured": "Non configuré", + "useCronExpression": "Utiliser une expression cron", + "useVisualPicker": "Utiliser le sélecteur visuel", + "frequency": { + "label": "FRÉQUENCE", + "hourly": "Horaire", + "daily": "Quotidien", + "weekly": "Hebdomadaire", + "monthly": "mensuel" + }, + "selectFrequency": "Sélectionner la fréquence", + "frequencyLabel": "Fréquence", + "nextExecution": "Prochaine exécution", + "weekdays": "Jours de la semaine", + "time": "Temps", + "cronExpression": "Expression Cron", + "nextExecutionTime": "PROCHAINE HEURE D'EXÉCUTION", + "nextExecutionTimes": "Prochaines 5 exécutions", + "startTime": "Heure de début", + "executeNow": "Exécution maintenant", + "selectDateTime": "Sélectionner la date et l'heure", + "hours": "Heures", + "minutes": "Minutes", + "onMinute": "Une minute", + "days": "Jours", + "lastDay": "Dernier jour", + "lastDayTooltip": "Tous les mois n'ont pas 31 jours. Utilisez l'option « dernier jour » pour sélectionner le dernier jour de chaque mois.", + "mode": "Mode", + "timezone": "Fuseau horaire", + "visualConfig": "Configuration visuelle", + "monthlyDay": "Jour mensuel", + "executionTime": "Temps d'exécution", + "invalidTimezone": "Fuseau horaire invalide", + "invalidCronExpression": "Expression cron invalide", + "noValidExecutionTime": "Aucun temps d'exécution valide ne peut être calculé", + "executionTimeCalculationError": "Échec du calcul des temps d'exécution", + "invalidFrequency": "Fréquence invalide", + "invalidStartTime": "Heure de début invalide", + "startTimeMustBeFuture": "L'heure de début doit être dans le futur", + "invalidTimeFormat": "Format d'heure invalide (attendu HH:MM AM/PM)", + "invalidWeekday": "Jour de la semaine invalide : {{weekday}}", + "invalidMonthlyDay": "Le jour du mois doit être compris entre 1 et 31 ou \"dernier\"", + "invalidOnMinute": "Une minute doit être comprise entre 0 et 59", + "invalidExecutionTime": "Heure d'exécution invalide", + "executionTimeMustBeFuture": "Le délai d'exécution doit être dans le futur" + }, + "triggerWebhook": { + "title": "Déclencheur Webhook", + "nodeTitle": "🔗 Déclencheur Webhook", + "configPlaceholder": "La configuration du déclencheur webhook sera implémentée ici", + "webhookUrl": "URL du webhook", + "webhookUrlPlaceholder": "Cliquez sur générer pour créer l'URL du webhook", + "generate": "Générer", + "copy": "Copier", + "test": "Test", + "urlGenerated": "URL du webhook générée avec succès", + "urlGenerationFailed": "Échec de la génération de l’URL du webhook", + "urlCopied": "URL copiée dans le presse-papiers", + "method": "Méthode", + "contentType": "Type de contenu", + "queryParameters": "Paramètres de requête", + "headerParameters": "Paramètres d'en-tête", + "requestBodyParameters": "Paramètres du corps de la requête", + "parameterName": "Nom de variable", + "varName": "Nom de variable", + "varType": "Type", + "varNamePlaceholder": "Entrez le nom de la variable...", + "required": "Requis", + "addParameter": "Ajouter", + "addHeader": "Ajouter", + "noParameters": "Aucun paramètre configuré", + "noQueryParameters": "Aucun paramètre de requête configuré", + "noHeaders": "Aucun en-tête configuré", + "noBodyParameters": "Aucun paramètre de corps configuré", + "debugUrlTitle": "Pour les tests, utilisez toujours cette URL", + "debugUrlCopy": "Cliquez pour copier", + "debugUrlCopied": "Copié !", + "debugUrlPrivateAddressWarning": "Cette URL semble être une adresse interne, ce qui peut provoquer l'échec des requêtes webhook. Vous pouvez changer TRIGGER_URL pour une adresse publique.", + "errorHandling": "Gestion des erreurs", + "errorStrategy": "Gestion des erreurs", + "responseConfiguration": "Réponse", + "asyncMode": "Mode asynchrone", + "statusCode": "Code d'état", + "responseBody": "Corps de la réponse", + "responseBodyPlaceholder": "Écrivez ici le corps de votre réponse", + "headers": "En-têtes", + "validation": { + "webhookUrlRequired": "L'URL du webhook est requise", + "invalidParameterType": "Type de paramètre invalide \"{{type}}\" pour le paramètre \"{{name}}\"" + } + } + }, + "tracing": { + "stopBy": "Arrêté par {{user}}" + }, + "variableReference": { + "noAssignedVars": "Aucune variable affectée disponible", + "noVarsForOperation": "Aucune variable n’est disponible pour l’affectation avec l’opération sélectionnée.", + "noAvailableVars": "Aucune variable disponible", + "assignedVarsDescription": "Les variables affectées doivent être des variables accessibles en écriture, telles que", + "conversationVars": "Variables de conversation" + }, + "versionHistory": { + "filter": { + "all": "Tout", + "reset": "Réinitialiser le filtre", + "onlyYours": "Rien que le tien", + "empty": "Aucune version correspondante trouvée", + "onlyShowNamedVersions": "Afficher uniquement les versions nommées" + }, + "editField": { + "releaseNotesLengthLimit": "Les notes de version ne peuvent pas dépasser {{limit}} caractères.", + "title": "Titre", + "titleLengthLimit": "Le titre ne peut pas dépasser {{limit}} caractères.", + "releaseNotes": "Notes de version" + }, + "action": { + "updateSuccess": "Version mise à jour", + "deleteFailure": "Échec de la suppression de la version", + "restoreSuccess": "Version restaurée", + "deleteSuccess": "Version supprimée", + "updateFailure": "Échec de la mise à jour de la version", + "restoreFailure": "Échec de la restauration de la version", + "copyIdSuccess": "ID copié dans le presse-papiers" + }, + "title": "Versions", + "releaseNotesPlaceholder": "Décrivez ce qui a changé", + "nameThisVersion": "Nommez cette version", + "currentDraft": "Projet actuel", + "defaultName": "Version sans titre", + "editVersionInfo": "Modifier les informations de version", + "restorationTip": "Après la restauration de la version, le brouillon actuel sera écrasé.", + "deletionTip": "La suppression est irreversible, veuillez confirmer.", + "latest": "Dernier", + "copyId": "Copier l’ID" + }, + "debug": { + "noData": { + "description": "Les résultats de la dernière exécution seront affichés ici", + "runThisNode": "Exécutez ce nœud" + }, + "variableInspect": { + "trigger": { + "clear": "Clair", + "cached": "Afficher les variables mises en cache", + "running": "État d'exécution du cache", + "stop": "Arrête de courir", + "normal": "Inspection de Variable" + }, + "title": "Inspection de Variable", + "clearAll": "Réinitialiser tout", + "envNode": "Environnement", + "clearNode": "Effacer la variable mise en cache", + "view": "Voir le journal", + "systemNode": "Système", + "reset": "Réinitialiser à la dernière valeur d'exécution", + "chatNode": "Conversation", + "emptyLink": "En savoir plus", + "edited": "Édité", + "resetConversationVar": "Réinitialiser la variable de conversation à la valeur par défaut", + "emptyTip": "Après avoir dessiné un nœud sur le canevas ou exécuté un nœud étape par étape, vous pouvez voir la valeur actuelle de la variable du nœud dans l'Inspecteur de Variables.", + "export": "exportation", + "exportToolTip": "Exporter la variable en tant que fichier", + "largeData": "Données volumineuses, aperçu en lecture seule. Exporter pour tout afficher.", + "largeDataNoExport": "Données volumineuses - aperçu partiel uniquement", + "listening": { + "title": "En attente d'événements provenant des déclencheurs...", + "tip": "Vous pouvez maintenant simuler des déclencheurs d'événements en envoyant des requêtes de test au point de terminaison HTTP {{nodeName}} ou l'utiliser comme URL de rappel pour le débogage en direct des événements. Toutes les sorties peuvent être consultées directement dans l'Inspecteur de Variables.", + "tipPlugin": "Vous pouvez maintenant créer des événements dans {{- pluginName}} et récupérer les résultats de ces événements dans l'Inspecteur de Variables.", + "tipSchedule": "Écoute des événements des déclencheurs de planification.\nProchaine exécution planifiée : {{nextTriggerTime}}", + "tipFallback": "Attendez les événements de déclenchement entrants. Les sorties apparaîtront ici.", + "defaultNodeName": "ce déclencheur", + "defaultPluginName": "ce plugin déclenche", + "defaultScheduleTime": "Non configuré", + "selectedTriggers": "déclencheurs sélectionnés", + "stopButton": "Arrête" + } + }, + "settingsTab": "Paramètres", + "lastRunTab": "Dernière Exécution", + "relations": { + "dependencies": "Dépendances", + "dependentsDescription": "Nœuds qui s’appuient sur ce nœud", + "noDependents": "Pas de personnes à charge", + "dependents": "Dépendants", + "noDependencies": "Aucune dépendance", + "dependenciesDescription": "Nœuds sur lesquels repose ce nœud" + }, + "relationsTab": "Relations", + "copyLastRun": "Copier la dernière exécution", + "noLastRunFound": "Aucune exécution précédente trouvée", + "noMatchingInputsFound": "Aucune entrée correspondante trouvée dans la dernière exécution.", + "copyLastRunError": "Échec de la copie des entrées de la dernière exécution", + "lastOutput": "Dernière sortie", + "lastRunInputsCopied": "{{count}} entrée(s) copiée(s) de la dernière exécution" + }, + "sidebar": { + "exportWarning": "Exporter la version enregistrée actuelle", + "exportWarningDesc": "Cela exportera la version actuelle enregistrée de votre flux de travail. Si vous avez des modifications non enregistrées dans l'éditeur, veuillez d'abord les enregistrer en utilisant l'option d'exportation dans le canevas du flux de travail." + }, + "publishLimit": { + "startNodeTitlePrefix": "Mettre à niveau vers", + "startNodeTitleSuffix": "débloquez des déclencheurs illimités par flux de travail", + "startNodeDesc": "Vous avez atteint la limite de 2 déclencheurs par flux de travail pour ce plan. Passez à une version supérieure pour publier ce flux de travail." + }, + "error": { + "startNodeRequired": "Veuillez d'abord ajouter un nœud de départ avant {{operation}}", + "operations": { + "connectingNodes": "connecter des nœuds", + "addingNodes": "ajout de nœuds", + "modifyingWorkflow": "modification du flux de travail", + "updatingWorkflow": "mise à jour du flux de travail" + } + }, + "customWebhook": "Webhook personnalisé", + "difyTeam": "Équipe Dify", + "triggerStatus": { + "enabled": "DÉCLENCHEUR", + "disabled": "DÉCLENCHEUR • DÉSACTIVÉ" + }, + "entryNodeStatus": { + "enabled": "DÉMARRER", + "disabled": "DÉMARRER • DÉSACTIVÉ" + }, + "onboarding": { + "title": "Sélectionnez un nœud de départ pour commencer", + "description": "Différents nœuds de départ ont différentes capacités. Ne vous inquiétez pas, vous pouvez toujours les changer plus tard.", + "userInputFull": "Entrée utilisateur (nœud de départ original)", + "userInputDescription": "Nœud de démarrage qui permet de définir des variables de saisie utilisateur, avec comme capacités d'outil l'application web, l'API de service, le serveur MCP et le workflow.", + "trigger": "Déclencheur", + "triggerDescription": "Les déclencheurs peuvent servir de nœud de départ d'un flux de travail, comme les tâches planifiées, les webhooks personnalisés ou les intégrations avec d'autres applications.", + "back": "Retour", + "learnMore": "En savoir plus", + "aboutStartNode": "à propos du nœud de départ.", + "escTip": { + "press": "Appuyer", + "key": "Échap", + "toDismiss": "rejeter" + } + } +} diff --git a/web/i18n/fr-FR/workflow.ts b/web/i18n/fr-FR/workflow.ts deleted file mode 100644 index e22385c17e..0000000000 --- a/web/i18n/fr-FR/workflow.ts +++ /dev/null @@ -1,1296 +0,0 @@ -const translation = { - common: { - undo: 'Défaire', - redo: 'Réexécuter', - editing: 'Édition', - autoSaved: 'Sauvegardé automatiquement', - unpublished: 'Non publié', - published: 'Publié', - publish: 'Publier', - update: 'Mettre à jour', - run: 'Exécuter test', - running: 'En cours d\'exécution', - inRunMode: 'En mode exécution', - inPreview: 'En aperçu', - inPreviewMode: 'En mode aperçu', - preview: 'Aperçu', - viewRunHistory: 'Voir l\'historique des exécutions', - runHistory: 'Historique des exécutions', - goBackToEdit: 'Retour à l\'éditeur', - conversationLog: 'Journal de conversation', - debugAndPreview: 'Aperçu', - restart: 'Redémarrer', - currentDraft: 'Brouillon actuel', - currentDraftUnpublished: 'Brouillon actuel non publié', - latestPublished: 'Dernière publication', - publishedAt: 'Publié le', - restore: 'Restaurer', - runApp: 'Exécuter l\'application', - batchRunApp: 'Exécuter l\'application en lot', - accessAPIReference: 'Accéder à la référence API', - embedIntoSite: 'Intégrer au site', - addTitle: 'Ajouter un titre...', - addDescription: 'Ajouter une description...', - noVar: 'Pas de variable', - searchVar: 'Rechercher une variable', - variableNamePlaceholder: 'Nom de la variable', - setVarValuePlaceholder: 'Définir la valeur de la variable', - needConnectTip: 'Cette étape n\'est connectée à rien', - maxTreeDepth: 'Limite maximale de {{depth}} nœuds par branche', - workflowProcess: 'Processus de flux de travail', - notRunning: 'Pas encore en cours d\'exécution', - previewPlaceholder: 'Entrez le contenu dans la boîte ci-dessous pour commencer à déboguer le Chatbot', - effectVarConfirm: { - title: 'Supprimer la variable', - content: 'La variable est utilisée dans d\'autres nœuds. Voulez-vous toujours la supprimer?', - }, - insertVarTip: 'Appuyez sur la touche \'/\' pour insérer rapidement', - processData: 'Traiter les données', - input: 'Entrée', - output: 'Sortie', - jinjaEditorPlaceholder: 'Tapez \'/\' ou \'{\' pour insérer une variable', - viewOnly: 'Affichage seulement', - showRunHistory: 'Afficher l\'historique des exécutions', - enableJinja: 'Activer le support des templates Jinja', - learnMore: 'En savoir plus', - copy: 'Copier', - duplicate: 'Dupliquer', - pasteHere: 'Coller ici', - pointerMode: 'Mode pointeur', - handMode: 'Mode main', - model: 'Modèle', - workflowAsTool: 'Flux de travail en tant qu\'outil', - configureRequired: 'Configuration requise', - configure: 'Configurer', - manageInTools: 'Gérer dans les outils', - workflowAsToolTip: 'Reconfiguration de l\'outil requise après la mise à jour du flux de travail.', - viewDetailInTracingPanel: 'Voir les détails', - syncingData: 'Synchroniser des données en quelques secondes.', - importDSL: 'Importe DSL', - importDSLTip: 'Le projet actuel sera écrasé. Exporter le flux de travail en tant que sauvegarde avant d\'importer.', - backupCurrentDraft: 'Sauvegarder le projet actuel', - chooseDSL: 'Choisir le fichier DSL(yml)', - overwriteAndImport: 'Écraser et importer', - importFailure: 'Echec de l\'importation', - importSuccess: 'Import avec succès', - parallelTip: { - click: { - title: 'Cliquer', - desc: 'à ajouter', - }, - drag: { - title: 'Traîner', - desc: 'pour se connecter', - }, - limit: 'Le parallélisme est limité aux branches {{num}}.', - depthLimit: 'Limite de couches d’imbrication parallèle de {{num}} couches', - }, - disconnect: 'Déconnecter', - jumpToNode: 'Aller à ce nœud', - addParallelNode: 'Ajouter un nœud parallèle', - parallel: 'PARALLÈLE', - branch: 'BRANCHE', - ImageUploadLegacyTip: 'Vous pouvez désormais créer des variables de type de fichier dans le formulaire de démarrage. À l’avenir, nous ne prendrons plus en charge la fonctionnalité de téléchargement d’images.', - fileUploadTip: 'Les fonctionnalités de téléchargement d’images ont été mises à niveau vers le téléchargement de fichiers.', - importWarning: 'Prudence', - importWarningDetails: 'La différence de version DSL peut affecter certaines fonctionnalités', - openInExplore: 'Ouvrir dans Explorer', - onFailure: 'Sur l’échec', - addFailureBranch: 'Ajouter une branche d’échec', - loadMore: 'Charger plus de flux de travail', - noHistory: 'Pas d’histoire', - exportPNG: 'Exporter en PNG', - exitVersions: 'Versions de sortie', - exportSVG: 'Exporter en SVG', - publishUpdate: 'Publier une mise à jour', - versionHistory: 'Historique des versions', - exportImage: 'Exporter l\'image', - exportJPEG: 'Exporter en JPEG', - needOutputNode: 'Le nœud de sortie doit être ajouté', - needAnswerNode: 'Le nœud de réponse doit être ajouté.', - addBlock: 'Ajouter un nœud', - tagBound: 'Nombre d\'applications utilisant cette étiquette', - currentView: 'Vue actuelle', - currentWorkflow: 'Flux de travail actuel', - moreActions: 'Plus d’actions', - listening: 'Écouter', - chooseStartNodeToRun: 'Choisissez le nœud de départ pour lancer', - runAllTriggers: 'Exécuter tous les déclencheurs', - features: 'Fonctionnalités', - featuresDescription: 'Améliorer l\'expérience utilisateur de l\'application web', - featuresDocLink: 'En savoir plus', - needAdd: 'Le nœud {{node}} doit être ajouté', - needStartNode: 'Au moins un nœud de départ doit être ajouté', - workflowAsToolDisabledHint: 'Publiez le dernier flux de travail et assurez-vous qu\'un nœud d\'entrée utilisateur est connecté avant de le configurer comme outil.', - }, - env: { - envPanelTitle: 'Variables d\'Environnement', - envDescription: 'Les variables d\'environnement peuvent être utilisées pour stocker des informations privées et des informations d\'identification. Elles sont en lecture seule et peuvent être séparées du fichier DSL lors de l\'exportation.', - envPanelButton: 'Ajouter Variable', - modal: { - title: 'Ajouter Variables d\'Environnement', - editTitle: 'Editer titre', - type: 'Type', - name: 'Nom', - namePlaceholder: 'Nom de l\'env', - value: 'valeur', - valuePlaceholder: 'Valeur de l\'env', - secretTip: 'Utilisé pour définir des informations ou des données sensibles, avec des paramètres DSL configurés pour la prévention des fuites.', - description: 'Description', - descriptionPlaceholder: 'Décrivez la variable', - }, - export: { - title: 'Exporter des variables d\'environnement secrètes?', - checkbox: 'Exporter les valeurs secrètes', - ignore: 'Exporter DSL', - export: 'Exporter les DSL avec des valeurs secrètes', - }, - }, - globalVar: { - title: 'Variables système', - description: 'Les variables système sont des variables globales que tout nœud peut référencer sans câblage lorsque le type correspond, comme l\'ID utilisateur final et l\'ID du workflow.', - fieldsDescription: { - conversationId: 'ID de conversation', - dialogCount: 'Nombre de conversations', - userId: 'ID utilisateur', - triggerTimestamp: 'Horodatage du lancement de l\'application', - appId: 'ID de l\'application', - workflowId: 'ID du workflow', - workflowRunId: 'ID d\'exécution du workflow', - }, - }, - chatVariable: { - panelTitle: 'Variables de Conversation', - panelDescription: 'Les Variables de Conversation sont utilisées pour stocker des informations interactives dont le LLM a besoin de se souvenir, y compris l\'historique des conversations, les fichiers téléchargés et les préférences de l\'utilisateur. Elles sont en lecture-écriture.', - docLink: 'Consultez notre documentation pour en savoir plus.', - button: 'Ajouter une Variable', - modal: { - title: 'Ajouter une Variable de Conversation', - editTitle: 'Modifier une Variable de Conversation', - name: 'Nom', - namePlaceholder: 'Nom de la variable', - type: 'Type', - value: 'Valeur par Défaut', - valuePlaceholder: 'Valeur par défaut, laisser vide pour ne pas définir', - description: 'Description', - descriptionPlaceholder: 'Décrivez la variable', - editInJSON: 'Éditer en JSON', - oneByOne: 'Ajouter un par un', - editInForm: 'Éditer dans le Formulaire', - arrayValue: 'Valeur', - addArrayValue: 'Ajouter une Valeur', - objectKey: 'Clé', - objectType: 'Type', - objectValue: 'Valeur par Défaut', - }, - storedContent: 'Contenu stocké', - updatedAt: 'Mis à jour le ', - }, - changeHistory: { - title: 'Historique des modifications', - placeholder: 'Vous n\'avez encore rien modifié', - clearHistory: 'Effacer l\'historique', - hint: 'Conseil', - hintText: 'Vos actions d\'édition sont suivies dans un historique des modifications, qui est stocké sur votre appareil pour la durée de cette session. Cet historique sera effacé lorsque vous quitterez l\'éditeur.', - stepBackward_one: '{{count}} pas en arrière', - stepBackward_other: '{{count}} pas en arrière', - stepForward_one: '{{count}} pas en avant', - stepForward_other: '{{count}} pas en avant', - sessionStart: 'Début de la session', - currentState: 'État actuel', - noteAdd: 'Note ajoutée', - noteChange: 'Note modifiée', - noteDelete: 'Note supprimée', - nodeConnect: 'Node connecté', - nodeChange: 'Nœud changé', - nodeResize: 'Nœud redimensionné', - edgeDelete: 'Nœud déconnecté', - nodeDelete: 'Nœud supprimé', - nodePaste: 'Node collé', - nodeDragStop: 'Nœud déplacé', - nodeTitleChange: 'Titre du nœud modifié', - nodeAdd: 'Nœud ajouté', - nodeDescriptionChange: 'La description du nœud a changé', - }, - errorMsg: { - fieldRequired: '{{field}} est requis', - authRequired: 'Autorisation requise', - invalidJson: '{{field}} est un JSON invalide', - fields: { - variable: 'Nom de la variable', - variableValue: 'Valeur de la variable', - code: 'Code', - model: 'Modèle', - rerankModel: 'Modèle de rerank', - visionVariable: 'Vision Variable', - }, - invalidVariable: 'Variable invalide', - rerankModelRequired: 'Avant d’activer le modèle de reclassement, veuillez confirmer que le modèle a été correctement configuré dans les paramètres.', - noValidTool: '{{field}} aucun outil valide sélectionné', - toolParameterRequired: '{{field}} : le paramètre [{{param}}] est obligatoire', - startNodeRequired: 'Veuillez d\'abord ajouter un nœud de départ avant {{operation}}', - }, - singleRun: { - testRun: 'Exécution de test', - startRun: 'Démarrer l\'exécution', - running: 'En cours d\'exécution', - testRunIteration: 'Itération de l\'exécution de test', - back: 'Retour', - iteration: 'Itération', - loop: 'Boucle', - reRun: 'Relancer', - preparingDataSource: 'Préparation de la source de données', - }, - tabs: { - 'tools': 'Outils', - 'allTool': 'Tous', - 'customTool': 'Personnalisé', - 'workflowTool': 'Flux de travail', - 'question-understand': 'Compréhension des questions', - 'logic': 'Logique', - 'transform': 'Transformer', - 'utilities': 'Utilitaires', - 'noResult': 'Aucun résultat trouvé', - 'searchTool': 'Outil de recherche', - 'plugin': 'Plugin', - 'agent': 'Stratégie d’agent', - 'blocks': 'Nœuds', - 'searchBlock': 'Nœud de recherche', - 'addAll': 'Ajouter tout', - 'allAdded': 'Tout ajouté', - 'sources': 'Sources', - 'searchDataSource': 'Source de données de recherche', - 'start': 'Démarrer', - 'searchTrigger': 'Déclencheurs de recherche...', - 'allTriggers': 'Tous les déclencheurs', - 'noPluginsFound': 'Aucun plugin n\'a été trouvé', - 'requestToCommunity': 'Demandes à la communauté', - 'featuredTools': 'En vedette', - 'showMoreFeatured': 'Afficher plus', - 'showLessFeatured': 'Afficher moins', - 'installed': 'Installé', - 'pluginByAuthor': 'Par {{author}}', - 'usePlugin': 'Sélectionner l\'outil', - 'hideActions': 'Cacher les outils', - 'noFeaturedPlugins': 'Découvrez plus d\'outils dans le Marketplace', - 'noFeaturedTriggers': 'Découvrez plus de déclencheurs dans le Marketplace', - 'startDisabledTip': 'Le nœud de déclenchement et le nœud d\'entrée utilisateur sont mutuellement exclusifs.', - }, - blocks: { - 'start': 'Début', - 'end': 'Sortie', - 'answer': 'Réponse', - 'llm': 'LLM', - 'knowledge-retrieval': 'Récupération de connaissances', - 'question-classifier': 'Classificateur de questions', - 'if-else': 'SI/SINON', - 'code': 'Code', - 'template-transform': 'Modèle', - 'http-request': 'Requête HTTP', - 'variable-assigner': 'Assigneur de variables', - 'variable-aggregator': 'Agrégateur de variables', - 'assigner': 'Assignateur de Variables', - 'iteration-start': 'Début d\'itération', - 'iteration': 'Itération', - 'parameter-extractor': 'Extracteur de paramètres', - 'list-operator': 'Opérateur de liste', - 'document-extractor': 'Extracteur de documents', - 'agent': 'Agent', - 'loop-end': 'Sortir de la boucle', - 'loop': 'Boucle', - 'loop-start': 'Début de boucle', - 'knowledge-index': 'Base de connaissances', - 'datasource': 'Source des données', - 'originalStartNode': 'nœud de départ original', - 'trigger-schedule': 'Déclencheur de programmation', - 'trigger-webhook': 'Déclencheur Webhook', - 'trigger-plugin': 'Déclencheur de plugin', - }, - blocksAbout: { - 'start': 'Définir les paramètres initiaux pour lancer un flux de travail', - 'end': 'Définir la sortie et le type de résultat d\'un flux de travail', - 'answer': 'Définir le contenu de la réponse d\'une conversation', - 'llm': 'Inviter de grands modèles de langage pour répondre aux questions ou traiter le langage naturel', - 'knowledge-retrieval': 'Permet de consulter le contenu textuel lié aux questions des utilisateurs à partir de la base de connaissances', - 'question-classifier': 'Définir les conditions de classification des questions des utilisateurs, LLM peut définir comment la conversation progresse en fonction de la description de la classification', - 'if-else': 'Permet de diviser le flux de travail en deux branches basées sur des conditions if/else', - 'code': 'Exécuter un morceau de code Python ou NodeJS pour implémenter une logique personnalisée', - 'template-transform': 'Convertir les données en chaîne en utilisant la syntaxe du template Jinja', - 'http-request': 'Permettre l\'envoi de requêtes serveur via le protocole HTTP', - 'variable-assigner': 'Agrégation de variables de plusieurs branches en une seule variable pour la configuration unifiée des nœuds en aval.', - 'assigner': 'Le nœud d\'assignation de variables est utilisé pour attribuer des valeurs aux variables modifiables (comme les variables de conversation).', - 'variable-aggregator': 'Agrégation de variables de plusieurs branches en une seule variable pour la configuration unifiée des nœuds en aval.', - 'iteration': 'Effectuer plusieurs étapes sur un objet de liste jusqu\'à ce que tous les résultats soient produits.', - 'parameter-extractor': 'Utiliser LLM pour extraire des paramètres structurés du langage naturel pour les invocations d\'outils ou les requêtes HTTP.', - 'list-operator': 'Utilisé pour filtrer ou trier le contenu d’un tableau.', - 'document-extractor': 'Utilisé pour analyser les documents téléchargés en contenu texte facilement compréhensible par LLM.', - 'agent': 'Appel de grands modèles de langage pour répondre à des questions ou traiter le langage naturel', - 'loop': 'Exécutez une boucle de logique jusqu\'à ce que la condition de terminaison soit remplie ou que le nombre maximum de boucles soit atteint.', - 'loop-end': 'Équivalent à "break". Ce nœud n\'a pas d\'éléments de configuration. Lorsque le corps de la boucle atteint ce nœud, la boucle se termine.', - 'datasource': 'Source de données À propos', - 'knowledge-index': 'Base de connaissances À propos', - 'trigger-schedule': 'Déclencheur de flux de travail basé sur le temps qui démarre les flux de travail selon un calendrier', - 'trigger-webhook': 'Le déclencheur Webhook reçoit des pushs HTTP provenant de systèmes tiers pour déclencher automatiquement des flux de travail.', - 'trigger-plugin': 'Déclencheur d’intégration tierce qui démarre des flux de travail à partir d’événements d’une plateforme externe', - }, - operator: { - zoomIn: 'Zoomer', - zoomOut: 'Dézoomer', - zoomTo50: 'Zoomer à 50%', - zoomTo100: 'Zoomer à 100%', - zoomToFit: 'Zoomer pour ajuster', - alignBottom: 'Bas', - alignLeft: 'Gauche', - alignCenter: 'Centre', - alignTop: 'Haut', - alignNodes: 'Aligner les nœuds', - distributeHorizontal: 'Répartir horizontalement', - alignMiddle: 'Milieu', - horizontal: 'Horizontal', - selectionAlignment: 'Alignement de la sélection', - alignRight: 'Droite', - vertical: 'Vertical', - distributeVertical: 'Répartir verticalement', - }, - panel: { - userInputField: 'Champ de saisie de l\'utilisateur', - helpLink: 'Aide', - about: 'À propos', - createdBy: 'Créé par', - nextStep: 'Étape suivante', - runThisStep: 'Exécuter cette étape', - checklist: 'Liste de contrôle', - checklistTip: 'Assurez-vous que tous les problèmes sont résolus avant de publier', - checklistResolved: 'Tous les problèmes ont été résolus', - change: 'Modifier', - optional: '(facultatif)', - organizeBlocks: 'Organiser les nœuds', - addNextStep: 'Ajoutez la prochaine étape dans ce flux de travail', - selectNextStep: 'Sélectionner la prochaine étape', - changeBlock: 'Changer de nœud', - maximize: 'Maximiser le Canvas', - minimize: 'Sortir du mode plein écran', - scrollToSelectedNode: 'Faites défiler jusqu’au nœud sélectionné', - optional_and_hidden: '(optionnel et caché)', - goTo: 'Aller à', - startNode: 'Nœud de départ', - openWorkflow: 'Ouvrir le flux de travail', - }, - nodes: { - common: { - outputVars: 'Variables de sortie', - insertVarTip: 'Insérer une variable', - memory: { - memory: 'Mémoire', - memoryTip: 'Paramètres de mémoire de conversation', - windowSize: 'Taille de la fenêtre', - conversationRoleName: 'Nom du rôle de conversation', - user: 'Préfixe utilisateur', - assistant: 'Préfixe assistant', - }, - memories: { - title: 'Mémoires', - tip: 'Mémoire de conversation', - builtIn: 'Intégré', - }, - errorHandle: { - none: { - title: 'Aucun', - desc: 'Le nœud cessera de s’exécuter si une exception se produit et n’est pas gérée', - }, - defaultValue: { - title: 'Valeur par défaut', - desc: 'Lorsqu’une erreur se produit, spécifiez un contenu de sortie statique.', - tip: 'En cas d’erreur, le retour est inférieur à la valeur.', - inLog: 'Exception de nœud, sortie en fonction des valeurs par défaut.', - output: 'Valeur par défaut de sortie', - }, - failBranch: { - desc: 'Lorsqu’une erreur se produit, il exécute la branche d’exception', - customize: 'Accédez au canevas pour personnaliser la logique de branche d’échec.', - customizeTip: 'Lorsque la branche fail est activée, les exceptions levées par les nœuds ne mettent pas fin au processus. Au lieu de cela, il exécutera automatiquement la branche d’échec prédéfinie, ce qui vous permettra de fournir de manière flexible des messages d’erreur, des rapports, des correctifs ou des actions d’ignorance.', - inLog: 'Exception de nœud, exécutera automatiquement la branche d’échec. La sortie du nœud renverra un type d’erreur et un message d’erreur et les transmettra en aval.', - title: 'Branche d’échec', - }, - partialSucceeded: { - tip: 'Il y a des nœuds {{num}} dans le processus qui fonctionnent anormalement, veuillez aller dans le traçage pour vérifier les journaux.', - }, - title: 'Gestion des erreurs', - tip: 'Stratégie de gestion des exceptions, déclenchée lorsqu’un nœud rencontre une exception.', - }, - retry: { - retry: 'Réessayer', - retryOnFailure: 'Réessai en cas d’échec', - maxRetries: 'Nombre maximal de tentatives', - retryInterval: 'intervalle de nouvelle tentative', - retryTimes: 'Réessayez {{times}} fois en cas d’échec', - retrying: 'Réessayer...', - retrySuccessful: 'Réessai réussi', - retryFailed: 'Échec de la nouvelle tentative', - retryFailedTimes: '{{times}} les tentatives ont échoué', - times: 'fois', - ms: 'ms', - retries: '{{num}} Tentatives', - }, - typeSwitch: { - input: 'Valeur d\'entrée', - variable: 'Utilisez une variable', - }, - inputVars: 'Variables d’entrée', - pluginNotInstalled: 'Le plugin n\'est pas installé', - }, - start: { - required: 'requis', - inputField: 'Champ de saisie', - builtInVar: 'Variables intégrées', - outputVars: { - query: 'Saisie utilisateur', - memories: { - des: 'Historique de conversation', - type: 'type de message', - content: 'contenu du message', - }, - files: 'Liste de fichiers', - }, - noVarTip: 'Définir les entrées qui peuvent être utilisées dans le flux de travail', - }, - end: { - outputs: 'Sorties', - output: { - type: 'type de sortie', - variable: 'variable de sortie', - }, - type: { - 'none': 'Aucun', - 'plain-text': 'Texte brut', - 'structured': 'Structuré', - }, - }, - answer: { - answer: 'Réponse', - outputVars: 'Variables de sortie', - }, - llm: { - model: 'modèle', - variables: 'variables', - context: 'contexte', - contextTooltip: 'Vous pouvez importer des connaissances en tant que contexte', - notSetContextInPromptTip: 'Pour activer la fonctionnalité de contexte, remplissez la variable de contexte dans le PROMPT.', - prompt: 'invite', - roleDescription: { - system: 'Donner des instructions de haut niveau pour la conversation', - user: 'Fournir des instructions, des questions ou toute entrée textuelle au modèle', - assistant: 'Les réponses du modèle basées sur les messages des utilisateurs', - }, - addMessage: 'Ajouter un message', - vision: 'vision', - files: 'Fichiers', - resolution: { - name: 'Résolution', - high: 'Haute', - low: 'Basse', - }, - outputVars: { - output: 'Contenu généré', - reasoning_content: 'Contenu de raisonnement', - usage: 'Informations sur l\'utilisation du modèle', - }, - singleRun: { - variable: 'Variable', - }, - sysQueryInUser: 'sys.query dans le message utilisateur est requis', - jsonSchema: { - warningTips: { - saveSchema: 'Veuillez terminer la modification du champ actuel avant d\'enregistrer le schéma.', - }, - apply: 'Appliquer', - addField: 'Ajouter un champ', - generationTip: 'Vous pouvez utiliser un langage naturel pour créer rapidement un schéma JSON.', - promptPlaceholder: 'Décrivez votre schéma JSON...', - descriptionPlaceholder: 'Ajouter une description', - instruction: 'Instruction', - resetDefaults: 'Réinitialiser', - generatedResult: 'Résultat généré', - fieldNamePlaceholder: 'Nom du champ', - addChildField: 'Ajouter un champ enfant', - back: 'Retour', - showAdvancedOptions: 'Afficher les options avancées', - title: 'Schéma de sortie structuré', - generating: 'Génération de schéma JSON...', - stringValidations: 'Validations de chaîne', - import: 'Importer depuis JSON', - promptTooltip: 'Convertissez la description textuelle en une structure de schéma JSON standardisé.', - generate: 'Générer', - doc: 'En savoir plus sur la sortie structurée', - regenerate: 'Régénérer', - required: 'nécessaire', - generateJsonSchema: 'Générer un schéma JSON', - resultTip: 'Voici le résultat généré. Si vous n\'êtes pas satisfait, vous pouvez revenir en arrière et modifier votre demande.', - }, - reasoningFormat: { - title: 'Activer la séparation des balises de raisonnement', - tagged: 'Gardez les étiquettes de pensée', - separated: 'Séparer les balises de réflexion', - tooltip: 'Extraire le contenu des balises think et le stocker dans le champ reasoning_content.', - }, - }, - knowledgeRetrieval: { - queryVariable: 'Variable de requête', - knowledge: 'Connaissances', - outputVars: { - output: 'Données segmentées récupérées', - content: 'Contenu segmenté', - title: 'Titre segmenté', - icon: 'Icône segmentée', - url: 'URL segmentée', - metadata: 'Autres métadonnées', - files: 'Fichiers récupérés', - }, - metadata: { - options: { - disabled: { - subTitle: 'Ne pas activer le filtrage des métadonnées', - title: 'Handicapé', - }, - automatic: { - subTitle: 'Générer automatiquement des conditions de filtrage des métadonnées en fonction de la requête de l\'utilisateur', - title: 'Automatique', - desc: 'Générer automatiquement des conditions de filtrage de métadonnées en fonction de la variable de requête.', - }, - manual: { - subTitle: 'Ajouter manuellement des conditions de filtrage des métadonnées', - title: 'Manuel', - }, - }, - panel: { - placeholder: 'Entrez la valeur', - add: 'Ajouter une condition', - search: 'Rechercher des métadonnées', - conditions: 'Conditions', - datePlaceholder: 'Choisissez un moment...', - select: 'Sélectionner une variable...', - title: 'Conditions de filtrage des métadonnées', - }, - title: 'Filtrage des métadonnées', - tip: 'Le filtrage des métadonnées est le processus d\'utilisation des attributs de métadonnées (tels que les étiquettes, les catégories ou les autorisations d\'accès) pour affiner et contrôler la récupération d\'informations pertinentes au sein d\'un système.', - }, - queryText: 'Texte de la requête', - queryAttachment: 'Images de requête', - }, - http: { - inputVars: 'Variables de saisie', - api: 'API', - apiPlaceholder: 'Entrez l\'URL, tapez ‘/’ pour insérer une variable', - notStartWithHttp: 'L\'API doit commencer par http:// ou https://', - key: 'Clé', - value: 'Valeur', - bulkEdit: 'Édition en masse', - keyValueEdit: 'Édition clé-valeur', - headers: 'En-têtes', - params: 'Paramètres', - body: 'Corps', - outputVars: { - body: 'Contenu de la réponse', - statusCode: 'Code de statut de la réponse', - headers: 'Liste des en-têtes de réponse JSON', - files: 'Liste des fichiers', - }, - authorization: { - 'authorization': 'Autorisation', - 'authorizationType': 'Type d\'autorisation', - 'no-auth': 'Aucune', - 'api-key': 'Clé API', - 'auth-type': 'Type d\'authentification', - 'basic': 'De base', - 'bearer': 'Bearer', - 'custom': 'Personnalisé', - 'api-key-title': 'Clé API', - 'header': 'En-tête', - }, - insertVarPlaceholder: 'tapez \'/\' pour insérer une variable', - timeout: { - title: 'Délai d\'expiration', - connectLabel: 'Délai de connexion', - connectPlaceholder: 'Entrez le délai de connexion en secondes', - readLabel: 'Délai de lecture', - readPlaceholder: 'Entrez le délai de lecture en secondes', - writeLabel: 'Délai d\'écriture', - writePlaceholder: 'Entrez le délai d\'écriture en secondes', - }, - binaryFileVariable: 'Variable de fichier binaire', - type: 'Type', - extractListPlaceholder: 'Entrez l’index de l’élément de liste, tapez \'/\' insérer la variable', - curl: { - placeholder: 'Collez la chaîne cURL ici', - title: 'Importer à partir de cURL', - }, - verifySSL: { - title: 'Vérifier le certificat SSL', - warningTooltip: 'Désactiver la vérification SSL n\'est pas recommandé pour les environnements de production. Cela ne devrait être utilisé que dans le développement ou les tests, car cela rend la connexion vulnérable aux menaces de sécurité telles que les attaques de type \'man-in-the-middle\'.', - }, - }, - code: { - inputVars: 'Variables de saisie', - outputVars: 'Variables de sortie', - advancedDependencies: 'Dépendances avancées', - advancedDependenciesTip: 'Ajoutez quelques dépendances préchargées qui prennent plus de temps à consommer ou ne sont pas par défaut ici', - searchDependencies: 'Rechercher des dépendances', - syncFunctionSignature: 'Synchroniser la signature de fonction avec le code', - }, - templateTransform: { - inputVars: 'Variables de saisie', - code: 'Code', - codeSupportTip: 'Prend en charge uniquement Jinja2', - outputVars: { - output: 'Contenu transformé', - }, - }, - ifElse: { - if: 'Si', - else: 'Sinon', - elseDescription: 'Utilisé pour définir la logique à exécuter lorsque la condition if n\'est pas remplie.', - and: 'et', - or: 'ou', - operator: 'Opérateur', - notSetVariable: 'Veuillez d\'abord définir la variable', - comparisonOperator: { - 'contains': 'contient', - 'not contains': 'ne contient pas', - 'start with': 'commence par', - 'end with': 'se termine par', - 'is': 'est', - 'is not': 'n\'est pas', - 'empty': 'est vide', - 'not empty': 'n\'est pas vide', - 'null': 'est nul', - 'not null': 'n\'est pas nul', - 'in': 'dans', - 'not in': 'pas dans', - 'exists': 'Existe', - 'all of': 'l’ensemble des', - 'not exists': 'n’existe pas', - 'before': 'avant', - 'after': 'après', - }, - enterValue: 'Entrez la valeur', - addCondition: 'Ajouter une condition', - conditionNotSetup: 'Condition NON configurée', - selectVariable: 'Sélectionner une variable...', - optionName: { - video: 'Vidéo', - image: 'Image', - audio: 'Audio', - doc: 'Médecin', - localUpload: 'Téléchargement local', - url: 'URL', - }, - select: 'Choisir', - addSubVariable: 'Sous-variable', - }, - variableAssigner: { - title: 'Attribuer des variables', - outputType: 'Type de sortie', - varNotSet: 'Variable non définie', - noVarTip: 'Ajoutez les variables à attribuer', - type: { - string: 'Chaîne', - number: 'Nombre', - object: 'Objet', - array: 'Tableau', - }, - aggregationGroup: 'Groupe d\'agrégation', - aggregationGroupTip: 'L\'activation de cette fonctionnalité permet à l\'agrégateur de variables d\'agréger plusieurs ensembles de variables.', - addGroup: 'Ajouter un groupe', - outputVars: { - varDescribe: 'Sortie {{groupName}}', - }, - setAssignVariable: 'Définir la variable à attribuer', - }, - assigner: { - 'assignedVariable': 'Variable Assignée', - 'writeMode': 'Mode d\'Écriture', - 'writeModeTip': 'Lorsque la VARIABLE ASSIGNÉE est un tableau, le mode d\'ajout ajoute à la fin.', - 'over-write': 'Écraser', - 'append': 'Ajouter', - 'plus': 'Plus', - 'clear': 'Effacer', - 'setVariable': 'Définir Variable', - 'variable': 'Variable', - 'operations': { - 'clear': 'Clair', - '*=': '*=', - '-=': '-=', - 'extend': 'Étendre', - '+=': '+=', - 'over-write': 'Écraser', - 'set': 'Poser', - 'append': 'Ajouter', - 'title': 'Opération', - '/=': '/=', - 'overwrite': 'Écraser', - 'remove-last': 'Supprimer le dernier', - 'remove-first': 'Retirer le premier', - }, - 'assignedVarsDescription': 'Les variables affectées doivent être accessibles en écriture, telles que des variables de conversation.', - 'noVarTip': 'Cliquez sur le bouton « + » pour ajouter des variables', - 'variables': 'Variables', - 'setParameter': 'Définir le paramètre...', - 'noAssignedVars': 'Aucune variable affectée disponible', - 'varNotSet': 'Variable NON définie', - 'selectAssignedVariable': 'Sélectionner la variable affectée...', - }, - tool: { - inputVars: 'Variables de saisie', - outputVars: { - text: 'contenu généré par l\'outil', - files: { - title: 'fichiers générés par l\'outil', - type: 'Type de support. Actuellement ne prend en charge que l\'image', - transfer_method: 'Méthode de transfert. La valeur est remote_url ou local_file', - url: 'URL de l\'image', - upload_file_id: 'ID du fichier téléchargé', - }, - json: 'JSON généré par un outil', - }, - authorize: 'Autoriser', - insertPlaceholder2: 'insérer une variable', - settings: 'Paramètres', - insertPlaceholder1: 'Tapez ou appuyez', - }, - questionClassifiers: { - model: 'modèle', - inputVars: 'Variables de saisie', - outputVars: { - className: 'Nom de la classe', - usage: 'Informations sur l\'utilisation du modèle', - }, - class: 'Classe', - classNamePlaceholder: 'Écrivez le nom de votre classe', - advancedSetting: 'Paramètre avancé', - topicName: 'Nom du sujet', - topicPlaceholder: 'Écrivez le nom de votre sujet', - addClass: 'Ajouter une classe', - instruction: 'Instruction', - instructionTip: 'Entrez des instructions supplémentaires pour aider le classificateur de questions à mieux comprendre comment catégoriser les questions.', - instructionPlaceholder: 'Écrivez votre instruction', - }, - parameterExtractor: { - inputVar: 'Variable de saisie', - outputVars: { - isSuccess: 'Est réussi. En cas de succès, la valeur est 1, en cas d\'échec, la valeur est 0.', - errorReason: 'Raison de l\'erreur', - usage: 'Informations sur l\'utilisation du modèle', - }, - extractParameters: 'Extraire des paramètres', - importFromTool: 'Importer des outils', - addExtractParameter: 'Ajouter un paramètre d\'extraction', - addExtractParameterContent: { - name: 'Nom', - namePlaceholder: 'Nom du paramètre d\'extraction', - type: 'Type', - typePlaceholder: 'Type de paramètre d\'extraction', - description: 'Description', - descriptionPlaceholder: 'Description du paramètre d\'extraction', - required: 'Requis', - requiredContent: 'Requis est utilisé uniquement comme référence pour l\'inférence du modèle, et non pour la validation obligatoire de la sortiedu paramètre.', - }, - extractParametersNotSet: 'Paramètres d\'extraction non configurés', - instruction: 'Instruction', - instructionTip: 'Entrez des instructions supplémentaires pour aider l\'extracteur de paramètres à comprendre comment extraire les paramètres.', - advancedSetting: 'Paramètre avancé', - reasoningMode: 'Mode de raisonnement', - reasoningModeTip: 'Vous pouvez choisir le mode de raisonnement approprié en fonction de la capacité du modèle à répondre aux instructions pour les appels de fonction ou les invites.', - }, - iteration: { - deleteTitle: 'Supprimer le nœud d\'itération?', - deleteDesc: 'La suppression du nœud d\'itération supprimera tous les nœuds enfants', - input: 'Entrée', - output: 'Variables de sortie', - iteration_one: '{{count}} Itération', - iteration_other: '{{count}} Itérations', - currentIteration: 'Itération actuelle', - ErrorMethod: { - operationTerminated: 'Terminé', - removeAbnormalOutput: 'remove-abnormal-output', - continueOnError: 'continuer sur l’erreur', - }, - comma: ',', - error_one: '{{count}} Erreur', - error_other: '{{count}} Erreurs', - parallelModeEnableDesc: 'En mode parallèle, les tâches au sein des itérations prennent en charge l’exécution parallèle. Vous pouvez le configurer dans le panneau des propriétés à droite.', - parallelModeUpper: 'MODE PARALLÈLE', - parallelPanelDesc: 'En mode parallèle, les tâches de l’itération prennent en charge l’exécution parallèle.', - MaxParallelismDesc: 'Le parallélisme maximal est utilisé pour contrôler le nombre de tâches exécutées simultanément en une seule itération.', - errorResponseMethod: 'Méthode de réponse aux erreurs', - MaxParallelismTitle: 'Parallélisme maximal', - answerNodeWarningDesc: 'Avertissement en mode parallèle : les nœuds de réponse, les affectations de variables de conversation et les opérations de lecture/écriture persistantes au sein des itérations peuvent provoquer des exceptions.', - parallelModeEnableTitle: 'Mode parallèle activé', - parallelMode: 'Mode parallèle', - flattenOutput: 'Aplatir la sortie', - flattenOutputDesc: 'Lorsqu\'il est activé, si toutes les sorties d\'itération sont des tableaux, elles seront aplaties en un seul tableau. Lorsqu\'il est désactivé, les sorties conserveront une structure de tableau imbriqué.', - }, - note: { - addNote: 'Ajouter note', - editor: { - placeholder: 'Redigez votre note...', - small: 'Petit', - medium: 'Moyen', - large: 'Grand', - bold: 'Gras', - italic: 'Italique', - strikethrough: 'Barré', - link: 'Lien', - openLink: 'Ouvrir', - unlink: 'Annuler le lien', - enterUrl: 'Entrer l\'URL...', - invalidUrl: 'URL invalide', - bulletList: 'Liste à puces', - showAuthor: 'Afficher l\'auteur', - }, - }, - docExtractor: { - outputVars: { - text: 'Texte extrait', - }, - learnMore: 'Pour en savoir plus', - inputVar: 'Variable d’entrée', - supportFileTypes: 'Types de fichiers de support : {{types}}.', - }, - listFilter: { - outputVars: { - result: 'Filtrer le résultat', - last_record: 'Dernier enregistrement', - first_record: 'Premier enregistrement', - }, - filterCondition: 'État du filtre', - asc: 'L’ASC', - inputVar: 'Variable d’entrée', - filterConditionComparisonValue: 'Valeur de la condition de filtre', - desc: 'DESC', - filterConditionComparisonOperator: 'Opérateur de comparaison de l’état des filtres', - selectVariableKeyPlaceholder: 'Sélectionner la clé de sous-variable', - limit: 'Haut N', - orderBy: 'Trier par', - filterConditionKey: 'Clé de condition de filtre', - extractsCondition: 'Extraire l’élément N', - }, - agent: { - strategy: { - configureTip: 'Veuillez configurer la stratégie agentique.', - tooltip: 'Différentes stratégies agentiques déterminent la façon dont le système planifie et exécute les appels d’outils en plusieurs étapes', - shortLabel: 'Stratégie', - selectTip: 'Sélectionner la stratégie agentique', - configureTipDesc: 'Après avoir configuré la stratégie agentique, ce nœud chargera automatiquement les configurations restantes. La stratégie affectera le mécanisme du raisonnement à l’outil en plusieurs étapes.', - searchPlaceholder: 'Stratégie de recherche agentique', - label: 'Stratégie agentique', - }, - pluginInstaller: { - installing: 'Installation', - install: 'Installer', - }, - modelNotInMarketplace: { - manageInPlugins: 'Gérer dans les plugins', - desc: 'Ce modèle est installé à partir d’un référentiel local ou GitHub. Veuillez utiliser après l’installation.', - title: 'Modèle non installé', - }, - modelNotSupport: { - title: 'Modèle non pris en charge', - desc: 'La version du plugin installée ne fournit pas ce modèle.', - descForVersionSwitch: 'La version du plugin installée ne fournit pas ce modèle. Cliquez pour changer de version.', - }, - modelSelectorTooltips: { - deprecated: 'Ce modèle est obsolète', - }, - outputVars: { - files: { - title: 'Fichiers générés par l’agent', - url: 'URL de l’image', - transfer_method: 'Méthode de transfert. La valeur est remote_url ou local_file', - type: 'Type de support. Maintenant, seulement l’image de support', - upload_file_id: 'Télécharger l’identifiant du fichier', - }, - json: 'JSON généré par l’agent', - text: 'Contenu généré par l’agent', - usage: 'Informations sur l’utilisation du modèle', - }, - checkList: { - strategyNotSelected: 'Stratégie non sélectionnée', - }, - installPlugin: { - title: 'Installer le plugin', - install: 'Installer', - changelog: 'Journal des modifications', - cancel: 'Annuler', - desc: 'Sur le point d’installer le plugin suivant', - }, - modelNotSelected: 'Modèle non sélectionné', - configureModel: 'Configurer le modèle', - pluginNotFoundDesc: 'Ce plugin est installé à partir de GitHub. Veuillez aller dans Plugins pour réinstaller', - strategyNotSet: 'Stratégie agentique non définie', - unsupportedStrategy: 'Stratégie non soutenue', - linkToPlugin: 'Lien vers les plugins', - toolNotInstallTooltip: '{{tool}} n’est pas installé', - model: 'modèle', - learnMore: 'Pour en savoir plus', - pluginNotInstalled: 'Ce plugin n’est pas installé', - modelNotInstallTooltip: 'Ce modèle n’est pas installé', - tools: 'Outils', - notAuthorized: 'Non autorisé', - strategyNotInstallTooltip: '{{strategy}} n’est pas installé', - strategyNotFoundDesc: 'La version du plugin installée ne fournit pas cette stratégie.', - strategyNotFoundDescAndSwitchVersion: 'La version du plugin installée ne fournit pas cette stratégie. Cliquez pour changer de version.', - toolbox: 'boîte à outils', - pluginNotInstalledDesc: 'Ce plugin est installé à partir de GitHub. Veuillez aller dans Plugins pour réinstaller', - maxIterations: 'Nombre maximal d’itérations', - toolNotAuthorizedTooltip: '{{outil}} Non autorisé', - clickToViewParameterSchema: 'Cliquez pour voir le schéma des paramètres', - parameterSchema: 'Schéma de Paramètres', - }, - loop: { - ErrorMethod: { - operationTerminated: 'Terminé', - removeAbnormalOutput: 'Supprimer la sortie anormale', - continueOnError: 'Continuer en cas d\'erreur', - }, - currentLoop: 'Boucle de courant', - loopMaxCount: 'Nombre maximum de boucles', - loop_one: '{{count}} Boucle', - output: 'Variable de sortie', - error_other: '{{count}} erreurs', - loopMaxCountError: 'Veuillez entrer un nombre maximal de boucles valide, compris entre 1 et {{maxCount}}.', - totalLoopCount: 'Nombre total de boucles : {{count}}', - initialLoopVariables: 'Variables de boucle initiales', - breakCondition: 'Condition de terminaison de boucle', - variableName: 'Nom de Variable', - finalLoopVariables: 'Variables de boucle finales', - inputMode: 'Mode d\'entrée', - setLoopVariables: 'Définir des variables dans la portée de la boucle', - loop_other: '{{count}} Boucles', - comma: ',', - loopNode: 'Nœud de boucle', - error_one: '{{count}} Erreur', - errorResponseMethod: 'Méthode de réponse d\'erreur', - input: 'Entrée', - currentLoopCount: 'Nombre de boucles actuel : {{count}}', - deleteDesc: 'Supprimer le nœud de boucle supprimera tous les nœuds enfants.', - exitConditionTip: 'Un nœud de boucle nécessite au moins une condition de sortie', - breakConditionTip: 'Seules les variables dans les boucles avec des conditions de terminaison et les variables de conversation peuvent être référencées.', - loopVariables: 'Variables de boucle', - deleteTitle: 'Supprimer le nœud de boucle ?', - }, - dataSource: { - supportedFileFormatsPlaceholder: 'Extension de fichier, e.g. doc', - add: 'Ajouter une source de données', - supportedFileFormats: 'Formats de fichiers pris en charge', - }, - knowledgeBase: { - chunkStructureTip: { - learnMore: 'Pour en savoir plus', - title: 'Veuillez choisir une structure de morceaux', - message: 'La base de connaissances Dify prend en charge trois structures de segmentation : Général, Parent-enfant et Q&R. Chaque base de connaissances ne peut avoir qu’une seule structure. La sortie du nœud précédent doit s’aligner sur la structure de blocs sélectionnée. Notez que le choix de la structure de segmentation affecte les méthodes d’index disponibles.', - }, - chunkStructure: 'Structure de morceaux', - chunkIsRequired: 'Une structure de morceaux est requise', - chooseChunkStructure: 'Choisir une structure de blocs', - aboutRetrieval: 'À propos de la méthode de récupération.', - changeChunkStructure: 'Modifier la structure des morceaux', - indexMethodIsRequired: 'La méthode d’indexation est requise', - retrievalSettingIsRequired: 'Le paramètre de récupération est requis', - chunksInput: 'Morceaux', - chunksInputTip: 'La variable d\'entrée du nœud de la base de connaissances est Chunks. Le type de variable est un objet avec un schéma JSON spécifique qui doit être cohérent avec la structure de morceau sélectionnée.', - rerankingModelIsRequired: 'Un modèle de rerankage est requis', - embeddingModelIsRequired: 'Un modèle d\'intégration est requis', - chunksVariableIsRequired: 'La variable Chunks est requise', - rerankingModelIsInvalid: 'Le modèle de rerank est invalide', - embeddingModelIsInvalid: 'Le modèle d\'intégration est invalide', - }, - triggerPlugin: { - authorized: 'autorisé', - notConfigured: 'Non configuré', - notAuthorized: 'Non autorisé', - selectSubscription: 'Sélectionner un abonnement', - availableSubscriptions: 'Abonnements disponibles', - addSubscription: 'Ajouter un nouvel abonnement', - removeSubscription: 'Supprimer l\'abonnement', - subscriptionRemoved: 'Abonnement supprimé avec succès', - error: 'Erreur', - configuration: 'Configuration', - remove: 'Supprimer', - or: 'OU', - useOAuth: 'Utiliser OAuth', - useApiKey: 'Utiliser la clé API', - authenticationFailed: 'Échec de l\'authentification', - authenticationSuccess: 'Authentification réussie', - oauthConfigFailed: 'Échec de la configuration OAuth', - configureOAuthClient: 'Configurer le client OAuth', - oauthClientDescription: 'Configurez les identifiants du client OAuth pour activer l\'authentification', - oauthClientSaved: 'Configuration du client OAuth enregistrée avec succès', - configureApiKey: 'Configurer la clé API', - apiKeyDescription: 'Configurer les identifiants de clé API pour l\'authentification', - apiKeyConfigured: 'Clé API configurée avec succès', - configurationFailed: 'Échec de la configuration', - failedToStart: 'Échec du démarrage du processus d\'authentification', - credentialsVerified: 'Identifiants vérifiés avec succès', - credentialVerificationFailed: 'Échec de la vérification des identifiants', - verifyAndContinue: 'Vérifier et continuer', - configureParameters: 'Configurer les paramètres', - parametersDescription: 'Configurer les paramètres et les propriétés du déclencheur', - configurationComplete: 'Configuration terminée', - configurationCompleteDescription: 'Votre déclencheur a été configuré avec succès', - configurationCompleteMessage: 'La configuration de votre déclencheur est maintenant complète et prête à l\'emploi.', - parameters: 'Paramètres', - properties: 'Propriétés', - propertiesDescription: 'Propriétés de configuration supplémentaires pour ce déclencheur', - noConfigurationRequired: 'Aucune configuration supplémentaire n\'est requise pour ce déclencheur.', - subscriptionName: 'Nom de l\'abonnement', - subscriptionNameDescription: 'Entrez un nom unique pour cet abonnement de déclencheur', - subscriptionNamePlaceholder: 'Entrez le nom de l\'abonnement...', - subscriptionNameRequired: 'Le nom de l\'abonnement est requis', - subscriptionRequired: 'L\'abonnement est requis', - }, - triggerSchedule: { - title: 'Programme', - nodeTitle: 'Déclencheur de programmation', - notConfigured: 'Non configuré', - useCronExpression: 'Utiliser une expression cron', - useVisualPicker: 'Utiliser le sélecteur visuel', - frequency: { - label: 'FRÉQUENCE', - hourly: 'Horaire', - daily: 'Quotidien', - weekly: 'Hebdomadaire', - monthly: 'mensuel', - }, - selectFrequency: 'Sélectionner la fréquence', - frequencyLabel: 'Fréquence', - nextExecution: 'Prochaine exécution', - weekdays: 'Jours de la semaine', - time: 'Temps', - cronExpression: 'Expression Cron', - nextExecutionTime: 'PROCHAINE HEURE D\'EXÉCUTION', - nextExecutionTimes: 'Prochaines 5 exécutions', - startTime: 'Heure de début', - executeNow: 'Exécution maintenant', - selectDateTime: 'Sélectionner la date et l\'heure', - hours: 'Heures', - minutes: 'Minutes', - onMinute: 'Une minute', - days: 'Jours', - lastDay: 'Dernier jour', - lastDayTooltip: 'Tous les mois n\'ont pas 31 jours. Utilisez l\'option « dernier jour » pour sélectionner le dernier jour de chaque mois.', - mode: 'Mode', - timezone: 'Fuseau horaire', - visualConfig: 'Configuration visuelle', - monthlyDay: 'Jour mensuel', - executionTime: 'Temps d\'exécution', - invalidTimezone: 'Fuseau horaire invalide', - invalidCronExpression: 'Expression cron invalide', - noValidExecutionTime: 'Aucun temps d\'exécution valide ne peut être calculé', - executionTimeCalculationError: 'Échec du calcul des temps d\'exécution', - invalidFrequency: 'Fréquence invalide', - invalidStartTime: 'Heure de début invalide', - startTimeMustBeFuture: 'L\'heure de début doit être dans le futur', - invalidTimeFormat: 'Format d\'heure invalide (attendu HH:MM AM/PM)', - invalidWeekday: 'Jour de la semaine invalide : {{weekday}}', - invalidMonthlyDay: 'Le jour du mois doit être compris entre 1 et 31 ou "dernier"', - invalidOnMinute: 'Une minute doit être comprise entre 0 et 59', - invalidExecutionTime: 'Heure d\'exécution invalide', - executionTimeMustBeFuture: 'Le délai d\'exécution doit être dans le futur', - }, - triggerWebhook: { - title: 'Déclencheur Webhook', - nodeTitle: '🔗 Déclencheur Webhook', - configPlaceholder: 'La configuration du déclencheur webhook sera implémentée ici', - webhookUrl: 'URL du webhook', - webhookUrlPlaceholder: 'Cliquez sur générer pour créer l\'URL du webhook', - generate: 'Générer', - copy: 'Copier', - test: 'Test', - urlGenerated: 'URL du webhook générée avec succès', - urlGenerationFailed: 'Échec de la génération de l’URL du webhook', - urlCopied: 'URL copiée dans le presse-papiers', - method: 'Méthode', - contentType: 'Type de contenu', - queryParameters: 'Paramètres de requête', - headerParameters: 'Paramètres d\'en-tête', - requestBodyParameters: 'Paramètres du corps de la requête', - parameterName: 'Nom de variable', - varName: 'Nom de variable', - varType: 'Type', - varNamePlaceholder: 'Entrez le nom de la variable...', - required: 'Requis', - addParameter: 'Ajouter', - addHeader: 'Ajouter', - noParameters: 'Aucun paramètre configuré', - noQueryParameters: 'Aucun paramètre de requête configuré', - noHeaders: 'Aucun en-tête configuré', - noBodyParameters: 'Aucun paramètre de corps configuré', - debugUrlTitle: 'Pour les tests, utilisez toujours cette URL', - debugUrlCopy: 'Cliquez pour copier', - debugUrlCopied: 'Copié !', - debugUrlPrivateAddressWarning: 'Cette URL semble être une adresse interne, ce qui peut provoquer l\'échec des requêtes webhook. Vous pouvez changer TRIGGER_URL pour une adresse publique.', - errorHandling: 'Gestion des erreurs', - errorStrategy: 'Gestion des erreurs', - responseConfiguration: 'Réponse', - asyncMode: 'Mode asynchrone', - statusCode: 'Code d\'état', - responseBody: 'Corps de la réponse', - responseBodyPlaceholder: 'Écrivez ici le corps de votre réponse', - headers: 'En-têtes', - validation: { - webhookUrlRequired: 'L\'URL du webhook est requise', - invalidParameterType: 'Type de paramètre invalide "{{type}}" pour le paramètre "{{name}}"', - }, - }, - }, - tracing: { - stopBy: 'Arrêté par {{user}}', - }, - variableReference: { - noAssignedVars: 'Aucune variable affectée disponible', - noVarsForOperation: 'Aucune variable n’est disponible pour l’affectation avec l’opération sélectionnée.', - noAvailableVars: 'Aucune variable disponible', - assignedVarsDescription: 'Les variables affectées doivent être des variables accessibles en écriture, telles que', - conversationVars: 'Variables de conversation', - }, - versionHistory: { - filter: { - all: 'Tout', - reset: 'Réinitialiser le filtre', - onlyYours: 'Rien que le tien', - empty: 'Aucune version correspondante trouvée', - onlyShowNamedVersions: 'Afficher uniquement les versions nommées', - }, - editField: { - releaseNotesLengthLimit: 'Les notes de version ne peuvent pas dépasser {{limit}} caractères.', - title: 'Titre', - titleLengthLimit: 'Le titre ne peut pas dépasser {{limit}} caractères.', - releaseNotes: 'Notes de version', - }, - action: { - updateSuccess: 'Version mise à jour', - deleteFailure: 'Échec de la suppression de la version', - restoreSuccess: 'Version restaurée', - deleteSuccess: 'Version supprimée', - updateFailure: 'Échec de la mise à jour de la version', - restoreFailure: 'Échec de la restauration de la version', - copyIdSuccess: 'ID copié dans le presse-papiers', - }, - title: 'Versions', - releaseNotesPlaceholder: 'Décrivez ce qui a changé', - nameThisVersion: 'Nommez cette version', - currentDraft: 'Projet actuel', - defaultName: 'Version sans titre', - editVersionInfo: 'Modifier les informations de version', - restorationTip: 'Après la restauration de la version, le brouillon actuel sera écrasé.', - deletionTip: 'La suppression est irreversible, veuillez confirmer.', - latest: 'Dernier', - copyId: 'Copier l’ID', - }, - debug: { - noData: { - description: 'Les résultats de la dernière exécution seront affichés ici', - runThisNode: 'Exécutez ce nœud', - }, - variableInspect: { - trigger: { - clear: 'Clair', - cached: 'Afficher les variables mises en cache', - running: 'État d\'exécution du cache', - stop: 'Arrête de courir', - normal: 'Inspection de Variable', - }, - title: 'Inspection de Variable', - clearAll: 'Réinitialiser tout', - envNode: 'Environnement', - clearNode: 'Effacer la variable mise en cache', - view: 'Voir le journal', - systemNode: 'Système', - reset: 'Réinitialiser à la dernière valeur d\'exécution', - chatNode: 'Conversation', - emptyLink: 'En savoir plus', - edited: 'Édité', - resetConversationVar: 'Réinitialiser la variable de conversation à la valeur par défaut', - emptyTip: 'Après avoir dessiné un nœud sur le canevas ou exécuté un nœud étape par étape, vous pouvez voir la valeur actuelle de la variable du nœud dans l\'Inspecteur de Variables.', - export: 'exportation', - exportToolTip: 'Exporter la variable en tant que fichier', - largeData: 'Données volumineuses, aperçu en lecture seule. Exporter pour tout afficher.', - largeDataNoExport: 'Données volumineuses - aperçu partiel uniquement', - listening: { - title: 'En attente d\'événements provenant des déclencheurs...', - tip: 'Vous pouvez maintenant simuler des déclencheurs d\'événements en envoyant des requêtes de test au point de terminaison HTTP {{nodeName}} ou l\'utiliser comme URL de rappel pour le débogage en direct des événements. Toutes les sorties peuvent être consultées directement dans l\'Inspecteur de Variables.', - tipPlugin: 'Vous pouvez maintenant créer des événements dans {{- pluginName}} et récupérer les résultats de ces événements dans l\'Inspecteur de Variables.', - tipSchedule: 'Écoute des événements des déclencheurs de planification.\nProchaine exécution planifiée : {{nextTriggerTime}}', - tipFallback: 'Attendez les événements de déclenchement entrants. Les sorties apparaîtront ici.', - defaultNodeName: 'ce déclencheur', - defaultPluginName: 'ce plugin déclenche', - defaultScheduleTime: 'Non configuré', - selectedTriggers: 'déclencheurs sélectionnés', - stopButton: 'Arrête', - }, - }, - settingsTab: 'Paramètres', - lastRunTab: 'Dernière Exécution', - relations: { - dependencies: 'Dépendances', - dependentsDescription: 'Nœuds qui s’appuient sur ce nœud', - noDependents: 'Pas de personnes à charge', - dependents: 'Dépendants', - noDependencies: 'Aucune dépendance', - dependenciesDescription: 'Nœuds sur lesquels repose ce nœud', - }, - relationsTab: 'Relations', - copyLastRun: 'Copier la dernière exécution', - noLastRunFound: 'Aucune exécution précédente trouvée', - noMatchingInputsFound: 'Aucune entrée correspondante trouvée dans la dernière exécution.', - copyLastRunError: 'Échec de la copie des entrées de la dernière exécution', - lastOutput: 'Dernière sortie', - lastRunInputsCopied: '{{count}} entrée(s) copiée(s) de la dernière exécution', - }, - sidebar: { - exportWarning: 'Exporter la version enregistrée actuelle', - exportWarningDesc: 'Cela exportera la version actuelle enregistrée de votre flux de travail. Si vous avez des modifications non enregistrées dans l\'éditeur, veuillez d\'abord les enregistrer en utilisant l\'option d\'exportation dans le canevas du flux de travail.', - }, - publishLimit: { - startNodeTitlePrefix: 'Mettre à niveau vers', - startNodeTitleSuffix: 'débloquez des déclencheurs illimités par flux de travail', - startNodeDesc: 'Vous avez atteint la limite de 2 déclencheurs par flux de travail pour ce plan. Passez à une version supérieure pour publier ce flux de travail.', - }, - error: { - startNodeRequired: 'Veuillez d\'abord ajouter un nœud de départ avant {{operation}}', - operations: { - connectingNodes: 'connecter des nœuds', - addingNodes: 'ajout de nœuds', - modifyingWorkflow: 'modification du flux de travail', - updatingWorkflow: 'mise à jour du flux de travail', - }, - }, - customWebhook: 'Webhook personnalisé', - difyTeam: 'Équipe Dify', - triggerStatus: { - enabled: 'DÉCLENCHEUR', - disabled: 'DÉCLENCHEUR • DÉSACTIVÉ', - }, - entryNodeStatus: { - enabled: 'DÉMARRER', - disabled: 'DÉMARRER • DÉSACTIVÉ', - }, - onboarding: { - title: 'Sélectionnez un nœud de départ pour commencer', - description: 'Différents nœuds de départ ont différentes capacités. Ne vous inquiétez pas, vous pouvez toujours les changer plus tard.', - userInputFull: 'Entrée utilisateur (nœud de départ original)', - userInputDescription: 'Nœud de démarrage qui permet de définir des variables de saisie utilisateur, avec comme capacités d\'outil l\'application web, l\'API de service, le serveur MCP et le workflow.', - trigger: 'Déclencheur', - triggerDescription: 'Les déclencheurs peuvent servir de nœud de départ d\'un flux de travail, comme les tâches planifiées, les webhooks personnalisés ou les intégrations avec d\'autres applications.', - back: 'Retour', - learnMore: 'En savoir plus', - aboutStartNode: 'à propos du nœud de départ.', - escTip: { - press: 'Appuyer', - key: 'Échap', - toDismiss: 'rejeter', - }, - }, -} - -export default translation diff --git a/web/i18n/hi-IN/app-annotation.json b/web/i18n/hi-IN/app-annotation.json new file mode 100644 index 0000000000..04b5954fc5 --- /dev/null +++ b/web/i18n/hi-IN/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "एनोटेशन", + "name": "एनोटेशन उत्तर", + "editBy": "उत्तर संपादित किया गया {{author}} द्वारा", + "noData": { + "title": "कोई एनोटेशन नहीं", + "description": "आप ऐप डिबगिंग के दौरान एनोटेशन संपादित कर सकते हैं या उच्च गुणवत्ता वाले उत्तर के लिए यहां बल्क में एनोटेशन आयात कर सकते हैं।" + }, + "table": { + "header": { + "question": "प्रश्न", + "answer": "उत्तर", + "createdAt": "निर्माण तिथि", + "hits": "हिट्स", + "actions": "क्रियाएँ", + "addAnnotation": "एनोटेशन जोड़ें", + "bulkImport": "बल्क आयात", + "bulkExport": "बल्क निर्यात", + "clearAll": "सभी एनोटेशन साफ करें", + "clearAllConfirm": "क्या सभी टिप्पणियाँ हटानी हैं?" + } + }, + "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": "एनोटेशन टेक्स्ट वेक्टराइजेशन मॉडल, मॉडल बदलने से पुनः एम्बेड किया जाएगा, जिससे अतिरिक्त लागतें उत्पन्न होंगी।", + "list": { + "delete": { + "title": "क्या आप सुनिश्चित हैं कि हटाएं?" + } + }, + "batchAction": { + "selected": "चुना हुआ", + "delete": "हटाएँ", + "cancel": "रद्द करें" + } +} diff --git a/web/i18n/hi-IN/app-annotation.ts b/web/i18n/hi-IN/app-annotation.ts deleted file mode 100644 index 51eb14cc55..0000000000 --- a/web/i18n/hi-IN/app-annotation.ts +++ /dev/null @@ -1,98 +0,0 @@ -const translation = { - title: 'एनोटेशन', - name: 'एनोटेशन उत्तर', - editBy: 'उत्तर संपादित किया गया {{author}} द्वारा', - noData: { - title: 'कोई एनोटेशन नहीं', - description: 'आप ऐप डिबगिंग के दौरान एनोटेशन संपादित कर सकते हैं या उच्च गुणवत्ता वाले उत्तर के लिए यहां बल्क में एनोटेशन आयात कर सकते हैं।', - }, - table: { - header: { - question: 'प्रश्न', - answer: 'उत्तर', - createdAt: 'निर्माण तिथि', - hits: 'हिट्स', - actions: 'क्रियाएँ', - addAnnotation: 'एनोटेशन जोड़ें', - bulkImport: 'बल्क आयात', - bulkExport: 'बल्क निर्यात', - clearAll: 'सभी एनोटेशन साफ करें', - clearAllConfirm: 'क्या सभी टिप्पणियाँ हटानी हैं?', - }, - }, - 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: 'एनोटेशन टेक्स्ट वेक्टराइजेशन मॉडल, मॉडल बदलने से पुनः एम्बेड किया जाएगा, जिससे अतिरिक्त लागतें उत्पन्न होंगी।', - list: { - delete: { - title: 'क्या आप सुनिश्चित हैं कि हटाएं?', - }, - }, - batchAction: { - selected: 'चुना हुआ', - delete: 'हटाएँ', - cancel: 'रद्द करें', - }, -} - -export default translation diff --git a/web/i18n/hi-IN/app-api.json b/web/i18n/hi-IN/app-api.json new file mode 100644 index 0000000000..fa1bf58d92 --- /dev/null +++ b/web/i18n/hi-IN/app-api.json @@ -0,0 +1,83 @@ +{ + "apiServer": "एपीआई सर्वर", + "apiKey": "एपीआई कुंजी", + "status": "स्थिति", + "disabled": "अक्षम", + "ok": "सेवा में", + "copy": "प्रतिलिपि", + "copied": "प्रतिलिपि बन गई", + "play": "चलाएं", + "pause": "विराम", + "playing": "चल रहा है", + "loading": "लोड हो रहा है", + "merMaid": { + "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": "प्रश्न", + "toc": "सामग्री" + }, + "regenerate": "पुनर्जन्म" +} diff --git a/web/i18n/hi-IN/app-api.ts b/web/i18n/hi-IN/app-api.ts deleted file mode 100644 index 3473599d47..0000000000 --- a/web/i18n/hi-IN/app-api.ts +++ /dev/null @@ -1,85 +0,0 @@ -const translation = { - apiServer: 'एपीआई सर्वर', - apiKey: 'एपीआई कुंजी', - status: 'स्थिति', - disabled: 'अक्षम', - ok: 'सेवा में', - copy: 'प्रतिलिपि', - copied: 'प्रतिलिपि बन गई', - play: 'चलाएं', - pause: 'विराम', - playing: 'चल रहा है', - loading: 'लोड हो रहा है', - merMaid: { - 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: 'प्रश्न', - toc: 'सामग्री', - }, - regenerate: 'पुनर्जन्म', -} - -export default translation diff --git a/web/i18n/hi-IN/app-debug.json b/web/i18n/hi-IN/app-debug.json new file mode 100644 index 0000000000..1b772bd5fc --- /dev/null +++ b/web/i18n/hi-IN/app-debug.json @@ -0,0 +1,568 @@ +{ + "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": "आप संदर्भ के रूप में ज्ञान आयात कर सकते हैं", + "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": "संवाद इतिहास सक्षम नहीं है, कृपया ऊपर दिए गए प्रॉम्प्ट में जोड़ें।", + "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": "में कॉन्फ़िगर किए गए ओपनएआई एपीआई कुंजी की आवश्यकता होती है।" + } + }, + "contentEnableLabel": "सामग्री मॉडरेशन सक्षम है" + }, + "fileUpload": { + "numberLimit": "मैक्स अपलोड करता है", + "title": "फ़ाइल अपलोड", + "modalTitle": "फ़ाइल अपलोड सेटिंग", + "description": "चैट इनपुट बॉक्स छवियों, दस्तावेजों और अन्य फ़ाइलों को अपलोड करने की अनुमति देता है।", + "supportedTypes": "फ़ाइल प्रकारों का समर्थन करें" + }, + "imageUpload": { + "supportedTypes": "फ़ाइल प्रकारों का समर्थन करें", + "modalTitle": "छवि अपलोड सेटिंग", + "title": "छवि अपलोड", + "description": "छवियों को अपलोड करने की अनुमति दें।", + "numberLimit": "मैक्स अपलोड करता है" + }, + "bar": { + "manage": "प्रबंधित करें", + "enableText": "विशेषताएँ सक्षम हैं", + "empty": "वेब ऐप उपयोगकर्ता अनुभव को बढ़ाने के लिए फ़ीचर सक्षम करें" + }, + "documentUpload": { + "title": "दस्तावेज़", + "description": "डॉक्यूमेंट सक्षम करने से मॉडल को दस्तावेज़ प्राप्त करने और उनके बारे में प्रश्नों का उत्तर देने की अनुमति मिलेगी।" + }, + "audioUpload": { + "title": "ऑडियो", + "description": "ऑडियो सक्षम करने से मॉडल को ऑडियो फ़ाइलों के ट्रांसक्रिप्शन और विश्लेषण के लिए प्रोसेस करने की अनुमति मिलेगी।" + } + }, + "automatic": {}, + "resetConfig": { + "title": "रीसेट की पुष्टि करें?", + "message": "रीसेट परिवर्तनों को त्याग देता है, अंतिम प्रकाशित कॉन्फ़िगरेशन को पुनर्स्थापित करता है।" + }, + "errorMessage": { + "nameOfKeyRequired": "कुंजी का नाम: {{key}} आवश्यक", + "valueOfVarRequired": "{{key}} मूल्य खाली नहीं हो सकता", + "queryRequired": "अनुरोध पाठ आवश्यक है।", + "waitForResponse": "कृपया पिछले संदेश की प्रतिक्रिया पूरी होने तक प्रतीक्षा करें।", + "waitForBatchResponse": "कृपया बैच कार्य की प्रतिक्रिया पूरी होने तक प्रतीक्षा करें।", + "notSelectModel": "कृपया एक मॉडल चुनें", + "waitForImgUpload": "कृपया छवि अपलोड होने तक प्रतीक्षा करें", + "waitForFileUpload": "कृपया फ़ाइल/फ़ाइलें अपलोड होने का इंतज़ार करें" + }, + "chatSubTitle": "निर्देश", + "completionSubTitle": "प्रारंभिक प्रॉम्प्ट", + "promptTip": "प्रॉम्प्ट एआई प्रतिक्रियाओं को निर्देशों और सीमाओं के साथ मार्गदर्शन करता है। {{input}} जैसे वेरिएबल सम्मिलित करें। यह प्रॉम्प्ट उपयोगकर्ताओं को दिखाई नहीं देगा।", + "formattingChangedTitle": "स्वरूपण बदला गया", + "formattingChangedText": "स्वरूपण को संशोधित करने से डिबग क्षेत्र रीसेट हो जाएगा, क्या आप निश्चित हैं?", + "variableTitle": "वेरिएबल्स", + "variableTip": "उपयोगकर्ता वेरिएबल्स को भरते हैं, स्वचालित रूप से प्रॉम्प्ट में वेरिएबल्स को प्रतिस्थापित करते हैं।", + "notSetVar": "वेरिएबल्स उपयोगकर्ताओं को फॉर्म भरते समय प्रॉम्प्ट शब्द या प्रारंभिक टिप्पणी प्रस्तुत करने की अनुमति देते हैं। आप प्रॉम्प्ट शब्दों में '{{input}}' दर्ज करने का प्रयास कर सकते हैं।", + "autoAddVar": "प्रारंभिक प्रॉम्प्ट में निर्दिष्ट वेरिएबल्स अपरिभाषित हैं, क्या आप उन्हें उपयोगकर्ता इनपुट फॉर्म में जोड़ना चाहते हैं?", + "variableTable": { + "key": "वेरिएबल कुंजी", + "name": "उपयोगकर्ता इनपुट फ़ील्ड नाम", + "type": "इनपुट प्रकार", + "action": "क्रियाएँ", + "typeString": "स्ट्रिंग", + "typeSelect": "चुनें" + }, + "varKeyError": { + "canNoBeEmpty": "{{key}} आवश्यक है", + "tooLong": "{{key}} बहुत लंबी है। 30 वर्णों से अधिक नहीं हो सकती", + "notValid": "{{key}} अवैध है। केवल अक्षर, संख्याएं, और अंडरस्कोर शामिल हो सकते हैं", + "notStartWithNumber": "{{key}} एक संख्या से प्रारंभ नहीं हो सकती", + "keyAlreadyExists": "{{key}} पहले से मौजूद है" + }, + "otherError": { + "promptNoBeEmpty": "प्रॉम्प्ट खाली नहीं हो सकता", + "historyNoBeEmpty": "संवाद इतिहास प्रॉम्प्ट में सेट होना चाहिए", + "queryNoBeEmpty": "प्रश्न प्रॉम्प्ट में सेट होना चाहिए" + }, + "variableConfig": { + "addModalTitle": "इनपुट फ़ील्ड जोड़ें", + "editModalTitle": "इनपुट फ़ील्ड संपादित करें", + "description": "वेरिएबल {{varName}} के लिए सेटिंग", + "fieldType": "फ़ील्ड प्रकार", + "string": "छोटा पाठ", + "text-input": "छोटा पाठ", + "paragraph": "अनुच्छेद", + "select": "चुनें", + "number": "संख्या", + "notSet": "सेट नहीं किया गया, प्रारंभिक प्रॉम्प्ट में {{input}} टाइप करने का प्रयास करें", + "stringTitle": "फॉर्म टेक्स्ट बॉक्स विकल्प", + "maxLength": "अधिकतम लंबाई", + "options": "विकल्प", + "addOption": "विकल्प जोड़ें", + "apiBasedVar": "एपीआई-आधारित वेरिएबल", + "varName": "वेरिएबल नाम", + "labelName": "लेबल नाम", + "inputPlaceholder": "कृपया इनपुट करें", + "content": "सामग्री", + "required": "आवश्यक", + "hide": "छुपाएँ", + "errorMsg": { + "labelNameRequired": "लेबल नाम आवश्यक है", + "varNameCanBeRepeat": "वेरिएबल नाम दोहराया नहीं जा सकता", + "atLeastOneOption": "कम से कम एक विकल्प आवश्यक है", + "optionRepeat": "विकल्प दोहराए गए हैं" + }, + "defaultValue": "डिफ़ॉल्ट मान", + "noDefaultValue": "कोई डिफ़ॉल्ट मान नहीं", + "selectDefaultValue": "डिफ़ॉल्ट मान चुनें", + "file": { + "image": { + "name": "छवि" + }, + "audio": { + "name": "ऑडियो" + }, + "document": { + "name": "दस्तावेज़" + }, + "video": { + "name": "वीडियो" + }, + "custom": { + "description": "अन्य फ़ाइल प्रकार निर्दिष्ट करें।", + "name": "अन्य फ़ाइल प्रकार", + "createPlaceholder": "फ़ाइल एक्सटेंशन, जैसे .doc" + }, + "supportFileTypes": "फ़ाइल प्रकारों का समर्थन करें" + }, + "both": "दोनों", + "multi-files": "फ़ाइल सूची", + "single-file": "एकल फ़ाइल", + "maxNumberOfUploads": "अधिकतम अपलोड संख्या", + "uploadFileTypes": "फ़ाइल प्रकार अपलोड करें", + "localUpload": "स्थानीय अपलोड", + "jsonSchema": "JSON स्कीमा", + "optional": "वैकल्पिक", + "json": "JSON कोड", + "checkbox": "चेकबॉक्स", + "unit": "इकाई", + "tooltips": "टूलटिप्स", + "uploadMethod": "अपलोड विधि", + "startChecked": "प्रारंभ की जांच की गई", + "placeholder": "प्लेसहोल्डर", + "startSelectedOption": "चुने हुए विकल्प को शुरू करें", + "showAllSettings": "सभी सेटिंग्स दिखाएँ", + "displayName": "प्रदर्शन नाम", + "noDefaultSelected": "चुनें मत", + "tooltipsPlaceholder": "लेबल पर होवर करते समय दिखाई देने वाला सहायक पाठ दर्ज करें", + "unitPlaceholder": "संख्याओं के बाद इकाइयों को प्रदर्शित करें, जैसे कि टोकन", + "placeholderPlaceholder": "जब फ़ील्ड खाली हो तो दिखाने के लिए पाठ दर्ज करें", + "defaultValuePlaceholder": "फ़ील्ड को पूर्व-जनित करने के लिए डिफ़ॉल्ट मान दर्ज करें", + "maxNumberTip": "दस्तावेज़ < {{docLimit}}, छवि < {{imgLimit}}, ऑडियो < {{audioLimit}}, वीडियो < {{videoLimit}}" + }, + "vision": { + "name": "विजन", + "description": "विजन सक्षम करने से मॉडल को छवियों को लेने और उनके बारे में प्रश्नों का उत्तर देने की अनुमति मिलेगी।", + "settings": "सेटिंग्स", + "visionSettings": { + "title": "विजन सेटिंग्स", + "resolution": "रेज़ोल्यूशन", + "resolutionTooltip": "कम रेज़ोल्यूशन मॉडल को 512 x 512 पिक्सेल की कम-रेज़ोल्यूशन छवि प्राप्त करने की अनुमति देगा, और छवि को 65 टोकनों के बजट के साथ प्रस्तुत करेगा। इससे एपीआई को तेजी से उत्तर देने और कम इनपुट टोकनों का उपयोग करने की सुविधा मिलती है जो उच्च विवरण की आवश्यकता नहीं रखते हैं। \n उच्च रेज़ोल्यूशन पहले मॉडल को कम रेज़ोल्यूशन छवि देखने की अनुमति देगा और फिर इनपुट छवि के आकार के आधार पर 512px वर्ग के रूप में विस्तृत क्रॉप्स बनाएगा। प्रत्येक विस्तृत क्रॉप के लिए टोकन बजट दोगुना होता है, कुल 129 टोकन।", + "high": "उच्च", + "low": "कम", + "uploadMethod": "अपलोड विधि", + "both": "दोनों", + "localUpload": "स्थानीय अपलोड", + "url": "यूआरएल", + "uploadLimit": "अपलोड सीमा" + }, + "onlySupportVisionModelTip": "केवल दृष्टि मॉडल का समर्थन करता है" + }, + "voice": { + "name": "वॉयस", + "defaultDisplay": "डिफ़ॉल्ट वॉयस", + "description": "टेक्स्ट टू स्पीच वॉयस सेटिंग्स", + "settings": "सेटिंग्स", + "voiceSettings": { + "title": "वॉयस सेटिंग्स", + "language": "भाषा", + "resolutionTooltip": "टेक्स्ट-टू-स्पीच वॉयस सपोर्ट भाषा।", + "voice": "वॉयस", + "autoPlay": "ऑटो प्ले", + "autoPlayEnabled": "चालू करणे", + "autoPlayDisabled": "सोडा" + } + }, + "openingStatement": { + "title": "संवाद प्रारंभक", + "add": "जोड़ें", + "writeOpener": "प्रारंभक लिखें", + "placeholder": "यहां अपना प्रारंभक संदेश लिखें, आप वेरिएबल्स का उपयोग कर सकते हैं, {{variable}} टाइप करने का प्रयास करें।", + "openingQuestion": "प्रारंभिक प्रश्न", + "openingQuestionPlaceholder": "आप वेरिएबल्स का उपयोग कर सकते हैं, {{variable}} टाइप करके देखें।", + "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": "सूचकांक मोड और पुनःप्राप्ति मोड को संशोधित करने से इस ज्ञान से जुड़े अनुप्रयोग प्रभावित हो सकते हैं।", + "embeddingModelRequired": "एक कॉन्फ़िगर किया गया एंबेडिंग मॉडल आवश्यक है" + }, + "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": "सक्षम" + }, + "fileUpload": {}, + "imageUpload": {}, + "bar": {}, + "documentUpload": {}, + "audioUpload": {} + }, + "codegen": { + "title": "कोड जनरेटर", + "loading": "कोड उत्पन्न कर रहा हूँ...", + "noDataLine1": "बाईं ओर अपने उपयोग के मामले का वर्णन करें,", + "apply": "अनुप्रयोग करें", + "generate": "जनरेट करें", + "instruction": "अनुदेश", + "overwriteConfirmTitle": "मौजूदा कोड को ओवरराइट करें?", + "resTitle": "जनरेटेड कोड", + "applyChanges": "परिवर्तन लागू करें", + "noDataLine2": "कोड पूर्वावलोकन यहाँ दिखाई देगा।", + "generatedCodeTitle": "जनरेटेड कोड", + "overwriteConfirmMessage": "यह क्रिया मौजूदा कोड को ओवरराइट कर देगी। क्या आप जारी रखना चाहते हैं?", + "instructionPlaceholder": "आप जिस कोड का निर्माण करना चाहते हैं उसका विस्तृत विवरण प्रदान करें।", + "description": "कोड जनरेटर आपके निर्देशों के आधार पर उच्च गुणवत्ता वाली कोड उत्पन्न करने के लिए कॉन्फ़िगर किए गए मॉडलों का उपयोग करता है। कृपया स्पष्ट और विस्तृत निर्देश प्रदान करें।" + }, + "generate": { + "template": { + "pythonDebugger": { + "name": "पाइथन डिबगर", + "instruction": "एक बॉट जो आपके निर्देशों के आधार पर आपका कोड उत्पन्न और डिबग कर सकता है।" + }, + "translation": { + "name": "अनुवाद", + "instruction": "एक अनुवादक जो कई भाषाओं का अनुवाद कर सकता है" + }, + "professionalAnalyst": { + "name": "पेशेवर विश्लेषक", + "instruction": "दीर्घ रिपोर्ट से अंतर्दृष्टियाँ निकालें, जोखिम की पहचान करें और प्रमुख जानकारी को एकल ज्ञापन में संक्षेपित करें।" + }, + "excelFormulaExpert": { + "name": "एक्सेल फॉर्मूला विशेषज्ञ", + "instruction": "एक चैटबॉट जो नए उपयोगकर्ताओं की मदद कर सकता है कि वे कैसे समझें, उपयोग करें और उपयोगकर्ता के निर्देशों के आधार पर Excel फॉर्मूले बनाएं।" + }, + "travelPlanning": { + "name": "यात्रा की योजना बनाना", + "instruction": "यात्रा नियोजन सहायक एक बुद्धिमान उपकरण है जिसे उपयोगकर्ताओं को बिना किसी परेशानी के अपने यात्रा की योजना बनाने में मदद करने के लिए डिज़ाइन किया गया है" + }, + "SQLSorcerer": { + "instruction": "प्रति दिन की भाषा को SQL क्वेरियों में बदलें", + "name": "SQL जादूगर" + }, + "GitGud": { + "name": "अच्छा खेलो", + "instruction": "उपयोगकर्ता द्वारा वर्णित संस्करण नियंत्रण क्रियाओं के आधार पर उचित Git कमांड उत्पन्न करें" + }, + "meetingTakeaways": { + "name": "बैठक के निष्कर्ष", + "instruction": "बैठकों को संक्षिप्त सारांशों में डिस्टिल करें, जिसमें चर्चा के विषय, मुख्य निष्कर्ष और कार्य के बिंदु शामिल हों।" + }, + "writingsPolisher": { + "name": "लेखन पालिशर", + "instruction": "अपनी लेखन को सुधारने के लिए उन्नत संपादन तकनीकों का उपयोग करें" + } + }, + "tryIt": "इसे आजमाओ", + "generate": "जनरेट करें", + "title": "प्रॉम्प्ट जनरेटर", + "apply": "अनुप्रयोग करें", + "instruction": "अनुदेश", + "loading": "आपके लिए एप्लिकेशन का आयोजन कर रहे हैं...", + "overwriteTitle": "मौजूदा कॉन्फ़िगरेशन को अधिलेखित करें?", + "resTitle": "जनित प्रॉम्प्ट", + "overwriteMessage": "इस प्रॉम्प्ट को लागू करने से मौजूदा कॉन्फ़िगरेशन को ओवरराइड कर दिया जाएगा।", + "description": "प्रॉम्प्ट जेनरेटर उच्च गुणवत्ता और बेहतर संरचना के लिए प्रॉम्प्ट्स को ऑप्टिमाइज़ करने के लिए कॉन्फ़िगर किए गए मॉडल का उपयोग करता है। कृपया स्पष्ट और विस्तृत निर्देश लिखें।", + "press": "प्रेस", + "optional": "ऐच्छिक", + "to": "करने के लिए", + "idealOutput": "आदर्श परिणाम", + "latest": "नवीनतम", + "version": "संस्करण", + "versions": "संस्करण", + "optimizationNote": "अनुकूलन नोट", + "insertContext": "प्रसंग डालें", + "dismiss": "अस्वीकृत करें", + "instructionPlaceHolderLine3": "स्वर बहुत कड़वा है, कृपया इसे अधिक मित्रवत बनाएं।", + "instructionPlaceHolderLine1": "आउटपुट को संक्षिप्त बनाएं, मुख्य बिंदुओं को बनाए रखते हुए।", + "optimizePromptTooltip": "प्रॉम्प्ट जेनरेटर में अनुकूलित करें", + "instructionPlaceHolderTitle": "इस प्रॉम्प्ट को बेहतर बनाने के लिए आप कैसे वर्णन करेंगे। उदाहरण के लिए:", + "newNoDataLine1": "बाईं कॉलम में एक निर्देश लिखें, और प्रतिक्रिया देखने के लिए जनरेट पर क्लिक करें।", + "idealOutputPlaceholder": "अपने आदर्श उत्तर प्रारूप, लंबाई, स्वर और सामग्री आवश्यकताओं का वर्णन करें...", + "instructionPlaceHolderLine2": "आउटपुट प्रारूप गलत है, कृपया JSON प्रारूप का सख्ती से पालन करें।", + "codeGenInstructionPlaceHolderLine": "जितना अधिक विस्तृत फीडबैक होता है, जैसे इनपुट और आउटपुट के डेटा प्रकार और साथ ही यह कि वेरिएबल्स को कैसे प्रोसेस किया जाता है, उतनी ही सटीकता के साथ कोड जनरेशन होगा।" + }, + "warningMessage": { + "timeoutExceeded": "परिणाम टाइमआउट के कारण प्रदर्शित नहीं किए गए हैं। कृपया संपूर्ण परिणामों को इकट्ठा करने के लिए लॉग्स का संदर्भ लें।" + }, + "noResult": "प्रदर्शन यहाँ होगा।" +} diff --git a/web/i18n/hi-IN/app-debug.ts b/web/i18n/hi-IN/app-debug.ts deleted file mode 100644 index e498b40f99..0000000000 --- a/web/i18n/hi-IN/app-debug.ts +++ /dev/null @@ -1,624 +0,0 @@ -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: 'आप संदर्भ के रूप में ज्ञान आयात कर सकते हैं', - 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: 'संवाद इतिहास सक्षम नहीं है, कृपया ऊपर दिए गए प्रॉम्प्ट में जोड़ें।', - 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: 'में कॉन्फ़िगर किए गए ओपनएआई एपीआई कुंजी की आवश्यकता होती है।', - }, - }, - contentEnableLabel: 'सामग्री मॉडरेशन सक्षम है', - }, - fileUpload: { - numberLimit: 'मैक्स अपलोड करता है', - title: 'फ़ाइल अपलोड', - modalTitle: 'फ़ाइल अपलोड सेटिंग', - description: 'चैट इनपुट बॉक्स छवियों, दस्तावेजों और अन्य फ़ाइलों को अपलोड करने की अनुमति देता है।', - supportedTypes: 'फ़ाइल प्रकारों का समर्थन करें', - }, - imageUpload: { - supportedTypes: 'फ़ाइल प्रकारों का समर्थन करें', - modalTitle: 'छवि अपलोड सेटिंग', - title: 'छवि अपलोड', - description: 'छवियों को अपलोड करने की अनुमति दें।', - numberLimit: 'मैक्स अपलोड करता है', - }, - bar: { - manage: 'प्रबंधित करें', - enableText: 'विशेषताएँ सक्षम हैं', - empty: 'वेब ऐप उपयोगकर्ता अनुभव को बढ़ाने के लिए फ़ीचर सक्षम करें', - }, - documentUpload: { - title: 'दस्तावेज़', - description: 'डॉक्यूमेंट सक्षम करने से मॉडल को दस्तावेज़ प्राप्त करने और उनके बारे में प्रश्नों का उत्तर देने की अनुमति मिलेगी।', - }, - audioUpload: { - title: 'ऑडियो', - description: 'ऑडियो सक्षम करने से मॉडल को ऑडियो फ़ाइलों के ट्रांसक्रिप्शन और विश्लेषण के लिए प्रोसेस करने की अनुमति मिलेगी।', - }, - }, - automatic: { - }, - resetConfig: { - title: 'रीसेट की पुष्टि करें?', - message: - 'रीसेट परिवर्तनों को त्याग देता है, अंतिम प्रकाशित कॉन्फ़िगरेशन को पुनर्स्थापित करता है।', - }, - errorMessage: { - nameOfKeyRequired: 'कुंजी का नाम: {{key}} आवश्यक', - valueOfVarRequired: '{{key}} मूल्य खाली नहीं हो सकता', - queryRequired: 'अनुरोध पाठ आवश्यक है।', - waitForResponse: - 'कृपया पिछले संदेश की प्रतिक्रिया पूरी होने तक प्रतीक्षा करें।', - waitForBatchResponse: - 'कृपया बैच कार्य की प्रतिक्रिया पूरी होने तक प्रतीक्षा करें।', - notSelectModel: 'कृपया एक मॉडल चुनें', - waitForImgUpload: 'कृपया छवि अपलोड होने तक प्रतीक्षा करें', - waitForFileUpload: 'कृपया फ़ाइल/फ़ाइलें अपलोड होने का इंतज़ार करें', - }, - chatSubTitle: 'निर्देश', - completionSubTitle: 'प्रारंभिक प्रॉम्प्ट', - promptTip: - 'प्रॉम्प्ट एआई प्रतिक्रियाओं को निर्देशों और सीमाओं के साथ मार्गदर्शन करता है। {{input}} जैसे वेरिएबल सम्मिलित करें। यह प्रॉम्प्ट उपयोगकर्ताओं को दिखाई नहीं देगा।', - formattingChangedTitle: 'स्वरूपण बदला गया', - formattingChangedText: - 'स्वरूपण को संशोधित करने से डिबग क्षेत्र रीसेट हो जाएगा, क्या आप निश्चित हैं?', - variableTitle: 'वेरिएबल्स', - variableTip: - 'उपयोगकर्ता वेरिएबल्स को भरते हैं, स्वचालित रूप से प्रॉम्प्ट में वेरिएबल्स को प्रतिस्थापित करते हैं।', - notSetVar: - 'वेरिएबल्स उपयोगकर्ताओं को फॉर्म भरते समय प्रॉम्प्ट शब्द या प्रारंभिक टिप्पणी प्रस्तुत करने की अनुमति देते हैं। आप प्रॉम्प्ट शब्दों में \'{{input}}\' दर्ज करने का प्रयास कर सकते हैं।', - autoAddVar: - 'प्रारंभिक प्रॉम्प्ट में निर्दिष्ट वेरिएबल्स अपरिभाषित हैं, क्या आप उन्हें उपयोगकर्ता इनपुट फॉर्म में जोड़ना चाहते हैं?', - variableTable: { - key: 'वेरिएबल कुंजी', - name: 'उपयोगकर्ता इनपुट फ़ील्ड नाम', - type: 'इनपुट प्रकार', - action: 'क्रियाएँ', - typeString: 'स्ट्रिंग', - typeSelect: 'चुनें', - }, - varKeyError: { - canNoBeEmpty: '{{key}} आवश्यक है', - tooLong: - '{{key}} बहुत लंबी है। 30 वर्णों से अधिक नहीं हो सकती', - notValid: - '{{key}} अवैध है। केवल अक्षर, संख्याएं, और अंडरस्कोर शामिल हो सकते हैं', - notStartWithNumber: - '{{key}} एक संख्या से प्रारंभ नहीं हो सकती', - keyAlreadyExists: '{{key}} पहले से मौजूद है', - }, - otherError: { - promptNoBeEmpty: 'प्रॉम्प्ट खाली नहीं हो सकता', - historyNoBeEmpty: 'संवाद इतिहास प्रॉम्प्ट में सेट होना चाहिए', - queryNoBeEmpty: 'प्रश्न प्रॉम्प्ट में सेट होना चाहिए', - }, - variableConfig: { - 'addModalTitle': 'इनपुट फ़ील्ड जोड़ें', - 'editModalTitle': 'इनपुट फ़ील्ड संपादित करें', - 'description': 'वेरिएबल {{varName}} के लिए सेटिंग', - 'fieldType': 'फ़ील्ड प्रकार', - 'string': 'छोटा पाठ', - 'text-input': 'छोटा पाठ', - 'paragraph': 'अनुच्छेद', - 'select': 'चुनें', - 'number': 'संख्या', - 'notSet': - 'सेट नहीं किया गया, प्रारंभिक प्रॉम्प्ट में {{input}} टाइप करने का प्रयास करें', - 'stringTitle': 'फॉर्म टेक्स्ट बॉक्स विकल्प', - 'maxLength': 'अधिकतम लंबाई', - 'options': 'विकल्प', - 'addOption': 'विकल्प जोड़ें', - 'apiBasedVar': 'एपीआई-आधारित वेरिएबल', - 'varName': 'वेरिएबल नाम', - 'labelName': 'लेबल नाम', - 'inputPlaceholder': 'कृपया इनपुट करें', - 'content': 'सामग्री', - 'required': 'आवश्यक', - 'hide': 'छुपाएँ', - 'errorMsg': { - labelNameRequired: 'लेबल नाम आवश्यक है', - varNameCanBeRepeat: 'वेरिएबल नाम दोहराया नहीं जा सकता', - atLeastOneOption: 'कम से कम एक विकल्प आवश्यक है', - optionRepeat: 'विकल्प दोहराए गए हैं', - }, - 'defaultValue': 'डिफ़ॉल्ट मान', - 'noDefaultValue': 'कोई डिफ़ॉल्ट मान नहीं', - 'selectDefaultValue': 'डिफ़ॉल्ट मान चुनें', - 'file': { - image: { - name: 'छवि', - }, - audio: { - name: 'ऑडियो', - }, - document: { - name: 'दस्तावेज़', - }, - video: { - name: 'वीडियो', - }, - custom: { - description: 'अन्य फ़ाइल प्रकार निर्दिष्ट करें।', - name: 'अन्य फ़ाइल प्रकार', - createPlaceholder: 'फ़ाइल एक्सटेंशन, जैसे .doc', - }, - supportFileTypes: 'फ़ाइल प्रकारों का समर्थन करें', - }, - 'both': 'दोनों', - 'multi-files': 'फ़ाइल सूची', - 'single-file': 'एकल फ़ाइल', - 'maxNumberOfUploads': 'अधिकतम अपलोड संख्या', - 'uploadFileTypes': 'फ़ाइल प्रकार अपलोड करें', - 'localUpload': 'स्थानीय अपलोड', - 'jsonSchema': 'JSON स्कीमा', - 'optional': 'वैकल्पिक', - 'json': 'JSON कोड', - 'checkbox': 'चेकबॉक्स', - 'unit': 'इकाई', - 'tooltips': 'टूलटिप्स', - 'uploadMethod': 'अपलोड विधि', - 'startChecked': 'प्रारंभ की जांच की गई', - 'placeholder': 'प्लेसहोल्डर', - 'startSelectedOption': 'चुने हुए विकल्प को शुरू करें', - 'showAllSettings': 'सभी सेटिंग्स दिखाएँ', - 'displayName': 'प्रदर्शन नाम', - 'noDefaultSelected': 'चुनें मत', - 'tooltipsPlaceholder': 'लेबल पर होवर करते समय दिखाई देने वाला सहायक पाठ दर्ज करें', - 'unitPlaceholder': 'संख्याओं के बाद इकाइयों को प्रदर्शित करें, जैसे कि टोकन', - 'placeholderPlaceholder': 'जब फ़ील्ड खाली हो तो दिखाने के लिए पाठ दर्ज करें', - 'defaultValuePlaceholder': 'फ़ील्ड को पूर्व-जनित करने के लिए डिफ़ॉल्ट मान दर्ज करें', - 'maxNumberTip': 'दस्तावेज़ < {{docLimit}}, छवि < {{imgLimit}}, ऑडियो < {{audioLimit}}, वीडियो < {{videoLimit}}', - }, - vision: { - name: 'विजन', - description: - 'विजन सक्षम करने से मॉडल को छवियों को लेने और उनके बारे में प्रश्नों का उत्तर देने की अनुमति मिलेगी।', - settings: 'सेटिंग्स', - visionSettings: { - title: 'विजन सेटिंग्स', - resolution: 'रेज़ोल्यूशन', - resolutionTooltip: - 'कम रेज़ोल्यूशन मॉडल को 512 x 512 पिक्सेल की कम-रेज़ोल्यूशन छवि प्राप्त करने की अनुमति देगा, और छवि को 65 टोकनों के बजट के साथ प्रस्तुत करेगा। इससे एपीआई को तेजी से उत्तर देने और कम इनपुट टोकनों का उपयोग करने की सुविधा मिलती है जो उच्च विवरण की आवश्यकता नहीं रखते हैं। \n उच्च रेज़ोल्यूशन पहले मॉडल को कम रेज़ोल्यूशन छवि देखने की अनुमति देगा और फिर इनपुट छवि के आकार के आधार पर 512px वर्ग के रूप में विस्तृत क्रॉप्स बनाएगा। प्रत्येक विस्तृत क्रॉप के लिए टोकन बजट दोगुना होता है, कुल 129 टोकन।', - high: 'उच्च', - low: 'कम', - uploadMethod: 'अपलोड विधि', - both: 'दोनों', - localUpload: 'स्थानीय अपलोड', - url: 'यूआरएल', - uploadLimit: 'अपलोड सीमा', - }, - onlySupportVisionModelTip: 'केवल दृष्टि मॉडल का समर्थन करता है', - }, - voice: { - name: 'वॉयस', - defaultDisplay: 'डिफ़ॉल्ट वॉयस', - description: 'टेक्स्ट टू स्पीच वॉयस सेटिंग्स', - settings: 'सेटिंग्स', - voiceSettings: { - title: 'वॉयस सेटिंग्स', - language: 'भाषा', - resolutionTooltip: 'टेक्स्ट-टू-स्पीच वॉयस सपोर्ट भाषा।', - voice: 'वॉयस', - autoPlay: 'ऑटो प्ले', - autoPlayEnabled: 'चालू करणे', - autoPlayDisabled: 'सोडा', - }, - }, - openingStatement: { - title: 'संवाद प्रारंभक', - add: 'जोड़ें', - writeOpener: 'प्रारंभक लिखें', - placeholder: - 'यहां अपना प्रारंभक संदेश लिखें, आप वेरिएबल्स का उपयोग कर सकते हैं, {{variable}} टाइप करने का प्रयास करें।', - openingQuestion: 'प्रारंभिक प्रश्न', - openingQuestionPlaceholder: 'आप वेरिएबल्स का उपयोग कर सकते हैं, {{variable}} टाइप करके देखें।', - 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: - 'सूचकांक मोड और पुनःप्राप्ति मोड को संशोधित करने से इस ज्ञान से जुड़े अनुप्रयोग प्रभावित हो सकते हैं।', - embeddingModelRequired: 'एक कॉन्फ़िगर किया गया एंबेडिंग मॉडल आवश्यक है', - }, - 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: 'सक्षम', - }, - fileUpload: { - }, - imageUpload: { - }, - bar: { - }, - documentUpload: { - }, - audioUpload: { - }, - }, - codegen: { - title: 'कोड जनरेटर', - loading: 'कोड उत्पन्न कर रहा हूँ...', - noDataLine1: 'बाईं ओर अपने उपयोग के मामले का वर्णन करें,', - apply: 'अनुप्रयोग करें', - generate: 'जनरेट करें', - instruction: 'अनुदेश', - overwriteConfirmTitle: 'मौजूदा कोड को ओवरराइट करें?', - resTitle: 'जनरेटेड कोड', - applyChanges: 'परिवर्तन लागू करें', - noDataLine2: 'कोड पूर्वावलोकन यहाँ दिखाई देगा।', - generatedCodeTitle: 'जनरेटेड कोड', - overwriteConfirmMessage: 'यह क्रिया मौजूदा कोड को ओवरराइट कर देगी। क्या आप जारी रखना चाहते हैं?', - instructionPlaceholder: 'आप जिस कोड का निर्माण करना चाहते हैं उसका विस्तृत विवरण प्रदान करें।', - description: 'कोड जनरेटर आपके निर्देशों के आधार पर उच्च गुणवत्ता वाली कोड उत्पन्न करने के लिए कॉन्फ़िगर किए गए मॉडलों का उपयोग करता है। कृपया स्पष्ट और विस्तृत निर्देश प्रदान करें।', - }, - generate: { - template: { - pythonDebugger: { - name: 'पाइथन डिबगर', - instruction: 'एक बॉट जो आपके निर्देशों के आधार पर आपका कोड उत्पन्न और डिबग कर सकता है।', - }, - translation: { - name: 'अनुवाद', - instruction: 'एक अनुवादक जो कई भाषाओं का अनुवाद कर सकता है', - }, - professionalAnalyst: { - name: 'पेशेवर विश्लेषक', - instruction: 'दीर्घ रिपोर्ट से अंतर्दृष्टियाँ निकालें, जोखिम की पहचान करें और प्रमुख जानकारी को एकल ज्ञापन में संक्षेपित करें।', - }, - excelFormulaExpert: { - name: 'एक्सेल फॉर्मूला विशेषज्ञ', - instruction: 'एक चैटबॉट जो नए उपयोगकर्ताओं की मदद कर सकता है कि वे कैसे समझें, उपयोग करें और उपयोगकर्ता के निर्देशों के आधार पर Excel फॉर्मूले बनाएं।', - }, - travelPlanning: { - name: 'यात्रा की योजना बनाना', - instruction: 'यात्रा नियोजन सहायक एक बुद्धिमान उपकरण है जिसे उपयोगकर्ताओं को बिना किसी परेशानी के अपने यात्रा की योजना बनाने में मदद करने के लिए डिज़ाइन किया गया है', - }, - SQLSorcerer: { - instruction: 'प्रति दिन की भाषा को SQL क्वेरियों में बदलें', - name: 'SQL जादूगर', - }, - GitGud: { - name: 'अच्छा खेलो', - instruction: 'उपयोगकर्ता द्वारा वर्णित संस्करण नियंत्रण क्रियाओं के आधार पर उचित Git कमांड उत्पन्न करें', - }, - meetingTakeaways: { - name: 'बैठक के निष्कर्ष', - instruction: 'बैठकों को संक्षिप्त सारांशों में डिस्टिल करें, जिसमें चर्चा के विषय, मुख्य निष्कर्ष और कार्य के बिंदु शामिल हों।', - }, - writingsPolisher: { - name: 'लेखन पालिशर', - instruction: 'अपनी लेखन को सुधारने के लिए उन्नत संपादन तकनीकों का उपयोग करें', - }, - }, - tryIt: 'इसे आजमाओ', - generate: 'जनरेट करें', - title: 'प्रॉम्प्ट जनरेटर', - apply: 'अनुप्रयोग करें', - instruction: 'अनुदेश', - loading: 'आपके लिए एप्लिकेशन का आयोजन कर रहे हैं...', - overwriteTitle: 'मौजूदा कॉन्फ़िगरेशन को अधिलेखित करें?', - resTitle: 'जनित प्रॉम्प्ट', - overwriteMessage: 'इस प्रॉम्प्ट को लागू करने से मौजूदा कॉन्फ़िगरेशन को ओवरराइड कर दिया जाएगा।', - description: 'प्रॉम्प्ट जेनरेटर उच्च गुणवत्ता और बेहतर संरचना के लिए प्रॉम्प्ट्स को ऑप्टिमाइज़ करने के लिए कॉन्फ़िगर किए गए मॉडल का उपयोग करता है। कृपया स्पष्ट और विस्तृत निर्देश लिखें।', - press: 'प्रेस', - optional: 'ऐच्छिक', - to: 'करने के लिए', - idealOutput: 'आदर्श परिणाम', - latest: 'नवीनतम', - version: 'संस्करण', - versions: 'संस्करण', - optimizationNote: 'अनुकूलन नोट', - insertContext: 'प्रसंग डालें', - dismiss: 'अस्वीकृत करें', - instructionPlaceHolderLine3: 'स्वर बहुत कड़वा है, कृपया इसे अधिक मित्रवत बनाएं।', - instructionPlaceHolderLine1: 'आउटपुट को संक्षिप्त बनाएं, मुख्य बिंदुओं को बनाए रखते हुए।', - optimizePromptTooltip: 'प्रॉम्प्ट जेनरेटर में अनुकूलित करें', - instructionPlaceHolderTitle: 'इस प्रॉम्प्ट को बेहतर बनाने के लिए आप कैसे वर्णन करेंगे। उदाहरण के लिए:', - newNoDataLine1: 'बाईं कॉलम में एक निर्देश लिखें, और प्रतिक्रिया देखने के लिए जनरेट पर क्लिक करें।', - idealOutputPlaceholder: 'अपने आदर्श उत्तर प्रारूप, लंबाई, स्वर और सामग्री आवश्यकताओं का वर्णन करें...', - instructionPlaceHolderLine2: 'आउटपुट प्रारूप गलत है, कृपया JSON प्रारूप का सख्ती से पालन करें।', - codeGenInstructionPlaceHolderLine: 'जितना अधिक विस्तृत फीडबैक होता है, जैसे इनपुट और आउटपुट के डेटा प्रकार और साथ ही यह कि वेरिएबल्स को कैसे प्रोसेस किया जाता है, उतनी ही सटीकता के साथ कोड जनरेशन होगा।', - }, - warningMessage: { - timeoutExceeded: 'परिणाम टाइमआउट के कारण प्रदर्शित नहीं किए गए हैं। कृपया संपूर्ण परिणामों को इकट्ठा करने के लिए लॉग्स का संदर्भ लें।', - }, - noResult: 'प्रदर्शन यहाँ होगा।', -} - -export default translation diff --git a/web/i18n/hi-IN/app-log.json b/web/i18n/hi-IN/app-log.json new file mode 100644 index 0000000000..637909c242 --- /dev/null +++ b/web/i18n/hi-IN/app-log.json @@ -0,0 +1,110 @@ +{ + "title": "लॉग्स", + "description": "लॉग्स एप्लिकेशन के रनिंग स्टेटस को रिकॉर्ड करते हैं, जिसमें यूजर इनपुट और एआई रिप्लाईज़ शामिल हैं।", + "dateTimeFormat": "MM/DD/YYYY hh:mm:ss A", + "table": { + "header": { + "updatedTime": "अपडेट का समय", + "time": "बनाने का समय", + "endUser": "अंतिम उपयोगकर्ता या खाता", + "input": "इनपुट", + "output": "आउटपुट", + "summary": "शीर्षक", + "messageCount": "संदेशों की संख्या", + "userRate": "उपयोगकर्ता दर", + "adminRate": "ऑपरेटर दर", + "startTime": "शुरू करने का समय", + "status": "स्थिति", + "runtime": "रन टाइम", + "tokens": "टोकन", + "user": "अंतिम उपयोगकर्ता या खाता", + "version": "संस्करण", + "triggered_from": "के द्वारा ट्रिगर" + }, + "pagination": { + "previous": "पिछला", + "next": "अगला" + }, + "empty": { + "noChat": "कोई बातचीत नहीं हुई", + "noOutput": "कोई आउटपुट नहीं", + "element": { + "title": "क्या कोई वहाँ है?", + "content": "अंत उपयोगकर्ताओं और एआई एप्लिकेशन के बीच इंटरैक्शंस को देखें और एनोटेट करें ताकि एआई की सटीकता लगातार सुधारी जा सके। आप यहाँ शेयर या परीक्षण कर सकते हैं वेब ऐप अपने आप, फिर इस पृष्ठ पर लौटें।" + } + } + }, + "detail": { + "time": "समय", + "conversationId": "बातचीत आईडी", + "promptTemplate": "प्रॉम्प्ट टेम्पलेट", + "promptTemplateBeforeChat": "चैट से पहले प्रॉम्प्ट टेम्पलेट · सिस्टम मेसेज के रूप में", + "annotationTip": "{{user}} द्वारा सुधार चिह्नित", + "timeConsuming": "", + "second": "सेकंड", + "tokenCost": "टोकन खर्च", + "loading": "लोड हो रहा है", + "operation": { + "like": "पसंद", + "dislike": "नापसंद", + "addAnnotation": "सुधार जोड़ें", + "editAnnotation": "सुधार संपादित करें", + "annotationPlaceholder": "एआई के लिए आपको वह अपेक्षित उत्तर दर्ज करें जिसका उपयोग भविष्य में मॉडल फ़ाइन-ट्यूनिंग और टेक्स्ट जनरेशन की गुणवत्ता में सुधार के लिए किया जा सकता है।" + }, + "variables": "वेरिएबल्स", + "uploadImages": "अपलोड की गई छवियाँ", + "modelParams": "मॉडल पैरामीटर" + }, + "filter": { + "period": { + "today": "आज", + "last7days": "पिछले 7 दिन", + "last4weeks": "पिछले 4 सप्ताह", + "last3months": "पिछले 3 महीने", + "last12months": "पिछले 12 महीने", + "monthToDate": "माह तक तिथि", + "quarterToDate": "तिमाही तक तिथि", + "yearToDate": "वर्ष तक तिथि", + "allTime": "सभी समय", + "last30days": "पिछले 30 दिन", + "custom": "कस्टम" + }, + "annotation": { + "all": "सभी", + "annotated": "एनोटेट किए गए सुधार ({{count}} आइटम)", + "not_annotated": "एनोटेट नहीं किया गया" + }, + "sortBy": "इसके अनुसार क्रमबद्ध करें:", + "descending": "अवरोही", + "ascending": "आरोही" + }, + "workflowTitle": "वर्कफ़्लो लॉग्स", + "workflowSubtitle": "यह लॉग ऑटोमेटे के ऑपरेशन को रिकॉर्ड करता है।", + "runDetail": { + "title": "बातचीत लॉग", + "workflowTitle": "लॉग विवरण", + "fileListDetail": "विस्तार", + "fileListLabel": "फ़ाइल विवरण", + "testWithParams": "पैरामीटर्स के साथ परीक्षण" + }, + "promptLog": "प्रॉम्प्ट लॉग", + "agentLog": "एजेंट लॉग", + "viewLog": "व्यू लॉग", + "agentLogDetail": { + "agentMode": "एजेंट मोड", + "iterations": "पुनरूक्तियाँ", + "toolUsed": "प्रयुक्त उपकरण", + "finalProcessing": "अंतिम प्रसंस्करण", + "iteration": "चलना" + }, + "dateFormat": "MM/DD/YYYY", + "triggerBy": { + "debugging": "डिबगिंग", + "appRun": "वेबएप", + "webhook": "वेबहूक", + "schedule": "अनुसूची", + "plugin": "प्लगइन", + "ragPipelineRun": "RAG पाइपलाइन", + "ragPipelineDebugging": "RAG डीबगिंग" + } +} diff --git a/web/i18n/hi-IN/app-log.ts b/web/i18n/hi-IN/app-log.ts deleted file mode 100644 index 15bd50850d..0000000000 --- a/web/i18n/hi-IN/app-log.ts +++ /dev/null @@ -1,114 +0,0 @@ -const translation = { - title: 'लॉग्स', - description: 'लॉग्स एप्लिकेशन के रनिंग स्टेटस को रिकॉर्ड करते हैं, जिसमें यूजर इनपुट और एआई रिप्लाईज़ शामिल हैं।', - dateTimeFormat: 'MM/DD/YYYY hh:mm:ss A', - table: { - header: { - updatedTime: 'अपडेट का समय', - time: 'बनाने का समय', - endUser: 'अंतिम उपयोगकर्ता या खाता', - input: 'इनपुट', - output: 'आउटपुट', - summary: 'शीर्षक', - messageCount: 'संदेशों की संख्या', - userRate: 'उपयोगकर्ता दर', - adminRate: 'ऑपरेटर दर', - startTime: 'शुरू करने का समय', - status: 'स्थिति', - runtime: 'रन टाइम', - tokens: 'टोकन', - user: 'अंतिम उपयोगकर्ता या खाता', - version: 'संस्करण', - triggered_from: 'के द्वारा ट्रिगर', - }, - pagination: { - previous: 'पिछला', - next: 'अगला', - }, - empty: { - noChat: 'कोई बातचीत नहीं हुई', - noOutput: 'कोई आउटपुट नहीं', - element: { - title: 'क्या कोई वहाँ है?', - content: - 'अंत उपयोगकर्ताओं और एआई एप्लिकेशन के बीच इंटरैक्शंस को देखें और एनोटेट करें ताकि एआई की सटीकता लगातार सुधारी जा सके। आप यहाँ शेयर या परीक्षण कर सकते हैं वेब ऐप अपने आप, फिर इस पृष्ठ पर लौटें।', - }, - }, - }, - detail: { - time: 'समय', - conversationId: 'बातचीत आईडी', - promptTemplate: 'प्रॉम्प्ट टेम्पलेट', - promptTemplateBeforeChat: 'चैट से पहले प्रॉम्प्ट टेम्पलेट · सिस्टम मेसेज के रूप में', - annotationTip: '{{user}} द्वारा सुधार चिह्नित', - timeConsuming: '', - second: 'सेकंड', - tokenCost: 'टोकन खर्च', - loading: 'लोड हो रहा है', - operation: { - like: 'पसंद', - dislike: 'नापसंद', - addAnnotation: 'सुधार जोड़ें', - editAnnotation: 'सुधार संपादित करें', - annotationPlaceholder: - 'एआई के लिए आपको वह अपेक्षित उत्तर दर्ज करें जिसका उपयोग भविष्य में मॉडल फ़ाइन-ट्यूनिंग और टेक्स्ट जनरेशन की गुणवत्ता में सुधार के लिए किया जा सकता है।', - }, - variables: 'वेरिएबल्स', - uploadImages: 'अपलोड की गई छवियाँ', - modelParams: 'मॉडल पैरामीटर', - }, - filter: { - period: { - today: 'आज', - last7days: 'पिछले 7 दिन', - last4weeks: 'पिछले 4 सप्ताह', - last3months: 'पिछले 3 महीने', - last12months: 'पिछले 12 महीने', - monthToDate: 'माह तक तिथि', - quarterToDate: 'तिमाही तक तिथि', - yearToDate: 'वर्ष तक तिथि', - allTime: 'सभी समय', - last30days: 'पिछले 30 दिन', - custom: 'कस्टम', - }, - annotation: { - all: 'सभी', - annotated: 'एनोटेट किए गए सुधार ({{count}} आइटम)', - not_annotated: 'एनोटेट नहीं किया गया', - }, - sortBy: 'इसके अनुसार क्रमबद्ध करें:', - descending: 'अवरोही', - ascending: 'आरोही', - }, - workflowTitle: 'वर्कफ़्लो लॉग्स', - workflowSubtitle: 'यह लॉग ऑटोमेटे के ऑपरेशन को रिकॉर्ड करता है।', - runDetail: { - title: 'बातचीत लॉग', - workflowTitle: 'लॉग विवरण', - fileListDetail: 'विस्तार', - fileListLabel: 'फ़ाइल विवरण', - testWithParams: 'पैरामीटर्स के साथ परीक्षण', - }, - promptLog: 'प्रॉम्प्ट लॉग', - agentLog: 'एजेंट लॉग', - viewLog: 'व्यू लॉग', - agentLogDetail: { - agentMode: 'एजेंट मोड', - iterations: 'पुनरूक्तियाँ', - toolUsed: 'प्रयुक्त उपकरण', - finalProcessing: 'अंतिम प्रसंस्करण', - iteration: 'चलना', - }, - dateFormat: 'MM/DD/YYYY', - triggerBy: { - debugging: 'डिबगिंग', - appRun: 'वेबएप', - webhook: 'वेबहूक', - schedule: 'अनुसूची', - plugin: 'प्लगइन', - ragPipelineRun: 'RAG पाइपलाइन', - ragPipelineDebugging: 'RAG डीबगिंग', - }, -} - -export default translation diff --git a/web/i18n/hi-IN/app-overview.json b/web/i18n/hi-IN/app-overview.json new file mode 100644 index 0000000000..2a0235243e --- /dev/null +++ b/web/i18n/hi-IN/app-overview.json @@ -0,0 +1,187 @@ +{ + "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": "भाषा", + "workflow": { + "title": "वर्कफ़्लो स्टेप्स", + "show": "दिखाएं", + "hide": "छुपाएं", + "subTitle": "कार्यप्रवाह विवरण", + "showDesc": "web app में वर्कफ़्लो विवरण दिखाएँ या छुपाएँ" + }, + "chatColorTheme": "चैटबॉट का रंग थीम", + "chatColorThemeDesc": "चैटबॉट का रंग थीम निर्धारित करें", + "chatColorThemeInverted": "उल्टा", + "invalidHexMessage": "अमान्य हेक्स मान", + "invalidPrivacyPolicy": "गोपनीयता नीति लिंक अमान्य है। कृपया http या https से शुरू होने वाला एक वैध लिंक उपयोग करें।", + "more": { + "entry": "अधिक सेटिंग्स दिखाएं", + "copyright": "कॉपीराइट", + "copyRightPlaceholder": "लेखक या संगठन का नाम दर्ज करें", + "privacyPolicy": "गोपनीयता नीति", + "privacyPolicyPlaceholder": "गोपनीयता नीति लिंक दर्ज करें", + "privacyPolicyTip": "आगंतुकों को यह समझने में मदद करता है कि एप्लिकेशन कौन सा डेटा एकत्र करता है, देखें Dify की गोपनीयता नीति।", + "customDisclaimer": "कस्टम अस्वीकरण", + "customDisclaimerPlaceholder": "कस्टम अस्वीकरण टेक्स्ट दर्ज करें", + "customDisclaimerTip": "कस्टम अस्वीकरण टेक्स्ट क्लाइंट साइड पर प्रदर्शित होगा, जो एप्लिकेशन के बारे में अतिरिक्त जानकारी प्रदान करेगा", + "copyrightTip": "वेबपैप में कॉपीराइट जानकारी प्रदर्शित करें", + "copyrightTooltip": "कृपया व्यावसायिक योजना या उससे ऊपर के संस्करण में अपग्रेड करें" + }, + "sso": { + "title": "वेबएप एसएसओ", + "label": "SSO प्रमाणीकरण", + "description": "web app का उपयोग करने से पहले सभी उपयोगकर्ताओं को SSO के साथ लॉगिन करना आवश्यक है", + "tooltip": "web app SSO को सक्षम करने के लिए व्यवस्थापक से संपर्क करें" + }, + "modalTip": "क्लाइंट-साइड वेब अनुप्रयोग सेटिंग्स." + }, + "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": "प्रलेखन" + } + }, + "launch": "लॉन्च", + "enableTooltip": { + "description": "इस सुविधा को सक्षम करने के लिए कृपया कैनवास में एक उपयोगकर्ता इनपुट नोड जोड़ें। (शायद यह ड्राफ्ट में पहले से मौजूद हो, प्रकाशित करने के बाद प्रभावी होगा)", + "learnMore": "और जानें" + }, + "title": "वेब एप" + }, + "apiInfo": { + "title": "बैकएंड सेवा एपीआई", + "explanation": "आसानी से अपने एप्लिकेशन में एकीकृत", + "accessibleAddress": "सेवा एपीआई एंडपॉइंट", + "doc": "एपीआई संदर्भ" + }, + "status": { + "running": "सेवा में", + "disable": "अक्षम करें" + }, + "triggerInfo": { + "title": "ट्रिगर्स", + "explanation": "वर्कफ़्लो ट्रिगर प्रबंधन", + "triggersAdded": "{{count}} ट्रिगर्स जोड़े गए", + "noTriggerAdded": "कोई ट्रिगर जोड़ा नहीं गया", + "triggerStatusDescription": "ट्रिगर नोड की स्थिति यहाँ दिखाई देगी। (शायद पहले से ड्राफ्ट में मौजूद है, प्रकाशित करने के बाद प्रभावी होगी)", + "learnAboutTriggers": "ट्रिगर्स के बारे में जानें" + }, + "disableTooltip": { + "triggerMode": "ट्रिगर नोड मोड में {{feature}} फ़ीचर समर्थित नहीं है।" + } + }, + "analysis": { + "title": "विश्लेषण", + "ms": "मि.से.", + "tokenPS": "टोकन/से.", + "totalMessages": { + "title": "कुल संदेश", + "explanation": "दैनिक AI इंटरैक्शन की गिनती।" + }, + "totalConversations": { + "title": "कुल वार्तालाप", + "explanation": "दैनिक AI वार्तालाप की गिनती; प्रॉम्प्ट इंजीनियरिंग/डीबगिंग शामिल नहीं।" + }, + "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 के टोकन आउटपुट गति की गणना करें।" + } + } +} diff --git a/web/i18n/hi-IN/app-overview.ts b/web/i18n/hi-IN/app-overview.ts deleted file mode 100644 index 0224ed89ee..0000000000 --- a/web/i18n/hi-IN/app-overview.ts +++ /dev/null @@ -1,207 +0,0 @@ -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: 'भाषा', - workflow: { - title: 'वर्कफ़्लो स्टेप्स', - show: 'दिखाएं', - hide: 'छुपाएं', - subTitle: 'कार्यप्रवाह विवरण', - showDesc: 'web app में वर्कफ़्लो विवरण दिखाएँ या छुपाएँ', - }, - chatColorTheme: 'चैटबॉट का रंग थीम', - chatColorThemeDesc: 'चैटबॉट का रंग थीम निर्धारित करें', - chatColorThemeInverted: 'उल्टा', - invalidHexMessage: 'अमान्य हेक्स मान', - invalidPrivacyPolicy: 'गोपनीयता नीति लिंक अमान्य है। कृपया http या https से शुरू होने वाला एक वैध लिंक उपयोग करें।', - more: { - entry: 'अधिक सेटिंग्स दिखाएं', - copyright: 'कॉपीराइट', - copyRightPlaceholder: 'लेखक या संगठन का नाम दर्ज करें', - privacyPolicy: 'गोपनीयता नीति', - privacyPolicyPlaceholder: 'गोपनीयता नीति लिंक दर्ज करें', - privacyPolicyTip: - 'आगंतुकों को यह समझने में मदद करता है कि एप्लिकेशन कौन सा डेटा एकत्र करता है, देखें Dify की गोपनीयता नीति।', - customDisclaimer: 'कस्टम अस्वीकरण', - customDisclaimerPlaceholder: 'कस्टम अस्वीकरण टेक्स्ट दर्ज करें', - customDisclaimerTip: - 'कस्टम अस्वीकरण टेक्स्ट क्लाइंट साइड पर प्रदर्शित होगा, जो एप्लिकेशन के बारे में अतिरिक्त जानकारी प्रदान करेगा', - copyrightTip: 'वेबपैप में कॉपीराइट जानकारी प्रदर्शित करें', - copyrightTooltip: 'कृपया व्यावसायिक योजना या उससे ऊपर के संस्करण में अपग्रेड करें', - }, - sso: { - title: 'वेबएप एसएसओ', - label: 'SSO प्रमाणीकरण', - description: 'web app का उपयोग करने से पहले सभी उपयोगकर्ताओं को SSO के साथ लॉगिन करना आवश्यक है', - tooltip: 'web app SSO को सक्षम करने के लिए व्यवस्थापक से संपर्क करें', - }, - modalTip: 'क्लाइंट-साइड वेब अनुप्रयोग सेटिंग्स.', - }, - 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: 'प्रलेखन', - }, - }, - launch: 'लॉन्च', - enableTooltip: { - description: 'इस सुविधा को सक्षम करने के लिए कृपया कैनवास में एक उपयोगकर्ता इनपुट नोड जोड़ें। (शायद यह ड्राफ्ट में पहले से मौजूद हो, प्रकाशित करने के बाद प्रभावी होगा)', - learnMore: 'और जानें', - }, - title: 'वेब एप', - }, - apiInfo: { - title: 'बैकएंड सेवा एपीआई', - explanation: 'आसानी से अपने एप्लिकेशन में एकीकृत', - accessibleAddress: 'सेवा एपीआई एंडपॉइंट', - doc: 'एपीआई संदर्भ', - }, - status: { - running: 'सेवा में', - disable: 'अक्षम करें', - }, - triggerInfo: { - title: 'ट्रिगर्स', - explanation: 'वर्कफ़्लो ट्रिगर प्रबंधन', - triggersAdded: '{{count}} ट्रिगर्स जोड़े गए', - noTriggerAdded: 'कोई ट्रिगर जोड़ा नहीं गया', - triggerStatusDescription: 'ट्रिगर नोड की स्थिति यहाँ दिखाई देगी। (शायद पहले से ड्राफ्ट में मौजूद है, प्रकाशित करने के बाद प्रभावी होगी)', - learnAboutTriggers: 'ट्रिगर्स के बारे में जानें', - }, - disableTooltip: { - triggerMode: 'ट्रिगर नोड मोड में {{feature}} फ़ीचर समर्थित नहीं है।', - }, - }, - analysis: { - title: 'विश्लेषण', - ms: 'मि.से.', - tokenPS: 'टोकन/से.', - totalMessages: { - title: 'कुल संदेश', - explanation: 'दैनिक AI इंटरैक्शन की गिनती।', - }, - totalConversations: { - title: 'कुल वार्तालाप', - explanation: 'दैनिक AI वार्तालाप की गिनती; प्रॉम्प्ट इंजीनियरिंग/डीबगिंग शामिल नहीं।', - }, - 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 diff --git a/web/i18n/hi-IN/app.json b/web/i18n/hi-IN/app.json new file mode 100644 index 0000000000..dc0a3a98a8 --- /dev/null +++ b/web/i18n/hi-IN/app.json @@ -0,0 +1,345 @@ +{ + "createApp": "ऐप बनाएँ", + "types": { + "all": "सभी", + "chatbot": "चैटबॉट", + "agent": "एजेंट", + "workflow": "वर्कफ़्लो", + "completion": "समाप्ति", + "advanced": "चैटफ्लो", + "basic": "मूलवर्ती" + }, + "duplicate": "डुप्लिकेट", + "duplicateTitle": "ऐप डुप्लिकेट करें", + "export": "डीएसएल निर्यात करें", + "exportFailed": "डीएसएल निर्यात विफल हुआ।", + "importDSL": "डीएसएल फ़ाइल आयात करें", + "createFromConfigFile": "डीएसएल फ़ाइल से बनाएँ", + "deleteAppConfirmTitle": "इस ऐप को हटाएँ?", + "deleteAppConfirmContent": "ऐप को हटाना अपरिवर्तनीय है। उपयोगकर्ता अब आपके ऐप तक पहुँचने में सक्षम नहीं होंगे, और सभी प्रॉम्प्ट कॉन्फ़िगरेशन और लॉग स्थायी रूप से हटा दिए जाएंगे।", + "appDeleted": "ऐप हटाया गया", + "appDeleteFailed": "ऐप हटाने में विफल", + "join": "समुदाय में शामिल हों", + "communityIntro": "टीम के सदस्यों, योगदानकर्ताओं और डेवलपर्स के साथ विभिन्न चैनलों पर चर्चा करें।", + "roadmap": "हमारा रोडमैप देखें", + "newApp": { + "startFromBlank": "रिक्त से बनाएँ", + "startFromTemplate": "टेम्पलेट से बनाएँ", + "workflowWarning": "वर्तमान में बीटा में", + "captionName": "ऐप आइकन और नाम", + "appNamePlaceholder": "अपने ऐप को नाम दें", + "captionDescription": "विवरण", + "appDescriptionPlaceholder": "ऐप का विवरण दर्ज करें", + "useTemplate": "इस टेम्पलेट का उपयोग करें", + "previewDemo": "पूर्वावलोकन डेमो", + "chatApp": "सहायक", + "chatAppIntro": "मैं एक चैट-आधारित एप्लिकेशन बनाना चाहता हूँ। यह ऐप प्रश्न-उत्तर प्रारूप का उपयोग करता है, जिससे निरंतर बातचीत के कई राउंड संभव होते हैं।", + "agentAssistant": "नया एजेंट सहायक", + "completeApp": "टेक्स्ट जनरेटर", + "completeAppIntro": "मैं एक ऐसा एप्लिकेशन बनाना चाहता हूँ जो प्रॉम्प्ट्स के आधार पर उच्च गुणवत्ता वाला टेक्स्ट उत्पन्न करता है, जैसे लेख, सारांश, अनुवाद आदि उत्पन्न करना।", + "showTemplates": "मैं टेम्पलेट से चुनना चाहता हूँ", + "hideTemplates": "मोड चयन पर वापस जाएँ", + "Create": "बनाएँ", + "Cancel": "रद्द करें", + "nameNotEmpty": "नाम खाली नहीं हो सकता", + "appTemplateNotSelected": "कृपया एक टेम्पलेट चुनें", + "appTypeRequired": "कृपया एक ऐप प्रकार चुनें", + "appCreated": "ऐप बनाया गया", + "appCreateFailed": "ऐप बनाने में विफल", + "Confirm": "सुदृढ़ करना", + "appCreateDSLErrorPart4": "सिस्टम-समर्थित DSL संस्करण:", + "appCreateDSLErrorPart3": "वर्तमान अनुप्रयोग डीएसएल संस्करण:", + "caution": "सावधानी", + "appCreateDSLErrorTitle": "संस्करण असंगति", + "appCreateDSLErrorPart1": "डीएसएल संस्करणों में एक महत्वपूर्ण अंतर पाया गया है। आयात को बाध्य करने से अनुप्रयोग में खराबी आ सकती है।", + "appCreateDSLWarning": "सावधानी: DSL संस्करण अंतर कुछ सुविधाओं को प्रभावित कर सकता है", + "appCreateDSLErrorPart2": "क्या आप जारी रखना चाहते हैं?", + "learnMore": "और जानो", + "forBeginners": "नए उपयोगकर्ताओं के लिए बुनियादी ऐप प्रकार", + "foundResults": "{{count}} परिणाम", + "forAdvanced": "उन्नत उपयोगकर्ताओं के लिए", + "agentUserDescription": "पुनरावृत्त तर्क और स्वायत्त उपकरण में सक्षम एक बुद्धिमान एजेंट कार्य लक्ष्यों को प्राप्त करने के लिए उपयोग करता है।", + "optional": "वैकल्पिक", + "chatbotShortDescription": "सरल सेटअप के साथ एलएलएम-आधारित चैटबॉट", + "foundResult": "{{count}} परिणाम", + "completionUserDescription": "सरल कॉन्फ़िगरेशन के साथ पाठ निर्माण कार्यों के लिए त्वरित रूप से AI सहायक बनाएं।", + "noIdeaTip": "कोई विचार नहीं? हमारे टेम्प्लेट देखें", + "noTemplateFound": "कोई टेम्पलेट नहीं मिला", + "completionShortDescription": "पाठ निर्माण कार्यों के लिए AI सहायक", + "noAppsFound": "कोई ऐप्लिकेशन नहीं मिला", + "chooseAppType": "ऐप प्रकार चुनें", + "agentShortDescription": "तर्क और स्वायत्त उपकरण उपयोग के साथ बुद्धिमान एजेंट", + "workflowShortDescription": "बुद्धिमान स्वचालन के लिए एजेंटिक प्रवाह", + "chatbotUserDescription": "सरल कॉन्फ़िगरेशन के साथ जल्दी से एलएलएम-आधारित चैटबॉट बनाएं। आप बाद में चैटफ्लो पर स्विच कर सकते हैं।", + "advancedUserDescription": "अतिरिक्त मेमोरी सुविधाओं और चैटबॉट इंटरफेस के साथ वर्कफ़्लो।", + "advancedShortDescription": "बहु-चरण वार्तालाप के लिए उन्नत वर्कफ़्लो", + "noTemplateFoundTip": "विभिन्न कीवर्ड का उपयोग करके खोजने का प्रयास करें।", + "workflowUserDescription": "ड्रैग-एंड-ड्रॉप सरलता के साथ स्वायत्त AI वर्कफ़्लो का दृश्य निर्माण करें।", + "dropDSLToCreateApp": "यहाँ DSL फ़ाइल ड्रॉप करें ताकि ऐप बनाया जा सके", + "import": "आयात" + }, + "editApp": "जानकारी संपादित करें", + "editAppTitle": "ऐप जानकारी संपादित करें", + "editDone": "ऐप जानकारी अपडेट की गई", + "editFailed": "ऐप जानकारी अपडेट करने में विफल", + "iconPicker": { + "ok": "ठीक है", + "cancel": "रद्द करें", + "emoji": "इमोजी", + "image": "छवि" + }, + "switch": "वर्कफ़्लो ऑर्केस्ट्रेट पर स्विच करें", + "switchTipStart": "आपके लिए एक नई ऐप कॉपी बनाई जाएगी, और नई कॉपी वर्कफ़्लो ऑर्केस्ट्रेट में स्विच हो जाएगी। नई कॉपी ", + "switchTip": "की अनुमति नहीं देगा", + "switchTipEnd": " बेसिक ऑर्केस्ट्रेट में स्विच करना।", + "switchLabel": "बनाई जाने वाली ऐप कॉपी", + "removeOriginal": "मूल ऐप हटाएँ", + "switchStart": "स्विच शुरू करें", + "typeSelector": { + "all": "सभी प्रकार", + "chatbot": "चैटबॉट", + "agent": "एजेंट", + "workflow": "वर्कफ़्लो", + "completion": "समाप्ति", + "advanced": "चैटफ्लो" + }, + "tracing": { + "title": "एप्लिकेशन प्रदर्शन ट्रेसिंग", + "description": "तृतीय-पक्ष LLMOps प्रदाता को कॉन्फ़िगर करना और एप्लिकेशन प्रदर्शन का ट्रेस करना।", + "config": "कॉन्फ़िगर करें", + "collapse": "संकुचित करें", + "expand": "विस्तृत करें", + "tracing": "ट्रेसिंग", + "disabled": "अक्षम", + "disabledTip": "कृपया पहले प्रदाता को कॉन्फ़िगर करें", + "enabled": "सेवा में", + "tracingDescription": "एप्लिकेशन निष्पादन का पूरा संदर्भ कैप्चर करें, जिसमें LLM कॉल, संदर्भ, प्रॉम्प्ट्स, HTTP अनुरोध और अधिक शामिल हैं, एक तृतीय-पक्ष ट्रेसिंग प्लेटफ़ॉर्म पर।", + "configProviderTitle": { + "configured": "कॉन्फ़िगर किया गया", + "notConfigured": "ट्रेसिंग सक्षम करने के लिए प्रदाता कॉन्फ़िगर करें", + "moreProvider": "अधिक प्रदाता" + }, + "arize": { + "title": "Arize", + "description": "एंटरप्राइज-स्तरीय LLM ऑब्ज़र्वेबिलिटी, ऑनलाइन और ऑफ़लाइन मूल्यांकन, मॉनिटरिंग और प्रयोग — OpenTelemetry द्वारा समर्थित। LLM और एजेंट-आधारित अनुप्रयोगों के लिए विशेष रूप से तैयार किया गया।" + }, + "phoenix": { + "title": "Phoenix", + "description": "आपके LLM वर्कफ़्लोज़ और एजेंट्स के लिए ओपन-सोर्स और OpenTelemetry-आधारित ऑब्ज़र्वेबिलिटी, मूल्यांकन, प्रॉम्प्ट इंजीनियरिंग और प्रयोग का प्लेटफ़ॉर्म।" + }, + "langsmith": { + "title": "LangSmith", + "description": "LLM-संचालित एप्लिकेशन जीवनचक्र के प्रत्येक चरण के लिए एक ऑल-इन-वन डेवलपर प्लेटफ़ॉर्म।" + }, + "langfuse": { + "title": "Langfuse", + "description": "आपके LLM एप्लिकेशन को डीबग और सुधारने के लिए ट्रेस, मूल्यांकन, प्रॉम्प्ट प्रबंधन और मेट्रिक्स।" + }, + "inUse": "उपयोग में", + "configProvider": { + "title": "कॉन्फ़िगर करें ", + "placeholder": "अपना {{key}} दर्ज करें", + "project": "प्रोजेक्ट", + "publicKey": "सार्वजनिक कुंजी", + "secretKey": "गुप्त कुंजी", + "viewDocsLink": "{{key}} दस्तावेज़ देखें", + "removeConfirmTitle": "{{key}} कॉन्फ़िगरेशन हटाएं?", + "removeConfirmContent": "वर्तमान कॉन्फ़िगरेशन उपयोग में है, इसे हटाने से ट्रेसिंग सुविधा बंद हो जाएगी।", + "password": "पासवर्ड", + "clientId": "OAuth क्लाइंट आईडी", + "clientSecret": "OAuth क्लाइंट सीक्रेट", + "trackingUri": "ट्रैकिंग यूआरआई", + "username": "उपयोगकर्ता नाम", + "experimentId": "प्रयोग आईडी", + "databricksHost": "डेटाब्रिक्स वर्कस्पेस यूआरएल", + "personalAccessToken": "व्यक्तिगत एक्सेस टोकन (पुराना)" + }, + "view": "देखना", + "opik": { + "title": "ओपिक", + "description": "ओपिक एलएलएम अनुप्रयोगों के मूल्यांकन, परीक्षण और निगरानी के लिए एक ओपन-सोर्स प्लेटफॉर्म है।" + }, + "weave": { + "title": "बुनना", + "description": "वीव एक ओपन-सोर्स प्लेटफ़ॉर्म है जो LLM अनुप्रयोगों का मूल्यांकन, परीक्षण और निगरानी करने के लिए है।" + }, + "aliyun": { + "title": "क्लाउड मॉनिटर", + "description": "अलीबाबा क्लाउड द्वारा प्रदान की गई पूरी तरह से प्रबंधित और रखरखाव-मुक्त अवलोकन प्लेटफ़ॉर्म, Dify अनुप्रयोगों की स्वचालित निगरानी, ट्रेसिंग और मूल्यांकन का सक्षम बनाता है।" + }, + "mlflow": { + "title": "MLflow", + "description": "प्रयोग ट्रैकिंग, अवलोकनीयता और मूल्यांकन के लिए ओपन-सोर्स LLMOps प्लेटफ़ॉर्म, विश्वास के साथ AI/LLM ऐप्स बनाने के लिए।" + }, + "databricks": { + "title": "Databricks", + "description": "Databricks मजबूत शासन और सुरक्षा के साथ पूरी तरह से प्रबंधित MLflow प्रदान करता है, ट्रेस डेटा संग्रहीत करने के लिए।" + }, + "tencent": { + "title": "टेनसेंट एपीएम", + "description": "Tencent एप्लिकेशन परफॉर्मेंस मॉनिटरिंग LLM एप्लिकेशन के लिए व्यापक ट्रेसिंग और बहु-आयामी विश्लेषण प्रदान करता है।" + } + }, + "answerIcon": { + "title": "बदलने 🤖 के लिए web app चिह्न का उपयोग करें", + "descriptionInExplore": "एक्सप्लोर में बदलने 🤖 के लिए वेबऐप आइकन का उपयोग करना है या नहीं", + "description": "साझा अनुप्रयोग में प्रतिस्थापित 🤖 करने के लिए web app चिह्न का उपयोग करना है या नहीं" + }, + "importFromDSLFile": "डीएसएल फ़ाइल से", + "importFromDSLUrl": "यूआरएल से", + "importFromDSL": "DSL से आयात करें", + "importFromDSLUrlPlaceholder": "डीएसएल लिंक यहां पेस्ट करें", + "dslUploader": { + "button": "फ़ाइल खींचकर छोड़ें, या", + "browse": "ब्राउज़ करें" + }, + "mermaid": { + "handDrawn": "हाथ खींचा", + "classic": "क्लासिक" + }, + "openInExplore": "एक्सप्लोर में खोलें", + "newAppFromTemplate": { + "sidebar": { + "Writing": "कृतियाँ", + "Recommended": "अनुशंसित", + "Workflow": "कार्यप्रवाह", + "Assistant": "बिक्री सहायक", + "Agent": "आढ़तिया", + "Programming": "प्रोग्रामिंग", + "HR": "घंटा" + }, + "byCategories": "श्रेणियों द्वारा", + "searchAllTemplate": "सभी टेम्पलेट्स खोजें..." + }, + "showMyCreatedAppsOnly": "केवल मेरे बनाए गए ऐप्स दिखाएं", + "appSelector": { + "params": "ऐप पैरामीटर", + "noParams": "कोई पैरामीटर की आवश्यकता नहीं है।", + "placeholder": "एक ऐप चुनें...", + "label": "ऐप" + }, + "structOutput": { + "structured": "संरचित", + "required": "आवश्यक", + "LLMResponse": "LLM प्रतिक्रिया", + "moreFillTip": "अधिकतम 10 स्तरों की नेस्टिंग दिखाना", + "modelNotSupported": "मॉडल का समर्थन नहीं किया गया", + "configure": "कॉन्फ़िगर करें", + "notConfiguredTip": "संरचित आउटपुट को अभी तक कॉन्फ़िगर नहीं किया गया है", + "structuredTip": "संरचित आउटपुट एक विशेषता है जो यह सुनिश्चित करती है कि मॉडल हमेशा आपके प्रदान किए गए JSON स्कीमा के अनुसार प्रतिक्रियाएँ生成 करेगा।", + "modelNotSupportedTip": "वर्तमान मॉडल इस सुविधा का समर्थन नहीं करता है और स्वचालित रूप से प्रॉम्प्ट इंजेक्शन में डाउनग्रेड किया जाता है।" + }, + "accessItemsDescription": { + "anyone": "कोई भी वेब ऐप तक पहुँच सकता है", + "organization": "संस्थान के किसी भी व्यक्ति को वेब ऐप तक पहुंच प्राप्त है", + "specific": "केवल विशेष समूह या सदस्य ही वेब ऐप तक पहुंच सकते हैं", + "external": "केवल प्रमाणित बाहरी उपयोगकर्ता वेब अनुप्रयोग तक पहुँच सकते हैं" + }, + "accessControlDialog": { + "accessItems": { + "anyone": "लिंक के साथ कोई भी", + "specific": "विशिष्ट समूह या सदस्य", + "organization": "केवल उद्यम के भीतर के सदस्य", + "external": "प्रमाणित बाहरी उपयोगकर्ता" + }, + "operateGroupAndMember": { + "searchPlaceholder": "समूहों और सदस्यों की खोज करें", + "allMembers": "सभी सदस्य", + "expand": "व्याप्त करें", + "noResult": "कोई परिणाम नहीं" + }, + "title": "वेब एप्लिकेशन पहुँच नियंत्रण", + "description": "वेब ऐप एक्सेस अनुमतियाँ सेट करें", + "groups_one": "{{count}} समूह", + "groups_other": "{{count}} समूह", + "members_one": "{{count}} सदस्य", + "members_other": "{{count}} सदस्य", + "noGroupsOrMembers": "कोई समूह या सदस्य चयनित नहीं किया गया", + "updateSuccess": "सफलता से अपडेट किया गया", + "accessLabel": "किसके पास पहुँच है", + "webAppSSONotEnabledTip": "कृपया वेब ऐप प्रमाणीकरण विधि कॉन्फ़िगर करने के लिए उद्यम प्रशासक से संपर्क करें।" + }, + "publishApp": { + "title": "वेब ऐप तक कौन पहुँच सकता है", + "notSet": "अनुबंधित नहीं किया गया", + "notSetDesc": "वर्तमान में कोई भी वेब ऐप तक पहुंच नहीं बना सकता। कृपया अनुमतियाँ सेट करें।" + }, + "accessControl": "वेब एप्लिकेशन पहुँच नियंत्रण", + "noAccessPermission": "वेब एप्लिकेशन तक पहुँचने की अनुमति नहीं है", + "maxActiveRequests": "अधिकतम समवर्ती अनुरोध", + "maxActiveRequestsPlaceholder": "असीमित के लिए 0 दर्ज करें", + "maxActiveRequestsTip": "प्रति ऐप सक्रिय अनुरोधों की अधिकतम संख्या (असीमित के लिए 0)", + "gotoAnything": { + "actions": { + "searchPlugins": "प्लगइन्स खोजें", + "searchWorkflowNodes": "कार्यप्रवाह नोड्स खोजें", + "searchKnowledgeBases": "ज्ञान आधार खोजें", + "searchApplications": "एप्लिकेशन खोजें", + "searchPluginsDesc": "अपने प्लगइन्स को खोजें और नेविगेट करें", + "searchWorkflowNodesDesc": "वर्तमान कार्यप्रवाह में नाम या प्रकार द्वारा नोड्स को खोजें और उन पर कूदें", + "searchKnowledgeBasesDesc": "अपने ज्ञान आधारों की खोज करें और उन्हें नेविगेट करें", + "searchApplicationsDesc": "अपने अनुप्रयोगों की खोज करें और उन्हें नेविगेट करें", + "searchWorkflowNodesHelp": "यह सुविधा केवल तब काम करती है जब आप एक कार्यप्रवाह देख रहे हों। पहले एक कार्यप्रवाह पर जाएं।", + "themeCategoryTitle": "थीम", + "runTitle": "कमांड", + "languageCategoryTitle": "भाषा", + "languageCategoryDesc": "इंटरफेस भाषा बदलें", + "themeSystem": "सिस्टम थीम", + "themeLight": "लाइट थीम", + "themeDarkDesc": "डार्क उपस्थिति का प्रयोग करें", + "themeDark": "डार्क थीम", + "themeLightDesc": "हल्की उपस्थिति का प्रयोग करें", + "languageChangeDesc": "इंटरफेस भाषा बदलें", + "themeCategoryDesc": "ऐप की थीम बदलें", + "themeSystemDesc": "अपने ऑपरेटिंग सिस्टम की उपस्थिति का पालन करें", + "runDesc": "त्वरित कमांड चलाएँ (थीम, भाषा, ...)", + "slashDesc": "कमांड्स चलाएं जैसे /theme, /lang", + "accountDesc": "खाता पृष्ठ पर जाएं", + "docDesc": "सहायता दस्तावेज़ खोलें", + "communityDesc": "ओपन डिस्कॉर्ड समुदाय", + "feedbackDesc": "खुले समुदाय की फीडबैक चर्चाएँ", + "zenTitle": "Zen Mode", + "zenDesc": "Toggle canvas focus mode" + }, + "emptyState": { + "noPluginsFound": "कोई प्लगइन नहीं मिले", + "noAppsFound": "कोई ऐप्स नहीं मिले", + "noKnowledgeBasesFound": "कोई ज्ञान आधार नहीं मिले", + "noWorkflowNodesFound": "कोई कार्यप्रवाह नोड नहीं मिला", + "tryDifferentTerm": "एक अलग खोज शब्द आज़माएं या {{mode}} फ़िल्टर हटा दें", + "trySpecificSearch": "विशिष्ट खोज के लिए {{shortcuts}} आज़माएं" + }, + "groups": { + "apps": "ऐप्स", + "knowledgeBases": "ज्ञान आधार", + "plugins": "प्लगइन्स", + "workflowNodes": "कार्यप्रवाह नोड्स", + "commands": "आदेश" + }, + "noResults": "कोई परिणाम नहीं मिले", + "clearToSearchAll": "साफ़ @ सभी खोजने के लिए", + "searchTitle": "किसी भी चीज़ की खोज करें", + "useAtForSpecific": "@ का उपयोग विशिष्ट प्रकारों के लिए करें", + "someServicesUnavailable": "कुछ खोज सेवाएँ उपलब्ध नहीं हैं", + "searching": "खोजना...", + "searchFailed": "खोज विफल रहा", + "searchPlaceholder": "कमांड के लिए खोजें या टाइप करें @...", + "searchTemporarilyUnavailable": "खोज अस्थायी रूप से उपलब्ध नहीं है", + "servicesUnavailableMessage": "कुछ खोज सेवाएँ समस्याओं का सामना कर सकती हैं। थोड़ी देर बाद फिर से प्रयास करें।", + "commandHint": "@ का उपयोग कर श्रेणी के अनुसार ब्राउज़ करें", + "selectSearchType": "खोजने के लिए क्या चुनें", + "searchHint": "सब कुछ तुरंत खोजने के लिए टाइप करना शुरू करें", + "resultCount": "{{count}} परिणाम", + "resultCount_other": "{{count}} परिणाम", + "inScope": "{{scope}}s में", + "tryDifferentSearch": "एक अलग खोज शब्द आजमाएँ", + "noMatchingCommands": "कोई मिलती-जुलती कमांड्स नहीं मिलीं", + "slashHint": "सभी उपलब्ध कमांड देखने के लिए टाइप करें /", + "pressEscToClose": "बंद करने के लिए ESC दबाएं", + "startTyping": "खोजने के लिए टाइप करना शुरू करें", + "selectToNavigate": "नेविगेट करने के लिए चुनें", + "tips": "नेविगेट करने के लिए ↑↓ दबाएँ" + }, + "noUserInputNode": "उपयोगकर्ता इनपुट नोड गायब है", + "notPublishedYet": "ऐप अभी प्रकाशित नहीं हुआ है" +} diff --git a/web/i18n/hi-IN/app.ts b/web/i18n/hi-IN/app.ts deleted file mode 100644 index 22f1cdd2fc..0000000000 --- a/web/i18n/hi-IN/app.ts +++ /dev/null @@ -1,351 +0,0 @@ -const translation = { - createApp: 'ऐप बनाएँ', - types: { - all: 'सभी', - chatbot: 'चैटबॉट', - agent: 'एजेंट', - workflow: 'वर्कफ़्लो', - completion: 'समाप्ति', - advanced: 'चैटफ्लो', - basic: 'मूलवर्ती', - }, - duplicate: 'डुप्लिकेट', - duplicateTitle: 'ऐप डुप्लिकेट करें', - export: 'डीएसएल निर्यात करें', - exportFailed: 'डीएसएल निर्यात विफल हुआ।', - importDSL: 'डीएसएल फ़ाइल आयात करें', - createFromConfigFile: 'डीएसएल फ़ाइल से बनाएँ', - deleteAppConfirmTitle: 'इस ऐप को हटाएँ?', - deleteAppConfirmContent: - 'ऐप को हटाना अपरिवर्तनीय है। उपयोगकर्ता अब आपके ऐप तक पहुँचने में सक्षम नहीं होंगे, और सभी प्रॉम्प्ट कॉन्फ़िगरेशन और लॉग स्थायी रूप से हटा दिए जाएंगे।', - appDeleted: 'ऐप हटाया गया', - appDeleteFailed: 'ऐप हटाने में विफल', - join: 'समुदाय में शामिल हों', - communityIntro: - 'टीम के सदस्यों, योगदानकर्ताओं और डेवलपर्स के साथ विभिन्न चैनलों पर चर्चा करें।', - roadmap: 'हमारा रोडमैप देखें', - newApp: { - startFromBlank: 'रिक्त से बनाएँ', - startFromTemplate: 'टेम्पलेट से बनाएँ', - workflowWarning: 'वर्तमान में बीटा में', - captionName: 'ऐप आइकन और नाम', - appNamePlaceholder: 'अपने ऐप को नाम दें', - captionDescription: 'विवरण', - appDescriptionPlaceholder: 'ऐप का विवरण दर्ज करें', - useTemplate: 'इस टेम्पलेट का उपयोग करें', - previewDemo: 'पूर्वावलोकन डेमो', - chatApp: 'सहायक', - chatAppIntro: - 'मैं एक चैट-आधारित एप्लिकेशन बनाना चाहता हूँ। यह ऐप प्रश्न-उत्तर प्रारूप का उपयोग करता है, जिससे निरंतर बातचीत के कई राउंड संभव होते हैं।', - agentAssistant: 'नया एजेंट सहायक', - completeApp: 'टेक्स्ट जनरेटर', - completeAppIntro: - 'मैं एक ऐसा एप्लिकेशन बनाना चाहता हूँ जो प्रॉम्प्ट्स के आधार पर उच्च गुणवत्ता वाला टेक्स्ट उत्पन्न करता है, जैसे लेख, सारांश, अनुवाद आदि उत्पन्न करना।', - showTemplates: 'मैं टेम्पलेट से चुनना चाहता हूँ', - hideTemplates: 'मोड चयन पर वापस जाएँ', - Create: 'बनाएँ', - Cancel: 'रद्द करें', - nameNotEmpty: 'नाम खाली नहीं हो सकता', - appTemplateNotSelected: 'कृपया एक टेम्पलेट चुनें', - appTypeRequired: 'कृपया एक ऐप प्रकार चुनें', - appCreated: 'ऐप बनाया गया', - appCreateFailed: 'ऐप बनाने में विफल', - Confirm: 'सुदृढ़ करना', - appCreateDSLErrorPart4: 'सिस्टम-समर्थित DSL संस्करण:', - appCreateDSLErrorPart3: 'वर्तमान अनुप्रयोग डीएसएल संस्करण:', - caution: 'सावधानी', - appCreateDSLErrorTitle: 'संस्करण असंगति', - appCreateDSLErrorPart1: 'डीएसएल संस्करणों में एक महत्वपूर्ण अंतर पाया गया है। आयात को बाध्य करने से अनुप्रयोग में खराबी आ सकती है।', - appCreateDSLWarning: 'सावधानी: DSL संस्करण अंतर कुछ सुविधाओं को प्रभावित कर सकता है', - appCreateDSLErrorPart2: 'क्या आप जारी रखना चाहते हैं?', - learnMore: 'और जानो', - forBeginners: 'नए उपयोगकर्ताओं के लिए बुनियादी ऐप प्रकार', - foundResults: '{{count}} परिणाम', - forAdvanced: 'उन्नत उपयोगकर्ताओं के लिए', - agentUserDescription: 'पुनरावृत्त तर्क और स्वायत्त उपकरण में सक्षम एक बुद्धिमान एजेंट कार्य लक्ष्यों को प्राप्त करने के लिए उपयोग करता है।', - optional: 'वैकल्पिक', - chatbotShortDescription: 'सरल सेटअप के साथ एलएलएम-आधारित चैटबॉट', - foundResult: '{{count}} परिणाम', - completionUserDescription: 'सरल कॉन्फ़िगरेशन के साथ पाठ निर्माण कार्यों के लिए त्वरित रूप से AI सहायक बनाएं।', - noIdeaTip: 'कोई विचार नहीं? हमारे टेम्प्लेट देखें', - noTemplateFound: 'कोई टेम्पलेट नहीं मिला', - completionShortDescription: 'पाठ निर्माण कार्यों के लिए AI सहायक', - noAppsFound: 'कोई ऐप्लिकेशन नहीं मिला', - chooseAppType: 'ऐप प्रकार चुनें', - agentShortDescription: 'तर्क और स्वायत्त उपकरण उपयोग के साथ बुद्धिमान एजेंट', - workflowShortDescription: 'बुद्धिमान स्वचालन के लिए एजेंटिक प्रवाह', - chatbotUserDescription: 'सरल कॉन्फ़िगरेशन के साथ जल्दी से एलएलएम-आधारित चैटबॉट बनाएं। आप बाद में चैटफ्लो पर स्विच कर सकते हैं।', - advancedUserDescription: 'अतिरिक्त मेमोरी सुविधाओं और चैटबॉट इंटरफेस के साथ वर्कफ़्लो।', - advancedShortDescription: 'बहु-चरण वार्तालाप के लिए उन्नत वर्कफ़्लो', - noTemplateFoundTip: 'विभिन्न कीवर्ड का उपयोग करके खोजने का प्रयास करें।', - workflowUserDescription: 'ड्रैग-एंड-ड्रॉप सरलता के साथ स्वायत्त AI वर्कफ़्लो का दृश्य निर्माण करें।', - dropDSLToCreateApp: 'यहाँ DSL फ़ाइल ड्रॉप करें ताकि ऐप बनाया जा सके', - import: 'आयात', - }, - editApp: 'जानकारी संपादित करें', - editAppTitle: 'ऐप जानकारी संपादित करें', - editDone: 'ऐप जानकारी अपडेट की गई', - editFailed: 'ऐप जानकारी अपडेट करने में विफल', - iconPicker: { - ok: 'ठीक है', - cancel: 'रद्द करें', - emoji: 'इमोजी', - image: 'छवि', - }, - switch: 'वर्कफ़्लो ऑर्केस्ट्रेट पर स्विच करें', - switchTipStart: 'आपके लिए एक नई ऐप कॉपी बनाई जाएगी, और नई कॉपी वर्कफ़्लो ऑर्केस्ट्रेट में स्विच हो जाएगी। नई कॉपी ', - switchTip: 'की अनुमति नहीं देगा', - switchTipEnd: ' बेसिक ऑर्केस्ट्रेट में स्विच करना।', - switchLabel: 'बनाई जाने वाली ऐप कॉपी', - removeOriginal: 'मूल ऐप हटाएँ', - switchStart: 'स्विच शुरू करें', - typeSelector: { - all: 'सभी प्रकार', - chatbot: 'चैटबॉट', - agent: 'एजेंट', - workflow: 'वर्कफ़्लो', - completion: 'समाप्ति', - advanced: 'चैटफ्लो', - }, - tracing: { - title: 'एप्लिकेशन प्रदर्शन ट्रेसिंग', - description: 'तृतीय-पक्ष LLMOps प्रदाता को कॉन्फ़िगर करना और एप्लिकेशन प्रदर्शन का ट्रेस करना।', - config: 'कॉन्फ़िगर करें', - collapse: 'संकुचित करें', - expand: 'विस्तृत करें', - tracing: 'ट्रेसिंग', - disabled: 'अक्षम', - disabledTip: 'कृपया पहले प्रदाता को कॉन्फ़िगर करें', - enabled: 'सेवा में', - tracingDescription: 'एप्लिकेशन निष्पादन का पूरा संदर्भ कैप्चर करें, जिसमें LLM कॉल, संदर्भ, प्रॉम्प्ट्स, HTTP अनुरोध और अधिक शामिल हैं, एक तृतीय-पक्ष ट्रेसिंग प्लेटफ़ॉर्म पर।', - configProviderTitle: { - configured: 'कॉन्फ़िगर किया गया', - notConfigured: 'ट्रेसिंग सक्षम करने के लिए प्रदाता कॉन्फ़िगर करें', - moreProvider: 'अधिक प्रदाता', - }, - arize: { - title: 'Arize', - description: 'एंटरप्राइज-स्तरीय LLM ऑब्ज़र्वेबिलिटी, ऑनलाइन और ऑफ़लाइन मूल्यांकन, मॉनिटरिंग और प्रयोग — OpenTelemetry द्वारा समर्थित। LLM और एजेंट-आधारित अनुप्रयोगों के लिए विशेष रूप से तैयार किया गया।', - }, - phoenix: { - title: 'Phoenix', - description: 'आपके LLM वर्कफ़्लोज़ और एजेंट्स के लिए ओपन-सोर्स और OpenTelemetry-आधारित ऑब्ज़र्वेबिलिटी, मूल्यांकन, प्रॉम्प्ट इंजीनियरिंग और प्रयोग का प्लेटफ़ॉर्म।', - }, - langsmith: { - title: 'LangSmith', - description: 'LLM-संचालित एप्लिकेशन जीवनचक्र के प्रत्येक चरण के लिए एक ऑल-इन-वन डेवलपर प्लेटफ़ॉर्म।', - }, - langfuse: { - title: 'Langfuse', - description: 'आपके LLM एप्लिकेशन को डीबग और सुधारने के लिए ट्रेस, मूल्यांकन, प्रॉम्प्ट प्रबंधन और मेट्रिक्स।', - }, - inUse: 'उपयोग में', - configProvider: { - title: 'कॉन्फ़िगर करें ', - placeholder: 'अपना {{key}} दर्ज करें', - project: 'प्रोजेक्ट', - publicKey: 'सार्वजनिक कुंजी', - secretKey: 'गुप्त कुंजी', - viewDocsLink: '{{key}} दस्तावेज़ देखें', - removeConfirmTitle: '{{key}} कॉन्फ़िगरेशन हटाएं?', - removeConfirmContent: 'वर्तमान कॉन्फ़िगरेशन उपयोग में है, इसे हटाने से ट्रेसिंग सुविधा बंद हो जाएगी।', - password: 'पासवर्ड', - clientId: 'OAuth क्लाइंट आईडी', - clientSecret: 'OAuth क्लाइंट सीक्रेट', - trackingUri: 'ट्रैकिंग यूआरआई', - username: 'उपयोगकर्ता नाम', - experimentId: 'प्रयोग आईडी', - databricksHost: 'डेटाब्रिक्स वर्कस्पेस यूआरएल', - personalAccessToken: 'व्यक्तिगत एक्सेस टोकन (पुराना)', - }, - view: 'देखना', - opik: { - title: 'ओपिक', - description: 'ओपिक एलएलएम अनुप्रयोगों के मूल्यांकन, परीक्षण और निगरानी के लिए एक ओपन-सोर्स प्लेटफॉर्म है।', - }, - weave: { - title: 'बुनना', - description: 'वीव एक ओपन-सोर्स प्लेटफ़ॉर्म है जो LLM अनुप्रयोगों का मूल्यांकन, परीक्षण और निगरानी करने के लिए है।', - }, - aliyun: { - title: 'क्लाउड मॉनिटर', - description: 'अलीबाबा क्लाउड द्वारा प्रदान की गई पूरी तरह से प्रबंधित और रखरखाव-मुक्त अवलोकन प्लेटफ़ॉर्म, Dify अनुप्रयोगों की स्वचालित निगरानी, ट्रेसिंग और मूल्यांकन का सक्षम बनाता है।', - }, - mlflow: { - title: 'MLflow', - description: 'प्रयोग ट्रैकिंग, अवलोकनीयता और मूल्यांकन के लिए ओपन-सोर्स LLMOps प्लेटफ़ॉर्म, विश्वास के साथ AI/LLM ऐप्स बनाने के लिए।', - }, - databricks: { - title: 'Databricks', - description: 'Databricks मजबूत शासन और सुरक्षा के साथ पूरी तरह से प्रबंधित MLflow प्रदान करता है, ट्रेस डेटा संग्रहीत करने के लिए।', - }, - tencent: { - title: 'टेनसेंट एपीएम', - description: 'Tencent एप्लिकेशन परफॉर्मेंस मॉनिटरिंग LLM एप्लिकेशन के लिए व्यापक ट्रेसिंग और बहु-आयामी विश्लेषण प्रदान करता है।', - }, - }, - answerIcon: { - title: 'बदलने 🤖 के लिए web app चिह्न का उपयोग करें', - descriptionInExplore: 'एक्सप्लोर में बदलने 🤖 के लिए वेबऐप आइकन का उपयोग करना है या नहीं', - description: 'साझा अनुप्रयोग में प्रतिस्थापित 🤖 करने के लिए web app चिह्न का उपयोग करना है या नहीं', - }, - importFromDSLFile: 'डीएसएल फ़ाइल से', - importFromDSLUrl: 'यूआरएल से', - importFromDSL: 'DSL से आयात करें', - importFromDSLUrlPlaceholder: 'डीएसएल लिंक यहां पेस्ट करें', - dslUploader: { - button: 'फ़ाइल खींचकर छोड़ें, या', - browse: 'ब्राउज़ करें', - }, - mermaid: { - handDrawn: 'हाथ खींचा', - classic: 'क्लासिक', - }, - openInExplore: 'एक्सप्लोर में खोलें', - newAppFromTemplate: { - sidebar: { - Writing: 'कृतियाँ', - Recommended: 'अनुशंसित', - Workflow: 'कार्यप्रवाह', - Assistant: 'बिक्री सहायक', - Agent: 'आढ़तिया', - Programming: 'प्रोग्रामिंग', - HR: 'घंटा', - }, - byCategories: 'श्रेणियों द्वारा', - searchAllTemplate: 'सभी टेम्पलेट्स खोजें...', - }, - showMyCreatedAppsOnly: 'केवल मेरे बनाए गए ऐप्स दिखाएं', - appSelector: { - params: 'ऐप पैरामीटर', - noParams: 'कोई पैरामीटर की आवश्यकता नहीं है।', - placeholder: 'एक ऐप चुनें...', - label: 'ऐप', - }, - structOutput: { - structured: 'संरचित', - required: 'आवश्यक', - LLMResponse: 'LLM प्रतिक्रिया', - moreFillTip: 'अधिकतम 10 स्तरों की नेस्टिंग दिखाना', - modelNotSupported: 'मॉडल का समर्थन नहीं किया गया', - configure: 'कॉन्फ़िगर करें', - notConfiguredTip: 'संरचित आउटपुट को अभी तक कॉन्फ़िगर नहीं किया गया है', - structuredTip: 'संरचित आउटपुट एक विशेषता है जो यह सुनिश्चित करती है कि मॉडल हमेशा आपके प्रदान किए गए JSON स्कीमा के अनुसार प्रतिक्रियाएँ生成 करेगा।', - modelNotSupportedTip: 'वर्तमान मॉडल इस सुविधा का समर्थन नहीं करता है और स्वचालित रूप से प्रॉम्प्ट इंजेक्शन में डाउनग्रेड किया जाता है।', - }, - accessItemsDescription: { - anyone: 'कोई भी वेब ऐप तक पहुँच सकता है', - organization: 'संस्थान के किसी भी व्यक्ति को वेब ऐप तक पहुंच प्राप्त है', - specific: 'केवल विशेष समूह या सदस्य ही वेब ऐप तक पहुंच सकते हैं', - external: 'केवल प्रमाणित बाहरी उपयोगकर्ता वेब अनुप्रयोग तक पहुँच सकते हैं', - }, - accessControlDialog: { - accessItems: { - anyone: 'लिंक के साथ कोई भी', - specific: 'विशिष्ट समूह या सदस्य', - organization: 'केवल उद्यम के भीतर के सदस्य', - external: 'प्रमाणित बाहरी उपयोगकर्ता', - }, - operateGroupAndMember: { - searchPlaceholder: 'समूहों और सदस्यों की खोज करें', - allMembers: 'सभी सदस्य', - expand: 'व्याप्त करें', - noResult: 'कोई परिणाम नहीं', - }, - title: 'वेब एप्लिकेशन पहुँच नियंत्रण', - description: 'वेब ऐप एक्सेस अनुमतियाँ सेट करें', - groups_one: '{{count}} समूह', - groups_other: '{{count}} समूह', - members_one: '{{count}} सदस्य', - members_other: '{{count}} सदस्य', - noGroupsOrMembers: 'कोई समूह या सदस्य चयनित नहीं किया गया', - updateSuccess: 'सफलता से अपडेट किया गया', - accessLabel: 'किसके पास पहुँच है', - webAppSSONotEnabledTip: 'कृपया वेब ऐप प्रमाणीकरण विधि कॉन्फ़िगर करने के लिए उद्यम प्रशासक से संपर्क करें।', - }, - publishApp: { - title: 'वेब ऐप तक कौन पहुँच सकता है', - notSet: 'अनुबंधित नहीं किया गया', - notSetDesc: 'वर्तमान में कोई भी वेब ऐप तक पहुंच नहीं बना सकता। कृपया अनुमतियाँ सेट करें।', - }, - accessControl: 'वेब एप्लिकेशन पहुँच नियंत्रण', - noAccessPermission: 'वेब एप्लिकेशन तक पहुँचने की अनुमति नहीं है', - maxActiveRequests: 'अधिकतम समवर्ती अनुरोध', - maxActiveRequestsPlaceholder: 'असीमित के लिए 0 दर्ज करें', - maxActiveRequestsTip: 'प्रति ऐप सक्रिय अनुरोधों की अधिकतम संख्या (असीमित के लिए 0)', - gotoAnything: { - actions: { - searchPlugins: 'प्लगइन्स खोजें', - searchWorkflowNodes: 'कार्यप्रवाह नोड्स खोजें', - searchKnowledgeBases: 'ज्ञान आधार खोजें', - searchApplications: 'एप्लिकेशन खोजें', - searchPluginsDesc: 'अपने प्लगइन्स को खोजें और नेविगेट करें', - searchWorkflowNodesDesc: 'वर्तमान कार्यप्रवाह में नाम या प्रकार द्वारा नोड्स को खोजें और उन पर कूदें', - searchKnowledgeBasesDesc: 'अपने ज्ञान आधारों की खोज करें और उन्हें नेविगेट करें', - searchApplicationsDesc: 'अपने अनुप्रयोगों की खोज करें और उन्हें नेविगेट करें', - searchWorkflowNodesHelp: 'यह सुविधा केवल तब काम करती है जब आप एक कार्यप्रवाह देख रहे हों। पहले एक कार्यप्रवाह पर जाएं।', - themeCategoryTitle: 'थीम', - runTitle: 'कमांड', - languageCategoryTitle: 'भाषा', - languageCategoryDesc: 'इंटरफेस भाषा बदलें', - themeSystem: 'सिस्टम थीम', - themeLight: 'लाइट थीम', - themeDarkDesc: 'डार्क उपस्थिति का प्रयोग करें', - themeDark: 'डार्क थीम', - themeLightDesc: 'हल्की उपस्थिति का प्रयोग करें', - languageChangeDesc: 'इंटरफेस भाषा बदलें', - themeCategoryDesc: 'ऐप की थीम बदलें', - themeSystemDesc: 'अपने ऑपरेटिंग सिस्टम की उपस्थिति का पालन करें', - runDesc: 'त्वरित कमांड चलाएँ (थीम, भाषा, ...)', - slashDesc: 'कमांड्स चलाएं जैसे /theme, /lang', - accountDesc: 'खाता पृष्ठ पर जाएं', - docDesc: 'सहायता दस्तावेज़ खोलें', - communityDesc: 'ओपन डिस्कॉर्ड समुदाय', - feedbackDesc: 'खुले समुदाय की फीडबैक चर्चाएँ', - zenTitle: 'Zen Mode', - zenDesc: 'Toggle canvas focus mode', - }, - emptyState: { - noPluginsFound: 'कोई प्लगइन नहीं मिले', - noAppsFound: 'कोई ऐप्स नहीं मिले', - noKnowledgeBasesFound: 'कोई ज्ञान आधार नहीं मिले', - noWorkflowNodesFound: 'कोई कार्यप्रवाह नोड नहीं मिला', - tryDifferentTerm: 'एक अलग खोज शब्द आज़माएं या {{mode}} फ़िल्टर हटा दें', - trySpecificSearch: 'विशिष्ट खोज के लिए {{shortcuts}} आज़माएं', - }, - groups: { - apps: 'ऐप्स', - knowledgeBases: 'ज्ञान आधार', - plugins: 'प्लगइन्स', - workflowNodes: 'कार्यप्रवाह नोड्स', - commands: 'आदेश', - }, - noResults: 'कोई परिणाम नहीं मिले', - clearToSearchAll: 'साफ़ @ सभी खोजने के लिए', - searchTitle: 'किसी भी चीज़ की खोज करें', - useAtForSpecific: '@ का उपयोग विशिष्ट प्रकारों के लिए करें', - someServicesUnavailable: 'कुछ खोज सेवाएँ उपलब्ध नहीं हैं', - searching: 'खोजना...', - searchFailed: 'खोज विफल रहा', - searchPlaceholder: 'कमांड के लिए खोजें या टाइप करें @...', - searchTemporarilyUnavailable: 'खोज अस्थायी रूप से उपलब्ध नहीं है', - servicesUnavailableMessage: 'कुछ खोज सेवाएँ समस्याओं का सामना कर सकती हैं। थोड़ी देर बाद फिर से प्रयास करें।', - commandHint: '@ का उपयोग कर श्रेणी के अनुसार ब्राउज़ करें', - selectSearchType: 'खोजने के लिए क्या चुनें', - searchHint: 'सब कुछ तुरंत खोजने के लिए टाइप करना शुरू करें', - resultCount: '{{count}} परिणाम', - resultCount_other: '{{count}} परिणाम', - inScope: '{{scope}}s में', - tryDifferentSearch: 'एक अलग खोज शब्द आजमाएँ', - noMatchingCommands: 'कोई मिलती-जुलती कमांड्स नहीं मिलीं', - slashHint: 'सभी उपलब्ध कमांड देखने के लिए टाइप करें /', - pressEscToClose: 'बंद करने के लिए ESC दबाएं', - startTyping: 'खोजने के लिए टाइप करना शुरू करें', - selectToNavigate: 'नेविगेट करने के लिए चुनें', - tips: 'नेविगेट करने के लिए ↑↓ दबाएँ', - }, - noUserInputNode: 'उपयोगकर्ता इनपुट नोड गायब है', - notPublishedYet: 'ऐप अभी प्रकाशित नहीं हुआ है', -} - -export default translation diff --git a/web/i18n/hi-IN/billing.json b/web/i18n/hi-IN/billing.json new file mode 100644 index 0000000000..d9abfa85fa --- /dev/null +++ b/web/i18n/hi-IN/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "वर्तमान योजना", + "upgradeBtn": { + "plain": "योजना अपग्रेड करें", + "encourage": "अभी अपग्रेड करें", + "encourageShort": "अपग्रेड करें" + }, + "viewBilling": "बिलिंग और सब्सक्रिप्शन प्रबंधित करें", + "buyPermissionDeniedTip": "सब्सक्राइब करने के लिए कृपया अपने एंटरप्राइज़ व्यवस्थापक से संपर्क करें", + "plansCommon": { + "yearlyTip": "वार्षिक सब्सक्राइब करने पर 2 महीने मुफ्त पाएं!", + "mostPopular": "सबसे लोकप्रिय", + "planRange": { + "monthly": "मासिक", + "yearly": "वार्षिक" + }, + "month": "महीना", + "year": "साल", + "save": "बचत करें ", + "free": "मुफ्त", + "currentPlan": "वर्तमान योजना", + "contractSales": "बिक्री से संपर्क करें", + "contractOwner": "टीम प्रबंधक से संपर्क करें", + "startForFree": "मुफ्त में शुरू करें", + "contactSales": "बिक्री से संपर्क करें", + "talkToSales": "बिक्री से बात करें", + "modelProviders": "मॉडल प्रदाता", + "annotationQuota": "एनोटेशन कोटा", + "buildApps": "ऐप्स बनाएं", + "vectorSpace": "वेक्टर स्पेस", + "vectorSpaceTooltip": "वेक्टर स्पेस वह दीर्घकालिक स्मृति प्रणाली है जिसकी आवश्यकता LLMs को आपके डेटा को समझने के लिए होती है।", + "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 कुंजी का उपयोग करेंगे।", + "titlePerMonth": "{{count,number}} संदेश/महीना" + }, + "annotatedResponse": { + "title": "एनोटेशन कोटा सीमाएं", + "tooltip": "प्रतिक्रियाओं का मैन्युअल संपादन और एनोटेशन ऐप्स के लिए अनुकूलन योग्य उच्च-गुणवत्ता वाले प्रश्न-उत्तर क्षमताएं प्रदान करता है। (केवल चैट ऐप्स में लागू)" + }, + "ragAPIRequestTooltip": "Dify की केवल ज्ञान आधार प्रसंस्करण क्षमताओं को आह्वान करने वाले API कॉल की संख्या को संदर्भित करता है।", + "receiptInfo": "केवल टीम के मालिक और टीम एडमिन सब्सक्राइब कर सकते हैं और बिलिंग जानकारी देख सकते हैं", + "freeTrialTipPrefix": "साइन अप करें और प्राप्त करें एक", + "teamMember_other": "{{count,number}} टीम सदस्य", + "comparePlanAndFeatures": "योजना और विशेषताओं की तुलना करें", + "apiRateLimit": "एपीआई दर सीमा", + "documentsRequestQuota": "{{count,number}}/मिनट ज्ञान अनुरोध दर सीमा", + "self": "स्व-होस्टेड", + "getStarted": "शुरू करें", + "annualBilling": "वार्षिक बिलिंग", + "documentsTooltip": "ज्ञान डेटा स्रोत से आयात किए गए दस्तावेजों की संख्या पर कोटा।", + "priceTip": "प्रत्येक कार्यक्षेत्र/", + "cloud": "क्लाउड सेवा", + "unlimitedApiRate": "कोई एपीआई दर सीमा नहीं", + "freeTrialTip": "200 ओपनएआई कॉल्स का मुफ्त परीक्षण।", + "documents": "{{count,number}} ज्ञान दस्तावेज़", + "freeTrialTipSuffix": "कोई क्रेडिट कार्ड की आवश्यकता नहीं है", + "apiRateLimitUnit": "{{count,number}}", + "teamWorkspace": "{{count,number}} टीम कार्यक्षेत्र", + "apiRateLimitTooltip": "Dify API के माध्यम से की गई सभी अनुरोधों पर API दर सीमा लागू होती है, जिसमें टेक्स्ट जनरेशन, चैट वार्तालाप, कार्यप्रवाह निष्पादन और दस्तावेज़ प्रसंस्करण शामिल हैं।", + "teamMember_one": "{{count,number}} टीम सदस्य", + "documentsRequestQuotaTooltip": "यह ज्ञान आधार में एक कार्यक्षेत्र द्वारा प्रति मिनट किए जा सकने वाले कुल कार्यों की संख्या को निर्दिष्ट करता है, जिसमें डेटासेट बनाना, हटाना, अपडेट करना, दस्तावेज़ अपलोड करना, संशोधन करना, संग्रहित करना और ज्ञान आधार अनुरोध शामिल हैं। इस मीट्रिक का उपयोग ज्ञान आधार अनुरोधों के प्रदर्शन का मूल्यांकन करने के लिए किया जाता है। उदाहरण के लिए, यदि एक सैंडबॉक्स उपयोगकर्ता एक मिनट के भीतर 10 लगातार हिट परीक्षण करता है, तो उनके कार्यक्षेत्र को अगले मिनट के लिए निम्नलिखित कार्यों को करने से अस्थायी रूप से प्रतिबंधित किया जाएगा: डेटासेट बनाना, हटाना, अपडेट करना और दस्तावेज़ अपलोड या संशोधन करना।", + "startBuilding": "बनाना शुरू करें", + "taxTip": "सभी सदस्यता मूल्य (मासिक/वार्षिक) लागू करों (जैसे, VAT, बिक्री कर) को शामिल नहीं करते हैं।", + "taxTipSecond": "यदि आपके क्षेत्र में कोई लागू कर आवश्यकताएँ नहीं हैं, तो आपकी चेकआउट में कोई कर नहीं दिखाई देगा, और पूरे सदस्यता अवधि के लिए आपसे कोई अतिरिक्त शुल्क नहीं लिया जाएगा।", + "triggerEvents": { + "unlimited": "असीमित ट्रिगर इवेंट्स", + "tooltip": "घटनाओं की संख्या जो प्लगइन, शेड्यूल या वेबहुक ट्रिगर के माध्यम से स्वतः वर्कफ़्लो शुरू करती हैं।", + "sandbox": "{{count,number}} ट्रिगर इवेंट्स", + "professional": "{{count,number}} ट्रिगर इवेंट/महीना" + }, + "workflowExecution": { + "standard": "मानक कार्यप्रवाह निष्पादन", + "faster": "तेज़ कार्यप्रवाह निष्पादन", + "priority": "प्राथमिकता कार्यप्रवाह निष्पादन", + "tooltip": "वर्कफ़्लो निष्पादन कतार की प्राथमिकता और गति।" + }, + "startNodes": { + "unlimited": "असीमित ट्रिगर्स/कार्यप्रवाह", + "limited": "{{count}} ट्रिगर्स/वर्कफ़्लो तक" + }, + "title": { + "plans": "योजनाएँ", + "description": "उस योजना का चयन करें जो आपकी टीम की जरूरतों के लिए सबसे उपयुक्त हो।" + } + }, + "plans": { + "sandbox": { + "name": "सैंडबॉक्स", + "description": "200 बार GPT मुफ्त ट्रायल", + "for": "कोर क्षमताओं का मुफ्त परीक्षण" + }, + "professional": { + "name": "प्रोफेशनल", + "description": "व्यक्तियों और छोटे टीमों के लिए अधिक शक्ति सस्ती दर पर खोलें।", + "for": "स्वतंत्र डेवलपर्स/छोटे टीमों के लिए" + }, + "team": { + "name": "टीम", + "description": "बिना सीमा के सहयोग करें और शीर्ष स्तरीय प्रदर्शन का आनंद लें।", + "for": "मध्यम आकार की टीमों के लिए" + }, + "enterprise": { + "name": "एंटरप्राइज़", + "description": "बड़े पैमाने पर मिशन-क्रिटिकल सिस्टम के लिए पूर्ण क्षमताएं और समर्थन प्राप्त करें।", + "includesTitle": "टीम योजना में सब कुछ, साथ में:", + "features": [ + "एंटरप्राइज-ग्रेड स्केलेबल डिप्लॉयमेंट समाधान", + "व्यावसायिक लाइसेंस प्राधिकरण", + "विशेष एंटरप्राइज सुविधाएँ", + "कई कार्यक्षेत्र और एंटरप्राइज प्रबंधन", + "एसएसओ", + "डिफ़ी पार्टनर्स द्वारा बातचीत किए गए SLA", + "उन्नत सुरक्षा और नियंत्रण", + "Dify द्वारा आधिकारिक रूप से अपडेट और रखरखाव", + "पेशेवर तकनीकी समर्थन" + ], + "price": "कस्टम", + "btnText": "बिक्री से संपर्क करें", + "priceTip": "वार्षिक बिलिंग केवल", + "for": "बड़े आकार की टीमों के लिए" + }, + "community": { + "features": [ + "सभी मुख्य फीचर्स सार्वजनिक रिपॉज़िटरी के तहत जारी किए गए", + "एकल कार्यक्षेत्र", + "Dify ओपन सोर्स लाइसेंस का पालन करता है" + ], + "description": "व्यक्तिगत उपयोगकर्ताओं, छोटे टीमों, या गैर-व्यावसायिक परियोजनाओं के लिए", + "for": "व्यक्तिगत उपयोगकर्ताओं, छोटे टीमों, या गैर-व्यावसायिक परियोजनाओं के लिए", + "includesTitle": "निःशुल्क सुविधाएँ:", + "btnText": "समुदाय के साथ आरंभ करें", + "name": "समुदाय", + "price": "मुक्त" + }, + "premium": { + "features": [ + "विभिन्न क्लाउड प्रदाताओं द्वारा स्व-प्रबंधित विश्वसनीयता", + "एकल कार्यक्षेत्र", + "वेबऐप लोगो और ब्रांडिंग अनुकूलन", + "प्राथमिकता ईमेल और चैट सहायता" + ], + "priceTip": "क्लाउड मार्केटप्लेस के आधार पर", + "name": "प्रीमियम", + "btnText": "प्रीमियम प्राप्त करें", + "price": "स्केलेबल", + "includesTitle": "समुदाय से सब कुछ, इसके अलावा:", + "for": "मध्यम आकार के संगठनों और टीमों के लिए", + "description": "मध्यम आकार के संगठनों और टीमों के लिए", + "comingSoon": "माइक्रोसॉफ्ट एज़्योर और गूगल क्लाउड समर्थन जल्द ही आ रहा है" + } + }, + "vectorSpace": { + "fullTip": "वेक्टर स्पेस पूर्ण है।", + "fullSolution": "अधिक स्थान प्राप्त करने के लिए अपनी योजना अपग्रेड करें।" + }, + "apps": { + "fullTip1": "अधिक ऐप्स बनाने के लिए अपग्रेड करें", + "fullTip2": "योजना की सीमा पहुँच गई", + "contactUs": "हमसे संपर्क करें", + "fullTip1des": "आप इस योजना पर ऐप्स बनाने की सीमा तक पहुँच चुके हैं।", + "fullTip2des": "अचल अनुप्रयोगों को साफ करने की सिफारिश की जाती है ताकि उपयोग को मुक्त किया जा सके, या हमसे संपर्क करें।" + }, + "annotatedResponse": { + "fullTipLine1": "अधिक बातचीत को एनोटेट करने के लिए", + "fullTipLine2": "अपनी योजना अपग्रेड करें।", + "quotaTitle": "एनोटेशन उत्तर कोटा" + }, + "usagePage": { + "annotationQuota": "एनोटेशन कोटा", + "buildApps": "ऐप बनाएं", + "documentsUploadQuota": "दस्तावेज़ अपलोड कोटा", + "vectorSpace": "ज्ञान डेटा भंडारण", + "teamMembers": "टीम के सदस्य", + "vectorSpaceTooltip": "उच्च गुणवत्ता वाले अनुक्रमण मोड के साथ दस्तावेज़ों के लिए ज्ञान डेटा स्टोरेज संसाधनों का उपभोग होगा। जब ज्ञान डेटा स्टोरेज सीमा तक पहुँच जाएगा, तो नए दस्तावेज़ नहीं अपलोड किए जाएंगे।", + "perMonth": "प्रति माह", + "triggerEvents": "उत्तेजक घटनाएँ", + "resetsIn": "{{count,number}} दिनों में रीसेट होता है" + }, + "teamMembers": "टीम के सदस्य", + "triggerLimitModal": { + "upgrade": "अपग्रेड", + "usageTitle": "ट्रिगर घटनाएँ", + "dismiss": "खारिज करें", + "title": "अधिक ट्रिगर इवेंट्स अनलॉक करने के लिए अपग्रेड करें", + "description": "आप इस योजना के लिए वर्कफ़्लो इवेंट ट्रिगर्स की सीमा तक पहुँच चुके हैं।" + }, + "viewBillingTitle": "बिलिंग और सब्सक्रिप्शन", + "viewBillingDescription": "भुगतान के तरीकों, चालानों और सदस्यता में बदलावों का प्रबंधन करें", + "viewBillingAction": "प्रबंध करना", + "upgrade": { + "uploadMultiplePages": { + "title": "एक बार में कई दस्तावेज़ अपलोड करने के लिए अपग्रेड करें", + "description": "आपने अपलोड की सीमा तक पहुँच लिया है — आपके वर्तमान प्लान पर एक समय में केवल एक ही दस्तावेज़ चुना और अपलोड किया जा सकता है।" + }, + "uploadMultipleFiles": { + "title": "बैच दस्तावेज़ अपलोड अनलॉक करने के लिए अपग्रेड करें", + "description": "समय बचाने और कार्यक्षमता बढ़ाने के लिए एक बार में अधिक दस्तावेज़ बैच-अपलोड करें।" + }, + "addChunks": { + "title": "अधिक चंक्स जोड़ने के लिए अपग्रेड करें", + "description": "आप इस योजना के लिए टुकड़े जोड़ने की सीमा तक पहुँच चुके हैं।" + } + } +} diff --git a/web/i18n/hi-IN/billing.ts b/web/i18n/hi-IN/billing.ts deleted file mode 100644 index 19b3b96b46..0000000000 --- a/web/i18n/hi-IN/billing.ts +++ /dev/null @@ -1,232 +0,0 @@ -const translation = { - currentPlan: 'वर्तमान योजना', - upgradeBtn: { - plain: 'योजना अपग्रेड करें', - encourage: 'अभी अपग्रेड करें', - encourageShort: 'अपग्रेड करें', - }, - viewBilling: 'बिलिंग और सब्सक्रिप्शन प्रबंधित करें', - buyPermissionDeniedTip: - 'सब्सक्राइब करने के लिए कृपया अपने एंटरप्राइज़ व्यवस्थापक से संपर्क करें', - plansCommon: { - yearlyTip: 'वार्षिक सब्सक्राइब करने पर 2 महीने मुफ्त पाएं!', - mostPopular: 'सबसे लोकप्रिय', - planRange: { - monthly: 'मासिक', - yearly: 'वार्षिक', - }, - month: 'महीना', - year: 'साल', - save: 'बचत करें ', - free: 'मुफ्त', - currentPlan: 'वर्तमान योजना', - contractSales: 'बिक्री से संपर्क करें', - contractOwner: 'टीम प्रबंधक से संपर्क करें', - startForFree: 'मुफ्त में शुरू करें', - contactSales: 'बिक्री से संपर्क करें', - talkToSales: 'बिक्री से बात करें', - modelProviders: 'मॉडल प्रदाता', - annotationQuota: 'एनोटेशन कोटा', - buildApps: 'ऐप्स बनाएं', - vectorSpace: 'वेक्टर स्पेस', - vectorSpaceTooltip: - 'वेक्टर स्पेस वह दीर्घकालिक स्मृति प्रणाली है जिसकी आवश्यकता LLMs को आपके डेटा को समझने के लिए होती है।', - 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 कुंजी का उपयोग करेंगे।', - titlePerMonth: '{{count,number}} संदेश/महीना', - }, - annotatedResponse: { - title: 'एनोटेशन कोटा सीमाएं', - tooltip: - 'प्रतिक्रियाओं का मैन्युअल संपादन और एनोटेशन ऐप्स के लिए अनुकूलन योग्य उच्च-गुणवत्ता वाले प्रश्न-उत्तर क्षमताएं प्रदान करता है। (केवल चैट ऐप्स में लागू)', - }, - ragAPIRequestTooltip: - 'Dify की केवल ज्ञान आधार प्रसंस्करण क्षमताओं को आह्वान करने वाले API कॉल की संख्या को संदर्भित करता है।', - receiptInfo: - 'केवल टीम के मालिक और टीम एडमिन सब्सक्राइब कर सकते हैं और बिलिंग जानकारी देख सकते हैं', - freeTrialTipPrefix: 'साइन अप करें और प्राप्त करें एक', - teamMember_other: '{{count,number}} टीम सदस्य', - comparePlanAndFeatures: 'योजना और विशेषताओं की तुलना करें', - apiRateLimit: 'एपीआई दर सीमा', - documentsRequestQuota: '{{count,number}}/मिनट ज्ञान अनुरोध दर सीमा', - self: 'स्व-होस्टेड', - getStarted: 'शुरू करें', - annualBilling: 'वार्षिक बिलिंग', - documentsTooltip: 'ज्ञान डेटा स्रोत से आयात किए गए दस्तावेजों की संख्या पर कोटा।', - priceTip: 'प्रत्येक कार्यक्षेत्र/', - cloud: 'क्लाउड सेवा', - unlimitedApiRate: 'कोई एपीआई दर सीमा नहीं', - freeTrialTip: '200 ओपनएआई कॉल्स का मुफ्त परीक्षण।', - documents: '{{count,number}} ज्ञान दस्तावेज़', - freeTrialTipSuffix: 'कोई क्रेडिट कार्ड की आवश्यकता नहीं है', - apiRateLimitUnit: '{{count,number}}', - teamWorkspace: '{{count,number}} टीम कार्यक्षेत्र', - apiRateLimitTooltip: 'Dify API के माध्यम से की गई सभी अनुरोधों पर API दर सीमा लागू होती है, जिसमें टेक्स्ट जनरेशन, चैट वार्तालाप, कार्यप्रवाह निष्पादन और दस्तावेज़ प्रसंस्करण शामिल हैं।', - teamMember_one: '{{count,number}} टीम सदस्य', - documentsRequestQuotaTooltip: 'यह ज्ञान आधार में एक कार्यक्षेत्र द्वारा प्रति मिनट किए जा सकने वाले कुल कार्यों की संख्या को निर्दिष्ट करता है, जिसमें डेटासेट बनाना, हटाना, अपडेट करना, दस्तावेज़ अपलोड करना, संशोधन करना, संग्रहित करना और ज्ञान आधार अनुरोध शामिल हैं। इस मीट्रिक का उपयोग ज्ञान आधार अनुरोधों के प्रदर्शन का मूल्यांकन करने के लिए किया जाता है। उदाहरण के लिए, यदि एक सैंडबॉक्स उपयोगकर्ता एक मिनट के भीतर 10 लगातार हिट परीक्षण करता है, तो उनके कार्यक्षेत्र को अगले मिनट के लिए निम्नलिखित कार्यों को करने से अस्थायी रूप से प्रतिबंधित किया जाएगा: डेटासेट बनाना, हटाना, अपडेट करना और दस्तावेज़ अपलोड या संशोधन करना।', - startBuilding: 'बनाना शुरू करें', - taxTip: 'सभी सदस्यता मूल्य (मासिक/वार्षिक) लागू करों (जैसे, VAT, बिक्री कर) को शामिल नहीं करते हैं।', - taxTipSecond: 'यदि आपके क्षेत्र में कोई लागू कर आवश्यकताएँ नहीं हैं, तो आपकी चेकआउट में कोई कर नहीं दिखाई देगा, और पूरे सदस्यता अवधि के लिए आपसे कोई अतिरिक्त शुल्क नहीं लिया जाएगा।', - triggerEvents: { - unlimited: 'असीमित ट्रिगर इवेंट्स', - tooltip: 'घटनाओं की संख्या जो प्लगइन, शेड्यूल या वेबहुक ट्रिगर के माध्यम से स्वतः वर्कफ़्लो शुरू करती हैं।', - sandbox: '{{count,number}} ट्रिगर इवेंट्स', - professional: '{{count,number}} ट्रिगर इवेंट/महीना', - }, - workflowExecution: { - standard: 'मानक कार्यप्रवाह निष्पादन', - faster: 'तेज़ कार्यप्रवाह निष्पादन', - priority: 'प्राथमिकता कार्यप्रवाह निष्पादन', - tooltip: 'वर्कफ़्लो निष्पादन कतार की प्राथमिकता और गति।', - }, - startNodes: { - unlimited: 'असीमित ट्रिगर्स/कार्यप्रवाह', - limited: '{{count}} ट्रिगर्स/वर्कफ़्लो तक', - }, - title: { - plans: 'योजनाएँ', - description: 'उस योजना का चयन करें जो आपकी टीम की जरूरतों के लिए सबसे उपयुक्त हो।', - }, - }, - plans: { - sandbox: { - name: 'सैंडबॉक्स', - description: '200 बार GPT मुफ्त ट्रायल', - for: 'कोर क्षमताओं का मुफ्त परीक्षण', - }, - professional: { - name: 'प्रोफेशनल', - description: - 'व्यक्तियों और छोटे टीमों के लिए अधिक शक्ति सस्ती दर पर खोलें।', - for: 'स्वतंत्र डेवलपर्स/छोटे टीमों के लिए', - }, - team: { - name: 'टीम', - description: - 'बिना सीमा के सहयोग करें और शीर्ष स्तरीय प्रदर्शन का आनंद लें।', - for: 'मध्यम आकार की टीमों के लिए', - }, - enterprise: { - name: 'एंटरप्राइज़', - description: - 'बड़े पैमाने पर मिशन-क्रिटिकल सिस्टम के लिए पूर्ण क्षमताएं और समर्थन प्राप्त करें।', - includesTitle: 'टीम योजना में सब कुछ, साथ में:', - features: ['एंटरप्राइज-ग्रेड स्केलेबल डिप्लॉयमेंट समाधान', 'व्यावसायिक लाइसेंस प्राधिकरण', 'विशेष एंटरप्राइज सुविधाएँ', 'कई कार्यक्षेत्र और एंटरप्राइज प्रबंधन', 'एसएसओ', 'डिफ़ी पार्टनर्स द्वारा बातचीत किए गए SLA', 'उन्नत सुरक्षा और नियंत्रण', 'Dify द्वारा आधिकारिक रूप से अपडेट और रखरखाव', 'पेशेवर तकनीकी समर्थन'], - price: 'कस्टम', - btnText: 'बिक्री से संपर्क करें', - priceTip: 'वार्षिक बिलिंग केवल', - for: 'बड़े आकार की टीमों के लिए', - }, - community: { - features: ['सभी मुख्य फीचर्स सार्वजनिक रिपॉज़िटरी के तहत जारी किए गए', 'एकल कार्यक्षेत्र', 'Dify ओपन सोर्स लाइसेंस का पालन करता है'], - description: 'व्यक्तिगत उपयोगकर्ताओं, छोटे टीमों, या गैर-व्यावसायिक परियोजनाओं के लिए', - for: 'व्यक्तिगत उपयोगकर्ताओं, छोटे टीमों, या गैर-व्यावसायिक परियोजनाओं के लिए', - includesTitle: 'निःशुल्क सुविधाएँ:', - btnText: 'समुदाय के साथ आरंभ करें', - name: 'समुदाय', - price: 'मुक्त', - }, - premium: { - features: ['विभिन्न क्लाउड प्रदाताओं द्वारा स्व-प्रबंधित विश्वसनीयता', 'एकल कार्यक्षेत्र', 'वेबऐप लोगो और ब्रांडिंग अनुकूलन', 'प्राथमिकता ईमेल और चैट सहायता'], - priceTip: 'क्लाउड मार्केटप्लेस के आधार पर', - name: 'प्रीमियम', - btnText: 'प्रीमियम प्राप्त करें', - price: 'स्केलेबल', - includesTitle: 'समुदाय से सब कुछ, इसके अलावा:', - for: 'मध्यम आकार के संगठनों और टीमों के लिए', - description: 'मध्यम आकार के संगठनों और टीमों के लिए', - comingSoon: 'माइक्रोसॉफ्ट एज़्योर और गूगल क्लाउड समर्थन जल्द ही आ रहा है', - }, - }, - vectorSpace: { - fullTip: 'वेक्टर स्पेस पूर्ण है।', - fullSolution: 'अधिक स्थान प्राप्त करने के लिए अपनी योजना अपग्रेड करें।', - }, - apps: { - fullTip1: 'अधिक ऐप्स बनाने के लिए अपग्रेड करें', - fullTip2: 'योजना की सीमा पहुँच गई', - contactUs: 'हमसे संपर्क करें', - fullTip1des: 'आप इस योजना पर ऐप्स बनाने की सीमा तक पहुँच चुके हैं।', - fullTip2des: 'अचल अनुप्रयोगों को साफ करने की सिफारिश की जाती है ताकि उपयोग को मुक्त किया जा सके, या हमसे संपर्क करें।', - }, - annotatedResponse: { - fullTipLine1: 'अधिक बातचीत को एनोटेट करने के लिए', - fullTipLine2: 'अपनी योजना अपग्रेड करें।', - quotaTitle: 'एनोटेशन उत्तर कोटा', - }, - usagePage: { - annotationQuota: 'एनोटेशन कोटा', - buildApps: 'ऐप बनाएं', - documentsUploadQuota: 'दस्तावेज़ अपलोड कोटा', - vectorSpace: 'ज्ञान डेटा भंडारण', - teamMembers: 'टीम के सदस्य', - vectorSpaceTooltip: 'उच्च गुणवत्ता वाले अनुक्रमण मोड के साथ दस्तावेज़ों के लिए ज्ञान डेटा स्टोरेज संसाधनों का उपभोग होगा। जब ज्ञान डेटा स्टोरेज सीमा तक पहुँच जाएगा, तो नए दस्तावेज़ नहीं अपलोड किए जाएंगे।', - perMonth: 'प्रति माह', - triggerEvents: 'उत्तेजक घटनाएँ', - resetsIn: '{{count,number}} दिनों में रीसेट होता है', - }, - teamMembers: 'टीम के सदस्य', - triggerLimitModal: { - upgrade: 'अपग्रेड', - usageTitle: 'ट्रिगर घटनाएँ', - dismiss: 'खारिज करें', - title: 'अधिक ट्रिगर इवेंट्स अनलॉक करने के लिए अपग्रेड करें', - description: 'आप इस योजना के लिए वर्कफ़्लो इवेंट ट्रिगर्स की सीमा तक पहुँच चुके हैं।', - }, - viewBillingTitle: 'बिलिंग और सब्सक्रिप्शन', - viewBillingDescription: 'भुगतान के तरीकों, चालानों और सदस्यता में बदलावों का प्रबंधन करें', - viewBillingAction: 'प्रबंध करना', - upgrade: { - uploadMultiplePages: { - title: 'एक बार में कई दस्तावेज़ अपलोड करने के लिए अपग्रेड करें', - description: 'आपने अपलोड की सीमा तक पहुँच लिया है — आपके वर्तमान प्लान पर एक समय में केवल एक ही दस्तावेज़ चुना और अपलोड किया जा सकता है।', - }, - uploadMultipleFiles: { - title: 'बैच दस्तावेज़ अपलोड अनलॉक करने के लिए अपग्रेड करें', - description: 'समय बचाने और कार्यक्षमता बढ़ाने के लिए एक बार में अधिक दस्तावेज़ बैच-अपलोड करें।', - }, - addChunks: { - title: 'अधिक चंक्स जोड़ने के लिए अपग्रेड करें', - description: 'आप इस योजना के लिए टुकड़े जोड़ने की सीमा तक पहुँच चुके हैं।', - }, - }, -} - -export default translation diff --git a/web/i18n/hi-IN/common.json b/web/i18n/hi-IN/common.json new file mode 100644 index 0000000000..acab697055 --- /dev/null +++ b/web/i18n/hi-IN/common.json @@ -0,0 +1,785 @@ +{ + "api": { + "success": "सफलता", + "actionSuccess": "कार्रवाई सफल रही", + "saved": "सहेजा गया", + "create": "बनाया गया", + "remove": "हटाया गया", + "actionFailed": "क्रिया विफल" + }, + "operation": { + "create": "बनाएं", + "confirm": "पुष्टि करें", + "cancel": "रद्द करें", + "clear": "साफ करें", + "save": "सहेजें", + "saveAndEnable": "सहेजें और सक्षम करें", + "edit": "संपादित करें", + "add": "जोड़ें", + "added": "जोड़ा गया", + "refresh": "पुनः प्रारंभ करें", + "reset": "रीसेट करें", + "search": "खोजें", + "change": "बदलें", + "remove": "हटाएं", + "send": "भेजें", + "copy": "कॉपी करें", + "lineBreak": "लाइन ब्रेक", + "sure": "मुझे यकीन है", + "download": "डाउनलोड करें", + "delete": "हटाएं", + "settings": "सेटिंग्स", + "setup": "सेटअप", + "getForFree": "मुफ्त में प्राप्त करें", + "reload": "पुनः लोड करें", + "ok": "ठीक है", + "log": "लॉग", + "learnMore": "अधिक जानें", + "params": "पैरामीटर", + "duplicate": "डुप्लिकेट", + "rename": "नाम बदलें", + "audioSourceUnavailable": "ऑडियो स्रोत अनुपलब्ध है", + "copyImage": "छवि कॉपी करें", + "zoomOut": "ज़ूम आउट करें", + "openInNewTab": "नए टैब में खोलें", + "zoomIn": "ज़ूम इन करें", + "view": "देखना", + "viewMore": "और देखें", + "regenerate": "पुनर्जन्म", + "close": "बंद करना", + "saveAndRegenerate": "सहेजें और पुन: उत्पन्न करें बाल विखंडू", + "skip": "जहाज़", + "submit": "जमा करें", + "imageCopied": "कॉपी की गई छवि", + "deleteApp": "ऐप हटाएं", + "in": "में", + "copied": "कॉपी किया गया", + "viewDetails": "विवरण देखें", + "more": "अधिक", + "downloadSuccess": "डाउनलोड पूरा हुआ।", + "downloadFailed": "डाउनलोड विफल। कृपया बाद में पुनः प्रयास करें।", + "format": "फॉर्मेट", + "selectAll": "सभी चुनें", + "deSelectAll": "सभी चयन हटाएँ", + "config": "कॉन्फ़िगरेशन", + "no": "नहीं", + "yes": "हाँ", + "deleteConfirmTitle": "हटाएं?", + "confirmAction": "कृपया अपनी क्रिया की पुष्टि करें।", + "noSearchResults": "कोई {{content}} नहीं मिला", + "resetKeywords": "कीवर्ड रीसेट करें", + "selectCount": "{{count}} चयनित", + "searchCount": "{{count}} {{content}} खोजें", + "noSearchCount": "0 {{content}}", + "now": "अब" + }, + "errorMsg": { + "fieldRequired": "{{field}} आवश्यक है", + "urlError": "url को http:// या https:// से शुरू होना चाहिए" + }, + "placeholder": { + "input": "कृपया दर्ज करें", + "select": "कृपया चयन करें", + "search": "खोजें..." + }, + "voice": { + "language": { + "zhHans": "चीनी", + "zhHant": "पारंपरिक चीनी", + "enUS": "अंग्रेज़ी", + "deDE": "जर्मन", + "frFR": "फ्रेंच", + "esES": "स्पेनिश", + "itIT": "इतालवी", + "thTH": "थाई", + "idID": "इंडोनेशियाई", + "jaJP": "जापानी", + "koKR": "कोरियाई", + "ptBR": "पुर्तगाली", + "ruRU": "रूसी", + "ukUA": "यूक्रेनी", + "viVN": "वियतनामी", + "plPL": "पोलिश", + "roRO": "रोमानियाई", + "hiIN": "हिन्दी", + "trTR": "तुर्की", + "faIR": "फ़ारसी", + "slSI": "स्लोवेनियाई", + "arTN": "ट्यूनीशियाई अरबी" + } + }, + "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": "अधिक मॉडल जोड़ने के लिए सेटिंग्स पर जाएं", + "capabilities": "मल्टीमोडल क्षमताएँ", + "settingsLink": "मॉडल प्रदाता सेटिंग्स" + }, + "menus": { + "status": "बीटा", + "explore": "अन्वेषण करें", + "apps": "स्टूडियो", + "plugins": "प्लगइन्स", + "pluginsTips": "थर्ड-पार्टी प्लगइन्स को एकीकृत करें या ChatGPT-संगत AI-Plugins बनाएं।", + "datasets": "ज्ञान", + "datasetsTips": "जल्द आ रहा है: अपने स्वयं के टेक्स्ट डेटा आयात करें या LLM संदर्भ संवर्धन के लिए रियल-टाइम में वेबहुक के माध्यम से डेटा लिखें।", + "newApp": "नया ऐप", + "newDataset": "ज्ञान बनाएं", + "tools": "उपकरण", + "exploreMarketplace": "मार्केटप्लेस का अन्वेषण करें", + "appDetail": "ऐप विवरण", + "account": "खाता" + }, + "userProfile": { + "settings": "सेटिंग्स", + "emailSupport": "सहायता", + "workspace": "वर्कस्पेस", + "createWorkspace": "वर्कस्पेस बनाएं", + "helpCenter": "सहायता", + "roadmap": "रोडमैप", + "community": "समुदाय", + "about": "के बारे में", + "logout": "लॉग आउट", + "compliance": "अनुपालन", + "github": "गिटहब", + "support": "समर्थन", + "contactUs": "संपर्क करें", + "forum": "फोरम" + }, + "settings": { + "accountGroup": "खाता", + "workplaceGroup": "कार्यस्थल", + "account": "मेरा खाता", + "members": "सदस्य", + "billing": "बिलिंग", + "integrations": "एकीकरण", + "language": "भाषा", + "provider": "मॉडल प्रदाता", + "dataSource": "डेटा स्रोत", + "plugin": "प्लगइन्स", + "apiBasedExtension": "API विस्तार", + "generalGroup": "सामान्य" + }, + "account": { + "avatar": "अवतार", + "name": "नाम", + "email": "ईमेल", + "password": "पासवर्ड", + "passwordTip": "यदि आप अस्थायी लॉगिन कोड का उपयोग नहीं करना चाहते हैं तो आप एक स्थायी पासवर्ड सेट कर सकते हैं", + "setPassword": "पासवर्ड सेट करें", + "resetPassword": "पासवर्ड रीसेट करें", + "currentPassword": "वर्तमान पासवर्ड", + "newPassword": "नया पासवर्ड", + "confirmPassword": "पासवर्ड की पुष्टि करें", + "notEqual": "दो पासवर्ड अलग हैं।", + "langGeniusAccount": "Dify खाता", + "langGeniusAccountTip": "आपका Dify खाता और संबंधित उपयोगकर्ता डेटा।", + "editName": "नाम संपादित करें", + "showAppLength": "{{length}} ऐप्स दिखाएं", + "delete": "खाता हटाएं", + "deleteTip": "अपना खाता हटाने से आपका सारा डेटा स्थायी रूप से मिट जाएगा और इसे पुनर्प्राप्त नहीं किया जा सकता है।", + "account": "खाता", + "studio": "डिफाई स्टूडियो", + "myAccount": "मेरा खाता", + "deletePrivacyLink": "गोपनीयता नीति।", + "deletePlaceholder": "कृपया अपना ईमेल दर्ज करें", + "verificationLabel": "सत्यापन कोड", + "sendVerificationButton": "पुष्टि कोड भेजें", + "deleteLabel": "पुष्टि करने के लिए, कृपया नीचे अपना ईमेल टाइप करें", + "feedbackLabel": "हमें बताएँ कि आपने अपना खाता क्यों हटाया?", + "feedbackPlaceholder": "वैकल्पिक", + "feedbackTitle": "प्रतिपुष्टि", + "deletePrivacyLinkTip": "हम आपके डेटा को कैसे संभालते हैं, इस बारे में अधिक जानकारी के लिए, कृपया हमारा डेटा देखें", + "permanentlyDeleteButton": "खाता स्थायी रूप से हटाएं", + "verificationPlaceholder": "6-अंकीय कोड पेस्ट करें", + "deleteSuccessTip": "आपके खाते को हटाने का काम पूरा करने के लिए समय चाहिए. जब यह सब हो जाएगा तो हम आपको ईमेल करेंगे।", + "workspaceIcon": "कार्यस्थल आइकन", + "editWorkspaceInfo": "कार्यक्षेत्र की जानकारी संपादित करें", + "workspaceName": "कार्यस्थल का नाम", + "changeEmail": { + "title": "ईमेल बदलें", + "codePlaceholder": "6 अंकों का कोड पेस्ट करें", + "continue": "जारी रखें", + "emailPlaceholder": "नई ईमेल दर्ज करें", + "changeTo": "{{email}} में परिवर्तन करें", + "resendCount": "{{count}} सेकंड में दोबारा भेजें", + "resend": "फिर से भेजें", + "newEmail": "एक नया ईमेल पता सेट करें", + "codeLabel": "पुष्टि कोड", + "verifyNew": "अपने नए ईमेल की पुष्टि करें", + "resendTip": "कोई कोड नहीं मिला?", + "verifyEmail": "अपने वर्तमान ईमेल की पुष्टि करें", + "existingEmail": "इस ईमेल के साथ एक उपयोगकर्ता पहले से मौजूद है।", + "sendVerifyCode": "सत्यापन कोड भेजें", + "content3": "एक नया ईमेल दर्ज करें और हम आपको एक सत्यापन कोड भेजेंगे।", + "emailLabel": "नया ईमेल", + "content4": "हमने आपको {{email}} पर एक अस्थायी सत्यापन कोड भेजा है।", + "content2": "आपका वर्तमान ईमेल है {{email}}. सत्यापन कोड इस ईमेल पते पर भेजा गया है।", + "authTip": "एक बार जब आपका ईमेल बदल दिया जाता है, तो आपके पुराने ईमेल से जुड़े Google या GitHub खाते इस खाते में लॉग इन नहीं कर सकेंगे।", + "content1": "अगर आप जारी रखते हैं, तो हम सत्यापन के लिए {{email}} पर एक सत्यापन कोड भेजेंगे।", + "unAvailableEmail": "यह ईमेल अस्थायी रूप से अनुपलब्ध है।" + } + }, + "members": { + "team": "टीम", + "invite": "जोड़ें", + "name": "नाम", + "lastActive": "अंतिम सक्रियता", + "role": "भूमिकाएं", + "pending": "लंबित...", + "owner": "मालिक", + "admin": "प्रशासक", + "adminTip": "ऐप्स बना सकते हैं और टीम सेटिंग्स का प्रबंधन कर सकते हैं", + "normal": "सामान्य", + "normalTip": "केवल ऐप्स का उपयोग कर सकते हैं, ऐप्स नहीं बना सकते", + "builder": "निर्माता", + "builderTip": "अपने स्वयं के ऐप्स बना और संपादित कर सकते हैं", + "editor": "संपादक", + "editorTip": "ऐप्स बना और संपादित कर सकते हैं", + "inviteTeamMember": "टीम सदस्य जोड़ें", + "inviteTeamMemberTip": "वे साइन इन करने के बाद सीधे आपकी टीम डेटा तक पहुंच सकते हैं।", + "emailNotSetup": "ईमेल सर्वर सेट नहीं है, इसलिए आमंत्रण ईमेल नहीं भेजे जा सकते। कृपया उपयोगकर्ताओं को आमंत्रण के बाद जारी किए जाने वाले आमंत्रण लिंक के बारे में सूचित करें。", + "email": "ईमेल", + "emailInvalid": "अवैध ईमेल प्रारूप", + "emailPlaceholder": "कृपया ईमेल दर्ज करें", + "sendInvite": "आमंत्रण भेजें", + "invitedAsRole": "{{role}} उपयोगकर्ता के रूप में आमंत्रित किया गया", + "invitationSent": "आमंत्रण भेजा गया", + "invitationSentTip": "आमंत्रण भेजा गया, और वे साइन इन करके आपकी टीम डेटा तक पहुंच सकते हैं।", + "invitationLink": "आमंत्रण लिंक", + "failedInvitationEmails": "नीचे दिए गए उपयोगकर्ताओं को सफलतापूर्वक आमंत्रित नहीं किया गया", + "ok": "ठीक है", + "removeFromTeam": "टीम से हटाएं", + "removeFromTeamTip": "टीम पहुंच को हटा देगा", + "setAdmin": "प्रशासक के रूप में सेट करें", + "setMember": "सामान्य सदस्य के रूप में सेट करें", + "setBuilder": "निर्माता के रूप में सेट करें", + "setEditor": "संपादक के रूप में सेट करें", + "disInvite": "आमंत्रण रद्द करें", + "deleteMember": "सदस्य को हटाएं", + "you": "(आप)", + "datasetOperator": "ज्ञान व्यवस्थापक", + "datasetOperatorTip": "केवल नॉलेज बेस प्रबंधित कर सकते हैं", + "transferModal": { + "codePlaceholder": "6 अंकों का कोड पेस्ट करें", + "transferPlaceholder": "एक कार्यक्षेत्र सदस्य चुनें…", + "resendTip": "कोड प्राप्त नहीं हुआ?", + "verifyContent": "आपका वर्तमान ईमेल {{email}} है।", + "sendVerifyCode": "सत्यापन कोड भेजें", + "verifyEmail": "अपने वर्तमान ईमेल की पुष्टि करें", + "codeLabel": "पुष्टिकरण कोड", + "warning": "आप \"{{workspace}}\" की स्वामित्व स्थानांतरित करने वाले हैं। यह तुरंत प्रभावी होता है और इसे पूर्ववत नहीं किया जा सकता।", + "title": "वर्कस्पेस का मालिकाना हक स्थानांतरित करें", + "resend": "फिर से भेजें", + "resendCount": "{{count}} सेकंड में दोबारा भेजें", + "transferLabel": "कार्यक्षेत्र की स्वामित्व स्थानांतरित करें", + "sendTip": "अगर आप जारी रखते हैं, तो हम सत्यापन के लिए {{email}} पर एक कोड भेजेंगे।", + "continue": "जारी रखें", + "transfer": "कार्यस्थान स्वामित्व स्थानांतरित करें", + "verifyContent2": "हम इस ईमेल पर पुनः प्रमाणन के लिए एक अस्थायी सत्यापन कोड भेजेंगे।", + "warningTip": "आप एक प्रशासनिक सदस्य बन जाएंगे, और नए मालिक के पास पूरी नियंत्रण होगा।" + }, + "transferOwnership": "स्वामित्व हस्तांतरित करें" + }, + "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": "बंद करें", + "trialQuotaTip": "आपका एंथ्रोपिक परीक्षण कोटा 2025/03/11 को समाप्त हो जाएगा और उसके बाद उपलब्ध नहीं रहेगा। कृपया इसका समय पर उपयोग करें।" + }, + "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": "लोड बैलेंसिंग सक्षम करने के लिए अपनी योजना अपग्रेड करें।", + "discoverMore": "और अधिक खोजें", + "installProvider": "मॉडल प्रदाताओं को स्थापित करें", + "configureTip": "एपीआई-कुंजी सेट करें या उपयोग के लिए मॉडल जोड़ें", + "toBeConfigured": "कॉन्फ़िगर किया जाना है", + "emptyProviderTitle": "मॉडल प्रदाता सेट नहीं किया गया", + "emptyProviderTip": "कृपया पहले एक मॉडल प्रदाता स्थापित करें।", + "auth": { + "apiKeyModal": { + "addModel": "मॉडल जोड़ें", + "title": "एपीआई कुंजी प्राधिकरण कॉन्फ़िगरेशन", + "desc": "क्रेडेंशियल्स कॉन्फ़िगर करने के बाद, कार्यक्षेत्र के सभी सदस्यों को एप्लिकेशन को व्यवस्थित करते समय इस मॉडल का उपयोग करने की अनुमति होती है।" + }, + "apiKeys": "एपीआई कुंजी", + "addNewModel": "नया मॉडल जोड़ें", + "authorizationError": "अनु autorización त्रुटि", + "unAuthorized": "अअनधिकारित", + "modelCredentials": "मॉडल क्रेडेंशियल्स", + "addCredential": "क्रेडेंशियल जोड़ें", + "addApiKey": "एपीआई कुंजी जोड़ें", + "authRemoved": "प्राधिकरण हटाया गया", + "providerManaged": "प्रदाता द्वारा प्रबंधित", + "configModel": "कॉन्फ़िग मॉडल", + "configLoadBalancing": "कॉन्फ़िग लोड बैलेंसिंग", + "addModelCredential": "मॉडल क्रेडेंशियल जोड़ें", + "specifyModelCredential": "मॉडल की क्रेडेंशियल निर्दिष्ट करें", + "specifyModelCredentialTip": "कॉन्फ़िगर की गई मॉडल क्रेडेंशियल का उपयोग करें।", + "providerManagedTip": "वर्तमान कॉन्फ़िगरेशन प्रदाता द्वारा होस्ट किया गया है।", + "selectModelCredential": "एक मॉडल क्रेडेंशियल चुनें", + "addModel": "मॉडल जोड़ें", + "removeModel": "मॉडल हटाएं", + "customModelCredentialsDeleteTip": "क्रेडेंशियल उपयोग में है और इसे हटाया नहीं जा सकता", + "modelCredential": "मॉडल क्रेडेंशियल", + "addNewModelCredential": "नई मॉडल क्रेडेंशियल जोड़ें", + "manageCredentials": "क्रेडेंशियल्स प्रबंधित करें", + "customModelCredentials": "कस्टम मॉडल क्रेडेंशियल्स", + "editModelCredential": "मॉडल की क्रेडेंशियल संपादित करें" + }, + "parametersInvalidRemoved": "कुछ पैरामीटर अमान्य हैं और हटा दिए गए हैं", + "installDataSourceProvider": "डेटा स्रोत प्रदाताओं को स्थापित करें" + }, + "dataSource": { + "add": "डेटा स्रोत जोड़ें", + "connect": "कनेक्ट करें", + "configure": "कॉन्फ़िगर करें", + "notion": { + "title": "Notion", + "description": "ज्ञान के लिए डेटा स्रोत के रूप में Notion का उपयोग करना।", + "connectedWorkspace": "कनेक्टेड कार्यस्थान", + "addWorkspace": "कार्यस्थान जोड़ें", + "connected": "कनेक्टेड", + "disconnected": "डिस्कनेक्टेड", + "changeAuthorizedPages": "अधिकृत पृष्ठ बदलें", + "pagesAuthorized": "अधिकृत पृष्ठ", + "sync": "सिंक करें", + "remove": "हटाएं", + "selector": { + "pageSelected": "चयनित पृष्ठ", + "searchPages": "पृष्ठ खोजें...", + "noSearchResult": "कोई खोज परिणाम नहीं", + "addPages": "पृष्ठ जोड़ें", + "preview": "पूर्वावलोकन" + }, + "integratedAlert": "नोट्शन आंतरिक प्रमाण पत्र के माध्यम से एकीकृत है, फिर से प्रमाणित करने की आवश्यकता नहीं है।" + }, + "website": { + "title": "वेबसाइट", + "description": "वेब क्रॉलर का उपयोग करके वेबसाइटों से सामग्री आयात करें।", + "with": "के साथ", + "configuredCrawlers": "कॉन्फ़िगर किए गए क्रॉलर", + "active": "सक्रिय", + "inactive": "निष्क्रिय" + } + }, + "plugin": { + "serpapi": { + "apiKey": "एपीआई कुंजी", + "apiKeyPlaceholder": "अपनी एपीआई कुंजी दर्ज करें", + "keyFrom": "SerpAPI खाता पृष्ठ से अपनी SerpAPI कुंजी प्राप्त करें" + } + }, + "apiBasedExtension": { + "title": "एपीआई एक्सटेंशन केंद्रीकृत एपीआई प्रबंधन प्रदान करते हैं, जो Dify के अनुप्रयोगों में आसान उपयोग के लिए कॉन्फ़िगरेशन को सरल बनाते हैं।", + "link": "अपना खुद का एपीआई एक्सटेंशन कैसे विकसित करें, यह जानें।", + "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": "संबंधित ऐप्स", + "noRelatedApp": "कोई लिंक नहीं किए गए ऐप्स", + "pipeline": "पाइपलाइन" + }, + "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": "पुनः प्राप्ति स्कोर:" + }, + "inputPlaceholder": "बॉट से बात करें", + "thought": "विचार", + "thinking": "सोचते हुए...", + "resend": "फिर से भेजें" + }, + "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": "टैग बनाना असफल रहा" + }, + "fileUploader": { + "pasteFileLinkInvalid": "अमान्य फ़ाइल लिंक", + "uploadFromComputerLimit": "अपलोड फ़ाइल {{size}} से ज़्यादा नहीं हो सकती", + "uploadFromComputerUploadError": "फ़ाइल अपलोड विफल रही, कृपया फिर से अपलोड करें।", + "pasteFileLinkInputPlaceholder": "URL दर्ज करें...", + "uploadFromComputerReadError": "फ़ाइल पढ़ना विफल रहा, कृपया पुनः प्रयास करें.", + "pasteFileLink": "फ़ाइल लिंक पेस्ट करें", + "fileExtensionNotSupport": "फ़ाइल एक्सटेंशन समर्थित नहीं है", + "uploadFromComputer": "स्थानीय अपलोड", + "fileExtensionBlocked": "सुरक्षा कारणों से इस फ़ाइल प्रकार को अवरुद्ध कर दिया गया है", + "uploadDisabled": "फ़ाइल अपलोड अक्षम है" + }, + "license": { + "expiring": "एक दिन में समाप्त हो रहा है", + "expiring_plural": "{{गिनती}} दिनों में समाप्त हो रहा है", + "unlimited": "असीमित" + }, + "pagination": { + "perPage": "प्रति पृष्ठ आइटम" + }, + "theme": { + "light": "रोशनी", + "theme": "थीम", + "auto": "प्रणाली", + "dark": "अंधेरा" + }, + "compliance": { + "iso27001": "आईएसओ 27001:2022 प्रमाणन", + "gdpr": "जीडीपीआर डीपीए", + "soc2Type1": "SOC 2 प्रकार I रिपोर्ट", + "professionalUpgradeTooltip": "केवल टीम योजना या उससे ऊपर के साथ उपलब्ध है।", + "soc2Type2": "SOC 2 प्रकार II रिपोर्ट", + "sandboxUpgradeTooltip": "केवल पेशेवर या टीम योजना के साथ उपलब्ध है।" + }, + "imageInput": { + "supportedFormats": "PNG, JPG, JPEG, WEBP और GIF का समर्थन करता है", + "browse": "ब्राउज़ करें", + "dropImageHere": "अपनी छवि यहाँ छोड़ें, या" + }, + "you": "आप", + "avatar": { + "deleteTitle": "अवतार हटाएँ", + "deleteDescription": "क्या आप सुनिश्चित हैं कि आप अपनी प्रोफ़ाइल तस्वीर को हटाना चाहते हैं? आपका खाता डिफ़ॉल्ट प्रारंभिक अवतार का उपयोग करेगा।" + }, + "feedback": { + "content": "प्रतिक्रिया सामग्री", + "title": "प्रतिक्रिया प्रदान करें", + "subtitle": "कृपया हमें बताएं कि इस प्रतिक्रिया में क्या गलत हुआ", + "placeholder": "कृपया बताएं कि क्या गलत हुआ या हम कैसे सुधार कर सकते हैं..." + }, + "label": { + "optional": "(अनिवार्य नहीं)" + }, + "noData": "कोई डेटा नहीं", + "dynamicSelect": { + "error": "विकल्प लोड करने में विफल", + "noData": "कोई विकल्प उपलब्ध नहीं है", + "loading": "विकल्प लोड हो रहे हैं...", + "selected": "{{count}} चयनित" + } +} diff --git a/web/i18n/hi-IN/common.ts b/web/i18n/hi-IN/common.ts deleted file mode 100644 index 88f8f814e6..0000000000 --- a/web/i18n/hi-IN/common.ts +++ /dev/null @@ -1,814 +0,0 @@ -const translation = { - api: { - success: 'सफलता', - actionSuccess: 'कार्रवाई सफल रही', - saved: 'सहेजा गया', - create: 'बनाया गया', - remove: 'हटाया गया', - actionFailed: 'क्रिया विफल', - }, - operation: { - create: 'बनाएं', - confirm: 'पुष्टि करें', - cancel: 'रद्द करें', - clear: 'साफ करें', - save: 'सहेजें', - saveAndEnable: 'सहेजें और सक्षम करें', - edit: 'संपादित करें', - add: 'जोड़ें', - added: 'जोड़ा गया', - refresh: 'पुनः प्रारंभ करें', - reset: 'रीसेट करें', - search: 'खोजें', - change: 'बदलें', - remove: 'हटाएं', - send: 'भेजें', - copy: 'कॉपी करें', - lineBreak: 'लाइन ब्रेक', - sure: 'मुझे यकीन है', - download: 'डाउनलोड करें', - delete: 'हटाएं', - settings: 'सेटिंग्स', - setup: 'सेटअप', - getForFree: 'मुफ्त में प्राप्त करें', - reload: 'पुनः लोड करें', - ok: 'ठीक है', - log: 'लॉग', - learnMore: 'अधिक जानें', - params: 'पैरामीटर', - duplicate: 'डुप्लिकेट', - rename: 'नाम बदलें', - audioSourceUnavailable: 'ऑडियो स्रोत अनुपलब्ध है', - copyImage: 'छवि कॉपी करें', - zoomOut: 'ज़ूम आउट करें', - openInNewTab: 'नए टैब में खोलें', - zoomIn: 'ज़ूम इन करें', - view: 'देखना', - viewMore: 'और देखें', - regenerate: 'पुनर्जन्म', - close: 'बंद करना', - saveAndRegenerate: 'सहेजें और पुन: उत्पन्न करें बाल विखंडू', - skip: 'जहाज़', - submit: 'जमा करें', - imageCopied: 'कॉपी की गई छवि', - deleteApp: 'ऐप हटाएं', - in: 'में', - copied: 'कॉपी किया गया', - viewDetails: 'विवरण देखें', - more: 'अधिक', - downloadSuccess: 'डाउनलोड पूरा हुआ।', - downloadFailed: 'डाउनलोड विफल। कृपया बाद में पुनः प्रयास करें।', - format: 'फॉर्मेट', - selectAll: 'सभी चुनें', - deSelectAll: 'सभी चयन हटाएँ', - config: 'कॉन्फ़िगरेशन', - no: 'नहीं', - yes: 'हाँ', - deleteConfirmTitle: 'हटाएं?', - confirmAction: 'कृपया अपनी क्रिया की पुष्टि करें।', - noSearchResults: 'कोई {{content}} नहीं मिला', - resetKeywords: 'कीवर्ड रीसेट करें', - selectCount: '{{count}} चयनित', - searchCount: '{{count}} {{content}} खोजें', - noSearchCount: '0 {{content}}', - now: 'अब', - }, - errorMsg: { - fieldRequired: '{{field}} आवश्यक है', - urlError: 'url को http:// या https:// से शुरू होना चाहिए', - }, - placeholder: { - input: 'कृपया दर्ज करें', - select: 'कृपया चयन करें', - search: 'खोजें...', - }, - voice: { - language: { - zhHans: 'चीनी', - zhHant: 'पारंपरिक चीनी', - enUS: 'अंग्रेज़ी', - deDE: 'जर्मन', - frFR: 'फ्रेंच', - esES: 'स्पेनिश', - itIT: 'इतालवी', - thTH: 'थाई', - idID: 'इंडोनेशियाई', - jaJP: 'जापानी', - koKR: 'कोरियाई', - ptBR: 'पुर्तगाली', - ruRU: 'रूसी', - ukUA: 'यूक्रेनी', - viVN: 'वियतनामी', - plPL: 'पोलिश', - roRO: 'रोमानियाई', - hiIN: 'हिन्दी', - trTR: 'तुर्की', - faIR: 'फ़ारसी', - slSI: 'स्लोवेनियाई', - arTN: 'ट्यूनीशियाई अरबी', - }, - }, - 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: 'अधिक मॉडल जोड़ने के लिए सेटिंग्स पर जाएं', - capabilities: 'मल्टीमोडल क्षमताएँ', - settingsLink: 'मॉडल प्रदाता सेटिंग्स', - }, - menus: { - status: 'बीटा', - explore: 'अन्वेषण करें', - apps: 'स्टूडियो', - plugins: 'प्लगइन्स', - pluginsTips: - 'थर्ड-पार्टी प्लगइन्स को एकीकृत करें या ChatGPT-संगत AI-Plugins बनाएं।', - datasets: 'ज्ञान', - datasetsTips: - 'जल्द आ रहा है: अपने स्वयं के टेक्स्ट डेटा आयात करें या LLM संदर्भ संवर्धन के लिए रियल-टाइम में वेबहुक के माध्यम से डेटा लिखें।', - newApp: 'नया ऐप', - newDataset: 'ज्ञान बनाएं', - tools: 'उपकरण', - exploreMarketplace: 'मार्केटप्लेस का अन्वेषण करें', - appDetail: 'ऐप विवरण', - account: 'खाता', - }, - userProfile: { - settings: 'सेटिंग्स', - emailSupport: 'सहायता', - workspace: 'वर्कस्पेस', - createWorkspace: 'वर्कस्पेस बनाएं', - helpCenter: 'सहायता', - roadmap: 'रोडमैप', - community: 'समुदाय', - about: 'के बारे में', - logout: 'लॉग आउट', - compliance: 'अनुपालन', - github: 'गिटहब', - support: 'समर्थन', - contactUs: 'संपर्क करें', - forum: 'फोरम', - }, - settings: { - accountGroup: 'खाता', - workplaceGroup: 'कार्यस्थल', - account: 'मेरा खाता', - members: 'सदस्य', - billing: 'बिलिंग', - integrations: 'एकीकरण', - language: 'भाषा', - provider: 'मॉडल प्रदाता', - dataSource: 'डेटा स्रोत', - plugin: 'प्लगइन्स', - apiBasedExtension: 'API विस्तार', - generalGroup: 'सामान्य', - }, - account: { - avatar: 'अवतार', - name: 'नाम', - email: 'ईमेल', - password: 'पासवर्ड', - passwordTip: - 'यदि आप अस्थायी लॉगिन कोड का उपयोग नहीं करना चाहते हैं तो आप एक स्थायी पासवर्ड सेट कर सकते हैं', - setPassword: 'पासवर्ड सेट करें', - resetPassword: 'पासवर्ड रीसेट करें', - currentPassword: 'वर्तमान पासवर्ड', - newPassword: 'नया पासवर्ड', - confirmPassword: 'पासवर्ड की पुष्टि करें', - notEqual: 'दो पासवर्ड अलग हैं।', - langGeniusAccount: 'Dify खाता', - langGeniusAccountTip: 'आपका Dify खाता और संबंधित उपयोगकर्ता डेटा।', - editName: 'नाम संपादित करें', - showAppLength: '{{length}} ऐप्स दिखाएं', - delete: 'खाता हटाएं', - deleteTip: 'अपना खाता हटाने से आपका सारा डेटा स्थायी रूप से मिट जाएगा और इसे पुनर्प्राप्त नहीं किया जा सकता है।', - account: 'खाता', - studio: 'डिफाई स्टूडियो', - myAccount: 'मेरा खाता', - deletePrivacyLink: 'गोपनीयता नीति।', - deletePlaceholder: 'कृपया अपना ईमेल दर्ज करें', - verificationLabel: 'सत्यापन कोड', - sendVerificationButton: 'पुष्टि कोड भेजें', - deleteLabel: 'पुष्टि करने के लिए, कृपया नीचे अपना ईमेल टाइप करें', - feedbackLabel: 'हमें बताएँ कि आपने अपना खाता क्यों हटाया?', - feedbackPlaceholder: 'वैकल्पिक', - feedbackTitle: 'प्रतिपुष्टि', - deletePrivacyLinkTip: 'हम आपके डेटा को कैसे संभालते हैं, इस बारे में अधिक जानकारी के लिए, कृपया हमारा डेटा देखें', - permanentlyDeleteButton: 'खाता स्थायी रूप से हटाएं', - verificationPlaceholder: '6-अंकीय कोड पेस्ट करें', - deleteSuccessTip: 'आपके खाते को हटाने का काम पूरा करने के लिए समय चाहिए. जब यह सब हो जाएगा तो हम आपको ईमेल करेंगे।', - workspaceIcon: 'कार्यस्थल आइकन', - editWorkspaceInfo: 'कार्यक्षेत्र की जानकारी संपादित करें', - workspaceName: 'कार्यस्थल का नाम', - changeEmail: { - title: 'ईमेल बदलें', - codePlaceholder: '6 अंकों का कोड पेस्ट करें', - continue: 'जारी रखें', - emailPlaceholder: 'नई ईमेल दर्ज करें', - changeTo: '{{email}} में परिवर्तन करें', - resendCount: '{{count}} सेकंड में दोबारा भेजें', - resend: 'फिर से भेजें', - newEmail: 'एक नया ईमेल पता सेट करें', - codeLabel: 'पुष्टि कोड', - verifyNew: 'अपने नए ईमेल की पुष्टि करें', - resendTip: 'कोई कोड नहीं मिला?', - verifyEmail: 'अपने वर्तमान ईमेल की पुष्टि करें', - existingEmail: 'इस ईमेल के साथ एक उपयोगकर्ता पहले से मौजूद है।', - sendVerifyCode: 'सत्यापन कोड भेजें', - content3: 'एक नया ईमेल दर्ज करें और हम आपको एक सत्यापन कोड भेजेंगे।', - emailLabel: 'नया ईमेल', - content4: 'हमने आपको {{email}} पर एक अस्थायी सत्यापन कोड भेजा है।', - content2: 'आपका वर्तमान ईमेल है {{email}}. सत्यापन कोड इस ईमेल पते पर भेजा गया है।', - authTip: 'एक बार जब आपका ईमेल बदल दिया जाता है, तो आपके पुराने ईमेल से जुड़े Google या GitHub खाते इस खाते में लॉग इन नहीं कर सकेंगे।', - content1: 'अगर आप जारी रखते हैं, तो हम सत्यापन के लिए {{email}} पर एक सत्यापन कोड भेजेंगे।', - unAvailableEmail: 'यह ईमेल अस्थायी रूप से अनुपलब्ध है।', - }, - }, - members: { - team: 'टीम', - invite: 'जोड़ें', - name: 'नाम', - lastActive: 'अंतिम सक्रियता', - role: 'भूमिकाएं', - pending: 'लंबित...', - owner: 'मालिक', - admin: 'प्रशासक', - adminTip: 'ऐप्स बना सकते हैं और टीम सेटिंग्स का प्रबंधन कर सकते हैं', - normal: 'सामान्य', - normalTip: 'केवल ऐप्स का उपयोग कर सकते हैं, ऐप्स नहीं बना सकते', - builder: 'निर्माता', - builderTip: 'अपने स्वयं के ऐप्स बना और संपादित कर सकते हैं', - editor: 'संपादक', - editorTip: 'ऐप्स बना और संपादित कर सकते हैं', - inviteTeamMember: 'टीम सदस्य जोड़ें', - inviteTeamMemberTip: - 'वे साइन इन करने के बाद सीधे आपकी टीम डेटा तक पहुंच सकते हैं।', - emailNotSetup: 'ईमेल सर्वर सेट नहीं है, इसलिए आमंत्रण ईमेल नहीं भेजे जा सकते। कृपया उपयोगकर्ताओं को आमंत्रण के बाद जारी किए जाने वाले आमंत्रण लिंक के बारे में सूचित करें。', - email: 'ईमेल', - emailInvalid: 'अवैध ईमेल प्रारूप', - emailPlaceholder: 'कृपया ईमेल दर्ज करें', - sendInvite: 'आमंत्रण भेजें', - invitedAsRole: '{{role}} उपयोगकर्ता के रूप में आमंत्रित किया गया', - invitationSent: 'आमंत्रण भेजा गया', - invitationSentTip: - 'आमंत्रण भेजा गया, और वे साइन इन करके आपकी टीम डेटा तक पहुंच सकते हैं।', - invitationLink: 'आमंत्रण लिंक', - failedInvitationEmails: - 'नीचे दिए गए उपयोगकर्ताओं को सफलतापूर्वक आमंत्रित नहीं किया गया', - ok: 'ठीक है', - removeFromTeam: 'टीम से हटाएं', - removeFromTeamTip: 'टीम पहुंच को हटा देगा', - setAdmin: 'प्रशासक के रूप में सेट करें', - setMember: 'सामान्य सदस्य के रूप में सेट करें', - setBuilder: 'निर्माता के रूप में सेट करें', - setEditor: 'संपादक के रूप में सेट करें', - disInvite: 'आमंत्रण रद्द करें', - deleteMember: 'सदस्य को हटाएं', - you: '(आप)', - datasetOperator: 'ज्ञान व्यवस्थापक', - datasetOperatorTip: 'केवल नॉलेज बेस प्रबंधित कर सकते हैं', - transferModal: { - codePlaceholder: '6 अंकों का कोड पेस्ट करें', - transferPlaceholder: 'एक कार्यक्षेत्र सदस्य चुनें…', - resendTip: 'कोड प्राप्त नहीं हुआ?', - verifyContent: 'आपका वर्तमान ईमेल {{email}} है।', - sendVerifyCode: 'सत्यापन कोड भेजें', - verifyEmail: 'अपने वर्तमान ईमेल की पुष्टि करें', - codeLabel: 'पुष्टिकरण कोड', - warning: 'आप "{{workspace}}" की स्वामित्व स्थानांतरित करने वाले हैं। यह तुरंत प्रभावी होता है और इसे पूर्ववत नहीं किया जा सकता।', - title: 'वर्कस्पेस का मालिकाना हक स्थानांतरित करें', - resend: 'फिर से भेजें', - resendCount: '{{count}} सेकंड में दोबारा भेजें', - transferLabel: 'कार्यक्षेत्र की स्वामित्व स्थानांतरित करें', - sendTip: 'अगर आप जारी रखते हैं, तो हम सत्यापन के लिए {{email}} पर एक कोड भेजेंगे।', - continue: 'जारी रखें', - transfer: 'कार्यस्थान स्वामित्व स्थानांतरित करें', - verifyContent2: 'हम इस ईमेल पर पुनः प्रमाणन के लिए एक अस्थायी सत्यापन कोड भेजेंगे।', - warningTip: 'आप एक प्रशासनिक सदस्य बन जाएंगे, और नए मालिक के पास पूरी नियंत्रण होगा।', - }, - transferOwnership: 'स्वामित्व हस्तांतरित करें', - }, - 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: 'बंद करें', - trialQuotaTip: 'आपका एंथ्रोपिक परीक्षण कोटा 2025/03/11 को समाप्त हो जाएगा और उसके बाद उपलब्ध नहीं रहेगा। कृपया इसका समय पर उपयोग करें।', - }, - 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: - 'लोड बैलेंसिंग सक्षम करने के लिए अपनी योजना अपग्रेड करें।', - discoverMore: 'और अधिक खोजें', - installProvider: 'मॉडल प्रदाताओं को स्थापित करें', - configureTip: 'एपीआई-कुंजी सेट करें या उपयोग के लिए मॉडल जोड़ें', - toBeConfigured: 'कॉन्फ़िगर किया जाना है', - emptyProviderTitle: 'मॉडल प्रदाता सेट नहीं किया गया', - emptyProviderTip: 'कृपया पहले एक मॉडल प्रदाता स्थापित करें।', - auth: { - apiKeyModal: { - addModel: 'मॉडल जोड़ें', - title: 'एपीआई कुंजी प्राधिकरण कॉन्फ़िगरेशन', - desc: 'क्रेडेंशियल्स कॉन्फ़िगर करने के बाद, कार्यक्षेत्र के सभी सदस्यों को एप्लिकेशन को व्यवस्थित करते समय इस मॉडल का उपयोग करने की अनुमति होती है।', - }, - apiKeys: 'एपीआई कुंजी', - addNewModel: 'नया मॉडल जोड़ें', - authorizationError: 'अनु autorización त्रुटि', - unAuthorized: 'अअनधिकारित', - modelCredentials: 'मॉडल क्रेडेंशियल्स', - addCredential: 'क्रेडेंशियल जोड़ें', - addApiKey: 'एपीआई कुंजी जोड़ें', - authRemoved: 'प्राधिकरण हटाया गया', - providerManaged: 'प्रदाता द्वारा प्रबंधित', - configModel: 'कॉन्फ़िग मॉडल', - configLoadBalancing: 'कॉन्फ़िग लोड बैलेंसिंग', - addModelCredential: 'मॉडल क्रेडेंशियल जोड़ें', - specifyModelCredential: 'मॉडल की क्रेडेंशियल निर्दिष्ट करें', - specifyModelCredentialTip: 'कॉन्फ़िगर की गई मॉडल क्रेडेंशियल का उपयोग करें।', - providerManagedTip: 'वर्तमान कॉन्फ़िगरेशन प्रदाता द्वारा होस्ट किया गया है।', - selectModelCredential: 'एक मॉडल क्रेडेंशियल चुनें', - addModel: 'मॉडल जोड़ें', - removeModel: 'मॉडल हटाएं', - customModelCredentialsDeleteTip: 'क्रेडेंशियल उपयोग में है और इसे हटाया नहीं जा सकता', - modelCredential: 'मॉडल क्रेडेंशियल', - addNewModelCredential: 'नई मॉडल क्रेडेंशियल जोड़ें', - manageCredentials: 'क्रेडेंशियल्स प्रबंधित करें', - customModelCredentials: 'कस्टम मॉडल क्रेडेंशियल्स', - editModelCredential: 'मॉडल की क्रेडेंशियल संपादित करें', - }, - parametersInvalidRemoved: 'कुछ पैरामीटर अमान्य हैं और हटा दिए गए हैं', - installDataSourceProvider: 'डेटा स्रोत प्रदाताओं को स्थापित करें', - }, - dataSource: { - add: 'डेटा स्रोत जोड़ें', - connect: 'कनेक्ट करें', - configure: 'कॉन्फ़िगर करें', - notion: { - title: 'Notion', - description: 'ज्ञान के लिए डेटा स्रोत के रूप में Notion का उपयोग करना।', - connectedWorkspace: 'कनेक्टेड कार्यस्थान', - addWorkspace: 'कार्यस्थान जोड़ें', - connected: 'कनेक्टेड', - disconnected: 'डिस्कनेक्टेड', - changeAuthorizedPages: 'अधिकृत पृष्ठ बदलें', - pagesAuthorized: 'अधिकृत पृष्ठ', - sync: 'सिंक करें', - remove: 'हटाएं', - selector: { - pageSelected: 'चयनित पृष्ठ', - searchPages: 'पृष्ठ खोजें...', - noSearchResult: 'कोई खोज परिणाम नहीं', - addPages: 'पृष्ठ जोड़ें', - preview: 'पूर्वावलोकन', - }, - integratedAlert: 'नोट्शन आंतरिक प्रमाण पत्र के माध्यम से एकीकृत है, फिर से प्रमाणित करने की आवश्यकता नहीं है।', - }, - website: { - title: 'वेबसाइट', - description: 'वेब क्रॉलर का उपयोग करके वेबसाइटों से सामग्री आयात करें।', - with: 'के साथ', - configuredCrawlers: 'कॉन्फ़िगर किए गए क्रॉलर', - active: 'सक्रिय', - inactive: 'निष्क्रिय', - }, - }, - plugin: { - serpapi: { - apiKey: 'एपीआई कुंजी', - apiKeyPlaceholder: 'अपनी एपीआई कुंजी दर्ज करें', - keyFrom: 'SerpAPI खाता पृष्ठ से अपनी SerpAPI कुंजी प्राप्त करें', - }, - }, - apiBasedExtension: { - title: - 'एपीआई एक्सटेंशन केंद्रीकृत एपीआई प्रबंधन प्रदान करते हैं, जो Dify के अनुप्रयोगों में आसान उपयोग के लिए कॉन्फ़िगरेशन को सरल बनाते हैं।', - link: 'अपना खुद का एपीआई एक्सटेंशन कैसे विकसित करें, यह जानें।', - 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: 'संबंधित ऐप्स', - noRelatedApp: 'कोई लिंक नहीं किए गए ऐप्स', - pipeline: 'पाइपलाइन', - }, - 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: 'पुनः प्राप्ति स्कोर:', - }, - inputPlaceholder: 'बॉट से बात करें', - thought: 'विचार', - thinking: 'सोचते हुए...', - resend: 'फिर से भेजें', - }, - 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: 'टैग बनाना असफल रहा', - }, - fileUploader: { - pasteFileLinkInvalid: 'अमान्य फ़ाइल लिंक', - uploadFromComputerLimit: 'अपलोड फ़ाइल {{size}} से ज़्यादा नहीं हो सकती', - uploadFromComputerUploadError: 'फ़ाइल अपलोड विफल रही, कृपया फिर से अपलोड करें।', - pasteFileLinkInputPlaceholder: 'URL दर्ज करें...', - uploadFromComputerReadError: 'फ़ाइल पढ़ना विफल रहा, कृपया पुनः प्रयास करें.', - pasteFileLink: 'फ़ाइल लिंक पेस्ट करें', - fileExtensionNotSupport: 'फ़ाइल एक्सटेंशन समर्थित नहीं है', - uploadFromComputer: 'स्थानीय अपलोड', - fileExtensionBlocked: 'सुरक्षा कारणों से इस फ़ाइल प्रकार को अवरुद्ध कर दिया गया है', - uploadDisabled: 'फ़ाइल अपलोड अक्षम है', - }, - license: { - expiring: 'एक दिन में समाप्त हो रहा है', - expiring_plural: '{{गिनती}} दिनों में समाप्त हो रहा है', - unlimited: 'असीमित', - }, - pagination: { - perPage: 'प्रति पृष्ठ आइटम', - }, - theme: { - light: 'रोशनी', - theme: 'थीम', - auto: 'प्रणाली', - dark: 'अंधेरा', - }, - compliance: { - iso27001: 'आईएसओ 27001:2022 प्रमाणन', - gdpr: 'जीडीपीआर डीपीए', - soc2Type1: 'SOC 2 प्रकार I रिपोर्ट', - professionalUpgradeTooltip: 'केवल टीम योजना या उससे ऊपर के साथ उपलब्ध है।', - soc2Type2: 'SOC 2 प्रकार II रिपोर्ट', - sandboxUpgradeTooltip: 'केवल पेशेवर या टीम योजना के साथ उपलब्ध है।', - }, - imageInput: { - supportedFormats: 'PNG, JPG, JPEG, WEBP और GIF का समर्थन करता है', - browse: 'ब्राउज़ करें', - dropImageHere: 'अपनी छवि यहाँ छोड़ें, या', - }, - you: 'आप', - avatar: { - deleteTitle: 'अवतार हटाएँ', - deleteDescription: 'क्या आप सुनिश्चित हैं कि आप अपनी प्रोफ़ाइल तस्वीर को हटाना चाहते हैं? आपका खाता डिफ़ॉल्ट प्रारंभिक अवतार का उपयोग करेगा।', - }, - feedback: { - content: 'प्रतिक्रिया सामग्री', - title: 'प्रतिक्रिया प्रदान करें', - subtitle: 'कृपया हमें बताएं कि इस प्रतिक्रिया में क्या गलत हुआ', - placeholder: 'कृपया बताएं कि क्या गलत हुआ या हम कैसे सुधार कर सकते हैं...', - }, - label: { - optional: '(अनिवार्य नहीं)', - }, - noData: 'कोई डेटा नहीं', - dynamicSelect: { - error: 'विकल्प लोड करने में विफल', - noData: 'कोई विकल्प उपलब्ध नहीं है', - loading: 'विकल्प लोड हो रहे हैं...', - selected: '{{count}} चयनित', - }, -} - -export default translation diff --git a/web/i18n/hi-IN/custom.json b/web/i18n/hi-IN/custom.json new file mode 100644 index 0000000000..77fae6ba07 --- /dev/null +++ b/web/i18n/hi-IN/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "व्यक्तिकरण", + "upgradeTip": { + "prefix": "अपग्रेड करें अपने प्लान को", + "suffix": "स्वयं अपना ब्रांड चुनना।", + "title": "अपने योजना को अपग्रेड करें", + "des": "अपने ब्रांड को कस्टमाइज़ करने के लिए अपने योजना को अपग्रेड करें" + }, + "webapp": { + "title": "web app का ब्रांड व्यक्तिकरण करें", + "removeBrand": "पावर्ड द्वारा डिफी हटाएं", + "changeLogo": "पावर्ड द्वारा ब्रांड छवि बदले", + "changeLogoTip": "SVG या PNG प्रारूप के साथ न्यूनतम आकार 40x40px होना चाहिए" + }, + "app": { + "title": "हेडर का ब्रांड व्यक्तिकरण करें", + "changeLogoTip": "SVG या PNG प्रारूप के साथ न्यूनतम आकार 80x80px होना चाहिए" + }, + "upload": "चढ़ाएं", + "uploading": "चढ़ाएं...", + "uploadedFail": "चित्र अपलोड असफल है, कृपया फिर से अपलोड करें।", + "change": "बदलें", + "apply": "लगाएं", + "restore": "डिफ़ॉल्ट रिकवरी", + "customize": { + "contactUs": " हमसे संपर्क करें ", + "prefix": "अप्लीकेशन में ब्रांड लोगो बदलने के लिए, कृपया", + "suffix": " Enterprise संस्करण में अपग्रेड करें." + } +} diff --git a/web/i18n/hi-IN/custom.ts b/web/i18n/hi-IN/custom.ts deleted file mode 100644 index a24834c873..0000000000 --- a/web/i18n/hi-IN/custom.ts +++ /dev/null @@ -1,32 +0,0 @@ -const translation = { - custom: 'व्यक्तिकरण', - upgradeTip: { - prefix: 'अपग्रेड करें अपने प्लान को', - suffix: 'स्वयं अपना ब्रांड चुनना।', - title: 'अपने योजना को अपग्रेड करें', - des: 'अपने ब्रांड को कस्टमाइज़ करने के लिए अपने योजना को अपग्रेड करें', - }, - webapp: { - title: 'web app का ब्रांड व्यक्तिकरण करें', - 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 diff --git a/web/i18n/hi-IN/dataset-creation.json b/web/i18n/hi-IN/dataset-creation.json new file mode 100644 index 0000000000..c89282d918 --- /dev/null +++ b/web/i18n/hi-IN/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "ज्ञान" + }, + "one": "डेटा स्रोत चुनें", + "two": "पाठ पूर्व-प्रसंस्करण और सफाई", + "three": "निष्पादित करें और समाप्त करें" + }, + "error": { + "unavailable": "यह ज्ञान उपलब्ध नहीं है" + }, + "firecrawl": { + "configFirecrawl": "🔥फायरक्रॉल को कॉन्फ़िगर करें", + "apiKeyPlaceholder": "firecrawl.dev से API कुंजी", + "getApiKeyLinkText": "firecrawl.dev से अपनी API कुंजी प्राप्त करें" + }, + "stepOne": { + "filePreview": "फ़ाइल पूर्वावलोकन", + "pagePreview": "पृष्ठ पूर्वावलोकन", + "dataSourceType": { + "file": "फ़ाइल से आयात करें", + "notion": "नोटियन से सिंक करें", + "web": "वेबसाइट से सिंक करें" + }, + "uploader": { + "title": "फ़ाइल अपलोड करें", + "button": "फ़ाइलों या फ़ोल्डरों को खींचें और छोड़ें, या", + "buttonSingleFile": "फ़ाइल को खींचें और छोड़ें, या", + "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": "नाम खाली नहीं हो सकता", + "nameLengthInvalid": "नाम 1 से 40 वर्णों के बीच होना चाहिए", + "cancelButton": "रद्द करें", + "confirmButton": "बनाएं", + "failed": "बनाना विफल रहा" + }, + "website": { + "fireCrawlNotConfigured": "फायरक्रॉल कॉन्फ़िगर नहीं किया गया है", + "fireCrawlNotConfiguredDescription": "इसे उपयोग करने के लिए फायरक्रॉल को API कुंजी के साथ कॉन्फ़िगर करें।", + "configure": "कॉन्फ़िगर करें", + "run": "चलाएं", + "firecrawlTitle": "🔥फायरक्रॉल के साथ वेब सामग्री निकालें", + "firecrawlDoc": "फायरक्रॉल दस्तावेज़", + "options": "विकल्प", + "crawlSubPage": "उप-पृष्ठों को क्रॉल करें", + "limit": "सीमा", + "maxDepth": "अधिकतम गहराई", + "excludePaths": "पथों को बाहर रखें", + "includeOnlyPaths": "केवल पथों को शामिल करें", + "extractOnlyMainContent": "केवल मुख्य सामग्री निकालें (कोई हैडर, नेव्स, फुटर आदि नहीं)", + "exceptionErrorTitle": "फायरक्रॉल जॉब चलाते समय एक अपवाद हुआ:", + "unknownError": "अज्ञात त्रुटि", + "totalPageScraped": "कुल पृष्ठ स्क्रैप किए गए:", + "selectAll": "सभी चुनें", + "resetAll": "सभी रीसेट करें", + "scrapTimeInfo": "कुल {{total}} पृष्ठों को {{time}}s में स्क्रैप किया गया", + "preview": "पूर्वावलोकन", + "maxDepthTooltip": "प्रविष्ट URL के सापेक्ष क्रॉल करने की अधिकतम गहराई। गहराई 0 केवल प्रविष्ट url का पृष्ठ स्क्रैप करता है, गहराई 1 url और प्रविष्टURL + एक / के बाद सब कुछ स्क्रैप करता है, और इसी तरह।", + "jinaReaderDocLink": "https://jina.ai/reader", + "jinaReaderDoc": "जीना रीडर के बारे में अधिक जानें", + "useSitemapTooltip": "साइट क्रॉल करने के लिए साइटमैप का अनुसरण करें. यदि नहीं, तो जीना रीडर पृष्ठ प्रासंगिकता के आधार पर पुनरावृत्त रूप से क्रॉल करेगा, कम लेकिन उच्च-गुणवत्ता वाले पृष्ठों की उपज देगा।", + "useSitemap": "साइटमैप का इस्तेमाल करना", + "jinaReaderNotConfigured": "जीना रीडर कॉन्फ़िगर नहीं किया गया है", + "chooseProvider": "एक प्रदाता का चयन करें", + "jinaReaderTitle": "पूरी साइट को मार्कडाउन में बदलें", + "jinaReaderNotConfiguredDescription": "एक्सेस के लिए अपनी मुफ्त एपीआई कुंजी दर्ज करके जीना रीडर सेट करें।", + "watercrawlTitle": "Watercrawl के साथ वेब सामग्री निकालें", + "waterCrawlNotConfigured": "Watercrawl को कॉन्फ़िगर नहीं किया गया है", + "configureFirecrawl": "फायरक्रॉल को कॉन्फ़िगर करें", + "watercrawlDoc": "वाटरक्रॉल दस्तावेज़", + "waterCrawlNotConfiguredDescription": "इसे उपयोग करने के लिए वॉटरक्रॉल को एपीआई कुंजी के साथ कॉन्फ़िगर करें।", + "configureJinaReader": "जिना रीडर कॉन्फ़िगर करें", + "configureWatercrawl": "वाटरक्रॉल कॉन्फ़िगर करें", + "running": "दौड़ना" + }, + "cancel": "रद्द करना" + }, + "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": "का उपयोग करके खंड करना", + "estimateCost": "अनुमानित लागत", + "estimateSegment": "अनुमानित खंड", + "segmentCount": "खंड", + "calculating": "गणना कर रहा है...", + "fileSource": "दस्तावेज़ों को पूर्व-प्रसंस्करण करें", + "notionSource": "पृष्ठों को पूर्व-प्रसंस्करण करें", + "websiteSource": "वेबसाइट को पूर्व-प्रसंस्करण करें", + "other": "और अन्य ", + "fileUnit": " फ़ाइलें", + "notionUnit": " पृष्ठ", + "webpageUnit": " पृष्ठ", + "previousStep": "पिछला कदम", + "nextStep": "सहेजें और संसाधित करें", + "save": "सहेजें और संसाधित करें", + "cancel": "रद्द करें", + "sideTipTitle": "खंड और पूर्व-प्रसंस्करण क्यों करें?", + "sideTipP1": "पाठ डेटा को संसाधित करते समय, खंड और सफाई दो महत्वपूर्ण पूर्व-प्रसंस्करण चरण हैं।", + "sideTipP2": "खंड लंबे पाठ को पैराग्राफ में विभाजित करता है ताकि मॉडल बेहतर समझ सके। यह मॉडल परिणामों की गुणवत्ता और प्रासंगिकता में सुधार करता है।", + "sideTipP3": "सफाई अनावश्यक वर्णों और स्वरूपों को हटाती है, ज्ञान को साफ और सरल बनाने में मदद करती है।", + "sideTipP4": "उचित खंड और सफाई मॉडल प्रदर्शन में सुधार करती है, अधिक सटीक और मूल्यवान परिणाम प्रदान करती है।", + "previewTitle": "पूर्वावलोकन", + "previewTitleButton": "पूर्वावलोकन", + "previewButton": "प्रश्न-उत्तर प्रारूप में स्विच करना", + "previewSwitchTipStart": "वर्तमान खंड पूर्वावलोकन पाठ प्रारूप में है, प्रश्न-उत्तर प्रारूप में स्विच करने से", + "previewSwitchTipEnd": " अतिरिक्त टोकन खर्च होंगे", + "characters": "वर्ण", + "indexSettingTip": "इंडेक्स विधि बदलने के लिए, कृपया जाएं ", + "retrievalSettingTip": "इंडेक्स विधि बदलने के लिए, कृपया जाएं ", + "datasetSettingLink": "ज्ञान सेटिंग्स।", + "separatorTip": "एक सीमांकक पाठ को अलग करने के लिए उपयोग किया जाने वाला वर्ण है। \\n\\n और \\n आमतौर पर पैराग्राफ और लाइनों को अलग करने के लिए उपयोग किए जाने वाले सीमांकक हैं। अल्पविराम (\\n\\n,\\n) के साथ संयुक्त, अधिकतम खंड लंबाई से अधिक होने पर अनुच्छेदों को पंक्तियों द्वारा खंडित किया जाएगा। आप स्वयं द्वारा परिभाषित विशेष सीमांकक का भी उपयोग कर सकते हैं (उदा. ***).", + "maxLengthCheck": "अधिकतम चंक लंबाई {{limit}} से कम होनी चाहिए", + "useQALanguage": "में क्यू एंड ए प्रारूप का उपयोग करके चंक करें", + "previewChunkCount": "{{गिनती}} अनुमानित खंड", + "previewChunk": "पूर्वावलोकन चंक", + "paragraph": "अनुच्‍छेद", + "general": "सामान्य", + "highQualityTip": "एक बार उच्च गुणवत्ता मोड में एम्बेडिंग समाप्त करने के बाद, किफायती मोड पर वापस जाना उपलब्ध नहीं है।", + "parentChunkForContext": "संदर्भ के लिए माता-पिता का हिस्सा", + "notAvailableForQA": "Q&A इंडेक्स के लिए उपलब्ध नहीं है", + "fullDoc": "पूर्ण डॉक्टर", + "fullDocTip": "पूरे दस्तावेज़ को मूल खंड के रूप में उपयोग किया जाता है और सीधे पुनर्प्राप्त किया जाता है। कृपया ध्यान दें कि प्रदर्शन कारणों से, 10000 टोकन से अधिक का पाठ स्वचालित रूप से छोटा कर दिया जाएगा।", + "previewChunkTip": "पूर्वावलोकन लोड करने के लिए बाईं ओर 'पूर्वावलोकन चंक' बटन पर क्लिक करें", + "generalTip": "सामान्य पाठ चंकिंग मोड, पुनर्प्राप्त और याद किए गए चंक्स समान हैं।", + "qaSwitchHighQualityTipTitle": "Q&A प्रारूप के लिए उच्च-गुणवत्ता अनुक्रमण विधि की आवश्यकता होती है", + "qaSwitchHighQualityTipContent": "वर्तमान में, केवल उच्च-गुणवत्ता वाली अनुक्रमणिका विधि Q & A प्रारूप चंकिंग का समर्थन करती है। क्या आप उच्च-गुणवत्ता मोड पर स्विच करना चाहेंगे?", + "parentChildChunkDelimiterTip": "एक सीमांकक पाठ को अलग करने के लिए उपयोग किया जाने वाला वर्ण है। माता-पिता के टुकड़ों को छोटे बच्चे के टुकड़ों में विभाजित करने के लिए \\n की सिफारिश की जाती है। आप स्वयं द्वारा परिभाषित विशेष सीमांकक का भी उपयोग कर सकते हैं।", + "childChunkForRetrieval": "पुनर्प्राप्ति के लिए बाल-खंड", + "switch": "स्विच", + "parentChildDelimiterTip": "एक सीमांकक पाठ को अलग करने के लिए उपयोग किया जाने वाला वर्ण है। \\n\\n मूल दस्तावेज़ को बड़े पैरेंट विखंडू में विभाजित करने के लिए अनुशंसित है। आप स्वयं द्वारा परिभाषित विशेष सीमांकक का भी उपयोग कर सकते हैं।", + "notAvailableForParentChild": "पैरेंट-चाइल्ड इंडेक्स के लिए उपलब्ध नहीं है", + "parentChild": "माता-पिता का बच्चा", + "parentChildTip": "पैरेंट-चाइल्ड मोड का उपयोग करते समय, चाइल्ड-चंक का उपयोग पुनर्प्राप्ति के लिए किया जाता है और पैरेंट-चंक का उपयोग संदर्भ के रूप में रिकॉल के लिए किया जाता है।", + "paragraphTip": "यह मोड पाठ को सीमांकक और अधिकतम खंड लंबाई के आधार पर पैराग्राफ में विभाजित करता है, पुनर्प्राप्ति के लिए मूल खंड के रूप में विभाजित पाठ का उपयोग करता है।", + "qaTip": "संरचित प्रश्नोत्तर डेटा का उपयोग करते समय, आप प्रश्नों को उत्तरों के साथ जोड़ने वाले दस्तावेज़ बना सकते हैं। ये दस्तावेज़ प्रश्न भाग के आधार पर अनुक्रमित होते हैं, जिससे प्रणाली क्वेरी समानता के आधार पर संबंधित उत्तरों को पुनः प्राप्त कर सकती है।" + }, + "stepThree": { + "creationTitle": "🎉 ज्ञान बनाया गया", + "creationContent": "हमने स्वचालित रूप से ज्ञान का नाम रखा है, आप इसे किसी भी समय संशोधित कर सकते हैं", + "label": "ज्ञान का नाम", + "additionTitle": "🎉 दस्तावेज़ अपलोड किया गया", + "additionP1": "दस्तावेज़ ज्ञान में अपलोड किया गया है", + "additionP2": ", आप इसे ज्ञान की दस्तावेज़ सूची में पा सकते हैं।", + "stop": "प्रसंस्करण रोकें", + "resume": "प्रसंस्करण फिर से शुरू करें", + "navTo": "दस्तावेज़ पर जाएं", + "sideTipTitle": "आगे क्या करना है", + "sideTipContent": "दस्तावेज़ को इंडेक्स करने के बाद, ज्ञान को एप्लिकेशन में संदर्भ के रूप में एकीकृत किया जा सकता है, आप संदर्भ सेटिंग को प्रॉम्प्ट ऑर्केस्ट्रेशन पृष्ठ पर पा सकते हैं। आप इसे रिलीज़ के लिए एक स्वतंत्र ChatGPT इंडेक्सिंग प्लगइन के रूप में भी बना सकते हैं।", + "modelTitle": "क्या आप एम्बेडिंग को रोकने के लिए सुनिश्चित हैं?", + "modelContent": "यदि आपको बाद में फिर से प्रसंस्करण करने की आवश्यकता है, तो आप जहां से छोड़े थे वहीं से जारी रखेंगे।", + "modelButtonConfirm": "पुष्टि करें", + "modelButtonCancel": "रद्द करें" + }, + "jinaReader": { + "configJinaReader": "जीना रीडर कॉन्फ़िगर करें", + "apiKeyPlaceholder": "jina.ai से एपीआई कुंजी", + "getApiKeyLinkText": "jina.ai पर अपनी निःशुल्क एपीआई कुंजी प्राप्त करें" + }, + "otherDataSource": { + "title": "अन्य डेटा स्रोतों से कनेक्ट करें?", + "learnMore": "और जानो", + "description": "वर्तमान में, Dify के ज्ञानकोष में केवल सीमित डेटा स्रोत हैं। Dify नॉलेज बेस में डेटा स्रोत का योगदान करना सभी उपयोगकर्ताओं के लिए प्लेटफॉर्म के लचीलेपन और शक्ति को बढ़ाने में मदद करने का एक शानदार तरीका है। हमारी योगदान मार्गदर्शिका आरंभ करना आसान बनाती है। अधिक जानने के लिए कृपया नीचे दिए गए लिंक पर क्लिक करें।" + }, + "watercrawl": { + "apiKeyPlaceholder": "watercrawl.dev से API कुंजी", + "configWatercrawl": "वाटरक्रॉल कॉन्फ़िगर करें", + "getApiKeyLinkText": "watercrawl.dev से अपना एपीआई कुंजी प्राप्त करें" + } +} diff --git a/web/i18n/hi-IN/dataset-creation.ts b/web/i18n/hi-IN/dataset-creation.ts deleted file mode 100644 index f21d4745d6..0000000000 --- a/web/i18n/hi-IN/dataset-creation.ts +++ /dev/null @@ -1,236 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: 'ज्ञान', - }, - one: 'डेटा स्रोत चुनें', - two: 'पाठ पूर्व-प्रसंस्करण और सफाई', - three: 'निष्पादित करें और समाप्त करें', - }, - error: { - unavailable: 'यह ज्ञान उपलब्ध नहीं है', - }, - firecrawl: { - configFirecrawl: '🔥फायरक्रॉल को कॉन्फ़िगर करें', - apiKeyPlaceholder: 'firecrawl.dev से API कुंजी', - getApiKeyLinkText: 'firecrawl.dev से अपनी API कुंजी प्राप्त करें', - }, - stepOne: { - filePreview: 'फ़ाइल पूर्वावलोकन', - pagePreview: 'पृष्ठ पूर्वावलोकन', - dataSourceType: { - file: 'फ़ाइल से आयात करें', - notion: 'नोटियन से सिंक करें', - web: 'वेबसाइट से सिंक करें', - }, - uploader: { - title: 'फ़ाइल अपलोड करें', - button: 'फ़ाइलों या फ़ोल्डरों को खींचें और छोड़ें, या', - buttonSingleFile: 'फ़ाइल को खींचें और छोड़ें, या', - 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: 'नाम खाली नहीं हो सकता', - nameLengthInvalid: 'नाम 1 से 40 वर्णों के बीच होना चाहिए', - cancelButton: 'रद्द करें', - confirmButton: 'बनाएं', - failed: 'बनाना विफल रहा', - }, - website: { - fireCrawlNotConfigured: 'फायरक्रॉल कॉन्फ़िगर नहीं किया गया है', - fireCrawlNotConfiguredDescription: - 'इसे उपयोग करने के लिए फायरक्रॉल को API कुंजी के साथ कॉन्फ़िगर करें।', - configure: 'कॉन्फ़िगर करें', - run: 'चलाएं', - firecrawlTitle: '🔥फायरक्रॉल के साथ वेब सामग्री निकालें', - firecrawlDoc: 'फायरक्रॉल दस्तावेज़', - options: 'विकल्प', - crawlSubPage: 'उप-पृष्ठों को क्रॉल करें', - limit: 'सीमा', - maxDepth: 'अधिकतम गहराई', - excludePaths: 'पथों को बाहर रखें', - includeOnlyPaths: 'केवल पथों को शामिल करें', - extractOnlyMainContent: - 'केवल मुख्य सामग्री निकालें (कोई हैडर, नेव्स, फुटर आदि नहीं)', - exceptionErrorTitle: 'फायरक्रॉल जॉब चलाते समय एक अपवाद हुआ:', - unknownError: 'अज्ञात त्रुटि', - totalPageScraped: 'कुल पृष्ठ स्क्रैप किए गए:', - selectAll: 'सभी चुनें', - resetAll: 'सभी रीसेट करें', - scrapTimeInfo: 'कुल {{total}} पृष्ठों को {{time}}s में स्क्रैप किया गया', - preview: 'पूर्वावलोकन', - maxDepthTooltip: - 'प्रविष्ट URL के सापेक्ष क्रॉल करने की अधिकतम गहराई। गहराई 0 केवल प्रविष्ट url का पृष्ठ स्क्रैप करता है, गहराई 1 url और प्रविष्टURL + एक / के बाद सब कुछ स्क्रैप करता है, और इसी तरह।', - jinaReaderDocLink: 'https://jina.ai/reader', - jinaReaderDoc: 'जीना रीडर के बारे में अधिक जानें', - useSitemapTooltip: 'साइट क्रॉल करने के लिए साइटमैप का अनुसरण करें. यदि नहीं, तो जीना रीडर पृष्ठ प्रासंगिकता के आधार पर पुनरावृत्त रूप से क्रॉल करेगा, कम लेकिन उच्च-गुणवत्ता वाले पृष्ठों की उपज देगा।', - useSitemap: 'साइटमैप का इस्तेमाल करना', - jinaReaderNotConfigured: 'जीना रीडर कॉन्फ़िगर नहीं किया गया है', - chooseProvider: 'एक प्रदाता का चयन करें', - jinaReaderTitle: 'पूरी साइट को मार्कडाउन में बदलें', - jinaReaderNotConfiguredDescription: 'एक्सेस के लिए अपनी मुफ्त एपीआई कुंजी दर्ज करके जीना रीडर सेट करें।', - watercrawlTitle: 'Watercrawl के साथ वेब सामग्री निकालें', - waterCrawlNotConfigured: 'Watercrawl को कॉन्फ़िगर नहीं किया गया है', - configureFirecrawl: 'फायरक्रॉल को कॉन्फ़िगर करें', - watercrawlDoc: 'वाटरक्रॉल दस्तावेज़', - waterCrawlNotConfiguredDescription: 'इसे उपयोग करने के लिए वॉटरक्रॉल को एपीआई कुंजी के साथ कॉन्फ़िगर करें।', - configureJinaReader: 'जिना रीडर कॉन्फ़िगर करें', - configureWatercrawl: 'वाटरक्रॉल कॉन्फ़िगर करें', - running: 'दौड़ना', - }, - cancel: 'रद्द करना', - }, - 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: 'का उपयोग करके खंड करना', - estimateCost: 'अनुमानित लागत', - estimateSegment: 'अनुमानित खंड', - segmentCount: 'खंड', - calculating: 'गणना कर रहा है...', - fileSource: 'दस्तावेज़ों को पूर्व-प्रसंस्करण करें', - notionSource: 'पृष्ठों को पूर्व-प्रसंस्करण करें', - websiteSource: 'वेबसाइट को पूर्व-प्रसंस्करण करें', - other: 'और अन्य ', - fileUnit: ' फ़ाइलें', - notionUnit: ' पृष्ठ', - webpageUnit: ' पृष्ठ', - previousStep: 'पिछला कदम', - nextStep: 'सहेजें और संसाधित करें', - save: 'सहेजें और संसाधित करें', - cancel: 'रद्द करें', - sideTipTitle: 'खंड और पूर्व-प्रसंस्करण क्यों करें?', - sideTipP1: - 'पाठ डेटा को संसाधित करते समय, खंड और सफाई दो महत्वपूर्ण पूर्व-प्रसंस्करण चरण हैं।', - sideTipP2: - 'खंड लंबे पाठ को पैराग्राफ में विभाजित करता है ताकि मॉडल बेहतर समझ सके। यह मॉडल परिणामों की गुणवत्ता और प्रासंगिकता में सुधार करता है।', - sideTipP3: - 'सफाई अनावश्यक वर्णों और स्वरूपों को हटाती है, ज्ञान को साफ और सरल बनाने में मदद करती है।', - sideTipP4: - 'उचित खंड और सफाई मॉडल प्रदर्शन में सुधार करती है, अधिक सटीक और मूल्यवान परिणाम प्रदान करती है।', - previewTitle: 'पूर्वावलोकन', - previewTitleButton: 'पूर्वावलोकन', - previewButton: 'प्रश्न-उत्तर प्रारूप में स्विच करना', - previewSwitchTipStart: - 'वर्तमान खंड पूर्वावलोकन पाठ प्रारूप में है, प्रश्न-उत्तर प्रारूप में स्विच करने से', - previewSwitchTipEnd: ' अतिरिक्त टोकन खर्च होंगे', - characters: 'वर्ण', - indexSettingTip: 'इंडेक्स विधि बदलने के लिए, कृपया जाएं ', - retrievalSettingTip: 'इंडेक्स विधि बदलने के लिए, कृपया जाएं ', - datasetSettingLink: 'ज्ञान सेटिंग्स।', - separatorTip: 'एक सीमांकक पाठ को अलग करने के लिए उपयोग किया जाने वाला वर्ण है। \\n\\n और \\n आमतौर पर पैराग्राफ और लाइनों को अलग करने के लिए उपयोग किए जाने वाले सीमांकक हैं। अल्पविराम (\\n\\n,\\n) के साथ संयुक्त, अधिकतम खंड लंबाई से अधिक होने पर अनुच्छेदों को पंक्तियों द्वारा खंडित किया जाएगा। आप स्वयं द्वारा परिभाषित विशेष सीमांकक का भी उपयोग कर सकते हैं (उदा. ***).', - maxLengthCheck: 'अधिकतम चंक लंबाई {{limit}} से कम होनी चाहिए', - useQALanguage: 'में क्यू एंड ए प्रारूप का उपयोग करके चंक करें', - previewChunkCount: '{{गिनती}} अनुमानित खंड', - previewChunk: 'पूर्वावलोकन चंक', - paragraph: 'अनुच्‍छेद', - general: 'सामान्य', - highQualityTip: 'एक बार उच्च गुणवत्ता मोड में एम्बेडिंग समाप्त करने के बाद, किफायती मोड पर वापस जाना उपलब्ध नहीं है।', - parentChunkForContext: 'संदर्भ के लिए माता-पिता का हिस्सा', - notAvailableForQA: 'Q&A इंडेक्स के लिए उपलब्ध नहीं है', - fullDoc: 'पूर्ण डॉक्टर', - fullDocTip: 'पूरे दस्तावेज़ को मूल खंड के रूप में उपयोग किया जाता है और सीधे पुनर्प्राप्त किया जाता है। कृपया ध्यान दें कि प्रदर्शन कारणों से, 10000 टोकन से अधिक का पाठ स्वचालित रूप से छोटा कर दिया जाएगा।', - previewChunkTip: 'पूर्वावलोकन लोड करने के लिए बाईं ओर \'पूर्वावलोकन चंक\' बटन पर क्लिक करें', - generalTip: 'सामान्य पाठ चंकिंग मोड, पुनर्प्राप्त और याद किए गए चंक्स समान हैं।', - qaSwitchHighQualityTipTitle: 'Q&A प्रारूप के लिए उच्च-गुणवत्ता अनुक्रमण विधि की आवश्यकता होती है', - qaSwitchHighQualityTipContent: 'वर्तमान में, केवल उच्च-गुणवत्ता वाली अनुक्रमणिका विधि Q & A प्रारूप चंकिंग का समर्थन करती है। क्या आप उच्च-गुणवत्ता मोड पर स्विच करना चाहेंगे?', - parentChildChunkDelimiterTip: 'एक सीमांकक पाठ को अलग करने के लिए उपयोग किया जाने वाला वर्ण है। माता-पिता के टुकड़ों को छोटे बच्चे के टुकड़ों में विभाजित करने के लिए \\n की सिफारिश की जाती है। आप स्वयं द्वारा परिभाषित विशेष सीमांकक का भी उपयोग कर सकते हैं।', - childChunkForRetrieval: 'पुनर्प्राप्ति के लिए बाल-खंड', - switch: 'स्विच', - parentChildDelimiterTip: 'एक सीमांकक पाठ को अलग करने के लिए उपयोग किया जाने वाला वर्ण है। \\n\\n मूल दस्तावेज़ को बड़े पैरेंट विखंडू में विभाजित करने के लिए अनुशंसित है। आप स्वयं द्वारा परिभाषित विशेष सीमांकक का भी उपयोग कर सकते हैं।', - notAvailableForParentChild: 'पैरेंट-चाइल्ड इंडेक्स के लिए उपलब्ध नहीं है', - parentChild: 'माता-पिता का बच्चा', - parentChildTip: 'पैरेंट-चाइल्ड मोड का उपयोग करते समय, चाइल्ड-चंक का उपयोग पुनर्प्राप्ति के लिए किया जाता है और पैरेंट-चंक का उपयोग संदर्भ के रूप में रिकॉल के लिए किया जाता है।', - paragraphTip: 'यह मोड पाठ को सीमांकक और अधिकतम खंड लंबाई के आधार पर पैराग्राफ में विभाजित करता है, पुनर्प्राप्ति के लिए मूल खंड के रूप में विभाजित पाठ का उपयोग करता है।', - qaTip: 'संरचित प्रश्नोत्तर डेटा का उपयोग करते समय, आप प्रश्नों को उत्तरों के साथ जोड़ने वाले दस्तावेज़ बना सकते हैं। ये दस्तावेज़ प्रश्न भाग के आधार पर अनुक्रमित होते हैं, जिससे प्रणाली क्वेरी समानता के आधार पर संबंधित उत्तरों को पुनः प्राप्त कर सकती है।', - }, - stepThree: { - creationTitle: '🎉 ज्ञान बनाया गया', - creationContent: - 'हमने स्वचालित रूप से ज्ञान का नाम रखा है, आप इसे किसी भी समय संशोधित कर सकते हैं', - label: 'ज्ञान का नाम', - additionTitle: '🎉 दस्तावेज़ अपलोड किया गया', - additionP1: 'दस्तावेज़ ज्ञान में अपलोड किया गया है', - additionP2: ', आप इसे ज्ञान की दस्तावेज़ सूची में पा सकते हैं।', - stop: 'प्रसंस्करण रोकें', - resume: 'प्रसंस्करण फिर से शुरू करें', - navTo: 'दस्तावेज़ पर जाएं', - sideTipTitle: 'आगे क्या करना है', - sideTipContent: - 'दस्तावेज़ को इंडेक्स करने के बाद, ज्ञान को एप्लिकेशन में संदर्भ के रूप में एकीकृत किया जा सकता है, आप संदर्भ सेटिंग को प्रॉम्प्ट ऑर्केस्ट्रेशन पृष्ठ पर पा सकते हैं। आप इसे रिलीज़ के लिए एक स्वतंत्र ChatGPT इंडेक्सिंग प्लगइन के रूप में भी बना सकते हैं।', - modelTitle: 'क्या आप एम्बेडिंग को रोकने के लिए सुनिश्चित हैं?', - modelContent: - 'यदि आपको बाद में फिर से प्रसंस्करण करने की आवश्यकता है, तो आप जहां से छोड़े थे वहीं से जारी रखेंगे।', - modelButtonConfirm: 'पुष्टि करें', - modelButtonCancel: 'रद्द करें', - }, - jinaReader: { - configJinaReader: 'जीना रीडर कॉन्फ़िगर करें', - apiKeyPlaceholder: 'jina.ai से एपीआई कुंजी', - getApiKeyLinkText: 'jina.ai पर अपनी निःशुल्क एपीआई कुंजी प्राप्त करें', - }, - otherDataSource: { - title: 'अन्य डेटा स्रोतों से कनेक्ट करें?', - learnMore: 'और जानो', - description: 'वर्तमान में, Dify के ज्ञानकोष में केवल सीमित डेटा स्रोत हैं। Dify नॉलेज बेस में डेटा स्रोत का योगदान करना सभी उपयोगकर्ताओं के लिए प्लेटफॉर्म के लचीलेपन और शक्ति को बढ़ाने में मदद करने का एक शानदार तरीका है। हमारी योगदान मार्गदर्शिका आरंभ करना आसान बनाती है। अधिक जानने के लिए कृपया नीचे दिए गए लिंक पर क्लिक करें।', - }, - watercrawl: { - apiKeyPlaceholder: 'watercrawl.dev से API कुंजी', - configWatercrawl: 'वाटरक्रॉल कॉन्फ़िगर करें', - getApiKeyLinkText: 'watercrawl.dev से अपना एपीआई कुंजी प्राप्त करें', - }, -} - -export default translation diff --git a/web/i18n/hi-IN/dataset-documents.json b/web/i18n/hi-IN/dataset-documents.json new file mode 100644 index 0000000000..cecee9957b --- /dev/null +++ b/web/i18n/hi-IN/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "दस्तावेज़", + "desc": "यहाँ ज्ञान की सभी फाइलें दिखाई गई हैं, और पूरे ज्ञान को डिफी संदर्भों से जोड़ा जा सकता है या चैट प्लगइन के माध्यम से अनुक्रमित किया जा सकता है।", + "addFile": "फाइल जोड़ें", + "addPages": "पृष्ठ जोड़ें", + "addUrl": "URL जोड़ें", + "table": { + "header": { + "fileName": "फाइल का नाम", + "words": "शब्द", + "hitCount": "पुनर्प्राप्ति गणना", + "uploadTime": "अपलोड का समय", + "status": "स्थिति", + "action": "क्रिया", + "chunkingMode": "चंकिंग मोड" + }, + "rename": "नाम बदलें", + "name": "नाम" + }, + "action": { + "uploadFile": "नई फाइल अपलोड करें", + "settings": "खंड सेटिंग्स", + "addButton": "खंड जोड़ें", + "add": "खंड जोड़ें", + "batchAdd": "बैच में जोड़ें", + "archive": "संग्रहीत करें", + "unarchive": "संग्रह से बाहर करें", + "delete": "हटाएँ", + "enableWarning": "संग्रहित फाइल को सक्रिय नहीं किया जा सकता", + "sync": "सिंक्रोनाइज़ करें", + "resume": "रिज़्यूमे", + "pause": "रोकें" + }, + "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": "ठीक है" + }, + "learnMore": "और जानो", + "sort": { + "uploadTime": "अपलोड समय", + "hitCount": "पुनः प्राप्ति गणना" + } + }, + "metadata": { + "title": "मेटाडेटा", + "desc": "दस्तावेजों के लिए मेटाडेटा लेबलिंग से AI को समय पर उन तक पहुँचने में मदद मिलती है और उपयोगकर्ताओं के लिए संदर्भों का स्रोत प्रदर्शित होता है।", + "dateTimeFormat": "MMMM D, YYYY hh:mm A", + "docTypeSelectTitle": "कृपया दस्तावेज़ प्रकार चुनें", + "docTypeChangeTitle": "दस्तावेज़ प्रकार बदलें", + "docTypeSelectWarning": "यदि दस्तावेज़ प्रकार बदला जाता है, तो अब भरी गई मेटाडेटा संरक्षित नहीं रहेगी", + "firstMetaAction": "चलिए शुरू करते हैं", + "placeholder": { + "add": "जोड़ें ", + "select": "चुनें " + }, + "source": { + "upload_file": "फाइल अपलोड करें", + "notion": "नोशन से सिंक करें", + "github": "गिटहब से सिंक करें", + "local_file": "स्थानीय फ़ाइल", + "online_document": "ऑनलाइन दस्तावेज़", + "website_crawl": "वेबसाइट क्रॉल" + }, + "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": "प्रकाशन तिथि", + "topicKeywords": "विषय/कीवर्ड्स", + "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": "पैराग्राफ पूर्वावलोकन एम्बेडिंग पूरी होने के बाद उपलब्ध होगा", + "parentMaxTokens": "जनक", + "pause": "रुकना", + "hierarchical": "माता-पिता का बच्चा", + "childMaxTokens": "बच्चा", + "waiting": "इनपुट की प्रतीक्षा कर रहा हूं..." + }, + "segment": { + "paragraphs": "पैराग्राफ", + "keywords": "कीवर्ड", + "addKeyWord": "कीवर्ड जोड़ें", + "keywordError": "कीवर्ड की अधिकतम लंबाई 20 अक्षर हो सकती है", + "hitCount": "पुनर्प्राप्ति गणना", + "vectorHash": "वेक्टर हैश: ", + "questionPlaceholder": "यहाँ प्रश्न जोड़ें", + "questionEmpty": "प्रश्न खाली नहीं हो सकता", + "answerPlaceholder": "यहाँ उत्तर जोड़ें", + "answerEmpty": "उत्तर खाली नहीं हो सकता", + "contentPlaceholder": "यहाँ सामग्री जोड़ें", + "contentEmpty": "सामग्री खाली नहीं हो सकती", + "newTextSegment": "नया पाठ खंड", + "newQaSegment": "नया Q&A खंड", + "delete": "इस खंड को हटाएँ ?", + "parentChunks_other": "जनक चंक्स", + "childChunks_one": "चाइल्ड चंक", + "searchResults_other": "परिणाम", + "parentChunks_one": "जनक चंक", + "searchResults_one": "परिणाम", + "addChildChunk": "Child chunk जोड़ें", + "childChunks_other": "बच्चे के टुकड़े", + "collapseChunks": "चंक्स संक्षिप्त करें", + "characters_one": "अक्षर", + "childChunkAdded": "1 चाइल्ड चंक जोड़ा गया", + "chunks_other": "हिस्सा", + "addAnother": "एक और जोड़ें", + "newChunk": "नया हिस्सा", + "searchResults_zero": "परिणाम", + "chunk": "हिस्सा", + "addChunk": "चंक जोड़ें", + "editChildChunk": "संपादित करें बाल चंक", + "editedAt": "पर संपादित", + "dateTimeFormat": "MM/DD/YYYY h:mm", + "childChunk": "चाइल्ड-चंक", + "parentChunk": "माता-पिता-चंक", + "empty": "कोई हिस्सा नहीं मिला", + "editChunk": "चंक संपादित करें", + "characters_other": "वर्ण", + "regeneratingMessage": "इसमें कुछ समय लग सकता है, कृपया प्रतीक्षा करें...", + "regenerationConfirmTitle": "क्या आप बच्चे के टुकड़ों को पुन: उत्पन्न करना चाहते हैं?", + "regeneratingTitle": "बच्चे के टुकड़ों को पुनर्जीवित करना", + "chunks_one": "हिस्सा", + "edited": "संपादित", + "editParentChunk": "पेरेंट चंक संपादित करें", + "newChildChunk": "न्यू चाइल्ड चंक", + "clearFilter": "फ़िल्टर साफ़ करें", + "regenerationSuccessMessage": "आप इस विंडो को बंद कर सकते हैं।", + "expandChunks": "विखंडू का विस्तार करें", + "regenerationSuccessTitle": "पुनर्जनन पूरा हुआ", + "chunkAdded": "1 हिस्सा जोड़ा गया", + "chunkDetail": "चंक विवरण", + "regenerationConfirmMessage": "चाइल्ड चंक्स को रीजनरेट करने से वर्तमान चाइल्ड चंक्स ओवरराइट हो जाएंगे, जिसमें संपादित चंक्स और नए जोड़े गए चंक्स शामिल हैं। पुनरुत्थान को पूर्ववत नहीं किया जा सकता है।", + "keywordDuplicate": "कीवर्ड पहले से मौजूद है", + "keywordEmpty": "कीवर्ड ख़ाली नहीं हो सकता", + "allFilesUploaded": "सभी फाइलें सहेजने से पहले अपलोड की जानी चाहिए" + } +} diff --git a/web/i18n/hi-IN/dataset-documents.ts b/web/i18n/hi-IN/dataset-documents.ts deleted file mode 100644 index ea82fe6f3b..0000000000 --- a/web/i18n/hi-IN/dataset-documents.ts +++ /dev/null @@ -1,409 +0,0 @@ -const translation = { - list: { - title: 'दस्तावेज़', - desc: 'यहाँ ज्ञान की सभी फाइलें दिखाई गई हैं, और पूरे ज्ञान को डिफी संदर्भों से जोड़ा जा सकता है या चैट प्लगइन के माध्यम से अनुक्रमित किया जा सकता है।', - addFile: 'फाइल जोड़ें', - addPages: 'पृष्ठ जोड़ें', - addUrl: 'URL जोड़ें', - table: { - header: { - fileName: 'फाइल का नाम', - words: 'शब्द', - hitCount: 'पुनर्प्राप्ति गणना', - uploadTime: 'अपलोड का समय', - status: 'स्थिति', - action: 'क्रिया', - chunkingMode: 'चंकिंग मोड', - }, - rename: 'नाम बदलें', - name: 'नाम', - }, - action: { - uploadFile: 'नई फाइल अपलोड करें', - settings: 'खंड सेटिंग्स', - addButton: 'खंड जोड़ें', - add: 'खंड जोड़ें', - batchAdd: 'बैच में जोड़ें', - archive: 'संग्रहीत करें', - unarchive: 'संग्रह से बाहर करें', - delete: 'हटाएँ', - enableWarning: 'संग्रहित फाइल को सक्रिय नहीं किया जा सकता', - sync: 'सिंक्रोनाइज़ करें', - resume: 'रिज़्यूमे', - pause: 'रोकें', - }, - 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: 'ठीक है', - }, - learnMore: 'और जानो', - sort: { - uploadTime: 'अपलोड समय', - hitCount: 'पुनः प्राप्ति गणना', - }, - }, - metadata: { - title: 'मेटाडेटा', - desc: 'दस्तावेजों के लिए मेटाडेटा लेबलिंग से AI को समय पर उन तक पहुँचने में मदद मिलती है और उपयोगकर्ताओं के लिए संदर्भों का स्रोत प्रदर्शित होता है।', - dateTimeFormat: 'MMMM D, YYYY hh:mm A', - docTypeSelectTitle: 'कृपया दस्तावेज़ प्रकार चुनें', - docTypeChangeTitle: 'दस्तावेज़ प्रकार बदलें', - docTypeSelectWarning: - 'यदि दस्तावेज़ प्रकार बदला जाता है, तो अब भरी गई मेटाडेटा संरक्षित नहीं रहेगी', - firstMetaAction: 'चलिए शुरू करते हैं', - placeholder: { - add: 'जोड़ें ', - select: 'चुनें ', - }, - source: { - upload_file: 'फाइल अपलोड करें', - notion: 'नोशन से सिंक करें', - github: 'गिटहब से सिंक करें', - local_file: 'स्थानीय फ़ाइल', - online_document: 'ऑनलाइन दस्तावेज़', - website_crawl: 'वेबसाइट क्रॉल', - }, - 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: 'प्रकाशन तिथि', - topicKeywords: 'विषय/कीवर्ड्स', - 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: 'पैराग्राफ पूर्वावलोकन एम्बेडिंग पूरी होने के बाद उपलब्ध होगा', - parentMaxTokens: 'जनक', - pause: 'रुकना', - hierarchical: 'माता-पिता का बच्चा', - childMaxTokens: 'बच्चा', - waiting: 'इनपुट की प्रतीक्षा कर रहा हूं...', - }, - segment: { - paragraphs: 'पैराग्राफ', - keywords: 'कीवर्ड', - addKeyWord: 'कीवर्ड जोड़ें', - keywordError: 'कीवर्ड की अधिकतम लंबाई 20 अक्षर हो सकती है', - hitCount: 'पुनर्प्राप्ति गणना', - vectorHash: 'वेक्टर हैश: ', - questionPlaceholder: 'यहाँ प्रश्न जोड़ें', - questionEmpty: 'प्रश्न खाली नहीं हो सकता', - answerPlaceholder: 'यहाँ उत्तर जोड़ें', - answerEmpty: 'उत्तर खाली नहीं हो सकता', - contentPlaceholder: 'यहाँ सामग्री जोड़ें', - contentEmpty: 'सामग्री खाली नहीं हो सकती', - newTextSegment: 'नया पाठ खंड', - newQaSegment: 'नया Q&A खंड', - delete: 'इस खंड को हटाएँ ?', - parentChunks_other: 'जनक चंक्स', - childChunks_one: 'चाइल्ड चंक', - searchResults_other: 'परिणाम', - parentChunks_one: 'जनक चंक', - searchResults_one: 'परिणाम', - addChildChunk: 'Child chunk जोड़ें', - childChunks_other: 'बच्चे के टुकड़े', - collapseChunks: 'चंक्स संक्षिप्त करें', - characters_one: 'अक्षर', - childChunkAdded: '1 चाइल्ड चंक जोड़ा गया', - chunks_other: 'हिस्सा', - addAnother: 'एक और जोड़ें', - newChunk: 'नया हिस्सा', - searchResults_zero: 'परिणाम', - chunk: 'हिस्सा', - addChunk: 'चंक जोड़ें', - editChildChunk: 'संपादित करें बाल चंक', - editedAt: 'पर संपादित', - dateTimeFormat: 'MM/DD/YYYY h:mm', - childChunk: 'चाइल्ड-चंक', - parentChunk: 'माता-पिता-चंक', - empty: 'कोई हिस्सा नहीं मिला', - editChunk: 'चंक संपादित करें', - characters_other: 'वर्ण', - regeneratingMessage: 'इसमें कुछ समय लग सकता है, कृपया प्रतीक्षा करें...', - regenerationConfirmTitle: 'क्या आप बच्चे के टुकड़ों को पुन: उत्पन्न करना चाहते हैं?', - regeneratingTitle: 'बच्चे के टुकड़ों को पुनर्जीवित करना', - chunks_one: 'हिस्सा', - edited: 'संपादित', - editParentChunk: 'पेरेंट चंक संपादित करें', - newChildChunk: 'न्यू चाइल्ड चंक', - clearFilter: 'फ़िल्टर साफ़ करें', - regenerationSuccessMessage: 'आप इस विंडो को बंद कर सकते हैं।', - expandChunks: 'विखंडू का विस्तार करें', - regenerationSuccessTitle: 'पुनर्जनन पूरा हुआ', - chunkAdded: '1 हिस्सा जोड़ा गया', - chunkDetail: 'चंक विवरण', - regenerationConfirmMessage: 'चाइल्ड चंक्स को रीजनरेट करने से वर्तमान चाइल्ड चंक्स ओवरराइट हो जाएंगे, जिसमें संपादित चंक्स और नए जोड़े गए चंक्स शामिल हैं। पुनरुत्थान को पूर्ववत नहीं किया जा सकता है।', - keywordDuplicate: 'कीवर्ड पहले से मौजूद है', - keywordEmpty: 'कीवर्ड ख़ाली नहीं हो सकता', - allFilesUploaded: 'सभी फाइलें सहेजने से पहले अपलोड की जानी चाहिए', - }, -} - -export default translation diff --git a/web/i18n/hi-IN/dataset-hit-testing.json b/web/i18n/hi-IN/dataset-hit-testing.json new file mode 100644 index 0000000000..23b88a5fe9 --- /dev/null +++ b/web/i18n/hi-IN/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "पुनर्प्राप्ति परीक्षण", + "desc": "दिए गए प्रश्न पाठ के आधार पर ज्ञान की प्रभावशीलता का परीक्षण करें।", + "dateTimeFormat": "MM/DD/YYYY hh:mm A", + "table": { + "header": { + "source": "स्रोत", + "time": "समय", + "queryContent": "सवाल की सामग्री" + } + }, + "input": { + "title": "स्रोत पाठ", + "placeholder": "कृपया एक पाठ दर्ज करें, एक छोटा वाक्यांश सुझाया गया है।", + "countWarning": "अधिकतम 200 अक्षर।", + "indexWarning": "केवल उच्च गुणवत्ता वाला ज्ञान।", + "testing": "परीक्षण कर रहा है" + }, + "hit": { + "title": "पुनर्प्राप्ति अनुच्छेद", + "emptyTip": "पुनर्प्राप्ति परीक्षण के परिणाम यहां दिखाई देंगे" + }, + "noRecentTip": "यहां कोई हाल के प्रश्न परिणाम नहीं हैं", + "viewChart": "वेक्टर चार्ट देखें", + "viewDetail": "विस्तार से देखें", + "settingTitle": "पुनर्प्राप्ति सेटिंग", + "hitChunks": "{{num}} बच्चे के टुकड़े मारो", + "keyword": "खोजशब्दों", + "chunkDetail": "चंक विवरण", + "open": "खोलना", + "records": "रिकॉर्ड", + "imageUploader": { + "tip": "छवियाँ अपलोड करें या ड्रॉप करें (प्रत्येक अधिकतम {{batchCount}}, {{size}}MB)", + "tooltip": "छवियां अपलोड करें (अधिकतम {{batchCount}}, प्रत्येक {{size}}MB)", + "dropZoneTip": "अपलोड करने के लिए फ़ाइल यहाँ खींचें", + "singleChunkAttachmentLimitTooltip": "सिंगल चंक अटैचमेंट की संख्या {{limit}} से अधिक नहीं हो सकती" + } +} diff --git a/web/i18n/hi-IN/dataset-hit-testing.ts b/web/i18n/hi-IN/dataset-hit-testing.ts deleted file mode 100644 index 7080f1fd76..0000000000 --- a/web/i18n/hi-IN/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - title: 'पुनर्प्राप्ति परीक्षण', - desc: 'दिए गए प्रश्न पाठ के आधार पर ज्ञान की प्रभावशीलता का परीक्षण करें।', - dateTimeFormat: 'MM/DD/YYYY hh:mm A', - table: { - header: { - source: 'स्रोत', - time: 'समय', - queryContent: 'सवाल की सामग्री', - }, - }, - input: { - title: 'स्रोत पाठ', - placeholder: 'कृपया एक पाठ दर्ज करें, एक छोटा वाक्यांश सुझाया गया है।', - countWarning: 'अधिकतम 200 अक्षर।', - indexWarning: 'केवल उच्च गुणवत्ता वाला ज्ञान।', - testing: 'परीक्षण कर रहा है', - }, - hit: { - title: 'पुनर्प्राप्ति अनुच्छेद', - emptyTip: 'पुनर्प्राप्ति परीक्षण के परिणाम यहां दिखाई देंगे', - }, - noRecentTip: 'यहां कोई हाल के प्रश्न परिणाम नहीं हैं', - viewChart: 'वेक्टर चार्ट देखें', - viewDetail: 'विस्तार से देखें', - settingTitle: 'पुनर्प्राप्ति सेटिंग', - hitChunks: '{{num}} बच्चे के टुकड़े मारो', - keyword: 'खोजशब्दों', - chunkDetail: 'चंक विवरण', - open: 'खोलना', - records: 'रिकॉर्ड', - imageUploader: { - tip: 'छवियाँ अपलोड करें या ड्रॉप करें (प्रत्येक अधिकतम {{batchCount}}, {{size}}MB)', - tooltip: 'छवियां अपलोड करें (अधिकतम {{batchCount}}, प्रत्येक {{size}}MB)', - dropZoneTip: 'अपलोड करने के लिए फ़ाइल यहाँ खींचें', - singleChunkAttachmentLimitTooltip: 'सिंगल चंक अटैचमेंट की संख्या {{limit}} से अधिक नहीं हो सकती', - }, -} - -export default translation diff --git a/web/i18n/hi-IN/dataset-pipeline.json b/web/i18n/hi-IN/dataset-pipeline.json new file mode 100644 index 0000000000..ff5e389afd --- /dev/null +++ b/web/i18n/hi-IN/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "createFromScratch": { + "title": "खाली ज्ञान पाइपलाइन", + "description": "शुद्ध रूप से डेटा प्रोसेसिंग और ढांचे पर पूर्ण नियंत्रण के साथ एक कस्टम पाइपलाइन बनाएँ।" + }, + "backToKnowledge": "ज्ञान की ओर वापस", + "createKnowledge": "ज्ञान उत्पन्न करें", + "caution": "सावधानी", + "importDSL": "एक DSL फ़ाइल से आयात करें", + "errorTip": "ज्ञान आधार बनाने में विफल", + "successTip": "सफलता से एक ज्ञान आधार बनाया गया" + }, + "templates": { + "customized": "कस्टमाइज़ किया गया" + }, + "operations": { + "dataSource": "डेटा स्रोत", + "backToDataSource": "डेटा स्रोत पर वापस", + "choose": "चुनें", + "saveAndProcess": "सहेजें और प्रक्रिया करें", + "convert": "रूपांतरित करें", + "useTemplate": "इस ज्ञान पाइपलाइन का उपयोग करें", + "editInfo": "जानकारी संपादित करें", + "exportPipeline": "निर्यात पाइपलाइन", + "details": "विवरण", + "preview": "पूर्वावलोकन", + "process": "प्रक्रिया" + }, + "deletePipeline": { + "title": "क्या आप इस पाइपलाइन टेम्पलेट को हटाने के लिए निश्चित हैं?", + "content": "पाइपलाइन टेम्पलेट को हटाना वापस नहीं किया जा सकता।" + }, + "publishPipeline": { + "success": { + "message": "ज्ञान पाइपलाइन प्रकाशित", + "tip": "दस्तावेज़ जोड़ने या प्रबंधित करने के लिए दस्तावेज़ पर जाएँ।" + }, + "error": { + "message": "ज्ञान पाइपलाइन प्रकाशित करने में विफल रहा" + } + }, + "publishTemplate": { + "success": { + "learnMore": "और जानें", + "tip": "आप इस टेम्पलेट का उपयोग निर्माण पृष्ठ पर कर सकते हैं।", + "message": "पाइपलाइन टेम्पलेट प्रकाशित" + }, + "error": { + "message": "पाइपलाइन टेम्पलेट को प्रकाशित करने में असफल हुआ" + } + }, + "exportDSL": { + "errorTip": "पाइपलाइन DSL निर्यात करने में विफल", + "successTip": "निर्यात पाइपलाइन DSL सफलतापूर्वक" + }, + "details": { + "structure": "संरचना", + "structureTooltip": "चंक संरचना यह निर्धारित करती है कि दस्तावेज कैसे विभाजित और अनुक्रमित होते हैं—सामान्य, माता-पिता- बच्चे, और प्रश्नोत्तर मोड प्रदान करते हुए—और यह प्रत्येक ज्ञान आधार के लिए अद्वितीय होती है।", + "createdBy": "{{author}} द्वारा" + }, + "testRun": { + "steps": { + "dataSource": "डेटा स्रोत", + "documentProcessing": "दस्तावेज़ प्रसंस्करण" + }, + "dataSource": { + "localFiles": "स्थानीय फ़ाइलें" + }, + "notion": { + "docTitle": "नोटियन दस्तावेज़", + "title": "नोटियन पृष्ठों का चयन करें" + }, + "title": "परीक्षण चलाना", + "tooltip": "परीक्षण रन मोड में, एक समय में केवल एक दस्तावेज़ को आयात करने की अनुमति है ताकि डिबगिंग और अवलोकन को आसान बनाया जा सके।" + }, + "inputFieldPanel": { + "uniqueInputs": { + "title": "प्रत्येक प्रवेश के लिए अद्वितीय इनपुट", + "tooltip": "असाधारण इनपुट केवल चयनित डेटा स्रोत और इसके डाउनस्ट्रीम नोड्स के लिए सुलभ हैं। उपयोगकर्ताओं को अन्य डेटा स्रोत चुनते समय इसे भरने की आवश्यकता नहीं होगी। केवल उन इनपुट फ़ील्ड्स जो डेटा स्रोत वेरिएबल द्वारा संदर्भित हैं, पहले चरण (डेटा स्रोत) में दिखाई देंगे। सभी अन्य फ़ील्ड दूसरे चरण (डॉक्यूमेंट्स प्रक्रिया) में दिखाई देंगी।" + }, + "globalInputs": { + "title": "सभी प्रवेशों के लिए वैश्विक इनपुट", + "tooltip": "वैश्विक इनपुट सभी नोड्स में साझा किए जाते हैं। उपयोगकर्ताओं को किसी भी डेटा स्रोत को चुनते समय इन्हें भरना होगा। उदाहरण के लिए, विभाजक और अधिकतम खंड की लंबाई जैसे फ़ील्ड को कई डेटा स्रोतों में समान रूप से लागू किया जा सकता है। केवल इनपुट फ़ील्ड जो डेटा स्रोत परिवर्तनीयों द्वारा संदर्भित होते हैं, पहले चरण (डेटा स्रोत) में दिखाई देते हैं। सभी अन्य फ़ील्ड दूसरे चरण (प्रक्रिया दस्तावेज़) में दिखाई देते हैं।" + }, + "preview": { + "stepOneTitle": "डेटा स्रोत", + "stepTwoTitle": "दस्तावेज़ संसाधित करें" + }, + "error": { + "variableDuplicate": "चर नाम पहले से मौजूद है। कृपया एक अलग नाम चुनें।" + }, + "addInputField": "इनपुट फ़ील्ड जोड़ें", + "editInputField": "इनपुट फ़ील्ड संपादित करें", + "title": "उपयोगकर्ता इनपुट फ़ील्ड्स", + "description": "उपयोगकर्ता इनपुट फ़ील्ड्स का उपयोग पाईपलाइन निष्पादन प्रक्रिया के दौरान आवश्यक वेरिएबल्स को परिभाषित और इकट्ठा करने के लिए करते हैं। उपयोगकर्ता फ़ील्ड प्रकार को कस्टमाइज़ कर सकते हैं और विभिन्न डेटा स्रोतों या दस्तावेज़ प्रसंस्करण चरणों की आवश्यकताओं को पूरा करने के लिए इनपुट मान को लचीले ढंग से कॉन्फ़िगर कर सकते हैं।" + }, + "addDocuments": { + "steps": { + "chooseDatasource": "डेटा स्रोत चुनें", + "processDocuments": "दस्तावेज़ संसाधित करें", + "processingDocuments": "दस्तावेज़ संसाधित करना" + }, + "stepOne": { + "preview": "पूर्वावलोकन" + }, + "stepTwo": { + "previewChunks": "पूर्वावलोकन खंड", + "chunkSettings": "चंक सेटिंग्स" + }, + "stepThree": { + "learnMore": "और अधिक सीखें" + }, + "backToDataSource": "डेटा स्रोत", + "characters": "पात्र", + "title": "दस्तावेज़ जोड़ें", + "selectOnlineDocumentTip": "{{count}} पृष्ठों तक प्रक्रिया करें", + "selectOnlineDriveTip": "{{count}} फ़ाइलों तक संसाधित करें, प्रत्येक अधिकतम {{fileSize}} MB" + }, + "documentSettings": { + "title": "डॉक्यूमेंट सेटिंग्स" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} पृष्ठ" + }, + "onlineDrive": { + "breadcrumbs": { + "allFiles": "सभी फ़ाइलें", + "searchPlaceholder": "फाइलें खोजें...", + "allBuckets": "सभी क्लाउड स्टोरेज बकेट्स", + "searchResult": "{{folderName}} फ़ोल्डर में {{searchResultsLength}} आइटम खोजें" + }, + "resetKeywords": "कीवर्ड रीसेट करें", + "emptyFolder": "यह फ़ोल्डर खाली है", + "notSupportedFileType": "यह फ़ाइल प्रकार समर्थित नहीं है", + "emptySearchResult": "कोई सामान नहीं मिला", + "notConnected": "{{name}} कनेक्ट नहीं है", + "notConnectedTip": "{{name}} के साथ सिंक करने के लिए, पहले {{name}} से कनेक्शन स्थापित करना आवश्यक है।" + }, + "conversion": { + "confirm": { + "title": "पुष्टि", + "content": "यह कार्रवाई स्थायी है। आप पिछले तरीके पर वापस नहीं जा पाएंगे। कृपया परिवर्तन की पुष्टि करें।" + }, + "title": "ज्ञान पाइपलाइन में परिवर्तित करें", + "warning": "यह क्रिया पूर्ववत नहीं की जा सकती।", + "descriptionChunk1": "आप अब अपने मौजूदा ज्ञान आधार को दस्तावेज़ प्रसंस्करण के लिए ज्ञान पाइपलाइन में बदल सकते हैं", + "errorMessage": "डेटासेट को पाइपलाइन में परिवर्तित करने में विफल रहा", + "successMessage": "डेटासेट को एक पाइपलाइन में सफलतापूर्वक रूपांतरित किया गया है", + "descriptionChunk2": "— एक अधिक खुला और लचीला दृष्टिकोण जो हमारे मार्केटप्लेस से प्लगइन्स तक पहुंच प्रदान करता है। यह नए प्रसंस्करण पद्धति को सभी भविष्य के दस्तावेजों पर लागू करेगा।" + }, + "knowledgePermissions": "अनुमतियाँ", + "knowledgeNameAndIcon": "ज्ञान का नाम और आइकन", + "knowledgeNameAndIconPlaceholder": "कृपया ज्ञान बेस का नाम दर्ज करें", + "knowledgeDescription": "ज्ञान का वर्णन", + "pipelineNameAndIcon": "पाइपलाइन का नाम और आइकन", + "inputField": "इनपुट फ़ील्ड", + "editPipelineInfo": "पाइपलाइन जानकारी संपादित करें", + "knowledgeDescriptionPlaceholder": "इस ज्ञान आधार में क्या है इसका वर्णन करें। एक विस्तृत विवरण एआई को डेटा सेट की सामग्री को अधिक सटीकता से एक्सेस करने की अनुमति देता है। यदि खाली है, तो डिफी डिफ़ॉल्ट हिट रणनीति का उपयोग करेगा। (वैकल्पिक)", + "configurationTip": "{{pluginName}} कॉन्फ़िगर करें" +} diff --git a/web/i18n/hi-IN/dataset-pipeline.ts b/web/i18n/hi-IN/dataset-pipeline.ts deleted file mode 100644 index c01d0174ff..0000000000 --- a/web/i18n/hi-IN/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - createFromScratch: { - title: 'खाली ज्ञान पाइपलाइन', - description: 'शुद्ध रूप से डेटा प्रोसेसिंग और ढांचे पर पूर्ण नियंत्रण के साथ एक कस्टम पाइपलाइन बनाएँ।', - }, - backToKnowledge: 'ज्ञान की ओर वापस', - createKnowledge: 'ज्ञान उत्पन्न करें', - caution: 'सावधानी', - importDSL: 'एक DSL फ़ाइल से आयात करें', - errorTip: 'ज्ञान आधार बनाने में विफल', - successTip: 'सफलता से एक ज्ञान आधार बनाया गया', - }, - templates: { - customized: 'कस्टमाइज़ किया गया', - }, - operations: { - dataSource: 'डेटा स्रोत', - backToDataSource: 'डेटा स्रोत पर वापस', - choose: 'चुनें', - saveAndProcess: 'सहेजें और प्रक्रिया करें', - convert: 'रूपांतरित करें', - useTemplate: 'इस ज्ञान पाइपलाइन का उपयोग करें', - editInfo: 'जानकारी संपादित करें', - exportPipeline: 'निर्यात पाइपलाइन', - details: 'विवरण', - preview: 'पूर्वावलोकन', - process: 'प्रक्रिया', - }, - deletePipeline: { - title: 'क्या आप इस पाइपलाइन टेम्पलेट को हटाने के लिए निश्चित हैं?', - content: 'पाइपलाइन टेम्पलेट को हटाना वापस नहीं किया जा सकता।', - }, - publishPipeline: { - success: { - message: 'ज्ञान पाइपलाइन प्रकाशित', - tip: 'दस्तावेज़ जोड़ने या प्रबंधित करने के लिए दस्तावेज़ पर जाएँ।', - }, - error: { - message: 'ज्ञान पाइपलाइन प्रकाशित करने में विफल रहा', - }, - }, - publishTemplate: { - success: { - learnMore: 'और जानें', - tip: 'आप इस टेम्पलेट का उपयोग निर्माण पृष्ठ पर कर सकते हैं।', - message: 'पाइपलाइन टेम्पलेट प्रकाशित', - }, - error: { - message: 'पाइपलाइन टेम्पलेट को प्रकाशित करने में असफल हुआ', - }, - }, - exportDSL: { - errorTip: 'पाइपलाइन DSL निर्यात करने में विफल', - successTip: 'निर्यात पाइपलाइन DSL सफलतापूर्वक', - }, - details: { - structure: 'संरचना', - structureTooltip: 'चंक संरचना यह निर्धारित करती है कि दस्तावेज कैसे विभाजित और अनुक्रमित होते हैं—सामान्य, माता-पिता- बच्चे, और प्रश्नोत्तर मोड प्रदान करते हुए—और यह प्रत्येक ज्ञान आधार के लिए अद्वितीय होती है।', - createdBy: '{{author}} द्वारा', - }, - testRun: { - steps: { - dataSource: 'डेटा स्रोत', - documentProcessing: 'दस्तावेज़ प्रसंस्करण', - }, - dataSource: { - localFiles: 'स्थानीय फ़ाइलें', - }, - notion: { - docTitle: 'नोटियन दस्तावेज़', - title: 'नोटियन पृष्ठों का चयन करें', - }, - title: 'परीक्षण चलाना', - tooltip: 'परीक्षण रन मोड में, एक समय में केवल एक दस्तावेज़ को आयात करने की अनुमति है ताकि डिबगिंग और अवलोकन को आसान बनाया जा सके।', - }, - inputFieldPanel: { - uniqueInputs: { - title: 'प्रत्येक प्रवेश के लिए अद्वितीय इनपुट', - tooltip: 'असाधारण इनपुट केवल चयनित डेटा स्रोत और इसके डाउनस्ट्रीम नोड्स के लिए सुलभ हैं। उपयोगकर्ताओं को अन्य डेटा स्रोत चुनते समय इसे भरने की आवश्यकता नहीं होगी। केवल उन इनपुट फ़ील्ड्स जो डेटा स्रोत वेरिएबल द्वारा संदर्भित हैं, पहले चरण (डेटा स्रोत) में दिखाई देंगे। सभी अन्य फ़ील्ड दूसरे चरण (डॉक्यूमेंट्स प्रक्रिया) में दिखाई देंगी।', - }, - globalInputs: { - title: 'सभी प्रवेशों के लिए वैश्विक इनपुट', - tooltip: 'वैश्विक इनपुट सभी नोड्स में साझा किए जाते हैं। उपयोगकर्ताओं को किसी भी डेटा स्रोत को चुनते समय इन्हें भरना होगा। उदाहरण के लिए, विभाजक और अधिकतम खंड की लंबाई जैसे फ़ील्ड को कई डेटा स्रोतों में समान रूप से लागू किया जा सकता है। केवल इनपुट फ़ील्ड जो डेटा स्रोत परिवर्तनीयों द्वारा संदर्भित होते हैं, पहले चरण (डेटा स्रोत) में दिखाई देते हैं। सभी अन्य फ़ील्ड दूसरे चरण (प्रक्रिया दस्तावेज़) में दिखाई देते हैं।', - }, - preview: { - stepOneTitle: 'डेटा स्रोत', - stepTwoTitle: 'दस्तावेज़ संसाधित करें', - }, - error: { - variableDuplicate: 'चर नाम पहले से मौजूद है। कृपया एक अलग नाम चुनें।', - }, - addInputField: 'इनपुट फ़ील्ड जोड़ें', - editInputField: 'इनपुट फ़ील्ड संपादित करें', - title: 'उपयोगकर्ता इनपुट फ़ील्ड्स', - description: 'उपयोगकर्ता इनपुट फ़ील्ड्स का उपयोग पाईपलाइन निष्पादन प्रक्रिया के दौरान आवश्यक वेरिएबल्स को परिभाषित और इकट्ठा करने के लिए करते हैं। उपयोगकर्ता फ़ील्ड प्रकार को कस्टमाइज़ कर सकते हैं और विभिन्न डेटा स्रोतों या दस्तावेज़ प्रसंस्करण चरणों की आवश्यकताओं को पूरा करने के लिए इनपुट मान को लचीले ढंग से कॉन्फ़िगर कर सकते हैं।', - }, - addDocuments: { - steps: { - chooseDatasource: 'डेटा स्रोत चुनें', - processDocuments: 'दस्तावेज़ संसाधित करें', - processingDocuments: 'दस्तावेज़ संसाधित करना', - }, - stepOne: { - preview: 'पूर्वावलोकन', - }, - stepTwo: { - previewChunks: 'पूर्वावलोकन खंड', - chunkSettings: 'चंक सेटिंग्स', - }, - stepThree: { - learnMore: 'और अधिक सीखें', - }, - backToDataSource: 'डेटा स्रोत', - characters: 'पात्र', - title: 'दस्तावेज़ जोड़ें', - selectOnlineDocumentTip: '{{count}} पृष्ठों तक प्रक्रिया करें', - selectOnlineDriveTip: '{{count}} फ़ाइलों तक संसाधित करें, प्रत्येक अधिकतम {{fileSize}} MB', - }, - documentSettings: { - title: 'डॉक्यूमेंट सेटिंग्स', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} पृष्ठ', - }, - onlineDrive: { - breadcrumbs: { - allFiles: 'सभी फ़ाइलें', - searchPlaceholder: 'फाइलें खोजें...', - allBuckets: 'सभी क्लाउड स्टोरेज बकेट्स', - searchResult: '{{folderName}} फ़ोल्डर में {{searchResultsLength}} आइटम खोजें', - }, - resetKeywords: 'कीवर्ड रीसेट करें', - emptyFolder: 'यह फ़ोल्डर खाली है', - notSupportedFileType: 'यह फ़ाइल प्रकार समर्थित नहीं है', - emptySearchResult: 'कोई सामान नहीं मिला', - notConnected: '{{name}} कनेक्ट नहीं है', - notConnectedTip: '{{name}} के साथ सिंक करने के लिए, पहले {{name}} से कनेक्शन स्थापित करना आवश्यक है।', - }, - conversion: { - confirm: { - title: 'पुष्टि', - content: 'यह कार्रवाई स्थायी है। आप पिछले तरीके पर वापस नहीं जा पाएंगे। कृपया परिवर्तन की पुष्टि करें।', - }, - title: 'ज्ञान पाइपलाइन में परिवर्तित करें', - warning: 'यह क्रिया पूर्ववत नहीं की जा सकती।', - descriptionChunk1: 'आप अब अपने मौजूदा ज्ञान आधार को दस्तावेज़ प्रसंस्करण के लिए ज्ञान पाइपलाइन में बदल सकते हैं', - errorMessage: 'डेटासेट को पाइपलाइन में परिवर्तित करने में विफल रहा', - successMessage: 'डेटासेट को एक पाइपलाइन में सफलतापूर्वक रूपांतरित किया गया है', - descriptionChunk2: '— एक अधिक खुला और लचीला दृष्टिकोण जो हमारे मार्केटप्लेस से प्लगइन्स तक पहुंच प्रदान करता है। यह नए प्रसंस्करण पद्धति को सभी भविष्य के दस्तावेजों पर लागू करेगा।', - }, - knowledgePermissions: 'अनुमतियाँ', - knowledgeNameAndIcon: 'ज्ञान का नाम और आइकन', - knowledgeNameAndIconPlaceholder: 'कृपया ज्ञान बेस का नाम दर्ज करें', - knowledgeDescription: 'ज्ञान का वर्णन', - pipelineNameAndIcon: 'पाइपलाइन का नाम और आइकन', - inputField: 'इनपुट फ़ील्ड', - editPipelineInfo: 'पाइपलाइन जानकारी संपादित करें', - knowledgeDescriptionPlaceholder: 'इस ज्ञान आधार में क्या है इसका वर्णन करें। एक विस्तृत विवरण एआई को डेटा सेट की सामग्री को अधिक सटीकता से एक्सेस करने की अनुमति देता है। यदि खाली है, तो डिफी डिफ़ॉल्ट हिट रणनीति का उपयोग करेगा। (वैकल्पिक)', - configurationTip: '{{pluginName}} कॉन्फ़िगर करें', -} - -export default translation diff --git a/web/i18n/hi-IN/dataset-settings.json b/web/i18n/hi-IN/dataset-settings.json new file mode 100644 index 0000000000..85707f7792 --- /dev/null +++ b/web/i18n/hi-IN/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "ज्ञान सेटिंग्ज", + "desc": "यहां आप ज्ञान की संपत्ति और कार्य प्रक्रियाओं को modify कर सकते हैं.", + "form": { + "name": "ज्ञान नाम", + "namePlaceholder": "कृपया ज्ञान नाम दर्ज करें", + "nameError": "नाम रिक्त नहीं होना चाहिए", + "desc": "ज्ञान विवरण", + "descInfo": "कृपया स्पष्ट साक्षर विवरण लिखें जिससे AI को ज्ञान के निहितार्थों की पहचान करने में मदद मिले। यदि शून्य है, Dify आपके पूर्वानुमान का उपयोग करेगा।", + "descPlaceholder": "इस ज्ञान के सामग्रियां क्या हैं? एक विस्तृत विवरण को AI को निहितार्थों की पहचान करने में मदद मिले। यदि शून्य है, Dify आपके पूर्वानुमान का उपयोग करेगा।", + "descWrite": "कैसे अच्छा ज्ञान विवरण लिखना है?", + "permissions": "अनुमतियां", + "permissionsOnlyMe": "मेरे लिए ही", + "permissionsAllMember": "सभी टीम सदस्यों के लिए", + "indexMethod": "सूचीकरण प्रक्रिया", + "indexMethodHighQuality": " उच्च गुणवत्ता", + "indexMethodHighQualityTip": "उपयोगकर्ता के प्रश्नों के समय उच्च सटीकता प्रदान करने के लिए Embedding मॉडल को प्रोसेसिंग के लिए कॉल करें।", + "indexMethodEconomy": "आर्थिक", + "indexMethodEconomyTip": "ऑफ़लाइन वेक्टर इंजन, कीवर्ड इंडेक्स आदि का उपयोग करें ताकि टोकनों की बचत हो।", + "embeddingModel": "एम्बेडिंग मॉडल", + "embeddingModelTip": "एम्बेडिंग मॉडल को बदलें, कृपया ", + "embeddingModelTipLink": "सेटिंग्ज", + "retrievalSetting": { + "title": "प्राप्ति सेटिंग्ज", + "learnMore": "और अधिक सीखना", + "description": "प्राप्ति पद्धति के बारे में。", + "longDescription": "प्राप्ति पद्धति के बारे में, आप इसे किसी भी समय ज्ञान सेटिंग्ज में बदल सकते हैं।", + "method": "प्राप्ति विधि", + "multiModalTip": "जब एम्बेडिंग मॉडल मल्टी-मोडल का समर्थन करता है, तो बेहतर प्रदर्शन के लिए कृपया एक मल्टी-मोडल रीरेंक मॉडल चुनें।" + }, + "save": "सेवना", + "me": "(आप)", + "permissionsInvitedMembers": "आंशिक टीम के सदस्य", + "externalKnowledgeID": "बाहरी ज्ञान ID", + "externalKnowledgeAPI": "बाहरी ज्ञान एपीआई", + "retrievalSettings": "पुनर्प्राप्ति सेटिंग्स", + "indexMethodChangeToEconomyDisabledTip": "मुख्यालय से ईसीओ में डाउनग्रेड करने के लिए उपलब्ध नहीं है", + "helpText": "एक अच्छा डेटासेट विवरण लिखना सीखें।", + "upgradeHighQualityTip": "एक बार उच्च गुणवत्ता मोड में अपग्रेड करने के बाद, किफायती मोड में वापस जाना उपलब्ध नहीं है", + "searchModel": "मॉडल खोजें", + "chunkStructure": { + "learnMore": "और अधिक सीखें", + "title": "खंड संरचना", + "description": "चंक संरचना के बारे में।" + }, + "nameAndIcon": "नाम और आइकन", + "numberOfKeywords": "कीवर्ड की संख्या", + "onSearchResults": "कोई सदस्य आपकी खोज क्वेरी से मेल नहीं खाता। अपनी खोज को फिर से प्रयास करें।" + } +} diff --git a/web/i18n/hi-IN/dataset-settings.ts b/web/i18n/hi-IN/dataset-settings.ts deleted file mode 100644 index 92f75fc4be..0000000000 --- a/web/i18n/hi-IN/dataset-settings.ts +++ /dev/null @@ -1,57 +0,0 @@ -const translation = { - title: 'ज्ञान सेटिंग्ज', - desc: 'यहां आप ज्ञान की संपत्ति और कार्य प्रक्रियाओं को modify कर सकते हैं.', - form: { - name: 'ज्ञान नाम', - namePlaceholder: 'कृपया ज्ञान नाम दर्ज करें', - nameError: 'नाम रिक्त नहीं होना चाहिए', - desc: 'ज्ञान विवरण', - descInfo: - 'कृपया स्पष्ट साक्षर विवरण लिखें जिससे AI को ज्ञान के निहितार्थों की पहचान करने में मदद मिले। यदि शून्य है, Dify आपके पूर्वानुमान का उपयोग करेगा।', - descPlaceholder: - 'इस ज्ञान के सामग्रियां क्या हैं? एक विस्तृत विवरण को AI को निहितार्थों की पहचान करने में मदद मिले। यदि शून्य है, Dify आपके पूर्वानुमान का उपयोग करेगा।', - descWrite: 'कैसे अच्छा ज्ञान विवरण लिखना है?', - permissions: 'अनुमतियां', - permissionsOnlyMe: 'मेरे लिए ही', - permissionsAllMember: 'सभी टीम सदस्यों के लिए', - indexMethod: 'सूचीकरण प्रक्रिया', - indexMethodHighQuality: ' उच्च गुणवत्ता', - indexMethodHighQualityTip: - 'उपयोगकर्ता के प्रश्नों के समय उच्च सटीकता प्रदान करने के लिए Embedding मॉडल को प्रोसेसिंग के लिए कॉल करें।', - indexMethodEconomy: 'आर्थिक', - indexMethodEconomyTip: - 'ऑफ़लाइन वेक्टर इंजन, कीवर्ड इंडेक्स आदि का उपयोग करें ताकि टोकनों की बचत हो।', - embeddingModel: 'एम्बेडिंग मॉडल', - embeddingModelTip: 'एम्बेडिंग मॉडल को बदलें, कृपया ', - embeddingModelTipLink: 'सेटिंग्ज', - retrievalSetting: { - title: 'प्राप्ति सेटिंग्ज', - learnMore: 'और अधिक सीखना', - description: 'प्राप्ति पद्धति के बारे में。', - longDescription: - 'प्राप्ति पद्धति के बारे में, आप इसे किसी भी समय ज्ञान सेटिंग्ज में बदल सकते हैं।', - method: 'प्राप्ति विधि', - multiModalTip: 'जब एम्बेडिंग मॉडल मल्टी-मोडल का समर्थन करता है, तो बेहतर प्रदर्शन के लिए कृपया एक मल्टी-मोडल रीरेंक मॉडल चुनें।', - }, - save: 'सेवना', - me: '(आप)', - permissionsInvitedMembers: 'आंशिक टीम के सदस्य', - externalKnowledgeID: 'बाहरी ज्ञान ID', - externalKnowledgeAPI: 'बाहरी ज्ञान एपीआई', - retrievalSettings: 'पुनर्प्राप्ति सेटिंग्स', - indexMethodChangeToEconomyDisabledTip: 'मुख्यालय से ईसीओ में डाउनग्रेड करने के लिए उपलब्ध नहीं है', - helpText: 'एक अच्छा डेटासेट विवरण लिखना सीखें।', - upgradeHighQualityTip: 'एक बार उच्च गुणवत्ता मोड में अपग्रेड करने के बाद, किफायती मोड में वापस जाना उपलब्ध नहीं है', - searchModel: 'मॉडल खोजें', - chunkStructure: { - learnMore: 'और अधिक सीखें', - title: 'खंड संरचना', - description: 'चंक संरचना के बारे में।', - }, - nameAndIcon: 'नाम और आइकन', - numberOfKeywords: 'कीवर्ड की संख्या', - onSearchResults: 'कोई सदस्य आपकी खोज क्वेरी से मेल नहीं खाता। अपनी खोज को फिर से प्रयास करें।', - }, -} - -export default translation diff --git a/web/i18n/hi-IN/dataset.json b/web/i18n/hi-IN/dataset.json new file mode 100644 index 0000000000..595274752e --- /dev/null +++ b/web/i18n/hi-IN/dataset.json @@ -0,0 +1,249 @@ +{ + "knowledge": "ज्ञान", + "documentCount": " दस्तावेज़", + "wordCount": " के शब्द", + "appCount": " जुड़े हुए ऐप्स", + "createDataset": "ज्ञान बनाएं", + "createDatasetIntro": "अपना खुद का टेक्स्ट डेटा आयात करें या एलएलएम संदर्भ वृद्धि के लिए वेबहुक के माध्यम से वास्तविक समय में डेटा लिखें।", + "deleteDatasetConfirmTitle": "क्या आप यह ज्ञान हटाना चाहते हैं?", + "deleteDatasetConfirmContent": "ज्ञान को हटाना अपरिवर्तनीय है। उपयोगकर्ता अब आपके ज्ञान को प्राप्त नहीं कर पाएंगे, और सभी प्रॉम्प्ट कॉन्फ़िगरेशन और लॉग स्थायी रूप से मिटा दिए जाएंगे।", + "datasetUsedByApp": "यह ज्ञान कुछ ऐप्स द्वारा उपयोग किया जा रहा है। ऐप्स अब इस ज्ञान का उपयोग नहीं कर पाएंगे, और सभी प्रॉम्प्ट कॉन्फ़िगरेशन और लॉग स्थायी रूप से हटा दिए जाएंगे।", + "datasetDeleted": "ज्ञान हटा दिया गया", + "datasetDeleteFailed": "ज्ञान हटाने में विफल", + "didYouKnow": "क्या आप जानते हैं?", + "intro1": "ज्ञान को Dify एप्लिकेशन में ", + "intro2": "एक संदर्भ के रूप में ", + "intro3": ",", + "intro4": "या यह ", + "intro5": "बनाया जा सकता है", + "intro6": " एक स्वतंत्र ChatGPT इंडेक्स प्लग-इन के रूप में प्रकाशित करने के लिए", + "unavailable": "उपलब्ध नहीं", + "datasets": "ज्ञान", + "datasetsApi": "API पहुँच", + "retrieval": { + "semantic_search": { + "title": "वेक्टर खोज", + "description": "प्रश्न एम्बेडिंग्स उत्पन्न करें और उसके वेक्टर प्रतिनिधित्व के समान सबसे मिलते-जुलते टेक्स्ट चंक को खोजें।" + }, + "full_text_search": { + "title": "पूर्ण-पाठ खोज", + "description": "दस्तावेज़ में सभी शब्दों को सूचकांकित करें, उपयोगकर्ताओं को किसी भी शब्द को खोजने और उन शब्दों को युक्त टेक्स्ट चंक प्राप्त करने की अनुमति देता है।" + }, + "hybrid_search": { + "title": "हाइब्रिड खोज", + "description": "पूर्ण-पाठ खोज और वेक्टर खोजों को एक साथ निष्पादित करें, पुनः रैंकिंग करें और उपयोगकर्ता के प्रश्न के लिए सर्वोत्तम मिलान का चयन करें। रीरैंक मॉडल APIs की कॉन्फ़िगरेशन आवश्यक।", + "recommend": "सिफारिश" + }, + "invertedIndex": {}, + "change": "बदलें", + "changeRetrievalMethod": "पुनर्प्राप्ति विधि बदलें", + "keyword_search": { + "title": "इनवर्टेड अनुक्रमणिका", + "description": "इनवर्टेड इंडेक्स एक संरचना है जो कुशल पुनर्प्राप्ति के लिए उपयोग की जाती है। यह शर्तों द्वारा व्यवस्थित होती है, प्रत्येक शर्त उन दस्तावेजों या वेब पृष्ठों की ओर इशारा करती है जिनमें यह मौजूद होती है।" + } + }, + "docsFailedNotice": "दस्तावेज़ों को अनुक्रमित करने में विफल", + "retry": "पुनः प्रयास करें", + "indexingTechnique": { + "high_quality": "उच्च गुणवत्ता", + "economy": "किफायती" + }, + "indexingMethod": { + "semantic_search": "वेक्टर", + "full_text_search": "पूर्ण पाठ", + "hybrid_search": "हाइब्रिड", + "invertedIndex": "उल्टा" + }, + "mixtureHighQualityAndEconomicTip": "उच्च गुणवत्ता और किफायती ज्ञान आधारों के मिश्रण के लिए पुनः रैंकिंग मॉडल आवश्यक है।", + "inconsistentEmbeddingModelTip": "यदि चयनित ज्ञान आधारों के एम्बेडिंग मॉडल असंगत हैं, तो पुनः रैंकिंग मॉडल आवश्यक है।", + "retrievalSettings": "पुनर्प्राप्ति सेटिंग्स", + "rerankSettings": "पुनः रैंकिंग सेटिंग्स", + "weightedScore": { + "title": "भारित स्कोर", + "description": "आवंटित भारों को समायोजित करके, यह पुनः रैंकिंग रणनीति निर्धारित करती है कि शब्दार्थ या कीवर्ड मिलान को प्राथमिकता दी जाए।", + "semanticFirst": "शब्दार्थ पहले", + "keywordFirst": "कीवर्ड पहले", + "customized": "अनुकूलित", + "semantic": "शब्दार्थ", + "keyword": "कीवर्ड" + }, + "nTo1RetrievalLegacy": "N-से-1 पुनर्प्राप्ति सितंबर से आधिकारिक तौर पर बंद कर दी जाएगी। बेहतर परिणाम प्राप्त करने के लिए नवीनतम बहु-मार्ग पुनर्प्राप्ति का उपयोग करने की सिफारिश की जाती है।", + "nTo1RetrievalLegacyLink": "और जानें", + "nTo1RetrievalLegacyLinkText": "N-से-1 पुनर्प्राप्ति सितंबर में आधिकारिक तौर पर बंद कर दी जाएगी।", + "defaultRetrievalTip": "मल्टी-पाथ रिट्रीवल का उपयोग डिफ़ॉल्ट रूप से किया जाता है। ज्ञान को कई ज्ञान आधारों से पुनर्प्राप्त किया जाता है और फिर फिर से रैंक किया जाता है।", + "editExternalAPIConfirmWarningContent": { + "end": "बाहरी ज्ञान, और यह संशोधन उन सभी पर लागू किया जाएगा। क्या आप वाकई यह परिवर्तन सहेजना चाहते हैं?", + "front": "यह बाहरी ज्ञान API इससे जुड़ा हुआ है" + }, + "editExternalAPIFormWarning": { + "end": "बाहरी ज्ञान", + "front": "यह बाहरी एपीआई किससे जुड़ा हुआ है" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "front": "मिटाना", + "end": "?" + }, + "content": { + "front": "यह बाहरी ज्ञान API इससे जुड़ा हुआ है", + "end": "बाहरी ज्ञान। इस एपीआई को हटाने से वे सभी अमान्य हो जाएंगे। क्या आप वाकई इस API को हटाना चाहते हैं?" + }, + "noConnectionContent": "क्या आप वाकई इस API को हटा देंगे?" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "एक बाहरी ज्ञान API चुनें" + }, + "connectDatasetIntro": { + "content": { + "link": "बाहरी API बनाने का तरीका जानें", + "front": "बाहरी ज्ञानकोष से कनेक्ट करने के लिए, आपको पहले एक बाहरी API बनाना होगा। कृपया काळजीपूर्वक वाचा आणि संदर्भ घ्या", + "end": ". फिर संबंधित ज्ञान आईडी ढूंढें और इसे बाईं ओर के फॉर्म में भरें। यदि सभी जानकारी सही है, तो यह कनेक्ट बटन पर क्लिक करने के बाद स्वचालित रूप से नॉलेज बेस में पुनर्प्राप्ति परीक्षण पर कूद जाएगा।" + }, + "learnMore": "और जानो", + "title": "किसी बाहरी ज्ञानकोष से कनेक्ट करने के लिए कैसे करें" + }, + "connectHelper": { + "helper5": "इस सुविधा का उपयोग करने से पहले सावधानी से।", + "helper2": "केवल पुनर्प्राप्ति कार्यक्षमता समर्थित है", + "helper3": ". हम दृढ़ता से अनुशंसा करते हैं कि आप", + "helper4": "सहायता दस्तावेज़ पढ़ें", + "helper1": "API और नॉलेज बेस ID के माध्यम से बाहरी नॉलेज बेस से कनेक्ट करें. वर्तमान में," + }, + "externalKnowledgeForm": { + "connect": "जोड़ना", + "cancel": "रद्द करना" + }, + "externalAPIForm": { + "encrypted": { + "end": "टेक्‍नोलॉजी।", + "front": "आपका एपीआई टोकन एन्क्रिप्ट किया जाएगा और इसका उपयोग करके संग्रहीत किया जाएगा" + }, + "apiKey": "एपीआई कुंजी", + "name": "नाम", + "cancel": "रद्द करना", + "save": "रक्षा कर", + "edit": "संपादन करना", + "endpoint": "एपीआई समापन बिंदु" + }, + "externalAPI": "बाहरी एपीआई", + "externalAPIPanelTitle": "बाहरी ज्ञान एपीआई", + "allExternalTip": "केवल बाहरी ज्ञान का उपयोग करते समय, उपयोगकर्ता यह चुन सकता है कि Rerank मॉडल को सक्षम करना है या नहीं। यदि सक्षम नहीं है, तो पुनर्प्राप्त किए गए विखंडू स्कोर के आधार पर क्रमबद्ध किए जाएंगे। जब विभिन्न ज्ञान आधारों की पुनर्प्राप्ति रणनीतियाँ असंगत होती हैं, तो यह गलत होगी।", + "externalKnowledgeName": "बाहरी ज्ञान का नाम", + "connectDataset": "किसी बाह्य ज्ञानकोष से कनेक्ट करना", + "mixtureInternalAndExternalTip": "आंतरिक और बाहरी ज्ञान के मिश्रण के लिए रीरैंक मॉडल की आवश्यकता होती है।", + "externalTag": "बाह्य", + "externalAPIPanelDescription": "बाहरी ज्ञान API का उपयोग Dify के बाहर नॉलेज बेस से कनेक्ट करने और उस नॉलेज बेस से ज्ञान प्राप्त करने के लिए किया जाता है।", + "externalKnowledgeDescription": "ज्ञान विवरण", + "createExternalAPI": "कोई बाहरी नॉलेज API जोड़ना", + "externalKnowledgeIdPlaceholder": "कृपया नॉलेज आईडी दर्ज करें", + "editExternalAPITooltipTitle": "लिंक किया गया ज्ञान", + "externalAPIPanelDocumentation": "बाहरी नॉलेज API बनाने का तरीका जानें", + "editExternalAPIFormTitle": "बाह्य ज्ञान API संपादित करें", + "externalKnowledgeNamePlaceholder": "कृपया नॉलेज बेस का नाम दर्ज करें", + "externalKnowledgeId": "बाहरी ज्ञान ID", + "externalKnowledgeDescriptionPlaceholder": "वर्णन करें कि इस ज्ञानकोष में क्या है (वैकल्पिक)", + "noExternalKnowledge": "अभी तक कोई बाहरी ज्ञान एपीआई नहीं है, बनाने के लिए यहां क्लिक करें", + "createNewExternalAPI": "एक नया बाहरी नॉलेज API बनाएँ", + "learnHowToWriteGoodKnowledgeDescription": "एक अच्छा ज्ञान विवरण लिखना सीखें", + "chunkingMode": { + "parentChild": "माता-पिता का बच्चा", + "general": "सामान्य", + "graph": "ग्राफ", + "qa": "प्रश्न और उत्तर" + }, + "parentMode": { + "fullDoc": "पूर्ण-दस्तावेज़", + "paragraph": "अनुच्‍छेद" + }, + "batchAction": { + "cancel": "रद्द करना", + "disable": "अक्षम", + "enable": "योग्य बनाना", + "selected": "चयनित", + "delete": "मिटाना", + "archive": "पुरालेख" + }, + "localDocs": "स्थानीय डॉक्स", + "preprocessDocument": "{{num}} प्रीप्रोसेस दस्तावेज़", + "enable": "योग्य बनाना", + "documentsDisabled": "{{num}} दस्तावेज़ अक्षम - 30 दिनों से अधिक समय से निष्क्रिय", + "allKnowledge": "सर्व ज्ञान", + "allKnowledgeDescription": "इस कार्यस्थान में सभी ज्ञान प्रदर्शित करने के लिए चयन करें. केवल कार्यस्थान स्वामी ही सभी ज्ञान का प्रबंधन कर सकता है.", + "metadata": { + "createMetadata": { + "type": "टाइप करें", + "name": "नाम", + "namePlaceholder": "ध्यानक का नाम जोड़ें", + "title": "नया मेटाडेटा", + "back": "पीछे" + }, + "checkName": { + "empty": "मेटाडाटा का नाम खाली नहीं हो सकता", + "invalid": "मेटाडेटा नाम में केवल छोटे अक्षर, संख्या और अंडरस्कोर शामिल हो सकते हैं और इसे छोटे अक्षर से शुरू होना चाहिए।", + "tooLong": "मेटाडेटा नाम {{max}} वर्णों से अधिक नहीं हो सकता" + }, + "batchEditMetadata": { + "editMetadata": "मेटाडेटा संपादित करें", + "multipleValue": "कई मान", + "applyToAllSelectDocument": "चुने गए सभी दस्तावेज़ों पर लागू करें", + "editDocumentsNum": "संपादित कर रहे हैं {{num}} दस्तावेज़", + "applyToAllSelectDocumentTip": "सभी चयनित दस्तावेज़ों के लिए ऊपर दिए गए संपादित और नए मेटाडेटा को स्वचालित रूप से बनाएं, अन्यथा मेटाडेटा का संपादन केवल उन दस्तावेज़ों पर लागू होगा जिनमें यह मौजूद है।" + }, + "selectMetadata": { + "manageAction": "प्रबंधित करें", + "search": "खोज मेटाडेटा", + "newAction": "नया मेटाडेटा" + }, + "datasetMetadata": { + "addMetaData": "मेटाडेटा जोड़ें", + "rename": "नाम बदलें", + "name": "नाम", + "values": "{{num}} मान", + "namePlaceholder": "मेटाडेटा नाम", + "deleteContent": "क्या आप सुनिश्चित हैं कि आप मेटाडेटा \"{{name}}\" को हटाना चाहते हैं?", + "deleteTitle": "हटाने की पुष्टि करें", + "description": "आप इस ज्ञान में सभी मेटाडेटा प्रबंधित कर सकते हैं। संशोधन हर दस्तावेज़ में समन्वयित किए जाएंगे।", + "disabled": "अक्षम", + "builtInDescription": "बिल्ट-इन मेटाडेटा स्वचालित रूप से निकाला और उत्पन्न होता है। इसे उपयोग से पहले सक्षम करना आवश्यक है और इसे संपादित नहीं किया जा सकता है।", + "builtIn": "बिल्ट-इन" + }, + "documentMetadata": { + "documentInformation": "दस्तावेज़ जानकारी", + "technicalParameters": "तकनीकी पैरामीटर", + "startLabeling": "लेबलिंग शुरू करें", + "metadataToolTip": "मेटाडेटा एक महत्वपूर्ण फ़िल्टर के रूप में कार्य करता है जो जानकारी प्राप्त करने की सटीकता और प्रासंगिकता को बढ़ाता है। आप इस दस्तावेज़ के लिए मेटाडेटा को यहाँ संशोधित और जोड़ सकते हैं।" + }, + "chooseTime": "एक समय चुनें...", + "addMetadata": "मेटाडेटा जोड़ें", + "metadata": "मेटाडेटा" + }, + "embeddingModelNotAvailable": "एम्बेडिंग मॉडल उपलब्ध नहीं है।", + "updated": "अपडेट किया गया", + "externalKnowledgeBase": "बाहरी ज्ञान आधार", + "createFromPipeline": "ज्ञान पाइपलाइन से बनाएं", + "serviceApi": { + "card": { + "apiReference": "एपीआई संदर्भ", + "apiKey": "एपीआई कुंजी", + "title": "बैकएंड सेवा एपीआई", + "endpoint": "सेवा एपीआई एंडपॉइंट" + }, + "enabled": "सेवा में", + "disabled": "अक्षम", + "title": "सेवा एपीआई" + }, + "docAllEnabled_one": "{{count}} दस्तावेज़ सक्षम किया गया", + "docAllEnabled_other": "सभी {{count}} दस्तावेज़ सक्षम हैं", + "partialEnabled_one": "कुल {{count}} दस्तावेज़, {{num}} उपलब्ध", + "partialEnabled_other": "कुल {{count}} दस्तावेज़, {{num}} उपलब्ध", + "cornerLabel": { + "unavailable": "अनउपलब्ध", + "pipeline": "पाइपलाइन" + }, + "multimodal": "बहु-मोडल", + "imageUploader": { + "button": "फ़ाइल या फ़ोल्डर खींचें और छोड़ें, या", + "browse": "ब्राउज़", + "tip": "{{supportTypes}} (अधिकतम {{batchCount}}, प्रत्येक {{size}}MB)" + } +} diff --git a/web/i18n/hi-IN/dataset.ts b/web/i18n/hi-IN/dataset.ts deleted file mode 100644 index e5fd55871f..0000000000 --- a/web/i18n/hi-IN/dataset.ts +++ /dev/null @@ -1,258 +0,0 @@ -const translation = { - knowledge: 'ज्ञान', - documentCount: ' दस्तावेज़', - wordCount: ' के शब्द', - appCount: ' जुड़े हुए ऐप्स', - createDataset: 'ज्ञान बनाएं', - createDatasetIntro: - 'अपना खुद का टेक्स्ट डेटा आयात करें या एलएलएम संदर्भ वृद्धि के लिए वेबहुक के माध्यम से वास्तविक समय में डेटा लिखें।', - deleteDatasetConfirmTitle: 'क्या आप यह ज्ञान हटाना चाहते हैं?', - deleteDatasetConfirmContent: - 'ज्ञान को हटाना अपरिवर्तनीय है। उपयोगकर्ता अब आपके ज्ञान को प्राप्त नहीं कर पाएंगे, और सभी प्रॉम्प्ट कॉन्फ़िगरेशन और लॉग स्थायी रूप से मिटा दिए जाएंगे।', - datasetUsedByApp: 'यह ज्ञान कुछ ऐप्स द्वारा उपयोग किया जा रहा है। ऐप्स अब इस ज्ञान का उपयोग नहीं कर पाएंगे, और सभी प्रॉम्प्ट कॉन्फ़िगरेशन और लॉग स्थायी रूप से हटा दिए जाएंगे।', - datasetDeleted: 'ज्ञान हटा दिया गया', - datasetDeleteFailed: 'ज्ञान हटाने में विफल', - didYouKnow: 'क्या आप जानते हैं?', - intro1: 'ज्ञान को Dify एप्लिकेशन में ', - intro2: 'एक संदर्भ के रूप में ', - intro3: ',', - intro4: 'या यह ', - intro5: 'बनाया जा सकता है', - intro6: - ' एक स्वतंत्र ChatGPT इंडेक्स प्लग-इन के रूप में प्रकाशित करने के लिए', - unavailable: 'उपलब्ध नहीं', - datasets: 'ज्ञान', - datasetsApi: 'API पहुँच', - retrieval: { - semantic_search: { - title: 'वेक्टर खोज', - description: - 'प्रश्न एम्बेडिंग्स उत्पन्न करें और उसके वेक्टर प्रतिनिधित्व के समान सबसे मिलते-जुलते टेक्स्ट चंक को खोजें।', - }, - full_text_search: { - title: 'पूर्ण-पाठ खोज', - description: - 'दस्तावेज़ में सभी शब्दों को सूचकांकित करें, उपयोगकर्ताओं को किसी भी शब्द को खोजने और उन शब्दों को युक्त टेक्स्ट चंक प्राप्त करने की अनुमति देता है।', - }, - hybrid_search: { - title: 'हाइब्रिड खोज', - description: - 'पूर्ण-पाठ खोज और वेक्टर खोजों को एक साथ निष्पादित करें, पुनः रैंकिंग करें और उपयोगकर्ता के प्रश्न के लिए सर्वोत्तम मिलान का चयन करें। रीरैंक मॉडल APIs की कॉन्फ़िगरेशन आवश्यक।', - recommend: 'सिफारिश', - }, - invertedIndex: { - }, - change: 'बदलें', - changeRetrievalMethod: 'पुनर्प्राप्ति विधि बदलें', - keyword_search: { - title: 'इनवर्टेड अनुक्रमणिका', - description: 'इनवर्टेड इंडेक्स एक संरचना है जो कुशल पुनर्प्राप्ति के लिए उपयोग की जाती है। यह शर्तों द्वारा व्यवस्थित होती है, प्रत्येक शर्त उन दस्तावेजों या वेब पृष्ठों की ओर इशारा करती है जिनमें यह मौजूद होती है।', - }, - }, - docsFailedNotice: 'दस्तावेज़ों को अनुक्रमित करने में विफल', - retry: 'पुनः प्रयास करें', - indexingTechnique: { - high_quality: 'उच्च गुणवत्ता', - economy: 'किफायती', - }, - indexingMethod: { - semantic_search: 'वेक्टर', - full_text_search: 'पूर्ण पाठ', - hybrid_search: 'हाइब्रिड', - invertedIndex: 'उल्टा', - }, - mixtureHighQualityAndEconomicTip: 'उच्च गुणवत्ता और किफायती ज्ञान आधारों के मिश्रण के लिए पुनः रैंकिंग मॉडल आवश्यक है।', - inconsistentEmbeddingModelTip: 'यदि चयनित ज्ञान आधारों के एम्बेडिंग मॉडल असंगत हैं, तो पुनः रैंकिंग मॉडल आवश्यक है।', - retrievalSettings: 'पुनर्प्राप्ति सेटिंग्स', - rerankSettings: 'पुनः रैंकिंग सेटिंग्स', - weightedScore: { - title: 'भारित स्कोर', - description: 'आवंटित भारों को समायोजित करके, यह पुनः रैंकिंग रणनीति निर्धारित करती है कि शब्दार्थ या कीवर्ड मिलान को प्राथमिकता दी जाए।', - semanticFirst: 'शब्दार्थ पहले', - keywordFirst: 'कीवर्ड पहले', - customized: 'अनुकूलित', - semantic: 'शब्दार्थ', - keyword: 'कीवर्ड', - }, - nTo1RetrievalLegacy: 'N-से-1 पुनर्प्राप्ति सितंबर से आधिकारिक तौर पर बंद कर दी जाएगी। बेहतर परिणाम प्राप्त करने के लिए नवीनतम बहु-मार्ग पुनर्प्राप्ति का उपयोग करने की सिफारिश की जाती है।', - nTo1RetrievalLegacyLink: 'और जानें', - nTo1RetrievalLegacyLinkText: 'N-से-1 पुनर्प्राप्ति सितंबर में आधिकारिक तौर पर बंद कर दी जाएगी।', - defaultRetrievalTip: 'मल्टी-पाथ रिट्रीवल का उपयोग डिफ़ॉल्ट रूप से किया जाता है। ज्ञान को कई ज्ञान आधारों से पुनर्प्राप्त किया जाता है और फिर फिर से रैंक किया जाता है।', - editExternalAPIConfirmWarningContent: { - end: 'बाहरी ज्ञान, और यह संशोधन उन सभी पर लागू किया जाएगा। क्या आप वाकई यह परिवर्तन सहेजना चाहते हैं?', - front: 'यह बाहरी ज्ञान API इससे जुड़ा हुआ है', - }, - editExternalAPIFormWarning: { - end: 'बाहरी ज्ञान', - front: 'यह बाहरी एपीआई किससे जुड़ा हुआ है', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - front: 'मिटाना', - end: '?', - }, - content: { - front: 'यह बाहरी ज्ञान API इससे जुड़ा हुआ है', - end: 'बाहरी ज्ञान। इस एपीआई को हटाने से वे सभी अमान्य हो जाएंगे। क्या आप वाकई इस API को हटाना चाहते हैं?', - }, - noConnectionContent: 'क्या आप वाकई इस API को हटा देंगे?', - }, - selectExternalKnowledgeAPI: { - placeholder: 'एक बाहरी ज्ञान API चुनें', - }, - connectDatasetIntro: { - content: { - link: 'बाहरी API बनाने का तरीका जानें', - front: 'बाहरी ज्ञानकोष से कनेक्ट करने के लिए, आपको पहले एक बाहरी API बनाना होगा। कृपया काळजीपूर्वक वाचा आणि संदर्भ घ्या', - end: '. फिर संबंधित ज्ञान आईडी ढूंढें और इसे बाईं ओर के फॉर्म में भरें। यदि सभी जानकारी सही है, तो यह कनेक्ट बटन पर क्लिक करने के बाद स्वचालित रूप से नॉलेज बेस में पुनर्प्राप्ति परीक्षण पर कूद जाएगा।', - }, - learnMore: 'और जानो', - title: 'किसी बाहरी ज्ञानकोष से कनेक्ट करने के लिए कैसे करें', - }, - connectHelper: { - helper5: 'इस सुविधा का उपयोग करने से पहले सावधानी से।', - helper2: 'केवल पुनर्प्राप्ति कार्यक्षमता समर्थित है', - helper3: '. हम दृढ़ता से अनुशंसा करते हैं कि आप', - helper4: 'सहायता दस्तावेज़ पढ़ें', - helper1: 'API और नॉलेज बेस ID के माध्यम से बाहरी नॉलेज बेस से कनेक्ट करें. वर्तमान में,', - }, - externalKnowledgeForm: { - connect: 'जोड़ना', - cancel: 'रद्द करना', - }, - externalAPIForm: { - encrypted: { - end: 'टेक्‍नोलॉजी।', - front: 'आपका एपीआई टोकन एन्क्रिप्ट किया जाएगा और इसका उपयोग करके संग्रहीत किया जाएगा', - }, - apiKey: 'एपीआई कुंजी', - name: 'नाम', - cancel: 'रद्द करना', - save: 'रक्षा कर', - edit: 'संपादन करना', - endpoint: 'एपीआई समापन बिंदु', - }, - externalAPI: 'बाहरी एपीआई', - externalAPIPanelTitle: 'बाहरी ज्ञान एपीआई', - allExternalTip: 'केवल बाहरी ज्ञान का उपयोग करते समय, उपयोगकर्ता यह चुन सकता है कि Rerank मॉडल को सक्षम करना है या नहीं। यदि सक्षम नहीं है, तो पुनर्प्राप्त किए गए विखंडू स्कोर के आधार पर क्रमबद्ध किए जाएंगे। जब विभिन्न ज्ञान आधारों की पुनर्प्राप्ति रणनीतियाँ असंगत होती हैं, तो यह गलत होगी।', - externalKnowledgeName: 'बाहरी ज्ञान का नाम', - connectDataset: 'किसी बाह्य ज्ञानकोष से कनेक्ट करना', - mixtureInternalAndExternalTip: 'आंतरिक और बाहरी ज्ञान के मिश्रण के लिए रीरैंक मॉडल की आवश्यकता होती है।', - externalTag: 'बाह्य', - externalAPIPanelDescription: 'बाहरी ज्ञान API का उपयोग Dify के बाहर नॉलेज बेस से कनेक्ट करने और उस नॉलेज बेस से ज्ञान प्राप्त करने के लिए किया जाता है।', - externalKnowledgeDescription: 'ज्ञान विवरण', - createExternalAPI: 'कोई बाहरी नॉलेज API जोड़ना', - externalKnowledgeIdPlaceholder: 'कृपया नॉलेज आईडी दर्ज करें', - editExternalAPITooltipTitle: 'लिंक किया गया ज्ञान', - externalAPIPanelDocumentation: 'बाहरी नॉलेज API बनाने का तरीका जानें', - editExternalAPIFormTitle: 'बाह्य ज्ञान API संपादित करें', - externalKnowledgeNamePlaceholder: 'कृपया नॉलेज बेस का नाम दर्ज करें', - externalKnowledgeId: 'बाहरी ज्ञान ID', - externalKnowledgeDescriptionPlaceholder: 'वर्णन करें कि इस ज्ञानकोष में क्या है (वैकल्पिक)', - noExternalKnowledge: 'अभी तक कोई बाहरी ज्ञान एपीआई नहीं है, बनाने के लिए यहां क्लिक करें', - createNewExternalAPI: 'एक नया बाहरी नॉलेज API बनाएँ', - learnHowToWriteGoodKnowledgeDescription: 'एक अच्छा ज्ञान विवरण लिखना सीखें', - chunkingMode: { - parentChild: 'माता-पिता का बच्चा', - general: 'सामान्य', - graph: 'ग्राफ', - qa: 'प्रश्न और उत्तर', - }, - parentMode: { - fullDoc: 'पूर्ण-दस्तावेज़', - paragraph: 'अनुच्‍छेद', - }, - batchAction: { - cancel: 'रद्द करना', - disable: 'अक्षम', - enable: 'योग्य बनाना', - selected: 'चयनित', - delete: 'मिटाना', - archive: 'पुरालेख', - }, - localDocs: 'स्थानीय डॉक्स', - preprocessDocument: '{{num}} प्रीप्रोसेस दस्तावेज़', - enable: 'योग्य बनाना', - documentsDisabled: '{{num}} दस्तावेज़ अक्षम - 30 दिनों से अधिक समय से निष्क्रिय', - allKnowledge: 'सर्व ज्ञान', - allKnowledgeDescription: 'इस कार्यस्थान में सभी ज्ञान प्रदर्शित करने के लिए चयन करें. केवल कार्यस्थान स्वामी ही सभी ज्ञान का प्रबंधन कर सकता है.', - metadata: { - createMetadata: { - type: 'टाइप करें', - name: 'नाम', - namePlaceholder: 'ध्यानक का नाम जोड़ें', - title: 'नया मेटाडेटा', - back: 'पीछे', - }, - checkName: { - empty: 'मेटाडाटा का नाम खाली नहीं हो सकता', - invalid: 'मेटाडेटा नाम में केवल छोटे अक्षर, संख्या और अंडरस्कोर शामिल हो सकते हैं और इसे छोटे अक्षर से शुरू होना चाहिए।', - tooLong: 'मेटाडेटा नाम {{max}} वर्णों से अधिक नहीं हो सकता', - }, - batchEditMetadata: { - editMetadata: 'मेटाडेटा संपादित करें', - multipleValue: 'कई मान', - applyToAllSelectDocument: 'चुने गए सभी दस्तावेज़ों पर लागू करें', - editDocumentsNum: 'संपादित कर रहे हैं {{num}} दस्तावेज़', - applyToAllSelectDocumentTip: 'सभी चयनित दस्तावेज़ों के लिए ऊपर दिए गए संपादित और नए मेटाडेटा को स्वचालित रूप से बनाएं, अन्यथा मेटाडेटा का संपादन केवल उन दस्तावेज़ों पर लागू होगा जिनमें यह मौजूद है।', - }, - selectMetadata: { - manageAction: 'प्रबंधित करें', - search: 'खोज मेटाडेटा', - newAction: 'नया मेटाडेटा', - }, - datasetMetadata: { - addMetaData: 'मेटाडेटा जोड़ें', - rename: 'नाम बदलें', - name: 'नाम', - values: '{{num}} मान', - namePlaceholder: 'मेटाडेटा नाम', - deleteContent: 'क्या आप सुनिश्चित हैं कि आप मेटाडेटा "{{name}}" को हटाना चाहते हैं?', - deleteTitle: 'हटाने की पुष्टि करें', - description: 'आप इस ज्ञान में सभी मेटाडेटा प्रबंधित कर सकते हैं। संशोधन हर दस्तावेज़ में समन्वयित किए जाएंगे।', - disabled: 'अक्षम', - builtInDescription: 'बिल्ट-इन मेटाडेटा स्वचालित रूप से निकाला और उत्पन्न होता है। इसे उपयोग से पहले सक्षम करना आवश्यक है और इसे संपादित नहीं किया जा सकता है।', - builtIn: 'बिल्ट-इन', - }, - documentMetadata: { - documentInformation: 'दस्तावेज़ जानकारी', - technicalParameters: 'तकनीकी पैरामीटर', - startLabeling: 'लेबलिंग शुरू करें', - metadataToolTip: 'मेटाडेटा एक महत्वपूर्ण फ़िल्टर के रूप में कार्य करता है जो जानकारी प्राप्त करने की सटीकता और प्रासंगिकता को बढ़ाता है। आप इस दस्तावेज़ के लिए मेटाडेटा को यहाँ संशोधित और जोड़ सकते हैं।', - }, - chooseTime: 'एक समय चुनें...', - addMetadata: 'मेटाडेटा जोड़ें', - metadata: 'मेटाडेटा', - }, - embeddingModelNotAvailable: 'एम्बेडिंग मॉडल उपलब्ध नहीं है।', - updated: 'अपडेट किया गया', - externalKnowledgeBase: 'बाहरी ज्ञान आधार', - createFromPipeline: 'ज्ञान पाइपलाइन से बनाएं', - serviceApi: { - card: { - apiReference: 'एपीआई संदर्भ', - apiKey: 'एपीआई कुंजी', - title: 'बैकएंड सेवा एपीआई', - endpoint: 'सेवा एपीआई एंडपॉइंट', - }, - enabled: 'सेवा में', - disabled: 'अक्षम', - title: 'सेवा एपीआई', - }, - docAllEnabled_one: '{{count}} दस्तावेज़ सक्षम किया गया', - docAllEnabled_other: 'सभी {{count}} दस्तावेज़ सक्षम हैं', - partialEnabled_one: 'कुल {{count}} दस्तावेज़, {{num}} उपलब्ध', - partialEnabled_other: 'कुल {{count}} दस्तावेज़, {{num}} उपलब्ध', - cornerLabel: { - unavailable: 'अनउपलब्ध', - pipeline: 'पाइपलाइन', - }, - multimodal: 'बहु-मोडल', - imageUploader: { - button: 'फ़ाइल या फ़ोल्डर खींचें और छोड़ें, या', - browse: 'ब्राउज़', - tip: '{{supportTypes}} (अधिकतम {{batchCount}}, प्रत्येक {{size}}MB)', - }, -} - -export default translation diff --git a/web/i18n/hi-IN/education.json b/web/i18n/hi-IN/education.json new file mode 100644 index 0000000000..ae2b2fb192 --- /dev/null +++ b/web/i18n/hi-IN/education.json @@ -0,0 +1,74 @@ +{ + "toVerifiedTip": { + "coupon": "विशेष 100% कूपन", + "front": "आप अब शिक्षा सत्यापित स्थिति के लिए योग्य हैं। कृपया नीचे अपनी शिक्षा की जानकारी प्रदान करें ताकि प्रक्रिया को पूरा किया जा सके और एक प्राप्त हो सके", + "end": "Dify प्रोफेशनल योजना के लिए।" + }, + "form": { + "schoolName": { + "placeholder": "अपनी स्कूल का आधिकारिक, बिना संक्षिप्त नाम दर्ज करें", + "title": "आपके स्कूल का नाम" + }, + "schoolRole": { + "option": { + "administrator": "स्कूल प्रशासक", + "student": "छात्र", + "teacher": "शिक्षक" + }, + "title": "आपकी स्कूल की भूमिका" + }, + "terms": { + "desc": { + "and": "और", + "termsOfService": "सेवाओं की शर्तें", + "privacyPolicy": "गोपनीयता नीति", + "end": ". प्रस्तुत करके:", + "front": "आपकी जानकारी और शिक्षा सत्यापित स्थिति का उपयोग हमारी शर्तों के अधीन है।" + }, + "option": { + "age": "मैं पुष्टि करता हूँ कि मैं कम से कम 18 साल का हूँ", + "inSchool": "मैं पुष्टि करता हूँ कि मैं दी गई संस्थान में नामांकित या नियुक्त हूं। Dify नामांकन/नियुक्ति का प्रमाण मांग सकता है। यदि मैं अपनी पात्रता का गलत वर्णन करता हूं, तो मैं सहमत हूं कि मैं अपने शिक्षा स्थिति के आधार पर किसी भी शुल्क का भुगतान करूं जो प्रारंभ में माफ किया गया था।" + }, + "title": "नियम और शर्तें" + } + }, + "submitError": "फॉर्म जमा करने में विफलता हुई। कृपया बाद में पुनः प्रयास करें।", + "currentSigned": "वर्तमान में साइन इन किया गया है के रूप में", + "learn": "शिक्षा को प्रमाणित कराने का तरीका सीखें", + "toVerified": "शिक्षा की पुष्टि कराएँ", + "emailLabel": "आपका वर्तमान ईमेल", + "submit": "सबमिट करें", + "rejectTitle": "आपकी डिफाई शैक्षणिक सत्यापन को अस्वीकृत कर दिया गया है", + "successTitle": "आपकी डिफाई शिक्षा को सत्यापित किया गया है", + "successContent": "हमने आपकी खाते के लिए Dify प्रोफेशनल योजना के लिए 100% छूट कूपन जारी किया है। यह कूपन एक वर्ष के लिए मान्य है, कृपया इसे मान्यता की अवधि के भीतर उपयोग करें।", + "rejectContent": "दुर्भाग्यवश, आप शिक्षा सत्यापित स्थिति के लिए योग्य नहीं हैं और इसलिए यदि आप इस ईमेल पते का उपयोग करते हैं, तो आप डिफाई प्रोफेशनल योजना के लिए विशेष 100% कूपन प्राप्त नहीं कर सकते।", + "notice": { + "expired": { + "summary": { + "line1": "आप अभी भी Dify का उपयोग कर सकते हैं और इसे एक्सेस कर सकते हैं।", + "line2": "हालाँकि, आप नए शिक्षा छूट कूपनों के लिए अब योग्य नहीं हैं।" + }, + "title": "आपकी शिक्षा स्थिति समाप्त हो गई है" + }, + "isAboutToExpire": { + "summary": "चिंता मत करो — यह आपके वर्तमान सदस्यता पर प्रभाव नहीं डालेगा, लेकिन जब यह नवीनीकरण होगा तो आपको शिक्षा छूट नहीं मिलेगी जब तक कि आप अपनी स्थिति को फिर से सत्यापित नहीं करते।", + "title": "आपकी शिक्षा स्थिति {{date}} को समाप्त हो जाएगी" + }, + "stillInEducation": { + "title": "क्या आप अभी भी शिक्षा में हैं?", + "isAboutToExpire": "अब फिर से सत्यापित करें ताकि आगामी शैक्षणिक वर्ष के लिए एक नया कूपन मिल सके। यह आपके खाते में सहेजा जाएगा और आपकी अगली नवीनीकरण पर उपयोग के लिए तैयार होगा।", + "expired": "अब पुनः सत्यापित करें ताकि आप आगामी शैक्षणिक वर्ष के लिए एक नया कूपन प्राप्त कर सकें। हम इसे आपके खाते में जोड़ देंगे और आप इसे अगले अपग्रेड के लिए उपयोग कर सकेंगे।" + }, + "alreadyGraduated": { + "title": "क्या आप पहले ही स्नातक हो चुके हैं?", + "expired": "किसी भी समय अपग्रेड करने में संकोच न करें ताकि आपको सशुल्क सुविधाओं तक पूर्ण पहुँच मिल सके।", + "isAboutToExpire": "आपकी वर्तमान सदस्यता अभी भी सक्रिय रहेगी। जब यह समाप्त होगी, तो आपको सैंडबॉक्स योजना में स्थानांतरित किया जाएगा, या आप कभी भी भुगतान सुविधाओं तक पूरी पहुंच बहाल करने के लिए अपग्रेड कर सकते हैं।" + }, + "action": { + "dismiss": "अस्वीकृत करें", + "upgrade": "अपग्रेड करें", + "reVerify": "पुनः सत्यापित करें" + }, + "dateFormat": "MM/DD/YYYY" + } +} diff --git a/web/i18n/hi-IN/education.ts b/web/i18n/hi-IN/education.ts deleted file mode 100644 index c3b674123e..0000000000 --- a/web/i18n/hi-IN/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerifiedTip: { - coupon: 'विशेष 100% कूपन', - front: 'आप अब शिक्षा सत्यापित स्थिति के लिए योग्य हैं। कृपया नीचे अपनी शिक्षा की जानकारी प्रदान करें ताकि प्रक्रिया को पूरा किया जा सके और एक प्राप्त हो सके', - end: 'Dify प्रोफेशनल योजना के लिए।', - }, - form: { - schoolName: { - placeholder: 'अपनी स्कूल का आधिकारिक, बिना संक्षिप्त नाम दर्ज करें', - title: 'आपके स्कूल का नाम', - }, - schoolRole: { - option: { - administrator: 'स्कूल प्रशासक', - student: 'छात्र', - teacher: 'शिक्षक', - }, - title: 'आपकी स्कूल की भूमिका', - }, - terms: { - desc: { - and: 'और', - termsOfService: 'सेवाओं की शर्तें', - privacyPolicy: 'गोपनीयता नीति', - end: '. प्रस्तुत करके:', - front: 'आपकी जानकारी और शिक्षा सत्यापित स्थिति का उपयोग हमारी शर्तों के अधीन है।', - }, - option: { - age: 'मैं पुष्टि करता हूँ कि मैं कम से कम 18 साल का हूँ', - inSchool: 'मैं पुष्टि करता हूँ कि मैं दी गई संस्थान में नामांकित या नियुक्त हूं। Dify नामांकन/नियुक्ति का प्रमाण मांग सकता है। यदि मैं अपनी पात्रता का गलत वर्णन करता हूं, तो मैं सहमत हूं कि मैं अपने शिक्षा स्थिति के आधार पर किसी भी शुल्क का भुगतान करूं जो प्रारंभ में माफ किया गया था।', - }, - title: 'नियम और शर्तें', - }, - }, - submitError: 'फॉर्म जमा करने में विफलता हुई। कृपया बाद में पुनः प्रयास करें।', - currentSigned: 'वर्तमान में साइन इन किया गया है के रूप में', - learn: 'शिक्षा को प्रमाणित कराने का तरीका सीखें', - toVerified: 'शिक्षा की पुष्टि कराएँ', - emailLabel: 'आपका वर्तमान ईमेल', - submit: 'सबमिट करें', - rejectTitle: 'आपकी डिफाई शैक्षणिक सत्यापन को अस्वीकृत कर दिया गया है', - successTitle: 'आपकी डिफाई शिक्षा को सत्यापित किया गया है', - successContent: 'हमने आपकी खाते के लिए Dify प्रोफेशनल योजना के लिए 100% छूट कूपन जारी किया है। यह कूपन एक वर्ष के लिए मान्य है, कृपया इसे मान्यता की अवधि के भीतर उपयोग करें।', - rejectContent: 'दुर्भाग्यवश, आप शिक्षा सत्यापित स्थिति के लिए योग्य नहीं हैं और इसलिए यदि आप इस ईमेल पते का उपयोग करते हैं, तो आप डिफाई प्रोफेशनल योजना के लिए विशेष 100% कूपन प्राप्त नहीं कर सकते।', - notice: { - expired: { - summary: { - line1: 'आप अभी भी Dify का उपयोग कर सकते हैं और इसे एक्सेस कर सकते हैं।', - line2: 'हालाँकि, आप नए शिक्षा छूट कूपनों के लिए अब योग्य नहीं हैं।', - }, - title: 'आपकी शिक्षा स्थिति समाप्त हो गई है', - }, - isAboutToExpire: { - summary: 'चिंता मत करो — यह आपके वर्तमान सदस्यता पर प्रभाव नहीं डालेगा, लेकिन जब यह नवीनीकरण होगा तो आपको शिक्षा छूट नहीं मिलेगी जब तक कि आप अपनी स्थिति को फिर से सत्यापित नहीं करते।', - title: 'आपकी शिक्षा स्थिति {{date}} को समाप्त हो जाएगी', - }, - stillInEducation: { - title: 'क्या आप अभी भी शिक्षा में हैं?', - isAboutToExpire: 'अब फिर से सत्यापित करें ताकि आगामी शैक्षणिक वर्ष के लिए एक नया कूपन मिल सके। यह आपके खाते में सहेजा जाएगा और आपकी अगली नवीनीकरण पर उपयोग के लिए तैयार होगा।', - expired: 'अब पुनः सत्यापित करें ताकि आप आगामी शैक्षणिक वर्ष के लिए एक नया कूपन प्राप्त कर सकें। हम इसे आपके खाते में जोड़ देंगे और आप इसे अगले अपग्रेड के लिए उपयोग कर सकेंगे।', - }, - alreadyGraduated: { - title: 'क्या आप पहले ही स्नातक हो चुके हैं?', - expired: 'किसी भी समय अपग्रेड करने में संकोच न करें ताकि आपको सशुल्क सुविधाओं तक पूर्ण पहुँच मिल सके।', - isAboutToExpire: 'आपकी वर्तमान सदस्यता अभी भी सक्रिय रहेगी। जब यह समाप्त होगी, तो आपको सैंडबॉक्स योजना में स्थानांतरित किया जाएगा, या आप कभी भी भुगतान सुविधाओं तक पूरी पहुंच बहाल करने के लिए अपग्रेड कर सकते हैं।', - }, - action: { - dismiss: 'अस्वीकृत करें', - upgrade: 'अपग्रेड करें', - reVerify: 'पुनः सत्यापित करें', - }, - dateFormat: 'MM/DD/YYYY', - }, -} - -export default translation diff --git a/web/i18n/hi-IN/explore.json b/web/i18n/hi-IN/explore.json new file mode 100644 index 0000000000..ed1d17c01d --- /dev/null +++ b/web/i18n/hi-IN/explore.json @@ -0,0 +1,42 @@ +{ + "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": "मानव संसाधन", + "Workflow": "कार्यप्रवाह", + "Agent": "आढ़तिया", + "Entertainment": "मनोरंजन" + } +} diff --git a/web/i18n/hi-IN/explore.ts b/web/i18n/hi-IN/explore.ts deleted file mode 100644 index a9e850cb3b..0000000000 --- a/web/i18n/hi-IN/explore.ts +++ /dev/null @@ -1,45 +0,0 @@ -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: 'मानव संसाधन', - Workflow: 'कार्यप्रवाह', - Agent: 'आढ़तिया', - Entertainment: 'मनोरंजन', - }, -} - -export default translation diff --git a/web/i18n/hi-IN/layout.json b/web/i18n/hi-IN/layout.json new file mode 100644 index 0000000000..f0dc271399 --- /dev/null +++ b/web/i18n/hi-IN/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "collapseSidebar": "साइडबार को बंद करें", + "expandSidebar": "साइडबार विस्तार करें" + } +} diff --git a/web/i18n/hi-IN/layout.ts b/web/i18n/hi-IN/layout.ts deleted file mode 100644 index 14a05dc3ad..0000000000 --- a/web/i18n/hi-IN/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - collapseSidebar: 'साइडबार को बंद करें', - expandSidebar: 'साइडबार विस्तार करें', - }, -} - -export default translation diff --git a/web/i18n/hi-IN/login.json b/web/i18n/hi-IN/login.json new file mode 100644 index 0000000000..7309c3c7be --- /dev/null +++ b/web/i18n/hi-IN/login.json @@ -0,0 +1,124 @@ +{ + "pageTitle": "अरे, चलिए शुरू करते हैं!👋", + "welcome": "Dify में आपका स्वागत है, कृपया जारी रखने के लिए लॉग इन करें।", + "email": "ईमेल पता", + "emailPlaceholder": "आपका ईमेल", + "password": "पासवर्ड", + "passwordPlaceholder": "आपका पासवर्ड", + "name": "उपयोगकर्ता नाम", + "namePlaceholder": "आपका उपयोगकर्ता नाम", + "forget": "क्या आप पासवर्ड भूल गए?", + "signBtn": "साइन इन करें", + "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": "खाता पहले से प्रारंभ किया गया है", + "forgotPassword": "क्या आपने अपना पासवर्ड भूल गए हैं?", + "resetLinkSent": "रीसेट लिंक भेजी गई", + "sendResetLink": "रीसेट लिंक भेजें", + "backToSignIn": "साइन इन पर वापस जाएं", + "forgotPasswordDesc": "कृपया अपना ईमेल पता दर्ज करें ताकि हम आपको अपना पासवर्ड रीसेट करने के निर्देशों के साथ एक ईमेल भेज सकें।", + "checkEmailForResetLink": "कृपया अपना पासवर्ड रीसेट करने के लिए लिंक के लिए अपना ईमेल चेक करें। अगर यह कुछ मिनटों के भीतर नहीं आता है, तो कृपया अपना स्पैम फोल्डर भी चेक करें।", + "passwordChanged": "अब साइन इन करें", + "changePassword": "पासवर्ड बदलें", + "changePasswordTip": "कृपया अपने खाते के लिए नया पासवर्ड दर्ज करें", + "invalidToken": "अमान्य या समाप्त टोकन", + "confirmPassword": "पासवर्ड की पुष्टि करें", + "confirmPasswordPlaceholder": "अपना नया पासवर्ड पुष्टि करें", + "passwordChangedTip": "आपका पासवर्ड सफलतापूर्वक बदल दिया गया है", + "error": { + "emailEmpty": "ईमेल पता आवश्यक है", + "emailInValid": "कृपया एक मान्य ईमेल पता दर्ज करें", + "nameEmpty": "नाम आवश्यक है", + "passwordEmpty": "पासवर्ड आवश्यक है", + "passwordLengthInValid": "पासवर्ड कम से कम 8 वर्णों का होना चाहिए", + "passwordInvalid": "पासवर्ड में अक्षर और अंक होने चाहिए, और लंबाई 8 से अधिक होनी चाहिए", + "registrationNotAllowed": "खाता नहीं मिला. रजिस्टर करने के लिए कृपया सिस्टम एडमिन से संपर्क करें।", + "invalidEmailOrPassword": "अमान्य ईमेल या पासवर्ड।" + }, + "license": { + "tip": "Dify Community Edition शुरू करने से पहले, GitHub पर", + "link": "ओपन-सोर्स लाइसेंस" + }, + "join": "शामिल हों", + "joinTipStart": "आपको आमंत्रित करते हैं", + "joinTipEnd": "टीम पर Dify", + "invalid": "लिंक समाप्त हो गया है", + "explore": "Dify का अन्वेषण करें", + "activatedTipStart": "आप शामिल हो गए हैं", + "activatedTipEnd": "टीम", + "activated": "अब साइन इन करें", + "adminInitPassword": "एडमिन प्रारंभिक पासवर्ड", + "validate": "सत्यापित करें", + "checkCode": { + "verify": "जाँचना", + "verificationCode": "सत्यापन कोड", + "invalidCode": "अमान्य कोड", + "useAnotherMethod": "किसी अन्य विधि का उपयोग करें", + "emptyCode": "कोड आवश्यक है", + "didNotReceiveCode": "कोड प्राप्त नहीं हुआ?", + "resend": "भेजें", + "checkYourEmail": "अपना ईमेल जांचें", + "validTime": "ध्यान रखें कि कोड 5 मिनट के लिए वैध है", + "verificationCodePlaceholder": "6-अंक कोड दर्ज करें", + "tipsPrefix": "हम एक सत्यापन कोड भेजते हैं" + }, + "sendVerificationCode": "पुष्टि कोड भेजें", + "or": "नहीं तो", + "continueWithCode": "कोड के साथ जारी रखें", + "resetPassword": "पासवर्ड रीसेट करें", + "changePasswordBtn": "पासवर्ड सेट करें", + "setYourAccount": "अपना खाता सेट करें", + "useVerificationCode": "सत्यापन कोड का उपयोग करें", + "usePassword": "पासवर्ड का उपयोग करें", + "backToLogin": "लॉगिन पर वापस जाएं", + "noLoginMethod": "प्रमाणीकरण विधि कॉन्फ़िगर नहीं की गई", + "enterYourName": "कृपया अपना उपयोगकर्ता नाम दर्ज करें", + "noLoginMethodTip": "प्रमाणीकरण विधि जोड़ने के लिए कृपया सिस्टम व्यवस्थापक से संपर्क करें.", + "resetPasswordDesc": "वह ईमेल टाइप करें जिसका उपयोग आपने Dify पर साइन अप करने के लिए किया था और हम आपको एक पासवर्ड रीसेट ईमेल भेजेंगे।", + "withSSO": "एसएसओ के साथ जारी रखें", + "back": "पीछे", + "licenseInactive": "लाइसेंस निष्क्रिय", + "licenseExpired": "लाइसेंस की समय सीमा समाप्त हो गई", + "licenseLost": "लाइसेंस खो गया", + "licenseLostTip": "Dify लायसेंस सर्वर से कनेक्ट करने में विफल. Dify का उपयोग जारी रखने के लिए कृपया अपने व्यवस्थापक से संपर्क करें.", + "licenseInactiveTip": "आपके कार्यस्थल के लिए डिफाई एंटरप्राइज लाइसेंस निष्क्रिय है। कृपया डिफाई का उपयोग जारी रखने के लिए अपने प्रशासक से संपर्क करें।", + "licenseExpiredTip": "आपके कार्यस्थल के लिए डिफाई एंटरप्राइज लाइसेंस समाप्त हो गया है। कृपया डिफाई का उपयोग जारी रखने के लिए अपने प्रशासक से संपर्क करें।", + "webapp": { + "noLoginMethodTip": "कृपया एक प्रमाणीकरण विधि जोड़ने के लिए सिस्टम प्रशासक से संपर्क करें।", + "noLoginMethod": "वेब ऐप के लिए प्रमाणीकरण विधि कॉन्फ़िगर नहीं की गई है", + "disabled": "वेब ऐप प्रमाणीकरण अक्षम है। कृपया इसे सक्षम करने के लिए सिस्टम प्रशासक से संपर्क करें। आप सीधे ऐप का उपयोग करने की कोशिश कर सकते हैं।", + "login": "लॉगइन" + }, + "signup": { + "signIn": "साइन इन करें", + "noAccount": "क्या आपके पास खाता नहीं है?", + "signUp": "साइन अप करें", + "verifyMail": "प्रमाणन कोड के साथ जारी रखें", + "createAccount": "अपना खाता बनाएँ", + "welcome": "👋 स्वागत है! कृपया शुरू करने के लिए विवरण भरें।", + "haveAccount": "क्या आपका पहले से एक खाता है?" + }, + "pageTitleForE": "अरे, चलो शुरू करें!" +} diff --git a/web/i18n/hi-IN/login.ts b/web/i18n/hi-IN/login.ts deleted file mode 100644 index 27b7df9849..0000000000 --- a/web/i18n/hi-IN/login.ts +++ /dev/null @@ -1,131 +0,0 @@ -const translation = { - pageTitle: 'अरे, चलिए शुरू करते हैं!👋', - welcome: 'Dify में आपका स्वागत है, कृपया जारी रखने के लिए लॉग इन करें।', - email: 'ईमेल पता', - emailPlaceholder: 'आपका ईमेल', - password: 'पासवर्ड', - passwordPlaceholder: 'आपका पासवर्ड', - name: 'उपयोगकर्ता नाम', - namePlaceholder: 'आपका उपयोगकर्ता नाम', - forget: 'क्या आप पासवर्ड भूल गए?', - signBtn: 'साइन इन करें', - 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: 'खाता पहले से प्रारंभ किया गया है', - forgotPassword: 'क्या आपने अपना पासवर्ड भूल गए हैं?', - resetLinkSent: 'रीसेट लिंक भेजी गई', - sendResetLink: 'रीसेट लिंक भेजें', - backToSignIn: 'साइन इन पर वापस जाएं', - forgotPasswordDesc: 'कृपया अपना ईमेल पता दर्ज करें ताकि हम आपको अपना पासवर्ड रीसेट करने के निर्देशों के साथ एक ईमेल भेज सकें।', - checkEmailForResetLink: 'कृपया अपना पासवर्ड रीसेट करने के लिए लिंक के लिए अपना ईमेल चेक करें। अगर यह कुछ मिनटों के भीतर नहीं आता है, तो कृपया अपना स्पैम फोल्डर भी चेक करें।', - passwordChanged: 'अब साइन इन करें', - changePassword: 'पासवर्ड बदलें', - changePasswordTip: 'कृपया अपने खाते के लिए नया पासवर्ड दर्ज करें', - invalidToken: 'अमान्य या समाप्त टोकन', - confirmPassword: 'पासवर्ड की पुष्टि करें', - confirmPasswordPlaceholder: 'अपना नया पासवर्ड पुष्टि करें', - passwordChangedTip: 'आपका पासवर्ड सफलतापूर्वक बदल दिया गया है', - error: { - emailEmpty: 'ईमेल पता आवश्यक है', - emailInValid: 'कृपया एक मान्य ईमेल पता दर्ज करें', - nameEmpty: 'नाम आवश्यक है', - passwordEmpty: 'पासवर्ड आवश्यक है', - passwordLengthInValid: 'पासवर्ड कम से कम 8 वर्णों का होना चाहिए', - passwordInvalid: - 'पासवर्ड में अक्षर और अंक होने चाहिए, और लंबाई 8 से अधिक होनी चाहिए', - registrationNotAllowed: 'खाता नहीं मिला. रजिस्टर करने के लिए कृपया सिस्टम एडमिन से संपर्क करें।', - invalidEmailOrPassword: 'अमान्य ईमेल या पासवर्ड।', - }, - license: { - tip: 'Dify Community Edition शुरू करने से पहले, GitHub पर', - link: 'ओपन-सोर्स लाइसेंस', - }, - join: 'शामिल हों', - joinTipStart: 'आपको आमंत्रित करते हैं', - joinTipEnd: 'टीम पर Dify', - invalid: 'लिंक समाप्त हो गया है', - explore: 'Dify का अन्वेषण करें', - activatedTipStart: 'आप शामिल हो गए हैं', - activatedTipEnd: 'टीम', - activated: 'अब साइन इन करें', - adminInitPassword: 'एडमिन प्रारंभिक पासवर्ड', - validate: 'सत्यापित करें', - checkCode: { - verify: 'जाँचना', - verificationCode: 'सत्यापन कोड', - invalidCode: 'अमान्य कोड', - useAnotherMethod: 'किसी अन्य विधि का उपयोग करें', - emptyCode: 'कोड आवश्यक है', - didNotReceiveCode: 'कोड प्राप्त नहीं हुआ?', - resend: 'भेजें', - checkYourEmail: 'अपना ईमेल जांचें', - validTime: 'ध्यान रखें कि कोड 5 मिनट के लिए वैध है', - verificationCodePlaceholder: '6-अंक कोड दर्ज करें', - tipsPrefix: 'हम एक सत्यापन कोड भेजते हैं', - }, - sendVerificationCode: 'पुष्टि कोड भेजें', - or: 'नहीं तो', - continueWithCode: 'कोड के साथ जारी रखें', - resetPassword: 'पासवर्ड रीसेट करें', - changePasswordBtn: 'पासवर्ड सेट करें', - setYourAccount: 'अपना खाता सेट करें', - useVerificationCode: 'सत्यापन कोड का उपयोग करें', - usePassword: 'पासवर्ड का उपयोग करें', - backToLogin: 'लॉगिन पर वापस जाएं', - noLoginMethod: 'प्रमाणीकरण विधि कॉन्फ़िगर नहीं की गई', - enterYourName: 'कृपया अपना उपयोगकर्ता नाम दर्ज करें', - noLoginMethodTip: 'प्रमाणीकरण विधि जोड़ने के लिए कृपया सिस्टम व्यवस्थापक से संपर्क करें.', - resetPasswordDesc: 'वह ईमेल टाइप करें जिसका उपयोग आपने Dify पर साइन अप करने के लिए किया था और हम आपको एक पासवर्ड रीसेट ईमेल भेजेंगे।', - withSSO: 'एसएसओ के साथ जारी रखें', - back: 'पीछे', - licenseInactive: 'लाइसेंस निष्क्रिय', - licenseExpired: 'लाइसेंस की समय सीमा समाप्त हो गई', - licenseLost: 'लाइसेंस खो गया', - licenseLostTip: 'Dify लायसेंस सर्वर से कनेक्ट करने में विफल. Dify का उपयोग जारी रखने के लिए कृपया अपने व्यवस्थापक से संपर्क करें.', - licenseInactiveTip: 'आपके कार्यस्थल के लिए डिफाई एंटरप्राइज लाइसेंस निष्क्रिय है। कृपया डिफाई का उपयोग जारी रखने के लिए अपने प्रशासक से संपर्क करें।', - licenseExpiredTip: 'आपके कार्यस्थल के लिए डिफाई एंटरप्राइज लाइसेंस समाप्त हो गया है। कृपया डिफाई का उपयोग जारी रखने के लिए अपने प्रशासक से संपर्क करें।', - webapp: { - noLoginMethodTip: 'कृपया एक प्रमाणीकरण विधि जोड़ने के लिए सिस्टम प्रशासक से संपर्क करें।', - noLoginMethod: 'वेब ऐप के लिए प्रमाणीकरण विधि कॉन्फ़िगर नहीं की गई है', - disabled: 'वेब ऐप प्रमाणीकरण अक्षम है। कृपया इसे सक्षम करने के लिए सिस्टम प्रशासक से संपर्क करें। आप सीधे ऐप का उपयोग करने की कोशिश कर सकते हैं।', - login: 'लॉगइन', - }, - signup: { - signIn: 'साइन इन करें', - noAccount: 'क्या आपके पास खाता नहीं है?', - signUp: 'साइन अप करें', - verifyMail: 'प्रमाणन कोड के साथ जारी रखें', - createAccount: 'अपना खाता बनाएँ', - welcome: '👋 स्वागत है! कृपया शुरू करने के लिए विवरण भरें।', - haveAccount: 'क्या आपका पहले से एक खाता है?', - }, - pageTitleForE: 'अरे, चलो शुरू करें!', -} - -export default translation diff --git a/web/i18n/hi-IN/oauth.json b/web/i18n/hi-IN/oauth.json new file mode 100644 index 0000000000..8a26af6e8d --- /dev/null +++ b/web/i18n/hi-IN/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "needLogin": "कृपया प्राधिकरण के लिए लॉग इन करें", + "notLoggedIn": "यह ऐप आपके Dify Cloud खाते तक पहुंचना चाहता है", + "common": "हम आपकी गोपनीयता का सम्मान करते हैं और इस जानकारी का उपयोग केवल आपके हमारे विकास उपकरणों के साथ अनुभव को बेहतर बनाने के लिए करेंगे।", + "loggedIn": "यह ऐप आपके Dify Cloud खाते से निम्नलिखित जानकारी तक पहुंचना चाहता है।" + }, + "scopes": { + "name": "नाम", + "avatar": "अवतार", + "email": "ईमेल", + "languagePreference": "भाषा चयन", + "timezone": "समय क्षेत्र" + }, + "error": { + "authorizeFailed": "प्राधिकरण विफल", + "invalidParams": "अमान्य पैरामीटर", + "authAppInfoFetchFailed": "प्राधिकरण के लिए ऐप जानकारी प्राप्त करने में असफल हुआ" + }, + "connect": "संयोजित करें", + "switchAccount": "खाता बदलें", + "unknownApp": "अनजान ऐप", + "login": "लॉगइन", + "continue": "जारी रखें" +} diff --git a/web/i18n/hi-IN/oauth.ts b/web/i18n/hi-IN/oauth.ts deleted file mode 100644 index a2e7bb9e36..0000000000 --- a/web/i18n/hi-IN/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - needLogin: 'कृपया प्राधिकरण के लिए लॉग इन करें', - notLoggedIn: 'यह ऐप आपके Dify Cloud खाते तक पहुंचना चाहता है', - common: 'हम आपकी गोपनीयता का सम्मान करते हैं और इस जानकारी का उपयोग केवल आपके हमारे विकास उपकरणों के साथ अनुभव को बेहतर बनाने के लिए करेंगे।', - loggedIn: 'यह ऐप आपके Dify Cloud खाते से निम्नलिखित जानकारी तक पहुंचना चाहता है।', - }, - scopes: { - name: 'नाम', - avatar: 'अवतार', - email: 'ईमेल', - languagePreference: 'भाषा चयन', - timezone: 'समय क्षेत्र', - }, - error: { - authorizeFailed: 'प्राधिकरण विफल', - invalidParams: 'अमान्य पैरामीटर', - authAppInfoFetchFailed: 'प्राधिकरण के लिए ऐप जानकारी प्राप्त करने में असफल हुआ', - }, - connect: 'संयोजित करें', - switchAccount: 'खाता बदलें', - unknownApp: 'अनजान ऐप', - login: 'लॉगइन', - continue: 'जारी रखें', -} - -export default translation diff --git a/web/i18n/hi-IN/pipeline.json b/web/i18n/hi-IN/pipeline.json new file mode 100644 index 0000000000..036e9d1c08 --- /dev/null +++ b/web/i18n/hi-IN/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "publishAsPipeline": { + "name": "पाइपलाइन का नाम और आइकन", + "description": "ज्ञान का वर्णन", + "namePlaceholder": "कृपया इस ज्ञान पाइपलाइन का नाम दर्ज करें। (आवश्यक)", + "descriptionPlaceholder": "कृपया इस ज्ञान पाइपलाइन का वर्णन दर्ज करें। (वैकल्पिक)" + }, + "testRun": "परीक्षण चलाना", + "preparingDataSource": "डेटा स्रोत की तैयारी करना", + "reRun": "फिर से चलाएँ", + "confirmPublish": "प्रकाशित करने की पुष्टि करें", + "publishAs": "ज्ञान पाइपलाइन के रूप में प्रकाशित करें", + "processing": "प्रसंस्करण", + "goToAddDocuments": "दस्तावेज़ जोड़ने के लिए जाएं", + "confirmPublishContent": "ज्ञान पाइपलाइन को सफलतापूर्वक प्रकाशित करने के बाद, इस ज्ञान आधार की टुकड़ा संरचना को संशोधित नहीं किया जा सकता। क्या आप निश्चित हैं कि आप इसे प्रकाशित करना चाहते हैं?" + }, + "inputField": { + "create": "उपयोगकर्ता इनपुट क्षेत्र बनाएं", + "manage": "प्रबंधित करें" + }, + "publishToast": { + "title": "यह पाइपलाइन अभी तक प्रकाशित नहीं हुई है", + "desc": "जब पाइपलाइन प्रकाशित नहीं होती है, तो आप ज्ञान बेस नोड में हिस्सा संरचना को संशोधित कर सकते हैं, और पाइपलाइन संचालन और परिवर्तनों को स्वचालित रूप से मसौदे के रूप में सहेजा जाएगा।" + }, + "result": { + "resultPreview": { + "viewDetails": "विवरण देखें", + "error": "कार्यवाही के दौरान त्रुटि हुई", + "loading": "प्रसंस्करण हो रहा है... कृपया प्रतीक्षा करें", + "footerTip": "परीक्षण रन मोड में, {{count}} खंड तक पूर्वावलोकन करें" + } + }, + "ragToolSuggestions": { + "title": "आरएजी के लिए सुझाव", + "noRecommendationPlugins": "कोई सुझाए गए प्लगइन्स नहीं, और अधिक खोजें मार्केटप्लेस में" + } +} diff --git a/web/i18n/hi-IN/pipeline.ts b/web/i18n/hi-IN/pipeline.ts deleted file mode 100644 index e7d01ec744..0000000000 --- a/web/i18n/hi-IN/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - publishAsPipeline: { - name: 'पाइपलाइन का नाम और आइकन', - description: 'ज्ञान का वर्णन', - namePlaceholder: 'कृपया इस ज्ञान पाइपलाइन का नाम दर्ज करें। (आवश्यक)', - descriptionPlaceholder: 'कृपया इस ज्ञान पाइपलाइन का वर्णन दर्ज करें। (वैकल्पिक)', - }, - testRun: 'परीक्षण चलाना', - preparingDataSource: 'डेटा स्रोत की तैयारी करना', - reRun: 'फिर से चलाएँ', - confirmPublish: 'प्रकाशित करने की पुष्टि करें', - publishAs: 'ज्ञान पाइपलाइन के रूप में प्रकाशित करें', - processing: 'प्रसंस्करण', - goToAddDocuments: 'दस्तावेज़ जोड़ने के लिए जाएं', - confirmPublishContent: 'ज्ञान पाइपलाइन को सफलतापूर्वक प्रकाशित करने के बाद, इस ज्ञान आधार की टुकड़ा संरचना को संशोधित नहीं किया जा सकता। क्या आप निश्चित हैं कि आप इसे प्रकाशित करना चाहते हैं?', - }, - inputField: { - create: 'उपयोगकर्ता इनपुट क्षेत्र बनाएं', - manage: 'प्रबंधित करें', - }, - publishToast: { - title: 'यह पाइपलाइन अभी तक प्रकाशित नहीं हुई है', - desc: 'जब पाइपलाइन प्रकाशित नहीं होती है, तो आप ज्ञान बेस नोड में हिस्सा संरचना को संशोधित कर सकते हैं, और पाइपलाइन संचालन और परिवर्तनों को स्वचालित रूप से मसौदे के रूप में सहेजा जाएगा।', - }, - result: { - resultPreview: { - viewDetails: 'विवरण देखें', - error: 'कार्यवाही के दौरान त्रुटि हुई', - loading: 'प्रसंस्करण हो रहा है... कृपया प्रतीक्षा करें', - footerTip: 'परीक्षण रन मोड में, {{count}} खंड तक पूर्वावलोकन करें', - }, - }, - ragToolSuggestions: { - title: 'आरएजी के लिए सुझाव', - noRecommendationPlugins: 'कोई सुझाए गए प्लगइन्स नहीं, और अधिक खोजें मार्केटप्लेस में', - }, -} - -export default translation diff --git a/web/i18n/hi-IN/plugin-tags.json b/web/i18n/hi-IN/plugin-tags.json new file mode 100644 index 0000000000..977a026831 --- /dev/null +++ b/web/i18n/hi-IN/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "tags": { + "social": "सामाजिक", + "business": "व्यवसाय", + "agent": "एजेंट", + "design": "डिज़ाइन", + "education": "शिक्षा", + "news": "समाचार", + "productivity": "उत्पादकता", + "weather": "मौसम", + "utilities": "यूटिलिटीज", + "image": "छवि", + "search": "खोज", + "videos": "वीडियो", + "travel": "यात्रा", + "entertainment": "मनोरंजन", + "other": "अन्य", + "medical": "चिकित्सा", + "finance": "वित्त", + "rag": "राग" + }, + "searchTags": "खोज टैग", + "allTags": "सभी टैग" +} diff --git a/web/i18n/hi-IN/plugin-tags.ts b/web/i18n/hi-IN/plugin-tags.ts deleted file mode 100644 index 03f29a5f71..0000000000 --- a/web/i18n/hi-IN/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - tags: { - social: 'सामाजिक', - business: 'व्यवसाय', - agent: 'एजेंट', - design: 'डिज़ाइन', - education: 'शिक्षा', - news: 'समाचार', - productivity: 'उत्पादकता', - weather: 'मौसम', - utilities: 'यूटिलिटीज', - image: 'छवि', - search: 'खोज', - videos: 'वीडियो', - travel: 'यात्रा', - entertainment: 'मनोरंजन', - other: 'अन्य', - medical: 'चिकित्सा', - finance: 'वित्त', - rag: 'राग', - }, - searchTags: 'खोज टैग', - allTags: 'सभी टैग', -} - -export default translation diff --git a/web/i18n/hi-IN/plugin-trigger.json b/web/i18n/hi-IN/plugin-trigger.json new file mode 100644 index 0000000000..3b3ec6b0bf --- /dev/null +++ b/web/i18n/hi-IN/plugin-trigger.json @@ -0,0 +1,184 @@ +{ + "subscription": { + "title": "सदस्यताएँ", + "listNum": "{{num}} सब्सक्रिप्शन्स", + "empty": { + "title": "कोई सदस्यता नहीं", + "button": "नई सब्सक्रिप्शन" + }, + "createButton": { + "oauth": "OAuth के साथ नई सदस्यता", + "apiKey": "एपीआई कुंजी के साथ नया सब्सक्रिप्शन", + "manual": "नई सदस्यता बनाने के लिए URL चिपकाएँ" + }, + "createSuccess": "सब्सक्रिप्शन सफलतापूर्वक बनाया गया", + "createFailed": "सब्सक्रिप्शन बनाने में असफल", + "maxCount": "अधिकतम {{num}} सदस्यताएँ", + "selectPlaceholder": "सदस्यता चुनें", + "noSubscriptionSelected": "कोई सदस्यता नहीं चुनी गई", + "subscriptionRemoved": "सदस्यता हटा दी गई", + "list": { + "title": "सदस्यताएँ", + "addButton": "जोड़ें", + "tip": "सब्सक्रिप्शन के माध्यम से इवेंट प्राप्त करें", + "item": { + "enabled": "सक्रिय", + "disabled": "विकलांग", + "credentialType": { + "api_key": "एपीआई कुंजी", + "oauth2": "OAuth", + "unauthorized": "मैनुअल" + }, + "actions": { + "delete": "हटाएँ", + "deleteConfirm": { + "title": "क्या आप {{name}} को हटा देना चाहते हैं?", + "success": "सदस्यता {{name}} सफलतापूर्वक हटाई गई", + "error": "सदस्यता {{name}} हटाने में असफल", + "content": "एक बार हटा दी जाने के बाद, इस सदस्यता को पुनर्प्राप्त नहीं किया जा सकता। कृपया पुष्टि करें।", + "contentWithApps": "वर्तमान सदस्यता का संदर्भ {{count}} अनुप्रयोगों द्वारा लिया गया है। इसे हटाने से कॉन्फ़िगर किए गए अनुप्रयोग सदस्यता घटनाओं को प्राप्त करना बंद कर देंगे।", + "confirm": "हटाना पुष्टि करें", + "cancel": "रद्द करें", + "confirmInputWarning": "कृपया पुष्टि करने के लिए सही नाम दर्ज करें।", + "confirmInputPlaceholder": "पुष्टि करने के लिए \"{{name}}\" दर्ज करें।", + "confirmInputTip": "कृपया पुष्टि करने के लिए “{{name}}” दर्ज करें।" + } + }, + "status": { + "active": "सक्रिय", + "inactive": "निष्क्रिय" + }, + "usedByNum": "{{num}} वर्कफ़्लो द्वारा उपयोग किया गया", + "noUsed": "कोई वर्कफ़्लो उपयोग नहीं किया गया" + } + }, + "addType": { + "title": "सदस्यता जोड़ें", + "description": "निर्धारित करने के लिए चुनें कि आप अपनी ट्रिगर सदस्यता कैसे बनाना चाहते हैं", + "options": { + "apikey": { + "title": "एपीआई कुंजी के साथ बनाएं", + "description": "API क्रेडेंशियल का उपयोग करके स्वचालित रूप से सब्सक्रिप्शन बनाएं" + }, + "oauth": { + "title": "OAuth के साथ बनाएं", + "description": "सदस्यता बनाने के लिए तृतीय-पक्ष प्लेटफ़ॉर्म के साथ प्राधिकृत करें", + "clientSettings": "OAuth क्लाइंट सेटिंग्स", + "clientTitle": "OAuth क्लाइंट", + "default": "डिफ़ॉल्ट", + "custom": "कस्टम" + }, + "manual": { + "title": "मैनुअल सेटअप", + "description": "नई सदस्यता बनाने के लिए URL चिपकाएँ", + "tip": "थर्ड-पार्टी प्लेटफ़ॉर्म पर URL मैन्युअली कॉन्फ़िगर करें" + } + } + } + }, + "modal": { + "steps": { + "verify": "सत्यापित करें", + "configuration": "कॉन्फ़िगरेशन" + }, + "common": { + "cancel": "रद्द करें", + "back": "वापस", + "next": "अगला", + "create": "बनाएँ", + "verify": "सत्यापित करें", + "authorize": "अधिकार देना", + "creating": "बना रहा हूँ...", + "verifying": "सत्यापित किया जा रहा है...", + "authorizing": "अधिकृत किया जा रहा है..." + }, + "oauthRedirectInfo": "चूंकि इस टूल प्रदाता के लिए कोई सिस्टम क्लाइंट सीक्रेट्स नहीं मिले, इसलिए इसे मैनुअली सेटअप करने की आवश्यकता है, redirect_uri के लिए कृपया उपयोग करें", + "apiKey": { + "title": "एपीआई कुंजी के साथ बनाएं", + "verify": { + "title": "क्रेडेंशियल्स सत्यापित करें", + "description": "कृपया पहुँच सत्यापित करने के लिए अपने API क्रेडेंशियल्स प्रदान करें", + "error": "सत्यापन विफल हुआ। कृपया अपनी API कुंजी जांचें।", + "success": "प्रमाण-पत्र सफलतापूर्वक सत्यापित किए गए" + }, + "configuration": { + "title": "सदस्यता कॉन्फ़िगर करें", + "description": "अपनी सदस्यता सेटिंग्स सेट करें" + } + }, + "oauth": { + "title": "OAuth के साथ बनाएं", + "authorization": { + "title": "OAuth प्राधिकरण", + "description": "अपने खाते तक पहुँचने के लिए Dify को अधिकृत करें", + "redirectUrl": "पुनःमार्गित करें URL", + "redirectUrlHelp": "अपने OAuth ऐप कॉन्फ़िगरेशन में इस URL का उपयोग करें", + "authorizeButton": "{{provider}} के साथ प्राधिकृत करें", + "waitingAuth": "अनुमति की प्रतीक्षा कर रहे हैं...", + "authSuccess": "प्राधिकरण सफल", + "authFailed": "OAuth प्राधिकरण जानकारी प्राप्त करने में विफल", + "waitingJump": "अधिकृत, कूदने की प्रतीक्षा कर रहा है" + }, + "configuration": { + "title": "सदस्यता कॉन्फ़िगर करें", + "description": "अधिकार के बाद अपनी सदस्यता पैरामीटर सेट करें", + "success": "OAuth कॉन्फ़िगरेशन सफल", + "failed": "OAuth कॉन्फ़िगरेशन विफल हुआ" + }, + "remove": { + "success": "OAuth सफलतापूर्वक हटा दिया गया", + "failed": "OAuth हटाने में विफल" + }, + "save": { + "success": "OAuth कॉन्फ़िगरेशन सफलतापूर्वक सहेजा गया" + } + }, + "manual": { + "title": "मैनुअल सेटअप", + "description": "अपने वेबहुक सब्सक्रिप्शन को मैन्युअली कॉन्फ़िगर करें", + "logs": { + "title": "अनुरोध लॉग", + "request": "अनुरोध", + "loading": "{{pluginName}} से अनुरोध की प्रतीक्षा कर रहे हैं..." + } + }, + "form": { + "subscriptionName": { + "label": "सदस्यता का नाम", + "placeholder": "सब्सक्रिप्शन नाम दर्ज करें", + "required": "सदस्यता का नाम आवश्यक है" + }, + "callbackUrl": { + "label": "कॉलबैक URL", + "description": "यह URL वेबहुक इवेंट प्राप्त करेगा", + "tooltip": "एक सार्वजनिक रूप से सुलभ एन्डपॉइंट प्रदान करें जो ट्रिगर प्रदाता से कॉलबैक अनुरोध प्राप्त कर सके।", + "placeholder": "उत्पादन हो रहा है...", + "privateAddressWarning": "यह URL आंतरिक पता प्रतीत होता है, जिससे वेबहुक अनुरोध विफल हो सकते हैं। आप TRIGGER_URL को एक सार्वजनिक पते में बदल सकते हैं।" + } + }, + "errors": { + "createFailed": "सब्सक्रिप्शन बनाने में असफल", + "verifyFailed": "प्रमाणीकरण सत्यापित करने में विफल", + "authFailed": "प्राधिकरण असफल", + "networkError": "नेटवर्क त्रुटि, कृपया फिर से प्रयास करें" + } + }, + "events": { + "title": "उपलब्ध कार्यक्रम", + "description": "इवेंट्स जिन्हें यह ट्रिगर प्लगइन सब्सक्राइब कर सकता है", + "empty": "कोई घटना उपलब्ध नहीं है", + "event": "घटना", + "events": "कार्यक्रम", + "actionNum": "{{num}} {{event}} शामिल", + "item": { + "parameters": "{{count}} पैरामीटर", + "noParameters": "कोई पैरामीटर नहीं" + }, + "output": "आउटपुट" + }, + "node": { + "status": { + "warning": "विच्छेद करें" + } + } +} diff --git a/web/i18n/hi-IN/plugin-trigger.ts b/web/i18n/hi-IN/plugin-trigger.ts deleted file mode 100644 index eb8353047d..0000000000 --- a/web/i18n/hi-IN/plugin-trigger.ts +++ /dev/null @@ -1,186 +0,0 @@ -const translation = { - subscription: { - title: 'सदस्यताएँ', - listNum: '{{num}} सब्सक्रिप्शन्स', - empty: { - title: 'कोई सदस्यता नहीं', - button: 'नई सब्सक्रिप्शन', - }, - createButton: { - oauth: 'OAuth के साथ नई सदस्यता', - apiKey: 'एपीआई कुंजी के साथ नया सब्सक्रिप्शन', - manual: 'नई सदस्यता बनाने के लिए URL चिपकाएँ', - }, - createSuccess: 'सब्सक्रिप्शन सफलतापूर्वक बनाया गया', - createFailed: 'सब्सक्रिप्शन बनाने में असफल', - maxCount: 'अधिकतम {{num}} सदस्यताएँ', - selectPlaceholder: 'सदस्यता चुनें', - noSubscriptionSelected: 'कोई सदस्यता नहीं चुनी गई', - subscriptionRemoved: 'सदस्यता हटा दी गई', - list: { - title: 'सदस्यताएँ', - addButton: 'जोड़ें', - tip: 'सब्सक्रिप्शन के माध्यम से इवेंट प्राप्त करें', - item: { - enabled: 'सक्रिय', - disabled: 'विकलांग', - credentialType: { - api_key: 'एपीआई कुंजी', - oauth2: 'OAuth', - unauthorized: 'मैनुअल', - }, - actions: { - delete: 'हटाएँ', - deleteConfirm: { - title: 'क्या आप {{name}} को हटा देना चाहते हैं?', - success: 'सदस्यता {{name}} सफलतापूर्वक हटाई गई', - error: 'सदस्यता {{name}} हटाने में असफल', - content: 'एक बार हटा दी जाने के बाद, इस सदस्यता को पुनर्प्राप्त नहीं किया जा सकता। कृपया पुष्टि करें।', - contentWithApps: 'वर्तमान सदस्यता का संदर्भ {{count}} अनुप्रयोगों द्वारा लिया गया है। इसे हटाने से कॉन्फ़िगर किए गए अनुप्रयोग सदस्यता घटनाओं को प्राप्त करना बंद कर देंगे।', - confirm: 'हटाना पुष्टि करें', - cancel: 'रद्द करें', - confirmInputWarning: 'कृपया पुष्टि करने के लिए सही नाम दर्ज करें।', - confirmInputPlaceholder: 'पुष्टि करने के लिए "{{name}}" दर्ज करें।', - confirmInputTip: 'कृपया पुष्टि करने के लिए “{{name}}” दर्ज करें।', - }, - }, - status: { - active: 'सक्रिय', - inactive: 'निष्क्रिय', - }, - usedByNum: '{{num}} वर्कफ़्लो द्वारा उपयोग किया गया', - noUsed: 'कोई वर्कफ़्लो उपयोग नहीं किया गया', - }, - }, - addType: { - title: 'सदस्यता जोड़ें', - description: 'निर्धारित करने के लिए चुनें कि आप अपनी ट्रिगर सदस्यता कैसे बनाना चाहते हैं', - options: { - apikey: { - title: 'एपीआई कुंजी के साथ बनाएं', - description: 'API क्रेडेंशियल का उपयोग करके स्वचालित रूप से सब्सक्रिप्शन बनाएं', - }, - oauth: { - title: 'OAuth के साथ बनाएं', - description: 'सदस्यता बनाने के लिए तृतीय-पक्ष प्लेटफ़ॉर्म के साथ प्राधिकृत करें', - clientSettings: 'OAuth क्लाइंट सेटिंग्स', - clientTitle: 'OAuth क्लाइंट', - default: 'डिफ़ॉल्ट', - custom: 'कस्टम', - }, - manual: { - title: 'मैनुअल सेटअप', - description: 'नई सदस्यता बनाने के लिए URL चिपकाएँ', - tip: 'थर्ड-पार्टी प्लेटफ़ॉर्म पर URL मैन्युअली कॉन्फ़िगर करें', - }, - }, - }, - }, - modal: { - steps: { - verify: 'सत्यापित करें', - configuration: 'कॉन्फ़िगरेशन', - }, - common: { - cancel: 'रद्द करें', - back: 'वापस', - next: 'अगला', - create: 'बनाएँ', - verify: 'सत्यापित करें', - authorize: 'अधिकार देना', - creating: 'बना रहा हूँ...', - verifying: 'सत्यापित किया जा रहा है...', - authorizing: 'अधिकृत किया जा रहा है...', - }, - oauthRedirectInfo: 'चूंकि इस टूल प्रदाता के लिए कोई सिस्टम क्लाइंट सीक्रेट्स नहीं मिले, इसलिए इसे मैनुअली सेटअप करने की आवश्यकता है, redirect_uri के लिए कृपया उपयोग करें', - apiKey: { - title: 'एपीआई कुंजी के साथ बनाएं', - verify: { - title: 'क्रेडेंशियल्स सत्यापित करें', - description: 'कृपया पहुँच सत्यापित करने के लिए अपने API क्रेडेंशियल्स प्रदान करें', - error: 'सत्यापन विफल हुआ। कृपया अपनी API कुंजी जांचें।', - success: 'प्रमाण-पत्र सफलतापूर्वक सत्यापित किए गए', - }, - configuration: { - title: 'सदस्यता कॉन्फ़िगर करें', - description: 'अपनी सदस्यता सेटिंग्स सेट करें', - }, - }, - oauth: { - title: 'OAuth के साथ बनाएं', - authorization: { - title: 'OAuth प्राधिकरण', - description: 'अपने खाते तक पहुँचने के लिए Dify को अधिकृत करें', - redirectUrl: 'पुनःमार्गित करें URL', - redirectUrlHelp: 'अपने OAuth ऐप कॉन्फ़िगरेशन में इस URL का उपयोग करें', - authorizeButton: '{{provider}} के साथ प्राधिकृत करें', - waitingAuth: 'अनुमति की प्रतीक्षा कर रहे हैं...', - authSuccess: 'प्राधिकरण सफल', - authFailed: 'OAuth प्राधिकरण जानकारी प्राप्त करने में विफल', - waitingJump: 'अधिकृत, कूदने की प्रतीक्षा कर रहा है', - }, - configuration: { - title: 'सदस्यता कॉन्फ़िगर करें', - description: 'अधिकार के बाद अपनी सदस्यता पैरामीटर सेट करें', - success: 'OAuth कॉन्फ़िगरेशन सफल', - failed: 'OAuth कॉन्फ़िगरेशन विफल हुआ', - }, - remove: { - success: 'OAuth सफलतापूर्वक हटा दिया गया', - failed: 'OAuth हटाने में विफल', - }, - save: { - success: 'OAuth कॉन्फ़िगरेशन सफलतापूर्वक सहेजा गया', - }, - }, - manual: { - title: 'मैनुअल सेटअप', - description: 'अपने वेबहुक सब्सक्रिप्शन को मैन्युअली कॉन्फ़िगर करें', - logs: { - title: 'अनुरोध लॉग', - request: 'अनुरोध', - loading: '{{pluginName}} से अनुरोध की प्रतीक्षा कर रहे हैं...', - }, - }, - form: { - subscriptionName: { - label: 'सदस्यता का नाम', - placeholder: 'सब्सक्रिप्शन नाम दर्ज करें', - required: 'सदस्यता का नाम आवश्यक है', - }, - callbackUrl: { - label: 'कॉलबैक URL', - description: 'यह URL वेबहुक इवेंट प्राप्त करेगा', - tooltip: 'एक सार्वजनिक रूप से सुलभ एन्डपॉइंट प्रदान करें जो ट्रिगर प्रदाता से कॉलबैक अनुरोध प्राप्त कर सके।', - placeholder: 'उत्पादन हो रहा है...', - privateAddressWarning: 'यह URL आंतरिक पता प्रतीत होता है, जिससे वेबहुक अनुरोध विफल हो सकते हैं। आप TRIGGER_URL को एक सार्वजनिक पते में बदल सकते हैं।', - }, - }, - errors: { - createFailed: 'सब्सक्रिप्शन बनाने में असफल', - verifyFailed: 'प्रमाणीकरण सत्यापित करने में विफल', - authFailed: 'प्राधिकरण असफल', - networkError: 'नेटवर्क त्रुटि, कृपया फिर से प्रयास करें', - }, - }, - events: { - title: 'उपलब्ध कार्यक्रम', - description: 'इवेंट्स जिन्हें यह ट्रिगर प्लगइन सब्सक्राइब कर सकता है', - empty: 'कोई घटना उपलब्ध नहीं है', - event: 'घटना', - events: 'कार्यक्रम', - actionNum: '{{num}} {{event}} शामिल', - item: { - parameters: '{{count}} पैरामीटर', - noParameters: 'कोई पैरामीटर नहीं', - }, - output: 'आउटपुट', - }, - node: { - status: { - warning: 'विच्छेद करें', - }, - }, -} - -export default translation diff --git a/web/i18n/hi-IN/plugin.json b/web/i18n/hi-IN/plugin.json new file mode 100644 index 0000000000..8a8f0a7eeb --- /dev/null +++ b/web/i18n/hi-IN/plugin.json @@ -0,0 +1,323 @@ +{ + "category": { + "models": "मॉडल्स", + "all": "सभी", + "bundles": "बंडल", + "extensions": "एक्सटेंशन्स", + "tools": "उपकरण", + "agents": "एजेंट रणनीतियाँ", + "datasources": "डेटा स्रोत", + "triggers": "ट्रिगर्स" + }, + "categorySingle": { + "extension": "विस्तार", + "bundle": "बंडल", + "tool": "उपकरण", + "agent": "एजेंट रणनीति", + "model": "मॉडल", + "datasource": "डेटा स्रोत", + "trigger": "ट्रिगर" + }, + "list": { + "source": { + "marketplace": "मार्केटप्लेस से इंस्टॉल करें", + "github": "गिटहब से इंस्टॉल करें", + "local": "स्थानीय पैकेज फ़ाइल से स्थापित करें" + }, + "notFound": "कोई प्लगइन नहीं मिला", + "noInstalled": "कोई प्लगइन स्थापित नहीं हैं" + }, + "source": { + "github": "गिटहब", + "local": "स्थानीय पैकेज फ़ाइल", + "marketplace": "बाजार" + }, + "detailPanel": { + "categoryTip": { + "github": "गिटहब से स्थापित किया गया", + "local": "स्थानीय प्लगइन", + "marketplace": "मार्केटप्लेस से स्थापित किया गया", + "debugging": "डिबगिंग प्लगइन" + }, + "operation": { + "info": "प्लगइन जानकारी", + "remove": "हटाएं", + "checkUpdate": "अपडेट जांचें", + "viewDetail": "विवरण देखें", + "install": "स्थापित करें", + "detail": "विवरण", + "update": "अपडेट", + "back": "वापस" + }, + "toolSelector": { + "uninstalledTitle": "उपकरण स्थापित नहीं है", + "auto": "स्वचालित", + "uninstalledLink": "प्लगइन्स में प्रबंधित करें", + "unsupportedTitle": "असमर्थित क्रिया", + "unsupportedContent": "स्थापित प्लगइन संस्करण यह क्रिया प्रदान नहीं करता है।", + "descriptionLabel": "उपकरण का विवरण", + "unsupportedContent2": "संस्करण बदलने के लिए क्लिक करें।", + "placeholder": "एक उपकरण चुनें...", + "title": "उपकरण जोड़ें", + "toolLabel": "उपकरण", + "params": "कारण निर्धारण कॉन्फ़िग", + "empty": "उपकरण जोड़ने के लिए '+' बटन पर क्लिक करें। आप कई उपकरण जोड़ सकते हैं।", + "settings": "उपयोगकर्ता सेटिंग्स", + "uninstalledContent": "यह प्लगइन स्थानीय/गिटहब रिपॉजिटरी से स्थापित किया गया है। कृपया स्थापना के बाद उपयोग करें।", + "paramsTip2": "जब 'स्वचालित' बंद होता है, तो डिफ़ॉल्ट मान का उपयोग किया जाता है।", + "descriptionPlaceholder": "उपकरण के उद्देश्य का संक्षिप्त विवरण, जैसे, किसी विशेष स्थान के लिए तापमान प्राप्त करना।", + "paramsTip1": "एलएलएम अनुमान पैरामीटर को नियंत्रित करता है।", + "toolSetting": "टूल सेटिंग्स", + "unsupportedMCPTool": "वर्तमान में चयनित एजेंट रणनीति प्लगइन संस्करण MCP टूल का समर्थन नहीं करता है।" + }, + "switchVersion": "स्विच संस्करण", + "endpointModalDesc": "एक बार कॉन्फ़िगर होने के बाद, प्लगइन द्वारा API एंडपॉइंट्स के माध्यम से प्रदान की गई सुविधाओं का उपयोग किया जा सकता है।", + "actionNum": "{{num}} {{action}} शामिल है", + "endpointDeleteTip": "एंडपॉइंट हटाएं", + "endpointsDocLink": "दस्तावेज़ देखें", + "disabled": "अक्षम", + "modelNum": "{{num}} मॉडल शामिल हैं", + "endpoints": "एंडपॉइंट्स", + "endpointDeleteContent": "क्या आप {{name}} को हटाना चाहेंगे?", + "serviceOk": "सेवा ठीक है", + "configureTool": "उपकरण कॉन्फ़िगर करें", + "configureApp": "ऐप कॉन्फ़िगर करें", + "endpointDisableContent": "क्या आप {{name}} को अक्षम करना चाहेंगे?", + "endpointDisableTip": "एंडपॉइंट अक्षम करें", + "configureModel": "मॉडल कॉन्फ़िगर करें", + "endpointsEmpty": "एक एंडपॉइंट जोड़ने के लिए '+' बटन पर क्लिक करें", + "endpointModalTitle": "एंडपॉइंट सेटअप करें", + "strategyNum": "{{num}} {{रणनीति}} शामिल", + "endpointsTip": "यह प्लगइन एंडपॉइंट्स के माध्यम से विशिष्ट कार्यक्षमताएँ प्रदान करता है, और आप वर्तमान कार्यक्षेत्र के लिए कई एंडपॉइंट सेट कॉन्फ़िगर कर सकते हैं।", + "deprecation": { + "reason": { + "noMaintainer": "कोई देखभाल करने वाला नहीं", + "ownershipTransferred": "स्वामित्व स्थानांतरित किया गया", + "businessAdjustments": "व्यवसाय समायोजन" + }, + "noReason": "यह प्लगइन अप्रचलित हो गया है और इसे अब अपडेट नहीं किया जाएगा।", + "onlyReason": "इस प्लगइन को {{deprecatedReason}} के कारण अमान्य कर दिया गया है और इसे अब अपडेट नहीं किया जाएगा।", + "fullMessage": "इस प्लगइन को {{deprecatedReason}} के कारण अमान्य कर दिया गया है, और इसे अब अपडेट नहीं किया जाएगा। कृपया इसके बजाय {{-alternativePluginId}} का उपयोग करें।" + } + }, + "debugInfo": { + "viewDocs": "दस्तावेज़ देखें", + "title": "डिबगिंग" + }, + "privilege": { + "whoCanDebug": "कौन प्लगइन्स को डिबग कर सकता है?", + "whoCanInstall": "कौन प्लगइन्स को स्थापित और प्रबंधित कर सकता है?", + "noone": "कोई नहीं", + "everyone": "सभी", + "title": "प्लगइन प्राथमिकताएँ", + "admins": "व्यवस्थापक" + }, + "pluginInfoModal": { + "repository": "भंडार", + "packageName": "पैकेज", + "release": "रिहाई", + "title": "प्लगइन जानकारी" + }, + "action": { + "pluginInfo": "प्लगइन जानकारी", + "checkForUpdates": "अपडेट के लिए जांचें", + "deleteContentLeft": "क्या आप हटाना चाहेंगे", + "deleteContentRight": "प्लगइन?", + "usedInApps": "यह प्लगइन {{num}} ऐप्स में उपयोग किया जा रहा है।", + "delete": "प्लगइन हटाएं" + }, + "installModal": { + "labels": { + "repository": "भंडार", + "package": "पैकेज", + "version": "संस्करण" + }, + "uploadFailed": "अपलोड विफल", + "next": "अगला", + "cancel": "रद्द करें", + "pluginLoadErrorDesc": "यह प्लगइन स्थापित नहीं किया जाएगा", + "back": "पीछे", + "installComplete": "स्थापना पूर्ण", + "installPlugin": "प्लगइन स्थापित करें", + "readyToInstallPackages": "निम्नलिखित {{num}} प्लगइन्स स्थापित करने वाले हैं", + "install": "स्थापित करें", + "close": "करीब", + "uploadingPackage": "{{packageName}} अपलोड हो रहा है...", + "installing": "स्थापित कर रहा है...", + "installedSuccessfully": "स्थापना सफल", + "dropPluginToInstall": "यहां प्लगइन पैकेज ड्रॉप करें ताकि इसे स्थापित किया जा सके", + "readyToInstallPackage": "निम्नलिखित प्लगइन स्थापित करने वाले हैं", + "pluginLoadError": "प्लगइन लोड त्रुटि", + "installFailed": "स्थापना विफल हो गई", + "readyToInstall": "निम्नलिखित प्लगइन स्थापित करने वाले हैं", + "installFailedDesc": "प्लगइन स्थापित करने में विफल रहा।", + "installedSuccessfullyDesc": "प्लगइन सफलतापूर्वक स्थापित किया गया है।", + "fromTrustSource": "कृपया सुनिश्चित करें कि आप केवल एक विश्वसनीय स्रोत से प्लगइन्स स्थापित करें।", + "installWarning": "इस प्लगइन को स्थापित करने की अनुमति नहीं है।" + }, + "installFromGitHub": { + "gitHubRepo": "गिटहब रिपॉजिटरी", + "selectPackage": "पैकेज चुनें", + "selectVersionPlaceholder": "कृपया एक संस्करण चुनें", + "selectVersion": "संस्करण चुनें", + "updatePlugin": "गिटहब से प्लगइन अपडेट करें", + "installPlugin": "GitHub से प्लगइन स्थापित करें", + "selectPackagePlaceholder": "कृपया एक पैकेज चुनें", + "installNote": "कृपया सुनिश्चित करें कि आप केवल एक विश्वसनीय स्रोत से प्लगइन्स स्थापित करें।", + "installedSuccessfully": "स्थापना सफल", + "installFailed": "स्थापना विफल हो गई", + "uploadFailed": "अपलोड विफल" + }, + "upgrade": { + "title": "प्लगइन स्थापित करें", + "close": "करीब", + "upgrade": "स्थापित करें", + "upgrading": "स्थापित कर रहा है...", + "successfulTitle": "स्थापना सफल", + "description": "निम्नलिखित प्लगइन स्थापित करने वाले हैं", + "usedInApps": "{{num}} ऐप्स में उपयोग किया गया" + }, + "error": { + "inValidGitHubUrl": "अमान्य GitHub URL। कृपया निम्नलिखित प्रारूप में एक मान्य URL दर्ज करें: https://github.com/owner/repo", + "noReleasesFound": "कोई रिलीज़ नहीं मिली। कृपया GitHub रिपॉजिटरी या इनपुट URL की जांच करें।", + "fetchReleasesError": "रिलीज़ प्राप्त करने में असमर्थ। कृपया बाद में फिर से प्रयास करें।" + }, + "marketplace": { + "sortOption": { + "mostPopular": "सबसे लोकप्रिय", + "newlyReleased": "नवीनतम जारी किया गया", + "firstReleased": "पहली बार जारी किया गया", + "recentlyUpdated": "हाल ही में अपडेट किया गया" + }, + "pluginsResult": "{{num}} परिणाम", + "empower": "अपने एआई विकास को सशक्त बनाएं", + "noPluginFound": "कोई प्लगइन नहीं मिला", + "viewMore": "और देखें", + "moreFrom": "मार्केटप्लेस से अधिक", + "and": "और", + "difyMarketplace": "डिफाई मार्केटप्लेस", + "sortBy": "काला शहर", + "discover": "खोजें", + "partnerTip": "Dify भागीदार द्वारा सत्यापित", + "verifiedTip": "डिफाई द्वारा सत्यापित" + }, + "task": { + "clearAll": "सभी साफ करें", + "installing": "{{installingLength}} प्लगइन्स स्थापित कर रहे हैं, 0 पूरा हुआ।", + "installError": "{{errorLength}} प्लगइन्स स्थापित करने में विफल रहे, देखने के लिए क्लिक करें", + "installedError": "{{errorLength}} प्लगइन्स स्थापित करने में विफल रहे", + "installingWithError": "{{installingLength}} प्लगइन्स स्थापित कर रहे हैं, {{successLength}} सफल, {{errorLength}} विफल", + "installingWithSuccess": "{{installingLength}} प्लगइन्स स्थापित कर रहे हैं, {{successLength}} सफल।", + "installSuccess": "{{successLength}} plugins installed successfully", + "installed": "Installed", + "runningPlugins": "Installing Plugins", + "successPlugins": "Successfully Installed Plugins", + "errorPlugins": "Failed to Install Plugins" + }, + "installFrom": "से इंस्टॉल करें", + "fromMarketplace": "मार्केटप्लेस से", + "searchPlugins": "खोज प्लगइन्स", + "install": "{{num}} इंस्टॉलेशन", + "allCategories": "सभी श्रेणियाँ", + "search": "खोज", + "searchTools": "खोज उपकरण...", + "searchCategories": "खोज श्रेणियाँ", + "installAction": "स्थापित करें", + "searchInMarketplace": "मार्केटप्लेस में खोजें", + "installPlugin": "प्लगइन स्थापित करें", + "findMoreInMarketplace": "मार्केटप्लेस में और खोजें", + "endpointsEnabled": "{{num}} एंडपॉइंट्स के सेट सक्षम किए गए", + "from": "से", + "metadata": { + "title": "प्लगइन्स" + }, + "difyVersionNotCompatible": "वर्तमान डिफाई संस्करण इस प्लगइन के साथ संगत नहीं है, कृपया आवश्यक न्यूनतम संस्करण में अपग्रेड करें: {{minimalDifyVersion}}", + "requestAPlugin": "एक प्लगइन का अनुरोध करें", + "publishPlugins": "प्लगइन प्रकाशित करें", + "auth": { + "default": "डिफ़ॉल्ट", + "useOAuth": "OAuth का उपयोग करें", + "addOAuth": "OAuth जोड़ें", + "authorizations": "अनुमतियाँ", + "workspaceDefault": "कार्यस्थल डिफ़ॉल्ट", + "setupOAuth": "OAuth क्लाइंट सेट करें", + "custom": "कस्टम", + "addApi": "API कुंज जोड़ें", + "saveOnly": "बस सहेजें", + "useApi": "API कुंजी का उपयोग करें", + "authRemoved": "प्राधिकरण हटाया गया", + "useOAuthAuth": "OAuth प्राधिकरण का उपयोग करें", + "oauthClient": "OAuth क्लाइंट", + "setDefault": "डिफ़ॉल्ट के रूप में सेट करें", + "authorizationName": "अनु autorización नाम", + "saveAndAuth": "सहेजें और अधिकृत करें", + "useApiAuth": "एपीआई कुंजी प्राधिकरण कॉन्फ़िगरेशन", + "oauthClientSettings": "OAuth क्लाइंट सेटिंग्स", + "authorization": "अधिकार", + "useApiAuthDesc": "क्रेडेंशियल्स कॉन्फ़िगर करने के बाद, कार्यक्षेत्र के सभी सदस्यों को एप्लिकेशन को व्यवस्थित करते समय इस उपकरण का उपयोग करने की अनुमति होती है।", + "clientInfo": "चूंकि इस टूल प्रदाता के लिए कोई सिस्टम क्लाइंट रहस्य नहीं पाए गए हैं, इसलिए इसे मैन्युअल रूप से सेटअप करना आवश्यक है, कृपया redirect_uri का उपयोग करें", + "unavailable": "अप्राप्त", + "customCredentialUnavailable": "कस्टम क्रेडेंशियल वर्तमान में उपलब्ध नहीं हैं", + "credentialUnavailable": "वर्तमान में क्रेडेंशियल्स उपलब्ध नहीं हैं। कृपया प्रशासन से संपर्क करें।", + "credentialUnavailableInButton": "प्रमाण पत्र उपलब्ध नहीं है", + "connectedWorkspace": "संयुक्त कार्यक्षेत्र", + "emptyAuth": "कृपया प्रमाणीकरण कॉन्फ़िगर करें" + }, + "deprecated": "अनुशंसित नहीं", + "autoUpdate": { + "strategy": { + "disabled": { + "name": "अक्षम", + "description": "प्लगइन्स स्वचालित रूप से अपडेट नहीं होंगे" + }, + "fixOnly": { + "name": "केवल ठीक करें", + "selectedDescription": "केवल पैच संस्करणों के लिए स्वचालित अपडेट", + "description": "केवल पैच संस्करणों के लिए स्वचालित अद्यतन (जैसे, 1.0.1 → 1.0.2)। छोटा संस्करण परिवर्तन अद्यतन को ट्रिगर नहीं करेगा।" + }, + "latest": { + "name": "नवीनतम", + "selectedDescription": "हमेशा नवीनतम संस्करण पर अद्यतन करें", + "description": "हमेशा नवीनतम संस्करण पर अद्यतन करें" + } + }, + "upgradeMode": { + "all": "सभी अपडेट करें", + "partial": "केवल चयनित", + "exclude": "चुने हुए को बाहर करें" + }, + "upgradeModePlaceholder": { + "partial": "केवल चयनित प्लगइन्स स्वतः अपडेट होंगे। वर्तमान में कोई प्लगइन चयनित नहीं है, इसलिए कोई प्लगइन स्वतः अपडेट नहीं होगा।", + "exclude": "चुने हुए प्लगइन्स अपने आप अपडेट नहीं होंगे" + }, + "operation": { + "clearAll": "सभी हटाएं", + "select": "प्लगइन्स चुनें" + }, + "pluginDowngradeWarning": { + "downgrade": "फिर भी डाउनग्रेड करें", + "title": "प्लगइन डाउनग्रेड", + "exclude": "स्वतः अपडेट से बाहर करें", + "description": "इस प्लगइन के लिए ऑटो-अपडेट वर्तमान में सक्षम है। संस्करण को डाउनग्रेड करने से आपके परिवर्तनों को अगली स्वचालित अद्यतन के दौरान ओवरराइट किया जा सकता है।" + }, + "noPluginPlaceholder": { + "noFound": "कोई प्लगइन्स नहीं मिले", + "noInstalled": "कोई प्लगइन स्थापित नहीं है" + }, + "updateTimeTitle": "अद्यतन समय", + "updateSettings": "सेटिंग्स अपडेट करें", + "automaticUpdates": "स्वचालित अपडेट", + "partialUPdate": "केवल निम्नलिखित {{num}} प्लगइन्स स्वचालित रूप से अपडेट होंगे", + "nextUpdateTime": "अगली ऑटो-अपडेट: {{time}}", + "updateTime": "अद्यतन समय", + "specifyPluginsToUpdate": "अपडेट करने के लिए प्लगइन्स निर्दिष्ट करें", + "changeTimezone": "समय क्षेत्र बदलने के लिए, सेटिंग्स पर जाएं", + "excludeUpdate": "निम्नलिखित {{num}} प्लगइन्स स्वचालित रूप से अपडेट नहीं होंगे" + }, + "readmeInfo": { + "title": "पढ़ें मुझे", + "needHelpCheckReadme": "मदद चाहिए? README देखें।", + "noReadmeAvailable": "कोई README उपलब्ध नहीं है", + "failedToFetch": "README लाने में असफल" + } +} diff --git a/web/i18n/hi-IN/plugin.ts b/web/i18n/hi-IN/plugin.ts deleted file mode 100644 index 8e65877b58..0000000000 --- a/web/i18n/hi-IN/plugin.ts +++ /dev/null @@ -1,355 +0,0 @@ -const translation = { - category: { - models: 'मॉडल्स', - all: 'सभी', - bundles: 'बंडल', - extensions: 'एक्सटेंशन्स', - tools: 'उपकरण', - agents: 'एजेंट रणनीतियाँ', - datasources: 'डेटा स्रोत', - triggers: 'ट्रिगर्स', - }, - categorySingle: { - extension: 'विस्तार', - bundle: 'बंडल', - tool: 'उपकरण', - agent: 'एजेंट रणनीति', - model: 'मॉडल', - datasource: 'डेटा स्रोत', - trigger: 'ट्रिगर', - }, - list: { - source: { - marketplace: 'मार्केटप्लेस से इंस्टॉल करें', - github: 'गिटहब से इंस्टॉल करें', - local: 'स्थानीय पैकेज फ़ाइल से स्थापित करें', - }, - notFound: 'कोई प्लगइन नहीं मिला', - noInstalled: 'कोई प्लगइन स्थापित नहीं हैं', - }, - source: { - github: 'गिटहब', - local: 'स्थानीय पैकेज फ़ाइल', - marketplace: 'बाजार', - }, - detailPanel: { - categoryTip: { - github: 'गिटहब से स्थापित किया गया', - local: 'स्थानीय प्लगइन', - marketplace: 'मार्केटप्लेस से स्थापित किया गया', - debugging: 'डिबगिंग प्लगइन', - }, - operation: { - info: 'प्लगइन जानकारी', - remove: 'हटाएं', - checkUpdate: 'अपडेट जांचें', - viewDetail: 'विवरण देखें', - install: 'स्थापित करें', - detail: 'विवरण', - update: 'अपडेट', - back: 'वापस', - }, - toolSelector: { - uninstalledTitle: 'उपकरण स्थापित नहीं है', - auto: 'स्वचालित', - uninstalledLink: 'प्लगइन्स में प्रबंधित करें', - unsupportedTitle: 'असमर्थित क्रिया', - unsupportedContent: - 'स्थापित प्लगइन संस्करण यह क्रिया प्रदान नहीं करता है।', - descriptionLabel: 'उपकरण का विवरण', - unsupportedContent2: 'संस्करण बदलने के लिए क्लिक करें।', - placeholder: 'एक उपकरण चुनें...', - title: 'उपकरण जोड़ें', - toolLabel: 'उपकरण', - params: 'कारण निर्धारण कॉन्फ़िग', - empty: - 'उपकरण जोड़ने के लिए \'+\' बटन पर क्लिक करें। आप कई उपकरण जोड़ सकते हैं।', - settings: 'उपयोगकर्ता सेटिंग्स', - uninstalledContent: - 'यह प्लगइन स्थानीय/गिटहब रिपॉजिटरी से स्थापित किया गया है। कृपया स्थापना के बाद उपयोग करें।', - paramsTip2: - 'जब \'स्वचालित\' बंद होता है, तो डिफ़ॉल्ट मान का उपयोग किया जाता है।', - descriptionPlaceholder: - 'उपकरण के उद्देश्य का संक्षिप्त विवरण, जैसे, किसी विशेष स्थान के लिए तापमान प्राप्त करना।', - paramsTip1: 'एलएलएम अनुमान पैरामीटर को नियंत्रित करता है।', - toolSetting: 'टूल सेटिंग्स', - unsupportedMCPTool: - 'वर्तमान में चयनित एजेंट रणनीति प्लगइन संस्करण MCP टूल का समर्थन नहीं करता है।', - }, - switchVersion: 'स्विच संस्करण', - endpointModalDesc: - 'एक बार कॉन्फ़िगर होने के बाद, प्लगइन द्वारा API एंडपॉइंट्स के माध्यम से प्रदान की गई सुविधाओं का उपयोग किया जा सकता है।', - actionNum: '{{num}} {{action}} शामिल है', - endpointDeleteTip: 'एंडपॉइंट हटाएं', - endpointsDocLink: 'दस्तावेज़ देखें', - disabled: 'अक्षम', - modelNum: '{{num}} मॉडल शामिल हैं', - endpoints: 'एंडपॉइंट्स', - endpointDeleteContent: 'क्या आप {{name}} को हटाना चाहेंगे?', - serviceOk: 'सेवा ठीक है', - configureTool: 'उपकरण कॉन्फ़िगर करें', - configureApp: 'ऐप कॉन्फ़िगर करें', - endpointDisableContent: 'क्या आप {{name}} को अक्षम करना चाहेंगे?', - endpointDisableTip: 'एंडपॉइंट अक्षम करें', - configureModel: 'मॉडल कॉन्फ़िगर करें', - endpointsEmpty: 'एक एंडपॉइंट जोड़ने के लिए \'+\' बटन पर क्लिक करें', - endpointModalTitle: 'एंडपॉइंट सेटअप करें', - strategyNum: '{{num}} {{रणनीति}} शामिल', - endpointsTip: - 'यह प्लगइन एंडपॉइंट्स के माध्यम से विशिष्ट कार्यक्षमताएँ प्रदान करता है, और आप वर्तमान कार्यक्षेत्र के लिए कई एंडपॉइंट सेट कॉन्फ़िगर कर सकते हैं।', - deprecation: { - reason: { - noMaintainer: 'कोई देखभाल करने वाला नहीं', - ownershipTransferred: 'स्वामित्व स्थानांतरित किया गया', - businessAdjustments: 'व्यवसाय समायोजन', - }, - noReason: 'यह प्लगइन अप्रचलित हो गया है और इसे अब अपडेट नहीं किया जाएगा।', - onlyReason: - 'इस प्लगइन को {{deprecatedReason}} के कारण अमान्य कर दिया गया है और इसे अब अपडेट नहीं किया जाएगा।', - fullMessage: - 'इस प्लगइन को {{deprecatedReason}} के कारण अमान्य कर दिया गया है, और इसे अब अपडेट नहीं किया जाएगा। कृपया इसके बजाय {{-alternativePluginId}} का उपयोग करें।', - }, - }, - debugInfo: { - viewDocs: 'दस्तावेज़ देखें', - title: 'डिबगिंग', - }, - privilege: { - whoCanDebug: 'कौन प्लगइन्स को डिबग कर सकता है?', - whoCanInstall: 'कौन प्लगइन्स को स्थापित और प्रबंधित कर सकता है?', - noone: 'कोई नहीं', - everyone: 'सभी', - title: 'प्लगइन प्राथमिकताएँ', - admins: 'व्यवस्थापक', - }, - pluginInfoModal: { - repository: 'भंडार', - packageName: 'पैकेज', - release: 'रिहाई', - title: 'प्लगइन जानकारी', - }, - action: { - pluginInfo: 'प्लगइन जानकारी', - checkForUpdates: 'अपडेट के लिए जांचें', - deleteContentLeft: 'क्या आप हटाना चाहेंगे', - deleteContentRight: 'प्लगइन?', - usedInApps: 'यह प्लगइन {{num}} ऐप्स में उपयोग किया जा रहा है।', - delete: 'प्लगइन हटाएं', - }, - installModal: { - labels: { - repository: 'भंडार', - package: 'पैकेज', - version: 'संस्करण', - }, - uploadFailed: 'अपलोड विफल', - next: 'अगला', - cancel: 'रद्द करें', - pluginLoadErrorDesc: 'यह प्लगइन स्थापित नहीं किया जाएगा', - back: 'पीछे', - installComplete: 'स्थापना पूर्ण', - installPlugin: 'प्लगइन स्थापित करें', - readyToInstallPackages: 'निम्नलिखित {{num}} प्लगइन्स स्थापित करने वाले हैं', - install: 'स्थापित करें', - close: 'करीब', - uploadingPackage: '{{packageName}} अपलोड हो रहा है...', - installing: 'स्थापित कर रहा है...', - installedSuccessfully: 'स्थापना सफल', - dropPluginToInstall: - 'यहां प्लगइन पैकेज ड्रॉप करें ताकि इसे स्थापित किया जा सके', - readyToInstallPackage: 'निम्नलिखित प्लगइन स्थापित करने वाले हैं', - pluginLoadError: 'प्लगइन लोड त्रुटि', - installFailed: 'स्थापना विफल हो गई', - readyToInstall: 'निम्नलिखित प्लगइन स्थापित करने वाले हैं', - installFailedDesc: 'प्लगइन स्थापित करने में विफल रहा।', - installedSuccessfullyDesc: 'प्लगइन सफलतापूर्वक स्थापित किया गया है।', - fromTrustSource: - 'कृपया सुनिश्चित करें कि आप केवल एक विश्वसनीय स्रोत से प्लगइन्स स्थापित करें।', - installWarning: 'इस प्लगइन को स्थापित करने की अनुमति नहीं है।', - }, - installFromGitHub: { - gitHubRepo: 'गिटहब रिपॉजिटरी', - selectPackage: 'पैकेज चुनें', - selectVersionPlaceholder: 'कृपया एक संस्करण चुनें', - selectVersion: 'संस्करण चुनें', - updatePlugin: 'गिटहब से प्लगइन अपडेट करें', - installPlugin: 'GitHub से प्लगइन स्थापित करें', - selectPackagePlaceholder: 'कृपया एक पैकेज चुनें', - installNote: - 'कृपया सुनिश्चित करें कि आप केवल एक विश्वसनीय स्रोत से प्लगइन्स स्थापित करें।', - installedSuccessfully: 'स्थापना सफल', - installFailed: 'स्थापना विफल हो गई', - uploadFailed: 'अपलोड विफल', - }, - upgrade: { - title: 'प्लगइन स्थापित करें', - close: 'करीब', - upgrade: 'स्थापित करें', - upgrading: 'स्थापित कर रहा है...', - successfulTitle: 'स्थापना सफल', - description: 'निम्नलिखित प्लगइन स्थापित करने वाले हैं', - usedInApps: '{{num}} ऐप्स में उपयोग किया गया', - }, - error: { - inValidGitHubUrl: - 'अमान्य GitHub URL। कृपया निम्नलिखित प्रारूप में एक मान्य URL दर्ज करें: https://github.com/owner/repo', - noReleasesFound: - 'कोई रिलीज़ नहीं मिली। कृपया GitHub रिपॉजिटरी या इनपुट URL की जांच करें।', - fetchReleasesError: - 'रिलीज़ प्राप्त करने में असमर्थ। कृपया बाद में फिर से प्रयास करें।', - }, - marketplace: { - sortOption: { - mostPopular: 'सबसे लोकप्रिय', - newlyReleased: 'नवीनतम जारी किया गया', - firstReleased: 'पहली बार जारी किया गया', - recentlyUpdated: 'हाल ही में अपडेट किया गया', - }, - pluginsResult: '{{num}} परिणाम', - empower: 'अपने एआई विकास को सशक्त बनाएं', - noPluginFound: 'कोई प्लगइन नहीं मिला', - viewMore: 'और देखें', - moreFrom: 'मार्केटप्लेस से अधिक', - and: 'और', - difyMarketplace: 'डिफाई मार्केटप्लेस', - sortBy: 'काला शहर', - discover: 'खोजें', - partnerTip: 'Dify भागीदार द्वारा सत्यापित', - verifiedTip: 'डिफाई द्वारा सत्यापित', - }, - task: { - clearAll: 'सभी साफ करें', - installing: '{{installingLength}} प्लगइन्स स्थापित कर रहे हैं, 0 पूरा हुआ।', - installError: - '{{errorLength}} प्लगइन्स स्थापित करने में विफल रहे, देखने के लिए क्लिक करें', - installedError: '{{errorLength}} प्लगइन्स स्थापित करने में विफल रहे', - installingWithError: - '{{installingLength}} प्लगइन्स स्थापित कर रहे हैं, {{successLength}} सफल, {{errorLength}} विफल', - installingWithSuccess: - '{{installingLength}} प्लगइन्स स्थापित कर रहे हैं, {{successLength}} सफल।', - installSuccess: '{{successLength}} plugins installed successfully', - installed: 'Installed', - runningPlugins: 'Installing Plugins', - successPlugins: 'Successfully Installed Plugins', - errorPlugins: 'Failed to Install Plugins', - }, - installFrom: 'से इंस्टॉल करें', - fromMarketplace: 'मार्केटप्लेस से', - searchPlugins: 'खोज प्लगइन्स', - install: '{{num}} इंस्टॉलेशन', - allCategories: 'सभी श्रेणियाँ', - search: 'खोज', - searchTools: 'खोज उपकरण...', - searchCategories: 'खोज श्रेणियाँ', - installAction: 'स्थापित करें', - searchInMarketplace: 'मार्केटप्लेस में खोजें', - installPlugin: 'प्लगइन स्थापित करें', - findMoreInMarketplace: 'मार्केटप्लेस में और खोजें', - endpointsEnabled: '{{num}} एंडपॉइंट्स के सेट सक्षम किए गए', - from: 'से', - metadata: { - title: 'प्लगइन्स', - }, - difyVersionNotCompatible: - 'वर्तमान डिफाई संस्करण इस प्लगइन के साथ संगत नहीं है, कृपया आवश्यक न्यूनतम संस्करण में अपग्रेड करें: {{minimalDifyVersion}}', - requestAPlugin: 'एक प्लगइन का अनुरोध करें', - publishPlugins: 'प्लगइन प्रकाशित करें', - auth: { - default: 'डिफ़ॉल्ट', - useOAuth: 'OAuth का उपयोग करें', - addOAuth: 'OAuth जोड़ें', - authorizations: 'अनुमतियाँ', - workspaceDefault: 'कार्यस्थल डिफ़ॉल्ट', - setupOAuth: 'OAuth क्लाइंट सेट करें', - custom: 'कस्टम', - addApi: 'API कुंज जोड़ें', - saveOnly: 'बस सहेजें', - useApi: 'API कुंजी का उपयोग करें', - authRemoved: 'प्राधिकरण हटाया गया', - useOAuthAuth: 'OAuth प्राधिकरण का उपयोग करें', - oauthClient: 'OAuth क्लाइंट', - setDefault: 'डिफ़ॉल्ट के रूप में सेट करें', - authorizationName: 'अनु autorización नाम', - saveAndAuth: 'सहेजें और अधिकृत करें', - useApiAuth: 'एपीआई कुंजी प्राधिकरण कॉन्फ़िगरेशन', - oauthClientSettings: 'OAuth क्लाइंट सेटिंग्स', - authorization: 'अधिकार', - useApiAuthDesc: - 'क्रेडेंशियल्स कॉन्फ़िगर करने के बाद, कार्यक्षेत्र के सभी सदस्यों को एप्लिकेशन को व्यवस्थित करते समय इस उपकरण का उपयोग करने की अनुमति होती है।', - clientInfo: - 'चूंकि इस टूल प्रदाता के लिए कोई सिस्टम क्लाइंट रहस्य नहीं पाए गए हैं, इसलिए इसे मैन्युअल रूप से सेटअप करना आवश्यक है, कृपया redirect_uri का उपयोग करें', - unavailable: 'अप्राप्त', - customCredentialUnavailable: - 'कस्टम क्रेडेंशियल वर्तमान में उपलब्ध नहीं हैं', - credentialUnavailable: - 'वर्तमान में क्रेडेंशियल्स उपलब्ध नहीं हैं। कृपया प्रशासन से संपर्क करें।', - credentialUnavailableInButton: 'प्रमाण पत्र उपलब्ध नहीं है', - connectedWorkspace: 'संयुक्त कार्यक्षेत्र', - emptyAuth: 'कृपया प्रमाणीकरण कॉन्फ़िगर करें', - }, - deprecated: 'अनुशंसित नहीं', - autoUpdate: { - strategy: { - disabled: { - name: 'अक्षम', - description: 'प्लगइन्स स्वचालित रूप से अपडेट नहीं होंगे', - }, - fixOnly: { - name: 'केवल ठीक करें', - selectedDescription: 'केवल पैच संस्करणों के लिए स्वचालित अपडेट', - description: - 'केवल पैच संस्करणों के लिए स्वचालित अद्यतन (जैसे, 1.0.1 → 1.0.2)। छोटा संस्करण परिवर्तन अद्यतन को ट्रिगर नहीं करेगा।', - }, - latest: { - name: 'नवीनतम', - selectedDescription: 'हमेशा नवीनतम संस्करण पर अद्यतन करें', - description: 'हमेशा नवीनतम संस्करण पर अद्यतन करें', - }, - }, - upgradeMode: { - all: 'सभी अपडेट करें', - partial: 'केवल चयनित', - exclude: 'चुने हुए को बाहर करें', - }, - upgradeModePlaceholder: { - partial: - 'केवल चयनित प्लगइन्स स्वतः अपडेट होंगे। वर्तमान में कोई प्लगइन चयनित नहीं है, इसलिए कोई प्लगइन स्वतः अपडेट नहीं होगा।', - exclude: 'चुने हुए प्लगइन्स अपने आप अपडेट नहीं होंगे', - }, - operation: { - clearAll: 'सभी हटाएं', - select: 'प्लगइन्स चुनें', - }, - pluginDowngradeWarning: { - downgrade: 'फिर भी डाउनग्रेड करें', - title: 'प्लगइन डाउनग्रेड', - exclude: 'स्वतः अपडेट से बाहर करें', - description: - 'इस प्लगइन के लिए ऑटो-अपडेट वर्तमान में सक्षम है। संस्करण को डाउनग्रेड करने से आपके परिवर्तनों को अगली स्वचालित अद्यतन के दौरान ओवरराइट किया जा सकता है।', - }, - noPluginPlaceholder: { - noFound: 'कोई प्लगइन्स नहीं मिले', - noInstalled: 'कोई प्लगइन स्थापित नहीं है', - }, - updateTimeTitle: 'अद्यतन समय', - updateSettings: 'सेटिंग्स अपडेट करें', - automaticUpdates: 'स्वचालित अपडेट', - partialUPdate: - 'केवल निम्नलिखित {{num}} प्लगइन्स स्वचालित रूप से अपडेट होंगे', - nextUpdateTime: 'अगली ऑटो-अपडेट: {{time}}', - updateTime: 'अद्यतन समय', - specifyPluginsToUpdate: 'अपडेट करने के लिए प्लगइन्स निर्दिष्ट करें', - changeTimezone: - 'समय क्षेत्र बदलने के लिए, सेटिंग्स पर जाएं', - excludeUpdate: - 'निम्नलिखित {{num}} प्लगइन्स स्वचालित रूप से अपडेट नहीं होंगे', - }, - readmeInfo: { - title: 'पढ़ें मुझे', - needHelpCheckReadme: 'मदद चाहिए? README देखें।', - noReadmeAvailable: 'कोई README उपलब्ध नहीं है', - failedToFetch: 'README लाने में असफल', - }, -} - -export default translation diff --git a/web/i18n/hi-IN/register.json b/web/i18n/hi-IN/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/hi-IN/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/hi-IN/register.ts b/web/i18n/hi-IN/register.ts deleted file mode 100644 index e2410dd34b..0000000000 --- a/web/i18n/hi-IN/register.ts +++ /dev/null @@ -1,3 +0,0 @@ -const translation = {} - -export default translation diff --git a/web/i18n/hi-IN/run-log.json b/web/i18n/hi-IN/run-log.json new file mode 100644 index 0000000000..a7d189e6b4 --- /dev/null +++ b/web/i18n/hi-IN/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "इनपुट", + "result": "नतीजा", + "detail": "विवरण", + "tracing": "ट्रेसिंग", + "resultPanel": { + "status": "स्थिति", + "time": "समय की अवधि", + "tokens": "कुल टोकन्स" + }, + "meta": { + "title": "मेटाडाटा", + "status": "स्थिति", + "version": "वर्ज़न", + "executor": "एक्ज़ीक्यूटर", + "startTime": "शुरुआत की समय", + "time": "समय की अवधि", + "tokens": "कुल टोकन्स", + "steps": "चालाने के चरण" + }, + "resultEmpty": { + "title": "इस रन में सिर्फ JSON फार्मेट का नतीजा है,", + "tipLeft": "लेखक ", + "link": "विवरण पैनल", + "tipRight": " देखें।" + }, + "actionLogs": "क्रिया लॉग", + "circularInvocationTip": "वर्तमान कार्यप्रवाह में उपकरणों/नोड्स का वृत्ताकार आह्वान है।" +} diff --git a/web/i18n/hi-IN/run-log.ts b/web/i18n/hi-IN/run-log.ts deleted file mode 100644 index c53d4a5d5b..0000000000 --- a/web/i18n/hi-IN/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -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: ' देखें।', - }, - actionLogs: 'क्रिया लॉग', - circularInvocationTip: 'वर्तमान कार्यप्रवाह में उपकरणों/नोड्स का वृत्ताकार आह्वान है।', -} - -export default translation diff --git a/web/i18n/hi-IN/share.json b/web/i18n/hi-IN/share.json new file mode 100644 index 0000000000..5639d7bee4 --- /dev/null +++ b/web/i18n/hi-IN/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "आपका स्वागत है", + "appUnavailable": "ऐप उपलब्ध नहीं है", + "appUnknownError": "अज्ञात त्रुटि, कृपया पुनः प्रयास करें" + }, + "chat": { + "newChat": "नया चैट", + "pinnedTitle": "पिन किया गया", + "unpinnedTitle": "चैट", + "newChatDefaultName": "नया संवाद", + "resetChat": "संवाद रीसेट करें", + "poweredBy": "संचालित है", + "prompt": "प्रॉम्प्ट", + "privatePromptConfigTitle": "संवाद सेटिंग्स", + "publicPromptConfigTitle": "प्रारंभिक प्रॉम्प्ट", + "configStatusDes": "शुरू करने से पहले, आप संवाद सेटिंग्स को बदल सकते हैं", + "configDisabled": "इस सत्र के लिए पिछले सत्र की सेटिंग्स का उपयोग किया गया है।", + "startChat": "चैट शुरू करें", + "privacyPolicyLeft": "कृपया पढ़ें ", + "privacyPolicyMiddle": "गोपनीयता नीति", + "privacyPolicyRight": " ऐप डेवलपर द्वारा प्रदान की गई।", + "deleteConversation": { + "title": "संवाद हटाएं", + "content": "क्या आप इस संवाद को हटाना चाहते हैं?" + }, + "tryToSolve": "समाधान करने का प्रयास करें", + "temporarySystemIssue": "अभी सिस्टम में समस्या है, कृपया पुनः प्रयास करें।", + "expand": "विस्तार करें", + "collapse": "संकुचित करें", + "viewChatSettings": "चैट सेटिंग्स देखें", + "chatSettingsTitle": "नया चैट सेटअप", + "chatFormTip": "चैट शुरू होने के बाद चैट सेटिंग्स को संशोधित नहीं किया जा सकता।", + "newChatTip": "पहले से ही एक नए चैट में" + }, + "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": "कृपया अपलोड की गई फ़ाइल में कम से कम एक पंक्ति भरें।" + }, + "execution": "चलाएं", + "executions": "{{num}} बार चलाएं", + "stopRun": "निष्पादन रोकें" + }, + "login": { + "backToHome": "होम पर वापस" + } +} diff --git a/web/i18n/hi-IN/share.ts b/web/i18n/hi-IN/share.ts deleted file mode 100644 index da0a3a7319..0000000000 --- a/web/i18n/hi-IN/share.ts +++ /dev/null @@ -1,86 +0,0 @@ -const translation = { - common: { - welcome: 'आपका स्वागत है', - appUnavailable: 'ऐप उपलब्ध नहीं है', - appUnknownError: 'अज्ञात त्रुटि, कृपया पुनः प्रयास करें', - }, - chat: { - newChat: 'नया चैट', - pinnedTitle: 'पिन किया गया', - unpinnedTitle: 'चैट', - newChatDefaultName: 'नया संवाद', - resetChat: 'संवाद रीसेट करें', - poweredBy: 'संचालित है', - prompt: 'प्रॉम्प्ट', - privatePromptConfigTitle: 'संवाद सेटिंग्स', - publicPromptConfigTitle: 'प्रारंभिक प्रॉम्प्ट', - configStatusDes: 'शुरू करने से पहले, आप संवाद सेटिंग्स को बदल सकते हैं', - configDisabled: - 'इस सत्र के लिए पिछले सत्र की सेटिंग्स का उपयोग किया गया है।', - startChat: 'चैट शुरू करें', - privacyPolicyLeft: 'कृपया पढ़ें ', - privacyPolicyMiddle: 'गोपनीयता नीति', - privacyPolicyRight: ' ऐप डेवलपर द्वारा प्रदान की गई।', - deleteConversation: { - title: 'संवाद हटाएं', - content: 'क्या आप इस संवाद को हटाना चाहते हैं?', - }, - tryToSolve: 'समाधान करने का प्रयास करें', - temporarySystemIssue: 'अभी सिस्टम में समस्या है, कृपया पुनः प्रयास करें।', - expand: 'विस्तार करें', - collapse: 'संकुचित करें', - viewChatSettings: 'चैट सेटिंग्स देखें', - chatSettingsTitle: 'नया चैट सेटअप', - chatFormTip: 'चैट शुरू होने के बाद चैट सेटिंग्स को संशोधित नहीं किया जा सकता।', - newChatTip: 'पहले से ही एक नए चैट में', - }, - 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: 'कृपया अपलोड की गई फ़ाइल में कम से कम एक पंक्ति भरें।', - }, - execution: 'चलाएं', - executions: '{{num}} बार चलाएं', - stopRun: 'निष्पादन रोकें', - }, - login: { - backToHome: 'होम पर वापस', - }, -} - -export default translation diff --git a/web/i18n/hi-IN/time.json b/web/i18n/hi-IN/time.json new file mode 100644 index 0000000000..7265341f72 --- /dev/null +++ b/web/i18n/hi-IN/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Fri": "शुक्रवार", + "Tue": "मंगलवार", + "Sun": "सूर्य", + "Wed": "बुधवार", + "Sat": "शनिवार", + "Mon": "मोन", + "Thu": "गुरुवार" + }, + "months": { + "July": "जुलाई", + "August": "अगस्त", + "September": "सितंबर", + "March": "मार्च", + "May": "मई", + "October": "अक्टूबर", + "April": "अप्रैल", + "December": "दिसंबर", + "February": "फरवरी", + "June": "जून", + "November": "नवंबर", + "January": "जनवरी" + }, + "operation": { + "now": "अब", + "pickDate": "तारीख़ चुनें", + "ok": "ठीक है", + "cancel": "रद्द करें" + }, + "title": { + "pickTime": "समय चुनें" + }, + "defaultPlaceholder": "एक समय चुनें...", + "dateFormats": { + "outputWithTime": "YYYY-MM-DDTHH:mm:ss.SSSZ", + "input": "YYYY-MM-DD", + "output": "YYYY-MM-DD", + "display": "MMMM D, YYYY", + "displayWithTime": "MMMM D, YYYY hh:mm A" + } +} diff --git a/web/i18n/hi-IN/time.ts b/web/i18n/hi-IN/time.ts deleted file mode 100644 index c0c9ee6a6f..0000000000 --- a/web/i18n/hi-IN/time.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - daysInWeek: { - Fri: 'शुक्रवार', - Tue: 'मंगलवार', - Sun: 'सूर्य', - Wed: 'बुधवार', - Sat: 'शनिवार', - Mon: 'मोन', - Thu: 'गुरुवार', - }, - months: { - July: 'जुलाई', - August: 'अगस्त', - September: 'सितंबर', - March: 'मार्च', - May: 'मई', - October: 'अक्टूबर', - April: 'अप्रैल', - December: 'दिसंबर', - February: 'फरवरी', - June: 'जून', - November: 'नवंबर', - January: 'जनवरी', - }, - operation: { - now: 'अब', - pickDate: 'तारीख़ चुनें', - ok: 'ठीक है', - cancel: 'रद्द करें', - }, - title: { - pickTime: 'समय चुनें', - }, - defaultPlaceholder: 'एक समय चुनें...', - dateFormats: { - outputWithTime: 'YYYY-MM-DDTHH:mm:ss.SSSZ', - input: 'YYYY-MM-DD', - output: 'YYYY-MM-DD', - display: 'MMMM D, YYYY', - displayWithTime: 'MMMM D, YYYY hh:mm A', - }, -} - -export default translation diff --git a/web/i18n/hi-IN/tools.json b/web/i18n/hi-IN/tools.json new file mode 100644 index 0000000000..257b2acf2e --- /dev/null +++ b/web/i18n/hi-IN/tools.json @@ -0,0 +1,262 @@ +{ + "title": "उपकरण", + "createCustomTool": "कस्टम उपकरण बनाएं", + "customToolTip": "Dify कस्टम उपकरणों के बारे में और जानें", + "type": { + "builtIn": "निर्मित", + "custom": "कस्टम", + "workflow": "कार्यप्रवाह" + }, + "contribute": { + "line1": "मैं रुचि रखता हूं ", + "line2": "Dify में उपकरण दान करने में।", + "viewGuide": "गाइड देखें" + }, + "author": "द्वारा", + "auth": { + "authorized": "अधिकृत", + "setup": "उपयोग करने के लिए अधिकृति सेटअप करें", + "setupModalTitle": "अधिकृति सेटअप करें", + "setupModalTitleDescription": "प्रमाणिकरण कॉन्फ़िगर करने के बाद, कार्यस्थान के सभी सदस्य इस उपकरण का उपयोग कर सकेंगे।" + }, + "includeToolNum": "{{num}} उपकरण शामिल हैं", + "addToolModal": { + "type": "प्रकार", + "category": "श्रेणी", + "added": "जोड़ा गया", + "custom": { + "title": "कोई कस्टम टूल उपलब्ध नहीं है", + "tip": "एक कस्टम टूल बनाएं" + }, + "workflow": { + "title": "कोई वर्कफ़्लो टूल उपलब्ध नहीं है", + "tip": "स्टूडियो में टूल के रूप में वर्कफ़्लो प्रकाशित करें" + }, + "mcp": { + "title": "कोई MCP टूल उपलब्ध नहीं है", + "tip": "एक MCP सर्वर जोड़ें" + }, + "agent": { + "title": "कोई एजेंट रणनीति उपलब्ध नहीं है" + } + }, + "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": "कोई नहीं", + "apiKeyPlaceholder": "API कुंजी के लिए HTTP हैडर नाम", + "apiValuePlaceholder": "API कुंजी दर्ज करें", + "api_key_query": "अनुक्रमणिका पैरामीटर", + "api_key_header": "हेडर", + "queryParamPlaceholder": "एपीआई कुंजी के लिए क्वेरी पैरामीटर नाम" + }, + "key": "कुंजी", + "value": "मूल्य", + "queryParam": "अनुक्रमणिका पैरामीटर", + "queryParamTooltip": "API कुंजी प्रश्न पैरा मीटर का नाम, जो पास करने के लिए है, जैसे कि \"key\" \"https://example.com/test?key=API_KEY\" में।" + }, + "authHeaderPrefix": { + "title": "अधिकृति प्रकार", + "types": { + "basic": "बेसिक", + "bearer": "बियरर", + "custom": "कस्टम" + } + }, + "privacyPolicy": "गोपनीयता नीति", + "privacyPolicyPlaceholder": "कृपया गोपनीयता नीति दर्ज करें", + "toolInput": { + "title": "उपकरण इनपुट", + "name": "नाम", + "required": "आवश्यक", + "method": "विधि", + "methodSetting": "सेटिंग", + "methodSettingTip": "उपयोगकर्ता उपकरण कॉन्फ़िगरेशन भरता है", + "methodParameter": "पैरामीटर", + "methodParameterTip": "LLM प्रतिपादन के दौरान भरता है", + "label": "टैग", + "labelPlaceholder": "टैग चुनें(वैकल्पिक)", + "description": "पैरामीटर के अर्थ का विवरण", + "descriptionPlaceholder": "पैरामीटर के अर्थ का विवरण" + }, + "customDisclaimer": "कस्टम अस्वीकरण", + "customDisclaimerPlaceholder": "कस्टम अस्वीकरण दर्ज करें", + "confirmTitle": "सहेजने की पुष्टि करें ?", + "confirmTip": "इस उपकरण का उपयोग करने वाले ऐप्स प्रभावित होंगे", + "deleteToolConfirmTitle": "इस उपकरण को हटाएं?", + "deleteToolConfirmContent": "इस उपकरण को हटाने से वापस नहीं आ सकता है। उपयोगकर्ता अब तक आपके उपकरण पर अन्तराल नहीं कर सकेंगे।", + "toolOutput": { + "title": "उपकरण आउटपुट", + "name": "नाम", + "reserved": "आरक्षित", + "reservedParameterDuplicateTip": "text, json, और फाइलें आरक्षित वेरिएबल हैं। इन नामों वाले वेरिएबल आउटपुट स्कीमा में दिखाई नहीं दे सकते।", + "description": "विवरण" + } + }, + "test": { + "title": "परीक्षण", + "parametersValue": "पैरामीटर और मूल्य", + "parameters": "पैरामीटर", + "value": "मूल्य", + "testResult": "परीक्षण परिणाम", + "testResultPlaceholder": "परीक्षण परिणाम यहाँ दिखाई देगा" + }, + "thought": { + "using": "का उपयोग करते हुए", + "used": "इस्तेमाल किया हुआ", + "requestTitle": "अनुरोध करने के लिए", + "responseTitle": "प्रतिक्रिया से" + }, + "setBuiltInTools": { + "info": "जानकारी", + "setting": "सेटिंग", + "toolDescription": "उपकरण विवरण", + "parameters": "पैरामीटर्स", + "string": "स्ट्रिंग", + "number": "नंबर", + "required": "आवश्यक", + "infoAndSetting": "जानकारी और सेटिंग्स", + "file": "फाइल" + }, + "noCustomTool": { + "title": "कोई कस्टम उपकरण नहीं!", + "content": "एआई ऐप्स बनाने के लिए यहां अपने कस्टम उपकरण जोड़ें और प्रबंधित करें।", + "createTool": "उपकरण बनाएं" + }, + "noSearchRes": { + "title": "क्षमा करें, कोई परिणाम नहीं!", + "content": "हम आपकी खोज से मेल खाने वाले कोई उपकरण नहीं ढूंढ पाए।", + "reset": "खोज रीसेट करें" + }, + "builtInPromptTitle": "प्रॉम्प्ट", + "toolRemoved": "उपकरण हटाया गया", + "notAuthorized": "उपकरण अधिकृत नहीं", + "howToGet": "कैसे प्राप्त करें", + "openInStudio": "स्टूडियो में खोलें", + "toolNameUsageTip": "एजेंट तर्क और प्रेरण के लिए उपकरण कॉल नाम", + "noTools": "कोई उपकरण नहीं मिला", + "copyToolName": "नाम कॉपी करें", + "mcp": { + "create": { + "cardTitle": "MCP सर्वर जोड़ें (HTTP)", + "cardLink": "MCP सर्वर एकीकरण के बारे में अधिक जानें" + }, + "noConfigured": "कॉन्फ़िगर न किया गया सर्वर", + "updateTime": "अपडेट किया गया", + "toolsCount": "{count} टूल्स", + "noTools": "कोई टूल उपलब्ध नहीं", + "modal": { + "title": "MCP सर्वर जोड़ें (HTTP)", + "editTitle": "MCP सर्वर संपादित करें (HTTP)", + "name": "नाम और आइकन", + "namePlaceholder": "अपने MCP सर्वर को नाम दें", + "serverUrl": "सर्वर URL", + "serverUrlPlaceholder": "सर्वर एंडपॉइंट का URL", + "serverUrlWarning": "सर्वर पता अपडेट करने से इस सर्वर पर निर्भर एप्लिकेशन बाधित हो सकते हैं", + "serverIdentifier": "सर्वर आईडेंटिफ़ायर", + "serverIdentifierTip": "वर्कस्पेस में MCP सर्वर के लिए अद्वितीय आईडेंटिफ़ायर। केवल लोअरकेस अक्षर, संख्याएँ, अंडरस्कोर और हाइफ़न। अधिकतम 24 वर्ण।", + "serverIdentifierPlaceholder": "अद्वितीय आईडेंटिफ़ायर, उदा. my-mcp-server", + "serverIdentifierWarning": "आईडी बदलने के बाद सर्वर को मौजूदा ऐप्स द्वारा पहचाना नहीं जाएगा", + "cancel": "रद्द करें", + "save": "सहेजें", + "confirm": "जोड़ें और अधिकृत करें", + "timeout": "टाइमआउट", + "sseReadTimeout": "एसएसई पढ़ने का टाइमआउट", + "headerKey": "हेडर नाम", + "headers": "हेडर", + "headerValue": "हेडर मान", + "timeoutPlaceholder": "तीस", + "headerValuePlaceholder": "उदाहरण के लिए, बियरर टोकन123", + "addHeader": "हेडर जोड़ें", + "headerKeyPlaceholder": "उदाहरण के लिए, प्राधिकरण", + "noHeaders": "कोई कस्टम हेडर कॉन्फ़िगर नहीं किए गए हैं", + "maskedHeadersTip": "सुरक्षा के लिए हेडर मानों को छिपाया गया है। परिवर्तन वास्तविक मानों को अपडेट करेगा।", + "headersTip": "MCP सर्वर अनुरोधों के साथ भेजने के लिए अतिरिक्त HTTP हेडर्स", + "clientSecretPlaceholder": "क्लाइंट सीक्रेट", + "clientSecret": "क्लाइंट सीक्रेट", + "clientID": "क्लाइंट आईडी", + "configurations": "संरचनाएँ", + "authentication": "प्रमाणीकरण", + "useDynamicClientRegistration": "डायनामिक क्लाइंट पंजीकरण का उपयोग करें", + "redirectUrlWarning": "कृपया अपना OAuth री-डायरेक्ट URL इस प्रकार सेट करें:" + }, + "delete": "MCP सर्वर हटाएँ", + "deleteConfirmTitle": "{mcp} हटाना चाहते हैं?", + "operation": { + "edit": "संपादित करें", + "remove": "हटाएँ" + }, + "authorize": "अधिकृत करें", + "authorizing": "अधिकृत किया जा रहा है...", + "authorizingRequired": "प्राधिकरण आवश्यक है", + "authorizeTip": "अधिकृत होने के बाद, टूल यहाँ प्रदर्शित होंगे।", + "update": "अपडेट करें", + "updating": "अपडेट हो रहा है...", + "gettingTools": "टूल्स प्राप्त किए जा रहे हैं...", + "updateTools": "टूल्स अपडेट किए जा रहे हैं...", + "toolsEmpty": "टूल्स लोड नहीं हुए", + "getTools": "टूल्स प्राप्त करें", + "toolUpdateConfirmTitle": "टूल सूची अपडेट करें", + "toolUpdateConfirmContent": "टूल सूची अपडेट करने से मौजूदा ऐप्स प्रभावित हो सकते हैं। आगे बढ़ना चाहते हैं?", + "toolsNum": "{count} टूल्स शामिल", + "onlyTool": "1 टूल शामिल", + "identifier": "सर्वर आईडेंटिफ़ायर (कॉपी करने के लिए क्लिक करें)", + "server": { + "title": "MCP सर्वर", + "url": "सर्वर URL", + "reGen": "सर्वर URL पुनः उत्पन्न करना चाहते हैं?", + "addDescription": "विवरण जोड़ें", + "edit": "विवरण संपादित करें", + "modal": { + "addTitle": "MCP सर्वर सक्षम करने के लिए विवरण जोड़ें", + "editTitle": "विवरण संपादित करें", + "description": "विवरण", + "descriptionPlaceholder": "समझाएं कि यह टूल क्या करता है और LLM द्वारा इसका उपयोग कैसे किया जाना चाहिए", + "parameters": "पैरामीटर्स", + "parametersTip": "प्रत्येक पैरामीटर के लिए विवरण जोड़ें ताकि LLM को उनके उद्देश्य और बाधाओं को समझने में मदद मिले।", + "parametersPlaceholder": "पैरामीटर उद्देश्य और बाधाएँ", + "confirm": "MCP सर्वर सक्षम करें" + }, + "publishTip": "ऐप प्रकाशित नहीं हुआ। कृपया पहले ऐप प्रकाशित करें।" + }, + "toolItem": { + "parameters": "पैरामीटर", + "noDescription": "कोई वर्णन नहीं" + } + }, + "allTools": "सभी उपकरण" +} diff --git a/web/i18n/hi-IN/tools.ts b/web/i18n/hi-IN/tools.ts deleted file mode 100644 index 23b3144fbd..0000000000 --- a/web/i18n/hi-IN/tools.ts +++ /dev/null @@ -1,269 +0,0 @@ -const translation = { - title: 'उपकरण', - createCustomTool: 'कस्टम उपकरण बनाएं', - customToolTip: 'Dify कस्टम उपकरणों के बारे में और जानें', - type: { - builtIn: 'निर्मित', - custom: 'कस्टम', - workflow: 'कार्यप्रवाह', - }, - contribute: { - line1: 'मैं रुचि रखता हूं ', - line2: 'Dify में उपकरण दान करने में।', - viewGuide: 'गाइड देखें', - }, - author: 'द्वारा', - auth: { - authorized: 'अधिकृत', - setup: 'उपयोग करने के लिए अधिकृति सेटअप करें', - setupModalTitle: 'अधिकृति सेटअप करें', - setupModalTitleDescription: - 'प्रमाणिकरण कॉन्फ़िगर करने के बाद, कार्यस्थान के सभी सदस्य इस उपकरण का उपयोग कर सकेंगे।', - }, - includeToolNum: '{{num}} उपकरण शामिल हैं', - addToolModal: { - type: 'प्रकार', - category: 'श्रेणी', - added: 'जोड़ा गया', - custom: { - title: 'कोई कस्टम टूल उपलब्ध नहीं है', - tip: 'एक कस्टम टूल बनाएं', - }, - workflow: { - title: 'कोई वर्कफ़्लो टूल उपलब्ध नहीं है', - tip: 'स्टूडियो में टूल के रूप में वर्कफ़्लो प्रकाशित करें', - }, - mcp: { - title: 'कोई MCP टूल उपलब्ध नहीं है', - tip: 'एक MCP सर्वर जोड़ें', - }, - agent: { - title: 'कोई एजेंट रणनीति उपलब्ध नहीं है', - }, - }, - 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: 'कोई नहीं', - apiKeyPlaceholder: 'API कुंजी के लिए HTTP हैडर नाम', - apiValuePlaceholder: 'API कुंजी दर्ज करें', - api_key_query: 'अनुक्रमणिका पैरामीटर', - api_key_header: 'हेडर', - queryParamPlaceholder: 'एपीआई कुंजी के लिए क्वेरी पैरामीटर नाम', - }, - key: 'कुंजी', - value: 'मूल्य', - queryParam: 'अनुक्रमणिका पैरामीटर', - queryParamTooltip: 'API कुंजी प्रश्न पैरा मीटर का नाम, जो पास करने के लिए है, जैसे कि "key" "https://example.com/test?key=API_KEY" में।', - }, - authHeaderPrefix: { - title: 'अधिकृति प्रकार', - types: { - basic: 'बेसिक', - bearer: 'बियरर', - custom: 'कस्टम', - }, - }, - privacyPolicy: 'गोपनीयता नीति', - privacyPolicyPlaceholder: 'कृपया गोपनीयता नीति दर्ज करें', - toolInput: { - title: 'उपकरण इनपुट', - name: 'नाम', - required: 'आवश्यक', - method: 'विधि', - methodSetting: 'सेटिंग', - methodSettingTip: 'उपयोगकर्ता उपकरण कॉन्फ़िगरेशन भरता है', - methodParameter: 'पैरामीटर', - methodParameterTip: 'LLM प्रतिपादन के दौरान भरता है', - label: 'टैग', - labelPlaceholder: 'टैग चुनें(वैकल्पिक)', - description: 'पैरामीटर के अर्थ का विवरण', - descriptionPlaceholder: 'पैरामीटर के अर्थ का विवरण', - }, - customDisclaimer: 'कस्टम अस्वीकरण', - customDisclaimerPlaceholder: 'कस्टम अस्वीकरण दर्ज करें', - confirmTitle: 'सहेजने की पुष्टि करें ?', - confirmTip: 'इस उपकरण का उपयोग करने वाले ऐप्स प्रभावित होंगे', - deleteToolConfirmTitle: 'इस उपकरण को हटाएं?', - deleteToolConfirmContent: 'इस उपकरण को हटाने से वापस नहीं आ सकता है। उपयोगकर्ता अब तक आपके उपकरण पर अन्तराल नहीं कर सकेंगे।', - toolOutput: { - title: 'उपकरण आउटपुट', - name: 'नाम', - reserved: 'आरक्षित', - reservedParameterDuplicateTip: 'text, json, और फाइलें आरक्षित वेरिएबल हैं। इन नामों वाले वेरिएबल आउटपुट स्कीमा में दिखाई नहीं दे सकते।', - description: 'विवरण', - }, - }, - test: { - title: 'परीक्षण', - parametersValue: 'पैरामीटर और मूल्य', - parameters: 'पैरामीटर', - value: 'मूल्य', - testResult: 'परीक्षण परिणाम', - testResultPlaceholder: 'परीक्षण परिणाम यहाँ दिखाई देगा', - }, - thought: { - using: 'का उपयोग करते हुए', - used: 'इस्तेमाल किया हुआ', - requestTitle: 'अनुरोध करने के लिए', - responseTitle: 'प्रतिक्रिया से', - }, - setBuiltInTools: { - info: 'जानकारी', - setting: 'सेटिंग', - toolDescription: 'उपकरण विवरण', - parameters: 'पैरामीटर्स', - string: 'स्ट्रिंग', - number: 'नंबर', - required: 'आवश्यक', - infoAndSetting: 'जानकारी और सेटिंग्स', - file: 'फाइल', - }, - noCustomTool: { - title: 'कोई कस्टम उपकरण नहीं!', - content: - 'एआई ऐप्स बनाने के लिए यहां अपने कस्टम उपकरण जोड़ें और प्रबंधित करें।', - createTool: 'उपकरण बनाएं', - }, - noSearchRes: { - title: 'क्षमा करें, कोई परिणाम नहीं!', - content: 'हम आपकी खोज से मेल खाने वाले कोई उपकरण नहीं ढूंढ पाए।', - reset: 'खोज रीसेट करें', - }, - builtInPromptTitle: 'प्रॉम्प्ट', - toolRemoved: 'उपकरण हटाया गया', - notAuthorized: 'उपकरण अधिकृत नहीं', - howToGet: 'कैसे प्राप्त करें', - openInStudio: 'स्टूडियो में खोलें', - toolNameUsageTip: 'एजेंट तर्क और प्रेरण के लिए उपकरण कॉल नाम', - noTools: 'कोई उपकरण नहीं मिला', - copyToolName: 'नाम कॉपी करें', - mcp: { - create: { - cardTitle: 'MCP सर्वर जोड़ें (HTTP)', - cardLink: 'MCP सर्वर एकीकरण के बारे में अधिक जानें', - }, - noConfigured: 'कॉन्फ़िगर न किया गया सर्वर', - updateTime: 'अपडेट किया गया', - toolsCount: '{count} टूल्स', - noTools: 'कोई टूल उपलब्ध नहीं', - modal: { - title: 'MCP सर्वर जोड़ें (HTTP)', - editTitle: 'MCP सर्वर संपादित करें (HTTP)', - name: 'नाम और आइकन', - namePlaceholder: 'अपने MCP सर्वर को नाम दें', - serverUrl: 'सर्वर URL', - serverUrlPlaceholder: 'सर्वर एंडपॉइंट का URL', - serverUrlWarning: 'सर्वर पता अपडेट करने से इस सर्वर पर निर्भर एप्लिकेशन बाधित हो सकते हैं', - serverIdentifier: 'सर्वर आईडेंटिफ़ायर', - serverIdentifierTip: 'वर्कस्पेस में MCP सर्वर के लिए अद्वितीय आईडेंटिफ़ायर। केवल लोअरकेस अक्षर, संख्याएँ, अंडरस्कोर और हाइफ़न। अधिकतम 24 वर्ण।', - serverIdentifierPlaceholder: 'अद्वितीय आईडेंटिफ़ायर, उदा. my-mcp-server', - serverIdentifierWarning: 'आईडी बदलने के बाद सर्वर को मौजूदा ऐप्स द्वारा पहचाना नहीं जाएगा', - cancel: 'रद्द करें', - save: 'सहेजें', - confirm: 'जोड़ें और अधिकृत करें', - timeout: 'टाइमआउट', - sseReadTimeout: 'एसएसई पढ़ने का टाइमआउट', - headerKey: 'हेडर नाम', - headers: 'हेडर', - headerValue: 'हेडर मान', - timeoutPlaceholder: 'तीस', - headerValuePlaceholder: 'उदाहरण के लिए, बियरर टोकन123', - addHeader: 'हेडर जोड़ें', - headerKeyPlaceholder: 'उदाहरण के लिए, प्राधिकरण', - noHeaders: 'कोई कस्टम हेडर कॉन्फ़िगर नहीं किए गए हैं', - maskedHeadersTip: 'सुरक्षा के लिए हेडर मानों को छिपाया गया है। परिवर्तन वास्तविक मानों को अपडेट करेगा।', - headersTip: 'MCP सर्वर अनुरोधों के साथ भेजने के लिए अतिरिक्त HTTP हेडर्स', - clientSecretPlaceholder: 'क्लाइंट सीक्रेट', - clientSecret: 'क्लाइंट सीक्रेट', - clientID: 'क्लाइंट आईडी', - configurations: 'संरचनाएँ', - authentication: 'प्रमाणीकरण', - useDynamicClientRegistration: 'डायनामिक क्लाइंट पंजीकरण का उपयोग करें', - redirectUrlWarning: 'कृपया अपना OAuth री-डायरेक्ट URL इस प्रकार सेट करें:', - }, - delete: 'MCP सर्वर हटाएँ', - deleteConfirmTitle: '{mcp} हटाना चाहते हैं?', - operation: { - edit: 'संपादित करें', - remove: 'हटाएँ', - }, - authorize: 'अधिकृत करें', - authorizing: 'अधिकृत किया जा रहा है...', - authorizingRequired: 'प्राधिकरण आवश्यक है', - authorizeTip: 'अधिकृत होने के बाद, टूल यहाँ प्रदर्शित होंगे।', - update: 'अपडेट करें', - updating: 'अपडेट हो रहा है...', - gettingTools: 'टूल्स प्राप्त किए जा रहे हैं...', - updateTools: 'टूल्स अपडेट किए जा रहे हैं...', - toolsEmpty: 'टूल्स लोड नहीं हुए', - getTools: 'टूल्स प्राप्त करें', - toolUpdateConfirmTitle: 'टूल सूची अपडेट करें', - toolUpdateConfirmContent: 'टूल सूची अपडेट करने से मौजूदा ऐप्स प्रभावित हो सकते हैं। आगे बढ़ना चाहते हैं?', - toolsNum: '{count} टूल्स शामिल', - onlyTool: '1 टूल शामिल', - identifier: 'सर्वर आईडेंटिफ़ायर (कॉपी करने के लिए क्लिक करें)', - server: { - title: 'MCP सर्वर', - url: 'सर्वर URL', - reGen: 'सर्वर URL पुनः उत्पन्न करना चाहते हैं?', - addDescription: 'विवरण जोड़ें', - edit: 'विवरण संपादित करें', - modal: { - addTitle: 'MCP सर्वर सक्षम करने के लिए विवरण जोड़ें', - editTitle: 'विवरण संपादित करें', - description: 'विवरण', - descriptionPlaceholder: 'समझाएं कि यह टूल क्या करता है और LLM द्वारा इसका उपयोग कैसे किया जाना चाहिए', - parameters: 'पैरामीटर्स', - parametersTip: 'प्रत्येक पैरामीटर के लिए विवरण जोड़ें ताकि LLM को उनके उद्देश्य और बाधाओं को समझने में मदद मिले।', - parametersPlaceholder: 'पैरामीटर उद्देश्य और बाधाएँ', - confirm: 'MCP सर्वर सक्षम करें', - }, - publishTip: 'ऐप प्रकाशित नहीं हुआ। कृपया पहले ऐप प्रकाशित करें।', - }, - toolItem: { - parameters: 'पैरामीटर', - noDescription: 'कोई वर्णन नहीं', - }, - }, - allTools: 'सभी उपकरण', -} - -export default translation diff --git a/web/i18n/hi-IN/workflow.json b/web/i18n/hi-IN/workflow.json new file mode 100644 index 0000000000..efcc672e6b --- /dev/null +++ b/web/i18n/hi-IN/workflow.json @@ -0,0 +1,1294 @@ +{ + "common": { + "undo": "पूर्ववत करें", + "redo": "फिर से करें", + "editing": "संपादन", + "autoSaved": "स्वतः सहेजा गया", + "unpublished": "अप्रकाशित", + "published": "प्रकाशित", + "publish": "प्रकाशित करें", + "update": "अपडेट करें", + "run": "परीक्षण चलाएं", + "running": "चल रहा है", + "inRunMode": "रन मोड में", + "inPreview": "पूर्वावलोकन में", + "inPreviewMode": "पूर्वावलोकन मोड में", + "preview": "पूर्वावलोकन", + "viewRunHistory": "रन इतिहास देखें", + "runHistory": "रन इतिहास", + "goBackToEdit": "संपादक पर वापस जाएं", + "conversationLog": "वार्तालाप लॉग", + "debugAndPreview": "पूर्वावलोकन", + "restart": "पुनः आरंभ करें", + "currentDraft": "वर्तमान ड्राफ्ट", + "currentDraftUnpublished": "वर्तमान ड्राफ्ट अप्रकाशित", + "latestPublished": "नवीनतम प्रकाशित", + "publishedAt": "प्रकाशित", + "restore": "पुनर्स्थापित करें", + "runApp": "ऐप चलाएं", + "batchRunApp": "बैच ऐप चलाएं", + "accessAPIReference": "एपीआई संदर्भ तक पहुंचें", + "embedIntoSite": "साइट में एम्बेड करें", + "addTitle": "शीर्षक जोड़ें...", + "addDescription": "विवरण जोड़ें...", + "noVar": "कोई वेरिएबल नहीं", + "searchVar": "वेरिएबल खोजें", + "variableNamePlaceholder": "वेरिएबल नाम", + "setVarValuePlaceholder": "वेरिएबल सेट करें", + "needConnectTip": "यह चरण किसी से जुड़ा नहीं है", + "maxTreeDepth": "प्रति शाखा अधिकतम {{depth}} नोड्स की सीमा", + "workflowProcess": "कार्यप्रवाह प्रक्रिया", + "notRunning": "अभी तक नहीं चल रहा", + "previewPlaceholder": "चैटबॉट का डीबग शुरू करने के लिए नीचे दिए गए बॉक्स में सामग्री दर्ज करें", + "effectVarConfirm": { + "title": "वेरिएबल हटाएं", + "content": "वेरिएबल अन्य नोड्स में उपयोग किया जाता है। क्या आप अभी भी इसे हटाना चाहते हैं?" + }, + "insertVarTip": "जल्दी से डालने के लिए '/' कुंजी दबाएं", + "processData": "डेटा प्रोसेस करें", + "input": "इनपुट", + "output": "आउटपुट", + "jinjaEditorPlaceholder": "वेरिएबल डालने के लिए '/' या '{' टाइप करें", + "viewOnly": "केवल देखें", + "showRunHistory": "रन इतिहास दिखाएं", + "enableJinja": "Jinja टेम्पलेट समर्थन सक्षम करें", + "learnMore": "अधिक जानें", + "copy": "कॉपी करें", + "duplicate": "डुप्लिकेट करें", + "pasteHere": "यहां पेस्ट करें", + "pointerMode": "पॉइंटर मोड", + "handMode": "हैंड मोड", + "model": "मॉडल", + "workflowAsTool": "टूल के रूप में कार्यप्रवाह", + "configureRequired": "कॉन्फ़िगरेशन आवश्यक", + "configure": "कॉन्फ़िगर करें", + "manageInTools": "टूल्स में प्रबंधित करें", + "workflowAsToolTip": "कार्यप्रवाह अपडेट के बाद टूल पुनः कॉन्फ़िगरेशन आवश्यक है।", + "viewDetailInTracingPanel": "विवरण देखें", + "syncingData": "डेटा सिंक हो रहा है, बस कुछ सेकंड।", + "overwriteAndImport": "अधिलेखित और आयात", + "importSuccess": "सफलता आयात करें", + "chooseDSL": "डीएसएल (वाईएमएल) फ़ाइल चुनें", + "importDSL": "DSL आयात करें", + "backupCurrentDraft": "बैकअप वर्तमान ड्राफ्ट", + "importFailure": "आयात विफलता", + "importDSLTip": "वर्तमान ड्राफ्ट ओवरराइट हो जाएगा। आयात करने से पहले वर्कफ़्लो को बैकअप के रूप में निर्यात करें.", + "parallelTip": { + "click": { + "title": "क्लिक करना", + "desc": "जोड़ने के लिए" + }, + "drag": { + "title": "खींचना", + "desc": "कनेक्ट करने के लिए" + }, + "limit": "समांतरता {{num}} शाखाओं तक सीमित है।", + "depthLimit": "{{num}} परतों की समानांतर नेस्टिंग परत सीमा" + }, + "disconnect": "अलग करना", + "jumpToNode": "इस नोड पर जाएं", + "addParallelNode": "समानांतर नोड जोड़ें", + "parallel": "समानांतर", + "branch": "शाखा", + "fileUploadTip": "छवि अपलोड सुविधाओं को फ़ाइल अपलोड में अपग्रेड किया गया है।", + "ImageUploadLegacyTip": "अब आप प्रारंभ प्रपत्र में फ़ाइल प्रकार चर बना सकते हैं। हम अब भविष्य में छवि अपलोड सुविधा का समर्थन नहीं करेंगे।", + "importWarning": "सावधानी", + "importWarningDetails": "डीएसएल संस्करण अंतर कुछ सुविधाओं को प्रभावित कर सकता है", + "openInExplore": "एक्सप्लोर में खोलें", + "onFailure": "असफलता पर", + "addFailureBranch": "असफल शाखा जोड़ें", + "noHistory": "कोई इतिहास नहीं", + "loadMore": "अधिक वर्कफ़्लोज़ लोड करें", + "exitVersions": "निकलने के संस्करण", + "exportPNG": "PNG के रूप में निर्यात करें", + "exportJPEG": "JPEG के रूप में निर्यात करें", + "exportImage": "छवि निर्यात करें", + "publishUpdate": "अपडेट प्रकाशित करें", + "exportSVG": "SVG के रूप में निर्यात करें", + "versionHistory": "संस्करण इतिहास", + "needAnswerNode": "उत्तर नोड जोड़ा जाना चाहिए", + "addBlock": "नोड जोड़ें", + "needOutputNode": "आउटपुट नोड जोड़ा जाना चाहिए", + "tagBound": "इस टैग का उपयोग करने वाले ऐप्स की संख्या", + "currentView": "वर्तमान दृश्य", + "currentWorkflow": "वर्तमान कार्यप्रवाह", + "moreActions": "अधिक क्रियाएँ", + "listening": "सुनना", + "chooseStartNodeToRun": "चलाने के लिए प्रारंभ नोड चुनें", + "runAllTriggers": "सभी ट्रिगर्स चलाएँ", + "features": "विशेषताएँ", + "featuresDescription": "वेब ऐप उपयोगकर्ता अनुभव को बढ़ाएं", + "featuresDocLink": "और जानें", + "needAdd": "{{node}} नोड को जोड़ा जाना चाहिए", + "needStartNode": "कम से कम एक प्रारंभ नोड जोड़ा जाना चाहिए", + "workflowAsToolDisabledHint": "सबसे नया वर्कफ़्लो प्रकाशित करें और इसे टूल के रूप में कॉन्फ़िगर करने से पहले एक कनेक्टेड यूज़र इनपुट नोड सुनिश्चित करें।" + }, + "env": { + "envPanelTitle": "पर्यावरण चर", + "envDescription": "पर्यावरण चर का उपयोग निजी जानकारी और क्रेडेंशियल्स को संग्रहित करने के लिए किया जा सकता है। वे केवल पढ़ने योग्य हैं और निर्यात के दौरान DSL फ़ाइल से अलग किए जा सकते हैं।", + "envPanelButton": "चर जोड़ें", + "modal": { + "title": "पर्यावरण चर जोड़ें", + "editTitle": "पर्यावरण चर संपादित करें", + "type": "प्रकार", + "name": "नाम", + "namePlaceholder": "पर्यावरण नाम", + "value": "मान", + "valuePlaceholder": "पर्यावरण मान", + "secretTip": "संवेदनशील जानकारी या डेटा को परिभाषित करने के लिए उपयोग किया जाता है, DSL सेटिंग्स लीक रोकथाम के लिए कॉन्फ़िगर की गई हैं।", + "description": "विवरण", + "descriptionPlaceholder": "चर का वर्णन करें" + }, + "export": { + "title": "गुप्त पर्यावरण चर निर्यात करें?", + "checkbox": "गुप्त मान निर्यात करें", + "ignore": "DSL निर्यात करें", + "export": "गुप्त मानों के साथ DSL निर्यात करें" + } + }, + "globalVar": { + "title": "सिस्टम वेरिएबल्स", + "description": "सिस्टम वेरिएबल्स वैश्विक वेरिएबल्स हैं जिन्हें सही प्रकार होने पर किसी भी नोड द्वारा बिना वायरिंग के संदर्भित किया जा सकता है, जैसे एंड-यूज़र ID और वर्कफ़्लो ID.", + "fieldsDescription": { + "conversationId": "संवाद ID", + "dialogCount": "संवाद गणना", + "userId": "उपयोगकर्ता ID", + "triggerTimestamp": "एप्लिकेशन शुरू होने का टाइमस्टैम्प", + "appId": "एप्लिकेशन ID", + "workflowId": "वर्कफ़्लो ID", + "workflowRunId": "वर्कफ़्लो रन ID" + } + }, + "chatVariable": { + "panelTitle": "वार्तालाप चर", + "panelDescription": "वार्तालाप चर का उपयोग इंटरैक्टिव जानकारी संग्रहित करने के लिए किया जाता है जिसे LLM को याद रखने की आवश्यकता होती है, जिसमें वार्तालाप इतिहास, अपलोड की गई फाइलें, उपयोगकर्ता प्राथमिकताएं शामिल हैं। वे पठनीय और लेखनीय हैं।", + "docLink": "अधिक जानने के लिए हमारे दस्तावेज़ देखें।", + "button": "चर जोड़ें", + "modal": { + "title": "वार्तालाप चर जोड़ें", + "editTitle": "वार्तालाप चर संपादित करें", + "name": "नाम", + "namePlaceholder": "चर का नाम", + "type": "प्रकार", + "value": "डिफ़ॉल्ट मान", + "valuePlaceholder": "डिफ़ॉल्ट मान, सेट न करने के लिए खाली छोड़ दें", + "description": "विवरण", + "descriptionPlaceholder": "चर का वर्णन करें", + "editInJSON": "JSON में संपादित करें", + "oneByOne": "एक-एक करके जोड़ें", + "editInForm": "फॉर्म में संपादित करें", + "arrayValue": "मान", + "addArrayValue": "मान जोड़ें", + "objectKey": "कुंजी", + "objectType": "प्रकार", + "objectValue": "डिफ़ॉल्ट मान" + }, + "storedContent": "संग्रहीत सामग्री", + "updatedAt": "अपडेट किया गया " + }, + "changeHistory": { + "title": "परिवर्तन इतिहास", + "placeholder": "आपने अभी तक कुछ भी नहीं बदला है", + "clearHistory": "इतिहास साफ़ करें", + "hint": "संकेत", + "hintText": "आपके संपादन क्रियाओं को परिवर्तन इतिहास में ट्रैक किया जाता है, जो इस सत्र के दौरान आपके डिवाइस पर संग्रहीत होता है। जब आप संपादक छोड़ेंगे तो यह इतिहास साफ़ हो जाएगा।", + "stepBackward_one": "{{count}} कदम पीछे", + "stepBackward_other": "{{count}} कदम पीछे", + "stepForward_one": "{{count}} कदम आगे", + "stepForward_other": "{{count}} कदम आगे", + "sessionStart": "सत्र प्रारंभ", + "currentState": "वर्तमान स्थिति", + "noteAdd": "नोट जोड़ा गया", + "noteChange": "नोट बदला गया", + "noteDelete": "नोट हटाया गया", + "nodeConnect": "नोड कनेक्टेड", + "nodeResize": "नोड का आकार बदला गया", + "nodeDelete": "नोड हटा दिया गया", + "nodeDragStop": "नोड स्थानांतरित किया गया", + "nodeChange": "नोड बदला गया", + "nodeAdd": "नोड जोड़ा गया", + "nodeTitleChange": "नोड का शीर्षक बदल दिया गया", + "edgeDelete": "नोड डिस्कनेक्ट हो गया", + "nodePaste": "नोड चिपका हुआ", + "nodeDescriptionChange": "नोड का वर्णन बदल गया" + }, + "errorMsg": { + "fieldRequired": "{{field}} आवश्यक है", + "authRequired": "प्राधिकरण आवश्यक है", + "invalidJson": "{{field}} अमान्य JSON है", + "fields": { + "variable": "वेरिएबल नाम", + "variableValue": "वेरिएबल मान", + "code": "कोड", + "model": "मॉडल", + "rerankModel": "पुनः रैंक मॉडल", + "visionVariable": "दृष्टि चर" + }, + "invalidVariable": "अमान्य वेरिएबल", + "rerankModelRequired": "Rerank मॉडल चालू करने से पहले, कृपया पुष्टि करें कि मॉडल को सेटिंग्स में सफलतापूर्वक कॉन्फ़िगर किया गया है।", + "toolParameterRequired": "{{field}}: पैरामीटर [{{param}}] आवश्यक है", + "noValidTool": "{{field}} कोई मान्य उपकरण चयनित नहीं किया गया", + "startNodeRequired": "कृपया {{operation}} से पहले पहले एक स्टार्ट नोड जोड़ें" + }, + "singleRun": { + "testRun": "परीक्षण रन", + "startRun": "रन शुरू करें", + "running": "चल रहा है", + "testRunIteration": "परीक्षण रन पुनरावृत्ति", + "back": "वापस", + "iteration": "पुनरावृत्ति", + "loop": "लूप", + "reRun": "फिर से चलाएँ", + "preparingDataSource": "डेटा स्रोत की तैयारी करना" + }, + "tabs": { + "tools": "टूल्स", + "allTool": "सभी", + "customTool": "कस्टम", + "workflowTool": "कार्यप्रवाह", + "question-understand": "प्रश्न समझ", + "logic": "तर्क", + "transform": "परिवर्तन", + "utilities": "उपयोगिताएं", + "noResult": "कोई मिलान नहीं मिला", + "searchTool": "खोज उपकरण", + "plugin": "प्लगइन", + "agent": "एजेंट रणनीति", + "searchBlock": "खोज नोड", + "blocks": "नोड्स", + "addAll": "सभी जोड़ें", + "allAdded": "सभी जोड़े गए", + "sources": "स्रोत", + "searchDataSource": "डेटा स्रोत की खोज करें", + "start": "शुरू करें", + "searchTrigger": "खोज ट्रिगर्स...", + "allTriggers": "सभी ट्रिगर्स", + "noPluginsFound": "कोई प्लगइन नहीं मिला", + "requestToCommunity": "समुदाय से अनुरोध", + "featuredTools": "विशेष रूप से प्रदर्शित", + "showMoreFeatured": "और दिखाएं", + "showLessFeatured": "कम दिखाएं", + "installed": "स्थापित", + "pluginByAuthor": "{{author}} द्वारा", + "usePlugin": "उपकरण चुनें", + "hideActions": "उपकरण छुपाएँ", + "noFeaturedPlugins": "मार्केटप्लेस में और उपकरणों की खोज करें", + "noFeaturedTriggers": "मार्केटप्लेस में और ट्रिगर खोजें", + "startDisabledTip": "ट्रिगर नोड और उपयोगकर्ता इनपुट नोड परस्पर विशेष हैं।" + }, + "blocks": { + "start": "प्रारंभ", + "end": "आउटपुट", + "answer": "उत्तर", + "llm": "एलएलएम", + "knowledge-retrieval": "ज्ञान पुनर्प्राप्ति", + "question-classifier": "प्रश्न वर्गीकरण", + "if-else": "यदि/अन्यथा", + "code": "कोड", + "template-transform": "टेम्पलेट", + "http-request": "एचटीटीपी अनुरोध", + "variable-assigner": "वेरिएबल एग्रीगेटर", + "variable-aggregator": "वेरिएबल एग्रीगेटर", + "assigner": "चर असाइनर", + "iteration-start": "पुनरावृत्ति प्रारंभ", + "iteration": "पुनरावृत्ति", + "parameter-extractor": "पैरामीटर निष्कर्षक", + "list-operator": "सूची ऑपरेटर", + "document-extractor": "डॉक्टर एक्सट्रैक्टर", + "agent": "एजेंट", + "loop-end": "लूप से बाहर निकलें", + "loop": "लूप", + "loop-start": "लूप प्रारंभ", + "knowledge-index": "ज्ञान आधार", + "datasource": "डेटा स्रोत", + "originalStartNode": "मूल प्रारंभ नोड", + "trigger-schedule": "अनुसूची ट्रिगर", + "trigger-webhook": "वेबहूक ट्रिगर", + "trigger-plugin": "प्लगइन ट्रिगर" + }, + "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": "डाउनस्ट्रीम नोड्स की एकीकृत कॉन्फ़िगरेशन के लिए बहु-शाखा चर को एकल चर में संकलित करें।", + "assigner": "चर असाइनमेंट नोड का उपयोग लिखने योग्य चर (जैसे वार्तालाप चर) को मान असाइन करने के लिए किया जाता है।", + "variable-aggregator": "डाउनस्ट्रीम नोड्स की एकीकृत कॉन्फ़िगरेशन के लिए बहु-शाखा चर को एकल चर में संकलित करें।", + "iteration": "एक सूची वस्तु पर तब तक कई कदम करें जब तक सभी परिणाम आउटपुट न हो जाएं।", + "parameter-extractor": "टूल आमंत्रणों या HTTP अनुरोधों के लिए प्राकृतिक भाषा से संरचित पैरामीटर निकालने के लिए LLM का उपयोग करें।", + "document-extractor": "अपलोड किए गए दस्तावेज़ों को पाठ सामग्री में पार्स करने के लिए उपयोग किया जाता है जो एलएलएम द्वारा आसानी से समझा जा सकता है।", + "list-operator": "सरणी सामग्री फ़िल्टर या सॉर्ट करने के लिए उपयोग किया जाता है.", + "agent": "प्रश्नों का उत्तर देने या प्राकृतिक भाषा को संसाधित करने के लिए बड़े भाषा मॉडलों को आमंत्रित करना", + "loop": "एक लूप को निष्पादित करें जब तक समाप्ति की शर्त पूरी न हो जाए या अधिकतम लूप संख्या प्राप्त न हो जाए।", + "loop-end": "\"ब्रेक\" के समान। इस नोड में कोई विन्यास आइटम नहीं हैं। जब लूप का शरीर इस नोड पर पहुँचता है, तो लूप समाप्त होता है।", + "knowledge-index": "ज्ञान आधार के बारे में", + "datasource": "डेटा स्रोत के बारे में", + "trigger-schedule": "समय-आधारित वर्कफ़्लो ट्रिगर जो वर्कफ़्लो को शेड्यूल पर शुरू करता है", + "trigger-webhook": "वेबहुक ट्रिगर थर्ड-पार्टी सिस्टम्स से HTTP पुश प्राप्त करता है ताकि वर्कफ़्लो को स्वचालित रूप से ट्रिगर किया जा सके।", + "trigger-plugin": "थर्ड-पार्टी इंटीग्रेशन ट्रिगर जो बाहरी प्लेटफ़ॉर्म घटनाओं से वर्कफ़्लो शुरू करता है" + }, + "operator": { + "zoomIn": "ज़ूम इन", + "zoomOut": "ज़ूम आउट", + "zoomTo50": "50% पर ज़ूम करें", + "zoomTo100": "100% पर ज़ूम करें", + "zoomToFit": "फिट करने के लिए ज़ूम करें", + "alignRight": "दाएं", + "alignLeft": "बाएं", + "alignTop": "शीर्ष", + "horizontal": "क्षैतिज", + "alignNodes": "नोड्स को संरेखित करें", + "selectionAlignment": "चयन संरेखण", + "alignCenter": "केंद्र", + "vertical": "ऊर्ध्वाधर", + "distributeHorizontal": "क्षैतिज रूप से वितरित करें", + "alignBottom": "नीचे", + "distributeVertical": "ऊर्ध्वाधर रूप से वितरित करें", + "alignMiddle": "मध्य" + }, + "panel": { + "userInputField": "उपयोगकर्ता इनपुट फ़ील्ड", + "helpLink": "सहायता", + "about": "के बारे में", + "createdBy": "द्वारा बनाया गया ", + "nextStep": "अगला कदम", + "runThisStep": "इस कदम को चलाएं", + "checklist": "चेकलिस्ट", + "checklistTip": "प्रकाशित करने से पहले सुनिश्चित करें कि सभी समस्याएं हल हो गई हैं", + "checklistResolved": "सभी समस्याएं हल हो गई हैं", + "change": "बदलें", + "optional": "(वैकल्पिक)", + "changeBlock": "नोड बदलें", + "addNextStep": "इस कार्यप्रवाह में अगला कदम जोड़ें", + "selectNextStep": "अगला कदम चुनें", + "organizeBlocks": "नोड्स का आयोजन करें", + "minimize": "पूर्ण स्क्रीन से बाहर निकलें", + "maximize": "कैनवास का अधिकतम लाभ उठाएँ", + "scrollToSelectedNode": "चुने गए नोड पर स्क्रॉल करें", + "optional_and_hidden": "(वैकल्पिक और छिपा हुआ)", + "goTo": "जाओ", + "startNode": "प्रारंभ नोड", + "openWorkflow": "वर्कफ़्लो खोलें" + }, + "nodes": { + "common": { + "outputVars": "आउटपुट वेरिएबल्स", + "insertVarTip": "वेरिएबल डालें", + "memory": { + "memory": "मेमोरी", + "memoryTip": "चैट मेमोरी सेटिंग्स", + "windowSize": "विंडो साइज", + "conversationRoleName": "वार्तालाप भूमिका का नाम", + "user": "यूजर प्रीफिक्स", + "assistant": "असिस्टेंट प्रीफिक्स" + }, + "memories": { + "title": "मेमोरीज", + "tip": "चैट मेमोरी", + "builtIn": "निर्मित" + }, + "errorHandle": { + "none": { + "title": "कोई नहीं", + "desc": "यदि कोई अपवाद होता है और हैंडल नहीं किया जाता है, तो नोड चलना बंद कर देगा" + }, + "defaultValue": { + "title": "डिफ़ॉल्ट मान", + "tip": "त्रुटि पर, मूल्य से नीचे लौटाएगा।", + "output": "आउटपुट डिफ़ॉल्ट मान", + "inLog": "नोड अपवाद, डिफ़ॉल्ट मानों के अनुसार आउटपुटिंग।", + "desc": "जब कोई त्रुटि होती है, तो एक स्थिर आउटपुट सामग्री निर्दिष्ट करें।" + }, + "failBranch": { + "title": "असफल शाखा", + "customize": "असफल शाखा तर्क को अनुकूलित करने के लिए कैनवास पर जाएं।", + "inLog": "नोड अपवाद, स्वचालित रूप से विफल शाखा निष्पादित करेगा। नोड आउटपुट एक त्रुटि प्रकार और त्रुटि संदेश लौटाएगा और उन्हें डाउनस्ट्रीम में पास करेगा।", + "desc": "जब कोई त्रुटि होती है, तो यह अपवाद शाखा निष्पादित करेगा", + "customizeTip": "जब विफल शाखा सक्रिय होती है, तो नोड्स द्वारा फेंके गए अपवाद प्रक्रिया को समाप्त नहीं करेंगे। इसके बजाय, यह स्वचालित रूप से पूर्वनिर्धारित विफल शाखा को निष्पादित करेगा, जिससे आप लचीले ढंग से त्रुटि संदेश, रिपोर्ट, सुधार या कार्रवाई छोड़ सकते हैं।" + }, + "partialSucceeded": { + "tip": "प्रक्रिया में {{num}} नोड्स असामान्य रूप से चल रहे हैं, कृपया लॉग की जांच करने के लिए ट्रेसिंग पर जाएं।" + }, + "title": "त्रुटि हैंडलिंग", + "tip": "अपवाद हैंडलिंग रणनीति, ट्रिगर जब एक नोड एक अपवाद का सामना करता है।" + }, + "retry": { + "times": "गुणा", + "ms": "सुश्री", + "retryInterval": "अंतराल का पुनः प्रयास करें", + "retrying": "पुनर्प्रयास।।।", + "retryFailed": "पुनः प्रयास विफल रहा", + "retryFailedTimes": "{{times}} पुनः प्रयास विफल रहे", + "retryTimes": "विफलता पर {{times}} बार पुनः प्रयास करें", + "retries": "{{num}} पुनर्प्रयास", + "maxRetries": "अधिकतम पुनः प्रयास करता है", + "retrySuccessful": "पुनः प्रयास सफल", + "retry": "पुनर्प्रयास", + "retryOnFailure": "विफलता पर पुनः प्रयास करें" + }, + "typeSwitch": { + "input": "इनपुट मान", + "variable": "चर का प्रयोग करें" + }, + "inputVars": "इनपुट चर", + "pluginNotInstalled": "प्लगइन इंस्टॉल नहीं है" + }, + "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": "सामग्री उत्पन्न करें", + "reasoning_content": "तर्क सामग्री", + "usage": "मॉडल उपयोग जानकारी" + }, + "singleRun": { + "variable": "वेरिएबल" + }, + "sysQueryInUser": "उपयोगकर्ता संदेश में sys.query आवश्यक है", + "jsonSchema": { + "warningTips": { + "saveSchema": "कृपया स्कीमा को सहेजने से पहले वर्तमान फ़ील्ड को संपादित करना पूरा करें" + }, + "apply": "लागू करें", + "promptPlaceholder": "अपने JSON स्किमा का वर्णन करें...", + "title": "संरचित आउटपुट स्कीमा", + "fieldNamePlaceholder": "क्षेत्र नाम", + "generate": "जनरेट करें", + "resultTip": "यहाँ उत्पन्न परिणाम है। यदि आप संतुष्ट नहीं हैं, तो आप वापस जा सकते हैं और अपने प्रॉम्प्ट को संशोधित कर सकते हैं।", + "generatedResult": "जनित परिणाम", + "import": "JSON से आयात करें", + "resetDefaults": "रीसेट करें", + "instruction": "निर्देश", + "regenerate": "पुनर्जीवित करें", + "generateJsonSchema": "JSON स्कीमा उत्पन्न करें", + "addField": "क्षेत्र जोड़ें", + "doc": "संरचित आउटपुट के बारे में अधिक जानें", + "back": "पीछे", + "promptTooltip": "पाठ विवरण को एक मानकीकृत JSON स्कीमा संरचना में परिवर्तित करें।", + "descriptionPlaceholder": "विवरण जोड़ें", + "generating": "JSON स्कीमा उत्पन्न करना...", + "showAdvancedOptions": "उन्नत विकल्प दिखाएँ", + "stringValidations": "स्ट्रिंग मान्यता", + "generationTip": "आप प्राकृतिक भाषा का उपयोग करके जल्दी से एक JSON स्कीमा बना सकते हैं।", + "required": "आवश्यक", + "addChildField": "बच्चे का क्षेत्र जोड़ें" + }, + "reasoningFormat": { + "title": "कारण संबंध टैग विभाजन सक्षम करें", + "separated": "अलग सोच टैग", + "tagged": "टैग्स के बारे में सोचते रहें", + "tooltip": "थिंक टैग से सामग्री निकाले और इसे reasoning_content क्षेत्र में संग्रहित करें।" + } + }, + "knowledgeRetrieval": { + "queryVariable": "प्रश्न वेरिएबल", + "knowledge": "ज्ञान", + "outputVars": { + "output": "प्राप्त विभाजित डेटा", + "content": "विभाजित सामग्री", + "title": "विभाजित शीर्षक", + "icon": "विभाजित आइकन", + "url": "विभाजित URL", + "metadata": "अन्य मेटाडेटा", + "files": "प्राप्त फ़ाइलें" + }, + "metadata": { + "options": { + "disabled": { + "title": "अक्षम", + "subTitle": "मेटाडेटा फ़िल्टरिंग को सक्षम नहीं करना" + }, + "automatic": { + "title": "स्वचालित", + "subTitle": "उपयोगकर्ता प्रश्न के आधार पर स्वचालित रूप से मेटाडेटा फिल्टरिंग शर्तें उत्पन्न करें।", + "desc": "क्वेरी वेरिएबल के आधार पर स्वचालित रूप से मेटाडेटा फ़िल्टरिंग शर्तें उत्पन्न करें" + }, + "manual": { + "subTitle": "हाथ से मेटाडेटा फ़िल्टरिंग स्थितियाँ जोड़ें", + "title": "मैनुअल" + } + }, + "panel": { + "placeholder": "मान डालें", + "add": "शर्त जोड़ें", + "title": "मेटाडेटा फ़िल्टर स्थितियाँ", + "select": "परिवर्तनशील को चुनें...", + "datePlaceholder": "एक समय चुनें...", + "conditions": "शर्तें", + "search": "खोज मेटाडेटा" + }, + "title": "मेटाडेटा फ़िल्टरिंग", + "tip": "मेटाडेटा छानने की प्रक्रिया है जिसमें मेटाडेटा विशेषताओं (जैसे टैग, श्रेणियाँ, या पहुंच अनुमतियाँ) का उपयोग करके एक प्रणाली के भीतर प्रासंगिक जानकारी की पुनर्प्राप्ति को सुधारने और नियंत्रित करने के लिए किया जाता है।" + }, + "queryText": "प्रश्न पाठ", + "queryAttachment": "क्वेरी इमेजेस" + }, + "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": "राइट टाइमआउट सेकंड में दर्ज करें" + }, + "type": "प्रकार", + "binaryFileVariable": "बाइनरी फ़ाइल चर", + "extractListPlaceholder": "सूची आइटम इंडेक्स दर्ज करें, '/' इन्सर्ट वेरिएबल टाइप करें", + "curl": { + "placeholder": "यहां cURL स्ट्रिंग पेस्ट करें", + "title": "cURL से आयात करें" + }, + "verifySSL": { + "title": "SSL प्रमाणपत्र की पुष्टि करें", + "warningTooltip": "SSL सत्यापन को अक्षम करना उत्पादन वातावरण के लिए अनुशंसित नहीं है। इसका उपयोग केवल विकास या परीक्षण में किया जाना चाहिए, क्योंकि यह कनेक्शन को मिडल-मैन हमलों जैसे सुरक्षा खतरों के लिए कमजोर बना देता है।" + } + }, + "code": { + "inputVars": "इनपुट वेरिएबल्स", + "outputVars": "आउटपुट वेरिएबल्स", + "advancedDependencies": "उन्नत निर्भरताएँ", + "advancedDependenciesTip": "कुछ प्रीलोडेड निर्भरताएँ जोड़ें जिनका उपयोग करने में अधिक समय लगता है या जो डिफ़ॉल्ट निर्मित में नहीं हैं", + "searchDependencies": "निर्भरताएँ खोजें", + "syncFunctionSignature": "कोड के साथ फ़ंक्शन हस्ताक्षर को सिंक करें" + }, + "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": "शून्य नहीं है", + "in": "में", + "all of": "के सभी", + "not exists": "मौजूद नहीं है", + "exists": "मौजूद है", + "not in": "नहीं है", + "before": "पहले", + "after": "बाद में" + }, + "enterValue": "मान दर्ज करें", + "addCondition": "शर्त जोड़ें", + "conditionNotSetup": "शर्त सेटअप नहीं है", + "selectVariable": "चर का चयन करें...", + "optionName": { + "url": "यूआरएल", + "video": "वीडियो", + "doc": "डॉक्टर", + "localUpload": "स्थानीय अपलोड", + "image": "छवि", + "audio": "ऑडियो" + }, + "select": "चुनना", + "addSubVariable": "उप चर" + }, + "variableAssigner": { + "title": "वेरिएबल्स असाइन करें", + "outputType": "आउटपुट प्रकार", + "varNotSet": "वेरिएबल सेट नहीं है", + "noVarTip": "असाइन किए जाने वाले वेरिएबल्स जोड़ें", + "type": { + "string": "स्ट्रिंग", + "number": "नंबर", + "object": "ऑब्जेक्ट", + "array": "ऐरे" + }, + "aggregationGroup": "एग्रीगेशन ग्रुप", + "aggregationGroupTip": "इस सुविधा को सक्षम करने से वेरिएबल एग्रीगेटर को मल्टीपल सेट्स ऑफ वेरिएबल्स को एग्रीगेट करने की अनुमति मिलती है।", + "addGroup": "ग्रुप जोड़ें", + "outputVars": { + "varDescribe": "{{groupName}} आउटपुट" + }, + "setAssignVariable": "असाइन वेरिएबल सेट करें" + }, + "assigner": { + "assignedVariable": "असाइन किया गया चर", + "writeMode": "लिखने का मोड", + "writeModeTip": "जब असाइन किया गया चर एक सरणी होता है, तो जोड़ने का मोड अंत में जोड़ता है।", + "over-write": "ओवरराइट करें", + "append": "जोड़ें", + "plus": "जमा", + "clear": "साफ़ करें", + "setVariable": "चर सेट करें", + "variable": "चर", + "operations": { + "clear": "स्पष्ट", + "/=": "/=", + "*=": "*=", + "over-write": "अधिलेखित", + "title": "परिचालन", + "+=": "+=", + "overwrite": "अधिलेखित", + "set": "अस्त हो", + "extend": "पसार", + "-=": "-=", + "append": "संलग्न", + "remove-first": "पहला हटाओ", + "remove-last": "अंतिम हटाएँ" + }, + "setParameter": "पैरामीटर सेट करें...", + "noVarTip": "चर जोड़ने के लिए \"+\" बटन पर क्लिक करें", + "variables": "चर", + "selectAssignedVariable": "असाइन किए गए चर का चयन करें...", + "varNotSet": "चर सेट नहीं", + "assignedVarsDescription": "असाइन किए गए चर लिखने योग्य चर होने चाहिए, जैसे वार्तालाप चर।", + "noAssignedVars": "कोई उपलब्ध असाइन किए गए चर नहीं" + }, + "tool": { + "inputVars": "इनपुट वेरिएबल्स", + "outputVars": { + "text": "उपकरण द्वारा उत्पन्न सामग्री", + "files": { + "title": "उपकरण द्वारा उत्पन्न फाइलें", + "type": "समर्थन प्रकार। अब केवल इमेज का समर्थन करता है", + "transfer_method": "ट्रांसफर मेथड। मान रिमोट_यूआरएल या लोकल_फाइल है", + "url": "इमेज यूआरएल", + "upload_file_id": "अपलोड फ़ाइल आईडी" + }, + "json": "उपकरण द्वारा उत्पन्न JSON" + }, + "authorize": "अधिकृत करें", + "insertPlaceholder1": "टाइप करें या दबाएँ", + "settings": "सेटिंग्स", + "insertPlaceholder2": "वेरिएबल डालें" + }, + "questionClassifiers": { + "model": "मॉडल", + "inputVars": "इनपुट वेरिएबल्स", + "outputVars": { + "className": "क्लास नाम", + "usage": "मॉडल उपयोग जानकारी" + }, + "class": "क्लास", + "classNamePlaceholder": "अपना क्लास नाम लिखें", + "advancedSetting": "उन्नत सेटिंग", + "topicName": "विषय नाम", + "topicPlaceholder": "अपना विषय नाम लिखें", + "addClass": "क्लास जोड़ें", + "instruction": "निर्देश", + "instructionTip": "प्रश्न वर्गीकरणकर्ता को प्रश्नों को वर्गीकृत करने के तरीके को समझने में मदद करने के लिए अतिरिक्त निर्देश दें।", + "instructionPlaceholder": "अपना निर्देश लिखें" + }, + "parameterExtractor": { + "inputVar": "इनपुट वेरिएबल", + "outputVars": { + "isSuccess": "सफलता है। सफलता पर मान 1 है, असफलता पर मान 0 है।", + "errorReason": "त्रुटि का कारण", + "usage": "मॉडल उपयोग जानकारी" + }, + "extractParameters": "पैरामीटर्स निकालें", + "importFromTool": "उपकरणों से आयात करें", + "addExtractParameter": "एक्सट्रेक्ट पैरामीटर जोड़ें", + "addExtractParameterContent": { + "name": "नाम", + "namePlaceholder": "एक्सट्रेक्ट पैरामीटर नाम", + "type": "प्रकार", + "typePlaceholder": "एक्सट्रेक्ट पैरामीटर प्रकार", + "description": "विवरण", + "descriptionPlaceholder": "एक्सट्रेक्ट पैरामीटर विवरण", + "required": "आवश्यक", + "requiredContent": "आवश्यक केवल मॉडल अनुमान के लिए एक संदर्भ के रूप में उपयोग किया जाता है, और पैरामीटर आउटपुट के अनिवार्य मान्यता के लिए नहीं।" + }, + "extractParametersNotSet": "एक्सट्रेक्ट पैरामीटर्स सेटअप नहीं किए गए हैं", + "instruction": "निर्देश", + "instructionTip": "पैरामीटर निकालने वाले को समझने में मदद करने के लिए अतिरिक्त निर्देश दें कि कैसे पैरामीटर्स निकालें।", + "advancedSetting": "उन्नत सेटिंग", + "reasoningMode": "रीज़निंग मोड", + "reasoningModeTip": "फ़ंक्शन कॉलिंग या प्रॉम्प्ट्स के लिए निर्देशों का जवाब देने की मॉडल की क्षमता के आधार पर उपयुक्त रीज़निंग मोड चुन सकते हैं।" + }, + "iteration": { + "deleteTitle": "इटरेशन नोड हटाएं?", + "deleteDesc": "इटरेशन नोड हटाने से सभी चाइल्ड नोड्स हट जाएंगे", + "input": "इनपुट", + "output": "आउटपुट वेरिएबल्स", + "iteration_one": "{{count}} इटरेशन", + "iteration_other": "{{count}} इटरेशन्स", + "currentIteration": "वर्तमान इटरेशन", + "ErrorMethod": { + "operationTerminated": "समाप्त", + "continueOnError": "जारी रखें-पर-त्रुटि", + "removeAbnormalOutput": "निकालें-असामान्य-आउटपुट" + }, + "comma": ",", + "error_other": "{{गिनती}} त्रुटियों", + "error_one": "{{गिनती}} चूक", + "parallelMode": "समानांतर मोड", + "parallelModeUpper": "समानांतर मोड", + "errorResponseMethod": "त्रुटि प्रतिक्रिया विधि", + "MaxParallelismTitle": "अधिकतम समांतरता", + "parallelModeEnableTitle": "समानांतर मोड सक्षम किया गया", + "parallelModeEnableDesc": "समानांतर मोड में, पुनरावृत्तियों के भीतर कार्य समानांतर निष्पादन का समर्थन करते हैं। आप इसे दाईं ओर गुण पैनल में कॉन्फ़िगर कर सकते हैं।", + "parallelPanelDesc": "समानांतर मोड में, पुनरावृत्ति में कार्य समानांतर निष्पादन का समर्थन करते हैं।", + "MaxParallelismDesc": "अधिकतम समांतरता का उपयोग एकल पुनरावृत्ति में एक साथ निष्पादित कार्यों की संख्या को नियंत्रित करने के लिए किया जाता है।", + "answerNodeWarningDesc": "समानांतर मोड चेतावनी: उत्तर नोड्स, वार्तालाप चर असाइनमेंट, और पुनरावृत्तियों के भीतर लगातार पढ़ने/लिखने की कार्रवाई अपवाद पैदा कर सकती है।", + "flattenOutput": "आउटपुट को सपाट करें", + "flattenOutputDesc": "जब सक्षम किया जाता है, यदि सभी पुनरावृत्ति आउटपुट सरणियाँ हैं, तो उन्हें एक ही सरणी में समतल कर दिया जाएगा। जब अक्षम किया जाता है, तो आउटपुट घोंसले वाली सरणी संरचना बनाए रखेगा।" + }, + "note": { + "addNote": "नोट जोड़ें", + "editor": { + "placeholder": "अपना नोट लिखें...", + "small": "छोटा", + "medium": "मध्यम", + "large": "बड़ा", + "bold": "बोल्ड", + "italic": "इटैलिक", + "strikethrough": "स्ट्राइकथ्रू", + "link": "लिंक", + "openLink": "खोलें", + "unlink": "लिंक हटाएं", + "enterUrl": "URL दर्ज करें...", + "invalidUrl": "अवैध URL", + "bulletList": "बुलेट लिस्ट", + "showAuthor": "लेखक दिखाएं" + } + }, + "docExtractor": { + "outputVars": { + "text": "निकाला गया पाठ" + }, + "learnMore": "और जानो", + "supportFileTypes": "समर्थन फ़ाइल प्रकार: {{प्रकार}}।", + "inputVar": "इनपुट वेरिएबल" + }, + "listFilter": { + "outputVars": { + "result": "परिणाम फ़िल्टर करें", + "last_record": "पिछला रिकॉर्ड", + "first_record": "पहला रिकॉर्ड" + }, + "limit": "शीर्ष N", + "asc": "एएससी", + "filterConditionKey": "फ़िल्टर स्थिति कुंजी", + "filterConditionComparisonValue": "फ़िल्टर स्थिति मान", + "filterCondition": "फ़िल्टर की स्थिति", + "orderBy": "द्वारा आदेश दें", + "desc": "विवरण", + "filterConditionComparisonOperator": "फ़िल्टर शर्त तुलन ऑपरेटर", + "selectVariableKeyPlaceholder": "उप चर कुंजी का चयन करें", + "inputVar": "इनपुट वेरिएबल", + "extractsCondition": "N आइटम निकालें" + }, + "agent": { + "strategy": { + "shortLabel": "रणनीति", + "label": "एजेंटिक रणनीति", + "selectTip": "एजेंटिक रणनीति चुनें", + "searchPlaceholder": "एजेंटिक रणनीति खोजें", + "configureTip": "कृपया एजेंटिक रणनीति को कॉन्फ़िगर करें।", + "configureTipDesc": "एजेंटिक रणनीति को कॉन्फ़िगर करने के बाद, यह नोड स्वचालित रूप से शेष कॉन्फ़िगरेशन लोड करेगा। यह रणनीति बहु-चरण उपकरण तर्क के तंत्र को प्रभावित करेगी।", + "tooltip": "विभिन्न एजेंटिक रणनीतियाँ निर्धारित करती हैं कि प्रणाली बहु-चरण उपकरण कॉल की योजना कैसे बनाती है और उन्हें कैसे निष्पादित करती है।" + }, + "pluginInstaller": { + "install": "स्थापित करें", + "installing": "स्थापित करना" + }, + "modelNotInMarketplace": { + "desc": "यह मॉडल स्थानीय या गिटहब रिपॉजिटरी से स्थापित किया गया है। कृपया स्थापना के बाद उपयोग करें।", + "manageInPlugins": "प्लगइन्स में प्रबंधित करें", + "title": "मॉडल स्थापित नहीं है" + }, + "modelNotSupport": { + "desc": "स्थापित प्लगइन संस्करण इस मॉडल को प्रदान नहीं करता है।", + "descForVersionSwitch": "स्थापित प्लगइन संस्करण इस मॉडल को प्रदान नहीं करता है। संस्करण बदलने के लिए क्लिक करें।", + "title": "असमर्थित मॉडल" + }, + "modelSelectorTooltips": { + "deprecated": "यह मॉडल अप्रचलित है।" + }, + "outputVars": { + "files": { + "transfer_method": "स्थानांतरण विधि। मान या तो remote_url है या local_file।", + "url": "छवि यूआरएल", + "upload_file_id": "फाइल आईडी अपलोड करें", + "type": "समर्थन प्रकार। अब केवल समर्थन छवि", + "title": "एजेंट द्वारा उत्पन्न फ़ाइलें" + }, + "text": "एजेंट द्वारा उत्पन्न सामग्री", + "usage": "मॉडल उपयोग जानकारी", + "json": "एजेंट द्वारा उत्पन्न जेसन" + }, + "checkList": { + "strategyNotSelected": "रणनीति का चयन नहीं किया गया" + }, + "installPlugin": { + "install": "स्थापित करें", + "title": "प्लगइन स्थापित करें", + "changelog": "परिवर्तन लॉग", + "desc": "निम्नलिखित प्लगइन स्थापित करने वाले हैं", + "cancel": "रद्द करें" + }, + "unsupportedStrategy": "असमर्थित रणनीति", + "modelNotSelected": "मॉडल का चयन नहीं किया गया", + "tools": "उपकरण", + "strategyNotInstallTooltip": "{{strategy}} स्थापित नहीं है", + "toolNotInstallTooltip": "{{tool}} स्थापित नहीं है", + "toolbox": "टूलबॉक्स", + "learnMore": "और अधिक जानें", + "strategyNotFoundDesc": "स्थापित प्लगइन संस्करण यह रणनीति प्रदान नहीं करता है।", + "toolNotAuthorizedTooltip": "{{tool}} अधिकृत नहीं है", + "pluginNotInstalled": "यह प्लगइन स्थापित नहीं है", + "model": "मॉडल", + "notAuthorized": "अधिकृत नहीं", + "pluginNotInstalledDesc": "यह प्लगइन गिटहब से स्थापित किया गया है। कृपया पुनः स्थापित करने के लिए प्लगइन्स पर जाएं।", + "configureModel": "मॉडल कॉन्फ़िगर करें", + "linkToPlugin": "प्लगइन्स के लिए लिंक", + "modelNotInstallTooltip": "यह मॉडल स्थापित नहीं है", + "pluginNotFoundDesc": "यह प्लगइन गिटहब से स्थापित किया गया है। कृपया पुनः स्थापित करने के लिए प्लगइन्स पर जाएं।", + "maxIterations": "अधिकतम पुनरावृत्तियाँ", + "strategyNotSet": "एजेंटिक रणनीति सेट नहीं की गई", + "strategyNotFoundDescAndSwitchVersion": "स्थापित प्लगइन संस्करण इस रणनीति को प्रदान नहीं करता है। संस्करण बदलने के लिए क्लिक करें।", + "parameterSchema": "पैरामीटर स्कीमा", + "clickToViewParameterSchema": "पैरामीटर स्कीमा देखने के लिए क्लिक करें" + }, + "loop": { + "ErrorMethod": { + "continueOnError": "त्रुटि पर जारी रखें", + "removeAbnormalOutput": "असामान्य आउटपुट हटाएं", + "operationTerminated": "समाप्त" + }, + "inputMode": "इनपुट मोड", + "output": "आउटपुट वेरिएबल", + "input": "इनपुट", + "loop_other": "{{count}} लूप्स", + "currentLoop": "वर्तमान लूप", + "deleteTitle": "लूप नोड हटाएँ?", + "error_other": "{{count}} त्रुटियाँ", + "loopMaxCount": "अधिकतम लूप गणना", + "comma": ",", + "deleteDesc": "लूप नोड को हटाने से सभी बाल नोड हट जाएंगे", + "error_one": "{{count}} त्रुटि", + "currentLoopCount": "वर्तमान लूप गिनती: {{count}}", + "loopNode": "लूप नोड", + "loop_one": "{{count}} लूप", + "initialLoopVariables": "प्रारंभिक लूप चर", + "finalLoopVariables": "अंतिम लूप वेरिएबल्स", + "variableName": "चर चर नाम", + "errorResponseMethod": "त्रुटि प्रतिक्रिया विधि", + "totalLoopCount": "कुल लूप गिनती: {{count}}", + "breakCondition": "लूप समाप्ति स्थिति", + "loopMaxCountError": "कृपया अधिकतम लूप संख्या दर्ज करें, जो 1 से {{maxCount}} के बीच हो", + "setLoopVariables": "लूप स्कोप के भीतर वेरिएबल सेट करें", + "exitConditionTip": "एक लूप नोड को कम से कम एक निकासी स्थिति की आवश्यकता होती है", + "loopVariables": "लूप वेरियेबल्स", + "breakConditionTip": "सिर्फ उन चर को संदर्भित किया जा सकता है जो लूप के भीतर हैं जिनमें समाप्ति की शर्तें और बातचीत के चर हैं।" + }, + "dataSource": { + "supportedFileFormats": "समर्थित फ़ाइल प्रारूप", + "add": "डेटा स्रोत जोड़ें", + "supportedFileFormatsPlaceholder": "फाइल एक्सटेंशन, जैसे कि doc" + }, + "knowledgeBase": { + "chunkStructureTip": { + "learnMore": "और अधिक सीखें", + "title": "कृपया एक भाग संरचना चुनें", + "message": "Dify ज्ञान आधार तीन चंकिंग संरचनाओं का समर्थन करता है: सामान्य, माता-पिता-बच्चे, और प्रश्नोत्तर। प्रत्येक ज्ञान आधार केवल एक संरचना रख सकता है। पूर्ववर्ती नोड से आउटपुट को चयनित चंक संरचना के साथ मेल खाना चाहिए। ध्यान दें कि चंकिंग संरचना का चुनाव उपलब्ध अनुक्रमण विधियों को प्रभावित करता है।" + }, + "chunkStructure": "खंड संरचना", + "chunkIsRequired": "चंक संरचना आवश्यक है", + "indexMethodIsRequired": "सूची विधि आवश्यक है", + "retrievalSettingIsRequired": "पुनप्राप्ति सेटिंग आवश्यक है", + "changeChunkStructure": "चंक संरचना बदलें", + "aboutRetrieval": "पुनर्प्राप्ति विधि के बारे में।", + "chooseChunkStructure": "एक चंक संरचना चुनें", + "chunksInput": "टुकड़े", + "chunksInputTip": "ज्ञान आधार नोड का इनपुट वेरिएबल टुकड़े है। वेरिएबल प्रकार एक ऑब्जेक्ट है जिसमें एक विशेष JSON स्कीमा है जो चयनित चंक संरचना के साथ सुसंगत होना चाहिए।", + "chunksVariableIsRequired": "टुकड़े चर आवश्यक है", + "embeddingModelIsRequired": "एम्बेडिंग मॉडल आवश्यक है", + "rerankingModelIsRequired": "पुनः क्रमांकन मॉडल की आवश्यकता है", + "rerankingModelIsInvalid": "पुनः क्रमांकन मॉडल अमान्य है", + "embeddingModelIsInvalid": "एम्बेडिंग मॉडल अमान्य है" + }, + "triggerPlugin": { + "authorized": "अधिकृत", + "notConfigured": "कॉन्फ़िगर नहीं किया गया", + "notAuthorized": "अधिकृत नहीं", + "selectSubscription": "सदस्यता चुनें", + "availableSubscriptions": "उपलब्ध सदस्यताएँ", + "addSubscription": "नई सदस्यता जोड़ें", + "removeSubscription": "सदस्यता हटाएँ", + "subscriptionRemoved": "सब्सक्रिप्शन सफलतापूर्वक हटा दिया गया", + "error": "त्रुटि", + "configuration": "कॉन्फ़िगरेशन", + "remove": "हटाएँ", + "or": "या", + "useOAuth": "OAuth का उपयोग करें", + "useApiKey": "API कुंजी का उपयोग करें", + "authenticationFailed": "प्रमाणीकरण विफल", + "authenticationSuccess": "प्रमाणीकरण सफल", + "oauthConfigFailed": "OAuth कॉन्फ़िगरेशन विफल हुआ", + "configureOAuthClient": "OAuth क्लाइंट कॉन्फ़िगर करें", + "oauthClientDescription": "प्रमाणीकरण सक्षम करने के लिए OAuth क्लाइंट क्रेडेंशियल्स कॉन्फ़िगर करें", + "oauthClientSaved": "OAuth क्लाइंट कॉन्फ़िगरेशन सफलतापूर्वक सहेजा गया", + "configureApiKey": "एपीआई कुंजी कॉन्फ़िगर करें", + "apiKeyDescription": "प्रमाणीकरण के लिए एपीआई कुंजी क्रेडेंशियल कॉन्फ़िगर करें", + "apiKeyConfigured": "एपीआई कुंजी सफलतापूर्वक कॉन्फ़िगर की गई", + "configurationFailed": "कॉन्फ़िगरेशन असफल हुआ", + "failedToStart": "प्रमाणीकरण प्रवाह शुरू करने में विफल", + "credentialsVerified": "प्रमाण-पत्र सफलतापूर्वक सत्यापित किए गए", + "credentialVerificationFailed": "प्रमाणीकरण विफल हुआ", + "verifyAndContinue": "सत्यापित करें और जारी रखें", + "configureParameters": "पैरामीटर कॉन्फ़िगर करें", + "parametersDescription": "ट्रिगर पैरामीटर और गुणों को कॉन्फ़िगर करें", + "configurationComplete": "कॉन्फ़िगरेशन पूरा", + "configurationCompleteDescription": "आपका ट्रिगर सफलतापूर्वक कॉन्फ़िगर किया गया है", + "configurationCompleteMessage": "आपका ट्रिगर कॉन्फ़िगरेशन अब पूरा हो गया है और उपयोग के लिए तैयार है।", + "parameters": "पैरामीटर", + "properties": "संपत्तियाँ", + "propertiesDescription": "इस ट्रिगर के लिए अतिरिक्त कॉन्फ़िगरेशन प्रॉपर्टीज़", + "noConfigurationRequired": "इस ट्रिगर के लिए किसी अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता नहीं है।", + "subscriptionName": "सदस्यता का नाम", + "subscriptionNameDescription": "इस ट्रिगर सब्सक्रिप्शन के लिए एक अद्वितीय नाम दर्ज करें", + "subscriptionNamePlaceholder": "सब्सक्रिप्शन नाम दर्ज करें...", + "subscriptionNameRequired": "सदस्यता का नाम आवश्यक है", + "subscriptionRequired": "सब्सक्रिप्शन आवश्यक है" + }, + "triggerSchedule": { + "title": "अनुसूची", + "nodeTitle": "अनुसूची ट्रिगर", + "notConfigured": "कॉन्फ़िगर नहीं किया गया", + "useCronExpression": "क्रोन एक्सप्रेशन का उपयोग करें", + "useVisualPicker": "विज़ुअल पिकर का उपयोग करें", + "frequency": { + "label": "आवृत्ति", + "hourly": "प्रति घंटा", + "daily": "दैनिक", + "weekly": "साप्ताहिक", + "monthly": "मासिक" + }, + "selectFrequency": "आवृत्ति चुनें", + "frequencyLabel": "आवृत्ति", + "nextExecution": "अगला निष्पादन", + "weekdays": "सप्ताह के दिन", + "time": "समय", + "cronExpression": "क्रॉन एक्सप्रेशन", + "nextExecutionTime": "अगली निष्पादन समय", + "nextExecutionTimes": "अगली 5 निष्पादन समय", + "startTime": "प्रारंभ समय", + "executeNow": "अब निष्पादन", + "selectDateTime": "तारीख़ और समय चुनें", + "hours": "घंटे", + "minutes": "मिनट", + "onMinute": "एक मिनट पर", + "days": "दिन", + "lastDay": "अंतिम दिन", + "lastDayTooltip": "सभी महीनों में 31 दिन नहीं होते। हर महीने का अंतिम दिन चुनने के लिए 'अंतिम दिन' विकल्प का उपयोग करें।", + "mode": "मोड", + "timezone": "समय क्षेत्र", + "visualConfig": "दृश्य कॉन्फ़िगरेशन", + "monthlyDay": "मासिक दिवस", + "executionTime": "क्रियान्वयन समय", + "invalidTimezone": "अमान्य समय क्षेत्र", + "invalidCronExpression": "अमान्य क्रॉन अभिव्यक्ति", + "noValidExecutionTime": "कोई मान्य निष्पादन समय नहीं निकाला जा सकता", + "executionTimeCalculationError": "निष्पादन समय की गणना करने में असफल", + "invalidFrequency": "अमान्य आवृत्ति", + "invalidStartTime": "अमान्य प्रारंभ समय", + "startTimeMustBeFuture": "आरंभ समय भविष्य में होना चाहिए", + "invalidTimeFormat": "अमान्य समय प्रारूप (अपेक्षित HH:MM AM/PM)", + "invalidWeekday": "अमान्य सप्ताह का दिन: {{weekday}}", + "invalidMonthlyDay": "मासिक दिन 1-31 या \"अंतिम\" के बीच होना चाहिए", + "invalidOnMinute": "मिनट 0-59 के बीच होना चाहिए", + "invalidExecutionTime": "अमान्य निष्पादन समय", + "executionTimeMustBeFuture": "कार्यन्वयन समय भविष्य में होना चाहिए" + }, + "triggerWebhook": { + "title": "वेबहूक ट्रिगर", + "nodeTitle": "🔗 वेबहूक ट्रिगर", + "configPlaceholder": "Webhook ट्रिगर कॉन्फ़िगरेशन यहाँ लागू किया जाएगा", + "webhookUrl": "वेबहूक URL", + "webhookUrlPlaceholder": "वेबहुक URL बनाने के लिए जनरेट पर क्लिक करें", + "generate": "उत्पन्न करना", + "copy": "कॉपी", + "test": "परीक्षण", + "urlGenerated": "Webhook URL सफलतापूर्वक उत्पन्न किया गया", + "urlGenerationFailed": "वेबहुक URL बनाने में असफल", + "urlCopied": "URL क्लिपबोर्ड में कॉपी किया गया", + "method": "विधि", + "contentType": "सामग्री प्रकार", + "queryParameters": "क्वेरी पैरामीटर्स", + "headerParameters": "हेडर पैरामीटर्स", + "requestBodyParameters": "रिक्वेस्ट बॉडी पैरामीटर्स", + "parameterName": "चर का नाम", + "varName": "चर का नाम", + "varType": "टाइप", + "varNamePlaceholder": "चर नाम दर्ज करें...", + "required": "आवश्यक", + "addParameter": "जोड़ें", + "addHeader": "जोड़ें", + "noParameters": "कोई पैरामीटर कॉन्फ़िगर नहीं किया गया", + "noQueryParameters": "कोई क्वेरी पैरामीटर कॉन्फ़िगर नहीं किया गया", + "noHeaders": "कोई हेडर कॉन्फ़िगर नहीं किया गया", + "noBodyParameters": "कोई बॉडी पैरामीटर कॉन्फ़िगर नहीं किया गया", + "debugUrlTitle": "परीक्षण रन के लिए, हमेशा इस URL का उपयोग करें", + "debugUrlCopy": "कॉपी करने के लिए क्लिक करें", + "debugUrlCopied": "कॉपी किया गया!", + "debugUrlPrivateAddressWarning": "यह URL आंतरिक पता प्रतीत होता है, जिससे वेबहुक अनुरोध विफल हो सकते हैं। आप TRIGGER_URL को एक सार्वजनिक पते में बदल सकते हैं।", + "errorHandling": "त्रुटि प्रबंधन", + "errorStrategy": "त्रुटि प्रबंधन", + "responseConfiguration": "प्रतिक्रिया", + "asyncMode": "असिंक मोड", + "statusCode": "स्थिति कोड", + "responseBody": "प्रतिक्रिया बॉडी", + "responseBodyPlaceholder": "यहाँ अपना उत्तर正文 लिखें", + "headers": "हेडर", + "validation": { + "webhookUrlRequired": "Webhook URL आवश्यक है", + "invalidParameterType": "पैरामीटर \"{{name}}\" के लिए अमान्य पैरामीटर प्रकार \"{{type}}\"" + } + } + }, + "tracing": { + "stopBy": "{{user}} द्वारा रोका गया" + }, + "variableReference": { + "conversationVars": "बातचीत चर", + "noAvailableVars": "कोई उपलब्ध चर नहीं", + "assignedVarsDescription": "असाइन किए गए चर लिखने योग्य चर होने चाहिए, जैसे", + "noVarsForOperation": "चयनित कार्रवाई के साथ असाइनमेंट के लिए कोई चर उपलब्ध नहीं हैं.", + "noAssignedVars": "कोई उपलब्ध असाइन किए गए चर नहीं" + }, + "versionHistory": { + "filter": { + "reset": "फिल्टर रीसेट करें", + "all": "सब", + "onlyShowNamedVersions": "केवल नामित संस्करण दिखाएँ", + "onlyYours": "बस तुम्हारा", + "empty": "कोई मेल खाता हुआ संस्करण इतिहास नहीं मिला" + }, + "editField": { + "title": "शीर्षक", + "releaseNotesLengthLimit": "रिलीज नोट्स {{limit}} अक्षरों से अधिक नहीं हो सकते हैं", + "titleLengthLimit": "शीर्षक {{limit}} अक्षरों से अधिक नहीं होना चाहिए", + "releaseNotes": "रिलीज़ नोट्स" + }, + "action": { + "deleteFailure": "संस्करण को हटाने में विफल", + "deleteSuccess": "संस्करण हटाया गया", + "restoreSuccess": "संस्करण पुनर्स्थापित किया गया", + "updateSuccess": "संस्करण अपडेट किया गया", + "updateFailure": "संस्करण अपडेट करने में विफल", + "restoreFailure": "संस्करण को पुनर्स्थापित करने में विफल", + "copyIdSuccess": "आईडी क्लिपबोर्ड पर कॉपी हो गई" + }, + "latest": "लेटेस्ट", + "editVersionInfo": "संस्करण की जानकारी संपादित करें", + "nameThisVersion": "इस संस्करण का नाम दें", + "title": "संस्करण", + "releaseNotesPlaceholder": "बताइए कि क्या बदला", + "currentDraft": "वर्तमान मसौदा", + "restorationTip": "संस्करण पुनर्स्थापन के बाद, वर्तमान ड्राफ्ट अधिलेखित किया जाएगा।", + "defaultName": "अविभाजित संस्करण", + "deletionTip": "हटाना अप्रतिबंधी है, कृपया पुष्टि करें।", + "copyId": "आईडी कॉपी करें" + }, + "debug": { + "noData": { + "runThisNode": "इस नोड को चलाएँ", + "description": "अंतिम दौड़ के परिणाम यहाँ प्रदर्शित किए जाएंगे" + }, + "variableInspect": { + "trigger": { + "clear": "स्पष्ट", + "stop": "रुको दौड़", + "running": "कैशिंग चल रहा स्थिति", + "normal": "चर चरखा", + "cached": "कैश की गई परिवर्तनीयताओं को देखें" + }, + "emptyLink": "और जानें", + "systemNode": "प्रणाली", + "chatNode": "संवाद", + "reset": "अंतिम रन मान पर रीसेट करें", + "view": "लॉग देखें", + "clearAll": "सभी रीसेट करें", + "title": "चर चर के निरीक्षण", + "edited": "संशोधित किया गया", + "envNode": "पर्यावरण", + "clearNode": "कैश की गई वैरिएबल को साफ करें", + "resetConversationVar": "संवाद चर को डिफ़ॉल्ट मान पर रीसेट करें", + "emptyTip": "कैनवास पर एक नोड पर कदम रखने के बाद या चरण दर चरण एक नोड चलाने के बाद, आप वेरिएबल इंस्पेक्ट में नोड वेरिएबल का वर्तमान मान देख सकते हैं।", + "export": "निर्यात", + "exportToolTip": "फ़ाइल के रूप में निर्यात चर", + "largeDataNoExport": "विशाल डेटा - केवल आंशिक पूर्वावलोकन", + "largeData": "बड़ा डाटा, केवल पढ़ने के लिए पूर्वावलोकन। सभी देखने के लिए निर्यात करें।", + "listening": { + "title": "ट्रिगर से घटनाओं को सुनना...", + "tip": "अब आप टेस्ट अनुरोध भेजकर HTTP {{nodeName}} एंडपॉइंट पर इवेंट ट्रिगर्स का सिमुलेशन कर सकते हैं या इसे लाइव इवेंट डिबगिंग के लिए कॉलबैक URL के रूप में उपयोग कर सकते हैं। सभी आउटपुट सीधे वेरिएबल इंस्पेक्टर में देखे जा सकते हैं।", + "tipPlugin": "अब आप {{- pluginName}} में ईवेंट बना सकते हैं, और वैरिएबल इंस्पेक्टर में इन ईवेंट्स के आउटपुट प्राप्त कर सकते हैं।", + "tipSchedule": "अनुसूची ट्रिगर्स से घटनाओं के लिए सुनना।\nअगली निर्धारित रन: {{nextTriggerTime}}", + "tipFallback": "आगामी ट्रिगर घटनाओं की प्रतीक्षा करें। आउटपुट्स यहाँ दिखाई देंगे।", + "defaultNodeName": "यह ट्रिगर", + "defaultPluginName": "यह प्लगइन ट्रिगर", + "defaultScheduleTime": "कॉन्फ़िगर नहीं किया गया", + "selectedTriggers": "चयनित ट्रिगर्स", + "stopButton": "रुकें" + } + }, + "settingsTab": "सेटिंग्स", + "lastRunTab": "अंतिम रन", + "relations": { + "dependents": "निष्पाभ लोग", + "dependentsDescription": "इस नोड पर निर्भर नोड्स", + "dependencies": "निर्भरता", + "noDependents": "कोई आश्रित नहीं", + "dependenciesDescription": "यह नोड जिस नोड पर निर्भर करता है", + "noDependencies": "कोई निर्भरताएँ नहीं" + }, + "relationsTab": "रिश्ते", + "copyLastRun": "अंतिम रन कॉपी करें", + "noLastRunFound": "कोई पिछला रन नहीं मिला", + "noMatchingInputsFound": "अंतिम रन से कोई मेल खाने वाले इनपुट नहीं मिले", + "copyLastRunError": "अंतिम रन इनपुट को कॉपी करने में विफल", + "lastOutput": "अंतिम आउटपुट", + "lastRunInputsCopied": "{{count}} इनपुट पिछली रन से कॉपी किए गए" + }, + "sidebar": { + "exportWarning": "वर्तमान सहेजी गई संस्करण निर्यात करें", + "exportWarningDesc": "यह आपके कार्यप्रवाह का वर्तमान सहेजा हुआ संस्करण निर्यात करेगा। यदि आपके संपादक में कोई असहेजा किए गए परिवर्तन हैं, तो कृपया पहले उन्हें सहेजें, कार्यप्रवाह कैनवास में निर्यात विकल्प का उपयोग करके।" + }, + "publishLimit": { + "startNodeTitlePrefix": "अपग्रेड करें", + "startNodeTitleSuffix": "प्रत्येक वर्कफ़्लो के लिए असीमित ट्रिगर्स अनलॉक करें", + "startNodeDesc": "इस योजना के लिए आप प्रति वर्कफ़्लो 2 ट्रिगर्स की सीमा तक पहुँच चुके हैं। इस वर्कफ़्लो को प्रकाशित करने के लिए अपग्रेड करें।" + }, + "error": { + "startNodeRequired": "कृपया {{operation}} से पहले एक प्रारंभ नोड जोड़ें", + "operations": { + "connectingNodes": "नोड्स को जोड़ना", + "addingNodes": "नोड जोड़ना", + "modifyingWorkflow": "कार्यप्रवाह संशोधित करना", + "updatingWorkflow": "वर्कफ़्लो को अपडेट करना" + } + }, + "customWebhook": "कस्टम वेबहुक", + "difyTeam": "डिफ़ी टीम", + "triggerStatus": { + "enabled": "ट्रिगर", + "disabled": "ट्रिगर • अक्षम" + }, + "entryNodeStatus": { + "enabled": "शुरू", + "disabled": "प्रारंभ • अक्षम" + }, + "onboarding": { + "title": "शुरू करने के लिए एक प्रारंभिक नोड चुनें", + "description": "विभिन्न प्रारंभिक नोड्स की विभिन्न क्षमताएँ होती हैं। चिंता मत करो, आप उन्हें बाद में हमेशा बदल सकते हैं।", + "userInputFull": "उपयोगकर्ता इनपुट (मूल प्रारंभ नोड)", + "userInputDescription": "स्टार्ट नोड जो उपयोगकर्ता इनपुट वेरिएबल सेट करने की अनुमति देता है, जिसमें टूल क्षमताओं के रूप में वेब ऐप, सर्विस API, MCP सर्वर और वर्कफ़्लो शामिल हैं।", + "trigger": "ट्रिगर", + "triggerDescription": "ट्रिगर वर्कफ़्लो का प्रारंभिक नोड हो सकते हैं, जैसे कि निर्धारित कार्य, कस्टम वेबहुक, या अन्य ऐप्स के साथ एकीकरण।", + "back": "वापस", + "learnMore": "और जानें", + "aboutStartNode": "स्टार्ट नोड के बारे में।", + "escTip": { + "press": "दबाएँ", + "key": "एस्केप", + "toDismiss": "अस्वीकार करना" + } + } +} diff --git a/web/i18n/hi-IN/workflow.ts b/web/i18n/hi-IN/workflow.ts deleted file mode 100644 index 9f5c9828cd..0000000000 --- a/web/i18n/hi-IN/workflow.ts +++ /dev/null @@ -1,1316 +0,0 @@ -const translation = { - common: { - undo: 'पूर्ववत करें', - redo: 'फिर से करें', - editing: 'संपादन', - autoSaved: 'स्वतः सहेजा गया', - unpublished: 'अप्रकाशित', - published: 'प्रकाशित', - publish: 'प्रकाशित करें', - update: 'अपडेट करें', - run: 'परीक्षण चलाएं', - running: 'चल रहा है', - inRunMode: 'रन मोड में', - inPreview: 'पूर्वावलोकन में', - inPreviewMode: 'पूर्वावलोकन मोड में', - preview: 'पूर्वावलोकन', - viewRunHistory: 'रन इतिहास देखें', - runHistory: 'रन इतिहास', - goBackToEdit: 'संपादक पर वापस जाएं', - conversationLog: 'वार्तालाप लॉग', - debugAndPreview: 'पूर्वावलोकन', - restart: 'पुनः आरंभ करें', - currentDraft: 'वर्तमान ड्राफ्ट', - currentDraftUnpublished: 'वर्तमान ड्राफ्ट अप्रकाशित', - latestPublished: 'नवीनतम प्रकाशित', - publishedAt: 'प्रकाशित', - restore: 'पुनर्स्थापित करें', - runApp: 'ऐप चलाएं', - batchRunApp: 'बैच ऐप चलाएं', - accessAPIReference: 'एपीआई संदर्भ तक पहुंचें', - embedIntoSite: 'साइट में एम्बेड करें', - addTitle: 'शीर्षक जोड़ें...', - addDescription: 'विवरण जोड़ें...', - noVar: 'कोई वेरिएबल नहीं', - searchVar: 'वेरिएबल खोजें', - variableNamePlaceholder: 'वेरिएबल नाम', - setVarValuePlaceholder: 'वेरिएबल सेट करें', - needConnectTip: 'यह चरण किसी से जुड़ा नहीं है', - maxTreeDepth: 'प्रति शाखा अधिकतम {{depth}} नोड्स की सीमा', - workflowProcess: 'कार्यप्रवाह प्रक्रिया', - notRunning: 'अभी तक नहीं चल रहा', - previewPlaceholder: - 'चैटबॉट का डीबग शुरू करने के लिए नीचे दिए गए बॉक्स में सामग्री दर्ज करें', - effectVarConfirm: { - title: 'वेरिएबल हटाएं', - content: - 'वेरिएबल अन्य नोड्स में उपयोग किया जाता है। क्या आप अभी भी इसे हटाना चाहते हैं?', - }, - insertVarTip: 'जल्दी से डालने के लिए \'/\' कुंजी दबाएं', - processData: 'डेटा प्रोसेस करें', - input: 'इनपुट', - output: 'आउटपुट', - jinjaEditorPlaceholder: 'वेरिएबल डालने के लिए \'/\' या \'{\' टाइप करें', - viewOnly: 'केवल देखें', - showRunHistory: 'रन इतिहास दिखाएं', - enableJinja: 'Jinja टेम्पलेट समर्थन सक्षम करें', - learnMore: 'अधिक जानें', - copy: 'कॉपी करें', - duplicate: 'डुप्लिकेट करें', - pasteHere: 'यहां पेस्ट करें', - pointerMode: 'पॉइंटर मोड', - handMode: 'हैंड मोड', - model: 'मॉडल', - workflowAsTool: 'टूल के रूप में कार्यप्रवाह', - configureRequired: 'कॉन्फ़िगरेशन आवश्यक', - configure: 'कॉन्फ़िगर करें', - manageInTools: 'टूल्स में प्रबंधित करें', - workflowAsToolTip: - 'कार्यप्रवाह अपडेट के बाद टूल पुनः कॉन्फ़िगरेशन आवश्यक है।', - viewDetailInTracingPanel: 'विवरण देखें', - syncingData: 'डेटा सिंक हो रहा है, बस कुछ सेकंड।', - overwriteAndImport: 'अधिलेखित और आयात', - importSuccess: 'सफलता आयात करें', - chooseDSL: 'डीएसएल (वाईएमएल) फ़ाइल चुनें', - importDSL: 'DSL आयात करें', - backupCurrentDraft: 'बैकअप वर्तमान ड्राफ्ट', - importFailure: 'आयात विफलता', - importDSLTip: 'वर्तमान ड्राफ्ट ओवरराइट हो जाएगा। आयात करने से पहले वर्कफ़्लो को बैकअप के रूप में निर्यात करें.', - parallelTip: { - click: { - title: 'क्लिक करना', - desc: 'जोड़ने के लिए', - }, - drag: { - title: 'खींचना', - desc: 'कनेक्ट करने के लिए', - }, - limit: 'समांतरता {{num}} शाखाओं तक सीमित है।', - depthLimit: '{{num}} परतों की समानांतर नेस्टिंग परत सीमा', - }, - disconnect: 'अलग करना', - jumpToNode: 'इस नोड पर जाएं', - addParallelNode: 'समानांतर नोड जोड़ें', - parallel: 'समानांतर', - branch: 'शाखा', - fileUploadTip: 'छवि अपलोड सुविधाओं को फ़ाइल अपलोड में अपग्रेड किया गया है।', - ImageUploadLegacyTip: 'अब आप प्रारंभ प्रपत्र में फ़ाइल प्रकार चर बना सकते हैं। हम अब भविष्य में छवि अपलोड सुविधा का समर्थन नहीं करेंगे।', - importWarning: 'सावधानी', - importWarningDetails: 'डीएसएल संस्करण अंतर कुछ सुविधाओं को प्रभावित कर सकता है', - openInExplore: 'एक्सप्लोर में खोलें', - onFailure: 'असफलता पर', - addFailureBranch: 'असफल शाखा जोड़ें', - noHistory: 'कोई इतिहास नहीं', - loadMore: 'अधिक वर्कफ़्लोज़ लोड करें', - exitVersions: 'निकलने के संस्करण', - exportPNG: 'PNG के रूप में निर्यात करें', - exportJPEG: 'JPEG के रूप में निर्यात करें', - exportImage: 'छवि निर्यात करें', - publishUpdate: 'अपडेट प्रकाशित करें', - exportSVG: 'SVG के रूप में निर्यात करें', - versionHistory: 'संस्करण इतिहास', - needAnswerNode: 'उत्तर नोड जोड़ा जाना चाहिए', - addBlock: 'नोड जोड़ें', - needOutputNode: 'आउटपुट नोड जोड़ा जाना चाहिए', - tagBound: 'इस टैग का उपयोग करने वाले ऐप्स की संख्या', - currentView: 'वर्तमान दृश्य', - currentWorkflow: 'वर्तमान कार्यप्रवाह', - moreActions: 'अधिक क्रियाएँ', - listening: 'सुनना', - chooseStartNodeToRun: 'चलाने के लिए प्रारंभ नोड चुनें', - runAllTriggers: 'सभी ट्रिगर्स चलाएँ', - features: 'विशेषताएँ', - featuresDescription: 'वेब ऐप उपयोगकर्ता अनुभव को बढ़ाएं', - featuresDocLink: 'और जानें', - needAdd: '{{node}} नोड को जोड़ा जाना चाहिए', - needStartNode: 'कम से कम एक प्रारंभ नोड जोड़ा जाना चाहिए', - workflowAsToolDisabledHint: 'सबसे नया वर्कफ़्लो प्रकाशित करें और इसे टूल के रूप में कॉन्फ़िगर करने से पहले एक कनेक्टेड यूज़र इनपुट नोड सुनिश्चित करें।', - }, - env: { - envPanelTitle: 'पर्यावरण चर', - envDescription: 'पर्यावरण चर का उपयोग निजी जानकारी और क्रेडेंशियल्स को संग्रहित करने के लिए किया जा सकता है। वे केवल पढ़ने योग्य हैं और निर्यात के दौरान DSL फ़ाइल से अलग किए जा सकते हैं।', - envPanelButton: 'चर जोड़ें', - modal: { - title: 'पर्यावरण चर जोड़ें', - editTitle: 'पर्यावरण चर संपादित करें', - type: 'प्रकार', - name: 'नाम', - namePlaceholder: 'पर्यावरण नाम', - value: 'मान', - valuePlaceholder: 'पर्यावरण मान', - secretTip: 'संवेदनशील जानकारी या डेटा को परिभाषित करने के लिए उपयोग किया जाता है, DSL सेटिंग्स लीक रोकथाम के लिए कॉन्फ़िगर की गई हैं।', - description: 'विवरण', - descriptionPlaceholder: 'चर का वर्णन करें', - }, - export: { - title: 'गुप्त पर्यावरण चर निर्यात करें?', - checkbox: 'गुप्त मान निर्यात करें', - ignore: 'DSL निर्यात करें', - export: 'गुप्त मानों के साथ DSL निर्यात करें', - }, - }, - globalVar: { - title: 'सिस्टम वेरिएबल्स', - description: 'सिस्टम वेरिएबल्स वैश्विक वेरिएबल्स हैं जिन्हें सही प्रकार होने पर किसी भी नोड द्वारा बिना वायरिंग के संदर्भित किया जा सकता है, जैसे एंड-यूज़र ID और वर्कफ़्लो ID.', - fieldsDescription: { - conversationId: 'संवाद ID', - dialogCount: 'संवाद गणना', - userId: 'उपयोगकर्ता ID', - triggerTimestamp: 'एप्लिकेशन शुरू होने का टाइमस्टैम्प', - appId: 'एप्लिकेशन ID', - workflowId: 'वर्कफ़्लो ID', - workflowRunId: 'वर्कफ़्लो रन ID', - }, - }, - chatVariable: { - panelTitle: 'वार्तालाप चर', - panelDescription: 'वार्तालाप चर का उपयोग इंटरैक्टिव जानकारी संग्रहित करने के लिए किया जाता है जिसे LLM को याद रखने की आवश्यकता होती है, जिसमें वार्तालाप इतिहास, अपलोड की गई फाइलें, उपयोगकर्ता प्राथमिकताएं शामिल हैं। वे पठनीय और लेखनीय हैं।', - docLink: 'अधिक जानने के लिए हमारे दस्तावेज़ देखें।', - button: 'चर जोड़ें', - modal: { - title: 'वार्तालाप चर जोड़ें', - editTitle: 'वार्तालाप चर संपादित करें', - name: 'नाम', - namePlaceholder: 'चर का नाम', - type: 'प्रकार', - value: 'डिफ़ॉल्ट मान', - valuePlaceholder: 'डिफ़ॉल्ट मान, सेट न करने के लिए खाली छोड़ दें', - description: 'विवरण', - descriptionPlaceholder: 'चर का वर्णन करें', - editInJSON: 'JSON में संपादित करें', - oneByOne: 'एक-एक करके जोड़ें', - editInForm: 'फॉर्म में संपादित करें', - arrayValue: 'मान', - addArrayValue: 'मान जोड़ें', - objectKey: 'कुंजी', - objectType: 'प्रकार', - objectValue: 'डिफ़ॉल्ट मान', - }, - storedContent: 'संग्रहीत सामग्री', - updatedAt: 'अपडेट किया गया ', - }, - changeHistory: { - title: 'परिवर्तन इतिहास', - placeholder: 'आपने अभी तक कुछ भी नहीं बदला है', - clearHistory: 'इतिहास साफ़ करें', - hint: 'संकेत', - hintText: 'आपके संपादन क्रियाओं को परिवर्तन इतिहास में ट्रैक किया जाता है, जो इस सत्र के दौरान आपके डिवाइस पर संग्रहीत होता है। जब आप संपादक छोड़ेंगे तो यह इतिहास साफ़ हो जाएगा।', - stepBackward_one: '{{count}} कदम पीछे', - stepBackward_other: '{{count}} कदम पीछे', - stepForward_one: '{{count}} कदम आगे', - stepForward_other: '{{count}} कदम आगे', - sessionStart: 'सत्र प्रारंभ', - currentState: 'वर्तमान स्थिति', - noteAdd: 'नोट जोड़ा गया', - noteChange: 'नोट बदला गया', - noteDelete: 'नोट हटाया गया', - nodeConnect: 'नोड कनेक्टेड', - nodeResize: 'नोड का आकार बदला गया', - nodeDelete: 'नोड हटा दिया गया', - nodeDragStop: 'नोड स्थानांतरित किया गया', - nodeChange: 'नोड बदला गया', - nodeAdd: 'नोड जोड़ा गया', - nodeTitleChange: 'नोड का शीर्षक बदल दिया गया', - edgeDelete: 'नोड डिस्कनेक्ट हो गया', - nodePaste: 'नोड चिपका हुआ', - nodeDescriptionChange: 'नोड का वर्णन बदल गया', - }, - errorMsg: { - fieldRequired: '{{field}} आवश्यक है', - authRequired: 'प्राधिकरण आवश्यक है', - invalidJson: '{{field}} अमान्य JSON है', - fields: { - variable: 'वेरिएबल नाम', - variableValue: 'वेरिएबल मान', - code: 'कोड', - model: 'मॉडल', - rerankModel: 'पुनः रैंक मॉडल', - visionVariable: 'दृष्टि चर', - }, - invalidVariable: 'अमान्य वेरिएबल', - rerankModelRequired: 'Rerank मॉडल चालू करने से पहले, कृपया पुष्टि करें कि मॉडल को सेटिंग्स में सफलतापूर्वक कॉन्फ़िगर किया गया है।', - toolParameterRequired: '{{field}}: पैरामीटर [{{param}}] आवश्यक है', - noValidTool: '{{field}} कोई मान्य उपकरण चयनित नहीं किया गया', - startNodeRequired: 'कृपया {{operation}} से पहले पहले एक स्टार्ट नोड जोड़ें', - }, - singleRun: { - testRun: 'परीक्षण रन', - startRun: 'रन शुरू करें', - running: 'चल रहा है', - testRunIteration: 'परीक्षण रन पुनरावृत्ति', - back: 'वापस', - iteration: 'पुनरावृत्ति', - loop: 'लूप', - reRun: 'फिर से चलाएँ', - preparingDataSource: 'डेटा स्रोत की तैयारी करना', - }, - tabs: { - 'tools': 'टूल्स', - 'allTool': 'सभी', - 'customTool': 'कस्टम', - 'workflowTool': 'कार्यप्रवाह', - 'question-understand': 'प्रश्न समझ', - 'logic': 'तर्क', - 'transform': 'परिवर्तन', - 'utilities': 'उपयोगिताएं', - 'noResult': 'कोई मिलान नहीं मिला', - 'searchTool': 'खोज उपकरण', - 'plugin': 'प्लगइन', - 'agent': 'एजेंट रणनीति', - 'searchBlock': 'खोज नोड', - 'blocks': 'नोड्स', - 'addAll': 'सभी जोड़ें', - 'allAdded': 'सभी जोड़े गए', - 'sources': 'स्रोत', - 'searchDataSource': 'डेटा स्रोत की खोज करें', - 'start': 'शुरू करें', - 'searchTrigger': 'खोज ट्रिगर्स...', - 'allTriggers': 'सभी ट्रिगर्स', - 'noPluginsFound': 'कोई प्लगइन नहीं मिला', - 'requestToCommunity': 'समुदाय से अनुरोध', - 'featuredTools': 'विशेष रूप से प्रदर्शित', - 'showMoreFeatured': 'और दिखाएं', - 'showLessFeatured': 'कम दिखाएं', - 'installed': 'स्थापित', - 'pluginByAuthor': '{{author}} द्वारा', - 'usePlugin': 'उपकरण चुनें', - 'hideActions': 'उपकरण छुपाएँ', - 'noFeaturedPlugins': 'मार्केटप्लेस में और उपकरणों की खोज करें', - 'noFeaturedTriggers': 'मार्केटप्लेस में और ट्रिगर खोजें', - 'startDisabledTip': 'ट्रिगर नोड और उपयोगकर्ता इनपुट नोड परस्पर विशेष हैं।', - }, - blocks: { - 'start': 'प्रारंभ', - 'end': 'आउटपुट', - 'answer': 'उत्तर', - 'llm': 'एलएलएम', - 'knowledge-retrieval': 'ज्ञान पुनर्प्राप्ति', - 'question-classifier': 'प्रश्न वर्गीकरण', - 'if-else': 'यदि/अन्यथा', - 'code': 'कोड', - 'template-transform': 'टेम्पलेट', - 'http-request': 'एचटीटीपी अनुरोध', - 'variable-assigner': 'वेरिएबल एग्रीगेटर', - 'variable-aggregator': 'वेरिएबल एग्रीगेटर', - 'assigner': 'चर असाइनर', - 'iteration-start': 'पुनरावृत्ति प्रारंभ', - 'iteration': 'पुनरावृत्ति', - 'parameter-extractor': 'पैरामीटर निष्कर्षक', - 'list-operator': 'सूची ऑपरेटर', - 'document-extractor': 'डॉक्टर एक्सट्रैक्टर', - 'agent': 'एजेंट', - 'loop-end': 'लूप से बाहर निकलें', - 'loop': 'लूप', - 'loop-start': 'लूप प्रारंभ', - 'knowledge-index': 'ज्ञान आधार', - 'datasource': 'डेटा स्रोत', - 'originalStartNode': 'मूल प्रारंभ नोड', - 'trigger-schedule': 'अनुसूची ट्रिगर', - 'trigger-webhook': 'वेबहूक ट्रिगर', - 'trigger-plugin': 'प्लगइन ट्रिगर', - }, - 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': - 'डाउनस्ट्रीम नोड्स की एकीकृत कॉन्फ़िगरेशन के लिए बहु-शाखा चर को एकल चर में संकलित करें।', - 'assigner': 'चर असाइनमेंट नोड का उपयोग लिखने योग्य चर (जैसे वार्तालाप चर) को मान असाइन करने के लिए किया जाता है।', - 'variable-aggregator': - 'डाउनस्ट्रीम नोड्स की एकीकृत कॉन्फ़िगरेशन के लिए बहु-शाखा चर को एकल चर में संकलित करें।', - 'iteration': - 'एक सूची वस्तु पर तब तक कई कदम करें जब तक सभी परिणाम आउटपुट न हो जाएं।', - 'parameter-extractor': - 'टूल आमंत्रणों या HTTP अनुरोधों के लिए प्राकृतिक भाषा से संरचित पैरामीटर निकालने के लिए LLM का उपयोग करें।', - 'document-extractor': 'अपलोड किए गए दस्तावेज़ों को पाठ सामग्री में पार्स करने के लिए उपयोग किया जाता है जो एलएलएम द्वारा आसानी से समझा जा सकता है।', - 'list-operator': 'सरणी सामग्री फ़िल्टर या सॉर्ट करने के लिए उपयोग किया जाता है.', - 'agent': 'प्रश्नों का उत्तर देने या प्राकृतिक भाषा को संसाधित करने के लिए बड़े भाषा मॉडलों को आमंत्रित करना', - 'loop': 'एक लूप को निष्पादित करें जब तक समाप्ति की शर्त पूरी न हो जाए या अधिकतम लूप संख्या प्राप्त न हो जाए।', - 'loop-end': '"ब्रेक" के समान। इस नोड में कोई विन्यास आइटम नहीं हैं। जब लूप का शरीर इस नोड पर पहुँचता है, तो लूप समाप्त होता है।', - 'knowledge-index': 'ज्ञान आधार के बारे में', - 'datasource': 'डेटा स्रोत के बारे में', - 'trigger-schedule': 'समय-आधारित वर्कफ़्लो ट्रिगर जो वर्कफ़्लो को शेड्यूल पर शुरू करता है', - 'trigger-webhook': 'वेबहुक ट्रिगर थर्ड-पार्टी सिस्टम्स से HTTP पुश प्राप्त करता है ताकि वर्कफ़्लो को स्वचालित रूप से ट्रिगर किया जा सके।', - 'trigger-plugin': 'थर्ड-पार्टी इंटीग्रेशन ट्रिगर जो बाहरी प्लेटफ़ॉर्म घटनाओं से वर्कफ़्लो शुरू करता है', - }, - operator: { - zoomIn: 'ज़ूम इन', - zoomOut: 'ज़ूम आउट', - zoomTo50: '50% पर ज़ूम करें', - zoomTo100: '100% पर ज़ूम करें', - zoomToFit: 'फिट करने के लिए ज़ूम करें', - alignRight: 'दाएं', - alignLeft: 'बाएं', - alignTop: 'शीर्ष', - horizontal: 'क्षैतिज', - alignNodes: 'नोड्स को संरेखित करें', - selectionAlignment: 'चयन संरेखण', - alignCenter: 'केंद्र', - vertical: 'ऊर्ध्वाधर', - distributeHorizontal: 'क्षैतिज रूप से वितरित करें', - alignBottom: 'नीचे', - distributeVertical: 'ऊर्ध्वाधर रूप से वितरित करें', - alignMiddle: 'मध्य', - }, - panel: { - userInputField: 'उपयोगकर्ता इनपुट फ़ील्ड', - helpLink: 'सहायता', - about: 'के बारे में', - createdBy: 'द्वारा बनाया गया ', - nextStep: 'अगला कदम', - runThisStep: 'इस कदम को चलाएं', - checklist: 'चेकलिस्ट', - checklistTip: - 'प्रकाशित करने से पहले सुनिश्चित करें कि सभी समस्याएं हल हो गई हैं', - checklistResolved: 'सभी समस्याएं हल हो गई हैं', - change: 'बदलें', - optional: '(वैकल्पिक)', - changeBlock: 'नोड बदलें', - addNextStep: 'इस कार्यप्रवाह में अगला कदम जोड़ें', - selectNextStep: 'अगला कदम चुनें', - organizeBlocks: 'नोड्स का आयोजन करें', - minimize: 'पूर्ण स्क्रीन से बाहर निकलें', - maximize: 'कैनवास का अधिकतम लाभ उठाएँ', - scrollToSelectedNode: 'चुने गए नोड पर स्क्रॉल करें', - optional_and_hidden: '(वैकल्पिक और छिपा हुआ)', - goTo: 'जाओ', - startNode: 'प्रारंभ नोड', - openWorkflow: 'वर्कफ़्लो खोलें', - }, - nodes: { - common: { - outputVars: 'आउटपुट वेरिएबल्स', - insertVarTip: 'वेरिएबल डालें', - memory: { - memory: 'मेमोरी', - memoryTip: 'चैट मेमोरी सेटिंग्स', - windowSize: 'विंडो साइज', - conversationRoleName: 'वार्तालाप भूमिका का नाम', - user: 'यूजर प्रीफिक्स', - assistant: 'असिस्टेंट प्रीफिक्स', - }, - memories: { - title: 'मेमोरीज', - tip: 'चैट मेमोरी', - builtIn: 'निर्मित', - }, - errorHandle: { - none: { - title: 'कोई नहीं', - desc: 'यदि कोई अपवाद होता है और हैंडल नहीं किया जाता है, तो नोड चलना बंद कर देगा', - }, - defaultValue: { - title: 'डिफ़ॉल्ट मान', - tip: 'त्रुटि पर, मूल्य से नीचे लौटाएगा।', - output: 'आउटपुट डिफ़ॉल्ट मान', - inLog: 'नोड अपवाद, डिफ़ॉल्ट मानों के अनुसार आउटपुटिंग।', - desc: 'जब कोई त्रुटि होती है, तो एक स्थिर आउटपुट सामग्री निर्दिष्ट करें।', - }, - failBranch: { - title: 'असफल शाखा', - customize: 'असफल शाखा तर्क को अनुकूलित करने के लिए कैनवास पर जाएं।', - inLog: 'नोड अपवाद, स्वचालित रूप से विफल शाखा निष्पादित करेगा। नोड आउटपुट एक त्रुटि प्रकार और त्रुटि संदेश लौटाएगा और उन्हें डाउनस्ट्रीम में पास करेगा।', - desc: 'जब कोई त्रुटि होती है, तो यह अपवाद शाखा निष्पादित करेगा', - customizeTip: 'जब विफल शाखा सक्रिय होती है, तो नोड्स द्वारा फेंके गए अपवाद प्रक्रिया को समाप्त नहीं करेंगे। इसके बजाय, यह स्वचालित रूप से पूर्वनिर्धारित विफल शाखा को निष्पादित करेगा, जिससे आप लचीले ढंग से त्रुटि संदेश, रिपोर्ट, सुधार या कार्रवाई छोड़ सकते हैं।', - }, - partialSucceeded: { - tip: 'प्रक्रिया में {{num}} नोड्स असामान्य रूप से चल रहे हैं, कृपया लॉग की जांच करने के लिए ट्रेसिंग पर जाएं।', - }, - title: 'त्रुटि हैंडलिंग', - tip: 'अपवाद हैंडलिंग रणनीति, ट्रिगर जब एक नोड एक अपवाद का सामना करता है।', - }, - retry: { - times: 'गुणा', - ms: 'सुश्री', - retryInterval: 'अंतराल का पुनः प्रयास करें', - retrying: 'पुनर्प्रयास।।।', - retryFailed: 'पुनः प्रयास विफल रहा', - retryFailedTimes: '{{times}} पुनः प्रयास विफल रहे', - retryTimes: 'विफलता पर {{times}} बार पुनः प्रयास करें', - retries: '{{num}} पुनर्प्रयास', - maxRetries: 'अधिकतम पुनः प्रयास करता है', - retrySuccessful: 'पुनः प्रयास सफल', - retry: 'पुनर्प्रयास', - retryOnFailure: 'विफलता पर पुनः प्रयास करें', - }, - typeSwitch: { - input: 'इनपुट मान', - variable: 'चर का प्रयोग करें', - }, - inputVars: 'इनपुट चर', - pluginNotInstalled: 'प्लगइन इंस्टॉल नहीं है', - }, - 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: 'सामग्री उत्पन्न करें', - reasoning_content: 'तर्क सामग्री', - usage: 'मॉडल उपयोग जानकारी', - }, - singleRun: { - variable: 'वेरिएबल', - }, - sysQueryInUser: 'उपयोगकर्ता संदेश में sys.query आवश्यक है', - jsonSchema: { - warningTips: { - saveSchema: 'कृपया स्कीमा को सहेजने से पहले वर्तमान फ़ील्ड को संपादित करना पूरा करें', - }, - apply: 'लागू करें', - promptPlaceholder: 'अपने JSON स्किमा का वर्णन करें...', - title: 'संरचित आउटपुट स्कीमा', - fieldNamePlaceholder: 'क्षेत्र नाम', - generate: 'जनरेट करें', - resultTip: 'यहाँ उत्पन्न परिणाम है। यदि आप संतुष्ट नहीं हैं, तो आप वापस जा सकते हैं और अपने प्रॉम्प्ट को संशोधित कर सकते हैं।', - generatedResult: 'जनित परिणाम', - import: 'JSON से आयात करें', - resetDefaults: 'रीसेट करें', - instruction: 'निर्देश', - regenerate: 'पुनर्जीवित करें', - generateJsonSchema: 'JSON स्कीमा उत्पन्न करें', - addField: 'क्षेत्र जोड़ें', - doc: 'संरचित आउटपुट के बारे में अधिक जानें', - back: 'पीछे', - promptTooltip: 'पाठ विवरण को एक मानकीकृत JSON स्कीमा संरचना में परिवर्तित करें।', - descriptionPlaceholder: 'विवरण जोड़ें', - generating: 'JSON स्कीमा उत्पन्न करना...', - showAdvancedOptions: 'उन्नत विकल्प दिखाएँ', - stringValidations: 'स्ट्रिंग मान्यता', - generationTip: 'आप प्राकृतिक भाषा का उपयोग करके जल्दी से एक JSON स्कीमा बना सकते हैं।', - required: 'आवश्यक', - addChildField: 'बच्चे का क्षेत्र जोड़ें', - }, - reasoningFormat: { - title: 'कारण संबंध टैग विभाजन सक्षम करें', - separated: 'अलग सोच टैग', - tagged: 'टैग्स के बारे में सोचते रहें', - tooltip: 'थिंक टैग से सामग्री निकाले और इसे reasoning_content क्षेत्र में संग्रहित करें।', - }, - }, - knowledgeRetrieval: { - queryVariable: 'प्रश्न वेरिएबल', - knowledge: 'ज्ञान', - outputVars: { - output: 'प्राप्त विभाजित डेटा', - content: 'विभाजित सामग्री', - title: 'विभाजित शीर्षक', - icon: 'विभाजित आइकन', - url: 'विभाजित URL', - metadata: 'अन्य मेटाडेटा', - files: 'प्राप्त फ़ाइलें', - }, - metadata: { - options: { - disabled: { - title: 'अक्षम', - subTitle: 'मेटाडेटा फ़िल्टरिंग को सक्षम नहीं करना', - }, - automatic: { - title: 'स्वचालित', - subTitle: 'उपयोगकर्ता प्रश्न के आधार पर स्वचालित रूप से मेटाडेटा फिल्टरिंग शर्तें उत्पन्न करें।', - desc: 'क्वेरी वेरिएबल के आधार पर स्वचालित रूप से मेटाडेटा फ़िल्टरिंग शर्तें उत्पन्न करें', - }, - manual: { - subTitle: 'हाथ से मेटाडेटा फ़िल्टरिंग स्थितियाँ जोड़ें', - title: 'मैनुअल', - }, - }, - panel: { - placeholder: 'मान डालें', - add: 'शर्त जोड़ें', - title: 'मेटाडेटा फ़िल्टर स्थितियाँ', - select: 'परिवर्तनशील को चुनें...', - datePlaceholder: 'एक समय चुनें...', - conditions: 'शर्तें', - search: 'खोज मेटाडेटा', - }, - title: 'मेटाडेटा फ़िल्टरिंग', - tip: 'मेटाडेटा छानने की प्रक्रिया है जिसमें मेटाडेटा विशेषताओं (जैसे टैग, श्रेणियाँ, या पहुंच अनुमतियाँ) का उपयोग करके एक प्रणाली के भीतर प्रासंगिक जानकारी की पुनर्प्राप्ति को सुधारने और नियंत्रित करने के लिए किया जाता है।', - }, - queryText: 'प्रश्न पाठ', - queryAttachment: 'क्वेरी इमेजेस', - }, - 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: 'राइट टाइमआउट सेकंड में दर्ज करें', - }, - type: 'प्रकार', - binaryFileVariable: 'बाइनरी फ़ाइल चर', - extractListPlaceholder: 'सूची आइटम इंडेक्स दर्ज करें, \'/\' इन्सर्ट वेरिएबल टाइप करें', - curl: { - placeholder: 'यहां cURL स्ट्रिंग पेस्ट करें', - title: 'cURL से आयात करें', - }, - verifySSL: { - title: 'SSL प्रमाणपत्र की पुष्टि करें', - warningTooltip: 'SSL सत्यापन को अक्षम करना उत्पादन वातावरण के लिए अनुशंसित नहीं है। इसका उपयोग केवल विकास या परीक्षण में किया जाना चाहिए, क्योंकि यह कनेक्शन को मिडल-मैन हमलों जैसे सुरक्षा खतरों के लिए कमजोर बना देता है।', - }, - }, - code: { - inputVars: 'इनपुट वेरिएबल्स', - outputVars: 'आउटपुट वेरिएबल्स', - advancedDependencies: 'उन्नत निर्भरताएँ', - advancedDependenciesTip: - 'कुछ प्रीलोडेड निर्भरताएँ जोड़ें जिनका उपयोग करने में अधिक समय लगता है या जो डिफ़ॉल्ट निर्मित में नहीं हैं', - searchDependencies: 'निर्भरताएँ खोजें', - syncFunctionSignature: 'कोड के साथ फ़ंक्शन हस्ताक्षर को सिंक करें', - }, - 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': 'शून्य नहीं है', - 'in': 'में', - 'all of': 'के सभी', - 'not exists': 'मौजूद नहीं है', - 'exists': 'मौजूद है', - 'not in': 'नहीं है', - 'before': 'पहले', - 'after': 'बाद में', - }, - enterValue: 'मान दर्ज करें', - addCondition: 'शर्त जोड़ें', - conditionNotSetup: 'शर्त सेटअप नहीं है', - selectVariable: 'चर का चयन करें...', - optionName: { - url: 'यूआरएल', - video: 'वीडियो', - doc: 'डॉक्टर', - localUpload: 'स्थानीय अपलोड', - image: 'छवि', - audio: 'ऑडियो', - }, - select: 'चुनना', - addSubVariable: 'उप चर', - }, - variableAssigner: { - title: 'वेरिएबल्स असाइन करें', - outputType: 'आउटपुट प्रकार', - varNotSet: 'वेरिएबल सेट नहीं है', - noVarTip: 'असाइन किए जाने वाले वेरिएबल्स जोड़ें', - type: { - string: 'स्ट्रिंग', - number: 'नंबर', - object: 'ऑब्जेक्ट', - array: 'ऐरे', - }, - aggregationGroup: 'एग्रीगेशन ग्रुप', - aggregationGroupTip: - 'इस सुविधा को सक्षम करने से वेरिएबल एग्रीगेटर को मल्टीपल सेट्स ऑफ वेरिएबल्स को एग्रीगेट करने की अनुमति मिलती है।', - addGroup: 'ग्रुप जोड़ें', - outputVars: { - varDescribe: '{{groupName}} आउटपुट', - }, - setAssignVariable: 'असाइन वेरिएबल सेट करें', - }, - assigner: { - 'assignedVariable': 'असाइन किया गया चर', - 'writeMode': 'लिखने का मोड', - 'writeModeTip': 'जब असाइन किया गया चर एक सरणी होता है, तो जोड़ने का मोड अंत में जोड़ता है।', - 'over-write': 'ओवरराइट करें', - 'append': 'जोड़ें', - 'plus': 'जमा', - 'clear': 'साफ़ करें', - 'setVariable': 'चर सेट करें', - 'variable': 'चर', - 'operations': { - 'clear': 'स्पष्ट', - '/=': '/=', - '*=': '*=', - 'over-write': 'अधिलेखित', - 'title': 'परिचालन', - '+=': '+=', - 'overwrite': 'अधिलेखित', - 'set': 'अस्त हो', - 'extend': 'पसार', - '-=': '-=', - 'append': 'संलग्न', - 'remove-first': 'पहला हटाओ', - 'remove-last': 'अंतिम हटाएँ', - }, - 'setParameter': 'पैरामीटर सेट करें...', - 'noVarTip': 'चर जोड़ने के लिए "+" बटन पर क्लिक करें', - 'variables': 'चर', - 'selectAssignedVariable': 'असाइन किए गए चर का चयन करें...', - 'varNotSet': 'चर सेट नहीं', - 'assignedVarsDescription': 'असाइन किए गए चर लिखने योग्य चर होने चाहिए, जैसे वार्तालाप चर।', - 'noAssignedVars': 'कोई उपलब्ध असाइन किए गए चर नहीं', - }, - tool: { - inputVars: 'इनपुट वेरिएबल्स', - outputVars: { - text: 'उपकरण द्वारा उत्पन्न सामग्री', - files: { - title: 'उपकरण द्वारा उत्पन्न फाइलें', - type: 'समर्थन प्रकार। अब केवल इमेज का समर्थन करता है', - transfer_method: 'ट्रांसफर मेथड। मान रिमोट_यूआरएल या लोकल_फाइल है', - url: 'इमेज यूआरएल', - upload_file_id: 'अपलोड फ़ाइल आईडी', - }, - json: 'उपकरण द्वारा उत्पन्न JSON', - }, - authorize: 'अधिकृत करें', - insertPlaceholder1: 'टाइप करें या दबाएँ', - settings: 'सेटिंग्स', - insertPlaceholder2: 'वेरिएबल डालें', - }, - questionClassifiers: { - model: 'मॉडल', - inputVars: 'इनपुट वेरिएबल्स', - outputVars: { - className: 'क्लास नाम', - usage: 'मॉडल उपयोग जानकारी', - }, - class: 'क्लास', - classNamePlaceholder: 'अपना क्लास नाम लिखें', - advancedSetting: 'उन्नत सेटिंग', - topicName: 'विषय नाम', - topicPlaceholder: 'अपना विषय नाम लिखें', - addClass: 'क्लास जोड़ें', - instruction: 'निर्देश', - instructionTip: - 'प्रश्न वर्गीकरणकर्ता को प्रश्नों को वर्गीकृत करने के तरीके को समझने में मदद करने के लिए अतिरिक्त निर्देश दें।', - instructionPlaceholder: 'अपना निर्देश लिखें', - }, - parameterExtractor: { - inputVar: 'इनपुट वेरिएबल', - outputVars: { - isSuccess: 'सफलता है। सफलता पर मान 1 है, असफलता पर मान 0 है।', - errorReason: 'त्रुटि का कारण', - usage: 'मॉडल उपयोग जानकारी', - }, - extractParameters: 'पैरामीटर्स निकालें', - importFromTool: 'उपकरणों से आयात करें', - addExtractParameter: 'एक्सट्रेक्ट पैरामीटर जोड़ें', - addExtractParameterContent: { - name: 'नाम', - namePlaceholder: 'एक्सट्रेक्ट पैरामीटर नाम', - type: 'प्रकार', - typePlaceholder: 'एक्सट्रेक्ट पैरामीटर प्रकार', - description: 'विवरण', - descriptionPlaceholder: 'एक्सट्रेक्ट पैरामीटर विवरण', - required: 'आवश्यक', - requiredContent: - 'आवश्यक केवल मॉडल अनुमान के लिए एक संदर्भ के रूप में उपयोग किया जाता है, और पैरामीटर आउटपुट के अनिवार्य मान्यता के लिए नहीं।', - }, - extractParametersNotSet: 'एक्सट्रेक्ट पैरामीटर्स सेटअप नहीं किए गए हैं', - instruction: 'निर्देश', - instructionTip: - 'पैरामीटर निकालने वाले को समझने में मदद करने के लिए अतिरिक्त निर्देश दें कि कैसे पैरामीटर्स निकालें।', - advancedSetting: 'उन्नत सेटिंग', - reasoningMode: 'रीज़निंग मोड', - reasoningModeTip: - 'फ़ंक्शन कॉलिंग या प्रॉम्प्ट्स के लिए निर्देशों का जवाब देने की मॉडल की क्षमता के आधार पर उपयुक्त रीज़निंग मोड चुन सकते हैं।', - }, - iteration: { - deleteTitle: 'इटरेशन नोड हटाएं?', - deleteDesc: 'इटरेशन नोड हटाने से सभी चाइल्ड नोड्स हट जाएंगे', - input: 'इनपुट', - output: 'आउटपुट वेरिएबल्स', - iteration_one: '{{count}} इटरेशन', - iteration_other: '{{count}} इटरेशन्स', - currentIteration: 'वर्तमान इटरेशन', - ErrorMethod: { - operationTerminated: 'समाप्त', - continueOnError: 'जारी रखें-पर-त्रुटि', - removeAbnormalOutput: 'निकालें-असामान्य-आउटपुट', - }, - comma: ',', - error_other: '{{गिनती}} त्रुटियों', - error_one: '{{गिनती}} चूक', - parallelMode: 'समानांतर मोड', - parallelModeUpper: 'समानांतर मोड', - errorResponseMethod: 'त्रुटि प्रतिक्रिया विधि', - MaxParallelismTitle: 'अधिकतम समांतरता', - parallelModeEnableTitle: 'समानांतर मोड सक्षम किया गया', - parallelModeEnableDesc: 'समानांतर मोड में, पुनरावृत्तियों के भीतर कार्य समानांतर निष्पादन का समर्थन करते हैं। आप इसे दाईं ओर गुण पैनल में कॉन्फ़िगर कर सकते हैं।', - parallelPanelDesc: 'समानांतर मोड में, पुनरावृत्ति में कार्य समानांतर निष्पादन का समर्थन करते हैं।', - MaxParallelismDesc: 'अधिकतम समांतरता का उपयोग एकल पुनरावृत्ति में एक साथ निष्पादित कार्यों की संख्या को नियंत्रित करने के लिए किया जाता है।', - answerNodeWarningDesc: 'समानांतर मोड चेतावनी: उत्तर नोड्स, वार्तालाप चर असाइनमेंट, और पुनरावृत्तियों के भीतर लगातार पढ़ने/लिखने की कार्रवाई अपवाद पैदा कर सकती है।', - flattenOutput: 'आउटपुट को सपाट करें', - flattenOutputDesc: 'जब सक्षम किया जाता है, यदि सभी पुनरावृत्ति आउटपुट सरणियाँ हैं, तो उन्हें एक ही सरणी में समतल कर दिया जाएगा। जब अक्षम किया जाता है, तो आउटपुट घोंसले वाली सरणी संरचना बनाए रखेगा।', - }, - note: { - addNote: 'नोट जोड़ें', - editor: { - placeholder: 'अपना नोट लिखें...', - small: 'छोटा', - medium: 'मध्यम', - large: 'बड़ा', - bold: 'बोल्ड', - italic: 'इटैलिक', - strikethrough: 'स्ट्राइकथ्रू', - link: 'लिंक', - openLink: 'खोलें', - unlink: 'लिंक हटाएं', - enterUrl: 'URL दर्ज करें...', - invalidUrl: 'अवैध URL', - bulletList: 'बुलेट लिस्ट', - showAuthor: 'लेखक दिखाएं', - }, - }, - docExtractor: { - outputVars: { - text: 'निकाला गया पाठ', - }, - learnMore: 'और जानो', - supportFileTypes: 'समर्थन फ़ाइल प्रकार: {{प्रकार}}।', - inputVar: 'इनपुट वेरिएबल', - }, - listFilter: { - outputVars: { - result: 'परिणाम फ़िल्टर करें', - last_record: 'पिछला रिकॉर्ड', - first_record: 'पहला रिकॉर्ड', - }, - limit: 'शीर्ष N', - asc: 'एएससी', - filterConditionKey: 'फ़िल्टर स्थिति कुंजी', - filterConditionComparisonValue: 'फ़िल्टर स्थिति मान', - filterCondition: 'फ़िल्टर की स्थिति', - orderBy: 'द्वारा आदेश दें', - desc: 'विवरण', - filterConditionComparisonOperator: 'फ़िल्टर शर्त तुलन ऑपरेटर', - selectVariableKeyPlaceholder: 'उप चर कुंजी का चयन करें', - inputVar: 'इनपुट वेरिएबल', - extractsCondition: 'N आइटम निकालें', - }, - agent: { - strategy: { - shortLabel: 'रणनीति', - label: 'एजेंटिक रणनीति', - selectTip: 'एजेंटिक रणनीति चुनें', - searchPlaceholder: 'एजेंटिक रणनीति खोजें', - configureTip: 'कृपया एजेंटिक रणनीति को कॉन्फ़िगर करें।', - configureTipDesc: 'एजेंटिक रणनीति को कॉन्फ़िगर करने के बाद, यह नोड स्वचालित रूप से शेष कॉन्फ़िगरेशन लोड करेगा। यह रणनीति बहु-चरण उपकरण तर्क के तंत्र को प्रभावित करेगी।', - tooltip: 'विभिन्न एजेंटिक रणनीतियाँ निर्धारित करती हैं कि प्रणाली बहु-चरण उपकरण कॉल की योजना कैसे बनाती है और उन्हें कैसे निष्पादित करती है।', - }, - pluginInstaller: { - install: 'स्थापित करें', - installing: 'स्थापित करना', - }, - modelNotInMarketplace: { - desc: 'यह मॉडल स्थानीय या गिटहब रिपॉजिटरी से स्थापित किया गया है। कृपया स्थापना के बाद उपयोग करें।', - manageInPlugins: 'प्लगइन्स में प्रबंधित करें', - title: 'मॉडल स्थापित नहीं है', - }, - modelNotSupport: { - desc: 'स्थापित प्लगइन संस्करण इस मॉडल को प्रदान नहीं करता है।', - descForVersionSwitch: 'स्थापित प्लगइन संस्करण इस मॉडल को प्रदान नहीं करता है। संस्करण बदलने के लिए क्लिक करें।', - title: 'असमर्थित मॉडल', - }, - modelSelectorTooltips: { - deprecated: 'यह मॉडल अप्रचलित है।', - }, - outputVars: { - files: { - transfer_method: 'स्थानांतरण विधि। मान या तो remote_url है या local_file।', - url: 'छवि यूआरएल', - upload_file_id: 'फाइल आईडी अपलोड करें', - type: 'समर्थन प्रकार। अब केवल समर्थन छवि', - title: 'एजेंट द्वारा उत्पन्न फ़ाइलें', - }, - text: 'एजेंट द्वारा उत्पन्न सामग्री', - usage: 'मॉडल उपयोग जानकारी', - json: 'एजेंट द्वारा उत्पन्न जेसन', - }, - checkList: { - strategyNotSelected: 'रणनीति का चयन नहीं किया गया', - }, - installPlugin: { - install: 'स्थापित करें', - title: 'प्लगइन स्थापित करें', - changelog: 'परिवर्तन लॉग', - desc: 'निम्नलिखित प्लगइन स्थापित करने वाले हैं', - cancel: 'रद्द करें', - }, - unsupportedStrategy: 'असमर्थित रणनीति', - modelNotSelected: 'मॉडल का चयन नहीं किया गया', - tools: 'उपकरण', - strategyNotInstallTooltip: '{{strategy}} स्थापित नहीं है', - toolNotInstallTooltip: '{{tool}} स्थापित नहीं है', - toolbox: 'टूलबॉक्स', - learnMore: 'और अधिक जानें', - strategyNotFoundDesc: 'स्थापित प्लगइन संस्करण यह रणनीति प्रदान नहीं करता है।', - toolNotAuthorizedTooltip: '{{tool}} अधिकृत नहीं है', - pluginNotInstalled: 'यह प्लगइन स्थापित नहीं है', - model: 'मॉडल', - notAuthorized: 'अधिकृत नहीं', - pluginNotInstalledDesc: 'यह प्लगइन गिटहब से स्थापित किया गया है। कृपया पुनः स्थापित करने के लिए प्लगइन्स पर जाएं।', - configureModel: 'मॉडल कॉन्फ़िगर करें', - linkToPlugin: 'प्लगइन्स के लिए लिंक', - modelNotInstallTooltip: 'यह मॉडल स्थापित नहीं है', - pluginNotFoundDesc: 'यह प्लगइन गिटहब से स्थापित किया गया है। कृपया पुनः स्थापित करने के लिए प्लगइन्स पर जाएं।', - maxIterations: 'अधिकतम पुनरावृत्तियाँ', - strategyNotSet: 'एजेंटिक रणनीति सेट नहीं की गई', - strategyNotFoundDescAndSwitchVersion: 'स्थापित प्लगइन संस्करण इस रणनीति को प्रदान नहीं करता है। संस्करण बदलने के लिए क्लिक करें।', - parameterSchema: 'पैरामीटर स्कीमा', - clickToViewParameterSchema: 'पैरामीटर स्कीमा देखने के लिए क्लिक करें', - }, - loop: { - ErrorMethod: { - continueOnError: 'त्रुटि पर जारी रखें', - removeAbnormalOutput: 'असामान्य आउटपुट हटाएं', - operationTerminated: 'समाप्त', - }, - inputMode: 'इनपुट मोड', - output: 'आउटपुट वेरिएबल', - input: 'इनपुट', - loop_other: '{{count}} लूप्स', - currentLoop: 'वर्तमान लूप', - deleteTitle: 'लूप नोड हटाएँ?', - error_other: '{{count}} त्रुटियाँ', - loopMaxCount: 'अधिकतम लूप गणना', - comma: ',', - deleteDesc: 'लूप नोड को हटाने से सभी बाल नोड हट जाएंगे', - error_one: '{{count}} त्रुटि', - currentLoopCount: 'वर्तमान लूप गिनती: {{count}}', - loopNode: 'लूप नोड', - loop_one: '{{count}} लूप', - initialLoopVariables: 'प्रारंभिक लूप चर', - finalLoopVariables: 'अंतिम लूप वेरिएबल्स', - variableName: 'चर चर नाम', - errorResponseMethod: 'त्रुटि प्रतिक्रिया विधि', - totalLoopCount: 'कुल लूप गिनती: {{count}}', - breakCondition: 'लूप समाप्ति स्थिति', - loopMaxCountError: 'कृपया अधिकतम लूप संख्या दर्ज करें, जो 1 से {{maxCount}} के बीच हो', - setLoopVariables: 'लूप स्कोप के भीतर वेरिएबल सेट करें', - exitConditionTip: 'एक लूप नोड को कम से कम एक निकासी स्थिति की आवश्यकता होती है', - loopVariables: 'लूप वेरियेबल्स', - breakConditionTip: 'सिर्फ उन चर को संदर्भित किया जा सकता है जो लूप के भीतर हैं जिनमें समाप्ति की शर्तें और बातचीत के चर हैं।', - }, - dataSource: { - supportedFileFormats: 'समर्थित फ़ाइल प्रारूप', - add: 'डेटा स्रोत जोड़ें', - supportedFileFormatsPlaceholder: 'फाइल एक्सटेंशन, जैसे कि doc', - }, - knowledgeBase: { - chunkStructureTip: { - learnMore: 'और अधिक सीखें', - title: 'कृपया एक भाग संरचना चुनें', - message: 'Dify ज्ञान आधार तीन चंकिंग संरचनाओं का समर्थन करता है: सामान्य, माता-पिता-बच्चे, और प्रश्नोत्तर। प्रत्येक ज्ञान आधार केवल एक संरचना रख सकता है। पूर्ववर्ती नोड से आउटपुट को चयनित चंक संरचना के साथ मेल खाना चाहिए। ध्यान दें कि चंकिंग संरचना का चुनाव उपलब्ध अनुक्रमण विधियों को प्रभावित करता है।', - }, - chunkStructure: 'खंड संरचना', - chunkIsRequired: 'चंक संरचना आवश्यक है', - indexMethodIsRequired: 'सूची विधि आवश्यक है', - retrievalSettingIsRequired: 'पुनप्राप्ति सेटिंग आवश्यक है', - changeChunkStructure: 'चंक संरचना बदलें', - aboutRetrieval: 'पुनर्प्राप्ति विधि के बारे में।', - chooseChunkStructure: 'एक चंक संरचना चुनें', - chunksInput: 'टुकड़े', - chunksInputTip: 'ज्ञान आधार नोड का इनपुट वेरिएबल टुकड़े है। वेरिएबल प्रकार एक ऑब्जेक्ट है जिसमें एक विशेष JSON स्कीमा है जो चयनित चंक संरचना के साथ सुसंगत होना चाहिए।', - chunksVariableIsRequired: 'टुकड़े चर आवश्यक है', - embeddingModelIsRequired: 'एम्बेडिंग मॉडल आवश्यक है', - rerankingModelIsRequired: 'पुनः क्रमांकन मॉडल की आवश्यकता है', - rerankingModelIsInvalid: 'पुनः क्रमांकन मॉडल अमान्य है', - embeddingModelIsInvalid: 'एम्बेडिंग मॉडल अमान्य है', - }, - triggerPlugin: { - authorized: 'अधिकृत', - notConfigured: 'कॉन्फ़िगर नहीं किया गया', - notAuthorized: 'अधिकृत नहीं', - selectSubscription: 'सदस्यता चुनें', - availableSubscriptions: 'उपलब्ध सदस्यताएँ', - addSubscription: 'नई सदस्यता जोड़ें', - removeSubscription: 'सदस्यता हटाएँ', - subscriptionRemoved: 'सब्सक्रिप्शन सफलतापूर्वक हटा दिया गया', - error: 'त्रुटि', - configuration: 'कॉन्फ़िगरेशन', - remove: 'हटाएँ', - or: 'या', - useOAuth: 'OAuth का उपयोग करें', - useApiKey: 'API कुंजी का उपयोग करें', - authenticationFailed: 'प्रमाणीकरण विफल', - authenticationSuccess: 'प्रमाणीकरण सफल', - oauthConfigFailed: 'OAuth कॉन्फ़िगरेशन विफल हुआ', - configureOAuthClient: 'OAuth क्लाइंट कॉन्फ़िगर करें', - oauthClientDescription: 'प्रमाणीकरण सक्षम करने के लिए OAuth क्लाइंट क्रेडेंशियल्स कॉन्फ़िगर करें', - oauthClientSaved: 'OAuth क्लाइंट कॉन्फ़िगरेशन सफलतापूर्वक सहेजा गया', - configureApiKey: 'एपीआई कुंजी कॉन्फ़िगर करें', - apiKeyDescription: 'प्रमाणीकरण के लिए एपीआई कुंजी क्रेडेंशियल कॉन्फ़िगर करें', - apiKeyConfigured: 'एपीआई कुंजी सफलतापूर्वक कॉन्फ़िगर की गई', - configurationFailed: 'कॉन्फ़िगरेशन असफल हुआ', - failedToStart: 'प्रमाणीकरण प्रवाह शुरू करने में विफल', - credentialsVerified: 'प्रमाण-पत्र सफलतापूर्वक सत्यापित किए गए', - credentialVerificationFailed: 'प्रमाणीकरण विफल हुआ', - verifyAndContinue: 'सत्यापित करें और जारी रखें', - configureParameters: 'पैरामीटर कॉन्फ़िगर करें', - parametersDescription: 'ट्रिगर पैरामीटर और गुणों को कॉन्फ़िगर करें', - configurationComplete: 'कॉन्फ़िगरेशन पूरा', - configurationCompleteDescription: 'आपका ट्रिगर सफलतापूर्वक कॉन्फ़िगर किया गया है', - configurationCompleteMessage: 'आपका ट्रिगर कॉन्फ़िगरेशन अब पूरा हो गया है और उपयोग के लिए तैयार है।', - parameters: 'पैरामीटर', - properties: 'संपत्तियाँ', - propertiesDescription: 'इस ट्रिगर के लिए अतिरिक्त कॉन्फ़िगरेशन प्रॉपर्टीज़', - noConfigurationRequired: 'इस ट्रिगर के लिए किसी अतिरिक्त कॉन्फ़िगरेशन की आवश्यकता नहीं है।', - subscriptionName: 'सदस्यता का नाम', - subscriptionNameDescription: 'इस ट्रिगर सब्सक्रिप्शन के लिए एक अद्वितीय नाम दर्ज करें', - subscriptionNamePlaceholder: 'सब्सक्रिप्शन नाम दर्ज करें...', - subscriptionNameRequired: 'सदस्यता का नाम आवश्यक है', - subscriptionRequired: 'सब्सक्रिप्शन आवश्यक है', - }, - triggerSchedule: { - title: 'अनुसूची', - nodeTitle: 'अनुसूची ट्रिगर', - notConfigured: 'कॉन्फ़िगर नहीं किया गया', - useCronExpression: 'क्रोन एक्सप्रेशन का उपयोग करें', - useVisualPicker: 'विज़ुअल पिकर का उपयोग करें', - frequency: { - label: 'आवृत्ति', - hourly: 'प्रति घंटा', - daily: 'दैनिक', - weekly: 'साप्ताहिक', - monthly: 'मासिक', - }, - selectFrequency: 'आवृत्ति चुनें', - frequencyLabel: 'आवृत्ति', - nextExecution: 'अगला निष्पादन', - weekdays: 'सप्ताह के दिन', - time: 'समय', - cronExpression: 'क्रॉन एक्सप्रेशन', - nextExecutionTime: 'अगली निष्पादन समय', - nextExecutionTimes: 'अगली 5 निष्पादन समय', - startTime: 'प्रारंभ समय', - executeNow: 'अब निष्पादन', - selectDateTime: 'तारीख़ और समय चुनें', - hours: 'घंटे', - minutes: 'मिनट', - onMinute: 'एक मिनट पर', - days: 'दिन', - lastDay: 'अंतिम दिन', - lastDayTooltip: 'सभी महीनों में 31 दिन नहीं होते। हर महीने का अंतिम दिन चुनने के लिए \'अंतिम दिन\' विकल्प का उपयोग करें।', - mode: 'मोड', - timezone: 'समय क्षेत्र', - visualConfig: 'दृश्य कॉन्फ़िगरेशन', - monthlyDay: 'मासिक दिवस', - executionTime: 'क्रियान्वयन समय', - invalidTimezone: 'अमान्य समय क्षेत्र', - invalidCronExpression: 'अमान्य क्रॉन अभिव्यक्ति', - noValidExecutionTime: 'कोई मान्य निष्पादन समय नहीं निकाला जा सकता', - executionTimeCalculationError: 'निष्पादन समय की गणना करने में असफल', - invalidFrequency: 'अमान्य आवृत्ति', - invalidStartTime: 'अमान्य प्रारंभ समय', - startTimeMustBeFuture: 'आरंभ समय भविष्य में होना चाहिए', - invalidTimeFormat: 'अमान्य समय प्रारूप (अपेक्षित HH:MM AM/PM)', - invalidWeekday: 'अमान्य सप्ताह का दिन: {{weekday}}', - invalidMonthlyDay: 'मासिक दिन 1-31 या "अंतिम" के बीच होना चाहिए', - invalidOnMinute: 'मिनट 0-59 के बीच होना चाहिए', - invalidExecutionTime: 'अमान्य निष्पादन समय', - executionTimeMustBeFuture: 'कार्यन्वयन समय भविष्य में होना चाहिए', - }, - triggerWebhook: { - title: 'वेबहूक ट्रिगर', - nodeTitle: '🔗 वेबहूक ट्रिगर', - configPlaceholder: 'Webhook ट्रिगर कॉन्फ़िगरेशन यहाँ लागू किया जाएगा', - webhookUrl: 'वेबहूक URL', - webhookUrlPlaceholder: 'वेबहुक URL बनाने के लिए जनरेट पर क्लिक करें', - generate: 'उत्पन्न करना', - copy: 'कॉपी', - test: 'परीक्षण', - urlGenerated: 'Webhook URL सफलतापूर्वक उत्पन्न किया गया', - urlGenerationFailed: 'वेबहुक URL बनाने में असफल', - urlCopied: 'URL क्लिपबोर्ड में कॉपी किया गया', - method: 'विधि', - contentType: 'सामग्री प्रकार', - queryParameters: 'क्वेरी पैरामीटर्स', - headerParameters: 'हेडर पैरामीटर्स', - requestBodyParameters: 'रिक्वेस्ट बॉडी पैरामीटर्स', - parameterName: 'चर का नाम', - varName: 'चर का नाम', - varType: 'टाइप', - varNamePlaceholder: 'चर नाम दर्ज करें...', - required: 'आवश्यक', - addParameter: 'जोड़ें', - addHeader: 'जोड़ें', - noParameters: 'कोई पैरामीटर कॉन्फ़िगर नहीं किया गया', - noQueryParameters: 'कोई क्वेरी पैरामीटर कॉन्फ़िगर नहीं किया गया', - noHeaders: 'कोई हेडर कॉन्फ़िगर नहीं किया गया', - noBodyParameters: 'कोई बॉडी पैरामीटर कॉन्फ़िगर नहीं किया गया', - debugUrlTitle: 'परीक्षण रन के लिए, हमेशा इस URL का उपयोग करें', - debugUrlCopy: 'कॉपी करने के लिए क्लिक करें', - debugUrlCopied: 'कॉपी किया गया!', - debugUrlPrivateAddressWarning: 'यह URL आंतरिक पता प्रतीत होता है, जिससे वेबहुक अनुरोध विफल हो सकते हैं। आप TRIGGER_URL को एक सार्वजनिक पते में बदल सकते हैं।', - errorHandling: 'त्रुटि प्रबंधन', - errorStrategy: 'त्रुटि प्रबंधन', - responseConfiguration: 'प्रतिक्रिया', - asyncMode: 'असिंक मोड', - statusCode: 'स्थिति कोड', - responseBody: 'प्रतिक्रिया बॉडी', - responseBodyPlaceholder: 'यहाँ अपना उत्तर正文 लिखें', - headers: 'हेडर', - validation: { - webhookUrlRequired: 'Webhook URL आवश्यक है', - invalidParameterType: 'पैरामीटर "{{name}}" के लिए अमान्य पैरामीटर प्रकार "{{type}}"', - }, - }, - }, - tracing: { - stopBy: '{{user}} द्वारा रोका गया', - }, - variableReference: { - conversationVars: 'बातचीत चर', - noAvailableVars: 'कोई उपलब्ध चर नहीं', - assignedVarsDescription: 'असाइन किए गए चर लिखने योग्य चर होने चाहिए, जैसे', - noVarsForOperation: 'चयनित कार्रवाई के साथ असाइनमेंट के लिए कोई चर उपलब्ध नहीं हैं.', - noAssignedVars: 'कोई उपलब्ध असाइन किए गए चर नहीं', - }, - versionHistory: { - filter: { - reset: 'फिल्टर रीसेट करें', - all: 'सब', - onlyShowNamedVersions: 'केवल नामित संस्करण दिखाएँ', - onlyYours: 'बस तुम्हारा', - empty: 'कोई मेल खाता हुआ संस्करण इतिहास नहीं मिला', - }, - editField: { - title: 'शीर्षक', - releaseNotesLengthLimit: 'रिलीज नोट्स {{limit}} अक्षरों से अधिक नहीं हो सकते हैं', - titleLengthLimit: 'शीर्षक {{limit}} अक्षरों से अधिक नहीं होना चाहिए', - releaseNotes: 'रिलीज़ नोट्स', - }, - action: { - deleteFailure: 'संस्करण को हटाने में विफल', - deleteSuccess: 'संस्करण हटाया गया', - restoreSuccess: 'संस्करण पुनर्स्थापित किया गया', - updateSuccess: 'संस्करण अपडेट किया गया', - updateFailure: 'संस्करण अपडेट करने में विफल', - restoreFailure: 'संस्करण को पुनर्स्थापित करने में विफल', - copyIdSuccess: 'आईडी क्लिपबोर्ड पर कॉपी हो गई', - }, - latest: 'लेटेस्ट', - editVersionInfo: 'संस्करण की जानकारी संपादित करें', - nameThisVersion: 'इस संस्करण का नाम दें', - title: 'संस्करण', - releaseNotesPlaceholder: 'बताइए कि क्या बदला', - currentDraft: 'वर्तमान मसौदा', - restorationTip: 'संस्करण पुनर्स्थापन के बाद, वर्तमान ड्राफ्ट अधिलेखित किया जाएगा।', - defaultName: 'अविभाजित संस्करण', - deletionTip: 'हटाना अप्रतिबंधी है, कृपया पुष्टि करें।', - copyId: 'आईडी कॉपी करें', - }, - debug: { - noData: { - runThisNode: 'इस नोड को चलाएँ', - description: 'अंतिम दौड़ के परिणाम यहाँ प्रदर्शित किए जाएंगे', - }, - variableInspect: { - trigger: { - clear: 'स्पष्ट', - stop: 'रुको दौड़', - running: 'कैशिंग चल रहा स्थिति', - normal: 'चर चरखा', - cached: 'कैश की गई परिवर्तनीयताओं को देखें', - }, - emptyLink: 'और जानें', - systemNode: 'प्रणाली', - chatNode: 'संवाद', - reset: 'अंतिम रन मान पर रीसेट करें', - view: 'लॉग देखें', - clearAll: 'सभी रीसेट करें', - title: 'चर चर के निरीक्षण', - edited: 'संशोधित किया गया', - envNode: 'पर्यावरण', - clearNode: 'कैश की गई वैरिएबल को साफ करें', - resetConversationVar: 'संवाद चर को डिफ़ॉल्ट मान पर रीसेट करें', - emptyTip: 'कैनवास पर एक नोड पर कदम रखने के बाद या चरण दर चरण एक नोड चलाने के बाद, आप वेरिएबल इंस्पेक्ट में नोड वेरिएबल का वर्तमान मान देख सकते हैं।', - export: 'निर्यात', - exportToolTip: 'फ़ाइल के रूप में निर्यात चर', - largeDataNoExport: 'विशाल डेटा - केवल आंशिक पूर्वावलोकन', - largeData: 'बड़ा डाटा, केवल पढ़ने के लिए पूर्वावलोकन। सभी देखने के लिए निर्यात करें।', - listening: { - title: 'ट्रिगर से घटनाओं को सुनना...', - tip: 'अब आप टेस्ट अनुरोध भेजकर HTTP {{nodeName}} एंडपॉइंट पर इवेंट ट्रिगर्स का सिमुलेशन कर सकते हैं या इसे लाइव इवेंट डिबगिंग के लिए कॉलबैक URL के रूप में उपयोग कर सकते हैं। सभी आउटपुट सीधे वेरिएबल इंस्पेक्टर में देखे जा सकते हैं।', - tipPlugin: 'अब आप {{- pluginName}} में ईवेंट बना सकते हैं, और वैरिएबल इंस्पेक्टर में इन ईवेंट्स के आउटपुट प्राप्त कर सकते हैं।', - tipSchedule: 'अनुसूची ट्रिगर्स से घटनाओं के लिए सुनना।\nअगली निर्धारित रन: {{nextTriggerTime}}', - tipFallback: 'आगामी ट्रिगर घटनाओं की प्रतीक्षा करें। आउटपुट्स यहाँ दिखाई देंगे।', - defaultNodeName: 'यह ट्रिगर', - defaultPluginName: 'यह प्लगइन ट्रिगर', - defaultScheduleTime: 'कॉन्फ़िगर नहीं किया गया', - selectedTriggers: 'चयनित ट्रिगर्स', - stopButton: 'रुकें', - }, - }, - settingsTab: 'सेटिंग्स', - lastRunTab: 'अंतिम रन', - relations: { - dependents: 'निष्पाभ लोग', - dependentsDescription: 'इस नोड पर निर्भर नोड्स', - dependencies: 'निर्भरता', - noDependents: 'कोई आश्रित नहीं', - dependenciesDescription: 'यह नोड जिस नोड पर निर्भर करता है', - noDependencies: 'कोई निर्भरताएँ नहीं', - }, - relationsTab: 'रिश्ते', - copyLastRun: 'अंतिम रन कॉपी करें', - noLastRunFound: 'कोई पिछला रन नहीं मिला', - noMatchingInputsFound: 'अंतिम रन से कोई मेल खाने वाले इनपुट नहीं मिले', - copyLastRunError: 'अंतिम रन इनपुट को कॉपी करने में विफल', - lastOutput: 'अंतिम आउटपुट', - lastRunInputsCopied: '{{count}} इनपुट पिछली रन से कॉपी किए गए', - }, - sidebar: { - exportWarning: 'वर्तमान सहेजी गई संस्करण निर्यात करें', - exportWarningDesc: 'यह आपके कार्यप्रवाह का वर्तमान सहेजा हुआ संस्करण निर्यात करेगा। यदि आपके संपादक में कोई असहेजा किए गए परिवर्तन हैं, तो कृपया पहले उन्हें सहेजें, कार्यप्रवाह कैनवास में निर्यात विकल्प का उपयोग करके।', - }, - publishLimit: { - startNodeTitlePrefix: 'अपग्रेड करें', - startNodeTitleSuffix: 'प्रत्येक वर्कफ़्लो के लिए असीमित ट्रिगर्स अनलॉक करें', - startNodeDesc: 'इस योजना के लिए आप प्रति वर्कफ़्लो 2 ट्रिगर्स की सीमा तक पहुँच चुके हैं। इस वर्कफ़्लो को प्रकाशित करने के लिए अपग्रेड करें।', - }, - error: { - startNodeRequired: 'कृपया {{operation}} से पहले एक प्रारंभ नोड जोड़ें', - operations: { - connectingNodes: 'नोड्स को जोड़ना', - addingNodes: 'नोड जोड़ना', - modifyingWorkflow: 'कार्यप्रवाह संशोधित करना', - updatingWorkflow: 'वर्कफ़्लो को अपडेट करना', - }, - }, - customWebhook: 'कस्टम वेबहुक', - difyTeam: 'डिफ़ी टीम', - triggerStatus: { - enabled: 'ट्रिगर', - disabled: 'ट्रिगर • अक्षम', - }, - entryNodeStatus: { - enabled: 'शुरू', - disabled: 'प्रारंभ • अक्षम', - }, - onboarding: { - title: 'शुरू करने के लिए एक प्रारंभिक नोड चुनें', - description: 'विभिन्न प्रारंभिक नोड्स की विभिन्न क्षमताएँ होती हैं। चिंता मत करो, आप उन्हें बाद में हमेशा बदल सकते हैं।', - userInputFull: 'उपयोगकर्ता इनपुट (मूल प्रारंभ नोड)', - userInputDescription: 'स्टार्ट नोड जो उपयोगकर्ता इनपुट वेरिएबल सेट करने की अनुमति देता है, जिसमें टूल क्षमताओं के रूप में वेब ऐप, सर्विस API, MCP सर्वर और वर्कफ़्लो शामिल हैं।', - trigger: 'ट्रिगर', - triggerDescription: 'ट्रिगर वर्कफ़्लो का प्रारंभिक नोड हो सकते हैं, जैसे कि निर्धारित कार्य, कस्टम वेबहुक, या अन्य ऐप्स के साथ एकीकरण।', - back: 'वापस', - learnMore: 'और जानें', - aboutStartNode: 'स्टार्ट नोड के बारे में।', - escTip: { - press: 'दबाएँ', - key: 'एस्केप', - toDismiss: 'अस्वीकार करना', - }, - }, -} - -export default translation diff --git a/web/i18n/id-ID/app-annotation.json b/web/i18n/id-ID/app-annotation.json new file mode 100644 index 0000000000..2a3266aa60 --- /dev/null +++ b/web/i18n/id-ID/app-annotation.json @@ -0,0 +1,96 @@ +{ + "noData": { + "title": "Tidak ada anotasi", + "description": "Anda dapat mengedit anotasi selama penelusuran kesalahan aplikasi atau mengimpor anotasi secara massal di sini untuk respons berkualitas tinggi." + }, + "table": { + "header": { + "answer": "Jawaban", + "question": "pertanyaan", + "createdAt": "dibuat di", + "hits": "Kecocokan", + "addAnnotation": "Tambahkan Anotasi", + "bulkImport": "Impor Massal", + "clearAllConfirm": "Menghapus semua anotasi?", + "bulkExport": "Ekspor Massal", + "clearAll": "Hapus Semua", + "actions": "Tindakan" + } + }, + "editModal": { + "answerPlaceholder": "Ketik jawaban Anda di sini", + "removeThisCache": "Hapus Anotasi ini", + "title": "Edit Balas Anotasi", + "yourAnswer": "Jawaban Anda", + "queryName": "Kueri Pengguna", + "queryPlaceholder": "Ketik kueri Anda di sini", + "yourQuery": "Pertanyaan Anda", + "createdAt": "Dibuat di", + "answerName": "Bot Pendongeng" + }, + "addModal": { + "answerName": "Jawaban", + "title": "Tambahkan Anotasi Balasan", + "queryName": "Pertanyaan", + "createNext": "Tambahkan respons beranotasi lainnya", + "queryPlaceholder": "Ketik kueri di sini", + "answerPlaceholder": "Ketik jawaban di sini" + }, + "batchModal": { + "ok": "OKE", + "content": "puas", + "error": "Kesalahan Impor", + "runError": "Menjalankan batch gagal", + "run": "Jalankan Batch", + "cancel": "Membatalkan", + "title": "Impor Massal", + "browse": "Telusuri", + "template": "Unduh templat di sini", + "tip": "File CSV harus sesuai dengan struktur berikut:", + "answer": "Jawaban", + "contentTitle": "konten potongan", + "processing": "Dalam pemrosesan batch", + "completed": "Impor selesai", + "csvUploadTitle": "Seret dan lepas file CSV Anda di sini, atau", + "question": "pertanyaan" + }, + "list": { + "delete": { + "title": "Apakah Anda yakin Hapus?" + } + }, + "batchAction": { + "selected": "Dipilih", + "delete": "Menghapus", + "cancel": "Membatalkan" + }, + "errorMessage": { + "queryRequired": "Pertanyaan diperlukan", + "answerRequired": "Jawaban diperlukan" + }, + "viewModal": { + "hit": "Kecocokan", + "hitHistory": "Riwayat Kecocokan", + "noHitHistory": "Tidak ada riwayat kecocokan", + "annotatedResponse": "Balas Anotasi", + "hits": "Kecocokan" + }, + "hitHistoryTable": { + "response": "Jawaban", + "match": "Kecocokan", + "query": "Kueri", + "source": "Sumber", + "time": "Waktu", + "score": "Skor" + }, + "initSetup": { + "confirmBtn": "Simpan & Aktifkan", + "configTitle": "Pengaturan Balasan Anotasi", + "title": "Pengaturan Awal Balasan Anotasi", + "configConfirmBtn": "Simpan" + }, + "title": "Anotasi", + "name": "Balas Anotasi", + "embeddingModelSwitchTip": "Model vektorisasi teks anotasi, model switching akan disematkan kembali, menghasilkan biaya tambahan.", + "editBy": "Jawaban diedit oleh {{author}}" +} diff --git a/web/i18n/id-ID/app-annotation.ts b/web/i18n/id-ID/app-annotation.ts deleted file mode 100644 index 31e630c4fe..0000000000 --- a/web/i18n/id-ID/app-annotation.ts +++ /dev/null @@ -1,98 +0,0 @@ -const translation = { - noData: { - title: 'Tidak ada anotasi', - description: 'Anda dapat mengedit anotasi selama penelusuran kesalahan aplikasi atau mengimpor anotasi secara massal di sini untuk respons berkualitas tinggi.', - }, - table: { - header: { - answer: 'Jawaban', - question: 'pertanyaan', - createdAt: 'dibuat di', - hits: 'Kecocokan', - addAnnotation: 'Tambahkan Anotasi', - bulkImport: 'Impor Massal', - clearAllConfirm: 'Menghapus semua anotasi?', - bulkExport: 'Ekspor Massal', - clearAll: 'Hapus Semua', - actions: 'Tindakan', - }, - }, - editModal: { - answerPlaceholder: 'Ketik jawaban Anda di sini', - removeThisCache: 'Hapus Anotasi ini', - title: 'Edit Balas Anotasi', - yourAnswer: 'Jawaban Anda', - queryName: 'Kueri Pengguna', - queryPlaceholder: 'Ketik kueri Anda di sini', - yourQuery: 'Pertanyaan Anda', - createdAt: 'Dibuat di', - answerName: 'Bot Pendongeng', - }, - addModal: { - answerName: 'Jawaban', - title: 'Tambahkan Anotasi Balasan', - queryName: 'Pertanyaan', - createNext: 'Tambahkan respons beranotasi lainnya', - queryPlaceholder: 'Ketik kueri di sini', - answerPlaceholder: 'Ketik jawaban di sini', - }, - batchModal: { - ok: 'OKE', - content: 'puas', - error: 'Kesalahan Impor', - runError: 'Menjalankan batch gagal', - run: 'Jalankan Batch', - cancel: 'Membatalkan', - title: 'Impor Massal', - browse: 'Telusuri', - template: 'Unduh templat di sini', - tip: 'File CSV harus sesuai dengan struktur berikut:', - answer: 'Jawaban', - contentTitle: 'konten potongan', - processing: 'Dalam pemrosesan batch', - completed: 'Impor selesai', - csvUploadTitle: 'Seret dan lepas file CSV Anda di sini, atau', - question: 'pertanyaan', - }, - list: { - delete: { - title: 'Apakah Anda yakin Hapus?', - }, - }, - batchAction: { - selected: 'Dipilih', - delete: 'Menghapus', - cancel: 'Membatalkan', - }, - errorMessage: { - queryRequired: 'Pertanyaan diperlukan', - answerRequired: 'Jawaban diperlukan', - }, - viewModal: { - hit: 'Kecocokan', - hitHistory: 'Riwayat Kecocokan', - noHitHistory: 'Tidak ada riwayat kecocokan', - annotatedResponse: 'Balas Anotasi', - hits: 'Kecocokan', - }, - hitHistoryTable: { - response: 'Jawaban', - match: 'Kecocokan', - query: 'Kueri', - source: 'Sumber', - time: 'Waktu', - score: 'Skor', - }, - initSetup: { - confirmBtn: 'Simpan & Aktifkan', - configTitle: 'Pengaturan Balasan Anotasi', - title: 'Pengaturan Awal Balasan Anotasi', - configConfirmBtn: 'Simpan', - }, - title: 'Anotasi', - name: 'Balas Anotasi', - embeddingModelSwitchTip: 'Model vektorisasi teks anotasi, model switching akan disematkan kembali, menghasilkan biaya tambahan.', - editBy: 'Jawaban diedit oleh {{author}}', -} - -export default translation diff --git a/web/i18n/id-ID/app-api.json b/web/i18n/id-ID/app-api.json new file mode 100644 index 0000000000..f5cf54fa9e --- /dev/null +++ b/web/i18n/id-ID/app-api.json @@ -0,0 +1,83 @@ +{ + "merMaid": { + "rerender": "Ulangi Render Ulang" + }, + "apiKeyModal": { + "lastUsed": "TERAKHIR DIGUNAKAN", + "secretKey": "Kunci Rahasia", + "apiSecretKey": "Kunci rahasia API", + "created": "DIBUAT", + "apiSecretKeyTips": "Untuk mencegah penyalahgunaan API, lindungi Kunci API Anda. Hindari menggunakannya sebagai teks biasa dalam kode front-end. :)", + "generateTips": "Simpan kunci ini di tempat yang aman dan mudah diakses.", + "createNewSecretKey": "Membuat kunci Rahasia baru" + }, + "actionMsg": { + "deleteConfirmTips": "Tindakan ini tidak dapat dibatalkan.", + "ok": "OKE", + "deleteConfirmTitle": "Hapus kunci rahasia ini?" + }, + "completionMode": { + "createCompletionApi": "Membuat Pesan Penyelesaian", + "messageIDTip": "ID Pesan", + "messageFeedbackApi": "Umpan balik pesan (mis. spam, tidak relevan, pujian)", + "ratingTip": "(mis. suka/tidak suka), null berarti membatalkan penilaian", + "parametersApi": "Dapatkan informasi parameter aplikasi", + "parametersApiTip": "Ambil parameter Input yang dikonfigurasi, termasuk nama variabel, nama bidang, jenis, dan nilai default. Biasanya digunakan untuk menampilkan bidang ini dalam formulir atau mengisi nilai default setelah klien dimuat.", + "info": "Untuk pembuatan teks berkualitas tinggi, seperti artikel, ringkasan, dan terjemahan, gunakan API pesan penyelesaian dengan input pengguna. Pembuatan teks bergantung pada parameter model dan templat prompt yang ditetapkan di Dify Prompt Engineering.", + "createCompletionApiTip": "Buat Pesan Penyelesaian untuk mendukung mode tanya jawab.", + "title": "API Aplikasi Penyelesaian", + "blocking": "Jenis pemblokiran, menunggu eksekusi selesai dan mengembalikan hasil. (Permintaan dapat terganggu jika prosesnya panjang)", + "streaming": "streaming kembali. Implementasi pengembalian streaming berdasarkan SSE (Server-Sent Events).", + "inputsTips": "(Opsional) Berikan bidang input pengguna sebagai pasangan kunci-nilai, sesuai dengan variabel di Prompt Eng. Kunci adalah nama variabel, Nilai adalah nilai parameter. Jika jenis bidang adalah Pilih, Nilai yang dikirimkan harus menjadi salah satu pilihan prasetel.", + "messageFeedbackApiTip": "Beri peringkat pesan yang diterima atas nama pengguna akhir yang suka atau tidak suka. Data ini terlihat di halaman Log & Anotasi dan digunakan untuk penyempurnaan model di masa mendatang.", + "queryTips": "Konten teks input pengguna." + }, + "chatMode": { + "messageFeedbackApiTip": "Beri peringkat pesan yang diterima atas nama pengguna akhir yang suka atau tidak suka. Data ini terlihat di halaman Log & Anotasi dan digunakan untuk penyempurnaan model di masa mendatang.", + "conversationRenamingApiTip": "Ganti nama percakapan; Nama ditampilkan di antarmuka klien multi-sesi.", + "conversationRenamingNameTip": "Nama baru", + "chatMsgHistoryFirstId": "ID rekaman obrolan pertama di halaman saat ini. Defaultnya tidak ada.", + "conversationsListApiTip": "Mendapatkan daftar sesi pengguna saat ini. Secara default, 20 sesi terakhir ditampilkan.", + "title": "API Aplikasi Obrolan", + "chatMsgHistoryApi": "Mendapatkan pesan riwayat obrolan", + "blocking": "Jenis pemblokiran, menunggu eksekusi selesai dan mengembalikan hasil. (Permintaan dapat terganggu jika prosesnya panjang)", + "createChatApi": "Buat pesan obrolan", + "info": "Untuk aplikasi percakapan serbaguna yang menggunakan format Tanya Jawab, panggil API pesan obrolan untuk memulai dialog. Pertahankan percakapan yang sedang berlangsung dengan meneruskan conversation_id yang dikembalikan. Parameter respons dan templat bergantung pada pengaturan Dify Prompt Eng.", + "conversationIdTip": "(Opsional) ID Percakapan: kosongkan untuk percakapan pertama kali; Teruskan conversation_id dari konteks untuk melanjutkan dialog.", + "queryTips": "Konten input/pertanyaan pengguna", + "conversationsListLimitTip": "Berapa banyak obrolan yang dikembalikan dalam satu permintaan", + "chatMsgHistoryLimit": "Berapa banyak obrolan yang dikembalikan dalam satu permintaan", + "conversationsListFirstIdTip": "ID rekaman terakhir di halaman saat ini, default tidak ada.", + "messageFeedbackApi": "Umpan balik pengguna terminal pesan (mis. spam, tidak relevan, pujian)", + "parametersApi": "Dapatkan informasi parameter aplikasi", + "streaming": "streaming kembali. Implementasi pengembalian streaming berdasarkan SSE (Server-Sent Events).", + "inputsTips": "(Opsional) Berikan bidang input pengguna sebagai pasangan kunci-nilai, sesuai dengan variabel di Prompt Eng. Kunci adalah nama variabel, Nilai adalah nilai parameter. Jika jenis bidang adalah Pilih, Nilai yang dikirimkan harus menjadi salah satu pilihan prasetel.", + "parametersApiTip": "Ambil parameter Input yang dikonfigurasi, termasuk nama variabel, nama bidang, jenis, dan nilai default. Biasanya digunakan untuk menampilkan bidang ini dalam formulir atau mengisi nilai default setelah klien dimuat.", + "chatMsgHistoryConversationIdTip": "ID Percakapan", + "messageIDTip": "ID Pesan", + "createChatApiTip": "Buat pesan percakapan baru atau lanjutkan dialog yang ada.", + "chatMsgHistoryApiTip": "Halaman pertama mengembalikan bilah 'batas' terbaru, yang dalam urutan terbalik.", + "conversationsListApi": "Dapatkan daftar percakapan", + "ratingTip": "(mis. suka/tidak suka), null berarti membatalkan penilaian", + "conversationRenamingApi": "Penggantian nama percakapan" + }, + "develop": { + "query": "Kueri", + "toc": "Isi", + "pathParams": "Parameter Jalur", + "requestBody": "Isi Permintaan" + }, + "apiServer": "Server API", + "copied": "Disalin", + "copy": "Salin", + "ok": "OK", + "regenerate": "Hasilkan Ulang", + "status": "Status", + "never": "Tidak pernah", + "playing": "Sedang Memutar", + "play": "Putar", + "disabled": "Dinonaktifkan", + "apiKey": "Kunci API", + "pause": "Jeda", + "loading": "Memuat..." +} diff --git a/web/i18n/id-ID/app-api.ts b/web/i18n/id-ID/app-api.ts deleted file mode 100644 index 627422a6b0..0000000000 --- a/web/i18n/id-ID/app-api.ts +++ /dev/null @@ -1,85 +0,0 @@ -const translation = { - merMaid: { - rerender: 'Ulangi Render Ulang', - }, - apiKeyModal: { - lastUsed: 'TERAKHIR DIGUNAKAN', - secretKey: 'Kunci Rahasia', - apiSecretKey: 'Kunci rahasia API', - created: 'DIBUAT', - apiSecretKeyTips: 'Untuk mencegah penyalahgunaan API, lindungi Kunci API Anda. Hindari menggunakannya sebagai teks biasa dalam kode front-end. :)', - generateTips: 'Simpan kunci ini di tempat yang aman dan mudah diakses.', - createNewSecretKey: 'Membuat kunci Rahasia baru', - }, - actionMsg: { - deleteConfirmTips: 'Tindakan ini tidak dapat dibatalkan.', - ok: 'OKE', - deleteConfirmTitle: 'Hapus kunci rahasia ini?', - }, - completionMode: { - createCompletionApi: 'Membuat Pesan Penyelesaian', - messageIDTip: 'ID Pesan', - messageFeedbackApi: 'Umpan balik pesan (mis. spam, tidak relevan, pujian)', - ratingTip: '(mis. suka/tidak suka), null berarti membatalkan penilaian', - parametersApi: 'Dapatkan informasi parameter aplikasi', - parametersApiTip: 'Ambil parameter Input yang dikonfigurasi, termasuk nama variabel, nama bidang, jenis, dan nilai default. Biasanya digunakan untuk menampilkan bidang ini dalam formulir atau mengisi nilai default setelah klien dimuat.', - info: 'Untuk pembuatan teks berkualitas tinggi, seperti artikel, ringkasan, dan terjemahan, gunakan API pesan penyelesaian dengan input pengguna. Pembuatan teks bergantung pada parameter model dan templat prompt yang ditetapkan di Dify Prompt Engineering.', - createCompletionApiTip: 'Buat Pesan Penyelesaian untuk mendukung mode tanya jawab.', - title: 'API Aplikasi Penyelesaian', - blocking: 'Jenis pemblokiran, menunggu eksekusi selesai dan mengembalikan hasil. (Permintaan dapat terganggu jika prosesnya panjang)', - streaming: 'streaming kembali. Implementasi pengembalian streaming berdasarkan SSE (Server-Sent Events).', - inputsTips: '(Opsional) Berikan bidang input pengguna sebagai pasangan kunci-nilai, sesuai dengan variabel di Prompt Eng. Kunci adalah nama variabel, Nilai adalah nilai parameter. Jika jenis bidang adalah Pilih, Nilai yang dikirimkan harus menjadi salah satu pilihan prasetel.', - messageFeedbackApiTip: 'Beri peringkat pesan yang diterima atas nama pengguna akhir yang suka atau tidak suka. Data ini terlihat di halaman Log & Anotasi dan digunakan untuk penyempurnaan model di masa mendatang.', - queryTips: 'Konten teks input pengguna.', - }, - chatMode: { - messageFeedbackApiTip: 'Beri peringkat pesan yang diterima atas nama pengguna akhir yang suka atau tidak suka. Data ini terlihat di halaman Log & Anotasi dan digunakan untuk penyempurnaan model di masa mendatang.', - conversationRenamingApiTip: 'Ganti nama percakapan; Nama ditampilkan di antarmuka klien multi-sesi.', - conversationRenamingNameTip: 'Nama baru', - chatMsgHistoryFirstId: 'ID rekaman obrolan pertama di halaman saat ini. Defaultnya tidak ada.', - conversationsListApiTip: 'Mendapatkan daftar sesi pengguna saat ini. Secara default, 20 sesi terakhir ditampilkan.', - title: 'API Aplikasi Obrolan', - chatMsgHistoryApi: 'Mendapatkan pesan riwayat obrolan', - blocking: 'Jenis pemblokiran, menunggu eksekusi selesai dan mengembalikan hasil. (Permintaan dapat terganggu jika prosesnya panjang)', - createChatApi: 'Buat pesan obrolan', - info: 'Untuk aplikasi percakapan serbaguna yang menggunakan format Tanya Jawab, panggil API pesan obrolan untuk memulai dialog. Pertahankan percakapan yang sedang berlangsung dengan meneruskan conversation_id yang dikembalikan. Parameter respons dan templat bergantung pada pengaturan Dify Prompt Eng.', - conversationIdTip: '(Opsional) ID Percakapan: kosongkan untuk percakapan pertama kali; Teruskan conversation_id dari konteks untuk melanjutkan dialog.', - queryTips: 'Konten input/pertanyaan pengguna', - conversationsListLimitTip: 'Berapa banyak obrolan yang dikembalikan dalam satu permintaan', - chatMsgHistoryLimit: 'Berapa banyak obrolan yang dikembalikan dalam satu permintaan', - conversationsListFirstIdTip: 'ID rekaman terakhir di halaman saat ini, default tidak ada.', - messageFeedbackApi: 'Umpan balik pengguna terminal pesan (mis. spam, tidak relevan, pujian)', - parametersApi: 'Dapatkan informasi parameter aplikasi', - streaming: 'streaming kembali. Implementasi pengembalian streaming berdasarkan SSE (Server-Sent Events).', - inputsTips: '(Opsional) Berikan bidang input pengguna sebagai pasangan kunci-nilai, sesuai dengan variabel di Prompt Eng. Kunci adalah nama variabel, Nilai adalah nilai parameter. Jika jenis bidang adalah Pilih, Nilai yang dikirimkan harus menjadi salah satu pilihan prasetel.', - parametersApiTip: 'Ambil parameter Input yang dikonfigurasi, termasuk nama variabel, nama bidang, jenis, dan nilai default. Biasanya digunakan untuk menampilkan bidang ini dalam formulir atau mengisi nilai default setelah klien dimuat.', - chatMsgHistoryConversationIdTip: 'ID Percakapan', - messageIDTip: 'ID Pesan', - createChatApiTip: 'Buat pesan percakapan baru atau lanjutkan dialog yang ada.', - chatMsgHistoryApiTip: 'Halaman pertama mengembalikan bilah \'batas\' terbaru, yang dalam urutan terbalik.', - conversationsListApi: 'Dapatkan daftar percakapan', - ratingTip: '(mis. suka/tidak suka), null berarti membatalkan penilaian', - conversationRenamingApi: 'Penggantian nama percakapan', - }, - develop: { - query: 'Kueri', - toc: 'Isi', - pathParams: 'Parameter Jalur', - requestBody: 'Isi Permintaan', - }, - apiServer: 'Server API', - copied: 'Disalin', - copy: 'Salin', - ok: 'OK', - regenerate: 'Hasilkan Ulang', - status: 'Status', - never: 'Tidak pernah', - playing: 'Sedang Memutar', - play: 'Putar', - disabled: 'Dinonaktifkan', - apiKey: 'Kunci API', - pause: 'Jeda', - loading: 'Memuat...', -} - -export default translation diff --git a/web/i18n/id-ID/app-debug.json b/web/i18n/id-ID/app-debug.json new file mode 100644 index 0000000000..505e0f8b9f --- /dev/null +++ b/web/i18n/id-ID/app-debug.json @@ -0,0 +1,562 @@ +{ + "pageTitle": { + "line1": "CEPAT", + "line2": "Teknik" + }, + "promptMode": { + "advancedWarning": { + "ok": "OKE", + "description": "Dalam Mode Pakar, Anda dapat mengedit seluruh PROMPT.", + "learnMore": "Pelajari lebih lanjut", + "title": "Anda telah beralih ke Mode Pakar, dan setelah Anda memodifikasi PROMPT, Anda TIDAK DAPAT kembali ke mode dasar." + }, + "operation": { + "addMessage": "Tambahkan Pesan" + }, + "contextMissing": "Komponen konteks terlewatkan, efektivitas prompt mungkin tidak baik.", + "switchBack": "Beralih kembali", + "simple": "Beralih ke Mode Pakar untuk mengedit seluruh PROMPT", + "advanced": "Mode Ahli" + }, + "operation": { + "applyConfig": "Menerbitkan", + "automatic": "Menghasilkan", + "addFeature": "Tambahkan Fitur", + "cancelDisagree": "Batalkan ketidaksukaan", + "stopResponding": "Berhenti merespons", + "disagree": "tidak suka", + "debugConfig": "Awakutu", + "agree": "suka", + "userAction": "Pengguna", + "cancelAgree": "Batalkan seperti", + "resetConfig": "Reset" + }, + "notSetAPIKey": { + "title": "Kunci penyedia LLM belum diatur", + "description": "Kunci penyedia LLM belum diatur, dan perlu diatur sebelum debugging.", + "settingBtn": "Buka pengaturan", + "trailFinished": "Jejak selesai" + }, + "trailUseGPT4Info": { + "description": "Gunakan gpt-4, silakan atur Kunci API.", + "title": "Tidak mendukung gpt-4 sekarang" + }, + "feature": { + "groupChat": { + "title": "Peningkatan obrolan", + "description": "Menambahkan pengaturan pra-percakapan untuk aplikasi dapat meningkatkan pengalaman pengguna." + }, + "groupExperience": { + "title": "Pengalaman meningkatkan" + }, + "conversationOpener": { + "description": "Dalam aplikasi obrolan, kalimat pertama yang AI secara aktif berbicara kepada pengguna biasanya digunakan sebagai sambutan.", + "title": "Pembuka Percakapan" + }, + "suggestedQuestionsAfterAnswer": { + "description": "Menyiapkan saran pertanyaan berikutnya dapat memberi pengguna obrolan yang lebih baik.", + "title": "Tindak lanjut", + "tryToAsk": "Cobalah untuk bertanya", + "resDes": "3 saran untuk pertanyaan pengguna berikutnya." + }, + "moreLikeThis": { + "tip": "Menggunakan fitur ini akan dikenakan overhead token tambahan", + "description": "Buat beberapa teks sekaligus, lalu edit dan lanjutkan membuat", + "title": "Lebih seperti ini", + "generateNumTip": "Jumlah setiap kali yang dihasilkan" + }, + "speechToText": { + "resDes": "Input suara diaktifkan", + "title": "Ucapan ke Teks", + "description": "Input suara dapat digunakan dalam obrolan." + }, + "textToSpeech": { + "resDes": "Teks ke Audio diaktifkan", + "title": "Teks ke Ucapan", + "description": "Pesan percakapan dapat diubah menjadi ucapan." + }, + "citation": { + "description": "Tampilkan dokumen sumber dan bagian atribut dari konten yang dihasilkan.", + "title": "Kutipan dan Atribusi", + "resDes": "Kutipan dan Atribusi diaktifkan" + }, + "annotation": { + "scoreThreshold": { + "accurateMatch": "Kecocokan yang Akurat", + "title": "Ambang Skor", + "description": "Digunakan untuk menetapkan ambang batas kesamaan untuk balasan anotasi.", + "easyMatch": "Pencocokan Mudah" + }, + "matchVariable": { + "choosePlaceholder": "Pilih variabel pencocokan", + "title": "Cocokkan Variabel" + }, + "add": "Menambahkan anotasi", + "cached": "Beranotasi", + "description": "Anda dapat menambahkan respons berkualitas tinggi secara manual ke cache untuk pencocokan prioritas dengan pertanyaan pengguna serupa.", + "edit": "Edit anotasi", + "resDes": "Respons Anotasi diaktifkan", + "cacheManagement": "Anotasi", + "remove": "Buka", + "title": "Balas Anotasi", + "removeConfirm": "Hapus anotasi ini ?" + }, + "dataSet": { + "queryVariable": { + "choosePlaceholder": "Pilih variabel kueri", + "tip": "Variabel ini akan digunakan sebagai input kueri untuk pengambilan konteks, mendapatkan informasi konteks yang terkait dengan input variabel ini.", + "unableToQueryDataSet": "Tidak dapat mengkueri Pengetahuan", + "title": "Variabel kueri", + "noVar": "Non-variabel", + "unableToQueryDataSetTip": "Tidak dapat berhasil mengkueri Pengetahuan, silakan pilih variabel kueri konteks di bagian konteks.", + "contextVarNotEmpty": "Variabel kueri konteks tidak dapat kosong", + "deleteContextVarTip": "Variabel ini telah ditetapkan sebagai variabel kueri konteks, dan menghapusnya akan berdampak pada penggunaan normal Pengetahuan. Jika Anda masih perlu menghapusnya, silakan pilih kembali di bagian konteks.", + "ok": "OKE", + "noVarTip": "silakan buat variabel di bawah bagian Variabel", + "deleteContextVarTitle": "Hapus variabel “{{varName}}”?" + }, + "notSupportSelectMulti": "Saat ini hanya mendukung satu Pengetahuan", + "selectTitle": "Pilih referensi Pengetahuan", + "toCreate": "Pergi ke membuat", + "noDataSet": "Tidak ada Pengetahuan yang ditemukan", + "noData": "Anda dapat mengimpor Pengetahuan sebagai konteks", + "title": "Pengetahuan", + "selected": "Pengetahuan yang dipilih" + }, + "tools": { + "modal": { + "toolType": { + "title": "Jenis Alat", + "placeholder": "Silakan pilih jenis alat" + }, + "name": { + "title": "Nama", + "placeholder": "Silakan masukkan nama" + }, + "variableName": { + "placeholder": "Silakan masukkan nama variabel", + "title": "Nama Variabel" + }, + "title": "Alat" + }, + "tips": "Alat menyediakan metode panggilan API standar, mengambil input atau variabel pengguna sebagai parameter permintaan untuk mengkueri data eksternal sebagai konteks.", + "title": "Perkakas", + "toolsInUse": "{{count}} alat yang digunakan" + }, + "conversationHistory": { + "editModal": { + "assistantPrefix": "Awalan asisten", + "userPrefix": "Awalan pengguna", + "title": "Mengedit Nama Peran Percakapan" + }, + "description": "Menetapkan nama awalan untuk peran percakapan", + "title": "Riwayat Percakapan", + "learnMore": "Pelajari lebih lanjut", + "tip": "Riwayat Percakapan tidak diaktifkan, silakan tambahkan di prompt di atas." + }, + "toolbox": { + "title": "TOOLBOX" + }, + "moderation": { + "modal": { + "provider": { + "openaiTip": { + "suffix": ".", + "prefix": "OpenAI Moderation memerlukan kunci OpenAI API yang dikonfigurasi di" + }, + "title": "Penyedia", + "keywords": "Kata kunci", + "openai": "Moderasi OpenAI" + }, + "keywords": { + "line": "Garis", + "placeholder": "Satu per baris, dipisahkan oleh jeda baris", + "tip": "Satu per baris, dipisahkan oleh jeda baris. Hingga 100 karakter per baris." + }, + "content": { + "preset": "Balasan yang telah ditetapkan sebelumnya", + "input": "Konten INPUT Moderatif", + "output": "Konten OUTPUT Moderatif", + "errorMessage": "Balasan prasetel tidak boleh kosong", + "condition": "Konten INPUT dan OUTPUT moderat mengaktifkan setidaknya satu", + "placeholder": "Konten balasan preset di sini", + "supportMarkdown": "Penurunan harga didukung", + "fromApi": "Balasan prasetel dikembalikan oleh API" + }, + "openaiNotConfig": { + "after": "", + "before": "OpenAI Moderation memerlukan kunci OpenAI API yang dikonfigurasi di" + }, + "title": "Setelan moderasi konten" + }, + "title": "Moderasi konten", + "outputEnabled": "HASIL", + "contentEnableLabel": "Moderasi konten diaktifkan", + "inputEnabled": "MASUKAN", + "allEnabled": "MASUKAN & KELUARAN", + "description": "Amankan output model dengan menggunakan API moderasi atau mempertahankan daftar kata yang sensitif." + }, + "fileUpload": { + "title": "Unggah File", + "supportedTypes": "Jenis File Dukungan", + "numberLimit": "Upload maksimal", + "modalTitle": "Pengaturan Unggahan File", + "description": "Kotak input obrolan memungkinkan pengunggahan gambar, dokumen, dan file lainnya." + }, + "imageUpload": { + "supportedTypes": "Jenis File Dukungan", + "description": "Izinkan mengunggah gambar.", + "modalTitle": "Pengaturan Unggahan Gambar", + "numberLimit": "Upload maksimal", + "title": "Unggah Gambar" + }, + "bar": { + "empty": "Aktifkan fitur untuk meningkatkan pengalaman pengguna aplikasi web", + "enableText": "Fitur Diaktifkan", + "manage": "Urus" + }, + "documentUpload": { + "title": "Surat", + "description": "Aktifkan Dokumen akan memungkinkan model untuk mengambil dokumen dan menjawab pertanyaan tentangnya." + }, + "audioUpload": { + "title": "Audio", + "description": "Aktifkan Audio akan memungkinkan model untuk memproses file audio untuk transkripsi dan analisis." + } + }, + "codegen": { + "title": "Pembuat Kode", + "noDataLine2": "Pratinjau kode akan ditampilkan di sini.", + "apply": "Berlaku", + "instruction": "Peraturan", + "description": "Pembuat Kode menggunakan model yang dikonfigurasi untuk menghasilkan kode berkualitas tinggi berdasarkan instruksi Anda. Harap berikan instruksi yang jelas dan terperinci.", + "loading": "Menghasilkan kode...", + "overwriteConfirmMessage": "Tindakan ini akan menimpa kode yang ada. Apakah Anda ingin melanjutkan?", + "generate": "Menghasilkan", + "generatedCodeTitle": "Kode yang Dihasilkan", + "overwriteConfirmTitle": "Menimpa kode yang ada?", + "resTitle": "Kode yang Dihasilkan", + "instructionPlaceholder": "Masukkan deskripsi terperinci tentang kode yang ingin Anda hasilkan.", + "applyChanges": "Terapkan Perubahan", + "noDataLine1": "Jelaskan kasus penggunaan Anda di sebelah kiri," + }, + "generate": { + "template": { + "pythonDebugger": { + "name": "Debugger Python", + "instruction": "Bot yang dapat menghasilkan dan men-debug kode Anda berdasarkan instruksi Anda" + }, + "translation": { + "name": "Terjemahan", + "instruction": "Penerjemah yang dapat menerjemahkan berbagai bahasa" + }, + "professionalAnalyst": { + "name": "Analis profesional", + "instruction": "Ekstrak wawasan, identifikasi risiko, dan suling informasi penting dari laporan panjang ke dalam satu memo" + }, + "excelFormulaExpert": { + "name": "Pakar rumus Excel", + "instruction": "Chatbot yang dapat membantu pengguna pemula memahami, menggunakan, dan membuat rumus Excel berdasarkan instruksi pengguna" + }, + "travelPlanning": { + "name": "Perencanaan perjalanan", + "instruction": "Asisten Perencanaan Perjalanan adalah alat cerdas yang dirancang untuk membantu pengguna merencanakan perjalanan mereka dengan mudah" + }, + "SQLSorcerer": { + "instruction": "Mengubah bahasa sehari-hari menjadi kueri SQL", + "name": "Penyihir SQL" + }, + "GitGud": { + "instruction": "Hasilkan perintah Git yang sesuai berdasarkan tindakan kontrol versi yang dijelaskan pengguna", + "name": "Git gud" + }, + "meetingTakeaways": { + "name": "Kesimpulan rapat", + "instruction": "Suling rapat menjadi ringkasan ringkas termasuk topik diskusi, poin penting, dan item tindakan" + }, + "writingsPolisher": { + "name": "Menulis pemoles", + "instruction": "Gunakan teknik copyediting canggih untuk meningkatkan tulisan Anda" + } + }, + "overwriteMessage": "Menerapkan prompt ini akan mengganti konfigurasi yang ada.", + "title": "Prompt Generator", + "tryIt": "Cobalah", + "idealOutputPlaceholder": "Jelaskan format respons ideal Anda, panjang, nada, dan persyaratan konten...", + "resTitle": "Prompt yang Dihasilkan", + "overwriteTitle": "Ganti konfigurasi yang ada?", + "optional": "Fakultatif", + "instruction": "Peraturan", + "versions": "Versi", + "to": "ke", + "press": "Peras", + "latest": "Terbaru", + "version": "Versi", + "generate": "Menghasilkan", + "loading": "Mengatur aplikasi untuk Anda...", + "optimizePromptTooltip": "Optimalkan di Prompt Generator", + "apply": "Berlaku", + "instructionPlaceHolderLine3": "Nadanya terlalu keras, tolong buat lebih ramah.", + "optimizationNote": "Catatan Pengoptimalan", + "dismiss": "Mengabaikan", + "description": "Prompt Generator menggunakan model yang dikonfigurasi untuk mengoptimalkan prompt untuk kualitas yang lebih tinggi dan struktur yang lebih baik. Silakan tulis instruksi yang jelas dan terperinci.", + "idealOutput": "Keluaran Ideal", + "codeGenInstructionPlaceHolderLine": "Semakin detail umpan balik, seperti jenis data input dan output serta bagaimana variabel diproses, semakin akurat pembuatan kode.", + "newNoDataLine1": "Tulis instruksi di kolom kiri, dan klik Hasilkan untuk melihat respons.", + "instructionPlaceHolderTitle": "Jelaskan bagaimana Anda ingin meningkatkan Prompt ini. Misalnya:", + "instructionPlaceHolderLine1": "Buat output lebih ringkas, pertahankan poin-poin inti.", + "insertContext": "Sisipkan konteks", + "instructionPlaceHolderLine2": "Format keluarannya salah, harap ikuti format JSON dengan ketat." + }, + "resetConfig": { + "title": "Mengonfirmasi reset?", + "message": "Atur ulang membuang perubahan, memulihkan konfigurasi terakhir yang diterbitkan." + }, + "errorMessage": { + "queryRequired": "Teks permintaan diperlukan.", + "waitForImgUpload": "Silakan tunggu gambar diunggah", + "notSelectModel": "Silakan pilih model", + "waitForResponse": "Harap tunggu hingga respons terhadap pesan sebelumnya selesai.", + "waitForBatchResponse": "Harap tunggu hingga respons terhadap tugas batch selesai.", + "waitForFileUpload": "Harap tunggu file/file diunggah", + "nameOfKeyRequired": "nama kunci: {{key}} diperlukan", + "valueOfVarRequired": "Nilai {{key}} tidak boleh kosong" + }, + "warningMessage": { + "timeoutExceeded": "Hasil tidak ditampilkan karena batas waktu. Silakan lihat log untuk mengumpulkan hasil lengkap." + }, + "variableTable": { + "action": "Tindakan", + "typeString": "String", + "typeSelect": "Pilih", + "type": "Jenis Masukan", + "key": "Kunci Variabel", + "name": "Nama Bidang Input Pengguna" + }, + "varKeyError": { + "canNoBeEmpty": "{{key}} wajib diisi", + "tooLong": "{{key}} terlalu panjang. Tidak boleh lebih dari 30 karakter", + "notValid": "{{key}} tidak valid. Hanya boleh berisi huruf, angka, dan garis bawah", + "notStartWithNumber": "{{key}} tidak dapat diawali dengan angka", + "keyAlreadyExists": "{{key}} sudah ada" + }, + "otherError": { + "queryNoBeEmpty": "Kueri harus diatur dalam prompt", + "historyNoBeEmpty": "Riwayat percakapan harus diatur dalam prompt", + "promptNoBeEmpty": "Prompt tidak bisa kosong" + }, + "variableConfig": { + "file": { + "image": { + "name": "Citra" + }, + "audio": { + "name": "Audio" + }, + "document": { + "name": "Dokumen" + }, + "video": { + "name": "Video" + }, + "custom": { + "name": "Jenis file lainnya", + "description": "Tentukan jenis file lainnya.", + "createPlaceholder": " Ekstensi file, misalnya .doc" + }, + "supportFileTypes": "Jenis File Dukungan" + }, + "errorMsg": { + "atLeastOneOption": "Setidaknya satu opsi diperlukan", + "labelNameRequired": "Nama label diperlukan", + "optionRepeat": "Memiliki opsi pengulangan", + "varNameCanBeRepeat": "Nama variabel tidak dapat diulang" + }, + "string": "Teks Singkat", + "single-file": "File Tunggal", + "labelName": "Nama Label", + "number": "Angka", + "json": "Kode JSON", + "optional": "fakultatif", + "addOption": "Tambahkan opsi", + "checkbox": "Kotak centang", + "hide": "Menyembunyikan", + "required": "Diperlukan", + "maxLength": "Panjang maks", + "select": "Pilih", + "paragraph": "Paragraf", + "options": "Pilihan", + "apiBasedVar": "Variabel berbasis API", + "varName": "Nama Variabel", + "editModalTitle": "Edit Bidang Input", + "multi-files": "Daftar File", + "text-input": "Teks Singkat", + "content": "Puas", + "inputPlaceholder": "Silakan masukkan", + "selectDefaultValue": "Pilih nilai default", + "fieldType": "Jenis bidang", + "addModalTitle": "Tambahkan Bidang Input", + "stringTitle": "Opsi kotak teks formulir", + "jsonSchema": "Skema JSON", + "noDefaultValue": "Tidak ada nilai default", + "defaultValue": "Nilai default", + "localUpload": "Unggahan Lokal", + "maxNumberOfUploads": "Jumlah upload maksimal", + "both": "Keduanya", + "uploadFileTypes": "Unggah Jenis File", + "unit": "Satuan", + "startChecked": "Mulai diperiksa", + "placeholder": "Placeholder", + "uploadMethod": "Metode Unggah", + "noDefaultSelected": "Jangan pilih", + "defaultValuePlaceholder": "Masukkan nilai default untuk mengisi kolom sebelumnya", + "showAllSettings": "Tampilkan Semua Pengaturan", + "tooltips": "Tooltip", + "displayName": "Nama Tampilan", + "tooltipsPlaceholder": "Masukkan teks bermanfaat yang ditampilkan saat mengarahkan kursor ke label", + "startSelectedOption": "Mulai opsi yang dipilih", + "unitPlaceholder": "Tampilkan unit setelah angka, misalnya token", + "placeholderPlaceholder": "Masukkan teks untuk ditampilkan saat bidang kosong", + "description": "Pengaturan untuk variabel {{varName}}", + "notSet": "Belum diatur, coba ketik {{input}} di prompt awalan", + "maxNumberTip": "Dokumen < {{docLimit}}, gambar < {{imgLimit}}, audio < {{audioLimit}}, video < {{videoLimit}}" + }, + "vision": { + "visionSettings": { + "both": "Keduanya", + "high": "Tinggi", + "uploadMethod": "Metode Unggah", + "title": "Pengaturan Penglihatan", + "localUpload": "Unggahan Lokal", + "low": "Rendah", + "uploadLimit": "Batas Unggahan", + "resolution": "Resolusi", + "url": "URL", + "resolutionTooltip": "res rendah akan memungkinkan model menerima versi gambar resolusi rendah 512 x 512, dan merepresentasikan gambar dengan anggaran 65 token. Ini memungkinkan API memberikan respons lebih cepat dan menggunakan lebih sedikit token input untuk kasus penggunaan yang tidak memerlukan detail tinggi.\n\nres tinggi pertama-tama memungkinkan model melihat gambar resolusi rendah dan kemudian membuat potongan gambar yang lebih detail sebagai kotak 512px berdasarkan ukuran gambar input. Setiap potongan detail menggunakan dua kali anggaran token sehingga totalnya menjadi 129 token." + }, + "settings": "Pengaturan", + "description": "Aktifkan Penglihatan akan memungkinkan model untuk mengambil gambar dan menjawab pertanyaan tentangnya.", + "onlySupportVisionModelTip": "Hanya mendukung model penglihatan", + "name": "Penglihatan" + }, + "voice": { + "voiceSettings": { + "autoPlayEnabled": "Di atas", + "voice": "Suara", + "language": "Bahasa", + "title": "Pengaturan Suara", + "autoPlay": "Putar Otomatis", + "autoPlayDisabled": "Dinonaktifkan", + "resolutionTooltip": "Bahasa pendukung suara text-to-speech。" + }, + "settings": "Pengaturan", + "defaultDisplay": "Suara Default", + "description": "Pengaturan suara teks ke ucapan", + "name": "Suara" + }, + "openingStatement": { + "openingQuestion": "Pertanyaan Pembuka", + "add": "Tambah", + "writeOpener": "Edit pembuka", + "title": "Pembuka Percakapan", + "noDataPlaceHolder": "Memulai percakapan dengan pengguna dapat membantu AI menjalin hubungan yang lebih dekat dengan mereka dalam aplikasi percakapan.", + "tooShort": "Setidaknya 20 kata prompt awal diperlukan untuk menghasilkan pidato pembuka untuk percakapan.", + "placeholder": "Tulis pesan pembuka Anda di sini, Anda bisa menggunakan variabel, coba ketik {{variable}}.", + "openingQuestionPlaceholder": "Anda bisa menggunakan variabel, coba ketik {{variable}}.", + "varTip": "Anda dapat menggunakan variabel, coba ketik {{variable}}", + "notIncludeKey": "Prompt awal tidak menyertakan variabel: {{key}}. Harap tambahkan ke prompt awal." + }, + "modelConfig": { + "modeType": { + "completion": "Lengkap", + "chat": "Mengobrol" + }, + "title": "Model dan Parameter", + "model": "Pola", + "setTone": "Atur nada respons" + }, + "inputs": { + "queryPlaceholder": "Silakan masukkan teks permintaan.", + "run": "Jalankan", + "completionVarTip": "Isi nilai variabel, yang akan secara otomatis diganti dengan kata-kata prompt setiap kali pertanyaan diajukan.", + "noVar": "Isi nilai variabel, yang akan secara otomatis diganti dalam kata prompt setiap kali sesi baru dimulai.", + "noPrompt": "Coba tulis beberapa prompt dalam input pra-prompt", + "previewTitle": "Pratinjau prompt", + "userInputField": "Bidang Input Pengguna", + "queryTitle": "Kueri konten", + "title": "Debug & Pratinjau", + "chatVarTip": "Isi nilai variabel, yang akan secara otomatis diganti dalam kata prompt setiap kali sesi baru dimulai" + }, + "datasetConfig": { + "retrieveOneWay": { + "title": "Pengambilan N-ke-1", + "description": "Berdasarkan maksud pengguna dan deskripsi Pengetahuan, Agen secara mandiri memilih Pengetahuan terbaik untuk kueri. Terbaik untuk aplikasi dengan Pengetahuan yang berbeda dan terbatas." + }, + "retrieveMultiWay": { + "title": "Pengambilan multi-jalur", + "description": "Berdasarkan maksud pengguna, kueri di semua Pengetahuan, mengambil teks yang relevan dari berbagai sumber, dan memilih hasil terbaik yang cocok dengan kueri pengguna setelah peringkat ulang." + }, + "rerankModelRequired": "Model Rerank yang dikonfigurasi diperlukan", + "top_k": "K Teratas", + "score_threshold": "Ambang Skor", + "settingTitle": "Pengaturan pengambilan", + "score_thresholdTip": "Digunakan untuk mengatur ambang kesamaan untuk pemfilteran potongan.", + "retrieveChangeTip": "Memodifikasi mode indeks dan mode pengambilan dapat memengaruhi aplikasi yang terkait dengan Pengetahuan ini.", + "embeddingModelRequired": "Model Penyematan yang dikonfigurasi diperlukan", + "params": "Parameter", + "top_kTip": "Digunakan untuk memfilter potongan yang paling mirip dengan pertanyaan pengguna. Sistem juga akan secara dinamis menyesuaikan nilai Top K, sesuai dengan max_tokens model yang dipilih.", + "knowledgeTip": "Klik tombol \" \" untuk menambahkan pengetahuan" + }, + "assistantType": { + "chatAssistant": { + "description": "Membuat asisten berbasis obrolan menggunakan Model Bahasa Besar", + "name": "Asisten Dasar" + }, + "agentAssistant": { + "description": "Bangun Agen cerdas yang dapat secara mandiri memilih alat untuk menyelesaikan tugas", + "name": "Asisten Agen" + }, + "name": "Jenis Asisten" + }, + "agent": { + "agentModeType": { + "ReACT": "Bereaksi", + "functionCall": "Fungsi Panggilan" + }, + "setting": { + "maximumIterations": { + "name": "Iterasi Maksimum", + "description": "Membatasi jumlah iterasi yang dapat dijalankan oleh asisten agen" + }, + "description": "Pengaturan Asisten Agen memungkinkan pengaturan mode agen dan fitur lanjutan seperti perintah bawaan, hanya tersedia dalam jenis Agen.", + "name": "Pengaturan Agen" + }, + "tools": { + "enabled": "Diaktifkan", + "name": "Perkakas", + "description": "Menggunakan alat dapat memperluas kemampuan LLM, seperti mencari di internet atau melakukan perhitungan ilmiah" + }, + "agentModeDes": "Mengatur jenis mode inferensi untuk agen", + "firstPrompt": "Prompt Pertama", + "buildInPrompt": "Perintah Bawaan", + "agentMode": "Mode Agen", + "nextIteration": "Iterasi Berikutnya", + "promptPlaceholder": "Tulis prompt Anda di sini" + }, + "orchestrate": "Mengatur", + "chatSubTitle": "Peraturan", + "variableTitle": "Variabel", + "variableTip": "Pengguna mengisi variabel dalam formulir, secara otomatis mengganti variabel dalam perintah.", + "formattingChangedText": "Memodifikasi pemformatan akan mengatur ulang area debug, apakah Anda yakin?", + "completionSubTitle": "Prompt Awalan", + "debugAsMultipleModel": "Debug sebagai Beberapa Model", + "publishAs": "Publikasikan sebagai", + "autoAddVar": "Variabel yang tidak ditentukan direferensikan dalam pra-prompt, apakah Anda ingin menambahkannya dalam formulir input pengguna?", + "debugAsSingleModel": "Debug sebagai Model Tunggal", + "formattingChangedTitle": "Pemformatan diubah", + "duplicateModel": "Duplikat", + "result": "Teks Keluaran", + "noResult": "Output akan ditampilkan di sini.", + "promptTip": "Prompts membimbing respons AI dengan instruksi dan batasan. Masukkan variabel seperti {{input}}. Prompt ini tidak akan terlihat oleh pengguna.", + "notSetVar": "Variabel memungkinkan pengguna untuk memasukkan kata pemicu atau ucapan pembuka saat mengisi formulir. Anda dapat mencoba memasukkan \"{{input}}\" pada kata pemicu." +} diff --git a/web/i18n/id-ID/app-debug.ts b/web/i18n/id-ID/app-debug.ts deleted file mode 100644 index 02da61b319..0000000000 --- a/web/i18n/id-ID/app-debug.ts +++ /dev/null @@ -1,564 +0,0 @@ -const translation = { - pageTitle: { - line1: 'CEPAT', - line2: 'Teknik', - }, - promptMode: { - advancedWarning: { - ok: 'OKE', - description: 'Dalam Mode Pakar, Anda dapat mengedit seluruh PROMPT.', - learnMore: 'Pelajari lebih lanjut', - title: 'Anda telah beralih ke Mode Pakar, dan setelah Anda memodifikasi PROMPT, Anda TIDAK DAPAT kembali ke mode dasar.', - }, - operation: { - addMessage: 'Tambahkan Pesan', - }, - contextMissing: 'Komponen konteks terlewatkan, efektivitas prompt mungkin tidak baik.', - switchBack: 'Beralih kembali', - simple: 'Beralih ke Mode Pakar untuk mengedit seluruh PROMPT', - advanced: 'Mode Ahli', - }, - operation: { - applyConfig: 'Menerbitkan', - automatic: 'Menghasilkan', - addFeature: 'Tambahkan Fitur', - cancelDisagree: 'Batalkan ketidaksukaan', - stopResponding: 'Berhenti merespons', - disagree: 'tidak suka', - debugConfig: 'Awakutu', - agree: 'suka', - userAction: 'Pengguna', - cancelAgree: 'Batalkan seperti', - resetConfig: 'Reset', - }, - notSetAPIKey: { - title: 'Kunci penyedia LLM belum diatur', - description: 'Kunci penyedia LLM belum diatur, dan perlu diatur sebelum debugging.', - settingBtn: 'Buka pengaturan', - trailFinished: 'Jejak selesai', - }, - trailUseGPT4Info: { - description: 'Gunakan gpt-4, silakan atur Kunci API.', - title: 'Tidak mendukung gpt-4 sekarang', - }, - feature: { - groupChat: { - title: 'Peningkatan obrolan', - description: 'Menambahkan pengaturan pra-percakapan untuk aplikasi dapat meningkatkan pengalaman pengguna.', - }, - groupExperience: { - title: 'Pengalaman meningkatkan', - }, - conversationOpener: { - description: 'Dalam aplikasi obrolan, kalimat pertama yang AI secara aktif berbicara kepada pengguna biasanya digunakan sebagai sambutan.', - title: 'Pembuka Percakapan', - }, - suggestedQuestionsAfterAnswer: { - description: 'Menyiapkan saran pertanyaan berikutnya dapat memberi pengguna obrolan yang lebih baik.', - title: 'Tindak lanjut', - tryToAsk: 'Cobalah untuk bertanya', - resDes: '3 saran untuk pertanyaan pengguna berikutnya.', - }, - moreLikeThis: { - tip: 'Menggunakan fitur ini akan dikenakan overhead token tambahan', - description: 'Buat beberapa teks sekaligus, lalu edit dan lanjutkan membuat', - title: 'Lebih seperti ini', - generateNumTip: 'Jumlah setiap kali yang dihasilkan', - }, - speechToText: { - resDes: 'Input suara diaktifkan', - title: 'Ucapan ke Teks', - description: 'Input suara dapat digunakan dalam obrolan.', - }, - textToSpeech: { - resDes: 'Teks ke Audio diaktifkan', - title: 'Teks ke Ucapan', - description: 'Pesan percakapan dapat diubah menjadi ucapan.', - }, - citation: { - description: 'Tampilkan dokumen sumber dan bagian atribut dari konten yang dihasilkan.', - title: 'Kutipan dan Atribusi', - resDes: 'Kutipan dan Atribusi diaktifkan', - }, - annotation: { - scoreThreshold: { - accurateMatch: 'Kecocokan yang Akurat', - title: 'Ambang Skor', - description: 'Digunakan untuk menetapkan ambang batas kesamaan untuk balasan anotasi.', - easyMatch: 'Pencocokan Mudah', - }, - matchVariable: { - choosePlaceholder: 'Pilih variabel pencocokan', - title: 'Cocokkan Variabel', - }, - add: 'Menambahkan anotasi', - cached: 'Beranotasi', - description: 'Anda dapat menambahkan respons berkualitas tinggi secara manual ke cache untuk pencocokan prioritas dengan pertanyaan pengguna serupa.', - edit: 'Edit anotasi', - resDes: 'Respons Anotasi diaktifkan', - cacheManagement: 'Anotasi', - remove: 'Buka', - title: 'Balas Anotasi', - removeConfirm: 'Hapus anotasi ini ?', - }, - dataSet: { - queryVariable: { - choosePlaceholder: 'Pilih variabel kueri', - tip: 'Variabel ini akan digunakan sebagai input kueri untuk pengambilan konteks, mendapatkan informasi konteks yang terkait dengan input variabel ini.', - unableToQueryDataSet: 'Tidak dapat mengkueri Pengetahuan', - title: 'Variabel kueri', - noVar: 'Non-variabel', - unableToQueryDataSetTip: 'Tidak dapat berhasil mengkueri Pengetahuan, silakan pilih variabel kueri konteks di bagian konteks.', - contextVarNotEmpty: 'Variabel kueri konteks tidak dapat kosong', - deleteContextVarTip: 'Variabel ini telah ditetapkan sebagai variabel kueri konteks, dan menghapusnya akan berdampak pada penggunaan normal Pengetahuan. Jika Anda masih perlu menghapusnya, silakan pilih kembali di bagian konteks.', - ok: 'OKE', - noVarTip: 'silakan buat variabel di bawah bagian Variabel', - deleteContextVarTitle: 'Hapus variabel “{{varName}}”?', - }, - notSupportSelectMulti: 'Saat ini hanya mendukung satu Pengetahuan', - selectTitle: 'Pilih referensi Pengetahuan', - toCreate: 'Pergi ke membuat', - noDataSet: 'Tidak ada Pengetahuan yang ditemukan', - noData: 'Anda dapat mengimpor Pengetahuan sebagai konteks', - title: 'Pengetahuan', - selected: 'Pengetahuan yang dipilih', - }, - tools: { - modal: { - toolType: { - title: 'Jenis Alat', - placeholder: 'Silakan pilih jenis alat', - }, - name: { - title: 'Nama', - placeholder: 'Silakan masukkan nama', - }, - variableName: { - placeholder: 'Silakan masukkan nama variabel', - title: 'Nama Variabel', - }, - title: 'Alat', - }, - tips: 'Alat menyediakan metode panggilan API standar, mengambil input atau variabel pengguna sebagai parameter permintaan untuk mengkueri data eksternal sebagai konteks.', - title: 'Perkakas', - toolsInUse: '{{count}} alat yang digunakan', - }, - conversationHistory: { - editModal: { - assistantPrefix: 'Awalan asisten', - userPrefix: 'Awalan pengguna', - title: 'Mengedit Nama Peran Percakapan', - }, - description: 'Menetapkan nama awalan untuk peran percakapan', - title: 'Riwayat Percakapan', - learnMore: 'Pelajari lebih lanjut', - tip: 'Riwayat Percakapan tidak diaktifkan, silakan tambahkan di prompt di atas.', - }, - toolbox: { - title: 'TOOLBOX', - }, - moderation: { - modal: { - provider: { - openaiTip: { - suffix: '.', - prefix: 'OpenAI Moderation memerlukan kunci OpenAI API yang dikonfigurasi di', - }, - title: 'Penyedia', - keywords: 'Kata kunci', - openai: 'Moderasi OpenAI', - }, - keywords: { - line: 'Garis', - placeholder: 'Satu per baris, dipisahkan oleh jeda baris', - tip: 'Satu per baris, dipisahkan oleh jeda baris. Hingga 100 karakter per baris.', - }, - content: { - preset: 'Balasan yang telah ditetapkan sebelumnya', - input: 'Konten INPUT Moderatif', - output: 'Konten OUTPUT Moderatif', - errorMessage: 'Balasan prasetel tidak boleh kosong', - condition: 'Konten INPUT dan OUTPUT moderat mengaktifkan setidaknya satu', - placeholder: 'Konten balasan preset di sini', - supportMarkdown: 'Penurunan harga didukung', - fromApi: 'Balasan prasetel dikembalikan oleh API', - }, - openaiNotConfig: { - after: '', - before: 'OpenAI Moderation memerlukan kunci OpenAI API yang dikonfigurasi di', - }, - title: 'Setelan moderasi konten', - }, - title: 'Moderasi konten', - outputEnabled: 'HASIL', - contentEnableLabel: 'Moderasi konten diaktifkan', - inputEnabled: 'MASUKAN', - allEnabled: 'MASUKAN & KELUARAN', - description: 'Amankan output model dengan menggunakan API moderasi atau mempertahankan daftar kata yang sensitif.', - }, - fileUpload: { - title: 'Unggah File', - supportedTypes: 'Jenis File Dukungan', - numberLimit: 'Upload maksimal', - modalTitle: 'Pengaturan Unggahan File', - description: 'Kotak input obrolan memungkinkan pengunggahan gambar, dokumen, dan file lainnya.', - }, - imageUpload: { - supportedTypes: 'Jenis File Dukungan', - description: 'Izinkan mengunggah gambar.', - modalTitle: 'Pengaturan Unggahan Gambar', - numberLimit: 'Upload maksimal', - title: 'Unggah Gambar', - }, - bar: { - empty: 'Aktifkan fitur untuk meningkatkan pengalaman pengguna aplikasi web', - enableText: 'Fitur Diaktifkan', - manage: 'Urus', - }, - documentUpload: { - title: 'Surat', - description: 'Aktifkan Dokumen akan memungkinkan model untuk mengambil dokumen dan menjawab pertanyaan tentangnya.', - }, - audioUpload: { - title: 'Audio', - description: 'Aktifkan Audio akan memungkinkan model untuk memproses file audio untuk transkripsi dan analisis.', - }, - }, - codegen: { - title: 'Pembuat Kode', - noDataLine2: 'Pratinjau kode akan ditampilkan di sini.', - apply: 'Berlaku', - instruction: 'Peraturan', - description: 'Pembuat Kode menggunakan model yang dikonfigurasi untuk menghasilkan kode berkualitas tinggi berdasarkan instruksi Anda. Harap berikan instruksi yang jelas dan terperinci.', - loading: 'Menghasilkan kode...', - overwriteConfirmMessage: 'Tindakan ini akan menimpa kode yang ada. Apakah Anda ingin melanjutkan?', - generate: 'Menghasilkan', - generatedCodeTitle: 'Kode yang Dihasilkan', - overwriteConfirmTitle: 'Menimpa kode yang ada?', - resTitle: 'Kode yang Dihasilkan', - instructionPlaceholder: 'Masukkan deskripsi terperinci tentang kode yang ingin Anda hasilkan.', - applyChanges: 'Terapkan Perubahan', - noDataLine1: 'Jelaskan kasus penggunaan Anda di sebelah kiri,', - }, - generate: { - template: { - pythonDebugger: { - name: 'Debugger Python', - instruction: 'Bot yang dapat menghasilkan dan men-debug kode Anda berdasarkan instruksi Anda', - }, - translation: { - name: 'Terjemahan', - instruction: 'Penerjemah yang dapat menerjemahkan berbagai bahasa', - }, - professionalAnalyst: { - name: 'Analis profesional', - instruction: 'Ekstrak wawasan, identifikasi risiko, dan suling informasi penting dari laporan panjang ke dalam satu memo', - }, - excelFormulaExpert: { - name: 'Pakar rumus Excel', - instruction: 'Chatbot yang dapat membantu pengguna pemula memahami, menggunakan, dan membuat rumus Excel berdasarkan instruksi pengguna', - }, - travelPlanning: { - name: 'Perencanaan perjalanan', - instruction: 'Asisten Perencanaan Perjalanan adalah alat cerdas yang dirancang untuk membantu pengguna merencanakan perjalanan mereka dengan mudah', - }, - SQLSorcerer: { - instruction: 'Mengubah bahasa sehari-hari menjadi kueri SQL', - name: 'Penyihir SQL', - }, - GitGud: { - instruction: 'Hasilkan perintah Git yang sesuai berdasarkan tindakan kontrol versi yang dijelaskan pengguna', - name: 'Git gud', - }, - meetingTakeaways: { - name: 'Kesimpulan rapat', - instruction: 'Suling rapat menjadi ringkasan ringkas termasuk topik diskusi, poin penting, dan item tindakan', - }, - writingsPolisher: { - name: 'Menulis pemoles', - instruction: 'Gunakan teknik copyediting canggih untuk meningkatkan tulisan Anda', - }, - }, - overwriteMessage: 'Menerapkan prompt ini akan mengganti konfigurasi yang ada.', - title: 'Prompt Generator', - tryIt: 'Cobalah', - idealOutputPlaceholder: 'Jelaskan format respons ideal Anda, panjang, nada, dan persyaratan konten...', - resTitle: 'Prompt yang Dihasilkan', - overwriteTitle: 'Ganti konfigurasi yang ada?', - optional: 'Fakultatif', - instruction: 'Peraturan', - versions: 'Versi', - to: 'ke', - press: 'Peras', - latest: 'Terbaru', - version: 'Versi', - generate: 'Menghasilkan', - loading: 'Mengatur aplikasi untuk Anda...', - optimizePromptTooltip: 'Optimalkan di Prompt Generator', - apply: 'Berlaku', - instructionPlaceHolderLine3: 'Nadanya terlalu keras, tolong buat lebih ramah.', - optimizationNote: 'Catatan Pengoptimalan', - dismiss: 'Mengabaikan', - description: 'Prompt Generator menggunakan model yang dikonfigurasi untuk mengoptimalkan prompt untuk kualitas yang lebih tinggi dan struktur yang lebih baik. Silakan tulis instruksi yang jelas dan terperinci.', - idealOutput: 'Keluaran Ideal', - codeGenInstructionPlaceHolderLine: 'Semakin detail umpan balik, seperti jenis data input dan output serta bagaimana variabel diproses, semakin akurat pembuatan kode.', - newNoDataLine1: 'Tulis instruksi di kolom kiri, dan klik Hasilkan untuk melihat respons.', - instructionPlaceHolderTitle: 'Jelaskan bagaimana Anda ingin meningkatkan Prompt ini. Misalnya:', - instructionPlaceHolderLine1: 'Buat output lebih ringkas, pertahankan poin-poin inti.', - insertContext: 'Sisipkan konteks', - instructionPlaceHolderLine2: 'Format keluarannya salah, harap ikuti format JSON dengan ketat.', - }, - resetConfig: { - title: 'Mengonfirmasi reset?', - message: 'Atur ulang membuang perubahan, memulihkan konfigurasi terakhir yang diterbitkan.', - }, - errorMessage: { - queryRequired: 'Teks permintaan diperlukan.', - waitForImgUpload: 'Silakan tunggu gambar diunggah', - notSelectModel: 'Silakan pilih model', - waitForResponse: 'Harap tunggu hingga respons terhadap pesan sebelumnya selesai.', - waitForBatchResponse: 'Harap tunggu hingga respons terhadap tugas batch selesai.', - waitForFileUpload: 'Harap tunggu file/file diunggah', - nameOfKeyRequired: 'nama kunci: {{key}} diperlukan', - valueOfVarRequired: 'Nilai {{key}} tidak boleh kosong', - }, - warningMessage: { - timeoutExceeded: 'Hasil tidak ditampilkan karena batas waktu. Silakan lihat log untuk mengumpulkan hasil lengkap.', - }, - variableTable: { - action: 'Tindakan', - typeString: 'String', - typeSelect: 'Pilih', - type: 'Jenis Masukan', - key: 'Kunci Variabel', - name: 'Nama Bidang Input Pengguna', - }, - varKeyError: { - canNoBeEmpty: '{{key}} wajib diisi', - tooLong: '{{key}} terlalu panjang. Tidak boleh lebih dari 30 karakter', - notValid: '{{key}} tidak valid. Hanya boleh berisi huruf, angka, dan garis bawah', - notStartWithNumber: '{{key}} tidak dapat diawali dengan angka', - keyAlreadyExists: '{{key}} sudah ada', - }, - otherError: { - queryNoBeEmpty: 'Kueri harus diatur dalam prompt', - historyNoBeEmpty: 'Riwayat percakapan harus diatur dalam prompt', - promptNoBeEmpty: 'Prompt tidak bisa kosong', - }, - variableConfig: { - 'file': { - image: { - name: 'Citra', - }, - audio: { - name: 'Audio', - }, - document: { - name: 'Dokumen', - }, - video: { - name: 'Video', - }, - custom: { - name: 'Jenis file lainnya', - description: 'Tentukan jenis file lainnya.', - createPlaceholder: ' Ekstensi file, misalnya .doc', - }, - supportFileTypes: 'Jenis File Dukungan', - }, - 'errorMsg': { - atLeastOneOption: 'Setidaknya satu opsi diperlukan', - labelNameRequired: 'Nama label diperlukan', - optionRepeat: 'Memiliki opsi pengulangan', - varNameCanBeRepeat: 'Nama variabel tidak dapat diulang', - }, - 'string': 'Teks Singkat', - 'single-file': 'File Tunggal', - 'labelName': 'Nama Label', - 'number': 'Angka', - 'json': 'Kode JSON', - 'optional': 'fakultatif', - 'addOption': 'Tambahkan opsi', - 'checkbox': 'Kotak centang', - 'hide': 'Menyembunyikan', - 'required': 'Diperlukan', - 'maxLength': 'Panjang maks', - 'select': 'Pilih', - 'paragraph': 'Paragraf', - 'options': 'Pilihan', - 'apiBasedVar': 'Variabel berbasis API', - 'varName': 'Nama Variabel', - 'editModalTitle': 'Edit Bidang Input', - 'multi-files': 'Daftar File', - 'text-input': 'Teks Singkat', - 'content': 'Puas', - 'inputPlaceholder': 'Silakan masukkan', - 'selectDefaultValue': 'Pilih nilai default', - 'fieldType': 'Jenis bidang', - 'addModalTitle': 'Tambahkan Bidang Input', - 'stringTitle': 'Opsi kotak teks formulir', - 'jsonSchema': 'Skema JSON', - 'noDefaultValue': 'Tidak ada nilai default', - 'defaultValue': 'Nilai default', - 'localUpload': 'Unggahan Lokal', - 'maxNumberOfUploads': 'Jumlah upload maksimal', - 'both': 'Keduanya', - 'uploadFileTypes': 'Unggah Jenis File', - 'unit': 'Satuan', - 'startChecked': 'Mulai diperiksa', - 'placeholder': 'Placeholder', - 'uploadMethod': 'Metode Unggah', - 'noDefaultSelected': 'Jangan pilih', - 'defaultValuePlaceholder': 'Masukkan nilai default untuk mengisi kolom sebelumnya', - 'showAllSettings': 'Tampilkan Semua Pengaturan', - 'tooltips': 'Tooltip', - 'displayName': 'Nama Tampilan', - 'tooltipsPlaceholder': 'Masukkan teks bermanfaat yang ditampilkan saat mengarahkan kursor ke label', - 'startSelectedOption': 'Mulai opsi yang dipilih', - 'unitPlaceholder': 'Tampilkan unit setelah angka, misalnya token', - 'placeholderPlaceholder': 'Masukkan teks untuk ditampilkan saat bidang kosong', - 'description': 'Pengaturan untuk variabel {{varName}}', - 'notSet': 'Belum diatur, coba ketik {{input}} di prompt awalan', - 'maxNumberTip': 'Dokumen < {{docLimit}}, gambar < {{imgLimit}}, audio < {{audioLimit}}, video < {{videoLimit}}', - }, - vision: { - visionSettings: { - both: 'Keduanya', - high: 'Tinggi', - uploadMethod: 'Metode Unggah', - title: 'Pengaturan Penglihatan', - localUpload: 'Unggahan Lokal', - low: 'Rendah', - uploadLimit: 'Batas Unggahan', - resolution: 'Resolusi', - url: 'URL', - resolutionTooltip: 'res rendah akan memungkinkan model menerima versi gambar resolusi rendah 512 x 512, dan merepresentasikan gambar dengan anggaran 65 token. Ini memungkinkan API memberikan respons lebih cepat dan menggunakan lebih sedikit token input untuk kasus penggunaan yang tidak memerlukan detail tinggi.\n\nres tinggi pertama-tama memungkinkan model melihat gambar resolusi rendah dan kemudian membuat potongan gambar yang lebih detail sebagai kotak 512px berdasarkan ukuran gambar input. Setiap potongan detail menggunakan dua kali anggaran token sehingga totalnya menjadi 129 token.', - }, - settings: 'Pengaturan', - description: 'Aktifkan Penglihatan akan memungkinkan model untuk mengambil gambar dan menjawab pertanyaan tentangnya.', - onlySupportVisionModelTip: 'Hanya mendukung model penglihatan', - name: 'Penglihatan', - }, - voice: { - voiceSettings: { - autoPlayEnabled: 'Di atas', - voice: 'Suara', - language: 'Bahasa', - title: 'Pengaturan Suara', - autoPlay: 'Putar Otomatis', - autoPlayDisabled: 'Dinonaktifkan', - resolutionTooltip: 'Bahasa pendukung suara text-to-speech。', - }, - settings: 'Pengaturan', - defaultDisplay: 'Suara Default', - description: 'Pengaturan suara teks ke ucapan', - name: 'Suara', - }, - openingStatement: { - openingQuestion: 'Pertanyaan Pembuka', - add: 'Tambah', - writeOpener: 'Edit pembuka', - title: 'Pembuka Percakapan', - noDataPlaceHolder: 'Memulai percakapan dengan pengguna dapat membantu AI menjalin hubungan yang lebih dekat dengan mereka dalam aplikasi percakapan.', - tooShort: 'Setidaknya 20 kata prompt awal diperlukan untuk menghasilkan pidato pembuka untuk percakapan.', - placeholder: 'Tulis pesan pembuka Anda di sini, Anda bisa menggunakan variabel, coba ketik {{variable}}.', - openingQuestionPlaceholder: 'Anda bisa menggunakan variabel, coba ketik {{variable}}.', - varTip: 'Anda dapat menggunakan variabel, coba ketik {{variable}}', - notIncludeKey: 'Prompt awal tidak menyertakan variabel: {{key}}. Harap tambahkan ke prompt awal.', - }, - modelConfig: { - modeType: { - completion: 'Lengkap', - chat: 'Mengobrol', - }, - title: 'Model dan Parameter', - model: 'Pola', - setTone: 'Atur nada respons', - }, - inputs: { - queryPlaceholder: 'Silakan masukkan teks permintaan.', - run: 'Jalankan', - completionVarTip: 'Isi nilai variabel, yang akan secara otomatis diganti dengan kata-kata prompt setiap kali pertanyaan diajukan.', - noVar: 'Isi nilai variabel, yang akan secara otomatis diganti dalam kata prompt setiap kali sesi baru dimulai.', - noPrompt: 'Coba tulis beberapa prompt dalam input pra-prompt', - previewTitle: 'Pratinjau prompt', - userInputField: 'Bidang Input Pengguna', - queryTitle: 'Kueri konten', - title: 'Debug & Pratinjau', - chatVarTip: 'Isi nilai variabel, yang akan secara otomatis diganti dalam kata prompt setiap kali sesi baru dimulai', - }, - datasetConfig: { - retrieveOneWay: { - title: 'Pengambilan N-ke-1', - description: 'Berdasarkan maksud pengguna dan deskripsi Pengetahuan, Agen secara mandiri memilih Pengetahuan terbaik untuk kueri. Terbaik untuk aplikasi dengan Pengetahuan yang berbeda dan terbatas.', - }, - retrieveMultiWay: { - title: 'Pengambilan multi-jalur', - description: 'Berdasarkan maksud pengguna, kueri di semua Pengetahuan, mengambil teks yang relevan dari berbagai sumber, dan memilih hasil terbaik yang cocok dengan kueri pengguna setelah peringkat ulang.', - }, - rerankModelRequired: 'Model Rerank yang dikonfigurasi diperlukan', - top_k: 'K Teratas', - score_threshold: 'Ambang Skor', - settingTitle: 'Pengaturan pengambilan', - score_thresholdTip: 'Digunakan untuk mengatur ambang kesamaan untuk pemfilteran potongan.', - retrieveChangeTip: 'Memodifikasi mode indeks dan mode pengambilan dapat memengaruhi aplikasi yang terkait dengan Pengetahuan ini.', - embeddingModelRequired: 'Model Penyematan yang dikonfigurasi diperlukan', - params: 'Parameter', - top_kTip: 'Digunakan untuk memfilter potongan yang paling mirip dengan pertanyaan pengguna. Sistem juga akan secara dinamis menyesuaikan nilai Top K, sesuai dengan max_tokens model yang dipilih.', - knowledgeTip: 'Klik tombol " " untuk menambahkan pengetahuan', - }, - assistantType: { - chatAssistant: { - description: 'Membuat asisten berbasis obrolan menggunakan Model Bahasa Besar', - name: 'Asisten Dasar', - }, - agentAssistant: { - description: 'Bangun Agen cerdas yang dapat secara mandiri memilih alat untuk menyelesaikan tugas', - name: 'Asisten Agen', - }, - name: 'Jenis Asisten', - }, - agent: { - agentModeType: { - ReACT: 'Bereaksi', - functionCall: 'Fungsi Panggilan', - }, - setting: { - maximumIterations: { - name: 'Iterasi Maksimum', - description: 'Membatasi jumlah iterasi yang dapat dijalankan oleh asisten agen', - }, - description: 'Pengaturan Asisten Agen memungkinkan pengaturan mode agen dan fitur lanjutan seperti perintah bawaan, hanya tersedia dalam jenis Agen.', - name: 'Pengaturan Agen', - }, - tools: { - enabled: 'Diaktifkan', - name: 'Perkakas', - description: 'Menggunakan alat dapat memperluas kemampuan LLM, seperti mencari di internet atau melakukan perhitungan ilmiah', - }, - agentModeDes: 'Mengatur jenis mode inferensi untuk agen', - firstPrompt: 'Prompt Pertama', - buildInPrompt: 'Perintah Bawaan', - agentMode: 'Mode Agen', - nextIteration: 'Iterasi Berikutnya', - promptPlaceholder: 'Tulis prompt Anda di sini', - }, - orchestrate: 'Mengatur', - chatSubTitle: 'Peraturan', - variableTitle: 'Variabel', - variableTip: 'Pengguna mengisi variabel dalam formulir, secara otomatis mengganti variabel dalam perintah.', - formattingChangedText: 'Memodifikasi pemformatan akan mengatur ulang area debug, apakah Anda yakin?', - completionSubTitle: 'Prompt Awalan', - debugAsMultipleModel: 'Debug sebagai Beberapa Model', - publishAs: 'Publikasikan sebagai', - autoAddVar: 'Variabel yang tidak ditentukan direferensikan dalam pra-prompt, apakah Anda ingin menambahkannya dalam formulir input pengguna?', - debugAsSingleModel: 'Debug sebagai Model Tunggal', - formattingChangedTitle: 'Pemformatan diubah', - duplicateModel: 'Duplikat', - result: 'Teks Keluaran', - noResult: 'Output akan ditampilkan di sini.', - promptTip: 'Prompts membimbing respons AI dengan instruksi dan batasan. Masukkan variabel seperti {{input}}. Prompt ini tidak akan terlihat oleh pengguna.', - notSetVar: 'Variabel memungkinkan pengguna untuk memasukkan kata pemicu atau ucapan pembuka saat mengisi formulir. Anda dapat mencoba memasukkan "{{input}}" pada kata pemicu.', -} - -export default translation diff --git a/web/i18n/id-ID/app-log.json b/web/i18n/id-ID/app-log.json new file mode 100644 index 0000000000..245414c3ea --- /dev/null +++ b/web/i18n/id-ID/app-log.json @@ -0,0 +1,110 @@ +{ + "table": { + "header": { + "output": "Hasil", + "version": "VERSI", + "time": "Waktu yang dibuat", + "messageCount": "Jumlah Pesan", + "summary": "Ringkasan", + "adminRate": "Tingkat Admin", + "user": "Pengguna Akhir atau Akun", + "startTime": "WAKTU MULAI", + "updatedTime": "Waktu yang diperbarui", + "tokens": "TOKEN", + "endUser": "Pengguna Akhir atau Akun", + "userRate": "Tarif Pengguna", + "input": "Masukan", + "status": "KEADAAN", + "runtime": "WAKTU BERJALAN", + "triggered_from": "DIPICU OLEH" + }, + "pagination": { + "previous": "Sebelumnya", + "next": "Selanjutnya" + }, + "empty": { + "element": { + "title": "Apakah ada yang ada di sana?", + "content": "Amati dan anotasi interaksi antara pengguna akhir dan aplikasi AI di sini untuk terus meningkatkan akurasi AI. Anda dapat mencoba berbagi atau menguji Aplikasi Web sendiri, kemudian kembali ke halaman ini." + }, + "noChat": "Belum ada percakapan", + "noOutput": "Tidak ada keluaran" + } + }, + "detail": { + "timeConsuming": "Memakan waktu", + "operation": { + "dislike": "tidak suka", + "like": "suka", + "addAnnotation": "Tambahkan Anotasi", + "editAnnotation": "Edit Anotasi", + "annotationPlaceholder": "Masukkan jawaban yang diharapkan yang Anda inginkan untuk dibalas AI, yang dapat digunakan untuk penyempurnaan model dan peningkatan berkelanjutan kualitas pembuatan teks di masa mendatang." + }, + "time": "Waktu", + "loading": "Loading", + "variables": "Variabel", + "tokenCost": "Token yang dibelanjakan", + "modelParams": "Parameter model", + "conversationId": "ID Percakapan", + "promptTemplate": "Templat Prompt", + "second": "s", + "promptTemplateBeforeChat": "Templat Prompt Sebelum Obrolan · Sebagai Pesan Sistem", + "uploadImages": "Gambar yang Diunggah", + "annotationTip": "Peningkatan Ditandai oleh {{user}}" + }, + "filter": { + "period": { + "today": "Hari Ini", + "last4weeks": "4 minggu terakhir", + "quarterToDate": "Kuartal hingga saat ini", + "last7days": "7 Hari Terakhir", + "monthToDate": "Bulan hingga saat ini", + "last3months": "3 bulan terakhir", + "yearToDate": "Tahun hingga saat ini", + "allTime": "Sepanjang masa", + "last12months": "12 bulan terakhir", + "custom": "Kustom", + "last30days": "30 Hari Terakhir" + }, + "annotation": { + "all": "Semua", + "not_annotated": "Tidak Beranotasi", + "annotated": "Peningkatan yang Diberi Catatan ({{count}} item)" + }, + "ascending": "Naik", + "descending": "Turun", + "sortBy": "Urutkan berdasarkan" + }, + "runDetail": { + "fileListDetail": "Detail", + "workflowTitle": "Log Detail", + "title": "Log Percakapan", + "fileListLabel": "Rincian File", + "testWithParams": "Uji Dengan Param" + }, + "agentLogDetail": { + "iterations": "Iterasi", + "finalProcessing": "Pemrosesan Akhir", + "iteration": "Iterasi", + "toolUsed": "Alat yang Digunakan", + "agentMode": "Mode Agen" + }, + "title": "Log", + "description": "Log mencatat status berjalan aplikasi, termasuk input pengguna dan balasan AI.", + "dateFormat": "MM / DD / YYYY", + "agentLog": "Log Agen", + "viewLog": "Lihat Log", + "dateTimeFormat": "MM/DD/YYYY hh:mm:ss A", + "promptLog": "Prompt Log", + "workflowSubtitle": "Log mencatat pengoperasian Automate.", + "workflowTitle": "Log Alur Kerja", + "triggerBy": { + "debugging": "Men-debug", + "appRun": "Aplikasi Web", + "webhook": "Webhook", + "schedule": "Jadwal", + "plugin": "Plugin", + "ragPipelineRun": "Rangkaian RAG", + "ragPipelineDebugging": "Debugging RAG" + } +} diff --git a/web/i18n/id-ID/app-log.ts b/web/i18n/id-ID/app-log.ts deleted file mode 100644 index 18545c8e0a..0000000000 --- a/web/i18n/id-ID/app-log.ts +++ /dev/null @@ -1,112 +0,0 @@ -const translation = { - table: { - header: { - output: 'Hasil', - version: 'VERSI', - time: 'Waktu yang dibuat', - messageCount: 'Jumlah Pesan', - summary: 'Ringkasan', - adminRate: 'Tingkat Admin', - user: 'Pengguna Akhir atau Akun', - startTime: 'WAKTU MULAI', - updatedTime: 'Waktu yang diperbarui', - tokens: 'TOKEN', - endUser: 'Pengguna Akhir atau Akun', - userRate: 'Tarif Pengguna', - input: 'Masukan', - status: 'KEADAAN', - runtime: 'WAKTU BERJALAN', - triggered_from: 'DIPICU OLEH', - }, - pagination: { - previous: 'Sebelumnya', - next: 'Selanjutnya', - }, - empty: { - element: { - title: 'Apakah ada yang ada di sana?', - content: 'Amati dan anotasi interaksi antara pengguna akhir dan aplikasi AI di sini untuk terus meningkatkan akurasi AI. Anda dapat mencoba berbagi atau menguji Aplikasi Web sendiri, kemudian kembali ke halaman ini.', - }, - noChat: 'Belum ada percakapan', - noOutput: 'Tidak ada keluaran', - }, - }, - detail: { - timeConsuming: 'Memakan waktu', - operation: { - dislike: 'tidak suka', - like: 'suka', - addAnnotation: 'Tambahkan Anotasi', - editAnnotation: 'Edit Anotasi', - annotationPlaceholder: 'Masukkan jawaban yang diharapkan yang Anda inginkan untuk dibalas AI, yang dapat digunakan untuk penyempurnaan model dan peningkatan berkelanjutan kualitas pembuatan teks di masa mendatang.', - }, - time: 'Waktu', - loading: 'Loading', - variables: 'Variabel', - tokenCost: 'Token yang dibelanjakan', - modelParams: 'Parameter model', - conversationId: 'ID Percakapan', - promptTemplate: 'Templat Prompt', - second: 's', - promptTemplateBeforeChat: 'Templat Prompt Sebelum Obrolan · Sebagai Pesan Sistem', - uploadImages: 'Gambar yang Diunggah', - annotationTip: 'Peningkatan Ditandai oleh {{user}}', - }, - filter: { - period: { - today: 'Hari Ini', - last4weeks: '4 minggu terakhir', - quarterToDate: 'Kuartal hingga saat ini', - last7days: '7 Hari Terakhir', - monthToDate: 'Bulan hingga saat ini', - last3months: '3 bulan terakhir', - yearToDate: 'Tahun hingga saat ini', - allTime: 'Sepanjang masa', - last12months: '12 bulan terakhir', - custom: 'Kustom', - last30days: '30 Hari Terakhir', - }, - annotation: { - all: 'Semua', - not_annotated: 'Tidak Beranotasi', - annotated: 'Peningkatan yang Diberi Catatan ({{count}} item)', - }, - ascending: 'Naik', - descending: 'Turun', - sortBy: 'Urutkan berdasarkan', - }, - runDetail: { - fileListDetail: 'Detail', - workflowTitle: 'Log Detail', - title: 'Log Percakapan', - fileListLabel: 'Rincian File', - testWithParams: 'Uji Dengan Param', - }, - agentLogDetail: { - iterations: 'Iterasi', - finalProcessing: 'Pemrosesan Akhir', - iteration: 'Iterasi', - toolUsed: 'Alat yang Digunakan', - agentMode: 'Mode Agen', - }, - title: 'Log', - description: 'Log mencatat status berjalan aplikasi, termasuk input pengguna dan balasan AI.', - dateFormat: 'MM / DD / YYYY', - agentLog: 'Log Agen', - viewLog: 'Lihat Log', - dateTimeFormat: 'MM/DD/YYYY hh:mm:ss A', - promptLog: 'Prompt Log', - workflowSubtitle: 'Log mencatat pengoperasian Automate.', - workflowTitle: 'Log Alur Kerja', - triggerBy: { - debugging: 'Men-debug', - appRun: 'Aplikasi Web', - webhook: 'Webhook', - schedule: 'Jadwal', - plugin: 'Plugin', - ragPipelineRun: 'Rangkaian RAG', - ragPipelineDebugging: 'Debugging RAG', - }, -} - -export default translation diff --git a/web/i18n/id-ID/app-overview.json b/web/i18n/id-ID/app-overview.json new file mode 100644 index 0000000000..7322f837f4 --- /dev/null +++ b/web/i18n/id-ID/app-overview.json @@ -0,0 +1,187 @@ +{ + "welcome": { + "firstStepTip": "Untuk memulai,", + "placeholder": "Kunci API OpenAI Anda (misalnya.sk-xxxx)", + "enterKeyTip": "masukkan Kunci API OpenAI Anda di bawah ini", + "getKeyTip": "Dapatkan Kunci API Anda dari dasbor OpenAI" + }, + "apiKeyInfo": { + "cloud": { + "trial": { + "description": "Kuota uji coba disediakan untuk tujuan pengujian Anda. Sebelum kuota uji coba habis, harap siapkan penyedia model Anda sendiri atau beli kuota tambahan.", + "title": "Anda sedang menggunakan kuota percobaan {{providerName}}." + }, + "exhausted": { + "title": "Kuota uji coba Anda telah habis, silakan atur APIKey Anda.", + "description": "Anda telah menghabiskan kuota percobaan Anda. Silakan siapkan penyedia model Anda sendiri atau beli kuota tambahan." + } + }, + "selfHost": { + "title": { + "row1": "Untuk memulai,", + "row2": "Siapkan penyedia model Anda terlebih dahulu." + } + }, + "usedToken": "Token bekas", + "callTimes": "Waktu panggilan", + "tryCloud": "Atau coba Dify versi cloud dengan penawaran gratis", + "setAPIBtn": "Buka penyedia model penyiapan" + }, + "overview": { + "appInfo": { + "settings": { + "workflow": { + "hide": "Menyembunyikan", + "subTitle": "Detail Alur Kerja", + "showDesc": "Menampilkan atau menyembunyikan detail alur kerja di aplikasi web", + "title": "Alur Kerja", + "show": "Memperlihatkan" + }, + "sso": { + "label": "Penegakan SSO", + "tooltip": "Hubungi administrator untuk mengaktifkan SSO aplikasi web", + "title": "aplikasi web SSO", + "description": "Semua pengguna diharuskan masuk dengan SSO sebelum menggunakan aplikasi web" + }, + "more": { + "customDisclaimerPlaceholder": "Masukkan teks penafian khusus", + "copyrightTooltip": "Silakan tingkatkan ke paket Profesional atau lebih tinggi", + "entry": "Tampilkan setelan lainnya", + "copyRightPlaceholder": "Masukkan nama penulis atau organisasi", + "copyrightTip": "Menampilkan informasi hak cipta di aplikasi web", + "privacyPolicy": "Kebijakan Privasi", + "customDisclaimer": "Penafian Kustom", + "privacyPolicyPlaceholder": "Masukkan tautan kebijakan privasi", + "customDisclaimerTip": "Teks penafian khusus akan ditampilkan di sisi klien, memberikan informasi tambahan tentang aplikasi", + "copyright": "Hak cipta", + "privacyPolicyTip": "Membantu pengunjung memahami data yang dikumpulkan aplikasi, lihat Kebijakan Privasi Dify." + }, + "chatColorThemeInverted": "Terbalik", + "invalidPrivacyPolicy": "Tautan kebijakan privasi tidak valid. Silakan gunakan tautan valid yang dimulai dengan http atau https", + "language": "Bahasa", + "invalidHexMessage": "Nilai hex tidak valid", + "webName": "Nama aplikasi web", + "webDescPlaceholder": "Masukkan deskripsi aplikasi web", + "chatColorThemeDesc": "Atur tema warna chatbot", + "modalTip": "Pengaturan aplikasi web sisi klien.", + "title": "Pengaturan Aplikasi Web", + "webDescTip": "Teks ini akan ditampilkan di sisi klien, memberikan panduan dasar tentang cara menggunakan aplikasi", + "entry": "Pengaturan", + "chatColorTheme": "Tema warna obrolan", + "webDesc": "Deskripsi aplikasi web" + }, + "embedded": { + "copied": "Disalin", + "title": "Sematkan di situs web", + "entry": "Tertanam", + "explanation": "Pilih cara menyematkan aplikasi obrolan ke situs web Anda", + "copy": "Menyalin", + "chromePlugin": "Instal Ekstensi Chrome Dify Chatbot", + "iframe": "Untuk menambahkan aplikasi obrolan di mana saja di situs web Anda, tambahkan iframe ini ke kode html Anda.", + "scripts": "Untuk menambahkan aplikasi obrolan ke kanan bawah situs web Anda, tambahkan kode ini ke html Anda." + }, + "qrcode": { + "scan": "Pindai Untuk Berbagi", + "download": "Unduh Kode QR", + "title": "Tautan Kode QR" + }, + "customize": { + "way1": { + "step1Operation": "Dify-WebClient", + "step2Operation": "Impor repositori", + "step1": "Fork kode klien dan modifikasi", + "step2Tip": "Klik di sini untuk mengimpor repositori ke Vercel dan menyebarkan", + "step2": "Terapkan ke Vercel", + "name": "Fork kode klien, modifikasi dan terapkan ke Vercel (disarankan)", + "step3": "Mengonfigurasi variabel lingkungan", + "step1Tip": "Klik di sini untuk melakukan fork kode sumber ke akun GitHub Anda dan memodifikasi kode", + "step3Tip": "Tambahkan variabel lingkungan berikut di Vercel" + }, + "way2": { + "operation": "Dokumentasi", + "name": "Tulis kode sisi klien untuk memanggil API dan menyebarkannya ke server" + }, + "way": "jalan", + "entry": "Menyesuaikan", + "title": "Sesuaikan aplikasi web AI", + "explanation": "Anda dapat menyesuaikan frontend Aplikasi Web agar sesuai dengan skenario dan kebutuhan gaya Anda." + }, + "launch": "Luncur", + "regenerate": "Regenerasi", + "preview": "Pratayang", + "accessibleAddress": "URL publik", + "preUseReminder": "Harap aktifkan aplikasi web sebelum melanjutkan.", + "regenerateNotice": "Apakah Anda ingin membuat ulang URL publik?", + "explanation": "Aplikasi web AI siap pakai", + "enableTooltip": { + "description": "Untuk mengaktifkan fitur ini, harap tambahkan node Input Pengguna ke kanvas. (Mungkin sudah ada di draft, berlaku setelah dipublikasikan)", + "learnMore": "Pelajari lebih lanjut" + }, + "title": "Aplikasi Web" + }, + "apiInfo": { + "accessibleAddress": "Titik Akhir API Layanan", + "title": "API Layanan Backend", + "doc": "Referensi API", + "explanation": "Mudah diintegrasikan ke dalam aplikasi Anda" + }, + "status": { + "disable": "Nonaktif", + "running": "Berjalan" + }, + "title": "Ikhtisar", + "triggerInfo": { + "title": "Pemicu", + "explanation": "Manajemen pemicu alur kerja", + "triggersAdded": "{{count}} Pemicu ditambahkan", + "noTriggerAdded": "Tidak ada pemicu yang ditambahkan", + "triggerStatusDescription": "Status node pemicu muncul di sini. (Mungkin sudah ada di draf, berlaku setelah dipublikasikan)", + "learnAboutTriggers": "Pelajari tentang Pemicu" + }, + "disableTooltip": { + "triggerMode": "Fitur {{feature}} tidak didukung dalam mode Node Pemicu." + } + }, + "analysis": { + "totalMessages": { + "explanation": "Interaksi AI harian diperhitungkan.", + "title": "Total Pesan" + }, + "totalConversations": { + "title": "Total Percakapan", + "explanation": "Percakapan AI harian diperhitungkan; Pengecualian rekayasa/debugging prompt." + }, + "activeUsers": { + "explanation": "Pengguna unik yang terlibat dalam Tanya Jawab dengan AI; Pengecualian rekayasa/debugging prompt.", + "title": "Pengguna Aktif" + }, + "tokenUsage": { + "title": "Penggunaan Token", + "explanation": "Mencerminkan penggunaan token harian dari model bahasa untuk aplikasi, berguna untuk tujuan pengendalian biaya.", + "consumed": "Dikonsumsi" + }, + "avgSessionInteractions": { + "title": "Interaksi Sesi Rata-rata", + "explanation": "Jumlah komunikasi pengguna-AI yang berkelanjutan; untuk aplikasi berbasis percakapan." + }, + "avgUserInteractions": { + "explanation": "Mencerminkan frekuensi penggunaan harian pengguna. Metrik ini mencerminkan kelengketan pengguna.", + "title": "Rata-rata Interaksi Pengguna" + }, + "userSatisfactionRate": { + "title": "Tingkat Kepuasan Pengguna", + "explanation": "Jumlah suka per 1.000 pesan. Ini menunjukkan proporsi jawaban yang sangat dipuaskan pengguna." + }, + "avgResponseTime": { + "explanation": "Waktu (ms) bagi AI untuk memproses/merespons; untuk aplikasi berbasis teks.", + "title": "Rata-rata Waktu Respons" + }, + "tps": { + "title": "Kecepatan Keluaran Token", + "explanation": "Mengukur kinerja LLM. Hitung kecepatan keluaran Token LLM dari awal permintaan hingga penyelesaian output." + }, + "tokenPS": "Token", + "title": "Analisis", + "ms": "Ms" + } +} diff --git a/web/i18n/id-ID/app-overview.ts b/web/i18n/id-ID/app-overview.ts deleted file mode 100644 index f1ddd74e97..0000000000 --- a/web/i18n/id-ID/app-overview.ts +++ /dev/null @@ -1,189 +0,0 @@ -const translation = { - welcome: { - firstStepTip: 'Untuk memulai,', - placeholder: 'Kunci API OpenAI Anda (misalnya.sk-xxxx)', - enterKeyTip: 'masukkan Kunci API OpenAI Anda di bawah ini', - getKeyTip: 'Dapatkan Kunci API Anda dari dasbor OpenAI', - }, - apiKeyInfo: { - cloud: { - trial: { - description: 'Kuota uji coba disediakan untuk tujuan pengujian Anda. Sebelum kuota uji coba habis, harap siapkan penyedia model Anda sendiri atau beli kuota tambahan.', - title: 'Anda sedang menggunakan kuota percobaan {{providerName}}.', - }, - exhausted: { - title: 'Kuota uji coba Anda telah habis, silakan atur APIKey Anda.', - description: 'Anda telah menghabiskan kuota percobaan Anda. Silakan siapkan penyedia model Anda sendiri atau beli kuota tambahan.', - }, - }, - selfHost: { - title: { - row1: 'Untuk memulai,', - row2: 'Siapkan penyedia model Anda terlebih dahulu.', - }, - }, - usedToken: 'Token bekas', - callTimes: 'Waktu panggilan', - tryCloud: 'Atau coba Dify versi cloud dengan penawaran gratis', - setAPIBtn: 'Buka penyedia model penyiapan', - }, - overview: { - appInfo: { - settings: { - workflow: { - hide: 'Menyembunyikan', - subTitle: 'Detail Alur Kerja', - showDesc: 'Menampilkan atau menyembunyikan detail alur kerja di aplikasi web', - title: 'Alur Kerja', - show: 'Memperlihatkan', - }, - sso: { - label: 'Penegakan SSO', - tooltip: 'Hubungi administrator untuk mengaktifkan SSO aplikasi web', - title: 'aplikasi web SSO', - description: 'Semua pengguna diharuskan masuk dengan SSO sebelum menggunakan aplikasi web', - }, - more: { - customDisclaimerPlaceholder: 'Masukkan teks penafian khusus', - copyrightTooltip: 'Silakan tingkatkan ke paket Profesional atau lebih tinggi', - entry: 'Tampilkan setelan lainnya', - copyRightPlaceholder: 'Masukkan nama penulis atau organisasi', - copyrightTip: 'Menampilkan informasi hak cipta di aplikasi web', - privacyPolicy: 'Kebijakan Privasi', - customDisclaimer: 'Penafian Kustom', - privacyPolicyPlaceholder: 'Masukkan tautan kebijakan privasi', - customDisclaimerTip: 'Teks penafian khusus akan ditampilkan di sisi klien, memberikan informasi tambahan tentang aplikasi', - copyright: 'Hak cipta', - privacyPolicyTip: 'Membantu pengunjung memahami data yang dikumpulkan aplikasi, lihat Kebijakan Privasi Dify.', - }, - chatColorThemeInverted: 'Terbalik', - invalidPrivacyPolicy: 'Tautan kebijakan privasi tidak valid. Silakan gunakan tautan valid yang dimulai dengan http atau https', - language: 'Bahasa', - invalidHexMessage: 'Nilai hex tidak valid', - webName: 'Nama aplikasi web', - webDescPlaceholder: 'Masukkan deskripsi aplikasi web', - chatColorThemeDesc: 'Atur tema warna chatbot', - modalTip: 'Pengaturan aplikasi web sisi klien.', - title: 'Pengaturan Aplikasi Web', - webDescTip: 'Teks ini akan ditampilkan di sisi klien, memberikan panduan dasar tentang cara menggunakan aplikasi', - entry: 'Pengaturan', - chatColorTheme: 'Tema warna obrolan', - webDesc: 'Deskripsi aplikasi web', - }, - embedded: { - copied: 'Disalin', - title: 'Sematkan di situs web', - entry: 'Tertanam', - explanation: 'Pilih cara menyematkan aplikasi obrolan ke situs web Anda', - copy: 'Menyalin', - chromePlugin: 'Instal Ekstensi Chrome Dify Chatbot', - iframe: 'Untuk menambahkan aplikasi obrolan di mana saja di situs web Anda, tambahkan iframe ini ke kode html Anda.', - scripts: 'Untuk menambahkan aplikasi obrolan ke kanan bawah situs web Anda, tambahkan kode ini ke html Anda.', - }, - qrcode: { - scan: 'Pindai Untuk Berbagi', - download: 'Unduh Kode QR', - title: 'Tautan Kode QR', - }, - customize: { - way1: { - step1Operation: 'Dify-WebClient', - step2Operation: 'Impor repositori', - step1: 'Fork kode klien dan modifikasi', - step2Tip: 'Klik di sini untuk mengimpor repositori ke Vercel dan menyebarkan', - step2: 'Terapkan ke Vercel', - name: 'Fork kode klien, modifikasi dan terapkan ke Vercel (disarankan)', - step3: 'Mengonfigurasi variabel lingkungan', - step1Tip: 'Klik di sini untuk melakukan fork kode sumber ke akun GitHub Anda dan memodifikasi kode', - step3Tip: 'Tambahkan variabel lingkungan berikut di Vercel', - }, - way2: { - operation: 'Dokumentasi', - name: 'Tulis kode sisi klien untuk memanggil API dan menyebarkannya ke server', - }, - way: 'jalan', - entry: 'Menyesuaikan', - title: 'Sesuaikan aplikasi web AI', - explanation: 'Anda dapat menyesuaikan frontend Aplikasi Web agar sesuai dengan skenario dan kebutuhan gaya Anda.', - }, - launch: 'Luncur', - regenerate: 'Regenerasi', - preview: 'Pratayang', - accessibleAddress: 'URL publik', - preUseReminder: 'Harap aktifkan aplikasi web sebelum melanjutkan.', - regenerateNotice: 'Apakah Anda ingin membuat ulang URL publik?', - explanation: 'Aplikasi web AI siap pakai', - enableTooltip: { - description: 'Untuk mengaktifkan fitur ini, harap tambahkan node Input Pengguna ke kanvas. (Mungkin sudah ada di draft, berlaku setelah dipublikasikan)', - learnMore: 'Pelajari lebih lanjut', - }, - title: 'Aplikasi Web', - }, - apiInfo: { - accessibleAddress: 'Titik Akhir API Layanan', - title: 'API Layanan Backend', - doc: 'Referensi API', - explanation: 'Mudah diintegrasikan ke dalam aplikasi Anda', - }, - status: { - disable: 'Nonaktif', - running: 'Berjalan', - }, - title: 'Ikhtisar', - triggerInfo: { - title: 'Pemicu', - explanation: 'Manajemen pemicu alur kerja', - triggersAdded: '{{count}} Pemicu ditambahkan', - noTriggerAdded: 'Tidak ada pemicu yang ditambahkan', - triggerStatusDescription: 'Status node pemicu muncul di sini. (Mungkin sudah ada di draf, berlaku setelah dipublikasikan)', - learnAboutTriggers: 'Pelajari tentang Pemicu', - }, - disableTooltip: { - triggerMode: 'Fitur {{feature}} tidak didukung dalam mode Node Pemicu.', - }, - }, - analysis: { - totalMessages: { - explanation: 'Interaksi AI harian diperhitungkan.', - title: 'Total Pesan', - }, - totalConversations: { - title: 'Total Percakapan', - explanation: 'Percakapan AI harian diperhitungkan; Pengecualian rekayasa/debugging prompt.', - }, - activeUsers: { - explanation: 'Pengguna unik yang terlibat dalam Tanya Jawab dengan AI; Pengecualian rekayasa/debugging prompt.', - title: 'Pengguna Aktif', - }, - tokenUsage: { - title: 'Penggunaan Token', - explanation: 'Mencerminkan penggunaan token harian dari model bahasa untuk aplikasi, berguna untuk tujuan pengendalian biaya.', - consumed: 'Dikonsumsi', - }, - avgSessionInteractions: { - title: 'Interaksi Sesi Rata-rata', - explanation: 'Jumlah komunikasi pengguna-AI yang berkelanjutan; untuk aplikasi berbasis percakapan.', - }, - avgUserInteractions: { - explanation: 'Mencerminkan frekuensi penggunaan harian pengguna. Metrik ini mencerminkan kelengketan pengguna.', - title: 'Rata-rata Interaksi Pengguna', - }, - userSatisfactionRate: { - title: 'Tingkat Kepuasan Pengguna', - explanation: 'Jumlah suka per 1.000 pesan. Ini menunjukkan proporsi jawaban yang sangat dipuaskan pengguna.', - }, - avgResponseTime: { - explanation: 'Waktu (ms) bagi AI untuk memproses/merespons; untuk aplikasi berbasis teks.', - title: 'Rata-rata Waktu Respons', - }, - tps: { - title: 'Kecepatan Keluaran Token', - explanation: 'Mengukur kinerja LLM. Hitung kecepatan keluaran Token LLM dari awal permintaan hingga penyelesaian output.', - }, - tokenPS: 'Token', - title: 'Analisis', - ms: 'Ms', - }, -} - -export default translation diff --git a/web/i18n/id-ID/app.json b/web/i18n/id-ID/app.json new file mode 100644 index 0000000000..d91dbb1943 --- /dev/null +++ b/web/i18n/id-ID/app.json @@ -0,0 +1,345 @@ +{ + "types": { + "chatbot": "Chatbot", + "workflow": "Alur Kerja", + "advanced": "Alur obrolan", + "agent": "Agen", + "completion": "Penyelesaian", + "basic": "Dasar", + "all": "Semua" + }, + "mermaid": { + "handDrawn": "Digambar Tangan", + "classic": "Klasik" + }, + "dslUploader": { + "browse": "Ramban", + "button": "Seret dan lepas file, atau" + }, + "newApp": { + "chatbotUserDescription": "Bangun chatbot berbasis LLM dengan cepat dengan konfigurasi sederhana. Anda dapat beralih ke Chatflow nanti.", + "agentShortDescription": "Agen cerdas dengan penalaran dan penggunaan alat otonom", + "noTemplateFound": "Tidak ada templat yang ditemukan", + "appCreated": "Aplikasi dibuat", + "appNamePlaceholder": "Beri nama aplikasi Anda", + "appCreateDSLErrorPart3": "Versi DSL aplikasi saat ini:", + "Cancel": "Batal", + "previewDemo": "Pratinjau demo", + "appCreateDSLWarning": "Perhatian: Perbedaan versi DSL dapat memengaruhi fitur tertentu", + "appCreateDSLErrorPart1": "Perbedaan yang signifikan dalam versi DSL telah terdeteksi. Memaksa impor dapat menyebabkan aplikasi tidak berfungsi.", + "chatApp": "Asisten", + "workflowWarning": "Saat ini dalam versi beta", + "completionShortDescription": "Asisten AI untuk tugas pembuatan teks", + "startFromBlank": "Buat dari Kosong", + "captionDescription": "Deskripsi", + "forBeginners": "Jenis aplikasi yang lebih dasar", + "noIdeaTip": "Tidak ada ide? Lihat templat kami", + "completionUserDescription": "Buat asisten AI dengan cepat untuk tugas pembuatan teks dengan konfigurasi sederhana.", + "forAdvanced": "UNTUK PENGGUNA TINGKAT LANJUT", + "workflowUserDescription": "Bangun alur kerja AI otonom secara visual dengan kesederhanaan seret dan lepas.", + "learnMore": "Pelajari lebih lanjut", + "agentUserDescription": "Agen cerdas yang mampu penalaran berulang dan penggunaan alat otonom untuk mencapai tujuan tugas.", + "noAppsFound": "Tidak ada aplikasi yang ditemukan", + "startFromTemplate": "Buat dari Template", + "appDescriptionPlaceholder": "Masukkan deskripsi aplikasi", + "captionName": "Nama & Ikon Aplikasi", + "showTemplates": "Saya ingin memilih dari templat", + "caution": "Hati", + "chatbotShortDescription": "Chatbot berbasis LLM dengan pengaturan sederhana", + "Confirm": "Konfirmasi", + "agentAssistant": "Asisten Agen Baru", + "appCreateFailed": "Gagal membuat aplikasi", + "appCreateDSLErrorTitle": "Ketidakcocokan Versi", + "chatAppIntro": "Saya ingin membangun aplikasi berbasis obrolan. Aplikasi ini menggunakan format tanya jawab, memungkinkan beberapa putaran percakapan berkelanjutan.", + "nameNotEmpty": "Nama tidak boleh kosong", + "appTemplateNotSelected": "Silakan pilih templat", + "noTemplateFoundTip": "Coba cari menggunakan kata kunci yang berbeda.", + "appCreateDSLErrorPart4": "Versi DSL yang didukung sistem:", + "appTypeRequired": "Silakan pilih jenis aplikasi", + "advancedShortDescription": "Alur kerja disempurnakan untuk obrolan multi-giliran", + "completeAppIntro": "Saya ingin membuat aplikasi yang menghasilkan teks berkualitas tinggi berdasarkan petunjuk, seperti menghasilkan artikel, ringkasan, terjemahan, dan banyak lagi.", + "Create": "Buat", + "advancedUserDescription": "Alur kerja dengan fitur memori tambahan dan antarmuka chatbot.", + "dropDSLToCreateApp": "Jatuhkan file DSL di sini untuk membuat aplikasi", + "completeApp": "Pembuat Teks", + "optional": "Fakultatif", + "workflowShortDescription": "Aliran agen untuk otomatisasi cerdas", + "chooseAppType": "Pilih Jenis App", + "hideTemplates": "Kembali ke pemilihan mode", + "useTemplate": "Gunakan template ini", + "appCreateDSLErrorPart2": "Apakah Anda ingin melanjutkan?", + "import": "Mengimpor", + "foundResult": "Hasil {{count}}", + "foundResults": "Hasil {{count}}" + }, + "newAppFromTemplate": { + "sidebar": { + "HR": "HR", + "Programming": "Pemrograman", + "Recommended": "Direkomendasikan", + "Workflow": "Alur Kerja", + "Assistant": "Asisten", + "Writing": "Tulisan", + "Agent": "Agen" + }, + "byCategories": "BERDASARKAN KATEGORI", + "searchAllTemplate": "Cari semua templat..." + }, + "iconPicker": { + "cancel": "Batal", + "emoji": "Emoji", + "image": "Citra", + "ok": "OK" + }, + "answerIcon": { + "title": "Gunakan ikon aplikasi web untuk mengganti 🤖", + "description": "Apakah akan menggunakan ikon aplikasi web untuk mengganti 🤖 di aplikasi bersama", + "descriptionInExplore": "Apakah akan menggunakan ikon aplikasi web untuk mengganti 🤖 di Jelajahi" + }, + "typeSelector": { + "agent": "Agen", + "advanced": "Alur obrolan", + "completion": "Penyelesaian", + "all": "Semua Jenis", + "workflow": "Alur Kerja", + "chatbot": "Chatbot" + }, + "tracing": { + "configProviderTitle": { + "notConfigured": "Penyedia konfigurasi untuk mengaktifkan pelacakan", + "configured": "Dikonfigurasi", + "moreProvider": "Lebih Banyak Penyedia" + }, + "arize": { + "title": "Arize", + "description": "Observabilitas LLM tingkat perusahaan, evaluasi, pemantauan, dan eksperimen online & offline—didukung oleh OpenTelemetry. Dibuat khusus untuk LLM & aplikasi berbasis agen." + }, + "phoenix": { + "title": "Phoenix", + "description": "Observabilitas, evaluasi, rekayasa cepat, dan platform eksperimen berbasis sumber terbuka & OpenTelemetri untuk alur kerja dan agen LLM Anda." + }, + "langsmith": { + "title": "LangSmith", + "description": "Platform pengembang all-in-one untuk setiap langkah siklus hidup aplikasi yang didukung LLM." + }, + "langfuse": { + "title": "Langfuse", + "description": "Observabilitas LLM sumber terbuka, evaluasi, manajemen prompt, dan metrik untuk men-debug dan meningkatkan aplikasi LLM Anda." + }, + "opik": { + "title": "Opik", + "description": "Opik adalah platform sumber terbuka untuk mengevaluasi, menguji, dan memantau aplikasi LLM." + }, + "weave": { + "description": "Weave adalah platform sumber terbuka untuk mengevaluasi, menguji, dan memantau aplikasi LLM.", + "title": "Weave" + }, + "aliyun": { + "title": "Monitor Awan", + "description": "Platform observabilitas yang dikelola sepenuhnya dan bebas perawatan yang disediakan oleh Alibaba Cloud, memungkinkan pemantauan, pelacakan, dan evaluasi aplikasi Dify yang out-of-the-box." + }, + "configProvider": { + "project": "Proyek", + "publicKey": "Kunci Publik", + "removeConfirmContent": "Konfigurasi saat ini sedang digunakan, menghapusnya akan mematikan fitur Pelacakan.", + "title": "Konfigurasi", + "secretKey": "Kunci Rahasia", + "experimentId": "ID Eksperimen", + "trackingUri": "URI Pelacakan", + "clientId": "ID Klien OAuth", + "clientSecret": "Rahasia Klien OAuth", + "username": "Nama Pengguna", + "databricksHost": "URL Workspace Databricks", + "personalAccessToken": "Token Akses Pribadi (lama)", + "password": "Kata sandi", + "placeholder": "Masukkan {{key}} Anda", + "viewDocsLink": "Lihat dokumen {{key}}", + "removeConfirmTitle": "Hapus konfigurasi {{key}}?" + }, + "expand": "Memperluas", + "disabledTip": "Silakan konfigurasi penyedia terlebih dahulu", + "view": "Melihat", + "collapse": "Roboh", + "tracing": "Menelusuri", + "title": "Melacak performa aplikasi", + "disabled": "Nonaktif", + "enabled": "Aktif", + "config": "Konfigurasi", + "description": "Mengonfigurasi penyedia LLMOps Pihak Ketiga dan melacak performa aplikasi.", + "inUse": "Sedang digunakan", + "tracingDescription": "Tangkap konteks lengkap eksekusi aplikasi, termasuk panggilan LLM, konteks, perintah, permintaan HTTP, dan lainnya, ke platform pelacakan pihak ketiga.", + "tencent": { + "title": "Tencent APM", + "description": "Tencent Application Performance Monitoring menyediakan pelacakan komprehensif dan analisis multi-dimensi untuk aplikasi LLM." + }, + "mlflow": { + "title": "MLflow", + "description": "MLflow adalah platform sumber terbuka untuk manajemen eksperimen, evaluasi, dan pemantauan aplikasi LLM." + }, + "databricks": { + "title": "Databricks", + "description": "Databricks menawarkan MLflow yang sepenuhnya dikelola dengan tata kelola dan keamanan yang kuat untuk menyimpan data jejak." + } + }, + "appSelector": { + "placeholder": "Pilih aplikasi...", + "params": "PARAMETER APLIKASI", + "noParams": "Tidak perlu parameter", + "label": "APP" + }, + "structOutput": { + "notConfiguredTip": "Output terstruktur belum dikonfigurasi", + "required": "Diperlukan", + "structured": "Terstruktur", + "modelNotSupported": "Model tidak didukung", + "structuredTip": "Output Terstruktur adalah fitur yang memastikan model akan selalu menghasilkan respons yang mematuhi Skema JSON yang Anda sediakan", + "LLMResponse": "Tanggapan LLM", + "modelNotSupportedTip": "Model saat ini tidak mendukung fitur ini dan secara otomatis diturunkan ke injeksi minta.", + "configure": "Mengkonfigurasi", + "moreFillTip": "Menampilkan maksimal 10 tingkat bersarang" + }, + "accessItemsDescription": { + "anyone": "Siapa pun dapat mengakses aplikasi web (tidak perlu login)", + "organization": "Semua anggota dalam platform dapat mengakses aplikasi web", + "specific": "Hanya anggota tertentu dalam platform yang dapat mengakses aplikasi web", + "external": "Hanya pengguna eksternal yang diautentikasi yang dapat mengakses aplikasi web" + }, + "accessControlDialog": { + "accessItems": { + "organization": "Semua anggota dalam platform", + "external": "Pengguna eksternal yang diautentikasi", + "anyone": "Siapa pun yang memiliki tautan", + "specific": "Anggota tertentu dalam platform" + }, + "operateGroupAndMember": { + "expand": "Memperluas", + "searchPlaceholder": "Cari grup dan anggota", + "noResult": "Tidak ada hasil", + "allMembers": "Semua anggota" + }, + "updateSuccess": "Update berhasil", + "noGroupsOrMembers": "Tidak ada grup atau anggota yang dipilih", + "webAppSSONotEnabledTip": "Hubungi administrator organisasi Anda untuk mengonfigurasi autentikasi eksternal untuk aplikasi web.", + "description": "Menetapkan izin akses aplikasi web", + "title": "Kontrol Akses Aplikasi Web", + "accessLabel": "Siapa yang memiliki akses", + "groups_one": "GRUP {{count}}", + "groups_other": "{{count}} KELOMPOK", + "members_one": "{{count}} ANGGOTA", + "members_other": "{{count}} ANGGOTA" + }, + "publishApp": { + "notSetDesc": "Saat ini tidak ada yang dapat mengakses aplikasi web. Silakan atur izin.", + "notSet": "Tidak diatur", + "title": "Siapa yang dapat mengakses aplikasi web" + }, + "gotoAnything": { + "actions": { + "themeDark": "Tema Gelap", + "themeCategoryDesc": "Ganti tema aplikasi", + "themeCategoryTitle": "Tema", + "searchWorkflowNodesHelp": "Fitur ini hanya berfungsi saat melihat alur kerja. Navigasikan ke alur kerja terlebih dahulu.", + "searchApplicationsDesc": "Cari dan navigasikan ke aplikasi Anda", + "searchPlugins": "Cari Plugin", + "searchApplications": "Cari Aplikasi", + "languageCategoryTitle": "Bahasa", + "themeLight": "Tema Cahaya", + "communityDesc": "Buka komunitas Discord", + "searchWorkflowNodesDesc": "Temukan dan lompat ke simpul dalam alur kerja saat ini berdasarkan nama atau jenis", + "searchWorkflowNodes": "Cari Node Alur Kerja", + "runTitle": "Perintah", + "themeSystemDesc": "Ikuti tampilan OS Anda", + "languageCategoryDesc": "Ganti bahasa antarmuka", + "themeDarkDesc": "Gunakan penampilan gelap", + "searchPluginsDesc": "Cari dan navigasikan ke plugin Anda", + "accountDesc": "Arahkan ke halaman akun", + "searchKnowledgeBases": "Cari Basis Pengetahuan", + "runDesc": "Jalankan perintah cepat (tema, bahasa, ...)", + "docDesc": "Buka dokumentasi bantuan", + "themeLightDesc": "Gunakan penampilan ringan", + "feedbackDesc": "Buka diskusi umpan balik komunitas", + "slashDesc": "Jalankan perintah (ketik / untuk melihat semua perintah yang tersedia)", + "searchKnowledgeBasesDesc": "Cari dan navigasikan ke basis pengetahuan Anda", + "themeSystem": "Tema Sistem", + "languageChangeDesc": "Mengubah bahasa UI", + "zenTitle": "Zen Mode", + "zenDesc": "Toggle canvas focus mode" + }, + "emptyState": { + "noWorkflowNodesFound": "Tidak ada simpul alur kerja yang ditemukan", + "noAppsFound": "Tidak ada aplikasi yang ditemukan", + "noPluginsFound": "Tidak ada plugin yang ditemukan", + "noKnowledgeBasesFound": "Tidak ada basis pengetahuan yang ditemukan", + "tryDifferentTerm": "Coba istilah penelusuran lain", + "trySpecificSearch": "Coba {{shortcuts}} untuk pencarian spesifik" + }, + "groups": { + "apps": "Apps", + "commands": "Perintah", + "plugins": "Plugin", + "knowledgeBases": "Basis Pengetahuan", + "workflowNodes": "Node Alur Kerja" + }, + "searchTitle": "Cari apa pun", + "noResults": "Tidak ada hasil yang ditemukan", + "searchTemporarilyUnavailable": "Penelusuran tidak tersedia untuk sementara", + "selectSearchType": "Pilih apa yang akan dicari", + "someServicesUnavailable": "Beberapa layanan penelusuran tidak tersedia", + "searching": "Mencari...", + "searchPlaceholder": "Cari atau ketik @ atau / untuk perintah...", + "slashHint": "Ketik / untuk melihat semua perintah yang tersedia", + "commandHint": "Ketik @ untuk menelusuri berdasarkan kategori", + "useAtForSpecific": "Gunakan @ untuk jenis tertentu", + "clearToSearchAll": "Hapus @ untuk mencari semua", + "searchHint": "Mulailah mengetik untuk mencari semuanya secara instan", + "servicesUnavailableMessage": "Beberapa layanan penelusuran mungkin mengalami masalah. Coba lagi sebentar lagi.", + "tryDifferentSearch": "Coba istilah penelusuran lain", + "noMatchingCommands": "Tidak ada perintah yang cocok ditemukan", + "searchFailed": "Pencarian gagal", + "tips": "Tekan ↑↓ untuk menavigasi", + "startTyping": "Mulai mengetik untuk mencari", + "selectToNavigate": "Pilih untuk menavigasi", + "pressEscToClose": "Tekan ESC untuk menutup", + "resultCount": "hasil {{count}}", + "resultCount_other": "hasil {{count}}", + "inScope": "di {{scope}}s" + }, + "createApp": "BUAT APLIKASI", + "accessControl": "Kontrol Akses Aplikasi Web", + "maxActiveRequestsTip": "Jumlah maksimum permintaan aktif bersamaan per aplikasi (0 untuk tidak terbatas)", + "noAccessPermission": "Tidak ada izin untuk mengakses aplikasi web", + "maxActiveRequestsPlaceholder": "Masukkan 0 untuk tidak terbatas", + "join": "Bergabunglah dengan komunitas", + "deleteAppConfirmContent": "Menghapus aplikasi tidak dapat diubah. Pengguna tidak akan dapat lagi mengakses aplikasi Anda, dan semua konfigurasi prompt serta log akan dihapus secara permanen.", + "duplicate": "Duplikat", + "importDSL": "Impor file DSL", + "appDeleted": "Aplikasi dihapus", + "importFromDSLFile": "Dari file DSL", + "export": "Ekspor DSL", + "createFromConfigFile": "Buat dari file DSL", + "importFromDSLUrlPlaceholder": "Tempel tautan DSL di sini", + "exportFailed": "Ekspor DSL gagal.", + "importFromDSL": "Impor dari DSL", + "duplicateTitle": "Aplikasi Duplikat", + "roadmap": "Lihat peta jalan kami", + "editDone": "Info aplikasi diperbarui", + "deleteAppConfirmTitle": "Hapus aplikasi ini?", + "editFailed": "Gagal memperbarui info aplikasi", + "removeOriginal": "Menghapus aplikasi asli", + "importFromDSLUrl": "Dari URL", + "communityIntro": "Berdiskusi dengan anggota tim, kontributor, dan pengembang di berbagai saluran.", + "switchTip": "tidak mengizinkan", + "switchTipEnd": "beralih kembali ke Basic Orchestrate.", + "switch": "Beralih ke Workflow Orchestrate", + "editApp": "Edit Info", + "switchTipStart": "Salinan aplikasi baru akan dibuat untuk Anda, dan salinan baru akan beralih ke Workflow Orchestrate. Salinan baru akan", + "switchLabel": "Salinan aplikasi yang akan dibuat", + "editAppTitle": "Edit Info Aplikasi", + "maxActiveRequests": "Permintaan bersamaan maksimum", + "switchStart": "Sakelar mulai", + "openInExplore": "Buka di Jelajahi", + "showMyCreatedAppsOnly": "Dibuat oleh saya", + "appDeleteFailed": "Gagal menghapus aplikasi", + "noUserInputNode": "Node input pengguna hilang", + "notPublishedYet": "Aplikasi belum diterbitkan" +} diff --git a/web/i18n/id-ID/app.ts b/web/i18n/id-ID/app.ts deleted file mode 100644 index ca3e2f01dd..0000000000 --- a/web/i18n/id-ID/app.ts +++ /dev/null @@ -1,347 +0,0 @@ -const translation = { - types: { - chatbot: 'Chatbot', - workflow: 'Alur Kerja', - advanced: 'Alur obrolan', - agent: 'Agen', - completion: 'Penyelesaian', - basic: 'Dasar', - all: 'Semua', - }, - mermaid: { - handDrawn: 'Digambar Tangan', - classic: 'Klasik', - }, - dslUploader: { - browse: 'Ramban', - button: 'Seret dan lepas file, atau', - }, - newApp: { - chatbotUserDescription: 'Bangun chatbot berbasis LLM dengan cepat dengan konfigurasi sederhana. Anda dapat beralih ke Chatflow nanti.', - agentShortDescription: 'Agen cerdas dengan penalaran dan penggunaan alat otonom', - noTemplateFound: 'Tidak ada templat yang ditemukan', - appCreated: 'Aplikasi dibuat', - appNamePlaceholder: 'Beri nama aplikasi Anda', - appCreateDSLErrorPart3: 'Versi DSL aplikasi saat ini:', - Cancel: 'Batal', - previewDemo: 'Pratinjau demo', - appCreateDSLWarning: 'Perhatian: Perbedaan versi DSL dapat memengaruhi fitur tertentu', - appCreateDSLErrorPart1: 'Perbedaan yang signifikan dalam versi DSL telah terdeteksi. Memaksa impor dapat menyebabkan aplikasi tidak berfungsi.', - chatApp: 'Asisten', - workflowWarning: 'Saat ini dalam versi beta', - completionShortDescription: 'Asisten AI untuk tugas pembuatan teks', - startFromBlank: 'Buat dari Kosong', - captionDescription: 'Deskripsi', - forBeginners: 'Jenis aplikasi yang lebih dasar', - noIdeaTip: 'Tidak ada ide? Lihat templat kami', - completionUserDescription: 'Buat asisten AI dengan cepat untuk tugas pembuatan teks dengan konfigurasi sederhana.', - forAdvanced: 'UNTUK PENGGUNA TINGKAT LANJUT', - workflowUserDescription: 'Bangun alur kerja AI otonom secara visual dengan kesederhanaan seret dan lepas.', - learnMore: 'Pelajari lebih lanjut', - agentUserDescription: 'Agen cerdas yang mampu penalaran berulang dan penggunaan alat otonom untuk mencapai tujuan tugas.', - noAppsFound: 'Tidak ada aplikasi yang ditemukan', - startFromTemplate: 'Buat dari Template', - appDescriptionPlaceholder: 'Masukkan deskripsi aplikasi', - captionName: 'Nama & Ikon Aplikasi', - showTemplates: 'Saya ingin memilih dari templat', - caution: 'Hati', - chatbotShortDescription: 'Chatbot berbasis LLM dengan pengaturan sederhana', - Confirm: 'Konfirmasi', - agentAssistant: 'Asisten Agen Baru', - appCreateFailed: 'Gagal membuat aplikasi', - appCreateDSLErrorTitle: 'Ketidakcocokan Versi', - chatAppIntro: 'Saya ingin membangun aplikasi berbasis obrolan. Aplikasi ini menggunakan format tanya jawab, memungkinkan beberapa putaran percakapan berkelanjutan.', - nameNotEmpty: 'Nama tidak boleh kosong', - appTemplateNotSelected: 'Silakan pilih templat', - noTemplateFoundTip: 'Coba cari menggunakan kata kunci yang berbeda.', - appCreateDSLErrorPart4: 'Versi DSL yang didukung sistem:', - appTypeRequired: 'Silakan pilih jenis aplikasi', - advancedShortDescription: 'Alur kerja disempurnakan untuk obrolan multi-giliran', - completeAppIntro: 'Saya ingin membuat aplikasi yang menghasilkan teks berkualitas tinggi berdasarkan petunjuk, seperti menghasilkan artikel, ringkasan, terjemahan, dan banyak lagi.', - Create: 'Buat', - advancedUserDescription: 'Alur kerja dengan fitur memori tambahan dan antarmuka chatbot.', - dropDSLToCreateApp: 'Jatuhkan file DSL di sini untuk membuat aplikasi', - completeApp: 'Pembuat Teks', - optional: 'Fakultatif', - workflowShortDescription: 'Aliran agen untuk otomatisasi cerdas', - chooseAppType: 'Pilih Jenis App', - hideTemplates: 'Kembali ke pemilihan mode', - useTemplate: 'Gunakan template ini', - appCreateDSLErrorPart2: 'Apakah Anda ingin melanjutkan?', - import: 'Mengimpor', - foundResult: 'Hasil {{count}}', - foundResults: 'Hasil {{count}}', - }, - newAppFromTemplate: { - sidebar: { - HR: 'HR', - Programming: 'Pemrograman', - Recommended: 'Direkomendasikan', - Workflow: 'Alur Kerja', - Assistant: 'Asisten', - Writing: 'Tulisan', - Agent: 'Agen', - }, - byCategories: 'BERDASARKAN KATEGORI', - searchAllTemplate: 'Cari semua templat...', - }, - iconPicker: { - cancel: 'Batal', - emoji: 'Emoji', - image: 'Citra', - ok: 'OK', - }, - answerIcon: { - title: 'Gunakan ikon aplikasi web untuk mengganti 🤖', - description: 'Apakah akan menggunakan ikon aplikasi web untuk mengganti 🤖 di aplikasi bersama', - descriptionInExplore: 'Apakah akan menggunakan ikon aplikasi web untuk mengganti 🤖 di Jelajahi', - }, - typeSelector: { - agent: 'Agen', - advanced: 'Alur obrolan', - completion: 'Penyelesaian', - all: 'Semua Jenis', - workflow: 'Alur Kerja', - chatbot: 'Chatbot', - }, - tracing: { - configProviderTitle: { - notConfigured: 'Penyedia konfigurasi untuk mengaktifkan pelacakan', - configured: 'Dikonfigurasi', - moreProvider: 'Lebih Banyak Penyedia', - }, - arize: { - title: 'Arize', - description: 'Observabilitas LLM tingkat perusahaan, evaluasi, pemantauan, dan eksperimen online & offline—didukung oleh OpenTelemetry. Dibuat khusus untuk LLM & aplikasi berbasis agen.', - }, - phoenix: { - title: 'Phoenix', - description: 'Observabilitas, evaluasi, rekayasa cepat, dan platform eksperimen berbasis sumber terbuka & OpenTelemetri untuk alur kerja dan agen LLM Anda.', - }, - langsmith: { - title: 'LangSmith', - description: 'Platform pengembang all-in-one untuk setiap langkah siklus hidup aplikasi yang didukung LLM.', - }, - langfuse: { - title: 'Langfuse', - description: 'Observabilitas LLM sumber terbuka, evaluasi, manajemen prompt, dan metrik untuk men-debug dan meningkatkan aplikasi LLM Anda.', - }, - opik: { - title: 'Opik', - description: 'Opik adalah platform sumber terbuka untuk mengevaluasi, menguji, dan memantau aplikasi LLM.', - }, - weave: { - description: 'Weave adalah platform sumber terbuka untuk mengevaluasi, menguji, dan memantau aplikasi LLM.', - title: 'Weave', - }, - aliyun: { - title: 'Monitor Awan', - description: 'Platform observabilitas yang dikelola sepenuhnya dan bebas perawatan yang disediakan oleh Alibaba Cloud, memungkinkan pemantauan, pelacakan, dan evaluasi aplikasi Dify yang out-of-the-box.', - }, - configProvider: { - project: 'Proyek', - publicKey: 'Kunci Publik', - removeConfirmContent: 'Konfigurasi saat ini sedang digunakan, menghapusnya akan mematikan fitur Pelacakan.', - title: 'Konfigurasi', - secretKey: 'Kunci Rahasia', - experimentId: 'ID Eksperimen', - trackingUri: 'URI Pelacakan', - clientId: 'ID Klien OAuth', - clientSecret: 'Rahasia Klien OAuth', - username: 'Nama Pengguna', - databricksHost: 'URL Workspace Databricks', - personalAccessToken: 'Token Akses Pribadi (lama)', - password: 'Kata sandi', - placeholder: 'Masukkan {{key}} Anda', - viewDocsLink: 'Lihat dokumen {{key}}', - removeConfirmTitle: 'Hapus konfigurasi {{key}}?', - }, - expand: 'Memperluas', - disabledTip: 'Silakan konfigurasi penyedia terlebih dahulu', - view: 'Melihat', - collapse: 'Roboh', - tracing: 'Menelusuri', - title: 'Melacak performa aplikasi', - disabled: 'Nonaktif', - enabled: 'Aktif', - config: 'Konfigurasi', - description: 'Mengonfigurasi penyedia LLMOps Pihak Ketiga dan melacak performa aplikasi.', - inUse: 'Sedang digunakan', - tracingDescription: 'Tangkap konteks lengkap eksekusi aplikasi, termasuk panggilan LLM, konteks, perintah, permintaan HTTP, dan lainnya, ke platform pelacakan pihak ketiga.', - tencent: { - title: 'Tencent APM', - description: 'Tencent Application Performance Monitoring menyediakan pelacakan komprehensif dan analisis multi-dimensi untuk aplikasi LLM.', - }, - mlflow: { - title: 'MLflow', - description: 'MLflow adalah platform sumber terbuka untuk manajemen eksperimen, evaluasi, dan pemantauan aplikasi LLM.', - }, - databricks: { - title: 'Databricks', - description: 'Databricks menawarkan MLflow yang sepenuhnya dikelola dengan tata kelola dan keamanan yang kuat untuk menyimpan data jejak.', - }, - }, - appSelector: { - placeholder: 'Pilih aplikasi...', - params: 'PARAMETER APLIKASI', - noParams: 'Tidak perlu parameter', - label: 'APP', - }, - structOutput: { - notConfiguredTip: 'Output terstruktur belum dikonfigurasi', - required: 'Diperlukan', - structured: 'Terstruktur', - modelNotSupported: 'Model tidak didukung', - structuredTip: 'Output Terstruktur adalah fitur yang memastikan model akan selalu menghasilkan respons yang mematuhi Skema JSON yang Anda sediakan', - LLMResponse: 'Tanggapan LLM', - modelNotSupportedTip: 'Model saat ini tidak mendukung fitur ini dan secara otomatis diturunkan ke injeksi minta.', - configure: 'Mengkonfigurasi', - moreFillTip: 'Menampilkan maksimal 10 tingkat bersarang', - }, - accessItemsDescription: { - anyone: 'Siapa pun dapat mengakses aplikasi web (tidak perlu login)', - organization: 'Semua anggota dalam platform dapat mengakses aplikasi web', - specific: 'Hanya anggota tertentu dalam platform yang dapat mengakses aplikasi web', - external: 'Hanya pengguna eksternal yang diautentikasi yang dapat mengakses aplikasi web', - }, - accessControlDialog: { - accessItems: { - organization: 'Semua anggota dalam platform', - external: 'Pengguna eksternal yang diautentikasi', - anyone: 'Siapa pun yang memiliki tautan', - specific: 'Anggota tertentu dalam platform', - }, - operateGroupAndMember: { - expand: 'Memperluas', - searchPlaceholder: 'Cari grup dan anggota', - noResult: 'Tidak ada hasil', - allMembers: 'Semua anggota', - }, - updateSuccess: 'Update berhasil', - noGroupsOrMembers: 'Tidak ada grup atau anggota yang dipilih', - webAppSSONotEnabledTip: 'Hubungi administrator organisasi Anda untuk mengonfigurasi autentikasi eksternal untuk aplikasi web.', - description: 'Menetapkan izin akses aplikasi web', - title: 'Kontrol Akses Aplikasi Web', - accessLabel: 'Siapa yang memiliki akses', - groups_one: 'GRUP {{count}}', - groups_other: '{{count}} KELOMPOK', - members_one: '{{count}} ANGGOTA', - members_other: '{{count}} ANGGOTA', - }, - publishApp: { - notSetDesc: 'Saat ini tidak ada yang dapat mengakses aplikasi web. Silakan atur izin.', - notSet: 'Tidak diatur', - title: 'Siapa yang dapat mengakses aplikasi web', - }, - gotoAnything: { - actions: { - themeDark: 'Tema Gelap', - themeCategoryDesc: 'Ganti tema aplikasi', - themeCategoryTitle: 'Tema', - searchWorkflowNodesHelp: 'Fitur ini hanya berfungsi saat melihat alur kerja. Navigasikan ke alur kerja terlebih dahulu.', - searchApplicationsDesc: 'Cari dan navigasikan ke aplikasi Anda', - searchPlugins: 'Cari Plugin', - searchApplications: 'Cari Aplikasi', - languageCategoryTitle: 'Bahasa', - themeLight: 'Tema Cahaya', - communityDesc: 'Buka komunitas Discord', - searchWorkflowNodesDesc: 'Temukan dan lompat ke simpul dalam alur kerja saat ini berdasarkan nama atau jenis', - searchWorkflowNodes: 'Cari Node Alur Kerja', - runTitle: 'Perintah', - themeSystemDesc: 'Ikuti tampilan OS Anda', - languageCategoryDesc: 'Ganti bahasa antarmuka', - themeDarkDesc: 'Gunakan penampilan gelap', - searchPluginsDesc: 'Cari dan navigasikan ke plugin Anda', - accountDesc: 'Arahkan ke halaman akun', - searchKnowledgeBases: 'Cari Basis Pengetahuan', - runDesc: 'Jalankan perintah cepat (tema, bahasa, ...)', - docDesc: 'Buka dokumentasi bantuan', - themeLightDesc: 'Gunakan penampilan ringan', - feedbackDesc: 'Buka diskusi umpan balik komunitas', - slashDesc: 'Jalankan perintah (ketik / untuk melihat semua perintah yang tersedia)', - searchKnowledgeBasesDesc: 'Cari dan navigasikan ke basis pengetahuan Anda', - themeSystem: 'Tema Sistem', - languageChangeDesc: 'Mengubah bahasa UI', - zenTitle: 'Zen Mode', - zenDesc: 'Toggle canvas focus mode', - }, - emptyState: { - noWorkflowNodesFound: 'Tidak ada simpul alur kerja yang ditemukan', - noAppsFound: 'Tidak ada aplikasi yang ditemukan', - noPluginsFound: 'Tidak ada plugin yang ditemukan', - noKnowledgeBasesFound: 'Tidak ada basis pengetahuan yang ditemukan', - tryDifferentTerm: 'Coba istilah penelusuran lain', - trySpecificSearch: 'Coba {{shortcuts}} untuk pencarian spesifik', - }, - groups: { - apps: 'Apps', - commands: 'Perintah', - plugins: 'Plugin', - knowledgeBases: 'Basis Pengetahuan', - workflowNodes: 'Node Alur Kerja', - }, - searchTitle: 'Cari apa pun', - noResults: 'Tidak ada hasil yang ditemukan', - searchTemporarilyUnavailable: 'Penelusuran tidak tersedia untuk sementara', - selectSearchType: 'Pilih apa yang akan dicari', - someServicesUnavailable: 'Beberapa layanan penelusuran tidak tersedia', - searching: 'Mencari...', - searchPlaceholder: 'Cari atau ketik @ atau / untuk perintah...', - slashHint: 'Ketik / untuk melihat semua perintah yang tersedia', - commandHint: 'Ketik @ untuk menelusuri berdasarkan kategori', - useAtForSpecific: 'Gunakan @ untuk jenis tertentu', - clearToSearchAll: 'Hapus @ untuk mencari semua', - searchHint: 'Mulailah mengetik untuk mencari semuanya secara instan', - servicesUnavailableMessage: 'Beberapa layanan penelusuran mungkin mengalami masalah. Coba lagi sebentar lagi.', - tryDifferentSearch: 'Coba istilah penelusuran lain', - noMatchingCommands: 'Tidak ada perintah yang cocok ditemukan', - searchFailed: 'Pencarian gagal', - tips: 'Tekan ↑↓ untuk menavigasi', - startTyping: 'Mulai mengetik untuk mencari', - selectToNavigate: 'Pilih untuk menavigasi', - pressEscToClose: 'Tekan ESC untuk menutup', - resultCount: 'hasil {{count}}', - resultCount_other: 'hasil {{count}}', - inScope: 'di {{scope}}s', - }, - createApp: 'BUAT APLIKASI', - accessControl: 'Kontrol Akses Aplikasi Web', - maxActiveRequestsTip: 'Jumlah maksimum permintaan aktif bersamaan per aplikasi (0 untuk tidak terbatas)', - noAccessPermission: 'Tidak ada izin untuk mengakses aplikasi web', - maxActiveRequestsPlaceholder: 'Masukkan 0 untuk tidak terbatas', - join: 'Bergabunglah dengan komunitas', - deleteAppConfirmContent: 'Menghapus aplikasi tidak dapat diubah. Pengguna tidak akan dapat lagi mengakses aplikasi Anda, dan semua konfigurasi prompt serta log akan dihapus secara permanen.', - duplicate: 'Duplikat', - importDSL: 'Impor file DSL', - appDeleted: 'Aplikasi dihapus', - importFromDSLFile: 'Dari file DSL', - export: 'Ekspor DSL', - createFromConfigFile: 'Buat dari file DSL', - importFromDSLUrlPlaceholder: 'Tempel tautan DSL di sini', - exportFailed: 'Ekspor DSL gagal.', - importFromDSL: 'Impor dari DSL', - duplicateTitle: 'Aplikasi Duplikat', - roadmap: 'Lihat peta jalan kami', - editDone: 'Info aplikasi diperbarui', - deleteAppConfirmTitle: 'Hapus aplikasi ini?', - editFailed: 'Gagal memperbarui info aplikasi', - removeOriginal: 'Menghapus aplikasi asli', - importFromDSLUrl: 'Dari URL', - communityIntro: 'Berdiskusi dengan anggota tim, kontributor, dan pengembang di berbagai saluran.', - switchTip: 'tidak mengizinkan', - switchTipEnd: 'beralih kembali ke Basic Orchestrate.', - switch: 'Beralih ke Workflow Orchestrate', - editApp: 'Edit Info', - switchTipStart: 'Salinan aplikasi baru akan dibuat untuk Anda, dan salinan baru akan beralih ke Workflow Orchestrate. Salinan baru akan', - switchLabel: 'Salinan aplikasi yang akan dibuat', - editAppTitle: 'Edit Info Aplikasi', - maxActiveRequests: 'Permintaan bersamaan maksimum', - switchStart: 'Sakelar mulai', - openInExplore: 'Buka di Jelajahi', - showMyCreatedAppsOnly: 'Dibuat oleh saya', - appDeleteFailed: 'Gagal menghapus aplikasi', - noUserInputNode: 'Node input pengguna hilang', - notPublishedYet: 'Aplikasi belum diterbitkan', -} - -export default translation diff --git a/web/i18n/id-ID/billing.json b/web/i18n/id-ID/billing.json new file mode 100644 index 0000000000..c63dd9dcb2 --- /dev/null +++ b/web/i18n/id-ID/billing.json @@ -0,0 +1,238 @@ +{ + "usagePage": { + "buildApps": "Bangun Aplikasi", + "vectorSpace": "Penyimpanan Data Pengetahuan", + "vectorSpaceTooltip": "Dokumen dengan mode pengindeksan Kualitas Tinggi akan menggunakan sumber daya Penyimpanan Data Pengetahuan. Ketika Penyimpanan Data Pengetahuan mencapai batas, dokumen baru tidak akan diunggah.", + "documentsUploadQuota": "Kuota Unggah Dokumen", + "teamMembers": "Anggota Tim", + "annotationQuota": "Kuota Anotasi", + "perMonth": "per bulan", + "triggerEvents": "Pemicu Acara", + "resetsIn": "Diatur ulang dalam {{count,number}} hari" + }, + "upgradeBtn": { + "encourage": "Tingkatkan Sekarang", + "plain": "Lihat Paket", + "encourageShort": "Upgrade" + }, + "plansCommon": { + "planRange": { + "yearly": "Tahunan", + "monthly": "Bulanan" + }, + "priority": { + "priority": "Prioritas", + "top-priority": "Prioritas utama", + "standard": "Standar" + }, + "supportItems": { + "llmLoadingBalancing": "Penyeimbangan Beban LLM", + "communityForums": "Forum komunitas", + "agentMode": "Mode Agen", + "logoChange": "Perubahan logo", + "priorityEmail": "Dukungan email & obrolan prioritas", + "emailSupport": "Dukungan email", + "personalizedSupport": "Dukungan yang dipersonalisasi", + "bulkUpload": "Mengunggah dokumen secara massal", + "customIntegration": "Integrasi dan dukungan khusus", + "dedicatedAPISupport": "Dukungan API khusus", + "SSOAuthentication": "Autentikasi SSO", + "ragAPIRequest": "Permintaan API RAG", + "llmLoadingBalancingTooltip": "Tambahkan beberapa kunci API ke model, secara efektif melewati batas kecepatan API.", + "workflow": "Alur Kerja" + }, + "messageRequest": { + "tooltip": "Kredit pesan disediakan untuk membantu Anda mencoba berbagai model OpenAI dengan mudah di Dify. Kredit digunakan berdasarkan jenis model. Setelah habis, Anda dapat beralih ke kunci API OpenAI Anda sendiri.", + "title": "kredit pesan {{count,number}}", + "titlePerMonth": "{{count,number}} kredit pesan/bulan" + }, + "annotatedResponse": { + "tooltip": "Pengeditan manual dan anotasi respons memberikan kemampuan menjawab pertanyaan berkualitas tinggi yang dapat disesuaikan untuk aplikasi. (Hanya berlaku di aplikasi Chat)", + "title": "Batas Kuota Anotasi {{count,number}}" + }, + "mostPopular": "Populer", + "free": "Bebas", + "freeTrialTipSuffix": "Tidak perlu kartu kredit", + "freeTrialTipPrefix": "Daftar dan dapatkan", + "month": "bulan", + "talkToSales": "Bicaralah dengan Sales", + "freeTrialTip": "uji coba gratis 200 panggilan OpenAI.", + "apiRateLimit": "Batas Tarif API", + "yearlyTip": "Bayar selama 10 bulan, nikmati 1 tahun!", + "contractOwner": "Hubungi manajer tim", + "save": "Simpan", + "self": "Hosting Mandiri", + "comparePlanAndFeatures": "Bandingkan paket & fitur", + "unavailable": "Tidak tersedia", + "support": "Dukung", + "cloud": "Layanan Cloud", + "annotationQuota": "Kuota Anotasi", + "contactSales": "Hubungi Sales", + "currentPlan": "Rencana Saat Ini", + "unlimitedApiRate": "Tidak Ada Batas Tarif API", + "priceTip": "per ruang kerja/", + "apiRateLimitTooltip": "Batas Tarif API berlaku untuk semua permintaan yang dibuat melalui Dify API, termasuk pembuatan teks, percakapan obrolan, eksekusi alur kerja, dan pemrosesan dokumen.", + "documentsTooltip": "Kuota jumlah dokumen yang diimpor dari Sumber Data Pengetahuan.", + "days": "Hari", + "vectorSpaceTooltip": "Dokumen dengan mode pengindeksan Kualitas Tinggi akan menggunakan sumber daya Penyimpanan Data Pengetahuan. Ketika Penyimpanan Data Pengetahuan mencapai batas, dokumen baru tidak akan diunggah.", + "memberAfter": "Anggota", + "year": "tahun", + "getStarted": "Memulai", + "comingSoon": "Segera datang", + "annualBilling": "Penagihan Tahunan", + "contractSales": "Hubungi penjualan", + "documentProcessingPriority": "Pemrosesan Dokumen", + "documentProcessingPriorityTip": "Untuk prioritas pemrosesan dokumen yang lebih tinggi, silakan tingkatkan paket Anda.", + "startForFree": "Mulai Gratis", + "documentsRequestQuotaTooltip": "Menentukan jumlah total tindakan yang dapat dilakukan ruang kerja per menit dalam pangkalan pengetahuan, termasuk pembuatan, penghapusan, pembaruan, pengunggahan dokumen, modifikasi, pengarsipan, dan kueri basis pengetahuan himpunan data. Metrik ini digunakan untuk mengevaluasi performa permintaan basis pengetahuan. Misalnya, jika pengguna Sandbox melakukan 10 pengujian hit berturut-turut dalam satu menit, ruang kerja mereka akan dibatasi sementara untuk melakukan tindakan berikut selama menit berikutnya: pembuatan, penghapusan, pembaruan, dan unggahan atau modifikasi himpunan data.", + "unlimited": "Unlimited", + "documentProcessingPriorityUpgrade": "Proses lebih banyak data dengan akurasi yang lebih tinggi pada kecepatan yang lebih tinggi.", + "ragAPIRequestTooltip": "Mengacu pada jumlah panggilan API yang hanya memanggil kemampuan pemrosesan basis pengetahuan Dify.", + "receiptInfo": "Hanya pemilik tim dan admin tim yang dapat berlangganan dan melihat informasi penagihan", + "customTools": "Alat Kustom", + "modelProviders": "Mendukung OpenAI/Anthropic/Llama2/Azure OpenAI/Hugging Face/Replite", + "member": "Anggota", + "startBuilding": "Mulai Membangun", + "taxTip": "Semua harga langganan (bulanan/tahunan) belum termasuk pajak yang berlaku (misalnya, PPN, pajak penjualan).", + "taxTipSecond": "Jika wilayah Anda tidak memiliki persyaratan pajak yang berlaku, tidak akan ada pajak yang muncul saat checkout, dan Anda tidak akan dikenakan biaya tambahan apa pun selama masa langganan.", + "triggerEvents": { + "unlimited": "Peristiwa Pemicu Tak Terbatas", + "tooltip": "Jumlah peristiwa yang secara otomatis memulai alur kerja melalui pemicu Plugin, Jadwal, atau Webhook.", + "sandbox": "{{count,number}} Memicu Peristiwa", + "professional": "{{count,number}} Pemicu Peristiwa/bulan" + }, + "workflowExecution": { + "priority": "Eksekusi Alur Kerja Prioritas", + "standard": "Eksekusi Alur Kerja Standar", + "faster": "Eksekusi Alur Kerja yang Lebih Cepat", + "tooltip": "Prioritas dan kecepatan antrian eksekusi alur kerja." + }, + "startNodes": { + "unlimited": "Pemicu/alur kerja tanpa batas", + "limited": "Hingga {{count}} Pemicu/alur kerja" + }, + "title": { + "plans": "rencana", + "description": "Pilih paket yang paling sesuai dengan kebutuhan tim Anda." + }, + "teamWorkspace": "Ruang Kerja Tim {{count,number}}", + "teamMember_one": "Anggota Tim {{count,number}}", + "teamMember_other": "Anggota Tim {{count,number}}", + "buildApps": "Aplikasi {{count,number}}", + "documents": "{{count,number}} Dokumen Pengetahuan", + "vectorSpace": "{{size}} Penyimpanan Data Pengetahuan", + "documentsRequestQuota": "{{count,number}} Permintaan Pengetahuan/menit", + "apiRateLimitUnit": "{{count,number}}", + "logsHistory": "{{days}} Riwayat log" + }, + "plans": { + "sandbox": { + "name": "Sandbox", + "description": "Uji Coba Gratis Kemampuan Inti", + "for": "Uji Coba Gratis Kemampuan Inti" + }, + "professional": { + "name": "Profesional", + "for": "Untuk Pengembang Independen/Tim Kecil", + "description": "Untuk Pengembang Independen/Tim Kecil" + }, + "team": { + "name": "Tim", + "description": "Untuk Tim Berukuran Menengah", + "for": "Untuk Tim Berukuran Menengah" + }, + "community": { + "features": [ + "Semua Fitur Inti Dirilis di Bawah Repositori Publik", + "Ruang Kerja Tunggal", + "Mematuhi Lisensi Sumber Terbuka Dify" + ], + "price": "Bebas", + "for": "Untuk Pengguna Individu, Tim Kecil, atau Proyek Non-Komersial", + "name": "Masyarakat", + "description": "Untuk Pengguna Individu, Tim Kecil, atau Proyek Non-Komersial", + "btnText": "Mulai dengan Komunitas", + "includesTitle": "Fitur Gratis:" + }, + "premium": { + "features": [ + "Keandalan yang Dikelola Sendiri oleh Berbagai Penyedia Cloud", + "Ruang Kerja Tunggal", + "Kostumisasi Logo & Merek WebApp", + "Dukungan Email & Obrolan Prioritas" + ], + "name": "Premi", + "price": "Scalable", + "priceTip": "Berdasarkan Cloud Marketplace", + "for": "Untuk Organisasi dan Tim Menengah", + "comingSoon": "Dukungan Microsoft Azure & Google Cloud Segera Hadir", + "includesTitle": "Semuanya dari Komunitas, ditambah:", + "description": "Untuk Organisasi dan Tim Menengah", + "btnText": "Dapatkan Premium di" + }, + "enterprise": { + "features": [ + "Solusi Penerapan Skala Besar Kelas Perusahaan", + "Otorisasi Lisensi Komersial", + "Fitur Eksklusif Perusahaan", + "Beberapa Ruang Kerja & Manajemen Perusahaan", + "SSO", + "SLA yang dinegosiasikan oleh Mitra Dify", + "Keamanan & Kontrol Lanjutan", + "Pembaruan dan Pemeliharaan oleh Dify Secara Resmi", + "Dukungan Teknis Profesional" + ], + "includesTitle": "Semuanya mulai dari Premium, ditambah:", + "btnText": "Hubungi Sales", + "price": "Adat", + "for": "Untuk Tim berukuran besar", + "name": "Usaha", + "priceTip": "Hanya Penagihan Tahunan", + "description": "Untuk perusahaan, memerlukan keamanan, kepatuhan, skalabilitas, kontrol, dan fitur yang lebih canggih di seluruh organisasi" + } + }, + "vectorSpace": { + "fullSolution": "Tingkatkan paket Anda untuk mendapatkan lebih banyak ruang.", + "fullTip": "Ruang Vektor penuh." + }, + "apps": { + "contactUs": "Hubungi", + "fullTip2des": "Disarankan untuk membersihkan aplikasi yang tidak aktif untuk mengosongkan penggunaan, atau hubungi kami.", + "fullTip1des": "Anda telah mencapai batas build app pada paket ini", + "fullTip1": "Tingkatkan untuk membuat lebih banyak aplikasi", + "fullTip2": "Batas paket tercapai" + }, + "annotatedResponse": { + "fullTipLine2": "Anotasi lebih banyak percakapan.", + "fullTipLine1": "Tingkatkan paket Anda ke", + "quotaTitle": "Kuota Balasan Anotasi" + }, + "currentPlan": "Rencana Saat Ini", + "buyPermissionDeniedTip": "Hubungi administrator perusahaan Anda untuk berlangganan", + "viewBilling": "Mengelola penagihan dan langganan", + "teamMembers": "Anggota Tim", + "triggerLimitModal": { + "upgrade": "Tingkatkan", + "dismiss": "Tutup", + "usageTitle": "PERISTIWA PEMICU", + "title": "Tingkatkan untuk membuka lebih banyak peristiwa pemicu", + "description": "Anda telah mencapai batas pemicu acara alur kerja untuk paket ini." + }, + "viewBillingTitle": "Penagihan dan Langganan", + "viewBillingDescription": "Kelola metode pembayaran, faktur, dan perubahan langganan", + "viewBillingAction": "Kelola", + "upgrade": { + "uploadMultiplePages": { + "title": "Tingkatkan untuk mengunggah beberapa dokumen sekaligus", + "description": "Anda telah mencapai batas unggah — hanya satu dokumen yang dapat dipilih dan diunggah sekaligus dengan paket Anda saat ini." + }, + "uploadMultipleFiles": { + "title": "Tingkatkan untuk membuka unggahan dokumen batch", + "description": "Unggah lebih banyak dokumen sekaligus untuk menghemat waktu dan meningkatkan efisiensi." + }, + "addChunks": { + "title": "Tingkatkan untuk terus menambahkan potongan", + "description": "Anda telah mencapai batas penambahan potongan untuk paket ini." + } + } +} diff --git a/web/i18n/id-ID/billing.ts b/web/i18n/id-ID/billing.ts deleted file mode 100644 index 527cf43996..0000000000 --- a/web/i18n/id-ID/billing.ts +++ /dev/null @@ -1,221 +0,0 @@ -const translation = { - usagePage: { - buildApps: 'Bangun Aplikasi', - vectorSpace: 'Penyimpanan Data Pengetahuan', - vectorSpaceTooltip: 'Dokumen dengan mode pengindeksan Kualitas Tinggi akan menggunakan sumber daya Penyimpanan Data Pengetahuan. Ketika Penyimpanan Data Pengetahuan mencapai batas, dokumen baru tidak akan diunggah.', - documentsUploadQuota: 'Kuota Unggah Dokumen', - teamMembers: 'Anggota Tim', - annotationQuota: 'Kuota Anotasi', - perMonth: 'per bulan', - triggerEvents: 'Pemicu Acara', - resetsIn: 'Diatur ulang dalam {{count,number}} hari', - }, - upgradeBtn: { - encourage: 'Tingkatkan Sekarang', - plain: 'Lihat Paket', - encourageShort: 'Upgrade', - }, - plansCommon: { - planRange: { - yearly: 'Tahunan', - monthly: 'Bulanan', - }, - priority: { - 'priority': 'Prioritas', - 'top-priority': 'Prioritas utama', - 'standard': 'Standar', - }, - supportItems: { - llmLoadingBalancing: 'Penyeimbangan Beban LLM', - communityForums: 'Forum komunitas', - agentMode: 'Mode Agen', - logoChange: 'Perubahan logo', - priorityEmail: 'Dukungan email & obrolan prioritas', - emailSupport: 'Dukungan email', - personalizedSupport: 'Dukungan yang dipersonalisasi', - bulkUpload: 'Mengunggah dokumen secara massal', - customIntegration: 'Integrasi dan dukungan khusus', - dedicatedAPISupport: 'Dukungan API khusus', - SSOAuthentication: 'Autentikasi SSO', - ragAPIRequest: 'Permintaan API RAG', - llmLoadingBalancingTooltip: 'Tambahkan beberapa kunci API ke model, secara efektif melewati batas kecepatan API.', - workflow: 'Alur Kerja', - }, - messageRequest: { - tooltip: 'Kredit pesan disediakan untuk membantu Anda mencoba berbagai model OpenAI dengan mudah di Dify. Kredit digunakan berdasarkan jenis model. Setelah habis, Anda dapat beralih ke kunci API OpenAI Anda sendiri.', - title: 'kredit pesan {{count,number}}', - titlePerMonth: '{{count,number}} kredit pesan/bulan', - }, - annotatedResponse: { - tooltip: 'Pengeditan manual dan anotasi respons memberikan kemampuan menjawab pertanyaan berkualitas tinggi yang dapat disesuaikan untuk aplikasi. (Hanya berlaku di aplikasi Chat)', - title: 'Batas Kuota Anotasi {{count,number}}', - }, - mostPopular: 'Populer', - free: 'Bebas', - freeTrialTipSuffix: 'Tidak perlu kartu kredit', - freeTrialTipPrefix: 'Daftar dan dapatkan', - month: 'bulan', - talkToSales: 'Bicaralah dengan Sales', - freeTrialTip: 'uji coba gratis 200 panggilan OpenAI.', - apiRateLimit: 'Batas Tarif API', - yearlyTip: 'Bayar selama 10 bulan, nikmati 1 tahun!', - contractOwner: 'Hubungi manajer tim', - save: 'Simpan', - self: 'Hosting Mandiri', - comparePlanAndFeatures: 'Bandingkan paket & fitur', - unavailable: 'Tidak tersedia', - support: 'Dukung', - cloud: 'Layanan Cloud', - annotationQuota: 'Kuota Anotasi', - contactSales: 'Hubungi Sales', - currentPlan: 'Rencana Saat Ini', - unlimitedApiRate: 'Tidak Ada Batas Tarif API', - priceTip: 'per ruang kerja/', - apiRateLimitTooltip: 'Batas Tarif API berlaku untuk semua permintaan yang dibuat melalui Dify API, termasuk pembuatan teks, percakapan obrolan, eksekusi alur kerja, dan pemrosesan dokumen.', - documentsTooltip: 'Kuota jumlah dokumen yang diimpor dari Sumber Data Pengetahuan.', - days: 'Hari', - vectorSpaceTooltip: 'Dokumen dengan mode pengindeksan Kualitas Tinggi akan menggunakan sumber daya Penyimpanan Data Pengetahuan. Ketika Penyimpanan Data Pengetahuan mencapai batas, dokumen baru tidak akan diunggah.', - memberAfter: 'Anggota', - year: 'tahun', - getStarted: 'Memulai', - comingSoon: 'Segera datang', - annualBilling: 'Penagihan Tahunan', - contractSales: 'Hubungi penjualan', - documentProcessingPriority: 'Pemrosesan Dokumen', - documentProcessingPriorityTip: 'Untuk prioritas pemrosesan dokumen yang lebih tinggi, silakan tingkatkan paket Anda.', - startForFree: 'Mulai Gratis', - documentsRequestQuotaTooltip: 'Menentukan jumlah total tindakan yang dapat dilakukan ruang kerja per menit dalam pangkalan pengetahuan, termasuk pembuatan, penghapusan, pembaruan, pengunggahan dokumen, modifikasi, pengarsipan, dan kueri basis pengetahuan himpunan data. Metrik ini digunakan untuk mengevaluasi performa permintaan basis pengetahuan. Misalnya, jika pengguna Sandbox melakukan 10 pengujian hit berturut-turut dalam satu menit, ruang kerja mereka akan dibatasi sementara untuk melakukan tindakan berikut selama menit berikutnya: pembuatan, penghapusan, pembaruan, dan unggahan atau modifikasi himpunan data.', - unlimited: 'Unlimited', - documentProcessingPriorityUpgrade: 'Proses lebih banyak data dengan akurasi yang lebih tinggi pada kecepatan yang lebih tinggi.', - ragAPIRequestTooltip: 'Mengacu pada jumlah panggilan API yang hanya memanggil kemampuan pemrosesan basis pengetahuan Dify.', - receiptInfo: 'Hanya pemilik tim dan admin tim yang dapat berlangganan dan melihat informasi penagihan', - customTools: 'Alat Kustom', - modelProviders: 'Mendukung OpenAI/Anthropic/Llama2/Azure OpenAI/Hugging Face/Replite', - member: 'Anggota', - startBuilding: 'Mulai Membangun', - taxTip: 'Semua harga langganan (bulanan/tahunan) belum termasuk pajak yang berlaku (misalnya, PPN, pajak penjualan).', - taxTipSecond: 'Jika wilayah Anda tidak memiliki persyaratan pajak yang berlaku, tidak akan ada pajak yang muncul saat checkout, dan Anda tidak akan dikenakan biaya tambahan apa pun selama masa langganan.', - triggerEvents: { - unlimited: 'Peristiwa Pemicu Tak Terbatas', - tooltip: 'Jumlah peristiwa yang secara otomatis memulai alur kerja melalui pemicu Plugin, Jadwal, atau Webhook.', - sandbox: '{{count,number}} Memicu Peristiwa', - professional: '{{count,number}} Pemicu Peristiwa/bulan', - }, - workflowExecution: { - priority: 'Eksekusi Alur Kerja Prioritas', - standard: 'Eksekusi Alur Kerja Standar', - faster: 'Eksekusi Alur Kerja yang Lebih Cepat', - tooltip: 'Prioritas dan kecepatan antrian eksekusi alur kerja.', - }, - startNodes: { - unlimited: 'Pemicu/alur kerja tanpa batas', - limited: 'Hingga {{count}} Pemicu/alur kerja', - }, - title: { - plans: 'rencana', - description: 'Pilih paket yang paling sesuai dengan kebutuhan tim Anda.', - }, - teamWorkspace: 'Ruang Kerja Tim {{count,number}}', - teamMember_one: 'Anggota Tim {{count,number}}', - teamMember_other: 'Anggota Tim {{count,number}}', - buildApps: 'Aplikasi {{count,number}}', - documents: '{{count,number}} Dokumen Pengetahuan', - vectorSpace: '{{size}} Penyimpanan Data Pengetahuan', - documentsRequestQuota: '{{count,number}} Permintaan Pengetahuan/menit', - apiRateLimitUnit: '{{count,number}}', - logsHistory: '{{days}} Riwayat log', - }, - plans: { - sandbox: { - name: 'Sandbox', - description: 'Uji Coba Gratis Kemampuan Inti', - for: 'Uji Coba Gratis Kemampuan Inti', - }, - professional: { - name: 'Profesional', - for: 'Untuk Pengembang Independen/Tim Kecil', - description: 'Untuk Pengembang Independen/Tim Kecil', - }, - team: { - name: 'Tim', - description: 'Untuk Tim Berukuran Menengah', - for: 'Untuk Tim Berukuran Menengah', - }, - community: { - features: ['Semua Fitur Inti Dirilis di Bawah Repositori Publik', 'Ruang Kerja Tunggal', 'Mematuhi Lisensi Sumber Terbuka Dify'], - price: 'Bebas', - for: 'Untuk Pengguna Individu, Tim Kecil, atau Proyek Non-Komersial', - name: 'Masyarakat', - description: 'Untuk Pengguna Individu, Tim Kecil, atau Proyek Non-Komersial', - btnText: 'Mulai dengan Komunitas', - includesTitle: 'Fitur Gratis:', - }, - premium: { - features: ['Keandalan yang Dikelola Sendiri oleh Berbagai Penyedia Cloud', 'Ruang Kerja Tunggal', 'Kostumisasi Logo & Merek WebApp', 'Dukungan Email & Obrolan Prioritas'], - name: 'Premi', - price: 'Scalable', - priceTip: 'Berdasarkan Cloud Marketplace', - for: 'Untuk Organisasi dan Tim Menengah', - comingSoon: 'Dukungan Microsoft Azure & Google Cloud Segera Hadir', - includesTitle: 'Semuanya dari Komunitas, ditambah:', - description: 'Untuk Organisasi dan Tim Menengah', - btnText: 'Dapatkan Premium di', - }, - enterprise: { - features: ['Solusi Penerapan Skala Besar Kelas Perusahaan', 'Otorisasi Lisensi Komersial', 'Fitur Eksklusif Perusahaan', 'Beberapa Ruang Kerja & Manajemen Perusahaan', 'SSO', 'SLA yang dinegosiasikan oleh Mitra Dify', 'Keamanan & Kontrol Lanjutan', 'Pembaruan dan Pemeliharaan oleh Dify Secara Resmi', 'Dukungan Teknis Profesional'], - includesTitle: 'Semuanya mulai dari Premium, ditambah:', - btnText: 'Hubungi Sales', - price: 'Adat', - for: 'Untuk Tim berukuran besar', - name: 'Usaha', - priceTip: 'Hanya Penagihan Tahunan', - description: 'Untuk perusahaan, memerlukan keamanan, kepatuhan, skalabilitas, kontrol, dan fitur yang lebih canggih di seluruh organisasi', - }, - }, - vectorSpace: { - fullSolution: 'Tingkatkan paket Anda untuk mendapatkan lebih banyak ruang.', - fullTip: 'Ruang Vektor penuh.', - }, - apps: { - contactUs: 'Hubungi', - fullTip2des: 'Disarankan untuk membersihkan aplikasi yang tidak aktif untuk mengosongkan penggunaan, atau hubungi kami.', - fullTip1des: 'Anda telah mencapai batas build app pada paket ini', - fullTip1: 'Tingkatkan untuk membuat lebih banyak aplikasi', - fullTip2: 'Batas paket tercapai', - }, - annotatedResponse: { - fullTipLine2: 'Anotasi lebih banyak percakapan.', - fullTipLine1: 'Tingkatkan paket Anda ke', - quotaTitle: 'Kuota Balasan Anotasi', - }, - currentPlan: 'Rencana Saat Ini', - buyPermissionDeniedTip: 'Hubungi administrator perusahaan Anda untuk berlangganan', - viewBilling: 'Mengelola penagihan dan langganan', - teamMembers: 'Anggota Tim', - triggerLimitModal: { - upgrade: 'Tingkatkan', - dismiss: 'Tutup', - usageTitle: 'PERISTIWA PEMICU', - title: 'Tingkatkan untuk membuka lebih banyak peristiwa pemicu', - description: 'Anda telah mencapai batas pemicu acara alur kerja untuk paket ini.', - }, - viewBillingTitle: 'Penagihan dan Langganan', - viewBillingDescription: 'Kelola metode pembayaran, faktur, dan perubahan langganan', - viewBillingAction: 'Kelola', - upgrade: { - uploadMultiplePages: { - title: 'Tingkatkan untuk mengunggah beberapa dokumen sekaligus', - description: 'Anda telah mencapai batas unggah — hanya satu dokumen yang dapat dipilih dan diunggah sekaligus dengan paket Anda saat ini.', - }, - uploadMultipleFiles: { - title: 'Tingkatkan untuk membuka unggahan dokumen batch', - description: 'Unggah lebih banyak dokumen sekaligus untuk menghemat waktu dan meningkatkan efisiensi.', - }, - addChunks: { - title: 'Tingkatkan untuk terus menambahkan potongan', - description: 'Anda telah mencapai batas penambahan potongan untuk paket ini.', - }, - }, -} - -export default translation diff --git a/web/i18n/id-ID/common.json b/web/i18n/id-ID/common.json new file mode 100644 index 0000000000..45150bc09e --- /dev/null +++ b/web/i18n/id-ID/common.json @@ -0,0 +1,785 @@ +{ + "theme": { + "theme": "Tema", + "light": "Terang", + "auto": "Otomatis", + "dark": "Gelap" + }, + "api": { + "success": "Keberhasilan", + "saved": "Disimpan", + "remove": "Dihapus", + "actionSuccess": "Aksi berhasil", + "create": "Dibuat", + "actionFailed": "Tindakan gagal" + }, + "operation": { + "setup": "Setup", + "download": "Mengunduh", + "getForFree": "Dapatkan gratis", + "reload": "Muat Ulang", + "lineBreak": "Baris Baru", + "learnMore": "Pelajari lebih lanjut", + "saveAndRegenerate": "Simpan & Buat Ulang Potongan Anak", + "zoomOut": "Perkecil", + "openInNewTab": "Buka di tab baru", + "viewMore": "LIHAT LEBIH BANYAK", + "selectAll": "Pilih Semua", + "in": "di", + "skip": "Lewat", + "remove": "Hapus", + "rename": "Ubah nama", + "close": "Tutup", + "ok": "OKE", + "regenerate": "Regenerasi", + "settings": "Pengaturan", + "log": "Batang", + "delete": "Menghapus", + "viewDetails": "Lihat Detail", + "view": "Lihat", + "clear": "Hapus", + "deleteApp": "Hapus Aplikasi", + "downloadSuccess": "Unduh Selesai.", + "change": "Ubah", + "params": "Parameter", + "search": "Mencari", + "copied": "Disalin", + "deSelectAll": "Batalkan pilihan Semua", + "saveAndEnable": "Simpan & Aktifkan", + "refresh": "Segarkan", + "downloadFailed": "Unduhan gagal. Silakan coba lagi nanti.", + "edit": "Mengedit", + "send": "Kirim", + "copyImage": "Salin Gambar", + "confirm": "Mengkonfirmasi", + "format": "Format", + "create": "Menciptakan", + "add": "Tambah", + "copy": "Menyalin", + "audioSourceUnavailable": "AudioSource tidak tersedia", + "submit": "Kirim", + "duplicate": "Duplikat", + "save": "Simpan", + "added": "Ditambahkan", + "more": "Lebih", + "zoomIn": "Perbesar", + "reset": "Reset", + "cancel": "Membatalkan", + "sure": "Saya yakin", + "imageCopied": "Gambar yang disalin", + "config": "Konfigurasi", + "deleteConfirmTitle": "Hapus?", + "confirmAction": "Silakan konfirmasi tindakan Anda.", + "yes": "Ya", + "no": "Tidak", + "noSearchResults": "Tidak ada {{content}} yang ditemukan", + "resetKeywords": "Atur ulang kata kunci", + "selectCount": "{{count}} Dipilih", + "searchCount": "Temukan {{count}} {{content}}", + "noSearchCount": "0 {{content}}", + "now": "Sekarang" + }, + "errorMsg": { + "urlError": "URL harus dimulai dengan http:// atau https://", + "fieldRequired": "{{field}} wajib diisi" + }, + "placeholder": { + "select": "Silakan pilih", + "input": "Silakan masuk", + "search": "Cari..." + }, + "voice": { + "language": { + "zhHans": "Cina", + "roRO": "Rumania", + "jaJP": "Jepang", + "plPL": "Polandia", + "ptBR": "Portugis", + "esES": "Spanyol", + "idID": "Indonesia", + "enUS": "Inggris", + "trTR": "Turki", + "hiIN": "Hindi", + "koKR": "Korea", + "viVN": "Vietnam", + "ukUA": "Ukraina", + "faIR": "Farsi", + "slSI": "Bahasa Slovenia", + "arTN": "Bahasa Arab Tunisia", + "itIT": "Italia", + "zhHant": "Mandarin Tradisional", + "thTH": "Thai", + "ruRU": "Rusia", + "deDE": "Jerman", + "frFR": "Prancis" + } + }, + "unit": { + "char": "karakter" + }, + "actionMsg": { + "noModification": "Tidak ada modifikasi saat ini.", + "generatedUnsuccessfully": "Dihasilkan tidak berhasil", + "modifiedUnsuccessfully": "Dimodifikasi tidak berhasil", + "modifiedSuccessfully": "Berhasil dimodifikasi", + "copySuccessfully": "Berhasil disalin", + "payCancelled": "Pembayaran dibatalkan", + "paySucceeded": "Pembayaran berhasil", + "generatedSuccessfully": "Berhasil dihasilkan" + }, + "model": { + "params": { + "temperature": "Suhu", + "max_tokensTip": "Digunakan untuk membatasi panjang maksimum balasan, dalam token. \nNilai yang lebih besar dapat membatasi ruang yang tersisa untuk kata prompt, log obrolan, dan Pengetahuan. \nDisarankan untuk menetapkannya di bawah dua pertiga\nGPT-4-1106-Preview, GPT-4-Vision-Preview Max Token (input 128K output 4K)", + "stop_sequencesTip": "Hingga empat urutan di mana API akan berhenti menghasilkan token lebih lanjut. Teks yang ditampilkan tidak akan berisi urutan berhenti.", + "frequency_penaltyTip": "Berapa banyak yang harus menghukum token baru berdasarkan frekuensi yang ada dalam teks sejauh ini.\nMengurangi kemungkinan model untuk mengulangi baris yang sama kata demi kata.", + "max_tokens": "Token maks", + "stop_sequences": "Urutan berhenti", + "frequency_penalty": "Penalti frekuensi", + "top_p": "P Teratas", + "maxTokenSettingTip": "Pengaturan token maks Anda tinggi, berpotensi membatasi ruang untuk perintah, kueri, dan data. Pertimbangkan untuk mengaturnya di bawah 2/3.", + "stop_sequencesPlaceholder": "Masukkan urutan dan tekan Tab", + "top_pTip": "Mengontrol keragaman melalui pengambilan sampel nukleus: 0,5 berarti setengah dari semua opsi berbobot kemungkinan dipertimbangkan.", + "presence_penalty": "Penalti kehadiran", + "presence_penaltyTip": "Berapa banyak yang harus menghukum token baru berdasarkan apakah mereka muncul dalam teks sejauh ini.\nMeningkatkan kemungkinan model untuk membicarakan topik baru.", + "temperatureTip": "Mengontrol keacakan: Menurunkan menghasilkan lebih sedikit penyelesaian acak. Saat suhu mendekati nol, model akan menjadi deterministik dan berulang.", + "setToCurrentModelMaxTokenTip": "Token maksimum diperbarui menjadi 80% dari token maksimum model saat ini {{maxToken}}." + }, + "tone": { + "Precise": "Tepat", + "Balanced": "Seimbang", + "Custom": "Adat", + "Creative": "Kreatif" + }, + "addMoreModel": "Buka pengaturan untuk menambahkan lebih banyak model", + "capabilities": "Kemampuan MultiModal", + "settingsLink": "Pengaturan Penyedia Model" + }, + "menus": { + "plugins": "Plugin", + "pluginsTips": "Integrasikan plugin pihak ketiga atau buat AI-Plugin yang kompatibel dengan ChatGPT.", + "datasetsTips": "SEGERA HADIR: Impor data teks Anda sendiri atau tulis data secara real-time melalui Webhook untuk peningkatan konteks LLM.", + "appDetail": "Detail Aplikasi", + "datasets": "Pengetahuan", + "account": "Rekening", + "newApp": "Aplikasi Baru", + "explore": "Menjelajahi", + "apps": "Aplikasi", + "status": "beta", + "tools": "Perkakas", + "exploreMarketplace": "Jelajahi Marketplace", + "newDataset": "Ciptakan Pengetahuan" + }, + "userProfile": { + "emailSupport": "Dukungan Email", + "helpCenter": "Docs", + "compliance": "Kepatuhan", + "community": "Masyarakat", + "roadmap": "Peta jalan", + "logout": "Keluar", + "settings": "Pengaturan", + "support": "Dukung", + "github": "GitHub", + "about": "Tentang", + "workspace": "Workspace", + "createWorkspace": "Membuat Ruang Kerja", + "contactUs": "Hubungi Kami", + "forum": "Forum" + }, + "compliance": { + "soc2Type2": "Laporan SOC 2 Tipe II", + "professionalUpgradeTooltip": "Hanya tersedia dengan paket Tim atau lebih tinggi.", + "gdpr": "GDPR DPA", + "soc2Type1": "Laporan SOC 2 Tipe I", + "sandboxUpgradeTooltip": "Hanya tersedia dengan paket Profesional atau Tim.", + "iso27001": "Sertifikasi ISO 27001:2022" + }, + "settings": { + "generalGroup": "UMUM", + "billing": "Penagihan", + "plugin": "Plugin", + "members": "Anggota", + "workplaceGroup": "WORKSPACE", + "dataSource": "Sumber Data", + "integrations": "Integrasi", + "provider": "Penyedia Model", + "language": "Bahasa", + "accountGroup": "UMUM", + "account": "Akun saya", + "apiBasedExtension": "Ekstensi API" + }, + "account": { + "changeEmail": { + "title": "Ubah Email", + "verifyNew": "Memverifikasi email baru Anda", + "content3": "Masukkan email baru dan kami akan mengirimkan kode verifikasi kepada Anda.", + "emailPlaceholder": "Masukkan email baru", + "existingEmail": "Pengguna dengan email ini sudah ada.", + "codeLabel": "Kode verifikasi", + "resendTip": "Tidak menerima kode?", + "continue": "Terus", + "newEmail": "Menyiapkan alamat email baru", + "resend": "Kirim Ulang", + "codePlaceholder": "Tempel kode 6 digit", + "emailLabel": "Email baru", + "sendVerifyCode": "Kirim kode verifikasi", + "verifyEmail": "Memverifikasi email Anda saat ini", + "unAvailableEmail": "Email ini tidak tersedia untuk sementara.", + "authTip": "Setelah email Anda diubah, akun Google atau GitHub yang ditautkan ke email lama Anda tidak akan dapat lagi masuk ke akun ini.", + "content1": "Jika Anda melanjutkan, kami akan mengirim kode verifikasi ke {{email}} untuk autentikasi ulang.", + "content2": "Email Anda saat ini adalah {{email}}. Kode verifikasi telah dikirim ke alamat email ini.", + "content4": "Kami baru saja mengirimkan kode verifikasi sementara kepada Anda ke {{email}}.", + "changeTo": "Ubah ke {{email}}", + "resendCount": "Kirim ulang dalam {{count}} detik" + }, + "account": "Rekening", + "langGeniusAccount": "Data akun", + "email": "Email", + "studio": "Belajar", + "resetPassword": "Setel ulang kata sandi", + "sendVerificationButton": "Kirim Kode Verifikasi", + "editName": "Edit Nama", + "setPassword": "Menetapkan kata sandi", + "passwordTip": "Anda dapat mengatur kata sandi permanen jika tidak ingin menggunakan kode login sementara", + "confirmPassword": "Konfirmasi kata sandi", + "delete": "Hapus Akun", + "verificationPlaceholder": "Tempel kode 6 digit", + "editWorkspaceInfo": "Edit Info Ruang Kerja", + "currentPassword": "Kata sandi saat ini", + "newPassword": "Kata sandi baru", + "name": "Nama", + "notEqual": "Dua kata sandi berbeda.", + "avatar": "Avatar", + "myAccount": "Akun Saya", + "deletePlaceholder": "Silakan masukkan email Anda", + "permanentlyDeleteButton": "Hapus Akun Secara Permanen", + "feedbackPlaceholder": "Fakultatif", + "deletePrivacyLink": "Kebijakan Privasi.", + "feedbackTitle": "Umpan balik", + "workspaceName": "Nama Ruang Kerja", + "deletePrivacyLinkTip": "Untuk informasi lebih lanjut tentang bagaimana kami menangani data Anda, silakan lihat", + "deleteLabel": "Untuk mengonfirmasi, silakan ketik email Anda di bawah ini", + "feedbackLabel": "Beri tahu kami mengapa Anda menghapus akun Anda?", + "langGeniusAccountTip": "Data pengguna akun Anda.", + "deleteSuccessTip": "Akun Anda membutuhkan waktu untuk menyelesaikan penghapusan. Kami akan mengirimkan email kepada Anda setelah semuanya selesai.", + "verificationLabel": "Kode Verifikasi", + "password": "Kata sandi", + "deleteTip": "Harap dicatat, setelah dikonfirmasi, sebagai Pemilik Ruang Kerja apa pun, ruang kerja Anda akan dijadwalkan dalam antrean untuk penghapusan permanen, dan semua data pengguna Anda akan diantri untuk penghapusan permanen.", + "workspaceIcon": "Ikon Ruang Kerja", + "showAppLength": "Tampilkan {{length}} aplikasi" + }, + "members": { + "transferModal": { + "warningTip": "Anda akan menjadi anggota admin, dan pemilik baru akan memiliki kendali penuh.", + "codePlaceholder": "Tempel kode 6 digit", + "title": "Mentransfer kepemilikan ruang kerja", + "codeLabel": "Kode verifikasi", + "sendVerifyCode": "Kirim kode verifikasi", + "continue": "Terus", + "transfer": "Mentransfer kepemilikan ruang kerja", + "resendTip": "Tidak menerima kode?", + "verifyContent2": "Kami akan mengirimkan kode verifikasi sementara ke email ini untuk autentikasi ulang.", + "verifyEmail": "Memverifikasi email Anda saat ini", + "transferLabel": "Mentransfer kepemilikan ruang kerja ke", + "resend": "Kirim Ulang", + "transferPlaceholder": "Pilih anggota ruang kerja...", + "warning": "Anda akan mentransfer kepemilikan “{{workspace}}”. Ini akan berlaku segera dan tidak dapat dibatalkan.", + "sendTip": "Jika Anda melanjutkan, kami akan mengirim kode verifikasi ke {{email}} untuk autentikasi ulang.", + "verifyContent": "Email Anda saat ini adalah {{email}}.", + "resendCount": "Kirim ulang dalam {{count}} detik" + }, + "lastActive": "TERAKHIR AKTIF", + "owner": "Pemilik", + "normal": "Biasa", + "team": "Tim", + "adminTip": "Dapat membangun aplikasi & mengelola pengaturan tim", + "emailNotSetup": "Server email tidak disiapkan, sehingga email undangan tidak dapat dikirim. Harap beri tahu pengguna tentang tautan undangan yang akan dikeluarkan setelah undangan.", + "editor": "Editor", + "setAdmin": "Tetapkan sebagai administrator", + "failedInvitationEmails": "Pengguna di bawah ini tidak berhasil diundang", + "emailInvalid": "Format Email Tidak Valid", + "setEditor": "Tetapkan sebagai editor", + "datasetOperatorTip": "Hanya dapat mengelola basis pengetahuan", + "builderTip": "Dapat membangun & mengedit aplikasi sendiri", + "datasetOperator": "Admin Pengetahuan", + "pending": "Tertunda...", + "setBuilder": "Tetapkan sebagai pembuat", + "invitationSentTip": "Undangan terkirim, dan mereka dapat masuk ke Dify untuk mengakses data tim Anda.", + "role": "PERAN", + "ok": "OKE", + "setMember": "Atur ke anggota biasa", + "deleteMember": "Hapus Anggota", + "name": "NAMA", + "invite": "Tambah", + "inviteTeamMemberTip": "Mereka dapat mengakses data tim Anda langsung setelah masuk.", + "transferOwnership": "Pengalihan Kepemilikan", + "sendInvite": "Kirim Undangan", + "email": "Email", + "removeFromTeamTip": "Akan menghapus akses tim", + "invitationLink": "Tautan Undangan", + "you": "(Anda)", + "removeFromTeam": "Hapus dari tim", + "emailPlaceholder": "Silakan masukkan email", + "inviteTeamMember": "Tambahkan anggota tim", + "builder": "Pembangun", + "disInvite": "Batalkan undangan", + "invitationSent": "Undangan terkirim", + "editorTip": "Dapat membangun & mengedit aplikasi", + "admin": "Admin", + "normalTip": "Hanya dapat menggunakan aplikasi, tidak dapat membuat aplikasi", + "invitedAsRole": "Diundang sebagai pengguna {{role}}" + }, + "feedback": { + "subtitle": "Tolong beri tahu kami apa yang salah dengan tanggapan ini", + "placeholder": "Tolong jelaskan apa yang salah atau bagaimana kami dapat meningkatkan...", + "content": "Konten Umpan Balik", + "title": "Berikan Umpan Balik" + }, + "integrations": { + "github": "GitHub", + "connected": "Terhubung", + "connect": "Sambung", + "githubAccount": "Masuk dengan akun GitHub", + "googleAccount": "Masuk dengan akun Google", + "google": "Google" + }, + "language": { + "displayLanguage": "Bahasa Tampilan", + "timezone": "Zona Waktu" + }, + "provider": { + "azure": { + "helpTip": "Pelajari Azure OpenAI Service", + "apiKey": "Kunci API", + "apiBase": "Basis API", + "apiKeyPlaceholder": "Masukkan kunci API Anda di sini", + "apiBasePlaceholder": "URL Dasar API Titik Akhir Azure OpenAI Anda." + }, + "openaiHosted": { + "desc": "Layanan hosting OpenAI yang disediakan oleh Dify memungkinkan Anda menggunakan model seperti GPT-3.5. Sebelum kuota uji coba habis, Anda harus menyiapkan penyedia model lain.", + "callTimes": "Waktu panggilan", + "useYourModel": "Saat ini menggunakan Penyedia Model sendiri.", + "usedUp": "Kuota percobaan habis. Tambahkan Penyedia Model sendiri.", + "openaiHosted": "OpenAI yang Dihosting", + "close": "Tutup", + "exhausted": "KUOTA HABIS", + "onTrial": "SEDANG DIADILI" + }, + "anthropicHosted": { + "trialQuotaTip": "Kuota uji coba Anthropic Anda akan berakhir pada 17/03/2025 dan tidak akan tersedia lagi setelahnya. Silakan manfaatkan tepat waktu.", + "callTimes": "Waktu panggilan", + "onTrial": "SEDANG DIADILI", + "anthropicHosted": "Claude Antropis", + "useYourModel": "Saat ini menggunakan Penyedia Model sendiri.", + "desc": "Model yang kuat, yang unggul dalam berbagai tugas mulai dari dialog canggih dan pembuatan konten kreatif hingga instruksi terperinci.", + "close": "Tutup", + "exhausted": "KUOTA HABIS", + "usedUp": "Kuota percobaan habis. Tambahkan Penyedia Model sendiri." + }, + "anthropic": { + "keyFrom": "Dapatkan kunci API Anda dari Anthropic", + "enableTip": "Untuk mengaktifkan model Anthropic, Anda perlu mengikat ke OpenAI atau Azure OpenAI Service terlebih dahulu.", + "using": "Kemampuan penyematan menggunakan", + "notEnabled": "Tidak diaktifkan" + }, + "encrypted": { + "front": "API KEY Anda akan dienkripsi dan disimpan menggunakan", + "back": "Teknologi." + }, + "validatedError": "Validasi gagal:", + "invalidApiKey": "Kunci API tidak valid", + "apiKeyExceedBill": "API KEY ini tidak memiliki kuota yang tersedia, silakan baca", + "apiKey": "Kunci API", + "saveFailed": "Menyimpan kunci api gagal", + "editKey": "Mengedit", + "addKey": "Tambahkan Kunci", + "invalidKey": "Kunci API OpenAI tidak valid", + "enterYourKey": "Masukkan kunci API Anda di sini", + "comingSoon": "Segera datang", + "validating": "Memvalidasi kunci..." + }, + "modelProvider": { + "systemReasoningModel": { + "tip": "Atur model inferensi default yang akan digunakan untuk membuat aplikasi, serta fitur seperti pembuatan nama dialog dan saran pertanyaan berikutnya juga akan menggunakan model inferensi default.", + "key": "Model Penalaran Sistem" + }, + "embeddingModel": { + "tip": "Atur model default untuk pemrosesan penyematan dokumen Pengetahuan, baik pengambilan maupun impor Pengetahuan menggunakan model Penyematan ini untuk pemrosesan vektorisasi. Pengalihan akan menyebabkan dimensi vektor antara Pengetahuan yang diimpor dan pertanyaan menjadi tidak konsisten, mengakibatkan kegagalan pengambilan. Untuk menghindari kegagalan pengambilan, jangan mengganti model ini sesuka hati.", + "required": "Model Penyematan diperlukan", + "key": "Menyematkan Model" + }, + "speechToTextModel": { + "tip": "Atur model default untuk input ucapan-ke-teks dalam percakapan.", + "key": "Model Ucapan-ke-Teks" + }, + "ttsModel": { + "tip": "Atur model default untuk input teks-ke-ucapan dalam percakapan.", + "key": "Model Teks-ke-Ucapan" + }, + "rerankModel": { + "key": "Peringkat ulang Model", + "tip": "Model rerank akan menyusun ulang daftar dokumen kandidat berdasarkan kecocokan semantik dengan kueri pengguna, meningkatkan hasil peringkat semantik" + }, + "selector": { + "rerankTip": "Silakan atur model Rerank", + "emptyTip": "Tidak ada model yang tersedia", + "emptySetting": "Silakan buka pengaturan untuk mengonfigurasi", + "tip": "Model ini telah dihapus. Silakan tambahkan model atau pilih model lain." + }, + "card": { + "onTrial": "Sedang Diadili", + "paid": "Dibayar", + "buyQuota": "Beli Kuota", + "removeKey": "Menghapus Kunci API", + "tokens": "Token", + "callTimes": "Waktu panggilan", + "priorityUse": "Penggunaan prioritas", + "quota": "KUOTA", + "tip": "Prioritas akan diberikan pada kuota yang dibayarkan. Kuota Trial akan digunakan setelah kuota yang dibayarkan habis.", + "quotaExhausted": "Kuota habis" + }, + "item": { + "freeQuota": "KUOTA GRATIS", + "deleteDesc": "{{modelName}} sedang digunakan sebagai model penalaran sistem. Beberapa fungsi tidak akan tersedia setelah dihapus. Harap konfirmasi." + }, + "encrypted": { + "back": "Teknologi.", + "front": "API KEY Anda akan dienkripsi dan disimpan menggunakan" + }, + "freeQuota": { + "howToEarn": "Cara mendapatkan penghasilan" + }, + "auth": { + "apiKeyModal": { + "addModel": "Tambahkan model", + "desc": "Setelah mengonfigurasi kredensial, semua anggota dalam ruang kerja dapat menggunakan model ini saat mengatur aplikasi.", + "title": "Konfigurasi Otorisasi Kunci API" + }, + "addCredential": "Tambahkan kredensial", + "authorizationError": "Kesalahan otorisasi", + "addApiKey": "Menambahkan Kunci API", + "modelCredentials": "Kredensial model", + "authRemoved": "Autentikasi dihapus", + "configModel": "Model konfigurasi", + "providerManagedTip": "Konfigurasi saat ini dihosting oleh penyedia.", + "specifyModelCredentialTip": "Gunakan kredensial model yang dikonfigurasi.", + "apiKeys": "Kunci API", + "providerManaged": "Penyedia dikelola", + "addNewModel": "Tambahkan model baru", + "unAuthorized": "Sah", + "configLoadBalancing": "Penyeimbangan Beban Konfigurasi", + "addModelCredential": "Menambahkan kredensial model", + "specifyModelCredential": "Tentukan kredensial model", + "addNewModelCredential": "Menambahkan kredensial model baru", + "modelCredential": "Kredensial model", + "addModel": "Tambahkan model", + "removeModel": "Hapus Model", + "manageCredentials": "Kelola Kredensial", + "selectModelCredential": "Pilih kredensial model", + "editModelCredential": "Mengedit kredensial model", + "customModelCredentials": "Kredensial Model Kustom", + "customModelCredentialsDeleteTip": "Kredensial sedang digunakan dan tidak dapat dihapus" + }, + "systemModelSettingsLink": "Mengapa perlu menyiapkan model sistem?", + "apiKey": "API-KUNCI", + "selectModel": "Pilih model Anda", + "showMoreModelProvider": "Tampilkan lebih banyak penyedia model", + "systemModelSettings": "Pengaturan Model Sistem", + "addModel": "Tambahkan Model", + "quota": "Kuota", + "setupModelFirst": "Silakan atur model Anda terlebih dahulu", + "loadBalancingDescription": "Konfigurasikan beberapa kredensial untuk model dan panggil secara otomatis.", + "loadBalancingInfo": "Secara default, penyeimbangan beban menggunakan strategi Round-robin. Jika pembatasan kecepatan dipicu, periode cooldown 1 menit akan diterapkan.", + "apiKeyStatusNormal": "Status APIKey normal", + "credits": "Kredit Pesan", + "confirmDelete": "Mengkonfirmasi penghapusan?", + "addMoreModelProvider": "TAMBAHKAN PENYEDIA MODEL LAINNYA", + "collapse": "Roboh", + "providerManaged": "Penyedia dikelola", + "parameters": "PARAMETER", + "notConfigured": "Model sistem belum sepenuhnya dikonfigurasi", + "priorityUsing": "Prioritaskan penggunaan", + "model": "Pola", + "buyQuota": "Beli Kuota", + "configureTip": "Menyiapkan api-key atau menambahkan model untuk digunakan", + "emptyProviderTip": "Silakan instal penyedia model terlebih dahulu.", + "loadBalancing": "Penyeimbangan beban", + "loadPresets": "Muat Preset", + "loadBalancingHeadline": "Penyeimbangan Beban", + "editConfig": "Edit Konfigurasi", + "discoverMore": "Temukan lebih lanjut di", + "modelAndParameters": "Model dan Parameter", + "upgradeForLoadBalancing": "Tingkatkan paket Anda untuk mengaktifkan Penyeimbangan Beban.", + "providerManagedDescription": "Gunakan satu set kredensial yang disediakan oleh penyedia model.", + "showModels": "Tampilkan Model", + "deprecated": "Usang", + "models": "Model", + "configLoadBalancing": "Penyeimbangan Beban Konfigurasi", + "emptyProviderTitle": "Penyedia model tidak disiapkan", + "loadBalancingLeastKeyWarning": "Untuk mengaktifkan penyeimbangan beban, setidaknya 2 tombol harus diaktifkan.", + "toBeConfigured": "Untuk dikonfigurasi", + "addApiKey": "Menambahkan kunci API Anda", + "modelHasBeenDeprecated": "Model ini tidak digunakan lagi", + "searchModel": "Model pencarian", + "addConfig": "Tambahkan Konfigurasi", + "invalidApiKey": "Kunci API tidak valid", + "defaultConfig": "Konfigurasi Default", + "config": "Konfigurasi", + "quotaTip": "Token gratis yang masih tersedia", + "installProvider": "Menginstal penyedia model", + "callTimes": "Waktu panggilan", + "getFreeTokens": "Dapatkan Token gratis", + "parametersInvalidRemoved": "Beberapa parameter tidak valid dan telah dihapus", + "installDataSourceProvider": "Pasang penyedia sumber data", + "noModelFound": "Tidak ditemukan model untuk {{model}}", + "modelsNum": "Model {{num}}", + "showModelsNum": "Tampilkan {{num}} Model", + "featureSupported": "{{feature}} didukung", + "apiKeyRateLimit": "Batas kecepatan tercapai, tersedia setelah {{seconds}} detik" + }, + "dataSource": { + "notion": { + "selector": { + "searchPages": "Halaman pencarian...", + "addPages": "Tambahkan halaman", + "pageSelected": "Halaman yang Dipilih", + "preview": "PRATAYANG", + "noSearchResult": "Tidak ada hasil pencarian" + }, + "integratedAlert": "Notion terintegrasi melalui kredensial internal, tidak perlu mengotorisasi ulang.", + "disconnected": "Terputus", + "remove": "Hapus", + "addWorkspace": "Menambahkan ruang kerja", + "description": "Menggunakan Notion sebagai sumber data untuk Pengetahuan.", + "connected": "Terhubung", + "pagesAuthorized": "Halaman yang disahkan", + "changeAuthorizedPages": "Mengubah halaman resmi", + "title": "Notion", + "sync": "Sync", + "connectedWorkspace": "Ruang kerja yang terhubung" + }, + "website": { + "title": "Situs web", + "with": "Dengan", + "active": "Aktif", + "inactive": "Aktif", + "description": "Impor konten dari situs menggunakan perayap web.", + "configuredCrawlers": "Perayap yang dikonfigurasi" + }, + "connect": "Sambung", + "configure": "Mengkonfigurasi", + "add": "Menambahkan sumber data" + }, + "plugin": { + "serpapi": { + "apiKey": "Kunci API", + "apiKeyPlaceholder": "Masukkan kunci API Anda", + "keyFrom": "Dapatkan kunci SerpAPI Anda dari Halaman Akun SerpAPI" + } + }, + "apiBasedExtension": { + "selector": { + "title": "Ekstensi API", + "placeholder": "Silakan pilih ekstensi API", + "manage": "Kelola Ekstensi API" + }, + "modal": { + "name": { + "title": "Nama", + "placeholder": "Silakan masukkan nama" + }, + "apiEndpoint": { + "title": "Titik Akhir API", + "placeholder": "Silakan masukkan titik akhir API" + }, + "apiKey": { + "title": "Kunci API", + "lengthError": "Panjang kunci API tidak boleh kurang dari 5 karakter", + "placeholder": "Silakan masukkan kunci API" + }, + "editTitle": "Edit Ekstensi API", + "title": "Tambahkan Ekstensi API" + }, + "link": "Pelajari cara mengembangkan Ekstensi API Anda sendiri.", + "title": "Ekstensi API menyediakan manajemen API terpusat, menyederhanakan konfigurasi agar mudah digunakan di seluruh aplikasi Dify.", + "type": "Jenis", + "add": "Tambahkan Ekstensi API" + }, + "about": { + "changeLog": "Log perubahan", + "updateNow": "Perbarui sekarang", + "nowAvailable": "Dify {{version}} kini tersedia.", + "latestAvailable": "Dify {{version}} adalah versi terbaru yang tersedia." + }, + "appMenus": { + "logs": "Log", + "overview": "Pemantauan", + "logAndAnn": "Log & Anotasi", + "promptEng": "Mengatur", + "apiAccess": "Akses API" + }, + "environment": { + "development": "PENGEMBANGAN", + "testing": "PENGUJIAN" + }, + "appModes": { + "completionApp": "Pembuat Teks", + "chatApp": "Aplikasi Obrolan" + }, + "datasetMenus": { + "hitTesting": "Pengujian Pengambilan", + "relatedApp": "Aplikasi tertaut", + "emptyTip": "Pengetahuan ini belum terintegrasi dalam aplikasi apa pun. Silakan lihat dokumen untuk panduan.", + "documents": "Dokumen", + "settings": "Pengaturan", + "noRelatedApp": "Tidak ada aplikasi yang ditautkan", + "viewDoc": "Lihat dokumentasi", + "pipeline": "Pipa" + }, + "voiceInput": { + "speaking": "Bicaralah sekarang...", + "notAllow": "mikrofon tidak diizinkan", + "converting": "Mengonversi ke teks..." + }, + "modelName": { + "claude-2": "Claude-2", + "gpt-3.5-turbo": "GPT-3.5-Turbo", + "gpt-4": "GPT-4", + "whisper-1": "Whisper-1", + "text-davinci-003": "Teks-Davinci-003", + "gpt-4-32k": "GPT-4-32K", + "gpt-3.5-turbo-16k": "GPT-3.5-Turbo-16K", + "claude-instant-1": "Claude-Instan", + "text-embedding-ada-002": "Penyematan Teks-Ada-002" + }, + "chat": { + "citation": { + "linkToDataset": "Tautan ke Pengetahuan", + "characters": "Karakter:", + "vectorHash": "Hash vektor:", + "hitScore": "Skor Pengambilan:", + "title": "KUTIPAN", + "hitCount": "Jumlah pengambilan:" + }, + "resend": "Kirim Ulang", + "conversationName": "Nama percakapan", + "thinking": "Sedang berpikir...", + "conversationNameCanNotEmpty": "Nama percakapan diperlukan", + "thought": "Pikiran", + "renameConversation": "Ganti Nama Percakapan", + "conversationNamePlaceholder": "Silakan masukkan nama percakapan", + "inputPlaceholder": "Bicaralah dengan {{botName}}" + }, + "promptEditor": { + "context": { + "item": { + "title": "Konteks", + "desc": "Sisipkan templat konteks" + }, + "modal": { + "footer": "Anda dapat mengelola konteks di bagian Konteks di bawah.", + "add": "Tambahkan Konteks", + "title": "{{num}} Pengetahuan dalam Konteks" + } + }, + "history": { + "item": { + "title": "Riwayat Percakapan", + "desc": "Menyisipkan templat pesan historis" + }, + "modal": { + "edit": "Mengedit Nama Peran Percakapan", + "title": "CONTOH", + "user": "Halo", + "assistant": "Halo! Bagaimana saya dapat membantu Anda hari ini?" + } + }, + "variable": { + "item": { + "title": "Variabel & Alat Eksternal", + "desc": "Sisipkan Variabel & Alat Eksternal" + }, + "outputToolDisabledItem": { + "desc": "Sisipkan Variabel", + "title": "Variabel" + }, + "modal": { + "addTool": "Alat baru", + "add": "Variabel baru" + } + }, + "query": { + "item": { + "desc": "Menyisipkan templat kueri pengguna", + "title": "Kueri" + } + }, + "placeholder": "Tulis kata prompt Anda di sini, masukkan '{' untuk menyisipkan variabel, masukkan '/' untuk menyisipkan blok konten prompt", + "existed": "Sudah ada di prompt" + }, + "imageUploader": { + "pasteImageLink": "Tempel tautan gambar", + "uploadFromComputer": "Unggah dari Komputer", + "uploadFromComputerUploadError": "Unggahan gambar gagal, silakan unggah lagi.", + "imageUpload": "Unggah Gambar", + "uploadFromComputerReadError": "Pembacaan gambar gagal, silakan coba lagi.", + "pasteImageLinkInvalid": "Tautan gambar tidak valid", + "pasteImageLinkInputPlaceholder": "Tempel tautan gambar di sini", + "uploadFromComputerLimit": "Unggah gambar tidak boleh lebih dari {{size}} MB" + }, + "fileUploader": { + "fileExtensionNotSupport": "Ekstensi file tidak didukung", + "uploadFromComputer": "Unggahan lokal", + "pasteFileLink": "Tempel tautan file", + "uploadFromComputerUploadError": "Unggahan file gagal, silakan unggah lagi.", + "pasteFileLinkInvalid": "Tautan file tidak valid", + "pasteFileLinkInputPlaceholder": "Masukkan URL...", + "uploadFromComputerReadError": "Pembacaan file gagal, silakan coba lagi.", + "fileExtensionBlocked": "Tipe file ini diblokir karena alasan keamanan", + "uploadFromComputerLimit": "Unggahan {{type}} tidak boleh melebihi {{size}}", + "uploadDisabled": "Unggah file dinonaktifkan" + }, + "tag": { + "noTag": "Tidak ada tag", + "manageTags": "Kelola Tag", + "created": "Tag berhasil dibuat", + "delete": "Hapus tag", + "editTag": "Edit tag", + "addTag": "Tambahkan tag", + "create": "Menciptakan", + "addNew": "Tambahkan tag baru", + "failed": "Pembuatan tag gagal", + "selectorPlaceholder": "Ketik untuk mencari atau membuat", + "deleteTip": "Tag sedang digunakan, hapus?", + "placeholder": "Semua Tag", + "noTagYet": "Belum ada tag" + }, + "license": { + "unlimited": "Unlimited", + "expiring": "Kedaluwarsa dalam satu hari", + "expiring_plural": "Kedaluwarsa dalam {{count}} hari" + }, + "pagination": { + "perPage": "Item per halaman" + }, + "avatar": { + "deleteTitle": "Hapus Avatar", + "deleteDescription": "Apakah Anda yakin ingin menghapus gambar profil Anda? Akun Anda akan menggunakan avatar awal default." + }, + "imageInput": { + "browse": "Telusuri", + "supportedFormats": "Mendukung PNG, JPG, JPEG, WEBP dan GIF", + "dropImageHere": "Letakkan gambar Anda di sini, atau" + }, + "you": "Kamu", + "label": { + "optional": "(opsional)" + }, + "noData": "Tidak ada data", + "dynamicSelect": { + "error": "Gagal memuat opsi", + "noData": "Tidak ada opsi yang tersedia", + "loading": "Memuat opsi...", + "selected": "{{count}} dipilih" + } +} diff --git a/web/i18n/id-ID/common.ts b/web/i18n/id-ID/common.ts deleted file mode 100644 index 4cce24e76a..0000000000 --- a/web/i18n/id-ID/common.ts +++ /dev/null @@ -1,787 +0,0 @@ -const translation = { - theme: { - theme: 'Tema', - light: 'Terang', - auto: 'Otomatis', - dark: 'Gelap', - }, - api: { - success: 'Keberhasilan', - saved: 'Disimpan', - remove: 'Dihapus', - actionSuccess: 'Aksi berhasil', - create: 'Dibuat', - actionFailed: 'Tindakan gagal', - }, - operation: { - setup: 'Setup', - download: 'Mengunduh', - getForFree: 'Dapatkan gratis', - reload: 'Muat Ulang', - lineBreak: 'Baris Baru', - learnMore: 'Pelajari lebih lanjut', - saveAndRegenerate: 'Simpan & Buat Ulang Potongan Anak', - zoomOut: 'Perkecil', - openInNewTab: 'Buka di tab baru', - viewMore: 'LIHAT LEBIH BANYAK', - selectAll: 'Pilih Semua', - in: 'di', - skip: 'Lewat', - remove: 'Hapus', - rename: 'Ubah nama', - close: 'Tutup', - ok: 'OKE', - regenerate: 'Regenerasi', - settings: 'Pengaturan', - log: 'Batang', - delete: 'Menghapus', - viewDetails: 'Lihat Detail', - view: 'Lihat', - clear: 'Hapus', - deleteApp: 'Hapus Aplikasi', - downloadSuccess: 'Unduh Selesai.', - change: 'Ubah', - params: 'Parameter', - search: 'Mencari', - copied: 'Disalin', - deSelectAll: 'Batalkan pilihan Semua', - saveAndEnable: 'Simpan & Aktifkan', - refresh: 'Segarkan', - downloadFailed: 'Unduhan gagal. Silakan coba lagi nanti.', - edit: 'Mengedit', - send: 'Kirim', - copyImage: 'Salin Gambar', - confirm: 'Mengkonfirmasi', - format: 'Format', - create: 'Menciptakan', - add: 'Tambah', - copy: 'Menyalin', - audioSourceUnavailable: 'AudioSource tidak tersedia', - submit: 'Kirim', - duplicate: 'Duplikat', - save: 'Simpan', - added: 'Ditambahkan', - more: 'Lebih', - zoomIn: 'Perbesar', - reset: 'Reset', - cancel: 'Membatalkan', - sure: 'Saya yakin', - imageCopied: 'Gambar yang disalin', - config: 'Konfigurasi', - deleteConfirmTitle: 'Hapus?', - confirmAction: 'Silakan konfirmasi tindakan Anda.', - yes: 'Ya', - no: 'Tidak', - noSearchResults: 'Tidak ada {{content}} yang ditemukan', - resetKeywords: 'Atur ulang kata kunci', - selectCount: '{{count}} Dipilih', - searchCount: 'Temukan {{count}} {{content}}', - noSearchCount: '0 {{content}}', - now: 'Sekarang', - }, - errorMsg: { - urlError: 'URL harus dimulai dengan http:// atau https://', - fieldRequired: '{{field}} wajib diisi', - }, - placeholder: { - select: 'Silakan pilih', - input: 'Silakan masuk', - search: 'Cari...', - }, - voice: { - language: { - zhHans: 'Cina', - roRO: 'Rumania', - jaJP: 'Jepang', - plPL: 'Polandia', - ptBR: 'Portugis', - esES: 'Spanyol', - idID: 'Indonesia', - enUS: 'Inggris', - trTR: 'Turki', - hiIN: 'Hindi', - koKR: 'Korea', - viVN: 'Vietnam', - ukUA: 'Ukraina', - faIR: 'Farsi', - slSI: 'Bahasa Slovenia', - arTN: 'Bahasa Arab Tunisia', - itIT: 'Italia', - zhHant: 'Mandarin Tradisional', - thTH: 'Thai', - ruRU: 'Rusia', - deDE: 'Jerman', - frFR: 'Prancis', - }, - }, - unit: { - char: 'karakter', - }, - actionMsg: { - noModification: 'Tidak ada modifikasi saat ini.', - generatedUnsuccessfully: 'Dihasilkan tidak berhasil', - modifiedUnsuccessfully: 'Dimodifikasi tidak berhasil', - modifiedSuccessfully: 'Berhasil dimodifikasi', - copySuccessfully: 'Berhasil disalin', - payCancelled: 'Pembayaran dibatalkan', - paySucceeded: 'Pembayaran berhasil', - generatedSuccessfully: 'Berhasil dihasilkan', - }, - model: { - params: { - temperature: 'Suhu', - max_tokensTip: 'Digunakan untuk membatasi panjang maksimum balasan, dalam token. \nNilai yang lebih besar dapat membatasi ruang yang tersisa untuk kata prompt, log obrolan, dan Pengetahuan. \nDisarankan untuk menetapkannya di bawah dua pertiga\nGPT-4-1106-Preview, GPT-4-Vision-Preview Max Token (input 128K output 4K)', - stop_sequencesTip: 'Hingga empat urutan di mana API akan berhenti menghasilkan token lebih lanjut. Teks yang ditampilkan tidak akan berisi urutan berhenti.', - frequency_penaltyTip: 'Berapa banyak yang harus menghukum token baru berdasarkan frekuensi yang ada dalam teks sejauh ini.\nMengurangi kemungkinan model untuk mengulangi baris yang sama kata demi kata.', - max_tokens: 'Token maks', - stop_sequences: 'Urutan berhenti', - frequency_penalty: 'Penalti frekuensi', - top_p: 'P Teratas', - maxTokenSettingTip: 'Pengaturan token maks Anda tinggi, berpotensi membatasi ruang untuk perintah, kueri, dan data. Pertimbangkan untuk mengaturnya di bawah 2/3.', - stop_sequencesPlaceholder: 'Masukkan urutan dan tekan Tab', - top_pTip: 'Mengontrol keragaman melalui pengambilan sampel nukleus: 0,5 berarti setengah dari semua opsi berbobot kemungkinan dipertimbangkan.', - presence_penalty: 'Penalti kehadiran', - presence_penaltyTip: 'Berapa banyak yang harus menghukum token baru berdasarkan apakah mereka muncul dalam teks sejauh ini.\nMeningkatkan kemungkinan model untuk membicarakan topik baru.', - temperatureTip: 'Mengontrol keacakan: Menurunkan menghasilkan lebih sedikit penyelesaian acak. Saat suhu mendekati nol, model akan menjadi deterministik dan berulang.', - setToCurrentModelMaxTokenTip: 'Token maksimum diperbarui menjadi 80% dari token maksimum model saat ini {{maxToken}}.', - }, - tone: { - Precise: 'Tepat', - Balanced: 'Seimbang', - Custom: 'Adat', - Creative: 'Kreatif', - }, - addMoreModel: 'Buka pengaturan untuk menambahkan lebih banyak model', - capabilities: 'Kemampuan MultiModal', - settingsLink: 'Pengaturan Penyedia Model', - }, - menus: { - plugins: 'Plugin', - pluginsTips: 'Integrasikan plugin pihak ketiga atau buat AI-Plugin yang kompatibel dengan ChatGPT.', - datasetsTips: 'SEGERA HADIR: Impor data teks Anda sendiri atau tulis data secara real-time melalui Webhook untuk peningkatan konteks LLM.', - appDetail: 'Detail Aplikasi', - datasets: 'Pengetahuan', - account: 'Rekening', - newApp: 'Aplikasi Baru', - explore: 'Menjelajahi', - apps: 'Aplikasi', - status: 'beta', - tools: 'Perkakas', - exploreMarketplace: 'Jelajahi Marketplace', - newDataset: 'Ciptakan Pengetahuan', - }, - userProfile: { - emailSupport: 'Dukungan Email', - helpCenter: 'Docs', - compliance: 'Kepatuhan', - community: 'Masyarakat', - roadmap: 'Peta jalan', - logout: 'Keluar', - settings: 'Pengaturan', - support: 'Dukung', - github: 'GitHub', - about: 'Tentang', - workspace: 'Workspace', - createWorkspace: 'Membuat Ruang Kerja', - contactUs: 'Hubungi Kami', - forum: 'Forum', - }, - compliance: { - soc2Type2: 'Laporan SOC 2 Tipe II', - professionalUpgradeTooltip: 'Hanya tersedia dengan paket Tim atau lebih tinggi.', - gdpr: 'GDPR DPA', - soc2Type1: 'Laporan SOC 2 Tipe I', - sandboxUpgradeTooltip: 'Hanya tersedia dengan paket Profesional atau Tim.', - iso27001: 'Sertifikasi ISO 27001:2022', - }, - settings: { - generalGroup: 'UMUM', - billing: 'Penagihan', - plugin: 'Plugin', - members: 'Anggota', - workplaceGroup: 'WORKSPACE', - dataSource: 'Sumber Data', - integrations: 'Integrasi', - provider: 'Penyedia Model', - language: 'Bahasa', - accountGroup: 'UMUM', - account: 'Akun saya', - apiBasedExtension: 'Ekstensi API', - }, - account: { - changeEmail: { - title: 'Ubah Email', - verifyNew: 'Memverifikasi email baru Anda', - content3: 'Masukkan email baru dan kami akan mengirimkan kode verifikasi kepada Anda.', - emailPlaceholder: 'Masukkan email baru', - existingEmail: 'Pengguna dengan email ini sudah ada.', - codeLabel: 'Kode verifikasi', - resendTip: 'Tidak menerima kode?', - continue: 'Terus', - newEmail: 'Menyiapkan alamat email baru', - resend: 'Kirim Ulang', - codePlaceholder: 'Tempel kode 6 digit', - emailLabel: 'Email baru', - sendVerifyCode: 'Kirim kode verifikasi', - verifyEmail: 'Memverifikasi email Anda saat ini', - unAvailableEmail: 'Email ini tidak tersedia untuk sementara.', - authTip: 'Setelah email Anda diubah, akun Google atau GitHub yang ditautkan ke email lama Anda tidak akan dapat lagi masuk ke akun ini.', - content1: 'Jika Anda melanjutkan, kami akan mengirim kode verifikasi ke {{email}} untuk autentikasi ulang.', - content2: 'Email Anda saat ini adalah {{email}}. Kode verifikasi telah dikirim ke alamat email ini.', - content4: 'Kami baru saja mengirimkan kode verifikasi sementara kepada Anda ke {{email}}.', - changeTo: 'Ubah ke {{email}}', - resendCount: 'Kirim ulang dalam {{count}} detik', - }, - account: 'Rekening', - langGeniusAccount: 'Data akun', - email: 'Email', - studio: 'Belajar', - resetPassword: 'Setel ulang kata sandi', - sendVerificationButton: 'Kirim Kode Verifikasi', - editName: 'Edit Nama', - setPassword: 'Menetapkan kata sandi', - passwordTip: 'Anda dapat mengatur kata sandi permanen jika tidak ingin menggunakan kode login sementara', - confirmPassword: 'Konfirmasi kata sandi', - delete: 'Hapus Akun', - verificationPlaceholder: 'Tempel kode 6 digit', - editWorkspaceInfo: 'Edit Info Ruang Kerja', - currentPassword: 'Kata sandi saat ini', - newPassword: 'Kata sandi baru', - name: 'Nama', - notEqual: 'Dua kata sandi berbeda.', - avatar: 'Avatar', - myAccount: 'Akun Saya', - deletePlaceholder: 'Silakan masukkan email Anda', - permanentlyDeleteButton: 'Hapus Akun Secara Permanen', - feedbackPlaceholder: 'Fakultatif', - deletePrivacyLink: 'Kebijakan Privasi.', - feedbackTitle: 'Umpan balik', - workspaceName: 'Nama Ruang Kerja', - deletePrivacyLinkTip: 'Untuk informasi lebih lanjut tentang bagaimana kami menangani data Anda, silakan lihat', - deleteLabel: 'Untuk mengonfirmasi, silakan ketik email Anda di bawah ini', - feedbackLabel: 'Beri tahu kami mengapa Anda menghapus akun Anda?', - langGeniusAccountTip: 'Data pengguna akun Anda.', - deleteSuccessTip: 'Akun Anda membutuhkan waktu untuk menyelesaikan penghapusan. Kami akan mengirimkan email kepada Anda setelah semuanya selesai.', - verificationLabel: 'Kode Verifikasi', - password: 'Kata sandi', - deleteTip: 'Harap dicatat, setelah dikonfirmasi, sebagai Pemilik Ruang Kerja apa pun, ruang kerja Anda akan dijadwalkan dalam antrean untuk penghapusan permanen, dan semua data pengguna Anda akan diantri untuk penghapusan permanen.', - workspaceIcon: 'Ikon Ruang Kerja', - showAppLength: 'Tampilkan {{length}} aplikasi', - }, - members: { - transferModal: { - warningTip: 'Anda akan menjadi anggota admin, dan pemilik baru akan memiliki kendali penuh.', - codePlaceholder: 'Tempel kode 6 digit', - title: 'Mentransfer kepemilikan ruang kerja', - codeLabel: 'Kode verifikasi', - sendVerifyCode: 'Kirim kode verifikasi', - continue: 'Terus', - transfer: 'Mentransfer kepemilikan ruang kerja', - resendTip: 'Tidak menerima kode?', - verifyContent2: 'Kami akan mengirimkan kode verifikasi sementara ke email ini untuk autentikasi ulang.', - verifyEmail: 'Memverifikasi email Anda saat ini', - transferLabel: 'Mentransfer kepemilikan ruang kerja ke', - resend: 'Kirim Ulang', - transferPlaceholder: 'Pilih anggota ruang kerja...', - warning: 'Anda akan mentransfer kepemilikan “{{workspace}}”. Ini akan berlaku segera dan tidak dapat dibatalkan.', - sendTip: 'Jika Anda melanjutkan, kami akan mengirim kode verifikasi ke {{email}} untuk autentikasi ulang.', - verifyContent: 'Email Anda saat ini adalah {{email}}.', - resendCount: 'Kirim ulang dalam {{count}} detik', - }, - lastActive: 'TERAKHIR AKTIF', - owner: 'Pemilik', - normal: 'Biasa', - team: 'Tim', - adminTip: 'Dapat membangun aplikasi & mengelola pengaturan tim', - emailNotSetup: 'Server email tidak disiapkan, sehingga email undangan tidak dapat dikirim. Harap beri tahu pengguna tentang tautan undangan yang akan dikeluarkan setelah undangan.', - editor: 'Editor', - setAdmin: 'Tetapkan sebagai administrator', - failedInvitationEmails: 'Pengguna di bawah ini tidak berhasil diundang', - emailInvalid: 'Format Email Tidak Valid', - setEditor: 'Tetapkan sebagai editor', - datasetOperatorTip: 'Hanya dapat mengelola basis pengetahuan', - builderTip: 'Dapat membangun & mengedit aplikasi sendiri', - datasetOperator: 'Admin Pengetahuan', - pending: 'Tertunda...', - setBuilder: 'Tetapkan sebagai pembuat', - invitationSentTip: 'Undangan terkirim, dan mereka dapat masuk ke Dify untuk mengakses data tim Anda.', - role: 'PERAN', - ok: 'OKE', - setMember: 'Atur ke anggota biasa', - deleteMember: 'Hapus Anggota', - name: 'NAMA', - invite: 'Tambah', - inviteTeamMemberTip: 'Mereka dapat mengakses data tim Anda langsung setelah masuk.', - transferOwnership: 'Pengalihan Kepemilikan', - sendInvite: 'Kirim Undangan', - email: 'Email', - removeFromTeamTip: 'Akan menghapus akses tim', - invitationLink: 'Tautan Undangan', - you: '(Anda)', - removeFromTeam: 'Hapus dari tim', - emailPlaceholder: 'Silakan masukkan email', - inviteTeamMember: 'Tambahkan anggota tim', - builder: 'Pembangun', - disInvite: 'Batalkan undangan', - invitationSent: 'Undangan terkirim', - editorTip: 'Dapat membangun & mengedit aplikasi', - admin: 'Admin', - normalTip: 'Hanya dapat menggunakan aplikasi, tidak dapat membuat aplikasi', - invitedAsRole: 'Diundang sebagai pengguna {{role}}', - }, - feedback: { - subtitle: 'Tolong beri tahu kami apa yang salah dengan tanggapan ini', - placeholder: 'Tolong jelaskan apa yang salah atau bagaimana kami dapat meningkatkan...', - content: 'Konten Umpan Balik', - title: 'Berikan Umpan Balik', - }, - integrations: { - github: 'GitHub', - connected: 'Terhubung', - connect: 'Sambung', - githubAccount: 'Masuk dengan akun GitHub', - googleAccount: 'Masuk dengan akun Google', - google: 'Google', - }, - language: { - displayLanguage: 'Bahasa Tampilan', - timezone: 'Zona Waktu', - }, - provider: { - azure: { - helpTip: 'Pelajari Azure OpenAI Service', - apiKey: 'Kunci API', - apiBase: 'Basis API', - apiKeyPlaceholder: 'Masukkan kunci API Anda di sini', - apiBasePlaceholder: 'URL Dasar API Titik Akhir Azure OpenAI Anda.', - }, - openaiHosted: { - desc: 'Layanan hosting OpenAI yang disediakan oleh Dify memungkinkan Anda menggunakan model seperti GPT-3.5. Sebelum kuota uji coba habis, Anda harus menyiapkan penyedia model lain.', - callTimes: 'Waktu panggilan', - useYourModel: 'Saat ini menggunakan Penyedia Model sendiri.', - usedUp: 'Kuota percobaan habis. Tambahkan Penyedia Model sendiri.', - openaiHosted: 'OpenAI yang Dihosting', - close: 'Tutup', - exhausted: 'KUOTA HABIS', - onTrial: 'SEDANG DIADILI', - }, - anthropicHosted: { - trialQuotaTip: 'Kuota uji coba Anthropic Anda akan berakhir pada 17/03/2025 dan tidak akan tersedia lagi setelahnya. Silakan manfaatkan tepat waktu.', - callTimes: 'Waktu panggilan', - onTrial: 'SEDANG DIADILI', - anthropicHosted: 'Claude Antropis', - useYourModel: 'Saat ini menggunakan Penyedia Model sendiri.', - desc: 'Model yang kuat, yang unggul dalam berbagai tugas mulai dari dialog canggih dan pembuatan konten kreatif hingga instruksi terperinci.', - close: 'Tutup', - exhausted: 'KUOTA HABIS', - usedUp: 'Kuota percobaan habis. Tambahkan Penyedia Model sendiri.', - }, - anthropic: { - keyFrom: 'Dapatkan kunci API Anda dari Anthropic', - enableTip: 'Untuk mengaktifkan model Anthropic, Anda perlu mengikat ke OpenAI atau Azure OpenAI Service terlebih dahulu.', - using: 'Kemampuan penyematan menggunakan', - notEnabled: 'Tidak diaktifkan', - }, - encrypted: { - front: 'API KEY Anda akan dienkripsi dan disimpan menggunakan', - back: 'Teknologi.', - }, - validatedError: 'Validasi gagal:', - invalidApiKey: 'Kunci API tidak valid', - apiKeyExceedBill: 'API KEY ini tidak memiliki kuota yang tersedia, silakan baca', - apiKey: 'Kunci API', - saveFailed: 'Menyimpan kunci api gagal', - editKey: 'Mengedit', - addKey: 'Tambahkan Kunci', - invalidKey: 'Kunci API OpenAI tidak valid', - enterYourKey: 'Masukkan kunci API Anda di sini', - comingSoon: 'Segera datang', - validating: 'Memvalidasi kunci...', - }, - modelProvider: { - systemReasoningModel: { - tip: 'Atur model inferensi default yang akan digunakan untuk membuat aplikasi, serta fitur seperti pembuatan nama dialog dan saran pertanyaan berikutnya juga akan menggunakan model inferensi default.', - key: 'Model Penalaran Sistem', - }, - embeddingModel: { - tip: 'Atur model default untuk pemrosesan penyematan dokumen Pengetahuan, baik pengambilan maupun impor Pengetahuan menggunakan model Penyematan ini untuk pemrosesan vektorisasi. Pengalihan akan menyebabkan dimensi vektor antara Pengetahuan yang diimpor dan pertanyaan menjadi tidak konsisten, mengakibatkan kegagalan pengambilan. Untuk menghindari kegagalan pengambilan, jangan mengganti model ini sesuka hati.', - required: 'Model Penyematan diperlukan', - key: 'Menyematkan Model', - }, - speechToTextModel: { - tip: 'Atur model default untuk input ucapan-ke-teks dalam percakapan.', - key: 'Model Ucapan-ke-Teks', - }, - ttsModel: { - tip: 'Atur model default untuk input teks-ke-ucapan dalam percakapan.', - key: 'Model Teks-ke-Ucapan', - }, - rerankModel: { - key: 'Peringkat ulang Model', - tip: 'Model rerank akan menyusun ulang daftar dokumen kandidat berdasarkan kecocokan semantik dengan kueri pengguna, meningkatkan hasil peringkat semantik', - }, - selector: { - rerankTip: 'Silakan atur model Rerank', - emptyTip: 'Tidak ada model yang tersedia', - emptySetting: 'Silakan buka pengaturan untuk mengonfigurasi', - tip: 'Model ini telah dihapus. Silakan tambahkan model atau pilih model lain.', - }, - card: { - onTrial: 'Sedang Diadili', - paid: 'Dibayar', - buyQuota: 'Beli Kuota', - removeKey: 'Menghapus Kunci API', - tokens: 'Token', - callTimes: 'Waktu panggilan', - priorityUse: 'Penggunaan prioritas', - quota: 'KUOTA', - tip: 'Prioritas akan diberikan pada kuota yang dibayarkan. Kuota Trial akan digunakan setelah kuota yang dibayarkan habis.', - quotaExhausted: 'Kuota habis', - }, - item: { - freeQuota: 'KUOTA GRATIS', - deleteDesc: '{{modelName}} sedang digunakan sebagai model penalaran sistem. Beberapa fungsi tidak akan tersedia setelah dihapus. Harap konfirmasi.', - }, - encrypted: { - back: 'Teknologi.', - front: 'API KEY Anda akan dienkripsi dan disimpan menggunakan', - }, - freeQuota: { - howToEarn: 'Cara mendapatkan penghasilan', - }, - auth: { - apiKeyModal: { - addModel: 'Tambahkan model', - desc: 'Setelah mengonfigurasi kredensial, semua anggota dalam ruang kerja dapat menggunakan model ini saat mengatur aplikasi.', - title: 'Konfigurasi Otorisasi Kunci API', - }, - addCredential: 'Tambahkan kredensial', - authorizationError: 'Kesalahan otorisasi', - addApiKey: 'Menambahkan Kunci API', - modelCredentials: 'Kredensial model', - authRemoved: 'Autentikasi dihapus', - configModel: 'Model konfigurasi', - providerManagedTip: 'Konfigurasi saat ini dihosting oleh penyedia.', - specifyModelCredentialTip: 'Gunakan kredensial model yang dikonfigurasi.', - apiKeys: 'Kunci API', - providerManaged: 'Penyedia dikelola', - addNewModel: 'Tambahkan model baru', - unAuthorized: 'Sah', - configLoadBalancing: 'Penyeimbangan Beban Konfigurasi', - addModelCredential: 'Menambahkan kredensial model', - specifyModelCredential: 'Tentukan kredensial model', - addNewModelCredential: 'Menambahkan kredensial model baru', - modelCredential: 'Kredensial model', - addModel: 'Tambahkan model', - removeModel: 'Hapus Model', - manageCredentials: 'Kelola Kredensial', - selectModelCredential: 'Pilih kredensial model', - editModelCredential: 'Mengedit kredensial model', - customModelCredentials: 'Kredensial Model Kustom', - customModelCredentialsDeleteTip: 'Kredensial sedang digunakan dan tidak dapat dihapus', - }, - systemModelSettingsLink: 'Mengapa perlu menyiapkan model sistem?', - apiKey: 'API-KUNCI', - selectModel: 'Pilih model Anda', - showMoreModelProvider: 'Tampilkan lebih banyak penyedia model', - systemModelSettings: 'Pengaturan Model Sistem', - addModel: 'Tambahkan Model', - quota: 'Kuota', - setupModelFirst: 'Silakan atur model Anda terlebih dahulu', - loadBalancingDescription: 'Konfigurasikan beberapa kredensial untuk model dan panggil secara otomatis.', - loadBalancingInfo: 'Secara default, penyeimbangan beban menggunakan strategi Round-robin. Jika pembatasan kecepatan dipicu, periode cooldown 1 menit akan diterapkan.', - apiKeyStatusNormal: 'Status APIKey normal', - credits: 'Kredit Pesan', - confirmDelete: 'Mengkonfirmasi penghapusan?', - addMoreModelProvider: 'TAMBAHKAN PENYEDIA MODEL LAINNYA', - collapse: 'Roboh', - providerManaged: 'Penyedia dikelola', - parameters: 'PARAMETER', - notConfigured: 'Model sistem belum sepenuhnya dikonfigurasi', - priorityUsing: 'Prioritaskan penggunaan', - model: 'Pola', - buyQuota: 'Beli Kuota', - configureTip: 'Menyiapkan api-key atau menambahkan model untuk digunakan', - emptyProviderTip: 'Silakan instal penyedia model terlebih dahulu.', - loadBalancing: 'Penyeimbangan beban', - loadPresets: 'Muat Preset', - loadBalancingHeadline: 'Penyeimbangan Beban', - editConfig: 'Edit Konfigurasi', - discoverMore: 'Temukan lebih lanjut di', - modelAndParameters: 'Model dan Parameter', - upgradeForLoadBalancing: 'Tingkatkan paket Anda untuk mengaktifkan Penyeimbangan Beban.', - providerManagedDescription: 'Gunakan satu set kredensial yang disediakan oleh penyedia model.', - showModels: 'Tampilkan Model', - deprecated: 'Usang', - models: 'Model', - configLoadBalancing: 'Penyeimbangan Beban Konfigurasi', - emptyProviderTitle: 'Penyedia model tidak disiapkan', - loadBalancingLeastKeyWarning: 'Untuk mengaktifkan penyeimbangan beban, setidaknya 2 tombol harus diaktifkan.', - toBeConfigured: 'Untuk dikonfigurasi', - addApiKey: 'Menambahkan kunci API Anda', - modelHasBeenDeprecated: 'Model ini tidak digunakan lagi', - searchModel: 'Model pencarian', - addConfig: 'Tambahkan Konfigurasi', - invalidApiKey: 'Kunci API tidak valid', - defaultConfig: 'Konfigurasi Default', - config: 'Konfigurasi', - quotaTip: 'Token gratis yang masih tersedia', - installProvider: 'Menginstal penyedia model', - callTimes: 'Waktu panggilan', - getFreeTokens: 'Dapatkan Token gratis', - parametersInvalidRemoved: 'Beberapa parameter tidak valid dan telah dihapus', - installDataSourceProvider: 'Pasang penyedia sumber data', - noModelFound: 'Tidak ditemukan model untuk {{model}}', - modelsNum: 'Model {{num}}', - showModelsNum: 'Tampilkan {{num}} Model', - featureSupported: '{{feature}} didukung', - apiKeyRateLimit: 'Batas kecepatan tercapai, tersedia setelah {{seconds}} detik', - }, - dataSource: { - notion: { - selector: { - searchPages: 'Halaman pencarian...', - addPages: 'Tambahkan halaman', - pageSelected: 'Halaman yang Dipilih', - preview: 'PRATAYANG', - noSearchResult: 'Tidak ada hasil pencarian', - }, - integratedAlert: 'Notion terintegrasi melalui kredensial internal, tidak perlu mengotorisasi ulang.', - disconnected: 'Terputus', - remove: 'Hapus', - addWorkspace: 'Menambahkan ruang kerja', - description: 'Menggunakan Notion sebagai sumber data untuk Pengetahuan.', - connected: 'Terhubung', - pagesAuthorized: 'Halaman yang disahkan', - changeAuthorizedPages: 'Mengubah halaman resmi', - title: 'Notion', - sync: 'Sync', - connectedWorkspace: 'Ruang kerja yang terhubung', - }, - website: { - title: 'Situs web', - with: 'Dengan', - active: 'Aktif', - inactive: 'Aktif', - description: 'Impor konten dari situs menggunakan perayap web.', - configuredCrawlers: 'Perayap yang dikonfigurasi', - }, - connect: 'Sambung', - configure: 'Mengkonfigurasi', - add: 'Menambahkan sumber data', - }, - plugin: { - serpapi: { - apiKey: 'Kunci API', - apiKeyPlaceholder: 'Masukkan kunci API Anda', - keyFrom: 'Dapatkan kunci SerpAPI Anda dari Halaman Akun SerpAPI', - }, - }, - apiBasedExtension: { - selector: { - title: 'Ekstensi API', - placeholder: 'Silakan pilih ekstensi API', - manage: 'Kelola Ekstensi API', - }, - modal: { - name: { - title: 'Nama', - placeholder: 'Silakan masukkan nama', - }, - apiEndpoint: { - title: 'Titik Akhir API', - placeholder: 'Silakan masukkan titik akhir API', - }, - apiKey: { - title: 'Kunci API', - lengthError: 'Panjang kunci API tidak boleh kurang dari 5 karakter', - placeholder: 'Silakan masukkan kunci API', - }, - editTitle: 'Edit Ekstensi API', - title: 'Tambahkan Ekstensi API', - }, - link: 'Pelajari cara mengembangkan Ekstensi API Anda sendiri.', - title: 'Ekstensi API menyediakan manajemen API terpusat, menyederhanakan konfigurasi agar mudah digunakan di seluruh aplikasi Dify.', - type: 'Jenis', - add: 'Tambahkan Ekstensi API', - }, - about: { - changeLog: 'Log perubahan', - updateNow: 'Perbarui sekarang', - nowAvailable: 'Dify {{version}} kini tersedia.', - latestAvailable: 'Dify {{version}} adalah versi terbaru yang tersedia.', - }, - appMenus: { - logs: 'Log', - overview: 'Pemantauan', - logAndAnn: 'Log & Anotasi', - promptEng: 'Mengatur', - apiAccess: 'Akses API', - }, - environment: { - development: 'PENGEMBANGAN', - testing: 'PENGUJIAN', - }, - appModes: { - completionApp: 'Pembuat Teks', - chatApp: 'Aplikasi Obrolan', - }, - datasetMenus: { - hitTesting: 'Pengujian Pengambilan', - relatedApp: 'Aplikasi tertaut', - emptyTip: 'Pengetahuan ini belum terintegrasi dalam aplikasi apa pun. Silakan lihat dokumen untuk panduan.', - documents: 'Dokumen', - settings: 'Pengaturan', - noRelatedApp: 'Tidak ada aplikasi yang ditautkan', - viewDoc: 'Lihat dokumentasi', - pipeline: 'Pipa', - }, - voiceInput: { - speaking: 'Bicaralah sekarang...', - notAllow: 'mikrofon tidak diizinkan', - converting: 'Mengonversi ke teks...', - }, - modelName: { - 'claude-2': 'Claude-2', - 'gpt-3.5-turbo': 'GPT-3.5-Turbo', - 'gpt-4': 'GPT-4', - 'whisper-1': 'Whisper-1', - 'text-davinci-003': 'Teks-Davinci-003', - 'gpt-4-32k': 'GPT-4-32K', - 'gpt-3.5-turbo-16k': 'GPT-3.5-Turbo-16K', - 'claude-instant-1': 'Claude-Instan', - 'text-embedding-ada-002': 'Penyematan Teks-Ada-002', - }, - chat: { - citation: { - linkToDataset: 'Tautan ke Pengetahuan', - characters: 'Karakter:', - vectorHash: 'Hash vektor:', - hitScore: 'Skor Pengambilan:', - title: 'KUTIPAN', - hitCount: 'Jumlah pengambilan:', - }, - resend: 'Kirim Ulang', - conversationName: 'Nama percakapan', - thinking: 'Sedang berpikir...', - conversationNameCanNotEmpty: 'Nama percakapan diperlukan', - thought: 'Pikiran', - renameConversation: 'Ganti Nama Percakapan', - conversationNamePlaceholder: 'Silakan masukkan nama percakapan', - inputPlaceholder: 'Bicaralah dengan {{botName}}', - }, - promptEditor: { - context: { - item: { - title: 'Konteks', - desc: 'Sisipkan templat konteks', - }, - modal: { - footer: 'Anda dapat mengelola konteks di bagian Konteks di bawah.', - add: 'Tambahkan Konteks', - title: '{{num}} Pengetahuan dalam Konteks', - }, - }, - history: { - item: { - title: 'Riwayat Percakapan', - desc: 'Menyisipkan templat pesan historis', - }, - modal: { - edit: 'Mengedit Nama Peran Percakapan', - title: 'CONTOH', - user: 'Halo', - assistant: 'Halo! Bagaimana saya dapat membantu Anda hari ini?', - }, - }, - variable: { - item: { - title: 'Variabel & Alat Eksternal', - desc: 'Sisipkan Variabel & Alat Eksternal', - }, - outputToolDisabledItem: { - desc: 'Sisipkan Variabel', - title: 'Variabel', - }, - modal: { - addTool: 'Alat baru', - add: 'Variabel baru', - }, - }, - query: { - item: { - desc: 'Menyisipkan templat kueri pengguna', - title: 'Kueri', - }, - }, - placeholder: 'Tulis kata prompt Anda di sini, masukkan \'{\' untuk menyisipkan variabel, masukkan \'/\' untuk menyisipkan blok konten prompt', - existed: 'Sudah ada di prompt', - }, - imageUploader: { - pasteImageLink: 'Tempel tautan gambar', - uploadFromComputer: 'Unggah dari Komputer', - uploadFromComputerUploadError: 'Unggahan gambar gagal, silakan unggah lagi.', - imageUpload: 'Unggah Gambar', - uploadFromComputerReadError: 'Pembacaan gambar gagal, silakan coba lagi.', - pasteImageLinkInvalid: 'Tautan gambar tidak valid', - pasteImageLinkInputPlaceholder: 'Tempel tautan gambar di sini', - uploadFromComputerLimit: 'Unggah gambar tidak boleh lebih dari {{size}} MB', - }, - fileUploader: { - fileExtensionNotSupport: 'Ekstensi file tidak didukung', - uploadFromComputer: 'Unggahan lokal', - pasteFileLink: 'Tempel tautan file', - uploadFromComputerUploadError: 'Unggahan file gagal, silakan unggah lagi.', - pasteFileLinkInvalid: 'Tautan file tidak valid', - pasteFileLinkInputPlaceholder: 'Masukkan URL...', - uploadFromComputerReadError: 'Pembacaan file gagal, silakan coba lagi.', - fileExtensionBlocked: 'Tipe file ini diblokir karena alasan keamanan', - uploadFromComputerLimit: 'Unggahan {{type}} tidak boleh melebihi {{size}}', - uploadDisabled: 'Unggah file dinonaktifkan', - }, - tag: { - noTag: 'Tidak ada tag', - manageTags: 'Kelola Tag', - created: 'Tag berhasil dibuat', - delete: 'Hapus tag', - editTag: 'Edit tag', - addTag: 'Tambahkan tag', - create: 'Menciptakan', - addNew: 'Tambahkan tag baru', - failed: 'Pembuatan tag gagal', - selectorPlaceholder: 'Ketik untuk mencari atau membuat', - deleteTip: 'Tag sedang digunakan, hapus?', - placeholder: 'Semua Tag', - noTagYet: 'Belum ada tag', - }, - license: { - unlimited: 'Unlimited', - expiring: 'Kedaluwarsa dalam satu hari', - expiring_plural: 'Kedaluwarsa dalam {{count}} hari', - }, - pagination: { - perPage: 'Item per halaman', - }, - avatar: { - deleteTitle: 'Hapus Avatar', - deleteDescription: 'Apakah Anda yakin ingin menghapus gambar profil Anda? Akun Anda akan menggunakan avatar awal default.', - }, - imageInput: { - browse: 'Telusuri', - supportedFormats: 'Mendukung PNG, JPG, JPEG, WEBP dan GIF', - dropImageHere: 'Letakkan gambar Anda di sini, atau', - }, - you: 'Kamu', - label: { - optional: '(opsional)', - }, - noData: 'Tidak ada data', - dynamicSelect: { - error: 'Gagal memuat opsi', - noData: 'Tidak ada opsi yang tersedia', - loading: 'Memuat opsi...', - selected: '{{count}} dipilih', - }, -} - -export default translation diff --git a/web/i18n/id-ID/custom.json b/web/i18n/id-ID/custom.json new file mode 100644 index 0000000000..680546da96 --- /dev/null +++ b/web/i18n/id-ID/custom.json @@ -0,0 +1,30 @@ +{ + "upgradeTip": { + "prefix": "Tingkatkan paket Anda ke", + "des": "Tingkatkan paket Anda untuk menyesuaikan merek Anda", + "suffix": "Sesuaikan merek Anda.", + "title": "Tingkatkan paket Anda" + }, + "webapp": { + "changeLogoTip": "Format SVG atau PNG dengan ukuran minimum 40x40px", + "removeBrand": "Hapus Branding Dify", + "changeLogo": "Ubah Logo Merek", + "title": "Kustomisasi Branding Aplikasi Web" + }, + "app": { + "title": "Kustomisasi Branding Header Aplikasi", + "changeLogoTip": "Format SVG atau PNG dengan ukuran minimal 80x80px" + }, + "customize": { + "suffix": "untuk upgrade ke edisi Enterprise.", + "prefix": "Untuk kustomisasi logo merek di dalam aplikasi, silakan", + "contactUs": "Hubungi Kami" + }, + "custom": "Kustomisasi", + "uploading": "Mengunggah...", + "upload": "Unggah", + "change": "Ubah", + "restore": "Pulihkan Default", + "apply": "Terapkan", + "uploadedFail": "Unggahan gambar gagal, silakan unggah ulang." +} diff --git a/web/i18n/id-ID/custom.ts b/web/i18n/id-ID/custom.ts deleted file mode 100644 index c4a26800d2..0000000000 --- a/web/i18n/id-ID/custom.ts +++ /dev/null @@ -1,32 +0,0 @@ -const translation = { - upgradeTip: { - prefix: 'Tingkatkan paket Anda ke', - des: 'Tingkatkan paket Anda untuk menyesuaikan merek Anda', - suffix: 'Sesuaikan merek Anda.', - title: 'Tingkatkan paket Anda', - }, - webapp: { - changeLogoTip: 'Format SVG atau PNG dengan ukuran minimum 40x40px', - removeBrand: 'Hapus Branding Dify', - changeLogo: 'Ubah Logo Merek', - title: 'Kustomisasi Branding Aplikasi Web', - }, - app: { - title: 'Kustomisasi Branding Header Aplikasi', - changeLogoTip: 'Format SVG atau PNG dengan ukuran minimal 80x80px', - }, - customize: { - suffix: 'untuk upgrade ke edisi Enterprise.', - prefix: 'Untuk kustomisasi logo merek di dalam aplikasi, silakan', - contactUs: 'Hubungi Kami', - }, - custom: 'Kustomisasi', - uploading: 'Mengunggah...', - upload: 'Unggah', - change: 'Ubah', - restore: 'Pulihkan Default', - apply: 'Terapkan', - uploadedFail: 'Unggahan gambar gagal, silakan unggah ulang.', -} - -export default translation diff --git a/web/i18n/id-ID/dataset-creation.json b/web/i18n/id-ID/dataset-creation.json new file mode 100644 index 0000000000..01dadb449c --- /dev/null +++ b/web/i18n/id-ID/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "Pengetahuan" + }, + "two": "Pemrosesan Dokumen", + "three": "Eksekusi & Selesaikan", + "one": "Sumber Data" + }, + "error": { + "unavailable": "Pengetahuan ini tidak tersedia" + }, + "firecrawl": { + "getApiKeyLinkText": "Dapatkan kunci API Anda dari firecrawl.dev", + "configFirecrawl": "Mengonfigurasi 🔥Firecrawl", + "apiKeyPlaceholder": "Kunci API dari firecrawl.dev" + }, + "watercrawl": { + "configWatercrawl": "Mengonfigurasi Watercrawl", + "getApiKeyLinkText": "Dapatkan kunci API Anda dari watercrawl.dev", + "apiKeyPlaceholder": "Kunci API dari watercrawl.dev" + }, + "jinaReader": { + "apiKeyPlaceholder": "Kunci API dari jina.ai", + "getApiKeyLinkText": "Dapatkan kunci API gratis Anda di jina.ai", + "configJinaReader": "Konfigurasikan Jina Reader" + }, + "stepOne": { + "dataSourceType": { + "file": "Impor dari file", + "notion": "Sinkronkan dari Notion", + "web": "Sinkronkan dari situs web" + }, + "uploader": { + "validation": { + "count": "Beberapa file tidak didukung", + "typeError": "Jenis file tidak didukung", + "size": "Berkas terlalu besar. Maksimal {{size}}MB", + "filesNumber": "Anda telah mencapai batas unggah batch sebanyak {{filesNumber}}." + }, + "buttonSingleFile": "Seret dan lepas file, atau", + "title": "Unggah file", + "browse": "Ramban", + "cancel": "Membatalkan", + "button": "Seret dan lepas file atau folder, atau", + "change": "Ubah", + "failed": "Upload gagal", + "tip": "Mendukung {{supportTypes}}. Maksimal {{batchCount}} dalam satu batch dan {{size}} MB masing-masing. Total maksimal {{totalCount}} file." + }, + "modal": { + "title": "Buat Pengetahuan kosong", + "placeholder": "Silakan masukkan", + "confirmButton": "Menciptakan", + "cancelButton": "Membatalkan", + "nameNotEmpty": "Nama tidak boleh kosong", + "input": "Nama pengetahuan", + "failed": "Pembuatan gagal", + "nameLengthInvalid": "Nama harus antara 1 hingga 40 karakter", + "tip": "Pengetahuan kosong tidak akan berisi dokumen, dan Anda dapat mengunggah dokumen kapan saja." + }, + "website": { + "configure": "Konfigurasikan", + "fireCrawlNotConfigured": "Firecrawl tidak dikonfigurasi", + "chooseProvider": "Pilih penyedia", + "configureFirecrawl": "Konfigurasikan Firecrawl", + "watercrawlDoc": "Dokumen Watercrawl", + "options": "Pilihan", + "firecrawlTitle": "Mengekstrak konten web dengan 🔥Firecrawl", + "jinaReaderNotConfigured": "Jina Reader tidak dikonfigurasi", + "preview": "Pratayang", + "resetAll": "Atur Ulang Semua", + "run": "Jalankan", + "limit": "Batas", + "useSitemap": "Menggunakan peta situs", + "jinaReaderDoc": "Pelajari lebih lanjut tentang Jina Reader", + "configureJinaReader": "Konfigurasikan Jina Reader", + "watercrawlTitle": "Ekstrak konten web dengan Watercrawl", + "crawlSubPage": "Merayapi sub-halaman", + "totalPageScraped": "Total halaman yang dikikis:", + "waterCrawlNotConfigured": "Watercrawl tidak dikonfigurasi", + "fireCrawlNotConfiguredDescription": "Konfigurasikan Firecrawl dengan kunci API untuk menggunakannya.", + "exceptionErrorTitle": "Pengecualian terjadi saat menjalankan pekerjaan crawling:", + "jinaReaderNotConfiguredDescription": "Siapkan Jina Reader dengan memasukkan kunci API gratis Anda untuk akses.", + "includeOnlyPaths": "Sertakan hanya jalur", + "jinaReaderTitle": "Konversi seluruh situs ke Markdown", + "excludePaths": "Kecualikan jalur", + "unknownError": "Kesalahan tidak diketahui", + "extractOnlyMainContent": "Ekstrak hanya konten utama (tanpa header, navigasi, footer, dll.)", + "useSitemapTooltip": "Ikuti peta situs untuk meng-crawl situs. Jika tidak, Jina Reader akan merayapi secara berulang berdasarkan relevansi halaman, menghasilkan halaman yang lebih sedikit tetapi berkualitas lebih tinggi.", + "maxDepth": "Kedalaman maks", + "jinaReaderDocLink": "https://jina.ai/reader", + "selectAll": "Pilih Semua", + "maxDepthTooltip": "Kedalaman maksimum untuk di-crawl relatif terhadap URL yang dimasukkan. Kedalaman 0 hanya mengikis halaman url yang dimasukkan, kedalaman 1 mengikis url dan semuanya setelah dimasukkan URL satu /, dan seterusnya.", + "waterCrawlNotConfiguredDescription": "Konfigurasikan Watercrawl dengan kunci API untuk menggunakannya.", + "firecrawlDoc": "Dokumen Firecrawl", + "configureWatercrawl": "Konfigurasikan Watercrawl", + "running": "Menjalankan", + "scrapTimeInfo": "Telah mengumpulkan {{total}} halaman secara total dalam {{time}} detik" + }, + "pagePreview": "Pratinjau Halaman", + "notionSyncTitle": "Notion tidak terhubung", + "filePreview": "Pratinjau File", + "cancel": "Membatalkan", + "emptyDatasetCreation": "Saya ingin membuat Pengetahuan kosong", + "button": "Berikutnya", + "notionSyncTip": "Untuk menyinkronkan dengan Notion, koneksi ke Notion harus dibuat terlebih dahulu.", + "connect": "Hubungkan" + }, + "stepTwo": { + "paragraph": "Paragraf", + "QATitle": "Segmentasi dalam format Tanya Jawab", + "QALanguage": "Segmen menggunakan", + "custom": "Adat", + "fullDoc": "Dokumen Lengkap", + "overlapCheck": "Tumpang tindih potongan tidak boleh lebih besar dari panjang potongan maksimum", + "economical": "Ekonomis", + "parentChunkForContext": "Parent-chunk untuk Konteks", + "estimateCost": "Kira", + "other": "dan lainnya", + "autoDescription": "Atur aturan potongan dan prapemrosesan secara otomatis. Pengguna yang tidak dikenal disarankan untuk memilih ini.", + "reset": "Reset", + "auto": "Otomatis", + "removeExtraSpaces": "Mengganti spasi berturut-turut, baris baru, dan tab", + "indexMode": "Metode Indeks", + "useQALanguage": "Potongan menggunakan format Tanya Jawab di", + "previousStep": "Langkah sebelumnya", + "warning": "Silakan siapkan kunci API penyedia model terlebih dahulu.", + "paragraphTip": "Mode ini membagi teks menjadi paragraf berdasarkan pembatas dan panjang potongan maksimum, menggunakan teks terpisah sebagai potongan induk untuk pengambilan.", + "separatorTip": "Pemisah adalah karakter yang digunakan untuk memisahkan teks. \\n\\n dan \\n adalah pembatas yang biasa digunakan untuk memisahkan paragraf dan baris. Dikombinasikan dengan koma (\\n\\n,\\n), paragraf akan disegmentasikan berdasarkan baris saat melebihi panjang potongan maksimum. Anda juga dapat menggunakan pembatas khusus yang ditentukan sendiri (misalnya ***).", + "notionSource": "Halaman praproses", + "overlap": "Tumpang tindih potongan", + "click": "Buka pengaturan", + "highQualityTip": "Setelah selesai menyematkan dalam mode Kualitas Tinggi, kembali ke mode Ekonomis tidak tersedia.", + "previewChunk": "Pratinjau Potongan", + "webpageUnit": "Halaman", + "fullDocTip": "Seluruh dokumen digunakan sebagai potongan induk dan diambil secara langsung. Harap dicatat bahwa untuk alasan kinerja, teks yang melebihi 10000 token akan dipotong secara otomatis.", + "maxLength": "Panjang potongan maksimum", + "fileUnit": "File", + "parentChild": "Orang tua-anak", + "estimateSegment": "Perkiraan potongan", + "calculating": "Menghitung...", + "qualified": "Kualitas Tinggi", + "segmentation": "Pengaturan Potongan", + "generalTip": "Mode pemotongan teks umum, potongan yang diambil dan ditarik kembali sama.", + "characters": "Karakter", + "fileSource": "Praproses dokumen", + "parentChildDelimiterTip": "Pemisah adalah karakter yang digunakan untuk memisahkan teks. \\n\\n direkomendasikan untuk membagi dokumen asli menjadi potongan induk yang besar. Anda juga dapat menggunakan pembatas khusus yang ditentukan sendiri.", + "separatorPlaceholder": "\\n\\n untuk paragraf; \\n untuk baris", + "qualifiedTip": "Memanggil model penyematan untuk memproses dokumen untuk pengambilan yang lebih tepat membantu LLM menghasilkan jawaban berkualitas tinggi.", + "previewTitle": "Pratayang", + "economicalTip": "Menggunakan 10 kata kunci per potongan untuk pengambilan, tidak ada token yang dikonsumsi dengan mengorbankan penurunan akurasi pengambilan.", + "recommend": "Merekomendasikan", + "segmentCount": "Potongan", + "removeUrlEmails": "Menghapus semua URL dan alamat email", + "childChunkForRetrieval": "Potongan anak untuk Pengambilan", + "cancel": "Membatalkan", + "notionUnit": "Halaman", + "removeStopwords": "Hapus kata henti seperti \"a\", \"an\", \"the\"", + "customDescription": "Sesuaikan aturan potongan, panjang potongan, dan aturan prapemrosesan, dll.", + "overlapTip": "Mengatur tumpang tindih potongan dapat mempertahankan relevansi semantik di antara mereka, meningkatkan efek pengambilan. Disarankan untuk mengatur 10% -25% dari ukuran potongan maksimum.", + "previewSwitchTipStart": "Pratinjau potongan saat ini dalam format teks, beralih ke pratinjau format tanya jawab akan", + "nextStep": "Simpan & Proses", + "previewButton": "Beralih ke format Tanya Jawab", + "notAvailableForQA": "Tidak tersedia untuk Indeks Tanya Jawab", + "previewSwitchTipEnd": "Konsumsi token tambahan", + "retrievalSettingTip": "Untuk mengubah pengaturan pengambilan, silakan buka", + "previewChunkTip": "Klik tombol 'Pratinjau Potongan' di sebelah kiri untuk memuat pratinjau", + "sideTipP4": "Potongan dan pembersihan yang tepat meningkatkan kinerja model, memberikan hasil yang lebih akurat dan berharga.", + "previewTitleButton": "Pratayang", + "switch": "Beralih", + "datasetSettingLink": "Pengaturan pengetahuan.", + "rules": "Aturan Pra-pemrosesan Teks", + "sideTipP2": "Segmentasi membagi teks panjang menjadi paragraf sehingga model dapat memahami dengan lebih baik. Ini meningkatkan kualitas dan relevansi hasil model.", + "sideTipP1": "Saat memproses data teks, potongan dan pembersihan adalah dua langkah prapemrosesan yang penting.", + "QATip": "Aktifkan opsi ini akan menggunakan lebih banyak token", + "qaSwitchHighQualityTipTitle": "Format Q&A Membutuhkan Metode Pengindeksan Berkualitas Tinggi", + "sideTipTitle": "Mengapa chunk dan praproses?", + "parentChildTip": "Saat menggunakan mode induk-anak, potongan anak digunakan untuk pengambilan dan potongan induk digunakan untuk penarikan kembali sebagai konteks.", + "sideTipP3": "Pembersihan menghapus karakter dan format yang tidak perlu, membuat Pengetahuan lebih bersih dan lebih mudah diuraikan.", + "notAvailableForParentChild": "Tidak tersedia untuk Indeks Induk-anak", + "separator": "Pembatas", + "save": "Simpan & Proses", + "preview": "Pratayang", + "websiteSource": "Situs web praproses", + "parentChildChunkDelimiterTip": "Pemisah adalah karakter yang digunakan untuk memisahkan teks. \\n direkomendasikan untuk membagi potongan induk menjadi potongan anak kecil. Anda juga dapat menggunakan pembatas khusus yang ditentukan sendiri.", + "qaSwitchHighQualityTipContent": "Saat ini, hanya metode indeks berkualitas tinggi yang mendukung pemotongan format Tanya Jawab. Apakah Anda ingin beralih ke mode berkualitas tinggi?", + "general": "Umum", + "indexSettingTip": "Untuk mengubah metode indeks & model penyematan, silakan pergi ke", + "qaTip": "Saat menggunakan data Tanya Jawab terstruktur, Anda dapat membuat dokumen yang memasangkan pertanyaan dengan jawaban. Dokumen-dokumen ini diindeks berdasarkan bagian pertanyaan, memungkinkan sistem untuk mengambil jawaban yang relevan berdasarkan kesamaan kueri.", + "maxLengthCheck": "Panjang potongan maksimum sebaiknya kurang dari {{limit}}", + "previewChunkCount": "{{count}} Potongan perkiraan" + }, + "stepThree": { + "modelTitle": "Apakah Anda yakin untuk berhenti menyematkan?", + "sideTipTitle": "Apa selanjutnya", + "additionTitle": "🎉 Dokumen diunggah", + "creationTitle": "🎉 Pengetahuan yang diciptakan", + "additionP2": ", Anda dapat menemukannya di daftar dokumen Pengetahuan.", + "additionP1": "Dokumen telah diunggah ke Knowledge", + "navTo": "Buka dokumen", + "resume": "Melanjutkan pemrosesan", + "stop": "Hentikan pemrosesan", + "creationContent": "Kami secara otomatis menamai Pengetahuan, Anda dapat memodifikasinya kapan saja.", + "modelButtonConfirm": "Konfirmasi", + "sideTipContent": "Setelah dokumen selesai diindeks, Pengetahuan dapat diintegrasikan ke dalam aplikasi sebagai konteks, Anda dapat menemukan pengaturan konteks di halaman orkestrasi perintah. Anda juga dapat membuatnya sebagai plugin pengindeksan ChatGPT independen untuk dirilis.", + "modelButtonCancel": "Membatalkan", + "label": "Nama pengetahuan", + "modelContent": "Jika Anda perlu melanjutkan pemrosesan nanti, Anda akan melanjutkan dari bagian terakhir yang Anda tinggalkan." + }, + "otherDataSource": { + "title": "Terhubung ke sumber data lain?", + "learnMore": "Pelajari lebih lanjut", + "description": "Saat ini, basis pengetahuan Dify hanya memiliki sumber data yang terbatas. Menyumbangkan sumber data ke basis pengetahuan Dify adalah cara yang fantastis untuk membantu meningkatkan fleksibilitas dan kekuatan platform bagi semua pengguna. Panduan kontribusi kami memudahkan untuk memulai. Silakan klik tautan di bawah ini untuk mempelajari lebih lanjut." + } +} diff --git a/web/i18n/id-ID/dataset-creation.ts b/web/i18n/id-ID/dataset-creation.ts deleted file mode 100644 index 7bb9b18dc3..0000000000 --- a/web/i18n/id-ID/dataset-creation.ts +++ /dev/null @@ -1,217 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: 'Pengetahuan', - }, - two: 'Pemrosesan Dokumen', - three: 'Eksekusi & Selesaikan', - one: 'Sumber Data', - }, - error: { - unavailable: 'Pengetahuan ini tidak tersedia', - }, - firecrawl: { - getApiKeyLinkText: 'Dapatkan kunci API Anda dari firecrawl.dev', - configFirecrawl: 'Mengonfigurasi 🔥Firecrawl', - apiKeyPlaceholder: 'Kunci API dari firecrawl.dev', - }, - watercrawl: { - configWatercrawl: 'Mengonfigurasi Watercrawl', - getApiKeyLinkText: 'Dapatkan kunci API Anda dari watercrawl.dev', - apiKeyPlaceholder: 'Kunci API dari watercrawl.dev', - }, - jinaReader: { - apiKeyPlaceholder: 'Kunci API dari jina.ai', - getApiKeyLinkText: 'Dapatkan kunci API gratis Anda di jina.ai', - configJinaReader: 'Konfigurasikan Jina Reader', - }, - stepOne: { - dataSourceType: { - file: 'Impor dari file', - notion: 'Sinkronkan dari Notion', - web: 'Sinkronkan dari situs web', - }, - uploader: { - validation: { - count: 'Beberapa file tidak didukung', - typeError: 'Jenis file tidak didukung', - size: 'Berkas terlalu besar. Maksimal {{size}}MB', - filesNumber: 'Anda telah mencapai batas unggah batch sebanyak {{filesNumber}}.', - }, - buttonSingleFile: 'Seret dan lepas file, atau', - title: 'Unggah file', - browse: 'Ramban', - cancel: 'Membatalkan', - button: 'Seret dan lepas file atau folder, atau', - change: 'Ubah', - failed: 'Upload gagal', - tip: 'Mendukung {{supportTypes}}. Maksimal {{batchCount}} dalam satu batch dan {{size}} MB masing-masing. Total maksimal {{totalCount}} file.', - }, - modal: { - title: 'Buat Pengetahuan kosong', - placeholder: 'Silakan masukkan', - confirmButton: 'Menciptakan', - cancelButton: 'Membatalkan', - nameNotEmpty: 'Nama tidak boleh kosong', - input: 'Nama pengetahuan', - failed: 'Pembuatan gagal', - nameLengthInvalid: 'Nama harus antara 1 hingga 40 karakter', - tip: 'Pengetahuan kosong tidak akan berisi dokumen, dan Anda dapat mengunggah dokumen kapan saja.', - }, - website: { - configure: 'Konfigurasikan', - fireCrawlNotConfigured: 'Firecrawl tidak dikonfigurasi', - chooseProvider: 'Pilih penyedia', - configureFirecrawl: 'Konfigurasikan Firecrawl', - watercrawlDoc: 'Dokumen Watercrawl', - options: 'Pilihan', - firecrawlTitle: 'Mengekstrak konten web dengan 🔥Firecrawl', - jinaReaderNotConfigured: 'Jina Reader tidak dikonfigurasi', - preview: 'Pratayang', - resetAll: 'Atur Ulang Semua', - run: 'Jalankan', - limit: 'Batas', - useSitemap: 'Menggunakan peta situs', - jinaReaderDoc: 'Pelajari lebih lanjut tentang Jina Reader', - configureJinaReader: 'Konfigurasikan Jina Reader', - watercrawlTitle: 'Ekstrak konten web dengan Watercrawl', - crawlSubPage: 'Merayapi sub-halaman', - totalPageScraped: 'Total halaman yang dikikis:', - waterCrawlNotConfigured: 'Watercrawl tidak dikonfigurasi', - fireCrawlNotConfiguredDescription: 'Konfigurasikan Firecrawl dengan kunci API untuk menggunakannya.', - exceptionErrorTitle: 'Pengecualian terjadi saat menjalankan pekerjaan crawling:', - jinaReaderNotConfiguredDescription: 'Siapkan Jina Reader dengan memasukkan kunci API gratis Anda untuk akses.', - includeOnlyPaths: 'Sertakan hanya jalur', - jinaReaderTitle: 'Konversi seluruh situs ke Markdown', - excludePaths: 'Kecualikan jalur', - unknownError: 'Kesalahan tidak diketahui', - extractOnlyMainContent: 'Ekstrak hanya konten utama (tanpa header, navigasi, footer, dll.)', - useSitemapTooltip: 'Ikuti peta situs untuk meng-crawl situs. Jika tidak, Jina Reader akan merayapi secara berulang berdasarkan relevansi halaman, menghasilkan halaman yang lebih sedikit tetapi berkualitas lebih tinggi.', - maxDepth: 'Kedalaman maks', - jinaReaderDocLink: 'https://jina.ai/reader', - selectAll: 'Pilih Semua', - maxDepthTooltip: 'Kedalaman maksimum untuk di-crawl relatif terhadap URL yang dimasukkan. Kedalaman 0 hanya mengikis halaman url yang dimasukkan, kedalaman 1 mengikis url dan semuanya setelah dimasukkan URL satu /, dan seterusnya.', - waterCrawlNotConfiguredDescription: 'Konfigurasikan Watercrawl dengan kunci API untuk menggunakannya.', - firecrawlDoc: 'Dokumen Firecrawl', - configureWatercrawl: 'Konfigurasikan Watercrawl', - running: 'Menjalankan', - scrapTimeInfo: 'Telah mengumpulkan {{total}} halaman secara total dalam {{time}} detik', - }, - pagePreview: 'Pratinjau Halaman', - notionSyncTitle: 'Notion tidak terhubung', - filePreview: 'Pratinjau File', - cancel: 'Membatalkan', - emptyDatasetCreation: 'Saya ingin membuat Pengetahuan kosong', - button: 'Berikutnya', - notionSyncTip: 'Untuk menyinkronkan dengan Notion, koneksi ke Notion harus dibuat terlebih dahulu.', - connect: 'Hubungkan', - }, - stepTwo: { - paragraph: 'Paragraf', - QATitle: 'Segmentasi dalam format Tanya Jawab', - QALanguage: 'Segmen menggunakan', - custom: 'Adat', - fullDoc: 'Dokumen Lengkap', - overlapCheck: 'Tumpang tindih potongan tidak boleh lebih besar dari panjang potongan maksimum', - economical: 'Ekonomis', - parentChunkForContext: 'Parent-chunk untuk Konteks', - estimateCost: 'Kira', - other: 'dan lainnya', - autoDescription: 'Atur aturan potongan dan prapemrosesan secara otomatis. Pengguna yang tidak dikenal disarankan untuk memilih ini.', - reset: 'Reset', - auto: 'Otomatis', - removeExtraSpaces: 'Mengganti spasi berturut-turut, baris baru, dan tab', - indexMode: 'Metode Indeks', - useQALanguage: 'Potongan menggunakan format Tanya Jawab di', - previousStep: 'Langkah sebelumnya', - warning: 'Silakan siapkan kunci API penyedia model terlebih dahulu.', - paragraphTip: 'Mode ini membagi teks menjadi paragraf berdasarkan pembatas dan panjang potongan maksimum, menggunakan teks terpisah sebagai potongan induk untuk pengambilan.', - separatorTip: 'Pemisah adalah karakter yang digunakan untuk memisahkan teks. \\n\\n dan \\n adalah pembatas yang biasa digunakan untuk memisahkan paragraf dan baris. Dikombinasikan dengan koma (\\n\\n,\\n), paragraf akan disegmentasikan berdasarkan baris saat melebihi panjang potongan maksimum. Anda juga dapat menggunakan pembatas khusus yang ditentukan sendiri (misalnya ***).', - notionSource: 'Halaman praproses', - overlap: 'Tumpang tindih potongan', - click: 'Buka pengaturan', - highQualityTip: 'Setelah selesai menyematkan dalam mode Kualitas Tinggi, kembali ke mode Ekonomis tidak tersedia.', - previewChunk: 'Pratinjau Potongan', - webpageUnit: 'Halaman', - fullDocTip: 'Seluruh dokumen digunakan sebagai potongan induk dan diambil secara langsung. Harap dicatat bahwa untuk alasan kinerja, teks yang melebihi 10000 token akan dipotong secara otomatis.', - maxLength: 'Panjang potongan maksimum', - fileUnit: 'File', - parentChild: 'Orang tua-anak', - estimateSegment: 'Perkiraan potongan', - calculating: 'Menghitung...', - qualified: 'Kualitas Tinggi', - segmentation: 'Pengaturan Potongan', - generalTip: 'Mode pemotongan teks umum, potongan yang diambil dan ditarik kembali sama.', - characters: 'Karakter', - fileSource: 'Praproses dokumen', - parentChildDelimiterTip: 'Pemisah adalah karakter yang digunakan untuk memisahkan teks. \\n\\n direkomendasikan untuk membagi dokumen asli menjadi potongan induk yang besar. Anda juga dapat menggunakan pembatas khusus yang ditentukan sendiri.', - separatorPlaceholder: '\\n\\n untuk paragraf; \\n untuk baris', - qualifiedTip: 'Memanggil model penyematan untuk memproses dokumen untuk pengambilan yang lebih tepat membantu LLM menghasilkan jawaban berkualitas tinggi.', - previewTitle: 'Pratayang', - economicalTip: 'Menggunakan 10 kata kunci per potongan untuk pengambilan, tidak ada token yang dikonsumsi dengan mengorbankan penurunan akurasi pengambilan.', - recommend: 'Merekomendasikan', - segmentCount: 'Potongan', - removeUrlEmails: 'Menghapus semua URL dan alamat email', - childChunkForRetrieval: 'Potongan anak untuk Pengambilan', - cancel: 'Membatalkan', - notionUnit: 'Halaman', - removeStopwords: 'Hapus kata henti seperti "a", "an", "the"', - customDescription: 'Sesuaikan aturan potongan, panjang potongan, dan aturan prapemrosesan, dll.', - overlapTip: 'Mengatur tumpang tindih potongan dapat mempertahankan relevansi semantik di antara mereka, meningkatkan efek pengambilan. Disarankan untuk mengatur 10% -25% dari ukuran potongan maksimum.', - previewSwitchTipStart: 'Pratinjau potongan saat ini dalam format teks, beralih ke pratinjau format tanya jawab akan', - nextStep: 'Simpan & Proses', - previewButton: 'Beralih ke format Tanya Jawab', - notAvailableForQA: 'Tidak tersedia untuk Indeks Tanya Jawab', - previewSwitchTipEnd: 'Konsumsi token tambahan', - retrievalSettingTip: 'Untuk mengubah pengaturan pengambilan, silakan buka', - previewChunkTip: 'Klik tombol \'Pratinjau Potongan\' di sebelah kiri untuk memuat pratinjau', - sideTipP4: 'Potongan dan pembersihan yang tepat meningkatkan kinerja model, memberikan hasil yang lebih akurat dan berharga.', - previewTitleButton: 'Pratayang', - switch: 'Beralih', - datasetSettingLink: 'Pengaturan pengetahuan.', - rules: 'Aturan Pra-pemrosesan Teks', - sideTipP2: 'Segmentasi membagi teks panjang menjadi paragraf sehingga model dapat memahami dengan lebih baik. Ini meningkatkan kualitas dan relevansi hasil model.', - sideTipP1: 'Saat memproses data teks, potongan dan pembersihan adalah dua langkah prapemrosesan yang penting.', - QATip: 'Aktifkan opsi ini akan menggunakan lebih banyak token', - qaSwitchHighQualityTipTitle: 'Format Q&A Membutuhkan Metode Pengindeksan Berkualitas Tinggi', - sideTipTitle: 'Mengapa chunk dan praproses?', - parentChildTip: 'Saat menggunakan mode induk-anak, potongan anak digunakan untuk pengambilan dan potongan induk digunakan untuk penarikan kembali sebagai konteks.', - sideTipP3: 'Pembersihan menghapus karakter dan format yang tidak perlu, membuat Pengetahuan lebih bersih dan lebih mudah diuraikan.', - notAvailableForParentChild: 'Tidak tersedia untuk Indeks Induk-anak', - separator: 'Pembatas', - save: 'Simpan & Proses', - preview: 'Pratayang', - websiteSource: 'Situs web praproses', - parentChildChunkDelimiterTip: 'Pemisah adalah karakter yang digunakan untuk memisahkan teks. \\n direkomendasikan untuk membagi potongan induk menjadi potongan anak kecil. Anda juga dapat menggunakan pembatas khusus yang ditentukan sendiri.', - qaSwitchHighQualityTipContent: 'Saat ini, hanya metode indeks berkualitas tinggi yang mendukung pemotongan format Tanya Jawab. Apakah Anda ingin beralih ke mode berkualitas tinggi?', - general: 'Umum', - indexSettingTip: 'Untuk mengubah metode indeks & model penyematan, silakan pergi ke', - qaTip: 'Saat menggunakan data Tanya Jawab terstruktur, Anda dapat membuat dokumen yang memasangkan pertanyaan dengan jawaban. Dokumen-dokumen ini diindeks berdasarkan bagian pertanyaan, memungkinkan sistem untuk mengambil jawaban yang relevan berdasarkan kesamaan kueri.', - maxLengthCheck: 'Panjang potongan maksimum sebaiknya kurang dari {{limit}}', - previewChunkCount: '{{count}} Potongan perkiraan', - }, - stepThree: { - modelTitle: 'Apakah Anda yakin untuk berhenti menyematkan?', - sideTipTitle: 'Apa selanjutnya', - additionTitle: '🎉 Dokumen diunggah', - creationTitle: '🎉 Pengetahuan yang diciptakan', - additionP2: ', Anda dapat menemukannya di daftar dokumen Pengetahuan.', - additionP1: 'Dokumen telah diunggah ke Knowledge', - navTo: 'Buka dokumen', - resume: 'Melanjutkan pemrosesan', - stop: 'Hentikan pemrosesan', - creationContent: 'Kami secara otomatis menamai Pengetahuan, Anda dapat memodifikasinya kapan saja.', - modelButtonConfirm: 'Konfirmasi', - sideTipContent: 'Setelah dokumen selesai diindeks, Pengetahuan dapat diintegrasikan ke dalam aplikasi sebagai konteks, Anda dapat menemukan pengaturan konteks di halaman orkestrasi perintah. Anda juga dapat membuatnya sebagai plugin pengindeksan ChatGPT independen untuk dirilis.', - modelButtonCancel: 'Membatalkan', - label: 'Nama pengetahuan', - modelContent: 'Jika Anda perlu melanjutkan pemrosesan nanti, Anda akan melanjutkan dari bagian terakhir yang Anda tinggalkan.', - }, - otherDataSource: { - title: 'Terhubung ke sumber data lain?', - learnMore: 'Pelajari lebih lanjut', - description: 'Saat ini, basis pengetahuan Dify hanya memiliki sumber data yang terbatas. Menyumbangkan sumber data ke basis pengetahuan Dify adalah cara yang fantastis untuk membantu meningkatkan fleksibilitas dan kekuatan platform bagi semua pengguna. Panduan kontribusi kami memudahkan untuk memulai. Silakan klik tautan di bawah ini untuk mempelajari lebih lanjut.', - }, -} - -export default translation diff --git a/web/i18n/id-ID/dataset-documents.json b/web/i18n/id-ID/dataset-documents.json new file mode 100644 index 0000000000..2be91a19e3 --- /dev/null +++ b/web/i18n/id-ID/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "table": { + "header": { + "hitCount": "HITUNGAN PENGAMBILAN", + "uploadTime": "WAKTU UNGGAH", + "fileName": "NAMA", + "words": "KATA", + "status": "KEADAAN", + "action": "PERBUATAN", + "chunkingMode": "CHUNKING MODE" + }, + "rename": "Ubah nama", + "name": "Nama" + }, + "action": { + "add": "Tambahkan potongan", + "uploadFile": "Unggah file baru", + "addButton": "Tambahkan potongan", + "delete": "Menghapus", + "archive": "Mengarsipkan", + "pause": "Jeda", + "settings": "Pengaturan Chunking", + "enableWarning": "File yang diarsipkan tidak dapat diaktifkan", + "resume": "Melanjutkan", + "batchAdd": "Tambahkan batch", + "unarchive": "Batalkan arsip", + "sync": "Sync" + }, + "index": { + "all": "Semua", + "enable": "Mengaktifkan", + "enableTip": "File dapat diindeks", + "disableTip": "File tidak dapat diindeks", + "disable": "Menonaktifkan" + }, + "status": { + "error": "Kesalahan", + "archived": "Diarsipkan", + "paused": "Berhenti", + "queuing": "Antrian", + "enabled": "Diaktifkan", + "disabled": "Cacat", + "available": "Tersedia", + "indexing": "Pengindeksan" + }, + "empty": { + "upload": { + "tip": "Anda dapat mengunggah file, menyinkronkan dari situs web, atau dari aplikasi web seperti Notion, GitHub, dll." + }, + "sync": { + "tip": "Dify akan mengunduh file dari Notion Anda secara berkala dan menyelesaikan pemrosesan." + }, + "title": "Belum ada dokumentasi" + }, + "delete": { + "title": "Apakah Anda yakin Hapus?", + "content": "Jika Anda perlu melanjutkan pemrosesan nanti, Anda akan melanjutkan dari bagian terakhir" + }, + "batchModal": { + "cancel": "Membatalkan", + "run": "Jalankan Batch", + "template": "Unduh templat di sini", + "csvUploadTitle": "Seret dan lepas file CSV Anda di sini, atau", + "question": "pertanyaan", + "tip": "File CSV harus sesuai dengan struktur berikut:", + "contentTitle": "konten potongan", + "processing": "Dalam pemrosesan batch", + "content": "puas", + "ok": "OKE", + "error": "Kesalahan Impor", + "completed": "Impor selesai", + "answer": "menjawab", + "runError": "Menjalankan batch gagal", + "browse": "ramban", + "title": "Tambahkan potongan batch" + }, + "desc": "Semua file Pengetahuan ditampilkan di sini, dan seluruh Pengetahuan dapat ditautkan ke kutipan Dify atau diindeks melalui plugin Obrolan.", + "addPages": "Tambahkan Halaman", + "addFile": "Tambahkan file", + "learnMore": "Pelajari lebih lanjut", + "addUrl": "Tambahkan URL", + "title": "Dokumen", + "sort": { + "uploadTime": "Waktu Unggah", + "hitCount": "Jumlah Pengambilan" + } + }, + "metadata": { + "placeholder": { + "select": "Pilih", + "add": "Tambah" + }, + "source": { + "notion": "Sinkronkan formulir Notion", + "upload_file": "Unggah File", + "github": "Sinkronkan formulir Github", + "website_crawl": "Perayapan Situs Web", + "online_document": "Dokumen Online", + "local_file": "File Lokal" + }, + "type": { + "book": "Buku", + "github": "Sinkronkan formulir Github", + "webPage": "Halaman Web", + "paper": "Kertas", + "technicalParameters": "Parameter teknis", + "personalDocument": "Dokumen Pribadi", + "wikipediaEntry": "Entri Wikipedia", + "socialMediaPost": "Postingan Media Sosial", + "notion": "Sinkronkan formulir Notion", + "IMChat": "Obrolan IM", + "businessDocument": "Dokumen Bisnis" + }, + "field": { + "processRule": { + "processClean": "Proses Teks Bersih", + "segmentRule": "Aturan Potongan", + "processDoc": "Dokumen Proses", + "segmentLength": "Panjang Potongan" + }, + "book": { + "publicationDate": "Tanggal Publikasi", + "language": "Bahasa", + "category": "Golongan", + "publisher": "Penerbit", + "ISBN": "ISBN", + "author": "Pengarang", + "title": "Titel" + }, + "webPage": { + "language": "Bahasa", + "authorPublisher": "Penulis/Penerbit", + "description": "Deskripsi", + "topicKeywords": "Topik/Kata Kunci", + "url": "URL", + "title": "Titel", + "publishDate": "Tanggal Publikasi" + }, + "paper": { + "title": "Titel", + "DOI": "DOI", + "volumeIssuePage": "Volume/Edisi/Halaman", + "topicsKeywords": "Topik/Kata Kunci", + "abstract": "Abstrak", + "author": "Pengarang", + "journalConferenceName": "Nama Jurnal/Konferensi", + "language": "Bahasa", + "publishDate": "Tanggal Publikasi" + }, + "socialMediaPost": { + "postURL": "URL posting", + "topicsTags": "Topik/Tag", + "publishDate": "Tanggal Publikasi", + "platform": "Balei-balei", + "authorUsername": "Penulis/Nama Pengguna" + }, + "personalDocument": { + "author": "Pengarang", + "title": "Titel", + "tagsCategory": "Tags/Kategori", + "documentType": "Jenis Dokumen", + "creationDate": "Tanggal Pembuatan", + "lastModifiedDate": "Tanggal Terakhir Diubah" + }, + "businessDocument": { + "creationDate": "Tanggal Pembuatan", + "author": "Pengarang", + "title": "Titel", + "departmentTeam": "Departemen/Tim", + "lastModifiedDate": "Tanggal Terakhir Diubah", + "documentType": "Jenis Dokumen" + }, + "IMChat": { + "endDate": "Tanggal Berakhir", + "participants": "Peserta", + "topicsKeywords": "Topik/Kata Kunci", + "startDate": "Tanggal Mulai", + "fileType": "Jenis File", + "chatPlatform": "Platform Obrolan", + "chatPartiesGroupName": "Chat Party/Nama Grup" + }, + "wikipediaEntry": { + "webpageURL": "URL halaman web", + "title": "Titel", + "language": "Bahasa", + "lastEditDate": "Tanggal Edit Terakhir", + "editorContributor": "Editor/Kontributor", + "summaryIntroduction": "Ringkasan/Pendahuluan" + }, + "notion": { + "url": "URL", + "createdTime": "Waktu yang Diciptakan", + "description": "Deskripsi", + "title": "Titel", + "author": "Pengarang", + "lastModifiedTime": "Waktu Terakhir Dimodifikasi", + "language": "Bahasa", + "tag": "Tag" + }, + "github": { + "repoDesc": "Deskripsi Repo", + "lastCommitTime": "Waktu Komitmen Terakhir", + "lastCommitAuthor": "Penulis Komitmen Terakhir", + "url": "URL", + "fileName": "Nama File", + "programmingLang": "Bahasa pemrograman", + "repoName": "Nama Repo", + "filePath": "Jalur File", + "repoOwner": "Pemilik Repo", + "license": "Lisensi" + }, + "originInfo": { + "source": "Sumber", + "originalFilename": "Nama file asli", + "lastUpdateDate": "Tanggal pembaruan terakhir", + "originalFileSize": "Ukuran file asli", + "uploadDate": "Tanggal upload" + }, + "technicalParameters": { + "avgParagraphLength": "Rata-rata panjang paragraf", + "paragraphs": "Paragraf", + "segmentLength": "Panjang potongan", + "segmentSpecification": "Spesifikasi potongan", + "embeddingTime": "Waktu penyematan", + "embeddedSpend": "Pengeluaran tertanam", + "hitCount": "Jumlah pengambilan" + } + }, + "languageMap": { + "en": "Inggris", + "es": "Spanyol", + "ar": "Arab", + "fr": "Prancis", + "ko": "Korea", + "pl": "Polandia", + "no": "Norwegia", + "tr": "Turki", + "id": "Indonesia", + "ja": "Jepang", + "nl": "Belanda", + "zh": "Cina", + "fi": "Finlandia", + "hi": "Hindi", + "el": "Yunani", + "th": "Thai", + "it": "Italia", + "pt": "Portugis", + "ru": "Rusia", + "he": "Ibrani", + "hu": "Hongaria", + "de": "Jerman", + "da": "Denmark", + "cs": "Ceko", + "sv": "Swedia" + }, + "categoryMap": { + "book": { + "biography": "Biografi", + "businessEconomics": "BisnisEkonomi", + "health": "Kesehatan", + "religion": "Agama", + "poetry": "Puisi", + "technology": "Teknologi", + "travel": "Bepergian", + "science": "Ilmu", + "comicsGraphicNovels": "KomikNovel Grafis", + "philosophy": "Filsafat", + "socialSciences": "Ilmu Sosial", + "cooking": "Memasak", + "other": "Lain", + "selfHelp": "Bantuan Mandiri", + "art": "Seni", + "history": "Sejarah", + "fiction": "Fiksi", + "drama": "Drama", + "childrenYoungAdults": "Anak-anakMudaDewasa", + "education": "Pendidikan" + }, + "personalDoc": { + "bookExcerpt": "Kutipan Buku", + "projectOverview": "Ikhtisar Proyek", + "designDraft": "Draf Desain", + "blogDraft": "Draf Blog", + "codeSnippet": "Cuplikan Kode", + "notes": "Catatan", + "diary": "Buku harian", + "schedule": "Jadwal", + "creativeWriting": "Penulisan Kreatif", + "other": "Lain", + "researchReport": "Laporan Penelitian", + "list": "Daftar", + "personalResume": "Resume Pribadi", + "photoCollection": "Koleksi Foto" + }, + "businessDoc": { + "meetingMinutes": "Risalah Rapat", + "emailCorrespondence": "Korespondensi Email", + "researchReport": "Laporan Penelitian", + "designDocument": "Dokumen Desain", + "productSpecification": "Spesifikasi Produk", + "projectPlan": "Rencana Proyek", + "requirementsDocument": "Dokumen Persyaratan", + "financialReport": "Laporan Keuangan", + "contractsAgreements": "Kontrak & Perjanjian", + "proposal": "Proposal", + "employeeHandbook": "Buku Pegangan Karyawan", + "marketAnalysis": "Analisis Pasar", + "trainingMaterials": "Materi Pelatihan", + "teamStructure": "Struktur Tim", + "other": "Lain", + "policiesProcedures": "Kebijakan & Prosedur" + } + }, + "docTypeSelectWarning": "Jika jenis dokumen diubah, metadata yang sekarang terisi tidak akan lagi dipertahankan", + "firstMetaAction": "Ayo", + "docTypeChangeTitle": "Mengubah jenis dokumen", + "dateTimeFormat": "MMMM D, YYYY hh:mm A", + "docTypeSelectTitle": "Silakan pilih jenis dokumen", + "desc": "Pelabelan metadata untuk dokumen memungkinkan AI mengaksesnya tepat waktu dan mengekspos sumber referensi bagi pengguna.", + "title": "Metadata" + }, + "embedding": { + "completed": "Penyematan selesai", + "processing": "Pemrosesan penyematan...", + "pause": "Jeda", + "textCleaning": "Aturan Prapemrosesan Teks", + "automatic": "Otomatis", + "estimate": "Perkiraan konsumsi", + "economy": "Mode ekonomi", + "error": "Kesalahan penyematan", + "docName": "Dokumen pra-pemrosesan", + "previewTip": "Pratinjau paragraf akan tersedia setelah penyematan selesai", + "mode": "Pengaturan Chunking", + "parentMaxTokens": "Ortu", + "hierarchical": "Orang tua-anak", + "highQuality": "Mode berkualitas tinggi", + "childMaxTokens": "Anak", + "segments": "Paragraf", + "segmentLength": "Panjang Potongan Maksimum", + "paused": "Penyematan dijeda", + "stop": "Hentikan pemrosesan", + "custom": "Adat", + "resume": "Melanjutkan", + "waiting": "Menunggu embedding..." + }, + "segment": { + "searchResults_one": "HASIL", + "editParentChunk": "Edit Potongan Induk", + "contentEmpty": "Konten tidak boleh kosong", + "keywordEmpty": "Kata kunci tidak boleh kosong", + "chunkDetail": "Detail Potongan", + "chunkAdded": "1 potongan ditambahkan", + "collapseChunks": "Ciutkan potongan", + "delete": "Hapus potongan ini ?", + "addChunk": "Tambahkan Potongan", + "childChunks_one": "POTONGAN ANAK", + "empty": "Tidak ada Potongan yang ditemukan", + "regeneratingTitle": "Meregenerasi potongan turunan", + "keywords": "KATA KUNCI", + "answerPlaceholder": "Tambahkan jawaban di sini", + "parentChunks_other": "POTONGAN INDUK", + "childChunk": "Potongan Anak", + "chunk": "Potongan", + "childChunkAdded": "1 potongan anak ditambahkan", + "characters_one": "watak", + "dateTimeFormat": "MM / DD / YYYY h: mm", + "edited": "DIEDIT", + "editChunk": "Edit Potongan", + "regenerationConfirmTitle": "Apakah Anda ingin meregenerasi potongan turunan?", + "searchResults_zero": "HASIL", + "questionPlaceholder": "Tambahkan pertanyaan di sini", + "addAnother": "Tambahkan yang lain", + "expandChunks": "Perluas potongan", + "regenerationSuccessTitle": "Regenerasi selesai", + "answerEmpty": "Jawaban tidak bisa kosong", + "regenerationConfirmMessage": "Meregenerasi potongan turunan akan menimpa potongan turunan saat ini, termasuk potongan yang diedit dan potongan yang baru ditambahkan. Regenerasi tidak dapat dibatalkan.", + "hitCount": "Jumlah pengambilan", + "regeneratingMessage": "Ini mungkin perlu beberapa saat, harap tunggu ...", + "vectorHash": "Hash vektor:", + "editChildChunk": "Edit Potongan Anak", + "keywordError": "Panjang maksimum kata kunci adalah 20", + "addKeyWord": "Tambahkan kata kunci", + "chunks_one": "POTONGAN", + "childChunks_other": "POTONGAN ANAK", + "regenerationSuccessMessage": "Anda dapat menutup jendela ini.", + "editedAt": "Diedit di", + "clearFilter": "Hapus filter", + "characters_other": "Karakter", + "contentPlaceholder": "Tambahkan konten di sini", + "newChunk": "Potongan Baru", + "newTextSegment": "Segmen Teks Baru", + "newChildChunk": "Potongan Anak Baru", + "chunks_other": "POTONGAN", + "questionEmpty": "Pertanyaan tidak bisa kosong", + "parentChunk": "Potongan Induk", + "addChildChunk": "Tambahkan Potongan Anak", + "parentChunks_one": "POTONGAN INDUK", + "keywordDuplicate": "Kata kunci sudah ada", + "paragraphs": "Paragraf", + "newQaSegment": "Segmen Tanya Jawab Baru", + "searchResults_other": "HASIL", + "allFilesUploaded": "Semua file harus diunggah sebelum disimpan" + } +} diff --git a/web/i18n/id-ID/dataset-documents.ts b/web/i18n/id-ID/dataset-documents.ts deleted file mode 100644 index 846c4eae35..0000000000 --- a/web/i18n/id-ID/dataset-documents.ts +++ /dev/null @@ -1,407 +0,0 @@ -const translation = { - list: { - table: { - header: { - hitCount: 'HITUNGAN PENGAMBILAN', - uploadTime: 'WAKTU UNGGAH', - fileName: 'NAMA', - words: 'KATA', - status: 'KEADAAN', - action: 'PERBUATAN', - chunkingMode: 'CHUNKING MODE', - }, - rename: 'Ubah nama', - name: 'Nama', - }, - action: { - add: 'Tambahkan potongan', - uploadFile: 'Unggah file baru', - addButton: 'Tambahkan potongan', - delete: 'Menghapus', - archive: 'Mengarsipkan', - pause: 'Jeda', - settings: 'Pengaturan Chunking', - enableWarning: 'File yang diarsipkan tidak dapat diaktifkan', - resume: 'Melanjutkan', - batchAdd: 'Tambahkan batch', - unarchive: 'Batalkan arsip', - sync: 'Sync', - }, - index: { - all: 'Semua', - enable: 'Mengaktifkan', - enableTip: 'File dapat diindeks', - disableTip: 'File tidak dapat diindeks', - disable: 'Menonaktifkan', - }, - status: { - error: 'Kesalahan', - archived: 'Diarsipkan', - paused: 'Berhenti', - queuing: 'Antrian', - enabled: 'Diaktifkan', - disabled: 'Cacat', - available: 'Tersedia', - indexing: 'Pengindeksan', - }, - empty: { - upload: { - tip: 'Anda dapat mengunggah file, menyinkronkan dari situs web, atau dari aplikasi web seperti Notion, GitHub, dll.', - }, - sync: { - tip: 'Dify akan mengunduh file dari Notion Anda secara berkala dan menyelesaikan pemrosesan.', - }, - title: 'Belum ada dokumentasi', - }, - delete: { - title: 'Apakah Anda yakin Hapus?', - content: 'Jika Anda perlu melanjutkan pemrosesan nanti, Anda akan melanjutkan dari bagian terakhir', - }, - batchModal: { - cancel: 'Membatalkan', - run: 'Jalankan Batch', - template: 'Unduh templat di sini', - csvUploadTitle: 'Seret dan lepas file CSV Anda di sini, atau', - question: 'pertanyaan', - tip: 'File CSV harus sesuai dengan struktur berikut:', - contentTitle: 'konten potongan', - processing: 'Dalam pemrosesan batch', - content: 'puas', - ok: 'OKE', - error: 'Kesalahan Impor', - completed: 'Impor selesai', - answer: 'menjawab', - runError: 'Menjalankan batch gagal', - browse: 'ramban', - title: 'Tambahkan potongan batch', - }, - desc: 'Semua file Pengetahuan ditampilkan di sini, dan seluruh Pengetahuan dapat ditautkan ke kutipan Dify atau diindeks melalui plugin Obrolan.', - addPages: 'Tambahkan Halaman', - addFile: 'Tambahkan file', - learnMore: 'Pelajari lebih lanjut', - addUrl: 'Tambahkan URL', - title: 'Dokumen', - sort: { - uploadTime: 'Waktu Unggah', - hitCount: 'Jumlah Pengambilan', - }, - }, - metadata: { - placeholder: { - select: 'Pilih', - add: 'Tambah', - }, - source: { - notion: 'Sinkronkan formulir Notion', - upload_file: 'Unggah File', - github: 'Sinkronkan formulir Github', - website_crawl: 'Perayapan Situs Web', - online_document: 'Dokumen Online', - local_file: 'File Lokal', - }, - type: { - book: 'Buku', - github: 'Sinkronkan formulir Github', - webPage: 'Halaman Web', - paper: 'Kertas', - technicalParameters: 'Parameter teknis', - personalDocument: 'Dokumen Pribadi', - wikipediaEntry: 'Entri Wikipedia', - socialMediaPost: 'Postingan Media Sosial', - notion: 'Sinkronkan formulir Notion', - IMChat: 'Obrolan IM', - businessDocument: 'Dokumen Bisnis', - }, - field: { - processRule: { - processClean: 'Proses Teks Bersih', - segmentRule: 'Aturan Potongan', - processDoc: 'Dokumen Proses', - segmentLength: 'Panjang Potongan', - }, - book: { - publicationDate: 'Tanggal Publikasi', - language: 'Bahasa', - category: 'Golongan', - publisher: 'Penerbit', - ISBN: 'ISBN', - author: 'Pengarang', - title: 'Titel', - }, - webPage: { - language: 'Bahasa', - authorPublisher: 'Penulis/Penerbit', - description: 'Deskripsi', - topicKeywords: 'Topik/Kata Kunci', - url: 'URL', - title: 'Titel', - publishDate: 'Tanggal Publikasi', - }, - paper: { - title: 'Titel', - DOI: 'DOI', - volumeIssuePage: 'Volume/Edisi/Halaman', - topicsKeywords: 'Topik/Kata Kunci', - abstract: 'Abstrak', - author: 'Pengarang', - journalConferenceName: 'Nama Jurnal/Konferensi', - language: 'Bahasa', - publishDate: 'Tanggal Publikasi', - }, - socialMediaPost: { - postURL: 'URL posting', - topicsTags: 'Topik/Tag', - publishDate: 'Tanggal Publikasi', - platform: 'Balei-balei', - authorUsername: 'Penulis/Nama Pengguna', - }, - personalDocument: { - author: 'Pengarang', - title: 'Titel', - tagsCategory: 'Tags/Kategori', - documentType: 'Jenis Dokumen', - creationDate: 'Tanggal Pembuatan', - lastModifiedDate: 'Tanggal Terakhir Diubah', - }, - businessDocument: { - creationDate: 'Tanggal Pembuatan', - author: 'Pengarang', - title: 'Titel', - departmentTeam: 'Departemen/Tim', - lastModifiedDate: 'Tanggal Terakhir Diubah', - documentType: 'Jenis Dokumen', - }, - IMChat: { - endDate: 'Tanggal Berakhir', - participants: 'Peserta', - topicsKeywords: 'Topik/Kata Kunci', - startDate: 'Tanggal Mulai', - fileType: 'Jenis File', - chatPlatform: 'Platform Obrolan', - chatPartiesGroupName: 'Chat Party/Nama Grup', - }, - wikipediaEntry: { - webpageURL: 'URL halaman web', - title: 'Titel', - language: 'Bahasa', - lastEditDate: 'Tanggal Edit Terakhir', - editorContributor: 'Editor/Kontributor', - summaryIntroduction: 'Ringkasan/Pendahuluan', - }, - notion: { - url: 'URL', - createdTime: 'Waktu yang Diciptakan', - description: 'Deskripsi', - title: 'Titel', - author: 'Pengarang', - lastModifiedTime: 'Waktu Terakhir Dimodifikasi', - language: 'Bahasa', - tag: 'Tag', - }, - github: { - repoDesc: 'Deskripsi Repo', - lastCommitTime: 'Waktu Komitmen Terakhir', - lastCommitAuthor: 'Penulis Komitmen Terakhir', - url: 'URL', - fileName: 'Nama File', - programmingLang: 'Bahasa pemrograman', - repoName: 'Nama Repo', - filePath: 'Jalur File', - repoOwner: 'Pemilik Repo', - license: 'Lisensi', - }, - originInfo: { - source: 'Sumber', - originalFilename: 'Nama file asli', - lastUpdateDate: 'Tanggal pembaruan terakhir', - originalFileSize: 'Ukuran file asli', - uploadDate: 'Tanggal upload', - }, - technicalParameters: { - avgParagraphLength: 'Rata-rata panjang paragraf', - paragraphs: 'Paragraf', - segmentLength: 'Panjang potongan', - segmentSpecification: 'Spesifikasi potongan', - embeddingTime: 'Waktu penyematan', - embeddedSpend: 'Pengeluaran tertanam', - hitCount: 'Jumlah pengambilan', - }, - }, - languageMap: { - en: 'Inggris', - es: 'Spanyol', - ar: 'Arab', - fr: 'Prancis', - ko: 'Korea', - pl: 'Polandia', - no: 'Norwegia', - tr: 'Turki', - id: 'Indonesia', - ja: 'Jepang', - nl: 'Belanda', - zh: 'Cina', - fi: 'Finlandia', - hi: 'Hindi', - el: 'Yunani', - th: 'Thai', - it: 'Italia', - pt: 'Portugis', - ru: 'Rusia', - he: 'Ibrani', - hu: 'Hongaria', - de: 'Jerman', - da: 'Denmark', - cs: 'Ceko', - sv: 'Swedia', - }, - categoryMap: { - book: { - biography: 'Biografi', - businessEconomics: 'BisnisEkonomi', - health: 'Kesehatan', - religion: 'Agama', - poetry: 'Puisi', - technology: 'Teknologi', - travel: 'Bepergian', - science: 'Ilmu', - comicsGraphicNovels: 'KomikNovel Grafis', - philosophy: 'Filsafat', - socialSciences: 'Ilmu Sosial', - cooking: 'Memasak', - other: 'Lain', - selfHelp: 'Bantuan Mandiri', - art: 'Seni', - history: 'Sejarah', - fiction: 'Fiksi', - drama: 'Drama', - childrenYoungAdults: 'Anak-anakMudaDewasa', - education: 'Pendidikan', - }, - personalDoc: { - bookExcerpt: 'Kutipan Buku', - projectOverview: 'Ikhtisar Proyek', - designDraft: 'Draf Desain', - blogDraft: 'Draf Blog', - codeSnippet: 'Cuplikan Kode', - notes: 'Catatan', - diary: 'Buku harian', - schedule: 'Jadwal', - creativeWriting: 'Penulisan Kreatif', - other: 'Lain', - researchReport: 'Laporan Penelitian', - list: 'Daftar', - personalResume: 'Resume Pribadi', - photoCollection: 'Koleksi Foto', - }, - businessDoc: { - meetingMinutes: 'Risalah Rapat', - emailCorrespondence: 'Korespondensi Email', - researchReport: 'Laporan Penelitian', - designDocument: 'Dokumen Desain', - productSpecification: 'Spesifikasi Produk', - projectPlan: 'Rencana Proyek', - requirementsDocument: 'Dokumen Persyaratan', - financialReport: 'Laporan Keuangan', - contractsAgreements: 'Kontrak & Perjanjian', - proposal: 'Proposal', - employeeHandbook: 'Buku Pegangan Karyawan', - marketAnalysis: 'Analisis Pasar', - trainingMaterials: 'Materi Pelatihan', - teamStructure: 'Struktur Tim', - other: 'Lain', - policiesProcedures: 'Kebijakan & Prosedur', - }, - }, - docTypeSelectWarning: 'Jika jenis dokumen diubah, metadata yang sekarang terisi tidak akan lagi dipertahankan', - firstMetaAction: 'Ayo', - docTypeChangeTitle: 'Mengubah jenis dokumen', - dateTimeFormat: 'MMMM D, YYYY hh:mm A', - docTypeSelectTitle: 'Silakan pilih jenis dokumen', - desc: 'Pelabelan metadata untuk dokumen memungkinkan AI mengaksesnya tepat waktu dan mengekspos sumber referensi bagi pengguna.', - title: 'Metadata', - }, - embedding: { - completed: 'Penyematan selesai', - processing: 'Pemrosesan penyematan...', - pause: 'Jeda', - textCleaning: 'Aturan Prapemrosesan Teks', - automatic: 'Otomatis', - estimate: 'Perkiraan konsumsi', - economy: 'Mode ekonomi', - error: 'Kesalahan penyematan', - docName: 'Dokumen pra-pemrosesan', - previewTip: 'Pratinjau paragraf akan tersedia setelah penyematan selesai', - mode: 'Pengaturan Chunking', - parentMaxTokens: 'Ortu', - hierarchical: 'Orang tua-anak', - highQuality: 'Mode berkualitas tinggi', - childMaxTokens: 'Anak', - segments: 'Paragraf', - segmentLength: 'Panjang Potongan Maksimum', - paused: 'Penyematan dijeda', - stop: 'Hentikan pemrosesan', - custom: 'Adat', - resume: 'Melanjutkan', - waiting: 'Menunggu embedding...', - }, - segment: { - searchResults_one: 'HASIL', - editParentChunk: 'Edit Potongan Induk', - contentEmpty: 'Konten tidak boleh kosong', - keywordEmpty: 'Kata kunci tidak boleh kosong', - chunkDetail: 'Detail Potongan', - chunkAdded: '1 potongan ditambahkan', - collapseChunks: 'Ciutkan potongan', - delete: 'Hapus potongan ini ?', - addChunk: 'Tambahkan Potongan', - childChunks_one: 'POTONGAN ANAK', - empty: 'Tidak ada Potongan yang ditemukan', - regeneratingTitle: 'Meregenerasi potongan turunan', - keywords: 'KATA KUNCI', - answerPlaceholder: 'Tambahkan jawaban di sini', - parentChunks_other: 'POTONGAN INDUK', - childChunk: 'Potongan Anak', - chunk: 'Potongan', - childChunkAdded: '1 potongan anak ditambahkan', - characters_one: 'watak', - dateTimeFormat: 'MM / DD / YYYY h: mm', - edited: 'DIEDIT', - editChunk: 'Edit Potongan', - regenerationConfirmTitle: 'Apakah Anda ingin meregenerasi potongan turunan?', - searchResults_zero: 'HASIL', - questionPlaceholder: 'Tambahkan pertanyaan di sini', - addAnother: 'Tambahkan yang lain', - expandChunks: 'Perluas potongan', - regenerationSuccessTitle: 'Regenerasi selesai', - answerEmpty: 'Jawaban tidak bisa kosong', - regenerationConfirmMessage: 'Meregenerasi potongan turunan akan menimpa potongan turunan saat ini, termasuk potongan yang diedit dan potongan yang baru ditambahkan. Regenerasi tidak dapat dibatalkan.', - hitCount: 'Jumlah pengambilan', - regeneratingMessage: 'Ini mungkin perlu beberapa saat, harap tunggu ...', - vectorHash: 'Hash vektor:', - editChildChunk: 'Edit Potongan Anak', - keywordError: 'Panjang maksimum kata kunci adalah 20', - addKeyWord: 'Tambahkan kata kunci', - chunks_one: 'POTONGAN', - childChunks_other: 'POTONGAN ANAK', - regenerationSuccessMessage: 'Anda dapat menutup jendela ini.', - editedAt: 'Diedit di', - clearFilter: 'Hapus filter', - characters_other: 'Karakter', - contentPlaceholder: 'Tambahkan konten di sini', - newChunk: 'Potongan Baru', - newTextSegment: 'Segmen Teks Baru', - newChildChunk: 'Potongan Anak Baru', - chunks_other: 'POTONGAN', - questionEmpty: 'Pertanyaan tidak bisa kosong', - parentChunk: 'Potongan Induk', - addChildChunk: 'Tambahkan Potongan Anak', - parentChunks_one: 'POTONGAN INDUK', - keywordDuplicate: 'Kata kunci sudah ada', - paragraphs: 'Paragraf', - newQaSegment: 'Segmen Tanya Jawab Baru', - searchResults_other: 'HASIL', - allFilesUploaded: 'Semua file harus diunggah sebelum disimpan', - }, -} - -export default translation diff --git a/web/i18n/id-ID/dataset-hit-testing.json b/web/i18n/id-ID/dataset-hit-testing.json new file mode 100644 index 0000000000..3b5f2af53d --- /dev/null +++ b/web/i18n/id-ID/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "table": { + "header": { + "source": "Sumber", + "time": "Waktu", + "queryContent": "Konten Query" + } + }, + "input": { + "title": "Teks sumber", + "countWarning": "Hingga 200 karakter.", + "placeholder": "Silakan masukkan teks, disarankan untuk memasukkan kalimat deklaratif singkat.", + "indexWarning": "Pengetahuan berkualitas tinggi saja.", + "testing": "Pengujian" + }, + "hit": { + "emptyTip": "Hasil Pengujian Pengambilan akan ditampilkan di sini", + "title": "{{num}} Potongan yang Diambil" + }, + "keyword": "Kata kunci", + "noRecentTip": "Tidak ada hasil kueri terbaru di sini", + "records": "Catatan", + "open": "Buka", + "settingTitle": "Pengaturan Pengambilan", + "dateTimeFormat": "MM / DD / YYYY hh: mm A", + "desc": "Uji dampak pengetahuan terhadap hasil pencarian berdasarkan teks kueri yang diberikan.", + "viewDetail": "Lihat Detail", + "viewChart": "Lihat GRAFIK VAKTOR", + "chunkDetail": "Detail Potongan", + "title": "Tes Pengambilan", + "hitChunks": "Pukul {{num}} potongan anak", + "imageUploader": { + "tip": "Unggah atau seret gambar (Maks {{batchCount}}, {{size}}MB masing-masing)", + "tooltip": "Unggah gambar (Maks {{batchCount}}, {{size}}MB tiap gambar)", + "dropZoneTip": "Seret file di sini untuk mengunggah", + "singleChunkAttachmentLimitTooltip": "Jumlah lampiran satu potong tidak boleh melebihi {{limit}}" + } +} diff --git a/web/i18n/id-ID/dataset-hit-testing.ts b/web/i18n/id-ID/dataset-hit-testing.ts deleted file mode 100644 index ce52dc9b82..0000000000 --- a/web/i18n/id-ID/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - table: { - header: { - source: 'Sumber', - time: 'Waktu', - queryContent: 'Konten Query', - }, - }, - input: { - title: 'Teks sumber', - countWarning: 'Hingga 200 karakter.', - placeholder: 'Silakan masukkan teks, disarankan untuk memasukkan kalimat deklaratif singkat.', - indexWarning: 'Pengetahuan berkualitas tinggi saja.', - testing: 'Pengujian', - }, - hit: { - emptyTip: 'Hasil Pengujian Pengambilan akan ditampilkan di sini', - title: '{{num}} Potongan yang Diambil', - }, - keyword: 'Kata kunci', - noRecentTip: 'Tidak ada hasil kueri terbaru di sini', - records: 'Catatan', - open: 'Buka', - settingTitle: 'Pengaturan Pengambilan', - dateTimeFormat: 'MM / DD / YYYY hh: mm A', - desc: 'Uji dampak pengetahuan terhadap hasil pencarian berdasarkan teks kueri yang diberikan.', - viewDetail: 'Lihat Detail', - viewChart: 'Lihat GRAFIK VAKTOR', - chunkDetail: 'Detail Potongan', - title: 'Tes Pengambilan', - hitChunks: 'Pukul {{num}} potongan anak', - imageUploader: { - tip: 'Unggah atau seret gambar (Maks {{batchCount}}, {{size}}MB masing-masing)', - tooltip: 'Unggah gambar (Maks {{batchCount}}, {{size}}MB tiap gambar)', - dropZoneTip: 'Seret file di sini untuk mengunggah', - singleChunkAttachmentLimitTooltip: 'Jumlah lampiran satu potong tidak boleh melebihi {{limit}}', - }, -} - -export default translation diff --git a/web/i18n/id-ID/dataset-pipeline.json b/web/i18n/id-ID/dataset-pipeline.json new file mode 100644 index 0000000000..9b415d8535 --- /dev/null +++ b/web/i18n/id-ID/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "createFromScratch": { + "title": "Alur pengetahuan kosong", + "description": "Buat alur kustom dari awal dengan kontrol penuh atas pemrosesan dan struktur data." + }, + "caution": "Hati", + "createKnowledge": "Ciptakan Pengetahuan", + "errorTip": "Gagal membuat Basis Pengetahuan", + "backToKnowledge": "Kembali ke Pengetahuan", + "successTip": "Berhasil membuat Basis Pengetahuan", + "importDSL": "Mengimpor dari file DSL" + }, + "templates": { + "customized": "Disesuaikan" + }, + "operations": { + "choose": "Memilih", + "convert": "Mengkonversi", + "preview": "Pratayang", + "saveAndProcess": "Simpan & Proses", + "process": "Proses", + "details": "Rincian", + "backToDataSource": "Kembali ke Sumber Data", + "editInfo": "Edit info", + "dataSource": "Sumber Data", + "exportPipeline": "Pipa Ekspor", + "useTemplate": "Gunakan Alur Pengetahuan ini" + }, + "deletePipeline": { + "title": "Apakah Anda yakin akan menghapus templat alur ini?", + "content": "Menghapus templat alur tidak dapat diubah." + }, + "publishPipeline": { + "success": { + "message": "Alur Pengetahuan Diterbitkan", + "tip": "Buka Dokumen untuk menambahkan atau mengelola dokumen." + }, + "error": { + "message": "Gagal Menerbitkan Alur Pengetahuan" + } + }, + "publishTemplate": { + "success": { + "learnMore": "Pelajari lebih lanjut", + "message": "Templat Alur Diterbitkan", + "tip": "Anda dapat menggunakan template ini di halaman pembuatan." + }, + "error": { + "message": "Gagal menerbitkan templat alur" + } + }, + "exportDSL": { + "successTip": "Ekspor DSL pipeline berhasil", + "errorTip": "Gagal mengekspor DSL alur" + }, + "details": { + "structure": "Struktur", + "structureTooltip": "Struktur Potongan menentukan bagaimana dokumen dibagi dan diindeks—menawarkan mode Umum, Induk-Anak, dan Tanya Jawab—dan unik untuk setiap basis pengetahuan.", + "createdBy": "Oleh {{author}}" + }, + "testRun": { + "steps": { + "documentProcessing": "Pemrosesan Dokumen", + "dataSource": "Sumber Data" + }, + "dataSource": { + "localFiles": "File Lokal" + }, + "notion": { + "docTitle": "Dokumen gagasan", + "title": "Pilih Halaman Notion" + }, + "title": "Uji Coba", + "tooltip": "Dalam mode uji coba, hanya satu dokumen yang diizinkan untuk diimpor pada satu waktu untuk penelusuran kesalahan dan pengamatan yang lebih mudah." + }, + "inputFieldPanel": { + "uniqueInputs": { + "title": "Input Unik untuk Setiap Pintu Masuk", + "tooltip": "Input Unik hanya dapat diakses oleh sumber data yang dipilih dan simpul hilirnya. Pengguna tidak perlu mengisinya saat memilih sumber data lain. Hanya bidang input yang direferensikan oleh variabel sumber data yang akan muncul di langkah pertama (Sumber Data). Semua bidang lainnya akan ditampilkan pada langkah kedua (Proses Dokumen)." + }, + "globalInputs": { + "title": "Input Global untuk Semua Pintu Masuk", + "tooltip": "Input Global dibagikan di semua simpul. Pengguna harus mengisinya saat memilih sumber data apa pun. Misalnya, bidang seperti pembatas dan panjang potongan maksimum dapat diterapkan secara seragam di beberapa sumber data. Hanya bidang input yang direferensikan oleh variabel Sumber Data yang muncul di langkah pertama (Sumber Data). Semua bidang lainnya muncul di langkah kedua (Proses Dokumen)." + }, + "preview": { + "stepTwoTitle": "Dokumen Proses", + "stepOneTitle": "Sumber Data" + }, + "error": { + "variableDuplicate": "Nama variabel sudah ada. Silakan pilih nama yang berbeda." + }, + "title": "Bidang Input Pengguna", + "editInputField": "Edit Bidang Input", + "addInputField": "Tambahkan Bidang Input", + "description": "Bidang input pengguna digunakan untuk menentukan dan mengumpulkan variabel yang diperlukan selama proses eksekusi alur. Pengguna dapat menyesuaikan jenis bidang dan mengonfigurasi nilai input secara fleksibel untuk memenuhi kebutuhan sumber data atau langkah pemrosesan dokumen yang berbeda." + }, + "addDocuments": { + "steps": { + "processDocuments": "Dokumen Proses", + "processingDocuments": "Memproses Dokumen", + "chooseDatasource": "Pilih Sumber Data" + }, + "stepOne": { + "preview": "Pratayang" + }, + "stepTwo": { + "chunkSettings": "Pengaturan Potongan", + "previewChunks": "Pratinjau Potongan" + }, + "stepThree": { + "learnMore": "Pelajari lebih lanjut" + }, + "title": "Tambahkan Dokumen", + "backToDataSource": "Sumber Data", + "characters": "Karakter", + "selectOnlineDocumentTip": "Proses hingga {{count}} halaman", + "selectOnlineDriveTip": "Proses hingga {{count}} file, maksimum {{fileSize}} MB masing-masing" + }, + "documentSettings": { + "title": "Pengaturan Dokumen" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} halaman" + }, + "onlineDrive": { + "breadcrumbs": { + "allFiles": "Semua File", + "allBuckets": "Semua Bucket Penyimpanan Cloud", + "searchPlaceholder": "Cari file...", + "searchResult": "Temukan {{searchResultsLength}} item di folder \"{{folderName}}\"" + }, + "resetKeywords": "Mengatur ulang kata kunci", + "notSupportedFileType": "Jenis file ini tidak didukung", + "emptySearchResult": "Tidak ada barang yang ditemukan", + "emptyFolder": "Folder ini kosong", + "notConnected": "{{name}} tidak terhubung", + "notConnectedTip": "Untuk menyinkronkan dengan {{name}}, koneksi ke {{name}} harus dibuat terlebih dahulu." + }, + "conversion": { + "confirm": { + "title": "Konfirmasi", + "content": "Tindakan ini bersifat permanen. Anda tidak akan dapat kembali ke metode sebelumnya. Silakan konfirmasi untuk mengonversi." + }, + "warning": "Tindakan ini tidak dapat dibatalkan.", + "descriptionChunk2": "— pendekatan yang lebih terbuka dan fleksibel dengan akses ke plugin dari pasar kami. Ini akan menerapkan metode pemrosesan baru untuk semua dokumen di masa mendatang.", + "successMessage": "Berhasil mengonversi himpunan data menjadi alur", + "errorMessage": "Gagal mengonversi himpunan data ke alur", + "descriptionChunk1": "Anda sekarang dapat mengonversi basis pengetahuan yang ada untuk menggunakan Knowledge Pipeline untuk pemrosesan dokumen", + "title": "Mengonversi ke Alur Pengetahuan" + }, + "knowledgePermissions": "Izin", + "pipelineNameAndIcon": "Nama & ikon pipa", + "inputField": "Bidang Masukan", + "knowledgeDescription": "Deskripsi pengetahuan", + "knowledgeNameAndIconPlaceholder": "Silakan masukkan nama Basis Pengetahuan", + "knowledgeNameAndIcon": "Nama & ikon pengetahuan", + "knowledgeDescriptionPlaceholder": "Jelaskan apa yang ada di Basis Pengetahuan ini. Deskripsi terperinci memungkinkan AI mengakses konten kumpulan data dengan lebih akurat. Jika kosong, Dify akan menggunakan strategi hit default. (Opsional)", + "editPipelineInfo": "Mengedit info alur", + "configurationTip": "Konfigurasikan {{pluginName}}" +} diff --git a/web/i18n/id-ID/dataset-pipeline.ts b/web/i18n/id-ID/dataset-pipeline.ts deleted file mode 100644 index c3c2b04e15..0000000000 --- a/web/i18n/id-ID/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - createFromScratch: { - title: 'Alur pengetahuan kosong', - description: 'Buat alur kustom dari awal dengan kontrol penuh atas pemrosesan dan struktur data.', - }, - caution: 'Hati', - createKnowledge: 'Ciptakan Pengetahuan', - errorTip: 'Gagal membuat Basis Pengetahuan', - backToKnowledge: 'Kembali ke Pengetahuan', - successTip: 'Berhasil membuat Basis Pengetahuan', - importDSL: 'Mengimpor dari file DSL', - }, - templates: { - customized: 'Disesuaikan', - }, - operations: { - choose: 'Memilih', - convert: 'Mengkonversi', - preview: 'Pratayang', - saveAndProcess: 'Simpan & Proses', - process: 'Proses', - details: 'Rincian', - backToDataSource: 'Kembali ke Sumber Data', - editInfo: 'Edit info', - dataSource: 'Sumber Data', - exportPipeline: 'Pipa Ekspor', - useTemplate: 'Gunakan Alur Pengetahuan ini', - }, - deletePipeline: { - title: 'Apakah Anda yakin akan menghapus templat alur ini?', - content: 'Menghapus templat alur tidak dapat diubah.', - }, - publishPipeline: { - success: { - message: 'Alur Pengetahuan Diterbitkan', - tip: 'Buka Dokumen untuk menambahkan atau mengelola dokumen.', - }, - error: { - message: 'Gagal Menerbitkan Alur Pengetahuan', - }, - }, - publishTemplate: { - success: { - learnMore: 'Pelajari lebih lanjut', - message: 'Templat Alur Diterbitkan', - tip: 'Anda dapat menggunakan template ini di halaman pembuatan.', - }, - error: { - message: 'Gagal menerbitkan templat alur', - }, - }, - exportDSL: { - successTip: 'Ekspor DSL pipeline berhasil', - errorTip: 'Gagal mengekspor DSL alur', - }, - details: { - structure: 'Struktur', - structureTooltip: 'Struktur Potongan menentukan bagaimana dokumen dibagi dan diindeks—menawarkan mode Umum, Induk-Anak, dan Tanya Jawab—dan unik untuk setiap basis pengetahuan.', - createdBy: 'Oleh {{author}}', - }, - testRun: { - steps: { - documentProcessing: 'Pemrosesan Dokumen', - dataSource: 'Sumber Data', - }, - dataSource: { - localFiles: 'File Lokal', - }, - notion: { - docTitle: 'Dokumen gagasan', - title: 'Pilih Halaman Notion', - }, - title: 'Uji Coba', - tooltip: 'Dalam mode uji coba, hanya satu dokumen yang diizinkan untuk diimpor pada satu waktu untuk penelusuran kesalahan dan pengamatan yang lebih mudah.', - }, - inputFieldPanel: { - uniqueInputs: { - title: 'Input Unik untuk Setiap Pintu Masuk', - tooltip: 'Input Unik hanya dapat diakses oleh sumber data yang dipilih dan simpul hilirnya. Pengguna tidak perlu mengisinya saat memilih sumber data lain. Hanya bidang input yang direferensikan oleh variabel sumber data yang akan muncul di langkah pertama (Sumber Data). Semua bidang lainnya akan ditampilkan pada langkah kedua (Proses Dokumen).', - }, - globalInputs: { - title: 'Input Global untuk Semua Pintu Masuk', - tooltip: 'Input Global dibagikan di semua simpul. Pengguna harus mengisinya saat memilih sumber data apa pun. Misalnya, bidang seperti pembatas dan panjang potongan maksimum dapat diterapkan secara seragam di beberapa sumber data. Hanya bidang input yang direferensikan oleh variabel Sumber Data yang muncul di langkah pertama (Sumber Data). Semua bidang lainnya muncul di langkah kedua (Proses Dokumen).', - }, - preview: { - stepTwoTitle: 'Dokumen Proses', - stepOneTitle: 'Sumber Data', - }, - error: { - variableDuplicate: 'Nama variabel sudah ada. Silakan pilih nama yang berbeda.', - }, - title: 'Bidang Input Pengguna', - editInputField: 'Edit Bidang Input', - addInputField: 'Tambahkan Bidang Input', - description: 'Bidang input pengguna digunakan untuk menentukan dan mengumpulkan variabel yang diperlukan selama proses eksekusi alur. Pengguna dapat menyesuaikan jenis bidang dan mengonfigurasi nilai input secara fleksibel untuk memenuhi kebutuhan sumber data atau langkah pemrosesan dokumen yang berbeda.', - }, - addDocuments: { - steps: { - processDocuments: 'Dokumen Proses', - processingDocuments: 'Memproses Dokumen', - chooseDatasource: 'Pilih Sumber Data', - }, - stepOne: { - preview: 'Pratayang', - }, - stepTwo: { - chunkSettings: 'Pengaturan Potongan', - previewChunks: 'Pratinjau Potongan', - }, - stepThree: { - learnMore: 'Pelajari lebih lanjut', - }, - title: 'Tambahkan Dokumen', - backToDataSource: 'Sumber Data', - characters: 'Karakter', - selectOnlineDocumentTip: 'Proses hingga {{count}} halaman', - selectOnlineDriveTip: 'Proses hingga {{count}} file, maksimum {{fileSize}} MB masing-masing', - }, - documentSettings: { - title: 'Pengaturan Dokumen', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} halaman', - }, - onlineDrive: { - breadcrumbs: { - allFiles: 'Semua File', - allBuckets: 'Semua Bucket Penyimpanan Cloud', - searchPlaceholder: 'Cari file...', - searchResult: 'Temukan {{searchResultsLength}} item di folder "{{folderName}}"', - }, - resetKeywords: 'Mengatur ulang kata kunci', - notSupportedFileType: 'Jenis file ini tidak didukung', - emptySearchResult: 'Tidak ada barang yang ditemukan', - emptyFolder: 'Folder ini kosong', - notConnected: '{{name}} tidak terhubung', - notConnectedTip: 'Untuk menyinkronkan dengan {{name}}, koneksi ke {{name}} harus dibuat terlebih dahulu.', - }, - conversion: { - confirm: { - title: 'Konfirmasi', - content: 'Tindakan ini bersifat permanen. Anda tidak akan dapat kembali ke metode sebelumnya. Silakan konfirmasi untuk mengonversi.', - }, - warning: 'Tindakan ini tidak dapat dibatalkan.', - descriptionChunk2: '— pendekatan yang lebih terbuka dan fleksibel dengan akses ke plugin dari pasar kami. Ini akan menerapkan metode pemrosesan baru untuk semua dokumen di masa mendatang.', - successMessage: 'Berhasil mengonversi himpunan data menjadi alur', - errorMessage: 'Gagal mengonversi himpunan data ke alur', - descriptionChunk1: 'Anda sekarang dapat mengonversi basis pengetahuan yang ada untuk menggunakan Knowledge Pipeline untuk pemrosesan dokumen', - title: 'Mengonversi ke Alur Pengetahuan', - }, - knowledgePermissions: 'Izin', - pipelineNameAndIcon: 'Nama & ikon pipa', - inputField: 'Bidang Masukan', - knowledgeDescription: 'Deskripsi pengetahuan', - knowledgeNameAndIconPlaceholder: 'Silakan masukkan nama Basis Pengetahuan', - knowledgeNameAndIcon: 'Nama & ikon pengetahuan', - knowledgeDescriptionPlaceholder: 'Jelaskan apa yang ada di Basis Pengetahuan ini. Deskripsi terperinci memungkinkan AI mengakses konten kumpulan data dengan lebih akurat. Jika kosong, Dify akan menggunakan strategi hit default. (Opsional)', - editPipelineInfo: 'Mengedit info alur', - configurationTip: 'Konfigurasikan {{pluginName}}', -} - -export default translation diff --git a/web/i18n/id-ID/dataset-settings.json b/web/i18n/id-ID/dataset-settings.json new file mode 100644 index 0000000000..c245d8c774 --- /dev/null +++ b/web/i18n/id-ID/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "form": { + "retrievalSetting": { + "title": "Pengaturan Pengambilan", + "description": "tentang metode pengambilan.", + "longDescription": "tentang metode pengambilan, Anda dapat mengunduhnya kapan saja di pengaturan Pengetahuan.", + "method": "Metode Pengambilan", + "learnMore": "Pelajari lebih lanjut", + "multiModalTip": "Saat model embedding mendukung multi-modal, harap pilih model rerank multi-modal untuk kinerja yang lebih baik." + }, + "save": "Simpan", + "embeddingModel": "Menyematkan Model", + "namePlaceholder": "Silakan masukkan nama Pengetahuan", + "permissions": "Izin", + "embeddingModelTipLink": "Pengaturan", + "descInfo": "Silakan tulis deskripsi tekstual yang jelas untuk menguraikan isi Pengetahuan. Deskripsi ini akan digunakan sebagai dasar untuk pencocokan saat memilih dari beberapa Pengetahuan untuk inferensi.", + "searchModel": "Model pencarian", + "nameError": "Nama tidak boleh kosong", + "indexMethodEconomy": "Ekonomis", + "indexMethodHighQuality": "Kualitas Tinggi", + "permissionsInvitedMembers": "Anggota tim parsial", + "permissionsAllMember": "Semua anggota tim", + "desc": "Deskripsi Pengetahuan", + "upgradeHighQualityTip": "Setelah memutakhirkan ke mode Kualitas Tinggi, kembali ke mode Ekonomis tidak tersedia", + "descPlaceholder": "Jelaskan apa yang ada dalam kumpulan data ini. Deskripsi terperinci memungkinkan AI mengakses konten kumpulan data tepat waktu. Jika kosong, Dify akan menggunakan strategi hit default.", + "retrievalSettings": "Pengaturan Pengambilan", + "indexMethodChangeToEconomyDisabledTip": "Tidak tersedia untuk downgrade dari HQ ke ECO", + "indexMethod": "Metode Indeks", + "me": "(Anda)", + "externalKnowledgeID": "ID Pengetahuan Eksternal", + "descWrite": "Pelajari cara menulis deskripsi Pengetahuan yang baik.", + "name": "Nama Pengetahuan", + "embeddingModelTip": "Ubah model yang disematkan, silakan buka", + "externalKnowledgeAPI": "API Pengetahuan Eksternal", + "helpText": "Pelajari cara menulis deskripsi himpunan data yang baik.", + "indexMethodHighQualityTip": "Memanggil model penyematan untuk memproses dokumen untuk pengambilan yang lebih tepat membantu LLM menghasilkan jawaban berkualitas tinggi.", + "permissionsOnlyMe": "Hanya saya", + "indexMethodEconomyTip": "Menggunakan 10 kata kunci per potongan untuk pengambilan, tidak ada token yang dikonsumsi dengan mengorbankan penurunan akurasi pengambilan.", + "chunkStructure": { + "learnMore": "Pelajari lebih lanjut", + "description": "tentang Struktur Potongan.", + "title": "Struktur Potongan" + }, + "nameAndIcon": "Nama & Ikon", + "onSearchResults": "Tidak ada anggota yang cocok dengan kueri penelusuran Anda.\nCoba cari lagi.", + "numberOfKeywords": "Jumlah Kata Kunci" + }, + "desc": "Di sini Anda dapat memodifikasi properti dan pengaturan pengambilan Pengetahuan ini.", + "title": "Setelan pengetahuan" +} diff --git a/web/i18n/id-ID/dataset-settings.ts b/web/i18n/id-ID/dataset-settings.ts deleted file mode 100644 index d34a0f3b77..0000000000 --- a/web/i18n/id-ID/dataset-settings.ts +++ /dev/null @@ -1,52 +0,0 @@ -const translation = { - form: { - retrievalSetting: { - title: 'Pengaturan Pengambilan', - description: 'tentang metode pengambilan.', - longDescription: 'tentang metode pengambilan, Anda dapat mengunduhnya kapan saja di pengaturan Pengetahuan.', - method: 'Metode Pengambilan', - learnMore: 'Pelajari lebih lanjut', - multiModalTip: 'Saat model embedding mendukung multi-modal, harap pilih model rerank multi-modal untuk kinerja yang lebih baik.', - }, - save: 'Simpan', - embeddingModel: 'Menyematkan Model', - namePlaceholder: 'Silakan masukkan nama Pengetahuan', - permissions: 'Izin', - embeddingModelTipLink: 'Pengaturan', - descInfo: 'Silakan tulis deskripsi tekstual yang jelas untuk menguraikan isi Pengetahuan. Deskripsi ini akan digunakan sebagai dasar untuk pencocokan saat memilih dari beberapa Pengetahuan untuk inferensi.', - searchModel: 'Model pencarian', - nameError: 'Nama tidak boleh kosong', - indexMethodEconomy: 'Ekonomis', - indexMethodHighQuality: 'Kualitas Tinggi', - permissionsInvitedMembers: 'Anggota tim parsial', - permissionsAllMember: 'Semua anggota tim', - desc: 'Deskripsi Pengetahuan', - upgradeHighQualityTip: 'Setelah memutakhirkan ke mode Kualitas Tinggi, kembali ke mode Ekonomis tidak tersedia', - descPlaceholder: 'Jelaskan apa yang ada dalam kumpulan data ini. Deskripsi terperinci memungkinkan AI mengakses konten kumpulan data tepat waktu. Jika kosong, Dify akan menggunakan strategi hit default.', - retrievalSettings: 'Pengaturan Pengambilan', - indexMethodChangeToEconomyDisabledTip: 'Tidak tersedia untuk downgrade dari HQ ke ECO', - indexMethod: 'Metode Indeks', - me: '(Anda)', - externalKnowledgeID: 'ID Pengetahuan Eksternal', - descWrite: 'Pelajari cara menulis deskripsi Pengetahuan yang baik.', - name: 'Nama Pengetahuan', - embeddingModelTip: 'Ubah model yang disematkan, silakan buka', - externalKnowledgeAPI: 'API Pengetahuan Eksternal', - helpText: 'Pelajari cara menulis deskripsi himpunan data yang baik.', - indexMethodHighQualityTip: 'Memanggil model penyematan untuk memproses dokumen untuk pengambilan yang lebih tepat membantu LLM menghasilkan jawaban berkualitas tinggi.', - permissionsOnlyMe: 'Hanya saya', - indexMethodEconomyTip: 'Menggunakan 10 kata kunci per potongan untuk pengambilan, tidak ada token yang dikonsumsi dengan mengorbankan penurunan akurasi pengambilan.', - chunkStructure: { - learnMore: 'Pelajari lebih lanjut', - description: 'tentang Struktur Potongan.', - title: 'Struktur Potongan', - }, - nameAndIcon: 'Nama & Ikon', - onSearchResults: 'Tidak ada anggota yang cocok dengan kueri penelusuran Anda.\nCoba cari lagi.', - numberOfKeywords: 'Jumlah Kata Kunci', - }, - desc: 'Di sini Anda dapat memodifikasi properti dan pengaturan pengambilan Pengetahuan ini.', - title: 'Setelan pengetahuan', -} - -export default translation diff --git a/web/i18n/id-ID/dataset.json b/web/i18n/id-ID/dataset.json new file mode 100644 index 0000000000..70e4c487bf --- /dev/null +++ b/web/i18n/id-ID/dataset.json @@ -0,0 +1,249 @@ +{ + "chunkingMode": { + "general": "Umum", + "parentChild": "Orang tua-anak", + "graph": "Grafik", + "qa": "Tanya Jawab" + }, + "parentMode": { + "fullDoc": "Dokumen lengkap", + "paragraph": "Paragraf" + }, + "editExternalAPIConfirmWarningContent": { + "front": "API Pengetahuan Eksternal ini ditautkan ke", + "end": "pengetahuan eksternal, dan modifikasi ini akan diterapkan pada semuanya. Apakah Anda yakin ingin menyimpan perubahan ini?" + }, + "editExternalAPIFormWarning": { + "front": "API Eksternal ini ditautkan ke", + "end": "pengetahuan eksternal" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "front": "Menghapus", + "end": "?" + }, + "content": { + "end": "pengetahuan eksternal. Menghapus API ini akan membatalkan semuanya. Apakah Anda yakin ingin menghapus API ini?", + "front": "API Pengetahuan Eksternal ini ditautkan ke" + }, + "noConnectionContent": "Apakah Anda yakin akan menghapus API ini?" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "Pilih API Pengetahuan Eksternal" + }, + "connectDatasetIntro": { + "content": { + "front": "Untuk terhubung ke basis pengetahuan eksternal, Anda perlu membuat API eksternal terlebih dahulu. Harap baca dengan seksama dan lihat", + "end": ". Kemudian temukan ID pengetahuan yang sesuai dan isi di formulir di sebelah kiri. Jika semua informasi sudah benar, itu akan secara otomatis melompat ke tes pengambilan di pangkalan pengetahuan setelah mengklik tombol hubungkan.", + "link": "Pelajari cara membuat API eksternal" + }, + "title": "Cara Terhubung ke Basis Pengetahuan Eksternal", + "learnMore": "Pelajari lebih lanjut" + }, + "connectHelper": { + "helper4": "Baca dokumentasi bantuan", + "helper1": "Hubungkan ke pangkalan pengetahuan eksternal melalui API dan ID pangkalan pengetahuan. Saat ini,", + "helper2": "hanya fungsionalitas pengambilan yang didukung", + "helper3": ". Kami sangat menyarankan agar Anda", + "helper5": "hati-hati sebelum menggunakan fitur ini." + }, + "externalKnowledgeForm": { + "connect": "Sambung", + "cancel": "Membatalkan" + }, + "externalAPIForm": { + "encrypted": { + "end": "Teknologi.", + "front": "Token API Anda akan dienkripsi dan disimpan menggunakan" + }, + "apiKey": "Kunci API", + "name": "Nama", + "endpoint": "Titik Akhir API", + "cancel": "Membatalkan", + "save": "Simpan", + "edit": "Mengedit" + }, + "retrieval": { + "semantic_search": { + "description": "Hasilkan penyematan kueri dan cari potongan teks yang paling mirip dengan representasi vektornya.", + "title": "Pencarian Vektor" + }, + "full_text_search": { + "description": "Indeks semua istilah dalam dokumen, memungkinkan pengguna untuk mencari istilah apa pun dan mengambil potongan teks yang relevan yang berisi istilah tersebut.", + "title": "Pencarian Teks Lengkap" + }, + "hybrid_search": { + "recommend": "Merekomendasikan", + "title": "Pencarian Hibrida", + "description": "Jalankan pencarian teks lengkap dan pencarian vektor secara bersamaan, peringkatkan ulang untuk memilih kecocokan terbaik untuk kueri pengguna. Pengguna dapat memilih untuk mengatur bobot atau mengonfigurasi ke model Rerank." + }, + "invertedIndex": {}, + "change": "Ubah", + "changeRetrievalMethod": "Ubah metode pengambilan", + "keyword_search": { + "description": "Indeks Terbalik adalah struktur yang digunakan untuk pengambilan yang efisien. Diatur berdasarkan istilah, setiap istilah menunjuk ke dokumen atau halaman web yang berisinya.", + "title": "Indeks Terbalik" + } + }, + "indexingTechnique": { + "economy": "EKO", + "high_quality": "HQ" + }, + "indexingMethod": { + "invertedIndex": "TERBALIK", + "full_text_search": "TEKS LENGKAP", + "semantic_search": "VEKTOR", + "hybrid_search": "HIBRIDA" + }, + "weightedScore": { + "semantic": "Semantik", + "title": "Skor Tertimbang", + "customized": "Disesuaikan", + "keyword": "Kata kunci", + "keywordFirst": "Kata kunci pertama", + "description": "Dengan menyesuaikan bobot yang ditetapkan, strategi rerank ini menentukan apakah akan memprioritaskan pencocokan semantik atau kata kunci.", + "semanticFirst": "Semantik pertama" + }, + "batchAction": { + "delete": "Menghapus", + "disable": "Menonaktifkan", + "archive": "Mengarsipkan", + "selected": "Dipilih", + "cancel": "Membatalkan", + "enable": "Mengaktifkan" + }, + "metadata": { + "createMetadata": { + "title": "Metadata Baru", + "type": "Jenis", + "back": "Belakang", + "namePlaceholder": "Tambahkan nama metadata", + "name": "Nama" + }, + "checkName": { + "empty": "Nama metadata tidak boleh kosong", + "invalid": "Nama metadata hanya dapat berisi huruf kecil, angka, dan garis bawah dan harus dimulai dengan huruf kecil", + "tooLong": "Nama metadata tidak boleh melebihi {{max}} karakter" + }, + "batchEditMetadata": { + "editMetadata": "Edit Metadata", + "applyToAllSelectDocument": "Terapkan ke semua dokumen yang dipilih", + "multipleValue": "Beberapa Nilai", + "applyToAllSelectDocumentTip": "Secara otomatis membuat semua metadata yang diedit di atas dan baru untuk semua dokumen yang dipilih, jika tidak, mengedit metadata hanya akan berlaku untuk dokumen yang dengannya.", + "editDocumentsNum": "Mengedit dokumen {{num}}" + }, + "selectMetadata": { + "manageAction": "Urus", + "newAction": "Metadata Baru", + "search": "Metadata pencarian" + }, + "datasetMetadata": { + "disabled": "Nonaktif", + "addMetaData": "Tambahkan Metadata", + "description": "Anda dapat mengelola semua metadata dalam pengetahuan ini di sini. Modifikasi akan disinkronkan ke setiap dokumen.", + "deleteTitle": "Konfirmasi untuk menghapus", + "name": "Nama", + "rename": "Ubah nama", + "builtInDescription": "Metadata bawaan secara otomatis diekstrak dan dihasilkan. Itu harus diaktifkan sebelum digunakan dan tidak dapat diedit.", + "namePlaceholder": "Nama metadata", + "builtIn": "Bawaan", + "values": "Nilai {{num}}", + "deleteContent": "Apakah Anda yakin ingin menghapus metadata \"{{name}}\"" + }, + "documentMetadata": { + "metadataToolTip": "Metadata berfungsi sebagai filter penting yang meningkatkan akurasi dan relevansi pengambilan informasi. Anda dapat memodifikasi dan menambahkan metadata untuk dokumen ini di sini.", + "documentInformation": "Informasi Dokumen", + "technicalParameters": "Parameter teknis", + "startLabeling": "Mulai Pelabelan" + }, + "addMetadata": "Tambahkan Metadata", + "chooseTime": "Pilih waktu...", + "metadata": "Metadata" + }, + "knowledge": "Pengetahuan", + "embeddingModelNotAvailable": "Model penyematan tidak tersedia.", + "docsFailedNotice": "Dokumen yang diindeks gagal", + "externalAPI": "API Eksternal", + "documentCount": "Docs", + "externalAPIPanelTitle": "API Pengetahuan Eksternal", + "externalTag": "Eksternal", + "createNewExternalAPI": "Membuat API Pengetahuan Eksternal baru", + "noExternalKnowledge": "Belum ada API Pengetahuan Eksternal, klik di sini untuk membuat", + "localDocs": "Dokumen Lokal", + "editExternalAPIFormTitle": "Mengedit API Pengetahuan Eksternal", + "createExternalAPI": "Menambahkan API Pengetahuan Eksternal", + "editExternalAPITooltipTitle": "PENGETAHUAN TERKAIT", + "appCount": "Aplikasi tertaut", + "createDataset": "Ciptakan Pengetahuan", + "externalKnowledgeDescriptionPlaceholder": "Menjelaskan apa yang ada di Basis Pengetahuan ini (opsional)", + "externalKnowledgeId": "ID Pengetahuan Eksternal", + "nTo1RetrievalLegacyLink": "Pelajari lebih lanjut", + "nTo1RetrievalLegacyLinkText": "Pengambilan N-to-1 akan secara resmi tidak digunakan lagi pada bulan September.", + "intro2": "sebagai konteks", + "externalKnowledgeDescription": "Deskripsi Pengetahuan", + "deleteDatasetConfirmTitle": "Hapus Pengetahuan ini?", + "datasetDeleteFailed": "Gagal menghapus Pengetahuan", + "allKnowledge": "Semua Pengetahuan", + "externalAPIPanelDescription": "API pengetahuan eksternal digunakan untuk terhubung ke pangkalan pengetahuan di luar Dify dan mengambil pengetahuan dari basis pengetahuan tersebut.", + "externalKnowledgeNamePlaceholder": "Silakan masukkan nama basis pengetahuan", + "externalAPIPanelDocumentation": "Pelajari cara membuat API Pengetahuan Eksternal", + "wordCount": "K Kata-kata", + "externalKnowledgeName": "Nama Pengetahuan Eksternal", + "datasets": "PENGETAHUAN", + "deleteDatasetConfirmContent": "Menghapus Pengetahuan tidak dapat diubah. Pengguna tidak akan lagi dapat mengakses Pengetahuan Anda, dan semua konfigurasi prompt dan log akan dihapus secara permanen.", + "datasetsApi": "AKSES API", + "intro4": "atau itu", + "didYouKnow": "Tahukah Anda?", + "intro6": "sebagai plug-in indeks ChatGPT mandiri untuk dipublikasikan", + "enable": "Mengaktifkan", + "retry": "Pengulangan", + "intro5": "dapat dibuat", + "mixtureHighQualityAndEconomicTip": "Model Rerank diperlukan untuk campuran basis pengetahuan berkualitas tinggi dan ekonomis.", + "datasetDeleted": "Pengetahuan dihapus", + "createDatasetIntro": "Impor data teks Anda sendiri atau tulis data secara real-time melalui Webhook untuk peningkatan konteks LLM.", + "intro1": "Pengetahuan dapat diintegrasikan ke dalam aplikasi Dify", + "rerankSettings": "Pengaturan Peringkat Ulang", + "intro3": ",", + "externalKnowledgeIdPlaceholder": "Silakan masukkan ID Pengetahuan", + "retrievalSettings": "Pengaturan Pengambilan", + "connectDataset": "Menyambungkan ke Basis Pengetahuan Eksternal", + "learnHowToWriteGoodKnowledgeDescription": "Pelajari cara menulis deskripsi pengetahuan yang baik", + "allExternalTip": "Saat hanya menggunakan pengetahuan eksternal, pengguna dapat memilih apakah akan mengaktifkan model Rerank. Jika tidak diaktifkan, potongan yang diambil akan diurutkan berdasarkan skor. Ketika strategi pengambilan dari basis pengetahuan yang berbeda tidak konsisten, itu akan menjadi tidak akurat.", + "datasetUsedByApp": "Pengetahuan tersebut digunakan oleh beberapa aplikasi. Aplikasi tidak akan lagi dapat menggunakan Pengetahuan ini, dan semua konfigurasi prompt serta log akan dihapus secara permanen.", + "mixtureInternalAndExternalTip": "Model Rerank diperlukan untuk campuran pengetahuan internal dan eksternal.", + "nTo1RetrievalLegacy": "Pengambilan N-to-1 akan secara resmi tidak digunakan lagi mulai September. Disarankan untuk menggunakan pengambilan Multi-jalur terbaru untuk mendapatkan hasil yang lebih baik.", + "inconsistentEmbeddingModelTip": "Model Rerank diperlukan jika model Penyematan dari basis pengetahuan yang dipilih tidak konsisten.", + "allKnowledgeDescription": "Pilih untuk menampilkan semua pengetahuan di ruang kerja ini. Hanya Pemilik Ruang Kerja yang dapat mengelola semua pengetahuan.", + "defaultRetrievalTip": "Pengambilan multi-jalur digunakan secara default. Pengetahuan diambil dari beberapa basis pengetahuan dan kemudian diberi peringkat ulang.", + "unavailable": "Tidak tersedia", + "updated": "Diperbarui", + "createFromPipeline": "Membuat dari Knowledge Pipeline", + "externalKnowledgeBase": "Basis Pengetahuan Eksternal", + "serviceApi": { + "card": { + "apiKey": "Kunci API", + "apiReference": "Referensi API", + "title": "API layanan backend", + "endpoint": "Titik Akhir API Layanan" + }, + "title": "API Layanan", + "enabled": "Sedang Beroperasi", + "disabled": "Dinonaktifkan" + }, + "docAllEnabled_one": "dokumen {{count}} diaktifkan", + "docAllEnabled_other": "Semua dokumen {{count}} diaktifkan", + "partialEnabled_one": "Total {{count}} dokumen, {{num}} tersedia", + "partialEnabled_other": "Total {{count}} dokumen, {{num}} tersedia", + "documentsDisabled": "{{num}} dokumen dinonaktifkan - tidak aktif lebih dari 30 hari", + "preprocessDocument": "{{num}} Prasekolah Dokumen", + "cornerLabel": { + "unavailable": "Tidak tersedia", + "pipeline": "Saluran pipa" + }, + "multimodal": "Multimodal", + "imageUploader": { + "button": "Seret dan lepas file atau folder, atau", + "browse": "Telusuri", + "tip": "{{supportTypes}} (Maks {{batchCount}}, {{size}}MB masing-masing)" + } +} diff --git a/web/i18n/id-ID/dataset.ts b/web/i18n/id-ID/dataset.ts deleted file mode 100644 index 7648e04dd5..0000000000 --- a/web/i18n/id-ID/dataset.ts +++ /dev/null @@ -1,252 +0,0 @@ -const translation = { - chunkingMode: { - general: 'Umum', - parentChild: 'Orang tua-anak', - graph: 'Grafik', - qa: 'Tanya Jawab', - }, - parentMode: { - fullDoc: 'Dokumen lengkap', - paragraph: 'Paragraf', - }, - editExternalAPIConfirmWarningContent: { - front: 'API Pengetahuan Eksternal ini ditautkan ke', - end: 'pengetahuan eksternal, dan modifikasi ini akan diterapkan pada semuanya. Apakah Anda yakin ingin menyimpan perubahan ini?', - }, - editExternalAPIFormWarning: { - front: 'API Eksternal ini ditautkan ke', - end: 'pengetahuan eksternal', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - front: 'Menghapus', - end: '?', - }, - content: { - end: 'pengetahuan eksternal. Menghapus API ini akan membatalkan semuanya. Apakah Anda yakin ingin menghapus API ini?', - front: 'API Pengetahuan Eksternal ini ditautkan ke', - }, - noConnectionContent: 'Apakah Anda yakin akan menghapus API ini?', - }, - selectExternalKnowledgeAPI: { - placeholder: 'Pilih API Pengetahuan Eksternal', - }, - connectDatasetIntro: { - content: { - front: 'Untuk terhubung ke basis pengetahuan eksternal, Anda perlu membuat API eksternal terlebih dahulu. Harap baca dengan seksama dan lihat', - end: '. Kemudian temukan ID pengetahuan yang sesuai dan isi di formulir di sebelah kiri. Jika semua informasi sudah benar, itu akan secara otomatis melompat ke tes pengambilan di pangkalan pengetahuan setelah mengklik tombol hubungkan.', - link: 'Pelajari cara membuat API eksternal', - }, - title: 'Cara Terhubung ke Basis Pengetahuan Eksternal', - learnMore: 'Pelajari lebih lanjut', - }, - connectHelper: { - helper4: 'Baca dokumentasi bantuan', - helper1: 'Hubungkan ke pangkalan pengetahuan eksternal melalui API dan ID pangkalan pengetahuan. Saat ini,', - helper2: 'hanya fungsionalitas pengambilan yang didukung', - helper3: '. Kami sangat menyarankan agar Anda', - helper5: 'hati-hati sebelum menggunakan fitur ini.', - }, - externalKnowledgeForm: { - connect: 'Sambung', - cancel: 'Membatalkan', - }, - externalAPIForm: { - encrypted: { - end: 'Teknologi.', - front: 'Token API Anda akan dienkripsi dan disimpan menggunakan', - }, - apiKey: 'Kunci API', - name: 'Nama', - endpoint: 'Titik Akhir API', - cancel: 'Membatalkan', - save: 'Simpan', - edit: 'Mengedit', - }, - retrieval: { - semantic_search: { - description: 'Hasilkan penyematan kueri dan cari potongan teks yang paling mirip dengan representasi vektornya.', - title: 'Pencarian Vektor', - }, - full_text_search: { - description: 'Indeks semua istilah dalam dokumen, memungkinkan pengguna untuk mencari istilah apa pun dan mengambil potongan teks yang relevan yang berisi istilah tersebut.', - title: 'Pencarian Teks Lengkap', - }, - hybrid_search: { - recommend: 'Merekomendasikan', - title: 'Pencarian Hibrida', - description: 'Jalankan pencarian teks lengkap dan pencarian vektor secara bersamaan, peringkatkan ulang untuk memilih kecocokan terbaik untuk kueri pengguna. Pengguna dapat memilih untuk mengatur bobot atau mengonfigurasi ke model Rerank.', - }, - invertedIndex: { - }, - change: 'Ubah', - changeRetrievalMethod: 'Ubah metode pengambilan', - keyword_search: { - description: 'Indeks Terbalik adalah struktur yang digunakan untuk pengambilan yang efisien. Diatur berdasarkan istilah, setiap istilah menunjuk ke dokumen atau halaman web yang berisinya.', - title: 'Indeks Terbalik', - }, - }, - indexingTechnique: { - economy: 'EKO', - high_quality: 'HQ', - }, - indexingMethod: { - invertedIndex: 'TERBALIK', - full_text_search: 'TEKS LENGKAP', - semantic_search: 'VEKTOR', - hybrid_search: 'HIBRIDA', - }, - weightedScore: { - semantic: 'Semantik', - title: 'Skor Tertimbang', - customized: 'Disesuaikan', - keyword: 'Kata kunci', - keywordFirst: 'Kata kunci pertama', - description: 'Dengan menyesuaikan bobot yang ditetapkan, strategi rerank ini menentukan apakah akan memprioritaskan pencocokan semantik atau kata kunci.', - semanticFirst: 'Semantik pertama', - }, - batchAction: { - delete: 'Menghapus', - disable: 'Menonaktifkan', - archive: 'Mengarsipkan', - selected: 'Dipilih', - cancel: 'Membatalkan', - enable: 'Mengaktifkan', - }, - metadata: { - createMetadata: { - title: 'Metadata Baru', - type: 'Jenis', - back: 'Belakang', - namePlaceholder: 'Tambahkan nama metadata', - name: 'Nama', - }, - checkName: { - empty: 'Nama metadata tidak boleh kosong', - invalid: 'Nama metadata hanya dapat berisi huruf kecil, angka, dan garis bawah dan harus dimulai dengan huruf kecil', - tooLong: 'Nama metadata tidak boleh melebihi {{max}} karakter', - }, - batchEditMetadata: { - editMetadata: 'Edit Metadata', - applyToAllSelectDocument: 'Terapkan ke semua dokumen yang dipilih', - multipleValue: 'Beberapa Nilai', - applyToAllSelectDocumentTip: 'Secara otomatis membuat semua metadata yang diedit di atas dan baru untuk semua dokumen yang dipilih, jika tidak, mengedit metadata hanya akan berlaku untuk dokumen yang dengannya.', - editDocumentsNum: 'Mengedit dokumen {{num}}', - }, - selectMetadata: { - manageAction: 'Urus', - newAction: 'Metadata Baru', - search: 'Metadata pencarian', - }, - datasetMetadata: { - disabled: 'Nonaktif', - addMetaData: 'Tambahkan Metadata', - description: 'Anda dapat mengelola semua metadata dalam pengetahuan ini di sini. Modifikasi akan disinkronkan ke setiap dokumen.', - deleteTitle: 'Konfirmasi untuk menghapus', - name: 'Nama', - rename: 'Ubah nama', - builtInDescription: 'Metadata bawaan secara otomatis diekstrak dan dihasilkan. Itu harus diaktifkan sebelum digunakan dan tidak dapat diedit.', - namePlaceholder: 'Nama metadata', - builtIn: 'Bawaan', - values: 'Nilai {{num}}', - deleteContent: 'Apakah Anda yakin ingin menghapus metadata "{{name}}"', - }, - documentMetadata: { - metadataToolTip: 'Metadata berfungsi sebagai filter penting yang meningkatkan akurasi dan relevansi pengambilan informasi. Anda dapat memodifikasi dan menambahkan metadata untuk dokumen ini di sini.', - documentInformation: 'Informasi Dokumen', - technicalParameters: 'Parameter teknis', - startLabeling: 'Mulai Pelabelan', - }, - addMetadata: 'Tambahkan Metadata', - chooseTime: 'Pilih waktu...', - metadata: 'Metadata', - }, - knowledge: 'Pengetahuan', - embeddingModelNotAvailable: 'Model penyematan tidak tersedia.', - docsFailedNotice: 'Dokumen yang diindeks gagal', - externalAPI: 'API Eksternal', - documentCount: 'Docs', - externalAPIPanelTitle: 'API Pengetahuan Eksternal', - externalTag: 'Eksternal', - createNewExternalAPI: 'Membuat API Pengetahuan Eksternal baru', - noExternalKnowledge: 'Belum ada API Pengetahuan Eksternal, klik di sini untuk membuat', - localDocs: 'Dokumen Lokal', - editExternalAPIFormTitle: 'Mengedit API Pengetahuan Eksternal', - createExternalAPI: 'Menambahkan API Pengetahuan Eksternal', - editExternalAPITooltipTitle: 'PENGETAHUAN TERKAIT', - appCount: 'Aplikasi tertaut', - createDataset: 'Ciptakan Pengetahuan', - externalKnowledgeDescriptionPlaceholder: 'Menjelaskan apa yang ada di Basis Pengetahuan ini (opsional)', - externalKnowledgeId: 'ID Pengetahuan Eksternal', - nTo1RetrievalLegacyLink: 'Pelajari lebih lanjut', - nTo1RetrievalLegacyLinkText: 'Pengambilan N-to-1 akan secara resmi tidak digunakan lagi pada bulan September.', - intro2: 'sebagai konteks', - externalKnowledgeDescription: 'Deskripsi Pengetahuan', - deleteDatasetConfirmTitle: 'Hapus Pengetahuan ini?', - datasetDeleteFailed: 'Gagal menghapus Pengetahuan', - allKnowledge: 'Semua Pengetahuan', - externalAPIPanelDescription: 'API pengetahuan eksternal digunakan untuk terhubung ke pangkalan pengetahuan di luar Dify dan mengambil pengetahuan dari basis pengetahuan tersebut.', - externalKnowledgeNamePlaceholder: 'Silakan masukkan nama basis pengetahuan', - externalAPIPanelDocumentation: 'Pelajari cara membuat API Pengetahuan Eksternal', - wordCount: 'K Kata-kata', - externalKnowledgeName: 'Nama Pengetahuan Eksternal', - datasets: 'PENGETAHUAN', - deleteDatasetConfirmContent: 'Menghapus Pengetahuan tidak dapat diubah. Pengguna tidak akan lagi dapat mengakses Pengetahuan Anda, dan semua konfigurasi prompt dan log akan dihapus secara permanen.', - datasetsApi: 'AKSES API', - intro4: 'atau itu', - didYouKnow: 'Tahukah Anda?', - intro6: 'sebagai plug-in indeks ChatGPT mandiri untuk dipublikasikan', - enable: 'Mengaktifkan', - retry: 'Pengulangan', - intro5: 'dapat dibuat', - mixtureHighQualityAndEconomicTip: 'Model Rerank diperlukan untuk campuran basis pengetahuan berkualitas tinggi dan ekonomis.', - datasetDeleted: 'Pengetahuan dihapus', - createDatasetIntro: 'Impor data teks Anda sendiri atau tulis data secara real-time melalui Webhook untuk peningkatan konteks LLM.', - intro1: 'Pengetahuan dapat diintegrasikan ke dalam aplikasi Dify', - rerankSettings: 'Pengaturan Peringkat Ulang', - intro3: ',', - externalKnowledgeIdPlaceholder: 'Silakan masukkan ID Pengetahuan', - retrievalSettings: 'Pengaturan Pengambilan', - connectDataset: 'Menyambungkan ke Basis Pengetahuan Eksternal', - learnHowToWriteGoodKnowledgeDescription: 'Pelajari cara menulis deskripsi pengetahuan yang baik', - allExternalTip: 'Saat hanya menggunakan pengetahuan eksternal, pengguna dapat memilih apakah akan mengaktifkan model Rerank. Jika tidak diaktifkan, potongan yang diambil akan diurutkan berdasarkan skor. Ketika strategi pengambilan dari basis pengetahuan yang berbeda tidak konsisten, itu akan menjadi tidak akurat.', - datasetUsedByApp: 'Pengetahuan tersebut digunakan oleh beberapa aplikasi. Aplikasi tidak akan lagi dapat menggunakan Pengetahuan ini, dan semua konfigurasi prompt serta log akan dihapus secara permanen.', - mixtureInternalAndExternalTip: 'Model Rerank diperlukan untuk campuran pengetahuan internal dan eksternal.', - nTo1RetrievalLegacy: 'Pengambilan N-to-1 akan secara resmi tidak digunakan lagi mulai September. Disarankan untuk menggunakan pengambilan Multi-jalur terbaru untuk mendapatkan hasil yang lebih baik.', - inconsistentEmbeddingModelTip: 'Model Rerank diperlukan jika model Penyematan dari basis pengetahuan yang dipilih tidak konsisten.', - allKnowledgeDescription: 'Pilih untuk menampilkan semua pengetahuan di ruang kerja ini. Hanya Pemilik Ruang Kerja yang dapat mengelola semua pengetahuan.', - defaultRetrievalTip: 'Pengambilan multi-jalur digunakan secara default. Pengetahuan diambil dari beberapa basis pengetahuan dan kemudian diberi peringkat ulang.', - unavailable: 'Tidak tersedia', - updated: 'Diperbarui', - createFromPipeline: 'Membuat dari Knowledge Pipeline', - externalKnowledgeBase: 'Basis Pengetahuan Eksternal', - serviceApi: { - card: { - apiKey: 'Kunci API', - apiReference: 'Referensi API', - title: 'API layanan backend', - endpoint: 'Titik Akhir API Layanan', - }, - title: 'API Layanan', - enabled: 'Sedang Beroperasi', - disabled: 'Dinonaktifkan', - }, - docAllEnabled_one: 'dokumen {{count}} diaktifkan', - docAllEnabled_other: 'Semua dokumen {{count}} diaktifkan', - partialEnabled_one: 'Total {{count}} dokumen, {{num}} tersedia', - partialEnabled_other: 'Total {{count}} dokumen, {{num}} tersedia', - documentsDisabled: '{{num}} dokumen dinonaktifkan - tidak aktif lebih dari 30 hari', - preprocessDocument: '{{num}} Prasekolah Dokumen', - cornerLabel: { - unavailable: 'Tidak tersedia', - pipeline: 'Saluran pipa', - }, - multimodal: 'Multimodal', - imageUploader: { - button: 'Seret dan lepas file atau folder, atau', - browse: 'Telusuri', - tip: '{{supportTypes}} (Maks {{batchCount}}, {{size}}MB masing-masing)', - }, -} - -export default translation diff --git a/web/i18n/id-ID/education.json b/web/i18n/id-ID/education.json new file mode 100644 index 0000000000..b340d8e912 --- /dev/null +++ b/web/i18n/id-ID/education.json @@ -0,0 +1,74 @@ +{ + "toVerifiedTip": { + "end": "untuk Paket Profesional Dify.", + "coupon": "kupon eksklusif 100%", + "front": "Anda sekarang memenuhi syarat untuk status Terverifikasi Pendidikan. Silakan masukkan informasi pendidikan Anda di bawah ini untuk menyelesaikan proses dan menerima" + }, + "form": { + "schoolName": { + "title": "Nama Sekolah Anda", + "placeholder": "Masukkan nama resmi sekolah Anda yang tidak disingkat" + }, + "schoolRole": { + "option": { + "student": "Pelajar", + "teacher": "Guru", + "administrator": "Administrator Sekolah" + }, + "title": "Peran Sekolah Anda" + }, + "terms": { + "desc": { + "privacyPolicy": "Kebijakan Privasi", + "and": "dan", + "termsOfService": "Ketentuan Layanan", + "end": ". Dengan mengirimkan:", + "front": "Informasi Anda dan penggunaan status Education Verified tunduk pada" + }, + "option": { + "age": "Saya mengonfirmasi bahwa saya berusia setidaknya 18 tahun", + "inSchool": "Saya mengonfirmasi bahwa saya terdaftar atau dipekerjakan di lembaga yang disediakan. Dify dapat meminta bukti pendaftaran/pekerjaan. Jika saya salah menggambarkan kelayakan saya, saya setuju untuk membayar biaya apa pun yang awalnya dibebaskan berdasarkan status pendidikan saya." + }, + "title": "Syarat & Perjanjian" + } + }, + "notice": { + "expired": { + "summary": { + "line2": "Namun, Anda tidak lagi memenuhi syarat untuk kupon diskon pendidikan baru.", + "line1": "Anda masih dapat mengakses dan menggunakan Dify." + }, + "title": "Status pendidikan Anda telah kedaluwarsa" + }, + "isAboutToExpire": { + "summary": "Jangan khawatir — ini tidak akan memengaruhi langganan Anda saat ini, tetapi Anda tidak akan mendapatkan diskon pendidikan saat diperpanjang kecuali Anda memverifikasi status Anda lagi.", + "title": "Status pendidikan Anda akan berakhir pada {{date}}" + }, + "stillInEducation": { + "isAboutToExpire": "Verifikasi ulang sekarang untuk mendapatkan kupon baru untuk tahun akademik mendatang. Ini akan disimpan ke akun Anda dan siap digunakan pada perpanjangan berikutnya.", + "title": "Masih dalam pendidikan?", + "expired": "Verifikasi ulang sekarang untuk mendapatkan kupon baru untuk tahun akademik mendatang. Kami akan menambahkannya ke akun Anda dan Anda dapat menggunakannya untuk peningkatan berikutnya." + }, + "alreadyGraduated": { + "title": "Sudah lulus?", + "expired": "Jangan ragu untuk meningkatkan kapan saja untuk mendapatkan akses penuh ke fitur berbayar.", + "isAboutToExpire": "Langganan Anda saat ini akan tetap aktif. Setelah berakhir, Anda akan dipindahkan ke paket Sandbox, atau Anda dapat meningkatkan kapan saja untuk memulihkan akses penuh ke fitur berbayar." + }, + "action": { + "upgrade": "Upgrade", + "dismiss": "Mengabaikan", + "reVerify": "Verifikasi ulang" + }, + "dateFormat": "MM / DD / YYYY" + }, + "submit": "Kirim", + "toVerified": "Dapatkan Pendidikan Terverifikasi", + "currentSigned": "SAAT INI MASUK SEBAGAI", + "successTitle": "Anda telah mendapatkan Dify Education Verified", + "rejectTitle": "Verifikasi Pendidikan Dify Anda telah ditolak", + "successContent": "Kami telah mengeluarkan kupon diskon 100% untuk paket Dify Professional ke akun Anda. Kupon berlaku selama satu tahun, harap gunakan dalam masa berlaku.", + "emailLabel": "Email Anda saat ini", + "rejectContent": "Sayangnya, Anda tidak memenuhi syarat untuk status Education Verified dan oleh karena itu tidak dapat menerima kupon 100% eksklusif untuk Paket Dify Professional jika Anda menggunakan alamat email ini.", + "learn": "Pelajari cara mendapatkan verifikasi pendidikan", + "submitError": "Pengiriman formulir gagal. Silakan coba lagi nanti." +} diff --git a/web/i18n/id-ID/education.ts b/web/i18n/id-ID/education.ts deleted file mode 100644 index b5c9db0877..0000000000 --- a/web/i18n/id-ID/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerifiedTip: { - end: 'untuk Paket Profesional Dify.', - coupon: 'kupon eksklusif 100%', - front: 'Anda sekarang memenuhi syarat untuk status Terverifikasi Pendidikan. Silakan masukkan informasi pendidikan Anda di bawah ini untuk menyelesaikan proses dan menerima', - }, - form: { - schoolName: { - title: 'Nama Sekolah Anda', - placeholder: 'Masukkan nama resmi sekolah Anda yang tidak disingkat', - }, - schoolRole: { - option: { - student: 'Pelajar', - teacher: 'Guru', - administrator: 'Administrator Sekolah', - }, - title: 'Peran Sekolah Anda', - }, - terms: { - desc: { - privacyPolicy: 'Kebijakan Privasi', - and: 'dan', - termsOfService: 'Ketentuan Layanan', - end: '. Dengan mengirimkan:', - front: 'Informasi Anda dan penggunaan status Education Verified tunduk pada', - }, - option: { - age: 'Saya mengonfirmasi bahwa saya berusia setidaknya 18 tahun', - inSchool: 'Saya mengonfirmasi bahwa saya terdaftar atau dipekerjakan di lembaga yang disediakan. Dify dapat meminta bukti pendaftaran/pekerjaan. Jika saya salah menggambarkan kelayakan saya, saya setuju untuk membayar biaya apa pun yang awalnya dibebaskan berdasarkan status pendidikan saya.', - }, - title: 'Syarat & Perjanjian', - }, - }, - notice: { - expired: { - summary: { - line2: 'Namun, Anda tidak lagi memenuhi syarat untuk kupon diskon pendidikan baru.', - line1: 'Anda masih dapat mengakses dan menggunakan Dify.', - }, - title: 'Status pendidikan Anda telah kedaluwarsa', - }, - isAboutToExpire: { - summary: 'Jangan khawatir — ini tidak akan memengaruhi langganan Anda saat ini, tetapi Anda tidak akan mendapatkan diskon pendidikan saat diperpanjang kecuali Anda memverifikasi status Anda lagi.', - title: 'Status pendidikan Anda akan berakhir pada {{date}}', - }, - stillInEducation: { - isAboutToExpire: 'Verifikasi ulang sekarang untuk mendapatkan kupon baru untuk tahun akademik mendatang. Ini akan disimpan ke akun Anda dan siap digunakan pada perpanjangan berikutnya.', - title: 'Masih dalam pendidikan?', - expired: 'Verifikasi ulang sekarang untuk mendapatkan kupon baru untuk tahun akademik mendatang. Kami akan menambahkannya ke akun Anda dan Anda dapat menggunakannya untuk peningkatan berikutnya.', - }, - alreadyGraduated: { - title: 'Sudah lulus?', - expired: 'Jangan ragu untuk meningkatkan kapan saja untuk mendapatkan akses penuh ke fitur berbayar.', - isAboutToExpire: 'Langganan Anda saat ini akan tetap aktif. Setelah berakhir, Anda akan dipindahkan ke paket Sandbox, atau Anda dapat meningkatkan kapan saja untuk memulihkan akses penuh ke fitur berbayar.', - }, - action: { - upgrade: 'Upgrade', - dismiss: 'Mengabaikan', - reVerify: 'Verifikasi ulang', - }, - dateFormat: 'MM / DD / YYYY', - }, - submit: 'Kirim', - toVerified: 'Dapatkan Pendidikan Terverifikasi', - currentSigned: 'SAAT INI MASUK SEBAGAI', - successTitle: 'Anda telah mendapatkan Dify Education Verified', - rejectTitle: 'Verifikasi Pendidikan Dify Anda telah ditolak', - successContent: 'Kami telah mengeluarkan kupon diskon 100% untuk paket Dify Professional ke akun Anda. Kupon berlaku selama satu tahun, harap gunakan dalam masa berlaku.', - emailLabel: 'Email Anda saat ini', - rejectContent: 'Sayangnya, Anda tidak memenuhi syarat untuk status Education Verified dan oleh karena itu tidak dapat menerima kupon 100% eksklusif untuk Paket Dify Professional jika Anda menggunakan alamat email ini.', - learn: 'Pelajari cara mendapatkan verifikasi pendidikan', - submitError: 'Pengiriman formulir gagal. Silakan coba lagi nanti.', -} - -export default translation diff --git a/web/i18n/id-ID/explore.json b/web/i18n/id-ID/explore.json new file mode 100644 index 0000000000..1447aa44f2 --- /dev/null +++ b/web/i18n/id-ID/explore.json @@ -0,0 +1,42 @@ +{ + "sidebar": { + "action": { + "unpin": "Lepaskan sematan", + "pin": "Sematkan", + "delete": "Hapus", + "rename": "Ganti nama" + }, + "delete": { + "content": "Apakah Anda yakin ingin menghapus aplikasi ini?", + "title": "Hapus aplikasi" + }, + "workspace": "Workspace", + "discovery": "Penemuan", + "chat": "Mengobrol" + }, + "apps": { + "allCategories": "Direkomendasikan", + "description": "Gunakan aplikasi templat ini secara instan atau sesuaikan aplikasi Anda sendiri berdasarkan templat.", + "title": "Jelajahi Aplikasi" + }, + "appCard": { + "customize": "Menyesuaikan", + "addToWorkspace": "Tambahkan ke Ruang Kerja" + }, + "appCustomize": { + "subTitle": "Ikon & nama aplikasi", + "nameRequired": "Nama aplikasi diperlukan", + "title": "Buat aplikasi dari {{name}}" + }, + "category": { + "Entertainment": "Hiburan", + "Agent": "Agen", + "Writing": "Tulisan", + "Assistant": "Asisten", + "Programming": "Pemrograman", + "Translate": "Terjemah", + "Workflow": "Alur Kerja", + "HR": "HR" + }, + "title": "Menjelajahi" +} diff --git a/web/i18n/id-ID/explore.ts b/web/i18n/id-ID/explore.ts deleted file mode 100644 index 06734485d5..0000000000 --- a/web/i18n/id-ID/explore.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - sidebar: { - action: { - unpin: 'Lepaskan sematan', - pin: 'Sematkan', - delete: 'Hapus', - rename: 'Ganti nama', - }, - delete: { - content: 'Apakah Anda yakin ingin menghapus aplikasi ini?', - title: 'Hapus aplikasi', - }, - workspace: 'Workspace', - discovery: 'Penemuan', - chat: 'Mengobrol', - }, - apps: { - allCategories: 'Direkomendasikan', - description: 'Gunakan aplikasi templat ini secara instan atau sesuaikan aplikasi Anda sendiri berdasarkan templat.', - title: 'Jelajahi Aplikasi', - }, - appCard: { - customize: 'Menyesuaikan', - addToWorkspace: 'Tambahkan ke Ruang Kerja', - }, - appCustomize: { - subTitle: 'Ikon & nama aplikasi', - nameRequired: 'Nama aplikasi diperlukan', - title: 'Buat aplikasi dari {{name}}', - }, - category: { - Entertainment: 'Hiburan', - Agent: 'Agen', - Writing: 'Tulisan', - Assistant: 'Asisten', - Programming: 'Pemrograman', - Translate: 'Terjemah', - Workflow: 'Alur Kerja', - HR: 'HR', - }, - title: 'Menjelajahi', -} - -export default translation diff --git a/web/i18n/id-ID/layout.json b/web/i18n/id-ID/layout.json new file mode 100644 index 0000000000..6bddfb5ac8 --- /dev/null +++ b/web/i18n/id-ID/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "expandSidebar": "Perluas Bilah Sisi", + "collapseSidebar": "Ciutkan Bilah Sisi" + } +} diff --git a/web/i18n/id-ID/layout.ts b/web/i18n/id-ID/layout.ts deleted file mode 100644 index eb7582da45..0000000000 --- a/web/i18n/id-ID/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - expandSidebar: 'Perluas Bilah Sisi', - collapseSidebar: 'Ciutkan Bilah Sisi', - }, -} - -export default translation diff --git a/web/i18n/id-ID/login.json b/web/i18n/id-ID/login.json new file mode 100644 index 0000000000..da7728621b --- /dev/null +++ b/web/i18n/id-ID/login.json @@ -0,0 +1,124 @@ +{ + "error": { + "emailEmpty": "Alamat email diperlukan", + "emailInValid": "Silakan masukkan alamat email yang valid", + "passwordLengthInValid": "Kata sandi harus minimal 8 karakter", + "nameEmpty": "Nama diperlukan", + "registrationNotAllowed": "Akun tidak ditemukan. Silakan hubungi admin sistem untuk mendaftar.", + "passwordInvalid": "Kata sandi harus berisi huruf dan angka, dan panjangnya harus lebih besar dari 8", + "passwordEmpty": "Kata sandi diperlukan", + "invalidEmailOrPassword": "Email atau kata sandi tidak valid." + }, + "license": { + "tip": "Sebelum memulai Edisi Komunitas Dify, baca GitHub", + "link": "Lisensi sumber terbuka" + }, + "checkCode": { + "useAnotherMethod": "Gunakan metode lain", + "verify": "Memverifikasi", + "didNotReceiveCode": "Tidak menerima kode?", + "invalidCode": "Kode tidak valid", + "checkYourEmail": "Periksa email Anda", + "validTime": "Ingatlah bahwa kode tersebut berlaku selama 5 menit", + "tipsPrefix": "Kami mengirimkan kode verifikasi ke", + "emptyCode": "Kode diperlukan", + "verificationCode": "Kode verifikasi", + "verificationCodePlaceholder": "Masukkan kode 6 digit", + "resend": "Kirim Ulang" + }, + "webapp": { + "login": "Login", + "noLoginMethod": "Metode autentikasi tidak dikonfigurasi untuk aplikasi web", + "noLoginMethodTip": "Silakan hubungi admin sistem untuk menambahkan metode autentikasi.", + "disabled": "Autentikasi aplikasi web dinonaktifkan. Silakan hubungi admin sistem untuk mengaktifkannya. Anda dapat mencoba menggunakan aplikasi secara langsung." + }, + "pageTitle": "Hei, mari kita mulai!", + "timezone": "Zona waktu", + "continueWithCode": "Lanjutkan dengan kode", + "sendVerificationCode": "Kirim Kode Verifikasi", + "invalidInvitationCode": "Kode undangan tidak valid", + "installBtn": "Siapkan", + "joinTipStart": "Mengundang Anda untuk bergabung", + "or": "ATAU", + "namePlaceholder": "Nama pengguna Anda", + "withSSO": "Lanjutkan dengan SSO", + "passwordPlaceholder": "Kata sandi Anda", + "checkEmailForResetLink": "Silakan periksa email Anda untuk mendapatkan tautan untuk mengatur ulang kata sandi Anda. Jika tidak muncul dalam beberapa menit, pastikan untuk memeriksa folder spam Anda.", + "name": "Nama pengguna", + "password": "Kata sandi", + "acceptPP": "Saya telah membaca dan menerima kebijakan privasi", + "createSample": "Berdasarkan informasi ini, kami akan membuat contoh aplikasi untuk Anda", + "usePassword": "Gunakan Kata Sandi", + "confirmPasswordPlaceholder": "Konfirmasikan kata sandi baru Anda", + "invalid": "Tautan telah kedaluwarsa", + "invitationCodePlaceholder": "Kode undangan Anda", + "emailPlaceholder": "Email Anda", + "tos": "Ketentuan Layanan", + "go": "Buka Dify", + "forgotPassword": "Lupa Kata Sandi Anda?", + "sendUsMail": "Kirimkan perkenalan Anda melalui email kepada kami, dan kami akan menangani permintaan undangan.", + "pp": "Kebijakan Privasi", + "activatedTipEnd": "tim", + "backToSignIn": "Kembali ke halaman masuk", + "passwordChanged": "Masuk sekarang", + "withGitHub": "Lanjutkan dengan GitHub", + "accountAlreadyInited": "Akun sudah diinisialisasi", + "withGoogle": "Lanjutkan dengan Google", + "rightDesc": "Bangun aplikasi AI yang menarik secara visual, mudah dioperasikan, dan mudah diskalakan.", + "invitationCode": "Kode Undangan", + "invalidToken": "Token tidak valid atau kedaluwarsa", + "setAdminAccount": "Menyiapkan akun admin", + "forgotPasswordDesc": "Silakan masukkan alamat email Anda untuk mengatur ulang kata sandi Anda. Kami akan mengirimi Anda email dengan instruksi tentang cara mengatur ulang kata sandi Anda.", + "confirmPassword": "Konfirmasi Kata Sandi", + "changePasswordBtn": "Tetapkan kata sandi", + "resetPassword": "Atur Ulang Kata Sandi", + "explore": "Jelajahi Dify", + "useVerificationCode": "Gunakan Kode Verifikasi", + "resetLinkSent": "Atur ulang tautan terkirim", + "changePasswordTip": "Silakan masukkan kata sandi baru untuk akun Anda", + "tosDesc": "Dengan mendaftar, Anda menyetujui", + "reset": "Silakan jalankan perintah berikut untuk mengatur ulang kata sandi Anda", + "setYourAccount": "Atur Akun Anda", + "interfaceLanguage": "Bahasa Antarmuka", + "noLoginMethod": "Metode autentikasi tidak dikonfigurasi", + "activatedTipStart": "Anda telah bergabung dengan", + "licenseLost": "Lisensi Hilang", + "licenseInactive": "Lisensi Tidak Aktif", + "enterYourName": "Silakan masukkan nama pengguna Anda", + "back": "Kembali", + "activated": "Masuk sekarang", + "goToInit": "Jika Anda belum menginisialisasi akun, silakan buka halaman inisialisasi", + "licenseExpired": "Lisensi Kedaluwarsa", + "joinTipEnd": "tim di Dify", + "dontHave": "Belum?", + "passwordChangedTip": "Kata sandi Anda telah berhasil diubah", + "validate": "Memvalidasi", + "resetPasswordDesc": "Ketik email yang Anda gunakan untuk mendaftar di Dify dan kami akan mengirimkan email reset kata sandi kepada Anda.", + "licenseLostTip": "Gagal menghubungkan server lisensi Dify. Hubungi administrator Anda untuk terus menggunakan Dify.", + "signBtn": "Masuk", + "sendResetLink": "Kirim tautan reset", + "createAndSignIn": "Buat dan masuk", + "licenseExpiredTip": "Lisensi Dify Enterprise untuk ruang kerja Anda telah kedaluwarsa. Hubungi administrator Anda untuk terus menggunakan Dify.", + "email": "Alamat email", + "noLoginMethodTip": "Silakan hubungi admin sistem untuk menambahkan metode autentikasi.", + "adminInitPassword": "Kata sandi inisialisasi admin", + "licenseInactiveTip": "Lisensi Dify Enterprise untuk ruang kerja Anda tidak aktif. Hubungi administrator Anda untuk terus menggunakan Dify.", + "rightTitle": "Buka potensi penuh LLM", + "welcome": "👋 Selamat datang di Dify, silakan login untuk melanjutkan.", + "changePassword": "Ubah kata sandi", + "setAdminAccountDesc": "Akun admin memiliki hak istimewa penuh untuk membuat aplikasi, mengelola penyedia LLM, dll.", + "join": "Gabung", + "forget": "Lupa Kata Sandi Anda?", + "backToLogin": "Kembali ke halaman masuk", + "oneMoreStep": "Satu langkah lagi", + "signup": { + "signIn": "Masuk", + "signUp": "Daftar", + "createAccount": "Buat akun Anda", + "haveAccount": "Sudah memiliki akun?", + "verifyMail": "Lanjutkan dengan kode verifikasi", + "noAccount": "Tidak punya akun?", + "welcome": "👋 Selamat datang! Silakan isi detail untuk memulai." + }, + "pageTitleForE": "Hei, ayo kita mulai!" +} diff --git a/web/i18n/id-ID/login.ts b/web/i18n/id-ID/login.ts deleted file mode 100644 index 1590aa81a2..0000000000 --- a/web/i18n/id-ID/login.ts +++ /dev/null @@ -1,126 +0,0 @@ -const translation = { - error: { - emailEmpty: 'Alamat email diperlukan', - emailInValid: 'Silakan masukkan alamat email yang valid', - passwordLengthInValid: 'Kata sandi harus minimal 8 karakter', - nameEmpty: 'Nama diperlukan', - registrationNotAllowed: 'Akun tidak ditemukan. Silakan hubungi admin sistem untuk mendaftar.', - passwordInvalid: 'Kata sandi harus berisi huruf dan angka, dan panjangnya harus lebih besar dari 8', - passwordEmpty: 'Kata sandi diperlukan', - invalidEmailOrPassword: 'Email atau kata sandi tidak valid.', - }, - license: { - tip: 'Sebelum memulai Edisi Komunitas Dify, baca GitHub', - link: 'Lisensi sumber terbuka', - }, - checkCode: { - useAnotherMethod: 'Gunakan metode lain', - verify: 'Memverifikasi', - didNotReceiveCode: 'Tidak menerima kode?', - invalidCode: 'Kode tidak valid', - checkYourEmail: 'Periksa email Anda', - validTime: 'Ingatlah bahwa kode tersebut berlaku selama 5 menit', - tipsPrefix: 'Kami mengirimkan kode verifikasi ke', - emptyCode: 'Kode diperlukan', - verificationCode: 'Kode verifikasi', - verificationCodePlaceholder: 'Masukkan kode 6 digit', - resend: 'Kirim Ulang', - }, - webapp: { - login: 'Login', - noLoginMethod: 'Metode autentikasi tidak dikonfigurasi untuk aplikasi web', - noLoginMethodTip: 'Silakan hubungi admin sistem untuk menambahkan metode autentikasi.', - disabled: 'Autentikasi aplikasi web dinonaktifkan. Silakan hubungi admin sistem untuk mengaktifkannya. Anda dapat mencoba menggunakan aplikasi secara langsung.', - }, - pageTitle: 'Hei, mari kita mulai!', - timezone: 'Zona waktu', - continueWithCode: 'Lanjutkan dengan kode', - sendVerificationCode: 'Kirim Kode Verifikasi', - invalidInvitationCode: 'Kode undangan tidak valid', - installBtn: 'Siapkan', - joinTipStart: 'Mengundang Anda untuk bergabung', - or: 'ATAU', - namePlaceholder: 'Nama pengguna Anda', - withSSO: 'Lanjutkan dengan SSO', - passwordPlaceholder: 'Kata sandi Anda', - checkEmailForResetLink: 'Silakan periksa email Anda untuk mendapatkan tautan untuk mengatur ulang kata sandi Anda. Jika tidak muncul dalam beberapa menit, pastikan untuk memeriksa folder spam Anda.', - name: 'Nama pengguna', - password: 'Kata sandi', - acceptPP: 'Saya telah membaca dan menerima kebijakan privasi', - createSample: 'Berdasarkan informasi ini, kami akan membuat contoh aplikasi untuk Anda', - usePassword: 'Gunakan Kata Sandi', - confirmPasswordPlaceholder: 'Konfirmasikan kata sandi baru Anda', - invalid: 'Tautan telah kedaluwarsa', - invitationCodePlaceholder: 'Kode undangan Anda', - emailPlaceholder: 'Email Anda', - tos: 'Ketentuan Layanan', - go: 'Buka Dify', - forgotPassword: 'Lupa Kata Sandi Anda?', - sendUsMail: 'Kirimkan perkenalan Anda melalui email kepada kami, dan kami akan menangani permintaan undangan.', - pp: 'Kebijakan Privasi', - activatedTipEnd: 'tim', - backToSignIn: 'Kembali ke halaman masuk', - passwordChanged: 'Masuk sekarang', - withGitHub: 'Lanjutkan dengan GitHub', - accountAlreadyInited: 'Akun sudah diinisialisasi', - withGoogle: 'Lanjutkan dengan Google', - rightDesc: 'Bangun aplikasi AI yang menarik secara visual, mudah dioperasikan, dan mudah diskalakan.', - invitationCode: 'Kode Undangan', - invalidToken: 'Token tidak valid atau kedaluwarsa', - setAdminAccount: 'Menyiapkan akun admin', - forgotPasswordDesc: 'Silakan masukkan alamat email Anda untuk mengatur ulang kata sandi Anda. Kami akan mengirimi Anda email dengan instruksi tentang cara mengatur ulang kata sandi Anda.', - confirmPassword: 'Konfirmasi Kata Sandi', - changePasswordBtn: 'Tetapkan kata sandi', - resetPassword: 'Atur Ulang Kata Sandi', - explore: 'Jelajahi Dify', - useVerificationCode: 'Gunakan Kode Verifikasi', - resetLinkSent: 'Atur ulang tautan terkirim', - changePasswordTip: 'Silakan masukkan kata sandi baru untuk akun Anda', - tosDesc: 'Dengan mendaftar, Anda menyetujui', - reset: 'Silakan jalankan perintah berikut untuk mengatur ulang kata sandi Anda', - setYourAccount: 'Atur Akun Anda', - interfaceLanguage: 'Bahasa Antarmuka', - noLoginMethod: 'Metode autentikasi tidak dikonfigurasi', - activatedTipStart: 'Anda telah bergabung dengan', - licenseLost: 'Lisensi Hilang', - licenseInactive: 'Lisensi Tidak Aktif', - enterYourName: 'Silakan masukkan nama pengguna Anda', - back: 'Kembali', - activated: 'Masuk sekarang', - goToInit: 'Jika Anda belum menginisialisasi akun, silakan buka halaman inisialisasi', - licenseExpired: 'Lisensi Kedaluwarsa', - joinTipEnd: 'tim di Dify', - dontHave: 'Belum?', - passwordChangedTip: 'Kata sandi Anda telah berhasil diubah', - validate: 'Memvalidasi', - resetPasswordDesc: 'Ketik email yang Anda gunakan untuk mendaftar di Dify dan kami akan mengirimkan email reset kata sandi kepada Anda.', - licenseLostTip: 'Gagal menghubungkan server lisensi Dify. Hubungi administrator Anda untuk terus menggunakan Dify.', - signBtn: 'Masuk', - sendResetLink: 'Kirim tautan reset', - createAndSignIn: 'Buat dan masuk', - licenseExpiredTip: 'Lisensi Dify Enterprise untuk ruang kerja Anda telah kedaluwarsa. Hubungi administrator Anda untuk terus menggunakan Dify.', - email: 'Alamat email', - noLoginMethodTip: 'Silakan hubungi admin sistem untuk menambahkan metode autentikasi.', - adminInitPassword: 'Kata sandi inisialisasi admin', - licenseInactiveTip: 'Lisensi Dify Enterprise untuk ruang kerja Anda tidak aktif. Hubungi administrator Anda untuk terus menggunakan Dify.', - rightTitle: 'Buka potensi penuh LLM', - welcome: '👋 Selamat datang di Dify, silakan login untuk melanjutkan.', - changePassword: 'Ubah kata sandi', - setAdminAccountDesc: 'Akun admin memiliki hak istimewa penuh untuk membuat aplikasi, mengelola penyedia LLM, dll.', - join: 'Gabung', - forget: 'Lupa Kata Sandi Anda?', - backToLogin: 'Kembali ke halaman masuk', - oneMoreStep: 'Satu langkah lagi', - signup: { - signIn: 'Masuk', - signUp: 'Daftar', - createAccount: 'Buat akun Anda', - haveAccount: 'Sudah memiliki akun?', - verifyMail: 'Lanjutkan dengan kode verifikasi', - noAccount: 'Tidak punya akun?', - welcome: '👋 Selamat datang! Silakan isi detail untuk memulai.', - }, - pageTitleForE: 'Hei, ayo kita mulai!', -} - -export default translation diff --git a/web/i18n/id-ID/oauth.json b/web/i18n/id-ID/oauth.json new file mode 100644 index 0000000000..3d7a68af82 --- /dev/null +++ b/web/i18n/id-ID/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "loggedIn": "Aplikasi ini ingin mengakses informasi berikut dari akun Dify Cloud Anda.", + "notLoggedIn": "Aplikasi ini ingin mengakses akun Dify Cloud Anda", + "needLogin": "Silakan masuk untuk mengotorisasi", + "common": "Kami menghormati privasi Anda dan hanya akan menggunakan informasi ini untuk meningkatkan pengalaman Anda dengan alat pengembang kami." + }, + "scopes": { + "avatar": "Avatar", + "name": "Nama", + "email": "Email", + "languagePreference": "Preferensi Bahasa", + "timezone": "Zona waktu" + }, + "error": { + "invalidParams": "Parameter tidak valid", + "authorizeFailed": "Otorisasi gagal", + "authAppInfoFetchFailed": "Gagal mengambil info aplikasi untuk otorisasi" + }, + "continue": "Lanjut", + "unknownApp": "Aplikasi tidak dikenal", + "login": "Masuk", + "connect": "Hubungkan", + "switchAccount": "Ganti Akun" +} diff --git a/web/i18n/id-ID/oauth.ts b/web/i18n/id-ID/oauth.ts deleted file mode 100644 index 933fcb5525..0000000000 --- a/web/i18n/id-ID/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - loggedIn: 'Aplikasi ini ingin mengakses informasi berikut dari akun Dify Cloud Anda.', - notLoggedIn: 'Aplikasi ini ingin mengakses akun Dify Cloud Anda', - needLogin: 'Silakan masuk untuk mengotorisasi', - common: 'Kami menghormati privasi Anda dan hanya akan menggunakan informasi ini untuk meningkatkan pengalaman Anda dengan alat pengembang kami.', - }, - scopes: { - avatar: 'Avatar', - name: 'Nama', - email: 'Email', - languagePreference: 'Preferensi Bahasa', - timezone: 'Zona waktu', - }, - error: { - invalidParams: 'Parameter tidak valid', - authorizeFailed: 'Otorisasi gagal', - authAppInfoFetchFailed: 'Gagal mengambil info aplikasi untuk otorisasi', - }, - continue: 'Lanjut', - unknownApp: 'Aplikasi tidak dikenal', - login: 'Masuk', - connect: 'Hubungkan', - switchAccount: 'Ganti Akun', -} - -export default translation diff --git a/web/i18n/id-ID/pipeline.json b/web/i18n/id-ID/pipeline.json new file mode 100644 index 0000000000..4338ebcfd4 --- /dev/null +++ b/web/i18n/id-ID/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "publishAsPipeline": { + "name": "Nama & ikon pipa", + "namePlaceholder": "Silakan masukkan nama Knowledge Pipeline ini. (Wajib)", + "descriptionPlaceholder": "Silakan masukkan deskripsi Knowledge Pipeline ini. (Opsional)", + "description": "Deskripsi pengetahuan" + }, + "processing": "Pengolahan", + "reRun": "Jalankan ulang", + "testRun": "Uji Coba", + "confirmPublish": "Konfirmasi Publikasi", + "preparingDataSource": "Menyiapkan Sumber Data", + "confirmPublishContent": "Setelah berhasil menerbitkan alur pengetahuan, struktur potongan basis pengetahuan ini tidak dapat diubah. Apakah Anda yakin ingin mempublikasikannya?", + "goToAddDocuments": "Buka untuk menambahkan dokumen", + "publishAs": "Publikasikan sebagai Alur Pengetahuan" + }, + "inputField": { + "manage": "Urus", + "create": "Membuat bidang input pengguna" + }, + "publishToast": { + "title": "Pipeline ini belum dipublikasikan", + "desc": "Ketika alur tidak diterbitkan, Anda dapat memodifikasi struktur potongan di simpul pangkalan pengetahuan, dan orkestrasi dan perubahan alur akan secara otomatis disimpan sebagai draf." + }, + "result": { + "resultPreview": { + "loading": "Pengolahan... Harap tunggu", + "viewDetails": "Lihat detail", + "error": "Terjadi kesalahan selama eksekusi", + "footerTip": "Dalam mode uji coba, pratinjau hingga {{count}} potongan" + } + }, + "ragToolSuggestions": { + "title": "Saran untuk RAG", + "noRecommendationPlugins": "Tidak ada plugin yang disarankan, temukan lebih banyak di Marketplace" + } +} diff --git a/web/i18n/id-ID/pipeline.ts b/web/i18n/id-ID/pipeline.ts deleted file mode 100644 index c211bfa2c8..0000000000 --- a/web/i18n/id-ID/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - publishAsPipeline: { - name: 'Nama & ikon pipa', - namePlaceholder: 'Silakan masukkan nama Knowledge Pipeline ini. (Wajib)', - descriptionPlaceholder: 'Silakan masukkan deskripsi Knowledge Pipeline ini. (Opsional)', - description: 'Deskripsi pengetahuan', - }, - processing: 'Pengolahan', - reRun: 'Jalankan ulang', - testRun: 'Uji Coba', - confirmPublish: 'Konfirmasi Publikasi', - preparingDataSource: 'Menyiapkan Sumber Data', - confirmPublishContent: 'Setelah berhasil menerbitkan alur pengetahuan, struktur potongan basis pengetahuan ini tidak dapat diubah. Apakah Anda yakin ingin mempublikasikannya?', - goToAddDocuments: 'Buka untuk menambahkan dokumen', - publishAs: 'Publikasikan sebagai Alur Pengetahuan', - }, - inputField: { - manage: 'Urus', - create: 'Membuat bidang input pengguna', - }, - publishToast: { - title: 'Pipeline ini belum dipublikasikan', - desc: 'Ketika alur tidak diterbitkan, Anda dapat memodifikasi struktur potongan di simpul pangkalan pengetahuan, dan orkestrasi dan perubahan alur akan secara otomatis disimpan sebagai draf.', - }, - result: { - resultPreview: { - loading: 'Pengolahan... Harap tunggu', - viewDetails: 'Lihat detail', - error: 'Terjadi kesalahan selama eksekusi', - footerTip: 'Dalam mode uji coba, pratinjau hingga {{count}} potongan', - }, - }, - ragToolSuggestions: { - title: 'Saran untuk RAG', - noRecommendationPlugins: 'Tidak ada plugin yang disarankan, temukan lebih banyak di Marketplace', - }, -} - -export default translation diff --git a/web/i18n/id-ID/plugin-tags.json b/web/i18n/id-ID/plugin-tags.json new file mode 100644 index 0000000000..6f7d4a4882 --- /dev/null +++ b/web/i18n/id-ID/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "tags": { + "videos": "Video", + "agent": "Agen", + "image": "Citra", + "travel": "Bepergian", + "design": "Desain", + "entertainment": "Hiburan", + "social": "Sosial", + "weather": "Cuaca", + "finance": "Keuangan", + "medical": "Medis", + "productivity": "Produktivitas", + "news": "Berita", + "business": "Bisnis", + "education": "Pendidikan", + "other": "Lain", + "utilities": "Utilitas", + "search": "Mencari", + "rag": "Kain lap" + }, + "allTags": "Semua Tag", + "searchTags": "Tag Pencarian" +} diff --git a/web/i18n/id-ID/plugin-tags.ts b/web/i18n/id-ID/plugin-tags.ts deleted file mode 100644 index f0de2e45bb..0000000000 --- a/web/i18n/id-ID/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - tags: { - videos: 'Video', - agent: 'Agen', - image: 'Citra', - travel: 'Bepergian', - design: 'Desain', - entertainment: 'Hiburan', - social: 'Sosial', - weather: 'Cuaca', - finance: 'Keuangan', - medical: 'Medis', - productivity: 'Produktivitas', - news: 'Berita', - business: 'Bisnis', - education: 'Pendidikan', - other: 'Lain', - utilities: 'Utilitas', - search: 'Mencari', - rag: 'Kain lap', - }, - allTags: 'Semua Tag', - searchTags: 'Tag Pencarian', -} - -export default translation diff --git a/web/i18n/id-ID/plugin-trigger.json b/web/i18n/id-ID/plugin-trigger.json new file mode 100644 index 0000000000..94d4286a1a --- /dev/null +++ b/web/i18n/id-ID/plugin-trigger.json @@ -0,0 +1,184 @@ +{ + "subscription": { + "title": "Langganan", + "listNum": "langganan {{num}}", + "empty": { + "title": "Tidak ada langganan", + "button": "Langganan baru" + }, + "createButton": { + "oauth": "Langganan baru dengan OAuth", + "apiKey": "Langganan baru dengan Kunci API", + "manual": "Tempel URL untuk membuat langganan baru" + }, + "createSuccess": "Langganan berhasil dibuat", + "createFailed": "Gagal membuat langganan", + "maxCount": "Maks {{num}} langganan", + "selectPlaceholder": "Pilih langganan", + "noSubscriptionSelected": "Belum memilih langganan", + "subscriptionRemoved": "Langganan dihapus", + "list": { + "title": "Langganan", + "addButton": "Tambahkan", + "tip": "Terima acara melalui Langganan", + "item": { + "enabled": "Diaktifkan", + "disabled": "Dinonaktifkan", + "credentialType": { + "api_key": "Kunci API", + "oauth2": "OAuth", + "unauthorized": "Manual" + }, + "actions": { + "delete": "Hapus", + "deleteConfirm": { + "title": "Hapus {{name}}?", + "success": "Langganan {{name}} berhasil dihapus", + "error": "Gagal menghapus langganan {{name}}", + "content": "Setelah dihapus, langganan ini tidak dapat dikembalikan. Harap konfirmasi.", + "contentWithApps": "Langganan saat ini direferensikan oleh {{count}} aplikasi. Menghapusnya akan menyebabkan aplikasi yang dikonfigurasi berhenti menerima acara langganan.", + "confirm": "Konfirmasi Hapus", + "cancel": "Batal", + "confirmInputWarning": "Silakan masukkan nama yang benar untuk konfirmasi.", + "confirmInputPlaceholder": "Masukkan \"{{name}}\" untuk konfirmasi.", + "confirmInputTip": "Silakan masukkan “{{name}}” untuk mengonfirmasi." + } + }, + "status": { + "active": "Aktif", + "inactive": "Tidak aktif" + }, + "usedByNum": "Digunakan oleh {{num}} alur kerja", + "noUsed": "Tidak ada alur kerja yang digunakan" + } + }, + "addType": { + "title": "Tambah langganan", + "description": "Pilih bagaimana Anda ingin membuat langganan pemicu Anda", + "options": { + "apikey": { + "title": "Buat dengan Kunci API", + "description": "Buat langganan secara otomatis menggunakan kredensial API" + }, + "oauth": { + "title": "Buat dengan OAuth", + "description": "Otorisasi dengan platform pihak ketiga untuk membuat langganan", + "clientSettings": "Pengaturan Klien OAuth", + "clientTitle": "Klien OAuth", + "default": "Default", + "custom": "Kustom" + }, + "manual": { + "title": "Pengaturan Manual", + "description": "Tempel URL untuk membuat langganan baru", + "tip": "Konfigurasikan URL di platform pihak ketiga secara manual" + } + } + } + }, + "modal": { + "steps": { + "verify": "Verifikasi", + "configuration": "Konfigurasi" + }, + "common": { + "cancel": "Batal", + "back": "Kembali", + "next": "Berikutnya", + "create": "Buat", + "verify": "Verifikasi", + "authorize": "Otorisasi", + "creating": "Membuat...", + "verifying": "Memverifikasi...", + "authorizing": "Mengizinkan..." + }, + "oauthRedirectInfo": "Karena tidak ditemukan rahasia klien sistem untuk penyedia alat ini, pengaturannya harus dilakukan secara manual, untuk redirect_uri, silakan gunakan", + "apiKey": { + "title": "Buat dengan Kunci API", + "verify": { + "title": "Verifikasi Kredensial", + "description": "Silakan berikan kredensial API Anda untuk memverifikasi akses", + "error": "Verifikasi kredensial gagal. Silakan periksa kunci API Anda.", + "success": "Kredensial berhasil diverifikasi" + }, + "configuration": { + "title": "Atur Langganan", + "description": "Atur parameter langganan Anda" + } + }, + "oauth": { + "title": "Buat dengan OAuth", + "authorization": { + "title": "Otorisasi OAuth", + "description": "Izinkan Dify untuk mengakses akun Anda", + "redirectUrl": "URL Pengalihan", + "redirectUrlHelp": "Gunakan URL ini dalam konfigurasi aplikasi OAuth Anda", + "authorizeButton": "Otorisasi dengan {{provider}}", + "waitingAuth": "Menunggu otorisasi...", + "authSuccess": "Otorisasi berhasil", + "authFailed": "Gagal mendapatkan informasi otorisasi OAuth", + "waitingJump": "Diizinkan, menunggu lompatan" + }, + "configuration": { + "title": "Atur Langganan", + "description": "Atur parameter langganan Anda setelah otorisasi", + "success": "Konfigurasi OAuth berhasil", + "failed": "Konfigurasi OAuth gagal" + }, + "remove": { + "success": "Penghapusan OAuth berhasil", + "failed": "Gagal menghapus OAuth" + }, + "save": { + "success": "Konfigurasi OAuth berhasil disimpan" + } + }, + "manual": { + "title": "Pengaturan Manual", + "description": "Konfigurasikan langganan webhook Anda secara manual", + "logs": { + "title": "Catatan Permintaan", + "request": "Permintaan", + "loading": "Menunggu permintaan dari {{pluginName}}..." + } + }, + "form": { + "subscriptionName": { + "label": "Nama Langganan", + "placeholder": "Masukkan nama langganan", + "required": "Nama langganan wajib diisi" + }, + "callbackUrl": { + "label": "URL Panggilan Balik", + "description": "URL ini akan menerima event webhook", + "tooltip": "Sediakan endpoint yang dapat diakses publik yang dapat menerima permintaan callback dari penyedia pemicu.", + "placeholder": "Sedang menghasilkan...", + "privateAddressWarning": "URL ini tampaknya merupakan alamat internal, yang mungkin menyebabkan permintaan webhook gagal. Anda dapat mengubah TRIGGER_URL ke alamat publik." + } + }, + "errors": { + "createFailed": "Gagal membuat langganan", + "verifyFailed": "Gagal memverifikasi kredensial", + "authFailed": "Otorisasi gagal", + "networkError": "Kesalahan jaringan, silakan coba lagi" + } + }, + "events": { + "title": "Acara Tersedia", + "description": "Peristiwa yang dapat diikuti oleh plugin pemicu ini", + "empty": "Tidak ada acara tersedia", + "event": "Acara", + "events": "Acara", + "actionNum": "{{num}} {{event}} TERMASUK", + "item": { + "parameters": "parameter {{count}}", + "noParameters": "Tidak ada parameter" + }, + "output": "Keluaran" + }, + "node": { + "status": { + "warning": "Putuskan sambungan" + } + } +} diff --git a/web/i18n/id-ID/plugin-trigger.ts b/web/i18n/id-ID/plugin-trigger.ts deleted file mode 100644 index 801637c0ad..0000000000 --- a/web/i18n/id-ID/plugin-trigger.ts +++ /dev/null @@ -1,186 +0,0 @@ -const translation = { - subscription: { - title: 'Langganan', - listNum: 'langganan {{num}}', - empty: { - title: 'Tidak ada langganan', - button: 'Langganan baru', - }, - createButton: { - oauth: 'Langganan baru dengan OAuth', - apiKey: 'Langganan baru dengan Kunci API', - manual: 'Tempel URL untuk membuat langganan baru', - }, - createSuccess: 'Langganan berhasil dibuat', - createFailed: 'Gagal membuat langganan', - maxCount: 'Maks {{num}} langganan', - selectPlaceholder: 'Pilih langganan', - noSubscriptionSelected: 'Belum memilih langganan', - subscriptionRemoved: 'Langganan dihapus', - list: { - title: 'Langganan', - addButton: 'Tambahkan', - tip: 'Terima acara melalui Langganan', - item: { - enabled: 'Diaktifkan', - disabled: 'Dinonaktifkan', - credentialType: { - api_key: 'Kunci API', - oauth2: 'OAuth', - unauthorized: 'Manual', - }, - actions: { - delete: 'Hapus', - deleteConfirm: { - title: 'Hapus {{name}}?', - success: 'Langganan {{name}} berhasil dihapus', - error: 'Gagal menghapus langganan {{name}}', - content: 'Setelah dihapus, langganan ini tidak dapat dikembalikan. Harap konfirmasi.', - contentWithApps: 'Langganan saat ini direferensikan oleh {{count}} aplikasi. Menghapusnya akan menyebabkan aplikasi yang dikonfigurasi berhenti menerima acara langganan.', - confirm: 'Konfirmasi Hapus', - cancel: 'Batal', - confirmInputWarning: 'Silakan masukkan nama yang benar untuk konfirmasi.', - confirmInputPlaceholder: 'Masukkan "{{name}}" untuk konfirmasi.', - confirmInputTip: 'Silakan masukkan “{{name}}” untuk mengonfirmasi.', - }, - }, - status: { - active: 'Aktif', - inactive: 'Tidak aktif', - }, - usedByNum: 'Digunakan oleh {{num}} alur kerja', - noUsed: 'Tidak ada alur kerja yang digunakan', - }, - }, - addType: { - title: 'Tambah langganan', - description: 'Pilih bagaimana Anda ingin membuat langganan pemicu Anda', - options: { - apikey: { - title: 'Buat dengan Kunci API', - description: 'Buat langganan secara otomatis menggunakan kredensial API', - }, - oauth: { - title: 'Buat dengan OAuth', - description: 'Otorisasi dengan platform pihak ketiga untuk membuat langganan', - clientSettings: 'Pengaturan Klien OAuth', - clientTitle: 'Klien OAuth', - default: 'Default', - custom: 'Kustom', - }, - manual: { - title: 'Pengaturan Manual', - description: 'Tempel URL untuk membuat langganan baru', - tip: 'Konfigurasikan URL di platform pihak ketiga secara manual', - }, - }, - }, - }, - modal: { - steps: { - verify: 'Verifikasi', - configuration: 'Konfigurasi', - }, - common: { - cancel: 'Batal', - back: 'Kembali', - next: 'Berikutnya', - create: 'Buat', - verify: 'Verifikasi', - authorize: 'Otorisasi', - creating: 'Membuat...', - verifying: 'Memverifikasi...', - authorizing: 'Mengizinkan...', - }, - oauthRedirectInfo: 'Karena tidak ditemukan rahasia klien sistem untuk penyedia alat ini, pengaturannya harus dilakukan secara manual, untuk redirect_uri, silakan gunakan', - apiKey: { - title: 'Buat dengan Kunci API', - verify: { - title: 'Verifikasi Kredensial', - description: 'Silakan berikan kredensial API Anda untuk memverifikasi akses', - error: 'Verifikasi kredensial gagal. Silakan periksa kunci API Anda.', - success: 'Kredensial berhasil diverifikasi', - }, - configuration: { - title: 'Atur Langganan', - description: 'Atur parameter langganan Anda', - }, - }, - oauth: { - title: 'Buat dengan OAuth', - authorization: { - title: 'Otorisasi OAuth', - description: 'Izinkan Dify untuk mengakses akun Anda', - redirectUrl: 'URL Pengalihan', - redirectUrlHelp: 'Gunakan URL ini dalam konfigurasi aplikasi OAuth Anda', - authorizeButton: 'Otorisasi dengan {{provider}}', - waitingAuth: 'Menunggu otorisasi...', - authSuccess: 'Otorisasi berhasil', - authFailed: 'Gagal mendapatkan informasi otorisasi OAuth', - waitingJump: 'Diizinkan, menunggu lompatan', - }, - configuration: { - title: 'Atur Langganan', - description: 'Atur parameter langganan Anda setelah otorisasi', - success: 'Konfigurasi OAuth berhasil', - failed: 'Konfigurasi OAuth gagal', - }, - remove: { - success: 'Penghapusan OAuth berhasil', - failed: 'Gagal menghapus OAuth', - }, - save: { - success: 'Konfigurasi OAuth berhasil disimpan', - }, - }, - manual: { - title: 'Pengaturan Manual', - description: 'Konfigurasikan langganan webhook Anda secara manual', - logs: { - title: 'Catatan Permintaan', - request: 'Permintaan', - loading: 'Menunggu permintaan dari {{pluginName}}...', - }, - }, - form: { - subscriptionName: { - label: 'Nama Langganan', - placeholder: 'Masukkan nama langganan', - required: 'Nama langganan wajib diisi', - }, - callbackUrl: { - label: 'URL Panggilan Balik', - description: 'URL ini akan menerima event webhook', - tooltip: 'Sediakan endpoint yang dapat diakses publik yang dapat menerima permintaan callback dari penyedia pemicu.', - placeholder: 'Sedang menghasilkan...', - privateAddressWarning: 'URL ini tampaknya merupakan alamat internal, yang mungkin menyebabkan permintaan webhook gagal. Anda dapat mengubah TRIGGER_URL ke alamat publik.', - }, - }, - errors: { - createFailed: 'Gagal membuat langganan', - verifyFailed: 'Gagal memverifikasi kredensial', - authFailed: 'Otorisasi gagal', - networkError: 'Kesalahan jaringan, silakan coba lagi', - }, - }, - events: { - title: 'Acara Tersedia', - description: 'Peristiwa yang dapat diikuti oleh plugin pemicu ini', - empty: 'Tidak ada acara tersedia', - event: 'Acara', - events: 'Acara', - actionNum: '{{num}} {{event}} TERMASUK', - item: { - parameters: 'parameter {{count}}', - noParameters: 'Tidak ada parameter', - }, - output: 'Keluaran', - }, - node: { - status: { - warning: 'Putuskan sambungan', - }, - }, -} - -export default translation diff --git a/web/i18n/id-ID/plugin.json b/web/i18n/id-ID/plugin.json new file mode 100644 index 0000000000..8eb34f56d1 --- /dev/null +++ b/web/i18n/id-ID/plugin.json @@ -0,0 +1,323 @@ +{ + "metadata": { + "title": "Plugin" + }, + "category": { + "all": "Semua", + "models": "Model", + "extensions": "Ekstensi", + "bundles": "Bundel", + "agents": "Strategi Agen", + "tools": "Perkakas", + "datasources": "Sumber Data", + "triggers": "Pemicu" + }, + "categorySingle": { + "bundle": "Bundel", + "agent": "Strategi Agen", + "tool": "Alat", + "model": "Pola", + "extension": "Ekstensi", + "datasource": "Sumber Data", + "trigger": "Pemicu" + }, + "list": { + "source": { + "local": "Instal dari File Paket Lokal", + "marketplace": "Instal dari Marketplace", + "github": "Instal dari GitHub" + }, + "notFound": "Tidak ada plugin yang ditemukan", + "noInstalled": "Tidak ada plugin yang diinstal" + }, + "source": { + "github": "GitHub", + "marketplace": "Pasar", + "local": "File Paket Lokal" + }, + "detailPanel": { + "categoryTip": { + "debugging": "Debugging Plugin", + "github": "Diinstal dari Github", + "marketplace": "Diinstal dari Marketplace", + "local": "Plugin Lokal" + }, + "operation": { + "remove": "Hapus", + "info": "Plugin Info", + "update": "Pemutakhiran", + "detail": "Rincian", + "viewDetail": "Lihat Detail", + "install": "Pasang", + "checkUpdate": "Periksa Pembaruan", + "back": "Kembali" + }, + "toolSelector": { + "descriptionLabel": "Deskripsi alat", + "title": "Tambahkan alat", + "uninstalledLink": "Kelola di Plugin", + "uninstalledTitle": "Alat tidak terpasang", + "empty": "Klik tombol ' ' untuk menambahkan alat. Anda dapat menambahkan beberapa alat.", + "params": "KONFIGURASI PENALARAN", + "unsupportedMCPTool": "Saat ini versi plugin strategi agen yang dipilih tidak mendukung alat MCP.", + "auto": "Otomatis", + "descriptionPlaceholder": "Deskripsi singkat tentang tujuan alat, misalnya, mendapatkan suhu untuk lokasi tertentu.", + "toolSetting": "Pengaturan Alat", + "settings": "PENGATURAN PENGGUNA", + "unsupportedTitle": "Tindakan Tidak Didukung", + "unsupportedContent2": "Klik untuk beralih versi.", + "paramsTip2": "Saat 'Otomatis' dinonaktifkan, nilai default digunakan.", + "paramsTip1": "Mengontrol parameter inferensi LLM.", + "toolLabel": "Alat", + "uninstalledContent": "Plugin ini diinstal dari repositori lokal/GitHub. Silakan gunakan setelah pemasangan.", + "unsupportedContent": "Versi plugin yang diinstal tidak menyediakan tindakan ini.", + "placeholder": "Pilih alat..." + }, + "deprecation": { + "reason": { + "businessAdjustments": "Penyesuaian bisnis", + "noMaintainer": "tidak ada pengelola", + "ownershipTransferred": "kepemilikan dialihkan" + }, + "noReason": "Plugin ini tidak digunakan lagi dan tidak akan diperbarui lagi.", + "fullMessage": "Plugin ini telah dihentikan karena {{deprecatedReason}}, dan tidak akan diperbarui lagi. Silakan gunakan {{-alternativePluginId}} sebagai gantinya.", + "onlyReason": "Plugin ini telah dihentikan penggunaannya karena {{deprecatedReason}} dan tidak akan diperbarui lagi." + }, + "endpoints": "Endpoint", + "endpointDisableTip": "Nonaktifkan Titik Akhir", + "switchVersion": "Beralih Versi", + "disabled": "Cacat", + "configureApp": "Konfigurasikan Aplikasi", + "serviceOk": "Layanan OK", + "endpointModalDesc": "Setelah dikonfigurasi, fitur yang disediakan oleh plugin melalui titik akhir API dapat digunakan.", + "endpointsDocLink": "Lihat dokumen", + "configureModel": "Mengonfigurasi model", + "endpointDeleteTip": "Hapus Titik Akhir", + "configureTool": "Konfigurasikan alat", + "endpointsTip": "Plugin ini menyediakan fungsionalitas khusus melalui titik akhir, dan Anda dapat mengonfigurasi beberapa set titik akhir untuk ruang kerja saat ini.", + "endpointModalTitle": "Menyiapkan titik akhir", + "endpointsEmpty": "Klik tombol ' ' untuk menambahkan titik akhir", + "actionNum": "{{num}} {{action}} TERMASUK", + "strategyNum": "{{num}} {{strategy}} TERMASUK", + "endpointDisableContent": "Apakah Anda ingin menonaktifkan {{name}}?", + "endpointDeleteContent": "Apakah Anda ingin menghapus {{name}}?", + "modelNum": "{{num}} MODEL TERMASUK" + }, + "debugInfo": { + "title": "Debugging", + "viewDocs": "Lihat Dokumen" + }, + "privilege": { + "whoCanDebug": "Siapa yang dapat men-debug plugin?", + "title": "Preferensi Plugin", + "everyone": "Orang", + "noone": "Tidak ada seorang pun", + "admins": "Admin", + "whoCanInstall": "Siapa yang dapat menginstal dan mengelola plugin?" + }, + "autoUpdate": { + "strategy": { + "disabled": { + "name": "Cacat", + "description": "Plugin tidak akan diperbarui secara otomatis" + }, + "fixOnly": { + "name": "Hanya Perbaiki", + "description": "Perbarui otomatis hanya untuk versi patch (misalnya, 1.0.1 → 1.0.2). Perubahan versi kecil tidak akan memicu pembaruan.", + "selectedDescription": "Perbarui otomatis hanya untuk versi patch" + }, + "latest": { + "selectedDescription": "Selalu perbarui ke versi terbaru", + "name": "Terbaru", + "description": "Selalu perbarui ke versi terbaru" + } + }, + "upgradeMode": { + "all": "Perbarui semua", + "exclude": "Kecualikan yang dipilih", + "partial": "Hanya dipilih" + }, + "upgradeModePlaceholder": { + "exclude": "Plugin yang dipilih tidak akan diperbarui secara otomatis", + "partial": "Hanya plugin yang dipilih yang akan diperbarui secara otomatis. Saat ini tidak ada plugin yang dipilih, jadi tidak ada plugin yang akan diperbarui secara otomatis." + }, + "operation": { + "select": "Pilih plugin", + "clearAll": "Hapus semua" + }, + "pluginDowngradeWarning": { + "downgrade": "Tetap turun", + "title": "Penurunan Plugin", + "description": "Pembaruan otomatis saat ini diaktifkan untuk plugin ini. Menurunkan versi dapat menyebabkan perubahan Anda ditimpa selama pembaruan otomatis berikutnya.", + "exclude": "Mengecualikan dari pembaruan otomatis" + }, + "noPluginPlaceholder": { + "noFound": "Tidak ada plugin yang ditemukan", + "noInstalled": "Tidak ada plugin yang diinstal" + }, + "updateTime": "Waktu pembaruan", + "updateSettings": "Perbarui Pengaturan", + "updateTimeTitle": "Waktu pembaruan", + "specifyPluginsToUpdate": "Tentukan plugin untuk diperbarui", + "automaticUpdates": "Pembaruan otomatis", + "excludeUpdate": "Plugin {{num}} berikut ini tidak akan diperbarui secara otomatis", + "partialUPdate": "Hanya plugin {{num}} berikut yang akan diperbarui secara otomatis", + "nextUpdateTime": "Pembaruan otomatis berikutnya: {{time}}", + "changeTimezone": "Untuk mengubah zona waktu, pergi ke Pengaturan" + }, + "pluginInfoModal": { + "repository": "Repositori", + "packageName": "Paket", + "title": "Info plugin", + "release": "Lepaskan" + }, + "action": { + "deleteContentRight": "Plugin?", + "pluginInfo": "Info plugin", + "checkForUpdates": "Periksa pembaruan", + "deleteContentLeft": "Apakah Anda ingin menghapus", + "delete": "Hapus plugin", + "usedInApps": "Plugin ini digunakan di {{num}} aplikasi." + }, + "installModal": { + "labels": { + "version": "Versi", + "package": "Paket", + "repository": "Repositori" + }, + "cancel": "Membatalkan", + "close": "Tutup", + "installFailedDesc": "Plugin telah diinstal gagal.", + "installing": "Menginstal...", + "uploadFailed": "Upload gagal", + "pluginLoadErrorDesc": "Plugin ini tidak akan diinstal", + "next": "Lanjut", + "installedSuccessfully": "Instalasi berhasil", + "install": "Pasang", + "installFailed": "Instalasi gagal", + "back": "Kembali", + "readyToInstallPackage": "Tentang menginstal plugin berikut", + "installedSuccessfullyDesc": "Plugin telah berhasil diinstal.", + "pluginLoadError": "Kesalahan pemuatan plugin", + "readyToInstall": "Tentang menginstal plugin berikut", + "installWarning": "Plugin ini tidak diperbolehkan untuk diinstal.", + "dropPluginToInstall": "Jatuhkan paket plugin di sini untuk menginstal", + "installComplete": "Instalasi selesai", + "installPlugin": "Instal Plugin", + "uploadingPackage": "Mengunggah {{packageName}}...", + "readyToInstallPackages": "Akan memasang plugin {{num}} berikut", + "fromTrustSource": "Pastikan Anda hanya menginstal plugin dari sumber yang tepercaya." + }, + "installFromGitHub": { + "installFailed": "Instalasi gagal", + "uploadFailed": "Upload gagal", + "installedSuccessfully": "Instalasi berhasil", + "selectPackagePlaceholder": "Silakan pilih paket", + "updatePlugin": "Perbarui plugin dari GitHub", + "selectPackage": "Pilih paket", + "installPlugin": "Instal plugin dari GitHub", + "gitHubRepo": "Repositori GitHub", + "installNote": "Pastikan Anda hanya menginstal plugin dari sumber tepercaya.", + "selectVersionPlaceholder": "Silakan pilih versi", + "selectVersion": "Pilih versi" + }, + "upgrade": { + "upgrading": "Menginstal...", + "upgrade": "Pasang", + "close": "Tutup", + "successfulTitle": "Instal berhasil", + "description": "Tentang menginstal plugin berikut", + "title": "Instal Plugin", + "usedInApps": "Digunakan di {{num}} aplikasi" + }, + "error": { + "fetchReleasesError": "Tidak dapat mengambil rilis. Silakan coba lagi nanti.", + "noReleasesFound": "Tidak ada rilis yang ditemukan. Silakan periksa repositori GitHub atau URL input.", + "inValidGitHubUrl": "URL GitHub tidak valid. Silakan masukkan URL yang valid dalam format: https://github.com/owner/repo" + }, + "marketplace": { + "sortOption": { + "recentlyUpdated": "Baru-baru ini Diperbarui", + "firstReleased": "Pertama Dirilis", + "newlyReleased": "Baru Dirilis", + "mostPopular": "Paling Populer" + }, + "viewMore": "Lihat lebih banyak", + "noPluginFound": "Tidak ada plugin yang ditemukan", + "discover": "Menemukan", + "empower": "Berdayakan pengembangan AI Anda", + "partnerTip": "Diverifikasi oleh partner Dify", + "moreFrom": "Selengkapnya dari Marketplace", + "sortBy": "Urutkan berdasarkan", + "and": "dan", + "difyMarketplace": "Dify Marketplace", + "verifiedTip": "Diverifikasi oleh Dify", + "pluginsResult": "hasil {{num}}" + }, + "task": { + "clearAll": "Hapus semua", + "installing": "Memasang plugin {{installingLength}}, 0 selesai.", + "installingWithSuccess": "Memasang plugin {{installingLength}}, {{successLength}} berhasil.", + "installingWithError": "Memasang {{installingLength}} plugin, {{successLength}} berhasil, {{errorLength}} gagal", + "installError": "Gagal menginstal plugin {{errorLength}}, klik untuk melihat", + "installedError": "Gagal menginstal {{errorLength}} plugin", + "installSuccess": "{{successLength}} plugins installed successfully", + "installed": "Installed", + "runningPlugins": "Installing Plugins", + "successPlugins": "Successfully Installed Plugins", + "errorPlugins": "Failed to Install Plugins" + }, + "auth": { + "customCredentialUnavailable": "Kredensial kustom saat ini tidak tersedia", + "clientInfo": "Karena tidak ada rahasia klien sistem yang ditemukan untuk penyedia alat ini, pengaturannya secara manual diperlukan, untuk redirect_uri, silakan gunakan", + "unavailable": "Tidak tersedia", + "oauthClientSettings": "Pengaturan Klien OAuth", + "useApiAuth": "Konfigurasi Otorisasi Kunci API", + "default": "Default", + "useApi": "Menggunakan Kunci API", + "addApi": "Menambahkan Kunci API", + "useApiAuthDesc": "Setelah mengonfigurasi kredensial, semua anggota dalam ruang kerja dapat menggunakan alat ini saat mengatur aplikasi.", + "useOAuthAuth": "Gunakan Otorisasi OAuth", + "addOAuth": "Tambahkan OAuth", + "oauthClient": "Klien OAuth", + "useOAuth": "Gunakan OAuth", + "authorizations": "Otorisasi", + "setDefault": "Tetapkan sebagai default", + "saveAndAuth": "Simpan dan Otorisasi", + "custom": "Adat", + "credentialUnavailable": "Kredensial saat ini tidak tersedia. Silakan hubungi admin.", + "setupOAuth": "Siapkan Klien OAuth", + "saveOnly": "Hanya Hemat", + "authRemoved": "Autentikasi dihapus", + "authorizationName": "Nama Otorisasi", + "workspaceDefault": "Ruang Kerja Default", + "authorization": "Otorisasi", + "credentialUnavailableInButton": "Kredensial tidak tersedia", + "emptyAuth": "Silakan konfigurasikan otentikasi", + "connectedWorkspace": "Ruang Kerja yang Terhubung" + }, + "searchInMarketplace": "Cari di Marketplace", + "findMoreInMarketplace": "Temukan selengkapnya di Marketplace", + "searchPlugins": "Cari plugin", + "from": "Dari", + "search": "Mencari", + "allCategories": "Semua Kategori", + "searchCategories": "Cari Kategori", + "searchTools": "Alat pencarian...", + "deprecated": "Usang", + "fromMarketplace": "Dari Marketplace", + "installFrom": "INSTAL DARI", + "installPlugin": "Instal plugin", + "installAction": "Pasang", + "publishPlugins": "Menerbitkan plugin", + "requestAPlugin": "Minta plugin", + "endpointsEnabled": "{{num}} set endpoint diaktifkan", + "install": "{{num}} menginstal", + "difyVersionNotCompatible": "Versi Dify saat ini tidak kompatibel dengan plugin ini, harap perbarui ke versi minimum yang dibutuhkan: {{minimalDifyVersion}}", + "readmeInfo": { + "title": "BACA SAYA", + "needHelpCheckReadme": "Butuh bantuan? Periksa README.", + "noReadmeAvailable": "Tidak ada README yang tersedia", + "failedToFetch": "Gagal mengambil README" + } +} diff --git a/web/i18n/id-ID/plugin.ts b/web/i18n/id-ID/plugin.ts deleted file mode 100644 index d849777121..0000000000 --- a/web/i18n/id-ID/plugin.ts +++ /dev/null @@ -1,325 +0,0 @@ -const translation = { - metadata: { - title: 'Plugin', - }, - category: { - all: 'Semua', - models: 'Model', - extensions: 'Ekstensi', - bundles: 'Bundel', - agents: 'Strategi Agen', - tools: 'Perkakas', - datasources: 'Sumber Data', - triggers: 'Pemicu', - }, - categorySingle: { - bundle: 'Bundel', - agent: 'Strategi Agen', - tool: 'Alat', - model: 'Pola', - extension: 'Ekstensi', - datasource: 'Sumber Data', - trigger: 'Pemicu', - }, - list: { - source: { - local: 'Instal dari File Paket Lokal', - marketplace: 'Instal dari Marketplace', - github: 'Instal dari GitHub', - }, - notFound: 'Tidak ada plugin yang ditemukan', - noInstalled: 'Tidak ada plugin yang diinstal', - }, - source: { - github: 'GitHub', - marketplace: 'Pasar', - local: 'File Paket Lokal', - }, - detailPanel: { - categoryTip: { - debugging: 'Debugging Plugin', - github: 'Diinstal dari Github', - marketplace: 'Diinstal dari Marketplace', - local: 'Plugin Lokal', - }, - operation: { - remove: 'Hapus', - info: 'Plugin Info', - update: 'Pemutakhiran', - detail: 'Rincian', - viewDetail: 'Lihat Detail', - install: 'Pasang', - checkUpdate: 'Periksa Pembaruan', - back: 'Kembali', - }, - toolSelector: { - descriptionLabel: 'Deskripsi alat', - title: 'Tambahkan alat', - uninstalledLink: 'Kelola di Plugin', - uninstalledTitle: 'Alat tidak terpasang', - empty: 'Klik tombol \' \' untuk menambahkan alat. Anda dapat menambahkan beberapa alat.', - params: 'KONFIGURASI PENALARAN', - unsupportedMCPTool: 'Saat ini versi plugin strategi agen yang dipilih tidak mendukung alat MCP.', - auto: 'Otomatis', - descriptionPlaceholder: 'Deskripsi singkat tentang tujuan alat, misalnya, mendapatkan suhu untuk lokasi tertentu.', - toolSetting: 'Pengaturan Alat', - settings: 'PENGATURAN PENGGUNA', - unsupportedTitle: 'Tindakan Tidak Didukung', - unsupportedContent2: 'Klik untuk beralih versi.', - paramsTip2: 'Saat \'Otomatis\' dinonaktifkan, nilai default digunakan.', - paramsTip1: 'Mengontrol parameter inferensi LLM.', - toolLabel: 'Alat', - uninstalledContent: 'Plugin ini diinstal dari repositori lokal/GitHub. Silakan gunakan setelah pemasangan.', - unsupportedContent: 'Versi plugin yang diinstal tidak menyediakan tindakan ini.', - placeholder: 'Pilih alat...', - }, - deprecation: { - reason: { - businessAdjustments: 'Penyesuaian bisnis', - noMaintainer: 'tidak ada pengelola', - ownershipTransferred: 'kepemilikan dialihkan', - }, - noReason: 'Plugin ini tidak digunakan lagi dan tidak akan diperbarui lagi.', - fullMessage: 'Plugin ini telah dihentikan karena {{deprecatedReason}}, dan tidak akan diperbarui lagi. Silakan gunakan {{-alternativePluginId}} sebagai gantinya.', - onlyReason: 'Plugin ini telah dihentikan penggunaannya karena {{deprecatedReason}} dan tidak akan diperbarui lagi.', - }, - endpoints: 'Endpoint', - endpointDisableTip: 'Nonaktifkan Titik Akhir', - switchVersion: 'Beralih Versi', - disabled: 'Cacat', - configureApp: 'Konfigurasikan Aplikasi', - serviceOk: 'Layanan OK', - endpointModalDesc: 'Setelah dikonfigurasi, fitur yang disediakan oleh plugin melalui titik akhir API dapat digunakan.', - endpointsDocLink: 'Lihat dokumen', - configureModel: 'Mengonfigurasi model', - endpointDeleteTip: 'Hapus Titik Akhir', - configureTool: 'Konfigurasikan alat', - endpointsTip: 'Plugin ini menyediakan fungsionalitas khusus melalui titik akhir, dan Anda dapat mengonfigurasi beberapa set titik akhir untuk ruang kerja saat ini.', - endpointModalTitle: 'Menyiapkan titik akhir', - endpointsEmpty: 'Klik tombol \' \' untuk menambahkan titik akhir', - actionNum: '{{num}} {{action}} TERMASUK', - strategyNum: '{{num}} {{strategy}} TERMASUK', - endpointDisableContent: 'Apakah Anda ingin menonaktifkan {{name}}?', - endpointDeleteContent: 'Apakah Anda ingin menghapus {{name}}?', - modelNum: '{{num}} MODEL TERMASUK', - }, - debugInfo: { - title: 'Debugging', - viewDocs: 'Lihat Dokumen', - }, - privilege: { - whoCanDebug: 'Siapa yang dapat men-debug plugin?', - title: 'Preferensi Plugin', - everyone: 'Orang', - noone: 'Tidak ada seorang pun', - admins: 'Admin', - whoCanInstall: 'Siapa yang dapat menginstal dan mengelola plugin?', - }, - autoUpdate: { - strategy: { - disabled: { - name: 'Cacat', - description: 'Plugin tidak akan diperbarui secara otomatis', - }, - fixOnly: { - name: 'Hanya Perbaiki', - description: 'Perbarui otomatis hanya untuk versi patch (misalnya, 1.0.1 → 1.0.2). Perubahan versi kecil tidak akan memicu pembaruan.', - selectedDescription: 'Perbarui otomatis hanya untuk versi patch', - }, - latest: { - selectedDescription: 'Selalu perbarui ke versi terbaru', - name: 'Terbaru', - description: 'Selalu perbarui ke versi terbaru', - }, - }, - upgradeMode: { - all: 'Perbarui semua', - exclude: 'Kecualikan yang dipilih', - partial: 'Hanya dipilih', - }, - upgradeModePlaceholder: { - exclude: 'Plugin yang dipilih tidak akan diperbarui secara otomatis', - partial: 'Hanya plugin yang dipilih yang akan diperbarui secara otomatis. Saat ini tidak ada plugin yang dipilih, jadi tidak ada plugin yang akan diperbarui secara otomatis.', - }, - operation: { - select: 'Pilih plugin', - clearAll: 'Hapus semua', - }, - pluginDowngradeWarning: { - downgrade: 'Tetap turun', - title: 'Penurunan Plugin', - description: 'Pembaruan otomatis saat ini diaktifkan untuk plugin ini. Menurunkan versi dapat menyebabkan perubahan Anda ditimpa selama pembaruan otomatis berikutnya.', - exclude: 'Mengecualikan dari pembaruan otomatis', - }, - noPluginPlaceholder: { - noFound: 'Tidak ada plugin yang ditemukan', - noInstalled: 'Tidak ada plugin yang diinstal', - }, - updateTime: 'Waktu pembaruan', - updateSettings: 'Perbarui Pengaturan', - updateTimeTitle: 'Waktu pembaruan', - specifyPluginsToUpdate: 'Tentukan plugin untuk diperbarui', - automaticUpdates: 'Pembaruan otomatis', - excludeUpdate: 'Plugin {{num}} berikut ini tidak akan diperbarui secara otomatis', - partialUPdate: 'Hanya plugin {{num}} berikut yang akan diperbarui secara otomatis', - nextUpdateTime: 'Pembaruan otomatis berikutnya: {{time}}', - changeTimezone: 'Untuk mengubah zona waktu, pergi ke Pengaturan', - }, - pluginInfoModal: { - repository: 'Repositori', - packageName: 'Paket', - title: 'Info plugin', - release: 'Lepaskan', - }, - action: { - deleteContentRight: 'Plugin?', - pluginInfo: 'Info plugin', - checkForUpdates: 'Periksa pembaruan', - deleteContentLeft: 'Apakah Anda ingin menghapus', - delete: 'Hapus plugin', - usedInApps: 'Plugin ini digunakan di {{num}} aplikasi.', - }, - installModal: { - labels: { - version: 'Versi', - package: 'Paket', - repository: 'Repositori', - }, - cancel: 'Membatalkan', - close: 'Tutup', - installFailedDesc: 'Plugin telah diinstal gagal.', - installing: 'Menginstal...', - uploadFailed: 'Upload gagal', - pluginLoadErrorDesc: 'Plugin ini tidak akan diinstal', - next: 'Lanjut', - installedSuccessfully: 'Instalasi berhasil', - install: 'Pasang', - installFailed: 'Instalasi gagal', - back: 'Kembali', - readyToInstallPackage: 'Tentang menginstal plugin berikut', - installedSuccessfullyDesc: 'Plugin telah berhasil diinstal.', - pluginLoadError: 'Kesalahan pemuatan plugin', - readyToInstall: 'Tentang menginstal plugin berikut', - installWarning: 'Plugin ini tidak diperbolehkan untuk diinstal.', - dropPluginToInstall: 'Jatuhkan paket plugin di sini untuk menginstal', - installComplete: 'Instalasi selesai', - installPlugin: 'Instal Plugin', - uploadingPackage: 'Mengunggah {{packageName}}...', - readyToInstallPackages: 'Akan memasang plugin {{num}} berikut', - fromTrustSource: 'Pastikan Anda hanya menginstal plugin dari sumber yang tepercaya.', - }, - installFromGitHub: { - installFailed: 'Instalasi gagal', - uploadFailed: 'Upload gagal', - installedSuccessfully: 'Instalasi berhasil', - selectPackagePlaceholder: 'Silakan pilih paket', - updatePlugin: 'Perbarui plugin dari GitHub', - selectPackage: 'Pilih paket', - installPlugin: 'Instal plugin dari GitHub', - gitHubRepo: 'Repositori GitHub', - installNote: 'Pastikan Anda hanya menginstal plugin dari sumber tepercaya.', - selectVersionPlaceholder: 'Silakan pilih versi', - selectVersion: 'Pilih versi', - }, - upgrade: { - upgrading: 'Menginstal...', - upgrade: 'Pasang', - close: 'Tutup', - successfulTitle: 'Instal berhasil', - description: 'Tentang menginstal plugin berikut', - title: 'Instal Plugin', - usedInApps: 'Digunakan di {{num}} aplikasi', - }, - error: { - fetchReleasesError: 'Tidak dapat mengambil rilis. Silakan coba lagi nanti.', - noReleasesFound: 'Tidak ada rilis yang ditemukan. Silakan periksa repositori GitHub atau URL input.', - inValidGitHubUrl: 'URL GitHub tidak valid. Silakan masukkan URL yang valid dalam format: https://github.com/owner/repo', - }, - marketplace: { - sortOption: { - recentlyUpdated: 'Baru-baru ini Diperbarui', - firstReleased: 'Pertama Dirilis', - newlyReleased: 'Baru Dirilis', - mostPopular: 'Paling Populer', - }, - viewMore: 'Lihat lebih banyak', - noPluginFound: 'Tidak ada plugin yang ditemukan', - discover: 'Menemukan', - empower: 'Berdayakan pengembangan AI Anda', - partnerTip: 'Diverifikasi oleh partner Dify', - moreFrom: 'Selengkapnya dari Marketplace', - sortBy: 'Urutkan berdasarkan', - and: 'dan', - difyMarketplace: 'Dify Marketplace', - verifiedTip: 'Diverifikasi oleh Dify', - pluginsResult: 'hasil {{num}}', - }, - task: { - clearAll: 'Hapus semua', - installing: 'Memasang plugin {{installingLength}}, 0 selesai.', - installingWithSuccess: 'Memasang plugin {{installingLength}}, {{successLength}} berhasil.', - installingWithError: 'Memasang {{installingLength}} plugin, {{successLength}} berhasil, {{errorLength}} gagal', - installError: 'Gagal menginstal plugin {{errorLength}}, klik untuk melihat', - installedError: 'Gagal menginstal {{errorLength}} plugin', - installSuccess: '{{successLength}} plugins installed successfully', - installed: 'Installed', - runningPlugins: 'Installing Plugins', - successPlugins: 'Successfully Installed Plugins', - errorPlugins: 'Failed to Install Plugins', - }, - auth: { - customCredentialUnavailable: 'Kredensial kustom saat ini tidak tersedia', - clientInfo: 'Karena tidak ada rahasia klien sistem yang ditemukan untuk penyedia alat ini, pengaturannya secara manual diperlukan, untuk redirect_uri, silakan gunakan', - unavailable: 'Tidak tersedia', - oauthClientSettings: 'Pengaturan Klien OAuth', - useApiAuth: 'Konfigurasi Otorisasi Kunci API', - default: 'Default', - useApi: 'Menggunakan Kunci API', - addApi: 'Menambahkan Kunci API', - useApiAuthDesc: 'Setelah mengonfigurasi kredensial, semua anggota dalam ruang kerja dapat menggunakan alat ini saat mengatur aplikasi.', - useOAuthAuth: 'Gunakan Otorisasi OAuth', - addOAuth: 'Tambahkan OAuth', - oauthClient: 'Klien OAuth', - useOAuth: 'Gunakan OAuth', - authorizations: 'Otorisasi', - setDefault: 'Tetapkan sebagai default', - saveAndAuth: 'Simpan dan Otorisasi', - custom: 'Adat', - credentialUnavailable: 'Kredensial saat ini tidak tersedia. Silakan hubungi admin.', - setupOAuth: 'Siapkan Klien OAuth', - saveOnly: 'Hanya Hemat', - authRemoved: 'Autentikasi dihapus', - authorizationName: 'Nama Otorisasi', - workspaceDefault: 'Ruang Kerja Default', - authorization: 'Otorisasi', - credentialUnavailableInButton: 'Kredensial tidak tersedia', - emptyAuth: 'Silakan konfigurasikan otentikasi', - connectedWorkspace: 'Ruang Kerja yang Terhubung', - }, - searchInMarketplace: 'Cari di Marketplace', - findMoreInMarketplace: 'Temukan selengkapnya di Marketplace', - searchPlugins: 'Cari plugin', - from: 'Dari', - search: 'Mencari', - allCategories: 'Semua Kategori', - searchCategories: 'Cari Kategori', - searchTools: 'Alat pencarian...', - deprecated: 'Usang', - fromMarketplace: 'Dari Marketplace', - installFrom: 'INSTAL DARI', - installPlugin: 'Instal plugin', - installAction: 'Pasang', - publishPlugins: 'Menerbitkan plugin', - requestAPlugin: 'Minta plugin', - endpointsEnabled: '{{num}} set endpoint diaktifkan', - install: '{{num}} menginstal', - difyVersionNotCompatible: 'Versi Dify saat ini tidak kompatibel dengan plugin ini, harap perbarui ke versi minimum yang dibutuhkan: {{minimalDifyVersion}}', - readmeInfo: { - title: 'BACA SAYA', - needHelpCheckReadme: 'Butuh bantuan? Periksa README.', - noReadmeAvailable: 'Tidak ada README yang tersedia', - failedToFetch: 'Gagal mengambil README', - }, -} - -export default translation diff --git a/web/i18n/id-ID/register.json b/web/i18n/id-ID/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/id-ID/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/id-ID/register.ts b/web/i18n/id-ID/register.ts deleted file mode 100644 index 928649474b..0000000000 --- a/web/i18n/id-ID/register.ts +++ /dev/null @@ -1,4 +0,0 @@ -const translation = { -} - -export default translation diff --git a/web/i18n/id-ID/run-log.json b/web/i18n/id-ID/run-log.json new file mode 100644 index 0000000000..a5f39b1cb5 --- /dev/null +++ b/web/i18n/id-ID/run-log.json @@ -0,0 +1,29 @@ +{ + "resultPanel": { + "time": "WAKTU BERLALU", + "tokens": "TOTAL TOKEN", + "status": "KEADAAN" + }, + "meta": { + "version": "Versi", + "startTime": "Waktu Mulai", + "status": "Keadaan", + "executor": "Pelaksana", + "time": "Waktu yang telah berlalu", + "steps": "Jalankan Langkah-langkah", + "title": "METADATA", + "tokens": "Total Token" + }, + "resultEmpty": { + "link": "Panel Detail", + "tipRight": "lihat itu.", + "title": "Eksekusi ini hanya mengeluarkan format JSON,", + "tipLeft": "silakan pergi ke" + }, + "actionLogs": "Log Tindakan", + "tracing": "MENELUSURI", + "detail": "DETAIL", + "result": "HASIL", + "input": "MASUKAN", + "circularInvocationTip": "Ada pemanggilan melingkar alat/simpul dalam alur kerja saat ini." +} diff --git a/web/i18n/id-ID/run-log.ts b/web/i18n/id-ID/run-log.ts deleted file mode 100644 index 973545bacd..0000000000 --- a/web/i18n/id-ID/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -const translation = { - resultPanel: { - time: 'WAKTU BERLALU', - tokens: 'TOTAL TOKEN', - status: 'KEADAAN', - }, - meta: { - version: 'Versi', - startTime: 'Waktu Mulai', - status: 'Keadaan', - executor: 'Pelaksana', - time: 'Waktu yang telah berlalu', - steps: 'Jalankan Langkah-langkah', - title: 'METADATA', - tokens: 'Total Token', - }, - resultEmpty: { - link: 'Panel Detail', - tipRight: 'lihat itu.', - title: 'Eksekusi ini hanya mengeluarkan format JSON,', - tipLeft: 'silakan pergi ke', - }, - actionLogs: 'Log Tindakan', - tracing: 'MENELUSURI', - detail: 'DETAIL', - result: 'HASIL', - input: 'MASUKAN', - circularInvocationTip: 'Ada pemanggilan melingkar alat/simpul dalam alur kerja saat ini.', -} - -export default translation diff --git a/web/i18n/id-ID/share.json b/web/i18n/id-ID/share.json new file mode 100644 index 0000000000..b669e9561c --- /dev/null +++ b/web/i18n/id-ID/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "", + "appUnavailable": "Aplikasi tidak tersedia", + "appUnknownError": "Aplikasi tidak tersedia" + }, + "chat": { + "deleteConversation": { + "title": "Menghapus percakapan", + "content": "Apakah Anda yakin ingin menghapus percakapan ini?" + }, + "resetChat": "Mengatur ulang percakapan", + "prompt": "Cepat", + "expand": "Memperluas", + "pinnedTitle": "Disematkan", + "chatFormTip": "Pengaturan obrolan tidak dapat dimodifikasi setelah obrolan dimulai.", + "privacyPolicyLeft": "Silakan baca", + "startChat": "Mulai Obrolan", + "configStatusDes": "Sebelum memulai, Anda dapat mengubah pengaturan percakapan", + "privatePromptConfigTitle": "Setelan percakapan", + "unpinnedTitle": "Baru saja", + "poweredBy": "Didukung oleh", + "newChatTip": "Sudah ada di obrolan baru", + "publicPromptConfigTitle": "Prompt Awal", + "privacyPolicyMiddle": "Kebijakan Privasi", + "newChat": "Mulai obrolan baru", + "tryToSolve": "Cobalah untuk menyelesaikannya", + "temporarySystemIssue": "Maaf, masalah sistem sementara.", + "viewChatSettings": "Melihat pengaturan obrolan", + "newChatDefaultName": "Percakapan baru", + "configDisabled": "Pengaturan sesi sebelumnya telah digunakan untuk sesi ini.", + "privacyPolicyRight": "disediakan oleh pengembang aplikasi.", + "chatSettingsTitle": "Penyiapan obrolan baru", + "collapse": "Roboh" + }, + "generation": { + "tabs": { + "saved": "Disimpan", + "batch": "Jalankan Batch", + "create": "Jalankan Sekali" + }, + "savedNoData": { + "description": "Mulailah membuat konten, dan temukan hasil yang disimpan di sini.", + "startCreateContent": "Mulai membuat konten", + "title": "Anda belum menyimpan hasilnya!" + }, + "batchFailed": { + "outputPlaceholder": "Tidak ada konten keluaran", + "retry": "Pengulangan", + "info": "{{num}} eksekusi gagal" + }, + "errorMsg": { + "atLeastOne": "Silakan masukkan setidaknya satu baris dalam file yang diunggah.", + "empty": "Silakan masukkan konten dalam file yang diunggah.", + "fileStructNotMatch": "File CSV yang diunggah tidak cocok dengan struct.", + "emptyLine": "Baris {{rowIndex}} kosong", + "invalidLine": "Baris {{rowIndex}}: nilai {{varName}} tidak boleh kosong", + "moreThanMaxLengthLine": "Baris {{rowIndex}}: nilai {{varName}} tidak boleh lebih dari {{maxLength}} karakter" + }, + "field": "Kebun", + "queryTitle": "Kueri konten", + "execution": "Jalankan", + "executions": "{{num}} kali dijalankan", + "copy": "Menyalin", + "title": "Penyelesaian AI", + "downloadTemplate": "Unduh templat di sini", + "completionResult": "Hasil penyelesaian", + "csvStructureTitle": "File CSV harus sesuai dengan struktur berikut:", + "noData": "AI akan memberi Anda apa yang Anda inginkan di sini.", + "csvUploadTitle": "Seret dan lepas file CSV Anda di sini, atau", + "run": "Menjalankan", + "queryPlaceholder": "Tulis konten kueri Anda...", + "resultTitle": "Penyelesaian AI", + "browse": "ramban", + "stopRun": "Hentikan eksekusi" + }, + "login": { + "backToHome": "Kembali ke Beranda" + } +} diff --git a/web/i18n/id-ID/share.ts b/web/i18n/id-ID/share.ts deleted file mode 100644 index 3916812c8f..0000000000 --- a/web/i18n/id-ID/share.ts +++ /dev/null @@ -1,82 +0,0 @@ -const translation = { - common: { - welcome: '', - appUnavailable: 'Aplikasi tidak tersedia', - appUnknownError: 'Aplikasi tidak tersedia', - }, - chat: { - deleteConversation: { - title: 'Menghapus percakapan', - content: 'Apakah Anda yakin ingin menghapus percakapan ini?', - }, - resetChat: 'Mengatur ulang percakapan', - prompt: 'Cepat', - expand: 'Memperluas', - pinnedTitle: 'Disematkan', - chatFormTip: 'Pengaturan obrolan tidak dapat dimodifikasi setelah obrolan dimulai.', - privacyPolicyLeft: 'Silakan baca', - startChat: 'Mulai Obrolan', - configStatusDes: 'Sebelum memulai, Anda dapat mengubah pengaturan percakapan', - privatePromptConfigTitle: 'Setelan percakapan', - unpinnedTitle: 'Baru saja', - poweredBy: 'Didukung oleh', - newChatTip: 'Sudah ada di obrolan baru', - publicPromptConfigTitle: 'Prompt Awal', - privacyPolicyMiddle: 'Kebijakan Privasi', - newChat: 'Mulai obrolan baru', - tryToSolve: 'Cobalah untuk menyelesaikannya', - temporarySystemIssue: 'Maaf, masalah sistem sementara.', - viewChatSettings: 'Melihat pengaturan obrolan', - newChatDefaultName: 'Percakapan baru', - configDisabled: 'Pengaturan sesi sebelumnya telah digunakan untuk sesi ini.', - privacyPolicyRight: 'disediakan oleh pengembang aplikasi.', - chatSettingsTitle: 'Penyiapan obrolan baru', - collapse: 'Roboh', - }, - generation: { - tabs: { - saved: 'Disimpan', - batch: 'Jalankan Batch', - create: 'Jalankan Sekali', - }, - savedNoData: { - description: 'Mulailah membuat konten, dan temukan hasil yang disimpan di sini.', - startCreateContent: 'Mulai membuat konten', - title: 'Anda belum menyimpan hasilnya!', - }, - batchFailed: { - outputPlaceholder: 'Tidak ada konten keluaran', - retry: 'Pengulangan', - info: '{{num}} eksekusi gagal', - }, - errorMsg: { - atLeastOne: 'Silakan masukkan setidaknya satu baris dalam file yang diunggah.', - empty: 'Silakan masukkan konten dalam file yang diunggah.', - fileStructNotMatch: 'File CSV yang diunggah tidak cocok dengan struct.', - emptyLine: 'Baris {{rowIndex}} kosong', - invalidLine: 'Baris {{rowIndex}}: nilai {{varName}} tidak boleh kosong', - moreThanMaxLengthLine: 'Baris {{rowIndex}}: nilai {{varName}} tidak boleh lebih dari {{maxLength}} karakter', - }, - field: 'Kebun', - queryTitle: 'Kueri konten', - execution: 'Jalankan', - executions: '{{num}} kali dijalankan', - copy: 'Menyalin', - title: 'Penyelesaian AI', - downloadTemplate: 'Unduh templat di sini', - completionResult: 'Hasil penyelesaian', - csvStructureTitle: 'File CSV harus sesuai dengan struktur berikut:', - noData: 'AI akan memberi Anda apa yang Anda inginkan di sini.', - csvUploadTitle: 'Seret dan lepas file CSV Anda di sini, atau', - run: 'Menjalankan', - queryPlaceholder: 'Tulis konten kueri Anda...', - resultTitle: 'Penyelesaian AI', - browse: 'ramban', - stopRun: 'Hentikan eksekusi', - }, - login: { - backToHome: 'Kembali ke Beranda', - }, -} - -export default translation diff --git a/web/i18n/id-ID/time.json b/web/i18n/id-ID/time.json new file mode 100644 index 0000000000..d88ef22ca2 --- /dev/null +++ b/web/i18n/id-ID/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Wed": "Rabu", + "Thu": "Kamis", + "Sun": "Minggu", + "Tue": "Selasa", + "Mon": "Senin", + "Sat": "Sabtu", + "Fri": "Jumat" + }, + "months": { + "August": "Agustus", + "October": "Oktober", + "May": "Mei", + "September": "September", + "December": "Desember", + "November": "November", + "April": "April", + "July": "Juli", + "January": "Januari", + "June": "Juni", + "February": "Februari", + "March": "Maret" + }, + "operation": { + "pickDate": "Tanggal Pilih", + "ok": "OKE", + "now": "Sekarang", + "cancel": "Membatalkan" + }, + "title": { + "pickTime": "Waktu Pilih" + }, + "dateFormats": { + "display": "MMMM D, YYYY", + "input": "YYYY-MM-DD", + "outputWithTime": "YYYY-MM-DDTHH:mm:ss.SSSZ", + "output": "YYYY-MM-DD", + "displayWithTime": "MMMM D, YYYY hh:mm A" + }, + "defaultPlaceholder": "Pilih waktu..." +} diff --git a/web/i18n/id-ID/time.ts b/web/i18n/id-ID/time.ts deleted file mode 100644 index 6e06130c7b..0000000000 --- a/web/i18n/id-ID/time.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - daysInWeek: { - Wed: 'Rabu', - Thu: 'Kamis', - Sun: 'Minggu', - Tue: 'Selasa', - Mon: 'Senin', - Sat: 'Sabtu', - Fri: 'Jumat', - }, - months: { - August: 'Agustus', - October: 'Oktober', - May: 'Mei', - September: 'September', - December: 'Desember', - November: 'November', - April: 'April', - July: 'Juli', - January: 'Januari', - June: 'Juni', - February: 'Februari', - March: 'Maret', - }, - operation: { - pickDate: 'Tanggal Pilih', - ok: 'OKE', - now: 'Sekarang', - cancel: 'Membatalkan', - }, - title: { - pickTime: 'Waktu Pilih', - }, - dateFormats: { - display: 'MMMM D, YYYY', - input: 'YYYY-MM-DD', - outputWithTime: 'YYYY-MM-DDTHH:mm:ss.SSSZ', - output: 'YYYY-MM-DD', - displayWithTime: 'MMMM D, YYYY hh:mm A', - }, - defaultPlaceholder: 'Pilih waktu...', -} - -export default translation diff --git a/web/i18n/id-ID/tools.json b/web/i18n/id-ID/tools.json new file mode 100644 index 0000000000..342ea367ed --- /dev/null +++ b/web/i18n/id-ID/tools.json @@ -0,0 +1,262 @@ +{ + "type": { + "workflow": "Alur Kerja", + "builtIn": "Perkakas", + "custom": "Adat" + }, + "contribute": { + "viewGuide": "Lihat panduan", + "line1": "Saya tertarik", + "line2": "menyumbangkan alat untuk Dify." + }, + "auth": { + "setup": "Menyiapkan otorisasi untuk digunakan", + "authorized": "Resmi", + "setupModalTitleDescription": "Setelah mengonfigurasi kredensial, semua anggota dalam ruang kerja dapat menggunakan alat ini saat mengatur aplikasi.", + "setupModalTitle": "Menyiapkan Otorisasi" + }, + "addToolModal": { + "custom": { + "tip": "Membuat alat khusus", + "title": "Tidak ada alat khusus yang tersedia" + }, + "workflow": { + "title": "Tidak ada alat alur kerja yang tersedia", + "tip": "Memublikasikan alur kerja sebagai alat di Studio" + }, + "mcp": { + "title": "Tidak ada alat MCP yang tersedia", + "tip": "Menambahkan server MCP" + }, + "agent": { + "title": "Tidak ada strategi agen yang tersedia" + }, + "category": "golongan", + "type": "jenis", + "added": "Ditambahkan" + }, + "createTool": { + "exampleOptions": { + "blankTemplate": "Templat Kosong", + "json": "Cuaca(JSON)", + "yaml": "Toko Hewan Peliharaan (YAML)" + }, + "availableTools": { + "title": "Alat yang Tersedia", + "name": "Nama", + "method": "Metode", + "path": "Jalan", + "description": "Deskripsi", + "action": "Tindakan", + "test": "Ujian" + }, + "authMethod": { + "types": { + "apiKeyPlaceholder": "Nama header HTTP untuk Kunci API", + "api_key_header": "Header", + "api_key_query": "Parameter Kueri", + "none": "Tidak", + "queryParamPlaceholder": "Nama parameter kueri untuk API Key", + "apiValuePlaceholder": "Masukkan Kunci API" + }, + "type": "Jenis otorisasi", + "title": "Metode otorisasi", + "queryParam": "Parameter Kueri", + "queryParamTooltip": "Nama parameter kueri kunci API yang akan dilewati, misalnya \"kunci\" di \"https://example.com/test?key=API_KEY\".", + "keyTooltip": "Kunci Header Http, Anda dapat membiarkannya dengan \"Otorisasi\" jika Anda tidak tahu apa itu atau mengaturnya ke nilai khusus", + "value": "Nilai", + "key": "Kunci" + }, + "authHeaderPrefix": { + "types": { + "basic": "Dasar", + "bearer": "Pembawa", + "custom": "Adat" + }, + "title": "Jenis Autentikasi" + }, + "toolInput": { + "required": "Diperlukan", + "title": "Masukan Alat", + "method": "Metode", + "description": "Deskripsi", + "methodParameterTip": "LLM mengisi selama inferensi", + "methodSettingTip": "Pengguna mengisi konfigurasi alat", + "name": "Nama", + "methodSetting": "Pengaturan", + "methodParameter": "Parameter", + "descriptionPlaceholder": "Deskripsi arti parameter", + "labelPlaceholder": "Pilih tag (opsional)", + "label": "Di siang hari" + }, + "toolNamePlaceHolder": "Masukkan nama alat", + "description": "Deskripsi", + "editAction": "Mengkonfigurasi", + "schema": "Skema", + "title": "Buat Alat Kustom", + "viewSchemaSpec": "Lihat Spesifikasi OpenAPI-Swagger", + "confirmTip": "Aplikasi yang menggunakan alat ini akan terpengaruh", + "examples": "Contoh", + "customDisclaimerPlaceholder": "Silakan masukkan penafian khusus", + "editTitle": "Edit Alat Kustom", + "schemaPlaceHolder": "Masukkan skema OpenAPI Anda di sini", + "nameForToolCallPlaceHolder": "Digunakan untuk pengenalan mesin, seperti getCurrentWeather, list_pets", + "urlError": "Silakan masukkan URL yang valid", + "privacyPolicyPlaceholder": "Silakan masukkan kebijakan privasi", + "privacyPolicy": "Kebijakan privasi", + "nameForToolCall": "Nama panggilan alat", + "importFromUrl": "Mengimpor dari URL", + "deleteToolConfirmContent": "Menghapus Alat tidak dapat diubah. Pengguna tidak akan lagi dapat mengakses Alat Anda.", + "nameForToolCallTip": "Hanya mendukung angka, huruf, dan garis bawah.", + "name": "Nama", + "deleteToolConfirmTitle": "Hapus Alat ini?", + "customDisclaimer": "Penafian khusus", + "importFromUrlPlaceHolder": "https://...", + "descriptionPlaceholder": "Deskripsi singkat tentang tujuan alat, misalnya, mendapatkan suhu untuk lokasi tertentu.", + "confirmTitle": "Konfirmasi untuk menyimpan?", + "toolOutput": { + "title": "Keluaran Alat", + "name": "Nama", + "reserved": "Dicadangkan", + "reservedParameterDuplicateTip": "text, json, dan file adalah variabel yang dicadangkan. Variabel dengan nama-nama ini tidak dapat muncul dalam skema keluaran.", + "description": "Deskripsi" + } + }, + "test": { + "testResult": "Hasil Tes", + "testResultPlaceholder": "Hasil tes akan ditampilkan di sini", + "title": "Ujian", + "parametersValue": "Parameter & Nilai", + "value": "Nilai", + "parameters": "Parameter" + }, + "thought": { + "using": "Menggunakan", + "used": "Digunakan", + "requestTitle": "Minta", + "responseTitle": "Jawaban" + }, + "setBuiltInTools": { + "string": "tali", + "info": "Info", + "setting": "Pengaturan", + "file": "arsip", + "number": "angka", + "parameters": "Parameter", + "required": "Diperlukan", + "infoAndSetting": "Info & Pengaturan", + "toolDescription": "Deskripsi alat" + }, + "noCustomTool": { + "title": "Tidak ada alat khusus!", + "createTool": "Buat Alat", + "content": "Tambahkan dan kelola alat kustom Anda di sini untuk membuat aplikasi AI." + }, + "noSearchRes": { + "title": "Maaf, tidak ada hasil!", + "content": "Kami tidak dapat menemukan alat apa pun yang cocok dengan penelusuran Anda.", + "reset": "Atur ulang Pencarian" + }, + "mcp": { + "create": { + "cardLink": "Pelajari selengkapnya tentang integrasi server MCP", + "cardTitle": "Tambahkan Server MCP (HTTP)" + }, + "modal": { + "namePlaceholder": "Beri nama server MCP Anda", + "serverIdentifierWarning": "Server tidak akan dikenali oleh aplikasi yang ada setelah perubahan ID", + "timeout": "Timeout", + "save": "Simpan", + "name": "Nama & Ikon", + "confirm": "Tambahkan & Otorisasi", + "title": "Tambahkan Server MCP (HTTP)", + "serverIdentifier": "Pengenal Server", + "serverIdentifierTip": "Pengidentifikasi unik untuk server MCP dalam ruang kerja. Hanya huruf kecil, angka, garis bawah, dan tanda hubung. Hingga 24 karakter.", + "serverUrlPlaceholder": "URL ke titik akhir server", + "editTitle": "Edit Server MCP (HTTP)", + "serverUrlWarning": "Memperbarui alamat server dapat mengganggu aplikasi yang bergantung pada server ini", + "sseReadTimeout": "Batas Waktu Baca SSE", + "cancel": "Membatalkan", + "serverIdentifierPlaceholder": "Pengidentifikasi unik, misalnya, my-mcp-server", + "serverUrl": "Server URL", + "headers": "Header", + "timeoutPlaceholder": "30", + "addHeader": "Tambahkan Judul", + "headerKey": "Nama Header", + "headerValue": "Nilai Header", + "headersTip": "Header HTTP tambahan untuk dikirim bersama permintaan server MCP", + "headerKeyPlaceholder": "Authorization", + "headerValuePlaceholder": "Bearer 123", + "noHeaders": "Tidak ada header kustom yang dikonfigurasi", + "maskedHeadersTip": "Nilai header disembunyikan untuk keamanan. Perubahan akan memperbarui nilai yang sebenarnya.", + "clientSecretPlaceholder": "Rahasia Klien", + "authentication": "Otentikasi", + "useDynamicClientRegistration": "Gunakan Pendaftaran Klien Dinamis", + "configurations": "Konfigurasi", + "clientSecret": "Rahasia Klien", + "clientID": "ID Klien", + "redirectUrlWarning": "Silakan atur URL pengalihan OAuth Anda ke:" + }, + "operation": { + "edit": "Mengedit", + "remove": "Buka" + }, + "server": { + "modal": { + "parameters": "Parameter", + "parametersTip": "Tambahkan deskripsi untuk setiap parameter untuk membantu LLM memahami tujuan dan kendala mereka.", + "description": "Deskripsi", + "confirm": "Aktifkan Server MCP", + "addTitle": "Tambahkan deskripsi untuk mengaktifkan server MCP", + "parametersPlaceholder": "Tujuan dan batasan parameter", + "editTitle": "Edit deskripsi", + "descriptionPlaceholder": "Jelaskan apa yang dilakukan alat ini dan bagaimana alat ini harus digunakan oleh LLM" + }, + "title": "MCP Server", + "url": "Server URL", + "reGen": "Apakah Anda ingin meregenerasi URL server?", + "addDescription": "Tambahkan deskripsi", + "edit": "Edit deskripsi", + "publishTip": "Aplikasi tidak dipublikasikan. Silakan publikasikan aplikasinya terlebih dahulu." + }, + "updateTime": "Diperbarui", + "noConfigured": "Tidak dikonfigurasi", + "authorize": "Otorisasi", + "updating": "Memperbarui", + "delete": "Hapus Server MCP", + "noTools": "Tidak ada alat yang tersedia", + "getTools": "Dapatkan alat", + "authorizingRequired": "Otorisasi diperlukan", + "gettingTools": "Mendapatkan Alat...", + "authorizing": "Otorisasi...", + "toolUpdateConfirmTitle": "Perbarui Daftar Alat", + "updateTools": "Memperbarui Alat...", + "authorizeTip": "Setelah otorisasi, alat akan ditampilkan di sini.", + "onlyTool": "1 alat disertakan", + "toolsEmpty": "Alat tidak dimuat", + "toolUpdateConfirmContent": "Memperbarui daftar alat dapat memengaruhi aplikasi yang ada. Apakah Anda ingin melanjutkan?", + "update": "Pemutakhiran", + "identifier": "Pengenal Server (Klik untuk Menyalin)", + "toolItem": { + "parameters": "Parameter", + "noDescription": "Tanpa deskripsi" + }, + "toolsCount": "alat {{count}}", + "deleteConfirmTitle": "Apakah Anda ingin menghapus {{mcp}}?", + "toolsNum": "alat {{count}} termasuk" + }, + "title": "Perkakas", + "createCustomTool": "Buat Alat Kustom", + "customToolTip": "Pelajari alat kustom Dify lebih lanjut", + "author": "Oleh", + "copyToolName": "Salin Nama", + "howToGet": "Cara mendapatkan", + "noTools": "Tidak ada alat yang ditemukan", + "notAuthorized": "Tidak berwenang", + "toolRemoved": "Alat dihapus", + "openInStudio": "Buka di Studio", + "builtInPromptTitle": "Cepat", + "toolNameUsageTip": "Nama panggilan alat untuk penalaran dan permintaan agen", + "allTools": "Semua alat", + "includeToolNum": "{{num}} {{action}} termasuk" +} diff --git a/web/i18n/id-ID/tools.ts b/web/i18n/id-ID/tools.ts deleted file mode 100644 index bf7c196408..0000000000 --- a/web/i18n/id-ID/tools.ts +++ /dev/null @@ -1,264 +0,0 @@ -const translation = { - type: { - workflow: 'Alur Kerja', - builtIn: 'Perkakas', - custom: 'Adat', - }, - contribute: { - viewGuide: 'Lihat panduan', - line1: 'Saya tertarik', - line2: 'menyumbangkan alat untuk Dify.', - }, - auth: { - setup: 'Menyiapkan otorisasi untuk digunakan', - authorized: 'Resmi', - setupModalTitleDescription: 'Setelah mengonfigurasi kredensial, semua anggota dalam ruang kerja dapat menggunakan alat ini saat mengatur aplikasi.', - setupModalTitle: 'Menyiapkan Otorisasi', - }, - addToolModal: { - custom: { - tip: 'Membuat alat khusus', - title: 'Tidak ada alat khusus yang tersedia', - }, - workflow: { - title: 'Tidak ada alat alur kerja yang tersedia', - tip: 'Memublikasikan alur kerja sebagai alat di Studio', - }, - mcp: { - title: 'Tidak ada alat MCP yang tersedia', - tip: 'Menambahkan server MCP', - }, - agent: { - title: 'Tidak ada strategi agen yang tersedia', - }, - category: 'golongan', - type: 'jenis', - added: 'Ditambahkan', - }, - createTool: { - exampleOptions: { - blankTemplate: 'Templat Kosong', - json: 'Cuaca(JSON)', - yaml: 'Toko Hewan Peliharaan (YAML)', - }, - availableTools: { - title: 'Alat yang Tersedia', - name: 'Nama', - method: 'Metode', - path: 'Jalan', - description: 'Deskripsi', - action: 'Tindakan', - test: 'Ujian', - }, - authMethod: { - types: { - apiKeyPlaceholder: 'Nama header HTTP untuk Kunci API', - api_key_header: 'Header', - api_key_query: 'Parameter Kueri', - none: 'Tidak', - queryParamPlaceholder: 'Nama parameter kueri untuk API Key', - apiValuePlaceholder: 'Masukkan Kunci API', - }, - type: 'Jenis otorisasi', - title: 'Metode otorisasi', - queryParam: 'Parameter Kueri', - queryParamTooltip: 'Nama parameter kueri kunci API yang akan dilewati, misalnya "kunci" di "https://example.com/test?key=API_KEY".', - keyTooltip: 'Kunci Header Http, Anda dapat membiarkannya dengan "Otorisasi" jika Anda tidak tahu apa itu atau mengaturnya ke nilai khusus', - value: 'Nilai', - key: 'Kunci', - }, - authHeaderPrefix: { - types: { - basic: 'Dasar', - bearer: 'Pembawa', - custom: 'Adat', - }, - title: 'Jenis Autentikasi', - }, - toolInput: { - required: 'Diperlukan', - title: 'Masukan Alat', - method: 'Metode', - description: 'Deskripsi', - methodParameterTip: 'LLM mengisi selama inferensi', - methodSettingTip: 'Pengguna mengisi konfigurasi alat', - name: 'Nama', - methodSetting: 'Pengaturan', - methodParameter: 'Parameter', - descriptionPlaceholder: 'Deskripsi arti parameter', - labelPlaceholder: 'Pilih tag (opsional)', - label: 'Di siang hari', - }, - toolNamePlaceHolder: 'Masukkan nama alat', - description: 'Deskripsi', - editAction: 'Mengkonfigurasi', - schema: 'Skema', - title: 'Buat Alat Kustom', - viewSchemaSpec: 'Lihat Spesifikasi OpenAPI-Swagger', - confirmTip: 'Aplikasi yang menggunakan alat ini akan terpengaruh', - examples: 'Contoh', - customDisclaimerPlaceholder: 'Silakan masukkan penafian khusus', - editTitle: 'Edit Alat Kustom', - schemaPlaceHolder: 'Masukkan skema OpenAPI Anda di sini', - nameForToolCallPlaceHolder: 'Digunakan untuk pengenalan mesin, seperti getCurrentWeather, list_pets', - urlError: 'Silakan masukkan URL yang valid', - privacyPolicyPlaceholder: 'Silakan masukkan kebijakan privasi', - privacyPolicy: 'Kebijakan privasi', - nameForToolCall: 'Nama panggilan alat', - importFromUrl: 'Mengimpor dari URL', - deleteToolConfirmContent: 'Menghapus Alat tidak dapat diubah. Pengguna tidak akan lagi dapat mengakses Alat Anda.', - nameForToolCallTip: 'Hanya mendukung angka, huruf, dan garis bawah.', - name: 'Nama', - deleteToolConfirmTitle: 'Hapus Alat ini?', - customDisclaimer: 'Penafian khusus', - importFromUrlPlaceHolder: 'https://...', - descriptionPlaceholder: 'Deskripsi singkat tentang tujuan alat, misalnya, mendapatkan suhu untuk lokasi tertentu.', - confirmTitle: 'Konfirmasi untuk menyimpan?', - toolOutput: { - title: 'Keluaran Alat', - name: 'Nama', - reserved: 'Dicadangkan', - reservedParameterDuplicateTip: 'text, json, dan file adalah variabel yang dicadangkan. Variabel dengan nama-nama ini tidak dapat muncul dalam skema keluaran.', - description: 'Deskripsi', - }, - }, - test: { - testResult: 'Hasil Tes', - testResultPlaceholder: 'Hasil tes akan ditampilkan di sini', - title: 'Ujian', - parametersValue: 'Parameter & Nilai', - value: 'Nilai', - parameters: 'Parameter', - }, - thought: { - using: 'Menggunakan', - used: 'Digunakan', - requestTitle: 'Minta', - responseTitle: 'Jawaban', - }, - setBuiltInTools: { - string: 'tali', - info: 'Info', - setting: 'Pengaturan', - file: 'arsip', - number: 'angka', - parameters: 'Parameter', - required: 'Diperlukan', - infoAndSetting: 'Info & Pengaturan', - toolDescription: 'Deskripsi alat', - }, - noCustomTool: { - title: 'Tidak ada alat khusus!', - createTool: 'Buat Alat', - content: 'Tambahkan dan kelola alat kustom Anda di sini untuk membuat aplikasi AI.', - }, - noSearchRes: { - title: 'Maaf, tidak ada hasil!', - content: 'Kami tidak dapat menemukan alat apa pun yang cocok dengan penelusuran Anda.', - reset: 'Atur ulang Pencarian', - }, - mcp: { - create: { - cardLink: 'Pelajari selengkapnya tentang integrasi server MCP', - cardTitle: 'Tambahkan Server MCP (HTTP)', - }, - modal: { - namePlaceholder: 'Beri nama server MCP Anda', - serverIdentifierWarning: 'Server tidak akan dikenali oleh aplikasi yang ada setelah perubahan ID', - timeout: 'Timeout', - save: 'Simpan', - name: 'Nama & Ikon', - confirm: 'Tambahkan & Otorisasi', - title: 'Tambahkan Server MCP (HTTP)', - serverIdentifier: 'Pengenal Server', - serverIdentifierTip: 'Pengidentifikasi unik untuk server MCP dalam ruang kerja. Hanya huruf kecil, angka, garis bawah, dan tanda hubung. Hingga 24 karakter.', - serverUrlPlaceholder: 'URL ke titik akhir server', - editTitle: 'Edit Server MCP (HTTP)', - serverUrlWarning: 'Memperbarui alamat server dapat mengganggu aplikasi yang bergantung pada server ini', - sseReadTimeout: 'Batas Waktu Baca SSE', - cancel: 'Membatalkan', - serverIdentifierPlaceholder: 'Pengidentifikasi unik, misalnya, my-mcp-server', - serverUrl: 'Server URL', - headers: 'Header', - timeoutPlaceholder: '30', - addHeader: 'Tambahkan Judul', - headerKey: 'Nama Header', - headerValue: 'Nilai Header', - headersTip: 'Header HTTP tambahan untuk dikirim bersama permintaan server MCP', - headerKeyPlaceholder: 'Authorization', - headerValuePlaceholder: 'Bearer 123', - noHeaders: 'Tidak ada header kustom yang dikonfigurasi', - maskedHeadersTip: 'Nilai header disembunyikan untuk keamanan. Perubahan akan memperbarui nilai yang sebenarnya.', - clientSecretPlaceholder: 'Rahasia Klien', - authentication: 'Otentikasi', - useDynamicClientRegistration: 'Gunakan Pendaftaran Klien Dinamis', - configurations: 'Konfigurasi', - clientSecret: 'Rahasia Klien', - clientID: 'ID Klien', - redirectUrlWarning: 'Silakan atur URL pengalihan OAuth Anda ke:', - }, - operation: { - edit: 'Mengedit', - remove: 'Buka', - }, - server: { - modal: { - parameters: 'Parameter', - parametersTip: 'Tambahkan deskripsi untuk setiap parameter untuk membantu LLM memahami tujuan dan kendala mereka.', - description: 'Deskripsi', - confirm: 'Aktifkan Server MCP', - addTitle: 'Tambahkan deskripsi untuk mengaktifkan server MCP', - parametersPlaceholder: 'Tujuan dan batasan parameter', - editTitle: 'Edit deskripsi', - descriptionPlaceholder: 'Jelaskan apa yang dilakukan alat ini dan bagaimana alat ini harus digunakan oleh LLM', - }, - title: 'MCP Server', - url: 'Server URL', - reGen: 'Apakah Anda ingin meregenerasi URL server?', - addDescription: 'Tambahkan deskripsi', - edit: 'Edit deskripsi', - publishTip: 'Aplikasi tidak dipublikasikan. Silakan publikasikan aplikasinya terlebih dahulu.', - }, - updateTime: 'Diperbarui', - noConfigured: 'Tidak dikonfigurasi', - authorize: 'Otorisasi', - updating: 'Memperbarui', - delete: 'Hapus Server MCP', - noTools: 'Tidak ada alat yang tersedia', - getTools: 'Dapatkan alat', - authorizingRequired: 'Otorisasi diperlukan', - gettingTools: 'Mendapatkan Alat...', - authorizing: 'Otorisasi...', - toolUpdateConfirmTitle: 'Perbarui Daftar Alat', - updateTools: 'Memperbarui Alat...', - authorizeTip: 'Setelah otorisasi, alat akan ditampilkan di sini.', - onlyTool: '1 alat disertakan', - toolsEmpty: 'Alat tidak dimuat', - toolUpdateConfirmContent: 'Memperbarui daftar alat dapat memengaruhi aplikasi yang ada. Apakah Anda ingin melanjutkan?', - update: 'Pemutakhiran', - identifier: 'Pengenal Server (Klik untuk Menyalin)', - toolItem: { - parameters: 'Parameter', - noDescription: 'Tanpa deskripsi', - }, - toolsCount: 'alat {{count}}', - deleteConfirmTitle: 'Apakah Anda ingin menghapus {{mcp}}?', - toolsNum: 'alat {{count}} termasuk', - }, - title: 'Perkakas', - createCustomTool: 'Buat Alat Kustom', - customToolTip: 'Pelajari alat kustom Dify lebih lanjut', - author: 'Oleh', - copyToolName: 'Salin Nama', - howToGet: 'Cara mendapatkan', - noTools: 'Tidak ada alat yang ditemukan', - notAuthorized: 'Tidak berwenang', - toolRemoved: 'Alat dihapus', - openInStudio: 'Buka di Studio', - builtInPromptTitle: 'Cepat', - toolNameUsageTip: 'Nama panggilan alat untuk penalaran dan permintaan agen', - allTools: 'Semua alat', - includeToolNum: '{{num}} {{action}} termasuk', -} - -export default translation diff --git a/web/i18n/id-ID/workflow.json b/web/i18n/id-ID/workflow.json new file mode 100644 index 0000000000..2547f51f78 --- /dev/null +++ b/web/i18n/id-ID/workflow.json @@ -0,0 +1,1294 @@ +{ + "common": { + "effectVarConfirm": { + "content": "Variabel ini digunakan di node lain. Apakah Anda masih ingin menghapusnya?", + "title": "Hapus Variabel" + }, + "parallelTip": { + "click": { + "title": "Klik", + "desc": "untuk menambahkan" + }, + "drag": { + "desc": "untuk terhubung", + "title": "Tarik" + }, + "limit": "Paralelisme terbatas pada {{num}} cabang.", + "depthLimit": "Batas lapisan bersarang paralel sebesar {{num}} lapisan" + }, + "undo": "Urungkan", + "embedIntoSite": "Sematkan ke Situs", + "editing": "Mengedit", + "inRunMode": "Dalam Mode Jalankan", + "publishUpdate": "Publikasikan Pembaruan", + "fileUploadTip": "Fitur unggahan gambar telah ditingkatkan menjadi unggah file.", + "currentDraftUnpublished": "Draf Saat Ini Tidak Diterbitkan", + "inPreview": "Dalam Pratinjau", + "preview": "Pratayang", + "needConnectTip": "Langkah ini tidak terhubung ke apa pun", + "handMode": "Mode Tangan", + "currentView": "Tampilan Saat Ini", + "exportImage": "Ekspor Gambar", + "noVar": "Tidak ada variabel", + "disconnect": "Lepaskan", + "importWarningDetails": "Perbedaan versi DSL dapat memengaruhi fitur tertentu", + "addParallelNode": "Tambahkan Node Paralel", + "onFailure": "Pada Kegagalan", + "update": "Pemutakhiran", + "configure": "Konfigurasikan", + "copy": "Menyalin", + "redo": "Ulangi", + "runApp": "Jalankan Aplikasi", + "noHistory": "Tidak Ada Sejarah", + "importDSLTip": "Draf saat ini akan ditimpa.\nEkspor alur kerja sebagai cadangan sebelum mengimpor.", + "loadMore": "Muat Lebih Banyak", + "previewPlaceholder": "Masukkan konten di kotak di bawah ini untuk mulai men-debug Chatbot", + "unpublished": "Tidak diterbitkan", + "viewRunHistory": "Lihat riwayat eksekusi", + "versionHistory": "Riwayat versi", + "backupCurrentDraft": "Cadangan Draf Saat Ini", + "latestPublished": "Terbaru Diterbitkan", + "exportSVG": "Ekspor sebagai SVG", + "branch": "CABANG", + "openInExplore": "Buka di Jelajahi", + "publish": "Menerbitkan", + "importSuccess": "Berhasil Impor", + "jumpToNode": "Lompat ke simpul ini", + "tagBound": "Jumlah aplikasi yang menggunakan tag ini", + "model": "Model", + "workflowAsToolTip": "Konfigurasi ulang alat diperlukan setelah pembaruan alur kerja.", + "currentDraft": "Draf Saat Ini", + "parallel": "SEJAJAR", + "jinjaEditorPlaceholder": "Ketik '/' atau '{' untuk menyisipkan variabel", + "exitVersions": "Keluar dari Versi", + "featuresDocLink": "Pelajari lebih lanjut", + "pasteHere": "Tempel di sini", + "importWarning": "Hati", + "running": "Menjalankan", + "publishedAt": "Diterbitkan", + "run": "Jalankan", + "importDSL": "Impor DSL", + "featuresDescription": "Tingkatkan pengalaman pengguna aplikasi web", + "inPreviewMode": "Dalam Mode Pratinjau", + "duplicate": "Duplikat", + "learnMore": "Pelajari lebih lanjut", + "restart": "Restart", + "setVarValuePlaceholder": "Atur variabel", + "conversationLog": "Log Percakapan", + "addTitle": "Tambahkan judul...", + "searchVar": "Variabel pencarian", + "published": "Diterbitkan", + "viewDetailInTracingPanel": "Lihat detail", + "variableNamePlaceholder": "Nama variabel", + "workflowAsTool": "Alur Kerja sebagai Alat", + "enableJinja": "Aktifkan dukungan template Jinja", + "input": "Masukan", + "chooseDSL": "Pilih file DSL", + "exportPNG": "Ekspor sebagai PNG", + "needAnswerNode": "Node Jawaban harus ditambahkan", + "syncingData": "Menyinkronkan data, hanya beberapa detik.", + "addFailureBranch": "Tambahkan Cabang Gagal", + "exportJPEG": "Ekspor sebagai JPEG", + "addBlock": "Tambahkan Node", + "processData": "Proses Data", + "needOutputNode": "Node Output harus ditambahkan", + "manageInTools": "Kelola di Alat", + "pointerMode": "Mode Penunjuk", + "accessAPIReference": "Referensi API Akses", + "ImageUploadLegacyTip": "Anda sekarang dapat membuat variabel jenis file di formulir awal. Kami tidak akan lagi mendukung fitur unggah gambar di masa mendatang.", + "overwriteAndImport": "Menimpa dan Mengimpor", + "goBackToEdit": "Kembali ke editor", + "runHistory": "Jalankan Riwayat", + "autoSaved": "Disimpan Secara Otomatis", + "output": "Hasil", + "batchRunApp": "Aplikasi Batch Run", + "debugAndPreview": "Pratayang", + "features": "Fitur", + "importFailure": "Impor Gagal", + "insertVarTip": "Tekan tombol '/' untuk memasukkan dengan cepat", + "addDescription": "Tambahkan deskripsi...", + "notRunning": "Belum berjalan", + "workflowProcess": "Proses Alur Kerja", + "showRunHistory": "Tampilkan Riwayat Eksekusi", + "configureRequired": "Konfigurasi yang Diperlukan", + "currentWorkflow": "Alur Kerja Saat Ini", + "viewOnly": "Lihat Saja", + "restore": "Mengembalikan", + "listening": "Mendengarkan", + "chooseStartNodeToRun": "Pilih node awal untuk dijalankan", + "runAllTriggers": "Jalankan semua pemicu", + "maxTreeDepth": "Batas maksimum {{depth}} node per cabang", + "needAdd": "Node {{node}} harus ditambahkan", + "needStartNode": "Setidaknya satu node awal harus ditambahkan", + "moreActions": "Tindakan Lain", + "workflowAsToolDisabledHint": "Terbitkan alur kerja terbaru dan pastikan ada node Input Pengguna yang terhubung sebelum mengonfigurasinya sebagai alat." + }, + "env": { + "modal": { + "description": "Deskripsi", + "valuePlaceholder": "Nilai ENV", + "descriptionPlaceholder": "Jelaskan variabel", + "editTitle": "Edit Variabel Lingkungan", + "namePlaceholder": "Nama env", + "value": "Nilai", + "name": "Nama", + "title": "Tambahkan Variabel Lingkungan", + "secretTip": "Digunakan untuk menentukan informasi atau data sensitif, dengan pengaturan DSL yang dikonfigurasi untuk pencegahan kebocoran.", + "type": "Jenis" + }, + "export": { + "ignore": "Ekspor DSL", + "checkbox": "Mengekspor nilai rahasia", + "title": "Mengekspor variabel lingkungan Rahasia?", + "export": "Mengekspor DSL dengan nilai rahasia" + }, + "envPanelButton": "Tambahkan Variabel", + "envPanelTitle": "Variabel Lingkungan", + "envDescription": "Variabel lingkungan dapat digunakan untuk menyimpan informasi pribadi dan kredensial. Mereka hanya baca dan dapat dipisahkan dari file DSL selama ekspor." + }, + "globalVar": { + "title": "Variabel Sistem", + "description": "Variabel sistem adalah variabel global yang dapat dirujuk oleh node apa pun tanpa koneksi jika tipenya sesuai, seperti ID pengguna akhir dan ID alur kerja.", + "fieldsDescription": { + "conversationId": "ID percakapan", + "dialogCount": "Jumlah percakapan", + "userId": "ID pengguna", + "triggerTimestamp": "Cap waktu saat aplikasi mulai berjalan", + "appId": "ID aplikasi", + "workflowId": "ID alur kerja", + "workflowRunId": "ID eksekusi alur kerja" + } + }, + "chatVariable": { + "modal": { + "valuePlaceholder": "Nilai default, biarkan kosong untuk tidak diatur", + "name": "Nama", + "arrayValue": "Nilai", + "description": "Deskripsi", + "editTitle": "Edit Variabel Percakapan", + "editInForm": "Edit dalam Formulir", + "type": "Jenis", + "oneByOne": "Tambahkan satu per satu", + "editInJSON": "Edit dalam JSON", + "namePlaceholder": "Nama variabel", + "objectType": "Jenis", + "title": "Tambahkan Variabel Percakapan", + "value": "Nilai Default", + "descriptionPlaceholder": "Jelaskan variabel", + "objectValue": "Nilai Default", + "addArrayValue": "Nilai Tambah", + "objectKey": "Kunci" + }, + "panelTitle": "Variabel Percakapan", + "button": "Tambahkan Variabel", + "updatedAt": "Diperbarui pada", + "panelDescription": "Variabel Percakapan digunakan untuk menyimpan informasi interaktif yang perlu diingat LLM, termasuk riwayat percakapan, file yang diunggah, preferensi pengguna. Mereka dibaca-tulis.", + "docLink": "Kunjungi dokumen kami untuk mempelajari lebih lanjut.", + "storedContent": "Konten yang disimpan" + }, + "changeHistory": { + "nodeAdd": "Node ditambahkan", + "nodePaste": "Node ditempelkan", + "noteDelete": "Catatan dihapus", + "hint": "Petunjuk", + "nodeTitleChange": "Judul simpul diubah", + "title": "Riwayat Perubahan", + "nodeDescriptionChange": "Deskripsi simpul diubah", + "clearHistory": "Hapus Sejarah", + "placeholder": "Anda belum mengubah apa pun", + "nodeDragStop": "Node dipindahkan", + "hintText": "Tindakan pengeditan Anda dilacak dalam riwayat perubahan, yang disimpan di perangkat Anda selama sesi ini. Riwayat ini akan dihapus saat Anda meninggalkan editor.", + "sessionStart": "Mulai Sesi", + "noteChange": "Catatan berubah", + "nodeResize": "Node diubah ukurannya", + "nodeDelete": "Node dihapus", + "noteAdd": "Catatan ditambahkan", + "nodeConnect": "Node terhubung", + "currentState": "Keadaan Saat Ini", + "edgeDelete": "Node terputus", + "nodeChange": "Node diubah", + "stepBackward_one": "{{count}} langkah mundur", + "stepBackward_other": "{{count}} langkah mundur", + "stepForward_one": "{{count}} melangkah maju", + "stepForward_other": "{{count}} melangkah maju" + }, + "errorMsg": { + "fields": { + "variable": "Nama Variabel", + "model": "Model", + "rerankModel": "Model Peringkat Ulang yang dikonfigurasi", + "visionVariable": "Variabel Penglihatan", + "variableValue": "Nilai Variabel", + "code": "Kode" + }, + "invalidVariable": "Variabel tidak valid", + "authRequired": "Otorisasi diperlukan", + "rerankModelRequired": "Model Rerank yang dikonfigurasi diperlukan", + "fieldRequired": "{{field}} wajib diisi", + "invalidJson": "{{field}} adalah JSON yang tidak valid", + "noValidTool": "{{field}} tidak ada alat yang valid dipilih", + "toolParameterRequired": "{{field}}: parameter [{{param}}] diperlukan", + "startNodeRequired": "Silakan tambahkan node awal terlebih dahulu sebelum {{operation}}" + }, + "singleRun": { + "back": "Belakang", + "running": "Menjalankan", + "iteration": "Iterasi", + "testRun": "Uji Coba", + "testRunIteration": "Iterasi Uji Coba", + "startRun": "Mulai Lari", + "loop": "Lari", + "preparingDataSource": "Menyiapkan Sumber Data", + "reRun": "Jalankan ulang" + }, + "tabs": { + "utilities": "Utilitas", + "workflowTool": "Alur Kerja", + "searchBlock": "Simpul pencarian", + "agent": "Strategi Agen", + "allAdded": "Semua ditambahkan", + "searchTool": "Alat pencarian", + "customTool": "Adat", + "noResult": "Tidak ada kecocokan yang ditemukan", + "tools": "Perkakas", + "logic": "Logika", + "addAll": "Tambahkan semua", + "blocks": "Node", + "question-understand": "Pertanyaan Pahami", + "plugin": "Plugin", + "transform": "Mengubah", + "allTool": "Semua", + "sources": "Sumber", + "searchDataSource": "Cari Sumber Data", + "start": "Mulai", + "searchTrigger": "Pencarian memicu...", + "allTriggers": "Semua pemicu", + "noPluginsFound": "Tidak ada plugin yang ditemukan", + "requestToCommunity": "Permintaan kepada komunitas", + "featuredTools": "Unggulan", + "showMoreFeatured": "Tampilkan lebih banyak", + "showLessFeatured": "Tampilkan lebih sedikit", + "installed": "Terpasang", + "pluginByAuthor": "Oleh {{author}}", + "usePlugin": "Pilih alat", + "hideActions": "Sembunyikan alat", + "noFeaturedPlugins": "Temukan lebih banyak alat di Marketplace", + "noFeaturedTriggers": "Temukan lebih banyak pemicu di Marketplace", + "startDisabledTip": "Node pemicu dan node input pengguna saling eksklusif." + }, + "blocks": { + "code": "Kode", + "http-request": "Permintaan HTTP", + "start": "Mulai", + "template-transform": "Templat", + "llm": "LLM", + "variable-assigner": "Agregator Variabel", + "loop-end": "Keluar Loop", + "iteration": "Iterasi", + "question-classifier": "Pengklasifikasi Pertanyaan", + "iteration-start": "Iterasi Mulai", + "knowledge-retrieval": "Pengambilan Pengetahuan", + "loop": "Perulangan", + "assigner": "Penerima Variabel", + "agent": "Agen", + "list-operator": "Operator Daftar", + "answer": "Jawaban", + "parameter-extractor": "Ekstraktor Parameter", + "document-extractor": "Ekstraktor Dokumen", + "end": "Keluaran", + "if-else": "JIKA/LAIN", + "loop-start": "Mulai Loop", + "variable-aggregator": "Agregator Variabel", + "datasource": "Sumber Data", + "knowledge-index": "Basis Pengetahuan", + "originalStartNode": "node awal asli", + "trigger-schedule": "Pemicu Jadwal", + "trigger-webhook": "Pemicu Webhook", + "trigger-plugin": "Pemicu Plugin" + }, + "blocksAbout": { + "template-transform": "Mengonversi data menjadi string menggunakan sintaks templat Jinja", + "answer": "Menentukan konten balasan percakapan obrolan", + "llm": "Memanggil model bahasa besar untuk menjawab pertanyaan atau memproses bahasa alami", + "question-classifier": "Tentukan kondisi klasifikasi pertanyaan pengguna, LLM dapat menentukan bagaimana percakapan berlangsung berdasarkan deskripsi klasifikasi", + "loop-end": "Setara dengan \"istirahat\". Node ini tidak memiliki item konfigurasi. Ketika badan loop mencapai node ini, loop berakhir.", + "start": "Menentukan parameter awal untuk meluncurkan alur kerja", + "iteration": "Lakukan beberapa langkah pada objek daftar hingga semua hasil dikeluarkan.", + "code": "Eksekusi sepotong kode Python atau NodeJS untuk mengimplementasikan logika kustom", + "http-request": "Izinkan permintaan server dikirim melalui protokol HTTP", + "assigner": "Simpul penetapan variabel digunakan untuk menetapkan nilai ke variabel yang dapat ditulis (seperti variabel percakapan).", + "if-else": "Memungkinkan Anda membagi alur kerja menjadi dua cabang berdasarkan kondisi if/else", + "agent": "Memanggil model bahasa besar untuk menjawab pertanyaan atau memproses bahasa alami", + "document-extractor": "Digunakan untuk mengurai dokumen yang diunggah menjadi konten teks yang mudah dipahami oleh LLM.", + "knowledge-retrieval": "Memungkinkan Anda untuk mengkueri konten teks yang terkait dengan pertanyaan pengguna dari Pengetahuan", + "parameter-extractor": "Gunakan LLM untuk mengekstrak parameter terstruktur dari bahasa alami untuk pemanggilan alat atau permintaan HTTP.", + "variable-assigner": "Agregatkan variabel multi-cabang menjadi satu variabel untuk konfigurasi terpadu simpul hilir.", + "loop": "Jalankan perulangan logika hingga kondisi penghentian terpenuhi atau jumlah perulangan maksimum tercapai.", + "variable-aggregator": "Agregatkan variabel multi-cabang menjadi satu variabel untuk konfigurasi terpadu simpul hilir.", + "end": "Menentukan output dan jenis hasil alur kerja", + "list-operator": "Digunakan untuk memfilter atau mengurutkan konten array.", + "datasource": "Sumber Data Tentang", + "knowledge-index": "Basis Pengetahuan Tentang", + "trigger-schedule": "Pemicu alur kerja berbasis waktu yang memulai alur kerja sesuai jadwal", + "trigger-webhook": "Pemicu Webhook menerima push HTTP dari sistem pihak ketiga untuk secara otomatis memicu alur kerja.", + "trigger-plugin": "Pemicu integrasi pihak ketiga yang memulai alur kerja dari kejadian platform eksternal" + }, + "operator": { + "zoomIn": "Perbesar", + "alignCenter": "Pusat", + "zoomOut": "Perkecil", + "zoomToFit": "Perbesar agar sesuai", + "vertical": "Vertikal", + "alignTop": "Puncak", + "alignMiddle": "Tengah", + "selectionAlignment": "Perataan Seleksi", + "alignRight": "Kanan", + "alignNodes": "Sejajarkan Node", + "horizontal": "Horisontal", + "distributeHorizontal": "Spasi Secara Horizontal", + "zoomTo100": "Perbesar hingga 100%", + "alignLeft": "Rata Kiri", + "distributeVertical": "Ruang Secara Vertikal", + "zoomTo50": "Perbesar hingga 50%", + "alignBottom": "Rata Bawah" + }, + "variableReference": { + "conversationVars": "variabel percakapan", + "noVarsForOperation": "Tidak ada variabel yang tersedia untuk penugasan dengan operasi yang dipilih.", + "assignedVarsDescription": "Variabel yang ditetapkan harus berupa variabel yang dapat ditulis, seperti", + "noAssignedVars": "Tidak ada variabel yang ditetapkan yang tersedia", + "noAvailableVars": "Tidak ada variabel yang tersedia" + }, + "panel": { + "change": "Ubah", + "checklist": "Checklist", + "about": "Sekitar", + "optional": "(opsional)", + "checklistTip": "Pastikan semua masalah diselesaikan sebelum dipublikasikan", + "organizeBlocks": "Mengatur simpul", + "selectNextStep": "Pilih Langkah Berikutnya", + "addNextStep": "Tambahkan langkah berikutnya dalam alur kerja ini", + "minimize": "Keluar dari Layar Penuh", + "nextStep": "Langkah Berikutnya", + "userInputField": "Bidang Input Pengguna", + "checklistResolved": "Semua masalah terselesaikan", + "createdBy": "Dibuat oleh", + "helpLink": "Docs", + "changeBlock": "Ubah Node", + "runThisStep": "Jalankan langkah ini", + "maximize": "Maksimalkan Kanvas", + "optional_and_hidden": "(opsional & tersembunyi)", + "goTo": "Pergi ke", + "startNode": "Mulai Node", + "scrollToSelectedNode": "Gulir ke node yang dipilih", + "openWorkflow": "Buka Alur Kerja" + }, + "nodes": { + "common": { + "memory": { + "conversationRoleName": "Nama Peran Percakapan", + "memoryTip": "Pengaturan memori obrolan", + "windowSize": "Ukuran Jendela", + "assistant": "Awalan asisten", + "memory": "Ingatan", + "user": "Awalan pengguna" + }, + "memories": { + "builtIn": "Built-in", + "title": "Kenangan", + "tip": "Memori obrolan" + }, + "errorHandle": { + "none": { + "desc": "Node akan berhenti berjalan jika pengecualian terjadi dan tidak ditangani", + "title": "Tidak" + }, + "defaultValue": { + "title": "Nilai Default", + "output": "Nilai Default Keluaran", + "inLog": "Pengecualian simpul, keluaran sesuai dengan nilai default.", + "desc": "Saat terjadi kesalahan, tentukan konten output statis.", + "tip": "Jika kesalahan, akan mengembalikan nilai di bawah ini." + }, + "failBranch": { + "customize": "Buka kanvas untuk menyesuaikan logika cabang gagal.", + "desc": "Ketika terjadi kesalahan, itu akan mengeksekusi cabang pengecualian", + "inLog": "Pengecualian node, akan secara otomatis mengeksekusi cabang gagal. Output node akan mengembalikan jenis kesalahan dan pesan kesalahan dan meneruskannya ke hilir.", + "title": "Cabang Gagal", + "customizeTip": "Saat cabang gagal diaktifkan, pengecualian yang dilemparkan oleh simpul tidak akan mengakhiri proses. Sebagai gantinya, itu akan secara otomatis mengeksekusi cabang gagal yang telah ditentukan sebelumnya, memungkinkan Anda untuk secara fleksibel memberikan pesan kesalahan, laporan, perbaikan, atau tindakan lewati." + }, + "partialSucceeded": { + "tip": "Ada {{num}} node dalam proses yang berjalan tidak normal, silakan pergi ke tracing untuk memeriksa log." + }, + "title": "Penanganan Kesalahan", + "tip": "Strategi penanganan pengecualian, dipicu ketika simpul menemukan pengecualian." + }, + "retry": { + "retry": "Pengulangan", + "retryFailed": "Coba lagi gagal", + "retrying": "Mencoba lagi...", + "ms": "Ms", + "maxRetries": "percobaan ulang maks", + "retryOnFailure": "Coba lagi saat gagal", + "retryInterval": "interval coba lagi", + "times": "kali", + "retrySuccessful": "Coba lagi berhasil", + "retryTimes": "Coba ulang {{times}} kali jika gagal", + "retryFailedTimes": "{{times}} percobaan gagal", + "retries": "{{num}} Percobaan Ulang" + }, + "typeSwitch": { + "variable": "Gunakan variabel", + "input": "Nilai masukan" + }, + "insertVarTip": "Sisipkan Variabel", + "outputVars": "Variabel Keluaran", + "inputVars": "Variabel Masukan", + "pluginNotInstalled": "Plugin tidak terpasang" + }, + "start": { + "outputVars": { + "memories": { + "type": "Jenis pesan", + "des": "Riwayat percakapan", + "content": "Konten pesan" + }, + "files": "Daftar file", + "query": "Masukan pengguna" + }, + "builtInVar": "Variabel bawaan", + "noVarTip": "Atur input yang dapat digunakan dalam Alur Kerja", + "required": "Diperlukan", + "inputField": "Bidang Masukan" + }, + "end": { + "output": { + "variable": "variabel keluaran", + "type": "Jenis keluaran" + }, + "type": { + "plain-text": "Teks Biasa", + "structured": "Terstruktur", + "none": "Tidak" + }, + "outputs": "Output" + }, + "answer": { + "answer": "Menjawab", + "outputVars": "Variabel Keluaran" + }, + "llm": { + "roleDescription": { + "user": "Berikan instruksi, kueri, atau input berbasis teks apa pun ke model", + "system": "Berikan instruksi tingkat tinggi untuk percakapan", + "assistant": "Respons model berdasarkan pesan pengguna" + }, + "resolution": { + "low": "Rendah", + "high": "Tinggi", + "name": "Resolusi" + }, + "outputVars": { + "output": "Hasilkan konten", + "reasoning_content": "Konten penalaran", + "usage": "Informasi Penggunaan Model" + }, + "singleRun": { + "variable": "Variabel" + }, + "jsonSchema": { + "warningTips": { + "saveSchema": "Harap selesaikan pengeditan bidang saat ini sebelum menyimpan skema" + }, + "addField": "Tambahkan Bidang", + "resetDefaults": "Reset", + "generatedResult": "Hasil yang dihasilkan", + "regenerate": "Regenerasi", + "generationTip": "Anda dapat menggunakan bahasa alami untuk membuat Skema JSON dengan cepat.", + "showAdvancedOptions": "Tampilkan opsi lanjutan", + "instruction": "Ajaran", + "doc": "Pelajari output terstruktur lebih lanjut", + "descriptionPlaceholder": "Tambahkan deskripsi", + "generateJsonSchema": "Hasilkan Skema JSON", + "fieldNamePlaceholder": "Nama Bidang", + "generate": "Menghasilkan", + "back": "Belakang", + "required": "Diperlukan", + "promptPlaceholder": "Jelaskan Skema JSON Anda...", + "import": "Impor dari JSON", + "apply": "Berlaku", + "generating": "Menghasilkan Skema JSON...", + "resultTip": "Berikut adalah hasil yang dihasilkan. Jika Anda tidak puas, Anda dapat kembali dan mengubah prompt Anda.", + "addChildField": "Tambahkan Bidang Anak", + "stringValidations": "Validasi String", + "promptTooltip": "Ubah deskripsi teks menjadi struktur Skema JSON standar.", + "title": "Skema Output Terstruktur" + }, + "files": "File", + "model": "pola", + "variables": "Variabel", + "prompt": "cepat", + "addMessage": "Tambahkan Pesan", + "vision": "penglihatan", + "sysQueryInUser": "sys.query dalam pesan pengguna diperlukan", + "contextTooltip": "Anda dapat mengimpor Pengetahuan sebagai konteks", + "notSetContextInPromptTip": "Untuk mengaktifkan fitur konteks, silakan isi variabel konteks di PROMPT.", + "context": "konteks", + "reasoningFormat": { + "tagged": "Tetap pikirkan tag", + "title": "Aktifkan pemisahan tag penalaran", + "separated": "Pisahkan tag pemikiran", + "tooltip": "Ekstrak konten dari tag pikir dan simpan di field reasoning_content." + } + }, + "knowledgeRetrieval": { + "outputVars": { + "icon": "Ikon tersegmentasi", + "title": "Judul tersegmentasi", + "metadata": "Metadata lainnya", + "output": "Mengambil data tersegmentasi", + "url": "URL tersegmentasi", + "content": "Konten tersegmentasi", + "files": "File yang diambil" + }, + "metadata": { + "options": { + "disabled": { + "title": "Cacat", + "subTitle": "Tidak mengaktifkan pemfilteran metadata" + }, + "automatic": { + "desc": "Secara otomatis menghasilkan kondisi pemfilteran metadata berdasarkan Variabel Kueri", + "subTitle": "Secara otomatis membuat kondisi pemfilteran metadata berdasarkan kueri pengguna", + "title": "Otomatis" + }, + "manual": { + "title": "Manual", + "subTitle": "Menambahkan kondisi pemfilteran metadata secara manual" + } + }, + "panel": { + "title": "Kondisi Filter Metadata", + "placeholder": "Masukkan nilai", + "search": "Metadata pencarian", + "add": "Tambahkan Kondisi", + "conditions": "Kondisi", + "select": "Pilih variabel...", + "datePlaceholder": "Pilih waktu..." + }, + "tip": "Pemfilteran metadata adalah proses menggunakan atribut metadata (seperti tag, kategori, atau izin akses) untuk menyempurnakan dan mengontrol pengambilan informasi yang relevan dalam sistem.", + "title": "Pemfilteran Metadata" + }, + "knowledge": "Pengetahuan", + "queryVariable": "Variabel Kueri", + "queryText": "Teks Query", + "queryAttachment": "Cari Gambar" + }, + "http": { + "outputVars": { + "files": "Daftar File", + "body": "Konten Tanggapan", + "headers": "Daftar Header Respons JSON", + "statusCode": "Kode Status Respons" + }, + "authorization": { + "header": "Header", + "basic": "Dasar", + "custom": "Adat", + "authorization": "Otorisasi", + "bearer": "Pembawa", + "no-auth": "Tidak", + "api-key": "Kunci API", + "authorizationType": "Jenis Otorisasi", + "api-key-title": "Kunci API", + "auth-type": "Jenis Autentikasi" + }, + "timeout": { + "title": "Timeout", + "connectLabel": "Batas Waktu Koneksi", + "readPlaceholder": "Masukkan batas waktu baca dalam hitungan detik", + "connectPlaceholder": "Masukkan batas waktu koneksi dalam hitungan detik", + "readLabel": "Baca Batas Waktu", + "writeLabel": "Tulis Batas Waktu", + "writePlaceholder": "Masukkan batas waktu tulis dalam hitungan detik" + }, + "curl": { + "placeholder": "Tempel string cURL di sini", + "title": "Impor dari cURL" + }, + "verifySSL": { + "title": "Verifikasi Sertifikat SSL", + "warningTooltip": "Menonaktifkan verifikasi SSL tidak disarankan untuk lingkungan produksi. Ini hanya boleh digunakan dalam pengembangan atau pengujian, karena membuat koneksi rentan terhadap ancaman keamanan seperti serangan man-in-the-middle." + }, + "notStartWithHttp": "API harus dimulai dengan http:// atau https://", + "api": "API", + "key": "Kunci", + "inputVars": "Variabel Masukan", + "value": "Nilai", + "insertVarPlaceholder": "ketik '/' untuk menyisipkan variabel", + "headers": "Header", + "binaryFileVariable": "Variabel File Biner", + "body": "Badan", + "keyValueEdit": "Kunci-Nilai Edit", + "bulkEdit": "Edit Massal", + "params": "Parameter", + "apiPlaceholder": "Masukkan URL, ketik variabel sisipkan '/'", + "type": "Jenis", + "extractListPlaceholder": "Masukkan indeks item daftar, ketik variabel sisipkan '/'" + }, + "code": { + "searchDependencies": "Dependensi Pencarian", + "inputVars": "Variabel Masukan", + "advancedDependencies": "Dependensi Lanjutan", + "advancedDependenciesTip": "Tambahkan beberapa dependensi yang dimuat sebelumnya yang membutuhkan lebih banyak waktu untuk digunakan atau tidak bawaan default di sini", + "outputVars": "Variabel Keluaran", + "syncFunctionSignature": "Sinkronkan tanda tangan fungsi ke kode" + }, + "templateTransform": { + "outputVars": { + "output": "Konten yang diubah" + }, + "code": "Kode", + "inputVars": "Variabel Masukan", + "codeSupportTip": "Hanya mendukung Jinja2" + }, + "ifElse": { + "comparisonOperator": { + "is not": "tidak", + "after": "sesudah", + "empty": "kosong", + "all of": "Semua", + "not empty": "tidak kosong", + "not null": "bukan null", + "null": "adalah nol", + "not in": "tidak di", + "not contains": "tidak mengandung", + "exists": "Ada", + "end with": "akhiri dengan", + "before": "sebelum", + "in": "di", + "is": "sedang", + "contains": "Berisi", + "start with": "mulai dengan", + "not exists": "tidak ada" + }, + "optionName": { + "localUpload": "Unggahan Lokal", + "image": "Citra", + "audio": "Audio", + "video": "Video", + "doc": "Doc", + "url": "URL" + }, + "conditionNotSetup": "Kondisi TIDAK diatur", + "and": "dan", + "selectVariable": "Pilih variabel...", + "or": "atau", + "else": "Lain", + "addSubVariable": "Sub Variabel", + "addCondition": "Tambahkan Kondisi", + "if": "Kalau", + "operator": "Operator", + "enterValue": "Masukkan nilai", + "select": "Pilih", + "notSetVariable": "Silakan atur variabel terlebih dahulu", + "elseDescription": "Digunakan untuk menentukan logika yang harus dijalankan ketika kondisi if tidak terpenuhi." + }, + "variableAssigner": { + "type": { + "number": "Angka", + "array": "Array", + "object": "Benda", + "string": "Tali" + }, + "outputVars": { + "varDescribe": "output {{groupName}}" + }, + "noVarTip": "Tambahkan variabel yang akan ditetapkan", + "aggregationGroup": "Grup Agregasi", + "title": "Tetapkan variabel", + "setAssignVariable": "Mengatur variabel penetapan", + "varNotSet": "Variabel tidak diatur", + "outputType": "Jenis Keluaran", + "addGroup": "Tambahkan Grup", + "aggregationGroupTip": "Mengaktifkan fitur ini memungkinkan agregator variabel untuk menggabungkan beberapa set variabel." + }, + "assigner": { + "operations": { + "title": "Operasi", + "clear": "Jelas", + "extend": "Memperpanjang", + "over-write": "Menimpa", + "append": "Menambahkan", + "remove-first": "Hapus Pertama", + "*=": "*=", + "set": "Mengeset", + "remove-last": "Hapus Terakhir", + "-=": "-=", + "/=": "/=", + "+=": " =", + "overwrite": "Menimpa" + }, + "variable": "Variabel", + "writeModeTip": "Mode tambahkan: Hanya tersedia untuk variabel array.", + "assignedVarsDescription": "Variabel yang ditetapkan harus berupa variabel yang dapat ditulis, seperti variabel percakapan.", + "over-write": "Menimpa", + "noVarTip": "Klik tombol \" \" untuk menambahkan variabel", + "noAssignedVars": "Tidak ada variabel yang ditetapkan yang tersedia", + "selectAssignedVariable": "Pilih variabel yang ditetapkan...", + "writeMode": "Mode Tulis", + "variables": "Variabel", + "varNotSet": "Variabel TIDAK Diatur", + "plus": "Tambah", + "assignedVariable": "Variabel yang Ditetapkan", + "clear": "Jelas", + "setParameter": "Atur parameter...", + "append": "Menambahkan", + "setVariable": "Atur Variabel" + }, + "tool": { + "outputVars": { + "files": { + "transfer_method": "Metode transfer. Nilai adalah remote_url atau local_file", + "url": "URL gambar", + "title": "File yang dihasilkan alat", + "upload_file_id": "Unggah id file", + "type": "Jenis dukungan. Sekarang hanya mendukung gambar" + }, + "json": "JSON yang dihasilkan alat", + "text": "Konten yang dihasilkan alat" + }, + "insertPlaceholder2": "Sisipkan variabel", + "insertPlaceholder1": "Ketik atau tekan", + "authorize": "Otorisasi", + "settings": "Pengaturan", + "inputVars": "Variabel Masukan" + }, + "questionClassifiers": { + "outputVars": { + "usage": "Informasi Penggunaan Model", + "className": "Nama Kelas" + }, + "inputVars": "Variabel Masukan", + "topicPlaceholder": "Tulis nama topik Anda", + "addClass": "Tambahkan Kelas", + "classNamePlaceholder": "Tulis nama kelas Anda", + "instruction": "Ajaran", + "advancedSetting": "Pengaturan Lanjutan", + "model": "pola", + "topicName": "Nama Topik", + "instructionTip": "Masukkan instruksi tambahan untuk membantu pengklasifikasi pertanyaan lebih memahami cara mengkategorikan pertanyaan.", + "instructionPlaceholder": "Tulis instruksi Anda", + "class": "Kelas" + }, + "parameterExtractor": { + "outputVars": { + "errorReason": "Alasan Kesalahan", + "isSuccess": "Apakah Success.Pada keberhasilan nilainya adalah 1, pada kegagalan nilainya adalah 0.", + "usage": "Informasi Penggunaan Model" + }, + "addExtractParameterContent": { + "name": "Nama", + "description": "Deskripsi", + "typePlaceholder": "Ekstrak Jenis Parameter", + "descriptionPlaceholder": "Ekstrak Deskripsi Parameter", + "requiredContent": "Diperlukan hanya digunakan sebagai referensi untuk inferensi model, dan bukan untuk validasi wajib output parameter.", + "namePlaceholder": "Ekstrak Nama Parameter", + "type": "Jenis", + "required": "Diperlukan" + }, + "inputVar": "Variabel Masukan", + "instructionTip": "Masukkan instruksi tambahan untuk membantu ekstraktor parameter memahami cara mengekstrak parameter.", + "instruction": "Ajaran", + "extractParameters": "Ekstrak Parameter", + "addExtractParameter": "Tambahkan Parameter Ekstrak", + "reasoningMode": "Mode Penalaran", + "reasoningModeTip": "Anda dapat memilih mode penalaran yang sesuai berdasarkan kemampuan model untuk menanggapi instruksi untuk pemanggilan fungsi atau perintah.", + "importFromTool": "Impor dari alat", + "extractParametersNotSet": "Ekstrak Parameter tidak diatur", + "advancedSetting": "Pengaturan Lanjutan" + }, + "iteration": { + "ErrorMethod": { + "removeAbnormalOutput": "Hapus Output Abnormal", + "operationTerminated": "Diakhiri", + "continueOnError": "Lanjutkan pada Kesalahan" + }, + "output": "Variabel Keluaran", + "deleteDesc": "Menghapus simpul iterasi akan menghapus semua simpul turunan", + "parallelModeUpper": "MODE PARALEL", + "parallelPanelDesc": "Dalam mode paralel, tugas dalam iterasi mendukung eksekusi paralel.", + "MaxParallelismTitle": "Paralelisme maksimum", + "currentIteration": "Iterasi Saat Ini", + "input": "Masukan", + "errorResponseMethod": "Metode respons kesalahan", + "comma": ",", + "parallelModeEnableDesc": "Dalam mode paralel, tugas dalam iterasi mendukung eksekusi paralel. Anda dapat mengonfigurasi ini di panel properti di sebelah kanan.", + "parallelMode": "Mode Paralel", + "MaxParallelismDesc": "Paralelisme maksimum digunakan untuk mengontrol jumlah tugas yang dijalankan secara bersamaan dalam satu iterasi.", + "deleteTitle": "Hapus Node Iterasi?", + "parallelModeEnableTitle": "Mode Paralel Diaktifkan", + "answerNodeWarningDesc": "Peringatan mode paralel: Simpul jawaban, penetapan variabel percakapan, dan operasi baca/tulis persisten dalam iterasi dapat menyebabkan pengecualian.", + "iteration_one": "{{count}} Iterasi", + "iteration_other": "{{count}} Iterasi", + "error_one": "Kesalahan {{count}}", + "error_other": "Kesalahan {{count}}", + "flattenOutput": "Ratakan Keluaran", + "flattenOutputDesc": "Saat diaktifkan, jika semua output iterasi berupa array, mereka akan digabung menjadi satu array tunggal. Saat dinonaktifkan, output akan mempertahankan struktur array bersarang." + }, + "loop": { + "ErrorMethod": { + "continueOnError": "Lanjutkan pada Kesalahan", + "removeAbnormalOutput": "Hapus Output Abnormal", + "operationTerminated": "Diakhiri" + }, + "inputMode": "Mode Masukan", + "deleteDesc": "Menghapus simpul perulangan akan menghapus semua simpul turunan", + "input": "Masukan", + "deleteTitle": "Hapus Simpul Loop?", + "exitConditionTip": "Simpul loop membutuhkan setidaknya satu kondisi keluar", + "variableName": "Nama Variabel", + "loopVariables": "Variabel Loop", + "setLoopVariables": "Mengatur variabel dalam cakupan loop", + "breakConditionTip": "Hanya variabel dalam loop dengan kondisi penghentian dan variabel percakapan yang dapat direferensikan.", + "loopNode": "Loop Node", + "output": "Variabel Keluaran", + "loopMaxCount": "Jumlah Loop Maksimum", + "currentLoop": "Loop Arus", + "breakCondition": "Kondisi Penghentian Loop", + "errorResponseMethod": "Metode Respons Kesalahan", + "comma": ",", + "finalLoopVariables": "Variabel Loop Akhir", + "initialLoopVariables": "Variabel Loop Awal", + "loop_one": "{{count}} Loop", + "loop_other": "{{count}} Perulangan", + "error_one": "Kesalahan {{count}}", + "error_other": "Kesalahan {{count}}", + "loopMaxCountError": "Harap masukkan jumlah loop maksimum yang valid, mulai dari 1 hingga {{maxCount}}", + "currentLoopCount": "Jumlah putaran saat ini: {{count}}", + "totalLoopCount": "Jumlah total loop: {{count}}" + }, + "note": { + "editor": { + "bold": "Berani", + "enterUrl": "Masukkan URL...", + "medium": "Sedang", + "strikethrough": "Coret", + "openLink": "Buka", + "unlink": "Membatalkan tautan", + "showAuthor": "Tampilkan Penulis", + "large": "Besar", + "placeholder": "Tulis catatan Anda...", + "invalidUrl": "URL tidak valid", + "small": "Kecil", + "italic": "Miring", + "link": "Tautan", + "bulletList": "Daftar Poin" + }, + "addNote": "Tambahkan Catatan" + }, + "docExtractor": { + "outputVars": { + "text": "Teks yang diekstrak" + }, + "learnMore": "Pelajari lebih lanjut", + "inputVar": "Variabel Masukan", + "supportFileTypes": "Jenis file yang didukung: {{types}}." + }, + "listFilter": { + "outputVars": { + "first_record": "Catatan pertama", + "result": "Hasil filter", + "last_record": "Catatan terakhir" + }, + "filterConditionKey": "Kunci Kondisi Filter", + "filterConditionComparisonValue": "Nilai Kondisi Filter", + "filterConditionComparisonOperator": "Operator Perbandingan Kondisi Filter", + "selectVariableKeyPlaceholder": "Pilih kunci sub variabel", + "orderBy": "Pesan oleh", + "desc": "DESC", + "extractsCondition": "Ekstrak item N", + "asc": "ASC", + "limit": "N Teratas", + "inputVar": "Variabel Masukan", + "filterCondition": "Kondisi Filter" + }, + "agent": { + "strategy": { + "tooltip": "Strategi Agen yang berbeda menentukan bagaimana sistem merencanakan dan menjalankan panggilan alat multi-langkah", + "searchPlaceholder": "Strategi agen pencarian", + "configureTip": "Silakan konfigurasikan strategi agen.", + "shortLabel": "Strategi", + "selectTip": "Pilih strategi agen", + "configureTipDesc": "Setelah mengonfigurasi strategi agen, node ini akan secara otomatis memuat konfigurasi yang tersisa. Strategi tersebut akan mempengaruhi mekanisme penalaran alat multi-langkah.", + "label": "Strategi Agen" + }, + "pluginInstaller": { + "installing": "Menginstal", + "install": "Pasang" + }, + "modelNotInMarketplace": { + "title": "Model tidak dipasang", + "desc": "Model ini diinstal dari repositori Lokal atau GitHub. Silakan gunakan setelah pemasangan.", + "manageInPlugins": "Kelola di Plugin" + }, + "modelNotSupport": { + "title": "Model yang Tidak Didukung", + "descForVersionSwitch": "Versi plugin yang diinstal tidak menyediakan model ini. Klik untuk beralih versi.", + "desc": "Versi plugin yang diinstal tidak menyediakan model ini." + }, + "modelSelectorTooltips": { + "deprecated": "Model ini tidak digunakan lagi" + }, + "outputVars": { + "files": { + "transfer_method": "Metode transfer. Nilai adalah remote_url atau local_file", + "type": "Jenis dukungan. Sekarang hanya mendukung gambar", + "upload_file_id": "Unggah id file", + "title": "file yang dihasilkan agen", + "url": "URL gambar" + }, + "usage": "Informasi Penggunaan Model", + "text": "Konten yang dihasilkan agen", + "json": "JSON yang dihasilkan agen" + }, + "checkList": { + "strategyNotSelected": "Strategi tidak dipilih" + }, + "installPlugin": { + "title": "Instal Plugin", + "changelog": "Log perubahan", + "cancel": "Membatalkan", + "install": "Pasang", + "desc": "Tentang menginstal plugin berikut" + }, + "maxIterations": "Iterasi Maks", + "configureModel": "Mengonfigurasi Model", + "model": "pola", + "strategyNotSet": "Strategi agen tidak ditetapkan", + "toolbox": "Toolbox", + "tools": "Perkakas", + "pluginNotInstalledDesc": "Plugin ini diinstal dari GitHub. Silakan buka Plugins untuk menginstal ulang", + "learnMore": "Pelajari lebih lanjut", + "notAuthorized": "Tidak Berwenang", + "strategyNotFoundDescAndSwitchVersion": "Versi plugin yang diinstal tidak menyediakan strategi ini. Klik untuk beralih versi.", + "modelNotInstallTooltip": "Model ini tidak dipasang", + "pluginNotFoundDesc": "Plugin ini diinstal dari GitHub. Silakan buka Plugins untuk menginstal ulang", + "modelNotSelected": "Model tidak dipilih", + "unsupportedStrategy": "Strategi yang tidak didukung", + "pluginNotInstalled": "Plugin ini tidak diinstal", + "clickToViewParameterSchema": "Klik untuk melihat skema parameter", + "linkToPlugin": "Tautan ke Plugin", + "parameterSchema": "Skema Parameter", + "strategyNotFoundDesc": "Versi plugin yang diinstal tidak menyediakan strategi ini.", + "toolNotInstallTooltip": "{{tool}} tidak terpasang", + "toolNotAuthorizedTooltip": "{{tool}} Tidak Berwenang", + "strategyNotInstallTooltip": "{{strategy}} tidak terpasang" + }, + "dataSource": { + "add": "Menambahkan sumber data", + "supportedFileFormatsPlaceholder": "Ekstensi file, e.g. doc", + "supportedFileFormats": "Format file yang didukung" + }, + "knowledgeBase": { + "chunkStructureTip": { + "learnMore": "Pelajari lebih lanjut", + "title": "Silakan pilih struktur potongan", + "message": "Basis Pengetahuan Dify mendukung tiga struktur pemotongan: Umum, Induk-anak, dan Tanya Jawab. Setiap basis pengetahuan hanya dapat memiliki satu struktur. Output dari simpul sebelumnya harus selaras dengan struktur potongan yang dipilih. Perhatikan bahwa pilihan struktur chunking memengaruhi metode indeks yang tersedia." + }, + "chooseChunkStructure": "Pilih struktur potongan", + "aboutRetrieval": "tentang metode pengambilan.", + "chunkIsRequired": "Struktur potongan diperlukan", + "changeChunkStructure": "Ubah Struktur Potongan", + "retrievalSettingIsRequired": "Pengaturan pengambilan diperlukan", + "indexMethodIsRequired": "Metode indeks diperlukan", + "chunkStructure": "Struktur Potongan", + "chunksInput": "Potongan", + "chunksInputTip": "Variabel input dari node basis pengetahuan adalah Chunks. Tipe variabel adalah objek dengan Skema JSON tertentu yang harus konsisten dengan struktur chunk yang dipilih.", + "chunksVariableIsRequired": "Variabel Chunks diperlukan", + "rerankingModelIsRequired": "Model reranking diperlukan", + "embeddingModelIsRequired": "Model embedding diperlukan", + "rerankingModelIsInvalid": "Model reranking tidak valid", + "embeddingModelIsInvalid": "Model embedding tidak valid" + }, + "triggerPlugin": { + "authorized": "Otorisasi", + "notConfigured": "Belum Dikonfigurasi", + "notAuthorized": "Tidak Diizinkan", + "selectSubscription": "Pilih Langganan", + "availableSubscriptions": "Langganan Tersedia", + "addSubscription": "Tambah Langganan Baru", + "removeSubscription": "Hapus Langganan", + "subscriptionRemoved": "Langganan berhasil dihapus", + "error": "Kesalahan", + "configuration": "Konfigurasi", + "remove": "Hapus", + "or": "ATAU", + "useOAuth": "Gunakan OAuth", + "useApiKey": "Gunakan Kunci API", + "authenticationFailed": "Autentikasi gagal", + "authenticationSuccess": "Autentikasi berhasil", + "oauthConfigFailed": "Konfigurasi OAuth gagal", + "configureOAuthClient": "Konfigurasikan Klien OAuth", + "oauthClientDescription": "Konfigurasikan kredensial klien OAuth untuk mengaktifkan otentikasi", + "oauthClientSaved": "Konfigurasi klien OAuth berhasil disimpan", + "configureApiKey": "Konfigurasikan Kunci API", + "apiKeyDescription": "Konfigurasikan kredensial kunci API untuk otentikasi", + "apiKeyConfigured": "Kunci API berhasil dikonfigurasi", + "configurationFailed": "Konfigurasi gagal", + "failedToStart": "Gagal memulai alur autentikasi", + "credentialsVerified": "Kredensial berhasil diverifikasi", + "credentialVerificationFailed": "Verifikasi kredensial gagal", + "verifyAndContinue": "Verifikasi & Lanjutkan", + "configureParameters": "Konfigurasikan Parameter", + "parametersDescription": "Konfigurasikan parameter dan properti pemicu", + "configurationComplete": "Konfigurasi Selesai", + "configurationCompleteDescription": "Pemicu Anda telah dikonfigurasi dengan sukses", + "configurationCompleteMessage": "Konfigurasi pemicu Anda sekarang telah selesai dan siap digunakan.", + "parameters": "Parameter", + "properties": "Properti", + "propertiesDescription": "Properti konfigurasi tambahan untuk pemicu ini", + "noConfigurationRequired": "Tidak diperlukan pengaturan tambahan untuk pemicu ini.", + "subscriptionName": "Nama Langganan", + "subscriptionNameDescription": "Masukkan nama unik untuk langganan pemicu ini", + "subscriptionNamePlaceholder": "Masukkan nama langganan...", + "subscriptionNameRequired": "Nama langganan wajib diisi", + "subscriptionRequired": "Berlangganan diperlukan" + }, + "triggerSchedule": { + "title": "Jadwal", + "nodeTitle": "Pemicu Jadwal", + "notConfigured": "Belum dikonfigurasi", + "useCronExpression": "Gunakan ekspresi cron", + "useVisualPicker": "Gunakan pemilih visual", + "frequency": { + "label": "FREKUENSI", + "hourly": "Per jam", + "daily": "Harian", + "weekly": "Mingguan", + "monthly": "Bulanan" + }, + "selectFrequency": "Pilih frekuensi", + "frequencyLabel": "Frekuensi", + "nextExecution": "Eksekusi berikutnya", + "weekdays": "Hari kerja", + "time": "Waktu", + "cronExpression": "Ekspresi Cron", + "nextExecutionTime": "WAKTU EKSEKUSI BERIKUTNYA", + "nextExecutionTimes": "5 waktu eksekusi berikutnya", + "startTime": "Waktu Mulai", + "executeNow": "Eksekusi sekarang", + "selectDateTime": "Pilih Tanggal & Waktu", + "hours": "Jam", + "minutes": "Menit", + "onMinute": "Dalam Sejuta", + "days": "Hari", + "lastDay": "Hari terakhir", + "lastDayTooltip": "Tidak semua bulan memiliki 31 hari. Gunakan opsi 'hari terakhir' untuk memilih hari terakhir setiap bulan.", + "mode": "Mode", + "timezone": "Zona waktu", + "visualConfig": "Konfigurasi Visual", + "monthlyDay": "Hari Bulanan", + "executionTime": "Waktu Eksekusi", + "invalidTimezone": "Zona waktu tidak valid", + "invalidCronExpression": "Ekspresi cron tidak valid", + "noValidExecutionTime": "Tidak dapat menghitung waktu eksekusi yang valid", + "executionTimeCalculationError": "Gagal menghitung waktu eksekusi", + "invalidFrequency": "Frekuensi tidak valid", + "invalidStartTime": "Waktu mulai tidak valid", + "startTimeMustBeFuture": "Waktu mulai harus di masa depan", + "invalidTimeFormat": "Format waktu tidak valid (diharapkan HH:MM AM/PM)", + "invalidWeekday": "Hari kerja tidak valid: {{weekday}}", + "invalidMonthlyDay": "Hari bulanan harus antara 1-31 atau \"terakhir\"", + "invalidOnMinute": "Menit harus berada di antara 0-59", + "invalidExecutionTime": "Waktu eksekusi tidak valid", + "executionTimeMustBeFuture": "Waktu eksekusi harus di masa depan" + }, + "triggerWebhook": { + "title": "Pemicu Webhook", + "nodeTitle": "🔗 Pemicu Webhook", + "configPlaceholder": "Konfigurasi pemicu webhook akan diterapkan di sini", + "webhookUrl": "URL Webhook", + "webhookUrlPlaceholder": "Klik buat untuk membuat URL webhook", + "generate": "Hasilkan", + "copy": "Salin", + "test": "Tes", + "urlGenerated": "URL Webhook berhasil dibuat", + "urlGenerationFailed": "Gagal membuat URL webhook", + "urlCopied": "URL disalin ke papan klip", + "method": "Metode", + "contentType": "Jenis Konten", + "queryParameters": "Parameter Kueri", + "headerParameters": "Parameter Header", + "requestBodyParameters": "Parameter Body Permintaan", + "parameterName": "Nama variabel", + "varName": "Nama variabel", + "varType": "Jenis", + "varNamePlaceholder": "Masukkan nama variabel...", + "required": "Diperlukan", + "addParameter": "Tambahkan", + "addHeader": "Tambahkan", + "noParameters": "Tidak ada parameter yang dikonfigurasi", + "noQueryParameters": "Tidak ada parameter kueri yang dikonfigurasi", + "noHeaders": "Tidak ada header yang dikonfigurasi", + "noBodyParameters": "Tidak ada parameter tubuh yang dikonfigurasi", + "debugUrlTitle": "Untuk percobaan, selalu gunakan URL ini", + "debugUrlCopy": "Klik untuk menyalin", + "debugUrlCopied": "Disalin!", + "debugUrlPrivateAddressWarning": "URL ini tampaknya merupakan alamat internal, yang mungkin menyebabkan permintaan webhook gagal. Anda dapat mengubah TRIGGER_URL ke alamat publik.", + "errorHandling": "Penanganan Kesalahan", + "errorStrategy": "Penanganan Kesalahan", + "responseConfiguration": "Tanggapan", + "asyncMode": "Mode Asinkron", + "statusCode": "Kode Status", + "responseBody": "Isi Tanggapan", + "responseBodyPlaceholder": "Tulis isi tanggapan Anda di sini", + "headers": "Header", + "validation": { + "webhookUrlRequired": "URL Webhook diperlukan", + "invalidParameterType": "Tipe parameter \"{{type}}\" tidak valid untuk parameter \"{{name}}\"" + } + } + }, + "tracing": { + "stopBy": "Singgah di {{user}}" + }, + "versionHistory": { + "filter": { + "empty": "Tidak ada riwayat versi yang cocok ditemukan", + "onlyYours": "Hanya milik Anda", + "reset": "Atur Ulang Filter", + "onlyShowNamedVersions": "Hanya tampilkan versi bernama", + "all": "Semua" + }, + "editField": { + "releaseNotes": "Catatan Rilis", + "title": "Titel", + "titleLengthLimit": "Judul tidak boleh melebihi {{limit}} karakter", + "releaseNotesLengthLimit": "Catatan rilis tidak boleh melebihi {{limit}} karakter" + }, + "action": { + "copyIdSuccess": "ID disalin ke clipboard", + "deleteFailure": "Gagal menghapus versi", + "updateSuccess": "Versi diperbarui", + "updateFailure": "Gagal memperbarui versi", + "restoreSuccess": "Versi dipulihkan", + "deleteSuccess": "Versi dihapus", + "restoreFailure": "Gagal memulihkan versi" + }, + "copyId": "Salin ID", + "latest": "Terbaru", + "nameThisVersion": "Beri nama versi ini", + "restorationTip": "Setelah pemulihan versi, draf saat ini akan ditimpa.", + "releaseNotesPlaceholder": "Menjelaskan apa yang berubah", + "deletionTip": "Penghapusan tidak dapat diubah, harap konfirmasi.", + "currentDraft": "Draf Saat Ini", + "editVersionInfo": "Mengedit info versi", + "title": "Versi", + "defaultName": "Versi Tanpa Judul" + }, + "debug": { + "noData": { + "description": "Hasil putaran terakhir akan ditampilkan di sini", + "runThisNode": "Jalankan simpul ini" + }, + "variableInspect": { + "trigger": { + "stop": "Berhenti lari", + "cached": "Melihat variabel yang di-cache", + "running": "Status berjalan caching", + "normal": "Inspeksi Variabel", + "clear": "Jelas" + }, + "systemNode": "Sistem", + "chatNode": "Percakapan", + "clearAll": "Setel ulang semua", + "edited": "Diedit", + "envNode": "Lingkungan", + "title": "Inspeksi Variabel", + "clearNode": "Hapus variabel cache", + "view": "Lihat log", + "emptyLink": "Pelajari lebih lanjut", + "reset": "Atur ulang ke nilai eksekusi terakhir", + "resetConversationVar": "Mengatur ulang variabel percakapan ke nilai default", + "emptyTip": "Setelah melangkah melalui simpul di kanvas atau menjalankan simpul langkah demi langkah, Anda dapat melihat nilai variabel simpul saat ini di Inspeksi Variabel", + "export": "ekspor", + "largeDataNoExport": "Data besar - hanya pratinjau sebagian", + "exportToolTip": "Ekspor Variabel sebagai File", + "largeData": "Data besar, pratinjau baca-saja. Ekspor untuk melihat semua.", + "listening": { + "title": "Mendengarkan peristiwa dari pemicu...", + "tip": "Sekarang Anda dapat mensimulasikan pemicu acara dengan mengirim permintaan uji ke endpoint HTTP {{nodeName}} atau menggunakannya sebagai URL callback untuk debugging acara secara langsung. Semua output dapat dilihat langsung di Variable Inspector.", + "tipPlugin": "Sekarang Anda dapat membuat acara di {{- pluginName}}, dan mengambil hasil dari acara ini di Inspektur Variabel.", + "tipSchedule": "Mendengarkan acara dari pemicu jadwal.\nJalankan berikutnya yang dijadwalkan: {{nextTriggerTime}}", + "tipFallback": "Tunggu event pemicu yang masuk. Output akan muncul di sini.", + "defaultNodeName": "pemicu ini", + "defaultPluginName": "pemicu plugin ini", + "defaultScheduleTime": "Belum dikonfigurasi", + "selectedTriggers": "pemicu yang dipilih", + "stopButton": "Berhenti" + } + }, + "relations": { + "noDependents": "Tidak ada tanggungan", + "dependentsDescription": "Node yang mengandalkan node ini", + "noDependencies": "Tidak ada dependensi", + "dependencies": "Dependensi", + "dependenciesDescription": "Node yang diandalkan oleh node ini", + "dependents": "Tanggungan" + }, + "settingsTab": "Pengaturan", + "copyLastRunError": "Gagal menyalin input eksekusi terakhir", + "copyLastRun": "Salin Eksekusi Terakhir", + "noMatchingInputsFound": "Tidak ada input yang cocok yang ditemukan dari eksekusi terakhir", + "lastRunTab": "Lari Terakhir", + "relationsTab": "Hubungan", + "lastOutput": "Keluaran Terakhir", + "noLastRunFound": "Tidak ada eksekusi sebelumnya ditemukan", + "lastRunInputsCopied": "{{count}} input yang disalin dari proses terakhir" + }, + "sidebar": { + "exportWarning": "Ekspor Versi Tersimpan Saat Ini", + "exportWarningDesc": "Ini akan mengekspor versi terkini dari alur kerja Anda yang telah disimpan. Jika Anda memiliki perubahan yang belum disimpan di editor, harap simpan terlebih dahulu dengan menggunakan opsi ekspor di kanvas alur kerja." + }, + "publishLimit": { + "startNodeTitlePrefix": "Tingkatkan ke", + "startNodeTitleSuffix": "buka kunci pemicu tak terbatas per alur kerja", + "startNodeDesc": "Anda telah mencapai batas 2 pemicu per alur kerja untuk paket ini. Tingkatkan paket untuk mempublikasikan alur kerja ini." + }, + "error": { + "startNodeRequired": "Silakan tambahkan node awal terlebih dahulu sebelum {{operation}}", + "operations": { + "connectingNodes": "menghubungkan node", + "addingNodes": "menambahkan node", + "modifyingWorkflow": "memodifikasi alur kerja", + "updatingWorkflow": "memperbarui alur kerja" + } + }, + "customWebhook": "Webhook Kustom", + "difyTeam": "Tim Dify", + "triggerStatus": { + "enabled": "PEICU", + "disabled": "PEICU • DINONAKTIFKAN" + }, + "entryNodeStatus": { + "enabled": "MULAI", + "disabled": "MULAI • NONAKTIF" + }, + "onboarding": { + "title": "Pilih node awal untuk memulai", + "description": "Node awal yang berbeda memiliki kemampuan yang berbeda. Jangan khawatir, kamu selalu bisa mengubahnya nanti.", + "userInputFull": "Input Pengguna (node awal asli)", + "userInputDescription": "Node awal yang memungkinkan pengaturan variabel input pengguna, dengan aplikasi web, API layanan, server MCP, dan alur kerja sebagai kemampuan alat.", + "trigger": "Pemicu", + "triggerDescription": "Pemicu dapat berfungsi sebagai node awal dari alur kerja, seperti tugas terjadwal, webhook kustom, atau integrasi dengan aplikasi lain.", + "back": "Kembali", + "learnMore": "Pelajari lebih lanjut", + "aboutStartNode": "tentang node awal.", + "escTip": { + "press": "Tekan", + "key": "esc", + "toDismiss": "memberhentikan" + } + } +} diff --git a/web/i18n/id-ID/workflow.ts b/web/i18n/id-ID/workflow.ts deleted file mode 100644 index 887650ec2f..0000000000 --- a/web/i18n/id-ID/workflow.ts +++ /dev/null @@ -1,1296 +0,0 @@ -const translation = { - common: { - effectVarConfirm: { - content: 'Variabel ini digunakan di node lain. Apakah Anda masih ingin menghapusnya?', - title: 'Hapus Variabel', - }, - parallelTip: { - click: { - title: 'Klik', - desc: 'untuk menambahkan', - }, - drag: { - desc: 'untuk terhubung', - title: 'Tarik', - }, - limit: 'Paralelisme terbatas pada {{num}} cabang.', - depthLimit: 'Batas lapisan bersarang paralel sebesar {{num}} lapisan', - }, - undo: 'Urungkan', - embedIntoSite: 'Sematkan ke Situs', - editing: 'Mengedit', - inRunMode: 'Dalam Mode Jalankan', - publishUpdate: 'Publikasikan Pembaruan', - fileUploadTip: 'Fitur unggahan gambar telah ditingkatkan menjadi unggah file.', - currentDraftUnpublished: 'Draf Saat Ini Tidak Diterbitkan', - inPreview: 'Dalam Pratinjau', - preview: 'Pratayang', - needConnectTip: 'Langkah ini tidak terhubung ke apa pun', - handMode: 'Mode Tangan', - currentView: 'Tampilan Saat Ini', - exportImage: 'Ekspor Gambar', - noVar: 'Tidak ada variabel', - disconnect: 'Lepaskan', - importWarningDetails: 'Perbedaan versi DSL dapat memengaruhi fitur tertentu', - addParallelNode: 'Tambahkan Node Paralel', - onFailure: 'Pada Kegagalan', - update: 'Pemutakhiran', - configure: 'Konfigurasikan', - copy: 'Menyalin', - redo: 'Ulangi', - runApp: 'Jalankan Aplikasi', - noHistory: 'Tidak Ada Sejarah', - importDSLTip: 'Draf saat ini akan ditimpa.\nEkspor alur kerja sebagai cadangan sebelum mengimpor.', - loadMore: 'Muat Lebih Banyak', - previewPlaceholder: 'Masukkan konten di kotak di bawah ini untuk mulai men-debug Chatbot', - unpublished: 'Tidak diterbitkan', - viewRunHistory: 'Lihat riwayat eksekusi', - versionHistory: 'Riwayat versi', - backupCurrentDraft: 'Cadangan Draf Saat Ini', - latestPublished: 'Terbaru Diterbitkan', - exportSVG: 'Ekspor sebagai SVG', - branch: 'CABANG', - openInExplore: 'Buka di Jelajahi', - publish: 'Menerbitkan', - importSuccess: 'Berhasil Impor', - jumpToNode: 'Lompat ke simpul ini', - tagBound: 'Jumlah aplikasi yang menggunakan tag ini', - model: 'Model', - workflowAsToolTip: 'Konfigurasi ulang alat diperlukan setelah pembaruan alur kerja.', - currentDraft: 'Draf Saat Ini', - parallel: 'SEJAJAR', - jinjaEditorPlaceholder: 'Ketik \'/\' atau \'{\' untuk menyisipkan variabel', - exitVersions: 'Keluar dari Versi', - featuresDocLink: 'Pelajari lebih lanjut', - pasteHere: 'Tempel di sini', - importWarning: 'Hati', - running: 'Menjalankan', - publishedAt: 'Diterbitkan', - run: 'Jalankan', - importDSL: 'Impor DSL', - featuresDescription: 'Tingkatkan pengalaman pengguna aplikasi web', - inPreviewMode: 'Dalam Mode Pratinjau', - duplicate: 'Duplikat', - learnMore: 'Pelajari lebih lanjut', - restart: 'Restart', - setVarValuePlaceholder: 'Atur variabel', - conversationLog: 'Log Percakapan', - addTitle: 'Tambahkan judul...', - searchVar: 'Variabel pencarian', - published: 'Diterbitkan', - viewDetailInTracingPanel: 'Lihat detail', - variableNamePlaceholder: 'Nama variabel', - workflowAsTool: 'Alur Kerja sebagai Alat', - enableJinja: 'Aktifkan dukungan template Jinja', - input: 'Masukan', - chooseDSL: 'Pilih file DSL', - exportPNG: 'Ekspor sebagai PNG', - needAnswerNode: 'Node Jawaban harus ditambahkan', - syncingData: 'Menyinkronkan data, hanya beberapa detik.', - addFailureBranch: 'Tambahkan Cabang Gagal', - exportJPEG: 'Ekspor sebagai JPEG', - addBlock: 'Tambahkan Node', - processData: 'Proses Data', - needOutputNode: 'Node Output harus ditambahkan', - manageInTools: 'Kelola di Alat', - pointerMode: 'Mode Penunjuk', - accessAPIReference: 'Referensi API Akses', - ImageUploadLegacyTip: 'Anda sekarang dapat membuat variabel jenis file di formulir awal. Kami tidak akan lagi mendukung fitur unggah gambar di masa mendatang.', - overwriteAndImport: 'Menimpa dan Mengimpor', - goBackToEdit: 'Kembali ke editor', - runHistory: 'Jalankan Riwayat', - autoSaved: 'Disimpan Secara Otomatis', - output: 'Hasil', - batchRunApp: 'Aplikasi Batch Run', - debugAndPreview: 'Pratayang', - features: 'Fitur', - importFailure: 'Impor Gagal', - insertVarTip: 'Tekan tombol \'/\' untuk memasukkan dengan cepat', - addDescription: 'Tambahkan deskripsi...', - notRunning: 'Belum berjalan', - workflowProcess: 'Proses Alur Kerja', - showRunHistory: 'Tampilkan Riwayat Eksekusi', - configureRequired: 'Konfigurasi yang Diperlukan', - currentWorkflow: 'Alur Kerja Saat Ini', - viewOnly: 'Lihat Saja', - restore: 'Mengembalikan', - listening: 'Mendengarkan', - chooseStartNodeToRun: 'Pilih node awal untuk dijalankan', - runAllTriggers: 'Jalankan semua pemicu', - maxTreeDepth: 'Batas maksimum {{depth}} node per cabang', - needAdd: 'Node {{node}} harus ditambahkan', - needStartNode: 'Setidaknya satu node awal harus ditambahkan', - moreActions: 'Tindakan Lain', - workflowAsToolDisabledHint: 'Terbitkan alur kerja terbaru dan pastikan ada node Input Pengguna yang terhubung sebelum mengonfigurasinya sebagai alat.', - }, - env: { - modal: { - description: 'Deskripsi', - valuePlaceholder: 'Nilai ENV', - descriptionPlaceholder: 'Jelaskan variabel', - editTitle: 'Edit Variabel Lingkungan', - namePlaceholder: 'Nama env', - value: 'Nilai', - name: 'Nama', - title: 'Tambahkan Variabel Lingkungan', - secretTip: 'Digunakan untuk menentukan informasi atau data sensitif, dengan pengaturan DSL yang dikonfigurasi untuk pencegahan kebocoran.', - type: 'Jenis', - }, - export: { - ignore: 'Ekspor DSL', - checkbox: 'Mengekspor nilai rahasia', - title: 'Mengekspor variabel lingkungan Rahasia?', - export: 'Mengekspor DSL dengan nilai rahasia', - }, - envPanelButton: 'Tambahkan Variabel', - envPanelTitle: 'Variabel Lingkungan', - envDescription: 'Variabel lingkungan dapat digunakan untuk menyimpan informasi pribadi dan kredensial. Mereka hanya baca dan dapat dipisahkan dari file DSL selama ekspor.', - }, - globalVar: { - title: 'Variabel Sistem', - description: 'Variabel sistem adalah variabel global yang dapat dirujuk oleh node apa pun tanpa koneksi jika tipenya sesuai, seperti ID pengguna akhir dan ID alur kerja.', - fieldsDescription: { - conversationId: 'ID percakapan', - dialogCount: 'Jumlah percakapan', - userId: 'ID pengguna', - triggerTimestamp: 'Cap waktu saat aplikasi mulai berjalan', - appId: 'ID aplikasi', - workflowId: 'ID alur kerja', - workflowRunId: 'ID eksekusi alur kerja', - }, - }, - chatVariable: { - modal: { - valuePlaceholder: 'Nilai default, biarkan kosong untuk tidak diatur', - name: 'Nama', - arrayValue: 'Nilai', - description: 'Deskripsi', - editTitle: 'Edit Variabel Percakapan', - editInForm: 'Edit dalam Formulir', - type: 'Jenis', - oneByOne: 'Tambahkan satu per satu', - editInJSON: 'Edit dalam JSON', - namePlaceholder: 'Nama variabel', - objectType: 'Jenis', - title: 'Tambahkan Variabel Percakapan', - value: 'Nilai Default', - descriptionPlaceholder: 'Jelaskan variabel', - objectValue: 'Nilai Default', - addArrayValue: 'Nilai Tambah', - objectKey: 'Kunci', - }, - panelTitle: 'Variabel Percakapan', - button: 'Tambahkan Variabel', - updatedAt: 'Diperbarui pada', - panelDescription: 'Variabel Percakapan digunakan untuk menyimpan informasi interaktif yang perlu diingat LLM, termasuk riwayat percakapan, file yang diunggah, preferensi pengguna. Mereka dibaca-tulis.', - docLink: 'Kunjungi dokumen kami untuk mempelajari lebih lanjut.', - storedContent: 'Konten yang disimpan', - }, - changeHistory: { - nodeAdd: 'Node ditambahkan', - nodePaste: 'Node ditempelkan', - noteDelete: 'Catatan dihapus', - hint: 'Petunjuk', - nodeTitleChange: 'Judul simpul diubah', - title: 'Riwayat Perubahan', - nodeDescriptionChange: 'Deskripsi simpul diubah', - clearHistory: 'Hapus Sejarah', - placeholder: 'Anda belum mengubah apa pun', - nodeDragStop: 'Node dipindahkan', - hintText: 'Tindakan pengeditan Anda dilacak dalam riwayat perubahan, yang disimpan di perangkat Anda selama sesi ini. Riwayat ini akan dihapus saat Anda meninggalkan editor.', - sessionStart: 'Mulai Sesi', - noteChange: 'Catatan berubah', - nodeResize: 'Node diubah ukurannya', - nodeDelete: 'Node dihapus', - noteAdd: 'Catatan ditambahkan', - nodeConnect: 'Node terhubung', - currentState: 'Keadaan Saat Ini', - edgeDelete: 'Node terputus', - nodeChange: 'Node diubah', - stepBackward_one: '{{count}} langkah mundur', - stepBackward_other: '{{count}} langkah mundur', - stepForward_one: '{{count}} melangkah maju', - stepForward_other: '{{count}} melangkah maju', - }, - errorMsg: { - fields: { - variable: 'Nama Variabel', - model: 'Model', - rerankModel: 'Model Peringkat Ulang yang dikonfigurasi', - visionVariable: 'Variabel Penglihatan', - variableValue: 'Nilai Variabel', - code: 'Kode', - }, - invalidVariable: 'Variabel tidak valid', - authRequired: 'Otorisasi diperlukan', - rerankModelRequired: 'Model Rerank yang dikonfigurasi diperlukan', - fieldRequired: '{{field}} wajib diisi', - invalidJson: '{{field}} adalah JSON yang tidak valid', - noValidTool: '{{field}} tidak ada alat yang valid dipilih', - toolParameterRequired: '{{field}}: parameter [{{param}}] diperlukan', - startNodeRequired: 'Silakan tambahkan node awal terlebih dahulu sebelum {{operation}}', - }, - singleRun: { - back: 'Belakang', - running: 'Menjalankan', - iteration: 'Iterasi', - testRun: 'Uji Coba', - testRunIteration: 'Iterasi Uji Coba', - startRun: 'Mulai Lari', - loop: 'Lari', - preparingDataSource: 'Menyiapkan Sumber Data', - reRun: 'Jalankan ulang', - }, - tabs: { - 'utilities': 'Utilitas', - 'workflowTool': 'Alur Kerja', - 'searchBlock': 'Simpul pencarian', - 'agent': 'Strategi Agen', - 'allAdded': 'Semua ditambahkan', - 'searchTool': 'Alat pencarian', - 'customTool': 'Adat', - 'noResult': 'Tidak ada kecocokan yang ditemukan', - 'tools': 'Perkakas', - 'logic': 'Logika', - 'addAll': 'Tambahkan semua', - 'blocks': 'Node', - 'question-understand': 'Pertanyaan Pahami', - 'plugin': 'Plugin', - 'transform': 'Mengubah', - 'allTool': 'Semua', - 'sources': 'Sumber', - 'searchDataSource': 'Cari Sumber Data', - 'start': 'Mulai', - 'searchTrigger': 'Pencarian memicu...', - 'allTriggers': 'Semua pemicu', - 'noPluginsFound': 'Tidak ada plugin yang ditemukan', - 'requestToCommunity': 'Permintaan kepada komunitas', - 'featuredTools': 'Unggulan', - 'showMoreFeatured': 'Tampilkan lebih banyak', - 'showLessFeatured': 'Tampilkan lebih sedikit', - 'installed': 'Terpasang', - 'pluginByAuthor': 'Oleh {{author}}', - 'usePlugin': 'Pilih alat', - 'hideActions': 'Sembunyikan alat', - 'noFeaturedPlugins': 'Temukan lebih banyak alat di Marketplace', - 'noFeaturedTriggers': 'Temukan lebih banyak pemicu di Marketplace', - 'startDisabledTip': 'Node pemicu dan node input pengguna saling eksklusif.', - }, - blocks: { - 'code': 'Kode', - 'http-request': 'Permintaan HTTP', - 'start': 'Mulai', - 'template-transform': 'Templat', - 'llm': 'LLM', - 'variable-assigner': 'Agregator Variabel', - 'loop-end': 'Keluar Loop', - 'iteration': 'Iterasi', - 'question-classifier': 'Pengklasifikasi Pertanyaan', - 'iteration-start': 'Iterasi Mulai', - 'knowledge-retrieval': 'Pengambilan Pengetahuan', - 'loop': 'Perulangan', - 'assigner': 'Penerima Variabel', - 'agent': 'Agen', - 'list-operator': 'Operator Daftar', - 'answer': 'Jawaban', - 'parameter-extractor': 'Ekstraktor Parameter', - 'document-extractor': 'Ekstraktor Dokumen', - 'end': 'Keluaran', - 'if-else': 'JIKA/LAIN', - 'loop-start': 'Mulai Loop', - 'variable-aggregator': 'Agregator Variabel', - 'datasource': 'Sumber Data', - 'knowledge-index': 'Basis Pengetahuan', - 'originalStartNode': 'node awal asli', - 'trigger-schedule': 'Pemicu Jadwal', - 'trigger-webhook': 'Pemicu Webhook', - 'trigger-plugin': 'Pemicu Plugin', - }, - blocksAbout: { - 'template-transform': 'Mengonversi data menjadi string menggunakan sintaks templat Jinja', - 'answer': 'Menentukan konten balasan percakapan obrolan', - 'llm': 'Memanggil model bahasa besar untuk menjawab pertanyaan atau memproses bahasa alami', - 'question-classifier': 'Tentukan kondisi klasifikasi pertanyaan pengguna, LLM dapat menentukan bagaimana percakapan berlangsung berdasarkan deskripsi klasifikasi', - 'loop-end': 'Setara dengan "istirahat". Node ini tidak memiliki item konfigurasi. Ketika badan loop mencapai node ini, loop berakhir.', - 'start': 'Menentukan parameter awal untuk meluncurkan alur kerja', - 'iteration': 'Lakukan beberapa langkah pada objek daftar hingga semua hasil dikeluarkan.', - 'code': 'Eksekusi sepotong kode Python atau NodeJS untuk mengimplementasikan logika kustom', - 'http-request': 'Izinkan permintaan server dikirim melalui protokol HTTP', - 'assigner': 'Simpul penetapan variabel digunakan untuk menetapkan nilai ke variabel yang dapat ditulis (seperti variabel percakapan).', - 'if-else': 'Memungkinkan Anda membagi alur kerja menjadi dua cabang berdasarkan kondisi if/else', - 'agent': 'Memanggil model bahasa besar untuk menjawab pertanyaan atau memproses bahasa alami', - 'document-extractor': 'Digunakan untuk mengurai dokumen yang diunggah menjadi konten teks yang mudah dipahami oleh LLM.', - 'knowledge-retrieval': 'Memungkinkan Anda untuk mengkueri konten teks yang terkait dengan pertanyaan pengguna dari Pengetahuan', - 'parameter-extractor': 'Gunakan LLM untuk mengekstrak parameter terstruktur dari bahasa alami untuk pemanggilan alat atau permintaan HTTP.', - 'variable-assigner': 'Agregatkan variabel multi-cabang menjadi satu variabel untuk konfigurasi terpadu simpul hilir.', - 'loop': 'Jalankan perulangan logika hingga kondisi penghentian terpenuhi atau jumlah perulangan maksimum tercapai.', - 'variable-aggregator': 'Agregatkan variabel multi-cabang menjadi satu variabel untuk konfigurasi terpadu simpul hilir.', - 'end': 'Menentukan output dan jenis hasil alur kerja', - 'list-operator': 'Digunakan untuk memfilter atau mengurutkan konten array.', - 'datasource': 'Sumber Data Tentang', - 'knowledge-index': 'Basis Pengetahuan Tentang', - 'trigger-schedule': 'Pemicu alur kerja berbasis waktu yang memulai alur kerja sesuai jadwal', - 'trigger-webhook': 'Pemicu Webhook menerima push HTTP dari sistem pihak ketiga untuk secara otomatis memicu alur kerja.', - 'trigger-plugin': 'Pemicu integrasi pihak ketiga yang memulai alur kerja dari kejadian platform eksternal', - }, - operator: { - zoomIn: 'Perbesar', - alignCenter: 'Pusat', - zoomOut: 'Perkecil', - zoomToFit: 'Perbesar agar sesuai', - vertical: 'Vertikal', - alignTop: 'Puncak', - alignMiddle: 'Tengah', - selectionAlignment: 'Perataan Seleksi', - alignRight: 'Kanan', - alignNodes: 'Sejajarkan Node', - horizontal: 'Horisontal', - distributeHorizontal: 'Spasi Secara Horizontal', - zoomTo100: 'Perbesar hingga 100%', - alignLeft: 'Rata Kiri', - distributeVertical: 'Ruang Secara Vertikal', - zoomTo50: 'Perbesar hingga 50%', - alignBottom: 'Rata Bawah', - }, - variableReference: { - conversationVars: 'variabel percakapan', - noVarsForOperation: 'Tidak ada variabel yang tersedia untuk penugasan dengan operasi yang dipilih.', - assignedVarsDescription: 'Variabel yang ditetapkan harus berupa variabel yang dapat ditulis, seperti', - noAssignedVars: 'Tidak ada variabel yang ditetapkan yang tersedia', - noAvailableVars: 'Tidak ada variabel yang tersedia', - }, - panel: { - change: 'Ubah', - checklist: 'Checklist', - about: 'Sekitar', - optional: '(opsional)', - checklistTip: 'Pastikan semua masalah diselesaikan sebelum dipublikasikan', - organizeBlocks: 'Mengatur simpul', - selectNextStep: 'Pilih Langkah Berikutnya', - addNextStep: 'Tambahkan langkah berikutnya dalam alur kerja ini', - minimize: 'Keluar dari Layar Penuh', - nextStep: 'Langkah Berikutnya', - userInputField: 'Bidang Input Pengguna', - checklistResolved: 'Semua masalah terselesaikan', - createdBy: 'Dibuat oleh', - helpLink: 'Docs', - changeBlock: 'Ubah Node', - runThisStep: 'Jalankan langkah ini', - maximize: 'Maksimalkan Kanvas', - optional_and_hidden: '(opsional & tersembunyi)', - goTo: 'Pergi ke', - startNode: 'Mulai Node', - scrollToSelectedNode: 'Gulir ke node yang dipilih', - openWorkflow: 'Buka Alur Kerja', - }, - nodes: { - common: { - memory: { - conversationRoleName: 'Nama Peran Percakapan', - memoryTip: 'Pengaturan memori obrolan', - windowSize: 'Ukuran Jendela', - assistant: 'Awalan asisten', - memory: 'Ingatan', - user: 'Awalan pengguna', - }, - memories: { - builtIn: 'Built-in', - title: 'Kenangan', - tip: 'Memori obrolan', - }, - errorHandle: { - none: { - desc: 'Node akan berhenti berjalan jika pengecualian terjadi dan tidak ditangani', - title: 'Tidak', - }, - defaultValue: { - title: 'Nilai Default', - output: 'Nilai Default Keluaran', - inLog: 'Pengecualian simpul, keluaran sesuai dengan nilai default.', - desc: 'Saat terjadi kesalahan, tentukan konten output statis.', - tip: 'Jika kesalahan, akan mengembalikan nilai di bawah ini.', - }, - failBranch: { - customize: 'Buka kanvas untuk menyesuaikan logika cabang gagal.', - desc: 'Ketika terjadi kesalahan, itu akan mengeksekusi cabang pengecualian', - inLog: 'Pengecualian node, akan secara otomatis mengeksekusi cabang gagal. Output node akan mengembalikan jenis kesalahan dan pesan kesalahan dan meneruskannya ke hilir.', - title: 'Cabang Gagal', - customizeTip: 'Saat cabang gagal diaktifkan, pengecualian yang dilemparkan oleh simpul tidak akan mengakhiri proses. Sebagai gantinya, itu akan secara otomatis mengeksekusi cabang gagal yang telah ditentukan sebelumnya, memungkinkan Anda untuk secara fleksibel memberikan pesan kesalahan, laporan, perbaikan, atau tindakan lewati.', - }, - partialSucceeded: { - tip: 'Ada {{num}} node dalam proses yang berjalan tidak normal, silakan pergi ke tracing untuk memeriksa log.', - }, - title: 'Penanganan Kesalahan', - tip: 'Strategi penanganan pengecualian, dipicu ketika simpul menemukan pengecualian.', - }, - retry: { - retry: 'Pengulangan', - retryFailed: 'Coba lagi gagal', - retrying: 'Mencoba lagi...', - ms: 'Ms', - maxRetries: 'percobaan ulang maks', - retryOnFailure: 'Coba lagi saat gagal', - retryInterval: 'interval coba lagi', - times: 'kali', - retrySuccessful: 'Coba lagi berhasil', - retryTimes: 'Coba ulang {{times}} kali jika gagal', - retryFailedTimes: '{{times}} percobaan gagal', - retries: '{{num}} Percobaan Ulang', - }, - typeSwitch: { - variable: 'Gunakan variabel', - input: 'Nilai masukan', - }, - insertVarTip: 'Sisipkan Variabel', - outputVars: 'Variabel Keluaran', - inputVars: 'Variabel Masukan', - pluginNotInstalled: 'Plugin tidak terpasang', - }, - start: { - outputVars: { - memories: { - type: 'Jenis pesan', - des: 'Riwayat percakapan', - content: 'Konten pesan', - }, - files: 'Daftar file', - query: 'Masukan pengguna', - }, - builtInVar: 'Variabel bawaan', - noVarTip: 'Atur input yang dapat digunakan dalam Alur Kerja', - required: 'Diperlukan', - inputField: 'Bidang Masukan', - }, - end: { - output: { - variable: 'variabel keluaran', - type: 'Jenis keluaran', - }, - type: { - 'plain-text': 'Teks Biasa', - 'structured': 'Terstruktur', - 'none': 'Tidak', - }, - outputs: 'Output', - }, - answer: { - answer: 'Menjawab', - outputVars: 'Variabel Keluaran', - }, - llm: { - roleDescription: { - user: 'Berikan instruksi, kueri, atau input berbasis teks apa pun ke model', - system: 'Berikan instruksi tingkat tinggi untuk percakapan', - assistant: 'Respons model berdasarkan pesan pengguna', - }, - resolution: { - low: 'Rendah', - high: 'Tinggi', - name: 'Resolusi', - }, - outputVars: { - output: 'Hasilkan konten', - reasoning_content: 'Konten penalaran', - usage: 'Informasi Penggunaan Model', - }, - singleRun: { - variable: 'Variabel', - }, - jsonSchema: { - warningTips: { - saveSchema: 'Harap selesaikan pengeditan bidang saat ini sebelum menyimpan skema', - }, - addField: 'Tambahkan Bidang', - resetDefaults: 'Reset', - generatedResult: 'Hasil yang dihasilkan', - regenerate: 'Regenerasi', - generationTip: 'Anda dapat menggunakan bahasa alami untuk membuat Skema JSON dengan cepat.', - showAdvancedOptions: 'Tampilkan opsi lanjutan', - instruction: 'Ajaran', - doc: 'Pelajari output terstruktur lebih lanjut', - descriptionPlaceholder: 'Tambahkan deskripsi', - generateJsonSchema: 'Hasilkan Skema JSON', - fieldNamePlaceholder: 'Nama Bidang', - generate: 'Menghasilkan', - back: 'Belakang', - required: 'Diperlukan', - promptPlaceholder: 'Jelaskan Skema JSON Anda...', - import: 'Impor dari JSON', - apply: 'Berlaku', - generating: 'Menghasilkan Skema JSON...', - resultTip: 'Berikut adalah hasil yang dihasilkan. Jika Anda tidak puas, Anda dapat kembali dan mengubah prompt Anda.', - addChildField: 'Tambahkan Bidang Anak', - stringValidations: 'Validasi String', - promptTooltip: 'Ubah deskripsi teks menjadi struktur Skema JSON standar.', - title: 'Skema Output Terstruktur', - }, - files: 'File', - model: 'pola', - variables: 'Variabel', - prompt: 'cepat', - addMessage: 'Tambahkan Pesan', - vision: 'penglihatan', - sysQueryInUser: 'sys.query dalam pesan pengguna diperlukan', - contextTooltip: 'Anda dapat mengimpor Pengetahuan sebagai konteks', - notSetContextInPromptTip: 'Untuk mengaktifkan fitur konteks, silakan isi variabel konteks di PROMPT.', - context: 'konteks', - reasoningFormat: { - tagged: 'Tetap pikirkan tag', - title: 'Aktifkan pemisahan tag penalaran', - separated: 'Pisahkan tag pemikiran', - tooltip: 'Ekstrak konten dari tag pikir dan simpan di field reasoning_content.', - }, - }, - knowledgeRetrieval: { - outputVars: { - icon: 'Ikon tersegmentasi', - title: 'Judul tersegmentasi', - metadata: 'Metadata lainnya', - output: 'Mengambil data tersegmentasi', - url: 'URL tersegmentasi', - content: 'Konten tersegmentasi', - files: 'File yang diambil', - }, - metadata: { - options: { - disabled: { - title: 'Cacat', - subTitle: 'Tidak mengaktifkan pemfilteran metadata', - }, - automatic: { - desc: 'Secara otomatis menghasilkan kondisi pemfilteran metadata berdasarkan Variabel Kueri', - subTitle: 'Secara otomatis membuat kondisi pemfilteran metadata berdasarkan kueri pengguna', - title: 'Otomatis', - }, - manual: { - title: 'Manual', - subTitle: 'Menambahkan kondisi pemfilteran metadata secara manual', - }, - }, - panel: { - title: 'Kondisi Filter Metadata', - placeholder: 'Masukkan nilai', - search: 'Metadata pencarian', - add: 'Tambahkan Kondisi', - conditions: 'Kondisi', - select: 'Pilih variabel...', - datePlaceholder: 'Pilih waktu...', - }, - tip: 'Pemfilteran metadata adalah proses menggunakan atribut metadata (seperti tag, kategori, atau izin akses) untuk menyempurnakan dan mengontrol pengambilan informasi yang relevan dalam sistem.', - title: 'Pemfilteran Metadata', - }, - knowledge: 'Pengetahuan', - queryVariable: 'Variabel Kueri', - queryText: 'Teks Query', - queryAttachment: 'Cari Gambar', - }, - http: { - outputVars: { - files: 'Daftar File', - body: 'Konten Tanggapan', - headers: 'Daftar Header Respons JSON', - statusCode: 'Kode Status Respons', - }, - authorization: { - 'header': 'Header', - 'basic': 'Dasar', - 'custom': 'Adat', - 'authorization': 'Otorisasi', - 'bearer': 'Pembawa', - 'no-auth': 'Tidak', - 'api-key': 'Kunci API', - 'authorizationType': 'Jenis Otorisasi', - 'api-key-title': 'Kunci API', - 'auth-type': 'Jenis Autentikasi', - }, - timeout: { - title: 'Timeout', - connectLabel: 'Batas Waktu Koneksi', - readPlaceholder: 'Masukkan batas waktu baca dalam hitungan detik', - connectPlaceholder: 'Masukkan batas waktu koneksi dalam hitungan detik', - readLabel: 'Baca Batas Waktu', - writeLabel: 'Tulis Batas Waktu', - writePlaceholder: 'Masukkan batas waktu tulis dalam hitungan detik', - }, - curl: { - placeholder: 'Tempel string cURL di sini', - title: 'Impor dari cURL', - }, - verifySSL: { - title: 'Verifikasi Sertifikat SSL', - warningTooltip: 'Menonaktifkan verifikasi SSL tidak disarankan untuk lingkungan produksi. Ini hanya boleh digunakan dalam pengembangan atau pengujian, karena membuat koneksi rentan terhadap ancaman keamanan seperti serangan man-in-the-middle.', - }, - notStartWithHttp: 'API harus dimulai dengan http:// atau https://', - api: 'API', - key: 'Kunci', - inputVars: 'Variabel Masukan', - value: 'Nilai', - insertVarPlaceholder: 'ketik \'/\' untuk menyisipkan variabel', - headers: 'Header', - binaryFileVariable: 'Variabel File Biner', - body: 'Badan', - keyValueEdit: 'Kunci-Nilai Edit', - bulkEdit: 'Edit Massal', - params: 'Parameter', - apiPlaceholder: 'Masukkan URL, ketik variabel sisipkan \'/\'', - type: 'Jenis', - extractListPlaceholder: 'Masukkan indeks item daftar, ketik variabel sisipkan \'/\'', - }, - code: { - searchDependencies: 'Dependensi Pencarian', - inputVars: 'Variabel Masukan', - advancedDependencies: 'Dependensi Lanjutan', - advancedDependenciesTip: 'Tambahkan beberapa dependensi yang dimuat sebelumnya yang membutuhkan lebih banyak waktu untuk digunakan atau tidak bawaan default di sini', - outputVars: 'Variabel Keluaran', - syncFunctionSignature: 'Sinkronkan tanda tangan fungsi ke kode', - }, - templateTransform: { - outputVars: { - output: 'Konten yang diubah', - }, - code: 'Kode', - inputVars: 'Variabel Masukan', - codeSupportTip: 'Hanya mendukung Jinja2', - }, - ifElse: { - comparisonOperator: { - 'is not': 'tidak', - 'after': 'sesudah', - 'empty': 'kosong', - 'all of': 'Semua', - 'not empty': 'tidak kosong', - 'not null': 'bukan null', - 'null': 'adalah nol', - 'not in': 'tidak di', - 'not contains': 'tidak mengandung', - 'exists': 'Ada', - 'end with': 'akhiri dengan', - 'before': 'sebelum', - 'in': 'di', - 'is': 'sedang', - 'contains': 'Berisi', - 'start with': 'mulai dengan', - 'not exists': 'tidak ada', - }, - optionName: { - localUpload: 'Unggahan Lokal', - image: 'Citra', - audio: 'Audio', - video: 'Video', - doc: 'Doc', - url: 'URL', - }, - conditionNotSetup: 'Kondisi TIDAK diatur', - and: 'dan', - selectVariable: 'Pilih variabel...', - or: 'atau', - else: 'Lain', - addSubVariable: 'Sub Variabel', - addCondition: 'Tambahkan Kondisi', - if: 'Kalau', - operator: 'Operator', - enterValue: 'Masukkan nilai', - select: 'Pilih', - notSetVariable: 'Silakan atur variabel terlebih dahulu', - elseDescription: 'Digunakan untuk menentukan logika yang harus dijalankan ketika kondisi if tidak terpenuhi.', - }, - variableAssigner: { - type: { - number: 'Angka', - array: 'Array', - object: 'Benda', - string: 'Tali', - }, - outputVars: { - varDescribe: 'output {{groupName}}', - }, - noVarTip: 'Tambahkan variabel yang akan ditetapkan', - aggregationGroup: 'Grup Agregasi', - title: 'Tetapkan variabel', - setAssignVariable: 'Mengatur variabel penetapan', - varNotSet: 'Variabel tidak diatur', - outputType: 'Jenis Keluaran', - addGroup: 'Tambahkan Grup', - aggregationGroupTip: 'Mengaktifkan fitur ini memungkinkan agregator variabel untuk menggabungkan beberapa set variabel.', - }, - assigner: { - 'operations': { - 'title': 'Operasi', - 'clear': 'Jelas', - 'extend': 'Memperpanjang', - 'over-write': 'Menimpa', - 'append': 'Menambahkan', - 'remove-first': 'Hapus Pertama', - '*=': '*=', - 'set': 'Mengeset', - 'remove-last': 'Hapus Terakhir', - '-=': '-=', - '/=': '/=', - '+=': ' =', - 'overwrite': 'Menimpa', - }, - 'variable': 'Variabel', - 'writeModeTip': 'Mode tambahkan: Hanya tersedia untuk variabel array.', - 'assignedVarsDescription': 'Variabel yang ditetapkan harus berupa variabel yang dapat ditulis, seperti variabel percakapan.', - 'over-write': 'Menimpa', - 'noVarTip': 'Klik tombol " " untuk menambahkan variabel', - 'noAssignedVars': 'Tidak ada variabel yang ditetapkan yang tersedia', - 'selectAssignedVariable': 'Pilih variabel yang ditetapkan...', - 'writeMode': 'Mode Tulis', - 'variables': 'Variabel', - 'varNotSet': 'Variabel TIDAK Diatur', - 'plus': 'Tambah', - 'assignedVariable': 'Variabel yang Ditetapkan', - 'clear': 'Jelas', - 'setParameter': 'Atur parameter...', - 'append': 'Menambahkan', - 'setVariable': 'Atur Variabel', - }, - tool: { - outputVars: { - files: { - transfer_method: 'Metode transfer. Nilai adalah remote_url atau local_file', - url: 'URL gambar', - title: 'File yang dihasilkan alat', - upload_file_id: 'Unggah id file', - type: 'Jenis dukungan. Sekarang hanya mendukung gambar', - }, - json: 'JSON yang dihasilkan alat', - text: 'Konten yang dihasilkan alat', - }, - insertPlaceholder2: 'Sisipkan variabel', - insertPlaceholder1: 'Ketik atau tekan', - authorize: 'Otorisasi', - settings: 'Pengaturan', - inputVars: 'Variabel Masukan', - }, - questionClassifiers: { - outputVars: { - usage: 'Informasi Penggunaan Model', - className: 'Nama Kelas', - }, - inputVars: 'Variabel Masukan', - topicPlaceholder: 'Tulis nama topik Anda', - addClass: 'Tambahkan Kelas', - classNamePlaceholder: 'Tulis nama kelas Anda', - instruction: 'Ajaran', - advancedSetting: 'Pengaturan Lanjutan', - model: 'pola', - topicName: 'Nama Topik', - instructionTip: 'Masukkan instruksi tambahan untuk membantu pengklasifikasi pertanyaan lebih memahami cara mengkategorikan pertanyaan.', - instructionPlaceholder: 'Tulis instruksi Anda', - class: 'Kelas', - }, - parameterExtractor: { - outputVars: { - errorReason: 'Alasan Kesalahan', - isSuccess: 'Apakah Success.Pada keberhasilan nilainya adalah 1, pada kegagalan nilainya adalah 0.', - usage: 'Informasi Penggunaan Model', - }, - addExtractParameterContent: { - name: 'Nama', - description: 'Deskripsi', - typePlaceholder: 'Ekstrak Jenis Parameter', - descriptionPlaceholder: 'Ekstrak Deskripsi Parameter', - requiredContent: 'Diperlukan hanya digunakan sebagai referensi untuk inferensi model, dan bukan untuk validasi wajib output parameter.', - namePlaceholder: 'Ekstrak Nama Parameter', - type: 'Jenis', - required: 'Diperlukan', - }, - inputVar: 'Variabel Masukan', - instructionTip: 'Masukkan instruksi tambahan untuk membantu ekstraktor parameter memahami cara mengekstrak parameter.', - instruction: 'Ajaran', - extractParameters: 'Ekstrak Parameter', - addExtractParameter: 'Tambahkan Parameter Ekstrak', - reasoningMode: 'Mode Penalaran', - reasoningModeTip: 'Anda dapat memilih mode penalaran yang sesuai berdasarkan kemampuan model untuk menanggapi instruksi untuk pemanggilan fungsi atau perintah.', - importFromTool: 'Impor dari alat', - extractParametersNotSet: 'Ekstrak Parameter tidak diatur', - advancedSetting: 'Pengaturan Lanjutan', - }, - iteration: { - ErrorMethod: { - removeAbnormalOutput: 'Hapus Output Abnormal', - operationTerminated: 'Diakhiri', - continueOnError: 'Lanjutkan pada Kesalahan', - }, - output: 'Variabel Keluaran', - deleteDesc: 'Menghapus simpul iterasi akan menghapus semua simpul turunan', - parallelModeUpper: 'MODE PARALEL', - parallelPanelDesc: 'Dalam mode paralel, tugas dalam iterasi mendukung eksekusi paralel.', - MaxParallelismTitle: 'Paralelisme maksimum', - currentIteration: 'Iterasi Saat Ini', - input: 'Masukan', - errorResponseMethod: 'Metode respons kesalahan', - comma: ',', - parallelModeEnableDesc: 'Dalam mode paralel, tugas dalam iterasi mendukung eksekusi paralel. Anda dapat mengonfigurasi ini di panel properti di sebelah kanan.', - parallelMode: 'Mode Paralel', - MaxParallelismDesc: 'Paralelisme maksimum digunakan untuk mengontrol jumlah tugas yang dijalankan secara bersamaan dalam satu iterasi.', - deleteTitle: 'Hapus Node Iterasi?', - parallelModeEnableTitle: 'Mode Paralel Diaktifkan', - answerNodeWarningDesc: 'Peringatan mode paralel: Simpul jawaban, penetapan variabel percakapan, dan operasi baca/tulis persisten dalam iterasi dapat menyebabkan pengecualian.', - iteration_one: '{{count}} Iterasi', - iteration_other: '{{count}} Iterasi', - error_one: 'Kesalahan {{count}}', - error_other: 'Kesalahan {{count}}', - flattenOutput: 'Ratakan Keluaran', - flattenOutputDesc: 'Saat diaktifkan, jika semua output iterasi berupa array, mereka akan digabung menjadi satu array tunggal. Saat dinonaktifkan, output akan mempertahankan struktur array bersarang.', - }, - loop: { - ErrorMethod: { - continueOnError: 'Lanjutkan pada Kesalahan', - removeAbnormalOutput: 'Hapus Output Abnormal', - operationTerminated: 'Diakhiri', - }, - inputMode: 'Mode Masukan', - deleteDesc: 'Menghapus simpul perulangan akan menghapus semua simpul turunan', - input: 'Masukan', - deleteTitle: 'Hapus Simpul Loop?', - exitConditionTip: 'Simpul loop membutuhkan setidaknya satu kondisi keluar', - variableName: 'Nama Variabel', - loopVariables: 'Variabel Loop', - setLoopVariables: 'Mengatur variabel dalam cakupan loop', - breakConditionTip: 'Hanya variabel dalam loop dengan kondisi penghentian dan variabel percakapan yang dapat direferensikan.', - loopNode: 'Loop Node', - output: 'Variabel Keluaran', - loopMaxCount: 'Jumlah Loop Maksimum', - currentLoop: 'Loop Arus', - breakCondition: 'Kondisi Penghentian Loop', - errorResponseMethod: 'Metode Respons Kesalahan', - comma: ',', - finalLoopVariables: 'Variabel Loop Akhir', - initialLoopVariables: 'Variabel Loop Awal', - loop_one: '{{count}} Loop', - loop_other: '{{count}} Perulangan', - error_one: 'Kesalahan {{count}}', - error_other: 'Kesalahan {{count}}', - loopMaxCountError: 'Harap masukkan jumlah loop maksimum yang valid, mulai dari 1 hingga {{maxCount}}', - currentLoopCount: 'Jumlah putaran saat ini: {{count}}', - totalLoopCount: 'Jumlah total loop: {{count}}', - }, - note: { - editor: { - bold: 'Berani', - enterUrl: 'Masukkan URL...', - medium: 'Sedang', - strikethrough: 'Coret', - openLink: 'Buka', - unlink: 'Membatalkan tautan', - showAuthor: 'Tampilkan Penulis', - large: 'Besar', - placeholder: 'Tulis catatan Anda...', - invalidUrl: 'URL tidak valid', - small: 'Kecil', - italic: 'Miring', - link: 'Tautan', - bulletList: 'Daftar Poin', - }, - addNote: 'Tambahkan Catatan', - }, - docExtractor: { - outputVars: { - text: 'Teks yang diekstrak', - }, - learnMore: 'Pelajari lebih lanjut', - inputVar: 'Variabel Masukan', - supportFileTypes: 'Jenis file yang didukung: {{types}}.', - }, - listFilter: { - outputVars: { - first_record: 'Catatan pertama', - result: 'Hasil filter', - last_record: 'Catatan terakhir', - }, - filterConditionKey: 'Kunci Kondisi Filter', - filterConditionComparisonValue: 'Nilai Kondisi Filter', - filterConditionComparisonOperator: 'Operator Perbandingan Kondisi Filter', - selectVariableKeyPlaceholder: 'Pilih kunci sub variabel', - orderBy: 'Pesan oleh', - desc: 'DESC', - extractsCondition: 'Ekstrak item N', - asc: 'ASC', - limit: 'N Teratas', - inputVar: 'Variabel Masukan', - filterCondition: 'Kondisi Filter', - }, - agent: { - strategy: { - tooltip: 'Strategi Agen yang berbeda menentukan bagaimana sistem merencanakan dan menjalankan panggilan alat multi-langkah', - searchPlaceholder: 'Strategi agen pencarian', - configureTip: 'Silakan konfigurasikan strategi agen.', - shortLabel: 'Strategi', - selectTip: 'Pilih strategi agen', - configureTipDesc: 'Setelah mengonfigurasi strategi agen, node ini akan secara otomatis memuat konfigurasi yang tersisa. Strategi tersebut akan mempengaruhi mekanisme penalaran alat multi-langkah.', - label: 'Strategi Agen', - }, - pluginInstaller: { - installing: 'Menginstal', - install: 'Pasang', - }, - modelNotInMarketplace: { - title: 'Model tidak dipasang', - desc: 'Model ini diinstal dari repositori Lokal atau GitHub. Silakan gunakan setelah pemasangan.', - manageInPlugins: 'Kelola di Plugin', - }, - modelNotSupport: { - title: 'Model yang Tidak Didukung', - descForVersionSwitch: 'Versi plugin yang diinstal tidak menyediakan model ini. Klik untuk beralih versi.', - desc: 'Versi plugin yang diinstal tidak menyediakan model ini.', - }, - modelSelectorTooltips: { - deprecated: 'Model ini tidak digunakan lagi', - }, - outputVars: { - files: { - transfer_method: 'Metode transfer. Nilai adalah remote_url atau local_file', - type: 'Jenis dukungan. Sekarang hanya mendukung gambar', - upload_file_id: 'Unggah id file', - title: 'file yang dihasilkan agen', - url: 'URL gambar', - }, - usage: 'Informasi Penggunaan Model', - text: 'Konten yang dihasilkan agen', - json: 'JSON yang dihasilkan agen', - }, - checkList: { - strategyNotSelected: 'Strategi tidak dipilih', - }, - installPlugin: { - title: 'Instal Plugin', - changelog: 'Log perubahan', - cancel: 'Membatalkan', - install: 'Pasang', - desc: 'Tentang menginstal plugin berikut', - }, - maxIterations: 'Iterasi Maks', - configureModel: 'Mengonfigurasi Model', - model: 'pola', - strategyNotSet: 'Strategi agen tidak ditetapkan', - toolbox: 'Toolbox', - tools: 'Perkakas', - pluginNotInstalledDesc: 'Plugin ini diinstal dari GitHub. Silakan buka Plugins untuk menginstal ulang', - learnMore: 'Pelajari lebih lanjut', - notAuthorized: 'Tidak Berwenang', - strategyNotFoundDescAndSwitchVersion: 'Versi plugin yang diinstal tidak menyediakan strategi ini. Klik untuk beralih versi.', - modelNotInstallTooltip: 'Model ini tidak dipasang', - pluginNotFoundDesc: 'Plugin ini diinstal dari GitHub. Silakan buka Plugins untuk menginstal ulang', - modelNotSelected: 'Model tidak dipilih', - unsupportedStrategy: 'Strategi yang tidak didukung', - pluginNotInstalled: 'Plugin ini tidak diinstal', - clickToViewParameterSchema: 'Klik untuk melihat skema parameter', - linkToPlugin: 'Tautan ke Plugin', - parameterSchema: 'Skema Parameter', - strategyNotFoundDesc: 'Versi plugin yang diinstal tidak menyediakan strategi ini.', - toolNotInstallTooltip: '{{tool}} tidak terpasang', - toolNotAuthorizedTooltip: '{{tool}} Tidak Berwenang', - strategyNotInstallTooltip: '{{strategy}} tidak terpasang', - }, - dataSource: { - add: 'Menambahkan sumber data', - supportedFileFormatsPlaceholder: 'Ekstensi file, e.g. doc', - supportedFileFormats: 'Format file yang didukung', - }, - knowledgeBase: { - chunkStructureTip: { - learnMore: 'Pelajari lebih lanjut', - title: 'Silakan pilih struktur potongan', - message: 'Basis Pengetahuan Dify mendukung tiga struktur pemotongan: Umum, Induk-anak, dan Tanya Jawab. Setiap basis pengetahuan hanya dapat memiliki satu struktur. Output dari simpul sebelumnya harus selaras dengan struktur potongan yang dipilih. Perhatikan bahwa pilihan struktur chunking memengaruhi metode indeks yang tersedia.', - }, - chooseChunkStructure: 'Pilih struktur potongan', - aboutRetrieval: 'tentang metode pengambilan.', - chunkIsRequired: 'Struktur potongan diperlukan', - changeChunkStructure: 'Ubah Struktur Potongan', - retrievalSettingIsRequired: 'Pengaturan pengambilan diperlukan', - indexMethodIsRequired: 'Metode indeks diperlukan', - chunkStructure: 'Struktur Potongan', - chunksInput: 'Potongan', - chunksInputTip: 'Variabel input dari node basis pengetahuan adalah Chunks. Tipe variabel adalah objek dengan Skema JSON tertentu yang harus konsisten dengan struktur chunk yang dipilih.', - chunksVariableIsRequired: 'Variabel Chunks diperlukan', - rerankingModelIsRequired: 'Model reranking diperlukan', - embeddingModelIsRequired: 'Model embedding diperlukan', - rerankingModelIsInvalid: 'Model reranking tidak valid', - embeddingModelIsInvalid: 'Model embedding tidak valid', - }, - triggerPlugin: { - authorized: 'Otorisasi', - notConfigured: 'Belum Dikonfigurasi', - notAuthorized: 'Tidak Diizinkan', - selectSubscription: 'Pilih Langganan', - availableSubscriptions: 'Langganan Tersedia', - addSubscription: 'Tambah Langganan Baru', - removeSubscription: 'Hapus Langganan', - subscriptionRemoved: 'Langganan berhasil dihapus', - error: 'Kesalahan', - configuration: 'Konfigurasi', - remove: 'Hapus', - or: 'ATAU', - useOAuth: 'Gunakan OAuth', - useApiKey: 'Gunakan Kunci API', - authenticationFailed: 'Autentikasi gagal', - authenticationSuccess: 'Autentikasi berhasil', - oauthConfigFailed: 'Konfigurasi OAuth gagal', - configureOAuthClient: 'Konfigurasikan Klien OAuth', - oauthClientDescription: 'Konfigurasikan kredensial klien OAuth untuk mengaktifkan otentikasi', - oauthClientSaved: 'Konfigurasi klien OAuth berhasil disimpan', - configureApiKey: 'Konfigurasikan Kunci API', - apiKeyDescription: 'Konfigurasikan kredensial kunci API untuk otentikasi', - apiKeyConfigured: 'Kunci API berhasil dikonfigurasi', - configurationFailed: 'Konfigurasi gagal', - failedToStart: 'Gagal memulai alur autentikasi', - credentialsVerified: 'Kredensial berhasil diverifikasi', - credentialVerificationFailed: 'Verifikasi kredensial gagal', - verifyAndContinue: 'Verifikasi & Lanjutkan', - configureParameters: 'Konfigurasikan Parameter', - parametersDescription: 'Konfigurasikan parameter dan properti pemicu', - configurationComplete: 'Konfigurasi Selesai', - configurationCompleteDescription: 'Pemicu Anda telah dikonfigurasi dengan sukses', - configurationCompleteMessage: 'Konfigurasi pemicu Anda sekarang telah selesai dan siap digunakan.', - parameters: 'Parameter', - properties: 'Properti', - propertiesDescription: 'Properti konfigurasi tambahan untuk pemicu ini', - noConfigurationRequired: 'Tidak diperlukan pengaturan tambahan untuk pemicu ini.', - subscriptionName: 'Nama Langganan', - subscriptionNameDescription: 'Masukkan nama unik untuk langganan pemicu ini', - subscriptionNamePlaceholder: 'Masukkan nama langganan...', - subscriptionNameRequired: 'Nama langganan wajib diisi', - subscriptionRequired: 'Berlangganan diperlukan', - }, - triggerSchedule: { - title: 'Jadwal', - nodeTitle: 'Pemicu Jadwal', - notConfigured: 'Belum dikonfigurasi', - useCronExpression: 'Gunakan ekspresi cron', - useVisualPicker: 'Gunakan pemilih visual', - frequency: { - label: 'FREKUENSI', - hourly: 'Per jam', - daily: 'Harian', - weekly: 'Mingguan', - monthly: 'Bulanan', - }, - selectFrequency: 'Pilih frekuensi', - frequencyLabel: 'Frekuensi', - nextExecution: 'Eksekusi berikutnya', - weekdays: 'Hari kerja', - time: 'Waktu', - cronExpression: 'Ekspresi Cron', - nextExecutionTime: 'WAKTU EKSEKUSI BERIKUTNYA', - nextExecutionTimes: '5 waktu eksekusi berikutnya', - startTime: 'Waktu Mulai', - executeNow: 'Eksekusi sekarang', - selectDateTime: 'Pilih Tanggal & Waktu', - hours: 'Jam', - minutes: 'Menit', - onMinute: 'Dalam Sejuta', - days: 'Hari', - lastDay: 'Hari terakhir', - lastDayTooltip: 'Tidak semua bulan memiliki 31 hari. Gunakan opsi \'hari terakhir\' untuk memilih hari terakhir setiap bulan.', - mode: 'Mode', - timezone: 'Zona waktu', - visualConfig: 'Konfigurasi Visual', - monthlyDay: 'Hari Bulanan', - executionTime: 'Waktu Eksekusi', - invalidTimezone: 'Zona waktu tidak valid', - invalidCronExpression: 'Ekspresi cron tidak valid', - noValidExecutionTime: 'Tidak dapat menghitung waktu eksekusi yang valid', - executionTimeCalculationError: 'Gagal menghitung waktu eksekusi', - invalidFrequency: 'Frekuensi tidak valid', - invalidStartTime: 'Waktu mulai tidak valid', - startTimeMustBeFuture: 'Waktu mulai harus di masa depan', - invalidTimeFormat: 'Format waktu tidak valid (diharapkan HH:MM AM/PM)', - invalidWeekday: 'Hari kerja tidak valid: {{weekday}}', - invalidMonthlyDay: 'Hari bulanan harus antara 1-31 atau "terakhir"', - invalidOnMinute: 'Menit harus berada di antara 0-59', - invalidExecutionTime: 'Waktu eksekusi tidak valid', - executionTimeMustBeFuture: 'Waktu eksekusi harus di masa depan', - }, - triggerWebhook: { - title: 'Pemicu Webhook', - nodeTitle: '🔗 Pemicu Webhook', - configPlaceholder: 'Konfigurasi pemicu webhook akan diterapkan di sini', - webhookUrl: 'URL Webhook', - webhookUrlPlaceholder: 'Klik buat untuk membuat URL webhook', - generate: 'Hasilkan', - copy: 'Salin', - test: 'Tes', - urlGenerated: 'URL Webhook berhasil dibuat', - urlGenerationFailed: 'Gagal membuat URL webhook', - urlCopied: 'URL disalin ke papan klip', - method: 'Metode', - contentType: 'Jenis Konten', - queryParameters: 'Parameter Kueri', - headerParameters: 'Parameter Header', - requestBodyParameters: 'Parameter Body Permintaan', - parameterName: 'Nama variabel', - varName: 'Nama variabel', - varType: 'Jenis', - varNamePlaceholder: 'Masukkan nama variabel...', - required: 'Diperlukan', - addParameter: 'Tambahkan', - addHeader: 'Tambahkan', - noParameters: 'Tidak ada parameter yang dikonfigurasi', - noQueryParameters: 'Tidak ada parameter kueri yang dikonfigurasi', - noHeaders: 'Tidak ada header yang dikonfigurasi', - noBodyParameters: 'Tidak ada parameter tubuh yang dikonfigurasi', - debugUrlTitle: 'Untuk percobaan, selalu gunakan URL ini', - debugUrlCopy: 'Klik untuk menyalin', - debugUrlCopied: 'Disalin!', - debugUrlPrivateAddressWarning: 'URL ini tampaknya merupakan alamat internal, yang mungkin menyebabkan permintaan webhook gagal. Anda dapat mengubah TRIGGER_URL ke alamat publik.', - errorHandling: 'Penanganan Kesalahan', - errorStrategy: 'Penanganan Kesalahan', - responseConfiguration: 'Tanggapan', - asyncMode: 'Mode Asinkron', - statusCode: 'Kode Status', - responseBody: 'Isi Tanggapan', - responseBodyPlaceholder: 'Tulis isi tanggapan Anda di sini', - headers: 'Header', - validation: { - webhookUrlRequired: 'URL Webhook diperlukan', - invalidParameterType: 'Tipe parameter "{{type}}" tidak valid untuk parameter "{{name}}"', - }, - }, - }, - tracing: { - stopBy: 'Singgah di {{user}}', - }, - versionHistory: { - filter: { - empty: 'Tidak ada riwayat versi yang cocok ditemukan', - onlyYours: 'Hanya milik Anda', - reset: 'Atur Ulang Filter', - onlyShowNamedVersions: 'Hanya tampilkan versi bernama', - all: 'Semua', - }, - editField: { - releaseNotes: 'Catatan Rilis', - title: 'Titel', - titleLengthLimit: 'Judul tidak boleh melebihi {{limit}} karakter', - releaseNotesLengthLimit: 'Catatan rilis tidak boleh melebihi {{limit}} karakter', - }, - action: { - copyIdSuccess: 'ID disalin ke clipboard', - deleteFailure: 'Gagal menghapus versi', - updateSuccess: 'Versi diperbarui', - updateFailure: 'Gagal memperbarui versi', - restoreSuccess: 'Versi dipulihkan', - deleteSuccess: 'Versi dihapus', - restoreFailure: 'Gagal memulihkan versi', - }, - copyId: 'Salin ID', - latest: 'Terbaru', - nameThisVersion: 'Beri nama versi ini', - restorationTip: 'Setelah pemulihan versi, draf saat ini akan ditimpa.', - releaseNotesPlaceholder: 'Menjelaskan apa yang berubah', - deletionTip: 'Penghapusan tidak dapat diubah, harap konfirmasi.', - currentDraft: 'Draf Saat Ini', - editVersionInfo: 'Mengedit info versi', - title: 'Versi', - defaultName: 'Versi Tanpa Judul', - }, - debug: { - noData: { - description: 'Hasil putaran terakhir akan ditampilkan di sini', - runThisNode: 'Jalankan simpul ini', - }, - variableInspect: { - trigger: { - stop: 'Berhenti lari', - cached: 'Melihat variabel yang di-cache', - running: 'Status berjalan caching', - normal: 'Inspeksi Variabel', - clear: 'Jelas', - }, - systemNode: 'Sistem', - chatNode: 'Percakapan', - clearAll: 'Setel ulang semua', - edited: 'Diedit', - envNode: 'Lingkungan', - title: 'Inspeksi Variabel', - clearNode: 'Hapus variabel cache', - view: 'Lihat log', - emptyLink: 'Pelajari lebih lanjut', - reset: 'Atur ulang ke nilai eksekusi terakhir', - resetConversationVar: 'Mengatur ulang variabel percakapan ke nilai default', - emptyTip: 'Setelah melangkah melalui simpul di kanvas atau menjalankan simpul langkah demi langkah, Anda dapat melihat nilai variabel simpul saat ini di Inspeksi Variabel', - export: 'ekspor', - largeDataNoExport: 'Data besar - hanya pratinjau sebagian', - exportToolTip: 'Ekspor Variabel sebagai File', - largeData: 'Data besar, pratinjau baca-saja. Ekspor untuk melihat semua.', - listening: { - title: 'Mendengarkan peristiwa dari pemicu...', - tip: 'Sekarang Anda dapat mensimulasikan pemicu acara dengan mengirim permintaan uji ke endpoint HTTP {{nodeName}} atau menggunakannya sebagai URL callback untuk debugging acara secara langsung. Semua output dapat dilihat langsung di Variable Inspector.', - tipPlugin: 'Sekarang Anda dapat membuat acara di {{- pluginName}}, dan mengambil hasil dari acara ini di Inspektur Variabel.', - tipSchedule: 'Mendengarkan acara dari pemicu jadwal.\nJalankan berikutnya yang dijadwalkan: {{nextTriggerTime}}', - tipFallback: 'Tunggu event pemicu yang masuk. Output akan muncul di sini.', - defaultNodeName: 'pemicu ini', - defaultPluginName: 'pemicu plugin ini', - defaultScheduleTime: 'Belum dikonfigurasi', - selectedTriggers: 'pemicu yang dipilih', - stopButton: 'Berhenti', - }, - }, - relations: { - noDependents: 'Tidak ada tanggungan', - dependentsDescription: 'Node yang mengandalkan node ini', - noDependencies: 'Tidak ada dependensi', - dependencies: 'Dependensi', - dependenciesDescription: 'Node yang diandalkan oleh node ini', - dependents: 'Tanggungan', - }, - settingsTab: 'Pengaturan', - copyLastRunError: 'Gagal menyalin input eksekusi terakhir', - copyLastRun: 'Salin Eksekusi Terakhir', - noMatchingInputsFound: 'Tidak ada input yang cocok yang ditemukan dari eksekusi terakhir', - lastRunTab: 'Lari Terakhir', - relationsTab: 'Hubungan', - lastOutput: 'Keluaran Terakhir', - noLastRunFound: 'Tidak ada eksekusi sebelumnya ditemukan', - lastRunInputsCopied: '{{count}} input yang disalin dari proses terakhir', - }, - sidebar: { - exportWarning: 'Ekspor Versi Tersimpan Saat Ini', - exportWarningDesc: 'Ini akan mengekspor versi terkini dari alur kerja Anda yang telah disimpan. Jika Anda memiliki perubahan yang belum disimpan di editor, harap simpan terlebih dahulu dengan menggunakan opsi ekspor di kanvas alur kerja.', - }, - publishLimit: { - startNodeTitlePrefix: 'Tingkatkan ke', - startNodeTitleSuffix: 'buka kunci pemicu tak terbatas per alur kerja', - startNodeDesc: 'Anda telah mencapai batas 2 pemicu per alur kerja untuk paket ini. Tingkatkan paket untuk mempublikasikan alur kerja ini.', - }, - error: { - startNodeRequired: 'Silakan tambahkan node awal terlebih dahulu sebelum {{operation}}', - operations: { - connectingNodes: 'menghubungkan node', - addingNodes: 'menambahkan node', - modifyingWorkflow: 'memodifikasi alur kerja', - updatingWorkflow: 'memperbarui alur kerja', - }, - }, - customWebhook: 'Webhook Kustom', - difyTeam: 'Tim Dify', - triggerStatus: { - enabled: 'PEICU', - disabled: 'PEICU • DINONAKTIFKAN', - }, - entryNodeStatus: { - enabled: 'MULAI', - disabled: 'MULAI • NONAKTIF', - }, - onboarding: { - title: 'Pilih node awal untuk memulai', - description: 'Node awal yang berbeda memiliki kemampuan yang berbeda. Jangan khawatir, kamu selalu bisa mengubahnya nanti.', - userInputFull: 'Input Pengguna (node awal asli)', - userInputDescription: 'Node awal yang memungkinkan pengaturan variabel input pengguna, dengan aplikasi web, API layanan, server MCP, dan alur kerja sebagai kemampuan alat.', - trigger: 'Pemicu', - triggerDescription: 'Pemicu dapat berfungsi sebagai node awal dari alur kerja, seperti tugas terjadwal, webhook kustom, atau integrasi dengan aplikasi lain.', - back: 'Kembali', - learnMore: 'Pelajari lebih lanjut', - aboutStartNode: 'tentang node awal.', - escTip: { - press: 'Tekan', - key: 'esc', - toDismiss: 'memberhentikan', - }, - }, -} - -export default translation diff --git a/web/i18n/it-IT/app-annotation.json b/web/i18n/it-IT/app-annotation.json new file mode 100644 index 0000000000..8eef6382eb --- /dev/null +++ b/web/i18n/it-IT/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "Annotazioni", + "name": "Risposta Annotazione", + "editBy": "Risposta modificata da {{author}}", + "noData": { + "title": "Nessuna annotazione", + "description": "Puoi modificare le annotazioni durante il debug dell'app o importare annotazioni in blocco qui per una risposta di alta qualità." + }, + "table": { + "header": { + "question": "domanda", + "answer": "risposta", + "createdAt": "creato il", + "hits": "hit", + "actions": "azioni", + "addAnnotation": "Aggiungi Annotazione", + "bulkImport": "Importazione Bulk", + "bulkExport": "Esportazione Bulk", + "clearAll": "Cancella Tutte le Annotazioni", + "clearAllConfirm": "Eliminare tutte le annotazioni?" + } + }, + "editModal": { + "title": "Modifica Risposta Annotazione", + "queryName": "Query Utente", + "answerName": "Bot Narratore", + "yourAnswer": "La tua Risposta", + "answerPlaceholder": "Scrivi qui la tua risposta", + "yourQuery": "La tua Query", + "queryPlaceholder": "Scrivi qui la tua query", + "removeThisCache": "Rimuovi questa Annotazione", + "createdAt": "Creato il" + }, + "addModal": { + "title": "Aggiungi Risposta Annotazione", + "queryName": "Domanda", + "answerName": "Risposta", + "answerPlaceholder": "Scrivi qui la risposta", + "queryPlaceholder": "Scrivi qui la query", + "createNext": "Aggiungi un'altra risposta annotata" + }, + "batchModal": { + "title": "Importazione Bulk", + "csvUploadTitle": "Trascina e rilascia il tuo file CSV qui, oppure ", + "browse": "sfoglia", + "tip": "Il file CSV deve conformarsi alla seguente struttura:", + "question": "domanda", + "answer": "risposta", + "contentTitle": "contenuto chunk", + "content": "contenuto", + "template": "Scarica il modello qui", + "cancel": "Annulla", + "run": "Esegui Batch", + "runError": "Errore nell'esecuzione del batch", + "processing": "Elaborazione batch in corso", + "completed": "Importazione completata", + "error": "Errore di Importazione", + "ok": "OK" + }, + "errorMessage": { + "answerRequired": "La risposta è obbligatoria", + "queryRequired": "La domanda è obbligatoria" + }, + "viewModal": { + "annotatedResponse": "Risposta Annotazione", + "hitHistory": "Storico Hit", + "hit": "Hit", + "hits": "Hit", + "noHitHistory": "Nessuno storico hit" + }, + "hitHistoryTable": { + "query": "Query", + "match": "Corrispondenza", + "response": "Risposta", + "source": "Fonte", + "score": "Punteggio", + "time": "Ora" + }, + "initSetup": { + "title": "Configurazione Iniziale Risposta Annotazione", + "configTitle": "Configurazione Risposta Annotazione", + "confirmBtn": "Salva & Abilita", + "configConfirmBtn": "Salva" + }, + "embeddingModelSwitchTip": "Modello di vettorizzazione del testo di annotazione, il cambio di modello comporterà una nuova integrazione, comportando costi aggiuntivi.", + "list": { + "delete": { + "title": "Sei sicuro di voler eliminare?" + } + }, + "batchAction": { + "delete": "Elimina", + "cancel": "Annulla", + "selected": "selezionato" + } +} diff --git a/web/i18n/it-IT/app-annotation.ts b/web/i18n/it-IT/app-annotation.ts deleted file mode 100644 index 288068c78e..0000000000 --- a/web/i18n/it-IT/app-annotation.ts +++ /dev/null @@ -1,100 +0,0 @@ -const translation = { - title: 'Annotazioni', - name: 'Risposta Annotazione', - editBy: 'Risposta modificata da {{author}}', - noData: { - title: 'Nessuna annotazione', - description: - 'Puoi modificare le annotazioni durante il debug dell\'app o importare annotazioni in blocco qui per una risposta di alta qualità.', - }, - table: { - header: { - question: 'domanda', - answer: 'risposta', - createdAt: 'creato il', - hits: 'hit', - actions: 'azioni', - addAnnotation: 'Aggiungi Annotazione', - bulkImport: 'Importazione Bulk', - bulkExport: 'Esportazione Bulk', - clearAll: 'Cancella Tutte le Annotazioni', - clearAllConfirm: 'Eliminare tutte le annotazioni?', - }, - }, - editModal: { - title: 'Modifica Risposta Annotazione', - queryName: 'Query Utente', - answerName: 'Bot Narratore', - yourAnswer: 'La tua Risposta', - answerPlaceholder: 'Scrivi qui la tua risposta', - yourQuery: 'La tua Query', - queryPlaceholder: 'Scrivi qui la tua query', - removeThisCache: 'Rimuovi questa Annotazione', - createdAt: 'Creato il', - }, - addModal: { - title: 'Aggiungi Risposta Annotazione', - queryName: 'Domanda', - answerName: 'Risposta', - answerPlaceholder: 'Scrivi qui la risposta', - queryPlaceholder: 'Scrivi qui la query', - createNext: 'Aggiungi un\'altra risposta annotata', - }, - batchModal: { - title: 'Importazione Bulk', - csvUploadTitle: 'Trascina e rilascia il tuo file CSV qui, oppure ', - browse: 'sfoglia', - tip: 'Il file CSV deve conformarsi alla seguente struttura:', - question: 'domanda', - answer: 'risposta', - contentTitle: 'contenuto chunk', - content: 'contenuto', - template: 'Scarica il modello qui', - cancel: 'Annulla', - run: 'Esegui Batch', - runError: 'Errore nell\'esecuzione del batch', - processing: 'Elaborazione batch in corso', - completed: 'Importazione completata', - error: 'Errore di Importazione', - ok: 'OK', - }, - errorMessage: { - answerRequired: 'La risposta è obbligatoria', - queryRequired: 'La domanda è obbligatoria', - }, - viewModal: { - annotatedResponse: 'Risposta Annotazione', - hitHistory: 'Storico Hit', - hit: 'Hit', - hits: 'Hit', - noHitHistory: 'Nessuno storico hit', - }, - hitHistoryTable: { - query: 'Query', - match: 'Corrispondenza', - response: 'Risposta', - source: 'Fonte', - score: 'Punteggio', - time: 'Ora', - }, - initSetup: { - title: 'Configurazione Iniziale Risposta Annotazione', - configTitle: 'Configurazione Risposta Annotazione', - confirmBtn: 'Salva & Abilita', - configConfirmBtn: 'Salva', - }, - embeddingModelSwitchTip: - 'Modello di vettorizzazione del testo di annotazione, il cambio di modello comporterà una nuova integrazione, comportando costi aggiuntivi.', - list: { - delete: { - title: 'Sei sicuro di voler eliminare?', - }, - }, - batchAction: { - delete: 'Elimina', - cancel: 'Annulla', - selected: 'selezionato', - }, -} - -export default translation diff --git a/web/i18n/it-IT/app-api.json b/web/i18n/it-IT/app-api.json new file mode 100644 index 0000000000..9ecf323622 --- /dev/null +++ b/web/i18n/it-IT/app-api.json @@ -0,0 +1,83 @@ +{ + "apiServer": "Server API", + "apiKey": "Chiave API", + "status": "Stato", + "disabled": "Disabilitato", + "ok": "In Servizio", + "copy": "Copia", + "copied": "Copiato", + "play": "Riproduci", + "pause": "Pausa", + "playing": "In Riproduzione", + "loading": "Caricamento", + "merMaid": { + "rerender": "Rifare il rendering" + }, + "never": "Mai", + "apiKeyModal": { + "apiSecretKey": "Chiave segreta API", + "apiSecretKeyTips": "Per prevenire l'abuso dell'API, proteggi la tua chiave API. Evita di usarla come testo semplice nel codice front-end. :)", + "createNewSecretKey": "Crea nuova chiave segreta", + "secretKey": "Chiave Segreta", + "created": "CREATA", + "lastUsed": "ULTIMO UTILIZZO", + "generateTips": "Conserva questa chiave in un luogo sicuro e accessibile." + }, + "actionMsg": { + "deleteConfirmTitle": "Eliminare questa chiave segreta?", + "deleteConfirmTips": "Questa azione non può essere annullata.", + "ok": "OK" + }, + "completionMode": { + "title": "API dell'App di Completamento", + "info": "Per una generazione di testo di alta qualità, come articoli, riassunti e traduzioni, utilizza l'API completion-messages con l'input dell'utente. La generazione del testo si basa sui parametri del modello e sui modelli di prompt impostati in Dify Prompt Engineering.", + "createCompletionApi": "Crea Messaggio di Completamento", + "createCompletionApiTip": "Crea un Messaggio di Completamento per supportare la modalità domanda e risposta.", + "inputsTips": "(Opzionale) Fornisci campi di input utente come coppie chiave-valore, corrispondenti alle variabili in Prompt Eng. La chiave è il nome della variabile, il Valore è il valore del parametro. Se il tipo di campo è Select, il Valore inviato deve essere una delle scelte preimpostate.", + "queryTips": "Contenuto del testo di input dell'utente.", + "blocking": "Tipo bloccante, in attesa che l'esecuzione sia completata e restituisca i risultati. (Le richieste possono essere interrotte se il processo è lungo)", + "streaming": "restituzioni in streaming. Implementazione della restituzione in streaming basata su SSE (Server-Sent Events).", + "messageFeedbackApi": "Feedback sul messaggio (mi piace)", + "messageFeedbackApiTip": "Valuta i messaggi ricevuti per conto degli utenti finali con mi piace o non mi piace. Questi dati sono visibili nella pagina Log & Annotazioni e utilizzati per futuri affinamenti del modello.", + "messageIDTip": "ID del Messaggio", + "ratingTip": "mi piace o non mi piace, null è annulla", + "parametersApi": "Ottenere informazioni sui parametri dell'applicazione", + "parametersApiTip": "Recupera i parametri di input configurati, inclusi nomi delle variabili, nomi dei campi, tipi e valori predefiniti. Tipicamente utilizzato per visualizzare questi campi in un modulo o per riempire i valori predefiniti dopo il caricamento del client." + }, + "chatMode": { + "title": "API dell'App di Chat", + "info": "Per app conversazionali versatili utilizzando un formato Q&A, chiama l'API chat-messages per avviare il dialogo. Mantieni conversazioni in corso passando l'conversation_id restituito. I parametri di risposta e i modelli dipendono dalle impostazioni di Dify Prompt Eng.", + "createChatApi": "Crea messaggio di chat", + "createChatApiTip": "Crea un nuovo messaggio di conversazione o continua un dialogo esistente.", + "inputsTips": "(Opzionale) Fornisci campi di input utente come coppie chiave-valore, corrispondenti alle variabili in Prompt Eng. La chiave è il nome della variabile, il Valore è il valore del parametro. Se il tipo di campo è Select, il Valore inviato deve essere una delle scelte preimpostate.", + "queryTips": "Contenuto della domanda di input dell'utente", + "blocking": "Tipo bloccante, in attesa che l'esecuzione sia completata e restituisca i risultati. (Le richieste possono essere interrotte se il processo è lungo)", + "streaming": "restituzioni in streaming. Implementazione della restituzione in streaming basata su SSE (Server-Sent Events).", + "conversationIdTip": "(Opzionale) ID della Conversazione: lasciare vuoto per la prima conversazione; passare l'conversation_id dal contesto per continuare il dialogo.", + "messageFeedbackApi": "Feedback terminale del messaggio dell'utente, mi piace", + "messageFeedbackApiTip": "Valuta i messaggi ricevuti per conto degli utenti finali con mi piace o non mi piace. Questi dati sono visibili nella pagina Log & Annotazioni e utilizzati per futuri affinamenti del modello.", + "messageIDTip": "ID del Messaggio", + "ratingTip": "mi piace o non mi piace, null è annulla", + "chatMsgHistoryApi": "Ottieni la cronologia dei messaggi della chat", + "chatMsgHistoryApiTip": "La prima pagina restituisce l'ultimo `limite` barra, che è in ordine inverso.", + "chatMsgHistoryConversationIdTip": "ID della Conversazione", + "chatMsgHistoryFirstId": "ID del primo record di chat nella pagina corrente. L'impostazione predefinita è nessuna.", + "chatMsgHistoryLimit": "Quante chat vengono restituite in una richiesta", + "conversationsListApi": "Ottieni l'elenco delle conversazioni", + "conversationsListApiTip": "Ottiene l'elenco delle sessioni dell'utente corrente. Per impostazione predefinita, vengono restituite le ultime 20 sessioni.", + "conversationsListFirstIdTip": "ID dell'ultimo record nella pagina corrente, predefinito nessuno.", + "conversationsListLimitTip": "Quante chat vengono restituite in una richiesta", + "conversationRenamingApi": "Rinomina conversazione", + "conversationRenamingApiTip": "Rinomina conversazioni; il nome viene visualizzato nelle interfacce client multi-sessione.", + "conversationRenamingNameTip": "Nuovo nome", + "parametersApi": "Ottenere informazioni sui parametri dell'applicazione", + "parametersApiTip": "Recupera i parametri di input configurati, inclusi nomi delle variabili, nomi dei campi, tipi e valori predefiniti. Tipicamente utilizzato per visualizzare questi campi in un modulo o per riempire i valori predefiniti dopo il caricamento del client." + }, + "develop": { + "requestBody": "Corpo della Richiesta", + "pathParams": "Parametri del Percorso", + "query": "Query", + "toc": "Contenuto" + }, + "regenerate": "Rigenerare" +} diff --git a/web/i18n/it-IT/app-api.ts b/web/i18n/it-IT/app-api.ts deleted file mode 100644 index c54a93eb02..0000000000 --- a/web/i18n/it-IT/app-api.ts +++ /dev/null @@ -1,106 +0,0 @@ -const translation = { - apiServer: 'Server API', - apiKey: 'Chiave API', - status: 'Stato', - disabled: 'Disabilitato', - ok: 'In Servizio', - copy: 'Copia', - copied: 'Copiato', - play: 'Riproduci', - pause: 'Pausa', - playing: 'In Riproduzione', - loading: 'Caricamento', - merMaid: { - rerender: 'Rifare il rendering', - }, - never: 'Mai', - apiKeyModal: { - apiSecretKey: 'Chiave segreta API', - apiSecretKeyTips: - 'Per prevenire l\'abuso dell\'API, proteggi la tua chiave API. Evita di usarla come testo semplice nel codice front-end. :)', - createNewSecretKey: 'Crea nuova chiave segreta', - secretKey: 'Chiave Segreta', - created: 'CREATA', - lastUsed: 'ULTIMO UTILIZZO', - generateTips: 'Conserva questa chiave in un luogo sicuro e accessibile.', - }, - actionMsg: { - deleteConfirmTitle: 'Eliminare questa chiave segreta?', - deleteConfirmTips: 'Questa azione non può essere annullata.', - ok: 'OK', - }, - completionMode: { - title: 'API dell\'App di Completamento', - info: 'Per una generazione di testo di alta qualità, come articoli, riassunti e traduzioni, utilizza l\'API completion-messages con l\'input dell\'utente. La generazione del testo si basa sui parametri del modello e sui modelli di prompt impostati in Dify Prompt Engineering.', - createCompletionApi: 'Crea Messaggio di Completamento', - createCompletionApiTip: - 'Crea un Messaggio di Completamento per supportare la modalità domanda e risposta.', - inputsTips: - '(Opzionale) Fornisci campi di input utente come coppie chiave-valore, corrispondenti alle variabili in Prompt Eng. La chiave è il nome della variabile, il Valore è il valore del parametro. Se il tipo di campo è Select, il Valore inviato deve essere una delle scelte preimpostate.', - queryTips: 'Contenuto del testo di input dell\'utente.', - blocking: - 'Tipo bloccante, in attesa che l\'esecuzione sia completata e restituisca i risultati. (Le richieste possono essere interrotte se il processo è lungo)', - streaming: - 'restituzioni in streaming. Implementazione della restituzione in streaming basata su SSE (Server-Sent Events).', - messageFeedbackApi: 'Feedback sul messaggio (mi piace)', - messageFeedbackApiTip: - 'Valuta i messaggi ricevuti per conto degli utenti finali con mi piace o non mi piace. Questi dati sono visibili nella pagina Log & Annotazioni e utilizzati per futuri affinamenti del modello.', - messageIDTip: 'ID del Messaggio', - ratingTip: 'mi piace o non mi piace, null è annulla', - parametersApi: 'Ottenere informazioni sui parametri dell\'applicazione', - parametersApiTip: - 'Recupera i parametri di input configurati, inclusi nomi delle variabili, nomi dei campi, tipi e valori predefiniti. Tipicamente utilizzato per visualizzare questi campi in un modulo o per riempire i valori predefiniti dopo il caricamento del client.', - }, - chatMode: { - title: 'API dell\'App di Chat', - info: 'Per app conversazionali versatili utilizzando un formato Q&A, chiama l\'API chat-messages per avviare il dialogo. Mantieni conversazioni in corso passando l\'conversation_id restituito. I parametri di risposta e i modelli dipendono dalle impostazioni di Dify Prompt Eng.', - createChatApi: 'Crea messaggio di chat', - createChatApiTip: - 'Crea un nuovo messaggio di conversazione o continua un dialogo esistente.', - inputsTips: - '(Opzionale) Fornisci campi di input utente come coppie chiave-valore, corrispondenti alle variabili in Prompt Eng. La chiave è il nome della variabile, il Valore è il valore del parametro. Se il tipo di campo è Select, il Valore inviato deve essere una delle scelte preimpostate.', - queryTips: 'Contenuto della domanda di input dell\'utente', - blocking: - 'Tipo bloccante, in attesa che l\'esecuzione sia completata e restituisca i risultati. (Le richieste possono essere interrotte se il processo è lungo)', - streaming: - 'restituzioni in streaming. Implementazione della restituzione in streaming basata su SSE (Server-Sent Events).', - conversationIdTip: - '(Opzionale) ID della Conversazione: lasciare vuoto per la prima conversazione; passare l\'conversation_id dal contesto per continuare il dialogo.', - messageFeedbackApi: - 'Feedback terminale del messaggio dell\'utente, mi piace', - messageFeedbackApiTip: - 'Valuta i messaggi ricevuti per conto degli utenti finali con mi piace o non mi piace. Questi dati sono visibili nella pagina Log & Annotazioni e utilizzati per futuri affinamenti del modello.', - messageIDTip: 'ID del Messaggio', - ratingTip: 'mi piace o non mi piace, null è annulla', - chatMsgHistoryApi: 'Ottieni la cronologia dei messaggi della chat', - chatMsgHistoryApiTip: - 'La prima pagina restituisce l\'ultimo `limite` barra, che è in ordine inverso.', - chatMsgHistoryConversationIdTip: 'ID della Conversazione', - chatMsgHistoryFirstId: - 'ID del primo record di chat nella pagina corrente. L\'impostazione predefinita è nessuna.', - chatMsgHistoryLimit: 'Quante chat vengono restituite in una richiesta', - conversationsListApi: 'Ottieni l\'elenco delle conversazioni', - conversationsListApiTip: - 'Ottiene l\'elenco delle sessioni dell\'utente corrente. Per impostazione predefinita, vengono restituite le ultime 20 sessioni.', - conversationsListFirstIdTip: - 'ID dell\'ultimo record nella pagina corrente, predefinito nessuno.', - conversationsListLimitTip: - 'Quante chat vengono restituite in una richiesta', - conversationRenamingApi: 'Rinomina conversazione', - conversationRenamingApiTip: - 'Rinomina conversazioni; il nome viene visualizzato nelle interfacce client multi-sessione.', - conversationRenamingNameTip: 'Nuovo nome', - parametersApi: 'Ottenere informazioni sui parametri dell\'applicazione', - parametersApiTip: - 'Recupera i parametri di input configurati, inclusi nomi delle variabili, nomi dei campi, tipi e valori predefiniti. Tipicamente utilizzato per visualizzare questi campi in un modulo o per riempire i valori predefiniti dopo il caricamento del client.', - }, - develop: { - requestBody: 'Corpo della Richiesta', - pathParams: 'Parametri del Percorso', - query: 'Query', - toc: 'Contenuto', - }, - regenerate: 'Rigenerare', -} - -export default translation diff --git a/web/i18n/it-IT/app-debug.json b/web/i18n/it-IT/app-debug.json new file mode 100644 index 0000000000..1fa0abad67 --- /dev/null +++ b/web/i18n/it-IT/app-debug.json @@ -0,0 +1,563 @@ +{ + "pageTitle": { + "line1": "PROMPT", + "line2": "Engineering" + }, + "orchestrate": "Orchestra", + "promptMode": { + "simple": "Passa alla modalità esperto per modificare tutto il PROMPT", + "advanced": "Modalità esperto", + "switchBack": "Torna indietro", + "advancedWarning": { + "title": "Sei passato alla modalità esperto e una volta modificato il PROMPT, NON potrai tornare alla modalità base.", + "description": "In modalità esperto, puoi modificare tutto il PROMPT.", + "learnMore": "Scopri di più", + "ok": "OK" + }, + "operation": { + "addMessage": "Aggiungi messaggio" + }, + "contextMissing": "Componente del contesto mancante, l'efficacia del prompt potrebbe non essere buona." + }, + "operation": { + "applyConfig": "Pubblica", + "resetConfig": "Ripristina", + "debugConfig": "Debug", + "addFeature": "Aggiungi funzione", + "automatic": "Automatico", + "stopResponding": "Interrompi la risposta", + "agree": "mi piace", + "disagree": "non mi piace", + "cancelAgree": "Annulla mi piace", + "cancelDisagree": "Annulla non mi piace", + "userAction": "Azione utente" + }, + "notSetAPIKey": { + "title": "La chiave del provider LLM non è stata impostata", + "trailFinished": "Periodo di prova terminato", + "description": "La chiave del provider LLM non è stata impostata e deve essere impostata prima del debug.", + "settingBtn": "Vai alle impostazioni" + }, + "trailUseGPT4Info": { + "title": "Non supporta gpt-4 adesso", + "description": "Per utilizzare gpt-4, per favore imposta la chiave API." + }, + "feature": { + "groupChat": { + "title": "Migliora chat", + "description": "Aggiungere impostazioni pre-conversazione per le app può migliorare l'esperienza utente." + }, + "groupExperience": { + "title": "Migliora esperienza" + }, + "conversationOpener": { + "title": "Iniziatore di conversazione", + "description": "In un'app di chat, la prima frase che l'IA pronuncia attivamente all'utente viene solitamente usata come benvenuto." + }, + "suggestedQuestionsAfterAnswer": { + "title": "Follow-up", + "description": "Impostare suggerimenti per le prossime domande può offrire agli utenti una chat migliore.", + "resDes": "3 suggerimenti per la prossima domanda dell'utente.", + "tryToAsk": "Prova a chiedere" + }, + "moreLikeThis": { + "title": "Altri simili", + "description": "Genera più testi contemporaneamente, poi modifica e continua a generare", + "generateNumTip": "Numero di ogni generazione", + "tip": "L'utilizzo di questa funzione comporterà un costo aggiuntivo di token" + }, + "speechToText": { + "title": "Da voce a testo", + "description": "Una volta abilitato, puoi usare l'input vocale.", + "resDes": "L'input vocale è abilitato" + }, + "textToSpeech": { + "title": "Da testo a voce", + "description": "Una volta abilitato, il testo può essere convertito in voce.", + "resDes": "Il testo in audio è abilitato" + }, + "citation": { + "title": "Citazioni e attribuzioni", + "description": "Una volta abilitato, mostra il documento sorgente e la sezione attribuita del contenuto generato.", + "resDes": "Citazioni e attribuzioni sono abilitate" + }, + "annotation": { + "title": "Risposta annotata", + "description": "Puoi aggiungere manualmente una risposta di alta qualità alla cache per una corrispondenza prioritaria con domande utente simili.", + "resDes": "Risposta annotata è abilitata", + "scoreThreshold": { + "title": "Soglia di punteggio", + "description": "Utilizzata per impostare la soglia di somiglianza per la risposta annotata.", + "easyMatch": "Corrispondenza facile", + "accurateMatch": "Corrispondenza accurata" + }, + "matchVariable": { + "title": "Variabile di corrispondenza", + "choosePlaceholder": "Scegli la variabile di corrispondenza" + }, + "cacheManagement": "Annotazioni", + "cached": "Annotato", + "remove": "Rimuovi", + "removeConfirm": "Eliminare questa annotazione?", + "add": "Aggiungi annotazione", + "edit": "Modifica annotazione" + }, + "dataSet": { + "title": "Contesto", + "noData": "Puoi importare Conoscenza come contesto", + "selectTitle": "Seleziona Conoscenza di riferimento", + "selected": "Conoscenza selezionata", + "noDataSet": "Nessuna Conoscenza trovata", + "toCreate": "Vai a creare", + "notSupportSelectMulti": "Attualmente supporta solo una Conoscenza", + "queryVariable": { + "title": "Variabile di query", + "tip": "Questa variabile verrà utilizzata come input di query per il recupero del contesto, ottenendo informazioni contestuali relative all'input di questa variabile.", + "choosePlaceholder": "Scegli la variabile di query", + "noVar": "Nessuna variabile", + "noVarTip": "per favore crea una variabile nella sezione Variabili", + "unableToQueryDataSet": "Impossibile interrogare la Conoscenza", + "unableToQueryDataSetTip": "Impossibile interrogare la Conoscenza correttamente, per favore scegli una variabile di query nel contesto.", + "ok": "OK", + "contextVarNotEmpty": "La variabile di query del contesto non può essere vuota", + "deleteContextVarTitle": "Eliminare la variabile “{{varName}}”?", + "deleteContextVarTip": "Questa variabile è stata impostata come variabile di query del contesto, rimuoverla influenzerà l'uso normale della Conoscenza. Se hai ancora bisogno di eliminarla, per favore riselezionala nella sezione del contesto." + } + }, + "tools": { + "title": "Strumenti", + "tips": "Gli strumenti forniscono un metodo di chiamata API standard, prendendo input dell'utente o variabili come parametri di richiesta per interrogare dati esterni come contesto.", + "toolsInUse": "{{count}} strumenti in uso", + "modal": { + "title": "Strumento", + "toolType": { + "title": "Tipo di strumento", + "placeholder": "Per favore seleziona il tipo di strumento" + }, + "name": { + "title": "Nome", + "placeholder": "Per favore inserisci il nome" + }, + "variableName": { + "title": "Nome della variabile", + "placeholder": "Per favore inserisci il nome della variabile" + } + } + }, + "conversationHistory": { + "title": "Cronologia della conversazione", + "description": "Imposta i nomi di prefisso per i ruoli di conversazione", + "tip": "La Cronologia della Conversazione non è abilitata, per favore aggiungi nel prompt sopra.", + "learnMore": "Scopri di più", + "editModal": { + "title": "Modifica i nomi dei ruoli della conversazione", + "userPrefix": "Prefisso utente", + "assistantPrefix": "Prefisso assistente" + } + }, + "toolbox": { + "title": "CASSETTA DEGLI ATTREZZI" + }, + "moderation": { + "title": "Moderazione del contenuto", + "description": "Proteggi l'output del modello utilizzando l'API di moderazione o mantenendo un elenco di parole sensibili.", + "allEnabled": "Contenuto INPUT/OUTPUT abilitato", + "inputEnabled": "Contenuto INPUT abilitato", + "outputEnabled": "Contenuto OUTPUT abilitato", + "modal": { + "title": "Impostazioni di moderazione del contenuto", + "provider": { + "title": "Provider", + "openai": "Moderazione OpenAI", + "openaiTip": { + "prefix": "La moderazione OpenAI richiede una chiave API OpenAI configurata nel", + "suffix": "." + }, + "keywords": "Parole chiave" + }, + "keywords": { + "tip": "Una per linea, separate da interruzioni di linea. Fino a 100 caratteri per linea.", + "placeholder": "Una per linea, separate da interruzioni di linea", + "line": "Linea" + }, + "content": { + "input": "Modera contenuto INPUT", + "output": "Modera contenuto OUTPUT", + "preset": "Risposte preimpostate", + "placeholder": "Contenuto delle risposte preimpostate qui", + "condition": "Moderazione contenuto INPUT e OUTPUT abilitato almeno uno", + "fromApi": "Le risposte preimpostate sono restituite dall'API", + "errorMessage": "Le risposte preimpostate non possono essere vuote", + "supportMarkdown": "Markdown supportato" + }, + "openaiNotConfig": { + "before": "La moderazione OpenAI richiede una chiave API OpenAI configurata nel", + "after": "" + } + }, + "contentEnableLabel": "Moderazione dei contenuti abilitata" + }, + "fileUpload": { + "title": "Caricamento File", + "description": "La casella di input della chat consente di caricare immagini, documenti e altri file.", + "supportedTypes": "Tipi di File Supportati", + "numberLimit": "Caricamenti massimi", + "modalTitle": "Impostazione Caricamento File" + }, + "imageUpload": { + "title": "Caricamento Immagine", + "description": "Consente di caricare immagini.", + "supportedTypes": "Tipi di File Supportati", + "numberLimit": "Caricamenti massimi", + "modalTitle": "Impostazione Caricamento Immagine" + }, + "bar": { + "empty": "Abilita funzionalità per migliorare l'esperienza utente dell'app web", + "enableText": "Funzionalità Abilitate", + "manage": "Gestisci" + }, + "documentUpload": { + "title": "Documento", + "description": "Abilitare Documento consentirà al modello di accettare documenti e rispondere a domande su di essi." + }, + "audioUpload": { + "title": "Audio", + "description": "Abilitare Audio consentirà al modello di elaborare file audio per trascrizione e analisi." + } + }, + "automatic": {}, + "resetConfig": { + "title": "Confermare il ripristino?", + "message": "Il ripristino scarta le modifiche, ripristinando l'ultima configurazione pubblicata." + }, + "errorMessage": { + "nameOfKeyRequired": "nome della chiave: {{key}} richiesto", + "valueOfVarRequired": "il valore di {{key}} non può essere vuoto", + "queryRequired": "Il testo della richiesta è richiesto.", + "waitForResponse": "Per favore attendi che la risposta al messaggio precedente sia completata.", + "waitForBatchResponse": "Per favore attendi che la risposta all'attività batch sia completata.", + "notSelectModel": "Per favore scegli un modello", + "waitForImgUpload": "Per favore attendi il caricamento dell'immagine", + "waitForFileUpload": "Attendi il caricamento del file o dei file" + }, + "chatSubTitle": "Istruzioni", + "completionSubTitle": "Prompt di prefisso", + "promptTip": "I prompt guidano le risposte dell'IA con istruzioni e vincoli. Inserisci variabili come {{input}}. Questo prompt non sarà visibile agli utenti.", + "formattingChangedTitle": "Formato modificato", + "formattingChangedText": "Modificare il formato resetterà l'area di debug, sei sicuro?", + "variableTitle": "Variabili", + "variableTip": "Gli utenti riempiono le variabili in un modulo, sostituendo automaticamente le variabili nel prompt.", + "notSetVar": "Le variabili consentono agli utenti di introdurre parole del prompt o osservazioni di apertura quando compilano i moduli. Puoi provare a inserire `{{input}}` nelle parole del prompt.", + "autoAddVar": "Le variabili non definite riferite nel pre-prompt, vuoi aggiungerle nel modulo di input dell'utente?", + "variableTable": { + "key": "Chiave Variabile", + "name": "Nome Campo Input Utente", + "type": "Tipo di Input", + "action": "Azioni", + "typeString": "Stringa", + "typeSelect": "Seleziona" + }, + "varKeyError": { + "canNoBeEmpty": "{{key}} è obbligatorio", + "tooLong": "{{key}} è troppo lunga. Non può essere più lunga di 30 caratteri", + "notValid": "{{key}} non è valida. Può contenere solo lettere, numeri e underscore", + "notStartWithNumber": "{{key}} non può iniziare con un numero", + "keyAlreadyExists": "{{key}} esiste già" + }, + "otherError": { + "promptNoBeEmpty": "Il prompt non può essere vuoto", + "historyNoBeEmpty": "La cronologia delle conversazioni deve essere impostata nel prompt", + "queryNoBeEmpty": "La query deve essere impostata nel prompt" + }, + "variableConfig": { + "addModalTitle": "Aggiungi Campo Input", + "editModalTitle": "Modifica Campo Input", + "description": "Impostazione per la variabile {{varName}}", + "fieldType": "Tipo di campo", + "string": "Testo breve", + "text-input": "Testo breve", + "paragraph": "Paragrafo", + "select": "Seleziona", + "number": "Numero", + "notSet": "Non impostato, prova a scrivere {{input}} nel prompt di prefisso", + "stringTitle": "Opzioni della casella di testo del modulo", + "maxLength": "Lunghezza massima", + "options": "Opzioni", + "addOption": "Aggiungi opzione", + "apiBasedVar": "Variabile basata su API", + "varName": "Nome Variabile", + "labelName": "Nome Etichetta", + "inputPlaceholder": "Per favore inserisci", + "content": "Contenuto", + "required": "Richiesto", + "hide": "Nascondi", + "errorMsg": { + "labelNameRequired": "Il nome dell'etichetta è richiesto", + "varNameCanBeRepeat": "Il nome della variabile non può essere ripetuto", + "atLeastOneOption": "È richiesta almeno un'opzione", + "optionRepeat": "Ci sono opzioni ripetute" + }, + "defaultValue": "Valore predefinito", + "noDefaultValue": "Nessun valore predefinito", + "selectDefaultValue": "Seleziona valore predefinito", + "file": { + "image": { + "name": "Immagine" + }, + "audio": { + "name": "Audio" + }, + "document": { + "name": "Documento" + }, + "video": { + "name": "Video" + }, + "custom": { + "createPlaceholder": " Estensione del file, ad esempio .doc", + "description": "Specificare altri tipi di file.", + "name": "Altri tipi di file" + }, + "supportFileTypes": "Tipi di file di supporto" + }, + "single-file": "File singolo", + "uploadFileTypes": "Caricare i tipi di file", + "maxNumberOfUploads": "Numero massimo di caricamenti", + "maxNumberTip": "Documento < {{docLimit}}, immagine < {{imgLimit}}, audio < {{audioLimit}}, video < {{videoLimit}}", + "multi-files": "Elenco file", + "both": "Ambedue", + "localUpload": "Caricamento locale", + "checkbox": "Checkbox", + "optional": "opzionale", + "jsonSchema": "Schema JSON", + "json": "Codice JSON", + "unit": "Unità", + "showAllSettings": "Mostra tutte le impostazioni", + "uploadMethod": "Metodo di caricamento", + "noDefaultSelected": "Non selezionare", + "startChecked": "Avvia controllato", + "unitPlaceholder": "Unità di visualizzazione dopo i numeri, ad esempio i gettoni", + "defaultValuePlaceholder": "Immettere il valore predefinito per precompilare il campo", + "displayName": "Nome visualizzato", + "tooltipsPlaceholder": "Inserisci il testo utile visualizzato quando passi il mouse sopra l'etichetta", + "placeholderPlaceholder": "Immettere il testo da visualizzare quando il campo è vuoto", + "placeholder": "Segnaposto", + "startSelectedOption": "Avvia opzione selezionata", + "tooltips": "Suggerimenti" + }, + "vision": { + "name": "Visione", + "description": "Abilitare la visione permetterà al modello di prendere immagini e rispondere a domande su di esse.", + "settings": "Impostazioni", + "visionSettings": { + "title": "Impostazioni di visione", + "resolution": "Risoluzione", + "resolutionTooltip": "La bassa risoluzione permetterà al modello di ricevere una versione a bassa risoluzione 512 x 512 dell'immagine e di rappresentare l'immagine con un budget di 65 token. Questo permette all'API di restituire risposte più veloci e di consumare meno token di input per casi d'uso che non richiedono alta definizione.\nL'alta risoluzione permetterà al modello di vedere prima l'immagine a bassa risoluzione e poi di creare ritagli dettagliati delle immagini di input come quadrati 512px basati sulla dimensione dell'immagine di input. Ciascuno dei ritagli dettagliati utilizza il doppio del budget dei token per un totale di 129 token.", + "high": "Alta", + "low": "Bassa", + "uploadMethod": "Metodo di caricamento", + "both": "Entrambi", + "localUpload": "Caricamento locale", + "url": "URL", + "uploadLimit": "Limite di caricamento" + }, + "onlySupportVisionModelTip": "Supporta solo i modelli di visione" + }, + "voice": { + "name": "Voce", + "defaultDisplay": "Voce predefinita", + "description": "Impostazioni della voce da testo a voce", + "settings": "Impostazioni", + "voiceSettings": { + "title": "Impostazioni della voce", + "language": "Lingua", + "resolutionTooltip": "Supporto per la lingua della voce da testo a voce.", + "voice": "Voce", + "autoPlay": "Riproduzione automatica", + "autoPlayEnabled": "Acceso", + "autoPlayDisabled": "Spento" + } + }, + "openingStatement": { + "title": "Iniziatore di conversazione", + "add": "Aggiungi", + "writeOpener": "Scrivi introduzione", + "placeholder": "Scrivi qui il tuo messaggio introduttivo, puoi usare variabili, prova a scrivere {{variable}}.", + "openingQuestion": "Domande iniziali", + "openingQuestionPlaceholder": "Puoi usare variabili, prova a digitare {{variable}}.", + "noDataPlaceHolder": "Iniziare la conversazione con l'utente può aiutare l'IA a stabilire un legame più stretto con loro nelle applicazioni conversazionali.", + "varTip": "Puoi usare variabili, prova a scrivere {{variable}}", + "tooShort": "Sono richieste almeno 20 parole di prompt iniziale per generare un'introduzione alla conversazione.", + "notIncludeKey": "Il prompt iniziale non include la variabile: {{key}}. Per favore aggiungila al prompt iniziale." + }, + "modelConfig": { + "model": "Modello", + "setTone": "Imposta tono delle risposte", + "title": "Modello e Parametri", + "modeType": { + "chat": "Chat", + "completion": "Completamento" + } + }, + "inputs": { + "title": "Debug e Anteprima", + "noPrompt": "Prova a scrivere qualche prompt nell'input pre-prompt", + "userInputField": "Campo Input Utente", + "noVar": "Compila il valore della variabile, che verrà automaticamente sostituito nel prompt ogni volta che inizia una nuova sessione.", + "chatVarTip": "Compila il valore della variabile, che verrà automaticamente sostituito nel prompt ogni volta che inizia una nuova sessione", + "completionVarTip": "Compila il valore della variabile, che verrà automaticamente sostituito nelle parole del prompt ogni volta che viene inviata una domanda.", + "previewTitle": "Anteprima prompt", + "queryTitle": "Contenuto query", + "queryPlaceholder": "Per favore inserisci il testo della richiesta.", + "run": "ESEGUI" + }, + "result": "Testo di output", + "datasetConfig": { + "settingTitle": "Impostazioni di recupero", + "knowledgeTip": "Clicca sul pulsante “+” per aggiungere conoscenza", + "retrieveOneWay": { + "title": "Recupero N-a-1", + "description": "Basato sull'intento dell'utente e le descrizioni della Conoscenza, l'Agente seleziona autonomamente la migliore Conoscenza per la query. Ideale per applicazioni con Conoscenze distinte e limitate." + }, + "retrieveMultiWay": { + "title": "Recupero multipath", + "description": "Basato sull'intento dell'utente, esegue query su tutte le Conoscenze, recupera testo rilevante da più fonti e seleziona i migliori risultati corrispondenti alla query dell'utente dopo il reranking. È richiesta la configurazione dell'API del modello di reranking." + }, + "rerankModelRequired": "Il modello di reranking è richiesto", + "params": "Parametri", + "top_k": "Top K", + "top_kTip": "Usato per filtrare i chunk più simili alle domande degli utenti. Il sistema regolerà anche dinamicamente il valore di Top K, in base ai max_tokens del modello selezionato.", + "score_threshold": "Soglia di punteggio", + "score_thresholdTip": "Usato per impostare la soglia di somiglianza per il filtraggio dei chunk.", + "retrieveChangeTip": "Modificare la modalità di indicizzazione e la modalità di recupero può influenzare le applicazioni associate a questa Conoscenza.", + "embeddingModelRequired": "È necessario un modello di incorporamento configurato" + }, + "debugAsSingleModel": "Debug come modello singolo", + "debugAsMultipleModel": "Debug come modelli multipli", + "duplicateModel": "Duplica", + "publishAs": "Pubblica come", + "assistantType": { + "name": "Tipo di assistente", + "chatAssistant": { + "name": "Assistente base", + "description": "Costruisci un assistente basato su chat utilizzando un grande modello linguistico" + }, + "agentAssistant": { + "name": "Assistente Agente", + "description": "Costruisci un Agente intelligente che può scegliere autonomamente strumenti per completare i compiti" + } + }, + "agent": { + "agentMode": "Modalità Agente", + "agentModeDes": "Imposta il tipo di modalità di inferenza per l'agente", + "agentModeType": { + "ReACT": "ReAct", + "functionCall": "Chiamata di Funzione" + }, + "setting": { + "name": "Impostazioni Agente", + "description": "Le impostazioni dell'Assistente Agente permettono di impostare la modalità agente e funzionalità avanzate come prompt integrati, disponibili solo nel tipo Agente.", + "maximumIterations": { + "name": "Iterazioni massime", + "description": "Limita il numero di iterazioni che un assistente agente può eseguire" + } + }, + "buildInPrompt": "Prompt Integrato", + "firstPrompt": "Primo Prompt", + "nextIteration": "Prossima Iterazione", + "promptPlaceholder": "Scrivi qui il tuo prompt", + "tools": { + "name": "Strumenti", + "description": "L'utilizzo degli strumenti può estendere le capacità del LLM, come cercare su internet o eseguire calcoli scientifici", + "enabled": "Abilitato" + } + }, + "codegen": { + "noDataLine1": "Descrivi il tuo caso d'uso a sinistra,", + "noDataLine2": "L'anteprima del codice verrà mostrata qui.", + "generate": "Generare", + "resTitle": "Codice generato", + "overwriteConfirmTitle": "Sovrascrivere il codice esistente?", + "applyChanges": "Applica modifiche", + "title": "Generatore di codice", + "overwriteConfirmMessage": "Questa azione sovrascriverà il codice esistente. Vuoi continuare?", + "description": "Il generatore di codice utilizza modelli configurati per generare codice di alta qualità in base alle istruzioni dell'utente. Si prega di fornire istruzioni chiare e dettagliate.", + "instruction": "Disposizioni", + "instructionPlaceholder": "Inserisci una descrizione dettagliata del codice che desideri generare.", + "generatedCodeTitle": "Codice generato", + "loading": "Generazione del codice...", + "apply": "Applicare" + }, + "generate": { + "template": { + "pythonDebugger": { + "instruction": "Un bot in grado di generare ed eseguire il debug del codice in base alle istruzioni", + "name": "Debugger Python" + }, + "translation": { + "instruction": "Un traduttore in grado di tradurre in più lingue", + "name": "Traduzione" + }, + "professionalAnalyst": { + "name": "Analista professionista", + "instruction": "Estrai informazioni, identifica i rischi e distilla le informazioni chiave da report lunghi in un unico memo" + }, + "excelFormulaExpert": { + "name": "Esperto di formule per Excel", + "instruction": "Un chatbot che può aiutare gli utenti inesperti a comprendere, utilizzare e creare formule Excel basate sulle istruzioni dell'utente" + }, + "travelPlanning": { + "name": "Pianificazione del viaggio", + "instruction": "Il Travel Planning Assistant è uno strumento intelligente progettato per aiutare gli utenti a pianificare facilmente i loro viaggi" + }, + "SQLSorcerer": { + "name": "Stregone SQL", + "instruction": "Trasforma il linguaggio di tutti i giorni in query SQL" + }, + "GitGud": { + "instruction": "Generare comandi Git appropriati in base alle azioni di controllo della versione descritte dall'utente", + "name": "Git gud" + }, + "meetingTakeaways": { + "name": "Conclusioni sulle riunioni", + "instruction": "Distilla le riunioni in riassunti concisi che includono argomenti di discussione, punti chiave e punti d'azione" + }, + "writingsPolisher": { + "name": "Lucidatrice per scrittura", + "instruction": "Usa tecniche avanzate di copyediting per migliorare i tuoi scritti" + } + }, + "instruction": "Disposizioni", + "title": "Generatore di prompt", + "loading": "Orchestrare l'applicazione per te...", + "apply": "Applicare", + "overwriteMessage": "L'applicazione di questo prompt sovrascriverà la configurazione esistente.", + "description": "Il generatore di prompt utilizza il modello configurato per ottimizzare i prompt per una qualità superiore e una struttura migliore. Si prega di scrivere istruzioni chiare e dettagliate.", + "overwriteTitle": "Sovrascrivere la configurazione esistente?", + "resTitle": "Prompt generato", + "generate": "Generare", + "tryIt": "Provalo", + "to": "a", + "dismiss": "Ignora", + "optional": "Facoltativo", + "latest": "Ultimo", + "version": "Versione", + "versions": "Versioni", + "optimizePromptTooltip": "Ottimizza in Generatore di Prompt", + "press": "Stampa", + "instructionPlaceHolderTitle": "Descrivi come ti piacerebbe migliorare questo Prompt. Ad esempio:", + "insertContext": "inserisci contesto", + "idealOutput": "Uscita ideale", + "instructionPlaceHolderLine3": "Il tono è troppo brusco, per favore rendilo più amichevole.", + "idealOutputPlaceholder": "Descrivi il tuo formato di risposta ideale, la lunghezza, il tono e i requisiti di contenuto...", + "newNoDataLine1": "Scrivi un'istruzione nella colonna di sinistra e fai clic su Genera per vedere la risposta.", + "optimizationNote": "Nota di Ottimizzazione", + "instructionPlaceHolderLine2": "Il formato di output è errato, si prega di seguire rigorosamente il formato JSON.", + "instructionPlaceHolderLine1": "Rendi l'output più conciso, mantenendo i punti principali.", + "codeGenInstructionPlaceHolderLine": "Più dettagliato è il feedback, come i tipi di dati di input e output e come vengono elaborati le variabili, più accurata sarà la generazione del codice." + }, + "warningMessage": { + "timeoutExceeded": "I risultati non vengono visualizzati a causa del timeout. Si prega di fare riferimento ai registri per raccogliere risultati completi." + }, + "noResult": "L'output verrà visualizzato qui." +} diff --git a/web/i18n/it-IT/app-debug.ts b/web/i18n/it-IT/app-debug.ts deleted file mode 100644 index e81a83a3dd..0000000000 --- a/web/i18n/it-IT/app-debug.ts +++ /dev/null @@ -1,614 +0,0 @@ -const translation = { - pageTitle: { - line1: 'PROMPT', - line2: 'Engineering', - }, - orchestrate: 'Orchestra', - promptMode: { - simple: 'Passa alla modalità esperto per modificare tutto il PROMPT', - advanced: 'Modalità esperto', - switchBack: 'Torna indietro', - advancedWarning: { - title: - 'Sei passato alla modalità esperto e una volta modificato il PROMPT, NON potrai tornare alla modalità base.', - description: 'In modalità esperto, puoi modificare tutto il PROMPT.', - learnMore: 'Scopri di più', - ok: 'OK', - }, - operation: { - addMessage: 'Aggiungi messaggio', - }, - contextMissing: - 'Componente del contesto mancante, l\'efficacia del prompt potrebbe non essere buona.', - }, - operation: { - applyConfig: 'Pubblica', - resetConfig: 'Ripristina', - debugConfig: 'Debug', - addFeature: 'Aggiungi funzione', - automatic: 'Automatico', - stopResponding: 'Interrompi la risposta', - agree: 'mi piace', - disagree: 'non mi piace', - cancelAgree: 'Annulla mi piace', - cancelDisagree: 'Annulla non mi piace', - userAction: 'Azione utente', - }, - notSetAPIKey: { - title: 'La chiave del provider LLM non è stata impostata', - trailFinished: 'Periodo di prova terminato', - description: - 'La chiave del provider LLM non è stata impostata e deve essere impostata prima del debug.', - settingBtn: 'Vai alle impostazioni', - }, - trailUseGPT4Info: { - title: 'Non supporta gpt-4 adesso', - description: 'Per utilizzare gpt-4, per favore imposta la chiave API.', - }, - feature: { - groupChat: { - title: 'Migliora chat', - description: - 'Aggiungere impostazioni pre-conversazione per le app può migliorare l\'esperienza utente.', - }, - groupExperience: { - title: 'Migliora esperienza', - }, - conversationOpener: { - title: 'Iniziatore di conversazione', - description: - 'In un\'app di chat, la prima frase che l\'IA pronuncia attivamente all\'utente viene solitamente usata come benvenuto.', - }, - suggestedQuestionsAfterAnswer: { - title: 'Follow-up', - description: - 'Impostare suggerimenti per le prossime domande può offrire agli utenti una chat migliore.', - resDes: '3 suggerimenti per la prossima domanda dell\'utente.', - tryToAsk: 'Prova a chiedere', - }, - moreLikeThis: { - title: 'Altri simili', - description: - 'Genera più testi contemporaneamente, poi modifica e continua a generare', - generateNumTip: 'Numero di ogni generazione', - tip: 'L\'utilizzo di questa funzione comporterà un costo aggiuntivo di token', - }, - speechToText: { - title: 'Da voce a testo', - description: 'Una volta abilitato, puoi usare l\'input vocale.', - resDes: 'L\'input vocale è abilitato', - }, - textToSpeech: { - title: 'Da testo a voce', - description: - 'Una volta abilitato, il testo può essere convertito in voce.', - resDes: 'Il testo in audio è abilitato', - }, - citation: { - title: 'Citazioni e attribuzioni', - description: - 'Una volta abilitato, mostra il documento sorgente e la sezione attribuita del contenuto generato.', - resDes: 'Citazioni e attribuzioni sono abilitate', - }, - annotation: { - title: 'Risposta annotata', - description: - 'Puoi aggiungere manualmente una risposta di alta qualità alla cache per una corrispondenza prioritaria con domande utente simili.', - resDes: 'Risposta annotata è abilitata', - scoreThreshold: { - title: 'Soglia di punteggio', - description: - 'Utilizzata per impostare la soglia di somiglianza per la risposta annotata.', - easyMatch: 'Corrispondenza facile', - accurateMatch: 'Corrispondenza accurata', - }, - matchVariable: { - title: 'Variabile di corrispondenza', - choosePlaceholder: 'Scegli la variabile di corrispondenza', - }, - cacheManagement: 'Annotazioni', - cached: 'Annotato', - remove: 'Rimuovi', - removeConfirm: 'Eliminare questa annotazione?', - add: 'Aggiungi annotazione', - edit: 'Modifica annotazione', - }, - dataSet: { - title: 'Contesto', - noData: 'Puoi importare Conoscenza come contesto', - selectTitle: 'Seleziona Conoscenza di riferimento', - selected: 'Conoscenza selezionata', - noDataSet: 'Nessuna Conoscenza trovata', - toCreate: 'Vai a creare', - notSupportSelectMulti: 'Attualmente supporta solo una Conoscenza', - queryVariable: { - title: 'Variabile di query', - tip: 'Questa variabile verrà utilizzata come input di query per il recupero del contesto, ottenendo informazioni contestuali relative all\'input di questa variabile.', - choosePlaceholder: 'Scegli la variabile di query', - noVar: 'Nessuna variabile', - noVarTip: 'per favore crea una variabile nella sezione Variabili', - unableToQueryDataSet: 'Impossibile interrogare la Conoscenza', - unableToQueryDataSetTip: - 'Impossibile interrogare la Conoscenza correttamente, per favore scegli una variabile di query nel contesto.', - ok: 'OK', - contextVarNotEmpty: - 'La variabile di query del contesto non può essere vuota', - deleteContextVarTitle: 'Eliminare la variabile “{{varName}}”?', - deleteContextVarTip: - 'Questa variabile è stata impostata come variabile di query del contesto, rimuoverla influenzerà l\'uso normale della Conoscenza. Se hai ancora bisogno di eliminarla, per favore riselezionala nella sezione del contesto.', - }, - }, - tools: { - title: 'Strumenti', - tips: 'Gli strumenti forniscono un metodo di chiamata API standard, prendendo input dell\'utente o variabili come parametri di richiesta per interrogare dati esterni come contesto.', - toolsInUse: '{{count}} strumenti in uso', - modal: { - title: 'Strumento', - toolType: { - title: 'Tipo di strumento', - placeholder: 'Per favore seleziona il tipo di strumento', - }, - name: { - title: 'Nome', - placeholder: 'Per favore inserisci il nome', - }, - variableName: { - title: 'Nome della variabile', - placeholder: 'Per favore inserisci il nome della variabile', - }, - }, - }, - conversationHistory: { - title: 'Cronologia della conversazione', - description: 'Imposta i nomi di prefisso per i ruoli di conversazione', - tip: 'La Cronologia della Conversazione non è abilitata, per favore aggiungi nel prompt sopra.', - learnMore: 'Scopri di più', - editModal: { - title: 'Modifica i nomi dei ruoli della conversazione', - userPrefix: 'Prefisso utente', - assistantPrefix: 'Prefisso assistente', - }, - }, - toolbox: { - title: 'CASSETTA DEGLI ATTREZZI', - }, - moderation: { - title: 'Moderazione del contenuto', - description: - 'Proteggi l\'output del modello utilizzando l\'API di moderazione o mantenendo un elenco di parole sensibili.', - allEnabled: 'Contenuto INPUT/OUTPUT abilitato', - inputEnabled: 'Contenuto INPUT abilitato', - outputEnabled: 'Contenuto OUTPUT abilitato', - modal: { - title: 'Impostazioni di moderazione del contenuto', - provider: { - title: 'Provider', - openai: 'Moderazione OpenAI', - openaiTip: { - prefix: - 'La moderazione OpenAI richiede una chiave API OpenAI configurata nel', - suffix: '.', - }, - keywords: 'Parole chiave', - }, - keywords: { - tip: 'Una per linea, separate da interruzioni di linea. Fino a 100 caratteri per linea.', - placeholder: 'Una per linea, separate da interruzioni di linea', - line: 'Linea', - }, - content: { - input: 'Modera contenuto INPUT', - output: 'Modera contenuto OUTPUT', - preset: 'Risposte preimpostate', - placeholder: 'Contenuto delle risposte preimpostate qui', - condition: - 'Moderazione contenuto INPUT e OUTPUT abilitato almeno uno', - fromApi: 'Le risposte preimpostate sono restituite dall\'API', - errorMessage: 'Le risposte preimpostate non possono essere vuote', - supportMarkdown: 'Markdown supportato', - }, - openaiNotConfig: { - before: - 'La moderazione OpenAI richiede una chiave API OpenAI configurata nel', - after: '', - }, - }, - contentEnableLabel: 'Moderazione dei contenuti abilitata', - }, - fileUpload: { - title: 'Caricamento File', - description: 'La casella di input della chat consente di caricare immagini, documenti e altri file.', - supportedTypes: 'Tipi di File Supportati', - numberLimit: 'Caricamenti massimi', - modalTitle: 'Impostazione Caricamento File', - }, - imageUpload: { - title: 'Caricamento Immagine', - description: 'Consente di caricare immagini.', - supportedTypes: 'Tipi di File Supportati', - numberLimit: 'Caricamenti massimi', - modalTitle: 'Impostazione Caricamento Immagine', - }, - bar: { - empty: 'Abilita funzionalità per migliorare l\'esperienza utente dell\'app web', - enableText: 'Funzionalità Abilitate', - manage: 'Gestisci', - }, - documentUpload: { - title: 'Documento', - description: 'Abilitare Documento consentirà al modello di accettare documenti e rispondere a domande su di essi.', - }, - audioUpload: { - title: 'Audio', - description: 'Abilitare Audio consentirà al modello di elaborare file audio per trascrizione e analisi.', - }, - }, - automatic: { - }, - resetConfig: { - title: 'Confermare il ripristino?', - message: - 'Il ripristino scarta le modifiche, ripristinando l\'ultima configurazione pubblicata.', - }, - errorMessage: { - nameOfKeyRequired: 'nome della chiave: {{key}} richiesto', - valueOfVarRequired: 'il valore di {{key}} non può essere vuoto', - queryRequired: 'Il testo della richiesta è richiesto.', - waitForResponse: - 'Per favore attendi che la risposta al messaggio precedente sia completata.', - waitForBatchResponse: - 'Per favore attendi che la risposta all\'attività batch sia completata.', - notSelectModel: 'Per favore scegli un modello', - waitForImgUpload: 'Per favore attendi il caricamento dell\'immagine', - waitForFileUpload: 'Attendi il caricamento del file o dei file', - }, - chatSubTitle: 'Istruzioni', - completionSubTitle: 'Prompt di prefisso', - promptTip: - 'I prompt guidano le risposte dell\'IA con istruzioni e vincoli. Inserisci variabili come {{input}}. Questo prompt non sarà visibile agli utenti.', - formattingChangedTitle: 'Formato modificato', - formattingChangedText: - 'Modificare il formato resetterà l\'area di debug, sei sicuro?', - variableTitle: 'Variabili', - variableTip: - 'Gli utenti riempiono le variabili in un modulo, sostituendo automaticamente le variabili nel prompt.', - notSetVar: - 'Le variabili consentono agli utenti di introdurre parole del prompt o osservazioni di apertura quando compilano i moduli. Puoi provare a inserire `{{input}}` nelle parole del prompt.', - autoAddVar: - 'Le variabili non definite riferite nel pre-prompt, vuoi aggiungerle nel modulo di input dell\'utente?', - variableTable: { - key: 'Chiave Variabile', - name: 'Nome Campo Input Utente', - type: 'Tipo di Input', - action: 'Azioni', - typeString: 'Stringa', - typeSelect: 'Seleziona', - }, - varKeyError: { - canNoBeEmpty: '{{key}} è obbligatorio', - tooLong: - '{{key}} è troppo lunga. Non può essere più lunga di 30 caratteri', - notValid: - '{{key}} non è valida. Può contenere solo lettere, numeri e underscore', - notStartWithNumber: - '{{key}} non può iniziare con un numero', - keyAlreadyExists: '{{key}} esiste già', - }, - otherError: { - promptNoBeEmpty: 'Il prompt non può essere vuoto', - historyNoBeEmpty: - 'La cronologia delle conversazioni deve essere impostata nel prompt', - queryNoBeEmpty: 'La query deve essere impostata nel prompt', - }, - variableConfig: { - 'addModalTitle': 'Aggiungi Campo Input', - 'editModalTitle': 'Modifica Campo Input', - 'description': 'Impostazione per la variabile {{varName}}', - 'fieldType': 'Tipo di campo', - 'string': 'Testo breve', - 'text-input': 'Testo breve', - 'paragraph': 'Paragrafo', - 'select': 'Seleziona', - 'number': 'Numero', - 'notSet': 'Non impostato, prova a scrivere {{input}} nel prompt di prefisso', - 'stringTitle': 'Opzioni della casella di testo del modulo', - 'maxLength': 'Lunghezza massima', - 'options': 'Opzioni', - 'addOption': 'Aggiungi opzione', - 'apiBasedVar': 'Variabile basata su API', - 'varName': 'Nome Variabile', - 'labelName': 'Nome Etichetta', - 'inputPlaceholder': 'Per favore inserisci', - 'content': 'Contenuto', - 'required': 'Richiesto', - 'hide': 'Nascondi', - 'errorMsg': { - labelNameRequired: 'Il nome dell\'etichetta è richiesto', - varNameCanBeRepeat: 'Il nome della variabile non può essere ripetuto', - atLeastOneOption: 'È richiesta almeno un\'opzione', - optionRepeat: 'Ci sono opzioni ripetute', - }, - 'defaultValue': 'Valore predefinito', - 'noDefaultValue': 'Nessun valore predefinito', - 'selectDefaultValue': 'Seleziona valore predefinito', - 'file': { - image: { - name: 'Immagine', - }, - audio: { - name: 'Audio', - }, - document: { - name: 'Documento', - }, - video: { - name: 'Video', - }, - custom: { - createPlaceholder: ' Estensione del file, ad esempio .doc', - description: 'Specificare altri tipi di file.', - name: 'Altri tipi di file', - }, - supportFileTypes: 'Tipi di file di supporto', - }, - 'single-file': 'File singolo', - 'uploadFileTypes': 'Caricare i tipi di file', - 'maxNumberOfUploads': 'Numero massimo di caricamenti', - 'maxNumberTip': 'Documento < {{docLimit}}, immagine < {{imgLimit}}, audio < {{audioLimit}}, video < {{videoLimit}}', - 'multi-files': 'Elenco file', - 'both': 'Ambedue', - 'localUpload': 'Caricamento locale', - 'checkbox': 'Checkbox', - 'optional': 'opzionale', - 'jsonSchema': 'Schema JSON', - 'json': 'Codice JSON', - 'unit': 'Unità', - 'showAllSettings': 'Mostra tutte le impostazioni', - 'uploadMethod': 'Metodo di caricamento', - 'noDefaultSelected': 'Non selezionare', - 'startChecked': 'Avvia controllato', - 'unitPlaceholder': 'Unità di visualizzazione dopo i numeri, ad esempio i gettoni', - 'defaultValuePlaceholder': 'Immettere il valore predefinito per precompilare il campo', - 'displayName': 'Nome visualizzato', - 'tooltipsPlaceholder': 'Inserisci il testo utile visualizzato quando passi il mouse sopra l\'etichetta', - 'placeholderPlaceholder': 'Immettere il testo da visualizzare quando il campo è vuoto', - 'placeholder': 'Segnaposto', - 'startSelectedOption': 'Avvia opzione selezionata', - 'tooltips': 'Suggerimenti', - }, - vision: { - name: 'Visione', - description: - 'Abilitare la visione permetterà al modello di prendere immagini e rispondere a domande su di esse.', - settings: 'Impostazioni', - visionSettings: { - title: 'Impostazioni di visione', - resolution: 'Risoluzione', - resolutionTooltip: 'La bassa risoluzione permetterà al modello di ricevere una versione a bassa risoluzione 512 x 512 dell\'immagine e di rappresentare l\'immagine con un budget di 65 token. Questo permette all\'API di restituire risposte più veloci e di consumare meno token di input per casi d\'uso che non richiedono alta definizione.\nL\'alta risoluzione permetterà al modello di vedere prima l\'immagine a bassa risoluzione e poi di creare ritagli dettagliati delle immagini di input come quadrati 512px basati sulla dimensione dell\'immagine di input. Ciascuno dei ritagli dettagliati utilizza il doppio del budget dei token per un totale di 129 token.', - high: 'Alta', - low: 'Bassa', - uploadMethod: 'Metodo di caricamento', - both: 'Entrambi', - localUpload: 'Caricamento locale', - url: 'URL', - uploadLimit: 'Limite di caricamento', - }, - onlySupportVisionModelTip: 'Supporta solo i modelli di visione', - }, - voice: { - name: 'Voce', - defaultDisplay: 'Voce predefinita', - description: 'Impostazioni della voce da testo a voce', - settings: 'Impostazioni', - voiceSettings: { - title: 'Impostazioni della voce', - language: 'Lingua', - resolutionTooltip: 'Supporto per la lingua della voce da testo a voce.', - voice: 'Voce', - autoPlay: 'Riproduzione automatica', - autoPlayEnabled: 'Acceso', - autoPlayDisabled: 'Spento', - }, - }, - openingStatement: { - title: 'Iniziatore di conversazione', - add: 'Aggiungi', - writeOpener: 'Scrivi introduzione', - placeholder: - 'Scrivi qui il tuo messaggio introduttivo, puoi usare variabili, prova a scrivere {{variable}}.', - openingQuestion: 'Domande iniziali', - openingQuestionPlaceholder: 'Puoi usare variabili, prova a digitare {{variable}}.', - noDataPlaceHolder: - 'Iniziare la conversazione con l\'utente può aiutare l\'IA a stabilire un legame più stretto con loro nelle applicazioni conversazionali.', - varTip: 'Puoi usare variabili, prova a scrivere {{variable}}', - tooShort: - 'Sono richieste almeno 20 parole di prompt iniziale per generare un\'introduzione alla conversazione.', - notIncludeKey: - 'Il prompt iniziale non include la variabile: {{key}}. Per favore aggiungila al prompt iniziale.', - }, - modelConfig: { - model: 'Modello', - setTone: 'Imposta tono delle risposte', - title: 'Modello e Parametri', - modeType: { - chat: 'Chat', - completion: 'Completamento', - }, - }, - inputs: { - title: 'Debug e Anteprima', - noPrompt: 'Prova a scrivere qualche prompt nell\'input pre-prompt', - userInputField: 'Campo Input Utente', - noVar: - 'Compila il valore della variabile, che verrà automaticamente sostituito nel prompt ogni volta che inizia una nuova sessione.', - chatVarTip: - 'Compila il valore della variabile, che verrà automaticamente sostituito nel prompt ogni volta che inizia una nuova sessione', - completionVarTip: - 'Compila il valore della variabile, che verrà automaticamente sostituito nelle parole del prompt ogni volta che viene inviata una domanda.', - previewTitle: 'Anteprima prompt', - queryTitle: 'Contenuto query', - queryPlaceholder: 'Per favore inserisci il testo della richiesta.', - run: 'ESEGUI', - }, - result: 'Testo di output', - datasetConfig: { - settingTitle: 'Impostazioni di recupero', - knowledgeTip: 'Clicca sul pulsante “+” per aggiungere conoscenza', - retrieveOneWay: { - title: 'Recupero N-a-1', - description: - 'Basato sull\'intento dell\'utente e le descrizioni della Conoscenza, l\'Agente seleziona autonomamente la migliore Conoscenza per la query. Ideale per applicazioni con Conoscenze distinte e limitate.', - }, - retrieveMultiWay: { - title: 'Recupero multipath', - description: - 'Basato sull\'intento dell\'utente, esegue query su tutte le Conoscenze, recupera testo rilevante da più fonti e seleziona i migliori risultati corrispondenti alla query dell\'utente dopo il reranking. È richiesta la configurazione dell\'API del modello di reranking.', - }, - rerankModelRequired: 'Il modello di reranking è richiesto', - params: 'Parametri', - top_k: 'Top K', - top_kTip: - 'Usato per filtrare i chunk più simili alle domande degli utenti. Il sistema regolerà anche dinamicamente il valore di Top K, in base ai max_tokens del modello selezionato.', - score_threshold: 'Soglia di punteggio', - score_thresholdTip: - 'Usato per impostare la soglia di somiglianza per il filtraggio dei chunk.', - retrieveChangeTip: - 'Modificare la modalità di indicizzazione e la modalità di recupero può influenzare le applicazioni associate a questa Conoscenza.', - embeddingModelRequired: 'È necessario un modello di incorporamento configurato', - }, - debugAsSingleModel: 'Debug come modello singolo', - debugAsMultipleModel: 'Debug come modelli multipli', - duplicateModel: 'Duplica', - publishAs: 'Pubblica come', - assistantType: { - name: 'Tipo di assistente', - chatAssistant: { - name: 'Assistente base', - description: - 'Costruisci un assistente basato su chat utilizzando un grande modello linguistico', - }, - agentAssistant: { - name: 'Assistente Agente', - description: - 'Costruisci un Agente intelligente che può scegliere autonomamente strumenti per completare i compiti', - }, - }, - agent: { - agentMode: 'Modalità Agente', - agentModeDes: 'Imposta il tipo di modalità di inferenza per l\'agente', - agentModeType: { - ReACT: 'ReAct', - functionCall: 'Chiamata di Funzione', - }, - setting: { - name: 'Impostazioni Agente', - description: - 'Le impostazioni dell\'Assistente Agente permettono di impostare la modalità agente e funzionalità avanzate come prompt integrati, disponibili solo nel tipo Agente.', - maximumIterations: { - name: 'Iterazioni massime', - description: - 'Limita il numero di iterazioni che un assistente agente può eseguire', - }, - }, - buildInPrompt: 'Prompt Integrato', - firstPrompt: 'Primo Prompt', - nextIteration: 'Prossima Iterazione', - promptPlaceholder: 'Scrivi qui il tuo prompt', - tools: { - name: 'Strumenti', - description: - 'L\'utilizzo degli strumenti può estendere le capacità del LLM, come cercare su internet o eseguire calcoli scientifici', - enabled: 'Abilitato', - }, - }, - codegen: { - noDataLine1: 'Descrivi il tuo caso d\'uso a sinistra,', - noDataLine2: 'L\'anteprima del codice verrà mostrata qui.', - generate: 'Generare', - resTitle: 'Codice generato', - overwriteConfirmTitle: 'Sovrascrivere il codice esistente?', - applyChanges: 'Applica modifiche', - title: 'Generatore di codice', - overwriteConfirmMessage: 'Questa azione sovrascriverà il codice esistente. Vuoi continuare?', - description: 'Il generatore di codice utilizza modelli configurati per generare codice di alta qualità in base alle istruzioni dell\'utente. Si prega di fornire istruzioni chiare e dettagliate.', - instruction: 'Disposizioni', - instructionPlaceholder: 'Inserisci una descrizione dettagliata del codice che desideri generare.', - generatedCodeTitle: 'Codice generato', - loading: 'Generazione del codice...', - apply: 'Applicare', - }, - generate: { - template: { - pythonDebugger: { - instruction: 'Un bot in grado di generare ed eseguire il debug del codice in base alle istruzioni', - name: 'Debugger Python', - }, - translation: { - instruction: 'Un traduttore in grado di tradurre in più lingue', - name: 'Traduzione', - }, - professionalAnalyst: { - name: 'Analista professionista', - instruction: 'Estrai informazioni, identifica i rischi e distilla le informazioni chiave da report lunghi in un unico memo', - }, - excelFormulaExpert: { - name: 'Esperto di formule per Excel', - instruction: 'Un chatbot che può aiutare gli utenti inesperti a comprendere, utilizzare e creare formule Excel basate sulle istruzioni dell\'utente', - }, - travelPlanning: { - name: 'Pianificazione del viaggio', - instruction: 'Il Travel Planning Assistant è uno strumento intelligente progettato per aiutare gli utenti a pianificare facilmente i loro viaggi', - }, - SQLSorcerer: { - name: 'Stregone SQL', - instruction: 'Trasforma il linguaggio di tutti i giorni in query SQL', - }, - GitGud: { - instruction: 'Generare comandi Git appropriati in base alle azioni di controllo della versione descritte dall\'utente', - name: 'Git gud', - }, - meetingTakeaways: { - name: 'Conclusioni sulle riunioni', - instruction: 'Distilla le riunioni in riassunti concisi che includono argomenti di discussione, punti chiave e punti d\'azione', - }, - writingsPolisher: { - name: 'Lucidatrice per scrittura', - instruction: 'Usa tecniche avanzate di copyediting per migliorare i tuoi scritti', - }, - }, - instruction: 'Disposizioni', - title: 'Generatore di prompt', - loading: 'Orchestrare l\'applicazione per te...', - apply: 'Applicare', - overwriteMessage: 'L\'applicazione di questo prompt sovrascriverà la configurazione esistente.', - description: 'Il generatore di prompt utilizza il modello configurato per ottimizzare i prompt per una qualità superiore e una struttura migliore. Si prega di scrivere istruzioni chiare e dettagliate.', - overwriteTitle: 'Sovrascrivere la configurazione esistente?', - resTitle: 'Prompt generato', - generate: 'Generare', - tryIt: 'Provalo', - to: 'a', - dismiss: 'Ignora', - optional: 'Facoltativo', - latest: 'Ultimo', - version: 'Versione', - versions: 'Versioni', - optimizePromptTooltip: 'Ottimizza in Generatore di Prompt', - press: 'Stampa', - instructionPlaceHolderTitle: 'Descrivi come ti piacerebbe migliorare questo Prompt. Ad esempio:', - insertContext: 'inserisci contesto', - idealOutput: 'Uscita ideale', - instructionPlaceHolderLine3: 'Il tono è troppo brusco, per favore rendilo più amichevole.', - idealOutputPlaceholder: 'Descrivi il tuo formato di risposta ideale, la lunghezza, il tono e i requisiti di contenuto...', - newNoDataLine1: 'Scrivi un\'istruzione nella colonna di sinistra e fai clic su Genera per vedere la risposta.', - optimizationNote: 'Nota di Ottimizzazione', - instructionPlaceHolderLine2: 'Il formato di output è errato, si prega di seguire rigorosamente il formato JSON.', - instructionPlaceHolderLine1: 'Rendi l\'output più conciso, mantenendo i punti principali.', - codeGenInstructionPlaceHolderLine: 'Più dettagliato è il feedback, come i tipi di dati di input e output e come vengono elaborati le variabili, più accurata sarà la generazione del codice.', - }, - warningMessage: { - timeoutExceeded: 'I risultati non vengono visualizzati a causa del timeout. Si prega di fare riferimento ai registri per raccogliere risultati completi.', - }, - noResult: 'L\'output verrà visualizzato qui.', -} - -export default translation diff --git a/web/i18n/it-IT/app-log.json b/web/i18n/it-IT/app-log.json new file mode 100644 index 0000000000..5a2ea22a69 --- /dev/null +++ b/web/i18n/it-IT/app-log.json @@ -0,0 +1,110 @@ +{ + "title": "Registri", + "description": "I registri registrano lo stato di esecuzione dell'applicazione, inclusi input degli utenti e risposte AI.", + "dateTimeFormat": "MM/DD/YYYY hh:mm:ss A", + "table": { + "header": { + "updatedTime": "Ora di aggiornamento", + "time": "Ora di creazione", + "endUser": "Utente Finale o Account", + "input": "Input", + "output": "Output", + "summary": "Titolo", + "messageCount": "Conteggio Messaggi", + "userRate": "Valutazione Utente", + "adminRate": "Valutazione Op.", + "startTime": "ORA INIZIO", + "status": "STATO", + "runtime": "TEMPO DI ESECUZIONE", + "tokens": "TOKEN", + "user": "UTENTE FINALE O ACCOUNT", + "version": "VERSIONE", + "triggered_from": "ATTIVATO DA" + }, + "pagination": { + "previous": "Prec", + "next": "Succ" + }, + "empty": { + "noChat": "Nessuna conversazione ancora", + "noOutput": "Nessun output", + "element": { + "title": "C'è qualcuno?", + "content": "Osserva e annota le interazioni tra gli utenti finali e le applicazioni AI qui per migliorare continuamente l'accuratezza dell'AI. Puoi provare a condividere o a testare l'app Web tu stesso, quindi tornare a questa pagina." + } + } + }, + "detail": { + "time": "Ora", + "conversationId": "ID Conversazione", + "promptTemplate": "Template Prompt", + "promptTemplateBeforeChat": "Template Prompt Prima della Chat · Come Messaggio di Sistema", + "annotationTip": "Miglioramenti Segnalati da {{user}}", + "timeConsuming": "Tempo Trascorso", + "second": "s", + "tokenCost": "Token spesi", + "loading": "caricamento", + "operation": { + "like": "mi piace", + "dislike": "non mi piace", + "addAnnotation": "Aggiungi Miglioramento", + "editAnnotation": "Modifica Miglioramento", + "annotationPlaceholder": "Inserisci la risposta prevista che desideri che l'AI dia, che può essere utilizzata per il perfezionamento del modello e il miglioramento continuo della qualità della generazione di testo in futuro." + }, + "variables": "Variabili", + "uploadImages": "Immagini Caricate", + "modelParams": "Parametri del modello" + }, + "filter": { + "period": { + "today": "Oggi", + "last7days": "Ultimi 7 Giorni", + "last4weeks": "Ultime 4 settimane", + "last3months": "Ultimi 3 mesi", + "last12months": "Ultimi 12 mesi", + "monthToDate": "Mese corrente", + "quarterToDate": "Trimestre corrente", + "yearToDate": "Anno corrente", + "allTime": "Tutto il tempo", + "custom": "Personalizzato", + "last30days": "Ultimi 30 giorni" + }, + "annotation": { + "all": "Tutti", + "annotated": "Miglioramenti Annotati ({{count}} elementi)", + "not_annotated": "Non Annotati" + }, + "sortBy": "Ordina per:", + "descending": "decrescente", + "ascending": "crescente" + }, + "workflowTitle": "Registri del Workflow", + "workflowSubtitle": "Il registro ha registrato il funzionamento di Automate.", + "runDetail": { + "title": "Registro Conversazione", + "workflowTitle": "Dettagli Registro", + "fileListDetail": "Dettaglio", + "fileListLabel": "Dettagli del file", + "testWithParams": "Test con parametri" + }, + "promptLog": "Registro Prompt", + "agentLog": "Registro Agente", + "viewLog": "Visualizza Registro", + "agentLogDetail": { + "agentMode": "Modalità Agente", + "toolUsed": "Strumento Usato", + "iterations": "Iterazioni", + "iteration": "Iterazione", + "finalProcessing": "Elaborazione Finale" + }, + "dateFormat": "GG/MM/AAAA", + "triggerBy": { + "debugging": "Debugging", + "appRun": "WebApp", + "webhook": "Webhook", + "schedule": "Programma", + "plugin": "Plugin", + "ragPipelineRun": "Pipeline RAG", + "ragPipelineDebugging": "Debugging RAG" + } +} diff --git a/web/i18n/it-IT/app-log.ts b/web/i18n/it-IT/app-log.ts deleted file mode 100644 index 1fddb2e7e9..0000000000 --- a/web/i18n/it-IT/app-log.ts +++ /dev/null @@ -1,116 +0,0 @@ -const translation = { - title: 'Registri', - description: - 'I registri registrano lo stato di esecuzione dell\'applicazione, inclusi input degli utenti e risposte AI.', - dateTimeFormat: 'MM/DD/YYYY hh:mm:ss A', - table: { - header: { - updatedTime: 'Ora di aggiornamento', - time: 'Ora di creazione', - endUser: 'Utente Finale o Account', - input: 'Input', - output: 'Output', - summary: 'Titolo', - messageCount: 'Conteggio Messaggi', - userRate: 'Valutazione Utente', - adminRate: 'Valutazione Op.', - startTime: 'ORA INIZIO', - status: 'STATO', - runtime: 'TEMPO DI ESECUZIONE', - tokens: 'TOKEN', - user: 'UTENTE FINALE O ACCOUNT', - version: 'VERSIONE', - triggered_from: 'ATTIVATO DA', - }, - pagination: { - previous: 'Prec', - next: 'Succ', - }, - empty: { - noChat: 'Nessuna conversazione ancora', - noOutput: 'Nessun output', - element: { - title: 'C\'è qualcuno?', - content: - 'Osserva e annota le interazioni tra gli utenti finali e le applicazioni AI qui per migliorare continuamente l\'accuratezza dell\'AI. Puoi provare a condividere o a testare l\'app Web tu stesso, quindi tornare a questa pagina.', - }, - }, - }, - detail: { - time: 'Ora', - conversationId: 'ID Conversazione', - promptTemplate: 'Template Prompt', - promptTemplateBeforeChat: - 'Template Prompt Prima della Chat · Come Messaggio di Sistema', - annotationTip: 'Miglioramenti Segnalati da {{user}}', - timeConsuming: 'Tempo Trascorso', - second: 's', - tokenCost: 'Token spesi', - loading: 'caricamento', - operation: { - like: 'mi piace', - dislike: 'non mi piace', - addAnnotation: 'Aggiungi Miglioramento', - editAnnotation: 'Modifica Miglioramento', - annotationPlaceholder: - 'Inserisci la risposta prevista che desideri che l\'AI dia, che può essere utilizzata per il perfezionamento del modello e il miglioramento continuo della qualità della generazione di testo in futuro.', - }, - variables: 'Variabili', - uploadImages: 'Immagini Caricate', - modelParams: 'Parametri del modello', - }, - filter: { - period: { - today: 'Oggi', - last7days: 'Ultimi 7 Giorni', - last4weeks: 'Ultime 4 settimane', - last3months: 'Ultimi 3 mesi', - last12months: 'Ultimi 12 mesi', - monthToDate: 'Mese corrente', - quarterToDate: 'Trimestre corrente', - yearToDate: 'Anno corrente', - allTime: 'Tutto il tempo', - custom: 'Personalizzato', - last30days: 'Ultimi 30 giorni', - }, - annotation: { - all: 'Tutti', - annotated: 'Miglioramenti Annotati ({{count}} elementi)', - not_annotated: 'Non Annotati', - }, - sortBy: 'Ordina per:', - descending: 'decrescente', - ascending: 'crescente', - }, - workflowTitle: 'Registri del Workflow', - workflowSubtitle: 'Il registro ha registrato il funzionamento di Automate.', - runDetail: { - title: 'Registro Conversazione', - workflowTitle: 'Dettagli Registro', - fileListDetail: 'Dettaglio', - fileListLabel: 'Dettagli del file', - testWithParams: 'Test con parametri', - }, - promptLog: 'Registro Prompt', - agentLog: 'Registro Agente', - viewLog: 'Visualizza Registro', - agentLogDetail: { - agentMode: 'Modalità Agente', - toolUsed: 'Strumento Usato', - iterations: 'Iterazioni', - iteration: 'Iterazione', - finalProcessing: 'Elaborazione Finale', - }, - dateFormat: 'GG/MM/AAAA', - triggerBy: { - debugging: 'Debugging', - appRun: 'WebApp', - webhook: 'Webhook', - schedule: 'Programma', - plugin: 'Plugin', - ragPipelineRun: 'Pipeline RAG', - ragPipelineDebugging: 'Debugging RAG', - }, -} - -export default translation diff --git a/web/i18n/it-IT/app-overview.json b/web/i18n/it-IT/app-overview.json new file mode 100644 index 0000000000..0c59b32c74 --- /dev/null +++ b/web/i18n/it-IT/app-overview.json @@ -0,0 +1,187 @@ +{ + "welcome": { + "firstStepTip": "Per iniziare,", + "enterKeyTip": "inserisci la tua OpenAI API Key qui sotto", + "getKeyTip": "Ottieni la tua API Key dalla dashboard di OpenAI", + "placeholder": "La tua OpenAI API Key(es. sk-xxxx)" + }, + "apiKeyInfo": { + "cloud": { + "trial": { + "title": "Stai usando la quota di prova di {{providerName}}.", + "description": "La quota di prova è fornita per il tuo utilizzo di test. Prima che le chiamate della quota di prova siano esaurite, configura il tuo fornitore di modelli o acquista una quota aggiuntiva." + }, + "exhausted": { + "title": "La tua quota di prova è stata utilizzata, configura la tua APIKey.", + "description": "La tua quota di prova è stata esaurita. Configura il tuo fornitore di modelli o acquista una quota aggiuntiva." + } + }, + "selfHost": { + "title": { + "row1": "Per iniziare,", + "row2": "configura prima il tuo fornitore di modelli." + } + }, + "callTimes": "Numero di chiamate", + "usedToken": "Token utilizzati", + "setAPIBtn": "Vai a configurare il fornitore di modelli", + "tryCloud": "O prova la versione cloud di Dify con quota gratuita" + }, + "overview": { + "title": "Panoramica", + "appInfo": { + "explanation": "AI web app pronta all'uso", + "accessibleAddress": "URL Pubblico", + "preview": "Anteprima", + "regenerate": "Rigenera", + "regenerateNotice": "Vuoi rigenerare l'URL pubblico?", + "preUseReminder": "Attiva web app prima di continuare.", + "settings": { + "entry": "Impostazioni", + "title": "Impostazioni web app", + "webName": "Nome web app", + "webDesc": "Descrizione web app", + "webDescTip": "Questo testo verrà visualizzato sul lato client, fornendo una guida di base su come utilizzare l'applicazione", + "webDescPlaceholder": "Inserisci la descrizione della web app", + "language": "Lingua", + "workflow": { + "title": "Fasi del Workflow", + "show": "Mostra", + "hide": "Nascondi", + "subTitle": "Dettagli del flusso di lavoro", + "showDesc": "Mostrare o nascondere i dettagli del flusso di lavoro in web app" + }, + "chatColorTheme": "Tema colore chat", + "chatColorThemeDesc": "Imposta il tema colore del chatbot", + "chatColorThemeInverted": "Inverso", + "invalidHexMessage": "Valore esadecimale non valido", + "invalidPrivacyPolicy": "Link alla privacy policy non valido. Si prega di utilizzare un link valido che inizi con http o https", + "more": { + "entry": "Mostra più impostazioni", + "copyright": "Copyright", + "copyRightPlaceholder": "Inserisci il nome dell'autore o dell'organizzazione", + "privacyPolicy": "Privacy Policy", + "privacyPolicyPlaceholder": "Inserisci il link alla privacy policy", + "privacyPolicyTip": "Aiuta i visitatori a capire i dati raccolti dall'applicazione, vedi la Privacy Policy di Dify.", + "customDisclaimer": "Disclaimer Personalizzato", + "customDisclaimerPlaceholder": "Inserisci il testo del disclaimer personalizzato", + "customDisclaimerTip": "Il testo del disclaimer personalizzato verrà visualizzato sul lato client, fornendo informazioni aggiuntive sull'applicazione", + "copyrightTip": "Visualizzare le informazioni sul copyright nella web app", + "copyrightTooltip": "Si prega di eseguire l'upgrade al piano Professional o superiore" + }, + "sso": { + "label": "Autenticazione SSO", + "title": "web app SSO", + "description": "Tutti gli utenti devono effettuare l'accesso con SSO prima di utilizzare web app", + "tooltip": "Contattare l'amministratore per abilitare l'SSO di web app" + }, + "modalTip": "Impostazioni dell'app Web lato client." + }, + "embedded": { + "entry": "Incorporato", + "title": "Incorpora sul sito web", + "explanation": "Scegli come incorporare l'app chat nel tuo sito web", + "iframe": "Per aggiungere l'app chat ovunque sul tuo sito web, aggiungi questo iframe al tuo codice HTML.", + "scripts": "Per aggiungere un'app chat in basso a destra del tuo sito web, aggiungi questo codice al tuo HTML.", + "chromePlugin": "Installa l'estensione Chrome di Dify Chatbot", + "copied": "Copiato", + "copy": "Copia" + }, + "qrcode": { + "title": "Codice QR per condividere", + "scan": "Scansiona Condividi Applicazione", + "download": "Scarica Codice QR" + }, + "customize": { + "way": "modo", + "entry": "Personalizza", + "title": "Personalizza AI web app", + "explanation": "Puoi personalizzare il frontend della Web App per adattarla alle tue esigenze di scenario e stile.", + "way1": { + "name": "Fork il codice client, modificalo e distribuiscilo su Vercel (consigliato)", + "step1": "Fork il codice client e modificalo", + "step1Tip": "Clicca qui per fork il codice sorgente nel tuo account GitHub e modifica il codice", + "step1Operation": "Dify-WebClient", + "step2": "Distribuisci su Vercel", + "step2Tip": "Clicca qui per importare il repository su Vercel e distribuisci", + "step2Operation": "Importa repository", + "step3": "Configura le variabili di ambiente", + "step3Tip": "Aggiungi le seguenti variabili di ambiente su Vercel" + }, + "way2": { + "name": "Scrivi codice lato client per chiamare l'API e distribuiscilo su un server", + "operation": "Documentazione" + } + }, + "launch": "Lanciare", + "enableTooltip": { + "description": "Per abilitare questa funzione, aggiungi un nodo di input utente alla tela. (Potrebbe già esistere nella bozza, efficace dopo la pubblicazione)", + "learnMore": "Scopri di più" + }, + "title": "App Web" + }, + "apiInfo": { + "title": "API del servizio backend", + "explanation": "Facilmente integrabile nella tua applicazione", + "accessibleAddress": "Endpoint del servizio API", + "doc": "Riferimento API" + }, + "status": { + "running": "In servizio", + "disable": "Disabilita" + }, + "triggerInfo": { + "title": "Inneschi", + "explanation": "Gestione dei trigger del flusso di lavoro", + "triggersAdded": "Trigger aggiunti", + "noTriggerAdded": "Nessun trigger aggiunto", + "triggerStatusDescription": "Lo stato del nodo trigger appare qui. (Può già esistere in bozza, prende effetto dopo la pubblicazione)", + "learnAboutTriggers": "Scopri i Trigger" + }, + "disableTooltip": { + "triggerMode": "La funzionalità {{feature}} non è supportata in modalità Nodo Trigger." + } + }, + "analysis": { + "title": "Analisi", + "ms": "ms", + "tokenPS": "Token/s", + "totalMessages": { + "title": "Totale Messaggi", + "explanation": "Conteggio delle interazioni giornaliere con l'IA." + }, + "totalConversations": { + "title": "Conversazioni totali", + "explanation": "Conteggio delle conversazioni giornaliere con l'IA; ingegneria/debug dei prompt esclusi." + }, + "activeUsers": { + "title": "Utenti Attivi", + "explanation": "Utenti unici che interagiscono in Q&A con l'AI; ingegneria dei prompt/debug esclusi." + }, + "tokenUsage": { + "title": "Uso dei Token", + "explanation": "Riflette l'uso giornaliero dei token del modello linguistico per l'applicazione, utile per il controllo dei costi.", + "consumed": "Consumati" + }, + "avgSessionInteractions": { + "title": "Interazioni Medie per Sessione", + "explanation": "Conteggio continuo delle comunicazioni utente-AI; per applicazioni basate su conversazione." + }, + "avgUserInteractions": { + "title": "Interazioni Medie per Utente", + "explanation": "Riflette la frequenza giornaliera di utilizzo degli utenti. Questo parametro riflette la fedeltà degli utenti." + }, + "userSatisfactionRate": { + "title": "Tasso di Soddisfazione degli Utenti", + "explanation": "Il numero di mi piace per 1.000 messaggi. Indica la proporzione di risposte con cui gli utenti sono molto soddisfatti." + }, + "avgResponseTime": { + "title": "Tempo Medio di Risposta", + "explanation": "Tempo (ms) per l'AI per elaborare/rispondere; per applicazioni basate su testo." + }, + "tps": { + "title": "Velocità di Output dei Token", + "explanation": "Misura le prestazioni del LLM. Conta la velocità di output dei token del LLM dall'inizio della richiesta al completamento dell'output." + } + } +} diff --git a/web/i18n/it-IT/app-overview.ts b/web/i18n/it-IT/app-overview.ts deleted file mode 100644 index 8d82ee591d..0000000000 --- a/web/i18n/it-IT/app-overview.ts +++ /dev/null @@ -1,209 +0,0 @@ -const translation = { - welcome: { - firstStepTip: 'Per iniziare,', - enterKeyTip: 'inserisci la tua OpenAI API Key qui sotto', - getKeyTip: 'Ottieni la tua API Key dalla dashboard di OpenAI', - placeholder: 'La tua OpenAI API Key(es. sk-xxxx)', - }, - apiKeyInfo: { - cloud: { - trial: { - title: 'Stai usando la quota di prova di {{providerName}}.', - description: - 'La quota di prova è fornita per il tuo utilizzo di test. Prima che le chiamate della quota di prova siano esaurite, configura il tuo fornitore di modelli o acquista una quota aggiuntiva.', - }, - exhausted: { - title: - 'La tua quota di prova è stata utilizzata, configura la tua APIKey.', - description: - 'La tua quota di prova è stata esaurita. Configura il tuo fornitore di modelli o acquista una quota aggiuntiva.', - }, - }, - selfHost: { - title: { - row1: 'Per iniziare,', - row2: 'configura prima il tuo fornitore di modelli.', - }, - }, - callTimes: 'Numero di chiamate', - usedToken: 'Token utilizzati', - setAPIBtn: 'Vai a configurare il fornitore di modelli', - tryCloud: 'O prova la versione cloud di Dify con quota gratuita', - }, - overview: { - title: 'Panoramica', - appInfo: { - explanation: 'AI web app pronta all\'uso', - accessibleAddress: 'URL Pubblico', - preview: 'Anteprima', - regenerate: 'Rigenera', - regenerateNotice: 'Vuoi rigenerare l\'URL pubblico?', - preUseReminder: 'Attiva web app prima di continuare.', - settings: { - entry: 'Impostazioni', - title: 'Impostazioni web app', - webName: 'Nome web app', - webDesc: 'Descrizione web app', - webDescTip: - 'Questo testo verrà visualizzato sul lato client, fornendo una guida di base su come utilizzare l\'applicazione', - webDescPlaceholder: 'Inserisci la descrizione della web app', - language: 'Lingua', - workflow: { - title: 'Fasi del Workflow', - show: 'Mostra', - hide: 'Nascondi', - subTitle: 'Dettagli del flusso di lavoro', - showDesc: 'Mostrare o nascondere i dettagli del flusso di lavoro in web app', - }, - chatColorTheme: 'Tema colore chat', - chatColorThemeDesc: 'Imposta il tema colore del chatbot', - chatColorThemeInverted: 'Inverso', - invalidHexMessage: 'Valore esadecimale non valido', - invalidPrivacyPolicy: 'Link alla privacy policy non valido. Si prega di utilizzare un link valido che inizi con http o https', - more: { - entry: 'Mostra più impostazioni', - copyright: 'Copyright', - copyRightPlaceholder: - 'Inserisci il nome dell\'autore o dell\'organizzazione', - privacyPolicy: 'Privacy Policy', - privacyPolicyPlaceholder: 'Inserisci il link alla privacy policy', - privacyPolicyTip: - 'Aiuta i visitatori a capire i dati raccolti dall\'applicazione, vedi la Privacy Policy di Dify.', - customDisclaimer: 'Disclaimer Personalizzato', - customDisclaimerPlaceholder: - 'Inserisci il testo del disclaimer personalizzato', - customDisclaimerTip: - 'Il testo del disclaimer personalizzato verrà visualizzato sul lato client, fornendo informazioni aggiuntive sull\'applicazione', - copyrightTip: 'Visualizzare le informazioni sul copyright nella web app', - copyrightTooltip: 'Si prega di eseguire l\'upgrade al piano Professional o superiore', - }, - sso: { - label: 'Autenticazione SSO', - title: 'web app SSO', - description: 'Tutti gli utenti devono effettuare l\'accesso con SSO prima di utilizzare web app', - tooltip: 'Contattare l\'amministratore per abilitare l\'SSO di web app', - }, - modalTip: 'Impostazioni dell\'app Web lato client.', - }, - embedded: { - entry: 'Incorporato', - title: 'Incorpora sul sito web', - explanation: 'Scegli come incorporare l\'app chat nel tuo sito web', - iframe: - 'Per aggiungere l\'app chat ovunque sul tuo sito web, aggiungi questo iframe al tuo codice HTML.', - scripts: - 'Per aggiungere un\'app chat in basso a destra del tuo sito web, aggiungi questo codice al tuo HTML.', - chromePlugin: 'Installa l\'estensione Chrome di Dify Chatbot', - copied: 'Copiato', - copy: 'Copia', - }, - qrcode: { - title: 'Codice QR per condividere', - scan: 'Scansiona Condividi Applicazione', - download: 'Scarica Codice QR', - }, - customize: { - way: 'modo', - entry: 'Personalizza', - title: 'Personalizza AI web app', - explanation: - 'Puoi personalizzare il frontend della Web App per adattarla alle tue esigenze di scenario e stile.', - way1: { - name: 'Fork il codice client, modificalo e distribuiscilo su Vercel (consigliato)', - step1: 'Fork il codice client e modificalo', - step1Tip: - 'Clicca qui per fork il codice sorgente nel tuo account GitHub e modifica il codice', - step1Operation: 'Dify-WebClient', - step2: 'Distribuisci su Vercel', - step2Tip: - 'Clicca qui per importare il repository su Vercel e distribuisci', - step2Operation: 'Importa repository', - step3: 'Configura le variabili di ambiente', - step3Tip: 'Aggiungi le seguenti variabili di ambiente su Vercel', - }, - way2: { - name: 'Scrivi codice lato client per chiamare l\'API e distribuiscilo su un server', - operation: 'Documentazione', - }, - }, - launch: 'Lanciare', - enableTooltip: { - description: 'Per abilitare questa funzione, aggiungi un nodo di input utente alla tela. (Potrebbe già esistere nella bozza, efficace dopo la pubblicazione)', - learnMore: 'Scopri di più', - }, - title: 'App Web', - }, - apiInfo: { - title: 'API del servizio backend', - explanation: 'Facilmente integrabile nella tua applicazione', - accessibleAddress: 'Endpoint del servizio API', - doc: 'Riferimento API', - }, - status: { - running: 'In servizio', - disable: 'Disabilita', - }, - triggerInfo: { - title: 'Inneschi', - explanation: 'Gestione dei trigger del flusso di lavoro', - triggersAdded: 'Trigger aggiunti', - noTriggerAdded: 'Nessun trigger aggiunto', - triggerStatusDescription: 'Lo stato del nodo trigger appare qui. (Può già esistere in bozza, prende effetto dopo la pubblicazione)', - learnAboutTriggers: 'Scopri i Trigger', - }, - disableTooltip: { - triggerMode: 'La funzionalità {{feature}} non è supportata in modalità Nodo Trigger.', - }, - }, - analysis: { - title: 'Analisi', - ms: 'ms', - tokenPS: 'Token/s', - totalMessages: { - title: 'Totale Messaggi', - explanation: 'Conteggio delle interazioni giornaliere con l\'IA.', - }, - totalConversations: { - title: 'Conversazioni totali', - explanation: 'Conteggio delle conversazioni giornaliere con l\'IA; ingegneria/debug dei prompt esclusi.', - }, - activeUsers: { - title: 'Utenti Attivi', - explanation: - 'Utenti unici che interagiscono in Q&A con l\'AI; ingegneria dei prompt/debug esclusi.', - }, - tokenUsage: { - title: 'Uso dei Token', - explanation: - 'Riflette l\'uso giornaliero dei token del modello linguistico per l\'applicazione, utile per il controllo dei costi.', - consumed: 'Consumati', - }, - avgSessionInteractions: { - title: 'Interazioni Medie per Sessione', - explanation: - 'Conteggio continuo delle comunicazioni utente-AI; per applicazioni basate su conversazione.', - }, - avgUserInteractions: { - title: 'Interazioni Medie per Utente', - explanation: - 'Riflette la frequenza giornaliera di utilizzo degli utenti. Questo parametro riflette la fedeltà degli utenti.', - }, - userSatisfactionRate: { - title: 'Tasso di Soddisfazione degli Utenti', - explanation: - 'Il numero di mi piace per 1.000 messaggi. Indica la proporzione di risposte con cui gli utenti sono molto soddisfatti.', - }, - avgResponseTime: { - title: 'Tempo Medio di Risposta', - explanation: - 'Tempo (ms) per l\'AI per elaborare/rispondere; per applicazioni basate su testo.', - }, - tps: { - title: 'Velocità di Output dei Token', - explanation: - 'Misura le prestazioni del LLM. Conta la velocità di output dei token del LLM dall\'inizio della richiesta al completamento dell\'output.', - }, - }, -} - -export default translation diff --git a/web/i18n/it-IT/app.json b/web/i18n/it-IT/app.json new file mode 100644 index 0000000000..f830ee9649 --- /dev/null +++ b/web/i18n/it-IT/app.json @@ -0,0 +1,345 @@ +{ + "createApp": "CREA APP", + "types": { + "all": "Tutti", + "chatbot": "Chatbot", + "agent": "Agente", + "workflow": "Flusso di lavoro", + "completion": "Completamento", + "advanced": "Flusso di chat", + "basic": "Basico" + }, + "duplicate": "Duplica", + "duplicateTitle": "Duplica App", + "export": "Esporta DSL", + "exportFailed": "Esportazione DSL fallita.", + "importDSL": "Importa file DSL", + "createFromConfigFile": "Crea da file DSL", + "deleteAppConfirmTitle": "Eliminare questa app?", + "deleteAppConfirmContent": "Eliminare l'app è irreversibile. Gli utenti non potranno più accedere alla tua app e tutte le configurazioni e i log dei prompt verranno eliminati permanentemente.", + "appDeleted": "App eliminata", + "appDeleteFailed": "Eliminazione dell'app fallita", + "join": "Unisciti alla comunità", + "communityIntro": "Discuta con membri del team, collaboratori e sviluppatori su diversi canali.", + "roadmap": "Vedi la nostra roadmap", + "newApp": { + "startFromBlank": "Crea da zero", + "startFromTemplate": "Crea da modello", + "workflowWarning": "Attualmente in beta", + "captionName": "Icona e nome dell'app", + "appNamePlaceholder": "Dai un nome alla tua app", + "captionDescription": "Descrizione", + "appDescriptionPlaceholder": "Inserisci la descrizione dell'app", + "useTemplate": "Usa questo modello", + "previewDemo": "Anteprima demo", + "chatApp": "Assistente", + "chatAppIntro": "Voglio creare un'applicazione basata sulla chat. Questa app utilizza un formato domanda-e-risposta, consentendo più round di conversazione continua.", + "agentAssistant": "Nuovo Agente Assistente", + "completeApp": "Generatore di Testi", + "completeAppIntro": "Voglio creare un'applicazione che genera testo di alta qualità basato sui prompt, come articoli, riassunti, traduzioni e altro.", + "showTemplates": "Voglio scegliere da un modello", + "hideTemplates": "Torna alla selezione della modalità", + "Create": "Crea", + "Cancel": "Annulla", + "nameNotEmpty": "Il nome non può essere vuoto", + "appTemplateNotSelected": "Seleziona un modello", + "appTypeRequired": "Seleziona un tipo di app", + "appCreated": "App creata", + "appCreateFailed": "Creazione dell'app fallita", + "Confirm": "Confermare", + "appCreateDSLErrorPart2": "Vuoi continuare?", + "appCreateDSLErrorPart3": "Versione DSL dell'applicazione corrente:", + "appCreateDSLErrorPart1": "È stata rilevata una differenza significativa nelle versioni DSL. Forzare l'importazione può causare il malfunzionamento dell'applicazione.", + "caution": "Cautela", + "appCreateDSLErrorTitle": "Incompatibilità di versione", + "appCreateDSLWarning": "Attenzione: la differenza di versione DSL può influire su alcune funzionalità", + "appCreateDSLErrorPart4": "Versione DSL supportata dal sistema:", + "forBeginners": "Tipi di app più semplici", + "noAppsFound": "Nessuna app trovata", + "noTemplateFoundTip": "Prova a cercare utilizzando parole chiave diverse.", + "foundResults": "{{conteggio}} Risultati", + "chatbotShortDescription": "Chatbot basato su LLM con configurazione semplice", + "forAdvanced": "PER UTENTI AVANZATI", + "workflowShortDescription": "Flusso agentico per automazioni intelligenti", + "foundResult": "{{conteggio}} Risultato", + "noIdeaTip": "Non hai idee? Dai un'occhiata ai nostri modelli", + "completionShortDescription": "Assistente AI per le attività di generazione del testo", + "optional": "Opzionale", + "learnMore": "Ulteriori informazioni", + "noTemplateFound": "Nessun modello trovato", + "chatbotUserDescription": "Crea rapidamente un chatbot basato su LLM con una configurazione semplice. Puoi passare a Chatflow in un secondo momento.", + "agentShortDescription": "Agente intelligente con ragionamento e uso autonomo degli strumenti", + "completionUserDescription": "Crea rapidamente un assistente AI per le attività di generazione di testo con una configurazione semplice.", + "advancedUserDescription": "Flusso di lavoro con funzioni di memoria e interfaccia di chatbot.", + "workflowUserDescription": "Crea flussi di lavoro AI autonomi visivamente con la semplicità del drag-and-drop.", + "agentUserDescription": "Un agente intelligente in grado di ragionare in modo iterativo e di utilizzare autonomamente gli strumenti per raggiungere gli obiettivi del compito.", + "advancedShortDescription": "Flusso di lavoro migliorato per conversazioni multiple", + "chooseAppType": "Scegli un tipo di app", + "dropDSLToCreateApp": "Trascina il file DSL qui per creare l'app", + "import": "Importazione" + }, + "editApp": "Modifica Info", + "editAppTitle": "Modifica Info App", + "editDone": "Info app aggiornata", + "editFailed": "Aggiornamento delle info dell'app fallito", + "iconPicker": { + "ok": "OK", + "cancel": "Annulla", + "emoji": "Emoji", + "image": "Immagine" + }, + "switch": "Passa a Orchestrazione del flusso di lavoro", + "switchTipStart": "Verrà creata una nuova copia dell'app per te, e la nuova copia passerà a Orchestrazione del flusso di lavoro. La nuova copia ", + "switchTip": "non permetterà", + "switchTipEnd": " di tornare a Orchestrazione di base.", + "switchLabel": "La copia dell'app da creare", + "removeOriginal": "Elimina l'app originale", + "switchStart": "Inizia il passaggio", + "typeSelector": { + "all": "TUTTI I Tipi", + "chatbot": "Chatbot", + "agent": "Agente", + "workflow": "Flusso di lavoro", + "completion": "Completamento", + "advanced": "Flusso di chat" + }, + "tracing": { + "title": "Tracciamento delle prestazioni dell'app", + "description": "Configurazione di un provider LLMOps di terze parti e tracciamento delle prestazioni dell'app.", + "config": "Config", + "collapse": "Comprimi", + "expand": "Espandi", + "tracing": "Tracciamento", + "disabled": "Disabilitato", + "disabledTip": "Configura prima il provider", + "enabled": "In servizio", + "tracingDescription": "Cattura il contesto completo dell'esecuzione dell'app, incluse chiamate LLM, contesto, prompt, richieste HTTP e altro, su una piattaforma di tracciamento di terze parti.", + "configProviderTitle": { + "configured": "Configurato", + "notConfigured": "Configura il provider per abilitare il tracciamento", + "moreProvider": "Altri Provider" + }, + "arize": { + "title": "Arize", + "description": "Osservabilità LLM di livello aziendale, valutazione online e offline, monitoraggio e sperimentazione—alimentata da OpenTelemetry. Progettata appositamente per applicazioni basate su LLM e agenti." + }, + "phoenix": { + "title": "Phoenix", + "description": "Piattaforma open-source basata su OpenTelemetry per osservabilità, valutazione, ingegneria dei prompt e sperimentazione per i tuoi flussi di lavoro e agenti LLM." + }, + "langsmith": { + "title": "LangSmith", + "description": "Una piattaforma all-in-one per sviluppatori per ogni fase del ciclo di vita delle applicazioni alimentate da LLM." + }, + "langfuse": { + "title": "Langfuse", + "description": "Tracce, valutazioni, gestione dei prompt e metriche per debug e miglioramento della tua applicazione LLM." + }, + "inUse": "In uso", + "configProvider": { + "title": "Config ", + "placeholder": "Inserisci il tuo {{key}}", + "project": "Progetto", + "publicKey": "Chiave pubblica", + "secretKey": "Chiave segreta", + "viewDocsLink": "Visualizza documenti di {{key}}", + "removeConfirmTitle": "Rimuovere la configurazione di {{key}}?", + "removeConfirmContent": "La configurazione attuale è in uso, rimuovendola disattiverà la funzione di Tracciamento.", + "password": "Password", + "clientId": "ID client OAuth", + "username": "Nome utente", + "trackingUri": "URI di tracciamento", + "personalAccessToken": "Token di accesso personale (legacy)", + "clientSecret": "Segreto del client OAuth", + "experimentId": "ID Esperimento", + "databricksHost": "URL dell'area di lavoro Databricks" + }, + "view": "Vista", + "opik": { + "description": "Opik è una piattaforma open source per la valutazione, il test e il monitoraggio delle applicazioni LLM.", + "title": "Opik" + }, + "weave": { + "title": "Intrecciare", + "description": "Weave è una piattaforma open-source per valutare, testare e monitorare le applicazioni LLM." + }, + "aliyun": { + "title": "Monitoraggio Cloud", + "description": "La piattaforma di osservabilità completamente gestita e senza manutenzione fornita da Alibaba Cloud consente il monitoraggio, il tracciamento e la valutazione delle applicazioni Dify fin da subito." + }, + "mlflow": { + "title": "MLflow", + "description": "Piattaforma LLMOps open source per il tracciamento degli esperimenti, l'osservabilità e la valutazione, per costruire app AI/LLM con sicurezza." + }, + "databricks": { + "title": "Databricks", + "description": "Databricks offre MLflow completamente gestito con forte governance e sicurezza per memorizzare i dati di tracciamento." + }, + "tencent": { + "title": "Tencent APM", + "description": "Tencent Application Performance Monitoring fornisce tracciamento completo e analisi multidimensionale per le applicazioni LLM." + } + }, + "answerIcon": { + "description": "Se utilizzare l'icona web app per la sostituzione 🤖 nell'applicazione condivisa", + "title": "Usa l'icona web app per sostituire 🤖", + "descriptionInExplore": "Se utilizzare l'icona web app per sostituirla 🤖 in Esplora" + }, + "importFromDSLUrl": "Dall'URL", + "importFromDSLFile": "Da file DSL", + "importFromDSL": "Importazione da DSL", + "importFromDSLUrlPlaceholder": "Incolla qui il link DSL", + "dslUploader": { + "button": "Trascina e rilascia il file, o", + "browse": "Sfoglia" + }, + "mermaid": { + "handDrawn": "Disegnato a mano", + "classic": "Classico" + }, + "openInExplore": "Apri in Esplora", + "newAppFromTemplate": { + "sidebar": { + "Programming": "Programmazione", + "Writing": "Scrittura", + "Recommended": "Raccomandato", + "Agent": "Agente", + "Assistant": "Assistente", + "HR": "HR", + "Workflow": "Flusso di lavoro" + }, + "byCategories": "PER CATEGORIE", + "searchAllTemplate": "Cerca in tutti i modelli..." + }, + "showMyCreatedAppsOnly": "Mostra solo le mie app create", + "appSelector": { + "params": "PARAMETRI DELL'APP", + "noParams": "Non sono necessari parametri", + "placeholder": "Seleziona un'app...", + "label": "APP" + }, + "structOutput": { + "modelNotSupported": "Modello non supportato", + "configure": "Configura", + "LLMResponse": "LLM Risposta", + "structured": "Strutturato", + "moreFillTip": "Mostrando un massimo di 10 livelli di annidamento", + "structuredTip": "Le Uscite Strutturate sono una funzione che garantisce che il modello generi sempre risposte che aderiscano al tuo Schema JSON fornito.", + "notConfiguredTip": "L'output strutturato non è stato ancora configurato.", + "modelNotSupportedTip": "Il modello attuale non supporta questa funzione e viene automaticamente downgradato a iniezione di prompt.", + "required": "Necessario" + }, + "accessItemsDescription": { + "anyone": "Chiunque può accedere all'app web", + "specific": "Solo gruppi o membri specifici possono accedere all'app web.", + "organization": "Qualsiasi persona nell'organizzazione può accedere all'app web", + "external": "Solo gli utenti esterni autenticati possono accedere all'applicazione Web" + }, + "accessControlDialog": { + "accessItems": { + "anyone": "Chiunque con il link", + "specific": "Gruppi o membri specifici", + "organization": "Solo i membri all'interno dell'impresa", + "external": "Utenti esterni autenticati" + }, + "operateGroupAndMember": { + "searchPlaceholder": "Cerca gruppi e membri", + "allMembers": "Tutti i membri", + "expand": "Espandere", + "noResult": "Nessun risultato" + }, + "title": "Controllo di accesso all'app web", + "description": "Imposta le autorizzazioni di accesso all'app web", + "accessLabel": "Chi ha accesso", + "groups_one": "{{count}} GRUPPO", + "groups_other": "{{count}} GRUPPI", + "members_one": "{{count}} MEMBRO", + "members_other": "{{count}} MEMBRI", + "noGroupsOrMembers": "Nessun gruppo o membro selezionato", + "webAppSSONotEnabledTip": "Si prega di contattare l'amministratore dell'impresa per configurare il metodo di autenticazione dell'app web.", + "updateSuccess": "Aggiornamento avvenuto con successo" + }, + "publishApp": { + "title": "Chi può accedere all'app web", + "notSet": "Non impostato", + "notSetDesc": "Attualmente nessuno può accedere all'app web. Si prega di impostare i permessi." + }, + "accessControl": "Controllo di accesso all'app web", + "noAccessPermission": "Nessun permesso per accedere all'app web", + "maxActiveRequestsPlaceholder": "Inserisci 0 per illimitato", + "maxActiveRequests": "Massimo numero di richieste concorrenti", + "maxActiveRequestsTip": "Numero massimo di richieste attive concorrenti per app (0 per illimitato)", + "gotoAnything": { + "actions": { + "searchWorkflowNodesHelp": "Questa funzione funziona solo durante la visualizzazione di un flusso di lavoro. Passa prima a un flusso di lavoro.", + "searchApplicationsDesc": "Cerca e naviga alle tue applicazioni", + "searchWorkflowNodes": "Ricerca nei nodi del flusso di lavoro", + "searchApplications": "Cerca applicazioni", + "searchPluginsDesc": "Cerca e naviga verso i tuoi plugin", + "searchKnowledgeBasesDesc": "Cerca e naviga nelle tue knowledge base", + "searchPlugins": "Cerca plugin", + "searchWorkflowNodesDesc": "Trovare e passare ai nodi nel flusso di lavoro corrente in base al nome o al tipo", + "searchKnowledgeBases": "Cerca nelle Basi di Conoscenza", + "themeCategoryTitle": "Tema", + "themeDarkDesc": "Usa l'aspetto scuro", + "languageCategoryTitle": "Lingua", + "themeLight": "Tema Chiaro", + "themeSystem": "Tema di sistema", + "runTitle": "Comandi", + "themeDark": "Tema scuro", + "themeLightDesc": "Usa un aspetto chiaro", + "themeCategoryDesc": "Cambia tema dell'applicazione", + "languageCategoryDesc": "Cambia lingua dell'interfaccia", + "languageChangeDesc": "Cambia lingua dell'interfaccia", + "runDesc": "Esegui comandi rapidi (tema, lingua, ...)", + "themeSystemDesc": "Segui l'aspetto del tuo sistema operativo", + "slashDesc": "Esegui comandi come /theme, /lang", + "communityDesc": "Apri la community di Discord", + "accountDesc": "Vai alla pagina dell'account", + "feedbackDesc": "Discussioni di feedback della comunità aperta", + "docDesc": "Apri la documentazione di aiuto", + "zenTitle": "Zen Mode", + "zenDesc": "Toggle canvas focus mode" + }, + "emptyState": { + "noKnowledgeBasesFound": "Nessuna base di conoscenza trovata", + "noAppsFound": "Nessuna app trovata", + "noWorkflowNodesFound": "Nessun nodo del flusso di lavoro trovato", + "noPluginsFound": "Nessun plugin trovato", + "tryDifferentTerm": "Prova un termine di ricerca diverso o rimuovi il filtro {{mode}}", + "trySpecificSearch": "Prova {{shortcuts}} per ricerche specifiche" + }, + "groups": { + "knowledgeBases": "Basi di conoscenza", + "workflowNodes": "Nodi del flusso di lavoro", + "plugins": "Plugin", + "apps": "Applicazioni", + "commands": "Comandi" + }, + "searchTitle": "Cerca qualsiasi cosa", + "searchPlaceholder": "Cerca o digita @ per i comandi...", + "searching": "Ricerca in corso...", + "searchTemporarilyUnavailable": "Ricerca temporaneamente non disponibile", + "searchFailed": "Ricerca non riuscita", + "servicesUnavailableMessage": "Alcuni servizi di ricerca potrebbero riscontrare problemi. Riprova tra un attimo.", + "someServicesUnavailable": "Alcuni servizi di ricerca non sono disponibili", + "noResults": "Nessun risultato trovato", + "useAtForSpecific": "Utilizzare @ per tipi specifici", + "clearToSearchAll": "Cancella @ per cercare tutto", + "selectSearchType": "Scegli cosa cercare", + "commandHint": "Digita @ per sfogliare per categoria", + "searchHint": "Inizia a digitare per cercare tutto all'istante", + "resultCount": "{{count}} risultato", + "resultCount_other": "{{count}} risultati", + "inScope": "in {{scope}}s", + "tryDifferentSearch": "Prova un termine di ricerca diverso", + "noMatchingCommands": "Nessun comando corrispondente trovato", + "slashHint": "Digita / per vedere tutti i comandi disponibili", + "selectToNavigate": "Seleziona per navigare", + "startTyping": "Inizia a digitare per cercare", + "tips": "Premi ↑↓ per navigare", + "pressEscToClose": "Premi ESC per chiudere" + }, + "noUserInputNode": "Nodo di input utente mancante", + "notPublishedYet": "L'app non è ancora pubblicata" +} diff --git a/web/i18n/it-IT/app.ts b/web/i18n/it-IT/app.ts deleted file mode 100644 index e168b6be90..0000000000 --- a/web/i18n/it-IT/app.ts +++ /dev/null @@ -1,357 +0,0 @@ -const translation = { - createApp: 'CREA APP', - types: { - all: 'Tutti', - chatbot: 'Chatbot', - agent: 'Agente', - workflow: 'Flusso di lavoro', - completion: 'Completamento', - advanced: 'Flusso di chat', - basic: 'Basico', - }, - duplicate: 'Duplica', - duplicateTitle: 'Duplica App', - export: 'Esporta DSL', - exportFailed: 'Esportazione DSL fallita.', - importDSL: 'Importa file DSL', - createFromConfigFile: 'Crea da file DSL', - deleteAppConfirmTitle: 'Eliminare questa app?', - deleteAppConfirmContent: - 'Eliminare l\'app è irreversibile. Gli utenti non potranno più accedere alla tua app e tutte le configurazioni e i log dei prompt verranno eliminati permanentemente.', - appDeleted: 'App eliminata', - appDeleteFailed: 'Eliminazione dell\'app fallita', - join: 'Unisciti alla comunità', - communityIntro: - 'Discuta con membri del team, collaboratori e sviluppatori su diversi canali.', - roadmap: 'Vedi la nostra roadmap', - newApp: { - startFromBlank: 'Crea da zero', - startFromTemplate: 'Crea da modello', - workflowWarning: 'Attualmente in beta', - captionName: 'Icona e nome dell\'app', - appNamePlaceholder: 'Dai un nome alla tua app', - captionDescription: 'Descrizione', - appDescriptionPlaceholder: 'Inserisci la descrizione dell\'app', - useTemplate: 'Usa questo modello', - previewDemo: 'Anteprima demo', - chatApp: 'Assistente', - chatAppIntro: - 'Voglio creare un\'applicazione basata sulla chat. Questa app utilizza un formato domanda-e-risposta, consentendo più round di conversazione continua.', - agentAssistant: 'Nuovo Agente Assistente', - completeApp: 'Generatore di Testi', - completeAppIntro: - 'Voglio creare un\'applicazione che genera testo di alta qualità basato sui prompt, come articoli, riassunti, traduzioni e altro.', - showTemplates: 'Voglio scegliere da un modello', - hideTemplates: 'Torna alla selezione della modalità', - Create: 'Crea', - Cancel: 'Annulla', - nameNotEmpty: 'Il nome non può essere vuoto', - appTemplateNotSelected: 'Seleziona un modello', - appTypeRequired: 'Seleziona un tipo di app', - appCreated: 'App creata', - appCreateFailed: 'Creazione dell\'app fallita', - Confirm: 'Confermare', - appCreateDSLErrorPart2: 'Vuoi continuare?', - appCreateDSLErrorPart3: 'Versione DSL dell\'applicazione corrente:', - appCreateDSLErrorPart1: 'È stata rilevata una differenza significativa nelle versioni DSL. Forzare l\'importazione può causare il malfunzionamento dell\'applicazione.', - caution: 'Cautela', - appCreateDSLErrorTitle: 'Incompatibilità di versione', - appCreateDSLWarning: 'Attenzione: la differenza di versione DSL può influire su alcune funzionalità', - appCreateDSLErrorPart4: 'Versione DSL supportata dal sistema:', - forBeginners: 'Tipi di app più semplici', - noAppsFound: 'Nessuna app trovata', - noTemplateFoundTip: 'Prova a cercare utilizzando parole chiave diverse.', - foundResults: '{{conteggio}} Risultati', - chatbotShortDescription: 'Chatbot basato su LLM con configurazione semplice', - forAdvanced: 'PER UTENTI AVANZATI', - workflowShortDescription: 'Flusso agentico per automazioni intelligenti', - foundResult: '{{conteggio}} Risultato', - noIdeaTip: 'Non hai idee? Dai un\'occhiata ai nostri modelli', - completionShortDescription: 'Assistente AI per le attività di generazione del testo', - optional: 'Opzionale', - learnMore: 'Ulteriori informazioni', - noTemplateFound: 'Nessun modello trovato', - chatbotUserDescription: 'Crea rapidamente un chatbot basato su LLM con una configurazione semplice. Puoi passare a Chatflow in un secondo momento.', - agentShortDescription: 'Agente intelligente con ragionamento e uso autonomo degli strumenti', - completionUserDescription: 'Crea rapidamente un assistente AI per le attività di generazione di testo con una configurazione semplice.', - advancedUserDescription: 'Flusso di lavoro con funzioni di memoria e interfaccia di chatbot.', - workflowUserDescription: 'Crea flussi di lavoro AI autonomi visivamente con la semplicità del drag-and-drop.', - agentUserDescription: 'Un agente intelligente in grado di ragionare in modo iterativo e di utilizzare autonomamente gli strumenti per raggiungere gli obiettivi del compito.', - advancedShortDescription: 'Flusso di lavoro migliorato per conversazioni multiple', - chooseAppType: 'Scegli un tipo di app', - dropDSLToCreateApp: 'Trascina il file DSL qui per creare l\'app', - import: 'Importazione', - }, - editApp: 'Modifica Info', - editAppTitle: 'Modifica Info App', - editDone: 'Info app aggiornata', - editFailed: 'Aggiornamento delle info dell\'app fallito', - iconPicker: { - ok: 'OK', - cancel: 'Annulla', - emoji: 'Emoji', - image: 'Immagine', - }, - switch: 'Passa a Orchestrazione del flusso di lavoro', - switchTipStart: - 'Verrà creata una nuova copia dell\'app per te, e la nuova copia passerà a Orchestrazione del flusso di lavoro. La nuova copia ', - switchTip: 'non permetterà', - switchTipEnd: ' di tornare a Orchestrazione di base.', - switchLabel: 'La copia dell\'app da creare', - removeOriginal: 'Elimina l\'app originale', - switchStart: 'Inizia il passaggio', - typeSelector: { - all: 'TUTTI I Tipi', - chatbot: 'Chatbot', - agent: 'Agente', - workflow: 'Flusso di lavoro', - completion: 'Completamento', - advanced: 'Flusso di chat', - }, - tracing: { - title: 'Tracciamento delle prestazioni dell\'app', - description: - 'Configurazione di un provider LLMOps di terze parti e tracciamento delle prestazioni dell\'app.', - config: 'Config', - collapse: 'Comprimi', - expand: 'Espandi', - tracing: 'Tracciamento', - disabled: 'Disabilitato', - disabledTip: 'Configura prima il provider', - enabled: 'In servizio', - tracingDescription: - 'Cattura il contesto completo dell\'esecuzione dell\'app, incluse chiamate LLM, contesto, prompt, richieste HTTP e altro, su una piattaforma di tracciamento di terze parti.', - configProviderTitle: { - configured: 'Configurato', - notConfigured: 'Configura il provider per abilitare il tracciamento', - moreProvider: 'Altri Provider', - }, - arize: { - title: 'Arize', - description: 'Osservabilità LLM di livello aziendale, valutazione online e offline, monitoraggio e sperimentazione—alimentata da OpenTelemetry. Progettata appositamente per applicazioni basate su LLM e agenti.', - }, - phoenix: { - title: 'Phoenix', - description: 'Piattaforma open-source basata su OpenTelemetry per osservabilità, valutazione, ingegneria dei prompt e sperimentazione per i tuoi flussi di lavoro e agenti LLM.', - }, - langsmith: { - title: 'LangSmith', - description: - 'Una piattaforma all-in-one per sviluppatori per ogni fase del ciclo di vita delle applicazioni alimentate da LLM.', - }, - langfuse: { - title: 'Langfuse', - description: - 'Tracce, valutazioni, gestione dei prompt e metriche per debug e miglioramento della tua applicazione LLM.', - }, - inUse: 'In uso', - configProvider: { - title: 'Config ', - placeholder: 'Inserisci il tuo {{key}}', - project: 'Progetto', - publicKey: 'Chiave pubblica', - secretKey: 'Chiave segreta', - viewDocsLink: 'Visualizza documenti di {{key}}', - removeConfirmTitle: 'Rimuovere la configurazione di {{key}}?', - removeConfirmContent: - 'La configurazione attuale è in uso, rimuovendola disattiverà la funzione di Tracciamento.', - password: 'Password', - clientId: 'ID client OAuth', - username: 'Nome utente', - trackingUri: 'URI di tracciamento', - personalAccessToken: 'Token di accesso personale (legacy)', - clientSecret: 'Segreto del client OAuth', - experimentId: 'ID Esperimento', - databricksHost: 'URL dell\'area di lavoro Databricks', - }, - view: 'Vista', - opik: { - description: 'Opik è una piattaforma open source per la valutazione, il test e il monitoraggio delle applicazioni LLM.', - title: 'Opik', - }, - weave: { - title: 'Intrecciare', - description: 'Weave è una piattaforma open-source per valutare, testare e monitorare le applicazioni LLM.', - }, - aliyun: { - title: 'Monitoraggio Cloud', - description: 'La piattaforma di osservabilità completamente gestita e senza manutenzione fornita da Alibaba Cloud consente il monitoraggio, il tracciamento e la valutazione delle applicazioni Dify fin da subito.', - }, - mlflow: { - title: 'MLflow', - description: 'Piattaforma LLMOps open source per il tracciamento degli esperimenti, l\'osservabilità e la valutazione, per costruire app AI/LLM con sicurezza.', - }, - databricks: { - title: 'Databricks', - description: 'Databricks offre MLflow completamente gestito con forte governance e sicurezza per memorizzare i dati di tracciamento.', - }, - tencent: { - title: 'Tencent APM', - description: 'Tencent Application Performance Monitoring fornisce tracciamento completo e analisi multidimensionale per le applicazioni LLM.', - }, - }, - answerIcon: { - description: 'Se utilizzare l\'icona web app per la sostituzione 🤖 nell\'applicazione condivisa', - title: 'Usa l\'icona web app per sostituire 🤖', - descriptionInExplore: 'Se utilizzare l\'icona web app per sostituirla 🤖 in Esplora', - }, - importFromDSLUrl: 'Dall\'URL', - importFromDSLFile: 'Da file DSL', - importFromDSL: 'Importazione da DSL', - importFromDSLUrlPlaceholder: 'Incolla qui il link DSL', - dslUploader: { - button: 'Trascina e rilascia il file, o', - browse: 'Sfoglia', - }, - mermaid: { - handDrawn: 'Disegnato a mano', - classic: 'Classico', - }, - openInExplore: 'Apri in Esplora', - newAppFromTemplate: { - sidebar: { - Programming: 'Programmazione', - Writing: 'Scrittura', - Recommended: 'Raccomandato', - Agent: 'Agente', - Assistant: 'Assistente', - HR: 'HR', - Workflow: 'Flusso di lavoro', - }, - byCategories: 'PER CATEGORIE', - searchAllTemplate: 'Cerca in tutti i modelli...', - }, - showMyCreatedAppsOnly: 'Mostra solo le mie app create', - appSelector: { - params: 'PARAMETRI DELL\'APP', - noParams: 'Non sono necessari parametri', - placeholder: 'Seleziona un\'app...', - label: 'APP', - }, - structOutput: { - modelNotSupported: 'Modello non supportato', - configure: 'Configura', - LLMResponse: 'LLM Risposta', - structured: 'Strutturato', - moreFillTip: 'Mostrando un massimo di 10 livelli di annidamento', - structuredTip: 'Le Uscite Strutturate sono una funzione che garantisce che il modello generi sempre risposte che aderiscano al tuo Schema JSON fornito.', - notConfiguredTip: 'L\'output strutturato non è stato ancora configurato.', - modelNotSupportedTip: 'Il modello attuale non supporta questa funzione e viene automaticamente downgradato a iniezione di prompt.', - required: 'Necessario', - }, - accessItemsDescription: { - anyone: 'Chiunque può accedere all\'app web', - specific: 'Solo gruppi o membri specifici possono accedere all\'app web.', - organization: 'Qualsiasi persona nell\'organizzazione può accedere all\'app web', - external: 'Solo gli utenti esterni autenticati possono accedere all\'applicazione Web', - }, - accessControlDialog: { - accessItems: { - anyone: 'Chiunque con il link', - specific: 'Gruppi o membri specifici', - organization: 'Solo i membri all\'interno dell\'impresa', - external: 'Utenti esterni autenticati', - }, - operateGroupAndMember: { - searchPlaceholder: 'Cerca gruppi e membri', - allMembers: 'Tutti i membri', - expand: 'Espandere', - noResult: 'Nessun risultato', - }, - title: 'Controllo di accesso all\'app web', - description: 'Imposta le autorizzazioni di accesso all\'app web', - accessLabel: 'Chi ha accesso', - groups_one: '{{count}} GRUPPO', - groups_other: '{{count}} GRUPPI', - members_one: '{{count}} MEMBRO', - members_other: '{{count}} MEMBRI', - noGroupsOrMembers: 'Nessun gruppo o membro selezionato', - webAppSSONotEnabledTip: 'Si prega di contattare l\'amministratore dell\'impresa per configurare il metodo di autenticazione dell\'app web.', - updateSuccess: 'Aggiornamento avvenuto con successo', - }, - publishApp: { - title: 'Chi può accedere all\'app web', - notSet: 'Non impostato', - notSetDesc: 'Attualmente nessuno può accedere all\'app web. Si prega di impostare i permessi.', - }, - accessControl: 'Controllo di accesso all\'app web', - noAccessPermission: 'Nessun permesso per accedere all\'app web', - maxActiveRequestsPlaceholder: 'Inserisci 0 per illimitato', - maxActiveRequests: 'Massimo numero di richieste concorrenti', - maxActiveRequestsTip: 'Numero massimo di richieste attive concorrenti per app (0 per illimitato)', - gotoAnything: { - actions: { - searchWorkflowNodesHelp: 'Questa funzione funziona solo durante la visualizzazione di un flusso di lavoro. Passa prima a un flusso di lavoro.', - searchApplicationsDesc: 'Cerca e naviga alle tue applicazioni', - searchWorkflowNodes: 'Ricerca nei nodi del flusso di lavoro', - searchApplications: 'Cerca applicazioni', - searchPluginsDesc: 'Cerca e naviga verso i tuoi plugin', - searchKnowledgeBasesDesc: 'Cerca e naviga nelle tue knowledge base', - searchPlugins: 'Cerca plugin', - searchWorkflowNodesDesc: 'Trovare e passare ai nodi nel flusso di lavoro corrente in base al nome o al tipo', - searchKnowledgeBases: 'Cerca nelle Basi di Conoscenza', - themeCategoryTitle: 'Tema', - themeDarkDesc: 'Usa l\'aspetto scuro', - languageCategoryTitle: 'Lingua', - themeLight: 'Tema Chiaro', - themeSystem: 'Tema di sistema', - runTitle: 'Comandi', - themeDark: 'Tema scuro', - themeLightDesc: 'Usa un aspetto chiaro', - themeCategoryDesc: 'Cambia tema dell\'applicazione', - languageCategoryDesc: 'Cambia lingua dell\'interfaccia', - languageChangeDesc: 'Cambia lingua dell\'interfaccia', - runDesc: 'Esegui comandi rapidi (tema, lingua, ...)', - themeSystemDesc: 'Segui l\'aspetto del tuo sistema operativo', - slashDesc: 'Esegui comandi come /theme, /lang', - communityDesc: 'Apri la community di Discord', - accountDesc: 'Vai alla pagina dell\'account', - feedbackDesc: 'Discussioni di feedback della comunità aperta', - docDesc: 'Apri la documentazione di aiuto', - zenTitle: 'Zen Mode', - zenDesc: 'Toggle canvas focus mode', - }, - emptyState: { - noKnowledgeBasesFound: 'Nessuna base di conoscenza trovata', - noAppsFound: 'Nessuna app trovata', - noWorkflowNodesFound: 'Nessun nodo del flusso di lavoro trovato', - noPluginsFound: 'Nessun plugin trovato', - tryDifferentTerm: 'Prova un termine di ricerca diverso o rimuovi il filtro {{mode}}', - trySpecificSearch: 'Prova {{shortcuts}} per ricerche specifiche', - }, - groups: { - knowledgeBases: 'Basi di conoscenza', - workflowNodes: 'Nodi del flusso di lavoro', - plugins: 'Plugin', - apps: 'Applicazioni', - commands: 'Comandi', - }, - searchTitle: 'Cerca qualsiasi cosa', - searchPlaceholder: 'Cerca o digita @ per i comandi...', - searching: 'Ricerca in corso...', - searchTemporarilyUnavailable: 'Ricerca temporaneamente non disponibile', - searchFailed: 'Ricerca non riuscita', - servicesUnavailableMessage: 'Alcuni servizi di ricerca potrebbero riscontrare problemi. Riprova tra un attimo.', - someServicesUnavailable: 'Alcuni servizi di ricerca non sono disponibili', - noResults: 'Nessun risultato trovato', - useAtForSpecific: 'Utilizzare @ per tipi specifici', - clearToSearchAll: 'Cancella @ per cercare tutto', - selectSearchType: 'Scegli cosa cercare', - commandHint: 'Digita @ per sfogliare per categoria', - searchHint: 'Inizia a digitare per cercare tutto all\'istante', - resultCount: '{{count}} risultato', - resultCount_other: '{{count}} risultati', - inScope: 'in {{scope}}s', - tryDifferentSearch: 'Prova un termine di ricerca diverso', - noMatchingCommands: 'Nessun comando corrispondente trovato', - slashHint: 'Digita / per vedere tutti i comandi disponibili', - selectToNavigate: 'Seleziona per navigare', - startTyping: 'Inizia a digitare per cercare', - tips: 'Premi ↑↓ per navigare', - pressEscToClose: 'Premi ESC per chiudere', - }, - noUserInputNode: 'Nodo di input utente mancante', - notPublishedYet: 'L\'app non è ancora pubblicata', -} - -export default translation diff --git a/web/i18n/it-IT/billing.json b/web/i18n/it-IT/billing.json new file mode 100644 index 0000000000..f7ac35d896 --- /dev/null +++ b/web/i18n/it-IT/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "Piano Attuale", + "upgradeBtn": { + "plain": "Aggiorna Piano", + "encourage": "Aggiorna Ora", + "encourageShort": "Aggiorna" + }, + "viewBilling": "Gestisci fatturazione e abbonamenti", + "buyPermissionDeniedTip": "Contatta l'amministratore della tua azienda per abbonarti", + "plansCommon": { + "yearlyTip": "Ottieni 2 mesi gratis abbonandoti annualmente!", + "mostPopular": "Più Popolare", + "planRange": { + "monthly": "Mensile", + "yearly": "Annuale" + }, + "month": "mese", + "year": "anno", + "save": "Risparmia ", + "free": "Gratuito", + "currentPlan": "Piano Attuale", + "contractSales": "Contatta vendite", + "contractOwner": "Contatta il responsabile del team", + "startForFree": "Inizia gratis", + "contactSales": "Contatta le vendite", + "talkToSales": "Parla con le vendite", + "modelProviders": "Fornitori di Modelli", + "annotationQuota": "Quota di Annotazione", + "buildApps": "Crea App", + "vectorSpace": "Spazio Vettoriale", + "vectorSpaceTooltip": "Lo Spazio Vettoriale è il sistema di memoria a lungo termine necessario per permettere agli LLM di comprendere i tuoi dati.", + "documentProcessingPriority": "Priorità di Elaborazione Documenti", + "documentProcessingPriorityTip": "Per una maggiore priorità nell'elaborazione dei documenti, aggiorna il tuo piano.", + "documentProcessingPriorityUpgrade": "Elabora più dati con maggiore precisione a velocità più elevate.", + "priority": { + "standard": "Standard", + "priority": "Priorità", + "top-priority": "Massima Priorità" + }, + "logsHistory": "Storico dei Log", + "customTools": "Strumenti Personalizzati", + "unavailable": "Non Disponibile", + "days": "giorni", + "unlimited": "Illimitato", + "support": "Supporto", + "supportItems": { + "communityForums": "Forum della comunità", + "emailSupport": "Supporto via email", + "priorityEmail": "Supporto via email e chat prioritario", + "logoChange": "Cambia logo", + "SSOAuthentication": "Autenticazione SSO", + "personalizedSupport": "Supporto personalizzato", + "dedicatedAPISupport": "Supporto API dedicato", + "customIntegration": "Integrazione e supporto personalizzato", + "ragAPIRequest": "Richieste API RAG", + "bulkUpload": "Caricamento massivo di documenti", + "agentMode": "Modalità Agente", + "workflow": "Flusso di Lavoro", + "llmLoadingBalancing": "Bilanciamento del Carico LLM", + "llmLoadingBalancingTooltip": "Aggiungi più chiavi API ai modelli, bypassando efficacemente i limiti di velocità dell'API." + }, + "comingSoon": "In arrivo", + "member": "Membro", + "memberAfter": "Membro", + "messageRequest": { + "title": "Crediti Messaggi", + "tooltip": "Quote di invocazione dei messaggi per vari piani utilizzando i modelli OpenAI (eccetto gpt4). I messaggi oltre il limite utilizzeranno la tua chiave API OpenAI.", + "titlePerMonth": "{{count,number}} messaggi/mese" + }, + "annotatedResponse": { + "title": "Limiti di Quota di Annotazione", + "tooltip": "La modifica manuale e l'annotazione delle risposte forniscono capacità di risposta a domande personalizzabili di alta qualità per le app. (Applicabile solo nelle app di chat)" + }, + "ragAPIRequestTooltip": "Si riferisce al numero di chiamate API che invocano solo le capacità di elaborazione della base di conoscenza di Dify.", + "receiptInfo": "Solo il proprietario del team e l'amministratore del team possono abbonarsi e visualizzare le informazioni di fatturazione", + "comparePlanAndFeatures": "Confronta piani e caratteristiche", + "teamWorkspace": "{{count,number}} Spazio di lavoro di squadra", + "apiRateLimit": "Limite di richiesta API", + "unlimitedApiRate": "Nessun limite di tasso API", + "freeTrialTipPrefix": "Iscriviti e ricevi un", + "teamMember_one": "{{count,number}} membro del team", + "documents": "{{count,number}} Documenti di Conoscenza", + "apiRateLimitUnit": "{{count,number}}", + "documentsRequestQuota": "{{count,number}}/min Limite di richiesta di conoscenza", + "teamMember_other": "{{count,number}} membri del team", + "freeTrialTip": "prova gratuita di 200 chiamate OpenAI.", + "priceTip": "per spazio di lavoro/", + "self": "Auto-ospitato", + "documentsTooltip": "Quota sul numero di documenti importati dalla Fonte di Dati Conoscitiva.", + "freeTrialTipSuffix": "Nessuna carta di credito richiesta", + "cloud": "Servizio Cloud", + "apiRateLimitTooltip": "Il limite di utilizzo dell'API si applica a tutte le richieste effettuate tramite l'API Dify, comprese la generazione di testo, le conversazioni chat, le esecuzioni di flussi di lavoro e l'elaborazione di documenti.", + "getStarted": "Inizia", + "annualBilling": "Fatturazione annuale", + "documentsRequestQuotaTooltip": "Specifica il numero totale di azioni che un'area di lavoro può eseguire al minuto all'interno della base di conoscenza, compresi la creazione, l'eliminazione, gli aggiornamenti dei dataset, il caricamento di documenti, le modifiche, l'archiviazione e le query sulla base di conoscenza. Questa metrica viene utilizzata per valutare le prestazioni delle richieste alla base di conoscenza. Ad esempio, se un utente di Sandbox esegue 10 test consecutivi in un minuto, la sua area di lavoro sarà temporaneamente limitata dall'eseguire le seguenti azioni per il minuto successivo: creazione, eliminazione, aggiornamenti dei dataset e caricamento o modifica di documenti.", + "startBuilding": "Inizia a costruire", + "taxTip": "Tutti i prezzi degli abbonamenti (mensili/annuali) non includono le tasse applicabili (ad esempio, IVA, imposta sulle vendite).", + "taxTipSecond": "Se nella tua regione non ci sono requisiti fiscali applicabili, nessuna tassa apparirà al momento del pagamento e non ti verranno addebitate spese aggiuntive per l'intera durata dell'abbonamento.", + "triggerEvents": { + "unlimited": "Eventi di attivazione illimitati", + "tooltip": "Il numero di eventi che avviano automaticamente i flussi di lavoro tramite trigger Plugin, Pianificazione o Webhook.", + "sandbox": "{{count,number}} Eventi di attivazione", + "professional": "{{count,number}} Eventi attivati/mese" + }, + "workflowExecution": { + "priority": "Esecuzione del flusso di lavoro prioritario", + "faster": "Esecuzione del flusso di lavoro più rapida", + "standard": "Esecuzione del flusso di lavoro standard", + "tooltip": "Priorità e velocità della coda di esecuzione del flusso di lavoro." + }, + "startNodes": { + "unlimited": "Eventi di attivazione/workflow illimitati", + "limited": "Fino a {{count}} trigger/workflow" + }, + "title": { + "plans": "piani", + "description": "Seleziona il piano che meglio si adatta alle esigenze del tuo team." + } + }, + "plans": { + "sandbox": { + "name": "Sandbox", + "description": "200 prove gratuite di GPT", + "for": "Prova gratuita delle capacità principali" + }, + "professional": { + "name": "Professional", + "description": "Per individui e piccoli team per sbloccare più potenza a prezzi accessibili.", + "for": "Per sviluppatori indipendenti/piccoli team" + }, + "team": { + "name": "Team", + "description": "Collabora senza limiti e goditi prestazioni di alto livello.", + "for": "Per team di medie dimensioni" + }, + "enterprise": { + "name": "Enterprise", + "description": "Ottieni tutte le capacità e il supporto per sistemi mission-critical su larga scala.", + "includesTitle": "Tutto nel piano Team, più:", + "features": [ + "Soluzioni di Distribuzione Scalabili di Classe Aziendale", + "Autorizzazione alla Licenza Commerciale", + "Funzionalità Esclusive per le Aziende", + "Molteplici Spazi di Lavoro e Gestione Aziendale", + "SSO", + "SLA negoziati dai partner Dify", + "Sicurezza e Controlli Avanzati", + "Aggiornamenti e manutenzione da Dify ufficialmente", + "Assistenza Tecnica Professionale" + ], + "price": "Personalizzato", + "for": "Per team di grandi dimensioni", + "btnText": "Contatta le vendite", + "priceTip": "Solo fatturazione annuale" + }, + "community": { + "features": [ + "Tutte le funzionalità principali rilasciate nel repository pubblico", + "Spazio di lavoro singolo", + "Conforme alla Licenza Open Source Dify" + ], + "name": "Comunità", + "btnText": "Inizia con la comunità", + "includesTitle": "Caratteristiche Gratuite:", + "description": "Per utenti individuali, piccole squadre o progetti non commerciali", + "price": "Gratuito", + "for": "Per utenti individuali, piccole squadre o progetti non commerciali" + }, + "premium": { + "features": [ + "Affidabilità Autogestita dai Vari Provider Cloud", + "Spazio di lavoro singolo", + "Personalizzazione del Logo e del Marchio dell'App Web", + "Assistenza Prioritaria via Email e Chat" + ], + "name": "Premium", + "priceTip": "Basato su Cloud Marketplace", + "includesTitle": "Tutto dalla Community, oltre a:", + "description": "Per organizzazioni e team di medie dimensioni", + "for": "Per organizzazioni e team di medie dimensioni", + "btnText": "Ottieni Premium in", + "price": "Scalabile", + "comingSoon": "Supporto di Microsoft Azure e Google Cloud in arrivo presto" + } + }, + "vectorSpace": { + "fullTip": "Lo Spazio Vettoriale è pieno.", + "fullSolution": "Aggiorna il tuo piano per ottenere più spazio." + }, + "apps": { + "fullTip1des": "Hai raggiunto il limite di costruzione delle app su questo piano.", + "fullTip2des": "Si consiglia di disinstallare le applicazioni inattive per liberare spazio, o contattarci.", + "contactUs": "Contattaci", + "fullTip2": "Limite del piano raggiunto", + "fullTip1": "Aggiorna per creare più app" + }, + "annotatedResponse": { + "fullTipLine1": "Aggiorna il tuo piano per", + "fullTipLine2": "annotare più conversazioni.", + "quotaTitle": "Quota di Risposta Annotata" + }, + "usagePage": { + "buildApps": "Costruisci app", + "vectorSpace": "Archiviazione dei dati conoscitivi", + "annotationQuota": "Quota di annotazione", + "teamMembers": "Membri del team", + "documentsUploadQuota": "Quota di Caricamento Documenti", + "vectorSpaceTooltip": "I documenti con la modalità di indicizzazione ad alta qualità consumeranno risorse di Knowledge Data Storage. Quando il Knowledge Data Storage raggiunge il limite, nuovi documenti non verranno caricati.", + "perMonth": "al mese", + "triggerEvents": "Eventi di attivazione", + "resetsIn": "Si resetta tra {{count,number}} giorni" + }, + "teamMembers": "Membri del team", + "triggerLimitModal": { + "upgrade": "Aggiornamento", + "dismiss": "Ignora", + "usageTitle": "EVENTI DI ATTIVAZIONE", + "title": "Aggiorna per sbloccare più eventi di attivazione", + "description": "Hai raggiunto il limite degli eventi di attivazione del flusso di lavoro per questo piano." + }, + "viewBillingTitle": "Fatturazione e Abbonamenti", + "viewBillingDescription": "Gestisci metodi di pagamento, fatture e modifiche all'abbonamento", + "viewBillingAction": "Gestire", + "upgrade": { + "uploadMultiplePages": { + "title": "Aggiorna per caricare più documenti contemporaneamente", + "description": "Hai raggiunto il limite di caricamento: sul tuo piano attuale può essere selezionato e caricato un solo documento alla volta." + }, + "uploadMultipleFiles": { + "title": "Aggiorna per sbloccare il caricamento di documenti in batch", + "description": "Carica più documenti contemporaneamente per risparmiare tempo e migliorare l'efficienza." + }, + "addChunks": { + "title": "Aggiorna per continuare ad aggiungere blocchi", + "description": "Hai raggiunto il limite di aggiunta di blocchi per questo piano." + } + } +} diff --git a/web/i18n/it-IT/billing.ts b/web/i18n/it-IT/billing.ts deleted file mode 100644 index c8888ac86a..0000000000 --- a/web/i18n/it-IT/billing.ts +++ /dev/null @@ -1,232 +0,0 @@ -const translation = { - currentPlan: 'Piano Attuale', - upgradeBtn: { - plain: 'Aggiorna Piano', - encourage: 'Aggiorna Ora', - encourageShort: 'Aggiorna', - }, - viewBilling: 'Gestisci fatturazione e abbonamenti', - buyPermissionDeniedTip: - 'Contatta l\'amministratore della tua azienda per abbonarti', - plansCommon: { - yearlyTip: 'Ottieni 2 mesi gratis abbonandoti annualmente!', - mostPopular: 'Più Popolare', - planRange: { - monthly: 'Mensile', - yearly: 'Annuale', - }, - month: 'mese', - year: 'anno', - save: 'Risparmia ', - free: 'Gratuito', - currentPlan: 'Piano Attuale', - contractSales: 'Contatta vendite', - contractOwner: 'Contatta il responsabile del team', - startForFree: 'Inizia gratis', - contactSales: 'Contatta le vendite', - talkToSales: 'Parla con le vendite', - modelProviders: 'Fornitori di Modelli', - annotationQuota: 'Quota di Annotazione', - buildApps: 'Crea App', - vectorSpace: 'Spazio Vettoriale', - vectorSpaceTooltip: - 'Lo Spazio Vettoriale è il sistema di memoria a lungo termine necessario per permettere agli LLM di comprendere i tuoi dati.', - documentProcessingPriority: 'Priorità di Elaborazione Documenti', - documentProcessingPriorityTip: 'Per una maggiore priorità nell\'elaborazione dei documenti, aggiorna il tuo piano.', - documentProcessingPriorityUpgrade: - 'Elabora più dati con maggiore precisione a velocità più elevate.', - priority: { - 'standard': 'Standard', - 'priority': 'Priorità', - 'top-priority': 'Massima Priorità', - }, - logsHistory: 'Storico dei Log', - customTools: 'Strumenti Personalizzati', - unavailable: 'Non Disponibile', - days: 'giorni', - unlimited: 'Illimitato', - support: 'Supporto', - supportItems: { - communityForums: 'Forum della comunità', - emailSupport: 'Supporto via email', - priorityEmail: 'Supporto via email e chat prioritario', - logoChange: 'Cambia logo', - SSOAuthentication: 'Autenticazione SSO', - personalizedSupport: 'Supporto personalizzato', - dedicatedAPISupport: 'Supporto API dedicato', - customIntegration: 'Integrazione e supporto personalizzato', - ragAPIRequest: 'Richieste API RAG', - bulkUpload: 'Caricamento massivo di documenti', - agentMode: 'Modalità Agente', - workflow: 'Flusso di Lavoro', - llmLoadingBalancing: 'Bilanciamento del Carico LLM', - llmLoadingBalancingTooltip: - 'Aggiungi più chiavi API ai modelli, bypassando efficacemente i limiti di velocità dell\'API.', - }, - comingSoon: 'In arrivo', - member: 'Membro', - memberAfter: 'Membro', - messageRequest: { - title: 'Crediti Messaggi', - tooltip: - 'Quote di invocazione dei messaggi per vari piani utilizzando i modelli OpenAI (eccetto gpt4). I messaggi oltre il limite utilizzeranno la tua chiave API OpenAI.', - titlePerMonth: '{{count,number}} messaggi/mese', - }, - annotatedResponse: { - title: 'Limiti di Quota di Annotazione', - tooltip: - 'La modifica manuale e l\'annotazione delle risposte forniscono capacità di risposta a domande personalizzabili di alta qualità per le app. (Applicabile solo nelle app di chat)', - }, - ragAPIRequestTooltip: - 'Si riferisce al numero di chiamate API che invocano solo le capacità di elaborazione della base di conoscenza di Dify.', - receiptInfo: - 'Solo il proprietario del team e l\'amministratore del team possono abbonarsi e visualizzare le informazioni di fatturazione', - comparePlanAndFeatures: 'Confronta piani e caratteristiche', - teamWorkspace: '{{count,number}} Spazio di lavoro di squadra', - apiRateLimit: 'Limite di richiesta API', - unlimitedApiRate: 'Nessun limite di tasso API', - freeTrialTipPrefix: 'Iscriviti e ricevi un', - teamMember_one: '{{count,number}} membro del team', - documents: '{{count,number}} Documenti di Conoscenza', - apiRateLimitUnit: '{{count,number}}', - documentsRequestQuota: '{{count,number}}/min Limite di richiesta di conoscenza', - teamMember_other: '{{count,number}} membri del team', - freeTrialTip: 'prova gratuita di 200 chiamate OpenAI.', - priceTip: 'per spazio di lavoro/', - self: 'Auto-ospitato', - documentsTooltip: 'Quota sul numero di documenti importati dalla Fonte di Dati Conoscitiva.', - freeTrialTipSuffix: 'Nessuna carta di credito richiesta', - cloud: 'Servizio Cloud', - apiRateLimitTooltip: 'Il limite di utilizzo dell\'API si applica a tutte le richieste effettuate tramite l\'API Dify, comprese la generazione di testo, le conversazioni chat, le esecuzioni di flussi di lavoro e l\'elaborazione di documenti.', - getStarted: 'Inizia', - annualBilling: 'Fatturazione annuale', - documentsRequestQuotaTooltip: 'Specifica il numero totale di azioni che un\'area di lavoro può eseguire al minuto all\'interno della base di conoscenza, compresi la creazione, l\'eliminazione, gli aggiornamenti dei dataset, il caricamento di documenti, le modifiche, l\'archiviazione e le query sulla base di conoscenza. Questa metrica viene utilizzata per valutare le prestazioni delle richieste alla base di conoscenza. Ad esempio, se un utente di Sandbox esegue 10 test consecutivi in un minuto, la sua area di lavoro sarà temporaneamente limitata dall\'eseguire le seguenti azioni per il minuto successivo: creazione, eliminazione, aggiornamenti dei dataset e caricamento o modifica di documenti.', - startBuilding: 'Inizia a costruire', - taxTip: 'Tutti i prezzi degli abbonamenti (mensili/annuali) non includono le tasse applicabili (ad esempio, IVA, imposta sulle vendite).', - taxTipSecond: 'Se nella tua regione non ci sono requisiti fiscali applicabili, nessuna tassa apparirà al momento del pagamento e non ti verranno addebitate spese aggiuntive per l\'intera durata dell\'abbonamento.', - triggerEvents: { - unlimited: 'Eventi di attivazione illimitati', - tooltip: 'Il numero di eventi che avviano automaticamente i flussi di lavoro tramite trigger Plugin, Pianificazione o Webhook.', - sandbox: '{{count,number}} Eventi di attivazione', - professional: '{{count,number}} Eventi attivati/mese', - }, - workflowExecution: { - priority: 'Esecuzione del flusso di lavoro prioritario', - faster: 'Esecuzione del flusso di lavoro più rapida', - standard: 'Esecuzione del flusso di lavoro standard', - tooltip: 'Priorità e velocità della coda di esecuzione del flusso di lavoro.', - }, - startNodes: { - unlimited: 'Eventi di attivazione/workflow illimitati', - limited: 'Fino a {{count}} trigger/workflow', - }, - title: { - plans: 'piani', - description: 'Seleziona il piano che meglio si adatta alle esigenze del tuo team.', - }, - }, - plans: { - sandbox: { - name: 'Sandbox', - description: '200 prove gratuite di GPT', - for: 'Prova gratuita delle capacità principali', - }, - professional: { - name: 'Professional', - description: - 'Per individui e piccoli team per sbloccare più potenza a prezzi accessibili.', - for: 'Per sviluppatori indipendenti/piccoli team', - }, - team: { - name: 'Team', - description: - 'Collabora senza limiti e goditi prestazioni di alto livello.', - for: 'Per team di medie dimensioni', - }, - enterprise: { - name: 'Enterprise', - description: - 'Ottieni tutte le capacità e il supporto per sistemi mission-critical su larga scala.', - includesTitle: 'Tutto nel piano Team, più:', - features: ['Soluzioni di Distribuzione Scalabili di Classe Aziendale', 'Autorizzazione alla Licenza Commerciale', 'Funzionalità Esclusive per le Aziende', 'Molteplici Spazi di Lavoro e Gestione Aziendale', 'SSO', 'SLA negoziati dai partner Dify', 'Sicurezza e Controlli Avanzati', 'Aggiornamenti e manutenzione da Dify ufficialmente', 'Assistenza Tecnica Professionale'], - price: 'Personalizzato', - for: 'Per team di grandi dimensioni', - btnText: 'Contatta le vendite', - priceTip: 'Solo fatturazione annuale', - }, - community: { - features: ['Tutte le funzionalità principali rilasciate nel repository pubblico', 'Spazio di lavoro singolo', 'Conforme alla Licenza Open Source Dify'], - name: 'Comunità', - btnText: 'Inizia con la comunità', - includesTitle: 'Caratteristiche Gratuite:', - description: 'Per utenti individuali, piccole squadre o progetti non commerciali', - price: 'Gratuito', - for: 'Per utenti individuali, piccole squadre o progetti non commerciali', - }, - premium: { - features: ['Affidabilità Autogestita dai Vari Provider Cloud', 'Spazio di lavoro singolo', 'Personalizzazione del Logo e del Marchio dell\'App Web', 'Assistenza Prioritaria via Email e Chat'], - name: 'Premium', - priceTip: 'Basato su Cloud Marketplace', - includesTitle: 'Tutto dalla Community, oltre a:', - description: 'Per organizzazioni e team di medie dimensioni', - for: 'Per organizzazioni e team di medie dimensioni', - btnText: 'Ottieni Premium in', - price: 'Scalabile', - comingSoon: 'Supporto di Microsoft Azure e Google Cloud in arrivo presto', - }, - }, - vectorSpace: { - fullTip: 'Lo Spazio Vettoriale è pieno.', - fullSolution: 'Aggiorna il tuo piano per ottenere più spazio.', - }, - apps: { - fullTip1des: 'Hai raggiunto il limite di costruzione delle app su questo piano.', - fullTip2des: 'Si consiglia di disinstallare le applicazioni inattive per liberare spazio, o contattarci.', - contactUs: 'Contattaci', - fullTip2: 'Limite del piano raggiunto', - fullTip1: 'Aggiorna per creare più app', - }, - annotatedResponse: { - fullTipLine1: 'Aggiorna il tuo piano per', - fullTipLine2: 'annotare più conversazioni.', - quotaTitle: 'Quota di Risposta Annotata', - }, - usagePage: { - buildApps: 'Costruisci app', - vectorSpace: 'Archiviazione dei dati conoscitivi', - annotationQuota: 'Quota di annotazione', - teamMembers: 'Membri del team', - documentsUploadQuota: 'Quota di Caricamento Documenti', - vectorSpaceTooltip: 'I documenti con la modalità di indicizzazione ad alta qualità consumeranno risorse di Knowledge Data Storage. Quando il Knowledge Data Storage raggiunge il limite, nuovi documenti non verranno caricati.', - perMonth: 'al mese', - triggerEvents: 'Eventi di attivazione', - resetsIn: 'Si resetta tra {{count,number}} giorni', - }, - teamMembers: 'Membri del team', - triggerLimitModal: { - upgrade: 'Aggiornamento', - dismiss: 'Ignora', - usageTitle: 'EVENTI DI ATTIVAZIONE', - title: 'Aggiorna per sbloccare più eventi di attivazione', - description: 'Hai raggiunto il limite degli eventi di attivazione del flusso di lavoro per questo piano.', - }, - viewBillingTitle: 'Fatturazione e Abbonamenti', - viewBillingDescription: 'Gestisci metodi di pagamento, fatture e modifiche all\'abbonamento', - viewBillingAction: 'Gestire', - upgrade: { - uploadMultiplePages: { - title: 'Aggiorna per caricare più documenti contemporaneamente', - description: 'Hai raggiunto il limite di caricamento: sul tuo piano attuale può essere selezionato e caricato un solo documento alla volta.', - }, - uploadMultipleFiles: { - title: 'Aggiorna per sbloccare il caricamento di documenti in batch', - description: 'Carica più documenti contemporaneamente per risparmiare tempo e migliorare l\'efficienza.', - }, - addChunks: { - title: 'Aggiorna per continuare ad aggiungere blocchi', - description: 'Hai raggiunto il limite di aggiunta di blocchi per questo piano.', - }, - }, -} - -export default translation diff --git a/web/i18n/it-IT/common.json b/web/i18n/it-IT/common.json new file mode 100644 index 0000000000..fe74fafb7a --- /dev/null +++ b/web/i18n/it-IT/common.json @@ -0,0 +1,785 @@ +{ + "api": { + "success": "Successo", + "actionSuccess": "Azione riuscita", + "saved": "Salvato", + "create": "Creato", + "remove": "Rimosso", + "actionFailed": "Azione non riuscita" + }, + "operation": { + "create": "Crea", + "confirm": "Conferma", + "cancel": "Annulla", + "clear": "Cancella", + "save": "Salva", + "saveAndEnable": "Salva & Abilita", + "edit": "Modifica", + "add": "Aggiungi", + "added": "Aggiunto", + "refresh": "Riavvia", + "reset": "Reimposta", + "search": "Cerca", + "change": "Cambia", + "remove": "Rimuovi", + "send": "Invia", + "copy": "Copia", + "lineBreak": "A capo", + "sure": "Sono sicuro", + "download": "Scarica", + "delete": "Elimina", + "settings": "Impostazioni", + "setup": "Configurazione", + "getForFree": "Ottieni gratuitamente", + "reload": "Ricarica", + "ok": "OK", + "log": "Log", + "learnMore": "Scopri di più", + "params": "Parametri", + "duplicate": "Duplica", + "rename": "Rinomina", + "audioSourceUnavailable": "AudioSource non è disponibile", + "zoomOut": "Zoom indietro", + "zoomIn": "Ingrandisci", + "openInNewTab": "Apri in una nuova scheda", + "copyImage": "Copia immagine", + "close": "Chiudere", + "view": "Vista", + "saveAndRegenerate": "Salva e rigenera i blocchi figlio", + "regenerate": "Rigenerare", + "viewMore": "SCOPRI DI PIÙ", + "submit": "Invia", + "skip": "Nave", + "imageCopied": "Immagine copiata", + "deleteApp": "Elimina app", + "in": "in", + "viewDetails": "Visualizza dettagli", + "copied": "Copiato", + "downloadSuccess": "Download completato.", + "downloadFailed": "Download non riuscito. Per favore riprova più tardi.", + "more": "Di più", + "format": "Formato", + "selectAll": "Seleziona tutto", + "deSelectAll": "Deseleziona tutto", + "config": "Config", + "no": "No", + "yes": "Sì", + "confirmAction": "Per favore conferma la tua azione.", + "deleteConfirmTitle": "Eliminare?", + "noSearchResults": "Nessun {{content}} è stato trovato", + "resetKeywords": "Reimposta parole chiave", + "selectCount": "{{count}} Selezionato", + "searchCount": "Trova {{count}} {{content}}", + "noSearchCount": "0 {{content}}", + "now": "Adesso" + }, + "errorMsg": { + "fieldRequired": "{{field}} è obbligatorio", + "urlError": "L'URL deve iniziare con http:// o https://" + }, + "placeholder": { + "input": "Per favore inserisci", + "select": "Per favore seleziona", + "search": "Cerca..." + }, + "voice": { + "language": { + "zhHans": "Cinese", + "zhHant": "Cinese Tradizionale", + "enUS": "Inglese", + "deDE": "Tedesco", + "frFR": "Francese", + "esES": "Spagnolo", + "itIT": "Italiano", + "thTH": "Thailandese", + "idID": "Indonesiano", + "jaJP": "Giapponese", + "koKR": "Coreano", + "ptBR": "Portoghese", + "ruRU": "Russo", + "ukUA": "Ucraino", + "viVN": "Vietnamita", + "plPL": "Polacco", + "roRO": "Rumeno", + "hiIN": "Hindi", + "trTR": "Turco", + "faIR": "Persiano", + "slSI": "Sloveno", + "arTN": "Arabo tunisino" + } + }, + "unit": { + "char": "caratteri" + }, + "actionMsg": { + "noModification": "Nessuna modifica al momento.", + "modifiedSuccessfully": "Modificato con successo", + "modifiedUnsuccessfully": "Modifica non riuscita", + "copySuccessfully": "Copiato con successo", + "paySucceeded": "Pagamento riuscito", + "payCancelled": "Pagamento annullato", + "generatedSuccessfully": "Generato con successo", + "generatedUnsuccessfully": "Generazione non riuscita" + }, + "model": { + "params": { + "temperature": "Temperatura", + "temperatureTip": "Controlla la casualità: Abbassando si ottengono completamenti meno casuali. Man mano che la temperatura si avvicina a zero, il modello diventa deterministico e ripetitivo.", + "top_p": "Top P", + "top_pTip": "Controlla la diversità tramite campionamento nucleare: 0.5 significa che vengono considerati la metà di tutte le opzioni ponderate per probabilità.", + "presence_penalty": "Penalità di presenza", + "presence_penaltyTip": "Quanto penalizzare i nuovi token in base alla loro presenza nel testo finora. Aumenta la probabilità che il modello parli di nuovi argomenti.", + "frequency_penalty": "Penalità di frequenza", + "frequency_penaltyTip": "Quanto penalizzare i nuovi token in base alla loro frequenza esistente nel testo finora. Diminuisce la probabilità che il modello ripeta la stessa riga alla lettera.", + "max_tokens": "Token massimo", + "max_tokensTip": "Utilizzato per limitare la lunghezza massima della risposta, in token. Valori maggiori possono limitare lo spazio lasciato per le parole del prompt, i log della chat e la Conoscenza. Si consiglia di impostarlo al di sotto dei due terzi\ngpt-4-1106-preview, gpt-4-vision-preview max token (input 128k output 4k)", + "maxTokenSettingTip": "La tua impostazione di token massimo è alta, potenzialmente limitando lo spazio per prompt, query e dati. Considera di impostarlo al di sotto dei 2/3.", + "setToCurrentModelMaxTokenTip": "Il token massimo è aggiornato all'80% del token massimo del modello corrente {{maxToken}}.", + "stop_sequences": "Sequenze di stop", + "stop_sequencesTip": "Fino a quattro sequenze in cui l'API smetterà di generare ulteriori token. Il testo restituito non conterrà la sequenza di stop.", + "stop_sequencesPlaceholder": "Inserisci la sequenza e premi Tab" + }, + "tone": { + "Creative": "Creativo", + "Balanced": "Bilanciato", + "Precise": "Preciso", + "Custom": "Personalizzato" + }, + "addMoreModel": "Vai alle impostazioni per aggiungere altri modelli", + "capabilities": "Funzionalità multimodali", + "settingsLink": "Impostazioni del fornitore del modello" + }, + "menus": { + "status": "beta", + "explore": "Esplora", + "apps": "Studio", + "plugins": "Plugin", + "pluginsTips": "Integra plugin di terze parti o crea plugin AI compatibili con ChatGPT.", + "datasets": "Conoscenza", + "datasetsTips": "PROSSIMAMENTE: Importa i tuoi dati testuali o scrivi dati in tempo reale tramite Webhook per migliorare il contesto LLM.", + "newApp": "Nuova App", + "newDataset": "Crea Conoscenza", + "tools": "Strumenti", + "exploreMarketplace": "Esplora il Marketplace", + "appDetail": "Dettagli dell'app", + "account": "Account" + }, + "userProfile": { + "settings": "Impostazioni", + "emailSupport": "Supporto Email", + "workspace": "Workspace", + "createWorkspace": "Crea Workspace", + "helpCenter": "Aiuto", + "roadmap": "Tabella di marcia", + "community": "Comunità", + "about": "Informazioni", + "logout": "Esci", + "support": "Supporto", + "compliance": "Conformità", + "github": "GitHub", + "contactUs": "Contattaci", + "forum": "Forum" + }, + "settings": { + "accountGroup": "ACCOUNT", + "workplaceGroup": "WORKSPACE", + "account": "Il mio account", + "members": "Membri", + "billing": "Fatturazione", + "integrations": "Integrazioni", + "language": "Lingua", + "provider": "Fornitore di Modelli", + "dataSource": "Fonte Dati", + "plugin": "Plugin", + "apiBasedExtension": "Estensione API", + "generalGroup": "GENERALE" + }, + "account": { + "avatar": "Avatar", + "name": "Nome", + "email": "Email", + "password": "Password", + "passwordTip": "Puoi impostare una password permanente se non vuoi utilizzare codici di accesso temporanei", + "setPassword": "Imposta una password", + "resetPassword": "Reimposta password", + "currentPassword": "Password attuale", + "newPassword": "Nuova password", + "confirmPassword": "Conferma password", + "notEqual": "Le due password sono diverse.", + "langGeniusAccount": "Account Dify", + "langGeniusAccountTip": "Il tuo account Dify e i dati utente associati.", + "editName": "Modifica Nome", + "showAppLength": "Mostra {{length}} app", + "delete": "Elimina Account", + "deleteTip": "Eliminando il tuo account cancellerai permanentemente tutti i tuoi dati e non sarà possibile recuperarli.", + "myAccount": "Il mio account", + "account": "Conto", + "studio": "Dify Studio", + "deletePrivacyLinkTip": "Per ulteriori informazioni su come gestiamo i tuoi dati, consulta il nostro", + "deletePrivacyLink": "Informativa sulla privacy.", + "deleteSuccessTip": "Il tuo account ha bisogno di tempo per completare l'eliminazione. Ti invieremo un'e-mail quando tutto sarà finito.", + "deleteLabel": "Per confermare, digita la tua email qui sotto", + "deletePlaceholder": "Inserisci la tua email", + "sendVerificationButton": "Invia codice di verifica", + "verificationLabel": "Codice di verifica", + "verificationPlaceholder": "Incolla il codice a 6 cifre", + "permanentlyDeleteButton": "Elimina definitivamente l'account", + "feedbackTitle": "Valutazione", + "feedbackLabel": "Dicci perché hai cancellato il tuo account?", + "feedbackPlaceholder": "Opzionale", + "workspaceIcon": "Icona della workspace", + "editWorkspaceInfo": "Modifica informazioni dello spazio di lavoro", + "workspaceName": "Nome del Workspace", + "changeEmail": { + "changeTo": "Cambia in {{email}}", + "verifyEmail": "Verifica la tua email attuale", + "codePlaceholder": "Inserisci il codice di 6 cifre", + "resendTip": "Non hai ricevuto un codice?", + "newEmail": "Crea un nuovo indirizzo email", + "resend": "Rimanda", + "continue": "Continua", + "verifyNew": "Verifica la tua nuova email", + "resendCount": "Reinvia in {{count}}s", + "title": "Cambia Email", + "emailPlaceholder": "Inserisci una nuova email", + "emailLabel": "Nuova email", + "codeLabel": "Codice di verifica", + "existingEmail": "Un utente con questa email esiste già.", + "content2": "La tua email attuale è {{email}}. Il codice di verifica è stato inviato a questo indirizzo email.", + "authTip": "Una volta che la tua email è cambiata, gli account Google o GitHub collegati alla tua vecchia email non potranno più accedere a questo account.", + "content3": "Inserisci una nuova email e ti invieremo un codice di verifica.", + "content4": "Ti abbiamo appena inviato un codice di verifica temporaneo a {{email}}.", + "content1": "Se continui, invieremo un codice di verifica a {{email}} per la riautenticazione.", + "sendVerifyCode": "Invia codice di verifica", + "unAvailableEmail": "Questa email è temporaneamente non disponibile." + } + }, + "members": { + "team": "Team", + "invite": "Aggiungi", + "name": "NOME", + "lastActive": "ULTIMA ATTIVITÀ", + "role": "RUOLI", + "pending": "In attesa...", + "owner": "Proprietario", + "admin": "Admin", + "adminTip": "Può creare app e gestire le impostazioni del team", + "normal": "Normale", + "normalTip": "Può solo usare le app, non può crearle", + "builder": "Builder", + "builderTip": "Può creare e modificare le proprie app", + "editor": "Editor", + "editorTip": "Può creare e modificare app", + "datasetOperator": "Admin della Conoscenza", + "datasetOperatorTip": "Può solo gestire la base di conoscenza", + "inviteTeamMember": "Aggiungi membro del team", + "inviteTeamMemberTip": "Potranno accedere ai dati del tuo team direttamente dopo aver effettuato l'accesso.", + "emailNotSetup": "Il server email non è configurato, quindi non è possibile inviare email di invito. Si prega di notificare agli utenti il link di invito che verrà emesso dopo l'invito.", + "email": "Email", + "emailInvalid": "Formato Email non valido", + "emailPlaceholder": "Per favore inserisci le email", + "sendInvite": "Invia Invito", + "invitedAsRole": "Invitato come utente {{role}}", + "invitationSent": "Invito inviato", + "invitationSentTip": "Invito inviato, e possono accedere a Dify per accedere ai dati del tuo team.", + "invitationLink": "Link di Invito", + "failedInvitationEmails": "Gli utenti seguenti non sono stati invitati con successo", + "ok": "OK", + "removeFromTeam": "Rimuovi dal team", + "removeFromTeamTip": "Rimuoverà l'accesso al team", + "setAdmin": "Imposta come amministratore", + "setMember": "Imposta come membro ordinario", + "setBuilder": "Imposta come builder", + "setEditor": "Imposta come editor", + "disInvite": "Annulla l'invito", + "deleteMember": "Elimina Membro", + "you": "(Tu)", + "transferModal": { + "continue": "Continua", + "resendTip": "Non hai ricevuto un codice?", + "title": "Trasferire la proprietà dello spazio di lavoro", + "codeLabel": "Codice di verifica", + "verifyEmail": "Verifica la tua email attuale", + "transferPlaceholder": "Seleziona un membro del team...", + "transfer": "Trasferire la proprietà dello spazio di lavoro", + "codePlaceholder": "Inserisci il codice di 6 cifre", + "warningTip": "Diventerai un membro amministratore e il nuovo proprietario avrà il pieno controllo.", + "resendCount": "Reinvia in {{count}}s", + "sendVerifyCode": "Invia codice di verifica", + "verifyContent2": "Invieremo un codice di verifica temporaneo a questa email per la re-autenticazione.", + "verifyContent": "La tua email attuale è {{email}}.", + "sendTip": "Se continui, invieremo un codice di verifica a {{email}} per la riautenticazione.", + "warning": "Stai per trasferire la proprietà di \"{{workspace}}\". Questo avrà effetto immediato e non può essere annullato.", + "transferLabel": "Trasferisci la proprietà dello spazio di lavoro a", + "resend": "Rimanda" + }, + "transferOwnership": "Trasferisci Proprietà" + }, + "integrations": { + "connected": "Connesso", + "google": "Google", + "googleAccount": "Accedi con l'account Google", + "github": "GitHub", + "githubAccount": "Accedi con l'account GitHub", + "connect": "Connetti" + }, + "language": { + "displayLanguage": "Lingua di visualizzazione", + "timezone": "Fuso orario" + }, + "provider": { + "apiKey": "API Key", + "enterYourKey": "Inserisci qui la tua API key", + "invalidKey": "Chiave API OpenAI non valida", + "validatedError": "Convalida fallita: ", + "validating": "Convalida chiave in corso...", + "saveFailed": "Salvataggio della chiave API fallito", + "apiKeyExceedBill": "Questa API KEY non ha più quota disponibile, per favore leggi", + "addKey": "Aggiungi Chiave", + "comingSoon": "Prossimamente", + "editKey": "Modifica", + "invalidApiKey": "Chiave API non valida", + "azure": { + "apiBase": "Base API", + "apiBasePlaceholder": "L'URL Base API del tuo Endpoint Azure OpenAI.", + "apiKey": "API Key", + "apiKeyPlaceholder": "Inserisci qui la tua API key", + "helpTip": "Scopri di più su Azure OpenAI Service" + }, + "openaiHosted": { + "openaiHosted": "OpenAI Ospitato", + "onTrial": "IN PROVA", + "exhausted": "QUOTA ESAURITA", + "desc": "Il servizio di hosting OpenAI fornito da Dify ti consente di utilizzare modelli come GPT-3.5. Prima che la tua quota di prova sia esaurita, devi configurare altri fornitori di modelli.", + "callTimes": "Numero di chiamate", + "usedUp": "Quota di prova esaurita. Aggiungi il tuo fornitore di modelli.", + "useYourModel": "Attualmente utilizzando il proprio fornitore di modelli.", + "close": "Chiudi" + }, + "anthropicHosted": { + "anthropicHosted": "Anthropic Claude", + "onTrial": "IN PROVA", + "exhausted": "QUOTA ESAURITA", + "desc": "Modello potente, eccelle in una vasta gamma di compiti dal dialogo sofisticato alla generazione di contenuti creativi fino alle istruzioni dettagliate.", + "callTimes": "Numero di chiamate", + "usedUp": "Quota di prova esaurita. Aggiungi il tuo fornitore di modelli.", + "useYourModel": "Attualmente utilizzando il proprio fornitore di modelli.", + "close": "Chiudi", + "trialQuotaTip": "La tua quota di prova di Anthropic scadrà l'11/03/2025 e non sarà più disponibile in seguito. Sfruttalo in tempo." + }, + "anthropic": { + "using": "La capacità di embedding è in uso", + "enableTip": "Per abilitare il modello Anthropic, devi prima collegarti a OpenAI o Azure OpenAI Service.", + "notEnabled": "Non abilitato", + "keyFrom": "Ottieni la tua API key da Anthropic" + }, + "encrypted": { + "front": "La tua API KEY sarà crittografata e archiviata utilizzando la tecnologia", + "back": "." + } + }, + "modelProvider": { + "notConfigured": "Il modello di sistema non è ancora stato completamente configurato e alcune funzioni potrebbero non essere disponibili.", + "systemModelSettings": "Impostazioni Modello di Sistema", + "systemModelSettingsLink": "Perché è necessario configurare un modello di sistema?", + "selectModel": "Seleziona il tuo modello", + "setupModelFirst": "Per favore, configura prima il tuo modello", + "systemReasoningModel": { + "key": "Modello di Ragionamento di Sistema", + "tip": "Imposta il modello di inferenza predefinito da utilizzare per creare applicazioni, così come funzionalità come la generazione del nome del dialogo e il suggerimento della domanda successiva utilizzeranno anche il modello di inferenza predefinito." + }, + "embeddingModel": { + "key": "Modello di Embedding", + "tip": "Imposta il modello predefinito per l'elaborazione degli embedding dei documenti della Conoscenza, sia il recupero che l'importazione della Conoscenza utilizzano questo modello di Embedding per il processo di vettorizzazione. Il cambio causerà l'incoerenza della dimensione del vettore tra la Conoscenza importata e la domanda, causando un fallimento nel recupero. Per evitare fallimenti nel recupero, non cambiare questo modello a piacimento.", + "required": "Il Modello di Embedding è obbligatorio" + }, + "speechToTextModel": { + "key": "Modello da Voce a Testo", + "tip": "Imposta il modello predefinito per l'input da voce a testo nella conversazione." + }, + "ttsModel": { + "key": "Modello da Testo a Voce", + "tip": "Imposta il modello predefinito per l'input da testo a voce nella conversazione." + }, + "rerankModel": { + "key": "Modello di Rerank", + "tip": "Il modello di rerank riordinerà la lista dei documenti candidati basandosi sulla corrispondenza semantica con la query dell'utente, migliorando i risultati del ranking semantico" + }, + "apiKey": "API-KEY", + "quota": "Quota", + "searchModel": "Modello di ricerca", + "noModelFound": "Nessun modello trovato per {{model}}", + "models": "Modelli", + "showMoreModelProvider": "Mostra più fornitori di modelli", + "selector": { + "tip": "Questo modello è stato rimosso. Per favore aggiungi un modello o seleziona un altro modello.", + "emptyTip": "Nessun modello disponibile", + "emptySetting": "Per favore vai alle impostazioni per configurare", + "rerankTip": "Per favore, configura il modello di Rerank" + }, + "card": { + "quota": "QUOTA", + "onTrial": "In Prova", + "paid": "Pagato", + "quotaExhausted": "Quota esaurita", + "callTimes": "Numero di chiamate", + "tokens": "Token", + "buyQuota": "Acquista Quota", + "priorityUse": "Uso prioritario", + "removeKey": "Rimuovi API Key", + "tip": "Verrà data priorità alla quota pagata. La quota di prova sarà utilizzata dopo l'esaurimento della quota pagata." + }, + "item": { + "deleteDesc": "{{modelName}} è utilizzato come modello di ragionamento di sistema. Alcune funzioni non saranno disponibili dopo la rimozione. Si prega di confermare.", + "freeQuota": "QUOTA GRATUITA" + }, + "addApiKey": "Aggiungi la tua API key", + "invalidApiKey": "API key non valida", + "encrypted": { + "front": "La tua API KEY sarà crittografata e archiviata utilizzando la tecnologia", + "back": "." + }, + "freeQuota": { + "howToEarn": "Come guadagnare" + }, + "addMoreModelProvider": "AGGIUNGI PIÙ FORNITORI DI MODELLI", + "addModel": "Aggiungi Modello", + "modelsNum": "{{num}} Modelli", + "showModels": "Mostra Modelli", + "showModelsNum": "Mostra {{num}} Modelli", + "collapse": "Comprimi", + "config": "Configura", + "modelAndParameters": "Modello e Parametri", + "model": "Modello", + "featureSupported": "{{feature}} supportato", + "callTimes": "Numero di chiamate", + "credits": "Crediti Messaggi", + "buyQuota": "Acquista Quota", + "getFreeTokens": "Ottieni Token gratuiti", + "priorityUsing": "Utilizzo prioritario", + "deprecated": "Deprecato", + "confirmDelete": "confermare l'eliminazione?", + "quotaTip": "Token gratuiti rimanenti disponibili", + "loadPresets": "Carica Preset", + "parameters": "PARAMETRI", + "loadBalancing": "Bilanciamento del Carico", + "loadBalancingDescription": "Riduci la pressione con più set di credenziali.", + "loadBalancingHeadline": "Bilanciamento del Carico", + "configLoadBalancing": "Configura Bilanciamento del Carico", + "modelHasBeenDeprecated": "Questo modello è stato deprecato", + "providerManaged": "Gestito dal fornitore", + "providerManagedDescription": "Usa il singolo set di credenziali fornito dal fornitore del modello.", + "defaultConfig": "Config predefinito", + "apiKeyStatusNormal": "Stato APIKey normale", + "apiKeyRateLimit": "Il limite di velocità è stato raggiunto, disponibile dopo {{seconds}}s", + "addConfig": "Aggiungi Configurazione", + "editConfig": "Modifica Configurazione", + "loadBalancingLeastKeyWarning": "Per abilitare il bilanciamento del carico devono essere abilitate almeno 2 chiavi.", + "loadBalancingInfo": "Per impostazione predefinita, il bilanciamento del carico utilizza la strategia Round-robin. Se viene attivato il rate limiting, verrà applicato un periodo di cooldown di 1 minuto.", + "upgradeForLoadBalancing": "Aggiorna il tuo piano per abilitare il Bilanciamento del Carico.", + "configureTip": "Configura la chiave API o aggiungi il modello da utilizzare", + "installProvider": "Installare i provider di modelli", + "toBeConfigured": "Da configurare", + "emptyProviderTip": "Si prega di installare prima un fornitore di modelli.", + "discoverMore": "Scopri di più in", + "emptyProviderTitle": "Provider di modelli non configurato", + "auth": { + "apiKeyModal": { + "addModel": "Aggiungi modello", + "title": "Configurazione dell'autorizzazione della chiave API", + "desc": "Dopo aver configurato le credenziali, tutti i membri all'interno dello spazio di lavoro possono utilizzare questo modello quando orchestrano applicazioni." + }, + "modelCredentials": "Credenziali del modello", + "providerManaged": "Fornitore gestito", + "apiKeys": "Chiavi API", + "authRemoved": "Autore rimosso", + "specifyModelCredential": "Specifica le credenziali del modello", + "addApiKey": "Aggiungi la chiave API", + "addModelCredential": "Aggiungi le credenziali del modello", + "addNewModel": "Aggiungi un nuovo modello", + "providerManagedTip": "La configurazione attuale è ospitata dal fornitore.", + "addCredential": "Aggiungi credenziali", + "authorizationError": "Errore di autorizzazione", + "configLoadBalancing": "Configurazione del bilanciamento del carico", + "unAuthorized": "Non autorizzato", + "specifyModelCredentialTip": "Usa una credenziale di modello configurato.", + "configModel": "Configura modello", + "addNewModelCredential": "Aggiungere nuove credenziali del modello", + "selectModelCredential": "Seleziona una credenziale del modello", + "customModelCredentials": "Credenziali del modello personalizzato", + "manageCredentials": "Gestisci credenziali", + "customModelCredentialsDeleteTip": "La credenziale è in uso e non può essere eliminata", + "addModel": "Aggiungi modello", + "modelCredential": "Credenziale del modello", + "removeModel": "Rimuovi modello", + "editModelCredential": "Modificare le credenziali del modello" + }, + "parametersInvalidRemoved": "Alcuni parametri non sono validi e sono stati rimossi.", + "installDataSourceProvider": "Installa i fornitori di sorgenti dati" + }, + "dataSource": { + "add": "Aggiungi una fonte di dati", + "connect": "Connetti", + "configure": "Configura", + "notion": { + "title": "Notion", + "description": "Usa Notion come fonte di dati per la Conoscenza.", + "connectedWorkspace": "Workspace connesso", + "addWorkspace": "Aggiungi workspace", + "connected": "Connesso", + "disconnected": "Disconnesso", + "changeAuthorizedPages": "Cambia pagine autorizzate", + "pagesAuthorized": "Pagine autorizzate", + "sync": "Sincronizza", + "remove": "Rimuovi", + "selector": { + "pageSelected": "Pagine selezionate", + "searchPages": "Cerca pagine...", + "noSearchResult": "Nessun risultato di ricerca", + "addPages": "Aggiungi pagine", + "preview": "ANTEPRIMA" + }, + "integratedAlert": "Notion è integrato tramite credenziali interne, non è necessario ri-autorizzare." + }, + "website": { + "title": "Sito web", + "description": "Importa contenuti dai siti web utilizzando il web crawler.", + "with": "Con", + "configuredCrawlers": "Crawler configurati", + "active": "Attivo", + "inactive": "Inattivo" + } + }, + "plugin": { + "serpapi": { + "apiKey": "API Key", + "apiKeyPlaceholder": "Inserisci la tua API key", + "keyFrom": "Ottieni la tua API key dalla pagina dell'account SerpAPI" + } + }, + "apiBasedExtension": { + "title": "Le estensioni API forniscono una gestione centralizzata delle API, semplificando la configurazione per un facile utilizzo nelle applicazioni di Dify.", + "link": "Scopri come sviluppare la tua estensione API.", + "add": "Aggiungi Estensione API", + "selector": { + "title": "Estensione API", + "placeholder": "Per favore seleziona l'estensione API", + "manage": "Gestisci Estensione API" + }, + "modal": { + "title": "Aggiungi Estensione API", + "editTitle": "Modifica Estensione API", + "name": { + "title": "Nome", + "placeholder": "Per favore inserisci il nome" + }, + "apiEndpoint": { + "title": "Endpoint API", + "placeholder": "Per favore inserisci l'endpoint API" + }, + "apiKey": { + "title": "API-key", + "placeholder": "Per favore inserisci l'API-key", + "lengthError": "La lunghezza della chiave API non può essere inferiore a 5 caratteri" + } + }, + "type": "Tipo" + }, + "about": { + "changeLog": "Registro delle modifiche", + "updateNow": "Aggiorna ora", + "nowAvailable": "Dify {{version}} è ora disponibile.", + "latestAvailable": "Dify {{version}} è l'ultima versione disponibile." + }, + "appMenus": { + "overview": "Monitoraggio", + "promptEng": "Orchestrazione", + "apiAccess": "Accesso API", + "logAndAnn": "Log & Ann.", + "logs": "Log" + }, + "environment": { + "testing": "TEST", + "development": "SVILUPPO" + }, + "appModes": { + "completionApp": "Generatore di Testi", + "chatApp": "App di Chat" + }, + "datasetMenus": { + "documents": "Documenti", + "hitTesting": "Test di Recupero", + "settings": "Impostazioni", + "emptyTip": "La Conoscenza non è stata associata, per favore vai all'applicazione o al plug-in per completare l'associazione.", + "viewDoc": "Visualizza documentazione", + "relatedApp": "app collegate", + "noRelatedApp": "Nessuna app collegata", + "pipeline": "Oleodotto" + }, + "voiceInput": { + "speaking": "Parla ora...", + "converting": "Conversione in testo...", + "notAllow": "microfono non autorizzato" + }, + "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": "Rinomina Conversazione", + "conversationName": "Nome della conversazione", + "conversationNamePlaceholder": "Per favore inserisci il nome della conversazione", + "conversationNameCanNotEmpty": "Nome della conversazione obbligatorio", + "citation": { + "title": "CITAZIONI", + "linkToDataset": "Collegamento alla Conoscenza", + "characters": "Caratteri:", + "hitCount": "Conteggio dei recuperi:", + "vectorHash": "Hash del vettore:", + "hitScore": "Punteggio di recupero:" + }, + "inputPlaceholder": "Parla con il {{botName}}", + "thinking": "Pensante...", + "thought": "Pensiero", + "resend": "Reinvia" + }, + "promptEditor": { + "placeholder": "Scrivi qui il tuo prompt, inserisci '{' per inserire una variabile, inserisci '/' per inserire un blocco di contenuto del prompt", + "context": { + "item": { + "title": "Contesto", + "desc": "Inserisci modello di contesto" + }, + "modal": { + "title": "{{num}} Conoscenza nel Contesto", + "add": "Aggiungi Contesto ", + "footer": "Puoi gestire i contesti nella sezione Contesto qui sotto." + } + }, + "history": { + "item": { + "title": "Cronologia della Conversazione", + "desc": "Inserisci modello di messaggio storico" + }, + "modal": { + "title": "ESEMPIO", + "user": "Ciao", + "assistant": "Ciao! Come posso aiutarti oggi?", + "edit": "Modifica i Nomi dei Ruoli della Conversazione" + } + }, + "variable": { + "item": { + "title": "Variabili & Strumenti Esterni", + "desc": "Inserisci Variabili & Strumenti Esterni" + }, + "outputToolDisabledItem": { + "title": "Variabili", + "desc": "Inserisci Variabili" + }, + "modal": { + "add": "Nuova variabile", + "addTool": "Nuovo strumento" + } + }, + "query": { + "item": { + "title": "Query", + "desc": "Inserisci modello di query dell'utente" + } + }, + "existed": "Esiste già nel prompt" + }, + "imageUploader": { + "uploadFromComputer": "Carica dal Computer", + "uploadFromComputerReadError": "Lettura dell'immagine fallita, per favore riprova.", + "uploadFromComputerUploadError": "Caricamento dell'immagine fallito, per favore ricarica.", + "uploadFromComputerLimit": "Le immagini caricate non possono superare i {{size}} MB", + "pasteImageLink": "Incolla link immagine", + "pasteImageLinkInputPlaceholder": "Incolla qui il link immagine", + "pasteImageLinkInvalid": "Link immagine non valido", + "imageUpload": "Caricamento Immagine" + }, + "tag": { + "placeholder": "Tutti i Tag", + "addNew": "Aggiungi nuovo tag", + "noTag": "Nessun tag", + "noTagYet": "Nessun tag ancora", + "addTag": "Aggiungi tag", + "editTag": "Modifica tag", + "manageTags": "Gestisci Tag", + "selectorPlaceholder": "Scrivi per cercare o creare", + "create": "Crea", + "delete": "Elimina tag", + "deleteTip": "Il tag è in uso, eliminarlo?", + "created": "Tag creato con successo", + "failed": "Creazione del tag fallita" + }, + "fileUploader": { + "uploadFromComputer": "Caricamento locale", + "uploadFromComputerLimit": "Il file di caricamento non può superare {{size}}", + "pasteFileLinkInvalid": "Collegamento file non valido", + "fileExtensionNotSupport": "Estensione del file non supportata", + "pasteFileLinkInputPlaceholder": "Inserisci l'URL...", + "uploadFromComputerUploadError": "Caricamento del file non riuscito, carica di nuovo.", + "pasteFileLink": "Incolla il collegamento del file", + "uploadFromComputerReadError": "Lettura del file non riuscita, riprovare.", + "fileExtensionBlocked": "Questo tipo di file è bloccato per motivi di sicurezza", + "uploadDisabled": "Il caricamento dei file è disabilitato" + }, + "license": { + "expiring_plural": "Scadenza tra {{count}} giorni", + "expiring": "Scadenza in un giorno", + "unlimited": "Illimitato" + }, + "pagination": { + "perPage": "Articoli per pagina" + }, + "theme": { + "light": "luce", + "auto": "sistema", + "dark": "scuro", + "theme": "Tema" + }, + "compliance": { + "gdpr": "GDPR DPA", + "professionalUpgradeTooltip": "Disponibile solo con un piano Team o superiore.", + "sandboxUpgradeTooltip": "Disponibile solo con un piano Professionale o Team.", + "soc2Type2": "Rapporto SOC 2 di Tipo II", + "iso27001": "Certificazione ISO 27001:2022", + "soc2Type1": "Rapporto SOC 2 Tipo I" + }, + "imageInput": { + "supportedFormats": "Supporta PNG, JPG, JPEG, WEBP e GIF", + "browse": "sfogliare", + "dropImageHere": "Trascina la tua immagine qui, oppure" + }, + "you": "Tu", + "avatar": { + "deleteTitle": "Rimuovi avatar", + "deleteDescription": "Sei sicuro di voler rimuovere la tua immagine del profilo? Il tuo account utilizzerà l'avatar iniziale predefinito." + }, + "feedback": { + "title": "Fornire feedback", + "content": "Contenuto del feedback", + "subtitle": "Per favore, dicci cosa è andato storto con questa risposta.", + "placeholder": "Per favore descrivi cosa è andato storto o come possiamo migliorare..." + }, + "label": { + "optional": "(Facoltativo)" + }, + "noData": "Nessun dato", + "dynamicSelect": { + "error": "Caricamento delle opzioni non riuscito", + "noData": "Nessuna opzione disponibile", + "loading": "Caricamento opzioni...", + "selected": "{{count}} selezionato" + } +} diff --git a/web/i18n/it-IT/common.ts b/web/i18n/it-IT/common.ts deleted file mode 100644 index b52b93b1a5..0000000000 --- a/web/i18n/it-IT/common.ts +++ /dev/null @@ -1,822 +0,0 @@ -const translation = { - api: { - success: 'Successo', - actionSuccess: 'Azione riuscita', - saved: 'Salvato', - create: 'Creato', - remove: 'Rimosso', - actionFailed: 'Azione non riuscita', - }, - operation: { - create: 'Crea', - confirm: 'Conferma', - cancel: 'Annulla', - clear: 'Cancella', - save: 'Salva', - saveAndEnable: 'Salva & Abilita', - edit: 'Modifica', - add: 'Aggiungi', - added: 'Aggiunto', - refresh: 'Riavvia', - reset: 'Reimposta', - search: 'Cerca', - change: 'Cambia', - remove: 'Rimuovi', - send: 'Invia', - copy: 'Copia', - lineBreak: 'A capo', - sure: 'Sono sicuro', - download: 'Scarica', - delete: 'Elimina', - settings: 'Impostazioni', - setup: 'Configurazione', - getForFree: 'Ottieni gratuitamente', - reload: 'Ricarica', - ok: 'OK', - log: 'Log', - learnMore: 'Scopri di più', - params: 'Parametri', - duplicate: 'Duplica', - rename: 'Rinomina', - audioSourceUnavailable: 'AudioSource non è disponibile', - zoomOut: 'Zoom indietro', - zoomIn: 'Ingrandisci', - openInNewTab: 'Apri in una nuova scheda', - copyImage: 'Copia immagine', - close: 'Chiudere', - view: 'Vista', - saveAndRegenerate: 'Salva e rigenera i blocchi figlio', - regenerate: 'Rigenerare', - viewMore: 'SCOPRI DI PIÙ', - submit: 'Invia', - skip: 'Nave', - imageCopied: 'Immagine copiata', - deleteApp: 'Elimina app', - in: 'in', - viewDetails: 'Visualizza dettagli', - copied: 'Copiato', - downloadSuccess: 'Download completato.', - downloadFailed: 'Download non riuscito. Per favore riprova più tardi.', - more: 'Di più', - format: 'Formato', - selectAll: 'Seleziona tutto', - deSelectAll: 'Deseleziona tutto', - config: 'Config', - no: 'No', - yes: 'Sì', - confirmAction: 'Per favore conferma la tua azione.', - deleteConfirmTitle: 'Eliminare?', - noSearchResults: 'Nessun {{content}} è stato trovato', - resetKeywords: 'Reimposta parole chiave', - selectCount: '{{count}} Selezionato', - searchCount: 'Trova {{count}} {{content}}', - noSearchCount: '0 {{content}}', - now: 'Adesso', - }, - errorMsg: { - fieldRequired: '{{field}} è obbligatorio', - urlError: 'L\'URL deve iniziare con http:// o https://', - }, - placeholder: { - input: 'Per favore inserisci', - select: 'Per favore seleziona', - search: 'Cerca...', - }, - voice: { - language: { - zhHans: 'Cinese', - zhHant: 'Cinese Tradizionale', - enUS: 'Inglese', - deDE: 'Tedesco', - frFR: 'Francese', - esES: 'Spagnolo', - itIT: 'Italiano', - thTH: 'Thailandese', - idID: 'Indonesiano', - jaJP: 'Giapponese', - koKR: 'Coreano', - ptBR: 'Portoghese', - ruRU: 'Russo', - ukUA: 'Ucraino', - viVN: 'Vietnamita', - plPL: 'Polacco', - roRO: 'Rumeno', - hiIN: 'Hindi', - trTR: 'Turco', - faIR: 'Persiano', - slSI: 'Sloveno', - arTN: 'Arabo tunisino', - }, - }, - unit: { - char: 'caratteri', - }, - actionMsg: { - noModification: 'Nessuna modifica al momento.', - modifiedSuccessfully: 'Modificato con successo', - modifiedUnsuccessfully: 'Modifica non riuscita', - copySuccessfully: 'Copiato con successo', - paySucceeded: 'Pagamento riuscito', - payCancelled: 'Pagamento annullato', - generatedSuccessfully: 'Generato con successo', - generatedUnsuccessfully: 'Generazione non riuscita', - }, - model: { - params: { - temperature: 'Temperatura', - temperatureTip: - 'Controlla la casualità: Abbassando si ottengono completamenti meno casuali. Man mano che la temperatura si avvicina a zero, il modello diventa deterministico e ripetitivo.', - top_p: 'Top P', - top_pTip: - 'Controlla la diversità tramite campionamento nucleare: 0.5 significa che vengono considerati la metà di tutte le opzioni ponderate per probabilità.', - presence_penalty: 'Penalità di presenza', - presence_penaltyTip: - 'Quanto penalizzare i nuovi token in base alla loro presenza nel testo finora. Aumenta la probabilità che il modello parli di nuovi argomenti.', - frequency_penalty: 'Penalità di frequenza', - frequency_penaltyTip: - 'Quanto penalizzare i nuovi token in base alla loro frequenza esistente nel testo finora. Diminuisce la probabilità che il modello ripeta la stessa riga alla lettera.', - max_tokens: 'Token massimo', - max_tokensTip: - 'Utilizzato per limitare la lunghezza massima della risposta, in token. Valori maggiori possono limitare lo spazio lasciato per le parole del prompt, i log della chat e la Conoscenza. Si consiglia di impostarlo al di sotto dei due terzi\ngpt-4-1106-preview, gpt-4-vision-preview max token (input 128k output 4k)', - maxTokenSettingTip: - 'La tua impostazione di token massimo è alta, potenzialmente limitando lo spazio per prompt, query e dati. Considera di impostarlo al di sotto dei 2/3.', - setToCurrentModelMaxTokenTip: - 'Il token massimo è aggiornato all\'80% del token massimo del modello corrente {{maxToken}}.', - stop_sequences: 'Sequenze di stop', - stop_sequencesTip: - 'Fino a quattro sequenze in cui l\'API smetterà di generare ulteriori token. Il testo restituito non conterrà la sequenza di stop.', - stop_sequencesPlaceholder: 'Inserisci la sequenza e premi Tab', - }, - tone: { - Creative: 'Creativo', - Balanced: 'Bilanciato', - Precise: 'Preciso', - Custom: 'Personalizzato', - }, - addMoreModel: 'Vai alle impostazioni per aggiungere altri modelli', - capabilities: 'Funzionalità multimodali', - settingsLink: 'Impostazioni del fornitore del modello', - }, - menus: { - status: 'beta', - explore: 'Esplora', - apps: 'Studio', - plugins: 'Plugin', - pluginsTips: - 'Integra plugin di terze parti o crea plugin AI compatibili con ChatGPT.', - datasets: 'Conoscenza', - datasetsTips: - 'PROSSIMAMENTE: Importa i tuoi dati testuali o scrivi dati in tempo reale tramite Webhook per migliorare il contesto LLM.', - newApp: 'Nuova App', - newDataset: 'Crea Conoscenza', - tools: 'Strumenti', - exploreMarketplace: 'Esplora il Marketplace', - appDetail: 'Dettagli dell\'app', - account: 'Account', - }, - userProfile: { - settings: 'Impostazioni', - emailSupport: 'Supporto Email', - workspace: 'Workspace', - createWorkspace: 'Crea Workspace', - helpCenter: 'Aiuto', - roadmap: 'Tabella di marcia', - community: 'Comunità', - about: 'Informazioni', - logout: 'Esci', - support: 'Supporto', - compliance: 'Conformità', - github: 'GitHub', - contactUs: 'Contattaci', - forum: 'Forum', - }, - settings: { - accountGroup: 'ACCOUNT', - workplaceGroup: 'WORKSPACE', - account: 'Il mio account', - members: 'Membri', - billing: 'Fatturazione', - integrations: 'Integrazioni', - language: 'Lingua', - provider: 'Fornitore di Modelli', - dataSource: 'Fonte Dati', - plugin: 'Plugin', - apiBasedExtension: 'Estensione API', - generalGroup: 'GENERALE', - }, - account: { - avatar: 'Avatar', - name: 'Nome', - email: 'Email', - password: 'Password', - passwordTip: - 'Puoi impostare una password permanente se non vuoi utilizzare codici di accesso temporanei', - setPassword: 'Imposta una password', - resetPassword: 'Reimposta password', - currentPassword: 'Password attuale', - newPassword: 'Nuova password', - confirmPassword: 'Conferma password', - notEqual: 'Le due password sono diverse.', - langGeniusAccount: 'Account Dify', - langGeniusAccountTip: 'Il tuo account Dify e i dati utente associati.', - editName: 'Modifica Nome', - showAppLength: 'Mostra {{length}} app', - delete: 'Elimina Account', - deleteTip: - 'Eliminando il tuo account cancellerai permanentemente tutti i tuoi dati e non sarà possibile recuperarli.', - myAccount: 'Il mio account', - account: 'Conto', - studio: 'Dify Studio', - deletePrivacyLinkTip: 'Per ulteriori informazioni su come gestiamo i tuoi dati, consulta il nostro', - deletePrivacyLink: 'Informativa sulla privacy.', - deleteSuccessTip: 'Il tuo account ha bisogno di tempo per completare l\'eliminazione. Ti invieremo un\'e-mail quando tutto sarà finito.', - deleteLabel: 'Per confermare, digita la tua email qui sotto', - deletePlaceholder: 'Inserisci la tua email', - sendVerificationButton: 'Invia codice di verifica', - verificationLabel: 'Codice di verifica', - verificationPlaceholder: 'Incolla il codice a 6 cifre', - permanentlyDeleteButton: 'Elimina definitivamente l\'account', - feedbackTitle: 'Valutazione', - feedbackLabel: 'Dicci perché hai cancellato il tuo account?', - feedbackPlaceholder: 'Opzionale', - workspaceIcon: 'Icona della workspace', - editWorkspaceInfo: 'Modifica informazioni dello spazio di lavoro', - workspaceName: 'Nome del Workspace', - changeEmail: { - changeTo: 'Cambia in {{email}}', - verifyEmail: 'Verifica la tua email attuale', - codePlaceholder: 'Inserisci il codice di 6 cifre', - resendTip: 'Non hai ricevuto un codice?', - newEmail: 'Crea un nuovo indirizzo email', - resend: 'Rimanda', - continue: 'Continua', - verifyNew: 'Verifica la tua nuova email', - resendCount: 'Reinvia in {{count}}s', - title: 'Cambia Email', - emailPlaceholder: 'Inserisci una nuova email', - emailLabel: 'Nuova email', - codeLabel: 'Codice di verifica', - existingEmail: 'Un utente con questa email esiste già.', - content2: 'La tua email attuale è {{email}}. Il codice di verifica è stato inviato a questo indirizzo email.', - authTip: 'Una volta che la tua email è cambiata, gli account Google o GitHub collegati alla tua vecchia email non potranno più accedere a questo account.', - content3: 'Inserisci una nuova email e ti invieremo un codice di verifica.', - content4: 'Ti abbiamo appena inviato un codice di verifica temporaneo a {{email}}.', - content1: 'Se continui, invieremo un codice di verifica a {{email}} per la riautenticazione.', - sendVerifyCode: 'Invia codice di verifica', - unAvailableEmail: 'Questa email è temporaneamente non disponibile.', - }, - }, - members: { - team: 'Team', - invite: 'Aggiungi', - name: 'NOME', - lastActive: 'ULTIMA ATTIVITÀ', - role: 'RUOLI', - pending: 'In attesa...', - owner: 'Proprietario', - admin: 'Admin', - adminTip: 'Può creare app e gestire le impostazioni del team', - normal: 'Normale', - normalTip: 'Può solo usare le app, non può crearle', - builder: 'Builder', - builderTip: 'Può creare e modificare le proprie app', - editor: 'Editor', - editorTip: 'Può creare e modificare app', - datasetOperator: 'Admin della Conoscenza', - datasetOperatorTip: 'Può solo gestire la base di conoscenza', - inviteTeamMember: 'Aggiungi membro del team', - inviteTeamMemberTip: - 'Potranno accedere ai dati del tuo team direttamente dopo aver effettuato l\'accesso.', - emailNotSetup: 'Il server email non è configurato, quindi non è possibile inviare email di invito. Si prega di notificare agli utenti il link di invito che verrà emesso dopo l\'invito.', - email: 'Email', - emailInvalid: 'Formato Email non valido', - emailPlaceholder: 'Per favore inserisci le email', - sendInvite: 'Invia Invito', - invitedAsRole: 'Invitato come utente {{role}}', - invitationSent: 'Invito inviato', - invitationSentTip: - 'Invito inviato, e possono accedere a Dify per accedere ai dati del tuo team.', - invitationLink: 'Link di Invito', - failedInvitationEmails: - 'Gli utenti seguenti non sono stati invitati con successo', - ok: 'OK', - removeFromTeam: 'Rimuovi dal team', - removeFromTeamTip: 'Rimuoverà l\'accesso al team', - setAdmin: 'Imposta come amministratore', - setMember: 'Imposta come membro ordinario', - setBuilder: 'Imposta come builder', - setEditor: 'Imposta come editor', - disInvite: 'Annulla l\'invito', - deleteMember: 'Elimina Membro', - you: '(Tu)', - transferModal: { - continue: 'Continua', - resendTip: 'Non hai ricevuto un codice?', - title: 'Trasferire la proprietà dello spazio di lavoro', - codeLabel: 'Codice di verifica', - verifyEmail: 'Verifica la tua email attuale', - transferPlaceholder: 'Seleziona un membro del team...', - transfer: 'Trasferire la proprietà dello spazio di lavoro', - codePlaceholder: 'Inserisci il codice di 6 cifre', - warningTip: 'Diventerai un membro amministratore e il nuovo proprietario avrà il pieno controllo.', - resendCount: 'Reinvia in {{count}}s', - sendVerifyCode: 'Invia codice di verifica', - verifyContent2: 'Invieremo un codice di verifica temporaneo a questa email per la re-autenticazione.', - verifyContent: 'La tua email attuale è {{email}}.', - sendTip: 'Se continui, invieremo un codice di verifica a {{email}} per la riautenticazione.', - warning: 'Stai per trasferire la proprietà di "{{workspace}}". Questo avrà effetto immediato e non può essere annullato.', - transferLabel: 'Trasferisci la proprietà dello spazio di lavoro a', - resend: 'Rimanda', - }, - transferOwnership: 'Trasferisci Proprietà', - }, - integrations: { - connected: 'Connesso', - google: 'Google', - googleAccount: 'Accedi con l\'account Google', - github: 'GitHub', - githubAccount: 'Accedi con l\'account GitHub', - connect: 'Connetti', - }, - language: { - displayLanguage: 'Lingua di visualizzazione', - timezone: 'Fuso orario', - }, - provider: { - apiKey: 'API Key', - enterYourKey: 'Inserisci qui la tua API key', - invalidKey: 'Chiave API OpenAI non valida', - validatedError: 'Convalida fallita: ', - validating: 'Convalida chiave in corso...', - saveFailed: 'Salvataggio della chiave API fallito', - apiKeyExceedBill: - 'Questa API KEY non ha più quota disponibile, per favore leggi', - addKey: 'Aggiungi Chiave', - comingSoon: 'Prossimamente', - editKey: 'Modifica', - invalidApiKey: 'Chiave API non valida', - azure: { - apiBase: 'Base API', - apiBasePlaceholder: 'L\'URL Base API del tuo Endpoint Azure OpenAI.', - apiKey: 'API Key', - apiKeyPlaceholder: 'Inserisci qui la tua API key', - helpTip: 'Scopri di più su Azure OpenAI Service', - }, - openaiHosted: { - openaiHosted: 'OpenAI Ospitato', - onTrial: 'IN PROVA', - exhausted: 'QUOTA ESAURITA', - desc: 'Il servizio di hosting OpenAI fornito da Dify ti consente di utilizzare modelli come GPT-3.5. Prima che la tua quota di prova sia esaurita, devi configurare altri fornitori di modelli.', - callTimes: 'Numero di chiamate', - usedUp: 'Quota di prova esaurita. Aggiungi il tuo fornitore di modelli.', - useYourModel: 'Attualmente utilizzando il proprio fornitore di modelli.', - close: 'Chiudi', - }, - anthropicHosted: { - anthropicHosted: 'Anthropic Claude', - onTrial: 'IN PROVA', - exhausted: 'QUOTA ESAURITA', - desc: 'Modello potente, eccelle in una vasta gamma di compiti dal dialogo sofisticato alla generazione di contenuti creativi fino alle istruzioni dettagliate.', - callTimes: 'Numero di chiamate', - usedUp: 'Quota di prova esaurita. Aggiungi il tuo fornitore di modelli.', - useYourModel: 'Attualmente utilizzando il proprio fornitore di modelli.', - close: 'Chiudi', - trialQuotaTip: 'La tua quota di prova di Anthropic scadrà l\'11/03/2025 e non sarà più disponibile in seguito. Sfruttalo in tempo.', - }, - anthropic: { - using: 'La capacità di embedding è in uso', - enableTip: - 'Per abilitare il modello Anthropic, devi prima collegarti a OpenAI o Azure OpenAI Service.', - notEnabled: 'Non abilitato', - keyFrom: 'Ottieni la tua API key da Anthropic', - }, - encrypted: { - front: - 'La tua API KEY sarà crittografata e archiviata utilizzando la tecnologia', - back: '.', - }, - }, - modelProvider: { - notConfigured: - 'Il modello di sistema non è ancora stato completamente configurato e alcune funzioni potrebbero non essere disponibili.', - systemModelSettings: 'Impostazioni Modello di Sistema', - systemModelSettingsLink: - 'Perché è necessario configurare un modello di sistema?', - selectModel: 'Seleziona il tuo modello', - setupModelFirst: 'Per favore, configura prima il tuo modello', - systemReasoningModel: { - key: 'Modello di Ragionamento di Sistema', - tip: 'Imposta il modello di inferenza predefinito da utilizzare per creare applicazioni, così come funzionalità come la generazione del nome del dialogo e il suggerimento della domanda successiva utilizzeranno anche il modello di inferenza predefinito.', - }, - embeddingModel: { - key: 'Modello di Embedding', - tip: 'Imposta il modello predefinito per l\'elaborazione degli embedding dei documenti della Conoscenza, sia il recupero che l\'importazione della Conoscenza utilizzano questo modello di Embedding per il processo di vettorizzazione. Il cambio causerà l\'incoerenza della dimensione del vettore tra la Conoscenza importata e la domanda, causando un fallimento nel recupero. Per evitare fallimenti nel recupero, non cambiare questo modello a piacimento.', - required: 'Il Modello di Embedding è obbligatorio', - }, - speechToTextModel: { - key: 'Modello da Voce a Testo', - tip: 'Imposta il modello predefinito per l\'input da voce a testo nella conversazione.', - }, - ttsModel: { - key: 'Modello da Testo a Voce', - tip: 'Imposta il modello predefinito per l\'input da testo a voce nella conversazione.', - }, - rerankModel: { - key: 'Modello di Rerank', - tip: 'Il modello di rerank riordinerà la lista dei documenti candidati basandosi sulla corrispondenza semantica con la query dell\'utente, migliorando i risultati del ranking semantico', - }, - apiKey: 'API-KEY', - quota: 'Quota', - searchModel: 'Modello di ricerca', - noModelFound: 'Nessun modello trovato per {{model}}', - models: 'Modelli', - showMoreModelProvider: 'Mostra più fornitori di modelli', - selector: { - tip: 'Questo modello è stato rimosso. Per favore aggiungi un modello o seleziona un altro modello.', - emptyTip: 'Nessun modello disponibile', - emptySetting: 'Per favore vai alle impostazioni per configurare', - rerankTip: 'Per favore, configura il modello di Rerank', - }, - card: { - quota: 'QUOTA', - onTrial: 'In Prova', - paid: 'Pagato', - quotaExhausted: 'Quota esaurita', - callTimes: 'Numero di chiamate', - tokens: 'Token', - buyQuota: 'Acquista Quota', - priorityUse: 'Uso prioritario', - removeKey: 'Rimuovi API Key', - tip: 'Verrà data priorità alla quota pagata. La quota di prova sarà utilizzata dopo l\'esaurimento della quota pagata.', - }, - item: { - deleteDesc: - '{{modelName}} è utilizzato come modello di ragionamento di sistema. Alcune funzioni non saranno disponibili dopo la rimozione. Si prega di confermare.', - freeQuota: 'QUOTA GRATUITA', - }, - addApiKey: 'Aggiungi la tua API key', - invalidApiKey: 'API key non valida', - encrypted: { - front: - 'La tua API KEY sarà crittografata e archiviata utilizzando la tecnologia', - back: '.', - }, - freeQuota: { - howToEarn: 'Come guadagnare', - }, - addMoreModelProvider: 'AGGIUNGI PIÙ FORNITORI DI MODELLI', - addModel: 'Aggiungi Modello', - modelsNum: '{{num}} Modelli', - showModels: 'Mostra Modelli', - showModelsNum: 'Mostra {{num}} Modelli', - collapse: 'Comprimi', - config: 'Configura', - modelAndParameters: 'Modello e Parametri', - model: 'Modello', - featureSupported: '{{feature}} supportato', - callTimes: 'Numero di chiamate', - credits: 'Crediti Messaggi', - buyQuota: 'Acquista Quota', - getFreeTokens: 'Ottieni Token gratuiti', - priorityUsing: 'Utilizzo prioritario', - deprecated: 'Deprecato', - confirmDelete: 'confermare l\'eliminazione?', - quotaTip: 'Token gratuiti rimanenti disponibili', - loadPresets: 'Carica Preset', - parameters: 'PARAMETRI', - loadBalancing: 'Bilanciamento del Carico', - loadBalancingDescription: 'Riduci la pressione con più set di credenziali.', - loadBalancingHeadline: 'Bilanciamento del Carico', - configLoadBalancing: 'Configura Bilanciamento del Carico', - modelHasBeenDeprecated: 'Questo modello è stato deprecato', - providerManaged: 'Gestito dal fornitore', - providerManagedDescription: - 'Usa il singolo set di credenziali fornito dal fornitore del modello.', - defaultConfig: 'Config predefinito', - apiKeyStatusNormal: 'Stato APIKey normale', - apiKeyRateLimit: - 'Il limite di velocità è stato raggiunto, disponibile dopo {{seconds}}s', - addConfig: 'Aggiungi Configurazione', - editConfig: 'Modifica Configurazione', - loadBalancingLeastKeyWarning: - 'Per abilitare il bilanciamento del carico devono essere abilitate almeno 2 chiavi.', - loadBalancingInfo: - 'Per impostazione predefinita, il bilanciamento del carico utilizza la strategia Round-robin. Se viene attivato il rate limiting, verrà applicato un periodo di cooldown di 1 minuto.', - upgradeForLoadBalancing: - 'Aggiorna il tuo piano per abilitare il Bilanciamento del Carico.', - configureTip: 'Configura la chiave API o aggiungi il modello da utilizzare', - installProvider: 'Installare i provider di modelli', - toBeConfigured: 'Da configurare', - emptyProviderTip: 'Si prega di installare prima un fornitore di modelli.', - discoverMore: 'Scopri di più in', - emptyProviderTitle: 'Provider di modelli non configurato', - auth: { - apiKeyModal: { - addModel: 'Aggiungi modello', - title: 'Configurazione dell\'autorizzazione della chiave API', - desc: 'Dopo aver configurato le credenziali, tutti i membri all\'interno dello spazio di lavoro possono utilizzare questo modello quando orchestrano applicazioni.', - }, - modelCredentials: 'Credenziali del modello', - providerManaged: 'Fornitore gestito', - apiKeys: 'Chiavi API', - authRemoved: 'Autore rimosso', - specifyModelCredential: 'Specifica le credenziali del modello', - addApiKey: 'Aggiungi la chiave API', - addModelCredential: 'Aggiungi le credenziali del modello', - addNewModel: 'Aggiungi un nuovo modello', - providerManagedTip: 'La configurazione attuale è ospitata dal fornitore.', - addCredential: 'Aggiungi credenziali', - authorizationError: 'Errore di autorizzazione', - configLoadBalancing: 'Configurazione del bilanciamento del carico', - unAuthorized: 'Non autorizzato', - specifyModelCredentialTip: 'Usa una credenziale di modello configurato.', - configModel: 'Configura modello', - addNewModelCredential: 'Aggiungere nuove credenziali del modello', - selectModelCredential: 'Seleziona una credenziale del modello', - customModelCredentials: 'Credenziali del modello personalizzato', - manageCredentials: 'Gestisci credenziali', - customModelCredentialsDeleteTip: 'La credenziale è in uso e non può essere eliminata', - addModel: 'Aggiungi modello', - modelCredential: 'Credenziale del modello', - removeModel: 'Rimuovi modello', - editModelCredential: 'Modificare le credenziali del modello', - }, - parametersInvalidRemoved: 'Alcuni parametri non sono validi e sono stati rimossi.', - installDataSourceProvider: 'Installa i fornitori di sorgenti dati', - }, - dataSource: { - add: 'Aggiungi una fonte di dati', - connect: 'Connetti', - configure: 'Configura', - notion: { - title: 'Notion', - description: 'Usa Notion come fonte di dati per la Conoscenza.', - connectedWorkspace: 'Workspace connesso', - addWorkspace: 'Aggiungi workspace', - connected: 'Connesso', - disconnected: 'Disconnesso', - changeAuthorizedPages: 'Cambia pagine autorizzate', - pagesAuthorized: 'Pagine autorizzate', - sync: 'Sincronizza', - remove: 'Rimuovi', - selector: { - pageSelected: 'Pagine selezionate', - searchPages: 'Cerca pagine...', - noSearchResult: 'Nessun risultato di ricerca', - addPages: 'Aggiungi pagine', - preview: 'ANTEPRIMA', - }, - integratedAlert: 'Notion è integrato tramite credenziali interne, non è necessario ri-autorizzare.', - }, - website: { - title: 'Sito web', - description: 'Importa contenuti dai siti web utilizzando il web crawler.', - with: 'Con', - configuredCrawlers: 'Crawler configurati', - active: 'Attivo', - inactive: 'Inattivo', - }, - }, - plugin: { - serpapi: { - apiKey: 'API Key', - apiKeyPlaceholder: 'Inserisci la tua API key', - keyFrom: 'Ottieni la tua API key dalla pagina dell\'account SerpAPI', - }, - }, - apiBasedExtension: { - title: - 'Le estensioni API forniscono una gestione centralizzata delle API, semplificando la configurazione per un facile utilizzo nelle applicazioni di Dify.', - link: 'Scopri come sviluppare la tua estensione API.', - add: 'Aggiungi Estensione API', - selector: { - title: 'Estensione API', - placeholder: 'Per favore seleziona l\'estensione API', - manage: 'Gestisci Estensione API', - }, - modal: { - title: 'Aggiungi Estensione API', - editTitle: 'Modifica Estensione API', - name: { - title: 'Nome', - placeholder: 'Per favore inserisci il nome', - }, - apiEndpoint: { - title: 'Endpoint API', - placeholder: 'Per favore inserisci l\'endpoint API', - }, - apiKey: { - title: 'API-key', - placeholder: 'Per favore inserisci l\'API-key', - lengthError: - 'La lunghezza della chiave API non può essere inferiore a 5 caratteri', - }, - }, - type: 'Tipo', - }, - about: { - changeLog: 'Registro delle modifiche', - updateNow: 'Aggiorna ora', - nowAvailable: 'Dify {{version}} è ora disponibile.', - latestAvailable: 'Dify {{version}} è l\'ultima versione disponibile.', - }, - appMenus: { - overview: 'Monitoraggio', - promptEng: 'Orchestrazione', - apiAccess: 'Accesso API', - logAndAnn: 'Log & Ann.', - logs: 'Log', - }, - environment: { - testing: 'TEST', - development: 'SVILUPPO', - }, - appModes: { - completionApp: 'Generatore di Testi', - chatApp: 'App di Chat', - }, - datasetMenus: { - documents: 'Documenti', - hitTesting: 'Test di Recupero', - settings: 'Impostazioni', - emptyTip: - 'La Conoscenza non è stata associata, per favore vai all\'applicazione o al plug-in per completare l\'associazione.', - viewDoc: 'Visualizza documentazione', - relatedApp: 'app collegate', - noRelatedApp: 'Nessuna app collegata', - pipeline: 'Oleodotto', - }, - voiceInput: { - speaking: 'Parla ora...', - converting: 'Conversione in testo...', - notAllow: 'microfono non autorizzato', - }, - 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: 'Rinomina Conversazione', - conversationName: 'Nome della conversazione', - conversationNamePlaceholder: - 'Per favore inserisci il nome della conversazione', - conversationNameCanNotEmpty: 'Nome della conversazione obbligatorio', - citation: { - title: 'CITAZIONI', - linkToDataset: 'Collegamento alla Conoscenza', - characters: 'Caratteri:', - hitCount: 'Conteggio dei recuperi:', - vectorHash: 'Hash del vettore:', - hitScore: 'Punteggio di recupero:', - }, - inputPlaceholder: 'Parla con il {{botName}}', - thinking: 'Pensante...', - thought: 'Pensiero', - resend: 'Reinvia', - }, - promptEditor: { - placeholder: - 'Scrivi qui il tuo prompt, inserisci \'{\' per inserire una variabile, inserisci \'/\' per inserire un blocco di contenuto del prompt', - context: { - item: { - title: 'Contesto', - desc: 'Inserisci modello di contesto', - }, - modal: { - title: '{{num}} Conoscenza nel Contesto', - add: 'Aggiungi Contesto ', - footer: 'Puoi gestire i contesti nella sezione Contesto qui sotto.', - }, - }, - history: { - item: { - title: 'Cronologia della Conversazione', - desc: 'Inserisci modello di messaggio storico', - }, - modal: { - title: 'ESEMPIO', - user: 'Ciao', - assistant: 'Ciao! Come posso aiutarti oggi?', - edit: 'Modifica i Nomi dei Ruoli della Conversazione', - }, - }, - variable: { - item: { - title: 'Variabili & Strumenti Esterni', - desc: 'Inserisci Variabili & Strumenti Esterni', - }, - outputToolDisabledItem: { - title: 'Variabili', - desc: 'Inserisci Variabili', - }, - modal: { - add: 'Nuova variabile', - addTool: 'Nuovo strumento', - }, - }, - query: { - item: { - title: 'Query', - desc: 'Inserisci modello di query dell\'utente', - }, - }, - existed: 'Esiste già nel prompt', - }, - imageUploader: { - uploadFromComputer: 'Carica dal Computer', - uploadFromComputerReadError: - 'Lettura dell\'immagine fallita, per favore riprova.', - uploadFromComputerUploadError: - 'Caricamento dell\'immagine fallito, per favore ricarica.', - uploadFromComputerLimit: - 'Le immagini caricate non possono superare i {{size}} MB', - pasteImageLink: 'Incolla link immagine', - pasteImageLinkInputPlaceholder: 'Incolla qui il link immagine', - pasteImageLinkInvalid: 'Link immagine non valido', - imageUpload: 'Caricamento Immagine', - }, - tag: { - placeholder: 'Tutti i Tag', - addNew: 'Aggiungi nuovo tag', - noTag: 'Nessun tag', - noTagYet: 'Nessun tag ancora', - addTag: 'Aggiungi tag', - editTag: 'Modifica tag', - manageTags: 'Gestisci Tag', - selectorPlaceholder: 'Scrivi per cercare o creare', - create: 'Crea', - delete: 'Elimina tag', - deleteTip: 'Il tag è in uso, eliminarlo?', - created: 'Tag creato con successo', - failed: 'Creazione del tag fallita', - }, - fileUploader: { - uploadFromComputer: 'Caricamento locale', - uploadFromComputerLimit: 'Il file di caricamento non può superare {{size}}', - pasteFileLinkInvalid: 'Collegamento file non valido', - fileExtensionNotSupport: 'Estensione del file non supportata', - pasteFileLinkInputPlaceholder: 'Inserisci l\'URL...', - uploadFromComputerUploadError: 'Caricamento del file non riuscito, carica di nuovo.', - pasteFileLink: 'Incolla il collegamento del file', - uploadFromComputerReadError: 'Lettura del file non riuscita, riprovare.', - fileExtensionBlocked: 'Questo tipo di file è bloccato per motivi di sicurezza', - uploadDisabled: 'Il caricamento dei file è disabilitato', - }, - license: { - expiring_plural: 'Scadenza tra {{count}} giorni', - expiring: 'Scadenza in un giorno', - unlimited: 'Illimitato', - }, - pagination: { - perPage: 'Articoli per pagina', - }, - theme: { - light: 'luce', - auto: 'sistema', - dark: 'scuro', - theme: 'Tema', - }, - compliance: { - gdpr: 'GDPR DPA', - professionalUpgradeTooltip: 'Disponibile solo con un piano Team o superiore.', - sandboxUpgradeTooltip: 'Disponibile solo con un piano Professionale o Team.', - soc2Type2: 'Rapporto SOC 2 di Tipo II', - iso27001: 'Certificazione ISO 27001:2022', - soc2Type1: 'Rapporto SOC 2 Tipo I', - }, - imageInput: { - supportedFormats: 'Supporta PNG, JPG, JPEG, WEBP e GIF', - browse: 'sfogliare', - dropImageHere: 'Trascina la tua immagine qui, oppure', - }, - you: 'Tu', - avatar: { - deleteTitle: 'Rimuovi avatar', - deleteDescription: 'Sei sicuro di voler rimuovere la tua immagine del profilo? Il tuo account utilizzerà l\'avatar iniziale predefinito.', - }, - feedback: { - title: 'Fornire feedback', - content: 'Contenuto del feedback', - subtitle: 'Per favore, dicci cosa è andato storto con questa risposta.', - placeholder: 'Per favore descrivi cosa è andato storto o come possiamo migliorare...', - }, - label: { - optional: '(Facoltativo)', - }, - noData: 'Nessun dato', - dynamicSelect: { - error: 'Caricamento delle opzioni non riuscito', - noData: 'Nessuna opzione disponibile', - loading: 'Caricamento opzioni...', - selected: '{{count}} selezionato', - }, -} - -export default translation diff --git a/web/i18n/it-IT/custom.json b/web/i18n/it-IT/custom.json new file mode 100644 index 0000000000..46f4051a11 --- /dev/null +++ b/web/i18n/it-IT/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "Personalizzazione", + "upgradeTip": { + "prefix": "Aggiorna il tuo piano per", + "suffix": "personalizzare il tuo marchio.", + "title": "Aggiorna il tuo piano", + "des": "Aggiorna il tuo piano per personalizzare il tuo marchio" + }, + "webapp": { + "title": "Personalizza il marchio web app", + "removeBrand": "Rimuovi Powered by Dify", + "changeLogo": "Cambia immagine del marchio Powered by", + "changeLogoTip": "Formato SVG o PNG con una dimensione minima di 40x40px" + }, + "app": { + "title": "Personalizza l'intestazione del marchio dell'app", + "changeLogoTip": "Formato SVG o PNG con una dimensione minima di 80x80px" + }, + "upload": "Carica", + "uploading": "Caricamento in corso", + "uploadedFail": "Caricamento dell'immagine fallito, per favore ricarica.", + "change": "Cambia", + "apply": "Applica", + "restore": "Ripristina Impostazioni Predefinite", + "customize": { + "contactUs": " contattaci ", + "prefix": "Per personalizzare il logo del marchio all'interno dell'app, per favore", + "suffix": "per aggiornare alla versione Enterprise." + } +} diff --git a/web/i18n/it-IT/custom.ts b/web/i18n/it-IT/custom.ts deleted file mode 100644 index c6164ce5da..0000000000 --- a/web/i18n/it-IT/custom.ts +++ /dev/null @@ -1,33 +0,0 @@ -const translation = { - custom: 'Personalizzazione', - upgradeTip: { - prefix: 'Aggiorna il tuo piano per', - suffix: 'personalizzare il tuo marchio.', - title: 'Aggiorna il tuo piano', - des: 'Aggiorna il tuo piano per personalizzare il tuo marchio', - }, - webapp: { - title: 'Personalizza il marchio web app', - removeBrand: 'Rimuovi Powered by Dify', - changeLogo: 'Cambia immagine del marchio Powered by', - changeLogoTip: 'Formato SVG o PNG con una dimensione minima di 40x40px', - }, - app: { - title: 'Personalizza l\'intestazione del marchio dell\'app', - changeLogoTip: 'Formato SVG o PNG con una dimensione minima di 80x80px', - }, - upload: 'Carica', - uploading: 'Caricamento in corso', - uploadedFail: 'Caricamento dell\'immagine fallito, per favore ricarica.', - change: 'Cambia', - apply: 'Applica', - restore: 'Ripristina Impostazioni Predefinite', - customize: { - contactUs: ' contattaci ', - prefix: - 'Per personalizzare il logo del marchio all\'interno dell\'app, per favore', - suffix: 'per aggiornare alla versione Enterprise.', - }, -} - -export default translation diff --git a/web/i18n/it-IT/dataset-creation.json b/web/i18n/it-IT/dataset-creation.json new file mode 100644 index 0000000000..aa8b86f3e9 --- /dev/null +++ b/web/i18n/it-IT/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "Conoscenza" + }, + "one": "Scegli fonte dati", + "two": "Preprocessamento e Pulizia del Testo", + "three": "Esegui e termina" + }, + "error": { + "unavailable": "Questa Conoscenza non è disponibile" + }, + "firecrawl": { + "configFirecrawl": "Configura 🔥Firecrawl", + "apiKeyPlaceholder": "Chiave API da firecrawl.dev", + "getApiKeyLinkText": "Ottieni la tua chiave API da firecrawl.dev" + }, + "stepOne": { + "filePreview": "Anteprima del File", + "pagePreview": "Anteprima della Pagina", + "dataSourceType": { + "file": "Importa da file", + "notion": "Sincronizza da Notion", + "web": "Sincronizza da sito web" + }, + "uploader": { + "title": "Carica file", + "button": "Trascina e rilascia file o cartelle, oppure", + "buttonSingleFile": "Trascina e rilascia un file, oppure", + "browse": "Sfoglia", + "tip": "Supporta {{supportTypes}}. Max {{size}}MB ciascuno.", + "validation": { + "typeError": "Tipo di file non supportato", + "size": "File troppo grande. Il massimo è {{size}}MB", + "count": "Più file non supportati", + "filesNumber": "Hai raggiunto il limite di caricamento batch di {{filesNumber}}." + }, + "cancel": "Annulla", + "change": "Cambia", + "failed": "Caricamento fallito" + }, + "notionSyncTitle": "Notion non è connesso", + "notionSyncTip": "Per sincronizzare con Notion, deve essere stabilita prima la connessione a Notion.", + "connect": "Vai a connettere", + "button": "Avanti", + "emptyDatasetCreation": "Voglio creare una Conoscenza vuota", + "modal": { + "title": "Crea una Conoscenza vuota", + "tip": "Una Conoscenza vuota non conterrà documenti, e potrai caricare documenti in qualsiasi momento.", + "input": "Nome della Conoscenza", + "placeholder": "Per favore inserisci", + "nameNotEmpty": "Il nome non può essere vuoto", + "nameLengthInvalid": "Il nome deve essere tra 1 e 40 caratteri", + "cancelButton": "Annulla", + "confirmButton": "Crea", + "failed": "Creazione fallita" + }, + "website": { + "fireCrawlNotConfigured": "Firecrawl non è configurato", + "fireCrawlNotConfiguredDescription": "Configura Firecrawl con la chiave API per usarlo.", + "configure": "Configura", + "run": "Esegui", + "firecrawlTitle": "Estrai contenuti web con 🔥Firecrawl", + "firecrawlDoc": "Documenti Firecrawl", + "options": "Opzioni", + "crawlSubPage": "Crawl sotto-pagine", + "limit": "Limite", + "maxDepth": "Profondità massima", + "excludePaths": "Escludi percorsi", + "includeOnlyPaths": "Includi solo percorsi", + "extractOnlyMainContent": "Estrai solo il contenuto principale (senza intestazioni, nav, piè di pagina, ecc.)", + "exceptionErrorTitle": "Si è verificata un'eccezione durante l'esecuzione del lavoro Firecrawl:", + "unknownError": "Errore sconosciuto", + "totalPageScraped": "Pagine totali estratte:", + "selectAll": "Seleziona tutto", + "resetAll": "Reimposta tutto", + "scrapTimeInfo": "Estratte {{total}} pagine in totale in {{time}}s", + "preview": "Anteprima", + "maxDepthTooltip": "Profondità massima da eseguire rispetto all'URL inserito. La profondità 0 estrae solo la pagina dell'URL inserito, la profondità 1 estrae l'URL e tutto ciò che segue l'URL inserito + uno /, e così via.", + "jinaReaderDocLink": "https://jina.ai/reader", + "useSitemapTooltip": "Segui la sitemap per eseguire la scansione del sito. In caso contrario, Jina Reader eseguirà la scansione in modo iterativo in base alla pertinenza della pagina, producendo meno pagine ma di qualità superiore.", + "jinaReaderNotConfigured": "Jina Reader non è configurato", + "jinaReaderDoc": "Scopri di più su Jina Reader", + "jinaReaderTitle": "Converti l'intero sito in Markdown", + "jinaReaderNotConfiguredDescription": "Configura Jina Reader inserendo la tua chiave API gratuita per l'accesso.", + "useSitemap": "Usa la mappa del sito", + "chooseProvider": "Seleziona un fornitore", + "watercrawlDoc": "Documentazione di Watercrawl", + "waterCrawlNotConfiguredDescription": "Configura Watercrawl con la chiave API per utilizzarlo.", + "configureFirecrawl": "Configura Firecrawl", + "watercrawlTitle": "Estrai contenuti web con Watercrawl", + "configureJinaReader": "Configura Jina Reader", + "configureWatercrawl": "Configura Watercrawl", + "waterCrawlNotConfigured": "Watercrawl non è configurato", + "running": "Corsa" + }, + "cancel": "Annulla" + }, + "stepTwo": { + "segmentation": "Impostazioni dei blocchi", + "auto": "Automatico", + "autoDescription": "Imposta automaticamente le regole dei blocchi e del preprocessamento. Gli utenti non familiari sono consigliati di selezionare questo.", + "custom": "Personalizzato", + "customDescription": "Personalizza le regole dei blocchi, la lunghezza dei blocchi e le regole di preprocessamento, ecc.", + "separator": "Identificatore di segmento", + "separatorPlaceholder": "Ad esempio, nuova linea (\\\\n) o separatore speciale (come `***`)", + "maxLength": "Lunghezza massima del blocco", + "overlap": "Sovrapposizione del blocco", + "overlapTip": "Impostare la sovrapposizione del blocco può mantenere la rilevanza semantica tra di loro, migliorando l'effetto di recupero. Si consiglia di impostare il 10%-25% della dimensione massima del blocco.", + "overlapCheck": "la sovrapposizione del blocco non dovrebbe essere maggiore della lunghezza massima del blocco", + "rules": "Regole di preprocessamento del testo", + "removeExtraSpaces": "Sostituisci spazi, nuove linee e tab consecutivi", + "removeUrlEmails": "Elimina tutti gli URL e gli indirizzi email", + "removeStopwords": "Rimuovi parole vuote come `a`, `an`, `the`", + "preview": "Conferma & Anteprima", + "reset": "Reimposta", + "indexMode": "Modalità indice", + "qualified": "Alta Qualità", + "recommend": "Consigliato", + "qualifiedTip": "Chiama l'interfaccia di embedding di sistema predefinita per l'elaborazione per fornire maggiore accuratezza quando gli utenti fanno query.", + "warning": "Per favore configura prima la chiave API del fornitore del modello.", + "click": "Vai alle impostazioni", + "economical": "Economico", + "economicalTip": "Usa motori vettoriali offline, indici di parole chiave, ecc. per ridurre l'accuratezza senza spendere token", + "QATitle": "Segmentazione in formato Domanda & Risposta", + "QATip": "Abilitare questa opzione consumerà più token", + "QALanguage": "Segmenta usando", + "estimateCost": "Stima", + "estimateSegment": "Blocchi stimati", + "segmentCount": "blocchi", + "calculating": "Calcolo in corso...", + "fileSource": "Preprocessa documenti", + "notionSource": "Preprocessa pagine", + "websiteSource": "Preprocessa sito web", + "other": "e altri ", + "fileUnit": " file", + "notionUnit": " pagine", + "webpageUnit": " pagine", + "previousStep": "Passo precedente", + "nextStep": "Salva & Elabora", + "save": "Salva & Elabora", + "cancel": "Annulla", + "sideTipTitle": "Perché segmentare e preprocessare?", + "sideTipP1": "Quando si elabora dati testuali, la segmentazione e la pulizia sono due passaggi di preprocessamento importanti.", + "sideTipP2": "La segmentazione divide il testo lungo in paragrafi così i modelli possono comprendere meglio. Questo migliora la qualità e la rilevanza dei risultati del modello.", + "sideTipP3": "La pulizia rimuove caratteri e formati non necessari, rendendo la Conoscenza più pulita e facile da analizzare.", + "sideTipP4": "Una corretta segmentazione e pulizia migliorano le prestazioni del modello, fornendo risultati più accurati e preziosi.", + "previewTitle": "Anteprima", + "previewTitleButton": "Anteprima", + "previewButton": "Passaggio al formato Domanda & Risposta", + "previewSwitchTipStart": "L'anteprima del blocco corrente è in formato testo, il passaggio a un'anteprima in formato domanda e risposta", + "previewSwitchTipEnd": " consumerà token aggiuntivi", + "characters": "caratteri", + "indexSettingTip": "Per cambiare il metodo di indicizzazione, vai alle ", + "retrievalSettingTip": "Per cambiare il metodo di indicizzazione, vai alle ", + "datasetSettingLink": "impostazioni della Conoscenza.", + "separatorTip": "Un delimitatore è il carattere utilizzato per separare il testo. \\n\\n e \\n sono delimitatori comunemente usati per separare paragrafi e righe. In combinazione con le virgole (\\n\\n,\\n), i paragrafi verranno segmentati per righe quando superano la lunghezza massima del blocco. È inoltre possibile utilizzare delimitatori speciali definiti dall'utente (ad es. ***).", + "maxLengthCheck": "La lunghezza massima del blocco deve essere inferiore a {{limit}}", + "useQALanguage": "Blocco con il formato Q&A in", + "previewChunkTip": "Fai clic sul pulsante \"Anteprima blocco\" a sinistra per caricare l'anteprima", + "paragraph": "Paragrafo", + "childChunkForRetrieval": "Child-chunk per il recupero", + "general": "Generale", + "fullDoc": "Documento completo", + "previewChunkCount": "{{conteggio}} Blocchi stimati", + "generalTip": "Modalità generale di suddivisione in blocchi del testo, i blocchi recuperati e richiamati sono gli stessi.", + "parentChildChunkDelimiterTip": "Un delimitatore è il carattere utilizzato per separare il testo. \\n è consigliato per dividere i blocchi principali in piccoli blocchi figlio. È inoltre possibile utilizzare delimitatori speciali definiti dall'utente.", + "fullDocTip": "L'intero documento viene utilizzato come blocco principale e recuperato direttamente. Si prega di notare che per motivi di prestazioni, il testo che supera i 10000 token verrà automaticamente troncato.", + "parentChild": "Genitore-figlio", + "qaSwitchHighQualityTipContent": "Attualmente, solo il metodo dell'indice di alta qualità supporta la suddivisione in blocchi del formato Domande e risposte. Volete passare alla modalità di alta qualità?", + "parentChunkForContext": "Parent-chunk per il contesto", + "switch": "Interruttore", + "paragraphTip": "Questa modalità suddivide il testo in paragrafi in base ai delimitatori e alla lunghezza massima del blocco, utilizzando il testo diviso come blocco principale per il recupero.", + "notAvailableForQA": "Non disponibile per l'indice Q&A", + "parentChildTip": "Quando si utilizza la modalità genitore-figlio, il blocco figlio viene utilizzato per il recupero e il blocco padre viene utilizzato per il richiamo come contesto.", + "highQualityTip": "Una volta terminato l'incorporamento in modalità Alta qualità, il ripristino della modalità Economica non è disponibile.", + "parentChildDelimiterTip": "Un delimitatore è il carattere utilizzato per separare il testo. \\n\\n è consigliato per dividere il documento originale in blocchi principali di grandi dimensioni. È inoltre possibile utilizzare delimitatori speciali definiti dall'utente.", + "previewChunk": "Blocco di anteprima", + "notAvailableForParentChild": "Non disponibile per l'indice padre-figlio", + "qaSwitchHighQualityTipTitle": "Il formato Domande e risposte richiede un metodo di indicizzazione di alta qualità", + "qaTip": "Quando si usano dati strutturati di Domande e risposte, è possibile creare documenti che abbinano domande e risposte. Questi documenti vengono indicizzati in base alla parte della domanda, consentendo al sistema di recuperare le risposte pertinenti in base alla somiglianza della query." + }, + "stepThree": { + "creationTitle": "🎉 Conoscenza creata", + "creationContent": "Abbiamo automaticamente nominato la Conoscenza, puoi modificarla in qualsiasi momento", + "label": "Nome della Conoscenza", + "additionTitle": "🎉 Documento caricato", + "additionP1": "Il documento è stato caricato nella Conoscenza", + "additionP2": ", puoi trovarlo nella lista dei documenti della Conoscenza.", + "stop": "Ferma l'elaborazione", + "resume": "Riprendi l'elaborazione", + "navTo": "Vai al documento", + "sideTipTitle": "Cosa succede dopo", + "sideTipContent": "Dopo che il documento ha terminato l'indicizzazione, la Conoscenza può essere integrata nell'applicazione come contesto, puoi trovare l'impostazione del contesto nella pagina di orchestrazione del prompt. Puoi anche crearla come un plugin di indicizzazione indipendente di ChatGPT per la pubblicazione.", + "modelTitle": "Sei sicuro di fermare l'embedding?", + "modelContent": "Se hai bisogno di riprendere l'elaborazione in seguito, continuerai da dove hai interrotto.", + "modelButtonConfirm": "Conferma", + "modelButtonCancel": "Annulla" + }, + "jinaReader": { + "getApiKeyLinkText": "Ottieni la tua chiave API gratuita su jina.ai", + "apiKeyPlaceholder": "Chiave API da jina.ai", + "configJinaReader": "Configura Jina Reader" + }, + "otherDataSource": { + "learnMore": "Ulteriori informazioni", + "title": "Connettersi ad altre origini dati?", + "description": "Attualmente, la knowledge base di Dify ha solo fonti di dati limitate. Contribuire con una fonte di dati alla knowledge base di Dify è un modo fantastico per migliorare la flessibilità e la potenza della piattaforma per tutti gli utenti. La nostra guida ai contributi ti aiuta a iniziare. Clicca sul link sottostante per saperne di più." + }, + "watercrawl": { + "getApiKeyLinkText": "Ottieni la tua chiave API da watercrawl.dev", + "apiKeyPlaceholder": "Chiave API da watercrawl.dev", + "configWatercrawl": "Configura Watercrawl" + } +} diff --git a/web/i18n/it-IT/dataset-creation.ts b/web/i18n/it-IT/dataset-creation.ts deleted file mode 100644 index cdcee6ace8..0000000000 --- a/web/i18n/it-IT/dataset-creation.ts +++ /dev/null @@ -1,239 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: 'Conoscenza', - }, - one: 'Scegli fonte dati', - two: 'Preprocessamento e Pulizia del Testo', - three: 'Esegui e termina', - }, - error: { - unavailable: 'Questa Conoscenza non è disponibile', - }, - firecrawl: { - configFirecrawl: 'Configura 🔥Firecrawl', - apiKeyPlaceholder: 'Chiave API da firecrawl.dev', - getApiKeyLinkText: 'Ottieni la tua chiave API da firecrawl.dev', - }, - stepOne: { - filePreview: 'Anteprima del File', - pagePreview: 'Anteprima della Pagina', - dataSourceType: { - file: 'Importa da file', - notion: 'Sincronizza da Notion', - web: 'Sincronizza da sito web', - }, - uploader: { - title: 'Carica file', - button: 'Trascina e rilascia file o cartelle, oppure', - buttonSingleFile: 'Trascina e rilascia un file, oppure', - browse: 'Sfoglia', - tip: 'Supporta {{supportTypes}}. Max {{size}}MB ciascuno.', - validation: { - typeError: 'Tipo di file non supportato', - size: 'File troppo grande. Il massimo è {{size}}MB', - count: 'Più file non supportati', - filesNumber: - 'Hai raggiunto il limite di caricamento batch di {{filesNumber}}.', - }, - cancel: 'Annulla', - change: 'Cambia', - failed: 'Caricamento fallito', - }, - notionSyncTitle: 'Notion non è connesso', - notionSyncTip: - 'Per sincronizzare con Notion, deve essere stabilita prima la connessione a Notion.', - connect: 'Vai a connettere', - button: 'Avanti', - emptyDatasetCreation: 'Voglio creare una Conoscenza vuota', - modal: { - title: 'Crea una Conoscenza vuota', - tip: 'Una Conoscenza vuota non conterrà documenti, e potrai caricare documenti in qualsiasi momento.', - input: 'Nome della Conoscenza', - placeholder: 'Per favore inserisci', - nameNotEmpty: 'Il nome non può essere vuoto', - nameLengthInvalid: 'Il nome deve essere tra 1 e 40 caratteri', - cancelButton: 'Annulla', - confirmButton: 'Crea', - failed: 'Creazione fallita', - }, - website: { - fireCrawlNotConfigured: 'Firecrawl non è configurato', - fireCrawlNotConfiguredDescription: - 'Configura Firecrawl con la chiave API per usarlo.', - configure: 'Configura', - run: 'Esegui', - firecrawlTitle: 'Estrai contenuti web con 🔥Firecrawl', - firecrawlDoc: 'Documenti Firecrawl', - options: 'Opzioni', - crawlSubPage: 'Crawl sotto-pagine', - limit: 'Limite', - maxDepth: 'Profondità massima', - excludePaths: 'Escludi percorsi', - includeOnlyPaths: 'Includi solo percorsi', - extractOnlyMainContent: - 'Estrai solo il contenuto principale (senza intestazioni, nav, piè di pagina, ecc.)', - exceptionErrorTitle: - 'Si è verificata un\'eccezione durante l\'esecuzione del lavoro Firecrawl:', - unknownError: 'Errore sconosciuto', - totalPageScraped: 'Pagine totali estratte:', - selectAll: 'Seleziona tutto', - resetAll: 'Reimposta tutto', - scrapTimeInfo: 'Estratte {{total}} pagine in totale in {{time}}s', - preview: 'Anteprima', - maxDepthTooltip: - 'Profondità massima da eseguire rispetto all\'URL inserito. La profondità 0 estrae solo la pagina dell\'URL inserito, la profondità 1 estrae l\'URL e tutto ciò che segue l\'URL inserito + uno /, e così via.', - jinaReaderDocLink: 'https://jina.ai/reader', - useSitemapTooltip: 'Segui la sitemap per eseguire la scansione del sito. In caso contrario, Jina Reader eseguirà la scansione in modo iterativo in base alla pertinenza della pagina, producendo meno pagine ma di qualità superiore.', - jinaReaderNotConfigured: 'Jina Reader non è configurato', - jinaReaderDoc: 'Scopri di più su Jina Reader', - jinaReaderTitle: 'Converti l\'intero sito in Markdown', - jinaReaderNotConfiguredDescription: 'Configura Jina Reader inserendo la tua chiave API gratuita per l\'accesso.', - useSitemap: 'Usa la mappa del sito', - chooseProvider: 'Seleziona un fornitore', - watercrawlDoc: 'Documentazione di Watercrawl', - waterCrawlNotConfiguredDescription: 'Configura Watercrawl con la chiave API per utilizzarlo.', - configureFirecrawl: 'Configura Firecrawl', - watercrawlTitle: 'Estrai contenuti web con Watercrawl', - configureJinaReader: 'Configura Jina Reader', - configureWatercrawl: 'Configura Watercrawl', - waterCrawlNotConfigured: 'Watercrawl non è configurato', - running: 'Corsa', - }, - cancel: 'Annulla', - }, - stepTwo: { - segmentation: 'Impostazioni dei blocchi', - auto: 'Automatico', - autoDescription: - 'Imposta automaticamente le regole dei blocchi e del preprocessamento. Gli utenti non familiari sono consigliati di selezionare questo.', - custom: 'Personalizzato', - customDescription: - 'Personalizza le regole dei blocchi, la lunghezza dei blocchi e le regole di preprocessamento, ecc.', - separator: 'Identificatore di segmento', - separatorPlaceholder: - 'Ad esempio, nuova linea (\\\\n) o separatore speciale (come `***`)', - maxLength: 'Lunghezza massima del blocco', - overlap: 'Sovrapposizione del blocco', - overlapTip: - 'Impostare la sovrapposizione del blocco può mantenere la rilevanza semantica tra di loro, migliorando l\'effetto di recupero. Si consiglia di impostare il 10%-25% della dimensione massima del blocco.', - overlapCheck: - 'la sovrapposizione del blocco non dovrebbe essere maggiore della lunghezza massima del blocco', - rules: 'Regole di preprocessamento del testo', - removeExtraSpaces: 'Sostituisci spazi, nuove linee e tab consecutivi', - removeUrlEmails: 'Elimina tutti gli URL e gli indirizzi email', - removeStopwords: 'Rimuovi parole vuote come `a`, `an`, `the`', - preview: 'Conferma & Anteprima', - reset: 'Reimposta', - indexMode: 'Modalità indice', - qualified: 'Alta Qualità', - recommend: 'Consigliato', - qualifiedTip: - 'Chiama l\'interfaccia di embedding di sistema predefinita per l\'elaborazione per fornire maggiore accuratezza quando gli utenti fanno query.', - warning: - 'Per favore configura prima la chiave API del fornitore del modello.', - click: 'Vai alle impostazioni', - economical: 'Economico', - economicalTip: - 'Usa motori vettoriali offline, indici di parole chiave, ecc. per ridurre l\'accuratezza senza spendere token', - QATitle: 'Segmentazione in formato Domanda & Risposta', - QATip: 'Abilitare questa opzione consumerà più token', - QALanguage: 'Segmenta usando', - estimateCost: 'Stima', - estimateSegment: 'Blocchi stimati', - segmentCount: 'blocchi', - calculating: 'Calcolo in corso...', - fileSource: 'Preprocessa documenti', - notionSource: 'Preprocessa pagine', - websiteSource: 'Preprocessa sito web', - other: 'e altri ', - fileUnit: ' file', - notionUnit: ' pagine', - webpageUnit: ' pagine', - previousStep: 'Passo precedente', - nextStep: 'Salva & Elabora', - save: 'Salva & Elabora', - cancel: 'Annulla', - sideTipTitle: 'Perché segmentare e preprocessare?', - sideTipP1: - 'Quando si elabora dati testuali, la segmentazione e la pulizia sono due passaggi di preprocessamento importanti.', - sideTipP2: - 'La segmentazione divide il testo lungo in paragrafi così i modelli possono comprendere meglio. Questo migliora la qualità e la rilevanza dei risultati del modello.', - sideTipP3: - 'La pulizia rimuove caratteri e formati non necessari, rendendo la Conoscenza più pulita e facile da analizzare.', - sideTipP4: - 'Una corretta segmentazione e pulizia migliorano le prestazioni del modello, fornendo risultati più accurati e preziosi.', - previewTitle: 'Anteprima', - previewTitleButton: 'Anteprima', - previewButton: 'Passaggio al formato Domanda & Risposta', - previewSwitchTipStart: - 'L\'anteprima del blocco corrente è in formato testo, il passaggio a un\'anteprima in formato domanda e risposta', - previewSwitchTipEnd: ' consumerà token aggiuntivi', - characters: 'caratteri', - indexSettingTip: 'Per cambiare il metodo di indicizzazione, vai alle ', - retrievalSettingTip: 'Per cambiare il metodo di indicizzazione, vai alle ', - datasetSettingLink: 'impostazioni della Conoscenza.', - separatorTip: 'Un delimitatore è il carattere utilizzato per separare il testo. \\n\\n e \\n sono delimitatori comunemente usati per separare paragrafi e righe. In combinazione con le virgole (\\n\\n,\\n), i paragrafi verranno segmentati per righe quando superano la lunghezza massima del blocco. È inoltre possibile utilizzare delimitatori speciali definiti dall\'utente (ad es. ***).', - maxLengthCheck: 'La lunghezza massima del blocco deve essere inferiore a {{limit}}', - useQALanguage: 'Blocco con il formato Q&A in', - previewChunkTip: 'Fai clic sul pulsante "Anteprima blocco" a sinistra per caricare l\'anteprima', - paragraph: 'Paragrafo', - childChunkForRetrieval: 'Child-chunk per il recupero', - general: 'Generale', - fullDoc: 'Documento completo', - previewChunkCount: '{{conteggio}} Blocchi stimati', - generalTip: 'Modalità generale di suddivisione in blocchi del testo, i blocchi recuperati e richiamati sono gli stessi.', - parentChildChunkDelimiterTip: 'Un delimitatore è il carattere utilizzato per separare il testo. \\n è consigliato per dividere i blocchi principali in piccoli blocchi figlio. È inoltre possibile utilizzare delimitatori speciali definiti dall\'utente.', - fullDocTip: 'L\'intero documento viene utilizzato come blocco principale e recuperato direttamente. Si prega di notare che per motivi di prestazioni, il testo che supera i 10000 token verrà automaticamente troncato.', - parentChild: 'Genitore-figlio', - qaSwitchHighQualityTipContent: 'Attualmente, solo il metodo dell\'indice di alta qualità supporta la suddivisione in blocchi del formato Domande e risposte. Volete passare alla modalità di alta qualità?', - parentChunkForContext: 'Parent-chunk per il contesto', - switch: 'Interruttore', - paragraphTip: 'Questa modalità suddivide il testo in paragrafi in base ai delimitatori e alla lunghezza massima del blocco, utilizzando il testo diviso come blocco principale per il recupero.', - notAvailableForQA: 'Non disponibile per l\'indice Q&A', - parentChildTip: 'Quando si utilizza la modalità genitore-figlio, il blocco figlio viene utilizzato per il recupero e il blocco padre viene utilizzato per il richiamo come contesto.', - highQualityTip: 'Una volta terminato l\'incorporamento in modalità Alta qualità, il ripristino della modalità Economica non è disponibile.', - parentChildDelimiterTip: 'Un delimitatore è il carattere utilizzato per separare il testo. \\n\\n è consigliato per dividere il documento originale in blocchi principali di grandi dimensioni. È inoltre possibile utilizzare delimitatori speciali definiti dall\'utente.', - previewChunk: 'Blocco di anteprima', - notAvailableForParentChild: 'Non disponibile per l\'indice padre-figlio', - qaSwitchHighQualityTipTitle: 'Il formato Domande e risposte richiede un metodo di indicizzazione di alta qualità', - qaTip: 'Quando si usano dati strutturati di Domande e risposte, è possibile creare documenti che abbinano domande e risposte. Questi documenti vengono indicizzati in base alla parte della domanda, consentendo al sistema di recuperare le risposte pertinenti in base alla somiglianza della query.', - }, - stepThree: { - creationTitle: '🎉 Conoscenza creata', - creationContent: - 'Abbiamo automaticamente nominato la Conoscenza, puoi modificarla in qualsiasi momento', - label: 'Nome della Conoscenza', - additionTitle: '🎉 Documento caricato', - additionP1: 'Il documento è stato caricato nella Conoscenza', - additionP2: ', puoi trovarlo nella lista dei documenti della Conoscenza.', - stop: 'Ferma l\'elaborazione', - resume: 'Riprendi l\'elaborazione', - navTo: 'Vai al documento', - sideTipTitle: 'Cosa succede dopo', - sideTipContent: - 'Dopo che il documento ha terminato l\'indicizzazione, la Conoscenza può essere integrata nell\'applicazione come contesto, puoi trovare l\'impostazione del contesto nella pagina di orchestrazione del prompt. Puoi anche crearla come un plugin di indicizzazione indipendente di ChatGPT per la pubblicazione.', - modelTitle: 'Sei sicuro di fermare l\'embedding?', - modelContent: - 'Se hai bisogno di riprendere l\'elaborazione in seguito, continuerai da dove hai interrotto.', - modelButtonConfirm: 'Conferma', - modelButtonCancel: 'Annulla', - }, - jinaReader: { - getApiKeyLinkText: 'Ottieni la tua chiave API gratuita su jina.ai', - apiKeyPlaceholder: 'Chiave API da jina.ai', - configJinaReader: 'Configura Jina Reader', - }, - otherDataSource: { - learnMore: 'Ulteriori informazioni', - title: 'Connettersi ad altre origini dati?', - description: 'Attualmente, la knowledge base di Dify ha solo fonti di dati limitate. Contribuire con una fonte di dati alla knowledge base di Dify è un modo fantastico per migliorare la flessibilità e la potenza della piattaforma per tutti gli utenti. La nostra guida ai contributi ti aiuta a iniziare. Clicca sul link sottostante per saperne di più.', - }, - watercrawl: { - getApiKeyLinkText: 'Ottieni la tua chiave API da watercrawl.dev', - apiKeyPlaceholder: 'Chiave API da watercrawl.dev', - configWatercrawl: 'Configura Watercrawl', - }, -} - -export default translation diff --git a/web/i18n/it-IT/dataset-documents.json b/web/i18n/it-IT/dataset-documents.json new file mode 100644 index 0000000000..6be633ddc4 --- /dev/null +++ b/web/i18n/it-IT/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "Documenti", + "desc": "Tutti i file della Conoscenza sono mostrati qui, e l'intera Conoscenza può essere collegata alle citazioni di Dify o indicizzata tramite il plugin di Chat.", + "addFile": "Aggiungi file", + "addPages": "Aggiungi Pagine", + "addUrl": "Aggiungi URL", + "table": { + "header": { + "fileName": "NOME FILE", + "words": "PAROLE", + "hitCount": "CONTEGGIO RECUPERI", + "uploadTime": "ORA DI CARICAMENTO", + "status": "STATO", + "action": "AZIONE", + "chunkingMode": "MODALITÀ DI SUDDIVISIONE IN BLOCCHI" + }, + "rename": "Rinomina", + "name": "Nome" + }, + "action": { + "uploadFile": "Carica nuovo file", + "settings": "Impostazioni segmenti", + "addButton": "Aggiungi blocco", + "add": "Aggiungi un blocco", + "batchAdd": "Aggiungi in batch", + "archive": "Archivia", + "unarchive": "Disarchivia", + "delete": "Elimina", + "enableWarning": "Il file archiviato non può essere abilitato", + "sync": "Sincronizza", + "resume": "Riprendi", + "pause": "Pausa" + }, + "index": { + "enable": "Abilita", + "disable": "Disabilita", + "all": "Tutti", + "enableTip": "Il file può essere indicizzato", + "disableTip": "Il file non può essere indicizzato" + }, + "status": { + "queuing": "In coda", + "indexing": "Indicizzazione", + "paused": "In pausa", + "error": "Errore", + "available": "Disponibile", + "enabled": "Abilitato", + "disabled": "Disabilitato", + "archived": "Archiviato" + }, + "empty": { + "title": "Non ci sono ancora documenti", + "upload": { + "tip": "Puoi caricare file, sincronizzare dal sito web o da app web come Notion, GitHub, ecc." + }, + "sync": { + "tip": "Dify scaricherà periodicamente i file dal tuo Notion e completerà l'elaborazione." + } + }, + "delete": { + "title": "Sei sicuro di voler eliminare?", + "content": "Se hai bisogno di riprendere l'elaborazione in seguito, continuerai da dove hai interrotto" + }, + "batchModal": { + "title": "Aggiungi blocchi in batch", + "csvUploadTitle": "Trascina e rilascia il tuo file CSV qui, o ", + "browse": "sfoglia", + "tip": "Il file CSV deve rispettare la seguente struttura:", + "question": "domanda", + "answer": "risposta", + "contentTitle": "contenuto del blocco", + "content": "contenuto", + "template": "Scarica qui il modello", + "cancel": "Annulla", + "run": "Esegui Batch", + "runError": "Esecuzione batch fallita", + "processing": "Elaborazione batch in corso", + "completed": "Importazione completata", + "error": "Errore di importazione", + "ok": "OK" + }, + "learnMore": "Ulteriori informazioni", + "sort": { + "uploadTime": "Ora di caricamento", + "hitCount": "Conteggio Recuperi" + } + }, + "metadata": { + "title": "Metadati", + "desc": "L'etichettatura dei metadati per i documenti consente all'IA di accedervi in modo tempestivo ed espone la fonte delle referenze per gli utenti.", + "dateTimeFormat": "MMMM D, YYYY hh:mm A", + "docTypeSelectTitle": "Per favore seleziona un tipo di documento", + "docTypeChangeTitle": "Cambia tipo di documento", + "docTypeSelectWarning": "Se il tipo di documento viene cambiato, i metadati attualmente compilati non saranno più conservati", + "firstMetaAction": "Andiamo", + "placeholder": { + "add": "Aggiungi ", + "select": "Seleziona " + }, + "source": { + "upload_file": "Carica File", + "notion": "Sincronizza da Notion", + "github": "Sincronizza da Github", + "online_document": "Documento online", + "local_file": "File locale", + "website_crawl": "Scansione del sito web" + }, + "type": { + "book": "Libro", + "webPage": "Pagina Web", + "paper": "Documento", + "socialMediaPost": "Post sui Social Media", + "personalDocument": "Documento Personale", + "businessDocument": "Documento Aziendale", + "IMChat": "Chat IM", + "wikipediaEntry": "Voce Wikipedia", + "notion": "Sincronizza da Notion", + "github": "Sincronizza da Github", + "technicalParameters": "Parametri Tecnici" + }, + "field": { + "processRule": { + "processDoc": "Elabora Documento", + "segmentRule": "Regola di Segmentazione", + "segmentLength": "Lunghezza dei Segmenti", + "processClean": "Pulizia del Testo" + }, + "book": { + "title": "Titolo", + "language": "Lingua", + "author": "Autore", + "publisher": "Editore", + "publicationDate": "Data di Pubblicazione", + "ISBN": "ISBN", + "category": "Categoria" + }, + "webPage": { + "title": "Titolo", + "url": "URL", + "language": "Lingua", + "authorPublisher": "Autore/Editore", + "publishDate": "Data di Pubblicazione", + "topicKeywords": "Argomenti/Parole Chiave", + "description": "Descrizione" + }, + "paper": { + "title": "Titolo", + "language": "Lingua", + "author": "Autore", + "publishDate": "Data di Pubblicazione", + "journalConferenceName": "Nome del Journal/Conferenza", + "volumeIssuePage": "Volume/Numero/Pagina", + "DOI": "DOI", + "topicsKeywords": "Argomenti/Parole Chiave", + "abstract": "Abstract" + }, + "socialMediaPost": { + "platform": "Piattaforma", + "authorUsername": "Autore/Username", + "publishDate": "Data di Pubblicazione", + "postURL": "URL del Post", + "topicsTags": "Argomenti/Tag" + }, + "personalDocument": { + "title": "Titolo", + "author": "Autore", + "creationDate": "Data di Creazione", + "lastModifiedDate": "Data di Ultima Modifica", + "documentType": "Tipo di Documento", + "tagsCategory": "Tag/Categoria" + }, + "businessDocument": { + "title": "Titolo", + "author": "Autore", + "creationDate": "Data di Creazione", + "lastModifiedDate": "Data di Ultima Modifica", + "documentType": "Tipo di Documento", + "departmentTeam": "Dipartimento/Team" + }, + "IMChat": { + "chatPlatform": "Piattaforma di Chat", + "chatPartiesGroupName": "Parti della Chat/Nome del Gruppo", + "participants": "Partecipanti", + "startDate": "Data di Inizio", + "endDate": "Data di Fine", + "topicsKeywords": "Argomenti/Parole Chiave", + "fileType": "Tipo di File" + }, + "wikipediaEntry": { + "title": "Titolo", + "language": "Lingua", + "webpageURL": "URL della Pagina Web", + "editorContributor": "Editore/Contributore", + "lastEditDate": "Data di Ultima Modifica", + "summaryIntroduction": "Sommario/Introduzione" + }, + "notion": { + "title": "Titolo", + "language": "Lingua", + "author": "Autore", + "createdTime": "Ora di Creazione", + "lastModifiedTime": "Ora di Ultima Modifica", + "url": "URL", + "tag": "Tag", + "description": "Descrizione" + }, + "github": { + "repoName": "Nome del Repo", + "repoDesc": "Descrizione del Repo", + "repoOwner": "Proprietario del Repo", + "fileName": "Nome del File", + "filePath": "Percorso del File", + "programmingLang": "Linguaggio di Programmazione", + "url": "URL", + "license": "Licenza", + "lastCommitTime": "Ora dell'Ultimo Commit", + "lastCommitAuthor": "Autore dell'Ultimo Commit" + }, + "originInfo": { + "originalFilename": "Nome file originale", + "originalFileSize": "Dimensione file originale", + "uploadDate": "Data di caricamento", + "lastUpdateDate": "Data di ultimo aggiornamento", + "source": "Fonte" + }, + "technicalParameters": { + "segmentSpecification": "Specifiche dei segmenti", + "segmentLength": "Lunghezza dei segmenti", + "avgParagraphLength": "Lunghezza media del paragrafo", + "paragraphs": "Paragrafi", + "hitCount": "Conteggio recuperi", + "embeddingTime": "Tempo di embedding", + "embeddedSpend": "Spesa di embedding" + } + }, + "languageMap": { + "zh": "Cinese", + "en": "Inglese", + "es": "Spagnolo", + "fr": "Francese", + "de": "Tedesco", + "ja": "Giapponese", + "ko": "Coreano", + "ru": "Russo", + "ar": "Arabo", + "pt": "Portoghese", + "it": "Italiano", + "nl": "Olandese", + "pl": "Polacco", + "sv": "Svedese", + "tr": "Turco", + "he": "Ebraico", + "hi": "Hindi", + "da": "Danese", + "fi": "Finlandese", + "no": "Norvegese", + "hu": "Ungherese", + "el": "Greco", + "cs": "Ceco", + "th": "Thailandese", + "id": "Indonesiano" + }, + "categoryMap": { + "book": { + "fiction": "Narrativa", + "biography": "Biografia", + "history": "Storia", + "science": "Scienza", + "technology": "Tecnologia", + "education": "Educazione", + "philosophy": "Filosofia", + "religion": "Religione", + "socialSciences": "Scienze Sociali", + "art": "Arte", + "travel": "Viaggio", + "health": "Salute", + "selfHelp": "Auto-aiuto", + "businessEconomics": "Economia Aziendale", + "cooking": "Cucina", + "childrenYoungAdults": "Bambini e Giovani Adulti", + "comicsGraphicNovels": "Fumetti e Graphic Novels", + "poetry": "Poesia", + "drama": "Teatro", + "other": "Altro" + }, + "personalDoc": { + "notes": "Note", + "blogDraft": "Bozza di Blog", + "diary": "Diario", + "researchReport": "Rapporto di Ricerca", + "bookExcerpt": "Estratto di Libro", + "schedule": "Pianificazione", + "list": "Lista", + "projectOverview": "Panoramica del Progetto", + "photoCollection": "Collezione Fotografica", + "creativeWriting": "Scrittura Creativa", + "codeSnippet": "Frammento di Codice", + "designDraft": "Bozza di Design", + "personalResume": "Curriculum Vitae", + "other": "Altro" + }, + "businessDoc": { + "meetingMinutes": "Verbale della Riunione", + "researchReport": "Rapporto di Ricerca", + "proposal": "Proposta", + "employeeHandbook": "Manuale del Dipendente", + "trainingMaterials": "Materiali di Formazione", + "requirementsDocument": "Documento di Requisiti", + "designDocument": "Documento di Design", + "productSpecification": "Specifiche del Prodotto", + "financialReport": "Rapporto Finanziario", + "marketAnalysis": "Analisi di Mercato", + "projectPlan": "Piano di Progetto", + "teamStructure": "Struttura del Team", + "policiesProcedures": "Politiche e Procedure", + "contractsAgreements": "Contratti e Accordi", + "emailCorrespondence": "Corrispondenza Email", + "other": "Altro" + } + } + }, + "embedding": { + "processing": "Elaborazione embedding...", + "paused": "Embedding in pausa", + "completed": "Embedding completato", + "error": "Errore embedding", + "docName": "Elaborazione documento", + "mode": "Regola di segmentazione", + "segmentLength": "Lunghezza dei segmenti", + "textCleaning": "Pre-definizione e pulizia del testo", + "segments": "Paragrafi", + "highQuality": "Modalità alta qualità", + "economy": "Modalità economica", + "estimate": "Consumo stimato", + "stop": "Ferma elaborazione", + "resume": "Riprendi elaborazione", + "automatic": "Automatico", + "custom": "Personalizzato", + "previewTip": "L'anteprima del paragrafo sarà disponibile dopo il completamento dell'embedding", + "childMaxTokens": "Bambino", + "pause": "Pausa", + "hierarchical": "Genitore-figlio", + "parentMaxTokens": "Genitore", + "waiting": "Attesa dell'incorporamento..." + }, + "segment": { + "paragraphs": "Paragrafi", + "keywords": "Parole Chiave", + "addKeyWord": "Aggiungi parola chiave", + "keywordError": "La lunghezza massima della parola chiave è 20", + "hitCount": "Conteggio recuperi", + "vectorHash": "Hash del vettore: ", + "questionPlaceholder": "aggiungi domanda qui", + "questionEmpty": "La domanda non può essere vuota", + "answerPlaceholder": "aggiungi risposta qui", + "answerEmpty": "La risposta non può essere vuota", + "contentPlaceholder": "aggiungi contenuto qui", + "contentEmpty": "Il contenuto non può essere vuoto", + "newTextSegment": "Nuovo Segmento di Testo", + "newQaSegment": "Nuovo Segmento di Domanda & Risposta", + "delete": "Eliminare questo blocco?", + "searchResults_zero": "RISULTATO", + "searchResults_other": "RISULTATI", + "newChunk": "Nuovo blocco", + "characters_one": "carattere", + "addChildChunk": "Aggiungi blocco figlio", + "addAnother": "Aggiungi un altro", + "parentChunks_one": "BLOCCO PADRE", + "regenerationConfirmMessage": "La rigenerazione dei blocchi figlio sovrascriverà i blocchi figlio correnti, inclusi i blocchi modificati e i blocchi appena aggiunti. La rigenerazione non può essere annullata.", + "regenerationSuccessTitle": "Rigenerazione completata", + "regeneratingTitle": "Rigenerazione di blocchi figlio", + "chunkAdded": "1 pezzo aggiunto", + "empty": "Nessun blocco trovato", + "parentChunk": "Blocco genitore", + "edited": "MODIFICATO", + "characters_other": "personaggi", + "parentChunks_other": "BLOCCHI PRINCIPALI", + "chunk": "Pezzo", + "newChildChunk": "Nuovo blocco figlio", + "editChildChunk": "Modifica blocco figlio", + "addChunk": "Aggiungi blocco", + "childChunks_one": "BLOCCO FIGLIO", + "regenerationConfirmTitle": "Si desidera rigenerare i blocchi figlio?", + "chunks_other": "BLOCCHI", + "editedAt": "A cura di", + "dateTimeFormat": "DD/MM/YYYY HH:mm", + "collapseChunks": "Comprimi blocchi", + "clearFilter": "Cancella filtro", + "chunks_one": "PEZZO", + "editParentChunk": "Modifica blocco padre", + "expandChunks": "Espandi blocchi", + "chunkDetail": "Dettaglio pezzo", + "searchResults_one": "RISULTATO", + "regeneratingMessage": "Questo potrebbe richiedere un momento, si prega di attendere...", + "childChunk": "Figlio-Chunk", + "editChunk": "Modifica blocco", + "regenerationSuccessMessage": "È possibile chiudere questa finestra.", + "childChunkAdded": "1 blocco figlio aggiunto", + "childChunks_other": "BLOCCHI FIGLIO", + "keywordEmpty": "La parola chiave non può essere vuota", + "keywordDuplicate": "La parola chiave esiste già", + "allFilesUploaded": "Tutti i file devono essere caricati prima di salvare" + } +} diff --git a/web/i18n/it-IT/dataset-documents.ts b/web/i18n/it-IT/dataset-documents.ts deleted file mode 100644 index 48a8241cde..0000000000 --- a/web/i18n/it-IT/dataset-documents.ts +++ /dev/null @@ -1,410 +0,0 @@ -const translation = { - list: { - title: 'Documenti', - desc: 'Tutti i file della Conoscenza sono mostrati qui, e l\'intera Conoscenza può essere collegata alle citazioni di Dify o indicizzata tramite il plugin di Chat.', - addFile: 'Aggiungi file', - addPages: 'Aggiungi Pagine', - addUrl: 'Aggiungi URL', - table: { - header: { - fileName: 'NOME FILE', - words: 'PAROLE', - hitCount: 'CONTEGGIO RECUPERI', - uploadTime: 'ORA DI CARICAMENTO', - status: 'STATO', - action: 'AZIONE', - chunkingMode: 'MODALITÀ DI SUDDIVISIONE IN BLOCCHI', - }, - rename: 'Rinomina', - name: 'Nome', - }, - action: { - uploadFile: 'Carica nuovo file', - settings: 'Impostazioni segmenti', - addButton: 'Aggiungi blocco', - add: 'Aggiungi un blocco', - batchAdd: 'Aggiungi in batch', - archive: 'Archivia', - unarchive: 'Disarchivia', - delete: 'Elimina', - enableWarning: 'Il file archiviato non può essere abilitato', - sync: 'Sincronizza', - resume: 'Riprendi', - pause: 'Pausa', - }, - index: { - enable: 'Abilita', - disable: 'Disabilita', - all: 'Tutti', - enableTip: 'Il file può essere indicizzato', - disableTip: 'Il file non può essere indicizzato', - }, - status: { - queuing: 'In coda', - indexing: 'Indicizzazione', - paused: 'In pausa', - error: 'Errore', - available: 'Disponibile', - enabled: 'Abilitato', - disabled: 'Disabilitato', - archived: 'Archiviato', - }, - empty: { - title: 'Non ci sono ancora documenti', - upload: { - tip: 'Puoi caricare file, sincronizzare dal sito web o da app web come Notion, GitHub, ecc.', - }, - sync: { - tip: 'Dify scaricherà periodicamente i file dal tuo Notion e completerà l\'elaborazione.', - }, - }, - delete: { - title: 'Sei sicuro di voler eliminare?', - content: - 'Se hai bisogno di riprendere l\'elaborazione in seguito, continuerai da dove hai interrotto', - }, - batchModal: { - title: 'Aggiungi blocchi in batch', - csvUploadTitle: 'Trascina e rilascia il tuo file CSV qui, o ', - browse: 'sfoglia', - tip: 'Il file CSV deve rispettare la seguente struttura:', - question: 'domanda', - answer: 'risposta', - contentTitle: 'contenuto del blocco', - content: 'contenuto', - template: 'Scarica qui il modello', - cancel: 'Annulla', - run: 'Esegui Batch', - runError: 'Esecuzione batch fallita', - processing: 'Elaborazione batch in corso', - completed: 'Importazione completata', - error: 'Errore di importazione', - ok: 'OK', - }, - learnMore: 'Ulteriori informazioni', - sort: { - uploadTime: 'Ora di caricamento', - hitCount: 'Conteggio Recuperi', - }, - }, - metadata: { - title: 'Metadati', - desc: 'L\'etichettatura dei metadati per i documenti consente all\'IA di accedervi in modo tempestivo ed espone la fonte delle referenze per gli utenti.', - dateTimeFormat: 'MMMM D, YYYY hh:mm A', - docTypeSelectTitle: 'Per favore seleziona un tipo di documento', - docTypeChangeTitle: 'Cambia tipo di documento', - docTypeSelectWarning: - 'Se il tipo di documento viene cambiato, i metadati attualmente compilati non saranno più conservati', - firstMetaAction: 'Andiamo', - placeholder: { - add: 'Aggiungi ', - select: 'Seleziona ', - }, - source: { - upload_file: 'Carica File', - notion: 'Sincronizza da Notion', - github: 'Sincronizza da Github', - online_document: 'Documento online', - local_file: 'File locale', - website_crawl: 'Scansione del sito web', - }, - type: { - book: 'Libro', - webPage: 'Pagina Web', - paper: 'Documento', - socialMediaPost: 'Post sui Social Media', - personalDocument: 'Documento Personale', - businessDocument: 'Documento Aziendale', - IMChat: 'Chat IM', - wikipediaEntry: 'Voce Wikipedia', - notion: 'Sincronizza da Notion', - github: 'Sincronizza da Github', - technicalParameters: 'Parametri Tecnici', - }, - field: { - processRule: { - processDoc: 'Elabora Documento', - segmentRule: 'Regola di Segmentazione', - segmentLength: 'Lunghezza dei Segmenti', - processClean: 'Pulizia del Testo', - }, - book: { - title: 'Titolo', - language: 'Lingua', - author: 'Autore', - publisher: 'Editore', - publicationDate: 'Data di Pubblicazione', - ISBN: 'ISBN', - category: 'Categoria', - }, - webPage: { - title: 'Titolo', - url: 'URL', - language: 'Lingua', - authorPublisher: 'Autore/Editore', - publishDate: 'Data di Pubblicazione', - topicKeywords: 'Argomenti/Parole Chiave', - description: 'Descrizione', - }, - paper: { - title: 'Titolo', - language: 'Lingua', - author: 'Autore', - publishDate: 'Data di Pubblicazione', - journalConferenceName: 'Nome del Journal/Conferenza', - volumeIssuePage: 'Volume/Numero/Pagina', - DOI: 'DOI', - topicsKeywords: 'Argomenti/Parole Chiave', - abstract: 'Abstract', - }, - socialMediaPost: { - platform: 'Piattaforma', - authorUsername: 'Autore/Username', - publishDate: 'Data di Pubblicazione', - postURL: 'URL del Post', - topicsTags: 'Argomenti/Tag', - }, - personalDocument: { - title: 'Titolo', - author: 'Autore', - creationDate: 'Data di Creazione', - lastModifiedDate: 'Data di Ultima Modifica', - documentType: 'Tipo di Documento', - tagsCategory: 'Tag/Categoria', - }, - businessDocument: { - title: 'Titolo', - author: 'Autore', - creationDate: 'Data di Creazione', - lastModifiedDate: 'Data di Ultima Modifica', - documentType: 'Tipo di Documento', - departmentTeam: 'Dipartimento/Team', - }, - IMChat: { - chatPlatform: 'Piattaforma di Chat', - chatPartiesGroupName: 'Parti della Chat/Nome del Gruppo', - participants: 'Partecipanti', - startDate: 'Data di Inizio', - endDate: 'Data di Fine', - topicsKeywords: 'Argomenti/Parole Chiave', - fileType: 'Tipo di File', - }, - wikipediaEntry: { - title: 'Titolo', - language: 'Lingua', - webpageURL: 'URL della Pagina Web', - editorContributor: 'Editore/Contributore', - lastEditDate: 'Data di Ultima Modifica', - summaryIntroduction: 'Sommario/Introduzione', - }, - notion: { - title: 'Titolo', - language: 'Lingua', - author: 'Autore', - createdTime: 'Ora di Creazione', - lastModifiedTime: 'Ora di Ultima Modifica', - url: 'URL', - tag: 'Tag', - description: 'Descrizione', - }, - github: { - repoName: 'Nome del Repo', - repoDesc: 'Descrizione del Repo', - repoOwner: 'Proprietario del Repo', - fileName: 'Nome del File', - filePath: 'Percorso del File', - programmingLang: 'Linguaggio di Programmazione', - url: 'URL', - license: 'Licenza', - lastCommitTime: 'Ora dell\'Ultimo Commit', - lastCommitAuthor: 'Autore dell\'Ultimo Commit', - }, - originInfo: { - originalFilename: 'Nome file originale', - originalFileSize: 'Dimensione file originale', - uploadDate: 'Data di caricamento', - lastUpdateDate: 'Data di ultimo aggiornamento', - source: 'Fonte', - }, - technicalParameters: { - segmentSpecification: 'Specifiche dei segmenti', - segmentLength: 'Lunghezza dei segmenti', - avgParagraphLength: 'Lunghezza media del paragrafo', - paragraphs: 'Paragrafi', - hitCount: 'Conteggio recuperi', - embeddingTime: 'Tempo di embedding', - embeddedSpend: 'Spesa di embedding', - }, - }, - languageMap: { - zh: 'Cinese', - en: 'Inglese', - es: 'Spagnolo', - fr: 'Francese', - de: 'Tedesco', - ja: 'Giapponese', - ko: 'Coreano', - ru: 'Russo', - ar: 'Arabo', - pt: 'Portoghese', - it: 'Italiano', - nl: 'Olandese', - pl: 'Polacco', - sv: 'Svedese', - tr: 'Turco', - he: 'Ebraico', - hi: 'Hindi', - da: 'Danese', - fi: 'Finlandese', - no: 'Norvegese', - hu: 'Ungherese', - el: 'Greco', - cs: 'Ceco', - th: 'Thailandese', - id: 'Indonesiano', - }, - categoryMap: { - book: { - fiction: 'Narrativa', - biography: 'Biografia', - history: 'Storia', - science: 'Scienza', - technology: 'Tecnologia', - education: 'Educazione', - philosophy: 'Filosofia', - religion: 'Religione', - socialSciences: 'Scienze Sociali', - art: 'Arte', - travel: 'Viaggio', - health: 'Salute', - selfHelp: 'Auto-aiuto', - businessEconomics: 'Economia Aziendale', - cooking: 'Cucina', - childrenYoungAdults: 'Bambini e Giovani Adulti', - comicsGraphicNovels: 'Fumetti e Graphic Novels', - poetry: 'Poesia', - drama: 'Teatro', - other: 'Altro', - }, - personalDoc: { - notes: 'Note', - blogDraft: 'Bozza di Blog', - diary: 'Diario', - researchReport: 'Rapporto di Ricerca', - bookExcerpt: 'Estratto di Libro', - schedule: 'Pianificazione', - list: 'Lista', - projectOverview: 'Panoramica del Progetto', - photoCollection: 'Collezione Fotografica', - creativeWriting: 'Scrittura Creativa', - codeSnippet: 'Frammento di Codice', - designDraft: 'Bozza di Design', - personalResume: 'Curriculum Vitae', - other: 'Altro', - }, - businessDoc: { - meetingMinutes: 'Verbale della Riunione', - researchReport: 'Rapporto di Ricerca', - proposal: 'Proposta', - employeeHandbook: 'Manuale del Dipendente', - trainingMaterials: 'Materiali di Formazione', - requirementsDocument: 'Documento di Requisiti', - designDocument: 'Documento di Design', - productSpecification: 'Specifiche del Prodotto', - financialReport: 'Rapporto Finanziario', - marketAnalysis: 'Analisi di Mercato', - projectPlan: 'Piano di Progetto', - teamStructure: 'Struttura del Team', - policiesProcedures: 'Politiche e Procedure', - contractsAgreements: 'Contratti e Accordi', - emailCorrespondence: 'Corrispondenza Email', - other: 'Altro', - }, - }, - }, - embedding: { - processing: 'Elaborazione embedding...', - paused: 'Embedding in pausa', - completed: 'Embedding completato', - error: 'Errore embedding', - docName: 'Elaborazione documento', - mode: 'Regola di segmentazione', - segmentLength: 'Lunghezza dei segmenti', - textCleaning: 'Pre-definizione e pulizia del testo', - segments: 'Paragrafi', - highQuality: 'Modalità alta qualità', - economy: 'Modalità economica', - estimate: 'Consumo stimato', - stop: 'Ferma elaborazione', - resume: 'Riprendi elaborazione', - automatic: 'Automatico', - custom: 'Personalizzato', - previewTip: - 'L\'anteprima del paragrafo sarà disponibile dopo il completamento dell\'embedding', - childMaxTokens: 'Bambino', - pause: 'Pausa', - hierarchical: 'Genitore-figlio', - parentMaxTokens: 'Genitore', - waiting: 'Attesa dell\'incorporamento...', - }, - segment: { - paragraphs: 'Paragrafi', - keywords: 'Parole Chiave', - addKeyWord: 'Aggiungi parola chiave', - keywordError: 'La lunghezza massima della parola chiave è 20', - hitCount: 'Conteggio recuperi', - vectorHash: 'Hash del vettore: ', - questionPlaceholder: 'aggiungi domanda qui', - questionEmpty: 'La domanda non può essere vuota', - answerPlaceholder: 'aggiungi risposta qui', - answerEmpty: 'La risposta non può essere vuota', - contentPlaceholder: 'aggiungi contenuto qui', - contentEmpty: 'Il contenuto non può essere vuoto', - newTextSegment: 'Nuovo Segmento di Testo', - newQaSegment: 'Nuovo Segmento di Domanda & Risposta', - delete: 'Eliminare questo blocco?', - searchResults_zero: 'RISULTATO', - searchResults_other: 'RISULTATI', - newChunk: 'Nuovo blocco', - characters_one: 'carattere', - addChildChunk: 'Aggiungi blocco figlio', - addAnother: 'Aggiungi un altro', - parentChunks_one: 'BLOCCO PADRE', - regenerationConfirmMessage: 'La rigenerazione dei blocchi figlio sovrascriverà i blocchi figlio correnti, inclusi i blocchi modificati e i blocchi appena aggiunti. La rigenerazione non può essere annullata.', - regenerationSuccessTitle: 'Rigenerazione completata', - regeneratingTitle: 'Rigenerazione di blocchi figlio', - chunkAdded: '1 pezzo aggiunto', - empty: 'Nessun blocco trovato', - parentChunk: 'Blocco genitore', - edited: 'MODIFICATO', - characters_other: 'personaggi', - parentChunks_other: 'BLOCCHI PRINCIPALI', - chunk: 'Pezzo', - newChildChunk: 'Nuovo blocco figlio', - editChildChunk: 'Modifica blocco figlio', - addChunk: 'Aggiungi blocco', - childChunks_one: 'BLOCCO FIGLIO', - regenerationConfirmTitle: 'Si desidera rigenerare i blocchi figlio?', - chunks_other: 'BLOCCHI', - editedAt: 'A cura di', - dateTimeFormat: 'DD/MM/YYYY HH:mm', - collapseChunks: 'Comprimi blocchi', - clearFilter: 'Cancella filtro', - chunks_one: 'PEZZO', - editParentChunk: 'Modifica blocco padre', - expandChunks: 'Espandi blocchi', - chunkDetail: 'Dettaglio pezzo', - searchResults_one: 'RISULTATO', - regeneratingMessage: 'Questo potrebbe richiedere un momento, si prega di attendere...', - childChunk: 'Figlio-Chunk', - editChunk: 'Modifica blocco', - regenerationSuccessMessage: 'È possibile chiudere questa finestra.', - childChunkAdded: '1 blocco figlio aggiunto', - childChunks_other: 'BLOCCHI FIGLIO', - keywordEmpty: 'La parola chiave non può essere vuota', - keywordDuplicate: 'La parola chiave esiste già', - allFilesUploaded: 'Tutti i file devono essere caricati prima di salvare', - }, -} - -export default translation diff --git a/web/i18n/it-IT/dataset-hit-testing.json b/web/i18n/it-IT/dataset-hit-testing.json new file mode 100644 index 0000000000..47ee3018ae --- /dev/null +++ b/web/i18n/it-IT/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "Test di Recupero", + "desc": "Testa l'effetto di recupero della Conoscenza basato sul testo di query fornito.", + "dateTimeFormat": "MM/DD/YYYY hh:mm A", + "table": { + "header": { + "source": "Fonte", + "time": "Ora", + "queryContent": "Contenuto della query" + } + }, + "input": { + "title": "Testo di origine", + "placeholder": "Per favore inserisci un testo, si consiglia una frase dichiarativa breve.", + "countWarning": "Fino a 200 caratteri.", + "indexWarning": "Solo Conoscenza di alta qualità.", + "testing": "Test in corso" + }, + "hit": { + "title": "PARAGRAFI RECUPERATI", + "emptyTip": "I risultati del Test di Recupero verranno mostrati qui" + }, + "noRecentTip": "Nessun risultato di query recente qui", + "viewChart": "Visualizza GRAFICO VETTORIALE", + "settingTitle": "Impostazione di recupero", + "viewDetail": "vedi dettagli", + "chunkDetail": "Dettaglio pezzo", + "hitChunks": "Premi {{num}} blocchi figlio", + "open": "Aperto", + "keyword": "Parole chiavi", + "records": "Archivio", + "imageUploader": { + "tip": "Carica o trascina le immagini (Max {{batchCount}}, {{size}}MB ciascuna)", + "tooltip": "Carica immagini (Max {{batchCount}}, {{size}}MB ciascuna)", + "dropZoneTip": "Trascina il file qui per caricarlo", + "singleChunkAttachmentLimitTooltip": "Il numero di allegati a singolo blocco non può superare {{limit}}" + } +} diff --git a/web/i18n/it-IT/dataset-hit-testing.ts b/web/i18n/it-IT/dataset-hit-testing.ts deleted file mode 100644 index 9a8f70cc32..0000000000 --- a/web/i18n/it-IT/dataset-hit-testing.ts +++ /dev/null @@ -1,41 +0,0 @@ -const translation = { - title: 'Test di Recupero', - desc: 'Testa l\'effetto di recupero della Conoscenza basato sul testo di query fornito.', - dateTimeFormat: 'MM/DD/YYYY hh:mm A', - table: { - header: { - source: 'Fonte', - time: 'Ora', - queryContent: 'Contenuto della query', - }, - }, - input: { - title: 'Testo di origine', - placeholder: - 'Per favore inserisci un testo, si consiglia una frase dichiarativa breve.', - countWarning: 'Fino a 200 caratteri.', - indexWarning: 'Solo Conoscenza di alta qualità.', - testing: 'Test in corso', - }, - hit: { - title: 'PARAGRAFI RECUPERATI', - emptyTip: 'I risultati del Test di Recupero verranno mostrati qui', - }, - noRecentTip: 'Nessun risultato di query recente qui', - viewChart: 'Visualizza GRAFICO VETTORIALE', - settingTitle: 'Impostazione di recupero', - viewDetail: 'vedi dettagli', - chunkDetail: 'Dettaglio pezzo', - hitChunks: 'Premi {{num}} blocchi figlio', - open: 'Aperto', - keyword: 'Parole chiavi', - records: 'Archivio', - imageUploader: { - tip: 'Carica o trascina le immagini (Max {{batchCount}}, {{size}}MB ciascuna)', - tooltip: 'Carica immagini (Max {{batchCount}}, {{size}}MB ciascuna)', - dropZoneTip: 'Trascina il file qui per caricarlo', - singleChunkAttachmentLimitTooltip: 'Il numero di allegati a singolo blocco non può superare {{limit}}', - }, -} - -export default translation diff --git a/web/i18n/it-IT/dataset-pipeline.json b/web/i18n/it-IT/dataset-pipeline.json new file mode 100644 index 0000000000..d51fd9ee52 --- /dev/null +++ b/web/i18n/it-IT/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "createFromScratch": { + "title": "Pipeline di conoscenza vuota", + "description": "Crea una pipeline personalizzata da zero con il pieno controllo sull'elaborazione e sulla struttura dei dati." + }, + "successTip": "Creazione di una Knowledge Base", + "importDSL": "Importazione da un file DSL", + "errorTip": "Impossibile creare una Knowledge Base", + "caution": "Cautela", + "backToKnowledge": "Torna alla Conoscenza", + "createKnowledge": "Creare conoscenza" + }, + "templates": { + "customized": "Personalizzato" + }, + "operations": { + "details": "Dettagli", + "choose": "Scegliere", + "convert": "Convertire", + "editInfo": "Modifica informazioni", + "dataSource": "Origine dati", + "backToDataSource": "Torna all'origine dati", + "preview": "Anteprima", + "saveAndProcess": "Salva ed elabora", + "process": "Processo", + "useTemplate": "Usa questa pipeline di conoscenza", + "exportPipeline": "Pipeline di esportazione" + }, + "deletePipeline": { + "content": "L'eliminazione del modello di pipeline è irreversibile.", + "title": "Sei sicuro di eliminare questo modello di pipeline?" + }, + "publishPipeline": { + "success": { + "message": "Pipeline di conoscenza pubblicata", + "tip": "Vai a Documenti per aggiungere o gestire i documenti." + }, + "error": { + "message": "Impossibile pubblicare la pipeline delle conoscenze" + } + }, + "publishTemplate": { + "success": { + "learnMore": "Ulteriori informazioni", + "message": "Modello di pipeline pubblicato", + "tip": "Puoi utilizzare questo modello nella pagina di creazione." + }, + "error": { + "message": "Impossibile pubblicare il modello di pipeline" + } + }, + "exportDSL": { + "errorTip": "Impossibile esportare il DSL della pipeline", + "successTip": "Esporta DSL pipeline con successo" + }, + "details": { + "structure": "Struttura", + "structureTooltip": "La struttura a blocchi determina il modo in cui i documenti vengono suddivisi e indicizzati, offrendo le modalità Generale, Padre-Figlio e Domande e risposte, ed è univoca per ogni knowledge base.", + "createdBy": "Da {{author}}" + }, + "testRun": { + "steps": { + "documentProcessing": "Elaborazione dei documenti", + "dataSource": "Origine dati" + }, + "dataSource": { + "localFiles": "File locali" + }, + "notion": { + "docTitle": "Documenti di Notion", + "title": "Scegli le pagine Notion" + }, + "title": "Esecuzione dei test", + "tooltip": "In modalità di esecuzione dei test, è possibile importare un solo documento alla volta per semplificare il debug e l'osservazione." + }, + "inputFieldPanel": { + "uniqueInputs": { + "title": "Input univoci per ogni ingresso", + "tooltip": "Gli input univoci sono accessibili solo all'origine dati selezionata e ai relativi nodi a valle. Gli utenti non dovranno compilarlo quando scelgono altre fonti di dati. Nel primo passaggio (Origine dati) verranno visualizzati solo i campi di input a cui fanno riferimento le variabili dell'origine dati. Tutti gli altri campi verranno visualizzati nel secondo passaggio (Elabora documenti)." + }, + "globalInputs": { + "title": "Input globali per tutti gli ingressi", + "tooltip": "Gli input globali sono condivisi tra tutti i nodi. Gli utenti dovranno compilarli quando selezionano qualsiasi origine dati. Ad esempio, campi come il delimitatore e la lunghezza massima del blocco possono essere applicati in modo uniforme a più origini dati. Nel primo passaggio (Origine dati) vengono visualizzati solo i campi di input a cui fanno riferimento le variabili Origine dati. Tutti gli altri campi vengono visualizzati nel secondo passaggio (Elabora documenti)." + }, + "preview": { + "stepOneTitle": "Origine dati", + "stepTwoTitle": "Elabora documenti" + }, + "error": { + "variableDuplicate": "Il nome della variabile esiste già. Scegli un nome diverso." + }, + "editInputField": "Modifica campo di input", + "title": "Campi di input dell'utente", + "addInputField": "Aggiungi campo di input", + "description": "I campi di input dell'utente vengono utilizzati per definire e raccogliere le variabili necessarie durante il processo di esecuzione della pipeline. Gli utenti possono personalizzare il tipo di campo e configurare in modo flessibile il valore di input per soddisfare le esigenze di diverse fonti di dati o fasi di elaborazione dei documenti." + }, + "addDocuments": { + "steps": { + "processDocuments": "Elabora documenti", + "chooseDatasource": "Scegliere un'origine dati", + "processingDocuments": "Elaborazione dei documenti" + }, + "stepOne": { + "preview": "Anteprima" + }, + "stepTwo": { + "chunkSettings": "Impostazioni blocco", + "previewChunks": "Anteprima dei blocchi" + }, + "stepThree": { + "learnMore": "Ulteriori informazioni" + }, + "characters": "personaggi", + "title": "Aggiungi documenti", + "backToDataSource": "Origine dati", + "selectOnlineDocumentTip": "Elabora fino a {{count}} pagine", + "selectOnlineDriveTip": "Elabora fino a {{count}} file, massimo {{fileSize}} MB ciascuno" + }, + "documentSettings": { + "title": "Impostazioni documento" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} pagine" + }, + "onlineDrive": { + "breadcrumbs": { + "allFiles": "Tutti i file", + "searchPlaceholder": "Cerca file...", + "allBuckets": "Tutti i bucket di archiviazione cloud", + "searchResult": "Trova {{searchResultsLength}} elementi nella cartella \"{{folderName}}\"" + }, + "emptyFolder": "Questa cartella è vuota", + "resetKeywords": "Reimposta le parole chiave", + "emptySearchResult": "Nessun oggetto trovato", + "notSupportedFileType": "Questo tipo di file non è supportato", + "notConnected": "{{name}} non è connesso", + "notConnectedTip": "Per sincronizzarsi con {{name}}, è necessario prima stabilire la connessione a {{name}}." + }, + "conversion": { + "confirm": { + "content": "Questa azione è permanente. Non sarà possibile ripristinare il metodo precedente. Si prega di confermare per convertire.", + "title": "Conferma" + }, + "successMessage": "Conversione del set di dati in pipeline", + "warning": "Questa azione non può essere annullata.", + "title": "Conversione in pipeline di conoscenza", + "descriptionChunk1": "Ora puoi convertire la tua knowledge base esistente per utilizzare la Knowledge Pipeline per l'elaborazione dei documenti", + "errorMessage": "Impossibile convertire il set di dati in una pipeline", + "descriptionChunk2": "— un approccio più aperto e flessibile con l'accesso ai plugin dal nostro marketplace. In questo modo il nuovo metodo di elaborazione verrà applicato a tutti i documenti futuri." + }, + "knowledgePermissions": "Autorizzazioni", + "knowledgeDescription": "Descrizione della conoscenza", + "inputField": "Campo di input", + "editPipelineInfo": "Modificare le informazioni sulla pipeline", + "knowledgeNameAndIcon": "Nome e icona della Knowledge Base", + "pipelineNameAndIcon": "Nome e icona della pipeline", + "knowledgeNameAndIconPlaceholder": "Inserisci il nome della Knowledge Base", + "knowledgeDescriptionPlaceholder": "Descrivi cosa c'è in questa Knowledge Base. Una descrizione dettagliata consente all'intelligenza artificiale di accedere al contenuto del set di dati in modo più accurato. Se vuoto, Dify utilizzerà la strategia di hit predefinita. (Facoltativo)", + "configurationTip": "Configura {{pluginName}}" +} diff --git a/web/i18n/it-IT/dataset-pipeline.ts b/web/i18n/it-IT/dataset-pipeline.ts deleted file mode 100644 index ec9fdf4743..0000000000 --- a/web/i18n/it-IT/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - createFromScratch: { - title: 'Pipeline di conoscenza vuota', - description: 'Crea una pipeline personalizzata da zero con il pieno controllo sull\'elaborazione e sulla struttura dei dati.', - }, - successTip: 'Creazione di una Knowledge Base', - importDSL: 'Importazione da un file DSL', - errorTip: 'Impossibile creare una Knowledge Base', - caution: 'Cautela', - backToKnowledge: 'Torna alla Conoscenza', - createKnowledge: 'Creare conoscenza', - }, - templates: { - customized: 'Personalizzato', - }, - operations: { - details: 'Dettagli', - choose: 'Scegliere', - convert: 'Convertire', - editInfo: 'Modifica informazioni', - dataSource: 'Origine dati', - backToDataSource: 'Torna all\'origine dati', - preview: 'Anteprima', - saveAndProcess: 'Salva ed elabora', - process: 'Processo', - useTemplate: 'Usa questa pipeline di conoscenza', - exportPipeline: 'Pipeline di esportazione', - }, - deletePipeline: { - content: 'L\'eliminazione del modello di pipeline è irreversibile.', - title: 'Sei sicuro di eliminare questo modello di pipeline?', - }, - publishPipeline: { - success: { - message: 'Pipeline di conoscenza pubblicata', - tip: 'Vai a Documenti per aggiungere o gestire i documenti.', - }, - error: { - message: 'Impossibile pubblicare la pipeline delle conoscenze', - }, - }, - publishTemplate: { - success: { - learnMore: 'Ulteriori informazioni', - message: 'Modello di pipeline pubblicato', - tip: 'Puoi utilizzare questo modello nella pagina di creazione.', - }, - error: { - message: 'Impossibile pubblicare il modello di pipeline', - }, - }, - exportDSL: { - errorTip: 'Impossibile esportare il DSL della pipeline', - successTip: 'Esporta DSL pipeline con successo', - }, - details: { - structure: 'Struttura', - structureTooltip: 'La struttura a blocchi determina il modo in cui i documenti vengono suddivisi e indicizzati, offrendo le modalità Generale, Padre-Figlio e Domande e risposte, ed è univoca per ogni knowledge base.', - createdBy: 'Da {{author}}', - }, - testRun: { - steps: { - documentProcessing: 'Elaborazione dei documenti', - dataSource: 'Origine dati', - }, - dataSource: { - localFiles: 'File locali', - }, - notion: { - docTitle: 'Documenti di Notion', - title: 'Scegli le pagine Notion', - }, - title: 'Esecuzione dei test', - tooltip: 'In modalità di esecuzione dei test, è possibile importare un solo documento alla volta per semplificare il debug e l\'osservazione.', - }, - inputFieldPanel: { - uniqueInputs: { - title: 'Input univoci per ogni ingresso', - tooltip: 'Gli input univoci sono accessibili solo all\'origine dati selezionata e ai relativi nodi a valle. Gli utenti non dovranno compilarlo quando scelgono altre fonti di dati. Nel primo passaggio (Origine dati) verranno visualizzati solo i campi di input a cui fanno riferimento le variabili dell\'origine dati. Tutti gli altri campi verranno visualizzati nel secondo passaggio (Elabora documenti).', - }, - globalInputs: { - title: 'Input globali per tutti gli ingressi', - tooltip: 'Gli input globali sono condivisi tra tutti i nodi. Gli utenti dovranno compilarli quando selezionano qualsiasi origine dati. Ad esempio, campi come il delimitatore e la lunghezza massima del blocco possono essere applicati in modo uniforme a più origini dati. Nel primo passaggio (Origine dati) vengono visualizzati solo i campi di input a cui fanno riferimento le variabili Origine dati. Tutti gli altri campi vengono visualizzati nel secondo passaggio (Elabora documenti).', - }, - preview: { - stepOneTitle: 'Origine dati', - stepTwoTitle: 'Elabora documenti', - }, - error: { - variableDuplicate: 'Il nome della variabile esiste già. Scegli un nome diverso.', - }, - editInputField: 'Modifica campo di input', - title: 'Campi di input dell\'utente', - addInputField: 'Aggiungi campo di input', - description: 'I campi di input dell\'utente vengono utilizzati per definire e raccogliere le variabili necessarie durante il processo di esecuzione della pipeline. Gli utenti possono personalizzare il tipo di campo e configurare in modo flessibile il valore di input per soddisfare le esigenze di diverse fonti di dati o fasi di elaborazione dei documenti.', - }, - addDocuments: { - steps: { - processDocuments: 'Elabora documenti', - chooseDatasource: 'Scegliere un\'origine dati', - processingDocuments: 'Elaborazione dei documenti', - }, - stepOne: { - preview: 'Anteprima', - }, - stepTwo: { - chunkSettings: 'Impostazioni blocco', - previewChunks: 'Anteprima dei blocchi', - }, - stepThree: { - learnMore: 'Ulteriori informazioni', - }, - characters: 'personaggi', - title: 'Aggiungi documenti', - backToDataSource: 'Origine dati', - selectOnlineDocumentTip: 'Elabora fino a {{count}} pagine', - selectOnlineDriveTip: 'Elabora fino a {{count}} file, massimo {{fileSize}} MB ciascuno', - }, - documentSettings: { - title: 'Impostazioni documento', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} pagine', - }, - onlineDrive: { - breadcrumbs: { - allFiles: 'Tutti i file', - searchPlaceholder: 'Cerca file...', - allBuckets: 'Tutti i bucket di archiviazione cloud', - searchResult: 'Trova {{searchResultsLength}} elementi nella cartella "{{folderName}}"', - }, - emptyFolder: 'Questa cartella è vuota', - resetKeywords: 'Reimposta le parole chiave', - emptySearchResult: 'Nessun oggetto trovato', - notSupportedFileType: 'Questo tipo di file non è supportato', - notConnected: '{{name}} non è connesso', - notConnectedTip: 'Per sincronizzarsi con {{name}}, è necessario prima stabilire la connessione a {{name}}.', - }, - conversion: { - confirm: { - content: 'Questa azione è permanente. Non sarà possibile ripristinare il metodo precedente. Si prega di confermare per convertire.', - title: 'Conferma', - }, - successMessage: 'Conversione del set di dati in pipeline', - warning: 'Questa azione non può essere annullata.', - title: 'Conversione in pipeline di conoscenza', - descriptionChunk1: 'Ora puoi convertire la tua knowledge base esistente per utilizzare la Knowledge Pipeline per l\'elaborazione dei documenti', - errorMessage: 'Impossibile convertire il set di dati in una pipeline', - descriptionChunk2: '— un approccio più aperto e flessibile con l\'accesso ai plugin dal nostro marketplace. In questo modo il nuovo metodo di elaborazione verrà applicato a tutti i documenti futuri.', - }, - knowledgePermissions: 'Autorizzazioni', - knowledgeDescription: 'Descrizione della conoscenza', - inputField: 'Campo di input', - editPipelineInfo: 'Modificare le informazioni sulla pipeline', - knowledgeNameAndIcon: 'Nome e icona della Knowledge Base', - pipelineNameAndIcon: 'Nome e icona della pipeline', - knowledgeNameAndIconPlaceholder: 'Inserisci il nome della Knowledge Base', - knowledgeDescriptionPlaceholder: 'Descrivi cosa c\'è in questa Knowledge Base. Una descrizione dettagliata consente all\'intelligenza artificiale di accedere al contenuto del set di dati in modo più accurato. Se vuoto, Dify utilizzerà la strategia di hit predefinita. (Facoltativo)', - configurationTip: 'Configura {{pluginName}}', -} - -export default translation diff --git a/web/i18n/it-IT/dataset-settings.json b/web/i18n/it-IT/dataset-settings.json new file mode 100644 index 0000000000..e99250a3d1 --- /dev/null +++ b/web/i18n/it-IT/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "Impostazioni della Conoscenza", + "desc": "Qui puoi modificare le proprietà e i metodi di funzionamento della Conoscenza.", + "form": { + "name": "Nome della Conoscenza", + "namePlaceholder": "Per favore inserisci il nome della Conoscenza", + "nameError": "Il nome non può essere vuoto", + "desc": "Descrizione della Conoscenza", + "descInfo": "Per favore scrivi una descrizione chiara per delineare il contenuto della Conoscenza. Questa descrizione sarà utilizzata come base per la corrispondenza quando si seleziona tra più Conoscenze per l'inferenza.", + "descPlaceholder": "Descrivi cosa c'è in questa Conoscenza. Una descrizione dettagliata permette all'IA di accedere al contenuto della Conoscenza in modo tempestivo. Se vuota, Dify utilizzerà la strategia di recupero predefinita.", + "descWrite": "Scopri come scrivere una buona descrizione della Conoscenza.", + "permissions": "Permessi", + "permissionsOnlyMe": "Solo io", + "permissionsAllMember": "Tutti i membri del team", + "permissionsInvitedMembers": "Membri del team parziali", + "me": "(Tu)", + "indexMethod": "Metodo di Indicizzazione", + "indexMethodHighQuality": "Alta Qualità", + "indexMethodHighQualityTip": "Chiama il modello di Embedding per l'elaborazione per fornire maggiore accuratezza quando gli utenti fanno query.", + "indexMethodEconomy": "Economico", + "indexMethodEconomyTip": "Usa motori vettoriali offline, indici di parole chiave, ecc. per ridurre l'accuratezza senza spendere token", + "embeddingModel": "Modello di Embedding", + "embeddingModelTip": "Per cambiare il modello di embedding, vai alle ", + "embeddingModelTipLink": "Impostazioni", + "retrievalSetting": { + "title": "Impostazione di Recupero", + "learnMore": "Scopri di più", + "description": " sul metodo di recupero.", + "longDescription": " sul metodo di recupero, puoi cambiare questo in qualsiasi momento nelle impostazioni della Conoscenza.", + "method": "Metodo di recupero", + "multiModalTip": "Quando il modello di embedding supporta il multi-modale, seleziona un modello di riordinamento multi-modale per ottenere migliori prestazioni." + }, + "save": "Salva", + "retrievalSettings": "Impostazioni di recupero", + "externalKnowledgeID": "ID conoscenza esterna", + "externalKnowledgeAPI": "API di conoscenza esterna", + "helpText": "Scopri come scrivere una buona descrizione del set di dati.", + "upgradeHighQualityTip": "Una volta effettuato l'aggiornamento alla modalità Alta qualità, il ripristino della modalità Risparmio non è disponibile", + "indexMethodChangeToEconomyDisabledTip": "Non disponibile per il downgrade da HQ a ECO", + "searchModel": "Cerca modello", + "chunkStructure": { + "learnMore": "Ulteriori informazioni", + "title": "Struttura a blocchi", + "description": "sulla struttura a blocchi." + }, + "numberOfKeywords": "Numero di parole chiave", + "nameAndIcon": "Nome e icona", + "onSearchResults": "Nessun membro corrisponde alla query di ricerca.\nRiprova la ricerca." + } +} diff --git a/web/i18n/it-IT/dataset-settings.ts b/web/i18n/it-IT/dataset-settings.ts deleted file mode 100644 index 598c99129a..0000000000 --- a/web/i18n/it-IT/dataset-settings.ts +++ /dev/null @@ -1,57 +0,0 @@ -const translation = { - title: 'Impostazioni della Conoscenza', - desc: 'Qui puoi modificare le proprietà e i metodi di funzionamento della Conoscenza.', - form: { - name: 'Nome della Conoscenza', - namePlaceholder: 'Per favore inserisci il nome della Conoscenza', - nameError: 'Il nome non può essere vuoto', - desc: 'Descrizione della Conoscenza', - descInfo: - 'Per favore scrivi una descrizione chiara per delineare il contenuto della Conoscenza. Questa descrizione sarà utilizzata come base per la corrispondenza quando si seleziona tra più Conoscenze per l\'inferenza.', - descPlaceholder: - 'Descrivi cosa c\'è in questa Conoscenza. Una descrizione dettagliata permette all\'IA di accedere al contenuto della Conoscenza in modo tempestivo. Se vuota, Dify utilizzerà la strategia di recupero predefinita.', - descWrite: 'Scopri come scrivere una buona descrizione della Conoscenza.', - permissions: 'Permessi', - permissionsOnlyMe: 'Solo io', - permissionsAllMember: 'Tutti i membri del team', - permissionsInvitedMembers: 'Membri del team parziali', - me: '(Tu)', - indexMethod: 'Metodo di Indicizzazione', - indexMethodHighQuality: 'Alta Qualità', - indexMethodHighQualityTip: - 'Chiama il modello di Embedding per l\'elaborazione per fornire maggiore accuratezza quando gli utenti fanno query.', - indexMethodEconomy: 'Economico', - indexMethodEconomyTip: - 'Usa motori vettoriali offline, indici di parole chiave, ecc. per ridurre l\'accuratezza senza spendere token', - embeddingModel: 'Modello di Embedding', - embeddingModelTip: 'Per cambiare il modello di embedding, vai alle ', - embeddingModelTipLink: 'Impostazioni', - retrievalSetting: { - title: 'Impostazione di Recupero', - learnMore: 'Scopri di più', - description: ' sul metodo di recupero.', - longDescription: - ' sul metodo di recupero, puoi cambiare questo in qualsiasi momento nelle impostazioni della Conoscenza.', - method: 'Metodo di recupero', - multiModalTip: 'Quando il modello di embedding supporta il multi-modale, seleziona un modello di riordinamento multi-modale per ottenere migliori prestazioni.', - }, - save: 'Salva', - retrievalSettings: 'Impostazioni di recupero', - externalKnowledgeID: 'ID conoscenza esterna', - externalKnowledgeAPI: 'API di conoscenza esterna', - helpText: 'Scopri come scrivere una buona descrizione del set di dati.', - upgradeHighQualityTip: 'Una volta effettuato l\'aggiornamento alla modalità Alta qualità, il ripristino della modalità Risparmio non è disponibile', - indexMethodChangeToEconomyDisabledTip: 'Non disponibile per il downgrade da HQ a ECO', - searchModel: 'Cerca modello', - chunkStructure: { - learnMore: 'Ulteriori informazioni', - title: 'Struttura a blocchi', - description: 'sulla struttura a blocchi.', - }, - numberOfKeywords: 'Numero di parole chiave', - nameAndIcon: 'Nome e icona', - onSearchResults: 'Nessun membro corrisponde alla query di ricerca.\nRiprova la ricerca.', - }, -} - -export default translation diff --git a/web/i18n/it-IT/dataset.json b/web/i18n/it-IT/dataset.json new file mode 100644 index 0000000000..7d5948443a --- /dev/null +++ b/web/i18n/it-IT/dataset.json @@ -0,0 +1,249 @@ +{ + "knowledge": "Conoscenza", + "documentCount": " documenti", + "wordCount": " k parole", + "appCount": " app collegate", + "createDataset": "Crea Conoscenza", + "createDatasetIntro": "Importa i tuoi dati testuali o scrivi dati in tempo reale tramite Webhook per migliorare il contesto LLM.", + "deleteDatasetConfirmTitle": "Eliminare questa Conoscenza?", + "deleteDatasetConfirmContent": "L'eliminazione della Conoscenza è irreversibile. Gli utenti non potranno più accedere alla tua Conoscenza e tutte le configurazioni dei prompt e i log verranno eliminati permanentemente.", + "datasetUsedByApp": "La Conoscenza è utilizzata da alcune app. Le app non potranno più utilizzare questa Conoscenza e tutte le configurazioni dei prompt e i log verranno eliminati permanentemente.", + "datasetDeleted": "Conoscenza eliminata", + "datasetDeleteFailed": "Eliminazione della Conoscenza fallita", + "didYouKnow": "Lo sapevi?", + "intro1": "La Conoscenza può essere integrata nell'applicazione Dify ", + "intro2": "come un contesto", + "intro3": ",", + "intro4": "oppure ", + "intro5": "può essere creata", + "intro6": " come un plug-in di indicizzazione ChatGPT autonomo da pubblicare", + "unavailable": "Non disponibile", + "datasets": "CONOSCENZA", + "datasetsApi": "ACCESSO API", + "retrieval": { + "semantic_search": { + "title": "Ricerca Vettoriale", + "description": "Genera embedding delle query e cerca il blocco di testo più simile alla sua rappresentazione vettoriale." + }, + "full_text_search": { + "title": "Ricerca Full-Text", + "description": "Indicizza tutti i termini nel documento, consentendo agli utenti di cercare qualsiasi termine e recuperare il blocco di testo rilevante contenente quei termini." + }, + "hybrid_search": { + "title": "Ricerca Ibrida", + "description": "Esegui contemporaneamente la ricerca full-text e la ricerca vettoriale, riordina per selezionare la migliore corrispondenza per la query dell'utente. È necessaria la configurazione delle API del modello Rerank.", + "recommend": "Consigliato" + }, + "invertedIndex": {}, + "change": "Cambia", + "changeRetrievalMethod": "Cambia metodo di recupero", + "keyword_search": { + "title": "Indice invertito", + "description": "L'indice invertito è una struttura utilizzata per un recupero efficiente. Organizzato per termini, ogni termine rimanda a documenti o pagine web che lo contengono." + } + }, + "docsFailedNotice": "documenti non riusciti a essere indicizzati", + "retry": "Riprova", + "indexingTechnique": { + "high_quality": "AQ", + "economy": "ECO" + }, + "indexingMethod": { + "semantic_search": "VETTORE", + "full_text_search": "TESTO COMPLETO", + "hybrid_search": "IBRIDO", + "invertedIndex": "INVERTITO" + }, + "mixtureHighQualityAndEconomicTip": "Il modello di riclassificazione è necessario per la miscela di basi di conoscenza di alta qualità ed economiche.", + "inconsistentEmbeddingModelTip": "Il modello di riclassificazione è necessario se i modelli di embedding delle basi di conoscenza selezionate sono incoerenti.", + "retrievalSettings": "Impostazioni di recupero", + "rerankSettings": "Impostazioni di riclassificazione", + "weightedScore": { + "title": "Punteggio ponderato", + "description": "Regolando i pesi assegnati, questa strategia di riclassificazione determina se dare priorità alla corrispondenza semantica o per parole chiave.", + "semanticFirst": "Semantica prima", + "keywordFirst": "Parola chiave prima", + "customized": "Personalizzato", + "semantic": "Semantico", + "keyword": "Parola chiave" + }, + "nTo1RetrievalLegacy": "Il recupero N-a-1 sarà ufficialmente deprecato da settembre. Si consiglia di utilizzare il più recente recupero multi-percorso per ottenere risultati migliori.", + "nTo1RetrievalLegacyLink": "Scopri di più", + "nTo1RetrievalLegacyLinkText": "Il recupero N-a-1 sarà ufficialmente deprecato a settembre.", + "defaultRetrievalTip": "Per impostazione predefinita, il recupero a percorsi multipli viene utilizzato. Le informazioni vengono recuperate da più knowledge base e quindi riclassificate.", + "editExternalAPIConfirmWarningContent": { + "end": "conoscenza esterna, e questa modifica sarà applicata a tutti loro. Sei sicuro di voler salvare questa modifica?", + "front": "Questa API della conoscenza esterna è collegata a" + }, + "editExternalAPIFormWarning": { + "end": "Conoscenze esterne", + "front": "Questa API esterna è collegata a" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "front": "Cancellare", + "end": "?" + }, + "content": { + "end": "conoscenze esterne. L'eliminazione di questa API invaliderà tutte. Si è certi di voler eliminare questa API?", + "front": "Questa API della conoscenza esterna è collegata a" + }, + "noConnectionContent": "Sei sicuro di eliminare questa API?" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "Scegliere un'API di conoscenza esterna" + }, + "connectDatasetIntro": { + "content": { + "front": "Per connettersi a una knowledge base esterna, è necessario prima creare un'API esterna. Si prega di leggere attentamente e fare riferimento a", + "end": ". Quindi trova l'ID conoscenza corrispondente e compilalo nel modulo a sinistra. Se tutte le informazioni sono corrette, passerà automaticamente al test di recupero nella knowledge base dopo aver fatto clic sul pulsante di connessione.", + "link": "Scopri come creare un'API esterna" + }, + "title": "Come connettersi a una Knowledge Base esterna", + "learnMore": "Ulteriori informazioni" + }, + "connectHelper": { + "helper2": "È supportata solo la funzionalità di recupero", + "helper4": "Leggi la documentazione della Guida", + "helper3": ". Ti consigliamo vivamente di", + "helper1": "Connettiti a knowledge base esterne tramite API e ID knowledge base. Attualmente,", + "helper5": "prima di utilizzare questa funzione." + }, + "externalKnowledgeForm": { + "cancel": "Annulla", + "connect": "Connettersi" + }, + "externalAPIForm": { + "encrypted": { + "end": "Tecnologia.", + "front": "Il tuo token API verrà crittografato e archiviato utilizzando" + }, + "apiKey": "Chiave API", + "name": "Nome", + "cancel": "Annulla", + "edit": "Redigere", + "save": "Salvare", + "endpoint": "API Endpoint" + }, + "externalAPIPanelDescription": "L'API di conoscenza esterna viene utilizzata per connettersi a una knowledge base esterna a Dify e recuperare le informazioni da tale knowledge base.", + "createExternalAPI": "Aggiungere un'API di conoscenza esterna", + "learnHowToWriteGoodKnowledgeDescription": "Impara a scrivere una buona descrizione della conoscenza", + "externalKnowledgeName": "Nome della conoscenza esterna", + "externalAPIPanelTitle": "API di conoscenza esterna", + "externalAPI": "API esterna", + "createNewExternalAPI": "Creare una nuova API della conoscenza esterna", + "editExternalAPIFormTitle": "Modificare l'API della conoscenza esterna", + "externalKnowledgeId": "ID conoscenza esterna", + "externalKnowledgeIdPlaceholder": "Inserisci l'ID conoscenza", + "externalAPIPanelDocumentation": "Scopri come creare un'API della Knowledge Base esterna", + "connectDataset": "Connettiti a una Knowledge Base esterna", + "mixtureInternalAndExternalTip": "Il modello Rerank è necessario per la combinazione di conoscenze interne ed esterne.", + "editExternalAPITooltipTitle": "CONOSCENZA COLLEGATA", + "externalTag": "Esterno", + "externalKnowledgeNamePlaceholder": "Inserisci il nome della knowledge base", + "externalKnowledgeDescription": "Descrizione della conoscenza", + "allExternalTip": "Quando si utilizzano solo conoscenze esterne, l'utente può scegliere se abilitare il modello Rerank. Se non è abilitato, i blocchi recuperati verranno ordinati in base ai punteggi. Quando le strategie di recupero di diverse basi di conoscenza sono incoerenti, saranno imprecise.", + "externalKnowledgeDescriptionPlaceholder": "Descrivi cosa c'è in questa Knowledge Base (facoltativo)", + "noExternalKnowledge": "Non esiste ancora un'API di conoscenza esterna, fai clic qui per creare", + "chunkingMode": { + "general": "Generale", + "parentChild": "Genitore-figlio", + "graph": "Grafico", + "qa": "Domande e risposte" + }, + "parentMode": { + "paragraph": "Paragrafo", + "fullDoc": "Full-doc" + }, + "batchAction": { + "archive": "Archivio", + "enable": "Abilitare", + "cancel": "Annulla", + "selected": "Selezionato", + "disable": "Disabilitare", + "delete": "Cancellare" + }, + "preprocessDocument": "{{num}} Pre-elaborazione dei documenti", + "enable": "Abilitare", + "documentsDisabled": "{{num}} documenti disabilitati - inattivi da oltre 30 giorni", + "localDocs": "Documenti locali", + "allKnowledge": "Tutta la conoscenza", + "allKnowledgeDescription": "Selezionare questa opzione per visualizzare tutte le informazioni in questa area di lavoro. Solo il proprietario dell'area di lavoro può gestire tutte le conoscenze.", + "metadata": { + "createMetadata": { + "title": "Nuovi Metadati", + "back": "Indietro", + "type": "Tipo", + "name": "Nome", + "namePlaceholder": "Aggiungi nome dei metadati" + }, + "checkName": { + "invalid": "Il nome dei metadati può contenere solo lettere minuscole, numeri e underscore e deve iniziare con una lettera minuscola.", + "empty": "Il nome dei metadati non può essere vuoto", + "tooLong": "Il nome dei metadati non può superare {{max}} caratteri." + }, + "batchEditMetadata": { + "multipleValue": "Valore Multiplo", + "editDocumentsNum": "Modifica {{num}} documenti", + "applyToAllSelectDocument": "Applica a tutti i documenti selezionati", + "editMetadata": "Modifica metadati", + "applyToAllSelectDocumentTip": "Creare automaticamente tutti i metadati modificati e nuovi sopra menzionati per tutti i documenti selezionati, altrimenti la modifica dei metadati si applicherà solo ai documenti che li possiedono." + }, + "selectMetadata": { + "search": "Cerca metadati", + "newAction": "Nuovi Metadati", + "manageAction": "Gestire" + }, + "datasetMetadata": { + "deleteTitle": "Conferma per eliminare", + "name": "Nome", + "addMetaData": "Aggiungi metadata", + "values": "{{num}} Valori", + "disabled": "Disabilitato", + "rename": "Rinomina", + "namePlaceholder": "Nome dei metadati", + "deleteContent": "Sei sicuro di voler eliminare i metadati \"{{name}}\"?", + "builtInDescription": "I metadati incorporati vengono estratti e generati automaticamente. Devono essere abilitati prima dell'uso e non possono essere modificati.", + "description": "Puoi gestire tutti i metadati in questa conoscenza qui. Le modifiche saranno sincronizzate con ogni documento.", + "builtIn": "Integrato" + }, + "documentMetadata": { + "documentInformation": "Informazioni sul documento", + "technicalParameters": "Parametri tecnici", + "startLabeling": "Inizia a etichettare", + "metadataToolTip": "I metadati fungono da filtro critico che migliora l'accuratezza e la rilevanza del recupero delle informazioni. Puoi modificare e aggiungere metadati per questo documento qui." + }, + "addMetadata": "Aggiungi metadata", + "metadata": "Metadata", + "chooseTime": "Scegli un orario..." + }, + "embeddingModelNotAvailable": "Il modello di embedding non è disponibile.", + "updated": "Aggiornato", + "externalKnowledgeBase": "Base di conoscenza esterna", + "createFromPipeline": "Creazione da pipeline di conoscenza", + "serviceApi": { + "card": { + "endpoint": "Endpoint dell'API di servizio", + "apiKey": "Chiave API", + "title": "API del servizio backend", + "apiReference": "Riferimento API" + }, + "disabled": "Disabilitato", + "title": "API di servizio", + "enabled": "In servizio" + }, + "docAllEnabled_one": "{{count}} documento abilitato", + "docAllEnabled_other": "Tutti i documenti {{count}} abilitati", + "partialEnabled_one": "Totale di {{count}} documenti, {{num}} disponibili", + "partialEnabled_other": "Totale di {{count}} documenti, {{num}} disponibili", + "cornerLabel": { + "unavailable": "Non disponibile", + "pipeline": "Infrastruttura" + }, + "multimodal": "Multimodale", + "imageUploader": { + "button": "Trascina e rilascia file o cartella, oppure", + "browse": "Sfoglia", + "tip": "{{supportTypes}} (Max {{batchCount}}, {{size}}MB ciascuno)" + } +} diff --git a/web/i18n/it-IT/dataset.ts b/web/i18n/it-IT/dataset.ts deleted file mode 100644 index e711e4a628..0000000000 --- a/web/i18n/it-IT/dataset.ts +++ /dev/null @@ -1,258 +0,0 @@ -const translation = { - knowledge: 'Conoscenza', - documentCount: ' documenti', - wordCount: ' k parole', - appCount: ' app collegate', - createDataset: 'Crea Conoscenza', - createDatasetIntro: - 'Importa i tuoi dati testuali o scrivi dati in tempo reale tramite Webhook per migliorare il contesto LLM.', - deleteDatasetConfirmTitle: 'Eliminare questa Conoscenza?', - deleteDatasetConfirmContent: - 'L\'eliminazione della Conoscenza è irreversibile. Gli utenti non potranno più accedere alla tua Conoscenza e tutte le configurazioni dei prompt e i log verranno eliminati permanentemente.', - datasetUsedByApp: - 'La Conoscenza è utilizzata da alcune app. Le app non potranno più utilizzare questa Conoscenza e tutte le configurazioni dei prompt e i log verranno eliminati permanentemente.', - datasetDeleted: 'Conoscenza eliminata', - datasetDeleteFailed: 'Eliminazione della Conoscenza fallita', - didYouKnow: 'Lo sapevi?', - intro1: 'La Conoscenza può essere integrata nell\'applicazione Dify ', - intro2: 'come un contesto', - intro3: ',', - intro4: 'oppure ', - intro5: 'può essere creata', - intro6: ' come un plug-in di indicizzazione ChatGPT autonomo da pubblicare', - unavailable: 'Non disponibile', - datasets: 'CONOSCENZA', - datasetsApi: 'ACCESSO API', - retrieval: { - semantic_search: { - title: 'Ricerca Vettoriale', - description: - 'Genera embedding delle query e cerca il blocco di testo più simile alla sua rappresentazione vettoriale.', - }, - full_text_search: { - title: 'Ricerca Full-Text', - description: - 'Indicizza tutti i termini nel documento, consentendo agli utenti di cercare qualsiasi termine e recuperare il blocco di testo rilevante contenente quei termini.', - }, - hybrid_search: { - title: 'Ricerca Ibrida', - description: - 'Esegui contemporaneamente la ricerca full-text e la ricerca vettoriale, riordina per selezionare la migliore corrispondenza per la query dell\'utente. È necessaria la configurazione delle API del modello Rerank.', - recommend: 'Consigliato', - }, - invertedIndex: { - }, - change: 'Cambia', - changeRetrievalMethod: 'Cambia metodo di recupero', - keyword_search: { - title: 'Indice invertito', - description: 'L\'indice invertito è una struttura utilizzata per un recupero efficiente. Organizzato per termini, ogni termine rimanda a documenti o pagine web che lo contengono.', - }, - }, - docsFailedNotice: 'documenti non riusciti a essere indicizzati', - retry: 'Riprova', - indexingTechnique: { - high_quality: 'AQ', - economy: 'ECO', - }, - indexingMethod: { - semantic_search: 'VETTORE', - full_text_search: 'TESTO COMPLETO', - hybrid_search: 'IBRIDO', - invertedIndex: 'INVERTITO', - }, - mixtureHighQualityAndEconomicTip: 'Il modello di riclassificazione è necessario per la miscela di basi di conoscenza di alta qualità ed economiche.', - inconsistentEmbeddingModelTip: 'Il modello di riclassificazione è necessario se i modelli di embedding delle basi di conoscenza selezionate sono incoerenti.', - retrievalSettings: 'Impostazioni di recupero', - rerankSettings: 'Impostazioni di riclassificazione', - weightedScore: { - title: 'Punteggio ponderato', - description: 'Regolando i pesi assegnati, questa strategia di riclassificazione determina se dare priorità alla corrispondenza semantica o per parole chiave.', - semanticFirst: 'Semantica prima', - keywordFirst: 'Parola chiave prima', - customized: 'Personalizzato', - semantic: 'Semantico', - keyword: 'Parola chiave', - }, - nTo1RetrievalLegacy: 'Il recupero N-a-1 sarà ufficialmente deprecato da settembre. Si consiglia di utilizzare il più recente recupero multi-percorso per ottenere risultati migliori.', - nTo1RetrievalLegacyLink: 'Scopri di più', - nTo1RetrievalLegacyLinkText: 'Il recupero N-a-1 sarà ufficialmente deprecato a settembre.', - defaultRetrievalTip: 'Per impostazione predefinita, il recupero a percorsi multipli viene utilizzato. Le informazioni vengono recuperate da più knowledge base e quindi riclassificate.', - editExternalAPIConfirmWarningContent: { - end: 'conoscenza esterna, e questa modifica sarà applicata a tutti loro. Sei sicuro di voler salvare questa modifica?', - front: 'Questa API della conoscenza esterna è collegata a', - }, - editExternalAPIFormWarning: { - end: 'Conoscenze esterne', - front: 'Questa API esterna è collegata a', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - front: 'Cancellare', - end: '?', - }, - content: { - end: 'conoscenze esterne. L\'eliminazione di questa API invaliderà tutte. Si è certi di voler eliminare questa API?', - front: 'Questa API della conoscenza esterna è collegata a', - }, - noConnectionContent: 'Sei sicuro di eliminare questa API?', - }, - selectExternalKnowledgeAPI: { - placeholder: 'Scegliere un\'API di conoscenza esterna', - }, - connectDatasetIntro: { - content: { - front: 'Per connettersi a una knowledge base esterna, è necessario prima creare un\'API esterna. Si prega di leggere attentamente e fare riferimento a', - end: '. Quindi trova l\'ID conoscenza corrispondente e compilalo nel modulo a sinistra. Se tutte le informazioni sono corrette, passerà automaticamente al test di recupero nella knowledge base dopo aver fatto clic sul pulsante di connessione.', - link: 'Scopri come creare un\'API esterna', - }, - title: 'Come connettersi a una Knowledge Base esterna', - learnMore: 'Ulteriori informazioni', - }, - connectHelper: { - helper2: 'È supportata solo la funzionalità di recupero', - helper4: 'Leggi la documentazione della Guida', - helper3: '. Ti consigliamo vivamente di', - helper1: 'Connettiti a knowledge base esterne tramite API e ID knowledge base. Attualmente,', - helper5: 'prima di utilizzare questa funzione.', - }, - externalKnowledgeForm: { - cancel: 'Annulla', - connect: 'Connettersi', - }, - externalAPIForm: { - encrypted: { - end: 'Tecnologia.', - front: 'Il tuo token API verrà crittografato e archiviato utilizzando', - }, - apiKey: 'Chiave API', - name: 'Nome', - cancel: 'Annulla', - edit: 'Redigere', - save: 'Salvare', - endpoint: 'API Endpoint', - }, - externalAPIPanelDescription: 'L\'API di conoscenza esterna viene utilizzata per connettersi a una knowledge base esterna a Dify e recuperare le informazioni da tale knowledge base.', - createExternalAPI: 'Aggiungere un\'API di conoscenza esterna', - learnHowToWriteGoodKnowledgeDescription: 'Impara a scrivere una buona descrizione della conoscenza', - externalKnowledgeName: 'Nome della conoscenza esterna', - externalAPIPanelTitle: 'API di conoscenza esterna', - externalAPI: 'API esterna', - createNewExternalAPI: 'Creare una nuova API della conoscenza esterna', - editExternalAPIFormTitle: 'Modificare l\'API della conoscenza esterna', - externalKnowledgeId: 'ID conoscenza esterna', - externalKnowledgeIdPlaceholder: 'Inserisci l\'ID conoscenza', - externalAPIPanelDocumentation: 'Scopri come creare un\'API della Knowledge Base esterna', - connectDataset: 'Connettiti a una Knowledge Base esterna', - mixtureInternalAndExternalTip: 'Il modello Rerank è necessario per la combinazione di conoscenze interne ed esterne.', - editExternalAPITooltipTitle: 'CONOSCENZA COLLEGATA', - externalTag: 'Esterno', - externalKnowledgeNamePlaceholder: 'Inserisci il nome della knowledge base', - externalKnowledgeDescription: 'Descrizione della conoscenza', - allExternalTip: 'Quando si utilizzano solo conoscenze esterne, l\'utente può scegliere se abilitare il modello Rerank. Se non è abilitato, i blocchi recuperati verranno ordinati in base ai punteggi. Quando le strategie di recupero di diverse basi di conoscenza sono incoerenti, saranno imprecise.', - externalKnowledgeDescriptionPlaceholder: 'Descrivi cosa c\'è in questa Knowledge Base (facoltativo)', - noExternalKnowledge: 'Non esiste ancora un\'API di conoscenza esterna, fai clic qui per creare', - chunkingMode: { - general: 'Generale', - parentChild: 'Genitore-figlio', - graph: 'Grafico', - qa: 'Domande e risposte', - }, - parentMode: { - paragraph: 'Paragrafo', - fullDoc: 'Full-doc', - }, - batchAction: { - archive: 'Archivio', - enable: 'Abilitare', - cancel: 'Annulla', - selected: 'Selezionato', - disable: 'Disabilitare', - delete: 'Cancellare', - }, - preprocessDocument: '{{num}} Pre-elaborazione dei documenti', - enable: 'Abilitare', - documentsDisabled: '{{num}} documenti disabilitati - inattivi da oltre 30 giorni', - localDocs: 'Documenti locali', - allKnowledge: 'Tutta la conoscenza', - allKnowledgeDescription: 'Selezionare questa opzione per visualizzare tutte le informazioni in questa area di lavoro. Solo il proprietario dell\'area di lavoro può gestire tutte le conoscenze.', - metadata: { - createMetadata: { - title: 'Nuovi Metadati', - back: 'Indietro', - type: 'Tipo', - name: 'Nome', - namePlaceholder: 'Aggiungi nome dei metadati', - }, - checkName: { - invalid: 'Il nome dei metadati può contenere solo lettere minuscole, numeri e underscore e deve iniziare con una lettera minuscola.', - empty: 'Il nome dei metadati non può essere vuoto', - tooLong: 'Il nome dei metadati non può superare {{max}} caratteri.', - }, - batchEditMetadata: { - multipleValue: 'Valore Multiplo', - editDocumentsNum: 'Modifica {{num}} documenti', - applyToAllSelectDocument: 'Applica a tutti i documenti selezionati', - editMetadata: 'Modifica metadati', - applyToAllSelectDocumentTip: 'Creare automaticamente tutti i metadati modificati e nuovi sopra menzionati per tutti i documenti selezionati, altrimenti la modifica dei metadati si applicherà solo ai documenti che li possiedono.', - }, - selectMetadata: { - search: 'Cerca metadati', - newAction: 'Nuovi Metadati', - manageAction: 'Gestire', - }, - datasetMetadata: { - deleteTitle: 'Conferma per eliminare', - name: 'Nome', - addMetaData: 'Aggiungi metadata', - values: '{{num}} Valori', - disabled: 'Disabilitato', - rename: 'Rinomina', - namePlaceholder: 'Nome dei metadati', - deleteContent: 'Sei sicuro di voler eliminare i metadati "{{name}}"?', - builtInDescription: 'I metadati incorporati vengono estratti e generati automaticamente. Devono essere abilitati prima dell\'uso e non possono essere modificati.', - description: 'Puoi gestire tutti i metadati in questa conoscenza qui. Le modifiche saranno sincronizzate con ogni documento.', - builtIn: 'Integrato', - }, - documentMetadata: { - documentInformation: 'Informazioni sul documento', - technicalParameters: 'Parametri tecnici', - startLabeling: 'Inizia a etichettare', - metadataToolTip: 'I metadati fungono da filtro critico che migliora l\'accuratezza e la rilevanza del recupero delle informazioni. Puoi modificare e aggiungere metadati per questo documento qui.', - }, - addMetadata: 'Aggiungi metadata', - metadata: 'Metadata', - chooseTime: 'Scegli un orario...', - }, - embeddingModelNotAvailable: 'Il modello di embedding non è disponibile.', - updated: 'Aggiornato', - externalKnowledgeBase: 'Base di conoscenza esterna', - createFromPipeline: 'Creazione da pipeline di conoscenza', - serviceApi: { - card: { - endpoint: 'Endpoint dell\'API di servizio', - apiKey: 'Chiave API', - title: 'API del servizio backend', - apiReference: 'Riferimento API', - }, - disabled: 'Disabilitato', - title: 'API di servizio', - enabled: 'In servizio', - }, - docAllEnabled_one: '{{count}} documento abilitato', - docAllEnabled_other: 'Tutti i documenti {{count}} abilitati', - partialEnabled_one: 'Totale di {{count}} documenti, {{num}} disponibili', - partialEnabled_other: 'Totale di {{count}} documenti, {{num}} disponibili', - cornerLabel: { - unavailable: 'Non disponibile', - pipeline: 'Infrastruttura', - }, - multimodal: 'Multimodale', - imageUploader: { - button: 'Trascina e rilascia file o cartella, oppure', - browse: 'Sfoglia', - tip: '{{supportTypes}} (Max {{batchCount}}, {{size}}MB ciascuno)', - }, -} - -export default translation diff --git a/web/i18n/it-IT/education.json b/web/i18n/it-IT/education.json new file mode 100644 index 0000000000..f11ee99b78 --- /dev/null +++ b/web/i18n/it-IT/education.json @@ -0,0 +1,74 @@ +{ + "toVerifiedTip": { + "coupon": "coupon esclusivo al 100%", + "end": "per il Piano Professionale Dify.", + "front": "Ora sei idoneo per lo stato di Educazione Verificata. Per favore, inserisci le tue informazioni educative qui sotto per completare il processo e ricevere un" + }, + "form": { + "schoolName": { + "title": "Il Nome della tua Scuola", + "placeholder": "Inserisci il nome ufficiale e completo della tua scuola" + }, + "schoolRole": { + "option": { + "teacher": "Insegnante", + "student": "Studente", + "administrator": "Amministratore scolastico" + }, + "title": "Il tuo ruolo scolastico" + }, + "terms": { + "desc": { + "and": "e", + "privacyPolicy": "Informativa sulla privacy", + "end": ". Inviando:", + "front": "Le tue informazioni e l'uso dello stato di Educazione Verificato sono soggetti a nostri", + "termsOfService": "Termini di servizio" + }, + "option": { + "inSchool": "Confermo di essere iscritto o impiegato presso l'istituzione fornita. Dify può richiedere una prova di iscrizione/impegno. Se rappresento erroneamente la mia idoneità, accetto di pagare eventuali tasse inizialmente esonerate in base al mio stato di istruzione.", + "age": "Confermo di avere almeno 18 anni" + }, + "title": "Termini e Accordi" + } + }, + "toVerified": "Fai verificare la tua istruzione", + "successTitle": "Hai ottenuto l'istruzione Dify verificata", + "submitError": "Invio del modulo non riuscito. Per favore riprova più tardi.", + "submit": "Invia", + "currentSigned": "ATTUALMENTE ACCEDUTO COME", + "successContent": "Abbiamo emesso un coupon sconto del 100% per il piano Dify Professionale sul tuo account. Il coupon è valido per un anno, ti preghiamo di utilizzarlo entro il periodo di validità.", + "learn": "Scopri come far verificare la tua istruzione", + "emailLabel": "La tua email attuale", + "rejectContent": "Sfortunatamente, non sei idoneo per lo status di Educazione Verificata e quindi non puoi ricevere il coupon esclusivo del 100% per il Piano Professionale Dify se usi questo indirizzo email.", + "rejectTitle": "La tua verifica educativa Dify è stata rifiutata.", + "notice": { + "expired": { + "summary": { + "line1": "Puoi ancora accedere e usare Dify.", + "line2": "Tuttavia, non sei più idoneo per i nuovi coupon di sconto per l'istruzione." + }, + "title": "Il tuo stato di istruzione è scaduto" + }, + "isAboutToExpire": { + "summary": "Non preoccuparti — ciò non influenzerà il tuo abbonamento attuale, ma non otterrai lo sconto per l'istruzione al momento del rinnovo a meno che tu non verifichi nuovamente il tuo stato.", + "title": "Il tuo stato educativo scadrà il {{date}}" + }, + "stillInEducation": { + "title": "Ancora in formazione?", + "expired": "Verifica di nuovo ora per ottenere un nuovo coupon per il prossimo anno accademico. Lo aggiungeremo al tuo account e potrai usarlo per il prossimo aggiornamento.", + "isAboutToExpire": "Verifica di nuovo ora per ottenere un nuovo coupon per il prossimo anno accademico. Sarà salvato nel tuo account e pronto per essere utilizzato al tuo prossimo rinnovo." + }, + "alreadyGraduated": { + "title": "Già laureato?", + "expired": "Sentiti libero di effettuare l'upgrade in qualsiasi momento per avere accesso completo alle funzionalità a pagamento.", + "isAboutToExpire": "Il tuo abbonamento attuale rimarrà attivo. Quando scade, verrai spostato nel piano Sandbox, oppure puoi eseguire l'upgrade in qualsiasi momento per ripristinare l'accesso completo alle funzionalità a pagamento." + }, + "action": { + "dismiss": "Ignora", + "reVerify": "Riconferma", + "upgrade": "Aggiornare" + }, + "dateFormat": "GG/MM/AAAA" + } +} diff --git a/web/i18n/it-IT/education.ts b/web/i18n/it-IT/education.ts deleted file mode 100644 index 4f15792d0e..0000000000 --- a/web/i18n/it-IT/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerifiedTip: { - coupon: 'coupon esclusivo al 100%', - end: 'per il Piano Professionale Dify.', - front: 'Ora sei idoneo per lo stato di Educazione Verificata. Per favore, inserisci le tue informazioni educative qui sotto per completare il processo e ricevere un', - }, - form: { - schoolName: { - title: 'Il Nome della tua Scuola', - placeholder: 'Inserisci il nome ufficiale e completo della tua scuola', - }, - schoolRole: { - option: { - teacher: 'Insegnante', - student: 'Studente', - administrator: 'Amministratore scolastico', - }, - title: 'Il tuo ruolo scolastico', - }, - terms: { - desc: { - and: 'e', - privacyPolicy: 'Informativa sulla privacy', - end: '. Inviando:', - front: 'Le tue informazioni e l\'uso dello stato di Educazione Verificato sono soggetti a nostri', - termsOfService: 'Termini di servizio', - }, - option: { - inSchool: 'Confermo di essere iscritto o impiegato presso l\'istituzione fornita. Dify può richiedere una prova di iscrizione/impegno. Se rappresento erroneamente la mia idoneità, accetto di pagare eventuali tasse inizialmente esonerate in base al mio stato di istruzione.', - age: 'Confermo di avere almeno 18 anni', - }, - title: 'Termini e Accordi', - }, - }, - toVerified: 'Fai verificare la tua istruzione', - successTitle: 'Hai ottenuto l\'istruzione Dify verificata', - submitError: 'Invio del modulo non riuscito. Per favore riprova più tardi.', - submit: 'Invia', - currentSigned: 'ATTUALMENTE ACCEDUTO COME', - successContent: 'Abbiamo emesso un coupon sconto del 100% per il piano Dify Professionale sul tuo account. Il coupon è valido per un anno, ti preghiamo di utilizzarlo entro il periodo di validità.', - learn: 'Scopri come far verificare la tua istruzione', - emailLabel: 'La tua email attuale', - rejectContent: 'Sfortunatamente, non sei idoneo per lo status di Educazione Verificata e quindi non puoi ricevere il coupon esclusivo del 100% per il Piano Professionale Dify se usi questo indirizzo email.', - rejectTitle: 'La tua verifica educativa Dify è stata rifiutata.', - notice: { - expired: { - summary: { - line1: 'Puoi ancora accedere e usare Dify.', - line2: 'Tuttavia, non sei più idoneo per i nuovi coupon di sconto per l\'istruzione.', - }, - title: 'Il tuo stato di istruzione è scaduto', - }, - isAboutToExpire: { - summary: 'Non preoccuparti — ciò non influenzerà il tuo abbonamento attuale, ma non otterrai lo sconto per l\'istruzione al momento del rinnovo a meno che tu non verifichi nuovamente il tuo stato.', - title: 'Il tuo stato educativo scadrà il {{date}}', - }, - stillInEducation: { - title: 'Ancora in formazione?', - expired: 'Verifica di nuovo ora per ottenere un nuovo coupon per il prossimo anno accademico. Lo aggiungeremo al tuo account e potrai usarlo per il prossimo aggiornamento.', - isAboutToExpire: 'Verifica di nuovo ora per ottenere un nuovo coupon per il prossimo anno accademico. Sarà salvato nel tuo account e pronto per essere utilizzato al tuo prossimo rinnovo.', - }, - alreadyGraduated: { - title: 'Già laureato?', - expired: 'Sentiti libero di effettuare l\'upgrade in qualsiasi momento per avere accesso completo alle funzionalità a pagamento.', - isAboutToExpire: 'Il tuo abbonamento attuale rimarrà attivo. Quando scade, verrai spostato nel piano Sandbox, oppure puoi eseguire l\'upgrade in qualsiasi momento per ripristinare l\'accesso completo alle funzionalità a pagamento.', - }, - action: { - dismiss: 'Ignora', - reVerify: 'Riconferma', - upgrade: 'Aggiornare', - }, - dateFormat: 'GG/MM/AAAA', - }, -} - -export default translation diff --git a/web/i18n/it-IT/explore.json b/web/i18n/it-IT/explore.json new file mode 100644 index 0000000000..182b8ba1eb --- /dev/null +++ b/web/i18n/it-IT/explore.json @@ -0,0 +1,42 @@ +{ + "title": "Esplora", + "sidebar": { + "discovery": "Scoperta", + "chat": "Chat", + "workspace": "Workspace", + "action": { + "pin": "Fissa", + "unpin": "Sblocca", + "rename": "Rinomina", + "delete": "Elimina" + }, + "delete": { + "title": "Elimina app", + "content": "Sei sicuro di voler eliminare questa app?" + } + }, + "apps": { + "title": "Esplora App di Dify", + "description": "Usa queste app modello istantaneamente o personalizza le tue app basate sui modelli.", + "allCategories": "Consigliato" + }, + "appCard": { + "addToWorkspace": "Aggiungi a Workspace", + "customize": "Personalizza" + }, + "appCustomize": { + "title": "Crea app da {{name}}", + "subTitle": "Icona & nome dell'app", + "nameRequired": "Il nome dell'app è obbligatorio" + }, + "category": { + "Assistant": "Assistente", + "Writing": "Scrittura", + "Translate": "Traduzione", + "Programming": "Programmazione", + "HR": "Risorse Umane", + "Workflow": "Flusso di lavoro", + "Agent": "Agente", + "Entertainment": "Intrattenimento" + } +} diff --git a/web/i18n/it-IT/explore.ts b/web/i18n/it-IT/explore.ts deleted file mode 100644 index d94df45d54..0000000000 --- a/web/i18n/it-IT/explore.ts +++ /dev/null @@ -1,45 +0,0 @@ -const translation = { - title: 'Esplora', - sidebar: { - discovery: 'Scoperta', - chat: 'Chat', - workspace: 'Workspace', - action: { - pin: 'Fissa', - unpin: 'Sblocca', - rename: 'Rinomina', - delete: 'Elimina', - }, - delete: { - title: 'Elimina app', - content: 'Sei sicuro di voler eliminare questa app?', - }, - }, - apps: { - title: 'Esplora App di Dify', - description: - 'Usa queste app modello istantaneamente o personalizza le tue app basate sui modelli.', - allCategories: 'Consigliato', - }, - appCard: { - addToWorkspace: 'Aggiungi a Workspace', - customize: 'Personalizza', - }, - appCustomize: { - title: 'Crea app da {{name}}', - subTitle: 'Icona & nome dell\'app', - nameRequired: 'Il nome dell\'app è obbligatorio', - }, - category: { - Assistant: 'Assistente', - Writing: 'Scrittura', - Translate: 'Traduzione', - Programming: 'Programmazione', - HR: 'Risorse Umane', - Workflow: 'Flusso di lavoro', - Agent: 'Agente', - Entertainment: 'Intrattenimento', - }, -} - -export default translation diff --git a/web/i18n/it-IT/layout.json b/web/i18n/it-IT/layout.json new file mode 100644 index 0000000000..3e6021504f --- /dev/null +++ b/web/i18n/it-IT/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "expandSidebar": "Espandi barra laterale", + "collapseSidebar": "Comprimi la barra laterale" + } +} diff --git a/web/i18n/it-IT/layout.ts b/web/i18n/it-IT/layout.ts deleted file mode 100644 index b89adedd6a..0000000000 --- a/web/i18n/it-IT/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - expandSidebar: 'Espandi barra laterale', - collapseSidebar: 'Comprimi la barra laterale', - }, -} - -export default translation diff --git a/web/i18n/it-IT/login.json b/web/i18n/it-IT/login.json new file mode 100644 index 0000000000..ac22433176 --- /dev/null +++ b/web/i18n/it-IT/login.json @@ -0,0 +1,124 @@ +{ + "pageTitle": "Ehi, iniziamo!👋", + "welcome": "Benvenuto su Dify, per favore accedi per continuare.", + "email": "Indirizzo email", + "emailPlaceholder": "La tua email", + "password": "Password", + "passwordPlaceholder": "La tua password", + "name": "Nome utente", + "namePlaceholder": "Il tuo nome utente", + "forget": "Hai dimenticato la password?", + "signBtn": "Accedi", + "installBtn": "Configura", + "setAdminAccount": "Impostazione di un account amministratore", + "setAdminAccountDesc": "Privilegi massimi per l'account amministratore, che può essere utilizzato per creare applicazioni e gestire i fornitori di LLM, ecc.", + "createAndSignIn": "Crea e accedi", + "oneMoreStep": "Un altro passo", + "createSample": "In base a queste informazioni, creeremo un'applicazione di esempio per te", + "invitationCode": "Codice di invito", + "invitationCodePlaceholder": "Il tuo codice di invito", + "interfaceLanguage": "Lingua dell'interfaccia", + "timezone": "Fuso orario", + "go": "Vai a Dify", + "sendUsMail": "Inviaci una email con la tua presentazione e gestiremo la richiesta di invito.", + "acceptPP": "Ho letto e accetto l'informativa sulla privacy", + "reset": "Per favore esegui il seguente comando per reimpostare la tua password", + "withGitHub": "Continua con GitHub", + "withGoogle": "Continua con Google", + "rightTitle": "Sblocca tutto il potenziale di LLM", + "rightDesc": "Costruisci senza sforzo applicazioni AI visivamente accattivanti, operabili e migliorabili.", + "tos": "Termini di servizio", + "pp": "Informativa sulla privacy", + "tosDesc": "Iscrivendoti, accetti i nostri", + "goToInit": "Se non hai inizializzato l'account, vai alla pagina di inizializzazione", + "dontHave": "Non hai?", + "invalidInvitationCode": "Codice di invito non valido", + "accountAlreadyInited": "Account già inizializzato", + "forgotPassword": "Hai dimenticato la password?", + "resetLinkSent": "Link per il reset inviato", + "sendResetLink": "Invia link per il reset", + "backToSignIn": "Torna al login", + "forgotPasswordDesc": "Per favore inserisci il tuo indirizzo email per reimpostare la tua password. Ti invieremo una email con le istruzioni su come reimpostare la tua password.", + "checkEmailForResetLink": "Per favore controlla la tua email per un link per reimpostare la password. Se non compare entro pochi minuti, assicurati di controllare la cartella spam.", + "passwordChanged": "Accedi ora", + "changePassword": "Cambia Password", + "changePasswordTip": "Per favore inserisci una nuova password per il tuo account", + "invalidToken": "Token non valido o scaduto", + "confirmPassword": "Conferma Password", + "confirmPasswordPlaceholder": "Conferma la tua nuova password", + "passwordChangedTip": "La tua password è stata cambiata con successo", + "error": { + "emailEmpty": "L'indirizzo email è obbligatorio", + "emailInValid": "Per favore inserisci un indirizzo email valido", + "nameEmpty": "Il nome è obbligatorio", + "passwordEmpty": "La password è obbligatoria", + "passwordLengthInValid": "La password deve essere di almeno 8 caratteri", + "passwordInvalid": "La password deve contenere lettere e numeri, e la lunghezza deve essere maggiore di 8", + "registrationNotAllowed": "Account non trovato. Si prega di contattare l'amministratore di sistema per registrarsi.", + "invalidEmailOrPassword": "Email o password non validi." + }, + "license": { + "tip": "Prima di avviare Dify Community Edition, leggi su GitHub", + "link": "Licenza open-source" + }, + "join": "Unisciti", + "joinTipStart": "Invitato a unirti al", + "joinTipEnd": "team su Dify", + "invalid": "Il link è scaduto", + "explore": "Esplora Dify", + "activatedTipStart": "Sei entrato nel team", + "activatedTipEnd": "", + "activated": "Accedi ora", + "adminInitPassword": "Password di inizializzazione amministratore", + "validate": "Convalida", + "checkCode": { + "invalidCode": "Codice non valido", + "verificationCodePlaceholder": "Inserisci il codice a 6 cifre", + "verify": "Verificare", + "emptyCode": "Il codice è obbligatorio", + "resend": "Inviare", + "verificationCode": "Codice di verifica", + "validTime": "Tieni presente che il codice è valido per 5 minuti", + "didNotReceiveCode": "Non hai ricevuto il codice?", + "checkYourEmail": "Controlla la tua email", + "useAnotherMethod": "Usa un altro metodo", + "tipsPrefix": "Inviamo un codice di verifica a" + }, + "or": "O", + "back": "Indietro", + "noLoginMethod": "Metodo di autenticazione non configurato", + "backToLogin": "Torna al login", + "changePasswordBtn": "Imposta una password", + "setYourAccount": "Imposta il tuo account", + "withSSO": "Continua con SSO", + "usePassword": "Usa password", + "resetPassword": "Reimposta password", + "continueWithCode": "Continua con il codice", + "sendVerificationCode": "Invia codice di verifica", + "useVerificationCode": "Usa il codice di verifica", + "resetPasswordDesc": "Digita l'e-mail che hai utilizzato per registrarti su Dify e ti invieremo un'e-mail per reimpostare la password.", + "noLoginMethodTip": "Contatta l'amministratore di sistema per aggiungere un metodo di autenticazione.", + "enterYourName": "Inserisci il tuo nome utente", + "licenseLostTip": "Impossibile connettersi al server licenze Dify. Contatta il tuo amministratore per continuare a utilizzare Dify.", + "licenseExpired": "Licenza scaduta", + "licenseLost": "Licenza persa", + "licenseExpiredTip": "La licenza Dify Enterprise per la tua area di lavoro è scaduta. Contatta il tuo amministratore per continuare a utilizzare Dify.", + "licenseInactiveTip": "La licenza Dify Enterprise per la tua area di lavoro è inattiva. Contatta il tuo amministratore per continuare a utilizzare Dify.", + "licenseInactive": "Licenza inattiva", + "webapp": { + "noLoginMethod": "Metodo di autenticazione non configurato per l'app web", + "noLoginMethodTip": "Si prega di contattare l'amministratore del sistema per aggiungere un metodo di autenticazione.", + "disabled": "L'autenticazione dell'app web è disabilitata. Si prega di contattare l'amministratore di sistema per abilitarla. Puoi provare a utilizzare l'app direttamente.", + "login": "Accesso" + }, + "signup": { + "signIn": "Accedi", + "noAccount": "Non hai un account?", + "haveAccount": "Hai già un account?", + "createAccount": "Crea il tuo account", + "verifyMail": "Continua con il codice di verifica", + "signUp": "Iscriviti", + "welcome": "👋 Benvenuto! Per favore compila i dettagli per iniziare." + }, + "pageTitleForE": "Ehi, cominciamo!" +} diff --git a/web/i18n/it-IT/login.ts b/web/i18n/it-IT/login.ts deleted file mode 100644 index e19baca6a3..0000000000 --- a/web/i18n/it-IT/login.ts +++ /dev/null @@ -1,136 +0,0 @@ -const translation = { - pageTitle: 'Ehi, iniziamo!👋', - welcome: 'Benvenuto su Dify, per favore accedi per continuare.', - email: 'Indirizzo email', - emailPlaceholder: 'La tua email', - password: 'Password', - passwordPlaceholder: 'La tua password', - name: 'Nome utente', - namePlaceholder: 'Il tuo nome utente', - forget: 'Hai dimenticato la password?', - signBtn: 'Accedi', - installBtn: 'Configura', - setAdminAccount: 'Impostazione di un account amministratore', - setAdminAccountDesc: - 'Privilegi massimi per l\'account amministratore, che può essere utilizzato per creare applicazioni e gestire i fornitori di LLM, ecc.', - createAndSignIn: 'Crea e accedi', - oneMoreStep: 'Un altro passo', - createSample: - 'In base a queste informazioni, creeremo un\'applicazione di esempio per te', - invitationCode: 'Codice di invito', - invitationCodePlaceholder: 'Il tuo codice di invito', - interfaceLanguage: 'Lingua dell\'interfaccia', - timezone: 'Fuso orario', - go: 'Vai a Dify', - sendUsMail: - 'Inviaci una email con la tua presentazione e gestiremo la richiesta di invito.', - acceptPP: 'Ho letto e accetto l\'informativa sulla privacy', - reset: - 'Per favore esegui il seguente comando per reimpostare la tua password', - withGitHub: 'Continua con GitHub', - withGoogle: 'Continua con Google', - rightTitle: 'Sblocca tutto il potenziale di LLM', - rightDesc: - 'Costruisci senza sforzo applicazioni AI visivamente accattivanti, operabili e migliorabili.', - tos: 'Termini di servizio', - pp: 'Informativa sulla privacy', - tosDesc: 'Iscrivendoti, accetti i nostri', - goToInit: - 'Se non hai inizializzato l\'account, vai alla pagina di inizializzazione', - dontHave: 'Non hai?', - invalidInvitationCode: 'Codice di invito non valido', - accountAlreadyInited: 'Account già inizializzato', - forgotPassword: 'Hai dimenticato la password?', - resetLinkSent: 'Link per il reset inviato', - sendResetLink: 'Invia link per il reset', - backToSignIn: 'Torna al login', - forgotPasswordDesc: - 'Per favore inserisci il tuo indirizzo email per reimpostare la tua password. Ti invieremo una email con le istruzioni su come reimpostare la tua password.', - checkEmailForResetLink: - 'Per favore controlla la tua email per un link per reimpostare la password. Se non compare entro pochi minuti, assicurati di controllare la cartella spam.', - passwordChanged: 'Accedi ora', - changePassword: 'Cambia Password', - changePasswordTip: - 'Per favore inserisci una nuova password per il tuo account', - invalidToken: 'Token non valido o scaduto', - confirmPassword: 'Conferma Password', - confirmPasswordPlaceholder: 'Conferma la tua nuova password', - passwordChangedTip: 'La tua password è stata cambiata con successo', - error: { - emailEmpty: 'L\'indirizzo email è obbligatorio', - emailInValid: 'Per favore inserisci un indirizzo email valido', - nameEmpty: 'Il nome è obbligatorio', - passwordEmpty: 'La password è obbligatoria', - passwordLengthInValid: 'La password deve essere di almeno 8 caratteri', - passwordInvalid: - 'La password deve contenere lettere e numeri, e la lunghezza deve essere maggiore di 8', - registrationNotAllowed: 'Account non trovato. Si prega di contattare l\'amministratore di sistema per registrarsi.', - invalidEmailOrPassword: 'Email o password non validi.', - }, - license: { - tip: 'Prima di avviare Dify Community Edition, leggi su GitHub', - link: 'Licenza open-source', - }, - join: 'Unisciti', - joinTipStart: 'Invitato a unirti al', - joinTipEnd: 'team su Dify', - invalid: 'Il link è scaduto', - explore: 'Esplora Dify', - activatedTipStart: 'Sei entrato nel team', - activatedTipEnd: '', - activated: 'Accedi ora', - adminInitPassword: 'Password di inizializzazione amministratore', - validate: 'Convalida', - checkCode: { - invalidCode: 'Codice non valido', - verificationCodePlaceholder: 'Inserisci il codice a 6 cifre', - verify: 'Verificare', - emptyCode: 'Il codice è obbligatorio', - resend: 'Inviare', - verificationCode: 'Codice di verifica', - validTime: 'Tieni presente che il codice è valido per 5 minuti', - didNotReceiveCode: 'Non hai ricevuto il codice?', - checkYourEmail: 'Controlla la tua email', - useAnotherMethod: 'Usa un altro metodo', - tipsPrefix: 'Inviamo un codice di verifica a', - }, - or: 'O', - back: 'Indietro', - noLoginMethod: 'Metodo di autenticazione non configurato', - backToLogin: 'Torna al login', - changePasswordBtn: 'Imposta una password', - setYourAccount: 'Imposta il tuo account', - withSSO: 'Continua con SSO', - usePassword: 'Usa password', - resetPassword: 'Reimposta password', - continueWithCode: 'Continua con il codice', - sendVerificationCode: 'Invia codice di verifica', - useVerificationCode: 'Usa il codice di verifica', - resetPasswordDesc: 'Digita l\'e-mail che hai utilizzato per registrarti su Dify e ti invieremo un\'e-mail per reimpostare la password.', - noLoginMethodTip: 'Contatta l\'amministratore di sistema per aggiungere un metodo di autenticazione.', - enterYourName: 'Inserisci il tuo nome utente', - licenseLostTip: 'Impossibile connettersi al server licenze Dify. Contatta il tuo amministratore per continuare a utilizzare Dify.', - licenseExpired: 'Licenza scaduta', - licenseLost: 'Licenza persa', - licenseExpiredTip: 'La licenza Dify Enterprise per la tua area di lavoro è scaduta. Contatta il tuo amministratore per continuare a utilizzare Dify.', - licenseInactiveTip: 'La licenza Dify Enterprise per la tua area di lavoro è inattiva. Contatta il tuo amministratore per continuare a utilizzare Dify.', - licenseInactive: 'Licenza inattiva', - webapp: { - noLoginMethod: 'Metodo di autenticazione non configurato per l\'app web', - noLoginMethodTip: 'Si prega di contattare l\'amministratore del sistema per aggiungere un metodo di autenticazione.', - disabled: 'L\'autenticazione dell\'app web è disabilitata. Si prega di contattare l\'amministratore di sistema per abilitarla. Puoi provare a utilizzare l\'app direttamente.', - login: 'Accesso', - }, - signup: { - signIn: 'Accedi', - noAccount: 'Non hai un account?', - haveAccount: 'Hai già un account?', - createAccount: 'Crea il tuo account', - verifyMail: 'Continua con il codice di verifica', - signUp: 'Iscriviti', - welcome: '👋 Benvenuto! Per favore compila i dettagli per iniziare.', - }, - pageTitleForE: 'Ehi, cominciamo!', -} - -export default translation diff --git a/web/i18n/it-IT/oauth.json b/web/i18n/it-IT/oauth.json new file mode 100644 index 0000000000..9091b00343 --- /dev/null +++ b/web/i18n/it-IT/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "notLoggedIn": "Questa app vuole accedere al tuo account Dify Cloud", + "loggedIn": "Questa app vuole accedere alle seguenti informazioni dal tuo account Dify Cloud.", + "common": "Rispettiamo la tua privacy e utilizzeremo queste informazioni solo per migliorare la tua esperienza con i nostri strumenti per sviluppatori.", + "needLogin": "Per favore, accedi per autorizzare" + }, + "scopes": { + "email": "Email", + "languagePreference": "Preferenza Linguistica", + "name": "Nome", + "timezone": "Fuso orario", + "avatar": "Avatar" + }, + "error": { + "invalidParams": "Parametri non validi", + "authorizeFailed": "Autorizzazione fallita", + "authAppInfoFetchFailed": "Impossibile recuperare le informazioni sull'app per l'autorizzazione" + }, + "switchAccount": "Cambia account", + "login": "Accesso", + "unknownApp": "App sconosciuta", + "connect": "Connetti a", + "continue": "Continua" +} diff --git a/web/i18n/it-IT/oauth.ts b/web/i18n/it-IT/oauth.ts deleted file mode 100644 index 4220666a9a..0000000000 --- a/web/i18n/it-IT/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - notLoggedIn: 'Questa app vuole accedere al tuo account Dify Cloud', - loggedIn: 'Questa app vuole accedere alle seguenti informazioni dal tuo account Dify Cloud.', - common: 'Rispettiamo la tua privacy e utilizzeremo queste informazioni solo per migliorare la tua esperienza con i nostri strumenti per sviluppatori.', - needLogin: 'Per favore, accedi per autorizzare', - }, - scopes: { - email: 'Email', - languagePreference: 'Preferenza Linguistica', - name: 'Nome', - timezone: 'Fuso orario', - avatar: 'Avatar', - }, - error: { - invalidParams: 'Parametri non validi', - authorizeFailed: 'Autorizzazione fallita', - authAppInfoFetchFailed: 'Impossibile recuperare le informazioni sull\'app per l\'autorizzazione', - }, - switchAccount: 'Cambia account', - login: 'Accesso', - unknownApp: 'App sconosciuta', - connect: 'Connetti a', - continue: 'Continua', -} - -export default translation diff --git a/web/i18n/it-IT/pipeline.json b/web/i18n/it-IT/pipeline.json new file mode 100644 index 0000000000..942661ba04 --- /dev/null +++ b/web/i18n/it-IT/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "publishAsPipeline": { + "description": "Descrizione della conoscenza", + "name": "Nome e icona della pipeline", + "namePlaceholder": "Inserisci il nome di questa pipeline di conoscenza. (Obbligatorio)", + "descriptionPlaceholder": "Inserisci la descrizione di questa pipeline di conoscenza. (Facoltativo)" + }, + "processing": "Elaborazione", + "reRun": "Ripetizione", + "testRun": "Esecuzione dei test", + "goToAddDocuments": "Vai ad aggiungere documenti", + "preparingDataSource": "Preparazione dell'origine dati", + "publishAs": "Pubblicazione come pipeline di conoscenza", + "confirmPublish": "Conferma pubblicazione", + "confirmPublishContent": "Dopo aver pubblicato correttamente la pipeline di conoscenza, la struttura a blocchi di questa knowledge base non può essere modificata. Sei sicuro di volerlo pubblicare?" + }, + "inputField": { + "manage": "Amministrare", + "create": "Crea campo di input utente" + }, + "publishToast": { + "title": "Questa pipeline non è stata ancora pubblicata", + "desc": "Quando la pipeline non viene pubblicata, è possibile modificare la struttura del blocco nel nodo della Knowledge Base e l'orchestrazione e le modifiche della pipeline verranno salvate automaticamente come bozza." + }, + "result": { + "resultPreview": { + "loading": "Elaborazione... Attendere prego", + "error": "Si è verificato un errore durante l'esecuzione", + "viewDetails": "Mostra dettagli", + "footerTip": "In modalità di test, anteprima di fino a {{count}} frammenti" + } + }, + "ragToolSuggestions": { + "title": "Suggerimenti per RAG", + "noRecommendationPlugins": "Nessun plugin consigliato, trova di più in Marketplace" + } +} diff --git a/web/i18n/it-IT/pipeline.ts b/web/i18n/it-IT/pipeline.ts deleted file mode 100644 index 64014b4d1f..0000000000 --- a/web/i18n/it-IT/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - publishAsPipeline: { - description: 'Descrizione della conoscenza', - name: 'Nome e icona della pipeline', - namePlaceholder: 'Inserisci il nome di questa pipeline di conoscenza. (Obbligatorio)', - descriptionPlaceholder: 'Inserisci la descrizione di questa pipeline di conoscenza. (Facoltativo)', - }, - processing: 'Elaborazione', - reRun: 'Ripetizione', - testRun: 'Esecuzione dei test', - goToAddDocuments: 'Vai ad aggiungere documenti', - preparingDataSource: 'Preparazione dell\'origine dati', - publishAs: 'Pubblicazione come pipeline di conoscenza', - confirmPublish: 'Conferma pubblicazione', - confirmPublishContent: 'Dopo aver pubblicato correttamente la pipeline di conoscenza, la struttura a blocchi di questa knowledge base non può essere modificata. Sei sicuro di volerlo pubblicare?', - }, - inputField: { - manage: 'Amministrare', - create: 'Crea campo di input utente', - }, - publishToast: { - title: 'Questa pipeline non è stata ancora pubblicata', - desc: 'Quando la pipeline non viene pubblicata, è possibile modificare la struttura del blocco nel nodo della Knowledge Base e l\'orchestrazione e le modifiche della pipeline verranno salvate automaticamente come bozza.', - }, - result: { - resultPreview: { - loading: 'Elaborazione... Attendere prego', - error: 'Si è verificato un errore durante l\'esecuzione', - viewDetails: 'Mostra dettagli', - footerTip: 'In modalità di test, anteprima di fino a {{count}} frammenti', - }, - }, - ragToolSuggestions: { - title: 'Suggerimenti per RAG', - noRecommendationPlugins: 'Nessun plugin consigliato, trova di più in Marketplace', - }, -} - -export default translation diff --git a/web/i18n/it-IT/plugin-tags.json b/web/i18n/it-IT/plugin-tags.json new file mode 100644 index 0000000000..c49ee0e44b --- /dev/null +++ b/web/i18n/it-IT/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "tags": { + "design": "Disegno", + "education": "Educazione", + "search": "Ricerca", + "entertainment": "Divertimento", + "agent": "Agente", + "image": "Immagine", + "weather": "Tempo", + "business": "Azienda", + "news": "Notizie", + "other": "Altro", + "travel": "Viaggio", + "medical": "Medico", + "utilities": "Utilità", + "videos": "Video", + "productivity": "Produttività", + "finance": "Finanza", + "social": "Sociale", + "rag": "STRACCIO" + }, + "searchTags": "Cerca Tag", + "allTags": "Tutti i tag" +} diff --git a/web/i18n/it-IT/plugin-tags.ts b/web/i18n/it-IT/plugin-tags.ts deleted file mode 100644 index cc565adaba..0000000000 --- a/web/i18n/it-IT/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - tags: { - design: 'Disegno', - education: 'Educazione', - search: 'Ricerca', - entertainment: 'Divertimento', - agent: 'Agente', - image: 'Immagine', - weather: 'Tempo', - business: 'Azienda', - news: 'Notizie', - other: 'Altro', - travel: 'Viaggio', - medical: 'Medico', - utilities: 'Utilità', - videos: 'Video', - productivity: 'Produttività', - finance: 'Finanza', - social: 'Sociale', - rag: 'STRACCIO', - }, - searchTags: 'Cerca Tag', - allTags: 'Tutti i tag', -} - -export default translation diff --git a/web/i18n/it-IT/plugin-trigger.json b/web/i18n/it-IT/plugin-trigger.json new file mode 100644 index 0000000000..6978a9da49 --- /dev/null +++ b/web/i18n/it-IT/plugin-trigger.json @@ -0,0 +1,184 @@ +{ + "subscription": { + "title": "Abbonamenti", + "listNum": "abbonamenti {{num}}", + "empty": { + "title": "Nessun abbonamento", + "button": "Nuovo abbonamento" + }, + "createButton": { + "oauth": "Nuovo abbonamento con OAuth", + "apiKey": "Nuovo abbonamento con chiave API", + "manual": "Incolla l'URL per creare un nuovo abbonamento" + }, + "createSuccess": "Abbonamento creato con successo", + "createFailed": "Impossibile creare l'abbonamento", + "maxCount": "Max {{num}} abbonamenti", + "selectPlaceholder": "Seleziona abbonamento", + "noSubscriptionSelected": "Nessun abbonamento selezionato", + "subscriptionRemoved": "Abbonamento rimosso", + "list": { + "title": "Abbonamenti", + "addButton": "Aggiungi", + "tip": "Ricevi eventi tramite Sottoscrizione", + "item": { + "enabled": "Abilitato", + "disabled": "Disabilitato", + "credentialType": { + "api_key": "Chiave API", + "oauth2": "OAuth", + "unauthorized": "Manuale" + }, + "actions": { + "delete": "Elimina", + "deleteConfirm": { + "title": "Eliminare {{name}}?", + "success": "Abbonamento {{name}} eliminato con successo", + "error": "Impossibile eliminare l'abbonamento {{name}}", + "content": "Una volta eliminato, questo abbonamento non può essere recuperato. Si prega di confermare.", + "contentWithApps": "L'abbonamento attuale è referenziato da {{count}} applicazioni. La sua cancellazione farà sì che le applicazioni configurate smettano di ricevere gli eventi dell'abbonamento.", + "confirm": "Conferma eliminazione", + "cancel": "Annulla", + "confirmInputWarning": "Per favore inserisci il nome corretto per confermare.", + "confirmInputPlaceholder": "Inserisci \"{{name}}\" per confermare.", + "confirmInputTip": "Per favore inserisci “{{name}}” per confermare." + } + }, + "status": { + "active": "Attivo", + "inactive": "Inattivo" + }, + "usedByNum": "Utilizzato da {{num}} flussi di lavoro", + "noUsed": "Nessun flusso di lavoro utilizzato" + } + }, + "addType": { + "title": "Aggiungi abbonamento", + "description": "Scegli come vuoi creare il tuo abbonamento al trigger", + "options": { + "apikey": { + "title": "Crea con chiave API", + "description": "Crea automaticamente un abbonamento utilizzando le credenziali API" + }, + "oauth": { + "title": "Crea con OAuth", + "description": "Autorizza con una piattaforma di terze parti per creare un abbonamento", + "clientSettings": "Impostazioni del client OAuth", + "clientTitle": "Client OAuth", + "default": "Predefinito", + "custom": "Personalizzato" + }, + "manual": { + "title": "Configurazione manuale", + "description": "Incolla l'URL per creare un nuovo abbonamento", + "tip": "Configura manualmente l'URL sulla piattaforma di terze parti" + } + } + } + }, + "modal": { + "steps": { + "verify": "Verifica", + "configuration": "Configurazione" + }, + "common": { + "cancel": "Annulla", + "back": "Indietro", + "next": "Avanti", + "create": "Crea", + "verify": "Verifica", + "authorize": "Autorizzare", + "creating": "Creazione...", + "verifying": "Verifica in corso...", + "authorizing": "Autorizzazione in corso..." + }, + "oauthRedirectInfo": "Poiché non sono stati trovati segreti client di sistema per questo provider di strumenti, è necessario configurarlo manualmente; per redirect_uri, si prega di utilizzare", + "apiKey": { + "title": "Crea con chiave API", + "verify": { + "title": "Verifica credenziali", + "description": "Fornisci le tue credenziali API per verificare l'accesso", + "error": "Verifica delle credenziali fallita. Controlla la tua chiave API.", + "success": "Credenziali verificate con successo" + }, + "configuration": { + "title": "Configura abbonamento", + "description": "Imposta i parametri del tuo abbonamento" + } + }, + "oauth": { + "title": "Crea con OAuth", + "authorization": { + "title": "Autorizzazione OAuth", + "description": "Autorizza Dify ad accedere al tuo account", + "redirectUrl": "URL di reindirizzamento", + "redirectUrlHelp": "Utilizza questo URL nella configurazione della tua app OAuth", + "authorizeButton": "Autorizza con {{provider}}", + "waitingAuth": "In attesa di autorizzazione...", + "authSuccess": "Autorizzazione riuscita", + "authFailed": "Impossibile ottenere le informazioni di autorizzazione OAuth", + "waitingJump": "Autorizzato, in attesa del salto" + }, + "configuration": { + "title": "Configura abbonamento", + "description": "Configura i parametri del tuo abbonamento dopo l'autorizzazione", + "success": "Configurazione OAuth completata con successo", + "failed": "Configurazione OAuth non riuscita" + }, + "remove": { + "success": "Rimozione di OAuth riuscita", + "failed": "Rimozione OAuth fallita" + }, + "save": { + "success": "Configurazione OAuth salvata con successo" + } + }, + "manual": { + "title": "Configurazione manuale", + "description": "Configura manualmente il tuo abbonamento al webhook", + "logs": { + "title": "Registro delle richieste", + "request": "Richiesta", + "loading": "In attesa della richiesta da {{pluginName}}..." + } + }, + "form": { + "subscriptionName": { + "label": "Nome dell'abbonamento", + "placeholder": "Inserisci il nome dell'abbonamento", + "required": "Il nome dell'abbonamento è obbligatorio" + }, + "callbackUrl": { + "label": "URL di richiamata", + "description": "Questa URL riceverà eventi webhook", + "tooltip": "Fornire un endpoint accessibile pubblicamente che possa ricevere richieste di callback dal fornitore del trigger.", + "placeholder": "Generazione...", + "privateAddressWarning": "Questo URL sembra essere un indirizzo interno, il che potrebbe causare il fallimento delle richieste webhook. Puoi modificare TRIGGER_URL con un indirizzo pubblico." + } + }, + "errors": { + "createFailed": "Impossibile creare l'abbonamento", + "verifyFailed": "Impossibile verificare le credenziali", + "authFailed": "Autorizzazione fallita", + "networkError": "Errore di rete, riprova" + } + }, + "events": { + "title": "Eventi disponibili", + "description": "Eventi a cui questo plugin trigger può iscriversi", + "empty": "Nessun evento disponibile", + "event": "Evento", + "events": "Eventi", + "actionNum": "{{num}} {{event}} INCLUSO", + "item": { + "parameters": "parametri {{count}}", + "noParameters": "Nessun parametro" + }, + "output": "Uscita" + }, + "node": { + "status": { + "warning": "Disconnetti" + } + } +} diff --git a/web/i18n/it-IT/plugin-trigger.ts b/web/i18n/it-IT/plugin-trigger.ts deleted file mode 100644 index c09dfb7bf2..0000000000 --- a/web/i18n/it-IT/plugin-trigger.ts +++ /dev/null @@ -1,186 +0,0 @@ -const translation = { - subscription: { - title: 'Abbonamenti', - listNum: 'abbonamenti {{num}}', - empty: { - title: 'Nessun abbonamento', - button: 'Nuovo abbonamento', - }, - createButton: { - oauth: 'Nuovo abbonamento con OAuth', - apiKey: 'Nuovo abbonamento con chiave API', - manual: 'Incolla l\'URL per creare un nuovo abbonamento', - }, - createSuccess: 'Abbonamento creato con successo', - createFailed: 'Impossibile creare l\'abbonamento', - maxCount: 'Max {{num}} abbonamenti', - selectPlaceholder: 'Seleziona abbonamento', - noSubscriptionSelected: 'Nessun abbonamento selezionato', - subscriptionRemoved: 'Abbonamento rimosso', - list: { - title: 'Abbonamenti', - addButton: 'Aggiungi', - tip: 'Ricevi eventi tramite Sottoscrizione', - item: { - enabled: 'Abilitato', - disabled: 'Disabilitato', - credentialType: { - api_key: 'Chiave API', - oauth2: 'OAuth', - unauthorized: 'Manuale', - }, - actions: { - delete: 'Elimina', - deleteConfirm: { - title: 'Eliminare {{name}}?', - success: 'Abbonamento {{name}} eliminato con successo', - error: 'Impossibile eliminare l\'abbonamento {{name}}', - content: 'Una volta eliminato, questo abbonamento non può essere recuperato. Si prega di confermare.', - contentWithApps: 'L\'abbonamento attuale è referenziato da {{count}} applicazioni. La sua cancellazione farà sì che le applicazioni configurate smettano di ricevere gli eventi dell\'abbonamento.', - confirm: 'Conferma eliminazione', - cancel: 'Annulla', - confirmInputWarning: 'Per favore inserisci il nome corretto per confermare.', - confirmInputPlaceholder: 'Inserisci "{{name}}" per confermare.', - confirmInputTip: 'Per favore inserisci “{{name}}” per confermare.', - }, - }, - status: { - active: 'Attivo', - inactive: 'Inattivo', - }, - usedByNum: 'Utilizzato da {{num}} flussi di lavoro', - noUsed: 'Nessun flusso di lavoro utilizzato', - }, - }, - addType: { - title: 'Aggiungi abbonamento', - description: 'Scegli come vuoi creare il tuo abbonamento al trigger', - options: { - apikey: { - title: 'Crea con chiave API', - description: 'Crea automaticamente un abbonamento utilizzando le credenziali API', - }, - oauth: { - title: 'Crea con OAuth', - description: 'Autorizza con una piattaforma di terze parti per creare un abbonamento', - clientSettings: 'Impostazioni del client OAuth', - clientTitle: 'Client OAuth', - default: 'Predefinito', - custom: 'Personalizzato', - }, - manual: { - title: 'Configurazione manuale', - description: 'Incolla l\'URL per creare un nuovo abbonamento', - tip: 'Configura manualmente l\'URL sulla piattaforma di terze parti', - }, - }, - }, - }, - modal: { - steps: { - verify: 'Verifica', - configuration: 'Configurazione', - }, - common: { - cancel: 'Annulla', - back: 'Indietro', - next: 'Avanti', - create: 'Crea', - verify: 'Verifica', - authorize: 'Autorizzare', - creating: 'Creazione...', - verifying: 'Verifica in corso...', - authorizing: 'Autorizzazione in corso...', - }, - oauthRedirectInfo: 'Poiché non sono stati trovati segreti client di sistema per questo provider di strumenti, è necessario configurarlo manualmente; per redirect_uri, si prega di utilizzare', - apiKey: { - title: 'Crea con chiave API', - verify: { - title: 'Verifica credenziali', - description: 'Fornisci le tue credenziali API per verificare l\'accesso', - error: 'Verifica delle credenziali fallita. Controlla la tua chiave API.', - success: 'Credenziali verificate con successo', - }, - configuration: { - title: 'Configura abbonamento', - description: 'Imposta i parametri del tuo abbonamento', - }, - }, - oauth: { - title: 'Crea con OAuth', - authorization: { - title: 'Autorizzazione OAuth', - description: 'Autorizza Dify ad accedere al tuo account', - redirectUrl: 'URL di reindirizzamento', - redirectUrlHelp: 'Utilizza questo URL nella configurazione della tua app OAuth', - authorizeButton: 'Autorizza con {{provider}}', - waitingAuth: 'In attesa di autorizzazione...', - authSuccess: 'Autorizzazione riuscita', - authFailed: 'Impossibile ottenere le informazioni di autorizzazione OAuth', - waitingJump: 'Autorizzato, in attesa del salto', - }, - configuration: { - title: 'Configura abbonamento', - description: 'Configura i parametri del tuo abbonamento dopo l\'autorizzazione', - success: 'Configurazione OAuth completata con successo', - failed: 'Configurazione OAuth non riuscita', - }, - remove: { - success: 'Rimozione di OAuth riuscita', - failed: 'Rimozione OAuth fallita', - }, - save: { - success: 'Configurazione OAuth salvata con successo', - }, - }, - manual: { - title: 'Configurazione manuale', - description: 'Configura manualmente il tuo abbonamento al webhook', - logs: { - title: 'Registro delle richieste', - request: 'Richiesta', - loading: 'In attesa della richiesta da {{pluginName}}...', - }, - }, - form: { - subscriptionName: { - label: 'Nome dell\'abbonamento', - placeholder: 'Inserisci il nome dell\'abbonamento', - required: 'Il nome dell\'abbonamento è obbligatorio', - }, - callbackUrl: { - label: 'URL di richiamata', - description: 'Questa URL riceverà eventi webhook', - tooltip: 'Fornire un endpoint accessibile pubblicamente che possa ricevere richieste di callback dal fornitore del trigger.', - placeholder: 'Generazione...', - privateAddressWarning: 'Questo URL sembra essere un indirizzo interno, il che potrebbe causare il fallimento delle richieste webhook. Puoi modificare TRIGGER_URL con un indirizzo pubblico.', - }, - }, - errors: { - createFailed: 'Impossibile creare l\'abbonamento', - verifyFailed: 'Impossibile verificare le credenziali', - authFailed: 'Autorizzazione fallita', - networkError: 'Errore di rete, riprova', - }, - }, - events: { - title: 'Eventi disponibili', - description: 'Eventi a cui questo plugin trigger può iscriversi', - empty: 'Nessun evento disponibile', - event: 'Evento', - events: 'Eventi', - actionNum: '{{num}} {{event}} INCLUSO', - item: { - parameters: 'parametri {{count}}', - noParameters: 'Nessun parametro', - }, - output: 'Uscita', - }, - node: { - status: { - warning: 'Disconnetti', - }, - }, -} - -export default translation diff --git a/web/i18n/it-IT/plugin.json b/web/i18n/it-IT/plugin.json new file mode 100644 index 0000000000..b71c6778f5 --- /dev/null +++ b/web/i18n/it-IT/plugin.json @@ -0,0 +1,323 @@ +{ + "category": { + "extensions": "Estensioni", + "tools": "Utensileria", + "agents": "Strategie degli agenti", + "bundles": "Pacchetti", + "models": "Modelli", + "all": "Tutto", + "datasources": "Fonti dei dati", + "triggers": "Trigger" + }, + "categorySingle": { + "bundle": "Fascio", + "model": "Modello", + "agent": "Strategia dell'agente", + "extension": "Estensione", + "tool": "Strumento", + "datasource": "Origine dati", + "trigger": "Innescare" + }, + "list": { + "source": { + "local": "Installa dal file del pacchetto locale", + "github": "Installa da GitHub", + "marketplace": "Installa da Marketplace" + }, + "noInstalled": "Nessun plug-in installato", + "notFound": "Nessun plugin trovato" + }, + "source": { + "github": "GitHub", + "local": "File del pacchetto locale", + "marketplace": "Mercato" + }, + "detailPanel": { + "categoryTip": { + "github": "Installato da Github", + "marketplace": "Installato da Marketplace", + "local": "Plugin locale", + "debugging": "Plugin di debug" + }, + "operation": { + "detail": "Dettagli", + "remove": "Togliere", + "update": "Aggiornare", + "install": "Installare", + "viewDetail": "vedi dettagli", + "checkUpdate": "Controlla l'aggiornamento", + "info": "Informazioni sul plugin", + "back": "Indietro" + }, + "toolSelector": { + "paramsTip1": "Controlla i parametri di inferenza LLM.", + "descriptionPlaceholder": "Breve descrizione dello scopo dell'utensile, ad es. ottenere la temperatura per una posizione specifica.", + "unsupportedTitle": "Azione non supportata", + "uninstalledTitle": "Strumento non installato", + "params": "CONFIGURAZIONE DEL RAGIONAMENTO", + "uninstalledContent": "Questo plugin viene installato dal repository locale/GitHub. Si prega di utilizzare dopo l'installazione.", + "empty": "Fare clic sul pulsante '+' per aggiungere strumenti. È possibile aggiungere più strumenti.", + "toolLabel": "Strumento", + "unsupportedContent2": "Fare clic per cambiare versione.", + "title": "Aggiungi strumento", + "settings": "IMPOSTAZIONI UTENTE", + "uninstalledLink": "Gestisci nei plugin", + "placeholder": "Seleziona uno strumento...", + "unsupportedContent": "La versione del plug-in installata non fornisce questa azione.", + "descriptionLabel": "Descrizione dell'utensile", + "auto": "Automatico", + "paramsTip2": "Quando 'Automatico' è disattivato, viene utilizzato il valore predefinito.", + "toolSetting": "Impostazioni degli strumenti", + "unsupportedMCPTool": "La versione attualmente selezionata del plugin strategia agente non supporta gli strumenti MCP." + }, + "modelNum": "{{num}} MODELLI INCLUSI", + "endpointModalTitle": "Endpoint di configurazione", + "endpointsDocLink": "Visualizza il documento", + "endpointDisableTip": "Disabilita endpoint", + "switchVersion": "Versione switch", + "configureTool": "Strumento di configurazione", + "serviceOk": "Servizio OK", + "disabled": "Disabile", + "configureModel": "Configura modello", + "endpointModalDesc": "Una volta configurate, è possibile utilizzare le funzionalità fornite dal plug-in tramite endpoint API.", + "endpointDeleteContent": "Vuoi rimuovere {{name}}?", + "strategyNum": "{{num}} {{strategia}} INCLUSO", + "endpoints": "Endpoint", + "configureApp": "Configura l'app", + "endpointsTip": "Questo plug-in fornisce funzionalità specifiche tramite endpoint ed è possibile configurare più set di endpoint per l'area di lavoro corrente.", + "endpointDisableContent": "Vorresti disabilitare {{name}}?", + "endpointDeleteTip": "Rimuovi punto finale", + "endpointsEmpty": "Fare clic sul pulsante '+' per aggiungere un punto finale", + "actionNum": "{{num}} {{azione}} INCLUSO", + "deprecation": { + "reason": { + "noMaintainer": "nessun manutentore", + "ownershipTransferred": "proprietà trasferita", + "businessAdjustments": "adeguamenti aziendali" + }, + "onlyReason": "Questo plugin è stato deprecato a causa di {{deprecatedReason}} e non verrà più aggiornato.", + "fullMessage": "Questo plugin è stato deprecato a causa di {{deprecatedReason}} e non verrà più aggiornato. Si prega di utilizzare {{-alternativePluginId}} invece.", + "noReason": "Questo plugin è stato deprecato e non sarà più aggiornato." + } + }, + "debugInfo": { + "title": "Debug", + "viewDocs": "Visualizza documenti" + }, + "privilege": { + "whoCanDebug": "Chi può eseguire il debug dei plugin?", + "admins": "Amministratori", + "title": "Preferenze del plugin", + "noone": "Nessuno", + "everyone": "Ciascuno", + "whoCanInstall": "Chi può installare e gestire i plugin?" + }, + "pluginInfoModal": { + "packageName": "Pacco", + "release": "Rilascio", + "repository": "Deposito", + "title": "Informazioni sul plugin" + }, + "action": { + "usedInApps": "Questo plugin viene utilizzato nelle app {{num}}.", + "delete": "Rimuovi plugin", + "pluginInfo": "Informazioni sul plugin", + "checkForUpdates": "Controlla gli aggiornamenti", + "deleteContentRight": "plugin?", + "deleteContentLeft": "Vorresti rimuovere" + }, + "installModal": { + "labels": { + "version": "Versione", + "repository": "Deposito", + "package": "Pacco" + }, + "next": "Prossimo", + "pluginLoadErrorDesc": "Questo plugin non verrà installato", + "installComplete": "Installazione completata", + "dropPluginToInstall": "Rilascia qui il pacchetto del plug-in per installarlo", + "installedSuccessfully": "Installazione riuscita", + "installedSuccessfullyDesc": "Il plug-in è stato installato correttamente.", + "installPlugin": "Installa il plugin", + "fromTrustSource": "Assicurati di installare i plug-in solo da una fonte attendibile.", + "uploadFailed": "Caricamento non riuscito", + "uploadingPackage": "Caricamento di {{packageName}}...", + "pluginLoadError": "Errore di caricamento del plugin", + "cancel": "Annulla", + "readyToInstallPackage": "Sto per installare il seguente plugin", + "installFailed": "Installazione non riuscita", + "back": "Indietro", + "close": "Chiudere", + "installFailedDesc": "Il plug-in è stato installato non riuscito.", + "readyToInstall": "Sto per installare il seguente plugin", + "installing": "Installazione...", + "install": "Installare", + "readyToInstallPackages": "Sto per installare i seguenti plugin {{num}}", + "installWarning": "Questo plugin non è consentito essere installato." + }, + "installFromGitHub": { + "installedSuccessfully": "Installazione riuscita", + "selectPackagePlaceholder": "Seleziona un pacchetto", + "installNote": "Assicurati di installare i plug-in solo da una fonte attendibile.", + "updatePlugin": "Aggiorna il plugin da GitHub", + "uploadFailed": "Caricamento non riuscito", + "gitHubRepo": "Repository GitHub", + "installPlugin": "Installa il plugin da GitHub", + "installFailed": "Installazione non riuscita", + "selectVersionPlaceholder": "Seleziona una versione", + "selectPackage": "Seleziona il pacchetto", + "selectVersion": "Seleziona la versione" + }, + "upgrade": { + "upgrade": "Installare", + "usedInApps": "Utilizzato nelle app {{num}}", + "title": "Installa il plugin", + "description": "Sto per installare il seguente plugin", + "upgrading": "Installazione...", + "successfulTitle": "Installazione riuscita", + "close": "Chiudere" + }, + "error": { + "fetchReleasesError": "Impossibile recuperare le release. Riprova più tardi.", + "noReleasesFound": "Nessuna pubblicazione trovata. Controlla il repository GitHub o l'URL di input.", + "inValidGitHubUrl": "URL GitHub non valido. Inserisci un URL valido nel formato: https://github.com/owner/repo" + }, + "marketplace": { + "sortOption": { + "recentlyUpdated": "Aggiornato di recente", + "firstReleased": "Prima pubblicazione", + "newlyReleased": "Appena uscito", + "mostPopular": "I più popolari" + }, + "moreFrom": "Altro da Marketplace", + "difyMarketplace": "Mercato Dify", + "discover": "Scoprire", + "pluginsResult": "{{num}} risultati", + "noPluginFound": "Nessun plug-in trovato", + "empower": "Potenzia lo sviluppo dell'intelligenza artificiale", + "sortBy": "Ordina per", + "and": "e", + "viewMore": "Vedi di più", + "verifiedTip": "Verificato da Dify", + "partnerTip": "Verificato da un partner Dify" + }, + "task": { + "clearAll": "Cancella tutto", + "installError": "Impossibile installare i plugin {{errorLength}}, clicca per visualizzare", + "installing": "Installazione dei plugin {{installingLength}}, 0 fatto.", + "installedError": "Impossibile installare i plugin di {{errorLength}}", + "installingWithError": "Installazione dei plugin {{installingLength}}, {{successLength}} successo, {{errorLength}} fallito", + "installingWithSuccess": "Installazione dei plugin {{installingLength}}, {{successLength}} successo.", + "installSuccess": "{{successLength}} plugins installed successfully", + "installed": "Installed", + "runningPlugins": "Installing Plugins", + "successPlugins": "Successfully Installed Plugins", + "errorPlugins": "Failed to Install Plugins" + }, + "searchInMarketplace": "Cerca nel Marketplace", + "endpointsEnabled": "{{num}} set di endpoint abilitati", + "from": "Da", + "installAction": "Installare", + "allCategories": "Tutte le categorie", + "fromMarketplace": "Dal Marketplace", + "searchTools": "Strumenti di ricerca...", + "searchCategories": "Cerca Categorie", + "install": "{{num}} installazioni", + "findMoreInMarketplace": "Scopri di più su Marketplace", + "installPlugin": "Installa il plugin", + "searchPlugins": "Plugin di ricerca", + "search": "Ricerca", + "installFrom": "INSTALLA DA", + "metadata": { + "title": "Plugin" + }, + "difyVersionNotCompatible": "L'attuale versione di Dify non è compatibile con questo plugin, si prega di aggiornare alla versione minima richiesta: {{minimalDifyVersion}}", + "requestAPlugin": "Richiedi un plugin", + "publishPlugins": "Pubblicare plugin", + "auth": { + "custom": "Personalizzato", + "saveAndAuth": "Salva e Autorizza", + "authorization": "Autorizzazione", + "setupOAuth": "Imposta client OAuth", + "setDefault": "Imposta come predefinito", + "useOAuth": "Usa OAuth", + "default": "Predefinito", + "workspaceDefault": "Spazio di Lavoro Predefinito", + "addOAuth": "Aggiungi OAuth", + "oauthClient": "Client OAuth", + "authorizations": "Autorizzazioni", + "authorizationName": "Nome di autorizzazione", + "useApi": "Usa la chiave API", + "useOAuthAuth": "Usa l'autorizzazione OAuth", + "saveOnly": "Salva solo", + "useApiAuthDesc": "Dopo aver configurato le credenziali, tutti i membri all'interno dello spazio di lavoro possono utilizzare questo strumento quando orchestrano applicazioni.", + "addApi": "Aggiungi la chiave API", + "authRemoved": "Autore rimosso", + "oauthClientSettings": "Impostazioni del client OAuth", + "useApiAuth": "Configurazione dell'autorizzazione della chiave API", + "clientInfo": "Poiché non sono stati trovati segreti client di sistema per questo fornitore di strumenti, è necessario configurarlo manualmente. Per redirect_uri, si prega di utilizzare", + "unavailable": "Non disponibile", + "customCredentialUnavailable": "Le credenziali personalizzate attualmente non sono disponibili", + "credentialUnavailable": "Credenziali attualmente non disponibili. Si prega di contattare l'amministratore.", + "credentialUnavailableInButton": "Credenziali non disponibili", + "emptyAuth": "Configurare l'autenticazione", + "connectedWorkspace": "Area di lavoro connessa" + }, + "deprecated": "Deprecato", + "autoUpdate": { + "strategy": { + "disabled": { + "name": "Disabile", + "description": "I plugin non si aggiorneranno automaticamente" + }, + "fixOnly": { + "name": "Ripara solo", + "selectedDescription": "Aggiornamento automatico solo per versioni patch", + "description": "Aggiornamento automatico solo per le versioni patch (ad es., 1.0.1 → 1.0.2). Le modifiche delle versioni minori non attiveranno aggiornamenti." + }, + "latest": { + "selectedDescription": "Aggiorna sempre all'ultima versione", + "description": "Aggiorna sempre all'ultima versione", + "name": "Ultimo" + } + }, + "upgradeMode": { + "exclude": "Escludi selezionato", + "all": "Aggiorna tutto", + "partial": "Solo selezionati" + }, + "upgradeModePlaceholder": { + "exclude": "I plugin selezionati non verranno aggiornati automaticamente", + "partial": "Solo i plugin selezionati si aggiorneranno automaticamente. Attualmente non ci sono plugin selezionati, quindi nessun plugin si aggiornerà automaticamente." + }, + "operation": { + "clearAll": "Cancella tutto", + "select": "Seleziona i plugin" + }, + "pluginDowngradeWarning": { + "title": "Downgrade del plugin", + "downgrade": "Comunque esegui il downgrade", + "exclude": "Escludi dall'aggiornamento automatico", + "description": "L'aggiornamento automatico è attualmente abilitato per questo plugin. Il downgrade della versione potrebbe causare la sovrascrittura delle tue modifiche durante il prossimo aggiornamento automatico." + }, + "noPluginPlaceholder": { + "noFound": "Nessun plugin trovato", + "noInstalled": "Nessun plugin installato" + }, + "specifyPluginsToUpdate": "Specifica i plugin da aggiornare", + "updateTime": "Tempo di aggiornamento", + "automaticUpdates": "Aggiornamenti automatici", + "updateSettings": "Aggiorna impostazioni", + "nextUpdateTime": "Prossimo aggiornamento automatico: {{time}}", + "partialUPdate": "Solo i seguenti {{num}} plugin si aggiorneranno automaticamente", + "changeTimezone": "Per cambiare il fuso orario, vai su Impostazioni", + "excludeUpdate": "I seguenti {{num}} plugin non si aggiorneranno automaticamente", + "updateTimeTitle": "Tempo di aggiornamento" + }, + "readmeInfo": { + "title": "LEGGIMI", + "needHelpCheckReadme": "Hai bisogno di aiuto? Controlla il README.", + "noReadmeAvailable": "Nessun README disponibile", + "failedToFetch": "Impossibile recuperare il README" + } +} diff --git a/web/i18n/it-IT/plugin.ts b/web/i18n/it-IT/plugin.ts deleted file mode 100644 index aaa5803550..0000000000 --- a/web/i18n/it-IT/plugin.ts +++ /dev/null @@ -1,325 +0,0 @@ -const translation = { - category: { - extensions: 'Estensioni', - tools: 'Utensileria', - agents: 'Strategie degli agenti', - bundles: 'Pacchetti', - models: 'Modelli', - all: 'Tutto', - datasources: 'Fonti dei dati', - triggers: 'Trigger', - }, - categorySingle: { - bundle: 'Fascio', - model: 'Modello', - agent: 'Strategia dell\'agente', - extension: 'Estensione', - tool: 'Strumento', - datasource: 'Origine dati', - trigger: 'Innescare', - }, - list: { - source: { - local: 'Installa dal file del pacchetto locale', - github: 'Installa da GitHub', - marketplace: 'Installa da Marketplace', - }, - noInstalled: 'Nessun plug-in installato', - notFound: 'Nessun plugin trovato', - }, - source: { - github: 'GitHub', - local: 'File del pacchetto locale', - marketplace: 'Mercato', - }, - detailPanel: { - categoryTip: { - github: 'Installato da Github', - marketplace: 'Installato da Marketplace', - local: 'Plugin locale', - debugging: 'Plugin di debug', - }, - operation: { - detail: 'Dettagli', - remove: 'Togliere', - update: 'Aggiornare', - install: 'Installare', - viewDetail: 'vedi dettagli', - checkUpdate: 'Controlla l\'aggiornamento', - info: 'Informazioni sul plugin', - back: 'Indietro', - }, - toolSelector: { - paramsTip1: 'Controlla i parametri di inferenza LLM.', - descriptionPlaceholder: 'Breve descrizione dello scopo dell\'utensile, ad es. ottenere la temperatura per una posizione specifica.', - unsupportedTitle: 'Azione non supportata', - uninstalledTitle: 'Strumento non installato', - params: 'CONFIGURAZIONE DEL RAGIONAMENTO', - uninstalledContent: 'Questo plugin viene installato dal repository locale/GitHub. Si prega di utilizzare dopo l\'installazione.', - empty: 'Fare clic sul pulsante \'+\' per aggiungere strumenti. È possibile aggiungere più strumenti.', - toolLabel: 'Strumento', - unsupportedContent2: 'Fare clic per cambiare versione.', - title: 'Aggiungi strumento', - settings: 'IMPOSTAZIONI UTENTE', - uninstalledLink: 'Gestisci nei plugin', - placeholder: 'Seleziona uno strumento...', - unsupportedContent: 'La versione del plug-in installata non fornisce questa azione.', - descriptionLabel: 'Descrizione dell\'utensile', - auto: 'Automatico', - paramsTip2: 'Quando \'Automatico\' è disattivato, viene utilizzato il valore predefinito.', - toolSetting: 'Impostazioni degli strumenti', - unsupportedMCPTool: 'La versione attualmente selezionata del plugin strategia agente non supporta gli strumenti MCP.', - }, - modelNum: '{{num}} MODELLI INCLUSI', - endpointModalTitle: 'Endpoint di configurazione', - endpointsDocLink: 'Visualizza il documento', - endpointDisableTip: 'Disabilita endpoint', - switchVersion: 'Versione switch', - configureTool: 'Strumento di configurazione', - serviceOk: 'Servizio OK', - disabled: 'Disabile', - configureModel: 'Configura modello', - endpointModalDesc: 'Una volta configurate, è possibile utilizzare le funzionalità fornite dal plug-in tramite endpoint API.', - endpointDeleteContent: 'Vuoi rimuovere {{name}}?', - strategyNum: '{{num}} {{strategia}} INCLUSO', - endpoints: 'Endpoint', - configureApp: 'Configura l\'app', - endpointsTip: 'Questo plug-in fornisce funzionalità specifiche tramite endpoint ed è possibile configurare più set di endpoint per l\'area di lavoro corrente.', - endpointDisableContent: 'Vorresti disabilitare {{name}}?', - endpointDeleteTip: 'Rimuovi punto finale', - endpointsEmpty: 'Fare clic sul pulsante \'+\' per aggiungere un punto finale', - actionNum: '{{num}} {{azione}} INCLUSO', - deprecation: { - reason: { - noMaintainer: 'nessun manutentore', - ownershipTransferred: 'proprietà trasferita', - businessAdjustments: 'adeguamenti aziendali', - }, - onlyReason: 'Questo plugin è stato deprecato a causa di {{deprecatedReason}} e non verrà più aggiornato.', - fullMessage: 'Questo plugin è stato deprecato a causa di {{deprecatedReason}} e non verrà più aggiornato. Si prega di utilizzare {{-alternativePluginId}} invece.', - noReason: 'Questo plugin è stato deprecato e non sarà più aggiornato.', - }, - }, - debugInfo: { - title: 'Debug', - viewDocs: 'Visualizza documenti', - }, - privilege: { - whoCanDebug: 'Chi può eseguire il debug dei plugin?', - admins: 'Amministratori', - title: 'Preferenze del plugin', - noone: 'Nessuno', - everyone: 'Ciascuno', - whoCanInstall: 'Chi può installare e gestire i plugin?', - }, - pluginInfoModal: { - packageName: 'Pacco', - release: 'Rilascio', - repository: 'Deposito', - title: 'Informazioni sul plugin', - }, - action: { - usedInApps: 'Questo plugin viene utilizzato nelle app {{num}}.', - delete: 'Rimuovi plugin', - pluginInfo: 'Informazioni sul plugin', - checkForUpdates: 'Controlla gli aggiornamenti', - deleteContentRight: 'plugin?', - deleteContentLeft: 'Vorresti rimuovere', - }, - installModal: { - labels: { - version: 'Versione', - repository: 'Deposito', - package: 'Pacco', - }, - next: 'Prossimo', - pluginLoadErrorDesc: 'Questo plugin non verrà installato', - installComplete: 'Installazione completata', - dropPluginToInstall: 'Rilascia qui il pacchetto del plug-in per installarlo', - installedSuccessfully: 'Installazione riuscita', - installedSuccessfullyDesc: 'Il plug-in è stato installato correttamente.', - installPlugin: 'Installa il plugin', - fromTrustSource: 'Assicurati di installare i plug-in solo da una fonte attendibile.', - uploadFailed: 'Caricamento non riuscito', - uploadingPackage: 'Caricamento di {{packageName}}...', - pluginLoadError: 'Errore di caricamento del plugin', - cancel: 'Annulla', - readyToInstallPackage: 'Sto per installare il seguente plugin', - installFailed: 'Installazione non riuscita', - back: 'Indietro', - close: 'Chiudere', - installFailedDesc: 'Il plug-in è stato installato non riuscito.', - readyToInstall: 'Sto per installare il seguente plugin', - installing: 'Installazione...', - install: 'Installare', - readyToInstallPackages: 'Sto per installare i seguenti plugin {{num}}', - installWarning: 'Questo plugin non è consentito essere installato.', - }, - installFromGitHub: { - installedSuccessfully: 'Installazione riuscita', - selectPackagePlaceholder: 'Seleziona un pacchetto', - installNote: 'Assicurati di installare i plug-in solo da una fonte attendibile.', - updatePlugin: 'Aggiorna il plugin da GitHub', - uploadFailed: 'Caricamento non riuscito', - gitHubRepo: 'Repository GitHub', - installPlugin: 'Installa il plugin da GitHub', - installFailed: 'Installazione non riuscita', - selectVersionPlaceholder: 'Seleziona una versione', - selectPackage: 'Seleziona il pacchetto', - selectVersion: 'Seleziona la versione', - }, - upgrade: { - upgrade: 'Installare', - usedInApps: 'Utilizzato nelle app {{num}}', - title: 'Installa il plugin', - description: 'Sto per installare il seguente plugin', - upgrading: 'Installazione...', - successfulTitle: 'Installazione riuscita', - close: 'Chiudere', - }, - error: { - fetchReleasesError: 'Impossibile recuperare le release. Riprova più tardi.', - noReleasesFound: 'Nessuna pubblicazione trovata. Controlla il repository GitHub o l\'URL di input.', - inValidGitHubUrl: 'URL GitHub non valido. Inserisci un URL valido nel formato: https://github.com/owner/repo', - }, - marketplace: { - sortOption: { - recentlyUpdated: 'Aggiornato di recente', - firstReleased: 'Prima pubblicazione', - newlyReleased: 'Appena uscito', - mostPopular: 'I più popolari', - }, - moreFrom: 'Altro da Marketplace', - difyMarketplace: 'Mercato Dify', - discover: 'Scoprire', - pluginsResult: '{{num}} risultati', - noPluginFound: 'Nessun plug-in trovato', - empower: 'Potenzia lo sviluppo dell\'intelligenza artificiale', - sortBy: 'Ordina per', - and: 'e', - viewMore: 'Vedi di più', - verifiedTip: 'Verificato da Dify', - partnerTip: 'Verificato da un partner Dify', - }, - task: { - clearAll: 'Cancella tutto', - installError: 'Impossibile installare i plugin {{errorLength}}, clicca per visualizzare', - installing: 'Installazione dei plugin {{installingLength}}, 0 fatto.', - installedError: 'Impossibile installare i plugin di {{errorLength}}', - installingWithError: 'Installazione dei plugin {{installingLength}}, {{successLength}} successo, {{errorLength}} fallito', - installingWithSuccess: 'Installazione dei plugin {{installingLength}}, {{successLength}} successo.', - installSuccess: '{{successLength}} plugins installed successfully', - installed: 'Installed', - runningPlugins: 'Installing Plugins', - successPlugins: 'Successfully Installed Plugins', - errorPlugins: 'Failed to Install Plugins', - }, - searchInMarketplace: 'Cerca nel Marketplace', - endpointsEnabled: '{{num}} set di endpoint abilitati', - from: 'Da', - installAction: 'Installare', - allCategories: 'Tutte le categorie', - fromMarketplace: 'Dal Marketplace', - searchTools: 'Strumenti di ricerca...', - searchCategories: 'Cerca Categorie', - install: '{{num}} installazioni', - findMoreInMarketplace: 'Scopri di più su Marketplace', - installPlugin: 'Installa il plugin', - searchPlugins: 'Plugin di ricerca', - search: 'Ricerca', - installFrom: 'INSTALLA DA', - metadata: { - title: 'Plugin', - }, - difyVersionNotCompatible: 'L\'attuale versione di Dify non è compatibile con questo plugin, si prega di aggiornare alla versione minima richiesta: {{minimalDifyVersion}}', - requestAPlugin: 'Richiedi un plugin', - publishPlugins: 'Pubblicare plugin', - auth: { - custom: 'Personalizzato', - saveAndAuth: 'Salva e Autorizza', - authorization: 'Autorizzazione', - setupOAuth: 'Imposta client OAuth', - setDefault: 'Imposta come predefinito', - useOAuth: 'Usa OAuth', - default: 'Predefinito', - workspaceDefault: 'Spazio di Lavoro Predefinito', - addOAuth: 'Aggiungi OAuth', - oauthClient: 'Client OAuth', - authorizations: 'Autorizzazioni', - authorizationName: 'Nome di autorizzazione', - useApi: 'Usa la chiave API', - useOAuthAuth: 'Usa l\'autorizzazione OAuth', - saveOnly: 'Salva solo', - useApiAuthDesc: 'Dopo aver configurato le credenziali, tutti i membri all\'interno dello spazio di lavoro possono utilizzare questo strumento quando orchestrano applicazioni.', - addApi: 'Aggiungi la chiave API', - authRemoved: 'Autore rimosso', - oauthClientSettings: 'Impostazioni del client OAuth', - useApiAuth: 'Configurazione dell\'autorizzazione della chiave API', - clientInfo: 'Poiché non sono stati trovati segreti client di sistema per questo fornitore di strumenti, è necessario configurarlo manualmente. Per redirect_uri, si prega di utilizzare', - unavailable: 'Non disponibile', - customCredentialUnavailable: 'Le credenziali personalizzate attualmente non sono disponibili', - credentialUnavailable: 'Credenziali attualmente non disponibili. Si prega di contattare l\'amministratore.', - credentialUnavailableInButton: 'Credenziali non disponibili', - emptyAuth: 'Configurare l\'autenticazione', - connectedWorkspace: 'Area di lavoro connessa', - }, - deprecated: 'Deprecato', - autoUpdate: { - strategy: { - disabled: { - name: 'Disabile', - description: 'I plugin non si aggiorneranno automaticamente', - }, - fixOnly: { - name: 'Ripara solo', - selectedDescription: 'Aggiornamento automatico solo per versioni patch', - description: 'Aggiornamento automatico solo per le versioni patch (ad es., 1.0.1 → 1.0.2). Le modifiche delle versioni minori non attiveranno aggiornamenti.', - }, - latest: { - selectedDescription: 'Aggiorna sempre all\'ultima versione', - description: 'Aggiorna sempre all\'ultima versione', - name: 'Ultimo', - }, - }, - upgradeMode: { - exclude: 'Escludi selezionato', - all: 'Aggiorna tutto', - partial: 'Solo selezionati', - }, - upgradeModePlaceholder: { - exclude: 'I plugin selezionati non verranno aggiornati automaticamente', - partial: 'Solo i plugin selezionati si aggiorneranno automaticamente. Attualmente non ci sono plugin selezionati, quindi nessun plugin si aggiornerà automaticamente.', - }, - operation: { - clearAll: 'Cancella tutto', - select: 'Seleziona i plugin', - }, - pluginDowngradeWarning: { - title: 'Downgrade del plugin', - downgrade: 'Comunque esegui il downgrade', - exclude: 'Escludi dall\'aggiornamento automatico', - description: 'L\'aggiornamento automatico è attualmente abilitato per questo plugin. Il downgrade della versione potrebbe causare la sovrascrittura delle tue modifiche durante il prossimo aggiornamento automatico.', - }, - noPluginPlaceholder: { - noFound: 'Nessun plugin trovato', - noInstalled: 'Nessun plugin installato', - }, - specifyPluginsToUpdate: 'Specifica i plugin da aggiornare', - updateTime: 'Tempo di aggiornamento', - automaticUpdates: 'Aggiornamenti automatici', - updateSettings: 'Aggiorna impostazioni', - nextUpdateTime: 'Prossimo aggiornamento automatico: {{time}}', - partialUPdate: 'Solo i seguenti {{num}} plugin si aggiorneranno automaticamente', - changeTimezone: 'Per cambiare il fuso orario, vai su Impostazioni', - excludeUpdate: 'I seguenti {{num}} plugin non si aggiorneranno automaticamente', - updateTimeTitle: 'Tempo di aggiornamento', - }, - readmeInfo: { - title: 'LEGGIMI', - needHelpCheckReadme: 'Hai bisogno di aiuto? Controlla il README.', - noReadmeAvailable: 'Nessun README disponibile', - failedToFetch: 'Impossibile recuperare il README', - }, -} - -export default translation diff --git a/web/i18n/it-IT/register.json b/web/i18n/it-IT/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/it-IT/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/it-IT/register.ts b/web/i18n/it-IT/register.ts deleted file mode 100644 index 928649474b..0000000000 --- a/web/i18n/it-IT/register.ts +++ /dev/null @@ -1,4 +0,0 @@ -const translation = { -} - -export default translation diff --git a/web/i18n/it-IT/run-log.json b/web/i18n/it-IT/run-log.json new file mode 100644 index 0000000000..2fbf6fcc17 --- /dev/null +++ b/web/i18n/it-IT/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "INPUT", + "result": "RISULTATO", + "detail": "DETTAGLIO", + "tracing": "TRACCIAMENTO", + "resultPanel": { + "status": "STATO", + "time": "TEMPO TRASCORSO", + "tokens": "TOKEN TOTALI" + }, + "meta": { + "title": "METADATI", + "status": "Stato", + "version": "Versione", + "executor": "Esecutore", + "startTime": "Ora di Inizio", + "time": "Tempo Trascorso", + "tokens": "Token Totali", + "steps": "Fasi Eseguite" + }, + "resultEmpty": { + "title": "Questa esecuzione ha prodotto solo output in formato JSON,", + "tipLeft": "per favore vai al ", + "link": "pannello dei dettagli", + "tipRight": " per visualizzarlo." + }, + "circularInvocationTip": "C'è una chiamata circolare di strumenti/nodi nel flusso di lavoro corrente.", + "actionLogs": "Registri delle azioni" +} diff --git a/web/i18n/it-IT/run-log.ts b/web/i18n/it-IT/run-log.ts deleted file mode 100644 index 0627e5bf4e..0000000000 --- a/web/i18n/it-IT/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -const translation = { - input: 'INPUT', - result: 'RISULTATO', - detail: 'DETTAGLIO', - tracing: 'TRACCIAMENTO', - resultPanel: { - status: 'STATO', - time: 'TEMPO TRASCORSO', - tokens: 'TOKEN TOTALI', - }, - meta: { - title: 'METADATI', - status: 'Stato', - version: 'Versione', - executor: 'Esecutore', - startTime: 'Ora di Inizio', - time: 'Tempo Trascorso', - tokens: 'Token Totali', - steps: 'Fasi Eseguite', - }, - resultEmpty: { - title: 'Questa esecuzione ha prodotto solo output in formato JSON,', - tipLeft: 'per favore vai al ', - link: 'pannello dei dettagli', - tipRight: ' per visualizzarlo.', - }, - circularInvocationTip: 'C\'è una chiamata circolare di strumenti/nodi nel flusso di lavoro corrente.', - actionLogs: 'Registri delle azioni', -} - -export default translation diff --git a/web/i18n/it-IT/share.json b/web/i18n/it-IT/share.json new file mode 100644 index 0000000000..59aff79afa --- /dev/null +++ b/web/i18n/it-IT/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "", + "appUnavailable": "L'app non è disponibile", + "appUnknownError": "L'app non è disponibile" + }, + "chat": { + "newChat": "Nuova chat", + "pinnedTitle": "Fissati", + "unpinnedTitle": "Chat", + "newChatDefaultName": "Nuova conversazione", + "resetChat": "Reimposta conversazione", + "poweredBy": "Powered by", + "prompt": "Prompt", + "privatePromptConfigTitle": "Impostazioni conversazione", + "publicPromptConfigTitle": "Prompt iniziale", + "configStatusDes": "Prima di iniziare, puoi modificare le impostazioni della conversazione", + "configDisabled": "Le impostazioni della sessione precedente sono state utilizzate per questa sessione.", + "startChat": "Inizia Chat", + "privacyPolicyLeft": "Per favore leggi la ", + "privacyPolicyMiddle": "politica sulla privacy", + "privacyPolicyRight": " fornita dallo sviluppatore dell'app.", + "deleteConversation": { + "title": "Elimina conversazione", + "content": "Sei sicuro di voler eliminare questa conversazione?" + }, + "tryToSolve": "Prova a risolvere", + "temporarySystemIssue": "Spiacente, problema temporaneo del sistema.", + "expand": "Espandi", + "collapse": "Riduci", + "newChatTip": "Già in una nuova chat", + "chatSettingsTitle": "Nuova configurazione della chat", + "chatFormTip": "Le impostazioni della chat non possono essere modificate dopo che la chat è iniziata.", + "viewChatSettings": "Visualizza le impostazioni della chat" + }, + "generation": { + "tabs": { + "create": "Esegui una volta", + "batch": "Esegui batch", + "saved": "Salvato" + }, + "savedNoData": { + "title": "Non hai ancora salvato un risultato!", + "description": "Inizia a generare contenuti e trova i tuoi risultati salvati qui.", + "startCreateContent": "Inizia a creare contenuti" + }, + "title": "Completamento AI", + "queryTitle": "Contenuto della query", + "completionResult": "Risultato del completamento", + "queryPlaceholder": "Scrivi il contenuto della tua query...", + "run": "Esegui", + "copy": "Copia", + "resultTitle": "Completamento AI", + "noData": "L'AI ti darà ciò che desideri qui.", + "csvUploadTitle": "Trascina e rilascia il tuo file CSV qui, oppure ", + "browse": "sfoglia", + "csvStructureTitle": "Il file CSV deve rispettare la seguente struttura:", + "downloadTemplate": "Scarica qui il modello", + "field": "Campo", + "batchFailed": { + "info": "{{num}} esecuzioni fallite", + "retry": "Riprova", + "outputPlaceholder": "Nessun contenuto di output" + }, + "errorMsg": { + "empty": "Per favore inserisci contenuto nel file caricato.", + "fileStructNotMatch": "Il file CSV caricato non corrisponde alla struttura.", + "emptyLine": "Riga {{rowIndex}} è vuota", + "invalidLine": "Riga {{rowIndex}}: il valore di {{varName}} non può essere vuoto", + "moreThanMaxLengthLine": "Riga {{rowIndex}}: il valore di {{varName}} non può essere superiore a {{maxLength}} caratteri", + "atLeastOne": "Per favore inserisci almeno una riga nel file caricato." + }, + "execution": "Esegui", + "executions": "{{num}} esecuzioni", + "stopRun": "Ferma l'esecuzione" + }, + "login": { + "backToHome": "Torna alla home" + } +} diff --git a/web/i18n/it-IT/share.ts b/web/i18n/it-IT/share.ts deleted file mode 100644 index 02a50a9963..0000000000 --- a/web/i18n/it-IT/share.ts +++ /dev/null @@ -1,88 +0,0 @@ -const translation = { - common: { - welcome: '', - appUnavailable: 'L\'app non è disponibile', - appUnknownError: 'L\'app non è disponibile', - }, - chat: { - newChat: 'Nuova chat', - pinnedTitle: 'Fissati', - unpinnedTitle: 'Chat', - newChatDefaultName: 'Nuova conversazione', - resetChat: 'Reimposta conversazione', - poweredBy: 'Powered by', - prompt: 'Prompt', - privatePromptConfigTitle: 'Impostazioni conversazione', - publicPromptConfigTitle: 'Prompt iniziale', - configStatusDes: - 'Prima di iniziare, puoi modificare le impostazioni della conversazione', - configDisabled: - 'Le impostazioni della sessione precedente sono state utilizzate per questa sessione.', - startChat: 'Inizia Chat', - privacyPolicyLeft: 'Per favore leggi la ', - privacyPolicyMiddle: 'politica sulla privacy', - privacyPolicyRight: ' fornita dallo sviluppatore dell\'app.', - deleteConversation: { - title: 'Elimina conversazione', - content: 'Sei sicuro di voler eliminare questa conversazione?', - }, - tryToSolve: 'Prova a risolvere', - temporarySystemIssue: 'Spiacente, problema temporaneo del sistema.', - expand: 'Espandi', - collapse: 'Riduci', - newChatTip: 'Già in una nuova chat', - chatSettingsTitle: 'Nuova configurazione della chat', - chatFormTip: 'Le impostazioni della chat non possono essere modificate dopo che la chat è iniziata.', - viewChatSettings: 'Visualizza le impostazioni della chat', - }, - generation: { - tabs: { - create: 'Esegui una volta', - batch: 'Esegui batch', - saved: 'Salvato', - }, - savedNoData: { - title: 'Non hai ancora salvato un risultato!', - description: - 'Inizia a generare contenuti e trova i tuoi risultati salvati qui.', - startCreateContent: 'Inizia a creare contenuti', - }, - title: 'Completamento AI', - queryTitle: 'Contenuto della query', - completionResult: 'Risultato del completamento', - queryPlaceholder: 'Scrivi il contenuto della tua query...', - run: 'Esegui', - copy: 'Copia', - resultTitle: 'Completamento AI', - noData: 'L\'AI ti darà ciò che desideri qui.', - csvUploadTitle: 'Trascina e rilascia il tuo file CSV qui, oppure ', - browse: 'sfoglia', - csvStructureTitle: 'Il file CSV deve rispettare la seguente struttura:', - downloadTemplate: 'Scarica qui il modello', - field: 'Campo', - batchFailed: { - info: '{{num}} esecuzioni fallite', - retry: 'Riprova', - outputPlaceholder: 'Nessun contenuto di output', - }, - errorMsg: { - empty: 'Per favore inserisci contenuto nel file caricato.', - fileStructNotMatch: - 'Il file CSV caricato non corrisponde alla struttura.', - emptyLine: 'Riga {{rowIndex}} è vuota', - invalidLine: - 'Riga {{rowIndex}}: il valore di {{varName}} non può essere vuoto', - moreThanMaxLengthLine: - 'Riga {{rowIndex}}: il valore di {{varName}} non può essere superiore a {{maxLength}} caratteri', - atLeastOne: 'Per favore inserisci almeno una riga nel file caricato.', - }, - execution: 'Esegui', - executions: '{{num}} esecuzioni', - stopRun: 'Ferma l\'esecuzione', - }, - login: { - backToHome: 'Torna alla home', - }, -} - -export default translation diff --git a/web/i18n/it-IT/time.json b/web/i18n/it-IT/time.json new file mode 100644 index 0000000000..37bce3ed2b --- /dev/null +++ b/web/i18n/it-IT/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Tue": "Martedì", + "Thu": "Giovedì", + "Mon": "Mon", + "Fri": "Venerdì", + "Sat": "Sat", + "Wed": "Mercoledì", + "Sun": "Sole" + }, + "months": { + "February": "Febbraio", + "April": "Aprile", + "January": "Gennaio", + "December": "Dicembre", + "March": "Marzo", + "May": "Maggio", + "August": "Agosto", + "June": "Giugno", + "July": "Luglio", + "October": "Ottobre", + "September": "Settembre", + "November": "Novembre" + }, + "operation": { + "ok": "OK", + "now": "Ora", + "cancel": "Annulla", + "pickDate": "Seleziona Data" + }, + "title": { + "pickTime": "Scegli Tempo" + }, + "defaultPlaceholder": "Scegli un orario...", + "dateFormats": { + "display": "MMMM D, YYYY", + "input": "AAAA-MM-GG", + "output": "AAAA-MM-GG", + "outputWithTime": "AAAA-MM-GGTHH:mm:ss.SSSZ", + "displayWithTime": "MMMM D, YYYY hh:mm A" + } +} diff --git a/web/i18n/it-IT/time.ts b/web/i18n/it-IT/time.ts deleted file mode 100644 index 0ee85bf280..0000000000 --- a/web/i18n/it-IT/time.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - daysInWeek: { - Tue: 'Martedì', - Thu: 'Giovedì', - Mon: 'Mon', - Fri: 'Venerdì', - Sat: 'Sat', - Wed: 'Mercoledì', - Sun: 'Sole', - }, - months: { - February: 'Febbraio', - April: 'Aprile', - January: 'Gennaio', - December: 'Dicembre', - March: 'Marzo', - May: 'Maggio', - August: 'Agosto', - June: 'Giugno', - July: 'Luglio', - October: 'Ottobre', - September: 'Settembre', - November: 'Novembre', - }, - operation: { - ok: 'OK', - now: 'Ora', - cancel: 'Annulla', - pickDate: 'Seleziona Data', - }, - title: { - pickTime: 'Scegli Tempo', - }, - defaultPlaceholder: 'Scegli un orario...', - dateFormats: { - display: 'MMMM D, YYYY', - input: 'AAAA-MM-GG', - output: 'AAAA-MM-GG', - outputWithTime: 'AAAA-MM-GGTHH:mm:ss.SSSZ', - displayWithTime: 'MMMM D, YYYY hh:mm A', - }, -} - -export default translation diff --git a/web/i18n/it-IT/tools.json b/web/i18n/it-IT/tools.json new file mode 100644 index 0000000000..f0b4aaa613 --- /dev/null +++ b/web/i18n/it-IT/tools.json @@ -0,0 +1,262 @@ +{ + "title": "Strumenti", + "createCustomTool": "Crea Strumento Personalizzato", + "customToolTip": "Scopri di più sugli strumenti personalizzati di Dify", + "type": { + "builtIn": "Integrato", + "custom": "Personalizzato", + "workflow": "Flusso di lavoro" + }, + "contribute": { + "line1": "Sono interessato a ", + "line2": "contribuire con strumenti a Dify.", + "viewGuide": "Visualizza la guida" + }, + "author": "Di", + "auth": { + "authorized": "Autorizzato", + "setup": "Configura l'autorizzazione per utilizzare", + "setupModalTitle": "Configura Autorizzazione", + "setupModalTitleDescription": "Dopo aver configurato le credenziali, tutti i membri all'interno del workspace possono utilizzare questo strumento durante l'orchestrazione delle applicazioni." + }, + "includeToolNum": "{{num}} strumenti inclusi", + "addToolModal": { + "type": "tipo", + "category": "categoria", + "added": "aggiunto", + "custom": { + "title": "Nessuno strumento personalizzato disponibile", + "tip": "Crea uno strumento personalizzato" + }, + "workflow": { + "title": "Nessuno strumento workflow disponibile", + "tip": "Pubblica i workflow come strumenti nello Studio" + }, + "mcp": { + "title": "Nessuno strumento MCP disponibile", + "tip": "Aggiungi un server MCP" + }, + "agent": { + "title": "Nessuna strategia agente disponibile" + } + }, + "createTool": { + "title": "Crea Strumento Personalizzato", + "editAction": "Configura", + "editTitle": "Modifica Strumento Personalizzato", + "name": "Nome", + "toolNamePlaceHolder": "Inserisci il nome dello strumento", + "nameForToolCall": "Nome chiamata strumento", + "nameForToolCallPlaceHolder": "Usato per il riconoscimento della macchina, ad esempio getCurrentWeather, list_pets", + "nameForToolCallTip": "Supporta solo numeri, lettere e underscore.", + "description": "Descrizione", + "descriptionPlaceholder": "Breve descrizione dello scopo dello strumento, ad esempio, ottenere la temperatura per una posizione specifica.", + "schema": "Schema", + "schemaPlaceHolder": "Inserisci qui il tuo schema OpenAPI", + "viewSchemaSpec": "Visualizza la Specifica OpenAPI-Swagger", + "importFromUrl": "Importa da URL", + "importFromUrlPlaceHolder": "https://...", + "urlError": "Per favore inserisci un URL valido", + "examples": "Esempi", + "exampleOptions": { + "json": "Weather(JSON)", + "yaml": "Pet Store(YAML)", + "blankTemplate": "Modello Vuoto" + }, + "availableTools": { + "title": "Strumenti Disponibili", + "name": "Nome", + "description": "Descrizione", + "method": "Metodo", + "path": "Percorso", + "action": "Azioni", + "test": "Test" + }, + "authMethod": { + "title": "Metodo di autorizzazione", + "type": "Tipo di autorizzazione", + "keyTooltip": "Http Header Key, Puoi lasciarlo come `Authorization` se non sai cos'è o impostarlo su un valore personalizzato", + "types": { + "none": "Nessuno", + "apiKeyPlaceholder": "Nome dell'intestazione HTTP per API Key", + "apiValuePlaceholder": "Inserisci API Key", + "api_key_query": "Parametro di query", + "api_key_header": "Intestazione", + "queryParamPlaceholder": "Nome del parametro di query per la chiave API" + }, + "key": "Chiave", + "value": "Valore", + "queryParam": "Parametro di query", + "queryParamTooltip": "Il nome del parametro di query della chiave API da passare, ad esempio \"key\" in \"https://example.com/test?key=API_KEY\"." + }, + "authHeaderPrefix": { + "title": "Tipo di Auth", + "types": { + "basic": "Basic", + "bearer": "Bearer", + "custom": "Custom" + } + }, + "privacyPolicy": "Informativa sulla privacy", + "privacyPolicyPlaceholder": "Per favore inserisci l'informativa sulla privacy", + "toolInput": { + "title": "Input Strumento", + "name": "Nome", + "required": "Richiesto", + "method": "Metodo", + "methodSetting": "Impostazione", + "methodSettingTip": "L'utente compila la configurazione dello strumento", + "methodParameter": "Parametro", + "methodParameterTip": "LLM compila durante l'inferenza", + "label": "Tag", + "labelPlaceholder": "Scegli tag (opzionale)", + "description": "Descrizione", + "descriptionPlaceholder": "Descrizione del significato del parametro" + }, + "customDisclaimer": "Disclaimer personalizzato", + "customDisclaimerPlaceholder": "Per favore inserisci disclaimer personalizzato", + "confirmTitle": "Confermare per salvare?", + "confirmTip": "Le app che utilizzano questo strumento saranno influenzate", + "deleteToolConfirmTitle": "Eliminare questo Strumento?", + "deleteToolConfirmContent": "L'eliminazione dello Strumento è irreversibile. Gli utenti non potranno più accedere al tuo Strumento.", + "toolOutput": { + "title": "Output dello strumento", + "name": "Nome", + "reserved": "Riservato", + "reservedParameterDuplicateTip": "text, json e files sono variabili riservate. Le variabili con questi nomi non possono comparire nello schema di output.", + "description": "Descrizione" + } + }, + "test": { + "title": "Test", + "parametersValue": "Parametri & Valore", + "parameters": "Parametri", + "value": "Valore", + "testResult": "Risultati del Test", + "testResultPlaceholder": "I risultati del test verranno mostrati qui" + }, + "thought": { + "using": "Utilizzando", + "used": "Usato", + "requestTitle": "Richiesta a", + "responseTitle": "Risposta da" + }, + "setBuiltInTools": { + "info": "Info", + "setting": "Impostazione", + "toolDescription": "Descrizione dello strumento", + "parameters": "parametri", + "string": "stringa", + "number": "numero", + "required": "Richiesto", + "infoAndSetting": "Info & Impostazioni", + "file": "file" + }, + "noCustomTool": { + "title": "Nessun strumento personalizzato!", + "content": "Aggiungi e gestisci i tuoi strumenti personalizzati qui per costruire app AI.", + "createTool": "Crea Strumento" + }, + "noSearchRes": { + "title": "Spiacenti, nessun risultato!", + "content": "Non abbiamo trovato strumenti che corrispondono alla tua ricerca.", + "reset": "Reimposta Ricerca" + }, + "builtInPromptTitle": "Prompt", + "toolRemoved": "Strumento rimosso", + "notAuthorized": "Strumento non autorizzato", + "howToGet": "Come ottenere", + "openInStudio": "Apri in Studio", + "toolNameUsageTip": "Nome chiamata strumento per il ragionamento e il prompting dell'agente", + "noTools": "Nessun utensile trovato", + "copyToolName": "Copia nome", + "mcp": { + "create": { + "cardTitle": "Aggiungi Server MCP (HTTP)", + "cardLink": "Scopri di più sull'integrazione del server MCP" + }, + "noConfigured": "Server Non Configurato", + "updateTime": "Aggiornato", + "toolsCount": "{count} strumenti", + "noTools": "Nessuno strumento disponibile", + "modal": { + "title": "Aggiungi Server MCP (HTTP)", + "editTitle": "Modifica Server MCP (HTTP)", + "name": "Nome & Icona", + "namePlaceholder": "Dai un nome al tuo server MCP", + "serverUrl": "URL del Server", + "serverUrlPlaceholder": "URL dell'endpoint del server", + "serverUrlWarning": "L'aggiornamento dell'indirizzo del server può interrompere le applicazioni che dipendono da questo server", + "serverIdentifier": "Identificatore del Server", + "serverIdentifierTip": "Identificatore unico per il server MCP all'interno dello spazio di lavoro. Solo lettere minuscole, numeri, underscore e trattini. Fino a 24 caratteri.", + "serverIdentifierPlaceholder": "Identificatore unico, es. mio-server-mcp", + "serverIdentifierWarning": "Il server non sarà riconosciuto dalle app esistenti dopo una modifica dell'ID", + "cancel": "Annulla", + "save": "Salva", + "confirm": "Aggiungi & Autorizza", + "timeout": "Tempo scaduto", + "sseReadTimeout": "Timeout di lettura SSE", + "headerKey": "Nome intestazione", + "timeoutPlaceholder": "trenta", + "headers": "Intestazioni", + "addHeader": "Aggiungi intestazione", + "noHeaders": "Nessuna intestazione personalizzata configurata", + "headerKeyPlaceholder": "ad es., Autorizzazione", + "headerValue": "Valore dell'intestazione", + "headerValuePlaceholder": "ad esempio, Token di accesso123", + "headersTip": "Intestazioni HTTP aggiuntive da inviare con le richieste al server MCP", + "maskedHeadersTip": "I valori dell'intestazione sono mascherati per motivi di sicurezza. Le modifiche aggiorneranno i valori effettivi.", + "clientID": "ID cliente", + "clientSecret": "Segreto del Cliente", + "useDynamicClientRegistration": "Usa la Registrazione Dinamica del Client", + "clientSecretPlaceholder": "Segreto del Cliente", + "authentication": "Autenticazione", + "configurations": "Configurazioni", + "redirectUrlWarning": "Si prega di configurare il vostro URL di reindirizzamento OAuth su:" + }, + "delete": "Rimuovi Server MCP", + "deleteConfirmTitle": "Vuoi rimuovere {mcp}?", + "operation": { + "edit": "Modifica", + "remove": "Rimuovi" + }, + "authorize": "Autorizza", + "authorizing": "Autorizzando...", + "authorizingRequired": "Autorizzazione richiesta", + "authorizeTip": "Dopo l'autorizzazione, gli strumenti verranno visualizzati qui.", + "update": "Aggiorna", + "updating": "Aggiornamento in corso", + "gettingTools": "Ottimizzando Strumenti...", + "updateTools": "Aggiornando Strumenti...", + "toolsEmpty": "Strumenti non caricati", + "getTools": "Ottieni strumenti", + "toolUpdateConfirmTitle": "Aggiorna Lista Strumenti", + "toolUpdateConfirmContent": "L'aggiornamento della lista degli strumenti può influire sulle app esistenti. Vuoi procedere?", + "toolsNum": "{count} strumenti inclusi", + "onlyTool": "1 strumento incluso", + "identifier": "Identificatore del Server (Fai clic per Copiare)", + "server": { + "title": "Server MCP", + "url": "URL del Server", + "reGen": "Vuoi rigenerare l'URL del server?", + "addDescription": "Aggiungi descrizione", + "edit": "Modifica descrizione", + "modal": { + "addTitle": "Aggiungi descrizione per abilitare il server MCP", + "editTitle": "Modifica descrizione", + "description": "Descrizione", + "descriptionPlaceholder": "Spiega cosa fa questo strumento e come dovrebbe essere utilizzato dal LLM", + "parameters": "Parametri", + "parametersTip": "Aggiungi descrizioni per ogni parametro per aiutare il LLM a comprendere il loro scopo e le loro restrizioni.", + "parametersPlaceholder": "Scopo e restrizioni del parametro", + "confirm": "Abilitare Server MCP" + }, + "publishTip": "App non pubblicata. Pubblica l'app prima." + }, + "toolItem": { + "parameters": "Parametri", + "noDescription": "Nessuna descrizione" + } + }, + "allTools": "Tutti gli strumenti" +} diff --git a/web/i18n/it-IT/tools.ts b/web/i18n/it-IT/tools.ts deleted file mode 100644 index a378173129..0000000000 --- a/web/i18n/it-IT/tools.ts +++ /dev/null @@ -1,274 +0,0 @@ -const translation = { - title: 'Strumenti', - createCustomTool: 'Crea Strumento Personalizzato', - customToolTip: 'Scopri di più sugli strumenti personalizzati di Dify', - type: { - builtIn: 'Integrato', - custom: 'Personalizzato', - workflow: 'Flusso di lavoro', - }, - contribute: { - line1: 'Sono interessato a ', - line2: 'contribuire con strumenti a Dify.', - viewGuide: 'Visualizza la guida', - }, - author: 'Di', - auth: { - authorized: 'Autorizzato', - setup: 'Configura l\'autorizzazione per utilizzare', - setupModalTitle: 'Configura Autorizzazione', - setupModalTitleDescription: - 'Dopo aver configurato le credenziali, tutti i membri all\'interno del workspace possono utilizzare questo strumento durante l\'orchestrazione delle applicazioni.', - }, - includeToolNum: '{{num}} strumenti inclusi', - addToolModal: { - type: 'tipo', - category: 'categoria', - added: 'aggiunto', - custom: { - title: 'Nessuno strumento personalizzato disponibile', - tip: 'Crea uno strumento personalizzato', - }, - workflow: { - title: 'Nessuno strumento workflow disponibile', - tip: 'Pubblica i workflow come strumenti nello Studio', - }, - mcp: { - title: 'Nessuno strumento MCP disponibile', - tip: 'Aggiungi un server MCP', - }, - agent: { - title: 'Nessuna strategia agente disponibile', - }, - }, - createTool: { - title: 'Crea Strumento Personalizzato', - editAction: 'Configura', - editTitle: 'Modifica Strumento Personalizzato', - name: 'Nome', - toolNamePlaceHolder: 'Inserisci il nome dello strumento', - nameForToolCall: 'Nome chiamata strumento', - nameForToolCallPlaceHolder: - 'Usato per il riconoscimento della macchina, ad esempio getCurrentWeather, list_pets', - nameForToolCallTip: 'Supporta solo numeri, lettere e underscore.', - description: 'Descrizione', - descriptionPlaceholder: - 'Breve descrizione dello scopo dello strumento, ad esempio, ottenere la temperatura per una posizione specifica.', - schema: 'Schema', - schemaPlaceHolder: 'Inserisci qui il tuo schema OpenAPI', - viewSchemaSpec: 'Visualizza la Specifica OpenAPI-Swagger', - importFromUrl: 'Importa da URL', - importFromUrlPlaceHolder: 'https://...', - urlError: 'Per favore inserisci un URL valido', - examples: 'Esempi', - exampleOptions: { - json: 'Weather(JSON)', - yaml: 'Pet Store(YAML)', - blankTemplate: 'Modello Vuoto', - }, - availableTools: { - title: 'Strumenti Disponibili', - name: 'Nome', - description: 'Descrizione', - method: 'Metodo', - path: 'Percorso', - action: 'Azioni', - test: 'Test', - }, - authMethod: { - title: 'Metodo di autorizzazione', - type: 'Tipo di autorizzazione', - keyTooltip: - 'Http Header Key, Puoi lasciarlo come `Authorization` se non sai cos\'è o impostarlo su un valore personalizzato', - types: { - none: 'Nessuno', - apiKeyPlaceholder: 'Nome dell\'intestazione HTTP per API Key', - apiValuePlaceholder: 'Inserisci API Key', - api_key_query: 'Parametro di query', - api_key_header: 'Intestazione', - queryParamPlaceholder: 'Nome del parametro di query per la chiave API', - }, - key: 'Chiave', - value: 'Valore', - queryParam: 'Parametro di query', - queryParamTooltip: 'Il nome del parametro di query della chiave API da passare, ad esempio "key" in "https://example.com/test?key=API_KEY".', - }, - authHeaderPrefix: { - title: 'Tipo di Auth', - types: { - basic: 'Basic', - bearer: 'Bearer', - custom: 'Custom', - }, - }, - privacyPolicy: 'Informativa sulla privacy', - privacyPolicyPlaceholder: - 'Per favore inserisci l\'informativa sulla privacy', - toolInput: { - title: 'Input Strumento', - name: 'Nome', - required: 'Richiesto', - method: 'Metodo', - methodSetting: 'Impostazione', - methodSettingTip: 'L\'utente compila la configurazione dello strumento', - methodParameter: 'Parametro', - methodParameterTip: 'LLM compila durante l\'inferenza', - label: 'Tag', - labelPlaceholder: 'Scegli tag (opzionale)', - description: 'Descrizione', - descriptionPlaceholder: 'Descrizione del significato del parametro', - }, - customDisclaimer: 'Disclaimer personalizzato', - customDisclaimerPlaceholder: - 'Per favore inserisci disclaimer personalizzato', - confirmTitle: 'Confermare per salvare?', - confirmTip: 'Le app che utilizzano questo strumento saranno influenzate', - deleteToolConfirmTitle: 'Eliminare questo Strumento?', - deleteToolConfirmContent: - 'L\'eliminazione dello Strumento è irreversibile. Gli utenti non potranno più accedere al tuo Strumento.', - toolOutput: { - title: 'Output dello strumento', - name: 'Nome', - reserved: 'Riservato', - reservedParameterDuplicateTip: 'text, json e files sono variabili riservate. Le variabili con questi nomi non possono comparire nello schema di output.', - description: 'Descrizione', - }, - }, - test: { - title: 'Test', - parametersValue: 'Parametri & Valore', - parameters: 'Parametri', - value: 'Valore', - testResult: 'Risultati del Test', - testResultPlaceholder: 'I risultati del test verranno mostrati qui', - }, - thought: { - using: 'Utilizzando', - used: 'Usato', - requestTitle: 'Richiesta a', - responseTitle: 'Risposta da', - }, - setBuiltInTools: { - info: 'Info', - setting: 'Impostazione', - toolDescription: 'Descrizione dello strumento', - parameters: 'parametri', - string: 'stringa', - number: 'numero', - required: 'Richiesto', - infoAndSetting: 'Info & Impostazioni', - file: 'file', - }, - noCustomTool: { - title: 'Nessun strumento personalizzato!', - content: - 'Aggiungi e gestisci i tuoi strumenti personalizzati qui per costruire app AI.', - createTool: 'Crea Strumento', - }, - noSearchRes: { - title: 'Spiacenti, nessun risultato!', - content: - 'Non abbiamo trovato strumenti che corrispondono alla tua ricerca.', - reset: 'Reimposta Ricerca', - }, - builtInPromptTitle: 'Prompt', - toolRemoved: 'Strumento rimosso', - notAuthorized: 'Strumento non autorizzato', - howToGet: 'Come ottenere', - openInStudio: 'Apri in Studio', - toolNameUsageTip: - 'Nome chiamata strumento per il ragionamento e il prompting dell\'agente', - noTools: 'Nessun utensile trovato', - copyToolName: 'Copia nome', - mcp: { - create: { - cardTitle: 'Aggiungi Server MCP (HTTP)', - cardLink: 'Scopri di più sull\'integrazione del server MCP', - }, - noConfigured: 'Server Non Configurato', - updateTime: 'Aggiornato', - toolsCount: '{count} strumenti', - noTools: 'Nessuno strumento disponibile', - modal: { - title: 'Aggiungi Server MCP (HTTP)', - editTitle: 'Modifica Server MCP (HTTP)', - name: 'Nome & Icona', - namePlaceholder: 'Dai un nome al tuo server MCP', - serverUrl: 'URL del Server', - serverUrlPlaceholder: 'URL dell\'endpoint del server', - serverUrlWarning: 'L\'aggiornamento dell\'indirizzo del server può interrompere le applicazioni che dipendono da questo server', - serverIdentifier: 'Identificatore del Server', - serverIdentifierTip: 'Identificatore unico per il server MCP all\'interno dello spazio di lavoro. Solo lettere minuscole, numeri, underscore e trattini. Fino a 24 caratteri.', - serverIdentifierPlaceholder: 'Identificatore unico, es. mio-server-mcp', - serverIdentifierWarning: 'Il server non sarà riconosciuto dalle app esistenti dopo una modifica dell\'ID', - cancel: 'Annulla', - save: 'Salva', - confirm: 'Aggiungi & Autorizza', - timeout: 'Tempo scaduto', - sseReadTimeout: 'Timeout di lettura SSE', - headerKey: 'Nome intestazione', - timeoutPlaceholder: 'trenta', - headers: 'Intestazioni', - addHeader: 'Aggiungi intestazione', - noHeaders: 'Nessuna intestazione personalizzata configurata', - headerKeyPlaceholder: 'ad es., Autorizzazione', - headerValue: 'Valore dell\'intestazione', - headerValuePlaceholder: 'ad esempio, Token di accesso123', - headersTip: 'Intestazioni HTTP aggiuntive da inviare con le richieste al server MCP', - maskedHeadersTip: 'I valori dell\'intestazione sono mascherati per motivi di sicurezza. Le modifiche aggiorneranno i valori effettivi.', - clientID: 'ID cliente', - clientSecret: 'Segreto del Cliente', - useDynamicClientRegistration: 'Usa la Registrazione Dinamica del Client', - clientSecretPlaceholder: 'Segreto del Cliente', - authentication: 'Autenticazione', - configurations: 'Configurazioni', - redirectUrlWarning: 'Si prega di configurare il vostro URL di reindirizzamento OAuth su:', - }, - delete: 'Rimuovi Server MCP', - deleteConfirmTitle: 'Vuoi rimuovere {mcp}?', - operation: { - edit: 'Modifica', - remove: 'Rimuovi', - }, - authorize: 'Autorizza', - authorizing: 'Autorizzando...', - authorizingRequired: 'Autorizzazione richiesta', - authorizeTip: 'Dopo l\'autorizzazione, gli strumenti verranno visualizzati qui.', - update: 'Aggiorna', - updating: 'Aggiornamento in corso', - gettingTools: 'Ottimizzando Strumenti...', - updateTools: 'Aggiornando Strumenti...', - toolsEmpty: 'Strumenti non caricati', - getTools: 'Ottieni strumenti', - toolUpdateConfirmTitle: 'Aggiorna Lista Strumenti', - toolUpdateConfirmContent: 'L\'aggiornamento della lista degli strumenti può influire sulle app esistenti. Vuoi procedere?', - toolsNum: '{count} strumenti inclusi', - onlyTool: '1 strumento incluso', - identifier: 'Identificatore del Server (Fai clic per Copiare)', - server: { - title: 'Server MCP', - url: 'URL del Server', - reGen: 'Vuoi rigenerare l\'URL del server?', - addDescription: 'Aggiungi descrizione', - edit: 'Modifica descrizione', - modal: { - addTitle: 'Aggiungi descrizione per abilitare il server MCP', - editTitle: 'Modifica descrizione', - description: 'Descrizione', - descriptionPlaceholder: 'Spiega cosa fa questo strumento e come dovrebbe essere utilizzato dal LLM', - parameters: 'Parametri', - parametersTip: 'Aggiungi descrizioni per ogni parametro per aiutare il LLM a comprendere il loro scopo e le loro restrizioni.', - parametersPlaceholder: 'Scopo e restrizioni del parametro', - confirm: 'Abilitare Server MCP', - }, - publishTip: 'App non pubblicata. Pubblica l\'app prima.', - }, - toolItem: { - parameters: 'Parametri', - noDescription: 'Nessuna descrizione', - }, - }, - allTools: 'Tutti gli strumenti', -} - -export default translation diff --git a/web/i18n/it-IT/workflow.json b/web/i18n/it-IT/workflow.json new file mode 100644 index 0000000000..e9aba82251 --- /dev/null +++ b/web/i18n/it-IT/workflow.json @@ -0,0 +1,1294 @@ +{ + "common": { + "undo": "Annulla", + "redo": "Ripeti", + "editing": "Modifica in corso", + "autoSaved": "Salvataggio automatico", + "unpublished": "Non pubblicato", + "published": "Pubblicato", + "publish": "Pubblica", + "update": "Aggiorna", + "run": "Esegui test", + "running": "In esecuzione", + "inRunMode": "In modalità di esecuzione", + "inPreview": "In anteprima", + "inPreviewMode": "In modalità anteprima", + "preview": "Anteprima", + "viewRunHistory": "Visualizza cronologia esecuzioni", + "runHistory": "Cronologia esecuzioni", + "goBackToEdit": "Torna all'editor", + "conversationLog": "Registro conversazioni", + "debugAndPreview": "Anteprima", + "restart": "Riavvia", + "currentDraft": "Bozza corrente", + "currentDraftUnpublished": "Bozza corrente non pubblicata", + "latestPublished": "Ultimo pubblicato", + "publishedAt": "Pubblicato", + "restore": "Ripristina", + "runApp": "Esegui App", + "batchRunApp": "Esegui App in Batch", + "accessAPIReference": "Accedi alla Riferimento API", + "embedIntoSite": "Incorpora nel Sito", + "addTitle": "Aggiungi titolo...", + "addDescription": "Aggiungi descrizione...", + "noVar": "Nessuna variabile", + "searchVar": "Cerca variabile", + "variableNamePlaceholder": "Nome variabile", + "setVarValuePlaceholder": "Imposta variabile", + "needConnectTip": "Questo passaggio non è collegato a nulla", + "maxTreeDepth": "Limite massimo di {{depth}} nodi per ramo", + "workflowProcess": "Processo di flusso di lavoro", + "notRunning": "Non ancora in esecuzione", + "previewPlaceholder": "Inserisci contenuto nella casella sottostante per avviare il debug del Chatbot", + "effectVarConfirm": { + "title": "Rimuovi Variabile", + "content": "La variabile è utilizzata in altri nodi. Vuoi comunque rimuoverla?" + }, + "insertVarTip": "Premi il tasto '/' per inserire rapidamente", + "processData": "Elabora Dati", + "input": "Input", + "output": "Output", + "jinjaEditorPlaceholder": "Digita '/' o '{' per inserire variabile", + "viewOnly": "Solo visualizzazione", + "showRunHistory": "Mostra cronologia esecuzioni", + "enableJinja": "Abilita supporto template Jinja", + "learnMore": "Scopri di più", + "copy": "Copia", + "duplicate": "Duplica", + "pasteHere": "Incolla Qui", + "pointerMode": "Modalità Puntatore", + "handMode": "Modalità Mano", + "model": "Modello", + "workflowAsTool": "Flusso di lavoro come Strumento", + "configureRequired": "Configurazione Richiesta", + "configure": "Configura", + "manageInTools": "Gestisci in Strumenti", + "workflowAsToolTip": "È richiesta una nuova configurazione dello strumento dopo l'aggiornamento del flusso di lavoro.", + "viewDetailInTracingPanel": "Visualizza dettagli", + "syncingData": "Sincronizzazione dei dati in corso, solo pochi secondi.", + "importDSL": "Importa DSL", + "importDSLTip": "La bozza corrente verrà sovrascritta. Esporta il flusso di lavoro come backup prima di importare.", + "backupCurrentDraft": "Backup Bozza Corrente", + "chooseDSL": "Scegli file DSL(yml)", + "overwriteAndImport": "Sovrascrivi e Importa", + "importFailure": "Importazione fallita", + "importSuccess": "Importazione riuscita", + "parallelTip": { + "click": { + "title": "Clic", + "desc": "per aggiungere" + }, + "drag": { + "title": "Trascinare", + "desc": "per collegare" + }, + "depthLimit": "Limite di livelli di annidamento parallelo di {{num}} livelli", + "limit": "Il parallelismo è limitato ai rami {{num}}." + }, + "disconnect": "Disconnettere", + "jumpToNode": "Vai a questo nodo", + "addParallelNode": "Aggiungi nodo parallelo", + "parallel": "PARALLELO", + "branch": "RAMO", + "fileUploadTip": "Le funzioni di caricamento delle immagini sono state aggiornate al caricamento dei file.", + "ImageUploadLegacyTip": "Ora è possibile creare variabili di tipo file nel modulo iniziale. In futuro non supporteremo più la funzione di caricamento delle immagini.", + "importWarning": "Cautela", + "importWarningDetails": "La differenza di versione DSL può influire su alcune funzionalità", + "openInExplore": "Apri in Esplora", + "onFailure": "In caso di guasto", + "addFailureBranch": "Aggiungi ramo non riuscito", + "noHistory": "Nessuna storia", + "loadMore": "Carica più flussi di lavoro", + "publishUpdate": "Pubblica aggiornamento", + "versionHistory": "Cronologia delle versioni", + "exitVersions": "Uscita Versioni", + "exportSVG": "Esporta come SVG", + "exportImage": "Esporta immagine", + "exportJPEG": "Esporta come JPEG", + "exportPNG": "Esporta come PNG", + "needOutputNode": "Deve essere aggiunto il nodo di uscita", + "addBlock": "Aggiungi nodo", + "needAnswerNode": "Deve essere aggiunto il nodo di risposta", + "tagBound": "Numero di app che utilizzano questo tag", + "currentWorkflow": "Flusso di lavoro corrente", + "currentView": "Vista corrente", + "moreActions": "Altre azioni", + "listening": "Ascoltando", + "chooseStartNodeToRun": "Scegli il nodo di partenza da eseguire", + "runAllTriggers": "Esegui tutti i trigger", + "features": "Caratteristiche", + "featuresDescription": "Migliorare l'esperienza utente dell'app web", + "featuresDocLink": "Scopri di più", + "needAdd": "È necessario aggiungere il nodo {{node}}", + "needStartNode": "Deve essere aggiunto almeno un nodo iniziale", + "workflowAsToolDisabledHint": "Pubblica il flusso di lavoro più recente e assicurati che ci sia un nodo di Input Utente collegato prima di configurarlo come strumento." + }, + "env": { + "envPanelTitle": "Variabili d'Ambiente", + "envDescription": "Le variabili d'ambiente possono essere utilizzate per memorizzare informazioni private e credenziali. Sono di sola lettura e possono essere separate dal file DSL durante l'esportazione.", + "envPanelButton": "Aggiungi Variabile", + "modal": { + "title": "Aggiungi Variabile d'Ambiente", + "editTitle": "Modifica Variabile d'Ambiente", + "type": "Tipo", + "name": "Nome", + "namePlaceholder": "nome env", + "value": "Valore", + "valuePlaceholder": "valore env", + "secretTip": "Utilizzato per definire informazioni o dati sensibili, con impostazioni DSL configurate per la prevenzione delle fughe.", + "description": "Descrizione", + "descriptionPlaceholder": "Descrivi la variabile" + }, + "export": { + "title": "Esportare variabili d'ambiente segrete?", + "checkbox": "Esporta valori segreti", + "ignore": "Esporta DSL", + "export": "Esporta DSL con valori segreti" + } + }, + "globalVar": { + "title": "Variabili di sistema", + "description": "Le variabili di sistema sono variabili globali che possono essere richiamate da qualsiasi nodo senza collegamenti quando il tipo è corretto, come l'ID dell'utente finale e l'ID del workflow.", + "fieldsDescription": { + "conversationId": "ID conversazione", + "dialogCount": "Conteggio conversazioni", + "userId": "ID utente", + "triggerTimestamp": "Timestamp di avvio dell'applicazione", + "appId": "ID applicazione", + "workflowId": "ID workflow", + "workflowRunId": "ID esecuzione workflow" + } + }, + "chatVariable": { + "panelTitle": "Variabili di Conversazione", + "panelDescription": "Le Variabili di Conversazione sono utilizzate per memorizzare informazioni interattive che il LLM deve ricordare, inclusi la cronologia delle conversazioni, i file caricati e le preferenze dell'utente. Sono in lettura e scrittura.", + "docLink": "Visita la nostra documentazione per saperne di più.", + "button": "Aggiungi Variabile", + "modal": { + "title": "Aggiungi Variabile di Conversazione", + "editTitle": "Modifica Variabile di Conversazione", + "name": "Nome", + "namePlaceholder": "Nome della variabile", + "type": "Tipo", + "value": "Valore Predefinito", + "valuePlaceholder": "Valore predefinito, lascia vuoto per non impostare", + "description": "Descrizione", + "descriptionPlaceholder": "Descrivi la variabile", + "editInJSON": "Modifica in JSON", + "oneByOne": "Aggiungi uno alla volta", + "editInForm": "Modifica nel Modulo", + "arrayValue": "Valore", + "addArrayValue": "Aggiungi Valore", + "objectKey": "Chiave", + "objectType": "Tipo", + "objectValue": "Valore Predefinito" + }, + "storedContent": "Contenuto memorizzato", + "updatedAt": "Aggiornato il " + }, + "changeHistory": { + "title": "Cronologia Modifiche", + "placeholder": "Non hai ancora modificato nulla", + "clearHistory": "Cancella Cronologia", + "hint": "Suggerimento", + "hintText": "Le tue azioni di modifica vengono tracciate in una cronologia delle modifiche, che viene memorizzata sul tuo dispositivo per tutta la durata di questa sessione. Questa cronologia verrà cancellata quando lascerai l'editor.", + "stepBackward_one": "{{count}} passo indietro", + "stepBackward_other": "{{count}} passi indietro", + "stepForward_one": "{{count}} passo avanti", + "stepForward_other": "{{count}} passi avanti", + "sessionStart": "Inizio sessione", + "currentState": "Stato attuale", + "noteAdd": "Nota aggiunta", + "noteChange": "Nota modificata", + "noteDelete": "Nota eliminata", + "nodeDescriptionChange": "Descrizione del nodo cambiata", + "nodePaste": "Nodo incollato", + "nodeChange": "Nodo cambiato", + "nodeResize": "Nodo ridimensionato", + "nodeDelete": "Nodo eliminato", + "nodeTitleChange": "Titolo del nodo cambiato", + "edgeDelete": "Nodo disconnesso", + "nodeAdd": "Nodo aggiunto", + "nodeDragStop": "Nodo spostato", + "nodeConnect": "Nodo connesso" + }, + "errorMsg": { + "fieldRequired": "{{field}} è richiesto", + "authRequired": "È richiesta l'autorizzazione", + "invalidJson": "{{field}} è un JSON non valido", + "fields": { + "variable": "Nome Variabile", + "variableValue": "Valore Variabile", + "code": "Codice", + "model": "Modello", + "rerankModel": "Modello Rerank", + "visionVariable": "Visione variabile" + }, + "invalidVariable": "Variabile non valida", + "rerankModelRequired": "Prima di attivare il modello di reranking, conferma che il modello è stato configurato correttamente nelle impostazioni.", + "toolParameterRequired": "{{field}}: il parametro [{{param}}] è obbligatorio", + "noValidTool": "{{field}} nessuno strumento valido selezionato", + "startNodeRequired": "Per favore aggiungi prima un nodo iniziale prima di {{operation}}" + }, + "singleRun": { + "testRun": "Esecuzione Test ", + "startRun": "Avvia Esecuzione", + "running": "In esecuzione", + "testRunIteration": "Iterazione Esecuzione Test", + "back": "Indietro", + "iteration": "Iterazione", + "loop": "Anello", + "reRun": "Ripetizione", + "preparingDataSource": "Preparazione dell'origine dati" + }, + "tabs": { + "tools": "Strumenti", + "allTool": "Tutti", + "customTool": "Personalizzato", + "workflowTool": "Flusso di lavoro", + "question-understand": "Comprensione Domanda", + "logic": "Logica", + "transform": "Trasforma", + "utilities": "Utility", + "noResult": "Nessuna corrispondenza trovata", + "searchTool": "Strumento di ricerca", + "agent": "Strategia dell'agente", + "plugin": "Plugin", + "searchBlock": "Cerca nodo", + "blocks": "Nodi", + "allAdded": "Tutto aggiunto", + "addAll": "Aggiungi tutto", + "sources": "Fonti", + "searchDataSource": "Cerca origine dati", + "start": "Inizia", + "searchTrigger": "Trigger di ricerca...", + "allTriggers": "Tutti i trigger", + "noPluginsFound": "Nessun plugin trovato", + "requestToCommunity": "Richieste alla comunità", + "featuredTools": "In evidenza", + "showMoreFeatured": "Mostra di più", + "showLessFeatured": "Mostra di meno", + "installed": "Installato", + "pluginByAuthor": "Da {{author}}", + "usePlugin": "Strumento di selezione", + "hideActions": "Nascondi strumenti", + "noFeaturedPlugins": "Scopri altri strumenti nel Marketplace", + "noFeaturedTriggers": "Scopri altri trigger nel Marketplace", + "startDisabledTip": "Il nodo di attivazione e il nodo di input utente sono mutualmente esclusivi." + }, + "blocks": { + "start": "Inizio", + "end": "Uscita", + "answer": "Risposta", + "llm": "LLM", + "knowledge-retrieval": "Recupero Conoscenza", + "question-classifier": "Classificatore Domande", + "if-else": "SE/ALTRIMENTI", + "code": "Codice", + "template-transform": "Template", + "http-request": "Richiesta HTTP", + "variable-assigner": "Assegnatore Variabili", + "variable-aggregator": "Aggregatore Variabili", + "assigner": "Assegnatore di Variabili", + "iteration-start": "Inizio Iterazione", + "iteration": "Iterazione", + "parameter-extractor": "Estrattore Parametri", + "document-extractor": "Estrattore di documenti", + "list-operator": "Operatore di elenco", + "agent": "Agente", + "loop-end": "Uscire dal ciclo", + "loop-start": "Inizio ciclo", + "loop": "Anello", + "knowledge-index": "Knowledge base", + "datasource": "Origine dati", + "originalStartNode": "nodo iniziale originale", + "trigger-schedule": "Trigger di pianificazione", + "trigger-webhook": "Trigger Webhook", + "trigger-plugin": "Attivatore del plugin" + }, + "blocksAbout": { + "start": "Definisci i parametri iniziali per l'avvio di un flusso di lavoro", + "end": "Definisci l'uscita e il tipo di risultato di un flusso di lavoro", + "answer": "Definisci il contenuto della risposta di una conversazione chat", + "llm": "Invoca modelli di linguaggio di grandi dimensioni per rispondere a domande o elaborare il linguaggio naturale", + "knowledge-retrieval": "Ti consente di interrogare il contenuto del testo relativo alle domande dell'utente dalla Conoscenza", + "question-classifier": "Definisci le condizioni di classificazione delle domande dell'utente, LLM può definire come prosegue la conversazione in base alla descrizione della classificazione", + "if-else": "Ti consente di dividere il flusso di lavoro in due rami basati su condizioni se/altrimenti", + "code": "Esegui un pezzo di codice Python o NodeJS per implementare la logica personalizzata", + "template-transform": "Converti i dati in stringa usando la sintassi del template Jinja", + "http-request": "Consenti l'invio di richieste server tramite il protocollo HTTP", + "variable-assigner": "Aggrega variabili multi-ramo in una singola variabile per la configurazione unificata dei nodi a valle.", + "assigner": "Il nodo di assegnazione delle variabili è utilizzato per assegnare valori a variabili scrivibili (come le variabili di conversazione).", + "variable-aggregator": "Aggrega variabili multi-ramo in una singola variabile per la configurazione unificata dei nodi a valle.", + "iteration": "Esegui più passaggi su un oggetto lista fino a quando tutti i risultati non sono stati prodotti.", + "parameter-extractor": "Usa LLM per estrarre parametri strutturati dal linguaggio naturale per invocazioni di strumenti o richieste HTTP.", + "list-operator": "Utilizzato per filtrare o ordinare il contenuto della matrice.", + "document-extractor": "Utilizzato per analizzare i documenti caricati in contenuti di testo facilmente comprensibili da LLM.", + "agent": "Richiamo di modelli linguistici di grandi dimensioni per rispondere a domande o elaborare il linguaggio naturale", + "loop-end": "Equivalente a \"break\". Questo nodo non ha elementi di configurazione. Quando il corpo del ciclo raggiunge questo nodo, il ciclo termina.", + "loop": "Esegui un ciclo di logica fino a quando la condizione di terminazione non viene soddisfatta o il numero massimo di cicli viene raggiunto.", + "datasource": "Origine dati Informazioni", + "knowledge-index": "Base di conoscenza su", + "trigger-schedule": "Trigger di flusso di lavoro basato sul tempo che avvia i flussi di lavoro secondo un programma", + "trigger-webhook": "Il Webhook Trigger riceve invii HTTP da sistemi di terze parti per attivare automaticamente i flussi di lavoro.", + "trigger-plugin": "Trigger di integrazione di terze parti che avvia flussi di lavoro da eventi di piattaforme esterne" + }, + "operator": { + "zoomIn": "Zoom In", + "zoomOut": "Zoom Out", + "zoomTo50": "Zoom al 50%", + "zoomTo100": "Zoom al 100%", + "zoomToFit": "Zoom per Adattare", + "alignRight": "A destra", + "selectionAlignment": "Allineamento della selezione", + "alignBottom": "In basso", + "alignTop": "In alto", + "vertical": "Verticale", + "alignCenter": "Centro", + "alignLeft": "A sinistra", + "alignMiddle": "Centro", + "horizontal": "Orizzontale", + "alignNodes": "Allinea nodi", + "distributeHorizontal": "Spazia orizzontalmente", + "distributeVertical": "Spazia verticalmente" + }, + "panel": { + "userInputField": "Campo di Input Utente", + "helpLink": "Aiuto", + "about": "Informazioni", + "createdBy": "Creato da ", + "nextStep": "Prossimo Passo", + "runThisStep": "Esegui questo passo", + "checklist": "Checklist", + "checklistTip": "Assicurati che tutti i problemi siano risolti prima di pubblicare", + "checklistResolved": "Tutti i problemi sono risolti", + "change": "Cambia", + "optional": "(opzionale)", + "changeBlock": "Cambia Nodo", + "selectNextStep": "Seleziona il prossimo passo", + "organizeBlocks": "Organizzare i nodi", + "addNextStep": "Aggiungi il prossimo passo in questo flusso di lavoro", + "minimize": "Esci dalla modalità schermo intero", + "maximize": "Massimizza Canvas", + "scrollToSelectedNode": "Scorri fino al nodo selezionato", + "optional_and_hidden": "(opzionale e nascosto)", + "goTo": "Vai a", + "startNode": "Nodo iniziale", + "openWorkflow": "Apri flusso di lavoro" + }, + "nodes": { + "common": { + "outputVars": "Variabili di Output", + "insertVarTip": "Inserisci Variabile", + "memory": { + "memory": "Memoria", + "memoryTip": "Impostazioni memoria chat", + "windowSize": "Dimensione Finestra", + "conversationRoleName": "Nome Ruolo Conversazione", + "user": "Prefisso Utente", + "assistant": "Prefisso Assistente" + }, + "memories": { + "title": "Memorie", + "tip": "Memoria chat", + "builtIn": "Integrato" + }, + "errorHandle": { + "none": { + "title": "Nessuno", + "desc": "L'esecuzione del nodo verrà interrotta se si verifica un'eccezione e non viene gestita" + }, + "defaultValue": { + "title": "Valore predefinito", + "desc": "Quando si verifica un errore, specificare un contenuto di output statico.", + "tip": "In caso di errore, tornerà al di sotto del valore.", + "inLog": "Eccezione del nodo, output in base ai valori predefiniti.", + "output": "Valore predefinito di output" + }, + "failBranch": { + "title": "Ramo fallito", + "desc": "Quando si verifica un errore, eseguirà il ramo dell'eccezione", + "customize": "Passare all'area di disegno per personalizzare la logica del ramo di errore.", + "customizeTip": "Quando il ramo di errore è attivato, le eccezioni generate dai nodi non termineranno il processo. Al contrario, eseguirà automaticamente il ramo di errore predefinito, consentendo di fornire in modo flessibile messaggi di errore, report, correzioni o azioni di salto.", + "inLog": "Eccezione nodo, eseguirà automaticamente il ramo di errore. L'output del nodo restituirà un tipo di errore e un messaggio di errore e li passerà al downstream." + }, + "partialSucceeded": { + "tip": "Ci sono {{num}} nodi nel processo che funzionano in modo anomalo, si prega di andare su tracing per controllare i log." + }, + "title": "Gestione degli errori", + "tip": "Strategia di gestione delle eccezioni, attivata quando un nodo rileva un'eccezione." + }, + "retry": { + "retry": "Ripetere", + "retryOnFailure": "Riprova in caso di errore", + "maxRetries": "Numero massimo di tentativi", + "retryInterval": "Intervallo tentativi", + "retryTimes": "Riprova {{times}} volte in caso di errore", + "retrying": "Riprovare...", + "retryFailedTimes": "{{times}} tentativi falliti", + "times": "tempi", + "retries": "{{num}} Tentativi", + "retrySuccessful": "Riprova riuscito", + "retryFailed": "Nuovo tentativo non riuscito", + "ms": "ms" + }, + "typeSwitch": { + "input": "Valore di input", + "variable": "Usa la variabile" + }, + "inputVars": "Variabili di input", + "pluginNotInstalled": "Il plugin non è installato" + }, + "start": { + "required": "richiesto", + "inputField": "Campo di Input", + "builtInVar": "Variabili Integrate", + "outputVars": { + "query": "Input Utente", + "memories": { + "des": "Cronologia conversazioni", + "type": "tipo di messaggio", + "content": "contenuto del messaggio" + }, + "files": "Elenco file" + }, + "noVarTip": "Imposta gli input che possono essere utilizzati nel Flusso di lavoro" + }, + "end": { + "outputs": "Output", + "output": { + "type": "tipo di output", + "variable": "variabile di output" + }, + "type": { + "none": "Nessuno", + "plain-text": "Testo Semplice", + "structured": "Strutturato" + } + }, + "answer": { + "answer": "Risposta", + "outputVars": "Variabili di Output" + }, + "llm": { + "model": "modello", + "variables": "variabili", + "context": "contesto", + "contextTooltip": "Puoi importare Conoscenza come contesto", + "notSetContextInPromptTip": "Per abilitare la funzionalità di contesto, compila la variabile del contesto nel PROMPT.", + "prompt": "prompt", + "roleDescription": { + "system": "Fornisci istruzioni di alto livello per la conversazione", + "user": "Fornisci istruzioni, query o qualsiasi input basato su testo al modello", + "assistant": "Le risposte del modello basate sui messaggi dell'utente" + }, + "addMessage": "Aggiungi Messaggio", + "vision": "vision", + "files": "File", + "resolution": { + "name": "Risoluzione", + "high": "Alta", + "low": "Bassa" + }, + "outputVars": { + "output": "Genera contenuto", + "reasoning_content": "Contenuto del ragionamento", + "usage": "Informazioni sull'utilizzo del modello" + }, + "singleRun": { + "variable": "Variabile" + }, + "sysQueryInUser": "sys.query nel messaggio utente è richiesto", + "jsonSchema": { + "warningTips": { + "saveSchema": "Si prega di completare la modifica del campo corrente prima di salvare lo schema." + }, + "descriptionPlaceholder": "Aggiungi descrizione", + "generate": "Genera", + "generateJsonSchema": "Genera Schema JSON", + "generationTip": "Puoi usare il linguaggio naturale per creare rapidamente uno schema JSON.", + "back": "Indietro", + "apply": "Applica", + "showAdvancedOptions": "Mostra opzioni avanzate", + "stringValidations": "Validazioni delle stringhe", + "regenerate": "Rigenerare", + "required": "richiesto", + "resetDefaults": "Ripristina", + "addField": "Aggiungi campo", + "promptPlaceholder": "Descrivi il tuo schema JSON...", + "title": "Schema di Output Strutturato", + "instruction": "Istruzione", + "addChildField": "Aggiungi campo bambino", + "fieldNamePlaceholder": "Nome del campo", + "promptTooltip": "Converte la descrizione del testo in una struttura JSON Schema standardizzata.", + "doc": "Scopri di più sull'output strutturato", + "import": "Importa da JSON", + "resultTip": "Ecco il risultato generato. Se non sei soddisfatto, puoi tornare indietro e modificare il tuo prompt.", + "generating": "Generazione dello schema JSON...", + "generatedResult": "Risultato generato" + }, + "reasoningFormat": { + "title": "Abilita la separazione dei tag di ragionamento", + "tagged": "Continua a pensare ai tag", + "separated": "Tag di pensiero separati", + "tooltip": "Estrai il contenuto dai tag think e conservalo nel campo reasoning_content." + } + }, + "knowledgeRetrieval": { + "queryVariable": "Variabile Query", + "knowledge": "Conoscenza", + "outputVars": { + "output": "Dati segmentati di recupero", + "content": "Contenuto segmentato", + "title": "Titolo segmentato", + "icon": "Icona segmentata", + "url": "URL segmentato", + "metadata": "Altri metadati", + "files": "File recuperati" + }, + "metadata": { + "options": { + "disabled": { + "title": "Disabilitato", + "subTitle": "Non abilitare il filtraggio dei metadati" + }, + "automatic": { + "subTitle": "Genera automaticamente condizioni di filtraggio dei metadati in base alla query dell'utente", + "desc": "Genera automaticamente condizioni di filtraggio dei metadati basate sulla variabile di query", + "title": "Automatico" + }, + "manual": { + "title": "Manuale", + "subTitle": "Aggiungere manualmente le condizioni di filtraggio dei metadati" + } + }, + "panel": { + "conditions": "Condizioni", + "select": "Seleziona variabile...", + "title": "Condizioni di filtro dei metadati", + "add": "Aggiungi condizione", + "datePlaceholder": "Scegli un orario...", + "placeholder": "Inserisci valore", + "search": "Cerca metadati" + }, + "title": "Filtraggio dei metadati", + "tip": "Il filtraggio dei metadati è il processo di utilizzo degli attributi dei metadati (come tag, categorie o permessi di accesso) per affinare e controllare il recupero di informazioni pertinenti all'interno di un sistema." + }, + "queryText": "Testo della query", + "queryAttachment": "Immagini della query" + }, + "http": { + "inputVars": "Variabili di Input", + "api": "API", + "apiPlaceholder": "Inserisci URL, digita ‘/’ per inserire variabile", + "notStartWithHttp": "L'API deve iniziare con http:// o https://", + "key": "Chiave", + "value": "Valore", + "bulkEdit": "Modifica di massa", + "keyValueEdit": "Modifica Chiave-Valore", + "headers": "Intestazioni", + "params": "Parametri", + "body": "Corpo", + "outputVars": { + "body": "Contenuto Risposta", + "statusCode": "Codice Stato Risposta", + "headers": "Elenco Intestazioni Risposta JSON", + "files": "Elenco File" + }, + "authorization": { + "authorization": "Autorizzazione", + "authorizationType": "Tipo di Autorizzazione", + "no-auth": "Nessuno", + "api-key": "API-Key", + "auth-type": "Tipo Auth", + "basic": "Basic", + "bearer": "Bearer", + "custom": "Custom", + "api-key-title": "API Key", + "header": "Intestazione" + }, + "insertVarPlaceholder": "digita '/' per inserire variabile", + "timeout": { + "title": "Timeout", + "connectLabel": "Timeout Connessione", + "connectPlaceholder": "Inserisci timeout connessione in secondi", + "readLabel": "Timeout Lettura", + "readPlaceholder": "Inserisci timeout lettura in secondi", + "writeLabel": "Timeout Scrittura", + "writePlaceholder": "Inserisci timeout scrittura in secondi" + }, + "binaryFileVariable": "Variabile file binario", + "type": "Digitare", + "extractListPlaceholder": "Inserisci l'indice delle voci dell'elenco, digita '/' inserisci la variabile", + "curl": { + "placeholder": "Incolla qui la stringa cURL", + "title": "Importazione da cURL" + }, + "verifySSL": { + "title": "Verifica il certificato SSL", + "warningTooltip": "Disabilitare la verifica SSL non è raccomandato per gli ambienti di produzione. Questo dovrebbe essere utilizzato solo in sviluppo o test, poiché rende la connessione vulnerabile a minacce alla sicurezza come gli attacchi man-in-the-middle." + } + }, + "code": { + "inputVars": "Variabili di Input", + "outputVars": "Variabili di Output", + "advancedDependencies": "Dipendenze Avanzate", + "advancedDependenciesTip": "Aggiungi alcune dipendenze precaricate che richiedono più tempo per essere consumate o che non sono predefinite qui", + "searchDependencies": "Cerca Dipendenze", + "syncFunctionSignature": "Sincronizza la firma della funzione con il codice" + }, + "templateTransform": { + "inputVars": "Variabili di Input", + "code": "Codice", + "codeSupportTip": "Supporta solo Jinja2", + "outputVars": { + "output": "Contenuto trasformato" + } + }, + "ifElse": { + "if": "Se", + "else": "Altrimenti", + "elseDescription": "Utilizzato per definire la logica che dovrebbe essere eseguita quando la condizione se non è soddisfatta.", + "and": "e", + "or": "o", + "operator": "Operatore", + "notSetVariable": "Si prega di impostare prima la variabile", + "comparisonOperator": { + "contains": "contiene", + "not contains": "non contiene", + "start with": "inizia con", + "end with": "finisce con", + "is": "è", + "is not": "non è", + "empty": "è vuoto", + "not empty": "non è vuoto", + "null": "è nullo", + "not null": "non è nullo", + "in": "in", + "all of": "tutto di", + "not in": "non in", + "exists": "Esiste", + "not exists": "non esiste", + "after": "dopo", + "before": "prima" + }, + "enterValue": "Inserisci valore", + "addCondition": "Aggiungi Condizione", + "conditionNotSetup": "Condizione NON impostata", + "selectVariable": "Seleziona variabile...", + "optionName": { + "url": "URL", + "localUpload": "Caricamento locale", + "image": "Immagine", + "doc": "Dottore", + "video": "Video", + "audio": "Audio" + }, + "addSubVariable": "Variabile secondaria", + "select": "Selezionare" + }, + "variableAssigner": { + "title": "Assegna variabili", + "outputType": "Tipo di Output", + "varNotSet": "Variabile non impostata", + "noVarTip": "Aggiungi le variabili da assegnare", + "type": { + "string": "Stringa", + "number": "Numero", + "object": "Oggetto", + "array": "Array" + }, + "aggregationGroup": "Gruppo di Aggregazione", + "aggregationGroupTip": "Abilitando questa funzione, l'aggregatore di variabili potrà aggregare più set di variabili.", + "addGroup": "Aggiungi Gruppo", + "outputVars": { + "varDescribe": "Output {{groupName}}" + }, + "setAssignVariable": "Imposta variabile assegnata" + }, + "assigner": { + "assignedVariable": "Variabile Assegnata", + "writeMode": "Modalità di Scrittura", + "writeModeTip": "Quando la VARIABILE ASSEGNATA è un array, la modalità di aggiunta inserisce alla fine.", + "over-write": "Sovrascrivere", + "append": "Aggiungere", + "plus": "Più", + "clear": "Cancellare", + "setVariable": "Imposta Variabile", + "variable": "Variabile", + "operations": { + "-=": "-=", + "overwrite": "Sovrascrivere", + "+=": "+=", + "*=": "*=", + "append": "Aggiungere", + "set": "Mettere", + "title": "Operazione", + "/=": "/=", + "over-write": "Sovrascrivere", + "extend": "Estendere", + "clear": "Chiaro", + "remove-last": "Rimuovi ultimo", + "remove-first": "Rimuovi primo" + }, + "setParameter": "Imposta parametro...", + "variables": "Variabili", + "noAssignedVars": "Nessuna variabile assegnata disponibile", + "assignedVarsDescription": "Le variabili assegnate devono essere variabili scrivibili, ad esempio variabili di conversazione.", + "varNotSet": "Variabile NON impostata", + "selectAssignedVariable": "Seleziona variabile assegnata...", + "noVarTip": "Fare clic sul pulsante \"+\" per aggiungere variabili" + }, + "tool": { + "inputVars": "Variabili di Input", + "outputVars": { + "text": "contenuto generato dallo strumento", + "files": { + "title": "file generati dallo strumento", + "type": "Tipo supportato. Attualmente supporta solo immagini", + "transfer_method": "Metodo di trasferimento. Il valore è remote_url o local_file", + "url": "URL immagine", + "upload_file_id": "ID file caricato" + }, + "json": "json generato dallo strumento" + }, + "authorize": "Autorizza", + "insertPlaceholder1": "Digita o premi", + "insertPlaceholder2": "inserisci variabile", + "settings": "Impostazioni" + }, + "questionClassifiers": { + "model": "modello", + "inputVars": "Variabili di Input", + "outputVars": { + "className": "Nome Classe", + "usage": "Informazioni sull'utilizzo del modello" + }, + "class": "Classe", + "classNamePlaceholder": "Scrivi il nome della tua classe", + "advancedSetting": "Impostazione Avanzata", + "topicName": "Nome Argomento", + "topicPlaceholder": "Scrivi il nome del tuo argomento", + "addClass": "Aggiungi Classe", + "instruction": "Istruzione", + "instructionTip": "Inserisci istruzioni aggiuntive per aiutare il classificatore di domande a capire meglio come categorizzare le domande.", + "instructionPlaceholder": "Scrivi la tua istruzione" + }, + "parameterExtractor": { + "inputVar": "Variabile di Input", + "outputVars": { + "isSuccess": "È successo. In caso di successo il valore è 1, in caso di fallimento il valore è 0.", + "errorReason": "Motivo dell'errore", + "usage": "Informazioni sull'utilizzo del modello" + }, + "extractParameters": "Estrai Parametri", + "importFromTool": "Importa dagli strumenti", + "addExtractParameter": "Aggiungi Parametro Estratto", + "addExtractParameterContent": { + "name": "Nome", + "namePlaceholder": "Nome Parametro Estratto", + "type": "Tipo", + "typePlaceholder": "Tipo Parametro Estratto", + "description": "Descrizione", + "descriptionPlaceholder": "Descrizione Parametro Estratto", + "required": "Richiesto", + "requiredContent": "Richiesto viene utilizzato solo come riferimento per l'inferenza del modello, e non per la convalida obbligatoria dell'output del parametro." + }, + "extractParametersNotSet": "Parametri Estratti non impostati", + "instruction": "Istruzione", + "instructionTip": "Inserisci istruzioni aggiuntive per aiutare l'estrattore di parametri a capire come estrarre i parametri.", + "advancedSetting": "Impostazione Avanzata", + "reasoningMode": "Modalità di ragionamento", + "reasoningModeTip": "Puoi scegliere la modalità di ragionamento appropriata in base alla capacità del modello di rispondere alle istruzioni per la chiamata delle funzioni o i prompt." + }, + "iteration": { + "deleteTitle": "Eliminare Nodo Iterazione?", + "deleteDesc": "Eliminando il nodo iterazione verranno eliminati tutti i nodi figlio", + "input": "Input", + "output": "Variabili di Output", + "iteration_one": "{{count}} Iterazione", + "iteration_other": "{{count}} Iterazioni", + "currentIteration": "Iterazione Corrente", + "ErrorMethod": { + "operationTerminated": "Terminato", + "continueOnError": "continua sull'errore", + "removeAbnormalOutput": "rimuovi-output-anomalo" + }, + "error_one": "{{conteggio}} Errore", + "parallelMode": "Modalità parallela", + "MaxParallelismTitle": "Parallelismo massimo", + "error_other": "{{conteggio}} Errori", + "parallelModeEnableDesc": "In modalità parallela, le attività all'interno delle iterazioni supportano l'esecuzione parallela. È possibile configurare questa opzione nel pannello delle proprietà a destra.", + "MaxParallelismDesc": "Il parallelismo massimo viene utilizzato per controllare il numero di attività eseguite contemporaneamente in una singola iterazione.", + "errorResponseMethod": "Metodo di risposta all'errore", + "parallelModeEnableTitle": "Modalità parallela abilitata", + "parallelModeUpper": "MODALITÀ PARALLELA", + "comma": ",", + "parallelPanelDesc": "In modalità parallela, le attività nell'iterazione supportano l'esecuzione parallela.", + "answerNodeWarningDesc": "Avviso in modalità parallela: i nodi di risposta, le assegnazioni di variabili di conversazione e le operazioni di lettura/scrittura persistenti all'interno delle iterazioni possono causare eccezioni.", + "flattenOutput": "Appiattisci output", + "flattenOutputDesc": "Quando abilitato, se tutti i risultati delle iterazioni sono array, saranno uniti in un unico array. Quando disabilitato, i risultati manterranno una struttura di array nidificati." + }, + "note": { + "addNote": "Aggiungi Nota", + "editor": { + "placeholder": "Scrivi la tua nota...", + "small": "Piccolo", + "medium": "Medio", + "large": "Grande", + "bold": "Grassetto", + "italic": "Corsivo", + "strikethrough": "Barrato", + "link": "Link", + "openLink": "Apri", + "unlink": "Rimuovi link", + "enterUrl": "Inserisci URL...", + "invalidUrl": "URL non valido", + "bulletList": "Elenco puntato", + "showAuthor": "Mostra Autore" + } + }, + "docExtractor": { + "outputVars": { + "text": "Testo estratto" + }, + "learnMore": "Ulteriori informazioni", + "inputVar": "Variabile di input", + "supportFileTypes": "Tipi di file supportati: {{types}}." + }, + "listFilter": { + "outputVars": { + "last_record": "Ultimo record", + "result": "Filtra risultato", + "first_record": "Primo record" + }, + "asc": "ASC", + "limit": "Primi N", + "inputVar": "Variabile di input", + "selectVariableKeyPlaceholder": "Seleziona la chiave della variabile secondaria", + "filterConditionComparisonOperator": "Operatore di confronto delle condizioni di filtro", + "filterCondition": "Condizione del filtro", + "filterConditionKey": "Chiave condizione filtro", + "desc": "DESC", + "filterConditionComparisonValue": "Valore della condizione di filtro", + "orderBy": "Ordina per", + "extractsCondition": "Estrai l'elemento N" + }, + "agent": { + "strategy": { + "selectTip": "Seleziona la strategia agentica", + "searchPlaceholder": "Strategia agente di ricerca", + "label": "Strategia agentica", + "configureTipDesc": "Dopo aver configurato la strategia agentic, questo nodo caricherà automaticamente le configurazioni rimanenti. La strategia influenzerà il meccanismo del ragionamento con strumenti a più fasi.", + "tooltip": "Diverse strategie agentiche determinano il modo in cui il sistema pianifica ed esegue le chiamate agli strumenti in più fasi", + "shortLabel": "Strategia", + "configureTip": "Configurare la strategia agentic." + }, + "pluginInstaller": { + "installing": "Installazione", + "install": "Installare" + }, + "modelNotInMarketplace": { + "manageInPlugins": "Gestisci nei plugin", + "desc": "Questo modello viene installato dal repository locale o GitHub. Si prega di utilizzare dopo l'installazione.", + "title": "Modello non installato" + }, + "modelNotSupport": { + "descForVersionSwitch": "La versione del plug-in installata non fornisce questo modello. Fare clic per cambiare versione.", + "title": "Modello non supportato", + "desc": "La versione del plug-in installata non fornisce questo modello." + }, + "modelSelectorTooltips": { + "deprecated": "Questo modello è deprecato" + }, + "outputVars": { + "files": { + "type": "Tipo di supporto. Ora supporta solo l'immagine", + "title": "File generati dall'agente", + "transfer_method": "Metodo di trasferimento. Il valore è remote_url o local_file", + "url": "URL immagine", + "upload_file_id": "Carica l'ID del file" + }, + "text": "Contenuto generato dall'agente", + "usage": "Informazioni sull'utilizzo del modello", + "json": "JSON generato dall'agente" + }, + "checkList": { + "strategyNotSelected": "Strategia non selezionata" + }, + "installPlugin": { + "cancel": "Annulla", + "title": "Installa il plugin", + "install": "Installare", + "changelog": "Registro delle modifiche", + "desc": "Sto per installare il seguente plugin" + }, + "toolNotInstallTooltip": "{{tool}} non è installato", + "modelNotSelected": "Modello non selezionato", + "modelNotInstallTooltip": "Questo modello non è installato", + "notAuthorized": "Non autorizzato", + "learnMore": "Ulteriori informazioni", + "pluginNotInstalledDesc": "Questo plugin viene installato da GitHub. Vai su Plugin per reinstallare", + "model": "modello", + "configureModel": "Configura modello", + "linkToPlugin": "Collegamento ai plug-in", + "tools": "Utensileria", + "unsupportedStrategy": "Strategia non supportata", + "toolNotAuthorizedTooltip": "{{strumento}} Non autorizzato", + "strategyNotSet": "Strategia agentica non impostata", + "toolbox": "cassetta degli attrezzi", + "maxIterations": "Numero massimo di iterazioni", + "strategyNotInstallTooltip": "{{strategy}} non è installato", + "strategyNotFoundDesc": "La versione del plugin installata non fornisce questa strategia.", + "strategyNotFoundDescAndSwitchVersion": "La versione del plugin installata non fornisce questa strategia. Fare clic per cambiare versione.", + "pluginNotInstalled": "Questo plugin non è installato", + "pluginNotFoundDesc": "Questo plugin viene installato da GitHub. Vai su Plugin per reinstallare", + "parameterSchema": "Schema dei parametri", + "clickToViewParameterSchema": "Clicca per visualizzare lo schema dei parametri" + }, + "loop": { + "ErrorMethod": { + "operationTerminated": "Terminato", + "removeAbnormalOutput": "Rimuovi l'output anormale", + "continueOnError": "Continua con l'errore" + }, + "currentLoop": "Anello Corrente", + "breakConditionTip": "Solo le variabili all'interno dei cicli con condizioni di terminazione e le variabili di conversazione possono essere riferite.", + "loopVariables": "Variabili di ciclo", + "inputMode": "Modalità di input", + "errorResponseMethod": "Metodo di risposta all'errore", + "error_one": "{{count}} Errore", + "loop_one": "{{count}} Ciclo", + "loopMaxCount": "Conteggio massimo dei loop", + "breakCondition": "Condizione di terminazione del ciclo", + "comma": ",", + "loopNode": "Nodo Ciclico", + "finalLoopVariables": "Variabili del ciclo finale", + "loopMaxCountError": "Si prega di inserire un conteggio massimo di cicli valido, compreso tra 1 e {{maxCount}}", + "currentLoopCount": "Conteggio attuale del ciclo: {{count}}", + "input": "Input", + "setLoopVariables": "Imposta le variabili all'interno dell'ambito del ciclo", + "deleteTitle": "Elimina nodo ciclo?", + "output": "Variabile di Output", + "initialLoopVariables": "Variabili di loop iniziali", + "deleteDesc": "Cancellare il nodo di ciclo rimuoverà tutti i nodi figli", + "loop_other": "{{count}} anelli", + "variableName": "Nome Variabile", + "totalLoopCount": "Conteggio totale dei cicli: {{count}}", + "exitConditionTip": "Un nodo di ciclo ha bisogno di almeno una condizione di uscita.", + "error_other": "{{count}} Errori" + }, + "dataSource": { + "supportedFileFormatsPlaceholder": "Estensione del file, e.g. doc", + "add": "Aggiungere un'origine dati", + "supportedFileFormats": "Formati di file supportati" + }, + "knowledgeBase": { + "chunkStructureTip": { + "learnMore": "Ulteriori informazioni", + "title": "Si prega di scegliere una struttura a blocchi", + "message": "La Knowledge Base di Dify supporta tre strutture di suddivisione in blocchi: Generale, Padre-figlio e Domande e risposte. Ogni Knowledge Base può avere una sola struttura. L'output del nodo precedente deve essere allineato con la struttura del blocco selezionata. Si noti che la scelta della struttura di suddivisione in blocchi influisce sui metodi di indice disponibili." + }, + "indexMethodIsRequired": "È necessario il metodo dell'indice", + "chunkStructure": "Struttura a blocchi", + "changeChunkStructure": "Modifica la struttura dei blocchi", + "chooseChunkStructure": "Scegliere una struttura a blocchi", + "aboutRetrieval": "Informazioni sul metodo di recupero.", + "chunkIsRequired": "È necessaria una struttura a blocchi", + "retrievalSettingIsRequired": "È richiesta l'impostazione di recupero", + "chunksInputTip": "La variabile di input del nodo della base di conoscenza è Chunks. Il tipo di variabile è un oggetto con uno specifico schema JSON che deve essere coerente con la struttura del chunk selezionato.", + "chunksInput": "Pezzetti", + "chunksVariableIsRequired": "La variabile Chunks è richiesta", + "rerankingModelIsRequired": "È richiesto un modello di riordinamento", + "embeddingModelIsRequired": "È necessario un modello di embedding", + "embeddingModelIsInvalid": "Il modello di embedding non è valido", + "rerankingModelIsInvalid": "Il modello di riorganizzazione è non valido" + }, + "triggerPlugin": { + "authorized": "Autorizzato", + "notConfigured": "Non configurato", + "notAuthorized": "Non autorizzato", + "selectSubscription": "Seleziona abbonamento", + "availableSubscriptions": "Abbonamenti disponibili", + "addSubscription": "Aggiungi Nuovo Abbonamento", + "removeSubscription": "Rimuovi abbonamento", + "subscriptionRemoved": "Abbonamento rimosso con successo", + "error": "Errore", + "configuration": "Configurazione", + "remove": "Rimuovi", + "or": "O", + "useOAuth": "Usa OAuth", + "useApiKey": "Usa la chiave API", + "authenticationFailed": "Autenticazione fallita", + "authenticationSuccess": "Autenticazione riuscita", + "oauthConfigFailed": "La configurazione di OAuth è fallita", + "configureOAuthClient": "Configura client OAuth", + "oauthClientDescription": "Configura le credenziali del client OAuth per abilitare l'autenticazione", + "oauthClientSaved": "Configurazione del client OAuth salvata con successo", + "configureApiKey": "Configura la chiave API", + "apiKeyDescription": "Configura le credenziali della chiave API per l'autenticazione", + "apiKeyConfigured": "Chiave API configurata con successo", + "configurationFailed": "Configurazione non riuscita", + "failedToStart": "Impossibile avviare il processo di autenticazione", + "credentialsVerified": "Credenziali verificate con successo", + "credentialVerificationFailed": "Verifica delle credenziali non riuscita", + "verifyAndContinue": "Verifica e continua", + "configureParameters": "Configura Parametri", + "parametersDescription": "Configura i parametri e le proprietà del trigger", + "configurationComplete": "Configurazione completata", + "configurationCompleteDescription": "Il tuo trigger è stato configurato correttamente", + "configurationCompleteMessage": "La configurazione del tuo trigger è ora completa e pronta all'uso.", + "parameters": "Parametri", + "properties": "Proprietà", + "propertiesDescription": "Proprietà di configurazione aggiuntive per questo trigger", + "noConfigurationRequired": "Nessuna configurazione aggiuntiva necessaria per questo trigger.", + "subscriptionName": "Nome dell'abbonamento", + "subscriptionNameDescription": "Inserisci un nome univoco per questa sottoscrizione del trigger", + "subscriptionNamePlaceholder": "Inserisci il nome dell'abbonamento...", + "subscriptionNameRequired": "Il nome dell'abbonamento è obbligatorio", + "subscriptionRequired": "È necessario abbonarsi" + }, + "triggerSchedule": { + "title": "Programma", + "nodeTitle": "Attivatore della pianificazione", + "notConfigured": "Non configurato", + "useCronExpression": "Usa un'espressione cron", + "useVisualPicker": "Usa il selettore visivo", + "frequency": { + "label": "FREQUENZA", + "hourly": "orario", + "daily": "Quotidiano", + "weekly": "Settimanale", + "monthly": "Mensile" + }, + "selectFrequency": "Seleziona frequenza", + "frequencyLabel": "Frequenza", + "nextExecution": "Prossima esecuzione", + "weekdays": "Giorni della settimana", + "time": "Tempo", + "cronExpression": "Espressione Cron", + "nextExecutionTime": "PROSSIMA ORA DI ESECUZIONE", + "nextExecutionTimes": "Prossimi 5 tempi di esecuzione", + "startTime": "Orario di inizio", + "executeNow": "Esecuzione adesso", + "selectDateTime": "Seleziona Data e Ora", + "hours": "Ore", + "minutes": "Minuti", + "onMinute": "In un minuto", + "days": "Giorni", + "lastDay": "Ultimo giorno", + "lastDayTooltip": "Non tutti i mesi hanno 31 giorni. Usa l'opzione 'ultimo giorno' per selezionare l'ultimo giorno di ogni mese.", + "mode": "Modalità", + "timezone": "Fuso orario", + "visualConfig": "Configurazione visiva", + "monthlyDay": "Giorno del mese", + "executionTime": "Tempo di esecuzione", + "invalidTimezone": "Fuso orario non valido", + "invalidCronExpression": "Espressione cron non valida", + "noValidExecutionTime": "Non è possibile calcolare un tempo di esecuzione valido", + "executionTimeCalculationError": "Impossibile calcolare i tempi di esecuzione", + "invalidFrequency": "Frequenza non valida", + "invalidStartTime": "Ora di inizio non valida", + "startTimeMustBeFuture": "L'orario di inizio deve essere nel futuro", + "invalidTimeFormat": "Formato orario non valido (previsto HH:MM AM/PM)", + "invalidWeekday": "Giorno della settimana non valido: {{weekday}}", + "invalidMonthlyDay": "Il giorno del mese deve essere compreso tra 1 e 31 o 'ultimo'", + "invalidOnMinute": "I minuti devono essere compresi tra 0 e 59", + "invalidExecutionTime": "Tempo di esecuzione non valido", + "executionTimeMustBeFuture": "Il tempo di esecuzione deve essere nel futuro" + }, + "triggerWebhook": { + "title": "Trigger Webhook", + "nodeTitle": "🔗 Trigger del Webhook", + "configPlaceholder": "La configurazione del trigger del webhook sarà implementata qui", + "webhookUrl": "URL del webhook", + "webhookUrlPlaceholder": "Fai clic su genera per creare l'URL del webhook", + "generate": "Generare", + "copy": "Copia", + "test": "Test", + "urlGenerated": "URL del webhook generato con successo", + "urlGenerationFailed": "Impossibile generare l'URL del webhook", + "urlCopied": "URL copiato negli appunti", + "method": "Metodo", + "contentType": "Tipo di contenuto", + "queryParameters": "Parametri di query", + "headerParameters": "Parametri dell'intestazione", + "requestBodyParameters": "Parametri del corpo della richiesta", + "parameterName": "Nome della variabile", + "varName": "Nome della variabile", + "varType": "Tipo", + "varNamePlaceholder": "Inserisci il nome della variabile...", + "required": "Obbligatorio", + "addParameter": "Aggiungi", + "addHeader": "Aggiungi", + "noParameters": "Nessun parametro configurato", + "noQueryParameters": "Nessun parametro di query configurato", + "noHeaders": "Nessun header configurato", + "noBodyParameters": "Nessun parametro del corpo configurato", + "debugUrlTitle": "Per le prove, usa sempre questo URL", + "debugUrlCopy": "Clicca per copiare", + "debugUrlCopied": "Copiato!", + "debugUrlPrivateAddressWarning": "Questo URL sembra essere un indirizzo interno, il che potrebbe causare il fallimento delle richieste webhook. Puoi cambiare TRIGGER_URL con un indirizzo pubblico.", + "errorHandling": "Gestione degli errori", + "errorStrategy": "Gestione degli errori", + "responseConfiguration": "Risposta", + "asyncMode": "Modalità asincrona", + "statusCode": "Codice di stato", + "responseBody": "Corpo della risposta", + "responseBodyPlaceholder": "Scrivi qui il corpo della tua risposta", + "headers": "Intestazioni", + "validation": { + "webhookUrlRequired": "L'URL del webhook è obbligatorio", + "invalidParameterType": "Tipo di parametro non valido \"{{type}}\" per il parametro \"{{name}}\"" + } + } + }, + "tracing": { + "stopBy": "Interrotto da {{user}}" + }, + "variableReference": { + "noAvailableVars": "Nessuna variabile disponibile", + "noAssignedVars": "Nessuna variabile assegnata disponibile", + "noVarsForOperation": "Non ci sono variabili disponibili per l'assegnazione con l'operazione selezionata.", + "assignedVarsDescription": "Le variabili assegnate devono essere variabili scrivibili, ad esempio", + "conversationVars": "Variabili di conversazione" + }, + "versionHistory": { + "filter": { + "reset": "Ripristina filtro", + "all": "Tutto", + "onlyYours": "Solo tuo", + "empty": "Nessuna cronologia delle versioni corrispondente trovata", + "onlyShowNamedVersions": "Mostra solo le versioni con nome" + }, + "editField": { + "titleLengthLimit": "Il titolo non può superare {{limit}} caratteri", + "releaseNotes": "Note di rilascio", + "title": "Titolo", + "releaseNotesLengthLimit": "Le note di rilascio non possono superare i {{limit}} caratteri" + }, + "action": { + "restoreSuccess": "Versione ripristinata", + "restoreFailure": "Impossibile ripristinare la versione", + "deleteSuccess": "Versione eliminata", + "updateSuccess": "Versione aggiornata", + "deleteFailure": "Impossibile eliminare la versione", + "updateFailure": "Impossibile aggiornare la versione", + "copyIdSuccess": "ID copiato negli appunti" + }, + "latest": "Ultimo", + "defaultName": "Versione senza titolo", + "deletionTip": "La cancellazione è irreversibile, si prega di confermare.", + "nameThisVersion": "Chiamare questa versione", + "editVersionInfo": "Modifica le informazioni sulla versione", + "releaseNotesPlaceholder": "Descrivi cosa è cambiato", + "currentDraft": "Bozza attuale", + "restorationTip": "Dopo il ripristino della versione, la bozza attuale verrà sovrascritta.", + "title": "Versioni", + "copyId": "Copia ID" + }, + "debug": { + "noData": { + "runThisNode": "Esegui questo nodo", + "description": "I risultati dell'ultima esecuzione verranno visualizzati qui" + }, + "variableInspect": { + "trigger": { + "cached": "Visualizza le variabili memorizzate nella cache", + "clear": "Chiaro", + "running": "Caching stato di esecuzione", + "normal": "Ispezione Variabile", + "stop": "Ferma la corsa" + }, + "chatNode": "Conversazione", + "clearNode": "Svuota la variabile cached", + "envNode": "Ambiente", + "systemNode": "Sistema", + "title": "Ispezione delle variabili", + "edited": "Modificato", + "emptyLink": "Scopri di più", + "resetConversationVar": "Reimposta la variabile della conversazione al valore predefinito", + "view": "Visualizza log", + "clearAll": "Ripristina tutto", + "reset": "Ripristina il valore dell'ultima esecuzione", + "emptyTip": "Dopo aver eseguito un nodo sulla tela o eseguendo un nodo passo dopo passo, puoi visualizzare il valore attuale della variabile nodo in Ispeziona Variabile.", + "export": "esportazione", + "largeData": "Dati di grandi dimensioni, anteprima di sola lettura. Esporta per visualizzare tutto.", + "exportToolTip": "Esporta variabile come file", + "largeDataNoExport": "Dati di grandi dimensioni - solo anteprima parziale", + "listening": { + "title": "In ascolto degli eventi dai trigger...", + "tip": "Ora puoi simulare i trigger degli eventi inviando richieste di prova all'endpoint HTTP {{nodeName}} oppure usarlo come URL di callback per il debug degli eventi in tempo reale. Tutti i risultati possono essere visualizzati direttamente nel Visualizzatore di Variabili.", + "tipPlugin": "Ora puoi creare eventi in {{- pluginName}} e recuperare i risultati di questi eventi nell'Ispettore Variabili.", + "tipSchedule": "Ascolto degli eventi dai trigger del programma.\nProssima esecuzione programmata: {{nextTriggerTime}}", + "tipFallback": "Attendere gli eventi trigger in arrivo. I risultati appariranno qui.", + "defaultNodeName": "questo trigger", + "defaultPluginName": "questo plugin attiva", + "defaultScheduleTime": "Non configurato", + "selectedTriggers": "trigger selezionati", + "stopButton": "Fermati" + } + }, + "settingsTab": "Impostazioni", + "lastRunTab": "Ultima corsa", + "relations": { + "dependents": "Dipendenti", + "noDependencies": "Nessuna dipendenza", + "dependencies": "Dipendenze", + "noDependents": "Nessuna persona a carico", + "dependentsDescription": "Nodi che si basano su questo nodo", + "dependenciesDescription": "Nodi su cui si basa questo nodo" + }, + "relationsTab": "Relazioni", + "copyLastRun": "Copia ultimo eseguito", + "noMatchingInputsFound": "Nessun input corrispondente trovato dall'ultimo funzionamento.", + "copyLastRunError": "Impossibile copiare gli input dell'ultima esecuzione", + "noLastRunFound": "Nessuna esecuzione precedente trovata", + "lastOutput": "Ultimo output", + "lastRunInputsCopied": "{{count}} input copiato dall'ultima esecuzione" + }, + "sidebar": { + "exportWarning": "Esporta la versione salvata corrente", + "exportWarningDesc": "Questo exporterà l'attuale versione salvata del tuo flusso di lavoro. Se hai modifiche non salvate nell'editor, ti preghiamo di salvarle prima utilizzando l'opzione di esportazione nel canvas del flusso di lavoro." + }, + "publishLimit": { + "startNodeTitlePrefix": "Aggiorna a", + "startNodeTitleSuffix": "sblocca trigger illimitati per flusso di lavoro", + "startNodeDesc": "Hai raggiunto il limite di 2 trigger per flusso di lavoro per questo piano. Effettua l'upgrade per pubblicare questo flusso di lavoro." + }, + "error": { + "startNodeRequired": "Per favore aggiungi prima un nodo iniziale prima di {{operation}}", + "operations": { + "connectingNodes": "collegamento dei nodi", + "addingNodes": "aggiunta di nodi", + "modifyingWorkflow": "modifica del flusso di lavoro", + "updatingWorkflow": "aggiornamento del flusso di lavoro" + } + }, + "customWebhook": "Webhook personalizzato", + "difyTeam": "Team Dify", + "triggerStatus": { + "enabled": "GRILLETTO", + "disabled": "ATTIVATORE • DISABILITATO" + }, + "entryNodeStatus": { + "enabled": "INIZIO", + "disabled": "AVVIO • DISABILITATO" + }, + "onboarding": { + "title": "Seleziona un nodo di partenza per iniziare", + "description": "Nodi di partenza diversi hanno capacità diverse. Non preoccuparti, potrai sempre cambiarli più tardi.", + "userInputFull": "Input utente (nodo iniziale originale)", + "userInputDescription": "Nodo iniziale che consente di impostare variabili di input dell'utente, con app web, API di servizio, server MCP e workflow come funzionalità degli strumenti.", + "trigger": "Innescare", + "triggerDescription": "I trigger possono fungere da nodo iniziale di un flusso di lavoro, come attività programmate, webhook personalizzati o integrazioni con altre app.", + "back": "Indietro", + "learnMore": "Scopri di più", + "aboutStartNode": "riguardo al nodo iniziale.", + "escTip": { + "press": "Premi", + "key": "esc", + "toDismiss": "licenziare" + } + } +} diff --git a/web/i18n/it-IT/workflow.ts b/web/i18n/it-IT/workflow.ts deleted file mode 100644 index 33aef2cea0..0000000000 --- a/web/i18n/it-IT/workflow.ts +++ /dev/null @@ -1,1322 +0,0 @@ -const translation = { - common: { - undo: 'Annulla', - redo: 'Ripeti', - editing: 'Modifica in corso', - autoSaved: 'Salvataggio automatico', - unpublished: 'Non pubblicato', - published: 'Pubblicato', - publish: 'Pubblica', - update: 'Aggiorna', - run: 'Esegui test', - running: 'In esecuzione', - inRunMode: 'In modalità di esecuzione', - inPreview: 'In anteprima', - inPreviewMode: 'In modalità anteprima', - preview: 'Anteprima', - viewRunHistory: 'Visualizza cronologia esecuzioni', - runHistory: 'Cronologia esecuzioni', - goBackToEdit: 'Torna all\'editor', - conversationLog: 'Registro conversazioni', - debugAndPreview: 'Anteprima', - restart: 'Riavvia', - currentDraft: 'Bozza corrente', - currentDraftUnpublished: 'Bozza corrente non pubblicata', - latestPublished: 'Ultimo pubblicato', - publishedAt: 'Pubblicato', - restore: 'Ripristina', - runApp: 'Esegui App', - batchRunApp: 'Esegui App in Batch', - accessAPIReference: 'Accedi alla Riferimento API', - embedIntoSite: 'Incorpora nel Sito', - addTitle: 'Aggiungi titolo...', - addDescription: 'Aggiungi descrizione...', - noVar: 'Nessuna variabile', - searchVar: 'Cerca variabile', - variableNamePlaceholder: 'Nome variabile', - setVarValuePlaceholder: 'Imposta variabile', - needConnectTip: 'Questo passaggio non è collegato a nulla', - maxTreeDepth: 'Limite massimo di {{depth}} nodi per ramo', - workflowProcess: 'Processo di flusso di lavoro', - notRunning: 'Non ancora in esecuzione', - previewPlaceholder: - 'Inserisci contenuto nella casella sottostante per avviare il debug del Chatbot', - effectVarConfirm: { - title: 'Rimuovi Variabile', - content: - 'La variabile è utilizzata in altri nodi. Vuoi comunque rimuoverla?', - }, - insertVarTip: 'Premi il tasto \'/\' per inserire rapidamente', - processData: 'Elabora Dati', - input: 'Input', - output: 'Output', - jinjaEditorPlaceholder: 'Digita \'/\' o \'{\' per inserire variabile', - viewOnly: 'Solo visualizzazione', - showRunHistory: 'Mostra cronologia esecuzioni', - enableJinja: 'Abilita supporto template Jinja', - learnMore: 'Scopri di più', - copy: 'Copia', - duplicate: 'Duplica', - pasteHere: 'Incolla Qui', - pointerMode: 'Modalità Puntatore', - handMode: 'Modalità Mano', - model: 'Modello', - workflowAsTool: 'Flusso di lavoro come Strumento', - configureRequired: 'Configurazione Richiesta', - configure: 'Configura', - manageInTools: 'Gestisci in Strumenti', - workflowAsToolTip: - 'È richiesta una nuova configurazione dello strumento dopo l\'aggiornamento del flusso di lavoro.', - viewDetailInTracingPanel: 'Visualizza dettagli', - syncingData: 'Sincronizzazione dei dati in corso, solo pochi secondi.', - importDSL: 'Importa DSL', - importDSLTip: - 'La bozza corrente verrà sovrascritta. Esporta il flusso di lavoro come backup prima di importare.', - backupCurrentDraft: 'Backup Bozza Corrente', - chooseDSL: 'Scegli file DSL(yml)', - overwriteAndImport: 'Sovrascrivi e Importa', - importFailure: 'Importazione fallita', - importSuccess: 'Importazione riuscita', - parallelTip: { - click: { - title: 'Clic', - desc: 'per aggiungere', - }, - drag: { - title: 'Trascinare', - desc: 'per collegare', - }, - depthLimit: 'Limite di livelli di annidamento parallelo di {{num}} livelli', - limit: 'Il parallelismo è limitato ai rami {{num}}.', - }, - disconnect: 'Disconnettere', - jumpToNode: 'Vai a questo nodo', - addParallelNode: 'Aggiungi nodo parallelo', - parallel: 'PARALLELO', - branch: 'RAMO', - fileUploadTip: 'Le funzioni di caricamento delle immagini sono state aggiornate al caricamento dei file.', - ImageUploadLegacyTip: 'Ora è possibile creare variabili di tipo file nel modulo iniziale. In futuro non supporteremo più la funzione di caricamento delle immagini.', - importWarning: 'Cautela', - importWarningDetails: 'La differenza di versione DSL può influire su alcune funzionalità', - openInExplore: 'Apri in Esplora', - onFailure: 'In caso di guasto', - addFailureBranch: 'Aggiungi ramo non riuscito', - noHistory: 'Nessuna storia', - loadMore: 'Carica più flussi di lavoro', - publishUpdate: 'Pubblica aggiornamento', - versionHistory: 'Cronologia delle versioni', - exitVersions: 'Uscita Versioni', - exportSVG: 'Esporta come SVG', - exportImage: 'Esporta immagine', - exportJPEG: 'Esporta come JPEG', - exportPNG: 'Esporta come PNG', - needOutputNode: 'Deve essere aggiunto il nodo di uscita', - addBlock: 'Aggiungi nodo', - needAnswerNode: 'Deve essere aggiunto il nodo di risposta', - tagBound: 'Numero di app che utilizzano questo tag', - currentWorkflow: 'Flusso di lavoro corrente', - currentView: 'Vista corrente', - moreActions: 'Altre azioni', - listening: 'Ascoltando', - chooseStartNodeToRun: 'Scegli il nodo di partenza da eseguire', - runAllTriggers: 'Esegui tutti i trigger', - features: 'Caratteristiche', - featuresDescription: 'Migliorare l\'esperienza utente dell\'app web', - featuresDocLink: 'Scopri di più', - needAdd: 'È necessario aggiungere il nodo {{node}}', - needStartNode: 'Deve essere aggiunto almeno un nodo iniziale', - workflowAsToolDisabledHint: 'Pubblica il flusso di lavoro più recente e assicurati che ci sia un nodo di Input Utente collegato prima di configurarlo come strumento.', - }, - env: { - envPanelTitle: 'Variabili d\'Ambiente', - envDescription: 'Le variabili d\'ambiente possono essere utilizzate per memorizzare informazioni private e credenziali. Sono di sola lettura e possono essere separate dal file DSL durante l\'esportazione.', - envPanelButton: 'Aggiungi Variabile', - modal: { - title: 'Aggiungi Variabile d\'Ambiente', - editTitle: 'Modifica Variabile d\'Ambiente', - type: 'Tipo', - name: 'Nome', - namePlaceholder: 'nome env', - value: 'Valore', - valuePlaceholder: 'valore env', - secretTip: 'Utilizzato per definire informazioni o dati sensibili, con impostazioni DSL configurate per la prevenzione delle fughe.', - description: 'Descrizione', - descriptionPlaceholder: 'Descrivi la variabile', - }, - export: { - title: 'Esportare variabili d\'ambiente segrete?', - checkbox: 'Esporta valori segreti', - ignore: 'Esporta DSL', - export: 'Esporta DSL con valori segreti', - }, - }, - globalVar: { - title: 'Variabili di sistema', - description: 'Le variabili di sistema sono variabili globali che possono essere richiamate da qualsiasi nodo senza collegamenti quando il tipo è corretto, come l\'ID dell\'utente finale e l\'ID del workflow.', - fieldsDescription: { - conversationId: 'ID conversazione', - dialogCount: 'Conteggio conversazioni', - userId: 'ID utente', - triggerTimestamp: 'Timestamp di avvio dell\'applicazione', - appId: 'ID applicazione', - workflowId: 'ID workflow', - workflowRunId: 'ID esecuzione workflow', - }, - }, - chatVariable: { - panelTitle: 'Variabili di Conversazione', - panelDescription: 'Le Variabili di Conversazione sono utilizzate per memorizzare informazioni interattive che il LLM deve ricordare, inclusi la cronologia delle conversazioni, i file caricati e le preferenze dell\'utente. Sono in lettura e scrittura.', - docLink: 'Visita la nostra documentazione per saperne di più.', - button: 'Aggiungi Variabile', - modal: { - title: 'Aggiungi Variabile di Conversazione', - editTitle: 'Modifica Variabile di Conversazione', - name: 'Nome', - namePlaceholder: 'Nome della variabile', - type: 'Tipo', - value: 'Valore Predefinito', - valuePlaceholder: 'Valore predefinito, lascia vuoto per non impostare', - description: 'Descrizione', - descriptionPlaceholder: 'Descrivi la variabile', - editInJSON: 'Modifica in JSON', - oneByOne: 'Aggiungi uno alla volta', - editInForm: 'Modifica nel Modulo', - arrayValue: 'Valore', - addArrayValue: 'Aggiungi Valore', - objectKey: 'Chiave', - objectType: 'Tipo', - objectValue: 'Valore Predefinito', - }, - storedContent: 'Contenuto memorizzato', - updatedAt: 'Aggiornato il ', - }, - changeHistory: { - title: 'Cronologia Modifiche', - placeholder: 'Non hai ancora modificato nulla', - clearHistory: 'Cancella Cronologia', - hint: 'Suggerimento', - hintText: - 'Le tue azioni di modifica vengono tracciate in una cronologia delle modifiche, che viene memorizzata sul tuo dispositivo per tutta la durata di questa sessione. Questa cronologia verrà cancellata quando lascerai l\'editor.', - stepBackward_one: '{{count}} passo indietro', - stepBackward_other: '{{count}} passi indietro', - stepForward_one: '{{count}} passo avanti', - stepForward_other: '{{count}} passi avanti', - sessionStart: 'Inizio sessione', - currentState: 'Stato attuale', - noteAdd: 'Nota aggiunta', - noteChange: 'Nota modificata', - noteDelete: 'Nota eliminata', - nodeDescriptionChange: 'Descrizione del nodo cambiata', - nodePaste: 'Nodo incollato', - nodeChange: 'Nodo cambiato', - nodeResize: 'Nodo ridimensionato', - nodeDelete: 'Nodo eliminato', - nodeTitleChange: 'Titolo del nodo cambiato', - edgeDelete: 'Nodo disconnesso', - nodeAdd: 'Nodo aggiunto', - nodeDragStop: 'Nodo spostato', - nodeConnect: 'Nodo connesso', - }, - errorMsg: { - fieldRequired: '{{field}} è richiesto', - authRequired: 'È richiesta l\'autorizzazione', - invalidJson: '{{field}} è un JSON non valido', - fields: { - variable: 'Nome Variabile', - variableValue: 'Valore Variabile', - code: 'Codice', - model: 'Modello', - rerankModel: 'Modello Rerank', - visionVariable: 'Visione variabile', - }, - invalidVariable: 'Variabile non valida', - rerankModelRequired: 'Prima di attivare il modello di reranking, conferma che il modello è stato configurato correttamente nelle impostazioni.', - toolParameterRequired: '{{field}}: il parametro [{{param}}] è obbligatorio', - noValidTool: '{{field}} nessuno strumento valido selezionato', - startNodeRequired: 'Per favore aggiungi prima un nodo iniziale prima di {{operation}}', - }, - singleRun: { - testRun: 'Esecuzione Test ', - startRun: 'Avvia Esecuzione', - running: 'In esecuzione', - testRunIteration: 'Iterazione Esecuzione Test', - back: 'Indietro', - iteration: 'Iterazione', - loop: 'Anello', - reRun: 'Ripetizione', - preparingDataSource: 'Preparazione dell\'origine dati', - }, - tabs: { - 'tools': 'Strumenti', - 'allTool': 'Tutti', - 'customTool': 'Personalizzato', - 'workflowTool': 'Flusso di lavoro', - 'question-understand': 'Comprensione Domanda', - 'logic': 'Logica', - 'transform': 'Trasforma', - 'utilities': 'Utility', - 'noResult': 'Nessuna corrispondenza trovata', - 'searchTool': 'Strumento di ricerca', - 'agent': 'Strategia dell\'agente', - 'plugin': 'Plugin', - 'searchBlock': 'Cerca nodo', - 'blocks': 'Nodi', - 'allAdded': 'Tutto aggiunto', - 'addAll': 'Aggiungi tutto', - 'sources': 'Fonti', - 'searchDataSource': 'Cerca origine dati', - 'start': 'Inizia', - 'searchTrigger': 'Trigger di ricerca...', - 'allTriggers': 'Tutti i trigger', - 'noPluginsFound': 'Nessun plugin trovato', - 'requestToCommunity': 'Richieste alla comunità', - 'featuredTools': 'In evidenza', - 'showMoreFeatured': 'Mostra di più', - 'showLessFeatured': 'Mostra di meno', - 'installed': 'Installato', - 'pluginByAuthor': 'Da {{author}}', - 'usePlugin': 'Strumento di selezione', - 'hideActions': 'Nascondi strumenti', - 'noFeaturedPlugins': 'Scopri altri strumenti nel Marketplace', - 'noFeaturedTriggers': 'Scopri altri trigger nel Marketplace', - 'startDisabledTip': 'Il nodo di attivazione e il nodo di input utente sono mutualmente esclusivi.', - }, - blocks: { - 'start': 'Inizio', - 'end': 'Uscita', - 'answer': 'Risposta', - 'llm': 'LLM', - 'knowledge-retrieval': 'Recupero Conoscenza', - 'question-classifier': 'Classificatore Domande', - 'if-else': 'SE/ALTRIMENTI', - 'code': 'Codice', - 'template-transform': 'Template', - 'http-request': 'Richiesta HTTP', - 'variable-assigner': 'Assegnatore Variabili', - 'variable-aggregator': 'Aggregatore Variabili', - 'assigner': 'Assegnatore di Variabili', - 'iteration-start': 'Inizio Iterazione', - 'iteration': 'Iterazione', - 'parameter-extractor': 'Estrattore Parametri', - 'document-extractor': 'Estrattore di documenti', - 'list-operator': 'Operatore di elenco', - 'agent': 'Agente', - 'loop-end': 'Uscire dal ciclo', - 'loop-start': 'Inizio ciclo', - 'loop': 'Anello', - 'knowledge-index': 'Knowledge base', - 'datasource': 'Origine dati', - 'originalStartNode': 'nodo iniziale originale', - 'trigger-schedule': 'Trigger di pianificazione', - 'trigger-webhook': 'Trigger Webhook', - 'trigger-plugin': 'Attivatore del plugin', - }, - blocksAbout: { - 'start': 'Definisci i parametri iniziali per l\'avvio di un flusso di lavoro', - 'end': 'Definisci l\'uscita e il tipo di risultato di un flusso di lavoro', - 'answer': 'Definisci il contenuto della risposta di una conversazione chat', - 'llm': 'Invoca modelli di linguaggio di grandi dimensioni per rispondere a domande o elaborare il linguaggio naturale', - 'knowledge-retrieval': - 'Ti consente di interrogare il contenuto del testo relativo alle domande dell\'utente dalla Conoscenza', - 'question-classifier': - 'Definisci le condizioni di classificazione delle domande dell\'utente, LLM può definire come prosegue la conversazione in base alla descrizione della classificazione', - 'if-else': - 'Ti consente di dividere il flusso di lavoro in due rami basati su condizioni se/altrimenti', - 'code': 'Esegui un pezzo di codice Python o NodeJS per implementare la logica personalizzata', - 'template-transform': - 'Converti i dati in stringa usando la sintassi del template Jinja', - 'http-request': - 'Consenti l\'invio di richieste server tramite il protocollo HTTP', - 'variable-assigner': - 'Aggrega variabili multi-ramo in una singola variabile per la configurazione unificata dei nodi a valle.', - 'assigner': 'Il nodo di assegnazione delle variabili è utilizzato per assegnare valori a variabili scrivibili (come le variabili di conversazione).', - 'variable-aggregator': - 'Aggrega variabili multi-ramo in una singola variabile per la configurazione unificata dei nodi a valle.', - 'iteration': - 'Esegui più passaggi su un oggetto lista fino a quando tutti i risultati non sono stati prodotti.', - 'parameter-extractor': - 'Usa LLM per estrarre parametri strutturati dal linguaggio naturale per invocazioni di strumenti o richieste HTTP.', - 'list-operator': 'Utilizzato per filtrare o ordinare il contenuto della matrice.', - 'document-extractor': 'Utilizzato per analizzare i documenti caricati in contenuti di testo facilmente comprensibili da LLM.', - 'agent': 'Richiamo di modelli linguistici di grandi dimensioni per rispondere a domande o elaborare il linguaggio naturale', - 'loop-end': 'Equivalente a "break". Questo nodo non ha elementi di configurazione. Quando il corpo del ciclo raggiunge questo nodo, il ciclo termina.', - 'loop': 'Esegui un ciclo di logica fino a quando la condizione di terminazione non viene soddisfatta o il numero massimo di cicli viene raggiunto.', - 'datasource': 'Origine dati Informazioni', - 'knowledge-index': 'Base di conoscenza su', - 'trigger-schedule': 'Trigger di flusso di lavoro basato sul tempo che avvia i flussi di lavoro secondo un programma', - 'trigger-webhook': 'Il Webhook Trigger riceve invii HTTP da sistemi di terze parti per attivare automaticamente i flussi di lavoro.', - 'trigger-plugin': 'Trigger di integrazione di terze parti che avvia flussi di lavoro da eventi di piattaforme esterne', - }, - operator: { - zoomIn: 'Zoom In', - zoomOut: 'Zoom Out', - zoomTo50: 'Zoom al 50%', - zoomTo100: 'Zoom al 100%', - zoomToFit: 'Zoom per Adattare', - alignRight: 'A destra', - selectionAlignment: 'Allineamento della selezione', - alignBottom: 'In basso', - alignTop: 'In alto', - vertical: 'Verticale', - alignCenter: 'Centro', - alignLeft: 'A sinistra', - alignMiddle: 'Centro', - horizontal: 'Orizzontale', - alignNodes: 'Allinea nodi', - distributeHorizontal: 'Spazia orizzontalmente', - distributeVertical: 'Spazia verticalmente', - }, - panel: { - userInputField: 'Campo di Input Utente', - helpLink: 'Aiuto', - about: 'Informazioni', - createdBy: 'Creato da ', - nextStep: 'Prossimo Passo', - runThisStep: 'Esegui questo passo', - checklist: 'Checklist', - checklistTip: - 'Assicurati che tutti i problemi siano risolti prima di pubblicare', - checklistResolved: 'Tutti i problemi sono risolti', - change: 'Cambia', - optional: '(opzionale)', - changeBlock: 'Cambia Nodo', - selectNextStep: 'Seleziona il prossimo passo', - organizeBlocks: 'Organizzare i nodi', - addNextStep: 'Aggiungi il prossimo passo in questo flusso di lavoro', - minimize: 'Esci dalla modalità schermo intero', - maximize: 'Massimizza Canvas', - scrollToSelectedNode: 'Scorri fino al nodo selezionato', - optional_and_hidden: '(opzionale e nascosto)', - goTo: 'Vai a', - startNode: 'Nodo iniziale', - openWorkflow: 'Apri flusso di lavoro', - }, - nodes: { - common: { - outputVars: 'Variabili di Output', - insertVarTip: 'Inserisci Variabile', - memory: { - memory: 'Memoria', - memoryTip: 'Impostazioni memoria chat', - windowSize: 'Dimensione Finestra', - conversationRoleName: 'Nome Ruolo Conversazione', - user: 'Prefisso Utente', - assistant: 'Prefisso Assistente', - }, - memories: { - title: 'Memorie', - tip: 'Memoria chat', - builtIn: 'Integrato', - }, - errorHandle: { - none: { - title: 'Nessuno', - desc: 'L\'esecuzione del nodo verrà interrotta se si verifica un\'eccezione e non viene gestita', - }, - defaultValue: { - title: 'Valore predefinito', - desc: 'Quando si verifica un errore, specificare un contenuto di output statico.', - tip: 'In caso di errore, tornerà al di sotto del valore.', - inLog: 'Eccezione del nodo, output in base ai valori predefiniti.', - output: 'Valore predefinito di output', - }, - failBranch: { - title: 'Ramo fallito', - desc: 'Quando si verifica un errore, eseguirà il ramo dell\'eccezione', - customize: 'Passare all\'area di disegno per personalizzare la logica del ramo di errore.', - customizeTip: 'Quando il ramo di errore è attivato, le eccezioni generate dai nodi non termineranno il processo. Al contrario, eseguirà automaticamente il ramo di errore predefinito, consentendo di fornire in modo flessibile messaggi di errore, report, correzioni o azioni di salto.', - inLog: 'Eccezione nodo, eseguirà automaticamente il ramo di errore. L\'output del nodo restituirà un tipo di errore e un messaggio di errore e li passerà al downstream.', - }, - partialSucceeded: { - tip: 'Ci sono {{num}} nodi nel processo che funzionano in modo anomalo, si prega di andare su tracing per controllare i log.', - }, - title: 'Gestione degli errori', - tip: 'Strategia di gestione delle eccezioni, attivata quando un nodo rileva un\'eccezione.', - }, - retry: { - retry: 'Ripetere', - retryOnFailure: 'Riprova in caso di errore', - maxRetries: 'Numero massimo di tentativi', - retryInterval: 'Intervallo tentativi', - retryTimes: 'Riprova {{times}} volte in caso di errore', - retrying: 'Riprovare...', - retryFailedTimes: '{{times}} tentativi falliti', - times: 'tempi', - retries: '{{num}} Tentativi', - retrySuccessful: 'Riprova riuscito', - retryFailed: 'Nuovo tentativo non riuscito', - ms: 'ms', - }, - typeSwitch: { - input: 'Valore di input', - variable: 'Usa la variabile', - }, - inputVars: 'Variabili di input', - pluginNotInstalled: 'Il plugin non è installato', - }, - start: { - required: 'richiesto', - inputField: 'Campo di Input', - builtInVar: 'Variabili Integrate', - outputVars: { - query: 'Input Utente', - memories: { - des: 'Cronologia conversazioni', - type: 'tipo di messaggio', - content: 'contenuto del messaggio', - }, - files: 'Elenco file', - }, - noVarTip: - 'Imposta gli input che possono essere utilizzati nel Flusso di lavoro', - }, - end: { - outputs: 'Output', - output: { - type: 'tipo di output', - variable: 'variabile di output', - }, - type: { - 'none': 'Nessuno', - 'plain-text': 'Testo Semplice', - 'structured': 'Strutturato', - }, - }, - answer: { - answer: 'Risposta', - outputVars: 'Variabili di Output', - }, - llm: { - model: 'modello', - variables: 'variabili', - context: 'contesto', - contextTooltip: 'Puoi importare Conoscenza come contesto', - notSetContextInPromptTip: - 'Per abilitare la funzionalità di contesto, compila la variabile del contesto nel PROMPT.', - prompt: 'prompt', - roleDescription: { - system: 'Fornisci istruzioni di alto livello per la conversazione', - user: 'Fornisci istruzioni, query o qualsiasi input basato su testo al modello', - assistant: 'Le risposte del modello basate sui messaggi dell\'utente', - }, - addMessage: 'Aggiungi Messaggio', - vision: 'vision', - files: 'File', - resolution: { - name: 'Risoluzione', - high: 'Alta', - low: 'Bassa', - }, - outputVars: { - output: 'Genera contenuto', - reasoning_content: 'Contenuto del ragionamento', - usage: 'Informazioni sull\'utilizzo del modello', - }, - singleRun: { - variable: 'Variabile', - }, - sysQueryInUser: 'sys.query nel messaggio utente è richiesto', - jsonSchema: { - warningTips: { - saveSchema: 'Si prega di completare la modifica del campo corrente prima di salvare lo schema.', - }, - descriptionPlaceholder: 'Aggiungi descrizione', - generate: 'Genera', - generateJsonSchema: 'Genera Schema JSON', - generationTip: 'Puoi usare il linguaggio naturale per creare rapidamente uno schema JSON.', - back: 'Indietro', - apply: 'Applica', - showAdvancedOptions: 'Mostra opzioni avanzate', - stringValidations: 'Validazioni delle stringhe', - regenerate: 'Rigenerare', - required: 'richiesto', - resetDefaults: 'Ripristina', - addField: 'Aggiungi campo', - promptPlaceholder: 'Descrivi il tuo schema JSON...', - title: 'Schema di Output Strutturato', - instruction: 'Istruzione', - addChildField: 'Aggiungi campo bambino', - fieldNamePlaceholder: 'Nome del campo', - promptTooltip: 'Converte la descrizione del testo in una struttura JSON Schema standardizzata.', - doc: 'Scopri di più sull\'output strutturato', - import: 'Importa da JSON', - resultTip: 'Ecco il risultato generato. Se non sei soddisfatto, puoi tornare indietro e modificare il tuo prompt.', - generating: 'Generazione dello schema JSON...', - generatedResult: 'Risultato generato', - }, - reasoningFormat: { - title: 'Abilita la separazione dei tag di ragionamento', - tagged: 'Continua a pensare ai tag', - separated: 'Tag di pensiero separati', - tooltip: 'Estrai il contenuto dai tag think e conservalo nel campo reasoning_content.', - }, - }, - knowledgeRetrieval: { - queryVariable: 'Variabile Query', - knowledge: 'Conoscenza', - outputVars: { - output: 'Dati segmentati di recupero', - content: 'Contenuto segmentato', - title: 'Titolo segmentato', - icon: 'Icona segmentata', - url: 'URL segmentato', - metadata: 'Altri metadati', - files: 'File recuperati', - }, - metadata: { - options: { - disabled: { - title: 'Disabilitato', - subTitle: 'Non abilitare il filtraggio dei metadati', - }, - automatic: { - subTitle: 'Genera automaticamente condizioni di filtraggio dei metadati in base alla query dell\'utente', - desc: 'Genera automaticamente condizioni di filtraggio dei metadati basate sulla variabile di query', - title: 'Automatico', - }, - manual: { - title: 'Manuale', - subTitle: 'Aggiungere manualmente le condizioni di filtraggio dei metadati', - }, - }, - panel: { - conditions: 'Condizioni', - select: 'Seleziona variabile...', - title: 'Condizioni di filtro dei metadati', - add: 'Aggiungi condizione', - datePlaceholder: 'Scegli un orario...', - placeholder: 'Inserisci valore', - search: 'Cerca metadati', - }, - title: 'Filtraggio dei metadati', - tip: 'Il filtraggio dei metadati è il processo di utilizzo degli attributi dei metadati (come tag, categorie o permessi di accesso) per affinare e controllare il recupero di informazioni pertinenti all\'interno di un sistema.', - }, - queryText: 'Testo della query', - queryAttachment: 'Immagini della query', - }, - http: { - inputVars: 'Variabili di Input', - api: 'API', - apiPlaceholder: 'Inserisci URL, digita ‘/’ per inserire variabile', - notStartWithHttp: 'L\'API deve iniziare con http:// o https://', - key: 'Chiave', - value: 'Valore', - bulkEdit: 'Modifica di massa', - keyValueEdit: 'Modifica Chiave-Valore', - headers: 'Intestazioni', - params: 'Parametri', - body: 'Corpo', - outputVars: { - body: 'Contenuto Risposta', - statusCode: 'Codice Stato Risposta', - headers: 'Elenco Intestazioni Risposta JSON', - files: 'Elenco File', - }, - authorization: { - 'authorization': 'Autorizzazione', - 'authorizationType': 'Tipo di Autorizzazione', - 'no-auth': 'Nessuno', - 'api-key': 'API-Key', - 'auth-type': 'Tipo Auth', - 'basic': 'Basic', - 'bearer': 'Bearer', - 'custom': 'Custom', - 'api-key-title': 'API Key', - 'header': 'Intestazione', - }, - insertVarPlaceholder: 'digita \'/\' per inserire variabile', - timeout: { - title: 'Timeout', - connectLabel: 'Timeout Connessione', - connectPlaceholder: 'Inserisci timeout connessione in secondi', - readLabel: 'Timeout Lettura', - readPlaceholder: 'Inserisci timeout lettura in secondi', - writeLabel: 'Timeout Scrittura', - writePlaceholder: 'Inserisci timeout scrittura in secondi', - }, - binaryFileVariable: 'Variabile file binario', - type: 'Digitare', - extractListPlaceholder: 'Inserisci l\'indice delle voci dell\'elenco, digita \'/\' inserisci la variabile', - curl: { - placeholder: 'Incolla qui la stringa cURL', - title: 'Importazione da cURL', - }, - verifySSL: { - title: 'Verifica il certificato SSL', - warningTooltip: 'Disabilitare la verifica SSL non è raccomandato per gli ambienti di produzione. Questo dovrebbe essere utilizzato solo in sviluppo o test, poiché rende la connessione vulnerabile a minacce alla sicurezza come gli attacchi man-in-the-middle.', - }, - }, - code: { - inputVars: 'Variabili di Input', - outputVars: 'Variabili di Output', - advancedDependencies: 'Dipendenze Avanzate', - advancedDependenciesTip: - 'Aggiungi alcune dipendenze precaricate che richiedono più tempo per essere consumate o che non sono predefinite qui', - searchDependencies: 'Cerca Dipendenze', - syncFunctionSignature: 'Sincronizza la firma della funzione con il codice', - }, - templateTransform: { - inputVars: 'Variabili di Input', - code: 'Codice', - codeSupportTip: 'Supporta solo Jinja2', - outputVars: { - output: 'Contenuto trasformato', - }, - }, - ifElse: { - if: 'Se', - else: 'Altrimenti', - elseDescription: - 'Utilizzato per definire la logica che dovrebbe essere eseguita quando la condizione se non è soddisfatta.', - and: 'e', - or: 'o', - operator: 'Operatore', - notSetVariable: 'Si prega di impostare prima la variabile', - comparisonOperator: { - 'contains': 'contiene', - 'not contains': 'non contiene', - 'start with': 'inizia con', - 'end with': 'finisce con', - 'is': 'è', - 'is not': 'non è', - 'empty': 'è vuoto', - 'not empty': 'non è vuoto', - 'null': 'è nullo', - 'not null': 'non è nullo', - 'in': 'in', - 'all of': 'tutto di', - 'not in': 'non in', - 'exists': 'Esiste', - 'not exists': 'non esiste', - 'after': 'dopo', - 'before': 'prima', - }, - enterValue: 'Inserisci valore', - addCondition: 'Aggiungi Condizione', - conditionNotSetup: 'Condizione NON impostata', - selectVariable: 'Seleziona variabile...', - optionName: { - url: 'URL', - localUpload: 'Caricamento locale', - image: 'Immagine', - doc: 'Dottore', - video: 'Video', - audio: 'Audio', - }, - addSubVariable: 'Variabile secondaria', - select: 'Selezionare', - }, - variableAssigner: { - title: 'Assegna variabili', - outputType: 'Tipo di Output', - varNotSet: 'Variabile non impostata', - noVarTip: 'Aggiungi le variabili da assegnare', - type: { - string: 'Stringa', - number: 'Numero', - object: 'Oggetto', - array: 'Array', - }, - aggregationGroup: 'Gruppo di Aggregazione', - aggregationGroupTip: - 'Abilitando questa funzione, l\'aggregatore di variabili potrà aggregare più set di variabili.', - addGroup: 'Aggiungi Gruppo', - outputVars: { - varDescribe: 'Output {{groupName}}', - }, - setAssignVariable: 'Imposta variabile assegnata', - }, - assigner: { - 'assignedVariable': 'Variabile Assegnata', - 'writeMode': 'Modalità di Scrittura', - 'writeModeTip': 'Quando la VARIABILE ASSEGNATA è un array, la modalità di aggiunta inserisce alla fine.', - 'over-write': 'Sovrascrivere', - 'append': 'Aggiungere', - 'plus': 'Più', - 'clear': 'Cancellare', - 'setVariable': 'Imposta Variabile', - 'variable': 'Variabile', - 'operations': { - '-=': '-=', - 'overwrite': 'Sovrascrivere', - '+=': '+=', - '*=': '*=', - 'append': 'Aggiungere', - 'set': 'Mettere', - 'title': 'Operazione', - '/=': '/=', - 'over-write': 'Sovrascrivere', - 'extend': 'Estendere', - 'clear': 'Chiaro', - 'remove-last': 'Rimuovi ultimo', - 'remove-first': 'Rimuovi primo', - }, - 'setParameter': 'Imposta parametro...', - 'variables': 'Variabili', - 'noAssignedVars': 'Nessuna variabile assegnata disponibile', - 'assignedVarsDescription': 'Le variabili assegnate devono essere variabili scrivibili, ad esempio variabili di conversazione.', - 'varNotSet': 'Variabile NON impostata', - 'selectAssignedVariable': 'Seleziona variabile assegnata...', - 'noVarTip': 'Fare clic sul pulsante "+" per aggiungere variabili', - }, - tool: { - inputVars: 'Variabili di Input', - outputVars: { - text: 'contenuto generato dallo strumento', - files: { - title: 'file generati dallo strumento', - type: 'Tipo supportato. Attualmente supporta solo immagini', - transfer_method: - 'Metodo di trasferimento. Il valore è remote_url o local_file', - url: 'URL immagine', - upload_file_id: 'ID file caricato', - }, - json: 'json generato dallo strumento', - }, - authorize: 'Autorizza', - insertPlaceholder1: 'Digita o premi', - insertPlaceholder2: 'inserisci variabile', - settings: 'Impostazioni', - }, - questionClassifiers: { - model: 'modello', - inputVars: 'Variabili di Input', - outputVars: { - className: 'Nome Classe', - usage: 'Informazioni sull\'utilizzo del modello', - }, - class: 'Classe', - classNamePlaceholder: 'Scrivi il nome della tua classe', - advancedSetting: 'Impostazione Avanzata', - topicName: 'Nome Argomento', - topicPlaceholder: 'Scrivi il nome del tuo argomento', - addClass: 'Aggiungi Classe', - instruction: 'Istruzione', - instructionTip: - 'Inserisci istruzioni aggiuntive per aiutare il classificatore di domande a capire meglio come categorizzare le domande.', - instructionPlaceholder: 'Scrivi la tua istruzione', - }, - parameterExtractor: { - inputVar: 'Variabile di Input', - outputVars: { - isSuccess: 'È successo. In caso di successo il valore è 1, in caso di fallimento il valore è 0.', - errorReason: 'Motivo dell\'errore', - usage: 'Informazioni sull\'utilizzo del modello', - }, - extractParameters: 'Estrai Parametri', - importFromTool: 'Importa dagli strumenti', - addExtractParameter: 'Aggiungi Parametro Estratto', - addExtractParameterContent: { - name: 'Nome', - namePlaceholder: 'Nome Parametro Estratto', - type: 'Tipo', - typePlaceholder: 'Tipo Parametro Estratto', - description: 'Descrizione', - descriptionPlaceholder: 'Descrizione Parametro Estratto', - required: 'Richiesto', - requiredContent: - 'Richiesto viene utilizzato solo come riferimento per l\'inferenza del modello, e non per la convalida obbligatoria dell\'output del parametro.', - }, - extractParametersNotSet: 'Parametri Estratti non impostati', - instruction: 'Istruzione', - instructionTip: - 'Inserisci istruzioni aggiuntive per aiutare l\'estrattore di parametri a capire come estrarre i parametri.', - advancedSetting: 'Impostazione Avanzata', - reasoningMode: 'Modalità di ragionamento', - reasoningModeTip: - 'Puoi scegliere la modalità di ragionamento appropriata in base alla capacità del modello di rispondere alle istruzioni per la chiamata delle funzioni o i prompt.', - }, - iteration: { - deleteTitle: 'Eliminare Nodo Iterazione?', - deleteDesc: - 'Eliminando il nodo iterazione verranno eliminati tutti i nodi figlio', - input: 'Input', - output: 'Variabili di Output', - iteration_one: '{{count}} Iterazione', - iteration_other: '{{count}} Iterazioni', - currentIteration: 'Iterazione Corrente', - ErrorMethod: { - operationTerminated: 'Terminato', - continueOnError: 'continua sull\'errore', - removeAbnormalOutput: 'rimuovi-output-anomalo', - }, - error_one: '{{conteggio}} Errore', - parallelMode: 'Modalità parallela', - MaxParallelismTitle: 'Parallelismo massimo', - error_other: '{{conteggio}} Errori', - parallelModeEnableDesc: 'In modalità parallela, le attività all\'interno delle iterazioni supportano l\'esecuzione parallela. È possibile configurare questa opzione nel pannello delle proprietà a destra.', - MaxParallelismDesc: 'Il parallelismo massimo viene utilizzato per controllare il numero di attività eseguite contemporaneamente in una singola iterazione.', - errorResponseMethod: 'Metodo di risposta all\'errore', - parallelModeEnableTitle: 'Modalità parallela abilitata', - parallelModeUpper: 'MODALITÀ PARALLELA', - comma: ',', - parallelPanelDesc: 'In modalità parallela, le attività nell\'iterazione supportano l\'esecuzione parallela.', - answerNodeWarningDesc: 'Avviso in modalità parallela: i nodi di risposta, le assegnazioni di variabili di conversazione e le operazioni di lettura/scrittura persistenti all\'interno delle iterazioni possono causare eccezioni.', - flattenOutput: 'Appiattisci output', - flattenOutputDesc: 'Quando abilitato, se tutti i risultati delle iterazioni sono array, saranno uniti in un unico array. Quando disabilitato, i risultati manterranno una struttura di array nidificati.', - }, - note: { - addNote: 'Aggiungi Nota', - editor: { - placeholder: 'Scrivi la tua nota...', - small: 'Piccolo', - medium: 'Medio', - large: 'Grande', - bold: 'Grassetto', - italic: 'Corsivo', - strikethrough: 'Barrato', - link: 'Link', - openLink: 'Apri', - unlink: 'Rimuovi link', - enterUrl: 'Inserisci URL...', - invalidUrl: 'URL non valido', - bulletList: 'Elenco puntato', - showAuthor: 'Mostra Autore', - }, - }, - docExtractor: { - outputVars: { - text: 'Testo estratto', - }, - learnMore: 'Ulteriori informazioni', - inputVar: 'Variabile di input', - supportFileTypes: 'Tipi di file supportati: {{types}}.', - }, - listFilter: { - outputVars: { - last_record: 'Ultimo record', - result: 'Filtra risultato', - first_record: 'Primo record', - }, - asc: 'ASC', - limit: 'Primi N', - inputVar: 'Variabile di input', - selectVariableKeyPlaceholder: 'Seleziona la chiave della variabile secondaria', - filterConditionComparisonOperator: 'Operatore di confronto delle condizioni di filtro', - filterCondition: 'Condizione del filtro', - filterConditionKey: 'Chiave condizione filtro', - desc: 'DESC', - filterConditionComparisonValue: 'Valore della condizione di filtro', - orderBy: 'Ordina per', - extractsCondition: 'Estrai l\'elemento N', - }, - agent: { - strategy: { - selectTip: 'Seleziona la strategia agentica', - searchPlaceholder: 'Strategia agente di ricerca', - label: 'Strategia agentica', - configureTipDesc: 'Dopo aver configurato la strategia agentic, questo nodo caricherà automaticamente le configurazioni rimanenti. La strategia influenzerà il meccanismo del ragionamento con strumenti a più fasi.', - tooltip: 'Diverse strategie agentiche determinano il modo in cui il sistema pianifica ed esegue le chiamate agli strumenti in più fasi', - shortLabel: 'Strategia', - configureTip: 'Configurare la strategia agentic.', - }, - pluginInstaller: { - installing: 'Installazione', - install: 'Installare', - }, - modelNotInMarketplace: { - manageInPlugins: 'Gestisci nei plugin', - desc: 'Questo modello viene installato dal repository locale o GitHub. Si prega di utilizzare dopo l\'installazione.', - title: 'Modello non installato', - }, - modelNotSupport: { - descForVersionSwitch: 'La versione del plug-in installata non fornisce questo modello. Fare clic per cambiare versione.', - title: 'Modello non supportato', - desc: 'La versione del plug-in installata non fornisce questo modello.', - }, - modelSelectorTooltips: { - deprecated: 'Questo modello è deprecato', - }, - outputVars: { - files: { - type: 'Tipo di supporto. Ora supporta solo l\'immagine', - title: 'File generati dall\'agente', - transfer_method: 'Metodo di trasferimento. Il valore è remote_url o local_file', - url: 'URL immagine', - upload_file_id: 'Carica l\'ID del file', - }, - text: 'Contenuto generato dall\'agente', - usage: 'Informazioni sull\'utilizzo del modello', - json: 'JSON generato dall\'agente', - }, - checkList: { - strategyNotSelected: 'Strategia non selezionata', - }, - installPlugin: { - cancel: 'Annulla', - title: 'Installa il plugin', - install: 'Installare', - changelog: 'Registro delle modifiche', - desc: 'Sto per installare il seguente plugin', - }, - toolNotInstallTooltip: '{{tool}} non è installato', - modelNotSelected: 'Modello non selezionato', - modelNotInstallTooltip: 'Questo modello non è installato', - notAuthorized: 'Non autorizzato', - learnMore: 'Ulteriori informazioni', - pluginNotInstalledDesc: 'Questo plugin viene installato da GitHub. Vai su Plugin per reinstallare', - model: 'modello', - configureModel: 'Configura modello', - linkToPlugin: 'Collegamento ai plug-in', - tools: 'Utensileria', - unsupportedStrategy: 'Strategia non supportata', - toolNotAuthorizedTooltip: '{{strumento}} Non autorizzato', - strategyNotSet: 'Strategia agentica non impostata', - toolbox: 'cassetta degli attrezzi', - maxIterations: 'Numero massimo di iterazioni', - strategyNotInstallTooltip: '{{strategy}} non è installato', - strategyNotFoundDesc: 'La versione del plugin installata non fornisce questa strategia.', - strategyNotFoundDescAndSwitchVersion: 'La versione del plugin installata non fornisce questa strategia. Fare clic per cambiare versione.', - pluginNotInstalled: 'Questo plugin non è installato', - pluginNotFoundDesc: 'Questo plugin viene installato da GitHub. Vai su Plugin per reinstallare', - parameterSchema: 'Schema dei parametri', - clickToViewParameterSchema: 'Clicca per visualizzare lo schema dei parametri', - }, - loop: { - ErrorMethod: { - operationTerminated: 'Terminato', - removeAbnormalOutput: 'Rimuovi l\'output anormale', - continueOnError: 'Continua con l\'errore', - }, - currentLoop: 'Anello Corrente', - breakConditionTip: 'Solo le variabili all\'interno dei cicli con condizioni di terminazione e le variabili di conversazione possono essere riferite.', - loopVariables: 'Variabili di ciclo', - inputMode: 'Modalità di input', - errorResponseMethod: 'Metodo di risposta all\'errore', - error_one: '{{count}} Errore', - loop_one: '{{count}} Ciclo', - loopMaxCount: 'Conteggio massimo dei loop', - breakCondition: 'Condizione di terminazione del ciclo', - comma: ',', - loopNode: 'Nodo Ciclico', - finalLoopVariables: 'Variabili del ciclo finale', - loopMaxCountError: 'Si prega di inserire un conteggio massimo di cicli valido, compreso tra 1 e {{maxCount}}', - currentLoopCount: 'Conteggio attuale del ciclo: {{count}}', - input: 'Input', - setLoopVariables: 'Imposta le variabili all\'interno dell\'ambito del ciclo', - deleteTitle: 'Elimina nodo ciclo?', - output: 'Variabile di Output', - initialLoopVariables: 'Variabili di loop iniziali', - deleteDesc: 'Cancellare il nodo di ciclo rimuoverà tutti i nodi figli', - loop_other: '{{count}} anelli', - variableName: 'Nome Variabile', - totalLoopCount: 'Conteggio totale dei cicli: {{count}}', - exitConditionTip: 'Un nodo di ciclo ha bisogno di almeno una condizione di uscita.', - error_other: '{{count}} Errori', - }, - dataSource: { - supportedFileFormatsPlaceholder: 'Estensione del file, e.g. doc', - add: 'Aggiungere un\'origine dati', - supportedFileFormats: 'Formati di file supportati', - }, - knowledgeBase: { - chunkStructureTip: { - learnMore: 'Ulteriori informazioni', - title: 'Si prega di scegliere una struttura a blocchi', - message: 'La Knowledge Base di Dify supporta tre strutture di suddivisione in blocchi: Generale, Padre-figlio e Domande e risposte. Ogni Knowledge Base può avere una sola struttura. L\'output del nodo precedente deve essere allineato con la struttura del blocco selezionata. Si noti che la scelta della struttura di suddivisione in blocchi influisce sui metodi di indice disponibili.', - }, - indexMethodIsRequired: 'È necessario il metodo dell\'indice', - chunkStructure: 'Struttura a blocchi', - changeChunkStructure: 'Modifica la struttura dei blocchi', - chooseChunkStructure: 'Scegliere una struttura a blocchi', - aboutRetrieval: 'Informazioni sul metodo di recupero.', - chunkIsRequired: 'È necessaria una struttura a blocchi', - retrievalSettingIsRequired: 'È richiesta l\'impostazione di recupero', - chunksInputTip: 'La variabile di input del nodo della base di conoscenza è Chunks. Il tipo di variabile è un oggetto con uno specifico schema JSON che deve essere coerente con la struttura del chunk selezionato.', - chunksInput: 'Pezzetti', - chunksVariableIsRequired: 'La variabile Chunks è richiesta', - rerankingModelIsRequired: 'È richiesto un modello di riordinamento', - embeddingModelIsRequired: 'È necessario un modello di embedding', - embeddingModelIsInvalid: 'Il modello di embedding non è valido', - rerankingModelIsInvalid: 'Il modello di riorganizzazione è non valido', - }, - triggerPlugin: { - authorized: 'Autorizzato', - notConfigured: 'Non configurato', - notAuthorized: 'Non autorizzato', - selectSubscription: 'Seleziona abbonamento', - availableSubscriptions: 'Abbonamenti disponibili', - addSubscription: 'Aggiungi Nuovo Abbonamento', - removeSubscription: 'Rimuovi abbonamento', - subscriptionRemoved: 'Abbonamento rimosso con successo', - error: 'Errore', - configuration: 'Configurazione', - remove: 'Rimuovi', - or: 'O', - useOAuth: 'Usa OAuth', - useApiKey: 'Usa la chiave API', - authenticationFailed: 'Autenticazione fallita', - authenticationSuccess: 'Autenticazione riuscita', - oauthConfigFailed: 'La configurazione di OAuth è fallita', - configureOAuthClient: 'Configura client OAuth', - oauthClientDescription: 'Configura le credenziali del client OAuth per abilitare l\'autenticazione', - oauthClientSaved: 'Configurazione del client OAuth salvata con successo', - configureApiKey: 'Configura la chiave API', - apiKeyDescription: 'Configura le credenziali della chiave API per l\'autenticazione', - apiKeyConfigured: 'Chiave API configurata con successo', - configurationFailed: 'Configurazione non riuscita', - failedToStart: 'Impossibile avviare il processo di autenticazione', - credentialsVerified: 'Credenziali verificate con successo', - credentialVerificationFailed: 'Verifica delle credenziali non riuscita', - verifyAndContinue: 'Verifica e continua', - configureParameters: 'Configura Parametri', - parametersDescription: 'Configura i parametri e le proprietà del trigger', - configurationComplete: 'Configurazione completata', - configurationCompleteDescription: 'Il tuo trigger è stato configurato correttamente', - configurationCompleteMessage: 'La configurazione del tuo trigger è ora completa e pronta all\'uso.', - parameters: 'Parametri', - properties: 'Proprietà', - propertiesDescription: 'Proprietà di configurazione aggiuntive per questo trigger', - noConfigurationRequired: 'Nessuna configurazione aggiuntiva necessaria per questo trigger.', - subscriptionName: 'Nome dell\'abbonamento', - subscriptionNameDescription: 'Inserisci un nome univoco per questa sottoscrizione del trigger', - subscriptionNamePlaceholder: 'Inserisci il nome dell\'abbonamento...', - subscriptionNameRequired: 'Il nome dell\'abbonamento è obbligatorio', - subscriptionRequired: 'È necessario abbonarsi', - }, - triggerSchedule: { - title: 'Programma', - nodeTitle: 'Attivatore della pianificazione', - notConfigured: 'Non configurato', - useCronExpression: 'Usa un\'espressione cron', - useVisualPicker: 'Usa il selettore visivo', - frequency: { - label: 'FREQUENZA', - hourly: 'orario', - daily: 'Quotidiano', - weekly: 'Settimanale', - monthly: 'Mensile', - }, - selectFrequency: 'Seleziona frequenza', - frequencyLabel: 'Frequenza', - nextExecution: 'Prossima esecuzione', - weekdays: 'Giorni della settimana', - time: 'Tempo', - cronExpression: 'Espressione Cron', - nextExecutionTime: 'PROSSIMA ORA DI ESECUZIONE', - nextExecutionTimes: 'Prossimi 5 tempi di esecuzione', - startTime: 'Orario di inizio', - executeNow: 'Esecuzione adesso', - selectDateTime: 'Seleziona Data e Ora', - hours: 'Ore', - minutes: 'Minuti', - onMinute: 'In un minuto', - days: 'Giorni', - lastDay: 'Ultimo giorno', - lastDayTooltip: 'Non tutti i mesi hanno 31 giorni. Usa l\'opzione \'ultimo giorno\' per selezionare l\'ultimo giorno di ogni mese.', - mode: 'Modalità', - timezone: 'Fuso orario', - visualConfig: 'Configurazione visiva', - monthlyDay: 'Giorno del mese', - executionTime: 'Tempo di esecuzione', - invalidTimezone: 'Fuso orario non valido', - invalidCronExpression: 'Espressione cron non valida', - noValidExecutionTime: 'Non è possibile calcolare un tempo di esecuzione valido', - executionTimeCalculationError: 'Impossibile calcolare i tempi di esecuzione', - invalidFrequency: 'Frequenza non valida', - invalidStartTime: 'Ora di inizio non valida', - startTimeMustBeFuture: 'L\'orario di inizio deve essere nel futuro', - invalidTimeFormat: 'Formato orario non valido (previsto HH:MM AM/PM)', - invalidWeekday: 'Giorno della settimana non valido: {{weekday}}', - invalidMonthlyDay: 'Il giorno del mese deve essere compreso tra 1 e 31 o \'ultimo\'', - invalidOnMinute: 'I minuti devono essere compresi tra 0 e 59', - invalidExecutionTime: 'Tempo di esecuzione non valido', - executionTimeMustBeFuture: 'Il tempo di esecuzione deve essere nel futuro', - }, - triggerWebhook: { - title: 'Trigger Webhook', - nodeTitle: '🔗 Trigger del Webhook', - configPlaceholder: 'La configurazione del trigger del webhook sarà implementata qui', - webhookUrl: 'URL del webhook', - webhookUrlPlaceholder: 'Fai clic su genera per creare l\'URL del webhook', - generate: 'Generare', - copy: 'Copia', - test: 'Test', - urlGenerated: 'URL del webhook generato con successo', - urlGenerationFailed: 'Impossibile generare l\'URL del webhook', - urlCopied: 'URL copiato negli appunti', - method: 'Metodo', - contentType: 'Tipo di contenuto', - queryParameters: 'Parametri di query', - headerParameters: 'Parametri dell\'intestazione', - requestBodyParameters: 'Parametri del corpo della richiesta', - parameterName: 'Nome della variabile', - varName: 'Nome della variabile', - varType: 'Tipo', - varNamePlaceholder: 'Inserisci il nome della variabile...', - required: 'Obbligatorio', - addParameter: 'Aggiungi', - addHeader: 'Aggiungi', - noParameters: 'Nessun parametro configurato', - noQueryParameters: 'Nessun parametro di query configurato', - noHeaders: 'Nessun header configurato', - noBodyParameters: 'Nessun parametro del corpo configurato', - debugUrlTitle: 'Per le prove, usa sempre questo URL', - debugUrlCopy: 'Clicca per copiare', - debugUrlCopied: 'Copiato!', - debugUrlPrivateAddressWarning: 'Questo URL sembra essere un indirizzo interno, il che potrebbe causare il fallimento delle richieste webhook. Puoi cambiare TRIGGER_URL con un indirizzo pubblico.', - errorHandling: 'Gestione degli errori', - errorStrategy: 'Gestione degli errori', - responseConfiguration: 'Risposta', - asyncMode: 'Modalità asincrona', - statusCode: 'Codice di stato', - responseBody: 'Corpo della risposta', - responseBodyPlaceholder: 'Scrivi qui il corpo della tua risposta', - headers: 'Intestazioni', - validation: { - webhookUrlRequired: 'L\'URL del webhook è obbligatorio', - invalidParameterType: 'Tipo di parametro non valido "{{type}}" per il parametro "{{name}}"', - }, - }, - }, - tracing: { - stopBy: 'Interrotto da {{user}}', - }, - variableReference: { - noAvailableVars: 'Nessuna variabile disponibile', - noAssignedVars: 'Nessuna variabile assegnata disponibile', - noVarsForOperation: 'Non ci sono variabili disponibili per l\'assegnazione con l\'operazione selezionata.', - assignedVarsDescription: 'Le variabili assegnate devono essere variabili scrivibili, ad esempio', - conversationVars: 'Variabili di conversazione', - }, - versionHistory: { - filter: { - reset: 'Ripristina filtro', - all: 'Tutto', - onlyYours: 'Solo tuo', - empty: 'Nessuna cronologia delle versioni corrispondente trovata', - onlyShowNamedVersions: 'Mostra solo le versioni con nome', - }, - editField: { - titleLengthLimit: 'Il titolo non può superare {{limit}} caratteri', - releaseNotes: 'Note di rilascio', - title: 'Titolo', - releaseNotesLengthLimit: 'Le note di rilascio non possono superare i {{limit}} caratteri', - }, - action: { - restoreSuccess: 'Versione ripristinata', - restoreFailure: 'Impossibile ripristinare la versione', - deleteSuccess: 'Versione eliminata', - updateSuccess: 'Versione aggiornata', - deleteFailure: 'Impossibile eliminare la versione', - updateFailure: 'Impossibile aggiornare la versione', - copyIdSuccess: 'ID copiato negli appunti', - }, - latest: 'Ultimo', - defaultName: 'Versione senza titolo', - deletionTip: 'La cancellazione è irreversibile, si prega di confermare.', - nameThisVersion: 'Chiamare questa versione', - editVersionInfo: 'Modifica le informazioni sulla versione', - releaseNotesPlaceholder: 'Descrivi cosa è cambiato', - currentDraft: 'Bozza attuale', - restorationTip: 'Dopo il ripristino della versione, la bozza attuale verrà sovrascritta.', - title: 'Versioni', - copyId: 'Copia ID', - }, - debug: { - noData: { - runThisNode: 'Esegui questo nodo', - description: 'I risultati dell\'ultima esecuzione verranno visualizzati qui', - }, - variableInspect: { - trigger: { - cached: 'Visualizza le variabili memorizzate nella cache', - clear: 'Chiaro', - running: 'Caching stato di esecuzione', - normal: 'Ispezione Variabile', - stop: 'Ferma la corsa', - }, - chatNode: 'Conversazione', - clearNode: 'Svuota la variabile cached', - envNode: 'Ambiente', - systemNode: 'Sistema', - title: 'Ispezione delle variabili', - edited: 'Modificato', - emptyLink: 'Scopri di più', - resetConversationVar: 'Reimposta la variabile della conversazione al valore predefinito', - view: 'Visualizza log', - clearAll: 'Ripristina tutto', - reset: 'Ripristina il valore dell\'ultima esecuzione', - emptyTip: 'Dopo aver eseguito un nodo sulla tela o eseguendo un nodo passo dopo passo, puoi visualizzare il valore attuale della variabile nodo in Ispeziona Variabile.', - export: 'esportazione', - largeData: 'Dati di grandi dimensioni, anteprima di sola lettura. Esporta per visualizzare tutto.', - exportToolTip: 'Esporta variabile come file', - largeDataNoExport: 'Dati di grandi dimensioni - solo anteprima parziale', - listening: { - title: 'In ascolto degli eventi dai trigger...', - tip: 'Ora puoi simulare i trigger degli eventi inviando richieste di prova all\'endpoint HTTP {{nodeName}} oppure usarlo come URL di callback per il debug degli eventi in tempo reale. Tutti i risultati possono essere visualizzati direttamente nel Visualizzatore di Variabili.', - tipPlugin: 'Ora puoi creare eventi in {{- pluginName}} e recuperare i risultati di questi eventi nell\'Ispettore Variabili.', - tipSchedule: 'Ascolto degli eventi dai trigger del programma.\nProssima esecuzione programmata: {{nextTriggerTime}}', - tipFallback: 'Attendere gli eventi trigger in arrivo. I risultati appariranno qui.', - defaultNodeName: 'questo trigger', - defaultPluginName: 'questo plugin attiva', - defaultScheduleTime: 'Non configurato', - selectedTriggers: 'trigger selezionati', - stopButton: 'Fermati', - }, - }, - settingsTab: 'Impostazioni', - lastRunTab: 'Ultima corsa', - relations: { - dependents: 'Dipendenti', - noDependencies: 'Nessuna dipendenza', - dependencies: 'Dipendenze', - noDependents: 'Nessuna persona a carico', - dependentsDescription: 'Nodi che si basano su questo nodo', - dependenciesDescription: 'Nodi su cui si basa questo nodo', - }, - relationsTab: 'Relazioni', - copyLastRun: 'Copia ultimo eseguito', - noMatchingInputsFound: 'Nessun input corrispondente trovato dall\'ultimo funzionamento.', - copyLastRunError: 'Impossibile copiare gli input dell\'ultima esecuzione', - noLastRunFound: 'Nessuna esecuzione precedente trovata', - lastOutput: 'Ultimo output', - lastRunInputsCopied: '{{count}} input copiato dall\'ultima esecuzione', - }, - sidebar: { - exportWarning: 'Esporta la versione salvata corrente', - exportWarningDesc: 'Questo exporterà l\'attuale versione salvata del tuo flusso di lavoro. Se hai modifiche non salvate nell\'editor, ti preghiamo di salvarle prima utilizzando l\'opzione di esportazione nel canvas del flusso di lavoro.', - }, - publishLimit: { - startNodeTitlePrefix: 'Aggiorna a', - startNodeTitleSuffix: 'sblocca trigger illimitati per flusso di lavoro', - startNodeDesc: 'Hai raggiunto il limite di 2 trigger per flusso di lavoro per questo piano. Effettua l\'upgrade per pubblicare questo flusso di lavoro.', - }, - error: { - startNodeRequired: 'Per favore aggiungi prima un nodo iniziale prima di {{operation}}', - operations: { - connectingNodes: 'collegamento dei nodi', - addingNodes: 'aggiunta di nodi', - modifyingWorkflow: 'modifica del flusso di lavoro', - updatingWorkflow: 'aggiornamento del flusso di lavoro', - }, - }, - customWebhook: 'Webhook personalizzato', - difyTeam: 'Team Dify', - triggerStatus: { - enabled: 'GRILLETTO', - disabled: 'ATTIVATORE • DISABILITATO', - }, - entryNodeStatus: { - enabled: 'INIZIO', - disabled: 'AVVIO • DISABILITATO', - }, - onboarding: { - title: 'Seleziona un nodo di partenza per iniziare', - description: 'Nodi di partenza diversi hanno capacità diverse. Non preoccuparti, potrai sempre cambiarli più tardi.', - userInputFull: 'Input utente (nodo iniziale originale)', - userInputDescription: 'Nodo iniziale che consente di impostare variabili di input dell\'utente, con app web, API di servizio, server MCP e workflow come funzionalità degli strumenti.', - trigger: 'Innescare', - triggerDescription: 'I trigger possono fungere da nodo iniziale di un flusso di lavoro, come attività programmate, webhook personalizzati o integrazioni con altre app.', - back: 'Indietro', - learnMore: 'Scopri di più', - aboutStartNode: 'riguardo al nodo iniziale.', - escTip: { - press: 'Premi', - key: 'esc', - toDismiss: 'licenziare', - }, - }, -} - -export default translation diff --git a/web/i18n/ja-JP/app-annotation.json b/web/i18n/ja-JP/app-annotation.json new file mode 100644 index 0000000000..a14cec44a0 --- /dev/null +++ b/web/i18n/ja-JP/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "注釈", + "name": "注釈の返信", + "editBy": "{{author}} によって編集された回答", + "noData": { + "title": "注釈がありません", + "description": "ここではアプリのデバッグ中に注釈を編集したり、一括で注釈をインポートしたりして高品質の応答を行うことができます。" + }, + "table": { + "header": { + "question": "質問", + "answer": "回答", + "createdAt": "作成日時", + "hits": "ヒット数", + "actions": "アクション", + "addAnnotation": "注釈を追加", + "bulkImport": "一括インポート", + "bulkExport": "一括エクスポート", + "clearAll": "すべて削除", + "clearAllConfirm": "すべての注釈を削除しますか?" + } + }, + "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": "OK" + }, + "errorMessage": { + "answerRequired": "回答は必須です", + "queryRequired": "質問は必須です" + }, + "viewModal": { + "annotatedResponse": "注釈の返信", + "hitHistory": "ヒット履歴", + "hit": "ヒット", + "hits": "ヒット数", + "noHitHistory": "ヒット履歴はありません" + }, + "hitHistoryTable": { + "query": "クエリ", + "match": "一致", + "response": "応答", + "source": "ソース", + "score": "スコア", + "time": "時間" + }, + "initSetup": { + "title": "注釈の返信の初期設定", + "configTitle": "注釈の返信の設定", + "confirmBtn": "保存して有効にする", + "configConfirmBtn": "保存" + }, + "embeddingModelSwitchTip": "注釈テキストのベクトル化モデルです。モデルを切り替えると再埋め込みが行われ、追加のコストが発生します。", + "list": { + "delete": { + "title": "本当に削除しますか?" + } + }, + "batchAction": { + "cancel": "キャンセル", + "delete": "削除する", + "selected": "選択された" + } +} diff --git a/web/i18n/ja-JP/app-annotation.ts b/web/i18n/ja-JP/app-annotation.ts deleted file mode 100644 index 3ccbcc30c6..0000000000 --- a/web/i18n/ja-JP/app-annotation.ts +++ /dev/null @@ -1,98 +0,0 @@ -const translation = { - title: '注釈', - name: '注釈の返信', - editBy: '{{author}} によって編集された回答', - noData: { - title: '注釈がありません', - description: 'ここではアプリのデバッグ中に注釈を編集したり、一括で注釈をインポートしたりして高品質の応答を行うことができます。', - }, - table: { - header: { - question: '質問', - answer: '回答', - createdAt: '作成日時', - hits: 'ヒット数', - actions: 'アクション', - addAnnotation: '注釈を追加', - bulkImport: '一括インポート', - bulkExport: '一括エクスポート', - clearAll: 'すべて削除', - clearAllConfirm: 'すべての注釈を削除しますか?', - }, - }, - 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: 'OK', - }, - errorMessage: { - answerRequired: '回答は必須です', - queryRequired: '質問は必須です', - }, - viewModal: { - annotatedResponse: '注釈の返信', - hitHistory: 'ヒット履歴', - hit: 'ヒット', - hits: 'ヒット数', - noHitHistory: 'ヒット履歴はありません', - }, - hitHistoryTable: { - query: 'クエリ', - match: '一致', - response: '応答', - source: 'ソース', - score: 'スコア', - time: '時間', - }, - initSetup: { - title: '注釈の返信の初期設定', - configTitle: '注釈の返信の設定', - confirmBtn: '保存して有効にする', - configConfirmBtn: '保存', - }, - embeddingModelSwitchTip: '注釈テキストのベクトル化モデルです。モデルを切り替えると再埋め込みが行われ、追加のコストが発生します。', - list: { - delete: { - title: '本当に削除しますか?', - }, - }, - batchAction: { - cancel: 'キャンセル', - delete: '削除する', - selected: '選択された', - }, -} - -export default translation diff --git a/web/i18n/ja-JP/app-api.json b/web/i18n/ja-JP/app-api.json new file mode 100644 index 0000000000..0de4d8e470 --- /dev/null +++ b/web/i18n/ja-JP/app-api.json @@ -0,0 +1,84 @@ +{ + "apiServer": "API サーバー", + "apiKey": "API キー", + "status": "ステータス", + "disabled": "無効", + "ok": "稼働中", + "copy": "コピー", + "copied": "コピー済み", + "play": "再生", + "pause": "一時停止", + "playing": "再生中", + "loading": "読み込み中", + "merMaid": { + "rerender": "再レンダリング" + }, + "never": "なし", + "apiKeyModal": { + "apiSecretKey": "API シークレットキー", + "apiSecretKeyTips": "API の悪用を防ぐために、API キーを保護してください。フロントエンドのコードで平文として使用しないでください。:)", + "createNewSecretKey": "新しいシークレットキーを作成", + "secretKey": "シークレットキー", + "created": "作成日時", + "lastUsed": "最終使用日時", + "generateTips": "このキーを安全でアクセス可能な場所に保管してください。" + }, + "actionMsg": { + "deleteConfirmTitle": "このシークレットキーを削除しますか?", + "deleteConfirmTips": "この操作は元に戻すことはできません。", + "ok": "OK" + }, + "completionMode": { + "title": "補完アプリ API", + "info": "記事、要約、翻訳などの高品質なテキスト生成には、ユーザーの入力を使用した補完メッセージ API を使用します。テキスト生成は、Dify Prompt Engineering で設定されたモデルパラメータとプロンプトテンプレートに依存しています。", + "createCompletionApi": "補完メッセージの作成", + "createCompletionApiTip": "質疑応答モードをサポートするために、補完メッセージを作成します。", + "inputsTips": "(オプション)Prompt Eng の変数に対応するキーと値のペアとしてユーザー入力フィールドを提供します。キーは変数名で、値はパラメータの値です。フィールドのタイプが Select の場合、送信される値は事前に設定された選択肢のいずれかである必要があります。", + "queryTips": "ユーザーの入力テキスト内容。", + "blocking": "ブロッキングタイプで、実行が完了して結果が返されるまで待機します。(処理が長い場合、リクエストは中断される場合があります)", + "streaming": "ストリーミングの返却。SSE(Server-Sent Events)に基づいたストリーミングの返却の実装。", + "messageFeedbackApi": "メッセージフィードバック(いいね)", + "messageFeedbackApiTip": "エンドユーザーの代わりに受信したメッセージを「いいね」または「いいね」で評価します。このデータはログ&注釈ページで表示され、将来のモデルの微調整に使用されます。", + "messageIDTip": "メッセージ ID", + "ratingTip": "いいねまたはいいね、null は元に戻す", + "parametersApi": "アプリケーションパラメータ情報の取得", + "parametersApiTip": "変数名、フィールド名、タイプ、デフォルト値を含む設定済みの入力パラメータを取得します。通常、これらのフィールドをフォームに表示したり、クライアントの読み込み後にデフォルト値を入力したりするために使用されます。" + }, + "chatMode": { + "title": "チャットアプリ API", + "info": "質疑応答形式を使用した多目的の対話型アプリケーションには、チャットメッセージ API を呼び出して対話を開始します。返された conversation_id を渡すことで、継続的な会話を維持します。応答パラメータとテンプレートは、Dify Prompt Eng の設定に依存します。", + "createChatApi": "チャットメッセージの作成", + "createChatApiTip": "新しい会話メッセージを作成するか、既存の対話を継続します。", + "inputsTips": "(オプション)Prompt Eng の変数に対応するキーと値のペアとしてユーザー入力フィールドを提供します。キーは変数名で、値はパラメータの値です。フィールドのタイプが Select の場合、送信される値は事前に設定された選択肢のいずれかである必要があります。", + "queryTips": "ユーザーの入力/質問内容", + "blocking": "ブロッキングタイプで、実行が完了して結果が返されるまで待機します。(処理が長い場合、リクエストは中断される場合があります)", + "streaming": "ストリーミングの返却。SSE(Server-Sent Events)に基づいたストリーミングの返却の実装。", + "conversationIdTip": "(オプション)会話 ID:初回の会話の場合は空白のままにしておき、継続する場合はコンテキストから conversation_id を渡します。", + "messageFeedbackApi": "メッセージ端末ユーザーフィードバック、いいね", + "messageFeedbackApiTip": "エンドユーザーの代わりに受信したメッセージを「いいね」または「いいね」で評価します。このデータはログ&注釈ページで表示され、将来のモデルの微調整に使用されます。", + "messageIDTip": "メッセージ ID", + "ratingTip": "いいねまたはいいね、null は元に戻す", + "chatMsgHistoryApi": "チャット履歴メッセージの取得", + "chatMsgHistoryApiTip": "最初のページは最新の「limit」バーを返します。逆順です。", + "chatMsgHistoryConversationIdTip": "会話 ID", + "chatMsgHistoryFirstId": "現在のページの最初のチャットレコードの ID。デフォルトはなし。", + "chatMsgHistoryLimit": "1 回のリクエストで返されるチャットの数", + "conversationsListApi": "会話リストの取得", + "conversationsListApiTip": "現在のユーザーのセッションリストを取得します。デフォルトでは、最後の 20 のセッションが返されます。", + "conversationsListFirstIdTip": "現在のページの最後のレコードの ID、デフォルトはなし。", + "conversationsListLimitTip": "1 回のリクエストで返されるチャットの数", + "conversationRenamingApi": "会話の名前変更", + "conversationRenamingApiTip": "会話の名前を変更します。名前はマルチセッションクライアントインターフェースに表示されます。", + "conversationRenamingNameTip": "新しい名前", + "parametersApi": "アプリケーションパラメータ情報の取得", + "parametersApiTip": "変数名、フィールド名、タイプ、デフォルト値を含む設定済みの入力パラメータを取得します。通常、これらのフィールドをフォームに表示したり、クライアントの読み込み後にデフォルト値を入力したりするために使用されます。" + }, + "develop": { + "requestBody": "リクエストボディ", + "pathParams": "パスパラメータ", + "query": "クエリ", + "toc": "内容", + "noContent": "コンテンツなし" + }, + "regenerate": "再生" +} diff --git a/web/i18n/ja-JP/app-api.ts b/web/i18n/ja-JP/app-api.ts deleted file mode 100644 index 35203e53e0..0000000000 --- a/web/i18n/ja-JP/app-api.ts +++ /dev/null @@ -1,86 +0,0 @@ -const translation = { - apiServer: 'API サーバー', - apiKey: 'API キー', - status: 'ステータス', - disabled: '無効', - ok: '稼働中', - copy: 'コピー', - copied: 'コピー済み', - play: '再生', - pause: '一時停止', - playing: '再生中', - loading: '読み込み中', - merMaid: { - rerender: '再レンダリング', - }, - never: 'なし', - apiKeyModal: { - apiSecretKey: 'API シークレットキー', - apiSecretKeyTips: 'API の悪用を防ぐために、API キーを保護してください。フロントエンドのコードで平文として使用しないでください。:)', - createNewSecretKey: '新しいシークレットキーを作成', - secretKey: 'シークレットキー', - created: '作成日時', - lastUsed: '最終使用日時', - generateTips: 'このキーを安全でアクセス可能な場所に保管してください。', - }, - actionMsg: { - deleteConfirmTitle: 'このシークレットキーを削除しますか?', - deleteConfirmTips: 'この操作は元に戻すことはできません。', - ok: 'OK', - }, - completionMode: { - title: '補完アプリ API', - info: '記事、要約、翻訳などの高品質なテキスト生成には、ユーザーの入力を使用した補完メッセージ API を使用します。テキスト生成は、Dify Prompt Engineering で設定されたモデルパラメータとプロンプトテンプレートに依存しています。', - createCompletionApi: '補完メッセージの作成', - createCompletionApiTip: '質疑応答モードをサポートするために、補完メッセージを作成します。', - inputsTips: '(オプション)Prompt Eng の変数に対応するキーと値のペアとしてユーザー入力フィールドを提供します。キーは変数名で、値はパラメータの値です。フィールドのタイプが Select の場合、送信される値は事前に設定された選択肢のいずれかである必要があります。', - queryTips: 'ユーザーの入力テキスト内容。', - blocking: 'ブロッキングタイプで、実行が完了して結果が返されるまで待機します。(処理が長い場合、リクエストは中断される場合があります)', - streaming: 'ストリーミングの返却。SSE(Server-Sent Events)に基づいたストリーミングの返却の実装。', - messageFeedbackApi: 'メッセージフィードバック(いいね)', - messageFeedbackApiTip: 'エンドユーザーの代わりに受信したメッセージを「いいね」または「いいね」で評価します。このデータはログ&注釈ページで表示され、将来のモデルの微調整に使用されます。', - messageIDTip: 'メッセージ ID', - ratingTip: 'いいねまたはいいね、null は元に戻す', - parametersApi: 'アプリケーションパラメータ情報の取得', - parametersApiTip: '変数名、フィールド名、タイプ、デフォルト値を含む設定済みの入力パラメータを取得します。通常、これらのフィールドをフォームに表示したり、クライアントの読み込み後にデフォルト値を入力したりするために使用されます。', - }, - chatMode: { - title: 'チャットアプリ API', - info: '質疑応答形式を使用した多目的の対話型アプリケーションには、チャットメッセージ API を呼び出して対話を開始します。返された conversation_id を渡すことで、継続的な会話を維持します。応答パラメータとテンプレートは、Dify Prompt Eng の設定に依存します。', - createChatApi: 'チャットメッセージの作成', - createChatApiTip: '新しい会話メッセージを作成するか、既存の対話を継続します。', - inputsTips: '(オプション)Prompt Eng の変数に対応するキーと値のペアとしてユーザー入力フィールドを提供します。キーは変数名で、値はパラメータの値です。フィールドのタイプが Select の場合、送信される値は事前に設定された選択肢のいずれかである必要があります。', - queryTips: 'ユーザーの入力/質問内容', - blocking: 'ブロッキングタイプで、実行が完了して結果が返されるまで待機します。(処理が長い場合、リクエストは中断される場合があります)', - streaming: 'ストリーミングの返却。SSE(Server-Sent Events)に基づいたストリーミングの返却の実装。', - conversationIdTip: '(オプション)会話 ID:初回の会話の場合は空白のままにしておき、継続する場合はコンテキストから conversation_id を渡します。', - messageFeedbackApi: 'メッセージ端末ユーザーフィードバック、いいね', - messageFeedbackApiTip: 'エンドユーザーの代わりに受信したメッセージを「いいね」または「いいね」で評価します。このデータはログ&注釈ページで表示され、将来のモデルの微調整に使用されます。', - messageIDTip: 'メッセージ ID', - ratingTip: 'いいねまたはいいね、null は元に戻す', - chatMsgHistoryApi: 'チャット履歴メッセージの取得', - chatMsgHistoryApiTip: '最初のページは最新の「limit」バーを返します。逆順です。', - chatMsgHistoryConversationIdTip: '会話 ID', - chatMsgHistoryFirstId: '現在のページの最初のチャットレコードの ID。デフォルトはなし。', - chatMsgHistoryLimit: '1 回のリクエストで返されるチャットの数', - conversationsListApi: '会話リストの取得', - conversationsListApiTip: '現在のユーザーのセッションリストを取得します。デフォルトでは、最後の 20 のセッションが返されます。', - conversationsListFirstIdTip: '現在のページの最後のレコードの ID、デフォルトはなし。', - conversationsListLimitTip: '1 回のリクエストで返されるチャットの数', - conversationRenamingApi: '会話の名前変更', - conversationRenamingApiTip: '会話の名前を変更します。名前はマルチセッションクライアントインターフェースに表示されます。', - conversationRenamingNameTip: '新しい名前', - parametersApi: 'アプリケーションパラメータ情報の取得', - parametersApiTip: '変数名、フィールド名、タイプ、デフォルト値を含む設定済みの入力パラメータを取得します。通常、これらのフィールドをフォームに表示したり、クライアントの読み込み後にデフォルト値を入力したりするために使用されます。', - }, - develop: { - requestBody: 'リクエストボディ', - pathParams: 'パスパラメータ', - query: 'クエリ', - toc: '内容', - noContent: 'コンテンツなし', - }, - regenerate: '再生', -} - -export default translation diff --git a/web/i18n/ja-JP/app-debug.json b/web/i18n/ja-JP/app-debug.json new file mode 100644 index 0000000000..3bdee884b4 --- /dev/null +++ b/web/i18n/ja-JP/app-debug.json @@ -0,0 +1,565 @@ +{ + "pageTitle": { + "line1": "プロンプト", + "line2": "エンジニアリング" + }, + "orchestrate": "オーケストレーション", + "promptMode": { + "simple": "エキスパートモードに切り替えて、PROMPT 全体を編集します", + "advanced": "エキスパートモード", + "switchBack": "基本モードに戻る", + "advancedWarning": { + "title": "エキスパートモードに切り替えました。PROMPT を変更すると、基本モードに戻ることはできません。", + "description": "エキスパートモードでは、PROMPT 全体を編集できます。", + "learnMore": "詳細はこちら", + "ok": "OK" + }, + "operation": { + "addMessage": "メッセージを追加" + }, + "contextMissing": "コンテキストコンポーネントが見つかりません。プロンプトの効果が十分でない場合があります。" + }, + "operation": { + "applyConfig": "公開", + "resetConfig": "リセット", + "debugConfig": "デバッグ", + "addFeature": "機能を追加", + "automatic": "自動", + "stopResponding": "応答を停止", + "agree": "いいね", + "disagree": "いいえ", + "cancelAgree": "いいねをキャンセル", + "cancelDisagree": "いいえをキャンセル", + "userAction": "ユーザー" + }, + "code": { + "instruction": "指示" + }, + "notSetAPIKey": { + "title": "LLM プロバイダーキーが設定されていません", + "trailFinished": "トライアル終了", + "description": "LLM プロバイダーキーが設定されていません。デバッグする前に設定する必要があります。", + "settingBtn": "設定に移動" + }, + "trailUseGPT4Info": { + "title": "現在、gpt-4 はサポートされていません", + "description": "gpt-4 を使用するには、API キーを設定してください。" + }, + "feature": { + "groupChat": { + "title": "チャットの強化", + "description": "アプリの事前会話設定を追加すると、ユーザーエクスペリエンスが向上します。" + }, + "groupExperience": { + "title": "エクスペリエンスの強化" + }, + "conversationOpener": { + "title": "会話の開始", + "description": "チャットアプリでは、AI がユーザーに最初にアクティブに話しかける最初の文は、通常、歓迎メッセージとして使用されます。" + }, + "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": "コンテキストとして知識をインポートできます", + "selectTitle": "参照する知識を選択", + "selected": "選択された知識", + "noDataSet": "知識が見つかりません", + "toCreate": "作成に進む", + "notSupportSelectMulti": "現在、複数の知識の選択はサポートされていません", + "queryVariable": { + "title": "クエリ変数", + "tip": "この変数はコンテキストの取得のためのクエリ入力として使用され、この変数の入力に関連するコンテキスト情報を取得します。", + "choosePlaceholder": "クエリ変数を選択", + "noVar": "変数なし", + "noVarTip": "変数セクションの下に変数を作成してください", + "unableToQueryDataSet": "知識をクエリできません", + "unableToQueryDataSetTip": "知識のクエリに失敗しました。正常にクエリできなかった場合は、コンテキストセクションでコンテキストクエリ変数を選択してください。", + "ok": "OK", + "contextVarNotEmpty": "コンテキストクエリ変数は空にできません", + "deleteContextVarTitle": "変数 \"{{varName}}\" を削除しますか?", + "deleteContextVarTip": "この変数はコンテキストクエリ変数として設定されており、削除すると知識の正常な使用に影響します。削除する場合は、コンテキストセクションで再選択してください。" + } + }, + "tools": { + "title": "ツール", + "tips": "ツールは、ユーザー入力または変数をリクエストパラメーターとして使用して外部データをコンテキストとしてクエリするための標準的な API 呼び出し方法を提供します。", + "toolsInUse": "{{count}} 個のツールが使用中", + "modal": { + "title": "ツール", + "toolType": { + "title": "ツールタイプ", + "placeholder": "ツールタイプを選択してください" + }, + "name": { + "title": "名前", + "placeholder": "名前を入力してください" + }, + "variableName": { + "title": "変数名", + "placeholder": "変数名を入力してください" + } + } + }, + "conversationHistory": { + "title": "会話履歴", + "description": "会話の役割に接頭辞名を設定します", + "tip": "会話履歴は有効になっていません。上記のプロンプトに を追加してください。", + "learnMore": "詳細はこちら", + "editModal": { + "title": "会話役割名の編集", + "userPrefix": "ユーザー接頭辞", + "assistantPrefix": "アシスタント接頭辞" + } + }, + "toolbox": { + "title": "ツールボックス" + }, + "moderation": { + "title": "コンテンツのモデレーション", + "description": "モデレーション API を使用するか、機密語リストを維持することで、モデルの出力を安全にします。", + "contentEnableLabel": "コンテンツモデレーションが有効", + "allEnabled": "入力/出力コンテンツが有効になっています", + "inputEnabled": "入力コンテンツが有効になっています", + "outputEnabled": "出力コンテンツが有効になっています", + "modal": { + "title": "コンテンツのモデレーション設定", + "provider": { + "title": "プロバイダ", + "openai": "OpenAI モデレーション", + "openaiTip": { + "prefix": "OpenAI モデレーションには、", + "suffix": "に OpenAI API キーが設定されている必要があります。" + }, + "keywords": "キーワード" + }, + "keywords": { + "tip": "1 行ごとに 1 つ、行区切りで入力してください。1 行あたり最大 100 文字。", + "placeholder": "1 行ごとに、行区切りで入力してください", + "line": "行" + }, + "content": { + "input": "入力コンテンツをモデレート", + "output": "出力コンテンツをモデレート", + "preset": "プリセット返信", + "placeholder": "ここにプリセット返信の内容を入力", + "condition": "少なくとも 1 つの入力および出力コンテンツをモデレートする", + "fromApi": "プリセット返信は API によって返されます", + "errorMessage": "プリセット返信は空にできません", + "supportMarkdown": "Markdown がサポートされています" + }, + "openaiNotConfig": { + "before": "OpenAI モデレーションには、", + "after": "に OpenAI API キーが設定されている必要があります。" + } + } + }, + "fileUpload": { + "title": "ファイル アップロード", + "description": "チャットの入力ボックスは画像やドキュメントやその他のファイルのアップロードをサポートします。", + "supportedTypes": "サポートされるファイルのタイプ", + "numberLimit": "最大アップロード数", + "modalTitle": "ファイル アップロード設置" + }, + "imageUpload": { + "title": "画像アップロード", + "description": "画像アップロードをサポートする", + "supportedTypes": "サポートされるファイルのタイプ", + "numberLimit": "最大アップロード数", + "modalTitle": "画像アップロード設置" + }, + "bar": { + "empty": "Web アプリのユーザーエクスペリアンスを強化させる機能を有効にする", + "enableText": "有効な機能", + "manage": "管理" + }, + "documentUpload": { + "title": "ドキュメント", + "description": "ドキュメント機能を有効にすると、AI モデルがファイルを処理し、その内容に基づいて質問に回答できるようになります。" + }, + "audioUpload": { + "title": "音声", + "description": "音声機能を有効にすると、モデルが音声ファイルの転写と分析を処理できるようになります。" + } + }, + "codegen": { + "title": "コードジェネレーター", + "description": "コードジェネレーターは、設定されたモデルを使用して指示に基づいて高品質なコードを生成します。明確で詳細な指示を提供してください。", + "instruction": "指示", + "instructionPlaceholder": "生成したいコードの詳細な説明を入力してください。", + "noDataLine1": "左側に使用例を記入してください,", + "noDataLine2": "コードのプレビューがこちらに表示されます。", + "generate": "生成", + "generatedCodeTitle": "生成されたコード", + "loading": "コードを生成中...", + "apply": "適用", + "applyChanges": "変更を適用", + "resTitle": "生成されたコード", + "overwriteConfirmTitle": "既存のコードを上書きしますか?", + "overwriteConfirmMessage": "この操作は既存のコードを上書きします。続行しますか?" + }, + "generate": { + "title": "プロンプト生成器", + "description": "プロンプト生成器は、設定済みのモデルを使って、高品質で構造的に優れたプロンプトを作成するための最適化を行います。具体的で詳細な指示をお書きください。", + "tryIt": "試してみる", + "instruction": "指示", + "generate": "生成", + "resTitle": "生成されたプロンプト", + "apply": "適用", + "loading": "アプリケーションを処理中です", + "overwriteTitle": "既存の設定を上書きしますか?", + "overwriteMessage": "このプロンプトを適用すると、既存の設定が上書きされます。", + "template": { + "pythonDebugger": { + "name": "Python デバッガー", + "instruction": "指示に従ってコードを生成し、デバッグを行うボット" + }, + "translation": { + "name": "翻訳", + "instruction": "複数言語に対応した翻訳機能" + }, + "professionalAnalyst": { + "name": "専門アナリスト", + "instruction": "長文のレポートから洞察を引き出し、リスクを特定し、重要情報をまとめる" + }, + "excelFormulaExpert": { + "name": "エクセル式エキスパート", + "instruction": "ユーザーの指示に基づき、エクセル式の理解、使用、作成をサポートするチャットボット" + }, + "travelPlanning": { + "name": "旅行計画", + "instruction": "ユーザーが簡単に旅行計画を立てられるように設計されたツール" + }, + "SQLSorcerer": { + "name": "SQL ソーサラー", + "instruction": "日常言語を SQL クエリに変換する" + }, + "GitGud": { + "name": "Git gud", + "instruction": "ユーザーが記述したバージョン管理アクションに対応する Git コマンドを生成する" + }, + "meetingTakeaways": { + "name": "会議の要点", + "instruction": "議題、重要点、行動項目を含む要約を作成する" + }, + "writingsPolisher": { + "name": "ライティングポリッシャー", + "instruction": "文章を改善するための高度な編集技法を用いる" + } + }, + "to": "トゥ", + "press": "プレス", + "version": "バージョン", + "dismiss": "無視する", + "latest": "最新の", + "versions": "バージョン", + "optional": "オプション", + "optimizationNote": "最適化ノート", + "insertContext": "コンテキストを挿入します", + "optimizePromptTooltip": "プロンプトジェネレーターで最適化する", + "instructionPlaceHolderLine2": "出力形式が正しくありません。JSON形式に厳密に従ってください。", + "idealOutput": "理想的な出力", + "instructionPlaceHolderLine3": "トーンが厳しすぎますので、もっとフレンドリーにしてください。", + "instructionPlaceHolderLine1": "要点を保持しつつ、出力をより簡潔にしてください。", + "idealOutputPlaceholder": "理想的な応答形式、長さ、トーン、および内容の要件について説明してください。", + "instructionPlaceHolderTitle": "このプロンプトをどのように改善したいかを説明してください。例えば:", + "newNoDataLine1": "左の列に指示を書き込み、「生成」をクリックして応答を表示してください。", + "codeGenInstructionPlaceHolderLine": "入力と出力のデータ型、変数の処理方法など、フィードバックが詳細であるほど、コード生成はより正確になります。" + }, + "resetConfig": { + "title": "リセットを確認しますか?", + "message": "変更が破棄され、最後に公開された構成が復元されます。" + }, + "errorMessage": { + "nameOfKeyRequired": "キーの名前:{{key}} が必要です", + "valueOfVarRequired": "{{key}} の値は空にできません", + "queryRequired": "リクエストテキストが必要です。", + "waitForResponse": "前のメッセージへの応答が完了するまでお待ちください。", + "waitForBatchResponse": "バッチタスクへの応答が完了するまでお待ちください。", + "notSelectModel": "モデルを選択してください", + "waitForImgUpload": "画像のアップロードが完了するまでお待ちください", + "waitForFileUpload": "ファイルのアップロードが完了するまでお待ちください" + }, + "warningMessage": { + "timeoutExceeded": "タイムアウトのため結果が表示されません。完全な結果を取得するにはログを参照してください。" + }, + "chatSubTitle": "プロンプト", + "completionSubTitle": "接頭辞プロンプト", + "promptTip": "プロンプトは、AI の応答を指示と制約で誘導します。 {{input}} のような変数を挿入します。このプロンプトはユーザーには表示されません。", + "formattingChangedTitle": "書式が変更されました", + "formattingChangedText": "書式を変更すると、デバッグ領域がリセットされます。よろしいですか?", + "variableTitle": "変数", + "variableTip": "ユーザーはフォームに変数を入力し、プロンプト内の変数を自動的に置換します。", + "notSetVar": "変数を使用すると、ユーザーはフォームに入力する際にプロンプトの単語や開始の言葉を導入できます。プロンプトの単語に \"{{input}}\" を入力してみてください。", + "autoAddVar": "プリプロンプトで参照されている未定義の変数があります。ユーザー入力フォームに追加しますか?", + "variableTable": { + "key": "変数キー", + "name": "ユーザー入力フィールド名", + "type": "入力タイプ", + "action": "アクション", + "typeString": "文字列", + "typeSelect": "選択" + }, + "varKeyError": { + "canNoBeEmpty": "{{key}} は必須です", + "tooLong": "{{key}} が長すぎます。30 文字を超えることはできません", + "notValid": "{{key}} が無効です。文字、数字、アンダースコアのみを含めることができます", + "notStartWithNumber": "{{key}} は数字で始めることはできません", + "keyAlreadyExists": "{{key}} はすでに存在します" + }, + "otherError": { + "promptNoBeEmpty": "プロンプトを空にすることはできません", + "historyNoBeEmpty": "プロンプトには会話履歴を設定する必要があります", + "queryNoBeEmpty": "プロンプトにクエリを設定する必要があります" + }, + "variableConfig": { + "addModalTitle": "入力フィールドを追加", + "editModalTitle": "入力フィールドを編集", + "description": "{{varName}} の変数設定", + "fieldType": "フィールドタイプ", + "string": "短文", + "text-input": "短文", + "paragraph": "段落", + "select": "選択", + "number": "数値", + "single-file": "単一ファイル", + "multi-files": "ファイルリスト", + "notSet": "設定されていません。プレフィックスのプロンプトで {{input}} を入力してみてください。", + "stringTitle": "フォームテキストボックスオプション", + "maxLength": "最大長", + "options": "オプション", + "addOption": "オプションを追加", + "apiBasedVar": "API ベースの変数", + "varName": "変数名", + "labelName": "ラベル名", + "inputPlaceholder": "入力してください", + "content": "内容", + "required": "必須", + "hide": "非表示", + "file": { + "supportFileTypes": "サポートされたファイルタイプ", + "image": { + "name": "画像" + }, + "audio": { + "name": "音声" + }, + "document": { + "name": "ドキュメント" + }, + "video": { + "name": "映像" + }, + "custom": { + "name": "他のファイルタイプ", + "description": "他のファイルタイプを指定する。", + "createPlaceholder": "+ 拡張子,例:.doc" + } + }, + "uploadFileTypes": "アップロードされたファイルのタイプ", + "localUpload": "ローカル アップロード", + "both": "両方", + "maxNumberOfUploads": "アップロードの最大数", + "maxNumberTip": "ドキュメント < {{docLimit}}, 画像 < {{imgLimit}}, 音声 < {{audioLimit}}, 映像 < {{videoLimit}}", + "errorMsg": { + "labelNameRequired": "ラベル名は必須です", + "varNameCanBeRepeat": "変数名は繰り返すことができません", + "atLeastOneOption": "少なくとも 1 つのオプションが必要です", + "optionRepeat": "繰り返しオプションがあります" + }, + "defaultValue": "デフォルト値", + "noDefaultValue": "デフォルト値なし", + "selectDefaultValue": "デフォルト値を選択", + "jsonSchema": "JSONスキーマ", + "optional": "オプション", + "json": "JSONコード", + "checkbox": "チェックボックス", + "tooltips": "ツールチップ", + "placeholder": "プレースホルダー", + "unit": "ユニット", + "uploadMethod": "アップロード方法", + "startChecked": "スタートを確認しました", + "placeholderPlaceholder": "フィールドが空のときに表示するテキストを入力します", + "showAllSettings": "すべての設定を表示", + "defaultValuePlaceholder": "フィールドを事前に入力するためにデフォルト値を入力してください", + "noDefaultSelected": "選ばないでください", + "unitPlaceholder": "数値の後に単位を表示します。例えば、トークン", + "displayName": "表示名", + "startSelectedOption": "選択したオプションを開始する", + "tooltipsPlaceholder": "ラベルにマウスを合わせたときに表示される便利なテキストを入力してください" + }, + "vision": { + "name": "ビジョン", + "description": "ビジョンを有効にすると、モデルが画像を受け取り、それに関する質問に答えることができます。", + "onlySupportVisionModelTip": "ビジョンモデルのみをサポート", + "settings": "設定", + "visionSettings": { + "title": "ビジョン設定", + "resolution": "解像度", + "resolutionTooltip": "低解像度では、モデルに低解像度の 512 x 512 バージョンの画像を受け取らせ、画像を 65 トークンの予算で表現します。これにより、API がより迅速な応答を返し、高い詳細が必要なユースケースでは入力トークンを消費します。\n高解像度では、まずモデルに低解像度の画像を見せ、その後、入力画像サイズに基づいて 512px の正方形の詳細なクロップを作成します。詳細なクロップごとに 129 トークンの予算を使用します。", + "high": "高", + "low": "低", + "uploadMethod": "アップロード方法", + "both": "両方", + "localUpload": "ローカルアップロード", + "url": "URL", + "uploadLimit": "アップロード制限" + } + }, + "voice": { + "name": "音声", + "defaultDisplay": "デフォルトの音声", + "description": "テキスト読み上げの音声設定", + "settings": "設定", + "voiceSettings": { + "title": "音声設定", + "language": "言語", + "resolutionTooltip": "テキスト読み上げの音声言語をサポートします。", + "voice": "音声", + "autoPlay": "自動再生", + "autoPlayEnabled": "開ける", + "autoPlayDisabled": "閉じる" + } + }, + "openingStatement": { + "title": "会話開始", + "add": "追加", + "writeOpener": "オープナーを書く", + "placeholder": "ここにオープナーメッセージを書いてください。変数を使用できます。{{variable}} を入力してみてください。", + "openingQuestion": "開始質問", + "openingQuestionPlaceholder": "変数を使用できます。{{variable}} と入力してみてください。", + "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": "出力テキスト", + "noResult": "出力はここに表示されます。", + "datasetConfig": { + "settingTitle": "リトリーバル設定", + "knowledgeTip": "ナレッジを追加するには「+」ボタンをクリックしてください", + "retrieveOneWay": { + "title": "N-to-1 リトリーバル", + "description": "ユーザーの意図とナレッジの説明に基づいて、エージェントが自律的に最適なナレッジを選択します。個々の、限られたナレッジを持つアプリケーションに最適です。" + }, + "retrieveMultiWay": { + "title": "マルチパスリトリーバル", + "description": "ユーザーの意図に基づいて、すべてのナレッジをクエリし、複数のソースから関連するテキストを取得し、再順位付け後、ユーザークエリに最適な結果を選択します。再順位付けモデル API の構成が必要です。" + }, + "embeddingModelRequired": "Embedding モデルが設定されていない", + "rerankModelRequired": "再順位付けモデルが必要です", + "params": "パラメータ", + "top_k": "トップ K", + "top_kTip": "ユーザーの質問に最も類似したチャンクをフィルタリングするために使用されます。システムは、選択したモデルの max_tokens に応じて、動的に Top K の値を調整します。", + "score_threshold": "スコア閾値", + "score_thresholdTip": "チャンクフィルタリングの類似性閾値を設定するために使用されます。", + "retrieveChangeTip": "インデックスモードとリトリーバルモードを変更すると、このナレッジに関連付けられたアプリケーションに影響を与える可能性があります。" + }, + "debugAsSingleModel": "単一モデルでデバッグ", + "debugAsMultipleModel": "複数モデルでデバッグ", + "duplicateModel": "複製", + "publishAs": "として公開", + "assistantType": { + "name": "アシスタントタイプ", + "chatAssistant": { + "name": "基本アシスタント", + "description": "大規模な言語モデルを使用してチャットベースのアシスタントを構築します" + }, + "agentAssistant": { + "name": "エージェントアシスタント", + "description": "タスクを自律的に完了するためのツールを選択できるインテリジェントエージェントを構築します" + } + }, + "agent": { + "agentMode": "エージェントモード", + "agentModeDes": "エージェントの推論モードの種類を設定します", + "agentModeType": { + "ReACT": "ReAct", + "functionCall": "関数呼び出し" + }, + "setting": { + "name": "エージェント設定", + "description": "エージェントアシスタント設定では、エージェントモードやビルトインプロンプトなどの高度な機能を設定できます。エージェントタイプのみ利用可能です。", + "maximumIterations": { + "name": "最大反復回数", + "description": "エージェントアシスタントが実行できる反復回数を制限します" + } + }, + "buildInPrompt": "ビルトインプロンプト", + "firstPrompt": "最初のプロンプト", + "nextIteration": "次の反復", + "promptPlaceholder": "ここにプロンプトを入力してください", + "tools": { + "name": "ツール", + "description": "ツールを使用すると、インターネットの検索や科学的計算など、LLM の機能を拡張できます", + "enabled": "有効" + } + } +} diff --git a/web/i18n/ja-JP/app-debug.ts b/web/i18n/ja-JP/app-debug.ts deleted file mode 100644 index 06b47c1a47..0000000000 --- a/web/i18n/ja-JP/app-debug.ts +++ /dev/null @@ -1,568 +0,0 @@ -const translation = { - pageTitle: { - line1: 'プロンプト', - line2: 'エンジニアリング', - }, - orchestrate: 'オーケストレーション', - promptMode: { - simple: 'エキスパートモードに切り替えて、PROMPT 全体を編集します', - advanced: 'エキスパートモード', - switchBack: '基本モードに戻る', - advancedWarning: { - title: 'エキスパートモードに切り替えました。PROMPT を変更すると、基本モードに戻ることはできません。', - description: 'エキスパートモードでは、PROMPT 全体を編集できます。', - learnMore: '詳細はこちら', - ok: 'OK', - }, - operation: { - addMessage: 'メッセージを追加', - }, - contextMissing: 'コンテキストコンポーネントが見つかりません。プロンプトの効果が十分でない場合があります。', - }, - operation: { - applyConfig: '公開', - resetConfig: 'リセット', - debugConfig: 'デバッグ', - addFeature: '機能を追加', - automatic: '自動', - stopResponding: '応答を停止', - agree: 'いいね', - disagree: 'いいえ', - cancelAgree: 'いいねをキャンセル', - cancelDisagree: 'いいえをキャンセル', - userAction: 'ユーザー', - }, - code: { - instruction: '指示', - }, - notSetAPIKey: { - title: 'LLM プロバイダーキーが設定されていません', - trailFinished: 'トライアル終了', - description: 'LLM プロバイダーキーが設定されていません。デバッグする前に設定する必要があります。', - settingBtn: '設定に移動', - }, - trailUseGPT4Info: { - title: '現在、gpt-4 はサポートされていません', - description: 'gpt-4 を使用するには、API キーを設定してください。', - }, - feature: { - groupChat: { - title: 'チャットの強化', - description: 'アプリの事前会話設定を追加すると、ユーザーエクスペリエンスが向上します。', - }, - groupExperience: { - title: 'エクスペリエンスの強化', - }, - conversationOpener: { - title: '会話の開始', - description: 'チャットアプリでは、AI がユーザーに最初にアクティブに話しかける最初の文は、通常、歓迎メッセージとして使用されます。', - }, - 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: 'コンテキストとして知識をインポートできます', - selectTitle: '参照する知識を選択', - selected: '選択された知識', - noDataSet: '知識が見つかりません', - toCreate: '作成に進む', - notSupportSelectMulti: '現在、複数の知識の選択はサポートされていません', - queryVariable: { - title: 'クエリ変数', - tip: 'この変数はコンテキストの取得のためのクエリ入力として使用され、この変数の入力に関連するコンテキスト情報を取得します。', - choosePlaceholder: 'クエリ変数を選択', - noVar: '変数なし', - noVarTip: '変数セクションの下に変数を作成してください', - unableToQueryDataSet: '知識をクエリできません', - unableToQueryDataSetTip: '知識のクエリに失敗しました。正常にクエリできなかった場合は、コンテキストセクションでコンテキストクエリ変数を選択してください。', - ok: 'OK', - contextVarNotEmpty: 'コンテキストクエリ変数は空にできません', - deleteContextVarTitle: '変数 "{{varName}}" を削除しますか?', - deleteContextVarTip: 'この変数はコンテキストクエリ変数として設定されており、削除すると知識の正常な使用に影響します。削除する場合は、コンテキストセクションで再選択してください。', - }, - }, - tools: { - title: 'ツール', - tips: 'ツールは、ユーザー入力または変数をリクエストパラメーターとして使用して外部データをコンテキストとしてクエリするための標準的な API 呼び出し方法を提供します。', - toolsInUse: '{{count}} 個のツールが使用中', - modal: { - title: 'ツール', - toolType: { - title: 'ツールタイプ', - placeholder: 'ツールタイプを選択してください', - }, - name: { - title: '名前', - placeholder: '名前を入力してください', - }, - variableName: { - title: '変数名', - placeholder: '変数名を入力してください', - }, - }, - }, - conversationHistory: { - title: '会話履歴', - description: '会話の役割に接頭辞名を設定します', - tip: '会話履歴は有効になっていません。上記のプロンプトに を追加してください。', - learnMore: '詳細はこちら', - editModal: { - title: '会話役割名の編集', - userPrefix: 'ユーザー接頭辞', - assistantPrefix: 'アシスタント接頭辞', - }, - }, - toolbox: { - title: 'ツールボックス', - }, - moderation: { - title: 'コンテンツのモデレーション', - description: 'モデレーション API を使用するか、機密語リストを維持することで、モデルの出力を安全にします。', - contentEnableLabel: 'コンテンツモデレーションが有効', - allEnabled: '入力/出力コンテンツが有効になっています', - inputEnabled: '入力コンテンツが有効になっています', - outputEnabled: '出力コンテンツが有効になっています', - modal: { - title: 'コンテンツのモデレーション設定', - provider: { - title: 'プロバイダ', - openai: 'OpenAI モデレーション', - openaiTip: { - prefix: 'OpenAI モデレーションには、', - suffix: 'に OpenAI API キーが設定されている必要があります。', - }, - keywords: 'キーワード', - }, - keywords: { - tip: '1 行ごとに 1 つ、行区切りで入力してください。1 行あたり最大 100 文字。', - placeholder: '1 行ごとに、行区切りで入力してください', - line: '行', - }, - content: { - input: '入力コンテンツをモデレート', - output: '出力コンテンツをモデレート', - preset: 'プリセット返信', - placeholder: 'ここにプリセット返信の内容を入力', - condition: '少なくとも 1 つの入力および出力コンテンツをモデレートする', - fromApi: 'プリセット返信は API によって返されます', - errorMessage: 'プリセット返信は空にできません', - supportMarkdown: 'Markdown がサポートされています', - }, - openaiNotConfig: { - before: 'OpenAI モデレーションには、', - after: 'に OpenAI API キーが設定されている必要があります。', - }, - }, - }, - fileUpload: { - title: 'ファイル アップロード', - description: 'チャットの入力ボックスは画像やドキュメントやその他のファイルのアップロードをサポートします。', - supportedTypes: 'サポートされるファイルのタイプ', - numberLimit: '最大アップロード数', - modalTitle: 'ファイル アップロード設置', - }, - imageUpload: { - title: '画像アップロード', - description: '画像アップロードをサポートする', - supportedTypes: 'サポートされるファイルのタイプ', - numberLimit: '最大アップロード数', - modalTitle: '画像アップロード設置', - }, - bar: { - empty: 'Web アプリのユーザーエクスペリアンスを強化させる機能を有効にする', - enableText: '有効な機能', - manage: '管理', - }, - documentUpload: { - title: 'ドキュメント', - description: 'ドキュメント機能を有効にすると、AI モデルがファイルを処理し、その内容に基づいて質問に回答できるようになります。', - }, - audioUpload: { - title: '音声', - description: '音声機能を有効にすると、モデルが音声ファイルの転写と分析を処理できるようになります。', - }, - }, - codegen: { - title: 'コードジェネレーター', - description: 'コードジェネレーターは、設定されたモデルを使用して指示に基づいて高品質なコードを生成します。明確で詳細な指示を提供してください。', - instruction: '指示', - instructionPlaceholder: '生成したいコードの詳細な説明を入力してください。', - noDataLine1: '左側に使用例を記入してください,', - noDataLine2: 'コードのプレビューがこちらに表示されます。', - generate: '生成', - generatedCodeTitle: '生成されたコード', - loading: 'コードを生成中...', - apply: '適用', - applyChanges: '変更を適用', - resTitle: '生成されたコード', - overwriteConfirmTitle: '既存のコードを上書きしますか?', - overwriteConfirmMessage: 'この操作は既存のコードを上書きします。続行しますか?', - }, - generate: { - title: 'プロンプト生成器', - description: 'プロンプト生成器は、設定済みのモデルを使って、高品質で構造的に優れたプロンプトを作成するための最適化を行います。具体的で詳細な指示をお書きください。', - tryIt: '試してみる', - instruction: '指示', - generate: '生成', - resTitle: '生成されたプロンプト', - apply: '適用', - loading: 'アプリケーションを処理中です', - overwriteTitle: '既存の設定を上書きしますか?', - overwriteMessage: 'このプロンプトを適用すると、既存の設定が上書きされます。', - template: { - pythonDebugger: { - name: 'Python デバッガー', - instruction: '指示に従ってコードを生成し、デバッグを行うボット', - }, - translation: { - name: '翻訳', - instruction: '複数言語に対応した翻訳機能', - }, - professionalAnalyst: { - name: '専門アナリスト', - instruction: '長文のレポートから洞察を引き出し、リスクを特定し、重要情報をまとめる', - }, - excelFormulaExpert: { - name: 'エクセル式エキスパート', - instruction: 'ユーザーの指示に基づき、エクセル式の理解、使用、作成をサポートするチャットボット', - }, - travelPlanning: { - name: '旅行計画', - instruction: 'ユーザーが簡単に旅行計画を立てられるように設計されたツール', - }, - SQLSorcerer: { - name: 'SQL ソーサラー', - instruction: '日常言語を SQL クエリに変換する', - }, - GitGud: { - name: 'Git gud', - instruction: 'ユーザーが記述したバージョン管理アクションに対応する Git コマンドを生成する', - }, - meetingTakeaways: { - name: '会議の要点', - instruction: '議題、重要点、行動項目を含む要約を作成する', - }, - writingsPolisher: { - name: 'ライティングポリッシャー', - instruction: '文章を改善するための高度な編集技法を用いる', - }, - }, - to: 'トゥ', - press: 'プレス', - version: 'バージョン', - dismiss: '無視する', - latest: '最新の', - versions: 'バージョン', - optional: 'オプション', - optimizationNote: '最適化ノート', - insertContext: 'コンテキストを挿入します', - optimizePromptTooltip: 'プロンプトジェネレーターで最適化する', - instructionPlaceHolderLine2: '出力形式が正しくありません。JSON形式に厳密に従ってください。', - idealOutput: '理想的な出力', - instructionPlaceHolderLine3: 'トーンが厳しすぎますので、もっとフレンドリーにしてください。', - instructionPlaceHolderLine1: '要点を保持しつつ、出力をより簡潔にしてください。', - idealOutputPlaceholder: '理想的な応答形式、長さ、トーン、および内容の要件について説明してください。', - instructionPlaceHolderTitle: 'このプロンプトをどのように改善したいかを説明してください。例えば:', - newNoDataLine1: '左の列に指示を書き込み、「生成」をクリックして応答を表示してください。', - codeGenInstructionPlaceHolderLine: '入力と出力のデータ型、変数の処理方法など、フィードバックが詳細であるほど、コード生成はより正確になります。', - }, - resetConfig: { - title: 'リセットを確認しますか?', - message: '変更が破棄され、最後に公開された構成が復元されます。', - }, - errorMessage: { - nameOfKeyRequired: 'キーの名前:{{key}} が必要です', - valueOfVarRequired: '{{key}} の値は空にできません', - queryRequired: 'リクエストテキストが必要です。', - waitForResponse: '前のメッセージへの応答が完了するまでお待ちください。', - waitForBatchResponse: 'バッチタスクへの応答が完了するまでお待ちください。', - notSelectModel: 'モデルを選択してください', - waitForImgUpload: '画像のアップロードが完了するまでお待ちください', - waitForFileUpload: 'ファイルのアップロードが完了するまでお待ちください', - }, - warningMessage: { - timeoutExceeded: 'タイムアウトのため結果が表示されません。完全な結果を取得するにはログを参照してください。', - }, - chatSubTitle: 'プロンプト', - completionSubTitle: '接頭辞プロンプト', - promptTip: 'プロンプトは、AI の応答を指示と制約で誘導します。 {{input}} のような変数を挿入します。このプロンプトはユーザーには表示されません。', - formattingChangedTitle: '書式が変更されました', - formattingChangedText: '書式を変更すると、デバッグ領域がリセットされます。よろしいですか?', - variableTitle: '変数', - variableTip: 'ユーザーはフォームに変数を入力し、プロンプト内の変数を自動的に置換します。', - notSetVar: '変数を使用すると、ユーザーはフォームに入力する際にプロンプトの単語や開始の言葉を導入できます。プロンプトの単語に "{{input}}" を入力してみてください。', - autoAddVar: 'プリプロンプトで参照されている未定義の変数があります。ユーザー入力フォームに追加しますか?', - variableTable: { - key: '変数キー', - name: 'ユーザー入力フィールド名', - type: '入力タイプ', - action: 'アクション', - typeString: '文字列', - typeSelect: '選択', - }, - varKeyError: { - canNoBeEmpty: '{{key}} は必須です', - tooLong: '{{key}} が長すぎます。30 文字を超えることはできません', - notValid: '{{key}} が無効です。文字、数字、アンダースコアのみを含めることができます', - notStartWithNumber: '{{key}} は数字で始めることはできません', - keyAlreadyExists: '{{key}} はすでに存在します', - }, - otherError: { - promptNoBeEmpty: 'プロンプトを空にすることはできません', - historyNoBeEmpty: 'プロンプトには会話履歴を設定する必要があります', - queryNoBeEmpty: 'プロンプトにクエリを設定する必要があります', - }, - variableConfig: { - 'addModalTitle': '入力フィールドを追加', - 'editModalTitle': '入力フィールドを編集', - 'description': '{{varName}} の変数設定', - 'fieldType': 'フィールドタイプ', - 'string': '短文', - 'text-input': '短文', - 'paragraph': '段落', - 'select': '選択', - 'number': '数値', - 'single-file': '単一ファイル', - 'multi-files': 'ファイルリスト', - 'notSet': '設定されていません。プレフィックスのプロンプトで {{input}} を入力してみてください。', - 'stringTitle': 'フォームテキストボックスオプション', - 'maxLength': '最大長', - 'options': 'オプション', - 'addOption': 'オプションを追加', - 'apiBasedVar': 'API ベースの変数', - 'varName': '変数名', - 'labelName': 'ラベル名', - 'inputPlaceholder': '入力してください', - 'content': '内容', - 'required': '必須', - 'hide': '非表示', - 'file': { - supportFileTypes: 'サポートされたファイルタイプ', - image: { - name: '画像', - }, - audio: { - name: '音声', - }, - document: { - name: 'ドキュメント', - }, - video: { - name: '映像', - }, - custom: { - name: '他のファイルタイプ', - description: '他のファイルタイプを指定する。', - createPlaceholder: '+ 拡張子,例:.doc', - }, - }, - 'uploadFileTypes': 'アップロードされたファイルのタイプ', - 'localUpload': 'ローカル アップロード', - 'both': '両方', - 'maxNumberOfUploads': 'アップロードの最大数', - 'maxNumberTip': 'ドキュメント < {{docLimit}}, 画像 < {{imgLimit}}, 音声 < {{audioLimit}}, 映像 < {{videoLimit}}', - 'errorMsg': { - labelNameRequired: 'ラベル名は必須です', - varNameCanBeRepeat: '変数名は繰り返すことができません', - atLeastOneOption: '少なくとも 1 つのオプションが必要です', - optionRepeat: '繰り返しオプションがあります', - }, - 'defaultValue': 'デフォルト値', - 'noDefaultValue': 'デフォルト値なし', - 'selectDefaultValue': 'デフォルト値を選択', - 'jsonSchema': 'JSONスキーマ', - 'optional': 'オプション', - 'json': 'JSONコード', - 'checkbox': 'チェックボックス', - 'tooltips': 'ツールチップ', - 'placeholder': 'プレースホルダー', - 'unit': 'ユニット', - 'uploadMethod': 'アップロード方法', - 'startChecked': 'スタートを確認しました', - 'placeholderPlaceholder': 'フィールドが空のときに表示するテキストを入力します', - 'showAllSettings': 'すべての設定を表示', - 'defaultValuePlaceholder': 'フィールドを事前に入力するためにデフォルト値を入力してください', - 'noDefaultSelected': '選ばないでください', - 'unitPlaceholder': '数値の後に単位を表示します。例えば、トークン', - 'displayName': '表示名', - 'startSelectedOption': '選択したオプションを開始する', - 'tooltipsPlaceholder': 'ラベルにマウスを合わせたときに表示される便利なテキストを入力してください', - }, - vision: { - name: 'ビジョン', - description: 'ビジョンを有効にすると、モデルが画像を受け取り、それに関する質問に答えることができます。', - onlySupportVisionModelTip: 'ビジョンモデルのみをサポート', - settings: '設定', - visionSettings: { - title: 'ビジョン設定', - resolution: '解像度', - resolutionTooltip: '低解像度では、モデルに低解像度の 512 x 512 バージョンの画像を受け取らせ、画像を 65 トークンの予算で表現します。これにより、API がより迅速な応答を返し、高い詳細が必要なユースケースでは入力トークンを消費します。\n高解像度では、まずモデルに低解像度の画像を見せ、その後、入力画像サイズに基づいて 512px の正方形の詳細なクロップを作成します。詳細なクロップごとに 129 トークンの予算を使用します。', - high: '高', - low: '低', - uploadMethod: 'アップロード方法', - both: '両方', - localUpload: 'ローカルアップロード', - url: 'URL', - uploadLimit: 'アップロード制限', - }, - }, - voice: { - name: '音声', - defaultDisplay: 'デフォルトの音声', - description: 'テキスト読み上げの音声設定', - settings: '設定', - voiceSettings: { - title: '音声設定', - language: '言語', - resolutionTooltip: 'テキスト読み上げの音声言語をサポートします。', - voice: '音声', - autoPlay: '自動再生', - autoPlayEnabled: '開ける', - autoPlayDisabled: '閉じる', - }, - }, - openingStatement: { - title: '会話開始', - add: '追加', - writeOpener: 'オープナーを書く', - placeholder: 'ここにオープナーメッセージを書いてください。変数を使用できます。{{variable}} を入力してみてください。', - openingQuestion: '開始質問', - openingQuestionPlaceholder: '変数を使用できます。{{variable}} と入力してみてください。', - 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: '出力テキスト', - noResult: '出力はここに表示されます。', - datasetConfig: { - settingTitle: 'リトリーバル設定', - knowledgeTip: 'ナレッジを追加するには「+」ボタンをクリックしてください', - retrieveOneWay: { - title: 'N-to-1 リトリーバル', - description: 'ユーザーの意図とナレッジの説明に基づいて、エージェントが自律的に最適なナレッジを選択します。個々の、限られたナレッジを持つアプリケーションに最適です。', - }, - retrieveMultiWay: { - title: 'マルチパスリトリーバル', - description: 'ユーザーの意図に基づいて、すべてのナレッジをクエリし、複数のソースから関連するテキストを取得し、再順位付け後、ユーザークエリに最適な結果を選択します。再順位付けモデル API の構成が必要です。', - }, - embeddingModelRequired: 'Embedding モデルが設定されていない', - rerankModelRequired: '再順位付けモデルが必要です', - params: 'パラメータ', - top_k: 'トップ K', - top_kTip: 'ユーザーの質問に最も類似したチャンクをフィルタリングするために使用されます。システムは、選択したモデルの max_tokens に応じて、動的に Top K の値を調整します。', - score_threshold: 'スコア閾値', - score_thresholdTip: 'チャンクフィルタリングの類似性閾値を設定するために使用されます。', - retrieveChangeTip: 'インデックスモードとリトリーバルモードを変更すると、このナレッジに関連付けられたアプリケーションに影響を与える可能性があります。', - }, - debugAsSingleModel: '単一モデルでデバッグ', - debugAsMultipleModel: '複数モデルでデバッグ', - duplicateModel: '複製', - publishAs: 'として公開', - assistantType: { - name: 'アシスタントタイプ', - chatAssistant: { - name: '基本アシスタント', - description: '大規模な言語モデルを使用してチャットベースのアシスタントを構築します', - }, - agentAssistant: { - name: 'エージェントアシスタント', - description: 'タスクを自律的に完了するためのツールを選択できるインテリジェントエージェントを構築します', - }, - }, - agent: { - agentMode: 'エージェントモード', - agentModeDes: 'エージェントの推論モードの種類を設定します', - agentModeType: { - ReACT: 'ReAct', - functionCall: '関数呼び出し', - }, - setting: { - name: 'エージェント設定', - description: 'エージェントアシスタント設定では、エージェントモードやビルトインプロンプトなどの高度な機能を設定できます。エージェントタイプのみ利用可能です。', - maximumIterations: { - name: '最大反復回数', - description: 'エージェントアシスタントが実行できる反復回数を制限します', - }, - }, - buildInPrompt: 'ビルトインプロンプト', - firstPrompt: '最初のプロンプト', - nextIteration: '次の反復', - promptPlaceholder: 'ここにプロンプトを入力してください', - tools: { - name: 'ツール', - description: 'ツールを使用すると、インターネットの検索や科学的計算など、LLM の機能を拡張できます', - enabled: '有効', - }, - }, -} - -export default translation diff --git a/web/i18n/ja-JP/app-log.json b/web/i18n/ja-JP/app-log.json new file mode 100644 index 0000000000..ebebf4d0a7 --- /dev/null +++ b/web/i18n/ja-JP/app-log.json @@ -0,0 +1,110 @@ +{ + "title": "ログ", + "description": "ログは、アプリケーションの実行状態を記録します。ユーザーの入力や AI の応答などが含まれます。", + "dateTimeFormat": "YYYY/MM/DD hh:mm:ss A", + "dateFormat": "YYYY/MM/DD", + "table": { + "header": { + "updatedTime": "更新時間", + "time": "作成時間", + "endUser": "エンドユーザーまたはアカウント", + "input": "入力", + "output": "出力", + "summary": "タイトル", + "messageCount": "メッセージ数", + "userRate": "ユーザーレート", + "adminRate": "操作レート", + "startTime": "開始時間", + "status": "ステータス", + "runtime": "ランタイム", + "tokens": "トークン", + "user": "エンドユーザーまたはアカウント", + "version": "バージョン", + "triggered_from": "トリガー方法" + }, + "pagination": { + "previous": "前へ", + "next": "次へ" + }, + "empty": { + "noChat": "まだ会話はありません", + "noOutput": "出力がありません", + "element": { + "title": "誰かいますか?", + "content": "ここでは、エンドユーザーと AI アプリケーション間の相互作用を観察し、注釈を付けることで、AI の精度を継続的に向上させます。Web アプリを共有またはテストしてみて、このページに戻ってください。" + } + } + }, + "detail": { + "time": "時間", + "conversationId": "会話 ID", + "promptTemplate": "プロンプトテンプレート", + "promptTemplateBeforeChat": "チャット前のプロンプトテンプレート・システムメッセージとして", + "annotationTip": "{{user}} によってマークされた改善", + "timeConsuming": "", + "second": "秒", + "tokenCost": "トークン消費", + "loading": "読み込み中", + "operation": { + "like": "いいね", + "dislike": "いいね解除", + "addAnnotation": "改善を追加", + "editAnnotation": "改善を編集", + "annotationPlaceholder": "将来のモデルの微調整やテキスト生成品質の継続的改善のために AI が返信することを期待する答えを入力してください。" + }, + "variables": "変数", + "uploadImages": "アップロードされた画像", + "modelParams": "モデルパラメータ" + }, + "filter": { + "period": { + "today": "今日", + "last7days": "過去 7 日間", + "last30days": "過去 30 日間", + "last4weeks": "過去 4 週間", + "last3months": "過去 3 ヶ月", + "last12months": "過去 12 ヶ月", + "monthToDate": "月初から今日まで", + "quarterToDate": "四半期初から今日まで", + "yearToDate": "年初から今日まで", + "allTime": "すべての期間", + "custom": "カスタム" + }, + "annotation": { + "all": "すべて", + "annotated": "注釈付きの改善 ({{count}} アイテム)", + "not_annotated": "注釈なし" + }, + "sortBy": "並べ替え", + "descending": "降順", + "ascending": "昇順" + }, + "workflowTitle": "ワークフローログ", + "workflowSubtitle": "このログは Automate の操作を記録しました。", + "runDetail": { + "title": "会話ログ", + "workflowTitle": "ログの詳細", + "fileListLabel": "ファイルの詳細", + "fileListDetail": "詳細", + "testWithParams": "パラメータ付きテスト" + }, + "promptLog": "プロンプトログ", + "agentLog": "エージェントログ", + "viewLog": "ログを表示", + "agentLogDetail": { + "agentMode": "エージェントモード", + "toolUsed": "使用したツール", + "iterations": "反復", + "iteration": "反復", + "finalProcessing": "最終処理" + }, + "triggerBy": { + "debugging": "デバッグ", + "appRun": "ウェブアプリ", + "webhook": "Webhook", + "schedule": "スケジュール", + "plugin": "プラグイン", + "ragPipelineRun": "RAGパイプライン", + "ragPipelineDebugging": "RAGデバッグ" + } +} diff --git a/web/i18n/ja-JP/app-log.ts b/web/i18n/ja-JP/app-log.ts deleted file mode 100644 index aa23d8352d..0000000000 --- a/web/i18n/ja-JP/app-log.ts +++ /dev/null @@ -1,112 +0,0 @@ -const translation = { - title: 'ログ', - description: 'ログは、アプリケーションの実行状態を記録します。ユーザーの入力や AI の応答などが含まれます。', - dateTimeFormat: 'YYYY/MM/DD hh:mm:ss A', - dateFormat: 'YYYY/MM/DD', - table: { - header: { - updatedTime: '更新時間', - time: '作成時間', - endUser: 'エンドユーザーまたはアカウント', - input: '入力', - output: '出力', - summary: 'タイトル', - messageCount: 'メッセージ数', - userRate: 'ユーザーレート', - adminRate: '操作レート', - startTime: '開始時間', - status: 'ステータス', - runtime: 'ランタイム', - tokens: 'トークン', - user: 'エンドユーザーまたはアカウント', - version: 'バージョン', - triggered_from: 'トリガー方法', - }, - pagination: { - previous: '前へ', - next: '次へ', - }, - empty: { - noChat: 'まだ会話はありません', - noOutput: '出力がありません', - element: { - title: '誰かいますか?', - content: 'ここでは、エンドユーザーと AI アプリケーション間の相互作用を観察し、注釈を付けることで、AI の精度を継続的に向上させます。Web アプリを共有またはテストしてみて、このページに戻ってください。', - }, - }, - }, - detail: { - time: '時間', - conversationId: '会話 ID', - promptTemplate: 'プロンプトテンプレート', - promptTemplateBeforeChat: 'チャット前のプロンプトテンプレート・システムメッセージとして', - annotationTip: '{{user}} によってマークされた改善', - timeConsuming: '', - second: '秒', - tokenCost: 'トークン消費', - loading: '読み込み中', - operation: { - like: 'いいね', - dislike: 'いいね解除', - addAnnotation: '改善を追加', - editAnnotation: '改善を編集', - annotationPlaceholder: '将来のモデルの微調整やテキスト生成品質の継続的改善のために AI が返信することを期待する答えを入力してください。', - }, - variables: '変数', - uploadImages: 'アップロードされた画像', - modelParams: 'モデルパラメータ', - }, - filter: { - period: { - today: '今日', - last7days: '過去 7 日間', - last30days: '過去 30 日間', - last4weeks: '過去 4 週間', - last3months: '過去 3 ヶ月', - last12months: '過去 12 ヶ月', - monthToDate: '月初から今日まで', - quarterToDate: '四半期初から今日まで', - yearToDate: '年初から今日まで', - allTime: 'すべての期間', - custom: 'カスタム', - }, - annotation: { - all: 'すべて', - annotated: '注釈付きの改善 ({{count}} アイテム)', - not_annotated: '注釈なし', - }, - sortBy: '並べ替え', - descending: '降順', - ascending: '昇順', - }, - workflowTitle: 'ワークフローログ', - workflowSubtitle: 'このログは Automate の操作を記録しました。', - runDetail: { - title: '会話ログ', - workflowTitle: 'ログの詳細', - fileListLabel: 'ファイルの詳細', - fileListDetail: '詳細', - testWithParams: 'パラメータ付きテスト', - }, - promptLog: 'プロンプトログ', - agentLog: 'エージェントログ', - viewLog: 'ログを表示', - agentLogDetail: { - agentMode: 'エージェントモード', - toolUsed: '使用したツール', - iterations: '反復', - iteration: '反復', - finalProcessing: '最終処理', - }, - triggerBy: { - debugging: 'デバッグ', - appRun: 'ウェブアプリ', - webhook: 'Webhook', - schedule: 'スケジュール', - plugin: 'プラグイン', - ragPipelineRun: 'RAGパイプライン', - ragPipelineDebugging: 'RAGデバッグ', - }, -} - -export default translation diff --git a/web/i18n/ja-JP/app-overview.json b/web/i18n/ja-JP/app-overview.json new file mode 100644 index 0000000000..ab05a588ef --- /dev/null +++ b/web/i18n/ja-JP/app-overview.json @@ -0,0 +1,187 @@ +{ + "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": { + "title": "Web App", + "explanation": "使いやすい AI Web アプリ", + "accessibleAddress": "公開 URL", + "preview": "プレビュー", + "regenerate": "再生成", + "regenerateNotice": "公開 URL を再生成しますか?", + "preUseReminder": "続行する前に Web アプリを有効にしてください。", + "enableTooltip": { + "description": "この機能を有効にするには、キャンバスにユーザー入力ノードを追加してください。(下書きに既に存在する可能性があり、公開後に有効になります)", + "learnMore": "詳細を見る" + }, + "settings": { + "entry": "設定", + "title": "Web アプリの設定", + "webName": "Web アプリの名前", + "webDesc": "Web アプリの説明", + "webDescTip": "このテキストはクライアント側に表示され、アプリケーションの使用方法の基本的なガイダンスを提供します。", + "webDescPlaceholder": "Web アプリの説明を入力してください", + "language": "言語", + "workflow": { + "title": "ワークフローステップ", + "show": "表示", + "hide": "非表示", + "subTitle": "ワークフローの詳細", + "showDesc": "Web アプリでワークフローの詳細を表示または非表示にする" + }, + "chatColorTheme": "チャットボットのカラーテーマ", + "chatColorThemeDesc": "チャットボットのカラーテーマを設定します", + "chatColorThemeInverted": "反転", + "invalidHexMessage": "無効な 16 進数値", + "invalidPrivacyPolicy": "無効なプライバシーポリシーのリンクです。http または https で始まる有効なリンクを使用してください", + "more": { + "entry": "その他の設定を表示", + "copyright": "著作権", + "copyRightPlaceholder": "著作者または組織名を入力してください", + "privacyPolicy": "プライバシーポリシー", + "privacyPolicyPlaceholder": "プライバシーポリシーリンクを入力してください", + "privacyPolicyTip": "訪問者がアプリケーションが収集するデータを理解し、Dify のプライバシーポリシーを参照できるようにします。", + "customDisclaimer": "カスタム免責事項", + "customDisclaimerPlaceholder": "免責事項を入力してください", + "customDisclaimerTip": "アプリケーションの使用に関する免責事項を提供します。", + "copyrightTooltip": "プロフェッショナルプラン以上にアップグレードしてください", + "copyrightTip": "Web アプリに著作権情報を表示する" + }, + "sso": { + "title": "Web アプリの SSO", + "tooltip": "管理者に問い合わせて、Web アプリの SSO を有効にします", + "label": "SSO 認証", + "description": "すべてのユーザーは、Web アプリを使用する前に SSO でログインする必要があります" + }, + "modalTip": "クライアント側の Web アプリ設定。" + }, + "embedded": { + "entry": "埋め込み", + "title": "ウェブサイトに埋め込む", + "explanation": "チャットアプリをウェブサイトに埋め込む方法を選択します。", + "iframe": "ウェブサイトの任意の場所にチャットアプリを追加するには、この iframe を HTML コードに追加してください。", + "scripts": "ウェブサイトの右下にチャットアプリを追加するには、このコードを HTML に追加してください。", + "chromePlugin": "Dify Chatbot Chrome 拡張機能をインストール", + "copied": "コピーしました", + "copy": "コピー" + }, + "qrcode": { + "title": "共有用 QR コード", + "scan": "アプリケーションの共有をスキャン", + "download": "QR コードをダウンロード" + }, + "customize": { + "way": "方法", + "entry": "カスタマイズ", + "title": "AI Web アプリのカスタマイズ", + "explanation": "シナリオとスタイルのニーズに合わせて Web アプリのフロントエンドをカスタマイズできます。", + "way1": { + "name": "クライアントコードをフォークして修正し、Vercel にデプロイします(推奨)", + "step1": "クライアントコードをフォークして修正します", + "step1Tip": "ここをクリックしてソースコードを GitHub アカウントにフォークし、コードを修正します", + "step1Operation": "Dify-WebClient", + "step2": "Vercel にデプロイします", + "step2Tip": "ここをクリックしてリポジトリを Vercel にインポートし、デプロイします", + "step2Operation": "リポジトリをインポート", + "step3": "環境変数を設定します", + "step3Tip": "Vercel に次の環境変数を追加します" + }, + "way2": { + "name": "クライアントサイドのコードを記述して API を呼び出し、サーバーにデプロイします", + "operation": "ドキュメント" + } + }, + "launch": "公開" + }, + "apiInfo": { + "title": "バックエンドサービス API", + "explanation": "あなたのアプリケーションに簡単に統合できます", + "accessibleAddress": "サービス API エンドポイント", + "doc": "API リファレンス" + }, + "triggerInfo": { + "title": "トリガー", + "explanation": "ワークフロートリガー管理", + "triggersAdded": "{{count}} 個のトリガーが追加されました", + "noTriggerAdded": "トリガーが追加されていません", + "triggerStatusDescription": "トリガーノードの状態がここに表示されます。(下書きに既に存在する可能性があり、公開後に有効になります)", + "learnAboutTriggers": "トリガーについて学ぶ" + }, + "status": { + "running": "稼働中", + "disable": "無効" + }, + "disableTooltip": { + "triggerMode": "トリガーノードモードでは{{feature}}機能を使用できません。" + } + }, + "analysis": { + "title": "分析", + "ms": "ms", + "tokenPS": "トークン/秒", + "totalMessages": { + "title": "トータルメッセージ数", + "explanation": "日次 AI インタラクション数。" + }, + "totalConversations": { + "title": "総会話数", + "explanation": "日次 AI 会話数;プロンプトエンジニアリング/デバッグは除外。" + }, + "activeUsers": { + "title": "アクティブユーザー数", + "explanation": "AI との Q&A に参加しているユニークユーザー数;工学的/デバッグ目的のプロンプトは除外されます。" + }, + "tokenUsage": { + "title": "トークン使用量", + "explanation": "アプリケーションの言語モデルの日次トークン使用量を反映し、コスト管理に役立ちます。", + "consumed": "消費されたトークン" + }, + "avgSessionInteractions": { + "title": "平均セッションインタラクション数", + "explanation": "ユーザーと AI の連続的なコミュニケーション数;対話型アプリケーション向け。" + }, + "avgUserInteractions": { + "title": "平均ユーザーインタラクション数", + "explanation": "ユーザーの日次使用頻度を反映します。この指標はユーザーの定着度を反映しています。" + }, + "userSatisfactionRate": { + "title": "ユーザー満足度率", + "explanation": "1,000 件のメッセージあたりの「いいね」の数。これは、ユーザーが非常に満足している回答の割合を示します。" + }, + "avgResponseTime": { + "title": "平均応答時間", + "explanation": "AI が処理/応答する時間(ミリ秒);テキストベースのアプリケーション向け。" + }, + "tps": { + "title": "トークン出力速度", + "explanation": "LLM のパフォーマンスを測定します。リクエストの開始から出力の完了までの LLM のトークン出力速度を数えます。" + } + } +} diff --git a/web/i18n/ja-JP/app-overview.ts b/web/i18n/ja-JP/app-overview.ts deleted file mode 100644 index 8fa05608c5..0000000000 --- a/web/i18n/ja-JP/app-overview.ts +++ /dev/null @@ -1,189 +0,0 @@ -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: { - title: 'Web App', - explanation: '使いやすい AI Web アプリ', - accessibleAddress: '公開 URL', - preview: 'プレビュー', - regenerate: '再生成', - regenerateNotice: '公開 URL を再生成しますか?', - preUseReminder: '続行する前に Web アプリを有効にしてください。', - enableTooltip: { - description: 'この機能を有効にするには、キャンバスにユーザー入力ノードを追加してください。(下書きに既に存在する可能性があり、公開後に有効になります)', - learnMore: '詳細を見る', - }, - settings: { - entry: '設定', - title: 'Web アプリの設定', - webName: 'Web アプリの名前', - webDesc: 'Web アプリの説明', - webDescTip: 'このテキストはクライアント側に表示され、アプリケーションの使用方法の基本的なガイダンスを提供します。', - webDescPlaceholder: 'Web アプリの説明を入力してください', - language: '言語', - workflow: { - title: 'ワークフローステップ', - show: '表示', - hide: '非表示', - subTitle: 'ワークフローの詳細', - showDesc: 'Web アプリでワークフローの詳細を表示または非表示にする', - }, - chatColorTheme: 'チャットボットのカラーテーマ', - chatColorThemeDesc: 'チャットボットのカラーテーマを設定します', - chatColorThemeInverted: '反転', - invalidHexMessage: '無効な 16 進数値', - invalidPrivacyPolicy: '無効なプライバシーポリシーのリンクです。http または https で始まる有効なリンクを使用してください', - more: { - entry: 'その他の設定を表示', - copyright: '著作権', - copyRightPlaceholder: '著作者または組織名を入力してください', - privacyPolicy: 'プライバシーポリシー', - privacyPolicyPlaceholder: 'プライバシーポリシーリンクを入力してください', - privacyPolicyTip: '訪問者がアプリケーションが収集するデータを理解し、Dify のプライバシーポリシーを参照できるようにします。', - customDisclaimer: 'カスタム免責事項', - customDisclaimerPlaceholder: '免責事項を入力してください', - customDisclaimerTip: 'アプリケーションの使用に関する免責事項を提供します。', - copyrightTooltip: 'プロフェッショナルプラン以上にアップグレードしてください', - copyrightTip: 'Web アプリに著作権情報を表示する', - }, - sso: { - title: 'Web アプリの SSO', - tooltip: '管理者に問い合わせて、Web アプリの SSO を有効にします', - label: 'SSO 認証', - description: 'すべてのユーザーは、Web アプリを使用する前に SSO でログインする必要があります', - }, - modalTip: 'クライアント側の Web アプリ設定。', - }, - embedded: { - entry: '埋め込み', - title: 'ウェブサイトに埋め込む', - explanation: 'チャットアプリをウェブサイトに埋め込む方法を選択します。', - iframe: 'ウェブサイトの任意の場所にチャットアプリを追加するには、この iframe を HTML コードに追加してください。', - scripts: 'ウェブサイトの右下にチャットアプリを追加するには、このコードを HTML に追加してください。', - chromePlugin: 'Dify Chatbot Chrome 拡張機能をインストール', - copied: 'コピーしました', - copy: 'コピー', - }, - qrcode: { - title: '共有用 QR コード', - scan: 'アプリケーションの共有をスキャン', - download: 'QR コードをダウンロード', - }, - customize: { - way: '方法', - entry: 'カスタマイズ', - title: 'AI Web アプリのカスタマイズ', - explanation: 'シナリオとスタイルのニーズに合わせて Web アプリのフロントエンドをカスタマイズできます。', - way1: { - name: 'クライアントコードをフォークして修正し、Vercel にデプロイします(推奨)', - step1: 'クライアントコードをフォークして修正します', - step1Tip: 'ここをクリックしてソースコードを GitHub アカウントにフォークし、コードを修正します', - step1Operation: 'Dify-WebClient', - step2: 'Vercel にデプロイします', - step2Tip: 'ここをクリックしてリポジトリを Vercel にインポートし、デプロイします', - step2Operation: 'リポジトリをインポート', - step3: '環境変数を設定します', - step3Tip: 'Vercel に次の環境変数を追加します', - }, - way2: { - name: 'クライアントサイドのコードを記述して API を呼び出し、サーバーにデプロイします', - operation: 'ドキュメント', - }, - }, - launch: '公開', - }, - apiInfo: { - title: 'バックエンドサービス API', - explanation: 'あなたのアプリケーションに簡単に統合できます', - accessibleAddress: 'サービス API エンドポイント', - doc: 'API リファレンス', - }, - triggerInfo: { - title: 'トリガー', - explanation: 'ワークフロートリガー管理', - triggersAdded: '{{count}} 個のトリガーが追加されました', - noTriggerAdded: 'トリガーが追加されていません', - triggerStatusDescription: 'トリガーノードの状態がここに表示されます。(下書きに既に存在する可能性があり、公開後に有効になります)', - learnAboutTriggers: 'トリガーについて学ぶ', - }, - status: { - running: '稼働中', - disable: '無効', - }, - disableTooltip: { - triggerMode: 'トリガーノードモードでは{{feature}}機能を使用できません。', - }, - }, - analysis: { - title: '分析', - ms: 'ms', - tokenPS: 'トークン/秒', - totalMessages: { - title: 'トータルメッセージ数', - explanation: '日次 AI インタラクション数。', - }, - totalConversations: { - title: '総会話数', - explanation: '日次 AI 会話数;プロンプトエンジニアリング/デバッグは除外。', - }, - activeUsers: { - title: 'アクティブユーザー数', - explanation: 'AI との Q&A に参加しているユニークユーザー数;工学的/デバッグ目的のプロンプトは除外されます。', - }, - tokenUsage: { - title: 'トークン使用量', - explanation: 'アプリケーションの言語モデルの日次トークン使用量を反映し、コスト管理に役立ちます。', - consumed: '消費されたトークン', - }, - avgSessionInteractions: { - title: '平均セッションインタラクション数', - explanation: 'ユーザーと AI の連続的なコミュニケーション数;対話型アプリケーション向け。', - }, - avgUserInteractions: { - title: '平均ユーザーインタラクション数', - explanation: 'ユーザーの日次使用頻度を反映します。この指標はユーザーの定着度を反映しています。', - }, - userSatisfactionRate: { - title: 'ユーザー満足度率', - explanation: '1,000 件のメッセージあたりの「いいね」の数。これは、ユーザーが非常に満足している回答の割合を示します。', - }, - avgResponseTime: { - title: '平均応答時間', - explanation: 'AI が処理/応答する時間(ミリ秒);テキストベースのアプリケーション向け。', - }, - tps: { - title: 'トークン出力速度', - explanation: 'LLM のパフォーマンスを測定します。リクエストの開始から出力の完了までの LLM のトークン出力速度を数えます。', - }, - }, -} - -export default translation diff --git a/web/i18n/ja-JP/app.json b/web/i18n/ja-JP/app.json new file mode 100644 index 0000000000..ed60e8d4ca --- /dev/null +++ b/web/i18n/ja-JP/app.json @@ -0,0 +1,351 @@ +{ + "theme": { + "switchDark": "ダークテーマに切り替え", + "switchLight": "ライトテーマに切り替え" + }, + "appNamePlaceholder": "アプリに名前を付ける", + "createApp": "アプリを作成する", + "types": { + "all": "全て", + "chatbot": "チャットボット", + "agent": "エージェント", + "workflow": "ワークフロー", + "completion": "テキスト生成", + "basic": "基本的な", + "advanced": "チャットフロー" + }, + "duplicate": "複製", + "mermaid": { + "handDrawn": "手描き", + "classic": "クラシック" + }, + "duplicateTitle": "アプリを複製する", + "export": "DSL をエクスポート", + "exportFailed": "DSL のエクスポートに失敗しました。", + "importDSL": "DSL ファイルをインポート", + "createFromConfigFile": "DSL ファイルから作成する", + "importFromDSL": "DSL からインポート", + "importFromDSLFile": "DSL ファイルから", + "importFromDSLUrl": "URL から", + "importFromDSLUrlPlaceholder": "DSL リンクをここに貼り付けます", + "dslUploader": { + "button": "ファイルをドラッグ&ドロップするか、", + "browse": "参照" + }, + "deleteAppConfirmTitle": "このアプリを削除しますか?", + "deleteAppConfirmContent": "アプリを削除すると、元に戻すことはできません。他のユーザーはもはやこのアプリにアクセスできず、すべてのプロンプトの設定とログが永久に削除されます。", + "appDeleted": "アプリが削除されました", + "appDeleteFailed": "アプリの削除に失敗しました", + "join": "コミュニティに参加する", + "communityIntro": "さまざまなチャンネルでチームメンバーや貢献者、開発者と議論します。", + "roadmap": "ロードマップを見る", + "newApp": { + "startFromBlank": "最初から作成", + "startFromTemplate": "テンプレートから作成", + "workflowWarning": "現在ベータ版です", + "captionName": "アプリのアイコンと名前", + "appNamePlaceholder": "アプリ名を入力してください", + "captionDescription": "説明", + "appDescriptionPlaceholder": "アプリの説明を入力してください", + "useTemplate": "このテンプレートを使用する", + "previewDemo": "デモをプレビュー", + "chatApp": "アシスタント", + "chatAppIntro": "チャット形式のアプリケーションを構築したい。このアプリは質問と回答の形式を使用し、複数のラウンドの継続的な会話を可能にします。", + "agentAssistant": "新しいエージェント アシスタント", + "completeApp": "テキスト ジェネレーター", + "completeAppIntro": "プロンプトに基づいて高品質のテキストを生成するアプリケーションを作成したい。記事、要約、翻訳などを生成します。", + "showTemplates": "テンプレートから選択したい", + "hideTemplates": "モード選択に戻る", + "Create": "作成する", + "Cancel": "キャンセル", + "nameNotEmpty": "名前を入力してください", + "appTemplateNotSelected": "テンプレートを選択してください", + "appTypeRequired": "アプリの種類を選択してください", + "appCreated": "アプリが作成されました", + "appCreateFailed": "アプリの作成に失敗しました", + "Confirm": "確認する", + "caution": "注意", + "appCreateDSLErrorPart2": "続行しますか?", + "appCreateDSLErrorPart4": "システムがサポートする DSL バージョン:", + "appCreateDSLErrorPart3": "現在のアプリケーションの DSL バージョン:", + "appCreateDSLErrorTitle": "バージョンの非互換性", + "appCreateDSLWarning": "注意:DSL のバージョンの違いは、特定の機能に影響を与える可能性があります", + "appCreateDSLErrorPart1": "DSL バージョンに大きな違いが検出されました。インポートを強制すると、アプリケーションが誤動作する可能性があります。", + "optional": "任意", + "forBeginners": "初心者向けの基本的なアプリタイプ", + "noTemplateFoundTip": "別のキーワードを使用して検索してみてください。", + "agentShortDescription": "推論と自律的なツールの使用を備えたインテリジェントエージェント", + "foundResults": "{{count}}件の結果", + "noTemplateFound": "テンプレートが見つかりません", + "noAppsFound": "アプリが見つかりませんでした", + "workflowShortDescription": "インテリジェントな自動化のためのエージェントフロー", + "completionShortDescription": "複数ターンチャット向けに強化されたワークフロー", + "advancedUserDescription": "追加のメモリ機能とチャットボットインターフェースを備えたワークフロー", + "advancedShortDescription": "メモリを使用した複雑なマルチターン対話のワークフロー", + "agentUserDescription": "タスクの目標を達成するために反復的な推論と自律的なツールを使用できるインテリジェントエージェント。", + "foundResult": "{{count}}件の結果", + "forAdvanced": "上級ユーザー向け", + "chooseAppType": "アプリタイプを選択", + "learnMore": "詳細情報", + "noIdeaTip": "アイデアがありませんか?テンプレートをご覧ください", + "chatbotShortDescription": "簡単なセットアップの LLM ベースのチャットボット", + "chatbotUserDescription": "簡単な設定で LLM ベースのチャットボットを迅速に構築します。Chatflow は後で切り替えることができます。", + "workflowUserDescription": "ドラッグ&ドロップの簡易性で自律型 AI ワークフローを視覚的に構築", + "completionUserDescription": "簡単な構成でテキスト生成タスク用の AI アシスタントをすばやく構築します。", + "dropDSLToCreateApp": "アプリを作成するにはここにDSLファイルをドロップしてください", + "import": "輸入" + }, + "editApp": "情報を編集する", + "editAppTitle": "アプリ情報を編集する", + "editDone": "アプリ情報が更新されました", + "editFailed": "アプリ情報の更新に失敗しました", + "iconPicker": { + "ok": "OK", + "cancel": "キャンセル", + "emoji": "絵文字", + "image": "画像" + }, + "switch": "ワークフロー オーケストレートに切り替える", + "switchTipStart": "新しいアプリのコピーが作成され、新しいコピーがワークフロー オーケストレートに切り替わります。新しいコピーは ", + "switchTip": "切り替えを許可しません", + "switchTipEnd": " 基本的なオーケストレートに戻ることはできません。", + "switchLabel": "作成されるアプリのコピー", + "removeOriginal": "元のアプリを削除する", + "switchStart": "切り替えを開始する", + "openInExplore": "\"探索\" で開く", + "typeSelector": { + "all": "すべてのタイプ", + "chatbot": "チャットボット", + "agent": "エージェント", + "workflow": "ワークフロー", + "completion": "テキスト生成", + "advanced": "チャットフロー" + }, + "tracing": { + "title": "アプリのパフォーマンスの追跡", + "description": "サードパーティの LLMOps サービスとトレースアプリケーションのパフォーマンス設定を行います。", + "config": "設定", + "view": "見る", + "collapse": "折りたたむ", + "expand": "展開", + "tracing": "追跡", + "disabled": "無効しました", + "disabledTip": "まずはサービスの設定から始めましょう。", + "enabled": "有効しました", + "tracingDescription": "LLM の呼び出し、コンテキスト、プロンプト、HTTP リクエストなど、アプリケーション実行の全ての文脈をサードパーティのトレースプラットフォームで取り込みます。", + "configProviderTitle": { + "configured": "設定しました", + "notConfigured": "トレース機能を有効化するためには、サービスの設定が必要です。", + "moreProvider": "その他のプロバイダー" + }, + "arize": { + "title": "Arize", + "description": "エンタープライズグレードのLLM可観測性、オンラインおよびオフライン評価、モニタリング、実験—OpenTelemetryによって支えられています。LLMおよびエージェント駆動型アプリケーション向けに特別に設計されています。" + }, + "phoenix": { + "title": "Phoenix", + "description": "オープンソースおよびOpenTelemetryベースの可観測性、評価、プロンプトエンジニアリング、実験プラットフォームで、LLMワークフローおよびエージェントに対応します。" + }, + "langsmith": { + "title": "LangSmith", + "description": "LLM を利用したアプリケーションのライフサイクル全段階を支援する、オールインワンの開発者向けプラットフォームです。" + }, + "langfuse": { + "title": "Langfuse", + "description": "トレース、評価、プロンプトの管理、そしてメトリクスを駆使して、LLM アプリケーションのデバッグや改善に役立てます。" + }, + "opik": { + "title": "オピック", + "description": "Opik は、LLM アプリケーションを評価、テスト、監視するためのオープンソース プラットフォームです。" + }, + "inUse": "使用中", + "configProvider": { + "title": "設定 ", + "placeholder": "{{key}}を入力してください", + "project": "プロジェクト", + "trackingUri": "トラッキング URI", + "experimentId": "実験 ID", + "username": "ユーザー名", + "password": "パスワード", + "publicKey": "公開キー", + "secretKey": "秘密キー", + "viewDocsLink": "{{key}}に関するドキュメントを見る", + "removeConfirmTitle": "{{key}}の設定を削除しますか?", + "removeConfirmContent": "現在の設定は使用中です。これを削除すると、トレース機能が無効になります。", + "clientId": "OAuthクライアントID", + "clientSecret": "OAuthクライアントシークレット", + "personalAccessToken": "パーソナルアクセストークン(レガシー)", + "databricksHost": "DatabricksワークスペースのURL" + }, + "weave": { + "title": "織る", + "description": "Weave は、LLM アプリケーションを評価、テスト、および監視するためのオープンソースプラットフォームです。" + }, + "aliyun": { + "title": "クラウドモニター", + "description": "Alibaba Cloud が提供する完全管理型でメンテナンスフリーの可観測性プラットフォームは、Dify アプリケーションの即時監視、トレース、評価を可能にします。" + }, + "mlflow": { + "title": "MLflow", + "description": "MLflowはLLMアプリケーションの実験管理・評価・監視を行うためのオープンソースプラットフォームです。Difyアプリの実行をトレースし、デバッグや改善に役立てることができます。" + }, + "databricks": { + "title": "Databricks", + "description": "DatabricksはフルマネージドのMLflowサービスを提供し、本番環境のトレースデータを強力なガバナンスとセキュリティの元で保存することができます。" + }, + "tencent": { + "title": "テンセントAPM", + "description": "Tencent アプリケーションパフォーマンスモニタリングは、LLM アプリケーションに対して包括的なトレーシングと多次元分析を提供します。" + } + }, + "answerIcon": { + "title": "Web アプリアイコンを使用して🤖を置き換える", + "description": "共有アプリケーションの中で Web アプリアイコンを使用して🤖を置き換えるかどうか", + "descriptionInExplore": "Explore で Web アプリアイコンを使用して🤖を置き換えるかどうか" + }, + "newAppFromTemplate": { + "sidebar": { + "Agent": "エージェント", + "Programming": "プログラミング", + "HR": "人事", + "Writing": "ライティング", + "Recommended": "推奨", + "Workflow": "ワークフロー", + "Assistant": "助手" + }, + "byCategories": "カテゴリ別", + "searchAllTemplate": "すべてのテンプレートを検索..." + }, + "showMyCreatedAppsOnly": "自分が作成したアプリ", + "appSelector": { + "label": "アプリ", + "params": "アプリパラメータ", + "noParams": "パラメータは必要ありません", + "placeholder": "アプリを選択..." + }, + "structOutput": { + "moreFillTip": "最大 10 レベルのネストを表示します", + "required": "必須", + "LLMResponse": "LLM のレスポンス", + "configure": "設定", + "notConfiguredTip": "構造化出力が未設定です", + "structured": "構造化出力", + "structuredTip": "構造化出力は、モデルが常に指定された JSON スキーマに準拠した応答を生成することを保証する機能です。", + "modelNotSupported": "モデルが対応していません", + "modelNotSupportedTip": "現在のモデルはこの機能に対応しておらず、自動的にプロンプトインジェクションに切り替わります。" + }, + "accessControl": "Web アプリアクセス制御", + "accessItemsDescription": { + "anyone": "誰でもこの web アプリにアクセスできます(ログイン不要)", + "specific": "特定のプラットフォーム内メンバーのみがこの Web アプリにアクセスできます", + "organization": "プラットフォーム内の全メンバーがこの Web アプリにアクセスできます", + "external": "認証済みの外部ユーザーのみがこの Web アプリにアクセスできます" + }, + "accessControlDialog": { + "title": "アクセス権限", + "description": "Web アプリのアクセス権限を設定します", + "accessLabel": "誰がアクセスできますか", + "accessItems": { + "anyone": "リンクを知っているすべてのユーザー", + "specific": "特定のプラットフォーム内メンバー", + "organization": "プラットフォーム内の全メンバー", + "external": "認証済みの外部ユーザー" + }, + "groups_one": "{{count}} グループ", + "groups_other": "{{count}} グループ", + "members_one": "{{count}} メンバー", + "members_other": "{{count}} メンバー", + "noGroupsOrMembers": "グループまたはメンバーが選択されていません", + "webAppSSONotEnabledTip": "Web アプリの外部認証方式を設定するには、組織の管理者にお問い合わせください。", + "operateGroupAndMember": { + "searchPlaceholder": "グループやメンバーを検索", + "allMembers": "すべてのメンバー", + "expand": "展開", + "noResult": "結果がありません" + }, + "updateSuccess": "更新が成功しました" + }, + "publishApp": { + "title": "Web アプリへのアクセス権", + "notSet": "未設定", + "notSetDesc": "現在この Web アプリには誰もアクセスできません。権限を設定してください。" + }, + "noAccessPermission": "Web アプリにアクセス権限がありません", + "maxActiveRequestsPlaceholder": "無制限のために0を入力してください", + "maxActiveRequests": "最大同時リクエスト数", + "maxActiveRequestsTip": "アプリごとの同時アクティブリクエストの最大数(無制限の場合は0)", + "gotoAnything": { + "searchPlaceholder": "検索するか、@ を入力してコマンドを使用...", + "searchTitle": "何でも検索", + "searching": "検索中...", + "noResults": "結果が見つかりません", + "searchFailed": "検索に失敗しました", + "searchTemporarilyUnavailable": "検索が一時的に利用できません", + "servicesUnavailableMessage": "一部の検索サービスで問題が発生している可能性があります。しばらくしてからもう一度お試しください。", + "someServicesUnavailable": "一部の検索サービスが利用できません", + "resultCount": "{{count}} 件の結果", + "resultCount_other": "{{count}} 件の結果", + "inScope": "{{scope}}s 内", + "clearToSearchAll": "@ をクリアしてすべてを検索", + "useAtForSpecific": "特定のタイプには @ を使用", + "selectToNavigate": "選択してナビゲート", + "startTyping": "入力を開始して検索", + "tips": "↑↓ でナビゲート", + "pressEscToClose": "ESC で閉じる", + "selectSearchType": "検索対象を選択", + "searchHint": "入力を開始してすべてを瞬時に検索", + "commandHint": "@ を入力してカテゴリ別に参照", + "slashHint": "/ を入力してすべてのコマンドを表示", + "actions": { + "slashTitle": "コマンド", + "searchApplications": "アプリケーションを検索", + "searchApplicationsDesc": "アプリケーションを検索してナビゲート", + "searchPlugins": "プラグインを検索", + "searchPluginsDesc": "プラグインを検索してナビゲート", + "searchKnowledgeBases": "ナレッジベースを検索", + "searchKnowledgeBasesDesc": "ナレッジベースを検索してナビゲート", + "searchWorkflowNodes": "ワークフローノードを検索", + "searchWorkflowNodesDesc": "現在のワークフロー内のノードを名前またはタイプで検索してジャンプ", + "searchWorkflowNodesHelp": "この機能はワークフロー表示時のみ利用できます。まずワークフローに移動してください。", + "themeCategoryTitle": "テーマ", + "runTitle": "コマンド", + "languageCategoryTitle": "言語", + "themeLightDesc": "明るい外観を使用する", + "themeSystemDesc": "OSの外観に従ってください", + "themeLight": "ライトテーマ", + "themeDark": "ダークテーマ", + "languageChangeDesc": "UI言語を変更する", + "themeDarkDesc": "ダークモードを使用する", + "themeSystem": "システムテーマ", + "languageCategoryDesc": "インターフェース言語を切り替える", + "themeCategoryDesc": "アプリケーションのテーマを切り替える", + "runDesc": "クイックコマンドを実行する(テーマ、言語、...)", + "slashDesc": "コマンドを実行します、例えば /theme や /lang のように", + "accountDesc": "アカウントページに移動する", + "docDesc": "ヘルプドキュメントを開く", + "communityDesc": "オープンDiscordコミュニティ", + "feedbackDesc": "オープンなコミュニティフィードバックディスカッション", + "zenTitle": "Zen Mode", + "zenDesc": "Toggle canvas focus mode" + }, + "emptyState": { + "noAppsFound": "アプリが見つかりません", + "noPluginsFound": "プラグインが見つかりません", + "noKnowledgeBasesFound": "ナレッジベースが見つかりません", + "noWorkflowNodesFound": "ワークフローノードが見つかりません", + "tryDifferentTerm": "別の検索語句を試すか、{{mode}} フィルターを削除してください", + "trySpecificSearch": "特定検索には {{shortcuts}} を試してください" + }, + "groups": { + "apps": "アプリケーション", + "plugins": "プラグイン", + "knowledgeBases": "ナレッジベース", + "workflowNodes": "ワークフローノード", + "commands": "コマンド" + }, + "noMatchingCommands": "一致するコマンドが見つかりません", + "tryDifferentSearch": "別の検索語句をお試しください" + }, + "notPublishedYet": "アプリはまだ公開されていません", + "noUserInputNode": "ユーザー入力ノードが見つかりません" +} diff --git a/web/i18n/ja-JP/app.ts b/web/i18n/ja-JP/app.ts deleted file mode 100644 index 899405e8e7..0000000000 --- a/web/i18n/ja-JP/app.ts +++ /dev/null @@ -1,356 +0,0 @@ -const translation = { - theme: { - switchDark: 'ダークテーマに切り替え', - switchLight: 'ライトテーマに切り替え', - }, - appNamePlaceholder: 'アプリに名前を付ける', - createApp: 'アプリを作成する', - types: { - all: '全て', - chatbot: 'チャットボット', - agent: 'エージェント', - workflow: 'ワークフロー', - completion: 'テキスト生成', - basic: '基本的な', - advanced: 'チャットフロー', - }, - duplicate: '複製', - mermaid: { - handDrawn: '手描き', - classic: 'クラシック', - }, - duplicateTitle: 'アプリを複製する', - export: 'DSL をエクスポート', - exportFailed: 'DSL のエクスポートに失敗しました。', - importDSL: 'DSL ファイルをインポート', - createFromConfigFile: 'DSL ファイルから作成する', - importFromDSL: 'DSL からインポート', - importFromDSLFile: 'DSL ファイルから', - importFromDSLUrl: 'URL から', - importFromDSLUrlPlaceholder: 'DSL リンクをここに貼り付けます', - dslUploader: { - button: 'ファイルをドラッグ&ドロップするか、', - browse: '参照', - }, - deleteAppConfirmTitle: 'このアプリを削除しますか?', - deleteAppConfirmContent: - 'アプリを削除すると、元に戻すことはできません。他のユーザーはもはやこのアプリにアクセスできず、すべてのプロンプトの設定とログが永久に削除されます。', - appDeleted: 'アプリが削除されました', - appDeleteFailed: 'アプリの削除に失敗しました', - join: 'コミュニティに参加する', - communityIntro: 'さまざまなチャンネルでチームメンバーや貢献者、開発者と議論します。', - roadmap: 'ロードマップを見る', - newApp: { - startFromBlank: '最初から作成', - startFromTemplate: 'テンプレートから作成', - workflowWarning: '現在ベータ版です', - captionName: 'アプリのアイコンと名前', - appNamePlaceholder: 'アプリ名を入力してください', - captionDescription: '説明', - appDescriptionPlaceholder: 'アプリの説明を入力してください', - useTemplate: 'このテンプレートを使用する', - previewDemo: 'デモをプレビュー', - chatApp: 'アシスタント', - chatAppIntro: - 'チャット形式のアプリケーションを構築したい。このアプリは質問と回答の形式を使用し、複数のラウンドの継続的な会話を可能にします。', - agentAssistant: '新しいエージェント アシスタント', - completeApp: 'テキスト ジェネレーター', - completeAppIntro: - 'プロンプトに基づいて高品質のテキストを生成するアプリケーションを作成したい。記事、要約、翻訳などを生成します。', - showTemplates: 'テンプレートから選択したい', - hideTemplates: 'モード選択に戻る', - Create: '作成する', - Cancel: 'キャンセル', - nameNotEmpty: '名前を入力してください', - appTemplateNotSelected: 'テンプレートを選択してください', - appTypeRequired: 'アプリの種類を選択してください', - appCreated: 'アプリが作成されました', - appCreateFailed: 'アプリの作成に失敗しました', - Confirm: '確認する', - caution: '注意', - appCreateDSLErrorPart2: '続行しますか?', - appCreateDSLErrorPart4: 'システムがサポートする DSL バージョン:', - appCreateDSLErrorPart3: '現在のアプリケーションの DSL バージョン:', - appCreateDSLErrorTitle: 'バージョンの非互換性', - appCreateDSLWarning: '注意:DSL のバージョンの違いは、特定の機能に影響を与える可能性があります', - appCreateDSLErrorPart1: 'DSL バージョンに大きな違いが検出されました。インポートを強制すると、アプリケーションが誤動作する可能性があります。', - optional: '任意', - forBeginners: '初心者向けの基本的なアプリタイプ', - noTemplateFoundTip: '別のキーワードを使用して検索してみてください。', - agentShortDescription: '推論と自律的なツールの使用を備えたインテリジェントエージェント', - foundResults: '{{count}}件の結果', - noTemplateFound: 'テンプレートが見つかりません', - noAppsFound: 'アプリが見つかりませんでした', - workflowShortDescription: 'インテリジェントな自動化のためのエージェントフロー', - completionShortDescription: '複数ターンチャット向けに強化されたワークフロー', - advancedUserDescription: '追加のメモリ機能とチャットボットインターフェースを備えたワークフロー', - advancedShortDescription: 'メモリを使用した複雑なマルチターン対話のワークフロー', - agentUserDescription: 'タスクの目標を達成するために反復的な推論と自律的なツールを使用できるインテリジェントエージェント。', - foundResult: '{{count}}件の結果', - forAdvanced: '上級ユーザー向け', - chooseAppType: 'アプリタイプを選択', - learnMore: '詳細情報', - noIdeaTip: 'アイデアがありませんか?テンプレートをご覧ください', - chatbotShortDescription: '簡単なセットアップの LLM ベースのチャットボット', - chatbotUserDescription: '簡単な設定で LLM ベースのチャットボットを迅速に構築します。Chatflow は後で切り替えることができます。', - workflowUserDescription: 'ドラッグ&ドロップの簡易性で自律型 AI ワークフローを視覚的に構築', - completionUserDescription: '簡単な構成でテキスト生成タスク用の AI アシスタントをすばやく構築します。', - dropDSLToCreateApp: 'アプリを作成するにはここにDSLファイルをドロップしてください', - import: '輸入', - }, - editApp: '情報を編集する', - editAppTitle: 'アプリ情報を編集する', - editDone: 'アプリ情報が更新されました', - editFailed: 'アプリ情報の更新に失敗しました', - iconPicker: { - ok: 'OK', - cancel: 'キャンセル', - emoji: '絵文字', - image: '画像', - }, - switch: 'ワークフロー オーケストレートに切り替える', - switchTipStart: '新しいアプリのコピーが作成され、新しいコピーがワークフロー オーケストレートに切り替わります。新しいコピーは ', - switchTip: '切り替えを許可しません', - switchTipEnd: ' 基本的なオーケストレートに戻ることはできません。', - switchLabel: '作成されるアプリのコピー', - removeOriginal: '元のアプリを削除する', - switchStart: '切り替えを開始する', - openInExplore: '"探索" で開く', - typeSelector: { - all: 'すべてのタイプ', - chatbot: 'チャットボット', - agent: 'エージェント', - workflow: 'ワークフロー', - completion: 'テキスト生成', - advanced: 'チャットフロー', - }, - tracing: { - title: 'アプリのパフォーマンスの追跡', - description: 'サードパーティの LLMOps サービスとトレースアプリケーションのパフォーマンス設定を行います。', - config: '設定', - view: '見る', - collapse: '折りたたむ', - expand: '展開', - tracing: '追跡', - disabled: '無効しました', - disabledTip: 'まずはサービスの設定から始めましょう。', - enabled: '有効しました', - tracingDescription: 'LLM の呼び出し、コンテキスト、プロンプト、HTTP リクエストなど、アプリケーション実行の全ての文脈をサードパーティのトレースプラットフォームで取り込みます。', - configProviderTitle: { - configured: '設定しました', - notConfigured: 'トレース機能を有効化するためには、サービスの設定が必要です。', - moreProvider: 'その他のプロバイダー', - }, - arize: { - title: 'Arize', - description: 'エンタープライズグレードのLLM可観測性、オンラインおよびオフライン評価、モニタリング、実験—OpenTelemetryによって支えられています。LLMおよびエージェント駆動型アプリケーション向けに特別に設計されています。', - }, - phoenix: { - title: 'Phoenix', - description: 'オープンソースおよびOpenTelemetryベースの可観測性、評価、プロンプトエンジニアリング、実験プラットフォームで、LLMワークフローおよびエージェントに対応します。', - }, - langsmith: { - title: 'LangSmith', - description: 'LLM を利用したアプリケーションのライフサイクル全段階を支援する、オールインワンの開発者向けプラットフォームです。', - }, - langfuse: { - title: 'Langfuse', - description: 'トレース、評価、プロンプトの管理、そしてメトリクスを駆使して、LLM アプリケーションのデバッグや改善に役立てます。', - }, - opik: { - title: 'オピック', - description: 'Opik は、LLM アプリケーションを評価、テスト、監視するためのオープンソース プラットフォームです。', - }, - inUse: '使用中', - configProvider: { - title: '設定 ', - placeholder: '{{key}}を入力してください', - project: 'プロジェクト', - trackingUri: 'トラッキング URI', - experimentId: '実験 ID', - username: 'ユーザー名', - password: 'パスワード', - publicKey: '公開キー', - secretKey: '秘密キー', - viewDocsLink: '{{key}}に関するドキュメントを見る', - removeConfirmTitle: '{{key}}の設定を削除しますか?', - removeConfirmContent: '現在の設定は使用中です。これを削除すると、トレース機能が無効になります。', - clientId: 'OAuthクライアントID', - clientSecret: 'OAuthクライアントシークレット', - personalAccessToken: 'パーソナルアクセストークン(レガシー)', - databricksHost: 'DatabricksワークスペースのURL', - }, - weave: { - title: '織る', - description: 'Weave は、LLM アプリケーションを評価、テスト、および監視するためのオープンソースプラットフォームです。', - }, - aliyun: { - title: 'クラウドモニター', - description: 'Alibaba Cloud が提供する完全管理型でメンテナンスフリーの可観測性プラットフォームは、Dify アプリケーションの即時監視、トレース、評価を可能にします。', - }, - mlflow: { - title: 'MLflow', - description: 'MLflowはLLMアプリケーションの実験管理・評価・監視を行うためのオープンソースプラットフォームです。Difyアプリの実行をトレースし、デバッグや改善に役立てることができます。', - }, - databricks: { - title: 'Databricks', - description: 'DatabricksはフルマネージドのMLflowサービスを提供し、本番環境のトレースデータを強力なガバナンスとセキュリティの元で保存することができます。', - }, - tencent: { - title: 'テンセントAPM', - description: 'Tencent アプリケーションパフォーマンスモニタリングは、LLM アプリケーションに対して包括的なトレーシングと多次元分析を提供します。', - }, - }, - answerIcon: { - title: 'Web アプリアイコンを使用して🤖を置き換える', - description: '共有アプリケーションの中で Web アプリアイコンを使用して🤖を置き換えるかどうか', - descriptionInExplore: 'Explore で Web アプリアイコンを使用して🤖を置き換えるかどうか', - }, - newAppFromTemplate: { - sidebar: { - Agent: 'エージェント', - Programming: 'プログラミング', - HR: '人事', - Writing: 'ライティング', - Recommended: '推奨', - Workflow: 'ワークフロー', - Assistant: '助手', - }, - byCategories: 'カテゴリ別', - searchAllTemplate: 'すべてのテンプレートを検索...', - }, - showMyCreatedAppsOnly: '自分が作成したアプリ', - appSelector: { - label: 'アプリ', - params: 'アプリパラメータ', - noParams: 'パラメータは必要ありません', - placeholder: 'アプリを選択...', - }, - structOutput: { - moreFillTip: '最大 10 レベルのネストを表示します', - required: '必須', - LLMResponse: 'LLM のレスポンス', - configure: '設定', - notConfiguredTip: '構造化出力が未設定です', - structured: '構造化出力', - structuredTip: '構造化出力は、モデルが常に指定された JSON スキーマに準拠した応答を生成することを保証する機能です。', - modelNotSupported: 'モデルが対応していません', - modelNotSupportedTip: '現在のモデルはこの機能に対応しておらず、自動的にプロンプトインジェクションに切り替わります。', - }, - accessControl: 'Web アプリアクセス制御', - accessItemsDescription: { - anyone: '誰でもこの web アプリにアクセスできます(ログイン不要)', - specific: '特定のプラットフォーム内メンバーのみがこの Web アプリにアクセスできます', - organization: 'プラットフォーム内の全メンバーがこの Web アプリにアクセスできます', - external: '認証済みの外部ユーザーのみがこの Web アプリにアクセスできます', - }, - accessControlDialog: { - title: 'アクセス権限', - description: 'Web アプリのアクセス権限を設定します', - accessLabel: '誰がアクセスできますか', - accessItems: { - anyone: 'リンクを知っているすべてのユーザー', - specific: '特定のプラットフォーム内メンバー', - organization: 'プラットフォーム内の全メンバー', - external: '認証済みの外部ユーザー', - }, - groups_one: '{{count}} グループ', - groups_other: '{{count}} グループ', - members_one: '{{count}} メンバー', - members_other: '{{count}} メンバー', - noGroupsOrMembers: 'グループまたはメンバーが選択されていません', - webAppSSONotEnabledTip: 'Web アプリの外部認証方式を設定するには、組織の管理者にお問い合わせください。', - operateGroupAndMember: { - searchPlaceholder: 'グループやメンバーを検索', - allMembers: 'すべてのメンバー', - expand: '展開', - noResult: '結果がありません', - }, - updateSuccess: '更新が成功しました', - }, - publishApp: { - title: 'Web アプリへのアクセス権', - notSet: '未設定', - notSetDesc: '現在この Web アプリには誰もアクセスできません。権限を設定してください。', - }, - noAccessPermission: 'Web アプリにアクセス権限がありません', - maxActiveRequestsPlaceholder: '無制限のために0を入力してください', - maxActiveRequests: '最大同時リクエスト数', - maxActiveRequestsTip: 'アプリごとの同時アクティブリクエストの最大数(無制限の場合は0)', - gotoAnything: { - searchPlaceholder: '検索するか、@ を入力してコマンドを使用...', - searchTitle: '何でも検索', - searching: '検索中...', - noResults: '結果が見つかりません', - searchFailed: '検索に失敗しました', - searchTemporarilyUnavailable: '検索が一時的に利用できません', - servicesUnavailableMessage: '一部の検索サービスで問題が発生している可能性があります。しばらくしてからもう一度お試しください。', - someServicesUnavailable: '一部の検索サービスが利用できません', - resultCount: '{{count}} 件の結果', - resultCount_other: '{{count}} 件の結果', - inScope: '{{scope}}s 内', - clearToSearchAll: '@ をクリアしてすべてを検索', - useAtForSpecific: '特定のタイプには @ を使用', - selectToNavigate: '選択してナビゲート', - startTyping: '入力を開始して検索', - tips: '↑↓ でナビゲート', - pressEscToClose: 'ESC で閉じる', - selectSearchType: '検索対象を選択', - searchHint: '入力を開始してすべてを瞬時に検索', - commandHint: '@ を入力してカテゴリ別に参照', - slashHint: '/ を入力してすべてのコマンドを表示', - actions: { - slashTitle: 'コマンド', - searchApplications: 'アプリケーションを検索', - searchApplicationsDesc: 'アプリケーションを検索してナビゲート', - searchPlugins: 'プラグインを検索', - searchPluginsDesc: 'プラグインを検索してナビゲート', - searchKnowledgeBases: 'ナレッジベースを検索', - searchKnowledgeBasesDesc: 'ナレッジベースを検索してナビゲート', - searchWorkflowNodes: 'ワークフローノードを検索', - searchWorkflowNodesDesc: '現在のワークフロー内のノードを名前またはタイプで検索してジャンプ', - searchWorkflowNodesHelp: 'この機能はワークフロー表示時のみ利用できます。まずワークフローに移動してください。', - themeCategoryTitle: 'テーマ', - runTitle: 'コマンド', - languageCategoryTitle: '言語', - themeLightDesc: '明るい外観を使用する', - themeSystemDesc: 'OSの外観に従ってください', - themeLight: 'ライトテーマ', - themeDark: 'ダークテーマ', - languageChangeDesc: 'UI言語を変更する', - themeDarkDesc: 'ダークモードを使用する', - themeSystem: 'システムテーマ', - languageCategoryDesc: 'インターフェース言語を切り替える', - themeCategoryDesc: 'アプリケーションのテーマを切り替える', - runDesc: 'クイックコマンドを実行する(テーマ、言語、...)', - slashDesc: 'コマンドを実行します、例えば /theme や /lang のように', - accountDesc: 'アカウントページに移動する', - docDesc: 'ヘルプドキュメントを開く', - communityDesc: 'オープンDiscordコミュニティ', - feedbackDesc: 'オープンなコミュニティフィードバックディスカッション', - zenTitle: 'Zen Mode', - zenDesc: 'Toggle canvas focus mode', - }, - emptyState: { - noAppsFound: 'アプリが見つかりません', - noPluginsFound: 'プラグインが見つかりません', - noKnowledgeBasesFound: 'ナレッジベースが見つかりません', - noWorkflowNodesFound: 'ワークフローノードが見つかりません', - tryDifferentTerm: '別の検索語句を試すか、{{mode}} フィルターを削除してください', - trySpecificSearch: '特定検索には {{shortcuts}} を試してください', - }, - groups: { - apps: 'アプリケーション', - plugins: 'プラグイン', - knowledgeBases: 'ナレッジベース', - workflowNodes: 'ワークフローノード', - commands: 'コマンド', - }, - noMatchingCommands: '一致するコマンドが見つかりません', - tryDifferentSearch: '別の検索語句をお試しください', - }, - notPublishedYet: 'アプリはまだ公開されていません', - noUserInputNode: 'ユーザー入力ノードが見つかりません', -} - -export default translation diff --git a/web/i18n/ja-JP/billing.json b/web/i18n/ja-JP/billing.json new file mode 100644 index 0000000000..9a03f57e57 --- /dev/null +++ b/web/i18n/ja-JP/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "現在のプラン", + "usagePage": { + "teamMembers": "チームメンバー", + "buildApps": "アプリを作成する", + "annotationQuota": "アノテーション・クォータ", + "documentsUploadQuota": "ドキュメント・アップロード・クォータ", + "vectorSpace": "ナレッジベースのデータストレージ", + "vectorSpaceTooltip": "高品質インデックスモードのドキュメントは、ナレッジベースのデータストレージのリソースを消費します。ナレッジベースのデータストレージの上限に達すると、新しいドキュメントはアップロードされません。", + "triggerEvents": "トリガーイベント数", + "perMonth": "月あたり", + "resetsIn": "{{count,number}}日後にリセット" + }, + "triggerLimitModal": { + "title": "アップグレードして、より多くのトリガーイベントを利用できるようになります", + "description": "このプランでは、ワークフローのトリガーイベント数の上限に達しています。", + "dismiss": "閉じる", + "upgrade": "アップグレード", + "usageTitle": "TRIGGER EVENTS" + }, + "upgradeBtn": { + "plain": "プランをアップグレード", + "encourage": "今すぐアップグレード", + "encourageShort": "アップグレード" + }, + "viewBilling": "請求とサブスクリプションの管理", + "viewBillingTitle": "請求とサブスクリプション", + "viewBillingDescription": "支払い方法、請求書、サブスクリプションの変更の管理。", + "viewBillingAction": "管理", + "buyPermissionDeniedTip": "サブスクリプションするには、エンタープライズ管理者に連絡してください", + "plansCommon": { + "title": { + "plans": "プラン", + "description": "あなたのAIの旅に最適な価格" + }, + "freeTrialTipPrefix": "サインアップ後、", + "freeTrialTip": "200 回の OpenAI コールの無料に受け取る", + "freeTrialTipSuffix": "。クレジットカード不要", + "yearlyTip": "10 ヶ月分支払って、1 年間楽しもう!", + "mostPopular": "人気", + "cloud": "クラウドサービス", + "self": "セルフホストサービス", + "planRange": { + "monthly": "月額", + "yearly": "年額" + }, + "month": "月", + "year": "年", + "save": "節約 ", + "free": "無料", + "annualBilling": "年次請求", + "taxTip": "すべてのサブスクリプション料金(月額/年額)は、適用される税金(例:消費税、付加価値税)を含みません。", + "taxTipSecond": "お客様の地域に適用税がない場合、チェックアウト時に税金は表示されず、サブスクリプション期間中に追加料金が請求されることもありません。", + "comparePlanAndFeatures": "プランと機能を比較する", + "priceTip": "ワークスペース/", + "currentPlan": "現在のプラン", + "contractSales": "営業に連絡する", + "contractOwner": "チームマネージャーに連絡する", + "startForFree": "無料で始める", + "getStarted": "始める", + "contactSales": "営業に連絡する", + "talkToSales": "営業と話す", + "modelProviders": "OpenAI/Anthropic/Llama2/Azure OpenAI/Hugging Face/Replicateをサポート", + "teamWorkspace": "{{count,number}}チームワークスペース", + "teamMember_one": "チームメンバー:{{count,number}}人", + "teamMember_other": "チームメンバー:{{count,number}}人", + "annotationQuota": "アノテーション・クォータ", + "buildApps": "アプリの数:{{count,number}}個", + "documents": "{{count,number}}のナレッジベース内のドキュメント数", + "documentsTooltip": "ナレッジデータソースからインポートされたドキュメントの数に対するクォータ。", + "vectorSpace": "{{size}}のナレッジベースのデータストレージ", + "vectorSpaceTooltip": "高品質インデックスモードのドキュメントは、ナレッジベースのデータストレージのリソースを消費します。ナレッジベースのデータストレージの上限に達すると、新しいドキュメントはアップロードされません。", + "documentsRequestQuota": "{{count,number}} のナレッジリクエスト上限/分", + "documentsRequestQuotaTooltip": "ナレッジベース内でワークスペースが 1 分間に実行できる操作の総数を示します。これには、データセットの作成、削除、更新、ドキュメントのアップロード、修正、アーカイブ、およびナレッジベースクエリが含まれます。この指標は、ナレッジベースリクエストのパフォーマンスを評価するために使用されます。例えば、Sandbox ユーザーが 1 分間に 10 回連続でヒットテストを実行した場合、そのワークスペースは次の 1 分間、データセットの作成、削除、更新、ドキュメントのアップロードや修正などの操作を一時的に実行できなくなります。", + "apiRateLimit": "API リクエスト制限", + "apiRateLimitUnit": "{{count,number}} の", + "unlimitedApiRate": "無制限の API コール", + "apiRateLimitTooltip": "API レート制限は、テキスト生成、チャットボット、ワークフロー、ドキュメント処理など、Dify API 経由のすべてのリクエストに適用されます。", + "documentProcessingPriority": "文書処理", + "documentProcessingPriorityTip": "より高い文書処理優先度が必要な場合は、プランをアップグレードしてください。", + "documentProcessingPriorityUpgrade": "より高い精度と高速な速度でデータを処理します。", + "priority": { + "standard": "標準", + "priority": "優先", + "top-priority": "最優先" + }, + "triggerEvents": { + "sandbox": "{{count,number}}のトリガーイベント数", + "professional": "{{count,number}}のトリガーイベント数/月", + "unlimited": "無制限のトリガーイベント数", + "tooltip": "プラグイントリガー、タイマートリガー、または Webhook トリガーによって自動的にワークフローを起動するイベントの回数です。" + }, + "workflowExecution": { + "standard": "標準ワークフロー実行キュー", + "faster": "高速ワークフロー実行キュー", + "priority": "優先度の高いワークフロー実行キュー", + "tooltip": "ワークフローの実行キューの優先度と実行速度。" + }, + "startNodes": { + "limited": "各ワークフローは最大{{count}}つのトリガーまで", + "unlimited": "各ワークフローのトリガーは無制限" + }, + "logsHistory": "{{days}}のログ履歴", + "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": "{{count,number}}メッセージクレジット", + "titlePerMonth": "{{count,number}}メッセージクレジット/月", + "tooltip": "メッセージクレジットは、Dify でさまざまな OpenAI モデルを簡単にお試しいただくためのものです。モデルタイプに応じてクレジットが消費され、使い切った後はご自身の OpenAI API キーに切り替えていただけます。" + }, + "annotatedResponse": { + "title": "{{count,number}}の注釈クォータ制限", + "tooltip": "手動での回答の編集と注釈により、カスタマイズ可能な高品質の質問応答機能をアプリに提供します。(チャットアプリのみに適用)" + }, + "ragAPIRequestTooltip": "Dify のナレッジベース処理機能のみを呼び出す API 呼び出しの数を指します。", + "receiptInfo": "チームオーナーとチーム管理者のみが購読および請求情報を表示できます", + "startBuilding": "構築を開始する" + }, + "plans": { + "sandbox": { + "name": "Sandbox", + "for": "主要機能の無料体験", + "description": "主要機能を無料で体験" + }, + "professional": { + "name": "Professional", + "for": "個人開発者/小規模チーム向け", + "description": "個人開発者・小規模チームに最適" + }, + "team": { + "name": "Team", + "for": "中規模チーム向け", + "description": "成長期のチームに必要な機能を備えたプラン" + }, + "community": { + "name": "コミュニティ", + "for": "個人/小規模チーム・非営利プロジェクト向け", + "description": "オープンソース版の無料プラン", + "price": "無料", + "btnText": "コミュニティ版を始めましょう", + "includesTitle": "無料機能:", + "features": [ + "すべてのコア機能がパブリックリポジトリで公開されました", + "単一ワークスペース", + "Difyオープンソースライセンスに準拠" + ] + }, + "premium": { + "name": "プレミアム", + "for": "中規模組織・チーム向け", + "description": "クラウド対応の拡張版プラン", + "price": "従量制", + "priceTip": "クラウドマーケットプレイス基準", + "btnText": "プレミアム版を取得", + "includesTitle": "コミュニティ版機能に加えて:", + "comingSoon": "Microsoft Azure & Google Cloud 近日対応", + "features": [ + "さまざまなクラウドプロバイダーによる自己管理型の信頼性", + "単一ワークスペース", + "Webアプリのロゴとブランドカスタマイズ", + "優先メール&チャットサポート" + ] + }, + "enterprise": { + "name": "エンタープライズ", + "for": "大規模チーム・企業向け", + "description": "企業レベルのセキュリティとカスタマイズを実現", + "price": "カスタム", + "priceTip": "年間契約専用", + "btnText": "営業に相談", + "includesTitle": "プレミアム版機能に加えて:", + "features": [ + "エンタープライズ向けスケーラブルな展開ソリューション", + "商用ライセンス認可", + "エンタープライズ専用機能", + "複数ワークスペースとエンタープライズ管理", + "シングルサインオン", + "Difyパートナーによる交渉済みSLA", + "高度なセキュリティと制御", + "Dify公式による更新とメンテナンス", + "プロフェッショナル技術サポート" + ] + } + }, + "vectorSpace": { + "fullTip": "ナレッジベースのデータストレージがいっぱいです。", + "fullSolution": "より多くのスペースを得るためにプランをアップグレードしてください。" + }, + "apps": { + "fullTip1": "アップグレードして制限を解除する", + "fullTip1des": "このプランのアプリ数の上限に達しました。", + "fullTip2": "プラン制限に達しました。", + "fullTip2des": "非アクティブなアプリを削除するか、アップグレードプランをご検討ください。", + "contactUs": "こちらからお問い合わせください" + }, + "annotatedResponse": { + "fullTipLine1": "より多くの会話を注釈するには、", + "fullTipLine2": "プランをアップグレードしてください。", + "quotaTitle": "注釈返信クォータ" + }, + "teamMembers": "チームメンバー", + "upgrade": { + "uploadMultiplePages": { + "title": "複数ドキュメントを一度にアップロードするにはアップグレード", + "description": "現在のプランではアップロード上限に達しています。1回の操作で選択・アップロードできるドキュメントは1つのみです。" + }, + "uploadMultipleFiles": { + "title": "一括ドキュメントアップロード機能を解放するにはアップグレードが必要です", + "description": "複数のドキュメントを一度にバッチアップロードすることで、時間を節約し、作業効率を向上できます。" + }, + "addChunks": { + "title": "アップグレードして、チャンクを引き続き追加できるようにしてください。", + "description": "このプランでは、チャンク追加の上限に達しています。" + } + } +} diff --git a/web/i18n/ja-JP/billing.ts b/web/i18n/ja-JP/billing.ts deleted file mode 100644 index 07361c0234..0000000000 --- a/web/i18n/ja-JP/billing.ts +++ /dev/null @@ -1,221 +0,0 @@ -const translation = { - currentPlan: '現在のプラン', - usagePage: { - teamMembers: 'チームメンバー', - buildApps: 'アプリを作成する', - annotationQuota: 'アノテーション・クォータ', - documentsUploadQuota: 'ドキュメント・アップロード・クォータ', - vectorSpace: 'ナレッジベースのデータストレージ', - vectorSpaceTooltip: '高品質インデックスモードのドキュメントは、ナレッジベースのデータストレージのリソースを消費します。ナレッジベースのデータストレージの上限に達すると、新しいドキュメントはアップロードされません。', - triggerEvents: 'トリガーイベント数', - perMonth: '月あたり', - resetsIn: '{{count,number}}日後にリセット', - }, - triggerLimitModal: { - title: 'アップグレードして、より多くのトリガーイベントを利用できるようになります', - description: 'このプランでは、ワークフローのトリガーイベント数の上限に達しています。', - dismiss: '閉じる', - upgrade: 'アップグレード', - usageTitle: 'TRIGGER EVENTS', - }, - upgradeBtn: { - plain: 'プランをアップグレード', - encourage: '今すぐアップグレード', - encourageShort: 'アップグレード', - }, - viewBilling: '請求とサブスクリプションの管理', - viewBillingTitle: '請求とサブスクリプション', - viewBillingDescription: '支払い方法、請求書、サブスクリプションの変更の管理。', - viewBillingAction: '管理', - buyPermissionDeniedTip: 'サブスクリプションするには、エンタープライズ管理者に連絡してください', - plansCommon: { - title: { - plans: 'プラン', - description: 'あなたのAIの旅に最適な価格', - }, - freeTrialTipPrefix: 'サインアップ後、', - freeTrialTip: '200 回の OpenAI コールの無料に受け取る', - freeTrialTipSuffix: '。クレジットカード不要', - yearlyTip: '10 ヶ月分支払って、1 年間楽しもう!', - mostPopular: '人気', - cloud: 'クラウドサービス', - self: 'セルフホストサービス', - planRange: { - monthly: '月額', - yearly: '年額', - }, - month: '月', - year: '年', - save: '節約 ', - free: '無料', - annualBilling: '年次請求', - taxTip: 'すべてのサブスクリプション料金(月額/年額)は、適用される税金(例:消費税、付加価値税)を含みません。', - taxTipSecond: 'お客様の地域に適用税がない場合、チェックアウト時に税金は表示されず、サブスクリプション期間中に追加料金が請求されることもありません。', - comparePlanAndFeatures: 'プランと機能を比較する', - priceTip: 'ワークスペース/', - currentPlan: '現在のプラン', - contractSales: '営業に連絡する', - contractOwner: 'チームマネージャーに連絡する', - startForFree: '無料で始める', - getStarted: '始める', - contactSales: '営業に連絡する', - talkToSales: '営業と話す', - modelProviders: 'OpenAI/Anthropic/Llama2/Azure OpenAI/Hugging Face/Replicateをサポート', - teamWorkspace: '{{count,number}}チームワークスペース', - teamMember_one: 'チームメンバー:{{count,number}}人', - teamMember_other: 'チームメンバー:{{count,number}}人', - annotationQuota: 'アノテーション・クォータ', - buildApps: 'アプリの数:{{count,number}}個', - documents: '{{count,number}}のナレッジベース内のドキュメント数', - documentsTooltip: 'ナレッジデータソースからインポートされたドキュメントの数に対するクォータ。', - vectorSpace: '{{size}}のナレッジベースのデータストレージ', - vectorSpaceTooltip: '高品質インデックスモードのドキュメントは、ナレッジベースのデータストレージのリソースを消費します。ナレッジベースのデータストレージの上限に達すると、新しいドキュメントはアップロードされません。', - documentsRequestQuota: '{{count,number}} のナレッジリクエスト上限/分', - documentsRequestQuotaTooltip: 'ナレッジベース内でワークスペースが 1 分間に実行できる操作の総数を示します。これには、データセットの作成、削除、更新、ドキュメントのアップロード、修正、アーカイブ、およびナレッジベースクエリが含まれます。この指標は、ナレッジベースリクエストのパフォーマンスを評価するために使用されます。例えば、Sandbox ユーザーが 1 分間に 10 回連続でヒットテストを実行した場合、そのワークスペースは次の 1 分間、データセットの作成、削除、更新、ドキュメントのアップロードや修正などの操作を一時的に実行できなくなります。', - apiRateLimit: 'API リクエスト制限', - apiRateLimitUnit: '{{count,number}} の', - unlimitedApiRate: '無制限の API コール', - apiRateLimitTooltip: 'API レート制限は、テキスト生成、チャットボット、ワークフロー、ドキュメント処理など、Dify API 経由のすべてのリクエストに適用されます。', - documentProcessingPriority: '文書処理', - documentProcessingPriorityTip: 'より高い文書処理優先度が必要な場合は、プランをアップグレードしてください。', - documentProcessingPriorityUpgrade: 'より高い精度と高速な速度でデータを処理します。', - priority: { - 'standard': '標準', - 'priority': '優先', - 'top-priority': '最優先', - }, - triggerEvents: { - sandbox: '{{count,number}}のトリガーイベント数', - professional: '{{count,number}}のトリガーイベント数/月', - unlimited: '無制限のトリガーイベント数', - tooltip: 'プラグイントリガー、タイマートリガー、または Webhook トリガーによって自動的にワークフローを起動するイベントの回数です。', - }, - workflowExecution: { - standard: '標準ワークフロー実行キュー', - faster: '高速ワークフロー実行キュー', - priority: '優先度の高いワークフロー実行キュー', - tooltip: 'ワークフローの実行キューの優先度と実行速度。', - }, - startNodes: { - limited: '各ワークフローは最大{{count}}つのトリガーまで', - unlimited: '各ワークフローのトリガーは無制限', - }, - logsHistory: '{{days}}のログ履歴', - 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: '{{count,number}}メッセージクレジット', - titlePerMonth: '{{count,number}}メッセージクレジット/月', - tooltip: 'メッセージクレジットは、Dify でさまざまな OpenAI モデルを簡単にお試しいただくためのものです。モデルタイプに応じてクレジットが消費され、使い切った後はご自身の OpenAI API キーに切り替えていただけます。', - }, - annotatedResponse: { - title: '{{count,number}}の注釈クォータ制限', - tooltip: '手動での回答の編集と注釈により、カスタマイズ可能な高品質の質問応答機能をアプリに提供します。(チャットアプリのみに適用)', - }, - ragAPIRequestTooltip: 'Dify のナレッジベース処理機能のみを呼び出す API 呼び出しの数を指します。', - receiptInfo: 'チームオーナーとチーム管理者のみが購読および請求情報を表示できます', - startBuilding: '構築を開始する', - }, - plans: { - sandbox: { - name: 'Sandbox', - for: '主要機能の無料体験', - description: '主要機能を無料で体験', - }, - professional: { - name: 'Professional', - for: '個人開発者/小規模チーム向け', - description: '個人開発者・小規模チームに最適', - }, - team: { - name: 'Team', - for: '中規模チーム向け', - description: '成長期のチームに必要な機能を備えたプラン', - }, - community: { - name: 'コミュニティ', - for: '個人/小規模チーム・非営利プロジェクト向け', - description: 'オープンソース版の無料プラン', - price: '無料', - btnText: 'コミュニティ版を始めましょう', - includesTitle: '無料機能:', - features: ['すべてのコア機能がパブリックリポジトリで公開されました', '単一ワークスペース', 'Difyオープンソースライセンスに準拠'], - }, - premium: { - name: 'プレミアム', - for: '中規模組織・チーム向け', - description: 'クラウド対応の拡張版プラン', - price: '従量制', - priceTip: 'クラウドマーケットプレイス基準', - btnText: 'プレミアム版を取得', - includesTitle: 'コミュニティ版機能に加えて:', - comingSoon: 'Microsoft Azure & Google Cloud 近日対応', - features: ['さまざまなクラウドプロバイダーによる自己管理型の信頼性', '単一ワークスペース', 'Webアプリのロゴとブランドカスタマイズ', '優先メール&チャットサポート'], - }, - enterprise: { - name: 'エンタープライズ', - for: '大規模チーム・企業向け', - description: '企業レベルのセキュリティとカスタマイズを実現', - price: 'カスタム', - priceTip: '年間契約専用', - btnText: '営業に相談', - includesTitle: 'プレミアム版機能に加えて:', - features: ['エンタープライズ向けスケーラブルな展開ソリューション', '商用ライセンス認可', 'エンタープライズ専用機能', '複数ワークスペースとエンタープライズ管理', 'シングルサインオン', 'Difyパートナーによる交渉済みSLA', '高度なセキュリティと制御', 'Dify公式による更新とメンテナンス', 'プロフェッショナル技術サポート'], - }, - }, - vectorSpace: { - fullTip: 'ナレッジベースのデータストレージがいっぱいです。', - fullSolution: 'より多くのスペースを得るためにプランをアップグレードしてください。', - }, - apps: { - fullTip1: 'アップグレードして制限を解除する', - fullTip1des: 'このプランのアプリ数の上限に達しました。', - fullTip2: 'プラン制限に達しました。', - fullTip2des: '非アクティブなアプリを削除するか、アップグレードプランをご検討ください。', - contactUs: 'こちらからお問い合わせください', - }, - annotatedResponse: { - fullTipLine1: 'より多くの会話を注釈するには、', - fullTipLine2: 'プランをアップグレードしてください。', - quotaTitle: '注釈返信クォータ', - }, - teamMembers: 'チームメンバー', - upgrade: { - uploadMultiplePages: { - title: '複数ドキュメントを一度にアップロードするにはアップグレード', - description: '現在のプランではアップロード上限に達しています。1回の操作で選択・アップロードできるドキュメントは1つのみです。', - }, - uploadMultipleFiles: { - title: '一括ドキュメントアップロード機能を解放するにはアップグレードが必要です', - description: '複数のドキュメントを一度にバッチアップロードすることで、時間を節約し、作業効率を向上できます。', - }, - addChunks: { - title: 'アップグレードして、チャンクを引き続き追加できるようにしてください。', - description: 'このプランでは、チャンク追加の上限に達しています。', - }, - }, -} - -export default translation diff --git a/web/i18n/ja-JP/common.json b/web/i18n/ja-JP/common.json new file mode 100644 index 0000000000..e01442c14c --- /dev/null +++ b/web/i18n/ja-JP/common.json @@ -0,0 +1,791 @@ +{ + "loading": "読み込み中", + "error": "エラー", + "theme": { + "theme": "テーマ", + "light": "明るい", + "dark": "暗い", + "auto": "システム" + }, + "api": { + "success": "成功", + "actionSuccess": "アクションが成功しました", + "saved": "保存済み", + "create": "作成済み", + "remove": "削除済み", + "actionFailed": "アクションに失敗しました" + }, + "operation": { + "create": "作成", + "confirm": "確認", + "cancel": "キャンセル", + "clear": "クリア", + "save": "保存", + "saveAndEnable": "保存 & 有効に", + "edit": "編集", + "add": "追加", + "added": "追加済み", + "refresh": "リフレッシュ", + "reset": "リセット", + "search": "検索", + "change": "変更", + "remove": "削除", + "send": "送信", + "copy": "コピー", + "lineBreak": "改行", + "sure": "確認済み", + "download": "ダウンロード", + "downloadSuccess": "ダウンロード完了", + "downloadFailed": "ダウンロードに失敗しました、後で再試行してください。", + "delete": "削除", + "settings": "設定", + "setup": "セットアップ", + "getForFree": "無料で入手", + "reload": "再読み込み", + "ok": "OK", + "log": "ログ", + "learnMore": "詳細はこちら", + "params": "パラメータ", + "duplicate": "複製", + "rename": "名前の変更", + "audioSourceUnavailable": "AudioSource が利用できません", + "zoomIn": "ズームインする", + "openInNewTab": "新しいタブで開く", + "zoomOut": "ズームアウト", + "copyImage": "画像をコピー", + "saveAndRegenerate": "保存して子チャンクを再生成", + "close": "閉じる", + "view": "表示", + "viewMore": "さらに表示", + "regenerate": "再生成", + "submit": "送信", + "skip": "スキップ", + "imageCopied": "コピーした画像", + "deleteApp": "アプリを削除", + "viewDetails": "詳細を見る", + "copied": "コピーしました", + "in": "中", + "format": "フォーマット", + "more": "もっと", + "selectAll": "すべて選択", + "deSelectAll": "すべて選択解除", + "now": "今", + "back": "戻る", + "imageDownloaded": "画像がダウンロードされました", + "config": "コンフィグ", + "yes": "はい", + "no": "いいえ", + "deleteConfirmTitle": "削除しますか?", + "confirmAction": "操作を確認してください。", + "noSearchResults": "{{content}}は見つかりませんでした", + "resetKeywords": "キーワードをリセット", + "selectCount": "{{count}}件選択済み", + "searchCount": "{{count}}件の{{content}}が見つかりました", + "noSearchCount": "0件の{{content}}" + }, + "errorMsg": { + "fieldRequired": "{{field}}は必要です", + "urlError": "URL は http:// または https:// で始まる必要があります" + }, + "placeholder": { + "input": "入力してください", + "select": "選択してください", + "search": "検索..." + }, + "voice": { + "language": { + "zhHans": "中国語", + "zhHant": "繁体字中国語", + "enUS": "英語", + "deDE": "ドイツ語", + "frFR": "フランス語", + "esES": "スペイン語", + "itIT": "イタリア語", + "thTH": "タイ語", + "idID": "インドネシア語", + "jaJP": "日本語", + "koKR": "韓国語", + "ptBR": "ポルトガル語", + "ruRU": "ロシア語", + "ukUA": "ウクライナ語", + "viVN": "ベトナム語", + "plPL": "ポーランド語", + "roRO": "ルーマニア語", + "hiIN": "ヒンディー語", + "trTR": "トルコ語", + "faIR": "ペルシア語", + "slSI": "スロベニア語", + "arTN": "チュニジア・アラビア語" + } + }, + "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それを 2/3 以下に設定することをお勧めします。\ngpt-4-1106-preview、gpt-4-vision-preview の最大トークン(入力 128k 出力 4k)以下に設定することをお勧めします。", + "maxTokenSettingTip": "最大トークン設定が高いため、プロンプト、クエリ、およびデータのスペースが制限される可能性があります。現在のモデルの最大トークンの 80% 以下に設定してください。", + "setToCurrentModelMaxTokenTip": "最大トークンが現在のモデルの最大トークンの 80% に更新されました {{maxToken}}.", + "stop_sequences": "停止シーケンス", + "stop_sequencesTip": "API が進行中のトークンの生成を停止する最大 4 つのシーケンス。返されたテキストには停止シーケンスは含まれません。", + "stop_sequencesPlaceholder": "シーケンスを入力してタブキーを押してください" + }, + "tone": { + "Creative": "クリエイティブ", + "Balanced": "バランス", + "Precise": "正確", + "Custom": "カスタム" + }, + "addMoreModel": "設定画面から他のモデルを追加してください", + "capabilities": "マルチモーダル機能", + "settingsLink": "モデルプロバイダー設定" + }, + "menus": { + "status": "ベータ版", + "explore": "探索", + "apps": "スタジオ", + "appDetail": "アプリの詳細", + "account": "アカウント", + "plugins": "プラグイン", + "pluginsTips": "サードパーティのプラグインを統合するか、ChatGPT 互換の AI プラグインを作成します。", + "datasets": "ナレッジ", + "datasetsTips": "近日公開:独自のテキストデータをインポートするか、Webhook を介してリアルタイムにデータを記述して LLM コンテキストを強化します。", + "newApp": "新しいアプリ", + "newDataset": "ナレッジの作成", + "tools": "ツール", + "exploreMarketplace": "マーケットプレイスを探索する" + }, + "userProfile": { + "settings": "設定", + "emailSupport": "サポート", + "workspace": "ワークスペース", + "createWorkspace": "ワークスペースを作成", + "helpCenter": "ドキュメントを見る", + "support": "サポート", + "compliance": "コンプライアンス", + "roadmap": "ロードマップ", + "community": "コミュニティ", + "about": "Dify について", + "logout": "ログアウト", + "github": "GitHub", + "contactUs": "お問い合わせ", + "forum": "フォーラム" + }, + "compliance": { + "soc2Type1": "SOC 2 Type I 報告書", + "soc2Type2": "SOC 2 Type II 報告書", + "iso27001": "ISO 27001:2022 認証", + "gdpr": "GDPR データ処理契約(DPA)", + "sandboxUpgradeTooltip": "プロフェッショナルプランまたはチームプランでのみ利用可能", + "professionalUpgradeTooltip": "チームプラン以上の契約が必要です" + }, + "settings": { + "accountGroup": "アカウント", + "workplaceGroup": "ワークスペース", + "account": "マイアカウント", + "members": "メンバー", + "billing": "請求", + "integrations": "統合", + "language": "言語", + "provider": "モデルプロバイダー", + "dataSource": "データソース", + "plugin": "プラグイン", + "apiBasedExtension": "API 拡張", + "generalGroup": "一般" + }, + "account": { + "avatar": "アバター", + "name": "名前", + "email": "メール", + "password": "パスワード", + "passwordTip": "一時的なログインコードを使用したくない場合は、永続的なパスワードを設定できます。", + "setPassword": "パスワードを設定", + "resetPassword": "パスワードをリセット", + "currentPassword": "現在のパスワード", + "newPassword": "新しいパスワード", + "confirmPassword": "パスワードを確認", + "notEqual": "2 つのパスワードが異なります。", + "langGeniusAccount": "アカウント関連データ", + "langGeniusAccountTip": "アカウントに関連するユーザーデータ。", + "editName": "名前を編集", + "showAppLength": "{{length}}アプリを表示", + "delete": "アカウントを削除", + "deleteTip": "アカウントを削除すると、すべてのデータが完全に消去され、復元できなくなります。", + "account": "アカウント", + "myAccount": "マイアカウント", + "studio": "スタジオ", + "deletePrivacyLinkTip": "お客様のデータの取り扱い方法の詳細については、当社の", + "deletePrivacyLink": "プライバシーポリシー。", + "deleteSuccessTip": "アカウントの削除が完了するまでに時間が必要です。すべて完了しましたら、メールでお知らせします。", + "deleteLabel": "確認するには、以下にメールアドレスを入力してください", + "deletePlaceholder": "メールアドレスを入力してください", + "verificationLabel": "認証コード", + "verificationPlaceholder": "6 桁のコードを貼り付けます", + "permanentlyDeleteButton": "アカウントを完全に削除", + "feedbackTitle": "フィードバック", + "feedbackLabel": "アカウントを削除した理由を教えてください。", + "feedbackPlaceholder": "任意", + "sendVerificationButton": "確認コードの送信", + "editWorkspaceInfo": "ワークスペース情報を編集", + "workspaceName": "ワークスペース名", + "workspaceNamePlaceholder": "ワークスペース名を入力", + "workspaceIcon": "ワークスペースアイコン", + "changeEmail": { + "title": "メールアドレスを変更", + "verifyEmail": "現在のメールアドレスを確認してください", + "newEmail": "新しいメールアドレスを設定する", + "verifyNew": "新しいメールアドレスを確認してください", + "authTip": "メールアドレスが変更されると、旧メールアドレスにリンクされている Google または GitHub アカウントは、このアカウントにログインできなくなります。", + "content1": "変更を続ける場合、{{email}} に認証用の確認コードをお送りします。", + "content2": "現在のメールアドレスは {{email}} です。認証コードはこのメールアドレスに送信されました。", + "content3": "新しいメールアドレスを入力すると、確認コードが送信されます。", + "content4": "一時確認コードを {{email}} に送信しました。", + "codeLabel": "コード", + "codePlaceholder": "コードを入力してください", + "emailLabel": "新しいメール", + "emailPlaceholder": "新しいメールを入力してください", + "existingEmail": "このメールアドレスのユーザーは既に存在します", + "unAvailableEmail": "このメールアドレスは現在使用できません。", + "sendVerifyCode": "確認コードを送信", + "continue": "続行", + "changeTo": "{{email}} に変更", + "resendTip": "コードが届きませんか?", + "resendCount": "{{count}} 秒後に再送信", + "resend": "再送信" + } + }, + "members": { + "team": "チーム", + "invite": "招待", + "name": "名前", + "lastActive": "最終アクティブ", + "role": "ロール", + "pending": "保留中...", + "owner": "オーナー", + "admin": "管理者", + "adminTip": "アプリの構築およびチーム設定の管理ができます", + "normal": "通常", + "normalTip": "アプリの使用のみが可能で、アプリの構築はできません", + "builder": "ビルダー", + "builderTip": "独自のアプリを作成・編集できる", + "editor": "エディター", + "editorTip": "アプリの構築ができますが、チーム設定の管理はできません", + "datasetOperator": "ナレッジ管理員", + "datasetOperatorTip": "ナレッジベースのみを管理できる", + "inviteTeamMember": "チームメンバーを招待する", + "inviteTeamMemberTip": "彼らはサインイン後、直接あなたのチームデータにアクセスできます。", + "emailNotSetup": "メールサーバーがセットアップされていないので、招待メールを送信することはできません。代わりに招待後に発行される招待リンクをユーザーに通知してください。", + "email": "メール", + "emailInvalid": "無効なメール形式", + "emailPlaceholder": "メールを入力してください", + "sendInvite": "招待を送る", + "invitedAsRole": "{{role}}ユーザーとして招待されました", + "invitationSent": "招待が送信されました", + "invitationSentTip": "招待が送信され、彼らは Dify にサインインしてあなたのチームデータにアクセスできます。", + "invitationLink": "招待リンク", + "failedInvitationEmails": "以下のユーザーは正常に招待されませんでした", + "ok": "OK", + "removeFromTeam": "チームから削除", + "removeFromTeamTip": "チームへのアクセスが削除されます", + "setAdmin": "管理者に設定", + "setMember": "通常のメンバーに設定", + "setBuilder": "ビルダーに設定", + "setEditor": "エディターに設定", + "disInvite": "招待をキャンセル", + "deleteMember": "メンバーを削除", + "you": "(あなた)", + "transferOwnership": "所有権の移転", + "transferModal": { + "title": "ワークスペースの所有権を移する", + "warning": "「{{workspace}}」の所有権を移しようとしています。この操作は即時に有効となり、元に戻すことはできません。", + "warningTip": "あなたは管理者メンバーになり、新しいオーナーがすべての権限を持つことになります。", + "sendTip": "続行する場合は、本人確認のため {{email}} に認証コードを送信します。", + "verifyEmail": "現在のメールアドレスを確認", + "verifyContent": "現在のメールアドレスは {{email}}。", + "verifyContent2": "このメールアドレスに一時的な認証コードを送信し、再認証を行います。", + "codeLabel": "認証コード", + "codePlaceholder": "6 桁のコードを入力してください", + "resendTip": "認証コードを受け取れない場合は、", + "resendCount": "{{count}} 秒後に再送信", + "resend": "認証コードを再送信", + "transferLabel": "ワークスペースの所有権を転移する相手は", + "transferPlaceholder": "メールアドレスを入力してください", + "sendVerifyCode": "認証コードを送信", + "continue": "続行する", + "transfer": "ワークスペースの所有権を移する" + } + }, + "integrations": { + "connected": "接続済み", + "google": "Google", + "googleAccount": "Google アカウントでログイン", + "github": "GitHub", + "githubAccount": "GitHub アカウントでログイン", + "connect": "接続" + }, + "language": { + "displayLanguage": "表示言語", + "timezone": "タイムゾーン" + }, + "provider": { + "apiKey": "API キー", + "enterYourKey": "ここに API キーを入力してください", + "invalidKey": "無効な OpenAI API キー", + "validatedError": "検証に失敗しました:", + "validating": "キーの検証中...", + "saveFailed": "API キーの保存に失敗しました", + "apiKeyExceedBill": "この API KEY には使用可能なクォータがありません。詳細は", + "addKey": "キーを追加", + "comingSoon": "近日公開", + "editKey": "編集", + "invalidApiKey": "無効な API キー", + "azure": { + "apiBase": "API ベース", + "apiBasePlaceholder": "Azure OpenAI エンドポイントの API ベース URL。", + "apiKey": "API キー", + "apiKeyPlaceholder": "ここに API キーを入力してください", + "helpTip": "Azure OpenAI サービスを学ぶ" + }, + "openaiHosted": { + "openaiHosted": "ホステッド OpenAI", + "onTrial": "トライアル中", + "exhausted": "クォータが使い果たされました", + "desc": "Dify が提供する OpenAI ホスティングサービスを使用すると、GPT-3.5 などのモデルを使用できます。トライアルクォータが使い果たされる前に、他のモデルプロバイダを設定する必要があります。", + "callTimes": "通話回数", + "usedUp": "トライアルクォータが使い果たされました。独自のモデルプロバイダを追加してください。", + "useYourModel": "現在、独自のモデルプロバイダを使用しています。", + "close": "閉じる" + }, + "anthropicHosted": { + "anthropicHosted": "アンソピッククロード", + "onTrial": "トライアル中", + "exhausted": "クォータが使い果たされました", + "desc": "高度なダイアログやクリエイティブなコンテンツ生成から詳細な指示まで、幅広いタスクに優れたパワフルなモデルです。", + "callTimes": "通話回数", + "usedUp": "トライアルクォータが使い果たされました。独自のモデルプロバイダを追加してください。", + "useYourModel": "現在、独自のモデルプロバイダを使用しています。", + "close": "閉じる", + "trialQuotaTip": "お客様の Anthropic 試用枠は 2025/03/17 に失効し、その後は利用できなくなります。お早めにご利用ください。" + }, + "anthropic": { + "using": "埋め込み機能は使用中です", + "enableTip": "Anthropic モデルを有効にするには、まず OpenAI または Azure OpenAI サービスにバインドする必要があります。", + "notEnabled": "有効にされていません", + "keyFrom": "Anthropic から API キーを取得してください" + }, + "encrypted": { + "front": "API KEY は", + "back": "技術を使用して暗号化および保存されます。" + } + }, + "modelProvider": { + "notConfigured": "システムモデルがまだ完全に設定されておらず、一部の機能が利用できない場合があります。", + "systemModelSettings": "システムモデル設定", + "systemModelSettingsLink": "システムモデルの設定が必要な理由は何ですか?", + "selectModel": "モデルを選択", + "setupModelFirst": "まずモデルをセットアップしてください", + "systemReasoningModel": { + "key": "システム推論モデル", + "tip": "アプリの作成に使用されるデフォルトの推論モデルを設定します。また、対話名の生成や次の質問の提案などの機能もデフォルトの推論モデルを使用します。" + }, + "embeddingModel": { + "key": "埋め込みモデル", + "tip": "ナレッジのドキュメント埋め込み処理のデフォルトモデルを設定します。ナレッジの取得とインポートの両方に、この埋め込みモデルをベクトル化処理に使用します。切り替えると、インポートされたナレッジと質問の間のベクトル次元が一致せず、取得に失敗します。取得の失敗を避けるためには、このモデルを任意に切り替えないでください。", + "required": "埋め込みモデルが必要です" + }, + "speechToTextModel": { + "key": "音声-to-テキストモデル", + "tip": "会話での音声-to-テキスト入力に使用するデフォルトモデルを設定します。" + }, + "ttsModel": { + "key": "テキスト-to-音声モデル", + "tip": "会話でのテキスト-to-音声入力に使用するデフォルトモデルを設定します。" + }, + "rerankModel": { + "key": "Rerank モデル", + "tip": "Rerank モデルは、ユーザークエリとの意味的一致に基づいて候補文書リストを再配置し、意味的ランキングの結果を向上させます。" + }, + "apiKey": "API-キー", + "quota": "クォータ", + "searchModel": "検索モデル", + "noModelFound": "{{model}}に対するモデルが見つかりません", + "models": "モデル", + "showMoreModelProvider": "より多くのモデルプロバイダを表示", + "selector": { + "tip": "このモデルは削除されました。別のモデルを追加するか、別のモデルを選択してください。", + "emptyTip": "利用可能なモデルはありません", + "emptySetting": "設定に移動して構成してください", + "rerankTip": "Rerank モデルを設定してください" + }, + "card": { + "quota": "クォータ", + "onTrial": "トライアル中", + "paid": "有料", + "quotaExhausted": "クォータが使い果たされました", + "callTimes": "通話回数", + "tokens": "トークン", + "buyQuota": "クォータを購入", + "priorityUse": "優先利用", + "removeKey": "API キーを削除", + "tip": "有料クォータは優先して使用されます。有料クォータを使用し終えた後、トライアルクォータが利用されます。" + }, + "item": { + "deleteDesc": "{{modelName}}はシステムが推測するモデルとして利用されています。削除すると、一部の機能が使用不可能になる可能性があります。ご確認ください。", + "freeQuota": "無料のクォータ" + }, + "addApiKey": "API キーを追加", + "invalidApiKey": "無効な API キー", + "encrypted": { + "front": "API キーは", + "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": "API キーの状態は正常", + "apiKeyRateLimit": "レート制限に到達しました。{{seconds}}秒後に再度利用可能です", + "addConfig": "設定を追加", + "editConfig": "設定を編集", + "loadBalancingLeastKeyWarning": "負荷分散を利用するには、最低 2 つのキーを有効化する必要があります。", + "loadBalancingInfo": "デフォルトでは、負荷分散はラウンドロビン方式を採用しています。レート制限が発生した場合、1 分間のクールダウン期間が適用されます。", + "upgradeForLoadBalancing": "負荷分散を利用するには、プランのアップグレードが必要です。", + "emptyProviderTitle": "モデルプロバイダーが設定されていません", + "discoverMore": "もっと発見する", + "installProvider": "モデルプロバイダーをインストールする", + "installDataSourceProvider": "データソースプロバイダーをインストールする", + "configureTip": "API キーを設定するか、使用するモデルを追加してください", + "toBeConfigured": "設定中", + "emptyProviderTip": "最初にモデルプロバイダーをインストールしてください。", + "auth": { + "apiKeyModal": { + "title": "APIキー認証設定", + "addModel": "モデルを追加する", + "desc": "認証情報を設定した後、ワークスペース内のすべてのメンバーは、アプリケーションを調整する際にこのモデルを使用できます。" + }, + "authorizationError": "認証エラー", + "apiKeys": "APIキー", + "unAuthorized": "無許可", + "credentialRemoved": "認証情報が削除されました", + "configModel": "モデルを構成する", + "addApiKey": "APIキーを追加してください", + "addCredential": "認証情報を追加する", + "authRemoved": "認証が削除されました", + "modelCredentials": "モデルの資格情報", + "providerManaged": "プロバイダーが管理しました", + "addNewModel": "新しいモデルを追加する", + "configLoadBalancing": "構成ロードバランシング", + "addModelCredential": "モデルの資格情報を追加", + "providerManagedTip": "現在の設定はプロバイダーによってホストされています。", + "specifyModelCredential": "モデルの資格情報を指定してください", + "specifyModelCredentialTip": "構成されたモデルの認証情報を使用してください。", + "addModel": "モデルを追加する", + "addNewModelCredential": "新しいモデルの認証情報を追加する", + "editModelCredential": "モデルの資格情報を編集する", + "removeModel": "モデルを削除する", + "customModelCredentialsDeleteTip": "認証情報は使用中で、削除できません。", + "modelCredential": "モデルの資格情報", + "manageCredentials": "認証情報を管理する", + "customModelCredentials": "カスタムモデルの認証情報", + "selectModelCredential": "モデルの資格情報を選択する" + }, + "parametersInvalidRemoved": "いくつかのパラメータが無効であり、削除されました。" + }, + "dataSource": { + "add": "データソースの追加", + "connect": "接続", + "configure": "設定", + "notion": { + "title": "Notion", + "description": "ナレッジデータソースとして Notion を使用します。", + "connectedWorkspace": "接続済みワークスペース", + "addWorkspace": "ワークスペースの追加", + "connected": "接続済み", + "disconnected": "接続解除", + "changeAuthorizedPages": "認証済みページの変更", + "pagesAuthorized": "認証済みページ", + "sync": "同期", + "remove": "削除", + "selector": { + "pageSelected": "選択済みページ", + "searchPages": "ページ検索...", + "noSearchResult": "検索結果なし", + "addPages": "ページの追加", + "preview": "プレビュー" + }, + "integratedAlert": "Notionは内部資格情報を通じて統合されており、再認証する必要はありません。" + }, + "website": { + "title": "ウェブサイト", + "description": "ウェブクローラーを使ってウェブサイトからコンテンツを取り込みます。", + "with": "による", + "configuredCrawlers": "設定済みクローラー", + "active": "アクティブ", + "inactive": "非アクティブ" + } + }, + "plugin": { + "serpapi": { + "apiKey": "API キー", + "apiKeyPlaceholder": "API キーを入力してください", + "keyFrom": "SerpAPI アカウントページから SerpAPI キーを取得してください" + } + }, + "apiBasedExtension": { + "title": "API 拡張機能は、Dify のアプリケーション全体での簡単な使用のための設定を簡素化し、集中的な API 管理を提供します。", + "link": "独自の API 拡張機能を開発する方法について学ぶ。", + "add": "API 拡張機能を追加", + "selector": { + "title": "API 拡張機能", + "placeholder": "API 拡張機能を選択してください", + "manage": "API 拡張機能を管理" + }, + "modal": { + "title": "API 拡張機能を追加", + "editTitle": "API 拡張機能を編集", + "name": { + "title": "名前", + "placeholder": "名前を入力してください" + }, + "apiEndpoint": { + "title": "API エンドポイント", + "placeholder": "API エンドポイントを入力してください" + }, + "apiKey": { + "title": "API キー", + "placeholder": "API キーを入力してください", + "lengthError": "API キーの長さは 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": "関連アプリ", + "noRelatedApp": "関連付けられたアプリはありません", + "pipeline": "パイプライン" + }, + "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": "検索スコア:" + }, + "inputPlaceholder": "{{botName}} と話す", + "thought": "思考", + "thinking": "考え中...", + "resend": "再送信してください" + }, + "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": "タグの作成に失敗しました" + }, + "fileUploader": { + "uploadFromComputer": "ローカルアップロード", + "pasteFileLink": "ファイルリンクの貼り付け", + "pasteFileLinkInputPlaceholder": "URL を入力...", + "uploadFromComputerLimit": "アップロードファイルは{{size}}を超えてはなりません", + "uploadFromComputerUploadError": "ファイルのアップロードに失敗しました。再度アップロードしてください。", + "uploadFromComputerReadError": "ファイルの読み取りに失敗しました。もう一度やり直してください。", + "fileExtensionNotSupport": "ファイル拡張子はサポートされていません", + "pasteFileLinkInvalid": "無効なファイルリンク", + "uploadDisabled": "ファイルアップロードは無効です", + "fileExtensionBlocked": "このファイルタイプは、セキュリティ上の理由でブロックされています" + }, + "license": { + "expiring_plural": "有効期限 {{count}} 日", + "expiring": "1 日で有効期限が切れます", + "unlimited": "無制限" + }, + "pagination": { + "perPage": "ページあたりのアイテム数" + }, + "you": "あなた", + "imageInput": { + "browse": "ブラウズする", + "supportedFormats": "PNG、JPG、JPEG、WEBP、および GIF をサポートしています。", + "dropImageHere": "ここに画像をドロップするか、" + }, + "avatar": { + "deleteTitle": "アバターを削除する", + "deleteDescription": "本当にプロフィール写真を削除してもよろしいですか?あなたのアカウントはデフォルトの初期アバターを使用します。" + }, + "feedback": { + "content": "フィードバックコンテンツ", + "title": "フィードバックを提供する", + "subtitle": "この回答で何が間違っていたのか教えてください。", + "placeholder": "何が間違っていたか、またはどのように改善できるかを教えてください..." + }, + "label": { + "optional": "(オプション)" + }, + "noData": "データなし", + "dynamicSelect": { + "error": "オプションの読み込みに失敗しました", + "noData": "利用可能なオプションはありません", + "loading": "オプションを読み込み中...", + "selected": "{{count}}件が選択されました" + } +} diff --git a/web/i18n/ja-JP/common.ts b/web/i18n/ja-JP/common.ts deleted file mode 100644 index 87d9fa1fb1..0000000000 --- a/web/i18n/ja-JP/common.ts +++ /dev/null @@ -1,798 +0,0 @@ -const translation = { - loading: '読み込み中', - error: 'エラー', - theme: { - theme: 'テーマ', - light: '明るい', - dark: '暗い', - auto: 'システム', - }, - api: { - success: '成功', - actionSuccess: 'アクションが成功しました', - saved: '保存済み', - create: '作成済み', - remove: '削除済み', - actionFailed: 'アクションに失敗しました', - }, - operation: { - create: '作成', - confirm: '確認', - cancel: 'キャンセル', - clear: 'クリア', - save: '保存', - saveAndEnable: '保存 & 有効に', - edit: '編集', - add: '追加', - added: '追加済み', - refresh: 'リフレッシュ', - reset: 'リセット', - search: '検索', - change: '変更', - remove: '削除', - send: '送信', - copy: 'コピー', - lineBreak: '改行', - sure: '確認済み', - download: 'ダウンロード', - downloadSuccess: 'ダウンロード完了', - downloadFailed: 'ダウンロードに失敗しました、後で再試行してください。', - delete: '削除', - settings: '設定', - setup: 'セットアップ', - getForFree: '無料で入手', - reload: '再読み込み', - ok: 'OK', - log: 'ログ', - learnMore: '詳細はこちら', - params: 'パラメータ', - duplicate: '複製', - rename: '名前の変更', - audioSourceUnavailable: 'AudioSource が利用できません', - zoomIn: 'ズームインする', - openInNewTab: '新しいタブで開く', - zoomOut: 'ズームアウト', - copyImage: '画像をコピー', - saveAndRegenerate: '保存して子チャンクを再生成', - close: '閉じる', - view: '表示', - viewMore: 'さらに表示', - regenerate: '再生成', - submit: '送信', - skip: 'スキップ', - imageCopied: 'コピーした画像', - deleteApp: 'アプリを削除', - viewDetails: '詳細を見る', - copied: 'コピーしました', - in: '中', - format: 'フォーマット', - more: 'もっと', - selectAll: 'すべて選択', - deSelectAll: 'すべて選択解除', - now: '今', - back: '戻る', - imageDownloaded: '画像がダウンロードされました', - config: 'コンフィグ', - yes: 'はい', - no: 'いいえ', - deleteConfirmTitle: '削除しますか?', - confirmAction: '操作を確認してください。', - noSearchResults: '{{content}}は見つかりませんでした', - resetKeywords: 'キーワードをリセット', - selectCount: '{{count}}件選択済み', - searchCount: '{{count}}件の{{content}}が見つかりました', - noSearchCount: '0件の{{content}}', - }, - errorMsg: { - fieldRequired: '{{field}}は必要です', - urlError: 'URL は http:// または https:// で始まる必要があります', - }, - placeholder: { - input: '入力してください', - select: '選択してください', - search: '検索...', - }, - voice: { - language: { - zhHans: '中国語', - zhHant: '繁体字中国語', - enUS: '英語', - deDE: 'ドイツ語', - frFR: 'フランス語', - esES: 'スペイン語', - itIT: 'イタリア語', - thTH: 'タイ語', - idID: 'インドネシア語', - jaJP: '日本語', - koKR: '韓国語', - ptBR: 'ポルトガル語', - ruRU: 'ロシア語', - ukUA: 'ウクライナ語', - viVN: 'ベトナム語', - plPL: 'ポーランド語', - roRO: 'ルーマニア語', - hiIN: 'ヒンディー語', - trTR: 'トルコ語', - faIR: 'ペルシア語', - slSI: 'スロベニア語', - arTN: 'チュニジア・アラビア語', - }, - }, - 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それを 2/3 以下に設定することをお勧めします。\ngpt-4-1106-preview、gpt-4-vision-preview の最大トークン(入力 128k 出力 4k)以下に設定することをお勧めします。', - maxTokenSettingTip: '最大トークン設定が高いため、プロンプト、クエリ、およびデータのスペースが制限される可能性があります。現在のモデルの最大トークンの 80% 以下に設定してください。', - setToCurrentModelMaxTokenTip: '最大トークンが現在のモデルの最大トークンの 80% に更新されました {{maxToken}}.', - stop_sequences: '停止シーケンス', - stop_sequencesTip: 'API が進行中のトークンの生成を停止する最大 4 つのシーケンス。返されたテキストには停止シーケンスは含まれません。', - stop_sequencesPlaceholder: 'シーケンスを入力してタブキーを押してください', - }, - tone: { - Creative: 'クリエイティブ', - Balanced: 'バランス', - Precise: '正確', - Custom: 'カスタム', - }, - addMoreModel: '設定画面から他のモデルを追加してください', - capabilities: 'マルチモーダル機能', - settingsLink: 'モデルプロバイダー設定', - }, - menus: { - status: 'ベータ版', - explore: '探索', - apps: 'スタジオ', - appDetail: 'アプリの詳細', - account: 'アカウント', - plugins: 'プラグイン', - pluginsTips: 'サードパーティのプラグインを統合するか、ChatGPT 互換の AI プラグインを作成します。', - datasets: 'ナレッジ', - datasetsTips: '近日公開:独自のテキストデータをインポートするか、Webhook を介してリアルタイムにデータを記述して LLM コンテキストを強化します。', - newApp: '新しいアプリ', - newDataset: 'ナレッジの作成', - tools: 'ツール', - exploreMarketplace: 'マーケットプレイスを探索する', - }, - userProfile: { - settings: '設定', - emailSupport: 'サポート', - workspace: 'ワークスペース', - createWorkspace: 'ワークスペースを作成', - helpCenter: 'ドキュメントを見る', - support: 'サポート', - compliance: 'コンプライアンス', - roadmap: 'ロードマップ', - community: 'コミュニティ', - about: 'Dify について', - logout: 'ログアウト', - github: 'GitHub', - contactUs: 'お問い合わせ', - forum: 'フォーラム', - }, - compliance: { - soc2Type1: 'SOC 2 Type I 報告書', - soc2Type2: 'SOC 2 Type II 報告書', - iso27001: 'ISO 27001:2022 認証', - gdpr: 'GDPR データ処理契約(DPA)', - sandboxUpgradeTooltip: 'プロフェッショナルプランまたはチームプランでのみ利用可能', - professionalUpgradeTooltip: 'チームプラン以上の契約が必要です', - }, - settings: { - accountGroup: 'アカウント', - workplaceGroup: 'ワークスペース', - account: 'マイアカウント', - members: 'メンバー', - billing: '請求', - integrations: '統合', - language: '言語', - provider: 'モデルプロバイダー', - dataSource: 'データソース', - plugin: 'プラグイン', - apiBasedExtension: 'API 拡張', - generalGroup: '一般', - }, - account: { - avatar: 'アバター', - name: '名前', - email: 'メール', - password: 'パスワード', - passwordTip: '一時的なログインコードを使用したくない場合は、永続的なパスワードを設定できます。', - setPassword: 'パスワードを設定', - resetPassword: 'パスワードをリセット', - currentPassword: '現在のパスワード', - newPassword: '新しいパスワード', - confirmPassword: 'パスワードを確認', - notEqual: '2 つのパスワードが異なります。', - langGeniusAccount: 'アカウント関連データ', - langGeniusAccountTip: 'アカウントに関連するユーザーデータ。', - editName: '名前を編集', - showAppLength: '{{length}}アプリを表示', - delete: 'アカウントを削除', - deleteTip: 'アカウントを削除すると、すべてのデータが完全に消去され、復元できなくなります。', - account: 'アカウント', - myAccount: 'マイアカウント', - studio: 'スタジオ', - deletePrivacyLinkTip: 'お客様のデータの取り扱い方法の詳細については、当社の', - deletePrivacyLink: 'プライバシーポリシー。', - deleteSuccessTip: 'アカウントの削除が完了するまでに時間が必要です。すべて完了しましたら、メールでお知らせします。', - deleteLabel: '確認するには、以下にメールアドレスを入力してください', - deletePlaceholder: 'メールアドレスを入力してください', - verificationLabel: '認証コード', - verificationPlaceholder: '6 桁のコードを貼り付けます', - permanentlyDeleteButton: 'アカウントを完全に削除', - feedbackTitle: 'フィードバック', - feedbackLabel: 'アカウントを削除した理由を教えてください。', - feedbackPlaceholder: '任意', - sendVerificationButton: '確認コードの送信', - editWorkspaceInfo: 'ワークスペース情報を編集', - workspaceName: 'ワークスペース名', - workspaceNamePlaceholder: 'ワークスペース名を入力', - workspaceIcon: 'ワークスペースアイコン', - changeEmail: { - title: 'メールアドレスを変更', - verifyEmail: '現在のメールアドレスを確認してください', - newEmail: '新しいメールアドレスを設定する', - verifyNew: '新しいメールアドレスを確認してください', - authTip: 'メールアドレスが変更されると、旧メールアドレスにリンクされている Google または GitHub アカウントは、このアカウントにログインできなくなります。', - content1: '変更を続ける場合、{{email}} に認証用の確認コードをお送りします。', - content2: '現在のメールアドレスは {{email}} です。認証コードはこのメールアドレスに送信されました。', - content3: '新しいメールアドレスを入力すると、確認コードが送信されます。', - content4: '一時確認コードを {{email}} に送信しました。', - codeLabel: 'コード', - codePlaceholder: 'コードを入力してください', - emailLabel: '新しいメール', - emailPlaceholder: '新しいメールを入力してください', - existingEmail: 'このメールアドレスのユーザーは既に存在します', - unAvailableEmail: 'このメールアドレスは現在使用できません。', - sendVerifyCode: '確認コードを送信', - continue: '続行', - changeTo: '{{email}} に変更', - resendTip: 'コードが届きませんか?', - resendCount: '{{count}} 秒後に再送信', - resend: '再送信', - }, - }, - members: { - team: 'チーム', - invite: '招待', - name: '名前', - lastActive: '最終アクティブ', - role: 'ロール', - pending: '保留中...', - owner: 'オーナー', - admin: '管理者', - adminTip: 'アプリの構築およびチーム設定の管理ができます', - normal: '通常', - normalTip: 'アプリの使用のみが可能で、アプリの構築はできません', - builder: 'ビルダー', - builderTip: '独自のアプリを作成・編集できる', - editor: 'エディター', - editorTip: 'アプリの構築ができますが、チーム設定の管理はできません', - datasetOperator: 'ナレッジ管理員', - datasetOperatorTip: 'ナレッジベースのみを管理できる', - inviteTeamMember: 'チームメンバーを招待する', - inviteTeamMemberTip: '彼らはサインイン後、直接あなたのチームデータにアクセスできます。', - emailNotSetup: 'メールサーバーがセットアップされていないので、招待メールを送信することはできません。代わりに招待後に発行される招待リンクをユーザーに通知してください。', - email: 'メール', - emailInvalid: '無効なメール形式', - emailPlaceholder: 'メールを入力してください', - sendInvite: '招待を送る', - invitedAsRole: '{{role}}ユーザーとして招待されました', - invitationSent: '招待が送信されました', - invitationSentTip: '招待が送信され、彼らは Dify にサインインしてあなたのチームデータにアクセスできます。', - invitationLink: '招待リンク', - failedInvitationEmails: '以下のユーザーは正常に招待されませんでした', - ok: 'OK', - removeFromTeam: 'チームから削除', - removeFromTeamTip: 'チームへのアクセスが削除されます', - setAdmin: '管理者に設定', - setMember: '通常のメンバーに設定', - setBuilder: 'ビルダーに設定', - setEditor: 'エディターに設定', - disInvite: '招待をキャンセル', - deleteMember: 'メンバーを削除', - you: '(あなた)', - transferOwnership: '所有権の移転', - transferModal: { - title: 'ワークスペースの所有権を移する', - warning: '「{{workspace}}」の所有権を移しようとしています。この操作は即時に有効となり、元に戻すことはできません。', - warningTip: 'あなたは管理者メンバーになり、新しいオーナーがすべての権限を持つことになります。', - sendTip: '続行する場合は、本人確認のため {{email}} に認証コードを送信します。', - verifyEmail: '現在のメールアドレスを確認', - verifyContent: '現在のメールアドレスは {{email}}。', - verifyContent2: 'このメールアドレスに一時的な認証コードを送信し、再認証を行います。', - codeLabel: '認証コード', - codePlaceholder: '6 桁のコードを入力してください', - resendTip: '認証コードを受け取れない場合は、', - resendCount: '{{count}} 秒後に再送信', - resend: '認証コードを再送信', - transferLabel: 'ワークスペースの所有権を転移する相手は', - transferPlaceholder: 'メールアドレスを入力してください', - sendVerifyCode: '認証コードを送信', - continue: '続行する', - transfer: 'ワークスペースの所有権を移する', - }, - }, - integrations: { - connected: '接続済み', - google: 'Google', - googleAccount: 'Google アカウントでログイン', - github: 'GitHub', - githubAccount: 'GitHub アカウントでログイン', - connect: '接続', - }, - language: { - displayLanguage: '表示言語', - timezone: 'タイムゾーン', - }, - provider: { - apiKey: 'API キー', - enterYourKey: 'ここに API キーを入力してください', - invalidKey: '無効な OpenAI API キー', - validatedError: '検証に失敗しました:', - validating: 'キーの検証中...', - saveFailed: 'API キーの保存に失敗しました', - apiKeyExceedBill: 'この API KEY には使用可能なクォータがありません。詳細は', - addKey: 'キーを追加', - comingSoon: '近日公開', - editKey: '編集', - invalidApiKey: '無効な API キー', - azure: { - apiBase: 'API ベース', - apiBasePlaceholder: 'Azure OpenAI エンドポイントの API ベース URL。', - apiKey: 'API キー', - apiKeyPlaceholder: 'ここに API キーを入力してください', - helpTip: 'Azure OpenAI サービスを学ぶ', - }, - openaiHosted: { - openaiHosted: 'ホステッド OpenAI', - onTrial: 'トライアル中', - exhausted: 'クォータが使い果たされました', - desc: 'Dify が提供する OpenAI ホスティングサービスを使用すると、GPT-3.5 などのモデルを使用できます。トライアルクォータが使い果たされる前に、他のモデルプロバイダを設定する必要があります。', - callTimes: '通話回数', - usedUp: 'トライアルクォータが使い果たされました。独自のモデルプロバイダを追加してください。', - useYourModel: '現在、独自のモデルプロバイダを使用しています。', - close: '閉じる', - }, - anthropicHosted: { - anthropicHosted: 'アンソピッククロード', - onTrial: 'トライアル中', - exhausted: 'クォータが使い果たされました', - desc: '高度なダイアログやクリエイティブなコンテンツ生成から詳細な指示まで、幅広いタスクに優れたパワフルなモデルです。', - callTimes: '通話回数', - usedUp: 'トライアルクォータが使い果たされました。独自のモデルプロバイダを追加してください。', - useYourModel: '現在、独自のモデルプロバイダを使用しています。', - close: '閉じる', - trialQuotaTip: 'お客様の Anthropic 試用枠は 2025/03/17 に失効し、その後は利用できなくなります。お早めにご利用ください。', - }, - anthropic: { - using: '埋め込み機能は使用中です', - enableTip: 'Anthropic モデルを有効にするには、まず OpenAI または Azure OpenAI サービスにバインドする必要があります。', - notEnabled: '有効にされていません', - keyFrom: 'Anthropic から API キーを取得してください', - }, - encrypted: { - front: 'API KEY は', - back: '技術を使用して暗号化および保存されます。', - }, - }, - modelProvider: { - notConfigured: 'システムモデルがまだ完全に設定されておらず、一部の機能が利用できない場合があります。', - systemModelSettings: 'システムモデル設定', - systemModelSettingsLink: 'システムモデルの設定が必要な理由は何ですか?', - selectModel: 'モデルを選択', - setupModelFirst: 'まずモデルをセットアップしてください', - systemReasoningModel: { - key: 'システム推論モデル', - tip: 'アプリの作成に使用されるデフォルトの推論モデルを設定します。また、対話名の生成や次の質問の提案などの機能もデフォルトの推論モデルを使用します。', - }, - embeddingModel: { - key: '埋め込みモデル', - tip: 'ナレッジのドキュメント埋め込み処理のデフォルトモデルを設定します。ナレッジの取得とインポートの両方に、この埋め込みモデルをベクトル化処理に使用します。切り替えると、インポートされたナレッジと質問の間のベクトル次元が一致せず、取得に失敗します。取得の失敗を避けるためには、このモデルを任意に切り替えないでください。', - required: '埋め込みモデルが必要です', - }, - speechToTextModel: { - key: '音声-to-テキストモデル', - tip: '会話での音声-to-テキスト入力に使用するデフォルトモデルを設定します。', - }, - ttsModel: { - key: 'テキスト-to-音声モデル', - tip: '会話でのテキスト-to-音声入力に使用するデフォルトモデルを設定します。', - }, - rerankModel: { - key: 'Rerank モデル', - tip: 'Rerank モデルは、ユーザークエリとの意味的一致に基づいて候補文書リストを再配置し、意味的ランキングの結果を向上させます。', - }, - apiKey: 'API-キー', - quota: 'クォータ', - searchModel: '検索モデル', - noModelFound: '{{model}}に対するモデルが見つかりません', - models: 'モデル', - showMoreModelProvider: 'より多くのモデルプロバイダを表示', - selector: { - tip: 'このモデルは削除されました。別のモデルを追加するか、別のモデルを選択してください。', - emptyTip: '利用可能なモデルはありません', - emptySetting: '設定に移動して構成してください', - rerankTip: 'Rerank モデルを設定してください', - }, - card: { - quota: 'クォータ', - onTrial: 'トライアル中', - paid: '有料', - quotaExhausted: 'クォータが使い果たされました', - callTimes: '通話回数', - tokens: 'トークン', - buyQuota: 'クォータを購入', - priorityUse: '優先利用', - removeKey: 'API キーを削除', - tip: '有料クォータは優先して使用されます。有料クォータを使用し終えた後、トライアルクォータが利用されます。', - }, - item: { - deleteDesc: '{{modelName}}はシステムが推測するモデルとして利用されています。削除すると、一部の機能が使用不可能になる可能性があります。ご確認ください。', - freeQuota: '無料のクォータ', - }, - addApiKey: 'API キーを追加', - invalidApiKey: '無効な API キー', - encrypted: { - front: 'API キーは', - 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: 'API キーの状態は正常', - apiKeyRateLimit: 'レート制限に到達しました。{{seconds}}秒後に再度利用可能です', - addConfig: '設定を追加', - editConfig: '設定を編集', - loadBalancingLeastKeyWarning: '負荷分散を利用するには、最低 2 つのキーを有効化する必要があります。', - loadBalancingInfo: 'デフォルトでは、負荷分散はラウンドロビン方式を採用しています。レート制限が発生した場合、1 分間のクールダウン期間が適用されます。', - upgradeForLoadBalancing: '負荷分散を利用するには、プランのアップグレードが必要です。', - emptyProviderTitle: 'モデルプロバイダーが設定されていません', - discoverMore: 'もっと発見する', - installProvider: 'モデルプロバイダーをインストールする', - installDataSourceProvider: 'データソースプロバイダーをインストールする', - configureTip: 'API キーを設定するか、使用するモデルを追加してください', - toBeConfigured: '設定中', - emptyProviderTip: '最初にモデルプロバイダーをインストールしてください。', - auth: { - apiKeyModal: { - title: 'APIキー認証設定', - addModel: 'モデルを追加する', - desc: '認証情報を設定した後、ワークスペース内のすべてのメンバーは、アプリケーションを調整する際にこのモデルを使用できます。', - }, - authorizationError: '認証エラー', - apiKeys: 'APIキー', - unAuthorized: '無許可', - credentialRemoved: '認証情報が削除されました', - configModel: 'モデルを構成する', - addApiKey: 'APIキーを追加してください', - addCredential: '認証情報を追加する', - authRemoved: '認証が削除されました', - modelCredentials: 'モデルの資格情報', - providerManaged: 'プロバイダーが管理しました', - addNewModel: '新しいモデルを追加する', - configLoadBalancing: '構成ロードバランシング', - addModelCredential: 'モデルの資格情報を追加', - providerManagedTip: '現在の設定はプロバイダーによってホストされています。', - specifyModelCredential: 'モデルの資格情報を指定してください', - specifyModelCredentialTip: '構成されたモデルの認証情報を使用してください。', - addModel: 'モデルを追加する', - addNewModelCredential: '新しいモデルの認証情報を追加する', - editModelCredential: 'モデルの資格情報を編集する', - removeModel: 'モデルを削除する', - customModelCredentialsDeleteTip: '認証情報は使用中で、削除できません。', - modelCredential: 'モデルの資格情報', - manageCredentials: '認証情報を管理する', - customModelCredentials: 'カスタムモデルの認証情報', - selectModelCredential: 'モデルの資格情報を選択する', - }, - parametersInvalidRemoved: 'いくつかのパラメータが無効であり、削除されました。', - }, - dataSource: { - add: 'データソースの追加', - connect: '接続', - configure: '設定', - notion: { - title: 'Notion', - description: 'ナレッジデータソースとして Notion を使用します。', - connectedWorkspace: '接続済みワークスペース', - addWorkspace: 'ワークスペースの追加', - connected: '接続済み', - disconnected: '接続解除', - changeAuthorizedPages: '認証済みページの変更', - pagesAuthorized: '認証済みページ', - sync: '同期', - remove: '削除', - selector: { - pageSelected: '選択済みページ', - searchPages: 'ページ検索...', - noSearchResult: '検索結果なし', - addPages: 'ページの追加', - preview: 'プレビュー', - }, - integratedAlert: 'Notionは内部資格情報を通じて統合されており、再認証する必要はありません。', - }, - website: { - title: 'ウェブサイト', - description: 'ウェブクローラーを使ってウェブサイトからコンテンツを取り込みます。', - with: 'による', - configuredCrawlers: '設定済みクローラー', - active: 'アクティブ', - inactive: '非アクティブ', - }, - }, - plugin: { - serpapi: { - apiKey: 'API キー', - apiKeyPlaceholder: 'API キーを入力してください', - keyFrom: 'SerpAPI アカウントページから SerpAPI キーを取得してください', - }, - }, - apiBasedExtension: { - title: 'API 拡張機能は、Dify のアプリケーション全体での簡単な使用のための設定を簡素化し、集中的な API 管理を提供します。', - link: '独自の API 拡張機能を開発する方法について学ぶ。', - add: 'API 拡張機能を追加', - selector: { - title: 'API 拡張機能', - placeholder: 'API 拡張機能を選択してください', - manage: 'API 拡張機能を管理', - }, - modal: { - title: 'API 拡張機能を追加', - editTitle: 'API 拡張機能を編集', - name: { - title: '名前', - placeholder: '名前を入力してください', - }, - apiEndpoint: { - title: 'API エンドポイント', - placeholder: 'API エンドポイントを入力してください', - }, - apiKey: { - title: 'API キー', - placeholder: 'API キーを入力してください', - lengthError: 'API キーの長さは 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: '関連アプリ', - noRelatedApp: '関連付けられたアプリはありません', - pipeline: 'パイプライン', - }, - 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: '検索スコア:', - }, - inputPlaceholder: '{{botName}} と話す', - thought: '思考', - thinking: '考え中...', - resend: '再送信してください', - }, - 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: 'タグの作成に失敗しました', - }, - fileUploader: { - uploadFromComputer: 'ローカルアップロード', - pasteFileLink: 'ファイルリンクの貼り付け', - pasteFileLinkInputPlaceholder: 'URL を入力...', - uploadFromComputerLimit: 'アップロードファイルは{{size}}を超えてはなりません', - uploadFromComputerUploadError: 'ファイルのアップロードに失敗しました。再度アップロードしてください。', - uploadFromComputerReadError: 'ファイルの読み取りに失敗しました。もう一度やり直してください。', - fileExtensionNotSupport: 'ファイル拡張子はサポートされていません', - pasteFileLinkInvalid: '無効なファイルリンク', - uploadDisabled: 'ファイルアップロードは無効です', - fileExtensionBlocked: 'このファイルタイプは、セキュリティ上の理由でブロックされています', - }, - license: { - expiring_plural: '有効期限 {{count}} 日', - expiring: '1 日で有効期限が切れます', - unlimited: '無制限', - }, - pagination: { - perPage: 'ページあたりのアイテム数', - }, - you: 'あなた', - imageInput: { - browse: 'ブラウズする', - supportedFormats: 'PNG、JPG、JPEG、WEBP、および GIF をサポートしています。', - dropImageHere: 'ここに画像をドロップするか、', - }, - avatar: { - deleteTitle: 'アバターを削除する', - deleteDescription: '本当にプロフィール写真を削除してもよろしいですか?あなたのアカウントはデフォルトの初期アバターを使用します。', - }, - feedback: { - content: 'フィードバックコンテンツ', - title: 'フィードバックを提供する', - subtitle: 'この回答で何が間違っていたのか教えてください。', - placeholder: '何が間違っていたか、またはどのように改善できるかを教えてください...', - }, - label: { - optional: '(オプション)', - }, - noData: 'データなし', - dynamicSelect: { - error: 'オプションの読み込みに失敗しました', - noData: '利用可能なオプションはありません', - loading: 'オプションを読み込み中...', - selected: '{{count}}件が選択されました', - }, -} - -export default translation diff --git a/web/i18n/ja-JP/custom.json b/web/i18n/ja-JP/custom.json new file mode 100644 index 0000000000..acb0317bed --- /dev/null +++ b/web/i18n/ja-JP/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "カスタマイズ", + "upgradeTip": { + "title": "プランをアップグレード", + "des": "ブランドをカスタマイズするためにはプランをアップグレードしてください。", + "prefix": "プランをアップグレードして", + "suffix": "ブランドをカスタマイズしましょう。" + }, + "webapp": { + "title": "WebApp ブランドのカスタマイズ", + "removeBrand": "Powered by Dify を削除", + "changeLogo": "Powered by ブランド画像を変更", + "changeLogoTip": "最小サイズ 40x40px の SVG または PNG 形式" + }, + "app": { + "title": "アプリヘッダーブランドのカスタマイズ", + "changeLogoTip": "最小サイズ 80x80px の SVG または PNG 形式" + }, + "upload": "アップロード", + "uploading": "アップロード中", + "uploadedFail": "画像のアップロードに失敗しました。再度アップロードしてください。", + "change": "変更", + "apply": "適用", + "restore": "デフォルトに戻す", + "customize": { + "contactUs": "お問い合わせ", + "prefix": "アプリ内のブランドロゴをカスタマイズするには、", + "suffix": "エンタープライズ版にアップグレードしてください。" + } +} diff --git a/web/i18n/ja-JP/custom.ts b/web/i18n/ja-JP/custom.ts deleted file mode 100644 index a7dcf4e7a8..0000000000 --- a/web/i18n/ja-JP/custom.ts +++ /dev/null @@ -1,32 +0,0 @@ -const translation = { - custom: 'カスタマイズ', - upgradeTip: { - title: 'プランをアップグレード', - des: 'ブランドをカスタマイズするためにはプランをアップグレードしてください。', - prefix: 'プランをアップグレードして', - suffix: 'ブランドをカスタマイズしましょう。', - }, - webapp: { - title: 'WebApp ブランドのカスタマイズ', - removeBrand: 'Powered by Dify を削除', - changeLogo: 'Powered by ブランド画像を変更', - changeLogoTip: '最小サイズ 40x40px の SVG または PNG 形式', - }, - app: { - title: 'アプリヘッダーブランドのカスタマイズ', - changeLogoTip: '最小サイズ 80x80px の SVG または PNG 形式', - }, - upload: 'アップロード', - uploading: 'アップロード中', - uploadedFail: '画像のアップロードに失敗しました。再度アップロードしてください。', - change: '変更', - apply: '適用', - restore: 'デフォルトに戻す', - customize: { - contactUs: 'お問い合わせ', - prefix: 'アプリ内のブランドロゴをカスタマイズするには、', - suffix: 'エンタープライズ版にアップグレードしてください。', - }, -} - -export default translation diff --git a/web/i18n/ja-JP/dataset-creation.json b/web/i18n/ja-JP/dataset-creation.json new file mode 100644 index 0000000000..e81f821e89 --- /dev/null +++ b/web/i18n/ja-JP/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "ナレッジベース" + }, + "one": "データソース", + "two": "テキスト進行中", + "three": "実行と完成" + }, + "error": { + "unavailable": "このナレッジベースは利用できません" + }, + "firecrawl": { + "configFirecrawl": "🔥Firecrawl の設定", + "apiKeyPlaceholder": "firecrawl.dev からの API キー", + "getApiKeyLinkText": "firecrawl.dev から API キーを取得する" + }, + "jinaReader": { + "getApiKeyLinkText": "無料の API キーを jina.ai で取得", + "apiKeyPlaceholder": "jina.ai からの API キー", + "configJinaReader": "Jina Reader の設定" + }, + "stepOne": { + "filePreview": "ファイルプレビュー", + "pagePreview": "ページプレビュー", + "dataSourceType": { + "file": "テキストファイルからインポート", + "notion": "Notion から同期", + "web": "ウェブサイトから同期" + }, + "uploader": { + "title": "テキストファイルをアップロード", + "button": "ファイルまたはフォルダをドラッグアンドドロップする", + "buttonSingleFile": "ファイルをドラッグアンドドロップする", + "browse": "参照", + "tip": "{{supportTypes}}をサポートしています。1 つあたりの最大サイズは{{size}}MB です。", + "validation": { + "typeError": "サポートされていないファイルタイプです", + "size": "ファイルサイズが大きすぎます。最大サイズは{{size}}MB です", + "count": "複数のファイルはサポートされていません", + "filesNumber": "バッチアップロードの制限({{filesNumber}}個)に達しました。" + }, + "cancel": "キャンセル", + "change": "変更", + "failed": "アップロードに失敗しました" + }, + "notionSyncTitle": "Notion が接続されていません", + "notionSyncTip": "Notion と同期するには、まず Notion への接続が必要です。", + "connect": "接続する", + "cancel": "キャンセル", + "button": "次へ", + "emptyDatasetCreation": "空のナレッジベースを作成します", + "modal": { + "title": "空のナレッジベースを作成", + "tip": "空のナレッジベースにはドキュメントが含まれず、いつでもドキュメントをアップロードできます。", + "input": "ナレッジベースの名称", + "placeholder": "入力してください", + "nameNotEmpty": "名前は空にできません", + "nameLengthInvalid": "名前は 1〜40 文字である必要があります", + "cancelButton": "キャンセル", + "confirmButton": "作成", + "failed": "作成に失敗しました" + }, + "website": { + "chooseProvider": "プロバイダーを選択する", + "fireCrawlNotConfigured": "Firecrawl が設定されていません", + "fireCrawlNotConfiguredDescription": "Firecrawl を使用するには、Firecrawl の API キーを設定してください。", + "jinaReaderNotConfigured": "Jina Reader が設定されていません", + "jinaReaderNotConfiguredDescription": "無料の API キーを入力して、Jina Reader を設定します。", + "configure": "設定", + "configureFirecrawl": "配置 Firecrawl", + "configureJinaReader": "配置 Jina Reader", + "run": "実行", + "firecrawlTitle": "🔥Firecrawl を使っでウエブコンテンツを抽出", + "firecrawlDoc": "Firecrawl ドキュメント", + "jinaReaderTitle": "サイト全体を Markdown に変換する", + "jinaReaderDoc": "Jina Reader の詳細", + "jinaReaderDocLink": "https://jina.ai/reader", + "useSitemap": "sitemap(サイトマップ) を使用する", + "useSitemapTooltip": "サイトマップに沿ってサイトをクロールします。そうでない場合、Jina Reader はページの関連性に基づいて繰り返しクロールし、ページ数は少なくなりますが、高品質のページが得られます。", + "options": "オプション", + "crawlSubPage": "サブページをクロールする", + "limit": "制限", + "maxDepth": "最大深度", + "excludePaths": "パスを除外する", + "includeOnlyPaths": "パスのみを含める", + "extractOnlyMainContent": "メインコンテンツのみを抽出する (ヘッダー、ナビ、フッターなどは抽出しない)", + "exceptionErrorTitle": "Firecrawl ジョブの実行中に例外が発生しました:", + "unknownError": "不明なエラー", + "totalPageScraped": "スクレイピングされた総ページ数:", + "selectAll": "すべて選択", + "resetAll": "すべてリセット", + "scrapTimeInfo": "{{time}} 秒以内に合計 {{total}} ページをスクレイピングしました", + "preview": "プレビュー", + "maxDepthTooltip": "入力された URL を基にしたクローリング作業での設定可能な最大深度について説明します。深度 0 は入力された URL 自体のページを対象としたスクレイピングを意味します。深度 1 では、元の URL の直下にあるページ(URL に続く最初の\"/\"以降の内容)もスクレイピングの対象になります。この深度は指定した数値まで増加させることができ、それに応じてスクレイピングの範囲も広がっていきます。", + "waterCrawlNotConfiguredDescription": "API キーを使って Watercrawl を設定します。", + "configureWatercrawl": "ウォータークローラーを設定する", + "watercrawlDoc": "ウォータークローリングの文書", + "watercrawlTitle": "Watercrawl を使用してウェブコンテンツを抽出する", + "waterCrawlNotConfigured": "Watercrawl は設定されていません", + "running": "走る" + } + }, + "stepTwo": { + "segmentation": "チャンク設定", + "auto": "自動", + "autoDescription": "チャンクと前処理ルールを自動的に設定します。初めてのユーザーはこれを選択することをおすすめします。", + "custom": "カスタム", + "customDescription": "チャンクのルール、チャンクの長さ、前処理ルールなどをカスタマイズします。", + "general": "汎用", + "generalTip": "汎用テキスト分割モードです。検索とコンテキスト抽出に同じチャンクを使用します。", + "parentChild": "親子", + "parentChildTip": "親子分割モード (階層分割モード) では、子チャンクを検索に、親チャンクをコンテキスト抽出に使用します。", + "parentChunkForContext": "コンテキスト用親チャンク", + "childChunkForRetrieval": "検索用子チャンク", + "paragraph": "段落", + "paragraphTip": "区切り文字と最大チャンク長に基づいてテキストを段落に分割し、分割されたテキストを検索用の親チャンクとして使用します。", + "fullDoc": "全文", + "fullDocTip": "ドキュメント全体を親チャンクとして使用し、直接検索します。パフォーマンス上の理由から、10000 トークンを超えるテキストは自動的に切り捨てられます。", + "separator": "チャンク識別子", + "separatorPlaceholder": "例えば改行(\\\\n)や特殊なセパレータ(例:「***」)", + "maxLength": "最大チャンク長", + "overlap": "チャンクのオーバーラップ", + "overlapTip": "チャンクのオーバーラップを設定することで、それらの間の意味的な関連性を維持し、検索効果を向上させることができます。最大チャンクサイズの 10%〜25% を設定することをおすすめします。", + "overlapCheck": "チャンクのオーバーラップは最大チャンク長を超えてはいけません", + "rules": "テキストの前処理ルール", + "removeExtraSpaces": "連続するスペース、改行、タブを置換する", + "removeUrlEmails": "すべての URL とメールアドレスを削除する", + "removeStopwords": "「a」「an」「the」などのストップワードを削除する", + "preview": "プレビュー", + "previewChunk": "チャンクをプレビュー", + "reset": "リセット", + "indexMode": "インデックス方法", + "qualified": "高品質", + "highQualityTip": "高品質モードで埋め込みを終了したら、経済的モードに戻すことはできません。", + "recommend": "推奨", + "qualifiedTip": "埋め込みモデルを呼び出してドキュメントを処理し、より正確な検索を行うと、LLM が高品質の回答を生成するのに役立ちます。", + "warning": "モデルプロバイダの API キーを設定してください。", + "click": "設定に移動", + "economical": "経済的", + "economicalTip": "検索時にチャンクあたり 10 個のキーワードを使用することで、精度は低下しますが、トークン消費を抑えられます。", + "QATitle": "質問と回答形式でセグメント化", + "QATip": "このオプションを有効にすると、追加のトークンが消費されます", + "QALanguage": "使用言語", + "useQALanguage": "Q&A 形式で分割", + "estimateCost": "見積もり", + "estimateSegment": "推定チャンク数", + "segmentCount": "チャンク", + "calculating": "計算中...", + "fileSource": "ドキュメントの前処理", + "notionSource": "ページの前処理", + "websiteSource": "ウエブサイドの前処理", + "other": "その他", + "fileUnit": "ファイル", + "notionUnit": "ページ", + "webpageUnit": " ページ", + "previousStep": "前のステップ", + "nextStep": "保存して処理", + "save": "保存して処理", + "cancel": "キャンセル", + "sideTipTitle": "なぜチャンクと前処理が必要なのか", + "sideTipP1": "テキストデータを処理する際、チャンクとクリーニングは 2 つの重要な前処理ステップです。", + "sideTipP2": "セグメンテーションは長いテキストを段落に分割し、モデルがより理解しやすくします。これにより、モデルの結果の品質と関連性が向上します。", + "sideTipP3": "クリーニングは不要な文字や書式を削除し、ナレッジベースをよりクリーンで解析しやすいものにします。", + "sideTipP4": "適切なチャンクとクリーニングはモデルのパフォーマンスを向上させ、より正確で価値のある結果を提供します。", + "previewTitle": "プレビュー", + "previewTitleButton": "プレビュー", + "previewButton": "Q&A 形式に切り替える", + "previewSwitchTipStart": "現在のチャンクプレビューはテキスト形式です。質問と回答形式のプレビューに切り替えると、", + "previewSwitchTipEnd": " 追加のトークンが消費されます", + "characters": "文字", + "indexSettingTip": "インデックス方法を変更するには、", + "retrievalSettingTip": "検索方法を変更するには、", + "datasetSettingLink": "ナレッジベース設定", + "separatorTip": "区切り文字は、テキストを区切るために使用される文字です。\\n\\n と \\n は、段落と行を区切るために一般的に使用される区切り記号です。カンマ (\\n\\n,\\n) と組み合わせると、最大チャンク長を超えると、段落は行で区切られます。自分で定義した特別な区切り文字を使用することもできます (例:***)。", + "maxLengthCheck": "チャンクの最大長は {{limit}} 未満にする必要があります", + "previewChunkTip": "プレビューを読み込むには、左側の 'チャンクをプレビュー' ボタンをクリックしてください", + "previewChunkCount": "推定チャンク数:{{count}}", + "switch": "切り替え", + "qaSwitchHighQualityTipTitle": "Q&A 形式には高品質なインデックスが必要です", + "qaSwitchHighQualityTipContent": "現在、高品質なインデックス作成のみが Q&A 形式の分割をサポートしています。高品質モードに切り替えますか?", + "notAvailableForParentChild": "親子インデックスでは利用できません", + "notAvailableForQA": "Q&A インデックスでは利用できません", + "parentChildDelimiterTip": "区切り文字とは、テキストを分割するために使用される文字です。\\n\\n は、元のドキュメントを大きな親チャンクに分割する際におすすめです。独自の区切り文字も使用できます。", + "parentChildChunkDelimiterTip": "区切り文字とは、テキストを分割するために使用される文字です。\\n は、親チャンクを小さな子チャンクに分割する際におすすめです。独自の区切り文字も使用できます。", + "qaTip": "構造化されたQ&Aデータを使用する場合、質問と回答を組み合わせたドキュメントを作成できます。これらのドキュメントは質問部分に基づいてインデックスされ、システムはクエリの類似性に基づいて関連する回答を取得できるようになります。" + }, + "stepThree": { + "creationTitle": "🎉 ナレッジベースが作成されました", + "creationContent": "ナレッジベースの名前は自動的に設定されましたが、自由に変更できます。", + "label": "ナレッジベース名", + "additionTitle": "🎉 ドキュメントがアップロードされました", + "additionP1": "ドキュメントはナレッジベースにアップロードされました", + "additionP2": "、ナレッジベースのドキュメントリストで見つけることができます。", + "stop": "処理を停止", + "resume": "処理を再開", + "navTo": "ドキュメントに移動", + "sideTipTitle": "次は何ですか", + "sideTipContent": "ドキュメントのインデックスが完了したら、ナレッジベースをアプリケーションのコンテキストとして統合することができます。プロンプトオーケストレーションページでコンテキスト設定を見つけることができます。また、独立した ChatGPT インデックスプラグインとしてリリースすることもできます。", + "modelTitle": "埋め込みを停止してもよろしいですか?", + "modelContent": "後で処理を再開する必要がある場合は、中断した場所から続行します。", + "modelButtonConfirm": "確認", + "modelButtonCancel": "キャンセル" + }, + "otherDataSource": { + "title": "他のデータソースと接続しますか?", + "description": "現在、Dify のナレッジベースには利用できるデータソースが限られています。Dify のナレッジベースにデータソースを提供いただくことは、プラットフォームの柔軟性と能力を向上させる上で非常に有益です。貢献ガイドをご用意していますので、ぜひご協力ください。詳細については、以下のリンクをクリックしてください。", + "learnMore": "詳細はこちら" + }, + "watercrawl": { + "getApiKeyLinkText": "watercrawl.dev から API キーを取得してください。", + "configWatercrawl": "ウォータークローラーを設定する", + "apiKeyPlaceholder": "watercrawl.dev からの API キー" + } +} diff --git a/web/i18n/ja-JP/dataset-creation.ts b/web/i18n/ja-JP/dataset-creation.ts deleted file mode 100644 index 472868af1f..0000000000 --- a/web/i18n/ja-JP/dataset-creation.ts +++ /dev/null @@ -1,217 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: 'ナレッジベース', - }, - one: 'データソース', - two: 'テキスト進行中', - three: '実行と完成', - }, - error: { - unavailable: 'このナレッジベースは利用できません', - }, - firecrawl: { - configFirecrawl: '🔥Firecrawl の設定', - apiKeyPlaceholder: 'firecrawl.dev からの API キー', - getApiKeyLinkText: 'firecrawl.dev から API キーを取得する', - }, - jinaReader: { - getApiKeyLinkText: '無料の API キーを jina.ai で取得', - apiKeyPlaceholder: 'jina.ai からの API キー', - configJinaReader: 'Jina Reader の設定', - }, - stepOne: { - filePreview: 'ファイルプレビュー', - pagePreview: 'ページプレビュー', - dataSourceType: { - file: 'テキストファイルからインポート', - notion: 'Notion から同期', - web: 'ウェブサイトから同期', - }, - uploader: { - title: 'テキストファイルをアップロード', - button: 'ファイルまたはフォルダをドラッグアンドドロップする', - buttonSingleFile: 'ファイルをドラッグアンドドロップする', - browse: '参照', - tip: '{{supportTypes}}をサポートしています。1 つあたりの最大サイズは{{size}}MB です。', - validation: { - typeError: 'サポートされていないファイルタイプです', - size: 'ファイルサイズが大きすぎます。最大サイズは{{size}}MB です', - count: '複数のファイルはサポートされていません', - filesNumber: 'バッチアップロードの制限({{filesNumber}}個)に達しました。', - }, - cancel: 'キャンセル', - change: '変更', - failed: 'アップロードに失敗しました', - }, - notionSyncTitle: 'Notion が接続されていません', - notionSyncTip: 'Notion と同期するには、まず Notion への接続が必要です。', - connect: '接続する', - cancel: 'キャンセル', - button: '次へ', - emptyDatasetCreation: '空のナレッジベースを作成します', - modal: { - title: '空のナレッジベースを作成', - tip: '空のナレッジベースにはドキュメントが含まれず、いつでもドキュメントをアップロードできます。', - input: 'ナレッジベースの名称', - placeholder: '入力してください', - nameNotEmpty: '名前は空にできません', - nameLengthInvalid: '名前は 1〜40 文字である必要があります', - cancelButton: 'キャンセル', - confirmButton: '作成', - failed: '作成に失敗しました', - }, - website: { - chooseProvider: 'プロバイダーを選択する', - fireCrawlNotConfigured: 'Firecrawl が設定されていません', - fireCrawlNotConfiguredDescription: 'Firecrawl を使用するには、Firecrawl の API キーを設定してください。', - jinaReaderNotConfigured: 'Jina Reader が設定されていません', - jinaReaderNotConfiguredDescription: '無料の API キーを入力して、Jina Reader を設定します。', - configure: '設定', - configureFirecrawl: '配置 Firecrawl', - configureJinaReader: '配置 Jina Reader', - run: '実行', - firecrawlTitle: '🔥Firecrawl を使っでウエブコンテンツを抽出', - firecrawlDoc: 'Firecrawl ドキュメント', - jinaReaderTitle: 'サイト全体を Markdown に変換する', - jinaReaderDoc: 'Jina Reader の詳細', - jinaReaderDocLink: 'https://jina.ai/reader', - useSitemap: 'sitemap(サイトマップ) を使用する', - useSitemapTooltip: 'サイトマップに沿ってサイトをクロールします。そうでない場合、Jina Reader はページの関連性に基づいて繰り返しクロールし、ページ数は少なくなりますが、高品質のページが得られます。', - options: 'オプション', - crawlSubPage: 'サブページをクロールする', - limit: '制限', - maxDepth: '最大深度', - excludePaths: 'パスを除外する', - includeOnlyPaths: 'パスのみを含める', - extractOnlyMainContent: 'メインコンテンツのみを抽出する (ヘッダー、ナビ、フッターなどは抽出しない)', - exceptionErrorTitle: 'Firecrawl ジョブの実行中に例外が発生しました:', - unknownError: '不明なエラー', - totalPageScraped: 'スクレイピングされた総ページ数:', - selectAll: 'すべて選択', - resetAll: 'すべてリセット', - scrapTimeInfo: '{{time}} 秒以内に合計 {{total}} ページをスクレイピングしました', - preview: 'プレビュー', - maxDepthTooltip: '入力された URL を基にしたクローリング作業での設定可能な最大深度について説明します。深度 0 は入力された URL 自体のページを対象としたスクレイピングを意味します。深度 1 では、元の URL の直下にあるページ(URL に続く最初の"/"以降の内容)もスクレイピングの対象になります。この深度は指定した数値まで増加させることができ、それに応じてスクレイピングの範囲も広がっていきます。', - waterCrawlNotConfiguredDescription: 'API キーを使って Watercrawl を設定します。', - configureWatercrawl: 'ウォータークローラーを設定する', - watercrawlDoc: 'ウォータークローリングの文書', - watercrawlTitle: 'Watercrawl を使用してウェブコンテンツを抽出する', - waterCrawlNotConfigured: 'Watercrawl は設定されていません', - running: '走る', - }, - }, - stepTwo: { - segmentation: 'チャンク設定', - auto: '自動', - autoDescription: 'チャンクと前処理ルールを自動的に設定します。初めてのユーザーはこれを選択することをおすすめします。', - custom: 'カスタム', - customDescription: 'チャンクのルール、チャンクの長さ、前処理ルールなどをカスタマイズします。', - general: '汎用', - generalTip: '汎用テキスト分割モードです。検索とコンテキスト抽出に同じチャンクを使用します。', - parentChild: '親子', - parentChildTip: '親子分割モード (階層分割モード) では、子チャンクを検索に、親チャンクをコンテキスト抽出に使用します。', - parentChunkForContext: 'コンテキスト用親チャンク', - childChunkForRetrieval: '検索用子チャンク', - paragraph: '段落', - paragraphTip: '区切り文字と最大チャンク長に基づいてテキストを段落に分割し、分割されたテキストを検索用の親チャンクとして使用します。', - fullDoc: '全文', - fullDocTip: 'ドキュメント全体を親チャンクとして使用し、直接検索します。パフォーマンス上の理由から、10000 トークンを超えるテキストは自動的に切り捨てられます。', - separator: 'チャンク識別子', - separatorPlaceholder: '例えば改行(\\\\n)や特殊なセパレータ(例:「***」)', - maxLength: '最大チャンク長', - overlap: 'チャンクのオーバーラップ', - overlapTip: 'チャンクのオーバーラップを設定することで、それらの間の意味的な関連性を維持し、検索効果を向上させることができます。最大チャンクサイズの 10%〜25% を設定することをおすすめします。', - overlapCheck: 'チャンクのオーバーラップは最大チャンク長を超えてはいけません', - rules: 'テキストの前処理ルール', - removeExtraSpaces: '連続するスペース、改行、タブを置換する', - removeUrlEmails: 'すべての URL とメールアドレスを削除する', - removeStopwords: '「a」「an」「the」などのストップワードを削除する', - preview: 'プレビュー', - previewChunk: 'チャンクをプレビュー', - reset: 'リセット', - indexMode: 'インデックス方法', - qualified: '高品質', - highQualityTip: '高品質モードで埋め込みを終了したら、経済的モードに戻すことはできません。', - recommend: '推奨', - qualifiedTip: '埋め込みモデルを呼び出してドキュメントを処理し、より正確な検索を行うと、LLM が高品質の回答を生成するのに役立ちます。', - warning: 'モデルプロバイダの API キーを設定してください。', - click: '設定に移動', - economical: '経済的', - economicalTip: '検索時にチャンクあたり 10 個のキーワードを使用することで、精度は低下しますが、トークン消費を抑えられます。', - QATitle: '質問と回答形式でセグメント化', - QATip: 'このオプションを有効にすると、追加のトークンが消費されます', - QALanguage: '使用言語', - useQALanguage: 'Q&A 形式で分割', - estimateCost: '見積もり', - estimateSegment: '推定チャンク数', - segmentCount: 'チャンク', - calculating: '計算中...', - fileSource: 'ドキュメントの前処理', - notionSource: 'ページの前処理', - websiteSource: 'ウエブサイドの前処理', - other: 'その他', - fileUnit: 'ファイル', - notionUnit: 'ページ', - webpageUnit: ' ページ', - previousStep: '前のステップ', - nextStep: '保存して処理', - save: '保存して処理', - cancel: 'キャンセル', - sideTipTitle: 'なぜチャンクと前処理が必要なのか', - sideTipP1: 'テキストデータを処理する際、チャンクとクリーニングは 2 つの重要な前処理ステップです。', - sideTipP2: 'セグメンテーションは長いテキストを段落に分割し、モデルがより理解しやすくします。これにより、モデルの結果の品質と関連性が向上します。', - sideTipP3: 'クリーニングは不要な文字や書式を削除し、ナレッジベースをよりクリーンで解析しやすいものにします。', - sideTipP4: '適切なチャンクとクリーニングはモデルのパフォーマンスを向上させ、より正確で価値のある結果を提供します。', - previewTitle: 'プレビュー', - previewTitleButton: 'プレビュー', - previewButton: 'Q&A 形式に切り替える', - previewSwitchTipStart: '現在のチャンクプレビューはテキスト形式です。質問と回答形式のプレビューに切り替えると、', - previewSwitchTipEnd: ' 追加のトークンが消費されます', - characters: '文字', - indexSettingTip: 'インデックス方法を変更するには、', - retrievalSettingTip: '検索方法を変更するには、', - datasetSettingLink: 'ナレッジベース設定', - separatorTip: '区切り文字は、テキストを区切るために使用される文字です。\\n\\n と \\n は、段落と行を区切るために一般的に使用される区切り記号です。カンマ (\\n\\n,\\n) と組み合わせると、最大チャンク長を超えると、段落は行で区切られます。自分で定義した特別な区切り文字を使用することもできます (例:***)。', - maxLengthCheck: 'チャンクの最大長は {{limit}} 未満にする必要があります', - previewChunkTip: 'プレビューを読み込むには、左側の \'チャンクをプレビュー\' ボタンをクリックしてください', - previewChunkCount: '推定チャンク数:{{count}}', - switch: '切り替え', - qaSwitchHighQualityTipTitle: 'Q&A 形式には高品質なインデックスが必要です', - qaSwitchHighQualityTipContent: '現在、高品質なインデックス作成のみが Q&A 形式の分割をサポートしています。高品質モードに切り替えますか?', - notAvailableForParentChild: '親子インデックスでは利用できません', - notAvailableForQA: 'Q&A インデックスでは利用できません', - parentChildDelimiterTip: '区切り文字とは、テキストを分割するために使用される文字です。\\n\\n は、元のドキュメントを大きな親チャンクに分割する際におすすめです。独自の区切り文字も使用できます。', - parentChildChunkDelimiterTip: '区切り文字とは、テキストを分割するために使用される文字です。\\n は、親チャンクを小さな子チャンクに分割する際におすすめです。独自の区切り文字も使用できます。', - qaTip: '構造化されたQ&Aデータを使用する場合、質問と回答を組み合わせたドキュメントを作成できます。これらのドキュメントは質問部分に基づいてインデックスされ、システムはクエリの類似性に基づいて関連する回答を取得できるようになります。', - }, - stepThree: { - creationTitle: '🎉 ナレッジベースが作成されました', - creationContent: 'ナレッジベースの名前は自動的に設定されましたが、自由に変更できます。', - label: 'ナレッジベース名', - additionTitle: '🎉 ドキュメントがアップロードされました', - additionP1: 'ドキュメントはナレッジベースにアップロードされました', - additionP2: '、ナレッジベースのドキュメントリストで見つけることができます。', - stop: '処理を停止', - resume: '処理を再開', - navTo: 'ドキュメントに移動', - sideTipTitle: '次は何ですか', - sideTipContent: 'ドキュメントのインデックスが完了したら、ナレッジベースをアプリケーションのコンテキストとして統合することができます。プロンプトオーケストレーションページでコンテキスト設定を見つけることができます。また、独立した ChatGPT インデックスプラグインとしてリリースすることもできます。', - modelTitle: '埋め込みを停止してもよろしいですか?', - modelContent: '後で処理を再開する必要がある場合は、中断した場所から続行します。', - modelButtonConfirm: '確認', - modelButtonCancel: 'キャンセル', - }, - otherDataSource: { - title: '他のデータソースと接続しますか?', - description: '現在、Dify のナレッジベースには利用できるデータソースが限られています。Dify のナレッジベースにデータソースを提供いただくことは、プラットフォームの柔軟性と能力を向上させる上で非常に有益です。貢献ガイドをご用意していますので、ぜひご協力ください。詳細については、以下のリンクをクリックしてください。', - learnMore: '詳細はこちら', - }, - watercrawl: { - getApiKeyLinkText: 'watercrawl.dev から API キーを取得してください。', - configWatercrawl: 'ウォータークローラーを設定する', - apiKeyPlaceholder: 'watercrawl.dev からの API キー', - }, -} - -export default translation diff --git a/web/i18n/ja-JP/dataset-documents.json b/web/i18n/ja-JP/dataset-documents.json new file mode 100644 index 0000000000..1b543f9ad5 --- /dev/null +++ b/web/i18n/ja-JP/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "ドキュメント", + "desc": "すべてのファイルがここに表示され、ナレッジベース全体が Dify の引用やチャットプラグインを介してリンクされるか、インデックス化されることができます。", + "learnMore": "詳細はこちら", + "addFile": "ファイルを追加", + "addPages": "ページを追加", + "addUrl": "URL を追加", + "table": { + "header": { + "fileName": "ファイル名", + "chunkingMode": "チャンキングモード", + "words": "単語数", + "hitCount": "検索回数", + "uploadTime": "アップロード時間", + "status": "ステータス", + "action": "アクション" + }, + "rename": "名前を変更", + "name": "名前" + }, + "action": { + "uploadFile": "新しいファイルをアップロード", + "settings": "チャンク設定", + "addButton": "チャンクを追加", + "add": "チャンクを追加", + "batchAdd": "一括追加", + "archive": "アーカイブ", + "unarchive": "アーカイブ解除", + "delete": "削除", + "enableWarning": "アーカイブされたファイルは有効にできません", + "sync": "同期", + "pause": "一時停止", + "resume": "再開" + }, + "index": { + "enable": "有効にする", + "disable": "無効にする", + "all": "すべて", + "enableTip": "ファイルをインデックス化できます", + "disableTip": "ファイルをインデックス化できません" + }, + "status": { + "queuing": "キューイング中", + "indexing": "インデックス化中", + "paused": "一時停止中", + "error": "エラー", + "available": "利用可能", + "enabled": "有効", + "disabled": "無効", + "archived": "アーカイブ済み" + }, + "empty": { + "title": "まだドキュメントがありません", + "upload": { + "tip": "ファイルをアップロードしたり、ウェブサイトから同期したり、Notion や GitHub などの Web アプリから同期することができます。" + }, + "sync": { + "tip": "Dify は定期的に Notion からファイルをダウンロードし、処理を完了します。" + } + }, + "delete": { + "title": "本当に削除しますか?", + "content": "後で処理を再開する必要がある場合は、中断した場所から続行します。" + }, + "batchModal": { + "title": "一括追加", + "csvUploadTitle": "CSV ファイルをここにドラッグアンドドロップするか、", + "browse": "参照", + "tip": "CSV ファイルは次の構造に準拠する必要があります:", + "question": "質問", + "answer": "回答", + "contentTitle": "チャンクの内容", + "content": "内容", + "template": "テンプレートをここからダウンロード", + "cancel": "キャンセル", + "run": "一括実行", + "runError": "一括実行に失敗しました", + "processing": "一括処理中", + "completed": "インポート完了", + "error": "インポートエラー", + "ok": "OK" + }, + "sort": { + "uploadTime": "アップロード時間", + "hitCount": "取得回数" + } + }, + "metadata": { + "title": "メタデータ", + "desc": "ドキュメントのメタデータにラベルを付けることで、AI がタイムリーにアクセスできるようになり、ユーザーに参照元が公開されます。", + "dateTimeFormat": "YYYY 年 M 月 D 日 hh:mm A", + "docTypeSelectTitle": "ドキュメントタイプを選択してください", + "docTypeChangeTitle": "ドキュメントタイプを変更", + "docTypeSelectWarning": "ドキュメントタイプを変更すると、現在入力されているメタデータは保持されなくなります", + "firstMetaAction": "始めましょう", + "placeholder": { + "add": "追加", + "select": "選択" + }, + "source": { + "upload_file": "ファイルをアップロード", + "notion": "Notion から同期", + "github": "GitHub から同期", + "website_crawl": "ウェブサイトクロール", + "online_document": "オンライン文書", + "local_file": "ローカルファイル" + }, + "type": { + "book": "書籍", + "webPage": "ウェブページ", + "paper": "論文", + "socialMediaPost": "ソーシャルメディアの投稿", + "personalDocument": "個人のドキュメント", + "businessDocument": "ビジネスドキュメント", + "IMChat": "IM チャット", + "wikipediaEntry": "Wikipedia のエントリー", + "notion": "Notion から同期", + "github": "GitHub から同期", + "technicalParameters": "技術的なパラメータ" + }, + "field": { + "processRule": { + "processDoc": "ドキュメントの処理", + "segmentRule": "チャンクのルール", + "segmentLength": "チャンクの長さ", + "processClean": "テキストの前処理" + }, + "book": { + "title": "タイトル", + "language": "言語", + "author": "著者", + "publisher": "出版社", + "publicationDate": "出版日", + "ISBN": "ISBN", + "category": "カテゴリ" + }, + "webPage": { + "title": "タイトル", + "url": "URL", + "language": "言語", + "authorPublisher": "著者/出版社", + "publishDate": "公開日", + "topicKeywords": "トピック/キーワード", + "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": "処理を停止", + "pause": "処理を一時停止", + "resume": "再開", + "automatic": "自動", + "custom": "カスタム", + "hierarchical": "親子チャンキング", + "previewTip": "埋め込みが完了した後、段落のプレビューが利用可能になります", + "parentMaxTokens": "親", + "childMaxTokens": "子", + "waiting": "埋め込み待機中..." + }, + "segment": { + "paragraphs": "段落", + "chunks_one": "チャンク", + "chunks_other": "チャンク", + "parentChunks_one": "親チャンク", + "parentChunks_other": "親チャンク", + "childChunks_one": "子チャンク", + "childChunks_other": "子チャンク", + "searchResults_zero": "検索結果", + "searchResults_one": "検索結果", + "searchResults_other": "検索結果", + "empty": "チャンクが見つかりません", + "clearFilter": "フィルターをクリア", + "chunk": "チャンク", + "parentChunk": "親チャンク", + "newChunk": "新しいチャンク", + "childChunk": "子チャンク", + "newChildChunk": "新しい子チャンク", + "keywords": "キーワード", + "addKeyWord": "キーワードを追加", + "keywordError": "キーワードの最大長は 20 です", + "characters_one": "文字", + "characters_other": "文字", + "hitCount": "検索回数", + "vectorHash": "ベクトルハッシュ:", + "questionPlaceholder": "ここに質問を追加", + "questionEmpty": "質問は空にできません", + "answerPlaceholder": "ここに回答を追加", + "answerEmpty": "回答は空にできません", + "contentPlaceholder": "ここに内容を追加", + "contentEmpty": "内容は空にできません", + "newTextSegment": "新しいテキストチャンク", + "newQaSegment": "新しい Q&A チャンク", + "addChunk": "チャンクを追加", + "addChildChunk": "子チャンクを追加", + "addAnother": "続けて追加", + "delete": "このチャンクを削除しますか?", + "chunkAdded": "チャンクを追加しました", + "childChunkAdded": "子チャンクを追加しました", + "editChunk": "チャンクを編集", + "editParentChunk": "親チャンクを編集", + "editChildChunk": "子チャンクを編集", + "chunkDetail": "チャンクの詳細", + "regenerationConfirmTitle": "子チャンクを再生成しますか?", + "regenerationConfirmMessage": "再生成された子チャンクは、編集済みまたは新規追加の子チャンクを含め、現在の子チャンクを上書きします。この操作は取り消せません。", + "regeneratingTitle": "子チャンクを生成中", + "regeneratingMessage": "子チャンクの生成には時間がかかります、しばらくお待ちください。", + "regenerationSuccessTitle": "子チャンクの再生成が完了しました", + "regenerationSuccessMessage": "ウィンドウを閉じても大丈夫です", + "edited": "編集済み", + "editedAt": "編集日時", + "dateTimeFormat": "YYYY/MM/DD HH:mm", + "expandChunks": "チャンクを展開", + "collapseChunks": "チャンクを折りたたむ", + "keywordDuplicate": "そのキーワードは既に存在しています", + "keywordEmpty": "キーワードは空であってはいけません", + "allFilesUploaded": "保存する前にすべてのファイルをアップロードする必要があります" + } +} diff --git a/web/i18n/ja-JP/dataset-documents.ts b/web/i18n/ja-JP/dataset-documents.ts deleted file mode 100644 index d9fcbda381..0000000000 --- a/web/i18n/ja-JP/dataset-documents.ts +++ /dev/null @@ -1,408 +0,0 @@ -const translation = { - list: { - title: 'ドキュメント', - desc: 'すべてのファイルがここに表示され、ナレッジベース全体が Dify の引用やチャットプラグインを介してリンクされるか、インデックス化されることができます。', - learnMore: '詳細はこちら', - addFile: 'ファイルを追加', - addPages: 'ページを追加', - addUrl: 'URL を追加', - table: { - header: { - fileName: 'ファイル名', - chunkingMode: 'チャンキングモード', - words: '単語数', - hitCount: '検索回数', - uploadTime: 'アップロード時間', - status: 'ステータス', - action: 'アクション', - }, - rename: '名前を変更', - name: '名前', - }, - action: { - uploadFile: '新しいファイルをアップロード', - settings: 'チャンク設定', - addButton: 'チャンクを追加', - add: 'チャンクを追加', - batchAdd: '一括追加', - archive: 'アーカイブ', - unarchive: 'アーカイブ解除', - delete: '削除', - enableWarning: 'アーカイブされたファイルは有効にできません', - sync: '同期', - pause: '一時停止', - resume: '再開', - }, - index: { - enable: '有効にする', - disable: '無効にする', - all: 'すべて', - enableTip: 'ファイルをインデックス化できます', - disableTip: 'ファイルをインデックス化できません', - }, - status: { - queuing: 'キューイング中', - indexing: 'インデックス化中', - paused: '一時停止中', - error: 'エラー', - available: '利用可能', - enabled: '有効', - disabled: '無効', - archived: 'アーカイブ済み', - }, - empty: { - title: 'まだドキュメントがありません', - upload: { - tip: 'ファイルをアップロードしたり、ウェブサイトから同期したり、Notion や GitHub などの Web アプリから同期することができます。', - }, - sync: { - tip: 'Dify は定期的に Notion からファイルをダウンロードし、処理を完了します。', - }, - }, - delete: { - title: '本当に削除しますか?', - content: '後で処理を再開する必要がある場合は、中断した場所から続行します。', - }, - batchModal: { - title: '一括追加', - csvUploadTitle: 'CSV ファイルをここにドラッグアンドドロップするか、', - browse: '参照', - tip: 'CSV ファイルは次の構造に準拠する必要があります:', - question: '質問', - answer: '回答', - contentTitle: 'チャンクの内容', - content: '内容', - template: 'テンプレートをここからダウンロード', - cancel: 'キャンセル', - run: '一括実行', - runError: '一括実行に失敗しました', - processing: '一括処理中', - completed: 'インポート完了', - error: 'インポートエラー', - ok: 'OK', - }, - sort: { - uploadTime: 'アップロード時間', - hitCount: '取得回数', - }, - }, - metadata: { - title: 'メタデータ', - desc: 'ドキュメントのメタデータにラベルを付けることで、AI がタイムリーにアクセスできるようになり、ユーザーに参照元が公開されます。', - dateTimeFormat: 'YYYY 年 M 月 D 日 hh:mm A', - docTypeSelectTitle: 'ドキュメントタイプを選択してください', - docTypeChangeTitle: 'ドキュメントタイプを変更', - docTypeSelectWarning: - 'ドキュメントタイプを変更すると、現在入力されているメタデータは保持されなくなります', - firstMetaAction: '始めましょう', - placeholder: { - add: '追加', - select: '選択', - }, - source: { - upload_file: 'ファイルをアップロード', - notion: 'Notion から同期', - github: 'GitHub から同期', - website_crawl: 'ウェブサイトクロール', - online_document: 'オンライン文書', - local_file: 'ローカルファイル', - }, - type: { - book: '書籍', - webPage: 'ウェブページ', - paper: '論文', - socialMediaPost: 'ソーシャルメディアの投稿', - personalDocument: '個人のドキュメント', - businessDocument: 'ビジネスドキュメント', - IMChat: 'IM チャット', - wikipediaEntry: 'Wikipedia のエントリー', - notion: 'Notion から同期', - github: 'GitHub から同期', - technicalParameters: '技術的なパラメータ', - }, - field: { - processRule: { - processDoc: 'ドキュメントの処理', - segmentRule: 'チャンクのルール', - segmentLength: 'チャンクの長さ', - processClean: 'テキストの前処理', - }, - book: { - title: 'タイトル', - language: '言語', - author: '著者', - publisher: '出版社', - publicationDate: '出版日', - ISBN: 'ISBN', - category: 'カテゴリ', - }, - webPage: { - title: 'タイトル', - url: 'URL', - language: '言語', - authorPublisher: '著者/出版社', - publishDate: '公開日', - topicKeywords: 'トピック/キーワード', - 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: '処理を停止', - pause: '処理を一時停止', - resume: '再開', - automatic: '自動', - custom: 'カスタム', - hierarchical: '親子チャンキング', - previewTip: '埋め込みが完了した後、段落のプレビューが利用可能になります', - parentMaxTokens: '親', - childMaxTokens: '子', - waiting: '埋め込み待機中...', - }, - segment: { - paragraphs: '段落', - chunks_one: 'チャンク', - chunks_other: 'チャンク', - parentChunks_one: '親チャンク', - parentChunks_other: '親チャンク', - childChunks_one: '子チャンク', - childChunks_other: '子チャンク', - searchResults_zero: '検索結果', - searchResults_one: '検索結果', - searchResults_other: '検索結果', - empty: 'チャンクが見つかりません', - clearFilter: 'フィルターをクリア', - chunk: 'チャンク', - parentChunk: '親チャンク', - newChunk: '新しいチャンク', - childChunk: '子チャンク', - newChildChunk: '新しい子チャンク', - keywords: 'キーワード', - addKeyWord: 'キーワードを追加', - keywordError: 'キーワードの最大長は 20 です', - characters_one: '文字', - characters_other: '文字', - hitCount: '検索回数', - vectorHash: 'ベクトルハッシュ:', - questionPlaceholder: 'ここに質問を追加', - questionEmpty: '質問は空にできません', - answerPlaceholder: 'ここに回答を追加', - answerEmpty: '回答は空にできません', - contentPlaceholder: 'ここに内容を追加', - contentEmpty: '内容は空にできません', - newTextSegment: '新しいテキストチャンク', - newQaSegment: '新しい Q&A チャンク', - addChunk: 'チャンクを追加', - addChildChunk: '子チャンクを追加', - addAnother: '続けて追加', - delete: 'このチャンクを削除しますか?', - chunkAdded: 'チャンクを追加しました', - childChunkAdded: '子チャンクを追加しました', - editChunk: 'チャンクを編集', - editParentChunk: '親チャンクを編集', - editChildChunk: '子チャンクを編集', - chunkDetail: 'チャンクの詳細', - regenerationConfirmTitle: '子チャンクを再生成しますか?', - regenerationConfirmMessage: '再生成された子チャンクは、編集済みまたは新規追加の子チャンクを含め、現在の子チャンクを上書きします。この操作は取り消せません。', - regeneratingTitle: '子チャンクを生成中', - regeneratingMessage: '子チャンクの生成には時間がかかります、しばらくお待ちください。', - regenerationSuccessTitle: '子チャンクの再生成が完了しました', - regenerationSuccessMessage: 'ウィンドウを閉じても大丈夫です', - edited: '編集済み', - editedAt: '編集日時', - dateTimeFormat: 'YYYY/MM/DD HH:mm', - expandChunks: 'チャンクを展開', - collapseChunks: 'チャンクを折りたたむ', - keywordDuplicate: 'そのキーワードは既に存在しています', - keywordEmpty: 'キーワードは空であってはいけません', - allFilesUploaded: '保存する前にすべてのファイルをアップロードする必要があります', - }, -} - -export default translation diff --git a/web/i18n/ja-JP/dataset-hit-testing.json b/web/i18n/ja-JP/dataset-hit-testing.json new file mode 100644 index 0000000000..c4cea7b38f --- /dev/null +++ b/web/i18n/ja-JP/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "検索テスト", + "desc": "与えられたクエリテキストに基づいたナレッジのヒット効果をテストします。", + "dateTimeFormat": "YYYY/MM/DD hh:mm A", + "records": "記録", + "table": { + "header": { + "source": "ソース", + "queryContent": "クエリ内容", + "time": "時間" + } + }, + "input": { + "title": "ソーステキスト", + "placeholder": "テキストを入力してください。短い記述文がおすすめです。", + "countWarning": "最大 200 文字まで入力できます。", + "indexWarning": "高品質のナレッジのみ。", + "testing": "テスト" + }, + "hit": { + "title": "取得したチャンク{{num}}個", + "emptyTip": "検索テストの結果がここに表示されます。" + }, + "noRecentTip": "最近のクエリ結果はありません。", + "viewChart": "ベクトルチャートを表示", + "settingTitle": "検索設定", + "viewDetail": "詳細を表示", + "chunkDetail": "チャンクの詳細", + "hitChunks": "{{num}}個の子チャンクをヒット", + "open": "開く", + "keyword": "キーワード", + "imageUploader": { + "tip": "画像をアップロードまたはドラッグ&ドロップしてください(最大 {{batchCount}} 件、各 {{size}}MB まで)", + "tooltip": "画像をアップロード(最大 {{batchCount}} 件、各 {{size}}MB まで)", + "dropZoneTip": "ファイルをここにドラッグしてアップロード", + "singleChunkAttachmentLimitTooltip": "単一チャンクの添付ファイルの数は {{limit}} を超えることはできません" + } +} diff --git a/web/i18n/ja-JP/dataset-hit-testing.ts b/web/i18n/ja-JP/dataset-hit-testing.ts deleted file mode 100644 index 4d2c34b186..0000000000 --- a/web/i18n/ja-JP/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - title: '検索テスト', - desc: '与えられたクエリテキストに基づいたナレッジのヒット効果をテストします。', - dateTimeFormat: 'YYYY/MM/DD hh:mm A', - records: '記録', - table: { - header: { - source: 'ソース', - queryContent: 'クエリ内容', - time: '時間', - }, - }, - input: { - title: 'ソーステキスト', - placeholder: 'テキストを入力してください。短い記述文がおすすめです。', - countWarning: '最大 200 文字まで入力できます。', - indexWarning: '高品質のナレッジのみ。', - testing: 'テスト', - }, - hit: { - title: '取得したチャンク{{num}}個', - emptyTip: '検索テストの結果がここに表示されます。', - }, - noRecentTip: '最近のクエリ結果はありません。', - viewChart: 'ベクトルチャートを表示', - settingTitle: '検索設定', - viewDetail: '詳細を表示', - chunkDetail: 'チャンクの詳細', - hitChunks: '{{num}}個の子チャンクをヒット', - open: '開く', - keyword: 'キーワード', - imageUploader: { - tip: '画像をアップロードまたはドラッグ&ドロップしてください(最大 {{batchCount}} 件、各 {{size}}MB まで)', - tooltip: '画像をアップロード(最大 {{batchCount}} 件、各 {{size}}MB まで)', - dropZoneTip: 'ファイルをここにドラッグしてアップロード', - singleChunkAttachmentLimitTooltip: '単一チャンクの添付ファイルの数は {{limit}} を超えることはできません', - }, -} - -export default translation diff --git a/web/i18n/ja-JP/dataset-pipeline.json b/web/i18n/ja-JP/dataset-pipeline.json new file mode 100644 index 0000000000..d181c32f5d --- /dev/null +++ b/web/i18n/ja-JP/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "createFromScratch": { + "title": "空白のナレッジパイプライン", + "description": "データ処理と構造を完全に制御できるカスタムパイプラインをゼロから作成します。" + }, + "backToKnowledge": "ナレッジベースに戻る", + "caution": "注意", + "importDSL": "DSLファイルからインポートする", + "errorTip": "ナレッジベースの作成に失敗しました", + "createKnowledge": "ナレッジベースを作成する", + "successTip": "ナレッジベースが正常に作成されました" + }, + "templates": { + "customized": "カスタマイズされた" + }, + "operations": { + "details": "詳細", + "convert": "変換する", + "choose": "選ぶ", + "preview": "プレビュー", + "dataSource": "データソース", + "editInfo": "情報を編集する", + "exportPipeline": "パイプラインをエクスポートする", + "saveAndProcess": "保存して処理する", + "backToDataSource": "データソースに戻る", + "useTemplate": "このナレッジパイプラインを使用してください", + "process": "プロセス" + }, + "deletePipeline": { + "content": "パイプラインテンプレートの削除は元に戻せません。", + "title": "このパイプラインテンプレートを削除してもよろしいですか?" + }, + "publishPipeline": { + "success": { + "message": "ナレッジパイプラインが公開されました", + "tip": "ドキュメントに移動して、ドキュメントを追加または管理してください。" + }, + "error": { + "message": "ナレッジパイプラインの公開に失敗しました" + } + }, + "publishTemplate": { + "success": { + "learnMore": "もっと学ぶ", + "tip": "このテンプレートは作成ページで使用できます。", + "message": "パイプラインテンプレートが公開されました" + }, + "error": { + "message": "パイプラインテンプレートの公開に失敗しました" + } + }, + "exportDSL": { + "successTip": "エクスポートパイプラインDSLが成功しました", + "errorTip": "パイプラインDSLのエクスポートに失敗しました" + }, + "details": { + "createdBy": "{{author}}により作成", + "structure": "構造", + "structureTooltip": "チャンク構造は、ドキュメントがどのように分割され、インデックスされるかを決定します。一般、親子、Q&Aモードを提供し、各ナレッジベースにユニークです。" + }, + "testRun": { + "steps": { + "documentProcessing": "ドキュメント処理", + "dataSource": "データソース" + }, + "dataSource": { + "localFiles": "ローカルファイル" + }, + "notion": { + "title": "Notionページを選択する", + "docTitle": "Notionドキュメント" + }, + "tooltip": "テスト実行モードでは、デバッグと観察を容易にするため、同時に1つのドキュメントのみをインポートすることが許可されています。", + "title": "テストラン" + }, + "inputFieldPanel": { + "uniqueInputs": { + "title": "各入口のユニークな入力", + "tooltip": "ユニークな入力は選択したデータソースとその下流ノードのみがアクセス可能です。他のデータソースを選択する際、ユーザーはこれを記入する必要がありません。データソース変数で参照される入力フィールドのみが最初のステップ(データソース)に表示され、他のフィールドは第二のステップ(ドキュメント処理)で表示されます。" + }, + "globalInputs": { + "title": "すべての入口に対するグローバル入力", + "tooltip": "グローバル入力はすべてのノードで共有されます。ユーザーは任意のデータソースを選択する際にこれらを入力する必要があります。区切り文字や最大チャンク長などのフィールドは複数のデータソースに一様に適用できます。データソース変数で参照される入力フィールドのみが最初のステップ(データソース)に表示され、他のフィールドは第二のステップ(ドキュメント処理)に表示されます。" + }, + "preview": { + "stepOneTitle": "データソース", + "stepTwoTitle": "ドキュメントを処理する" + }, + "error": { + "variableDuplicate": "変数名はすでに存在します。異なる名前を選択してください。" + }, + "title": "ユーザー入力フィールド", + "addInputField": "入力フィールドを追加する", + "editInputField": "入力フィールドを編集する", + "description": "ユーザー入力フィールドは、パイプライン実行プロセス中に必要な変数を定義および収集するために使用されます。ユーザーは、フィールドタイプをカスタマイズし、異なるデータソースやドキュメント処理ステップのニーズに応じて入力値を柔軟に構成できます。" + }, + "addDocuments": { + "title": "ドキュメントを追加する", + "steps": { + "chooseDatasource": "データソースを選択する", + "processDocuments": "ドキュメントを処理する", + "processingDocuments": "文書の処理" + }, + "backToDataSource": "データソース", + "stepOne": { + "preview": "プレビュー" + }, + "stepTwo": { + "chunkSettings": "チャンク設定", + "previewChunks": "プレビュー チャンク" + }, + "stepThree": { + "learnMore": "もっと学ぶ" + }, + "characters": "キャラクター", + "selectOnlineDocumentTip": "最大{{count}}ページまで処理", + "selectOnlineDriveTip": "最大{{count}}ファイルまで処理、各ファイル最大{{fileSize}}MB" + }, + "documentSettings": { + "title": "ドキュメント設定" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}}ページ" + }, + "onlineDrive": { + "notConnected": "{{name}}が接続されていません", + "notConnectedTip": "{{name}}と同期するには、まず{{name}}への接続を確立する必要があります。", + "breadcrumbs": { + "allBuckets": "すべてのクラウドストレージバケット", + "allFiles": "すべてのファイル", + "searchResult": "\"{{folderName}}\"フォルダ内で{{searchResultsLength}}件のアイテムを見つけました", + "searchPlaceholder": "ファイルを検索..." + }, + "notSupportedFileType": "このファイルタイプはサポートされていません", + "emptyFolder": "このフォルダーは空です", + "emptySearchResult": "アイテムは見つかりませんでした", + "resetKeywords": "キーワードをリセットする" + }, + "configurationTip": "{{pluginName}}を設定", + "conversion": { + "confirm": { + "title": "確認", + "content": "この操作は永久的です。以前の方法に戻すことはできません。変換することを確認してください。" + }, + "warning": "この操作は元に戻せません。", + "title": "ナレッジパイプラインに変換する", + "successMessage": "データセットをパイプラインに正常に変換しました", + "errorMessage": "データセットをパイプラインに変換できませんでした", + "descriptionChunk1": "既存のナレッジベースを文書処理のためにナレッジパイプラインを使用するように変換できます。", + "descriptionChunk2": "— よりオープンで柔軟なアプローチを採用し、私たちのマーケットプレイスからのプラグインへのアクセスを提供します。これにより、すべての将来のドキュメントに新しい処理方法が適用されることになります。" + }, + "knowledgeNameAndIcon": "ナレッジベースの名前とアイコン", + "inputField": "入力フィールド", + "pipelineNameAndIcon": "パイプライン名とアイコン", + "knowledgePermissions": "権限", + "knowledgeNameAndIconPlaceholder": "ナレッジベースの名前を入力してください", + "editPipelineInfo": "パイプライン情報を編集する", + "knowledgeDescription": "ナレッジベースの説明", + "knowledgeDescriptionPlaceholder": "このナレッジベースに何が含まれているかを説明してください。詳細な説明は、AIがデータセットの内容により正確にアクセスできるようにします。空の場合、Difyはデフォルトのヒット戦略を使用します。(オプション)" +} diff --git a/web/i18n/ja-JP/dataset-pipeline.ts b/web/i18n/ja-JP/dataset-pipeline.ts deleted file mode 100644 index 5091c17807..0000000000 --- a/web/i18n/ja-JP/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - createFromScratch: { - title: '空白のナレッジパイプライン', - description: 'データ処理と構造を完全に制御できるカスタムパイプラインをゼロから作成します。', - }, - backToKnowledge: 'ナレッジベースに戻る', - caution: '注意', - importDSL: 'DSLファイルからインポートする', - errorTip: 'ナレッジベースの作成に失敗しました', - createKnowledge: 'ナレッジベースを作成する', - successTip: 'ナレッジベースが正常に作成されました', - }, - templates: { - customized: 'カスタマイズされた', - }, - operations: { - details: '詳細', - convert: '変換する', - choose: '選ぶ', - preview: 'プレビュー', - dataSource: 'データソース', - editInfo: '情報を編集する', - exportPipeline: 'パイプラインをエクスポートする', - saveAndProcess: '保存して処理する', - backToDataSource: 'データソースに戻る', - useTemplate: 'このナレッジパイプラインを使用してください', - process: 'プロセス', - }, - deletePipeline: { - content: 'パイプラインテンプレートの削除は元に戻せません。', - title: 'このパイプラインテンプレートを削除してもよろしいですか?', - }, - publishPipeline: { - success: { - message: 'ナレッジパイプラインが公開されました', - tip: 'ドキュメントに移動して、ドキュメントを追加または管理してください。', - }, - error: { - message: 'ナレッジパイプラインの公開に失敗しました', - }, - }, - publishTemplate: { - success: { - learnMore: 'もっと学ぶ', - tip: 'このテンプレートは作成ページで使用できます。', - message: 'パイプラインテンプレートが公開されました', - }, - error: { - message: 'パイプラインテンプレートの公開に失敗しました', - }, - }, - exportDSL: { - successTip: 'エクスポートパイプラインDSLが成功しました', - errorTip: 'パイプラインDSLのエクスポートに失敗しました', - }, - details: { - createdBy: '{{author}}により作成', - structure: '構造', - structureTooltip: 'チャンク構造は、ドキュメントがどのように分割され、インデックスされるかを決定します。一般、親子、Q&Aモードを提供し、各ナレッジベースにユニークです。', - }, - testRun: { - steps: { - documentProcessing: 'ドキュメント処理', - dataSource: 'データソース', - }, - dataSource: { - localFiles: 'ローカルファイル', - }, - notion: { - title: 'Notionページを選択する', - docTitle: 'Notionドキュメント', - }, - tooltip: 'テスト実行モードでは、デバッグと観察を容易にするため、同時に1つのドキュメントのみをインポートすることが許可されています。', - title: 'テストラン', - }, - inputFieldPanel: { - uniqueInputs: { - title: '各入口のユニークな入力', - tooltip: 'ユニークな入力は選択したデータソースとその下流ノードのみがアクセス可能です。他のデータソースを選択する際、ユーザーはこれを記入する必要がありません。データソース変数で参照される入力フィールドのみが最初のステップ(データソース)に表示され、他のフィールドは第二のステップ(ドキュメント処理)で表示されます。', - }, - globalInputs: { - title: 'すべての入口に対するグローバル入力', - tooltip: 'グローバル入力はすべてのノードで共有されます。ユーザーは任意のデータソースを選択する際にこれらを入力する必要があります。区切り文字や最大チャンク長などのフィールドは複数のデータソースに一様に適用できます。データソース変数で参照される入力フィールドのみが最初のステップ(データソース)に表示され、他のフィールドは第二のステップ(ドキュメント処理)に表示されます。', - }, - preview: { - stepOneTitle: 'データソース', - stepTwoTitle: 'ドキュメントを処理する', - }, - error: { - variableDuplicate: '変数名はすでに存在します。異なる名前を選択してください。', - }, - title: 'ユーザー入力フィールド', - addInputField: '入力フィールドを追加する', - editInputField: '入力フィールドを編集する', - description: 'ユーザー入力フィールドは、パイプライン実行プロセス中に必要な変数を定義および収集するために使用されます。ユーザーは、フィールドタイプをカスタマイズし、異なるデータソースやドキュメント処理ステップのニーズに応じて入力値を柔軟に構成できます。', - }, - addDocuments: { - title: 'ドキュメントを追加する', - steps: { - chooseDatasource: 'データソースを選択する', - processDocuments: 'ドキュメントを処理する', - processingDocuments: '文書の処理', - }, - backToDataSource: 'データソース', - stepOne: { - preview: 'プレビュー', - }, - stepTwo: { - chunkSettings: 'チャンク設定', - previewChunks: 'プレビュー チャンク', - }, - stepThree: { - learnMore: 'もっと学ぶ', - }, - characters: 'キャラクター', - selectOnlineDocumentTip: '最大{{count}}ページまで処理', - selectOnlineDriveTip: '最大{{count}}ファイルまで処理、各ファイル最大{{fileSize}}MB', - }, - documentSettings: { - title: 'ドキュメント設定', - }, - onlineDocument: { - pageSelectorTitle: '{{name}}ページ', - }, - onlineDrive: { - notConnected: '{{name}}が接続されていません', - notConnectedTip: '{{name}}と同期するには、まず{{name}}への接続を確立する必要があります。', - breadcrumbs: { - allBuckets: 'すべてのクラウドストレージバケット', - allFiles: 'すべてのファイル', - searchResult: '"{{folderName}}"フォルダ内で{{searchResultsLength}}件のアイテムを見つけました', - searchPlaceholder: 'ファイルを検索...', - }, - notSupportedFileType: 'このファイルタイプはサポートされていません', - emptyFolder: 'このフォルダーは空です', - emptySearchResult: 'アイテムは見つかりませんでした', - resetKeywords: 'キーワードをリセットする', - }, - configurationTip: '{{pluginName}}を設定', - conversion: { - confirm: { - title: '確認', - content: 'この操作は永久的です。以前の方法に戻すことはできません。変換することを確認してください。', - }, - warning: 'この操作は元に戻せません。', - title: 'ナレッジパイプラインに変換する', - successMessage: 'データセットをパイプラインに正常に変換しました', - errorMessage: 'データセットをパイプラインに変換できませんでした', - descriptionChunk1: '既存のナレッジベースを文書処理のためにナレッジパイプラインを使用するように変換できます。', - descriptionChunk2: '— よりオープンで柔軟なアプローチを採用し、私たちのマーケットプレイスからのプラグインへのアクセスを提供します。これにより、すべての将来のドキュメントに新しい処理方法が適用されることになります。', - }, - knowledgeNameAndIcon: 'ナレッジベースの名前とアイコン', - inputField: '入力フィールド', - pipelineNameAndIcon: 'パイプライン名とアイコン', - knowledgePermissions: '権限', - knowledgeNameAndIconPlaceholder: 'ナレッジベースの名前を入力してください', - editPipelineInfo: 'パイプライン情報を編集する', - knowledgeDescription: 'ナレッジベースの説明', - knowledgeDescriptionPlaceholder: 'このナレッジベースに何が含まれているかを説明してください。詳細な説明は、AIがデータセットの内容により正確にアクセスできるようにします。空の場合、Difyはデフォルトのヒット戦略を使用します。(オプション)', -} - -export default translation diff --git a/web/i18n/ja-JP/dataset-settings.json b/web/i18n/ja-JP/dataset-settings.json new file mode 100644 index 0000000000..9ea59329aa --- /dev/null +++ b/web/i18n/ja-JP/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "ナレッジベースの設定", + "desc": "ここでこのナレッジベースのプロパティと検索設定を変更できます。", + "form": { + "name": "ナレッジベース名", + "namePlaceholder": "ナレッジベース名を入力してください", + "nameError": "名前は空にできません", + "desc": "ナレッジベースの説明", + "descInfo": "ナレッジベースの内容を概説するための明確なテキストの説明を書いてください。この説明は、複数のナレッジから推論を選択する際の基準として使用されます。", + "descPlaceholder": "このデータセットに含まれる内容を説明してください。詳細に記述するほど、AI がデータセットの内容にすばやくアクセスできます。空欄の場合、Dify はデフォルトのヒット戦略を使用します。", + "helpText": "適切なデータセットの説明を作成する方法を学びましょう。", + "descWrite": "良いナレッジベースの説明の書き方を学ぶ。", + "permissions": "権限", + "permissionsOnlyMe": "自分のみ", + "permissionsAllMember": "すべてのチームメンバー", + "permissionsInvitedMembers": "一部のチームメンバー", + "me": "(あなた)", + "indexMethod": "インデックス方法", + "indexMethodHighQuality": "高品質", + "indexMethodHighQualityTip": "より正確な検索のため、埋め込みモデルを呼び出してドキュメントを処理することで、LLM は高品質な回答を生成できます。", + "upgradeHighQualityTip": "高品質モードにアップグレードすると、経済的モードには戻せません。", + "indexMethodEconomy": "経済的", + "indexMethodEconomyTip": "各チャンクに対して {{count}} 個のキーワードで検索を行います。トークンは消費しませんが、検索精度は低下します。", + "embeddingModel": "埋め込みモデル", + "embeddingModelTip": "埋め込みモデルを変更するには、", + "embeddingModelTipLink": "設定", + "retrievalSetting": { + "title": "検索設定", + "method": "検索方法", + "learnMore": "詳細はこちら", + "description": "検索方法について。", + "longDescription": "検索方法について。ナレッジベースの設定でいつでも変更できます。", + "multiModalTip": "埋め込みモデルがマルチモーダルに対応している場合、より高い性能を得るためにマルチモーダル再ランキングモデルを選択してください。" + }, + "save": "保存", + "externalKnowledgeID": "外部ナレッジベース ID", + "retrievalSettings": "検索設定", + "externalKnowledgeAPI": "外部ナレッジベース API", + "indexMethodChangeToEconomyDisabledTip": "HQ から ECO へのダウングレードはできません。", + "searchModel": "検索モデル", + "chunkStructure": { + "learnMore": "詳細はこちら", + "description": "チャンク構造について。", + "title": "チャンク構造" + }, + "nameAndIcon": "名前とアイコン", + "numberOfKeywords": "キーワードの数", + "onSearchResults": "一致するメンバーが見つかりませんでした。もう一度検索してください。" + } +} diff --git a/web/i18n/ja-JP/dataset-settings.ts b/web/i18n/ja-JP/dataset-settings.ts deleted file mode 100644 index 2737ec9d02..0000000000 --- a/web/i18n/ja-JP/dataset-settings.ts +++ /dev/null @@ -1,52 +0,0 @@ -const translation = { - title: 'ナレッジベースの設定', - desc: 'ここでこのナレッジベースのプロパティと検索設定を変更できます。', - form: { - name: 'ナレッジベース名', - namePlaceholder: 'ナレッジベース名を入力してください', - nameError: '名前は空にできません', - desc: 'ナレッジベースの説明', - descInfo: 'ナレッジベースの内容を概説するための明確なテキストの説明を書いてください。この説明は、複数のナレッジから推論を選択する際の基準として使用されます。', - descPlaceholder: 'このデータセットに含まれる内容を説明してください。詳細に記述するほど、AI がデータセットの内容にすばやくアクセスできます。空欄の場合、Dify はデフォルトのヒット戦略を使用します。', - helpText: '適切なデータセットの説明を作成する方法を学びましょう。', - descWrite: '良いナレッジベースの説明の書き方を学ぶ。', - permissions: '権限', - permissionsOnlyMe: '自分のみ', - permissionsAllMember: 'すべてのチームメンバー', - permissionsInvitedMembers: '一部のチームメンバー', - me: '(あなた)', - indexMethod: 'インデックス方法', - indexMethodHighQuality: '高品質', - indexMethodHighQualityTip: 'より正確な検索のため、埋め込みモデルを呼び出してドキュメントを処理することで、LLM は高品質な回答を生成できます。', - upgradeHighQualityTip: '高品質モードにアップグレードすると、経済的モードには戻せません。', - indexMethodEconomy: '経済的', - indexMethodEconomyTip: '各チャンクに対して {{count}} 個のキーワードで検索を行います。トークンは消費しませんが、検索精度は低下します。', - embeddingModel: '埋め込みモデル', - embeddingModelTip: '埋め込みモデルを変更するには、', - embeddingModelTipLink: '設定', - retrievalSetting: { - title: '検索設定', - method: '検索方法', - learnMore: '詳細はこちら', - description: '検索方法について。', - longDescription: '検索方法について。ナレッジベースの設定でいつでも変更できます。', - multiModalTip: '埋め込みモデルがマルチモーダルに対応している場合、より高い性能を得るためにマルチモーダル再ランキングモデルを選択してください。', - }, - save: '保存', - externalKnowledgeID: '外部ナレッジベース ID', - retrievalSettings: '検索設定', - externalKnowledgeAPI: '外部ナレッジベース API', - indexMethodChangeToEconomyDisabledTip: 'HQ から ECO へのダウングレードはできません。', - searchModel: '検索モデル', - chunkStructure: { - learnMore: '詳細はこちら', - description: 'チャンク構造について。', - title: 'チャンク構造', - }, - nameAndIcon: '名前とアイコン', - numberOfKeywords: 'キーワードの数', - onSearchResults: '一致するメンバーが見つかりませんでした。もう一度検索してください。', - }, -} - -export default translation diff --git a/web/i18n/ja-JP/dataset.json b/web/i18n/ja-JP/dataset.json new file mode 100644 index 0000000000..fe2bee5cb6 --- /dev/null +++ b/web/i18n/ja-JP/dataset.json @@ -0,0 +1,249 @@ +{ + "knowledge": "ナレッジベース", + "chunkingMode": { + "general": "汎用", + "parentChild": "親子", + "qa": "Q&A", + "graph": "グラフ" + }, + "parentMode": { + "paragraph": "段落", + "fullDoc": "全体" + }, + "externalTag": "外部", + "externalAPI": "外部 API", + "externalAPIPanelTitle": "外部ナレッジベース連携 API", + "externalKnowledgeId": "外部ナレッジベース ID", + "externalKnowledgeName": "外部ナレッジベース名", + "externalKnowledgeDescription": "ナレッジベースの説明", + "externalKnowledgeIdPlaceholder": "ナレッジベース ID を入力", + "externalKnowledgeNamePlaceholder": "ナレッジベース名を入力", + "externalKnowledgeDescriptionPlaceholder": "このナレッジベースの説明(任意)", + "learnHowToWriteGoodKnowledgeDescription": "効果的なナレッジベースの説明の書き方", + "externalAPIPanelDescription": "外部ナレッジベース連携 API は、Dify 外のナレッジベースと連携し、そこからナレッジベースを取得するために使用します。", + "externalAPIPanelDocumentation": "外部ナレッジベース連携 API の作成方法", + "localDocs": "ローカルドキュメント", + "documentCount": " ドキュメント", + "docAllEnabled_one": "{{count}} 件のドキュメントが有効", + "docAllEnabled_other": "すべての {{count}} 件のドキュメントが有効", + "partialEnabled_one": "合計 {{count}} 件のドキュメント、{{num}} 件が利用可能", + "partialEnabled_other": "合計 {{count}} 件のドキュメント、{{num}} 件が利用可能", + "wordCount": " k 単語", + "appCount": " リンクされたアプリ", + "createDataset": "ナレッジベースを作成", + "createNewExternalAPI": "新しい外部ナレッジベース連携 API を作成", + "noExternalKnowledge": "外部ナレッジベース連携 API がありません。ここをクリックして作成してください", + "createExternalAPI": "外部ナレッジベース連携 API を追加", + "editExternalAPIFormTitle": "外部ナレッジベース連携 API を編集", + "editExternalAPITooltipTitle": "連携中のナレッジベース", + "editExternalAPIConfirmWarningContent": { + "front": "この外部ナレッジベース連携 API は", + "end": "件の外部ナレッジベースと連携しており、この変更はすべてに適用されます。変更を保存しますか?" + }, + "editExternalAPIFormWarning": { + "front": "この外部 API は", + "end": "件の外部ナレッジベースと連携しています" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "front": "削除", + "end": "しますか?" + }, + "content": { + "front": "この外部ナレッジベース連携 API は", + "end": "件の外部ナレッジベースと連携しています。この API を削除すると、すべて無効になります。この API を削除しますか?" + }, + "noConnectionContent": "この API を削除しますか?" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "外部ナレッジベース連携 API を選択" + }, + "connectDataset": "外部ナレッジベースと連携", + "connectDatasetIntro": { + "title": "外部ナレッジベースとの連携方法", + "content": { + "front": "外部ナレッジベースと連携するには、まず外部 API を作成する必要があります。以下の手順を参照し、", + "link": "外部 API の作成方法", + "end": "をご確認ください。次に、対応するナレッジベース ID を左側のフォームに入力してください。すべての情報が正しければ、連携ボタンをクリックすると、自動的にナレッジベースの検索テストに移動します。" + }, + "learnMore": "詳細はこちら" + }, + "connectHelper": { + "helper1": "API とナレッジベース ID を使って外部ナレッジベースと連携します。現在、", + "helper2": "検索機能のみがサポートされています。", + "helper3": "この機能を使用する前に、", + "helper4": "ヘルプドキュメント", + "helper5": "をよくお読みください。" + }, + "createDatasetIntro": "独自のテキストデータをインポートするか、LLM コンテキストの強化のために Webhook を介してリアルタイムでデータを書き込むことができます。", + "deleteDatasetConfirmTitle": "このナレッジベースを削除しますか?", + "deleteDatasetConfirmContent": "ナレッジベースを削除すると元に戻すことはできません。ユーザーはもはやあなたのナレッジベースにアクセスできず、すべてのプロンプトの設定とログが永久に削除されます。", + "datasetUsedByApp": "このナレッジベースは一部のアプリによって使用されています。アプリはこのナレッジベースを使用できなくなり、すべてのプロンプト設定とログは永久に削除されます。", + "datasetDeleted": "ナレッジベースが削除されました", + "datasetDeleteFailed": "ナレッジベースの削除に失敗しました", + "didYouKnow": "ご存知ですか?", + "intro1": "ナレッジベースは Dify アプリケーションに統合することができます", + "intro2": "コンテキストとして", + "intro3": "、", + "intro4": "または", + "intro5": "公開することができます", + "intro6": "独立したサービスとして", + "unavailable": "利用不可", + "datasets": "ナレッジベース", + "datasetsApi": "API アクセス", + "externalKnowledgeForm": { + "connect": "連携", + "cancel": "キャンセル" + }, + "externalAPIForm": { + "name": "名前", + "endpoint": "API エンドポイント", + "apiKey": "API キー", + "save": "保存", + "cancel": "キャンセル", + "edit": "編集", + "encrypted": { + "front": "API トークンは", + "end": "技術で暗号化され、安全に保存されます。" + } + }, + "retrieval": { + "semantic_search": { + "title": "ベクトル検索", + "description": "クエリの埋め込みを生成し、そのベクトル表現に最も類似したテキストチャンクを検索します。" + }, + "full_text_search": { + "title": "全文検索", + "description": "ドキュメント内のすべての用語をインデックス化し、ユーザーが任意の用語を検索してそれに関連するテキストチャンクを取得できるようにします。" + }, + "hybrid_search": { + "title": "ハイブリッド検索", + "description": "全文検索とベクトル検索を同時に実行し、ユーザーのクエリに最適なマッチを選択するために Rerank 付けを行います。Rerank モデル API の設定が必要です。", + "recommend": "推奨" + }, + "change": "変更", + "changeRetrievalMethod": "検索方法の変更", + "keyword_search": { + "title": "逆インデックス", + "description": "逆インデックスは効率的な検索のために使用される構造です。用語によって整理されており、各用語はそれを含む文書やウェブページを指し示します。" + } + }, + "docsFailedNotice": "ドキュメントのインデックス作成に失敗しました", + "retry": "再試行", + "documentsDisabled": "{{num}}件のドキュメントが無効 - 30 日以上非アクティブ", + "enable": "有効化", + "indexingTechnique": { + "high_quality": "高品質", + "economy": "経済" + }, + "indexingMethod": { + "semantic_search": "ベクトル検索", + "full_text_search": "フルテキスト検索", + "hybrid_search": "ハイブリッド検索", + "invertedIndex": "転置" + }, + "defaultRetrievalTip": "デフォルトでは、マルチパス検索が使用されます。複数のナレッジベースから情報を取得した後、再ランキングを行います。", + "mixtureHighQualityAndEconomicTip": "高品質なナレッジベースとコスト重視のナレッジベースを混在させるには、Rerank モデルが必要です。", + "inconsistentEmbeddingModelTip": "選択されたナレッジベースの埋め込みモデルに一貫性がない場合、Rerank モデルが必要です。", + "mixtureInternalAndExternalTip": "内部と外部のナレッジベースを混在させる場合、Rerank モデルが必要です。", + "allExternalTip": "外部ナレッジベースのみを使用する場合、Rerank モデルを有効にするかを選択できます。有効にしない場合、検索結果はスコアに基づいてソートされます。異なるナレッジベースで検索戦略が一貫していないと、結果が不正確になる可能性があります。", + "retrievalSettings": "検索設定", + "rerankSettings": "Rerank 設定", + "weightedScore": { + "title": "ウェイト設定", + "description": "重みを調整することで、並べ替え戦略はセマンティックマッチングとキーワードマッチングのどちらを優先するかを決定します。", + "semanticFirst": "セマンティック優先", + "keywordFirst": "キーワード優先", + "customized": "カスタマイズ", + "semantic": "セマンティクス", + "keyword": "キーワード" + }, + "nTo1RetrievalLegacy": "N-to-1 Retrieval は 9 月に正式に廃止される予定です。より良い結果のために最新のマルチパス検索の利用を推奨します。", + "nTo1RetrievalLegacyLink": "詳細はこちら", + "nTo1RetrievalLegacyLinkText": " N-to-1 Retrieval は 9 月に正式に廃止されます。", + "batchAction": { + "selected": "選択済み", + "enable": "有効にする", + "disable": "無効にする", + "archive": "アーカイブ", + "delete": "削除", + "cancel": "キャンセル" + }, + "preprocessDocument": "{{num}}件のドキュメントを前処理", + "allKnowledge": "ナレッジベース全体", + "allKnowledgeDescription": "このワークスペースにナレッジベース全体を表示する場合に選択します。ワークスペースのオーナーのみがすべてのナレッジベースを管理できます。", + "embeddingModelNotAvailable": "Embedding モデルを利用できません。", + "metadata": { + "metadata": "メタデータ", + "addMetadata": "メタデータを追加", + "chooseTime": "時間を選択", + "createMetadata": { + "title": "新規メタデータ", + "back": "戻る", + "type": "タイプ", + "name": "名称", + "namePlaceholder": "メタデータ名を入力" + }, + "checkName": { + "empty": "メタデータ名を入力してください", + "invalid": "メタデータ名は小文字、数字、アンダースコアのみを使用し、小文字で始める必要があります", + "tooLong": "メタデータ名は {{max}} 文字を超えることはできません" + }, + "batchEditMetadata": { + "editMetadata": "メタデータを編集", + "editDocumentsNum": "{{num}}件のドキュメントを編集", + "applyToAllSelectDocument": "選択したすべてのドキュメントに適用", + "applyToAllSelectDocumentTip": "上記の編集と新しいメタデータを選択したすべてのドキュメントに自動的に適用します。チェックしない場合、既にメタデータを持つドキュメントにのみ編集が適用されます。", + "multipleValue": "複数の値" + }, + "selectMetadata": { + "search": "メタデータを検索", + "newAction": "新規メタデータ", + "manageAction": "管理" + }, + "datasetMetadata": { + "description": "メタデータはドキュメントに関する情報で、ドキュメントの属性を説明するために使用されます。メタデータを活用することで、ドキュメントをより効率的に整理・管理できます。", + "addMetaData": "メタデータを追加", + "values": "{{num}}個の値", + "disabled": "無効", + "rename": "名前変更", + "name": "名称", + "namePlaceholder": "メタデータ名", + "builtIn": "組み込み", + "builtInDescription": "組み込みメタデータはシステムによって事前定義されたメタデータです。ここで組み込みメタデータの表示と管理ができます。", + "deleteTitle": "削除の確認", + "deleteContent": "メタデータ「{{name}}」を削除してもよろしいですか?" + }, + "documentMetadata": { + "metadataToolTip": "メタデータはドキュメントに関する情報で、ドキュメントの属性を説明するために使用されます。メタデータを活用することで、ドキュメントをより効率的に整理・管理できます。", + "startLabeling": "ラベリングを開始", + "documentInformation": "ドキュメント情報", + "technicalParameters": "技術パラメータ" + } + }, + "updated": "更新された", + "createFromPipeline": "知識パイプラインから作成する", + "externalKnowledgeBase": "外部知識ベース", + "serviceApi": { + "title": "サービスAPI", + "enabled": "サービス中", + "disabled": "無効", + "card": { + "title": "バックエンドサービスAPI", + "endpoint": "サービスAPIエンドポイント", + "apiKey": "APIキー", + "apiReference": "APIリファレンス" + } + }, + "cornerLabel": { + "unavailable": "利用不可", + "pipeline": "パイプライン" + }, + "multimodal": "マルチモーダル", + "imageUploader": { + "button": "ファイルまたはフォルダをドラッグアンドドロップ、または", + "browse": "閲覧", + "tip": "{{supportTypes}}(最大 {{batchCount}}、各 {{size}}MB)", + "fileSizeLimitExceeded": "ファイルサイズが {{size}}MB の制限を超えています" + } +} diff --git a/web/i18n/ja-JP/dataset.ts b/web/i18n/ja-JP/dataset.ts deleted file mode 100644 index b6c4e1d40c..0000000000 --- a/web/i18n/ja-JP/dataset.ts +++ /dev/null @@ -1,252 +0,0 @@ -const translation = { - knowledge: 'ナレッジベース', - chunkingMode: { - general: '汎用', - parentChild: '親子', - qa: 'Q&A', - graph: 'グラフ', - }, - parentMode: { - paragraph: '段落', - fullDoc: '全体', - }, - externalTag: '外部', - externalAPI: '外部 API', - externalAPIPanelTitle: '外部ナレッジベース連携 API', - externalKnowledgeId: '外部ナレッジベース ID', - externalKnowledgeName: '外部ナレッジベース名', - externalKnowledgeDescription: 'ナレッジベースの説明', - externalKnowledgeIdPlaceholder: 'ナレッジベース ID を入力', - externalKnowledgeNamePlaceholder: 'ナレッジベース名を入力', - externalKnowledgeDescriptionPlaceholder: 'このナレッジベースの説明(任意)', - learnHowToWriteGoodKnowledgeDescription: '効果的なナレッジベースの説明の書き方', - externalAPIPanelDescription: '外部ナレッジベース連携 API は、Dify 外のナレッジベースと連携し、そこからナレッジベースを取得するために使用します。', - externalAPIPanelDocumentation: '外部ナレッジベース連携 API の作成方法', - localDocs: 'ローカルドキュメント', - documentCount: ' ドキュメント', - docAllEnabled_one: '{{count}} 件のドキュメントが有効', - docAllEnabled_other: 'すべての {{count}} 件のドキュメントが有効', - partialEnabled_one: '合計 {{count}} 件のドキュメント、{{num}} 件が利用可能', - partialEnabled_other: '合計 {{count}} 件のドキュメント、{{num}} 件が利用可能', - wordCount: ' k 単語', - appCount: ' リンクされたアプリ', - createDataset: 'ナレッジベースを作成', - createNewExternalAPI: '新しい外部ナレッジベース連携 API を作成', - noExternalKnowledge: '外部ナレッジベース連携 API がありません。ここをクリックして作成してください', - createExternalAPI: '外部ナレッジベース連携 API を追加', - editExternalAPIFormTitle: '外部ナレッジベース連携 API を編集', - editExternalAPITooltipTitle: '連携中のナレッジベース', - editExternalAPIConfirmWarningContent: { - front: 'この外部ナレッジベース連携 API は', - end: '件の外部ナレッジベースと連携しており、この変更はすべてに適用されます。変更を保存しますか?', - }, - editExternalAPIFormWarning: { - front: 'この外部 API は', - end: '件の外部ナレッジベースと連携しています', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - front: '削除', - end: 'しますか?', - }, - content: { - front: 'この外部ナレッジベース連携 API は', - end: '件の外部ナレッジベースと連携しています。この API を削除すると、すべて無効になります。この API を削除しますか?', - }, - noConnectionContent: 'この API を削除しますか?', - }, - selectExternalKnowledgeAPI: { - placeholder: '外部ナレッジベース連携 API を選択', - }, - connectDataset: '外部ナレッジベースと連携', - connectDatasetIntro: { - title: '外部ナレッジベースとの連携方法', - content: { - front: '外部ナレッジベースと連携するには、まず外部 API を作成する必要があります。以下の手順を参照し、', - link: '外部 API の作成方法', - end: 'をご確認ください。次に、対応するナレッジベース ID を左側のフォームに入力してください。すべての情報が正しければ、連携ボタンをクリックすると、自動的にナレッジベースの検索テストに移動します。', - }, - learnMore: '詳細はこちら', - }, - connectHelper: { - helper1: 'API とナレッジベース ID を使って外部ナレッジベースと連携します。現在、', - helper2: '検索機能のみがサポートされています。', - helper3: 'この機能を使用する前に、', - helper4: 'ヘルプドキュメント', - helper5: 'をよくお読みください。', - }, - createDatasetIntro: '独自のテキストデータをインポートするか、LLM コンテキストの強化のために Webhook を介してリアルタイムでデータを書き込むことができます。', - deleteDatasetConfirmTitle: 'このナレッジベースを削除しますか?', - deleteDatasetConfirmContent: - 'ナレッジベースを削除すると元に戻すことはできません。ユーザーはもはやあなたのナレッジベースにアクセスできず、すべてのプロンプトの設定とログが永久に削除されます。', - datasetUsedByApp: 'このナレッジベースは一部のアプリによって使用されています。アプリはこのナレッジベースを使用できなくなり、すべてのプロンプト設定とログは永久に削除されます。', - datasetDeleted: 'ナレッジベースが削除されました', - datasetDeleteFailed: 'ナレッジベースの削除に失敗しました', - didYouKnow: 'ご存知ですか?', - intro1: 'ナレッジベースは Dify アプリケーションに統合することができます', - intro2: 'コンテキストとして', - intro3: '、', - intro4: 'または', - intro5: '公開することができます', - intro6: '独立したサービスとして', - unavailable: '利用不可', - datasets: 'ナレッジベース', - datasetsApi: 'API アクセス', - externalKnowledgeForm: { - connect: '連携', - cancel: 'キャンセル', - }, - externalAPIForm: { - name: '名前', - endpoint: 'API エンドポイント', - apiKey: 'API キー', - save: '保存', - cancel: 'キャンセル', - edit: '編集', - encrypted: { - front: 'API トークンは', - end: '技術で暗号化され、安全に保存されます。', - }, - }, - retrieval: { - semantic_search: { - title: 'ベクトル検索', - description: 'クエリの埋め込みを生成し、そのベクトル表現に最も類似したテキストチャンクを検索します。', - }, - full_text_search: { - title: '全文検索', - description: 'ドキュメント内のすべての用語をインデックス化し、ユーザーが任意の用語を検索してそれに関連するテキストチャンクを取得できるようにします。', - }, - hybrid_search: { - title: 'ハイブリッド検索', - description: '全文検索とベクトル検索を同時に実行し、ユーザーのクエリに最適なマッチを選択するために Rerank 付けを行います。Rerank モデル API の設定が必要です。', - recommend: '推奨', - }, - change: '変更', - changeRetrievalMethod: '検索方法の変更', - keyword_search: { - title: '逆インデックス', - description: '逆インデックスは効率的な検索のために使用される構造です。用語によって整理されており、各用語はそれを含む文書やウェブページを指し示します。', - }, - }, - docsFailedNotice: 'ドキュメントのインデックス作成に失敗しました', - retry: '再試行', - documentsDisabled: '{{num}}件のドキュメントが無効 - 30 日以上非アクティブ', - enable: '有効化', - indexingTechnique: { - high_quality: '高品質', - economy: '経済', - }, - indexingMethod: { - semantic_search: 'ベクトル検索', - full_text_search: 'フルテキスト検索', - hybrid_search: 'ハイブリッド検索', - invertedIndex: '転置', - }, - defaultRetrievalTip: 'デフォルトでは、マルチパス検索が使用されます。複数のナレッジベースから情報を取得した後、再ランキングを行います。', - mixtureHighQualityAndEconomicTip: '高品質なナレッジベースとコスト重視のナレッジベースを混在させるには、Rerank モデルが必要です。', - inconsistentEmbeddingModelTip: '選択されたナレッジベースの埋め込みモデルに一貫性がない場合、Rerank モデルが必要です。', - mixtureInternalAndExternalTip: '内部と外部のナレッジベースを混在させる場合、Rerank モデルが必要です。', - allExternalTip: '外部ナレッジベースのみを使用する場合、Rerank モデルを有効にするかを選択できます。有効にしない場合、検索結果はスコアに基づいてソートされます。異なるナレッジベースで検索戦略が一貫していないと、結果が不正確になる可能性があります。', - retrievalSettings: '検索設定', - rerankSettings: 'Rerank 設定', - weightedScore: { - title: 'ウェイト設定', - description: '重みを調整することで、並べ替え戦略はセマンティックマッチングとキーワードマッチングのどちらを優先するかを決定します。', - semanticFirst: 'セマンティック優先', - keywordFirst: 'キーワード優先', - customized: 'カスタマイズ', - semantic: 'セマンティクス', - keyword: 'キーワード', - }, - nTo1RetrievalLegacy: 'N-to-1 Retrieval は 9 月に正式に廃止される予定です。より良い結果のために最新のマルチパス検索の利用を推奨します。', - nTo1RetrievalLegacyLink: '詳細はこちら', - nTo1RetrievalLegacyLinkText: ' N-to-1 Retrieval は 9 月に正式に廃止されます。', - batchAction: { - selected: '選択済み', - enable: '有効にする', - disable: '無効にする', - archive: 'アーカイブ', - delete: '削除', - cancel: 'キャンセル', - }, - preprocessDocument: '{{num}}件のドキュメントを前処理', - allKnowledge: 'ナレッジベース全体', - allKnowledgeDescription: 'このワークスペースにナレッジベース全体を表示する場合に選択します。ワークスペースのオーナーのみがすべてのナレッジベースを管理できます。', - embeddingModelNotAvailable: 'Embedding モデルを利用できません。', - metadata: { - metadata: 'メタデータ', - addMetadata: 'メタデータを追加', - chooseTime: '時間を選択', - createMetadata: { - title: '新規メタデータ', - back: '戻る', - type: 'タイプ', - name: '名称', - namePlaceholder: 'メタデータ名を入力', - }, - checkName: { - empty: 'メタデータ名を入力してください', - invalid: 'メタデータ名は小文字、数字、アンダースコアのみを使用し、小文字で始める必要があります', - tooLong: 'メタデータ名は {{max}} 文字を超えることはできません', - }, - batchEditMetadata: { - editMetadata: 'メタデータを編集', - editDocumentsNum: '{{num}}件のドキュメントを編集', - applyToAllSelectDocument: '選択したすべてのドキュメントに適用', - applyToAllSelectDocumentTip: '上記の編集と新しいメタデータを選択したすべてのドキュメントに自動的に適用します。チェックしない場合、既にメタデータを持つドキュメントにのみ編集が適用されます。', - multipleValue: '複数の値', - }, - selectMetadata: { - search: 'メタデータを検索', - newAction: '新規メタデータ', - manageAction: '管理', - }, - datasetMetadata: { - description: 'メタデータはドキュメントに関する情報で、ドキュメントの属性を説明するために使用されます。メタデータを活用することで、ドキュメントをより効率的に整理・管理できます。', - addMetaData: 'メタデータを追加', - values: '{{num}}個の値', - disabled: '無効', - rename: '名前変更', - name: '名称', - namePlaceholder: 'メタデータ名', - builtIn: '組み込み', - builtInDescription: '組み込みメタデータはシステムによって事前定義されたメタデータです。ここで組み込みメタデータの表示と管理ができます。', - deleteTitle: '削除の確認', - deleteContent: 'メタデータ「{{name}}」を削除してもよろしいですか?', - }, - documentMetadata: { - metadataToolTip: 'メタデータはドキュメントに関する情報で、ドキュメントの属性を説明するために使用されます。メタデータを活用することで、ドキュメントをより効率的に整理・管理できます。', - startLabeling: 'ラベリングを開始', - documentInformation: 'ドキュメント情報', - technicalParameters: '技術パラメータ', - }, - }, - updated: '更新された', - createFromPipeline: '知識パイプラインから作成する', - externalKnowledgeBase: '外部知識ベース', - serviceApi: { - title: 'サービスAPI', - enabled: 'サービス中', - disabled: '無効', - card: { - title: 'バックエンドサービスAPI', - endpoint: 'サービスAPIエンドポイント', - apiKey: 'APIキー', - apiReference: 'APIリファレンス', - }, - }, - cornerLabel: { - unavailable: '利用不可', - pipeline: 'パイプライン', - }, - multimodal: 'マルチモーダル', - imageUploader: { - button: 'ファイルまたはフォルダをドラッグアンドドロップ、または', - browse: '閲覧', - tip: '{{supportTypes}}(最大 {{batchCount}}、各 {{size}}MB)', - fileSizeLimitExceeded: 'ファイルサイズが {{size}}MB の制限を超えています', - }, -} - -export default translation diff --git a/web/i18n/ja-JP/education.json b/web/i18n/ja-JP/education.json new file mode 100644 index 0000000000..b1105f75dd --- /dev/null +++ b/web/i18n/ja-JP/education.json @@ -0,0 +1,74 @@ +{ + "toVerified": "教育認証を取得", + "toVerifiedTip": { + "front": "現在、教育認証ステータスを取得する資格があります。以下に教育情報を入力し、認証プロセスを完了すると、Dify プロフェッショナルプランの", + "coupon": "100%割引クーポン", + "end": "を受け取ることができます。" + }, + "currentSigned": "現在ログイン中のアカウントは", + "form": { + "schoolName": { + "title": "学校名", + "placeholder": "学校の正式名称(省略不可)を入力してください。" + }, + "schoolRole": { + "title": "学校での役割", + "option": { + "student": "学生", + "teacher": "教師", + "administrator": "学校管理者" + } + }, + "terms": { + "title": "利用規約と同意事項", + "desc": { + "front": "お客様の情報および 教育認証ステータス の利用は、当社の ", + "and": "および", + "end": "に従うものとします。送信することで以下を確認します:", + "termsOfService": "利用規約", + "privacyPolicy": "プライバシーポリシー" + }, + "option": { + "age": "18 歳以上であることを確認します。", + "inSchool": "提供した教育機関に在籍または勤務している ことを確認します。Dify は在籍/雇用証明の提出を求める場合があります。不正な情報を申告した場合、教育認証に基づき免除された費用を支払うことに同意します。" + } + } + }, + "submit": "送信", + "submitError": "フォームの送信に失敗しました。しばらくしてから再度ご提出ください。", + "learn": "教育認証の取得方法はこちら", + "successTitle": "Dify 教育認証を取得しました!", + "successContent": "お客様のアカウントに Dify プロフェッショナルプランの 100% 割引クーポン を発行しました。有効期間は 1 年間 ですので、期限内にご利用ください。", + "rejectTitle": "Dify 教育認証が拒否されました", + "rejectContent": "申し訳ございませんが、このメールアドレスでは 教育認証 の資格を取得できず、Dify プロフェッショナルプランの 100%割引クーポン を受け取ることはできません。", + "emailLabel": "現在のメールアドレス", + "notice": { + "dateFormat": "YYYY/MM/DD", + "expired": { + "title": "あなたの教育認証は失効しました", + "summary": { + "line1": "Dify は引き続きご利用いただけますが、新しい教育割引クーポンの対象外となります。", + "line2": "" + } + }, + "isAboutToExpire": { + "title": "あなたの教育認証は {{date}} に有効期限を迎えます", + "summary": "ご安心ください。現在のサブスクリプションには影響ありません。ただし、再認証を行わない場合、次回の更新時に教育割引を受けることができません。" + }, + "stillInEducation": { + "title": "まだ在学中ですか?", + "expired": "今すぐ再認証して、次の学年度向けの教育クーポンを取得してください。クーポンはあなたのアカウントに追加され、次回のアップグレード時にご利用いただけます。", + "isAboutToExpire": "今すぐ再認証して、次の学年度向けの教育クーポンを取得してください。クーポンは個人のアカウントに保存され、次回の更新時に使用できます。" + }, + "alreadyGraduated": { + "title": "すでに卒業しましたか?", + "expired": "いつでもアップグレードして、すべての有料機能にアクセスすることができます。", + "isAboutToExpire": "今すぐ再認証して、次の学年度向けの教育クーポンを取得してください。クーポンはあなたのアカウントに追加され、次回のアップグレード時にご利用いただけます。" + }, + "action": { + "dismiss": "無視", + "upgrade": "アップグレード", + "reVerify": "再認証する" + } + } +} diff --git a/web/i18n/ja-JP/education.ts b/web/i18n/ja-JP/education.ts deleted file mode 100644 index a4c966c788..0000000000 --- a/web/i18n/ja-JP/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerified: '教育認証を取得', - toVerifiedTip: { - front: '現在、教育認証ステータスを取得する資格があります。以下に教育情報を入力し、認証プロセスを完了すると、Dify プロフェッショナルプランの', - coupon: '100%割引クーポン', - end: 'を受け取ることができます。', - }, - currentSigned: '現在ログイン中のアカウントは', - form: { - schoolName: { - title: '学校名', - placeholder: '学校の正式名称(省略不可)を入力してください。', - }, - schoolRole: { - title: '学校での役割', - option: { - student: '学生', - teacher: '教師', - administrator: '学校管理者', - }, - }, - terms: { - title: '利用規約と同意事項', - desc: { - front: 'お客様の情報および 教育認証ステータス の利用は、当社の ', - and: 'および', - end: 'に従うものとします。送信することで以下を確認します:', - termsOfService: '利用規約', - privacyPolicy: 'プライバシーポリシー', - }, - option: { - age: '18 歳以上であることを確認します。', - inSchool: '提供した教育機関に在籍または勤務している ことを確認します。Dify は在籍/雇用証明の提出を求める場合があります。不正な情報を申告した場合、教育認証に基づき免除された費用を支払うことに同意します。', - }, - }, - }, - submit: '送信', - submitError: 'フォームの送信に失敗しました。しばらくしてから再度ご提出ください。', - learn: '教育認証の取得方法はこちら', - successTitle: 'Dify 教育認証を取得しました!', - successContent: 'お客様のアカウントに Dify プロフェッショナルプランの 100% 割引クーポン を発行しました。有効期間は 1 年間 ですので、期限内にご利用ください。', - rejectTitle: 'Dify 教育認証が拒否されました', - rejectContent: '申し訳ございませんが、このメールアドレスでは 教育認証 の資格を取得できず、Dify プロフェッショナルプランの 100%割引クーポン を受け取ることはできません。', - emailLabel: '現在のメールアドレス', - notice: { - dateFormat: 'YYYY/MM/DD', - expired: { - title: 'あなたの教育認証は失効しました', - summary: { - line1: 'Dify は引き続きご利用いただけますが、新しい教育割引クーポンの対象外となります。', - line2: '', - }, - }, - isAboutToExpire: { - title: 'あなたの教育認証は {{date}} に有効期限を迎えます', - summary: 'ご安心ください。現在のサブスクリプションには影響ありません。ただし、再認証を行わない場合、次回の更新時に教育割引を受けることができません。', - }, - stillInEducation: { - title: 'まだ在学中ですか?', - expired: '今すぐ再認証して、次の学年度向けの教育クーポンを取得してください。クーポンはあなたのアカウントに追加され、次回のアップグレード時にご利用いただけます。', - isAboutToExpire: '今すぐ再認証して、次の学年度向けの教育クーポンを取得してください。クーポンは個人のアカウントに保存され、次回の更新時に使用できます。', - }, - alreadyGraduated: { - title: 'すでに卒業しましたか?', - expired: 'いつでもアップグレードして、すべての有料機能にアクセスすることができます。', - isAboutToExpire: '今すぐ再認証して、次の学年度向けの教育クーポンを取得してください。クーポンはあなたのアカウントに追加され、次回のアップグレード時にご利用いただけます。', - }, - action: { - dismiss: '無視', - upgrade: 'アップグレード', - reVerify: '再認証する', - }, - }, -} - -export default translation diff --git a/web/i18n/ja-JP/explore.json b/web/i18n/ja-JP/explore.json new file mode 100644 index 0000000000..d4cde37495 --- /dev/null +++ b/web/i18n/ja-JP/explore.json @@ -0,0 +1,42 @@ +{ + "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": "人事", + "Workflow": "ワークフロー", + "Agent": "エージェント", + "Entertainment": "エンターテイメント" + } +} diff --git a/web/i18n/ja-JP/explore.ts b/web/i18n/ja-JP/explore.ts deleted file mode 100644 index 09a0748f08..0000000000 --- a/web/i18n/ja-JP/explore.ts +++ /dev/null @@ -1,44 +0,0 @@ -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: '人事', - Workflow: 'ワークフロー', - Agent: 'エージェント', - Entertainment: 'エンターテイメント', - }, -} - -export default translation diff --git a/web/i18n/ja-JP/layout.json b/web/i18n/ja-JP/layout.json new file mode 100644 index 0000000000..75575f67d6 --- /dev/null +++ b/web/i18n/ja-JP/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "expandSidebar": "サイドバーを展開する", + "collapseSidebar": "サイドバーを折りたたむ" + } +} diff --git a/web/i18n/ja-JP/layout.ts b/web/i18n/ja-JP/layout.ts deleted file mode 100644 index a8757bd984..0000000000 --- a/web/i18n/ja-JP/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - expandSidebar: 'サイドバーを展開する', - collapseSidebar: 'サイドバーを折りたたむ', - }, -} - -export default translation diff --git a/web/i18n/ja-JP/login.json b/web/i18n/ja-JP/login.json new file mode 100644 index 0000000000..a878ff7876 --- /dev/null +++ b/web/i18n/ja-JP/login.json @@ -0,0 +1,125 @@ +{ + "pageTitle": "Dify にログイン", + "pageTitleForE": "はじめましょう!", + "welcome": "👋 ようこそ!まずはログインしてご利用ください。", + "email": "メールアドレス", + "emailPlaceholder": "メールアドレスを入力してください", + "password": "パスワード", + "passwordPlaceholder": "パスワードを入力してください", + "name": "ユーザー名", + "namePlaceholder": "ユーザー名を入力してください", + "forget": "パスワードをお忘れですか?", + "signBtn": "サインイン", + "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": "アカウントは既に初期化されています", + "forgotPassword": "パスワードを忘れましたか?", + "resetLinkSent": "リセットリンクが送信されました", + "sendResetLink": "リセットリンクを送信", + "backToSignIn": "サインインに戻る", + "forgotPasswordDesc": "パスワードをリセットするためにメールアドレスを入力してください。パスワードのリセット方法に関する指示が記載されたメールを送信します。", + "checkEmailForResetLink": "パスワードリセットリンクを確認するためにメールを確認してください。数分以内に表示されない場合は、スパムフォルダーを確認してください。", + "passwordChanged": "今すぐサインイン", + "changePassword": "パスワードを変更する", + "changePasswordTip": "アカウントの新しいパスワードを入力してください", + "invalidToken": "無効または期限切れのトークン", + "confirmPassword": "パスワードを確認", + "confirmPasswordPlaceholder": "新しいパスワードを確認してください", + "passwordChangedTip": "パスワードが正常に変更されました", + "error": { + "emailEmpty": "メールアドレスは必須です", + "emailInValid": "有効なメールアドレスを入力してください", + "nameEmpty": "名前は必須です", + "passwordEmpty": "パスワードは必須です", + "passwordLengthInValid": "パスワードは 8 文字以上でなければなりません", + "passwordInvalid": "パスワードは文字と数字を含み、長さは 8 以上である必要があります", + "registrationNotAllowed": "アカウントが見つかりません。登録するためにシステム管理者に連絡してください。", + "invalidEmailOrPassword": "無効なメールアドレスまたはパスワードです。", + "redirectUrlMissing": "リダイレクト URL が見つかりません" + }, + "license": { + "tip": "GitHub のオープンソースライセンスを確認してから、Dify Community Edition を開始してください。", + "link": "オープンソースライセンス" + }, + "join": "参加する", + "joinTipStart": "あなたを招待します", + "joinTipEnd": "チームに参加する", + "invalid": "リンクの有効期限が切れています", + "explore": "Dify を探索する", + "activatedTipStart": "あなたは", + "activatedTipEnd": "チームに参加しました", + "activated": "今すぐサインイン", + "adminInitPassword": "管理者初期化パスワード", + "validate": "検証", + "checkCode": { + "invalidCode": "無効なコード", + "verify": "確かめる", + "verificationCodePlaceholder": "6 桁のコードを入力してください", + "useAnotherMethod": "別の方法を使用する", + "didNotReceiveCode": "コードが届きませんか?", + "resend": "再送", + "verificationCode": "認証コード", + "validTime": "コードは 5 分間有効であることに注意してください", + "emptyCode": "コードが必要です", + "checkYourEmail": "メールをチェックしてください", + "tipsPrefix": "私たちは確認コードを送信します" + }, + "useVerificationCode": "確認コードを使用する", + "or": "又は", + "back": "戻る", + "resetPassword": "パスワードのリセット", + "changePasswordBtn": "パスワードを設定する", + "setYourAccount": "アカウントを設定する", + "withSSO": "SSO を続行する", + "noLoginMethod": "認証方法が構成されていません", + "backToLogin": "ログインに戻る", + "continueWithCode": "認証コードで続行", + "noLoginMethodTip": "システム管理者に連絡して、認証方法を追加してください。", + "usePassword": "パスワードを使用", + "sendVerificationCode": "確認コードの送信", + "enterYourName": "ユーザー名を入力してください", + "resetPasswordDesc": "Dify へのサインアップに使用したメールアドレスを入力すると、パスワードリセットメールが送信されます。", + "licenseLost": "ライセンスを失った", + "licenseExpiredTip": "ワークスペースの Dify Enterprise ライセンスの有効期限が切れています。Dify を引き続き使用するには、管理者に連絡してください。", + "licenseInactive": "ライセンスが非アクティブです", + "licenseInactiveTip": "ワークスペースの Dify Enterprise ライセンスが非アクティブです。Dify を引き続き使用するには、管理者に連絡してください。", + "licenseExpired": "ライセンスの有効期限が切れています", + "licenseLostTip": "Dify ライセンスサーバーへの接続に失敗しました。続けて Dify を使用するために管理者に連絡してください。", + "webapp": { + "login": "ログイン", + "noLoginMethod": "Web アプリに対して認証方法が構成されていません", + "noLoginMethodTip": "システム管理者に連絡して、認証方法を追加してください。", + "disabled": "Web アプリの認証が無効になっています。システム管理者に連絡して有効にしてください。直接アプリを使用してみてください。" + }, + "signup": { + "noAccount": "アカウントをお持ちでないですか?", + "signUp": "新規登録", + "createAccount": "アカウントを作成", + "welcome": "👋 ようこそ!ご利用を始めるために必要な情報をご入力ください。", + "verifyMail": "認証コードで続行", + "haveAccount": "すでにアカウントをお持ちですか?", + "signIn": "ログインはこちら" + } +} diff --git a/web/i18n/ja-JP/login.ts b/web/i18n/ja-JP/login.ts deleted file mode 100644 index c9e0fe3e1e..0000000000 --- a/web/i18n/ja-JP/login.ts +++ /dev/null @@ -1,127 +0,0 @@ -const translation = { - pageTitle: 'Dify にログイン', - pageTitleForE: 'はじめましょう!', - welcome: '👋 ようこそ!まずはログインしてご利用ください。', - email: 'メールアドレス', - emailPlaceholder: 'メールアドレスを入力してください', - password: 'パスワード', - passwordPlaceholder: 'パスワードを入力してください', - name: 'ユーザー名', - namePlaceholder: 'ユーザー名を入力してください', - forget: 'パスワードをお忘れですか?', - signBtn: 'サインイン', - 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: 'アカウントは既に初期化されています', - forgotPassword: 'パスワードを忘れましたか?', - resetLinkSent: 'リセットリンクが送信されました', - sendResetLink: 'リセットリンクを送信', - backToSignIn: 'サインインに戻る', - forgotPasswordDesc: 'パスワードをリセットするためにメールアドレスを入力してください。パスワードのリセット方法に関する指示が記載されたメールを送信します。', - checkEmailForResetLink: 'パスワードリセットリンクを確認するためにメールを確認してください。数分以内に表示されない場合は、スパムフォルダーを確認してください。', - passwordChanged: '今すぐサインイン', - changePassword: 'パスワードを変更する', - changePasswordTip: 'アカウントの新しいパスワードを入力してください', - invalidToken: '無効または期限切れのトークン', - confirmPassword: 'パスワードを確認', - confirmPasswordPlaceholder: '新しいパスワードを確認してください', - passwordChangedTip: 'パスワードが正常に変更されました', - error: { - emailEmpty: 'メールアドレスは必須です', - emailInValid: '有効なメールアドレスを入力してください', - nameEmpty: '名前は必須です', - passwordEmpty: 'パスワードは必須です', - passwordLengthInValid: 'パスワードは 8 文字以上でなければなりません', - passwordInvalid: 'パスワードは文字と数字を含み、長さは 8 以上である必要があります', - registrationNotAllowed: 'アカウントが見つかりません。登録するためにシステム管理者に連絡してください。', - invalidEmailOrPassword: '無効なメールアドレスまたはパスワードです。', - redirectUrlMissing: 'リダイレクト URL が見つかりません', - }, - license: { - tip: 'GitHub のオープンソースライセンスを確認してから、Dify Community Edition を開始してください。', - link: 'オープンソースライセンス', - }, - join: '参加する', - joinTipStart: 'あなたを招待します', - joinTipEnd: 'チームに参加する', - invalid: 'リンクの有効期限が切れています', - explore: 'Dify を探索する', - activatedTipStart: 'あなたは', - activatedTipEnd: 'チームに参加しました', - activated: '今すぐサインイン', - adminInitPassword: '管理者初期化パスワード', - validate: '検証', - checkCode: { - invalidCode: '無効なコード', - verify: '確かめる', - verificationCodePlaceholder: '6 桁のコードを入力してください', - useAnotherMethod: '別の方法を使用する', - didNotReceiveCode: 'コードが届きませんか?', - resend: '再送', - verificationCode: '認証コード', - validTime: 'コードは 5 分間有効であることに注意してください', - emptyCode: 'コードが必要です', - checkYourEmail: 'メールをチェックしてください', - tipsPrefix: '私たちは確認コードを送信します', - }, - useVerificationCode: '確認コードを使用する', - or: '又は', - back: '戻る', - resetPassword: 'パスワードのリセット', - changePasswordBtn: 'パスワードを設定する', - setYourAccount: 'アカウントを設定する', - withSSO: 'SSO を続行する', - noLoginMethod: '認証方法が構成されていません', - backToLogin: 'ログインに戻る', - continueWithCode: '認証コードで続行', - noLoginMethodTip: 'システム管理者に連絡して、認証方法を追加してください。', - usePassword: 'パスワードを使用', - sendVerificationCode: '確認コードの送信', - enterYourName: 'ユーザー名を入力してください', - resetPasswordDesc: 'Dify へのサインアップに使用したメールアドレスを入力すると、パスワードリセットメールが送信されます。', - licenseLost: 'ライセンスを失った', - licenseExpiredTip: 'ワークスペースの Dify Enterprise ライセンスの有効期限が切れています。Dify を引き続き使用するには、管理者に連絡してください。', - licenseInactive: 'ライセンスが非アクティブです', - licenseInactiveTip: 'ワークスペースの Dify Enterprise ライセンスが非アクティブです。Dify を引き続き使用するには、管理者に連絡してください。', - licenseExpired: 'ライセンスの有効期限が切れています', - licenseLostTip: 'Dify ライセンスサーバーへの接続に失敗しました。続けて Dify を使用するために管理者に連絡してください。', - webapp: { - login: 'ログイン', - noLoginMethod: 'Web アプリに対して認証方法が構成されていません', - noLoginMethodTip: 'システム管理者に連絡して、認証方法を追加してください。', - disabled: 'Web アプリの認証が無効になっています。システム管理者に連絡して有効にしてください。直接アプリを使用してみてください。', - }, - signup: { - noAccount: 'アカウントをお持ちでないですか?', - signUp: '新規登録', - createAccount: 'アカウントを作成', - welcome: '👋 ようこそ!ご利用を始めるために必要な情報をご入力ください。', - verifyMail: '認証コードで続行', - haveAccount: 'すでにアカウントをお持ちですか?', - signIn: 'ログインはこちら', - }, -} - -export default translation diff --git a/web/i18n/ja-JP/oauth.json b/web/i18n/ja-JP/oauth.json new file mode 100644 index 0000000000..885823a724 --- /dev/null +++ b/web/i18n/ja-JP/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "notLoggedIn": "このアプリはあなたのDify Cloudアカウントにアクセスしたいです", + "needLogin": "ログインして認証してください", + "loggedIn": "このアプリはあなたのDify Cloudアカウントから以下の情報にアクセスしたいと思っています。", + "common": "私たちはあなたのプライバシーを尊重し、この情報を私たちの開発者ツールによる体験を向上させるためにのみ使用します。" + }, + "scopes": { + "email": "メール", + "languagePreference": "言語の好み", + "timezone": "タイムゾーン", + "name": "名前", + "avatar": "アバター" + }, + "error": { + "authorizeFailed": "認証に失敗しました", + "invalidParams": "無効なパラメータ", + "authAppInfoFetchFailed": "認証のためのアプリ情報の取得に失敗しました" + }, + "unknownApp": "不明なアプリ", + "login": "ログイン", + "switchAccount": "アカウントを切り替える", + "continue": "続行", + "connect": "接続する" +} diff --git a/web/i18n/ja-JP/oauth.ts b/web/i18n/ja-JP/oauth.ts deleted file mode 100644 index 54322e1a48..0000000000 --- a/web/i18n/ja-JP/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - notLoggedIn: 'このアプリはあなたのDify Cloudアカウントにアクセスしたいです', - needLogin: 'ログインして認証してください', - loggedIn: 'このアプリはあなたのDify Cloudアカウントから以下の情報にアクセスしたいと思っています。', - common: '私たちはあなたのプライバシーを尊重し、この情報を私たちの開発者ツールによる体験を向上させるためにのみ使用します。', - }, - scopes: { - email: 'メール', - languagePreference: '言語の好み', - timezone: 'タイムゾーン', - name: '名前', - avatar: 'アバター', - }, - error: { - authorizeFailed: '認証に失敗しました', - invalidParams: '無効なパラメータ', - authAppInfoFetchFailed: '認証のためのアプリ情報の取得に失敗しました', - }, - unknownApp: '不明なアプリ', - login: 'ログイン', - switchAccount: 'アカウントを切り替える', - continue: '続行', - connect: '接続する', -} - -export default translation diff --git a/web/i18n/ja-JP/pipeline.json b/web/i18n/ja-JP/pipeline.json new file mode 100644 index 0000000000..b81e6d169b --- /dev/null +++ b/web/i18n/ja-JP/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "publishAsPipeline": { + "name": "パイプライン名とアイコン", + "description": "知識の説明", + "namePlaceholder": "この知識パイプラインの名前を入力してください。(必須)", + "descriptionPlaceholder": "このナレッジパイプラインの説明を入力してください。(任意)" + }, + "testRun": "テストラン", + "reRun": "再実行", + "processing": "処理中", + "confirmPublish": "公開を確認する", + "preparingDataSource": "データソースを準備中", + "goToAddDocuments": "ドキュメントを追加するために行く", + "publishAs": "知識パイプラインとして公開する", + "confirmPublishContent": "知識パイプラインを正常に公開した後、この知識ベースのチャンク構造は変更できません。本当に公開してもよろしいですか?" + }, + "inputField": { + "manage": "管理する", + "create": "ユーザー入力フィールドを作成する" + }, + "publishToast": { + "title": "このパイプラインはまだ公開されていません", + "desc": "パイプラインが公開されていない場合、ナレッジベースノードのチャンク構造を変更することができ、パイプラインオーケストレーションと変更は自動的にドラフトとして保存されます。" + }, + "result": { + "resultPreview": { + "loading": "処理中です...お待ちください", + "error": "実行中にエラーが発生しました", + "viewDetails": "詳細を見る", + "footerTip": "テスト実行モードでは、最大{{count}}チャンクまでプレビュー" + } + }, + "ragToolSuggestions": { + "title": "RAGのための提案", + "noRecommendationPlugins": "推奨プラグインがありません。マーケットプレイスで詳細をご確認ください" + } +} diff --git a/web/i18n/ja-JP/pipeline.ts b/web/i18n/ja-JP/pipeline.ts deleted file mode 100644 index 9ec1b68273..0000000000 --- a/web/i18n/ja-JP/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - publishAsPipeline: { - name: 'パイプライン名とアイコン', - description: '知識の説明', - namePlaceholder: 'この知識パイプラインの名前を入力してください。(必須)', - descriptionPlaceholder: 'このナレッジパイプラインの説明を入力してください。(任意)', - }, - testRun: 'テストラン', - reRun: '再実行', - processing: '処理中', - confirmPublish: '公開を確認する', - preparingDataSource: 'データソースを準備中', - goToAddDocuments: 'ドキュメントを追加するために行く', - publishAs: '知識パイプラインとして公開する', - confirmPublishContent: '知識パイプラインを正常に公開した後、この知識ベースのチャンク構造は変更できません。本当に公開してもよろしいですか?', - }, - inputField: { - manage: '管理する', - create: 'ユーザー入力フィールドを作成する', - }, - publishToast: { - title: 'このパイプラインはまだ公開されていません', - desc: 'パイプラインが公開されていない場合、ナレッジベースノードのチャンク構造を変更することができ、パイプラインオーケストレーションと変更は自動的にドラフトとして保存されます。', - }, - result: { - resultPreview: { - loading: '処理中です...お待ちください', - error: '実行中にエラーが発生しました', - viewDetails: '詳細を見る', - footerTip: 'テスト実行モードでは、最大{{count}}チャンクまでプレビュー', - }, - }, - ragToolSuggestions: { - title: 'RAGのための提案', - noRecommendationPlugins: '推奨プラグインがありません。マーケットプレイスで詳細をご確認ください', - }, -} - -export default translation diff --git a/web/i18n/ja-JP/plugin-tags.json b/web/i18n/ja-JP/plugin-tags.json new file mode 100644 index 0000000000..8b53bcc74f --- /dev/null +++ b/web/i18n/ja-JP/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "tags": { + "utilities": "ユーティリティ", + "weather": "天気", + "education": "教育", + "design": "デザイン", + "videos": "ビデオ", + "search": "検索", + "finance": "金融", + "productivity": "生産性", + "image": "画像", + "entertainment": "エンターテインメント", + "medical": "医療", + "social": "社会", + "news": "ニュース", + "other": "他", + "agent": "エージェント", + "rag": "RAG", + "business": "ビジネス", + "travel": "旅行" + }, + "searchTags": "検索タグ", + "allTags": "すべてのタグ" +} diff --git a/web/i18n/ja-JP/plugin-tags.ts b/web/i18n/ja-JP/plugin-tags.ts deleted file mode 100644 index 5a194790b1..0000000000 --- a/web/i18n/ja-JP/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - tags: { - utilities: 'ユーティリティ', - weather: '天気', - education: '教育', - design: 'デザイン', - videos: 'ビデオ', - search: '検索', - finance: '金融', - productivity: '生産性', - image: '画像', - entertainment: 'エンターテインメント', - medical: '医療', - social: '社会', - news: 'ニュース', - other: '他', - agent: 'エージェント', - rag: 'RAG', - business: 'ビジネス', - travel: '旅行', - }, - searchTags: '検索タグ', - allTags: 'すべてのタグ', -} - -export default translation diff --git a/web/i18n/ja-JP/plugin-trigger.json b/web/i18n/ja-JP/plugin-trigger.json new file mode 100644 index 0000000000..7ea6f3cb7c --- /dev/null +++ b/web/i18n/ja-JP/plugin-trigger.json @@ -0,0 +1,188 @@ +{ + "subscription": { + "title": "サブスクリプション", + "listNum": "{{num}} サブスクリプション", + "empty": { + "title": "サブスクリプションがありません", + "button": "新しいサブスクリプション" + }, + "createButton": { + "oauth": "OAuth で新しいサブスクリプション", + "apiKey": "API キーで新しいサブスクリプション", + "manual": "URL を貼り付けて新しいサブスクリプションを作成" + }, + "list": { + "title": "サブスクリプション", + "addButton": "追加", + "tip": "サブスクリプション経由でイベントを受信", + "item": { + "enabled": "有効", + "disabled": "無効", + "credentialType": { + "api_key": "API キー", + "oauth2": "OAuth", + "unauthorized": "手動" + }, + "actions": { + "delete": "削除", + "deleteConfirm": { + "title": "サブスクリプションを削除", + "content": "「{{name}}」を削除してもよろしいですか?", + "contentWithApps": "このサブスクリプションは {{count}} 個のアプリで使用されています。「{{name}}」を削除してもよろしいですか?", + "confirm": "削除", + "cancel": "キャンセル", + "confirmInputWarning": "確認するために正しい名前を入力してください。", + "success": "サブスクリプション {{name}} は正常に削除されました", + "error": "サブスクリプション {{name}} の削除に失敗しました", + "confirmInputPlaceholder": "確認するには「{{name}}」と入力してください。", + "confirmInputTip": "確認のため「{{name}}」を入力してください。" + } + }, + "status": { + "active": "アクティブ", + "inactive": "非アクティブ" + }, + "usedByNum": "{{num}} ワークフローで使用中", + "noUsed": "ワークフローで使用されていません" + } + }, + "addType": { + "title": "サブスクリプションを追加", + "description": "トリガーサブスクリプションの作成方法を選択してください", + "options": { + "oauth": { + "title": "OAuth 経由", + "description": "サードパーティプラットフォームで認証してサブスクリプションを作成", + "custom": "カスタム", + "default": "デフォルト", + "clientSettings": "OAuthクライアント設定", + "clientTitle": "OAuth クライアント" + }, + "manual": { + "title": "手動設定", + "description": "URL を貼り付けて新しいサブスクリプションを作成", + "tip": "サードパーティプラットフォームで URL を手動設定" + }, + "apikey": { + "title": "APIキーで作成", + "description": "API資格情報を使用してサブスクリプションを自動的に作成する" + } + } + }, + "subscriptionRemoved": "サブスクリプションが解除されました", + "createSuccess": "サブスクリプションが正常に作成されました", + "noSubscriptionSelected": "サブスクリプションが選択されていません", + "selectPlaceholder": "サブスクリプションを選択", + "createFailed": "サブスクリプションの作成に失敗しました", + "maxCount": "最大 {{num}} 件のサブスクリプション" + }, + "modal": { + "steps": { + "verify": "検証", + "configuration": "設定" + }, + "common": { + "cancel": "キャンセル", + "back": "戻る", + "next": "次へ", + "create": "作成", + "verify": "検証", + "authorize": "認証", + "creating": "作成中...", + "verifying": "検証中...", + "authorizing": "認証中..." + }, + "oauthRedirectInfo": "このツールプロバイダーのシステムクライアントシークレットが見つからないため、手動設定が必要です。redirect_uri には以下を使用してください", + "apiKey": { + "title": "API キーで作成", + "verify": { + "title": "認証情報を検証", + "description": "アクセスを検証するために API 認証情報を提供してください", + "error": "認証情報の検証に失敗しました。API キーをご確認ください。", + "success": "認証情報が正常に検証されました" + }, + "configuration": { + "title": "サブスクリプションを設定", + "description": "サブスクリプションパラメータを設定" + } + }, + "oauth": { + "title": "OAuth で作成", + "authorization": { + "title": "OAuth 認証", + "description": "Dify があなたのアカウントにアクセスすることを認証", + "redirectUrl": "リダイレクト URL", + "redirectUrlHelp": "OAuth アプリ設定でこの URL を使用", + "authorizeButton": "{{provider}} で認証", + "waitingAuth": "認証を待機中...", + "authSuccess": "認証が成功しました", + "authFailed": "認証に失敗しました", + "waitingJump": "承認済み、ジャンプ待機中" + }, + "configuration": { + "title": "サブスクリプションを設定", + "description": "認証後にサブスクリプションパラメータを設定", + "success": "OAuth設定が成功しました", + "failed": "OAuthの設定に失敗しました" + }, + "remove": { + "success": "OAuthの削除に成功しました", + "failed": "OAuthの削除に失敗しました" + }, + "save": { + "success": "OAuth の設定が正常に保存されました" + } + }, + "manual": { + "title": "手動設定", + "description": "Webhook サブスクリプションを手動で設定", + "instruction": {}, + "logs": { + "title": "リクエストログ", + "status": {}, + "request": "リクエスト", + "loading": "{{pluginName}}からのリクエストを待っています..." + } + }, + "form": { + "subscriptionName": { + "label": "サブスクリプション名", + "placeholder": "サブスクリプション名を入力", + "required": "サブスクリプション名は必須です" + }, + "callbackUrl": { + "label": "コールバック URL", + "description": "この URL で Webhook イベントを受信します", + "placeholder": "生成中...", + "privateAddressWarning": "このURLは内部アドレスのようです。Webhookリクエストが失敗する可能性があります。TRIGGER_URL を公開アドレスに変更できます。", + "tooltip": "トリガープロバイダーからのコールバックリクエストを受信できる、公開アクセス可能なエンドポイントを提供してください。" + } + }, + "errors": { + "createFailed": "サブスクリプションの作成に失敗しました", + "verifyFailed": "認証情報の検証に失敗しました", + "authFailed": "認証に失敗しました", + "networkError": "ネットワークエラーです。再試行してください", + "updateFailed": "サブスクリプションの更新に失敗しました" + } + }, + "events": { + "title": "利用可能なイベント", + "description": "このトリガープラグインがサブスクライブできるイベント", + "empty": "利用可能なイベントがありません", + "event": "イベント", + "events": "イベント", + "actionNum": "{{num}} {{event}} が含まれています", + "item": { + "parameters": "{{count}} パラメータ", + "noParameters": "パラメータなし" + }, + "output": "出力" + }, + "provider": {}, + "node": { + "status": { + "warning": "切断" + } + } +} diff --git a/web/i18n/ja-JP/plugin-trigger.ts b/web/i18n/ja-JP/plugin-trigger.ts deleted file mode 100644 index 7dbd861909..0000000000 --- a/web/i18n/ja-JP/plugin-trigger.ts +++ /dev/null @@ -1,193 +0,0 @@ -const translation = { - subscription: { - title: 'サブスクリプション', - listNum: '{{num}} サブスクリプション', - empty: { - title: 'サブスクリプションがありません', - button: '新しいサブスクリプション', - }, - createButton: { - oauth: 'OAuth で新しいサブスクリプション', - apiKey: 'API キーで新しいサブスクリプション', - manual: 'URL を貼り付けて新しいサブスクリプションを作成', - }, - list: { - title: 'サブスクリプション', - addButton: '追加', - tip: 'サブスクリプション経由でイベントを受信', - item: { - enabled: '有効', - disabled: '無効', - credentialType: { - api_key: 'API キー', - oauth2: 'OAuth', - unauthorized: '手動', - }, - actions: { - delete: '削除', - deleteConfirm: { - title: 'サブスクリプションを削除', - content: '「{{name}}」を削除してもよろしいですか?', - contentWithApps: 'このサブスクリプションは {{count}} 個のアプリで使用されています。「{{name}}」を削除してもよろしいですか?', - confirm: '削除', - cancel: 'キャンセル', - confirmInputWarning: '確認するために正しい名前を入力してください。', - success: 'サブスクリプション {{name}} は正常に削除されました', - error: 'サブスクリプション {{name}} の削除に失敗しました', - confirmInputPlaceholder: '確認するには「{{name}}」と入力してください。', - confirmInputTip: '確認のため「{{name}}」を入力してください。', - }, - }, - status: { - active: 'アクティブ', - inactive: '非アクティブ', - }, - usedByNum: '{{num}} ワークフローで使用中', - noUsed: 'ワークフローで使用されていません', - }, - }, - addType: { - title: 'サブスクリプションを追加', - description: 'トリガーサブスクリプションの作成方法を選択してください', - options: { - oauth: { - title: 'OAuth 経由', - description: 'サードパーティプラットフォームで認証してサブスクリプションを作成', - custom: 'カスタム', - default: 'デフォルト', - clientSettings: 'OAuthクライアント設定', - clientTitle: 'OAuth クライアント', - }, - manual: { - title: '手動設定', - description: 'URL を貼り付けて新しいサブスクリプションを作成', - tip: 'サードパーティプラットフォームで URL を手動設定', - }, - apikey: { - title: 'APIキーで作成', - description: 'API資格情報を使用してサブスクリプションを自動的に作成する', - }, - }, - }, - subscriptionRemoved: 'サブスクリプションが解除されました', - createSuccess: 'サブスクリプションが正常に作成されました', - noSubscriptionSelected: 'サブスクリプションが選択されていません', - selectPlaceholder: 'サブスクリプションを選択', - createFailed: 'サブスクリプションの作成に失敗しました', - maxCount: '最大 {{num}} 件のサブスクリプション', - }, - modal: { - steps: { - verify: '検証', - configuration: '設定', - }, - common: { - cancel: 'キャンセル', - back: '戻る', - next: '次へ', - create: '作成', - verify: '検証', - authorize: '認証', - creating: '作成中...', - verifying: '検証中...', - authorizing: '認証中...', - }, - oauthRedirectInfo: 'このツールプロバイダーのシステムクライアントシークレットが見つからないため、手動設定が必要です。redirect_uri には以下を使用してください', - apiKey: { - title: 'API キーで作成', - verify: { - title: '認証情報を検証', - description: 'アクセスを検証するために API 認証情報を提供してください', - error: '認証情報の検証に失敗しました。API キーをご確認ください。', - success: '認証情報が正常に検証されました', - }, - configuration: { - title: 'サブスクリプションを設定', - description: 'サブスクリプションパラメータを設定', - }, - }, - oauth: { - title: 'OAuth で作成', - authorization: { - title: 'OAuth 認証', - description: 'Dify があなたのアカウントにアクセスすることを認証', - redirectUrl: 'リダイレクト URL', - redirectUrlHelp: 'OAuth アプリ設定でこの URL を使用', - authorizeButton: '{{provider}} で認証', - waitingAuth: '認証を待機中...', - authSuccess: '認証が成功しました', - authFailed: '認証に失敗しました', - waitingJump: '承認済み、ジャンプ待機中', - }, - configuration: { - title: 'サブスクリプションを設定', - description: '認証後にサブスクリプションパラメータを設定', - success: 'OAuth設定が成功しました', - failed: 'OAuthの設定に失敗しました', - }, - remove: { - success: 'OAuthの削除に成功しました', - failed: 'OAuthの削除に失敗しました', - }, - save: { - success: 'OAuth の設定が正常に保存されました', - }, - }, - manual: { - title: '手動設定', - description: 'Webhook サブスクリプションを手動で設定', - instruction: { - }, - logs: { - title: 'リクエストログ', - status: { - }, - request: 'リクエスト', - loading: '{{pluginName}}からのリクエストを待っています...', - }, - }, - form: { - subscriptionName: { - label: 'サブスクリプション名', - placeholder: 'サブスクリプション名を入力', - required: 'サブスクリプション名は必須です', - }, - callbackUrl: { - label: 'コールバック URL', - description: 'この URL で Webhook イベントを受信します', - placeholder: '生成中...', - privateAddressWarning: 'このURLは内部アドレスのようです。Webhookリクエストが失敗する可能性があります。TRIGGER_URL を公開アドレスに変更できます。', - tooltip: 'トリガープロバイダーからのコールバックリクエストを受信できる、公開アクセス可能なエンドポイントを提供してください。', - }, - }, - errors: { - createFailed: 'サブスクリプションの作成に失敗しました', - verifyFailed: '認証情報の検証に失敗しました', - authFailed: '認証に失敗しました', - networkError: 'ネットワークエラーです。再試行してください', - updateFailed: 'サブスクリプションの更新に失敗しました', - }, - }, - events: { - title: '利用可能なイベント', - description: 'このトリガープラグインがサブスクライブできるイベント', - empty: '利用可能なイベントがありません', - event: 'イベント', - events: 'イベント', - actionNum: '{{num}} {{event}} が含まれています', - item: { - parameters: '{{count}} パラメータ', - noParameters: 'パラメータなし', - }, - output: '出力', - }, - provider: { - }, - node: { - status: { - warning: '切断', - }, - }, -} - -export default translation diff --git a/web/i18n/ja-JP/plugin.json b/web/i18n/ja-JP/plugin.json new file mode 100644 index 0000000000..7f6aca15e3 --- /dev/null +++ b/web/i18n/ja-JP/plugin.json @@ -0,0 +1,323 @@ +{ + "category": { + "extensions": "拡張機能", + "all": "すべて", + "tools": "ツール", + "bundles": "バンドル", + "agents": "エージェント戦略", + "models": "モデル", + "datasources": "データソース", + "triggers": "トリガー" + }, + "categorySingle": { + "agent": "エージェント戦略", + "model": "モデル", + "bundle": "バンドル", + "tool": "ツール", + "extension": "拡張", + "datasource": "データソース", + "trigger": "トリガー" + }, + "list": { + "source": { + "local": "ローカルパッケージファイルからインストール", + "github": "GitHub からインストールする", + "marketplace": "マーケットプレイスからインストール" + }, + "noInstalled": "プラグインはインストールされていません", + "notFound": "プラグインが見つかりません" + }, + "source": { + "github": "GitHub", + "local": "ローカルパッケージファイル", + "marketplace": "マーケットプレイス" + }, + "detailPanel": { + "categoryTip": { + "marketplace": "マーケットプレイスからインストールされました", + "local": "ローカルプラグイン", + "debugging": "デバッグプラグイン", + "github": "Github からインストールしました" + }, + "operation": { + "info": "プラグイン情報", + "install": "インストール", + "viewDetail": "詳細を見る", + "checkUpdate": "更新を確認する", + "update": "更新", + "detail": "詳細", + "remove": "削除", + "back": "戻る" + }, + "toolSelector": { + "descriptionPlaceholder": "ツールの目的の簡単な説明、例えば、特定の場所の温度を取得すること。", + "paramsTip2": "「自動」がオフのとき、デフォルト値が使用されます。", + "settings": "ユーザー設定", + "unsupportedContent2": "バージョンを切り替えるにはクリックしてください。", + "unsupportedContent": "インストールされたプラグインのバージョンは、このアクションを提供していません。", + "title": "ツールを追加", + "uninstalledContent": "このプラグインはローカル/GitHub リポジトリからインストールされます。インストール後にご利用ください。", + "descriptionLabel": "ツールの説明", + "auto": "自動", + "params": "推論設定", + "uninstalledLink": "プラグインを管理する", + "placeholder": "ツールを選択...", + "uninstalledTitle": "ツールがインストールされていません", + "empty": "ツールを追加するには「+」ボタンをクリックしてください。複数のツールを追加できます。", + "paramsTip1": "LLM 推論パラメータを制御します。", + "toolLabel": "ツール", + "unsupportedTitle": "サポートされていないアクション", + "toolSetting": "ツール設定", + "unsupportedMCPTool": "現在選択されているエージェント戦略プラグインのバージョンはMCPツールをサポートしていません。" + }, + "endpointDisableTip": "エンドポイントを無効にする", + "endpointModalDesc": "設定が完了すると、API エンドポイントを介してプラグインが提供する機能を使用できます。", + "endpointDisableContent": "{{name}}を無効にしますか?", + "endpointModalTitle": "エンドポイントを設定する", + "endpointDeleteTip": "エンドポイントを削除", + "modelNum": "{{num}} モデルが含まれています", + "serviceOk": "サービスは正常です", + "disabled": "サービスは無効化されています", + "endpoints": "エンドポイント", + "endpointsTip": "このプラグインはエンドポイントを介して特定の機能を提供し、現在のワークスペースのために複数のエンドポイントセットを構成できます。", + "configureModel": "モデルを設定する", + "configureTool": "ツールを設定する", + "endpointsEmpty": "エンドポイントを追加するには、'+'ボタンをクリックしてください", + "strategyNum": "{{num}} {{strategy}} が含まれています", + "configureApp": "アプリを設定する", + "endpointDeleteContent": "{{name}}を削除しますか?", + "actionNum": "{{num}} {{action}} が含まれています", + "endpointsDocLink": "ドキュメントを表示する", + "switchVersion": "バージョンの切り替え", + "deprecation": { + "fullMessage": "このプラグインは{{deprecatedReason}}のため非推奨となり、新しいバージョンはリリースされません。代わりに{{-alternativePluginId}}をご利用ください。", + "onlyReason": "このプラグインは{{deprecatedReason}}のため非推奨となり、新しいバージョンはリリースされません。", + "noReason": "このプラグインは廃止されており、今後更新されることはありません。", + "reason": { + "businessAdjustments": "事業調整", + "ownershipTransferred": "所有権移転", + "noMaintainer": "メンテナーの不足" + } + } + }, + "debugInfo": { + "title": "デバッグ", + "viewDocs": "ドキュメントを見る" + }, + "privilege": { + "admins": "管理者", + "noone": "誰もいない", + "whoCanInstall": "誰がプラグインをインストールして管理できますか?", + "whoCanDebug": "誰がプラグインのデバッグを行うことができますか?", + "everyone": "みんな", + "title": "プラグインの設定" + }, + "pluginInfoModal": { + "packageName": "パッケージ", + "release": "リリース", + "title": "プラグイン情報", + "repository": "リポジトリ" + }, + "action": { + "deleteContentRight": "プラグイン?", + "usedInApps": "このプラグインは{{num}}のアプリで使用されています。", + "delete": "プラグインを削除する", + "pluginInfo": "プラグイン情報", + "deleteContentLeft": "削除しますか", + "checkForUpdates": "更新を確認する" + }, + "installModal": { + "labels": { + "version": "バージョン", + "package": "パッケージ", + "repository": "リポジトリ" + }, + "cancel": "キャンセル", + "installing": "インストール中...", + "installedSuccessfully": "インストールに成功しました", + "installFailedDesc": "プラグインのインストールに失敗しました。", + "fromTrustSource": "信頼できるソースからのみプラグインをインストールするようにしてください。", + "installedSuccessfullyDesc": "プラグインは正常にインストールされました。", + "installFailed": "インストールに失敗しました", + "readyToInstallPackage": "次のプラグインをインストールしようとしています", + "uploadFailed": "アップロードに失敗しました", + "pluginLoadErrorDesc": "このプラグインはインストールされません", + "installComplete": "インストール完了", + "next": "次", + "readyToInstall": "次のプラグインをインストールしようとしています", + "pluginLoadError": "プラグインの読み込みエラー", + "readyToInstallPackages": "次の{{num}}プラグインをインストールしようとしています", + "close": "閉じる", + "install": "インストール", + "dropPluginToInstall": "プラグインパッケージをここにドロップしてインストールします", + "installPlugin": "プラグインをインストールする", + "back": "戻る", + "uploadingPackage": "{{packageName}}をアップロード中...", + "installWarning": "このプラグインはインストールを許可されていません。" + }, + "installFromGitHub": { + "installedSuccessfully": "インストールに成功しました", + "installNote": "信頼できるソースからのみプラグインをインストールするようにしてください。", + "updatePlugin": "GitHub からプラグインを更新する", + "selectPackage": "パッケージを選択", + "installFailed": "インストールに失敗しました", + "selectPackagePlaceholder": "パッケージを選択してください", + "gitHubRepo": "GitHub リポジトリ", + "selectVersionPlaceholder": "バージョンを選択してください", + "uploadFailed": "アップロードに失敗しました", + "selectVersion": "バージョンを選択", + "installPlugin": "GitHub からプラグインをインストールする" + }, + "upgrade": { + "title": "プラグインをインストールする", + "close": "閉じる", + "upgrading": "インストール中...", + "description": "次のプラグインをインストールしようとしています", + "successfulTitle": "インストールに成功しました", + "usedInApps": "{{num}}のアプリで使用されています", + "upgrade": "インストール" + }, + "error": { + "fetchReleasesError": "リリースを取得できません。後でもう一度お試しください。", + "inValidGitHubUrl": "無効な GitHub URL です。有効な URL を次の形式で入力してください:https://github.com/owner/repo", + "noReleasesFound": "リリースは見つかりません。GitHub リポジトリまたは入力 URL を確認してください。" + }, + "marketplace": { + "empower": "AI 開発をサポートする", + "discover": "探索", + "and": "と", + "difyMarketplace": "Dify マーケットプレイス", + "moreFrom": "マーケットプレイスからのさらなる情報", + "noPluginFound": "プラグインが見つかりません", + "pluginsResult": "{{num}} 件の結果", + "sortBy": "並べ替え", + "sortOption": { + "mostPopular": "人気順", + "recentlyUpdated": "最近更新順", + "newlyReleased": "新着順", + "firstReleased": "リリース順" + }, + "viewMore": "もっと見る", + "verifiedTip": "このプラグインは Dify によって認証されています", + "partnerTip": "このプラグインは Dify のパートナーによって認証されています" + }, + "task": { + "installError": "{{errorLength}} プラグインのインストールに失敗しました。表示するにはクリックしてください。", + "installingWithSuccess": "{{installingLength}}個のプラグインをインストール中、{{successLength}}個成功しました。", + "clearAll": "すべてクリア", + "installedError": "{{errorLength}} プラグインのインストールに失敗しました", + "installingWithError": "{{installingLength}}個のプラグインをインストール中、{{successLength}}件成功、{{errorLength}}件失敗", + "installing": "{{installingLength}}個のプラグインをインストール中、0 個完了。", + "installSuccess": "{{successLength}} plugins installed successfully", + "installed": "Installed", + "runningPlugins": "Installing Plugins", + "successPlugins": "Successfully Installed Plugins", + "errorPlugins": "Failed to Install Plugins" + }, + "from": "インストール元", + "install": "{{num}} インストール", + "installAction": "インストール", + "installFrom": "インストール元", + "deprecated": "非推奨", + "searchPlugins": "検索プラグイン", + "search": "検索", + "endpointsEnabled": "{{num}} セットのエンドポイントが有効になりました", + "findMoreInMarketplace": "マーケットプレイスでさらに見つけてください", + "fromMarketplace": "マーケットプレイスから", + "searchCategories": "検索カテゴリ", + "allCategories": "すべてのカテゴリ", + "searchTools": "検索ツール...", + "installPlugin": "プラグインをインストールする", + "searchInMarketplace": "マーケットプレイスで検索", + "difyVersionNotCompatible": "現在の Dify バージョンはこのプラグインと互換性がありません。最小バージョンは{{minimalDifyVersion}}です。", + "metadata": { + "title": "プラグイン" + }, + "requestAPlugin": "プラグインをリクエストする", + "publishPlugins": "プラグインを公開する", + "auth": { + "saveOnly": "保存のみ", + "oauthClient": "OAuthクライアント", + "authorizations": "認可", + "useOAuth": "OAuthを使用してください", + "addApi": "APIキーを追加してください", + "authRemoved": "認証が削除されました", + "authorizationName": "認証名", + "default": "デフォルト", + "oauthClientSettings": "OAuthクライアント設定", + "custom": "カスタム", + "useApi": "APIキーを使用してください", + "saveAndAuth": "保存と承認", + "setDefault": "デフォルトとして設定する", + "setupOAuth": "OAuthクライアントの設定", + "workspaceDefault": "ワークスペースのデフォルト", + "useOAuthAuth": "OAuth認証を使用する", + "useApiAuth": "APIキー認証設定", + "authorization": "認証", + "addOAuth": "OAuthを追加する", + "useApiAuthDesc": "認証情報を設定した後、ワークスペース内のすべてのメンバーは、アプリケーションをオーケストレーションする際にこのツールを使用できます。", + "clientInfo": "このツールプロバイダーにシステムクライアントシークレットが見つからないため、手動で設定する必要があります。redirect_uriには、次を使用してください。", + "unavailable": "利用できません", + "customCredentialUnavailable": "カスタム資格情報は現在利用できません", + "credentialUnavailable": "現在、資格情報は利用できません。管理者にご連絡ください。", + "credentialUnavailableInButton": "資格情報が利用できません", + "connectedWorkspace": "接続されたワークスペース", + "emptyAuth": "認証を設定してください" + }, + "autoUpdate": { + "strategy": { + "disabled": { + "name": "無効", + "description": "プラグインは自動更新されません" + }, + "fixOnly": { + "name": "修正のみ", + "selectedDescription": "パッチバージョンのみの自動更新", + "description": "パッチバージョンのみ自動更新 (例: 1.0.1 → 1.0.2)。マイナーバージョンの変更は更新をトリガーしません。" + }, + "latest": { + "name": "最新", + "selectedDescription": "常に最新バージョンに更新してください", + "description": "常に最新バージョンに更新してください" + } + }, + "upgradeMode": { + "partial": "選択されたもののみ", + "exclude": "選択したものを除外する", + "all": "すべてを更新する" + }, + "upgradeModePlaceholder": { + "exclude": "選択されたプラグインは自動更新されません", + "partial": "選択されたプラグインのみが自動更新されます。現在選択されているプラグインはないため、プラグインは自動更新されません。" + }, + "operation": { + "clearAll": "すべてクリア", + "select": "プラグインを選択する" + }, + "pluginDowngradeWarning": { + "title": "プラグインのダウングレード", + "downgrade": "とにかくダウングレードする", + "exclude": "自動更新から除外する", + "description": "このプラグインは現在、自動更新が有効です。バージョンをダウングレードすると、次回の自動更新中に変更が上書きされる可能性があります。" + }, + "noPluginPlaceholder": { + "noInstalled": "プラグインがインストールされていません", + "noFound": "プラグインが見つかりませんでした" + }, + "updateTimeTitle": "更新時刻", + "automaticUpdates": "自動更新", + "updateTime": "更新時刻", + "updateSettings": "設定を更新する", + "nextUpdateTime": "次の自動更新: {{time}}", + "excludeUpdate": "以下の{{num}}プラグインは自動更新されません", + "changeTimezone": "タイムゾーンを変更するには、設定に移動してください。", + "specifyPluginsToUpdate": "更新するプラグインを指定してください", + "partialUPdate": "以下の{{num}}プラグインのみが自動更新されます" + }, + "readmeInfo": { + "title": "リードミー", + "needHelpCheckReadme": "助けが必要ですか?READMEを確認してください。", + "noReadmeAvailable": "READMEは利用できません", + "failedToFetch": "README の取得に失敗しました" + } +} diff --git a/web/i18n/ja-JP/plugin.ts b/web/i18n/ja-JP/plugin.ts deleted file mode 100644 index d79baeb3b1..0000000000 --- a/web/i18n/ja-JP/plugin.ts +++ /dev/null @@ -1,325 +0,0 @@ -const translation = { - category: { - extensions: '拡張機能', - all: 'すべて', - tools: 'ツール', - bundles: 'バンドル', - agents: 'エージェント戦略', - models: 'モデル', - datasources: 'データソース', - triggers: 'トリガー', - }, - categorySingle: { - agent: 'エージェント戦略', - model: 'モデル', - bundle: 'バンドル', - tool: 'ツール', - extension: '拡張', - datasource: 'データソース', - trigger: 'トリガー', - }, - list: { - source: { - local: 'ローカルパッケージファイルからインストール', - github: 'GitHub からインストールする', - marketplace: 'マーケットプレイスからインストール', - }, - noInstalled: 'プラグインはインストールされていません', - notFound: 'プラグインが見つかりません', - }, - source: { - github: 'GitHub', - local: 'ローカルパッケージファイル', - marketplace: 'マーケットプレイス', - }, - detailPanel: { - categoryTip: { - marketplace: 'マーケットプレイスからインストールされました', - local: 'ローカルプラグイン', - debugging: 'デバッグプラグイン', - github: 'Github からインストールしました', - }, - operation: { - info: 'プラグイン情報', - install: 'インストール', - viewDetail: '詳細を見る', - checkUpdate: '更新を確認する', - update: '更新', - detail: '詳細', - remove: '削除', - back: '戻る', - }, - toolSelector: { - descriptionPlaceholder: 'ツールの目的の簡単な説明、例えば、特定の場所の温度を取得すること。', - paramsTip2: '「自動」がオフのとき、デフォルト値が使用されます。', - settings: 'ユーザー設定', - unsupportedContent2: 'バージョンを切り替えるにはクリックしてください。', - unsupportedContent: 'インストールされたプラグインのバージョンは、このアクションを提供していません。', - title: 'ツールを追加', - uninstalledContent: 'このプラグインはローカル/GitHub リポジトリからインストールされます。インストール後にご利用ください。', - descriptionLabel: 'ツールの説明', - auto: '自動', - params: '推論設定', - uninstalledLink: 'プラグインを管理する', - placeholder: 'ツールを選択...', - uninstalledTitle: 'ツールがインストールされていません', - empty: 'ツールを追加するには「+」ボタンをクリックしてください。複数のツールを追加できます。', - paramsTip1: 'LLM 推論パラメータを制御します。', - toolLabel: 'ツール', - unsupportedTitle: 'サポートされていないアクション', - toolSetting: 'ツール設定', - unsupportedMCPTool: '現在選択されているエージェント戦略プラグインのバージョンはMCPツールをサポートしていません。', - }, - endpointDisableTip: 'エンドポイントを無効にする', - endpointModalDesc: '設定が完了すると、API エンドポイントを介してプラグインが提供する機能を使用できます。', - endpointDisableContent: '{{name}}を無効にしますか?', - endpointModalTitle: 'エンドポイントを設定する', - endpointDeleteTip: 'エンドポイントを削除', - modelNum: '{{num}} モデルが含まれています', - serviceOk: 'サービスは正常です', - disabled: 'サービスは無効化されています', - endpoints: 'エンドポイント', - endpointsTip: 'このプラグインはエンドポイントを介して特定の機能を提供し、現在のワークスペースのために複数のエンドポイントセットを構成できます。', - configureModel: 'モデルを設定する', - configureTool: 'ツールを設定する', - endpointsEmpty: 'エンドポイントを追加するには、\'+\'ボタンをクリックしてください', - strategyNum: '{{num}} {{strategy}} が含まれています', - configureApp: 'アプリを設定する', - endpointDeleteContent: '{{name}}を削除しますか?', - actionNum: '{{num}} {{action}} が含まれています', - endpointsDocLink: 'ドキュメントを表示する', - switchVersion: 'バージョンの切り替え', - deprecation: { - fullMessage: 'このプラグインは{{deprecatedReason}}のため非推奨となり、新しいバージョンはリリースされません。代わりに{{-alternativePluginId}}をご利用ください。', - onlyReason: 'このプラグインは{{deprecatedReason}}のため非推奨となり、新しいバージョンはリリースされません。', - noReason: 'このプラグインは廃止されており、今後更新されることはありません。', - reason: { - businessAdjustments: '事業調整', - ownershipTransferred: '所有権移転', - noMaintainer: 'メンテナーの不足', - }, - }, - }, - debugInfo: { - title: 'デバッグ', - viewDocs: 'ドキュメントを見る', - }, - privilege: { - admins: '管理者', - noone: '誰もいない', - whoCanInstall: '誰がプラグインをインストールして管理できますか?', - whoCanDebug: '誰がプラグインのデバッグを行うことができますか?', - everyone: 'みんな', - title: 'プラグインの設定', - }, - pluginInfoModal: { - packageName: 'パッケージ', - release: 'リリース', - title: 'プラグイン情報', - repository: 'リポジトリ', - }, - action: { - deleteContentRight: 'プラグイン?', - usedInApps: 'このプラグインは{{num}}のアプリで使用されています。', - delete: 'プラグインを削除する', - pluginInfo: 'プラグイン情報', - deleteContentLeft: '削除しますか', - checkForUpdates: '更新を確認する', - }, - installModal: { - labels: { - version: 'バージョン', - package: 'パッケージ', - repository: 'リポジトリ', - }, - cancel: 'キャンセル', - installing: 'インストール中...', - installedSuccessfully: 'インストールに成功しました', - installFailedDesc: 'プラグインのインストールに失敗しました。', - fromTrustSource: '信頼できるソースからのみプラグインをインストールするようにしてください。', - installedSuccessfullyDesc: 'プラグインは正常にインストールされました。', - installFailed: 'インストールに失敗しました', - readyToInstallPackage: '次のプラグインをインストールしようとしています', - uploadFailed: 'アップロードに失敗しました', - pluginLoadErrorDesc: 'このプラグインはインストールされません', - installComplete: 'インストール完了', - next: '次', - readyToInstall: '次のプラグインをインストールしようとしています', - pluginLoadError: 'プラグインの読み込みエラー', - readyToInstallPackages: '次の{{num}}プラグインをインストールしようとしています', - close: '閉じる', - install: 'インストール', - dropPluginToInstall: 'プラグインパッケージをここにドロップしてインストールします', - installPlugin: 'プラグインをインストールする', - back: '戻る', - uploadingPackage: '{{packageName}}をアップロード中...', - installWarning: 'このプラグインはインストールを許可されていません。', - }, - installFromGitHub: { - installedSuccessfully: 'インストールに成功しました', - installNote: '信頼できるソースからのみプラグインをインストールするようにしてください。', - updatePlugin: 'GitHub からプラグインを更新する', - selectPackage: 'パッケージを選択', - installFailed: 'インストールに失敗しました', - selectPackagePlaceholder: 'パッケージを選択してください', - gitHubRepo: 'GitHub リポジトリ', - selectVersionPlaceholder: 'バージョンを選択してください', - uploadFailed: 'アップロードに失敗しました', - selectVersion: 'バージョンを選択', - installPlugin: 'GitHub からプラグインをインストールする', - }, - upgrade: { - title: 'プラグインをインストールする', - close: '閉じる', - upgrading: 'インストール中...', - description: '次のプラグインをインストールしようとしています', - successfulTitle: 'インストールに成功しました', - usedInApps: '{{num}}のアプリで使用されています', - upgrade: 'インストール', - }, - error: { - fetchReleasesError: 'リリースを取得できません。後でもう一度お試しください。', - inValidGitHubUrl: '無効な GitHub URL です。有効な URL を次の形式で入力してください:https://github.com/owner/repo', - noReleasesFound: 'リリースは見つかりません。GitHub リポジトリまたは入力 URL を確認してください。', - }, - marketplace: { - empower: 'AI 開発をサポートする', - discover: '探索', - and: 'と', - difyMarketplace: 'Dify マーケットプレイス', - moreFrom: 'マーケットプレイスからのさらなる情報', - noPluginFound: 'プラグインが見つかりません', - pluginsResult: '{{num}} 件の結果', - sortBy: '並べ替え', - sortOption: { - mostPopular: '人気順', - recentlyUpdated: '最近更新順', - newlyReleased: '新着順', - firstReleased: 'リリース順', - }, - viewMore: 'もっと見る', - verifiedTip: 'このプラグインは Dify によって認証されています', - partnerTip: 'このプラグインは Dify のパートナーによって認証されています', - }, - task: { - installError: '{{errorLength}} プラグインのインストールに失敗しました。表示するにはクリックしてください。', - installingWithSuccess: '{{installingLength}}個のプラグインをインストール中、{{successLength}}個成功しました。', - clearAll: 'すべてクリア', - installedError: '{{errorLength}} プラグインのインストールに失敗しました', - installingWithError: '{{installingLength}}個のプラグインをインストール中、{{successLength}}件成功、{{errorLength}}件失敗', - installing: '{{installingLength}}個のプラグインをインストール中、0 個完了。', - installSuccess: '{{successLength}} plugins installed successfully', - installed: 'Installed', - runningPlugins: 'Installing Plugins', - successPlugins: 'Successfully Installed Plugins', - errorPlugins: 'Failed to Install Plugins', - }, - from: 'インストール元', - install: '{{num}} インストール', - installAction: 'インストール', - installFrom: 'インストール元', - deprecated: '非推奨', - searchPlugins: '検索プラグイン', - search: '検索', - endpointsEnabled: '{{num}} セットのエンドポイントが有効になりました', - findMoreInMarketplace: 'マーケットプレイスでさらに見つけてください', - fromMarketplace: 'マーケットプレイスから', - searchCategories: '検索カテゴリ', - allCategories: 'すべてのカテゴリ', - searchTools: '検索ツール...', - installPlugin: 'プラグインをインストールする', - searchInMarketplace: 'マーケットプレイスで検索', - difyVersionNotCompatible: '現在の Dify バージョンはこのプラグインと互換性がありません。最小バージョンは{{minimalDifyVersion}}です。', - metadata: { - title: 'プラグイン', - }, - requestAPlugin: 'プラグインをリクエストする', - publishPlugins: 'プラグインを公開する', - auth: { - saveOnly: '保存のみ', - oauthClient: 'OAuthクライアント', - authorizations: '認可', - useOAuth: 'OAuthを使用してください', - addApi: 'APIキーを追加してください', - authRemoved: '認証が削除されました', - authorizationName: '認証名', - default: 'デフォルト', - oauthClientSettings: 'OAuthクライアント設定', - custom: 'カスタム', - useApi: 'APIキーを使用してください', - saveAndAuth: '保存と承認', - setDefault: 'デフォルトとして設定する', - setupOAuth: 'OAuthクライアントの設定', - workspaceDefault: 'ワークスペースのデフォルト', - useOAuthAuth: 'OAuth認証を使用する', - useApiAuth: 'APIキー認証設定', - authorization: '認証', - addOAuth: 'OAuthを追加する', - useApiAuthDesc: '認証情報を設定した後、ワークスペース内のすべてのメンバーは、アプリケーションをオーケストレーションする際にこのツールを使用できます。', - clientInfo: 'このツールプロバイダーにシステムクライアントシークレットが見つからないため、手動で設定する必要があります。redirect_uriには、次を使用してください。', - unavailable: '利用できません', - customCredentialUnavailable: 'カスタム資格情報は現在利用できません', - credentialUnavailable: '現在、資格情報は利用できません。管理者にご連絡ください。', - credentialUnavailableInButton: '資格情報が利用できません', - connectedWorkspace: '接続されたワークスペース', - emptyAuth: '認証を設定してください', - }, - autoUpdate: { - strategy: { - disabled: { - name: '無効', - description: 'プラグインは自動更新されません', - }, - fixOnly: { - name: '修正のみ', - selectedDescription: 'パッチバージョンのみの自動更新', - description: 'パッチバージョンのみ自動更新 (例: 1.0.1 → 1.0.2)。マイナーバージョンの変更は更新をトリガーしません。', - }, - latest: { - name: '最新', - selectedDescription: '常に最新バージョンに更新してください', - description: '常に最新バージョンに更新してください', - }, - }, - upgradeMode: { - partial: '選択されたもののみ', - exclude: '選択したものを除外する', - all: 'すべてを更新する', - }, - upgradeModePlaceholder: { - exclude: '選択されたプラグインは自動更新されません', - partial: '選択されたプラグインのみが自動更新されます。現在選択されているプラグインはないため、プラグインは自動更新されません。', - }, - operation: { - clearAll: 'すべてクリア', - select: 'プラグインを選択する', - }, - pluginDowngradeWarning: { - title: 'プラグインのダウングレード', - downgrade: 'とにかくダウングレードする', - exclude: '自動更新から除外する', - description: 'このプラグインは現在、自動更新が有効です。バージョンをダウングレードすると、次回の自動更新中に変更が上書きされる可能性があります。', - }, - noPluginPlaceholder: { - noInstalled: 'プラグインがインストールされていません', - noFound: 'プラグインが見つかりませんでした', - }, - updateTimeTitle: '更新時刻', - automaticUpdates: '自動更新', - updateTime: '更新時刻', - updateSettings: '設定を更新する', - nextUpdateTime: '次の自動更新: {{time}}', - excludeUpdate: '以下の{{num}}プラグインは自動更新されません', - changeTimezone: 'タイムゾーンを変更するには、設定に移動してください。', - specifyPluginsToUpdate: '更新するプラグインを指定してください', - partialUPdate: '以下の{{num}}プラグインのみが自動更新されます', - }, - readmeInfo: { - title: 'リードミー', - needHelpCheckReadme: '助けが必要ですか?READMEを確認してください。', - noReadmeAvailable: 'READMEは利用できません', - failedToFetch: 'README の取得に失敗しました', - }, -} - -export default translation diff --git a/web/i18n/ja-JP/register.json b/web/i18n/ja-JP/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/ja-JP/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/ja-JP/register.ts b/web/i18n/ja-JP/register.ts deleted file mode 100644 index 928649474b..0000000000 --- a/web/i18n/ja-JP/register.ts +++ /dev/null @@ -1,4 +0,0 @@ -const translation = { -} - -export default translation diff --git a/web/i18n/ja-JP/run-log.json b/web/i18n/ja-JP/run-log.json new file mode 100644 index 0000000000..759b09e72d --- /dev/null +++ b/web/i18n/ja-JP/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "入力", + "result": "結果", + "detail": "詳細情報", + "tracing": "実行追跡", + "resultPanel": { + "status": "ステータス", + "time": "処理時間", + "tokens": "トークン総数" + }, + "meta": { + "title": "メタデータ", + "status": "状態", + "version": "バージョン", + "executor": "実行者", + "startTime": "開始時刻", + "time": "総処理時間", + "tokens": "トークン総数", + "steps": "処理ステップ数" + }, + "resultEmpty": { + "title": "今回の実行では JSON 形式のみが出力されました", + "tipLeft": "詳細を確認するには", + "link": "詳細情報パネル", + "tipRight": "へ移動してください" + }, + "actionLogs": "操作ログ", + "circularInvocationTip": "現在のワークフローにツール/ノードの循環呼び出しが検出されました" +} diff --git a/web/i18n/ja-JP/run-log.ts b/web/i18n/ja-JP/run-log.ts deleted file mode 100644 index 2c4bc46331..0000000000 --- a/web/i18n/ja-JP/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -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: 'へ移動してください', - }, - actionLogs: '操作ログ', - circularInvocationTip: '現在のワークフローにツール/ノードの循環呼び出しが検出されました', -} - -export default translation diff --git a/web/i18n/ja-JP/share.json b/web/i18n/ja-JP/share.json new file mode 100644 index 0000000000..f9a90eb8e8 --- /dev/null +++ b/web/i18n/ja-JP/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "", + "appUnavailable": "アプリケーションは利用できません", + "appUnknownError": "アプリケーションは利用できません" + }, + "chat": { + "newChat": "新規チャット", + "newChatTip": "新規チャットが開始されています", + "chatSettingsTitle": "チャット設定", + "chatFormTip": "チャット開始後は設定を変更できません", + "pinnedTitle": "ピン留め済み", + "unpinnedTitle": "チャットリスト", + "newChatDefaultName": "新規チャット", + "resetChat": "チャットをリセット", + "viewChatSettings": "設定を確認", + "poweredBy": "Powered by", + "prompt": "プロンプト", + "privatePromptConfigTitle": "個別設定", + "publicPromptConfigTitle": "共通プロンプト設定", + "configStatusDes": "開始前に設定を変更できます", + "configDisabled": "前回の設定を適用中です", + "startChat": "チャットを開始", + "privacyPolicyLeft": "本アプリの", + "privacyPolicyMiddle": "プライバシーポリシー", + "privacyPolicyRight": "に同意の上ご利用ください", + "deleteConversation": { + "title": "チャットの削除", + "content": "このチャットを削除しますか?" + }, + "tryToSolve": "問題を解決する", + "temporarySystemIssue": "システムに一時的な問題が発生しています", + "expand": "拡大", + "collapse": "縮小" + }, + "generation": { + "tabs": { + "create": "1 回実行", + "batch": "一括実行", + "saved": "保存済み" + }, + "savedNoData": { + "title": "保存済みデータがありません", + "description": "コンテンツ生成後に結果がここに表示されます", + "startCreateContent": "生成を開始" + }, + "title": "AI 文章作成", + "queryTitle": "入力内容", + "completionResult": "生成結果", + "queryPlaceholder": "入力してください", + "run": "実行", + "execution": "実行", + "executions": "{{num}}回実行", + "copy": "コピー", + "resultTitle": "AI 生成結果", + "noData": "AI がコンテンツを生成します", + "csvUploadTitle": "CSV ファイルをドロップするか", + "browse": "ファイルを選択", + "csvStructureTitle": "CSV 形式要件:", + "downloadTemplate": "テンプレートを取得", + "field": "", + "batchFailed": { + "info": "{{num}}件の失敗", + "retry": "再実行", + "outputPlaceholder": "出力なし" + }, + "errorMsg": { + "empty": "ファイル内容が空です", + "fileStructNotMatch": "ファイル形式が不正です", + "emptyLine": "{{rowIndex}}行目:内容が空です", + "invalidLine": "{{rowIndex}}行目:{{varName}}の入力が必要です", + "moreThanMaxLengthLine": "{{rowIndex}}行目:{{varName}}が制限長({{maxLength}})を超過", + "atLeastOne": "1 行以上のデータが必要です" + }, + "stopRun": "実行を停止" + }, + "login": { + "backToHome": "ホームに戻る" + } +} diff --git a/web/i18n/ja-JP/share.ts b/web/i18n/ja-JP/share.ts deleted file mode 100644 index 07d6ae3e45..0000000000 --- a/web/i18n/ja-JP/share.ts +++ /dev/null @@ -1,82 +0,0 @@ -const translation = { - common: { - welcome: '', - appUnavailable: 'アプリケーションは利用できません', - appUnknownError: 'アプリケーションは利用できません', - }, - chat: { - newChat: '新規チャット', - newChatTip: '新規チャットが開始されています', - chatSettingsTitle: 'チャット設定', - chatFormTip: 'チャット開始後は設定を変更できません', - pinnedTitle: 'ピン留め済み', - unpinnedTitle: 'チャットリスト', - newChatDefaultName: '新規チャット', - resetChat: 'チャットをリセット', - viewChatSettings: '設定を確認', - poweredBy: 'Powered by', - prompt: 'プロンプト', - privatePromptConfigTitle: '個別設定', - publicPromptConfigTitle: '共通プロンプト設定', - configStatusDes: '開始前に設定を変更できます', - configDisabled: '前回の設定を適用中です', - startChat: 'チャットを開始', - privacyPolicyLeft: '本アプリの', - privacyPolicyMiddle: 'プライバシーポリシー', - privacyPolicyRight: 'に同意の上ご利用ください', - deleteConversation: { - title: 'チャットの削除', - content: 'このチャットを削除しますか?', - }, - tryToSolve: '問題を解決する', - temporarySystemIssue: 'システムに一時的な問題が発生しています', - expand: '拡大', - collapse: '縮小', - }, - generation: { - tabs: { - create: '1 回実行', - batch: '一括実行', - saved: '保存済み', - }, - savedNoData: { - title: '保存済みデータがありません', - description: 'コンテンツ生成後に結果がここに表示されます', - startCreateContent: '生成を開始', - }, - title: 'AI 文章作成', - queryTitle: '入力内容', - completionResult: '生成結果', - queryPlaceholder: '入力してください', - run: '実行', - execution: '実行', - executions: '{{num}}回実行', - copy: 'コピー', - resultTitle: 'AI 生成結果', - noData: 'AI がコンテンツを生成します', - csvUploadTitle: 'CSV ファイルをドロップするか', - browse: 'ファイルを選択', - csvStructureTitle: 'CSV 形式要件:', - downloadTemplate: 'テンプレートを取得', - field: '', - batchFailed: { - info: '{{num}}件の失敗', - retry: '再実行', - outputPlaceholder: '出力なし', - }, - errorMsg: { - empty: 'ファイル内容が空です', - fileStructNotMatch: 'ファイル形式が不正です', - emptyLine: '{{rowIndex}}行目:内容が空です', - invalidLine: '{{rowIndex}}行目:{{varName}}の入力が必要です', - moreThanMaxLengthLine: '{{rowIndex}}行目:{{varName}}が制限長({{maxLength}})を超過', - atLeastOne: '1 行以上のデータが必要です', - }, - stopRun: '実行を停止', - }, - login: { - backToHome: 'ホームに戻る', - }, -} - -export default translation diff --git a/web/i18n/ja-JP/time.json b/web/i18n/ja-JP/time.json new file mode 100644 index 0000000000..3251b67cdd --- /dev/null +++ b/web/i18n/ja-JP/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Tue": "火曜日", + "Sat": "土曜日", + "Mon": "月曜日", + "Thu": "木曜日", + "Fri": "金曜日", + "Wed": "水曜日", + "Sun": "日曜日" + }, + "months": { + "November": "11 月", + "December": "12 月", + "March": "3 月", + "September": "9 月", + "July": "7 月", + "April": "4 月", + "February": "2 月", + "June": "6 月", + "January": "1 月", + "May": "5 月", + "August": "8 月", + "October": "10 月" + }, + "operation": { + "now": "今", + "cancel": "キャンセル", + "ok": "はい", + "pickDate": "日付を選択" + }, + "title": { + "pickTime": "ピックタイム" + }, + "defaultPlaceholder": "時間を選んでください...", + "dateFormats": { + "display": "YYYY年MM月DD日", + "displayWithTime": "YYYY年MM月DD日 HH:mm", + "input": "YYYY-MM-DD", + "output": "YYYY-MM-DD", + "outputWithTime": "YYYY-MM-DDTHH:mm:ss.SSSZ" + } +} diff --git a/web/i18n/ja-JP/time.ts b/web/i18n/ja-JP/time.ts deleted file mode 100644 index 5a5d61748c..0000000000 --- a/web/i18n/ja-JP/time.ts +++ /dev/null @@ -1,45 +0,0 @@ -const translation = { - daysInWeek: { - Tue: '火曜日', - Sat: '土曜日', - Mon: '月曜日', - Thu: '木曜日', - Fri: '金曜日', - Wed: '水曜日', - Sun: '日曜日', - }, - months: { - November: '11 月', - December: '12 月', - March: '3 月', - September: '9 月', - July: '7 月', - April: '4 月', - February: '2 月', - June: '6 月', - January: '1 月', - May: '5 月', - August: '8 月', - October: '10 月', - }, - operation: { - now: '今', - cancel: 'キャンセル', - ok: 'はい', - pickDate: '日付を選択', - }, - title: { - pickTime: 'ピックタイム', - }, - defaultPlaceholder: '時間を選んでください...', - // Date format configurations - dateFormats: { - display: 'YYYY年MM月DD日', - displayWithTime: 'YYYY年MM月DD日 HH:mm', - input: 'YYYY-MM-DD', - output: 'YYYY-MM-DD', - outputWithTime: 'YYYY-MM-DDTHH:mm:ss.SSSZ', - }, -} - -export default translation diff --git a/web/i18n/ja-JP/tools.json b/web/i18n/ja-JP/tools.json new file mode 100644 index 0000000000..3850a9e07c --- /dev/null +++ b/web/i18n/ja-JP/tools.json @@ -0,0 +1,263 @@ +{ + "title": "ツール", + "createCustomTool": "カスタムツールを作成する", + "customToolTip": "Dify カスタムツールの詳細", + "type": { + "builtIn": "ツール", + "custom": "カスタム", + "workflow": "ワークフロー" + }, + "contribute": { + "line1": "私は", + "line2": "Dify へのツールの貢献に興味があります。", + "viewGuide": "ガイドを見る" + }, + "author": "著者:", + "auth": { + "authorized": "認証済み", + "unauthorized": "未認証", + "setup": "使用するための認証を設定する", + "setupModalTitle": "認証の設定", + "setupModalTitleDescription": "資格情報を構成した後、ワークスペース内のすべてのメンバーがアプリケーションのオーケストレーション時にこのツールを使用できます。" + }, + "includeToolNum": "{{num}}個のツールが含まれています", + "addToolModal": { + "type": "タイプ", + "category": "カテゴリー", + "added": "追加済", + "custom": { + "title": "カスタムツールはありません", + "tip": "カスタムツールを作成する" + }, + "workflow": { + "title": "利用可能なワークフローツールはありません", + "tip": "スタジオでワークフローをツールに公開する" + }, + "mcp": { + "title": "利用可能な MCP ツールはありません", + "tip": "MCP サーバーを追加する" + }, + "agent": { + "title": "Agent strategy は利用できません" + } + }, + "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": "なし", + "apiKeyPlaceholder": "API キーの HTTP ヘッダー名", + "apiValuePlaceholder": "API キーを入力してください", + "api_key_query": "クエリパラメータ", + "queryParamPlaceholder": "API キーのクエリパラメータ名", + "api_key_header": "ヘッダー" + }, + "key": "キー", + "value": "値", + "queryParam": "クエリパラメータ", + "queryParamTooltip": "API キーのクエリパラメータとして渡す名前、例えば「https://example.com/test?key=API_KEY」の「key」。" + }, + "authHeaderPrefix": { + "title": "認証タイプ", + "types": { + "basic": "ベーシック", + "bearer": "ベアラー", + "custom": "カスタム" + } + }, + "privacyPolicy": "プライバシーポリシー", + "privacyPolicyPlaceholder": "プライバシーポリシーを入力してください", + "toolInput": { + "title": "ツール入力", + "name": "名前", + "required": "必須", + "method": "メソッド", + "methodSetting": "設定", + "methodSettingTip": "ユーザーがツール設定を入力する", + "methodParameter": "LLM 入力", + "methodParameterTip": "LLM は推論中に入力されます", + "label": "ラベル", + "labelPlaceholder": "ラベルを選択します (オプション)", + "description": "説明", + "descriptionPlaceholder": "パラメータの意味の説明" + }, + "customDisclaimer": "カスタム免責事項", + "customDisclaimerPlaceholder": "カスタム免責事項を入力してください", + "confirmTitle": "保存しますか?", + "confirmTip": "このツールを使用しているアプリは影響を受けます", + "deleteToolConfirmTitle": "このツールを削除しますか?", + "deleteToolConfirmContent": "ツールの削除は取り消しできません。ユーザーはもうあなたのツールにアクセスできません。", + "toolOutput": { + "title": "ツール出力", + "name": "名前", + "reserved": "予約済み", + "reservedParameterDuplicateTip": "text、json、および files は予約語です。これらの名前の変数は出力スキーマに表示することはできません。", + "description": "説明" + } + }, + "test": { + "title": "テスト", + "parametersValue": "パラメーター&値", + "parameters": "パラメーター", + "value": "値", + "testResult": "テスト結果", + "testResultPlaceholder": "ここにテスト結果が表示されます" + }, + "thought": { + "using": "使用中", + "used": "使用済み", + "requestTitle": "リクエスト先", + "responseTitle": "レスポンス先" + }, + "setBuiltInTools": { + "info": "情報", + "setting": "設定", + "toolDescription": "ツールの説明", + "parameters": "パラメーター", + "string": "文字列", + "number": "数", + "required": "必須", + "infoAndSetting": "情報と設定", + "file": "ファイル" + }, + "noCustomTool": { + "title": "カスタムツールがありません!", + "content": "AI アプリを構築するためのカスタムツールをここで追加および管理します。", + "createTool": "ツールを作成する" + }, + "noSearchRes": { + "title": "申し訳ありません、結果がありません!", + "content": "検索に一致するツールが見つかりませんでした。", + "reset": "検索をリセット" + }, + "builtInPromptTitle": "プロンプト", + "toolRemoved": "ツールが削除されました", + "notAuthorized": "ツールが認可されていません", + "howToGet": "取得方法", + "openInStudio": "スタジオで開く", + "toolNameUsageTip": "ツール呼び出し名、エージェントの推論とプロンプトの単語に使用されます", + "copyToolName": "名前をコピー", + "noTools": "ツールが見つかりませんでした", + "mcp": { + "create": { + "cardTitle": "MCP サーバー(HTTP)を追加", + "cardLink": "MCP サーバー統合について詳しく知る" + }, + "noConfigured": "未設定", + "updateTime": "更新日時", + "toolsCount": "{{count}} 個のツール", + "noTools": "利用可能なツールはありません", + "modal": { + "title": "MCP サーバー(HTTP)を追加", + "editTitle": "MCP サーバー(HTTP)を編集", + "name": "名前とアイコン", + "namePlaceholder": "MCP サーバーの名前を入力", + "serverUrl": "サーバーURL", + "serverUrlPlaceholder": "サーバーエンドポイントの URL を入力", + "serverUrlWarning": "サーバーアドレスを更新すると、このサーバーに依存するアプリケーションに影響を与える可能性があります。", + "serverIdentifier": "サーバー識別子", + "serverIdentifierTip": "ワークスペース内での MCP サーバーのユニーク識別子です。使用可能な文字は小文字、数字、アンダースコア、ハイフンで、最大 24 文字です。", + "serverIdentifierPlaceholder": "ユニーク識別子(例:my-mcp-server)", + "serverIdentifierWarning": "ID を変更すると、既存のアプリケーションではサーバーが認識できなくなります。", + "cancel": "キャンセル", + "save": "保存", + "confirm": "追加して承認", + "timeout": "タイムアウト", + "sseReadTimeout": "SSE 読み取りタイムアウト", + "headerValuePlaceholder": "例:ベアラートークン123", + "headerKeyPlaceholder": "例えば、承認", + "headers": "ヘッダー", + "timeoutPlaceholder": "三十", + "headerKey": "ヘッダー名", + "addHeader": "ヘッダーを追加", + "headerValue": "ヘッダーの値", + "noHeaders": "カスタムヘッダーは設定されていません", + "headersTip": "MCPサーバーへのリクエストに送信する追加のHTTPヘッダー", + "maskedHeadersTip": "ヘッダー値はセキュリティのためマスクされています。変更は実際の値を更新します。", + "configurations": "設定", + "authentication": "認証", + "clientID": "クライアントID", + "useDynamicClientRegistration": "動的クライアント登録を使用する", + "clientSecretPlaceholder": "クライアントシークレット", + "clientSecret": "クライアントシークレット", + "redirectUrlWarning": "OAuthリダイレクトURLを次のように設定してください:" + }, + "delete": "MCP サーバーを削除", + "deleteConfirmTitle": "{{mcp}} を削除しますか?", + "operation": { + "edit": "編集", + "remove": "削除" + }, + "authorize": "承認", + "authorizing": "承認中...", + "authorizingRequired": "承認が必要です。", + "authorizeTip": "承認後、このページにツールが表示されるようになります。", + "update": "更新", + "updating": "更新中...", + "gettingTools": "ツール取得中...", + "updateTools": "ツール更新中...", + "toolsEmpty": "ツールが読み込まれていません", + "getTools": "ツールを取得", + "toolUpdateConfirmTitle": "ツールリストの更新", + "toolUpdateConfirmContent": "ツールリストを更新すると、既存のアプリケーションに重大な影響を与える可能性があります。続行しますか?", + "toolsNum": "{{count}} 個のツールが含まれています", + "onlyTool": "1 つのツールが含まれています", + "identifier": "サーバー識別子(クリックしてコピー)", + "server": { + "title": "MCP サーバー", + "url": "サーバーURL", + "reGen": "サーバーURL を再生成しますか?", + "addDescription": "説明を追加", + "edit": "説明を編集", + "modal": { + "addTitle": "MCP サーバーを有効化するための説明を追加", + "editTitle": "説明を編集", + "description": "説明", + "descriptionPlaceholder": "このツールの機能と LLM(大規模言語モデル)での使用方法を説明してください。", + "parameters": "パラメータ", + "parametersTip": "各パラメータの説明を追加して、LLM がその目的と制約を理解できるようにします。", + "parametersPlaceholder": "パラメータの目的と制約", + "confirm": "MCP サーバーを有効にする" + }, + "publishTip": "アプリが公開されていません。まずアプリを公開してください。" + }, + "toolItem": { + "parameters": "パラメータ", + "noDescription": "説明なし" + } + }, + "allTools": "すべての道具" +} diff --git a/web/i18n/ja-JP/tools.ts b/web/i18n/ja-JP/tools.ts deleted file mode 100644 index 41dc30ac30..0000000000 --- a/web/i18n/ja-JP/tools.ts +++ /dev/null @@ -1,265 +0,0 @@ -const translation = { - title: 'ツール', - createCustomTool: 'カスタムツールを作成する', - customToolTip: 'Dify カスタムツールの詳細', - type: { - builtIn: 'ツール', - custom: 'カスタム', - workflow: 'ワークフロー', - }, - contribute: { - line1: '私は', - line2: 'Dify へのツールの貢献に興味があります。', - viewGuide: 'ガイドを見る', - }, - author: '著者:', - auth: { - authorized: '認証済み', - unauthorized: '未認証', - setup: '使用するための認証を設定する', - setupModalTitle: '認証の設定', - setupModalTitleDescription: '資格情報を構成した後、ワークスペース内のすべてのメンバーがアプリケーションのオーケストレーション時にこのツールを使用できます。', - }, - includeToolNum: '{{num}}個のツールが含まれています', - addToolModal: { - type: 'タイプ', - category: 'カテゴリー', - added: '追加済', - custom: { - title: 'カスタムツールはありません', - tip: 'カスタムツールを作成する', - }, - workflow: { - title: '利用可能なワークフローツールはありません', - tip: 'スタジオでワークフローをツールに公開する', - }, - mcp: { - title: '利用可能な MCP ツールはありません', - tip: 'MCP サーバーを追加する', - }, - agent: { - title: 'Agent strategy は利用できません', - }, - }, - 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: 'なし', - apiKeyPlaceholder: 'API キーの HTTP ヘッダー名', - apiValuePlaceholder: 'API キーを入力してください', - api_key_query: 'クエリパラメータ', - queryParamPlaceholder: 'API キーのクエリパラメータ名', - api_key_header: 'ヘッダー', - }, - key: 'キー', - value: '値', - queryParam: 'クエリパラメータ', - queryParamTooltip: 'API キーのクエリパラメータとして渡す名前、例えば「https://example.com/test?key=API_KEY」の「key」。', - }, - authHeaderPrefix: { - title: '認証タイプ', - types: { - basic: 'ベーシック', - bearer: 'ベアラー', - custom: 'カスタム', - }, - }, - privacyPolicy: 'プライバシーポリシー', - privacyPolicyPlaceholder: 'プライバシーポリシーを入力してください', - toolInput: { - title: 'ツール入力', - name: '名前', - required: '必須', - method: 'メソッド', - methodSetting: '設定', - methodSettingTip: 'ユーザーがツール設定を入力する', - methodParameter: 'LLM 入力', - methodParameterTip: 'LLM は推論中に入力されます', - label: 'ラベル', - labelPlaceholder: 'ラベルを選択します (オプション)', - description: '説明', - descriptionPlaceholder: 'パラメータの意味の説明', - }, - customDisclaimer: 'カスタム免責事項', - customDisclaimerPlaceholder: 'カスタム免責事項を入力してください', - confirmTitle: '保存しますか?', - confirmTip: 'このツールを使用しているアプリは影響を受けます', - deleteToolConfirmTitle: 'このツールを削除しますか?', - deleteToolConfirmContent: 'ツールの削除は取り消しできません。ユーザーはもうあなたのツールにアクセスできません。', - toolOutput: { - title: 'ツール出力', - name: '名前', - reserved: '予約済み', - reservedParameterDuplicateTip: 'text、json、および files は予約語です。これらの名前の変数は出力スキーマに表示することはできません。', - description: '説明', - }, - }, - test: { - title: 'テスト', - parametersValue: 'パラメーター&値', - parameters: 'パラメーター', - value: '値', - testResult: 'テスト結果', - testResultPlaceholder: 'ここにテスト結果が表示されます', - }, - thought: { - using: '使用中', - used: '使用済み', - requestTitle: 'リクエスト先', - responseTitle: 'レスポンス先', - }, - setBuiltInTools: { - info: '情報', - setting: '設定', - toolDescription: 'ツールの説明', - parameters: 'パラメーター', - string: '文字列', - number: '数', - required: '必須', - infoAndSetting: '情報と設定', - file: 'ファイル', - }, - noCustomTool: { - title: 'カスタムツールがありません!', - content: 'AI アプリを構築するためのカスタムツールをここで追加および管理します。', - createTool: 'ツールを作成する', - }, - noSearchRes: { - title: '申し訳ありません、結果がありません!', - content: '検索に一致するツールが見つかりませんでした。', - reset: '検索をリセット', - }, - builtInPromptTitle: 'プロンプト', - toolRemoved: 'ツールが削除されました', - notAuthorized: 'ツールが認可されていません', - howToGet: '取得方法', - openInStudio: 'スタジオで開く', - toolNameUsageTip: 'ツール呼び出し名、エージェントの推論とプロンプトの単語に使用されます', - copyToolName: '名前をコピー', - noTools: 'ツールが見つかりませんでした', - mcp: { - create: { - cardTitle: 'MCP サーバー(HTTP)を追加', - cardLink: 'MCP サーバー統合について詳しく知る', - }, - noConfigured: '未設定', - updateTime: '更新日時', - toolsCount: '{{count}} 個のツール', - noTools: '利用可能なツールはありません', - modal: { - title: 'MCP サーバー(HTTP)を追加', - editTitle: 'MCP サーバー(HTTP)を編集', - name: '名前とアイコン', - namePlaceholder: 'MCP サーバーの名前を入力', - serverUrl: 'サーバーURL', - serverUrlPlaceholder: 'サーバーエンドポイントの URL を入力', - serverUrlWarning: 'サーバーアドレスを更新すると、このサーバーに依存するアプリケーションに影響を与える可能性があります。', - serverIdentifier: 'サーバー識別子', - serverIdentifierTip: 'ワークスペース内での MCP サーバーのユニーク識別子です。使用可能な文字は小文字、数字、アンダースコア、ハイフンで、最大 24 文字です。', - serverIdentifierPlaceholder: 'ユニーク識別子(例:my-mcp-server)', - serverIdentifierWarning: 'ID を変更すると、既存のアプリケーションではサーバーが認識できなくなります。', - cancel: 'キャンセル', - save: '保存', - confirm: '追加して承認', - timeout: 'タイムアウト', - sseReadTimeout: 'SSE 読み取りタイムアウト', - headerValuePlaceholder: '例:ベアラートークン123', - headerKeyPlaceholder: '例えば、承認', - headers: 'ヘッダー', - timeoutPlaceholder: '三十', - headerKey: 'ヘッダー名', - addHeader: 'ヘッダーを追加', - headerValue: 'ヘッダーの値', - noHeaders: 'カスタムヘッダーは設定されていません', - headersTip: 'MCPサーバーへのリクエストに送信する追加のHTTPヘッダー', - maskedHeadersTip: 'ヘッダー値はセキュリティのためマスクされています。変更は実際の値を更新します。', - configurations: '設定', - authentication: '認証', - clientID: 'クライアントID', - useDynamicClientRegistration: '動的クライアント登録を使用する', - clientSecretPlaceholder: 'クライアントシークレット', - clientSecret: 'クライアントシークレット', - redirectUrlWarning: 'OAuthリダイレクトURLを次のように設定してください:', - }, - delete: 'MCP サーバーを削除', - deleteConfirmTitle: '{{mcp}} を削除しますか?', - operation: { - edit: '編集', - remove: '削除', - }, - authorize: '承認', - authorizing: '承認中...', - authorizingRequired: '承認が必要です。', - authorizeTip: '承認後、このページにツールが表示されるようになります。', - update: '更新', - updating: '更新中...', - gettingTools: 'ツール取得中...', - updateTools: 'ツール更新中...', - toolsEmpty: 'ツールが読み込まれていません', - getTools: 'ツールを取得', - toolUpdateConfirmTitle: 'ツールリストの更新', - toolUpdateConfirmContent: 'ツールリストを更新すると、既存のアプリケーションに重大な影響を与える可能性があります。続行しますか?', - toolsNum: '{{count}} 個のツールが含まれています', - onlyTool: '1 つのツールが含まれています', - identifier: 'サーバー識別子(クリックしてコピー)', - server: { - title: 'MCP サーバー', - url: 'サーバーURL', - reGen: 'サーバーURL を再生成しますか?', - addDescription: '説明を追加', - edit: '説明を編集', - modal: { - addTitle: 'MCP サーバーを有効化するための説明を追加', - editTitle: '説明を編集', - description: '説明', - descriptionPlaceholder: 'このツールの機能と LLM(大規模言語モデル)での使用方法を説明してください。', - parameters: 'パラメータ', - parametersTip: '各パラメータの説明を追加して、LLM がその目的と制約を理解できるようにします。', - parametersPlaceholder: 'パラメータの目的と制約', - confirm: 'MCP サーバーを有効にする', - }, - publishTip: 'アプリが公開されていません。まずアプリを公開してください。', - }, - toolItem: { - parameters: 'パラメータ', - noDescription: '説明なし', - }, - }, - allTools: 'すべての道具', -} - -export default translation diff --git a/web/i18n/ja-JP/workflow.json b/web/i18n/ja-JP/workflow.json new file mode 100644 index 0000000000..d0986ba2f7 --- /dev/null +++ b/web/i18n/ja-JP/workflow.json @@ -0,0 +1,1297 @@ +{ + "common": { + "undo": "元に戻す", + "redo": "やり直し", + "editing": "編集中", + "autoSaved": "自動保存済み", + "unpublished": "未公開", + "published": "公開済み", + "publish": "公開する", + "update": "更新", + "publishUpdate": "更新を公開", + "run": "テスト実行", + "running": "実行中", + "chooseStartNodeToRun": "実行する開始ノードを選択", + "runAllTriggers": "すべてのトリガーを実行", + "inRunMode": "実行モード中", + "inPreview": "プレビュー中", + "inPreviewMode": "プレビューモード中", + "preview": "プレビュー", + "viewRunHistory": "実行履歴を表示", + "runHistory": "実行履歴", + "goBackToEdit": "編集に戻る", + "conversationLog": "会話ログ", + "ImageUploadLegacyTip": "開始フォームでファイル型変数が作成可能になりました。画像アップロード機能は今後サポート終了となります。", + "fileUploadTip": "画像アップロード機能がファイルアップロードに拡張されました", + "debugAndPreview": "プレビュー", + "restart": "再起動", + "currentDraft": "現在の下書き", + "currentDraftUnpublished": "現在の下書き(未公開)", + "latestPublished": "最新公開版", + "publishedAt": "公開日時", + "restore": "復元", + "versionHistory": "バージョン履歴", + "exitVersions": "バージョン履歴を閉じる", + "runApp": "アプリを実行", + "batchRunApp": "アプリを一括実行", + "openInExplore": "探索ページで開く", + "accessAPIReference": "API リファレンス", + "embedIntoSite": "サイトに埋め込む", + "addTitle": "タイトルを追加...", + "addDescription": "説明を追加...", + "noVar": "変数がありません", + "searchVar": "変数を検索", + "variableNamePlaceholder": "変数名を入力", + "setVarValuePlaceholder": "変数値を設定", + "needConnectTip": "接続されていないステップがあります", + "maxTreeDepth": "1 ブランチあたりの最大ノード数:{{depth}}", + "needAdd": "{{node}}ノードを追加する必要があります", + "needOutputNode": "出力ノードを追加する必要があります", + "needStartNode": "少なくとも1つのスタートノードを追加する必要があります", + "needAnswerNode": "回答ブロックを追加する必要があります", + "workflowProcess": "ワークフロー処理", + "notRunning": "まだ実行されていません", + "previewPlaceholder": "入力欄にテキストを入力してチャットボットのデバッグを開始", + "effectVarConfirm": { + "title": "変数の削除", + "content": "他のノードで変数が使用されています。それでも削除しますか?" + }, + "insertVarTip": "\"/\"キーで変数を挿入", + "processData": "データ処理", + "input": "入力", + "output": "出力", + "jinjaEditorPlaceholder": "「/」または「{」で変数挿入", + "viewOnly": "閲覧のみ", + "showRunHistory": "実行履歴を表示", + "enableJinja": "Jinja テンプレートを有効化", + "learnMore": "詳細を見る", + "copy": "コピー", + "duplicate": "複製", + "addBlock": "ブロックを追加", + "pasteHere": "ここに貼り付け", + "pointerMode": "ポインターモード", + "handMode": "ハンドモード", + "exportImage": "画像を出力", + "exportPNG": "PNG で出力", + "exportJPEG": "JPEG で出力", + "exportSVG": "SVG で出力", + "currentView": "現在のビュー", + "currentWorkflow": "現在のワークフロー", + "model": "モデル", + "workflowAsTool": "ワークフローをツールとして公開する", + "configureRequired": "設定が必要", + "configure": "設定", + "manageInTools": "ツールページで管理", + "workflowAsToolTip": "ワークフロー更新後はツールの再設定が必要です", + "workflowAsToolDisabledHint": "最新のワークフローを公開し、接続済みの User Input ノードを用意してからツールとして設定してください。", + "viewDetailInTracingPanel": "詳細を表示", + "syncingData": "データ同期中。。。", + "importDSL": "DSL をインポート", + "importDSLTip": "現在の下書きは上書きされます。インポート前にワークフローをエクスポートしてバックアップしてください", + "backupCurrentDraft": "現在の下書きをバックアップ", + "chooseDSL": "DSL(yml) ファイルを選択", + "overwriteAndImport": "上書きしてインポート", + "importFailure": "インポート失敗", + "importWarning": "注意事項", + "importWarningDetails": "DSL バージョンの違いにより機能に影響が出る可能性があります", + "importSuccess": "インポート成功", + "parallelTip": { + "click": { + "title": "クリック", + "desc": "で追加" + }, + "drag": { + "title": "ドラッグ", + "desc": "で接続" + }, + "limit": "並列処理可能ブランチ数:{{num}}", + "depthLimit": "並列ネスト最大階層数:{{num}}" + }, + "disconnect": "接続解除", + "jumpToNode": "このノードに移動", + "addParallelNode": "並列ノードを追加", + "parallel": "並列", + "branch": "ブランチ", + "onFailure": "失敗時", + "addFailureBranch": "失敗ブランチを追加", + "loadMore": "さらに読み込む", + "noHistory": "履歴がありません", + "tagBound": "このタグを使用しているアプリの数", + "moreActions": "さらにアクション", + "listening": "リッスン中", + "features": "機能", + "featuresDescription": "ウェブアプリのユーザー体験を向上させる", + "featuresDocLink": "もっと詳しく知る" + }, + "publishLimit": { + "startNodeTitlePrefix": "アップグレードして、", + "startNodeTitleSuffix": "各ワークフローのトリガーを制限なしで使用できます。", + "startNodeDesc": "このプランでは、各ワークフローのトリガー数は最大 2 個まで設定できます。公開するにはアップグレードが必要です。" + }, + "env": { + "envPanelTitle": "環境変数", + "envDescription": "環境変数は、個人情報や認証情報を格納するために使用することができます。これらは読み取り専用であり、DSL ファイルからエクスポートする際には分離されます。", + "envPanelButton": "環境変数を追加", + "modal": { + "title": "環境変数を追加", + "editTitle": "環境変数を編集", + "type": "タイプ", + "name": "変数名", + "namePlaceholder": "変数名を入力", + "value": "値", + "valuePlaceholder": "変数値を入力", + "secretTip": "この変数は機密情報やデータを定義するために使用されます。DSL をエクスポートするときに漏洩防止メカニズムを設定されます。", + "description": "説明", + "descriptionPlaceholder": "変数の説明を入力" + }, + "export": { + "title": "シークレット環境変数をエクスポートしますか?", + "checkbox": "シークレット値を含む", + "ignore": "DSL をエクスポート", + "export": "シークレット値付きでエクスポート" + } + }, + "globalVar": { + "title": "システム変数", + "description": "システム変数は、タイプが適合していれば配線なしで任意のノードから参照できるグローバル変数です。エンドユーザーIDやワークフローIDなどが含まれます。", + "fieldsDescription": { + "conversationId": "会話ID", + "dialogCount": "会話数", + "userId": "ユーザーID", + "triggerTimestamp": "アプリケーションの起動タイムスタンプ", + "appId": "アプリケーションID", + "workflowId": "ワークフローID", + "workflowRunId": "ワークフロー実行ID" + } + }, + "sidebar": { + "exportWarning": "現在保存されているバージョンをエクスポート", + "exportWarningDesc": "これは現在保存されているワークフローのバージョンをエクスポートします。エディターで未保存の変更がある場合は、まずワークフローキャンバスのエクスポートオプションを使用して保存してください。" + }, + "chatVariable": { + "panelTitle": "会話変数", + "panelDescription": "対話情報を保存・管理(会話履歴/ファイル/ユーザー設定など)。書き換えができます。", + "docLink": "詳細ドキュメント", + "button": "変数を追加", + "modal": { + "title": "会話変数を追加", + "editTitle": "会話変数を編集", + "name": "変数名", + "namePlaceholder": "変数名を入力", + "type": "タイプ", + "value": "デフォルト値", + "valuePlaceholder": "デフォルト値、設定しない場合は空白にしてください", + "description": "説明", + "descriptionPlaceholder": "変数の説明を入力", + "editInJSON": "JSON で編集", + "oneByOne": "個別追加", + "editInForm": "フォームで編集", + "arrayValue": "値", + "addArrayValue": "値を追加", + "objectKey": "キー", + "objectType": "タイプ", + "objectValue": "デフォルト値" + }, + "storedContent": "保存内容", + "updatedAt": "最終更新:" + }, + "changeHistory": { + "title": "変更履歴", + "placeholder": "まだ何も変更されていません", + "clearHistory": "履歴をクリア", + "hint": "ヒント", + "hintText": "エディターでの編集操作は、エディターを離れるまで、お使いのデバイスに記録されます。この履歴は、エディターを離れると消去されます。", + "stepBackward_one": "{{count}} ステップ戻る", + "stepBackward_other": "{{count}} ステップ戻る", + "stepForward_one": "{{count}} ステップ進む", + "stepForward_other": "{{count}} ステップ進む", + "sessionStart": "セッション開始", + "currentState": "現在の状態", + "nodeTitleChange": "ブロックのタイトルが変更されました", + "nodeDescriptionChange": "ブロックの説明が変更されました", + "nodeDragStop": "ブロックが移動されました", + "nodeChange": "ブロックが変更されました", + "nodeConnect": "ブロックが接続されました", + "nodePaste": "ブロックが貼り付けられました", + "nodeDelete": "ブロックが削除されました", + "nodeAdd": "ブロックが追加されました", + "nodeResize": "ブロックのサイズが変更されました", + "noteAdd": "注釈が追加されました", + "noteChange": "注釈が変更されました", + "noteDelete": "注釈が削除されました", + "edgeDelete": "ブロックの接続が解除されました" + }, + "errorMsg": { + "fieldRequired": "{{field}} は必須です", + "rerankModelRequired": "Rerank モデルが設定されていません", + "authRequired": "認証が必要です", + "invalidJson": "{{field}} は無効な JSON です", + "fields": { + "variable": "変数名", + "variableValue": "変数値", + "code": "コード", + "model": "モデル", + "rerankModel": "Rerank モデル", + "visionVariable": "ビジョン変数" + }, + "invalidVariable": "無効な変数です", + "noValidTool": "{{field}} に利用可能なツールがありません", + "toolParameterRequired": "{{field}}: パラメータ [{{param}}] は必須です", + "startNodeRequired": "{{operation}}前に開始ノードを追加してください" + }, + "error": { + "startNodeRequired": "{{operation}}前に開始ノードを追加してください", + "operations": { + "connectingNodes": "ノード接続", + "addingNodes": "ノード追加", + "modifyingWorkflow": "ワークフロー変更", + "updatingWorkflow": "ワークフロー更新" + } + }, + "singleRun": { + "testRun": "テスト実行", + "startRun": "実行開始", + "running": "実行中", + "testRunIteration": "テスト実行(イテレーション)", + "back": "戻る", + "iteration": "イテレーション", + "loop": "ループ", + "reRun": "再実行", + "preparingDataSource": "データソースの準備" + }, + "tabs": { + "searchBlock": "ブロック検索", + "blocks": "ブロック", + "searchTool": "ツール検索", + "searchTrigger": "トリガー検索...", + "tools": "ツール", + "allTriggers": "すべてのトリガー", + "allTool": "すべて", + "customTool": "カスタム", + "workflowTool": "ワークフロー", + "question-understand": "問題理解", + "logic": "ロジック", + "transform": "変換", + "utilities": "ツール", + "noResult": "該当なし", + "noPluginsFound": "プラグインが見つかりません", + "requestToCommunity": "コミュニティにリクエスト", + "plugin": "プラグイン", + "agent": "エージェント戦略", + "noFeaturedPlugins": "マーケットプレイスでさらにツールを見つける", + "noFeaturedTriggers": "マーケットプレイスでさらにトリガーを見つける", + "addAll": "すべてを追加する", + "allAdded": "すべて追加されました", + "searchDataSource": "データソースを検索", + "sources": "ソース", + "start": "始める", + "startDisabledTip": "トリガーノードとユーザー入力ノードは互いに排他です。", + "featuredTools": "特集", + "showMoreFeatured": "もっと見る", + "showLessFeatured": "表示を減らす", + "installed": "インストール済み", + "pluginByAuthor": "{{author}} によって", + "usePlugin": "ツールを選択", + "hideActions": "ツールを隠す" + }, + "blocks": { + "start": "ユーザー入力", + "originalStartNode": "元の開始ノード", + "end": "出力", + "answer": "回答", + "llm": "LLM", + "knowledge-retrieval": "知識検索", + "question-classifier": "質問分類器", + "if-else": "IF/ELSE", + "code": "コード実行", + "template-transform": "テンプレート", + "http-request": "HTTP リクエスト", + "variable-assigner": "変数代入器", + "variable-aggregator": "変数集約器", + "assigner": "変数代入", + "iteration-start": "イテレーション開始", + "iteration": "イテレーション", + "parameter-extractor": "パラメータ抽出", + "document-extractor": "テキスト抽出", + "list-operator": "リスト処理", + "agent": "エージェント", + "loop-start": "ループ開始", + "loop": "ループ", + "loop-end": "ループ完了", + "knowledge-index": "知識ベース", + "datasource": "データソース", + "trigger-plugin": "プラグイントリガー", + "trigger-webhook": "Webhook トリガー", + "trigger-schedule": "スケジュールトリガー" + }, + "customWebhook": "カスタムWebhook", + "blocksAbout": { + "start": "ワークフロー開始時の初期パラメータを定義します。", + "end": "ワークフローの出力と結果のタイプを定義します", + "answer": "チャットダイアログの返答内容を定義します。", + "llm": "大規模言語モデルを呼び出して質問回答や自然言語処理を実行します。", + "knowledge-retrieval": "ナレッジベースからユーザー質問に関連するテキストを検索します。", + "question-classifier": "質問の分類条件を定義し、LLM が分類に基づいて対話フローを制御します。", + "if-else": "if/else 条件でワークフローを 2 つの分岐に分割します。", + "code": "Python/NodeJS コードを実行してカスタムロジックを実装します。", + "template-transform": "Jinja テンプレート構文でデータを文字列に変換します。", + "http-request": "HTTP リクエストを送信できます。", + "variable-assigner": "複数分岐の変数を集約し、下流ノードの設定を統一します。", + "assigner": "書き込み可能な変数(例:会話変数)への値の割り当てを行います。", + "variable-aggregator": "複数分岐の変数を集約し、下流ノードの設定を統一します。", + "iteration": "リスト要素に対して反復処理を実行し全結果を出力します。", + "loop": "終了条件達成まで、または最大反復回数までロジックを繰り返します。", + "loop-end": "「break」相当の機能です。このノードに設定項目はなく、ループ処理中にこのノードに到達すると即時終了します。", + "parameter-extractor": "自然言語から構造化パラメータを抽出し、後続処理で利用します。", + "document-extractor": "アップロード文書を LLM 処理用に最適化されたテキストに変換します。", + "list-operator": "配列のフィルタリングやソート処理を行います。", + "agent": "大規模言語モデルを活用した質問応答や自然言語処理を実行します。", + "knowledge-index": "知識ベースについて", + "datasource": "データソースについて", + "trigger-schedule": "スケジュールに基づいてワークフローを開始する時間ベースのトリガー", + "trigger-webhook": "Webhook トリガーは第三者システムからの HTTP プッシュを受信してワークフローを自動的に開始します。", + "trigger-plugin": "サードパーティ統合トリガー、外部プラットフォームのイベントによってワークフローを開始します" + }, + "difyTeam": "Dify チーム", + "operator": { + "zoomIn": "拡大", + "zoomOut": "縮小", + "zoomTo50": "50% サイズ", + "zoomTo100": "等倍表示", + "zoomToFit": "画面に合わせる", + "horizontal": "水平", + "alignBottom": "下", + "alignNodes": "ノードを整列", + "vertical": "垂直", + "alignLeft": "左", + "alignTop": "上", + "alignRight": "右", + "alignMiddle": "中央", + "distributeVertical": "垂直方向に等間隔配置", + "alignCenter": "中央", + "selectionAlignment": "選択の整列", + "distributeHorizontal": "水平方向に等間隔配置" + }, + "variableReference": { + "noAvailableVars": "利用可能な変数がありません", + "noVarsForOperation": "この操作に割り当て可能な変数が存在しません。", + "noAssignedVars": "割り当て可能な変数がありません", + "assignedVarsDescription": "書き込み可能な変数(例:", + "conversationVars": "会話変数" + }, + "panel": { + "userInputField": "ユーザー入力欄", + "changeBlock": "ノード変更", + "helpLink": "ドキュメントを見る", + "about": "詳細", + "createdBy": "作成者", + "nextStep": "次のステップ", + "addNextStep": "このワークフローで次ノードを追加", + "selectNextStep": "次ノード選択", + "runThisStep": "このステップ実行", + "checklist": "チェックリスト", + "checklistTip": "公開前に全ての項目を確認してください", + "checklistResolved": "全てのチェックが完了しました", + "goTo": "移動", + "startNode": "開始ノード", + "organizeBlocks": "ノード整理", + "change": "変更", + "optional": "(任意)", + "maximize": "キャンバスを最大化する", + "minimize": "全画面を終了する", + "scrollToSelectedNode": "選択したノードまでスクロール", + "optional_and_hidden": "(オプションおよび非表示)", + "openWorkflow": "ワークフローを開く" + }, + "nodes": { + "common": { + "outputVars": "出力変数", + "insertVarTip": "変数を挿入", + "memory": { + "memory": "メモリ", + "memoryTip": "チャットメモリ設定", + "windowSize": "メモリウィンドウサイズ", + "conversationRoleName": "会話ロール名", + "user": "ユーザー接頭辞", + "assistant": "アシスタント接頭辞" + }, + "memories": { + "title": "メモリ", + "tip": "チャットの記憶管理", + "builtIn": "組み込み" + }, + "errorHandle": { + "title": "例外処理", + "tip": "ノード例外発生時の処理ポリシーを設定", + "none": { + "title": "処理なし", + "desc": "例外発生時に処理を停止" + }, + "defaultValue": { + "title": "デフォルト値", + "desc": "例外発生時のデフォルト出力", + "tip": "例外発生時に返される値:", + "inLog": "ノード例外 - デフォルト値を出力", + "output": "デフォルト値出力" + }, + "failBranch": { + "title": "例外分岐", + "desc": "例外発生時に分岐を実行", + "customize": "失敗分岐ロジックをカスタマイズ", + "customizeTip": "例外発生時、失敗分岐でエラー処理を柔軟に設定可能(エラーログ表示/修復処理/操作スキップ等)", + "inLog": "ノード例外 - 失敗分岐を実行。エラー情報を下流に伝播" + }, + "partialSucceeded": { + "tip": "{{num}}個のノードで異常発生。ログはトレース画面で確認可能" + } + }, + "retry": { + "retry": "再試行", + "retryOnFailure": "失敗時再試行", + "maxRetries": "最大試行回数", + "retryInterval": "再試行間隔", + "retryTimes": "失敗時 {{times}}回再試行", + "retrying": "再試行中...", + "retrySuccessful": "再試行成功", + "retryFailed": "再試行失敗", + "retryFailedTimes": "{{times}}回再試行失敗", + "times": "回", + "ms": "ミリ秒", + "retries": "再試行回数:{{num}}" + }, + "typeSwitch": { + "input": "入力値", + "variable": "変数を使用する" + }, + "inputVars": "入力変数", + "pluginNotInstalled": "プラグインがインストールされていません" + }, + "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": "AI モデル", + "variables": "変数", + "context": "コンテキスト", + "contextTooltip": "ナレッジベースをコンテキストとして利用", + "notSetContextInPromptTip": "コンテキスト利用時はプロンプトに変数を明記してください", + "prompt": "プロンプト", + "addMessage": "メッセージ追加", + "roleDescription": { + "system": "対話の基本動作を定義", + "user": "指示/質問を入力", + "assistant": "ユーザー入力への応答" + }, + "vision": "ビジョン", + "files": "ファイル", + "resolution": { + "name": "解像度", + "high": "高", + "low": "低" + }, + "outputVars": { + "output": "生成内容", + "reasoning_content": "推論内容", + "usage": "モデル使用量" + }, + "singleRun": { + "variable": "変数" + }, + "sysQueryInUser": "ユーザーメッセージに sys.query を含めてください", + "jsonSchema": { + "title": "構造化データスキーマ", + "instruction": "指示", + "promptTooltip": "テキスト説明から標準 JSON スキーマを自動生成できます。", + "promptPlaceholder": "JSON スキーマを入力...", + "generate": "生成", + "import": "JSON インポート", + "generateJsonSchema": "スキーマ生成", + "generationTip": "自然言語で簡単に JSON スキーマを作成可能です。", + "generating": "JSON スキーマを生成中...", + "generatedResult": "生成結果", + "resultTip": "こちらが生成された結果です。ご満足いただけない場合は、前の画面に戻ってプロンプトを修正できます。", + "back": "前に戻る", + "regenerate": "再生成する", + "apply": "適用", + "doc": "構造化出力の詳細を見る", + "resetDefaults": "初期化", + "required": "必須項目", + "addField": "フィールドを追加", + "addChildField": "サブフィールドを追加", + "showAdvancedOptions": "詳細設定", + "stringValidations": "文字列検証", + "fieldNamePlaceholder": "フィールド名", + "descriptionPlaceholder": "説明を入力", + "warningTips": { + "saveSchema": "編集中のフィールドを確定してから保存してください。" + } + }, + "reasoningFormat": { + "tagged": "タグを考え続けてください", + "separated": "思考タグを分ける", + "title": "推論タグの分離を有効にする", + "tooltip": "thinkタグから内容を抽出し、それをreasoning_contentフィールドに保存します。" + } + }, + "knowledgeRetrieval": { + "queryVariable": "検索変数", + "knowledge": "ナレッジベース", + "outputVars": { + "output": "検索結果セグメント", + "content": "セグメント内容", + "title": "セグメントタイトル", + "icon": "セグメントアイコン", + "url": "セグメント URL", + "metadata": "メタデータ", + "files": "取得したファイル" + }, + "metadata": { + "title": "メタデータフィルタ", + "tip": "タグ/カテゴリ等の属性で検索を絞り込み", + "options": { + "disabled": { + "title": "無効", + "subTitle": "フィルタリング不使用" + }, + "automatic": { + "title": "自動生成", + "subTitle": "検索履歴からフィルタ条件を自動生成", + "desc": "Query Variable(検索変数)に基づきフィルタ条件を自動生成" + }, + "manual": { + "title": "手動設定", + "subTitle": "メタデータの条件を手動で追加" + } + }, + "panel": { + "title": "メタデータのフィルタ条件", + "conditions": "条件一覧", + "add": "条件追加", + "search": "メタデータ検索", + "placeholder": "値を入力", + "datePlaceholder": "日付選択...", + "select": "変数選択..." + } + }, + "queryText": "クエリテキスト", + "queryAttachment": "画像を検索" + }, + "http": { + "inputVars": "入力変数", + "api": "API", + "apiPlaceholder": "URL を入力(変数使用時は\"/\"を入力)", + "extractListPlaceholder": "リスト番号を入力(変数使用時は\"/\"を入力)", + "notStartWithHttp": "API は http:// または https:// で始まってください", + "key": "キー", + "type": "タイプ", + "value": "値", + "bulkEdit": "一括編集", + "keyValueEdit": "キーバリュー編集", + "headers": "ヘッダー", + "params": "パラメータ", + "body": "ボディ", + "binaryFileVariable": "バイナリファイル変数", + "outputVars": { + "body": "レスポンスコンテンツ", + "statusCode": "レスポンスステータスコード", + "headers": "レスポンスヘッダ(JSON)", + "files": "ファイル一覧" + }, + "authorization": { + "authorization": "認証", + "authorizationType": "認証タイプ", + "no-auth": "なし", + "api-key": "API キー", + "auth-type": "API 認証タイプ", + "basic": "ベーシック", + "bearer": "Bearer", + "custom": "カスタム", + "api-key-title": "API キー", + "header": "ヘッダー" + }, + "insertVarPlaceholder": "変数を挿入するには'/'を入力してください", + "timeout": { + "title": "タイムアウト設定", + "connectLabel": "接続タイムアウト", + "connectPlaceholder": "接続タイムアウト(秒)", + "readLabel": "読み取りタイムアウト", + "readPlaceholder": "読み取りタイムアウト(秒)", + "writeLabel": "書き込みタイムアウト", + "writePlaceholder": "書き込みタイムアウト(秒)" + }, + "curl": { + "title": "cURL からインポート", + "placeholder": "ここに cURL 文字列を貼り付けます" + }, + "verifySSL": { + "title": "SSL証明書を確認する", + "warningTooltip": "SSL検証を無効にすることは、本番環境では推奨されません。これは開発またはテストのみに使用すべきであり、中間者攻撃などのセキュリティ脅威に対して接続を脆弱にするためです。" + } + }, + "code": { + "inputVars": "入力変数", + "outputVars": "出力変数", + "advancedDependencies": "高度な依存関係", + "advancedDependenciesTip": "消費に時間がかかる、またはデフォルトで組み込まれていない事前ロードされた依存関係を追加します", + "searchDependencies": "依存関係を検索", + "syncFunctionSignature": "コードの関数署名を同期" + }, + "templateTransform": { + "inputVars": "入力変数", + "code": "コード", + "codeSupportTip": "Jinja2 のみをサポートしています", + "outputVars": { + "output": "変換されたコンテンツ" + } + }, + "ifElse": { + "if": "もし", + "else": "それ以外", + "elseDescription": "IF 条件が満たされない場合に実行するロジックを定義します。", + "and": "かつ", + "or": "または", + "operator": "演算子", + "notSetVariable": "まず変数を設定してください", + "comparisonOperator": { + "contains": "含む", + "not contains": "含まない", + "start with": "で始まる", + "end with": "で終わる", + "is": "である", + "is not": "でない", + "empty": "空", + "not empty": "空でない", + "null": "null", + "not null": "null でない", + "in": "含まれている", + "not in": "含まれていない", + "all of": "すべての", + "exists": "存在します", + "not exists": "存在しません", + "before": "前に", + "after": "後" + }, + "enterValue": "値を入力", + "addCondition": "条件を追加", + "conditionNotSetup": "条件が設定されていません", + "selectVariable": "変数を選択...", + "optionName": { + "audio": "音声", + "localUpload": "ローカルアップロード", + "image": "画像", + "video": "映像", + "doc": "ドキュメント", + "url": "URL" + }, + "select": "選ぶ", + "addSubVariable": "サブ変数" + }, + "variableAssigner": { + "title": "変数を代入する", + "outputType": "出力タイプ", + "varNotSet": "変数が設定されていません", + "noVarTip": "代入された変数を追加してください", + "type": { + "string": "文字列", + "number": "数値", + "object": "オブジェクト", + "array": "配列" + }, + "aggregationGroup": "グループ", + "aggregationGroupTip": "この機能を有効にすると、変数集約器は複数のセットの変数を集約できます。", + "addGroup": "グループを追加", + "outputVars": { + "varDescribe": "{{groupName}} 出力" + }, + "setAssignVariable": "代入された変数を設定" + }, + "assigner": { + "assignedVariable": "代入された変数", + "writeMode": "書き込みモード", + "writeModeTip": "代入された変数が配列の場合,末尾に追記モードを追加する。", + "over-write": "上書き", + "append": "追記", + "plus": "プラス", + "clear": "クリア", + "setVariable": "変数を設定する", + "variable": "変数", + "operations": { + "title": "操作", + "set": "セット", + "clear": "クリア", + "overwrite": "上書き", + "append": "追加", + "-=": "-=", + "/=": "/=", + "+=": "+=", + "over-write": "上書き", + "extend": "延ばす", + "*=": "*=", + "remove-last": "最後を削除する", + "remove-first": "最初を削除する" + }, + "setParameter": "パラメータを設定...", + "selectAssignedVariable": "代入変数を選択...", + "varNotSet": "変数が設定されていません", + "variables": "変数", + "noVarTip": "「+」ボタンをクリックして変数を追加します", + "noAssignedVars": "使用可能な代入変数がありません", + "assignedVarsDescription": "代入される変数は、会話変数などの書き込み可能な変数である必要があります。" + }, + "tool": { + "inputVars": "入力変数", + "outputVars": { + "text": "ツールが生成したコンテンツ", + "files": { + "title": "ツールが生成したファイル", + "type": "サポートタイプ。現在は画像のみサポートされています", + "transfer_method": "転送方法。値は remote_url または local_file です", + "url": "画像 URL", + "upload_file_id": "アップロードファイル ID" + }, + "json": "ツールで生成された JSON" + }, + "authorize": "認証する", + "settings": "設定", + "insertPlaceholder1": "タイプするか押してください", + "insertPlaceholder2": "変数を挿入する" + }, + "questionClassifiers": { + "model": "モデル", + "inputVars": "入力変数", + "outputVars": { + "className": "クラス名", + "usage": "モデル使用量" + }, + "class": "クラス", + "classNamePlaceholder": "クラス名を入力してください", + "advancedSetting": "高度な設定", + "topicName": "トピック名", + "topicPlaceholder": "トピック名を入力してください", + "addClass": "クラスを追加", + "instruction": "指示", + "instructionTip": "質問分類器が質問をどのように分類するかをよりよく理解するための追加の指示を入力します。", + "instructionPlaceholder": "指示を入力してください" + }, + "parameterExtractor": { + "inputVar": "入力変数", + "outputVars": { + "isSuccess": "成功。成功した場合の値は 1、失敗した場合の値は 0 です。", + "errorReason": "エラーの理由", + "usage": "モデル使用量" + }, + "extractParameters": "パラメーターを抽出", + "importFromTool": "ツールからインポート", + "addExtractParameter": "抽出パラメーターを追加", + "addExtractParameterContent": { + "name": "名前", + "namePlaceholder": "抽出パラメーター名", + "type": "タイプ", + "typePlaceholder": "抽出パラメータータイプ", + "description": "説明", + "descriptionPlaceholder": "抽出パラメーターの説明", + "required": "必須", + "requiredContent": "必須はモデル推論の参考としてのみ使用され、パラメーター出力の必須検証には使用されません。" + }, + "extractParametersNotSet": "抽出パラメーターが設定されていません", + "instruction": "指示", + "instructionTip": "パラメーター抽出器がパラメーターを抽出する方法を理解するのに役立つ追加の指示を入力します。", + "advancedSetting": "高度な設定", + "reasoningMode": "推論モード", + "reasoningModeTip": "関数呼び出しやプロンプトの指示に応答するモデルの能力に基づいて、適切な推論モードを選択できます。" + }, + "iteration": { + "deleteTitle": "イテレーションノードを削除しますか?", + "deleteDesc": "イテレーションノードを削除すると、すべての子ノードが削除されます", + "input": "入力", + "output": "出力変数", + "iteration_one": "{{count}} イテレーション", + "iteration_other": "{{count}} イテレーション", + "currentIteration": "現在のイテレーション", + "ErrorMethod": { + "operationTerminated": "終了", + "continueOnError": "エラー時に続行", + "removeAbnormalOutput": "アブノーマルアウトプットの削除" + }, + "comma": ",", + "error_other": "{{カウント}}エラー", + "error_one": "{{カウント}}エラー", + "parallelModeUpper": "パラレルモード", + "parallelMode": "パラレルモード", + "MaxParallelismTitle": "最大並列処理", + "errorResponseMethod": "エラー応答方式", + "parallelPanelDesc": "並列モードでは、イテレーションのタスクは並列実行をサポートします。", + "parallelModeEnableDesc": "並列モードでは、イテレーション内のタスクは並列実行をサポートします。これは、右側のプロパティパネルで構成できます。", + "parallelModeEnableTitle": "パラレルモード有効", + "MaxParallelismDesc": "最大並列処理は、1 回の反復で同時に実行されるタスクの数を制御するために使用されます。", + "answerNodeWarningDesc": "並列モードの警告:応答ノード、会話変数の割り当て、およびイテレーション内の永続的な読み取り/書き込み操作により、例外が発生する可能性があります。", + "flattenOutput": "出力をフラット化", + "flattenOutputDesc": "有効にすると、すべての反復出力が配列の場合、1つの配列にまとめてフラット化されます。無効の場合はネストされた配列構造のままです。" + }, + "loop": { + "deleteTitle": "ループノードを削除しますか?", + "deleteDesc": "ループノードを削除すると、全ての子ノードが削除されます。", + "input": "入力", + "output": "出力変数", + "loop_one": "{{count}}回", + "loop_other": "{{count}}回", + "currentLoop": "現在のループ", + "breakCondition": "ループ終了条件", + "breakConditionTip": "ループ内の変数やセッション変数を参照し、終了条件を設定できます。", + "loopMaxCount": "最大ループ回数", + "loopMaxCountError": "最大ループ回数は 1 から{{maxCount}}の範囲で正しく入力してください。", + "errorResponseMethod": "エラー対応方法", + "ErrorMethod": { + "operationTerminated": "エラー時に処理を終了", + "continueOnError": "エラーを無視して継続", + "removeAbnormalOutput": "異常出力を除外" + }, + "loopVariables": "ループ変数", + "initialLoopVariables": "初期ループ変数", + "finalLoopVariables": "最終ループ変数", + "setLoopVariables": "ループスコープ内で変数を設定", + "variableName": "変数名", + "inputMode": "入力モード", + "exitConditionTip": "ループノードには少なくとも 1 つの終了条件が必要です", + "loopNode": "ループノード", + "currentLoopCount": "現在のループ回数:{{count}}", + "totalLoopCount": "総ループ回数:{{count}}", + "error_other": "{{count}} エラー", + "error_one": "{{count}} エラー", + "comma": "," + }, + "note": { + "addNote": "コメントを追加", + "editor": { + "placeholder": "メモを書く...", + "small": "小", + "medium": "中", + "large": "大", + "bold": "太字", + "italic": "斜体", + "strikethrough": "打ち消し線", + "link": "リンク", + "openLink": "開く", + "unlink": "リンクをキャンセル", + "enterUrl": "リンク入力中...", + "invalidUrl": "リンク無効", + "bulletList": "リスト", + "showAuthor": "著者を表示する" + } + }, + "docExtractor": { + "outputVars": { + "text": "抽出されたテキスト" + }, + "inputVar": "入力変数", + "learnMore": "詳細はこちら", + "supportFileTypes": "サポートするファイルタイプ:{{types}}。" + }, + "listFilter": { + "outputVars": { + "last_record": "最後のレコード", + "first_record": "最初のレコード", + "result": "フィルター結果" + }, + "limit": "トップ N", + "asc": "ASC", + "filterCondition": "フィルター条件", + "filterConditionKey": "フィルター条件キー", + "orderBy": "並べる順番", + "filterConditionComparisonValue": "フィルター条件の値", + "selectVariableKeyPlaceholder": "サブ変数キーを選択する", + "filterConditionComparisonOperator": "フィルター条件を比較オペレーター", + "inputVar": "入力変数", + "desc": "DESC", + "extractsCondition": "N 個のアイテムを抽出します" + }, + "agent": { + "strategy": { + "label": "エージェンティック戦略", + "configureTipDesc": "エージェント戦略を設定した後、このノードは残りの設定を自動的に読み込みます。この戦略は、マルチステップツール推論のメカニズムに影響を与えます。", + "searchPlaceholder": "エージェンティック戦略を検索する", + "configureTip": "エージェンティック戦略を設定してください。", + "shortLabel": "戦略", + "tooltip": "異なるエージェンティック戦略が、システムがマルチステップのツール呼び出しを計画し実行する方法を決定します。", + "selectTip": "エージェンシー戦略を選択する" + }, + "pluginInstaller": { + "install": "インストール", + "installing": "インストール中" + }, + "modelNotInMarketplace": { + "manageInPlugins": "プラグインを管理する", + "title": "モデルがインストールされていません", + "desc": "このモデルはローカルまたは GitHub リポジトリからインストールされます。インストール後にご利用ください。" + }, + "modelNotSupport": { + "title": "サポートされていないモデル", + "descForVersionSwitch": "インストールされたプラグインのバージョンはこのモデルを提供していません。バージョンを切り替えるにはクリックしてください。", + "desc": "インストールされたプラグインのバージョンは、このモデルを提供していません。" + }, + "modelSelectorTooltips": { + "deprecated": "このモデルは廃止されました" + }, + "outputVars": { + "files": { + "url": "画像の URL", + "type": "サポートタイプ。現在はサポート画像のみ", + "upload_file_id": "ファイル ID をアップロード", + "transfer_method": "転送方法。値は remote_url または local_file です。", + "title": "エージェント生成ファイル" + }, + "text": "エージェント生成コンテンツ", + "json": "エージェント生成の JSON", + "usage": "モデル使用量" + }, + "checkList": { + "strategyNotSelected": "戦略が選択されていません" + }, + "installPlugin": { + "install": "インストール", + "changelog": "変更ログ", + "cancel": "キャンセル", + "desc": "次のプラグインをインストールしようとしています", + "title": "プラグインをインストールする" + }, + "strategyNotSet": "エージェンティック戦略は設定されていません", + "strategyNotInstallTooltip": "{{strategy}}はインストールされていません", + "modelNotSelected": "モデルが選択されていません", + "toolNotAuthorizedTooltip": "{{tool}} 認可されていません", + "toolNotInstallTooltip": "{{tool}}はインストールされていません", + "tools": "ツール", + "learnMore": "もっと学ぶ", + "configureModel": "モデルを設定する", + "model": "モデル", + "linkToPlugin": "プラグインへのリンク", + "notAuthorized": "権限がありません", + "modelNotInstallTooltip": "このモデルはインストールされていません", + "maxIterations": "最大反復回数", + "toolbox": "ツールボックス", + "pluginNotInstalled": "このプラグインはインストールされていません", + "strategyNotFoundDescAndSwitchVersion": "インストールされたプラグインのバージョンはこの戦略を提供していません。バージョンを切り替えるにはクリックしてください。", + "pluginNotInstalledDesc": "このプラグインは GitHub からインストールされています。再インストールするにはプラグインに移動してください。", + "unsupportedStrategy": "サポートされていない戦略", + "pluginNotFoundDesc": "このプラグインは GitHub からインストールされています。再インストールするにはプラグインに移動してください。", + "strategyNotFoundDesc": "インストールされたプラグインのバージョンは、この戦略を提供していません。", + "parameterSchema": "パラメータスキーマ", + "clickToViewParameterSchema": "パラメータースキーマを見るにはクリックしてください" + }, + "dataSource": { + "add": "データソースを追加", + "supportedFileFormats": "サポートされているファイル形式", + "supportedFileFormatsPlaceholder": "ファイル拡張子、例:doc" + }, + "knowledgeBase": { + "chunkStructureTip": { + "title": "チャンク構造を選択してください", + "learnMore": "もっと学ぶ", + "message": "Difyナレッジベースは、一般的な、親子関係、Q&Aの3つのチャンク構造をサポートしています。各ナレッジベースには一つの構造のみが持てます。前のノードからの出力は、選択されたチャンク構造と一致する必要があります。チャンク構造の選択が利用可能なインデックス方式に影響を与えることに注意してください。" + }, + "aboutRetrieval": "取得方法について。", + "chooseChunkStructure": "チャンク構造を選択する", + "chunkStructure": "チャンク構造", + "chunkIsRequired": "チャンク構造が必要です", + "retrievalSettingIsRequired": "リトリーバル設定が必要です", + "changeChunkStructure": "チャンク構造を変更する", + "indexMethodIsRequired": "インデックスメソッドが必要です", + "chunksInput": "チャンク", + "chunksInputTip": "知識ベースノードの入力変数はチャンクです。変数のタイプは、選択されたチャンク構造と一貫性のある特定のJSONスキーマを持つオブジェクトです。", + "chunksVariableIsRequired": "Chunks変数は必須です", + "embeddingModelIsRequired": "埋め込みモデルが必要です", + "rerankingModelIsRequired": "再ランキングモデルが必要です", + "embeddingModelIsInvalid": "埋め込みモデルが無効です", + "rerankingModelIsInvalid": "リランキングモデルは無効です" + }, + "triggerSchedule": { + "frequency": { + "label": "頻度", + "monthly": "毎月", + "weekly": "毎週", + "daily": "毎日", + "hourly": "毎時" + }, + "frequencyLabel": "頻度", + "days": "日", + "title": "スケジュール", + "minutes": "分", + "time": "時刻", + "useCronExpression": "Cron 式を使用", + "nextExecutionTimes": "次の5回の実行時刻", + "nextExecution": "次回実行", + "notConfigured": "未設定", + "startTime": "開始時刻", + "hours": "時間", + "onMinute": "分", + "executeNow": "今すぐ実行", + "weekdays": "曜日", + "selectDateTime": "日時を選択", + "cronExpression": "Cron 式", + "selectFrequency": "頻度を選択", + "lastDay": "月末", + "nextExecutionTime": "次回実行時刻", + "lastDayTooltip": "すべての月に31日があるわけではありません。「月末」オプションを使用して各月の最終日を選択してください。", + "useVisualPicker": "ビジュアル設定を使用", + "nodeTitle": "スケジュールトリガー", + "mode": "モード", + "modeVisual": "ビジュアル", + "modeCron": "Cron", + "selectTime": "時間を選択", + "timezone": "タイムゾーン", + "visualConfig": "ビジュアル設定", + "monthlyDay": "月の日", + "executionTime": "実行時間", + "invalidTimezone": "無効なタイムゾーン", + "invalidCronExpression": "無効なCron式", + "noValidExecutionTime": "有効な実行時間を計算できません", + "executionTimeCalculationError": "実行時間の計算に失敗しました", + "invalidFrequency": "無効な頻度", + "invalidStartTime": "無効な開始時間", + "startTimeMustBeFuture": "開始時間は未来の時間である必要があります", + "invalidTimeFormat": "無効な時間形式(期待される形式:HH:MM AM/PM)", + "invalidWeekday": "無効な曜日:{{weekday}}", + "invalidMonthlyDay": "月の日は1-31の間または\"last\"である必要があります", + "invalidOnMinute": "分は0-59の間である必要があります", + "invalidExecutionTime": "無効な実行時間", + "executionTimeMustBeFuture": "実行時間は未来の時間である必要があります" + }, + "triggerWebhook": { + "title": "Webhook トリガー", + "nodeTitle": "🔗 Webhook トリガー", + "configPlaceholder": "Webhook トリガーの設定がここに実装されます", + "webhookUrl": "Webhook URL", + "webhookUrlPlaceholder": "生成をクリックして Webhook URL を作成", + "generate": "生成", + "copy": "コピー", + "test": "テスト", + "urlGenerated": "Webhook URL を生成しました", + "urlGenerationFailed": "Webhook URL の生成に失敗しました", + "urlCopied": "URL をクリップボードにコピーしました", + "method": "メソッド", + "contentType": "コンテンツタイプ", + "queryParameters": "クエリパラメータ", + "headerParameters": "ヘッダーパラメータ", + "requestBodyParameters": "リクエストボディパラメータ", + "parameterName": "変数名", + "varName": "変数名", + "varType": "タイプ", + "varNamePlaceholder": "変数名を入力...", + "required": "必須", + "addParameter": "追加", + "addHeader": "追加", + "noParameters": "設定されたパラメータはありません", + "noQueryParameters": "クエリパラメータは設定されていません", + "noHeaders": "ヘッダーは設定されていません", + "noBodyParameters": "ボディパラメータは設定されていません", + "debugUrlTitle": "テスト実行には、常にこのURLを使用してください", + "debugUrlCopy": "クリックしてコピー", + "debugUrlCopied": "コピーしました!", + "errorHandling": "エラー処理", + "errorStrategy": "エラー処理", + "responseConfiguration": "レスポンス", + "asyncMode": "非同期モード", + "statusCode": "ステータスコード", + "responseBody": "レスポンスボディ", + "responseBodyPlaceholder": "ここにレスポンスボディを入力してください", + "headers": "ヘッダー", + "validation": { + "webhookUrlRequired": "Webhook URLが必要です", + "invalidParameterType": "パラメータ\"{{name}}\"の無効なパラメータタイプ\"{{type}}\"です" + }, + "debugUrlPrivateAddressWarning": "このURLは内部アドレスのようです。Webhookリクエストが失敗する可能性があります。TRIGGER_URL を公開アドレスに変更できます。" + }, + "triggerPlugin": { + "authorized": "認可された", + "notConfigured": "設定されていません", + "error": "エラー", + "configuration": "構成", + "remove": "削除する", + "or": "または", + "useOAuth": "OAuth を使用", + "useApiKey": "API キーを使用", + "authenticationFailed": "認証に失敗しました", + "authenticationSuccess": "認証に成功しました", + "oauthConfigFailed": "OAuth 設定に失敗しました", + "configureOAuthClient": "OAuth クライアントを設定", + "oauthClientDescription": "認証を有効にするために OAuth クライアント認証情報を設定してください", + "oauthClientSaved": "OAuth クライアント設定が正常に保存されました", + "configureApiKey": "API キーを設定", + "apiKeyDescription": "認証のための API キー認証情報を設定してください", + "apiKeyConfigured": "API キーが正常に設定されました", + "configurationFailed": "設定に失敗しました", + "failedToStart": "認証フローの開始に失敗しました", + "credentialsVerified": "認証情報が正常に検証されました", + "credentialVerificationFailed": "認証情報の検証に失敗しました", + "verifyAndContinue": "検証して続行", + "configureParameters": "パラメーターを設定", + "parametersDescription": "トリガーのパラメーターとプロパティを設定してください", + "configurationComplete": "設定完了", + "configurationCompleteDescription": "トリガーが正常に設定されました", + "configurationCompleteMessage": "トリガーの設定が完了し、使用する準備ができました。", + "parameters": "パラメーター", + "properties": "プロパティ", + "propertiesDescription": "このトリガーの追加設定プロパティ", + "noConfigurationRequired": "このトリガーには追加の設定は必要ありません。", + "subscriptionName": "サブスクリプション名", + "subscriptionNameDescription": "このトリガーサブスクリプションの一意な名前を入力してください", + "subscriptionNamePlaceholder": "サブスクリプション名を入力...", + "subscriptionNameRequired": "サブスクリプション名は必須です", + "notAuthorized": "認可されていません", + "selectSubscription": "サブスクリプションを選択", + "availableSubscriptions": "利用可能なサブスクリプション", + "addSubscription": "新しいサブスクリプションを追加", + "removeSubscription": "サブスクリプションを解除", + "subscriptionRemoved": "サブスクリプションが正常に削除されました", + "subscriptionRequired": "サブスクリプションが必要です" + } + }, + "tracing": { + "stopBy": "{{user}}によって停止" + }, + "versionHistory": { + "title": "バージョン", + "currentDraft": "現在の下書き", + "latest": "最新版", + "filter": { + "all": "すべて", + "onlyYours": "自分のみ", + "onlyShowNamedVersions": "名前付きバージョンのみ", + "reset": "リセット", + "empty": "該当するバージョンがありません" + }, + "defaultName": "名称未設定", + "nameThisVersion": "バージョン名を付ける", + "editVersionInfo": "バージョン情報を編集", + "editField": { + "title": "タイトル", + "releaseNotes": "リリースノート", + "titleLengthLimit": "タイトルは{{limit}}文字以内で入力してください", + "releaseNotesLengthLimit": "リリースノートは{{limit}}文字以内で入力してください" + }, + "releaseNotesPlaceholder": "変更内容を入力してください", + "restorationTip": "バージョンを復元すると、現在の下書きが上書きされます", + "deletionTip": "削除したデータは復元できません。よろしいですか?", + "action": { + "restoreSuccess": "復元が完了しました", + "restoreFailure": "復元に失敗しました", + "deleteSuccess": "削除が完了しました", + "deleteFailure": "削除に失敗しました", + "updateSuccess": "更新が完了しました", + "updateFailure": "更新に失敗しました", + "copyIdSuccess": "IDがクリップボードにコピーされました" + }, + "copyId": "IDをコピー" + }, + "debug": { + "noData": { + "runThisNode": "このノードを実行してください", + "description": "最後の実行の結果がここに表示されます" + }, + "variableInspect": { + "listening": { + "title": "トリガーからのイベントを待機中…", + "tip": "HTTP {{nodeName}} エンドポイントにテストリクエストを送信するか、ライブイベントデバッグ用のコールバック URL として利用してイベントトリガーをシミュレートできます。すべての出力は Variable Inspector で直接確認できます。", + "tipPlugin": "{{- pluginName}} でイベントを作成し、これらのイベントの出力を Variable Inspector で取得できます。", + "tipSchedule": "スケジュールトリガーからのイベントを待機しています。\n次回の予定実行: {{nextTriggerTime}}", + "tipFallback": "トリガーイベントを待機しています。出力はここに表示されます。", + "defaultNodeName": "このトリガー", + "defaultPluginName": "このプラグイントリガー", + "defaultScheduleTime": "未設定", + "selectedTriggers": "選択したトリガー", + "stopButton": "停止" + }, + "trigger": { + "clear": "クリア", + "running": "キャッシング実行状況", + "cached": "キャッシュされた変数を表示", + "stop": "走るのを止めて", + "normal": "変数検査" + }, + "clearAll": "すべてリセット", + "emptyLink": "もっと学ぶ", + "systemNode": "システム", + "view": "ログを表示", + "resetConversationVar": "会話の変数をデフォルト値にリセットする", + "chatNode": "会話", + "reset": "最後の実行値にリセットする", + "clearNode": "キャッシュされた変数をクリアする", + "edited": "編集された", + "title": "変数検査", + "envNode": "環境", + "emptyTip": "キャンバス上でノードをステップ実行するか、ノードを一歩ずつ実行した後、変数インスペクトでノード変数の現在の値を確認できます。", + "export": "輸出", + "largeDataNoExport": "大規模データ - 一部プレビューのみ", + "exportToolTip": "変数をファイルとしてエクスポートする", + "largeData": "大きなデータ、読み取り専用のプレビュー。すべてを表示するにはエクスポートしてください。" + }, + "settingsTab": "設定", + "lastRunTab": "最後の実行", + "relationsTab": "関係", + "relations": { + "dependencies": "依存元", + "dependents": "依存先", + "dependenciesDescription": "このノードが依存している他のノード", + "dependentsDescription": "このノードに依存している他のノード", + "noDependencies": "依存元なし", + "noDependents": "依存先なし" + }, + "copyLastRun": "最後の実行をコピー", + "noLastRunFound": "以前の実行が見つかりませんでした。", + "copyLastRunError": "最後の実行の入力をコピーできませんでした", + "noMatchingInputsFound": "前回の実行から一致する入力が見つかりませんでした。", + "lastRunInputsCopied": "前回の実行から{{count}}個の入力をコピーしました", + "lastOutput": "最後の出力" + }, + "triggerStatus": { + "enabled": "トリガー", + "disabled": "トリガー • 無効" + }, + "entryNodeStatus": { + "enabled": "スタート", + "disabled": "開始 • 無効" + }, + "onboarding": { + "title": "開始するには開始ノードを選択してください", + "description": "異なる開始ノードには異なる機能があります。心配しないでください、いつでも変更できます。", + "userInputFull": "ユーザー入力(元の開始ノード)", + "userInputDescription": "ユーザー入力変数の設定を可能にする開始ノードで、Webアプリ、サービスAPI、MCPサーバー、およびツールとしてのワークフロー機能を持ちます。", + "trigger": "トリガー", + "triggerDescription": "トリガーは、スケジュールされたタスク、カスタムwebhook、または他のアプリとの統合など、ワークフローの開始ノードとして機能できます。", + "back": "戻る", + "learnMore": "詳細を見る", + "aboutStartNode": "開始ノードについて。", + "escTip": { + "press": "", + "key": "esc", + "toDismiss": "キーで閉じる" + } + } +} diff --git a/web/i18n/ja-JP/workflow.ts b/web/i18n/ja-JP/workflow.ts deleted file mode 100644 index 24f05d6c31..0000000000 --- a/web/i18n/ja-JP/workflow.ts +++ /dev/null @@ -1,1299 +0,0 @@ -const translation = { - common: { - undo: '元に戻す', - redo: 'やり直し', - editing: '編集中', - autoSaved: '自動保存済み', - unpublished: '未公開', - published: '公開済み', - publish: '公開する', - update: '更新', - publishUpdate: '更新を公開', - run: 'テスト実行', - running: '実行中', - chooseStartNodeToRun: '実行する開始ノードを選択', - runAllTriggers: 'すべてのトリガーを実行', - inRunMode: '実行モード中', - inPreview: 'プレビュー中', - inPreviewMode: 'プレビューモード中', - preview: 'プレビュー', - viewRunHistory: '実行履歴を表示', - runHistory: '実行履歴', - goBackToEdit: '編集に戻る', - conversationLog: '会話ログ', - ImageUploadLegacyTip: '開始フォームでファイル型変数が作成可能になりました。画像アップロード機能は今後サポート終了となります。', - fileUploadTip: '画像アップロード機能がファイルアップロードに拡張されました', - debugAndPreview: 'プレビュー', - restart: '再起動', - currentDraft: '現在の下書き', - currentDraftUnpublished: '現在の下書き(未公開)', - latestPublished: '最新公開版', - publishedAt: '公開日時', - restore: '復元', - versionHistory: 'バージョン履歴', - exitVersions: 'バージョン履歴を閉じる', - runApp: 'アプリを実行', - batchRunApp: 'アプリを一括実行', - openInExplore: '探索ページで開く', - accessAPIReference: 'API リファレンス', - embedIntoSite: 'サイトに埋め込む', - addTitle: 'タイトルを追加...', - addDescription: '説明を追加...', - noVar: '変数がありません', - searchVar: '変数を検索', - variableNamePlaceholder: '変数名を入力', - setVarValuePlaceholder: '変数値を設定', - needConnectTip: '接続されていないステップがあります', - maxTreeDepth: '1 ブランチあたりの最大ノード数:{{depth}}', - needAdd: '{{node}}ノードを追加する必要があります', - needOutputNode: '出力ノードを追加する必要があります', - needStartNode: '少なくとも1つのスタートノードを追加する必要があります', - needAnswerNode: '回答ブロックを追加する必要があります', - workflowProcess: 'ワークフロー処理', - notRunning: 'まだ実行されていません', - previewPlaceholder: '入力欄にテキストを入力してチャットボットのデバッグを開始', - effectVarConfirm: { - title: '変数の削除', - content: '他のノードで変数が使用されています。それでも削除しますか?', - }, - insertVarTip: '"/"キーで変数を挿入', - processData: 'データ処理', - input: '入力', - output: '出力', - jinjaEditorPlaceholder: '「/」または「{」で変数挿入', - viewOnly: '閲覧のみ', - showRunHistory: '実行履歴を表示', - enableJinja: 'Jinja テンプレートを有効化', - learnMore: '詳細を見る', - copy: 'コピー', - duplicate: '複製', - addBlock: 'ブロックを追加', - pasteHere: 'ここに貼り付け', - pointerMode: 'ポインターモード', - handMode: 'ハンドモード', - exportImage: '画像を出力', - exportPNG: 'PNG で出力', - exportJPEG: 'JPEG で出力', - exportSVG: 'SVG で出力', - currentView: '現在のビュー', - currentWorkflow: '現在のワークフロー', - model: 'モデル', - workflowAsTool: 'ワークフローをツールとして公開する', - configureRequired: '設定が必要', - configure: '設定', - manageInTools: 'ツールページで管理', - workflowAsToolTip: 'ワークフロー更新後はツールの再設定が必要です', - workflowAsToolDisabledHint: '最新のワークフローを公開し、接続済みの User Input ノードを用意してからツールとして設定してください。', - viewDetailInTracingPanel: '詳細を表示', - syncingData: 'データ同期中。。。', - importDSL: 'DSL をインポート', - importDSLTip: '現在の下書きは上書きされます。インポート前にワークフローをエクスポートしてバックアップしてください', - backupCurrentDraft: '現在の下書きをバックアップ', - chooseDSL: 'DSL(yml) ファイルを選択', - overwriteAndImport: '上書きしてインポート', - importFailure: 'インポート失敗', - importWarning: '注意事項', - importWarningDetails: 'DSL バージョンの違いにより機能に影響が出る可能性があります', - importSuccess: 'インポート成功', - parallelTip: { - click: { - title: 'クリック', - desc: 'で追加', - }, - drag: { - title: 'ドラッグ', - desc: 'で接続', - }, - limit: '並列処理可能ブランチ数:{{num}}', - depthLimit: '並列ネスト最大階層数:{{num}}', - }, - disconnect: '接続解除', - jumpToNode: 'このノードに移動', - addParallelNode: '並列ノードを追加', - parallel: '並列', - branch: 'ブランチ', - onFailure: '失敗時', - addFailureBranch: '失敗ブランチを追加', - loadMore: 'さらに読み込む', - noHistory: '履歴がありません', - tagBound: 'このタグを使用しているアプリの数', - moreActions: 'さらにアクション', - listening: 'リッスン中', - features: '機能', - featuresDescription: 'ウェブアプリのユーザー体験を向上させる', - featuresDocLink: 'もっと詳しく知る', - }, - publishLimit: { - startNodeTitlePrefix: 'アップグレードして、', - startNodeTitleSuffix: '各ワークフローのトリガーを制限なしで使用できます。', - startNodeDesc: 'このプランでは、各ワークフローのトリガー数は最大 2 個まで設定できます。公開するにはアップグレードが必要です。', - }, - env: { - envPanelTitle: '環境変数', - envDescription: '環境変数は、個人情報や認証情報を格納するために使用することができます。これらは読み取り専用であり、DSL ファイルからエクスポートする際には分離されます。', - envPanelButton: '環境変数を追加', - modal: { - title: '環境変数を追加', - editTitle: '環境変数を編集', - type: 'タイプ', - name: '変数名', - namePlaceholder: '変数名を入力', - value: '値', - valuePlaceholder: '変数値を入力', - secretTip: 'この変数は機密情報やデータを定義するために使用されます。DSL をエクスポートするときに漏洩防止メカニズムを設定されます。', - description: '説明', - descriptionPlaceholder: '変数の説明を入力', - }, - export: { - title: 'シークレット環境変数をエクスポートしますか?', - checkbox: 'シークレット値を含む', - ignore: 'DSL をエクスポート', - export: 'シークレット値付きでエクスポート', - }, - }, - globalVar: { - title: 'システム変数', - description: 'システム変数は、タイプが適合していれば配線なしで任意のノードから参照できるグローバル変数です。エンドユーザーIDやワークフローIDなどが含まれます。', - fieldsDescription: { - conversationId: '会話ID', - dialogCount: '会話数', - userId: 'ユーザーID', - triggerTimestamp: 'アプリケーションの起動タイムスタンプ', - appId: 'アプリケーションID', - workflowId: 'ワークフローID', - workflowRunId: 'ワークフロー実行ID', - }, - }, - sidebar: { - exportWarning: '現在保存されているバージョンをエクスポート', - exportWarningDesc: 'これは現在保存されているワークフローのバージョンをエクスポートします。エディターで未保存の変更がある場合は、まずワークフローキャンバスのエクスポートオプションを使用して保存してください。', - }, - chatVariable: { - panelTitle: '会話変数', - panelDescription: '対話情報を保存・管理(会話履歴/ファイル/ユーザー設定など)。書き換えができます。', - docLink: '詳細ドキュメント', - button: '変数を追加', - modal: { - title: '会話変数を追加', - editTitle: '会話変数を編集', - name: '変数名', - namePlaceholder: '変数名を入力', - type: 'タイプ', - value: 'デフォルト値', - valuePlaceholder: 'デフォルト値、設定しない場合は空白にしてください', - description: '説明', - descriptionPlaceholder: '変数の説明を入力', - editInJSON: 'JSON で編集', - oneByOne: '個別追加', - editInForm: 'フォームで編集', - arrayValue: '値', - addArrayValue: '値を追加', - objectKey: 'キー', - objectType: 'タイプ', - objectValue: 'デフォルト値', - }, - storedContent: '保存内容', - updatedAt: '最終更新:', - }, - changeHistory: { - title: '変更履歴', - placeholder: 'まだ何も変更されていません', - clearHistory: '履歴をクリア', - hint: 'ヒント', - hintText: 'エディターでの編集操作は、エディターを離れるまで、お使いのデバイスに記録されます。この履歴は、エディターを離れると消去されます。', - stepBackward_one: '{{count}} ステップ戻る', - stepBackward_other: '{{count}} ステップ戻る', - stepForward_one: '{{count}} ステップ進む', - stepForward_other: '{{count}} ステップ進む', - sessionStart: 'セッション開始', - currentState: '現在の状態', - nodeTitleChange: 'ブロックのタイトルが変更されました', - nodeDescriptionChange: 'ブロックの説明が変更されました', - nodeDragStop: 'ブロックが移動されました', - nodeChange: 'ブロックが変更されました', - nodeConnect: 'ブロックが接続されました', - nodePaste: 'ブロックが貼り付けられました', - nodeDelete: 'ブロックが削除されました', - nodeAdd: 'ブロックが追加されました', - nodeResize: 'ブロックのサイズが変更されました', - noteAdd: '注釈が追加されました', - noteChange: '注釈が変更されました', - noteDelete: '注釈が削除されました', - edgeDelete: 'ブロックの接続が解除されました', - }, - errorMsg: { - fieldRequired: '{{field}} は必須です', - rerankModelRequired: 'Rerank モデルが設定されていません', - authRequired: '認証が必要です', - invalidJson: '{{field}} は無効な JSON です', - fields: { - variable: '変数名', - variableValue: '変数値', - code: 'コード', - model: 'モデル', - rerankModel: 'Rerank モデル', - visionVariable: 'ビジョン変数', - }, - invalidVariable: '無効な変数です', - noValidTool: '{{field}} に利用可能なツールがありません', - toolParameterRequired: '{{field}}: パラメータ [{{param}}] は必須です', - startNodeRequired: '{{operation}}前に開始ノードを追加してください', - }, - error: { - startNodeRequired: '{{operation}}前に開始ノードを追加してください', - operations: { - connectingNodes: 'ノード接続', - addingNodes: 'ノード追加', - modifyingWorkflow: 'ワークフロー変更', - updatingWorkflow: 'ワークフロー更新', - }, - }, - singleRun: { - testRun: 'テスト実行', - startRun: '実行開始', - running: '実行中', - testRunIteration: 'テスト実行(イテレーション)', - back: '戻る', - iteration: 'イテレーション', - loop: 'ループ', - reRun: '再実行', - preparingDataSource: 'データソースの準備', - }, - tabs: { - 'searchBlock': 'ブロック検索', - 'blocks': 'ブロック', - 'searchTool': 'ツール検索', - 'searchTrigger': 'トリガー検索...', - 'tools': 'ツール', - 'allTriggers': 'すべてのトリガー', - 'allTool': 'すべて', - 'customTool': 'カスタム', - 'workflowTool': 'ワークフロー', - 'question-understand': '問題理解', - 'logic': 'ロジック', - 'transform': '変換', - 'utilities': 'ツール', - 'noResult': '該当なし', - 'noPluginsFound': 'プラグインが見つかりません', - 'requestToCommunity': 'コミュニティにリクエスト', - 'plugin': 'プラグイン', - 'agent': 'エージェント戦略', - 'noFeaturedPlugins': 'マーケットプレイスでさらにツールを見つける', - 'noFeaturedTriggers': 'マーケットプレイスでさらにトリガーを見つける', - 'addAll': 'すべてを追加する', - 'allAdded': 'すべて追加されました', - 'searchDataSource': 'データソースを検索', - 'sources': 'ソース', - 'start': '始める', - 'startDisabledTip': 'トリガーノードとユーザー入力ノードは互いに排他です。', - 'featuredTools': '特集', - 'showMoreFeatured': 'もっと見る', - 'showLessFeatured': '表示を減らす', - 'installed': 'インストール済み', - 'pluginByAuthor': '{{author}} によって', - 'usePlugin': 'ツールを選択', - 'hideActions': 'ツールを隠す', - }, - blocks: { - 'start': 'ユーザー入力', - 'originalStartNode': '元の開始ノード', - 'end': '出力', - 'answer': '回答', - 'llm': 'LLM', - 'knowledge-retrieval': '知識検索', - 'question-classifier': '質問分類器', - 'if-else': 'IF/ELSE', - 'code': 'コード実行', - 'template-transform': 'テンプレート', - 'http-request': 'HTTP リクエスト', - 'variable-assigner': '変数代入器', - 'variable-aggregator': '変数集約器', - 'assigner': '変数代入', - 'iteration-start': 'イテレーション開始', - 'iteration': 'イテレーション', - 'parameter-extractor': 'パラメータ抽出', - 'document-extractor': 'テキスト抽出', - 'list-operator': 'リスト処理', - 'agent': 'エージェント', - 'loop-start': 'ループ開始', - 'loop': 'ループ', - 'loop-end': 'ループ完了', - 'knowledge-index': '知識ベース', - 'datasource': 'データソース', - 'trigger-plugin': 'プラグイントリガー', - 'trigger-webhook': 'Webhook トリガー', - 'trigger-schedule': 'スケジュールトリガー', - }, - customWebhook: 'カスタムWebhook', - blocksAbout: { - 'start': 'ワークフロー開始時の初期パラメータを定義します。', - 'end': 'ワークフローの出力と結果のタイプを定義します', - 'answer': 'チャットダイアログの返答内容を定義します。', - 'llm': '大規模言語モデルを呼び出して質問回答や自然言語処理を実行します。', - 'knowledge-retrieval': 'ナレッジベースからユーザー質問に関連するテキストを検索します。', - 'question-classifier': '質問の分類条件を定義し、LLM が分類に基づいて対話フローを制御します。', - 'if-else': 'if/else 条件でワークフローを 2 つの分岐に分割します。', - 'code': 'Python/NodeJS コードを実行してカスタムロジックを実装します。', - 'template-transform': 'Jinja テンプレート構文でデータを文字列に変換します。', - 'http-request': 'HTTP リクエストを送信できます。', - 'variable-assigner': '複数分岐の変数を集約し、下流ノードの設定を統一します。', - 'assigner': '書き込み可能な変数(例:会話変数)への値の割り当てを行います。', - 'variable-aggregator': '複数分岐の変数を集約し、下流ノードの設定を統一します。', - 'iteration': 'リスト要素に対して反復処理を実行し全結果を出力します。', - 'loop': '終了条件達成まで、または最大反復回数までロジックを繰り返します。', - 'loop-end': '「break」相当の機能です。このノードに設定項目はなく、ループ処理中にこのノードに到達すると即時終了します。', - 'parameter-extractor': '自然言語から構造化パラメータを抽出し、後続処理で利用します。', - 'document-extractor': 'アップロード文書を LLM 処理用に最適化されたテキストに変換します。', - 'list-operator': '配列のフィルタリングやソート処理を行います。', - 'agent': '大規模言語モデルを活用した質問応答や自然言語処理を実行します。', - 'knowledge-index': '知識ベースについて', - 'datasource': 'データソースについて', - 'trigger-schedule': 'スケジュールに基づいてワークフローを開始する時間ベースのトリガー', - 'trigger-webhook': 'Webhook トリガーは第三者システムからの HTTP プッシュを受信してワークフローを自動的に開始します。', - 'trigger-plugin': 'サードパーティ統合トリガー、外部プラットフォームのイベントによってワークフローを開始します', - }, - difyTeam: 'Dify チーム', - operator: { - zoomIn: '拡大', - zoomOut: '縮小', - zoomTo50: '50% サイズ', - zoomTo100: '等倍表示', - zoomToFit: '画面に合わせる', - horizontal: '水平', - alignBottom: '下', - alignNodes: 'ノードを整列', - vertical: '垂直', - alignLeft: '左', - alignTop: '上', - alignRight: '右', - alignMiddle: '中央', - distributeVertical: '垂直方向に等間隔配置', - alignCenter: '中央', - selectionAlignment: '選択の整列', - distributeHorizontal: '水平方向に等間隔配置', - }, - variableReference: { - noAvailableVars: '利用可能な変数がありません', - noVarsForOperation: 'この操作に割り当て可能な変数が存在しません。', - noAssignedVars: '割り当て可能な変数がありません', - assignedVarsDescription: '書き込み可能な変数(例:', - conversationVars: '会話変数', - }, - panel: { - userInputField: 'ユーザー入力欄', - changeBlock: 'ノード変更', - helpLink: 'ドキュメントを見る', - about: '詳細', - createdBy: '作成者', - nextStep: '次のステップ', - addNextStep: 'このワークフローで次ノードを追加', - selectNextStep: '次ノード選択', - runThisStep: 'このステップ実行', - checklist: 'チェックリスト', - checklistTip: '公開前に全ての項目を確認してください', - checklistResolved: '全てのチェックが完了しました', - goTo: '移動', - startNode: '開始ノード', - organizeBlocks: 'ノード整理', - change: '変更', - optional: '(任意)', - maximize: 'キャンバスを最大化する', - minimize: '全画面を終了する', - scrollToSelectedNode: '選択したノードまでスクロール', - optional_and_hidden: '(オプションおよび非表示)', - openWorkflow: 'ワークフローを開く', - }, - nodes: { - common: { - outputVars: '出力変数', - insertVarTip: '変数を挿入', - memory: { - memory: 'メモリ', - memoryTip: 'チャットメモリ設定', - windowSize: 'メモリウィンドウサイズ', - conversationRoleName: '会話ロール名', - user: 'ユーザー接頭辞', - assistant: 'アシスタント接頭辞', - }, - memories: { - title: 'メモリ', - tip: 'チャットの記憶管理', - builtIn: '組み込み', - }, - errorHandle: { - title: '例外処理', - tip: 'ノード例外発生時の処理ポリシーを設定', - none: { - title: '処理なし', - desc: '例外発生時に処理を停止', - }, - defaultValue: { - title: 'デフォルト値', - desc: '例外発生時のデフォルト出力', - tip: '例外発生時に返される値:', - inLog: 'ノード例外 - デフォルト値を出力', - output: 'デフォルト値出力', - }, - failBranch: { - title: '例外分岐', - desc: '例外発生時に分岐を実行', - customize: '失敗分岐ロジックをカスタマイズ', - customizeTip: '例外発生時、失敗分岐でエラー処理を柔軟に設定可能(エラーログ表示/修復処理/操作スキップ等)', - inLog: 'ノード例外 - 失敗分岐を実行。エラー情報を下流に伝播', - }, - partialSucceeded: { - tip: '{{num}}個のノードで異常発生。ログはトレース画面で確認可能', - }, - }, - retry: { - retry: '再試行', - retryOnFailure: '失敗時再試行', - maxRetries: '最大試行回数', - retryInterval: '再試行間隔', - retryTimes: '失敗時 {{times}}回再試行', - retrying: '再試行中...', - retrySuccessful: '再試行成功', - retryFailed: '再試行失敗', - retryFailedTimes: '{{times}}回再試行失敗', - times: '回', - ms: 'ミリ秒', - retries: '再試行回数:{{num}}', - }, - typeSwitch: { - input: '入力値', - variable: '変数を使用する', - }, - inputVars: '入力変数', - pluginNotInstalled: 'プラグインがインストールされていません', - }, - 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: 'AI モデル', - variables: '変数', - context: 'コンテキスト', - contextTooltip: 'ナレッジベースをコンテキストとして利用', - notSetContextInPromptTip: 'コンテキスト利用時はプロンプトに変数を明記してください', - prompt: 'プロンプト', - addMessage: 'メッセージ追加', - roleDescription: { - system: '対話の基本動作を定義', - user: '指示/質問を入力', - assistant: 'ユーザー入力への応答', - }, - vision: 'ビジョン', - files: 'ファイル', - resolution: { - name: '解像度', - high: '高', - low: '低', - }, - outputVars: { - output: '生成内容', - reasoning_content: '推論内容', - usage: 'モデル使用量', - }, - singleRun: { - variable: '変数', - }, - sysQueryInUser: 'ユーザーメッセージに sys.query を含めてください', - jsonSchema: { - title: '構造化データスキーマ', - instruction: '指示', - promptTooltip: 'テキスト説明から標準 JSON スキーマを自動生成できます。', - promptPlaceholder: 'JSON スキーマを入力...', - generate: '生成', - import: 'JSON インポート', - generateJsonSchema: 'スキーマ生成', - generationTip: '自然言語で簡単に JSON スキーマを作成可能です。', - generating: 'JSON スキーマを生成中...', - generatedResult: '生成結果', - resultTip: 'こちらが生成された結果です。ご満足いただけない場合は、前の画面に戻ってプロンプトを修正できます。', - back: '前に戻る', - regenerate: '再生成する', - apply: '適用', - doc: '構造化出力の詳細を見る', - resetDefaults: '初期化', - required: '必須項目', - addField: 'フィールドを追加', - addChildField: 'サブフィールドを追加', - showAdvancedOptions: '詳細設定', - stringValidations: '文字列検証', - fieldNamePlaceholder: 'フィールド名', - descriptionPlaceholder: '説明を入力', - warningTips: { - saveSchema: '編集中のフィールドを確定してから保存してください。', - }, - }, - reasoningFormat: { - tagged: 'タグを考え続けてください', - separated: '思考タグを分ける', - title: '推論タグの分離を有効にする', - tooltip: 'thinkタグから内容を抽出し、それをreasoning_contentフィールドに保存します。', - }, - }, - knowledgeRetrieval: { - queryVariable: '検索変数', - knowledge: 'ナレッジベース', - outputVars: { - output: '検索結果セグメント', - content: 'セグメント内容', - title: 'セグメントタイトル', - icon: 'セグメントアイコン', - url: 'セグメント URL', - metadata: 'メタデータ', - files: '取得したファイル', - }, - metadata: { - title: 'メタデータフィルタ', - tip: 'タグ/カテゴリ等の属性で検索を絞り込み', - options: { - disabled: { - title: '無効', - subTitle: 'フィルタリング不使用', - }, - automatic: { - title: '自動生成', - subTitle: '検索履歴からフィルタ条件を自動生成', - desc: 'Query Variable(検索変数)に基づきフィルタ条件を自動生成', - }, - manual: { - title: '手動設定', - subTitle: 'メタデータの条件を手動で追加', - }, - }, - panel: { - title: 'メタデータのフィルタ条件', - conditions: '条件一覧', - add: '条件追加', - search: 'メタデータ検索', - placeholder: '値を入力', - datePlaceholder: '日付選択...', - select: '変数選択...', - }, - }, - queryText: 'クエリテキスト', - queryAttachment: '画像を検索', - }, - http: { - inputVars: '入力変数', - api: 'API', - apiPlaceholder: 'URL を入力(変数使用時は"/"を入力)', - extractListPlaceholder: 'リスト番号を入力(変数使用時は"/"を入力)', - notStartWithHttp: 'API は http:// または https:// で始まってください', - key: 'キー', - type: 'タイプ', - value: '値', - bulkEdit: '一括編集', - keyValueEdit: 'キーバリュー編集', - headers: 'ヘッダー', - params: 'パラメータ', - body: 'ボディ', - binaryFileVariable: 'バイナリファイル変数', - outputVars: { - body: 'レスポンスコンテンツ', - statusCode: 'レスポンスステータスコード', - headers: 'レスポンスヘッダ(JSON)', - files: 'ファイル一覧', - }, - authorization: { - 'authorization': '認証', - 'authorizationType': '認証タイプ', - 'no-auth': 'なし', - 'api-key': 'API キー', - 'auth-type': 'API 認証タイプ', - 'basic': 'ベーシック', - 'bearer': 'Bearer', - 'custom': 'カスタム', - 'api-key-title': 'API キー', - 'header': 'ヘッダー', - }, - insertVarPlaceholder: '変数を挿入するには\'/\'を入力してください', - timeout: { - title: 'タイムアウト設定', - connectLabel: '接続タイムアウト', - connectPlaceholder: '接続タイムアウト(秒)', - readLabel: '読み取りタイムアウト', - readPlaceholder: '読み取りタイムアウト(秒)', - writeLabel: '書き込みタイムアウト', - writePlaceholder: '書き込みタイムアウト(秒)', - }, - curl: { - title: 'cURL からインポート', - placeholder: 'ここに cURL 文字列を貼り付けます', - }, - verifySSL: { - title: 'SSL証明書を確認する', - warningTooltip: 'SSL検証を無効にすることは、本番環境では推奨されません。これは開発またはテストのみに使用すべきであり、中間者攻撃などのセキュリティ脅威に対して接続を脆弱にするためです。', - }, - }, - code: { - inputVars: '入力変数', - outputVars: '出力変数', - advancedDependencies: '高度な依存関係', - advancedDependenciesTip: '消費に時間がかかる、またはデフォルトで組み込まれていない事前ロードされた依存関係を追加します', - searchDependencies: '依存関係を検索', - syncFunctionSignature: 'コードの関数署名を同期', - }, - templateTransform: { - inputVars: '入力変数', - code: 'コード', - codeSupportTip: 'Jinja2 のみをサポートしています', - outputVars: { - output: '変換されたコンテンツ', - }, - }, - ifElse: { - if: 'もし', - else: 'それ以外', - elseDescription: 'IF 条件が満たされない場合に実行するロジックを定義します。', - and: 'かつ', - or: 'または', - operator: '演算子', - notSetVariable: 'まず変数を設定してください', - comparisonOperator: { - 'contains': '含む', - 'not contains': '含まない', - 'start with': 'で始まる', - 'end with': 'で終わる', - 'is': 'である', - 'is not': 'でない', - 'empty': '空', - 'not empty': '空でない', - 'null': 'null', - 'not null': 'null でない', - 'in': '含まれている', - 'not in': '含まれていない', - 'all of': 'すべての', - 'exists': '存在します', - 'not exists': '存在しません', - 'before': '前に', - 'after': '後', - }, - enterValue: '値を入力', - addCondition: '条件を追加', - conditionNotSetup: '条件が設定されていません', - selectVariable: '変数を選択...', - optionName: { - audio: '音声', - localUpload: 'ローカルアップロード', - image: '画像', - video: '映像', - doc: 'ドキュメント', - url: 'URL', - }, - select: '選ぶ', - addSubVariable: 'サブ変数', - }, - variableAssigner: { - title: '変数を代入する', - outputType: '出力タイプ', - varNotSet: '変数が設定されていません', - noVarTip: '代入された変数を追加してください', - type: { - string: '文字列', - number: '数値', - object: 'オブジェクト', - array: '配列', - }, - aggregationGroup: 'グループ', - aggregationGroupTip: 'この機能を有効にすると、変数集約器は複数のセットの変数を集約できます。', - addGroup: 'グループを追加', - outputVars: { - varDescribe: '{{groupName}} 出力', - }, - setAssignVariable: '代入された変数を設定', - }, - assigner: { - 'assignedVariable': '代入された変数', - 'writeMode': '書き込みモード', - 'writeModeTip': '代入された変数が配列の場合,末尾に追記モードを追加する。', - 'over-write': '上書き', - 'append': '追記', - 'plus': 'プラス', - 'clear': 'クリア', - 'setVariable': '変数を設定する', - 'variable': '変数', - 'operations': { - 'title': '操作', - 'set': 'セット', - 'clear': 'クリア', - 'overwrite': '上書き', - 'append': '追加', - '-=': '-=', - '/=': '/=', - '+=': '+=', - 'over-write': '上書き', - 'extend': '延ばす', - '*=': '*=', - 'remove-last': '最後を削除する', - 'remove-first': '最初を削除する', - }, - 'setParameter': 'パラメータを設定...', - 'selectAssignedVariable': '代入変数を選択...', - 'varNotSet': '変数が設定されていません', - 'variables': '変数', - 'noVarTip': '「+」ボタンをクリックして変数を追加します', - 'noAssignedVars': '使用可能な代入変数がありません', - 'assignedVarsDescription': '代入される変数は、会話変数などの書き込み可能な変数である必要があります。', - }, - tool: { - inputVars: '入力変数', - outputVars: { - text: 'ツールが生成したコンテンツ', - files: { - title: 'ツールが生成したファイル', - type: 'サポートタイプ。現在は画像のみサポートされています', - transfer_method: '転送方法。値は remote_url または local_file です', - url: '画像 URL', - upload_file_id: 'アップロードファイル ID', - }, - json: 'ツールで生成された JSON', - }, - authorize: '認証する', - settings: '設定', - insertPlaceholder1: 'タイプするか押してください', - insertPlaceholder2: '変数を挿入する', - }, - questionClassifiers: { - model: 'モデル', - inputVars: '入力変数', - outputVars: { - className: 'クラス名', - usage: 'モデル使用量', - }, - class: 'クラス', - classNamePlaceholder: 'クラス名を入力してください', - advancedSetting: '高度な設定', - topicName: 'トピック名', - topicPlaceholder: 'トピック名を入力してください', - addClass: 'クラスを追加', - instruction: '指示', - instructionTip: '質問分類器が質問をどのように分類するかをよりよく理解するための追加の指示を入力します。', - instructionPlaceholder: '指示を入力してください', - }, - parameterExtractor: { - inputVar: '入力変数', - outputVars: { - isSuccess: '成功。成功した場合の値は 1、失敗した場合の値は 0 です。', - errorReason: 'エラーの理由', - usage: 'モデル使用量', - }, - extractParameters: 'パラメーターを抽出', - importFromTool: 'ツールからインポート', - addExtractParameter: '抽出パラメーターを追加', - addExtractParameterContent: { - name: '名前', - namePlaceholder: '抽出パラメーター名', - type: 'タイプ', - typePlaceholder: '抽出パラメータータイプ', - description: '説明', - descriptionPlaceholder: '抽出パラメーターの説明', - required: '必須', - requiredContent: '必須はモデル推論の参考としてのみ使用され、パラメーター出力の必須検証には使用されません。', - }, - extractParametersNotSet: '抽出パラメーターが設定されていません', - instruction: '指示', - instructionTip: 'パラメーター抽出器がパラメーターを抽出する方法を理解するのに役立つ追加の指示を入力します。', - advancedSetting: '高度な設定', - reasoningMode: '推論モード', - reasoningModeTip: '関数呼び出しやプロンプトの指示に応答するモデルの能力に基づいて、適切な推論モードを選択できます。', - }, - iteration: { - deleteTitle: 'イテレーションノードを削除しますか?', - deleteDesc: 'イテレーションノードを削除すると、すべての子ノードが削除されます', - input: '入力', - output: '出力変数', - iteration_one: '{{count}} イテレーション', - iteration_other: '{{count}} イテレーション', - currentIteration: '現在のイテレーション', - ErrorMethod: { - operationTerminated: '終了', - continueOnError: 'エラー時に続行', - removeAbnormalOutput: 'アブノーマルアウトプットの削除', - }, - comma: ',', - error_other: '{{カウント}}エラー', - error_one: '{{カウント}}エラー', - parallelModeUpper: 'パラレルモード', - parallelMode: 'パラレルモード', - MaxParallelismTitle: '最大並列処理', - errorResponseMethod: 'エラー応答方式', - parallelPanelDesc: '並列モードでは、イテレーションのタスクは並列実行をサポートします。', - parallelModeEnableDesc: '並列モードでは、イテレーション内のタスクは並列実行をサポートします。これは、右側のプロパティパネルで構成できます。', - parallelModeEnableTitle: 'パラレルモード有効', - MaxParallelismDesc: '最大並列処理は、1 回の反復で同時に実行されるタスクの数を制御するために使用されます。', - answerNodeWarningDesc: '並列モードの警告:応答ノード、会話変数の割り当て、およびイテレーション内の永続的な読み取り/書き込み操作により、例外が発生する可能性があります。', - flattenOutput: '出力をフラット化', - flattenOutputDesc: '有効にすると、すべての反復出力が配列の場合、1つの配列にまとめてフラット化されます。無効の場合はネストされた配列構造のままです。', - }, - loop: { - deleteTitle: 'ループノードを削除しますか?', - deleteDesc: 'ループノードを削除すると、全ての子ノードが削除されます。', - input: '入力', - output: '出力変数', - loop_one: '{{count}}回', - loop_other: '{{count}}回', - currentLoop: '現在のループ', - breakCondition: 'ループ終了条件', - breakConditionTip: 'ループ内の変数やセッション変数を参照し、終了条件を設定できます。', - loopMaxCount: '最大ループ回数', - loopMaxCountError: '最大ループ回数は 1 から{{maxCount}}の範囲で正しく入力してください。', - errorResponseMethod: 'エラー対応方法', - ErrorMethod: { - operationTerminated: 'エラー時に処理を終了', - continueOnError: 'エラーを無視して継続', - removeAbnormalOutput: '異常出力を除外', - }, - loopVariables: 'ループ変数', - initialLoopVariables: '初期ループ変数', - finalLoopVariables: '最終ループ変数', - setLoopVariables: 'ループスコープ内で変数を設定', - variableName: '変数名', - inputMode: '入力モード', - exitConditionTip: 'ループノードには少なくとも 1 つの終了条件が必要です', - loopNode: 'ループノード', - currentLoopCount: '現在のループ回数:{{count}}', - totalLoopCount: '総ループ回数:{{count}}', - error_other: '{{count}} エラー', - error_one: '{{count}} エラー', - comma: ',', - }, - note: { - addNote: 'コメントを追加', - editor: { - placeholder: 'メモを書く...', - small: '小', - medium: '中', - large: '大', - bold: '太字', - italic: '斜体', - strikethrough: '打ち消し線', - link: 'リンク', - openLink: '開く', - unlink: 'リンクをキャンセル', - enterUrl: 'リンク入力中...', - invalidUrl: 'リンク無効', - bulletList: 'リスト', - showAuthor: '著者を表示する', - }, - }, - docExtractor: { - outputVars: { - text: '抽出されたテキスト', - }, - inputVar: '入力変数', - learnMore: '詳細はこちら', - supportFileTypes: 'サポートするファイルタイプ:{{types}}。', - }, - listFilter: { - outputVars: { - last_record: '最後のレコード', - first_record: '最初のレコード', - result: 'フィルター結果', - }, - limit: 'トップ N', - asc: 'ASC', - filterCondition: 'フィルター条件', - filterConditionKey: 'フィルター条件キー', - orderBy: '並べる順番', - filterConditionComparisonValue: 'フィルター条件の値', - selectVariableKeyPlaceholder: 'サブ変数キーを選択する', - filterConditionComparisonOperator: 'フィルター条件を比較オペレーター', - inputVar: '入力変数', - desc: 'DESC', - extractsCondition: 'N 個のアイテムを抽出します', - }, - agent: { - strategy: { - label: 'エージェンティック戦略', - configureTipDesc: 'エージェント戦略を設定した後、このノードは残りの設定を自動的に読み込みます。この戦略は、マルチステップツール推論のメカニズムに影響を与えます。', - searchPlaceholder: 'エージェンティック戦略を検索する', - configureTip: 'エージェンティック戦略を設定してください。', - shortLabel: '戦略', - tooltip: '異なるエージェンティック戦略が、システムがマルチステップのツール呼び出しを計画し実行する方法を決定します。', - selectTip: 'エージェンシー戦略を選択する', - }, - pluginInstaller: { - install: 'インストール', - installing: 'インストール中', - }, - modelNotInMarketplace: { - manageInPlugins: 'プラグインを管理する', - title: 'モデルがインストールされていません', - desc: 'このモデルはローカルまたは GitHub リポジトリからインストールされます。インストール後にご利用ください。', - }, - modelNotSupport: { - title: 'サポートされていないモデル', - descForVersionSwitch: 'インストールされたプラグインのバージョンはこのモデルを提供していません。バージョンを切り替えるにはクリックしてください。', - desc: 'インストールされたプラグインのバージョンは、このモデルを提供していません。', - }, - modelSelectorTooltips: { - deprecated: 'このモデルは廃止されました', - }, - outputVars: { - files: { - url: '画像の URL', - type: 'サポートタイプ。現在はサポート画像のみ', - upload_file_id: 'ファイル ID をアップロード', - transfer_method: '転送方法。値は remote_url または local_file です。', - title: 'エージェント生成ファイル', - }, - text: 'エージェント生成コンテンツ', - json: 'エージェント生成の JSON', - usage: 'モデル使用量', - }, - checkList: { - strategyNotSelected: '戦略が選択されていません', - }, - installPlugin: { - install: 'インストール', - changelog: '変更ログ', - cancel: 'キャンセル', - desc: '次のプラグインをインストールしようとしています', - title: 'プラグインをインストールする', - }, - strategyNotSet: 'エージェンティック戦略は設定されていません', - strategyNotInstallTooltip: '{{strategy}}はインストールされていません', - modelNotSelected: 'モデルが選択されていません', - toolNotAuthorizedTooltip: '{{tool}} 認可されていません', - toolNotInstallTooltip: '{{tool}}はインストールされていません', - tools: 'ツール', - learnMore: 'もっと学ぶ', - configureModel: 'モデルを設定する', - model: 'モデル', - linkToPlugin: 'プラグインへのリンク', - notAuthorized: '権限がありません', - modelNotInstallTooltip: 'このモデルはインストールされていません', - maxIterations: '最大反復回数', - toolbox: 'ツールボックス', - pluginNotInstalled: 'このプラグインはインストールされていません', - strategyNotFoundDescAndSwitchVersion: 'インストールされたプラグインのバージョンはこの戦略を提供していません。バージョンを切り替えるにはクリックしてください。', - pluginNotInstalledDesc: 'このプラグインは GitHub からインストールされています。再インストールするにはプラグインに移動してください。', - unsupportedStrategy: 'サポートされていない戦略', - pluginNotFoundDesc: 'このプラグインは GitHub からインストールされています。再インストールするにはプラグインに移動してください。', - strategyNotFoundDesc: 'インストールされたプラグインのバージョンは、この戦略を提供していません。', - parameterSchema: 'パラメータスキーマ', - clickToViewParameterSchema: 'パラメータースキーマを見るにはクリックしてください', - }, - dataSource: { - add: 'データソースを追加', - supportedFileFormats: 'サポートされているファイル形式', - supportedFileFormatsPlaceholder: 'ファイル拡張子、例:doc', - }, - knowledgeBase: { - chunkStructureTip: { - title: 'チャンク構造を選択してください', - learnMore: 'もっと学ぶ', - message: 'Difyナレッジベースは、一般的な、親子関係、Q&Aの3つのチャンク構造をサポートしています。各ナレッジベースには一つの構造のみが持てます。前のノードからの出力は、選択されたチャンク構造と一致する必要があります。チャンク構造の選択が利用可能なインデックス方式に影響を与えることに注意してください。', - }, - aboutRetrieval: '取得方法について。', - chooseChunkStructure: 'チャンク構造を選択する', - chunkStructure: 'チャンク構造', - chunkIsRequired: 'チャンク構造が必要です', - retrievalSettingIsRequired: 'リトリーバル設定が必要です', - changeChunkStructure: 'チャンク構造を変更する', - indexMethodIsRequired: 'インデックスメソッドが必要です', - chunksInput: 'チャンク', - chunksInputTip: '知識ベースノードの入力変数はチャンクです。変数のタイプは、選択されたチャンク構造と一貫性のある特定のJSONスキーマを持つオブジェクトです。', - chunksVariableIsRequired: 'Chunks変数は必須です', - embeddingModelIsRequired: '埋め込みモデルが必要です', - rerankingModelIsRequired: '再ランキングモデルが必要です', - embeddingModelIsInvalid: '埋め込みモデルが無効です', - rerankingModelIsInvalid: 'リランキングモデルは無効です', - }, - triggerSchedule: { - frequency: { - label: '頻度', - monthly: '毎月', - weekly: '毎週', - daily: '毎日', - hourly: '毎時', - }, - frequencyLabel: '頻度', - days: '日', - title: 'スケジュール', - minutes: '分', - time: '時刻', - useCronExpression: 'Cron 式を使用', - nextExecutionTimes: '次の5回の実行時刻', - nextExecution: '次回実行', - notConfigured: '未設定', - startTime: '開始時刻', - hours: '時間', - onMinute: '分', - executeNow: '今すぐ実行', - weekdays: '曜日', - selectDateTime: '日時を選択', - cronExpression: 'Cron 式', - selectFrequency: '頻度を選択', - lastDay: '月末', - nextExecutionTime: '次回実行時刻', - lastDayTooltip: 'すべての月に31日があるわけではありません。「月末」オプションを使用して各月の最終日を選択してください。', - useVisualPicker: 'ビジュアル設定を使用', - nodeTitle: 'スケジュールトリガー', - mode: 'モード', - modeVisual: 'ビジュアル', - modeCron: 'Cron', - selectTime: '時間を選択', - timezone: 'タイムゾーン', - visualConfig: 'ビジュアル設定', - monthlyDay: '月の日', - executionTime: '実行時間', - invalidTimezone: '無効なタイムゾーン', - invalidCronExpression: '無効なCron式', - noValidExecutionTime: '有効な実行時間を計算できません', - executionTimeCalculationError: '実行時間の計算に失敗しました', - invalidFrequency: '無効な頻度', - invalidStartTime: '無効な開始時間', - startTimeMustBeFuture: '開始時間は未来の時間である必要があります', - invalidTimeFormat: '無効な時間形式(期待される形式:HH:MM AM/PM)', - invalidWeekday: '無効な曜日:{{weekday}}', - invalidMonthlyDay: '月の日は1-31の間または"last"である必要があります', - invalidOnMinute: '分は0-59の間である必要があります', - invalidExecutionTime: '無効な実行時間', - executionTimeMustBeFuture: '実行時間は未来の時間である必要があります', - }, - triggerWebhook: { - title: 'Webhook トリガー', - nodeTitle: '🔗 Webhook トリガー', - configPlaceholder: 'Webhook トリガーの設定がここに実装されます', - webhookUrl: 'Webhook URL', - webhookUrlPlaceholder: '生成をクリックして Webhook URL を作成', - generate: '生成', - copy: 'コピー', - test: 'テスト', - urlGenerated: 'Webhook URL を生成しました', - urlGenerationFailed: 'Webhook URL の生成に失敗しました', - urlCopied: 'URL をクリップボードにコピーしました', - method: 'メソッド', - contentType: 'コンテンツタイプ', - queryParameters: 'クエリパラメータ', - headerParameters: 'ヘッダーパラメータ', - requestBodyParameters: 'リクエストボディパラメータ', - parameterName: '変数名', - varName: '変数名', - varType: 'タイプ', - varNamePlaceholder: '変数名を入力...', - required: '必須', - addParameter: '追加', - addHeader: '追加', - noParameters: '設定されたパラメータはありません', - noQueryParameters: 'クエリパラメータは設定されていません', - noHeaders: 'ヘッダーは設定されていません', - noBodyParameters: 'ボディパラメータは設定されていません', - debugUrlTitle: 'テスト実行には、常にこのURLを使用してください', - debugUrlCopy: 'クリックしてコピー', - debugUrlCopied: 'コピーしました!', - errorHandling: 'エラー処理', - errorStrategy: 'エラー処理', - responseConfiguration: 'レスポンス', - asyncMode: '非同期モード', - statusCode: 'ステータスコード', - responseBody: 'レスポンスボディ', - responseBodyPlaceholder: 'ここにレスポンスボディを入力してください', - headers: 'ヘッダー', - validation: { - webhookUrlRequired: 'Webhook URLが必要です', - invalidParameterType: 'パラメータ"{{name}}"の無効なパラメータタイプ"{{type}}"です', - }, - debugUrlPrivateAddressWarning: 'このURLは内部アドレスのようです。Webhookリクエストが失敗する可能性があります。TRIGGER_URL を公開アドレスに変更できます。', - }, - triggerPlugin: { - authorized: '認可された', - notConfigured: '設定されていません', - error: 'エラー', - configuration: '構成', - remove: '削除する', - or: 'または', - useOAuth: 'OAuth を使用', - useApiKey: 'API キーを使用', - authenticationFailed: '認証に失敗しました', - authenticationSuccess: '認証に成功しました', - oauthConfigFailed: 'OAuth 設定に失敗しました', - configureOAuthClient: 'OAuth クライアントを設定', - oauthClientDescription: '認証を有効にするために OAuth クライアント認証情報を設定してください', - oauthClientSaved: 'OAuth クライアント設定が正常に保存されました', - configureApiKey: 'API キーを設定', - apiKeyDescription: '認証のための API キー認証情報を設定してください', - apiKeyConfigured: 'API キーが正常に設定されました', - configurationFailed: '設定に失敗しました', - failedToStart: '認証フローの開始に失敗しました', - credentialsVerified: '認証情報が正常に検証されました', - credentialVerificationFailed: '認証情報の検証に失敗しました', - verifyAndContinue: '検証して続行', - configureParameters: 'パラメーターを設定', - parametersDescription: 'トリガーのパラメーターとプロパティを設定してください', - configurationComplete: '設定完了', - configurationCompleteDescription: 'トリガーが正常に設定されました', - configurationCompleteMessage: 'トリガーの設定が完了し、使用する準備ができました。', - parameters: 'パラメーター', - properties: 'プロパティ', - propertiesDescription: 'このトリガーの追加設定プロパティ', - noConfigurationRequired: 'このトリガーには追加の設定は必要ありません。', - subscriptionName: 'サブスクリプション名', - subscriptionNameDescription: 'このトリガーサブスクリプションの一意な名前を入力してください', - subscriptionNamePlaceholder: 'サブスクリプション名を入力...', - subscriptionNameRequired: 'サブスクリプション名は必須です', - notAuthorized: '認可されていません', - selectSubscription: 'サブスクリプションを選択', - availableSubscriptions: '利用可能なサブスクリプション', - addSubscription: '新しいサブスクリプションを追加', - removeSubscription: 'サブスクリプションを解除', - subscriptionRemoved: 'サブスクリプションが正常に削除されました', - subscriptionRequired: 'サブスクリプションが必要です', - }, - }, - tracing: { - stopBy: '{{user}}によって停止', - }, - versionHistory: { - title: 'バージョン', - currentDraft: '現在の下書き', - latest: '最新版', - filter: { - all: 'すべて', - onlyYours: '自分のみ', - onlyShowNamedVersions: '名前付きバージョンのみ', - reset: 'リセット', - empty: '該当するバージョンがありません', - }, - defaultName: '名称未設定', - nameThisVersion: 'バージョン名を付ける', - editVersionInfo: 'バージョン情報を編集', - editField: { - title: 'タイトル', - releaseNotes: 'リリースノート', - titleLengthLimit: 'タイトルは{{limit}}文字以内で入力してください', - releaseNotesLengthLimit: 'リリースノートは{{limit}}文字以内で入力してください', - }, - releaseNotesPlaceholder: '変更内容を入力してください', - restorationTip: 'バージョンを復元すると、現在の下書きが上書きされます', - deletionTip: '削除したデータは復元できません。よろしいですか?', - action: { - restoreSuccess: '復元が完了しました', - restoreFailure: '復元に失敗しました', - deleteSuccess: '削除が完了しました', - deleteFailure: '削除に失敗しました', - updateSuccess: '更新が完了しました', - updateFailure: '更新に失敗しました', - copyIdSuccess: 'IDがクリップボードにコピーされました', - }, - copyId: 'IDをコピー', - }, - debug: { - noData: { - runThisNode: 'このノードを実行してください', - description: '最後の実行の結果がここに表示されます', - }, - variableInspect: { - listening: { - title: 'トリガーからのイベントを待機中…', - tip: 'HTTP {{nodeName}} エンドポイントにテストリクエストを送信するか、ライブイベントデバッグ用のコールバック URL として利用してイベントトリガーをシミュレートできます。すべての出力は Variable Inspector で直接確認できます。', - tipPlugin: '{{- pluginName}} でイベントを作成し、これらのイベントの出力を Variable Inspector で取得できます。', - tipSchedule: 'スケジュールトリガーからのイベントを待機しています。\n次回の予定実行: {{nextTriggerTime}}', - tipFallback: 'トリガーイベントを待機しています。出力はここに表示されます。', - defaultNodeName: 'このトリガー', - defaultPluginName: 'このプラグイントリガー', - defaultScheduleTime: '未設定', - selectedTriggers: '選択したトリガー', - stopButton: '停止', - }, - trigger: { - clear: 'クリア', - running: 'キャッシング実行状況', - cached: 'キャッシュされた変数を表示', - stop: '走るのを止めて', - normal: '変数検査', - }, - clearAll: 'すべてリセット', - emptyLink: 'もっと学ぶ', - systemNode: 'システム', - view: 'ログを表示', - resetConversationVar: '会話の変数をデフォルト値にリセットする', - chatNode: '会話', - reset: '最後の実行値にリセットする', - clearNode: 'キャッシュされた変数をクリアする', - edited: '編集された', - title: '変数検査', - envNode: '環境', - emptyTip: 'キャンバス上でノードをステップ実行するか、ノードを一歩ずつ実行した後、変数インスペクトでノード変数の現在の値を確認できます。', - export: '輸出', - largeDataNoExport: '大規模データ - 一部プレビューのみ', - exportToolTip: '変数をファイルとしてエクスポートする', - largeData: '大きなデータ、読み取り専用のプレビュー。すべてを表示するにはエクスポートしてください。', - }, - settingsTab: '設定', - lastRunTab: '最後の実行', - relationsTab: '関係', - relations: { - dependencies: '依存元', - dependents: '依存先', - dependenciesDescription: 'このノードが依存している他のノード', - dependentsDescription: 'このノードに依存している他のノード', - noDependencies: '依存元なし', - noDependents: '依存先なし', - }, - copyLastRun: '最後の実行をコピー', - noLastRunFound: '以前の実行が見つかりませんでした。', - copyLastRunError: '最後の実行の入力をコピーできませんでした', - noMatchingInputsFound: '前回の実行から一致する入力が見つかりませんでした。', - lastRunInputsCopied: '前回の実行から{{count}}個の入力をコピーしました', - lastOutput: '最後の出力', - }, - triggerStatus: { - enabled: 'トリガー', - disabled: 'トリガー • 無効', - }, - entryNodeStatus: { - enabled: 'スタート', - disabled: '開始 • 無効', - }, - onboarding: { - title: '開始するには開始ノードを選択してください', - description: '異なる開始ノードには異なる機能があります。心配しないでください、いつでも変更できます。', - userInputFull: 'ユーザー入力(元の開始ノード)', - userInputDescription: 'ユーザー入力変数の設定を可能にする開始ノードで、Webアプリ、サービスAPI、MCPサーバー、およびツールとしてのワークフロー機能を持ちます。', - trigger: 'トリガー', - triggerDescription: 'トリガーは、スケジュールされたタスク、カスタムwebhook、または他のアプリとの統合など、ワークフローの開始ノードとして機能できます。', - back: '戻る', - learnMore: '詳細を見る', - aboutStartNode: '開始ノードについて。', - escTip: { - press: '', - key: 'esc', - toDismiss: 'キーで閉じる', - }, - }, -} - -export default translation diff --git a/web/i18n/ko-KR/app-annotation.json b/web/i18n/ko-KR/app-annotation.json new file mode 100644 index 0000000000..179cda62e6 --- /dev/null +++ b/web/i18n/ko-KR/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "어노테이션", + "name": "어노테이션 답변", + "editBy": "{{author}} 님이 편집한 답변", + "noData": { + "title": "어노테이션이 없습니다", + "description": "여기에서는 앱 디버깅 중에 어노테이션을 편집하거나 일괄적으로 어노테이션을 가져와 고품질의 응답을 생성할 수 있습니다." + }, + "table": { + "header": { + "question": "질문", + "answer": "답변", + "createdAt": "생성 날짜", + "hits": "조회수", + "actions": "액션", + "addAnnotation": "어노테이션 추가", + "bulkImport": "일괄 가져오기", + "bulkExport": "일괄 내보내기", + "clearAll": "모든 어노테이션 지우기", + "clearAllConfirm": "모든 주석을 삭제하시겠습니까?" + } + }, + "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": "어노테이션 텍스트의 임베딩 모델입니다. 모델을 변경하면 다시 임베딩되며 추가 비용이 발생합니다.", + "list": { + "delete": { + "title": "삭제할 것인지 확실합니까?" + } + }, + "batchAction": { + "cancel": "취소", + "delete": "삭제", + "selected": "선택됨" + } +} diff --git a/web/i18n/ko-KR/app-annotation.ts b/web/i18n/ko-KR/app-annotation.ts deleted file mode 100644 index 7e0cee020b..0000000000 --- a/web/i18n/ko-KR/app-annotation.ts +++ /dev/null @@ -1,98 +0,0 @@ -const translation = { - title: '어노테이션', - name: '어노테이션 답변', - editBy: '{{author}} 님이 편집한 답변', - noData: { - title: '어노테이션이 없습니다', - description: '여기에서는 앱 디버깅 중에 어노테이션을 편집하거나 일괄적으로 어노테이션을 가져와 고품질의 응답을 생성할 수 있습니다.', - }, - table: { - header: { - question: '질문', - answer: '답변', - createdAt: '생성 날짜', - hits: '조회수', - actions: '액션', - addAnnotation: '어노테이션 추가', - bulkImport: '일괄 가져오기', - bulkExport: '일괄 내보내기', - clearAll: '모든 어노테이션 지우기', - clearAllConfirm: '모든 주석을 삭제하시겠습니까?', - }, - }, - 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: '어노테이션 텍스트의 임베딩 모델입니다. 모델을 변경하면 다시 임베딩되며 추가 비용이 발생합니다.', - list: { - delete: { - title: '삭제할 것인지 확실합니까?', - }, - }, - batchAction: { - cancel: '취소', - delete: '삭제', - selected: '선택됨', - }, -} - -export default translation diff --git a/web/i18n/ko-KR/app-api.json b/web/i18n/ko-KR/app-api.json new file mode 100644 index 0000000000..f59aee585d --- /dev/null +++ b/web/i18n/ko-KR/app-api.json @@ -0,0 +1,83 @@ +{ + "apiServer": "API 서버", + "apiKey": "API 키", + "status": "상태", + "disabled": "비활성화됨", + "ok": "서비스 중", + "copy": "복사", + "copied": "복사 완료", + "play": "실행", + "pause": "일시 정지", + "playing": "실행 중", + "loading": "로드 중", + "merMaid": { + "rerender": "다시 렌더링" + }, + "never": "없음", + "apiKeyModal": { + "apiSecretKey": "API 비밀 키", + "apiSecretKeyTips": "API 키를 보호하여 API 의 남용을 방지하십시오. 프런트엔드 코드에서 평문으로 사용하지 마세요. :)", + "createNewSecretKey": "새로운 비밀 키 생성", + "secretKey": "비밀 키", + "created": "생성 날짜", + "lastUsed": "최종 사용 날짜", + "generateTips": "이 키를 안전하고 접근 가능한 위치에 보관하십시오." + }, + "actionMsg": { + "deleteConfirmTitle": "이 비밀 키를 삭제하시겠습니까?", + "deleteConfirmTips": "이 작업은 취소할 수 없습니다.", + "ok": "확인" + }, + "completionMode": { + "title": "완성 모드 API", + "info": "문서, 요약, 번역 등 고품질 텍스트 생성을 위해 사용자 입력을 사용하는 완성 메시지 API 를 사용합니다. 텍스트 생성은 Dify Prompt Engineering 에서 설정한 모델 매개변수와 프롬프트 템플릿에 의존합니다.", + "createCompletionApi": "완성 메시지 생성", + "createCompletionApiTip": "질의 응답 모드를 지원하기 위해 완성 메시지를 생성합니다.", + "inputsTips": "(선택 사항) Prompt Eng 의 변수에 해당하는 키 - 값 쌍으로 사용자 입력 필드를 제공합니다. 키는 변수 이름이고 값은 매개변수 값입니다. 필드 유형이 Select 인 경우 전송되는 값은 미리 설정된 선택 사항 중 하나여야 합니다.", + "queryTips": "사용자 입력 텍스트 내용.", + "blocking": "블로킹 유형으로 실행이 완료되고 결과가 반환될 때까지 대기합니다. (처리가 오래 걸리면 요청이 중단될 수 있습니다)", + "streaming": "스트리밍 반환. SSE(Server-Sent Events) 를 기반으로 하는 스트리밍 반환 구현.", + "messageFeedbackApi": "메시지 피드백 (좋아요)", + "messageFeedbackApiTip": "엔드 사용자 대신 수신된 메시지를 \"좋아요\" 또는 \"좋아요\"로 평가합니다. 이 데이터는 로그 및 주석 페이지에 표시되며 향후 모델 세부 조정에 사용됩니다.", + "messageIDTip": "메시지 ID", + "ratingTip": "좋아요 또는 좋아요, null 은 취소", + "parametersApi": "애플리케이션 매개변수 정보 가져오기", + "parametersApiTip": "변수 이름, 필드 이름, 유형, 기본값을 포함한 설정된 입력 매개변수를 가져옵니다. 일반적으로 이러한 필드는 양식에 표시하거나 클라이언트 로드 후에 기본값을 입력하는 데 사용됩니다." + }, + "chatMode": { + "title": "채팅 모드 API", + "info": "질의 응답 형식을 사용하는 다목적 대화형 응용 프로그램에는 채팅 메시지 API 를 호출하여 대화를 시작합니다. 반환된 conversation_id 를 전달하여 계속된 대화를 유지합니다. 응답 매개변수 및 템플릿은 Dify Prompt Eng 의 설정에 의존합니다.", + "createChatApi": "채팅 메시지 생성", + "createChatApiTip": "새로운 대화 메시지를 생성하거나 기존 대화를 계속합니다.", + "inputsTips": "(선택 사항) Prompt Eng 의 변수에 해당하는 키 - 값 쌍으로 사용자 입력 필드를 제공합니다. 키는 변수 이름이고 값은 매개변수 값입니다. 필드 유형이 Select 인 경우 전송되는 값은 미리 설정된 선택 사항 중 하나여야 합니다.", + "queryTips": "사용자 입력/질문 내용", + "blocking": "블로킹 유형으로 실행이 완료되고 결과가 반환될 때까지 대기합니다. (처리가 오래 걸리면 요청이 중단될 수 있습니다)", + "streaming": "스트리밍 반환. SSE(Server-Sent Events) 를 기반으로 하는 스트리밍 반환 구현.", + "conversationIdTip": "(선택 사항) 대화 ID: 처음 대화의 경우 비워두고, 계속된 경우 컨텍스트에서 conversation_id 를 전달합니다.", + "messageFeedbackApi": "메시지 피드백 (좋아요)", + "messageFeedbackApiTip": "엔드 사용자 대신 수신된 메시지를 \"좋아요\" 또는 \"좋아요\"로 평가합니다. 이 데이터는 로그 및 주석 페이지에 표시되며 향후 모델 세부 조정에 사용됩니다.", + "messageIDTip": "메시지 ID", + "ratingTip": "좋아요 또는 좋아요, null 은 취소", + "chatMsgHistoryApi": "채팅 메시지 기록 가져오기", + "chatMsgHistoryApiTip": "첫 번째 페이지는 최신의 \"limit\" 바를 반환합니다. 역순입니다.", + "chatMsgHistoryConversationIdTip": "대화 ID", + "chatMsgHistoryFirstId": "현재 페이지의 첫 번째 채팅 레코드의 ID. 기본값은 없음입니다.", + "chatMsgHistoryLimit": "한 번에 반환되는 채팅 수", + "conversationsListApi": "대화 목록 가져오기", + "conversationsListApiTip": "현재 사용자의 세션 목록을 가져옵니다. 기본적으로 최근 20 개의 세션이 반환됩니다.", + "conversationsListFirstIdTip": "현재 페이지의 마지막 레코드의 ID, 기본값은 없음입니다.", + "conversationsListLimitTip": "한 번에 반환되는 채팅 수", + "conversationRenamingApi": "대화 이름 변경", + "conversationRenamingApiTip": "대화 이름을 변경합니다. 이름은 멀티 세션 클라이언트 인터페이스에 표시됩니다.", + "conversationRenamingNameTip": "새 이름", + "parametersApi": "애플리케이션 매개변수 정보 가져오기", + "parametersApiTip": "변수 이름, 필드 이름, 유형, 기본값을 포함한 설정된 입력 매개변수를 가져옵니다. 일반적으로 이러한 필드는 양식에 표시하거나 클라이언트 로드 후에 기본값을 입력하는 데 사용됩니다." + }, + "develop": { + "requestBody": "요청 본문", + "pathParams": "경로 매개변수", + "query": "쿼리", + "toc": "목차" + }, + "regenerate": "재생성" +} diff --git a/web/i18n/ko-KR/app-api.ts b/web/i18n/ko-KR/app-api.ts deleted file mode 100644 index 4f8ac14d86..0000000000 --- a/web/i18n/ko-KR/app-api.ts +++ /dev/null @@ -1,87 +0,0 @@ -const translation = { - apiServer: 'API 서버', - apiKey: 'API 키', - status: '상태', - disabled: '비활성화됨', - ok: '서비스 중', - copy: '복사', - copied: '복사 완료', - play: '실행', - pause: '일시 정지', - playing: '실행 중', - loading: '로드 중', - merMaid: { - rerender: '다시 렌더링', - }, - never: '없음', - apiKeyModal: { - apiSecretKey: 'API 비밀 키', - apiSecretKeyTips: 'API 키를 보호하여 API 의 남용을 방지하십시오. 프런트엔드 코드에서 평문으로 사용하지 마세요. :)', - createNewSecretKey: '새로운 비밀 키 생성', - secretKey: '비밀 키', - created: '생성 날짜', - lastUsed: '최종 사용 날짜', - generateTips: '이 키를 안전하고 접근 가능한 위치에 보관하십시오.', - }, - actionMsg: { - deleteConfirmTitle: '이 비밀 키를 삭제하시겠습니까?', - deleteConfirmTips: '이 작업은 취소할 수 없습니다.', - ok: '확인', - }, - completionMode: { - title: '완성 모드 API', - info: '문서, 요약, 번역 등 고품질 텍스트 생성을 위해 사용자 입력을 사용하는 완성 메시지 API 를 사용합니다. 텍스트 생성은 Dify Prompt Engineering 에서 설정한 모델 매개변수와 프롬프트 템플릿에 의존합니다.', - createCompletionApi: '완성 메시지 생성', - createCompletionApiTip: '질의 응답 모드를 지원하기 위해 완성 메시지를 생성합니다.', - inputsTips: - '(선택 사항) Prompt Eng 의 변수에 해당하는 키 - 값 쌍으로 사용자 입력 필드를 제공합니다. 키는 변수 이름이고 값은 매개변수 값입니다. 필드 유형이 Select 인 경우 전송되는 값은 미리 설정된 선택 사항 중 하나여야 합니다.', - queryTips: '사용자 입력 텍스트 내용.', - blocking: '블로킹 유형으로 실행이 완료되고 결과가 반환될 때까지 대기합니다. (처리가 오래 걸리면 요청이 중단될 수 있습니다)', - streaming: '스트리밍 반환. SSE(Server-Sent Events) 를 기반으로 하는 스트리밍 반환 구현.', - messageFeedbackApi: '메시지 피드백 (좋아요)', - messageFeedbackApiTip: '엔드 사용자 대신 수신된 메시지를 "좋아요" 또는 "좋아요"로 평가합니다. 이 데이터는 로그 및 주석 페이지에 표시되며 향후 모델 세부 조정에 사용됩니다.', - messageIDTip: '메시지 ID', - ratingTip: '좋아요 또는 좋아요, null 은 취소', - parametersApi: '애플리케이션 매개변수 정보 가져오기', - parametersApiTip: '변수 이름, 필드 이름, 유형, 기본값을 포함한 설정된 입력 매개변수를 가져옵니다. 일반적으로 이러한 필드는 양식에 표시하거나 클라이언트 로드 후에 기본값을 입력하는 데 사용됩니다.', - }, - chatMode: { - title: '채팅 모드 API', - info: '질의 응답 형식을 사용하는 다목적 대화형 응용 프로그램에는 채팅 메시지 API 를 호출하여 대화를 시작합니다. 반환된 conversation_id 를 전달하여 계속된 대화를 유지합니다. 응답 매개변수 및 템플릿은 Dify Prompt Eng 의 설정에 의존합니다.', - createChatApi: '채팅 메시지 생성', - createChatApiTip: '새로운 대화 메시지를 생성하거나 기존 대화를 계속합니다.', - inputsTips: - '(선택 사항) Prompt Eng 의 변수에 해당하는 키 - 값 쌍으로 사용자 입력 필드를 제공합니다. 키는 변수 이름이고 값은 매개변수 값입니다. 필드 유형이 Select 인 경우 전송되는 값은 미리 설정된 선택 사항 중 하나여야 합니다.', - queryTips: '사용자 입력/질문 내용', - blocking: '블로킹 유형으로 실행이 완료되고 결과가 반환될 때까지 대기합니다. (처리가 오래 걸리면 요청이 중단될 수 있습니다)', - streaming: '스트리밍 반환. SSE(Server-Sent Events) 를 기반으로 하는 스트리밍 반환 구현.', - conversationIdTip: '(선택 사항) 대화 ID: 처음 대화의 경우 비워두고, 계속된 경우 컨텍스트에서 conversation_id 를 전달합니다.', - messageFeedbackApi: '메시지 피드백 (좋아요)', - messageFeedbackApiTip: '엔드 사용자 대신 수신된 메시지를 "좋아요" 또는 "좋아요"로 평가합니다. 이 데이터는 로그 및 주석 페이지에 표시되며 향후 모델 세부 조정에 사용됩니다.', - messageIDTip: '메시지 ID', - ratingTip: '좋아요 또는 좋아요, null 은 취소', - chatMsgHistoryApi: '채팅 메시지 기록 가져오기', - chatMsgHistoryApiTip: '첫 번째 페이지는 최신의 "limit" 바를 반환합니다. 역순입니다.', - chatMsgHistoryConversationIdTip: '대화 ID', - chatMsgHistoryFirstId: '현재 페이지의 첫 번째 채팅 레코드의 ID. 기본값은 없음입니다.', - chatMsgHistoryLimit: '한 번에 반환되는 채팅 수', - conversationsListApi: '대화 목록 가져오기', - conversationsListApiTip: '현재 사용자의 세션 목록을 가져옵니다. 기본적으로 최근 20 개의 세션이 반환됩니다.', - conversationsListFirstIdTip: '현재 페이지의 마지막 레코드의 ID, 기본값은 없음입니다.', - conversationsListLimitTip: '한 번에 반환되는 채팅 수', - conversationRenamingApi: '대화 이름 변경', - conversationRenamingApiTip: '대화 이름을 변경합니다. 이름은 멀티 세션 클라이언트 인터페이스에 표시됩니다.', - conversationRenamingNameTip: '새 이름', - parametersApi: '애플리케이션 매개변수 정보 가져오기', - parametersApiTip: '변수 이름, 필드 이름, 유형, 기본값을 포함한 설정된 입력 매개변수를 가져옵니다. 일반적으로 이러한 필드는 양식에 표시하거나 클라이언트 로드 후에 기본값을 입력하는 데 사용됩니다.', - }, - develop: { - requestBody: '요청 본문', - pathParams: '경로 매개변수', - query: '쿼리', - toc: '목차', - }, - regenerate: '재생성', -} - -export default translation diff --git a/web/i18n/ko-KR/app-debug.json b/web/i18n/ko-KR/app-debug.json new file mode 100644 index 0000000000..49d43e0633 --- /dev/null +++ b/web/i18n/ko-KR/app-debug.json @@ -0,0 +1,563 @@ +{ + "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": "LLM 제공자 키가 설정되지 않았습니다", + "trailFinished": "트라이얼 종료", + "description": "LLM 제공자 키가 설정되지 않았습니다. 디버깅하기 전에 설정해야 합니다.", + "settingBtn": "설정으로 이동" + }, + "trailUseGPT4Info": { + "title": "현재 gpt-4 는 지원되지 않습니다", + "description": "gpt-4 를 사용하려면 API 키를 설정해야 합니다." + }, + "feature": { + "groupChat": { + "title": "채팅 기능 강화", + "description": "사전 대화 설정을 추가하면 사용자 경험이 향상됩니다." + }, + "groupExperience": { + "title": "경험 강화" + }, + "conversationOpener": { + "title": "대화 시작", + "description": "채팅 앱에서 AI 가 사용자에게 처음으로 적극적으로 말을 건다면 일반적으로 환영 메시지로 사용됩니다." + }, + "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": "지식을 컨텍스트로 가져올 수 있습니다", + "selectTitle": "참조할 지식 선택", + "selected": "선택한 지식", + "noDataSet": "지식이 없습니다", + "toCreate": "생성하기", + "notSupportSelectMulti": "현재 다중 선택은 지원되지 않습니다", + "queryVariable": { + "title": "쿼리 변수", + "tip": "이 변수는 컨텍스트 조회에 사용되는 쿼리 입력으로 사용되며, 이 변수 입력에 관련된 컨텍스트 정보를 가져옵니다.", + "choosePlaceholder": "쿼리 변수 선택", + "noVar": "변수 없음", + "noVarTip": "변수 섹션 하단에서 변수를 생성하십시오", + "unableToQueryDataSet": "지식을 쿼리할 수 없음", + "unableToQueryDataSetTip": "지식 쿼리에 실패했습니다. 정상적으로 쿼리할 수 없는 경우, 컨텍스트 섹션에서 컨텍스트 쿼리 변수를 다시 선택하십시오.", + "ok": "확인", + "contextVarNotEmpty": "컨텍스트 쿼리 변수를 비울 수 없습니다", + "deleteContextVarTitle": "변수 \"{{varName}}\"를 삭제하시겠습니까?", + "deleteContextVarTip": "이 변수는 컨텍스트 쿼리 변수로 설정되어 있어 삭제하면 지식의 정상적인 사용에 영향을 미칩니다. 삭제하려면 컨텍스트 섹션에서 다시 선택하십시오." + } + }, + "tools": { + "title": "도구", + "tips": "도구는 사용자 입력이나 변수를 요청 매개변수로 사용하여 외부 데이터를 컨텍스트로 쿼리하는 표준적인 API 호출 방법을 제공합니다.", + "toolsInUse": "{{count}}개의 도구가 사용 중", + "modal": { + "title": "도구", + "toolType": { + "title": "도구 유형", + "placeholder": "도구 유형 선택" + }, + "name": { + "title": "이름", + "placeholder": "이름 입력" + }, + "variableName": { + "title": "변수 이름", + "placeholder": "변수 이름 입력" + } + } + }, + "conversationHistory": { + "title": "대화 기록", + "description": "대화 역할에 접두사 이름을 설정합니다", + "tip": "대화 기록이 활성화되어 있지 않습니다. 위의 프롬프트에 를 추가하십시오.", + "learnMore": "자세히 알아보기", + "editModal": { + "title": "대화 역할 이름 편집", + "userPrefix": "사용자 접두사", + "assistantPrefix": "어시스턴트 접두사" + } + }, + "toolbox": { + "title": "도구 상자" + }, + "moderation": { + "title": "콘텐츠 모더레이션", + "description": "모더레이션 API 를 사용하거나 기밀 단어 목록을 유지함으로써 모델 출력을 안전하게 합니다.", + "allEnabled": "입력/출력 콘텐츠가 모두 활성화되어 있습니다", + "inputEnabled": "입력 콘텐츠가 활성화되어 있습니다", + "outputEnabled": "출력 콘텐츠가 활성화되어 있습니다", + "modal": { + "title": "콘텐츠 모더레이션 설정", + "provider": { + "title": "제공자", + "openai": "OpenAI 모더레이션", + "openaiTip": { + "prefix": "OpenAI 모더레이션에는", + "suffix": "에 OpenAI API 키가 설정되어 있어야 합니다." + }, + "keywords": "키워드" + }, + "keywords": { + "tip": "한 줄에 하나씩, 줄 바꿈으로 입력하세요. 한 줄 당 최대 100 자.", + "placeholder": "한 줄씩 입력하세요", + "line": "줄" + }, + "content": { + "input": "입력 콘텐츠 모더레이션", + "output": "출력 콘텐츠 모더레이션", + "preset": "프리셋 응답", + "placeholder": "프리셋 응답 내용을 입력하세요", + "condition": "최소한 하나의 입력 및 출력 콘텐츠를 모더레이션합니다", + "fromApi": "프리셋 응답은 API 에서 반환됩니다", + "errorMessage": "프리셋 응답은 비워둘 수 없습니다", + "supportMarkdown": "마크다운이 지원됩니다" + }, + "openaiNotConfig": { + "before": "OpenAI 모더레이션에는", + "after": "에 OpenAI API 키가 설정되어 있어야 합니다." + } + }, + "contentEnableLabel": "콘텐츠 모더레이션이 활성화됨" + }, + "fileUpload": { + "title": "파일 업로드", + "description": "채팅 입력 상자에서 이미지, 문서 및 기타 파일 업로드를 지원합니다.", + "supportedTypes": "지원 파일 유형", + "numberLimit": "최대 업로드 수", + "modalTitle": "파일 업로드 설정" + }, + "imageUpload": { + "title": "이미지 업로드", + "description": "이미지 업로드를 지원합니다.", + "supportedTypes": "지원 파일 유형", + "numberLimit": "최대 업로드 수", + "modalTitle": "이미지 업로드 설정" + }, + "bar": { + "empty": "웹 앱 사용자 경험을 향상시키는 기능 활성화", + "enableText": "기능 활성화됨", + "manage": "관리" + }, + "documentUpload": { + "title": "문서", + "description": "문서를 활성화하면 모델이 문서를 받아들이고 문서에 대한 질문에 답할 수 있습니다." + }, + "audioUpload": { + "title": "오디오", + "description": "오디오를 활성화하면 모델이 전사 및 분석을 위해 오디오 파일을 처리할 수 있습니다." + } + }, + "automatic": {}, + "resetConfig": { + "title": "리셋을 확인하시겠습니까?", + "message": "변경 사항이 취소되고, 마지막으로 공개된 구성이 복원됩니다." + }, + "errorMessage": { + "nameOfKeyRequired": "키 이름: {{key}} 이 필요합니다", + "valueOfVarRequired": "{{key}}의 값은 비워둘 수 없습니다", + "queryRequired": "요청 텍스트가 필요합니다.", + "waitForResponse": "이전 메시지에 대한 응답이 완료될 때까지 기다려 주세요.", + "waitForBatchResponse": "배치 작업에 대한 응답이 완료될 때까지 기다려 주세요.", + "notSelectModel": "모델을 선택해 주세요", + "waitForImgUpload": "이미지 업로드가 완료될 때까지 기다려 주세요", + "waitForFileUpload": "파일이 업로드될 때까지 기다리십시오." + }, + "chatSubTitle": "단계", + "completionSubTitle": "접두사 프롬프트", + "promptTip": "프롬프트는 AI 의 응답을 지시하고 제한하여 유도합니다. {{input}}과 같은 변수를 삽입하세요. 이 프롬프트는 사용자에게 표시되지 않습니다.", + "formattingChangedTitle": "포맷이 변경되었습니다", + "formattingChangedText": "포맷을 변경하면 디버그 영역이 재설정됩니다. 계속하시겠습니까?", + "variableTitle": "변수", + "variableTip": "사용자는 양식에 변수를 입력하고, 프롬프트 내의 변수가 자동으로 대체됩니다.", + "notSetVar": "변수를 사용하면 사용자는 양식에 입력할 때 프롬프트의 단어나 시작 단어를 소개할 수 있습니다. \"{{input}}\"을 프롬프트 단어에 입력해 보세요.", + "autoAddVar": "프리프롬프트에서 참조되는 미정의 변수가 있습니다. 사용자 입력 양식에 추가하시겠습니까?", + "variableTable": { + "key": "변수 키", + "name": "사용자 입력 필드명", + "type": "입력 타입", + "action": "액션", + "typeString": "문자열", + "typeSelect": "선택" + }, + "varKeyError": { + "canNoBeEmpty": "{{key}}가 필요합니다", + "tooLong": "{{key}}가 너무 깁니다. 30 자를 넘을 수 없습니다", + "notValid": "{{key}}가 유효하지 않습니다. 문자, 숫자, 밑줄만 포함할 수 있습니다", + "notStartWithNumber": "{{key}}는 숫자로 시작할 수 없습니다", + "keyAlreadyExists": "{{key}}는 이미 존재합니다" + }, + "otherError": { + "promptNoBeEmpty": "프롬프트를 비울 수 없습니다", + "historyNoBeEmpty": "프롬프트에 대화 기록을 설정해야 합니다", + "queryNoBeEmpty": "프롬프트에 쿼리를 설정해야 합니다" + }, + "variableConfig": { + "addModalTitle": "입력 필드 추가", + "editModalTitle": "입력 필드 편집", + "description": "{{varName}} 변수 설정", + "fieldType": "필드 타입", + "string": "짧은 텍스트", + "text-input": "짧은 텍스트", + "paragraph": "문단", + "select": "선택", + "number": "숫자", + "notSet": "설정되지 않음. 프롬프트의 프리픽스에 {{input}}을 입력해 보세요.", + "stringTitle": "폼 텍스트 상자 옵션", + "maxLength": "최대 길이", + "options": "옵션", + "addOption": "옵션 추가", + "apiBasedVar": "API 기반 변수", + "varName": "변수명", + "labelName": "레이블명", + "inputPlaceholder": "입력하세요", + "required": "필수", + "hide": "숨기기", + "errorMsg": { + "labelNameRequired": "레이블명은 필수입니다", + "varNameCanBeRepeat": "변수명은 중복될 수 없습니다", + "atLeastOneOption": "적어도 하나의 옵션이 필요합니다", + "optionRepeat": "옵션이 중복되어 있습니다" + }, + "defaultValue": "기본값", + "noDefaultValue": "기본값 없음", + "selectDefaultValue": "기본값 선택", + "file": { + "image": { + "name": "이미지" + }, + "audio": { + "name": "오디오" + }, + "document": { + "name": "문서" + }, + "video": { + "name": "비디오" + }, + "custom": { + "description": "다른 파일 형식을 지정합니다.", + "name": "다른 파일 형식", + "createPlaceholder": " 파일 확장자(예: .doc" + }, + "supportFileTypes": "지원 파일 형식" + }, + "content": "콘텐츠", + "single-file": "단일 파일", + "both": "둘다", + "multi-files": "파일 목록", + "uploadFileTypes": "파일 형식 업로드", + "maxNumberOfUploads": "최대 업로드 수", + "maxNumberTip": "문서 < {{docLimit}}, 이미지 < {{imgLimit}}, 오디오 < {{audioLimit}}, 비디오 < {{videoLimit}}", + "localUpload": "로컬 업로드", + "json": "JSON 코드", + "jsonSchema": "JSON 스키마", + "checkbox": "체크박스", + "optional": "선택 사항", + "unit": "단위", + "uploadMethod": "업로드 방법", + "startChecked": "시작 체크", + "tooltips": "툴팁", + "placeholder": "자리 표시자", + "noDefaultSelected": "선택하지 않음", + "displayName": "표시 이름", + "showAllSettings": "모든 설정 표시", + "startSelectedOption": "선택한 옵션 시작", + "unitPlaceholder": "숫자 뒤에 단위 표시(예: 토큰)", + "placeholderPlaceholder": "필드가 비어 있을 때 표시할 텍스트를 입력합니다.", + "defaultValuePlaceholder": "필드를 미리 채울 기본값을 입력합니다.", + "tooltipsPlaceholder": "레이블 위로 마우스를 가져갈 때 표시되는 유용한 텍스트를 입력합니다." + }, + "vision": { + "name": "비전", + "description": "비전을 활성화하면 모델이 이미지를 받아와 관련 질문에 답변할 수 있습니다.", + "settings": "설정", + "visionSettings": { + "title": "비전 설정", + "resolution": "해상도", + "resolutionTooltip": "저해상도는 모델에게 512 x 512 해상도의 저해상도 이미지를 제공하여 65 토큰의 예산으로 이미지를 표현합니다. 이로 인해 API 는 더 빠른 응답을 제공하며 높은 세부 정보가 필요한 경우 토큰 소모를 늘립니다.\n고해상도는 먼저 모델에게 저해상도 이미지를 보여주고, 그 후 입력 이미지 크기에 따라 512px 의 정사각형 세부 사진을 만듭니다. 각 세부 사진에 대해 129 토큰의 예산을 사용합니다.", + "high": "고", + "low": "저", + "uploadMethod": "업로드 방식", + "both": "모두", + "localUpload": "로컬 업로드", + "url": "URL", + "uploadLimit": "업로드 제한" + }, + "onlySupportVisionModelTip": "비전 모델만 지원" + }, + "voice": { + "name": "음성", + "defaultDisplay": "기본 음성", + "description": "텍스트 읽기 음성 설정", + "settings": "설정", + "voiceSettings": { + "title": "음성 설정", + "language": "언어", + "resolutionTooltip": "텍스트 읽기 음성 언어를 지원합니다.", + "voice": "음성", + "autoPlay": "자동 재생", + "autoPlayEnabled": "켜다", + "autoPlayDisabled": "폐쇄" + } + }, + "openingStatement": { + "title": "대화 시작", + "add": "추가", + "writeOpener": "오프너 작성", + "placeholder": "여기에 오프너 메시지를 작성하세요. 변수를 사용할 수 있습니다. {{variable}}를 입력해보세요.", + "openingQuestion": "시작 질문", + "openingQuestionPlaceholder": "변수를 사용할 수 있습니다. {{variable}}을(를) 입력해 보세요.", + "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-to-1 리트리벌", + "description": "사용자 의도와 지식 설명을 기반으로, 에이전트가 자율적으로 최적의 지식을 선택합니다. 개별적이고 제한된 지식을 가진 애플리케이션에 적합합니다." + }, + "retrieveMultiWay": { + "title": "멀티패스 리트리벌", + "description": "사용자 의도에 따라 모든 지식을 쿼리하고, 관련 텍스트를 여러 소스에서 가져와 다시 순위를 매긴 후 사용자 쿼리에 가장 적합한 결과를 선택합니다. 재순위 모델 API 의 구성이 필요합니다." + }, + "rerankModelRequired": "재순위 모델이 필요합니다", + "params": "매개변수", + "top_k": "상위 K", + "top_kTip": "사용자 질문에 가장 유사한 청크를 필터링하는 데 사용됩니다. 시스템은 선택한 모델의 max_tokens 에 따라 동적으로 상위 K 값을 조정합니다.", + "score_threshold": "점수 임계값", + "score_thresholdTip": "청크 필터링의 유사성 임계값을 설정하는 데 사용됩니다.", + "retrieveChangeTip": "인덱스 모드 및 리트리벌 모드를 변경하면 이 지식과 관련된 애플리케이션에 영향을 줄 수 있습니다.", + "embeddingModelRequired": "구성된 임베딩 모델이 필요합니다." + }, + "debugAsSingleModel": "단일 모델로 디버그", + "debugAsMultipleModel": "다중 모델로 디버그", + "duplicateModel": "복제", + "publishAs": "로 게시", + "assistantType": { + "name": "어시스턴트 유형", + "chatAssistant": { + "name": "기본 어시스턴트", + "description": "대규모 언어 모델을 사용하여 채팅 기반의 어시스턴트를 구축합니다" + }, + "agentAssistant": { + "name": "에이전트 어시스턴트", + "description": "작업을 자율적으로 완료하기 위한 도구를 선택할 수 있는 인텔리전트 에이전트를 구축합니다" + } + }, + "agent": { + "agentMode": "에이전트 모드", + "agentModeDes": "에이전트의 추론 모드 유형을 설정합니다", + "agentModeType": { + "ReACT": "ReAct", + "functionCall": "함수 호출" + }, + "setting": { + "name": "에이전트 설정", + "description": "에이전트 어시스턴트 설정에서는 에이전트 모드나 빌트인 프롬프트 등 고급 기능을 설정할 수 있습니다. 에이전트 유형에서만 사용할 수 있습니다.", + "maximumIterations": { + "name": "최대 반복 횟수", + "description": "에이전트 어시스턴트가 실행할 수 있는 반복 횟수를 제한합니다" + } + }, + "buildInPrompt": "빌트인 프롬프트", + "firstPrompt": "첫 번째 프롬프트", + "nextIteration": "다음 반복", + "promptPlaceholder": "여기에 프롬프트를 입력하세요", + "tools": { + "name": "도구", + "description": "도구를 사용하여 인터넷 검색이나 과학적 계산 등 LLM 의 기능을 확장할 수 있습니다", + "enabled": "활성화됨" + } + }, + "codegen": { + "instruction": "지시", + "apply": "적용하다", + "generatedCodeTitle": "생성된 코드", + "title": "코드 생성기", + "applyChanges": "변경 사항 적용", + "resTitle": "생성된 코드", + "noDataLine1": "왼쪽에 사용 사례를 설명하십시오.", + "overwriteConfirmTitle": "기존 코드를 덮어쓰시겠습니까?", + "generate": "창조하다", + "loading": "코드 생성 중...", + "overwriteConfirmMessage": "이 작업은 기존 코드를 덮어씁니다. 계속하시겠습니까?", + "noDataLine2": "코드 미리 보기가 여기에 표시됩니다.", + "instructionPlaceholder": "생성하려는 코드에 대한 자세한 설명을 입력합니다.", + "description": "코드 생성기는 구성된 모델을 사용하여 지시에 따라 고품질 코드를 생성합니다. 명확하고 자세한 지침을 제공하십시오." + }, + "generate": { + "template": { + "pythonDebugger": { + "name": "파이썬 디버거", + "instruction": "지시에 따라 코드를 생성하고 디버깅할 수 있는 봇" + }, + "translation": { + "name": "번역", + "instruction": "여러 언어를 번역할 수 있는 번역기" + }, + "professionalAnalyst": { + "name": "전문 분석가", + "instruction": "인사이트를 추출하고, 위험을 식별하고, 긴 보고서에서 주요 정보를 단일 메모로 추출합니다." + }, + "excelFormulaExpert": { + "name": "Excel 수식 전문가", + "instruction": "초보 사용자가 사용자 지시에 따라 Excel 수식을 이해, 사용 및 생성할 수 있도록 도와주는 챗봇" + }, + "travelPlanning": { + "name": "여행 계획", + "instruction": "여행 계획 도우미는 사용자가 쉽게 여행을 계획할 수 있도록 설계된 지능형 도구입니다" + }, + "SQLSorcerer": { + "name": "SQL 마법사", + "instruction": "일상적인 언어를 SQL 쿼리로 변환" + }, + "GitGud": { + "name": "깃구드", + "instruction": "사용자가 설명한 버전 제어 작업을 기반으로 적절한 Git 명령 생성" + }, + "meetingTakeaways": { + "name": "회의 요점", + "instruction": "회의를 토론 주제, 핵심 내용 및 실행 항목을 포함한 간결한 요약으로 추출합니다." + }, + "writingsPolisher": { + "name": "글쓰기 폴리셔", + "instruction": "고급 카피에디팅 기술을 사용하여 글쓰기 향상" + } + }, + "apply": "적용하다", + "instruction": "지시", + "resTitle": "생성된 프롬프트", + "generate": "창조하다", + "tryIt": "사용해 보기", + "title": "프롬프트 생성기", + "overwriteTitle": "기존 구성을 재정의하시겠습니까?", + "loading": "응용 프로그램 오케스트레이션...", + "overwriteMessage": "이 프롬프트를 적용하면 기존 구성이 재정의됩니다.", + "description": "프롬프트 생성기는 구성된 모델을 사용하여 더 높은 품질과 더 나은 구조를 위해 프롬프트를 최적화합니다. 명확하고 상세한 지침을 작성하십시오.", + "to": "에게", + "press": "프레스", + "dismiss": "해제", + "version": "버전", + "latest": "최신", + "versions": "버전들", + "optimizationNote": "최적화 참고", + "optional": "선택 사항", + "idealOutput": "이상적인 출력", + "insertContext": "문맥을 삽입하세요.", + "optimizePromptTooltip": "프롬프트 생성기에서 최적화하기", + "instructionPlaceHolderLine1": "출력을 더 간결하게 하여 핵심 내용을 유지하세요.", + "instructionPlaceHolderLine3": "톤이 너무 거칠어요, 좀 더 친근하게 만들어 주세요.", + "instructionPlaceHolderLine2": "출력 형식이 잘못되었습니다. JSON 형식을 엄격히 준수해 주시기 바랍니다.", + "idealOutputPlaceholder": "당신의 이상적인 응답 형식, 길이, 톤 및 내용 요구 사항을 설명하십시오...", + "instructionPlaceHolderTitle": "이 프롬프트를 어떻게 개선하고 싶은지 설명하세요. 예를 들어:", + "newNoDataLine1": "왼쪽 열에 지침을 작성하고 생성 버튼을 클릭하여 응답을 확인하세요.", + "codeGenInstructionPlaceHolderLine": "입력 및 출력의 데이터 유형과 변수 처리 방법과 같은 피드백이 더 상세할수록 코드 생성이 더 정확해질 것입니다." + }, + "warningMessage": { + "timeoutExceeded": "시간 초과로 인해 결과가 표시되지 않습니다. 전체 결과를 수집하려면 로그를 참조하십시오." + }, + "noResult": "출력이 여기에 표시됩니다." +} diff --git a/web/i18n/ko-KR/app-debug.ts b/web/i18n/ko-KR/app-debug.ts deleted file mode 100644 index 5258287285..0000000000 --- a/web/i18n/ko-KR/app-debug.ts +++ /dev/null @@ -1,566 +0,0 @@ -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: 'LLM 제공자 키가 설정되지 않았습니다', - trailFinished: '트라이얼 종료', - description: 'LLM 제공자 키가 설정되지 않았습니다. 디버깅하기 전에 설정해야 합니다.', - settingBtn: '설정으로 이동', - }, - trailUseGPT4Info: { - title: '현재 gpt-4 는 지원되지 않습니다', - description: 'gpt-4 를 사용하려면 API 키를 설정해야 합니다.', - }, - feature: { - groupChat: { - title: '채팅 기능 강화', - description: '사전 대화 설정을 추가하면 사용자 경험이 향상됩니다.', - }, - groupExperience: { - title: '경험 강화', - }, - conversationOpener: { - title: '대화 시작', - description: '채팅 앱에서 AI 가 사용자에게 처음으로 적극적으로 말을 건다면 일반적으로 환영 메시지로 사용됩니다.', - }, - 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: '지식을 컨텍스트로 가져올 수 있습니다', - selectTitle: '참조할 지식 선택', - selected: '선택한 지식', - noDataSet: '지식이 없습니다', - toCreate: '생성하기', - notSupportSelectMulti: '현재 다중 선택은 지원되지 않습니다', - queryVariable: { - title: '쿼리 변수', - tip: '이 변수는 컨텍스트 조회에 사용되는 쿼리 입력으로 사용되며, 이 변수 입력에 관련된 컨텍스트 정보를 가져옵니다.', - choosePlaceholder: '쿼리 변수 선택', - noVar: '변수 없음', - noVarTip: '변수 섹션 하단에서 변수를 생성하십시오', - unableToQueryDataSet: '지식을 쿼리할 수 없음', - unableToQueryDataSetTip: '지식 쿼리에 실패했습니다. 정상적으로 쿼리할 수 없는 경우, 컨텍스트 섹션에서 컨텍스트 쿼리 변수를 다시 선택하십시오.', - ok: '확인', - contextVarNotEmpty: '컨텍스트 쿼리 변수를 비울 수 없습니다', - deleteContextVarTitle: '변수 "{{varName}}"를 삭제하시겠습니까?', - deleteContextVarTip: '이 변수는 컨텍스트 쿼리 변수로 설정되어 있어 삭제하면 지식의 정상적인 사용에 영향을 미칩니다. 삭제하려면 컨텍스트 섹션에서 다시 선택하십시오.', - }, - }, - tools: { - title: '도구', - tips: '도구는 사용자 입력이나 변수를 요청 매개변수로 사용하여 외부 데이터를 컨텍스트로 쿼리하는 표준적인 API 호출 방법을 제공합니다.', - toolsInUse: '{{count}}개의 도구가 사용 중', - modal: { - title: '도구', - toolType: { - title: '도구 유형', - placeholder: '도구 유형 선택', - }, - name: { - title: '이름', - placeholder: '이름 입력', - }, - variableName: { - title: '변수 이름', - placeholder: '변수 이름 입력', - }, - }, - }, - conversationHistory: { - title: '대화 기록', - description: '대화 역할에 접두사 이름을 설정합니다', - tip: '대화 기록이 활성화되어 있지 않습니다. 위의 프롬프트에 를 추가하십시오.', - learnMore: '자세히 알아보기', - editModal: { - title: '대화 역할 이름 편집', - userPrefix: '사용자 접두사', - assistantPrefix: '어시스턴트 접두사', - }, - }, - toolbox: { - title: '도구 상자', - }, - moderation: { - title: '콘텐츠 모더레이션', - description: '모더레이션 API 를 사용하거나 기밀 단어 목록을 유지함으로써 모델 출력을 안전하게 합니다.', - allEnabled: '입력/출력 콘텐츠가 모두 활성화되어 있습니다', - inputEnabled: '입력 콘텐츠가 활성화되어 있습니다', - outputEnabled: '출력 콘텐츠가 활성화되어 있습니다', - modal: { - title: '콘텐츠 모더레이션 설정', - provider: { - title: '제공자', - openai: 'OpenAI 모더레이션', - openaiTip: { - prefix: 'OpenAI 모더레이션에는', - suffix: '에 OpenAI API 키가 설정되어 있어야 합니다.', - }, - keywords: '키워드', - }, - keywords: { - tip: '한 줄에 하나씩, 줄 바꿈으로 입력하세요. 한 줄 당 최대 100 자.', - placeholder: '한 줄씩 입력하세요', - line: '줄', - }, - content: { - input: '입력 콘텐츠 모더레이션', - output: '출력 콘텐츠 모더레이션', - preset: '프리셋 응답', - placeholder: '프리셋 응답 내용을 입력하세요', - condition: '최소한 하나의 입력 및 출력 콘텐츠를 모더레이션합니다', - fromApi: '프리셋 응답은 API 에서 반환됩니다', - errorMessage: '프리셋 응답은 비워둘 수 없습니다', - supportMarkdown: '마크다운이 지원됩니다', - }, - openaiNotConfig: { - before: 'OpenAI 모더레이션에는', - after: '에 OpenAI API 키가 설정되어 있어야 합니다.', - }, - }, - contentEnableLabel: '콘텐츠 모더레이션이 활성화됨', - }, - fileUpload: { - title: '파일 업로드', - description: '채팅 입력 상자에서 이미지, 문서 및 기타 파일 업로드를 지원합니다.', - supportedTypes: '지원 파일 유형', - numberLimit: '최대 업로드 수', - modalTitle: '파일 업로드 설정', - }, - imageUpload: { - title: '이미지 업로드', - description: '이미지 업로드를 지원합니다.', - supportedTypes: '지원 파일 유형', - numberLimit: '최대 업로드 수', - modalTitle: '이미지 업로드 설정', - }, - bar: { - empty: '웹 앱 사용자 경험을 향상시키는 기능 활성화', - enableText: '기능 활성화됨', - manage: '관리', - }, - documentUpload: { - title: '문서', - description: '문서를 활성화하면 모델이 문서를 받아들이고 문서에 대한 질문에 답할 수 있습니다.', - }, - audioUpload: { - title: '오디오', - description: '오디오를 활성화하면 모델이 전사 및 분석을 위해 오디오 파일을 처리할 수 있습니다.', - }, - }, - automatic: { - }, - resetConfig: { - title: '리셋을 확인하시겠습니까?', - message: '변경 사항이 취소되고, 마지막으로 공개된 구성이 복원됩니다.', - }, - errorMessage: { - nameOfKeyRequired: '키 이름: {{key}} 이 필요합니다', - valueOfVarRequired: '{{key}}의 값은 비워둘 수 없습니다', - queryRequired: '요청 텍스트가 필요합니다.', - waitForResponse: '이전 메시지에 대한 응답이 완료될 때까지 기다려 주세요.', - waitForBatchResponse: '배치 작업에 대한 응답이 완료될 때까지 기다려 주세요.', - notSelectModel: '모델을 선택해 주세요', - waitForImgUpload: '이미지 업로드가 완료될 때까지 기다려 주세요', - waitForFileUpload: '파일이 업로드될 때까지 기다리십시오.', - }, - chatSubTitle: '단계', - completionSubTitle: '접두사 프롬프트', - promptTip: '프롬프트는 AI 의 응답을 지시하고 제한하여 유도합니다. {{input}}과 같은 변수를 삽입하세요. 이 프롬프트는 사용자에게 표시되지 않습니다.', - formattingChangedTitle: '포맷이 변경되었습니다', - formattingChangedText: '포맷을 변경하면 디버그 영역이 재설정됩니다. 계속하시겠습니까?', - variableTitle: '변수', - variableTip: '사용자는 양식에 변수를 입력하고, 프롬프트 내의 변수가 자동으로 대체됩니다.', - notSetVar: '변수를 사용하면 사용자는 양식에 입력할 때 프롬프트의 단어나 시작 단어를 소개할 수 있습니다. "{{input}}"을 프롬프트 단어에 입력해 보세요.', - autoAddVar: '프리프롬프트에서 참조되는 미정의 변수가 있습니다. 사용자 입력 양식에 추가하시겠습니까?', - variableTable: { - key: '변수 키', - name: '사용자 입력 필드명', - type: '입력 타입', - action: '액션', - typeString: '문자열', - typeSelect: '선택', - }, - varKeyError: { - canNoBeEmpty: '{{key}}가 필요합니다', - tooLong: '{{key}}가 너무 깁니다. 30 자를 넘을 수 없습니다', - notValid: '{{key}}가 유효하지 않습니다. 문자, 숫자, 밑줄만 포함할 수 있습니다', - notStartWithNumber: '{{key}}는 숫자로 시작할 수 없습니다', - keyAlreadyExists: '{{key}}는 이미 존재합니다', - }, - otherError: { - promptNoBeEmpty: '프롬프트를 비울 수 없습니다', - historyNoBeEmpty: '프롬프트에 대화 기록을 설정해야 합니다', - queryNoBeEmpty: '프롬프트에 쿼리를 설정해야 합니다', - }, - variableConfig: { - 'addModalTitle': '입력 필드 추가', - 'editModalTitle': '입력 필드 편집', - 'description': '{{varName}} 변수 설정', - 'fieldType': '필드 타입', - 'string': '짧은 텍스트', - 'text-input': '짧은 텍스트', - 'paragraph': '문단', - 'select': '선택', - 'number': '숫자', - 'notSet': '설정되지 않음. 프롬프트의 프리픽스에 {{input}}을 입력해 보세요.', - 'stringTitle': '폼 텍스트 상자 옵션', - 'maxLength': '최대 길이', - 'options': '옵션', - 'addOption': '옵션 추가', - 'apiBasedVar': 'API 기반 변수', - 'varName': '변수명', - 'labelName': '레이블명', - 'inputPlaceholder': '입력하세요', - 'required': '필수', - 'hide': '숨기기', - 'errorMsg': { - labelNameRequired: '레이블명은 필수입니다', - varNameCanBeRepeat: '변수명은 중복될 수 없습니다', - atLeastOneOption: '적어도 하나의 옵션이 필요합니다', - optionRepeat: '옵션이 중복되어 있습니다', - }, - 'defaultValue': '기본값', - 'noDefaultValue': '기본값 없음', - 'selectDefaultValue': '기본값 선택', - 'file': { - image: { - name: '이미지', - }, - audio: { - name: '오디오', - }, - document: { - name: '문서', - }, - video: { - name: '비디오', - }, - custom: { - description: '다른 파일 형식을 지정합니다.', - name: '다른 파일 형식', - createPlaceholder: ' 파일 확장자(예: .doc', - }, - supportFileTypes: '지원 파일 형식', - }, - 'content': '콘텐츠', - 'single-file': '단일 파일', - 'both': '둘다', - 'multi-files': '파일 목록', - 'uploadFileTypes': '파일 형식 업로드', - 'maxNumberOfUploads': '최대 업로드 수', - 'maxNumberTip': '문서 < {{docLimit}}, 이미지 < {{imgLimit}}, 오디오 < {{audioLimit}}, 비디오 < {{videoLimit}}', - 'localUpload': '로컬 업로드', - 'json': 'JSON 코드', - 'jsonSchema': 'JSON 스키마', - 'checkbox': '체크박스', - 'optional': '선택 사항', - 'unit': '단위', - 'uploadMethod': '업로드 방법', - 'startChecked': '시작 체크', - 'tooltips': '툴팁', - 'placeholder': '자리 표시자', - 'noDefaultSelected': '선택하지 않음', - 'displayName': '표시 이름', - 'showAllSettings': '모든 설정 표시', - 'startSelectedOption': '선택한 옵션 시작', - 'unitPlaceholder': '숫자 뒤에 단위 표시(예: 토큰)', - 'placeholderPlaceholder': '필드가 비어 있을 때 표시할 텍스트를 입력합니다.', - 'defaultValuePlaceholder': '필드를 미리 채울 기본값을 입력합니다.', - 'tooltipsPlaceholder': '레이블 위로 마우스를 가져갈 때 표시되는 유용한 텍스트를 입력합니다.', - }, - vision: { - name: '비전', - description: '비전을 활성화하면 모델이 이미지를 받아와 관련 질문에 답변할 수 있습니다.', - settings: '설정', - visionSettings: { - title: '비전 설정', - resolution: '해상도', - resolutionTooltip: '저해상도는 모델에게 512 x 512 해상도의 저해상도 이미지를 제공하여 65 토큰의 예산으로 이미지를 표현합니다. 이로 인해 API 는 더 빠른 응답을 제공하며 높은 세부 정보가 필요한 경우 토큰 소모를 늘립니다.\n고해상도는 먼저 모델에게 저해상도 이미지를 보여주고, 그 후 입력 이미지 크기에 따라 512px 의 정사각형 세부 사진을 만듭니다. 각 세부 사진에 대해 129 토큰의 예산을 사용합니다.', - high: '고', - low: '저', - uploadMethod: '업로드 방식', - both: '모두', - localUpload: '로컬 업로드', - url: 'URL', - uploadLimit: '업로드 제한', - }, - onlySupportVisionModelTip: '비전 모델만 지원', - }, - voice: { - name: '음성', - defaultDisplay: '기본 음성', - description: '텍스트 읽기 음성 설정', - settings: '설정', - voiceSettings: { - title: '음성 설정', - language: '언어', - resolutionTooltip: '텍스트 읽기 음성 언어를 지원합니다.', - voice: '음성', - autoPlay: '자동 재생', - autoPlayEnabled: '켜다', - autoPlayDisabled: '폐쇄', - }, - }, - openingStatement: { - title: '대화 시작', - add: '추가', - writeOpener: '오프너 작성', - placeholder: '여기에 오프너 메시지를 작성하세요. 변수를 사용할 수 있습니다. {{variable}}를 입력해보세요.', - openingQuestion: '시작 질문', - openingQuestionPlaceholder: '변수를 사용할 수 있습니다. {{variable}}을(를) 입력해 보세요.', - 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-to-1 리트리벌', - description: '사용자 의도와 지식 설명을 기반으로, 에이전트가 자율적으로 최적의 지식을 선택합니다. 개별적이고 제한된 지식을 가진 애플리케이션에 적합합니다.', - }, - retrieveMultiWay: { - title: '멀티패스 리트리벌', - description: '사용자 의도에 따라 모든 지식을 쿼리하고, 관련 텍스트를 여러 소스에서 가져와 다시 순위를 매긴 후 사용자 쿼리에 가장 적합한 결과를 선택합니다. 재순위 모델 API 의 구성이 필요합니다.', - }, - rerankModelRequired: '재순위 모델이 필요합니다', - params: '매개변수', - top_k: '상위 K', - top_kTip: '사용자 질문에 가장 유사한 청크를 필터링하는 데 사용됩니다. 시스템은 선택한 모델의 max_tokens 에 따라 동적으로 상위 K 값을 조정합니다.', - score_threshold: '점수 임계값', - score_thresholdTip: '청크 필터링의 유사성 임계값을 설정하는 데 사용됩니다.', - retrieveChangeTip: '인덱스 모드 및 리트리벌 모드를 변경하면 이 지식과 관련된 애플리케이션에 영향을 줄 수 있습니다.', - embeddingModelRequired: '구성된 임베딩 모델이 필요합니다.', - }, - debugAsSingleModel: '단일 모델로 디버그', - debugAsMultipleModel: '다중 모델로 디버그', - duplicateModel: '복제', - publishAs: '로 게시', - assistantType: { - name: '어시스턴트 유형', - chatAssistant: { - name: '기본 어시스턴트', - description: '대규모 언어 모델을 사용하여 채팅 기반의 어시스턴트를 구축합니다', - }, - agentAssistant: { - name: '에이전트 어시스턴트', - description: '작업을 자율적으로 완료하기 위한 도구를 선택할 수 있는 인텔리전트 에이전트를 구축합니다', - }, - }, - agent: { - agentMode: '에이전트 모드', - agentModeDes: '에이전트의 추론 모드 유형을 설정합니다', - agentModeType: { - ReACT: 'ReAct', - functionCall: '함수 호출', - }, - setting: { - name: '에이전트 설정', - description: '에이전트 어시스턴트 설정에서는 에이전트 모드나 빌트인 프롬프트 등 고급 기능을 설정할 수 있습니다. 에이전트 유형에서만 사용할 수 있습니다.', - maximumIterations: { - name: '최대 반복 횟수', - description: '에이전트 어시스턴트가 실행할 수 있는 반복 횟수를 제한합니다', - }, - }, - buildInPrompt: '빌트인 프롬프트', - firstPrompt: '첫 번째 프롬프트', - nextIteration: '다음 반복', - promptPlaceholder: '여기에 프롬프트를 입력하세요', - tools: { - name: '도구', - description: '도구를 사용하여 인터넷 검색이나 과학적 계산 등 LLM 의 기능을 확장할 수 있습니다', - enabled: '활성화됨', - }, - }, - codegen: { - instruction: '지시', - apply: '적용하다', - generatedCodeTitle: '생성된 코드', - title: '코드 생성기', - applyChanges: '변경 사항 적용', - resTitle: '생성된 코드', - noDataLine1: '왼쪽에 사용 사례를 설명하십시오.', - overwriteConfirmTitle: '기존 코드를 덮어쓰시겠습니까?', - generate: '창조하다', - loading: '코드 생성 중...', - overwriteConfirmMessage: '이 작업은 기존 코드를 덮어씁니다. 계속하시겠습니까?', - noDataLine2: '코드 미리 보기가 여기에 표시됩니다.', - instructionPlaceholder: '생성하려는 코드에 대한 자세한 설명을 입력합니다.', - description: '코드 생성기는 구성된 모델을 사용하여 지시에 따라 고품질 코드를 생성합니다. 명확하고 자세한 지침을 제공하십시오.', - }, - generate: { - template: { - pythonDebugger: { - name: '파이썬 디버거', - instruction: '지시에 따라 코드를 생성하고 디버깅할 수 있는 봇', - }, - translation: { - name: '번역', - instruction: '여러 언어를 번역할 수 있는 번역기', - }, - professionalAnalyst: { - name: '전문 분석가', - instruction: '인사이트를 추출하고, 위험을 식별하고, 긴 보고서에서 주요 정보를 단일 메모로 추출합니다.', - }, - excelFormulaExpert: { - name: 'Excel 수식 전문가', - instruction: '초보 사용자가 사용자 지시에 따라 Excel 수식을 이해, 사용 및 생성할 수 있도록 도와주는 챗봇', - }, - travelPlanning: { - name: '여행 계획', - instruction: '여행 계획 도우미는 사용자가 쉽게 여행을 계획할 수 있도록 설계된 지능형 도구입니다', - }, - SQLSorcerer: { - name: 'SQL 마법사', - instruction: '일상적인 언어를 SQL 쿼리로 변환', - }, - GitGud: { - name: '깃구드', - instruction: '사용자가 설명한 버전 제어 작업을 기반으로 적절한 Git 명령 생성', - }, - meetingTakeaways: { - name: '회의 요점', - instruction: '회의를 토론 주제, 핵심 내용 및 실행 항목을 포함한 간결한 요약으로 추출합니다.', - }, - writingsPolisher: { - name: '글쓰기 폴리셔', - instruction: '고급 카피에디팅 기술을 사용하여 글쓰기 향상', - }, - }, - apply: '적용하다', - instruction: '지시', - resTitle: '생성된 프롬프트', - generate: '창조하다', - tryIt: '사용해 보기', - title: '프롬프트 생성기', - overwriteTitle: '기존 구성을 재정의하시겠습니까?', - loading: '응용 프로그램 오케스트레이션...', - overwriteMessage: '이 프롬프트를 적용하면 기존 구성이 재정의됩니다.', - description: '프롬프트 생성기는 구성된 모델을 사용하여 더 높은 품질과 더 나은 구조를 위해 프롬프트를 최적화합니다. 명확하고 상세한 지침을 작성하십시오.', - to: '에게', - press: '프레스', - dismiss: '해제', - version: '버전', - latest: '최신', - versions: '버전들', - optimizationNote: '최적화 참고', - optional: '선택 사항', - idealOutput: '이상적인 출력', - insertContext: '문맥을 삽입하세요.', - optimizePromptTooltip: '프롬프트 생성기에서 최적화하기', - instructionPlaceHolderLine1: '출력을 더 간결하게 하여 핵심 내용을 유지하세요.', - instructionPlaceHolderLine3: '톤이 너무 거칠어요, 좀 더 친근하게 만들어 주세요.', - instructionPlaceHolderLine2: '출력 형식이 잘못되었습니다. JSON 형식을 엄격히 준수해 주시기 바랍니다.', - idealOutputPlaceholder: '당신의 이상적인 응답 형식, 길이, 톤 및 내용 요구 사항을 설명하십시오...', - instructionPlaceHolderTitle: '이 프롬프트를 어떻게 개선하고 싶은지 설명하세요. 예를 들어:', - newNoDataLine1: '왼쪽 열에 지침을 작성하고 생성 버튼을 클릭하여 응답을 확인하세요.', - codeGenInstructionPlaceHolderLine: '입력 및 출력의 데이터 유형과 변수 처리 방법과 같은 피드백이 더 상세할수록 코드 생성이 더 정확해질 것입니다.', - }, - warningMessage: { - timeoutExceeded: '시간 초과로 인해 결과가 표시되지 않습니다. 전체 결과를 수집하려면 로그를 참조하십시오.', - }, - noResult: '출력이 여기에 표시됩니다.', -} - -export default translation diff --git a/web/i18n/ko-KR/app-log.json b/web/i18n/ko-KR/app-log.json new file mode 100644 index 0000000000..f3e6f4a103 --- /dev/null +++ b/web/i18n/ko-KR/app-log.json @@ -0,0 +1,110 @@ +{ + "title": "로그", + "description": "로그는 애플리케이션 실행 상태를 기록합니다. 사용자 입력 및 AI 응답이 포함됩니다.", + "dateTimeFormat": "YYYY/MM/DD HH:mm:ss", + "table": { + "header": { + "updatedTime": "업데이트 시간", + "time": "생성 시간", + "endUser": "엔드 유저 또는 계정", + "input": "입력", + "output": "출력", + "summary": "요약", + "messageCount": "메시지 수", + "userRate": "사용자 비율", + "adminRate": "관리자 비율", + "startTime": "시작 시간", + "status": "상태", + "runtime": "실행 시간", + "tokens": "토큰", + "user": "엔드 유저 또는 계정", + "version": "버전", + "triggered_from": "트리거 기준" + }, + "pagination": { + "previous": "이전", + "next": "다음" + }, + "empty": { + "noChat": "아직 대화가 없습니다", + "noOutput": "출력이 없습니다", + "element": { + "title": "여기 누구 있어요?", + "content": "여기에서 엔드 유저와 AI 애플리케이션 간 상호 작용을 관찰하고 주석을 달아 AI 정확도를 계속 향상시킵니다. 웹 앱을 공유하거나 테스트하고 다시 이 페이지로 돌아오세요." + } + } + }, + "detail": { + "time": "시간", + "conversationId": "대화 ID", + "promptTemplate": "프롬프트 템플릿", + "promptTemplateBeforeChat": "채팅 전 프롬프트 템플릿 - 시스템 메시지로", + "annotationTip": "{{user}}에 의해 향상됨", + "timeConsuming": "시간 소요", + "second": "초", + "tokenCost": "토큰 비용", + "loading": "로드 중", + "operation": { + "like": "좋아요", + "dislike": "좋아요 취소", + "addAnnotation": "향상 추가", + "editAnnotation": "향상 편집", + "annotationPlaceholder": "AI 가 응답할 것으로 예상하는 답변을 입력하여 향후 모델 세부 조정 및 텍스트 생성 품질 지속적 향상을 위해 개선할 수 있습니다." + }, + "variables": "변수", + "uploadImages": "업로드된 이미지", + "modelParams": "모델 매개 변수" + }, + "filter": { + "period": { + "today": "오늘", + "last7days": "지난 7 일", + "last4weeks": "지난 4 주", + "last3months": "지난 3 개월", + "last12months": "지난 12 개월", + "monthToDate": "월 초부터 오늘까지", + "quarterToDate": "분기 초부터 오늘까지", + "yearToDate": "연 초부터 오늘까지", + "allTime": "모든 기간", + "last30days": "최근 30일", + "custom": "사용자 정의" + }, + "annotation": { + "all": "모두", + "annotated": "향상 주석 ({{count}} 개 항목)", + "not_annotated": "주석 없음" + }, + "sortBy": "정렬 기준:", + "descending": "내림차순", + "ascending": "오름차순" + }, + "workflowTitle": "워크플로우 로그", + "workflowSubtitle": "이 로그는 Automate 의 작업을 기록했습니다.", + "runDetail": { + "title": "대화 로그", + "workflowTitle": "로그 세부 정보", + "fileListDetail": "세부", + "fileListLabel": "파일 세부 정보", + "testWithParams": "매개변수로 테스트" + }, + "promptLog": "프롬프트 로그", + "agentLog": "에이전트 로그", + "viewLog": "로그 보기", + "agentLogDetail": { + "agentMode": "에이전트 모드", + "toolUsed": "사용된 도구", + "iterations": "반복", + "iteration": "반복", + "finalProcessing": "최종 처리" + }, + "dateFormat": "MM/DD/YYYY", + "triggerBy": { + "debugging": "디버깅", + "appRun": "웹앱", + "webhook": "웹훅", + "schedule": "일정", + "plugin": "플러그인", + "ragPipelineRun": "RAG 파이프라인", + "ragPipelineDebugging": "RAG 디버깅" + } +} diff --git a/web/i18n/ko-KR/app-log.ts b/web/i18n/ko-KR/app-log.ts deleted file mode 100644 index e2b7edb10d..0000000000 --- a/web/i18n/ko-KR/app-log.ts +++ /dev/null @@ -1,113 +0,0 @@ -const translation = { - title: '로그', - description: '로그는 애플리케이션 실행 상태를 기록합니다. 사용자 입력 및 AI 응답이 포함됩니다.', - dateTimeFormat: 'YYYY/MM/DD HH:mm:ss', - table: { - header: { - updatedTime: '업데이트 시간', - time: '생성 시간', - endUser: '엔드 유저 또는 계정', - input: '입력', - output: '출력', - summary: '요약', - messageCount: '메시지 수', - userRate: '사용자 비율', - adminRate: '관리자 비율', - startTime: '시작 시간', - status: '상태', - runtime: '실행 시간', - tokens: '토큰', - user: '엔드 유저 또는 계정', - version: '버전', - triggered_from: '트리거 기준', - }, - pagination: { - previous: '이전', - next: '다음', - }, - empty: { - noChat: '아직 대화가 없습니다', - noOutput: '출력이 없습니다', - element: { - title: '여기 누구 있어요?', - content: - '여기에서 엔드 유저와 AI 애플리케이션 간 상호 작용을 관찰하고 주석을 달아 AI 정확도를 계속 향상시킵니다. 웹 앱을 공유하거나 테스트하고 다시 이 페이지로 돌아오세요.', - }, - }, - }, - detail: { - time: '시간', - conversationId: '대화 ID', - promptTemplate: '프롬프트 템플릿', - promptTemplateBeforeChat: '채팅 전 프롬프트 템플릿 - 시스템 메시지로', - annotationTip: '{{user}}에 의해 향상됨', - timeConsuming: '시간 소요', - second: '초', - tokenCost: '토큰 비용', - loading: '로드 중', - operation: { - like: '좋아요', - dislike: '좋아요 취소', - addAnnotation: '향상 추가', - editAnnotation: '향상 편집', - annotationPlaceholder: 'AI 가 응답할 것으로 예상하는 답변을 입력하여 향후 모델 세부 조정 및 텍스트 생성 품질 지속적 향상을 위해 개선할 수 있습니다.', - }, - variables: '변수', - uploadImages: '업로드된 이미지', - modelParams: '모델 매개 변수', - }, - filter: { - period: { - today: '오늘', - last7days: '지난 7 일', - last4weeks: '지난 4 주', - last3months: '지난 3 개월', - last12months: '지난 12 개월', - monthToDate: '월 초부터 오늘까지', - quarterToDate: '분기 초부터 오늘까지', - yearToDate: '연 초부터 오늘까지', - allTime: '모든 기간', - last30days: '최근 30일', - custom: '사용자 정의', - }, - annotation: { - all: '모두', - annotated: '향상 주석 ({{count}} 개 항목)', - not_annotated: '주석 없음', - }, - sortBy: '정렬 기준:', - descending: '내림차순', - ascending: '오름차순', - }, - workflowTitle: '워크플로우 로그', - workflowSubtitle: '이 로그는 Automate 의 작업을 기록했습니다.', - runDetail: { - title: '대화 로그', - workflowTitle: '로그 세부 정보', - fileListDetail: '세부', - fileListLabel: '파일 세부 정보', - testWithParams: '매개변수로 테스트', - }, - promptLog: '프롬프트 로그', - agentLog: '에이전트 로그', - viewLog: '로그 보기', - agentLogDetail: { - agentMode: '에이전트 모드', - toolUsed: '사용된 도구', - iterations: '반복', - iteration: '반복', - finalProcessing: '최종 처리', - }, - dateFormat: 'MM/DD/YYYY', - triggerBy: { - debugging: '디버깅', - appRun: '웹앱', - webhook: '웹훅', - schedule: '일정', - plugin: '플러그인', - ragPipelineRun: 'RAG 파이프라인', - ragPipelineDebugging: 'RAG 디버깅', - }, -} - -export default translation diff --git a/web/i18n/ko-KR/app-overview.json b/web/i18n/ko-KR/app-overview.json new file mode 100644 index 0000000000..54dbb83eee --- /dev/null +++ b/web/i18n/ko-KR/app-overview.json @@ -0,0 +1,187 @@ +{ + "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": "언어", + "workflow": { + "title": "워크플로 단계", + "show": "표시", + "hide": "숨기기", + "showDesc": "WebApp 에서 워크플로 세부 정보 표시 또는 숨기기", + "subTitle": "워크플로우 세부 정보" + }, + "chatColorTheme": "챗봇 색상 테마", + "chatColorThemeDesc": "챗봇의 색상 테마를 설정하세요", + "chatColorThemeInverted": "반전", + "invalidHexMessage": "잘못된 16 진수 값", + "invalidPrivacyPolicy": "유효하지 않은 개인정보처리방침 링크입니다. http 또는 https 로 시작하는 유효한 링크를 사용해 주세요", + "more": { + "entry": "추가 설정 보기", + "copyright": "저작권", + "copyRightPlaceholder": "저작권자 또는 조직 이름을 입력하세요", + "privacyPolicy": "개인정보 처리방침", + "privacyPolicyPlaceholder": "개인정보 처리방침 링크를 입력하세요", + "privacyPolicyTip": "방문자가 애플리케이션이 수집하는 데이터를 이해하고, Dify 의 개인정보 처리방침을 참조할 수 있도록 합니다.", + "customDisclaimer": "사용자 지정 면책 조항", + "customDisclaimerPlaceholder": "사용자 지정 면책 조항 텍스트를 입력합니다.", + "customDisclaimerTip": "사용자 지정 고지 사항 텍스트는 클라이언트 쪽에 표시되어 응용 프로그램에 대한 추가 정보를 제공합니다", + "copyrightTip": "웹앱에 저작권 정보 표시", + "copyrightTooltip": "프로페셔널 플랜 이상으로 업그레이드하세요." + }, + "sso": { + "label": "SSO 인증", + "title": "웹앱 SSO", + "tooltip": "관리자에게 문의하여 web app SSO 를 사용하도록 설정합니다.", + "description": "모든 사용자는 WebApp 을 사용하기 전에 SSO 로 로그인해야 합니다." + }, + "modalTip": "클라이언트 쪽 웹앱 설정." + }, + "embedded": { + "entry": "임베드", + "title": "웹사이트에 임베드하기", + "explanation": "챗봇 앱을 웹사이트에 임베드하는 방법을 선택하세요.", + "iframe": "웹사이트의 원하는 위치에 챗봇 앱을 추가하려면 이 iframe 을 HTML 코드에 추가하세요.", + "scripts": "웹사이트의 우측 하단에 챗봇 앱을 추가하려면 이 코드를 HTML 에 추가하세요.", + "chromePlugin": "Dify Chatbot Chrome 확장 프로그램 설치", + "copied": "복사되었습니다", + "copy": "복사" + }, + "qrcode": { + "title": "공유용 QR 코드", + "scan": "앱 공유를 스캔하세요", + "download": "QR 코드 다운로드" + }, + "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": "클라이언트 측 코드를 작성하여 API 를 호출하고 서버에 배포합니다", + "operation": "문서" + } + }, + "launch": "발사", + "enableTooltip": { + "description": "이 기능을 사용하려면 캔버스에 사용자 입력 노드를 추가하세요. (초안에 이미 있을 수 있으며, 게시 후에 적용됩니다)", + "learnMore": "자세히 알아보기" + }, + "title": "웹 앱" + }, + "apiInfo": { + "title": "백엔드 서비스 API", + "explanation": "개발자의 애플리케이션에 쉽게 통합할 수 있습니다", + "accessibleAddress": "서비스 API 엔드포인트", + "doc": "API 레퍼런스" + }, + "status": { + "running": "서비스 중", + "disable": "비활성" + }, + "triggerInfo": { + "title": "유발 요인", + "explanation": "워크플로 트리거 관리", + "triggersAdded": "{{count}} 트리거 추가됨", + "noTriggerAdded": "트리거가 추가되지 않았습니다", + "triggerStatusDescription": "트리거 노드 상태가 여기에 표시됩니다. (이미 초안에 존재할 수 있으며, 게시 후에 적용됩니다)", + "learnAboutTriggers": "트리거에 대해 배우기" + }, + "disableTooltip": { + "triggerMode": "트리거 노드 모드에서는 {{feature}} 기능이 지원되지 않습니다." + } + }, + "analysis": { + "title": "분석", + "ms": "ms", + "tokenPS": "토큰/초", + "totalMessages": { + "title": "총 메시지 수", + "explanation": "일일 AI 상호작용 수." + }, + "totalConversations": { + "title": "총 대화 수", + "explanation": "일일 AI 대화 수; 프롬프트 엔지니어링/디버깅 제외." + }, + "activeUsers": { + "title": "활성 사용자 수", + "explanation": "AI 와의 Q&A 에 참여하는 고유 사용자 수; 엔지니어링/디버깅 목적의 프롬프트는 제외됩니다." + }, + "tokenUsage": { + "title": "토큰 사용량", + "explanation": "애플리케이션의 언어 모델의 일일 토큰 사용량을 반영하여 비용 관리에 도움이 됩니다.", + "consumed": "소비된 토큰" + }, + "avgSessionInteractions": { + "title": "평균 세션 상호작용 수", + "explanation": "사용자와 AI 의 연속적인 커뮤니케이션 수; 대화형 애플리케이션을 위한 것입니다." + }, + "avgUserInteractions": { + "title": "평균 사용자 상호작용 수", + "explanation": "사용자의 일일 사용 빈도를 반영합니다. 이 지표는 사용자의 임계를 반영합니다." + }, + "userSatisfactionRate": { + "title": "사용자 만족도율", + "explanation": "1,000 개의 메시지 당 \"좋아요\" 수입니다. 이는 사용자가 매우 만족한 응답의 비율을 나타냅니다." + }, + "avgResponseTime": { + "title": "평균 응답 시간", + "explanation": "AI 가 처리/응답하는 시간 (밀리초); 텍스트 기반 애플리케이션을 위한 것입니다." + }, + "tps": { + "title": "토큰 출력 속도", + "explanation": "LLM 의 성능을 측정합니다. 요청 시작부터 출력 완료까지의 LLM 의 토큰 출력 속도를 계산합니다." + } + } +} diff --git a/web/i18n/ko-KR/app-overview.ts b/web/i18n/ko-KR/app-overview.ts deleted file mode 100644 index 2deb709ace..0000000000 --- a/web/i18n/ko-KR/app-overview.ts +++ /dev/null @@ -1,189 +0,0 @@ -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: '언어', - workflow: { - title: '워크플로 단계', - show: '표시', - hide: '숨기기', - showDesc: 'WebApp 에서 워크플로 세부 정보 표시 또는 숨기기', - subTitle: '워크플로우 세부 정보', - }, - chatColorTheme: '챗봇 색상 테마', - chatColorThemeDesc: '챗봇의 색상 테마를 설정하세요', - chatColorThemeInverted: '반전', - invalidHexMessage: '잘못된 16 진수 값', - invalidPrivacyPolicy: '유효하지 않은 개인정보처리방침 링크입니다. http 또는 https 로 시작하는 유효한 링크를 사용해 주세요', - more: { - entry: '추가 설정 보기', - copyright: '저작권', - copyRightPlaceholder: '저작권자 또는 조직 이름을 입력하세요', - privacyPolicy: '개인정보 처리방침', - privacyPolicyPlaceholder: '개인정보 처리방침 링크를 입력하세요', - privacyPolicyTip: '방문자가 애플리케이션이 수집하는 데이터를 이해하고, Dify 의 개인정보 처리방침을 참조할 수 있도록 합니다.', - customDisclaimer: '사용자 지정 면책 조항', - customDisclaimerPlaceholder: '사용자 지정 면책 조항 텍스트를 입력합니다.', - customDisclaimerTip: '사용자 지정 고지 사항 텍스트는 클라이언트 쪽에 표시되어 응용 프로그램에 대한 추가 정보를 제공합니다', - copyrightTip: '웹앱에 저작권 정보 표시', - copyrightTooltip: '프로페셔널 플랜 이상으로 업그레이드하세요.', - }, - sso: { - label: 'SSO 인증', - title: '웹앱 SSO', - tooltip: '관리자에게 문의하여 web app SSO 를 사용하도록 설정합니다.', - description: '모든 사용자는 WebApp 을 사용하기 전에 SSO 로 로그인해야 합니다.', - }, - modalTip: '클라이언트 쪽 웹앱 설정.', - }, - embedded: { - entry: '임베드', - title: '웹사이트에 임베드하기', - explanation: '챗봇 앱을 웹사이트에 임베드하는 방법을 선택하세요.', - iframe: '웹사이트의 원하는 위치에 챗봇 앱을 추가하려면 이 iframe 을 HTML 코드에 추가하세요.', - scripts: '웹사이트의 우측 하단에 챗봇 앱을 추가하려면 이 코드를 HTML 에 추가하세요.', - chromePlugin: 'Dify Chatbot Chrome 확장 프로그램 설치', - copied: '복사되었습니다', - copy: '복사', - }, - qrcode: { - title: '공유용 QR 코드', - scan: '앱 공유를 스캔하세요', - download: 'QR 코드 다운로드', - }, - 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: '클라이언트 측 코드를 작성하여 API 를 호출하고 서버에 배포합니다', - operation: '문서', - }, - }, - launch: '발사', - enableTooltip: { - description: '이 기능을 사용하려면 캔버스에 사용자 입력 노드를 추가하세요. (초안에 이미 있을 수 있으며, 게시 후에 적용됩니다)', - learnMore: '자세히 알아보기', - }, - title: '웹 앱', - }, - apiInfo: { - title: '백엔드 서비스 API', - explanation: '개발자의 애플리케이션에 쉽게 통합할 수 있습니다', - accessibleAddress: '서비스 API 엔드포인트', - doc: 'API 레퍼런스', - }, - status: { - running: '서비스 중', - disable: '비활성', - }, - triggerInfo: { - title: '유발 요인', - explanation: '워크플로 트리거 관리', - triggersAdded: '{{count}} 트리거 추가됨', - noTriggerAdded: '트리거가 추가되지 않았습니다', - triggerStatusDescription: '트리거 노드 상태가 여기에 표시됩니다. (이미 초안에 존재할 수 있으며, 게시 후에 적용됩니다)', - learnAboutTriggers: '트리거에 대해 배우기', - }, - disableTooltip: { - triggerMode: '트리거 노드 모드에서는 {{feature}} 기능이 지원되지 않습니다.', - }, - }, - analysis: { - title: '분석', - ms: 'ms', - tokenPS: '토큰/초', - totalMessages: { - title: '총 메시지 수', - explanation: '일일 AI 상호작용 수.', - }, - totalConversations: { - title: '총 대화 수', - explanation: '일일 AI 대화 수; 프롬프트 엔지니어링/디버깅 제외.', - }, - activeUsers: { - title: '활성 사용자 수', - explanation: 'AI 와의 Q&A 에 참여하는 고유 사용자 수; 엔지니어링/디버깅 목적의 프롬프트는 제외됩니다.', - }, - tokenUsage: { - title: '토큰 사용량', - explanation: '애플리케이션의 언어 모델의 일일 토큰 사용량을 반영하여 비용 관리에 도움이 됩니다.', - consumed: '소비된 토큰', - }, - avgSessionInteractions: { - title: '평균 세션 상호작용 수', - explanation: '사용자와 AI 의 연속적인 커뮤니케이션 수; 대화형 애플리케이션을 위한 것입니다.', - }, - avgUserInteractions: { - title: '평균 사용자 상호작용 수', - explanation: '사용자의 일일 사용 빈도를 반영합니다. 이 지표는 사용자의 임계를 반영합니다.', - }, - userSatisfactionRate: { - title: '사용자 만족도율', - explanation: '1,000 개의 메시지 당 "좋아요" 수입니다. 이는 사용자가 매우 만족한 응답의 비율을 나타냅니다.', - }, - avgResponseTime: { - title: '평균 응답 시간', - explanation: 'AI 가 처리/응답하는 시간 (밀리초); 텍스트 기반 애플리케이션을 위한 것입니다.', - }, - tps: { - title: '토큰 출력 속도', - explanation: 'LLM 의 성능을 측정합니다. 요청 시작부터 출력 완료까지의 LLM 의 토큰 출력 속도를 계산합니다.', - }, - }, -} - -export default translation diff --git a/web/i18n/ko-KR/app.json b/web/i18n/ko-KR/app.json new file mode 100644 index 0000000000..4f4bf58e66 --- /dev/null +++ b/web/i18n/ko-KR/app.json @@ -0,0 +1,345 @@ +{ + "createApp": "앱 만들기", + "types": { + "all": "모두", + "chatbot": "챗봇", + "agent": "에이전트", + "workflow": "워크플로우", + "completion": "완성", + "basic": "기초의", + "advanced": "채팅 플로우" + }, + "duplicate": "복제", + "duplicateTitle": "앱 복제하기", + "export": "DSL 내보내기", + "exportFailed": "DSL 내보내기 실패", + "importDSL": "DSL 파일 가져오기", + "createFromConfigFile": "DSL 파일에서 생성하기", + "deleteAppConfirmTitle": "이 앱을 삭제하시겠습니까?", + "deleteAppConfirmContent": "앱을 삭제하면 복구할 수 없습니다. 사용자는 더 이상 앱에 액세스할 수 없으며 모든 프롬프트 설정 및 로그가 영구적으로 삭제됩니다.", + "appDeleted": "앱이 삭제되었습니다", + "appDeleteFailed": "앱 삭제 실패", + "join": "커뮤니티에 참여하기", + "communityIntro": "여러 채널에서 팀원, 기여자, 개발자들과 토론하세요.", + "roadmap": "로드맵 보기", + "newApp": { + "startFromBlank": "빈 상태로 시작", + "startFromTemplate": "템플릿에서 시작", + "captionName": "앱 아이콘과 이름", + "appNamePlaceholder": "앱 이름을 입력하세요", + "captionDescription": "설명", + "workflowWarning": "현재 베타 버전입니다", + "appDescriptionPlaceholder": "앱 설명을 입력하세요", + "useTemplate": "이 템플릿 사용", + "previewDemo": "데모 미리보기", + "chatApp": "어시스턴트", + "chatAppIntro": "대화형 어플리케이션을 만들고 싶어요. 이 어플리케이션은 질문과 답변 형식을 사용하여 다단계 대화를 지원합니다.", + "agentAssistant": "새로운 에이전트 어시스턴트", + "completeApp": "텍스트 생성기", + "completeAppIntro": "프롬프트를 기반으로 품질 높은 텍스트를 생성하는 어플리케이션을 만들고 싶어요. 기사, 요약, 번역 등을 생성합니다.", + "showTemplates": "템플릿 선택", + "hideTemplates": "모드 선택으로 돌아가기", + "Create": "만들기", + "Cancel": "취소", + "nameNotEmpty": "이름을 입력하세요", + "appTemplateNotSelected": "템플릿을 선택하세요", + "appTypeRequired": "앱 종류를 선택하세요", + "appCreated": "앱이 생성되었습니다", + "appCreateFailed": "앱 생성 실패", + "caution": "주의", + "Confirm": "확인하다", + "appCreateDSLErrorPart4": "시스템 지원 DSL 버전:", + "appCreateDSLErrorTitle": "버전 비호환성", + "appCreateDSLErrorPart2": "계속하시겠습니까?", + "appCreateDSLErrorPart3": "현재 응용 프로그램 DSL 버전:", + "appCreateDSLWarning": "주의: DSL 버전 차이는 특정 기능에 영향을 미칠 수 있습니다.", + "appCreateDSLErrorPart1": "DSL 버전에서 상당한 차이가 감지되었습니다. 강제로 가져오면 응용 프로그램이 오작동할 수 있습니다.", + "chooseAppType": "앱 유형 선택", + "forBeginners": "초보자용 기본 앱 유형", + "forAdvanced": "고급 사용자용", + "chatbotShortDescription": "간단한 설정으로 LLM 기반 챗봇", + "workflowUserDescription": "드래그 앤 드롭으로 자율 AI 워크플로우를 시각적으로 구축", + "noTemplateFoundTip": "다른 키워드를 사용하여 검색해 보십시오.", + "noIdeaTip": "아이디어가 없으신가요? 템플릿을 확인해 보세요", + "optional": "선택적", + "noTemplateFound": "템플릿을 찾을 수 없습니다.", + "completionShortDescription": "텍스트 생성 작업을 위한 AI 도우미", + "learnMore": "더 알아보세요", + "foundResults": "{{count}} 결과", + "agentShortDescription": "추론 및 자율적인 도구 사용 기능이 있는 지능형 에이전트", + "advancedShortDescription": "다중 대화를 위해 강화된 워크플로우", + "noAppsFound": "앱을 찾을 수 없습니다.", + "foundResult": "{{count}} 결과", + "completionUserDescription": "간단한 구성으로 텍스트 생성 작업을 위한 AI 도우미를 빠르게 구축합니다.", + "chatbotUserDescription": "간단한 구성으로 LLM 기반 챗봇을 빠르게 구축할 수 있습니다. 나중에 Chatflow 로 전환할 수 있습니다.", + "workflowShortDescription": "지능형 자동화를 위한 에이전트 플로우", + "agentUserDescription": "작업 목표를 달성하기 위해 반복적인 추론과 자율적인 도구를 사용할 수 있는 지능형 에이전트입니다.", + "advancedUserDescription": "메모리 기능과 챗봇 인터페이스를 갖춘 워크플로우", + "dropDSLToCreateApp": "여기에 DSL 파일을 드롭하여 앱을 불러오세요.", + "import": "수입" + }, + "editApp": "정보 편집하기", + "editAppTitle": "앱 정보 편집하기", + "editDone": "앱 정보가 업데이트되었습니다", + "editFailed": "앱 정보 업데이트 실패", + "iconPicker": { + "ok": "확인", + "cancel": "취소", + "emoji": "이모지", + "image": "이미지" + }, + "switch": "워크플로우 오케스트레이션으로 전환하기", + "switchTipStart": "새로운 앱의 복사본이 생성되어 새로운 복사본이 워크플로우 오케스트레이션으로 전환됩니다. 새로운 복사본은 ", + "switchTip": "전환을 허용하지 않습니다", + "switchTipEnd": " 기본적인 오케스트레이션으로 되돌릴 수 없습니다.", + "switchLabel": "생성될 앱의 복사본", + "removeOriginal": "원본 앱 제거하기", + "switchStart": "전환 시작하기", + "typeSelector": { + "all": "모든 종류", + "chatbot": "챗봇", + "agent": "에이전트", + "workflow": "워크플로우", + "completion": "완성", + "advanced": "채팅 플로우" + }, + "tracing": { + "title": "앱 성능 추적", + "description": "제 3 자 LLMOps 제공업체 구성 및 앱 성능 추적.", + "config": "구성", + "collapse": "접기", + "expand": "펼치기", + "tracing": "추적", + "disabled": "비활성화됨", + "disabledTip": "먼저 제공업체를 구성해 주세요", + "enabled": "서비스 중", + "tracingDescription": "LLM 호출, 컨텍스트, 프롬프트, HTTP 요청 등 앱 실행의 전체 컨텍스트를 제 3 자 추적 플랫폼에 캡처합니다.", + "configProviderTitle": { + "configured": "구성됨", + "notConfigured": "추적을 활성화하려면 제공업체를 구성하세요", + "moreProvider": "더 많은 제공업체" + }, + "arize": { + "title": "Arize", + "description": "엔터프라이즈급 LLM 가시성, 온라인 및 오프라인 평가, 모니터링 및 실험—OpenTelemetry를 기반으로 합니다. LLM 및 에이전트 기반 애플리케이션을 위해 특별히 설계되었습니다." + }, + "phoenix": { + "title": "Phoenix", + "description": "오픈소스 및 OpenTelemetry 기반의 가시성, 평가, 프롬프트 엔지니어링 및 실험 플랫폼으로, LLM 워크플로우 및 에이전트를 지원합니다." + }, + "langsmith": { + "title": "LangSmith", + "description": "LLM 기반 애플리케이션 수명 주기의 모든 단계를 위한 올인원 개발자 플랫폼." + }, + "langfuse": { + "title": "Langfuse", + "description": "LLM 애플리케이션을 디버그하고 개선하기 위한 추적, 평가, 프롬프트 관리 및 메트릭." + }, + "inUse": "사용 중", + "configProvider": { + "title": "구성 ", + "placeholder": "{{key}}를 입력하세요", + "project": "프로젝트", + "publicKey": "공개 키", + "secretKey": "비밀 키", + "viewDocsLink": "{{key}} 문서 보기", + "removeConfirmTitle": "{{key}} 구성을 제거하시겠습니까?", + "removeConfirmContent": "현재 구성이 사용 중입니다. 제거하면 추적 기능이 꺼집니다.", + "username": "사용자 이름", + "trackingUri": "추적 URI", + "password": "비밀번호", + "experimentId": "실험 ID", + "clientId": "OAuth 클라이언트 ID", + "clientSecret": "OAuth 클라이언트 비밀", + "databricksHost": "Databricks 작업 영역 URL", + "personalAccessToken": "개인 액세스 토큰(레거시)" + }, + "view": "보기", + "opik": { + "title": "오픽", + "description": "Opik 은 LLM 애플리케이션을 평가, 테스트 및 모니터링하기 위한 오픈 소스 플랫폼입니다." + }, + "weave": { + "title": "직조하다", + "description": "Weave 는 LLM 애플리케이션을 평가하고 테스트하며 모니터링하기 위한 오픈 소스 플랫폼입니다." + }, + "aliyun": { + "title": "클라우드 모니터", + "description": "알리바바 클라우드에서 제공하는 완전 관리형 및 유지보수가 필요 없는 가시성 플랫폼은 Dify 애플리케이션의 모니터링, 추적 및 평가를 즉시 사용할 수 있도록 지원합니다." + }, + "mlflow": { + "title": "MLflow", + "description": "실험 추적, 관찰 가능성 및 평가를 위한 오픈 소스 LLMOps 플랫폼으로 AI/LLM 앱을 자신있게 구축합니다." + }, + "databricks": { + "title": "Databricks", + "description": "Databricks는 강력한 거버넌스와 보안을 갖춘 완전 관리형 MLflow를 제공하여 트레이스 데이터 저장을 지원합니다." + }, + "tencent": { + "title": "텐센트 APM", + "description": "텐센트 애플리케이션 성능 모니터링은 LLM 애플리케이션에 대한 포괄적인 추적 및 다차원 분석을 제공합니다." + } + }, + "answerIcon": { + "description": "web app 아이콘을 사용하여 공유 응용 프로그램에서 바꿀🤖지 여부", + "title": "web app 아이콘을 사용하여 🤖", + "descriptionInExplore": "Explore 에서 web app 아이콘을 사용하여 바꿀🤖지 여부" + }, + "importFromDSL": "DSL 에서 가져오기", + "importFromDSLFile": "DSL 파일에서", + "importFromDSLUrl": "URL 에서", + "importFromDSLUrlPlaceholder": "여기에 DSL 링크 붙여 넣기", + "dslUploader": { + "button": "파일을 드래그 앤 드롭하거나", + "browse": "찾아보기" + }, + "mermaid": { + "handDrawn": "손으로 그린", + "classic": "고전" + }, + "openInExplore": "Explore 에서 열기", + "newAppFromTemplate": { + "sidebar": { + "Agent": "대리인", + "Workflow": "워크플로", + "HR": "인사", + "Programming": "프로그래밍", + "Writing": "쓰기", + "Assistant": "조수", + "Recommended": "권장" + }, + "byCategories": "카테고리별", + "searchAllTemplate": "모든 템플릿 검색..." + }, + "showMyCreatedAppsOnly": "내가 만든 앱만 보기", + "appSelector": { + "params": "앱 매개 변수", + "noParams": "매개 변수가 필요하지 않습니다.", + "label": "앱", + "placeholder": "앱 선택..." + }, + "structOutput": { + "required": "필수", + "LLMResponse": "LLM 응답", + "modelNotSupported": "모델이 지원되지 않습니다.", + "notConfiguredTip": "구성이 아직 설정되지 않았습니다.", + "structured": "구조화된", + "configure": "설정하다", + "moreFillTip": "최대 10 단계 중첩을 표시합니다.", + "modelNotSupportedTip": "현재 모델은 이 기능을 지원하지 않으며 자동으로 프롬프트 주입으로 다운그레이드됩니다.", + "structuredTip": "구조화된 출력은 모델이 제공한 JSON 스키마를 항상 준수하는 응답을 생성하도록 보장하는 기능입니다." + }, + "accessItemsDescription": { + "anyone": "누구나 웹 앱에 접근할 수 있습니다.", + "specific": "특정 그룹이나 회원만 웹 앱에 접근할 수 있습니다.", + "organization": "조직 내 모든 사람이 웹 애플리케이션에 접근할 수 있습니다.", + "external": "인증된 외부 사용자만 웹 애플리케이션에 접근할 수 있습니다." + }, + "accessControlDialog": { + "accessItems": { + "anyone": "링크가 있는 누구나", + "specific": "특정 그룹 또는 구성원", + "organization": "기업 내의 회원만", + "external": "인증된 외부 사용자" + }, + "operateGroupAndMember": { + "searchPlaceholder": "그룹 및 구성원 검색", + "allMembers": "모든 멤버들", + "expand": "확장하다", + "noResult": "결과 없음" + }, + "title": "웹 애플리케이션 접근 제어", + "accessLabel": "누가 접근할 수 있습니까?", + "groups_one": "{{count}} 그룹", + "groups_other": "{{count}} 그룹", + "members_one": "{{count}} 회원", + "members_other": "{{count}} 회원", + "noGroupsOrMembers": "선택된 그룹 또는 멤버가 없습니다.", + "webAppSSONotEnabledTip": "웹 앱 인증 방법을 구성하려면 엔터프라이즈 관리자인에게 문의하십시오.", + "updateSuccess": "업데이트가 성공적으로 완료되었습니다.", + "description": "웹 앱 접근 권한 설정" + }, + "publishApp": { + "title": "누가 웹 애플리케이션에 접근할 수 있나요?", + "notSet": "설정되지 않음", + "notSetDesc": "현재 아무도 웹 앱에 접근할 수 없습니다. 권한을 설정해 주세요." + }, + "accessControl": "웹 애플리케이션 접근 제어", + "noAccessPermission": "웹 앱에 대한 접근 권한이 없습니다.", + "maxActiveRequests": "동시 최대 요청 수", + "maxActiveRequestsPlaceholder": "무제한 사용을 원하시면 0을 입력하세요.", + "maxActiveRequestsTip": "앱당 최대 동시 활성 요청 수(무제한은 0)", + "gotoAnything": { + "actions": { + "searchWorkflowNodes": "워크플로 노드 검색", + "searchApplicationsDesc": "애플리케이션 검색 및 탐색", + "searchPlugins": "플러그인 검색", + "searchApplications": "응용 프로그램 검색", + "searchPluginsDesc": "플러그인을 검색하고 탐색합니다.", + "searchWorkflowNodesDesc": "이름 또는 유형별로 현재 워크플로의 노드를 찾아 이동", + "searchKnowledgeBasesDesc": "기술 자료를 검색하고 탐색합니다.", + "searchWorkflowNodesHelp": "이 기능은 워크플로를 볼 때만 작동합니다. 먼저 워크플로로 이동합니다.", + "searchKnowledgeBases": "기술 자료 검색", + "themeCategoryTitle": "주제", + "themeSystem": "시스템 테마", + "themeDark": "어두운 테마", + "languageChangeDesc": "UI 언어 변경", + "languageCategoryTitle": "언어", + "runTitle": "명령어", + "themeLight": "라이트 테마", + "themeDarkDesc": "어두운 모양 사용", + "themeLightDesc": "밝은 외관 사용", + "themeCategoryDesc": "애플리케이션 테마 전환", + "languageCategoryDesc": "인터페이스 언어 전환", + "runDesc": "빠른 명령 실행 (테마, 언어 등...)", + "themeSystemDesc": "운영 체제의 외관을 따르세요", + "slashDesc": "/theme, /lang와 같은 명령어를 실행하십시오.", + "communityDesc": "오픈 디스코드 커뮤니티", + "feedbackDesc": "공개 커뮤니티 피드백 토론", + "docDesc": "도움 문서 열기", + "accountDesc": "계정 페이지로 이동", + "zenTitle": "Zen Mode", + "zenDesc": "Toggle canvas focus mode" + }, + "emptyState": { + "noAppsFound": "앱을 찾을 수 없습니다.", + "noPluginsFound": "플러그인을 찾을 수 없습니다.", + "noKnowledgeBasesFound": "기술 자료를 찾을 수 없습니다.", + "noWorkflowNodesFound": "워크플로 노드를 찾을 수 없습니다.", + "tryDifferentTerm": "다른 검색어를 시도하거나 {{mode}} 필터를 제거하세요", + "trySpecificSearch": "특정 검색을 위해 {{shortcuts}}를 사용해보세요" + }, + "groups": { + "apps": "앱", + "plugins": "플러그인", + "knowledgeBases": "기술 자료", + "workflowNodes": "워크플로 노드", + "commands": "명령어" + }, + "searching": "검색...", + "searchTitle": "무엇이든 검색", + "useAtForSpecific": "특정 형식에 @ 사용", + "searchTemporarilyUnavailable": "일시적으로 검색할 수 없음", + "noResults": "결과를 찾을 수 없습니다.", + "someServicesUnavailable": "일부 검색 서비스를 사용할 수 없습니다.", + "servicesUnavailableMessage": "일부 검색 서비스에서 문제가 발생할 수 있습니다. 잠시 후에 다시 시도하십시오.", + "searchFailed": "검색 실패", + "searchPlaceholder": "명령을 검색하거나 @를 입력합니다...", + "clearToSearchAll": "@를 지우면 모두 검색됩니다.", + "selectSearchType": "검색할 항목 선택", + "commandHint": "@를 입력하여 카테고리별로 찾아봅니다.", + "searchHint": "즉시 모든 것을 검색하려면 입력을 시작하세요.", + "resultCount": "{{count}} 개 결과", + "resultCount_other": "{{count}} 개 결과", + "inScope": "{{scope}}s 내에서", + "tryDifferentSearch": "다른 검색어 사용해 보기", + "noMatchingCommands": "일치하는 명령을 찾을 수 없습니다.", + "slashHint": "모든 사용 가능한 명령을 보려면 /를 입력하세요.", + "tips": "↑↓ 키를 눌러 탐색하세요", + "pressEscToClose": "ESC를 눌러 닫기", + "selectToNavigate": "선택하여 탐색하기", + "startTyping": "검색하려면 타이핑을 시작하세요" + }, + "noUserInputNode": "사용자 입력 노드가 없습니다", + "notPublishedYet": "앱이 아직 출시되지 않았습니다" +} diff --git a/web/i18n/ko-KR/app.ts b/web/i18n/ko-KR/app.ts deleted file mode 100644 index 3b31b13ad0..0000000000 --- a/web/i18n/ko-KR/app.ts +++ /dev/null @@ -1,371 +0,0 @@ -const translation = { - createApp: '앱 만들기', - types: { - all: '모두', - chatbot: '챗봇', - agent: '에이전트', - workflow: '워크플로우', - completion: '완성', - basic: '기초의', - advanced: '채팅 플로우', - }, - duplicate: '복제', - duplicateTitle: '앱 복제하기', - export: 'DSL 내보내기', - exportFailed: 'DSL 내보내기 실패', - importDSL: 'DSL 파일 가져오기', - createFromConfigFile: 'DSL 파일에서 생성하기', - deleteAppConfirmTitle: '이 앱을 삭제하시겠습니까?', - deleteAppConfirmContent: - '앱을 삭제하면 복구할 수 없습니다. 사용자는 더 이상 앱에 액세스할 수 없으며 모든 프롬프트 설정 및 로그가 영구적으로 삭제됩니다.', - appDeleted: '앱이 삭제되었습니다', - appDeleteFailed: '앱 삭제 실패', - join: '커뮤니티에 참여하기', - communityIntro: '여러 채널에서 팀원, 기여자, 개발자들과 토론하세요.', - roadmap: '로드맵 보기', - newApp: { - startFromBlank: '빈 상태로 시작', - startFromTemplate: '템플릿에서 시작', - captionName: '앱 아이콘과 이름', - appNamePlaceholder: '앱 이름을 입력하세요', - captionDescription: '설명', - workflowWarning: '현재 베타 버전입니다', - appDescriptionPlaceholder: '앱 설명을 입력하세요', - useTemplate: '이 템플릿 사용', - previewDemo: '데모 미리보기', - chatApp: '어시스턴트', - chatAppIntro: - '대화형 어플리케이션을 만들고 싶어요. 이 어플리케이션은 질문과 답변 형식을 사용하여 다단계 대화를 지원합니다.', - agentAssistant: '새로운 에이전트 어시스턴트', - completeApp: '텍스트 생성기', - completeAppIntro: - '프롬프트를 기반으로 품질 높은 텍스트를 생성하는 어플리케이션을 만들고 싶어요. 기사, 요약, 번역 등을 생성합니다.', - showTemplates: '템플릿 선택', - hideTemplates: '모드 선택으로 돌아가기', - Create: '만들기', - Cancel: '취소', - nameNotEmpty: '이름을 입력하세요', - appTemplateNotSelected: '템플릿을 선택하세요', - appTypeRequired: '앱 종류를 선택하세요', - appCreated: '앱이 생성되었습니다', - appCreateFailed: '앱 생성 실패', - caution: '주의', - Confirm: '확인하다', - appCreateDSLErrorPart4: '시스템 지원 DSL 버전:', - appCreateDSLErrorTitle: '버전 비호환성', - appCreateDSLErrorPart2: '계속하시겠습니까?', - appCreateDSLErrorPart3: '현재 응용 프로그램 DSL 버전:', - appCreateDSLWarning: - '주의: DSL 버전 차이는 특정 기능에 영향을 미칠 수 있습니다.', - appCreateDSLErrorPart1: - 'DSL 버전에서 상당한 차이가 감지되었습니다. 강제로 가져오면 응용 프로그램이 오작동할 수 있습니다.', - chooseAppType: '앱 유형 선택', - forBeginners: '초보자용 기본 앱 유형', - forAdvanced: '고급 사용자용', - chatbotShortDescription: '간단한 설정으로 LLM 기반 챗봇', - workflowUserDescription: - '드래그 앤 드롭으로 자율 AI 워크플로우를 시각적으로 구축', - noTemplateFoundTip: '다른 키워드를 사용하여 검색해 보십시오.', - noIdeaTip: '아이디어가 없으신가요? 템플릿을 확인해 보세요', - optional: '선택적', - noTemplateFound: '템플릿을 찾을 수 없습니다.', - completionShortDescription: '텍스트 생성 작업을 위한 AI 도우미', - learnMore: '더 알아보세요', - foundResults: '{{count}} 결과', - agentShortDescription: - '추론 및 자율적인 도구 사용 기능이 있는 지능형 에이전트', - advancedShortDescription: '다중 대화를 위해 강화된 워크플로우', - noAppsFound: '앱을 찾을 수 없습니다.', - foundResult: '{{count}} 결과', - completionUserDescription: - '간단한 구성으로 텍스트 생성 작업을 위한 AI 도우미를 빠르게 구축합니다.', - chatbotUserDescription: - '간단한 구성으로 LLM 기반 챗봇을 빠르게 구축할 수 있습니다. 나중에 Chatflow 로 전환할 수 있습니다.', - workflowShortDescription: '지능형 자동화를 위한 에이전트 플로우', - agentUserDescription: - '작업 목표를 달성하기 위해 반복적인 추론과 자율적인 도구를 사용할 수 있는 지능형 에이전트입니다.', - advancedUserDescription: '메모리 기능과 챗봇 인터페이스를 갖춘 워크플로우', - dropDSLToCreateApp: '여기에 DSL 파일을 드롭하여 앱을 불러오세요.', - import: '수입', - }, - editApp: '정보 편집하기', - editAppTitle: '앱 정보 편집하기', - editDone: '앱 정보가 업데이트되었습니다', - editFailed: '앱 정보 업데이트 실패', - iconPicker: { - ok: '확인', - cancel: '취소', - emoji: '이모지', - image: '이미지', - }, - switch: '워크플로우 오케스트레이션으로 전환하기', - switchTipStart: - '새로운 앱의 복사본이 생성되어 새로운 복사본이 워크플로우 오케스트레이션으로 전환됩니다. 새로운 복사본은 ', - switchTip: '전환을 허용하지 않습니다', - switchTipEnd: ' 기본적인 오케스트레이션으로 되돌릴 수 없습니다.', - switchLabel: '생성될 앱의 복사본', - removeOriginal: '원본 앱 제거하기', - switchStart: '전환 시작하기', - typeSelector: { - all: '모든 종류', - chatbot: '챗봇', - agent: '에이전트', - workflow: '워크플로우', - completion: '완성', - advanced: '채팅 플로우', - }, - tracing: { - title: '앱 성능 추적', - description: '제 3 자 LLMOps 제공업체 구성 및 앱 성능 추적.', - config: '구성', - collapse: '접기', - expand: '펼치기', - tracing: '추적', - disabled: '비활성화됨', - disabledTip: '먼저 제공업체를 구성해 주세요', - enabled: '서비스 중', - tracingDescription: - 'LLM 호출, 컨텍스트, 프롬프트, HTTP 요청 등 앱 실행의 전체 컨텍스트를 제 3 자 추적 플랫폼에 캡처합니다.', - configProviderTitle: { - configured: '구성됨', - notConfigured: '추적을 활성화하려면 제공업체를 구성하세요', - moreProvider: '더 많은 제공업체', - }, - arize: { - title: 'Arize', - description: - '엔터프라이즈급 LLM 가시성, 온라인 및 오프라인 평가, 모니터링 및 실험—OpenTelemetry를 기반으로 합니다. LLM 및 에이전트 기반 애플리케이션을 위해 특별히 설계되었습니다.', - }, - phoenix: { - title: 'Phoenix', - description: - '오픈소스 및 OpenTelemetry 기반의 가시성, 평가, 프롬프트 엔지니어링 및 실험 플랫폼으로, LLM 워크플로우 및 에이전트를 지원합니다.', - }, - langsmith: { - title: 'LangSmith', - description: - 'LLM 기반 애플리케이션 수명 주기의 모든 단계를 위한 올인원 개발자 플랫폼.', - }, - langfuse: { - title: 'Langfuse', - description: - 'LLM 애플리케이션을 디버그하고 개선하기 위한 추적, 평가, 프롬프트 관리 및 메트릭.', - }, - inUse: '사용 중', - configProvider: { - title: '구성 ', - placeholder: '{{key}}를 입력하세요', - project: '프로젝트', - publicKey: '공개 키', - secretKey: '비밀 키', - viewDocsLink: '{{key}} 문서 보기', - removeConfirmTitle: '{{key}} 구성을 제거하시겠습니까?', - removeConfirmContent: - '현재 구성이 사용 중입니다. 제거하면 추적 기능이 꺼집니다.', - username: '사용자 이름', - trackingUri: '추적 URI', - password: '비밀번호', - experimentId: '실험 ID', - clientId: 'OAuth 클라이언트 ID', - clientSecret: 'OAuth 클라이언트 비밀', - databricksHost: 'Databricks 작업 영역 URL', - personalAccessToken: '개인 액세스 토큰(레거시)', - }, - view: '보기', - opik: { - title: '오픽', - description: - 'Opik 은 LLM 애플리케이션을 평가, 테스트 및 모니터링하기 위한 오픈 소스 플랫폼입니다.', - }, - weave: { - title: '직조하다', - description: - 'Weave 는 LLM 애플리케이션을 평가하고 테스트하며 모니터링하기 위한 오픈 소스 플랫폼입니다.', - }, - aliyun: { - title: '클라우드 모니터', - description: '알리바바 클라우드에서 제공하는 완전 관리형 및 유지보수가 필요 없는 가시성 플랫폼은 Dify 애플리케이션의 모니터링, 추적 및 평가를 즉시 사용할 수 있도록 지원합니다.', - }, - mlflow: { - title: 'MLflow', - description: '실험 추적, 관찰 가능성 및 평가를 위한 오픈 소스 LLMOps 플랫폼으로 AI/LLM 앱을 자신있게 구축합니다.', - }, - databricks: { - title: 'Databricks', - description: 'Databricks는 강력한 거버넌스와 보안을 갖춘 완전 관리형 MLflow를 제공하여 트레이스 데이터 저장을 지원합니다.', - }, - tencent: { - title: '텐센트 APM', - description: '텐센트 애플리케이션 성능 모니터링은 LLM 애플리케이션에 대한 포괄적인 추적 및 다차원 분석을 제공합니다.', - }, - }, - answerIcon: { - description: - 'web app 아이콘을 사용하여 공유 응용 프로그램에서 바꿀🤖지 여부', - title: 'web app 아이콘을 사용하여 🤖', - descriptionInExplore: - 'Explore 에서 web app 아이콘을 사용하여 바꿀🤖지 여부', - }, - importFromDSL: 'DSL 에서 가져오기', - importFromDSLFile: 'DSL 파일에서', - importFromDSLUrl: 'URL 에서', - importFromDSLUrlPlaceholder: '여기에 DSL 링크 붙여 넣기', - dslUploader: { - button: '파일을 드래그 앤 드롭하거나', - browse: '찾아보기', - }, - mermaid: { - handDrawn: '손으로 그린', - classic: '고전', - }, - openInExplore: 'Explore 에서 열기', - newAppFromTemplate: { - sidebar: { - Agent: '대리인', - Workflow: '워크플로', - HR: '인사', - Programming: '프로그래밍', - Writing: '쓰기', - Assistant: '조수', - Recommended: '권장', - }, - byCategories: '카테고리별', - searchAllTemplate: '모든 템플릿 검색...', - }, - showMyCreatedAppsOnly: '내가 만든 앱만 보기', - appSelector: { - params: '앱 매개 변수', - noParams: '매개 변수가 필요하지 않습니다.', - label: '앱', - placeholder: '앱 선택...', - }, - structOutput: { - required: '필수', - LLMResponse: 'LLM 응답', - modelNotSupported: '모델이 지원되지 않습니다.', - notConfiguredTip: '구성이 아직 설정되지 않았습니다.', - structured: '구조화된', - configure: '설정하다', - moreFillTip: '최대 10 단계 중첩을 표시합니다.', - modelNotSupportedTip: - '현재 모델은 이 기능을 지원하지 않으며 자동으로 프롬프트 주입으로 다운그레이드됩니다.', - structuredTip: - '구조화된 출력은 모델이 제공한 JSON 스키마를 항상 준수하는 응답을 생성하도록 보장하는 기능입니다.', - }, - accessItemsDescription: { - anyone: '누구나 웹 앱에 접근할 수 있습니다.', - specific: '특정 그룹이나 회원만 웹 앱에 접근할 수 있습니다.', - organization: '조직 내 모든 사람이 웹 애플리케이션에 접근할 수 있습니다.', - external: '인증된 외부 사용자만 웹 애플리케이션에 접근할 수 있습니다.', - }, - accessControlDialog: { - accessItems: { - anyone: '링크가 있는 누구나', - specific: '특정 그룹 또는 구성원', - organization: '기업 내의 회원만', - external: '인증된 외부 사용자', - }, - operateGroupAndMember: { - searchPlaceholder: '그룹 및 구성원 검색', - allMembers: '모든 멤버들', - expand: '확장하다', - noResult: '결과 없음', - }, - title: '웹 애플리케이션 접근 제어', - accessLabel: '누가 접근할 수 있습니까?', - groups_one: '{{count}} 그룹', - groups_other: '{{count}} 그룹', - members_one: '{{count}} 회원', - members_other: '{{count}} 회원', - noGroupsOrMembers: '선택된 그룹 또는 멤버가 없습니다.', - webAppSSONotEnabledTip: - '웹 앱 인증 방법을 구성하려면 엔터프라이즈 관리자인에게 문의하십시오.', - updateSuccess: '업데이트가 성공적으로 완료되었습니다.', - description: '웹 앱 접근 권한 설정', - }, - publishApp: { - title: '누가 웹 애플리케이션에 접근할 수 있나요?', - notSet: '설정되지 않음', - notSetDesc: '현재 아무도 웹 앱에 접근할 수 없습니다. 권한을 설정해 주세요.', - }, - accessControl: '웹 애플리케이션 접근 제어', - noAccessPermission: '웹 앱에 대한 접근 권한이 없습니다.', - maxActiveRequests: '동시 최대 요청 수', - maxActiveRequestsPlaceholder: '무제한 사용을 원하시면 0을 입력하세요.', - maxActiveRequestsTip: '앱당 최대 동시 활성 요청 수(무제한은 0)', - gotoAnything: { - actions: { - searchWorkflowNodes: '워크플로 노드 검색', - searchApplicationsDesc: '애플리케이션 검색 및 탐색', - searchPlugins: '플러그인 검색', - searchApplications: '응용 프로그램 검색', - searchPluginsDesc: '플러그인을 검색하고 탐색합니다.', - searchWorkflowNodesDesc: '이름 또는 유형별로 현재 워크플로의 노드를 찾아 이동', - searchKnowledgeBasesDesc: '기술 자료를 검색하고 탐색합니다.', - searchWorkflowNodesHelp: '이 기능은 워크플로를 볼 때만 작동합니다. 먼저 워크플로로 이동합니다.', - searchKnowledgeBases: '기술 자료 검색', - themeCategoryTitle: '주제', - themeSystem: '시스템 테마', - themeDark: '어두운 테마', - languageChangeDesc: 'UI 언어 변경', - languageCategoryTitle: '언어', - runTitle: '명령어', - themeLight: '라이트 테마', - themeDarkDesc: '어두운 모양 사용', - themeLightDesc: '밝은 외관 사용', - themeCategoryDesc: '애플리케이션 테마 전환', - languageCategoryDesc: '인터페이스 언어 전환', - runDesc: '빠른 명령 실행 (테마, 언어 등...)', - themeSystemDesc: '운영 체제의 외관을 따르세요', - slashDesc: '/theme, /lang와 같은 명령어를 실행하십시오.', - communityDesc: '오픈 디스코드 커뮤니티', - feedbackDesc: '공개 커뮤니티 피드백 토론', - docDesc: '도움 문서 열기', - accountDesc: '계정 페이지로 이동', - zenTitle: 'Zen Mode', - zenDesc: 'Toggle canvas focus mode', - }, - emptyState: { - noAppsFound: '앱을 찾을 수 없습니다.', - noPluginsFound: '플러그인을 찾을 수 없습니다.', - noKnowledgeBasesFound: '기술 자료를 찾을 수 없습니다.', - noWorkflowNodesFound: '워크플로 노드를 찾을 수 없습니다.', - tryDifferentTerm: '다른 검색어를 시도하거나 {{mode}} 필터를 제거하세요', - trySpecificSearch: '특정 검색을 위해 {{shortcuts}}를 사용해보세요', - }, - groups: { - apps: '앱', - plugins: '플러그인', - knowledgeBases: '기술 자료', - workflowNodes: '워크플로 노드', - commands: '명령어', - }, - searching: '검색...', - searchTitle: '무엇이든 검색', - useAtForSpecific: '특정 형식에 @ 사용', - searchTemporarilyUnavailable: '일시적으로 검색할 수 없음', - noResults: '결과를 찾을 수 없습니다.', - someServicesUnavailable: '일부 검색 서비스를 사용할 수 없습니다.', - servicesUnavailableMessage: '일부 검색 서비스에서 문제가 발생할 수 있습니다. 잠시 후에 다시 시도하십시오.', - searchFailed: '검색 실패', - searchPlaceholder: '명령을 검색하거나 @를 입력합니다...', - clearToSearchAll: '@를 지우면 모두 검색됩니다.', - selectSearchType: '검색할 항목 선택', - commandHint: '@를 입력하여 카테고리별로 찾아봅니다.', - searchHint: '즉시 모든 것을 검색하려면 입력을 시작하세요.', - resultCount: '{{count}} 개 결과', - resultCount_other: '{{count}} 개 결과', - inScope: '{{scope}}s 내에서', - tryDifferentSearch: '다른 검색어 사용해 보기', - noMatchingCommands: '일치하는 명령을 찾을 수 없습니다.', - slashHint: '모든 사용 가능한 명령을 보려면 /를 입력하세요.', - tips: '↑↓ 키를 눌러 탐색하세요', - pressEscToClose: 'ESC를 눌러 닫기', - selectToNavigate: '선택하여 탐색하기', - startTyping: '검색하려면 타이핑을 시작하세요', - }, - noUserInputNode: '사용자 입력 노드가 없습니다', - notPublishedYet: '앱이 아직 출시되지 않았습니다', -} - -export default translation diff --git a/web/i18n/ko-KR/billing.json b/web/i18n/ko-KR/billing.json new file mode 100644 index 0000000000..bf2e310ac0 --- /dev/null +++ b/web/i18n/ko-KR/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "현재 요금제", + "upgradeBtn": { + "plain": "요금제 업그레이드", + "encourage": "지금 업그레이드", + "encourageShort": "업그레이드" + }, + "viewBilling": "청구 및 구독 관리", + "buyPermissionDeniedTip": "구독하려면 엔터프라이즈 관리자에게 문의하세요", + "plansCommon": { + "yearlyTip": "연간 구독 시 2개월 무료!", + "mostPopular": "가장 인기 있는", + "planRange": { + "monthly": "월간", + "yearly": "연간" + }, + "month": "월", + "year": "년", + "save": "절약 ", + "free": "무료", + "currentPlan": "현재 요금제", + "contractSales": "영업팀에 문의하기", + "contractOwner": "팀 관리자에게 문의하기", + "startForFree": "무료로 시작하기", + "contactSales": "영업팀에 문의하기", + "talkToSales": "영업팀과 상담하기", + "modelProviders": "모델 제공자", + "buildApps": "앱 만들기", + "vectorSpace": "벡터 공간", + "vectorSpaceTooltip": "벡터 공간은 LLM 이 데이터를 이해하는 데 필요한 장기 기억 시스템입니다.", + "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 요청", + "agentMode": "에이전트 모드", + "workflow": "워크플로우", + "llmLoadingBalancing": "LLM 로드 밸런싱", + "bulkUpload": "문서 대량 업로드", + "llmLoadingBalancingTooltip": "모델에 여러 API 키를 추가하여 API 속도 제한을 효과적으로 우회할 수 있습니다." + }, + "comingSoon": "곧 출시 예정", + "member": "멤버", + "memberAfter": "멤버", + "messageRequest": { + "title": "메시지 크레딧", + "tooltip": "GPT 제외 다양한 요금제에서의 메시지 호출 쿼터 (gpt4 제외). 제한을 초과하는 메시지는 OpenAI API 키를 사용합니다.", + "titlePerMonth": "{{count,number}} 메시지/월" + }, + "annotatedResponse": { + "title": "주석 응답 쿼터", + "tooltip": "수동으로 편집 및 응답 주석 달기로 앱의 사용자 정의 가능한 고품질 질의응답 기능을 제공합니다 (채팅 앱에만 해당)." + }, + "ragAPIRequestTooltip": "Dify 의 지식베이스 처리 기능을 호출하는 API 호출 수를 나타냅니다.", + "receiptInfo": "팀 소유자 및 팀 관리자만 구독 및 청구 정보를 볼 수 있습니다", + "annotationQuota": "Annotation Quota(주석 할당량)", + "freeTrialTipPrefix": "요금제에 가입하고 ", + "comparePlanAndFeatures": "계획 및 기능 비교", + "documents": "{{count,number}} 지식 문서", + "apiRateLimit": "API 요금 한도", + "cloud": "클라우드 서비스", + "unlimitedApiRate": "API 호출 속도 제한 없음", + "freeTrialTip": "200 회의 OpenAI 호출 무료 체험을 받으세요. ", + "annualBilling": "연간 청구", + "getStarted": "시작하기", + "apiRateLimitUnit": "{{count,number}}", + "freeTrialTipSuffix": "신용카드 없음", + "teamWorkspace": "{{count,number}} 팀 작업 공간", + "self": "자체 호스팅", + "teamMember_other": "{{count,number}} 팀원", + "teamMember_one": "{{count,number}} 팀원", + "priceTip": "작업 공간당/", + "apiRateLimitTooltip": "Dify API 를 통한 모든 요청에는 API 요금 한도가 적용되며, 여기에는 텍스트 생성, 채팅 대화, 워크플로 실행 및 문서 처리가 포함됩니다.", + "documentsRequestQuota": "{{count,number}}/분 지식 요청 비율 제한", + "documentsTooltip": "지식 데이터 소스에서 가져올 수 있는 문서 수에 대한 쿼터.", + "documentsRequestQuotaTooltip": "지식 기반 내에서 작업 공간이 분당 수행할 수 있는 총 작업 수를 지정합니다. 여기에는 데이터 세트 생성, 삭제, 업데이트, 문서 업로드, 수정, 보관 및 지식 기반 쿼리가 포함됩니다. 이 지표는 지식 기반 요청의 성능을 평가하는 데 사용됩니다. 예를 들어, 샌드박스 사용자가 1 분 이내에 10 회의 연속 히트 테스트를 수행하면, 해당 작업 공간은 다음 1 분 동안 데이터 세트 생성, 삭제, 업데이트 및 문서 업로드 또는 수정과 같은 작업을 수행하는 것이 일시적으로 제한됩니다.", + "startBuilding": "구축 시작", + "taxTip": "모든 구독 요금(월간/연간)에는 해당 세금(예: 부가가치세, 판매세)이 포함되어 있지 않습니다.", + "taxTipSecond": "귀하의 지역에 적용 가능한 세금 요구 사항이 없는 경우, 결제 시 세금이 표시되지 않으며 전체 구독 기간 동안 추가 요금이 부과되지 않습니다.", + "triggerEvents": { + "unlimited": "무제한 트리거 이벤트", + "tooltip": "플러그인, 스케줄 또는 웹훅 트리거를 통해 워크플로를 자동으로 시작하는 이벤트 수입니다.", + "sandbox": "{{count,number}} 트리거 이벤트", + "professional": "{{count,number}} 트리거 이벤트/월" + }, + "workflowExecution": { + "faster": "더 빠른 작업 흐름 실행", + "standard": "표준 워크플로 실행", + "priority": "우선 순위 작업 흐름 실행", + "tooltip": "워크플로 실행 대기열 우선순위 및 속도." + }, + "startNodes": { + "unlimited": "무제한 트리거/워크플로", + "limited": "{{count}}개의 트리거/워크플로까지" + }, + "title": { + "plans": "계획", + "description": "팀의 필요에 가장 적합한 요금제를 선택하세요." + } + }, + "plans": { + "sandbox": { + "name": "샌드박스", + "description": "GPT 무료 체험 200 회", + "for": "핵심 기능 무료 체험" + }, + "professional": { + "name": "프로페셔널", + "description": "개인 및 소규모 팀을 위해 더 많은 파워를 저렴한 가격에 제공합니다.", + "for": "1인 개발자/소규모 팀을 위한" + }, + "team": { + "name": "팀", + "description": "제한 없이 협업하고 최고의 성능을 누리세요.", + "for": "중간 규모 팀을 위한" + }, + "enterprise": { + "name": "엔터프라이즈", + "description": "대규모 미션 크리티컬 시스템을 위한 완전한 기능과 지원을 제공합니다.", + "includesTitle": "팀 플랜에 추가로 포함된 항목:", + "price": "맞춤형", + "btnText": "판매 문의하기", + "for": "대규모 팀을 위해", + "priceTip": "연간 청구 전용", + "features": [ + "기업용 확장형 배포 솔루션", + "상업용 라이선스 승인", + "독점 기업 기능", + "여러 작업 공간 및 기업 관리", + "싱글 사인온", + "Dify 파트너가 협상한 SLA", + "고급 보안 및 제어", + "Dify 공식 업데이트 및 유지 관리", + "전문 기술 지원" + ] + }, + "community": { + "btnText": "커뮤니티 시작하기", + "description": "개인 사용자, 소규모 팀 또는 비상업적 프로젝트를 위한", + "name": "커뮤니티", + "price": "무료", + "includesTitle": "무료 기능:", + "for": "개인 사용자, 소규모 팀 또는 비상업적 프로젝트를 위한", + "features": [ + "모든 핵심 기능이 공개 저장소에서 릴리스되었습니다", + "단일 작업 공간", + "Dify 오픈 소스 라이선스를 준수합니다" + ] + }, + "premium": { + "btnText": "프리미엄 받기", + "priceTip": "클라우드 마켓플레이스를 기반으로", + "name": "프리미엄", + "description": "중규모 조직 및 팀을 위한", + "comingSoon": "마이크로소프트 애저 및 구글 클라우드 지원 곧 제공됩니다.", + "price": "확장 가능", + "for": "중규모 조직 및 팀을 위한", + "includesTitle": "커뮤니티의 모든 것, 여기에 추가로:", + "features": [ + "다양한 클라우드 제공업체에 의한 자체 관리 신뢰성", + "단일 작업 공간", + "웹앱 로고 및 브랜딩 맞춤 설정", + "우선 이메일 및 채팅 지원" + ] + } + }, + "vectorSpace": { + "fullTip": "벡터 공간이 가득 찼습니다.", + "fullSolution": "더 많은 공간을 얻으려면 요금제를 업그레이드하세요." + }, + "apps": { + "contactUs": "문의하기", + "fullTip1": "업그레이드하여 더 많은 앱을 만들기", + "fullTip2": "계획 한도에 도달했습니다.", + "fullTip2des": "비활성 애플리케이션을 정리하여 사용량을 줄이거나 저희에게 문의하는 것이 좋습니다.", + "fullTip1des": "이 계획에서 앱을 구축할 수 있는 한계에 도달했습니다." + }, + "annotatedResponse": { + "fullTipLine1": "더 많은 대화를 주석 처리하려면,", + "fullTipLine2": "요금제를 업그레이드하세요.", + "quotaTitle": "주석 응답 쿼터" + }, + "usagePage": { + "vectorSpace": "지식 데이터 저장소", + "annotationQuota": "주석 할당량", + "teamMembers": "팀원들", + "buildApps": "앱 만들기", + "documentsUploadQuota": "문서 업로드 한도", + "vectorSpaceTooltip": "고품질 색인 모드를 사용하는 문서는 지식 데이터 저장소 자원을 소모합니다. 지식 데이터 저장소가 한도에 도달하면 새 문서를 업로드할 수 없습니다.", + "triggerEvents": "트리거 이벤트", + "perMonth": "월별", + "resetsIn": "{{count,number}}일 후 초기화" + }, + "teamMembers": "팀원들", + "triggerLimitModal": { + "usageTitle": "트리거 이벤트", + "dismiss": "닫기", + "title": "업그레이드하여 더 많은 트리거 이벤트 잠금 해제", + "description": "이 요금제의 워크플로 이벤트 트리거 한도에 도달했습니다.", + "upgrade": "업그레이드" + }, + "viewBillingTitle": "청구 및 구독", + "viewBillingDescription": "결제 수단, 청구서 및 구독 변경 관리", + "viewBillingAction": "관리하다", + "upgrade": { + "uploadMultiplePages": { + "title": "한 번에 여러 문서를 업로드하려면 업그레이드하세요", + "description": "업로드 한도에 도달했습니다 — 현재 요금제에서는 한 번에 한 개의 문서만 선택하고 업로드할 수 있습니다." + }, + "uploadMultipleFiles": { + "title": "업그레이드하여 대량 문서 업로드 기능 잠금 해제", + "description": "한 번에 더 많은 문서를 일괄 업로드하여 시간 절약과 효율성을 높이세요." + }, + "addChunks": { + "title": "계속해서 조각을 추가하려면 업그레이드하세요", + "description": "이 요금제에서는 더 이상 청크를 추가할 수 있는 한도에 도달했습니다." + } + } +} diff --git a/web/i18n/ko-KR/billing.ts b/web/i18n/ko-KR/billing.ts deleted file mode 100644 index 756ba53cad..0000000000 --- a/web/i18n/ko-KR/billing.ts +++ /dev/null @@ -1,234 +0,0 @@ -const translation = { - currentPlan: '현재 요금제', - upgradeBtn: { - plain: '요금제 업그레이드', - encourage: '지금 업그레이드', - encourageShort: '업그레이드', - }, - viewBilling: '청구 및 구독 관리', - buyPermissionDeniedTip: '구독하려면 엔터프라이즈 관리자에게 문의하세요', - plansCommon: { - yearlyTip: '연간 구독 시 2개월 무료!', - mostPopular: '가장 인기 있는', - planRange: { - monthly: '월간', - yearly: '연간', - }, - month: '월', - year: '년', - save: '절약 ', - free: '무료', - currentPlan: '현재 요금제', - contractSales: '영업팀에 문의하기', - contractOwner: '팀 관리자에게 문의하기', - startForFree: '무료로 시작하기', - contactSales: '영업팀에 문의하기', - talkToSales: '영업팀과 상담하기', - modelProviders: '모델 제공자', - buildApps: '앱 만들기', - vectorSpace: '벡터 공간', - vectorSpaceTooltip: - '벡터 공간은 LLM 이 데이터를 이해하는 데 필요한 장기 기억 시스템입니다.', - 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 요청', - agentMode: '에이전트 모드', - workflow: '워크플로우', - llmLoadingBalancing: 'LLM 로드 밸런싱', - bulkUpload: '문서 대량 업로드', - llmLoadingBalancingTooltip: - '모델에 여러 API 키를 추가하여 API 속도 제한을 효과적으로 우회할 수 있습니다.', - }, - comingSoon: '곧 출시 예정', - member: '멤버', - memberAfter: '멤버', - messageRequest: { - title: '메시지 크레딧', - tooltip: - 'GPT 제외 다양한 요금제에서의 메시지 호출 쿼터 (gpt4 제외). 제한을 초과하는 메시지는 OpenAI API 키를 사용합니다.', - titlePerMonth: '{{count,number}} 메시지/월', - }, - annotatedResponse: { - title: '주석 응답 쿼터', - tooltip: - '수동으로 편집 및 응답 주석 달기로 앱의 사용자 정의 가능한 고품질 질의응답 기능을 제공합니다 (채팅 앱에만 해당).', - }, - ragAPIRequestTooltip: - 'Dify 의 지식베이스 처리 기능을 호출하는 API 호출 수를 나타냅니다.', - receiptInfo: '팀 소유자 및 팀 관리자만 구독 및 청구 정보를 볼 수 있습니다', - annotationQuota: 'Annotation Quota(주석 할당량)', - freeTrialTipPrefix: '요금제에 가입하고 ', - comparePlanAndFeatures: '계획 및 기능 비교', - documents: '{{count,number}} 지식 문서', - apiRateLimit: 'API 요금 한도', - cloud: '클라우드 서비스', - unlimitedApiRate: 'API 호출 속도 제한 없음', - freeTrialTip: '200 회의 OpenAI 호출 무료 체험을 받으세요. ', - annualBilling: '연간 청구', - getStarted: '시작하기', - apiRateLimitUnit: '{{count,number}}', - freeTrialTipSuffix: '신용카드 없음', - teamWorkspace: '{{count,number}} 팀 작업 공간', - self: '자체 호스팅', - teamMember_other: '{{count,number}} 팀원', - teamMember_one: '{{count,number}} 팀원', - priceTip: '작업 공간당/', - apiRateLimitTooltip: - 'Dify API 를 통한 모든 요청에는 API 요금 한도가 적용되며, 여기에는 텍스트 생성, 채팅 대화, 워크플로 실행 및 문서 처리가 포함됩니다.', - documentsRequestQuota: '{{count,number}}/분 지식 요청 비율 제한', - documentsTooltip: - '지식 데이터 소스에서 가져올 수 있는 문서 수에 대한 쿼터.', - documentsRequestQuotaTooltip: - '지식 기반 내에서 작업 공간이 분당 수행할 수 있는 총 작업 수를 지정합니다. 여기에는 데이터 세트 생성, 삭제, 업데이트, 문서 업로드, 수정, 보관 및 지식 기반 쿼리가 포함됩니다. 이 지표는 지식 기반 요청의 성능을 평가하는 데 사용됩니다. 예를 들어, 샌드박스 사용자가 1 분 이내에 10 회의 연속 히트 테스트를 수행하면, 해당 작업 공간은 다음 1 분 동안 데이터 세트 생성, 삭제, 업데이트 및 문서 업로드 또는 수정과 같은 작업을 수행하는 것이 일시적으로 제한됩니다.', - startBuilding: '구축 시작', - taxTip: '모든 구독 요금(월간/연간)에는 해당 세금(예: 부가가치세, 판매세)이 포함되어 있지 않습니다.', - taxTipSecond: '귀하의 지역에 적용 가능한 세금 요구 사항이 없는 경우, 결제 시 세금이 표시되지 않으며 전체 구독 기간 동안 추가 요금이 부과되지 않습니다.', - triggerEvents: { - unlimited: '무제한 트리거 이벤트', - tooltip: '플러그인, 스케줄 또는 웹훅 트리거를 통해 워크플로를 자동으로 시작하는 이벤트 수입니다.', - sandbox: '{{count,number}} 트리거 이벤트', - professional: '{{count,number}} 트리거 이벤트/월', - }, - workflowExecution: { - faster: '더 빠른 작업 흐름 실행', - standard: '표준 워크플로 실행', - priority: '우선 순위 작업 흐름 실행', - tooltip: '워크플로 실행 대기열 우선순위 및 속도.', - }, - startNodes: { - unlimited: '무제한 트리거/워크플로', - limited: '{{count}}개의 트리거/워크플로까지', - }, - title: { - plans: '계획', - description: '팀의 필요에 가장 적합한 요금제를 선택하세요.', - }, - }, - plans: { - sandbox: { - name: '샌드박스', - description: 'GPT 무료 체험 200 회', - for: '핵심 기능 무료 체험', - }, - professional: { - name: '프로페셔널', - description: - '개인 및 소규모 팀을 위해 더 많은 파워를 저렴한 가격에 제공합니다.', - for: '1인 개발자/소규모 팀을 위한', - }, - team: { - name: '팀', - description: '제한 없이 협업하고 최고의 성능을 누리세요.', - for: '중간 규모 팀을 위한', - }, - enterprise: { - name: '엔터프라이즈', - description: - '대규모 미션 크리티컬 시스템을 위한 완전한 기능과 지원을 제공합니다.', - includesTitle: '팀 플랜에 추가로 포함된 항목:', - price: '맞춤형', - btnText: '판매 문의하기', - for: '대규모 팀을 위해', - priceTip: '연간 청구 전용', - features: ['기업용 확장형 배포 솔루션', '상업용 라이선스 승인', '독점 기업 기능', '여러 작업 공간 및 기업 관리', '싱글 사인온', 'Dify 파트너가 협상한 SLA', '고급 보안 및 제어', 'Dify 공식 업데이트 및 유지 관리', '전문 기술 지원'], - }, - community: { - btnText: '커뮤니티 시작하기', - description: '개인 사용자, 소규모 팀 또는 비상업적 프로젝트를 위한', - name: '커뮤니티', - price: '무료', - includesTitle: '무료 기능:', - for: '개인 사용자, 소규모 팀 또는 비상업적 프로젝트를 위한', - features: ['모든 핵심 기능이 공개 저장소에서 릴리스되었습니다', '단일 작업 공간', 'Dify 오픈 소스 라이선스를 준수합니다'], - }, - premium: { - btnText: '프리미엄 받기', - priceTip: '클라우드 마켓플레이스를 기반으로', - name: '프리미엄', - description: '중규모 조직 및 팀을 위한', - comingSoon: '마이크로소프트 애저 및 구글 클라우드 지원 곧 제공됩니다.', - price: '확장 가능', - for: '중규모 조직 및 팀을 위한', - includesTitle: '커뮤니티의 모든 것, 여기에 추가로:', - features: ['다양한 클라우드 제공업체에 의한 자체 관리 신뢰성', '단일 작업 공간', '웹앱 로고 및 브랜딩 맞춤 설정', '우선 이메일 및 채팅 지원'], - }, - }, - vectorSpace: { - fullTip: '벡터 공간이 가득 찼습니다.', - fullSolution: '더 많은 공간을 얻으려면 요금제를 업그레이드하세요.', - }, - apps: { - contactUs: '문의하기', - fullTip1: '업그레이드하여 더 많은 앱을 만들기', - fullTip2: '계획 한도에 도달했습니다.', - fullTip2des: - '비활성 애플리케이션을 정리하여 사용량을 줄이거나 저희에게 문의하는 것이 좋습니다.', - fullTip1des: '이 계획에서 앱을 구축할 수 있는 한계에 도달했습니다.', - }, - annotatedResponse: { - fullTipLine1: '더 많은 대화를 주석 처리하려면,', - fullTipLine2: '요금제를 업그레이드하세요.', - quotaTitle: '주석 응답 쿼터', - }, - usagePage: { - vectorSpace: '지식 데이터 저장소', - annotationQuota: '주석 할당량', - teamMembers: '팀원들', - buildApps: '앱 만들기', - documentsUploadQuota: '문서 업로드 한도', - vectorSpaceTooltip: - '고품질 색인 모드를 사용하는 문서는 지식 데이터 저장소 자원을 소모합니다. 지식 데이터 저장소가 한도에 도달하면 새 문서를 업로드할 수 없습니다.', - triggerEvents: '트리거 이벤트', - perMonth: '월별', - resetsIn: '{{count,number}}일 후 초기화', - }, - teamMembers: '팀원들', - triggerLimitModal: { - usageTitle: '트리거 이벤트', - dismiss: '닫기', - title: '업그레이드하여 더 많은 트리거 이벤트 잠금 해제', - description: '이 요금제의 워크플로 이벤트 트리거 한도에 도달했습니다.', - upgrade: '업그레이드', - }, - viewBillingTitle: '청구 및 구독', - viewBillingDescription: '결제 수단, 청구서 및 구독 변경 관리', - viewBillingAction: '관리하다', - upgrade: { - uploadMultiplePages: { - title: '한 번에 여러 문서를 업로드하려면 업그레이드하세요', - description: '업로드 한도에 도달했습니다 — 현재 요금제에서는 한 번에 한 개의 문서만 선택하고 업로드할 수 있습니다.', - }, - uploadMultipleFiles: { - title: '업그레이드하여 대량 문서 업로드 기능 잠금 해제', - description: '한 번에 더 많은 문서를 일괄 업로드하여 시간 절약과 효율성을 높이세요.', - }, - addChunks: { - title: '계속해서 조각을 추가하려면 업그레이드하세요', - description: '이 요금제에서는 더 이상 청크를 추가할 수 있는 한도에 도달했습니다.', - }, - }, -} - -export default translation diff --git a/web/i18n/ko-KR/common.json b/web/i18n/ko-KR/common.json new file mode 100644 index 0000000000..987f2c85fa --- /dev/null +++ b/web/i18n/ko-KR/common.json @@ -0,0 +1,785 @@ +{ + "api": { + "success": "성공", + "actionSuccess": "동작이 성공적으로 수행되었습니다", + "saved": "저장됨", + "create": "생성됨", + "remove": "삭제됨", + "actionFailed": "작업 실패" + }, + "operation": { + "create": "생성", + "confirm": "확인", + "cancel": "취소", + "clear": "지우기", + "save": "저장", + "saveAndEnable": "저장 및 활성화", + "edit": "편집", + "add": "추가", + "added": "추가됨", + "refresh": "새로 고침", + "reset": "초기화", + "search": "검색", + "change": "변경", + "remove": "삭제", + "send": "전송", + "copy": "복사", + "lineBreak": "줄 바꿈", + "sure": "확실히", + "download": "다운로드", + "delete": "삭제", + "settings": "설정", + "setup": "설정", + "getForFree": "무료로 받기", + "reload": "다시 불러오기", + "ok": "확인", + "log": "로그", + "learnMore": "자세히 알아보기", + "params": "매개변수", + "duplicate": "중복", + "rename": "이름 바꾸기", + "audioSourceUnavailable": "오디오 소스를 사용할 수 없습니다.", + "openInNewTab": "새 탭에서 열기", + "zoomIn": "확대", + "copyImage": "이미지 복사", + "zoomOut": "축소", + "close": "닫다", + "viewMore": "더보기", + "regenerate": "재생성", + "view": "보기", + "saveAndRegenerate": "저장 및 자식 청크 재생성", + "submit": "전송", + "skip": "배", + "imageCopied": "복사된 이미지", + "deleteApp": "앱 삭제", + "copied": "복사", + "viewDetails": "세부 정보보기", + "in": "안으로", + "downloadFailed": "다운로드 실패했습니다. 나중에 다시 시도하십시오.", + "format": "형식", + "more": "더 많은", + "downloadSuccess": "다운로드 완료.", + "selectAll": "모두 선택", + "deSelectAll": "모두 선택 해제", + "config": "구성", + "no": "아니요", + "yes": "네", + "deleteConfirmTitle": "삭제하시겠습니까?", + "confirmAction": "귀하의 행동을 확인해 주세요.", + "noSearchResults": "{{content}}가(이) 발견되지 않았습니다", + "resetKeywords": "키워드 재설정", + "selectCount": "{{count}} 선택됨", + "searchCount": "{{count}} {{content}} 찾기", + "noSearchCount": "0 {{content}}", + "now": "지금" + }, + "placeholder": { + "input": "입력해주세요", + "select": "선택해주세요", + "search": "검색..." + }, + "voice": { + "language": { + "zhHans": "중국어", + "zhHant": "번체 중국어", + "enUS": "영어", + "deDE": "독일어", + "frFR": "프랑스어", + "esES": "스페인어", + "itIT": "이탈리아어", + "thTH": "태국어", + "idID": "인도네시아어", + "jaJP": "일본어", + "koKR": "한국어", + "ptBR": "포르투갈어", + "ruRU": "러시아어", + "ukUA": "우크라이나어", + "viVN": "베트남어", + "plPL": "폴란드어", + "roRO": "루마니아어", + "hiIN": "힌디어", + "trTR": "터키어", + "faIR": "페르시아어", + "slSI": "슬로베니아어", + "arTN": "튀니지 아랍어" + } + }, + "unit": { + "char": "문자" + }, + "actionMsg": { + "noModification": "현재 변경사항이 없습니다.", + "modifiedSuccessfully": "변경이 성공적으로 이루어졌습니다", + "modifiedUnsuccessfully": "변경에 실패했습니다", + "copySuccessfully": "복사가 성공적으로 이루어졌습니다", + "paySucceeded": "결제가 성공했습니다", + "payCancelled": "결제가 취소되었습니다", + "generatedSuccessfully": "생성이 성공적으로 이루어졌습니다", + "generatedUnsuccessfully": "생성에 실패했습니다" + }, + "model": { + "params": { + "temperature": "온도", + "temperatureTip": "랜덤성을 제어합니다. 온도를 낮추면 더 랜덤한 결과물을 얻을 수 있습니다. 온도가 0 에 가까워질수록 모델은 결정적이고 반복적으로 작동합니다.", + "top_p": "상위 P", + "top_pTip": "뉴클리어스 샘플링에 의한 다양성 제어: 0.5 는 모든 확률 가중 옵션의 절반을 고려함을 의미합니다.", + "presence_penalty": "존재 페널티", + "presence_penaltyTip": "이전 텍스트에서 토큰이 나타나는지 여부에 따라 새로운 토큰에 얼마나 많은 페널티를 부여할지 제어합니다. 모델이 새로운 주제에 대해 말할 가능성이 높아집니다.", + "frequency_penalty": "빈도 페널티", + "frequency_penaltyTip": "이전 텍스트 내 토큰의 기존 빈도에 따라 새로운 토큰에 얼마나 많은 페널티를 부여할지 제어합니다. 모델이 같은 문구를 글자 그대로 반복할 가능성이 줄어듭니다.", + "max_tokens": "최대 토큰", + "max_tokensTip": "응답의 최대 길이를 토큰 단위로 제한하는 데 사용됩니다. 큰 값은 프롬프트, 채팅 로그 및 남은 공간에 대한 제한을 가질 수 있습니다. 2/3 이하로 설정하는 것이 좋습니다. gpt-4-1106-preview, gpt-4-vision-preview 의 최대 토큰 (입력 128k 출력 4k) 보다 작게 설정하는 것이 좋습니다.", + "maxTokenSettingTip": "최대 토큰 설정이 높아서 프롬프트, 쿼리 및 데이터 공간에 제한이 생길 수 있습니다. 현재 모델의 최대 토큰의 80% 이하로 설정해주세요.", + "setToCurrentModelMaxTokenTip": "최대 토큰이 현재 모델의 최대 토큰의 80% 로 업데이트되었습니다 {{maxToken}}.", + "stop_sequences": "중단 시퀀스", + "stop_sequencesTip": "API 가 진행 중인 토큰 생성을 중단하는 최대 4 개의 시퀀스입니다. 반환된 텍스트에는 중단 시퀀스가 포함되지 않습니다.", + "stop_sequencesPlaceholder": "시퀀스를 입력하고 탭 키를 누르세요" + }, + "tone": { + "Creative": "창의적인", + "Balanced": "균형잡힌", + "Precise": "정확한", + "Custom": "사용자 정의" + }, + "addMoreModel": "설정에서 다른 모델을 추가하세요", + "capabilities": "멀티모달 기능", + "settingsLink": "모델 공급자 설정" + }, + "menus": { + "status": "베타 버전", + "explore": "탐색", + "apps": "스튜디오", + "plugins": "플러그인", + "pluginsTips": "타사 플러그인을 통합하거나 ChatGPT 호환 AI 플러그인을 작성합니다.", + "datasets": "지식", + "datasetsTips": "곧 출시될 예정: 고유한 텍스트 데이터를 가져오거나 웹훅을 통해 실시간으로 데이터를 기록하여 LLM 컨텍스트를 강화합니다.", + "newApp": "새로운 앱", + "newDataset": "지식 만들기", + "tools": "도구", + "exploreMarketplace": "Marketplace 둘러보기", + "appDetail": "앱 세부정보", + "account": "계정" + }, + "userProfile": { + "settings": "설정", + "emailSupport": "이메일 지원", + "workspace": "작업 공간", + "createWorkspace": "작업 공간 만들기", + "helpCenter": "도움말 센터", + "roadmap": "로드맵", + "community": "커뮤니티", + "about": "Dify 소개", + "logout": "로그아웃", + "github": "깃허브", + "compliance": "컴플라이언스", + "support": "지원", + "contactUs": "문의하기", + "forum": "포럼" + }, + "settings": { + "accountGroup": "계정", + "workplaceGroup": "작업 공간", + "account": "내 계정", + "members": "멤버", + "billing": "청구", + "integrations": "통합", + "language": "언어", + "provider": "모델 제공자", + "dataSource": "데이터 소스", + "plugin": "플러그인", + "apiBasedExtension": "API 확장", + "generalGroup": "일반" + }, + "account": { + "avatar": "아바타", + "name": "이름", + "email": "이메일", + "password": "비밀번호", + "passwordTip": "일시적인 로그인 코드를 사용하지 않으려면 영구적인 비밀번호를 설정할 수 있습니다.", + "setPassword": "비밀번호 설정", + "resetPassword": "비밀번호 재설정", + "currentPassword": "현재 비밀번호", + "newPassword": "새 비밀번호", + "confirmPassword": "비밀번호 확인", + "notEqual": "비밀번호가 일치하지 않습니다.", + "langGeniusAccount": "Dify 계정", + "langGeniusAccountTip": "Dify 계정과 관련된 사용자 데이터.", + "editName": "이름 편집", + "showAppLength": "{{length}}개의 앱 표시", + "delete": "계정 삭제", + "deleteTip": "계정을 삭제하면 모든 데이터가 영구적으로 지워지며 복구할 수 없습니다.", + "myAccount": "내 계정", + "studio": "디파이 스튜디오", + "account": "계정", + "deletePrivacyLink": "개인 정보 보호 정책.", + "deleteSuccessTip": "계정 삭제를 완료하는 데 시간이 필요합니다. 모든 작업이 완료되면 이메일로 연락드리겠습니다.", + "deleteLabel": "확인하려면 아래 이메일을 입력하십시오.", + "deletePlaceholder": "이메일을 입력해 주세요", + "sendVerificationButton": "인증 코드 보내기", + "verificationLabel": "인증 코드", + "verificationPlaceholder": "6 자리 코드를 붙여넣습니다.", + "permanentlyDeleteButton": "계정 영구 삭제", + "feedbackTitle": "피드백", + "feedbackLabel": "계정을 삭제한 이유를 알려주시겠습니까?", + "feedbackPlaceholder": "선택적", + "deletePrivacyLinkTip": "당사가 귀하의 데이터를 처리하는 방법에 대한 자세한 내용은 다음을 참조하십시오.", + "workspaceIcon": "작업 공간 아이콘", + "editWorkspaceInfo": "작업 공간 정보 편집", + "workspaceName": "작업 공간 이름", + "changeEmail": { + "codeLabel": "검증 코드", + "codePlaceholder": "6자리 코드를 붙여넣으세요", + "title": "이메일 변경", + "emailLabel": "새 이메일", + "verifyEmail": "현재 이메일을 확인하세요", + "sendVerifyCode": "인증 코드를 보내다", + "continue": "계속하다", + "resendCount": "{{count}}초 후에 다시 보내기", + "verifyNew": "새 이메일 확인하기", + "emailPlaceholder": "새 이메일을 입력하세요", + "resend": "다시 보내기", + "newEmail": "새 이메일 주소를 설정하세요", + "existingEmail": "이미 이 이메일을 가진 사용자가 존재합니다.", + "content4": "우리는 방금 귀하에게 임시 인증 코드를 {{email}}로 보냈습니다.", + "changeTo": "{{email}}로 변경", + "content2": "현재 이메일은 {{email}}입니다. 이 이메일 주소로 인증 코드가 전송되었습니다.", + "resendTip": "코드를 받지 못하셨나요?", + "content3": "새로운 이메일을 입력하시면 인증 코드를 보내드립니다.", + "content1": "계속 진행하면, 재인증을 위해 {{email}}로 인증 코드를 전송하겠습니다.", + "authTip": "이메일이 변경되면, 이전 이메일에 연결된 Google 또는 GitHub 계정은 더 이상 이 계정에 로그인할 수 없습니다.", + "unAvailableEmail": "이 이메일은 일시적으로 사용할 수 없습니다." + } + }, + "members": { + "team": "팀", + "invite": "초대", + "name": "이름", + "lastActive": "최근 활동", + "role": "역할", + "pending": "대기 중...", + "owner": "소유자", + "admin": "관리자", + "adminTip": "앱 빌드 및 팀 설정 관리 가능", + "normal": "일반", + "normalTip": "앱 사용만 가능하고 앱 빌드는 불가능", + "editor": "편집자", + "editorTip": "앱 빌드만 가능하고 팀 설정 관리 불가능", + "inviteTeamMember": "팀 멤버 초대", + "inviteTeamMemberTip": "로그인 후에 바로 팀 데이터에 액세스할 수 있습니다.", + "emailNotSetup": "이메일 서버가 설정되지 않아 초대 이메일을 보낼 수 없습니다. 대신 초대 후 발급되는 초대 링크를 사용자에게 알려주세요.", + "email": "이메일", + "emailInvalid": "유효하지 않은 이메일 형식", + "emailPlaceholder": "이메일 입력", + "sendInvite": "초대 보내기", + "invitedAsRole": "{{role}} 사용자로 초대되었습니다", + "invitationSent": "초대가 전송되었습니다", + "invitationSentTip": "초대가 전송되었으며, 그들은 Dify 에 로그인하여 당신의 팀 데이터에 액세스할 수 있습니다.", + "invitationLink": "초대 링크", + "failedInvitationEmails": "다음 사용자들은 성공적으로 초대되지 않았습니다", + "ok": "확인", + "removeFromTeam": "팀에서 제거", + "removeFromTeamTip": "팀 액세스가 제거됩니다", + "setAdmin": "관리자 설정", + "setMember": "일반 멤버 설정", + "setEditor": "편집자 설정", + "disInvite": "초대 취소", + "deleteMember": "멤버 삭제", + "you": "(나)", + "datasetOperator": "지식 관리자", + "setBuilder": "빌더로 설정", + "builder": "건설자", + "builderTip": "자신의 앱을 구축 및 편집할 수 있습니다.", + "datasetOperatorTip": "기술 자료만 관리할 수 있습니다.", + "transferModal": { + "codeLabel": "검증 코드", + "sendVerifyCode": "인증 코드를 보내다", + "verifyContent": "현재 이메일은 {{email}}입니다.", + "verifyEmail": "현재 이메일을 확인하세요", + "continue": "계속하다", + "title": "작업 공간 소유권 이전", + "resend": "다시 보내기", + "transferLabel": "작업 공간 소유권을 이전하다", + "transferPlaceholder": "작업 공간 구성원을 선택하세요…", + "warning": "당신은 \"{{workspace}}\"의 소유권을 이전하려고 합니다. 이는 즉시 발효되며 되돌릴 수 없습니다.", + "transfer": "작업 공간 소유권 이전", + "resendCount": "{{count}}초 후에 다시 보내기", + "verifyContent2": "재인증을 위해 이 이메일로 임시 인증 코드를 발송하겠습니다.", + "warningTip": "당신은 관리자 회원이 될 것이고, 새로운 소유자는 완전한 제어 권한을 갖게 됩니다.", + "codePlaceholder": "6자리 코드를 붙여넣으세요", + "resendTip": "코드를 받지 못하셨나요?", + "sendTip": "계속 진행하면, 재인증을 위해 {{email}}로 인증 코드를 전송하겠습니다." + }, + "transferOwnership": "소유권 이전" + }, + "integrations": { + "connected": "연결됨", + "google": "Google", + "googleAccount": "Google 계정으로 로그인", + "github": "GitHub", + "githubAccount": "GitHub 계정으로 로그인", + "connect": "연결" + }, + "language": { + "displayLanguage": "표시 언어", + "timezone": "시간대" + }, + "provider": { + "apiKey": "API 키", + "enterYourKey": "여기에 API 키를 입력하세요", + "invalidKey": "유효하지 않은 OpenAI API 키", + "validatedError": "검증 실패:", + "validating": "키를 확인하는 중...", + "saveFailed": "API 키 저장 실패", + "apiKeyExceedBill": "이 API KEY 에는 사용 가능한 할당량이 없습니다. 자세한 내용은", + "addKey": "키 추가", + "comingSoon": "곧 출시됨", + "editKey": "편집", + "invalidApiKey": "유효하지 않은 API 키", + "azure": { + "apiBase": "API 베이스", + "apiBasePlaceholder": "Azure OpenAI 엔드포인트의 API 베이스 URL.", + "apiKey": "API 키", + "apiKeyPlaceholder": "여기에 API 키를 입력하세요", + "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": "닫기", + "trialQuotaTip": "Anthropic 평가판 할당량은 2025/03/11에 만료되며 그 이후에는 더 이상 사용할 수 없습니다. 제때 활용하시기 바랍니다." + }, + "anthropic": { + "using": "임베드 기능을 사용 중입니다", + "enableTip": "Anthropic 모델을 활성화하려면 먼저 OpenAI 또는 Azure OpenAI 서비스에 바인딩해야 합니다.", + "notEnabled": "비활성화됨", + "keyFrom": "Anthropic 에서 API 키를 받으세요" + }, + "encrypted": { + "front": "API KEY 는", + "back": "기술을 사용하여 암호화 및 저장됩니다." + } + }, + "modelProvider": { + "notConfigured": "시스템 모델이 아직 완전히 설정되지 않아 일부 기능을 사용할 수 없습니다.", + "systemModelSettings": "시스템 모델 설정", + "systemModelSettingsLink": "시스템 모델 설정이 필요한 이유는 무엇입니까?", + "selectModel": "모델 선택", + "setupModelFirst": "먼저 모델을 설정하세요", + "systemReasoningModel": { + "key": "시스템 추론 모델", + "tip": "앱 구축에 사용되는 기본 추론 모델을 설정합니다. 또한 대화 이름 생성 및 다음 질문 제안과 같은 기능도 기본 추론 모델을 사용합니다." + }, + "embeddingModel": { + "key": "임베딩 모델", + "tip": "지식 문서 임베딩 처리의 기본 모델을 설정합니다. 지식 가져오기 및 임포트에 모두 이 임베딩 모델을 벡터화 처리에 사용합니다. 변경하면 가져온 지식과 질문 간의 벡터 차원이 일치하지 않아 가져오기에 실패합니다. 실패를 피하려면 이 모델을 변경하지 마세요.", + "required": "임베딩 모델이 필요합니다" + }, + "speechToTextModel": { + "key": "음성-to-텍스트 모델", + "tip": "대화에서의 음성-to-텍스트 입력에 사용되는 기본 모델을 설정합니다." + }, + "ttsModel": { + "key": "텍스트-to-음성 모델", + "tip": "대화에서의 텍스트-to-음성 입력에 사용되는 기본 모델을 설정합니다." + }, + "rerankModel": { + "key": "재랭크 모델", + "tip": "재랭크 모델은 사용자 쿼리와의 의미적 일치를 기반으로 후보 문서 목록을 재배열하여 의미적 순위를 향상시킵니다." + }, + "quota": "할당량", + "searchModel": "검색 모델", + "noModelFound": "{{model}}에 대한 모델을 찾을 수 없습니다", + "models": "모델", + "showMoreModelProvider": "더 많은 모델 제공자 표시", + "selector": { + "tip": "이 모델은 삭제되었습니다. 다른 모델을 추가하거나 다른 모델을 선택하세요.", + "emptyTip": "사용 가능한 모델이 없습니다", + "emptySetting": "설정으로 이동하여 구성하세요", + "rerankTip": "재랭크 모델을 설정하세요" + }, + "card": { + "quota": "할당량", + "onTrial": "트라이얼 중", + "paid": "유료", + "quotaExhausted": "할당량이 다 사용되었습니다", + "callTimes": "호출 횟수", + "tokens": "토큰", + "buyQuota": "Buy Quota", + "priorityUse": "우선 사용", + "removeKey": "API 키 제거", + "tip": "지불된 할당량에 우선순위가 부여됩니다. 평가판 할당량은 유료 할당량이 소진된 후 사용됩니다." + }, + "item": { + "deleteDesc": "{{modelName}}은 (는) 시스템 추론 모델로 사용 중입니다. 제거 후 일부 기능을 사용할 수 없습니다. 확인하시겠습니까?", + "freeQuota": "무료 할당량" + }, + "addApiKey": "API 키 추가", + "invalidApiKey": "잘못된 API 키", + "encrypted": { + "front": "API 키는 다음 기술을 사용하여 암호화되어 저장됩니다", + "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": "매개변수", + "apiKey": "API 키", + "defaultConfig": "기본 구성", + "providerManaged": "제공자 관리", + "loadBalancing": "부하 분산 Load balancing", + "addConfig": "구성 추가", + "apiKeyStatusNormal": "APIKey 상태는 정상입니다.", + "configLoadBalancing": "Config 로드 밸런싱", + "editConfig": "구성 편집", + "loadBalancingHeadline": "로드 밸런싱", + "modelHasBeenDeprecated": "이 모델은 더 이상 사용되지 않습니다", + "loadBalancingDescription": "여러 자격 증명 세트로 부담을 줄입니다.", + "upgradeForLoadBalancing": "로드 밸런싱을 사용하도록 계획을 업그레이드합니다.", + "apiKeyRateLimit": "속도 제한에 도달했으며, {{seconds}}s 후에 사용할 수 있습니다.", + "loadBalancingInfo": "기본적으로 부하 분산은 라운드 로빈 전략을 사용합니다. 속도 제한이 트리거되면 1 분의 휴지 기간이 적용됩니다.", + "loadBalancingLeastKeyWarning": "로드 밸런싱을 사용하려면 최소 2 개의 키를 사용하도록 설정해야 합니다.", + "providerManagedDescription": "모델 공급자가 제공하는 단일 자격 증명 집합을 사용합니다.", + "installProvider": "모델 공급자 설치", + "discoverMore": "더 알아보기", + "emptyProviderTitle": "모델 공급자가 설정되지 않음", + "configureTip": "api-key 설정 또는 사용할 모델 추가", + "emptyProviderTip": "먼저 모델 공급자를 설치하십시오.", + "toBeConfigured": "구성 예정", + "auth": { + "apiKeyModal": { + "addModel": "모델 추가", + "title": "API 키 인증 구성", + "desc": "자격증명을 구성한 후에는 작업 공간 내의 모든 구성원이 애플리케이션을 조정할 때 이 모델을 사용할 수 있습니다." + }, + "addApiKey": "API 키 추가", + "apiKeys": "API 키", + "unAuthorized": "무단", + "configModel": "구성 모델", + "authorizationError": "권한 오류", + "configLoadBalancing": "구성 로드 밸런싱", + "addNewModel": "새 모델 추가하기", + "specifyModelCredentialTip": "구성된 모델 자격 증명을 사용합니다.", + "modelCredentials": "모델 자격 증명", + "addCredential": "자격 증명을 추가하다", + "authRemoved": "인증이 제거되었습니다.", + "providerManaged": "제공자가 관리하는", + "addModelCredential": "모델 자격 증명 추가", + "specifyModelCredential": "모델 자격 증명을 명시하세요.", + "providerManagedTip": "현재 구성은 제공업체에 의해 호스팅되고 있습니다.", + "addModel": "모델 추가", + "removeModel": "모델 제거", + "manageCredentials": "자격 증명 관리", + "selectModelCredential": "모델 자격 증명 선택", + "modelCredential": "모델 자격 증명", + "addNewModelCredential": "새 모델 자격 증명 추가", + "editModelCredential": "모델 자격 증명 편집", + "customModelCredentials": "사용자 지정 모델 자격 증명", + "customModelCredentialsDeleteTip": "자격 증명이 사용 중이며 삭제할 수 없습니다." + }, + "parametersInvalidRemoved": "일부 매개변수가 유효하지 않아 제거되었습니다.", + "installDataSourceProvider": "데이터 소스 공급자 설치" + }, + "dataSource": { + "add": "데이터 소스 추가하기", + "connect": "연결하기", + "notion": { + "title": "Notion", + "description": "노션을 지식 데이터 소스로 사용하기.", + "connectedWorkspace": "작업 공간에 연결됨", + "addWorkspace": "작업 공간에 추가하기", + "connected": "연결됨", + "disconnected": "연결 안됨", + "changeAuthorizedPages": "허가된 페이지 변경하기", + "pagesAuthorized": "페이지가 허가됨", + "sync": "동기화", + "remove": "제거하기", + "selector": { + "pageSelected": "페이지 선택됨", + "searchPages": "페이지 검색...", + "noSearchResult": "검색 결과 없음", + "addPages": "페이지 추가하기", + "preview": "미리보기" + }, + "integratedAlert": "Notion은 내부 자격 증명을 통해 통합되므로 다시 인증할 필요가 없습니다." + }, + "website": { + "inactive": "게으른", + "title": "웹 사이트", + "configuredCrawlers": "구성된 크롤러", + "with": "와", + "active": "활동적인", + "description": "웹 크롤러를 사용하여 웹 사이트에서 콘텐츠를 가져옵니다." + }, + "configure": "구성" + }, + "plugin": { + "serpapi": { + "apiKey": "API 키", + "apiKeyPlaceholder": "API 키를 입력하세요", + "keyFrom": "SerpAPI 계정 페이지에서 SerpAPI 키를 가져오세요" + } + }, + "apiBasedExtension": { + "title": "API 기반 확장은 Dify 애플리케이션 전체에서 간편한 사용을 위한 설정을 단순화하고 집중적인 API 관리를 제공합니다.", + "link": "사용자 정의 API 기반 확장을 개발하는 방법 배우기", + "add": "API 기반 확장 추가", + "selector": { + "title": "API 기반 확장", + "placeholder": "API 기반 확장을 선택하세요", + "manage": "API 기반 확장 관리" + }, + "modal": { + "title": "API 기반 확장 추가", + "editTitle": "API 기반 확장 편집", + "name": { + "title": "이름", + "placeholder": "이름을 입력하세요" + }, + "apiEndpoint": { + "title": "API 엔드포인트", + "placeholder": "API 엔드포인트를 입력하세요" + }, + "apiKey": { + "title": "API 키", + "placeholder": "API 키를 입력하세요", + "lengthError": "API 키는 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": "관련 앱", + "noRelatedApp": "연결된 앱 없음", + "pipeline": "파이프라인" + }, + "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": "검색 점수:" + }, + "inputPlaceholder": "봇과 대화", + "thought": "생각", + "thinking": "생각...", + "resend": "재전송" + }, + "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": "태그 생성에 실패했습니다" + }, + "errorMsg": { + "urlError": "URL 은 http:// 또는 https:// 로 시작해야 합니다.", + "fieldRequired": "{{field}}는 필수입니다." + }, + "fileUploader": { + "uploadFromComputer": "로컬 업로드", + "pasteFileLinkInputPlaceholder": "URL 입력...", + "pasteFileLinkInvalid": "유효하지 않은 파일 링크", + "uploadFromComputerReadError": "파일 읽기에 실패했습니다. 다시 시도하십시오.", + "pasteFileLink": "파일 링크 붙여넣기", + "fileExtensionNotSupport": "지원되지 않는 파일 확장자", + "uploadFromComputerLimit": "업로드 파일은 {{size}}를 초과할 수 없습니다.", + "uploadFromComputerUploadError": "파일 업로드에 실패했습니다. 다시 업로드하십시오.", + "fileExtensionBlocked": "보안상의 이유로 이 파일 형식은 차단되었습니다", + "uploadDisabled": "파일 업로드가 비활성화되었습니다" + }, + "license": { + "expiring_plural": "{{count}}일 후에 만료", + "expiring": "하루 후에 만료", + "unlimited": "무제한" + }, + "pagination": { + "perPage": "페이지당 항목 수" + }, + "theme": { + "theme": "테마", + "light": "밝은", + "dark": "어두운", + "auto": "시스템" + }, + "compliance": { + "iso27001": "ISO 27001:2022 인증", + "soc2Type1": "SOC 2 유형 I 보고서", + "soc2Type2": "SOC 2 유형 II 보고서", + "gdpr": "GDPR DPA", + "professionalUpgradeTooltip": "팀 플랜 이상에서만 사용할 수 있습니다.", + "sandboxUpgradeTooltip": "전문가 또는 팀 플랜에서만 사용할 수 있습니다." + }, + "imageInput": { + "supportedFormats": "PNG, JPG, JPEG, WEBP 및 GIF 를 지원합니다.", + "browse": "브라우즈", + "dropImageHere": "여기에 이미지를 드롭하거나" + }, + "you": "너", + "avatar": { + "deleteTitle": "아바타 제거하기", + "deleteDescription": "프로필 사진을 제거하시겠습니까? 귀하의 계정은 기본 초기 아바타를 사용하게 됩니다." + }, + "feedback": { + "content": "피드백 내용", + "title": "피드백 제공하기", + "subtitle": "이 응답에서 무엇이 잘못되었는지 말씀해 주세요.", + "placeholder": "문제가 무엇인지 또는 어떻게 개선할 수 있는지 설명해 주십시오..." + }, + "label": { + "optional": "(선택 사항)" + }, + "noData": "데이터 없음", + "dynamicSelect": { + "error": "옵션 불러오기 실패", + "noData": "사용 가능한 옵션이 없습니다", + "loading": "옵션 불러오는 중...", + "selected": "{{count}} 선택됨" + } +} diff --git a/web/i18n/ko-KR/common.ts b/web/i18n/ko-KR/common.ts deleted file mode 100644 index 531aa29054..0000000000 --- a/web/i18n/ko-KR/common.ts +++ /dev/null @@ -1,788 +0,0 @@ -const translation = { - api: { - success: '성공', - actionSuccess: '동작이 성공적으로 수행되었습니다', - saved: '저장됨', - create: '생성됨', - remove: '삭제됨', - actionFailed: '작업 실패', - }, - operation: { - create: '생성', - confirm: '확인', - cancel: '취소', - clear: '지우기', - save: '저장', - saveAndEnable: '저장 및 활성화', - edit: '편집', - add: '추가', - added: '추가됨', - refresh: '새로 고침', - reset: '초기화', - search: '검색', - change: '변경', - remove: '삭제', - send: '전송', - copy: '복사', - lineBreak: '줄 바꿈', - sure: '확실히', - download: '다운로드', - delete: '삭제', - settings: '설정', - setup: '설정', - getForFree: '무료로 받기', - reload: '다시 불러오기', - ok: '확인', - log: '로그', - learnMore: '자세히 알아보기', - params: '매개변수', - duplicate: '중복', - rename: '이름 바꾸기', - audioSourceUnavailable: '오디오 소스를 사용할 수 없습니다.', - openInNewTab: '새 탭에서 열기', - zoomIn: '확대', - copyImage: '이미지 복사', - zoomOut: '축소', - close: '닫다', - viewMore: '더보기', - regenerate: '재생성', - view: '보기', - saveAndRegenerate: '저장 및 자식 청크 재생성', - submit: '전송', - skip: '배', - imageCopied: '복사된 이미지', - deleteApp: '앱 삭제', - copied: '복사', - viewDetails: '세부 정보보기', - in: '안으로', - downloadFailed: '다운로드 실패했습니다. 나중에 다시 시도하십시오.', - format: '형식', - more: '더 많은', - downloadSuccess: '다운로드 완료.', - selectAll: '모두 선택', - deSelectAll: '모두 선택 해제', - config: '구성', - no: '아니요', - yes: '네', - deleteConfirmTitle: '삭제하시겠습니까?', - confirmAction: '귀하의 행동을 확인해 주세요.', - noSearchResults: '{{content}}가(이) 발견되지 않았습니다', - resetKeywords: '키워드 재설정', - selectCount: '{{count}} 선택됨', - searchCount: '{{count}} {{content}} 찾기', - noSearchCount: '0 {{content}}', - now: '지금', - }, - placeholder: { - input: '입력해주세요', - select: '선택해주세요', - search: '검색...', - }, - voice: { - language: { - zhHans: '중국어', - zhHant: '번체 중국어', - enUS: '영어', - deDE: '독일어', - frFR: '프랑스어', - esES: '스페인어', - itIT: '이탈리아어', - thTH: '태국어', - idID: '인도네시아어', - jaJP: '일본어', - koKR: '한국어', - ptBR: '포르투갈어', - ruRU: '러시아어', - ukUA: '우크라이나어', - viVN: '베트남어', - plPL: '폴란드어', - roRO: '루마니아어', - hiIN: '힌디어', - trTR: '터키어', - faIR: '페르시아어', - slSI: '슬로베니아어', - arTN: '튀니지 아랍어', - }, - }, - unit: { - char: '문자', - }, - actionMsg: { - noModification: '현재 변경사항이 없습니다.', - modifiedSuccessfully: '변경이 성공적으로 이루어졌습니다', - modifiedUnsuccessfully: '변경에 실패했습니다', - copySuccessfully: '복사가 성공적으로 이루어졌습니다', - paySucceeded: '결제가 성공했습니다', - payCancelled: '결제가 취소되었습니다', - generatedSuccessfully: '생성이 성공적으로 이루어졌습니다', - generatedUnsuccessfully: '생성에 실패했습니다', - }, - model: { - params: { - temperature: '온도', - temperatureTip: '랜덤성을 제어합니다. 온도를 낮추면 더 랜덤한 결과물을 얻을 수 있습니다. 온도가 0 에 가까워질수록 모델은 결정적이고 반복적으로 작동합니다.', - top_p: '상위 P', - top_pTip: '뉴클리어스 샘플링에 의한 다양성 제어: 0.5 는 모든 확률 가중 옵션의 절반을 고려함을 의미합니다.', - presence_penalty: '존재 페널티', - presence_penaltyTip: '이전 텍스트에서 토큰이 나타나는지 여부에 따라 새로운 토큰에 얼마나 많은 페널티를 부여할지 제어합니다. 모델이 새로운 주제에 대해 말할 가능성이 높아집니다.', - frequency_penalty: '빈도 페널티', - frequency_penaltyTip: '이전 텍스트 내 토큰의 기존 빈도에 따라 새로운 토큰에 얼마나 많은 페널티를 부여할지 제어합니다. 모델이 같은 문구를 글자 그대로 반복할 가능성이 줄어듭니다.', - max_tokens: '최대 토큰', - max_tokensTip: - '응답의 최대 길이를 토큰 단위로 제한하는 데 사용됩니다. 큰 값은 프롬프트, 채팅 로그 및 남은 공간에 대한 제한을 가질 수 있습니다. 2/3 이하로 설정하는 것이 좋습니다. gpt-4-1106-preview, gpt-4-vision-preview 의 최대 토큰 (입력 128k 출력 4k) 보다 작게 설정하는 것이 좋습니다.', - maxTokenSettingTip: '최대 토큰 설정이 높아서 프롬프트, 쿼리 및 데이터 공간에 제한이 생길 수 있습니다. 현재 모델의 최대 토큰의 80% 이하로 설정해주세요.', - setToCurrentModelMaxTokenTip: '최대 토큰이 현재 모델의 최대 토큰의 80% 로 업데이트되었습니다 {{maxToken}}.', - stop_sequences: '중단 시퀀스', - stop_sequencesTip: 'API 가 진행 중인 토큰 생성을 중단하는 최대 4 개의 시퀀스입니다. 반환된 텍스트에는 중단 시퀀스가 포함되지 않습니다.', - stop_sequencesPlaceholder: '시퀀스를 입력하고 탭 키를 누르세요', - }, - tone: { - Creative: '창의적인', - Balanced: '균형잡힌', - Precise: '정확한', - Custom: '사용자 정의', - }, - addMoreModel: '설정에서 다른 모델을 추가하세요', - capabilities: '멀티모달 기능', - settingsLink: '모델 공급자 설정', - }, - menus: { - status: '베타 버전', - explore: '탐색', - apps: '스튜디오', - plugins: '플러그인', - pluginsTips: '타사 플러그인을 통합하거나 ChatGPT 호환 AI 플러그인을 작성합니다.', - datasets: '지식', - datasetsTips: '곧 출시될 예정: 고유한 텍스트 데이터를 가져오거나 웹훅을 통해 실시간으로 데이터를 기록하여 LLM 컨텍스트를 강화합니다.', - newApp: '새로운 앱', - newDataset: '지식 만들기', - tools: '도구', - exploreMarketplace: 'Marketplace 둘러보기', - appDetail: '앱 세부정보', - account: '계정', - }, - userProfile: { - settings: '설정', - emailSupport: '이메일 지원', - workspace: '작업 공간', - createWorkspace: '작업 공간 만들기', - helpCenter: '도움말 센터', - roadmap: '로드맵', - community: '커뮤니티', - about: 'Dify 소개', - logout: '로그아웃', - github: '깃허브', - compliance: '컴플라이언스', - support: '지원', - contactUs: '문의하기', - forum: '포럼', - }, - settings: { - accountGroup: '계정', - workplaceGroup: '작업 공간', - account: '내 계정', - members: '멤버', - billing: '청구', - integrations: '통합', - language: '언어', - provider: '모델 제공자', - dataSource: '데이터 소스', - plugin: '플러그인', - apiBasedExtension: 'API 확장', - generalGroup: '일반', - }, - account: { - avatar: '아바타', - name: '이름', - email: '이메일', - password: '비밀번호', - passwordTip: '일시적인 로그인 코드를 사용하지 않으려면 영구적인 비밀번호를 설정할 수 있습니다.', - setPassword: '비밀번호 설정', - resetPassword: '비밀번호 재설정', - currentPassword: '현재 비밀번호', - newPassword: '새 비밀번호', - confirmPassword: '비밀번호 확인', - notEqual: '비밀번호가 일치하지 않습니다.', - langGeniusAccount: 'Dify 계정', - langGeniusAccountTip: 'Dify 계정과 관련된 사용자 데이터.', - editName: '이름 편집', - showAppLength: '{{length}}개의 앱 표시', - delete: '계정 삭제', - deleteTip: '계정을 삭제하면 모든 데이터가 영구적으로 지워지며 복구할 수 없습니다.', - myAccount: '내 계정', - studio: '디파이 스튜디오', - account: '계정', - deletePrivacyLink: '개인 정보 보호 정책.', - deleteSuccessTip: '계정 삭제를 완료하는 데 시간이 필요합니다. 모든 작업이 완료되면 이메일로 연락드리겠습니다.', - deleteLabel: '확인하려면 아래 이메일을 입력하십시오.', - deletePlaceholder: '이메일을 입력해 주세요', - sendVerificationButton: '인증 코드 보내기', - verificationLabel: '인증 코드', - verificationPlaceholder: '6 자리 코드를 붙여넣습니다.', - permanentlyDeleteButton: '계정 영구 삭제', - feedbackTitle: '피드백', - feedbackLabel: '계정을 삭제한 이유를 알려주시겠습니까?', - feedbackPlaceholder: '선택적', - deletePrivacyLinkTip: '당사가 귀하의 데이터를 처리하는 방법에 대한 자세한 내용은 다음을 참조하십시오.', - workspaceIcon: '작업 공간 아이콘', - editWorkspaceInfo: '작업 공간 정보 편집', - workspaceName: '작업 공간 이름', - changeEmail: { - codeLabel: '검증 코드', - codePlaceholder: '6자리 코드를 붙여넣으세요', - title: '이메일 변경', - emailLabel: '새 이메일', - verifyEmail: '현재 이메일을 확인하세요', - sendVerifyCode: '인증 코드를 보내다', - continue: '계속하다', - resendCount: '{{count}}초 후에 다시 보내기', - verifyNew: '새 이메일 확인하기', - emailPlaceholder: '새 이메일을 입력하세요', - resend: '다시 보내기', - newEmail: '새 이메일 주소를 설정하세요', - existingEmail: '이미 이 이메일을 가진 사용자가 존재합니다.', - content4: '우리는 방금 귀하에게 임시 인증 코드를 {{email}}로 보냈습니다.', - changeTo: '{{email}}로 변경', - content2: '현재 이메일은 {{email}}입니다. 이 이메일 주소로 인증 코드가 전송되었습니다.', - resendTip: '코드를 받지 못하셨나요?', - content3: '새로운 이메일을 입력하시면 인증 코드를 보내드립니다.', - content1: '계속 진행하면, 재인증을 위해 {{email}}로 인증 코드를 전송하겠습니다.', - authTip: '이메일이 변경되면, 이전 이메일에 연결된 Google 또는 GitHub 계정은 더 이상 이 계정에 로그인할 수 없습니다.', - unAvailableEmail: '이 이메일은 일시적으로 사용할 수 없습니다.', - }, - }, - members: { - team: '팀', - invite: '초대', - name: '이름', - lastActive: '최근 활동', - role: '역할', - pending: '대기 중...', - owner: '소유자', - admin: '관리자', - adminTip: '앱 빌드 및 팀 설정 관리 가능', - normal: '일반', - normalTip: '앱 사용만 가능하고 앱 빌드는 불가능', - editor: '편집자', - editorTip: '앱 빌드만 가능하고 팀 설정 관리 불가능', - inviteTeamMember: '팀 멤버 초대', - inviteTeamMemberTip: '로그인 후에 바로 팀 데이터에 액세스할 수 있습니다.', - emailNotSetup: '이메일 서버가 설정되지 않아 초대 이메일을 보낼 수 없습니다. 대신 초대 후 발급되는 초대 링크를 사용자에게 알려주세요.', - email: '이메일', - emailInvalid: '유효하지 않은 이메일 형식', - emailPlaceholder: '이메일 입력', - sendInvite: '초대 보내기', - invitedAsRole: '{{role}} 사용자로 초대되었습니다', - invitationSent: '초대가 전송되었습니다', - invitationSentTip: '초대가 전송되었으며, 그들은 Dify 에 로그인하여 당신의 팀 데이터에 액세스할 수 있습니다.', - invitationLink: '초대 링크', - failedInvitationEmails: '다음 사용자들은 성공적으로 초대되지 않았습니다', - ok: '확인', - removeFromTeam: '팀에서 제거', - removeFromTeamTip: '팀 액세스가 제거됩니다', - setAdmin: '관리자 설정', - setMember: '일반 멤버 설정', - setEditor: '편집자 설정', - disInvite: '초대 취소', - deleteMember: '멤버 삭제', - you: '(나)', - datasetOperator: '지식 관리자', - setBuilder: '빌더로 설정', - builder: '건설자', - builderTip: '자신의 앱을 구축 및 편집할 수 있습니다.', - datasetOperatorTip: '기술 자료만 관리할 수 있습니다.', - transferModal: { - codeLabel: '검증 코드', - sendVerifyCode: '인증 코드를 보내다', - verifyContent: '현재 이메일은 {{email}}입니다.', - verifyEmail: '현재 이메일을 확인하세요', - continue: '계속하다', - title: '작업 공간 소유권 이전', - resend: '다시 보내기', - transferLabel: '작업 공간 소유권을 이전하다', - transferPlaceholder: '작업 공간 구성원을 선택하세요…', - warning: '당신은 "{{workspace}}"의 소유권을 이전하려고 합니다. 이는 즉시 발효되며 되돌릴 수 없습니다.', - transfer: '작업 공간 소유권 이전', - resendCount: '{{count}}초 후에 다시 보내기', - verifyContent2: '재인증을 위해 이 이메일로 임시 인증 코드를 발송하겠습니다.', - warningTip: '당신은 관리자 회원이 될 것이고, 새로운 소유자는 완전한 제어 권한을 갖게 됩니다.', - codePlaceholder: '6자리 코드를 붙여넣으세요', - resendTip: '코드를 받지 못하셨나요?', - sendTip: '계속 진행하면, 재인증을 위해 {{email}}로 인증 코드를 전송하겠습니다.', - }, - transferOwnership: '소유권 이전', - }, - integrations: { - connected: '연결됨', - google: 'Google', - googleAccount: 'Google 계정으로 로그인', - github: 'GitHub', - githubAccount: 'GitHub 계정으로 로그인', - connect: '연결', - }, - language: { - displayLanguage: '표시 언어', - timezone: '시간대', - }, - provider: { - apiKey: 'API 키', - enterYourKey: '여기에 API 키를 입력하세요', - invalidKey: '유효하지 않은 OpenAI API 키', - validatedError: '검증 실패:', - validating: '키를 확인하는 중...', - saveFailed: 'API 키 저장 실패', - apiKeyExceedBill: '이 API KEY 에는 사용 가능한 할당량이 없습니다. 자세한 내용은', - addKey: '키 추가', - comingSoon: '곧 출시됨', - editKey: '편집', - invalidApiKey: '유효하지 않은 API 키', - azure: { - apiBase: 'API 베이스', - apiBasePlaceholder: 'Azure OpenAI 엔드포인트의 API 베이스 URL.', - apiKey: 'API 키', - apiKeyPlaceholder: '여기에 API 키를 입력하세요', - 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: '닫기', - trialQuotaTip: 'Anthropic 평가판 할당량은 2025/03/11에 만료되며 그 이후에는 더 이상 사용할 수 없습니다. 제때 활용하시기 바랍니다.', - }, - anthropic: { - using: '임베드 기능을 사용 중입니다', - enableTip: 'Anthropic 모델을 활성화하려면 먼저 OpenAI 또는 Azure OpenAI 서비스에 바인딩해야 합니다.', - notEnabled: '비활성화됨', - keyFrom: 'Anthropic 에서 API 키를 받으세요', - }, - encrypted: { - front: 'API KEY 는', - back: '기술을 사용하여 암호화 및 저장됩니다.', - }, - }, - modelProvider: { - notConfigured: '시스템 모델이 아직 완전히 설정되지 않아 일부 기능을 사용할 수 없습니다.', - systemModelSettings: '시스템 모델 설정', - systemModelSettingsLink: '시스템 모델 설정이 필요한 이유는 무엇입니까?', - selectModel: '모델 선택', - setupModelFirst: '먼저 모델을 설정하세요', - systemReasoningModel: { - key: '시스템 추론 모델', - tip: '앱 구축에 사용되는 기본 추론 모델을 설정합니다. 또한 대화 이름 생성 및 다음 질문 제안과 같은 기능도 기본 추론 모델을 사용합니다.', - }, - embeddingModel: { - key: '임베딩 모델', - tip: '지식 문서 임베딩 처리의 기본 모델을 설정합니다. 지식 가져오기 및 임포트에 모두 이 임베딩 모델을 벡터화 처리에 사용합니다. 변경하면 가져온 지식과 질문 간의 벡터 차원이 일치하지 않아 가져오기에 실패합니다. 실패를 피하려면 이 모델을 변경하지 마세요.', - required: '임베딩 모델이 필요합니다', - }, - speechToTextModel: { - key: '음성-to-텍스트 모델', - tip: '대화에서의 음성-to-텍스트 입력에 사용되는 기본 모델을 설정합니다.', - }, - ttsModel: { - key: '텍스트-to-음성 모델', - tip: '대화에서의 텍스트-to-음성 입력에 사용되는 기본 모델을 설정합니다.', - }, - rerankModel: { - key: '재랭크 모델', - tip: '재랭크 모델은 사용자 쿼리와의 의미적 일치를 기반으로 후보 문서 목록을 재배열하여 의미적 순위를 향상시킵니다.', - }, - quota: '할당량', - searchModel: '검색 모델', - noModelFound: '{{model}}에 대한 모델을 찾을 수 없습니다', - models: '모델', - showMoreModelProvider: '더 많은 모델 제공자 표시', - selector: { - tip: '이 모델은 삭제되었습니다. 다른 모델을 추가하거나 다른 모델을 선택하세요.', - emptyTip: '사용 가능한 모델이 없습니다', - emptySetting: '설정으로 이동하여 구성하세요', - rerankTip: '재랭크 모델을 설정하세요', - }, - card: { - quota: '할당량', - onTrial: '트라이얼 중', - paid: '유료', - quotaExhausted: '할당량이 다 사용되었습니다', - callTimes: '호출 횟수', - tokens: '토큰', - buyQuota: 'Buy Quota', - priorityUse: '우선 사용', - removeKey: 'API 키 제거', - tip: '지불된 할당량에 우선순위가 부여됩니다. 평가판 할당량은 유료 할당량이 소진된 후 사용됩니다.', - }, - item: { - deleteDesc: '{{modelName}}은 (는) 시스템 추론 모델로 사용 중입니다. 제거 후 일부 기능을 사용할 수 없습니다. 확인하시겠습니까?', - freeQuota: '무료 할당량', - }, - addApiKey: 'API 키 추가', - invalidApiKey: '잘못된 API 키', - encrypted: { - front: 'API 키는 다음 기술을 사용하여 암호화되어 저장됩니다', - 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: '매개변수', - apiKey: 'API 키', - defaultConfig: '기본 구성', - providerManaged: '제공자 관리', - loadBalancing: '부하 분산 Load balancing', - addConfig: '구성 추가', - apiKeyStatusNormal: 'APIKey 상태는 정상입니다.', - configLoadBalancing: 'Config 로드 밸런싱', - editConfig: '구성 편집', - loadBalancingHeadline: '로드 밸런싱', - modelHasBeenDeprecated: '이 모델은 더 이상 사용되지 않습니다', - loadBalancingDescription: '여러 자격 증명 세트로 부담을 줄입니다.', - upgradeForLoadBalancing: '로드 밸런싱을 사용하도록 계획을 업그레이드합니다.', - apiKeyRateLimit: '속도 제한에 도달했으며, {{seconds}}s 후에 사용할 수 있습니다.', - loadBalancingInfo: '기본적으로 부하 분산은 라운드 로빈 전략을 사용합니다. 속도 제한이 트리거되면 1 분의 휴지 기간이 적용됩니다.', - loadBalancingLeastKeyWarning: '로드 밸런싱을 사용하려면 최소 2 개의 키를 사용하도록 설정해야 합니다.', - providerManagedDescription: '모델 공급자가 제공하는 단일 자격 증명 집합을 사용합니다.', - installProvider: '모델 공급자 설치', - discoverMore: '더 알아보기', - emptyProviderTitle: '모델 공급자가 설정되지 않음', - configureTip: 'api-key 설정 또는 사용할 모델 추가', - emptyProviderTip: '먼저 모델 공급자를 설치하십시오.', - toBeConfigured: '구성 예정', - auth: { - apiKeyModal: { - addModel: '모델 추가', - title: 'API 키 인증 구성', - desc: '자격증명을 구성한 후에는 작업 공간 내의 모든 구성원이 애플리케이션을 조정할 때 이 모델을 사용할 수 있습니다.', - }, - addApiKey: 'API 키 추가', - apiKeys: 'API 키', - unAuthorized: '무단', - configModel: '구성 모델', - authorizationError: '권한 오류', - configLoadBalancing: '구성 로드 밸런싱', - addNewModel: '새 모델 추가하기', - specifyModelCredentialTip: '구성된 모델 자격 증명을 사용합니다.', - modelCredentials: '모델 자격 증명', - addCredential: '자격 증명을 추가하다', - authRemoved: '인증이 제거되었습니다.', - providerManaged: '제공자가 관리하는', - addModelCredential: '모델 자격 증명 추가', - specifyModelCredential: '모델 자격 증명을 명시하세요.', - providerManagedTip: '현재 구성은 제공업체에 의해 호스팅되고 있습니다.', - addModel: '모델 추가', - removeModel: '모델 제거', - manageCredentials: '자격 증명 관리', - selectModelCredential: '모델 자격 증명 선택', - modelCredential: '모델 자격 증명', - addNewModelCredential: '새 모델 자격 증명 추가', - editModelCredential: '모델 자격 증명 편집', - customModelCredentials: '사용자 지정 모델 자격 증명', - customModelCredentialsDeleteTip: '자격 증명이 사용 중이며 삭제할 수 없습니다.', - }, - parametersInvalidRemoved: '일부 매개변수가 유효하지 않아 제거되었습니다.', - installDataSourceProvider: '데이터 소스 공급자 설치', - }, - dataSource: { - add: '데이터 소스 추가하기', - connect: '연결하기', - notion: { - title: 'Notion', - description: '노션을 지식 데이터 소스로 사용하기.', - connectedWorkspace: '작업 공간에 연결됨', - addWorkspace: '작업 공간에 추가하기', - connected: '연결됨', - disconnected: '연결 안됨', - changeAuthorizedPages: '허가된 페이지 변경하기', - pagesAuthorized: '페이지가 허가됨', - sync: '동기화', - remove: '제거하기', - selector: { - pageSelected: '페이지 선택됨', - searchPages: '페이지 검색...', - noSearchResult: '검색 결과 없음', - addPages: '페이지 추가하기', - preview: '미리보기', - }, - integratedAlert: 'Notion은 내부 자격 증명을 통해 통합되므로 다시 인증할 필요가 없습니다.', - }, - website: { - inactive: '게으른', - title: '웹 사이트', - configuredCrawlers: '구성된 크롤러', - with: '와', - active: '활동적인', - description: '웹 크롤러를 사용하여 웹 사이트에서 콘텐츠를 가져옵니다.', - }, - configure: '구성', - }, - plugin: { - serpapi: { - apiKey: 'API 키', - apiKeyPlaceholder: 'API 키를 입력하세요', - keyFrom: 'SerpAPI 계정 페이지에서 SerpAPI 키를 가져오세요', - }, - }, - apiBasedExtension: { - title: 'API 기반 확장은 Dify 애플리케이션 전체에서 간편한 사용을 위한 설정을 단순화하고 집중적인 API 관리를 제공합니다.', - link: '사용자 정의 API 기반 확장을 개발하는 방법 배우기', - add: 'API 기반 확장 추가', - selector: { - title: 'API 기반 확장', - placeholder: 'API 기반 확장을 선택하세요', - manage: 'API 기반 확장 관리', - }, - modal: { - title: 'API 기반 확장 추가', - editTitle: 'API 기반 확장 편집', - name: { - title: '이름', - placeholder: '이름을 입력하세요', - }, - apiEndpoint: { - title: 'API 엔드포인트', - placeholder: 'API 엔드포인트를 입력하세요', - }, - apiKey: { - title: 'API 키', - placeholder: 'API 키를 입력하세요', - lengthError: 'API 키는 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: '관련 앱', - noRelatedApp: '연결된 앱 없음', - pipeline: '파이프라인', - }, - 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: '검색 점수:', - }, - inputPlaceholder: '봇과 대화', - thought: '생각', - thinking: '생각...', - resend: '재전송', - }, - 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: '태그 생성에 실패했습니다', - }, - errorMsg: { - urlError: 'URL 은 http:// 또는 https:// 로 시작해야 합니다.', - fieldRequired: '{{field}}는 필수입니다.', - }, - fileUploader: { - uploadFromComputer: '로컬 업로드', - pasteFileLinkInputPlaceholder: 'URL 입력...', - pasteFileLinkInvalid: '유효하지 않은 파일 링크', - uploadFromComputerReadError: '파일 읽기에 실패했습니다. 다시 시도하십시오.', - pasteFileLink: '파일 링크 붙여넣기', - fileExtensionNotSupport: '지원되지 않는 파일 확장자', - uploadFromComputerLimit: '업로드 파일은 {{size}}를 초과할 수 없습니다.', - uploadFromComputerUploadError: '파일 업로드에 실패했습니다. 다시 업로드하십시오.', - fileExtensionBlocked: '보안상의 이유로 이 파일 형식은 차단되었습니다', - uploadDisabled: '파일 업로드가 비활성화되었습니다', - }, - license: { - expiring_plural: '{{count}}일 후에 만료', - expiring: '하루 후에 만료', - unlimited: '무제한', - }, - pagination: { - perPage: '페이지당 항목 수', - }, - theme: { - theme: '테마', - light: '밝은', - dark: '어두운', - auto: '시스템', - }, - compliance: { - iso27001: 'ISO 27001:2022 인증', - soc2Type1: 'SOC 2 유형 I 보고서', - soc2Type2: 'SOC 2 유형 II 보고서', - gdpr: 'GDPR DPA', - professionalUpgradeTooltip: '팀 플랜 이상에서만 사용할 수 있습니다.', - sandboxUpgradeTooltip: '전문가 또는 팀 플랜에서만 사용할 수 있습니다.', - }, - imageInput: { - supportedFormats: 'PNG, JPG, JPEG, WEBP 및 GIF 를 지원합니다.', - browse: '브라우즈', - dropImageHere: '여기에 이미지를 드롭하거나', - }, - you: '너', - avatar: { - deleteTitle: '아바타 제거하기', - deleteDescription: '프로필 사진을 제거하시겠습니까? 귀하의 계정은 기본 초기 아바타를 사용하게 됩니다.', - }, - feedback: { - content: '피드백 내용', - title: '피드백 제공하기', - subtitle: '이 응답에서 무엇이 잘못되었는지 말씀해 주세요.', - placeholder: '문제가 무엇인지 또는 어떻게 개선할 수 있는지 설명해 주십시오...', - }, - label: { - optional: '(선택 사항)', - }, - noData: '데이터 없음', - dynamicSelect: { - error: '옵션 불러오기 실패', - noData: '사용 가능한 옵션이 없습니다', - loading: '옵션 불러오는 중...', - selected: '{{count}} 선택됨', - }, -} - -export default translation diff --git a/web/i18n/ko-KR/custom.json b/web/i18n/ko-KR/custom.json new file mode 100644 index 0000000000..1a42a65f81 --- /dev/null +++ b/web/i18n/ko-KR/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "사용자 정의", + "upgradeTip": { + "prefix": "플랜을 업그레이드하여", + "suffix": "브랜드를 사용자 정의하세요.", + "des": "계획을 업그레이드하여 브랜드를 맞춤화하세요.", + "title": "플랜을 업그레이드하세요" + }, + "webapp": { + "title": "web app 브랜드 사용자 정의", + "removeBrand": "Powered by Dify 삭제", + "changeLogo": "Powered by 브랜드 이미지 변경", + "changeLogoTip": "최소 크기 40x40px 의 SVG 또는 PNG 형식" + }, + "app": { + "title": "앱 헤더 브랜드 사용자 정의", + "changeLogoTip": "최소 크기 80x80px 의 SVG 또는 PNG 형식" + }, + "upload": "업로드", + "uploading": "업로드 중", + "uploadedFail": "이미지 업로드 실패. 다시 업로드해 주세요.", + "change": "변경", + "apply": "적용", + "restore": "기본값으로 복원", + "customize": { + "contactUs": "문의하기", + "prefix": "앱 내 브랜드 로고를 사용자 정의하려면,", + "suffix": "엔터프라이즈 버전으로 업그레이드하세요." + } +} diff --git a/web/i18n/ko-KR/custom.ts b/web/i18n/ko-KR/custom.ts deleted file mode 100644 index 9b70e7326a..0000000000 --- a/web/i18n/ko-KR/custom.ts +++ /dev/null @@ -1,32 +0,0 @@ -const translation = { - custom: '사용자 정의', - upgradeTip: { - prefix: '플랜을 업그레이드하여', - suffix: '브랜드를 사용자 정의하세요.', - des: '계획을 업그레이드하여 브랜드를 맞춤화하세요.', - title: '플랜을 업그레이드하세요', - }, - webapp: { - title: 'web app 브랜드 사용자 정의', - removeBrand: 'Powered by Dify 삭제', - changeLogo: 'Powered by 브랜드 이미지 변경', - changeLogoTip: '최소 크기 40x40px 의 SVG 또는 PNG 형식', - }, - app: { - title: '앱 헤더 브랜드 사용자 정의', - changeLogoTip: '최소 크기 80x80px 의 SVG 또는 PNG 형식', - }, - upload: '업로드', - uploading: '업로드 중', - uploadedFail: '이미지 업로드 실패. 다시 업로드해 주세요.', - change: '변경', - apply: '적용', - restore: '기본값으로 복원', - customize: { - contactUs: '문의하기', - prefix: '앱 내 브랜드 로고를 사용자 정의하려면,', - suffix: '엔터프라이즈 버전으로 업그레이드하세요.', - }, -} - -export default translation diff --git a/web/i18n/ko-KR/dataset-creation.json b/web/i18n/ko-KR/dataset-creation.json new file mode 100644 index 0000000000..e05b35cd1c --- /dev/null +++ b/web/i18n/ko-KR/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "지식" + }, + "one": "데이터 소스 선택", + "two": "텍스트 전처리 및 클리닝", + "three": "실행 및 완료" + }, + "error": { + "unavailable": "이 지식은 사용할 수 없습니다" + }, + "stepOne": { + "filePreview": "파일 미리보기", + "pagePreview": "페이지 미리보기", + "dataSourceType": { + "file": "텍스트 파일에서 가져오기", + "notion": "Notion 동기화", + "web": "웹 사이트 동기화" + }, + "uploader": { + "title": "텍스트 파일 업로드", + "button": "파일이나 폴더를 끌어서 놓기", + "buttonSingleFile": "파일을 끌어서 놓기", + "browse": "찾아보기", + "tip": "{{supportTypes}}을 (를) 지원합니다. 파일당 최대 크기는 {{size}}MB 입니다.", + "validation": { + "typeError": "지원되지 않는 파일 유형입니다", + "size": "파일 크기가 너무 큽니다. 최대 크기는 {{size}}MB 입니다", + "count": "여러 파일은 지원되지 않습니다", + "filesNumber": "일괄 업로드 제한 ({{filesNumber}}개) 에 도달했습니다." + }, + "cancel": "취소", + "change": "변경", + "failed": "업로드에 실패했습니다" + }, + "notionSyncTitle": "Notion 에 연결되지 않았습니다", + "notionSyncTip": "Notion 과 동기화하려면 먼저 Notion 에 연결해야 합니다.", + "connect": "연결하기", + "button": "다음", + "emptyDatasetCreation": "비어있는 지식 생성", + "modal": { + "title": "비어있는 지식 생성", + "tip": "비어있는 지식에는 문서가 포함되지 않으며 언제든지 문서를 업로드할 수 있습니다.", + "input": "지식 이름", + "placeholder": "입력하세요", + "nameNotEmpty": "이름은 비워둘 수 없습니다", + "nameLengthInvalid": "이름은 1~40 자여야 합니다", + "cancelButton": "취소", + "confirmButton": "생성", + "failed": "생성에 실패했습니다" + }, + "website": { + "limit": "한계", + "options": "옵션", + "firecrawlDoc": "Firecrawl 문서", + "selectAll": "모두 선택", + "maxDepth": "최대 수심", + "includeOnlyPaths": "경로만 포함", + "excludePaths": "경로 제외", + "preview": "미리 보기", + "run": "달리다", + "fireCrawlNotConfigured": "Firecrawl 이 구성되지 않았습니다.", + "firecrawlTitle": "Firecrawl 로 🔥웹 콘텐츠 추출", + "configure": "구성", + "resetAll": "모두 재설정", + "crawlSubPage": "하위 페이지 크롤링", + "exceptionErrorTitle": "Firecrawl 작업을 실행하는 동안 예외가 발생했습니다.", + "scrapTimeInfo": "{{time}}s 내에 총 {{total}} 페이지를 스크랩했습니다.", + "unknownError": "알 수 없는 오류", + "totalPageScraped": "스크랩한 총 페이지 수:", + "fireCrawlNotConfiguredDescription": "API 키로 Firecrawl 을 구성하여 사용합니다.", + "extractOnlyMainContent": "기본 콘텐츠만 추출합니다 (머리글, 탐색, 바닥글 등 없음).", + "maxDepthTooltip": "입력한 URL 을 기준으로 크롤링할 최대 수준입니다. 깊이 0 은 입력 된 url 의 페이지를 긁어 내고, 깊이 1 은 url 과 enteredURL + one / 이후의 모든 것을 긁어 모으는 식입니다.", + "chooseProvider": "제공자 선택", + "jinaReaderDocLink": "https://jina.ai/reader", + "useSitemap": "사이트맵 사용", + "jinaReaderNotConfiguredDescription": "액세스를 위해 무료 API 키를 입력하여 Jina Reader 를 설정합니다.", + "jinaReaderDoc": "Jina Reader 에 대해 자세히 알아보기", + "jinaReaderTitle": "전체 사이트를 Markdown 으로 변환", + "jinaReaderNotConfigured": "Jina Reader 가 구성되지 않았습니다.", + "useSitemapTooltip": "사이트맵을 따라 사이트를 크롤링합니다. 그렇지 않은 경우 Jina Reader 는 페이지 관련성에 따라 반복적으로 크롤링하여 더 적지만 더 높은 품질의 페이지를 생성합니다.", + "watercrawlDoc": "워터크롤 문서", + "waterCrawlNotConfiguredDescription": "API 키로 Watercrawl 을 구성하여 사용하십시오.", + "watercrawlTitle": "Watercrawl 로 웹 콘텐츠 추출하기", + "configureFirecrawl": "파이어크롤 구성하기", + "configureJinaReader": "지나 리더 설정하기", + "waterCrawlNotConfigured": "Watercrawl 이 설정되어 있지 않습니다.", + "configureWatercrawl": "워터크롤 구성하기", + "running": "달리기" + }, + "cancel": "취소" + }, + "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": "사용 언어", + "estimateCost": "예상 비용", + "estimateSegment": "예상 청크 수", + "segmentCount": "청크", + "calculating": "계산 중...", + "fileSource": "문서 전처리", + "notionSource": "페이지 전처리", + "other": "기타", + "fileUnit": "파일", + "notionUnit": "페이지", + "previousStep": "이전 단계", + "nextStep": "저장하고 처리", + "save": "저장하고 처리", + "cancel": "취소", + "sideTipTitle": "청크와 전처리가 필요한 이유", + "sideTipP1": "텍스트 데이터를 처리할 때 청크와 클리닝은 두 가지 중요한 전처리 단계입니다.", + "sideTipP2": "세그멘테이션은 긴 텍스트를 단락으로 분할하여 모델이 이해하기 쉽게 합니다. 이로 인해 모델 결과의 품질과 관련성이 향상됩니다.", + "sideTipP3": "클리닝은 불필요한 문자 및 형식을 제거하여 지식을 더 깔끔하고 분석 가능한 것으로 만듭니다.", + "sideTipP4": "적절한 청크와 클리닝은 모델의 성능을 향상시키고 정확하고 가치 있는 결과를 제공합니다.", + "previewTitle": "미리보기", + "previewTitleButton": "미리보기", + "previewButton": "질문 - 답변 형식으로 전환", + "previewSwitchTipStart": "현재 청크 미리보기는 텍스트 형식입니다. 질문과 답변 형식 미리보기로 전환하면", + "previewSwitchTipEnd": " 추가 토큰이 소비됩니다", + "characters": "문자", + "indexSettingTip": "인덱스 방식을 변경하려면,", + "retrievalSettingTip": "인덱스 방식을 변경하려면,", + "datasetSettingLink": "지식 설정", + "webpageUnit": "페이지", + "websiteSource": "웹 사이트 전처리", + "separatorTip": "구분 기호는 텍스트를 구분하는 데 사용되는 문자입니다. \\n\\n 및 \\n은 단락과 줄을 구분하는 데 일반적으로 사용되는 구분 기호입니다. 쉼표 (\\n\\n,\\n) 와 함께 사용하면 최대 청크 길이를 초과할 경우 단락이 줄로 분할됩니다. 직접 정의한 특수 구분 기호 (예: ***) 를 사용할 수도 있습니다.", + "maxLengthCheck": "최대 청크 길이는 {{limit}} 미만이어야 합니다.", + "childChunkForRetrieval": "검색을 위한 자식 청크", + "qaSwitchHighQualityTipContent": "현재 고품질 인덱스 방법만 Q&A 형식 청크를 지원합니다. 고화질 모드로 전환하시겠습니까?", + "previewChunkTip": "왼쪽의 'Preview Chunk' 버튼을 클릭하여 프리뷰를 로드합니다", + "general": "일반", + "fullDoc": "전체 문서", + "previewChunk": "프리뷰 청크 (Preview Chunk)", + "parentChunkForContext": "컨텍스트에 대한 Parent-chunk", + "parentChildDelimiterTip": "구분 기호는 텍스트를 구분하는 데 사용되는 문자입니다. \\n\\n은 원본 문서를 큰 부모 청크로 분할하는 데 권장됩니다. 직접 정의한 특수 구분 기호를 사용할 수도 있습니다.", + "paragraph": "단락", + "parentChild": "부모 - 자식", + "useQALanguage": "Q&A 형식을 사용하는 청크", + "highQualityTip": "고품질 모드에서 삽입을 마치면 경제적 모드로 되돌릴 수 없습니다.", + "notAvailableForQA": "Q&A 인덱스에는 사용할 수 없습니다.", + "qaSwitchHighQualityTipTitle": "Q&A 형식에는 고품질 인덱싱 방법이 필요합니다.", + "notAvailableForParentChild": "부모 - 자식 인덱스에는 사용할 수 없습니다.", + "previewChunkCount": "{{개수}} 추정된 청크", + "parentChildTip": "부모 - 자식 모드를 사용할 때 자식 청크는 검색에 사용되고 부모 청크는 컨텍스트로 회수에 사용됩니다.", + "generalTip": "일반적인 텍스트 청크 모드에서는 검색된 청크와 회수된 청크가 동일합니다.", + "fullDocTip": "전체 문서가 상위 청크로 사용되며 직접 검색됩니다. 성능상의 이유로 10000 토큰을 초과하는 텍스트는 자동으로 잘립니다.", + "parentChildChunkDelimiterTip": "구분 기호는 텍스트를 구분하는 데 사용되는 문자입니다. \\n 은 부모 청크를 작은 자식 청크로 분할하는 데 권장됩니다. 직접 정의한 특수 구분 기호를 사용할 수도 있습니다.", + "switch": "스위치", + "paragraphTip": "이 모드는 구분 기호와 최대 청크 길이에 따라 텍스트를 단락으로 분할하며, 분할된 텍스트를 검색을 위한 부모 청크로 사용합니다.", + "qaTip": "구조화된 Q&A 데이터를 사용하는 경우 질문과 답변을 연결하는 문서를 만들 수 있습니다. 이러한 문서는 질문 부분을 기반으로 인덱싱되므로 시스템이 쿼리 유사성을 기반으로 관련 답변을 검색할 수 있습니다." + }, + "stepThree": { + "creationTitle": "🎉 지식이 생성되었습니다", + "creationContent": "지식 이름이 자동으로 설정되었지만 언제든지 변경할 수 있습니다", + "label": "지식 이름", + "additionTitle": "🎉 문서가 업로드되었습니다", + "additionP1": "문서가 지식에 업로드되었습니다", + "additionP2": "지식의 문서 목록에서 찾을 수 있습니다.", + "stop": "처리 중지", + "resume": "처리 재개", + "navTo": "문서로 이동", + "sideTipTitle": "다음 단계는 무엇인가요", + "sideTipContent": "문서 인덱싱이 완료되면 지식을 응용 프로그램 컨텍스트로 통합할 수 있습니다. 프롬프트 오케스트레이션 페이지에서 컨텍스트 설정을 찾을 수 있습니다. 또한 독립된 ChatGPT 인덱스 플러그인으로 출시할 수도 있습니다.", + "modelTitle": "임베딩을 중지해도 괜찮습니까?", + "modelContent": "나중에 처리를 다시 시작해야 할 경우, 중단한 위치에서 계속합니다.", + "modelButtonConfirm": "확인", + "modelButtonCancel": "취소" + }, + "firecrawl": { + "getApiKeyLinkText": "firecrawl.dev 에서 API 키 가져오기", + "apiKeyPlaceholder": "firecrawl.dev 의 API 키", + "configFirecrawl": "Firecrawl 구성 🔥" + }, + "jinaReader": { + "apiKeyPlaceholder": "jina.ai 의 API 키", + "getApiKeyLinkText": "jina.ai 에서 무료 API 키 받기", + "configJinaReader": "Jina Reader 구성" + }, + "otherDataSource": { + "learnMore": "더 알아보세요", + "title": "다른 데이터 소스에 연결하시겠습니까?", + "description": "현재 Dify 의 기술 자료에는 제한된 데이터 소스만 있습니다. Dify 기술 자료에 데이터 소스를 제공하는 것은 모든 사용자를 위해 플랫폼의 유연성과 기능을 향상시키는 데 도움이 되는 환상적인 방법입니다. 기여 가이드를 통해 쉽게 시작할 수 있습니다. 자세한 내용은 아래 링크를 클릭하십시오." + }, + "watercrawl": { + "getApiKeyLinkText": "watercrawl.dev 에서 API 키를 얻으세요.", + "configWatercrawl": "워터크롤 구성하기", + "apiKeyPlaceholder": "watercrawl.dev 의 API 키" + } +} diff --git a/web/i18n/ko-KR/dataset-creation.ts b/web/i18n/ko-KR/dataset-creation.ts deleted file mode 100644 index b94841f269..0000000000 --- a/web/i18n/ko-KR/dataset-creation.ts +++ /dev/null @@ -1,218 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: '지식', - }, - one: '데이터 소스 선택', - two: '텍스트 전처리 및 클리닝', - three: '실행 및 완료', - }, - error: { - unavailable: '이 지식은 사용할 수 없습니다', - }, - stepOne: { - filePreview: '파일 미리보기', - pagePreview: '페이지 미리보기', - dataSourceType: { - file: '텍스트 파일에서 가져오기', - notion: 'Notion 동기화', - web: '웹 사이트 동기화', - }, - uploader: { - title: '텍스트 파일 업로드', - button: '파일이나 폴더를 끌어서 놓기', - buttonSingleFile: '파일을 끌어서 놓기', - browse: '찾아보기', - tip: '{{supportTypes}}을 (를) 지원합니다. 파일당 최대 크기는 {{size}}MB 입니다.', - validation: { - typeError: '지원되지 않는 파일 유형입니다', - size: '파일 크기가 너무 큽니다. 최대 크기는 {{size}}MB 입니다', - count: '여러 파일은 지원되지 않습니다', - filesNumber: '일괄 업로드 제한 ({{filesNumber}}개) 에 도달했습니다.', - }, - cancel: '취소', - change: '변경', - failed: '업로드에 실패했습니다', - }, - notionSyncTitle: 'Notion 에 연결되지 않았습니다', - notionSyncTip: 'Notion 과 동기화하려면 먼저 Notion 에 연결해야 합니다.', - connect: '연결하기', - button: '다음', - emptyDatasetCreation: '비어있는 지식 생성', - modal: { - title: '비어있는 지식 생성', - tip: '비어있는 지식에는 문서가 포함되지 않으며 언제든지 문서를 업로드할 수 있습니다.', - input: '지식 이름', - placeholder: '입력하세요', - nameNotEmpty: '이름은 비워둘 수 없습니다', - nameLengthInvalid: '이름은 1~40 자여야 합니다', - cancelButton: '취소', - confirmButton: '생성', - failed: '생성에 실패했습니다', - }, - website: { - limit: '한계', - options: '옵션', - firecrawlDoc: 'Firecrawl 문서', - selectAll: '모두 선택', - maxDepth: '최대 수심', - includeOnlyPaths: '경로만 포함', - excludePaths: '경로 제외', - preview: '미리 보기', - run: '달리다', - fireCrawlNotConfigured: 'Firecrawl 이 구성되지 않았습니다.', - firecrawlTitle: 'Firecrawl 로 🔥웹 콘텐츠 추출', - configure: '구성', - resetAll: '모두 재설정', - crawlSubPage: '하위 페이지 크롤링', - exceptionErrorTitle: 'Firecrawl 작업을 실행하는 동안 예외가 발생했습니다.', - scrapTimeInfo: '{{time}}s 내에 총 {{total}} 페이지를 스크랩했습니다.', - unknownError: '알 수 없는 오류', - totalPageScraped: '스크랩한 총 페이지 수:', - fireCrawlNotConfiguredDescription: 'API 키로 Firecrawl 을 구성하여 사용합니다.', - extractOnlyMainContent: '기본 콘텐츠만 추출합니다 (머리글, 탐색, 바닥글 등 없음).', - maxDepthTooltip: '입력한 URL 을 기준으로 크롤링할 최대 수준입니다. 깊이 0 은 입력 된 url 의 페이지를 긁어 내고, 깊이 1 은 url 과 enteredURL + one / 이후의 모든 것을 긁어 모으는 식입니다.', - chooseProvider: '제공자 선택', - jinaReaderDocLink: 'https://jina.ai/reader', - useSitemap: '사이트맵 사용', - jinaReaderNotConfiguredDescription: '액세스를 위해 무료 API 키를 입력하여 Jina Reader 를 설정합니다.', - jinaReaderDoc: 'Jina Reader 에 대해 자세히 알아보기', - jinaReaderTitle: '전체 사이트를 Markdown 으로 변환', - jinaReaderNotConfigured: 'Jina Reader 가 구성되지 않았습니다.', - useSitemapTooltip: '사이트맵을 따라 사이트를 크롤링합니다. 그렇지 않은 경우 Jina Reader 는 페이지 관련성에 따라 반복적으로 크롤링하여 더 적지만 더 높은 품질의 페이지를 생성합니다.', - watercrawlDoc: '워터크롤 문서', - waterCrawlNotConfiguredDescription: 'API 키로 Watercrawl 을 구성하여 사용하십시오.', - watercrawlTitle: 'Watercrawl 로 웹 콘텐츠 추출하기', - configureFirecrawl: '파이어크롤 구성하기', - configureJinaReader: '지나 리더 설정하기', - waterCrawlNotConfigured: 'Watercrawl 이 설정되어 있지 않습니다.', - configureWatercrawl: '워터크롤 구성하기', - running: '달리기', - }, - cancel: '취소', - }, - 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: '사용 언어', - estimateCost: '예상 비용', - estimateSegment: '예상 청크 수', - segmentCount: '청크', - calculating: '계산 중...', - fileSource: '문서 전처리', - notionSource: '페이지 전처리', - other: '기타', - fileUnit: '파일', - notionUnit: '페이지', - previousStep: '이전 단계', - nextStep: '저장하고 처리', - save: '저장하고 처리', - cancel: '취소', - sideTipTitle: '청크와 전처리가 필요한 이유', - sideTipP1: '텍스트 데이터를 처리할 때 청크와 클리닝은 두 가지 중요한 전처리 단계입니다.', - sideTipP2: '세그멘테이션은 긴 텍스트를 단락으로 분할하여 모델이 이해하기 쉽게 합니다. 이로 인해 모델 결과의 품질과 관련성이 향상됩니다.', - sideTipP3: '클리닝은 불필요한 문자 및 형식을 제거하여 지식을 더 깔끔하고 분석 가능한 것으로 만듭니다.', - sideTipP4: '적절한 청크와 클리닝은 모델의 성능을 향상시키고 정확하고 가치 있는 결과를 제공합니다.', - previewTitle: '미리보기', - previewTitleButton: '미리보기', - previewButton: '질문 - 답변 형식으로 전환', - previewSwitchTipStart: '현재 청크 미리보기는 텍스트 형식입니다. 질문과 답변 형식 미리보기로 전환하면', - previewSwitchTipEnd: ' 추가 토큰이 소비됩니다', - characters: '문자', - indexSettingTip: '인덱스 방식을 변경하려면,', - retrievalSettingTip: '인덱스 방식을 변경하려면,', - datasetSettingLink: '지식 설정', - webpageUnit: '페이지', - websiteSource: '웹 사이트 전처리', - separatorTip: '구분 기호는 텍스트를 구분하는 데 사용되는 문자입니다. \\n\\n 및 \\n은 단락과 줄을 구분하는 데 일반적으로 사용되는 구분 기호입니다. 쉼표 (\\n\\n,\\n) 와 함께 사용하면 최대 청크 길이를 초과할 경우 단락이 줄로 분할됩니다. 직접 정의한 특수 구분 기호 (예: ***) 를 사용할 수도 있습니다.', - maxLengthCheck: '최대 청크 길이는 {{limit}} 미만이어야 합니다.', - childChunkForRetrieval: '검색을 위한 자식 청크', - qaSwitchHighQualityTipContent: '현재 고품질 인덱스 방법만 Q&A 형식 청크를 지원합니다. 고화질 모드로 전환하시겠습니까?', - previewChunkTip: '왼쪽의 \'Preview Chunk\' 버튼을 클릭하여 프리뷰를 로드합니다', - general: '일반', - fullDoc: '전체 문서', - previewChunk: '프리뷰 청크 (Preview Chunk)', - parentChunkForContext: '컨텍스트에 대한 Parent-chunk', - parentChildDelimiterTip: '구분 기호는 텍스트를 구분하는 데 사용되는 문자입니다. \\n\\n은 원본 문서를 큰 부모 청크로 분할하는 데 권장됩니다. 직접 정의한 특수 구분 기호를 사용할 수도 있습니다.', - paragraph: '단락', - parentChild: '부모 - 자식', - useQALanguage: 'Q&A 형식을 사용하는 청크', - highQualityTip: '고품질 모드에서 삽입을 마치면 경제적 모드로 되돌릴 수 없습니다.', - notAvailableForQA: 'Q&A 인덱스에는 사용할 수 없습니다.', - qaSwitchHighQualityTipTitle: 'Q&A 형식에는 고품질 인덱싱 방법이 필요합니다.', - notAvailableForParentChild: '부모 - 자식 인덱스에는 사용할 수 없습니다.', - previewChunkCount: '{{개수}} 추정된 청크', - parentChildTip: '부모 - 자식 모드를 사용할 때 자식 청크는 검색에 사용되고 부모 청크는 컨텍스트로 회수에 사용됩니다.', - generalTip: '일반적인 텍스트 청크 모드에서는 검색된 청크와 회수된 청크가 동일합니다.', - fullDocTip: '전체 문서가 상위 청크로 사용되며 직접 검색됩니다. 성능상의 이유로 10000 토큰을 초과하는 텍스트는 자동으로 잘립니다.', - parentChildChunkDelimiterTip: '구분 기호는 텍스트를 구분하는 데 사용되는 문자입니다. \\n 은 부모 청크를 작은 자식 청크로 분할하는 데 권장됩니다. 직접 정의한 특수 구분 기호를 사용할 수도 있습니다.', - switch: '스위치', - paragraphTip: '이 모드는 구분 기호와 최대 청크 길이에 따라 텍스트를 단락으로 분할하며, 분할된 텍스트를 검색을 위한 부모 청크로 사용합니다.', - qaTip: '구조화된 Q&A 데이터를 사용하는 경우 질문과 답변을 연결하는 문서를 만들 수 있습니다. 이러한 문서는 질문 부분을 기반으로 인덱싱되므로 시스템이 쿼리 유사성을 기반으로 관련 답변을 검색할 수 있습니다.', - }, - stepThree: { - creationTitle: '🎉 지식이 생성되었습니다', - creationContent: '지식 이름이 자동으로 설정되었지만 언제든지 변경할 수 있습니다', - label: '지식 이름', - additionTitle: '🎉 문서가 업로드되었습니다', - additionP1: '문서가 지식에 업로드되었습니다', - additionP2: '지식의 문서 목록에서 찾을 수 있습니다.', - stop: '처리 중지', - resume: '처리 재개', - navTo: '문서로 이동', - sideTipTitle: '다음 단계는 무엇인가요', - sideTipContent: - '문서 인덱싱이 완료되면 지식을 응용 프로그램 컨텍스트로 통합할 수 있습니다. 프롬프트 오케스트레이션 페이지에서 컨텍스트 설정을 찾을 수 있습니다. 또한 독립된 ChatGPT 인덱스 플러그인으로 출시할 수도 있습니다.', - modelTitle: '임베딩을 중지해도 괜찮습니까?', - modelContent: '나중에 처리를 다시 시작해야 할 경우, 중단한 위치에서 계속합니다.', - modelButtonConfirm: '확인', - modelButtonCancel: '취소', - }, - firecrawl: { - getApiKeyLinkText: 'firecrawl.dev 에서 API 키 가져오기', - apiKeyPlaceholder: 'firecrawl.dev 의 API 키', - configFirecrawl: 'Firecrawl 구성 🔥', - }, - jinaReader: { - apiKeyPlaceholder: 'jina.ai 의 API 키', - getApiKeyLinkText: 'jina.ai 에서 무료 API 키 받기', - configJinaReader: 'Jina Reader 구성', - }, - otherDataSource: { - learnMore: '더 알아보세요', - title: '다른 데이터 소스에 연결하시겠습니까?', - description: '현재 Dify 의 기술 자료에는 제한된 데이터 소스만 있습니다. Dify 기술 자료에 데이터 소스를 제공하는 것은 모든 사용자를 위해 플랫폼의 유연성과 기능을 향상시키는 데 도움이 되는 환상적인 방법입니다. 기여 가이드를 통해 쉽게 시작할 수 있습니다. 자세한 내용은 아래 링크를 클릭하십시오.', - }, - watercrawl: { - getApiKeyLinkText: 'watercrawl.dev 에서 API 키를 얻으세요.', - configWatercrawl: '워터크롤 구성하기', - apiKeyPlaceholder: 'watercrawl.dev 의 API 키', - }, -} - -export default translation diff --git a/web/i18n/ko-KR/dataset-documents.json b/web/i18n/ko-KR/dataset-documents.json new file mode 100644 index 0000000000..d41ac4c02a --- /dev/null +++ b/web/i18n/ko-KR/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "문서", + "desc": "지식의 모든 파일이 여기에 표시되며, 전체 지식이 Dify 의 인용문이나 챗 플러그인을 통해 링크되거나 색인화될 수 있습니다.", + "addFile": "파일 추가", + "addPages": "페이지 추가", + "table": { + "header": { + "fileName": "파일명", + "words": "단어 수", + "hitCount": "검색 횟수", + "uploadTime": "업로드 시간", + "status": "상태", + "action": "동작", + "chunkingMode": "청크 모드" + }, + "name": "이름", + "rename": "이름 바꾸기" + }, + "action": { + "uploadFile": "새 파일 업로드", + "settings": "세그먼트 설정", + "addButton": "청크 추가", + "add": "청크 추가", + "batchAdd": "일괄 추가", + "archive": "아카이브", + "unarchive": "아카이브 해제", + "delete": "삭제", + "enableWarning": "아카이브된 파일은 활성화할 수 없습니다.", + "sync": "동기화", + "resume": "재개", + "pause": "일시 중지" + }, + "index": { + "enable": "활성화", + "disable": "비활성화", + "all": "모두", + "enableTip": "파일을 색인화할 수 있습니다.", + "disableTip": "파일을 색인화할 수 없습니다." + }, + "status": { + "queuing": "대기 중", + "indexing": "색인화 중", + "paused": "일시 중지됨", + "error": "오류", + "available": "사용 가능", + "enabled": "활성화됨", + "disabled": "비활성화됨", + "archived": "아카이브됨" + }, + "empty": { + "title": "아직 문서가 없습니다", + "upload": { + "tip": "파일을 업로드하거나 웹 사이트에서 동기화하거나 Notion 이나 GitHub 같은 웹 앱에서 동기화할 수 있습니다." + }, + "sync": { + "tip": "Dify 는 정기적으로 Notion 에서 파일을 다운로드하고 처리합니다." + } + }, + "delete": { + "title": "정말 삭제하시겠습니까?", + "content": "나중에 처리를 계속해야 하는 경우 중단한 곳에서 계속합니다." + }, + "batchModal": { + "title": "일괄 추가", + "csvUploadTitle": "CSV 파일을 여기로 드래그 앤 드롭하거나", + "browse": "찾아보기", + "tip": "CSV 파일은 다음 구조를 따라야 합니다:", + "question": "질문", + "answer": "답변", + "contentTitle": "청크 내용", + "content": "내용", + "template": "여기서 템플릿 다운로드", + "cancel": "취소", + "run": "일괄 실행", + "runError": "일괄 실행에 실패했습니다", + "processing": "일괄 처리 중", + "completed": "가져오기 완료", + "error": "가져오기 오류", + "ok": "확인" + }, + "addUrl": "URL 추가", + "learnMore": "더 알아보세요", + "sort": { + "uploadTime": "업로드 시간", + "hitCount": "검색 횟수" + } + }, + "metadata": { + "title": "메타데이터", + "desc": "문서 메타데이터에 레이블을 붙여 AI 가 신속하게 접근할 수 있고 사용자에게 출처가 공개됩니다.", + "dateTimeFormat": "YYYY 년 M 월 D 일 hh:mm A", + "docTypeSelectTitle": "문서 유형을 선택하세요", + "docTypeChangeTitle": "문서 유형 변경", + "docTypeSelectWarning": "문서 유형을 변경하면 현재 입력된 메타데이터가 유지되지 않습니다.", + "firstMetaAction": "시작하기", + "placeholder": { + "add": "추가", + "select": "선택" + }, + "source": { + "upload_file": "파일 업로드", + "notion": "Notion 에서 동기화", + "github": "GitHub 에서 동기화", + "website_crawl": "웹사이트 크롤링", + "local_file": "로컬 파일", + "online_document": "온라인 문서" + }, + "type": { + "book": "도서", + "webPage": "웹 페이지", + "paper": "논문", + "socialMediaPost": "소셜 미디어 게시물", + "personalDocument": "개인 문서", + "businessDocument": "비즈니스 문서", + "IMChat": "IM 채팅", + "wikipediaEntry": "위키피디아 항목", + "notion": "Notion 에서 동기화", + "github": "GitHub 에서 동기화", + "technicalParameters": "기술적 매개변수" + }, + "field": { + "processRule": { + "processDoc": "문서 처리", + "segmentRule": "청크 규칙", + "segmentLength": "청크 길이", + "processClean": "텍스트 전처리" + }, + "book": { + "title": "제목", + "language": "언어", + "author": "저자", + "publisher": "출판사", + "publicationDate": "출판일", + "ISBN": "ISBN", + "category": "카테고리" + }, + "webPage": { + "title": "제목", + "url": "URL", + "language": "언어", + "authorPublisher": "저자/출판사", + "publishDate": "공개일", + "topicKeywords": "주제/키워드", + "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": "임베딩이 완료된 후에 세그먼트 미리보기를 사용할 수 있습니다", + "childMaxTokens": "아이", + "parentMaxTokens": "부모", + "pause": "일시 중지", + "hierarchical": "부모 - 자식", + "waiting": "임베딩 대기 중..." + }, + "segment": { + "paragraphs": "단락", + "keywords": "키워드", + "addKeyWord": "키워드 추가", + "keywordError": "키워드 최대 길이는 20 자입니다", + "hitCount": "검색 횟수", + "vectorHash": "벡터 해시: ", + "questionPlaceholder": "질문을 입력하세요", + "questionEmpty": "질문을 비워둘 수 없습니다", + "answerPlaceholder": "답변을 입력하세요", + "answerEmpty": "답변을 비워둘 수 없습니다", + "contentPlaceholder": "내용을 입력하세요", + "contentEmpty": "내용을 비워둘 수 없습니다", + "newTextSegment": "새로운 텍스트 세그먼트", + "newQaSegment": "새로운 Q&A 세그먼트", + "delete": "이 청크를 삭제하시겠습니까?", + "parentChunks_one": "부모 청크 (PARENT CHUNK)", + "newChunk": "새 청크", + "addChildChunk": "자손 청크 추가 (Add Child Chunk)", + "editChildChunk": "자손 청크 편집 (Edit Child Chunk)", + "chunkDetail": "청크 디테일 (Chunk Detail)", + "editChunk": "청크 편집 (Edit Chunk)", + "regeneratingTitle": "자식 청크 재생성", + "newChildChunk": "새 자손 청크 (New Child Chunk)", + "childChunkAdded": "자식 청크 1 개 추가됨", + "chunk": "덩어리", + "searchResults_zero": "결과", + "empty": "청크를 찾을 수 없습니다.", + "editParentChunk": "부모 청크 편집 (Edit Parent Chunk)", + "chunks_one": "덩어리", + "regenerationSuccessMessage": "이 창을 닫을 수 있습니다.", + "childChunks_one": "자식 청크 (CHILD CHUNK)", + "regenerationSuccessTitle": "재생이 완료되었습니다.", + "editedAt": "편집 위치", + "dateTimeFormat": "MM/DD/YYYY h:mm", + "addAnother": "다른 항목 추가", + "chunkAdded": "청크 1 개 추가됨", + "searchResults_one": "결과", + "searchResults_other": "결과", + "regenerationConfirmMessage": "자식 청크를 다시 생성하면 편집된 청크와 새로 추가된 청크를 포함하여 현재 자식 청크를 덮어씁니다. 재생성은 취소할 수 없습니다.", + "regenerationConfirmTitle": "자식 청크를 다시 생성하시겠습니까?", + "clearFilter": "필터 지우기", + "characters_one": "문자", + "parentChunk": "부모 - 청크", + "expandChunks": "청크 확장", + "collapseChunks": "청크 축소", + "parentChunks_other": "부모 청크 (PARENT CHUNKS)", + "childChunk": "자식 청크", + "childChunks_other": "자식 청크", + "chunks_other": "청크", + "edited": "편집", + "addChunk": "청크 추가 (Add Chunk)", + "characters_other": "문자", + "regeneratingMessage": "시간이 걸릴 수 있으니 잠시만 기다려 주십시오...", + "keywordDuplicate": "키워드가 이미 존재합니다.", + "keywordEmpty": "키워드는 비워둘 수 없습니다.", + "allFilesUploaded": "저장하기 전에 모든 파일을 업로드해야 합니다" + } +} diff --git a/web/i18n/ko-KR/dataset-documents.ts b/web/i18n/ko-KR/dataset-documents.ts deleted file mode 100644 index 9cfa7ffb4a..0000000000 --- a/web/i18n/ko-KR/dataset-documents.ts +++ /dev/null @@ -1,407 +0,0 @@ -const translation = { - list: { - title: '문서', - desc: '지식의 모든 파일이 여기에 표시되며, 전체 지식이 Dify 의 인용문이나 챗 플러그인을 통해 링크되거나 색인화될 수 있습니다.', - addFile: '파일 추가', - addPages: '페이지 추가', - table: { - header: { - fileName: '파일명', - words: '단어 수', - hitCount: '검색 횟수', - uploadTime: '업로드 시간', - status: '상태', - action: '동작', - chunkingMode: '청크 모드', - }, - name: '이름', - rename: '이름 바꾸기', - }, - action: { - uploadFile: '새 파일 업로드', - settings: '세그먼트 설정', - addButton: '청크 추가', - add: '청크 추가', - batchAdd: '일괄 추가', - archive: '아카이브', - unarchive: '아카이브 해제', - delete: '삭제', - enableWarning: '아카이브된 파일은 활성화할 수 없습니다.', - sync: '동기화', - resume: '재개', - pause: '일시 중지', - }, - index: { - enable: '활성화', - disable: '비활성화', - all: '모두', - enableTip: '파일을 색인화할 수 있습니다.', - disableTip: '파일을 색인화할 수 없습니다.', - }, - status: { - queuing: '대기 중', - indexing: '색인화 중', - paused: '일시 중지됨', - error: '오류', - available: '사용 가능', - enabled: '활성화됨', - disabled: '비활성화됨', - archived: '아카이브됨', - }, - empty: { - title: '아직 문서가 없습니다', - upload: { - tip: '파일을 업로드하거나 웹 사이트에서 동기화하거나 Notion 이나 GitHub 같은 웹 앱에서 동기화할 수 있습니다.', - }, - sync: { - tip: 'Dify 는 정기적으로 Notion 에서 파일을 다운로드하고 처리합니다.', - }, - }, - delete: { - title: '정말 삭제하시겠습니까?', - content: '나중에 처리를 계속해야 하는 경우 중단한 곳에서 계속합니다.', - }, - batchModal: { - title: '일괄 추가', - csvUploadTitle: 'CSV 파일을 여기로 드래그 앤 드롭하거나', - browse: '찾아보기', - tip: 'CSV 파일은 다음 구조를 따라야 합니다:', - question: '질문', - answer: '답변', - contentTitle: '청크 내용', - content: '내용', - template: '여기서 템플릿 다운로드', - cancel: '취소', - run: '일괄 실행', - runError: '일괄 실행에 실패했습니다', - processing: '일괄 처리 중', - completed: '가져오기 완료', - error: '가져오기 오류', - ok: '확인', - }, - addUrl: 'URL 추가', - learnMore: '더 알아보세요', - sort: { - uploadTime: '업로드 시간', - hitCount: '검색 횟수', - }, - }, - metadata: { - title: '메타데이터', - desc: '문서 메타데이터에 레이블을 붙여 AI 가 신속하게 접근할 수 있고 사용자에게 출처가 공개됩니다.', - dateTimeFormat: 'YYYY 년 M 월 D 일 hh:mm A', - docTypeSelectTitle: '문서 유형을 선택하세요', - docTypeChangeTitle: '문서 유형 변경', - docTypeSelectWarning: '문서 유형을 변경하면 현재 입력된 메타데이터가 유지되지 않습니다.', - firstMetaAction: '시작하기', - placeholder: { - add: '추가', - select: '선택', - }, - source: { - upload_file: '파일 업로드', - notion: 'Notion 에서 동기화', - github: 'GitHub 에서 동기화', - website_crawl: '웹사이트 크롤링', - local_file: '로컬 파일', - online_document: '온라인 문서', - }, - type: { - book: '도서', - webPage: '웹 페이지', - paper: '논문', - socialMediaPost: '소셜 미디어 게시물', - personalDocument: '개인 문서', - businessDocument: '비즈니스 문서', - IMChat: 'IM 채팅', - wikipediaEntry: '위키피디아 항목', - notion: 'Notion 에서 동기화', - github: 'GitHub 에서 동기화', - technicalParameters: '기술적 매개변수', - }, - field: { - processRule: { - processDoc: '문서 처리', - segmentRule: '청크 규칙', - segmentLength: '청크 길이', - processClean: '텍스트 전처리', - }, - book: { - title: '제목', - language: '언어', - author: '저자', - publisher: '출판사', - publicationDate: '출판일', - ISBN: 'ISBN', - category: '카테고리', - }, - webPage: { - title: '제목', - url: 'URL', - language: '언어', - authorPublisher: '저자/출판사', - publishDate: '공개일', - topicKeywords: '주제/키워드', - 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: '임베딩이 완료된 후에 세그먼트 미리보기를 사용할 수 있습니다', - childMaxTokens: '아이', - parentMaxTokens: '부모', - pause: '일시 중지', - hierarchical: '부모 - 자식', - waiting: '임베딩 대기 중...', - }, - segment: { - paragraphs: '단락', - keywords: '키워드', - addKeyWord: '키워드 추가', - keywordError: '키워드 최대 길이는 20 자입니다', - hitCount: '검색 횟수', - vectorHash: '벡터 해시: ', - questionPlaceholder: '질문을 입력하세요', - questionEmpty: '질문을 비워둘 수 없습니다', - answerPlaceholder: '답변을 입력하세요', - answerEmpty: '답변을 비워둘 수 없습니다', - contentPlaceholder: '내용을 입력하세요', - contentEmpty: '내용을 비워둘 수 없습니다', - newTextSegment: '새로운 텍스트 세그먼트', - newQaSegment: '새로운 Q&A 세그먼트', - delete: '이 청크를 삭제하시겠습니까?', - parentChunks_one: '부모 청크 (PARENT CHUNK)', - newChunk: '새 청크', - addChildChunk: '자손 청크 추가 (Add Child Chunk)', - editChildChunk: '자손 청크 편집 (Edit Child Chunk)', - chunkDetail: '청크 디테일 (Chunk Detail)', - editChunk: '청크 편집 (Edit Chunk)', - regeneratingTitle: '자식 청크 재생성', - newChildChunk: '새 자손 청크 (New Child Chunk)', - childChunkAdded: '자식 청크 1 개 추가됨', - chunk: '덩어리', - searchResults_zero: '결과', - empty: '청크를 찾을 수 없습니다.', - editParentChunk: '부모 청크 편집 (Edit Parent Chunk)', - chunks_one: '덩어리', - regenerationSuccessMessage: '이 창을 닫을 수 있습니다.', - childChunks_one: '자식 청크 (CHILD CHUNK)', - regenerationSuccessTitle: '재생이 완료되었습니다.', - editedAt: '편집 위치', - dateTimeFormat: 'MM/DD/YYYY h:mm', - addAnother: '다른 항목 추가', - chunkAdded: '청크 1 개 추가됨', - searchResults_one: '결과', - searchResults_other: '결과', - regenerationConfirmMessage: '자식 청크를 다시 생성하면 편집된 청크와 새로 추가된 청크를 포함하여 현재 자식 청크를 덮어씁니다. 재생성은 취소할 수 없습니다.', - regenerationConfirmTitle: '자식 청크를 다시 생성하시겠습니까?', - clearFilter: '필터 지우기', - characters_one: '문자', - parentChunk: '부모 - 청크', - expandChunks: '청크 확장', - collapseChunks: '청크 축소', - parentChunks_other: '부모 청크 (PARENT CHUNKS)', - childChunk: '자식 청크', - childChunks_other: '자식 청크', - chunks_other: '청크', - edited: '편집', - addChunk: '청크 추가 (Add Chunk)', - characters_other: '문자', - regeneratingMessage: '시간이 걸릴 수 있으니 잠시만 기다려 주십시오...', - keywordDuplicate: '키워드가 이미 존재합니다.', - keywordEmpty: '키워드는 비워둘 수 없습니다.', - allFilesUploaded: '저장하기 전에 모든 파일을 업로드해야 합니다', - }, -} - -export default translation diff --git a/web/i18n/ko-KR/dataset-hit-testing.json b/web/i18n/ko-KR/dataset-hit-testing.json new file mode 100644 index 0000000000..4ae9d159de --- /dev/null +++ b/web/i18n/ko-KR/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "검색 테스트", + "desc": "주어진 쿼리 텍스트에 기반하여 지식의 검색 효과를 테스트합니다.", + "dateTimeFormat": "YYYY/MM/DD HH:mm", + "table": { + "header": { + "source": "소스", + "time": "시간", + "queryContent": "질의 내용" + } + }, + "input": { + "title": "소스 텍스트", + "placeholder": "텍스트를 입력하세요. 간결한 설명문이 좋습니다.", + "countWarning": "최대 200 자까지 입력할 수 있습니다.", + "indexWarning": "고품질 지식만.", + "testing": "테스트 중" + }, + "hit": { + "title": "검색 결과 단락", + "emptyTip": "검색 테스트 결과가 여기에 표시됩니다." + }, + "noRecentTip": "최근 쿼리 결과가 없습니다.", + "viewChart": "벡터 차트 보기", + "settingTitle": "검색 설정", + "viewDetail": "자세히보기", + "open": "열다", + "records": "레코드", + "hitChunks": "{{num}}개의 자식 청크를 히트했습니다.", + "keyword": "키워드", + "chunkDetail": "청크 디테일 (Chunk Detail)", + "imageUploader": { + "tip": "이미지를 업로드하거나 드래그하세요 (최대 {{batchCount}}장, 장당 {{size}}MB)", + "tooltip": "이미지 업로드 (최대 {{batchCount}}개, 개당 {{size}}MB)", + "dropZoneTip": "업로드할 파일을 여기에 끌어놓으세요", + "singleChunkAttachmentLimitTooltip": "단일 청크 첨부 파일의 수는 {{limit}}를 초과할 수 없습니다" + } +} diff --git a/web/i18n/ko-KR/dataset-hit-testing.ts b/web/i18n/ko-KR/dataset-hit-testing.ts deleted file mode 100644 index 9df426314d..0000000000 --- a/web/i18n/ko-KR/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - title: '검색 테스트', - desc: '주어진 쿼리 텍스트에 기반하여 지식의 검색 효과를 테스트합니다.', - dateTimeFormat: 'YYYY/MM/DD HH:mm', - table: { - header: { - source: '소스', - time: '시간', - queryContent: '질의 내용', - }, - }, - input: { - title: '소스 텍스트', - placeholder: '텍스트를 입력하세요. 간결한 설명문이 좋습니다.', - countWarning: '최대 200 자까지 입력할 수 있습니다.', - indexWarning: '고품질 지식만.', - testing: '테스트 중', - }, - hit: { - title: '검색 결과 단락', - emptyTip: '검색 테스트 결과가 여기에 표시됩니다.', - }, - noRecentTip: '최근 쿼리 결과가 없습니다.', - viewChart: '벡터 차트 보기', - settingTitle: '검색 설정', - viewDetail: '자세히보기', - open: '열다', - records: '레코드', - hitChunks: '{{num}}개의 자식 청크를 히트했습니다.', - keyword: '키워드', - chunkDetail: '청크 디테일 (Chunk Detail)', - imageUploader: { - tip: '이미지를 업로드하거나 드래그하세요 (최대 {{batchCount}}장, 장당 {{size}}MB)', - tooltip: '이미지 업로드 (최대 {{batchCount}}개, 개당 {{size}}MB)', - dropZoneTip: '업로드할 파일을 여기에 끌어놓으세요', - singleChunkAttachmentLimitTooltip: '단일 청크 첨부 파일의 수는 {{limit}}를 초과할 수 없습니다', - }, -} - -export default translation diff --git a/web/i18n/ko-KR/dataset-pipeline.json b/web/i18n/ko-KR/dataset-pipeline.json new file mode 100644 index 0000000000..d961f9003f --- /dev/null +++ b/web/i18n/ko-KR/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "createFromScratch": { + "title": "빈 지식 파이프라인", + "description": "데이터 처리 및 구조를 완전히 제어할 수 있는 사용자 지정 파이프라인을 처음부터 만듭니다." + }, + "caution": "주의", + "createKnowledge": "지식 창출", + "backToKnowledge": "지식으로 돌아가기", + "importDSL": "DSL 파일에서 가져오기", + "errorTip": "기술 자료를 만들지 못했습니다.", + "successTip": "기술 자료를 성공적으로 만들었습니다." + }, + "templates": { + "customized": "주문을 받아서 만들어진" + }, + "operations": { + "choose": "고르다", + "convert": "변환", + "preview": "미리 보기", + "process": "프로세스", + "dataSource": "데이터 소스", + "details": "세부 정보", + "saveAndProcess": "저장 및 처리", + "exportPipeline": "수출 파이프라인", + "editInfo": "정보 편집", + "backToDataSource": "데이터 소스로 돌아가기", + "useTemplate": "이 지식 파이프라인 사용" + }, + "deletePipeline": { + "title": "이 파이프라인 템플릿을 삭제하시겠습니까?", + "content": "파이프라인 템플릿을 삭제하는 것은 되돌릴 수 없습니다." + }, + "publishPipeline": { + "success": { + "message": "지식 파이프라인 게시", + "tip": "문서로 이동하여 문서를 추가하거나 관리하세요." + }, + "error": { + "message": "지식 파이프라인 게시 실패" + } + }, + "publishTemplate": { + "success": { + "learnMore": "더 알아보세요", + "message": "파이프라인 템플릿 게시됨", + "tip": "생성 페이지에서 이 템플릿을 사용할 수 있습니다." + }, + "error": { + "message": "파이프라인 템플릿을 게시하지 못했습니다." + } + }, + "exportDSL": { + "successTip": "파이프라인 DSL 내보내기 성공", + "errorTip": "파이프라인 DSL을 내보내지 못했습니다." + }, + "details": { + "structure": "구조", + "structureTooltip": "청크 구조는 문서를 분할하고 인덱싱하는 방법(일반, 부모-자식 및 Q&A 모드를 제공)을 결정하며 각 기술 자료에 고유합니다.", + "createdBy": "{{author}} 작성" + }, + "testRun": { + "steps": { + "documentProcessing": "문서 처리", + "dataSource": "데이터 소스" + }, + "dataSource": { + "localFiles": "로컬 파일" + }, + "notion": { + "docTitle": "Notion 문서", + "title": "Notion 페이지 선택" + }, + "title": "테스트 실행", + "tooltip": "테스트 실행 모드에서는 더 쉬운 디버깅 및 관찰을 위해 한 번에 하나의 문서만 가져올 수 있습니다." + }, + "inputFieldPanel": { + "uniqueInputs": { + "title": "각 입구에 대한 고유한 입력", + "tooltip": "고유 입력은 선택한 데이터 원본 및 해당 다운스트림 노드에서만 액세스할 수 있습니다. 사용자는 다른 데이터 원본을 선택할 때 입력할 필요가 없습니다. 데이터 소스 변수에서 참조하는 입력 필드만 첫 번째 단계(데이터 소스)에 표시됩니다. 다른 모든 필드는 두 번째 단계(문서 처리)에 표시됩니다." + }, + "globalInputs": { + "title": "모든 입구에 대한 전역 입력", + "tooltip": "전역 입력은 모든 노드에서 공유됩니다. 사용자는 데이터 원본을 선택할 때 이를 입력해야 합니다. 예를 들어 구분 기호 및 최대 청크 길이와 같은 필드는 여러 데이터 원본에 균일하게 적용될 수 있습니다. 데이터 소스 변수에서 참조하는 입력 필드만 첫 번째 단계(데이터 소스)에 나타납니다. 다른 모든 필드는 두 번째 단계(문서 처리)에 표시됩니다." + }, + "preview": { + "stepOneTitle": "데이터 소스", + "stepTwoTitle": "문서 처리" + }, + "error": { + "variableDuplicate": "변수 이름이 이미 존재합니다. 다른 이름을 선택해 주세요." + }, + "addInputField": "입력 필드 추가", + "title": "사용자 입력 필드", + "editInputField": "입력 필드 편집", + "description": "사용자 입력 필드는 파이프라인 실행 프로세스 중에 필요한 변수를 정의하고 수집하는 데 사용됩니다. 사용자는 필드 유형을 사용자 정의하고 다양한 데이터 소스 또는 문서 처리 단계의 요구 사항을 충족하도록 입력 값을 유연하게 구성할 수 있습니다." + }, + "addDocuments": { + "steps": { + "processingDocuments": "문서 처리", + "processDocuments": "문서 처리", + "chooseDatasource": "데이터 소스 선택" + }, + "stepOne": { + "preview": "미리 보기" + }, + "stepTwo": { + "previewChunks": "프리뷰 청크", + "chunkSettings": "청크 세팅" + }, + "stepThree": { + "learnMore": "더 알아보세요" + }, + "characters": "문자", + "backToDataSource": "데이터 소스", + "title": "문서 추가", + "selectOnlineDocumentTip": "{{count}}페이지까지 처리", + "selectOnlineDriveTip": "최대 {{fileSize}}MB 크기의 파일 {{count}}개까지 처리" + }, + "documentSettings": { + "title": "문서 설정" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} 페이지" + }, + "onlineDrive": { + "breadcrumbs": { + "allFiles": "모든 파일", + "allBuckets": "모든 Cloud Storage 버킷", + "searchPlaceholder": "파일 검색...", + "searchResult": "{{folderName}} 폴더에서 {{searchResultsLength}}개의 항목 찾기" + }, + "emptySearchResult": "항목을 찾을 수 없습니다.", + "emptyFolder": "이 폴더는 비어 있습니다.", + "resetKeywords": "키워드 재설정", + "notSupportedFileType": "이 파일 형식은 지원되지 않습니다", + "notConnected": "{{name}}가 연결되어 있지 않습니다", + "notConnectedTip": "{{name}}와(과) 동기화하려면 먼저 {{name}}에 연결해야 합니다." + }, + "conversion": { + "confirm": { + "title": "확인", + "content": "이 작업은 영구적입니다. 이전 방법으로 되돌릴 수 없습니다. 변환을 확인하시기 바랍니다." + }, + "title": "지식 파이프라인으로 변환", + "warning": "이 작업은 실행 취소할 수 없습니다.", + "errorMessage": "데이터 세트를 파이프라인으로 변환하지 못했습니다.", + "successMessage": "데이터 세트를 파이프라인으로 성공적으로 변환했습니다.", + "descriptionChunk2": "— 마켓플레이스의 플러그인에 액세스할 수 있는 보다 개방적이고 유연한 접근 방식입니다. 이렇게 하면 향후 모든 문서에 새로운 처리 방법이 적용됩니다.", + "descriptionChunk1": "이제 문서 처리에 지식 파이프라인을 사용하도록 기존 기술 자료를 변환할 수 있습니다" + }, + "knowledgeDescription": "지식 설명", + "knowledgePermissions": "권한을", + "inputField": "입력 필드", + "knowledgeNameAndIcon": "지식 이름 & 아이콘", + "pipelineNameAndIcon": "파이프라인 이름 & 아이콘", + "editPipelineInfo": "파이프라인 정보 편집", + "knowledgeNameAndIconPlaceholder": "기술 자료의 이름을 입력하십시오.", + "knowledgeDescriptionPlaceholder": "이 기술 자료에 포함된 내용을 설명하십시오. 자세한 설명을 통해 AI는 데이터 세트의 콘텐츠에 보다 정확하게 액세스할 수 있습니다. 비어 있으면 Dify는 기본 히트 전략을 사용합니다. (선택 사항)", + "configurationTip": "{{pluginName}} 구성" +} diff --git a/web/i18n/ko-KR/dataset-pipeline.ts b/web/i18n/ko-KR/dataset-pipeline.ts deleted file mode 100644 index d16e56736e..0000000000 --- a/web/i18n/ko-KR/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - createFromScratch: { - title: '빈 지식 파이프라인', - description: '데이터 처리 및 구조를 완전히 제어할 수 있는 사용자 지정 파이프라인을 처음부터 만듭니다.', - }, - caution: '주의', - createKnowledge: '지식 창출', - backToKnowledge: '지식으로 돌아가기', - importDSL: 'DSL 파일에서 가져오기', - errorTip: '기술 자료를 만들지 못했습니다.', - successTip: '기술 자료를 성공적으로 만들었습니다.', - }, - templates: { - customized: '주문을 받아서 만들어진', - }, - operations: { - choose: '고르다', - convert: '변환', - preview: '미리 보기', - process: '프로세스', - dataSource: '데이터 소스', - details: '세부 정보', - saveAndProcess: '저장 및 처리', - exportPipeline: '수출 파이프라인', - editInfo: '정보 편집', - backToDataSource: '데이터 소스로 돌아가기', - useTemplate: '이 지식 파이프라인 사용', - }, - deletePipeline: { - title: '이 파이프라인 템플릿을 삭제하시겠습니까?', - content: '파이프라인 템플릿을 삭제하는 것은 되돌릴 수 없습니다.', - }, - publishPipeline: { - success: { - message: '지식 파이프라인 게시', - tip: '문서로 이동하여 문서를 추가하거나 관리하세요.', - }, - error: { - message: '지식 파이프라인 게시 실패', - }, - }, - publishTemplate: { - success: { - learnMore: '더 알아보세요', - message: '파이프라인 템플릿 게시됨', - tip: '생성 페이지에서 이 템플릿을 사용할 수 있습니다.', - }, - error: { - message: '파이프라인 템플릿을 게시하지 못했습니다.', - }, - }, - exportDSL: { - successTip: '파이프라인 DSL 내보내기 성공', - errorTip: '파이프라인 DSL을 내보내지 못했습니다.', - }, - details: { - structure: '구조', - structureTooltip: '청크 구조는 문서를 분할하고 인덱싱하는 방법(일반, 부모-자식 및 Q&A 모드를 제공)을 결정하며 각 기술 자료에 고유합니다.', - createdBy: '{{author}} 작성', - }, - testRun: { - steps: { - documentProcessing: '문서 처리', - dataSource: '데이터 소스', - }, - dataSource: { - localFiles: '로컬 파일', - }, - notion: { - docTitle: 'Notion 문서', - title: 'Notion 페이지 선택', - }, - title: '테스트 실행', - tooltip: '테스트 실행 모드에서는 더 쉬운 디버깅 및 관찰을 위해 한 번에 하나의 문서만 가져올 수 있습니다.', - }, - inputFieldPanel: { - uniqueInputs: { - title: '각 입구에 대한 고유한 입력', - tooltip: '고유 입력은 선택한 데이터 원본 및 해당 다운스트림 노드에서만 액세스할 수 있습니다. 사용자는 다른 데이터 원본을 선택할 때 입력할 필요가 없습니다. 데이터 소스 변수에서 참조하는 입력 필드만 첫 번째 단계(데이터 소스)에 표시됩니다. 다른 모든 필드는 두 번째 단계(문서 처리)에 표시됩니다.', - }, - globalInputs: { - title: '모든 입구에 대한 전역 입력', - tooltip: '전역 입력은 모든 노드에서 공유됩니다. 사용자는 데이터 원본을 선택할 때 이를 입력해야 합니다. 예를 들어 구분 기호 및 최대 청크 길이와 같은 필드는 여러 데이터 원본에 균일하게 적용될 수 있습니다. 데이터 소스 변수에서 참조하는 입력 필드만 첫 번째 단계(데이터 소스)에 나타납니다. 다른 모든 필드는 두 번째 단계(문서 처리)에 표시됩니다.', - }, - preview: { - stepOneTitle: '데이터 소스', - stepTwoTitle: '문서 처리', - }, - error: { - variableDuplicate: '변수 이름이 이미 존재합니다. 다른 이름을 선택해 주세요.', - }, - addInputField: '입력 필드 추가', - title: '사용자 입력 필드', - editInputField: '입력 필드 편집', - description: '사용자 입력 필드는 파이프라인 실행 프로세스 중에 필요한 변수를 정의하고 수집하는 데 사용됩니다. 사용자는 필드 유형을 사용자 정의하고 다양한 데이터 소스 또는 문서 처리 단계의 요구 사항을 충족하도록 입력 값을 유연하게 구성할 수 있습니다.', - }, - addDocuments: { - steps: { - processingDocuments: '문서 처리', - processDocuments: '문서 처리', - chooseDatasource: '데이터 소스 선택', - }, - stepOne: { - preview: '미리 보기', - }, - stepTwo: { - previewChunks: '프리뷰 청크', - chunkSettings: '청크 세팅', - }, - stepThree: { - learnMore: '더 알아보세요', - }, - characters: '문자', - backToDataSource: '데이터 소스', - title: '문서 추가', - selectOnlineDocumentTip: '{{count}}페이지까지 처리', - selectOnlineDriveTip: '최대 {{fileSize}}MB 크기의 파일 {{count}}개까지 처리', - }, - documentSettings: { - title: '문서 설정', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} 페이지', - }, - onlineDrive: { - breadcrumbs: { - allFiles: '모든 파일', - allBuckets: '모든 Cloud Storage 버킷', - searchPlaceholder: '파일 검색...', - searchResult: '{{folderName}} 폴더에서 {{searchResultsLength}}개의 항목 찾기', - }, - emptySearchResult: '항목을 찾을 수 없습니다.', - emptyFolder: '이 폴더는 비어 있습니다.', - resetKeywords: '키워드 재설정', - notSupportedFileType: '이 파일 형식은 지원되지 않습니다', - notConnected: '{{name}}가 연결되어 있지 않습니다', - notConnectedTip: '{{name}}와(과) 동기화하려면 먼저 {{name}}에 연결해야 합니다.', - }, - conversion: { - confirm: { - title: '확인', - content: '이 작업은 영구적입니다. 이전 방법으로 되돌릴 수 없습니다. 변환을 확인하시기 바랍니다.', - }, - title: '지식 파이프라인으로 변환', - warning: '이 작업은 실행 취소할 수 없습니다.', - errorMessage: '데이터 세트를 파이프라인으로 변환하지 못했습니다.', - successMessage: '데이터 세트를 파이프라인으로 성공적으로 변환했습니다.', - descriptionChunk2: '— 마켓플레이스의 플러그인에 액세스할 수 있는 보다 개방적이고 유연한 접근 방식입니다. 이렇게 하면 향후 모든 문서에 새로운 처리 방법이 적용됩니다.', - descriptionChunk1: '이제 문서 처리에 지식 파이프라인을 사용하도록 기존 기술 자료를 변환할 수 있습니다', - }, - knowledgeDescription: '지식 설명', - knowledgePermissions: '권한을', - inputField: '입력 필드', - knowledgeNameAndIcon: '지식 이름 & 아이콘', - pipelineNameAndIcon: '파이프라인 이름 & 아이콘', - editPipelineInfo: '파이프라인 정보 편집', - knowledgeNameAndIconPlaceholder: '기술 자료의 이름을 입력하십시오.', - knowledgeDescriptionPlaceholder: '이 기술 자료에 포함된 내용을 설명하십시오. 자세한 설명을 통해 AI는 데이터 세트의 콘텐츠에 보다 정확하게 액세스할 수 있습니다. 비어 있으면 Dify는 기본 히트 전략을 사용합니다. (선택 사항)', - configurationTip: '{{pluginName}} 구성', -} - -export default translation diff --git a/web/i18n/ko-KR/dataset-settings.json b/web/i18n/ko-KR/dataset-settings.json new file mode 100644 index 0000000000..1112da5703 --- /dev/null +++ b/web/i18n/ko-KR/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "지식 설정", + "desc": "여기에서 지식의 속성과 작동 방법을 변경할 수 있습니다.", + "form": { + "name": "지식 이름", + "namePlaceholder": "지식 이름을 입력하세요", + "nameError": "이름은 비워둘 수 없습니다", + "desc": "지식 설명", + "descInfo": "지식 내용을 개괄하는 명확한 텍스트 설명을 작성하세요. 이 설명은 여러 지식 중에서 선택하는 기준으로 사용됩니다.", + "descPlaceholder": "이 지식에 포함된 내용을 설명하세요. 자세한 설명은 AI 가 지식 내용에 빠르게 접근할 수 있도록 합니다. 비어 있으면 Dify 가 기본 검색 전략을 사용합니다.", + "descWrite": "좋은 지식 설명 작성 방법 배우기", + "permissions": "권한", + "permissionsOnlyMe": "나만", + "permissionsAllMember": "모든 팀 멤버", + "indexMethod": "인덱스 방법", + "indexMethodHighQuality": "고품질", + "indexMethodHighQualityTip": "사용자 쿼리 시 더 높은 정확도를 제공하기 위해 Embedding 모델을 호출하여 처리합니다.", + "indexMethodEconomy": "경제적", + "indexMethodEconomyTip": "오프라인 벡터 엔진, 키워드 인덱스 등을 사용하여 토큰을 소비하지 않고도 정확도를 감소시킵니다.", + "embeddingModel": "임베딩 모델", + "embeddingModelTip": "임베딩 모델 변경은", + "embeddingModelTipLink": "설정", + "retrievalSetting": { + "title": "검색 설정", + "learnMore": "자세히 알아보기", + "description": " 검색 방법에 대한 자세한 정보", + "longDescription": " 검색 방법에 대한 자세한 내용은 언제든지 지식 설정에서 변경할 수 있습니다.", + "method": "검색 방법", + "multiModalTip": "임베딩 모델이 멀티모달을 지원할 경우, 더 나은 성능을 위해 멀티모달 재순위 모델을 선택하세요." + }, + "save": "저장", + "permissionsInvitedMembers": "부분 팀 구성원", + "me": "(당신)", + "externalKnowledgeAPI": "외부 지식 API", + "externalKnowledgeID": "외부 지식 ID", + "retrievalSettings": "검색 설정", + "upgradeHighQualityTip": "고품질 모드로 업그레이드한 후에는 경제적 모드로 되돌릴 수 없습니다.", + "indexMethodChangeToEconomyDisabledTip": "HQ 에서 ECO 로 다운그레이드할 수 없습니다.", + "helpText": "좋은 데이터 세트 설명을 작성하는 방법을 알아보세요.", + "searchModel": "모델 검색", + "chunkStructure": { + "title": "청크 구조", + "learnMore": "더 알아보세요", + "description": "청크 구조에 대해." + }, + "numberOfKeywords": "키워드 수", + "nameAndIcon": "이름 & 아이콘", + "onSearchResults": "검색어와 일치하는 구성원이 없습니다.\n검색을 다시 시도합니다." + } +} diff --git a/web/i18n/ko-KR/dataset-settings.ts b/web/i18n/ko-KR/dataset-settings.ts deleted file mode 100644 index 648d5bb908..0000000000 --- a/web/i18n/ko-KR/dataset-settings.ts +++ /dev/null @@ -1,52 +0,0 @@ -const translation = { - title: '지식 설정', - desc: '여기에서 지식의 속성과 작동 방법을 변경할 수 있습니다.', - form: { - name: '지식 이름', - namePlaceholder: '지식 이름을 입력하세요', - nameError: '이름은 비워둘 수 없습니다', - desc: '지식 설명', - descInfo: '지식 내용을 개괄하는 명확한 텍스트 설명을 작성하세요. 이 설명은 여러 지식 중에서 선택하는 기준으로 사용됩니다.', - descPlaceholder: '이 지식에 포함된 내용을 설명하세요. 자세한 설명은 AI 가 지식 내용에 빠르게 접근할 수 있도록 합니다. 비어 있으면 Dify 가 기본 검색 전략을 사용합니다.', - descWrite: '좋은 지식 설명 작성 방법 배우기', - permissions: '권한', - permissionsOnlyMe: '나만', - permissionsAllMember: '모든 팀 멤버', - indexMethod: '인덱스 방법', - indexMethodHighQuality: '고품질', - indexMethodHighQualityTip: '사용자 쿼리 시 더 높은 정확도를 제공하기 위해 Embedding 모델을 호출하여 처리합니다.', - indexMethodEconomy: '경제적', - indexMethodEconomyTip: '오프라인 벡터 엔진, 키워드 인덱스 등을 사용하여 토큰을 소비하지 않고도 정확도를 감소시킵니다.', - embeddingModel: '임베딩 모델', - embeddingModelTip: '임베딩 모델 변경은', - embeddingModelTipLink: '설정', - retrievalSetting: { - title: '검색 설정', - learnMore: '자세히 알아보기', - description: ' 검색 방법에 대한 자세한 정보', - longDescription: ' 검색 방법에 대한 자세한 내용은 언제든지 지식 설정에서 변경할 수 있습니다.', - method: '검색 방법', - multiModalTip: '임베딩 모델이 멀티모달을 지원할 경우, 더 나은 성능을 위해 멀티모달 재순위 모델을 선택하세요.', - }, - save: '저장', - permissionsInvitedMembers: '부분 팀 구성원', - me: '(당신)', - externalKnowledgeAPI: '외부 지식 API', - externalKnowledgeID: '외부 지식 ID', - retrievalSettings: '검색 설정', - upgradeHighQualityTip: '고품질 모드로 업그레이드한 후에는 경제적 모드로 되돌릴 수 없습니다.', - indexMethodChangeToEconomyDisabledTip: 'HQ 에서 ECO 로 다운그레이드할 수 없습니다.', - helpText: '좋은 데이터 세트 설명을 작성하는 방법을 알아보세요.', - searchModel: '모델 검색', - chunkStructure: { - title: '청크 구조', - learnMore: '더 알아보세요', - description: '청크 구조에 대해.', - }, - numberOfKeywords: '키워드 수', - nameAndIcon: '이름 & 아이콘', - onSearchResults: '검색어와 일치하는 구성원이 없습니다.\n검색을 다시 시도합니다.', - }, -} - -export default translation diff --git a/web/i18n/ko-KR/dataset.json b/web/i18n/ko-KR/dataset.json new file mode 100644 index 0000000000..beb74852c4 --- /dev/null +++ b/web/i18n/ko-KR/dataset.json @@ -0,0 +1,249 @@ +{ + "knowledge": "지식", + "documentCount": " 문서", + "wordCount": " k 단어", + "appCount": " 연결된 앱", + "createDataset": "지식 생성", + "createDatasetIntro": "자체 텍스트 데이터를 가져오거나 LLM 컨텍스트를 강화하기 위해 웹훅을 통해 실시간 데이터를 기록할 수 있습니다.", + "deleteDatasetConfirmTitle": "이 지식을 삭제하시겠습니까?", + "deleteDatasetConfirmContent": "지식을 삭제하면 다시 되돌릴 수 없습니다. 사용자는 더 이상 귀하의 지식에 액세스할 수 없으며 모든 프롬프트 설정과 로그가 영구적으로 삭제됩니다.", + "datasetUsedByApp": "이 지식은 일부 앱에서 사용 중입니다. 앱에서 더 이상 이 지식을 사용할 수 없게 되며, 모든 프롬프트 구성 및 로그가 영구적으로 삭제됩니다.", + "datasetDeleted": "지식이 삭제되었습니다", + "datasetDeleteFailed": "지식 삭제에 실패했습니다", + "didYouKnow": "알고 계셨나요?", + "intro1": "지식을 Dify 애플리케이션에 ", + "intro2": "컨텍스트로", + "intro3": " 통합할 수 있습니다.", + "intro4": "혹은, ", + "intro5": "이처럼", + "intro6": " 독립적인 ChatGPT 인덱스 플러그인으로 공개할 수 있습니다", + "unavailable": "사용 불가", + "datasets": "지식", + "datasetsApi": "API", + "retrieval": { + "semantic_search": { + "title": "벡터 검색", + "description": "쿼리의 임베딩을 생성하고, 해당 벡터 표현에 가장 유사한 텍스트 청크를 검색합니다." + }, + "full_text_search": { + "title": "전체 텍스트 검색", + "description": "문서 내 모든 용어를 인덱싱하여 사용자가 원하는 용어를 검색하고 관련 텍스트 청크를 가져올 수 있게 합니다." + }, + "hybrid_search": { + "title": "하이브리드 검색", + "description": "전체 텍스트 검색과 벡터 검색을 동시에 실행하고 사용자 쿼리에 가장 적합한 매치를 선택하기 위해 다시 랭크를 매깁니다. 재랭크 모델 API 설정이 필요합니다.", + "recommend": "추천" + }, + "invertedIndex": {}, + "change": "변경", + "changeRetrievalMethod": "검색 방법 변경", + "keyword_search": { + "title": "반전 인덱스", + "description": "역인덱스는 효율적인 검색을 위해 사용되는 구조입니다. 용어별로 구성된 각 용어는 해당 용어가 포함된 문서 또는 웹 페이지를 가리킵니다." + } + }, + "docsFailedNotice": "문서 인덱스에 실패했습니다", + "retry": "재시도", + "indexingTechnique": { + "high_quality": "HQ", + "economy": "이코노미" + }, + "indexingMethod": { + "semantic_search": "벡터", + "full_text_search": "전체 텍스트", + "hybrid_search": "하이브리드", + "invertedIndex": "역인덱스" + }, + "mixtureHighQualityAndEconomicTip": "고품질과 경제적 지식 베이스의 혼합을 위해서는 재순위 모델이 필요합니다.", + "inconsistentEmbeddingModelTip": "선택된 지식 베이스의 임베딩 모델이 일관되지 않은 경우 재순위 모델이 필요합니다.", + "retrievalSettings": "검색 설정", + "rerankSettings": "재순위 설정", + "weightedScore": { + "title": "가중 점수", + "description": "할당된 가중치를 조정함으로써, 이 재순위 전략은 의미론적 일치 또는 키워드 일치 중 어느 것을 우선시할지 결정합니다.", + "semanticFirst": "의미론 우선", + "keywordFirst": "키워드 우선", + "customized": "사용자 정의", + "semantic": "의미론적", + "keyword": "키워드" + }, + "nTo1RetrievalLegacy": "N-대 -1 검색은 9 월부터 공식적으로 더 이상 사용되지 않습니다. 더 나은 결과를 얻으려면 최신 다중 경로 검색을 사용하는 것이 좋습니다.", + "nTo1RetrievalLegacyLink": "자세히 알아보기", + "nTo1RetrievalLegacyLinkText": "N-대 -1 검색은 9 월에 공식적으로 더 이상 사용되지 않습니다.", + "defaultRetrievalTip": "다중 경로 검색이 기본적으로 사용됩니다. 지식은 여러 기술 자료에서 검색된 다음 순위가 다시 매겨집니다.", + "editExternalAPIConfirmWarningContent": { + "front": "이 외부 지식 API 는 다음에 연결됩니다.", + "end": "외부 지식, 그리고 이 수정 사항은 그들 모두에게 적용될 것입니다. 이 변경 사항을 저장하시겠습니까?" + }, + "editExternalAPIFormWarning": { + "end": "외부 지식", + "front": "이 외부 API 는 다음에 연결됩니다." + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "front": "삭제하다", + "end": "?" + }, + "content": { + "front": "이 외부 지식 API 는 다음에 연결됩니다.", + "end": "외부 지식. 이 API 를 삭제하면 모두 무효화됩니다. 이 API 를 삭제하시겠습니까?" + }, + "noConnectionContent": "이 API 를 삭제하시겠습니까?" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "외부 지식 API 선택" + }, + "connectDatasetIntro": { + "content": { + "link": "외부 API 를 만드는 방법 알아보기", + "end": ". 그런 다음 해당 기술 ID 를 찾아 왼쪽 양식에 입력합니다. 모든 정보가 올바르면 연결 단추를 클릭한 후 기술 자료의 검색 테스트로 자동으로 이동합니다.", + "front": "외부 기술 자료에 연결하려면 먼저 외부 API 를 만들어야 합니다. 주의 깊게 읽고 참조하십시오." + }, + "learnMore": "더 알아보세요", + "title": "외부 기술 자료에 연결하는 방법" + }, + "connectHelper": { + "helper1": "API 및 기술 자료 ID 를 통해 외부 기술 자료에 연결합니다. 현재,", + "helper4": "도움말 문서 읽기", + "helper2": "검색 기능만 지원됩니다", + "helper5": "이 기능을 사용하기 전에 주의하십시오.", + "helper3": ". 다음을 강력히 권장합니다." + }, + "externalKnowledgeForm": { + "cancel": "취소", + "connect": "연결하다" + }, + "externalAPIForm": { + "encrypted": { + "end": "기술.", + "front": "API 토큰은 다음을 사용하여 암호화되고 저장됩니다." + }, + "save": "구해내다", + "name": "이름", + "endpoint": "API 엔드포인트", + "edit": "편집하다", + "cancel": "취소", + "apiKey": "API 키" + }, + "editExternalAPITooltipTitle": "연결된 지식", + "externalAPIPanelTitle": "외부 지식 API", + "externalKnowledgeDescription": "지식 설명", + "externalAPI": "외부 API", + "externalKnowledgeName": "외부 지식 이름", + "createExternalAPI": "외부 지식 API 추가", + "externalTag": "외부", + "editExternalAPIFormTitle": "외부 지식 API 편집", + "externalKnowledgeNamePlaceholder": "기술 자료의 이름을 입력하십시오.", + "externalAPIPanelDocumentation": "외부 지식 API 를 만드는 방법 알아보기", + "createNewExternalAPI": "새 외부 지식 API 만들기", + "mixtureInternalAndExternalTip": "리랭크 모델은 내부 및 외부 지식의 혼합에 필요합니다.", + "connectDataset": "외부 기술 자료에 연결", + "learnHowToWriteGoodKnowledgeDescription": "적절한 지식 설명을 작성하는 방법 알아보기", + "externalKnowledgeDescriptionPlaceholder": "이 기술 자료의 내용 설명 (선택 사항)", + "externalKnowledgeId": "외부 지식 ID", + "externalKnowledgeIdPlaceholder": "지식 ID 를 입력하십시오.", + "allExternalTip": "외부 지식만 사용하는 경우 사용자는 리랭크 모델을 사용할지 여부를 선택할 수 있습니다. 활성화하지 않으면 검색된 청크가 점수에 따라 정렬됩니다. 서로 다른 기술 자료의 검색 전략이 일관되지 않으면 부정확합니다.", + "externalAPIPanelDescription": "외부 지식 API 는 Dify 외부의 기술 자료에 연결하고 해당 기술 자료에서 지식을 검색하는 데 사용됩니다.", + "noExternalKnowledge": "아직 외부 지식 API 가 없으므로 여기를 클릭하여 생성하십시오.", + "chunkingMode": { + "parentChild": "부모 - 자식", + "general": "일반", + "graph": "그래프", + "qa": "질문과 답변" + }, + "parentMode": { + "fullDoc": "전체 문서", + "paragraph": "단락" + }, + "batchAction": { + "delete": "삭제하다", + "enable": "사용", + "cancel": "취소", + "archive": "보관", + "selected": "선택한", + "disable": "비활성화" + }, + "localDocs": "로컬 문서", + "preprocessDocument": "{{숫자}} 문서 전처리", + "enable": "사용", + "documentsDisabled": "{{num}} 문서 사용 안 함 - 30 일 이상 비활성 상태", + "allKnowledge": "모든 지식", + "allKnowledgeDescription": "이 작업 영역의 모든 정보를 표시하려면 선택합니다. 워크스페이스 소유자만 모든 기술 자료를 관리할 수 있습니다.", + "metadata": { + "createMetadata": { + "namePlaceholder": "메타데이터 이름 추가", + "name": "이름", + "type": "유형", + "back": "뒤", + "title": "새 메타데이터" + }, + "checkName": { + "empty": "메타데이터 이름은 비어 있을 수 없습니다.", + "invalid": "메타데이터 이름은 소문자, 숫자 및 밑줄만 포함할 수 있으며 소문자로 시작해야 합니다.", + "tooLong": "메타데이터 이름은 {{max}}자를 초과할 수 없습니다." + }, + "batchEditMetadata": { + "multipleValue": "다중 값", + "editMetadata": "메타데이터 편집", + "applyToAllSelectDocument": "선택한 모든 문서에 적용", + "editDocumentsNum": "{{num}} 개 문서 편집 중", + "applyToAllSelectDocumentTip": "선택된 모든 문서에 대해 위에서 편집한 모든 메타데이터와 새 메타데이터를 자동으로 생성하십시오. 그렇지 않으면 메타데이터 편집은 해당 문서에만 적용됩니다." + }, + "selectMetadata": { + "manageAction": "관리하다", + "newAction": "새 메타데이터", + "search": "메타데이터 검색" + }, + "datasetMetadata": { + "name": "이름", + "deleteTitle": "삭제 확인", + "disabled": "사용안함", + "addMetaData": "메타데이터 추가", + "values": "{{num}} 값들", + "namePlaceholder": "메타데이터 이름", + "rename": "이름 변경", + "builtInDescription": "내장 메타데이터는 자동으로 추출되고 생성됩니다. 사용하기 전에 활성화해야 하며 편집할 수 없습니다.", + "deleteContent": "정말 '{{name}}' 메타데이터를 삭제하시겠습니까?", + "description": "이 지식에서 모든 메타데이터를 관리할 수 있습니다. 수정 사항은 모든 문서에 동기화됩니다.", + "builtIn": "내장형" + }, + "documentMetadata": { + "technicalParameters": "기술 매개변수", + "startLabeling": "레이블링 시작", + "metadataToolTip": "메타데이터는 정보 검색의 정확성과 관련성을 향상시키는 중요한 필터 역할을 합니다. 이 문서에 대한 메타데이터를 여기에서 수정하고 추가할 수 있습니다.", + "documentInformation": "문서 정보" + }, + "addMetadata": "메타데이터 추가", + "metadata": "메타데이터", + "chooseTime": "시간을 선택하세요..." + }, + "embeddingModelNotAvailable": "임베딩 모델을 사용할 수 없습니다.", + "updated": "업데이트", + "externalKnowledgeBase": "외부 기술 자료", + "createFromPipeline": "지식 파이프라인에서 만들기", + "serviceApi": { + "card": { + "apiReference": "API 참고", + "endpoint": "서비스 API 엔드포인트", + "apiKey": "API 키", + "title": "백엔드 서비스 API" + }, + "enabled": "서비스 중", + "title": "서비스 API", + "disabled": "장애인" + }, + "docAllEnabled_one": "{{count}} 문서 활성화됨", + "docAllEnabled_other": "모든 {{count}} 문서 사용 가능", + "partialEnabled_one": "총 {{count}}개의 문서 중 {{num}}개 사용 가능", + "partialEnabled_other": "총 {{count}}개의 문서 중 {{num}}개 사용 가능", + "cornerLabel": { + "unavailable": "사용 불가", + "pipeline": "파이프라인" + }, + "multimodal": "멀티모달", + "imageUploader": { + "button": "파일 또는 폴더를 끌어다 놓거나", + "browse": "둘러보기", + "tip": "{{supportTypes}} (최대 {{batchCount}}, 각각 {{size}}MB)" + } +} diff --git a/web/i18n/ko-KR/dataset.ts b/web/i18n/ko-KR/dataset.ts deleted file mode 100644 index 0db87f53a3..0000000000 --- a/web/i18n/ko-KR/dataset.ts +++ /dev/null @@ -1,252 +0,0 @@ -const translation = { - knowledge: '지식', - documentCount: ' 문서', - wordCount: ' k 단어', - appCount: ' 연결된 앱', - createDataset: '지식 생성', - createDatasetIntro: '자체 텍스트 데이터를 가져오거나 LLM 컨텍스트를 강화하기 위해 웹훅을 통해 실시간 데이터를 기록할 수 있습니다.', - deleteDatasetConfirmTitle: '이 지식을 삭제하시겠습니까?', - deleteDatasetConfirmContent: '지식을 삭제하면 다시 되돌릴 수 없습니다. 사용자는 더 이상 귀하의 지식에 액세스할 수 없으며 모든 프롬프트 설정과 로그가 영구적으로 삭제됩니다.', - datasetUsedByApp: '이 지식은 일부 앱에서 사용 중입니다. 앱에서 더 이상 이 지식을 사용할 수 없게 되며, 모든 프롬프트 구성 및 로그가 영구적으로 삭제됩니다.', - datasetDeleted: '지식이 삭제되었습니다', - datasetDeleteFailed: '지식 삭제에 실패했습니다', - didYouKnow: '알고 계셨나요?', - intro1: '지식을 Dify 애플리케이션에 ', - intro2: '컨텍스트로', - intro3: ' 통합할 수 있습니다.', - intro4: '혹은, ', - intro5: '이처럼', - intro6: ' 독립적인 ChatGPT 인덱스 플러그인으로 공개할 수 있습니다', - unavailable: '사용 불가', - datasets: '지식', - datasetsApi: 'API', - retrieval: { - semantic_search: { - title: '벡터 검색', - description: '쿼리의 임베딩을 생성하고, 해당 벡터 표현에 가장 유사한 텍스트 청크를 검색합니다.', - }, - full_text_search: { - title: '전체 텍스트 검색', - description: '문서 내 모든 용어를 인덱싱하여 사용자가 원하는 용어를 검색하고 관련 텍스트 청크를 가져올 수 있게 합니다.', - }, - hybrid_search: { - title: '하이브리드 검색', - description: '전체 텍스트 검색과 벡터 검색을 동시에 실행하고 사용자 쿼리에 가장 적합한 매치를 선택하기 위해 다시 랭크를 매깁니다. 재랭크 모델 API 설정이 필요합니다.', - recommend: '추천', - }, - invertedIndex: { - }, - change: '변경', - changeRetrievalMethod: '검색 방법 변경', - keyword_search: { - title: '반전 인덱스', - description: '역인덱스는 효율적인 검색을 위해 사용되는 구조입니다. 용어별로 구성된 각 용어는 해당 용어가 포함된 문서 또는 웹 페이지를 가리킵니다.', - }, - }, - docsFailedNotice: '문서 인덱스에 실패했습니다', - retry: '재시도', - indexingTechnique: { - high_quality: 'HQ', - economy: '이코노미', - }, - indexingMethod: { - semantic_search: '벡터', - full_text_search: '전체 텍스트', - hybrid_search: '하이브리드', - invertedIndex: '역인덱스', - }, - mixtureHighQualityAndEconomicTip: '고품질과 경제적 지식 베이스의 혼합을 위해서는 재순위 모델이 필요합니다.', - inconsistentEmbeddingModelTip: '선택된 지식 베이스의 임베딩 모델이 일관되지 않은 경우 재순위 모델이 필요합니다.', - retrievalSettings: '검색 설정', - rerankSettings: '재순위 설정', - weightedScore: { - title: '가중 점수', - description: '할당된 가중치를 조정함으로써, 이 재순위 전략은 의미론적 일치 또는 키워드 일치 중 어느 것을 우선시할지 결정합니다.', - semanticFirst: '의미론 우선', - keywordFirst: '키워드 우선', - customized: '사용자 정의', - semantic: '의미론적', - keyword: '키워드', - }, - nTo1RetrievalLegacy: 'N-대 -1 검색은 9 월부터 공식적으로 더 이상 사용되지 않습니다. 더 나은 결과를 얻으려면 최신 다중 경로 검색을 사용하는 것이 좋습니다.', - nTo1RetrievalLegacyLink: '자세히 알아보기', - nTo1RetrievalLegacyLinkText: 'N-대 -1 검색은 9 월에 공식적으로 더 이상 사용되지 않습니다.', - defaultRetrievalTip: '다중 경로 검색이 기본적으로 사용됩니다. 지식은 여러 기술 자료에서 검색된 다음 순위가 다시 매겨집니다.', - editExternalAPIConfirmWarningContent: { - front: '이 외부 지식 API 는 다음에 연결됩니다.', - end: '외부 지식, 그리고 이 수정 사항은 그들 모두에게 적용될 것입니다. 이 변경 사항을 저장하시겠습니까?', - }, - editExternalAPIFormWarning: { - end: '외부 지식', - front: '이 외부 API 는 다음에 연결됩니다.', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - front: '삭제하다', - end: '?', - }, - content: { - front: '이 외부 지식 API 는 다음에 연결됩니다.', - end: '외부 지식. 이 API 를 삭제하면 모두 무효화됩니다. 이 API 를 삭제하시겠습니까?', - }, - noConnectionContent: '이 API 를 삭제하시겠습니까?', - }, - selectExternalKnowledgeAPI: { - placeholder: '외부 지식 API 선택', - }, - connectDatasetIntro: { - content: { - link: '외부 API 를 만드는 방법 알아보기', - end: '. 그런 다음 해당 기술 ID 를 찾아 왼쪽 양식에 입력합니다. 모든 정보가 올바르면 연결 단추를 클릭한 후 기술 자료의 검색 테스트로 자동으로 이동합니다.', - front: '외부 기술 자료에 연결하려면 먼저 외부 API 를 만들어야 합니다. 주의 깊게 읽고 참조하십시오.', - }, - learnMore: '더 알아보세요', - title: '외부 기술 자료에 연결하는 방법', - }, - connectHelper: { - helper1: 'API 및 기술 자료 ID 를 통해 외부 기술 자료에 연결합니다. 현재,', - helper4: '도움말 문서 읽기', - helper2: '검색 기능만 지원됩니다', - helper5: '이 기능을 사용하기 전에 주의하십시오.', - helper3: '. 다음을 강력히 권장합니다.', - }, - externalKnowledgeForm: { - cancel: '취소', - connect: '연결하다', - }, - externalAPIForm: { - encrypted: { - end: '기술.', - front: 'API 토큰은 다음을 사용하여 암호화되고 저장됩니다.', - }, - save: '구해내다', - name: '이름', - endpoint: 'API 엔드포인트', - edit: '편집하다', - cancel: '취소', - apiKey: 'API 키', - }, - editExternalAPITooltipTitle: '연결된 지식', - externalAPIPanelTitle: '외부 지식 API', - externalKnowledgeDescription: '지식 설명', - externalAPI: '외부 API', - externalKnowledgeName: '외부 지식 이름', - createExternalAPI: '외부 지식 API 추가', - externalTag: '외부', - editExternalAPIFormTitle: '외부 지식 API 편집', - externalKnowledgeNamePlaceholder: '기술 자료의 이름을 입력하십시오.', - externalAPIPanelDocumentation: '외부 지식 API 를 만드는 방법 알아보기', - createNewExternalAPI: '새 외부 지식 API 만들기', - mixtureInternalAndExternalTip: '리랭크 모델은 내부 및 외부 지식의 혼합에 필요합니다.', - connectDataset: '외부 기술 자료에 연결', - learnHowToWriteGoodKnowledgeDescription: '적절한 지식 설명을 작성하는 방법 알아보기', - externalKnowledgeDescriptionPlaceholder: '이 기술 자료의 내용 설명 (선택 사항)', - externalKnowledgeId: '외부 지식 ID', - externalKnowledgeIdPlaceholder: '지식 ID 를 입력하십시오.', - allExternalTip: '외부 지식만 사용하는 경우 사용자는 리랭크 모델을 사용할지 여부를 선택할 수 있습니다. 활성화하지 않으면 검색된 청크가 점수에 따라 정렬됩니다. 서로 다른 기술 자료의 검색 전략이 일관되지 않으면 부정확합니다.', - externalAPIPanelDescription: '외부 지식 API 는 Dify 외부의 기술 자료에 연결하고 해당 기술 자료에서 지식을 검색하는 데 사용됩니다.', - noExternalKnowledge: '아직 외부 지식 API 가 없으므로 여기를 클릭하여 생성하십시오.', - chunkingMode: { - parentChild: '부모 - 자식', - general: '일반', - graph: '그래프', - qa: '질문과 답변', - }, - parentMode: { - fullDoc: '전체 문서', - paragraph: '단락', - }, - batchAction: { - delete: '삭제하다', - enable: '사용', - cancel: '취소', - archive: '보관', - selected: '선택한', - disable: '비활성화', - }, - localDocs: '로컬 문서', - preprocessDocument: '{{숫자}} 문서 전처리', - enable: '사용', - documentsDisabled: '{{num}} 문서 사용 안 함 - 30 일 이상 비활성 상태', - allKnowledge: '모든 지식', - allKnowledgeDescription: '이 작업 영역의 모든 정보를 표시하려면 선택합니다. 워크스페이스 소유자만 모든 기술 자료를 관리할 수 있습니다.', - metadata: { - createMetadata: { - namePlaceholder: '메타데이터 이름 추가', - name: '이름', - type: '유형', - back: '뒤', - title: '새 메타데이터', - }, - checkName: { - empty: '메타데이터 이름은 비어 있을 수 없습니다.', - invalid: '메타데이터 이름은 소문자, 숫자 및 밑줄만 포함할 수 있으며 소문자로 시작해야 합니다.', - tooLong: '메타데이터 이름은 {{max}}자를 초과할 수 없습니다.', - }, - batchEditMetadata: { - multipleValue: '다중 값', - editMetadata: '메타데이터 편집', - applyToAllSelectDocument: '선택한 모든 문서에 적용', - editDocumentsNum: '{{num}} 개 문서 편집 중', - applyToAllSelectDocumentTip: '선택된 모든 문서에 대해 위에서 편집한 모든 메타데이터와 새 메타데이터를 자동으로 생성하십시오. 그렇지 않으면 메타데이터 편집은 해당 문서에만 적용됩니다.', - }, - selectMetadata: { - manageAction: '관리하다', - newAction: '새 메타데이터', - search: '메타데이터 검색', - }, - datasetMetadata: { - name: '이름', - deleteTitle: '삭제 확인', - disabled: '사용안함', - addMetaData: '메타데이터 추가', - values: '{{num}} 값들', - namePlaceholder: '메타데이터 이름', - rename: '이름 변경', - builtInDescription: '내장 메타데이터는 자동으로 추출되고 생성됩니다. 사용하기 전에 활성화해야 하며 편집할 수 없습니다.', - deleteContent: '정말 \'{{name}}\' 메타데이터를 삭제하시겠습니까?', - description: '이 지식에서 모든 메타데이터를 관리할 수 있습니다. 수정 사항은 모든 문서에 동기화됩니다.', - builtIn: '내장형', - }, - documentMetadata: { - technicalParameters: '기술 매개변수', - startLabeling: '레이블링 시작', - metadataToolTip: '메타데이터는 정보 검색의 정확성과 관련성을 향상시키는 중요한 필터 역할을 합니다. 이 문서에 대한 메타데이터를 여기에서 수정하고 추가할 수 있습니다.', - documentInformation: '문서 정보', - }, - addMetadata: '메타데이터 추가', - metadata: '메타데이터', - chooseTime: '시간을 선택하세요...', - }, - embeddingModelNotAvailable: '임베딩 모델을 사용할 수 없습니다.', - updated: '업데이트', - externalKnowledgeBase: '외부 기술 자료', - createFromPipeline: '지식 파이프라인에서 만들기', - serviceApi: { - card: { - apiReference: 'API 참고', - endpoint: '서비스 API 엔드포인트', - apiKey: 'API 키', - title: '백엔드 서비스 API', - }, - enabled: '서비스 중', - title: '서비스 API', - disabled: '장애인', - }, - docAllEnabled_one: '{{count}} 문서 활성화됨', - docAllEnabled_other: '모든 {{count}} 문서 사용 가능', - partialEnabled_one: '총 {{count}}개의 문서 중 {{num}}개 사용 가능', - partialEnabled_other: '총 {{count}}개의 문서 중 {{num}}개 사용 가능', - cornerLabel: { - unavailable: '사용 불가', - pipeline: '파이프라인', - }, - multimodal: '멀티모달', - imageUploader: { - button: '파일 또는 폴더를 끌어다 놓거나', - browse: '둘러보기', - tip: '{{supportTypes}} (최대 {{batchCount}}, 각각 {{size}}MB)', - }, -} - -export default translation diff --git a/web/i18n/ko-KR/education.json b/web/i18n/ko-KR/education.json new file mode 100644 index 0000000000..a730d1de86 --- /dev/null +++ b/web/i18n/ko-KR/education.json @@ -0,0 +1,74 @@ +{ + "toVerifiedTip": { + "end": "Dify 프로페셔널 플랜을 위해.", + "coupon": "독점 100% 쿠폰", + "front": "당신은 이제 교육 인증 상태를 받을 자격이 있습니다. 아래에 귀하의 교육 정보를 입력하여 과정을 완료하고 인증을 받으십시오." + }, + "form": { + "schoolName": { + "placeholder": "귀하의 학교의 공식 약어가 아닌 전체 이름을 입력하세요.", + "title": "당신의 학교 이름" + }, + "schoolRole": { + "option": { + "teacher": "교사", + "student": "학생", + "administrator": "학교 관리자" + }, + "title": "당신의 학교 역할" + }, + "terms": { + "desc": { + "end": "제출함으로써:", + "and": "와", + "termsOfService": "서비스 약관", + "front": "귀하의 정보 및 교육 인증 상태 사용은 우리의", + "privacyPolicy": "개인정보 보호정책" + }, + "option": { + "inSchool": "나는 제공된 기관에 재학 중이거나 고용되어 있음을 확인합니다. Dify 는 재학증명서나 고용증명서를 요청할 수 있습니다. 만약 내가 자격을 허위로 진술하면, 나는 내 교육 상태에 따라 처음 면제된 수수료를 지불하기로 동의합니다.", + "age": "만 18세 이상입니다." + }, + "title": "약관 및 동의사항" + } + }, + "submit": "제출", + "rejectContent": "안타깝게도, 귀하는 교육 인증 상태에 적합하지 않으므로 이 이메일 주소를 사용할 경우 Dify Professional Plan 의 독점 100% 쿠폰을 받을 수 없습니다.", + "successContent": "귀하의 계정에 Dify Professional 플랜을 위한 100% 할인 쿠폰을 발급했습니다. 이 쿠폰은 1 년간 유효하므로 유효 기간 내에 사용해 주시기 바랍니다.", + "currentSigned": "현재 로그인 중입니다", + "toVerified": "교육 인증 받기", + "rejectTitle": "귀하의 Dify 교육 인증이 거부되었습니다.", + "learn": "교육 인증을 받는 방법을 배우세요", + "submitError": "양식 제출에 실패했습니다. 나중에 다시 시도해 주세요.", + "successTitle": "당신은 Dify 교육 인증을 받았습니다.", + "emailLabel": "현재 이메일", + "notice": { + "expired": { + "summary": { + "line1": "여전히 Dify에 접근하고 사용할 수 있습니다.", + "line2": "하지만, 더 이상 새로운 교육 할인 쿠폰을 받을 수 없습니다." + }, + "title": "귀하의 교육 상태가 만료되었습니다." + }, + "isAboutToExpire": { + "summary": "걱정하지 마세요 — 이번 사항은 현재 구독에 영향을 주지 않지만, 다시 상태를 확인하지 않으면 갱신 시 교육 할인 혜택을 받지 못합니다.", + "title": "귀하의 학력 상태는 {{date}}에 만료됩니다" + }, + "stillInEducation": { + "title": "아직 학업 중이신가요?", + "isAboutToExpire": "새로운 학년을 위한 쿠폰을 받으시려면 지금 다시 인증하십시오. 쿠폰은 귀하의 계정에 저장되어 다음 갱신 시 사용할 수 있습니다.", + "expired": "지금 다시 확인하여 다가오는 학년도에 사용할 새 쿠폰을 받아보세요. 우리는 그것을 귀하의 계정에 추가하며, 다음 업그레이드에 사용할 수 있습니다." + }, + "alreadyGraduated": { + "title": "벌써 졸업했나요?", + "expired": "유료 기능에 대한 전체 액세스를 얻기 위해 언제든지 자유롭게 업그레이드하세요.", + "isAboutToExpire": "현재 구독은 여전히 유효합니다. 구독이 종료되면 샌드박스 요금제로 변경되며, 언제든지 업그레이드하여 유료 기능에 대한 전체 접근을 복원할 수 있습니다." + }, + "action": { + "dismiss": "해제", + "upgrade": "업그레이드", + "reVerify": "재확인" + }, + "dateFormat": "MM/DD/YYYY" + } +} diff --git a/web/i18n/ko-KR/education.ts b/web/i18n/ko-KR/education.ts deleted file mode 100644 index db62757566..0000000000 --- a/web/i18n/ko-KR/education.ts +++ /dev/null @@ -1,80 +0,0 @@ -const translation = { - toVerifiedTip: { - end: 'Dify 프로페셔널 플랜을 위해.', - coupon: '독점 100% 쿠폰', - front: - '당신은 이제 교육 인증 상태를 받을 자격이 있습니다. 아래에 귀하의 교육 정보를 입력하여 과정을 완료하고 인증을 받으십시오.', - }, - form: { - schoolName: { - placeholder: '귀하의 학교의 공식 약어가 아닌 전체 이름을 입력하세요.', - title: '당신의 학교 이름', - }, - schoolRole: { - option: { - teacher: '교사', - student: '학생', - administrator: '학교 관리자', - }, - title: '당신의 학교 역할', - }, - terms: { - desc: { - end: '제출함으로써:', - and: '와', - termsOfService: '서비스 약관', - front: '귀하의 정보 및 교육 인증 상태 사용은 우리의', - privacyPolicy: '개인정보 보호정책', - }, - option: { - inSchool: - '나는 제공된 기관에 재학 중이거나 고용되어 있음을 확인합니다. Dify 는 재학증명서나 고용증명서를 요청할 수 있습니다. 만약 내가 자격을 허위로 진술하면, 나는 내 교육 상태에 따라 처음 면제된 수수료를 지불하기로 동의합니다.', - age: '만 18세 이상입니다.', - }, - title: '약관 및 동의사항', - }, - }, - submit: '제출', - rejectContent: - '안타깝게도, 귀하는 교육 인증 상태에 적합하지 않으므로 이 이메일 주소를 사용할 경우 Dify Professional Plan 의 독점 100% 쿠폰을 받을 수 없습니다.', - successContent: - '귀하의 계정에 Dify Professional 플랜을 위한 100% 할인 쿠폰을 발급했습니다. 이 쿠폰은 1 년간 유효하므로 유효 기간 내에 사용해 주시기 바랍니다.', - currentSigned: '현재 로그인 중입니다', - toVerified: '교육 인증 받기', - rejectTitle: '귀하의 Dify 교육 인증이 거부되었습니다.', - learn: '교육 인증을 받는 방법을 배우세요', - submitError: '양식 제출에 실패했습니다. 나중에 다시 시도해 주세요.', - successTitle: '당신은 Dify 교육 인증을 받았습니다.', - emailLabel: '현재 이메일', - notice: { - expired: { - summary: { - line1: '여전히 Dify에 접근하고 사용할 수 있습니다.', - line2: '하지만, 더 이상 새로운 교육 할인 쿠폰을 받을 수 없습니다.', - }, - title: '귀하의 교육 상태가 만료되었습니다.', - }, - isAboutToExpire: { - summary: '걱정하지 마세요 — 이번 사항은 현재 구독에 영향을 주지 않지만, 다시 상태를 확인하지 않으면 갱신 시 교육 할인 혜택을 받지 못합니다.', - title: '귀하의 학력 상태는 {{date}}에 만료됩니다', - }, - stillInEducation: { - title: '아직 학업 중이신가요?', - isAboutToExpire: '새로운 학년을 위한 쿠폰을 받으시려면 지금 다시 인증하십시오. 쿠폰은 귀하의 계정에 저장되어 다음 갱신 시 사용할 수 있습니다.', - expired: '지금 다시 확인하여 다가오는 학년도에 사용할 새 쿠폰을 받아보세요. 우리는 그것을 귀하의 계정에 추가하며, 다음 업그레이드에 사용할 수 있습니다.', - }, - alreadyGraduated: { - title: '벌써 졸업했나요?', - expired: '유료 기능에 대한 전체 액세스를 얻기 위해 언제든지 자유롭게 업그레이드하세요.', - isAboutToExpire: '현재 구독은 여전히 유효합니다. 구독이 종료되면 샌드박스 요금제로 변경되며, 언제든지 업그레이드하여 유료 기능에 대한 전체 접근을 복원할 수 있습니다.', - }, - action: { - dismiss: '해제', - upgrade: '업그레이드', - reVerify: '재확인', - }, - dateFormat: 'MM/DD/YYYY', - }, -} - -export default translation diff --git a/web/i18n/ko-KR/explore.json b/web/i18n/ko-KR/explore.json new file mode 100644 index 0000000000..7e109e2dc9 --- /dev/null +++ b/web/i18n/ko-KR/explore.json @@ -0,0 +1,42 @@ +{ + "title": "탐색", + "sidebar": { + "discovery": "탐색", + "chat": "채팅", + "workspace": "작업 공간", + "action": { + "pin": "고정", + "unpin": "고정 해제", + "rename": "이름 변경", + "delete": "삭제" + }, + "delete": { + "title": "앱 삭제", + "content": "이 앱을 삭제해도 괜찮습니까?" + } + }, + "apps": { + "title": "Dify 로 앱 탐색", + "description": "이 템플릿 앱을 즉시 사용하거나 템플릿을 기반으로 고유한 앱을 사용자 정의하세요.", + "allCategories": "모든 카테고리" + }, + "appCard": { + "addToWorkspace": "작업 공간에 추가", + "customize": "사용자 정의" + }, + "appCustomize": { + "title": "{{name}}으로 앱 만들기", + "subTitle": "앱 아이콘 및 이름", + "nameRequired": "앱 이름은 필수입니다" + }, + "category": { + "Assistant": "어시스턴트", + "Writing": "작성", + "Translate": "번역", + "Programming": "프로그래밍", + "Agent": "에이전트", + "Workflow": "워크플로우", + "HR": "인사", + "Entertainment": "오락" + } +} diff --git a/web/i18n/ko-KR/explore.ts b/web/i18n/ko-KR/explore.ts deleted file mode 100644 index bc6438af2b..0000000000 --- a/web/i18n/ko-KR/explore.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - title: '탐색', - sidebar: { - discovery: '탐색', - chat: '채팅', - workspace: '작업 공간', - action: { - pin: '고정', - unpin: '고정 해제', - rename: '이름 변경', - delete: '삭제', - }, - delete: { - title: '앱 삭제', - content: '이 앱을 삭제해도 괜찮습니까?', - }, - }, - apps: { - title: 'Dify 로 앱 탐색', - description: '이 템플릿 앱을 즉시 사용하거나 템플릿을 기반으로 고유한 앱을 사용자 정의하세요.', - allCategories: '모든 카테고리', - }, - appCard: { - addToWorkspace: '작업 공간에 추가', - customize: '사용자 정의', - }, - appCustomize: { - title: '{{name}}으로 앱 만들기', - subTitle: '앱 아이콘 및 이름', - nameRequired: '앱 이름은 필수입니다', - }, - category: { - Assistant: '어시스턴트', - Writing: '작성', - Translate: '번역', - Programming: '프로그래밍', - Agent: '에이전트', - Workflow: '워크플로우', - HR: '인사', - Entertainment: '오락', - }, -} - -export default translation diff --git a/web/i18n/ko-KR/layout.json b/web/i18n/ko-KR/layout.json new file mode 100644 index 0000000000..186bc52897 --- /dev/null +++ b/web/i18n/ko-KR/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "expandSidebar": "사이드바 확장", + "collapseSidebar": "사이드바 축소" + } +} diff --git a/web/i18n/ko-KR/layout.ts b/web/i18n/ko-KR/layout.ts deleted file mode 100644 index eab9235351..0000000000 --- a/web/i18n/ko-KR/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - expandSidebar: '사이드바 확장', - collapseSidebar: '사이드바 축소', - }, -} - -export default translation diff --git a/web/i18n/ko-KR/login.json b/web/i18n/ko-KR/login.json new file mode 100644 index 0000000000..66845d7291 --- /dev/null +++ b/web/i18n/ko-KR/login.json @@ -0,0 +1,124 @@ +{ + "pageTitle": "시작하기 🎉", + "welcome": "Dify 에 오신 것을 환영합니다. 계속하려면 로그인하세요.", + "email": "이메일 주소", + "emailPlaceholder": "이메일 주소를 입력하세요", + "password": "비밀번호", + "passwordPlaceholder": "비밀번호를 입력하세요", + "name": "사용자 이름", + "namePlaceholder": "사용자 이름을 입력하세요", + "forget": "비밀번호를 잊으셨나요?", + "signBtn": "로그인", + "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": "계정은 이미 초기화되었습니다.", + "forgotPassword": "비밀번호를 잊으셨나요?", + "resetLinkSent": "재설정 링크가 전송되었습니다", + "sendResetLink": "재설정 링크 보내기", + "backToSignIn": "로그인으로 돌아가기", + "forgotPasswordDesc": "비밀번호를 재설정하려면 이메일 주소를 입력하세요. 비밀번호 재설정 방법에 대한 이메일을 보내드리겠습니다.", + "checkEmailForResetLink": "비밀번호 재설정 링크를 확인하려면 이메일을 확인하세요. 몇 분 내에 나타나지 않으면 스팸 폴더를 확인하세요.", + "passwordChanged": "지금 로그인", + "changePassword": "비밀번호 변경", + "changePasswordTip": "계정의 새 비밀번호를 입력하세요", + "invalidToken": "유효하지 않거나 만료된 토큰", + "confirmPassword": "비밀번호 확인", + "confirmPasswordPlaceholder": "새 비밀번호를 확인하세요", + "passwordChangedTip": "비밀번호가 성공적으로 변경되었습니다", + "error": { + "emailEmpty": "이메일 주소를 입력하세요.", + "emailInValid": "유효한 이메일 주소를 입력하세요.", + "nameEmpty": "사용자 이름을 입력하세요.", + "passwordEmpty": "비밀번호를 입력하세요.", + "passwordInvalid": "비밀번호는 문자와 숫자를 포함하고 8 자 이상이어야 합니다.", + "passwordLengthInValid": "비밀번호는 8 자 이상이어야 합니다.", + "registrationNotAllowed": "계정을 찾을 수 없습니다. 등록하려면 시스템 관리자에게 문의하십시오.", + "invalidEmailOrPassword": "유효하지 않은 이메일이나 비밀번호입니다." + }, + "license": { + "tip": "Dify Community Edition 을 시작하기 전에 GitHub 의", + "link": "오픈 소스 라이선스" + }, + "join": "가입하기", + "joinTipStart": "당신을 초대합니다.", + "joinTipEnd": "팀에 가입하세요.", + "invalid": "링크의 유효 기간이 만료되었습니다.", + "explore": "Dify 를 탐색하세요", + "activatedTipStart": "이제", + "activatedTipEnd": "팀에 가입되었습니다.", + "activated": "지금 로그인하세요", + "adminInitPassword": "관리자 초기화 비밀번호", + "validate": "확인", + "checkCode": { + "verify": "확인", + "verificationCode": "인증 코드", + "validTime": "코드는 5 분 동안 유효합니다", + "checkYourEmail": "이메일 주소 확인", + "invalidCode": "유효하지 않은 코드", + "verificationCodePlaceholder": "6 자리 코드 입력", + "emptyCode": "코드가 필요합니다.", + "useAnotherMethod": "다른 방법 사용", + "didNotReceiveCode": "코드를 받지 못하셨나요?", + "resend": "재전송", + "tipsPrefix": "우리는 확인 코드를 보냅니다" + }, + "back": "뒤로", + "or": "또는", + "useVerificationCode": "인증 코드 사용", + "continueWithCode": "코드로 계속하기", + "usePassword": "비밀번호 사용", + "withSSO": "SSO 로 계속하기", + "backToLogin": "로그인으로 돌아가기", + "resetPassword": "비밀번호 재설정", + "setYourAccount": "계정 설정", + "noLoginMethod": "인증 방법이 구성되지 않음", + "sendVerificationCode": "인증 코드 보내기", + "changePasswordBtn": "비밀번호 설정", + "enterYourName": "사용자 이름을 입력해 주세요", + "noLoginMethodTip": "인증 방법을 추가하려면 시스템 관리자에게 문의하십시오.", + "resetPasswordDesc": "Dify 에 가입할 때 사용한 이메일을 입력하면 비밀번호 재설정 이메일을 보내드립니다.", + "licenseInactiveTip": "작업 영역에 대한 Dify Enterprise 라이선스가 비활성 상태입니다. Dify 를 계속 사용하려면 관리자에게 문의하십시오.", + "licenseLost": "라이센스 분실", + "licenseLostTip": "Dify 라이선스 서버에 연결하지 못했습니다. Dify 를 계속 사용하려면 관리자에게 문의하십시오.", + "licenseInactive": "License Inactive(라이선스 비활성)", + "licenseExpired": "라이센스가 만료되었습니다.", + "licenseExpiredTip": "작업 영역에 대한 Dify Enterprise 라이선스가 만료되었습니다. Dify 를 계속 사용하려면 관리자에게 문의하십시오.", + "webapp": { + "noLoginMethod": "웹 애플리케이션에 대한 인증 방법이 구성되어 있지 않습니다.", + "disabled": "웹앱 인증이 비활성화되었습니다. 이를 활성화하려면 시스템 관리자에게 문의하십시오. 앱을 직접 사용해 볼 수 있습니다.", + "noLoginMethodTip": "인증 방법을 추가하려면 시스템 관리자에게 연락하십시오.", + "login": "로그인" + }, + "signup": { + "signIn": "로그인", + "signUp": "가입하기", + "haveAccount": "이미 계정이 있으신가요?", + "createAccount": "계정을 생성하세요", + "verifyMail": "인증 코드로 계속 진행하세요", + "noAccount": "계정이 없으신가요?", + "welcome": "👋 환영합니다! 시작하려면 세부 정보를 입력해 주세요." + }, + "pageTitleForE": "이봐, 시작하자!" +} diff --git a/web/i18n/ko-KR/login.ts b/web/i18n/ko-KR/login.ts deleted file mode 100644 index 6d3d47a602..0000000000 --- a/web/i18n/ko-KR/login.ts +++ /dev/null @@ -1,126 +0,0 @@ -const translation = { - pageTitle: '시작하기 🎉', - welcome: 'Dify 에 오신 것을 환영합니다. 계속하려면 로그인하세요.', - email: '이메일 주소', - emailPlaceholder: '이메일 주소를 입력하세요', - password: '비밀번호', - passwordPlaceholder: '비밀번호를 입력하세요', - name: '사용자 이름', - namePlaceholder: '사용자 이름을 입력하세요', - forget: '비밀번호를 잊으셨나요?', - signBtn: '로그인', - 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: '계정은 이미 초기화되었습니다.', - forgotPassword: '비밀번호를 잊으셨나요?', - resetLinkSent: '재설정 링크가 전송되었습니다', - sendResetLink: '재설정 링크 보내기', - backToSignIn: '로그인으로 돌아가기', - forgotPasswordDesc: '비밀번호를 재설정하려면 이메일 주소를 입력하세요. 비밀번호 재설정 방법에 대한 이메일을 보내드리겠습니다.', - checkEmailForResetLink: '비밀번호 재설정 링크를 확인하려면 이메일을 확인하세요. 몇 분 내에 나타나지 않으면 스팸 폴더를 확인하세요.', - passwordChanged: '지금 로그인', - changePassword: '비밀번호 변경', - changePasswordTip: '계정의 새 비밀번호를 입력하세요', - invalidToken: '유효하지 않거나 만료된 토큰', - confirmPassword: '비밀번호 확인', - confirmPasswordPlaceholder: '새 비밀번호를 확인하세요', - passwordChangedTip: '비밀번호가 성공적으로 변경되었습니다', - error: { - emailEmpty: '이메일 주소를 입력하세요.', - emailInValid: '유효한 이메일 주소를 입력하세요.', - nameEmpty: '사용자 이름을 입력하세요.', - passwordEmpty: '비밀번호를 입력하세요.', - passwordInvalid: '비밀번호는 문자와 숫자를 포함하고 8 자 이상이어야 합니다.', - passwordLengthInValid: '비밀번호는 8 자 이상이어야 합니다.', - registrationNotAllowed: '계정을 찾을 수 없습니다. 등록하려면 시스템 관리자에게 문의하십시오.', - invalidEmailOrPassword: '유효하지 않은 이메일이나 비밀번호입니다.', - }, - license: { - tip: 'Dify Community Edition 을 시작하기 전에 GitHub 의', - link: '오픈 소스 라이선스', - }, - join: '가입하기', - joinTipStart: '당신을 초대합니다.', - joinTipEnd: '팀에 가입하세요.', - invalid: '링크의 유효 기간이 만료되었습니다.', - explore: 'Dify 를 탐색하세요', - activatedTipStart: '이제', - activatedTipEnd: '팀에 가입되었습니다.', - activated: '지금 로그인하세요', - adminInitPassword: '관리자 초기화 비밀번호', - validate: '확인', - checkCode: { - verify: '확인', - verificationCode: '인증 코드', - validTime: '코드는 5 분 동안 유효합니다', - checkYourEmail: '이메일 주소 확인', - invalidCode: '유효하지 않은 코드', - verificationCodePlaceholder: '6 자리 코드 입력', - emptyCode: '코드가 필요합니다.', - useAnotherMethod: '다른 방법 사용', - didNotReceiveCode: '코드를 받지 못하셨나요?', - resend: '재전송', - tipsPrefix: '우리는 확인 코드를 보냅니다', - }, - back: '뒤로', - or: '또는', - useVerificationCode: '인증 코드 사용', - continueWithCode: '코드로 계속하기', - usePassword: '비밀번호 사용', - withSSO: 'SSO 로 계속하기', - backToLogin: '로그인으로 돌아가기', - resetPassword: '비밀번호 재설정', - setYourAccount: '계정 설정', - noLoginMethod: '인증 방법이 구성되지 않음', - sendVerificationCode: '인증 코드 보내기', - changePasswordBtn: '비밀번호 설정', - enterYourName: '사용자 이름을 입력해 주세요', - noLoginMethodTip: '인증 방법을 추가하려면 시스템 관리자에게 문의하십시오.', - resetPasswordDesc: 'Dify 에 가입할 때 사용한 이메일을 입력하면 비밀번호 재설정 이메일을 보내드립니다.', - licenseInactiveTip: '작업 영역에 대한 Dify Enterprise 라이선스가 비활성 상태입니다. Dify 를 계속 사용하려면 관리자에게 문의하십시오.', - licenseLost: '라이센스 분실', - licenseLostTip: 'Dify 라이선스 서버에 연결하지 못했습니다. Dify 를 계속 사용하려면 관리자에게 문의하십시오.', - licenseInactive: 'License Inactive(라이선스 비활성)', - licenseExpired: '라이센스가 만료되었습니다.', - licenseExpiredTip: '작업 영역에 대한 Dify Enterprise 라이선스가 만료되었습니다. Dify 를 계속 사용하려면 관리자에게 문의하십시오.', - webapp: { - noLoginMethod: '웹 애플리케이션에 대한 인증 방법이 구성되어 있지 않습니다.', - disabled: '웹앱 인증이 비활성화되었습니다. 이를 활성화하려면 시스템 관리자에게 문의하십시오. 앱을 직접 사용해 볼 수 있습니다.', - noLoginMethodTip: '인증 방법을 추가하려면 시스템 관리자에게 연락하십시오.', - login: '로그인', - }, - signup: { - signIn: '로그인', - signUp: '가입하기', - haveAccount: '이미 계정이 있으신가요?', - createAccount: '계정을 생성하세요', - verifyMail: '인증 코드로 계속 진행하세요', - noAccount: '계정이 없으신가요?', - welcome: '👋 환영합니다! 시작하려면 세부 정보를 입력해 주세요.', - }, - pageTitleForE: '이봐, 시작하자!', -} - -export default translation diff --git a/web/i18n/ko-KR/oauth.json b/web/i18n/ko-KR/oauth.json new file mode 100644 index 0000000000..6f2a9388b7 --- /dev/null +++ b/web/i18n/ko-KR/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "needLogin": "로그인하여 인증해 주세요.", + "notLoggedIn": "이 앱은 Dify Cloud 계정에 접근하고 싶어합니다.", + "loggedIn": "이 앱은 다음 정보를 귀하의 Dify Cloud 계정에서 액세스하려고 합니다.", + "common": "우리는 귀하의 개인 정보를 존중하며, 이 정보를 개발자 도구를 통한 귀하의 경험 향상에만 사용할 것입니다." + }, + "scopes": { + "avatar": "아바타", + "email": "이메일", + "name": "이름", + "languagePreference": "언어 선호", + "timezone": "시간대" + }, + "error": { + "invalidParams": "유효하지 않은 매개변수", + "authorizeFailed": "권한 부여 실패", + "authAppInfoFetchFailed": "인증을 위한 앱 정보를 가져오지 못했습니다." + }, + "continue": "계속", + "unknownApp": "알 수 없는 앱", + "switchAccount": "계정 전환", + "login": "로그인", + "connect": "연결" +} diff --git a/web/i18n/ko-KR/oauth.ts b/web/i18n/ko-KR/oauth.ts deleted file mode 100644 index 5c13240823..0000000000 --- a/web/i18n/ko-KR/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - needLogin: '로그인하여 인증해 주세요.', - notLoggedIn: '이 앱은 Dify Cloud 계정에 접근하고 싶어합니다.', - loggedIn: '이 앱은 다음 정보를 귀하의 Dify Cloud 계정에서 액세스하려고 합니다.', - common: '우리는 귀하의 개인 정보를 존중하며, 이 정보를 개발자 도구를 통한 귀하의 경험 향상에만 사용할 것입니다.', - }, - scopes: { - avatar: '아바타', - email: '이메일', - name: '이름', - languagePreference: '언어 선호', - timezone: '시간대', - }, - error: { - invalidParams: '유효하지 않은 매개변수', - authorizeFailed: '권한 부여 실패', - authAppInfoFetchFailed: '인증을 위한 앱 정보를 가져오지 못했습니다.', - }, - continue: '계속', - unknownApp: '알 수 없는 앱', - switchAccount: '계정 전환', - login: '로그인', - connect: '연결', -} - -export default translation diff --git a/web/i18n/ko-KR/pipeline.json b/web/i18n/ko-KR/pipeline.json new file mode 100644 index 0000000000..2328aaef12 --- /dev/null +++ b/web/i18n/ko-KR/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "publishAsPipeline": { + "name": "파이프라인 이름 & 아이콘", + "description": "지식 설명", + "namePlaceholder": "이 지식 파이프라인의 이름을 입력하십시오. (필수)", + "descriptionPlaceholder": "이 지식 파이프라인에 대한 설명을 입력하십시오. (선택 사항)" + }, + "reRun": "다시 실행", + "processing": "가공", + "testRun": "테스트 실행", + "confirmPublish": "게시 확인", + "preparingDataSource": "데이터 소스 준비", + "publishAs": "지식 파이프라인으로 게시", + "goToAddDocuments": "문서 추가로 이동", + "confirmPublishContent": "지식 파이프라인을 성공적으로 게시한 후에는 이 지식 기반의 청크 구조를 수정할 수 없습니다. 게시하시겠습니까?" + }, + "inputField": { + "manage": "관리하다", + "create": "사용자 입력 필드 만들기" + }, + "publishToast": { + "title": "이 파이프라인은 아직 게시되지 않았습니다.", + "desc": "파이프라인이 게시되지 않은 경우 기술 자료 노드에서 청크 구조를 수정할 수 있으며 파이프라인 오케스트레이션 및 변경 내용은 자동으로 초안으로 저장됩니다." + }, + "result": { + "resultPreview": { + "loading": "가공... 기다리세요", + "viewDetails": "세부 정보보기", + "error": "실행 중 오류가 발생했습니다.", + "footerTip": "테스트 실행 모드에서, 최대 {{count}}개의 청크를 미리보기" + } + }, + "ragToolSuggestions": { + "title": "RAG에 대한 제안", + "noRecommendationPlugins": "추천 플러그인이 없습니다. 더 많은 플러그인은 마켓플레이스에서 찾아보세요." + } +} diff --git a/web/i18n/ko-KR/pipeline.ts b/web/i18n/ko-KR/pipeline.ts deleted file mode 100644 index af30eb8bfd..0000000000 --- a/web/i18n/ko-KR/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - publishAsPipeline: { - name: '파이프라인 이름 & 아이콘', - description: '지식 설명', - namePlaceholder: '이 지식 파이프라인의 이름을 입력하십시오. (필수)', - descriptionPlaceholder: '이 지식 파이프라인에 대한 설명을 입력하십시오. (선택 사항)', - }, - reRun: '다시 실행', - processing: '가공', - testRun: '테스트 실행', - confirmPublish: '게시 확인', - preparingDataSource: '데이터 소스 준비', - publishAs: '지식 파이프라인으로 게시', - goToAddDocuments: '문서 추가로 이동', - confirmPublishContent: '지식 파이프라인을 성공적으로 게시한 후에는 이 지식 기반의 청크 구조를 수정할 수 없습니다. 게시하시겠습니까?', - }, - inputField: { - manage: '관리하다', - create: '사용자 입력 필드 만들기', - }, - publishToast: { - title: '이 파이프라인은 아직 게시되지 않았습니다.', - desc: '파이프라인이 게시되지 않은 경우 기술 자료 노드에서 청크 구조를 수정할 수 있으며 파이프라인 오케스트레이션 및 변경 내용은 자동으로 초안으로 저장됩니다.', - }, - result: { - resultPreview: { - loading: '가공... 기다리세요', - viewDetails: '세부 정보보기', - error: '실행 중 오류가 발생했습니다.', - footerTip: '테스트 실행 모드에서, 최대 {{count}}개의 청크를 미리보기', - }, - }, - ragToolSuggestions: { - title: 'RAG에 대한 제안', - noRecommendationPlugins: '추천 플러그인이 없습니다. 더 많은 플러그인은 마켓플레이스에서 찾아보세요.', - }, -} - -export default translation diff --git a/web/i18n/ko-KR/plugin-tags.json b/web/i18n/ko-KR/plugin-tags.json new file mode 100644 index 0000000000..ee8161b59b --- /dev/null +++ b/web/i18n/ko-KR/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "tags": { + "social": "사회적인", + "finance": "금융", + "travel": "여행하다", + "search": "검색", + "entertainment": "오락", + "utilities": "유틸리티", + "productivity": "생산력", + "weather": "날씨", + "other": "다른", + "videos": "동영상", + "news": "소식", + "medical": "내과의", + "education": "교육", + "image": "이미지", + "design": "디자인", + "business": "사업", + "agent": "에이전트", + "rag": "넝마" + }, + "allTags": "모든 태그", + "searchTags": "검색 태그" +} diff --git a/web/i18n/ko-KR/plugin-tags.ts b/web/i18n/ko-KR/plugin-tags.ts deleted file mode 100644 index 7efd26f84c..0000000000 --- a/web/i18n/ko-KR/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - tags: { - social: '사회적인', - finance: '금융', - travel: '여행하다', - search: '검색', - entertainment: '오락', - utilities: '유틸리티', - productivity: '생산력', - weather: '날씨', - other: '다른', - videos: '동영상', - news: '소식', - medical: '내과의', - education: '교육', - image: '이미지', - design: '디자인', - business: '사업', - agent: '에이전트', - rag: '넝마', - }, - allTags: '모든 태그', - searchTags: '검색 태그', -} - -export default translation diff --git a/web/i18n/ko-KR/plugin-trigger.json b/web/i18n/ko-KR/plugin-trigger.json new file mode 100644 index 0000000000..8484d8f54e --- /dev/null +++ b/web/i18n/ko-KR/plugin-trigger.json @@ -0,0 +1,184 @@ +{ + "subscription": { + "title": "구독", + "listNum": "{{num}} 구독", + "empty": { + "title": "구독 없음", + "button": "새 구독" + }, + "createButton": { + "oauth": "OAuth로 새 구독", + "apiKey": "API 키를 이용한 새 구독", + "manual": "새 구독을 만들려면 URL을 붙여넣으세요" + }, + "createSuccess": "구독이 성공적으로 생성되었습니다", + "createFailed": "구독 생성에 실패했습니다", + "maxCount": "최대 {{num}} 구독", + "selectPlaceholder": "구독 선택", + "noSubscriptionSelected": "선택한 구독이 없습니다", + "subscriptionRemoved": "구독 취소됨", + "list": { + "title": "구독", + "addButton": "추가", + "tip": "구독을 통해 이벤트 받기", + "item": { + "enabled": "활성화됨", + "disabled": "사용하지 않음", + "credentialType": { + "api_key": "API 키", + "oauth2": "OAuth", + "unauthorized": "매뉴얼" + }, + "actions": { + "delete": "삭제", + "deleteConfirm": { + "title": "{{name}}을(를) 삭제하시겠습니까?", + "success": "구독 {{name}}이(가) 성공적으로 삭제되었습니다", + "error": "구독 {{name}} 삭제 실패", + "content": "삭제하면 이 구독은 복구할 수 없습니다. 확인해주세요.", + "contentWithApps": "현재 구독은 {{count}}개의 애플리케이션에서 참조되고 있습니다. 이를 삭제하면 구성된 애플리케이션이 구독 이벤트를 받지 않게 됩니다.", + "confirm": "삭제 확인", + "cancel": "취소", + "confirmInputWarning": "확인을 위해 올바른 이름을 입력해 주세요.", + "confirmInputPlaceholder": "\"{{name}}\"를 입력하여 확인하세요.", + "confirmInputTip": "확인을 위해 “{{name}}”를 입력해 주세요." + } + }, + "status": { + "active": "활성", + "inactive": "비활성" + }, + "usedByNum": "{{num}} 워크플로우에서 사용됨", + "noUsed": "사용된 워크플로우 없음" + } + }, + "addType": { + "title": "구독 추가", + "description": "트리거 구독을 생성하는 방법을 선택하세요", + "options": { + "apikey": { + "title": "API 키로 생성", + "description": "API 자격 증명을 사용하여 자동으로 구독 생성" + }, + "oauth": { + "title": "OAuth로 생성", + "description": "구독을 생성하려면 타사 플랫폼으로 인증하세요", + "clientSettings": "OAuth 클라이언트 설정", + "clientTitle": "OAuth 클라이언트", + "default": "기본", + "custom": "사용자 지정" + }, + "manual": { + "title": "수동 설정", + "description": "새 구독을 만들려면 URL을 붙여넣으세요", + "tip": "타사 플랫폼에서 URL을 수동으로 구성" + } + } + } + }, + "modal": { + "steps": { + "verify": "확인", + "configuration": "설정" + }, + "common": { + "cancel": "취소", + "back": "뒤로", + "next": "다음", + "create": "만들다", + "verify": "확인", + "authorize": "권한 부여", + "creating": "생성 중...", + "verifying": "검증 중...", + "authorizing": "승인 중..." + }, + "oauthRedirectInfo": "이 도구 제공자에 대한 시스템 클라이언트 비밀이 발견되지 않아 수동 설정이 필요하며, redirect_uri에는 다음을 사용해 주세요", + "apiKey": { + "title": "API 키로 생성", + "verify": { + "title": "자격 증명 확인", + "description": "액세스를 확인하려면 API 자격 증명을 제공해 주세요", + "error": "자격 증명 확인에 실패했습니다. API 키를 확인해주세요.", + "success": "자격 증명이 성공적으로 확인되었습니다" + }, + "configuration": { + "title": "구독 설정", + "description": "구독 설정을 구성하세요" + } + }, + "oauth": { + "title": "OAuth로 생성", + "authorization": { + "title": "OAuth 인증", + "description": "Dify가 귀하의 계정에 접근하도록 허용", + "redirectUrl": "리디렉션 URL", + "redirectUrlHelp": "이 URL을 OAuth 앱 구성에 사용하세요", + "authorizeButton": "{{provider}}로 승인", + "waitingAuth": "승인 대기 중...", + "authSuccess": "승인 성공", + "authFailed": "OAuth 인증 정보를 가져오지 못했습니다", + "waitingJump": "승인됨, 이륙 대기 중" + }, + "configuration": { + "title": "구독 설정", + "description": "승인 후 구독 설정을 구성하세요", + "success": "OAuth 구성 성공", + "failed": "OAuth 구성 실패" + }, + "remove": { + "success": "OAuth 제거 성공", + "failed": "OAuth 제거 실패" + }, + "save": { + "success": "OAuth 구성이 성공적으로 저장되었습니다" + } + }, + "manual": { + "title": "수동 설정", + "description": "웹훅 구독을 수동으로 구성하세요", + "logs": { + "title": "요청 기록", + "request": "요청", + "loading": "{{pluginName}}의 요청을 기다리는 중..." + } + }, + "form": { + "subscriptionName": { + "label": "구독 이름", + "placeholder": "구독 이름 입력", + "required": "구독 이름은 필수 항목입니다" + }, + "callbackUrl": { + "label": "콜백 URL", + "description": "이 URL은 웹훅 이벤트를 수신합니다", + "tooltip": "트리거 제공자로부터 콜백 요청을 받을 수 있는 공개 접근 가능한 엔드포인트를 제공하십시오.", + "placeholder": "생성 중...", + "privateAddressWarning": "이 URL은 내부 주소인 것으로 보이며, 이로 인해 웹후크 요청이 실패할 수 있습니다. TRIGGER_URL을 공개 주소로 변경할 수 있습니다." + } + }, + "errors": { + "createFailed": "구독 생성에 실패했습니다", + "verifyFailed": "인증 정보를 확인하지 못했습니다", + "authFailed": "인증 실패", + "networkError": "네트워크 오류가 발생했습니다. 다시 시도해주세요." + } + }, + "events": { + "title": "사용 가능한 이벤트", + "description": "이 트리거 플러그인이 구독할 수 있는 이벤트", + "empty": "이용 가능한 이벤트가 없습니다", + "event": "이벤트", + "events": "이벤트", + "actionNum": "{{num}} {{event}} 포함", + "item": { + "parameters": "{{count}} 매개변수", + "noParameters": "매개변수 없음" + }, + "output": "출력" + }, + "node": { + "status": { + "warning": "연결 끊기" + } + } +} diff --git a/web/i18n/ko-KR/plugin-trigger.ts b/web/i18n/ko-KR/plugin-trigger.ts deleted file mode 100644 index edbe5c1fcd..0000000000 --- a/web/i18n/ko-KR/plugin-trigger.ts +++ /dev/null @@ -1,186 +0,0 @@ -const translation = { - subscription: { - title: '구독', - listNum: '{{num}} 구독', - empty: { - title: '구독 없음', - button: '새 구독', - }, - createButton: { - oauth: 'OAuth로 새 구독', - apiKey: 'API 키를 이용한 새 구독', - manual: '새 구독을 만들려면 URL을 붙여넣으세요', - }, - createSuccess: '구독이 성공적으로 생성되었습니다', - createFailed: '구독 생성에 실패했습니다', - maxCount: '최대 {{num}} 구독', - selectPlaceholder: '구독 선택', - noSubscriptionSelected: '선택한 구독이 없습니다', - subscriptionRemoved: '구독 취소됨', - list: { - title: '구독', - addButton: '추가', - tip: '구독을 통해 이벤트 받기', - item: { - enabled: '활성화됨', - disabled: '사용하지 않음', - credentialType: { - api_key: 'API 키', - oauth2: 'OAuth', - unauthorized: '매뉴얼', - }, - actions: { - delete: '삭제', - deleteConfirm: { - title: '{{name}}을(를) 삭제하시겠습니까?', - success: '구독 {{name}}이(가) 성공적으로 삭제되었습니다', - error: '구독 {{name}} 삭제 실패', - content: '삭제하면 이 구독은 복구할 수 없습니다. 확인해주세요.', - contentWithApps: '현재 구독은 {{count}}개의 애플리케이션에서 참조되고 있습니다. 이를 삭제하면 구성된 애플리케이션이 구독 이벤트를 받지 않게 됩니다.', - confirm: '삭제 확인', - cancel: '취소', - confirmInputWarning: '확인을 위해 올바른 이름을 입력해 주세요.', - confirmInputPlaceholder: '"{{name}}"를 입력하여 확인하세요.', - confirmInputTip: '확인을 위해 “{{name}}”를 입력해 주세요.', - }, - }, - status: { - active: '활성', - inactive: '비활성', - }, - usedByNum: '{{num}} 워크플로우에서 사용됨', - noUsed: '사용된 워크플로우 없음', - }, - }, - addType: { - title: '구독 추가', - description: '트리거 구독을 생성하는 방법을 선택하세요', - options: { - apikey: { - title: 'API 키로 생성', - description: 'API 자격 증명을 사용하여 자동으로 구독 생성', - }, - oauth: { - title: 'OAuth로 생성', - description: '구독을 생성하려면 타사 플랫폼으로 인증하세요', - clientSettings: 'OAuth 클라이언트 설정', - clientTitle: 'OAuth 클라이언트', - default: '기본', - custom: '사용자 지정', - }, - manual: { - title: '수동 설정', - description: '새 구독을 만들려면 URL을 붙여넣으세요', - tip: '타사 플랫폼에서 URL을 수동으로 구성', - }, - }, - }, - }, - modal: { - steps: { - verify: '확인', - configuration: '설정', - }, - common: { - cancel: '취소', - back: '뒤로', - next: '다음', - create: '만들다', - verify: '확인', - authorize: '권한 부여', - creating: '생성 중...', - verifying: '검증 중...', - authorizing: '승인 중...', - }, - oauthRedirectInfo: '이 도구 제공자에 대한 시스템 클라이언트 비밀이 발견되지 않아 수동 설정이 필요하며, redirect_uri에는 다음을 사용해 주세요', - apiKey: { - title: 'API 키로 생성', - verify: { - title: '자격 증명 확인', - description: '액세스를 확인하려면 API 자격 증명을 제공해 주세요', - error: '자격 증명 확인에 실패했습니다. API 키를 확인해주세요.', - success: '자격 증명이 성공적으로 확인되었습니다', - }, - configuration: { - title: '구독 설정', - description: '구독 설정을 구성하세요', - }, - }, - oauth: { - title: 'OAuth로 생성', - authorization: { - title: 'OAuth 인증', - description: 'Dify가 귀하의 계정에 접근하도록 허용', - redirectUrl: '리디렉션 URL', - redirectUrlHelp: '이 URL을 OAuth 앱 구성에 사용하세요', - authorizeButton: '{{provider}}로 승인', - waitingAuth: '승인 대기 중...', - authSuccess: '승인 성공', - authFailed: 'OAuth 인증 정보를 가져오지 못했습니다', - waitingJump: '승인됨, 이륙 대기 중', - }, - configuration: { - title: '구독 설정', - description: '승인 후 구독 설정을 구성하세요', - success: 'OAuth 구성 성공', - failed: 'OAuth 구성 실패', - }, - remove: { - success: 'OAuth 제거 성공', - failed: 'OAuth 제거 실패', - }, - save: { - success: 'OAuth 구성이 성공적으로 저장되었습니다', - }, - }, - manual: { - title: '수동 설정', - description: '웹훅 구독을 수동으로 구성하세요', - logs: { - title: '요청 기록', - request: '요청', - loading: '{{pluginName}}의 요청을 기다리는 중...', - }, - }, - form: { - subscriptionName: { - label: '구독 이름', - placeholder: '구독 이름 입력', - required: '구독 이름은 필수 항목입니다', - }, - callbackUrl: { - label: '콜백 URL', - description: '이 URL은 웹훅 이벤트를 수신합니다', - tooltip: '트리거 제공자로부터 콜백 요청을 받을 수 있는 공개 접근 가능한 엔드포인트를 제공하십시오.', - placeholder: '생성 중...', - privateAddressWarning: '이 URL은 내부 주소인 것으로 보이며, 이로 인해 웹후크 요청이 실패할 수 있습니다. TRIGGER_URL을 공개 주소로 변경할 수 있습니다.', - }, - }, - errors: { - createFailed: '구독 생성에 실패했습니다', - verifyFailed: '인증 정보를 확인하지 못했습니다', - authFailed: '인증 실패', - networkError: '네트워크 오류가 발생했습니다. 다시 시도해주세요.', - }, - }, - events: { - title: '사용 가능한 이벤트', - description: '이 트리거 플러그인이 구독할 수 있는 이벤트', - empty: '이용 가능한 이벤트가 없습니다', - event: '이벤트', - events: '이벤트', - actionNum: '{{num}} {{event}} 포함', - item: { - parameters: '{{count}} 매개변수', - noParameters: '매개변수 없음', - }, - output: '출력', - }, - node: { - status: { - warning: '연결 끊기', - }, - }, -} - -export default translation diff --git a/web/i18n/ko-KR/plugin.json b/web/i18n/ko-KR/plugin.json new file mode 100644 index 0000000000..ecb61224ee --- /dev/null +++ b/web/i18n/ko-KR/plugin.json @@ -0,0 +1,323 @@ +{ + "category": { + "agents": "에이전트 전략", + "models": "모델", + "all": "모두", + "extensions": "확장", + "tools": "도구", + "bundles": "번들", + "datasources": "데이터 소스", + "triggers": "유발 요인" + }, + "categorySingle": { + "extension": "확장", + "tool": "도구", + "agent": "에이전트 전략", + "bundle": "보따리", + "model": "모델", + "datasource": "데이터 소스", + "trigger": "트리거" + }, + "list": { + "source": { + "marketplace": "마켓플레이스에서 설치", + "local": "로컬 패키지 파일에서 설치", + "github": "GitHub 에서 설치" + }, + "noInstalled": "설치된 플러그인이 없습니다.", + "notFound": "플러그인을 찾을 수 없습니다." + }, + "source": { + "local": "로컬 패키지 파일", + "marketplace": "마켓", + "github": "깃허브" + }, + "detailPanel": { + "categoryTip": { + "marketplace": "마켓플레이스에서 설치됨", + "debugging": "디버깅 플러그인", + "github": "Github 에서 설치됨", + "local": "로컬 플러그인" + }, + "operation": { + "detail": "세부 정보", + "install": "설치", + "viewDetail": "자세히보기", + "info": "플러그인 정보", + "update": "업데이트", + "remove": "제거", + "checkUpdate": "업데이트 확인", + "back": "뒤로" + }, + "toolSelector": { + "empty": "'+' 버튼을 클릭하여 도구를 추가합니다. 여러 도구를 추가할 수 있습니다.", + "descriptionLabel": "도구 설명", + "uninstalledContent": "이 플러그인은 로컬/GitHub 저장소에서 설치됩니다. 설치 후 사용하십시오.", + "params": "추론 구성", + "paramsTip1": "LLM 추론 파라미터를 제어합니다.", + "uninstalledLink": "플러그인에서 관리", + "unsupportedTitle": "지원되지 않는 작업", + "auto": "자동 번역", + "settings": "사용자 설정", + "unsupportedContent2": "버전을 전환하려면 클릭합니다.", + "uninstalledTitle": "도구가 설치되지 않음", + "descriptionPlaceholder": "도구의 용도에 대한 간략한 설명 (예: 특정 위치의 온도 가져오기).", + "title": "추가 도구", + "toolLabel": "도구", + "placeholder": "도구 선택...", + "paramsTip2": "'자동'이 꺼져 있으면 기본값이 사용됩니다.", + "unsupportedContent": "설치된 플러그인 버전은 이 작업을 제공하지 않습니다.", + "toolSetting": "도구 설정", + "unsupportedMCPTool": "현재 선택된 에이전트 전략 플러그인 버전은 MCP 도구를 지원하지 않습니다." + }, + "configureApp": "앱 구성", + "strategyNum": "{{번호}} {{전략}} 포함", + "endpointModalDesc": "구성이 완료되면 API 엔드포인트를 통해 플러그인에서 제공하는 기능을 사용할 수 있습니다.", + "actionNum": "{{번호}} {{행동}} 포함", + "endpointDeleteTip": "엔드포인트 제거", + "modelNum": "{{번호}} 포함 된 모델", + "configureModel": "모델 구성", + "configureTool": "구성 도구", + "switchVersion": "스위치 버전", + "endpointsEmpty": "'+' 버튼을 클릭하여 엔드포인트를 추가합니다.", + "endpointModalTitle": "엔드포인트 설정", + "endpointsTip": "이 플러그인은 엔드포인트를 통해 특정 기능을 제공하며 현재 작업 공간에 대해 여러 엔드포인트 세트를 구성할 수 있습니다.", + "endpointDisableContent": "{{name}}을 비활성화하시겠습니까?", + "endpointDeleteContent": "{{name}}을 제거하시겠습니까?", + "disabled": "비활성화", + "endpointsDocLink": "문서 보기", + "endpoints": "끝점", + "serviceOk": "서비스 정상", + "endpointDisableTip": "엔드포인트 비활성화", + "deprecation": { + "reason": { + "ownershipTransferred": "소유권 이전", + "businessAdjustments": "사업 조정", + "noMaintainer": "유지보수자 없음" + }, + "noReason": "이 플러그인은 더 이상 지원되지 않으며 업데이트되지 않을 것입니다.", + "onlyReason": "이 플러그인은 {{deprecatedReason}}로 인해 사용 중단되었으며 더 이상 업데이트되지 않습니다.", + "fullMessage": "이 플러그인은 {{deprecatedReason}}로 인해 사용 중단되었으며 더 이상 업데이트되지 않습니다. 대신 {{-alternativePluginId}}를 사용하십시오." + } + }, + "debugInfo": { + "title": "디버깅", + "viewDocs": "문서 보기" + }, + "privilege": { + "admins": "관리자", + "title": "플러그인 기본 설정", + "whoCanDebug": "누가 플러그인을 디버깅할 수 있나요?", + "noone": "아무도 없어", + "everyone": "모두", + "whoCanInstall": "누가 플러그인을 설치하고 관리할 수 있습니까?" + }, + "pluginInfoModal": { + "packageName": "패키지", + "repository": "저장소", + "title": "플러그인 정보", + "release": "석방" + }, + "action": { + "deleteContentRight": "플러그인?", + "usedInApps": "이 플러그인은 {{num}}개의 앱에서 사용되고 있습니다.", + "pluginInfo": "플러그인 정보", + "checkForUpdates": "업데이트 확인", + "deleteContentLeft": "제거하시겠습니까?", + "delete": "플러그인 제거" + }, + "installModal": { + "labels": { + "package": "패키지", + "repository": "저장소", + "version": "버전" + }, + "back": "뒤로", + "readyToInstallPackage": "다음 플러그인을 설치하려고 합니다.", + "close": "닫다", + "fromTrustSource": "신뢰할 수 있는 출처의 플러그인만 설치하도록 하세요.", + "readyToInstall": "다음 플러그인을 설치하려고 합니다.", + "uploadFailed": "업로드 실패", + "installPlugin": "플러그인 설치", + "pluginLoadErrorDesc": "이 플러그인은 설치되지 않습니다.", + "installedSuccessfully": "설치 성공", + "installedSuccessfullyDesc": "플러그인이 성공적으로 설치되었습니다.", + "installing": "설치...", + "pluginLoadError": "플러그인 로드 오류", + "installFailedDesc": "플러그인이 설치되지 않았습니다.", + "installFailed": "설치 실패", + "next": "다음", + "installComplete": "설치 완료", + "install": "설치하다", + "readyToInstallPackages": "다음 {{num}} 플러그인을 설치하려고 합니다.", + "uploadingPackage": "{{packageName}} 업로드 중...", + "dropPluginToInstall": "플러그인 패키지를 여기에 놓아 설치하십시오.", + "cancel": "취소", + "installWarning": "이 플러그인은 설치할 수 없습니다." + }, + "installFromGitHub": { + "uploadFailed": "업로드 실패", + "selectVersionPlaceholder": "버전을 선택하세요.", + "installPlugin": "GitHub 에서 플러그인 설치", + "installFailed": "설치 실패", + "updatePlugin": "GitHub 에서 플러그인 업데이트", + "selectPackage": "패키지 선택", + "gitHubRepo": "GitHub 리포지토리", + "selectPackagePlaceholder": "패키지를 선택하세요.", + "installedSuccessfully": "설치 성공", + "selectVersion": "버전 선택", + "installNote": "신뢰할 수 있는 출처의 플러그인만 설치하도록 하세요." + }, + "upgrade": { + "usedInApps": "{{num}}개의 앱에서 사용됨", + "description": "다음 플러그인을 설치하려고 합니다.", + "successfulTitle": "설치 성공", + "upgrade": "설치하다", + "upgrading": "설치...", + "close": "닫다", + "title": "플러그인 설치" + }, + "error": { + "noReleasesFound": "릴리스를 찾을 수 없습니다. GitHub 리포지토리 또는 입력 URL 을 확인하세요.", + "fetchReleasesError": "릴리스를 검색할 수 없습니다. 나중에 다시 시도하십시오.", + "inValidGitHubUrl": "잘못된 GitHub URL 입니다. 유효한 URL 을 https://github.com/owner/repo 형식으로 입력하십시오." + }, + "marketplace": { + "sortOption": { + "recentlyUpdated": "최근 업데이트", + "firstReleased": "첫 출시", + "newlyReleased": "새로 출시 된", + "mostPopular": "가장 인기 있는" + }, + "noPluginFound": "플러그인을 찾을 수 없습니다.", + "empower": "AI 개발 역량 강화", + "viewMore": "더보기", + "difyMarketplace": "Dify 마켓플레이스", + "pluginsResult": "{{num}} 결과", + "discover": "발견하다", + "moreFrom": "Marketplace 에서 더 보기", + "sortBy": "정렬", + "and": "그리고", + "verifiedTip": "Dify 에 의해 확인됨", + "partnerTip": "Dify 파트너에 의해 확인됨" + }, + "task": { + "installingWithSuccess": "{{installingLength}} 플러그인 설치, {{successLength}} 성공.", + "installedError": "{{errorLength}} 플러그인 설치 실패", + "installing": "{{installingLength}} 플러그인 설치, 0 완료.", + "installingWithError": "{{installingLength}} 플러그인 설치, {{successLength}} 성공, {{errorLength}} 실패", + "installError": "{{errorLength}} 플러그인 설치 실패, 보려면 클릭하십시오.", + "clearAll": "모두 지우기", + "installSuccess": "{{successLength}} plugins installed successfully", + "installed": "Installed", + "runningPlugins": "Installing Plugins", + "successPlugins": "Successfully Installed Plugins", + "errorPlugins": "Failed to Install Plugins" + }, + "installAction": "설치하다", + "searchTools": "검색 도구...", + "installPlugin": "플러그인 설치", + "endpointsEnabled": "{{num}}개의 엔드포인트 집합이 활성화되었습니다.", + "installFrom": "에서 설치", + "allCategories": "모든 카테고리", + "findMoreInMarketplace": "Marketplace 에서 더 알아보기", + "searchCategories": "검색 카테고리", + "search": "검색", + "searchInMarketplace": "Marketplace 에서 검색", + "from": "보낸 사람", + "searchPlugins": "검색 플러그인", + "install": "{{num}} 설치", + "fromMarketplace": "Marketplace 에서", + "metadata": { + "title": "플러그인" + }, + "difyVersionNotCompatible": "현재 Dify 버전이 이 플러그인과 호환되지 않습니다. 필요한 최소 버전으로 업그레이드하십시오: {{minimalDifyVersion}}", + "requestAPlugin": "플러그인을 요청하세요", + "publishPlugins": "플러그인 게시", + "auth": { + "oauthClient": "OAuth 클라이언트", + "default": "기본", + "addApi": "API 키 추가하기", + "authorization": "권한", + "oauthClientSettings": "OAuth 클라이언트 설정", + "setupOAuth": "OAuth 클라이언트 설정", + "setDefault": "기본값으로 설정", + "workspaceDefault": "작업 공간 기본값", + "saveAndAuth": "저장하고 승인하세요", + "addOAuth": "OAuth 추가하기", + "custom": "맞춤형", + "authRemoved": "인증이 제거되었습니다.", + "saveOnly": "저장만 하기", + "authorizationName": "권한 이름", + "useApiAuth": "API 키 인증 구성", + "useOAuth": "OAuth 사용하기", + "useApi": "API 키를 사용하세요.", + "authorizations": "권한", + "useOAuthAuth": "OAuth 인증 사용하기", + "useApiAuthDesc": "자격증명을 구성한 후에는 작업 공간 내의 모든 구성원이 애플리케이션을 조정할 때 이 도구를 사용할 수 있습니다.", + "clientInfo": "이 도구 공급자에 대한 시스템 클라이언트 비밀이 발견되지 않았으므로 수동으로 설정해야 하며, redirect_uri는 다음을 사용하십시오.", + "unavailable": "사용할 수 없음", + "credentialUnavailable": "현재 자격 증명이 사용 불가능합니다. 관리자에게 문의하십시오.", + "customCredentialUnavailable": "현재 사용자 정의 자격 증명이 사용 불가능합니다.", + "credentialUnavailableInButton": "자격 증명 사용 불가능", + "connectedWorkspace": "연결된 작업 공간", + "emptyAuth": "인증을 구성하십시오." + }, + "deprecated": "사용 중단됨", + "autoUpdate": { + "strategy": { + "disabled": { + "name": "장애인", + "description": "플러그인이 자동으로 업데이트되지 않습니다." + }, + "fixOnly": { + "name": "수정만 하기", + "selectedDescription": "패치 버전만 자동 업데이트", + "description": "패치 버전만 자동 업데이트 (예: 1.0.1 → 1.0.2). 마이너 버전 변경은 업데이트를 유발하지 않습니다." + }, + "latest": { + "name": "최신", + "description": "항상 최신 버전으로 업데이트하세요.", + "selectedDescription": "항상 최신 버전으로 업데이트하세요." + } + }, + "upgradeMode": { + "partial": "선택된 것만", + "all": "모두 업데이트하기", + "exclude": "선택한 항목 제외" + }, + "upgradeModePlaceholder": { + "partial": "선택된 플러그인만 자동 업데이트됩니다. 현재 선택된 플러그인이 없으므로 자동 업데이트되는 플러그인은 없습니다.", + "exclude": "선택한 플러그인은 자동으로 업데이트되지 않습니다." + }, + "operation": { + "clearAll": "모두 지우기", + "select": "플러그인을 선택하세요" + }, + "pluginDowngradeWarning": { + "exclude": "자동 업데이트에서 제외", + "title": "플러그인 다운그레이드", + "downgrade": "어쨌든 다운그레이드", + "description": "이 플러그인은 현재 자동 업데이트가 활성화되어 있습니다. 버전을 다운그레이드하면 다음 자동 업데이트 중에 변경 사항이 덮어써질 수 있습니다." + }, + "noPluginPlaceholder": { + "noFound": "플러그인이 없습니다.", + "noInstalled": "설치된 플러그인이 없습니다." + }, + "updateTimeTitle": "업데이트 시간", + "automaticUpdates": "자동 업데이트", + "updateTime": "업데이트 시간", + "nextUpdateTime": "다음 자동 업데이트: {{time}}", + "updateSettings": "설정 업데이트", + "partialUPdate": "다음 {{num}} 플러그인만 자동 업데이트됩니다.", + "changeTimezone": "시간대를 변경하려면 설정으로 이동하세요.", + "specifyPluginsToUpdate": "업데이트할 플러그인을 지정하십시오.", + "excludeUpdate": "다음 {{num}} 플러그인은 자동 업데이트되지 않습니다." + }, + "readmeInfo": { + "title": "읽어보기", + "needHelpCheckReadme": "도움이 필요하신가요? README를 확인하세요.", + "noReadmeAvailable": "사용 가능한 README가 없습니다", + "failedToFetch": "README를 가져오지 못했습니다" + } +} diff --git a/web/i18n/ko-KR/plugin.ts b/web/i18n/ko-KR/plugin.ts deleted file mode 100644 index 710490b9fb..0000000000 --- a/web/i18n/ko-KR/plugin.ts +++ /dev/null @@ -1,325 +0,0 @@ -const translation = { - category: { - agents: '에이전트 전략', - models: '모델', - all: '모두', - extensions: '확장', - tools: '도구', - bundles: '번들', - datasources: '데이터 소스', - triggers: '유발 요인', - }, - categorySingle: { - extension: '확장', - tool: '도구', - agent: '에이전트 전략', - bundle: '보따리', - model: '모델', - datasource: '데이터 소스', - trigger: '트리거', - }, - list: { - source: { - marketplace: '마켓플레이스에서 설치', - local: '로컬 패키지 파일에서 설치', - github: 'GitHub 에서 설치', - }, - noInstalled: '설치된 플러그인이 없습니다.', - notFound: '플러그인을 찾을 수 없습니다.', - }, - source: { - local: '로컬 패키지 파일', - marketplace: '마켓', - github: '깃허브', - }, - detailPanel: { - categoryTip: { - marketplace: '마켓플레이스에서 설치됨', - debugging: '디버깅 플러그인', - github: 'Github 에서 설치됨', - local: '로컬 플러그인', - }, - operation: { - detail: '세부 정보', - install: '설치', - viewDetail: '자세히보기', - info: '플러그인 정보', - update: '업데이트', - remove: '제거', - checkUpdate: '업데이트 확인', - back: '뒤로', - }, - toolSelector: { - empty: '\'+\' 버튼을 클릭하여 도구를 추가합니다. 여러 도구를 추가할 수 있습니다.', - descriptionLabel: '도구 설명', - uninstalledContent: '이 플러그인은 로컬/GitHub 저장소에서 설치됩니다. 설치 후 사용하십시오.', - params: '추론 구성', - paramsTip1: 'LLM 추론 파라미터를 제어합니다.', - uninstalledLink: '플러그인에서 관리', - unsupportedTitle: '지원되지 않는 작업', - auto: '자동 번역', - settings: '사용자 설정', - unsupportedContent2: '버전을 전환하려면 클릭합니다.', - uninstalledTitle: '도구가 설치되지 않음', - descriptionPlaceholder: '도구의 용도에 대한 간략한 설명 (예: 특정 위치의 온도 가져오기).', - title: '추가 도구', - toolLabel: '도구', - placeholder: '도구 선택...', - paramsTip2: '\'자동\'이 꺼져 있으면 기본값이 사용됩니다.', - unsupportedContent: '설치된 플러그인 버전은 이 작업을 제공하지 않습니다.', - toolSetting: '도구 설정', - unsupportedMCPTool: '현재 선택된 에이전트 전략 플러그인 버전은 MCP 도구를 지원하지 않습니다.', - }, - configureApp: '앱 구성', - strategyNum: '{{번호}} {{전략}} 포함', - endpointModalDesc: '구성이 완료되면 API 엔드포인트를 통해 플러그인에서 제공하는 기능을 사용할 수 있습니다.', - actionNum: '{{번호}} {{행동}} 포함', - endpointDeleteTip: '엔드포인트 제거', - modelNum: '{{번호}} 포함 된 모델', - configureModel: '모델 구성', - configureTool: '구성 도구', - switchVersion: '스위치 버전', - endpointsEmpty: '\'+\' 버튼을 클릭하여 엔드포인트를 추가합니다.', - endpointModalTitle: '엔드포인트 설정', - endpointsTip: '이 플러그인은 엔드포인트를 통해 특정 기능을 제공하며 현재 작업 공간에 대해 여러 엔드포인트 세트를 구성할 수 있습니다.', - endpointDisableContent: '{{name}}을 비활성화하시겠습니까?', - endpointDeleteContent: '{{name}}을 제거하시겠습니까?', - disabled: '비활성화', - endpointsDocLink: '문서 보기', - endpoints: '끝점', - serviceOk: '서비스 정상', - endpointDisableTip: '엔드포인트 비활성화', - deprecation: { - reason: { - ownershipTransferred: '소유권 이전', - businessAdjustments: '사업 조정', - noMaintainer: '유지보수자 없음', - }, - noReason: '이 플러그인은 더 이상 지원되지 않으며 업데이트되지 않을 것입니다.', - onlyReason: '이 플러그인은 {{deprecatedReason}}로 인해 사용 중단되었으며 더 이상 업데이트되지 않습니다.', - fullMessage: '이 플러그인은 {{deprecatedReason}}로 인해 사용 중단되었으며 더 이상 업데이트되지 않습니다. 대신 {{-alternativePluginId}}를 사용하십시오.', - }, - }, - debugInfo: { - title: '디버깅', - viewDocs: '문서 보기', - }, - privilege: { - admins: '관리자', - title: '플러그인 기본 설정', - whoCanDebug: '누가 플러그인을 디버깅할 수 있나요?', - noone: '아무도 없어', - everyone: '모두', - whoCanInstall: '누가 플러그인을 설치하고 관리할 수 있습니까?', - }, - pluginInfoModal: { - packageName: '패키지', - repository: '저장소', - title: '플러그인 정보', - release: '석방', - }, - action: { - deleteContentRight: '플러그인?', - usedInApps: '이 플러그인은 {{num}}개의 앱에서 사용되고 있습니다.', - pluginInfo: '플러그인 정보', - checkForUpdates: '업데이트 확인', - deleteContentLeft: '제거하시겠습니까?', - delete: '플러그인 제거', - }, - installModal: { - labels: { - package: '패키지', - repository: '저장소', - version: '버전', - }, - back: '뒤로', - readyToInstallPackage: '다음 플러그인을 설치하려고 합니다.', - close: '닫다', - fromTrustSource: '신뢰할 수 있는 출처의 플러그인만 설치하도록 하세요.', - readyToInstall: '다음 플러그인을 설치하려고 합니다.', - uploadFailed: '업로드 실패', - installPlugin: '플러그인 설치', - pluginLoadErrorDesc: '이 플러그인은 설치되지 않습니다.', - installedSuccessfully: '설치 성공', - installedSuccessfullyDesc: '플러그인이 성공적으로 설치되었습니다.', - installing: '설치...', - pluginLoadError: '플러그인 로드 오류', - installFailedDesc: '플러그인이 설치되지 않았습니다.', - installFailed: '설치 실패', - next: '다음', - installComplete: '설치 완료', - install: '설치하다', - readyToInstallPackages: '다음 {{num}} 플러그인을 설치하려고 합니다.', - uploadingPackage: '{{packageName}} 업로드 중...', - dropPluginToInstall: '플러그인 패키지를 여기에 놓아 설치하십시오.', - cancel: '취소', - installWarning: '이 플러그인은 설치할 수 없습니다.', - }, - installFromGitHub: { - uploadFailed: '업로드 실패', - selectVersionPlaceholder: '버전을 선택하세요.', - installPlugin: 'GitHub 에서 플러그인 설치', - installFailed: '설치 실패', - updatePlugin: 'GitHub 에서 플러그인 업데이트', - selectPackage: '패키지 선택', - gitHubRepo: 'GitHub 리포지토리', - selectPackagePlaceholder: '패키지를 선택하세요.', - installedSuccessfully: '설치 성공', - selectVersion: '버전 선택', - installNote: '신뢰할 수 있는 출처의 플러그인만 설치하도록 하세요.', - }, - upgrade: { - usedInApps: '{{num}}개의 앱에서 사용됨', - description: '다음 플러그인을 설치하려고 합니다.', - successfulTitle: '설치 성공', - upgrade: '설치하다', - upgrading: '설치...', - close: '닫다', - title: '플러그인 설치', - }, - error: { - noReleasesFound: '릴리스를 찾을 수 없습니다. GitHub 리포지토리 또는 입력 URL 을 확인하세요.', - fetchReleasesError: '릴리스를 검색할 수 없습니다. 나중에 다시 시도하십시오.', - inValidGitHubUrl: '잘못된 GitHub URL 입니다. 유효한 URL 을 https://github.com/owner/repo 형식으로 입력하십시오.', - }, - marketplace: { - sortOption: { - recentlyUpdated: '최근 업데이트', - firstReleased: '첫 출시', - newlyReleased: '새로 출시 된', - mostPopular: '가장 인기 있는', - }, - noPluginFound: '플러그인을 찾을 수 없습니다.', - empower: 'AI 개발 역량 강화', - viewMore: '더보기', - difyMarketplace: 'Dify 마켓플레이스', - pluginsResult: '{{num}} 결과', - discover: '발견하다', - moreFrom: 'Marketplace 에서 더 보기', - sortBy: '정렬', - and: '그리고', - verifiedTip: 'Dify 에 의해 확인됨', - partnerTip: 'Dify 파트너에 의해 확인됨', - }, - task: { - installingWithSuccess: '{{installingLength}} 플러그인 설치, {{successLength}} 성공.', - installedError: '{{errorLength}} 플러그인 설치 실패', - installing: '{{installingLength}} 플러그인 설치, 0 완료.', - installingWithError: '{{installingLength}} 플러그인 설치, {{successLength}} 성공, {{errorLength}} 실패', - installError: '{{errorLength}} 플러그인 설치 실패, 보려면 클릭하십시오.', - clearAll: '모두 지우기', - installSuccess: '{{successLength}} plugins installed successfully', - installed: 'Installed', - runningPlugins: 'Installing Plugins', - successPlugins: 'Successfully Installed Plugins', - errorPlugins: 'Failed to Install Plugins', - }, - installAction: '설치하다', - searchTools: '검색 도구...', - installPlugin: '플러그인 설치', - endpointsEnabled: '{{num}}개의 엔드포인트 집합이 활성화되었습니다.', - installFrom: '에서 설치', - allCategories: '모든 카테고리', - findMoreInMarketplace: 'Marketplace 에서 더 알아보기', - searchCategories: '검색 카테고리', - search: '검색', - searchInMarketplace: 'Marketplace 에서 검색', - from: '보낸 사람', - searchPlugins: '검색 플러그인', - install: '{{num}} 설치', - fromMarketplace: 'Marketplace 에서', - metadata: { - title: '플러그인', - }, - difyVersionNotCompatible: '현재 Dify 버전이 이 플러그인과 호환되지 않습니다. 필요한 최소 버전으로 업그레이드하십시오: {{minimalDifyVersion}}', - requestAPlugin: '플러그인을 요청하세요', - publishPlugins: '플러그인 게시', - auth: { - oauthClient: 'OAuth 클라이언트', - default: '기본', - addApi: 'API 키 추가하기', - authorization: '권한', - oauthClientSettings: 'OAuth 클라이언트 설정', - setupOAuth: 'OAuth 클라이언트 설정', - setDefault: '기본값으로 설정', - workspaceDefault: '작업 공간 기본값', - saveAndAuth: '저장하고 승인하세요', - addOAuth: 'OAuth 추가하기', - custom: '맞춤형', - authRemoved: '인증이 제거되었습니다.', - saveOnly: '저장만 하기', - authorizationName: '권한 이름', - useApiAuth: 'API 키 인증 구성', - useOAuth: 'OAuth 사용하기', - useApi: 'API 키를 사용하세요.', - authorizations: '권한', - useOAuthAuth: 'OAuth 인증 사용하기', - useApiAuthDesc: '자격증명을 구성한 후에는 작업 공간 내의 모든 구성원이 애플리케이션을 조정할 때 이 도구를 사용할 수 있습니다.', - clientInfo: '이 도구 공급자에 대한 시스템 클라이언트 비밀이 발견되지 않았으므로 수동으로 설정해야 하며, redirect_uri는 다음을 사용하십시오.', - unavailable: '사용할 수 없음', - credentialUnavailable: '현재 자격 증명이 사용 불가능합니다. 관리자에게 문의하십시오.', - customCredentialUnavailable: '현재 사용자 정의 자격 증명이 사용 불가능합니다.', - credentialUnavailableInButton: '자격 증명 사용 불가능', - connectedWorkspace: '연결된 작업 공간', - emptyAuth: '인증을 구성하십시오.', - }, - deprecated: '사용 중단됨', - autoUpdate: { - strategy: { - disabled: { - name: '장애인', - description: '플러그인이 자동으로 업데이트되지 않습니다.', - }, - fixOnly: { - name: '수정만 하기', - selectedDescription: '패치 버전만 자동 업데이트', - description: '패치 버전만 자동 업데이트 (예: 1.0.1 → 1.0.2). 마이너 버전 변경은 업데이트를 유발하지 않습니다.', - }, - latest: { - name: '최신', - description: '항상 최신 버전으로 업데이트하세요.', - selectedDescription: '항상 최신 버전으로 업데이트하세요.', - }, - }, - upgradeMode: { - partial: '선택된 것만', - all: '모두 업데이트하기', - exclude: '선택한 항목 제외', - }, - upgradeModePlaceholder: { - partial: '선택된 플러그인만 자동 업데이트됩니다. 현재 선택된 플러그인이 없으므로 자동 업데이트되는 플러그인은 없습니다.', - exclude: '선택한 플러그인은 자동으로 업데이트되지 않습니다.', - }, - operation: { - clearAll: '모두 지우기', - select: '플러그인을 선택하세요', - }, - pluginDowngradeWarning: { - exclude: '자동 업데이트에서 제외', - title: '플러그인 다운그레이드', - downgrade: '어쨌든 다운그레이드', - description: '이 플러그인은 현재 자동 업데이트가 활성화되어 있습니다. 버전을 다운그레이드하면 다음 자동 업데이트 중에 변경 사항이 덮어써질 수 있습니다.', - }, - noPluginPlaceholder: { - noFound: '플러그인이 없습니다.', - noInstalled: '설치된 플러그인이 없습니다.', - }, - updateTimeTitle: '업데이트 시간', - automaticUpdates: '자동 업데이트', - updateTime: '업데이트 시간', - nextUpdateTime: '다음 자동 업데이트: {{time}}', - updateSettings: '설정 업데이트', - partialUPdate: '다음 {{num}} 플러그인만 자동 업데이트됩니다.', - changeTimezone: '시간대를 변경하려면 설정으로 이동하세요.', - specifyPluginsToUpdate: '업데이트할 플러그인을 지정하십시오.', - excludeUpdate: '다음 {{num}} 플러그인은 자동 업데이트되지 않습니다.', - }, - readmeInfo: { - title: '읽어보기', - needHelpCheckReadme: '도움이 필요하신가요? README를 확인하세요.', - noReadmeAvailable: '사용 가능한 README가 없습니다', - failedToFetch: 'README를 가져오지 못했습니다', - }, -} - -export default translation diff --git a/web/i18n/ko-KR/register.json b/web/i18n/ko-KR/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/ko-KR/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/ko-KR/register.ts b/web/i18n/ko-KR/register.ts deleted file mode 100644 index e2410dd34b..0000000000 --- a/web/i18n/ko-KR/register.ts +++ /dev/null @@ -1,3 +0,0 @@ -const translation = {} - -export default translation diff --git a/web/i18n/ko-KR/run-log.json b/web/i18n/ko-KR/run-log.json new file mode 100644 index 0000000000..7a1a308d52 --- /dev/null +++ b/web/i18n/ko-KR/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "입력", + "result": "결과", + "detail": "상세정보", + "tracing": "트레이싱", + "resultPanel": { + "status": "상태", + "time": "소요 시간", + "tokens": "토큰 총합" + }, + "meta": { + "title": "메타데이터", + "status": "상태", + "version": "버전", + "executor": "실행자", + "startTime": "시작 시간", + "time": "소요 시간", + "tokens": "토큰 총합", + "steps": "실행 단계" + }, + "resultEmpty": { + "title": "이 실행에서는 JSON 형식만 출력됩니다", + "tipLeft": "를 방문해주세요", + "link": "상세 정보 패널", + "tipRight": "를 확인하세요." + }, + "actionLogs": "작업 로그", + "circularInvocationTip": "현재 워크플로우에 도구/노드의 순환 호출이 있습니다." +} diff --git a/web/i18n/ko-KR/run-log.ts b/web/i18n/ko-KR/run-log.ts deleted file mode 100644 index 7af4cee58d..0000000000 --- a/web/i18n/ko-KR/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -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: '를 확인하세요.', - }, - actionLogs: '작업 로그', - circularInvocationTip: '현재 워크플로우에 도구/노드의 순환 호출이 있습니다.', -} - -export default translation diff --git a/web/i18n/ko-KR/share.json b/web/i18n/ko-KR/share.json new file mode 100644 index 0000000000..53f47dc108 --- /dev/null +++ b/web/i18n/ko-KR/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "", + "appUnavailable": "앱을 사용할 수 없습니다", + "appUnknownError": "앱을 사용할 수 없습니다" + }, + "chat": { + "newChat": "새 채팅", + "pinnedTitle": "고정됨", + "unpinnedTitle": "채팅", + "newChatDefaultName": "새 대화", + "resetChat": "대화 재설정", + "poweredBy": "Powered by", + "prompt": "프롬프트", + "privatePromptConfigTitle": "채팅 설정", + "publicPromptConfigTitle": "초기 프롬프트", + "configStatusDes": "시작하기 전에 채팅 설정을 변경할 수 있습니다", + "configDisabled": "이전 세션의 설정이 현재 세션에서 사용되었습니다.", + "startChat": "채팅 시작", + "privacyPolicyLeft": "앱 개발자가 제공하는", + "privacyPolicyMiddle": "개인 정보 보호 정책", + "privacyPolicyRight": "을 읽어보세요.", + "deleteConversation": { + "title": "대화 삭제", + "content": "이 대화를 삭제하시겠습니까?" + }, + "tryToSolve": "해결하려고 합니다", + "temporarySystemIssue": "죄송합니다. 일시적인 시스템 문제가 발생했습니다.", + "expand": "확장", + "collapse": "축소", + "viewChatSettings": "채팅 설정 보기", + "newChatTip": "이미 새로운 채팅 중입니다.", + "chatFormTip": "채팅이 시작된 후에는 채팅 설정을 수정할 수 없습니다.", + "chatSettingsTitle": "새 채팅 설정" + }, + "generation": { + "tabs": { + "create": "일회용 실행", + "batch": "일괄 실행", + "saved": "저장된 결과" + }, + "savedNoData": { + "title": "아직 저장된 결과가 없습니다!", + "description": "컨텐츠 생성을 시작하고 저장된 결과를 여기서 찾아보세요.", + "startCreateContent": "컨텐츠 생성 시작" + }, + "title": "AI 완성", + "queryTitle": "컨텐츠 쿼리", + "completionResult": "완성 결과", + "queryPlaceholder": "쿼리 컨텐츠를 작성해주세요...", + "run": "실행", + "copy": "복사", + "resultTitle": "AI 완성", + "noData": "AI 가 필요한 내용을 제공할 것입니다.", + "csvUploadTitle": "CSV 파일을 여기로 끌어다 놓거나", + "browse": "찾아보기", + "csvStructureTitle": "CSV 파일은 다음 구조를 따라야 합니다:", + "downloadTemplate": "여기에서 템플릿 다운로드", + "field": "필드", + "batchFailed": { + "info": "{{num}} 회의 실행이 실패했습니다", + "retry": "재시도", + "outputPlaceholder": "출력 컨텐츠 없음" + }, + "errorMsg": { + "empty": "업로드된 파일에 컨텐츠를 입력해주세요.", + "fileStructNotMatch": "업로드된 CSV 파일이 구조와 일치하지 않습니다.", + "emptyLine": "줄 {{rowIndex}}이 (가) 비어 있습니다.", + "invalidLine": "줄 {{rowIndex}}: {{varName}}의 값은 비워둘 수 없습니다.", + "moreThanMaxLengthLine": "줄 {{rowIndex}}: {{varName}}의 값은 {{maxLength}}자를 초과할 수 없습니다.", + "atLeastOne": "업로드된 파일에는 적어도 한 줄의 입력이 필요합니다." + }, + "execution": "실행", + "executions": "{{num}}회 실행", + "stopRun": "실행 중지" + }, + "login": { + "backToHome": "홈으로 돌아가기" + } +} diff --git a/web/i18n/ko-KR/share.ts b/web/i18n/ko-KR/share.ts deleted file mode 100644 index af88cd05da..0000000000 --- a/web/i18n/ko-KR/share.ts +++ /dev/null @@ -1,82 +0,0 @@ -const translation = { - common: { - welcome: '', - appUnavailable: '앱을 사용할 수 없습니다', - appUnknownError: '앱을 사용할 수 없습니다', - }, - chat: { - newChat: '새 채팅', - pinnedTitle: '고정됨', - unpinnedTitle: '채팅', - newChatDefaultName: '새 대화', - resetChat: '대화 재설정', - poweredBy: 'Powered by', - prompt: '프롬프트', - privatePromptConfigTitle: '채팅 설정', - publicPromptConfigTitle: '초기 프롬프트', - configStatusDes: '시작하기 전에 채팅 설정을 변경할 수 있습니다', - configDisabled: '이전 세션의 설정이 현재 세션에서 사용되었습니다.', - startChat: '채팅 시작', - privacyPolicyLeft: '앱 개발자가 제공하는', - privacyPolicyMiddle: '개인 정보 보호 정책', - privacyPolicyRight: '을 읽어보세요.', - deleteConversation: { - title: '대화 삭제', - content: '이 대화를 삭제하시겠습니까?', - }, - tryToSolve: '해결하려고 합니다', - temporarySystemIssue: '죄송합니다. 일시적인 시스템 문제가 발생했습니다.', - expand: '확장', - collapse: '축소', - viewChatSettings: '채팅 설정 보기', - newChatTip: '이미 새로운 채팅 중입니다.', - chatFormTip: '채팅이 시작된 후에는 채팅 설정을 수정할 수 없습니다.', - chatSettingsTitle: '새 채팅 설정', - }, - generation: { - tabs: { - create: '일회용 실행', - batch: '일괄 실행', - saved: '저장된 결과', - }, - savedNoData: { - title: '아직 저장된 결과가 없습니다!', - description: '컨텐츠 생성을 시작하고 저장된 결과를 여기서 찾아보세요.', - startCreateContent: '컨텐츠 생성 시작', - }, - title: 'AI 완성', - queryTitle: '컨텐츠 쿼리', - completionResult: '완성 결과', - queryPlaceholder: '쿼리 컨텐츠를 작성해주세요...', - run: '실행', - copy: '복사', - resultTitle: 'AI 완성', - noData: 'AI 가 필요한 내용을 제공할 것입니다.', - csvUploadTitle: 'CSV 파일을 여기로 끌어다 놓거나', - browse: '찾아보기', - csvStructureTitle: 'CSV 파일은 다음 구조를 따라야 합니다:', - downloadTemplate: '여기에서 템플릿 다운로드', - field: '필드', - batchFailed: { - info: '{{num}} 회의 실행이 실패했습니다', - retry: '재시도', - outputPlaceholder: '출력 컨텐츠 없음', - }, - errorMsg: { - empty: '업로드된 파일에 컨텐츠를 입력해주세요.', - fileStructNotMatch: '업로드된 CSV 파일이 구조와 일치하지 않습니다.', - emptyLine: '줄 {{rowIndex}}이 (가) 비어 있습니다.', - invalidLine: '줄 {{rowIndex}}: {{varName}}의 값은 비워둘 수 없습니다.', - moreThanMaxLengthLine: '줄 {{rowIndex}}: {{varName}}의 값은 {{maxLength}}자를 초과할 수 없습니다.', - atLeastOne: '업로드된 파일에는 적어도 한 줄의 입력이 필요합니다.', - }, - execution: '실행', - executions: '{{num}}회 실행', - stopRun: '실행 중지', - }, - login: { - backToHome: '홈으로 돌아가기', - }, -} - -export default translation diff --git a/web/i18n/ko-KR/time.json b/web/i18n/ko-KR/time.json new file mode 100644 index 0000000000..b49d36d883 --- /dev/null +++ b/web/i18n/ko-KR/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Sun": "일요일", + "Mon": "월요일", + "Tue": "화요일", + "Wed": "수요일", + "Thu": "목요일", + "Fri": "금요일", + "Sat": "토요일" + }, + "months": { + "May": "5 월", + "January": "1 월", + "August": "8 월", + "July": "7 월", + "April": "4 월", + "October": "10 월", + "December": "12 월", + "February": "2 월", + "June": "6 월", + "November": "11 월", + "March": "3 월", + "September": "9 월" + }, + "operation": { + "pickDate": "날짜 선택", + "cancel": "취소", + "ok": "좋아요", + "now": "오늘" + }, + "title": { + "pickTime": "시간 선택" + }, + "defaultPlaceholder": "시간을 선택하세요...", + "dateFormats": { + "input": "YYYY-MM-DD", + "display": "MMMM D, YYYY", + "outputWithTime": "YYYY-MM-DDTHH:mm:ss.SSSZ", + "displayWithTime": "MMMM D, YYYY hh:mm A", + "output": "YYYY-MM-DD" + } +} diff --git a/web/i18n/ko-KR/time.ts b/web/i18n/ko-KR/time.ts deleted file mode 100644 index 1f2540581a..0000000000 --- a/web/i18n/ko-KR/time.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - daysInWeek: { - Sun: '일요일', - Mon: '월요일', - Tue: '화요일', - Wed: '수요일', - Thu: '목요일', - Fri: '금요일', - Sat: '토요일', - }, - months: { - May: '5 월', - January: '1 월', - August: '8 월', - July: '7 월', - April: '4 월', - October: '10 월', - December: '12 월', - February: '2 월', - June: '6 월', - November: '11 월', - March: '3 월', - September: '9 월', - }, - operation: { - pickDate: '날짜 선택', - cancel: '취소', - ok: '좋아요', - now: '오늘', - }, - title: { - pickTime: '시간 선택', - }, - defaultPlaceholder: '시간을 선택하세요...', - dateFormats: { - input: 'YYYY-MM-DD', - display: 'MMMM D, YYYY', - outputWithTime: 'YYYY-MM-DDTHH:mm:ss.SSSZ', - displayWithTime: 'MMMM D, YYYY hh:mm A', - output: 'YYYY-MM-DD', - }, -} - -export default translation diff --git a/web/i18n/ko-KR/tools.json b/web/i18n/ko-KR/tools.json new file mode 100644 index 0000000000..3227b1579e --- /dev/null +++ b/web/i18n/ko-KR/tools.json @@ -0,0 +1,262 @@ +{ + "title": "도구", + "createCustomTool": "커스텀 도구 만들기", + "customToolTip": "Dify 커스텀 도구에 대해 더 알아보기", + "type": { + "builtIn": "내장", + "custom": "커스텀", + "workflow": "워크플로우" + }, + "contribute": { + "line1": "저는 Dify 에", + "line2": "도구를 기여하는데 관심이 있습니다.", + "viewGuide": "가이드 보기" + }, + "author": "저자", + "auth": { + "authorized": "인증됨", + "setup": "사용을 위한 인증 설정", + "setupModalTitle": "인증 설정", + "setupModalTitleDescription": "자격 증명을 구성한 후에 워크스페이스의 모든 멤버가 이 도구를 사용하여 애플리케이션을 조작할 수 있습니다." + }, + "includeToolNum": "{{num}}개의 도구가 포함되어 있습니다", + "addToolModal": { + "type": "타입", + "category": "카테고리", + "added": "추가됨", + "custom": { + "title": "사용자 정의 도구 없음", + "tip": "사용자 정의 도구 생성" + }, + "workflow": { + "title": "워크플로우 도구 없음", + "tip": "스튜디오에서 워크플로우를 도구로 게시" + }, + "mcp": { + "title": "MCP 도구 없음", + "tip": "MCP 서버 추가" + }, + "agent": { + "title": "에이전트 전략 없음" + } + }, + "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": "없음", + "apiKeyPlaceholder": "API 키의 HTTP 헤더 이름", + "apiValuePlaceholder": "API 키를 입력하세요", + "api_key_query": "쿼리 매개변수", + "queryParamPlaceholder": "API 키에 대한 쿼리 매개변수 이름", + "api_key_header": "헤더" + }, + "key": "키", + "value": "값", + "queryParam": "쿼리 매개변수", + "queryParamTooltip": "전달할 API 키 쿼리 매개변수의 이름, 예: \"https://example.com/test?key=API_KEY\"에서의 \"key\"." + }, + "authHeaderPrefix": { + "title": "인증 유형", + "types": { + "basic": "베이직", + "bearer": "베어러", + "custom": "사용자 정의" + } + }, + "privacyPolicy": "개인정보 처리방침", + "privacyPolicyPlaceholder": "개인정보 처리방침을 입력하세요", + "toolInput": { + "title": "도구 입력", + "name": "이름", + "required": "필요사항", + "method": "방식", + "methodSetting": "설정", + "methodSettingTip": "도구 설정에서 사용자가 기입", + "methodParameter": "파라미터", + "methodParameterTip": "추론 중에 LLM 이 기입", + "label": "태그", + "labelPlaceholder": "태그를 선택하세요.(선택사항)", + "description": "설명", + "descriptionPlaceholder": "파라미터의 의도를 설명하세요." + }, + "customDisclaimer": "사용자 정의 권리 포기 문구", + "customDisclaimerPlaceholder": "사용자 정의 권리 포기 문구를 입력해주세요.", + "confirmTitle": "저장하시겠습니까?", + "confirmTip": "이 도구를 사용하는 앱은 영향을 받습니다.", + "deleteToolConfirmTitle": "이 도구를 삭제하시겠습니까?", + "deleteToolConfirmContent": "이 도구를 삭제하면 되돌릴 수 없습니다. 사용자는 더 이상 당신의 도구에 액세스할 수 없습니다.", + "toolOutput": { + "title": "도구 출력", + "name": "이름", + "reserved": "예약됨", + "reservedParameterDuplicateTip": "text, json, 파일은 예약된 변수입니다. 이러한 이름을 가진 변수는 출력 스키마에 나타날 수 없습니다.", + "description": "설명" + } + }, + "test": { + "title": "테스트", + "parametersValue": "파라미터 및 값", + "parameters": "파라미터", + "value": "값", + "testResult": "테스트 결과", + "testResultPlaceholder": "테스트 결과가 여기에 표시됩니다" + }, + "thought": { + "using": "사용 중", + "used": "사용됨", + "requestTitle": "요청", + "responseTitle": "응답" + }, + "setBuiltInTools": { + "info": "정보", + "setting": "설정", + "toolDescription": "도구 설명", + "parameters": "파라미터", + "string": "문자열", + "number": "숫자", + "required": "필수", + "infoAndSetting": "정보 및 설정", + "file": "파일" + }, + "noCustomTool": { + "title": "커스텀 도구가 없습니다!", + "content": "AI 앱을 구축하기 위한 커스텀 도구를 여기서 추가 및 관리합니다.", + "createTool": "도구 만들기" + }, + "noSearchRes": { + "title": "죄송합니다. 결과가 없습니다!", + "content": "검색 결과가 없습니다.", + "reset": "검색 초기화" + }, + "builtInPromptTitle": "프롬프트", + "toolRemoved": "도구가 제거되었습니다", + "notAuthorized": "권한이 없습니다", + "howToGet": "획득 방법", + "openInStudio": "스튜디오에서 열기", + "toolNameUsageTip": "Agent 추리와 프롬프트를 위한 도구 호출 이름", + "noTools": "도구를 찾을 수 없습니다.", + "copyToolName": "이름 복사", + "mcp": { + "create": { + "cardTitle": "MCP 서버 추가 (HTTP)", + "cardLink": "MCP 서버 통합에 대해 자세히 알아보기" + }, + "noConfigured": "구성되지 않은 서버", + "updateTime": "업데이트됨", + "toolsCount": "{count} 도구", + "noTools": "사용 가능한 도구 없음", + "modal": { + "title": "MCP 서버 추가 (HTTP)", + "editTitle": "MCP 서버 수정 (HTTP)", + "name": "이름 및 아이콘", + "namePlaceholder": "MCP 서버 이름 지정", + "serverUrl": "서버 URL", + "serverUrlPlaceholder": "서버 엔드포인트 URL", + "serverUrlWarning": "서버 주소를 업데이트하면 이 서버에 의존하는 응용 프로그램에 지장이 발생할 수 있습니다", + "serverIdentifier": "서버 식별자", + "serverIdentifierTip": "작업 공간 내에서 MCP 서버의 고유 식별자. 소문자, 숫자, 밑줄 및 하이픈만 사용 가능. 최대 24자.", + "serverIdentifierPlaceholder": "고유 식별자, 예: my-mcp-server", + "serverIdentifierWarning": "ID 변경 후 기존 앱에서 서버를 인식하지 못합니다", + "cancel": "취소", + "save": "저장", + "confirm": "추가 및 승인", + "timeout": "타임아웃", + "sseReadTimeout": "SSE 읽기 타임아웃", + "headers": "헤더", + "headerKeyPlaceholder": "예: 승인", + "headerKey": "헤더 이름", + "headerValuePlaceholder": "예: 베어러 토큰123", + "timeoutPlaceholder": "서른", + "headerValue": "헤더 값", + "addHeader": "헤더 추가", + "noHeaders": "사용자 정의 헤더가 구성되어 있지 않습니다.", + "headersTip": "MCP 서버 요청과 함께 보낼 추가 HTTP 헤더", + "maskedHeadersTip": "헤더 값은 보안상 마스킹 처리되어 있습니다. 변경 사항은 실제 값에 업데이트됩니다.", + "authentication": "인증", + "configurations": "구성", + "useDynamicClientRegistration": "동적 클라이언트 등록 사용", + "clientSecret": "클라이언트 시크릿", + "clientID": "클라이언트 ID", + "clientSecretPlaceholder": "클라이언트 시크릿", + "redirectUrlWarning": "OAuth 리디렉션 URL을 다음으로 설정해 주세요:" + }, + "delete": "MCP 서버 제거", + "deleteConfirmTitle": "{mcp}를 제거하시겠습니까?", + "operation": { + "edit": "편집", + "remove": "제거" + }, + "authorize": "권한 부여", + "authorizing": "권한 부여 중...", + "authorizingRequired": "권한이 필요합니다", + "authorizeTip": "권한 부여 후 도구가 여기에 표시됩니다.", + "update": "업데이트", + "updating": "업데이트 중", + "gettingTools": "도구 가져오는 중...", + "updateTools": "도구 업데이트 중...", + "toolsEmpty": "도구가 로드되지 않음", + "getTools": "도구 가져오기", + "toolUpdateConfirmTitle": "도구 목록 업데이트", + "toolUpdateConfirmContent": "도구 목록을 업데이트하면 기존 앱에 영향을 줄 수 있습니다. 계속하시겠습니까?", + "toolsNum": "{count} 도구가 포함됨", + "onlyTool": "1개 도구 포함", + "identifier": "서버 식별자 (클릭하여 복사)", + "server": { + "title": "MCP 서버", + "url": "서버 URL", + "reGen": "서버 URL을 다시 생성하시겠습니까?", + "addDescription": "설명 추가", + "edit": "설명 수정", + "modal": { + "addTitle": "MCP 서버를 활성화하기 위한 설명 추가", + "editTitle": "설명 수정", + "description": "설명", + "descriptionPlaceholder": "이 도구가 수행하는 작업과 LLM이 사용하는 방법을 설명하세요.", + "parameters": "매개변수", + "parametersTip": "각 매개변수의 설명을 추가하여 LLM이 목적과 제한 사항을 이해할 수 있도록 도와주세요.", + "parametersPlaceholder": "매개변수의 목적 및 제한 사항", + "confirm": "MCP 서버 활성화" + }, + "publishTip": "앱이 게시되지 않았습니다. 먼저 앱을 게시하십시오." + }, + "toolItem": { + "noDescription": "설명 없음", + "parameters": "매개변수" + } + }, + "allTools": "모든 도구" +} diff --git a/web/i18n/ko-KR/tools.ts b/web/i18n/ko-KR/tools.ts deleted file mode 100644 index 4b97a2d9cb..0000000000 --- a/web/i18n/ko-KR/tools.ts +++ /dev/null @@ -1,264 +0,0 @@ -const translation = { - title: '도구', - createCustomTool: '커스텀 도구 만들기', - customToolTip: 'Dify 커스텀 도구에 대해 더 알아보기', - type: { - builtIn: '내장', - custom: '커스텀', - workflow: '워크플로우', - }, - contribute: { - line1: '저는 Dify 에', - line2: '도구를 기여하는데 관심이 있습니다.', - viewGuide: '가이드 보기', - }, - author: '저자', - auth: { - authorized: '인증됨', - setup: '사용을 위한 인증 설정', - setupModalTitle: '인증 설정', - setupModalTitleDescription: '자격 증명을 구성한 후에 워크스페이스의 모든 멤버가 이 도구를 사용하여 애플리케이션을 조작할 수 있습니다.', - }, - includeToolNum: '{{num}}개의 도구가 포함되어 있습니다', - addToolModal: { - type: '타입', - category: '카테고리', - added: '추가됨', - custom: { - title: '사용자 정의 도구 없음', - tip: '사용자 정의 도구 생성', - }, - workflow: { - title: '워크플로우 도구 없음', - tip: '스튜디오에서 워크플로우를 도구로 게시', - }, - mcp: { - title: 'MCP 도구 없음', - tip: 'MCP 서버 추가', - }, - agent: { - title: '에이전트 전략 없음', - }, - }, - 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: '없음', - apiKeyPlaceholder: 'API 키의 HTTP 헤더 이름', - apiValuePlaceholder: 'API 키를 입력하세요', - api_key_query: '쿼리 매개변수', - queryParamPlaceholder: 'API 키에 대한 쿼리 매개변수 이름', - api_key_header: '헤더', - }, - key: '키', - value: '값', - queryParam: '쿼리 매개변수', - queryParamTooltip: '전달할 API 키 쿼리 매개변수의 이름, 예: "https://example.com/test?key=API_KEY"에서의 "key".', - }, - authHeaderPrefix: { - title: '인증 유형', - types: { - basic: '베이직', - bearer: '베어러', - custom: '사용자 정의', - }, - }, - privacyPolicy: '개인정보 처리방침', - privacyPolicyPlaceholder: '개인정보 처리방침을 입력하세요', - toolInput: { - title: '도구 입력', - name: '이름', - required: '필요사항', - method: '방식', - methodSetting: '설정', - methodSettingTip: '도구 설정에서 사용자가 기입', - methodParameter: '파라미터', - methodParameterTip: '추론 중에 LLM 이 기입', - label: '태그', - labelPlaceholder: '태그를 선택하세요.(선택사항)', - description: '설명', - descriptionPlaceholder: '파라미터의 의도를 설명하세요.', - }, - customDisclaimer: '사용자 정의 권리 포기 문구', - customDisclaimerPlaceholder: '사용자 정의 권리 포기 문구를 입력해주세요.', - confirmTitle: '저장하시겠습니까?', - confirmTip: '이 도구를 사용하는 앱은 영향을 받습니다.', - deleteToolConfirmTitle: '이 도구를 삭제하시겠습니까?', - deleteToolConfirmContent: '이 도구를 삭제하면 되돌릴 수 없습니다. 사용자는 더 이상 당신의 도구에 액세스할 수 없습니다.', - toolOutput: { - title: '도구 출력', - name: '이름', - reserved: '예약됨', - reservedParameterDuplicateTip: 'text, json, 파일은 예약된 변수입니다. 이러한 이름을 가진 변수는 출력 스키마에 나타날 수 없습니다.', - description: '설명', - }, - }, - test: { - title: '테스트', - parametersValue: '파라미터 및 값', - parameters: '파라미터', - value: '값', - testResult: '테스트 결과', - testResultPlaceholder: '테스트 결과가 여기에 표시됩니다', - }, - thought: { - using: '사용 중', - used: '사용됨', - requestTitle: '요청', - responseTitle: '응답', - }, - setBuiltInTools: { - info: '정보', - setting: '설정', - toolDescription: '도구 설명', - parameters: '파라미터', - string: '문자열', - number: '숫자', - required: '필수', - infoAndSetting: '정보 및 설정', - file: '파일', - }, - noCustomTool: { - title: '커스텀 도구가 없습니다!', - content: 'AI 앱을 구축하기 위한 커스텀 도구를 여기서 추가 및 관리합니다.', - createTool: '도구 만들기', - }, - noSearchRes: { - title: '죄송합니다. 결과가 없습니다!', - content: '검색 결과가 없습니다.', - reset: '검색 초기화', - }, - builtInPromptTitle: '프롬프트', - toolRemoved: '도구가 제거되었습니다', - notAuthorized: '권한이 없습니다', - howToGet: '획득 방법', - openInStudio: '스튜디오에서 열기', - toolNameUsageTip: 'Agent 추리와 프롬프트를 위한 도구 호출 이름', - noTools: '도구를 찾을 수 없습니다.', - copyToolName: '이름 복사', - mcp: { - create: { - cardTitle: 'MCP 서버 추가 (HTTP)', - cardLink: 'MCP 서버 통합에 대해 자세히 알아보기', - }, - noConfigured: '구성되지 않은 서버', - updateTime: '업데이트됨', - toolsCount: '{count} 도구', - noTools: '사용 가능한 도구 없음', - modal: { - title: 'MCP 서버 추가 (HTTP)', - editTitle: 'MCP 서버 수정 (HTTP)', - name: '이름 및 아이콘', - namePlaceholder: 'MCP 서버 이름 지정', - serverUrl: '서버 URL', - serverUrlPlaceholder: '서버 엔드포인트 URL', - serverUrlWarning: '서버 주소를 업데이트하면 이 서버에 의존하는 응용 프로그램에 지장이 발생할 수 있습니다', - serverIdentifier: '서버 식별자', - serverIdentifierTip: '작업 공간 내에서 MCP 서버의 고유 식별자. 소문자, 숫자, 밑줄 및 하이픈만 사용 가능. 최대 24자.', - serverIdentifierPlaceholder: '고유 식별자, 예: my-mcp-server', - serverIdentifierWarning: 'ID 변경 후 기존 앱에서 서버를 인식하지 못합니다', - cancel: '취소', - save: '저장', - confirm: '추가 및 승인', - timeout: '타임아웃', - sseReadTimeout: 'SSE 읽기 타임아웃', - headers: '헤더', - headerKeyPlaceholder: '예: 승인', - headerKey: '헤더 이름', - headerValuePlaceholder: '예: 베어러 토큰123', - timeoutPlaceholder: '서른', - headerValue: '헤더 값', - addHeader: '헤더 추가', - noHeaders: '사용자 정의 헤더가 구성되어 있지 않습니다.', - headersTip: 'MCP 서버 요청과 함께 보낼 추가 HTTP 헤더', - maskedHeadersTip: '헤더 값은 보안상 마스킹 처리되어 있습니다. 변경 사항은 실제 값에 업데이트됩니다.', - authentication: '인증', - configurations: '구성', - useDynamicClientRegistration: '동적 클라이언트 등록 사용', - clientSecret: '클라이언트 시크릿', - clientID: '클라이언트 ID', - clientSecretPlaceholder: '클라이언트 시크릿', - redirectUrlWarning: 'OAuth 리디렉션 URL을 다음으로 설정해 주세요:', - }, - delete: 'MCP 서버 제거', - deleteConfirmTitle: '{mcp}를 제거하시겠습니까?', - operation: { - edit: '편집', - remove: '제거', - }, - authorize: '권한 부여', - authorizing: '권한 부여 중...', - authorizingRequired: '권한이 필요합니다', - authorizeTip: '권한 부여 후 도구가 여기에 표시됩니다.', - update: '업데이트', - updating: '업데이트 중', - gettingTools: '도구 가져오는 중...', - updateTools: '도구 업데이트 중...', - toolsEmpty: '도구가 로드되지 않음', - getTools: '도구 가져오기', - toolUpdateConfirmTitle: '도구 목록 업데이트', - toolUpdateConfirmContent: '도구 목록을 업데이트하면 기존 앱에 영향을 줄 수 있습니다. 계속하시겠습니까?', - toolsNum: '{count} 도구가 포함됨', - onlyTool: '1개 도구 포함', - identifier: '서버 식별자 (클릭하여 복사)', - server: { - title: 'MCP 서버', - url: '서버 URL', - reGen: '서버 URL을 다시 생성하시겠습니까?', - addDescription: '설명 추가', - edit: '설명 수정', - modal: { - addTitle: 'MCP 서버를 활성화하기 위한 설명 추가', - editTitle: '설명 수정', - description: '설명', - descriptionPlaceholder: '이 도구가 수행하는 작업과 LLM이 사용하는 방법을 설명하세요.', - parameters: '매개변수', - parametersTip: '각 매개변수의 설명을 추가하여 LLM이 목적과 제한 사항을 이해할 수 있도록 도와주세요.', - parametersPlaceholder: '매개변수의 목적 및 제한 사항', - confirm: 'MCP 서버 활성화', - }, - publishTip: '앱이 게시되지 않았습니다. 먼저 앱을 게시하십시오.', - }, - toolItem: { - noDescription: '설명 없음', - parameters: '매개변수', - }, - }, - allTools: '모든 도구', -} - -export default translation diff --git a/web/i18n/ko-KR/workflow.json b/web/i18n/ko-KR/workflow.json new file mode 100644 index 0000000000..531f1fecbc --- /dev/null +++ b/web/i18n/ko-KR/workflow.json @@ -0,0 +1,1294 @@ +{ + "common": { + "undo": "실행 취소", + "redo": "다시 실행", + "editing": "편집 중", + "autoSaved": "자동 저장됨", + "unpublished": "게시되지 않음", + "published": "게시됨", + "publish": "게시하기", + "update": "업데이트", + "run": "테스트 실행", + "running": "실행 중", + "inRunMode": "실행 모드", + "inPreview": "미리보기 중", + "inPreviewMode": "미리보기 모드", + "preview": "미리보기", + "viewRunHistory": "실행 기록 보기", + "runHistory": "실행 기록", + "goBackToEdit": "편집기로 돌아가기", + "conversationLog": "대화 로그", + "debugAndPreview": "미리보기", + "restart": "재시작", + "currentDraft": "현재 초안", + "currentDraftUnpublished": "현재 초안 미발행", + "latestPublished": "최신 발행본", + "publishedAt": "발행일", + "restore": "복원", + "runApp": "앱 실행", + "batchRunApp": "앱 일괄 실행", + "accessAPIReference": "API 참조 접근", + "embedIntoSite": "사이트에 삽입", + "addTitle": "제목 추가...", + "addDescription": "설명 추가...", + "noVar": "변수 없음", + "searchVar": "변수 검색", + "variableNamePlaceholder": "변수 이름", + "setVarValuePlaceholder": "변수 값 설정", + "needConnectTip": "이 단계는 아무것도 연결되어 있지 않습니다", + "maxTreeDepth": "분기당 최대 {{depth}} 노드 제한", + "workflowProcess": "워크플로우 과정", + "notRunning": "아직 실행되지 않음", + "previewPlaceholder": "디버깅을 시작하려면 아래 상자에 내용을 입력하세요", + "effectVarConfirm": { + "title": "변수 제거", + "content": "변수가 다른 노드에서 사용되고 있습니다. 그래도 제거하시겠습니까?" + }, + "insertVarTip": "빠르게 삽입하려면 '/' 키를 누르세요", + "processData": "데이터 처리", + "input": "입력", + "output": "출력", + "jinjaEditorPlaceholder": "변수를 삽입하려면 '/' 또는 '{'를 입력하세요", + "viewOnly": "보기 전용", + "showRunHistory": "실행 기록 보기", + "enableJinja": "Jinja 템플릿 지원 활성화", + "learnMore": "더 알아보기", + "copy": "복사", + "duplicate": "복제", + "pasteHere": "여기에 붙여넣기", + "pointerMode": "포인터 모드", + "handMode": "드래그 모드", + "model": "모델", + "workflowAsTool": "도구로서의 워크플로우", + "configureRequired": "구성 필요", + "configure": "구성", + "manageInTools": "도구에서 관리", + "workflowAsToolTip": "워크플로우 업데이트 후 도구 재구성이 필요합니다.", + "viewDetailInTracingPanel": "세부 정보 보기", + "importDSL": "DSL 가져오기", + "importFailure": "가져오기 실패", + "chooseDSL": "DSL(yml) 파일 선택", + "backupCurrentDraft": "현재 초안 백업", + "overwriteAndImport": "덮어쓰기 및 가져오기", + "importSuccess": "가져오기 성공", + "syncingData": "단 몇 초 만에 데이터를 동기화할 수 있습니다.", + "importDSLTip": "현재 초안을 덮어씁니다. 가져오기 전에 워크플로우를 백업으로 내보냅니다.", + "parallelTip": { + "click": { + "title": "클릭", + "desc": "추가" + }, + "drag": { + "title": "드래그", + "desc": "연결 방법" + }, + "depthLimit": "평행 중첩 레이어 {{num}}개 레이어의 제한", + "limit": "병렬 처리는 {{num}}개의 분기로 제한됩니다." + }, + "disconnect": "분리하다", + "jumpToNode": "이 노드로 이동", + "addParallelNode": "병렬 노드 추가", + "parallel": "병렬", + "branch": "브랜치", + "fileUploadTip": "이미지 업로드 기능이 파일 업로드로 업그레이드되었습니다.", + "ImageUploadLegacyTip": "이제 시작 양식에서 파일 형식 변수를 만들 수 있습니다. 앞으로 이미지 업로드 기능은 더 이상 지원되지 않습니다.", + "importWarning": "주의", + "importWarningDetails": "DSL 버전 차이는 특정 기능에 영향을 미칠 수 있습니다.", + "openInExplore": "Explore 에서 열기", + "onFailure": "실패 시", + "addFailureBranch": "실패 분기 추가", + "noHistory": "이력 없음", + "loadMore": "더 많은 워크플로우 로드", + "publishUpdate": "업데이트 게시", + "exportJPEG": "JPEG 로 내보내기", + "exitVersions": "종료 버전", + "exportImage": "이미지 내보내기", + "exportSVG": "SVG 로 내보내기", + "versionHistory": "버전 기록", + "exportPNG": "PNG 로 내보내기", + "addBlock": "노드 추가", + "needAnswerNode": "답변 노드를 추가해야 합니다.", + "needOutputNode": "출력 노드를 추가해야 합니다", + "tagBound": "이 태그를 사용하는 앱 수", + "currentView": "현재 보기", + "currentWorkflow": "현재 워크플로", + "moreActions": "더 많은 작업", + "listening": "듣기", + "chooseStartNodeToRun": "실행할 시작 노드를 선택하세요", + "runAllTriggers": "모든 트리거 실행", + "features": "특징", + "featuresDescription": "웹 앱 사용자 경험 향상", + "featuresDocLink": "자세히 알아보기", + "needAdd": "{{node}} 노드를 추가해야 합니다", + "needStartNode": "적어도 하나의 시작 노드를 추가해야 합니다", + "workflowAsToolDisabledHint": "최신 워크플로를 게시하고 도구로 구성하기 전에 연결된 사용자 입력 노드가 있는지 확인하세요." + }, + "env": { + "envPanelTitle": "환경 변수", + "envDescription": "환경 변수는 개인 정보와 자격 증명을 저장하는 데 사용될 수 있습니다. 이들은 읽기 전용이며 내보내기 중에 DSL 파일과 분리할 수 있습니다.", + "envPanelButton": "변수 추가", + "modal": { + "title": "환경 변수 추가", + "editTitle": "환경 변수 편집", + "type": "유형", + "name": "이름", + "namePlaceholder": "환경 이름", + "value": "값", + "valuePlaceholder": "환경 값", + "secretTip": "민감한 정보나 데이터를 정의하는 데 사용되며, DSL 설정은 유출 방지를 위해 구성됩니다.", + "description": "설명", + "descriptionPlaceholder": "변수에 대해 설명하세요" + }, + "export": { + "title": "비밀 환경 변수를 내보내시겠습니까?", + "checkbox": "비밀 값 내보내기", + "ignore": "DSL 내보내기", + "export": "비밀 값이 포함된 DSL 내보내기" + } + }, + "globalVar": { + "title": "시스템 변수", + "description": "시스템 변수는 타입이 맞으면 배선 없이도 모든 노드에서 참조할 수 있는 전역 변수로, 엔드유저 ID와 워크플로 ID 등이 포함됩니다.", + "fieldsDescription": { + "conversationId": "대화 ID", + "dialogCount": "대화 수", + "userId": "사용자 ID", + "triggerTimestamp": "애플리케이션 시작 타임스탬프", + "appId": "애플리케이션 ID", + "workflowId": "워크플로 ID", + "workflowRunId": "워크플로 실행 ID" + } + }, + "chatVariable": { + "panelTitle": "대화 변수", + "panelDescription": "대화 변수는 LLM 이 기억해야 할 대화 기록, 업로드된 파일, 사용자 선호도 등의 상호작용 정보를 저장하는 데 사용됩니다. 이들은 읽기 및 쓰기가 가능합니다.", + "docLink": "자세한 내용은 문서를 참조하세요.", + "button": "변수 추가", + "modal": { + "title": "대화 변수 추가", + "editTitle": "대화 변수 편집", + "name": "이름", + "namePlaceholder": "변수 이름", + "type": "유형", + "value": "기본값", + "valuePlaceholder": "기본값, 설정하지 않으려면 비워두세요", + "description": "설명", + "descriptionPlaceholder": "변수에 대해 설명하세요", + "editInJSON": "JSON 으로 편집", + "oneByOne": "하나씩 추가", + "editInForm": "양식에서 편집", + "arrayValue": "값", + "addArrayValue": "값 추가", + "objectKey": "키", + "objectType": "유형", + "objectValue": "기본값" + }, + "storedContent": "저장된 내용", + "updatedAt": "업데이트 시간: " + }, + "changeHistory": { + "title": "변경 기록", + "placeholder": "아직 아무 것도 변경하지 않았습니다", + "clearHistory": "기록 지우기", + "hint": "힌트", + "hintText": "편집 작업이 변경 기록에 추적되며, 이 세션 동안 기기에 저장됩니다. 편집기를 떠나면 이 기록이 지워집니다.", + "stepBackward_one": "{{count}} 단계 뒤로", + "stepBackward_other": "{{count}} 단계 뒤로", + "stepForward_one": "{{count}} 단계 앞으로", + "stepForward_other": "{{count}} 단계 앞으로", + "sessionStart": "세션 시작", + "currentState": "현재 상태", + "noteAdd": "노트 추가됨", + "noteChange": "노트 변경됨", + "noteDelete": "노트 삭제됨", + "nodeConnect": "노드가 연결되었습니다.", + "nodePaste": "노드 붙여넣기", + "nodeDelete": "노드가 삭제되었습니다.", + "nodeAdd": "노드가 추가되었습니다.", + "nodeChange": "노드가 변경되었습니다.", + "nodeDescriptionChange": "노드 설명이 변경됨", + "nodeResize": "노드 크기 조정됨", + "nodeDragStop": "노드가 이동했습니다.", + "edgeDelete": "노드가 연결이 끊어졌습니다.", + "nodeTitleChange": "노드 제목이 변경됨" + }, + "errorMsg": { + "fieldRequired": "{{field}}가 필요합니다", + "authRequired": "인증이 필요합니다", + "invalidJson": "{{field}}는 잘못된 JSON 입니다", + "fields": { + "variable": "변수 이름", + "variableValue": "변수 값", + "code": "코드", + "model": "모델", + "rerankModel": "재정렬 모델", + "visionVariable": "비전 변수" + }, + "invalidVariable": "잘못된 변수", + "rerankModelRequired": "Rerank Model 을 켜기 전에 설정에서 모델이 성공적으로 구성되었는지 확인하십시오.", + "noValidTool": "{{field}} 유효한 도구가 선택되지 않았습니다.", + "toolParameterRequired": "{{field}}: 매개변수 [{{param}}] 이 필요합니다.", + "startNodeRequired": "{{operation}} 전에 먼저 시작 노드를 추가해 주세요" + }, + "singleRun": { + "testRun": "테스트 실행", + "startRun": "실행 시작", + "running": "실행 중", + "testRunIteration": "테스트 실행 반복", + "back": "뒤로", + "iteration": "반복", + "loop": "루프", + "reRun": "다시 실행", + "preparingDataSource": "데이터 소스 준비" + }, + "tabs": { + "tools": "도구", + "allTool": "전체", + "customTool": "사용자 정의", + "workflowTool": "워크플로우", + "question-understand": "질문 이해", + "logic": "논리", + "transform": "변환", + "utilities": "유틸리티", + "noResult": "일치하는 결과 없음", + "searchTool": "검색 도구", + "plugin": "플러그인", + "agent": "에이전트 전략", + "blocks": "노드", + "searchBlock": "검색 노드", + "allAdded": "모두 추가됨", + "addAll": "모두 추가", + "sources": "소스", + "searchDataSource": "데이터 소스 검색", + "start": "시작", + "searchTrigger": "검색 트리거...", + "allTriggers": "모든 트리거", + "noPluginsFound": "플러그인을 찾을 수 없습니다", + "requestToCommunity": "커뮤니티에 대한 요청", + "featuredTools": "추천", + "showMoreFeatured": "더 보기", + "showLessFeatured": "간략히 보기", + "installed": "설치됨", + "pluginByAuthor": "{{author}} 작성", + "usePlugin": "도구 선택", + "hideActions": "도구 숨기기", + "noFeaturedPlugins": "마켓플레이스에서 더 많은 도구를 발견하세요", + "noFeaturedTriggers": "마켓플레이스에서 더 많은 트리거 발견하기", + "startDisabledTip": "트리거 노드와 사용자 입력 노드는 상호 배타적입니다." + }, + "blocks": { + "start": "시작", + "end": "출력", + "answer": "답변", + "llm": "LLM", + "knowledge-retrieval": "지식 검색", + "question-classifier": "질문 분류기", + "if-else": "IF/ELSE", + "code": "코드", + "template-transform": "템플릿", + "http-request": "HTTP 요청", + "variable-assigner": "변수 할당자", + "variable-aggregator": "변수 집계자", + "assigner": "변수 할당자", + "iteration-start": "반복 시작", + "iteration": "반복", + "parameter-extractor": "매개변수 추출기", + "document-extractor": "Doc 추출기", + "list-operator": "List 연산자", + "agent": "대리인", + "loop-start": "루프 시작", + "loop-end": "루프 종료", + "loop": "루프", + "datasource": "데이터 소스", + "knowledge-index": "기술 자료", + "originalStartNode": "원래 시작 노드", + "trigger-schedule": "일정 트리거", + "trigger-webhook": "웹훅 트리거", + "trigger-plugin": "플러그인 트리거" + }, + "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": "다중 분기 변수들을 하나의 변수로 집계하여 다운스트림 노드의 통합 구성을 가능하게 합니다.", + "assigner": "변수 할당 노드는 쓰기 가능한 변수 (대화 변수 등) 에 값을 할당하는 데 사용됩니다.", + "variable-aggregator": "다중 분기 변수들을 하나의 변수로 집계하여 다운스트림 노드의 통합 구성을 가능하게 합니다.", + "iteration": "목록 객체에서 여러 단계를 수행하여 모든 결과가 출력될 때까지 반복합니다.", + "parameter-extractor": "도구 호출 또는 HTTP 요청을 위해 자연어에서 구조화된 매개변수를 추출하기 위해 LLM 을 사용합니다.", + "document-extractor": "업로드된 문서를 LLM 에서 쉽게 이해할 수 있는 텍스트 콘텐츠로 구문 분석하는 데 사용됩니다.", + "list-operator": "배열 내용을 필터링하거나 정렬하는 데 사용됩니다.", + "agent": "질문에 답하거나 자연어를 처리하기 위해 대규모 언어 모델을 호출하는 경우", + "loop": "종료 조건이 충족되거나 최대 반복 횟수에 도달할 때까지 논리 루프를 실행합니다.", + "loop-end": "\"break\"와 동일합니다. 이 노드는 구성 항목이 없습니다. 루프 본문이 이 노드에 도달하면 루프가 종료됩니다.", + "datasource": "데이터 소스 정보", + "knowledge-index": "기술 자료 정보", + "trigger-schedule": "일정에 따라 워크플로를 시작하는 시간 기반 워크플로 트리거", + "trigger-webhook": "웹훅 트리거는 외부 시스템에서 HTTP 푸시를 받아 워크플로를 자동으로 실행합니다.", + "trigger-plugin": "외부 플랫폼 이벤트로 워크플로를 시작하는 타사 통합 트리거" + }, + "operator": { + "zoomIn": "확대", + "zoomOut": "축소", + "zoomTo50": "50% 로 확대", + "zoomTo100": "100% 로 확대", + "zoomToFit": "화면에 맞게 확대", + "alignCenter": "중앙", + "alignRight": "오른쪽", + "alignLeft": "왼쪽", + "vertical": "세로", + "alignTop": "상단", + "alignMiddle": "중간", + "alignNodes": "노드 정렬", + "distributeVertical": "수직 등간격", + "horizontal": "가로", + "selectionAlignment": "선택 정렬", + "alignBottom": "하단", + "distributeHorizontal": "수평 등간격" + }, + "panel": { + "userInputField": "사용자 입력 필드", + "helpLink": "도움말 센터", + "about": "정보", + "createdBy": "작성자 ", + "nextStep": "다음 단계", + "runThisStep": "이 단계 실행", + "checklist": "체크리스트", + "checklistTip": "게시하기 전에 모든 문제가 해결되었는지 확인하세요", + "checklistResolved": "모든 문제가 해결되었습니다", + "change": "변경", + "optional": "(선택사항)", + "organizeBlocks": "노드 정리하기", + "selectNextStep": "다음 단계 선택", + "changeBlock": "노드 변경", + "addNextStep": "이 워크플로우에 다음 단계를 추가하세요.", + "minimize": "전체 화면 종료", + "maximize": "캔버스 전체 화면", + "scrollToSelectedNode": "선택한 노드로 스크롤", + "optional_and_hidden": "(선택 사항 및 숨김)", + "goTo": "로 이동", + "startNode": "시작 노드", + "openWorkflow": "워크플로 열기" + }, + "nodes": { + "common": { + "outputVars": "출력 변수", + "insertVarTip": "변수 삽입", + "memory": { + "memory": "메모리", + "memoryTip": "대화 메모리 설정", + "windowSize": "창 크기", + "conversationRoleName": "대화 역할 이름", + "user": "사용자 접두사", + "assistant": "어시스턴트 접두사" + }, + "memories": { + "title": "메모리", + "tip": "대화 메모리", + "builtIn": "내장" + }, + "errorHandle": { + "none": { + "title": "없음", + "desc": "예외가 발생하고 처리되지 않으면 노드 실행이 중지됩니다" + }, + "defaultValue": { + "title": "기본값", + "desc": "오류가 발생하면 정적 출력 콘텐츠를 지정합니다.", + "tip": "오류가 발생하면 아래 값을 반환합니다.", + "inLog": "노드 예외, 기본값에 따라 출력합니다.", + "output": "출력 기본값" + }, + "failBranch": { + "title": "실패 분기", + "desc": "오류가 발생하면 예외 분기를 실행합니다", + "customize": "캔버스로 이동하여 fail branch logic 를 사용자 지정합니다.", + "inLog": "노드 예외는 실패 분기를 자동으로 실행합니다. 노드 출력은 오류 유형 및 오류 메시지를 반환하고 다운스트림으로 전달합니다.", + "customizeTip": "fail 분기가 활성화되면 노드에서 throw 된 예외가 프로세스를 종료하지 않습니다. 대신 미리 정의된 실패 분기를 자동으로 실행하여 오류 메시지, 보고서, 수정 사항을 유연하게 제공하거나 작업을 건너뛸 수 있습니다." + }, + "partialSucceeded": { + "tip": "프로세스에 {{num}} 노드가 비정상적으로 실행 중입니다. 추적으로 이동하여 로그를 확인하십시오." + }, + "title": "오류 처리", + "tip": "노드에 예외가 발생할 때 트리거되는 예외 처리 전략입니다." + }, + "retry": { + "retry": "재시도", + "retryOnFailure": "실패 시 재시도", + "maxRetries": "최대 재시도 횟수", + "retryInterval": "재시도 간격", + "retryTimes": "실패 시 {{times}}번 재시도", + "retrying": "재시도...", + "retrySuccessful": "재시도 성공", + "retryFailed": "재시도 실패", + "retryFailedTimes": "{{times}} 재시도 실패", + "times": "번", + "ms": "미에스", + "retries": "{{숫자}} 재시도" + }, + "typeSwitch": { + "input": "입력 값", + "variable": "변수를 사용하세요" + }, + "inputVars": "입력 변수", + "pluginNotInstalled": "플러그인이 설치되지 않았습니다" + }, + "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 에 컨텍스트 변수를 입력하세요.", + "prompt": "프롬프트", + "roleDescription": { + "system": "대화를 위한 고급 지침 제공", + "user": "모델에 지침, 질문 또는 텍스트 기반 입력 제공", + "assistant": "사용자 메시지에 기반한 모델의 응답" + }, + "addMessage": "메시지 추가", + "vision": "비전", + "files": "파일", + "resolution": { + "name": "해상도", + "high": "높음", + "low": "낮음" + }, + "outputVars": { + "output": "생성된 내용", + "reasoning_content": "추론 내용", + "usage": "모델 사용 정보" + }, + "singleRun": { + "variable": "변수" + }, + "sysQueryInUser": "사용자 메시지에 sys.query 가 필요합니다", + "jsonSchema": { + "warningTips": { + "saveSchema": "현재 필드의 편집을 완료한 후 스키마를 저장하세요." + }, + "generating": "JSON 스키마 생성 중...", + "apply": "지원하다", + "descriptionPlaceholder": "설명을 추가하세요.", + "generate": "생성하다", + "generatedResult": "생성된 결과", + "addField": "필드 추가", + "addChildField": "자녀 필드 추가", + "generateJsonSchema": "JSON 스키마 생성", + "fieldNamePlaceholder": "필드 이름", + "back": "뒤", + "instruction": "지침", + "resetDefaults": "재설정", + "promptTooltip": "텍스트 설명을 표준화된 JSON 스키마 구조로 변환하세요.", + "title": "구조화된 출력 스키마", + "stringValidations": "문자열 검증", + "showAdvancedOptions": "고급 옵션 표시", + "promptPlaceholder": "당신의 JSON 스키마를 설명하세요...", + "generationTip": "자연어를 사용하여 JSON 스키마를 신속하게 생성할 수 있습니다.", + "resultTip": "여기 생성된 결과가 있습니다. 만약 만족하지 않으신다면, 돌아가서 프롬프트를 수정할 수 있습니다.", + "regenerate": "재생하다", + "required": "필수", + "doc": "구조화된 출력에 대해 더 알아보세요.", + "import": "JSON 에서 가져오기" + }, + "reasoningFormat": { + "title": "추론 태그 분리 활성화", + "separated": "추론 태그 분리", + "tooltip": "추론 태그에서 내용을 추출하고 이를 reasoning_content 필드에 저장합니다", + "tagged": "추론 태그 유지" + } + }, + "knowledgeRetrieval": { + "queryVariable": "쿼리 변수", + "knowledge": "지식", + "outputVars": { + "output": "복구된 세그먼트 데이터", + "content": "세그먼트 내용", + "title": "세그먼트 제목", + "icon": "세그먼트 아이콘", + "url": "세그먼트 URL", + "metadata": "기타 메타데이터", + "files": "검색된 파일" + }, + "metadata": { + "options": { + "disabled": { + "title": "사용안함", + "subTitle": "메타데이터 필터링을 활성화하지 않음" + }, + "automatic": { + "desc": "쿼리 변수를 기반으로 메타데이터 필터링 조건을 자동으로 생성합니다.", + "subTitle": "사용자 쿼리를 기반으로 메타데이터 필터링 조건을 자동으로 생성합니다.", + "title": "자동" + }, + "manual": { + "subTitle": "메타데이터 필터링 조건을 수동으로 추가합니다.", + "title": "수동" + } + }, + "panel": { + "title": "메타데이터 필터 조건", + "placeholder": "값을 입력하세요", + "add": "조건 추가", + "search": "메타데이터 검색", + "datePlaceholder": "시간을 선택하세요...", + "select": "변수 선택...", + "conditions": "조건" + }, + "title": "메타데이터 필터링", + "tip": "메타데이터 필터링은 시스템 내에서 관련 정보를 검색하는 과정을 정제하고 제어하기 위해 메타데이터 속성(예: 태그, 카테고리 또는 접근 권한)을 사용하는 과정입니다." + }, + "queryText": "질의 텍스트", + "queryAttachment": "이미지 조회" + }, + "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": "Bearer", + "custom": "사용자 정의", + "api-key-title": "API 키", + "header": "헤더" + }, + "insertVarPlaceholder": "변수를 삽입하려면 '/'를 입력하세요", + "timeout": { + "title": "시간 초과", + "connectLabel": "연결 시간 초과", + "connectPlaceholder": "초 단위로 연결 시간 초과 입력", + "readLabel": "읽기 시간 초과", + "readPlaceholder": "초 단위로 읽기 시간 초과 입력", + "writeLabel": "쓰기 시간 초과", + "writePlaceholder": "초 단위로 쓰기 시간 초과 입력" + }, + "type": "형", + "binaryFileVariable": "바이너리 파일 변수", + "extractListPlaceholder": "목록 항목 인덱스 입력, '/' 변수 삽입", + "curl": { + "title": "cURL 에서 가져오기", + "placeholder": "여기에 cURL 문자열 붙여 넣기" + }, + "verifySSL": { + "title": "SSL 인증서 확인", + "warningTooltip": "SSL 검증을 비활성화하는 것은 프로덕션 환경에서는 권장되지 않습니다. 이는 연결이 중간자 공격과 같은 보안 위협에 취약하게 만들므로 개발 또는 테스트에서만 사용해야 합니다." + } + }, + "code": { + "inputVars": "입력 변수", + "outputVars": "출력 변수", + "advancedDependencies": "고급 종속성", + "advancedDependenciesTip": "더 많은 시간이 소요되거나 기본으로 내장되지 않은 일부 미리 로드된 종속성을 여기에 추가하세요", + "searchDependencies": "종속성 검색", + "syncFunctionSignature": "코드에 함수 시그니처 동기화하기" + }, + "templateTransform": { + "inputVars": "입력 변수", + "code": "코드", + "codeSupportTip": "Jinja2 만 지원합니다", + "outputVars": { + "output": "변환된 내용" + } + }, + "ifElse": { + "if": "If", + "else": "Else", + "elseDescription": "If 조건이 충족되지 않을 때 실행할 논리를 정의하는 데 사용됩니다.", + "and": "그리고", + "or": "또는", + "operator": "연산자", + "notSetVariable": "먼저 변수를 설정하세요", + "comparisonOperator": { + "contains": "포함", + "not contains": "포함하지 않음", + "start with": "시작", + "end with": "끝", + "is": "이다", + "is not": "아니다", + "empty": "비어 있음", + "not empty": "비어 있지 않음", + "null": "null 임", + "not null": "null 이 아님", + "in": "안으로", + "exists": "존재", + "all of": "모두의", + "not in": "에 없음", + "not exists": "존재하지 않음", + "after": "후에", + "before": "전에" + }, + "enterValue": "값 입력", + "addCondition": "조건 추가", + "conditionNotSetup": "조건이 설정되지 않음", + "selectVariable": "변수 선택...", + "optionName": { + "localUpload": "로컬 업로드", + "video": "비디오", + "image": "이미지", + "audio": "오디오", + "url": "URL (영문)", + "doc": "문서" + }, + "select": "고르다", + "addSubVariable": "하위 변수" + }, + "variableAssigner": { + "title": "변수 할당", + "outputType": "출력 유형", + "varNotSet": "변수가 설정되지 않음", + "noVarTip": "할당할 변수를 추가하세요", + "type": { + "string": "문자열", + "number": "숫자", + "object": "객체", + "array": "배열" + }, + "aggregationGroup": "집계 그룹", + "aggregationGroupTip": "이 기능을 활성화하면 변수 집계자가 여러 변수 집합을 집계할 수 있습니다.", + "addGroup": "그룹 추가", + "outputVars": { + "varDescribe": "{{groupName}} 출력" + }, + "setAssignVariable": "할당 변수 설정" + }, + "assigner": { + "assignedVariable": "할당된 변수", + "writeMode": "쓰기 모드", + "writeModeTip": "할당된 변수가 배열일 때, 추가 모드는 끝에 추가합니다.", + "over-write": "덮어쓰기", + "append": "추가", + "plus": "더하기", + "clear": "지우기", + "setVariable": "변수 설정", + "variable": "변수", + "operations": { + "*=": "*=", + "overwrite": "덮어쓰기", + "-=": "-=", + "append": "추가", + "over-write": "덮어쓰기", + "+=": "+=", + "title": "조작", + "extend": "연장", + "clear": "초기화", + "/=": "/=", + "set": "설정", + "remove-first": "첫 번째 제거", + "remove-last": "마지막 제거" + }, + "variables": "변수", + "noAssignedVars": "사용 가능한 할당된 변수가 없습니다.", + "noVarTip": "\"+\" 버튼을 클릭하여 변수를 추가합니다.", + "setParameter": "매개 변수 설정...", + "assignedVarsDescription": "할당된 변수는 대화 변수와 같은 쓰기 가능한 변수여야 합니다.", + "selectAssignedVariable": "할당된 변수 선택...", + "varNotSet": "변수가 설정되지 않음" + }, + "tool": { + "inputVars": "입력 변수", + "outputVars": { + "text": "도구가 생성한 내용", + "files": { + "title": "도구가 생성한 파일", + "type": "지원 유형. 현재는 이미지만 지원합니다", + "transfer_method": "전송 방법. 값은 remote_url 또는 local_file", + "url": "이미지 URL", + "upload_file_id": "업로드된 파일 ID" + }, + "json": "도구로 생성된 JSON" + }, + "authorize": "권한 부여", + "insertPlaceholder1": "타이프하거나 누르세요", + "settings": "설정", + "insertPlaceholder2": "변수를 삽입하다" + }, + "questionClassifiers": { + "model": "모델", + "inputVars": "입력 변수", + "outputVars": { + "className": "클래스 이름", + "usage": "모델 사용 정보" + }, + "class": "클래스", + "classNamePlaceholder": "클래스 이름을 작성하세요", + "advancedSetting": "고급 설정", + "topicName": "주제 이름", + "topicPlaceholder": "주제 이름을 작성하세요", + "addClass": "클래스 추가", + "instruction": "지시", + "instructionTip": "질문 분류기가 질문을 더 잘 분류할 수 있도록 추가 지시를 입력하세요.", + "instructionPlaceholder": "지시를 작성하세요" + }, + "parameterExtractor": { + "inputVar": "입력 변수", + "outputVars": { + "isSuccess": "성공 여부. 성공 시 값은 1 이고, 실패 시 값은 0 입니다.", + "errorReason": "오류 원인", + "usage": "모델 사용 정보" + }, + "extractParameters": "매개변수 추출", + "importFromTool": "도구에서 가져오기", + "addExtractParameter": "추출 매개변수 추가", + "addExtractParameterContent": { + "name": "이름", + "namePlaceholder": "추출 매개변수 이름", + "type": "유형", + "typePlaceholder": "추출 매개변수 유형", + "description": "설명", + "descriptionPlaceholder": "추출 매개변수 설명", + "required": "필수", + "requiredContent": "필수는 모델 추론을 위한 참고 용도로만 사용되며, 매개변수 출력의 필수 유효성 검사는 아닙니다." + }, + "extractParametersNotSet": "추출 매개변수가 설정되지 않음", + "instruction": "지시", + "instructionTip": "매개변수 추출기가 매개변수를 추출하는 방법을 이해하는 데 도움이 되는 추가 지시를 입력하세요.", + "advancedSetting": "고급 설정", + "reasoningMode": "추론 모드", + "reasoningModeTip": "모델의 함수 호출 또는 프롬프트에 대한 지시 응답 능력을 기반으로 적절한 추론 모드를 선택할 수 있습니다." + }, + "iteration": { + "deleteTitle": "반복 노드를 삭제하시겠습니까?", + "deleteDesc": "반복 노드를 삭제하면 모든 하위 노드가 삭제됩니다", + "input": "입력", + "output": "출력 변수", + "iteration_one": "{{count}} 반복", + "iteration_other": "{{count}} 반복", + "currentIteration": "현재 반복", + "ErrorMethod": { + "operationTerminated": "종료", + "continueOnError": "오류 발생 시 계속", + "removeAbnormalOutput": "비정상 출력 제거" + }, + "comma": ",", + "error_one": "{{개수}} 오류", + "parallelMode": "병렬 모드", + "errorResponseMethod": "오류 응답 방법", + "parallelModeUpper": "병렬 모드", + "MaxParallelismTitle": "최대 병렬 처리", + "error_other": "{{개수}} 오류", + "parallelModeEnableTitle": "Parallel Mode Enabled(병렬 모드 사용)", + "parallelPanelDesc": "병렬 모드에서 반복의 작업은 병렬 실행을 지원합니다.", + "parallelModeEnableDesc": "병렬 모드에서는 반복 내의 작업이 병렬 실행을 지원합니다. 오른쪽의 속성 패널에서 이를 구성할 수 있습니다.", + "MaxParallelismDesc": "최대 병렬 처리는 단일 반복에서 동시에 실행되는 작업 수를 제어하는 데 사용됩니다.", + "answerNodeWarningDesc": "병렬 모드 경고: 응답 노드, 대화 변수 할당 및 반복 내의 지속적인 읽기/쓰기 작업으로 인해 예외가 발생할 수 있습니다.", + "flattenOutput": "출력 평탄화", + "flattenOutputDesc": "활성화하면, 모든 반복 결과가 배열일 경우 이를 하나의 배열로 평탄화합니다. 비활성화하면, 결과는 중첩된 배열 구조를 유지합니다." + }, + "note": { + "editor": { + "medium": "보통", + "showAuthor": "작성자 표시", + "link": "링크", + "unlink": "해제", + "small": "작다", + "large": "큰", + "placeholder": "메모 쓰기...", + "bold": "대담한", + "enterUrl": "URL 입력...", + "openLink": "열다", + "italic": "이탤릭체", + "invalidUrl": "잘못된 URL", + "strikethrough": "취소선", + "bulletList": "글머리 기호 목록" + }, + "addNote": "메모 추가" + }, + "docExtractor": { + "outputVars": { + "text": "추출된 텍스트" + }, + "learnMore": "더 알아보세요", + "inputVar": "입력 변수", + "supportFileTypes": "지원 파일 형식: {{types}}." + }, + "listFilter": { + "outputVars": { + "result": "필터 결과", + "last_record": "마지막 레코드", + "first_record": "첫 번째 레코드" + }, + "asc": "증권 시세 표시기", + "filterConditionKey": "필터 조건 키", + "limit": "톱 N", + "filterConditionComparisonValue": "필터 조건 값", + "filterCondition": "필터 조건", + "inputVar": "입력 변수", + "desc": "설명", + "orderBy": "정렬 기준", + "selectVariableKeyPlaceholder": "하위 변수 키 선택", + "filterConditionComparisonOperator": "필터 조건 비교 연산자", + "extractsCondition": "N 항목을 추출합니다." + }, + "agent": { + "strategy": { + "label": "에이전트 전략", + "tooltip": "다양한 에이전트 전략은 시스템이 다단계 도구 호출을 계획하고 실행하는 방법을 결정합니다", + "configureTip": "에이전트 전략을 구성하세요.", + "searchPlaceholder": "검색 에이전트 전략", + "shortLabel": "전략", + "selectTip": "에이전트 전략 선택", + "configureTipDesc": "에이전트 전략을 구성한 후 이 노드는 나머지 구성을 자동으로 로드합니다. 이 전략은 다단계 도구 추론의 메커니즘에 영향을 미칩니다." + }, + "pluginInstaller": { + "install": "설치하다", + "installing": "설치" + }, + "modelNotInMarketplace": { + "desc": "이 모델은 로컬 또는 GitHub 리포지토리에서 설치됩니다. 설치 후 사용하십시오.", + "title": "모델이 설치되지 않음", + "manageInPlugins": "플러그인에서 관리" + }, + "modelNotSupport": { + "title": "지원되지 않는 모델", + "descForVersionSwitch": "설치된 플러그인 버전은 이 모델을 제공하지 않습니다. 버전을 전환하려면 클릭합니다.", + "desc": "설치된 플러그인 버전은 이 모델을 제공하지 않습니다." + }, + "modelSelectorTooltips": { + "deprecated": "이 모델은 더 이상 사용되지 않습니다." + }, + "outputVars": { + "files": { + "url": "이미지 URL", + "upload_file_id": "파일 ID 업로드", + "transfer_method": "전송 방법. 값이 remote_url 또는 local_file 입니다.", + "type": "지원 유형. 이제 이미지만 지원합니다.", + "title": "에이전트 생성 파일" + }, + "json": "에이전트 생성 JSON", + "text": "상담원이 생성한 콘텐츠", + "usage": "모델 사용 정보" + }, + "checkList": { + "strategyNotSelected": "전략이 선택되지 않음" + }, + "installPlugin": { + "changelog": "변경 로그", + "install": "설치하다", + "desc": "다음 플러그인을 설치하려고 합니다.", + "cancel": "취소", + "title": "플러그인 설치" + }, + "strategyNotFoundDescAndSwitchVersion": "설치된 플러그인 버전은 이 전략을 제공하지 않습니다. 버전을 전환하려면 클릭합니다.", + "learnMore": "더 알아보세요", + "toolNotAuthorizedTooltip": "{{도구}} 권한이 부여되지 않음", + "strategyNotFoundDesc": "설치된 플러그인 버전은 이 전략을 제공하지 않습니다.", + "maxIterations": "최대 반복 횟수", + "pluginNotFoundDesc": "이 플러그인은 GitHub 에서 설치됩니다. 플러그인으로 이동하여 다시 설치하십시오.", + "pluginNotInstalledDesc": "이 플러그인은 GitHub 에서 설치됩니다. 플러그인으로 이동하여 다시 설치하십시오.", + "strategyNotInstallTooltip": "{{strategy}}가 설치되지 않았습니다.", + "tools": "도구", + "unsupportedStrategy": "지원되지 않는 전략", + "pluginNotInstalled": "이 플러그인은 설치되어 있지 않습니다.", + "toolNotInstallTooltip": "{{tool}}이 설치되지 않았습니다.", + "configureModel": "모델 구성", + "strategyNotSet": "에이전트 전략이 설정되지 않음", + "modelNotInstallTooltip": "이 모델은 설치되지 않았습니다.", + "model": "모델", + "notAuthorized": "권한이 부여되지 않음", + "modelNotSelected": "모델이 선택되지 않음", + "toolbox": "도구", + "linkToPlugin": "플러그인에 대한 링크", + "parameterSchema": "파라미터 스키마", + "clickToViewParameterSchema": "매개변수 스키마 보려면 클릭하세요." + }, + "loop": { + "ErrorMethod": { + "removeAbnormalOutput": "비정상적인 출력을 제거하세요.", + "operationTerminated": "종료됨", + "continueOnError": "오류가 발생해도 계속 진행하세요." + }, + "currentLoop": "현재 루프", + "loopMaxCount": "최대 루프 수", + "input": "입력", + "error_other": "{{count}} 오류", + "comma": ",", + "loop_one": "{{count}} 루프", + "loop_other": "{{count}} 루프", + "breakCondition": "루프 종료 조건", + "output": "출력 변수", + "error_one": "{{count}} 에러", + "deleteTitle": "루프 노드를 삭제하시겠습니까?", + "deleteDesc": "루프 노드를 삭제하면 모든 자식 노드가 제거됩니다.", + "errorResponseMethod": "오류 응답 방법", + "exitConditionTip": "루프 노드는 최소한 하나의 종료 조건이 필요합니다.", + "finalLoopVariables": "최종 루프 변수", + "loopVariables": "루프 변수", + "setLoopVariables": "루프 범위 내에서 변수를 설정합니다.", + "initialLoopVariables": "초기 루프 변수", + "breakConditionTip": "종료 조건과 대화 변수가 있는 루프 내에서만 변수를 참조할 수 있습니다.", + "currentLoopCount": "현재 루프 카운트: {{count}}", + "loopMaxCountError": "유효한 최대 루프 수를 입력하십시오. 범위는 1 에서 {{maxCount}}입니다.", + "totalLoopCount": "총 루프 횟수: {{count}}", + "variableName": "변수 이름", + "loopNode": "루프 노드", + "inputMode": "입력 모드" + }, + "dataSource": { + "add": "데이터 원본 추가", + "supportedFileFormatsPlaceholder": "파일 확장자, e.g. doc", + "supportedFileFormats": "지원되는 파일 형식" + }, + "knowledgeBase": { + "chunkStructureTip": { + "learnMore": "더 알아보세요", + "title": "청크 구조를 선택해 주세요", + "message": "Dify 기술 자료는 일반, 부모-자식 및 Q&A의 세 가지 청크 구조를 지원합니다. 각 기술 자료는 하나의 구조만 가질 수 있습니다. 이전 노드의 출력은 선택한 청크 구조와 일치해야 합니다. 청크 구조의 선택은 사용 가능한 인덱스 메서드에 영향을 줍니다." + }, + "chunkStructure": "청크 구조", + "chunkIsRequired": "청크 구조가 필요합니다.", + "chooseChunkStructure": "청크 구조 선택", + "aboutRetrieval": "검색 방법에 대해.", + "changeChunkStructure": "청크 구조 변경", + "indexMethodIsRequired": "인덱스 메서드가 필요합니다.", + "retrievalSettingIsRequired": "검색 설정이 필요합니다.", + "chunksInput": "청크", + "chunksInputTip": "지식 기반 노드의 입력 변수는 Chunks입니다. 변수 유형은 선택된 청크 구조와 일치해야 하는 특정 JSON 스키마를 가진 객체입니다.", + "chunksVariableIsRequired": "Chunks 변수는 필수입니다", + "embeddingModelIsRequired": "임베딩 모델이 필요합니다", + "rerankingModelIsRequired": "재순위 모델이 필요합니다", + "rerankingModelIsInvalid": "재정렬 모델이 유효하지 않습니다", + "embeddingModelIsInvalid": "임베딩 모델이 유효하지 않습니다" + }, + "triggerPlugin": { + "authorized": "권한이 부여된", + "notConfigured": "구성되지 않음", + "notAuthorized": "권한 없음", + "selectSubscription": "구독 선택", + "availableSubscriptions": "이용 가능한 구독", + "addSubscription": "새 구독 추가", + "removeSubscription": "구독 해지", + "subscriptionRemoved": "구독이 성공적으로 취소되었습니다", + "error": "오류", + "configuration": "구성", + "remove": "제거", + "or": "또는", + "useOAuth": "OAuth 사용", + "useApiKey": "API 키 사용", + "authenticationFailed": "인증 실패", + "authenticationSuccess": "인증 성공", + "oauthConfigFailed": "OAuth 구성 실패", + "configureOAuthClient": "OAuth 클라이언트 구성", + "oauthClientDescription": "인증을 활성화하려면 OAuth 클라이언트 자격 증명을 구성하세요", + "oauthClientSaved": "OAuth 클라이언트 구성이 성공적으로 저장되었습니다", + "configureApiKey": "API 키 설정", + "apiKeyDescription": "인증을 위해 API 키 자격 증명을 구성합니다", + "apiKeyConfigured": "API 키가 성공적으로 설정되었습니다", + "configurationFailed": "구성 실패", + "failedToStart": "인증 흐름을 시작하지 못했습니다", + "credentialsVerified": "자격 증명이 성공적으로 확인되었습니다", + "credentialVerificationFailed": "자격 증명 확인 실패", + "verifyAndContinue": "확인 후 계속", + "configureParameters": "매개변수 구성", + "parametersDescription": "트리거 매개변수 및 속성 구성", + "configurationComplete": "구성이 완료되었습니다", + "configurationCompleteDescription": "트리거가 성공적으로 설정되었습니다", + "configurationCompleteMessage": "트리거 설정이 완료되었으며 이제 사용할 준비가 되었습니다.", + "parameters": "매개변수", + "properties": "속성", + "propertiesDescription": "이 트리거에 대한 추가 구성 속성", + "noConfigurationRequired": "이 트리거에는 추가 구성 필요 없습니다.", + "subscriptionName": "구독 이름", + "subscriptionNameDescription": "이 트리거 구독에 대한 고유한 이름을 입력하세요", + "subscriptionNamePlaceholder": "구독 이름 입력...", + "subscriptionNameRequired": "구독 이름은 필수 항목입니다", + "subscriptionRequired": "구독이 필요합니다" + }, + "triggerSchedule": { + "title": "일정", + "nodeTitle": "일정 트리거", + "notConfigured": "구성되지 않음", + "useCronExpression": "크론 표현식 사용", + "useVisualPicker": "시각적 선택기 사용", + "frequency": { + "label": "주파수", + "hourly": "시간별", + "daily": "일일", + "weekly": "주간", + "monthly": "월간" + }, + "selectFrequency": "주파수 선택", + "frequencyLabel": "주파수", + "nextExecution": "다음 실행", + "weekdays": "주중", + "time": "시간", + "cronExpression": "크론 표현식", + "nextExecutionTime": "다음 실행 시간", + "nextExecutionTimes": "다음 5회 실행 시간", + "startTime": "시작 시간", + "executeNow": "지금 실행", + "selectDateTime": "날짜 및 시간 선택", + "hours": "시간", + "minutes": "분", + "onMinute": "분 안에", + "days": "날들", + "lastDay": "마지막 날", + "lastDayTooltip": "모든 달이 31일인 것은 아닙니다. 각 달의 마지막 날을 선택하려면 '마지막 날' 옵션을 사용하세요.", + "mode": "모드", + "timezone": "시간대", + "visualConfig": "시각적 구성", + "monthlyDay": "월간 일", + "executionTime": "실행 시간", + "invalidTimezone": "잘못된 시간대", + "invalidCronExpression": "잘못된 크론 표현식", + "noValidExecutionTime": "유효한 실행 시간을 계산할 수 없습니다", + "executionTimeCalculationError": "실행 시간을 계산하지 못했습니다", + "invalidFrequency": "잘못된 주파수", + "invalidStartTime": "잘못된 시작 시간", + "startTimeMustBeFuture": "시작 시간은 미래여야 합니다", + "invalidTimeFormat": "잘못된 시간 형식(예상 형식: HH:MM AM/PM)", + "invalidWeekday": "잘못된 요일: {{weekday}}", + "invalidMonthlyDay": "월별 일자는 1-31 사이이거나 \"마지막\"이어야 합니다", + "invalidOnMinute": "분은 0에서 59 사이여야 합니다", + "invalidExecutionTime": "잘못된 실행 시간", + "executionTimeMustBeFuture": "실행 시간은 미래여야 합니다" + }, + "triggerWebhook": { + "title": "웹훅 트리거", + "nodeTitle": "🔗 웹훅 트리거", + "configPlaceholder": "웹훅 트리거 구성은 여기에서 구현됩니다", + "webhookUrl": "웹훅 URL", + "webhookUrlPlaceholder": "웹훅 URL을 생성하려면 생성 버튼을 클릭하세요", + "generate": "생성", + "copy": "복사", + "test": "테스트", + "urlGenerated": "웹훅 URL이 성공적으로 생성되었습니다", + "urlGenerationFailed": "웹훅 URL 생성에 실패했습니다", + "urlCopied": "URL이 클립보드에 복사되었습니다", + "method": "방법", + "contentType": "콘텐츠 유형", + "queryParameters": "쿼리 매개변수", + "headerParameters": "헤더 매개변수", + "requestBodyParameters": "요청 본문 매개변수", + "parameterName": "변수 이름", + "varName": "변수 이름", + "varType": "타입", + "varNamePlaceholder": "변수 이름 입력...", + "required": "필수", + "addParameter": "추가", + "addHeader": "추가", + "noParameters": "매개변수가 설정되지 않았습니다", + "noQueryParameters": "쿼리 매개변수가 설정되지 않았습니다", + "noHeaders": "헤더가 구성되지 않았습니다", + "noBodyParameters": "본문 매개변수가 구성되지 않았습니다", + "debugUrlTitle": "테스트 실행 시에는 항상 이 URL을 사용하세요", + "debugUrlCopy": "클릭하여 복사", + "debugUrlCopied": "복사됨!", + "debugUrlPrivateAddressWarning": "이 URL은 내부 주소인 것으로 보이며, 이로 인해 웹후크 요청이 실패할 수 있습니다. TRIGGER_URL을 공개 주소로 변경할 수 있습니다.", + "errorHandling": "오류 처리", + "errorStrategy": "오류 처리", + "responseConfiguration": "응답", + "asyncMode": "비동기 모드", + "statusCode": "상태 코드", + "responseBody": "응답 본문", + "responseBodyPlaceholder": "여기에 응답 내용을 작성하세요", + "headers": "헤더", + "validation": { + "webhookUrlRequired": "웹훅 URL이 필요합니다", + "invalidParameterType": "매개변수 \"{{name}}\"에 대한 매개변수 유형 \"{{type}}\"이(가) 잘못되었습니다" + } + } + }, + "tracing": { + "stopBy": "{{user}}에 의해 중지됨" + }, + "variableReference": { + "noAvailableVars": "사용 가능한 변수 없음", + "conversationVars": "대화 변수", + "noVarsForOperation": "선택한 작업에 할당할 수 있는 변수가 없습니다.", + "noAssignedVars": "사용 가능한 할당된 변수가 없습니다.", + "assignedVarsDescription": "할당된 변수는 다음과 같이 쓰기 가능한 변수여야 합니다." + }, + "versionHistory": { + "filter": { + "onlyYours": "오직 너의 것만", + "all": "모든", + "reset": "필터 재설정", + "onlyShowNamedVersions": "이름이 붙은 버전만 표시", + "empty": "일치하는 버전 기록이 없습니다." + }, + "editField": { + "titleLengthLimit": "제목은 {{limit}}자를 초과할 수 없습니다.", + "title": "제목", + "releaseNotes": "릴리스 노트", + "releaseNotesLengthLimit": "릴리스 노트는 {{limit}}자를 초과할 수 없습니다." + }, + "action": { + "updateFailure": "버전 업데이트에 실패했습니다.", + "restoreSuccess": "복원된 버전", + "deleteSuccess": "버전 삭제됨", + "restoreFailure": "버전을 복원하지 못했습니다.", + "deleteFailure": "버전을 삭제하지 못했습니다.", + "updateSuccess": "버전이 업데이트되었습니다.", + "copyIdSuccess": "클립보드에 복사된 ID" + }, + "editVersionInfo": "버전 정보 편집", + "latest": "최신", + "currentDraft": "현재 초안", + "releaseNotesPlaceholder": "변경된 내용을 설명하세요.", + "defaultName": "제목 없는 버전", + "nameThisVersion": "이름 바꾸기", + "title": "버전 기록", + "deletionTip": "삭제는 되돌릴 수 없으니, 확인해 주시기 바랍니다.", + "restorationTip": "버전 복원 후 현재 초안이 덮어쓰여질 것입니다.", + "copyId": "ID 복사" + }, + "debug": { + "noData": { + "runThisNode": "이 노드를 실행하세요", + "description": "마지막 실행 결과가 여기 표시됩니다." + }, + "variableInspect": { + "trigger": { + "stop": "멈춰 뛰어", + "clear": "맑은", + "running": "캐싱 실행 상태", + "cached": "캐시된 변수를 보기", + "normal": "변수 검사" + }, + "title": "변수 검사", + "view": "로그 보기", + "edited": "편집됨", + "emptyLink": "더 알아보기", + "chatNode": "대화", + "clearAll": "모두 초기화", + "systemNode": "시스템", + "envNode": "환경", + "clearNode": "캐시된 변수를 지우기", + "resetConversationVar": "대화 변수를 기본 값으로 재설정합니다.", + "reset": "마지막 실행 값으로 재설정", + "emptyTip": "캔버스에서 노드를 한 단계씩 실행한 후, 변수 검사에서 노드 변수의 현재 값을 볼 수 있습니다.", + "export": "수출", + "largeData": "대용량 데이터, 읽기 전용 미리 보기. 모두 보도록 내보내기.", + "exportToolTip": "변수를 파일로 내보내기", + "largeDataNoExport": "대용량 데이터 - 부분 미리 보기만", + "listening": { + "title": "트리거 이벤트 수신 대기 중...", + "tip": "이제 테스트 요청을 HTTP {{nodeName}} 엔드포인트로 보내 이벤트 트리거를 시뮬레이션하거나 실시간 이벤트 디버깅용 콜백 URL로 사용할 수 있습니다. 모든 출력은 변수 검사기에서 직접 확인할 수 있습니다.", + "tipPlugin": "이제 {{- pluginName}}에서 이벤트를 생성하고, 변수 검사기에서 이러한 이벤트의 출력을 확인할 수 있습니다.", + "tipSchedule": "스케줄 트리거의 이벤트를 수신 대기 중입니다.\n다음 예약 실행: {{nextTriggerTime}}", + "tipFallback": "들어오는 트리거 이벤트를 대기 중입니다. 출력 결과가 여기에 표시됩니다.", + "defaultNodeName": "이 트리거", + "defaultPluginName": "이 플러그인 트리거", + "defaultScheduleTime": "구성되지 않음", + "selectedTriggers": "선택된 트리거", + "stopButton": "멈춰" + } + }, + "settingsTab": "설정", + "lastRunTab": "마지막 실행", + "relations": { + "dependencies": "종속성", + "dependentsDescription": "이 노드에 의존하는 노드", + "noDependents": "부양가족 없음", + "noDependencies": "종속성 없음", + "dependents": "부양 가족", + "dependenciesDescription": "이 노드가 의존하는 노드" + }, + "relationsTab": "관계", + "copyLastRun": "마지막 실행 복사", + "noLastRunFound": "이전 실행이 없습니다.", + "noMatchingInputsFound": "지난 실행에서 일치하는 입력을 찾을 수 없습니다.", + "copyLastRunError": "마지막 실행 입력을 복사하는 데 실패했습니다.", + "lastOutput": "마지막 출력", + "lastRunInputsCopied": "지난 실행에서 {{count}}개의 입력이 복사되었습니다" + }, + "sidebar": { + "exportWarning": "현재 저장된 버전 내보내기", + "exportWarningDesc": "이 작업은 현재 저장된 워크플로우 버전을 내보냅니다. 편집기에서 저장되지 않은 변경 사항이 있는 경우, 먼저 워크플로우 캔버스의 내보내기 옵션을 사용하여 저장해 주세요." + }, + "publishLimit": { + "startNodeTitlePrefix": "업그레이드하기", + "startNodeTitleSuffix": "워크플로마다 무제한 트리거 잠금 해제", + "startNodeDesc": "이 요금제에서는 워크플로당 2개의 트리거 제한에 도달했습니다. 이 워크플로를 게시하려면 업그레이드하세요." + }, + "error": { + "startNodeRequired": "{{operation}} 전에 먼저 시작 노드를 추가해 주세요", + "operations": { + "connectingNodes": "노드 연결", + "addingNodes": "노드 추가", + "modifyingWorkflow": "워크플로 수정", + "updatingWorkflow": "워크플로 업데이트" + } + }, + "customWebhook": "맞춤 웹훅", + "difyTeam": "디파이 팀", + "triggerStatus": { + "enabled": "트리거", + "disabled": "트리거 • 비활성화" + }, + "entryNodeStatus": { + "enabled": "시작", + "disabled": "시작 • 비활성" + }, + "onboarding": { + "title": "시작할 노드를 선택하세요", + "description": "시작 노드마다 기능이 다릅니다. 걱정하지 마세요, 나중에 언제든지 변경할 수 있습니다.", + "userInputFull": "사용자 입력 (원래 시작 노드)", + "userInputDescription": "사용자 입력 변수를 설정할 수 있는 시작 노드로, 웹 앱, 서비스 API, MCP 서버, 워크플로우를 도구 기능으로 제공합니다.", + "trigger": "트리거", + "triggerDescription": "트리거는 예약된 작업, 사용자 지정 웹훅 또는 다른 앱과의 통합과 같은 워크플로우의 시작 노드로 사용할 수 있습니다.", + "back": "뒤로", + "learnMore": "자세히 알아보기", + "aboutStartNode": "시작 노드에 대해.", + "escTip": { + "press": "누르다", + "key": "이스케이프", + "toDismiss": "해고하다" + } + } +} diff --git a/web/i18n/ko-KR/workflow.ts b/web/i18n/ko-KR/workflow.ts deleted file mode 100644 index 964f331c85..0000000000 --- a/web/i18n/ko-KR/workflow.ts +++ /dev/null @@ -1,1347 +0,0 @@ -const translation = { - common: { - undo: '실행 취소', - redo: '다시 실행', - editing: '편집 중', - autoSaved: '자동 저장됨', - unpublished: '게시되지 않음', - published: '게시됨', - publish: '게시하기', - update: '업데이트', - run: '테스트 실행', - running: '실행 중', - inRunMode: '실행 모드', - inPreview: '미리보기 중', - inPreviewMode: '미리보기 모드', - preview: '미리보기', - viewRunHistory: '실행 기록 보기', - runHistory: '실행 기록', - goBackToEdit: '편집기로 돌아가기', - conversationLog: '대화 로그', - debugAndPreview: '미리보기', - restart: '재시작', - currentDraft: '현재 초안', - currentDraftUnpublished: '현재 초안 미발행', - latestPublished: '최신 발행본', - publishedAt: '발행일', - restore: '복원', - runApp: '앱 실행', - batchRunApp: '앱 일괄 실행', - accessAPIReference: 'API 참조 접근', - embedIntoSite: '사이트에 삽입', - addTitle: '제목 추가...', - addDescription: '설명 추가...', - noVar: '변수 없음', - searchVar: '변수 검색', - variableNamePlaceholder: '변수 이름', - setVarValuePlaceholder: '변수 값 설정', - needConnectTip: '이 단계는 아무것도 연결되어 있지 않습니다', - maxTreeDepth: '분기당 최대 {{depth}} 노드 제한', - workflowProcess: '워크플로우 과정', - notRunning: '아직 실행되지 않음', - previewPlaceholder: '디버깅을 시작하려면 아래 상자에 내용을 입력하세요', - effectVarConfirm: { - title: '변수 제거', - content: - '변수가 다른 노드에서 사용되고 있습니다. 그래도 제거하시겠습니까?', - }, - insertVarTip: '빠르게 삽입하려면 \'/\' 키를 누르세요', - processData: '데이터 처리', - input: '입력', - output: '출력', - jinjaEditorPlaceholder: '변수를 삽입하려면 \'/\' 또는 \'{\'를 입력하세요', - viewOnly: '보기 전용', - showRunHistory: '실행 기록 보기', - enableJinja: 'Jinja 템플릿 지원 활성화', - learnMore: '더 알아보기', - copy: '복사', - duplicate: '복제', - pasteHere: '여기에 붙여넣기', - pointerMode: '포인터 모드', - handMode: '드래그 모드', - model: '모델', - workflowAsTool: '도구로서의 워크플로우', - configureRequired: '구성 필요', - configure: '구성', - manageInTools: '도구에서 관리', - workflowAsToolTip: '워크플로우 업데이트 후 도구 재구성이 필요합니다.', - viewDetailInTracingPanel: '세부 정보 보기', - importDSL: 'DSL 가져오기', - importFailure: '가져오기 실패', - chooseDSL: 'DSL(yml) 파일 선택', - backupCurrentDraft: '현재 초안 백업', - overwriteAndImport: '덮어쓰기 및 가져오기', - importSuccess: '가져오기 성공', - syncingData: '단 몇 초 만에 데이터를 동기화할 수 있습니다.', - importDSLTip: - '현재 초안을 덮어씁니다. 가져오기 전에 워크플로우를 백업으로 내보냅니다.', - parallelTip: { - click: { - title: '클릭', - desc: '추가', - }, - drag: { - title: '드래그', - desc: '연결 방법', - }, - depthLimit: '평행 중첩 레이어 {{num}}개 레이어의 제한', - limit: '병렬 처리는 {{num}}개의 분기로 제한됩니다.', - }, - disconnect: '분리하다', - jumpToNode: '이 노드로 이동', - addParallelNode: '병렬 노드 추가', - parallel: '병렬', - branch: '브랜치', - fileUploadTip: '이미지 업로드 기능이 파일 업로드로 업그레이드되었습니다.', - ImageUploadLegacyTip: - '이제 시작 양식에서 파일 형식 변수를 만들 수 있습니다. 앞으로 이미지 업로드 기능은 더 이상 지원되지 않습니다.', - importWarning: '주의', - importWarningDetails: - 'DSL 버전 차이는 특정 기능에 영향을 미칠 수 있습니다.', - openInExplore: 'Explore 에서 열기', - onFailure: '실패 시', - addFailureBranch: '실패 분기 추가', - noHistory: '이력 없음', - loadMore: '더 많은 워크플로우 로드', - publishUpdate: '업데이트 게시', - exportJPEG: 'JPEG 로 내보내기', - exitVersions: '종료 버전', - exportImage: '이미지 내보내기', - exportSVG: 'SVG 로 내보내기', - versionHistory: '버전 기록', - exportPNG: 'PNG 로 내보내기', - addBlock: '노드 추가', - needAnswerNode: '답변 노드를 추가해야 합니다.', - needOutputNode: '출력 노드를 추가해야 합니다', - tagBound: '이 태그를 사용하는 앱 수', - currentView: '현재 보기', - currentWorkflow: '현재 워크플로', - moreActions: '더 많은 작업', - listening: '듣기', - chooseStartNodeToRun: '실행할 시작 노드를 선택하세요', - runAllTriggers: '모든 트리거 실행', - features: '특징', - featuresDescription: '웹 앱 사용자 경험 향상', - featuresDocLink: '자세히 알아보기', - needAdd: '{{node}} 노드를 추가해야 합니다', - needStartNode: '적어도 하나의 시작 노드를 추가해야 합니다', - workflowAsToolDisabledHint: '최신 워크플로를 게시하고 도구로 구성하기 전에 연결된 사용자 입력 노드가 있는지 확인하세요.', - }, - env: { - envPanelTitle: '환경 변수', - envDescription: - '환경 변수는 개인 정보와 자격 증명을 저장하는 데 사용될 수 있습니다. 이들은 읽기 전용이며 내보내기 중에 DSL 파일과 분리할 수 있습니다.', - envPanelButton: '변수 추가', - modal: { - title: '환경 변수 추가', - editTitle: '환경 변수 편집', - type: '유형', - name: '이름', - namePlaceholder: '환경 이름', - value: '값', - valuePlaceholder: '환경 값', - secretTip: - '민감한 정보나 데이터를 정의하는 데 사용되며, DSL 설정은 유출 방지를 위해 구성됩니다.', - description: '설명', - descriptionPlaceholder: '변수에 대해 설명하세요', - }, - export: { - title: '비밀 환경 변수를 내보내시겠습니까?', - checkbox: '비밀 값 내보내기', - ignore: 'DSL 내보내기', - export: '비밀 값이 포함된 DSL 내보내기', - }, - }, - globalVar: { - title: '시스템 변수', - description: '시스템 변수는 타입이 맞으면 배선 없이도 모든 노드에서 참조할 수 있는 전역 변수로, 엔드유저 ID와 워크플로 ID 등이 포함됩니다.', - fieldsDescription: { - conversationId: '대화 ID', - dialogCount: '대화 수', - userId: '사용자 ID', - triggerTimestamp: '애플리케이션 시작 타임스탬프', - appId: '애플리케이션 ID', - workflowId: '워크플로 ID', - workflowRunId: '워크플로 실행 ID', - }, - }, - chatVariable: { - panelTitle: '대화 변수', - panelDescription: - '대화 변수는 LLM 이 기억해야 할 대화 기록, 업로드된 파일, 사용자 선호도 등의 상호작용 정보를 저장하는 데 사용됩니다. 이들은 읽기 및 쓰기가 가능합니다.', - docLink: '자세한 내용은 문서를 참조하세요.', - button: '변수 추가', - modal: { - title: '대화 변수 추가', - editTitle: '대화 변수 편집', - name: '이름', - namePlaceholder: '변수 이름', - type: '유형', - value: '기본값', - valuePlaceholder: '기본값, 설정하지 않으려면 비워두세요', - description: '설명', - descriptionPlaceholder: '변수에 대해 설명하세요', - editInJSON: 'JSON 으로 편집', - oneByOne: '하나씩 추가', - editInForm: '양식에서 편집', - arrayValue: '값', - addArrayValue: '값 추가', - objectKey: '키', - objectType: '유형', - objectValue: '기본값', - }, - storedContent: '저장된 내용', - updatedAt: '업데이트 시간: ', - }, - changeHistory: { - title: '변경 기록', - placeholder: '아직 아무 것도 변경하지 않았습니다', - clearHistory: '기록 지우기', - hint: '힌트', - hintText: - '편집 작업이 변경 기록에 추적되며, 이 세션 동안 기기에 저장됩니다. 편집기를 떠나면 이 기록이 지워집니다.', - stepBackward_one: '{{count}} 단계 뒤로', - stepBackward_other: '{{count}} 단계 뒤로', - stepForward_one: '{{count}} 단계 앞으로', - stepForward_other: '{{count}} 단계 앞으로', - sessionStart: '세션 시작', - currentState: '현재 상태', - noteAdd: '노트 추가됨', - noteChange: '노트 변경됨', - noteDelete: '노트 삭제됨', - nodeConnect: '노드가 연결되었습니다.', - nodePaste: '노드 붙여넣기', - nodeDelete: '노드가 삭제되었습니다.', - nodeAdd: '노드가 추가되었습니다.', - nodeChange: '노드가 변경되었습니다.', - nodeDescriptionChange: '노드 설명이 변경됨', - nodeResize: '노드 크기 조정됨', - nodeDragStop: '노드가 이동했습니다.', - edgeDelete: '노드가 연결이 끊어졌습니다.', - nodeTitleChange: '노드 제목이 변경됨', - }, - errorMsg: { - fieldRequired: '{{field}}가 필요합니다', - authRequired: '인증이 필요합니다', - invalidJson: '{{field}}는 잘못된 JSON 입니다', - fields: { - variable: '변수 이름', - variableValue: '변수 값', - code: '코드', - model: '모델', - rerankModel: '재정렬 모델', - visionVariable: '비전 변수', - }, - invalidVariable: '잘못된 변수', - rerankModelRequired: - 'Rerank Model 을 켜기 전에 설정에서 모델이 성공적으로 구성되었는지 확인하십시오.', - noValidTool: '{{field}} 유효한 도구가 선택되지 않았습니다.', - toolParameterRequired: '{{field}}: 매개변수 [{{param}}] 이 필요합니다.', - startNodeRequired: '{{operation}} 전에 먼저 시작 노드를 추가해 주세요', - }, - singleRun: { - testRun: '테스트 실행', - startRun: '실행 시작', - running: '실행 중', - testRunIteration: '테스트 실행 반복', - back: '뒤로', - iteration: '반복', - loop: '루프', - reRun: '다시 실행', - preparingDataSource: '데이터 소스 준비', - }, - tabs: { - 'tools': '도구', - 'allTool': '전체', - 'customTool': '사용자 정의', - 'workflowTool': '워크플로우', - 'question-understand': '질문 이해', - 'logic': '논리', - 'transform': '변환', - 'utilities': '유틸리티', - 'noResult': '일치하는 결과 없음', - 'searchTool': '검색 도구', - 'plugin': '플러그인', - 'agent': '에이전트 전략', - 'blocks': '노드', - 'searchBlock': '검색 노드', - 'allAdded': '모두 추가됨', - 'addAll': '모두 추가', - 'sources': '소스', - 'searchDataSource': '데이터 소스 검색', - 'start': '시작', - 'searchTrigger': '검색 트리거...', - 'allTriggers': '모든 트리거', - 'noPluginsFound': '플러그인을 찾을 수 없습니다', - 'requestToCommunity': '커뮤니티에 대한 요청', - 'featuredTools': '추천', - 'showMoreFeatured': '더 보기', - 'showLessFeatured': '간략히 보기', - 'installed': '설치됨', - 'pluginByAuthor': '{{author}} 작성', - 'usePlugin': '도구 선택', - 'hideActions': '도구 숨기기', - 'noFeaturedPlugins': '마켓플레이스에서 더 많은 도구를 발견하세요', - 'noFeaturedTriggers': '마켓플레이스에서 더 많은 트리거 발견하기', - 'startDisabledTip': '트리거 노드와 사용자 입력 노드는 상호 배타적입니다.', - }, - blocks: { - 'start': '시작', - 'end': '출력', - 'answer': '답변', - 'llm': 'LLM', - 'knowledge-retrieval': '지식 검색', - 'question-classifier': '질문 분류기', - 'if-else': 'IF/ELSE', - 'code': '코드', - 'template-transform': '템플릿', - 'http-request': 'HTTP 요청', - 'variable-assigner': '변수 할당자', - 'variable-aggregator': '변수 집계자', - 'assigner': '변수 할당자', - 'iteration-start': '반복 시작', - 'iteration': '반복', - 'parameter-extractor': '매개변수 추출기', - 'document-extractor': 'Doc 추출기', - 'list-operator': 'List 연산자', - 'agent': '대리인', - 'loop-start': '루프 시작', - 'loop-end': '루프 종료', - 'loop': '루프', - 'datasource': '데이터 소스', - 'knowledge-index': '기술 자료', - 'originalStartNode': '원래 시작 노드', - 'trigger-schedule': '일정 트리거', - 'trigger-webhook': '웹훅 트리거', - 'trigger-plugin': '플러그인 트리거', - }, - 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': - '다중 분기 변수들을 하나의 변수로 집계하여 다운스트림 노드의 통합 구성을 가능하게 합니다.', - 'assigner': - '변수 할당 노드는 쓰기 가능한 변수 (대화 변수 등) 에 값을 할당하는 데 사용됩니다.', - 'variable-aggregator': - '다중 분기 변수들을 하나의 변수로 집계하여 다운스트림 노드의 통합 구성을 가능하게 합니다.', - 'iteration': - '목록 객체에서 여러 단계를 수행하여 모든 결과가 출력될 때까지 반복합니다.', - 'parameter-extractor': - '도구 호출 또는 HTTP 요청을 위해 자연어에서 구조화된 매개변수를 추출하기 위해 LLM 을 사용합니다.', - 'document-extractor': - '업로드된 문서를 LLM 에서 쉽게 이해할 수 있는 텍스트 콘텐츠로 구문 분석하는 데 사용됩니다.', - 'list-operator': '배열 내용을 필터링하거나 정렬하는 데 사용됩니다.', - 'agent': - '질문에 답하거나 자연어를 처리하기 위해 대규모 언어 모델을 호출하는 경우', - 'loop': '종료 조건이 충족되거나 최대 반복 횟수에 도달할 때까지 논리 루프를 실행합니다.', - 'loop-end': - '"break"와 동일합니다. 이 노드는 구성 항목이 없습니다. 루프 본문이 이 노드에 도달하면 루프가 종료됩니다.', - 'datasource': '데이터 소스 정보', - 'knowledge-index': '기술 자료 정보', - 'trigger-schedule': '일정에 따라 워크플로를 시작하는 시간 기반 워크플로 트리거', - 'trigger-webhook': '웹훅 트리거는 외부 시스템에서 HTTP 푸시를 받아 워크플로를 자동으로 실행합니다.', - 'trigger-plugin': '외부 플랫폼 이벤트로 워크플로를 시작하는 타사 통합 트리거', - }, - operator: { - zoomIn: '확대', - zoomOut: '축소', - zoomTo50: '50% 로 확대', - zoomTo100: '100% 로 확대', - zoomToFit: '화면에 맞게 확대', - alignCenter: '중앙', - alignRight: '오른쪽', - alignLeft: '왼쪽', - vertical: '세로', - alignTop: '상단', - alignMiddle: '중간', - alignNodes: '노드 정렬', - distributeVertical: '수직 등간격', - horizontal: '가로', - selectionAlignment: '선택 정렬', - alignBottom: '하단', - distributeHorizontal: '수평 등간격', - }, - panel: { - userInputField: '사용자 입력 필드', - helpLink: '도움말 센터', - about: '정보', - createdBy: '작성자 ', - nextStep: '다음 단계', - runThisStep: '이 단계 실행', - checklist: '체크리스트', - checklistTip: '게시하기 전에 모든 문제가 해결되었는지 확인하세요', - checklistResolved: '모든 문제가 해결되었습니다', - change: '변경', - optional: '(선택사항)', - organizeBlocks: '노드 정리하기', - selectNextStep: '다음 단계 선택', - changeBlock: '노드 변경', - addNextStep: '이 워크플로우에 다음 단계를 추가하세요.', - minimize: '전체 화면 종료', - maximize: '캔버스 전체 화면', - scrollToSelectedNode: '선택한 노드로 스크롤', - optional_and_hidden: '(선택 사항 및 숨김)', - goTo: '로 이동', - startNode: '시작 노드', - openWorkflow: '워크플로 열기', - }, - nodes: { - common: { - outputVars: '출력 변수', - insertVarTip: '변수 삽입', - memory: { - memory: '메모리', - memoryTip: '대화 메모리 설정', - windowSize: '창 크기', - conversationRoleName: '대화 역할 이름', - user: '사용자 접두사', - assistant: '어시스턴트 접두사', - }, - memories: { - title: '메모리', - tip: '대화 메모리', - builtIn: '내장', - }, - errorHandle: { - none: { - title: '없음', - desc: '예외가 발생하고 처리되지 않으면 노드 실행이 중지됩니다', - }, - defaultValue: { - title: '기본값', - desc: '오류가 발생하면 정적 출력 콘텐츠를 지정합니다.', - tip: '오류가 발생하면 아래 값을 반환합니다.', - inLog: '노드 예외, 기본값에 따라 출력합니다.', - output: '출력 기본값', - }, - failBranch: { - title: '실패 분기', - desc: '오류가 발생하면 예외 분기를 실행합니다', - customize: - '캔버스로 이동하여 fail branch logic 를 사용자 지정합니다.', - inLog: - '노드 예외는 실패 분기를 자동으로 실행합니다. 노드 출력은 오류 유형 및 오류 메시지를 반환하고 다운스트림으로 전달합니다.', - customizeTip: - 'fail 분기가 활성화되면 노드에서 throw 된 예외가 프로세스를 종료하지 않습니다. 대신 미리 정의된 실패 분기를 자동으로 실행하여 오류 메시지, 보고서, 수정 사항을 유연하게 제공하거나 작업을 건너뛸 수 있습니다.', - }, - partialSucceeded: { - tip: '프로세스에 {{num}} 노드가 비정상적으로 실행 중입니다. 추적으로 이동하여 로그를 확인하십시오.', - }, - title: '오류 처리', - tip: '노드에 예외가 발생할 때 트리거되는 예외 처리 전략입니다.', - }, - retry: { - retry: '재시도', - retryOnFailure: '실패 시 재시도', - maxRetries: '최대 재시도 횟수', - retryInterval: '재시도 간격', - retryTimes: '실패 시 {{times}}번 재시도', - retrying: '재시도...', - retrySuccessful: '재시도 성공', - retryFailed: '재시도 실패', - retryFailedTimes: '{{times}} 재시도 실패', - times: '번', - ms: '미에스', - retries: '{{숫자}} 재시도', - }, - typeSwitch: { - input: '입력 값', - variable: '변수를 사용하세요', - }, - inputVars: '입력 변수', - pluginNotInstalled: '플러그인이 설치되지 않았습니다', - }, - 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 에 컨텍스트 변수를 입력하세요.', - prompt: '프롬프트', - roleDescription: { - system: '대화를 위한 고급 지침 제공', - user: '모델에 지침, 질문 또는 텍스트 기반 입력 제공', - assistant: '사용자 메시지에 기반한 모델의 응답', - }, - addMessage: '메시지 추가', - vision: '비전', - files: '파일', - resolution: { - name: '해상도', - high: '높음', - low: '낮음', - }, - outputVars: { - output: '생성된 내용', - reasoning_content: '추론 내용', - usage: '모델 사용 정보', - }, - singleRun: { - variable: '변수', - }, - sysQueryInUser: '사용자 메시지에 sys.query 가 필요합니다', - jsonSchema: { - warningTips: { - saveSchema: '현재 필드의 편집을 완료한 후 스키마를 저장하세요.', - }, - generating: 'JSON 스키마 생성 중...', - apply: '지원하다', - descriptionPlaceholder: '설명을 추가하세요.', - generate: '생성하다', - generatedResult: '생성된 결과', - addField: '필드 추가', - addChildField: '자녀 필드 추가', - generateJsonSchema: 'JSON 스키마 생성', - fieldNamePlaceholder: '필드 이름', - back: '뒤', - instruction: '지침', - resetDefaults: '재설정', - promptTooltip: '텍스트 설명을 표준화된 JSON 스키마 구조로 변환하세요.', - title: '구조화된 출력 스키마', - stringValidations: '문자열 검증', - showAdvancedOptions: '고급 옵션 표시', - promptPlaceholder: '당신의 JSON 스키마를 설명하세요...', - generationTip: - '자연어를 사용하여 JSON 스키마를 신속하게 생성할 수 있습니다.', - resultTip: - '여기 생성된 결과가 있습니다. 만약 만족하지 않으신다면, 돌아가서 프롬프트를 수정할 수 있습니다.', - regenerate: '재생하다', - required: '필수', - doc: '구조화된 출력에 대해 더 알아보세요.', - import: 'JSON 에서 가져오기', - }, - reasoningFormat: { - title: '추론 태그 분리 활성화', - separated: '추론 태그 분리', - tooltip: '추론 태그에서 내용을 추출하고 이를 reasoning_content 필드에 저장합니다', - tagged: '추론 태그 유지', - }, - }, - knowledgeRetrieval: { - queryVariable: '쿼리 변수', - knowledge: '지식', - outputVars: { - output: '복구된 세그먼트 데이터', - content: '세그먼트 내용', - title: '세그먼트 제목', - icon: '세그먼트 아이콘', - url: '세그먼트 URL', - metadata: '기타 메타데이터', - files: '검색된 파일', - }, - metadata: { - options: { - disabled: { - title: '사용안함', - subTitle: '메타데이터 필터링을 활성화하지 않음', - }, - automatic: { - desc: '쿼리 변수를 기반으로 메타데이터 필터링 조건을 자동으로 생성합니다.', - subTitle: - '사용자 쿼리를 기반으로 메타데이터 필터링 조건을 자동으로 생성합니다.', - title: '자동', - }, - manual: { - subTitle: '메타데이터 필터링 조건을 수동으로 추가합니다.', - title: '수동', - }, - }, - panel: { - title: '메타데이터 필터 조건', - placeholder: '값을 입력하세요', - add: '조건 추가', - search: '메타데이터 검색', - datePlaceholder: '시간을 선택하세요...', - select: '변수 선택...', - conditions: '조건', - }, - title: '메타데이터 필터링', - tip: '메타데이터 필터링은 시스템 내에서 관련 정보를 검색하는 과정을 정제하고 제어하기 위해 메타데이터 속성(예: 태그, 카테고리 또는 접근 권한)을 사용하는 과정입니다.', - }, - queryText: '질의 텍스트', - queryAttachment: '이미지 조회', - }, - 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': 'Bearer', - 'custom': '사용자 정의', - 'api-key-title': 'API 키', - 'header': '헤더', - }, - insertVarPlaceholder: '변수를 삽입하려면 \'/\'를 입력하세요', - timeout: { - title: '시간 초과', - connectLabel: '연결 시간 초과', - connectPlaceholder: '초 단위로 연결 시간 초과 입력', - readLabel: '읽기 시간 초과', - readPlaceholder: '초 단위로 읽기 시간 초과 입력', - writeLabel: '쓰기 시간 초과', - writePlaceholder: '초 단위로 쓰기 시간 초과 입력', - }, - type: '형', - binaryFileVariable: '바이너리 파일 변수', - extractListPlaceholder: '목록 항목 인덱스 입력, \'/\' 변수 삽입', - curl: { - title: 'cURL 에서 가져오기', - placeholder: '여기에 cURL 문자열 붙여 넣기', - }, - verifySSL: { - title: 'SSL 인증서 확인', - warningTooltip: 'SSL 검증을 비활성화하는 것은 프로덕션 환경에서는 권장되지 않습니다. 이는 연결이 중간자 공격과 같은 보안 위협에 취약하게 만들므로 개발 또는 테스트에서만 사용해야 합니다.', - }, - }, - code: { - inputVars: '입력 변수', - outputVars: '출력 변수', - advancedDependencies: '고급 종속성', - advancedDependenciesTip: - '더 많은 시간이 소요되거나 기본으로 내장되지 않은 일부 미리 로드된 종속성을 여기에 추가하세요', - searchDependencies: '종속성 검색', - syncFunctionSignature: '코드에 함수 시그니처 동기화하기', - }, - templateTransform: { - inputVars: '입력 변수', - code: '코드', - codeSupportTip: 'Jinja2 만 지원합니다', - outputVars: { - output: '변환된 내용', - }, - }, - ifElse: { - if: 'If', - else: 'Else', - elseDescription: - 'If 조건이 충족되지 않을 때 실행할 논리를 정의하는 데 사용됩니다.', - and: '그리고', - or: '또는', - operator: '연산자', - notSetVariable: '먼저 변수를 설정하세요', - comparisonOperator: { - 'contains': '포함', - 'not contains': '포함하지 않음', - 'start with': '시작', - 'end with': '끝', - 'is': '이다', - 'is not': '아니다', - 'empty': '비어 있음', - 'not empty': '비어 있지 않음', - 'null': 'null 임', - 'not null': 'null 이 아님', - 'in': '안으로', - 'exists': '존재', - 'all of': '모두의', - 'not in': '에 없음', - 'not exists': '존재하지 않음', - 'after': '후에', - 'before': '전에', - }, - enterValue: '값 입력', - addCondition: '조건 추가', - conditionNotSetup: '조건이 설정되지 않음', - selectVariable: '변수 선택...', - optionName: { - localUpload: '로컬 업로드', - video: '비디오', - image: '이미지', - audio: '오디오', - url: 'URL (영문)', - doc: '문서', - }, - select: '고르다', - addSubVariable: '하위 변수', - }, - variableAssigner: { - title: '변수 할당', - outputType: '출력 유형', - varNotSet: '변수가 설정되지 않음', - noVarTip: '할당할 변수를 추가하세요', - type: { - string: '문자열', - number: '숫자', - object: '객체', - array: '배열', - }, - aggregationGroup: '집계 그룹', - aggregationGroupTip: - '이 기능을 활성화하면 변수 집계자가 여러 변수 집합을 집계할 수 있습니다.', - addGroup: '그룹 추가', - outputVars: { - varDescribe: '{{groupName}} 출력', - }, - setAssignVariable: '할당 변수 설정', - }, - assigner: { - 'assignedVariable': '할당된 변수', - 'writeMode': '쓰기 모드', - 'writeModeTip': '할당된 변수가 배열일 때, 추가 모드는 끝에 추가합니다.', - 'over-write': '덮어쓰기', - 'append': '추가', - 'plus': '더하기', - 'clear': '지우기', - 'setVariable': '변수 설정', - 'variable': '변수', - 'operations': { - '*=': '*=', - 'overwrite': '덮어쓰기', - '-=': '-=', - 'append': '추가', - 'over-write': '덮어쓰기', - '+=': '+=', - 'title': '조작', - 'extend': '연장', - 'clear': '초기화', - '/=': '/=', - 'set': '설정', - 'remove-first': '첫 번째 제거', - 'remove-last': '마지막 제거', - }, - 'variables': '변수', - 'noAssignedVars': '사용 가능한 할당된 변수가 없습니다.', - 'noVarTip': '"+" 버튼을 클릭하여 변수를 추가합니다.', - 'setParameter': '매개 변수 설정...', - 'assignedVarsDescription': - '할당된 변수는 대화 변수와 같은 쓰기 가능한 변수여야 합니다.', - 'selectAssignedVariable': '할당된 변수 선택...', - 'varNotSet': '변수가 설정되지 않음', - }, - tool: { - inputVars: '입력 변수', - outputVars: { - text: '도구가 생성한 내용', - files: { - title: '도구가 생성한 파일', - type: '지원 유형. 현재는 이미지만 지원합니다', - transfer_method: '전송 방법. 값은 remote_url 또는 local_file', - url: '이미지 URL', - upload_file_id: '업로드된 파일 ID', - }, - json: '도구로 생성된 JSON', - }, - authorize: '권한 부여', - insertPlaceholder1: '타이프하거나 누르세요', - settings: '설정', - insertPlaceholder2: '변수를 삽입하다', - }, - questionClassifiers: { - model: '모델', - inputVars: '입력 변수', - outputVars: { - className: '클래스 이름', - usage: '모델 사용 정보', - }, - class: '클래스', - classNamePlaceholder: '클래스 이름을 작성하세요', - advancedSetting: '고급 설정', - topicName: '주제 이름', - topicPlaceholder: '주제 이름을 작성하세요', - addClass: '클래스 추가', - instruction: '지시', - instructionTip: - '질문 분류기가 질문을 더 잘 분류할 수 있도록 추가 지시를 입력하세요.', - instructionPlaceholder: '지시를 작성하세요', - }, - parameterExtractor: { - inputVar: '입력 변수', - outputVars: { - isSuccess: '성공 여부. 성공 시 값은 1 이고, 실패 시 값은 0 입니다.', - errorReason: '오류 원인', - usage: '모델 사용 정보', - }, - extractParameters: '매개변수 추출', - importFromTool: '도구에서 가져오기', - addExtractParameter: '추출 매개변수 추가', - addExtractParameterContent: { - name: '이름', - namePlaceholder: '추출 매개변수 이름', - type: '유형', - typePlaceholder: '추출 매개변수 유형', - description: '설명', - descriptionPlaceholder: '추출 매개변수 설명', - required: '필수', - requiredContent: - '필수는 모델 추론을 위한 참고 용도로만 사용되며, 매개변수 출력의 필수 유효성 검사는 아닙니다.', - }, - extractParametersNotSet: '추출 매개변수가 설정되지 않음', - instruction: '지시', - instructionTip: - '매개변수 추출기가 매개변수를 추출하는 방법을 이해하는 데 도움이 되는 추가 지시를 입력하세요.', - advancedSetting: '고급 설정', - reasoningMode: '추론 모드', - reasoningModeTip: - '모델의 함수 호출 또는 프롬프트에 대한 지시 응답 능력을 기반으로 적절한 추론 모드를 선택할 수 있습니다.', - }, - iteration: { - deleteTitle: '반복 노드를 삭제하시겠습니까?', - deleteDesc: '반복 노드를 삭제하면 모든 하위 노드가 삭제됩니다', - input: '입력', - output: '출력 변수', - iteration_one: '{{count}} 반복', - iteration_other: '{{count}} 반복', - currentIteration: '현재 반복', - ErrorMethod: { - operationTerminated: '종료', - continueOnError: '오류 발생 시 계속', - removeAbnormalOutput: '비정상 출력 제거', - }, - comma: ',', - error_one: '{{개수}} 오류', - parallelMode: '병렬 모드', - errorResponseMethod: '오류 응답 방법', - parallelModeUpper: '병렬 모드', - MaxParallelismTitle: '최대 병렬 처리', - error_other: '{{개수}} 오류', - parallelModeEnableTitle: 'Parallel Mode Enabled(병렬 모드 사용)', - parallelPanelDesc: '병렬 모드에서 반복의 작업은 병렬 실행을 지원합니다.', - parallelModeEnableDesc: - '병렬 모드에서는 반복 내의 작업이 병렬 실행을 지원합니다. 오른쪽의 속성 패널에서 이를 구성할 수 있습니다.', - MaxParallelismDesc: - '최대 병렬 처리는 단일 반복에서 동시에 실행되는 작업 수를 제어하는 데 사용됩니다.', - answerNodeWarningDesc: - '병렬 모드 경고: 응답 노드, 대화 변수 할당 및 반복 내의 지속적인 읽기/쓰기 작업으로 인해 예외가 발생할 수 있습니다.', - flattenOutput: '출력 평탄화', - flattenOutputDesc: '활성화하면, 모든 반복 결과가 배열일 경우 이를 하나의 배열로 평탄화합니다. 비활성화하면, 결과는 중첩된 배열 구조를 유지합니다.', - }, - note: { - editor: { - medium: '보통', - showAuthor: '작성자 표시', - link: '링크', - unlink: '해제', - small: '작다', - large: '큰', - placeholder: '메모 쓰기...', - bold: '대담한', - enterUrl: 'URL 입력...', - openLink: '열다', - italic: '이탤릭체', - invalidUrl: '잘못된 URL', - strikethrough: '취소선', - bulletList: '글머리 기호 목록', - }, - addNote: '메모 추가', - }, - docExtractor: { - outputVars: { - text: '추출된 텍스트', - }, - learnMore: '더 알아보세요', - inputVar: '입력 변수', - supportFileTypes: '지원 파일 형식: {{types}}.', - }, - listFilter: { - outputVars: { - result: '필터 결과', - last_record: '마지막 레코드', - first_record: '첫 번째 레코드', - }, - asc: '증권 시세 표시기', - filterConditionKey: '필터 조건 키', - limit: '톱 N', - filterConditionComparisonValue: '필터 조건 값', - filterCondition: '필터 조건', - inputVar: '입력 변수', - desc: '설명', - orderBy: '정렬 기준', - selectVariableKeyPlaceholder: '하위 변수 키 선택', - filterConditionComparisonOperator: '필터 조건 비교 연산자', - extractsCondition: 'N 항목을 추출합니다.', - }, - agent: { - strategy: { - label: '에이전트 전략', - tooltip: - '다양한 에이전트 전략은 시스템이 다단계 도구 호출을 계획하고 실행하는 방법을 결정합니다', - configureTip: '에이전트 전략을 구성하세요.', - searchPlaceholder: '검색 에이전트 전략', - shortLabel: '전략', - selectTip: '에이전트 전략 선택', - configureTipDesc: - '에이전트 전략을 구성한 후 이 노드는 나머지 구성을 자동으로 로드합니다. 이 전략은 다단계 도구 추론의 메커니즘에 영향을 미칩니다.', - }, - pluginInstaller: { - install: '설치하다', - installing: '설치', - }, - modelNotInMarketplace: { - desc: '이 모델은 로컬 또는 GitHub 리포지토리에서 설치됩니다. 설치 후 사용하십시오.', - title: '모델이 설치되지 않음', - manageInPlugins: '플러그인에서 관리', - }, - modelNotSupport: { - title: '지원되지 않는 모델', - descForVersionSwitch: - '설치된 플러그인 버전은 이 모델을 제공하지 않습니다. 버전을 전환하려면 클릭합니다.', - desc: '설치된 플러그인 버전은 이 모델을 제공하지 않습니다.', - }, - modelSelectorTooltips: { - deprecated: '이 모델은 더 이상 사용되지 않습니다.', - }, - outputVars: { - files: { - url: '이미지 URL', - upload_file_id: '파일 ID 업로드', - transfer_method: '전송 방법. 값이 remote_url 또는 local_file 입니다.', - type: '지원 유형. 이제 이미지만 지원합니다.', - title: '에이전트 생성 파일', - }, - json: '에이전트 생성 JSON', - text: '상담원이 생성한 콘텐츠', - usage: '모델 사용 정보', - }, - checkList: { - strategyNotSelected: '전략이 선택되지 않음', - }, - installPlugin: { - changelog: '변경 로그', - install: '설치하다', - desc: '다음 플러그인을 설치하려고 합니다.', - cancel: '취소', - title: '플러그인 설치', - }, - strategyNotFoundDescAndSwitchVersion: - '설치된 플러그인 버전은 이 전략을 제공하지 않습니다. 버전을 전환하려면 클릭합니다.', - learnMore: '더 알아보세요', - toolNotAuthorizedTooltip: '{{도구}} 권한이 부여되지 않음', - strategyNotFoundDesc: - '설치된 플러그인 버전은 이 전략을 제공하지 않습니다.', - maxIterations: '최대 반복 횟수', - pluginNotFoundDesc: - '이 플러그인은 GitHub 에서 설치됩니다. 플러그인으로 이동하여 다시 설치하십시오.', - pluginNotInstalledDesc: - '이 플러그인은 GitHub 에서 설치됩니다. 플러그인으로 이동하여 다시 설치하십시오.', - strategyNotInstallTooltip: '{{strategy}}가 설치되지 않았습니다.', - tools: '도구', - unsupportedStrategy: '지원되지 않는 전략', - pluginNotInstalled: '이 플러그인은 설치되어 있지 않습니다.', - toolNotInstallTooltip: '{{tool}}이 설치되지 않았습니다.', - configureModel: '모델 구성', - strategyNotSet: '에이전트 전략이 설정되지 않음', - modelNotInstallTooltip: '이 모델은 설치되지 않았습니다.', - model: '모델', - notAuthorized: '권한이 부여되지 않음', - modelNotSelected: '모델이 선택되지 않음', - toolbox: '도구', - linkToPlugin: '플러그인에 대한 링크', - parameterSchema: '파라미터 스키마', - clickToViewParameterSchema: '매개변수 스키마 보려면 클릭하세요.', - }, - loop: { - ErrorMethod: { - removeAbnormalOutput: '비정상적인 출력을 제거하세요.', - operationTerminated: '종료됨', - continueOnError: '오류가 발생해도 계속 진행하세요.', - }, - currentLoop: '현재 루프', - loopMaxCount: '최대 루프 수', - input: '입력', - error_other: '{{count}} 오류', - comma: ',', - loop_one: '{{count}} 루프', - loop_other: '{{count}} 루프', - breakCondition: '루프 종료 조건', - output: '출력 변수', - error_one: '{{count}} 에러', - deleteTitle: '루프 노드를 삭제하시겠습니까?', - deleteDesc: '루프 노드를 삭제하면 모든 자식 노드가 제거됩니다.', - errorResponseMethod: '오류 응답 방법', - exitConditionTip: '루프 노드는 최소한 하나의 종료 조건이 필요합니다.', - finalLoopVariables: '최종 루프 변수', - loopVariables: '루프 변수', - setLoopVariables: '루프 범위 내에서 변수를 설정합니다.', - initialLoopVariables: '초기 루프 변수', - breakConditionTip: - '종료 조건과 대화 변수가 있는 루프 내에서만 변수를 참조할 수 있습니다.', - currentLoopCount: '현재 루프 카운트: {{count}}', - loopMaxCountError: - '유효한 최대 루프 수를 입력하십시오. 범위는 1 에서 {{maxCount}}입니다.', - totalLoopCount: '총 루프 횟수: {{count}}', - variableName: '변수 이름', - loopNode: '루프 노드', - inputMode: '입력 모드', - }, - dataSource: { - add: '데이터 원본 추가', - supportedFileFormatsPlaceholder: '파일 확장자, e.g. doc', - supportedFileFormats: '지원되는 파일 형식', - }, - knowledgeBase: { - chunkStructureTip: { - learnMore: '더 알아보세요', - title: '청크 구조를 선택해 주세요', - message: 'Dify 기술 자료는 일반, 부모-자식 및 Q&A의 세 가지 청크 구조를 지원합니다. 각 기술 자료는 하나의 구조만 가질 수 있습니다. 이전 노드의 출력은 선택한 청크 구조와 일치해야 합니다. 청크 구조의 선택은 사용 가능한 인덱스 메서드에 영향을 줍니다.', - }, - chunkStructure: '청크 구조', - chunkIsRequired: '청크 구조가 필요합니다.', - chooseChunkStructure: '청크 구조 선택', - aboutRetrieval: '검색 방법에 대해.', - changeChunkStructure: '청크 구조 변경', - indexMethodIsRequired: '인덱스 메서드가 필요합니다.', - retrievalSettingIsRequired: '검색 설정이 필요합니다.', - chunksInput: '청크', - chunksInputTip: '지식 기반 노드의 입력 변수는 Chunks입니다. 변수 유형은 선택된 청크 구조와 일치해야 하는 특정 JSON 스키마를 가진 객체입니다.', - chunksVariableIsRequired: 'Chunks 변수는 필수입니다', - embeddingModelIsRequired: '임베딩 모델이 필요합니다', - rerankingModelIsRequired: '재순위 모델이 필요합니다', - rerankingModelIsInvalid: '재정렬 모델이 유효하지 않습니다', - embeddingModelIsInvalid: '임베딩 모델이 유효하지 않습니다', - }, - triggerPlugin: { - authorized: '권한이 부여된', - notConfigured: '구성되지 않음', - notAuthorized: '권한 없음', - selectSubscription: '구독 선택', - availableSubscriptions: '이용 가능한 구독', - addSubscription: '새 구독 추가', - removeSubscription: '구독 해지', - subscriptionRemoved: '구독이 성공적으로 취소되었습니다', - error: '오류', - configuration: '구성', - remove: '제거', - or: '또는', - useOAuth: 'OAuth 사용', - useApiKey: 'API 키 사용', - authenticationFailed: '인증 실패', - authenticationSuccess: '인증 성공', - oauthConfigFailed: 'OAuth 구성 실패', - configureOAuthClient: 'OAuth 클라이언트 구성', - oauthClientDescription: '인증을 활성화하려면 OAuth 클라이언트 자격 증명을 구성하세요', - oauthClientSaved: 'OAuth 클라이언트 구성이 성공적으로 저장되었습니다', - configureApiKey: 'API 키 설정', - apiKeyDescription: '인증을 위해 API 키 자격 증명을 구성합니다', - apiKeyConfigured: 'API 키가 성공적으로 설정되었습니다', - configurationFailed: '구성 실패', - failedToStart: '인증 흐름을 시작하지 못했습니다', - credentialsVerified: '자격 증명이 성공적으로 확인되었습니다', - credentialVerificationFailed: '자격 증명 확인 실패', - verifyAndContinue: '확인 후 계속', - configureParameters: '매개변수 구성', - parametersDescription: '트리거 매개변수 및 속성 구성', - configurationComplete: '구성이 완료되었습니다', - configurationCompleteDescription: '트리거가 성공적으로 설정되었습니다', - configurationCompleteMessage: '트리거 설정이 완료되었으며 이제 사용할 준비가 되었습니다.', - parameters: '매개변수', - properties: '속성', - propertiesDescription: '이 트리거에 대한 추가 구성 속성', - noConfigurationRequired: '이 트리거에는 추가 구성 필요 없습니다.', - subscriptionName: '구독 이름', - subscriptionNameDescription: '이 트리거 구독에 대한 고유한 이름을 입력하세요', - subscriptionNamePlaceholder: '구독 이름 입력...', - subscriptionNameRequired: '구독 이름은 필수 항목입니다', - subscriptionRequired: '구독이 필요합니다', - }, - triggerSchedule: { - title: '일정', - nodeTitle: '일정 트리거', - notConfigured: '구성되지 않음', - useCronExpression: '크론 표현식 사용', - useVisualPicker: '시각적 선택기 사용', - frequency: { - label: '주파수', - hourly: '시간별', - daily: '일일', - weekly: '주간', - monthly: '월간', - }, - selectFrequency: '주파수 선택', - frequencyLabel: '주파수', - nextExecution: '다음 실행', - weekdays: '주중', - time: '시간', - cronExpression: '크론 표현식', - nextExecutionTime: '다음 실행 시간', - nextExecutionTimes: '다음 5회 실행 시간', - startTime: '시작 시간', - executeNow: '지금 실행', - selectDateTime: '날짜 및 시간 선택', - hours: '시간', - minutes: '분', - onMinute: '분 안에', - days: '날들', - lastDay: '마지막 날', - lastDayTooltip: '모든 달이 31일인 것은 아닙니다. 각 달의 마지막 날을 선택하려면 \'마지막 날\' 옵션을 사용하세요.', - mode: '모드', - timezone: '시간대', - visualConfig: '시각적 구성', - monthlyDay: '월간 일', - executionTime: '실행 시간', - invalidTimezone: '잘못된 시간대', - invalidCronExpression: '잘못된 크론 표현식', - noValidExecutionTime: '유효한 실행 시간을 계산할 수 없습니다', - executionTimeCalculationError: '실행 시간을 계산하지 못했습니다', - invalidFrequency: '잘못된 주파수', - invalidStartTime: '잘못된 시작 시간', - startTimeMustBeFuture: '시작 시간은 미래여야 합니다', - invalidTimeFormat: '잘못된 시간 형식(예상 형식: HH:MM AM/PM)', - invalidWeekday: '잘못된 요일: {{weekday}}', - invalidMonthlyDay: '월별 일자는 1-31 사이이거나 "마지막"이어야 합니다', - invalidOnMinute: '분은 0에서 59 사이여야 합니다', - invalidExecutionTime: '잘못된 실행 시간', - executionTimeMustBeFuture: '실행 시간은 미래여야 합니다', - }, - triggerWebhook: { - title: '웹훅 트리거', - nodeTitle: '🔗 웹훅 트리거', - configPlaceholder: '웹훅 트리거 구성은 여기에서 구현됩니다', - webhookUrl: '웹훅 URL', - webhookUrlPlaceholder: '웹훅 URL을 생성하려면 생성 버튼을 클릭하세요', - generate: '생성', - copy: '복사', - test: '테스트', - urlGenerated: '웹훅 URL이 성공적으로 생성되었습니다', - urlGenerationFailed: '웹훅 URL 생성에 실패했습니다', - urlCopied: 'URL이 클립보드에 복사되었습니다', - method: '방법', - contentType: '콘텐츠 유형', - queryParameters: '쿼리 매개변수', - headerParameters: '헤더 매개변수', - requestBodyParameters: '요청 본문 매개변수', - parameterName: '변수 이름', - varName: '변수 이름', - varType: '타입', - varNamePlaceholder: '변수 이름 입력...', - required: '필수', - addParameter: '추가', - addHeader: '추가', - noParameters: '매개변수가 설정되지 않았습니다', - noQueryParameters: '쿼리 매개변수가 설정되지 않았습니다', - noHeaders: '헤더가 구성되지 않았습니다', - noBodyParameters: '본문 매개변수가 구성되지 않았습니다', - debugUrlTitle: '테스트 실행 시에는 항상 이 URL을 사용하세요', - debugUrlCopy: '클릭하여 복사', - debugUrlCopied: '복사됨!', - debugUrlPrivateAddressWarning: '이 URL은 내부 주소인 것으로 보이며, 이로 인해 웹후크 요청이 실패할 수 있습니다. TRIGGER_URL을 공개 주소로 변경할 수 있습니다.', - errorHandling: '오류 처리', - errorStrategy: '오류 처리', - responseConfiguration: '응답', - asyncMode: '비동기 모드', - statusCode: '상태 코드', - responseBody: '응답 본문', - responseBodyPlaceholder: '여기에 응답 내용을 작성하세요', - headers: '헤더', - validation: { - webhookUrlRequired: '웹훅 URL이 필요합니다', - invalidParameterType: '매개변수 "{{name}}"에 대한 매개변수 유형 "{{type}}"이(가) 잘못되었습니다', - }, - }, - }, - tracing: { - stopBy: '{{user}}에 의해 중지됨', - }, - variableReference: { - noAvailableVars: '사용 가능한 변수 없음', - conversationVars: '대화 변수', - noVarsForOperation: '선택한 작업에 할당할 수 있는 변수가 없습니다.', - noAssignedVars: '사용 가능한 할당된 변수가 없습니다.', - assignedVarsDescription: - '할당된 변수는 다음과 같이 쓰기 가능한 변수여야 합니다.', - }, - versionHistory: { - filter: { - onlyYours: '오직 너의 것만', - all: '모든', - reset: '필터 재설정', - onlyShowNamedVersions: '이름이 붙은 버전만 표시', - empty: '일치하는 버전 기록이 없습니다.', - }, - editField: { - titleLengthLimit: '제목은 {{limit}}자를 초과할 수 없습니다.', - title: '제목', - releaseNotes: '릴리스 노트', - releaseNotesLengthLimit: - '릴리스 노트는 {{limit}}자를 초과할 수 없습니다.', - }, - action: { - updateFailure: '버전 업데이트에 실패했습니다.', - restoreSuccess: '복원된 버전', - deleteSuccess: '버전 삭제됨', - restoreFailure: '버전을 복원하지 못했습니다.', - deleteFailure: '버전을 삭제하지 못했습니다.', - updateSuccess: '버전이 업데이트되었습니다.', - copyIdSuccess: '클립보드에 복사된 ID', - }, - editVersionInfo: '버전 정보 편집', - latest: '최신', - currentDraft: '현재 초안', - releaseNotesPlaceholder: '변경된 내용을 설명하세요.', - defaultName: '제목 없는 버전', - nameThisVersion: '이름 바꾸기', - title: '버전 기록', - deletionTip: '삭제는 되돌릴 수 없으니, 확인해 주시기 바랍니다.', - restorationTip: '버전 복원 후 현재 초안이 덮어쓰여질 것입니다.', - copyId: 'ID 복사', - }, - debug: { - noData: { - runThisNode: '이 노드를 실행하세요', - description: '마지막 실행 결과가 여기 표시됩니다.', - }, - variableInspect: { - trigger: { - stop: '멈춰 뛰어', - clear: '맑은', - running: '캐싱 실행 상태', - cached: '캐시된 변수를 보기', - normal: '변수 검사', - }, - title: '변수 검사', - view: '로그 보기', - edited: '편집됨', - emptyLink: '더 알아보기', - chatNode: '대화', - clearAll: '모두 초기화', - systemNode: '시스템', - envNode: '환경', - clearNode: '캐시된 변수를 지우기', - resetConversationVar: '대화 변수를 기본 값으로 재설정합니다.', - reset: '마지막 실행 값으로 재설정', - emptyTip: - '캔버스에서 노드를 한 단계씩 실행한 후, 변수 검사에서 노드 변수의 현재 값을 볼 수 있습니다.', - export: '수출', - largeData: '대용량 데이터, 읽기 전용 미리 보기. 모두 보도록 내보내기.', - exportToolTip: '변수를 파일로 내보내기', - largeDataNoExport: '대용량 데이터 - 부분 미리 보기만', - listening: { - title: '트리거 이벤트 수신 대기 중...', - tip: '이제 테스트 요청을 HTTP {{nodeName}} 엔드포인트로 보내 이벤트 트리거를 시뮬레이션하거나 실시간 이벤트 디버깅용 콜백 URL로 사용할 수 있습니다. 모든 출력은 변수 검사기에서 직접 확인할 수 있습니다.', - tipPlugin: '이제 {{- pluginName}}에서 이벤트를 생성하고, 변수 검사기에서 이러한 이벤트의 출력을 확인할 수 있습니다.', - tipSchedule: '스케줄 트리거의 이벤트를 수신 대기 중입니다.\n다음 예약 실행: {{nextTriggerTime}}', - tipFallback: '들어오는 트리거 이벤트를 대기 중입니다. 출력 결과가 여기에 표시됩니다.', - defaultNodeName: '이 트리거', - defaultPluginName: '이 플러그인 트리거', - defaultScheduleTime: '구성되지 않음', - selectedTriggers: '선택된 트리거', - stopButton: '멈춰', - }, - }, - settingsTab: '설정', - lastRunTab: '마지막 실행', - relations: { - dependencies: '종속성', - dependentsDescription: '이 노드에 의존하는 노드', - noDependents: '부양가족 없음', - noDependencies: '종속성 없음', - dependents: '부양 가족', - dependenciesDescription: '이 노드가 의존하는 노드', - }, - relationsTab: '관계', - copyLastRun: '마지막 실행 복사', - noLastRunFound: '이전 실행이 없습니다.', - noMatchingInputsFound: '지난 실행에서 일치하는 입력을 찾을 수 없습니다.', - copyLastRunError: '마지막 실행 입력을 복사하는 데 실패했습니다.', - lastOutput: '마지막 출력', - lastRunInputsCopied: '지난 실행에서 {{count}}개의 입력이 복사되었습니다', - }, - sidebar: { - exportWarning: '현재 저장된 버전 내보내기', - exportWarningDesc: '이 작업은 현재 저장된 워크플로우 버전을 내보냅니다. 편집기에서 저장되지 않은 변경 사항이 있는 경우, 먼저 워크플로우 캔버스의 내보내기 옵션을 사용하여 저장해 주세요.', - }, - publishLimit: { - startNodeTitlePrefix: '업그레이드하기', - startNodeTitleSuffix: '워크플로마다 무제한 트리거 잠금 해제', - startNodeDesc: '이 요금제에서는 워크플로당 2개의 트리거 제한에 도달했습니다. 이 워크플로를 게시하려면 업그레이드하세요.', - }, - error: { - startNodeRequired: '{{operation}} 전에 먼저 시작 노드를 추가해 주세요', - operations: { - connectingNodes: '노드 연결', - addingNodes: '노드 추가', - modifyingWorkflow: '워크플로 수정', - updatingWorkflow: '워크플로 업데이트', - }, - }, - customWebhook: '맞춤 웹훅', - difyTeam: '디파이 팀', - triggerStatus: { - enabled: '트리거', - disabled: '트리거 • 비활성화', - }, - entryNodeStatus: { - enabled: '시작', - disabled: '시작 • 비활성', - }, - onboarding: { - title: '시작할 노드를 선택하세요', - description: '시작 노드마다 기능이 다릅니다. 걱정하지 마세요, 나중에 언제든지 변경할 수 있습니다.', - userInputFull: '사용자 입력 (원래 시작 노드)', - userInputDescription: '사용자 입력 변수를 설정할 수 있는 시작 노드로, 웹 앱, 서비스 API, MCP 서버, 워크플로우를 도구 기능으로 제공합니다.', - trigger: '트리거', - triggerDescription: '트리거는 예약된 작업, 사용자 지정 웹훅 또는 다른 앱과의 통합과 같은 워크플로우의 시작 노드로 사용할 수 있습니다.', - back: '뒤로', - learnMore: '자세히 알아보기', - aboutStartNode: '시작 노드에 대해.', - escTip: { - press: '누르다', - key: '이스케이프', - toDismiss: '해고하다', - }, - }, -} - -export default translation diff --git a/web/i18n/pl-PL/app-annotation.json b/web/i18n/pl-PL/app-annotation.json new file mode 100644 index 0000000000..e454271e3c --- /dev/null +++ b/web/i18n/pl-PL/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "Adnotacje", + "name": "Odpowiedź adnotacji", + "editBy": "Odpowiedź edytowana przez {{author}}", + "noData": { + "title": "Brak adnotacji", + "description": "Możesz edytować adnotacje podczas debugowania aplikacji lub importować adnotacje tutaj w celu uzyskania wysokiej jakości odpowiedzi." + }, + "table": { + "header": { + "question": "pytanie", + "answer": "odpowiedź", + "createdAt": "utworzono", + "hits": "trafienia", + "actions": "akcje", + "addAnnotation": "Dodaj adnotację", + "bulkImport": "Masowy import", + "bulkExport": "Masowy eksport", + "clearAll": "Wyczyść wszystkie adnotacje", + "clearAllConfirm": "Usunąć wszystkie adnotacje?" + } + }, + "editModal": { + "title": "Edytuj odpowiedź adnotacji", + "queryName": "Zapytanie użytkownika", + "answerName": "Bot opowiadający historie", + "yourAnswer": "Twoja odpowiedź", + "answerPlaceholder": "Wpisz tutaj swoją odpowiedź", + "yourQuery": "Twoje zapytanie", + "queryPlaceholder": "Wpisz tutaj swoje zapytanie", + "removeThisCache": "Usuń tę adnotację", + "createdAt": "Utworzono" + }, + "addModal": { + "title": "Dodaj odpowiedź adnotacji", + "queryName": "Pytanie", + "answerName": "Odpowiedź", + "answerPlaceholder": "Wpisz tutaj odpowiedź", + "queryPlaceholder": "Wpisz tutaj zapytanie", + "createNext": "Dodaj kolejną odpowiedź adnotacji" + }, + "batchModal": { + "title": "Masowy import", + "csvUploadTitle": "Przeciągnij i upuść tutaj swój plik CSV, lub ", + "browse": "przeglądaj", + "tip": "Plik CSV musi spełniać następującą strukturę:", + "question": "pytanie", + "answer": "odpowiedź", + "contentTitle": "zawartość fragmentu", + "content": "zawartość", + "template": "Pobierz szablon tutaj", + "cancel": "Anuluj", + "run": "Uruchom batch", + "runError": "Uruchomienie batcha nie powiodło się", + "processing": "Przetwarzanie batcha", + "completed": "Import zakończony", + "error": "Błąd importu", + "ok": "OK" + }, + "errorMessage": { + "answerRequired": "Odpowiedź jest wymagana", + "queryRequired": "Pytanie jest wymagane" + }, + "viewModal": { + "annotatedResponse": "Odpowiedź adnotacji", + "hitHistory": "Historia trafień", + "hit": "Trafienie", + "hits": "Trafienia", + "noHitHistory": "Brak historii trafień" + }, + "hitHistoryTable": { + "query": "Zapytanie", + "match": "Dopasowanie", + "response": "Odpowiedź", + "source": "Źródło", + "score": "Wynik", + "time": "Czas" + }, + "initSetup": { + "title": "Początkowa konfiguracja odpowiedzi adnotacji", + "configTitle": "Konfiguracja odpowiedzi adnotacji", + "confirmBtn": "Zapisz i włącz", + "configConfirmBtn": "Zapisz" + }, + "embeddingModelSwitchTip": "Model wektoryzacji tekstu adnotacji, przełączanie modeli spowoduje ponowne osadzenie, co wiąże się z dodatkowymi kosztami.", + "list": { + "delete": { + "title": "Czy na pewno chcesz usunąć?" + } + }, + "batchAction": { + "selected": "Wybrany", + "delete": "Usuń", + "cancel": "Anuluj" + } +} diff --git a/web/i18n/pl-PL/app-annotation.ts b/web/i18n/pl-PL/app-annotation.ts deleted file mode 100644 index c0f96a146e..0000000000 --- a/web/i18n/pl-PL/app-annotation.ts +++ /dev/null @@ -1,100 +0,0 @@ -const translation = { - title: 'Adnotacje', - name: 'Odpowiedź adnotacji', - editBy: 'Odpowiedź edytowana przez {{author}}', - noData: { - title: 'Brak adnotacji', - description: - 'Możesz edytować adnotacje podczas debugowania aplikacji lub importować adnotacje tutaj w celu uzyskania wysokiej jakości odpowiedzi.', - }, - table: { - header: { - question: 'pytanie', - answer: 'odpowiedź', - createdAt: 'utworzono', - hits: 'trafienia', - actions: 'akcje', - addAnnotation: 'Dodaj adnotację', - bulkImport: 'Masowy import', - bulkExport: 'Masowy eksport', - clearAll: 'Wyczyść wszystkie adnotacje', - clearAllConfirm: 'Usunąć wszystkie adnotacje?', - }, - }, - editModal: { - title: 'Edytuj odpowiedź adnotacji', - queryName: 'Zapytanie użytkownika', - answerName: 'Bot opowiadający historie', - yourAnswer: 'Twoja odpowiedź', - answerPlaceholder: 'Wpisz tutaj swoją odpowiedź', - yourQuery: 'Twoje zapytanie', - queryPlaceholder: 'Wpisz tutaj swoje zapytanie', - removeThisCache: 'Usuń tę adnotację', - createdAt: 'Utworzono', - }, - addModal: { - title: 'Dodaj odpowiedź adnotacji', - queryName: 'Pytanie', - answerName: 'Odpowiedź', - answerPlaceholder: 'Wpisz tutaj odpowiedź', - queryPlaceholder: 'Wpisz tutaj zapytanie', - createNext: 'Dodaj kolejną odpowiedź adnotacji', - }, - batchModal: { - title: 'Masowy import', - csvUploadTitle: 'Przeciągnij i upuść tutaj swój plik CSV, lub ', - browse: 'przeglądaj', - tip: 'Plik CSV musi spełniać następującą strukturę:', - question: 'pytanie', - answer: 'odpowiedź', - contentTitle: 'zawartość fragmentu', - content: 'zawartość', - template: 'Pobierz szablon tutaj', - cancel: 'Anuluj', - run: 'Uruchom batch', - runError: 'Uruchomienie batcha nie powiodło się', - processing: 'Przetwarzanie batcha', - completed: 'Import zakończony', - error: 'Błąd importu', - ok: 'OK', - }, - errorMessage: { - answerRequired: 'Odpowiedź jest wymagana', - queryRequired: 'Pytanie jest wymagane', - }, - viewModal: { - annotatedResponse: 'Odpowiedź adnotacji', - hitHistory: 'Historia trafień', - hit: 'Trafienie', - hits: 'Trafienia', - noHitHistory: 'Brak historii trafień', - }, - hitHistoryTable: { - query: 'Zapytanie', - match: 'Dopasowanie', - response: 'Odpowiedź', - source: 'Źródło', - score: 'Wynik', - time: 'Czas', - }, - initSetup: { - title: 'Początkowa konfiguracja odpowiedzi adnotacji', - configTitle: 'Konfiguracja odpowiedzi adnotacji', - confirmBtn: 'Zapisz i włącz', - configConfirmBtn: 'Zapisz', - }, - embeddingModelSwitchTip: - 'Model wektoryzacji tekstu adnotacji, przełączanie modeli spowoduje ponowne osadzenie, co wiąże się z dodatkowymi kosztami.', - list: { - delete: { - title: 'Czy na pewno chcesz usunąć?', - }, - }, - batchAction: { - selected: 'Wybrany', - delete: 'Usuń', - cancel: 'Anuluj', - }, -} - -export default translation diff --git a/web/i18n/pl-PL/app-api.json b/web/i18n/pl-PL/app-api.json new file mode 100644 index 0000000000..c40ff7cbf0 --- /dev/null +++ b/web/i18n/pl-PL/app-api.json @@ -0,0 +1,83 @@ +{ + "apiServer": "Serwer API", + "apiKey": "Klucz API", + "status": "Status", + "disabled": "Wyłączony", + "ok": "W usłudze", + "copy": "Kopiuj", + "copied": "Skopiowane", + "play": "Graj", + "pause": "Pauza", + "playing": "Gra", + "loading": "Ładowanie", + "merMaid": { + "rerender": "Przerób Renderowanie" + }, + "never": "Nigdy", + "apiKeyModal": { + "apiSecretKey": "Tajny klucz API", + "apiSecretKeyTips": "Aby zapobiec nadużyciom API, chron swój klucz API. Unikaj używania go jako zwykłego tekstu w kodzie front-end. :)", + "createNewSecretKey": "Utwórz nowy tajny klucz", + "secretKey": "Tajny Klucz", + "created": "UTWORZONY", + "lastUsed": "OSTATNIO UŻYWANY", + "generateTips": "Przechowuj ten klucz w bezpiecznym i dostępnym miejscu." + }, + "actionMsg": { + "deleteConfirmTitle": "Usunąć ten tajny klucz?", + "deleteConfirmTips": "Tej akcji nie można cofnąć.", + "ok": "OK" + }, + "completionMode": { + "title": "Zakończenie App API", + "info": "Do generowania tekstu wysokiej jakości, takiego jak artykuły, podsumowania i tłumaczenia, użyj API completion-messages z danymi wejściowymi użytkownika. Generowanie tekstu zależy od parametrów modelu i szablonów promptów ustawionych w Dify Prompt Engineering.", + "createCompletionApi": "Utwórz Wiadomość Zakończenia", + "createCompletionApiTip": "Utwórz Wiadomość Zakończenia, aby obsługiwać tryb pytanie-odpowiedź.", + "inputsTips": "(Opcjonalnie) Podaj pola wejściowe użytkownika jako pary klucz-wartość, odpowiadające zmiennym w Prompt Eng. Klucz to nazwa zmiennej, Wartość to wartość parametru. Jeśli typ pola to Wybierz, przesłana Wartość musi być jednym z predefiniowanych wyborów.", + "queryTips": "Treść tekstu wprowadzanego przez użytkownika.", + "blocking": "Typ blokujący, czekanie na zakończenie wykonania i zwrócenie wyników. (Żądania mogą być przerywane, jeśli proces jest długi)", + "streaming": "zwraca strumieniowo. Implementacja strumieniowego zwrotu na podstawie SSE (Server-Sent Events).", + "messageFeedbackApi": "Informacje zwrotne o wiadomości (lubię)", + "messageFeedbackApiTip": "Oceniaj otrzymane wiadomości w imieniu użytkowników końcowych na podstawie polubień lub niepolubień. Te dane są widoczne na stronie Logi i adnotacje i są używane do przyszłego dostrojenia modelu.", + "messageIDTip": "ID wiadomości", + "ratingTip": "lubię lub nie lubię, null to cofnięcie", + "parametersApi": "Uzyskaj informacje o parametrach aplikacji", + "parametersApiTip": "Pobierz skonfigurowane parametry wejściowe, w tym nazwy zmiennych, nazwy pól, typy i domyślne wartości. Zwykle używane do wyświetlania tych pól w formularzu lub wypełniania domyślnych wartości po załadowaniu klienta." + }, + "chatMode": { + "title": "Chat App API", + "info": "Do wszechstronnych aplikacji konwersacyjnych w formacie Q&A, wywołaj API chat-messages, aby rozpocząć dialog. Utrzymuj trwające rozmowy, przekazując zwrócone conversation_id. Parametry odpowiedzi i szablony zależą od ustawień Dify Prompt Eng.", + "createChatApi": "Utwórz wiadomość czatu", + "createChatApiTip": "Utwórz nową wiadomość konwersacji lub kontynuuj istniejący dialog.", + "inputsTips": "(Opcjonalnie) Podaj pola wejściowe użytkownika jako pary klucz-wartość, odpowiadające zmiennym w Prompt Eng. Klucz to nazwa zmiennej, Wartość to wartość parametru. Jeśli typ pola to Wybierz, przesłana Wartość musi być jednym z predefiniowanych wyborów.", + "queryTips": "Treść pytania/wprowadzanej przez użytkownika", + "blocking": "Typ blokujący, czekanie na zakończenie wykonania i zwrócenie wyników. (Żądania mogą być przerywane, jeśli proces jest długi)", + "streaming": "zwraca strumieniowo. Implementacja strumieniowego zwrotu na podstawie SSE (Server-Sent Events).", + "conversationIdTip": "(Opcjonalnie) ID rozmowy: pozostaw puste dla pierwszej rozmowy; przekaż conversation_id z kontekstu, aby kontynuować dialog.", + "messageFeedbackApi": "Informacje zwrotne od użytkownika terminala, lubię", + "messageFeedbackApiTip": "Oceniaj otrzymane wiadomości w imieniu użytkowników końcowych na podstawie polubień lub niepolubień. Te dane są widoczne na stronie Logi i adnotacje i są używane do przyszłego dostrojenia modelu.", + "messageIDTip": "ID wiadomości", + "ratingTip": "lubię lub nie lubię, null to cofnięcie", + "chatMsgHistoryApi": "Pobierz historię wiadomości czatu", + "chatMsgHistoryApiTip": "Pierwsza strona zwraca najnowsze `limit` wiadomości, które są w odwrotnej kolejności.", + "chatMsgHistoryConversationIdTip": "ID rozmowy", + "chatMsgHistoryFirstId": "ID pierwszego rekordu czatu na bieżącej stronie. Domyślnie brak.", + "chatMsgHistoryLimit": "Ile czatów jest zwracanych w jednym żądaniu", + "conversationsListApi": "Pobierz listę rozmów", + "conversationsListApiTip": "Pobiera listę sesji bieżącego użytkownika. Domyślnie zwraca ostatnie 20 sesji.", + "conversationsListFirstIdTip": "ID ostatniego rekordu na bieżącej stronie, domyślnie brak.", + "conversationsListLimitTip": "Ile czatów jest zwracanych w jednym żądaniu", + "conversationRenamingApi": "Zmiana nazwy rozmowy", + "conversationRenamingApiTip": "Zmień nazwy rozmów; nazwa jest wyświetlana w interfejsach klienta wielosesyjnego.", + "conversationRenamingNameTip": "Nowa nazwa", + "parametersApi": "Uzyskaj informacje o parametrach aplikacji", + "parametersApiTip": "Pobierz skonfigurowane parametry wejściowe, w tym nazwy zmiennych, nazwy pól, typy i domyślne wartości. Zwykle używane do wyświetlania tych pól w formularzu lub wypełniania domyślnych wartości po załadowaniu klienta." + }, + "develop": { + "requestBody": "Ciało żądania", + "pathParams": "Parametry ścieżki", + "query": "Zapytanie", + "toc": "Treść" + }, + "regenerate": "Ponownie wygenerować" +} diff --git a/web/i18n/pl-PL/app-api.ts b/web/i18n/pl-PL/app-api.ts deleted file mode 100644 index 73ff2675b6..0000000000 --- a/web/i18n/pl-PL/app-api.ts +++ /dev/null @@ -1,104 +0,0 @@ -const translation = { - apiServer: 'Serwer API', - apiKey: 'Klucz API', - status: 'Status', - disabled: 'Wyłączony', - ok: 'W usłudze', - copy: 'Kopiuj', - copied: 'Skopiowane', - play: 'Graj', - pause: 'Pauza', - playing: 'Gra', - loading: 'Ładowanie', - merMaid: { - rerender: 'Przerób Renderowanie', - }, - never: 'Nigdy', - apiKeyModal: { - apiSecretKey: 'Tajny klucz API', - apiSecretKeyTips: - 'Aby zapobiec nadużyciom API, chron swój klucz API. Unikaj używania go jako zwykłego tekstu w kodzie front-end. :)', - createNewSecretKey: 'Utwórz nowy tajny klucz', - secretKey: 'Tajny Klucz', - created: 'UTWORZONY', - lastUsed: 'OSTATNIO UŻYWANY', - generateTips: 'Przechowuj ten klucz w bezpiecznym i dostępnym miejscu.', - }, - actionMsg: { - deleteConfirmTitle: 'Usunąć ten tajny klucz?', - deleteConfirmTips: 'Tej akcji nie można cofnąć.', - ok: 'OK', - }, - completionMode: { - title: 'Zakończenie App API', - info: 'Do generowania tekstu wysokiej jakości, takiego jak artykuły, podsumowania i tłumaczenia, użyj API completion-messages z danymi wejściowymi użytkownika. Generowanie tekstu zależy od parametrów modelu i szablonów promptów ustawionych w Dify Prompt Engineering.', - createCompletionApi: 'Utwórz Wiadomość Zakończenia', - createCompletionApiTip: - 'Utwórz Wiadomość Zakończenia, aby obsługiwać tryb pytanie-odpowiedź.', - inputsTips: - '(Opcjonalnie) Podaj pola wejściowe użytkownika jako pary klucz-wartość, odpowiadające zmiennym w Prompt Eng. Klucz to nazwa zmiennej, Wartość to wartość parametru. Jeśli typ pola to Wybierz, przesłana Wartość musi być jednym z predefiniowanych wyborów.', - queryTips: 'Treść tekstu wprowadzanego przez użytkownika.', - blocking: - 'Typ blokujący, czekanie na zakończenie wykonania i zwrócenie wyników. (Żądania mogą być przerywane, jeśli proces jest długi)', - streaming: - 'zwraca strumieniowo. Implementacja strumieniowego zwrotu na podstawie SSE (Server-Sent Events).', - messageFeedbackApi: 'Informacje zwrotne o wiadomości (lubię)', - messageFeedbackApiTip: - 'Oceniaj otrzymane wiadomości w imieniu użytkowników końcowych na podstawie polubień lub niepolubień. Te dane są widoczne na stronie Logi i adnotacje i są używane do przyszłego dostrojenia modelu.', - messageIDTip: 'ID wiadomości', - ratingTip: 'lubię lub nie lubię, null to cofnięcie', - parametersApi: 'Uzyskaj informacje o parametrach aplikacji', - parametersApiTip: - 'Pobierz skonfigurowane parametry wejściowe, w tym nazwy zmiennych, nazwy pól, typy i domyślne wartości. Zwykle używane do wyświetlania tych pól w formularzu lub wypełniania domyślnych wartości po załadowaniu klienta.', - }, - chatMode: { - title: 'Chat App API', - info: 'Do wszechstronnych aplikacji konwersacyjnych w formacie Q&A, wywołaj API chat-messages, aby rozpocząć dialog. Utrzymuj trwające rozmowy, przekazując zwrócone conversation_id. Parametry odpowiedzi i szablony zależą od ustawień Dify Prompt Eng.', - createChatApi: 'Utwórz wiadomość czatu', - createChatApiTip: - 'Utwórz nową wiadomość konwersacji lub kontynuuj istniejący dialog.', - inputsTips: - '(Opcjonalnie) Podaj pola wejściowe użytkownika jako pary klucz-wartość, odpowiadające zmiennym w Prompt Eng. Klucz to nazwa zmiennej, Wartość to wartość parametru. Jeśli typ pola to Wybierz, przesłana Wartość musi być jednym z predefiniowanych wyborów.', - queryTips: 'Treść pytania/wprowadzanej przez użytkownika', - blocking: - 'Typ blokujący, czekanie na zakończenie wykonania i zwrócenie wyników. (Żądania mogą być przerywane, jeśli proces jest długi)', - streaming: - 'zwraca strumieniowo. Implementacja strumieniowego zwrotu na podstawie SSE (Server-Sent Events).', - conversationIdTip: - '(Opcjonalnie) ID rozmowy: pozostaw puste dla pierwszej rozmowy; przekaż conversation_id z kontekstu, aby kontynuować dialog.', - messageFeedbackApi: 'Informacje zwrotne od użytkownika terminala, lubię', - messageFeedbackApiTip: - 'Oceniaj otrzymane wiadomości w imieniu użytkowników końcowych na podstawie polubień lub niepolubień. Te dane są widoczne na stronie Logi i adnotacje i są używane do przyszłego dostrojenia modelu.', - messageIDTip: 'ID wiadomości', - ratingTip: 'lubię lub nie lubię, null to cofnięcie', - chatMsgHistoryApi: 'Pobierz historię wiadomości czatu', - chatMsgHistoryApiTip: - 'Pierwsza strona zwraca najnowsze `limit` wiadomości, które są w odwrotnej kolejności.', - chatMsgHistoryConversationIdTip: 'ID rozmowy', - chatMsgHistoryFirstId: - 'ID pierwszego rekordu czatu na bieżącej stronie. Domyślnie brak.', - chatMsgHistoryLimit: 'Ile czatów jest zwracanych w jednym żądaniu', - conversationsListApi: 'Pobierz listę rozmów', - conversationsListApiTip: - 'Pobiera listę sesji bieżącego użytkownika. Domyślnie zwraca ostatnie 20 sesji.', - conversationsListFirstIdTip: - 'ID ostatniego rekordu na bieżącej stronie, domyślnie brak.', - conversationsListLimitTip: 'Ile czatów jest zwracanych w jednym żądaniu', - conversationRenamingApi: 'Zmiana nazwy rozmowy', - conversationRenamingApiTip: - 'Zmień nazwy rozmów; nazwa jest wyświetlana w interfejsach klienta wielosesyjnego.', - conversationRenamingNameTip: 'Nowa nazwa', - parametersApi: 'Uzyskaj informacje o parametrach aplikacji', - parametersApiTip: - 'Pobierz skonfigurowane parametry wejściowe, w tym nazwy zmiennych, nazwy pól, typy i domyślne wartości. Zwykle używane do wyświetlania tych pól w formularzu lub wypełniania domyślnych wartości po załadowaniu klienta.', - }, - develop: { - requestBody: 'Ciało żądania', - pathParams: 'Parametry ścieżki', - query: 'Zapytanie', - toc: 'Treść', - }, - regenerate: 'Ponownie wygenerować', -} - -export default translation diff --git a/web/i18n/pl-PL/app-debug.json b/web/i18n/pl-PL/app-debug.json new file mode 100644 index 0000000000..fc8cf1944d --- /dev/null +++ b/web/i18n/pl-PL/app-debug.json @@ -0,0 +1,563 @@ +{ + "pageTitle": { + "line1": "MONIT", + "line2": "Inżynieria" + }, + "orchestrate": "Orkiestracja", + "promptMode": { + "simple": "Przełącz na tryb Ekspert, aby edytować cały MONIT", + "advanced": "Tryb Ekspert", + "switchBack": "Przełącz z powrotem", + "advancedWarning": { + "title": "Przełączyłeś się na Tryb Ekspert, i po modyfikacji MONITU, NIE można powrócić do trybu podstawowego.", + "description": "W Trybie Ekspert, możesz edytować cały MONIT.", + "learnMore": "Dowiedz się więcej", + "ok": "OK" + }, + "operation": { + "addMessage": "Dodaj Wiadomość" + }, + "contextMissing": "Brak komponentu kontekstowego, skuteczność monitu może być niewystarczająca." + }, + "operation": { + "applyConfig": "Publikuj", + "resetConfig": "Resetuj", + "debugConfig": "Debuguj", + "addFeature": "Dodaj funkcję", + "automatic": "Automatyczny", + "stopResponding": "Przestaje odpowiadać", + "agree": "lubię", + "disagree": "nie lubię", + "cancelAgree": "Anuluj polubienie", + "cancelDisagree": "Anuluj niepolubienie", + "userAction": "Akcja użytkownika " + }, + "notSetAPIKey": { + "title": "Klucz dostawcy LLM nie został ustawiony", + "trailFinished": "Ścieżka zakończona", + "description": "Klucz dostawcy LLM nie został ustawiony, musi zostać ustawiony przed debugowaniem.", + "settingBtn": "Przejdź do ustawień" + }, + "trailUseGPT4Info": { + "title": "Obecnie nie obsługuje GPT-4", + "description": "Użyj GPT-4, proszę ustawić klucz API." + }, + "feature": { + "groupChat": { + "title": "Rozmowy grupowe", + "description": "Dodanie ustawień przedkonwersacyjnych dla aplikacji może poprawić doświadczenia użytkownika." + }, + "groupExperience": { + "title": "Poprawa doświadczenia" + }, + "conversationOpener": { + "title": "Otwieracze do rozmów", + "description": "W aplikacji czatowej pierwsze zdanie, które AI aktywnie wypowiada do użytkownika, zazwyczaj służy jako powitanie." + }, + "suggestedQuestionsAfterAnswer": { + "title": "Nawiązanie", + "description": "Ustawienie kolejnych pytań może poprawić czat.", + "resDes": "3 sugestie dla kolejnego pytania użytkownika.", + "tryToAsk": "Spróbuj zapytać" + }, + "moreLikeThis": { + "title": "Więcej takich jak ten", + "description": "Generuj wiele tekstów na raz, a następnie edytuj i kontynuuj generowanie", + "generateNumTip": "Liczba generowanych razów", + "tip": "Korzystanie z tej funkcji spowoduje dodatkowe zużycie tokenów" + }, + "speechToText": { + "title": "Mowa na tekst", + "description": "Po włączeniu można używać wprowadzania głosowego.", + "resDes": "Wprowadzanie głosowe jest włączone" + }, + "textToSpeech": { + "title": "Tekst na mowę", + "description": "Po włączeniu tekst można przekształcić w mowę.", + "resDes": "Tekst na audio jest włączony" + }, + "citation": { + "title": "Cytaty i odniesienia", + "description": "Po włączeniu, pokaż dokument źródłowy i przypisaną sekcję wygenerowanej treści.", + "resDes": "Cytaty i odniesienia są włączone" + }, + "annotation": { + "title": "Odpowiedź z adnotacją", + "description": "Możesz ręcznie dodać odpowiedź wysokiej jakości do pamięci podręcznej dla priorytetowego dopasowania do podobnych pytań użytkownika.", + "resDes": "Odpowiedź z adnotacją jest włączona", + "scoreThreshold": { + "title": "Próg wyników", + "description": "Służy do ustawienia progu podobieństwa dla odpowiedzi z adnotacją.", + "easyMatch": "Łatwe dopasowanie", + "accurateMatch": "Dokładne dopasowanie" + }, + "matchVariable": { + "title": "Zmienna dopasowania", + "choosePlaceholder": "Wybierz zmienną do dopasowania" + }, + "cacheManagement": "Adnotacje", + "cached": "Zanotowano", + "remove": "Usuń", + "removeConfirm": "Usunąć tę adnotację?", + "add": "Dodaj adnotację", + "edit": "Edytuj adnotację" + }, + "dataSet": { + "title": "Kontekst", + "noData": "Możesz importować wiedzę jako kontekst", + "selectTitle": "Wybierz odniesienie do wiedzy", + "selected": "Wiedza wybrana", + "noDataSet": "Nie znaleziono wiedzy", + "toCreate": "Przejdź do tworzenia", + "notSupportSelectMulti": "Obecnie obsługiwana jest tylko jedna wiedza", + "queryVariable": { + "title": "Zmienna zapytania", + "tip": "Ta zmienna będzie używana jako dane wejściowe zapytania do odzyskiwania kontekstu, uzyskując informacje kontekstowe związane z wprowadzonymi danymi.", + "choosePlaceholder": "Wybierz zmienną zapytania", + "noVar": "Brak zmiennych", + "noVarTip": "proszę stworzyć zmienną w sekcji Zmienne", + "unableToQueryDataSet": "Nie można odzyskać wiedzy", + "unableToQueryDataSetTip": "Nie udało się pomyślnie odzyskać wiedzy, proszę wybrać zmienną zapytania kontekstowego w sekcji kontekstowej.", + "ok": "OK", + "contextVarNotEmpty": "zmienna zapytania kontekstowego nie może być pusta", + "deleteContextVarTitle": "Usunąć zmienną „{{varName}}”?", + "deleteContextVarTip": "Ta zmienna została ustawiona jako zmienna zapytania kontekstowego, a jej usunięcie wpłynie na normalne korzystanie z wiedzy. Jeśli nadal potrzebujesz jej usunąć, wybierz ją ponownie w sekcji kontekstowej." + } + }, + "tools": { + "title": "Narzędzia", + "tips": "Narzędzia zapewniają standardową metodę wywołania API, przyjmując dane wejściowe użytkownika lub zmienne jako parametry żądania do zapytania o dane zewnętrzne jako kontekst.", + "toolsInUse": "{{count}} narzędzi w użyciu", + "modal": { + "title": "Narzędzie", + "toolType": { + "title": "Typ narzędzia", + "placeholder": "Wybierz typ narzędzia" + }, + "name": { + "title": "Nazwa", + "placeholder": "Wprowadź nazwę" + }, + "variableName": { + "title": "Nazwa zmiennej", + "placeholder": "Wprowadź nazwę zmiennej" + } + } + }, + "conversationHistory": { + "title": "Historia konwersacji", + "description": "Ustaw prefixy dla ról w rozmowie", + "tip": "Historia konwersacji nie jest włączona, proszę dodać w monicie powyżej.", + "learnMore": "Dowiedz się więcej", + "editModal": { + "title": "Edycja nazw ról konwersacyjnych", + "userPrefix": "Prefix użytkownika", + "assistantPrefix": "Prefix asystenta" + } + }, + "toolbox": { + "title": "SKRZYNKA NARZĘDZIOWA" + }, + "moderation": { + "title": "Moderacja treści", + "description": "Zabezpiecz wyjście modelu, używając API moderacji lub utrzymując listę wrażliwych słów.", + "allEnabled": "Treść WEJŚCIOWA/WYJŚCIOWA Włączona", + "inputEnabled": "Treść WEJŚCIOWA Włączona", + "outputEnabled": "Treść WYJŚCIOWA Włączona", + "modal": { + "title": "Ustawienia moderacji treści", + "provider": { + "title": "Dostawca", + "openai": "Moderacja OpenAI", + "openaiTip": { + "prefix": "Moderacja OpenAI wymaga skonfigurowanego klucza API OpenAI w ", + "suffix": "." + }, + "keywords": "Słowa kluczowe" + }, + "keywords": { + "tip": "Po jednym w wierszu, oddzielone znakiem nowej linii. Maksymalnie 100 znaków na wiersz.", + "placeholder": "Po jednym w wierszu, oddzielone znakiem nowej linii", + "line": "Linia" + }, + "content": { + "input": "Moderuj treść WEJŚCIOWĄ", + "output": "Moderuj treść WYJŚCIOWĄ", + "preset": "Ustawione odpowiedzi", + "placeholder": "Tutaj wprowadź ustawione odpowiedzi", + "condition": "Treść WEJŚCIA i WYJŚCIA musi być włączona przynajmniej jedna", + "fromApi": "Ustawione odpowiedzi zwracane przez API", + "errorMessage": "Ustawione odpowiedzi nie mogą być puste", + "supportMarkdown": "Obsługuje Markdown" + }, + "openaiNotConfig": { + "before": "Moderacja OpenAI wymaga skonfigurowanego klucza API OpenAI w", + "after": "" + } + }, + "contentEnableLabel": "Włączono moderowanie treści" + }, + "fileUpload": { + "title": "Przesyłanie plików", + "description": "Pole wprowadzania czatu umożliwia przesyłanie obrazów, dokumentów i innych plików.", + "supportedTypes": "Obsługiwane typy plików", + "numberLimit": "Maksymalna liczba przesłanych plików", + "modalTitle": "Ustawienia przesyłania plików" + }, + "imageUpload": { + "title": "Przesyłanie obrazów", + "description": "Umożliwia przesyłanie obrazów.", + "supportedTypes": "Obsługiwane typy plików", + "numberLimit": "Maksymalna liczba przesłanych plików", + "modalTitle": "Ustawienia przesyłania obrazów" + }, + "bar": { + "empty": "Włącz funkcje aby poprawić doświadczenie użytkownika aplikacji webowej", + "enableText": "Funkcje włączone", + "manage": "Zarządzaj" + }, + "documentUpload": { + "title": "Dokument", + "description": "Włączenie Dokumentu pozwoli modelowi na przyjmowanie dokumentów i odpowiadanie na pytania o nich." + }, + "audioUpload": { + "title": "Dźwięk", + "description": "Włączenie Dźwięku pozwoli modelowi na przetwarzanie plików audio do transkrypcji i analizy." + } + }, + "automatic": {}, + "resetConfig": { + "title": "Potwierdź reset?", + "message": "Reset odrzuca zmiany, przywracając ostatnią opublikowaną konfigurację." + }, + "errorMessage": { + "nameOfKeyRequired": "nazwa klucza: {{key}} wymagana", + "valueOfVarRequired": "{{key}} wartość nie może być pusta", + "queryRequired": "Tekst żądania jest wymagany.", + "waitForResponse": "Proszę czekać na odpowiedź na poprzednią wiadomość.", + "waitForBatchResponse": "Proszę czekać na odpowiedź na zadanie wsadowe.", + "notSelectModel": "Proszę wybrać model", + "waitForImgUpload": "Proszę czekać na przesłanie obrazu", + "waitForFileUpload": "Poczekaj na przesłanie pliku/plików" + }, + "chatSubTitle": "Instrukcje", + "completionSubTitle": "Prefix Monitu", + "promptTip": "Monity kierują odpowiedziami AI za pomocą instrukcji i ograniczeń. Wstaw zmienne takie jak {{input}}. Ten monit nie będzie widoczny dla użytkowników.", + "formattingChangedTitle": "Zmiana formatowania", + "formattingChangedText": "Modyfikacja formatowania zresetuje obszar debugowania, czy jesteś pewien?", + "variableTitle": "Zmienne", + "variableTip": "Użytkownicy wypełniają zmienne w formularzu, automatycznie zastępując zmienne w monicie.", + "notSetVar": "Zmienne pozwalają użytkownikom wprowadzać słowa wstępujące lub otwierające uwagi podczas wypełniania formularzy. Możesz spróbować wpisać \"{{input}}\" w słowach monitu.", + "autoAddVar": "Niezdefiniowane zmienne odwołują się w pre-monicie, czy chcesz je dodać do formularza wejściowego użytkownika?", + "variableTable": { + "key": "Klucz Zmiennej", + "name": "Nazwa Pola Wejściowego Użytkownika", + "type": "Typ Wejścia", + "action": "Akcje", + "typeString": "String", + "typeSelect": "Wybierz" + }, + "varKeyError": { + "canNoBeEmpty": "{{klucz}} jest wymagany", + "tooLong": "{{key}} za długi. Nie może być dłuższy niż 30 znaków", + "notValid": "{{key}} jest nieprawidłowy. Może zawierać tylko litery, cyfry i podkreślenia", + "notStartWithNumber": "{{key}} nie może zaczynać się od cyfry", + "keyAlreadyExists": "{{key}} już istnieje" + }, + "otherError": { + "promptNoBeEmpty": "Monit nie może być pusty", + "historyNoBeEmpty": "Historia konwersacji musi być ustawiona w monicie", + "queryNoBeEmpty": "Zapytanie musi być ustawione w monicie" + }, + "variableConfig": { + "addModalTitle": "Dodaj Pole Wejściowe", + "editModalTitle": "Edytuj Pole Wejściowe", + "description": "Ustawienia dla zmiennej {{varName}}", + "fieldType": "Typ pola", + "string": "Krótki tekst", + "text-input": "Krótki tekst", + "paragraph": "Akapit", + "select": "Wybierz", + "number": "Numer", + "notSet": "Nie ustawione, spróbuj wpisać {{input}} w monicie wstępnym", + "stringTitle": "Opcje pola tekstowego formularza", + "maxLength": "Maksymalna długość", + "options": "Opcje", + "addOption": "Dodaj opcję", + "apiBasedVar": "Zmienna oparta na API", + "varName": "Nazwa zmiennej", + "labelName": "Nazwa etykiety", + "inputPlaceholder": "Proszę wpisać", + "required": "Wymagane", + "hide": "Ukryj", + "errorMsg": { + "labelNameRequired": "Wymagana nazwa etykiety", + "varNameCanBeRepeat": "Nazwa zmiennej nie może się powtarzać", + "atLeastOneOption": "Wymagana jest co najmniej jedna opcja", + "optionRepeat": "Powtarzają się opcje" + }, + "defaultValue": "Wartość domyślna", + "noDefaultValue": "Brak wartości domyślnej", + "selectDefaultValue": "Wybierz wartość domyślną", + "file": { + "image": { + "name": "Obraz" + }, + "audio": { + "name": "Dźwięk" + }, + "document": { + "name": "Dokument" + }, + "video": { + "name": "Wideo" + }, + "custom": { + "description": "Określ inne typy plików.", + "createPlaceholder": " Rozszerzenie pliku, np. .doc", + "name": "Inne typy plików" + }, + "supportFileTypes": "Obsługa typów plików" + }, + "both": "Obie", + "localUpload": "Przesyłanie lokalne", + "uploadFileTypes": "Typy przesyłanych plików", + "maxNumberOfUploads": "Maksymalna liczba przesyłanych plików", + "maxNumberTip": "Dokument < {{docLimit}}, obraz < {{imgLimit}}, audio < {{audioLimit}}, wideo < {{videoLimit}}", + "single-file": "Pojedynczy plik", + "content": "Zawartość", + "multi-files": "Lista plików", + "json": "Kod JSON", + "jsonSchema": "Schemat JSON", + "optional": "opcjonalny", + "checkbox": "Pole wyboru", + "unit": "Jednostka", + "startChecked": "Rozpocznij sprawdzone", + "placeholder": "Symbol zastępczy", + "showAllSettings": "Pokaż wszystkie ustawienia", + "noDefaultSelected": "Nie wybieraj", + "uploadMethod": "Metoda przesyłania", + "defaultValuePlaceholder": "Wprowadź wartość domyślną, aby wstępnie wypełnić pole", + "tooltips": "Podpowiedzi", + "placeholderPlaceholder": "Wprowadź tekst, który ma być wyświetlany, gdy pole jest puste", + "tooltipsPlaceholder": "Wprowadzanie pomocnego tekstu wyświetlanego po najechaniu kursorem na etykietę", + "startSelectedOption": "Uruchom wybraną opcję", + "displayName": "Nazwa wyświetlana", + "unitPlaceholder": "Wyświetlanie jednostek po liczbach, np. żetonów" + }, + "vision": { + "name": "Wizja", + "description": "Włączenie Wizji pozwoli modelowi przyjmować obrazy i odpowiadać na pytania o nich.", + "settings": "Ustawienia", + "visionSettings": { + "title": "Ustawienia Wizji", + "resolution": "Rozdzielczość", + "resolutionTooltip": "niska rozdzielczość pozwoli modelowi odbierać obrazy o rozdzielczości 512 x 512 i reprezentować obraz z limitem 65 tokenów. Pozwala to API na szybsze odpowiedzi i zużywa mniej tokenów wejściowych dla przypadków, które nie wymagają wysokiego szczegółu.\nwysoka rozdzielczość pozwala najpierw modelowi zobaczyć obraz niskiej rozdzielczości, a następnie tworzy szczegółowe przycięcia obrazów wejściowych jako 512px kwadratów w oparciu o rozmiar obrazu wejściowego. Każde z tych szczegółowych przycięć używa dwukrotności budżetu tokenów, co daje razem 129 tokenów.", + "high": "Wysoka", + "low": "Niska", + "uploadMethod": "Metoda przesyłania", + "both": "Obie", + "localUpload": "Przesyłanie lokalne", + "url": "URL", + "uploadLimit": "Limit przesyłania" + }, + "onlySupportVisionModelTip": "Obsługuje tylko modele wizyjne" + }, + "voice": { + "name": "Głos", + "defaultDisplay": "Domyślny Głos", + "description": "Ustawienia głosu tekstu na mowę", + "settings": "Ustawienia", + "voiceSettings": { + "title": "Ustawienia Głosu", + "language": "Język", + "resolutionTooltip": "Wsparcie językowe głosu tekstu na mowę.", + "voice": "Głos", + "autoPlay": "Automatyczne odtwarzanie", + "autoPlayEnabled": "włączyć coś", + "autoPlayDisabled": "zamknięcie" + } + }, + "openingStatement": { + "title": "Wstęp do rozmowy", + "add": "Dodaj", + "writeOpener": "Napisz wstęp", + "placeholder": "Tutaj napisz swoją wiadomość wprowadzającą, możesz użyć zmiennych, spróbuj wpisać {{variable}}.", + "openingQuestion": "Pytania otwierające", + "openingQuestionPlaceholder": "Możesz używać zmiennych, spróbuj wpisać {{variable}}.", + "noDataPlaceHolder": "Rozpoczynanie rozmowy z użytkownikiem może pomóc AI nawiązać bliższe połączenie z nim w aplikacjach konwersacyjnych.", + "varTip": "Możesz używać zmiennych, spróbuj wpisać {{variable}}", + "tooShort": "Wymagane jest co najmniej 20 słów wstępnego monitu, aby wygenerować uwagi wstępne do rozmowy.", + "notIncludeKey": "Wstępny monit nie zawiera zmiennej: {{key}}. Proszę dodać ją do wstępnego monitu." + }, + "modelConfig": { + "model": "Model", + "setTone": "Ustaw ton odpowiedzi", + "title": "Model i parametry", + "modeType": { + "chat": "Czat", + "completion": "Uzupełnienie" + } + }, + "inputs": { + "title": "Debugowanie i podgląd", + "noPrompt": "Spróbuj wpisać jakiś monit w polu przedmonitu", + "userInputField": "Pole wejściowe użytkownika", + "noVar": "Wypełnij wartość zmiennej, która będzie automatycznie zastępowana w monicie za każdym razem, gdy rozpocznie się nowa sesja.", + "chatVarTip": "Wypełnij wartość zmiennej, która będzie automatycznie zastępowana w monicie za każdym razem, gdy rozpocznie się nowa sesja", + "completionVarTip": "Wypełnij wartość zmiennej, która będzie automatycznie zastępowana w słowach monitu za każdym razem, gdy zostanie przesłane pytanie.", + "previewTitle": "Podgląd monitu", + "queryTitle": "Treść zapytania", + "queryPlaceholder": "Proszę wprowadzić tekst żądania.", + "run": "URUCHOM" + }, + "result": "Tekst wyjściowy", + "datasetConfig": { + "settingTitle": "Ustawienia odzyskiwania", + "knowledgeTip": "Kliknij przycisk „+”, aby dodać wiedzę", + "retrieveOneWay": { + "title": "Odzyskiwanie N-do-1", + "description": "Na podstawie zamiaru użytkownika i opisów Wiedzy, Agent samodzielnie wybiera najlepszą Wiedzę do zapytania. Najlepiej sprawdza się w aplikacjach o wyraźnej, ograniczonej Wiedzy." + }, + "retrieveMultiWay": { + "title": "Odzyskiwanie wielościeżkowe", + "description": "Na podstawie zamiaru użytkownika, zapytania obejmują wszystkie Wiedze, pobierają odpowiedni tekst z wielu źródeł i wybierają najlepsze wyniki dopasowane do zapytań użytkownika po ponownym rankingu. Wymagana jest konfiguracja API modelu Przerankowania." + }, + "rerankModelRequired": "Wymagany model Przerankowania", + "params": "Parametry", + "top_k": "Najlepsze K", + "top_kTip": "Używane do filtrowania fragmentów najbardziej podobnych do pytań użytkownika. System również dynamicznie dostosowuje wartość Najlepszych K, zgodnie z maksymalną liczbą tokenów wybranego modelu.", + "score_threshold": "Próg punktacji", + "score_thresholdTip": "Używany do ustawienia progu podobieństwa dla filtrowania fragmentów.", + "retrieveChangeTip": "Modyfikacja trybu indeksowania i odzyskiwania może wpłynąć na aplikacje powiązane z tą Wiedzą.", + "embeddingModelRequired": "Wymagany jest skonfigurowany model osadzania" + }, + "debugAsSingleModel": "Debuguj jako pojedynczy model", + "debugAsMultipleModel": "Debuguj jako wiele modeli", + "duplicateModel": "Duplikuj", + "publishAs": "Opublikuj jako", + "assistantType": { + "name": "Typ asystenta", + "chatAssistant": { + "name": "Podstawowy Asystent", + "description": "Buduj asystenta opartego na czacie, korzystając z dużego modelu językowego" + }, + "agentAssistant": { + "name": "Asystent Agent", + "description": "Buduj inteligentnego agenta, który może autonomicznie wybierać narzędzia do wykonywania zadań" + } + }, + "agent": { + "agentMode": "Tryb Agenta", + "agentModeDes": "Ustaw rodzaj trybu wnioskowania dla agenta", + "agentModeType": { + "ReACT": "ReAct", + "functionCall": "Wywołanie funkcji" + }, + "setting": { + "name": "Ustawienia Agenta", + "description": "Ustawienia Asystenta Agenta pozwalają ustawić tryb agenta i zaawansowane funkcje, takie jak wbudowane monity, dostępne tylko w typie Agent.", + "maximumIterations": { + "name": "Maksymalna liczba iteracji", + "description": "Ogranicz liczbę iteracji, które asystent agenta może wykonać" + } + }, + "buildInPrompt": "Wbudowany Monit", + "firstPrompt": "Pierwszy Monit", + "nextIteration": "Następna Iteracja", + "promptPlaceholder": "Napisz tutaj swój monit", + "tools": { + "name": "Narzędzia", + "description": "Używanie narzędzi może rozszerzyć możliwości LLM, takie jak wyszukiwanie w internecie lub wykonywanie obliczeń naukowych", + "enabled": "Włączone" + } + }, + "codegen": { + "generate": "Stworzyć", + "applyChanges": "Stosowanie zmian", + "loading": "Generowanie kodu...", + "generatedCodeTitle": "Wygenerowany kod", + "description": "Generator kodów używa skonfigurowanych modeli do generowania wysokiej jakości kodu na podstawie Twoich instrukcji. Podaj jasne i szczegółowe instrukcje.", + "resTitle": "Wygenerowany kod", + "title": "Generator kodów", + "overwriteConfirmMessage": "Ta akcja spowoduje zastąpienie istniejącego kodu. Czy chcesz kontynuować?", + "instruction": "Instrukcje", + "apply": "Zastosować", + "instructionPlaceholder": "Wprowadź szczegółowy opis kodu, który chcesz wygenerować.", + "noDataLine2": "W tym miejscu zostanie wyświetlony podgląd kodu.", + "noDataLine1": "Opisz swój przypadek użycia po lewej stronie,", + "overwriteConfirmTitle": "Nadpisać istniejący kod?" + }, + "generate": { + "template": { + "pythonDebugger": { + "name": "Debuger języka Python", + "instruction": "Bot, który może generować i debugować kod na podstawie instrukcji" + }, + "translation": { + "name": "Tłumaczenie", + "instruction": "Tłumacz, który może tłumaczyć wiele języków" + }, + "professionalAnalyst": { + "instruction": "Wyodrębniaj szczegółowe informacje, identyfikuj ryzyko i destyluj kluczowe informacje z długich raportów w jednej notatce", + "name": "Zawodowy analityk" + }, + "excelFormulaExpert": { + "name": "Ekspert ds. formuł programu Excel", + "instruction": "Chatbot, który może pomóc początkującym użytkownikom zrozumieć, używać i tworzyć formuły Excela na podstawie instrukcji użytkownika" + }, + "travelPlanning": { + "name": "Planowanie podróży", + "instruction": "Asystent planowania podróży to inteligentne narzędzie zaprojektowane, aby pomóc użytkownikom w łatwym planowaniu podróży" + }, + "SQLSorcerer": { + "instruction": "Przekształć język potoczny w zapytania SQL", + "name": "Czarownik SQL" + }, + "GitGud": { + "instruction": "Generowanie odpowiednich poleceń usługi Git na podstawie opisanych przez użytkownika akcji kontroli wersji", + "name": "Git gud" + }, + "meetingTakeaways": { + "name": "Wnioski ze spotkania", + "instruction": "Podziel spotkania na zwięzłe podsumowania, w tym tematy dyskusji, kluczowe wnioski i działania" + }, + "writingsPolisher": { + "instruction": "Korzystaj z zaawansowanych technik redakcyjnych, aby ulepszyć swoje teksty", + "name": "Polerka do pisania" + } + }, + "instruction": "Instrukcje", + "generate": "Stworzyć", + "tryIt": "Spróbuj", + "overwriteMessage": "Zastosowanie tego monitu spowoduje zastąpienie istniejącej konfiguracji.", + "resTitle": "Wygenerowany monit", + "title": "Generator podpowiedzi", + "apply": "Zastosować", + "overwriteTitle": "Nadpisać istniejącą konfigurację?", + "loading": "Orkiestracja aplikacji dla Ciebie...", + "description": "Generator podpowiedzi używa skonfigurowanego modelu do optymalizacji podpowiedzi w celu uzyskania wyższej jakości i lepszej struktury. Napisz jasne i szczegółowe instrukcje.", + "idealOutput": "Idealny wynik", + "to": "do", + "version": "Wersja", + "dismiss": "Odrzuć", + "latest": "Najnowszy", + "insertContext": "wstaw kontekst", + "versions": "Wersje", + "press": "Prasa", + "optimizationNote": "Uwaga dotycząca optymalizacji", + "instructionPlaceHolderLine2": "Format wyjściowy jest nieprawidłowy, proszę ściśle przestrzegać formatu JSON.", + "optimizePromptTooltip": "Optymalizuj w generatorze podpowiedzi", + "instructionPlaceHolderLine3": "Ton jest zbyt ostry, proszę uczynić go bardziej przyjaznym.", + "newNoDataLine1": "Napisz instrukcję w lewej kolumnie, a następnie kliknij Generuj, aby zobaczyć odpowiedź.", + "instructionPlaceHolderTitle": "Opisz, jak chciałbyś poprawić ten wskazówkę. Na przykład:", + "instructionPlaceHolderLine1": "Uczyń output bardziej zwięzłym, zachowując kluczowe punkty.", + "codeGenInstructionPlaceHolderLine": "Im bardziej szczegółowy jest feedback, na przykład dotyczący typów danych wejściowych i wyjściowych oraz sposobu przetwarzania zmiennych, tym dokładniejsze będzie generowanie kodu.", + "optional": "Opcjonalny", + "idealOutputPlaceholder": "Opisz swój idealny format odpowiedzi, długość, ton i wymagania dotyczące treści..." + }, + "warningMessage": { + "timeoutExceeded": "Wyniki nie są wyświetlane z powodu przekroczenia limitu czasu. Zapoznaj się z dziennikami, aby zebrać pełne wyniki." + }, + "noResult": "W tym miejscu zostaną wyświetlone dane wyjściowe." +} diff --git a/web/i18n/pl-PL/app-debug.ts b/web/i18n/pl-PL/app-debug.ts deleted file mode 100644 index 943896effc..0000000000 --- a/web/i18n/pl-PL/app-debug.ts +++ /dev/null @@ -1,609 +0,0 @@ -const translation = { - pageTitle: { - line1: 'MONIT', - line2: 'Inżynieria', - }, - orchestrate: 'Orkiestracja', - promptMode: { - simple: 'Przełącz na tryb Ekspert, aby edytować cały MONIT', - advanced: 'Tryb Ekspert', - switchBack: 'Przełącz z powrotem', - advancedWarning: { - title: - 'Przełączyłeś się na Tryb Ekspert, i po modyfikacji MONITU, NIE można powrócić do trybu podstawowego.', - description: 'W Trybie Ekspert, możesz edytować cały MONIT.', - learnMore: 'Dowiedz się więcej', - ok: 'OK', - }, - operation: { - addMessage: 'Dodaj Wiadomość', - }, - contextMissing: - 'Brak komponentu kontekstowego, skuteczność monitu może być niewystarczająca.', - }, - operation: { - applyConfig: 'Publikuj', - resetConfig: 'Resetuj', - debugConfig: 'Debuguj', - addFeature: 'Dodaj funkcję', - automatic: 'Automatyczny', - stopResponding: 'Przestaje odpowiadać', - agree: 'lubię', - disagree: 'nie lubię', - cancelAgree: 'Anuluj polubienie', - cancelDisagree: 'Anuluj niepolubienie', - userAction: 'Akcja użytkownika ', - }, - notSetAPIKey: { - title: 'Klucz dostawcy LLM nie został ustawiony', - trailFinished: 'Ścieżka zakończona', - description: - 'Klucz dostawcy LLM nie został ustawiony, musi zostać ustawiony przed debugowaniem.', - settingBtn: 'Przejdź do ustawień', - }, - trailUseGPT4Info: { - title: 'Obecnie nie obsługuje GPT-4', - description: 'Użyj GPT-4, proszę ustawić klucz API.', - }, - feature: { - groupChat: { - title: 'Rozmowy grupowe', - description: - 'Dodanie ustawień przedkonwersacyjnych dla aplikacji może poprawić doświadczenia użytkownika.', - }, - groupExperience: { - title: 'Poprawa doświadczenia', - }, - conversationOpener: { - title: 'Otwieracze do rozmów', - description: - 'W aplikacji czatowej pierwsze zdanie, które AI aktywnie wypowiada do użytkownika, zazwyczaj służy jako powitanie.', - }, - suggestedQuestionsAfterAnswer: { - title: 'Nawiązanie', - description: 'Ustawienie kolejnych pytań może poprawić czat.', - resDes: '3 sugestie dla kolejnego pytania użytkownika.', - tryToAsk: 'Spróbuj zapytać', - }, - moreLikeThis: { - title: 'Więcej takich jak ten', - description: - 'Generuj wiele tekstów na raz, a następnie edytuj i kontynuuj generowanie', - generateNumTip: 'Liczba generowanych razów', - tip: 'Korzystanie z tej funkcji spowoduje dodatkowe zużycie tokenów', - }, - speechToText: { - title: 'Mowa na tekst', - description: 'Po włączeniu można używać wprowadzania głosowego.', - resDes: 'Wprowadzanie głosowe jest włączone', - }, - textToSpeech: { - title: 'Tekst na mowę', - description: 'Po włączeniu tekst można przekształcić w mowę.', - resDes: 'Tekst na audio jest włączony', - }, - citation: { - title: 'Cytaty i odniesienia', - description: - 'Po włączeniu, pokaż dokument źródłowy i przypisaną sekcję wygenerowanej treści.', - resDes: 'Cytaty i odniesienia są włączone', - }, - annotation: { - title: 'Odpowiedź z adnotacją', - description: - 'Możesz ręcznie dodać odpowiedź wysokiej jakości do pamięci podręcznej dla priorytetowego dopasowania do podobnych pytań użytkownika.', - resDes: 'Odpowiedź z adnotacją jest włączona', - scoreThreshold: { - title: 'Próg wyników', - description: - 'Służy do ustawienia progu podobieństwa dla odpowiedzi z adnotacją.', - easyMatch: 'Łatwe dopasowanie', - accurateMatch: 'Dokładne dopasowanie', - }, - matchVariable: { - title: 'Zmienna dopasowania', - choosePlaceholder: 'Wybierz zmienną do dopasowania', - }, - cacheManagement: 'Adnotacje', - cached: 'Zanotowano', - remove: 'Usuń', - removeConfirm: 'Usunąć tę adnotację?', - add: 'Dodaj adnotację', - edit: 'Edytuj adnotację', - }, - dataSet: { - title: 'Kontekst', - noData: 'Możesz importować wiedzę jako kontekst', - selectTitle: 'Wybierz odniesienie do wiedzy', - selected: 'Wiedza wybrana', - noDataSet: 'Nie znaleziono wiedzy', - toCreate: 'Przejdź do tworzenia', - notSupportSelectMulti: 'Obecnie obsługiwana jest tylko jedna wiedza', - queryVariable: { - title: 'Zmienna zapytania', - tip: 'Ta zmienna będzie używana jako dane wejściowe zapytania do odzyskiwania kontekstu, uzyskując informacje kontekstowe związane z wprowadzonymi danymi.', - choosePlaceholder: 'Wybierz zmienną zapytania', - noVar: 'Brak zmiennych', - noVarTip: 'proszę stworzyć zmienną w sekcji Zmienne', - unableToQueryDataSet: 'Nie można odzyskać wiedzy', - unableToQueryDataSetTip: - 'Nie udało się pomyślnie odzyskać wiedzy, proszę wybrać zmienną zapytania kontekstowego w sekcji kontekstowej.', - ok: 'OK', - contextVarNotEmpty: - 'zmienna zapytania kontekstowego nie może być pusta', - deleteContextVarTitle: 'Usunąć zmienną „{{varName}}”?', - deleteContextVarTip: - 'Ta zmienna została ustawiona jako zmienna zapytania kontekstowego, a jej usunięcie wpłynie na normalne korzystanie z wiedzy. Jeśli nadal potrzebujesz jej usunąć, wybierz ją ponownie w sekcji kontekstowej.', - }, - }, - tools: { - title: 'Narzędzia', - tips: 'Narzędzia zapewniają standardową metodę wywołania API, przyjmując dane wejściowe użytkownika lub zmienne jako parametry żądania do zapytania o dane zewnętrzne jako kontekst.', - toolsInUse: '{{count}} narzędzi w użyciu', - modal: { - title: 'Narzędzie', - toolType: { - title: 'Typ narzędzia', - placeholder: 'Wybierz typ narzędzia', - }, - name: { - title: 'Nazwa', - placeholder: 'Wprowadź nazwę', - }, - variableName: { - title: 'Nazwa zmiennej', - placeholder: 'Wprowadź nazwę zmiennej', - }, - }, - }, - conversationHistory: { - title: 'Historia konwersacji', - description: 'Ustaw prefixy dla ról w rozmowie', - tip: 'Historia konwersacji nie jest włączona, proszę dodać w monicie powyżej.', - learnMore: 'Dowiedz się więcej', - editModal: { - title: 'Edycja nazw ról konwersacyjnych', - userPrefix: 'Prefix użytkownika', - assistantPrefix: 'Prefix asystenta', - }, - }, - toolbox: { - title: 'SKRZYNKA NARZĘDZIOWA', - }, - moderation: { - title: 'Moderacja treści', - description: - 'Zabezpiecz wyjście modelu, używając API moderacji lub utrzymując listę wrażliwych słów.', - allEnabled: 'Treść WEJŚCIOWA/WYJŚCIOWA Włączona', - inputEnabled: 'Treść WEJŚCIOWA Włączona', - outputEnabled: 'Treść WYJŚCIOWA Włączona', - modal: { - title: 'Ustawienia moderacji treści', - provider: { - title: 'Dostawca', - openai: 'Moderacja OpenAI', - openaiTip: { - prefix: - 'Moderacja OpenAI wymaga skonfigurowanego klucza API OpenAI w ', - suffix: '.', - }, - keywords: 'Słowa kluczowe', - }, - keywords: { - tip: 'Po jednym w wierszu, oddzielone znakiem nowej linii. Maksymalnie 100 znaków na wiersz.', - placeholder: 'Po jednym w wierszu, oddzielone znakiem nowej linii', - line: 'Linia', - }, - content: { - input: 'Moderuj treść WEJŚCIOWĄ', - output: 'Moderuj treść WYJŚCIOWĄ', - preset: 'Ustawione odpowiedzi', - placeholder: 'Tutaj wprowadź ustawione odpowiedzi', - condition: - 'Treść WEJŚCIA i WYJŚCIA musi być włączona przynajmniej jedna', - fromApi: 'Ustawione odpowiedzi zwracane przez API', - errorMessage: 'Ustawione odpowiedzi nie mogą być puste', - supportMarkdown: 'Obsługuje Markdown', - }, - openaiNotConfig: { - before: - 'Moderacja OpenAI wymaga skonfigurowanego klucza API OpenAI w', - after: '', - }, - }, - contentEnableLabel: 'Włączono moderowanie treści', - }, - fileUpload: { - title: 'Przesyłanie plików', - description: 'Pole wprowadzania czatu umożliwia przesyłanie obrazów, dokumentów i innych plików.', - supportedTypes: 'Obsługiwane typy plików', - numberLimit: 'Maksymalna liczba przesłanych plików', - modalTitle: 'Ustawienia przesyłania plików', - }, - imageUpload: { - title: 'Przesyłanie obrazów', - description: 'Umożliwia przesyłanie obrazów.', - supportedTypes: 'Obsługiwane typy plików', - numberLimit: 'Maksymalna liczba przesłanych plików', - modalTitle: 'Ustawienia przesyłania obrazów', - }, - bar: { - empty: 'Włącz funkcje aby poprawić doświadczenie użytkownika aplikacji webowej', - enableText: 'Funkcje włączone', - manage: 'Zarządzaj', - }, - documentUpload: { - title: 'Dokument', - description: 'Włączenie Dokumentu pozwoli modelowi na przyjmowanie dokumentów i odpowiadanie na pytania o nich.', - }, - audioUpload: { - title: 'Dźwięk', - description: 'Włączenie Dźwięku pozwoli modelowi na przetwarzanie plików audio do transkrypcji i analizy.', - }, - }, - automatic: { - }, - resetConfig: { - title: 'Potwierdź reset?', - message: - 'Reset odrzuca zmiany, przywracając ostatnią opublikowaną konfigurację.', - }, - errorMessage: { - nameOfKeyRequired: 'nazwa klucza: {{key}} wymagana', - valueOfVarRequired: '{{key}} wartość nie może być pusta', - queryRequired: 'Tekst żądania jest wymagany.', - waitForResponse: 'Proszę czekać na odpowiedź na poprzednią wiadomość.', - waitForBatchResponse: 'Proszę czekać na odpowiedź na zadanie wsadowe.', - notSelectModel: 'Proszę wybrać model', - waitForImgUpload: 'Proszę czekać na przesłanie obrazu', - waitForFileUpload: 'Poczekaj na przesłanie pliku/plików', - }, - chatSubTitle: 'Instrukcje', - completionSubTitle: 'Prefix Monitu', - promptTip: - 'Monity kierują odpowiedziami AI za pomocą instrukcji i ograniczeń. Wstaw zmienne takie jak {{input}}. Ten monit nie będzie widoczny dla użytkowników.', - formattingChangedTitle: 'Zmiana formatowania', - formattingChangedText: - 'Modyfikacja formatowania zresetuje obszar debugowania, czy jesteś pewien?', - variableTitle: 'Zmienne', - variableTip: - 'Użytkownicy wypełniają zmienne w formularzu, automatycznie zastępując zmienne w monicie.', - notSetVar: - 'Zmienne pozwalają użytkownikom wprowadzać słowa wstępujące lub otwierające uwagi podczas wypełniania formularzy. Możesz spróbować wpisać "{{input}}" w słowach monitu.', - autoAddVar: - 'Niezdefiniowane zmienne odwołują się w pre-monicie, czy chcesz je dodać do formularza wejściowego użytkownika?', - variableTable: { - key: 'Klucz Zmiennej', - name: 'Nazwa Pola Wejściowego Użytkownika', - type: 'Typ Wejścia', - action: 'Akcje', - typeString: 'String', - typeSelect: 'Wybierz', - }, - varKeyError: { - canNoBeEmpty: '{{klucz}} jest wymagany', - tooLong: - '{{key}} za długi. Nie może być dłuższy niż 30 znaków', - notValid: - '{{key}} jest nieprawidłowy. Może zawierać tylko litery, cyfry i podkreślenia', - notStartWithNumber: - '{{key}} nie może zaczynać się od cyfry', - keyAlreadyExists: '{{key}} już istnieje', - }, - otherError: { - promptNoBeEmpty: 'Monit nie może być pusty', - historyNoBeEmpty: 'Historia konwersacji musi być ustawiona w monicie', - queryNoBeEmpty: 'Zapytanie musi być ustawione w monicie', - }, - variableConfig: { - 'addModalTitle': 'Dodaj Pole Wejściowe', - 'editModalTitle': 'Edytuj Pole Wejściowe', - 'description': 'Ustawienia dla zmiennej {{varName}}', - 'fieldType': 'Typ pola', - 'string': 'Krótki tekst', - 'text-input': 'Krótki tekst', - 'paragraph': 'Akapit', - 'select': 'Wybierz', - 'number': 'Numer', - 'notSet': 'Nie ustawione, spróbuj wpisać {{input}} w monicie wstępnym', - 'stringTitle': 'Opcje pola tekstowego formularza', - 'maxLength': 'Maksymalna długość', - 'options': 'Opcje', - 'addOption': 'Dodaj opcję', - 'apiBasedVar': 'Zmienna oparta na API', - 'varName': 'Nazwa zmiennej', - 'labelName': 'Nazwa etykiety', - 'inputPlaceholder': 'Proszę wpisać', - 'required': 'Wymagane', - 'hide': 'Ukryj', - 'errorMsg': { - labelNameRequired: 'Wymagana nazwa etykiety', - varNameCanBeRepeat: 'Nazwa zmiennej nie może się powtarzać', - atLeastOneOption: 'Wymagana jest co najmniej jedna opcja', - optionRepeat: 'Powtarzają się opcje', - }, - 'defaultValue': 'Wartość domyślna', - 'noDefaultValue': 'Brak wartości domyślnej', - 'selectDefaultValue': 'Wybierz wartość domyślną', - 'file': { - image: { - name: 'Obraz', - }, - audio: { - name: 'Dźwięk', - }, - document: { - name: 'Dokument', - }, - video: { - name: 'Wideo', - }, - custom: { - description: 'Określ inne typy plików.', - createPlaceholder: ' Rozszerzenie pliku, np. .doc', - name: 'Inne typy plików', - }, - supportFileTypes: 'Obsługa typów plików', - }, - 'both': 'Obie', - 'localUpload': 'Przesyłanie lokalne', - 'uploadFileTypes': 'Typy przesyłanych plików', - 'maxNumberOfUploads': 'Maksymalna liczba przesyłanych plików', - 'maxNumberTip': 'Dokument < {{docLimit}}, obraz < {{imgLimit}}, audio < {{audioLimit}}, wideo < {{videoLimit}}', - 'single-file': 'Pojedynczy plik', - 'content': 'Zawartość', - 'multi-files': 'Lista plików', - 'json': 'Kod JSON', - 'jsonSchema': 'Schemat JSON', - 'optional': 'opcjonalny', - 'checkbox': 'Pole wyboru', - 'unit': 'Jednostka', - 'startChecked': 'Rozpocznij sprawdzone', - 'placeholder': 'Symbol zastępczy', - 'showAllSettings': 'Pokaż wszystkie ustawienia', - 'noDefaultSelected': 'Nie wybieraj', - 'uploadMethod': 'Metoda przesyłania', - 'defaultValuePlaceholder': 'Wprowadź wartość domyślną, aby wstępnie wypełnić pole', - 'tooltips': 'Podpowiedzi', - 'placeholderPlaceholder': 'Wprowadź tekst, który ma być wyświetlany, gdy pole jest puste', - 'tooltipsPlaceholder': 'Wprowadzanie pomocnego tekstu wyświetlanego po najechaniu kursorem na etykietę', - 'startSelectedOption': 'Uruchom wybraną opcję', - 'displayName': 'Nazwa wyświetlana', - 'unitPlaceholder': 'Wyświetlanie jednostek po liczbach, np. żetonów', - }, - vision: { - name: 'Wizja', - description: - 'Włączenie Wizji pozwoli modelowi przyjmować obrazy i odpowiadać na pytania o nich.', - settings: 'Ustawienia', - visionSettings: { - title: 'Ustawienia Wizji', - resolution: 'Rozdzielczość', - resolutionTooltip: 'niska rozdzielczość pozwoli modelowi odbierać obrazy o rozdzielczości 512 x 512 i reprezentować obraz z limitem 65 tokenów. Pozwala to API na szybsze odpowiedzi i zużywa mniej tokenów wejściowych dla przypadków, które nie wymagają wysokiego szczegółu.\nwysoka rozdzielczość pozwala najpierw modelowi zobaczyć obraz niskiej rozdzielczości, a następnie tworzy szczegółowe przycięcia obrazów wejściowych jako 512px kwadratów w oparciu o rozmiar obrazu wejściowego. Każde z tych szczegółowych przycięć używa dwukrotności budżetu tokenów, co daje razem 129 tokenów.', - high: 'Wysoka', - low: 'Niska', - uploadMethod: 'Metoda przesyłania', - both: 'Obie', - localUpload: 'Przesyłanie lokalne', - url: 'URL', - uploadLimit: 'Limit przesyłania', - }, - onlySupportVisionModelTip: 'Obsługuje tylko modele wizyjne', - }, - voice: { - name: 'Głos', - defaultDisplay: 'Domyślny Głos', - description: 'Ustawienia głosu tekstu na mowę', - settings: 'Ustawienia', - voiceSettings: { - title: 'Ustawienia Głosu', - language: 'Język', - resolutionTooltip: 'Wsparcie językowe głosu tekstu na mowę.', - voice: 'Głos', - autoPlay: 'Automatyczne odtwarzanie', - autoPlayEnabled: 'włączyć coś', - autoPlayDisabled: 'zamknięcie', - }, - }, - openingStatement: { - title: 'Wstęp do rozmowy', - add: 'Dodaj', - writeOpener: 'Napisz wstęp', - placeholder: - 'Tutaj napisz swoją wiadomość wprowadzającą, możesz użyć zmiennych, spróbuj wpisać {{variable}}.', - openingQuestion: 'Pytania otwierające', - openingQuestionPlaceholder: 'Możesz używać zmiennych, spróbuj wpisać {{variable}}.', - noDataPlaceHolder: - 'Rozpoczynanie rozmowy z użytkownikiem może pomóc AI nawiązać bliższe połączenie z nim w aplikacjach konwersacyjnych.', - varTip: 'Możesz używać zmiennych, spróbuj wpisać {{variable}}', - tooShort: - 'Wymagane jest co najmniej 20 słów wstępnego monitu, aby wygenerować uwagi wstępne do rozmowy.', - notIncludeKey: - 'Wstępny monit nie zawiera zmiennej: {{key}}. Proszę dodać ją do wstępnego monitu.', - }, - modelConfig: { - model: 'Model', - setTone: 'Ustaw ton odpowiedzi', - title: 'Model i parametry', - modeType: { - chat: 'Czat', - completion: 'Uzupełnienie', - }, - }, - inputs: { - title: 'Debugowanie i podgląd', - noPrompt: 'Spróbuj wpisać jakiś monit w polu przedmonitu', - userInputField: 'Pole wejściowe użytkownika', - noVar: - 'Wypełnij wartość zmiennej, która będzie automatycznie zastępowana w monicie za każdym razem, gdy rozpocznie się nowa sesja.', - chatVarTip: - 'Wypełnij wartość zmiennej, która będzie automatycznie zastępowana w monicie za każdym razem, gdy rozpocznie się nowa sesja', - completionVarTip: - 'Wypełnij wartość zmiennej, która będzie automatycznie zastępowana w słowach monitu za każdym razem, gdy zostanie przesłane pytanie.', - previewTitle: 'Podgląd monitu', - queryTitle: 'Treść zapytania', - queryPlaceholder: 'Proszę wprowadzić tekst żądania.', - run: 'URUCHOM', - }, - result: 'Tekst wyjściowy', - datasetConfig: { - settingTitle: 'Ustawienia odzyskiwania', - knowledgeTip: 'Kliknij przycisk „+”, aby dodać wiedzę', - retrieveOneWay: { - title: 'Odzyskiwanie N-do-1', - description: - 'Na podstawie zamiaru użytkownika i opisów Wiedzy, Agent samodzielnie wybiera najlepszą Wiedzę do zapytania. Najlepiej sprawdza się w aplikacjach o wyraźnej, ograniczonej Wiedzy.', - }, - retrieveMultiWay: { - title: 'Odzyskiwanie wielościeżkowe', - description: - 'Na podstawie zamiaru użytkownika, zapytania obejmują wszystkie Wiedze, pobierają odpowiedni tekst z wielu źródeł i wybierają najlepsze wyniki dopasowane do zapytań użytkownika po ponownym rankingu. Wymagana jest konfiguracja API modelu Przerankowania.', - }, - rerankModelRequired: 'Wymagany model Przerankowania', - params: 'Parametry', - top_k: 'Najlepsze K', - top_kTip: - 'Używane do filtrowania fragmentów najbardziej podobnych do pytań użytkownika. System również dynamicznie dostosowuje wartość Najlepszych K, zgodnie z maksymalną liczbą tokenów wybranego modelu.', - score_threshold: 'Próg punktacji', - score_thresholdTip: - 'Używany do ustawienia progu podobieństwa dla filtrowania fragmentów.', - retrieveChangeTip: - 'Modyfikacja trybu indeksowania i odzyskiwania może wpłynąć na aplikacje powiązane z tą Wiedzą.', - embeddingModelRequired: 'Wymagany jest skonfigurowany model osadzania', - }, - debugAsSingleModel: 'Debuguj jako pojedynczy model', - debugAsMultipleModel: 'Debuguj jako wiele modeli', - duplicateModel: 'Duplikuj', - publishAs: 'Opublikuj jako', - assistantType: { - name: 'Typ asystenta', - chatAssistant: { - name: 'Podstawowy Asystent', - description: - 'Buduj asystenta opartego na czacie, korzystając z dużego modelu językowego', - }, - agentAssistant: { - name: 'Asystent Agent', - description: - 'Buduj inteligentnego agenta, który może autonomicznie wybierać narzędzia do wykonywania zadań', - }, - }, - agent: { - agentMode: 'Tryb Agenta', - agentModeDes: 'Ustaw rodzaj trybu wnioskowania dla agenta', - agentModeType: { - ReACT: 'ReAct', - functionCall: 'Wywołanie funkcji', - }, - setting: { - name: 'Ustawienia Agenta', - description: - 'Ustawienia Asystenta Agenta pozwalają ustawić tryb agenta i zaawansowane funkcje, takie jak wbudowane monity, dostępne tylko w typie Agent.', - maximumIterations: { - name: 'Maksymalna liczba iteracji', - description: - 'Ogranicz liczbę iteracji, które asystent agenta może wykonać', - }, - }, - buildInPrompt: 'Wbudowany Monit', - firstPrompt: 'Pierwszy Monit', - nextIteration: 'Następna Iteracja', - promptPlaceholder: 'Napisz tutaj swój monit', - tools: { - name: 'Narzędzia', - description: - 'Używanie narzędzi może rozszerzyć możliwości LLM, takie jak wyszukiwanie w internecie lub wykonywanie obliczeń naukowych', - enabled: 'Włączone', - }, - }, - codegen: { - generate: 'Stworzyć', - applyChanges: 'Stosowanie zmian', - loading: 'Generowanie kodu...', - generatedCodeTitle: 'Wygenerowany kod', - description: 'Generator kodów używa skonfigurowanych modeli do generowania wysokiej jakości kodu na podstawie Twoich instrukcji. Podaj jasne i szczegółowe instrukcje.', - resTitle: 'Wygenerowany kod', - title: 'Generator kodów', - overwriteConfirmMessage: 'Ta akcja spowoduje zastąpienie istniejącego kodu. Czy chcesz kontynuować?', - instruction: 'Instrukcje', - apply: 'Zastosować', - instructionPlaceholder: 'Wprowadź szczegółowy opis kodu, który chcesz wygenerować.', - noDataLine2: 'W tym miejscu zostanie wyświetlony podgląd kodu.', - noDataLine1: 'Opisz swój przypadek użycia po lewej stronie,', - overwriteConfirmTitle: 'Nadpisać istniejący kod?', - }, - generate: { - template: { - pythonDebugger: { - name: 'Debuger języka Python', - instruction: 'Bot, który może generować i debugować kod na podstawie instrukcji', - }, - translation: { - name: 'Tłumaczenie', - instruction: 'Tłumacz, który może tłumaczyć wiele języków', - }, - professionalAnalyst: { - instruction: 'Wyodrębniaj szczegółowe informacje, identyfikuj ryzyko i destyluj kluczowe informacje z długich raportów w jednej notatce', - name: 'Zawodowy analityk', - }, - excelFormulaExpert: { - name: 'Ekspert ds. formuł programu Excel', - instruction: 'Chatbot, który może pomóc początkującym użytkownikom zrozumieć, używać i tworzyć formuły Excela na podstawie instrukcji użytkownika', - }, - travelPlanning: { - name: 'Planowanie podróży', - instruction: 'Asystent planowania podróży to inteligentne narzędzie zaprojektowane, aby pomóc użytkownikom w łatwym planowaniu podróży', - }, - SQLSorcerer: { - instruction: 'Przekształć język potoczny w zapytania SQL', - name: 'Czarownik SQL', - }, - GitGud: { - instruction: 'Generowanie odpowiednich poleceń usługi Git na podstawie opisanych przez użytkownika akcji kontroli wersji', - name: 'Git gud', - }, - meetingTakeaways: { - name: 'Wnioski ze spotkania', - instruction: 'Podziel spotkania na zwięzłe podsumowania, w tym tematy dyskusji, kluczowe wnioski i działania', - }, - writingsPolisher: { - instruction: 'Korzystaj z zaawansowanych technik redakcyjnych, aby ulepszyć swoje teksty', - name: 'Polerka do pisania', - }, - }, - instruction: 'Instrukcje', - generate: 'Stworzyć', - tryIt: 'Spróbuj', - overwriteMessage: 'Zastosowanie tego monitu spowoduje zastąpienie istniejącej konfiguracji.', - resTitle: 'Wygenerowany monit', - title: 'Generator podpowiedzi', - apply: 'Zastosować', - overwriteTitle: 'Nadpisać istniejącą konfigurację?', - loading: 'Orkiestracja aplikacji dla Ciebie...', - description: 'Generator podpowiedzi używa skonfigurowanego modelu do optymalizacji podpowiedzi w celu uzyskania wyższej jakości i lepszej struktury. Napisz jasne i szczegółowe instrukcje.', - idealOutput: 'Idealny wynik', - to: 'do', - version: 'Wersja', - dismiss: 'Odrzuć', - latest: 'Najnowszy', - insertContext: 'wstaw kontekst', - versions: 'Wersje', - press: 'Prasa', - optimizationNote: 'Uwaga dotycząca optymalizacji', - instructionPlaceHolderLine2: 'Format wyjściowy jest nieprawidłowy, proszę ściśle przestrzegać formatu JSON.', - optimizePromptTooltip: 'Optymalizuj w generatorze podpowiedzi', - instructionPlaceHolderLine3: 'Ton jest zbyt ostry, proszę uczynić go bardziej przyjaznym.', - newNoDataLine1: 'Napisz instrukcję w lewej kolumnie, a następnie kliknij Generuj, aby zobaczyć odpowiedź.', - instructionPlaceHolderTitle: 'Opisz, jak chciałbyś poprawić ten wskazówkę. Na przykład:', - instructionPlaceHolderLine1: 'Uczyń output bardziej zwięzłym, zachowując kluczowe punkty.', - codeGenInstructionPlaceHolderLine: 'Im bardziej szczegółowy jest feedback, na przykład dotyczący typów danych wejściowych i wyjściowych oraz sposobu przetwarzania zmiennych, tym dokładniejsze będzie generowanie kodu.', - optional: 'Opcjonalny', - idealOutputPlaceholder: 'Opisz swój idealny format odpowiedzi, długość, ton i wymagania dotyczące treści...', - }, - warningMessage: { - timeoutExceeded: 'Wyniki nie są wyświetlane z powodu przekroczenia limitu czasu. Zapoznaj się z dziennikami, aby zebrać pełne wyniki.', - }, - noResult: 'W tym miejscu zostaną wyświetlone dane wyjściowe.', -} - -export default translation diff --git a/web/i18n/pl-PL/app-log.json b/web/i18n/pl-PL/app-log.json new file mode 100644 index 0000000000..b7240945bb --- /dev/null +++ b/web/i18n/pl-PL/app-log.json @@ -0,0 +1,110 @@ +{ + "title": "Dzienniki", + "description": "Dzienniki rejestrują stan działania aplikacji, w tym dane wejściowe użytkowników i odpowiedzi AI.", + "dateTimeFormat": "DD/MM/YYYY HH:mm:ss", + "table": { + "header": { + "updatedTime": "Czas aktualizacji", + "time": "Czas utworzenia", + "endUser": "Użytkownik końcowy lub konto", + "input": "Wejście", + "output": "Wyjście", + "summary": "Tytuł", + "messageCount": "Liczba wiadomości", + "userRate": "Ocena użytkownika", + "adminRate": "Ocena operatora", + "startTime": "CZAS STARTU", + "status": "STATUS", + "runtime": "CZAS DZIAŁANIA", + "tokens": "TOKENY", + "user": "UŻYTKOWNIK KOŃCOWY LUB KONTO", + "version": "WERSJA", + "triggered_from": "URUCHOMIONE PRZEZ" + }, + "pagination": { + "previous": "Poprzedni", + "next": "Następny" + }, + "empty": { + "noChat": "Brak rozmowy", + "noOutput": "Brak wyników", + "element": { + "title": "Czy ktoś jest?", + "content": "Obserwuj i adnotuj interakcje między użytkownikami końcowymi a aplikacjami AI tutaj, aby ciągle poprawiać dokładność AI. Możesz spróbować udostępnić lub przetestować aplikację internetową samodzielnie, a następnie wrócić na tę stronę." + } + } + }, + "detail": { + "time": "Czas", + "conversationId": "ID rozmowy", + "promptTemplate": "Szablon monitu", + "promptTemplateBeforeChat": "Szablon monitu przed rozmową · Jako wiadomość systemowa", + "annotationTip": "Usprawnienia oznaczone przez {{user}}", + "timeConsuming": "", + "second": "s", + "tokenCost": "Wydatkowane tokeny", + "loading": "ładowanie", + "operation": { + "like": "lubię", + "dislike": "nie lubię", + "addAnnotation": "Dodaj usprawnienie", + "editAnnotation": "Edytuj usprawnienie", + "annotationPlaceholder": "Wprowadź oczekiwaną odpowiedź, którą chcesz, aby AI odpowiedziało, co może być używane do dokładnego dostrojenia modelu i ciągłej poprawy jakości generacji tekstu w przyszłości." + }, + "variables": "Zmienne", + "uploadImages": "Przesłane obrazy", + "modelParams": "Parametry modelu" + }, + "filter": { + "period": { + "today": "Dzisiaj", + "last7days": "Ostatnie 7 dni", + "last4weeks": "Ostatnie 4 tygodnie", + "last3months": "Ostatnie 3 miesiące", + "last12months": "Ostatnie 12 miesięcy", + "monthToDate": "Od początku miesiąca", + "quarterToDate": "Od początku kwartału", + "yearToDate": "Od początku roku", + "allTime": "Cały czas", + "custom": "Niestandardowy", + "last30days": "Ostatnie 30 dni" + }, + "annotation": { + "all": "Wszystkie", + "annotated": "Zanotowane usprawnienia ({{count}} elementów)", + "not_annotated": "Nie zanotowane" + }, + "sortBy": "Sortuj według:", + "descending": "malejąco", + "ascending": "rosnąco" + }, + "workflowTitle": "Dzienniki przepływu pracy", + "workflowSubtitle": "Dziennik zarejestrował operację Automatyzacji.", + "runDetail": { + "title": "Dziennik rozmowy", + "workflowTitle": "Szczegół dziennika", + "fileListDetail": "Detal", + "fileListLabel": "Szczegóły pliku", + "testWithParams": "Test z parametrami" + }, + "promptLog": "Dziennik monitów", + "agentLog": "Dziennik agenta", + "viewLog": "Zobacz dziennik", + "agentLogDetail": { + "agentMode": "Tryb agenta", + "toolUsed": "Użyte narzędzia", + "iterations": "Iteracje", + "iteration": "Iteracja", + "finalProcessing": "Końcowa obróbka" + }, + "dateFormat": "DD/MM/RRRR", + "triggerBy": { + "debugging": "Debugowanie", + "appRun": "Aplikacja internetowa", + "webhook": "Webhook", + "schedule": "Harmonogram", + "plugin": "Wtyczka", + "ragPipelineRun": "Pipeline RAG", + "ragPipelineDebugging": "Debugowanie RAG" + } +} diff --git a/web/i18n/pl-PL/app-log.ts b/web/i18n/pl-PL/app-log.ts deleted file mode 100644 index ee6aec6257..0000000000 --- a/web/i18n/pl-PL/app-log.ts +++ /dev/null @@ -1,116 +0,0 @@ -const translation = { - title: 'Dzienniki', - description: - 'Dzienniki rejestrują stan działania aplikacji, w tym dane wejściowe użytkowników i odpowiedzi AI.', - dateTimeFormat: 'DD/MM/YYYY HH:mm:ss', - table: { - header: { - updatedTime: 'Czas aktualizacji', - time: 'Czas utworzenia', - endUser: 'Użytkownik końcowy lub konto', - input: 'Wejście', - output: 'Wyjście', - summary: 'Tytuł', - messageCount: 'Liczba wiadomości', - userRate: 'Ocena użytkownika', - adminRate: 'Ocena operatora', - startTime: 'CZAS STARTU', - status: 'STATUS', - runtime: 'CZAS DZIAŁANIA', - tokens: 'TOKENY', - user: 'UŻYTKOWNIK KOŃCOWY LUB KONTO', - version: 'WERSJA', - triggered_from: 'URUCHOMIONE PRZEZ', - }, - pagination: { - previous: 'Poprzedni', - next: 'Następny', - }, - empty: { - noChat: 'Brak rozmowy', - noOutput: 'Brak wyników', - element: { - title: 'Czy ktoś jest?', - content: - 'Obserwuj i adnotuj interakcje między użytkownikami końcowymi a aplikacjami AI tutaj, aby ciągle poprawiać dokładność AI. Możesz spróbować udostępnić lub przetestować aplikację internetową samodzielnie, a następnie wrócić na tę stronę.', - }, - }, - }, - detail: { - time: 'Czas', - conversationId: 'ID rozmowy', - promptTemplate: 'Szablon monitu', - promptTemplateBeforeChat: - 'Szablon monitu przed rozmową · Jako wiadomość systemowa', - annotationTip: 'Usprawnienia oznaczone przez {{user}}', - timeConsuming: '', - second: 's', - tokenCost: 'Wydatkowane tokeny', - loading: 'ładowanie', - operation: { - like: 'lubię', - dislike: 'nie lubię', - addAnnotation: 'Dodaj usprawnienie', - editAnnotation: 'Edytuj usprawnienie', - annotationPlaceholder: - 'Wprowadź oczekiwaną odpowiedź, którą chcesz, aby AI odpowiedziało, co może być używane do dokładnego dostrojenia modelu i ciągłej poprawy jakości generacji tekstu w przyszłości.', - }, - variables: 'Zmienne', - uploadImages: 'Przesłane obrazy', - modelParams: 'Parametry modelu', - }, - filter: { - period: { - today: 'Dzisiaj', - last7days: 'Ostatnie 7 dni', - last4weeks: 'Ostatnie 4 tygodnie', - last3months: 'Ostatnie 3 miesiące', - last12months: 'Ostatnie 12 miesięcy', - monthToDate: 'Od początku miesiąca', - quarterToDate: 'Od początku kwartału', - yearToDate: 'Od początku roku', - allTime: 'Cały czas', - custom: 'Niestandardowy', - last30days: 'Ostatnie 30 dni', - }, - annotation: { - all: 'Wszystkie', - annotated: 'Zanotowane usprawnienia ({{count}} elementów)', - not_annotated: 'Nie zanotowane', - }, - sortBy: 'Sortuj według:', - descending: 'malejąco', - ascending: 'rosnąco', - }, - workflowTitle: 'Dzienniki przepływu pracy', - workflowSubtitle: 'Dziennik zarejestrował operację Automatyzacji.', - runDetail: { - title: 'Dziennik rozmowy', - workflowTitle: 'Szczegół dziennika', - fileListDetail: 'Detal', - fileListLabel: 'Szczegóły pliku', - testWithParams: 'Test z parametrami', - }, - promptLog: 'Dziennik monitów', - agentLog: 'Dziennik agenta', - viewLog: 'Zobacz dziennik', - agentLogDetail: { - agentMode: 'Tryb agenta', - toolUsed: 'Użyte narzędzia', - iterations: 'Iteracje', - iteration: 'Iteracja', - finalProcessing: 'Końcowa obróbka', - }, - dateFormat: 'DD/MM/RRRR', - triggerBy: { - debugging: 'Debugowanie', - appRun: 'Aplikacja internetowa', - webhook: 'Webhook', - schedule: 'Harmonogram', - plugin: 'Wtyczka', - ragPipelineRun: 'Pipeline RAG', - ragPipelineDebugging: 'Debugowanie RAG', - }, -} - -export default translation diff --git a/web/i18n/pl-PL/app-overview.json b/web/i18n/pl-PL/app-overview.json new file mode 100644 index 0000000000..33ec6c6f86 --- /dev/null +++ b/web/i18n/pl-PL/app-overview.json @@ -0,0 +1,187 @@ +{ + "welcome": { + "firstStepTip": "Aby rozpocząć,", + "enterKeyTip": "wprowadź poniżej swój klucz API OpenAI", + "getKeyTip": "Pobierz swój klucz API z pulpitu nawigacyjnego OpenAI", + "placeholder": "Twój klucz API OpenAI (np. sk-xxxx)" + }, + "apiKeyInfo": { + "cloud": { + "trial": { + "title": "Korzystasz z limitu próbnego {{providerName}}.", + "description": "Limit próbny jest dostarczany do użytku testowego. Zanim wykorzystasz dozwolone wywołania limitu próbnego, skonfiguruj swojego własnego dostawcę modelu lub zakup dodatkowy limit." + }, + "exhausted": { + "title": "Twój limit próbny został wyczerpany, proszę skonfiguruj swój klucz API.", + "description": "Twój limit próbny został wyczerpany. Skonfiguruj swojego własnego dostawcę modelu lub zakup dodatkowy limit." + } + }, + "selfHost": { + "title": { + "row1": "Aby rozpocząć,", + "row2": "najpierw skonfiguruj swojego dostawcę modelu." + } + }, + "callTimes": "Liczba wywołań", + "usedToken": "Zużyty token", + "setAPIBtn": "Przejdź do konfiguracji dostawcy modelu", + "tryCloud": "Lub wypróbuj wersję chmurową Dify z darmowym limitem" + }, + "overview": { + "title": "Przegląd", + "appInfo": { + "explanation": "Gotowa do użycia aplikacja internetowa AI", + "accessibleAddress": "Publiczny adres URL", + "preview": "Podgląd", + "regenerate": "Wygeneruj ponownie", + "regenerateNotice": "Czy chcesz wygenerować ponownie publiczny adres URL?", + "preUseReminder": "Przed kontynuowaniem włącz aplikację web app.", + "settings": { + "entry": "Ustawienia", + "title": "Ustawienia web app", + "webName": "Nazwa web app", + "webDesc": "Opis web app", + "webDescTip": "Ten tekst będzie wyświetlany po stronie klienta, zapewniając podstawowe wskazówki, jak korzystać z aplikacji", + "webDescPlaceholder": "Wpisz opis web app", + "language": "Język", + "workflow": { + "title": "Kroki przepływu pracy", + "show": "Pokaż", + "hide": "Ukryj", + "subTitle": "Szczegóły przepływu pracy", + "showDesc": "Pokazywanie lub ukrywanie szczegółów przepływu pracy w aplikacji internetowej" + }, + "chatColorTheme": "Motyw kolorystyczny czatu", + "chatColorThemeDesc": "Ustaw motyw kolorystyczny czatu", + "chatColorThemeInverted": "Odwrócony", + "invalidHexMessage": "Nieprawidłowa wartość heksadecymalna", + "invalidPrivacyPolicy": "Nieprawidłowy link do polityki prywatności. Proszę użyć prawidłowego linku zaczynającego się od http lub https", + "more": { + "entry": "Pokaż więcej ustawień", + "copyright": "Prawa autorskie", + "copyRightPlaceholder": "Wprowadź nazwę autora lub organizacji", + "privacyPolicy": "Polityka prywatności", + "privacyPolicyPlaceholder": "Wprowadź link do polityki prywatności", + "privacyPolicyTip": "Pomaga odwiedzającym zrozumieć, jakie dane zbiera aplikacja, zobacz Politykę prywatności Dify.", + "customDisclaimer": "Oświadczenie o ochronie danych", + "customDisclaimerPlaceholder": "Wprowadź oświadczenie o ochronie danych", + "customDisclaimerTip": "Niestandardowy tekst oświadczenia będzie wyświetlany po stronie klienta, dostarczając dodatkowych informacji o aplikacji.", + "copyrightTip": "Wyświetlanie informacji o prawach autorskich w aplikacji internetowej", + "copyrightTooltip": "Uaktualnij do planu Professional lub wyższego" + }, + "sso": { + "tooltip": "Skontaktuj się z administratorem, aby włączyć logowanie jednokrotne w aplikacji internetowej", + "title": "Logowanie jednokrotne w aplikacji internetowej", + "label": "Uwierzytelnianie logowania jednokrotnego", + "description": "Wszyscy użytkownicy muszą zalogować się za pomocą logowania jednokrotnego przed użyciem aplikacji internetowej" + }, + "modalTip": "Ustawienia aplikacji internetowej po stronie klienta." + }, + "embedded": { + "entry": "Osadzone", + "title": "Osadź na stronie internetowej", + "explanation": "Wybierz sposób osadzenia aplikacji czatu na swojej stronie internetowej", + "iframe": "Aby dodać aplikację czatu w dowolnym miejscu na swojej stronie internetowej, dodaj ten kod iframe do swojego kodu HTML.", + "scripts": "Aby dodać aplikację czatu w prawym dolnym rogu swojej strony internetowej, dodaj ten kod do swojego HTML.", + "chromePlugin": "Zainstaluj rozszerzenie Chrome Dify Chatbot", + "copied": "Skopiowane", + "copy": "Kopiuj" + }, + "qrcode": { + "title": "Kod QR do udostępniania", + "scan": "Skanuj aplikację udostępniania", + "download": "Pobierz kod QR" + }, + "customize": { + "way": "sposób", + "entry": "Dostosuj", + "title": "Dostosuj aplikację internetową AI", + "explanation": "Możesz dostosować front aplikacji internetowej do swoich scenariuszy i potrzeb stylowych.", + "way1": { + "name": "Skopiuj kod klienta, zmodyfikuj go i wdroż na Vercel (zalecane)", + "step1": "Skopiuj kod klienta i zmodyfikuj go", + "step1Tip": "Kliknij tutaj, aby skopiować kod źródłowy na swoje konto GitHub i zmodyfikować kod", + "step1Operation": "Dify-WebClient", + "step2": "Wdroż na Vercel", + "step2Tip": "Kliknij tutaj, aby zaimportować repozytorium do Vercel i wdrożyć", + "step2Operation": "Import repozytorium", + "step3": "Konfiguracja zmiennych środowiskowych", + "step3Tip": "Dodaj następujące zmienne środowiskowe w Vercel" + }, + "way2": { + "name": "Napisz kod po stronie klienta, aby wywołać API i wdrożyć go na serwerze", + "operation": "Dokumentacja" + } + }, + "launch": "Uruchomić", + "enableTooltip": { + "description": "Aby włączyć tę funkcję, dodaj węzeł Wprowadzanie użytkownika na planszę. (Może już istnieć w szkicu, zacznie działać po opublikowaniu)", + "learnMore": "Dowiedz się więcej" + }, + "title": "Aplikacja internetowa" + }, + "apiInfo": { + "title": "API usługi w tle", + "explanation": "Łatwe do zintegrowania z twoją aplikacją", + "accessibleAddress": "Punkt końcowy API usługi", + "doc": "Dokumentacja API" + }, + "status": { + "running": "W usłudze", + "disable": "Wyłącz" + }, + "triggerInfo": { + "title": "Czynniki wywołujące", + "explanation": "Zarządzanie wyzwalaczami przepływu pracy", + "triggersAdded": "{{count}} Wyzwalacze dodane", + "noTriggerAdded": "Nie dodano wyzwalacza", + "triggerStatusDescription": "Status węzła wyzwalacza pojawia się tutaj. (Może już istnieć w wersji roboczej, obowiązuje po opublikowaniu)", + "learnAboutTriggers": "Dowiedz się o wyzwalaczach" + }, + "disableTooltip": { + "triggerMode": "Funkcja {{feature}} nie jest obsługiwana w trybie węzła wyzwalającego." + } + }, + "analysis": { + "title": "Analiza", + "ms": "ms", + "tokenPS": "Tokeny/s", + "totalMessages": { + "title": "Łączna liczba wiadomości", + "explanation": "Liczba dziennych interakcji z AI." + }, + "totalConversations": { + "title": "Całkowita liczba rozmów", + "explanation": "Liczba dziennych rozmów z AI; inżynieria/debugowanie promptów wykluczone." + }, + "activeUsers": { + "title": "Aktywni użytkownicy", + "explanation": "Unikalni użytkownicy uczestniczący w pytaniach i odpowiedziach z AI; inżynieria i debugowanie monitów wykluczone." + }, + "tokenUsage": { + "title": "Zużycie tokenów", + "explanation": "Odbija dziennie używane tokeny modelu językowego dla aplikacji, przydatne do kontroli kosztów.", + "consumed": "Zużyte" + }, + "avgSessionInteractions": { + "title": "Śr. interakcji w sesji", + "explanation": "Liczba ciągłych komunikacji użytkownik-AI; dla aplikacji opartych na rozmowach." + }, + "avgUserInteractions": { + "title": "Śr. interakcji użytkownika", + "explanation": "Odbija dzienną częstotliwość użytkowania przez użytkowników. Ta metryka odzwierciedla przywiązanie użytkowników." + }, + "userSatisfactionRate": { + "title": "Wskaźnik zadowolenia użytkowników", + "explanation": "Liczba polubień na 1000 wiadomości. Wskazuje to proporcję odpowiedzi, z których użytkownicy są bardzo zadowoleni." + }, + "avgResponseTime": { + "title": "Śr. czas odpowiedzi", + "explanation": "Czas (ms) potrzebny AI na przetworzenie/odpowiedź; dla aplikacji opartych na tekście." + }, + "tps": { + "title": "Szybkość wydajności tokenów", + "explanation": "Mierzy wydajność LLM. Liczy szybkość wydajności tokenów LLM od początku żądania do zakończenia wyjścia." + } + } +} diff --git a/web/i18n/pl-PL/app-overview.ts b/web/i18n/pl-PL/app-overview.ts deleted file mode 100644 index a767f18f1b..0000000000 --- a/web/i18n/pl-PL/app-overview.ts +++ /dev/null @@ -1,207 +0,0 @@ -const translation = { - welcome: { - firstStepTip: 'Aby rozpocząć,', - enterKeyTip: 'wprowadź poniżej swój klucz API OpenAI', - getKeyTip: 'Pobierz swój klucz API z pulpitu nawigacyjnego OpenAI', - placeholder: 'Twój klucz API OpenAI (np. sk-xxxx)', - }, - apiKeyInfo: { - cloud: { - trial: { - title: 'Korzystasz z limitu próbnego {{providerName}}.', - description: - 'Limit próbny jest dostarczany do użytku testowego. Zanim wykorzystasz dozwolone wywołania limitu próbnego, skonfiguruj swojego własnego dostawcę modelu lub zakup dodatkowy limit.', - }, - exhausted: { - title: - 'Twój limit próbny został wyczerpany, proszę skonfiguruj swój klucz API.', - description: - 'Twój limit próbny został wyczerpany. Skonfiguruj swojego własnego dostawcę modelu lub zakup dodatkowy limit.', - }, - }, - selfHost: { - title: { - row1: 'Aby rozpocząć,', - row2: 'najpierw skonfiguruj swojego dostawcę modelu.', - }, - }, - callTimes: 'Liczba wywołań', - usedToken: 'Zużyty token', - setAPIBtn: 'Przejdź do konfiguracji dostawcy modelu', - tryCloud: 'Lub wypróbuj wersję chmurową Dify z darmowym limitem', - }, - overview: { - title: 'Przegląd', - appInfo: { - explanation: 'Gotowa do użycia aplikacja internetowa AI', - accessibleAddress: 'Publiczny adres URL', - preview: 'Podgląd', - regenerate: 'Wygeneruj ponownie', - regenerateNotice: 'Czy chcesz wygenerować ponownie publiczny adres URL?', - preUseReminder: 'Przed kontynuowaniem włącz aplikację web app.', - settings: { - entry: 'Ustawienia', - title: 'Ustawienia web app', - webName: 'Nazwa web app', - webDesc: 'Opis web app', - webDescTip: - 'Ten tekst będzie wyświetlany po stronie klienta, zapewniając podstawowe wskazówki, jak korzystać z aplikacji', - webDescPlaceholder: 'Wpisz opis web app', - language: 'Język', - workflow: { - title: 'Kroki przepływu pracy', - show: 'Pokaż', - hide: 'Ukryj', - subTitle: 'Szczegóły przepływu pracy', - showDesc: 'Pokazywanie lub ukrywanie szczegółów przepływu pracy w aplikacji internetowej', - }, - chatColorTheme: 'Motyw kolorystyczny czatu', - chatColorThemeDesc: 'Ustaw motyw kolorystyczny czatu', - chatColorThemeInverted: 'Odwrócony', - invalidHexMessage: 'Nieprawidłowa wartość heksadecymalna', - invalidPrivacyPolicy: 'Nieprawidłowy link do polityki prywatności. Proszę użyć prawidłowego linku zaczynającego się od http lub https', - more: { - entry: 'Pokaż więcej ustawień', - copyright: 'Prawa autorskie', - copyRightPlaceholder: 'Wprowadź nazwę autora lub organizacji', - privacyPolicy: 'Polityka prywatności', - privacyPolicyPlaceholder: 'Wprowadź link do polityki prywatności', - privacyPolicyTip: - 'Pomaga odwiedzającym zrozumieć, jakie dane zbiera aplikacja, zobacz Politykę prywatności Dify.', - customDisclaimer: 'Oświadczenie o ochronie danych', - customDisclaimerPlaceholder: 'Wprowadź oświadczenie o ochronie danych', - customDisclaimerTip: 'Niestandardowy tekst oświadczenia będzie wyświetlany po stronie klienta, dostarczając dodatkowych informacji o aplikacji.', - copyrightTip: 'Wyświetlanie informacji o prawach autorskich w aplikacji internetowej', - copyrightTooltip: 'Uaktualnij do planu Professional lub wyższego', - }, - sso: { - tooltip: 'Skontaktuj się z administratorem, aby włączyć logowanie jednokrotne w aplikacji internetowej', - title: 'Logowanie jednokrotne w aplikacji internetowej', - label: 'Uwierzytelnianie logowania jednokrotnego', - description: 'Wszyscy użytkownicy muszą zalogować się za pomocą logowania jednokrotnego przed użyciem aplikacji internetowej', - }, - modalTip: 'Ustawienia aplikacji internetowej po stronie klienta.', - }, - embedded: { - entry: 'Osadzone', - title: 'Osadź na stronie internetowej', - explanation: - 'Wybierz sposób osadzenia aplikacji czatu na swojej stronie internetowej', - iframe: - 'Aby dodać aplikację czatu w dowolnym miejscu na swojej stronie internetowej, dodaj ten kod iframe do swojego kodu HTML.', - scripts: - 'Aby dodać aplikację czatu w prawym dolnym rogu swojej strony internetowej, dodaj ten kod do swojego HTML.', - chromePlugin: 'Zainstaluj rozszerzenie Chrome Dify Chatbot', - copied: 'Skopiowane', - copy: 'Kopiuj', - }, - qrcode: { - title: 'Kod QR do udostępniania', - scan: 'Skanuj aplikację udostępniania', - download: 'Pobierz kod QR', - }, - customize: { - way: 'sposób', - entry: 'Dostosuj', - title: 'Dostosuj aplikację internetową AI', - explanation: - 'Możesz dostosować front aplikacji internetowej do swoich scenariuszy i potrzeb stylowych.', - way1: { - name: 'Skopiuj kod klienta, zmodyfikuj go i wdroż na Vercel (zalecane)', - step1: 'Skopiuj kod klienta i zmodyfikuj go', - step1Tip: - 'Kliknij tutaj, aby skopiować kod źródłowy na swoje konto GitHub i zmodyfikować kod', - step1Operation: 'Dify-WebClient', - step2: 'Wdroż na Vercel', - step2Tip: - 'Kliknij tutaj, aby zaimportować repozytorium do Vercel i wdrożyć', - step2Operation: 'Import repozytorium', - step3: 'Konfiguracja zmiennych środowiskowych', - step3Tip: 'Dodaj następujące zmienne środowiskowe w Vercel', - }, - way2: { - name: 'Napisz kod po stronie klienta, aby wywołać API i wdrożyć go na serwerze', - operation: 'Dokumentacja', - }, - }, - launch: 'Uruchomić', - enableTooltip: { - description: 'Aby włączyć tę funkcję, dodaj węzeł Wprowadzanie użytkownika na planszę. (Może już istnieć w szkicu, zacznie działać po opublikowaniu)', - learnMore: 'Dowiedz się więcej', - }, - title: 'Aplikacja internetowa', - }, - apiInfo: { - title: 'API usługi w tle', - explanation: 'Łatwe do zintegrowania z twoją aplikacją', - accessibleAddress: 'Punkt końcowy API usługi', - doc: 'Dokumentacja API', - }, - status: { - running: 'W usłudze', - disable: 'Wyłącz', - }, - triggerInfo: { - title: 'Czynniki wywołujące', - explanation: 'Zarządzanie wyzwalaczami przepływu pracy', - triggersAdded: '{{count}} Wyzwalacze dodane', - noTriggerAdded: 'Nie dodano wyzwalacza', - triggerStatusDescription: 'Status węzła wyzwalacza pojawia się tutaj. (Może już istnieć w wersji roboczej, obowiązuje po opublikowaniu)', - learnAboutTriggers: 'Dowiedz się o wyzwalaczach', - }, - disableTooltip: { - triggerMode: 'Funkcja {{feature}} nie jest obsługiwana w trybie węzła wyzwalającego.', - }, - }, - analysis: { - title: 'Analiza', - ms: 'ms', - tokenPS: 'Tokeny/s', - totalMessages: { - title: 'Łączna liczba wiadomości', - explanation: 'Liczba dziennych interakcji z AI.', - }, - totalConversations: { - title: 'Całkowita liczba rozmów', - explanation: 'Liczba dziennych rozmów z AI; inżynieria/debugowanie promptów wykluczone.', - }, - activeUsers: { - title: 'Aktywni użytkownicy', - explanation: - 'Unikalni użytkownicy uczestniczący w pytaniach i odpowiedziach z AI; inżynieria i debugowanie monitów wykluczone.', - }, - tokenUsage: { - title: 'Zużycie tokenów', - explanation: - 'Odbija dziennie używane tokeny modelu językowego dla aplikacji, przydatne do kontroli kosztów.', - consumed: 'Zużyte', - }, - avgSessionInteractions: { - title: 'Śr. interakcji w sesji', - explanation: - 'Liczba ciągłych komunikacji użytkownik-AI; dla aplikacji opartych na rozmowach.', - }, - avgUserInteractions: { - title: 'Śr. interakcji użytkownika', - explanation: - 'Odbija dzienną częstotliwość użytkowania przez użytkowników. Ta metryka odzwierciedla przywiązanie użytkowników.', - }, - userSatisfactionRate: { - title: 'Wskaźnik zadowolenia użytkowników', - explanation: - 'Liczba polubień na 1000 wiadomości. Wskazuje to proporcję odpowiedzi, z których użytkownicy są bardzo zadowoleni.', - }, - avgResponseTime: { - title: 'Śr. czas odpowiedzi', - explanation: - 'Czas (ms) potrzebny AI na przetworzenie/odpowiedź; dla aplikacji opartych na tekście.', - }, - tps: { - title: 'Szybkość wydajności tokenów', - explanation: - 'Mierzy wydajność LLM. Liczy szybkość wydajności tokenów LLM od początku żądania do zakończenia wyjścia.', - }, - }, -} - -export default translation diff --git a/web/i18n/pl-PL/app.json b/web/i18n/pl-PL/app.json new file mode 100644 index 0000000000..8a0405fa61 --- /dev/null +++ b/web/i18n/pl-PL/app.json @@ -0,0 +1,345 @@ +{ + "createApp": "UTWÓRZ APLIKACJĘ", + "types": { + "all": "Wszystkie", + "chatbot": "Chatbot", + "agent": "Agent", + "workflow": "Przepływ pracy", + "completion": "Zakończenie", + "advanced": "Przepływ czatu", + "basic": "Podstawowy" + }, + "duplicate": "Duplikuj", + "duplicateTitle": "Duplikuj aplikację", + "export": "Eksportuj DSL", + "exportFailed": "Eksport DSL nie powiódł się.", + "importDSL": "Importuj plik DSL", + "createFromConfigFile": "Utwórz z pliku DSL", + "deleteAppConfirmTitle": "Usunąć tę aplikację?", + "deleteAppConfirmContent": "Usunięcie aplikacji jest nieodwracalne. Użytkownicy nie będą mieli już dostępu do twojej aplikacji, a wszystkie konfiguracje monitów i dzienniki zostaną trwale usunięte.", + "appDeleted": "Aplikacja usunięta", + "appDeleteFailed": "Nie udało się usunąć aplikacji", + "join": "Dołącz do społeczności", + "communityIntro": "Dyskutuj z członkami zespołu, współtwórcami i deweloperami na różnych kanałach.", + "roadmap": "Zobacz naszą mapę drogową", + "newApp": { + "startFromBlank": "Utwórz od podstaw", + "startFromTemplate": "Utwórz z szablonu", + "workflowWarning": "Obecnie w fazie beta", + "captionName": "Ikona i nazwa aplikacji", + "appNamePlaceholder": "Podaj nazwę swojej aplikacji", + "captionDescription": "Opis", + "appDescriptionPlaceholder": "Wprowadź opis aplikacji", + "useTemplate": "Użyj tego szablonu", + "previewDemo": "Podgląd demo", + "chatApp": "Asystent", + "chatAppIntro": "Chcę zbudować aplikację opartą na czacie. Ta aplikacja używa formatu pytań i odpowiedzi, umożliwiając wielokrotne rundy ciągłej konwersacji.", + "agentAssistant": "Nowy asystent agenta", + "completeApp": "Generator tekstu", + "completeAppIntro": "Chcę stworzyć aplikację, która generuje teksty wysokiej jakości na podstawie monitów, takich jak generowanie artykułów, streszczeń, tłumaczeń i innych.", + "showTemplates": "Chcę wybrać z szablonu", + "hideTemplates": "Wróć do wyboru trybu", + "Create": "Utwórz", + "Cancel": "Anuluj", + "nameNotEmpty": "Nazwa nie może być pusta", + "appTemplateNotSelected": "Proszę wybrać szablon", + "appTypeRequired": "Proszę wybrać typ aplikacji", + "appCreated": "Aplikacja utworzona", + "appCreateFailed": "Nie udało się utworzyć aplikacji", + "appCreateDSLErrorPart3": "Aktualna wersja aplikacji DSL:", + "appCreateDSLErrorPart2": "Czy chcesz kontynuować?", + "Confirm": "Potwierdzić", + "caution": "Ostrożność", + "appCreateDSLWarning": "Przestroga: Różnica w wersji DSL może mieć wpływ na niektóre funkcje", + "appCreateDSLErrorTitle": "Niezgodność wersji", + "appCreateDSLErrorPart4": "Wersja DSL obsługiwana przez system:", + "appCreateDSLErrorPart1": "Wykryto istotną różnicę w wersjach DSL. Wymuszenie importu może spowodować nieprawidłowe działanie aplikacji.", + "noTemplateFoundTip": "Spróbuj wyszukać za pomocą różnych słów kluczowych.", + "noAppsFound": "Nie znaleziono aplikacji", + "foundResults": "{{count}} Wyniki", + "noTemplateFound": "Nie znaleziono szablonów", + "chatbotUserDescription": "Szybko zbuduj chatbota opartego na LLM z prostą konfiguracją. Możesz przełączyć się na Chatflow później.", + "optional": "Fakultatywny", + "workflowUserDescription": "Twórz autonomiczne przepływy AI wizualnie, z prostotą przeciągnij i upuść.", + "completionUserDescription": "Szybko zbuduj asystenta AI do zadań generowania tekstu za pomocą prostej konfiguracji.", + "forBeginners": "Prostsze typy aplikacji", + "agentShortDescription": "Inteligentny agent z rozumowaniem i autonomicznym wykorzystaniem narzędzi", + "completionShortDescription": "Asystent AI do zadań generowania tekstu", + "noIdeaTip": "Nie masz pomysłów? Sprawdź nasze szablony", + "forAdvanced": "DLA ZAAWANSOWANYCH UŻYTKOWNIKÓW", + "foundResult": "{{count}} Wynik", + "advancedShortDescription": "Przepływ ulepszony dla wieloturowych czatów", + "learnMore": "Dowiedz się więcej", + "chatbotShortDescription": "Chatbot oparty na LLM z prostą konfiguracją", + "chooseAppType": "Wybierz typ aplikacji", + "agentUserDescription": "Inteligentny agent zdolny do iteracyjnego wnioskowania i autonomicznego wykorzystania narzędzi do osiągania celów zadań.", + "workflowShortDescription": "Agentowy przepływ dla inteligentnych automatyzacji", + "advancedUserDescription": "Przepływ z dodatkowymi funkcjami pamięci i interfejsem chatbota.", + "dropDSLToCreateApp": "Upuść plik DSL tutaj, aby utworzyć aplikację", + "import": "Import" + }, + "editApp": "Edytuj informacje", + "editAppTitle": "Edytuj informacje o aplikacji", + "editDone": "Informacje o aplikacji zaktualizowane", + "editFailed": "Nie udało się zaktualizować informacji o aplikacji", + "iconPicker": { + "ok": "OK", + "cancel": "Anuluj", + "emoji": "Emoji", + "image": "Obraz" + }, + "switch": "Przełącz na Orkiestrację Przepływu Pracy", + "switchTipStart": "Dla ciebie zostanie utworzona nowa kopia aplikacji, a nowa kopia przełączy się na Orkiestrację Przepływu Pracy. Nowa kopia będzie ", + "switchTip": "nie pozwoli", + "switchTipEnd": " na powrót do Podstawowej Orkiestracji.", + "switchLabel": "Kopia aplikacji do utworzenia", + "removeOriginal": "Usuń oryginalną aplikację", + "switchStart": "Rozpocznij przełączanie", + "typeSelector": { + "all": "WSZYSTKIE Typy", + "chatbot": "Chatbot", + "agent": "Agent", + "workflow": "Przepływ pracy", + "completion": "Zakończenie", + "advanced": "Przepływ czatu" + }, + "tracing": { + "title": "Śledzenie wydajności aplikacji", + "description": "Konfiguracja zewnętrznego dostawcy LLMOps i śledzenie wydajności aplikacji.", + "config": "Konfiguruj", + "collapse": "Zwiń", + "expand": "Rozwiń", + "tracing": "Śledzenie", + "disabled": "Wyłączone", + "disabledTip": "Najpierw skonfiguruj dostawcę", + "enabled": "W użyciu", + "tracingDescription": "Przechwytywanie pełnego kontekstu wykonania aplikacji, w tym wywołań LLM, kontekstu, promptów, żądań HTTP i więcej, do platformy śledzenia stron trzecich.", + "configProviderTitle": { + "configured": "Skonfigurowano", + "notConfigured": "Skonfiguruj dostawcę, aby włączyć śledzenie", + "moreProvider": "Więcej dostawców" + }, + "arize": { + "title": "Arize", + "description": "Obserwowalność LLM klasy korporacyjnej, ocena online i offline, monitorowanie i eksperymentowanie — oparta na OpenTelemetry. Zaprojektowana specjalnie dla aplikacji opartych na LLM i agentach." + }, + "phoenix": { + "title": "Phoenix", + "description": "Otwarta i oparta na OpenTelemetry platforma do obserwowalności, oceny, inżynierii promptów i eksperymentowania dla Twoich przepływów pracy i agentów LLM." + }, + "langsmith": { + "title": "LangSmith", + "description": "Kompleksowa platforma deweloperska dla każdego etapu cyklu życia aplikacji opartej na LLM." + }, + "langfuse": { + "title": "Langfuse", + "description": "Śledzenie, oceny, zarządzanie promptami i metryki do debugowania i ulepszania twojej aplikacji LLM." + }, + "inUse": "W użyciu", + "configProvider": { + "title": "Konfiguruj ", + "placeholder": "Wprowadź swój {{key}}", + "project": "Projekt", + "publicKey": "Klucz publiczny", + "secretKey": "Klucz tajny", + "viewDocsLink": "Zobacz dokumentację {{key}}", + "removeConfirmTitle": "Usunąć konfigurację {{key}}?", + "removeConfirmContent": "Obecna konfiguracja jest w użyciu, jej usunięcie wyłączy funkcję Śledzenia.", + "password": "Hasło", + "experimentId": "ID eksperymentu", + "username": "Nazwa użytkownika", + "trackingUri": "Śledzenie URI", + "clientId": "ID klienta OAuth", + "personalAccessToken": "Osobisty token dostępu (stary)", + "clientSecret": "Sekretny klucz klienta OAuth", + "databricksHost": "Adres URL obszaru roboczego Databricks" + }, + "view": "Widok", + "opik": { + "description": "Opik to platforma typu open source do oceny, testowania i monitorowania aplikacji LLM.", + "title": "Opik" + }, + "weave": { + "title": "Tkaj", + "description": "Weave to platforma open-source do oceny, testowania i monitorowania aplikacji LLM." + }, + "aliyun": { + "title": "Monitor Chmury", + "description": "W pełni zarządzana i wolna od konserwacji platforma obserwowalności oferowana przez Alibaba Cloud umożliwia gotowe monitorowanie, śledzenie i oceny aplikacji Dify." + }, + "mlflow": { + "title": "MLflow", + "description": "Platforma LLMOps open source do śledzenia eksperymentów, obserwowalności i oceny, aby tworzyć aplikacje AI/LLM z pewnością." + }, + "databricks": { + "title": "Databricks", + "description": "Databricks oferuje w pełni zarządzany MLflow z silną kontrolą i bezpieczeństwem do przechowywania danych śledzenia." + }, + "tencent": { + "title": "Tencent APM", + "description": "Tencent Application Performance Monitoring zapewnia kompleksowe śledzenie i wielowymiarową analizę dla aplikacji LLM." + } + }, + "answerIcon": { + "description": "Czy w aplikacji udostępnionej ma być używana ikona aplikacji internetowej do zamiany 🤖.", + "title": "Użyj ikony web app, aby zastąpić 🤖", + "descriptionInExplore": "Czy używać ikony aplikacji internetowej do zastępowania 🤖 w Eksploruj" + }, + "importFromDSL": "Importowanie z DSL", + "importFromDSLUrl": "Z adresu URL", + "importFromDSLFile": "Z pliku DSL", + "importFromDSLUrlPlaceholder": "Wklej tutaj link DSL", + "dslUploader": { + "button": "Przeciągnij i upuść plik, lub", + "browse": "Przeglądaj" + }, + "mermaid": { + "handDrawn": "Ręcznie rysowane", + "classic": "Klasyczny" + }, + "openInExplore": "Otwieranie w obszarze Eksploruj", + "newAppFromTemplate": { + "sidebar": { + "Recommended": "Zalecane", + "Assistant": "Asystent", + "Writing": "Pismo", + "Programming": "Programowanie", + "Workflow": "Przepływ pracy", + "Agent": "Agent", + "HR": "HR" + }, + "searchAllTemplate": "Przeszukaj wszystkie szablony...", + "byCategories": "WEDŁUG KATEGORII" + }, + "showMyCreatedAppsOnly": "Pokaż tylko moje utworzone aplikacje", + "appSelector": { + "params": "PARAMETRY APLIKACJI", + "noParams": "Nie są potrzebne żadne parametry", + "placeholder": "Wybierz aplikację...", + "label": "Aplikacja" + }, + "structOutput": { + "structured": "Ustrukturyzowany", + "LLMResponse": "Odpowiedź LLM", + "notConfiguredTip": "Strukturalne wyjście nie zostało jeszcze skonfigurowane", + "structuredTip": "Strukturalne wyniki to funkcja, która zapewnia, że model zawsze generuje odpowiedzi zgodne z dostarczonym schematem JSON.", + "moreFillTip": "Pokazując maksymalnie 10 poziomów zagnieżdżenia", + "configure": "Konfiguruj", + "required": "Wymagane", + "modelNotSupported": "Model nie jest obsługiwany", + "modelNotSupportedTip": "Aktualny model nie obsługuje tej funkcji i zostaje automatycznie obniżony do wstrzyknięcia zapytania." + }, + "accessItemsDescription": { + "anyone": "Każdy może uzyskać dostęp do aplikacji webowej", + "specific": "Tylko określone grupy lub członkowie mogą uzyskać dostęp do aplikacji internetowej", + "organization": "Każdy w organizacji ma dostęp do aplikacji internetowej.", + "external": "Tylko uwierzytelnieni zewnętrzni użytkownicy mogą uzyskać dostęp do aplikacji internetowej." + }, + "accessControlDialog": { + "accessItems": { + "anyone": "Każdy z linkiem", + "specific": "Specyficzne grupy lub członkowie", + "organization": "Tylko członkowie w obrębie przedsiębiorstwa", + "external": "Uwierzytelnieni użytkownicy zewnętrzni" + }, + "operateGroupAndMember": { + "searchPlaceholder": "Szukaj grup i członków", + "allMembers": "Wszyscy członkowie", + "expand": "Rozszerz", + "noResult": "Brak wyniku" + }, + "title": "Kontrola dostępu do aplikacji internetowej", + "description": "Ustaw uprawnienia dostępu do aplikacji webowej", + "accessLabel": "Kto ma dostęp", + "groups_one": "{{count}} GRUPA", + "groups_other": "{{count}} GRUPY", + "members_one": "{{count}} CZŁONEK", + "members_other": "{{count}} CZŁONKÓW", + "noGroupsOrMembers": "Nie wybrano żadnych grup ani członków", + "webAppSSONotEnabledTip": "Proszę skontaktować się z administratorem przedsiębiorstwa, aby skonfigurować metodę uwierzytelniania aplikacji internetowej.", + "updateSuccess": "Aktualizacja powiodła się" + }, + "publishApp": { + "title": "Kto ma dostęp do aplikacji internetowej", + "notSet": "Nie ustawiono", + "notSetDesc": "Obecnie nikt nie może uzyskać dostępu do aplikacji internetowej. Proszę ustawić uprawnienia." + }, + "accessControl": "Kontrola dostępu do aplikacji internetowej", + "noAccessPermission": "Brak uprawnień do dostępu do aplikacji internetowej", + "maxActiveRequests": "Maksymalne równoczesne żądania", + "maxActiveRequestsPlaceholder": "Wprowadź 0, aby uzyskać nielimitowane", + "maxActiveRequestsTip": "Maksymalna liczba jednoczesnych aktywnych żądań na aplikację (0 dla nieograniczonej)", + "gotoAnything": { + "actions": { + "searchPlugins": "Szukaj wtyczek", + "searchWorkflowNodesHelp": "Ta funkcja działa tylko podczas wyświetlania przepływu pracy. Najpierw przejdź do przepływu pracy.", + "searchApplicationsDesc": "Wyszukiwanie aplikacji i przechodzenie do nich", + "searchPluginsDesc": "Wyszukiwanie i przechodzenie do wtyczek", + "searchApplications": "Szukaj aplikacji", + "searchKnowledgeBasesDesc": "Wyszukiwanie i przechodzenie do baz wiedzy", + "searchWorkflowNodesDesc": "Znajdowanie węzłów w bieżącym przepływie pracy i przechodzenie do nich według nazwy lub typu", + "searchKnowledgeBases": "Szukaj w bazach wiedzy", + "searchWorkflowNodes": "Wyszukiwanie węzłów przepływu pracy", + "themeSystem": "Motyw systemu", + "themeCategoryTitle": "Temat", + "languageCategoryTitle": "Język", + "themeDark": "Ciemny motyw", + "runTitle": "Polecenia", + "themeLight": "Jasny motyw", + "themeCategoryDesc": "Zmień motyw aplikacji", + "languageCategoryDesc": "Zmień język interfejsu", + "themeDarkDesc": "Użyj ciemnego wyglądu", + "themeLightDesc": "Użyj jasnego wyglądu", + "languageChangeDesc": "Zmień język interfejsu", + "themeSystemDesc": "Podążaj za wyglądem swojego systemu operacyjnego", + "runDesc": "Uruchom szybkie polecenia (motyw, język, ...)", + "slashDesc": "Wykonuj polecenia takie jak /theme, /lang", + "communityDesc": "Otwarta społeczność Discord", + "docDesc": "Otwórz dokumentację pomocy", + "accountDesc": "Przejdź do strony konta", + "feedbackDesc": "Otwarte dyskusje na temat opinii społeczności", + "zenTitle": "Zen Mode", + "zenDesc": "Toggle canvas focus mode" + }, + "emptyState": { + "noAppsFound": "Nie znaleziono aplikacji", + "noKnowledgeBasesFound": "Nie znaleziono baz wiedzy", + "noWorkflowNodesFound": "Nie znaleziono węzłów przepływu pracy", + "noPluginsFound": "Nie znaleziono wtyczek", + "tryDifferentTerm": "Spróbuj innego terminu wyszukiwania lub usuń filtr {{mode}}", + "trySpecificSearch": "Spróbuj {{shortcuts}} dla konkretnych wyszukiwań" + }, + "groups": { + "apps": "Aplikacje", + "workflowNodes": "Węzły przepływu pracy", + "knowledgeBases": "Bazy wiedzy", + "plugins": "Wtyczki", + "commands": "Polecenia" + }, + "useAtForSpecific": "Użyj @ dla określonych typów", + "searchPlaceholder": "Wyszukaj lub wpisz @ dla poleceń...", + "searching": "Wyszukiwanie...", + "noResults": "Nie znaleziono wyników", + "searchTitle": "Szukaj czegokolwiek", + "someServicesUnavailable": "Niektóre usługi wyszukiwania są niedostępne", + "clearToSearchAll": "Wyczyść @, aby przeszukać wszystko", + "searchTemporarilyUnavailable": "Wyszukiwanie chwilowo niedostępne", + "servicesUnavailableMessage": "W przypadku niektórych usług wyszukiwania mogą występować problemy. Spróbuj ponownie za chwilę.", + "searchFailed": "Wyszukiwanie nie powiodło się", + "searchHint": "Zacznij pisać, aby natychmiast wszystko przeszukać", + "commandHint": "Wpisz @, aby przeglądać według kategorii", + "selectSearchType": "Wybierz, czego chcesz szukać", + "resultCount": "{{count}} wynik", + "resultCount_other": "{{count}} wyników", + "inScope": "w {{scope}}s", + "noMatchingCommands": "Nie znaleziono pasujących poleceń", + "tryDifferentSearch": "Spróbuj użyć innego hasła", + "slashHint": "Wpisz / aby zobaczyć wszystkie dostępne polecenia", + "selectToNavigate": "Wybierz, aby nawigować", + "tips": "Naciśnij ↑↓, aby nawigować", + "startTyping": "Zacznij pisać, aby wyszukać", + "pressEscToClose": "Naciśnij ESC, aby zamknąć" + }, + "notPublishedYet": "Aplikacja nie została jeszcze opublikowana", + "noUserInputNode": "Brak węzła wejściowego użytkownika" +} diff --git a/web/i18n/pl-PL/app.ts b/web/i18n/pl-PL/app.ts deleted file mode 100644 index 4060e1c564..0000000000 --- a/web/i18n/pl-PL/app.ts +++ /dev/null @@ -1,352 +0,0 @@ -const translation = { - createApp: 'UTWÓRZ APLIKACJĘ', - types: { - all: 'Wszystkie', - chatbot: 'Chatbot', - agent: 'Agent', - workflow: 'Przepływ pracy', - completion: 'Zakończenie', - advanced: 'Przepływ czatu', - basic: 'Podstawowy', - }, - duplicate: 'Duplikuj', - duplicateTitle: 'Duplikuj aplikację', - export: 'Eksportuj DSL', - exportFailed: 'Eksport DSL nie powiódł się.', - importDSL: 'Importuj plik DSL', - createFromConfigFile: 'Utwórz z pliku DSL', - deleteAppConfirmTitle: 'Usunąć tę aplikację?', - deleteAppConfirmContent: - 'Usunięcie aplikacji jest nieodwracalne. Użytkownicy nie będą mieli już dostępu do twojej aplikacji, a wszystkie konfiguracje monitów i dzienniki zostaną trwale usunięte.', - appDeleted: 'Aplikacja usunięta', - appDeleteFailed: 'Nie udało się usunąć aplikacji', - join: 'Dołącz do społeczności', - communityIntro: - 'Dyskutuj z członkami zespołu, współtwórcami i deweloperami na różnych kanałach.', - roadmap: 'Zobacz naszą mapę drogową', - newApp: { - startFromBlank: 'Utwórz od podstaw', - startFromTemplate: 'Utwórz z szablonu', - workflowWarning: 'Obecnie w fazie beta', - captionName: 'Ikona i nazwa aplikacji', - appNamePlaceholder: 'Podaj nazwę swojej aplikacji', - captionDescription: 'Opis', - appDescriptionPlaceholder: 'Wprowadź opis aplikacji', - useTemplate: 'Użyj tego szablonu', - previewDemo: 'Podgląd demo', - chatApp: 'Asystent', - chatAppIntro: - 'Chcę zbudować aplikację opartą na czacie. Ta aplikacja używa formatu pytań i odpowiedzi, umożliwiając wielokrotne rundy ciągłej konwersacji.', - agentAssistant: 'Nowy asystent agenta', - completeApp: 'Generator tekstu', - completeAppIntro: - 'Chcę stworzyć aplikację, która generuje teksty wysokiej jakości na podstawie monitów, takich jak generowanie artykułów, streszczeń, tłumaczeń i innych.', - showTemplates: 'Chcę wybrać z szablonu', - hideTemplates: 'Wróć do wyboru trybu', - Create: 'Utwórz', - Cancel: 'Anuluj', - nameNotEmpty: 'Nazwa nie może być pusta', - appTemplateNotSelected: 'Proszę wybrać szablon', - appTypeRequired: 'Proszę wybrać typ aplikacji', - appCreated: 'Aplikacja utworzona', - appCreateFailed: 'Nie udało się utworzyć aplikacji', - appCreateDSLErrorPart3: 'Aktualna wersja aplikacji DSL:', - appCreateDSLErrorPart2: 'Czy chcesz kontynuować?', - Confirm: 'Potwierdzić', - caution: 'Ostrożność', - appCreateDSLWarning: 'Przestroga: Różnica w wersji DSL może mieć wpływ na niektóre funkcje', - appCreateDSLErrorTitle: 'Niezgodność wersji', - appCreateDSLErrorPart4: 'Wersja DSL obsługiwana przez system:', - appCreateDSLErrorPart1: 'Wykryto istotną różnicę w wersjach DSL. Wymuszenie importu może spowodować nieprawidłowe działanie aplikacji.', - noTemplateFoundTip: 'Spróbuj wyszukać za pomocą różnych słów kluczowych.', - noAppsFound: 'Nie znaleziono aplikacji', - foundResults: '{{count}} Wyniki', - noTemplateFound: 'Nie znaleziono szablonów', - chatbotUserDescription: 'Szybko zbuduj chatbota opartego na LLM z prostą konfiguracją. Możesz przełączyć się na Chatflow później.', - optional: 'Fakultatywny', - workflowUserDescription: 'Twórz autonomiczne przepływy AI wizualnie, z prostotą przeciągnij i upuść.', - completionUserDescription: 'Szybko zbuduj asystenta AI do zadań generowania tekstu za pomocą prostej konfiguracji.', - forBeginners: 'Prostsze typy aplikacji', - agentShortDescription: 'Inteligentny agent z rozumowaniem i autonomicznym wykorzystaniem narzędzi', - completionShortDescription: 'Asystent AI do zadań generowania tekstu', - noIdeaTip: 'Nie masz pomysłów? Sprawdź nasze szablony', - forAdvanced: 'DLA ZAAWANSOWANYCH UŻYTKOWNIKÓW', - foundResult: '{{count}} Wynik', - advancedShortDescription: 'Przepływ ulepszony dla wieloturowych czatów', - learnMore: 'Dowiedz się więcej', - chatbotShortDescription: 'Chatbot oparty na LLM z prostą konfiguracją', - chooseAppType: 'Wybierz typ aplikacji', - agentUserDescription: 'Inteligentny agent zdolny do iteracyjnego wnioskowania i autonomicznego wykorzystania narzędzi do osiągania celów zadań.', - workflowShortDescription: 'Agentowy przepływ dla inteligentnych automatyzacji', - advancedUserDescription: 'Przepływ z dodatkowymi funkcjami pamięci i interfejsem chatbota.', - dropDSLToCreateApp: 'Upuść plik DSL tutaj, aby utworzyć aplikację', - import: 'Import', - }, - editApp: 'Edytuj informacje', - editAppTitle: 'Edytuj informacje o aplikacji', - editDone: 'Informacje o aplikacji zaktualizowane', - editFailed: 'Nie udało się zaktualizować informacji o aplikacji', - iconPicker: { - ok: 'OK', - cancel: 'Anuluj', - emoji: 'Emoji', - image: 'Obraz', - }, - switch: 'Przełącz na Orkiestrację Przepływu Pracy', - switchTipStart: - 'Dla ciebie zostanie utworzona nowa kopia aplikacji, a nowa kopia przełączy się na Orkiestrację Przepływu Pracy. Nowa kopia będzie ', - switchTip: 'nie pozwoli', - switchTipEnd: ' na powrót do Podstawowej Orkiestracji.', - switchLabel: 'Kopia aplikacji do utworzenia', - removeOriginal: 'Usuń oryginalną aplikację', - switchStart: 'Rozpocznij przełączanie', - typeSelector: { - all: 'WSZYSTKIE Typy', - chatbot: 'Chatbot', - agent: 'Agent', - workflow: 'Przepływ pracy', - completion: 'Zakończenie', - advanced: 'Przepływ czatu', - }, - tracing: { - title: 'Śledzenie wydajności aplikacji', - description: 'Konfiguracja zewnętrznego dostawcy LLMOps i śledzenie wydajności aplikacji.', - config: 'Konfiguruj', - collapse: 'Zwiń', - expand: 'Rozwiń', - tracing: 'Śledzenie', - disabled: 'Wyłączone', - disabledTip: 'Najpierw skonfiguruj dostawcę', - enabled: 'W użyciu', - tracingDescription: 'Przechwytywanie pełnego kontekstu wykonania aplikacji, w tym wywołań LLM, kontekstu, promptów, żądań HTTP i więcej, do platformy śledzenia stron trzecich.', - configProviderTitle: { - configured: 'Skonfigurowano', - notConfigured: 'Skonfiguruj dostawcę, aby włączyć śledzenie', - moreProvider: 'Więcej dostawców', - }, - arize: { - title: 'Arize', - description: 'Obserwowalność LLM klasy korporacyjnej, ocena online i offline, monitorowanie i eksperymentowanie — oparta na OpenTelemetry. Zaprojektowana specjalnie dla aplikacji opartych na LLM i agentach.', - }, - phoenix: { - title: 'Phoenix', - description: 'Otwarta i oparta na OpenTelemetry platforma do obserwowalności, oceny, inżynierii promptów i eksperymentowania dla Twoich przepływów pracy i agentów LLM.', - }, - langsmith: { - title: 'LangSmith', - description: 'Kompleksowa platforma deweloperska dla każdego etapu cyklu życia aplikacji opartej na LLM.', - }, - langfuse: { - title: 'Langfuse', - description: 'Śledzenie, oceny, zarządzanie promptami i metryki do debugowania i ulepszania twojej aplikacji LLM.', - }, - inUse: 'W użyciu', - configProvider: { - title: 'Konfiguruj ', - placeholder: 'Wprowadź swój {{key}}', - project: 'Projekt', - publicKey: 'Klucz publiczny', - secretKey: 'Klucz tajny', - viewDocsLink: 'Zobacz dokumentację {{key}}', - removeConfirmTitle: 'Usunąć konfigurację {{key}}?', - removeConfirmContent: 'Obecna konfiguracja jest w użyciu, jej usunięcie wyłączy funkcję Śledzenia.', - password: 'Hasło', - experimentId: 'ID eksperymentu', - username: 'Nazwa użytkownika', - trackingUri: 'Śledzenie URI', - clientId: 'ID klienta OAuth', - personalAccessToken: 'Osobisty token dostępu (stary)', - clientSecret: 'Sekretny klucz klienta OAuth', - databricksHost: 'Adres URL obszaru roboczego Databricks', - }, - view: 'Widok', - opik: { - description: 'Opik to platforma typu open source do oceny, testowania i monitorowania aplikacji LLM.', - title: 'Opik', - }, - weave: { - title: 'Tkaj', - description: 'Weave to platforma open-source do oceny, testowania i monitorowania aplikacji LLM.', - }, - aliyun: { - title: 'Monitor Chmury', - description: 'W pełni zarządzana i wolna od konserwacji platforma obserwowalności oferowana przez Alibaba Cloud umożliwia gotowe monitorowanie, śledzenie i oceny aplikacji Dify.', - }, - mlflow: { - title: 'MLflow', - description: 'Platforma LLMOps open source do śledzenia eksperymentów, obserwowalności i oceny, aby tworzyć aplikacje AI/LLM z pewnością.', - }, - databricks: { - title: 'Databricks', - description: 'Databricks oferuje w pełni zarządzany MLflow z silną kontrolą i bezpieczeństwem do przechowywania danych śledzenia.', - }, - tencent: { - title: 'Tencent APM', - description: 'Tencent Application Performance Monitoring zapewnia kompleksowe śledzenie i wielowymiarową analizę dla aplikacji LLM.', - }, - }, - answerIcon: { - description: 'Czy w aplikacji udostępnionej ma być używana ikona aplikacji internetowej do zamiany 🤖.', - title: 'Użyj ikony web app, aby zastąpić 🤖', - descriptionInExplore: 'Czy używać ikony aplikacji internetowej do zastępowania 🤖 w Eksploruj', - }, - importFromDSL: 'Importowanie z DSL', - importFromDSLUrl: 'Z adresu URL', - importFromDSLFile: 'Z pliku DSL', - importFromDSLUrlPlaceholder: 'Wklej tutaj link DSL', - dslUploader: { - button: 'Przeciągnij i upuść plik, lub', - browse: 'Przeglądaj', - }, - mermaid: { - handDrawn: 'Ręcznie rysowane', - classic: 'Klasyczny', - }, - openInExplore: 'Otwieranie w obszarze Eksploruj', - newAppFromTemplate: { - sidebar: { - Recommended: 'Zalecane', - Assistant: 'Asystent', - Writing: 'Pismo', - Programming: 'Programowanie', - Workflow: 'Przepływ pracy', - Agent: 'Agent', - HR: 'HR', - }, - searchAllTemplate: 'Przeszukaj wszystkie szablony...', - byCategories: 'WEDŁUG KATEGORII', - }, - showMyCreatedAppsOnly: 'Pokaż tylko moje utworzone aplikacje', - appSelector: { - params: 'PARAMETRY APLIKACJI', - noParams: 'Nie są potrzebne żadne parametry', - placeholder: 'Wybierz aplikację...', - label: 'Aplikacja', - }, - structOutput: { - structured: 'Ustrukturyzowany', - LLMResponse: 'Odpowiedź LLM', - notConfiguredTip: 'Strukturalne wyjście nie zostało jeszcze skonfigurowane', - structuredTip: 'Strukturalne wyniki to funkcja, która zapewnia, że model zawsze generuje odpowiedzi zgodne z dostarczonym schematem JSON.', - moreFillTip: 'Pokazując maksymalnie 10 poziomów zagnieżdżenia', - configure: 'Konfiguruj', - required: 'Wymagane', - modelNotSupported: 'Model nie jest obsługiwany', - modelNotSupportedTip: 'Aktualny model nie obsługuje tej funkcji i zostaje automatycznie obniżony do wstrzyknięcia zapytania.', - }, - accessItemsDescription: { - anyone: 'Każdy może uzyskać dostęp do aplikacji webowej', - specific: 'Tylko określone grupy lub członkowie mogą uzyskać dostęp do aplikacji internetowej', - organization: 'Każdy w organizacji ma dostęp do aplikacji internetowej.', - external: 'Tylko uwierzytelnieni zewnętrzni użytkownicy mogą uzyskać dostęp do aplikacji internetowej.', - }, - accessControlDialog: { - accessItems: { - anyone: 'Każdy z linkiem', - specific: 'Specyficzne grupy lub członkowie', - organization: 'Tylko członkowie w obrębie przedsiębiorstwa', - external: 'Uwierzytelnieni użytkownicy zewnętrzni', - }, - operateGroupAndMember: { - searchPlaceholder: 'Szukaj grup i członków', - allMembers: 'Wszyscy członkowie', - expand: 'Rozszerz', - noResult: 'Brak wyniku', - }, - title: 'Kontrola dostępu do aplikacji internetowej', - description: 'Ustaw uprawnienia dostępu do aplikacji webowej', - accessLabel: 'Kto ma dostęp', - groups_one: '{{count}} GRUPA', - groups_other: '{{count}} GRUPY', - members_one: '{{count}} CZŁONEK', - members_other: '{{count}} CZŁONKÓW', - noGroupsOrMembers: 'Nie wybrano żadnych grup ani członków', - webAppSSONotEnabledTip: 'Proszę skontaktować się z administratorem przedsiębiorstwa, aby skonfigurować metodę uwierzytelniania aplikacji internetowej.', - updateSuccess: 'Aktualizacja powiodła się', - }, - publishApp: { - title: 'Kto ma dostęp do aplikacji internetowej', - notSet: 'Nie ustawiono', - notSetDesc: 'Obecnie nikt nie może uzyskać dostępu do aplikacji internetowej. Proszę ustawić uprawnienia.', - }, - accessControl: 'Kontrola dostępu do aplikacji internetowej', - noAccessPermission: 'Brak uprawnień do dostępu do aplikacji internetowej', - maxActiveRequests: 'Maksymalne równoczesne żądania', - maxActiveRequestsPlaceholder: 'Wprowadź 0, aby uzyskać nielimitowane', - maxActiveRequestsTip: 'Maksymalna liczba jednoczesnych aktywnych żądań na aplikację (0 dla nieograniczonej)', - gotoAnything: { - actions: { - searchPlugins: 'Szukaj wtyczek', - searchWorkflowNodesHelp: 'Ta funkcja działa tylko podczas wyświetlania przepływu pracy. Najpierw przejdź do przepływu pracy.', - searchApplicationsDesc: 'Wyszukiwanie aplikacji i przechodzenie do nich', - searchPluginsDesc: 'Wyszukiwanie i przechodzenie do wtyczek', - searchApplications: 'Szukaj aplikacji', - searchKnowledgeBasesDesc: 'Wyszukiwanie i przechodzenie do baz wiedzy', - searchWorkflowNodesDesc: 'Znajdowanie węzłów w bieżącym przepływie pracy i przechodzenie do nich według nazwy lub typu', - searchKnowledgeBases: 'Szukaj w bazach wiedzy', - searchWorkflowNodes: 'Wyszukiwanie węzłów przepływu pracy', - themeSystem: 'Motyw systemu', - themeCategoryTitle: 'Temat', - languageCategoryTitle: 'Język', - themeDark: 'Ciemny motyw', - runTitle: 'Polecenia', - themeLight: 'Jasny motyw', - themeCategoryDesc: 'Zmień motyw aplikacji', - languageCategoryDesc: 'Zmień język interfejsu', - themeDarkDesc: 'Użyj ciemnego wyglądu', - themeLightDesc: 'Użyj jasnego wyglądu', - languageChangeDesc: 'Zmień język interfejsu', - themeSystemDesc: 'Podążaj za wyglądem swojego systemu operacyjnego', - runDesc: 'Uruchom szybkie polecenia (motyw, język, ...)', - slashDesc: 'Wykonuj polecenia takie jak /theme, /lang', - communityDesc: 'Otwarta społeczność Discord', - docDesc: 'Otwórz dokumentację pomocy', - accountDesc: 'Przejdź do strony konta', - feedbackDesc: 'Otwarte dyskusje na temat opinii społeczności', - zenTitle: 'Zen Mode', - zenDesc: 'Toggle canvas focus mode', - }, - emptyState: { - noAppsFound: 'Nie znaleziono aplikacji', - noKnowledgeBasesFound: 'Nie znaleziono baz wiedzy', - noWorkflowNodesFound: 'Nie znaleziono węzłów przepływu pracy', - noPluginsFound: 'Nie znaleziono wtyczek', - tryDifferentTerm: 'Spróbuj innego terminu wyszukiwania lub usuń filtr {{mode}}', - trySpecificSearch: 'Spróbuj {{shortcuts}} dla konkretnych wyszukiwań', - }, - groups: { - apps: 'Aplikacje', - workflowNodes: 'Węzły przepływu pracy', - knowledgeBases: 'Bazy wiedzy', - plugins: 'Wtyczki', - commands: 'Polecenia', - }, - useAtForSpecific: 'Użyj @ dla określonych typów', - searchPlaceholder: 'Wyszukaj lub wpisz @ dla poleceń...', - searching: 'Wyszukiwanie...', - noResults: 'Nie znaleziono wyników', - searchTitle: 'Szukaj czegokolwiek', - someServicesUnavailable: 'Niektóre usługi wyszukiwania są niedostępne', - clearToSearchAll: 'Wyczyść @, aby przeszukać wszystko', - searchTemporarilyUnavailable: 'Wyszukiwanie chwilowo niedostępne', - servicesUnavailableMessage: 'W przypadku niektórych usług wyszukiwania mogą występować problemy. Spróbuj ponownie za chwilę.', - searchFailed: 'Wyszukiwanie nie powiodło się', - searchHint: 'Zacznij pisać, aby natychmiast wszystko przeszukać', - commandHint: 'Wpisz @, aby przeglądać według kategorii', - selectSearchType: 'Wybierz, czego chcesz szukać', - resultCount: '{{count}} wynik', - resultCount_other: '{{count}} wyników', - inScope: 'w {{scope}}s', - noMatchingCommands: 'Nie znaleziono pasujących poleceń', - tryDifferentSearch: 'Spróbuj użyć innego hasła', - slashHint: 'Wpisz / aby zobaczyć wszystkie dostępne polecenia', - selectToNavigate: 'Wybierz, aby nawigować', - tips: 'Naciśnij ↑↓, aby nawigować', - startTyping: 'Zacznij pisać, aby wyszukać', - pressEscToClose: 'Naciśnij ESC, aby zamknąć', - }, - notPublishedYet: 'Aplikacja nie została jeszcze opublikowana', - noUserInputNode: 'Brak węzła wejściowego użytkownika', -} - -export default translation diff --git a/web/i18n/pl-PL/billing.json b/web/i18n/pl-PL/billing.json new file mode 100644 index 0000000000..00d7fad47e --- /dev/null +++ b/web/i18n/pl-PL/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "Obecny plan", + "upgradeBtn": { + "plain": "Ulepsz plan", + "encourage": "Ulepsz teraz", + "encourageShort": "Ulepsz" + }, + "viewBilling": "Zarządzaj rozliczeniami i subskrypcjami", + "buyPermissionDeniedTip": "Skontaktuj się z administratorem swojej firmy, aby zasubskrybować", + "plansCommon": { + "yearlyTip": "Otrzymaj 2 miesiące za darmo, subskrybując rocznie!", + "mostPopular": "Najpopularniejszy", + "planRange": { + "monthly": "Miesięczny", + "yearly": "Roczny" + }, + "month": "miesiąc", + "year": "rok", + "save": "Oszczędź ", + "free": "Darmowy", + "currentPlan": "Obecny plan", + "contractSales": "Skontaktuj się z działem sprzedaży", + "contractOwner": "Skontaktuj się z zarządcą zespołu", + "startForFree": "Zacznij za darmo", + "contactSales": "Kontakt z działem sprzedaży", + "talkToSales": "Porozmawiaj z działem sprzedaży", + "modelProviders": "Dostawcy modeli", + "buildApps": "Twórz aplikacje", + "vectorSpace": "Przestrzeń wektorowa", + "vectorSpaceTooltip": "Przestrzeń wektorowa jest systemem pamięci długoterminowej wymaganym dla LLM, aby zrozumieć Twoje dane.", + "documentProcessingPriority": "Priorytet przetwarzania dokumentów", + "documentProcessingPriorityTip": "Aby uzyskać wyższy priorytet przetwarzania dokumentów, zaktualizuj swój plan.", + "documentProcessingPriorityUpgrade": "Przetwarzaj więcej danych z większą dokładnością i w szybszym tempie.", + "priority": { + "standard": "Standardowy", + "priority": "Priorytetowy", + "top-priority": "Najwyższy priorytet" + }, + "logsHistory": "Historia logów", + "customTools": "Niestandardowe narzędzia", + "unavailable": "Niedostępne", + "days": "dni", + "unlimited": "Nieograniczony", + "support": "Wsparcie", + "supportItems": { + "communityForums": "Forum społecznościowe", + "emailSupport": "Wsparcie mailowe", + "priorityEmail": "Priorytetowa pomoc mailowa i czat", + "logoChange": "Zmiana logo", + "SSOAuthentication": "Uwierzytelnianie SSO", + "personalizedSupport": "Personalizowane wsparcie", + "dedicatedAPISupport": "Dedykowane wsparcie API", + "customIntegration": "Niestandardowa integracja i wsparcie", + "ragAPIRequest": "Żądania API RAG", + "bulkUpload": "Masowe przesyłanie dokumentów", + "agentMode": "Tryb agenta", + "workflow": "Przepływ pracy", + "llmLoadingBalancing": "Równoważenie obciążenia LLM", + "llmLoadingBalancingTooltip": "Dodaj wiele kluczy API do modeli, skutecznie omijając limity szybkości interfejsu API." + }, + "comingSoon": "Wkrótce dostępne", + "member": "Członek", + "memberAfter": "Członek", + "messageRequest": { + "title": "Limity kredytów wiadomości", + "tooltip": "Limity wywołań wiadomości dla różnych planów używających modeli OpenAI (z wyjątkiem gpt4). Wiadomości przekraczające limit będą korzystać z twojego klucza API OpenAI.", + "titlePerMonth": "{{count,number}} wiadomości/miesiąc" + }, + "annotatedResponse": { + "title": "Limity kredytów na adnotacje", + "tooltip": "Ręczna edycja i adnotacja odpowiedzi zapewniają możliwość dostosowania wysokiej jakości odpowiedzi na pytania dla aplikacji. (Stosowane tylko w aplikacjach czatowych)" + }, + "ragAPIRequestTooltip": "Odnosi się do liczby wywołań API wykorzystujących tylko zdolności przetwarzania bazy wiedzy Dify.", + "receiptInfo": "Tylko właściciel zespołu i administrator zespołu mogą subskrybować i przeglądać informacje o rozliczeniach", + "annotationQuota": "Przydział adnotacji", + "documents": "{{count,number}} Dokumentów Wiedzy", + "apiRateLimit": "Limit liczby wywołań API", + "documentsTooltip": "Kwota dotycząca liczby dokumentów importowanych z Źródła Danych Wiedzy.", + "unlimitedApiRate": "Brak limitu liczby zapytań API", + "annualBilling": "Roczne rozliczenie", + "getStarted": "Zacznij", + "freeTrialTip": "bezpłatny okres próbny 200 wywołań OpenAI.", + "comparePlanAndFeatures": "Porównaj plany i funkcje", + "freeTrialTipPrefix": "Zarejestruj się i zdobądź", + "teamMember_other": "{{count,number}} członków zespołu", + "teamWorkspace": "{{count,number}} Zespół Workspace", + "apiRateLimitUnit": "{{count,number}}", + "cloud": "Usługa chmurowa", + "teamMember_one": "{{count,number}} Członek zespołu", + "priceTip": "na przestrzeń roboczą/", + "self": "Samo-hostowane", + "apiRateLimitTooltip": "Limit aktywności API dotyczy wszystkich żądań składanych za pośrednictwem API Dify, w tym generowania tekstu, rozmów czatowych, wykonywania przepływów pracy i przetwarzania dokumentów.", + "freeTrialTipSuffix": "Nie jest wymagana karta kredytowa", + "documentsRequestQuota": "{{count,number}}/min Limit wiedzy na żądanie", + "documentsRequestQuotaTooltip": "Określa całkowitą liczbę działań, jakie przestrzeń robocza może wykonać na minutę w ramach bazy wiedzy, w tym tworzenie zbiorów danych, usuwanie, aktualizacje, przesyłanie dokumentów, modyfikacje, archiwizowanie i zapytania do bazy wiedzy. Ta metryka jest używana do oceny wydajności zapytań do bazy wiedzy. Na przykład, jeśli użytkownik Sandbox wykona 10 kolejnych testów w ciągu jednej minuty, jego przestrzeń robocza zostanie tymczasowo ograniczona w wykonywaniu następujących działań przez następną minutę: tworzenie zbiorów danych, usuwanie, aktualizacje oraz przesyłanie lub modyfikacje dokumentów.", + "startBuilding": "Zacznij budować", + "taxTip": "Wszystkie ceny subskrypcji (miesięczne/roczne) nie obejmują obowiązujących podatków (np. VAT, podatek od sprzedaży).", + "taxTipSecond": "Jeśli w Twoim regionie nie ma obowiązujących przepisów podatkowych, podatek nie pojawi się podczas realizacji zamówienia i nie zostaną naliczone żadne dodatkowe opłaty przez cały okres subskrypcji.", + "triggerEvents": { + "unlimited": "Nieograniczone zdarzenia wyzwalające", + "tooltip": "Liczba zdarzeń, które automatycznie uruchamiają przepływy pracy za pomocą wtyczki, harmonogramu lub wyzwalaczy Webhook.", + "sandbox": "{{count,number}} Wyzwalacze zdarzeń", + "professional": "{{count,number}} Wywołania zdarzeń/miesiąc" + }, + "workflowExecution": { + "standard": "Standardowe wykonywanie przepływu pracy", + "tooltip": "Priorytet i szybkość wykonywania kolejki przepływu pracy.", + "priority": "Wykonywanie przepływu pracy według priorytetu", + "faster": "Szybsze wykonywanie przepływu pracy" + }, + "startNodes": { + "unlimited": "Nieograniczone wyzwalacze/przepływ pracy", + "limited": "Do {{count}} wyzwalaczy/przepływów pracy" + }, + "title": { + "plans": "plany", + "description": "Wybierz plan, który najlepiej odpowiada potrzebom Twojego zespołu." + } + }, + "plans": { + "sandbox": { + "name": "Sandbox", + "description": "200 razy darmowa próba GPT", + "for": "Darmowy okres próbny podstawowych funkcji" + }, + "professional": { + "name": "Profesjonalny", + "description": "Dla osób fizycznych i małych zespołów, aby odblokować więcej mocy w przystępnej cenie.", + "for": "Dla niezależnych deweloperów/małych zespołów" + }, + "team": { + "name": "Zespół", + "description": "Współpracuj bez ograniczeń i ciesz się najwyższą wydajnością.", + "for": "Dla średniej wielkości zespołów" + }, + "enterprise": { + "name": "Przedsiębiorstwo", + "description": "Uzyskaj pełne możliwości i wsparcie dla systemów o kluczowym znaczeniu dla misji.", + "includesTitle": "Wszystko w planie Zespołowym, plus:", + "features": [ + "Rozwiązania wdrożeniowe klasy korporacyjnej, skalowalne", + "Autoryzacja licencji komercyjnej", + "Ekskluzywne funkcje dla przedsiębiorstw", + "Wiele przestrzeni roboczych i zarządzanie przedsiębiorstwem", + "SSO", + "Negocjowane umowy SLA przez partnerów Dify", + "Zaawansowane zabezpieczenia i kontrola", + "Aktualizacje i konserwacja przez Dify oficjalnie", + "Profesjonalne wsparcie techniczne" + ], + "priceTip": "Tylko roczne fakturowanie", + "btnText": "Skontaktuj się z działem sprzedaży", + "for": "Dla dużych zespołów", + "price": "Niestety, nie mogę przetłumaczyć tego tekstu bez konkretnego zdania do przetłumaczenia." + }, + "community": { + "features": [ + "Wszystkie podstawowe funkcje udostępnione w publicznym repozytorium", + "Pojedyncza przestrzeń robocza", + "Zgodne z licencją Dify Open Source" + ], + "includesTitle": "Darmowe funkcje:", + "name": "Społeczność", + "price": "Darmowy", + "description": "Dla użytkowników indywidualnych, małych zespołów lub projektów niekomercyjnych", + "btnText": "Rozpocznij pracę z społecznością", + "for": "Dla użytkowników indywidualnych, małych zespołów lub projektów niekomercyjnych" + }, + "premium": { + "features": [ + "Niezawodność zarządzana samodzielnie przez różnych dostawców chmury", + "Pojedyncza przestrzeń robocza", + "Dostosowywanie logo i marki aplikacji webowej", + "Priorytetowe wsparcie e-mail i czat" + ], + "description": "Dla średnich organizacji i zespołów", + "for": "Dla średnich organizacji i zespołów", + "name": "Premium", + "priceTip": "Oparte na rynku chmurowym", + "btnText": "Uzyskaj premium w", + "price": "Skalowalny", + "comingSoon": "Wsparcie dla Microsoft Azure i Google Cloud wkrótce dostępne", + "includesTitle": "Wszystko z Community, plus:" + } + }, + "vectorSpace": { + "fullTip": "Przestrzeń wektorowa jest pełna.", + "fullSolution": "Ulepsz swój plan, aby uzyskać więcej miejsca." + }, + "apps": { + "fullTip1des": "Osiągnąłeś limit tworzenia aplikacji w tym planie.", + "fullTip1": "Zaktualizuj, aby stworzyć więcej aplikacji", + "fullTip2": "Osiągnięto limit planu", + "contactUs": "Skontaktuj się z nami", + "fullTip2des": "Zaleca się usunięcie nieaktywnych aplikacji, aby zwolnić miejsce, lub skontaktowanie się z nami." + }, + "annotatedResponse": { + "fullTipLine1": "Ulepsz swój plan, aby", + "fullTipLine2": "adnotować więcej rozmów.", + "quotaTitle": "Limit adnotacji odpowiedzi" + }, + "usagePage": { + "vectorSpace": "Magazynowanie danych wiedzy", + "teamMembers": "Członkowie zespołu", + "documentsUploadQuota": "Limit przesyłania dokumentów", + "buildApps": "Twórz aplikacje", + "annotationQuota": "Kwota aneksji", + "vectorSpaceTooltip": "Dokumenty z trybem indeksowania o wysokiej jakości będą zużywać zasoby magazynu danych wiedzy. Gdy magazyn danych wiedzy osiągnie limit, nowe dokumenty nie będą przesyłane.", + "perMonth": "miesięcznie", + "triggerEvents": "Wydarzenia wyzwalające", + "resetsIn": "Resetuje się za {{count,number}} dni" + }, + "teamMembers": "Członkowie zespołu", + "triggerLimitModal": { + "upgrade": "Uaktualnij", + "usageTitle": "WYDARZENIA WYZWALAJĄCE", + "description": "Osiągnąłeś limit wyzwalaczy zdarzeń przepływu pracy dla tego planu.", + "title": "Uaktualnij, aby odblokować więcej zdarzeń wyzwalających", + "dismiss": "Odrzuć" + }, + "viewBillingTitle": "Rozliczenia i subskrypcje", + "viewBillingDescription": "Zarządzaj metodami płatności, fakturami i zmianami subskrypcji", + "viewBillingAction": "Zarządzać", + "upgrade": { + "uploadMultiplePages": { + "title": "Przejdź na wyższą wersję, aby przesyłać wiele dokumentów jednocześnie", + "description": "Osiągnąłeś limit przesyłania — w ramach obecnego planu można wybrać i przesłać tylko jeden dokument naraz." + }, + "uploadMultipleFiles": { + "title": "Uaktualnij, aby odblokować przesyłanie dokumentów wsadowych", + "description": "Przesyłaj wiele dokumentów jednocześnie, aby zaoszczędzić czas i zwiększyć wydajność." + }, + "addChunks": { + "title": "Uaktualnij, aby kontynuować dodawanie fragmentów", + "description": "Osiągnąłeś limit dodawania fragmentów w tym planie." + } + } +} diff --git a/web/i18n/pl-PL/billing.ts b/web/i18n/pl-PL/billing.ts deleted file mode 100644 index 6b49df928d..0000000000 --- a/web/i18n/pl-PL/billing.ts +++ /dev/null @@ -1,231 +0,0 @@ -const translation = { - currentPlan: 'Obecny plan', - upgradeBtn: { - plain: 'Ulepsz plan', - encourage: 'Ulepsz teraz', - encourageShort: 'Ulepsz', - }, - viewBilling: 'Zarządzaj rozliczeniami i subskrypcjami', - buyPermissionDeniedTip: - 'Skontaktuj się z administratorem swojej firmy, aby zasubskrybować', - plansCommon: { - yearlyTip: 'Otrzymaj 2 miesiące za darmo, subskrybując rocznie!', - mostPopular: 'Najpopularniejszy', - planRange: { - monthly: 'Miesięczny', - yearly: 'Roczny', - }, - month: 'miesiąc', - year: 'rok', - save: 'Oszczędź ', - free: 'Darmowy', - currentPlan: 'Obecny plan', - contractSales: 'Skontaktuj się z działem sprzedaży', - contractOwner: 'Skontaktuj się z zarządcą zespołu', - startForFree: 'Zacznij za darmo', - contactSales: 'Kontakt z działem sprzedaży', - talkToSales: 'Porozmawiaj z działem sprzedaży', - modelProviders: 'Dostawcy modeli', - buildApps: 'Twórz aplikacje', - vectorSpace: 'Przestrzeń wektorowa', - vectorSpaceTooltip: - 'Przestrzeń wektorowa jest systemem pamięci długoterminowej wymaganym dla LLM, aby zrozumieć Twoje dane.', - documentProcessingPriority: 'Priorytet przetwarzania dokumentów', - documentProcessingPriorityTip: 'Aby uzyskać wyższy priorytet przetwarzania dokumentów, zaktualizuj swój plan.', - documentProcessingPriorityUpgrade: - 'Przetwarzaj więcej danych z większą dokładnością i w szybszym tempie.', - priority: { - 'standard': 'Standardowy', - 'priority': 'Priorytetowy', - 'top-priority': 'Najwyższy priorytet', - }, - logsHistory: 'Historia logów', - customTools: 'Niestandardowe narzędzia', - unavailable: 'Niedostępne', - days: 'dni', - unlimited: 'Nieograniczony', - support: 'Wsparcie', - supportItems: { - communityForums: 'Forum społecznościowe', - emailSupport: 'Wsparcie mailowe', - priorityEmail: 'Priorytetowa pomoc mailowa i czat', - logoChange: 'Zmiana logo', - SSOAuthentication: 'Uwierzytelnianie SSO', - personalizedSupport: 'Personalizowane wsparcie', - dedicatedAPISupport: 'Dedykowane wsparcie API', - customIntegration: 'Niestandardowa integracja i wsparcie', - ragAPIRequest: 'Żądania API RAG', - bulkUpload: 'Masowe przesyłanie dokumentów', - agentMode: 'Tryb agenta', - workflow: 'Przepływ pracy', - llmLoadingBalancing: 'Równoważenie obciążenia LLM', - llmLoadingBalancingTooltip: 'Dodaj wiele kluczy API do modeli, skutecznie omijając limity szybkości interfejsu API.', - }, - comingSoon: 'Wkrótce dostępne', - member: 'Członek', - memberAfter: 'Członek', - messageRequest: { - title: 'Limity kredytów wiadomości', - tooltip: - 'Limity wywołań wiadomości dla różnych planów używających modeli OpenAI (z wyjątkiem gpt4). Wiadomości przekraczające limit będą korzystać z twojego klucza API OpenAI.', - titlePerMonth: '{{count,number}} wiadomości/miesiąc', - }, - annotatedResponse: { - title: 'Limity kredytów na adnotacje', - tooltip: - 'Ręczna edycja i adnotacja odpowiedzi zapewniają możliwość dostosowania wysokiej jakości odpowiedzi na pytania dla aplikacji. (Stosowane tylko w aplikacjach czatowych)', - }, - ragAPIRequestTooltip: - 'Odnosi się do liczby wywołań API wykorzystujących tylko zdolności przetwarzania bazy wiedzy Dify.', - receiptInfo: - 'Tylko właściciel zespołu i administrator zespołu mogą subskrybować i przeglądać informacje o rozliczeniach', - annotationQuota: 'Przydział adnotacji', - documents: '{{count,number}} Dokumentów Wiedzy', - apiRateLimit: 'Limit liczby wywołań API', - documentsTooltip: 'Kwota dotycząca liczby dokumentów importowanych z Źródła Danych Wiedzy.', - unlimitedApiRate: 'Brak limitu liczby zapytań API', - annualBilling: 'Roczne rozliczenie', - getStarted: 'Zacznij', - freeTrialTip: 'bezpłatny okres próbny 200 wywołań OpenAI.', - comparePlanAndFeatures: 'Porównaj plany i funkcje', - freeTrialTipPrefix: 'Zarejestruj się i zdobądź', - teamMember_other: '{{count,number}} członków zespołu', - teamWorkspace: '{{count,number}} Zespół Workspace', - apiRateLimitUnit: '{{count,number}}', - cloud: 'Usługa chmurowa', - teamMember_one: '{{count,number}} Członek zespołu', - priceTip: 'na przestrzeń roboczą/', - self: 'Samo-hostowane', - apiRateLimitTooltip: 'Limit aktywności API dotyczy wszystkich żądań składanych za pośrednictwem API Dify, w tym generowania tekstu, rozmów czatowych, wykonywania przepływów pracy i przetwarzania dokumentów.', - freeTrialTipSuffix: 'Nie jest wymagana karta kredytowa', - documentsRequestQuota: '{{count,number}}/min Limit wiedzy na żądanie', - documentsRequestQuotaTooltip: 'Określa całkowitą liczbę działań, jakie przestrzeń robocza może wykonać na minutę w ramach bazy wiedzy, w tym tworzenie zbiorów danych, usuwanie, aktualizacje, przesyłanie dokumentów, modyfikacje, archiwizowanie i zapytania do bazy wiedzy. Ta metryka jest używana do oceny wydajności zapytań do bazy wiedzy. Na przykład, jeśli użytkownik Sandbox wykona 10 kolejnych testów w ciągu jednej minuty, jego przestrzeń robocza zostanie tymczasowo ograniczona w wykonywaniu następujących działań przez następną minutę: tworzenie zbiorów danych, usuwanie, aktualizacje oraz przesyłanie lub modyfikacje dokumentów.', - startBuilding: 'Zacznij budować', - taxTip: 'Wszystkie ceny subskrypcji (miesięczne/roczne) nie obejmują obowiązujących podatków (np. VAT, podatek od sprzedaży).', - taxTipSecond: 'Jeśli w Twoim regionie nie ma obowiązujących przepisów podatkowych, podatek nie pojawi się podczas realizacji zamówienia i nie zostaną naliczone żadne dodatkowe opłaty przez cały okres subskrypcji.', - triggerEvents: { - unlimited: 'Nieograniczone zdarzenia wyzwalające', - tooltip: 'Liczba zdarzeń, które automatycznie uruchamiają przepływy pracy za pomocą wtyczki, harmonogramu lub wyzwalaczy Webhook.', - sandbox: '{{count,number}} Wyzwalacze zdarzeń', - professional: '{{count,number}} Wywołania zdarzeń/miesiąc', - }, - workflowExecution: { - standard: 'Standardowe wykonywanie przepływu pracy', - tooltip: 'Priorytet i szybkość wykonywania kolejki przepływu pracy.', - priority: 'Wykonywanie przepływu pracy według priorytetu', - faster: 'Szybsze wykonywanie przepływu pracy', - }, - startNodes: { - unlimited: 'Nieograniczone wyzwalacze/przepływ pracy', - limited: 'Do {{count}} wyzwalaczy/przepływów pracy', - }, - title: { - plans: 'plany', - description: 'Wybierz plan, który najlepiej odpowiada potrzebom Twojego zespołu.', - }, - }, - plans: { - sandbox: { - name: 'Sandbox', - description: '200 razy darmowa próba GPT', - for: 'Darmowy okres próbny podstawowych funkcji', - }, - professional: { - name: 'Profesjonalny', - description: - 'Dla osób fizycznych i małych zespołów, aby odblokować więcej mocy w przystępnej cenie.', - for: 'Dla niezależnych deweloperów/małych zespołów', - }, - team: { - name: 'Zespół', - description: - 'Współpracuj bez ograniczeń i ciesz się najwyższą wydajnością.', - for: 'Dla średniej wielkości zespołów', - }, - enterprise: { - name: 'Przedsiębiorstwo', - description: - 'Uzyskaj pełne możliwości i wsparcie dla systemów o kluczowym znaczeniu dla misji.', - includesTitle: 'Wszystko w planie Zespołowym, plus:', - features: ['Rozwiązania wdrożeniowe klasy korporacyjnej, skalowalne', 'Autoryzacja licencji komercyjnej', 'Ekskluzywne funkcje dla przedsiębiorstw', 'Wiele przestrzeni roboczych i zarządzanie przedsiębiorstwem', 'SSO', 'Negocjowane umowy SLA przez partnerów Dify', 'Zaawansowane zabezpieczenia i kontrola', 'Aktualizacje i konserwacja przez Dify oficjalnie', 'Profesjonalne wsparcie techniczne'], - priceTip: 'Tylko roczne fakturowanie', - btnText: 'Skontaktuj się z działem sprzedaży', - for: 'Dla dużych zespołów', - price: 'Niestety, nie mogę przetłumaczyć tego tekstu bez konkretnego zdania do przetłumaczenia.', - }, - community: { - features: ['Wszystkie podstawowe funkcje udostępnione w publicznym repozytorium', 'Pojedyncza przestrzeń robocza', 'Zgodne z licencją Dify Open Source'], - includesTitle: 'Darmowe funkcje:', - name: 'Społeczność', - price: 'Darmowy', - description: 'Dla użytkowników indywidualnych, małych zespołów lub projektów niekomercyjnych', - btnText: 'Rozpocznij pracę z społecznością', - for: 'Dla użytkowników indywidualnych, małych zespołów lub projektów niekomercyjnych', - }, - premium: { - features: ['Niezawodność zarządzana samodzielnie przez różnych dostawców chmury', 'Pojedyncza przestrzeń robocza', 'Dostosowywanie logo i marki aplikacji webowej', 'Priorytetowe wsparcie e-mail i czat'], - description: 'Dla średnich organizacji i zespołów', - for: 'Dla średnich organizacji i zespołów', - name: 'Premium', - priceTip: 'Oparte na rynku chmurowym', - btnText: 'Uzyskaj premium w', - price: 'Skalowalny', - comingSoon: 'Wsparcie dla Microsoft Azure i Google Cloud wkrótce dostępne', - includesTitle: 'Wszystko z Community, plus:', - }, - }, - vectorSpace: { - fullTip: 'Przestrzeń wektorowa jest pełna.', - fullSolution: 'Ulepsz swój plan, aby uzyskać więcej miejsca.', - }, - apps: { - fullTip1des: 'Osiągnąłeś limit tworzenia aplikacji w tym planie.', - fullTip1: 'Zaktualizuj, aby stworzyć więcej aplikacji', - fullTip2: 'Osiągnięto limit planu', - contactUs: 'Skontaktuj się z nami', - fullTip2des: 'Zaleca się usunięcie nieaktywnych aplikacji, aby zwolnić miejsce, lub skontaktowanie się z nami.', - }, - annotatedResponse: { - fullTipLine1: 'Ulepsz swój plan, aby', - fullTipLine2: 'adnotować więcej rozmów.', - quotaTitle: 'Limit adnotacji odpowiedzi', - }, - usagePage: { - vectorSpace: 'Magazynowanie danych wiedzy', - teamMembers: 'Członkowie zespołu', - documentsUploadQuota: 'Limit przesyłania dokumentów', - buildApps: 'Twórz aplikacje', - annotationQuota: 'Kwota aneksji', - vectorSpaceTooltip: 'Dokumenty z trybem indeksowania o wysokiej jakości będą zużywać zasoby magazynu danych wiedzy. Gdy magazyn danych wiedzy osiągnie limit, nowe dokumenty nie będą przesyłane.', - perMonth: 'miesięcznie', - triggerEvents: 'Wydarzenia wyzwalające', - resetsIn: 'Resetuje się za {{count,number}} dni', - }, - teamMembers: 'Członkowie zespołu', - triggerLimitModal: { - upgrade: 'Uaktualnij', - usageTitle: 'WYDARZENIA WYZWALAJĄCE', - description: 'Osiągnąłeś limit wyzwalaczy zdarzeń przepływu pracy dla tego planu.', - title: 'Uaktualnij, aby odblokować więcej zdarzeń wyzwalających', - dismiss: 'Odrzuć', - }, - viewBillingTitle: 'Rozliczenia i subskrypcje', - viewBillingDescription: 'Zarządzaj metodami płatności, fakturami i zmianami subskrypcji', - viewBillingAction: 'Zarządzać', - upgrade: { - uploadMultiplePages: { - title: 'Przejdź na wyższą wersję, aby przesyłać wiele dokumentów jednocześnie', - description: 'Osiągnąłeś limit przesyłania — w ramach obecnego planu można wybrać i przesłać tylko jeden dokument naraz.', - }, - uploadMultipleFiles: { - title: 'Uaktualnij, aby odblokować przesyłanie dokumentów wsadowych', - description: 'Przesyłaj wiele dokumentów jednocześnie, aby zaoszczędzić czas i zwiększyć wydajność.', - }, - addChunks: { - title: 'Uaktualnij, aby kontynuować dodawanie fragmentów', - description: 'Osiągnąłeś limit dodawania fragmentów w tym planie.', - }, - }, -} - -export default translation diff --git a/web/i18n/pl-PL/common.json b/web/i18n/pl-PL/common.json new file mode 100644 index 0000000000..76cf5a9de5 --- /dev/null +++ b/web/i18n/pl-PL/common.json @@ -0,0 +1,785 @@ +{ + "api": { + "success": "Sukces", + "actionSuccess": "Akcja powiodła się", + "saved": "Zapisane", + "create": "Utworzono", + "remove": "Usunięto", + "actionFailed": "Akcja nie powiodła się" + }, + "operation": { + "create": "Utwórz", + "confirm": "Potwierdź", + "cancel": "Anuluj", + "clear": "Wyczyść", + "save": "Zapisz", + "saveAndEnable": "Zapisz i Włącz", + "edit": "Edytuj", + "add": "Dodaj", + "added": "Dodano", + "refresh": "Odśwież", + "reset": "Resetuj", + "search": "Szukaj", + "change": "Zmień", + "remove": "Usuń", + "send": "Wyślij", + "copy": "Kopiuj", + "lineBreak": "Złamanie linii", + "sure": "Jestem pewien", + "download": "Pobierz", + "delete": "Usuń", + "settings": "Ustawienia", + "setup": "Konfiguruj", + "getForFree": "Zdobądź za darmo", + "reload": "Przeładuj", + "ok": "OK", + "log": "Dziennik", + "learnMore": "Dowiedz się więcej", + "params": "Parametry", + "duplicate": "Duplikuj", + "rename": "Zmień nazwę", + "audioSourceUnavailable": "AudioSource jest niedostępny", + "copyImage": "Kopiuj obraz", + "openInNewTab": "Otwórz w nowej karcie", + "zoomIn": "Powiększenie", + "zoomOut": "Pomniejszanie", + "saveAndRegenerate": "Zapisywanie i regeneracja fragmentów podrzędnych", + "view": "Widok", + "regenerate": "Ponownie wygenerować", + "viewMore": "ZOBACZ WIĘCEJ", + "close": "Zamykać", + "submit": "Prześlij", + "skip": "Statek", + "imageCopied": "Skopiowany obraz", + "deleteApp": "Usuń aplikację", + "copied": "Kopiowane", + "in": "w", + "viewDetails": "Wyświetl szczegóły", + "format": "Format", + "downloadFailed": "Pobieranie nie powiodło się. Proszę spróbować ponownie później.", + "more": "Więcej", + "downloadSuccess": "Pobieranie zakończone.", + "deSelectAll": "Odznacz wszystkie", + "selectAll": "Zaznacz wszystkie", + "config": "Konfiguracja", + "yes": "Tak", + "no": "Nie", + "deleteConfirmTitle": "Usunąć?", + "confirmAction": "Proszę potwierdzić swoją akcję.", + "noSearchResults": "Nie znaleziono {{content}}", + "resetKeywords": "Resetuj słowa kluczowe", + "selectCount": "{{count}} Wybrane", + "searchCount": "Znajdź {{count}} {{content}}", + "noSearchCount": "0 {{content}}", + "now": "Teraz" + }, + "placeholder": { + "input": "Proszę wprowadzić", + "select": "Proszę wybrać", + "search": "Szukaj..." + }, + "voice": { + "language": { + "zhHans": "Chiński", + "zhHant": "Chiński tradycyjny", + "enUS": "Angielski", + "deDE": "Niemiecki", + "frFR": "Francuski", + "esES": "Hiszpański", + "itIT": "Włoski", + "thTH": "Tajski", + "idID": "Indonezyjski", + "jaJP": "Japoński", + "koKR": "Koreański", + "ptBR": "Portugalski", + "ruRU": "Rosyjski", + "ukUA": "Ukraiński", + "viVN": "Wietnamski", + "plPL": "Polski", + "roRO": "Rumuński", + "hiIN": "Hindi", + "trTR": "Turecki", + "faIR": "Perski", + "slSI": "Słoweński", + "arTN": "Arabski tunezyjski" + } + }, + "unit": { + "char": "znaki" + }, + "actionMsg": { + "noModification": "W tej chwili brak zmian.", + "modifiedSuccessfully": "Zmodyfikowano pomyślnie", + "modifiedUnsuccessfully": "Nie udało się zmodyfikować", + "copySuccessfully": "Skopiowano pomyślnie", + "paySucceeded": "Płatność zakończona sukcesem", + "payCancelled": "Płatność anulowana", + "generatedSuccessfully": "Wygenerowano pomyślnie", + "generatedUnsuccessfully": "Nie udało się wygenerować" + }, + "model": { + "params": { + "temperature": "Temperatura", + "temperatureTip": "Kontroluje przypadkowość: obniżenie powoduje mniej przypadkowych uzupełnień. Gdy temperatura zbliża się do zera, model staje się deterministyczny i powtarzalny.", + "top_p": "Top P", + "top_pTip": "Kontroluje różnorodność poprzez próbkowanie jądra: 0,5 oznacza, że rozważane są połowa wszystkich opcji ważonych prawdopodobieństwem.", + "presence_penalty": "Kara za obecność", + "presence_penaltyTip": "Jak bardzo karać nowe tokeny w zależności od tego, czy pojawiły się już w tekście.\nZwiększa prawdopodobieństwo, że model zacznie rozmawiać o nowych tematach.", + "frequency_penalty": "Kara za częstotliwość", + "frequency_penaltyTip": "Jak bardzo karać nowe tokeny bazując na ich dotychczasowej częstotliwości w tekście.\nZmniejsza prawdopodobieństwo, że model będzie powtarzał tę samą linię dosłownie.", + "max_tokens": "Maksymalna liczba tokenów", + "max_tokensTip": "Służy do ograniczania maksymalnej długości odpowiedzi w tokenach. \nWiększe wartości mogą ograniczyć miejsce na słowa wstępne, dzienniki rozmów i Wiedzę. \nZaleca się ustawienie go poniżej dwóch trzecich\ngpt-4-1106-preview, gpt-4-vision-preview maksymalna liczba tokenów (input 128k output 4k)", + "maxTokenSettingTip": "Twoje ustawienie maksymalnej liczby tokenów jest wysokie, potencjalnie ograniczając miejsce na monity, zapytania i dane. Rozważ ustawienie go poniżej 2/3.", + "setToCurrentModelMaxTokenTip": "Maksymalna liczba tokenów została zaktualizowana do 80% maksymalnej liczby tokenów obecnego modelu {{maxToken}}.", + "stop_sequences": "Sekwencje zatrzymujące", + "stop_sequencesTip": "Do czterech sekwencji, w których API przestanie generować dalsze tokeny. Zwrócony tekst nie będzie zawierał sekwencji zatrzymującej.", + "stop_sequencesPlaceholder": "Wpisz sekwencję i naciśnij Tab" + }, + "tone": { + "Creative": "Kreatywny", + "Balanced": "Zrównoważony", + "Precise": "Precyzyjny", + "Custom": "Niestandardowy" + }, + "addMoreModel": "Przejdź do ustawień, aby dodać więcej modeli", + "settingsLink": "Ustawienia dostawcy modelu", + "capabilities": "Możliwości multimodalne" + }, + "menus": { + "status": "beta", + "explore": "Eksploruj", + "apps": "Studio", + "plugins": "Pluginy", + "pluginsTips": "Integruj pluginy stron trzecich lub twórz pluginy AI kompatybilne z ChatGPT.", + "datasets": "Wiedza", + "datasetsTips": "NADCHODZI: Importuj swoje własne dane tekstowe lub wpisuj dane w czasie rzeczywistym przez Webhook, aby wzmocnić kontekst LLM.", + "newApp": "Nowa aplikacja", + "newDataset": "Utwórz Wiedzę", + "tools": "Narzędzia", + "exploreMarketplace": "Zapoznaj się z Marketplace", + "appDetail": "Szczegóły aplikacji", + "account": "klient" + }, + "userProfile": { + "settings": "Ustawienia", + "emailSupport": "Wsparcie e-mail", + "workspace": "Przestrzeń robocza", + "createWorkspace": "Utwórz przestrzeń roboczą", + "helpCenter": "Pomoc", + "roadmap": "Plan działania", + "community": "Społeczność", + "about": "O", + "logout": "Wyloguj się", + "support": "Wsparcie", + "github": "GitHub", + "compliance": "Zgodność", + "contactUs": "Skontaktuj się z nami", + "forum": "Forum" + }, + "settings": { + "accountGroup": "KONTO", + "workplaceGroup": "PRZESTRZEŃ ROBOCZA", + "account": "Moje konto", + "members": "Członkowie", + "billing": "Rozliczenia", + "integrations": "Integracje", + "language": "Język", + "provider": "Dostawca modelu", + "dataSource": "Źródło danych", + "plugin": "Pluginy", + "apiBasedExtension": "Rozszerzenie API", + "generalGroup": "OGÓLNE" + }, + "account": { + "avatar": "Awatar", + "name": "Nazwa", + "email": "Email", + "password": "Hasło", + "passwordTip": "Możesz ustawić stałe hasło, jeśli nie chcesz używać tymczasowych kodów logowania", + "setPassword": "Ustaw hasło", + "resetPassword": "Zresetuj hasło", + "currentPassword": "Obecne hasło", + "newPassword": "Nowe hasło", + "confirmPassword": "Potwierdź hasło", + "notEqual": "Dwa hasła są różne.", + "langGeniusAccount": "Konto Dify", + "langGeniusAccountTip": "Twoje konto Dify i powiązane dane użytkownika.", + "editName": "Edytuj nazwę", + "showAppLength": "Pokaż {{length}} aplikacje", + "delete": "Usuń konto", + "deleteTip": "Usunięcie konta spowoduje trwałe usunięcie wszystkich danych i nie będzie można ich odzyskać.", + "myAccount": "Moje konto", + "studio": "Dify Studio", + "account": "Rachunek", + "deletePrivacyLinkTip": "Aby uzyskać więcej informacji o tym, jak postępujemy z Twoimi danymi, zapoznaj się z naszą", + "deletePrivacyLink": "Polityka prywatności.", + "deleteSuccessTip": "Twoje konto potrzebuje czasu na dokończenie usuwania. Wyślemy Ci wiadomość e-mail, gdy wszystko będzie gotowe.", + "deleteLabel": "Aby potwierdzić, wpisz poniżej swój adres e-mail", + "deletePlaceholder": "Podaj swój adres e-mail", + "sendVerificationButton": "Wyślij kod weryfikacyjny", + "verificationLabel": "Kod weryfikacyjny", + "verificationPlaceholder": "Wklej 6-cyfrowy kod", + "permanentlyDeleteButton": "Trwale usuń konto", + "feedbackTitle": "Sprzężenie zwrotne", + "feedbackLabel": "Powiedz nam, dlaczego usunąłeś swoje konto?", + "feedbackPlaceholder": "Fakultatywny", + "workspaceIcon": "Ikona robocza", + "workspaceName": "Nazwa miejsca pracy", + "editWorkspaceInfo": "Edytuj informacje o przestrzeni roboczej", + "changeEmail": { + "emailLabel": "Nowy e-mail", + "emailPlaceholder": "Wprowadź nowy adres e-mail", + "changeTo": "Zmień na {{email}}", + "sendVerifyCode": "Wyślij kod weryfikacyjny", + "resend": "Wyślij ponownie", + "title": "Zmień e-mail", + "newEmail": "Utwórz nowy adres e-mail", + "existingEmail": "Użytkownik z tym adresem e-mail już istnieje.", + "content1": "Jeśli będziesz kontynuować, wyślemy kod weryfikacyjny na {{email}} w celu ponownej autoryzacji.", + "resendCount": "Wyślij ponownie za {{count}}s", + "codeLabel": "Kod weryfikacyjny", + "codePlaceholder": "Wklej 6-cyfrowy kod", + "continue": "Kontynuuj", + "content3": "Wprowadź nowy adres e-mail, a my wyślemy ci kod weryfikacyjny.", + "verifyEmail": "Zweryfikuj swój aktualny adres e-mail", + "verifyNew": "Zweryfikuj swój nowy adres e-mail", + "resendTip": "Nie otrzymałeś kodu?", + "content2": "Twój aktualny adres email to {{email}}. Kod weryfikacyjny został wysłany na ten adres email.", + "content4": "Właśnie wysłaliśmy Ci tymczasowy kod weryfikacyjny na {{email}}.", + "authTip": "Gdy twoje e-mail zostanie zmienione, konta Google lub GitHub powiązane z twoim starym e-mailem nie będą mogły już logować się do tego konta.", + "unAvailableEmail": "Ten email jest tymczasowo niedostępny." + } + }, + "members": { + "team": "Zespół", + "invite": "Dodaj", + "name": "NAZWA", + "lastActive": "OSTATNIA AKTYWNOŚĆ", + "role": "ROLE", + "pending": "Oczekujący...", + "owner": "Właściciel", + "admin": "Admin", + "adminTip": "Może tworzyć aplikacje i zarządzać ustawieniami zespołu", + "normal": "Normalny", + "normalTip": "Może tylko korzystać z aplikacji, nie może tworzyć aplikacji", + "editor": "Edytor", + "editorTip": "Może tworzyć i edytować aplikacje, ale nie zarządzać ustawieniami zespołu", + "inviteTeamMember": "Dodaj członka zespołu", + "inviteTeamMemberTip": "Mogą uzyskać bezpośredni dostęp do danych Twojego zespołu po zalogowaniu.", + "emailNotSetup": "Serwer poczty nie jest skonfigurowany, więc nie można wysyłać zaproszeń e-mail. Proszę powiadomić użytkowników o linku do zaproszenia, który zostanie wydany po zaproszeniu.", + "email": "Email", + "emailInvalid": "Nieprawidłowy format e-maila", + "emailPlaceholder": "Proszę podać adresy e-mail", + "sendInvite": "Wyślij zaproszenie", + "invitedAsRole": "Zaproszony jako użytkownik typu {{role}}", + "invitationSent": "Zaproszenie wysłane", + "invitationSentTip": "Zaproszenie zostało wysłane, a oni mogą zalogować się do Dify, aby uzyskać dostęp do danych Twojego zespołu.", + "invitationLink": "Link zaproszenia", + "failedInvitationEmails": "Poniższe osoby nie zostały pomyślnie zaproszone", + "ok": "OK", + "removeFromTeam": "Usuń z zespołu", + "removeFromTeamTip": "Usunie dostęp do zespołu", + "setAdmin": "Ustaw jako administratora", + "setMember": "Ustaw jako zwykłego członka", + "setEditor": "Ustaw jako edytora", + "disInvite": "Anuluj zaproszenie", + "deleteMember": "Usuń członka", + "you": "(Ty)", + "datasetOperatorTip": "Może zarządzać tylko bazą wiedzy", + "setBuilder": "Ustaw jako budowniczego", + "builder": "Budowniczy", + "builderTip": "Może tworzyć i edytować własne aplikacje", + "datasetOperator": "Wiedza Admin", + "transferModal": { + "sendVerifyCode": "Wyślij kod weryfikacyjny", + "resend": "Wyślij ponownie", + "codePlaceholder": "Wklej 6-cyfrowy kod", + "verifyContent": "Twój aktualny adres e-mail to {{email}}.", + "continue": "Kontynuuj", + "verifyEmail": "Zweryfikuj swój aktualny adres e-mail", + "resendTip": "Nie otrzymałeś kodu?", + "transferPlaceholder": "Wybierz członka zespołu…", + "transfer": "Przenieś własność przestrzeni roboczej", + "warning": "Zaraz przekażesz własność „{{workspace}}”. To nastąpi natychmiast i nie można tego cofnąć.", + "title": "Przenieś własność przestrzeni roboczej", + "codeLabel": "Kod weryfikacyjny", + "transferLabel": "Przenieś właśność przestrzeni roboczej na", + "resendCount": "Wyślij ponownie za {{count}}s", + "verifyContent2": "Wyślemy tymczasowy kod weryfikacyjny na ten adres e-mail w celu ponownej autoryzacji.", + "sendTip": "Jeśli będziesz kontynuować, wyślemy kod weryfikacyjny na {{email}} w celu ponownej autoryzacji.", + "warningTip": "Staniesz się członkiem administracji, a nowy właściciel będzie miał pełną kontrolę." + }, + "transferOwnership": "Przenieś własność" + }, + "integrations": { + "connected": "Połączony", + "google": "Google", + "googleAccount": "Zaloguj się przy użyciu konta Google", + "github": "GitHub", + "githubAccount": "Zaloguj się przy użyciu konta GitHub", + "connect": "Połącz" + }, + "language": { + "displayLanguage": "Język interfejsu", + "timezone": "Strefa czasowa" + }, + "provider": { + "apiKey": "Klucz API", + "enterYourKey": "Wprowadź tutaj swój klucz API", + "invalidKey": "Nieprawidłowy klucz API OpenAI", + "validatedError": "Weryfikacja nie powiodła się: ", + "validating": "Weryfikowanie klucza...", + "saveFailed": "Zapis klucza API nie powiódł się", + "apiKeyExceedBill": "Ten KLUCZ API nie ma dostępnych limitów, przeczytaj", + "addKey": "Dodaj klucz", + "comingSoon": "Już wkrótce", + "editKey": "Edytuj", + "invalidApiKey": "Nieprawidłowy klucz API", + "azure": { + "apiBase": "Podstawa API", + "apiBasePlaceholder": "Adres URL podstawowy Twojego końcowego punktu Azure OpenAI.", + "apiKey": "Klucz API", + "apiKeyPlaceholder": "Wprowadź tutaj swój klucz API", + "helpTip": "Dowiedz się więcej o usłudze Azure OpenAI" + }, + "openaiHosted": { + "openaiHosted": "Hostowany OpenAI", + "onTrial": "NA PROBĘ", + "exhausted": "WYCZERPANY LIMIT", + "desc": "Usługa hostowania OpenAI dostarczana przez Dify pozwala korzystać z modeli takich jak GPT-3.5. Przed wyczerpaniem limitu próbnego należy skonfigurować inne dostawców modeli.", + "callTimes": "Czasy wywołań", + "usedUp": "Limit próbny został wyczerpany. Dodaj własnego dostawcę modeli.", + "useYourModel": "Aktualnie używany jest własny dostawca modeli.", + "close": "Zamknij" + }, + "anthropicHosted": { + "anthropicHosted": "Anthropic Claude", + "onTrial": "NA PROBĘ", + "exhausted": "WYCZERPANY LIMIT", + "desc": "Potężny model, który doskonale sprawdza się w szerokim spektrum zadań, od zaawansowanego dialogu i generowania treści twórczych po szczegółowe instrukcje.", + "callTimes": "Czasy wywołań", + "usedUp": "Limit próbny został wyczerpany. Dodaj własnego dostawcę modeli.", + "useYourModel": "Aktualnie używany jest własny dostawca modeli.", + "close": "Zamknij", + "trialQuotaTip": "Twój limit próbny Anthropic wygaśnie w dniu 11.03.2025 i nie będzie już dostępny po tym czasie. Prosimy o skorzystanie z niego w odpowiednim czasie." + }, + "anthropic": { + "using": "Zdolność do osadzania jest używana", + "enableTip": "Aby włączyć model Anthropica, musisz najpierw powiązać się z usługą OpenAI lub Azure OpenAI.", + "notEnabled": "Nie włączono", + "keyFrom": "Pobierz swój klucz API od Anthropic" + }, + "encrypted": { + "front": "Twój KLUCZ API będzie szyfrowany i przechowywany za pomocą", + "back": " technologii." + } + }, + "modelProvider": { + "notConfigured": "Systemowy model nie został jeszcze w pełni skonfigurowany, co może skutkować niedostępnością niektórych funkcji.", + "systemModelSettings": "Ustawienia modelu systemowego", + "systemModelSettingsLink": "Dlaczego konieczne jest skonfigurowanie modelu systemowego?", + "selectModel": "Wybierz swój model", + "setupModelFirst": "Proszę najpierw skonfigurować swój model", + "systemReasoningModel": { + "key": "Model wnioskowania systemowego", + "tip": "Ustaw domyślny model wnioskowania do użytku przy tworzeniu aplikacji, a także cechy takie jak generowanie nazw dialogów i sugestie następnego pytania będą również korzystać z domyślnego modelu wnioskowania." + }, + "embeddingModel": { + "key": "Model osadzania", + "tip": "Ustaw domyślny model do przetwarzania osadzania dokumentów wiedzy; zarówno pozyskiwanie, jak i importowanie wiedzy wykorzystują ten model osadzania do przetwarzania wektorowego. Zmiana spowoduje niezgodność wymiarów wektorów między importowaną wiedzą a pytaniem, co skutkować będzie niepowodzeniem w pozyskiwaniu. Aby uniknąć niepowodzeń, prosimy nie zmieniać tego modelu dowolnie.", + "required": "Model osadzania jest wymagany" + }, + "speechToTextModel": { + "key": "Model mowy na tekst", + "tip": "Ustaw domyślny model do przetwarzania mowy na tekst w rozmowach." + }, + "ttsModel": { + "key": "Model tekstu na mowę", + "tip": "Ustaw domyślny model dla konwersji tekstu na mowę w rozmowach." + }, + "rerankModel": { + "key": "Model ponownego rankingu", + "tip": "Model ponownego rankingu zmieni kolejność listy dokumentów kandydatów na podstawie semantycznego dopasowania z zapytaniem użytkownika, poprawiając wyniki rankingu semantycznego" + }, + "quota": "Limit", + "searchModel": "Model wyszukiwania", + "noModelFound": "Nie znaleziono modelu dla {{model}}", + "models": "Modele", + "showMoreModelProvider": "Pokaż więcej dostawców modeli", + "selector": { + "tip": "Ten model został usunięty. Proszę dodać model lub wybrać inny model.", + "emptyTip": "Brak dostępnych modeli", + "emptySetting": "Przejdź do ustawień, aby skonfigurować", + "rerankTip": "Proszę skonfigurować model ponownego rankingu" + }, + "card": { + "quota": "LIMIT", + "onTrial": "Na próbę", + "paid": "Płatny", + "quotaExhausted": "Wyczerpany limit", + "callTimes": "Czasy wywołań", + "tokens": "Tokeny", + "buyQuota": "Kup limit", + "priorityUse": "Używanie z priorytetem", + "removeKey": "Usuń klucz API", + "tip": "Priorytet zostanie nadany płatnemu limitowi. Po wyczerpaniu limitu próbnego zostanie użyty limit płatny." + }, + "item": { + "deleteDesc": "{{modelName}} są używane jako modele wnioskowania systemowego. Niektóre funkcje mogą nie być dostępne po usunięciu. Proszę potwierdź.", + "freeQuota": "LIMIT GRATIS" + }, + "addApiKey": "Dodaj swój klucz API", + "invalidApiKey": "Nieprawidłowy klucz API", + "encrypted": { + "front": "Twój KLUCZ API będzie szyfrowany i przechowywany za pomocą", + "back": " technologii." + }, + "freeQuota": { + "howToEarn": "Jak zdobyć" + }, + "addMoreModelProvider": "DODAJ WIĘCEJ DOSTAWCÓW MODELI", + "addModel": "Dodaj model", + "modelsNum": "{{num}} Modele", + "showModels": "Pokaż modele", + "showModelsNum": "Pokaż {{num}} modele", + "collapse": "Zwiń", + "config": "Konfiguracja", + "modelAndParameters": "Model i parametry", + "model": "Model", + "featureSupported": "{{feature}} obsługiwane", + "callTimes": "Czasy wywołań", + "credits": "Kredyty wiadomości", + "buyQuota": "Kup limit", + "getFreeTokens": "Odbierz darmowe tokeny", + "priorityUsing": "Priorytetyzacja użycia", + "deprecated": "Przestarzałe", + "confirmDelete": "potwierdzić usunięcie?", + "quotaTip": "Pozostałe dostępne darmowe tokeny", + "loadPresets": "Załaduj ustawienia wstępne", + "parameters": "PARAMETRY", + "apiKey": "KLUCZ-API", + "loadBalancing": "Równoważenie obciążenia", + "defaultConfig": "Domyślna konfiguracja", + "providerManagedDescription": "Użyj pojedynczego zestawu poświadczeń dostarczonych przez dostawcę modelu.", + "loadBalancingHeadline": "Równoważenie obciążenia", + "modelHasBeenDeprecated": "Ten model jest przestarzały", + "loadBalancingDescription": "Zmniejsz presję dzięki wielu zestawom poświadczeń.", + "providerManaged": "Zarządzany przez dostawcę", + "upgradeForLoadBalancing": "Uaktualnij swój plan, aby włączyć równoważenie obciążenia.", + "apiKeyStatusNormal": "Stan APIKey jest normalny", + "loadBalancingLeastKeyWarning": "Aby włączyć równoważenie obciążenia, muszą być włączone co najmniej 2 klucze.", + "loadBalancingInfo": "Domyślnie równoważenie obciążenia używa strategii działania okrężnego. Jeśli zostanie uruchomione ograniczenie szybkości, zostanie zastosowany 1-minutowy okres odnowienia.", + "configLoadBalancing": "Równoważenie obciążenia konfiguracji", + "editConfig": "Edytuj konfigurację", + "addConfig": "Dodaj konfigurację", + "apiKeyRateLimit": "Osiągnięto limit szybkości, dostępny po {{sekund}}s", + "installProvider": "Instalowanie dostawców modeli", + "emptyProviderTip": "Najpierw zainstaluj dostawcę modeli.", + "discoverMore": "Dowiedz się więcej w", + "toBeConfigured": "Do skonfigurowania", + "configureTip": "Konfigurowanie klucza interfejsu API lub dodawanie modelu do użycia", + "emptyProviderTitle": "Dostawca modelu nie jest skonfigurowany", + "auth": { + "apiKeyModal": { + "addModel": "Dodaj model", + "title": "Konfiguracja autoryzacji klucza API", + "desc": "Po skonfigurowaniu poświadczeń wszyscy członkowie w przestrzeni roboczej mogą korzystać z tego modelu podczas orkiestracji aplikacji." + }, + "addApiKey": "Dodaj klucz API", + "configModel": "Skonfiguruj model", + "modelCredentials": "Uprawnienia modelu", + "configLoadBalancing": "Konfiguracja równoważenia obciążenia", + "unAuthorized": "Nieautoryzowany", + "specifyModelCredentialTip": "Użyj skonfigurowanych poświadczeń modelu.", + "addCredential": "Dodaj dane uwierzytelniające", + "providerManagedTip": "Bieżąca konfiguracja jest hostowana przez dostawcę.", + "specifyModelCredential": "Określ dane uwierzytelniające modelu", + "authorizationError": "Błąd autoryzacji", + "apiKeys": "Klucze API", + "providerManaged": "Zarządzane przez dostawcę", + "addNewModel": "Dodaj nowy model", + "authRemoved": "Autoryzacja usunięta", + "addModelCredential": "Dodaj dane uwierzytelniające modelu", + "customModelCredentials": "Poświadczenia modelu niestandardowego", + "modelCredential": "Poświadczenie modelu", + "removeModel": "Usuń model", + "addModel": "Dodaj model", + "manageCredentials": "Zarządzanie poświadczeniami", + "addNewModelCredential": "Dodawanie nowego poświadczenia modelu", + "customModelCredentialsDeleteTip": "Poświadczenie jest w użyciu i nie można go usunąć", + "selectModelCredential": "Wybieranie poświadczeń modelu", + "editModelCredential": "Edytowanie poświadczeń modelu" + }, + "parametersInvalidRemoved": "Niektóre parametry są nieprawidłowe i zostały usunięte.", + "installDataSourceProvider": "Zainstaluj dostawców źródeł danych" + }, + "dataSource": { + "add": "Dodaj źródło danych", + "connect": "Połącz", + "notion": { + "title": "Notion", + "description": "Korzystanie z Notion jako źródła danych dla Wiedzy.", + "connectedWorkspace": "Połączona przestrzeń robocza", + "addWorkspace": "Dodaj przestrzeń roboczą", + "connected": "Połączono", + "disconnected": "Rozłączono", + "changeAuthorizedPages": "Zmień uprawnione strony", + "pagesAuthorized": "Strony autoryzowane", + "sync": "Synchronizuj", + "remove": "Usuń", + "selector": { + "pageSelected": "Zaznaczone strony", + "searchPages": "Szukaj stron...", + "noSearchResult": "Brak wyników wyszukiwania", + "addPages": "Dodaj strony", + "preview": "PODGLĄD" + }, + "integratedAlert": "Notion jest zintegrowany za pomocą wewnętrznych poświadczeń, nie ma potrzeby ponownej autoryzacji." + }, + "website": { + "active": "Aktywny", + "with": "Z", + "title": "Strona internetowa", + "description": "Importuj zawartość ze stron internetowych za pomocą robota indeksującego.", + "configuredCrawlers": "Skonfigurowane roboty indeksujące", + "inactive": "Nieaktywny" + }, + "configure": "Konfigurować" + }, + "plugin": { + "serpapi": { + "apiKey": "Klucz API", + "apiKeyPlaceholder": "Wprowadź swój klucz API", + "keyFrom": "Pobierz swój klucz SerpAPI ze strony konta SerpAPI" + } + }, + "apiBasedExtension": { + "title": "Rozszerzenia oparte na interfejsie API zapewniają scentralizowane zarządzanie interfejsami API, upraszczając konfigurację dla łatwego użytkowania w aplikacjach Dify.", + "link": "Dowiedz się, jak opracować własne rozszerzenie interfejsu API.", + "add": "Dodaj rozszerzenie interfejsu API", + "selector": { + "title": "Rozszerzenie interfejsu API", + "placeholder": "Wybierz rozszerzenie interfejsu API", + "manage": "Zarządzaj rozszerzeniem interfejsu API" + }, + "modal": { + "title": "Dodaj rozszerzenie interfejsu API", + "editTitle": "Edytuj rozszerzenie interfejsu API", + "name": { + "title": "Nazwa", + "placeholder": "Proszę wprowadź nazwę" + }, + "apiEndpoint": { + "title": "Koniec API", + "placeholder": "Proszę wprowadź koniec API" + }, + "apiKey": { + "title": "Klucz API", + "placeholder": "Proszę wprowadź klucz API", + "lengthError": "Długość klucza API nie może być mniejsza niż 5 znaków" + } + }, + "type": "Typ" + }, + "about": { + "changeLog": "Dziennik zmian", + "updateNow": "Aktualizuj teraz", + "nowAvailable": "Dify {{version}} jest teraz dostępny.", + "latestAvailable": "Dify {{version}} jest najnowszą dostępną wersją." + }, + "appMenus": { + "overview": "Monitorowanie", + "promptEng": "Orkiestracja", + "apiAccess": "Dostęp API", + "logAndAnn": "Logi i ogł.", + "logs": "Logi" + }, + "environment": { + "testing": "TESTOWANIE", + "development": "ROZWOJOWA" + }, + "appModes": { + "completionApp": "Generator tekstu", + "chatApp": "Aplikacja czatowa" + }, + "datasetMenus": { + "documents": "Dokumenty", + "hitTesting": "Testowanie poboru", + "settings": "Ustawienia", + "emptyTip": "Wiedza nie została powiązana, przejdź do aplikacji lub wtyczki, aby ukończyć powiązanie.", + "viewDoc": "Zobacz dokumentację", + "relatedApp": "powiązane aplikacje", + "noRelatedApp": "Brak połączonych aplikacji", + "pipeline": "Rurociąg" + }, + "voiceInput": { + "speaking": "Mów teraz...", + "converting": "Konwertowanie na tekst...", + "notAllow": "mikrofon nieautoryzowany" + }, + "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": "Tekst-Davinci-003", + "text-embedding-ada-002": "Tekst-Wan-Ada-002", + "whisper-1": "Szept-1", + "claude-instant-1": "Claude-Natychmiastowy", + "claude-2": "Claude-2" + }, + "chat": { + "renameConversation": "Zmień nazwę rozmowy", + "conversationName": "Nazwa rozmowy", + "conversationNamePlaceholder": "Proszę wprowadź nazwę rozmowy", + "conversationNameCanNotEmpty": "Nazwa rozmowy wymagana", + "citation": { + "title": "Cytaty", + "linkToDataset": "Link do Wiedzy", + "characters": "Postacie:", + "hitCount": "Liczba trafień:", + "vectorHash": "Wektor hash:", + "hitScore": "Wynik trafień:" + }, + "inputPlaceholder": "Porozmawiaj z {{botName}}", + "thought": "Myśl", + "thinking": "Myślenie...", + "resend": "Prześlij ponownie" + }, + "promptEditor": { + "placeholder": "Wpisz swoje słowo kluczowe tutaj, wprowadź '{' aby wstawić zmienną, wprowadź '/' aby wstawić blok treści słownika", + "context": { + "item": { + "title": "Kontekst", + "desc": "Wstaw szablon kontekstu" + }, + "modal": { + "title": "{{num}} Wiedzy w Kontekście", + "add": "Dodaj Kontekst ", + "footer": "Możesz zarządzać kontekstami poniżej w sekcji Kontekstów." + } + }, + "history": { + "item": { + "title": "Historia rozmów", + "desc": "Wstaw szablon historycznej wiadomości" + }, + "modal": { + "title": "PRZYKŁAD", + "user": "Cześć", + "assistant": "Cześć! W czym mogę pomóc?", + "edit": "Edytuj nazwy ról rozmów" + } + }, + "variable": { + "item": { + "title": "Zmienne i Narzędzia Zewnętrzne", + "desc": "Wstaw Zmienne i Narzędzia Zewnętrzne" + }, + "outputToolDisabledItem": { + "title": "Zmienne", + "desc": "Wstaw Zmienne" + }, + "modal": { + "add": "Nowa zmienna", + "addTool": "Nowe narzędzie" + } + }, + "query": { + "item": { + "title": "Zapytanie", + "desc": "Wstaw szablon zapytania użytkownika" + } + }, + "existed": "Już istnieje w poleceniu" + }, + "imageUploader": { + "uploadFromComputer": "Załaduj z komputera", + "uploadFromComputerReadError": "Błąd odczytu obrazu, spróbuj ponownie.", + "uploadFromComputerUploadError": "Błąd przesyłania obrazu, prześlij go ponownie.", + "uploadFromComputerLimit": "Obrazy do przesłania nie mogą przekroczyć {{size}} MB", + "pasteImageLink": "Wklej link do obrazu", + "pasteImageLinkInputPlaceholder": "Wklej tutaj link do obrazu", + "pasteImageLinkInvalid": "Nieprawidłowy link obrazu", + "imageUpload": "Przesyłanie obrazu" + }, + "tag": { + "placeholder": "Wszystkie tagi", + "addNew": "Dodaj nowy tag", + "noTag": "Brak tagów", + "noTagYet": "Brak tagów jeszcze", + "addTag": "Dodaj tagi", + "editTag": "Edytuj tagi", + "manageTags": "Zarządzaj Tagami", + "selectorPlaceholder": "Wpisz, aby wyszukać lub utworzyć", + "create": "Utwórz", + "delete": "Usuń tag", + "deleteTip": "Ten tag jest używany, czy chcesz go usunąć?", + "created": "Tag został pomyślnie utworzony", + "failed": "Nie udało się utworzyć tagu" + }, + "errorMsg": { + "fieldRequired": "{{field}} jest wymagane", + "urlError": "Adres URL powinien zaczynać się od http:// lub https://" + }, + "fileUploader": { + "pasteFileLinkInputPlaceholder": "Wpisz adres URL...", + "uploadFromComputerLimit": "Prześlij plik nie może przekraczać {{size}}", + "pasteFileLink": "Wklej link do pliku", + "uploadFromComputerUploadError": "Przesyłanie pliku nie powiodło się, prześlij ponownie.", + "pasteFileLinkInvalid": "Nieprawidłowy link do pliku", + "uploadFromComputerReadError": "Odczyt pliku nie powiódł się, spróbuj ponownie.", + "fileExtensionNotSupport": "Rozszerzenie pliku nie jest obsługiwane", + "uploadFromComputer": "Przesyłanie lokalne", + "fileExtensionBlocked": "Ten typ pliku jest zablokowany ze względów bezpieczeństwa", + "uploadDisabled": "Przesyłanie plików jest wyłączone" + }, + "license": { + "expiring_plural": "Wygasa za {{count}} dni", + "expiring": "Wygasa w ciągu jednego dnia", + "unlimited": "Nieograniczony" + }, + "pagination": { + "perPage": "Ilość elementów na stronie" + }, + "theme": { + "light": "światło", + "theme": "Temat", + "dark": "ciemny", + "auto": "system" + }, + "compliance": { + "soc2Type2": "Raport SOC 2 Typ II", + "sandboxUpgradeTooltip": "Dostępne tylko w planie Professional lub Team.", + "professionalUpgradeTooltip": "Dostępne tylko w planie zespołowym lub wyższym.", + "iso27001": "Certyfikacja ISO 27001:2022", + "soc2Type1": "Raport SOC 2 Typ I", + "gdpr": "GDPR DPA" + }, + "imageInput": { + "dropImageHere": "Upuść swój obraz tutaj, lub", + "browse": "przeglądaj", + "supportedFormats": "Obsługuje PNG, JPG, JPEG, WEBP i GIF" + }, + "you": "Ty", + "avatar": { + "deleteTitle": "Usuń awatar", + "deleteDescription": "Czy na pewno chcesz usunąć swoje zdjęcie profilowe? Twoje konto będzie używać domyślnego, początkowego awatara." + }, + "feedback": { + "title": "Przekaż opinie", + "content": "Treść opinii", + "subtitle": "Proszę powiedz nam, co poszło nie tak z tą odpowiedzią.", + "placeholder": "Proszę opisać, co poszło nie tak lub jak możemy poprawić..." + }, + "label": { + "optional": "(Opcjonalnie)" + }, + "noData": "Brak danych", + "dynamicSelect": { + "error": "Nie udało się załadować opcji", + "noData": "Brak dostępnych opcji", + "loading": "Ładowanie opcji...", + "selected": "{{count}} wybrano" + } +} diff --git a/web/i18n/pl-PL/common.ts b/web/i18n/pl-PL/common.ts deleted file mode 100644 index 10f566258a..0000000000 --- a/web/i18n/pl-PL/common.ts +++ /dev/null @@ -1,810 +0,0 @@ -const translation = { - api: { - success: 'Sukces', - actionSuccess: 'Akcja powiodła się', - saved: 'Zapisane', - create: 'Utworzono', - remove: 'Usunięto', - actionFailed: 'Akcja nie powiodła się', - }, - operation: { - create: 'Utwórz', - confirm: 'Potwierdź', - cancel: 'Anuluj', - clear: 'Wyczyść', - save: 'Zapisz', - saveAndEnable: 'Zapisz i Włącz', - edit: 'Edytuj', - add: 'Dodaj', - added: 'Dodano', - refresh: 'Odśwież', - reset: 'Resetuj', - search: 'Szukaj', - change: 'Zmień', - remove: 'Usuń', - send: 'Wyślij', - copy: 'Kopiuj', - lineBreak: 'Złamanie linii', - sure: 'Jestem pewien', - download: 'Pobierz', - delete: 'Usuń', - settings: 'Ustawienia', - setup: 'Konfiguruj', - getForFree: 'Zdobądź za darmo', - reload: 'Przeładuj', - ok: 'OK', - log: 'Dziennik', - learnMore: 'Dowiedz się więcej', - params: 'Parametry', - duplicate: 'Duplikuj', - rename: 'Zmień nazwę', - audioSourceUnavailable: 'AudioSource jest niedostępny', - copyImage: 'Kopiuj obraz', - openInNewTab: 'Otwórz w nowej karcie', - zoomIn: 'Powiększenie', - zoomOut: 'Pomniejszanie', - saveAndRegenerate: 'Zapisywanie i regeneracja fragmentów podrzędnych', - view: 'Widok', - regenerate: 'Ponownie wygenerować', - viewMore: 'ZOBACZ WIĘCEJ', - close: 'Zamykać', - submit: 'Prześlij', - skip: 'Statek', - imageCopied: 'Skopiowany obraz', - deleteApp: 'Usuń aplikację', - copied: 'Kopiowane', - in: 'w', - viewDetails: 'Wyświetl szczegóły', - format: 'Format', - downloadFailed: 'Pobieranie nie powiodło się. Proszę spróbować ponownie później.', - more: 'Więcej', - downloadSuccess: 'Pobieranie zakończone.', - deSelectAll: 'Odznacz wszystkie', - selectAll: 'Zaznacz wszystkie', - config: 'Konfiguracja', - yes: 'Tak', - no: 'Nie', - deleteConfirmTitle: 'Usunąć?', - confirmAction: 'Proszę potwierdzić swoją akcję.', - noSearchResults: 'Nie znaleziono {{content}}', - resetKeywords: 'Resetuj słowa kluczowe', - selectCount: '{{count}} Wybrane', - searchCount: 'Znajdź {{count}} {{content}}', - noSearchCount: '0 {{content}}', - now: 'Teraz', - }, - placeholder: { - input: 'Proszę wprowadzić', - select: 'Proszę wybrać', - search: 'Szukaj...', - }, - voice: { - language: { - zhHans: 'Chiński', - zhHant: 'Chiński tradycyjny', - enUS: 'Angielski', - deDE: 'Niemiecki', - frFR: 'Francuski', - esES: 'Hiszpański', - itIT: 'Włoski', - thTH: 'Tajski', - idID: 'Indonezyjski', - jaJP: 'Japoński', - koKR: 'Koreański', - ptBR: 'Portugalski', - ruRU: 'Rosyjski', - ukUA: 'Ukraiński', - viVN: 'Wietnamski', - plPL: 'Polski', - roRO: 'Rumuński', - hiIN: 'Hindi', - trTR: 'Turecki', - faIR: 'Perski', - slSI: 'Słoweński', - arTN: 'Arabski tunezyjski', - }, - }, - unit: { - char: 'znaki', - }, - actionMsg: { - noModification: 'W tej chwili brak zmian.', - modifiedSuccessfully: 'Zmodyfikowano pomyślnie', - modifiedUnsuccessfully: 'Nie udało się zmodyfikować', - copySuccessfully: 'Skopiowano pomyślnie', - paySucceeded: 'Płatność zakończona sukcesem', - payCancelled: 'Płatność anulowana', - generatedSuccessfully: 'Wygenerowano pomyślnie', - generatedUnsuccessfully: 'Nie udało się wygenerować', - }, - model: { - params: { - temperature: 'Temperatura', - temperatureTip: - 'Kontroluje przypadkowość: obniżenie powoduje mniej przypadkowych uzupełnień. Gdy temperatura zbliża się do zera, model staje się deterministyczny i powtarzalny.', - top_p: 'Top P', - top_pTip: - 'Kontroluje różnorodność poprzez próbkowanie jądra: 0,5 oznacza, że rozważane są połowa wszystkich opcji ważonych prawdopodobieństwem.', - presence_penalty: 'Kara za obecność', - presence_penaltyTip: - 'Jak bardzo karać nowe tokeny w zależności od tego, czy pojawiły się już w tekście.\nZwiększa prawdopodobieństwo, że model zacznie rozmawiać o nowych tematach.', - frequency_penalty: 'Kara za częstotliwość', - frequency_penaltyTip: - 'Jak bardzo karać nowe tokeny bazując na ich dotychczasowej częstotliwości w tekście.\nZmniejsza prawdopodobieństwo, że model będzie powtarzał tę samą linię dosłownie.', - max_tokens: 'Maksymalna liczba tokenów', - max_tokensTip: - 'Służy do ograniczania maksymalnej długości odpowiedzi w tokenach. \nWiększe wartości mogą ograniczyć miejsce na słowa wstępne, dzienniki rozmów i Wiedzę. \nZaleca się ustawienie go poniżej dwóch trzecich\ngpt-4-1106-preview, gpt-4-vision-preview maksymalna liczba tokenów (input 128k output 4k)', - maxTokenSettingTip: - 'Twoje ustawienie maksymalnej liczby tokenów jest wysokie, potencjalnie ograniczając miejsce na monity, zapytania i dane. Rozważ ustawienie go poniżej 2/3.', - setToCurrentModelMaxTokenTip: - 'Maksymalna liczba tokenów została zaktualizowana do 80% maksymalnej liczby tokenów obecnego modelu {{maxToken}}.', - stop_sequences: 'Sekwencje zatrzymujące', - stop_sequencesTip: - 'Do czterech sekwencji, w których API przestanie generować dalsze tokeny. Zwrócony tekst nie będzie zawierał sekwencji zatrzymującej.', - stop_sequencesPlaceholder: 'Wpisz sekwencję i naciśnij Tab', - }, - tone: { - Creative: 'Kreatywny', - Balanced: 'Zrównoważony', - Precise: 'Precyzyjny', - Custom: 'Niestandardowy', - }, - addMoreModel: 'Przejdź do ustawień, aby dodać więcej modeli', - settingsLink: 'Ustawienia dostawcy modelu', - capabilities: 'Możliwości multimodalne', - }, - menus: { - status: 'beta', - explore: 'Eksploruj', - apps: 'Studio', - plugins: 'Pluginy', - pluginsTips: - 'Integruj pluginy stron trzecich lub twórz pluginy AI kompatybilne z ChatGPT.', - datasets: 'Wiedza', - datasetsTips: - 'NADCHODZI: Importuj swoje własne dane tekstowe lub wpisuj dane w czasie rzeczywistym przez Webhook, aby wzmocnić kontekst LLM.', - newApp: 'Nowa aplikacja', - newDataset: 'Utwórz Wiedzę', - tools: 'Narzędzia', - exploreMarketplace: 'Zapoznaj się z Marketplace', - appDetail: 'Szczegóły aplikacji', - account: 'klient', - }, - userProfile: { - settings: 'Ustawienia', - emailSupport: 'Wsparcie e-mail', - workspace: 'Przestrzeń robocza', - createWorkspace: 'Utwórz przestrzeń roboczą', - helpCenter: 'Pomoc', - roadmap: 'Plan działania', - community: 'Społeczność', - about: 'O', - logout: 'Wyloguj się', - support: 'Wsparcie', - github: 'GitHub', - compliance: 'Zgodność', - contactUs: 'Skontaktuj się z nami', - forum: 'Forum', - }, - settings: { - accountGroup: 'KONTO', - workplaceGroup: 'PRZESTRZEŃ ROBOCZA', - account: 'Moje konto', - members: 'Członkowie', - billing: 'Rozliczenia', - integrations: 'Integracje', - language: 'Język', - provider: 'Dostawca modelu', - dataSource: 'Źródło danych', - plugin: 'Pluginy', - apiBasedExtension: 'Rozszerzenie API', - generalGroup: 'OGÓLNE', - }, - account: { - avatar: 'Awatar', - name: 'Nazwa', - email: 'Email', - password: 'Hasło', - passwordTip: - 'Możesz ustawić stałe hasło, jeśli nie chcesz używać tymczasowych kodów logowania', - setPassword: 'Ustaw hasło', - resetPassword: 'Zresetuj hasło', - currentPassword: 'Obecne hasło', - newPassword: 'Nowe hasło', - confirmPassword: 'Potwierdź hasło', - notEqual: 'Dwa hasła są różne.', - langGeniusAccount: 'Konto Dify', - langGeniusAccountTip: 'Twoje konto Dify i powiązane dane użytkownika.', - editName: 'Edytuj nazwę', - showAppLength: 'Pokaż {{length}} aplikacje', - delete: 'Usuń konto', - deleteTip: 'Usunięcie konta spowoduje trwałe usunięcie wszystkich danych i nie będzie można ich odzyskać.', - myAccount: 'Moje konto', - studio: 'Dify Studio', - account: 'Rachunek', - deletePrivacyLinkTip: 'Aby uzyskać więcej informacji o tym, jak postępujemy z Twoimi danymi, zapoznaj się z naszą', - deletePrivacyLink: 'Polityka prywatności.', - deleteSuccessTip: 'Twoje konto potrzebuje czasu na dokończenie usuwania. Wyślemy Ci wiadomość e-mail, gdy wszystko będzie gotowe.', - deleteLabel: 'Aby potwierdzić, wpisz poniżej swój adres e-mail', - deletePlaceholder: 'Podaj swój adres e-mail', - sendVerificationButton: 'Wyślij kod weryfikacyjny', - verificationLabel: 'Kod weryfikacyjny', - verificationPlaceholder: 'Wklej 6-cyfrowy kod', - permanentlyDeleteButton: 'Trwale usuń konto', - feedbackTitle: 'Sprzężenie zwrotne', - feedbackLabel: 'Powiedz nam, dlaczego usunąłeś swoje konto?', - feedbackPlaceholder: 'Fakultatywny', - workspaceIcon: 'Ikona robocza', - workspaceName: 'Nazwa miejsca pracy', - editWorkspaceInfo: 'Edytuj informacje o przestrzeni roboczej', - changeEmail: { - emailLabel: 'Nowy e-mail', - emailPlaceholder: 'Wprowadź nowy adres e-mail', - changeTo: 'Zmień na {{email}}', - sendVerifyCode: 'Wyślij kod weryfikacyjny', - resend: 'Wyślij ponownie', - title: 'Zmień e-mail', - newEmail: 'Utwórz nowy adres e-mail', - existingEmail: 'Użytkownik z tym adresem e-mail już istnieje.', - content1: 'Jeśli będziesz kontynuować, wyślemy kod weryfikacyjny na {{email}} w celu ponownej autoryzacji.', - resendCount: 'Wyślij ponownie za {{count}}s', - codeLabel: 'Kod weryfikacyjny', - codePlaceholder: 'Wklej 6-cyfrowy kod', - continue: 'Kontynuuj', - content3: 'Wprowadź nowy adres e-mail, a my wyślemy ci kod weryfikacyjny.', - verifyEmail: 'Zweryfikuj swój aktualny adres e-mail', - verifyNew: 'Zweryfikuj swój nowy adres e-mail', - resendTip: 'Nie otrzymałeś kodu?', - content2: 'Twój aktualny adres email to {{email}}. Kod weryfikacyjny został wysłany na ten adres email.', - content4: 'Właśnie wysłaliśmy Ci tymczasowy kod weryfikacyjny na {{email}}.', - authTip: 'Gdy twoje e-mail zostanie zmienione, konta Google lub GitHub powiązane z twoim starym e-mailem nie będą mogły już logować się do tego konta.', - unAvailableEmail: 'Ten email jest tymczasowo niedostępny.', - }, - }, - members: { - team: 'Zespół', - invite: 'Dodaj', - name: 'NAZWA', - lastActive: 'OSTATNIA AKTYWNOŚĆ', - role: 'ROLE', - pending: 'Oczekujący...', - owner: 'Właściciel', - admin: 'Admin', - adminTip: 'Może tworzyć aplikacje i zarządzać ustawieniami zespołu', - normal: 'Normalny', - normalTip: 'Może tylko korzystać z aplikacji, nie może tworzyć aplikacji', - editor: 'Edytor', - editorTip: 'Może tworzyć i edytować aplikacje, ale nie zarządzać ustawieniami zespołu', - inviteTeamMember: 'Dodaj członka zespołu', - inviteTeamMemberTip: - 'Mogą uzyskać bezpośredni dostęp do danych Twojego zespołu po zalogowaniu.', - emailNotSetup: 'Serwer poczty nie jest skonfigurowany, więc nie można wysyłać zaproszeń e-mail. Proszę powiadomić użytkowników o linku do zaproszenia, który zostanie wydany po zaproszeniu.', - email: 'Email', - emailInvalid: 'Nieprawidłowy format e-maila', - emailPlaceholder: 'Proszę podać adresy e-mail', - sendInvite: 'Wyślij zaproszenie', - invitedAsRole: 'Zaproszony jako użytkownik typu {{role}}', - invitationSent: 'Zaproszenie wysłane', - invitationSentTip: - 'Zaproszenie zostało wysłane, a oni mogą zalogować się do Dify, aby uzyskać dostęp do danych Twojego zespołu.', - invitationLink: 'Link zaproszenia', - failedInvitationEmails: 'Poniższe osoby nie zostały pomyślnie zaproszone', - ok: 'OK', - removeFromTeam: 'Usuń z zespołu', - removeFromTeamTip: 'Usunie dostęp do zespołu', - setAdmin: 'Ustaw jako administratora', - setMember: 'Ustaw jako zwykłego członka', - setEditor: 'Ustaw jako edytora', - disInvite: 'Anuluj zaproszenie', - deleteMember: 'Usuń członka', - you: '(Ty)', - datasetOperatorTip: 'Może zarządzać tylko bazą wiedzy', - setBuilder: 'Ustaw jako budowniczego', - builder: 'Budowniczy', - builderTip: 'Może tworzyć i edytować własne aplikacje', - datasetOperator: 'Wiedza Admin', - transferModal: { - sendVerifyCode: 'Wyślij kod weryfikacyjny', - resend: 'Wyślij ponownie', - codePlaceholder: 'Wklej 6-cyfrowy kod', - verifyContent: 'Twój aktualny adres e-mail to {{email}}.', - continue: 'Kontynuuj', - verifyEmail: 'Zweryfikuj swój aktualny adres e-mail', - resendTip: 'Nie otrzymałeś kodu?', - transferPlaceholder: 'Wybierz członka zespołu…', - transfer: 'Przenieś własność przestrzeni roboczej', - warning: 'Zaraz przekażesz własność „{{workspace}}”. To nastąpi natychmiast i nie można tego cofnąć.', - title: 'Przenieś własność przestrzeni roboczej', - codeLabel: 'Kod weryfikacyjny', - transferLabel: 'Przenieś właśność przestrzeni roboczej na', - resendCount: 'Wyślij ponownie za {{count}}s', - verifyContent2: 'Wyślemy tymczasowy kod weryfikacyjny na ten adres e-mail w celu ponownej autoryzacji.', - sendTip: 'Jeśli będziesz kontynuować, wyślemy kod weryfikacyjny na {{email}} w celu ponownej autoryzacji.', - warningTip: 'Staniesz się członkiem administracji, a nowy właściciel będzie miał pełną kontrolę.', - }, - transferOwnership: 'Przenieś własność', - }, - integrations: { - connected: 'Połączony', - google: 'Google', - googleAccount: 'Zaloguj się przy użyciu konta Google', - github: 'GitHub', - githubAccount: 'Zaloguj się przy użyciu konta GitHub', - connect: 'Połącz', - }, - language: { - displayLanguage: 'Język interfejsu', - timezone: 'Strefa czasowa', - }, - provider: { - apiKey: 'Klucz API', - enterYourKey: 'Wprowadź tutaj swój klucz API', - invalidKey: 'Nieprawidłowy klucz API OpenAI', - validatedError: 'Weryfikacja nie powiodła się: ', - validating: 'Weryfikowanie klucza...', - saveFailed: 'Zapis klucza API nie powiódł się', - apiKeyExceedBill: 'Ten KLUCZ API nie ma dostępnych limitów, przeczytaj', - addKey: 'Dodaj klucz', - comingSoon: 'Już wkrótce', - editKey: 'Edytuj', - invalidApiKey: 'Nieprawidłowy klucz API', - azure: { - apiBase: 'Podstawa API', - apiBasePlaceholder: - 'Adres URL podstawowy Twojego końcowego punktu Azure OpenAI.', - apiKey: 'Klucz API', - apiKeyPlaceholder: 'Wprowadź tutaj swój klucz API', - helpTip: 'Dowiedz się więcej o usłudze Azure OpenAI', - }, - openaiHosted: { - openaiHosted: 'Hostowany OpenAI', - onTrial: 'NA PROBĘ', - exhausted: 'WYCZERPANY LIMIT', - desc: 'Usługa hostowania OpenAI dostarczana przez Dify pozwala korzystać z modeli takich jak GPT-3.5. Przed wyczerpaniem limitu próbnego należy skonfigurować inne dostawców modeli.', - callTimes: 'Czasy wywołań', - usedUp: 'Limit próbny został wyczerpany. Dodaj własnego dostawcę modeli.', - useYourModel: 'Aktualnie używany jest własny dostawca modeli.', - close: 'Zamknij', - }, - anthropicHosted: { - anthropicHosted: 'Anthropic Claude', - onTrial: 'NA PROBĘ', - exhausted: 'WYCZERPANY LIMIT', - desc: 'Potężny model, który doskonale sprawdza się w szerokim spektrum zadań, od zaawansowanego dialogu i generowania treści twórczych po szczegółowe instrukcje.', - callTimes: 'Czasy wywołań', - usedUp: 'Limit próbny został wyczerpany. Dodaj własnego dostawcę modeli.', - useYourModel: 'Aktualnie używany jest własny dostawca modeli.', - close: 'Zamknij', - trialQuotaTip: 'Twój limit próbny Anthropic wygaśnie w dniu 11.03.2025 i nie będzie już dostępny po tym czasie. Prosimy o skorzystanie z niego w odpowiednim czasie.', - }, - anthropic: { - using: 'Zdolność do osadzania jest używana', - enableTip: - 'Aby włączyć model Anthropica, musisz najpierw powiązać się z usługą OpenAI lub Azure OpenAI.', - notEnabled: 'Nie włączono', - keyFrom: 'Pobierz swój klucz API od Anthropic', - }, - encrypted: { - front: 'Twój KLUCZ API będzie szyfrowany i przechowywany za pomocą', - back: ' technologii.', - }, - }, - modelProvider: { - notConfigured: - 'Systemowy model nie został jeszcze w pełni skonfigurowany, co może skutkować niedostępnością niektórych funkcji.', - systemModelSettings: 'Ustawienia modelu systemowego', - systemModelSettingsLink: - 'Dlaczego konieczne jest skonfigurowanie modelu systemowego?', - selectModel: 'Wybierz swój model', - setupModelFirst: 'Proszę najpierw skonfigurować swój model', - systemReasoningModel: { - key: 'Model wnioskowania systemowego', - tip: 'Ustaw domyślny model wnioskowania do użytku przy tworzeniu aplikacji, a także cechy takie jak generowanie nazw dialogów i sugestie następnego pytania będą również korzystać z domyślnego modelu wnioskowania.', - }, - embeddingModel: { - key: 'Model osadzania', - tip: 'Ustaw domyślny model do przetwarzania osadzania dokumentów wiedzy; zarówno pozyskiwanie, jak i importowanie wiedzy wykorzystują ten model osadzania do przetwarzania wektorowego. Zmiana spowoduje niezgodność wymiarów wektorów między importowaną wiedzą a pytaniem, co skutkować będzie niepowodzeniem w pozyskiwaniu. Aby uniknąć niepowodzeń, prosimy nie zmieniać tego modelu dowolnie.', - required: 'Model osadzania jest wymagany', - }, - speechToTextModel: { - key: 'Model mowy na tekst', - tip: 'Ustaw domyślny model do przetwarzania mowy na tekst w rozmowach.', - }, - ttsModel: { - key: 'Model tekstu na mowę', - tip: 'Ustaw domyślny model dla konwersji tekstu na mowę w rozmowach.', - }, - rerankModel: { - key: 'Model ponownego rankingu', - tip: 'Model ponownego rankingu zmieni kolejność listy dokumentów kandydatów na podstawie semantycznego dopasowania z zapytaniem użytkownika, poprawiając wyniki rankingu semantycznego', - }, - quota: 'Limit', - searchModel: 'Model wyszukiwania', - noModelFound: 'Nie znaleziono modelu dla {{model}}', - models: 'Modele', - showMoreModelProvider: 'Pokaż więcej dostawców modeli', - selector: { - tip: 'Ten model został usunięty. Proszę dodać model lub wybrać inny model.', - emptyTip: 'Brak dostępnych modeli', - emptySetting: 'Przejdź do ustawień, aby skonfigurować', - rerankTip: 'Proszę skonfigurować model ponownego rankingu', - }, - card: { - quota: 'LIMIT', - onTrial: 'Na próbę', - paid: 'Płatny', - quotaExhausted: 'Wyczerpany limit', - callTimes: 'Czasy wywołań', - tokens: 'Tokeny', - buyQuota: 'Kup limit', - priorityUse: 'Używanie z priorytetem', - removeKey: 'Usuń klucz API', - tip: 'Priorytet zostanie nadany płatnemu limitowi. Po wyczerpaniu limitu próbnego zostanie użyty limit płatny.', - }, - item: { - deleteDesc: - '{{modelName}} są używane jako modele wnioskowania systemowego. Niektóre funkcje mogą nie być dostępne po usunięciu. Proszę potwierdź.', - freeQuota: 'LIMIT GRATIS', - }, - addApiKey: 'Dodaj swój klucz API', - invalidApiKey: 'Nieprawidłowy klucz API', - encrypted: { - front: 'Twój KLUCZ API będzie szyfrowany i przechowywany za pomocą', - back: ' technologii.', - }, - freeQuota: { - howToEarn: 'Jak zdobyć', - }, - addMoreModelProvider: 'DODAJ WIĘCEJ DOSTAWCÓW MODELI', - addModel: 'Dodaj model', - modelsNum: '{{num}} Modele', - showModels: 'Pokaż modele', - showModelsNum: 'Pokaż {{num}} modele', - collapse: 'Zwiń', - config: 'Konfiguracja', - modelAndParameters: 'Model i parametry', - model: 'Model', - featureSupported: '{{feature}} obsługiwane', - callTimes: 'Czasy wywołań', - credits: 'Kredyty wiadomości', - buyQuota: 'Kup limit', - getFreeTokens: 'Odbierz darmowe tokeny', - priorityUsing: 'Priorytetyzacja użycia', - deprecated: 'Przestarzałe', - confirmDelete: 'potwierdzić usunięcie?', - quotaTip: 'Pozostałe dostępne darmowe tokeny', - loadPresets: 'Załaduj ustawienia wstępne', - parameters: 'PARAMETRY', - apiKey: 'KLUCZ-API', - loadBalancing: 'Równoważenie obciążenia', - defaultConfig: 'Domyślna konfiguracja', - providerManagedDescription: 'Użyj pojedynczego zestawu poświadczeń dostarczonych przez dostawcę modelu.', - loadBalancingHeadline: 'Równoważenie obciążenia', - modelHasBeenDeprecated: 'Ten model jest przestarzały', - loadBalancingDescription: 'Zmniejsz presję dzięki wielu zestawom poświadczeń.', - providerManaged: 'Zarządzany przez dostawcę', - upgradeForLoadBalancing: 'Uaktualnij swój plan, aby włączyć równoważenie obciążenia.', - apiKeyStatusNormal: 'Stan APIKey jest normalny', - loadBalancingLeastKeyWarning: 'Aby włączyć równoważenie obciążenia, muszą być włączone co najmniej 2 klucze.', - loadBalancingInfo: 'Domyślnie równoważenie obciążenia używa strategii działania okrężnego. Jeśli zostanie uruchomione ograniczenie szybkości, zostanie zastosowany 1-minutowy okres odnowienia.', - configLoadBalancing: 'Równoważenie obciążenia konfiguracji', - editConfig: 'Edytuj konfigurację', - addConfig: 'Dodaj konfigurację', - apiKeyRateLimit: 'Osiągnięto limit szybkości, dostępny po {{sekund}}s', - installProvider: 'Instalowanie dostawców modeli', - emptyProviderTip: 'Najpierw zainstaluj dostawcę modeli.', - discoverMore: 'Dowiedz się więcej w', - toBeConfigured: 'Do skonfigurowania', - configureTip: 'Konfigurowanie klucza interfejsu API lub dodawanie modelu do użycia', - emptyProviderTitle: 'Dostawca modelu nie jest skonfigurowany', - auth: { - apiKeyModal: { - addModel: 'Dodaj model', - title: 'Konfiguracja autoryzacji klucza API', - desc: 'Po skonfigurowaniu poświadczeń wszyscy członkowie w przestrzeni roboczej mogą korzystać z tego modelu podczas orkiestracji aplikacji.', - }, - addApiKey: 'Dodaj klucz API', - configModel: 'Skonfiguruj model', - modelCredentials: 'Uprawnienia modelu', - configLoadBalancing: 'Konfiguracja równoważenia obciążenia', - unAuthorized: 'Nieautoryzowany', - specifyModelCredentialTip: 'Użyj skonfigurowanych poświadczeń modelu.', - addCredential: 'Dodaj dane uwierzytelniające', - providerManagedTip: 'Bieżąca konfiguracja jest hostowana przez dostawcę.', - specifyModelCredential: 'Określ dane uwierzytelniające modelu', - authorizationError: 'Błąd autoryzacji', - apiKeys: 'Klucze API', - providerManaged: 'Zarządzane przez dostawcę', - addNewModel: 'Dodaj nowy model', - authRemoved: 'Autoryzacja usunięta', - addModelCredential: 'Dodaj dane uwierzytelniające modelu', - customModelCredentials: 'Poświadczenia modelu niestandardowego', - modelCredential: 'Poświadczenie modelu', - removeModel: 'Usuń model', - addModel: 'Dodaj model', - manageCredentials: 'Zarządzanie poświadczeniami', - addNewModelCredential: 'Dodawanie nowego poświadczenia modelu', - customModelCredentialsDeleteTip: 'Poświadczenie jest w użyciu i nie można go usunąć', - selectModelCredential: 'Wybieranie poświadczeń modelu', - editModelCredential: 'Edytowanie poświadczeń modelu', - }, - parametersInvalidRemoved: 'Niektóre parametry są nieprawidłowe i zostały usunięte.', - installDataSourceProvider: 'Zainstaluj dostawców źródeł danych', - }, - dataSource: { - add: 'Dodaj źródło danych', - connect: 'Połącz', - notion: { - title: 'Notion', - description: 'Korzystanie z Notion jako źródła danych dla Wiedzy.', - connectedWorkspace: 'Połączona przestrzeń robocza', - addWorkspace: 'Dodaj przestrzeń roboczą', - connected: 'Połączono', - disconnected: 'Rozłączono', - changeAuthorizedPages: 'Zmień uprawnione strony', - pagesAuthorized: 'Strony autoryzowane', - sync: 'Synchronizuj', - remove: 'Usuń', - selector: { - pageSelected: 'Zaznaczone strony', - searchPages: 'Szukaj stron...', - noSearchResult: 'Brak wyników wyszukiwania', - addPages: 'Dodaj strony', - preview: 'PODGLĄD', - }, - integratedAlert: 'Notion jest zintegrowany za pomocą wewnętrznych poświadczeń, nie ma potrzeby ponownej autoryzacji.', - }, - website: { - active: 'Aktywny', - with: 'Z', - title: 'Strona internetowa', - description: 'Importuj zawartość ze stron internetowych za pomocą robota indeksującego.', - configuredCrawlers: 'Skonfigurowane roboty indeksujące', - inactive: 'Nieaktywny', - }, - configure: 'Konfigurować', - }, - plugin: { - serpapi: { - apiKey: 'Klucz API', - apiKeyPlaceholder: 'Wprowadź swój klucz API', - keyFrom: 'Pobierz swój klucz SerpAPI ze strony konta SerpAPI', - }, - }, - apiBasedExtension: { - title: - 'Rozszerzenia oparte na interfejsie API zapewniają scentralizowane zarządzanie interfejsami API, upraszczając konfigurację dla łatwego użytkowania w aplikacjach Dify.', - link: 'Dowiedz się, jak opracować własne rozszerzenie interfejsu API.', - add: 'Dodaj rozszerzenie interfejsu API', - selector: { - title: 'Rozszerzenie interfejsu API', - placeholder: 'Wybierz rozszerzenie interfejsu API', - manage: 'Zarządzaj rozszerzeniem interfejsu API', - }, - modal: { - title: 'Dodaj rozszerzenie interfejsu API', - editTitle: 'Edytuj rozszerzenie interfejsu API', - name: { - title: 'Nazwa', - placeholder: 'Proszę wprowadź nazwę', - }, - apiEndpoint: { - title: 'Koniec API', - placeholder: 'Proszę wprowadź koniec API', - }, - apiKey: { - title: 'Klucz API', - placeholder: 'Proszę wprowadź klucz API', - lengthError: 'Długość klucza API nie może być mniejsza niż 5 znaków', - }, - }, - type: 'Typ', - }, - about: { - changeLog: 'Dziennik zmian', - updateNow: 'Aktualizuj teraz', - nowAvailable: 'Dify {{version}} jest teraz dostępny.', - latestAvailable: 'Dify {{version}} jest najnowszą dostępną wersją.', - }, - appMenus: { - overview: 'Monitorowanie', - promptEng: 'Orkiestracja', - apiAccess: 'Dostęp API', - logAndAnn: 'Logi i ogł.', - logs: 'Logi', - }, - environment: { - testing: 'TESTOWANIE', - development: 'ROZWOJOWA', - }, - appModes: { - completionApp: 'Generator tekstu', - chatApp: 'Aplikacja czatowa', - }, - datasetMenus: { - documents: 'Dokumenty', - hitTesting: 'Testowanie poboru', - settings: 'Ustawienia', - emptyTip: - 'Wiedza nie została powiązana, przejdź do aplikacji lub wtyczki, aby ukończyć powiązanie.', - viewDoc: 'Zobacz dokumentację', - relatedApp: 'powiązane aplikacje', - noRelatedApp: 'Brak połączonych aplikacji', - pipeline: 'Rurociąg', - }, - voiceInput: { - speaking: 'Mów teraz...', - converting: 'Konwertowanie na tekst...', - notAllow: 'mikrofon nieautoryzowany', - }, - 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': 'Tekst-Davinci-003', - 'text-embedding-ada-002': 'Tekst-Wan-Ada-002', - 'whisper-1': 'Szept-1', - 'claude-instant-1': 'Claude-Natychmiastowy', - 'claude-2': 'Claude-2', - }, - chat: { - renameConversation: 'Zmień nazwę rozmowy', - conversationName: 'Nazwa rozmowy', - conversationNamePlaceholder: 'Proszę wprowadź nazwę rozmowy', - conversationNameCanNotEmpty: 'Nazwa rozmowy wymagana', - citation: { - title: 'Cytaty', - linkToDataset: 'Link do Wiedzy', - characters: 'Postacie:', - hitCount: 'Liczba trafień:', - vectorHash: 'Wektor hash:', - hitScore: 'Wynik trafień:', - }, - inputPlaceholder: 'Porozmawiaj z {{botName}}', - thought: 'Myśl', - thinking: 'Myślenie...', - resend: 'Prześlij ponownie', - }, - promptEditor: { - placeholder: - 'Wpisz swoje słowo kluczowe tutaj, wprowadź \'{\' aby wstawić zmienną, wprowadź \'/\' aby wstawić blok treści słownika', - context: { - item: { - title: 'Kontekst', - desc: 'Wstaw szablon kontekstu', - }, - modal: { - title: '{{num}} Wiedzy w Kontekście', - add: 'Dodaj Kontekst ', - footer: 'Możesz zarządzać kontekstami poniżej w sekcji Kontekstów.', - }, - }, - history: { - item: { - title: 'Historia rozmów', - desc: 'Wstaw szablon historycznej wiadomości', - }, - modal: { - title: 'PRZYKŁAD', - user: 'Cześć', - assistant: 'Cześć! W czym mogę pomóc?', - edit: 'Edytuj nazwy ról rozmów', - }, - }, - variable: { - item: { - title: 'Zmienne i Narzędzia Zewnętrzne', - desc: 'Wstaw Zmienne i Narzędzia Zewnętrzne', - }, - outputToolDisabledItem: { - title: 'Zmienne', - desc: 'Wstaw Zmienne', - }, - modal: { - add: 'Nowa zmienna', - addTool: 'Nowe narzędzie', - }, - }, - query: { - item: { - title: 'Zapytanie', - desc: 'Wstaw szablon zapytania użytkownika', - }, - }, - existed: 'Już istnieje w poleceniu', - }, - imageUploader: { - uploadFromComputer: 'Załaduj z komputera', - uploadFromComputerReadError: 'Błąd odczytu obrazu, spróbuj ponownie.', - uploadFromComputerUploadError: - 'Błąd przesyłania obrazu, prześlij go ponownie.', - uploadFromComputerLimit: - 'Obrazy do przesłania nie mogą przekroczyć {{size}} MB', - pasteImageLink: 'Wklej link do obrazu', - pasteImageLinkInputPlaceholder: 'Wklej tutaj link do obrazu', - pasteImageLinkInvalid: 'Nieprawidłowy link obrazu', - imageUpload: 'Przesyłanie obrazu', - }, - tag: { - placeholder: 'Wszystkie tagi', - addNew: 'Dodaj nowy tag', - noTag: 'Brak tagów', - noTagYet: 'Brak tagów jeszcze', - addTag: 'Dodaj tagi', - editTag: 'Edytuj tagi', - manageTags: 'Zarządzaj Tagami', - selectorPlaceholder: 'Wpisz, aby wyszukać lub utworzyć', - create: 'Utwórz', - delete: 'Usuń tag', - deleteTip: 'Ten tag jest używany, czy chcesz go usunąć?', - created: 'Tag został pomyślnie utworzony', - failed: 'Nie udało się utworzyć tagu', - }, - errorMsg: { - fieldRequired: '{{field}} jest wymagane', - urlError: 'Adres URL powinien zaczynać się od http:// lub https://', - }, - fileUploader: { - pasteFileLinkInputPlaceholder: 'Wpisz adres URL...', - uploadFromComputerLimit: 'Prześlij plik nie może przekraczać {{size}}', - pasteFileLink: 'Wklej link do pliku', - uploadFromComputerUploadError: 'Przesyłanie pliku nie powiodło się, prześlij ponownie.', - pasteFileLinkInvalid: 'Nieprawidłowy link do pliku', - uploadFromComputerReadError: 'Odczyt pliku nie powiódł się, spróbuj ponownie.', - fileExtensionNotSupport: 'Rozszerzenie pliku nie jest obsługiwane', - uploadFromComputer: 'Przesyłanie lokalne', - fileExtensionBlocked: 'Ten typ pliku jest zablokowany ze względów bezpieczeństwa', - uploadDisabled: 'Przesyłanie plików jest wyłączone', - }, - license: { - expiring_plural: 'Wygasa za {{count}} dni', - expiring: 'Wygasa w ciągu jednego dnia', - unlimited: 'Nieograniczony', - }, - pagination: { - perPage: 'Ilość elementów na stronie', - }, - theme: { - light: 'światło', - theme: 'Temat', - dark: 'ciemny', - auto: 'system', - }, - compliance: { - soc2Type2: 'Raport SOC 2 Typ II', - sandboxUpgradeTooltip: 'Dostępne tylko w planie Professional lub Team.', - professionalUpgradeTooltip: 'Dostępne tylko w planie zespołowym lub wyższym.', - iso27001: 'Certyfikacja ISO 27001:2022', - soc2Type1: 'Raport SOC 2 Typ I', - gdpr: 'GDPR DPA', - }, - imageInput: { - dropImageHere: 'Upuść swój obraz tutaj, lub', - browse: 'przeglądaj', - supportedFormats: 'Obsługuje PNG, JPG, JPEG, WEBP i GIF', - }, - you: 'Ty', - avatar: { - deleteTitle: 'Usuń awatar', - deleteDescription: 'Czy na pewno chcesz usunąć swoje zdjęcie profilowe? Twoje konto będzie używać domyślnego, początkowego awatara.', - }, - feedback: { - title: 'Przekaż opinie', - content: 'Treść opinii', - subtitle: 'Proszę powiedz nam, co poszło nie tak z tą odpowiedzią.', - placeholder: 'Proszę opisać, co poszło nie tak lub jak możemy poprawić...', - }, - label: { - optional: '(Opcjonalnie)', - }, - noData: 'Brak danych', - dynamicSelect: { - error: 'Nie udało się załadować opcji', - noData: 'Brak dostępnych opcji', - loading: 'Ładowanie opcji...', - selected: '{{count}} wybrano', - }, -} - -export default translation diff --git a/web/i18n/pl-PL/custom.json b/web/i18n/pl-PL/custom.json new file mode 100644 index 0000000000..deb443d92e --- /dev/null +++ b/web/i18n/pl-PL/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "Dostosowanie", + "upgradeTip": { + "prefix": "Zaktualizuj swój plan, aby", + "suffix": "dostosować swoją markę.", + "title": "Zmień swój plan", + "des": "Zaktualizuj swój plan, aby dostosować swoją markę" + }, + "webapp": { + "title": "Dostosuj markę aplikacji internetowej", + "removeBrand": "Usuń zasilane przez Dify", + "changeLogo": "Zmień obraz marki zasilany przez Brand", + "changeLogoTip": "Format SVG lub PNG o minimalnym rozmiarze 40x40px" + }, + "app": { + "title": "Dostosuj markę nagłówka aplikacji", + "changeLogoTip": "Format SVG lub PNG o minimalnym rozmiarze 80x80px" + }, + "upload": "Prześlij", + "uploading": "Przesyłanie", + "uploadedFail": "Wystąpił problem podczas przesyłania obrazu, proszę spróbować ponownie.", + "change": "Zmień", + "apply": "Zastosuj", + "restore": "Przywróć domyślne", + "customize": { + "contactUs": " skontaktuj się z nami ", + "prefix": "Aby dostosować logo marki w aplikacji, proszę", + "suffix": "dla aktualizacji do wersji Enterprise." + } +} diff --git a/web/i18n/pl-PL/custom.ts b/web/i18n/pl-PL/custom.ts deleted file mode 100644 index 8703ebb817..0000000000 --- a/web/i18n/pl-PL/custom.ts +++ /dev/null @@ -1,33 +0,0 @@ -const translation = { - custom: 'Dostosowanie', - upgradeTip: { - prefix: 'Zaktualizuj swój plan, aby', - suffix: 'dostosować swoją markę.', - title: 'Zmień swój plan', - des: 'Zaktualizuj swój plan, aby dostosować swoją markę', - }, - webapp: { - title: 'Dostosuj markę aplikacji internetowej', - removeBrand: 'Usuń zasilane przez Dify', - changeLogo: 'Zmień obraz marki zasilany przez Brand', - changeLogoTip: 'Format SVG lub PNG o minimalnym rozmiarze 40x40px', - }, - app: { - title: 'Dostosuj markę nagłówka aplikacji', - changeLogoTip: 'Format SVG lub PNG o minimalnym rozmiarze 80x80px', - }, - upload: 'Prześlij', - uploading: 'Przesyłanie', - uploadedFail: - 'Wystąpił problem podczas przesyłania obrazu, proszę spróbować ponownie.', - change: 'Zmień', - apply: 'Zastosuj', - restore: 'Przywróć domyślne', - customize: { - contactUs: ' skontaktuj się z nami ', - prefix: 'Aby dostosować logo marki w aplikacji, proszę', - suffix: 'dla aktualizacji do wersji Enterprise.', - }, -} - -export default translation diff --git a/web/i18n/pl-PL/dataset-creation.json b/web/i18n/pl-PL/dataset-creation.json new file mode 100644 index 0000000000..f9e58b2a58 --- /dev/null +++ b/web/i18n/pl-PL/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "Wiedza" + }, + "one": "Wybierz źródło danych", + "two": "Przetwarzanie i Czyszczenie Tekstu", + "three": "Wykonaj i zakończ" + }, + "error": { + "unavailable": "Ta Wiedza nie jest dostępna" + }, + "stepOne": { + "filePreview": "Podgląd pliku", + "pagePreview": "Podgląd strony", + "dataSourceType": { + "file": "Importuj z pliku tekstowego", + "notion": "Synchronizuj z Notion", + "web": "Synchronizuj z witryny" + }, + "uploader": { + "title": "Prześlij plik tekstowy", + "button": "Przeciągnij i upuść pliki lub foldery lub", + "buttonSingleFile": "Przeciągnij i upuść plik lub", + "browse": "Przeglądaj", + "tip": "Obsługuje {{supportTypes}}. Maksymalnie {{size}}MB każdy.", + "validation": { + "typeError": "Nieobsługiwany typ pliku", + "size": "Plik jest za duży. Maksymalnie {{size}}MB", + "count": "Nieobsługiwane przesyłanie wielu plików", + "filesNumber": "Osiągnąłeś limit przesłania partii {{filesNumber}}." + }, + "cancel": "Anuluj", + "change": "Zmień", + "failed": "Przesyłanie nie powiodło się" + }, + "notionSyncTitle": "Notion nie jest podłączony", + "notionSyncTip": "Aby synchronizować z Notion, najpierw trzeba ustanowić połączenie z Notion.", + "connect": "Przejdź do połączenia", + "button": "dalej", + "emptyDatasetCreation": "Chcę utworzyć pustą Wiedzę", + "modal": { + "title": "Utwórz pustą Wiedzę", + "tip": "Pusta Wiedza nie będzie zawierała żadnych dokumentów, a można przesyłać dokumenty w dowolnym momencie.", + "input": "Nazwa Wiedzy", + "placeholder": "Proszę wpisz", + "nameNotEmpty": "Nazwa nie może być pusta", + "nameLengthInvalid": "Nazwa musi zawierać od 1 do 40 znaków", + "cancelButton": "Anuluj", + "confirmButton": "Utwórz", + "failed": "Utworzenie nie powiodło się" + }, + "website": { + "limit": "Ograniczać", + "firecrawlDoc": "Dokumentacja Firecrawl", + "unknownError": "Nieznany błąd", + "fireCrawlNotConfiguredDescription": "Skonfiguruj Firecrawl z kluczem API, aby z niego korzystać.", + "run": "Biegać", + "configure": "Konfigurować", + "resetAll": "Zresetuj wszystko", + "preview": "Prapremiera", + "exceptionErrorTitle": "Wystąpił wyjątek podczas uruchamiania zadania Firecrawl:", + "maxDepth": "Maksymalna głębokość", + "crawlSubPage": "Przeszukiwanie podstron", + "options": "Opcje", + "scrapTimeInfo": "Zeskrobano {{total}} stron w sumie w ciągu {{time}}s", + "totalPageScraped": "Łączna liczba zeskrobanych stron:", + "extractOnlyMainContent": "Wyodrębnij tylko główną zawartość (bez nagłówków, nawigacji, stopek itp.)", + "excludePaths": "Wykluczanie ścieżek", + "includeOnlyPaths": "Uwzględnij tylko ścieżki", + "selectAll": "Zaznacz wszystko", + "firecrawlTitle": "Wyodrębnij zawartość internetową za pomocą 🔥Firecrawl", + "fireCrawlNotConfigured": "Firecrawl nie jest skonfigurowany", + "maxDepthTooltip": "Maksymalna głębokość przeszukiwania względem wprowadzonego adresu URL. Głębokość 0 po prostu zeskrobuje stronę z wprowadzonego adresu URL, głębokość 1 zeskrobuje adres URL i wszystko po wprowadzeniuURL+ jeden / i tak dalej.", + "useSitemap": "Użyj mapy witryny", + "useSitemapTooltip": "Postępuj zgodnie z mapą witryny, aby zindeksować witrynę. Jeśli nie, Jina Reader będzie indeksować iteracyjnie w oparciu o trafność strony, dając mniej stron, ale o wyższej jakości.", + "chooseProvider": "Wybierz dostawcę", + "jinaReaderDocLink": "https://jina.ai/reader", + "jinaReaderNotConfigured": "Czytnik Jina nie jest skonfigurowany", + "jinaReaderDoc": "Dowiedz się więcej o Jina Reader", + "jinaReaderTitle": "Konwertowanie całej witryny na język Markdown", + "jinaReaderNotConfiguredDescription": "Skonfiguruj Jina Reader, wprowadzając bezpłatny klucz API, aby uzyskać dostęp.", + "watercrawlTitle": "Wyodrębnij treści z sieci za pomocą Watercrawl", + "configureWatercrawl": "Skonfiguruj Watercrawl", + "configureJinaReader": "Skonfiguruj Czytnik Jina", + "configureFirecrawl": "Skonfiguruj Firecrawl", + "watercrawlDoc": "Dokumentacja Watercrawl", + "waterCrawlNotConfiguredDescription": "Skonfiguruj Watercrawl z kluczem API, aby go używać.", + "waterCrawlNotConfigured": "Watercrawl nie jest skonfigurowany", + "running": "Bieganie" + }, + "cancel": "Anuluj" + }, + "stepTwo": { + "segmentation": "Ustawienia bloków tekstu", + "auto": "Automatycznie", + "autoDescription": "Automatyczne ustawianie bloków i reguł preprocessingu. Nieużytkownicy są zaleceni do wyboru tej opcji.", + "custom": "Niestandardowo", + "customDescription": "Dostosuj reguły bloków, długość bloków i reguły preprocessingu itp.", + "separator": "Separator bloków", + "separatorPlaceholder": "Na przykład nowa linia (\\n) lub specjalny separator (np. \"***\")", + "maxLength": "Maksymalna długość bloku", + "overlap": "Nakładka bloków", + "overlapTip": "Ustawienie nakładki bloków pozwala zachować semantyczną zgodność między nimi, poprawiając efekt pobierania. Zaleca się ustawienie 10%-25% maksymalnej długości bloku.", + "overlapCheck": "nakładka bloków nie powinna być większa niż maksymalna długość bloku", + "rules": "Reguły preprocessingu tekstu", + "removeExtraSpaces": "Zastąp kolejne spacje, nowe linie i tabulatory", + "removeUrlEmails": "Usuń wszystkie adresy URL i e-maile", + "removeStopwords": "Usuń słowa powszechne takie jak \"a\", \"an\", \"the\"", + "preview": "Potwierdź i Podgląd", + "reset": "Reset", + "indexMode": "Tryb indeksowania", + "qualified": "Wysoka jakość", + "recommend": "Polecać", + "qualifiedTip": "Wywołaj domyślne interfejsy wbudowania systemu do przetwarzania, zapewniając wyższą dokładność podczas zapytań przez użytkowników.", + "warning": "Proszę najpierw skonfigurować klucz API dostawcy modelu.", + "click": "Przejdź do ustawień", + "economical": "Ekonomiczny", + "economicalTip": "Użyj offline'owych silników wektorowych, indeksów słów kluczowych itp., aby zmniejszyć dokładność bez wydawania tokenów", + "QATitle": "Segmentacja w formacie pytania i odpowiedzi", + "QATip": "Włączenie tej opcji spowoduje zużycie większej liczby tokenów", + "QALanguage": "Segmentacja przy użyciu", + "estimateCost": "Oszacowanie", + "estimateSegment": "Oszacowane bloki", + "segmentCount": "bloki", + "calculating": "Obliczanie...", + "fileSource": "Przetwarzaj dokumenty", + "notionSource": "Przetwarzaj strony", + "other": "i inne ", + "fileUnit": " plików", + "notionUnit": " stron", + "previousStep": "Poprzedni krok", + "nextStep": "Zapisz & Przetwarzaj", + "save": "Zapisz & Przetwarzaj", + "cancel": "Anuluj", + "sideTipTitle": "Dlaczego blok i preprocess?", + "sideTipP1": "Podczas przetwarzania danych tekstowych, blok i czyszczenie są dwoma ważnymi krokami preprocessingu.", + "sideTipP2": "Segmentacja dzieli długi tekst na akapity, dzięki czemu modele są w stanie lepiej zrozumieć. Poprawia to jakość i trafność wyników modelu.", + "sideTipP3": "Czyszczenie usuwa zbędne znaki i formatowanie, sprawiając, że Wiedza jest czystsza i łatwiejsza do analizy.", + "sideTipP4": "Odpowiednie blok i czyszczenie poprawiają wydajność modelu, zapewniając bardziej dokładne i wartościowe wyniki.", + "previewTitle": "Podgląd", + "previewTitleButton": "Podgląd", + "previewButton": "Przełącz do formatu pytania i odpowiedzi", + "previewSwitchTipStart": "Aktulany podgląd bloku jest w formacie tekstu, przełączenie na podgląd w formacie pytania i odpowiedzi spowoduje", + "previewSwitchTipEnd": " dodatkowe zużycie tokenów", + "characters": "znaki", + "indexSettingTip": "Aby zmienić metodę indeksowania, przejdź do ", + "retrievalSettingTip": "Aby zmienić metodę indeksowania, przejdź do ", + "datasetSettingLink": "ustawień Wiedzy.", + "webpageUnit": "Stron", + "websiteSource": "Witryna internetowa przetwarzania wstępnego", + "separatorTip": "Ogranicznik to znak używany do oddzielania tekstu. \\n\\n i \\n są powszechnie używanymi ogranicznikami do oddzielania akapitów i wierszy. W połączeniu z przecinkami (\\n\\n,\\n), akapity będą segmentowane wierszami po przekroczeniu maksymalnej długości fragmentu. Możesz również skorzystać ze zdefiniowanych przez siebie specjalnych ograniczników (np. ***).", + "maxLengthCheck": "Maksymalna długość porcji powinna być mniejsza niż {{limit}}", + "parentChunkForContext": "Fragment nadrzędny dla kontekstu", + "generalTip": "Ogólny tryb fragmentowania tekstu, fragmenty pobierane i odwoływane są takie same.", + "parentChildDelimiterTip": "Ogranicznik to znak używany do oddzielania tekstu. \\n\\n jest zalecane do dzielenia oryginalnego dokumentu na duże fragmenty nadrzędne. Możesz również użyć specjalnych ograniczników zdefiniowanych przez siebie.", + "switch": "Przełącznik", + "parentChildChunkDelimiterTip": "Ogranicznik to znak używany do oddzielania tekstu. \\n jest zalecane do dzielenia fragmentów nadrzędnych na małe fragmenty podrzędne. Możesz również użyć specjalnych ograniczników zdefiniowanych przez siebie.", + "paragraphTip": "W tym trybie tekst jest dzielony na akapity na podstawie ograniczników i maksymalnej długości fragmentu, używając podzielonego tekstu jako fragmentu nadrzędnego do pobierania.", + "general": "Ogólne", + "notAvailableForQA": "Niedostępne dla indeksu pytań i odpowiedziNot available for Q&A Index", + "childChunkForRetrieval": "Fragment podrzędny do pobrania", + "fullDoc": "Pełna wersja dokumentu", + "fullDocTip": "Cały dokument jest używany jako fragment nadrzędny i pobierany bezpośrednio. Należy pamiętać, że ze względu na wydajność, tekst przekraczający 10000 tokenów zostanie automatycznie obcięty.", + "previewChunkCount": "{{liczba}} Szacowane porcje", + "paragraph": "Akapit", + "parentChild": "Rodzic-dziecko", + "previewChunk": "Fragment podglądu", + "notAvailableForParentChild": "Niedostępne dla indeksu nadrzędny-podrzędny", + "highQualityTip": "Po zakończeniu osadzania w trybie wysokiej jakości powrót do trybu ekonomicznego nie jest dostępny.", + "previewChunkTip": "Kliknij przycisk \"Podgląd fragmentu\" po lewej stronie, aby załadować podgląd", + "qaSwitchHighQualityTipContent": "Obecnie tylko metoda indeksu wysokiej jakości obsługuje fragmentowanie formatu pytań i odpowiedzi. Czy chcesz przełączyć się w tryb wysokiej jakości?", + "useQALanguage": "Fragment przy użyciu formatu Q&A w", + "parentChildTip": "W przypadku korzystania z trybu nadrzędny-podrzędny fragment podrzędny jest używany do pobierania, a fragment nadrzędny jest używany do przywoływania jako kontekstu.", + "qaSwitchHighQualityTipTitle": "Format Q&A wymaga metody indeksowania wysokiej jakości", + "qaTip": "Korzystając z ustrukturyzowanych danych pytań i odpowiedzi, można tworzyć dokumenty, które łączą pytania z odpowiedziami. Dokumenty te są indeksowane na podstawie części pytań, dzięki czemu system może pobrać odpowiednie odpowiedzi na podstawie podobieństwa zapytania." + }, + "stepThree": { + "creationTitle": "🎉 Utworzono Wiedzę", + "creationContent": "Automatycznie nadaliśmy nazwę Wiedzy, możesz ją dowolnie zmienić w każdej chwili", + "label": "Nazwa Wiedzy", + "additionTitle": "🎉 Przesłano dokument", + "additionP1": "Dokument został przesłany do Wiedzy", + "additionP2": ", możesz go znaleźć na liście dokumentów Wiedzy.", + "stop": "Zatrzymaj przetwarzanie", + "resume": "Wznów przetwarzanie", + "navTo": "Przejdź do dokumentu", + "sideTipTitle": "Co dalej", + "sideTipContent": "Po zakończeniu indeksowania dokumentu, Wiedza może być zintegrowana z aplikacją jako kontekst, można znaleźć ustawienie kontekstu na stronie orkiestracji. Można również stworzyć ją jako niezależny plugin indeksowania ChatGPT do wydania.", + "modelTitle": "Czy na pewno chcesz zatrzymać embedded?", + "modelContent": "Jeśli będziesz potrzebować wznowić przetwarzanie później, będziesz kontynuować od miejsca, w którym przerwałeś.", + "modelButtonConfirm": "Potwierdź", + "modelButtonCancel": "Anuluj" + }, + "firecrawl": { + "apiKeyPlaceholder": "Klucz API od firecrawl.dev", + "configFirecrawl": "Konfiguracja 🔥Firecrawla", + "getApiKeyLinkText": "Pobierz klucz API z firecrawl.dev" + }, + "jinaReader": { + "getApiKeyLinkText": "Odbierz darmowy klucz API na jina.ai", + "apiKeyPlaceholder": "Klucz API od jina.ai", + "configJinaReader": "Konfiguracja czytnika Jina" + }, + "otherDataSource": { + "learnMore": "Dowiedz się więcej", + "title": "Połączyć się z innymi źródłami danych?", + "description": "Obecnie baza wiedzy Dify ma tylko ograniczone źródła danych. Dodanie źródła danych do bazy wiedzy Dify to fantastyczny sposób na zwiększenie elastyczności i możliwości platformy dla wszystkich użytkowników. Nasz przewodnik po wkładach ułatwia rozpoczęcie pracy. Kliknij poniższy link, aby dowiedzieć się więcej." + }, + "watercrawl": { + "apiKeyPlaceholder": "Klucz API z watercrawl.dev", + "configWatercrawl": "Skonfiguruj Watercrawl", + "getApiKeyLinkText": "Uzyskaj swój klucz API z watercrawl.dev" + } +} diff --git a/web/i18n/pl-PL/dataset-creation.ts b/web/i18n/pl-PL/dataset-creation.ts deleted file mode 100644 index e8446cc0d5..0000000000 --- a/web/i18n/pl-PL/dataset-creation.ts +++ /dev/null @@ -1,233 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: 'Wiedza', - }, - one: 'Wybierz źródło danych', - two: 'Przetwarzanie i Czyszczenie Tekstu', - three: 'Wykonaj i zakończ', - }, - error: { - unavailable: 'Ta Wiedza nie jest dostępna', - }, - stepOne: { - filePreview: 'Podgląd pliku', - pagePreview: 'Podgląd strony', - dataSourceType: { - file: 'Importuj z pliku tekstowego', - notion: 'Synchronizuj z Notion', - web: 'Synchronizuj z witryny', - }, - uploader: { - title: 'Prześlij plik tekstowy', - button: 'Przeciągnij i upuść pliki lub foldery lub', - buttonSingleFile: 'Przeciągnij i upuść plik lub', - browse: 'Przeglądaj', - tip: 'Obsługuje {{supportTypes}}. Maksymalnie {{size}}MB każdy.', - validation: { - typeError: 'Nieobsługiwany typ pliku', - size: 'Plik jest za duży. Maksymalnie {{size}}MB', - count: 'Nieobsługiwane przesyłanie wielu plików', - filesNumber: 'Osiągnąłeś limit przesłania partii {{filesNumber}}.', - }, - cancel: 'Anuluj', - change: 'Zmień', - failed: 'Przesyłanie nie powiodło się', - }, - notionSyncTitle: 'Notion nie jest podłączony', - notionSyncTip: - 'Aby synchronizować z Notion, najpierw trzeba ustanowić połączenie z Notion.', - connect: 'Przejdź do połączenia', - button: 'dalej', - emptyDatasetCreation: 'Chcę utworzyć pustą Wiedzę', - modal: { - title: 'Utwórz pustą Wiedzę', - tip: 'Pusta Wiedza nie będzie zawierała żadnych dokumentów, a można przesyłać dokumenty w dowolnym momencie.', - input: 'Nazwa Wiedzy', - placeholder: 'Proszę wpisz', - nameNotEmpty: 'Nazwa nie może być pusta', - nameLengthInvalid: 'Nazwa musi zawierać od 1 do 40 znaków', - cancelButton: 'Anuluj', - confirmButton: 'Utwórz', - failed: 'Utworzenie nie powiodło się', - }, - website: { - limit: 'Ograniczać', - firecrawlDoc: 'Dokumentacja Firecrawl', - unknownError: 'Nieznany błąd', - fireCrawlNotConfiguredDescription: 'Skonfiguruj Firecrawl z kluczem API, aby z niego korzystać.', - run: 'Biegać', - configure: 'Konfigurować', - resetAll: 'Zresetuj wszystko', - preview: 'Prapremiera', - exceptionErrorTitle: 'Wystąpił wyjątek podczas uruchamiania zadania Firecrawl:', - maxDepth: 'Maksymalna głębokość', - crawlSubPage: 'Przeszukiwanie podstron', - options: 'Opcje', - scrapTimeInfo: 'Zeskrobano {{total}} stron w sumie w ciągu {{time}}s', - totalPageScraped: 'Łączna liczba zeskrobanych stron:', - extractOnlyMainContent: 'Wyodrębnij tylko główną zawartość (bez nagłówków, nawigacji, stopek itp.)', - excludePaths: 'Wykluczanie ścieżek', - includeOnlyPaths: 'Uwzględnij tylko ścieżki', - selectAll: 'Zaznacz wszystko', - firecrawlTitle: 'Wyodrębnij zawartość internetową za pomocą 🔥Firecrawl', - fireCrawlNotConfigured: 'Firecrawl nie jest skonfigurowany', - maxDepthTooltip: 'Maksymalna głębokość przeszukiwania względem wprowadzonego adresu URL. Głębokość 0 po prostu zeskrobuje stronę z wprowadzonego adresu URL, głębokość 1 zeskrobuje adres URL i wszystko po wprowadzeniuURL+ jeden / i tak dalej.', - useSitemap: 'Użyj mapy witryny', - useSitemapTooltip: 'Postępuj zgodnie z mapą witryny, aby zindeksować witrynę. Jeśli nie, Jina Reader będzie indeksować iteracyjnie w oparciu o trafność strony, dając mniej stron, ale o wyższej jakości.', - chooseProvider: 'Wybierz dostawcę', - jinaReaderDocLink: 'https://jina.ai/reader', - jinaReaderNotConfigured: 'Czytnik Jina nie jest skonfigurowany', - jinaReaderDoc: 'Dowiedz się więcej o Jina Reader', - jinaReaderTitle: 'Konwertowanie całej witryny na język Markdown', - jinaReaderNotConfiguredDescription: 'Skonfiguruj Jina Reader, wprowadzając bezpłatny klucz API, aby uzyskać dostęp.', - watercrawlTitle: 'Wyodrębnij treści z sieci za pomocą Watercrawl', - configureWatercrawl: 'Skonfiguruj Watercrawl', - configureJinaReader: 'Skonfiguruj Czytnik Jina', - configureFirecrawl: 'Skonfiguruj Firecrawl', - watercrawlDoc: 'Dokumentacja Watercrawl', - waterCrawlNotConfiguredDescription: 'Skonfiguruj Watercrawl z kluczem API, aby go używać.', - waterCrawlNotConfigured: 'Watercrawl nie jest skonfigurowany', - running: 'Bieganie', - }, - cancel: 'Anuluj', - }, - stepTwo: { - segmentation: 'Ustawienia bloków tekstu', - auto: 'Automatycznie', - autoDescription: - 'Automatyczne ustawianie bloków i reguł preprocessingu. Nieużytkownicy są zaleceni do wyboru tej opcji.', - custom: 'Niestandardowo', - customDescription: - 'Dostosuj reguły bloków, długość bloków i reguły preprocessingu itp.', - separator: 'Separator bloków', - separatorPlaceholder: - 'Na przykład nowa linia (\\n) lub specjalny separator (np. "***")', - maxLength: 'Maksymalna długość bloku', - overlap: 'Nakładka bloków', - overlapTip: - 'Ustawienie nakładki bloków pozwala zachować semantyczną zgodność między nimi, poprawiając efekt pobierania. Zaleca się ustawienie 10%-25% maksymalnej długości bloku.', - overlapCheck: - 'nakładka bloków nie powinna być większa niż maksymalna długość bloku', - rules: 'Reguły preprocessingu tekstu', - removeExtraSpaces: 'Zastąp kolejne spacje, nowe linie i tabulatory', - removeUrlEmails: 'Usuń wszystkie adresy URL i e-maile', - removeStopwords: 'Usuń słowa powszechne takie jak "a", "an", "the"', - preview: 'Potwierdź i Podgląd', - reset: 'Reset', - indexMode: 'Tryb indeksowania', - qualified: 'Wysoka jakość', - recommend: 'Polecać', - qualifiedTip: - 'Wywołaj domyślne interfejsy wbudowania systemu do przetwarzania, zapewniając wyższą dokładność podczas zapytań przez użytkowników.', - warning: 'Proszę najpierw skonfigurować klucz API dostawcy modelu.', - click: 'Przejdź do ustawień', - economical: 'Ekonomiczny', - economicalTip: - 'Użyj offline\'owych silników wektorowych, indeksów słów kluczowych itp., aby zmniejszyć dokładność bez wydawania tokenów', - QATitle: 'Segmentacja w formacie pytania i odpowiedzi', - QATip: 'Włączenie tej opcji spowoduje zużycie większej liczby tokenów', - QALanguage: 'Segmentacja przy użyciu', - estimateCost: 'Oszacowanie', - estimateSegment: 'Oszacowane bloki', - segmentCount: 'bloki', - calculating: 'Obliczanie...', - fileSource: 'Przetwarzaj dokumenty', - notionSource: 'Przetwarzaj strony', - other: 'i inne ', - fileUnit: ' plików', - notionUnit: ' stron', - previousStep: 'Poprzedni krok', - nextStep: 'Zapisz & Przetwarzaj', - save: 'Zapisz & Przetwarzaj', - cancel: 'Anuluj', - sideTipTitle: 'Dlaczego blok i preprocess?', - sideTipP1: - 'Podczas przetwarzania danych tekstowych, blok i czyszczenie są dwoma ważnymi krokami preprocessingu.', - sideTipP2: - 'Segmentacja dzieli długi tekst na akapity, dzięki czemu modele są w stanie lepiej zrozumieć. Poprawia to jakość i trafność wyników modelu.', - sideTipP3: - 'Czyszczenie usuwa zbędne znaki i formatowanie, sprawiając, że Wiedza jest czystsza i łatwiejsza do analizy.', - sideTipP4: - 'Odpowiednie blok i czyszczenie poprawiają wydajność modelu, zapewniając bardziej dokładne i wartościowe wyniki.', - previewTitle: 'Podgląd', - previewTitleButton: 'Podgląd', - previewButton: 'Przełącz do formatu pytania i odpowiedzi', - previewSwitchTipStart: - 'Aktulany podgląd bloku jest w formacie tekstu, przełączenie na podgląd w formacie pytania i odpowiedzi spowoduje', - previewSwitchTipEnd: ' dodatkowe zużycie tokenów', - characters: 'znaki', - indexSettingTip: 'Aby zmienić metodę indeksowania, przejdź do ', - retrievalSettingTip: 'Aby zmienić metodę indeksowania, przejdź do ', - datasetSettingLink: 'ustawień Wiedzy.', - webpageUnit: 'Stron', - websiteSource: 'Witryna internetowa przetwarzania wstępnego', - separatorTip: 'Ogranicznik to znak używany do oddzielania tekstu. \\n\\n i \\n są powszechnie używanymi ogranicznikami do oddzielania akapitów i wierszy. W połączeniu z przecinkami (\\n\\n,\\n), akapity będą segmentowane wierszami po przekroczeniu maksymalnej długości fragmentu. Możesz również skorzystać ze zdefiniowanych przez siebie specjalnych ograniczników (np. ***).', - maxLengthCheck: 'Maksymalna długość porcji powinna być mniejsza niż {{limit}}', - parentChunkForContext: 'Fragment nadrzędny dla kontekstu', - generalTip: 'Ogólny tryb fragmentowania tekstu, fragmenty pobierane i odwoływane są takie same.', - parentChildDelimiterTip: 'Ogranicznik to znak używany do oddzielania tekstu. \\n\\n jest zalecane do dzielenia oryginalnego dokumentu na duże fragmenty nadrzędne. Możesz również użyć specjalnych ograniczników zdefiniowanych przez siebie.', - switch: 'Przełącznik', - parentChildChunkDelimiterTip: 'Ogranicznik to znak używany do oddzielania tekstu. \\n jest zalecane do dzielenia fragmentów nadrzędnych na małe fragmenty podrzędne. Możesz również użyć specjalnych ograniczników zdefiniowanych przez siebie.', - paragraphTip: 'W tym trybie tekst jest dzielony na akapity na podstawie ograniczników i maksymalnej długości fragmentu, używając podzielonego tekstu jako fragmentu nadrzędnego do pobierania.', - general: 'Ogólne', - notAvailableForQA: 'Niedostępne dla indeksu pytań i odpowiedziNot available for Q&A Index', - childChunkForRetrieval: 'Fragment podrzędny do pobrania', - fullDoc: 'Pełna wersja dokumentu', - fullDocTip: 'Cały dokument jest używany jako fragment nadrzędny i pobierany bezpośrednio. Należy pamiętać, że ze względu na wydajność, tekst przekraczający 10000 tokenów zostanie automatycznie obcięty.', - previewChunkCount: '{{liczba}} Szacowane porcje', - paragraph: 'Akapit', - parentChild: 'Rodzic-dziecko', - previewChunk: 'Fragment podglądu', - notAvailableForParentChild: 'Niedostępne dla indeksu nadrzędny-podrzędny', - highQualityTip: 'Po zakończeniu osadzania w trybie wysokiej jakości powrót do trybu ekonomicznego nie jest dostępny.', - previewChunkTip: 'Kliknij przycisk "Podgląd fragmentu" po lewej stronie, aby załadować podgląd', - qaSwitchHighQualityTipContent: 'Obecnie tylko metoda indeksu wysokiej jakości obsługuje fragmentowanie formatu pytań i odpowiedzi. Czy chcesz przełączyć się w tryb wysokiej jakości?', - useQALanguage: 'Fragment przy użyciu formatu Q&A w', - parentChildTip: 'W przypadku korzystania z trybu nadrzędny-podrzędny fragment podrzędny jest używany do pobierania, a fragment nadrzędny jest używany do przywoływania jako kontekstu.', - qaSwitchHighQualityTipTitle: 'Format Q&A wymaga metody indeksowania wysokiej jakości', - qaTip: 'Korzystając z ustrukturyzowanych danych pytań i odpowiedzi, można tworzyć dokumenty, które łączą pytania z odpowiedziami. Dokumenty te są indeksowane na podstawie części pytań, dzięki czemu system może pobrać odpowiednie odpowiedzi na podstawie podobieństwa zapytania.', - }, - stepThree: { - creationTitle: '🎉 Utworzono Wiedzę', - creationContent: - 'Automatycznie nadaliśmy nazwę Wiedzy, możesz ją dowolnie zmienić w każdej chwili', - label: 'Nazwa Wiedzy', - additionTitle: '🎉 Przesłano dokument', - additionP1: 'Dokument został przesłany do Wiedzy', - additionP2: ', możesz go znaleźć na liście dokumentów Wiedzy.', - stop: 'Zatrzymaj przetwarzanie', - resume: 'Wznów przetwarzanie', - navTo: 'Przejdź do dokumentu', - sideTipTitle: 'Co dalej', - sideTipContent: - 'Po zakończeniu indeksowania dokumentu, Wiedza może być zintegrowana z aplikacją jako kontekst, można znaleźć ustawienie kontekstu na stronie orkiestracji. Można również stworzyć ją jako niezależny plugin indeksowania ChatGPT do wydania.', - modelTitle: 'Czy na pewno chcesz zatrzymać embedded?', - modelContent: - 'Jeśli będziesz potrzebować wznowić przetwarzanie później, będziesz kontynuować od miejsca, w którym przerwałeś.', - modelButtonConfirm: 'Potwierdź', - modelButtonCancel: 'Anuluj', - }, - firecrawl: { - apiKeyPlaceholder: 'Klucz API od firecrawl.dev', - configFirecrawl: 'Konfiguracja 🔥Firecrawla', - getApiKeyLinkText: 'Pobierz klucz API z firecrawl.dev', - }, - jinaReader: { - getApiKeyLinkText: 'Odbierz darmowy klucz API na jina.ai', - apiKeyPlaceholder: 'Klucz API od jina.ai', - configJinaReader: 'Konfiguracja czytnika Jina', - }, - otherDataSource: { - learnMore: 'Dowiedz się więcej', - title: 'Połączyć się z innymi źródłami danych?', - description: 'Obecnie baza wiedzy Dify ma tylko ograniczone źródła danych. Dodanie źródła danych do bazy wiedzy Dify to fantastyczny sposób na zwiększenie elastyczności i możliwości platformy dla wszystkich użytkowników. Nasz przewodnik po wkładach ułatwia rozpoczęcie pracy. Kliknij poniższy link, aby dowiedzieć się więcej.', - }, - watercrawl: { - apiKeyPlaceholder: 'Klucz API z watercrawl.dev', - configWatercrawl: 'Skonfiguruj Watercrawl', - getApiKeyLinkText: 'Uzyskaj swój klucz API z watercrawl.dev', - }, -} - -export default translation diff --git a/web/i18n/pl-PL/dataset-documents.json b/web/i18n/pl-PL/dataset-documents.json new file mode 100644 index 0000000000..643c39b427 --- /dev/null +++ b/web/i18n/pl-PL/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "Dokumenty", + "desc": "Wszystkie pliki wiedzy są tutaj pokazane, a cała wiedza może być powiązana z odnośnikami Dify lub zindeksowana za pomocą wtyczki Chat.", + "addFile": "dodaj plik", + "addPages": "Dodaj strony", + "table": { + "header": { + "fileName": "NAZWA PLIKU", + "words": "SŁOWA", + "hitCount": "LICZBA ZNALEZIEŃ", + "uploadTime": "CZAS WGRANIA", + "status": "STATUS", + "action": "AKCJA", + "chunkingMode": "TRYB CHUNKINGU" + }, + "name": "Nazwa", + "rename": "Przemianować" + }, + "action": { + "uploadFile": "Wgraj nowy plik", + "settings": "Ustawienia segmentacji", + "addButton": "Dodaj fragment", + "add": "Dodaj fragment", + "batchAdd": "Dodaj partię", + "archive": "Archiwum", + "unarchive": "Usuń z archiwum", + "delete": "Usuń", + "enableWarning": "Zarchiwizowany plik nie może zostać włączony", + "sync": "Synchronizuj", + "resume": "Wznów", + "pause": "Pauza" + }, + "index": { + "enable": "Włącz", + "disable": "Wyłącz", + "all": "Wszystkie", + "enableTip": "Plik może być zindeksowany", + "disableTip": "Plik nie może być zindeksowany" + }, + "status": { + "queuing": "Oczekiwanie", + "indexing": "Indeksowanie", + "paused": "Wstrzymane", + "error": "Błąd", + "available": "Dostępny", + "enabled": "Włączony", + "disabled": "Wyłączony", + "archived": "Zaarchiwizowany" + }, + "empty": { + "title": "Nie ma jeszcze dokumentacji", + "upload": { + "tip": "Możesz wgrać pliki, synchronizować z witryny lub z aplikacji internetowych takich jak Notion, GitHub, itp." + }, + "sync": { + "tip": "Dify regularnie pobiera pliki z Twojego Notion i dokonuje ich przetwarzania." + } + }, + "delete": { + "title": "Czy na pewno chcesz usunąć?", + "content": "Jeśli będziesz musiał wznowić przetwarzanie później, będziesz kontynuować tam, gdzie przerwałeś" + }, + "batchModal": { + "title": "Dodaj partię fragmentów", + "csvUploadTitle": "Przeciągnij i upuść swój plik CSV tutaj, lub ", + "browse": "wybierz", + "tip": "Plik CSV musi być zgodny z następującą strukturą:", + "question": "pytanie", + "answer": "odpowiedź", + "contentTitle": "treść fragmentu", + "content": "treść", + "template": "Pobierz szablon tutaj", + "cancel": "Anuluj", + "run": "Uruchom partię", + "runError": "Błąd uruchomienia partii", + "processing": "Przetwarzanie partii", + "completed": "Import zakończony", + "error": "Błąd importu", + "ok": "OK" + }, + "addUrl": "Dodaj adres URL", + "learnMore": "Dowiedz się więcej", + "sort": { + "uploadTime": "Czas przesyłania", + "hitCount": "Liczba wyszukiwań" + } + }, + "metadata": { + "title": "Metadane", + "desc": "Etykietowanie metadanych dla dokumentów pozwala sztucznej inteligencji na dostęp do nich w odpowiednim czasie i ujawnia źródło odniesień dla użytkowników.", + "dateTimeFormat": "D MMMM YYYY, HH:mm", + "docTypeSelectTitle": "Wybierz rodzaj dokumentu", + "docTypeChangeTitle": "Zmień rodzaj dokumentu", + "docTypeSelectWarning": "Jeśli zmieniony zostanie rodzaj dokumentu, teraz wypełnione metadane nie zostaną zachowane", + "firstMetaAction": "Zacznijmy", + "placeholder": { + "add": "Dodaj ", + "select": "Wybierz " + }, + "source": { + "upload_file": "Wgraj plik", + "notion": "Synchronizuj z Notion", + "github": "Synchronizuj z Github", + "online_document": "Dokument online", + "local_file": "Plik lokalny", + "website_crawl": "Indeksowanie witryny" + }, + "type": { + "book": "Książka", + "webPage": "Strona internetowa", + "paper": "Artykuł", + "socialMediaPost": "Post w mediach społecznościowych", + "personalDocument": "Dokument osobisty", + "businessDocument": "Dokument biznesowy", + "IMChat": "Czat na komunikatorze", + "wikipediaEntry": "Artykuł w Wikipedii", + "notion": "Synchronizuj z Notion", + "github": "Synchronizuj z Github", + "technicalParameters": "Parametry techniczne" + }, + "field": { + "processRule": { + "processDoc": "Przetwórz dokument", + "segmentRule": "Reguła fragmentacji", + "segmentLength": "Długość fragmentów", + "processClean": "Oczyszczanie tekstu" + }, + "book": { + "title": "Tytuł", + "language": "Język", + "author": "Autor", + "publisher": "Wydawca", + "publicationDate": "Data publikacji", + "ISBN": "ISBN", + "category": "Kategoria" + }, + "webPage": { + "title": "Tytuł", + "url": "URL", + "language": "Język", + "authorPublisher": "Autor/Wydawca", + "publishDate": "Data publikacji", + "topicKeywords": "Tematy/Słowa kluczowe", + "description": "Opis" + }, + "paper": { + "title": "Tytuł", + "language": "Język", + "author": "Autor", + "publishDate": "Data publikacji", + "journalConferenceName": "Nazwa czasopisma/konferencji", + "volumeIssuePage": "Tom/Wydanie/Strona", + "DOI": "DOI", + "topicsKeywords": "Tematy/Słowa kluczowe", + "abstract": "Abstrakt" + }, + "socialMediaPost": { + "platform": "Platforma", + "authorUsername": "Autor/Nazwa użytkownika", + "publishDate": "Data publikacji", + "postURL": "Adres URL posta", + "topicsTags": "Tematy/Tagi" + }, + "personalDocument": { + "title": "Tytuł", + "author": "Autor", + "creationDate": "Data utworzenia", + "lastModifiedDate": "Data ostatniej modyfikacji", + "documentType": "Typ dokumentu", + "tagsCategory": "Tagi/Kategoria" + }, + "businessDocument": { + "title": "Tytuł", + "author": "Autor", + "creationDate": "Data utworzenia", + "lastModifiedDate": "Data ostatniej modyfikacji", + "documentType": "Typ dokumentu", + "departmentTeam": "Dział/Zespół" + }, + "IMChat": { + "chatPlatform": "Platforma czatu", + "chatPartiesGroupName": "Podmioty czatu/Nazwa grupy", + "participants": "Uczestnicy", + "startDate": "Data rozpoczęcia", + "endDate": "Data zakończenia", + "topicsKeywords": "Tematy/Słowa kluczowe", + "fileType": "Typ pliku" + }, + "wikipediaEntry": { + "title": "Tytuł", + "language": "Język", + "webpageURL": "Adres URL strony internetowej", + "editorContributor": "Edytor/Współtwórca", + "lastEditDate": "Data ostatniej edycji", + "summaryIntroduction": "Podsumowanie/Wstęp" + }, + "notion": { + "title": "Tytuł", + "language": "Język", + "author": "Autor", + "createdTime": "Czas utworzenia", + "lastModifiedTime": "Czas ostatniej modyfikacji", + "url": "URL", + "tag": "Tag", + "description": "Opis" + }, + "github": { + "repoName": "Nazwa repozytorium", + "repoDesc": "Opis repozytorium", + "repoOwner": "Właściciel repozytorium", + "fileName": "Nazwa pliku", + "filePath": "Ścieżka pliku", + "programmingLang": "Język programowania", + "url": "URL", + "license": "Licencja", + "lastCommitTime": "Czas ostatniego zobowiązania", + "lastCommitAuthor": "Autor ostatniego zobowiązania" + }, + "originInfo": { + "originalFilename": "Oryginalna nazwa pliku", + "originalFileSize": "Oryginalny rozmiar pliku", + "uploadDate": "Data wgrywania", + "lastUpdateDate": "Data ostatniej aktualizacji", + "source": "Źródło" + }, + "technicalParameters": { + "segmentSpecification": "Specyfikacja fragmentów", + "segmentLength": "Długość fragmentów", + "avgParagraphLength": "Średnia długość akapitu", + "paragraphs": "Akapity", + "hitCount": "Liczba odwołań", + "embeddingTime": "Czas embedowania", + "embeddedSpend": "Wydatki związane z embedowaniem" + } + }, + "languageMap": { + "zh": "Chiński", + "en": "Angielski", + "es": "Hiszpański", + "fr": "Francuski", + "de": "Niemiecki", + "ja": "Japoński", + "ko": "Koreański", + "ru": "Rosyjski", + "ar": "Arabski", + "pt": "Portugalski", + "it": "Włoski", + "nl": "Holenderski", + "pl": "Polski", + "sv": "Szwedzki", + "tr": "Turecki", + "he": "Hebrajski", + "hi": "Hinduski", + "da": "Duński", + "fi": "Fiński", + "no": "Norweski", + "hu": "Węgierski", + "el": "Grecki", + "cs": "Czeski", + "th": "Tajski", + "id": "Indonezyjski" + }, + "categoryMap": { + "book": { + "fiction": "Literatura piękna", + "biography": "Biografia", + "history": "Historia", + "science": "Nauka", + "technology": "Technologia", + "education": "Edukacja", + "philosophy": "Filozofia", + "religion": "Religia", + "socialSciences": "Nauki społeczne", + "art": "Sztuka", + "travel": "Podróże", + "health": "Zdrowie", + "selfHelp": "Samorozwój", + "businessEconomics": "Biznes/ekonomia", + "cooking": "Gotowanie", + "childrenYoungAdults": "Dzieci/Młodzież", + "comicsGraphicNovels": "Komiksy/Graphic Novels", + "poetry": "Poezja", + "drama": "Dramat", + "other": "Inne" + }, + "personalDoc": { + "notes": "Notatki", + "blogDraft": "Wersja robocza bloga", + "diary": "Dziennik", + "researchReport": "Raport badawczy", + "bookExcerpt": "Fragment książki", + "schedule": "Harmonogram", + "list": "Lista", + "projectOverview": "Przegląd projektu", + "photoCollection": "Kolekcja zdjęć", + "creativeWriting": "Twórcze pisanie", + "codeSnippet": "Fragment kodu", + "designDraft": "Projekt/wersja robocza", + "personalResume": "CV", + "other": "Inne" + }, + "businessDoc": { + "meetingMinutes": "Protokoły zebrań", + "researchReport": "Raport badawczy", + "proposal": "Propozycja", + "employeeHandbook": "Podręcznik pracownika", + "trainingMaterials": "Materiały szkoleniowe", + "requirementsDocument": "Dokument wymagań", + "designDocument": "Dokument projektowy", + "productSpecification": "Specyfikacja produktu", + "financialReport": "Raport finansowy", + "marketAnalysis": "Analiza rynku", + "projectPlan": "Plan projektu", + "teamStructure": "Struktura zespołu", + "policiesProcedures": "Zasady i procedury", + "contractsAgreements": "Umowy", + "emailCorrespondence": "Korespondencja e-mailowa", + "other": "Inne" + } + } + }, + "embedding": { + "processing": "Przetwarzanie osadzania...", + "paused": "Osadzanie wstrzymane", + "completed": "Osadzanie zakończone", + "error": "Błąd osadzania", + "docName": "Przetwarzanie wstępne dokumentu", + "mode": "Reguła segmentacji", + "segmentLength": "Długość fragmentów", + "textCleaning": "Predefinicja tekstu i czyszczenie", + "segments": "Akapity", + "highQuality": "Tryb wysokiej jakości", + "economy": "Tryb ekonomiczny", + "estimate": "Szacowany czas", + "stop": "Zatrzymaj przetwarzanie", + "resume": "Wznów przetwarzanie", + "automatic": "Automatyczny", + "custom": "Niestandardowy", + "previewTip": "Podgląd akapitu będzie dostępny po zakończeniu osadzania", + "parentMaxTokens": "Rodzic", + "hierarchical": "Rodzic-dziecko", + "childMaxTokens": "Dziecko", + "pause": "Pauza", + "waiting": "Oczekiwanie na osadzenie..." + }, + "segment": { + "paragraphs": "Akapity", + "keywords": "Słowa kluczowe", + "addKeyWord": "Dodaj słowo kluczowe", + "keywordError": "Maksymalna długość słowa kluczowego wynosi 20", + "hitCount": "Liczba odwołań", + "vectorHash": "Wektor hash: ", + "questionPlaceholder": "dodaj pytanie tutaj", + "questionEmpty": "Pytanie nie może być puste", + "answerPlaceholder": "dodaj odpowiedź tutaj", + "answerEmpty": "Odpowiedź nie może być pusta", + "contentPlaceholder": "dodaj treść tutaj", + "contentEmpty": "Treść nie może być pusta", + "newTextSegment": "Nowy segment tekstowy", + "newQaSegment": "Nowy segment Q&A", + "delete": "Usunąć ten fragment?", + "parentChunks_one": "FRAGMENT NADRZĘDNY", + "parentChunks_other": "FRAGMENTY NADRZĘDNE", + "searchResults_one": "WYNIK", + "chunk": "Kawał", + "parentChunk": "Fragment nadrzędny", + "characters_other": "Znaków", + "addChunk": "Dodaj kawałek", + "addChildChunk": "Dodaj fragment podrzędny", + "addAnother": "Dodaj kolejny", + "childChunkAdded": "Dodano 1 fragment podrzędny", + "editChunk": "Edytuj fragment", + "regenerationSuccessTitle": "Regeneracja zakończona", + "edited": "EDYTOWANE", + "editedAt": "Zredagowane w", + "dateTimeFormat": "MM/DD/YYYY h:mm", + "collapseChunks": "Zwijanie fragmentów", + "empty": "Nie znaleziono fragmentu", + "newChunk": "Nowy fragment", + "regenerationConfirmTitle": "Czy chcesz zregenerować fragmenty podrzędne?", + "chunks_other": "KAWAŁKI", + "editChildChunk": "Edytuj fragment podrzędny", + "characters_one": "znak", + "regeneratingMessage": "To może chwilę potrwać, proszę czekać...", + "chunkDetail": "Szczegóły kawałka", + "chunkAdded": "Dodano 1 kawałek", + "regeneratingTitle": "Regenerowanie fragmentów podrzędnych", + "childChunks_other": "FRAGMENTY POTOMNE", + "expandChunks": "Rozwijanie fragmentów", + "childChunk": "Fragment podrzędny", + "regenerationConfirmMessage": "Ponowne wygenerowanie fragmentów podrzędnych spowoduje zastąpienie bieżących fragmentów podrzędnych, w tym fragmentów edytowanych i nowo dodanych fragmentów. Regeneracji nie można cofnąć.", + "regenerationSuccessMessage": "Możesz zamknąć to okno.", + "searchResults_other": "WYNIKI", + "searchResults_zero": "WYNIK", + "chunks_one": "KAWAŁ", + "editParentChunk": "Edytuj fragment nadrzędny", + "newChildChunk": "Nowy fragment podrzędny", + "clearFilter": "Wyczyść filtr", + "childChunks_one": "FRAGMENT POTOMNY", + "keywordDuplicate": "Słowo kluczowe już istnieje", + "keywordEmpty": "Słowo kluczowe nie może być puste", + "allFilesUploaded": "Wszystkie pliki muszą zostać przesłane przed zapisaniem" + } +} diff --git a/web/i18n/pl-PL/dataset-documents.ts b/web/i18n/pl-PL/dataset-documents.ts deleted file mode 100644 index a7365302ec..0000000000 --- a/web/i18n/pl-PL/dataset-documents.ts +++ /dev/null @@ -1,409 +0,0 @@ -const translation = { - list: { - title: 'Dokumenty', - desc: 'Wszystkie pliki wiedzy są tutaj pokazane, a cała wiedza może być powiązana z odnośnikami Dify lub zindeksowana za pomocą wtyczki Chat.', - addFile: 'dodaj plik', - addPages: 'Dodaj strony', - table: { - header: { - fileName: 'NAZWA PLIKU', - words: 'SŁOWA', - hitCount: 'LICZBA ZNALEZIEŃ', - uploadTime: 'CZAS WGRANIA', - status: 'STATUS', - action: 'AKCJA', - chunkingMode: 'TRYB CHUNKINGU', - }, - name: 'Nazwa', - rename: 'Przemianować', - }, - action: { - uploadFile: 'Wgraj nowy plik', - settings: 'Ustawienia segmentacji', - addButton: 'Dodaj fragment', - add: 'Dodaj fragment', - batchAdd: 'Dodaj partię', - archive: 'Archiwum', - unarchive: 'Usuń z archiwum', - delete: 'Usuń', - enableWarning: 'Zarchiwizowany plik nie może zostać włączony', - sync: 'Synchronizuj', - resume: 'Wznów', - pause: 'Pauza', - }, - index: { - enable: 'Włącz', - disable: 'Wyłącz', - all: 'Wszystkie', - enableTip: 'Plik może być zindeksowany', - disableTip: 'Plik nie może być zindeksowany', - }, - status: { - queuing: 'Oczekiwanie', - indexing: 'Indeksowanie', - paused: 'Wstrzymane', - error: 'Błąd', - available: 'Dostępny', - enabled: 'Włączony', - disabled: 'Wyłączony', - archived: 'Zaarchiwizowany', - }, - empty: { - title: 'Nie ma jeszcze dokumentacji', - upload: { - tip: 'Możesz wgrać pliki, synchronizować z witryny lub z aplikacji internetowych takich jak Notion, GitHub, itp.', - }, - sync: { - tip: 'Dify regularnie pobiera pliki z Twojego Notion i dokonuje ich przetwarzania.', - }, - }, - delete: { - title: 'Czy na pewno chcesz usunąć?', - content: - 'Jeśli będziesz musiał wznowić przetwarzanie później, będziesz kontynuować tam, gdzie przerwałeś', - }, - batchModal: { - title: 'Dodaj partię fragmentów', - csvUploadTitle: 'Przeciągnij i upuść swój plik CSV tutaj, lub ', - browse: 'wybierz', - tip: 'Plik CSV musi być zgodny z następującą strukturą:', - question: 'pytanie', - answer: 'odpowiedź', - contentTitle: 'treść fragmentu', - content: 'treść', - template: 'Pobierz szablon tutaj', - cancel: 'Anuluj', - run: 'Uruchom partię', - runError: 'Błąd uruchomienia partii', - processing: 'Przetwarzanie partii', - completed: 'Import zakończony', - error: 'Błąd importu', - ok: 'OK', - }, - addUrl: 'Dodaj adres URL', - learnMore: 'Dowiedz się więcej', - sort: { - uploadTime: 'Czas przesyłania', - hitCount: 'Liczba wyszukiwań', - }, - }, - metadata: { - title: 'Metadane', - desc: 'Etykietowanie metadanych dla dokumentów pozwala sztucznej inteligencji na dostęp do nich w odpowiednim czasie i ujawnia źródło odniesień dla użytkowników.', - dateTimeFormat: 'D MMMM YYYY, HH:mm', - docTypeSelectTitle: 'Wybierz rodzaj dokumentu', - docTypeChangeTitle: 'Zmień rodzaj dokumentu', - docTypeSelectWarning: - 'Jeśli zmieniony zostanie rodzaj dokumentu, teraz wypełnione metadane nie zostaną zachowane', - firstMetaAction: 'Zacznijmy', - placeholder: { - add: 'Dodaj ', - select: 'Wybierz ', - }, - source: { - upload_file: 'Wgraj plik', - notion: 'Synchronizuj z Notion', - github: 'Synchronizuj z Github', - online_document: 'Dokument online', - local_file: 'Plik lokalny', - website_crawl: 'Indeksowanie witryny', - }, - type: { - book: 'Książka', - webPage: 'Strona internetowa', - paper: 'Artykuł', - socialMediaPost: 'Post w mediach społecznościowych', - personalDocument: 'Dokument osobisty', - businessDocument: 'Dokument biznesowy', - IMChat: 'Czat na komunikatorze', - wikipediaEntry: 'Artykuł w Wikipedii', - notion: 'Synchronizuj z Notion', - github: 'Synchronizuj z Github', - technicalParameters: 'Parametry techniczne', - }, - field: { - processRule: { - processDoc: 'Przetwórz dokument', - segmentRule: 'Reguła fragmentacji', - segmentLength: 'Długość fragmentów', - processClean: 'Oczyszczanie tekstu', - }, - book: { - title: 'Tytuł', - language: 'Język', - author: 'Autor', - publisher: 'Wydawca', - publicationDate: 'Data publikacji', - ISBN: 'ISBN', - category: 'Kategoria', - }, - webPage: { - title: 'Tytuł', - url: 'URL', - language: 'Język', - authorPublisher: 'Autor/Wydawca', - publishDate: 'Data publikacji', - topicKeywords: 'Tematy/Słowa kluczowe', - description: 'Opis', - }, - paper: { - title: 'Tytuł', - language: 'Język', - author: 'Autor', - publishDate: 'Data publikacji', - journalConferenceName: 'Nazwa czasopisma/konferencji', - volumeIssuePage: 'Tom/Wydanie/Strona', - DOI: 'DOI', - topicsKeywords: 'Tematy/Słowa kluczowe', - abstract: 'Abstrakt', - }, - socialMediaPost: { - platform: 'Platforma', - authorUsername: 'Autor/Nazwa użytkownika', - publishDate: 'Data publikacji', - postURL: 'Adres URL posta', - topicsTags: 'Tematy/Tagi', - }, - personalDocument: { - title: 'Tytuł', - author: 'Autor', - creationDate: 'Data utworzenia', - lastModifiedDate: 'Data ostatniej modyfikacji', - documentType: 'Typ dokumentu', - tagsCategory: 'Tagi/Kategoria', - }, - businessDocument: { - title: 'Tytuł', - author: 'Autor', - creationDate: 'Data utworzenia', - lastModifiedDate: 'Data ostatniej modyfikacji', - documentType: 'Typ dokumentu', - departmentTeam: 'Dział/Zespół', - }, - IMChat: { - chatPlatform: 'Platforma czatu', - chatPartiesGroupName: 'Podmioty czatu/Nazwa grupy', - participants: 'Uczestnicy', - startDate: 'Data rozpoczęcia', - endDate: 'Data zakończenia', - topicsKeywords: 'Tematy/Słowa kluczowe', - fileType: 'Typ pliku', - }, - wikipediaEntry: { - title: 'Tytuł', - language: 'Język', - webpageURL: 'Adres URL strony internetowej', - editorContributor: 'Edytor/Współtwórca', - lastEditDate: 'Data ostatniej edycji', - summaryIntroduction: 'Podsumowanie/Wstęp', - }, - notion: { - title: 'Tytuł', - language: 'Język', - author: 'Autor', - createdTime: 'Czas utworzenia', - lastModifiedTime: 'Czas ostatniej modyfikacji', - url: 'URL', - tag: 'Tag', - description: 'Opis', - }, - github: { - repoName: 'Nazwa repozytorium', - repoDesc: 'Opis repozytorium', - repoOwner: 'Właściciel repozytorium', - fileName: 'Nazwa pliku', - filePath: 'Ścieżka pliku', - programmingLang: 'Język programowania', - url: 'URL', - license: 'Licencja', - lastCommitTime: 'Czas ostatniego zobowiązania', - lastCommitAuthor: 'Autor ostatniego zobowiązania', - }, - originInfo: { - originalFilename: 'Oryginalna nazwa pliku', - originalFileSize: 'Oryginalny rozmiar pliku', - uploadDate: 'Data wgrywania', - lastUpdateDate: 'Data ostatniej aktualizacji', - source: 'Źródło', - }, - technicalParameters: { - segmentSpecification: 'Specyfikacja fragmentów', - segmentLength: 'Długość fragmentów', - avgParagraphLength: 'Średnia długość akapitu', - paragraphs: 'Akapity', - hitCount: 'Liczba odwołań', - embeddingTime: 'Czas embedowania', - embeddedSpend: 'Wydatki związane z embedowaniem', - }, - }, - languageMap: { - zh: 'Chiński', - en: 'Angielski', - es: 'Hiszpański', - fr: 'Francuski', - de: 'Niemiecki', - ja: 'Japoński', - ko: 'Koreański', - ru: 'Rosyjski', - ar: 'Arabski', - pt: 'Portugalski', - it: 'Włoski', - nl: 'Holenderski', - pl: 'Polski', - sv: 'Szwedzki', - tr: 'Turecki', - he: 'Hebrajski', - hi: 'Hinduski', - da: 'Duński', - fi: 'Fiński', - no: 'Norweski', - hu: 'Węgierski', - el: 'Grecki', - cs: 'Czeski', - th: 'Tajski', - id: 'Indonezyjski', - }, - categoryMap: { - book: { - fiction: 'Literatura piękna', - biography: 'Biografia', - history: 'Historia', - science: 'Nauka', - technology: 'Technologia', - education: 'Edukacja', - philosophy: 'Filozofia', - religion: 'Religia', - socialSciences: 'Nauki społeczne', - art: 'Sztuka', - travel: 'Podróże', - health: 'Zdrowie', - selfHelp: 'Samorozwój', - businessEconomics: 'Biznes/ekonomia', - cooking: 'Gotowanie', - childrenYoungAdults: 'Dzieci/Młodzież', - comicsGraphicNovels: 'Komiksy/Graphic Novels', - poetry: 'Poezja', - drama: 'Dramat', - other: 'Inne', - }, - personalDoc: { - notes: 'Notatki', - blogDraft: 'Wersja robocza bloga', - diary: 'Dziennik', - researchReport: 'Raport badawczy', - bookExcerpt: 'Fragment książki', - schedule: 'Harmonogram', - list: 'Lista', - projectOverview: 'Przegląd projektu', - photoCollection: 'Kolekcja zdjęć', - creativeWriting: 'Twórcze pisanie', - codeSnippet: 'Fragment kodu', - designDraft: 'Projekt/wersja robocza', - personalResume: 'CV', - other: 'Inne', - }, - businessDoc: { - meetingMinutes: 'Protokoły zebrań', - researchReport: 'Raport badawczy', - proposal: 'Propozycja', - employeeHandbook: 'Podręcznik pracownika', - trainingMaterials: 'Materiały szkoleniowe', - requirementsDocument: 'Dokument wymagań', - designDocument: 'Dokument projektowy', - productSpecification: 'Specyfikacja produktu', - financialReport: 'Raport finansowy', - marketAnalysis: 'Analiza rynku', - projectPlan: 'Plan projektu', - teamStructure: 'Struktura zespołu', - policiesProcedures: 'Zasady i procedury', - contractsAgreements: 'Umowy', - emailCorrespondence: 'Korespondencja e-mailowa', - other: 'Inne', - }, - }, - }, - embedding: { - processing: 'Przetwarzanie osadzania...', - paused: 'Osadzanie wstrzymane', - completed: 'Osadzanie zakończone', - error: 'Błąd osadzania', - docName: 'Przetwarzanie wstępne dokumentu', - mode: 'Reguła segmentacji', - segmentLength: 'Długość fragmentów', - textCleaning: 'Predefinicja tekstu i czyszczenie', - segments: 'Akapity', - highQuality: 'Tryb wysokiej jakości', - economy: 'Tryb ekonomiczny', - estimate: 'Szacowany czas', - stop: 'Zatrzymaj przetwarzanie', - resume: 'Wznów przetwarzanie', - automatic: 'Automatyczny', - custom: 'Niestandardowy', - previewTip: 'Podgląd akapitu będzie dostępny po zakończeniu osadzania', - parentMaxTokens: 'Rodzic', - hierarchical: 'Rodzic-dziecko', - childMaxTokens: 'Dziecko', - pause: 'Pauza', - waiting: 'Oczekiwanie na osadzenie...', - }, - segment: { - paragraphs: 'Akapity', - keywords: 'Słowa kluczowe', - addKeyWord: 'Dodaj słowo kluczowe', - keywordError: 'Maksymalna długość słowa kluczowego wynosi 20', - hitCount: 'Liczba odwołań', - vectorHash: 'Wektor hash: ', - questionPlaceholder: 'dodaj pytanie tutaj', - questionEmpty: 'Pytanie nie może być puste', - answerPlaceholder: 'dodaj odpowiedź tutaj', - answerEmpty: 'Odpowiedź nie może być pusta', - contentPlaceholder: 'dodaj treść tutaj', - contentEmpty: 'Treść nie może być pusta', - newTextSegment: 'Nowy segment tekstowy', - newQaSegment: 'Nowy segment Q&A', - delete: 'Usunąć ten fragment?', - parentChunks_one: 'FRAGMENT NADRZĘDNY', - parentChunks_other: 'FRAGMENTY NADRZĘDNE', - searchResults_one: 'WYNIK', - chunk: 'Kawał', - parentChunk: 'Fragment nadrzędny', - characters_other: 'Znaków', - addChunk: 'Dodaj kawałek', - addChildChunk: 'Dodaj fragment podrzędny', - addAnother: 'Dodaj kolejny', - childChunkAdded: 'Dodano 1 fragment podrzędny', - editChunk: 'Edytuj fragment', - regenerationSuccessTitle: 'Regeneracja zakończona', - edited: 'EDYTOWANE', - editedAt: 'Zredagowane w', - dateTimeFormat: 'MM/DD/YYYY h:mm', - collapseChunks: 'Zwijanie fragmentów', - empty: 'Nie znaleziono fragmentu', - newChunk: 'Nowy fragment', - regenerationConfirmTitle: 'Czy chcesz zregenerować fragmenty podrzędne?', - chunks_other: 'KAWAŁKI', - editChildChunk: 'Edytuj fragment podrzędny', - characters_one: 'znak', - regeneratingMessage: 'To może chwilę potrwać, proszę czekać...', - chunkDetail: 'Szczegóły kawałka', - chunkAdded: 'Dodano 1 kawałek', - regeneratingTitle: 'Regenerowanie fragmentów podrzędnych', - childChunks_other: 'FRAGMENTY POTOMNE', - expandChunks: 'Rozwijanie fragmentów', - childChunk: 'Fragment podrzędny', - regenerationConfirmMessage: 'Ponowne wygenerowanie fragmentów podrzędnych spowoduje zastąpienie bieżących fragmentów podrzędnych, w tym fragmentów edytowanych i nowo dodanych fragmentów. Regeneracji nie można cofnąć.', - regenerationSuccessMessage: 'Możesz zamknąć to okno.', - searchResults_other: 'WYNIKI', - searchResults_zero: 'WYNIK', - chunks_one: 'KAWAŁ', - editParentChunk: 'Edytuj fragment nadrzędny', - newChildChunk: 'Nowy fragment podrzędny', - clearFilter: 'Wyczyść filtr', - childChunks_one: 'FRAGMENT POTOMNY', - keywordDuplicate: 'Słowo kluczowe już istnieje', - keywordEmpty: 'Słowo kluczowe nie może być puste', - allFilesUploaded: 'Wszystkie pliki muszą zostać przesłane przed zapisaniem', - }, -} - -export default translation diff --git a/web/i18n/pl-PL/dataset-hit-testing.json b/web/i18n/pl-PL/dataset-hit-testing.json new file mode 100644 index 0000000000..8464c66f50 --- /dev/null +++ b/web/i18n/pl-PL/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "Testowanie odzyskiwania", + "desc": "Przetestuj efekt uderzenia wiedzy na podstawie podanego tekstu zapytania.", + "dateTimeFormat": "MM/DD/YYYY hh:mm A", + "table": { + "header": { + "source": "Źródło", + "time": "Czas", + "queryContent": "Treść zapytania" + } + }, + "input": { + "title": "Tekst źródłowy", + "placeholder": "Proszę wpisać tekst, zaleca się krótkie zdanie deklaratywne.", + "countWarning": "Do 200 znaków.", + "indexWarning": "Tylko wiedza wysokiej jakości.", + "testing": "Testowanie" + }, + "hit": { + "title": "AKAPITY ODZYSKIWANIA", + "emptyTip": "Wyniki testowania odzyskiwania będą tu pokazane" + }, + "noRecentTip": "Brak ostatnich wyników zapytań tutaj", + "viewChart": "Zobacz WYKRES WEKTOROWY", + "settingTitle": "Ustawienie pobierania", + "viewDetail": "Pokaż szczegóły", + "keyword": "Słowa kluczowe", + "hitChunks": "Trafienie w {{num}} fragmentów podrzędnych", + "open": "Otwierać", + "records": "Rekordy", + "chunkDetail": "Szczegóły kawałka", + "imageUploader": { + "tip": "Prześlij lub upuść obrazy (Maks. {{batchCount}}, {{size}} MB każdy)", + "tooltip": "Prześlij obrazy (maks. {{batchCount}}, {{size}} MB każdy)", + "dropZoneTip": "Przeciągnij plik tutaj, aby go przesłać", + "singleChunkAttachmentLimitTooltip": "Liczba pojedynczych załączników nie może przekroczyć {{limit}}" + } +} diff --git a/web/i18n/pl-PL/dataset-hit-testing.ts b/web/i18n/pl-PL/dataset-hit-testing.ts deleted file mode 100644 index 502c56c414..0000000000 --- a/web/i18n/pl-PL/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - title: 'Testowanie odzyskiwania', - desc: 'Przetestuj efekt uderzenia wiedzy na podstawie podanego tekstu zapytania.', - dateTimeFormat: 'MM/DD/YYYY hh:mm A', - table: { - header: { - source: 'Źródło', - time: 'Czas', - queryContent: 'Treść zapytania', - }, - }, - input: { - title: 'Tekst źródłowy', - placeholder: 'Proszę wpisać tekst, zaleca się krótkie zdanie deklaratywne.', - countWarning: 'Do 200 znaków.', - indexWarning: 'Tylko wiedza wysokiej jakości.', - testing: 'Testowanie', - }, - hit: { - title: 'AKAPITY ODZYSKIWANIA', - emptyTip: 'Wyniki testowania odzyskiwania będą tu pokazane', - }, - noRecentTip: 'Brak ostatnich wyników zapytań tutaj', - viewChart: 'Zobacz WYKRES WEKTOROWY', - settingTitle: 'Ustawienie pobierania', - viewDetail: 'Pokaż szczegóły', - keyword: 'Słowa kluczowe', - hitChunks: 'Trafienie w {{num}} fragmentów podrzędnych', - open: 'Otwierać', - records: 'Rekordy', - chunkDetail: 'Szczegóły kawałka', - imageUploader: { - tip: 'Prześlij lub upuść obrazy (Maks. {{batchCount}}, {{size}} MB każdy)', - tooltip: 'Prześlij obrazy (maks. {{batchCount}}, {{size}} MB każdy)', - dropZoneTip: 'Przeciągnij plik tutaj, aby go przesłać', - singleChunkAttachmentLimitTooltip: 'Liczba pojedynczych załączników nie może przekroczyć {{limit}}', - }, -} - -export default translation diff --git a/web/i18n/pl-PL/dataset-pipeline.json b/web/i18n/pl-PL/dataset-pipeline.json new file mode 100644 index 0000000000..ff9d01857e --- /dev/null +++ b/web/i18n/pl-PL/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "createFromScratch": { + "title": "Pusty potok wiedzy", + "description": "Utwórz niestandardowy potok od podstaw z pełną kontrolą nad przetwarzaniem i strukturą danych." + }, + "caution": "Ostrożność", + "backToKnowledge": "Powrót do wiedzy", + "importDSL": "Importowanie z pliku DSL", + "createKnowledge": "Tworzenie wiedzy", + "successTip": "Pomyślnie utworzono bazę wiedzy", + "errorTip": "Nie można utworzyć bazy wiedzy" + }, + "templates": { + "customized": "Dostosowane" + }, + "operations": { + "details": "Szczegóły", + "preview": "Prapremiera", + "convert": "Nawrócić", + "choose": "Wybierać", + "process": "Proces", + "dataSource": "Źródło danych", + "editInfo": "Edytowanie informacji", + "useTemplate": "Korzystanie z tego potoku wiedzy", + "exportPipeline": "Potok eksportu", + "backToDataSource": "Powrót do źródła danych", + "saveAndProcess": "Zapisywanie i przetwarzanie" + }, + "deletePipeline": { + "title": "Czy na pewno chcesz usunąć ten szablon potoku?", + "content": "Usunięcie szablonu potoku jest nieodwracalne." + }, + "publishPipeline": { + "success": { + "message": "Opublikowano potok wiedzy", + "tip": "Przejdź do Dokumenty, aby dodać lub zarządzać dokumentami." + }, + "error": { + "message": "Nie można opublikować potoku wiedzy" + } + }, + "publishTemplate": { + "success": { + "learnMore": "Dowiedz się więcej", + "tip": "Możesz użyć tego szablonu na stronie tworzenia.", + "message": "Opublikowano szablon potoku" + }, + "error": { + "message": "Nie można opublikować szablonu potoku" + } + }, + "exportDSL": { + "errorTip": "Nie można wyeksportować DSL potoku", + "successTip": "Pomyślnie wyeksportowano potok DSL" + }, + "details": { + "structure": "Struktura", + "structureTooltip": "Struktura fragmentów określa sposób dzielenia i indeksowania dokumentów — oferując tryby Ogólne, Nadrzędny-Podrzędny oraz Q&A — i jest unikatowa dla każdej bazy wiedzy.", + "createdBy": "Przez {{author}}" + }, + "testRun": { + "steps": { + "documentProcessing": "Przetwarzanie dokumentów", + "dataSource": "Źródło danych" + }, + "dataSource": { + "localFiles": "Pliki lokalne" + }, + "notion": { + "title": "Wybierz strony Notion", + "docTitle": "Dokumenty Notion" + }, + "title": "Uruchomienie testowe", + "tooltip": "W trybie uruchamiania testowego można importować tylko jeden dokument naraz w celu łatwiejszego debugowania i obserwacji." + }, + "inputFieldPanel": { + "uniqueInputs": { + "title": "Unikalne wejścia dla każdego wejścia", + "tooltip": "Unikatowe dane wejściowe są dostępne tylko dla wybranego źródła danych i jego węzłów podrzędnych. Użytkownicy nie będą musieli go wypełniać podczas wybierania innych źródeł danych. W pierwszym kroku (Źródło danych) pojawią się tylko pola wejściowe, do których odwołują się zmienne źródła danych. Wszystkie inne pola zostaną wyświetlone w drugim kroku (Dokumenty procesowe)." + }, + "globalInputs": { + "title": "Globalne dane wejściowe dla wszystkich wejść", + "tooltip": "Globalne dane wejściowe są współdzielone we wszystkich węzłach. Użytkownicy będą musieli je wypełnić podczas wybierania dowolnego źródła danych. Na przykład pola, takie jak ogranicznik i maksymalna długość fragmentu, mogą być jednolicie stosowane w wielu źródłach danych. W pierwszym kroku (Źródło danych) pojawiają się tylko pola wejściowe, do których odwołują się zmienne źródła danych. Wszystkie inne pola pojawiają się w drugim kroku (Dokumenty procesowe)." + }, + "preview": { + "stepOneTitle": "Źródło danych", + "stepTwoTitle": "Dokumenty procesowe" + }, + "error": { + "variableDuplicate": "Nazwa zmiennej już istnieje. Wybierz inną nazwę." + }, + "editInputField": "Edytuj pole wejściowe", + "addInputField": "Dodaj pole wejściowe", + "title": "Pola wprowadzania danych przez użytkownika", + "description": "Pola wejściowe użytkownika służą do definiowania i zbierania zmiennych wymaganych podczas procesu wykonywania potoku. Użytkownicy mogą dostosować typ pola i elastycznie konfigurować wartość wejściową, aby spełnić potrzeby różnych źródeł danych lub etapów przetwarzania dokumentów." + }, + "addDocuments": { + "steps": { + "processDocuments": "Dokumenty procesowe", + "chooseDatasource": "Wybieranie źródła danych", + "processingDocuments": "Przetwarzanie dokumentów" + }, + "stepOne": { + "preview": "Prapremiera" + }, + "stepTwo": { + "chunkSettings": "Ustawienia porcji", + "previewChunks": "Podgląd fragmentów" + }, + "stepThree": { + "learnMore": "Dowiedz się więcej" + }, + "backToDataSource": "Źródło danych", + "characters": "Znaków", + "title": "Dodawanie dokumentów", + "selectOnlineDocumentTip": "Przetwórz do {{count}} stron", + "selectOnlineDriveTip": "Przetwórz do {{count}} plików, maksymalnie {{fileSize}} MB każdy" + }, + "documentSettings": { + "title": "Ustawienia dokumentu" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} strony" + }, + "onlineDrive": { + "breadcrumbs": { + "searchPlaceholder": "Szukaj w plikach...", + "allFiles": "Wszystkie pliki", + "allBuckets": "Wszystkie zasobniki pamięci masowej w chmurze", + "searchResult": "Znajdź {{searchResultsLength}} elementów w folderze \"{{folderName}}\"" + }, + "resetKeywords": "Resetowanie słów kluczowych", + "emptySearchResult": "Nie znaleziono żadnych przedmiotów", + "notSupportedFileType": "Ten typ pliku nie jest obsługiwany", + "emptyFolder": "Ten folder jest pusty", + "notConnected": "{{name}} nie jest połączony", + "notConnectedTip": "Aby zsynchronizować się z {{name}}, najpierw należy nawiązać połączenie z {{name}}." + }, + "conversion": { + "confirm": { + "title": "Potwierdzenie", + "content": "To działanie jest trwałe. Nie będzie można powrócić do poprzedniej metody. Potwierdź, aby przekonwertować." + }, + "warning": "Tej czynności nie można cofnąć.", + "errorMessage": "Nie można przekonwertować zestawu danych na potok", + "descriptionChunk1": "Teraz możesz przekonwertować istniejącą bazę wiedzy tak, aby używała potoku wiedzy do przetwarzania dokumentów", + "successMessage": "Pomyślnie przekonwertowano zestaw danych na potok", + "title": "Konwertuj na potok wiedzy", + "descriptionChunk2": "— bardziej otwarte i elastyczne podejście z dostępem do wtyczek z naszego rynku. Spowoduje to zastosowanie nowej metody przetwarzania do wszystkich przyszłych dokumentów." + }, + "knowledgePermissions": "Uprawnienia", + "knowledgeNameAndIcon": "Nazwa i ikona wiedzy", + "inputField": "Pole wejściowe", + "knowledgeDescription": "Opis wiedzy", + "pipelineNameAndIcon": "Nazwa i ikona potoku", + "knowledgeNameAndIconPlaceholder": "Podaj nazwę Bazy Wiedzy", + "editPipelineInfo": "Edytowanie informacji o potoku", + "knowledgeDescriptionPlaceholder": "Opisz, co znajduje się w tej Bazie wiedzy. Szczegółowy opis umożliwia sztucznej inteligencji dokładniejszy dostęp do zawartości zestawu danych. Jeśli pole jest puste, Dify użyje domyślnej strategii trafień. (Opcjonalnie)", + "configurationTip": "Skonfiguruj {{pluginName}}" +} diff --git a/web/i18n/pl-PL/dataset-pipeline.ts b/web/i18n/pl-PL/dataset-pipeline.ts deleted file mode 100644 index b32a6e9a3d..0000000000 --- a/web/i18n/pl-PL/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - createFromScratch: { - title: 'Pusty potok wiedzy', - description: 'Utwórz niestandardowy potok od podstaw z pełną kontrolą nad przetwarzaniem i strukturą danych.', - }, - caution: 'Ostrożność', - backToKnowledge: 'Powrót do wiedzy', - importDSL: 'Importowanie z pliku DSL', - createKnowledge: 'Tworzenie wiedzy', - successTip: 'Pomyślnie utworzono bazę wiedzy', - errorTip: 'Nie można utworzyć bazy wiedzy', - }, - templates: { - customized: 'Dostosowane', - }, - operations: { - details: 'Szczegóły', - preview: 'Prapremiera', - convert: 'Nawrócić', - choose: 'Wybierać', - process: 'Proces', - dataSource: 'Źródło danych', - editInfo: 'Edytowanie informacji', - useTemplate: 'Korzystanie z tego potoku wiedzy', - exportPipeline: 'Potok eksportu', - backToDataSource: 'Powrót do źródła danych', - saveAndProcess: 'Zapisywanie i przetwarzanie', - }, - deletePipeline: { - title: 'Czy na pewno chcesz usunąć ten szablon potoku?', - content: 'Usunięcie szablonu potoku jest nieodwracalne.', - }, - publishPipeline: { - success: { - message: 'Opublikowano potok wiedzy', - tip: 'Przejdź do Dokumenty, aby dodać lub zarządzać dokumentami.', - }, - error: { - message: 'Nie można opublikować potoku wiedzy', - }, - }, - publishTemplate: { - success: { - learnMore: 'Dowiedz się więcej', - tip: 'Możesz użyć tego szablonu na stronie tworzenia.', - message: 'Opublikowano szablon potoku', - }, - error: { - message: 'Nie można opublikować szablonu potoku', - }, - }, - exportDSL: { - errorTip: 'Nie można wyeksportować DSL potoku', - successTip: 'Pomyślnie wyeksportowano potok DSL', - }, - details: { - structure: 'Struktura', - structureTooltip: 'Struktura fragmentów określa sposób dzielenia i indeksowania dokumentów — oferując tryby Ogólne, Nadrzędny-Podrzędny oraz Q&A — i jest unikatowa dla każdej bazy wiedzy.', - createdBy: 'Przez {{author}}', - }, - testRun: { - steps: { - documentProcessing: 'Przetwarzanie dokumentów', - dataSource: 'Źródło danych', - }, - dataSource: { - localFiles: 'Pliki lokalne', - }, - notion: { - title: 'Wybierz strony Notion', - docTitle: 'Dokumenty Notion', - }, - title: 'Uruchomienie testowe', - tooltip: 'W trybie uruchamiania testowego można importować tylko jeden dokument naraz w celu łatwiejszego debugowania i obserwacji.', - }, - inputFieldPanel: { - uniqueInputs: { - title: 'Unikalne wejścia dla każdego wejścia', - tooltip: 'Unikatowe dane wejściowe są dostępne tylko dla wybranego źródła danych i jego węzłów podrzędnych. Użytkownicy nie będą musieli go wypełniać podczas wybierania innych źródeł danych. W pierwszym kroku (Źródło danych) pojawią się tylko pola wejściowe, do których odwołują się zmienne źródła danych. Wszystkie inne pola zostaną wyświetlone w drugim kroku (Dokumenty procesowe).', - }, - globalInputs: { - title: 'Globalne dane wejściowe dla wszystkich wejść', - tooltip: 'Globalne dane wejściowe są współdzielone we wszystkich węzłach. Użytkownicy będą musieli je wypełnić podczas wybierania dowolnego źródła danych. Na przykład pola, takie jak ogranicznik i maksymalna długość fragmentu, mogą być jednolicie stosowane w wielu źródłach danych. W pierwszym kroku (Źródło danych) pojawiają się tylko pola wejściowe, do których odwołują się zmienne źródła danych. Wszystkie inne pola pojawiają się w drugim kroku (Dokumenty procesowe).', - }, - preview: { - stepOneTitle: 'Źródło danych', - stepTwoTitle: 'Dokumenty procesowe', - }, - error: { - variableDuplicate: 'Nazwa zmiennej już istnieje. Wybierz inną nazwę.', - }, - editInputField: 'Edytuj pole wejściowe', - addInputField: 'Dodaj pole wejściowe', - title: 'Pola wprowadzania danych przez użytkownika', - description: 'Pola wejściowe użytkownika służą do definiowania i zbierania zmiennych wymaganych podczas procesu wykonywania potoku. Użytkownicy mogą dostosować typ pola i elastycznie konfigurować wartość wejściową, aby spełnić potrzeby różnych źródeł danych lub etapów przetwarzania dokumentów.', - }, - addDocuments: { - steps: { - processDocuments: 'Dokumenty procesowe', - chooseDatasource: 'Wybieranie źródła danych', - processingDocuments: 'Przetwarzanie dokumentów', - }, - stepOne: { - preview: 'Prapremiera', - }, - stepTwo: { - chunkSettings: 'Ustawienia porcji', - previewChunks: 'Podgląd fragmentów', - }, - stepThree: { - learnMore: 'Dowiedz się więcej', - }, - backToDataSource: 'Źródło danych', - characters: 'Znaków', - title: 'Dodawanie dokumentów', - selectOnlineDocumentTip: 'Przetwórz do {{count}} stron', - selectOnlineDriveTip: 'Przetwórz do {{count}} plików, maksymalnie {{fileSize}} MB każdy', - }, - documentSettings: { - title: 'Ustawienia dokumentu', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} strony', - }, - onlineDrive: { - breadcrumbs: { - searchPlaceholder: 'Szukaj w plikach...', - allFiles: 'Wszystkie pliki', - allBuckets: 'Wszystkie zasobniki pamięci masowej w chmurze', - searchResult: 'Znajdź {{searchResultsLength}} elementów w folderze "{{folderName}}"', - }, - resetKeywords: 'Resetowanie słów kluczowych', - emptySearchResult: 'Nie znaleziono żadnych przedmiotów', - notSupportedFileType: 'Ten typ pliku nie jest obsługiwany', - emptyFolder: 'Ten folder jest pusty', - notConnected: '{{name}} nie jest połączony', - notConnectedTip: 'Aby zsynchronizować się z {{name}}, najpierw należy nawiązać połączenie z {{name}}.', - }, - conversion: { - confirm: { - title: 'Potwierdzenie', - content: 'To działanie jest trwałe. Nie będzie można powrócić do poprzedniej metody. Potwierdź, aby przekonwertować.', - }, - warning: 'Tej czynności nie można cofnąć.', - errorMessage: 'Nie można przekonwertować zestawu danych na potok', - descriptionChunk1: 'Teraz możesz przekonwertować istniejącą bazę wiedzy tak, aby używała potoku wiedzy do przetwarzania dokumentów', - successMessage: 'Pomyślnie przekonwertowano zestaw danych na potok', - title: 'Konwertuj na potok wiedzy', - descriptionChunk2: '— bardziej otwarte i elastyczne podejście z dostępem do wtyczek z naszego rynku. Spowoduje to zastosowanie nowej metody przetwarzania do wszystkich przyszłych dokumentów.', - }, - knowledgePermissions: 'Uprawnienia', - knowledgeNameAndIcon: 'Nazwa i ikona wiedzy', - inputField: 'Pole wejściowe', - knowledgeDescription: 'Opis wiedzy', - pipelineNameAndIcon: 'Nazwa i ikona potoku', - knowledgeNameAndIconPlaceholder: 'Podaj nazwę Bazy Wiedzy', - editPipelineInfo: 'Edytowanie informacji o potoku', - knowledgeDescriptionPlaceholder: 'Opisz, co znajduje się w tej Bazie wiedzy. Szczegółowy opis umożliwia sztucznej inteligencji dokładniejszy dostęp do zawartości zestawu danych. Jeśli pole jest puste, Dify użyje domyślnej strategii trafień. (Opcjonalnie)', - configurationTip: 'Skonfiguruj {{pluginName}}', -} - -export default translation diff --git a/web/i18n/pl-PL/dataset-settings.json b/web/i18n/pl-PL/dataset-settings.json new file mode 100644 index 0000000000..3200fec39c --- /dev/null +++ b/web/i18n/pl-PL/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "Ustawienia wiedzy", + "desc": "Tutaj możesz modyfikować właściwości i metody działania Wiedzy.", + "form": { + "name": "Nazwa wiedzy", + "namePlaceholder": "Proszę wprowadzić nazwę wiedzy", + "nameError": "Nazwa nie może być pusta", + "desc": "Opis wiedzy", + "descInfo": "Proszę napisać klarowny opis tekstowy, aby zarysować zawartość Wiedzy. Ten opis będzie wykorzystywany jako podstawa do dopasowywania podczas wyboru z wielu wiedz dla wnioskowania.", + "descPlaceholder": "Opisz, co znajduje się w tej Wiedzy. Szczegółowy opis pozwala sztucznej inteligencji na dostęp do treści Wiedzy w odpowiednim czasie. Jeśli jest pusty, Dify użyje domyślnej strategii trafień.", + "descWrite": "Dowiedz się, jak napisać dobry opis Wiedzy.", + "permissions": "Uprawnienia", + "permissionsOnlyMe": "Tylko ja", + "permissionsAllMember": "Wszyscy członkowie zespołu", + "indexMethod": "Metoda indeksowania", + "indexMethodHighQuality": "Wysoka jakość", + "indexMethodHighQualityTip": "Wywołaj model Embedding do przetwarzania, aby zapewnić większą dokładność przy zapytaniach użytkowników.", + "indexMethodEconomy": "Ekonomiczna", + "indexMethodEconomyTip": "Użyj silników wektorów offline, indeksów słów kluczowych itp., aby zmniejszyć dokładność bez wydawania tokenów", + "embeddingModel": "Model wbudowywania", + "embeddingModelTip": "Aby zmienić model wbudowywania, przejdź do ", + "embeddingModelTipLink": "Ustawienia", + "retrievalSetting": { + "title": "Ustawienia doboru", + "learnMore": "Dowiedz się więcej", + "description": " dotyczące metody doboru.", + "longDescription": " dotyczące metody doboru, możesz to zmienić w dowolnym momencie w ustawieniach wiedzy.", + "method": "Metoda pozyskiwania", + "multiModalTip": "Gdy model osadzania obsługuje wielomodalność, proszę wybrać model wielomodalny do ponownego rankingu w celu uzyskania lepszej wydajności." + }, + "save": "Zapisz", + "permissionsInvitedMembers": "Częściowi członkowie zespołu", + "me": "(Ty)", + "externalKnowledgeAPI": "Interfejs API wiedzy zewnętrznej", + "retrievalSettings": "Ustawienia pobierania", + "externalKnowledgeID": "Zewnętrzny identyfikator wiedzy", + "helpText": "Dowiedz się, jak napisać dobry opis zestawu danych.", + "upgradeHighQualityTip": "Po uaktualnieniu do trybu wysokiej jakości powrót do trybu ekonomicznego nie jest dostępny", + "indexMethodChangeToEconomyDisabledTip": "Niedostępne w przypadku zmiany z HQ na ECO", + "searchModel": "Szukaj modelu", + "chunkStructure": { + "learnMore": "Dowiedz się więcej", + "description": "o strukturze porcji.", + "title": "Struktura porcji" + }, + "numberOfKeywords": "Liczba słów kluczowych", + "onSearchResults": "Żaden członek nie pasuje do Twojego zapytania.\nSpróbuj ponownie wyszukać.", + "nameAndIcon": "Nazwa i ikona" + } +} diff --git a/web/i18n/pl-PL/dataset-settings.ts b/web/i18n/pl-PL/dataset-settings.ts deleted file mode 100644 index d1a7ca9611..0000000000 --- a/web/i18n/pl-PL/dataset-settings.ts +++ /dev/null @@ -1,57 +0,0 @@ -const translation = { - title: 'Ustawienia wiedzy', - desc: 'Tutaj możesz modyfikować właściwości i metody działania Wiedzy.', - form: { - name: 'Nazwa wiedzy', - namePlaceholder: 'Proszę wprowadzić nazwę wiedzy', - nameError: 'Nazwa nie może być pusta', - desc: 'Opis wiedzy', - descInfo: - 'Proszę napisać klarowny opis tekstowy, aby zarysować zawartość Wiedzy. Ten opis będzie wykorzystywany jako podstawa do dopasowywania podczas wyboru z wielu wiedz dla wnioskowania.', - descPlaceholder: - 'Opisz, co znajduje się w tej Wiedzy. Szczegółowy opis pozwala sztucznej inteligencji na dostęp do treści Wiedzy w odpowiednim czasie. Jeśli jest pusty, Dify użyje domyślnej strategii trafień.', - descWrite: 'Dowiedz się, jak napisać dobry opis Wiedzy.', - permissions: 'Uprawnienia', - permissionsOnlyMe: 'Tylko ja', - permissionsAllMember: 'Wszyscy członkowie zespołu', - indexMethod: 'Metoda indeksowania', - indexMethodHighQuality: 'Wysoka jakość', - indexMethodHighQualityTip: - 'Wywołaj model Embedding do przetwarzania, aby zapewnić większą dokładność przy zapytaniach użytkowników.', - indexMethodEconomy: 'Ekonomiczna', - indexMethodEconomyTip: - 'Użyj silników wektorów offline, indeksów słów kluczowych itp., aby zmniejszyć dokładność bez wydawania tokenów', - embeddingModel: 'Model wbudowywania', - embeddingModelTip: 'Aby zmienić model wbudowywania, przejdź do ', - embeddingModelTipLink: 'Ustawienia', - retrievalSetting: { - title: 'Ustawienia doboru', - learnMore: 'Dowiedz się więcej', - description: ' dotyczące metody doboru.', - longDescription: - ' dotyczące metody doboru, możesz to zmienić w dowolnym momencie w ustawieniach wiedzy.', - method: 'Metoda pozyskiwania', - multiModalTip: 'Gdy model osadzania obsługuje wielomodalność, proszę wybrać model wielomodalny do ponownego rankingu w celu uzyskania lepszej wydajności.', - }, - save: 'Zapisz', - permissionsInvitedMembers: 'Częściowi członkowie zespołu', - me: '(Ty)', - externalKnowledgeAPI: 'Interfejs API wiedzy zewnętrznej', - retrievalSettings: 'Ustawienia pobierania', - externalKnowledgeID: 'Zewnętrzny identyfikator wiedzy', - helpText: 'Dowiedz się, jak napisać dobry opis zestawu danych.', - upgradeHighQualityTip: 'Po uaktualnieniu do trybu wysokiej jakości powrót do trybu ekonomicznego nie jest dostępny', - indexMethodChangeToEconomyDisabledTip: 'Niedostępne w przypadku zmiany z HQ na ECO', - searchModel: 'Szukaj modelu', - chunkStructure: { - learnMore: 'Dowiedz się więcej', - description: 'o strukturze porcji.', - title: 'Struktura porcji', - }, - numberOfKeywords: 'Liczba słów kluczowych', - onSearchResults: 'Żaden członek nie pasuje do Twojego zapytania.\nSpróbuj ponownie wyszukać.', - nameAndIcon: 'Nazwa i ikona', - }, -} - -export default translation diff --git a/web/i18n/pl-PL/dataset.json b/web/i18n/pl-PL/dataset.json new file mode 100644 index 0000000000..a623af7bfa --- /dev/null +++ b/web/i18n/pl-PL/dataset.json @@ -0,0 +1,249 @@ +{ + "knowledge": "Wiedza", + "documentCount": " dokumenty", + "wordCount": " k słów", + "appCount": " powiązane aplikacje", + "createDataset": "Utwórz Wiedzę", + "createDatasetIntro": "Zaimportuj własne dane tekstowe lub zapisuj dane w czasie rzeczywistym za pomocą Webhooka w celu wzmocnienia kontekstu LLM.", + "deleteDatasetConfirmTitle": "Czy na pewno usunąć tę Wiedzę?", + "deleteDatasetConfirmContent": "Usunięcie Wiedzy jest nieodwracalne. Użytkownicy nie będą już mieli dostępu do Twojej Wiedzy, a wszystkie konfiguracje i logi zostaną trwale usunięte.", + "datasetUsedByApp": "Ta wiedza jest wykorzystywana przez niektóre aplikacje. Aplikacje nie będą już mogły korzystać z tej Wiedzy, a wszystkie konfiguracje podpowiedzi i logi zostaną trwale usunięte.", + "datasetDeleted": "Wiedza usunięta", + "datasetDeleteFailed": "Nie udało się usunąć Wiedzy", + "didYouKnow": "Czy wiedziałeś?", + "intro1": "Wiedzę można zintegrować z aplikacją Dify ", + "intro2": "jako kontekst", + "intro3": ",", + "intro4": "lub ", + "intro5": "może być utworzona", + "intro6": " jako samodzielny wtyczka indeksująca ChatGPT do publikacji", + "unavailable": "Niedostępny", + "datasets": "WIEDZA", + "datasetsApi": "DOSTĘP DO API", + "retrieval": { + "semantic_search": { + "title": "Wyszukiwanie wektorowe", + "description": "Generowanie osadzeń zapytań i wyszukiwanie fragmentów tekstu najbardziej podobnych do ich wektorowej reprezentacji." + }, + "full_text_search": { + "title": "Wyszukiwanie pełnotekstowe", + "description": "Indeksowanie wszystkich terminów w dokumencie, umożliwiając użytkownikom wyszukiwanie dowolnego terminu i odzyskiwanie odpowiedniego fragmentu tekstu zawierającego te terminy." + }, + "hybrid_search": { + "title": "Wyszukiwanie hybrydowe", + "description": "Wykonaj jednocześnie pełnotekstowe wyszukiwanie i wyszukiwanie wektorowe, ponownie porządkuj, aby wybrać najlepsze dopasowanie dla zapytania użytkownika. Konieczna jest konfiguracja API Rerank model.", + "recommend": "Polecany" + }, + "invertedIndex": {}, + "change": "Zmień", + "changeRetrievalMethod": "Zmień metodę odzyskiwania", + "keyword_search": { + "title": "Odwrócony indeks", + "description": "Inverted Index to struktura używana do efektywnego wyszukiwania. Uporządkowany według terminów, każdy termin wskazuje dokumenty lub strony internetowe, które go zawierają." + } + }, + "docsFailedNotice": "nie udało się zindeksować dokumentów", + "retry": "Ponów", + "indexingTechnique": { + "high_quality": "WJ", + "economy": "EKO" + }, + "indexingMethod": { + "semantic_search": "WEKTOR", + "full_text_search": "PEŁNY TEKST", + "hybrid_search": "HYBRYDOWY", + "invertedIndex": "ODWRÓCONY" + }, + "mixtureHighQualityAndEconomicTip": "Model ponownego rankingu jest wymagany dla mieszanki wysokiej jakości i ekonomicznych baz wiedzy.", + "inconsistentEmbeddingModelTip": "Model ponownego rankingu jest wymagany, jeśli modele osadzania wybranych baz wiedzy są niespójne.", + "retrievalSettings": "Ustawienia wyszukiwania", + "rerankSettings": "Ustawienia ponownego rankingu", + "weightedScore": { + "title": "Ważona ocena", + "description": "Poprzez dostosowanie przypisanych wag, ta strategia ponownego rankingu określa, czy priorytetowo traktować dopasowanie semantyczne czy słów kluczowych.", + "semanticFirst": "Najpierw semantyczne", + "keywordFirst": "Najpierw słowa kluczowe", + "customized": "Dostosowane", + "semantic": "Semantyczne", + "keyword": "Słowo kluczowe" + }, + "nTo1RetrievalLegacy": "Wyszukiwanie N-do-1 zostanie oficjalnie wycofane od września. Zaleca się korzystanie z najnowszego wyszukiwania wielościeżkowego, aby uzyskać lepsze wyniki.", + "nTo1RetrievalLegacyLink": "Dowiedz się więcej", + "nTo1RetrievalLegacyLinkText": "Wyszukiwanie N-do-1 zostanie oficjalnie wycofane we wrześniu.", + "defaultRetrievalTip": "Pobieranie wielu ścieżek jest używane domyślnie. Wiedza jest pobierana z wielu baz wiedzy, a następnie ponownie klasyfikowana.", + "editExternalAPIConfirmWarningContent": { + "end": "wiedzy zewnętrznej, a ta modyfikacja zostanie zastosowana do nich wszystkich. Czy na pewno chcesz zapisać tę zmianę?", + "front": "Ten interfejs API wiedzy zewnętrznej jest połączony z" + }, + "editExternalAPIFormWarning": { + "front": "Ten zewnętrzny interfejs API jest powiązany z", + "end": "Wiedza zewnętrzna" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "end": "?", + "front": "Usunąć" + }, + "content": { + "front": "Ten interfejs API wiedzy zewnętrznej jest połączony z", + "end": "wiedza zewnętrzna. Usunięcie tego interfejsu API spowoduje unieważnienie ich wszystkich. Czy na pewno chcesz usunąć ten interfejs API?" + }, + "noConnectionContent": "Czy na pewno chcesz usunąć ten interfejs API?" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "Wybieranie interfejsu API wiedzy zewnętrznej" + }, + "connectDatasetIntro": { + "content": { + "front": "Aby nawiązać połączenie z zewnętrzną bazą wiedzy, należy najpierw utworzyć zewnętrzny interfejs API. Przeczytaj uważnie i zapoznaj się z", + "link": "Dowiedz się, jak utworzyć zewnętrzny interfejs API", + "end": ". Następnie znajdź odpowiedni identyfikator wiedzy i wypełnij go w formularzu po lewej stronie. Jeśli wszystkie informacje są poprawne, po kliknięciu przycisku połączenia automatycznie przejdzie do testu wyszukiwania w bazie wiedzy." + }, + "learnMore": "Dowiedz się więcej", + "title": "Jak połączyć się z zewnętrzną bazą wiedzy" + }, + "connectHelper": { + "helper1": "Połącz się z zewnętrznymi bazami wiedzy za pośrednictwem interfejsu API i identyfikatora bazy wiedzy. Obecnie", + "helper3": ". Zdecydowanie zalecamy, aby", + "helper5": "ostrożnie przed użyciem tej funkcji.", + "helper4": "Zapoznaj się z dokumentacją pomocy", + "helper2": "Obsługiwana jest tylko funkcja pobierania" + }, + "externalKnowledgeForm": { + "connect": "Połączyć", + "cancel": "Anuluj" + }, + "externalAPIForm": { + "encrypted": { + "end": "Technologia.", + "front": "Twój token API zostanie zaszyfrowany i będzie przechowywany za pomocą" + }, + "edit": "Redagować", + "save": "Zapisać", + "name": "Nazwa", + "apiKey": "Klucz API", + "cancel": "Anuluj", + "endpoint": "Punkt końcowy interfejsu API" + }, + "externalAPIPanelDocumentation": "Dowiedz się, jak utworzyć interfejs API wiedzy zewnętrznej", + "noExternalKnowledge": "Nie ma jeszcze interfejsu API wiedzy zewnętrznej, kliknij tutaj, aby utworzyć", + "createExternalAPI": "Dodawanie interfejsu API wiedzy zewnętrznej", + "connectDataset": "Nawiązywanie połączenia z zewnętrzną bazą wiedzy", + "editExternalAPITooltipTitle": "POWIĄZANA WIEDZA", + "externalKnowledgeId": "Zewnętrzny identyfikator wiedzy", + "externalAPIPanelTitle": "Interfejs API wiedzy zewnętrznej", + "externalKnowledgeName": "Nazwa wiedzy zewnętrznej", + "externalKnowledgeIdPlaceholder": "Podaj identyfikator wiedzy", + "createNewExternalAPI": "Tworzenie nowego interfejsu API wiedzy zewnętrznej", + "externalKnowledgeDescription": "Opis wiedzy", + "externalKnowledgeDescriptionPlaceholder": "Opisz, co znajduje się w tej bazie wiedzy (opcjonalnie)", + "allExternalTip": "W przypadku korzystania tylko z wiedzy zewnętrznej użytkownik może zdecydować, czy chce włączyć model Rerank. Jeśli ta opcja nie jest włączona, pobrane fragmenty będą sortowane na podstawie wyników. Gdy strategie wyszukiwania z różnych baz wiedzy są niespójne, będzie to niedokładne.", + "editExternalAPIFormTitle": "Edytowanie interfejsu API wiedzy zewnętrznej", + "mixtureInternalAndExternalTip": "Model Rerank jest wymagany do połączenia wiedzy wewnętrznej i zewnętrznej.", + "externalAPI": "Zewnętrzny interfejs API", + "externalTag": "Zewnętrzny", + "learnHowToWriteGoodKnowledgeDescription": "Dowiedz się, jak napisać dobry opis wiedzy", + "externalKnowledgeNamePlaceholder": "Podaj nazwę bazy wiedzy", + "externalAPIPanelDescription": "Interfejs API wiedzy zewnętrznej służy do łączenia się z bazą wiedzy poza Dify i pobierania wiedzy z tej bazy wiedzy.", + "chunkingMode": { + "parentChild": "Rodzic-dziecko", + "general": "Ogólne", + "graph": "Wykres", + "qa": "Pytania i odpowiedziQ&A" + }, + "parentMode": { + "fullDoc": "Pełna wersja dokumentu", + "paragraph": "Akapit" + }, + "batchAction": { + "selected": "Wybrany", + "archive": "Archiwum", + "enable": "Umożliwiać", + "disable": "Wyłączać", + "delete": "Usunąć", + "cancel": "Anuluj" + }, + "preprocessDocument": "{{liczba}} Przetwarzanie wstępne dokumentów", + "localDocs": "Lokalne dokumenty", + "documentsDisabled": "{{num}} dokumenty wyłączone - nieaktywne przez ponad 30 dni", + "enable": "Umożliwiać", + "allKnowledge": "Cała wiedza", + "allKnowledgeDescription": "Wybierz tę opcję, aby wyświetlić całą wiedzę w tym obszarze roboczym. Tylko właściciel obszaru roboczego może zarządzać całą wiedzą.", + "metadata": { + "createMetadata": { + "back": "Tył", + "namePlaceholder": "Dodaj nazwę metadanych", + "name": "Imię", + "title": "Nowe metadane", + "type": "Typ" + }, + "checkName": { + "empty": "Nazwa metadanych nie może być pusta", + "invalid": "Nazwa metadanych może zawierać tylko małe litery, cyfry i podkreślenia oraz musi zaczynać się od małej litery", + "tooLong": "Nazwa metadanych nie może przekraczać {{max}} znaków" + }, + "batchEditMetadata": { + "multipleValue": "Wielokrotna wartość", + "editMetadata": "Edytuj metadane", + "editDocumentsNum": "Edycja {{num}} dokumentów", + "applyToAllSelectDocument": "Zastosuj do wszystkich wybranych dokumentów", + "applyToAllSelectDocumentTip": "Automatycznie utwórz wszystkie powyżej wymienione edytowane i nowe metadane dla wszystkich wybranych dokumentów, w przeciwnym razie edytowanie metadanych będzie dotyczyć tylko dokumentów, które je posiadają." + }, + "selectMetadata": { + "manageAction": "Zarządzaj", + "newAction": "Nowe metadane", + "search": "Szukaj metadanych" + }, + "datasetMetadata": { + "values": "{{num}} Wartości", + "rename": "Zmień nazwę", + "namePlaceholder": "Nazwa metadanych", + "addMetaData": "Dodaj metadane", + "deleteContent": "Czy na pewno chcesz usunąć metadane \"{{name}}\"?", + "builtIn": "Wbudowany", + "deleteTitle": "Potwierdź usunięcie", + "description": "Możesz zarządzać wszystkimi metadanymi w tej wiedzy tutaj. Modyfikacje będą synchronizowane z każdym dokumentem.", + "name": "Imię", + "disabled": "Wyłączone", + "builtInDescription": "Wbudowane metadane są automatycznie ekstraktowane i generowane. Muszą być włączone przed użyciem i nie można ich edytować." + }, + "documentMetadata": { + "technicalParameters": "Parametry techniczne", + "startLabeling": "Rozpocznij etykietowanie", + "documentInformation": "Informacje o dokumencie", + "metadataToolTip": "Metadane służą jako istotny filtr, który zwiększa dokładność i trafność wyszukiwania informacji. Możesz modyfikować i dodawać metadane do tego dokumentu tutaj." + }, + "metadata": "Metadane", + "addMetadata": "Dodaj metadane", + "chooseTime": "Wybierz czas..." + }, + "embeddingModelNotAvailable": "Model osadzający jest niedostępny.", + "updated": "Aktualizowano", + "createFromPipeline": "Tworzenie na podstawie potoku wiedzy", + "externalKnowledgeBase": "Zewnętrzna baza wiedzy", + "serviceApi": { + "card": { + "apiKey": "Klucz API", + "title": "Usługa backendowa API", + "apiReference": "Dokumentacja API", + "endpoint": "Punkt końcowy API usługi" + }, + "title": "Interfejs API usługi", + "disabled": "Niepełnosprawny", + "enabled": "W serwisie" + }, + "docAllEnabled_one": "Dokument {{count}} włączony", + "docAllEnabled_other": "Wszystkie dokumenty {{count}} włączone", + "partialEnabled_one": "Łącznie {{count}} dokumentów, {{num}} dostępnych", + "partialEnabled_other": "Łącznie {{count}} dokumentów, {{num}} dostępnych", + "cornerLabel": { + "unavailable": "Niedostępne", + "pipeline": "Rurociąg" + }, + "multimodal": "Multimodalny", + "imageUploader": { + "button": "Przeciągnij i upuść plik lub folder, lub", + "browse": "Przeglądaj", + "tip": "{{supportTypes}} (maks. {{batchCount}}, {{size}} MB każdy)" + } +} diff --git a/web/i18n/pl-PL/dataset.ts b/web/i18n/pl-PL/dataset.ts deleted file mode 100644 index c49ee50e5b..0000000000 --- a/web/i18n/pl-PL/dataset.ts +++ /dev/null @@ -1,257 +0,0 @@ -const translation = { - knowledge: 'Wiedza', - documentCount: ' dokumenty', - wordCount: ' k słów', - appCount: ' powiązane aplikacje', - createDataset: 'Utwórz Wiedzę', - createDatasetIntro: - 'Zaimportuj własne dane tekstowe lub zapisuj dane w czasie rzeczywistym za pomocą Webhooka w celu wzmocnienia kontekstu LLM.', - deleteDatasetConfirmTitle: 'Czy na pewno usunąć tę Wiedzę?', - deleteDatasetConfirmContent: - 'Usunięcie Wiedzy jest nieodwracalne. Użytkownicy nie będą już mieli dostępu do Twojej Wiedzy, a wszystkie konfiguracje i logi zostaną trwale usunięte.', - datasetUsedByApp: 'Ta wiedza jest wykorzystywana przez niektóre aplikacje. Aplikacje nie będą już mogły korzystać z tej Wiedzy, a wszystkie konfiguracje podpowiedzi i logi zostaną trwale usunięte.', - datasetDeleted: 'Wiedza usunięta', - datasetDeleteFailed: 'Nie udało się usunąć Wiedzy', - didYouKnow: 'Czy wiedziałeś?', - intro1: 'Wiedzę można zintegrować z aplikacją Dify ', - intro2: 'jako kontekst', - intro3: ',', - intro4: 'lub ', - intro5: 'może być utworzona', - intro6: ' jako samodzielny wtyczka indeksująca ChatGPT do publikacji', - unavailable: 'Niedostępny', - datasets: 'WIEDZA', - datasetsApi: 'DOSTĘP DO API', - retrieval: { - semantic_search: { - title: 'Wyszukiwanie wektorowe', - description: - 'Generowanie osadzeń zapytań i wyszukiwanie fragmentów tekstu najbardziej podobnych do ich wektorowej reprezentacji.', - }, - full_text_search: { - title: 'Wyszukiwanie pełnotekstowe', - description: - 'Indeksowanie wszystkich terminów w dokumencie, umożliwiając użytkownikom wyszukiwanie dowolnego terminu i odzyskiwanie odpowiedniego fragmentu tekstu zawierającego te terminy.', - }, - hybrid_search: { - title: 'Wyszukiwanie hybrydowe', - description: - 'Wykonaj jednocześnie pełnotekstowe wyszukiwanie i wyszukiwanie wektorowe, ponownie porządkuj, aby wybrać najlepsze dopasowanie dla zapytania użytkownika. Konieczna jest konfiguracja API Rerank model.', - recommend: 'Polecany', - }, - invertedIndex: { - }, - change: 'Zmień', - changeRetrievalMethod: 'Zmień metodę odzyskiwania', - keyword_search: { - title: 'Odwrócony indeks', - description: 'Inverted Index to struktura używana do efektywnego wyszukiwania. Uporządkowany według terminów, każdy termin wskazuje dokumenty lub strony internetowe, które go zawierają.', - }, - }, - docsFailedNotice: 'nie udało się zindeksować dokumentów', - retry: 'Ponów', - indexingTechnique: { - high_quality: 'WJ', - economy: 'EKO', - }, - indexingMethod: { - semantic_search: 'WEKTOR', - full_text_search: 'PEŁNY TEKST', - hybrid_search: 'HYBRYDOWY', - invertedIndex: 'ODWRÓCONY', - }, - mixtureHighQualityAndEconomicTip: 'Model ponownego rankingu jest wymagany dla mieszanki wysokiej jakości i ekonomicznych baz wiedzy.', - inconsistentEmbeddingModelTip: 'Model ponownego rankingu jest wymagany, jeśli modele osadzania wybranych baz wiedzy są niespójne.', - retrievalSettings: 'Ustawienia wyszukiwania', - rerankSettings: 'Ustawienia ponownego rankingu', - weightedScore: { - title: 'Ważona ocena', - description: 'Poprzez dostosowanie przypisanych wag, ta strategia ponownego rankingu określa, czy priorytetowo traktować dopasowanie semantyczne czy słów kluczowych.', - semanticFirst: 'Najpierw semantyczne', - keywordFirst: 'Najpierw słowa kluczowe', - customized: 'Dostosowane', - semantic: 'Semantyczne', - keyword: 'Słowo kluczowe', - }, - nTo1RetrievalLegacy: 'Wyszukiwanie N-do-1 zostanie oficjalnie wycofane od września. Zaleca się korzystanie z najnowszego wyszukiwania wielościeżkowego, aby uzyskać lepsze wyniki.', - nTo1RetrievalLegacyLink: 'Dowiedz się więcej', - nTo1RetrievalLegacyLinkText: 'Wyszukiwanie N-do-1 zostanie oficjalnie wycofane we wrześniu.', - defaultRetrievalTip: 'Pobieranie wielu ścieżek jest używane domyślnie. Wiedza jest pobierana z wielu baz wiedzy, a następnie ponownie klasyfikowana.', - editExternalAPIConfirmWarningContent: { - end: 'wiedzy zewnętrznej, a ta modyfikacja zostanie zastosowana do nich wszystkich. Czy na pewno chcesz zapisać tę zmianę?', - front: 'Ten interfejs API wiedzy zewnętrznej jest połączony z', - }, - editExternalAPIFormWarning: { - front: 'Ten zewnętrzny interfejs API jest powiązany z', - end: 'Wiedza zewnętrzna', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - end: '?', - front: 'Usunąć', - }, - content: { - front: 'Ten interfejs API wiedzy zewnętrznej jest połączony z', - end: 'wiedza zewnętrzna. Usunięcie tego interfejsu API spowoduje unieważnienie ich wszystkich. Czy na pewno chcesz usunąć ten interfejs API?', - }, - noConnectionContent: 'Czy na pewno chcesz usunąć ten interfejs API?', - }, - selectExternalKnowledgeAPI: { - placeholder: 'Wybieranie interfejsu API wiedzy zewnętrznej', - }, - connectDatasetIntro: { - content: { - front: 'Aby nawiązać połączenie z zewnętrzną bazą wiedzy, należy najpierw utworzyć zewnętrzny interfejs API. Przeczytaj uważnie i zapoznaj się z', - link: 'Dowiedz się, jak utworzyć zewnętrzny interfejs API', - end: '. Następnie znajdź odpowiedni identyfikator wiedzy i wypełnij go w formularzu po lewej stronie. Jeśli wszystkie informacje są poprawne, po kliknięciu przycisku połączenia automatycznie przejdzie do testu wyszukiwania w bazie wiedzy.', - }, - learnMore: 'Dowiedz się więcej', - title: 'Jak połączyć się z zewnętrzną bazą wiedzy', - }, - connectHelper: { - helper1: 'Połącz się z zewnętrznymi bazami wiedzy za pośrednictwem interfejsu API i identyfikatora bazy wiedzy. Obecnie', - helper3: '. Zdecydowanie zalecamy, aby', - helper5: 'ostrożnie przed użyciem tej funkcji.', - helper4: 'Zapoznaj się z dokumentacją pomocy', - helper2: 'Obsługiwana jest tylko funkcja pobierania', - }, - externalKnowledgeForm: { - connect: 'Połączyć', - cancel: 'Anuluj', - }, - externalAPIForm: { - encrypted: { - end: 'Technologia.', - front: 'Twój token API zostanie zaszyfrowany i będzie przechowywany za pomocą', - }, - edit: 'Redagować', - save: 'Zapisać', - name: 'Nazwa', - apiKey: 'Klucz API', - cancel: 'Anuluj', - endpoint: 'Punkt końcowy interfejsu API', - }, - externalAPIPanelDocumentation: 'Dowiedz się, jak utworzyć interfejs API wiedzy zewnętrznej', - noExternalKnowledge: 'Nie ma jeszcze interfejsu API wiedzy zewnętrznej, kliknij tutaj, aby utworzyć', - createExternalAPI: 'Dodawanie interfejsu API wiedzy zewnętrznej', - connectDataset: 'Nawiązywanie połączenia z zewnętrzną bazą wiedzy', - editExternalAPITooltipTitle: 'POWIĄZANA WIEDZA', - externalKnowledgeId: 'Zewnętrzny identyfikator wiedzy', - externalAPIPanelTitle: 'Interfejs API wiedzy zewnętrznej', - externalKnowledgeName: 'Nazwa wiedzy zewnętrznej', - externalKnowledgeIdPlaceholder: 'Podaj identyfikator wiedzy', - createNewExternalAPI: 'Tworzenie nowego interfejsu API wiedzy zewnętrznej', - externalKnowledgeDescription: 'Opis wiedzy', - externalKnowledgeDescriptionPlaceholder: 'Opisz, co znajduje się w tej bazie wiedzy (opcjonalnie)', - allExternalTip: 'W przypadku korzystania tylko z wiedzy zewnętrznej użytkownik może zdecydować, czy chce włączyć model Rerank. Jeśli ta opcja nie jest włączona, pobrane fragmenty będą sortowane na podstawie wyników. Gdy strategie wyszukiwania z różnych baz wiedzy są niespójne, będzie to niedokładne.', - editExternalAPIFormTitle: 'Edytowanie interfejsu API wiedzy zewnętrznej', - mixtureInternalAndExternalTip: 'Model Rerank jest wymagany do połączenia wiedzy wewnętrznej i zewnętrznej.', - externalAPI: 'Zewnętrzny interfejs API', - externalTag: 'Zewnętrzny', - learnHowToWriteGoodKnowledgeDescription: 'Dowiedz się, jak napisać dobry opis wiedzy', - externalKnowledgeNamePlaceholder: 'Podaj nazwę bazy wiedzy', - externalAPIPanelDescription: 'Interfejs API wiedzy zewnętrznej służy do łączenia się z bazą wiedzy poza Dify i pobierania wiedzy z tej bazy wiedzy.', - chunkingMode: { - parentChild: 'Rodzic-dziecko', - general: 'Ogólne', - graph: 'Wykres', - qa: 'Pytania i odpowiedziQ&A', - }, - parentMode: { - fullDoc: 'Pełna wersja dokumentu', - paragraph: 'Akapit', - }, - batchAction: { - selected: 'Wybrany', - archive: 'Archiwum', - enable: 'Umożliwiać', - disable: 'Wyłączać', - delete: 'Usunąć', - cancel: 'Anuluj', - }, - preprocessDocument: '{{liczba}} Przetwarzanie wstępne dokumentów', - localDocs: 'Lokalne dokumenty', - documentsDisabled: '{{num}} dokumenty wyłączone - nieaktywne przez ponad 30 dni', - enable: 'Umożliwiać', - allKnowledge: 'Cała wiedza', - allKnowledgeDescription: 'Wybierz tę opcję, aby wyświetlić całą wiedzę w tym obszarze roboczym. Tylko właściciel obszaru roboczego może zarządzać całą wiedzą.', - metadata: { - createMetadata: { - back: 'Tył', - namePlaceholder: 'Dodaj nazwę metadanych', - name: 'Imię', - title: 'Nowe metadane', - type: 'Typ', - }, - checkName: { - empty: 'Nazwa metadanych nie może być pusta', - invalid: 'Nazwa metadanych może zawierać tylko małe litery, cyfry i podkreślenia oraz musi zaczynać się od małej litery', - tooLong: 'Nazwa metadanych nie może przekraczać {{max}} znaków', - }, - batchEditMetadata: { - multipleValue: 'Wielokrotna wartość', - editMetadata: 'Edytuj metadane', - editDocumentsNum: 'Edycja {{num}} dokumentów', - applyToAllSelectDocument: 'Zastosuj do wszystkich wybranych dokumentów', - applyToAllSelectDocumentTip: 'Automatycznie utwórz wszystkie powyżej wymienione edytowane i nowe metadane dla wszystkich wybranych dokumentów, w przeciwnym razie edytowanie metadanych będzie dotyczyć tylko dokumentów, które je posiadają.', - }, - selectMetadata: { - manageAction: 'Zarządzaj', - newAction: 'Nowe metadane', - search: 'Szukaj metadanych', - }, - datasetMetadata: { - values: '{{num}} Wartości', - rename: 'Zmień nazwę', - namePlaceholder: 'Nazwa metadanych', - addMetaData: 'Dodaj metadane', - deleteContent: 'Czy na pewno chcesz usunąć metadane "{{name}}"?', - builtIn: 'Wbudowany', - deleteTitle: 'Potwierdź usunięcie', - description: 'Możesz zarządzać wszystkimi metadanymi w tej wiedzy tutaj. Modyfikacje będą synchronizowane z każdym dokumentem.', - name: 'Imię', - disabled: 'Wyłączone', - builtInDescription: 'Wbudowane metadane są automatycznie ekstraktowane i generowane. Muszą być włączone przed użyciem i nie można ich edytować.', - }, - documentMetadata: { - technicalParameters: 'Parametry techniczne', - startLabeling: 'Rozpocznij etykietowanie', - documentInformation: 'Informacje o dokumencie', - metadataToolTip: 'Metadane służą jako istotny filtr, który zwiększa dokładność i trafność wyszukiwania informacji. Możesz modyfikować i dodawać metadane do tego dokumentu tutaj.', - }, - metadata: 'Metadane', - addMetadata: 'Dodaj metadane', - chooseTime: 'Wybierz czas...', - }, - embeddingModelNotAvailable: 'Model osadzający jest niedostępny.', - updated: 'Aktualizowano', - createFromPipeline: 'Tworzenie na podstawie potoku wiedzy', - externalKnowledgeBase: 'Zewnętrzna baza wiedzy', - serviceApi: { - card: { - apiKey: 'Klucz API', - title: 'Usługa backendowa API', - apiReference: 'Dokumentacja API', - endpoint: 'Punkt końcowy API usługi', - }, - title: 'Interfejs API usługi', - disabled: 'Niepełnosprawny', - enabled: 'W serwisie', - }, - docAllEnabled_one: 'Dokument {{count}} włączony', - docAllEnabled_other: 'Wszystkie dokumenty {{count}} włączone', - partialEnabled_one: 'Łącznie {{count}} dokumentów, {{num}} dostępnych', - partialEnabled_other: 'Łącznie {{count}} dokumentów, {{num}} dostępnych', - cornerLabel: { - unavailable: 'Niedostępne', - pipeline: 'Rurociąg', - }, - multimodal: 'Multimodalny', - imageUploader: { - button: 'Przeciągnij i upuść plik lub folder, lub', - browse: 'Przeglądaj', - tip: '{{supportTypes}} (maks. {{batchCount}}, {{size}} MB każdy)', - }, -} - -export default translation diff --git a/web/i18n/pl-PL/education.json b/web/i18n/pl-PL/education.json new file mode 100644 index 0000000000..f66d4760a3 --- /dev/null +++ b/web/i18n/pl-PL/education.json @@ -0,0 +1,74 @@ +{ + "toVerifiedTip": { + "coupon": "ekskluzywny kupon 100%", + "front": "Teraz jesteś uprawniony do statusu zweryfikowanej edukacji. Proszę wprowadzić swoje informacje edukacyjne poniżej, aby zakończyć proces i otrzymać", + "end": "dla Profesjonalnego Planu Dify." + }, + "form": { + "schoolName": { + "title": "Nazwa Twojej Szkoły", + "placeholder": "Wpisz oficjalną, pełną nazwę swojej szkoły" + }, + "schoolRole": { + "option": { + "student": "Uczniowie", + "teacher": "Nauczyciel", + "administrator": "Administrator szkoły" + }, + "title": "Twoja rola w szkole" + }, + "terms": { + "desc": { + "termsOfService": "Warunki świadczenia usług", + "privacyPolicy": "Polityka prywatności", + "and": "i", + "front": "Twoje informacje i użycie statusu Weryfikowanej Edukacji podlegają naszym", + "end": "Przez przesłanie:" + }, + "option": { + "age": "Potwierdzam, że mam co najmniej 18 lat", + "inSchool": "Potwierdzam, że jestem zapisany lub zatrudniony w podanej instytucji. Dify może wymagać dowodu zapisania/zatrudnienia. Jeśli wprowadzę w błąd dotyczący mojej zdolności do uczestnictwa, zgadzam się zapłacić wszelkie opłaty, które zostały początkowo zaniechane w oparciu o mój status edukacyjny." + }, + "title": "Warunki i umowy" + } + }, + "toVerified": "Uzyskaj potwierdzenie edukacji", + "submit": "Zatwierdź", + "rejectContent": "Niestety, nie kwalifikujesz się do statusu Zweryfikowanej Edukacji i w związku z tym nie możesz otrzymać ekskluzywnego kuponu 100% na plan Dify Professional, jeśli korzystasz z tego adresu e-mail.", + "successContent": "Wydaliśmy kupon rabatowy na 100% dla planu Dify Professional na Twoje konto. Kupon jest ważny przez jeden rok, prosimy o jego użycie w okresie ważności.", + "currentSigned": "AKTUALNIE ZALOGOWANY JAKO", + "successTitle": "Masz zweryfikowane wykształcenie Dify", + "rejectTitle": "Twoja weryfikacja edukacyjna Dify została odrzucona", + "learn": "Dowiedz się, jak uzyskać potwierdzenie wykształcenia", + "emailLabel": "Twój aktualny email", + "submitError": "Przesłanie formularza nie powiodło się. Proszę spróbować ponownie później.", + "notice": { + "expired": { + "summary": { + "line1": "Możesz nadal uzyskać dostęp i korzystać z Dify.", + "line2": "Jednakże, nie kwalifikujesz się już do nowych kuponów zniżkowych na edukację." + }, + "title": "Twój status edukacji wygasł." + }, + "isAboutToExpire": { + "summary": "Nie martw się — to nie wpłynie na twoją obecną subskrypcję, ale nie otrzymasz zniżki edukacyjnej przy jej odnawianiu, chyba że ponownie zweryfikujesz swój status.", + "title": "Twój status edukacyjny wygaśnie {{date}}" + }, + "stillInEducation": { + "title": "Wciąż w edukacji?", + "isAboutToExpire": "Zweryfikuj ponownie teraz, aby otrzymać nowy kupon na nadchodzący rok akademicki. Zostanie zapisany na Twoim koncie i gotowy do użycia przy następnej odnowie.", + "expired": "Sprawdź ponownie teraz, aby otrzymać nowy kupon na nadchodzący rok akademicki. Dodamy go do twojego konta i będziesz mógł go użyć przy następnej aktualizacji." + }, + "alreadyGraduated": { + "title": "Już ukończone studia?", + "isAboutToExpire": "Twoja obecna subskrypcja pozostanie aktywna. Gdy się zakończy, przejdziesz na plan Sandbox, lub możesz w każdej chwili zaktualizować, aby przywrócić pełny dostęp do płatnych funkcji.", + "expired": "Nie wahaj się zaktualizować w dowolnym momencie, aby uzyskać pełny dostęp do płatnych funkcji." + }, + "action": { + "upgrade": "Ulepsz", + "dismiss": "Odrzuć", + "reVerify": "Ponownie zweryfikuj" + }, + "dateFormat": "DD/MM/RRRR" + } +} diff --git a/web/i18n/pl-PL/education.ts b/web/i18n/pl-PL/education.ts deleted file mode 100644 index d1bad9c41b..0000000000 --- a/web/i18n/pl-PL/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerifiedTip: { - coupon: 'ekskluzywny kupon 100%', - front: 'Teraz jesteś uprawniony do statusu zweryfikowanej edukacji. Proszę wprowadzić swoje informacje edukacyjne poniżej, aby zakończyć proces i otrzymać', - end: 'dla Profesjonalnego Planu Dify.', - }, - form: { - schoolName: { - title: 'Nazwa Twojej Szkoły', - placeholder: 'Wpisz oficjalną, pełną nazwę swojej szkoły', - }, - schoolRole: { - option: { - student: 'Uczniowie', - teacher: 'Nauczyciel', - administrator: 'Administrator szkoły', - }, - title: 'Twoja rola w szkole', - }, - terms: { - desc: { - termsOfService: 'Warunki świadczenia usług', - privacyPolicy: 'Polityka prywatności', - and: 'i', - front: 'Twoje informacje i użycie statusu Weryfikowanej Edukacji podlegają naszym', - end: 'Przez przesłanie:', - }, - option: { - age: 'Potwierdzam, że mam co najmniej 18 lat', - inSchool: 'Potwierdzam, że jestem zapisany lub zatrudniony w podanej instytucji. Dify może wymagać dowodu zapisania/zatrudnienia. Jeśli wprowadzę w błąd dotyczący mojej zdolności do uczestnictwa, zgadzam się zapłacić wszelkie opłaty, które zostały początkowo zaniechane w oparciu o mój status edukacyjny.', - }, - title: 'Warunki i umowy', - }, - }, - toVerified: 'Uzyskaj potwierdzenie edukacji', - submit: 'Zatwierdź', - rejectContent: 'Niestety, nie kwalifikujesz się do statusu Zweryfikowanej Edukacji i w związku z tym nie możesz otrzymać ekskluzywnego kuponu 100% na plan Dify Professional, jeśli korzystasz z tego adresu e-mail.', - successContent: 'Wydaliśmy kupon rabatowy na 100% dla planu Dify Professional na Twoje konto. Kupon jest ważny przez jeden rok, prosimy o jego użycie w okresie ważności.', - currentSigned: 'AKTUALNIE ZALOGOWANY JAKO', - successTitle: 'Masz zweryfikowane wykształcenie Dify', - rejectTitle: 'Twoja weryfikacja edukacyjna Dify została odrzucona', - learn: 'Dowiedz się, jak uzyskać potwierdzenie wykształcenia', - emailLabel: 'Twój aktualny email', - submitError: 'Przesłanie formularza nie powiodło się. Proszę spróbować ponownie później.', - notice: { - expired: { - summary: { - line1: 'Możesz nadal uzyskać dostęp i korzystać z Dify.', - line2: 'Jednakże, nie kwalifikujesz się już do nowych kuponów zniżkowych na edukację.', - }, - title: 'Twój status edukacji wygasł.', - }, - isAboutToExpire: { - summary: 'Nie martw się — to nie wpłynie na twoją obecną subskrypcję, ale nie otrzymasz zniżki edukacyjnej przy jej odnawianiu, chyba że ponownie zweryfikujesz swój status.', - title: 'Twój status edukacyjny wygaśnie {{date}}', - }, - stillInEducation: { - title: 'Wciąż w edukacji?', - isAboutToExpire: 'Zweryfikuj ponownie teraz, aby otrzymać nowy kupon na nadchodzący rok akademicki. Zostanie zapisany na Twoim koncie i gotowy do użycia przy następnej odnowie.', - expired: 'Sprawdź ponownie teraz, aby otrzymać nowy kupon na nadchodzący rok akademicki. Dodamy go do twojego konta i będziesz mógł go użyć przy następnej aktualizacji.', - }, - alreadyGraduated: { - title: 'Już ukończone studia?', - isAboutToExpire: 'Twoja obecna subskrypcja pozostanie aktywna. Gdy się zakończy, przejdziesz na plan Sandbox, lub możesz w każdej chwili zaktualizować, aby przywrócić pełny dostęp do płatnych funkcji.', - expired: 'Nie wahaj się zaktualizować w dowolnym momencie, aby uzyskać pełny dostęp do płatnych funkcji.', - }, - action: { - upgrade: 'Ulepsz', - dismiss: 'Odrzuć', - reVerify: 'Ponownie zweryfikuj', - }, - dateFormat: 'DD/MM/RRRR', - }, -} - -export default translation diff --git a/web/i18n/pl-PL/explore.json b/web/i18n/pl-PL/explore.json new file mode 100644 index 0000000000..5892ca1c62 --- /dev/null +++ b/web/i18n/pl-PL/explore.json @@ -0,0 +1,42 @@ +{ + "title": "Odkryj", + "sidebar": { + "discovery": "Odkrywanie", + "chat": "Czat", + "workspace": "Przestrzeń robocza", + "action": { + "pin": "Przypnij", + "unpin": "Odepnij", + "rename": "Zmień nazwę", + "delete": "Usuń" + }, + "delete": { + "title": "Usuń aplikację", + "content": "Czy na pewno chcesz usunąć tę aplikację?" + } + }, + "apps": { + "title": "Odkrywaj aplikacje stworzone przez Dify", + "description": "Wykorzystaj te aplikacje szablonowe natychmiast lub dostosuj własne aplikacje na podstawie szablonów.", + "allCategories": "Polecane" + }, + "appCard": { + "addToWorkspace": "Dodaj do przestrzeni roboczej", + "customize": "Dostosuj" + }, + "appCustomize": { + "title": "Utwórz aplikację z {{name}}", + "subTitle": "Ikona i nazwa aplikacji", + "nameRequired": "Nazwa aplikacji jest wymagana" + }, + "category": { + "Assistant": "Asystent", + "Writing": "Pisanie", + "Translate": "Tłumaczenie", + "Programming": "Programowanie", + "HR": "HR", + "Agent": "Agent", + "Workflow": "Przepływ pracy", + "Entertainment": "Rozrywka" + } +} diff --git a/web/i18n/pl-PL/explore.ts b/web/i18n/pl-PL/explore.ts deleted file mode 100644 index f9e8b30f8b..0000000000 --- a/web/i18n/pl-PL/explore.ts +++ /dev/null @@ -1,45 +0,0 @@ -const translation = { - title: 'Odkryj', - sidebar: { - discovery: 'Odkrywanie', - chat: 'Czat', - workspace: 'Przestrzeń robocza', - action: { - pin: 'Przypnij', - unpin: 'Odepnij', - rename: 'Zmień nazwę', - delete: 'Usuń', - }, - delete: { - title: 'Usuń aplikację', - content: 'Czy na pewno chcesz usunąć tę aplikację?', - }, - }, - apps: { - title: 'Odkrywaj aplikacje stworzone przez Dify', - description: - 'Wykorzystaj te aplikacje szablonowe natychmiast lub dostosuj własne aplikacje na podstawie szablonów.', - allCategories: 'Polecane', - }, - appCard: { - addToWorkspace: 'Dodaj do przestrzeni roboczej', - customize: 'Dostosuj', - }, - appCustomize: { - title: 'Utwórz aplikację z {{name}}', - subTitle: 'Ikona i nazwa aplikacji', - nameRequired: 'Nazwa aplikacji jest wymagana', - }, - category: { - Assistant: 'Asystent', - Writing: 'Pisanie', - Translate: 'Tłumaczenie', - Programming: 'Programowanie', - HR: 'HR', - Agent: 'Agent', - Workflow: 'Przepływ pracy', - Entertainment: 'Rozrywka', - }, -} - -export default translation diff --git a/web/i18n/pl-PL/layout.json b/web/i18n/pl-PL/layout.json new file mode 100644 index 0000000000..d3c86c79e6 --- /dev/null +++ b/web/i18n/pl-PL/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "expandSidebar": "Rozwiń pasek boczny", + "collapseSidebar": "Zwiń pasek boczny" + } +} diff --git a/web/i18n/pl-PL/layout.ts b/web/i18n/pl-PL/layout.ts deleted file mode 100644 index f4a1c56db3..0000000000 --- a/web/i18n/pl-PL/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - expandSidebar: 'Rozwiń pasek boczny', - collapseSidebar: 'Zwiń pasek boczny', - }, -} - -export default translation diff --git a/web/i18n/pl-PL/login.json b/web/i18n/pl-PL/login.json new file mode 100644 index 0000000000..1579f61578 --- /dev/null +++ b/web/i18n/pl-PL/login.json @@ -0,0 +1,124 @@ +{ + "pageTitle": "Cześć, zaczynajmy!👋", + "welcome": "Witaj w Dify, zaloguj się, aby kontynuować.", + "email": "Adres e-mail", + "emailPlaceholder": "Twój adres e-mail", + "password": "Hasło", + "passwordPlaceholder": "Twoje hasło", + "name": "Nazwa użytkownika", + "namePlaceholder": "Twoja nazwa użytkownika", + "forget": "Zapomniałeś hasła?", + "signBtn": "Zaloguj się", + "installBtn": "Ustaw", + "setAdminAccount": "Ustawianie konta administratora", + "setAdminAccountDesc": "Maksymalne uprawnienia dla konta administratora, które można użyć do tworzenia aplikacji i zarządzania dostawcami LLM, itp.", + "createAndSignIn": "Utwórz i zaloguj się", + "oneMoreStep": "Jeszcze jeden krok", + "createSample": "Na podstawie tych informacji, utworzymy dla Ciebie przykładową aplikację", + "invitationCode": "Kod zaproszenia", + "invitationCodePlaceholder": "Twój kod zaproszenia", + "interfaceLanguage": "Język interfejsu", + "timezone": "Strefa czasowa", + "go": "Przejdź do Dify", + "sendUsMail": "Wyślij nam e-mail z swoim wstępem, a my zajmiemy się prośbą o zaproszenie.", + "acceptPP": "Przeczytałem/am i akceptuję politykę prywatności", + "reset": "Uruchom poniższą komendę, aby zresetować swoje hasło", + "withGitHub": "Kontynuuj za pomocą GitHub", + "withGoogle": "Kontynuuj za pomocą Google", + "rightTitle": "Odblokuj pełny potencjał LLM", + "rightDesc": "Łatwo buduj wizualnie atrakcyjne, działające i udoskonalane aplikacje AI.", + "tos": "Warunki świadczenia usług", + "pp": "Polityka prywatności", + "tosDesc": "Założeniem konta zgadzasz się z naszymi", + "goToInit": "Jeśli nie zainicjowałeś konta, przejdź do strony inicjalizacji", + "dontHave": "Nie masz?", + "invalidInvitationCode": "Niewłaściwy kod zaproszenia", + "accountAlreadyInited": "Konto już zainicjowane", + "forgotPassword": "Zapomniałeś hasła?", + "resetLinkSent": "Link resetujący został wysłany", + "sendResetLink": "Wyślij link resetujący", + "backToSignIn": "Powrót do logowania", + "forgotPasswordDesc": "Proszę podać swój adres e-mail, aby zresetować hasło. Wyślemy Ci e-mail z instrukcjami, jak zresetować hasło.", + "checkEmailForResetLink": "Proszę sprawdzić swój e-mail w poszukiwaniu linku do resetowania hasła. Jeśli nie pojawi się w ciągu kilku minut, sprawdź folder spam.", + "passwordChanged": "Zaloguj się teraz", + "changePassword": "Zmień hasło", + "changePasswordTip": "Wprowadź nowe hasło do swojego konta", + "invalidToken": "Nieprawidłowy lub wygasły token", + "confirmPassword": "Potwierdź hasło", + "confirmPasswordPlaceholder": "Potwierdź nowe hasło", + "passwordChangedTip": "Twoje hasło zostało pomyślnie zmienione", + "error": { + "emailEmpty": "Adres e-mail jest wymagany", + "emailInValid": "Proszę wpisać prawidłowy adres e-mail", + "nameEmpty": "Nazwa jest wymagana", + "passwordEmpty": "Hasło jest wymagane", + "passwordInvalid": "Hasło musi zawierać litery i cyfry, a jego długość musi być większa niż 8", + "passwordLengthInValid": "Hasło musi składać się z co najmniej 8 znaków", + "registrationNotAllowed": "Nie znaleziono konta. Skontaktuj się z administratorem systemu, aby się zarejestrować.", + "invalidEmailOrPassword": "Nieprawidłowy adres e-mail lub hasło." + }, + "license": { + "tip": "Przed rozpoczęciem wersji społecznościowej Dify, przeczytaj GitHub", + "link": "Licencję open-source" + }, + "join": "Dołącz", + "joinTipStart": "Zapraszam Cię do dołączenia do", + "joinTipEnd": "zespołu na Dify", + "invalid": "Link wygasł", + "explore": "Odkryj Dify", + "activatedTipStart": "Dołączyłeś do", + "activatedTipEnd": "zespołu", + "activated": "Zaloguj się teraz", + "adminInitPassword": "Hasło inicjalizacyjne administratora", + "validate": "Sprawdź", + "checkCode": { + "verify": "Zweryfikować", + "resend": "Wysłać", + "invalidCode": "Nieprawidłowy kod", + "verificationCodePlaceholder": "Wprowadź 6-cyfrowy kod", + "validTime": "Pamiętaj, że kod jest ważny przez 5 minut", + "checkYourEmail": "Sprawdź swoją pocztę e-mail", + "useAnotherMethod": "Użyj innej metody", + "didNotReceiveCode": "Nie otrzymałeś kodu?", + "verificationCode": "Kod weryfikacyjny", + "emptyCode": "Kod jest wymagany", + "tipsPrefix": "Wysyłamy kod weryfikacyjny do" + }, + "continueWithCode": "Kontynuuj z kodem", + "setYourAccount": "Ustaw swoje konto", + "usePassword": "Użyj hasła", + "withSSO": "Kontynuuj logowanie jednokrotne", + "sendVerificationCode": "Wyślij kod weryfikacyjny", + "back": "Wstecz", + "resetPassword": "Zresetuj hasło", + "changePasswordBtn": "Ustawianie hasła", + "backToLogin": "Powrót do logowania", + "useVerificationCode": "Użyj kodu weryfikacyjnego", + "enterYourName": "Podaj swoją nazwę użytkownika", + "resetPasswordDesc": "Wpisz adres e-mail, którego użyłeś do rejestracji w Dify, a my wyślemy Ci wiadomość e-mail z prośbą o zresetowanie hasła.", + "or": "LUB", + "noLoginMethodTip": "Skontaktuj się z administratorem systemu, aby dodać metodę uwierzytelniania.", + "noLoginMethod": "Nie skonfigurowano metody uwierzytelniania", + "licenseLost": "Utrata licencji", + "licenseExpired": "Licencja wygasła", + "licenseInactive": "Licencja nieaktywna", + "licenseExpiredTip": "Licencja Dify Enterprise dla Twojego obszaru roboczego wygasła. Skontaktuj się z administratorem, aby kontynuować korzystanie z Dify.", + "licenseLostTip": "Nie udało się nawiązać połączenia z serwerem licencji Dify. Skontaktuj się z administratorem, aby kontynuować korzystanie z Dify.", + "licenseInactiveTip": "Licencja Dify Enterprise dla Twojego obszaru roboczego jest nieaktywna. Skontaktuj się z administratorem, aby kontynuować korzystanie z Dify.", + "webapp": { + "noLoginMethod": "Metoda uwierzytelniania nie jest skonfigurowana dla aplikacji internetowej", + "noLoginMethodTip": "Proszę skontaktować się z administratorem systemu, aby dodać metodę uwierzytelniania.", + "disabled": "Uwierzytelnianie aplikacji internetowej jest wyłączone. Proszę skontaktować się z administratorem systemu, aby je włączyć. Możesz spróbować użyć aplikacji bezpośrednio.", + "login": "Zaloguj się" + }, + "signup": { + "createAccount": "Utwórz swoje konto", + "signUp": "Zarejestruj się", + "noAccount": "Nie masz konta?", + "verifyMail": "Kontynuuj z kodem weryfikacyjnym", + "signIn": "Zaloguj się", + "haveAccount": "Masz już konto?", + "welcome": "👋 Witaj! Proszę wypełnić szczegóły, aby rozpocząć." + }, + "pageTitleForE": "Hej, zaczynajmy!" +} diff --git a/web/i18n/pl-PL/login.ts b/web/i18n/pl-PL/login.ts deleted file mode 100644 index 34519cd2b3..0000000000 --- a/web/i18n/pl-PL/login.ts +++ /dev/null @@ -1,131 +0,0 @@ -const translation = { - pageTitle: 'Cześć, zaczynajmy!👋', - welcome: 'Witaj w Dify, zaloguj się, aby kontynuować.', - email: 'Adres e-mail', - emailPlaceholder: 'Twój adres e-mail', - password: 'Hasło', - passwordPlaceholder: 'Twoje hasło', - name: 'Nazwa użytkownika', - namePlaceholder: 'Twoja nazwa użytkownika', - forget: 'Zapomniałeś hasła?', - signBtn: 'Zaloguj się', - installBtn: 'Ustaw', - setAdminAccount: 'Ustawianie konta administratora', - setAdminAccountDesc: - 'Maksymalne uprawnienia dla konta administratora, które można użyć do tworzenia aplikacji i zarządzania dostawcami LLM, itp.', - createAndSignIn: 'Utwórz i zaloguj się', - oneMoreStep: 'Jeszcze jeden krok', - createSample: - 'Na podstawie tych informacji, utworzymy dla Ciebie przykładową aplikację', - invitationCode: 'Kod zaproszenia', - invitationCodePlaceholder: 'Twój kod zaproszenia', - interfaceLanguage: 'Język interfejsu', - timezone: 'Strefa czasowa', - go: 'Przejdź do Dify', - sendUsMail: - 'Wyślij nam e-mail z swoim wstępem, a my zajmiemy się prośbą o zaproszenie.', - acceptPP: 'Przeczytałem/am i akceptuję politykę prywatności', - reset: 'Uruchom poniższą komendę, aby zresetować swoje hasło', - withGitHub: 'Kontynuuj za pomocą GitHub', - withGoogle: 'Kontynuuj za pomocą Google', - rightTitle: 'Odblokuj pełny potencjał LLM', - rightDesc: - 'Łatwo buduj wizualnie atrakcyjne, działające i udoskonalane aplikacje AI.', - tos: 'Warunki świadczenia usług', - pp: 'Polityka prywatności', - tosDesc: 'Założeniem konta zgadzasz się z naszymi', - goToInit: 'Jeśli nie zainicjowałeś konta, przejdź do strony inicjalizacji', - dontHave: 'Nie masz?', - invalidInvitationCode: 'Niewłaściwy kod zaproszenia', - accountAlreadyInited: 'Konto już zainicjowane', - forgotPassword: 'Zapomniałeś hasła?', - resetLinkSent: 'Link resetujący został wysłany', - sendResetLink: 'Wyślij link resetujący', - backToSignIn: 'Powrót do logowania', - forgotPasswordDesc: 'Proszę podać swój adres e-mail, aby zresetować hasło. Wyślemy Ci e-mail z instrukcjami, jak zresetować hasło.', - checkEmailForResetLink: 'Proszę sprawdzić swój e-mail w poszukiwaniu linku do resetowania hasła. Jeśli nie pojawi się w ciągu kilku minut, sprawdź folder spam.', - passwordChanged: 'Zaloguj się teraz', - changePassword: 'Zmień hasło', - changePasswordTip: 'Wprowadź nowe hasło do swojego konta', - invalidToken: 'Nieprawidłowy lub wygasły token', - confirmPassword: 'Potwierdź hasło', - confirmPasswordPlaceholder: 'Potwierdź nowe hasło', - passwordChangedTip: 'Twoje hasło zostało pomyślnie zmienione', - error: { - emailEmpty: 'Adres e-mail jest wymagany', - emailInValid: 'Proszę wpisać prawidłowy adres e-mail', - nameEmpty: 'Nazwa jest wymagana', - passwordEmpty: 'Hasło jest wymagane', - passwordInvalid: - 'Hasło musi zawierać litery i cyfry, a jego długość musi być większa niż 8', - passwordLengthInValid: 'Hasło musi składać się z co najmniej 8 znaków', - registrationNotAllowed: 'Nie znaleziono konta. Skontaktuj się z administratorem systemu, aby się zarejestrować.', - invalidEmailOrPassword: 'Nieprawidłowy adres e-mail lub hasło.', - }, - license: { - tip: 'Przed rozpoczęciem wersji społecznościowej Dify, przeczytaj GitHub', - link: 'Licencję open-source', - }, - join: 'Dołącz', - joinTipStart: 'Zapraszam Cię do dołączenia do', - joinTipEnd: 'zespołu na Dify', - invalid: 'Link wygasł', - explore: 'Odkryj Dify', - activatedTipStart: 'Dołączyłeś do', - activatedTipEnd: 'zespołu', - activated: 'Zaloguj się teraz', - adminInitPassword: 'Hasło inicjalizacyjne administratora', - validate: 'Sprawdź', - checkCode: { - verify: 'Zweryfikować', - resend: 'Wysłać', - invalidCode: 'Nieprawidłowy kod', - verificationCodePlaceholder: 'Wprowadź 6-cyfrowy kod', - validTime: 'Pamiętaj, że kod jest ważny przez 5 minut', - checkYourEmail: 'Sprawdź swoją pocztę e-mail', - useAnotherMethod: 'Użyj innej metody', - didNotReceiveCode: 'Nie otrzymałeś kodu?', - verificationCode: 'Kod weryfikacyjny', - emptyCode: 'Kod jest wymagany', - tipsPrefix: 'Wysyłamy kod weryfikacyjny do', - }, - continueWithCode: 'Kontynuuj z kodem', - setYourAccount: 'Ustaw swoje konto', - usePassword: 'Użyj hasła', - withSSO: 'Kontynuuj logowanie jednokrotne', - sendVerificationCode: 'Wyślij kod weryfikacyjny', - back: 'Wstecz', - resetPassword: 'Zresetuj hasło', - changePasswordBtn: 'Ustawianie hasła', - backToLogin: 'Powrót do logowania', - useVerificationCode: 'Użyj kodu weryfikacyjnego', - enterYourName: 'Podaj swoją nazwę użytkownika', - resetPasswordDesc: 'Wpisz adres e-mail, którego użyłeś do rejestracji w Dify, a my wyślemy Ci wiadomość e-mail z prośbą o zresetowanie hasła.', - or: 'LUB', - noLoginMethodTip: 'Skontaktuj się z administratorem systemu, aby dodać metodę uwierzytelniania.', - noLoginMethod: 'Nie skonfigurowano metody uwierzytelniania', - licenseLost: 'Utrata licencji', - licenseExpired: 'Licencja wygasła', - licenseInactive: 'Licencja nieaktywna', - licenseExpiredTip: 'Licencja Dify Enterprise dla Twojego obszaru roboczego wygasła. Skontaktuj się z administratorem, aby kontynuować korzystanie z Dify.', - licenseLostTip: 'Nie udało się nawiązać połączenia z serwerem licencji Dify. Skontaktuj się z administratorem, aby kontynuować korzystanie z Dify.', - licenseInactiveTip: 'Licencja Dify Enterprise dla Twojego obszaru roboczego jest nieaktywna. Skontaktuj się z administratorem, aby kontynuować korzystanie z Dify.', - webapp: { - noLoginMethod: 'Metoda uwierzytelniania nie jest skonfigurowana dla aplikacji internetowej', - noLoginMethodTip: 'Proszę skontaktować się z administratorem systemu, aby dodać metodę uwierzytelniania.', - disabled: 'Uwierzytelnianie aplikacji internetowej jest wyłączone. Proszę skontaktować się z administratorem systemu, aby je włączyć. Możesz spróbować użyć aplikacji bezpośrednio.', - login: 'Zaloguj się', - }, - signup: { - createAccount: 'Utwórz swoje konto', - signUp: 'Zarejestruj się', - noAccount: 'Nie masz konta?', - verifyMail: 'Kontynuuj z kodem weryfikacyjnym', - signIn: 'Zaloguj się', - haveAccount: 'Masz już konto?', - welcome: '👋 Witaj! Proszę wypełnić szczegóły, aby rozpocząć.', - }, - pageTitleForE: 'Hej, zaczynajmy!', -} - -export default translation diff --git a/web/i18n/pl-PL/oauth.json b/web/i18n/pl-PL/oauth.json new file mode 100644 index 0000000000..db6c2516f5 --- /dev/null +++ b/web/i18n/pl-PL/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "needLogin": "Proszę się zalogować, aby autoryzować", + "notLoggedIn": "Ta aplikacja chce uzyskać dostęp do twojego konta Dify Cloud", + "common": "Szanujemy Twoją prywatność i będziemy wykorzystywać te informacje tylko w celu ulepszenia Twojego doświadczenia z naszymi narzędziami deweloperskimi.", + "loggedIn": "Ta aplikacja chce uzyskać dostęp do następujących informacji z twojego konta Dify Cloud." + }, + "scopes": { + "timezone": "Strefa czasowa", + "name": "Imię", + "avatar": "Avatar", + "languagePreference": "Preferencje językowe", + "email": "Email" + }, + "error": { + "invalidParams": "Nieprawidłowe parametry", + "authorizeFailed": "Autoryzacja nie powiodła się", + "authAppInfoFetchFailed": "Nie udało się pobrać informacji o aplikacji w celu autoryzacji" + }, + "unknownApp": "Nieznana aplikacja", + "continue": "Kontynuuj", + "login": "Zaloguj się", + "connect": "Połącz z", + "switchAccount": "Zmień konto" +} diff --git a/web/i18n/pl-PL/oauth.ts b/web/i18n/pl-PL/oauth.ts deleted file mode 100644 index 2136b29c90..0000000000 --- a/web/i18n/pl-PL/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - needLogin: 'Proszę się zalogować, aby autoryzować', - notLoggedIn: 'Ta aplikacja chce uzyskać dostęp do twojego konta Dify Cloud', - common: 'Szanujemy Twoją prywatność i będziemy wykorzystywać te informacje tylko w celu ulepszenia Twojego doświadczenia z naszymi narzędziami deweloperskimi.', - loggedIn: 'Ta aplikacja chce uzyskać dostęp do następujących informacji z twojego konta Dify Cloud.', - }, - scopes: { - timezone: 'Strefa czasowa', - name: 'Imię', - avatar: 'Avatar', - languagePreference: 'Preferencje językowe', - email: 'Email', - }, - error: { - invalidParams: 'Nieprawidłowe parametry', - authorizeFailed: 'Autoryzacja nie powiodła się', - authAppInfoFetchFailed: 'Nie udało się pobrać informacji o aplikacji w celu autoryzacji', - }, - unknownApp: 'Nieznana aplikacja', - continue: 'Kontynuuj', - login: 'Zaloguj się', - connect: 'Połącz z', - switchAccount: 'Zmień konto', -} - -export default translation diff --git a/web/i18n/pl-PL/pipeline.json b/web/i18n/pl-PL/pipeline.json new file mode 100644 index 0000000000..1dae29a4ac --- /dev/null +++ b/web/i18n/pl-PL/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "publishAsPipeline": { + "name": "Nazwa i ikona potoku", + "descriptionPlaceholder": "Wprowadź opis tego potoku wiedzy. (Opcjonalnie)", + "namePlaceholder": "Wprowadź nazwę tego potoku wiedzy. (Wymagane)", + "description": "Opis wiedzy" + }, + "processing": "Przetwarzanie", + "publishAs": "Publikowanie jako potoku wiedzy", + "goToAddDocuments": "Przejdź do dodawania dokumentów", + "confirmPublish": "Potwierdź publikowanie", + "reRun": "Ponowne uruchomienie", + "testRun": "Uruchomienie testowe", + "confirmPublishContent": "Po pomyślnym opublikowaniu potoku wiedzy nie można zmodyfikować struktury fragmentów tej bazy wiedzy. Czy na pewno chcesz go opublikować?", + "preparingDataSource": "Przygotowywanie źródła danych" + }, + "inputField": { + "manage": "Zarządzać", + "create": "Utwórz pole wprowadzania danych przez użytkownika" + }, + "publishToast": { + "title": "Ten rurociąg nie został jeszcze opublikowany", + "desc": "Gdy potok nie zostanie opublikowany, można zmodyfikować strukturę fragmentów w węźle bazy wiedzy, a aranżacja potoku i zmiany zostaną automatycznie zapisane jako wersja robocza." + }, + "result": { + "resultPreview": { + "loading": "Przetwarzanie... Czekaj", + "error": "Wystąpił błąd podczas wykonywania", + "viewDetails": "Zobacz szczegóły", + "footerTip": "W trybie testowym, podgląd do {{count}} fragmentów" + } + }, + "ragToolSuggestions": { + "title": "Propozycje dotyczące RAG", + "noRecommendationPlugins": "Brak polecanych wtyczek, znajdź więcej w Marketplacu" + } +} diff --git a/web/i18n/pl-PL/pipeline.ts b/web/i18n/pl-PL/pipeline.ts deleted file mode 100644 index 0515354402..0000000000 --- a/web/i18n/pl-PL/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - publishAsPipeline: { - name: 'Nazwa i ikona potoku', - descriptionPlaceholder: 'Wprowadź opis tego potoku wiedzy. (Opcjonalnie)', - namePlaceholder: 'Wprowadź nazwę tego potoku wiedzy. (Wymagane)', - description: 'Opis wiedzy', - }, - processing: 'Przetwarzanie', - publishAs: 'Publikowanie jako potoku wiedzy', - goToAddDocuments: 'Przejdź do dodawania dokumentów', - confirmPublish: 'Potwierdź publikowanie', - reRun: 'Ponowne uruchomienie', - testRun: 'Uruchomienie testowe', - confirmPublishContent: 'Po pomyślnym opublikowaniu potoku wiedzy nie można zmodyfikować struktury fragmentów tej bazy wiedzy. Czy na pewno chcesz go opublikować?', - preparingDataSource: 'Przygotowywanie źródła danych', - }, - inputField: { - manage: 'Zarządzać', - create: 'Utwórz pole wprowadzania danych przez użytkownika', - }, - publishToast: { - title: 'Ten rurociąg nie został jeszcze opublikowany', - desc: 'Gdy potok nie zostanie opublikowany, można zmodyfikować strukturę fragmentów w węźle bazy wiedzy, a aranżacja potoku i zmiany zostaną automatycznie zapisane jako wersja robocza.', - }, - result: { - resultPreview: { - loading: 'Przetwarzanie... Czekaj', - error: 'Wystąpił błąd podczas wykonywania', - viewDetails: 'Zobacz szczegóły', - footerTip: 'W trybie testowym, podgląd do {{count}} fragmentów', - }, - }, - ragToolSuggestions: { - title: 'Propozycje dotyczące RAG', - noRecommendationPlugins: 'Brak polecanych wtyczek, znajdź więcej w Marketplacu', - }, -} - -export default translation diff --git a/web/i18n/pl-PL/plugin-tags.json b/web/i18n/pl-PL/plugin-tags.json new file mode 100644 index 0000000000..78703ca9d6 --- /dev/null +++ b/web/i18n/pl-PL/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "tags": { + "business": "Biznes", + "weather": "Pogoda", + "entertainment": "Rozrywka", + "education": "Edukacja", + "agent": "Agent", + "videos": "Filmy", + "utilities": "Narzędzia", + "image": "Obraz", + "other": "Inny", + "news": "Wiadomości", + "social": "Społeczny", + "medical": "Medyczny", + "search": "Szukać", + "productivity": "Produktywność", + "travel": "Podróż", + "design": "Projekt", + "finance": "Finanse", + "rag": "" + }, + "searchTags": "Szukaj tagów", + "allTags": "Wszystkie tagi" +} diff --git a/web/i18n/pl-PL/plugin-tags.ts b/web/i18n/pl-PL/plugin-tags.ts deleted file mode 100644 index 982bcd3d97..0000000000 --- a/web/i18n/pl-PL/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - tags: { - business: 'Biznes', - weather: 'Pogoda', - entertainment: 'Rozrywka', - education: 'Edukacja', - agent: 'Agent', - videos: 'Filmy', - utilities: 'Narzędzia', - image: 'Obraz', - other: 'Inny', - news: 'Wiadomości', - social: 'Społeczny', - medical: 'Medyczny', - search: 'Szukać', - productivity: 'Produktywność', - travel: 'Podróż', - design: 'Projekt', - finance: 'Finanse', - rag: '', - }, - searchTags: 'Szukaj tagów', - allTags: 'Wszystkie tagi', -} - -export default translation diff --git a/web/i18n/pl-PL/plugin-trigger.json b/web/i18n/pl-PL/plugin-trigger.json new file mode 100644 index 0000000000..fe98eaba19 --- /dev/null +++ b/web/i18n/pl-PL/plugin-trigger.json @@ -0,0 +1,184 @@ +{ + "subscription": { + "title": "Subskrypcje", + "listNum": "subskrypcje {{num}}", + "empty": { + "title": "Brak subskrypcji", + "button": "Nowa subskrypcja" + }, + "createButton": { + "oauth": "Nowa subskrypcja z OAuth", + "apiKey": "Nowa subskrypcja z kluczem API", + "manual": "Wklej adres URL, aby utworzyć nową subskrypcję" + }, + "createSuccess": "Subskrypcja została pomyślnie utworzona", + "createFailed": "Nie udało się utworzyć subskrypcji", + "maxCount": "Maksymalnie {{num}} subskrypcji", + "selectPlaceholder": "Wybierz subskrypcję", + "noSubscriptionSelected": "Nie wybrano subskrypcji", + "subscriptionRemoved": "Subskrypcja usunięta", + "list": { + "title": "Subskrypcje", + "addButton": "Dodaj", + "tip": "Odbieraj zdarzenia poprzez subskrypcję", + "item": { + "enabled": "Włączone", + "disabled": "Niepełnosprawny", + "credentialType": { + "api_key": "Klucz API", + "oauth2": "OAuth", + "unauthorized": "Instrukcja" + }, + "actions": { + "delete": "Usuń", + "deleteConfirm": { + "title": "Usunąć {{name}}?", + "success": "Subskrypcja {{name}} została pomyślnie usunięta", + "error": "Nie udało się usunąć subskrypcji {{name}}", + "content": "Po usunięciu, tej subskrypcji nie da się odzyskać. Proszę potwierdzić.", + "contentWithApps": "Aktualna subskrypcja jest wykorzystywana przez {{count}} aplikacji. Usunięcie jej spowoduje, że skonfigurowane aplikacje przestaną otrzymywać zdarzenia subskrypcji.", + "confirm": "Potwierdź usunięcie", + "cancel": "Anuluj", + "confirmInputWarning": "Proszę wpisać poprawną nazwę, aby potwierdzić.", + "confirmInputPlaceholder": "Wprowadź \"{{name}}\", aby potwierdzić.", + "confirmInputTip": "Proszę wpisać „{{name}}”, aby potwierdzić." + } + }, + "status": { + "active": "Aktywny", + "inactive": "Nieaktywny" + }, + "usedByNum": "Używane przez {{num}} przepływy pracy", + "noUsed": "Nie użyto przepływu pracy" + } + }, + "addType": { + "title": "Dodaj subskrypcję", + "description": "Wybierz, jak chcesz utworzyć swoją subskrypcję wyzwalacza", + "options": { + "apikey": { + "title": "Twórz z kluczem API", + "description": "Automatyczne tworzenie subskrypcji przy użyciu danych uwierzytelniających API" + }, + "oauth": { + "title": "Utwórz za pomocą OAuth", + "description": "Autoryzuj za pomocą platformy zewnętrznej, aby utworzyć subskrypcję", + "clientSettings": "Ustawienia klienta OAuth", + "clientTitle": "Klient OAuth", + "default": "Domyślny", + "custom": "Niestandardowy" + }, + "manual": { + "title": "Ręczna konfiguracja", + "description": "Wklej adres URL, aby utworzyć nową subskrypcję", + "tip": "Skonfiguruj adres URL na platformie zewnętrznej ręcznie" + } + } + } + }, + "modal": { + "steps": { + "verify": "Zweryfikuj", + "configuration": "Konfiguracja" + }, + "common": { + "cancel": "Anuluj", + "back": "Wstecz", + "next": "Dalej", + "create": "Utwórz", + "verify": "Zweryfikuj", + "authorize": "Autoryzuj", + "creating": "Tworzenie...", + "verifying": "Weryfikacja...", + "authorizing": "Autoryzacja..." + }, + "oauthRedirectInfo": "Ponieważ nie znaleziono żadnych poufnych danych klienta systemu dla tego dostawcy narzędzi, konieczne jest ręczne skonfigurowanie. Dla redirect_uri proszę użyć", + "apiKey": { + "title": "Twórz z kluczem API", + "verify": { + "title": "Zweryfikuj poświadczenia", + "description": "Proszę podać swoje dane uwierzytelniające API, aby zweryfikować dostęp", + "error": "Weryfikacja poświadczeń nie powiodła się. Proszę sprawdzić swój klucz API.", + "success": "Dane uwierzytelniające zostały pomyślnie zweryfikowane" + }, + "configuration": { + "title": "Skonfiguruj subskrypcję", + "description": "Skonfiguruj parametry subskrypcji" + } + }, + "oauth": { + "title": "Utwórz za pomocą OAuth", + "authorization": { + "title": "Autoryzacja OAuth", + "description": "Autoryzuj Dify, aby uzyskać dostęp do Twojego konta", + "redirectUrl": "Przekieruj URL", + "redirectUrlHelp": "Użyj tego adresu URL w konfiguracji swojej aplikacji OAuth", + "authorizeButton": "Autoryzuj za pomocą {{provider}}", + "waitingAuth": "Oczekiwanie na autoryzację...", + "authSuccess": "Autoryzacja powiodła się", + "authFailed": "Nie udało się pobrać informacji autoryzacyjnych OAuth", + "waitingJump": "Autoryzowany, oczekujący na start" + }, + "configuration": { + "title": "Skonfiguruj subskrypcję", + "description": "Skonfiguruj parametry subskrypcji po autoryzacji", + "success": "Konfiguracja OAuth zakończona powodzeniem", + "failed": "Konfiguracja OAuth nie powiodła się" + }, + "remove": { + "success": "Usunięcie OAuth powiodło się", + "failed": "Usunięcie OAuth nie powiodło się" + }, + "save": { + "success": "Konfiguracja OAuth została zapisana pomyślnie" + } + }, + "manual": { + "title": "Ręczna konfiguracja", + "description": "Skonfiguruj subskrypcję webhooka ręcznie", + "logs": { + "title": "Dzienniki żądań", + "request": "Żądanie", + "loading": "Oczekiwanie na żądanie od {{pluginName}}..." + } + }, + "form": { + "subscriptionName": { + "label": "Nazwa subskrypcji", + "placeholder": "Wprowadź nazwę subskrypcji", + "required": "Nazwa subskrypcji jest wymagana" + }, + "callbackUrl": { + "label": "Adres URL zwrotny", + "description": "Ten adres URL będzie odbierać zdarzenia webhook", + "tooltip": "Udostępnij publicznie dostępny punkt końcowy, który może odbierać żądania wywołań zwrotnych od dostawcy wyzwalacza.", + "placeholder": "Generowanie...", + "privateAddressWarning": "Ten adres URL wydaje się być adresem wewnętrznym, co może spowodować niepowodzenie żądań webhook. Możesz zmienić TRIGGER_URL na adres publiczny." + } + }, + "errors": { + "createFailed": "Nie udało się utworzyć subskrypcji", + "verifyFailed": "Nie udało się zweryfikować danych uwierzytelniających", + "authFailed": "Autoryzacja nie powiodła się", + "networkError": "Błąd sieci, spróbuj ponownie" + } + }, + "events": { + "title": "Dostępne wydarzenia", + "description": "Zdarzenia, na które ten wtyczka wyzwalacza może się subskrybować", + "empty": "Brak dostępnych wydarzeń", + "event": "Wydarzenie", + "events": "Wydarzenia", + "actionNum": "{{num}} {{event}} WŁĄCZONE", + "item": { + "parameters": "parametry {{count}}", + "noParameters": "Brak parametrów" + }, + "output": "Wynik" + }, + "node": { + "status": { + "warning": "Rozłącz" + } + } +} diff --git a/web/i18n/pl-PL/plugin-trigger.ts b/web/i18n/pl-PL/plugin-trigger.ts deleted file mode 100644 index 68a79e6477..0000000000 --- a/web/i18n/pl-PL/plugin-trigger.ts +++ /dev/null @@ -1,186 +0,0 @@ -const translation = { - subscription: { - title: 'Subskrypcje', - listNum: 'subskrypcje {{num}}', - empty: { - title: 'Brak subskrypcji', - button: 'Nowa subskrypcja', - }, - createButton: { - oauth: 'Nowa subskrypcja z OAuth', - apiKey: 'Nowa subskrypcja z kluczem API', - manual: 'Wklej adres URL, aby utworzyć nową subskrypcję', - }, - createSuccess: 'Subskrypcja została pomyślnie utworzona', - createFailed: 'Nie udało się utworzyć subskrypcji', - maxCount: 'Maksymalnie {{num}} subskrypcji', - selectPlaceholder: 'Wybierz subskrypcję', - noSubscriptionSelected: 'Nie wybrano subskrypcji', - subscriptionRemoved: 'Subskrypcja usunięta', - list: { - title: 'Subskrypcje', - addButton: 'Dodaj', - tip: 'Odbieraj zdarzenia poprzez subskrypcję', - item: { - enabled: 'Włączone', - disabled: 'Niepełnosprawny', - credentialType: { - api_key: 'Klucz API', - oauth2: 'OAuth', - unauthorized: 'Instrukcja', - }, - actions: { - delete: 'Usuń', - deleteConfirm: { - title: 'Usunąć {{name}}?', - success: 'Subskrypcja {{name}} została pomyślnie usunięta', - error: 'Nie udało się usunąć subskrypcji {{name}}', - content: 'Po usunięciu, tej subskrypcji nie da się odzyskać. Proszę potwierdzić.', - contentWithApps: 'Aktualna subskrypcja jest wykorzystywana przez {{count}} aplikacji. Usunięcie jej spowoduje, że skonfigurowane aplikacje przestaną otrzymywać zdarzenia subskrypcji.', - confirm: 'Potwierdź usunięcie', - cancel: 'Anuluj', - confirmInputWarning: 'Proszę wpisać poprawną nazwę, aby potwierdzić.', - confirmInputPlaceholder: 'Wprowadź "{{name}}", aby potwierdzić.', - confirmInputTip: 'Proszę wpisać „{{name}}”, aby potwierdzić.', - }, - }, - status: { - active: 'Aktywny', - inactive: 'Nieaktywny', - }, - usedByNum: 'Używane przez {{num}} przepływy pracy', - noUsed: 'Nie użyto przepływu pracy', - }, - }, - addType: { - title: 'Dodaj subskrypcję', - description: 'Wybierz, jak chcesz utworzyć swoją subskrypcję wyzwalacza', - options: { - apikey: { - title: 'Twórz z kluczem API', - description: 'Automatyczne tworzenie subskrypcji przy użyciu danych uwierzytelniających API', - }, - oauth: { - title: 'Utwórz za pomocą OAuth', - description: 'Autoryzuj za pomocą platformy zewnętrznej, aby utworzyć subskrypcję', - clientSettings: 'Ustawienia klienta OAuth', - clientTitle: 'Klient OAuth', - default: 'Domyślny', - custom: 'Niestandardowy', - }, - manual: { - title: 'Ręczna konfiguracja', - description: 'Wklej adres URL, aby utworzyć nową subskrypcję', - tip: 'Skonfiguruj adres URL na platformie zewnętrznej ręcznie', - }, - }, - }, - }, - modal: { - steps: { - verify: 'Zweryfikuj', - configuration: 'Konfiguracja', - }, - common: { - cancel: 'Anuluj', - back: 'Wstecz', - next: 'Dalej', - create: 'Utwórz', - verify: 'Zweryfikuj', - authorize: 'Autoryzuj', - creating: 'Tworzenie...', - verifying: 'Weryfikacja...', - authorizing: 'Autoryzacja...', - }, - oauthRedirectInfo: 'Ponieważ nie znaleziono żadnych poufnych danych klienta systemu dla tego dostawcy narzędzi, konieczne jest ręczne skonfigurowanie. Dla redirect_uri proszę użyć', - apiKey: { - title: 'Twórz z kluczem API', - verify: { - title: 'Zweryfikuj poświadczenia', - description: 'Proszę podać swoje dane uwierzytelniające API, aby zweryfikować dostęp', - error: 'Weryfikacja poświadczeń nie powiodła się. Proszę sprawdzić swój klucz API.', - success: 'Dane uwierzytelniające zostały pomyślnie zweryfikowane', - }, - configuration: { - title: 'Skonfiguruj subskrypcję', - description: 'Skonfiguruj parametry subskrypcji', - }, - }, - oauth: { - title: 'Utwórz za pomocą OAuth', - authorization: { - title: 'Autoryzacja OAuth', - description: 'Autoryzuj Dify, aby uzyskać dostęp do Twojego konta', - redirectUrl: 'Przekieruj URL', - redirectUrlHelp: 'Użyj tego adresu URL w konfiguracji swojej aplikacji OAuth', - authorizeButton: 'Autoryzuj za pomocą {{provider}}', - waitingAuth: 'Oczekiwanie na autoryzację...', - authSuccess: 'Autoryzacja powiodła się', - authFailed: 'Nie udało się pobrać informacji autoryzacyjnych OAuth', - waitingJump: 'Autoryzowany, oczekujący na start', - }, - configuration: { - title: 'Skonfiguruj subskrypcję', - description: 'Skonfiguruj parametry subskrypcji po autoryzacji', - success: 'Konfiguracja OAuth zakończona powodzeniem', - failed: 'Konfiguracja OAuth nie powiodła się', - }, - remove: { - success: 'Usunięcie OAuth powiodło się', - failed: 'Usunięcie OAuth nie powiodło się', - }, - save: { - success: 'Konfiguracja OAuth została zapisana pomyślnie', - }, - }, - manual: { - title: 'Ręczna konfiguracja', - description: 'Skonfiguruj subskrypcję webhooka ręcznie', - logs: { - title: 'Dzienniki żądań', - request: 'Żądanie', - loading: 'Oczekiwanie na żądanie od {{pluginName}}...', - }, - }, - form: { - subscriptionName: { - label: 'Nazwa subskrypcji', - placeholder: 'Wprowadź nazwę subskrypcji', - required: 'Nazwa subskrypcji jest wymagana', - }, - callbackUrl: { - label: 'Adres URL zwrotny', - description: 'Ten adres URL będzie odbierać zdarzenia webhook', - tooltip: 'Udostępnij publicznie dostępny punkt końcowy, który może odbierać żądania wywołań zwrotnych od dostawcy wyzwalacza.', - placeholder: 'Generowanie...', - privateAddressWarning: 'Ten adres URL wydaje się być adresem wewnętrznym, co może spowodować niepowodzenie żądań webhook. Możesz zmienić TRIGGER_URL na adres publiczny.', - }, - }, - errors: { - createFailed: 'Nie udało się utworzyć subskrypcji', - verifyFailed: 'Nie udało się zweryfikować danych uwierzytelniających', - authFailed: 'Autoryzacja nie powiodła się', - networkError: 'Błąd sieci, spróbuj ponownie', - }, - }, - events: { - title: 'Dostępne wydarzenia', - description: 'Zdarzenia, na które ten wtyczka wyzwalacza może się subskrybować', - empty: 'Brak dostępnych wydarzeń', - event: 'Wydarzenie', - events: 'Wydarzenia', - actionNum: '{{num}} {{event}} WŁĄCZONE', - item: { - parameters: 'parametry {{count}}', - noParameters: 'Brak parametrów', - }, - output: 'Wynik', - }, - node: { - status: { - warning: 'Rozłącz', - }, - }, -} - -export default translation diff --git a/web/i18n/pl-PL/plugin.json b/web/i18n/pl-PL/plugin.json new file mode 100644 index 0000000000..8e2170decd --- /dev/null +++ b/web/i18n/pl-PL/plugin.json @@ -0,0 +1,323 @@ +{ + "category": { + "extensions": "Rozszerzenia", + "agents": "Strategie agentów", + "bundles": "Wiązki", + "all": "Cały", + "tools": "Narzędzia", + "models": "Modele", + "datasources": "Źródła danych", + "triggers": "Czynniki wywołujące" + }, + "categorySingle": { + "model": "Model", + "extension": "Rozszerzenie", + "bundle": "Pakiet", + "agent": "Strategia agenta", + "tool": "Narzędzie", + "datasource": "Źródło danych", + "trigger": "Spust" + }, + "list": { + "source": { + "marketplace": "Instalowanie z Marketplace", + "github": "Instalowanie z usługi GitHub", + "local": "Zainstaluj z lokalnego pliku pakietu" + }, + "notFound": "Nie znaleziono wtyczek", + "noInstalled": "Brak zainstalowanych wtyczek" + }, + "source": { + "github": "Usługa GitHub", + "local": "Lokalny plik pakietu", + "marketplace": "Rynek" + }, + "detailPanel": { + "categoryTip": { + "local": "Wtyczka lokalna", + "github": "Zainstalowany z Github", + "marketplace": "Zainstalowano z witryny Marketplace", + "debugging": "Wtyczka do debugowania" + }, + "operation": { + "remove": "Usunąć", + "checkUpdate": "Sprawdź aktualizację", + "detail": "Szczegóły", + "update": "Aktualizacja", + "install": "Instalować", + "viewDetail": "Pokaż szczegóły", + "info": "Informacje o wtyczce", + "back": "Wstecz" + }, + "toolSelector": { + "unsupportedContent2": "Kliknij, aby zmienić wersję.", + "uninstalledLink": "Zarządzanie we wtyczkach", + "placeholder": "Wybierz narzędzie...", + "paramsTip1": "Steruje parametrami wnioskowania LLM.", + "unsupportedContent": "Zainstalowana wersja wtyczki nie zapewnia tej akcji.", + "params": "KONFIGURACJA ROZUMOWANIA", + "auto": "Auto", + "empty": "Kliknij przycisk \"+\", aby dodać narzędzia. Możesz dodać wiele narzędzi.", + "descriptionLabel": "Opis narzędzia", + "title": "Dodaj narzędzie", + "descriptionPlaceholder": "Krótki opis przeznaczenia narzędzia, np. zmierzenie temperatury dla konkretnej lokalizacji.", + "settings": "USTAWIENIA UŻYTKOWNIKA", + "uninstalledContent": "Ta wtyczka jest instalowana z repozytorium lokalnego/GitHub. Proszę użyć po instalacji.", + "unsupportedTitle": "Nieobsługiwana akcja", + "uninstalledTitle": "Narzędzie nie jest zainstalowane", + "paramsTip2": "Gdy opcja \"Auto\" jest wyłączona, używana jest wartość domyślna.", + "toolLabel": "Narzędzie", + "toolSetting": "Ustawienia narzędzi", + "unsupportedMCPTool": "Obecnie wybrana wersja wtyczki strategii agenta nie obsługuje narzędzi MCP." + }, + "strategyNum": "{{liczba}} {{strategia}} ZAWARTE", + "endpointsEmpty": "Kliknij przycisk \"+\", aby dodać punkt końcowy", + "endpointDisableTip": "Wyłącz punkt końcowy", + "endpoints": "Punkty końcowe", + "disabled": "Niepełnosprawny", + "endpointModalTitle": "Punkt końcowy konfiguracji", + "endpointsDocLink": "Wyświetlanie dokumentu", + "endpointDeleteTip": "Usuń punkt końcowy", + "actionNum": "{{liczba}} {{akcja}} ZAWARTE", + "configureTool": "Narzędzie konfiguracji", + "configureModel": "Konfiguracja modelu", + "switchVersion": "Wersja przełącznika", + "serviceOk": "Serwis OK", + "configureApp": "Konfiguracja aplikacji", + "endpointModalDesc": "Po skonfigurowaniu można korzystać z funkcji dostarczanych przez wtyczkę za pośrednictwem punktów końcowych API.", + "endpointDisableContent": "Czy chcesz wyłączyć {{name}}?", + "endpointDeleteContent": "Czy chcesz usunąć {{name}}?", + "endpointsTip": "Ta wtyczka zapewnia określone funkcje za pośrednictwem punktów końcowych i można skonfigurować wiele zestawów punktów końcowych dla bieżącego obszaru roboczego.", + "modelNum": "{{liczba}} MODELE W ZESTAWIE", + "deprecation": { + "reason": { + "businessAdjustments": "dostosowania biznesowe", + "ownershipTransferred": "własność przekazana", + "noMaintainer": "brak opiekuna" + }, + "onlyReason": "Ten plugin został wycofany z użycia z powodu {{deprecatedReason}} i nie będzie już aktualizowany.", + "noReason": "Ten wtyczka została przestarzała i nie będzie dłużej aktualizowana.", + "fullMessage": "Ten plugin został wycofany z użycia z powodu {{deprecatedReason}} i nie będzie już aktualizowany. Proszę użyć zamiast tego {{-alternativePluginId}}." + } + }, + "debugInfo": { + "viewDocs": "Wyświetlanie dokumentów", + "title": "Debugowanie" + }, + "privilege": { + "everyone": "Każdy", + "whoCanDebug": "Kto może debugować wtyczki?", + "admins": "Administratorzy", + "noone": "Nikt", + "whoCanInstall": "Kto może instalować wtyczki i nimi zarządzać?", + "title": "Preferencje wtyczek" + }, + "pluginInfoModal": { + "packageName": "Pakiet", + "title": "Informacje o wtyczce", + "release": "Zwolnić", + "repository": "Repozytorium" + }, + "action": { + "deleteContentLeft": "Czy chcesz usunąć", + "delete": "Usuń wtyczkę", + "pluginInfo": "Informacje o wtyczce", + "checkForUpdates": "Sprawdź dostępność aktualizacji", + "usedInApps": "Ta wtyczka jest używana w aplikacjach {{num}}.", + "deleteContentRight": "wtyczka?" + }, + "installModal": { + "labels": { + "package": "Pakiet", + "repository": "Repozytorium", + "version": "Wersja" + }, + "installPlugin": "Zainstaluj wtyczkę", + "install": "Instalować", + "installFailedDesc": "Instalacja wtyczki nie powiodła się.", + "installedSuccessfullyDesc": "Wtyczka została pomyślnie zainstalowana.", + "back": "Wstecz", + "readyToInstallPackages": "Informacje o instalacji następujących wtyczek {{num}}", + "cancel": "Anuluj", + "pluginLoadError": "Błąd ładowania wtyczki", + "installing": "Instalowanie...", + "installFailed": "Instalacja nie powiodła się", + "installComplete": "Instalacja zakończona", + "readyToInstall": "Informacje o instalacji następującej wtyczki", + "dropPluginToInstall": "Upuść pakiet wtyczek tutaj, aby zainstalować", + "uploadFailed": "Przekazywanie nie powiodło się", + "next": "Następny", + "fromTrustSource": "Upewnij się, że instalujesz wtyczki tylko z zaufanego źródła.", + "pluginLoadErrorDesc": "Ta wtyczka nie zostanie zainstalowana", + "close": "Zamykać", + "readyToInstallPackage": "Informacje o instalacji następującej wtyczki", + "uploadingPackage": "Przesyłanie {{packageName}}...", + "installedSuccessfully": "Instalacja powiodła się", + "installWarning": "Ten plugin nie może być zainstalowany." + }, + "installFromGitHub": { + "installPlugin": "Zainstaluj wtyczkę z GitHub", + "selectVersionPlaceholder": "Proszę wybrać wersję", + "gitHubRepo": "Repozytorium GitHub", + "uploadFailed": "Przekazywanie nie powiodło się", + "selectVersion": "Wybierz wersję", + "installFailed": "Instalacja nie powiodła się", + "updatePlugin": "Zaktualizuj wtyczkę z GitHub", + "selectPackagePlaceholder": "Proszę wybrać pakiet", + "selectPackage": "Wybierz pakiet", + "installedSuccessfully": "Instalacja powiodła się", + "installNote": "Upewnij się, że instalujesz wtyczki tylko z zaufanego źródła." + }, + "upgrade": { + "successfulTitle": "Instalacja powiodła się", + "description": "Informacje o instalacji następującej wtyczki", + "close": "Zamykać", + "upgrade": "Instalować", + "title": "Zainstaluj wtyczkę", + "upgrading": "Instalowanie...", + "usedInApps": "Używane w aplikacjach {{num}}" + }, + "error": { + "inValidGitHubUrl": "Nieprawidłowy adres URL usługi GitHub. Podaj prawidłowy adres URL w formacie: https://github.com/owner/repo", + "noReleasesFound": "Nie znaleziono wydań. Sprawdź repozytorium GitHub lub wejściowy adres URL.", + "fetchReleasesError": "Nie można pobrać wydań. Spróbuj ponownie później." + }, + "marketplace": { + "sortOption": { + "newlyReleased": "Nowo wydany", + "firstReleased": "Po raz pierwszy wydany", + "recentlyUpdated": "Ostatnio zaktualizowane", + "mostPopular": "Najpopularniejsze" + }, + "sortBy": "Czarne miasto", + "discover": "Odkryć", + "moreFrom": "Więcej z Marketplace", + "empower": "Zwiększ możliwości rozwoju sztucznej inteligencji", + "viewMore": "Zobacz więcej", + "and": "i", + "difyMarketplace": "Rynek Dify", + "noPluginFound": "Nie znaleziono wtyczki", + "pluginsResult": "{{num}} wyniki", + "partnerTip": "Zweryfikowane przez partnera Dify", + "verifiedTip": "Zweryfikowane przez Dify" + }, + "task": { + "installError": "Nie udało się zainstalować wtyczek {{errorLength}}, kliknij, aby wyświetlić", + "installedError": "Nie udało się zainstalować wtyczek {{errorLength}}", + "installing": "Instalowanie wtyczek {{installingLength}}, 0 gotowe.", + "installingWithSuccess": "Instalacja wtyczek {{installingLength}}, {{successLength}} powodzenie.", + "clearAll": "Wyczyść wszystko", + "installingWithError": "Instalacja wtyczek {{installingLength}}, {{successLength}} powodzenie, {{errorLength}} niepowodzenie", + "installSuccess": "{{successLength}} plugins installed successfully", + "installed": "Installed", + "runningPlugins": "Installing Plugins", + "successPlugins": "Successfully Installed Plugins", + "errorPlugins": "Failed to Install Plugins" + }, + "search": "Szukać", + "installFrom": "ZAINSTALUJ Z", + "searchCategories": "Kategorie wyszukiwania", + "allCategories": "Wszystkie kategorie", + "findMoreInMarketplace": "Więcej informacji w Marketplace", + "searchInMarketplace": "Wyszukiwanie w Marketplace", + "endpointsEnabled": "{{num}} włączone zestawy punktów końcowych", + "install": "{{num}} instalacji", + "installAction": "Instalować", + "installPlugin": "Zainstaluj wtyczkę", + "from": "Z", + "fromMarketplace": "Z Marketplace", + "searchPlugins": "Wtyczki wyszukiwania", + "searchTools": "Narzędzia wyszukiwania...", + "metadata": { + "title": "Wtyczki" + }, + "difyVersionNotCompatible": "Obecna wersja Dify nie jest kompatybilna z tym wtyczką, proszę zaktualizować do minimalnej wymaganej wersji: {{minimalDifyVersion}}", + "requestAPlugin": "Poproś o wtyczkę", + "publishPlugins": "Publikowanie wtyczek", + "auth": { + "useOAuth": "Użyj OAuth", + "default": "Domyślny", + "useOAuthAuth": "Użyj autoryzacji OAuth", + "authRemoved": "Autoryzacja usunięta", + "addApi": "Dodaj klucz API", + "setupOAuth": "Skonfiguruj klienta OAuth", + "useApi": "Użyj klucza API", + "workspaceDefault": "Domyślna przestrzeń robocza", + "authorization": "Autoryzacja", + "custom": "Niestandardowy", + "oauthClient": "Klient OAuth", + "authorizations": "Uprawnienia", + "setDefault": "Ustaw jako domyślne", + "saveOnly": "Zapisz tylko", + "oauthClientSettings": "Ustawienia klienta OAuth", + "authorizationName": "Nazwa autoryzacji", + "useApiAuth": "Konfiguracja autoryzacji klucza API", + "saveAndAuth": "Zapisz i autoryzuj", + "addOAuth": "Dodaj OAuth", + "useApiAuthDesc": "Po skonfigurowaniu poświadczeń wszyscy członkowie w przestrzeni roboczej mogą korzystać z tego narzędzia podczas orkiestracji aplikacji.", + "clientInfo": "Ponieważ nie znaleziono tajemnic klientów systemu dla tego dostawcy narzędzi, wymagane jest ręczne skonfigurowanie, dla redirect_uri proszę użyć", + "unavailable": "Niedostępny", + "customCredentialUnavailable": "Niestandardowe dane logowania są obecnie niedostępne", + "credentialUnavailable": "Kredencje są obecnie niedostępne. Proszę skontaktować się z administratorem.", + "credentialUnavailableInButton": "Credential niedostępny", + "connectedWorkspace": "Połączona przestrzeń robocza", + "emptyAuth": "Skonfiguruj uwierzytelnianie" + }, + "deprecated": "Nieaktualny", + "autoUpdate": { + "strategy": { + "disabled": { + "description": "Wtyczki nie będą się automatycznie aktualizować", + "name": "Niepełnosprawny" + }, + "fixOnly": { + "selectedDescription": "Automatyczna aktualizacja tylko dla wersji poprawek", + "name": "Napraw tylko", + "description": "Automatyczna aktualizacja tylko dla wersji łatkowych (np. 1.0.1 → 1.0.2). Zmiany w wersjach mniejszych nie będą wywoływać aktualizacji." + }, + "latest": { + "name": "Najświeższy", + "description": "Zawsze aktualizuj do najnowszej wersji", + "selectedDescription": "Zawsze aktualizuj do najnowszej wersji" + } + }, + "upgradeMode": { + "all": "Zaktualizuj wszystko", + "partial": "Tylko wybrane", + "exclude": "Wyłącz wybrane" + }, + "upgradeModePlaceholder": { + "exclude": "Wybrane wtyczki nie będą aktualizować się automatycznie.", + "partial": "Tylko wybrane wtyczki będą się aktualizować automatycznie. Obecnie nie wybrano żadnych wtyczek, więc żadna wtyczka nie będzie się automatycznie aktualizować." + }, + "operation": { + "clearAll": "Wyczyść wszystko", + "select": "Wybierz wtyczki" + }, + "pluginDowngradeWarning": { + "exclude": "Wyłącz z automatycznej aktualizacji", + "downgrade": "Zrób downgrade tak czy inaczej", + "title": "Obniżenie wersji wtyczki", + "description": "Automatyczna aktualizacja jest obecnie włączona dla tej wtyczki. Obniżenie wersji może spowodować, że twoje zmiany zostaną nadpisane podczas następnej automatycznej aktualizacji." + }, + "noPluginPlaceholder": { + "noInstalled": "Brak zainstalowanych wtyczek", + "noFound": "Nie znaleziono wtyczek" + }, + "updateTime": "Czas aktualizacji", + "updateSettings": "Zaktualizuj ustawienia", + "updateTimeTitle": "Czas aktualizacji", + "specifyPluginsToUpdate": "Określ wtyczki do zaktualizowania", + "nextUpdateTime": "Następna automatyczna aktualizacja: {{time}}", + "automaticUpdates": "Automatyczne aktualizacje", + "excludeUpdate": "Następujące {{num}} wtyczki nie będą aktualizować się automatycznie", + "changeTimezone": "Aby zmienić strefę czasową, przejdź do Ustawienia", + "partialUPdate": "Tylko następujące {{num}} wtyczki będą się automatycznie aktualizować" + }, + "readmeInfo": { + "title": "PRZECZYTAJMNIE", + "needHelpCheckReadme": "Potrzebujesz pomocy? Sprawdź plik README.", + "noReadmeAvailable": "Brak dostępnego pliku README", + "failedToFetch": "Nie udało się pobrać pliku README" + } +} diff --git a/web/i18n/pl-PL/plugin.ts b/web/i18n/pl-PL/plugin.ts deleted file mode 100644 index e4d9081217..0000000000 --- a/web/i18n/pl-PL/plugin.ts +++ /dev/null @@ -1,325 +0,0 @@ -const translation = { - category: { - extensions: 'Rozszerzenia', - agents: 'Strategie agentów', - bundles: 'Wiązki', - all: 'Cały', - tools: 'Narzędzia', - models: 'Modele', - datasources: 'Źródła danych', - triggers: 'Czynniki wywołujące', - }, - categorySingle: { - model: 'Model', - extension: 'Rozszerzenie', - bundle: 'Pakiet', - agent: 'Strategia agenta', - tool: 'Narzędzie', - datasource: 'Źródło danych', - trigger: 'Spust', - }, - list: { - source: { - marketplace: 'Instalowanie z Marketplace', - github: 'Instalowanie z usługi GitHub', - local: 'Zainstaluj z lokalnego pliku pakietu', - }, - notFound: 'Nie znaleziono wtyczek', - noInstalled: 'Brak zainstalowanych wtyczek', - }, - source: { - github: 'Usługa GitHub', - local: 'Lokalny plik pakietu', - marketplace: 'Rynek', - }, - detailPanel: { - categoryTip: { - local: 'Wtyczka lokalna', - github: 'Zainstalowany z Github', - marketplace: 'Zainstalowano z witryny Marketplace', - debugging: 'Wtyczka do debugowania', - }, - operation: { - remove: 'Usunąć', - checkUpdate: 'Sprawdź aktualizację', - detail: 'Szczegóły', - update: 'Aktualizacja', - install: 'Instalować', - viewDetail: 'Pokaż szczegóły', - info: 'Informacje o wtyczce', - back: 'Wstecz', - }, - toolSelector: { - unsupportedContent2: 'Kliknij, aby zmienić wersję.', - uninstalledLink: 'Zarządzanie we wtyczkach', - placeholder: 'Wybierz narzędzie...', - paramsTip1: 'Steruje parametrami wnioskowania LLM.', - unsupportedContent: 'Zainstalowana wersja wtyczki nie zapewnia tej akcji.', - params: 'KONFIGURACJA ROZUMOWANIA', - auto: 'Auto', - empty: 'Kliknij przycisk "+", aby dodać narzędzia. Możesz dodać wiele narzędzi.', - descriptionLabel: 'Opis narzędzia', - title: 'Dodaj narzędzie', - descriptionPlaceholder: 'Krótki opis przeznaczenia narzędzia, np. zmierzenie temperatury dla konkretnej lokalizacji.', - settings: 'USTAWIENIA UŻYTKOWNIKA', - uninstalledContent: 'Ta wtyczka jest instalowana z repozytorium lokalnego/GitHub. Proszę użyć po instalacji.', - unsupportedTitle: 'Nieobsługiwana akcja', - uninstalledTitle: 'Narzędzie nie jest zainstalowane', - paramsTip2: 'Gdy opcja "Auto" jest wyłączona, używana jest wartość domyślna.', - toolLabel: 'Narzędzie', - toolSetting: 'Ustawienia narzędzi', - unsupportedMCPTool: 'Obecnie wybrana wersja wtyczki strategii agenta nie obsługuje narzędzi MCP.', - }, - strategyNum: '{{liczba}} {{strategia}} ZAWARTE', - endpointsEmpty: 'Kliknij przycisk "+", aby dodać punkt końcowy', - endpointDisableTip: 'Wyłącz punkt końcowy', - endpoints: 'Punkty końcowe', - disabled: 'Niepełnosprawny', - endpointModalTitle: 'Punkt końcowy konfiguracji', - endpointsDocLink: 'Wyświetlanie dokumentu', - endpointDeleteTip: 'Usuń punkt końcowy', - actionNum: '{{liczba}} {{akcja}} ZAWARTE', - configureTool: 'Narzędzie konfiguracji', - configureModel: 'Konfiguracja modelu', - switchVersion: 'Wersja przełącznika', - serviceOk: 'Serwis OK', - configureApp: 'Konfiguracja aplikacji', - endpointModalDesc: 'Po skonfigurowaniu można korzystać z funkcji dostarczanych przez wtyczkę za pośrednictwem punktów końcowych API.', - endpointDisableContent: 'Czy chcesz wyłączyć {{name}}?', - endpointDeleteContent: 'Czy chcesz usunąć {{name}}?', - endpointsTip: 'Ta wtyczka zapewnia określone funkcje za pośrednictwem punktów końcowych i można skonfigurować wiele zestawów punktów końcowych dla bieżącego obszaru roboczego.', - modelNum: '{{liczba}} MODELE W ZESTAWIE', - deprecation: { - reason: { - businessAdjustments: 'dostosowania biznesowe', - ownershipTransferred: 'własność przekazana', - noMaintainer: 'brak opiekuna', - }, - onlyReason: 'Ten plugin został wycofany z użycia z powodu {{deprecatedReason}} i nie będzie już aktualizowany.', - noReason: 'Ten wtyczka została przestarzała i nie będzie dłużej aktualizowana.', - fullMessage: 'Ten plugin został wycofany z użycia z powodu {{deprecatedReason}} i nie będzie już aktualizowany. Proszę użyć zamiast tego {{-alternativePluginId}}.', - }, - }, - debugInfo: { - viewDocs: 'Wyświetlanie dokumentów', - title: 'Debugowanie', - }, - privilege: { - everyone: 'Każdy', - whoCanDebug: 'Kto może debugować wtyczki?', - admins: 'Administratorzy', - noone: 'Nikt', - whoCanInstall: 'Kto może instalować wtyczki i nimi zarządzać?', - title: 'Preferencje wtyczek', - }, - pluginInfoModal: { - packageName: 'Pakiet', - title: 'Informacje o wtyczce', - release: 'Zwolnić', - repository: 'Repozytorium', - }, - action: { - deleteContentLeft: 'Czy chcesz usunąć', - delete: 'Usuń wtyczkę', - pluginInfo: 'Informacje o wtyczce', - checkForUpdates: 'Sprawdź dostępność aktualizacji', - usedInApps: 'Ta wtyczka jest używana w aplikacjach {{num}}.', - deleteContentRight: 'wtyczka?', - }, - installModal: { - labels: { - package: 'Pakiet', - repository: 'Repozytorium', - version: 'Wersja', - }, - installPlugin: 'Zainstaluj wtyczkę', - install: 'Instalować', - installFailedDesc: 'Instalacja wtyczki nie powiodła się.', - installedSuccessfullyDesc: 'Wtyczka została pomyślnie zainstalowana.', - back: 'Wstecz', - readyToInstallPackages: 'Informacje o instalacji następujących wtyczek {{num}}', - cancel: 'Anuluj', - pluginLoadError: 'Błąd ładowania wtyczki', - installing: 'Instalowanie...', - installFailed: 'Instalacja nie powiodła się', - installComplete: 'Instalacja zakończona', - readyToInstall: 'Informacje o instalacji następującej wtyczki', - dropPluginToInstall: 'Upuść pakiet wtyczek tutaj, aby zainstalować', - uploadFailed: 'Przekazywanie nie powiodło się', - next: 'Następny', - fromTrustSource: 'Upewnij się, że instalujesz wtyczki tylko z zaufanego źródła.', - pluginLoadErrorDesc: 'Ta wtyczka nie zostanie zainstalowana', - close: 'Zamykać', - readyToInstallPackage: 'Informacje o instalacji następującej wtyczki', - uploadingPackage: 'Przesyłanie {{packageName}}...', - installedSuccessfully: 'Instalacja powiodła się', - installWarning: 'Ten plugin nie może być zainstalowany.', - }, - installFromGitHub: { - installPlugin: 'Zainstaluj wtyczkę z GitHub', - selectVersionPlaceholder: 'Proszę wybrać wersję', - gitHubRepo: 'Repozytorium GitHub', - uploadFailed: 'Przekazywanie nie powiodło się', - selectVersion: 'Wybierz wersję', - installFailed: 'Instalacja nie powiodła się', - updatePlugin: 'Zaktualizuj wtyczkę z GitHub', - selectPackagePlaceholder: 'Proszę wybrać pakiet', - selectPackage: 'Wybierz pakiet', - installedSuccessfully: 'Instalacja powiodła się', - installNote: 'Upewnij się, że instalujesz wtyczki tylko z zaufanego źródła.', - }, - upgrade: { - successfulTitle: 'Instalacja powiodła się', - description: 'Informacje o instalacji następującej wtyczki', - close: 'Zamykać', - upgrade: 'Instalować', - title: 'Zainstaluj wtyczkę', - upgrading: 'Instalowanie...', - usedInApps: 'Używane w aplikacjach {{num}}', - }, - error: { - inValidGitHubUrl: 'Nieprawidłowy adres URL usługi GitHub. Podaj prawidłowy adres URL w formacie: https://github.com/owner/repo', - noReleasesFound: 'Nie znaleziono wydań. Sprawdź repozytorium GitHub lub wejściowy adres URL.', - fetchReleasesError: 'Nie można pobrać wydań. Spróbuj ponownie później.', - }, - marketplace: { - sortOption: { - newlyReleased: 'Nowo wydany', - firstReleased: 'Po raz pierwszy wydany', - recentlyUpdated: 'Ostatnio zaktualizowane', - mostPopular: 'Najpopularniejsze', - }, - sortBy: 'Czarne miasto', - discover: 'Odkryć', - moreFrom: 'Więcej z Marketplace', - empower: 'Zwiększ możliwości rozwoju sztucznej inteligencji', - viewMore: 'Zobacz więcej', - and: 'i', - difyMarketplace: 'Rynek Dify', - noPluginFound: 'Nie znaleziono wtyczki', - pluginsResult: '{{num}} wyniki', - partnerTip: 'Zweryfikowane przez partnera Dify', - verifiedTip: 'Zweryfikowane przez Dify', - }, - task: { - installError: 'Nie udało się zainstalować wtyczek {{errorLength}}, kliknij, aby wyświetlić', - installedError: 'Nie udało się zainstalować wtyczek {{errorLength}}', - installing: 'Instalowanie wtyczek {{installingLength}}, 0 gotowe.', - installingWithSuccess: 'Instalacja wtyczek {{installingLength}}, {{successLength}} powodzenie.', - clearAll: 'Wyczyść wszystko', - installingWithError: 'Instalacja wtyczek {{installingLength}}, {{successLength}} powodzenie, {{errorLength}} niepowodzenie', - installSuccess: '{{successLength}} plugins installed successfully', - installed: 'Installed', - runningPlugins: 'Installing Plugins', - successPlugins: 'Successfully Installed Plugins', - errorPlugins: 'Failed to Install Plugins', - }, - search: 'Szukać', - installFrom: 'ZAINSTALUJ Z', - searchCategories: 'Kategorie wyszukiwania', - allCategories: 'Wszystkie kategorie', - findMoreInMarketplace: 'Więcej informacji w Marketplace', - searchInMarketplace: 'Wyszukiwanie w Marketplace', - endpointsEnabled: '{{num}} włączone zestawy punktów końcowych', - install: '{{num}} instalacji', - installAction: 'Instalować', - installPlugin: 'Zainstaluj wtyczkę', - from: 'Z', - fromMarketplace: 'Z Marketplace', - searchPlugins: 'Wtyczki wyszukiwania', - searchTools: 'Narzędzia wyszukiwania...', - metadata: { - title: 'Wtyczki', - }, - difyVersionNotCompatible: 'Obecna wersja Dify nie jest kompatybilna z tym wtyczką, proszę zaktualizować do minimalnej wymaganej wersji: {{minimalDifyVersion}}', - requestAPlugin: 'Poproś o wtyczkę', - publishPlugins: 'Publikowanie wtyczek', - auth: { - useOAuth: 'Użyj OAuth', - default: 'Domyślny', - useOAuthAuth: 'Użyj autoryzacji OAuth', - authRemoved: 'Autoryzacja usunięta', - addApi: 'Dodaj klucz API', - setupOAuth: 'Skonfiguruj klienta OAuth', - useApi: 'Użyj klucza API', - workspaceDefault: 'Domyślna przestrzeń robocza', - authorization: 'Autoryzacja', - custom: 'Niestandardowy', - oauthClient: 'Klient OAuth', - authorizations: 'Uprawnienia', - setDefault: 'Ustaw jako domyślne', - saveOnly: 'Zapisz tylko', - oauthClientSettings: 'Ustawienia klienta OAuth', - authorizationName: 'Nazwa autoryzacji', - useApiAuth: 'Konfiguracja autoryzacji klucza API', - saveAndAuth: 'Zapisz i autoryzuj', - addOAuth: 'Dodaj OAuth', - useApiAuthDesc: 'Po skonfigurowaniu poświadczeń wszyscy członkowie w przestrzeni roboczej mogą korzystać z tego narzędzia podczas orkiestracji aplikacji.', - clientInfo: 'Ponieważ nie znaleziono tajemnic klientów systemu dla tego dostawcy narzędzi, wymagane jest ręczne skonfigurowanie, dla redirect_uri proszę użyć', - unavailable: 'Niedostępny', - customCredentialUnavailable: 'Niestandardowe dane logowania są obecnie niedostępne', - credentialUnavailable: 'Kredencje są obecnie niedostępne. Proszę skontaktować się z administratorem.', - credentialUnavailableInButton: 'Credential niedostępny', - connectedWorkspace: 'Połączona przestrzeń robocza', - emptyAuth: 'Skonfiguruj uwierzytelnianie', - }, - deprecated: 'Nieaktualny', - autoUpdate: { - strategy: { - disabled: { - description: 'Wtyczki nie będą się automatycznie aktualizować', - name: 'Niepełnosprawny', - }, - fixOnly: { - selectedDescription: 'Automatyczna aktualizacja tylko dla wersji poprawek', - name: 'Napraw tylko', - description: 'Automatyczna aktualizacja tylko dla wersji łatkowych (np. 1.0.1 → 1.0.2). Zmiany w wersjach mniejszych nie będą wywoływać aktualizacji.', - }, - latest: { - name: 'Najświeższy', - description: 'Zawsze aktualizuj do najnowszej wersji', - selectedDescription: 'Zawsze aktualizuj do najnowszej wersji', - }, - }, - upgradeMode: { - all: 'Zaktualizuj wszystko', - partial: 'Tylko wybrane', - exclude: 'Wyłącz wybrane', - }, - upgradeModePlaceholder: { - exclude: 'Wybrane wtyczki nie będą aktualizować się automatycznie.', - partial: 'Tylko wybrane wtyczki będą się aktualizować automatycznie. Obecnie nie wybrano żadnych wtyczek, więc żadna wtyczka nie będzie się automatycznie aktualizować.', - }, - operation: { - clearAll: 'Wyczyść wszystko', - select: 'Wybierz wtyczki', - }, - pluginDowngradeWarning: { - exclude: 'Wyłącz z automatycznej aktualizacji', - downgrade: 'Zrób downgrade tak czy inaczej', - title: 'Obniżenie wersji wtyczki', - description: 'Automatyczna aktualizacja jest obecnie włączona dla tej wtyczki. Obniżenie wersji może spowodować, że twoje zmiany zostaną nadpisane podczas następnej automatycznej aktualizacji.', - }, - noPluginPlaceholder: { - noInstalled: 'Brak zainstalowanych wtyczek', - noFound: 'Nie znaleziono wtyczek', - }, - updateTime: 'Czas aktualizacji', - updateSettings: 'Zaktualizuj ustawienia', - updateTimeTitle: 'Czas aktualizacji', - specifyPluginsToUpdate: 'Określ wtyczki do zaktualizowania', - nextUpdateTime: 'Następna automatyczna aktualizacja: {{time}}', - automaticUpdates: 'Automatyczne aktualizacje', - excludeUpdate: 'Następujące {{num}} wtyczki nie będą aktualizować się automatycznie', - changeTimezone: 'Aby zmienić strefę czasową, przejdź do Ustawienia', - partialUPdate: 'Tylko następujące {{num}} wtyczki będą się automatycznie aktualizować', - }, - readmeInfo: { - title: 'PRZECZYTAJMNIE', - needHelpCheckReadme: 'Potrzebujesz pomocy? Sprawdź plik README.', - noReadmeAvailable: 'Brak dostępnego pliku README', - failedToFetch: 'Nie udało się pobrać pliku README', - }, -} - -export default translation diff --git a/web/i18n/pl-PL/register.json b/web/i18n/pl-PL/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/pl-PL/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/pl-PL/register.ts b/web/i18n/pl-PL/register.ts deleted file mode 100644 index 928649474b..0000000000 --- a/web/i18n/pl-PL/register.ts +++ /dev/null @@ -1,4 +0,0 @@ -const translation = { -} - -export default translation diff --git a/web/i18n/pl-PL/run-log.json b/web/i18n/pl-PL/run-log.json new file mode 100644 index 0000000000..89470b0ca1 --- /dev/null +++ b/web/i18n/pl-PL/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "WEJŚCIE", + "result": "WYNIK", + "detail": "SZCZEGÓŁY", + "tracing": "ŚLEDZENIE", + "resultPanel": { + "status": "STATUS", + "time": "CZAS WYKONANIA", + "tokens": "CAŁKOWITA LICZBA TOKENÓW" + }, + "meta": { + "title": "METADANE", + "status": "Status", + "version": "Wersja", + "executor": "Wykonawca", + "startTime": "Czas rozpoczęcia", + "time": "Czas trwania", + "tokens": "Liczba tokenów", + "steps": "Kroki wykonania" + }, + "resultEmpty": { + "title": "To wykonanie generuje tylko format JSON,", + "tipLeft": "proszę przejdź do ", + "link": "panelu szczegółów", + "tipRight": " aby je zobaczyć." + }, + "circularInvocationTip": "W bieżącym przepływie pracy istnieje cykliczne wywoływanie narzędzi/węzłów.", + "actionLogs": "Dzienniki akcji" +} diff --git a/web/i18n/pl-PL/run-log.ts b/web/i18n/pl-PL/run-log.ts deleted file mode 100644 index 57620056d7..0000000000 --- a/web/i18n/pl-PL/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -const translation = { - input: 'WEJŚCIE', - result: 'WYNIK', - detail: 'SZCZEGÓŁY', - tracing: 'ŚLEDZENIE', - resultPanel: { - status: 'STATUS', - time: 'CZAS WYKONANIA', - tokens: 'CAŁKOWITA LICZBA TOKENÓW', - }, - meta: { - title: 'METADANE', - status: 'Status', - version: 'Wersja', - executor: 'Wykonawca', - startTime: 'Czas rozpoczęcia', - time: 'Czas trwania', - tokens: 'Liczba tokenów', - steps: 'Kroki wykonania', - }, - resultEmpty: { - title: 'To wykonanie generuje tylko format JSON,', - tipLeft: 'proszę przejdź do ', - link: 'panelu szczegółów', - tipRight: ' aby je zobaczyć.', - }, - circularInvocationTip: 'W bieżącym przepływie pracy istnieje cykliczne wywoływanie narzędzi/węzłów.', - actionLogs: 'Dzienniki akcji', -} - -export default translation diff --git a/web/i18n/pl-PL/share.json b/web/i18n/pl-PL/share.json new file mode 100644 index 0000000000..4871e33455 --- /dev/null +++ b/web/i18n/pl-PL/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "", + "appUnavailable": "Aplikacja jest niedostępna", + "appUnknownError": "Aplikacja jest niedostępna" + }, + "chat": { + "newChat": "Nowy czat", + "pinnedTitle": "Przypięte", + "unpinnedTitle": "Czaty", + "newChatDefaultName": "Nowa rozmowa", + "resetChat": "Resetuj rozmowę", + "poweredBy": "Działany przez", + "prompt": "Podpowiedź", + "privatePromptConfigTitle": "Ustawienia rozmowy", + "publicPromptConfigTitle": "Początkowa podpowiedź", + "configStatusDes": "Przed rozpoczęciem możesz zmodyfikować ustawienia rozmowy", + "configDisabled": "Ustawienia poprzedniej sesji zostały użyte w tej sesji.", + "startChat": "Zacznij czat", + "privacyPolicyLeft": "Proszę przeczytać ", + "privacyPolicyMiddle": "politykę prywatności", + "privacyPolicyRight": " dostarczoną przez dewelopera aplikacji.", + "deleteConversation": { + "title": "Usuń rozmowę", + "content": "Czy na pewno chcesz usunąć tę rozmowę?" + }, + "tryToSolve": "Spróbuj rozwiązać", + "temporarySystemIssue": "Przepraszamy, tymczasowy problem systemowy.", + "expand": "Rozwiń", + "collapse": "Zwiń", + "chatSettingsTitle": "Nowa konfiguracja czatu", + "viewChatSettings": "Zobacz ustawienia czatu", + "chatFormTip": "Ustawienia czatu nie mogą być modyfikowane po rozpoczęciu czatu.", + "newChatTip": "Już w nowej czacie" + }, + "generation": { + "tabs": { + "create": "Uruchom raz", + "batch": "Uruchom partię", + "saved": "Zapisane" + }, + "savedNoData": { + "title": "Nie zapisałeś jeszcze wyniku!", + "description": "Zacznij generować treść i znajdź swoje zapisane wyniki tutaj.", + "startCreateContent": "Zacznij tworzyć treść" + }, + "title": "Uzupełnianie AI", + "queryTitle": "Zapytaj o treść", + "completionResult": "Wynik uzupełnienia", + "queryPlaceholder": "Wpisz swoją treść zapytania...", + "run": "Wykonaj", + "copy": "Kopiuj", + "resultTitle": "Uzupełnianie AI", + "noData": "AI poda Ci to, czego chcesz tutaj.", + "csvUploadTitle": "Przeciągnij i upuść plik CSV tutaj lub ", + "browse": "przeglądaj", + "csvStructureTitle": "Plik CSV musi być zgodny z następującą strukturą:", + "downloadTemplate": "Pobierz szablon tutaj", + "field": "Pole", + "batchFailed": { + "info": "{{num}} nieudanych wykonan", + "retry": "Powtórz", + "outputPlaceholder": "Brak treści wyjściowej" + }, + "errorMsg": { + "empty": "Proszę wprowadź treść w załadowanym pliku.", + "fileStructNotMatch": "Załadowany plik CSV nie pasuje do struktury.", + "emptyLine": "Wiersz {{rowIndex}} jest pusty", + "invalidLine": "Wiersz {{rowIndex}}: wartość {{varName}} nie może być pusta", + "moreThanMaxLengthLine": "Wiersz {{rowIndex}}: wartość {{varName}} nie może mieć więcej niż {{maxLength}} znaków", + "atLeastOne": "Proszę wprowadź co najmniej jeden wiersz w załadowanym pliku." + }, + "execution": "Uruchom", + "executions": "{{num}} uruchomień", + "stopRun": "Zatrzymaj wykonanie" + }, + "login": { + "backToHome": "Powrót do strony głównej" + } +} diff --git a/web/i18n/pl-PL/share.ts b/web/i18n/pl-PL/share.ts deleted file mode 100644 index 88b6b4f49f..0000000000 --- a/web/i18n/pl-PL/share.ts +++ /dev/null @@ -1,87 +0,0 @@ -const translation = { - common: { - welcome: '', - appUnavailable: 'Aplikacja jest niedostępna', - appUnknownError: 'Aplikacja jest niedostępna', - }, - chat: { - newChat: 'Nowy czat', - pinnedTitle: 'Przypięte', - unpinnedTitle: 'Czaty', - newChatDefaultName: 'Nowa rozmowa', - resetChat: 'Resetuj rozmowę', - poweredBy: 'Działany przez', - prompt: 'Podpowiedź', - privatePromptConfigTitle: 'Ustawienia rozmowy', - publicPromptConfigTitle: 'Początkowa podpowiedź', - configStatusDes: - 'Przed rozpoczęciem możesz zmodyfikować ustawienia rozmowy', - configDisabled: 'Ustawienia poprzedniej sesji zostały użyte w tej sesji.', - startChat: 'Zacznij czat', - privacyPolicyLeft: 'Proszę przeczytać ', - privacyPolicyMiddle: 'politykę prywatności', - privacyPolicyRight: ' dostarczoną przez dewelopera aplikacji.', - deleteConversation: { - title: 'Usuń rozmowę', - content: 'Czy na pewno chcesz usunąć tę rozmowę?', - }, - tryToSolve: 'Spróbuj rozwiązać', - temporarySystemIssue: 'Przepraszamy, tymczasowy problem systemowy.', - expand: 'Rozwiń', - collapse: 'Zwiń', - chatSettingsTitle: 'Nowa konfiguracja czatu', - viewChatSettings: 'Zobacz ustawienia czatu', - chatFormTip: 'Ustawienia czatu nie mogą być modyfikowane po rozpoczęciu czatu.', - newChatTip: 'Już w nowej czacie', - }, - generation: { - tabs: { - create: 'Uruchom raz', - batch: 'Uruchom partię', - saved: 'Zapisane', - }, - savedNoData: { - title: 'Nie zapisałeś jeszcze wyniku!', - description: - 'Zacznij generować treść i znajdź swoje zapisane wyniki tutaj.', - startCreateContent: 'Zacznij tworzyć treść', - }, - title: 'Uzupełnianie AI', - queryTitle: 'Zapytaj o treść', - completionResult: 'Wynik uzupełnienia', - queryPlaceholder: 'Wpisz swoją treść zapytania...', - run: 'Wykonaj', - copy: 'Kopiuj', - resultTitle: 'Uzupełnianie AI', - noData: 'AI poda Ci to, czego chcesz tutaj.', - csvUploadTitle: 'Przeciągnij i upuść plik CSV tutaj lub ', - browse: 'przeglądaj', - csvStructureTitle: 'Plik CSV musi być zgodny z następującą strukturą:', - downloadTemplate: 'Pobierz szablon tutaj', - field: 'Pole', - batchFailed: { - info: '{{num}} nieudanych wykonan', - retry: 'Powtórz', - outputPlaceholder: 'Brak treści wyjściowej', - }, - errorMsg: { - empty: 'Proszę wprowadź treść w załadowanym pliku.', - fileStructNotMatch: 'Załadowany plik CSV nie pasuje do struktury.', - emptyLine: 'Wiersz {{rowIndex}} jest pusty', - invalidLine: - 'Wiersz {{rowIndex}}: wartość {{varName}} nie może być pusta', - moreThanMaxLengthLine: - 'Wiersz {{rowIndex}}: wartość {{varName}} nie może mieć więcej niż {{maxLength}} znaków', - atLeastOne: - 'Proszę wprowadź co najmniej jeden wiersz w załadowanym pliku.', - }, - execution: 'Uruchom', - executions: '{{num}} uruchomień', - stopRun: 'Zatrzymaj wykonanie', - }, - login: { - backToHome: 'Powrót do strony głównej', - }, -} - -export default translation diff --git a/web/i18n/pl-PL/time.json b/web/i18n/pl-PL/time.json new file mode 100644 index 0000000000..d444572587 --- /dev/null +++ b/web/i18n/pl-PL/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Thu": "Czw", + "Tue": "Wtorek", + "Mon": "Mon", + "Sun": "Słońce", + "Fri": "Wolny", + "Sat": "Sat", + "Wed": "Środa" + }, + "months": { + "July": "lipiec", + "January": "Styczeń", + "August": "Sierpień", + "February": "Luty", + "October": "Październik", + "April": "Kwiecień", + "December": "Grudzień", + "March": "Marzec", + "May": "Maj", + "September": "Wrzesień", + "June": "Czerwiec", + "November": "Listopad" + }, + "operation": { + "cancel": "Anuluj", + "pickDate": "Wybierz datę", + "now": "Teraz", + "ok": "OK" + }, + "title": { + "pickTime": "Wybierz czas" + }, + "defaultPlaceholder": "Wybierz czas...", + "dateFormats": { + "output": "RRRR-MM-DD", + "displayWithTime": "MMMM D, YYYY hh:mm A", + "display": "MMMM D, YYYY", + "input": "RRRR-MM-DD", + "outputWithTime": "RRRR-MM-DDTHH:mm:ss.SSSZ" + } +} diff --git a/web/i18n/pl-PL/time.ts b/web/i18n/pl-PL/time.ts deleted file mode 100644 index 6cb300a162..0000000000 --- a/web/i18n/pl-PL/time.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - daysInWeek: { - Thu: 'Czw', - Tue: 'Wtorek', - Mon: 'Mon', - Sun: 'Słońce', - Fri: 'Wolny', - Sat: 'Sat', - Wed: 'Środa', - }, - months: { - July: 'lipiec', - January: 'Styczeń', - August: 'Sierpień', - February: 'Luty', - October: 'Październik', - April: 'Kwiecień', - December: 'Grudzień', - March: 'Marzec', - May: 'Maj', - September: 'Wrzesień', - June: 'Czerwiec', - November: 'Listopad', - }, - operation: { - cancel: 'Anuluj', - pickDate: 'Wybierz datę', - now: 'Teraz', - ok: 'OK', - }, - title: { - pickTime: 'Wybierz czas', - }, - defaultPlaceholder: 'Wybierz czas...', - dateFormats: { - output: 'RRRR-MM-DD', - displayWithTime: 'MMMM D, YYYY hh:mm A', - display: 'MMMM D, YYYY', - input: 'RRRR-MM-DD', - outputWithTime: 'RRRR-MM-DDTHH:mm:ss.SSSZ', - }, -} - -export default translation diff --git a/web/i18n/pl-PL/tools.json b/web/i18n/pl-PL/tools.json new file mode 100644 index 0000000000..26ff116050 --- /dev/null +++ b/web/i18n/pl-PL/tools.json @@ -0,0 +1,262 @@ +{ + "title": "Narzędzia", + "createCustomTool": "Utwórz niestandardowe narzędzie", + "type": { + "builtIn": "Wbudowane", + "custom": "Niestandardowe", + "workflow": "Przepływ pracy" + }, + "contribute": { + "line1": "Interesuje mnie ", + "line2": "współtworzenie narzędzi dla Dify.", + "viewGuide": "Zobacz przewodnik" + }, + "author": "Przez", + "auth": { + "authorized": "Zautoryzowane", + "setup": "Skonfiguruj autoryzację aby użyć", + "setupModalTitle": "Konfiguruj autoryzację", + "setupModalTitleDescription": "Po skonfigurowaniu poświadczeń wszyscy członkowie w przestrzeni roboczej mogą używać tego narzędzia podczas projektowania aplikacji." + }, + "includeToolNum": "{{num}} narzędzi zawarte", + "createTool": { + "title": "Utwórz niestandardowe narzędzie", + "editAction": "Konfiguruj", + "editTitle": "Edytuj niestandardowe narzędzie", + "name": "Nazwa", + "toolNamePlaceHolder": "Wprowadź nazwę narzędzia", + "schema": "Schemat", + "schemaPlaceHolder": "Wprowadź tutaj swój schemat OpenAPI", + "viewSchemaSpec": "Zobacz specyfikację OpenAPI-Swagger", + "importFromUrl": "Importuj z adresu URL", + "importFromUrlPlaceHolder": "https://...", + "urlError": "Proszę podać prawidłowy URL", + "examples": "Przykłady", + "exampleOptions": { + "json": "Pogoda (JSON)", + "yaml": "Sklep Zoologiczny (YAML)", + "blankTemplate": "Pusty szablon" + }, + "availableTools": { + "title": "Dostępne narzędzia", + "name": "Nazwa", + "description": "Opis", + "method": "Metoda", + "path": "Ścieżka", + "action": "Akcje", + "test": "Test" + }, + "authMethod": { + "title": "Metoda autoryzacji", + "type": "Typ autoryzacji", + "keyTooltip": "Klucz nagłówka HTTP, Możesz pozostawić go z \"Autoryzacja\" jeśli nie wiesz co to jest lub ustaw go na niestandardową wartość", + "types": { + "none": "Brak", + "apiKeyPlaceholder": "Nazwa nagłówka HTTP dla Klucza API", + "apiValuePlaceholder": "Wprowadź Klucz API", + "api_key_query": "Parametr zapytania", + "api_key_header": "Nagłówek", + "queryParamPlaceholder": "Nazwa parametru zapytania dla klucza API" + }, + "key": "Klucz", + "value": "Wartość", + "queryParam": "Parametr zapytania", + "queryParamTooltip": "Nazwa parametru zapytania klucza API do przekazania, np. \"key\" w \"https://example.com/test?key=API_KEY\"." + }, + "authHeaderPrefix": { + "title": "Typ autoryzacji", + "types": { + "basic": "Podstawowa", + "bearer": "Bearer", + "custom": "Niestandardowa" + } + }, + "privacyPolicy": "Polityka prywatności", + "privacyPolicyPlaceholder": "Proszę wprowadzić politykę prywatności", + "customDisclaimer": "Oświadczenie niestandardowe", + "customDisclaimerPlaceholder": "Proszę wprowadzić oświadczenie niestandardowe", + "deleteToolConfirmTitle": "Skasuj ten przyrząd?", + "deleteToolConfirmContent": "Usunięcie narzędzia jest nieodwracalne. Użytkownicy nie będą mieli już dostępu do Twojego narzędzia.", + "toolInput": { + "name": "Nazwa", + "required": "Wymagane", + "descriptionPlaceholder": "Opis znaczenia parametru", + "methodParameter": "Parametr", + "label": "Tagi", + "methodSetting": "Ustawienie", + "description": "Opis", + "method": "Metoda", + "methodParameterTip": "LLM wypełnia się podczas wnioskowania", + "labelPlaceholder": "Wybierz tagi (opcjonalnie)", + "methodSettingTip": "Użytkownik wypełnia konfigurację narzędzia", + "title": "Wprowadzanie narzędzi" + }, + "nameForToolCall": "Nazwa wywołania narzędzia", + "description": "Opis", + "descriptionPlaceholder": "Krótki opis przeznaczenia narzędzia, np. zmierz temperaturę dla konkretnej lokalizacji.", + "nameForToolCallTip": "Obsługuje tylko cyfry, litery i podkreślenia.", + "nameForToolCallPlaceHolder": "Służy do rozpoznawania maszyn, takich jak getCurrentWeather, list_pets", + "confirmTip": "Będzie to miało wpływ na aplikacje korzystające z tego narzędzia", + "confirmTitle": "Potwierdź, aby zapisać ?", + "toolOutput": { + "title": "Wynik narzędzia", + "name": "Nazwa", + "reserved": "Zarezerwowane", + "reservedParameterDuplicateTip": "text, json i pliki są zastrzeżonymi zmiennymi. Zmienne o tych nazwach nie mogą pojawiać się w schemacie wyjściowym.", + "description": "Opis" + } + }, + "test": { + "title": "Test", + "parametersValue": "Parametry i Wartość", + "parameters": "Parametry", + "value": "Wartość", + "testResult": "Wyniki testu", + "testResultPlaceholder": "Wynik testu pojawi się tutaj" + }, + "thought": { + "using": "Używanie", + "used": "Użyty", + "requestTitle": "Żądanie do", + "responseTitle": "Odpowiedź od" + }, + "setBuiltInTools": { + "info": "Informacje", + "setting": "Ustawienia", + "toolDescription": "Opis narzędzia", + "parameters": "parametry", + "string": "ciąg znaków", + "number": "liczba", + "required": "Wymagane", + "infoAndSetting": "Informacje i Ustawienia", + "file": "plik" + }, + "noCustomTool": { + "title": "Brak niestandardowych narzędzi!", + "content": "Dodaj i zarządzaj niestandardowymi narzędziami tutaj, aby budować aplikacje AI.", + "createTool": "Utwórz Narzędzie" + }, + "noSearchRes": { + "title": "Przykro nam, brak wyników!", + "content": "Nie znaleźliśmy żadnych narzędzi pasujących do Twojego wyszukiwania.", + "reset": "Resetuj Wyszukiwanie" + }, + "builtInPromptTitle": "Komunikat", + "toolRemoved": "Narzędzie usunięte", + "notAuthorized": "Narzędzie nieautoryzowane", + "howToGet": "Jak uzyskać", + "addToolModal": { + "added": "Dodane", + "type": "typ", + "category": "kategoria", + "custom": { + "title": "Brak dostępnego narzędzia niestandardowego", + "tip": "Utwórz narzędzie niestandardowe" + }, + "workflow": { + "title": "Brak dostępnego narzędzia workflow", + "tip": "Publikuj przepływy pracy jako narzędzia w Studio" + }, + "mcp": { + "title": "Brak dostępnego narzędzia MCP", + "tip": "Dodaj serwer MCP" + }, + "agent": { + "title": "Brak dostępnej strategii agenta" + } + }, + "openInStudio": "Otwieranie w Studio", + "customToolTip": "Dowiedz się więcej o niestandardowych narzędziach Dify", + "toolNameUsageTip": "Nazwa wywołania narzędzia do wnioskowania i podpowiadania agentowi", + "noTools": "Nie znaleziono narzędzi", + "copyToolName": "Kopiuj nazwę", + "mcp": { + "create": { + "cardTitle": "Dodaj serwer MCP (HTTP)", + "cardLink": "Dowiedz się więcej o integracji serwera MCP" + }, + "noConfigured": "Serwer nieskonfigurowany", + "updateTime": "Zaktualizowano", + "toolsCount": "{count} narzędzi", + "noTools": "Brak dostępnych narzędzi", + "modal": { + "title": "Dodaj serwer MCP (HTTP)", + "editTitle": "Edytuj serwer MCP (HTTP)", + "name": "Nazwa i ikona", + "namePlaceholder": "Nazwij swój serwer MCP", + "serverUrl": "URL serwera", + "serverUrlPlaceholder": "URL do punktu końcowego serwera", + "serverUrlWarning": "Aktualizacja adresu serwera może zakłócić działanie aplikacji od niego zależnych", + "serverIdentifier": "Identyfikator serwera", + "serverIdentifierTip": "Unikalny identyfikator serwera MCP w obszarze roboczym. Tylko małe litery, cyfry, podkreślenia i myślniki. Maks. 24 znaki.", + "serverIdentifierPlaceholder": "Unikalny identyfikator, np. my-mcp-server", + "serverIdentifierWarning": "Po zmianie ID serwer nie będzie rozpoznawany przez istniejące aplikacje", + "cancel": "Anuluj", + "save": "Zapisz", + "confirm": "Dodaj i autoryzuj", + "timeout": "Limit czasu", + "sseReadTimeout": "Przekroczenie czasu oczekiwania na odczyt SSE", + "addHeader": "Dodaj nagłówek", + "headers": "Nagłówki", + "headerKeyPlaceholder": "np. Autoryzacja", + "timeoutPlaceholder": "trzydzieści", + "headerValuePlaceholder": "np. Token dostępu 123", + "headerKey": "Nazwa nagłówka", + "headersTip": "Dodatkowe nagłówki HTTP do wysłania z żądaniami serwera MCP", + "headerValue": "Wartość nagłówka", + "noHeaders": "Brak skonfigurowanych nagłówków niestandardowych", + "maskedHeadersTip": "Wartości nagłówków są ukryte dla bezpieczeństwa. Zmiany zaktualizują rzeczywiste wartości.", + "configurations": "Konfiguracje", + "authentication": "Uwierzytelnianie", + "clientSecretPlaceholder": "Tajny klucz klienta", + "clientSecret": "Tajny klucz klienta", + "useDynamicClientRegistration": "Użyj dynamicznej rejestracji klienta", + "clientID": "ID klienta", + "redirectUrlWarning": "Proszę skonfigurować swój adres URL przekierowania OAuth na:" + }, + "delete": "Usuń serwer MCP", + "deleteConfirmTitle": "Usunąć {mcp}?", + "operation": { + "edit": "Edytuj", + "remove": "Usuń" + }, + "authorize": "Autoryzuj", + "authorizing": "Autoryzowanie...", + "authorizingRequired": "Wymagana autoryzacja", + "authorizeTip": "Po autoryzacji narzędzia będą wyświetlane tutaj.", + "update": "Aktualizuj", + "updating": "Aktualizowanie...", + "gettingTools": "Pobieranie narzędzi...", + "updateTools": "Aktualizowanie narzędzi...", + "toolsEmpty": "Narzędzia niezaładowane", + "getTools": "Pobierz narzędzia", + "toolUpdateConfirmTitle": "Aktualizuj listę narzędzi", + "toolUpdateConfirmContent": "Aktualizacja listy narzędzi może wpłynąć na istniejące aplikacje. Kontynuować?", + "toolsNum": "{count} narzędzi zawartych", + "onlyTool": "1 narzędzie zawarte", + "identifier": "Identyfikator serwera (Kliknij, aby skopiować)", + "server": { + "title": "Serwer MCP", + "url": "URL serwera", + "reGen": "Wygenerować ponownie URL serwera?", + "addDescription": "Dodaj opis", + "edit": "Edytuj opis", + "modal": { + "addTitle": "Dodaj opis, aby aktywować serwer MCP", + "editTitle": "Edytuj opis", + "description": "Opis", + "descriptionPlaceholder": "Wyjaśnij funkcjonalność tego narzędzia i sposób użycia przez LLM", + "parameters": "Parametry", + "parametersTip": "Dodaj opisy każdego parametru, aby pomóc LLM zrozumieć ich cel i ograniczenia.", + "parametersPlaceholder": "Cel i ograniczenia parametru", + "confirm": "Aktywuj serwer MCP" + }, + "publishTip": "Aplikacja nieopublikowana. Najpierw opublikuj aplikację." + }, + "toolItem": { + "parameters": "Parametry", + "noDescription": "Brak opisu" + } + }, + "allTools": "Wszystkie narzędzia" +} diff --git a/web/i18n/pl-PL/tools.ts b/web/i18n/pl-PL/tools.ts deleted file mode 100644 index 4d9328b0b5..0000000000 --- a/web/i18n/pl-PL/tools.ts +++ /dev/null @@ -1,268 +0,0 @@ -const translation = { - title: 'Narzędzia', - createCustomTool: 'Utwórz niestandardowe narzędzie', - type: { - builtIn: 'Wbudowane', - custom: 'Niestandardowe', - workflow: 'Przepływ pracy', - }, - contribute: { - line1: 'Interesuje mnie ', - line2: 'współtworzenie narzędzi dla Dify.', - viewGuide: 'Zobacz przewodnik', - }, - author: 'Przez', - auth: { - authorized: 'Zautoryzowane', - setup: 'Skonfiguruj autoryzację aby użyć', - setupModalTitle: 'Konfiguruj autoryzację', - setupModalTitleDescription: - 'Po skonfigurowaniu poświadczeń wszyscy członkowie w przestrzeni roboczej mogą używać tego narzędzia podczas projektowania aplikacji.', - }, - includeToolNum: '{{num}} narzędzi zawarte', - createTool: { - title: 'Utwórz niestandardowe narzędzie', - editAction: 'Konfiguruj', - editTitle: 'Edytuj niestandardowe narzędzie', - name: 'Nazwa', - toolNamePlaceHolder: 'Wprowadź nazwę narzędzia', - schema: 'Schemat', - schemaPlaceHolder: 'Wprowadź tutaj swój schemat OpenAPI', - viewSchemaSpec: 'Zobacz specyfikację OpenAPI-Swagger', - importFromUrl: 'Importuj z adresu URL', - importFromUrlPlaceHolder: 'https://...', - urlError: 'Proszę podać prawidłowy URL', - examples: 'Przykłady', - exampleOptions: { - json: 'Pogoda (JSON)', - yaml: 'Sklep Zoologiczny (YAML)', - blankTemplate: 'Pusty szablon', - }, - availableTools: { - title: 'Dostępne narzędzia', - name: 'Nazwa', - description: 'Opis', - method: 'Metoda', - path: 'Ścieżka', - action: 'Akcje', - test: 'Test', - }, - authMethod: { - title: 'Metoda autoryzacji', - type: 'Typ autoryzacji', - keyTooltip: - 'Klucz nagłówka HTTP, Możesz pozostawić go z "Autoryzacja" jeśli nie wiesz co to jest lub ustaw go na niestandardową wartość', - types: { - none: 'Brak', - apiKeyPlaceholder: 'Nazwa nagłówka HTTP dla Klucza API', - apiValuePlaceholder: 'Wprowadź Klucz API', - api_key_query: 'Parametr zapytania', - api_key_header: 'Nagłówek', - queryParamPlaceholder: 'Nazwa parametru zapytania dla klucza API', - }, - key: 'Klucz', - value: 'Wartość', - queryParam: 'Parametr zapytania', - queryParamTooltip: 'Nazwa parametru zapytania klucza API do przekazania, np. "key" w "https://example.com/test?key=API_KEY".', - }, - authHeaderPrefix: { - title: 'Typ autoryzacji', - types: { - basic: 'Podstawowa', - bearer: 'Bearer', - custom: 'Niestandardowa', - }, - }, - privacyPolicy: 'Polityka prywatności', - privacyPolicyPlaceholder: 'Proszę wprowadzić politykę prywatności', - customDisclaimer: 'Oświadczenie niestandardowe', - customDisclaimerPlaceholder: 'Proszę wprowadzić oświadczenie niestandardowe', - deleteToolConfirmTitle: 'Skasuj ten przyrząd?', - deleteToolConfirmContent: 'Usunięcie narzędzia jest nieodwracalne. Użytkownicy nie będą mieli już dostępu do Twojego narzędzia.', - toolInput: { - name: 'Nazwa', - required: 'Wymagane', - descriptionPlaceholder: 'Opis znaczenia parametru', - methodParameter: 'Parametr', - label: 'Tagi', - methodSetting: 'Ustawienie', - description: 'Opis', - method: 'Metoda', - methodParameterTip: 'LLM wypełnia się podczas wnioskowania', - labelPlaceholder: 'Wybierz tagi (opcjonalnie)', - methodSettingTip: 'Użytkownik wypełnia konfigurację narzędzia', - title: 'Wprowadzanie narzędzi', - }, - nameForToolCall: 'Nazwa wywołania narzędzia', - description: 'Opis', - descriptionPlaceholder: 'Krótki opis przeznaczenia narzędzia, np. zmierz temperaturę dla konkretnej lokalizacji.', - nameForToolCallTip: 'Obsługuje tylko cyfry, litery i podkreślenia.', - nameForToolCallPlaceHolder: 'Służy do rozpoznawania maszyn, takich jak getCurrentWeather, list_pets', - confirmTip: 'Będzie to miało wpływ na aplikacje korzystające z tego narzędzia', - confirmTitle: 'Potwierdź, aby zapisać ?', - toolOutput: { - title: 'Wynik narzędzia', - name: 'Nazwa', - reserved: 'Zarezerwowane', - reservedParameterDuplicateTip: 'text, json i pliki są zastrzeżonymi zmiennymi. Zmienne o tych nazwach nie mogą pojawiać się w schemacie wyjściowym.', - description: 'Opis', - }, - }, - test: { - title: 'Test', - parametersValue: 'Parametry i Wartość', - parameters: 'Parametry', - value: 'Wartość', - testResult: 'Wyniki testu', - testResultPlaceholder: 'Wynik testu pojawi się tutaj', - }, - thought: { - using: 'Używanie', - used: 'Użyty', - requestTitle: 'Żądanie do', - responseTitle: 'Odpowiedź od', - }, - setBuiltInTools: { - info: 'Informacje', - setting: 'Ustawienia', - toolDescription: 'Opis narzędzia', - parameters: 'parametry', - string: 'ciąg znaków', - number: 'liczba', - required: 'Wymagane', - infoAndSetting: 'Informacje i Ustawienia', - file: 'plik', - }, - noCustomTool: { - title: 'Brak niestandardowych narzędzi!', - content: - 'Dodaj i zarządzaj niestandardowymi narzędziami tutaj, aby budować aplikacje AI.', - createTool: 'Utwórz Narzędzie', - }, - noSearchRes: { - title: 'Przykro nam, brak wyników!', - content: - 'Nie znaleźliśmy żadnych narzędzi pasujących do Twojego wyszukiwania.', - reset: 'Resetuj Wyszukiwanie', - }, - builtInPromptTitle: 'Komunikat', - toolRemoved: 'Narzędzie usunięte', - notAuthorized: 'Narzędzie nieautoryzowane', - howToGet: 'Jak uzyskać', - addToolModal: { - added: 'Dodane', - type: 'typ', - category: 'kategoria', - custom: { - title: 'Brak dostępnego narzędzia niestandardowego', - tip: 'Utwórz narzędzie niestandardowe', - }, - workflow: { - title: 'Brak dostępnego narzędzia workflow', - tip: 'Publikuj przepływy pracy jako narzędzia w Studio', - }, - mcp: { - title: 'Brak dostępnego narzędzia MCP', - tip: 'Dodaj serwer MCP', - }, - agent: { - title: 'Brak dostępnej strategii agenta', - }, - }, - openInStudio: 'Otwieranie w Studio', - customToolTip: 'Dowiedz się więcej o niestandardowych narzędziach Dify', - toolNameUsageTip: 'Nazwa wywołania narzędzia do wnioskowania i podpowiadania agentowi', - noTools: 'Nie znaleziono narzędzi', - copyToolName: 'Kopiuj nazwę', - mcp: { - create: { - cardTitle: 'Dodaj serwer MCP (HTTP)', - cardLink: 'Dowiedz się więcej o integracji serwera MCP', - }, - noConfigured: 'Serwer nieskonfigurowany', - updateTime: 'Zaktualizowano', - toolsCount: '{count} narzędzi', - noTools: 'Brak dostępnych narzędzi', - modal: { - title: 'Dodaj serwer MCP (HTTP)', - editTitle: 'Edytuj serwer MCP (HTTP)', - name: 'Nazwa i ikona', - namePlaceholder: 'Nazwij swój serwer MCP', - serverUrl: 'URL serwera', - serverUrlPlaceholder: 'URL do punktu końcowego serwera', - serverUrlWarning: 'Aktualizacja adresu serwera może zakłócić działanie aplikacji od niego zależnych', - serverIdentifier: 'Identyfikator serwera', - serverIdentifierTip: 'Unikalny identyfikator serwera MCP w obszarze roboczym. Tylko małe litery, cyfry, podkreślenia i myślniki. Maks. 24 znaki.', - serverIdentifierPlaceholder: 'Unikalny identyfikator, np. my-mcp-server', - serverIdentifierWarning: 'Po zmianie ID serwer nie będzie rozpoznawany przez istniejące aplikacje', - cancel: 'Anuluj', - save: 'Zapisz', - confirm: 'Dodaj i autoryzuj', - timeout: 'Limit czasu', - sseReadTimeout: 'Przekroczenie czasu oczekiwania na odczyt SSE', - addHeader: 'Dodaj nagłówek', - headers: 'Nagłówki', - headerKeyPlaceholder: 'np. Autoryzacja', - timeoutPlaceholder: 'trzydzieści', - headerValuePlaceholder: 'np. Token dostępu 123', - headerKey: 'Nazwa nagłówka', - headersTip: 'Dodatkowe nagłówki HTTP do wysłania z żądaniami serwera MCP', - headerValue: 'Wartość nagłówka', - noHeaders: 'Brak skonfigurowanych nagłówków niestandardowych', - maskedHeadersTip: 'Wartości nagłówków są ukryte dla bezpieczeństwa. Zmiany zaktualizują rzeczywiste wartości.', - configurations: 'Konfiguracje', - authentication: 'Uwierzytelnianie', - clientSecretPlaceholder: 'Tajny klucz klienta', - clientSecret: 'Tajny klucz klienta', - useDynamicClientRegistration: 'Użyj dynamicznej rejestracji klienta', - clientID: 'ID klienta', - redirectUrlWarning: 'Proszę skonfigurować swój adres URL przekierowania OAuth na:', - }, - delete: 'Usuń serwer MCP', - deleteConfirmTitle: 'Usunąć {mcp}?', - operation: { - edit: 'Edytuj', - remove: 'Usuń', - }, - authorize: 'Autoryzuj', - authorizing: 'Autoryzowanie...', - authorizingRequired: 'Wymagana autoryzacja', - authorizeTip: 'Po autoryzacji narzędzia będą wyświetlane tutaj.', - update: 'Aktualizuj', - updating: 'Aktualizowanie...', - gettingTools: 'Pobieranie narzędzi...', - updateTools: 'Aktualizowanie narzędzi...', - toolsEmpty: 'Narzędzia niezaładowane', - getTools: 'Pobierz narzędzia', - toolUpdateConfirmTitle: 'Aktualizuj listę narzędzi', - toolUpdateConfirmContent: 'Aktualizacja listy narzędzi może wpłynąć na istniejące aplikacje. Kontynuować?', - toolsNum: '{count} narzędzi zawartych', - onlyTool: '1 narzędzie zawarte', - identifier: 'Identyfikator serwera (Kliknij, aby skopiować)', - server: { - title: 'Serwer MCP', - url: 'URL serwera', - reGen: 'Wygenerować ponownie URL serwera?', - addDescription: 'Dodaj opis', - edit: 'Edytuj opis', - modal: { - addTitle: 'Dodaj opis, aby aktywować serwer MCP', - editTitle: 'Edytuj opis', - description: 'Opis', - descriptionPlaceholder: 'Wyjaśnij funkcjonalność tego narzędzia i sposób użycia przez LLM', - parameters: 'Parametry', - parametersTip: 'Dodaj opisy każdego parametru, aby pomóc LLM zrozumieć ich cel i ograniczenia.', - parametersPlaceholder: 'Cel i ograniczenia parametru', - confirm: 'Aktywuj serwer MCP', - }, - publishTip: 'Aplikacja nieopublikowana. Najpierw opublikuj aplikację.', - }, - toolItem: { - parameters: 'Parametry', - noDescription: 'Brak opisu', - }, - }, - allTools: 'Wszystkie narzędzia', -} - -export default translation diff --git a/web/i18n/pl-PL/workflow.json b/web/i18n/pl-PL/workflow.json new file mode 100644 index 0000000000..06f1409840 --- /dev/null +++ b/web/i18n/pl-PL/workflow.json @@ -0,0 +1,1294 @@ +{ + "common": { + "undo": "Cofnij", + "redo": "Ponów", + "editing": "Edytowanie", + "autoSaved": "Automatycznie zapisane", + "unpublished": "Nieopublikowane", + "published": "Opublikowane", + "publish": "Opublikuj", + "update": "Aktualizuj", + "run": "Uruchom test", + "running": "Uruchamianie", + "inRunMode": "W trybie uruchamiania", + "inPreview": "W podglądzie", + "inPreviewMode": "W trybie podglądu", + "preview": "Podgląd", + "viewRunHistory": "Zobacz historię uruchomień", + "runHistory": "Historia uruchomień", + "goBackToEdit": "Wróć do edytora", + "conversationLog": "Dziennik rozmów", + "debugAndPreview": "Podgląd", + "restart": "Uruchom ponownie", + "currentDraft": "Bieżący szkic", + "currentDraftUnpublished": "Bieżący szkic nieopublikowany", + "latestPublished": "Najnowsze opublikowane", + "publishedAt": "Opublikowane", + "restore": "Przywróć", + "runApp": "Uruchom aplikację", + "batchRunApp": "Uruchom aplikację wsadowo", + "accessAPIReference": "Uzyskaj dostęp do dokumentacji API", + "embedIntoSite": "Osadź na stronie", + "addTitle": "Dodaj tytuł...", + "addDescription": "Dodaj opis...", + "noVar": "Brak zmiennej", + "searchVar": "Szukaj zmiennej", + "variableNamePlaceholder": "Nazwa zmiennej", + "setVarValuePlaceholder": "Ustaw zmienną", + "needConnectTip": "Ten krok nie jest połączony z niczym", + "maxTreeDepth": "Maksymalny limit {{depth}} węzłów na gałąź", + "workflowProcess": "Proces przepływu pracy", + "notRunning": "Jeszcze nie uruchomiono", + "previewPlaceholder": "Wprowadź treść w poniższym polu, aby rozpocząć debugowanie Chatbota", + "effectVarConfirm": { + "title": "Usuń zmienną", + "content": "Zmienna jest używana w innych węzłach. Czy na pewno chcesz ją usunąć?" + }, + "insertVarTip": "Naciśnij klawisz '/', aby szybko wstawić", + "processData": "Przetwórz dane", + "input": "Wejście", + "output": "Wyjście", + "jinjaEditorPlaceholder": "Naciśnij '/' lub '{', aby wstawić zmienną", + "viewOnly": "Tylko do podglądu", + "showRunHistory": "Pokaż historię uruchomień", + "enableJinja": "Włącz obsługę szablonów Jinja", + "learnMore": "Dowiedz się więcej", + "copy": "Kopiuj", + "duplicate": "Duplikuj", + "pasteHere": "Wklej tutaj", + "pointerMode": "Tryb wskaźnika", + "handMode": "Tryb ręczny", + "model": "Model", + "workflowAsTool": "Przepływ pracy jako narzędzie", + "configureRequired": "Wymagana konfiguracja", + "configure": "Skonfiguruj", + "manageInTools": "Zarządzaj w narzędziach", + "workflowAsToolTip": "Wymagana rekonfiguracja narzędzia po aktualizacji przepływu pracy.", + "viewDetailInTracingPanel": "Zobacz szczegóły", + "importDSLTip": "Bieżąca wersja robocza zostanie nadpisana. Eksportuj przepływ pracy jako kopię zapasową przed zaimportowaniem.", + "syncingData": "Synchronizacja danych w zaledwie kilka sekund.", + "importSuccess": "Import powodzenie", + "importDSL": "Importowanie DSL", + "overwriteAndImport": "Nadpisywanie i importowanie", + "chooseDSL": "Wybierz plik DSL(yml)", + "backupCurrentDraft": "Utwórz kopię zapasową bieżącej wersji roboczej", + "importFailure": "Niepowodzenie importu", + "parallelTip": { + "click": { + "title": "Klikać", + "desc": ", aby dodać" + }, + "drag": { + "title": "Przeciągnąć", + "desc": "aby się połączyć" + }, + "limit": "Równoległość jest ograniczona do gałęzi {{num}}.", + "depthLimit": "Limit warstw zagnieżdżania równoległego dla warstw {{num}}" + }, + "jumpToNode": "Przejdź do tego węzła", + "disconnect": "Odłączyć", + "addParallelNode": "Dodaj węzeł równoległy", + "parallel": "RÓWNOLEGŁY", + "branch": "GAŁĄŹ", + "ImageUploadLegacyTip": "Teraz można tworzyć zmienne typu pliku w formularzu startowym. W przyszłości nie będziemy już obsługiwać funkcji przesyłania obrazów.", + "fileUploadTip": "Funkcje przesyłania obrazów zostały zaktualizowane do przesyłania plików.", + "importWarning": "Ostrożność", + "importWarningDetails": "Różnica w wersji DSL może mieć wpływ na niektóre funkcje", + "openInExplore": "Otwieranie w obszarze Eksploruj", + "onFailure": "W przypadku niepowodzenia", + "addFailureBranch": "Dodawanie gałęzi niepowodzenia", + "loadMore": "Załaduj więcej przepływów pracy", + "noHistory": "Brak historii", + "exportImage": "Eksportuj obraz", + "exitVersions": "Wersje wyjścia", + "versionHistory": "Historia wersji", + "exportSVG": "Eksportuj jako SVG", + "exportJPEG": "Eksportuj jako JPEG", + "exportPNG": "Eksportuj jako PNG", + "publishUpdate": "Opublikuj aktualizację", + "addBlock": "Dodaj węzeł", + "needOutputNode": "Należy dodać węzeł wyjściowy", + "needAnswerNode": "Węzeł odpowiedzi musi zostać dodany", + "tagBound": "Liczba aplikacji korzystających z tego tagu", + "currentWorkflow": "Bieżący przepływ pracy", + "currentView": "Bieżący widok", + "moreActions": "Więcej akcji", + "listening": "Słuchanie", + "chooseStartNodeToRun": "Wybierz węzeł początkowy, aby uruchomić", + "runAllTriggers": "Uruchom wszystkie wyzwalacze", + "features": "Cechy", + "featuresDescription": "Ulepsz doświadczenie użytkownika w aplikacji internetowej", + "featuresDocLink": "Dowiedz się więcej", + "needAdd": "Węzeł {{node}} musi zostać dodany", + "needStartNode": "Należy dodać co najmniej jeden węzeł początkowy", + "workflowAsToolDisabledHint": "Opublikuj najnowszy przepływ pracy i upewnij się, że węzeł Wprowadzanie danych użytkownika jest połączony przed skonfigurowaniem go jako narzędzie." + }, + "env": { + "envPanelTitle": "Zmienne Środowiskowe", + "envDescription": "Zmienne środowiskowe mogą być używane do przechowywania prywatnych informacji i poświadczeń. Są one tylko do odczytu i mogą być oddzielone od pliku DSL podczas eksportu.", + "envPanelButton": "Dodaj Zmienną", + "modal": { + "title": "Dodaj Zmienną Środowiskową", + "editTitle": "Edytuj Zmienną Środowiskową", + "type": "Typ", + "name": "Nazwa", + "namePlaceholder": "nazwa środowiska", + "value": "Wartość", + "valuePlaceholder": "wartość środowiska", + "secretTip": "Używane do definiowania wrażliwych informacji lub danych, z ustawieniami DSL skonfigurowanymi do zapobiegania wyciekom.", + "description": "Opis", + "descriptionPlaceholder": "Opisz zmienną" + }, + "export": { + "title": "Eksportować tajne zmienne środowiskowe?", + "checkbox": "Eksportuj tajne wartości", + "ignore": "Eksportuj DSL", + "export": "Eksportuj DSL z tajnymi wartościami" + } + }, + "globalVar": { + "title": "Zmienne systemowe", + "description": "Zmienne systemowe to zmienne globalne, do których może odwołać się każdy węzeł bez okablowania, jeśli typ jest zgodny, na przykład identyfikator użytkownika końcowego i identyfikator przepływu pracy.", + "fieldsDescription": { + "conversationId": "ID konwersacji", + "dialogCount": "Liczba konwersacji", + "userId": "ID użytkownika", + "triggerTimestamp": "Znacznik czasu uruchomienia aplikacji", + "appId": "ID aplikacji", + "workflowId": "ID przepływu pracy", + "workflowRunId": "ID uruchomienia przepływu pracy" + } + }, + "chatVariable": { + "panelTitle": "Zmienne Konwersacji", + "panelDescription": "Zmienne Konwersacji służą do przechowywania interaktywnych informacji, które LLM musi pamiętać, w tym historii konwersacji, przesłanych plików, preferencji użytkownika. Są one do odczytu i zapisu.", + "docLink": "Odwiedź naszą dokumentację, aby dowiedzieć się więcej.", + "button": "Dodaj Zmienną", + "modal": { + "title": "Dodaj Zmienną Konwersacji", + "editTitle": "Edytuj Zmienną Konwersacji", + "name": "Nazwa", + "namePlaceholder": "Nazwa zmiennej", + "type": "Typ", + "value": "Wartość Domyślna", + "valuePlaceholder": "Wartość domyślna, pozostaw puste aby nie ustawiać", + "description": "Opis", + "descriptionPlaceholder": "Opisz zmienną", + "editInJSON": "Edytuj w JSON", + "oneByOne": "Dodawaj po kolei", + "editInForm": "Edytuj w Formularzu", + "arrayValue": "Wartość", + "addArrayValue": "Dodaj Wartość", + "objectKey": "Klucz", + "objectType": "Typ", + "objectValue": "Wartość Domyślna" + }, + "storedContent": "Przechowywana zawartość", + "updatedAt": "Zaktualizowano " + }, + "changeHistory": { + "title": "Historia Zmian", + "placeholder": "Nie dokonano jeszcze żadnych zmian", + "clearHistory": "Wyczyść Historię", + "hint": "Wskazówka", + "hintText": "Działania edycji są śledzone w historii zmian, która jest przechowywana na urządzeniu przez czas trwania tej sesji. Ta historia zostanie usunięta po opuszczeniu edytora.", + "stepBackward_one": "{{count}} krok do tyłu", + "stepBackward_other": "{{count}} kroki do tyłu", + "stepForward_one": "{{count}} krok do przodu", + "stepForward_other": "{{count}} kroki do przodu", + "sessionStart": "Początek sesji", + "currentState": "Aktualny stan", + "noteAdd": "Notatka dodana", + "noteChange": "Notatka zmieniona", + "noteDelete": "Notatka usunięta", + "edgeDelete": "Węzeł rozłączony", + "nodeAdd": "Węzeł dodany", + "nodePaste": "Węzeł wklejony", + "nodeChange": "Węzeł zmieniony", + "nodeDelete": "Węzeł usunięty", + "nodeResize": "Węzeł zmieniony rozmiar", + "nodeConnect": "Węzeł połączony", + "nodeTitleChange": "Tytuł węzła zmieniony", + "nodeDescriptionChange": "Opis węzła zmieniony", + "nodeDragStop": "Węzeł przeniesiony" + }, + "errorMsg": { + "fieldRequired": "{{field}} jest wymagane", + "authRequired": "Wymagana autoryzacja", + "invalidJson": "{{field}} jest nieprawidłowym JSON-em", + "fields": { + "variable": "Nazwa zmiennej", + "variableValue": "Wartość zmiennej", + "code": "Kod", + "model": "Model", + "rerankModel": "Model rerank", + "visionVariable": "Zmienna wizji" + }, + "invalidVariable": "Nieprawidłowa zmienna", + "rerankModelRequired": "Przed włączeniem Rerank Model upewnij się, że model został pomyślnie skonfigurowany w ustawieniach.", + "noValidTool": "{{field}} nie wybrano prawidłowego narzędzia", + "toolParameterRequired": "{{field}}: parametr [{{param}}] jest wymagany", + "startNodeRequired": "Najpierw dodaj węzeł początkowy przed {{operation}}" + }, + "singleRun": { + "testRun": "Testowe uruchomienie ", + "startRun": "Rozpocznij uruchomienie", + "running": "Uruchamianie", + "testRunIteration": "Iteracja testowego uruchomienia", + "back": "Wstecz", + "iteration": "Iteracja", + "loop": "Pętla", + "preparingDataSource": "Przygotowywanie źródła danych", + "reRun": "Ponowne uruchomienie" + }, + "tabs": { + "tools": "Narzędzia", + "allTool": "Wszystkie", + "customTool": "Niestandardowe", + "workflowTool": "Przepływ pracy", + "question-understand": "Zrozumienie pytania", + "logic": "Logika", + "transform": "Transformacja", + "utilities": "Narzędzia pomocnicze", + "noResult": "Nie znaleziono dopasowań", + "searchTool": "Wyszukiwarka", + "agent": "Strategia agenta", + "plugin": "Wtyczka", + "searchBlock": "Wyszukaj węzeł", + "blocks": "Węzły", + "addAll": "Dodaj wszystko", + "allAdded": "Wszystko dodane", + "sources": "Źródeł", + "searchDataSource": "Wyszukiwanie w źródle danych", + "start": "Start", + "searchTrigger": "Wyzwalacze wyszukiwania...", + "allTriggers": "Wszystkie wyzwalacze", + "noPluginsFound": "Nie znaleziono żadnych wtyczek", + "requestToCommunity": "Prośby do społeczności", + "featuredTools": "Polecane", + "showMoreFeatured": "Pokaż więcej", + "showLessFeatured": "Pokaż mniej", + "installed": "Zainstalowano", + "pluginByAuthor": "Przez {{author}}", + "usePlugin": "Wybierz narzędzie", + "hideActions": "Ukryj narzędzia", + "noFeaturedPlugins": "Odkryj więcej narzędzi w Marketplace", + "noFeaturedTriggers": "Odkryj więcej wyzwalaczy w Marketplace", + "startDisabledTip": "Węzeł wyzwalacza i węzeł wprowadzania danych przez użytkownika wzajemnie się wykluczają." + }, + "blocks": { + "start": "Start", + "end": "Wyjście", + "answer": "Odpowiedź", + "llm": "LLM", + "knowledge-retrieval": "Wyszukiwanie wiedzy", + "question-classifier": "Klasyfikator pytań", + "if-else": "JEŚLI/W PRZECIWNYM WYPADKU", + "code": "Kod", + "template-transform": "Szablon", + "http-request": "Żądanie HTTP", + "variable-assigner": "Agregator zmiennych", + "variable-aggregator": "Agregator zmiennych", + "assigner": "Przypisywacz Zmiennych", + "iteration-start": "Początek iteracji", + "iteration": "Iteracja", + "parameter-extractor": "Ekstraktor parametrów", + "document-extractor": "Ekstraktor dokumentów", + "list-operator": "Operator listy", + "agent": "Agent", + "loop-start": "Początek pętli", + "loop-end": "Wyjście z pętli", + "loop": "Pętla", + "knowledge-index": "Baza wiedzy", + "datasource": "Źródło danych", + "originalStartNode": "oryginalny węzeł początkowy", + "trigger-schedule": "Wyzwalacz harmonogramu", + "trigger-webhook": "Wywołanie webhooka", + "trigger-plugin": "Wyzwalacz wtyczki" + }, + "blocksAbout": { + "start": "Zdefiniuj początkowe parametry uruchamiania przepływu pracy", + "end": "Zdefiniuj wyjście i typ wyniku przepływu pracy", + "answer": "Zdefiniuj treść odpowiedzi w rozmowie", + "llm": "Wywołaj duże modele językowe do odpowiadania na pytania lub przetwarzania języka naturalnego", + "knowledge-retrieval": "Pozwala na wyszukiwanie treści tekstowych związanych z pytaniami użytkowników z bazy wiedzy", + "question-classifier": "Zdefiniuj warunki klasyfikacji pytań użytkowników, LLM może definiować, jak rozmowa postępuje na podstawie opisu klasyfikacji", + "if-else": "Pozwala na podział przepływu pracy na dwie gałęzie na podstawie warunków if/else", + "code": "Wykonaj fragment kodu Python lub NodeJS, aby wdrożyć niestandardową logikę", + "template-transform": "Konwertuj dane na ciąg znaków przy użyciu składni szablonu Jinja", + "http-request": "Pozwala na wysyłanie żądań serwera za pomocą protokołu HTTP", + "variable-assigner": "Zbierz zmienne z wielu gałęzi do jednej zmiennej dla jednolitej konfiguracji węzłów końcowych.", + "assigner": "Węzeł przypisania zmiennych służy do przypisywania wartości do zmiennych zapisywalnych (takich jak zmienne konwersacji).", + "variable-aggregator": "Zbierz zmienne z wielu gałęzi do jednej zmiennej dla jednolitej konfiguracji węzłów końcowych.", + "iteration": "Wykonuj wielokrotne kroki na liście obiektów, aż wszystkie wyniki zostaną wypisane.", + "parameter-extractor": "Użyj LLM do wyodrębnienia strukturalnych parametrów z języka naturalnego do wywołań narzędzi lub żądań HTTP.", + "document-extractor": "Służy do analizowania przesłanych dokumentów w treści tekstowej, która jest łatwo zrozumiała dla LLM.", + "list-operator": "Służy do filtrowania lub sortowania zawartości tablicy.", + "agent": "Wywoływanie dużych modeli językowych w celu odpowiadania na pytania lub przetwarzania języka naturalnego", + "loop": "Wykonaj pętlę logiki, dopóki nie zostanie spełniony warunek zakończenia lub nie zostanie osiągnięta maksymalna liczba iteracji.", + "loop-end": "Odpowiada \"break\". Ten węzeł nie ma elementów konfiguracyjnych. Gdy ciało pętli dotrze do tego węzła, pętla zostaje zakończona.", + "knowledge-index": "Baza wiedzy o", + "datasource": "Informacje o źródle danych", + "trigger-schedule": "Wyzwalacz przepływu pracy oparty na czasie, który uruchamia przepływy pracy według harmonogramu", + "trigger-webhook": "Webhook Trigger odbiera przesyłki HTTP z systemów zewnętrznych, aby automatycznie uruchamiać procesy robocze.", + "trigger-plugin": "Wyzwalacz integracji zewnętrznej, który uruchamia przepływy pracy na podstawie zdarzeń z platformy zewnętrznej" + }, + "operator": { + "zoomIn": "Powiększ", + "zoomOut": "Pomniejsz", + "zoomTo50": "Powiększ do 50%", + "zoomTo100": "Powiększ do 100%", + "zoomToFit": "Dopasuj do ekranu", + "alignMiddle": "Środek", + "alignTop": "Do góry", + "distributeHorizontal": "Rozmieść poziomo", + "alignCenter": "Centrum", + "alignRight": "Prawy", + "alignNodes": "Wyrównywanie węzłów", + "selectionAlignment": "Wyrównanie zaznaczenia", + "horizontal": "Poziomy", + "distributeVertical": "Rozmieść pionowo", + "alignBottom": "Dół", + "alignLeft": "Lewy", + "vertical": "Pionowy" + }, + "panel": { + "userInputField": "Pole wprowadzania użytkownika", + "helpLink": "Pomoc", + "about": "O", + "createdBy": "Stworzone przez ", + "nextStep": "Następny krok", + "runThisStep": "Uruchom ten krok", + "checklist": "Lista kontrolna", + "checklistTip": "Upewnij się, że wszystkie problemy zostały rozwiązane przed opublikowaniem", + "checklistResolved": "Wszystkie problemy zostały rozwiązane", + "change": "Zmień", + "optional": "(opcjonalne)", + "selectNextStep": "Wybierz następny krok", + "addNextStep": "Dodaj następny krok w tym procesie roboczym", + "changeBlock": "Zmień węzeł", + "organizeBlocks": "Organizuj węzły", + "minimize": "Wyjdź z trybu pełnoekranowego", + "maximize": "Maksymalizuj płótno", + "scrollToSelectedNode": "Przewiń do wybranego węzła", + "optional_and_hidden": "(opcjonalne i ukryte)", + "goTo": "Idź do", + "startNode": "Węzeł początkowy", + "openWorkflow": "Otwórz przepływ pracy" + }, + "nodes": { + "common": { + "outputVars": "Zmienne wyjściowe", + "insertVarTip": "Wstaw zmienną", + "memory": { + "memory": "Pamięć", + "memoryTip": "Ustawienia pamięci rozmowy", + "windowSize": "Rozmiar okna", + "conversationRoleName": "Nazwa roli w rozmowie", + "user": "Prefiks użytkownika", + "assistant": "Prefiks asystenta" + }, + "memories": { + "title": "Pamięci", + "tip": "Pamięć rozmowy", + "builtIn": "Wbudowane" + }, + "errorHandle": { + "none": { + "desc": "Węzeł przestanie działać, jeśli wystąpi wyjątek i nie zostanie obsłużony", + "title": "Żaden" + }, + "defaultValue": { + "title": "Wartość domyślna", + "desc": "Gdy wystąpi błąd, określ statyczną zawartość wyjściową.", + "tip": "W przypadku błędu, zwróci wartość poniżej.", + "inLog": "Wyjątek węzła, wyprowadzanie zgodnie z wartościami domyślnymi.", + "output": "Wyjściowa wartość domyślna" + }, + "failBranch": { + "title": "Gałąź Fail (Gałąź Niepowodzenia", + "customize": "Przejdź do kanwy, aby dostosować logikę gałęzi niepowodzenia.", + "customizeTip": "Gdy gałąź fail jest aktywowana, wyjątki zgłaszane przez węzły nie zakończą procesu. Zamiast tego automatycznie wykona predefiniowaną gałąź niepowodzenia, co pozwoli Ci elastycznie dostarczać komunikaty o błędach, raporty, poprawki lub pomijać akcje.", + "inLog": "Wyjątek węzła, automatycznie wykona gałąź niepowodzenia. Dane wyjściowe węzła zwrócą typ błędu i komunikat o błędzie, a następnie przekażą je do podrzędnego.", + "desc": "Gdy wystąpi błąd, wykona gałąź wyjątku" + }, + "partialSucceeded": { + "tip": "W procesie {{num}} węzły działają nieprawidłowo, przejdź do śledzenia, aby sprawdzić dzienniki." + }, + "tip": "Strategia obsługi wyjątków, wyzwalana, gdy węzeł napotka wyjątek.", + "title": "Obsługa błędów" + }, + "retry": { + "retry": "Ponów próbę", + "maxRetries": "Maksymalna liczba ponownych prób", + "retryInterval": "Interwał ponawiania prób", + "retryTimes": "Ponów próbę {{times}} razy w przypadku niepowodzenia", + "retrying": "Ponawianie...", + "retrySuccessful": "Ponawianie próby powiodło się", + "retryFailed": "Ponawianie próby nie powiodło się", + "times": "razy", + "retries": "{{liczba}} Ponownych prób", + "retryOnFailure": "Ponawianie próby w przypadku niepowodzenia", + "retryFailedTimes": "{{times}} ponawianie prób nie powiodło się", + "ms": "Ms" + }, + "typeSwitch": { + "variable": "Użyj zmiennej", + "input": "Wartość wejściowa" + }, + "inputVars": "Zmienne wejściowe", + "pluginNotInstalled": "Wtyczka nie jest zainstalowana" + }, + "start": { + "required": "wymagane", + "inputField": "Pole wejściowe", + "builtInVar": "Wbudowane zmienne", + "outputVars": { + "query": "Wprowadzenie użytkownika", + "memories": { + "des": "Historia rozmowy", + "type": "typ wiadomości", + "content": "treść wiadomości" + }, + "files": "Lista plików" + }, + "noVarTip": "Ustaw wejścia, które mogą być używane w przepływie pracy" + }, + "end": { + "outputs": "Wyniki", + "output": { + "type": "typ wyniku", + "variable": "zmienna wyjściowa" + }, + "type": { + "none": "Brak", + "plain-text": "Zwykły tekst", + "structured": "Strukturalny" + } + }, + "answer": { + "answer": "Odpowiedź", + "outputVars": "Zmienne wyjściowe" + }, + "llm": { + "model": "model", + "variables": "zmienne", + "context": "kontekst", + "contextTooltip": "Możesz zaimportować wiedzę jako kontekst", + "notSetContextInPromptTip": "Aby włączyć funkcję kontekstu, wypełnij zmienną kontekstu w PROMPT.", + "prompt": "prompt", + "roleDescription": { + "system": "Podaj wysokopoziomowe instrukcje dla rozmowy", + "user": "Podaj instrukcje, zapytania lub dowolne tekstowe wejście dla modelu", + "assistant": "Odpowiedzi modelu oparte na wiadomościach użytkownika" + }, + "addMessage": "Dodaj wiadomość", + "vision": "wizja", + "files": "Pliki", + "resolution": { + "name": "Rozdzielczość", + "high": "Wysoka", + "low": "Niska" + }, + "outputVars": { + "output": "Generowana treść", + "reasoning_content": "Treść rozumowania", + "usage": "Informacje o użyciu modelu" + }, + "singleRun": { + "variable": "Zmienna" + }, + "sysQueryInUser": "sys.query w wiadomości użytkownika jest wymagane", + "jsonSchema": { + "warningTips": { + "saveSchema": "Proszę ukończyć edytowanie bieżącego pola przed zapisaniem schematu." + }, + "generate": "Generować", + "addChildField": "Dodaj pole dziecka", + "fieldNamePlaceholder": "Nazwa pola", + "resetDefaults": "Resetuj", + "generationTip": "Możesz użyć języka naturalnego, aby szybko stworzyć schemat JSON.", + "required": "wymagane", + "stringValidations": "Walidacje ciągów", + "promptPlaceholder": "Opisz swój schemat JSON...", + "promptTooltip": "Przekształć opis tekstowy w ustandaryzowaną strukturę schematu JSON.", + "title": "Strukturalny schemat wyjścia", + "instruction": "Instrukcja", + "doc": "Dowiedz się więcej o zorganizowanym wyjściu", + "descriptionPlaceholder": "Dodaj opis", + "regenerate": "Regeneruj", + "generateJsonSchema": "Generuj schemat JSON", + "generatedResult": "Wygenerowany wynik", + "showAdvancedOptions": "Pokaż zaawansowane opcje", + "apply": "Zastosować", + "generating": "Generowanie schematu JSON...", + "import": "Importuj z JSON", + "resultTip": "Oto wygenerowany wynik. Jeśli nie jesteś zadowolony, możesz wrócić i zmodyfikować swoje zapytanie.", + "back": "Tył", + "addField": "Dodaj pole" + }, + "reasoningFormat": { + "tooltip": "Wyodrębnij treść z tagów think i przechowaj ją w polu reasoning_content.", + "separated": "Oddziel tagi myślenia", + "tagged": "Zachowaj myśl tagi", + "title": "Włącz separację tagów uzasadnienia" + } + }, + "knowledgeRetrieval": { + "queryVariable": "Zmienna zapytania", + "knowledge": "Wiedza", + "outputVars": { + "output": "Odzyskane dane segmentowane", + "content": "Treść segmentowana", + "title": "Tytuł segmentowany", + "icon": "Ikona segmentowana", + "url": "URL segmentowany", + "metadata": "Inne metadane", + "files": "Pobrane pliki" + }, + "metadata": { + "options": { + "disabled": { + "title": "Wyłączone", + "subTitle": "Nie włączanie filtrowania metadanych" + }, + "automatic": { + "desc": "Automatycznie generuj warunki filtracji metadanych na podstawie zmiennej zapytania", + "title": "Automatyczny", + "subTitle": "Automatycznie generuj warunki filtracji metadanych na podstawie zapytania użytkownika" + }, + "manual": { + "subTitle": "Ręcznie dodaj warunki filtrowania metadanych", + "title": "Ręczny" + } + }, + "panel": { + "conditions": "Warunki", + "title": "Warunki filtru metadanych", + "placeholder": "Wprowadź wartość", + "search": "Szukaj metadanych", + "datePlaceholder": "Wybierz czas...", + "add": "Dodaj warunek", + "select": "Wybierz zmienną..." + }, + "title": "Filtrowanie metadanych", + "tip": "Filtracja metadanych to proces wykorzystania atrybutów metadanych (takich jak tagi, kategorie lub uprawnienia dostępu) do precyzowania i kontrolowania pozyskiwania istotnych informacji w systemie." + }, + "queryText": "Tekst zapytania", + "queryAttachment": "Wyszukaj obrazy" + }, + "http": { + "inputVars": "Zmienne wejściowe", + "api": "API", + "apiPlaceholder": "Wpisz URL, wpisz ‘/’, aby wstawić zmienną", + "notStartWithHttp": "API powinno zaczynać się od http:// lub https://", + "key": "Klucz", + "value": "Wartość", + "bulkEdit": "Edycja zbiorcza", + "keyValueEdit": "Edycja klucz-wartość", + "headers": "Nagłówki", + "params": "Parametry", + "body": "Treść", + "outputVars": { + "body": "Treść odpowiedzi", + "statusCode": "Kod statusu odpowiedzi", + "headers": "Lista nagłówków odpowiedzi w formacie JSON", + "files": "Lista plików" + }, + "authorization": { + "authorization": "Autoryzacja", + "authorizationType": "Typ autoryzacji", + "no-auth": "Brak", + "api-key": "Klucz API", + "auth-type": "Typ autoryzacji", + "basic": "Podstawowa", + "bearer": "Bearer", + "custom": "Niestandardowa", + "api-key-title": "Klucz API", + "header": "Nagłówek" + }, + "insertVarPlaceholder": "wpisz '/', aby wstawić zmienną", + "timeout": { + "title": "Limit czasu", + "connectLabel": "Limit czasu połączenia", + "connectPlaceholder": "Wpisz limit czasu połączenia w sekundach", + "readLabel": "Limit czasu odczytu", + "readPlaceholder": "Wpisz limit czasu odczytu w sekundach", + "writeLabel": "Limit czasu zapisu", + "writePlaceholder": "Wpisz limit czasu zapisu w sekundach" + }, + "type": "Typ", + "binaryFileVariable": "Binarna zmienna pliku", + "extractListPlaceholder": "Wprowadź indeks elementu listy, wpisz \"/\" wstaw zmienną", + "curl": { + "placeholder": "Wklej tutaj ciąg cURL", + "title": "Importowanie z cURL" + }, + "verifySSL": { + "title": "Zweryfikuj certyfikat SSL", + "warningTooltip": "Wyłączenie weryfikacji SSL nie jest zalecane w środowiskach produkcyjnych. Powinno to być używane tylko w rozwoju lub testowaniu, ponieważ naraża połączenie na zagrożenia bezpieczeństwa, takie jak ataki typu man-in-the-middle." + } + }, + "code": { + "inputVars": "Zmienne wejściowe", + "outputVars": "Zmienne wyjściowe", + "advancedDependencies": "Zaawansowane zależności", + "advancedDependenciesTip": "Dodaj niektóre preładowane zależności, które zajmują więcej czasu lub nie są domyślnie wbudowane", + "searchDependencies": "Wyszukaj zależności", + "syncFunctionSignature": "Zsynchronizuj sygnaturę funkcji z kodem" + }, + "templateTransform": { + "inputVars": "Zmienne wejściowe", + "code": "Kod", + "codeSupportTip": "Obsługuje tylko Jinja2", + "outputVars": { + "output": "Przekształcona treść" + } + }, + "ifElse": { + "if": "Jeśli", + "else": "W przeciwnym razie", + "elseDescription": "Używane do określenia logiki, która powinna być wykonana, gdy warunek if nie jest spełniony.", + "and": "i", + "or": "lub", + "operator": "Operator", + "notSetVariable": "Najpierw ustaw zmienną", + "comparisonOperator": { + "contains": "zawiera", + "not contains": "nie zawiera", + "start with": "zaczyna się od", + "end with": "kończy się na", + "is": "jest", + "is not": "nie jest", + "empty": "jest pusty", + "not empty": "nie jest pusty", + "null": "jest null", + "not null": "nie jest null", + "in": "w", + "not exists": "nie istnieje", + "exists": "Istnieje", + "all of": "wszystkie z nich", + "not in": "nie w", + "before": "przed", + "after": "po" + }, + "enterValue": "Wpisz wartość", + "addCondition": "Dodaj warunek", + "conditionNotSetup": "Warunek NIE został ustawiony", + "selectVariable": "Wybierz zmienną...", + "optionName": { + "video": "Wideo", + "image": "Obraz", + "url": "Adres URL", + "localUpload": "Przesyłanie lokalne", + "doc": "Doc", + "audio": "Dźwięk" + }, + "addSubVariable": "Zmienna podrzędna", + "select": "Wybrać" + }, + "variableAssigner": { + "title": "Przypisz zmienne", + "outputType": "Typ wyjścia", + "varNotSet": "Zmienna nie została ustawiona", + "noVarTip": "Dodaj zmienne do przypisania", + "type": { + "string": "Ciąg znaków", + "number": "Liczba", + "object": "Obiekt", + "array": "Tablica" + }, + "aggregationGroup": "Grupa agregacji", + "aggregationGroupTip": "Włączenie tej funkcji pozwala na agregowanie wielu zestawów zmiennych przez agregator zmiennych.", + "addGroup": "Dodaj grupę", + "outputVars": { + "varDescribe": "Wyjście {{groupName}}" + }, + "setAssignVariable": "Ustaw przypisanie zmiennej" + }, + "assigner": { + "assignedVariable": "Przypisana Zmienna", + "writeMode": "Tryb Zapisu", + "writeModeTip": "Gdy PRZYPISANA ZMIENNA jest tablicą, tryb dopisywania dodaje na końcu.", + "over-write": "Nadpisz", + "append": "Dopisz", + "plus": "Plus", + "clear": "Wyczyść", + "setVariable": "Ustaw Zmienną", + "variable": "Zmienna", + "operations": { + "over-write": "Zastąpić", + "set": "Zbiór", + "title": "Operacja", + "overwrite": "Zastąpić", + "*=": "*=", + "/=": "/=", + "-=": "-=", + "extend": "Rozszerzyć", + "+=": "+=", + "clear": "Jasny", + "append": "Dołączyć", + "remove-first": "Usuń pierwszy", + "remove-last": "Usuń ostatni" + }, + "variables": "Zmiennych", + "selectAssignedVariable": "Wybierz przypisaną zmienną...", + "varNotSet": "Zmienna NIE jest ustawiona", + "noAssignedVars": "Brak dostępnych przypisanych zmiennych", + "assignedVarsDescription": "Przypisane zmienne muszą być zmiennymi zapisywalnymi, takimi jak zmienne konwersacji.", + "setParameter": "Ustaw parametr...", + "noVarTip": "Kliknij przycisk \"+\", aby dodać zmienne" + }, + "tool": { + "inputVars": "Zmienne wejściowe", + "outputVars": { + "text": "treść generowana przez narzędzie", + "files": { + "title": "pliki generowane przez narzędzie", + "type": "Typ wsparcia. Obecnie tylko obsługuje obraz", + "transfer_method": "Metoda transferu. Wartość to remote_url lub local_file", + "url": "URL obrazu", + "upload_file_id": "ID przesłanego pliku" + }, + "json": "JSON wygenerowany przez narzędzien" + }, + "authorize": "Autoryzuj", + "insertPlaceholder2": "wstaw zmienną", + "settings": "Ustawienia", + "insertPlaceholder1": "Wpisz lub naciśnij" + }, + "questionClassifiers": { + "model": "model", + "inputVars": "Zmienne wejściowe", + "outputVars": { + "className": "Nazwa klasy", + "usage": "Informacje o użyciu modelu" + }, + "class": "Klasa", + "classNamePlaceholder": "Napisz nazwę swojej klasy", + "advancedSetting": "Zaawansowane ustawienia", + "topicName": "Nazwa tematu", + "topicPlaceholder": "Napisz nazwę swojego tematu", + "addClass": "Dodaj klasę", + "instruction": "Instrukcja", + "instructionTip": "Wprowadź dodatkowe instrukcje, aby pomóc klasyfikatorowi pytań lepiej zrozumieć, jak kategoryzować pytania.", + "instructionPlaceholder": "Napisz swoją instrukcję" + }, + "parameterExtractor": { + "inputVar": "Zmienna wejściowa", + "outputVars": { + "isSuccess": "Czy się udało. W przypadku sukcesu wartość wynosi 1, w przypadku niepowodzenia wartość wynosi 0.", + "errorReason": "Powód błędu", + "usage": "Informacje o użyciu modelu" + }, + "extractParameters": "Wyodrębnij parametry", + "importFromTool": "Importuj z narzędzi", + "addExtractParameter": "Dodaj parametr wyodrębniania", + "addExtractParameterContent": { + "name": "Nazwa", + "namePlaceholder": "Nazwa parametru wyodrębniania", + "type": "Typ", + "typePlaceholder": "Typ parametru wyodrębniania", + "description": "Opis", + "descriptionPlaceholder": "Opis parametru wyodrębniania", + "required": "Wymagane", + "requiredContent": "Wymagane jest tylko jako odniesienie do wnioskowania modelu, a nie do obowiązkowej walidacji wyjścia parametru." + }, + "extractParametersNotSet": "Parametry wyodrębniania nie zostały ustawione", + "instruction": "Instrukcja", + "instructionTip": "Wprowadź dodatkowe instrukcje, aby pomóc ekstraktorowi parametrów zrozumieć, jak wyodrębniać parametry.", + "advancedSetting": "Zaawansowane ustawienia", + "reasoningMode": "Tryb wnioskowania", + "reasoningModeTip": "Możesz wybrać odpowiedni tryb wnioskowania w zależności od zdolności modelu do reagowania na instrukcje dotyczące wywoływania funkcji lub zapytań." + }, + "iteration": { + "deleteTitle": "Usunąć węzeł iteracji?", + "deleteDesc": "Usunięcie węzła iteracji usunie wszystkie węzły potomne", + "input": "Wejście", + "output": "Zmienne wyjściowe", + "iteration_one": "{{count}} Iteracja", + "iteration_other": "{{count}} Iteracje", + "currentIteration": "Bieżąca iteracja", + "ErrorMethod": { + "continueOnError": "kontynuacja w przypadku błędu", + "operationTerminated": "Zakończone", + "removeAbnormalOutput": "usuń-nieprawidłowe-wyjście" + }, + "comma": ",", + "parallelModeUpper": "TRYB RÓWNOLEGŁY", + "parallelModeEnableTitle": "Włączony tryb równoległy", + "MaxParallelismTitle": "Maksymalna równoległość", + "error_one": "{{liczba}} Błąd", + "error_other": "{{liczba}} Błędy", + "parallelPanelDesc": "W trybie równoległym zadania w iteracji obsługują wykonywanie równoległe.", + "parallelMode": "Tryb równoległy", + "MaxParallelismDesc": "Maksymalna równoległość służy do kontrolowania liczby zadań wykonywanych jednocześnie w jednej iteracji.", + "parallelModeEnableDesc": "W trybie równoległym zadania w iteracjach obsługują wykonywanie równoległe. Możesz to skonfigurować w panelu właściwości po prawej stronie.", + "answerNodeWarningDesc": "Ostrzeżenie w trybie równoległym: węzły odpowiedzi, przypisania zmiennych konwersacji i trwałe operacje odczytu/zapisu w iteracjach mogą powodować wyjątki.", + "errorResponseMethod": "Metoda odpowiedzi na błąd", + "flattenOutput": "Spłaszcz wyjście", + "flattenOutputDesc": "Po włączeniu, jeśli wszystkie wyniki iteracji są tablicami, zostaną one spłaszczone do pojedynczej tablicy. Po wyłączeniu wyniki zachowają zagnieżdżoną strukturę tablicy." + }, + "note": { + "editor": { + "link": "Łącze", + "medium": "Średni", + "small": "Mały", + "italic": "Kursywa", + "enterUrl": "Wpisz adres URL...", + "showAuthor": "Pokaż autora", + "bold": "Śmiały", + "unlink": "Odłączyć", + "bulletList": "Lista punktowana", + "large": "Duży", + "openLink": "Otwierać", + "strikethrough": "Przekreślenie", + "invalidUrl": "Nieprawidłowy adres URL", + "placeholder": "Napisz swoją notatkę..." + }, + "addNote": "Dodaj notatkę" + }, + "docExtractor": { + "outputVars": { + "text": "Wyodrębniony tekst" + }, + "learnMore": "Dowiedz się więcej", + "inputVar": "Zmienna wejściowa", + "supportFileTypes": "Obsługiwane typy plików: {{types}}." + }, + "listFilter": { + "outputVars": { + "result": "Wynik filtrowania", + "last_record": "Ostatni rekord", + "first_record": "Pierwszy rekord" + }, + "desc": "DESC", + "asc": "ASC", + "inputVar": "Zmienna wejściowa", + "limit": "Pierwsze N", + "orderBy": "Sortuj według", + "filterConditionComparisonOperator": "Operator porównania warunków filtru", + "filterConditionKey": "Klucz warunku filtra", + "filterCondition": "Stan filtra", + "filterConditionComparisonValue": "Wartość warunku filtru", + "selectVariableKeyPlaceholder": "Wybierz klucz zmiennej podrzędnej", + "extractsCondition": "Wyodrębnij element N" + }, + "agent": { + "strategy": { + "configureTip": "Skonfiguruj strategię agentyczną.", + "selectTip": "Wybierz strategię agentyczną", + "searchPlaceholder": "Strategia agentyczna wyszukiwania", + "configureTipDesc": "Po skonfigurowaniu strategii agentycznej ten węzeł automatycznie załaduje pozostałe konfiguracje. Strategia będzie miała wpływ na mechanizm wieloetapowego rozumowania narzędziowego.", + "shortLabel": "Strategia", + "label": "Strategia agentyczna", + "tooltip": "Różne strategie agentowe określają, w jaki sposób system planuje i wykonuje wieloetapowe wywołania narzędzi" + }, + "pluginInstaller": { + "installing": "Instalowanie", + "install": "Instalować" + }, + "modelNotInMarketplace": { + "desc": "Ten model jest instalowany z repozytorium lokalnego lub GitHub. Proszę użyć po instalacji.", + "manageInPlugins": "Zarządzanie we wtyczkach", + "title": "Model nie jest zainstalowany" + }, + "modelNotSupport": { + "desc": "Zainstalowana wersja wtyczki nie zapewnia tego modelu.", + "descForVersionSwitch": "Zainstalowana wersja wtyczki nie zapewnia tego modelu. Kliknij, aby zmienić wersję.", + "title": "Nieobsługiwany model" + }, + "modelSelectorTooltips": { + "deprecated": "Ten model jest przestarzały" + }, + "outputVars": { + "files": { + "title": "Pliki generowane przez agenta", + "type": "Rodzaj wsparcia. Teraz obsługuje tylko obraz", + "transfer_method": "Metoda transferu. Wartość to remote_url lub local_file", + "upload_file_id": "Identyfikator przesyłanego pliku", + "url": "Adres URL obrazu" + }, + "json": "Kod JSON wygenerowany przez agenta", + "text": "Treści generowane przez agentów", + "usage": "Informacje o użyciu modelu" + }, + "checkList": { + "strategyNotSelected": "Nie wybrano strategii" + }, + "installPlugin": { + "install": "Instalować", + "changelog": "Dziennik zmian", + "desc": "Informacje o instalacji następującej wtyczki", + "cancel": "Anuluj", + "title": "Zainstaluj wtyczkę" + }, + "notAuthorized": "Nieautoryzowany", + "pluginNotInstalledDesc": "Ta wtyczka jest instalowana z GitHub. Przejdź do Wtyczki, aby ponownie zainstalować", + "toolNotAuthorizedTooltip": "{{narzędzie}} Nieautoryzowany", + "linkToPlugin": "Link do wtyczek", + "maxIterations": "Maksymalna liczba iteracji", + "strategyNotFoundDesc": "Zainstalowana wersja wtyczki nie zapewnia tej strategii.", + "strategyNotInstallTooltip": "{{strategy}} nie jest zainstalowany", + "modelNotSelected": "Nie wybrano modelu", + "pluginNotFoundDesc": "Ta wtyczka jest instalowana z GitHub. Przejdź do Wtyczki, aby ponownie zainstalować", + "tools": "Narzędzia", + "unsupportedStrategy": "Nieobsługiwana strategia", + "configureModel": "Konfiguruj model", + "toolbox": "skrzynka z narzędziami", + "modelNotInstallTooltip": "Ten model nie jest zainstalowany", + "strategyNotFoundDescAndSwitchVersion": "Zainstalowana wersja wtyczki nie zapewnia tej strategii. Kliknij, aby zmienić wersję.", + "toolNotInstallTooltip": "{{tool}} nie jest zainstalowany", + "pluginNotInstalled": "Ta wtyczka nie jest zainstalowana", + "learnMore": "Dowiedz się więcej", + "strategyNotSet": "Nie ustawiono strategii agentalnej", + "model": "model", + "parameterSchema": "Schemat parametrów", + "clickToViewParameterSchema": "Kliknij, aby zobaczyć schemat parametrów" + }, + "loop": { + "ErrorMethod": { + "operationTerminated": "Zakończony", + "removeAbnormalOutput": "Usuń nietypowy wynik", + "continueOnError": "Kontynuuj w przypadku błędu" + }, + "inputMode": "Tryb wejściowy", + "loop_other": "{{count}} Pętle", + "deleteDesc": "Usunięcie węzła pętli spowoduje usunięcie wszystkich węzłów potomnych.", + "loopVariables": "Zmienne pętli", + "variableName": "Nazwa zmiennej", + "output": "Zmienna wyjściowa", + "breakCondition": "Warunek zakończenia pętli", + "input": "Wprowadzenie", + "initialLoopVariables": "Początkowe zmienne pętli", + "error_one": "{{count}} Błąd", + "loopNode": "Węzeł pętli", + "loop_one": "{{count}} pętla", + "currentLoop": "Pętla prądowa", + "finalLoopVariables": "Ostateczne zmienne pętli", + "comma": ",", + "loopMaxCountError": "Proszę wprowadzić prawidłową maksymalną liczbę iteracji, mieszczącą się w przedziale od 1 do {{maxCount}}", + "error_other": "{{count}} błędów", + "totalLoopCount": "Całkowita liczba pętli: {{count}}", + "exitConditionTip": "Węzeł pętli potrzebuje przynajmniej jednego warunku wyjścia.", + "setLoopVariables": "Ustaw zmienne w zakresie pętli", + "loopMaxCount": "Maksymalna liczba pętli", + "errorResponseMethod": "Metoda odpowiedzi na błąd", + "breakConditionTip": "Tylko zmienne w pętlach z warunkami zakończenia oraz zmienne konwersacyjne mogą być odwoływane.", + "currentLoopCount": "Aktualna liczba pętli: {{count}}", + "deleteTitle": "Usunąć węzeł pętli?" + }, + "dataSource": { + "add": "Dodawanie źródła danych", + "supportedFileFormatsPlaceholder": "Rozszerzenie pliku, e.g. doc", + "supportedFileFormats": "Obsługiwane formaty plików" + }, + "knowledgeBase": { + "chunkStructureTip": { + "learnMore": "Dowiedz się więcej", + "title": "Wybierz strukturę porcji", + "message": "Baza wiedzy Dify obsługuje trzy struktury fragmentacji: Ogólne, Nadrzędne-podrzędne oraz Q&A. Każda baza wiedzy może mieć tylko jedną strukturę. Dane wyjściowe z poprzedniego węzła muszą być wyrównane z wybraną strukturą fragmentów. Należy pamiętać, że wybór struktury fragmentacji ma wpływ na dostępne metody indeksowania." + }, + "aboutRetrieval": "o metodzie wyszukiwania.", + "chunkStructure": "Struktura porcji", + "retrievalSettingIsRequired": "Wymagane jest ustawienie pobierania", + "changeChunkStructure": "Zmień strukturę porcji", + "chooseChunkStructure": "Wybieranie struktury fragmentów", + "indexMethodIsRequired": "Metoda indeksowa jest wymagana", + "chunkIsRequired": "Wymagana jest struktura porcji", + "chunksInput": "Kawałki", + "chunksInputTip": "Zmienna wejściowa węzła bazy wiedzy to Chunks. Typ zmiennej to obiekt z określonym schematem JSON, który musi być zgodny z wybraną strukturą chunk.", + "embeddingModelIsRequired": "Wymagany jest model osadzania", + "chunksVariableIsRequired": "Wymagana jest zmienna Chunks", + "rerankingModelIsRequired": "Wymagany jest model ponownego rankingu", + "embeddingModelIsInvalid": "Model osadzania jest nieprawidłowy", + "rerankingModelIsInvalid": "Model ponownego rankingowania jest nieprawidłowy" + }, + "triggerPlugin": { + "authorized": "Autoryzowany", + "notConfigured": "Nie skonfigurowano", + "notAuthorized": "Nieautoryzowany", + "selectSubscription": "Wybierz subskrypcję", + "availableSubscriptions": "Dostępne subskrypcje", + "addSubscription": "Dodaj nową subskrypcję", + "removeSubscription": "Usuń subskrypcję", + "subscriptionRemoved": "Subskrypcja została pomyślnie usunięta", + "error": "Błąd", + "configuration": "Konfiguracja", + "remove": "Usuń", + "or": "LUB", + "useOAuth": "Użyj OAuth", + "useApiKey": "Użyj klucza API", + "authenticationFailed": "Uwierzytelnianie nie powiodło się", + "authenticationSuccess": "Uwierzytelnianie powiodło się", + "oauthConfigFailed": "Konfiguracja OAuth nie powiodła się", + "configureOAuthClient": "Skonfiguruj klienta OAuth", + "oauthClientDescription": "Skonfiguruj dane uwierzytelniające klienta OAuth, aby włączyć uwierzytelnianie", + "oauthClientSaved": "Konfiguracja klienta OAuth została pomyślnie zapisana", + "configureApiKey": "Skonfiguruj klucz API", + "apiKeyDescription": "Skonfiguruj dane uwierzytelniające klucza API", + "apiKeyConfigured": "Klucz API został pomyślnie skonfigurowany", + "configurationFailed": "Konfiguracja nie powiodła się", + "failedToStart": "Nie udało się rozpocząć procesu uwierzytelniania", + "credentialsVerified": "Dane uwierzytelniające zostały pomyślnie zweryfikowane", + "credentialVerificationFailed": "Weryfikacja poświadczeń nie powiodła się", + "verifyAndContinue": "Zweryfikuj i kontynuuj", + "configureParameters": "Skonfiguruj parametry", + "parametersDescription": "Skonfiguruj parametry i właściwości wyzwalacza", + "configurationComplete": "Konfiguracja zakończona", + "configurationCompleteDescription": "Twój wyzwalacz został pomyślnie skonfigurowany", + "configurationCompleteMessage": "Twoja konfiguracja wyzwalacza jest teraz kompletna i gotowa do użycia.", + "parameters": "Parametry", + "properties": "Właściwości", + "propertiesDescription": "Dodatkowe właściwości konfiguracji dla tego wyzwalacza", + "noConfigurationRequired": "Nie jest wymagana dodatkowa konfiguracja dla tego wyzwalacza.", + "subscriptionName": "Nazwa subskrypcji", + "subscriptionNameDescription": "Wprowadź unikalną nazwę dla tej subskrypcji wyzwalacza", + "subscriptionNamePlaceholder": "Wpisz nazwę subskrypcji...", + "subscriptionNameRequired": "Nazwa subskrypcji jest wymagana", + "subscriptionRequired": "Wymagana jest subskrypcja" + }, + "triggerSchedule": { + "title": "Harmonogram", + "nodeTitle": "Wyzwalacz harmonogramu", + "notConfigured": "Nie skonfigurowano", + "useCronExpression": "Użyj wyrażenia cron", + "useVisualPicker": "Użyj selektora wizualnego", + "frequency": { + "label": "CZĘSTOTLIWOŚĆ", + "hourly": "Godzinowy", + "daily": "Codziennie", + "weekly": "Cotygodniowy", + "monthly": "Miesięczny" + }, + "selectFrequency": "Wybierz częstotliwość", + "frequencyLabel": "Częstotliwość", + "nextExecution": "Następna egzekucja", + "weekdays": "Dni tygodnia", + "time": "Czas", + "cronExpression": "Wyrażenie Cron", + "nextExecutionTime": "NASTĘPNY CZAS WYKONANIA", + "nextExecutionTimes": "Następne 5 terminów wykonania", + "startTime": "Czas rozpoczęcia", + "executeNow": "Wykonaj teraz", + "selectDateTime": "Wybierz datę i godzinę", + "hours": "Godziny", + "minutes": "Minuty", + "onMinute": "Za minutę", + "days": "Dni", + "lastDay": "Ostatni dzień", + "lastDayTooltip": "Nie wszystkie miesiące mają 31 dni. Użyj opcji „ostatni dzień”, aby wybrać ostatni dzień każdego miesiąca.", + "mode": "Moda", + "timezone": "Strefa czasowa", + "visualConfig": "Konfiguracja wizualna", + "monthlyDay": "Dzień miesiąca", + "executionTime": "Czas wykonywania", + "invalidTimezone": "Nieprawidłowa strefa czasowa", + "invalidCronExpression": "Nieprawidłowe wyrażenie cron", + "noValidExecutionTime": "Nie można obliczyć prawidłowego czasu wykonania", + "executionTimeCalculationError": "Nie udało się obliczyć czasów wykonania", + "invalidFrequency": "Nieprawidłowa częstotliwość", + "invalidStartTime": "Nieprawidłowy czas rozpoczęcia", + "startTimeMustBeFuture": "Czas rozpoczęcia musi być w przyszłości", + "invalidTimeFormat": "Nieprawidłowy format godziny (oczekiwano GG:MM AM/PM)", + "invalidWeekday": "Nieprawidłowy dzień tygodnia: {{weekday}}", + "invalidMonthlyDay": "Miesięczny dzień musi być między 1 a 31 lub „ostatni”", + "invalidOnMinute": "Minuta musi mieścić się w przedziale od 0 do 59", + "invalidExecutionTime": "Nieprawidłowy czas wykonania", + "executionTimeMustBeFuture": "Czas wykonania musi być w przyszłości" + }, + "triggerWebhook": { + "title": "Wywołanie webhooka", + "nodeTitle": "🔗 Wyzwalacz Webhook", + "configPlaceholder": "Konfiguracja wyzwalacza webhook zostanie tutaj wdrożona", + "webhookUrl": "Adres URL webhooka", + "webhookUrlPlaceholder": "Kliknij wygeneruj, aby utworzyć adres URL webhooka", + "generate": "Generuj", + "copy": "Kopiuj", + "test": "Test", + "urlGenerated": "Adres URL webhooka został pomyślnie wygenerowany", + "urlGenerationFailed": "Nie udało się wygenerować adresu URL webhooka", + "urlCopied": "Adres URL skopiowany do schowka", + "method": "Metoda", + "contentType": "Rodzaj treści", + "queryParameters": "Parametry zapytania", + "headerParameters": "Parametry nagłówka", + "requestBodyParameters": "Parametry ciała żądania", + "parameterName": "Nazwa zmiennej", + "varName": "Nazwa zmiennej", + "varType": "Rodzaj", + "varNamePlaceholder": "Wprowadź nazwę zmiennej...", + "required": "Wymagane", + "addParameter": "Dodaj", + "addHeader": "Dodaj", + "noParameters": "Nie skonfigurowano żadnych parametrów", + "noQueryParameters": "Brak skonfigurowanych parametrów zapytania", + "noHeaders": "Nie skonfigurowano nagłówków", + "noBodyParameters": "Brak skonfigurowanych parametrów ciała", + "debugUrlTitle": "Do testów zawsze używaj tego adresu URL", + "debugUrlCopy": "Kliknij, aby skopiować", + "debugUrlCopied": "Skopiowano!", + "debugUrlPrivateAddressWarning": "Ten adres URL wydaje się być adresem wewnętrznym, co może spowodować niepowodzenie żądań webhook. Możesz zmienić TRIGGER_URL na adres publiczny.", + "errorHandling": "Obsługa błędów", + "errorStrategy": "Obsługa błędów", + "responseConfiguration": "Odpowiedź", + "asyncMode": "Tryb asynchroniczny", + "statusCode": "Kod statusu", + "responseBody": "Treść odpowiedzi", + "responseBodyPlaceholder": "Napisz tutaj treść swojej odpowiedzi", + "headers": "Nagłówki", + "validation": { + "webhookUrlRequired": "Adres URL webhooka jest wymagany", + "invalidParameterType": "Nieprawidłowy typ parametru \"{{type}}\" dla parametru \"{{name}}\"" + } + } + }, + "tracing": { + "stopBy": "Zatrzymane przez {{user}}" + }, + "variableReference": { + "conversationVars": "Zmienne konwersacji", + "assignedVarsDescription": "Przypisane zmienne muszą być zmiennymi zapisywalnymi, takimi jak", + "noVarsForOperation": "Nie ma dostępnych zmiennych do przypisania do wybranej operacji.", + "noAssignedVars": "Brak dostępnych przypisanych zmiennych", + "noAvailableVars": "Brak dostępnych zmiennych" + }, + "versionHistory": { + "filter": { + "onlyShowNamedVersions": "Pokazuj tylko wersje z nazwami", + "all": "Wszystko", + "onlyYours": "Tylko twój", + "empty": "Nie znaleziono odpowiadającej historii wersji", + "reset": "Resetuj filtr" + }, + "editField": { + "releaseNotes": "Notatki o wydaniu", + "releaseNotesLengthLimit": "Notatki o wydaniu nie mogą przekraczać {{limit}} znaków", + "title": "Tytuł", + "titleLengthLimit": "Tytuł nie może przekraczać {{limit}} znaków" + }, + "action": { + "updateSuccess": "Wersja zaktualizowana", + "updateFailure": "Nie udało się zaktualizować wersji", + "deleteFailure": "Nie udało się usunąć wersji", + "deleteSuccess": "Wersja usunięta", + "restoreSuccess": "Wersja przywrócona", + "restoreFailure": "Nie udało się przywrócić wersji", + "copyIdSuccess": "Identyfikator skopiowany do schowka" + }, + "currentDraft": "Aktualny szkic", + "nameThisVersion": "Nazwij tę wersję", + "defaultName": "Nienazwana wersja", + "title": "Wersje", + "latest": "Najnowszy", + "releaseNotesPlaceholder": "Opisz, co się zmieniło", + "editVersionInfo": "Edytuj informacje o wersji", + "deletionTip": "Usunięcie jest nieodwracalne, proszę potwierdzić.", + "restorationTip": "Po przywróceniu wersji bieżący szkic zostanie nadpisany.", + "copyId": "Kopiuj ID" + }, + "debug": { + "noData": { + "runThisNode": "Uruchom ten węzeł", + "description": "Wyniki ostatniego uruchomienia będą wyświetlane tutaj" + }, + "variableInspect": { + "trigger": { + "clear": "Czysty", + "running": "Buforowanie statusu działania", + "cached": "Wyświetl zapisane zmienne", + "stop": "Zatrzymaj bieg", + "normal": "Inspekcja zmiennych" + }, + "title": "Inspekcja zmiennych", + "chatNode": "Rozmowa", + "envNode": "Środowisko", + "systemNode": "System", + "edited": "Edytowany", + "clearAll": "Resetuj wszystko", + "emptyLink": "Dowiedz się więcej", + "clearNode": "Wyczyść pamięć podręczną zmiennej", + "reset": "Zresetuj do ostatniej wartości run", + "view": "Zobacz dziennik", + "resetConversationVar": "Zresetuj zmienną rozmowy do wartości domyślnej", + "emptyTip": "Po przejściu przez węzeł na kanwie lub uruchomieniu węzła krok po kroku, możesz zobaczyć bieżącą wartość zmiennej węzła w Inspektorze Zmiennych.", + "export": "eksport", + "largeDataNoExport": "Duże dane — tylko częściowy podgląd", + "largeData": "Duże dane, podgląd tylko do odczytu. Eksportuj, aby wyświetlić wszystko.", + "exportToolTip": "Eksportuj zmienną jako plik", + "listening": { + "title": "Oczekiwanie na zdarzenia wywoływane przez wyzwalacze...", + "tip": "Możesz teraz symulować wywołania zdarzeń, wysyłając testowe żądania do punktu końcowego HTTP {{nodeName}} lub użyć go jako adresu URL do wywołań zwrotnych w celu debugowania zdarzeń na żywo. Wszystkie wyniki można przeglądać bezpośrednio w Inspektorze Zmiennych.", + "tipPlugin": "Teraz możesz tworzyć zdarzenia w {{- pluginName}} i pobierać wyniki z tych zdarzeń w Inspektorze Zmiennych.", + "tipSchedule": "Nasłuchiwanie zdarzeń z wyzwalaczy harmonogramu.\nNastępne zaplanowane uruchomienie: {{nextTriggerTime}}", + "tipFallback": "Oczekiwanie na nadchodzące zdarzenia wyzwalające. Wyniki pojawią się tutaj.", + "defaultNodeName": "ten wyzwalacz", + "defaultPluginName": "ten wtyczka wyzwalacz", + "defaultScheduleTime": "Nie skonfigurowano", + "selectedTriggers": "wybrane wyzwalacze", + "stopButton": "Stop" + } + }, + "settingsTab": "Ustawienia", + "lastRunTab": "Ostatnie uruchomienie", + "relations": { + "dependencies": "Zależności", + "dependenciesDescription": "Węzły, na których opiera się ten węzeł", + "noDependents": "Brak osób na utrzymaniu", + "dependents": "Zależności", + "dependentsDescription": "Węzły, które opierają się na tym węźle", + "noDependencies": "Brak zależności" + }, + "relationsTab": "Stosunków", + "copyLastRun": "Kopiuj ostatnie uruchomienie", + "noLastRunFound": "Nie znaleziono poprzedniego biegu.", + "noMatchingInputsFound": "Nie znaleziono pasujących danych wejściowych z ostatniego uruchomienia", + "copyLastRunError": "Nie udało się skopiować danych wejściowych z ostatniego uruchomienia", + "lastOutput": "Ostatni wynik", + "lastRunInputsCopied": "{{count}} dane wejściowe skopiowane z ostatniego uruchomienia" + }, + "sidebar": { + "exportWarning": "Eksportuj obecną zapisaną wersję", + "exportWarningDesc": "To wyeksportuje aktualnie zapisaną wersję twojego przepływu pracy. Jeśli masz niesave'owane zmiany w edytorze, najpierw je zapisz, korzystając z opcji eksportu w kanwie przepływu pracy." + }, + "publishLimit": { + "startNodeTitlePrefix": "Uaktualnij do", + "startNodeTitleSuffix": "odblokuj nieograniczoną liczbę wyzwalaczy na przepływ pracy", + "startNodeDesc": "Osiągnąłeś limit 2 wyzwalaczy na przepływ pracy w tym planie. Zaktualizuj plan, aby opublikować ten przepływ pracy." + }, + "error": { + "startNodeRequired": "Najpierw dodaj węzeł początkowy przed {{operation}}", + "operations": { + "connectingNodes": "łączące węzły", + "addingNodes": "dodawanie węzłów", + "modifyingWorkflow": "modyfikowanie przepływu pracy", + "updatingWorkflow": "aktualizowanie przepływu pracy" + } + }, + "customWebhook": "Niestandardowy webhook", + "difyTeam": "Zespół Dify", + "triggerStatus": { + "enabled": "WYZWALACZ", + "disabled": "WYZWALACZ • WYŁĄCZONY" + }, + "entryNodeStatus": { + "enabled": "START", + "disabled": "START • WYŁĄCZONY" + }, + "onboarding": { + "title": "Wybierz węzeł początkowy, aby rozpocząć", + "description": "Różne węzły początkowe mają różne możliwości. Nie martw się, zawsze możesz je później zmienić.", + "userInputFull": "Wprowadzanie użytkownika (oryginalny węzeł początkowy)", + "userInputDescription": "Węzeł startowy umożliwiający ustawianie zmiennych wejściowych użytkownika, z możliwością korzystania jako aplikacja internetowa, API usługi, serwer MCP oraz workflow.", + "trigger": "Spust", + "triggerDescription": "Wyzwalacze mogą służyć jako węzeł początkowy w przepływie pracy, na przykład zaplanowane zadania, niestandardowe webhooki lub integracje z innymi aplikacjami.", + "back": "Wstecz", + "learnMore": "Dowiedz się więcej", + "aboutStartNode": "o węźle startowym.", + "escTip": { + "press": "Naciśnij", + "key": "esc", + "toDismiss": "zwolnić" + } + } +} diff --git a/web/i18n/pl-PL/workflow.ts b/web/i18n/pl-PL/workflow.ts deleted file mode 100644 index 3ddb1ce69b..0000000000 --- a/web/i18n/pl-PL/workflow.ts +++ /dev/null @@ -1,1296 +0,0 @@ -const translation = { - common: { - undo: 'Cofnij', - redo: 'Ponów', - editing: 'Edytowanie', - autoSaved: 'Automatycznie zapisane', - unpublished: 'Nieopublikowane', - published: 'Opublikowane', - publish: 'Opublikuj', - update: 'Aktualizuj', - run: 'Uruchom test', - running: 'Uruchamianie', - inRunMode: 'W trybie uruchamiania', - inPreview: 'W podglądzie', - inPreviewMode: 'W trybie podglądu', - preview: 'Podgląd', - viewRunHistory: 'Zobacz historię uruchomień', - runHistory: 'Historia uruchomień', - goBackToEdit: 'Wróć do edytora', - conversationLog: 'Dziennik rozmów', - debugAndPreview: 'Podgląd', - restart: 'Uruchom ponownie', - currentDraft: 'Bieżący szkic', - currentDraftUnpublished: 'Bieżący szkic nieopublikowany', - latestPublished: 'Najnowsze opublikowane', - publishedAt: 'Opublikowane', - restore: 'Przywróć', - runApp: 'Uruchom aplikację', - batchRunApp: 'Uruchom aplikację wsadowo', - accessAPIReference: 'Uzyskaj dostęp do dokumentacji API', - embedIntoSite: 'Osadź na stronie', - addTitle: 'Dodaj tytuł...', - addDescription: 'Dodaj opis...', - noVar: 'Brak zmiennej', - searchVar: 'Szukaj zmiennej', - variableNamePlaceholder: 'Nazwa zmiennej', - setVarValuePlaceholder: 'Ustaw zmienną', - needConnectTip: 'Ten krok nie jest połączony z niczym', - maxTreeDepth: 'Maksymalny limit {{depth}} węzłów na gałąź', - workflowProcess: 'Proces przepływu pracy', - notRunning: 'Jeszcze nie uruchomiono', - previewPlaceholder: 'Wprowadź treść w poniższym polu, aby rozpocząć debugowanie Chatbota', - effectVarConfirm: { - title: 'Usuń zmienną', - content: 'Zmienna jest używana w innych węzłach. Czy na pewno chcesz ją usunąć?', - }, - insertVarTip: 'Naciśnij klawisz \'/\', aby szybko wstawić', - processData: 'Przetwórz dane', - input: 'Wejście', - output: 'Wyjście', - jinjaEditorPlaceholder: 'Naciśnij \'/\' lub \'{\', aby wstawić zmienną', - viewOnly: 'Tylko do podglądu', - showRunHistory: 'Pokaż historię uruchomień', - enableJinja: 'Włącz obsługę szablonów Jinja', - learnMore: 'Dowiedz się więcej', - copy: 'Kopiuj', - duplicate: 'Duplikuj', - pasteHere: 'Wklej tutaj', - pointerMode: 'Tryb wskaźnika', - handMode: 'Tryb ręczny', - model: 'Model', - workflowAsTool: 'Przepływ pracy jako narzędzie', - configureRequired: 'Wymagana konfiguracja', - configure: 'Skonfiguruj', - manageInTools: 'Zarządzaj w narzędziach', - workflowAsToolTip: 'Wymagana rekonfiguracja narzędzia po aktualizacji przepływu pracy.', - viewDetailInTracingPanel: 'Zobacz szczegóły', - importDSLTip: 'Bieżąca wersja robocza zostanie nadpisana. Eksportuj przepływ pracy jako kopię zapasową przed zaimportowaniem.', - syncingData: 'Synchronizacja danych w zaledwie kilka sekund.', - importSuccess: 'Import powodzenie', - importDSL: 'Importowanie DSL', - overwriteAndImport: 'Nadpisywanie i importowanie', - chooseDSL: 'Wybierz plik DSL(yml)', - backupCurrentDraft: 'Utwórz kopię zapasową bieżącej wersji roboczej', - importFailure: 'Niepowodzenie importu', - parallelTip: { - click: { - title: 'Klikać', - desc: ', aby dodać', - }, - drag: { - title: 'Przeciągnąć', - desc: 'aby się połączyć', - }, - limit: 'Równoległość jest ograniczona do gałęzi {{num}}.', - depthLimit: 'Limit warstw zagnieżdżania równoległego dla warstw {{num}}', - }, - jumpToNode: 'Przejdź do tego węzła', - disconnect: 'Odłączyć', - addParallelNode: 'Dodaj węzeł równoległy', - parallel: 'RÓWNOLEGŁY', - branch: 'GAŁĄŹ', - ImageUploadLegacyTip: 'Teraz można tworzyć zmienne typu pliku w formularzu startowym. W przyszłości nie będziemy już obsługiwać funkcji przesyłania obrazów.', - fileUploadTip: 'Funkcje przesyłania obrazów zostały zaktualizowane do przesyłania plików.', - importWarning: 'Ostrożność', - importWarningDetails: 'Różnica w wersji DSL może mieć wpływ na niektóre funkcje', - openInExplore: 'Otwieranie w obszarze Eksploruj', - onFailure: 'W przypadku niepowodzenia', - addFailureBranch: 'Dodawanie gałęzi niepowodzenia', - loadMore: 'Załaduj więcej przepływów pracy', - noHistory: 'Brak historii', - exportImage: 'Eksportuj obraz', - exitVersions: 'Wersje wyjścia', - versionHistory: 'Historia wersji', - exportSVG: 'Eksportuj jako SVG', - exportJPEG: 'Eksportuj jako JPEG', - exportPNG: 'Eksportuj jako PNG', - publishUpdate: 'Opublikuj aktualizację', - addBlock: 'Dodaj węzeł', - needOutputNode: 'Należy dodać węzeł wyjściowy', - needAnswerNode: 'Węzeł odpowiedzi musi zostać dodany', - tagBound: 'Liczba aplikacji korzystających z tego tagu', - currentWorkflow: 'Bieżący przepływ pracy', - currentView: 'Bieżący widok', - moreActions: 'Więcej akcji', - listening: 'Słuchanie', - chooseStartNodeToRun: 'Wybierz węzeł początkowy, aby uruchomić', - runAllTriggers: 'Uruchom wszystkie wyzwalacze', - features: 'Cechy', - featuresDescription: 'Ulepsz doświadczenie użytkownika w aplikacji internetowej', - featuresDocLink: 'Dowiedz się więcej', - needAdd: 'Węzeł {{node}} musi zostać dodany', - needStartNode: 'Należy dodać co najmniej jeden węzeł początkowy', - workflowAsToolDisabledHint: 'Opublikuj najnowszy przepływ pracy i upewnij się, że węzeł Wprowadzanie danych użytkownika jest połączony przed skonfigurowaniem go jako narzędzie.', - }, - env: { - envPanelTitle: 'Zmienne Środowiskowe', - envDescription: 'Zmienne środowiskowe mogą być używane do przechowywania prywatnych informacji i poświadczeń. Są one tylko do odczytu i mogą być oddzielone od pliku DSL podczas eksportu.', - envPanelButton: 'Dodaj Zmienną', - modal: { - title: 'Dodaj Zmienną Środowiskową', - editTitle: 'Edytuj Zmienną Środowiskową', - type: 'Typ', - name: 'Nazwa', - namePlaceholder: 'nazwa środowiska', - value: 'Wartość', - valuePlaceholder: 'wartość środowiska', - secretTip: 'Używane do definiowania wrażliwych informacji lub danych, z ustawieniami DSL skonfigurowanymi do zapobiegania wyciekom.', - description: 'Opis', - descriptionPlaceholder: 'Opisz zmienną', - }, - export: { - title: 'Eksportować tajne zmienne środowiskowe?', - checkbox: 'Eksportuj tajne wartości', - ignore: 'Eksportuj DSL', - export: 'Eksportuj DSL z tajnymi wartościami', - }, - }, - globalVar: { - title: 'Zmienne systemowe', - description: 'Zmienne systemowe to zmienne globalne, do których może odwołać się każdy węzeł bez okablowania, jeśli typ jest zgodny, na przykład identyfikator użytkownika końcowego i identyfikator przepływu pracy.', - fieldsDescription: { - conversationId: 'ID konwersacji', - dialogCount: 'Liczba konwersacji', - userId: 'ID użytkownika', - triggerTimestamp: 'Znacznik czasu uruchomienia aplikacji', - appId: 'ID aplikacji', - workflowId: 'ID przepływu pracy', - workflowRunId: 'ID uruchomienia przepływu pracy', - }, - }, - chatVariable: { - panelTitle: 'Zmienne Konwersacji', - panelDescription: 'Zmienne Konwersacji służą do przechowywania interaktywnych informacji, które LLM musi pamiętać, w tym historii konwersacji, przesłanych plików, preferencji użytkownika. Są one do odczytu i zapisu.', - docLink: 'Odwiedź naszą dokumentację, aby dowiedzieć się więcej.', - button: 'Dodaj Zmienną', - modal: { - title: 'Dodaj Zmienną Konwersacji', - editTitle: 'Edytuj Zmienną Konwersacji', - name: 'Nazwa', - namePlaceholder: 'Nazwa zmiennej', - type: 'Typ', - value: 'Wartość Domyślna', - valuePlaceholder: 'Wartość domyślna, pozostaw puste aby nie ustawiać', - description: 'Opis', - descriptionPlaceholder: 'Opisz zmienną', - editInJSON: 'Edytuj w JSON', - oneByOne: 'Dodawaj po kolei', - editInForm: 'Edytuj w Formularzu', - arrayValue: 'Wartość', - addArrayValue: 'Dodaj Wartość', - objectKey: 'Klucz', - objectType: 'Typ', - objectValue: 'Wartość Domyślna', - }, - storedContent: 'Przechowywana zawartość', - updatedAt: 'Zaktualizowano ', - }, - changeHistory: { - title: 'Historia Zmian', - placeholder: 'Nie dokonano jeszcze żadnych zmian', - clearHistory: 'Wyczyść Historię', - hint: 'Wskazówka', - hintText: 'Działania edycji są śledzone w historii zmian, która jest przechowywana na urządzeniu przez czas trwania tej sesji. Ta historia zostanie usunięta po opuszczeniu edytora.', - stepBackward_one: '{{count}} krok do tyłu', - stepBackward_other: '{{count}} kroki do tyłu', - stepForward_one: '{{count}} krok do przodu', - stepForward_other: '{{count}} kroki do przodu', - sessionStart: 'Początek sesji', - currentState: 'Aktualny stan', - noteAdd: 'Notatka dodana', - noteChange: 'Notatka zmieniona', - noteDelete: 'Notatka usunięta', - edgeDelete: 'Węzeł rozłączony', - nodeAdd: 'Węzeł dodany', - nodePaste: 'Węzeł wklejony', - nodeChange: 'Węzeł zmieniony', - nodeDelete: 'Węzeł usunięty', - nodeResize: 'Węzeł zmieniony rozmiar', - nodeConnect: 'Węzeł połączony', - nodeTitleChange: 'Tytuł węzła zmieniony', - nodeDescriptionChange: 'Opis węzła zmieniony', - nodeDragStop: 'Węzeł przeniesiony', - }, - errorMsg: { - fieldRequired: '{{field}} jest wymagane', - authRequired: 'Wymagana autoryzacja', - invalidJson: '{{field}} jest nieprawidłowym JSON-em', - fields: { - variable: 'Nazwa zmiennej', - variableValue: 'Wartość zmiennej', - code: 'Kod', - model: 'Model', - rerankModel: 'Model rerank', - visionVariable: 'Zmienna wizji', - }, - invalidVariable: 'Nieprawidłowa zmienna', - rerankModelRequired: 'Przed włączeniem Rerank Model upewnij się, że model został pomyślnie skonfigurowany w ustawieniach.', - noValidTool: '{{field}} nie wybrano prawidłowego narzędzia', - toolParameterRequired: '{{field}}: parametr [{{param}}] jest wymagany', - startNodeRequired: 'Najpierw dodaj węzeł początkowy przed {{operation}}', - }, - singleRun: { - testRun: 'Testowe uruchomienie ', - startRun: 'Rozpocznij uruchomienie', - running: 'Uruchamianie', - testRunIteration: 'Iteracja testowego uruchomienia', - back: 'Wstecz', - iteration: 'Iteracja', - loop: 'Pętla', - preparingDataSource: 'Przygotowywanie źródła danych', - reRun: 'Ponowne uruchomienie', - }, - tabs: { - 'tools': 'Narzędzia', - 'allTool': 'Wszystkie', - 'customTool': 'Niestandardowe', - 'workflowTool': 'Przepływ pracy', - 'question-understand': 'Zrozumienie pytania', - 'logic': 'Logika', - 'transform': 'Transformacja', - 'utilities': 'Narzędzia pomocnicze', - 'noResult': 'Nie znaleziono dopasowań', - 'searchTool': 'Wyszukiwarka', - 'agent': 'Strategia agenta', - 'plugin': 'Wtyczka', - 'searchBlock': 'Wyszukaj węzeł', - 'blocks': 'Węzły', - 'addAll': 'Dodaj wszystko', - 'allAdded': 'Wszystko dodane', - 'sources': 'Źródeł', - 'searchDataSource': 'Wyszukiwanie w źródle danych', - 'start': 'Start', - 'searchTrigger': 'Wyzwalacze wyszukiwania...', - 'allTriggers': 'Wszystkie wyzwalacze', - 'noPluginsFound': 'Nie znaleziono żadnych wtyczek', - 'requestToCommunity': 'Prośby do społeczności', - 'featuredTools': 'Polecane', - 'showMoreFeatured': 'Pokaż więcej', - 'showLessFeatured': 'Pokaż mniej', - 'installed': 'Zainstalowano', - 'pluginByAuthor': 'Przez {{author}}', - 'usePlugin': 'Wybierz narzędzie', - 'hideActions': 'Ukryj narzędzia', - 'noFeaturedPlugins': 'Odkryj więcej narzędzi w Marketplace', - 'noFeaturedTriggers': 'Odkryj więcej wyzwalaczy w Marketplace', - 'startDisabledTip': 'Węzeł wyzwalacza i węzeł wprowadzania danych przez użytkownika wzajemnie się wykluczają.', - }, - blocks: { - 'start': 'Start', - 'end': 'Wyjście', - 'answer': 'Odpowiedź', - 'llm': 'LLM', - 'knowledge-retrieval': 'Wyszukiwanie wiedzy', - 'question-classifier': 'Klasyfikator pytań', - 'if-else': 'JEŚLI/W PRZECIWNYM WYPADKU', - 'code': 'Kod', - 'template-transform': 'Szablon', - 'http-request': 'Żądanie HTTP', - 'variable-assigner': 'Agregator zmiennych', - 'variable-aggregator': 'Agregator zmiennych', - 'assigner': 'Przypisywacz Zmiennych', - 'iteration-start': 'Początek iteracji', - 'iteration': 'Iteracja', - 'parameter-extractor': 'Ekstraktor parametrów', - 'document-extractor': 'Ekstraktor dokumentów', - 'list-operator': 'Operator listy', - 'agent': 'Agent', - 'loop-start': 'Początek pętli', - 'loop-end': 'Wyjście z pętli', - 'loop': 'Pętla', - 'knowledge-index': 'Baza wiedzy', - 'datasource': 'Źródło danych', - 'originalStartNode': 'oryginalny węzeł początkowy', - 'trigger-schedule': 'Wyzwalacz harmonogramu', - 'trigger-webhook': 'Wywołanie webhooka', - 'trigger-plugin': 'Wyzwalacz wtyczki', - }, - blocksAbout: { - 'start': 'Zdefiniuj początkowe parametry uruchamiania przepływu pracy', - 'end': 'Zdefiniuj wyjście i typ wyniku przepływu pracy', - 'answer': 'Zdefiniuj treść odpowiedzi w rozmowie', - 'llm': 'Wywołaj duże modele językowe do odpowiadania na pytania lub przetwarzania języka naturalnego', - 'knowledge-retrieval': 'Pozwala na wyszukiwanie treści tekstowych związanych z pytaniami użytkowników z bazy wiedzy', - 'question-classifier': 'Zdefiniuj warunki klasyfikacji pytań użytkowników, LLM może definiować, jak rozmowa postępuje na podstawie opisu klasyfikacji', - 'if-else': 'Pozwala na podział przepływu pracy na dwie gałęzie na podstawie warunków if/else', - 'code': 'Wykonaj fragment kodu Python lub NodeJS, aby wdrożyć niestandardową logikę', - 'template-transform': 'Konwertuj dane na ciąg znaków przy użyciu składni szablonu Jinja', - 'http-request': 'Pozwala na wysyłanie żądań serwera za pomocą protokołu HTTP', - 'variable-assigner': 'Zbierz zmienne z wielu gałęzi do jednej zmiennej dla jednolitej konfiguracji węzłów końcowych.', - 'assigner': 'Węzeł przypisania zmiennych służy do przypisywania wartości do zmiennych zapisywalnych (takich jak zmienne konwersacji).', - 'variable-aggregator': 'Zbierz zmienne z wielu gałęzi do jednej zmiennej dla jednolitej konfiguracji węzłów końcowych.', - 'iteration': 'Wykonuj wielokrotne kroki na liście obiektów, aż wszystkie wyniki zostaną wypisane.', - 'parameter-extractor': 'Użyj LLM do wyodrębnienia strukturalnych parametrów z języka naturalnego do wywołań narzędzi lub żądań HTTP.', - 'document-extractor': 'Służy do analizowania przesłanych dokumentów w treści tekstowej, która jest łatwo zrozumiała dla LLM.', - 'list-operator': 'Służy do filtrowania lub sortowania zawartości tablicy.', - 'agent': 'Wywoływanie dużych modeli językowych w celu odpowiadania na pytania lub przetwarzania języka naturalnego', - 'loop': 'Wykonaj pętlę logiki, dopóki nie zostanie spełniony warunek zakończenia lub nie zostanie osiągnięta maksymalna liczba iteracji.', - 'loop-end': 'Odpowiada "break". Ten węzeł nie ma elementów konfiguracyjnych. Gdy ciało pętli dotrze do tego węzła, pętla zostaje zakończona.', - 'knowledge-index': 'Baza wiedzy o', - 'datasource': 'Informacje o źródle danych', - 'trigger-schedule': 'Wyzwalacz przepływu pracy oparty na czasie, który uruchamia przepływy pracy według harmonogramu', - 'trigger-webhook': 'Webhook Trigger odbiera przesyłki HTTP z systemów zewnętrznych, aby automatycznie uruchamiać procesy robocze.', - 'trigger-plugin': 'Wyzwalacz integracji zewnętrznej, który uruchamia przepływy pracy na podstawie zdarzeń z platformy zewnętrznej', - }, - operator: { - zoomIn: 'Powiększ', - zoomOut: 'Pomniejsz', - zoomTo50: 'Powiększ do 50%', - zoomTo100: 'Powiększ do 100%', - zoomToFit: 'Dopasuj do ekranu', - alignMiddle: 'Środek', - alignTop: 'Do góry', - distributeHorizontal: 'Rozmieść poziomo', - alignCenter: 'Centrum', - alignRight: 'Prawy', - alignNodes: 'Wyrównywanie węzłów', - selectionAlignment: 'Wyrównanie zaznaczenia', - horizontal: 'Poziomy', - distributeVertical: 'Rozmieść pionowo', - alignBottom: 'Dół', - alignLeft: 'Lewy', - vertical: 'Pionowy', - }, - panel: { - userInputField: 'Pole wprowadzania użytkownika', - helpLink: 'Pomoc', - about: 'O', - createdBy: 'Stworzone przez ', - nextStep: 'Następny krok', - runThisStep: 'Uruchom ten krok', - checklist: 'Lista kontrolna', - checklistTip: 'Upewnij się, że wszystkie problemy zostały rozwiązane przed opublikowaniem', - checklistResolved: 'Wszystkie problemy zostały rozwiązane', - change: 'Zmień', - optional: '(opcjonalne)', - selectNextStep: 'Wybierz następny krok', - addNextStep: 'Dodaj następny krok w tym procesie roboczym', - changeBlock: 'Zmień węzeł', - organizeBlocks: 'Organizuj węzły', - minimize: 'Wyjdź z trybu pełnoekranowego', - maximize: 'Maksymalizuj płótno', - scrollToSelectedNode: 'Przewiń do wybranego węzła', - optional_and_hidden: '(opcjonalne i ukryte)', - goTo: 'Idź do', - startNode: 'Węzeł początkowy', - openWorkflow: 'Otwórz przepływ pracy', - }, - nodes: { - common: { - outputVars: 'Zmienne wyjściowe', - insertVarTip: 'Wstaw zmienną', - memory: { - memory: 'Pamięć', - memoryTip: 'Ustawienia pamięci rozmowy', - windowSize: 'Rozmiar okna', - conversationRoleName: 'Nazwa roli w rozmowie', - user: 'Prefiks użytkownika', - assistant: 'Prefiks asystenta', - }, - memories: { - title: 'Pamięci', - tip: 'Pamięć rozmowy', - builtIn: 'Wbudowane', - }, - errorHandle: { - none: { - desc: 'Węzeł przestanie działać, jeśli wystąpi wyjątek i nie zostanie obsłużony', - title: 'Żaden', - }, - defaultValue: { - title: 'Wartość domyślna', - desc: 'Gdy wystąpi błąd, określ statyczną zawartość wyjściową.', - tip: 'W przypadku błędu, zwróci wartość poniżej.', - inLog: 'Wyjątek węzła, wyprowadzanie zgodnie z wartościami domyślnymi.', - output: 'Wyjściowa wartość domyślna', - }, - failBranch: { - title: 'Gałąź Fail (Gałąź Niepowodzenia', - customize: 'Przejdź do kanwy, aby dostosować logikę gałęzi niepowodzenia.', - customizeTip: 'Gdy gałąź fail jest aktywowana, wyjątki zgłaszane przez węzły nie zakończą procesu. Zamiast tego automatycznie wykona predefiniowaną gałąź niepowodzenia, co pozwoli Ci elastycznie dostarczać komunikaty o błędach, raporty, poprawki lub pomijać akcje.', - inLog: 'Wyjątek węzła, automatycznie wykona gałąź niepowodzenia. Dane wyjściowe węzła zwrócą typ błędu i komunikat o błędzie, a następnie przekażą je do podrzędnego.', - desc: 'Gdy wystąpi błąd, wykona gałąź wyjątku', - }, - partialSucceeded: { - tip: 'W procesie {{num}} węzły działają nieprawidłowo, przejdź do śledzenia, aby sprawdzić dzienniki.', - }, - tip: 'Strategia obsługi wyjątków, wyzwalana, gdy węzeł napotka wyjątek.', - title: 'Obsługa błędów', - }, - retry: { - retry: 'Ponów próbę', - maxRetries: 'Maksymalna liczba ponownych prób', - retryInterval: 'Interwał ponawiania prób', - retryTimes: 'Ponów próbę {{times}} razy w przypadku niepowodzenia', - retrying: 'Ponawianie...', - retrySuccessful: 'Ponawianie próby powiodło się', - retryFailed: 'Ponawianie próby nie powiodło się', - times: 'razy', - retries: '{{liczba}} Ponownych prób', - retryOnFailure: 'Ponawianie próby w przypadku niepowodzenia', - retryFailedTimes: '{{times}} ponawianie prób nie powiodło się', - ms: 'Ms', - }, - typeSwitch: { - variable: 'Użyj zmiennej', - input: 'Wartość wejściowa', - }, - inputVars: 'Zmienne wejściowe', - pluginNotInstalled: 'Wtyczka nie jest zainstalowana', - }, - start: { - required: 'wymagane', - inputField: 'Pole wejściowe', - builtInVar: 'Wbudowane zmienne', - outputVars: { - query: 'Wprowadzenie użytkownika', - memories: { - des: 'Historia rozmowy', - type: 'typ wiadomości', - content: 'treść wiadomości', - }, - files: 'Lista plików', - }, - noVarTip: 'Ustaw wejścia, które mogą być używane w przepływie pracy', - }, - end: { - outputs: 'Wyniki', - output: { - type: 'typ wyniku', - variable: 'zmienna wyjściowa', - }, - type: { - 'none': 'Brak', - 'plain-text': 'Zwykły tekst', - 'structured': 'Strukturalny', - }, - }, - answer: { - answer: 'Odpowiedź', - outputVars: 'Zmienne wyjściowe', - }, - llm: { - model: 'model', - variables: 'zmienne', - context: 'kontekst', - contextTooltip: 'Możesz zaimportować wiedzę jako kontekst', - notSetContextInPromptTip: 'Aby włączyć funkcję kontekstu, wypełnij zmienną kontekstu w PROMPT.', - prompt: 'prompt', - roleDescription: { - system: 'Podaj wysokopoziomowe instrukcje dla rozmowy', - user: 'Podaj instrukcje, zapytania lub dowolne tekstowe wejście dla modelu', - assistant: 'Odpowiedzi modelu oparte na wiadomościach użytkownika', - }, - addMessage: 'Dodaj wiadomość', - vision: 'wizja', - files: 'Pliki', - resolution: { - name: 'Rozdzielczość', - high: 'Wysoka', - low: 'Niska', - }, - outputVars: { - output: 'Generowana treść', - reasoning_content: 'Treść rozumowania', - usage: 'Informacje o użyciu modelu', - }, - singleRun: { - variable: 'Zmienna', - }, - sysQueryInUser: 'sys.query w wiadomości użytkownika jest wymagane', - jsonSchema: { - warningTips: { - saveSchema: 'Proszę ukończyć edytowanie bieżącego pola przed zapisaniem schematu.', - }, - generate: 'Generować', - addChildField: 'Dodaj pole dziecka', - fieldNamePlaceholder: 'Nazwa pola', - resetDefaults: 'Resetuj', - generationTip: 'Możesz użyć języka naturalnego, aby szybko stworzyć schemat JSON.', - required: 'wymagane', - stringValidations: 'Walidacje ciągów', - promptPlaceholder: 'Opisz swój schemat JSON...', - promptTooltip: 'Przekształć opis tekstowy w ustandaryzowaną strukturę schematu JSON.', - title: 'Strukturalny schemat wyjścia', - instruction: 'Instrukcja', - doc: 'Dowiedz się więcej o zorganizowanym wyjściu', - descriptionPlaceholder: 'Dodaj opis', - regenerate: 'Regeneruj', - generateJsonSchema: 'Generuj schemat JSON', - generatedResult: 'Wygenerowany wynik', - showAdvancedOptions: 'Pokaż zaawansowane opcje', - apply: 'Zastosować', - generating: 'Generowanie schematu JSON...', - import: 'Importuj z JSON', - resultTip: 'Oto wygenerowany wynik. Jeśli nie jesteś zadowolony, możesz wrócić i zmodyfikować swoje zapytanie.', - back: 'Tył', - addField: 'Dodaj pole', - }, - reasoningFormat: { - tooltip: 'Wyodrębnij treść z tagów think i przechowaj ją w polu reasoning_content.', - separated: 'Oddziel tagi myślenia', - tagged: 'Zachowaj myśl tagi', - title: 'Włącz separację tagów uzasadnienia', - }, - }, - knowledgeRetrieval: { - queryVariable: 'Zmienna zapytania', - knowledge: 'Wiedza', - outputVars: { - output: 'Odzyskane dane segmentowane', - content: 'Treść segmentowana', - title: 'Tytuł segmentowany', - icon: 'Ikona segmentowana', - url: 'URL segmentowany', - metadata: 'Inne metadane', - files: 'Pobrane pliki', - }, - metadata: { - options: { - disabled: { - title: 'Wyłączone', - subTitle: 'Nie włączanie filtrowania metadanych', - }, - automatic: { - desc: 'Automatycznie generuj warunki filtracji metadanych na podstawie zmiennej zapytania', - title: 'Automatyczny', - subTitle: 'Automatycznie generuj warunki filtracji metadanych na podstawie zapytania użytkownika', - }, - manual: { - subTitle: 'Ręcznie dodaj warunki filtrowania metadanych', - title: 'Ręczny', - }, - }, - panel: { - conditions: 'Warunki', - title: 'Warunki filtru metadanych', - placeholder: 'Wprowadź wartość', - search: 'Szukaj metadanych', - datePlaceholder: 'Wybierz czas...', - add: 'Dodaj warunek', - select: 'Wybierz zmienną...', - }, - title: 'Filtrowanie metadanych', - tip: 'Filtracja metadanych to proces wykorzystania atrybutów metadanych (takich jak tagi, kategorie lub uprawnienia dostępu) do precyzowania i kontrolowania pozyskiwania istotnych informacji w systemie.', - }, - queryText: 'Tekst zapytania', - queryAttachment: 'Wyszukaj obrazy', - }, - http: { - inputVars: 'Zmienne wejściowe', - api: 'API', - apiPlaceholder: 'Wpisz URL, wpisz ‘/’, aby wstawić zmienną', - notStartWithHttp: 'API powinno zaczynać się od http:// lub https://', - key: 'Klucz', - value: 'Wartość', - bulkEdit: 'Edycja zbiorcza', - keyValueEdit: 'Edycja klucz-wartość', - headers: 'Nagłówki', - params: 'Parametry', - body: 'Treść', - outputVars: { - body: 'Treść odpowiedzi', - statusCode: 'Kod statusu odpowiedzi', - headers: 'Lista nagłówków odpowiedzi w formacie JSON', - files: 'Lista plików', - }, - authorization: { - 'authorization': 'Autoryzacja', - 'authorizationType': 'Typ autoryzacji', - 'no-auth': 'Brak', - 'api-key': 'Klucz API', - 'auth-type': 'Typ autoryzacji', - 'basic': 'Podstawowa', - 'bearer': 'Bearer', - 'custom': 'Niestandardowa', - 'api-key-title': 'Klucz API', - 'header': 'Nagłówek', - }, - insertVarPlaceholder: 'wpisz \'/\', aby wstawić zmienną', - timeout: { - title: 'Limit czasu', - connectLabel: 'Limit czasu połączenia', - connectPlaceholder: 'Wpisz limit czasu połączenia w sekundach', - readLabel: 'Limit czasu odczytu', - readPlaceholder: 'Wpisz limit czasu odczytu w sekundach', - writeLabel: 'Limit czasu zapisu', - writePlaceholder: 'Wpisz limit czasu zapisu w sekundach', - }, - type: 'Typ', - binaryFileVariable: 'Binarna zmienna pliku', - extractListPlaceholder: 'Wprowadź indeks elementu listy, wpisz "/" wstaw zmienną', - curl: { - placeholder: 'Wklej tutaj ciąg cURL', - title: 'Importowanie z cURL', - }, - verifySSL: { - title: 'Zweryfikuj certyfikat SSL', - warningTooltip: 'Wyłączenie weryfikacji SSL nie jest zalecane w środowiskach produkcyjnych. Powinno to być używane tylko w rozwoju lub testowaniu, ponieważ naraża połączenie na zagrożenia bezpieczeństwa, takie jak ataki typu man-in-the-middle.', - }, - }, - code: { - inputVars: 'Zmienne wejściowe', - outputVars: 'Zmienne wyjściowe', - advancedDependencies: 'Zaawansowane zależności', - advancedDependenciesTip: 'Dodaj niektóre preładowane zależności, które zajmują więcej czasu lub nie są domyślnie wbudowane', - searchDependencies: 'Wyszukaj zależności', - syncFunctionSignature: 'Zsynchronizuj sygnaturę funkcji z kodem', - }, - templateTransform: { - inputVars: 'Zmienne wejściowe', - code: 'Kod', - codeSupportTip: 'Obsługuje tylko Jinja2', - outputVars: { - output: 'Przekształcona treść', - }, - }, - ifElse: { - if: 'Jeśli', - else: 'W przeciwnym razie', - elseDescription: 'Używane do określenia logiki, która powinna być wykonana, gdy warunek if nie jest spełniony.', - and: 'i', - or: 'lub', - operator: 'Operator', - notSetVariable: 'Najpierw ustaw zmienną', - comparisonOperator: { - 'contains': 'zawiera', - 'not contains': 'nie zawiera', - 'start with': 'zaczyna się od', - 'end with': 'kończy się na', - 'is': 'jest', - 'is not': 'nie jest', - 'empty': 'jest pusty', - 'not empty': 'nie jest pusty', - 'null': 'jest null', - 'not null': 'nie jest null', - 'in': 'w', - 'not exists': 'nie istnieje', - 'exists': 'Istnieje', - 'all of': 'wszystkie z nich', - 'not in': 'nie w', - 'before': 'przed', - 'after': 'po', - }, - enterValue: 'Wpisz wartość', - addCondition: 'Dodaj warunek', - conditionNotSetup: 'Warunek NIE został ustawiony', - selectVariable: 'Wybierz zmienną...', - optionName: { - video: 'Wideo', - image: 'Obraz', - url: 'Adres URL', - localUpload: 'Przesyłanie lokalne', - doc: 'Doc', - audio: 'Dźwięk', - }, - addSubVariable: 'Zmienna podrzędna', - select: 'Wybrać', - }, - variableAssigner: { - title: 'Przypisz zmienne', - outputType: 'Typ wyjścia', - varNotSet: 'Zmienna nie została ustawiona', - noVarTip: 'Dodaj zmienne do przypisania', - type: { - string: 'Ciąg znaków', - number: 'Liczba', - object: 'Obiekt', - array: 'Tablica', - }, - aggregationGroup: 'Grupa agregacji', - aggregationGroupTip: 'Włączenie tej funkcji pozwala na agregowanie wielu zestawów zmiennych przez agregator zmiennych.', - addGroup: 'Dodaj grupę', - outputVars: { - varDescribe: 'Wyjście {{groupName}}', - }, - setAssignVariable: 'Ustaw przypisanie zmiennej', - }, - assigner: { - 'assignedVariable': 'Przypisana Zmienna', - 'writeMode': 'Tryb Zapisu', - 'writeModeTip': 'Gdy PRZYPISANA ZMIENNA jest tablicą, tryb dopisywania dodaje na końcu.', - 'over-write': 'Nadpisz', - 'append': 'Dopisz', - 'plus': 'Plus', - 'clear': 'Wyczyść', - 'setVariable': 'Ustaw Zmienną', - 'variable': 'Zmienna', - 'operations': { - 'over-write': 'Zastąpić', - 'set': 'Zbiór', - 'title': 'Operacja', - 'overwrite': 'Zastąpić', - '*=': '*=', - '/=': '/=', - '-=': '-=', - 'extend': 'Rozszerzyć', - '+=': '+=', - 'clear': 'Jasny', - 'append': 'Dołączyć', - 'remove-first': 'Usuń pierwszy', - 'remove-last': 'Usuń ostatni', - }, - 'variables': 'Zmiennych', - 'selectAssignedVariable': 'Wybierz przypisaną zmienną...', - 'varNotSet': 'Zmienna NIE jest ustawiona', - 'noAssignedVars': 'Brak dostępnych przypisanych zmiennych', - 'assignedVarsDescription': 'Przypisane zmienne muszą być zmiennymi zapisywalnymi, takimi jak zmienne konwersacji.', - 'setParameter': 'Ustaw parametr...', - 'noVarTip': 'Kliknij przycisk "+", aby dodać zmienne', - }, - tool: { - inputVars: 'Zmienne wejściowe', - outputVars: { - text: 'treść generowana przez narzędzie', - files: { - title: 'pliki generowane przez narzędzie', - type: 'Typ wsparcia. Obecnie tylko obsługuje obraz', - transfer_method: 'Metoda transferu. Wartość to remote_url lub local_file', - url: 'URL obrazu', - upload_file_id: 'ID przesłanego pliku', - }, - json: 'JSON wygenerowany przez narzędzien', - }, - authorize: 'Autoryzuj', - insertPlaceholder2: 'wstaw zmienną', - settings: 'Ustawienia', - insertPlaceholder1: 'Wpisz lub naciśnij', - }, - questionClassifiers: { - model: 'model', - inputVars: 'Zmienne wejściowe', - outputVars: { - className: 'Nazwa klasy', - usage: 'Informacje o użyciu modelu', - }, - class: 'Klasa', - classNamePlaceholder: 'Napisz nazwę swojej klasy', - advancedSetting: 'Zaawansowane ustawienia', - topicName: 'Nazwa tematu', - topicPlaceholder: 'Napisz nazwę swojego tematu', - addClass: 'Dodaj klasę', - instruction: 'Instrukcja', - instructionTip: 'Wprowadź dodatkowe instrukcje, aby pomóc klasyfikatorowi pytań lepiej zrozumieć, jak kategoryzować pytania.', - instructionPlaceholder: 'Napisz swoją instrukcję', - }, - parameterExtractor: { - inputVar: 'Zmienna wejściowa', - outputVars: { - isSuccess: 'Czy się udało. W przypadku sukcesu wartość wynosi 1, w przypadku niepowodzenia wartość wynosi 0.', - errorReason: 'Powód błędu', - usage: 'Informacje o użyciu modelu', - }, - extractParameters: 'Wyodrębnij parametry', - importFromTool: 'Importuj z narzędzi', - addExtractParameter: 'Dodaj parametr wyodrębniania', - addExtractParameterContent: { - name: 'Nazwa', - namePlaceholder: 'Nazwa parametru wyodrębniania', - type: 'Typ', - typePlaceholder: 'Typ parametru wyodrębniania', - description: 'Opis', - descriptionPlaceholder: 'Opis parametru wyodrębniania', - required: 'Wymagane', - requiredContent: 'Wymagane jest tylko jako odniesienie do wnioskowania modelu, a nie do obowiązkowej walidacji wyjścia parametru.', - }, - extractParametersNotSet: 'Parametry wyodrębniania nie zostały ustawione', - instruction: 'Instrukcja', - instructionTip: 'Wprowadź dodatkowe instrukcje, aby pomóc ekstraktorowi parametrów zrozumieć, jak wyodrębniać parametry.', - advancedSetting: 'Zaawansowane ustawienia', - reasoningMode: 'Tryb wnioskowania', - reasoningModeTip: 'Możesz wybrać odpowiedni tryb wnioskowania w zależności od zdolności modelu do reagowania na instrukcje dotyczące wywoływania funkcji lub zapytań.', - }, - iteration: { - deleteTitle: 'Usunąć węzeł iteracji?', - deleteDesc: 'Usunięcie węzła iteracji usunie wszystkie węzły potomne', - input: 'Wejście', - output: 'Zmienne wyjściowe', - iteration_one: '{{count}} Iteracja', - iteration_other: '{{count}} Iteracje', - currentIteration: 'Bieżąca iteracja', - ErrorMethod: { - continueOnError: 'kontynuacja w przypadku błędu', - operationTerminated: 'Zakończone', - removeAbnormalOutput: 'usuń-nieprawidłowe-wyjście', - }, - comma: ',', - parallelModeUpper: 'TRYB RÓWNOLEGŁY', - parallelModeEnableTitle: 'Włączony tryb równoległy', - MaxParallelismTitle: 'Maksymalna równoległość', - error_one: '{{liczba}} Błąd', - error_other: '{{liczba}} Błędy', - parallelPanelDesc: 'W trybie równoległym zadania w iteracji obsługują wykonywanie równoległe.', - parallelMode: 'Tryb równoległy', - MaxParallelismDesc: 'Maksymalna równoległość służy do kontrolowania liczby zadań wykonywanych jednocześnie w jednej iteracji.', - parallelModeEnableDesc: 'W trybie równoległym zadania w iteracjach obsługują wykonywanie równoległe. Możesz to skonfigurować w panelu właściwości po prawej stronie.', - answerNodeWarningDesc: 'Ostrzeżenie w trybie równoległym: węzły odpowiedzi, przypisania zmiennych konwersacji i trwałe operacje odczytu/zapisu w iteracjach mogą powodować wyjątki.', - errorResponseMethod: 'Metoda odpowiedzi na błąd', - flattenOutput: 'Spłaszcz wyjście', - flattenOutputDesc: 'Po włączeniu, jeśli wszystkie wyniki iteracji są tablicami, zostaną one spłaszczone do pojedynczej tablicy. Po wyłączeniu wyniki zachowają zagnieżdżoną strukturę tablicy.', - }, - note: { - editor: { - link: 'Łącze', - medium: 'Średni', - small: 'Mały', - italic: 'Kursywa', - enterUrl: 'Wpisz adres URL...', - showAuthor: 'Pokaż autora', - bold: 'Śmiały', - unlink: 'Odłączyć', - bulletList: 'Lista punktowana', - large: 'Duży', - openLink: 'Otwierać', - strikethrough: 'Przekreślenie', - invalidUrl: 'Nieprawidłowy adres URL', - placeholder: 'Napisz swoją notatkę...', - }, - addNote: 'Dodaj notatkę', - }, - docExtractor: { - outputVars: { - text: 'Wyodrębniony tekst', - }, - learnMore: 'Dowiedz się więcej', - inputVar: 'Zmienna wejściowa', - supportFileTypes: 'Obsługiwane typy plików: {{types}}.', - }, - listFilter: { - outputVars: { - result: 'Wynik filtrowania', - last_record: 'Ostatni rekord', - first_record: 'Pierwszy rekord', - }, - desc: 'DESC', - asc: 'ASC', - inputVar: 'Zmienna wejściowa', - limit: 'Pierwsze N', - orderBy: 'Sortuj według', - filterConditionComparisonOperator: 'Operator porównania warunków filtru', - filterConditionKey: 'Klucz warunku filtra', - filterCondition: 'Stan filtra', - filterConditionComparisonValue: 'Wartość warunku filtru', - selectVariableKeyPlaceholder: 'Wybierz klucz zmiennej podrzędnej', - extractsCondition: 'Wyodrębnij element N', - }, - agent: { - strategy: { - configureTip: 'Skonfiguruj strategię agentyczną.', - selectTip: 'Wybierz strategię agentyczną', - searchPlaceholder: 'Strategia agentyczna wyszukiwania', - configureTipDesc: 'Po skonfigurowaniu strategii agentycznej ten węzeł automatycznie załaduje pozostałe konfiguracje. Strategia będzie miała wpływ na mechanizm wieloetapowego rozumowania narzędziowego.', - shortLabel: 'Strategia', - label: 'Strategia agentyczna', - tooltip: 'Różne strategie agentowe określają, w jaki sposób system planuje i wykonuje wieloetapowe wywołania narzędzi', - }, - pluginInstaller: { - installing: 'Instalowanie', - install: 'Instalować', - }, - modelNotInMarketplace: { - desc: 'Ten model jest instalowany z repozytorium lokalnego lub GitHub. Proszę użyć po instalacji.', - manageInPlugins: 'Zarządzanie we wtyczkach', - title: 'Model nie jest zainstalowany', - }, - modelNotSupport: { - desc: 'Zainstalowana wersja wtyczki nie zapewnia tego modelu.', - descForVersionSwitch: 'Zainstalowana wersja wtyczki nie zapewnia tego modelu. Kliknij, aby zmienić wersję.', - title: 'Nieobsługiwany model', - }, - modelSelectorTooltips: { - deprecated: 'Ten model jest przestarzały', - }, - outputVars: { - files: { - title: 'Pliki generowane przez agenta', - type: 'Rodzaj wsparcia. Teraz obsługuje tylko obraz', - transfer_method: 'Metoda transferu. Wartość to remote_url lub local_file', - upload_file_id: 'Identyfikator przesyłanego pliku', - url: 'Adres URL obrazu', - }, - json: 'Kod JSON wygenerowany przez agenta', - text: 'Treści generowane przez agentów', - usage: 'Informacje o użyciu modelu', - }, - checkList: { - strategyNotSelected: 'Nie wybrano strategii', - }, - installPlugin: { - install: 'Instalować', - changelog: 'Dziennik zmian', - desc: 'Informacje o instalacji następującej wtyczki', - cancel: 'Anuluj', - title: 'Zainstaluj wtyczkę', - }, - notAuthorized: 'Nieautoryzowany', - pluginNotInstalledDesc: 'Ta wtyczka jest instalowana z GitHub. Przejdź do Wtyczki, aby ponownie zainstalować', - toolNotAuthorizedTooltip: '{{narzędzie}} Nieautoryzowany', - linkToPlugin: 'Link do wtyczek', - maxIterations: 'Maksymalna liczba iteracji', - strategyNotFoundDesc: 'Zainstalowana wersja wtyczki nie zapewnia tej strategii.', - strategyNotInstallTooltip: '{{strategy}} nie jest zainstalowany', - modelNotSelected: 'Nie wybrano modelu', - pluginNotFoundDesc: 'Ta wtyczka jest instalowana z GitHub. Przejdź do Wtyczki, aby ponownie zainstalować', - tools: 'Narzędzia', - unsupportedStrategy: 'Nieobsługiwana strategia', - configureModel: 'Konfiguruj model', - toolbox: 'skrzynka z narzędziami', - modelNotInstallTooltip: 'Ten model nie jest zainstalowany', - strategyNotFoundDescAndSwitchVersion: 'Zainstalowana wersja wtyczki nie zapewnia tej strategii. Kliknij, aby zmienić wersję.', - toolNotInstallTooltip: '{{tool}} nie jest zainstalowany', - pluginNotInstalled: 'Ta wtyczka nie jest zainstalowana', - learnMore: 'Dowiedz się więcej', - strategyNotSet: 'Nie ustawiono strategii agentalnej', - model: 'model', - parameterSchema: 'Schemat parametrów', - clickToViewParameterSchema: 'Kliknij, aby zobaczyć schemat parametrów', - }, - loop: { - ErrorMethod: { - operationTerminated: 'Zakończony', - removeAbnormalOutput: 'Usuń nietypowy wynik', - continueOnError: 'Kontynuuj w przypadku błędu', - }, - inputMode: 'Tryb wejściowy', - loop_other: '{{count}} Pętle', - deleteDesc: 'Usunięcie węzła pętli spowoduje usunięcie wszystkich węzłów potomnych.', - loopVariables: 'Zmienne pętli', - variableName: 'Nazwa zmiennej', - output: 'Zmienna wyjściowa', - breakCondition: 'Warunek zakończenia pętli', - input: 'Wprowadzenie', - initialLoopVariables: 'Początkowe zmienne pętli', - error_one: '{{count}} Błąd', - loopNode: 'Węzeł pętli', - loop_one: '{{count}} pętla', - currentLoop: 'Pętla prądowa', - finalLoopVariables: 'Ostateczne zmienne pętli', - comma: ',', - loopMaxCountError: 'Proszę wprowadzić prawidłową maksymalną liczbę iteracji, mieszczącą się w przedziale od 1 do {{maxCount}}', - error_other: '{{count}} błędów', - totalLoopCount: 'Całkowita liczba pętli: {{count}}', - exitConditionTip: 'Węzeł pętli potrzebuje przynajmniej jednego warunku wyjścia.', - setLoopVariables: 'Ustaw zmienne w zakresie pętli', - loopMaxCount: 'Maksymalna liczba pętli', - errorResponseMethod: 'Metoda odpowiedzi na błąd', - breakConditionTip: 'Tylko zmienne w pętlach z warunkami zakończenia oraz zmienne konwersacyjne mogą być odwoływane.', - currentLoopCount: 'Aktualna liczba pętli: {{count}}', - deleteTitle: 'Usunąć węzeł pętli?', - }, - dataSource: { - add: 'Dodawanie źródła danych', - supportedFileFormatsPlaceholder: 'Rozszerzenie pliku, e.g. doc', - supportedFileFormats: 'Obsługiwane formaty plików', - }, - knowledgeBase: { - chunkStructureTip: { - learnMore: 'Dowiedz się więcej', - title: 'Wybierz strukturę porcji', - message: 'Baza wiedzy Dify obsługuje trzy struktury fragmentacji: Ogólne, Nadrzędne-podrzędne oraz Q&A. Każda baza wiedzy może mieć tylko jedną strukturę. Dane wyjściowe z poprzedniego węzła muszą być wyrównane z wybraną strukturą fragmentów. Należy pamiętać, że wybór struktury fragmentacji ma wpływ na dostępne metody indeksowania.', - }, - aboutRetrieval: 'o metodzie wyszukiwania.', - chunkStructure: 'Struktura porcji', - retrievalSettingIsRequired: 'Wymagane jest ustawienie pobierania', - changeChunkStructure: 'Zmień strukturę porcji', - chooseChunkStructure: 'Wybieranie struktury fragmentów', - indexMethodIsRequired: 'Metoda indeksowa jest wymagana', - chunkIsRequired: 'Wymagana jest struktura porcji', - chunksInput: 'Kawałki', - chunksInputTip: 'Zmienna wejściowa węzła bazy wiedzy to Chunks. Typ zmiennej to obiekt z określonym schematem JSON, który musi być zgodny z wybraną strukturą chunk.', - embeddingModelIsRequired: 'Wymagany jest model osadzania', - chunksVariableIsRequired: 'Wymagana jest zmienna Chunks', - rerankingModelIsRequired: 'Wymagany jest model ponownego rankingu', - embeddingModelIsInvalid: 'Model osadzania jest nieprawidłowy', - rerankingModelIsInvalid: 'Model ponownego rankingowania jest nieprawidłowy', - }, - triggerPlugin: { - authorized: 'Autoryzowany', - notConfigured: 'Nie skonfigurowano', - notAuthorized: 'Nieautoryzowany', - selectSubscription: 'Wybierz subskrypcję', - availableSubscriptions: 'Dostępne subskrypcje', - addSubscription: 'Dodaj nową subskrypcję', - removeSubscription: 'Usuń subskrypcję', - subscriptionRemoved: 'Subskrypcja została pomyślnie usunięta', - error: 'Błąd', - configuration: 'Konfiguracja', - remove: 'Usuń', - or: 'LUB', - useOAuth: 'Użyj OAuth', - useApiKey: 'Użyj klucza API', - authenticationFailed: 'Uwierzytelnianie nie powiodło się', - authenticationSuccess: 'Uwierzytelnianie powiodło się', - oauthConfigFailed: 'Konfiguracja OAuth nie powiodła się', - configureOAuthClient: 'Skonfiguruj klienta OAuth', - oauthClientDescription: 'Skonfiguruj dane uwierzytelniające klienta OAuth, aby włączyć uwierzytelnianie', - oauthClientSaved: 'Konfiguracja klienta OAuth została pomyślnie zapisana', - configureApiKey: 'Skonfiguruj klucz API', - apiKeyDescription: 'Skonfiguruj dane uwierzytelniające klucza API', - apiKeyConfigured: 'Klucz API został pomyślnie skonfigurowany', - configurationFailed: 'Konfiguracja nie powiodła się', - failedToStart: 'Nie udało się rozpocząć procesu uwierzytelniania', - credentialsVerified: 'Dane uwierzytelniające zostały pomyślnie zweryfikowane', - credentialVerificationFailed: 'Weryfikacja poświadczeń nie powiodła się', - verifyAndContinue: 'Zweryfikuj i kontynuuj', - configureParameters: 'Skonfiguruj parametry', - parametersDescription: 'Skonfiguruj parametry i właściwości wyzwalacza', - configurationComplete: 'Konfiguracja zakończona', - configurationCompleteDescription: 'Twój wyzwalacz został pomyślnie skonfigurowany', - configurationCompleteMessage: 'Twoja konfiguracja wyzwalacza jest teraz kompletna i gotowa do użycia.', - parameters: 'Parametry', - properties: 'Właściwości', - propertiesDescription: 'Dodatkowe właściwości konfiguracji dla tego wyzwalacza', - noConfigurationRequired: 'Nie jest wymagana dodatkowa konfiguracja dla tego wyzwalacza.', - subscriptionName: 'Nazwa subskrypcji', - subscriptionNameDescription: 'Wprowadź unikalną nazwę dla tej subskrypcji wyzwalacza', - subscriptionNamePlaceholder: 'Wpisz nazwę subskrypcji...', - subscriptionNameRequired: 'Nazwa subskrypcji jest wymagana', - subscriptionRequired: 'Wymagana jest subskrypcja', - }, - triggerSchedule: { - title: 'Harmonogram', - nodeTitle: 'Wyzwalacz harmonogramu', - notConfigured: 'Nie skonfigurowano', - useCronExpression: 'Użyj wyrażenia cron', - useVisualPicker: 'Użyj selektora wizualnego', - frequency: { - label: 'CZĘSTOTLIWOŚĆ', - hourly: 'Godzinowy', - daily: 'Codziennie', - weekly: 'Cotygodniowy', - monthly: 'Miesięczny', - }, - selectFrequency: 'Wybierz częstotliwość', - frequencyLabel: 'Częstotliwość', - nextExecution: 'Następna egzekucja', - weekdays: 'Dni tygodnia', - time: 'Czas', - cronExpression: 'Wyrażenie Cron', - nextExecutionTime: 'NASTĘPNY CZAS WYKONANIA', - nextExecutionTimes: 'Następne 5 terminów wykonania', - startTime: 'Czas rozpoczęcia', - executeNow: 'Wykonaj teraz', - selectDateTime: 'Wybierz datę i godzinę', - hours: 'Godziny', - minutes: 'Minuty', - onMinute: 'Za minutę', - days: 'Dni', - lastDay: 'Ostatni dzień', - lastDayTooltip: 'Nie wszystkie miesiące mają 31 dni. Użyj opcji „ostatni dzień”, aby wybrać ostatni dzień każdego miesiąca.', - mode: 'Moda', - timezone: 'Strefa czasowa', - visualConfig: 'Konfiguracja wizualna', - monthlyDay: 'Dzień miesiąca', - executionTime: 'Czas wykonywania', - invalidTimezone: 'Nieprawidłowa strefa czasowa', - invalidCronExpression: 'Nieprawidłowe wyrażenie cron', - noValidExecutionTime: 'Nie można obliczyć prawidłowego czasu wykonania', - executionTimeCalculationError: 'Nie udało się obliczyć czasów wykonania', - invalidFrequency: 'Nieprawidłowa częstotliwość', - invalidStartTime: 'Nieprawidłowy czas rozpoczęcia', - startTimeMustBeFuture: 'Czas rozpoczęcia musi być w przyszłości', - invalidTimeFormat: 'Nieprawidłowy format godziny (oczekiwano GG:MM AM/PM)', - invalidWeekday: 'Nieprawidłowy dzień tygodnia: {{weekday}}', - invalidMonthlyDay: 'Miesięczny dzień musi być między 1 a 31 lub „ostatni”', - invalidOnMinute: 'Minuta musi mieścić się w przedziale od 0 do 59', - invalidExecutionTime: 'Nieprawidłowy czas wykonania', - executionTimeMustBeFuture: 'Czas wykonania musi być w przyszłości', - }, - triggerWebhook: { - title: 'Wywołanie webhooka', - nodeTitle: '🔗 Wyzwalacz Webhook', - configPlaceholder: 'Konfiguracja wyzwalacza webhook zostanie tutaj wdrożona', - webhookUrl: 'Adres URL webhooka', - webhookUrlPlaceholder: 'Kliknij wygeneruj, aby utworzyć adres URL webhooka', - generate: 'Generuj', - copy: 'Kopiuj', - test: 'Test', - urlGenerated: 'Adres URL webhooka został pomyślnie wygenerowany', - urlGenerationFailed: 'Nie udało się wygenerować adresu URL webhooka', - urlCopied: 'Adres URL skopiowany do schowka', - method: 'Metoda', - contentType: 'Rodzaj treści', - queryParameters: 'Parametry zapytania', - headerParameters: 'Parametry nagłówka', - requestBodyParameters: 'Parametry ciała żądania', - parameterName: 'Nazwa zmiennej', - varName: 'Nazwa zmiennej', - varType: 'Rodzaj', - varNamePlaceholder: 'Wprowadź nazwę zmiennej...', - required: 'Wymagane', - addParameter: 'Dodaj', - addHeader: 'Dodaj', - noParameters: 'Nie skonfigurowano żadnych parametrów', - noQueryParameters: 'Brak skonfigurowanych parametrów zapytania', - noHeaders: 'Nie skonfigurowano nagłówków', - noBodyParameters: 'Brak skonfigurowanych parametrów ciała', - debugUrlTitle: 'Do testów zawsze używaj tego adresu URL', - debugUrlCopy: 'Kliknij, aby skopiować', - debugUrlCopied: 'Skopiowano!', - debugUrlPrivateAddressWarning: 'Ten adres URL wydaje się być adresem wewnętrznym, co może spowodować niepowodzenie żądań webhook. Możesz zmienić TRIGGER_URL na adres publiczny.', - errorHandling: 'Obsługa błędów', - errorStrategy: 'Obsługa błędów', - responseConfiguration: 'Odpowiedź', - asyncMode: 'Tryb asynchroniczny', - statusCode: 'Kod statusu', - responseBody: 'Treść odpowiedzi', - responseBodyPlaceholder: 'Napisz tutaj treść swojej odpowiedzi', - headers: 'Nagłówki', - validation: { - webhookUrlRequired: 'Adres URL webhooka jest wymagany', - invalidParameterType: 'Nieprawidłowy typ parametru "{{type}}" dla parametru "{{name}}"', - }, - }, - }, - tracing: { - stopBy: 'Zatrzymane przez {{user}}', - }, - variableReference: { - conversationVars: 'Zmienne konwersacji', - assignedVarsDescription: 'Przypisane zmienne muszą być zmiennymi zapisywalnymi, takimi jak', - noVarsForOperation: 'Nie ma dostępnych zmiennych do przypisania do wybranej operacji.', - noAssignedVars: 'Brak dostępnych przypisanych zmiennych', - noAvailableVars: 'Brak dostępnych zmiennych', - }, - versionHistory: { - filter: { - onlyShowNamedVersions: 'Pokazuj tylko wersje z nazwami', - all: 'Wszystko', - onlyYours: 'Tylko twój', - empty: 'Nie znaleziono odpowiadającej historii wersji', - reset: 'Resetuj filtr', - }, - editField: { - releaseNotes: 'Notatki o wydaniu', - releaseNotesLengthLimit: 'Notatki o wydaniu nie mogą przekraczać {{limit}} znaków', - title: 'Tytuł', - titleLengthLimit: 'Tytuł nie może przekraczać {{limit}} znaków', - }, - action: { - updateSuccess: 'Wersja zaktualizowana', - updateFailure: 'Nie udało się zaktualizować wersji', - deleteFailure: 'Nie udało się usunąć wersji', - deleteSuccess: 'Wersja usunięta', - restoreSuccess: 'Wersja przywrócona', - restoreFailure: 'Nie udało się przywrócić wersji', - copyIdSuccess: 'Identyfikator skopiowany do schowka', - }, - currentDraft: 'Aktualny szkic', - nameThisVersion: 'Nazwij tę wersję', - defaultName: 'Nienazwana wersja', - title: 'Wersje', - latest: 'Najnowszy', - releaseNotesPlaceholder: 'Opisz, co się zmieniło', - editVersionInfo: 'Edytuj informacje o wersji', - deletionTip: 'Usunięcie jest nieodwracalne, proszę potwierdzić.', - restorationTip: 'Po przywróceniu wersji bieżący szkic zostanie nadpisany.', - copyId: 'Kopiuj ID', - }, - debug: { - noData: { - runThisNode: 'Uruchom ten węzeł', - description: 'Wyniki ostatniego uruchomienia będą wyświetlane tutaj', - }, - variableInspect: { - trigger: { - clear: 'Czysty', - running: 'Buforowanie statusu działania', - cached: 'Wyświetl zapisane zmienne', - stop: 'Zatrzymaj bieg', - normal: 'Inspekcja zmiennych', - }, - title: 'Inspekcja zmiennych', - chatNode: 'Rozmowa', - envNode: 'Środowisko', - systemNode: 'System', - edited: 'Edytowany', - clearAll: 'Resetuj wszystko', - emptyLink: 'Dowiedz się więcej', - clearNode: 'Wyczyść pamięć podręczną zmiennej', - reset: 'Zresetuj do ostatniej wartości run', - view: 'Zobacz dziennik', - resetConversationVar: 'Zresetuj zmienną rozmowy do wartości domyślnej', - emptyTip: 'Po przejściu przez węzeł na kanwie lub uruchomieniu węzła krok po kroku, możesz zobaczyć bieżącą wartość zmiennej węzła w Inspektorze Zmiennych.', - export: 'eksport', - largeDataNoExport: 'Duże dane — tylko częściowy podgląd', - largeData: 'Duże dane, podgląd tylko do odczytu. Eksportuj, aby wyświetlić wszystko.', - exportToolTip: 'Eksportuj zmienną jako plik', - listening: { - title: 'Oczekiwanie na zdarzenia wywoływane przez wyzwalacze...', - tip: 'Możesz teraz symulować wywołania zdarzeń, wysyłając testowe żądania do punktu końcowego HTTP {{nodeName}} lub użyć go jako adresu URL do wywołań zwrotnych w celu debugowania zdarzeń na żywo. Wszystkie wyniki można przeglądać bezpośrednio w Inspektorze Zmiennych.', - tipPlugin: 'Teraz możesz tworzyć zdarzenia w {{- pluginName}} i pobierać wyniki z tych zdarzeń w Inspektorze Zmiennych.', - tipSchedule: 'Nasłuchiwanie zdarzeń z wyzwalaczy harmonogramu.\nNastępne zaplanowane uruchomienie: {{nextTriggerTime}}', - tipFallback: 'Oczekiwanie na nadchodzące zdarzenia wyzwalające. Wyniki pojawią się tutaj.', - defaultNodeName: 'ten wyzwalacz', - defaultPluginName: 'ten wtyczka wyzwalacz', - defaultScheduleTime: 'Nie skonfigurowano', - selectedTriggers: 'wybrane wyzwalacze', - stopButton: 'Stop', - }, - }, - settingsTab: 'Ustawienia', - lastRunTab: 'Ostatnie uruchomienie', - relations: { - dependencies: 'Zależności', - dependenciesDescription: 'Węzły, na których opiera się ten węzeł', - noDependents: 'Brak osób na utrzymaniu', - dependents: 'Zależności', - dependentsDescription: 'Węzły, które opierają się na tym węźle', - noDependencies: 'Brak zależności', - }, - relationsTab: 'Stosunków', - copyLastRun: 'Kopiuj ostatnie uruchomienie', - noLastRunFound: 'Nie znaleziono poprzedniego biegu.', - noMatchingInputsFound: 'Nie znaleziono pasujących danych wejściowych z ostatniego uruchomienia', - copyLastRunError: 'Nie udało się skopiować danych wejściowych z ostatniego uruchomienia', - lastOutput: 'Ostatni wynik', - lastRunInputsCopied: '{{count}} dane wejściowe skopiowane z ostatniego uruchomienia', - }, - sidebar: { - exportWarning: 'Eksportuj obecną zapisaną wersję', - exportWarningDesc: 'To wyeksportuje aktualnie zapisaną wersję twojego przepływu pracy. Jeśli masz niesave\'owane zmiany w edytorze, najpierw je zapisz, korzystając z opcji eksportu w kanwie przepływu pracy.', - }, - publishLimit: { - startNodeTitlePrefix: 'Uaktualnij do', - startNodeTitleSuffix: 'odblokuj nieograniczoną liczbę wyzwalaczy na przepływ pracy', - startNodeDesc: 'Osiągnąłeś limit 2 wyzwalaczy na przepływ pracy w tym planie. Zaktualizuj plan, aby opublikować ten przepływ pracy.', - }, - error: { - startNodeRequired: 'Najpierw dodaj węzeł początkowy przed {{operation}}', - operations: { - connectingNodes: 'łączące węzły', - addingNodes: 'dodawanie węzłów', - modifyingWorkflow: 'modyfikowanie przepływu pracy', - updatingWorkflow: 'aktualizowanie przepływu pracy', - }, - }, - customWebhook: 'Niestandardowy webhook', - difyTeam: 'Zespół Dify', - triggerStatus: { - enabled: 'WYZWALACZ', - disabled: 'WYZWALACZ • WYŁĄCZONY', - }, - entryNodeStatus: { - enabled: 'START', - disabled: 'START • WYŁĄCZONY', - }, - onboarding: { - title: 'Wybierz węzeł początkowy, aby rozpocząć', - description: 'Różne węzły początkowe mają różne możliwości. Nie martw się, zawsze możesz je później zmienić.', - userInputFull: 'Wprowadzanie użytkownika (oryginalny węzeł początkowy)', - userInputDescription: 'Węzeł startowy umożliwiający ustawianie zmiennych wejściowych użytkownika, z możliwością korzystania jako aplikacja internetowa, API usługi, serwer MCP oraz workflow.', - trigger: 'Spust', - triggerDescription: 'Wyzwalacze mogą służyć jako węzeł początkowy w przepływie pracy, na przykład zaplanowane zadania, niestandardowe webhooki lub integracje z innymi aplikacjami.', - back: 'Wstecz', - learnMore: 'Dowiedz się więcej', - aboutStartNode: 'o węźle startowym.', - escTip: { - press: 'Naciśnij', - key: 'esc', - toDismiss: 'zwolnić', - }, - }, -} - -export default translation diff --git a/web/i18n/pt-BR/app-annotation.json b/web/i18n/pt-BR/app-annotation.json new file mode 100644 index 0000000000..e206ab5388 --- /dev/null +++ b/web/i18n/pt-BR/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "Anotações", + "name": "Resposta de Anotação", + "editBy": "Resposta editada por {{author}}", + "noData": { + "title": "Sem anotações", + "description": "Você pode editar anotações no depuração do aplicativo ou importar anotações em massa aqui para obter uma resposta de alta qualidade." + }, + "table": { + "header": { + "question": "pergunta", + "answer": "resposta", + "createdAt": "criado em", + "hits": "acessos", + "actions": "ações", + "addAnnotation": "Adicionar Anotação", + "bulkImport": "Importação em Massa", + "bulkExport": "Exportação em Massa", + "clearAll": "Limpar Todas as Anotações", + "clearAllConfirm": "Excluir todas as anotações?" + } + }, + "editModal": { + "title": "Editar Resposta de Anotação", + "queryName": "Consulta do Usuário", + "answerName": "Bot Contador de Histórias", + "yourAnswer": "Sua Resposta", + "answerPlaceholder": "Digite sua resposta aqui", + "yourQuery": "Sua Consulta", + "queryPlaceholder": "Digite sua consulta aqui", + "removeThisCache": "Remover esta Anotação", + "createdAt": "Criado em" + }, + "addModal": { + "title": "Adicionar Resposta de Anotação", + "queryName": "Pergunta", + "answerName": "Resposta", + "answerPlaceholder": "Digite a resposta aqui", + "queryPlaceholder": "Digite a pergunta aqui", + "createNext": "Adicionar outra resposta anotada" + }, + "batchModal": { + "title": "Importação em Massa", + "csvUploadTitle": "Arraste e solte seu arquivo CSV aqui, ou ", + "browse": "navegue", + "tip": "O arquivo CSV deve seguir a seguinte estrutura:", + "question": "pergunta", + "answer": "resposta", + "contentTitle": "conteúdo do fragmento", + "content": "conteúdo", + "template": "Baixe o modelo aqui", + "cancel": "Cancelar", + "run": "Executar em Lote", + "runError": "Falha na execução em lote", + "processing": "Processando em lote", + "completed": "Importação concluída", + "error": "Erro na importação", + "ok": "OK" + }, + "errorMessage": { + "answerRequired": "A resposta é obrigatória", + "queryRequired": "A pergunta é obrigatória" + }, + "viewModal": { + "annotatedResponse": "Resposta de Anotação", + "hitHistory": "Histórico de Acessos", + "hit": "Acesso", + "hits": "Acessos", + "noHitHistory": "Nenhum histórico de acesso" + }, + "hitHistoryTable": { + "query": "Consulta", + "match": "Correspondência", + "response": "Resposta", + "source": "Origem", + "score": "Pontuação", + "time": "Tempo" + }, + "initSetup": { + "title": "Configuração Inicial da Resposta de Anotação", + "configTitle": "Configuração da Resposta de Anotação", + "confirmBtn": "Salvar e Habilitar", + "configConfirmBtn": "Salvar" + }, + "embeddingModelSwitchTip": "Modelo de vetorização de texto de anotação, a troca de modelos será refeita, resultando em custos adicionais.", + "list": { + "delete": { + "title": "Você tem certeza que deseja excluir?" + } + }, + "batchAction": { + "cancel": "Cancelar", + "selected": "Selecionado", + "delete": "Excluir" + } +} diff --git a/web/i18n/pt-BR/app-annotation.ts b/web/i18n/pt-BR/app-annotation.ts deleted file mode 100644 index 8c1d511f8d..0000000000 --- a/web/i18n/pt-BR/app-annotation.ts +++ /dev/null @@ -1,98 +0,0 @@ -const translation = { - title: 'Anotações', - name: 'Resposta de Anotação', - editBy: 'Resposta editada por {{author}}', - noData: { - title: 'Sem anotações', - description: 'Você pode editar anotações no depuração do aplicativo ou importar anotações em massa aqui para obter uma resposta de alta qualidade.', - }, - table: { - header: { - question: 'pergunta', - answer: 'resposta', - createdAt: 'criado em', - hits: 'acessos', - actions: 'ações', - addAnnotation: 'Adicionar Anotação', - bulkImport: 'Importação em Massa', - bulkExport: 'Exportação em Massa', - clearAll: 'Limpar Todas as Anotações', - clearAllConfirm: 'Excluir todas as anotações?', - }, - }, - editModal: { - title: 'Editar Resposta de Anotação', - queryName: 'Consulta do Usuário', - answerName: 'Bot Contador de Histórias', - yourAnswer: 'Sua Resposta', - answerPlaceholder: 'Digite sua resposta aqui', - yourQuery: 'Sua Consulta', - queryPlaceholder: 'Digite sua consulta aqui', - removeThisCache: 'Remover esta Anotação', - createdAt: 'Criado em', - }, - addModal: { - title: 'Adicionar Resposta de Anotação', - queryName: 'Pergunta', - answerName: 'Resposta', - answerPlaceholder: 'Digite a resposta aqui', - queryPlaceholder: 'Digite a pergunta aqui', - createNext: 'Adicionar outra resposta anotada', - }, - batchModal: { - title: 'Importação em Massa', - csvUploadTitle: 'Arraste e solte seu arquivo CSV aqui, ou ', - browse: 'navegue', - tip: 'O arquivo CSV deve seguir a seguinte estrutura:', - question: 'pergunta', - answer: 'resposta', - contentTitle: 'conteúdo do fragmento', - content: 'conteúdo', - template: 'Baixe o modelo aqui', - cancel: 'Cancelar', - run: 'Executar em Lote', - runError: 'Falha na execução em lote', - processing: 'Processando em lote', - completed: 'Importação concluída', - error: 'Erro na importação', - ok: 'OK', - }, - errorMessage: { - answerRequired: 'A resposta é obrigatória', - queryRequired: 'A pergunta é obrigatória', - }, - viewModal: { - annotatedResponse: 'Resposta de Anotação', - hitHistory: 'Histórico de Acessos', - hit: 'Acesso', - hits: 'Acessos', - noHitHistory: 'Nenhum histórico de acesso', - }, - hitHistoryTable: { - query: 'Consulta', - match: 'Correspondência', - response: 'Resposta', - source: 'Origem', - score: 'Pontuação', - time: 'Tempo', - }, - initSetup: { - title: 'Configuração Inicial da Resposta de Anotação', - configTitle: 'Configuração da Resposta de Anotação', - confirmBtn: 'Salvar e Habilitar', - configConfirmBtn: 'Salvar', - }, - embeddingModelSwitchTip: 'Modelo de vetorização de texto de anotação, a troca de modelos será refeita, resultando em custos adicionais.', - list: { - delete: { - title: 'Você tem certeza que deseja excluir?', - }, - }, - batchAction: { - cancel: 'Cancelar', - selected: 'Selecionado', - delete: 'Excluir', - }, -} - -export default translation diff --git a/web/i18n/pt-BR/app-api.json b/web/i18n/pt-BR/app-api.json new file mode 100644 index 0000000000..c00eec7495 --- /dev/null +++ b/web/i18n/pt-BR/app-api.json @@ -0,0 +1,83 @@ +{ + "apiServer": "Servidor da API", + "apiKey": "Chave da API", + "status": "Status", + "disabled": "Desativado", + "ok": "Em Serviço", + "copy": "Copiar", + "copied": "Copiado", + "merMaid": { + "rerender": "Refazer Rerender" + }, + "never": "Nunca", + "apiKeyModal": { + "apiSecretKey": "Chave Secreta da API", + "apiSecretKeyTips": "Para evitar abuso da API, proteja sua Chave da API. Evite usá-la como texto simples no código front-end. :)", + "createNewSecretKey": "Criar nova Chave Secreta", + "secretKey": "Chave Secreta", + "created": "CRIADA", + "lastUsed": "ÚLTIMO USO", + "generateTips": "Mantenha esta chave em um local seguro e acessível." + }, + "actionMsg": { + "deleteConfirmTitle": "Excluir esta chave secreta?", + "deleteConfirmTips": "Esta ação não pode ser desfeita.", + "ok": "OK" + }, + "completionMode": { + "title": "Completar App API", + "info": "Para geração de texto de alta qualidade, como artigos, resumos e traduções, use a API de mensagens de conclusão com entrada do usuário. A geração de texto depende dos parâmetros do modelo e dos modelos de prompt definidos no Dify Prompt Engineering.", + "createCompletionApi": "Criar Mensagem de Conclusão", + "createCompletionApiTip": "Crie uma Mensagem de Conclusão para suportar o modo pergunta e resposta.", + "inputsTips": "(Opcional) Forneça campos de entrada do usuário como pares chave-valor, correspondendo a variáveis no Prompt Eng. A chave é o nome da variável, o valor é o valor do parâmetro. Se o tipo do campo for Select, o Valor enviado deve ser uma das opções predefinidas.", + "queryTips": "Conteúdo de texto de entrada do usuário.", + "blocking": "Tipo de bloqueio, aguardando a conclusão da execução e retornando os resultados. (As solicitações podem ser interrompidas se o processo for longo)", + "streaming": "Retorno de streaming. Implementação de retorno de streaming com base em SSE (Server-Sent Events).", + "messageFeedbackApi": "Feedback de mensagem (curtir)", + "messageFeedbackApiTip": "Avalie as mensagens recebidas em nome dos usuários finais com curtidas ou descurtidas. Esses dados são visíveis na página de Logs e Anotações e são usados para ajustes futuros no modelo.", + "messageIDTip": "ID da mensagem", + "ratingTip": "curtir ou descurtir, null desfaz", + "parametersApi": "Obter informações de parâmetros do aplicativo", + "parametersApiTip": "Recupere os parâmetros de entrada configurados, incluindo nomes de variáveis, nomes de campos, tipos e valores padrão. Geralmente usado para exibir esses campos em um formulário ou preencher valores padrão após o carregamento do cliente." + }, + "chatMode": { + "title": "Chat App API", + "info": "Para aplicativos de conversação versáteis usando um formato de pergunta e resposta, chame a API de mensagens de chat para iniciar o diálogo. Mantenha conversas em andamento passando o conversation_id retornado. Os parâmetros de resposta e modelos dependem das configurações do Dify Prompt Eng.", + "createChatApi": "Criar mensagem de chat", + "createChatApiTip": "Crie uma nova mensagem de conversa ou continue um diálogo existente.", + "inputsTips": "(Opcional) Forneça campos de entrada do usuário como pares chave-valor, correspondendo a variáveis no Prompt Eng. A chave é o nome da variável, o valor é o valor do parâmetro. Se o tipo do campo for Select, o Valor enviado deve ser uma das opções predefinidas.", + "queryTips": "Conteúdo de entrada/pergunta do usuário", + "blocking": "Tipo de bloqueio, aguardando a conclusão da execução e retornando os resultados. (As solicitações podem ser interrompidas se o processo for longo)", + "streaming": "Retorno de streaming. Implementação de retorno de streaming com base em SSE (Server-Sent Events).", + "conversationIdTip": "(Opcional) ID da conversa: deixe vazio para a primeira conversa; passe conversation_id do contexto para continuar o diálogo.", + "messageFeedbackApi": "Feedback do usuário final da mensagem, curtir", + "messageFeedbackApiTip": "Avalie as mensagens recebidas em nome dos usuários finais com curtidas ou descurtidas. Esses dados são visíveis na página de Logs e Anotações e são usados para ajustes futuros no modelo.", + "messageIDTip": "ID da mensagem", + "ratingTip": "curtir ou descurtir, null desfaz", + "chatMsgHistoryApi": "Obter histórico de mensagens de chat", + "chatMsgHistoryApiTip": "A primeira página retorna as últimas `limit` mensagens, em ordem reversa.", + "chatMsgHistoryConversationIdTip": "ID da conversa", + "chatMsgHistoryFirstId": "ID do primeiro registro de chat na página atual. O padrão é nenhum.", + "chatMsgHistoryLimit": "Quantos chats são retornados em uma solicitação", + "conversationsListApi": "Obter lista de conversas", + "conversationsListApiTip": "Obtém a lista de sessões do usuário atual. Por padrão, as últimas 20 sessões são retornadas.", + "conversationsListFirstIdTip": "O ID do último registro na página atual, padrão nenhum.", + "conversationsListLimitTip": "Quantos chats são retornados em uma solicitação", + "conversationRenamingApi": "Renomear conversa", + "conversationRenamingApiTip": "Renomeie conversas; o nome é exibido nas interfaces de cliente com várias sessões.", + "conversationRenamingNameTip": "Novo nome", + "parametersApi": "Obter informações de parâmetros do aplicativo", + "parametersApiTip": "Recupere os parâmetros de entrada configurados, incluindo nomes de variáveis, nomes de campos, tipos e valores padrão. Geralmente usado para exibir esses campos em um formulário ou preencher valores padrão após o carregamento do cliente." + }, + "develop": { + "requestBody": "Corpo da Solicitação", + "pathParams": "Parâmetros de Caminho", + "query": "Consulta", + "toc": "Conteúdo" + }, + "play": "Brincar", + "loading": "Carregamento", + "pause": "Pausa", + "playing": "Jogar", + "regenerate": "Regenerar" +} diff --git a/web/i18n/pt-BR/app-api.ts b/web/i18n/pt-BR/app-api.ts deleted file mode 100644 index 155d51a1d8..0000000000 --- a/web/i18n/pt-BR/app-api.ts +++ /dev/null @@ -1,85 +0,0 @@ -const translation = { - apiServer: 'Servidor da API', - apiKey: 'Chave da API', - status: 'Status', - disabled: 'Desativado', - ok: 'Em Serviço', - copy: 'Copiar', - copied: 'Copiado', - merMaid: { - rerender: 'Refazer Rerender', - }, - never: 'Nunca', - apiKeyModal: { - apiSecretKey: 'Chave Secreta da API', - apiSecretKeyTips: 'Para evitar abuso da API, proteja sua Chave da API. Evite usá-la como texto simples no código front-end. :)', - createNewSecretKey: 'Criar nova Chave Secreta', - secretKey: 'Chave Secreta', - created: 'CRIADA', - lastUsed: 'ÚLTIMO USO', - generateTips: 'Mantenha esta chave em um local seguro e acessível.', - }, - actionMsg: { - deleteConfirmTitle: 'Excluir esta chave secreta?', - deleteConfirmTips: 'Esta ação não pode ser desfeita.', - ok: 'OK', - }, - completionMode: { - title: 'Completar App API', - info: 'Para geração de texto de alta qualidade, como artigos, resumos e traduções, use a API de mensagens de conclusão com entrada do usuário. A geração de texto depende dos parâmetros do modelo e dos modelos de prompt definidos no Dify Prompt Engineering.', - createCompletionApi: 'Criar Mensagem de Conclusão', - createCompletionApiTip: 'Crie uma Mensagem de Conclusão para suportar o modo pergunta e resposta.', - inputsTips: '(Opcional) Forneça campos de entrada do usuário como pares chave-valor, correspondendo a variáveis no Prompt Eng. A chave é o nome da variável, o valor é o valor do parâmetro. Se o tipo do campo for Select, o Valor enviado deve ser uma das opções predefinidas.', - queryTips: 'Conteúdo de texto de entrada do usuário.', - blocking: 'Tipo de bloqueio, aguardando a conclusão da execução e retornando os resultados. (As solicitações podem ser interrompidas se o processo for longo)', - streaming: 'Retorno de streaming. Implementação de retorno de streaming com base em SSE (Server-Sent Events).', - messageFeedbackApi: 'Feedback de mensagem (curtir)', - messageFeedbackApiTip: 'Avalie as mensagens recebidas em nome dos usuários finais com curtidas ou descurtidas. Esses dados são visíveis na página de Logs e Anotações e são usados para ajustes futuros no modelo.', - messageIDTip: 'ID da mensagem', - ratingTip: 'curtir ou descurtir, null desfaz', - parametersApi: 'Obter informações de parâmetros do aplicativo', - parametersApiTip: 'Recupere os parâmetros de entrada configurados, incluindo nomes de variáveis, nomes de campos, tipos e valores padrão. Geralmente usado para exibir esses campos em um formulário ou preencher valores padrão após o carregamento do cliente.', - }, - chatMode: { - title: 'Chat App API', - info: 'Para aplicativos de conversação versáteis usando um formato de pergunta e resposta, chame a API de mensagens de chat para iniciar o diálogo. Mantenha conversas em andamento passando o conversation_id retornado. Os parâmetros de resposta e modelos dependem das configurações do Dify Prompt Eng.', - createChatApi: 'Criar mensagem de chat', - createChatApiTip: 'Crie uma nova mensagem de conversa ou continue um diálogo existente.', - inputsTips: '(Opcional) Forneça campos de entrada do usuário como pares chave-valor, correspondendo a variáveis no Prompt Eng. A chave é o nome da variável, o valor é o valor do parâmetro. Se o tipo do campo for Select, o Valor enviado deve ser uma das opções predefinidas.', - queryTips: 'Conteúdo de entrada/pergunta do usuário', - blocking: 'Tipo de bloqueio, aguardando a conclusão da execução e retornando os resultados. (As solicitações podem ser interrompidas se o processo for longo)', - streaming: 'Retorno de streaming. Implementação de retorno de streaming com base em SSE (Server-Sent Events).', - conversationIdTip: '(Opcional) ID da conversa: deixe vazio para a primeira conversa; passe conversation_id do contexto para continuar o diálogo.', - messageFeedbackApi: 'Feedback do usuário final da mensagem, curtir', - messageFeedbackApiTip: 'Avalie as mensagens recebidas em nome dos usuários finais com curtidas ou descurtidas. Esses dados são visíveis na página de Logs e Anotações e são usados para ajustes futuros no modelo.', - messageIDTip: 'ID da mensagem', - ratingTip: 'curtir ou descurtir, null desfaz', - chatMsgHistoryApi: 'Obter histórico de mensagens de chat', - chatMsgHistoryApiTip: 'A primeira página retorna as últimas `limit` mensagens, em ordem reversa.', - chatMsgHistoryConversationIdTip: 'ID da conversa', - chatMsgHistoryFirstId: 'ID do primeiro registro de chat na página atual. O padrão é nenhum.', - chatMsgHistoryLimit: 'Quantos chats são retornados em uma solicitação', - conversationsListApi: 'Obter lista de conversas', - conversationsListApiTip: 'Obtém a lista de sessões do usuário atual. Por padrão, as últimas 20 sessões são retornadas.', - conversationsListFirstIdTip: 'O ID do último registro na página atual, padrão nenhum.', - conversationsListLimitTip: 'Quantos chats são retornados em uma solicitação', - conversationRenamingApi: 'Renomear conversa', - conversationRenamingApiTip: 'Renomeie conversas; o nome é exibido nas interfaces de cliente com várias sessões.', - conversationRenamingNameTip: 'Novo nome', - parametersApi: 'Obter informações de parâmetros do aplicativo', - parametersApiTip: 'Recupere os parâmetros de entrada configurados, incluindo nomes de variáveis, nomes de campos, tipos e valores padrão. Geralmente usado para exibir esses campos em um formulário ou preencher valores padrão após o carregamento do cliente.', - }, - develop: { - requestBody: 'Corpo da Solicitação', - pathParams: 'Parâmetros de Caminho', - query: 'Consulta', - toc: 'Conteúdo', - }, - play: 'Brincar', - loading: 'Carregamento', - pause: 'Pausa', - playing: 'Jogar', - regenerate: 'Regenerar', -} - -export default translation diff --git a/web/i18n/pt-BR/app-debug.json b/web/i18n/pt-BR/app-debug.json new file mode 100644 index 0000000000..f20594c155 --- /dev/null +++ b/web/i18n/pt-BR/app-debug.json @@ -0,0 +1,563 @@ +{ + "pageTitle": { + "line1": "PROMPT", + "line2": "Engenharia" + }, + "orchestrate": "Orquestrar", + "promptMode": { + "simple": "Mudar para o Modo Especialista para editar todo o PROMPT", + "advanced": "Modo Especialista", + "switchBack": "Voltar", + "advancedWarning": { + "title": "Você mudou para o Modo Especialista e, uma vez que você modifique o PROMPT, NÃO poderá retornar ao modo básico.", + "description": "No Modo Especialista, você pode editar todo o PROMPT.", + "learnMore": "Saiba mais", + "ok": "OK" + }, + "operation": { + "addMessage": "Adicionar Mensagem" + }, + "contextMissing": "Componente de contexto ausente, a eficácia do prompt pode não ser boa." + }, + "operation": { + "applyConfig": "Publicar", + "resetConfig": "Redefinir", + "debugConfig": "Depurar", + "addFeature": "Adicionar Recurso", + "automatic": "Automático", + "stopResponding": "Parar de responder", + "agree": "gostar", + "disagree": "não gostar", + "cancelAgree": "Cancelar gostar", + "cancelDisagree": "Cancelar não gostar", + "userAction": "Usuário " + }, + "notSetAPIKey": { + "title": "A chave do provedor LLM não foi definida", + "trailFinished": "Trilha finalizada", + "description": "A chave do provedor LLM não foi definida e precisa ser definida antes da depuração.", + "settingBtn": "Ir para configurações" + }, + "trailUseGPT4Info": { + "title": "Não suporta gpt-4 agora", + "description": "Use gpt-4, por favor defina a chave da API." + }, + "feature": { + "groupChat": { + "title": "Melhoria do Chat", + "description": "Adicione configurações pré-conversa para aplicativos que podem melhorar a experiência do usuário." + }, + "groupExperience": { + "title": "Melhoria da Experiência" + }, + "conversationOpener": { + "title": "Remodeladores de Conversa", + "description": "Em um aplicativo de chat, a primeira frase que a IA fala ativamente para o usuário geralmente é usada como uma saudação." + }, + "suggestedQuestionsAfterAnswer": { + "title": "Perguntas de Acompanhamento", + "description": "Configurar sugestões de próximas perguntas pode proporcionar um melhor chat aos usuários.", + "resDes": "3 sugestões para a próxima pergunta do usuário.", + "tryToAsk": "Tente perguntar" + }, + "moreLikeThis": { + "title": "Mais como isso", + "description": "Gere vários textos de uma vez e, em seguida, edite e continue a gerar", + "generateNumTip": "Número de vezes geradas", + "tip": "Usar esse recurso incorrerá em sobrecarga adicional de tokens" + }, + "speechToText": { + "title": "Fala para Texto", + "description": "Uma vez ativado, você pode usar entrada de voz.", + "resDes": "Entrada de voz está ativada" + }, + "textToSpeech": { + "title": "Texto para voz", + "description": "Quando ativado, o texto pode ser convertido em fala.", + "resDes": "Texto para áudio ativado" + }, + "citation": { + "title": "Citações e Atribuições", + "description": "Uma vez ativado, mostra o documento de origem e a seção atribuída do conteúdo gerado.", + "resDes": "Citações e Atribuições estão ativadas" + }, + "annotation": { + "title": "Resposta de Anotação", + "description": "Você pode adicionar manualmente uma resposta de alta qualidade ao cache para correspondência prioritária com perguntas semelhantes do usuário.", + "resDes": "Resposta de Anotação está ativada", + "scoreThreshold": { + "title": "Limiar de Pontuação", + "description": "Usado para definir o limiar de similaridade para resposta de anotação.", + "easyMatch": "Correspondência Fácil", + "accurateMatch": "Correspondência Precisa" + }, + "matchVariable": { + "title": "Variável de Correspondência", + "choosePlaceholder": "Escolha a variável de correspondência" + }, + "cacheManagement": "Anotações", + "cached": "Anotado", + "remove": "Remover", + "removeConfirm": "Excluir esta anotação?", + "add": "Adicionar anotação", + "edit": "Editar anotação" + }, + "dataSet": { + "title": "Contexto", + "noData": "Você pode importar Conhecimento como contexto", + "selectTitle": "Selecionar Conhecimento de referência", + "selected": "Conhecimento selecionado", + "noDataSet": "Nenhum Conhecimento encontrado", + "toCreate": "Ir para criar", + "notSupportSelectMulti": "Atualmente, suporta apenas um Conhecimento", + "queryVariable": { + "title": "Variável de Consulta", + "tip": "Essa variável será usada como entrada de consulta para recuperação de contexto, obtendo informações de contexto relacionadas à entrada dessa variável.", + "choosePlaceholder": "Escolha a variável de consulta", + "noVar": "Nenhuma variável", + "noVarTip": "por favor, crie uma variável na seção Variáveis", + "unableToQueryDataSet": "Não é possível consultar o Conhecimento", + "unableToQueryDataSetTip": "Não é possível consultar o Conhecimento com sucesso, por favor escolha uma variável de consulta de contexto na seção de contexto.", + "ok": "OK", + "contextVarNotEmpty": "variável de consulta de contexto não pode estar vazia", + "deleteContextVarTitle": "Excluir variável \"{{varName}}\"?", + "deleteContextVarTip": "Esta variável foi definida como uma variável de consulta de contexto e removê-la afetará o uso normal do Conhecimento. Se você ainda precisa excluí-la, por favor, selecione-a novamente na seção de contexto." + } + }, + "tools": { + "title": "Tools", + "tips": "Tools provide a standard API call method, taking user input or variables as request parameters for querying external data as context.", + "toolsInUse": "{{count}} tools in use", + "modal": { + "title": "Tool", + "toolType": { + "title": "Tool Type", + "placeholder": "Por favor, selecione o tipo de ferramenta" + }, + "name": { + "title": "Nome", + "placeholder": "Por favor, insira o nome" + }, + "variableName": { + "title": "Nome da Variável", + "placeholder": "Por favor, insira o nome da variável" + } + } + }, + "conversationHistory": { + "title": "Histórico da Conversa", + "description": "Defina os nomes dos prefixos para os papéis da conversa", + "tip": "O Histórico da Conversa não está habilitado, por favor adicione na solicitação acima.", + "learnMore": "Saiba mais", + "editModal": { + "title": "Editar Nomes dos Papéis da Conversa", + "userPrefix": "Prefixo do Usuário", + "assistantPrefix": "Prefixo do Assistente" + } + }, + "toolbox": { + "title": "CAIXA DE FERRAMENTAS" + }, + "moderation": { + "title": "Moderação de Conteúdo", + "description": "Proteja a saída do modelo usando a API de moderação ou mantendo uma lista de palavras sensíveis.", + "allEnabled": "Conteúdo de ENTRADA/SAÍDA Habilitado", + "inputEnabled": "Conteúdo de ENTRADA Habilitado", + "outputEnabled": "Conteúdo de SAÍDA Habilitado", + "modal": { + "title": "Configurações de Moderação de Conteúdo", + "provider": { + "title": "Provedor", + "openai": "Moderação OpenAI", + "openaiTip": { + "prefix": "A Moderação OpenAI requer uma chave de API da OpenAI configurada em ", + "suffix": "." + }, + "keywords": "Palavras-chave" + }, + "keywords": { + "tip": "Uma por linha, separadas por quebras de linha. Até 100 caracteres por linha.", + "placeholder": "Uma por linha, separadas por quebras de linha", + "line": "Linha" + }, + "content": { + "input": "Moderar Conteúdo de ENTRADA", + "output": "Moderar Conteúdo de SAÍDA", + "preset": "Respostas pré-definidas", + "placeholder": "Insira o conteúdo das respostas pré-definidas aqui", + "condition": "Moderar Conteúdo de ENTRADA e SAÍDA habilitado pelo menos uma", + "fromApi": "As respostas pré-definidas são retornadas pela API", + "errorMessage": "As respostas pré-definidas não podem estar vazias", + "supportMarkdown": "Suporte a Markdown" + }, + "openaiNotConfig": { + "before": "A Moderação OpenAI requer uma chave de API da OpenAI configurada em ", + "after": "" + } + }, + "contentEnableLabel": "Moderação de conteúdo habilitada" + }, + "fileUpload": { + "title": "Upload de Arquivo", + "description": "A caixa de entrada do chat permite fazer upload de imagens, documentos e outros arquivos.", + "supportedTypes": "Tipos de Arquivo Suportados", + "numberLimit": "Máximo de uploads", + "modalTitle": "Configuração de Upload de Arquivo" + }, + "imageUpload": { + "title": "Upload de Imagem", + "description": "Permite fazer upload de imagens.", + "supportedTypes": "Tipos de Arquivo Suportados", + "numberLimit": "Máximo de uploads", + "modalTitle": "Configuração de Upload de Imagem" + }, + "bar": { + "empty": "Habilitar recursos para melhorar a experiência do usuário do aplicativo web", + "enableText": "Recursos Habilitados", + "manage": "Gerenciar" + }, + "documentUpload": { + "title": "Documento", + "description": "Habilitar Documento permitirá que o modelo aceite documentos e responda perguntas sobre eles." + }, + "audioUpload": { + "title": "Áudio", + "description": "Habilitar Áudio permitirá que o modelo processe arquivos de áudio para transcrição e análise." + } + }, + "automatic": {}, + "resetConfig": { + "title": "Confirmar redefinição?", + "message": "A redefinição descarta as alterações, restaurando a última configuração publicada." + }, + "errorMessage": { + "nameOfKeyRequired": "nome da chave: {{key}} obrigatório", + "valueOfVarRequired": "valor de {{key}} não pode estar vazio", + "queryRequired": "Texto da solicitação é obrigatório.", + "waitForResponse": "Aguarde a resposta à mensagem anterior ser concluída.", + "waitForBatchResponse": "Aguarde a resposta à tarefa em lote ser concluída.", + "notSelectModel": "Por favor, escolha um modelo", + "waitForImgUpload": "Aguarde o upload da imagem", + "waitForFileUpload": "Aguarde o upload do arquivo / arquivos" + }, + "chatSubTitle": "Instruções", + "completionSubTitle": "Prefixo da Solicitação", + "promptTip": "As solicitações guiam as respostas da IA com instruções e restrições. Insira variáveis como {{input}}. Este prompt não será visível para os usuários.", + "formattingChangedTitle": "Formatação alterada", + "formattingChangedText": "Modificar a formatação redefinirá a área de depuração, você tem certeza?", + "variableTitle": "Variáveis", + "variableTip": "Os usuários preenchem as variáveis em um formulário, substituindo automaticamente as variáveis na solicitação.", + "notSetVar": "As variáveis permitem que os usuários introduzam palavras de solicitação ou observações iniciais ao preencher formulários. Você pode tentar digitar \"{{input}}\" nas palavras de solicitação.", + "autoAddVar": "Variáveis indefinidas referenciadas na pré-solicitação, você deseja adicioná-las no formulário de entrada do usuário?", + "variableTable": { + "key": "Chave da Variável", + "name": "Nome do Campo de Entrada do Usuário", + "type": "Tipo de Entrada", + "action": "Ações", + "typeString": "Texto", + "typeSelect": "Selecionar" + }, + "varKeyError": { + "canNoBeEmpty": "{{key}} é obrigatório", + "tooLong": "{{key}} é muito longa. Não pode ter mais de 30 caracteres", + "notValid": "{{key}} é inválida. Pode conter apenas letras, números e sublinhados", + "notStartWithNumber": "{{key}} não pode começar com um número", + "keyAlreadyExists": "{{key}} já existe" + }, + "otherError": { + "promptNoBeEmpty": "A solicitação não pode estar vazia", + "historyNoBeEmpty": "O histórico da conversa deve ser definido na solicitação", + "queryNoBeEmpty": "A consulta deve ser definida na solicitação" + }, + "variableConfig": { + "addModalTitle": "Adicionar Campo de Entrada", + "editModalTitle": "Editar Campo de Entrada", + "description": "Configuração para a variável {{varName}}", + "fieldType": "Tipo de Campo", + "string": "Texto Curto", + "text-input": "Texto Curto", + "paragraph": "Parágrafo", + "select": "Selecionar", + "number": "Número", + "notSet": "Não definido, tente digitar {{input}} no prompt de prefixo", + "stringTitle": "Opções da caixa de texto do formulário", + "maxLength": "Comprimento Máximo", + "options": "Opções", + "addOption": "Adicionar opção", + "apiBasedVar": "Variável Baseada em API", + "varName": "Nome da Variável", + "labelName": "Nome do Rótulo", + "inputPlaceholder": "Por favor, insira", + "required": "Obrigatório", + "hide": "Ocultar", + "errorMsg": { + "labelNameRequired": "O nome do rótulo é obrigatório", + "varNameCanBeRepeat": "O nome da variável não pode ser repetido", + "atLeastOneOption": "Pelo menos uma opção é obrigatória", + "optionRepeat": "Tem opções repetidas" + }, + "defaultValue": "Valor padrão", + "noDefaultValue": "Nenhum valor padrão", + "selectDefaultValue": "Selecionar valor padrão", + "file": { + "image": { + "name": "Imagem" + }, + "audio": { + "name": "Áudio" + }, + "document": { + "name": "Documento" + }, + "video": { + "name": "Vídeo" + }, + "custom": { + "description": "Especifique outros tipos de arquivo.", + "name": "Outros tipos de arquivo", + "createPlaceholder": " Extensão de arquivo, por exemplo, .doc" + }, + "supportFileTypes": "Tipos de arquivo de suporte" + }, + "content": "Conteúdo", + "multi-files": "Lista de arquivos", + "single-file": "Fila indiana", + "maxNumberOfUploads": "Número máximo de uploads", + "maxNumberTip": "Documento < {{docLimit}}, imagem < {{imgLimit}}, áudio < {{audioLimit}}, vídeo < {{videoLimit}}", + "uploadFileTypes": "Carregar tipos de arquivo", + "both": "Ambos", + "localUpload": "Local Upload", + "optional": "opcional", + "json": "Código JSON", + "checkbox": "Caixa de seleção", + "jsonSchema": "Esquema JSON", + "unit": "Unidade", + "uploadMethod": "Método de upload", + "displayName": "Nome de exibição", + "noDefaultSelected": "Não selecione", + "placeholder": "Espaço reservado", + "showAllSettings": "Mostrar todas as configurações", + "startChecked": "Iniciar verificado", + "tooltipsPlaceholder": "Insira um texto útil mostrado ao passar o mouse sobre o rótulo", + "defaultValuePlaceholder": "Insira o valor padrão para preencher previamente o campo", + "placeholderPlaceholder": "Insira o texto a ser exibido quando o campo estiver vazio", + "unitPlaceholder": "Exibir unidades após números, por exemplo, tokens", + "tooltips": "Dicas de ferramentas", + "startSelectedOption": "Iniciar opção selecionada" + }, + "vision": { + "name": "Visão", + "description": "Habilitar a Visão permite que o modelo receba imagens e responda perguntas sobre elas.", + "settings": "Configurações", + "visionSettings": { + "title": "Configurações de Visão", + "resolution": "Resolução", + "resolutionTooltip": "Baixa resolução permitirá que o modelo receba uma versão de baixa resolução de 512 x 512 da imagem e represente a imagem com um orçamento de 65 tokens. Isso permite que a API retorne respostas mais rápidas e consuma menos tokens de entrada para casos de uso que não exigem alta precisão.\nAlta resolução permitirá que o modelo veja a imagem de baixa resolução e crie recortes detalhados das imagens de entrada como quadrados de 512px com base no tamanho da imagem de entrada. Cada um dos recortes detalhados usa o dobro do orçamento de tokens, totalizando 129 tokens.", + "high": "Alta", + "low": "Baixa", + "uploadMethod": "Método de Upload", + "both": "Ambos", + "localUpload": "Upload Local", + "url": "URL", + "uploadLimit": "Limite de Upload" + }, + "onlySupportVisionModelTip": "Suporta apenas modelos de visão" + }, + "voice": { + "name": "voz", + "defaultDisplay": "Voz padrão", + "description": "Texto para configurações de timbre de voz", + "settings": "As configurações", + "voiceSettings": { + "title": "voz As configurações", + "language": "línguas", + "resolutionTooltip": "Texto para voz timbre suporta idiomas.", + "voice": "voz", + "autoPlay": "Reprodução automática", + "autoPlayEnabled": "ligar", + "autoPlayDisabled": "fecho" + } + }, + "openingStatement": { + "title": "Abertura da Conversa", + "add": "Adicionar", + "writeOpener": "Escrever abertura", + "placeholder": "Escreva sua mensagem de abertura aqui, você pode usar variáveis, tente digitar {{variável}}.", + "openingQuestion": "Perguntas de Abertura", + "openingQuestionPlaceholder": "Você pode usar variáveis, tente digitar {{variable}}.", + "noDataPlaceHolder": "Iniciar a conversa com o usuário pode ajudar a IA a estabelecer uma conexão mais próxima com eles em aplicativos de conversação.", + "varTip": "Você pode usar variáveis, tente digitar {{variável}}", + "tooShort": "São necessárias pelo menos 20 palavras de prompt inicial para gerar observações de abertura para a conversa.", + "notIncludeKey": "O prompt inicial não inclui a variável: {{key}}. Por favor, adicione-a ao prompt inicial." + }, + "modelConfig": { + "model": "Modelo", + "setTone": "Definir tom das respostas", + "title": "Modelo e Parâmetros", + "modeType": { + "chat": "Chat", + "completion": "Completar" + } + }, + "inputs": { + "title": "Depuração e Visualização", + "noPrompt": "Tente escrever algum prompt na entrada de pré-prompt", + "userInputField": "Campo de Entrada do Usuário", + "noVar": "Preencha o valor da variável, que será substituída automaticamente na palavra de solicitação sempre que uma nova sessão for iniciada.", + "chatVarTip": "Preencha o valor da variável, que será substituída automaticamente na palavra de solicitação sempre que uma nova sessão for iniciada", + "completionVarTip": "Preencha o valor da variável, que será substituída automaticamente nas palavras de solicitação sempre que uma pergunta for enviada.", + "previewTitle": "Visualização do Prompt", + "queryTitle": "Conteúdo da Consulta", + "queryPlaceholder": "Por favor, insira o texto da solicitação.", + "run": "EXECUTAR" + }, + "result": "Texto de Saída", + "datasetConfig": { + "settingTitle": "Configurações de Recuperação", + "knowledgeTip": "Clique no botão “+” para adicionar conhecimento", + "retrieveOneWay": { + "title": "Recuperação N-para-1", + "description": "Com base na intenção do usuário e nas descrições do Conhecimento, o Agente seleciona autonomamente o melhor Conhecimento para consulta. Melhor para aplicativos com Conhecimento distinto e limitado." + }, + "retrieveMultiWay": { + "title": "Recuperação Multi-caminho", + "description": "Com base na intenção do usuário, consulta todos os Conhecimentos, recupera texto relevante de várias fontes e seleciona os melhores resultados que correspondem à consulta do usuário após a reclassificação. É necessária a configuração da API do modelo de reclassificação." + }, + "rerankModelRequired": "Modelo de reclassificação é necessário", + "params": "Parâmetros", + "top_k": "Top K", + "top_kTip": "Usado para filtrar os trechos mais semelhantes às perguntas do usuário. O sistema também ajustará dinamicamente o valor de Top K, de acordo com max_tokens do modelo selecionado.", + "score_threshold": "Limiar de Pontuação", + "score_thresholdTip": "Usado para definir o limiar de similaridade para filtragem de trechos.", + "retrieveChangeTip": "Modificar o modo de índice e o modo de recuperação pode afetar os aplicativos associados a este Conhecimento.", + "embeddingModelRequired": "É necessário um modelo de incorporação configurado" + }, + "assistantType": { + "name": "Tipo de Assistente", + "chatAssistant": { + "name": "Assistente Básico", + "description": "Construa um assistente baseado em chat usando um Modelo de Linguagem Grande" + }, + "agentAssistant": { + "name": "Assistente de Agente", + "description": "Construa um Agente inteligente que pode escolher autonomamente ferramentas para concluir as tarefas" + } + }, + "agent": { + "agentMode": "Modo do Agente", + "agentModeDes": "Defina o tipo de modo de inferência para o agente", + "agentModeType": { + "ReACT": "ReAct", + "functionCall": "Chamada de Função" + }, + "setting": { + "name": "Configurações do Agente", + "description": "As configurações do Assistente de Agente permitem definir o modo do agente e recursos avançados como prompts incorporados, disponíveis apenas no tipo de Agente.", + "maximumIterations": { + "name": "Número Máximo de Iterações", + "description": "Limite o número de iterações que um assistente de agente pode executar" + } + }, + "buildInPrompt": "Prompt Incorporado", + "firstPrompt": "Primeiro Prompt", + "nextIteration": "Próxima Iteração", + "promptPlaceholder": "Escreva seu prompt aqui", + "tools": { + "name": "Ferramentas", + "description": "O uso de ferramentas pode ampliar as capacidades do LLM, como pesquisar na internet ou realizar cálculos científicos", + "enabled": "Habilitado" + } + }, + "codegen": { + "instruction": "Instruções", + "generatedCodeTitle": "Código gerado", + "noDataLine1": "Descreva seu caso de uso à esquerda,", + "loading": "Gerando código...", + "description": "O Gerador de código usa modelos configurados para gerar código de alta qualidade com base em suas instruções. Por favor, forneça instruções claras e detalhadas.", + "generate": "Gerar", + "resTitle": "Código gerado", + "title": "Gerador de código", + "overwriteConfirmTitle": "Substituir o código existente?", + "overwriteConfirmMessage": "Essa ação substituirá o código existente. Você quer continuar?", + "apply": "Aplicar", + "applyChanges": "Aplicar alterações", + "instructionPlaceholder": "Insira uma descrição detalhada do código que você deseja gerar.", + "noDataLine2": "A visualização do código será exibida aqui." + }, + "generate": { + "template": { + "pythonDebugger": { + "instruction": "Um bot que pode gerar e depurar seu código com base em suas instruções", + "name": "Depurador Python" + }, + "translation": { + "name": "Tradução", + "instruction": "Um tradutor que pode traduzir vários idiomas" + }, + "professionalAnalyst": { + "name": "Analista profissional", + "instruction": "Extraia insights, identifique riscos e destile informações importantes de relatórios longos em um único memorando" + }, + "excelFormulaExpert": { + "name": "Especialista em fórmulas do Excel", + "instruction": "Um chatbot que pode ajudar usuários iniciantes a entender, usar e criar fórmulas do Excel com base nas instruções do usuário" + }, + "travelPlanning": { + "name": "Planejamento de viagens", + "instruction": "O Assistente de Planejamento de Viagens é uma ferramenta inteligente projetada para ajudar os usuários a planejar suas viagens sem esforço" + }, + "SQLSorcerer": { + "instruction": "Transforme a linguagem cotidiana em consultas SQL", + "name": "Feiticeiro SQL" + }, + "GitGud": { + "instruction": "Gerar comandos Git apropriados com base nas ações de controle de versão descritas pelo usuário", + "name": "Bom jogo" + }, + "meetingTakeaways": { + "name": "Conclusões da reunião", + "instruction": "Destilar reuniões em resumos concisos, incluindo tópicos de discussão, principais conclusões e itens de ação" + }, + "writingsPolisher": { + "instruction": "Use técnicas avançadas de edição de texto para melhorar seus escritos", + "name": "Polidor de escrita" + } + }, + "generate": "Gerar", + "overwriteMessage": "A aplicação desse prompt substituirá a configuração existente.", + "apply": "Aplicar", + "title": "Gerador de Prompt", + "description": "O Gerador de Prompts usa o modelo configurado para otimizar prompts para maior qualidade e melhor estrutura. Por favor, escreva instruções claras e detalhadas.", + "tryIt": "Experimente", + "loading": "Orquestrando o aplicativo para você...", + "instruction": "Instruções", + "resTitle": "Prompt gerado", + "overwriteTitle": "Substituir a configuração existente?", + "to": "para", + "press": "Imprensa", + "version": "Versão", + "dismiss": "Dispensar", + "insertContext": "inserir contexto", + "versions": "Versões", + "optimizationNote": "Nota de Otimização", + "latest": "Último", + "instructionPlaceHolderLine2": "O formato de saída está incorreto, por favor, siga estritamente o formato JSON.", + "optimizePromptTooltip": "Otimize no Gerador de Prompt", + "idealOutput": "Saída Ideal", + "instructionPlaceHolderLine1": "Torne a saída mais concisa, mantendo os pontos principais.", + "optional": "Opcional", + "instructionPlaceHolderLine3": "O tom está muito ríspido, por favor, torne-o mais amigável.", + "idealOutputPlaceholder": "Descreva o formato ideal de resposta, comprimento, tom e requisitos de conteúdo.", + "instructionPlaceHolderTitle": "Descreva como você gostaria de melhorar este Prompt. Por exemplo:", + "newNoDataLine1": "Escreva uma instrução na coluna da esquerda e clique em Gerar para ver a resposta.", + "codeGenInstructionPlaceHolderLine": "Quanto mais detalhado for o feedback, como os tipos de dados de entrada e saída, bem como a forma como as variáveis são processadas, mais precisa será a geração de código." + }, + "warningMessage": { + "timeoutExceeded": "Os resultados não são exibidos devido ao tempo limite. Consulte os logs para obter os resultados completos." + }, + "debugAsSingleModel": "Depurar como modelo único", + "noResult": "A saída será exibida aqui.", + "debugAsMultipleModel": "Depurar como vários modelos", + "publishAs": "Publicar como", + "duplicateModel": "Duplicar" +} diff --git a/web/i18n/pt-BR/app-debug.ts b/web/i18n/pt-BR/app-debug.ts deleted file mode 100644 index 30b9f59dd4..0000000000 --- a/web/i18n/pt-BR/app-debug.ts +++ /dev/null @@ -1,575 +0,0 @@ -const translation = { - pageTitle: { - line1: 'PROMPT', - line2: 'Engenharia', - }, - orchestrate: 'Orquestrar', - promptMode: { - simple: 'Mudar para o Modo Especialista para editar todo o PROMPT', - advanced: 'Modo Especialista', - switchBack: 'Voltar', - advancedWarning: { - title: 'Você mudou para o Modo Especialista e, uma vez que você modifique o PROMPT, NÃO poderá retornar ao modo básico.', - description: 'No Modo Especialista, você pode editar todo o PROMPT.', - learnMore: 'Saiba mais', - ok: 'OK', - }, - operation: { - addMessage: 'Adicionar Mensagem', - }, - contextMissing: 'Componente de contexto ausente, a eficácia do prompt pode não ser boa.', - }, - operation: { - applyConfig: 'Publicar', - resetConfig: 'Redefinir', - debugConfig: 'Depurar', - addFeature: 'Adicionar Recurso', - automatic: 'Automático', - stopResponding: 'Parar de responder', - agree: 'gostar', - disagree: 'não gostar', - cancelAgree: 'Cancelar gostar', - cancelDisagree: 'Cancelar não gostar', - userAction: 'Usuário ', - }, - notSetAPIKey: { - title: 'A chave do provedor LLM não foi definida', - trailFinished: 'Trilha finalizada', - description: 'A chave do provedor LLM não foi definida e precisa ser definida antes da depuração.', - settingBtn: 'Ir para configurações', - }, - trailUseGPT4Info: { - title: 'Não suporta gpt-4 agora', - description: 'Use gpt-4, por favor defina a chave da API.', - }, - feature: { - groupChat: { - title: 'Melhoria do Chat', - description: 'Adicione configurações pré-conversa para aplicativos que podem melhorar a experiência do usuário.', - }, - groupExperience: { - title: 'Melhoria da Experiência', - }, - conversationOpener: { - title: 'Remodeladores de Conversa', - description: 'Em um aplicativo de chat, a primeira frase que a IA fala ativamente para o usuário geralmente é usada como uma saudação.', - }, - suggestedQuestionsAfterAnswer: { - title: 'Perguntas de Acompanhamento', - description: 'Configurar sugestões de próximas perguntas pode proporcionar um melhor chat aos usuários.', - resDes: '3 sugestões para a próxima pergunta do usuário.', - tryToAsk: 'Tente perguntar', - }, - moreLikeThis: { - title: 'Mais como isso', - description: 'Gere vários textos de uma vez e, em seguida, edite e continue a gerar', - generateNumTip: 'Número de vezes geradas', - tip: 'Usar esse recurso incorrerá em sobrecarga adicional de tokens', - }, - speechToText: { - title: 'Fala para Texto', - description: 'Uma vez ativado, você pode usar entrada de voz.', - resDes: 'Entrada de voz está ativada', - }, - textToSpeech: { - title: 'Texto para voz', - description: 'Quando ativado, o texto pode ser convertido em fala.', - resDes: 'Texto para áudio ativado', - }, - citation: { - title: 'Citações e Atribuições', - description: 'Uma vez ativado, mostra o documento de origem e a seção atribuída do conteúdo gerado.', - resDes: 'Citações e Atribuições estão ativadas', - }, - annotation: { - title: 'Resposta de Anotação', - description: 'Você pode adicionar manualmente uma resposta de alta qualidade ao cache para correspondência prioritária com perguntas semelhantes do usuário.', - resDes: 'Resposta de Anotação está ativada', - scoreThreshold: { - title: 'Limiar de Pontuação', - description: 'Usado para definir o limiar de similaridade para resposta de anotação.', - easyMatch: 'Correspondência Fácil', - accurateMatch: 'Correspondência Precisa', - }, - matchVariable: { - title: 'Variável de Correspondência', - choosePlaceholder: 'Escolha a variável de correspondência', - }, - cacheManagement: 'Anotações', - cached: 'Anotado', - remove: 'Remover', - removeConfirm: 'Excluir esta anotação?', - add: 'Adicionar anotação', - edit: 'Editar anotação', - }, - dataSet: { - title: 'Contexto', - noData: 'Você pode importar Conhecimento como contexto', - selectTitle: 'Selecionar Conhecimento de referência', - selected: 'Conhecimento selecionado', - noDataSet: 'Nenhum Conhecimento encontrado', - toCreate: 'Ir para criar', - notSupportSelectMulti: 'Atualmente, suporta apenas um Conhecimento', - queryVariable: { - title: 'Variável de Consulta', - tip: 'Essa variável será usada como entrada de consulta para recuperação de contexto, obtendo informações de contexto relacionadas à entrada dessa variável.', - choosePlaceholder: 'Escolha a variável de consulta', - noVar: 'Nenhuma variável', - noVarTip: 'por favor, crie uma variável na seção Variáveis', - unableToQueryDataSet: 'Não é possível consultar o Conhecimento', - unableToQueryDataSetTip: 'Não é possível consultar o Conhecimento com sucesso, por favor escolha uma variável de consulta de contexto na seção de contexto.', - ok: 'OK', - contextVarNotEmpty: 'variável de consulta de contexto não pode estar vazia', - deleteContextVarTitle: 'Excluir variável "{{varName}}"?', - deleteContextVarTip: 'Esta variável foi definida como uma variável de consulta de contexto e removê-la afetará o uso normal do Conhecimento. Se você ainda precisa excluí-la, por favor, selecione-a novamente na seção de contexto.', - }, - }, - tools: { - title: 'Tools', - tips: 'Tools provide a standard API call method, taking user input or variables as request parameters for querying external data as context.', - toolsInUse: '{{count}} tools in use', - modal: { - title: 'Tool', - toolType: { - title: 'Tool Type', - placeholder: 'Por favor, selecione o tipo de ferramenta', - }, - name: { - title: 'Nome', - placeholder: 'Por favor, insira o nome', - }, - variableName: { - title: 'Nome da Variável', - placeholder: 'Por favor, insira o nome da variável', - }, - }, - }, - conversationHistory: { - title: 'Histórico da Conversa', - description: 'Defina os nomes dos prefixos para os papéis da conversa', - tip: 'O Histórico da Conversa não está habilitado, por favor adicione na solicitação acima.', - learnMore: 'Saiba mais', - editModal: { - title: 'Editar Nomes dos Papéis da Conversa', - userPrefix: 'Prefixo do Usuário', - assistantPrefix: 'Prefixo do Assistente', - }, - }, - toolbox: { - title: 'CAIXA DE FERRAMENTAS', - }, - moderation: { - title: 'Moderação de Conteúdo', - description: 'Proteja a saída do modelo usando a API de moderação ou mantendo uma lista de palavras sensíveis.', - allEnabled: 'Conteúdo de ENTRADA/SAÍDA Habilitado', - inputEnabled: 'Conteúdo de ENTRADA Habilitado', - outputEnabled: 'Conteúdo de SAÍDA Habilitado', - modal: { - title: 'Configurações de Moderação de Conteúdo', - provider: { - title: 'Provedor', - openai: 'Moderação OpenAI', - openaiTip: { - prefix: 'A Moderação OpenAI requer uma chave de API da OpenAI configurada em ', - suffix: '.', - }, - keywords: 'Palavras-chave', - }, - keywords: { - tip: 'Uma por linha, separadas por quebras de linha. Até 100 caracteres por linha.', - placeholder: 'Uma por linha, separadas por quebras de linha', - line: 'Linha', - }, - content: { - input: 'Moderar Conteúdo de ENTRADA', - output: 'Moderar Conteúdo de SAÍDA', - preset: 'Respostas pré-definidas', - placeholder: 'Insira o conteúdo das respostas pré-definidas aqui', - condition: 'Moderar Conteúdo de ENTRADA e SAÍDA habilitado pelo menos uma', - fromApi: 'As respostas pré-definidas são retornadas pela API', - errorMessage: 'As respostas pré-definidas não podem estar vazias', - supportMarkdown: 'Suporte a Markdown', - }, - openaiNotConfig: { - before: 'A Moderação OpenAI requer uma chave de API da OpenAI configurada em ', - after: '', - }, - }, - contentEnableLabel: 'Moderação de conteúdo habilitada', - }, - fileUpload: { - title: 'Upload de Arquivo', - description: 'A caixa de entrada do chat permite fazer upload de imagens, documentos e outros arquivos.', - supportedTypes: 'Tipos de Arquivo Suportados', - numberLimit: 'Máximo de uploads', - modalTitle: 'Configuração de Upload de Arquivo', - }, - imageUpload: { - title: 'Upload de Imagem', - description: 'Permite fazer upload de imagens.', - supportedTypes: 'Tipos de Arquivo Suportados', - numberLimit: 'Máximo de uploads', - modalTitle: 'Configuração de Upload de Imagem', - }, - bar: { - empty: 'Habilitar recursos para melhorar a experiência do usuário do aplicativo web', - enableText: 'Recursos Habilitados', - manage: 'Gerenciar', - }, - documentUpload: { - title: 'Documento', - description: 'Habilitar Documento permitirá que o modelo aceite documentos e responda perguntas sobre eles.', - }, - audioUpload: { - title: 'Áudio', - description: 'Habilitar Áudio permitirá que o modelo processe arquivos de áudio para transcrição e análise.', - }, - }, - automatic: { - }, - resetConfig: { - title: 'Confirmar redefinição?', - message: - 'A redefinição descarta as alterações, restaurando a última configuração publicada.', - }, - errorMessage: { - nameOfKeyRequired: 'nome da chave: {{key}} obrigatório', - valueOfVarRequired: 'valor de {{key}} não pode estar vazio', - queryRequired: 'Texto da solicitação é obrigatório.', - waitForResponse: - 'Aguarde a resposta à mensagem anterior ser concluída.', - waitForBatchResponse: - 'Aguarde a resposta à tarefa em lote ser concluída.', - notSelectModel: 'Por favor, escolha um modelo', - waitForImgUpload: 'Aguarde o upload da imagem', - waitForFileUpload: 'Aguarde o upload do arquivo / arquivos', - }, - chatSubTitle: 'Instruções', - completionSubTitle: 'Prefixo da Solicitação', - promptTip: - 'As solicitações guiam as respostas da IA com instruções e restrições. Insira variáveis como {{input}}. Este prompt não será visível para os usuários.', - formattingChangedTitle: 'Formatação alterada', - formattingChangedText: - 'Modificar a formatação redefinirá a área de depuração, você tem certeza?', - variableTitle: 'Variáveis', - variableTip: - 'Os usuários preenchem as variáveis em um formulário, substituindo automaticamente as variáveis na solicitação.', - notSetVar: 'As variáveis permitem que os usuários introduzam palavras de solicitação ou observações iniciais ao preencher formulários. Você pode tentar digitar "{{input}}" nas palavras de solicitação.', - autoAddVar: 'Variáveis indefinidas referenciadas na pré-solicitação, você deseja adicioná-las no formulário de entrada do usuário?', - variableTable: { - key: 'Chave da Variável', - name: 'Nome do Campo de Entrada do Usuário', - type: 'Tipo de Entrada', - action: 'Ações', - typeString: 'Texto', - typeSelect: 'Selecionar', - }, - varKeyError: { - canNoBeEmpty: '{{key}} é obrigatório', - tooLong: '{{key}} é muito longa. Não pode ter mais de 30 caracteres', - notValid: '{{key}} é inválida. Pode conter apenas letras, números e sublinhados', - notStartWithNumber: '{{key}} não pode começar com um número', - keyAlreadyExists: '{{key}} já existe', - }, - otherError: { - promptNoBeEmpty: 'A solicitação não pode estar vazia', - historyNoBeEmpty: 'O histórico da conversa deve ser definido na solicitação', - queryNoBeEmpty: 'A consulta deve ser definida na solicitação', - }, - variableConfig: { - 'addModalTitle': 'Adicionar Campo de Entrada', - 'editModalTitle': 'Editar Campo de Entrada', - 'description': 'Configuração para a variável {{varName}}', - 'fieldType': 'Tipo de Campo', - 'string': 'Texto Curto', - 'text-input': 'Texto Curto', - 'paragraph': 'Parágrafo', - 'select': 'Selecionar', - 'number': 'Número', - 'notSet': 'Não definido, tente digitar {{input}} no prompt de prefixo', - 'stringTitle': 'Opções da caixa de texto do formulário', - 'maxLength': 'Comprimento Máximo', - 'options': 'Opções', - 'addOption': 'Adicionar opção', - 'apiBasedVar': 'Variável Baseada em API', - 'varName': 'Nome da Variável', - 'labelName': 'Nome do Rótulo', - 'inputPlaceholder': 'Por favor, insira', - 'required': 'Obrigatório', - 'hide': 'Ocultar', - 'errorMsg': { - labelNameRequired: 'O nome do rótulo é obrigatório', - varNameCanBeRepeat: 'O nome da variável não pode ser repetido', - atLeastOneOption: 'Pelo menos uma opção é obrigatória', - optionRepeat: 'Tem opções repetidas', - }, - 'defaultValue': 'Valor padrão', - 'noDefaultValue': 'Nenhum valor padrão', - 'selectDefaultValue': 'Selecionar valor padrão', - 'file': { - image: { - name: 'Imagem', - }, - audio: { - name: 'Áudio', - }, - document: { - name: 'Documento', - }, - video: { - name: 'Vídeo', - }, - custom: { - description: 'Especifique outros tipos de arquivo.', - name: 'Outros tipos de arquivo', - createPlaceholder: ' Extensão de arquivo, por exemplo, .doc', - }, - supportFileTypes: 'Tipos de arquivo de suporte', - }, - 'content': 'Conteúdo', - 'multi-files': 'Lista de arquivos', - 'single-file': 'Fila indiana', - 'maxNumberOfUploads': 'Número máximo de uploads', - 'maxNumberTip': 'Documento < {{docLimit}}, imagem < {{imgLimit}}, áudio < {{audioLimit}}, vídeo < {{videoLimit}}', - 'uploadFileTypes': 'Carregar tipos de arquivo', - 'both': 'Ambos', - 'localUpload': 'Local Upload', - 'optional': 'opcional', - 'json': 'Código JSON', - 'checkbox': 'Caixa de seleção', - 'jsonSchema': 'Esquema JSON', - 'unit': 'Unidade', - 'uploadMethod': 'Método de upload', - 'displayName': 'Nome de exibição', - 'noDefaultSelected': 'Não selecione', - 'placeholder': 'Espaço reservado', - 'showAllSettings': 'Mostrar todas as configurações', - 'startChecked': 'Iniciar verificado', - 'tooltipsPlaceholder': 'Insira um texto útil mostrado ao passar o mouse sobre o rótulo', - 'defaultValuePlaceholder': 'Insira o valor padrão para preencher previamente o campo', - 'placeholderPlaceholder': 'Insira o texto a ser exibido quando o campo estiver vazio', - 'unitPlaceholder': 'Exibir unidades após números, por exemplo, tokens', - 'tooltips': 'Dicas de ferramentas', - 'startSelectedOption': 'Iniciar opção selecionada', - }, - vision: { - name: 'Visão', - description: 'Habilitar a Visão permite que o modelo receba imagens e responda perguntas sobre elas.', - settings: 'Configurações', - visionSettings: { - title: 'Configurações de Visão', - resolution: 'Resolução', - resolutionTooltip: 'Baixa resolução permitirá que o modelo receba uma versão de baixa resolução de 512 x 512 da imagem e represente a imagem com um orçamento de 65 tokens. Isso permite que a API retorne respostas mais rápidas e consuma menos tokens de entrada para casos de uso que não exigem alta precisão.\nAlta resolução permitirá que o modelo veja a imagem de baixa resolução e crie recortes detalhados das imagens de entrada como quadrados de 512px com base no tamanho da imagem de entrada. Cada um dos recortes detalhados usa o dobro do orçamento de tokens, totalizando 129 tokens.', - high: 'Alta', - low: 'Baixa', - uploadMethod: 'Método de Upload', - both: 'Ambos', - localUpload: 'Upload Local', - url: 'URL', - uploadLimit: 'Limite de Upload', - }, - onlySupportVisionModelTip: 'Suporta apenas modelos de visão', - }, - voice: { - name: 'voz', - defaultDisplay: 'Voz padrão', - description: 'Texto para configurações de timbre de voz', - settings: 'As configurações', - voiceSettings: { - title: 'voz As configurações', - language: 'línguas', - resolutionTooltip: 'Texto para voz timbre suporta idiomas.', - voice: 'voz', - autoPlay: 'Reprodução automática', - autoPlayEnabled: 'ligar', - autoPlayDisabled: 'fecho', - }, - }, - openingStatement: { - title: 'Abertura da Conversa', - add: 'Adicionar', - writeOpener: 'Escrever abertura', - placeholder: 'Escreva sua mensagem de abertura aqui, você pode usar variáveis, tente digitar {{variável}}.', - openingQuestion: 'Perguntas de Abertura', - openingQuestionPlaceholder: 'Você pode usar variáveis, tente digitar {{variable}}.', - noDataPlaceHolder: - 'Iniciar a conversa com o usuário pode ajudar a IA a estabelecer uma conexão mais próxima com eles em aplicativos de conversação.', - varTip: 'Você pode usar variáveis, tente digitar {{variável}}', - tooShort: 'São necessárias pelo menos 20 palavras de prompt inicial para gerar observações de abertura para a conversa.', - notIncludeKey: 'O prompt inicial não inclui a variável: {{key}}. Por favor, adicione-a ao prompt inicial.', - }, - modelConfig: { - model: 'Modelo', - setTone: 'Definir tom das respostas', - title: 'Modelo e Parâmetros', - modeType: { - chat: 'Chat', - completion: 'Completar', - }, - }, - inputs: { - title: 'Depuração e Visualização', - noPrompt: 'Tente escrever algum prompt na entrada de pré-prompt', - userInputField: 'Campo de Entrada do Usuário', - noVar: 'Preencha o valor da variável, que será substituída automaticamente na palavra de solicitação sempre que uma nova sessão for iniciada.', - chatVarTip: - 'Preencha o valor da variável, que será substituída automaticamente na palavra de solicitação sempre que uma nova sessão for iniciada', - completionVarTip: - 'Preencha o valor da variável, que será substituída automaticamente nas palavras de solicitação sempre que uma pergunta for enviada.', - previewTitle: 'Visualização do Prompt', - queryTitle: 'Conteúdo da Consulta', - queryPlaceholder: 'Por favor, insira o texto da solicitação.', - run: 'EXECUTAR', - }, - result: 'Texto de Saída', - datasetConfig: { - settingTitle: 'Configurações de Recuperação', - knowledgeTip: 'Clique no botão “+” para adicionar conhecimento', - retrieveOneWay: { - title: 'Recuperação N-para-1', - description: 'Com base na intenção do usuário e nas descrições do Conhecimento, o Agente seleciona autonomamente o melhor Conhecimento para consulta. Melhor para aplicativos com Conhecimento distinto e limitado.', - }, - retrieveMultiWay: { - title: 'Recuperação Multi-caminho', - description: 'Com base na intenção do usuário, consulta todos os Conhecimentos, recupera texto relevante de várias fontes e seleciona os melhores resultados que correspondem à consulta do usuário após a reclassificação. É necessária a configuração da API do modelo de reclassificação.', - }, - rerankModelRequired: 'Modelo de reclassificação é necessário', - params: 'Parâmetros', - top_k: 'Top K', - top_kTip: 'Usado para filtrar os trechos mais semelhantes às perguntas do usuário. O sistema também ajustará dinamicamente o valor de Top K, de acordo com max_tokens do modelo selecionado.', - score_threshold: 'Limiar de Pontuação', - score_thresholdTip: 'Usado para definir o limiar de similaridade para filtragem de trechos.', - retrieveChangeTip: 'Modificar o modo de índice e o modo de recuperação pode afetar os aplicativos associados a este Conhecimento.', - embeddingModelRequired: 'É necessário um modelo de incorporação configurado', - }, - assistantType: { - name: 'Tipo de Assistente', - chatAssistant: { - name: 'Assistente Básico', - description: 'Construa um assistente baseado em chat usando um Modelo de Linguagem Grande', - }, - agentAssistant: { - name: 'Assistente de Agente', - description: 'Construa um Agente inteligente que pode escolher autonomamente ferramentas para concluir as tarefas', - }, - }, - agent: { - agentMode: 'Modo do Agente', - agentModeDes: 'Defina o tipo de modo de inferência para o agente', - agentModeType: { - ReACT: 'ReAct', - functionCall: 'Chamada de Função', - }, - setting: { - name: 'Configurações do Agente', - description: 'As configurações do Assistente de Agente permitem definir o modo do agente e recursos avançados como prompts incorporados, disponíveis apenas no tipo de Agente.', - maximumIterations: { - name: 'Número Máximo de Iterações', - description: 'Limite o número de iterações que um assistente de agente pode executar', - }, - }, - buildInPrompt: 'Prompt Incorporado', - firstPrompt: 'Primeiro Prompt', - nextIteration: 'Próxima Iteração', - promptPlaceholder: 'Escreva seu prompt aqui', - tools: { - name: 'Ferramentas', - description: 'O uso de ferramentas pode ampliar as capacidades do LLM, como pesquisar na internet ou realizar cálculos científicos', - enabled: 'Habilitado', - }, - }, - codegen: { - instruction: 'Instruções', - generatedCodeTitle: 'Código gerado', - noDataLine1: 'Descreva seu caso de uso à esquerda,', - loading: 'Gerando código...', - description: 'O Gerador de código usa modelos configurados para gerar código de alta qualidade com base em suas instruções. Por favor, forneça instruções claras e detalhadas.', - generate: 'Gerar', - resTitle: 'Código gerado', - title: 'Gerador de código', - overwriteConfirmTitle: 'Substituir o código existente?', - overwriteConfirmMessage: 'Essa ação substituirá o código existente. Você quer continuar?', - apply: 'Aplicar', - applyChanges: 'Aplicar alterações', - instructionPlaceholder: 'Insira uma descrição detalhada do código que você deseja gerar.', - noDataLine2: 'A visualização do código será exibida aqui.', - }, - generate: { - template: { - pythonDebugger: { - instruction: 'Um bot que pode gerar e depurar seu código com base em suas instruções', - name: 'Depurador Python', - }, - translation: { - name: 'Tradução', - instruction: 'Um tradutor que pode traduzir vários idiomas', - }, - professionalAnalyst: { - name: 'Analista profissional', - instruction: 'Extraia insights, identifique riscos e destile informações importantes de relatórios longos em um único memorando', - }, - excelFormulaExpert: { - name: 'Especialista em fórmulas do Excel', - instruction: 'Um chatbot que pode ajudar usuários iniciantes a entender, usar e criar fórmulas do Excel com base nas instruções do usuário', - }, - travelPlanning: { - name: 'Planejamento de viagens', - instruction: 'O Assistente de Planejamento de Viagens é uma ferramenta inteligente projetada para ajudar os usuários a planejar suas viagens sem esforço', - }, - SQLSorcerer: { - instruction: 'Transforme a linguagem cotidiana em consultas SQL', - name: 'Feiticeiro SQL', - }, - GitGud: { - instruction: 'Gerar comandos Git apropriados com base nas ações de controle de versão descritas pelo usuário', - name: 'Bom jogo', - }, - meetingTakeaways: { - name: 'Conclusões da reunião', - instruction: 'Destilar reuniões em resumos concisos, incluindo tópicos de discussão, principais conclusões e itens de ação', - }, - writingsPolisher: { - instruction: 'Use técnicas avançadas de edição de texto para melhorar seus escritos', - name: 'Polidor de escrita', - }, - }, - generate: 'Gerar', - overwriteMessage: 'A aplicação desse prompt substituirá a configuração existente.', - apply: 'Aplicar', - title: 'Gerador de Prompt', - description: 'O Gerador de Prompts usa o modelo configurado para otimizar prompts para maior qualidade e melhor estrutura. Por favor, escreva instruções claras e detalhadas.', - tryIt: 'Experimente', - loading: 'Orquestrando o aplicativo para você...', - instruction: 'Instruções', - resTitle: 'Prompt gerado', - overwriteTitle: 'Substituir a configuração existente?', - to: 'para', - press: 'Imprensa', - version: 'Versão', - dismiss: 'Dispensar', - insertContext: 'inserir contexto', - versions: 'Versões', - optimizationNote: 'Nota de Otimização', - latest: 'Último', - instructionPlaceHolderLine2: 'O formato de saída está incorreto, por favor, siga estritamente o formato JSON.', - optimizePromptTooltip: 'Otimize no Gerador de Prompt', - idealOutput: 'Saída Ideal', - instructionPlaceHolderLine1: 'Torne a saída mais concisa, mantendo os pontos principais.', - optional: 'Opcional', - instructionPlaceHolderLine3: 'O tom está muito ríspido, por favor, torne-o mais amigável.', - idealOutputPlaceholder: 'Descreva o formato ideal de resposta, comprimento, tom e requisitos de conteúdo.', - instructionPlaceHolderTitle: 'Descreva como você gostaria de melhorar este Prompt. Por exemplo:', - newNoDataLine1: 'Escreva uma instrução na coluna da esquerda e clique em Gerar para ver a resposta.', - codeGenInstructionPlaceHolderLine: 'Quanto mais detalhado for o feedback, como os tipos de dados de entrada e saída, bem como a forma como as variáveis são processadas, mais precisa será a geração de código.', - }, - warningMessage: { - timeoutExceeded: 'Os resultados não são exibidos devido ao tempo limite. Consulte os logs para obter os resultados completos.', - }, - debugAsSingleModel: 'Depurar como modelo único', - noResult: 'A saída será exibida aqui.', - debugAsMultipleModel: 'Depurar como vários modelos', - publishAs: 'Publicar como', - duplicateModel: 'Duplicar', -} - -export default translation diff --git a/web/i18n/pt-BR/app-log.json b/web/i18n/pt-BR/app-log.json new file mode 100644 index 0000000000..8e19e60bb9 --- /dev/null +++ b/web/i18n/pt-BR/app-log.json @@ -0,0 +1,111 @@ +{ + "title": "Registros", + "description": "Os registros registram o status de execução do aplicativo, incluindo entradas do usuário e respostas do AI.", + "dateTimeFormat": "MM/DD/YYYY hh:mm:ss A", + "table": { + "header": { + "updatedTime": "Hora de atualização", + "time": "Hora de criação", + "endUser": "Usuário final ou conta", + "input": "Entrada", + "output": "Saída", + "summary": "Título", + "messageCount": "Contagem de Mensagens", + "userRate": "Taxa de Usuário", + "adminRate": "Taxa de Op.", + "startTime": "HORA DE INÍCIO", + "status": "STATUS", + "runtime": "TEMPO DE EXECUÇÃO", + "tokens": "TOKENS", + "user": "USUÁRIO FINAL OU CONTA", + "version": "VERSÃO", + "triggered_from": "ATIVADO POR" + }, + "pagination": { + "previous": "Anterior", + "next": "Próximo" + }, + "empty": { + "noChat": "Ainda não há conversas", + "noOutput": "Sem saída", + "element": { + "title": "Tem alguém aí?", + "content": "Observe e anote as interações entre os usuários finais e os aplicativos de IA aqui para melhorar continuamente a precisão da IA. Você pode tentar compartilhar ou testar o aplicativo da Web você mesmo, e depois voltar para esta página." + } + } + }, + "detail": { + "time": "Hora", + "conversationId": "ID da Conversa", + "promptTemplate": "Modelo de Prompt", + "promptTemplateBeforeChat": "Modelo de Prompt Antes do Chat · Como Mensagem do Sistema", + "annotationTip": "Melhorias Marcadas por {{user}}", + "timeConsuming": "", + "second": "s", + "tokenCost": "Token gasto", + "loading": "carregando", + "operation": { + "like": "curtir", + "dislike": "não curtir", + "addAnnotation": "Adicionar Melhoria", + "editAnnotation": "Editar Melhoria", + "annotationPlaceholder": "Digite a resposta esperada que você deseja que o AI responda, o que pode ser usado para ajustar o modelo e melhorar continuamente a qualidade da geração de texto no futuro." + }, + "variables": "Variáveis", + "uploadImages": "Imagens Carregadas", + "modelParams": "Parâmetros do modelo" + }, + "filter": { + "period": { + "today": "Hoje", + "last7days": "Últimos 7 dias", + "last4weeks": "Últimas 4 semanas", + "last3months": "Últimos 3 meses", + "last12months": "Últimos 12 meses", + "monthToDate": "Mês até hoje", + "quarterToDate": "Trimestre até hoje", + "yearToDate": "Ano até hoje", + "allTime": "Todo o tempo", + "custom": "Personalizado", + "last30days": "Últimos 30 Dias" + }, + "annotation": { + "all": "Tudo", + "annotated": "Melhorias Anotadas ({{count}} itens)", + "not_annotated": "Não Anotado" + }, + "sortBy": "Ordenar por:", + "descending": "decrescente", + "ascending": "crescente" + }, + "workflowTitle": "Registros de Fluxo de Trabalho", + "workflowSubtitle": "O registro registrou a operação do Automate.", + "runDetail": { + "title": "Registro de Conversa", + "workflowTitle": "Detalhes do Registro", + "fileListLabel": "Detalhes do arquivo", + "fileListDetail": "Detalhe", + "testWithParams": "Teste com parâmetros" + }, + "promptLog": "Registro de Prompt", + "agentLog": "Registro do agente", + "viewLog": "Ver Registro", + "agenteLogDetail": {}, + "agentLogDetail": { + "iterations": "Iterações", + "agentMode": "Modo Agente", + "finalProcessing": "Processamento final", + "iteration": "Iteração", + "toolUsed": "Ferramenta usada" + }, + "dateFormat": "DD/MM/AAAA", + "triggerBy": { + "debugging": "Depuração", + "appRun": "Aplicativo Web", + "webhook": "Webhook", + "schedule": "Agenda", + "plugin": "Plugin", + "ragPipelineRun": "Pipeline RAG", + "ragPipelineDebugging": "Depuração RAG" + } +} diff --git a/web/i18n/pt-BR/app-log.ts b/web/i18n/pt-BR/app-log.ts deleted file mode 100644 index 55d654bf37..0000000000 --- a/web/i18n/pt-BR/app-log.ts +++ /dev/null @@ -1,114 +0,0 @@ -const translation = { - title: 'Registros', - description: 'Os registros registram o status de execução do aplicativo, incluindo entradas do usuário e respostas do AI.', - dateTimeFormat: 'MM/DD/YYYY hh:mm:ss A', - table: { - header: { - updatedTime: 'Hora de atualização', - time: 'Hora de criação', - endUser: 'Usuário final ou conta', - input: 'Entrada', - output: 'Saída', - summary: 'Título', - messageCount: 'Contagem de Mensagens', - userRate: 'Taxa de Usuário', - adminRate: 'Taxa de Op.', - startTime: 'HORA DE INÍCIO', - status: 'STATUS', - runtime: 'TEMPO DE EXECUÇÃO', - tokens: 'TOKENS', - user: 'USUÁRIO FINAL OU CONTA', - version: 'VERSÃO', - triggered_from: 'ATIVADO POR', - }, - pagination: { - previous: 'Anterior', - next: 'Próximo', - }, - empty: { - noChat: 'Ainda não há conversas', - noOutput: 'Sem saída', - element: { - title: 'Tem alguém aí?', - content: 'Observe e anote as interações entre os usuários finais e os aplicativos de IA aqui para melhorar continuamente a precisão da IA. Você pode tentar compartilhar ou testar o aplicativo da Web você mesmo, e depois voltar para esta página.', - }, - }, - }, - detail: { - time: 'Hora', - conversationId: 'ID da Conversa', - promptTemplate: 'Modelo de Prompt', - promptTemplateBeforeChat: 'Modelo de Prompt Antes do Chat · Como Mensagem do Sistema', - annotationTip: 'Melhorias Marcadas por {{user}}', - timeConsuming: '', - second: 's', - tokenCost: 'Token gasto', - loading: 'carregando', - operation: { - like: 'curtir', - dislike: 'não curtir', - addAnnotation: 'Adicionar Melhoria', - editAnnotation: 'Editar Melhoria', - annotationPlaceholder: 'Digite a resposta esperada que você deseja que o AI responda, o que pode ser usado para ajustar o modelo e melhorar continuamente a qualidade da geração de texto no futuro.', - }, - variables: 'Variáveis', - uploadImages: 'Imagens Carregadas', - modelParams: 'Parâmetros do modelo', - }, - filter: { - period: { - today: 'Hoje', - last7days: 'Últimos 7 dias', - last4weeks: 'Últimas 4 semanas', - last3months: 'Últimos 3 meses', - last12months: 'Últimos 12 meses', - monthToDate: 'Mês até hoje', - quarterToDate: 'Trimestre até hoje', - yearToDate: 'Ano até hoje', - allTime: 'Todo o tempo', - custom: 'Personalizado', - last30days: 'Últimos 30 Dias', - }, - annotation: { - all: 'Tudo', - annotated: 'Melhorias Anotadas ({{count}} itens)', - not_annotated: 'Não Anotado', - }, - sortBy: 'Ordenar por:', - descending: 'decrescente', - ascending: 'crescente', - }, - workflowTitle: 'Registros de Fluxo de Trabalho', - workflowSubtitle: 'O registro registrou a operação do Automate.', - runDetail: { - title: 'Registro de Conversa', - workflowTitle: 'Detalhes do Registro', - fileListLabel: 'Detalhes do arquivo', - fileListDetail: 'Detalhe', - testWithParams: 'Teste com parâmetros', - }, - promptLog: 'Registro de Prompt', - agentLog: 'Registro do agente', - viewLog: 'Ver Registro', - agenteLogDetail: { - }, - agentLogDetail: { - iterations: 'Iterações', - agentMode: 'Modo Agente', - finalProcessing: 'Processamento final', - iteration: 'Iteração', - toolUsed: 'Ferramenta usada', - }, - dateFormat: 'DD/MM/AAAA', - triggerBy: { - debugging: 'Depuração', - appRun: 'Aplicativo Web', - webhook: 'Webhook', - schedule: 'Agenda', - plugin: 'Plugin', - ragPipelineRun: 'Pipeline RAG', - ragPipelineDebugging: 'Depuração RAG', - }, -} - -export default translation diff --git a/web/i18n/pt-BR/app-overview.json b/web/i18n/pt-BR/app-overview.json new file mode 100644 index 0000000000..a079ff85d4 --- /dev/null +++ b/web/i18n/pt-BR/app-overview.json @@ -0,0 +1,187 @@ +{ + "welcome": { + "firstStepTip": "Para começar,", + "enterKeyTip": "insira sua chave de API OpenAI abaixo", + "getKeyTip": "Obtenha sua chave de API no painel da OpenAI", + "placeholder": "Sua chave de API OpenAI (ex. sk-xxxx)" + }, + "apiKeyInfo": { + "cloud": { + "trial": { + "title": "Você está usando a cota de teste da {{providerName}}.", + "description": "A cota de teste é fornecida para seu uso de teste. Antes que as chamadas de cota de teste se esgotem, configure seu próprio provedor de modelo ou compre cota adicional." + }, + "exhausted": { + "title": "Sua cota de teste foi usada, configure sua chave de API.", + "description": "Sua cota de teste foi esgotada. Configure seu próprio provedor de modelo ou compre cota adicional." + } + }, + "selfHost": { + "title": { + "row1": "Para começar,", + "row2": "configure primeiro seu provedor de modelo." + } + }, + "callTimes": "Número de chamadas", + "usedToken": "Tokens usados", + "setAPIBtn": "Ir para configurar o provedor de modelo", + "tryCloud": "Ou experimente a versão em nuvem do Dify com cota gratuita" + }, + "overview": { + "title": "Visão Geral", + "appInfo": { + "explanation": "web app de IA Pronta para Uso", + "accessibleAddress": "URL Pública", + "preview": "Visualização", + "regenerate": "Regenerar", + "regenerateNotice": "Você deseja regenerar a URL pública?", + "preUseReminder": "Por favor, ative o web app antes de continuar.", + "settings": { + "entry": "Configurações", + "title": "Configurações do web app", + "webName": "Nome do web app", + "webDesc": "Descrição do web app", + "webDescTip": "Este texto será exibido no lado do cliente, fornecendo orientações básicas sobre como usar o aplicativo", + "webDescPlaceholder": "Insira a descrição do web app", + "language": "Idioma", + "workflow": { + "title": "Etapas do fluxo de trabalho", + "show": "Mostrar", + "hide": "Ocultar", + "subTitle": "Detalhes do fluxo de trabalho", + "showDesc": "Mostrar ou ocultar detalhes do fluxo de trabalho no web app" + }, + "chatColorTheme": "Tema de cor do chatbot", + "chatColorThemeDesc": "Defina o tema de cor do chatbot", + "chatColorThemeInverted": "Inve", + "invalidHexMessage": "Valor hex inválido", + "invalidPrivacyPolicy": "Link de política de privacidade inválido. Por favor, use um link válido que comece com http ou https", + "more": { + "entry": "Mostrar mais configurações", + "copyright": "Direitos autorais", + "copyRightPlaceholder": "Insira o nome do autor ou organização", + "privacyPolicy": "Política de Privacidade", + "privacyPolicyPlaceholder": "Insira o link da política de privacidade", + "privacyPolicyTip": "Ajuda os visitantes a entender os dados coletados pelo aplicativo, consulte a Política de Privacidade do Dify.", + "customDisclaimer": "Aviso Legal Personalizado", + "customDisclaimerPlaceholder": "Insira o texto do aviso legal", + "customDisclaimerTip": "O texto do aviso legal personalizado será exibido no lado do cliente, fornecendo informações adicionais sobre o aplicativo", + "copyrightTip": "Exibir informações de direitos autorais no web app", + "copyrightTooltip": "Por favor, atualize para o plano Professional ou superior" + }, + "sso": { + "tooltip": "Entre em contato com o administrador para habilitar o SSO do web app", + "label": "Autenticação SSO", + "title": "web app SSO", + "description": "Todos os usuários devem fazer login com SSO antes de usar o web app" + }, + "modalTip": "Configurações do aplicativo Web do lado do cliente." + }, + "embedded": { + "entry": "Embutido", + "title": "Incorporar no site", + "explanation": "Escolha a maneira de incorporar o aplicativo de chat ao seu site", + "iframe": "Para adicionar o aplicativo de chat em qualquer lugar do seu site, adicione este iframe ao seu código HTML.", + "scripts": "Para adicionar um aplicativo de chat no canto inferior direito do seu site, adicione este código ao seu HTML.", + "chromePlugin": "Instalar a Extensão do Chrome Dify Chatbot", + "copied": "Copiado", + "copy": "Copiar" + }, + "qrcode": { + "title": "Código QR para compartilhar", + "scan": "Digitalizar e compartilhar o aplicativo", + "download": "Baixar código QR" + }, + "customize": { + "way": "modo", + "entry": "Personalizar", + "title": "Personalizar web app de IA", + "explanation": "Você pode personalizar a interface do usuário do Web App para atender às suas necessidades de cenário e estilo.", + "way1": { + "name": "Faça um fork do código do cliente, modifique-o e implante-o no Vercel (recomendado)", + "step1": "Faça um fork do código do cliente e modifique-o", + "step1Tip": "Clique aqui para fazer um fork do código-fonte na sua conta GitHub e modificar o código", + "step1Operation": "Cliente-Web-Dify", + "step2": "Implantar no Vercel", + "step2Tip": "Clique aqui para importar o repositório no Vercel e implantar", + "step2Operation": "Importar repositório", + "step3": "Configurar as variáveis de ambiente", + "step3Tip": "Adicione as seguintes variáveis de ambiente no Vercel" + }, + "way2": { + "name": "Escreva código do lado do cliente para chamar a API e implante-o em um servidor", + "operation": "Documentação" + } + }, + "launch": "Lançar", + "enableTooltip": { + "description": "Para ativar este recurso, adicione um nó de Entrada do Usuário ao canvas. (Pode já existir no rascunho, e entra em efeito após a publicação)", + "learnMore": "Saiba mais" + }, + "title": "Aplicativo Web" + }, + "apiInfo": { + "title": "API de Serviço de Back-end", + "explanation": "Facilmente integrado em sua aplicação", + "accessibleAddress": "Endpoint do Serviço API", + "doc": "Referência da API" + }, + "status": { + "running": "Em serviço", + "disable": "Desabilitar" + }, + "triggerInfo": { + "title": "Gatilhos", + "explanation": "Gerenciamento de gatilho de fluxo de trabalho", + "triggersAdded": "{{count}} gatilhos adicionados", + "noTriggerAdded": "Nenhum gatilho adicionado", + "triggerStatusDescription": "O status do nó de gatilho aparece aqui. (Pode já existir no rascunho, entra em vigor após a publicação)", + "learnAboutTriggers": "Saiba mais sobre Gatilhos" + }, + "disableTooltip": { + "triggerMode": "O recurso {{feature}} não é compatível no modo Nó de Gatilho." + } + }, + "analysis": { + "title": "Análise", + "ms": "ms", + "tokenPS": "Token/s", + "totalMessages": { + "title": "Total de Mensagens", + "explanation": "Contagem diária de interações com IA." + }, + "totalConversations": { + "title": "Total de Conversas", + "explanation": "Contagem diária de conversas com IA; engenharia/depuração de prompts excluída." + }, + "activeUsers": { + "title": "Usuários Ativos", + "explanation": "Usuários únicos engajando em Q&A com AI; engenharia/de depuração excluída." + }, + "tokenUsage": { + "title": "Uso de Token", + "explanation": "Reflete o uso diário do token do modelo de linguagem para o aplicativo, útil para fins de controle de custos.", + "consumed": "Consumido" + }, + "avgSessionInteractions": { + "title": "Média de Interações por Sessão", + "explanation": "Contagem de comunicação contínua entre usuário e AI; para aplicativos baseados em conversação." + }, + "avgUserInteractions": { + "title": "Média de Interações por Usuário", + "explanation": "Reflete a frequência de uso diário dos usuários. Essa métrica reflete a fidelidade do usuário." + }, + "userSatisfactionRate": { + "title": "Taxa de Satisfação do Usuário", + "explanation": "O número de curtidas por 1.000 mensagens. Isso indica a proporção de respostas com as quais os usuários estão altamente satisfeitos." + }, + "avgResponseTime": { + "title": "Tempo Médio de Resposta", + "explanation": "Tempo (ms) para o AI processar/responder; para aplicativos baseados em texto." + }, + "tps": { + "title": "Velocidade de Saída do Token", + "explanation": "Mede o desempenho do LLM. Conta a velocidade de saída de tokens do LLM desde o início da solicitação até a conclusão da saída." + } + } +} diff --git a/web/i18n/pt-BR/app-overview.ts b/web/i18n/pt-BR/app-overview.ts deleted file mode 100644 index b31a4bb14d..0000000000 --- a/web/i18n/pt-BR/app-overview.ts +++ /dev/null @@ -1,189 +0,0 @@ -const translation = { - welcome: { - firstStepTip: 'Para começar,', - enterKeyTip: 'insira sua chave de API OpenAI abaixo', - getKeyTip: 'Obtenha sua chave de API no painel da OpenAI', - placeholder: 'Sua chave de API OpenAI (ex. sk-xxxx)', - }, - apiKeyInfo: { - cloud: { - trial: { - title: 'Você está usando a cota de teste da {{providerName}}.', - description: 'A cota de teste é fornecida para seu uso de teste. Antes que as chamadas de cota de teste se esgotem, configure seu próprio provedor de modelo ou compre cota adicional.', - }, - exhausted: { - title: 'Sua cota de teste foi usada, configure sua chave de API.', - description: 'Sua cota de teste foi esgotada. Configure seu próprio provedor de modelo ou compre cota adicional.', - }, - }, - selfHost: { - title: { - row1: 'Para começar,', - row2: 'configure primeiro seu provedor de modelo.', - }, - }, - callTimes: 'Número de chamadas', - usedToken: 'Tokens usados', - setAPIBtn: 'Ir para configurar o provedor de modelo', - tryCloud: 'Ou experimente a versão em nuvem do Dify com cota gratuita', - }, - overview: { - title: 'Visão Geral', - appInfo: { - explanation: 'web app de IA Pronta para Uso', - accessibleAddress: 'URL Pública', - preview: 'Visualização', - regenerate: 'Regenerar', - regenerateNotice: 'Você deseja regenerar a URL pública?', - preUseReminder: 'Por favor, ative o web app antes de continuar.', - settings: { - entry: 'Configurações', - title: 'Configurações do web app', - webName: 'Nome do web app', - webDesc: 'Descrição do web app', - webDescTip: 'Este texto será exibido no lado do cliente, fornecendo orientações básicas sobre como usar o aplicativo', - webDescPlaceholder: 'Insira a descrição do web app', - language: 'Idioma', - workflow: { - title: 'Etapas do fluxo de trabalho', - show: 'Mostrar', - hide: 'Ocultar', - subTitle: 'Detalhes do fluxo de trabalho', - showDesc: 'Mostrar ou ocultar detalhes do fluxo de trabalho no web app', - }, - chatColorTheme: 'Tema de cor do chatbot', - chatColorThemeDesc: 'Defina o tema de cor do chatbot', - chatColorThemeInverted: 'Inve', - invalidHexMessage: 'Valor hex inválido', - invalidPrivacyPolicy: 'Link de política de privacidade inválido. Por favor, use um link válido que comece com http ou https', - more: { - entry: 'Mostrar mais configurações', - copyright: 'Direitos autorais', - copyRightPlaceholder: 'Insira o nome do autor ou organização', - privacyPolicy: 'Política de Privacidade', - privacyPolicyPlaceholder: 'Insira o link da política de privacidade', - privacyPolicyTip: 'Ajuda os visitantes a entender os dados coletados pelo aplicativo, consulte a Política de Privacidade do Dify.', - customDisclaimer: 'Aviso Legal Personalizado', - customDisclaimerPlaceholder: 'Insira o texto do aviso legal', - customDisclaimerTip: 'O texto do aviso legal personalizado será exibido no lado do cliente, fornecendo informações adicionais sobre o aplicativo', - copyrightTip: 'Exibir informações de direitos autorais no web app', - copyrightTooltip: 'Por favor, atualize para o plano Professional ou superior', - }, - sso: { - tooltip: 'Entre em contato com o administrador para habilitar o SSO do web app', - label: 'Autenticação SSO', - title: 'web app SSO', - description: 'Todos os usuários devem fazer login com SSO antes de usar o web app', - }, - modalTip: 'Configurações do aplicativo Web do lado do cliente.', - }, - embedded: { - entry: 'Embutido', - title: 'Incorporar no site', - explanation: 'Escolha a maneira de incorporar o aplicativo de chat ao seu site', - iframe: 'Para adicionar o aplicativo de chat em qualquer lugar do seu site, adicione este iframe ao seu código HTML.', - scripts: 'Para adicionar um aplicativo de chat no canto inferior direito do seu site, adicione este código ao seu HTML.', - chromePlugin: 'Instalar a Extensão do Chrome Dify Chatbot', - copied: 'Copiado', - copy: 'Copiar', - }, - qrcode: { - title: 'Código QR para compartilhar', - scan: 'Digitalizar e compartilhar o aplicativo', - download: 'Baixar código QR', - }, - customize: { - way: 'modo', - entry: 'Personalizar', - title: 'Personalizar web app de IA', - explanation: 'Você pode personalizar a interface do usuário do Web App para atender às suas necessidades de cenário e estilo.', - way1: { - name: 'Faça um fork do código do cliente, modifique-o e implante-o no Vercel (recomendado)', - step1: 'Faça um fork do código do cliente e modifique-o', - step1Tip: 'Clique aqui para fazer um fork do código-fonte na sua conta GitHub e modificar o código', - step1Operation: 'Cliente-Web-Dify', - step2: 'Implantar no Vercel', - step2Tip: 'Clique aqui para importar o repositório no Vercel e implantar', - step2Operation: 'Importar repositório', - step3: 'Configurar as variáveis de ambiente', - step3Tip: 'Adicione as seguintes variáveis de ambiente no Vercel', - }, - way2: { - name: 'Escreva código do lado do cliente para chamar a API e implante-o em um servidor', - operation: 'Documentação', - }, - }, - launch: 'Lançar', - enableTooltip: { - description: 'Para ativar este recurso, adicione um nó de Entrada do Usuário ao canvas. (Pode já existir no rascunho, e entra em efeito após a publicação)', - learnMore: 'Saiba mais', - }, - title: 'Aplicativo Web', - }, - apiInfo: { - title: 'API de Serviço de Back-end', - explanation: 'Facilmente integrado em sua aplicação', - accessibleAddress: 'Endpoint do Serviço API', - doc: 'Referência da API', - }, - status: { - running: 'Em serviço', - disable: 'Desabilitar', - }, - triggerInfo: { - title: 'Gatilhos', - explanation: 'Gerenciamento de gatilho de fluxo de trabalho', - triggersAdded: '{{count}} gatilhos adicionados', - noTriggerAdded: 'Nenhum gatilho adicionado', - triggerStatusDescription: 'O status do nó de gatilho aparece aqui. (Pode já existir no rascunho, entra em vigor após a publicação)', - learnAboutTriggers: 'Saiba mais sobre Gatilhos', - }, - disableTooltip: { - triggerMode: 'O recurso {{feature}} não é compatível no modo Nó de Gatilho.', - }, - }, - analysis: { - title: 'Análise', - ms: 'ms', - tokenPS: 'Token/s', - totalMessages: { - title: 'Total de Mensagens', - explanation: 'Contagem diária de interações com IA.', - }, - totalConversations: { - title: 'Total de Conversas', - explanation: 'Contagem diária de conversas com IA; engenharia/depuração de prompts excluída.', - }, - activeUsers: { - title: 'Usuários Ativos', - explanation: 'Usuários únicos engajando em Q&A com AI; engenharia/de depuração excluída.', - }, - tokenUsage: { - title: 'Uso de Token', - explanation: 'Reflete o uso diário do token do modelo de linguagem para o aplicativo, útil para fins de controle de custos.', - consumed: 'Consumido', - }, - avgSessionInteractions: { - title: 'Média de Interações por Sessão', - explanation: 'Contagem de comunicação contínua entre usuário e AI; para aplicativos baseados em conversação.', - }, - avgUserInteractions: { - title: 'Média de Interações por Usuário', - explanation: 'Reflete a frequência de uso diário dos usuários. Essa métrica reflete a fidelidade do usuário.', - }, - userSatisfactionRate: { - title: 'Taxa de Satisfação do Usuário', - explanation: 'O número de curtidas por 1.000 mensagens. Isso indica a proporção de respostas com as quais os usuários estão altamente satisfeitos.', - }, - avgResponseTime: { - title: 'Tempo Médio de Resposta', - explanation: 'Tempo (ms) para o AI processar/responder; para aplicativos baseados em texto.', - }, - tps: { - title: 'Velocidade de Saída do Token', - explanation: 'Mede o desempenho do LLM. Conta a velocidade de saída de tokens do LLM desde o início da solicitação até a conclusão da saída.', - }, - }, -} - -export default translation diff --git a/web/i18n/pt-BR/app.json b/web/i18n/pt-BR/app.json new file mode 100644 index 0000000000..4a31cf26a9 --- /dev/null +++ b/web/i18n/pt-BR/app.json @@ -0,0 +1,345 @@ +{ + "createApp": "CRIAR APLICATIVO", + "types": { + "all": "Todos", + "chatbot": "Chatbot", + "agent": "Agente", + "workflow": "Fluxo de trabalho", + "completion": "Conclusão", + "basic": "Básico", + "advanced": "Fluxo de bate-papo" + }, + "duplicate": "Duplicar", + "duplicateTitle": "Duplicar Aplicativo", + "export": "Exportar DSL", + "exportFailed": "Falha ao exportar DSL.", + "importDSL": "Importar arquivo DSL", + "createFromConfigFile": "Criar a partir do arquivo DSL", + "deleteAppConfirmTitle": "Excluir este aplicativo?", + "deleteAppConfirmContent": "A exclusão do aplicativo é irreversível. Os usuários não poderão mais acessar seu aplicativo e todas as configurações de prompt e logs serão permanentemente excluídas.", + "appDeleted": "Aplicativo excluído", + "appDeleteFailed": "Falha ao excluir aplicativo", + "join": "Participe da comunidade", + "communityIntro": "Discuta com membros da equipe, colaboradores e desenvolvedores em diferentes canais.", + "roadmap": "Veja nosso roteiro", + "newApp": { + "startFromBlank": "Criar do zero", + "startFromTemplate": "Criar do modelo", + "workflowWarning": "Atualmente em beta", + "captionName": "Ícone e nome do aplicativo", + "appNamePlaceholder": "Dê um nome para o seu aplicativo", + "captionDescription": "Descrição", + "appDescriptionPlaceholder": "Digite a descrição do aplicativo", + "useTemplate": "Usar este modelo", + "previewDemo": "Visualizar demonstração", + "chatApp": "Assistente", + "chatAppIntro": "Eu quero construir um aplicativo baseado em chat. Este aplicativo usa um formato de pergunta e resposta, permitindo várias rodadas de conversa contínua.", + "agentAssistant": "Novo Assistente de Agente", + "completeApp": "Gerador de Texto", + "completeAppIntro": "Eu quero criar um aplicativo que gera texto de alta qualidade com base em prompts, como geração de artigos, resumos, traduções e muito mais.", + "showTemplates": "Quero escolher a partir de um modelo", + "hideTemplates": "Voltar para a seleção de modo", + "Create": "Criar", + "Cancel": "Cancelar", + "nameNotEmpty": "O nome não pode estar vazio", + "appTemplateNotSelected": "Por favor, selecione um modelo", + "appTypeRequired": "Por favor, selecione um tipo de aplicativo", + "appCreated": "Aplicativo criado", + "appCreateFailed": "Falha ao criar aplicativo", + "caution": "Cuidado", + "appCreateDSLErrorPart1": "Uma diferença significativa nas versões DSL foi detectada. Forçar a importação pode causar mau funcionamento do aplicativo.", + "appCreateDSLErrorPart4": "Versão DSL suportada pelo sistema:", + "Confirm": "Confirmar", + "appCreateDSLErrorTitle": "Incompatibilidade de versão", + "appCreateDSLWarning": "Cuidado: a diferença de versão DSL pode afetar determinados recursos", + "appCreateDSLErrorPart3": "Versão DSL do aplicativo atual:", + "appCreateDSLErrorPart2": "Você quer continuar?", + "learnMore": "Saiba Mais", + "optional": "Opcional", + "chooseAppType": "Escolha um tipo de aplicativo", + "forBeginners": "Tipos de aplicativos mais básicos", + "noTemplateFound": "Nenhum modelo encontrado", + "foundResults": "{{contagem}} Resultados", + "foundResult": "{{contagem}} Resultado", + "completionUserDescription": "Crie rapidamente um assistente de IA para tarefas de geração de texto com configuração simples.", + "noIdeaTip": "Sem ideias? Confira nossos modelos", + "workflowUserDescription": "Construa fluxos autônomos de IA visualmente com simplicidade de arrastar e soltar.", + "chatbotUserDescription": "Crie rapidamente um chatbot baseado em LLM com configuração simples. Você pode alternar para o fluxo de chat mais tarde.", + "agentShortDescription": "Agente inteligente com raciocínio e uso de ferramenta autônoma", + "forAdvanced": "PARA USUÁRIOS AVANÇADOS", + "chatbotShortDescription": "Chatbot baseado em LLM com configuração simples", + "advancedUserDescription": "Fluxo com recursos adicionais de memória e interface de chatbot.", + "noTemplateFoundTip": "Tente pesquisar usando palavras-chave diferentes.", + "agentUserDescription": "Um agente inteligente capaz de raciocínio iterativo e uso autônomo de ferramentas para atingir os objetivos da tarefa.", + "completionShortDescription": "Assistente de IA para tarefas de geração de texto", + "workflowShortDescription": "Fluxo agêntico para automações inteligentes", + "noAppsFound": "Nenhum aplicativo encontrado", + "advancedShortDescription": "Fluxo aprimorado para conversas de múltiplos turnos", + "dropDSLToCreateApp": "Cole o arquivo DSL aqui para criar o aplicativo", + "import": "Importação" + }, + "editApp": "Editar Informações", + "editAppTitle": "Editar Informações do Aplicativo", + "editDone": "Informações do aplicativo atualizadas", + "editFailed": "Falha ao atualizar informações do aplicativo", + "iconPicker": { + "ok": "OK", + "cancel": "Cancelar", + "emoji": "Emoji", + "image": "Imagem" + }, + "switch": "Mudar para Orquestração de Fluxo de Trabalho", + "switchTipStart": "Será criada uma nova cópia do aplicativo para você e a nova cópia mudará para Orquestração de Fluxo de Trabalho. A nova cópia não permitirá a ", + "switchTip": "volta", + "switchTipEnd": " para Orquestração Básica.", + "switchLabel": "A cópia do aplicativo a ser criada", + "removeOriginal": "Excluir o aplicativo original", + "switchStart": "Iniciar mudança", + "typeSelector": { + "all": "Todos os Tipos", + "chatbot": "Chatbot", + "agent": "Agente", + "workflow": "Fluxo de trabalho", + "completion": "Conclusão", + "advanced": "Fluxo de bate-papo" + }, + "tracing": { + "title": "Rastreamento de desempenho do aplicativo", + "description": "Configurando um provedor LLMOps de terceiros e rastreando o desempenho do aplicativo.", + "config": "Configurar", + "collapse": "Recolher", + "expand": "Expandir", + "tracing": "Rastreamento", + "disabled": "Desativado", + "disabledTip": "Por favor, configure o provedor primeiro", + "enabled": "Em serviço", + "tracingDescription": "Captura o contexto completo da execução do aplicativo, incluindo chamadas LLM, contexto, prompts, solicitações HTTP e mais, para uma plataforma de rastreamento de terceiros.", + "configProviderTitle": { + "configured": "Configurado", + "notConfigured": "Configure o provedor para habilitar o rastreamento", + "moreProvider": "Mais provedores" + }, + "arize": { + "title": "Arize", + "description": "Observabilidade de LLM de nível empresarial, avaliação online e offline, monitoramento e experimentação—impulsionada pelo OpenTelemetry. Projetado especificamente para aplicações baseadas em LLM e agentes." + }, + "phoenix": { + "title": "Phoenix", + "description": "Plataforma de observabilidade, avaliação, engenharia de prompts e experimentação de código aberto baseada em OpenTelemetry para seus fluxos de trabalho e agentes de LLM." + }, + "langsmith": { + "title": "LangSmith", + "description": "Uma plataforma de desenvolvedor completa para cada etapa do ciclo de vida do aplicativo impulsionado por LLM." + }, + "langfuse": { + "title": "Langfuse", + "description": "Rastreamentos, avaliações, gerenciamento de prompts e métricas para depurar e melhorar seu aplicativo LLM." + }, + "inUse": "Em uso", + "configProvider": { + "title": "Configurar ", + "placeholder": "Insira sua {{key}}", + "project": "Projeto", + "publicKey": "Chave Pública", + "secretKey": "Chave Secreta", + "viewDocsLink": "Ver documentação de {{key}}", + "removeConfirmTitle": "Remover configuração de {{key}}?", + "removeConfirmContent": "A configuração atual está em uso, removê-la desligará o recurso de Rastreamento.", + "password": "Senha", + "clientId": "ID do Cliente OAuth", + "clientSecret": "Segredo do Cliente OAuth", + "username": "Nome de usuário", + "personalAccessToken": "Token de Acesso Pessoal (legado)", + "experimentId": "ID do Experimento", + "trackingUri": "URI de rastreamento", + "databricksHost": "URL do Workspace do Databricks" + }, + "view": "Vista", + "opik": { + "description": "Opik é uma plataforma de código aberto para avaliar, testar e monitorar aplicativos LLM.", + "title": "Opik" + }, + "weave": { + "description": "Weave é uma plataforma de código aberto para avaliar, testar e monitorar aplicações de LLM.", + "title": "Trançar" + }, + "aliyun": { + "title": "Monitoramento em Nuvem", + "description": "A plataforma de observabilidade totalmente gerenciada e sem manutenção fornecida pela Alibaba Cloud, permite monitoramento, rastreamento e avaliação prontos para uso de aplicações Dify." + }, + "mlflow": { + "title": "MLflow", + "description": "Plataforma LLMOps de código aberto para rastreamento de experimentos, observabilidade e avaliação, para construir aplicações de IA/LLM com confiança." + }, + "databricks": { + "title": "Databricks", + "description": "Databricks oferece MLflow totalmente gerenciado com forte governança e segurança para armazenar dados de rastreamento." + }, + "tencent": { + "title": "Tencent APM", + "description": "O Monitoramento de Desempenho de Aplicações da Tencent fornece rastreamento abrangente e análise multidimensional para aplicações LLM." + } + }, + "answerIcon": { + "descriptionInExplore": "Se o ícone do web app deve ser usado para substituir 🤖 no Explore", + "description": "Se o ícone web app deve ser usado para substituir 🤖 no aplicativo compartilhado", + "title": "Use o ícone do web app para substituir 🤖" + }, + "importFromDSLUrlPlaceholder": "Cole o link DSL aqui", + "dslUploader": { + "button": "Arraste e solte o arquivo, ou", + "browse": "Navegar" + }, + "importFromDSLUrl": "Do URL", + "importFromDSLFile": "Do arquivo DSL", + "importFromDSL": "Importar de DSL", + "mermaid": { + "handDrawn": "Mão desenhada", + "classic": "Clássico" + }, + "openInExplore": "Abrir no Explore", + "newAppFromTemplate": { + "sidebar": { + "Programming": "Programação", + "Agent": "Agente", + "HR": "RH", + "Workflow": "Fluxo de trabalho", + "Writing": "Escrita", + "Recommended": "Recomendado", + "Assistant": "Assistente" + }, + "searchAllTemplate": "Pesquisar todos os modelos...", + "byCategories": "POR CATEGORIAS" + }, + "showMyCreatedAppsOnly": "Mostrar apenas meus aplicativos criados", + "appSelector": { + "label": "APLICAÇÃO", + "noParams": "Não são necessários parâmetros", + "placeholder": "Selecione um aplicativo...", + "params": "PARÂMETROS DO APLICATIVO" + }, + "structOutput": { + "LLMResponse": "Resposta do LLM", + "configure": "Configurar", + "required": "Requerido", + "modelNotSupported": "Modelo não suportado", + "structured": "Estruturado", + "modelNotSupportedTip": "O modelo atual não suporta esse recurso e é automaticamente rebaixado para injeção de prompt.", + "structuredTip": "Saídas Estruturadas é um recurso que garante que o modelo sempre gerará respostas que seguem o seu Esquema JSON fornecido.", + "moreFillTip": "Mostrando um máximo de 10 níveis de aninhamento", + "notConfiguredTip": "A saída estruturada ainda não foi configurada." + }, + "accessItemsDescription": { + "anyone": "Qualquer pessoa pode acessar o aplicativo web", + "specific": "Apenas grupos ou membros específicos podem acessar o aplicativo web", + "organization": "Qualquer pessoa na organização pode acessar o aplicativo web", + "external": "Apenas usuários externos autenticados podem acessar o aplicativo Web." + }, + "accessControlDialog": { + "accessItems": { + "anyone": "Qualquer pessoa com o link", + "specific": "Grupos específicos ou membros", + "organization": "Apenas membros dentro da empresa", + "external": "Usuários externos autenticados" + }, + "operateGroupAndMember": { + "searchPlaceholder": "Pesquisar grupos e membros", + "allMembers": "Todos os membros", + "expand": "Expandir", + "noResult": "Nenhum resultado" + }, + "title": "Controle de Acesso do Aplicativo Web", + "description": "Defina as permissões de acesso do aplicativo da web", + "accessLabel": "Quem tem acesso", + "groups_one": "{{count}} GRUPO", + "groups_other": "{{count}} GRUPOS", + "members_other": "{{count}} MEMBROS", + "noGroupsOrMembers": "Nenhum grupo ou membro selecionado", + "updateSuccess": "Atualização bem-sucedida", + "members_one": "{{count}} MEMBRO", + "webAppSSONotEnabledTip": "Por favor, entre em contato com o administrador da empresa para configurar o método de autenticação da aplicação web." + }, + "publishApp": { + "title": "Quem pode acessar o aplicativo web", + "notSet": "Não definido", + "notSetDesc": "Atualmente, ninguém pode acessar o aplicativo web. Por favor, defina as permissões." + }, + "accessControl": "Controle de Acesso do Aplicativo Web", + "noAccessPermission": "Sem permissão para acessar o aplicativo web", + "maxActiveRequestsPlaceholder": "Digite 0 para ilimitado", + "maxActiveRequests": "Máximo de solicitações simultâneas", + "maxActiveRequestsTip": "Número máximo de solicitações ativas simultâneas por aplicativo (0 para ilimitado)", + "gotoAnything": { + "actions": { + "searchPlugins": "Pesquisar Plugins", + "searchApplicationsDesc": "Pesquise e navegue até seus aplicativos", + "searchPluginsDesc": "Pesquise e navegue até seus plug-ins", + "searchKnowledgeBases": "Pesquisar bases de conhecimento", + "searchApplications": "Pesquisar aplicativos", + "searchWorkflowNodesDesc": "Localizar e ir para nós no fluxo de trabalho atual por nome ou tipo", + "searchWorkflowNodesHelp": "Esse recurso só funciona ao visualizar um fluxo de trabalho. Navegue até um fluxo de trabalho primeiro.", + "searchKnowledgeBasesDesc": "Pesquise e navegue até suas bases de conhecimento", + "searchWorkflowNodes": "Pesquisar nós de fluxo de trabalho", + "themeDarkDesc": "Use aparência escura", + "themeCategoryDesc": "Mudar o tema do aplicativo", + "themeLight": "Tema Claro", + "runDesc": "Execute comandos rápidos (tema, idioma, ...)", + "themeCategoryTitle": "Tema", + "runTitle": "Comandos", + "languageCategoryTitle": "Idioma", + "themeSystem": "Tema do Sistema", + "languageChangeDesc": "Mudar o idioma da interface", + "themeDark": "Tema Escuro", + "themeLightDesc": "Use aparência clara", + "themeSystemDesc": "Siga a aparência do seu sistema operacional", + "languageCategoryDesc": "Mudar o idioma da interface", + "slashDesc": "Execute comandos como /tema, /idioma", + "accountDesc": "Navegue até a página da conta", + "communityDesc": "Comunidade do Discord aberta", + "feedbackDesc": "Discussões de feedback da comunidade aberta", + "docDesc": "Abra a documentação de ajuda", + "zenTitle": "Zen Mode", + "zenDesc": "Toggle canvas focus mode" + }, + "emptyState": { + "noAppsFound": "Nenhum aplicativo encontrado", + "noPluginsFound": "Nenhum plugin encontrado", + "noWorkflowNodesFound": "Nenhum nó de fluxo de trabalho encontrado", + "noKnowledgeBasesFound": "Nenhuma base de conhecimento encontrada", + "tryDifferentTerm": "Tente um termo de pesquisa diferente ou remova o filtro {{mode}}", + "trySpecificSearch": "Tente {{shortcuts}} para pesquisas específicas" + }, + "groups": { + "apps": "Aplicativos", + "knowledgeBases": "Bases de conhecimento", + "plugins": "Plugins", + "workflowNodes": "Nós de fluxo de trabalho", + "commands": "Comandos" + }, + "searching": "Procurando...", + "searchTitle": "Pesquisar qualquer coisa", + "someServicesUnavailable": "Alguns serviços de pesquisa indisponíveis", + "searchTemporarilyUnavailable": "Pesquisa temporariamente indisponível", + "servicesUnavailableMessage": "Alguns serviços de pesquisa podem estar enfrentando problemas. Tente novamente em um momento.", + "searchPlaceholder": "Pesquise ou digite @ para comandos...", + "noResults": "Nenhum resultado encontrado", + "useAtForSpecific": "Use @ para tipos específicos", + "clearToSearchAll": "Desmarque @ para pesquisar tudo", + "searchFailed": "Falha na pesquisa", + "searchHint": "Comece a digitar para pesquisar tudo instantaneamente", + "commandHint": "Digite @ para navegar por categoria", + "selectSearchType": "Escolha o que pesquisar", + "resultCount": "{{count}} resultado", + "resultCount_other": "{{count}} resultados", + "inScope": "em {{scope}}s", + "noMatchingCommands": "Nenhum comando correspondente encontrado", + "tryDifferentSearch": "Tente um termo de pesquisa diferente", + "slashHint": "Digite / para ver todos os comandos disponíveis", + "tips": "Pressione ↑↓ para navegar", + "selectToNavigate": "Selecione para navegar", + "pressEscToClose": "Pressione ESC para fechar", + "startTyping": "Comece a digitar para pesquisar" + }, + "notPublishedYet": "O aplicativo ainda não foi publicado", + "noUserInputNode": "Nodo de entrada do usuário ausente" +} diff --git a/web/i18n/pt-BR/app.ts b/web/i18n/pt-BR/app.ts deleted file mode 100644 index 92e971d62c..0000000000 --- a/web/i18n/pt-BR/app.ts +++ /dev/null @@ -1,351 +0,0 @@ -const translation = { - createApp: 'CRIAR APLICATIVO', - types: { - all: 'Todos', - chatbot: 'Chatbot', - agent: 'Agente', - workflow: 'Fluxo de trabalho', - completion: 'Conclusão', - basic: 'Básico', - advanced: 'Fluxo de bate-papo', - }, - duplicate: 'Duplicar', - duplicateTitle: 'Duplicar Aplicativo', - export: 'Exportar DSL', - exportFailed: 'Falha ao exportar DSL.', - importDSL: 'Importar arquivo DSL', - createFromConfigFile: 'Criar a partir do arquivo DSL', - deleteAppConfirmTitle: 'Excluir este aplicativo?', - deleteAppConfirmContent: - 'A exclusão do aplicativo é irreversível. Os usuários não poderão mais acessar seu aplicativo e todas as configurações de prompt e logs serão permanentemente excluídas.', - appDeleted: 'Aplicativo excluído', - appDeleteFailed: 'Falha ao excluir aplicativo', - join: 'Participe da comunidade', - communityIntro: - 'Discuta com membros da equipe, colaboradores e desenvolvedores em diferentes canais.', - roadmap: 'Veja nosso roteiro', - newApp: { - startFromBlank: 'Criar do zero', - startFromTemplate: 'Criar do modelo', - workflowWarning: 'Atualmente em beta', - captionName: 'Ícone e nome do aplicativo', - appNamePlaceholder: 'Dê um nome para o seu aplicativo', - captionDescription: 'Descrição', - appDescriptionPlaceholder: 'Digite a descrição do aplicativo', - useTemplate: 'Usar este modelo', - previewDemo: 'Visualizar demonstração', - chatApp: 'Assistente', - chatAppIntro: - 'Eu quero construir um aplicativo baseado em chat. Este aplicativo usa um formato de pergunta e resposta, permitindo várias rodadas de conversa contínua.', - agentAssistant: 'Novo Assistente de Agente', - completeApp: 'Gerador de Texto', - completeAppIntro: - 'Eu quero criar um aplicativo que gera texto de alta qualidade com base em prompts, como geração de artigos, resumos, traduções e muito mais.', - showTemplates: 'Quero escolher a partir de um modelo', - hideTemplates: 'Voltar para a seleção de modo', - Create: 'Criar', - Cancel: 'Cancelar', - nameNotEmpty: 'O nome não pode estar vazio', - appTemplateNotSelected: 'Por favor, selecione um modelo', - appTypeRequired: 'Por favor, selecione um tipo de aplicativo', - appCreated: 'Aplicativo criado', - appCreateFailed: 'Falha ao criar aplicativo', - caution: 'Cuidado', - appCreateDSLErrorPart1: 'Uma diferença significativa nas versões DSL foi detectada. Forçar a importação pode causar mau funcionamento do aplicativo.', - appCreateDSLErrorPart4: 'Versão DSL suportada pelo sistema:', - Confirm: 'Confirmar', - appCreateDSLErrorTitle: 'Incompatibilidade de versão', - appCreateDSLWarning: 'Cuidado: a diferença de versão DSL pode afetar determinados recursos', - appCreateDSLErrorPart3: 'Versão DSL do aplicativo atual:', - appCreateDSLErrorPart2: 'Você quer continuar?', - learnMore: 'Saiba Mais', - optional: 'Opcional', - chooseAppType: 'Escolha um tipo de aplicativo', - forBeginners: 'Tipos de aplicativos mais básicos', - noTemplateFound: 'Nenhum modelo encontrado', - foundResults: '{{contagem}} Resultados', - foundResult: '{{contagem}} Resultado', - completionUserDescription: 'Crie rapidamente um assistente de IA para tarefas de geração de texto com configuração simples.', - noIdeaTip: 'Sem ideias? Confira nossos modelos', - workflowUserDescription: 'Construa fluxos autônomos de IA visualmente com simplicidade de arrastar e soltar.', - chatbotUserDescription: 'Crie rapidamente um chatbot baseado em LLM com configuração simples. Você pode alternar para o fluxo de chat mais tarde.', - agentShortDescription: 'Agente inteligente com raciocínio e uso de ferramenta autônoma', - forAdvanced: 'PARA USUÁRIOS AVANÇADOS', - chatbotShortDescription: 'Chatbot baseado em LLM com configuração simples', - advancedUserDescription: 'Fluxo com recursos adicionais de memória e interface de chatbot.', - noTemplateFoundTip: 'Tente pesquisar usando palavras-chave diferentes.', - agentUserDescription: 'Um agente inteligente capaz de raciocínio iterativo e uso autônomo de ferramentas para atingir os objetivos da tarefa.', - completionShortDescription: 'Assistente de IA para tarefas de geração de texto', - workflowShortDescription: 'Fluxo agêntico para automações inteligentes', - noAppsFound: 'Nenhum aplicativo encontrado', - advancedShortDescription: 'Fluxo aprimorado para conversas de múltiplos turnos', - dropDSLToCreateApp: 'Cole o arquivo DSL aqui para criar o aplicativo', - import: 'Importação', - }, - editApp: 'Editar Informações', - editAppTitle: 'Editar Informações do Aplicativo', - editDone: 'Informações do aplicativo atualizadas', - editFailed: 'Falha ao atualizar informações do aplicativo', - iconPicker: { - ok: 'OK', - cancel: 'Cancelar', - emoji: 'Emoji', - image: 'Imagem', - }, - switch: 'Mudar para Orquestração de Fluxo de Trabalho', - switchTipStart: 'Será criada uma nova cópia do aplicativo para você e a nova cópia mudará para Orquestração de Fluxo de Trabalho. A nova cópia não permitirá a ', - switchTip: 'volta', - switchTipEnd: ' para Orquestração Básica.', - switchLabel: 'A cópia do aplicativo a ser criada', - removeOriginal: 'Excluir o aplicativo original', - switchStart: 'Iniciar mudança', - typeSelector: { - all: 'Todos os Tipos', - chatbot: 'Chatbot', - agent: 'Agente', - workflow: 'Fluxo de trabalho', - completion: 'Conclusão', - advanced: 'Fluxo de bate-papo', - }, - tracing: { - title: 'Rastreamento de desempenho do aplicativo', - description: 'Configurando um provedor LLMOps de terceiros e rastreando o desempenho do aplicativo.', - config: 'Configurar', - collapse: 'Recolher', - expand: 'Expandir', - tracing: 'Rastreamento', - disabled: 'Desativado', - disabledTip: 'Por favor, configure o provedor primeiro', - enabled: 'Em serviço', - tracingDescription: 'Captura o contexto completo da execução do aplicativo, incluindo chamadas LLM, contexto, prompts, solicitações HTTP e mais, para uma plataforma de rastreamento de terceiros.', - configProviderTitle: { - configured: 'Configurado', - notConfigured: 'Configure o provedor para habilitar o rastreamento', - moreProvider: 'Mais provedores', - }, - arize: { - title: 'Arize', - description: 'Observabilidade de LLM de nível empresarial, avaliação online e offline, monitoramento e experimentação—impulsionada pelo OpenTelemetry. Projetado especificamente para aplicações baseadas em LLM e agentes.', - }, - phoenix: { - title: 'Phoenix', - description: 'Plataforma de observabilidade, avaliação, engenharia de prompts e experimentação de código aberto baseada em OpenTelemetry para seus fluxos de trabalho e agentes de LLM.', - }, - langsmith: { - title: 'LangSmith', - description: 'Uma plataforma de desenvolvedor completa para cada etapa do ciclo de vida do aplicativo impulsionado por LLM.', - }, - langfuse: { - title: 'Langfuse', - description: 'Rastreamentos, avaliações, gerenciamento de prompts e métricas para depurar e melhorar seu aplicativo LLM.', - }, - inUse: 'Em uso', - configProvider: { - title: 'Configurar ', - placeholder: 'Insira sua {{key}}', - project: 'Projeto', - publicKey: 'Chave Pública', - secretKey: 'Chave Secreta', - viewDocsLink: 'Ver documentação de {{key}}', - removeConfirmTitle: 'Remover configuração de {{key}}?', - removeConfirmContent: 'A configuração atual está em uso, removê-la desligará o recurso de Rastreamento.', - password: 'Senha', - clientId: 'ID do Cliente OAuth', - clientSecret: 'Segredo do Cliente OAuth', - username: 'Nome de usuário', - personalAccessToken: 'Token de Acesso Pessoal (legado)', - experimentId: 'ID do Experimento', - trackingUri: 'URI de rastreamento', - databricksHost: 'URL do Workspace do Databricks', - }, - view: 'Vista', - opik: { - description: 'Opik é uma plataforma de código aberto para avaliar, testar e monitorar aplicativos LLM.', - title: 'Opik', - }, - weave: { - description: 'Weave é uma plataforma de código aberto para avaliar, testar e monitorar aplicações de LLM.', - title: 'Trançar', - }, - aliyun: { - title: 'Monitoramento em Nuvem', - description: 'A plataforma de observabilidade totalmente gerenciada e sem manutenção fornecida pela Alibaba Cloud, permite monitoramento, rastreamento e avaliação prontos para uso de aplicações Dify.', - }, - mlflow: { - title: 'MLflow', - description: 'Plataforma LLMOps de código aberto para rastreamento de experimentos, observabilidade e avaliação, para construir aplicações de IA/LLM com confiança.', - }, - databricks: { - title: 'Databricks', - description: 'Databricks oferece MLflow totalmente gerenciado com forte governança e segurança para armazenar dados de rastreamento.', - }, - tencent: { - title: 'Tencent APM', - description: 'O Monitoramento de Desempenho de Aplicações da Tencent fornece rastreamento abrangente e análise multidimensional para aplicações LLM.', - }, - }, - answerIcon: { - descriptionInExplore: 'Se o ícone do web app deve ser usado para substituir 🤖 no Explore', - description: 'Se o ícone web app deve ser usado para substituir 🤖 no aplicativo compartilhado', - title: 'Use o ícone do web app para substituir 🤖', - }, - importFromDSLUrlPlaceholder: 'Cole o link DSL aqui', - dslUploader: { - button: 'Arraste e solte o arquivo, ou', - browse: 'Navegar', - }, - importFromDSLUrl: 'Do URL', - importFromDSLFile: 'Do arquivo DSL', - importFromDSL: 'Importar de DSL', - mermaid: { - handDrawn: 'Mão desenhada', - classic: 'Clássico', - }, - openInExplore: 'Abrir no Explore', - newAppFromTemplate: { - sidebar: { - Programming: 'Programação', - Agent: 'Agente', - HR: 'RH', - Workflow: 'Fluxo de trabalho', - Writing: 'Escrita', - Recommended: 'Recomendado', - Assistant: 'Assistente', - }, - searchAllTemplate: 'Pesquisar todos os modelos...', - byCategories: 'POR CATEGORIAS', - }, - showMyCreatedAppsOnly: 'Mostrar apenas meus aplicativos criados', - appSelector: { - label: 'APLICAÇÃO', - noParams: 'Não são necessários parâmetros', - placeholder: 'Selecione um aplicativo...', - params: 'PARÂMETROS DO APLICATIVO', - }, - structOutput: { - LLMResponse: 'Resposta do LLM', - configure: 'Configurar', - required: 'Requerido', - modelNotSupported: 'Modelo não suportado', - structured: 'Estruturado', - modelNotSupportedTip: 'O modelo atual não suporta esse recurso e é automaticamente rebaixado para injeção de prompt.', - structuredTip: 'Saídas Estruturadas é um recurso que garante que o modelo sempre gerará respostas que seguem o seu Esquema JSON fornecido.', - moreFillTip: 'Mostrando um máximo de 10 níveis de aninhamento', - notConfiguredTip: 'A saída estruturada ainda não foi configurada.', - }, - accessItemsDescription: { - anyone: 'Qualquer pessoa pode acessar o aplicativo web', - specific: 'Apenas grupos ou membros específicos podem acessar o aplicativo web', - organization: 'Qualquer pessoa na organização pode acessar o aplicativo web', - external: 'Apenas usuários externos autenticados podem acessar o aplicativo Web.', - }, - accessControlDialog: { - accessItems: { - anyone: 'Qualquer pessoa com o link', - specific: 'Grupos específicos ou membros', - organization: 'Apenas membros dentro da empresa', - external: 'Usuários externos autenticados', - }, - operateGroupAndMember: { - searchPlaceholder: 'Pesquisar grupos e membros', - allMembers: 'Todos os membros', - expand: 'Expandir', - noResult: 'Nenhum resultado', - }, - title: 'Controle de Acesso do Aplicativo Web', - description: 'Defina as permissões de acesso do aplicativo da web', - accessLabel: 'Quem tem acesso', - groups_one: '{{count}} GRUPO', - groups_other: '{{count}} GRUPOS', - members_other: '{{count}} MEMBROS', - noGroupsOrMembers: 'Nenhum grupo ou membro selecionado', - updateSuccess: 'Atualização bem-sucedida', - members_one: '{{count}} MEMBRO', - webAppSSONotEnabledTip: 'Por favor, entre em contato com o administrador da empresa para configurar o método de autenticação da aplicação web.', - }, - publishApp: { - title: 'Quem pode acessar o aplicativo web', - notSet: 'Não definido', - notSetDesc: 'Atualmente, ninguém pode acessar o aplicativo web. Por favor, defina as permissões.', - }, - accessControl: 'Controle de Acesso do Aplicativo Web', - noAccessPermission: 'Sem permissão para acessar o aplicativo web', - maxActiveRequestsPlaceholder: 'Digite 0 para ilimitado', - maxActiveRequests: 'Máximo de solicitações simultâneas', - maxActiveRequestsTip: 'Número máximo de solicitações ativas simultâneas por aplicativo (0 para ilimitado)', - gotoAnything: { - actions: { - searchPlugins: 'Pesquisar Plugins', - searchApplicationsDesc: 'Pesquise e navegue até seus aplicativos', - searchPluginsDesc: 'Pesquise e navegue até seus plug-ins', - searchKnowledgeBases: 'Pesquisar bases de conhecimento', - searchApplications: 'Pesquisar aplicativos', - searchWorkflowNodesDesc: 'Localizar e ir para nós no fluxo de trabalho atual por nome ou tipo', - searchWorkflowNodesHelp: 'Esse recurso só funciona ao visualizar um fluxo de trabalho. Navegue até um fluxo de trabalho primeiro.', - searchKnowledgeBasesDesc: 'Pesquise e navegue até suas bases de conhecimento', - searchWorkflowNodes: 'Pesquisar nós de fluxo de trabalho', - themeDarkDesc: 'Use aparência escura', - themeCategoryDesc: 'Mudar o tema do aplicativo', - themeLight: 'Tema Claro', - runDesc: 'Execute comandos rápidos (tema, idioma, ...)', - themeCategoryTitle: 'Tema', - runTitle: 'Comandos', - languageCategoryTitle: 'Idioma', - themeSystem: 'Tema do Sistema', - languageChangeDesc: 'Mudar o idioma da interface', - themeDark: 'Tema Escuro', - themeLightDesc: 'Use aparência clara', - themeSystemDesc: 'Siga a aparência do seu sistema operacional', - languageCategoryDesc: 'Mudar o idioma da interface', - slashDesc: 'Execute comandos como /tema, /idioma', - accountDesc: 'Navegue até a página da conta', - communityDesc: 'Comunidade do Discord aberta', - feedbackDesc: 'Discussões de feedback da comunidade aberta', - docDesc: 'Abra a documentação de ajuda', - zenTitle: 'Zen Mode', - zenDesc: 'Toggle canvas focus mode', - }, - emptyState: { - noAppsFound: 'Nenhum aplicativo encontrado', - noPluginsFound: 'Nenhum plugin encontrado', - noWorkflowNodesFound: 'Nenhum nó de fluxo de trabalho encontrado', - noKnowledgeBasesFound: 'Nenhuma base de conhecimento encontrada', - tryDifferentTerm: 'Tente um termo de pesquisa diferente ou remova o filtro {{mode}}', - trySpecificSearch: 'Tente {{shortcuts}} para pesquisas específicas', - }, - groups: { - apps: 'Aplicativos', - knowledgeBases: 'Bases de conhecimento', - plugins: 'Plugins', - workflowNodes: 'Nós de fluxo de trabalho', - commands: 'Comandos', - }, - searching: 'Procurando...', - searchTitle: 'Pesquisar qualquer coisa', - someServicesUnavailable: 'Alguns serviços de pesquisa indisponíveis', - searchTemporarilyUnavailable: 'Pesquisa temporariamente indisponível', - servicesUnavailableMessage: 'Alguns serviços de pesquisa podem estar enfrentando problemas. Tente novamente em um momento.', - searchPlaceholder: 'Pesquise ou digite @ para comandos...', - noResults: 'Nenhum resultado encontrado', - useAtForSpecific: 'Use @ para tipos específicos', - clearToSearchAll: 'Desmarque @ para pesquisar tudo', - searchFailed: 'Falha na pesquisa', - searchHint: 'Comece a digitar para pesquisar tudo instantaneamente', - commandHint: 'Digite @ para navegar por categoria', - selectSearchType: 'Escolha o que pesquisar', - resultCount: '{{count}} resultado', - resultCount_other: '{{count}} resultados', - inScope: 'em {{scope}}s', - noMatchingCommands: 'Nenhum comando correspondente encontrado', - tryDifferentSearch: 'Tente um termo de pesquisa diferente', - slashHint: 'Digite / para ver todos os comandos disponíveis', - tips: 'Pressione ↑↓ para navegar', - selectToNavigate: 'Selecione para navegar', - pressEscToClose: 'Pressione ESC para fechar', - startTyping: 'Comece a digitar para pesquisar', - }, - notPublishedYet: 'O aplicativo ainda não foi publicado', - noUserInputNode: 'Nodo de entrada do usuário ausente', -} - -export default translation diff --git a/web/i18n/pt-BR/billing.json b/web/i18n/pt-BR/billing.json new file mode 100644 index 0000000000..9ec7086a10 --- /dev/null +++ b/web/i18n/pt-BR/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "Plano Atual", + "upgradeBtn": { + "plain": "Fazer Upgrade do Plano", + "encourage": "Fazer Upgrade Agora", + "encourageShort": "Upgrade" + }, + "viewBilling": "Ver informações de cobrança", + "buyPermissionDeniedTip": "Por favor, entre em contato com o administrador da sua empresa para assinar", + "plansCommon": { + "yearlyTip": "Receba 2 meses grátis assinando anualmente!", + "mostPopular": "Mais Popular", + "planRange": { + "monthly": "Mensalmente", + "yearly": "Anualmente" + }, + "month": "mês", + "year": "ano", + "save": "Economize ", + "free": "Grátis", + "currentPlan": "Plano Atual", + "contractOwner": "Entre em contato com o gerente da equipe", + "startForFree": "Comece de graça", + "contactSales": "Fale com a equipe de Vendas", + "talkToSales": "Fale com a equipe de Vendas", + "modelProviders": "Fornecedores de Modelos", + "buildApps": "Construir Aplicações", + "vectorSpace": "Espaço Vetorial", + "vectorSpaceTooltip": "O Espaço Vetorial é o sistema de memória de longo prazo necessário para que LLMs compreendam seus dados.", + "documentProcessingPriority": "Prioridade no Processamento de Documentos", + "documentProcessingPriorityTip": "Para maior prioridade no processamento de documentos, atualize seu plano.", + "documentProcessingPriorityUpgrade": "Processe mais dados com maior precisão e velocidade.", + "priority": { + "standard": "Padrão", + "priority": "Prioridade", + "top-priority": "Prioridade Máxima" + }, + "logsHistory": "Histórico de Logs", + "days": "dias", + "unlimited": "Ilimitado", + "support": "Suporte", + "supportItems": { + "communityForums": "Fóruns da Comunidade", + "emailSupport": "Suporte por E-mail", + "priorityEmail": "Suporte prioritário por e-mail e chat", + "logoChange": "Mudança de logo", + "SSOAuthentication": "Autenticação SSO", + "personalizedSupport": "Suporte personalizado", + "dedicatedAPISupport": "Suporte dedicado à API", + "customIntegration": "Integração e suporte personalizados", + "ragAPIRequest": "Solicitações API RAG", + "workflow": "Fluxo de trabalho", + "llmLoadingBalancing": "Balanceamento de carga LLM", + "bulkUpload": "Upload em massa de documentos", + "llmLoadingBalancingTooltip": "Adicione várias chaves de API aos modelos, efetivamente ignorando os limites de taxa da API. ", + "agentMode": "Modo Agente" + }, + "comingSoon": "Em breve", + "member": "Membro", + "memberAfter": "Membro", + "messageRequest": { + "title": "Créditos de Mensagem", + "tooltip": "Cotas de invocação de mensagens para vários planos usando modelos da OpenAI (exceto gpt4). Mensagens além do limite usarão sua Chave de API da OpenAI.", + "titlePerMonth": "{{count,number}} mensagens/mês" + }, + "annotatedResponse": { + "title": "Limites de Cota de Anotação", + "tooltip": "A edição manual e anotação de respostas oferece habilidades personalizadas de perguntas e respostas de alta qualidade para aplicativos. (Aplicável apenas em aplicativos de chat)" + }, + "ragAPIRequestTooltip": "Refere-se ao número de chamadas de API que invocam apenas as capacidades de processamento da base de conhecimento do Dify.", + "receiptInfo": "Somente proprietários e administradores de equipe podem se inscrever e visualizar informações de cobrança", + "customTools": "Ferramentas personalizadas", + "annotationQuota": "Cota de anotação", + "contractSales": "Entre em contato com a equipe de vendas", + "unavailable": "Indisponível", + "priceTip": "por espaço de trabalho/", + "apiRateLimit": "Limite de Taxa da API", + "freeTrialTipPrefix": "Inscreva-se e receba um", + "teamMember_one": "{{count,number}} Membro da Equipe", + "documentsRequestQuota": "{{count,number}}/min Limite de Taxa de Solicitação de Conhecimento", + "cloud": "Serviço de Nuvem", + "teamWorkspace": "{{count,number}} Espaço de Trabalho da Equipe", + "apiRateLimitUnit": "{{count,number}}", + "freeTrialTipSuffix": "Nenhum cartão de crédito necessário", + "teamMember_other": "{{count,number}} Membros da Equipe", + "comparePlanAndFeatures": "Compare planos e recursos", + "getStarted": "Começar", + "annualBilling": "Cobrança Anual", + "self": "Auto-Hospedado", + "documentsTooltip": "Cota sobre o número de documentos importados da Fonte de Dados do Conhecimento.", + "freeTrialTip": "teste gratuito de 200 chamadas da OpenAI.", + "documents": "{{count,number}} Documentos de Conhecimento", + "unlimitedApiRate": "Sem limite de taxa da API", + "apiRateLimitTooltip": "O limite da taxa da API se aplica a todas as solicitações feitas através da API Dify, incluindo geração de texto, conversas de chat, execuções de fluxo de trabalho e processamento de documentos.", + "documentsRequestQuotaTooltip": "Especifica o número total de ações que um espaço de trabalho pode realizar por minuto dentro da base de conhecimento, incluindo criação, exclusão, atualizações de conjuntos de dados, uploads de documentos, modificações, arquivamento e consultas à base de conhecimento. Esse métrica é utilizada para avaliar o desempenho das solicitações à base de conhecimento. Por exemplo, se um usuário do Sandbox realizar 10 testes de impacto consecutivos dentro de um minuto, seu espaço de trabalho ficará temporariamente restrito de realizar as seguintes ações no minuto seguinte: criação, exclusão, atualizações de conjuntos de dados e uploads ou modificações de documentos.", + "startBuilding": "Comece a construir", + "taxTip": "Todos os preços de assinatura (mensal/anual) não incluem os impostos aplicáveis (por exemplo, IVA, imposto sobre vendas).", + "taxTipSecond": "Se a sua região não tiver requisitos fiscais aplicáveis, nenhum imposto aparecerá no seu checkout e você não será cobrado por taxas adicionais durante todo o período da assinatura.", + "triggerEvents": { + "unlimited": "Eventos de Gatilho Ilimitados", + "tooltip": "O número de eventos que iniciam automaticamente fluxos de trabalho através de disparadores de Plugin, Agendamento ou Webhook.", + "sandbox": "{{count,number}} Acionar Eventos", + "professional": "{{count,number}} Eventos de disparo/mês" + }, + "workflowExecution": { + "tooltip": "Prioridade e velocidade da fila de execução de fluxo de trabalho.", + "priority": "Execução de Fluxo de Trabalho Prioritário", + "faster": "Execução de Fluxo de Trabalho Mais Rápida", + "standard": "Execução Padrão de Fluxo de Trabalho" + }, + "startNodes": { + "unlimited": "Eventos de Gatilho/fluxo de trabalho ilimitados", + "limited": "Até {{count}} Acionadores/workflow" + }, + "title": { + "plans": "planos", + "description": "Selecione o plano que melhor se adapta às necessidades da sua equipe." + } + }, + "plans": { + "sandbox": { + "name": "Sandbox", + "description": "200 vezes GPT de teste gratuito", + "for": "Teste gratuito das capacidades principais" + }, + "professional": { + "name": "Profissional", + "description": "Para indivíduos e pequenas equipes desbloquearem mais poder de forma acessível.", + "for": "Para Desenvolvedores Independentes/Pequenas Equipes" + }, + "team": { + "name": "Equipe", + "description": "Colabore sem limites e aproveite o desempenho de primeira linha.", + "for": "Para Equipes de Médio Porte" + }, + "enterprise": { + "name": "Empresa", + "description": "Obtenha capacidades completas e suporte para sistemas críticos em larga escala.", + "includesTitle": "Tudo no plano Equipe, além de:", + "features": [ + "Soluções de Implantação Escaláveis de Nível Empresarial", + "Autorização de Licença Comercial", + "Recursos Exclusivos para Empresas", + "Múltiplos Espaços de Trabalho e Gestão Empresarial", + "SSO", + "SLAs negociados pelos parceiros da Dify", + "Segurança e Controles Avançados", + "Atualizações e Manutenção pela Dify Oficialmente", + "Suporte Técnico Profissional" + ], + "btnText": "Contate Vendas", + "priceTip": "Faturamento Anual Apenas", + "price": "Custom", + "for": "Para equipes de grande porte" + }, + "community": { + "features": [ + "Todos os Recursos Principais Lançados no Repositório Público", + "Espaço de Trabalho Único", + "Está em conformidade com a Licença de Código Aberto Dify" + ], + "name": "Comunidade", + "description": "Para Usuários Individuais, Pequenas Equipes ou Projetos Não Comerciais", + "includesTitle": "Recursos Gratuitos:", + "btnText": "Comece com a Comunidade", + "price": "Grátis", + "for": "Para Usuários Individuais, Pequenas Equipes ou Projetos Não Comerciais" + }, + "premium": { + "features": [ + "Confiabilidade Autogerenciada por Diversos Provedores de Nuvem", + "Espaço de Trabalho Único", + "Personalização de Logo e Branding do WebApp", + "Suporte Prioritário por E-mail e Chat" + ], + "includesTitle": "Tudo da Comunidade, além de:", + "for": "Para organizações e equipes de médio porte", + "price": "Escalável", + "name": "Premium", + "comingSoon": "Suporte da Microsoft Azure e Google Cloud em breve", + "priceTip": "Baseado no Mercado de Nuvem", + "btnText": "Obtenha Premium em", + "description": "Para organizações e equipes de médio porte" + } + }, + "vectorSpace": { + "fullTip": "O Espaço Vetorial está cheio.", + "fullSolution": "Faça o upgrade do seu plano para obter mais espaço." + }, + "apps": { + "fullTip1": "Atualize para criar mais aplicativos", + "fullTip2": "Limite do plano alcançado", + "fullTip1des": "Você atingiu o limite de criar aplicativos neste plano.", + "contactUs": "Contate-nos", + "fullTip2des": "É recomendado limpar aplicações inativas para liberar uso ou entrar em contato conosco." + }, + "annotatedResponse": { + "fullTipLine1": "Faça o upgrade do seu plano para", + "fullTipLine2": "anotar mais conversas.", + "quotaTitle": "Cota de Respostas Anotadas" + }, + "usagePage": { + "documentsUploadQuota": "Cota de Upload de Documentos", + "annotationQuota": "Cota de Anotação", + "teamMembers": "Membros da equipe", + "vectorSpace": "Armazenamento de Dados do Conhecimento", + "vectorSpaceTooltip": "Documentos com o modo de indexação de Alta Qualidade consumirã recursos de Armazenamento de Dados de Conhecimento. Quando o Armazenamento de Dados de Conhecimento atingir o limite, novos documentos não serão carregados.", + "buildApps": "Desenvolver Apps", + "perMonth": "por mês", + "triggerEvents": "Eventos de Gatilho", + "resetsIn": "Reinicia em {{count,number}} dias" + }, + "teamMembers": "Membros da equipe", + "triggerLimitModal": { + "dismiss": "Dispensar", + "usageTitle": "EVENTOS DE GATILHO", + "title": "Atualize para desbloquear mais eventos de gatilho", + "upgrade": "Atualizar", + "description": "Você atingiu o limite de eventos de gatilho de fluxo de trabalho para este plano." + }, + "viewBillingTitle": "Faturamento e Assinaturas", + "viewBillingDescription": "Gerencie métodos de pagamento, faturas e alterações de assinatura", + "viewBillingAction": "Gerenciar", + "upgrade": { + "uploadMultiplePages": { + "title": "Atualize para enviar vários documentos de uma vez", + "description": "Você atingiu o limite de upload — apenas um documento pode ser selecionado e enviado por vez no seu plano atual." + }, + "uploadMultipleFiles": { + "title": "Atualize para desbloquear o envio de documentos em lote", + "description": "Faça upload de mais documentos de uma vez para economizar tempo e aumentar a eficiência." + }, + "addChunks": { + "title": "Faça upgrade para continuar adicionando blocos", + "description": "Você atingiu o limite de adição de blocos para este plano." + } + } +} diff --git a/web/i18n/pt-BR/billing.ts b/web/i18n/pt-BR/billing.ts deleted file mode 100644 index 78375fdaae..0000000000 --- a/web/i18n/pt-BR/billing.ts +++ /dev/null @@ -1,221 +0,0 @@ -const translation = { - currentPlan: 'Plano Atual', - upgradeBtn: { - plain: 'Fazer Upgrade do Plano', - encourage: 'Fazer Upgrade Agora', - encourageShort: 'Upgrade', - }, - viewBilling: 'Ver informações de cobrança', - buyPermissionDeniedTip: 'Por favor, entre em contato com o administrador da sua empresa para assinar', - plansCommon: { - yearlyTip: 'Receba 2 meses grátis assinando anualmente!', - mostPopular: 'Mais Popular', - planRange: { - monthly: 'Mensalmente', - yearly: 'Anualmente', - }, - month: 'mês', - year: 'ano', - save: 'Economize ', - free: 'Grátis', - currentPlan: 'Plano Atual', - contractOwner: 'Entre em contato com o gerente da equipe', - startForFree: 'Comece de graça', - contactSales: 'Fale com a equipe de Vendas', - talkToSales: 'Fale com a equipe de Vendas', - modelProviders: 'Fornecedores de Modelos', - buildApps: 'Construir Aplicações', - vectorSpace: 'Espaço Vetorial', - vectorSpaceTooltip: 'O Espaço Vetorial é o sistema de memória de longo prazo necessário para que LLMs compreendam seus dados.', - documentProcessingPriority: 'Prioridade no Processamento de Documentos', - documentProcessingPriorityTip: 'Para maior prioridade no processamento de documentos, atualize seu plano.', - documentProcessingPriorityUpgrade: 'Processe mais dados com maior precisão e velocidade.', - priority: { - 'standard': 'Padrão', - 'priority': 'Prioridade', - 'top-priority': 'Prioridade Máxima', - }, - logsHistory: 'Histórico de Logs', - days: 'dias', - unlimited: 'Ilimitado', - support: 'Suporte', - supportItems: { - communityForums: 'Fóruns da Comunidade', - emailSupport: 'Suporte por E-mail', - priorityEmail: 'Suporte prioritário por e-mail e chat', - logoChange: 'Mudança de logo', - SSOAuthentication: 'Autenticação SSO', - personalizedSupport: 'Suporte personalizado', - dedicatedAPISupport: 'Suporte dedicado à API', - customIntegration: 'Integração e suporte personalizados', - ragAPIRequest: 'Solicitações API RAG', - workflow: 'Fluxo de trabalho', - llmLoadingBalancing: 'Balanceamento de carga LLM', - bulkUpload: 'Upload em massa de documentos', - llmLoadingBalancingTooltip: 'Adicione várias chaves de API aos modelos, efetivamente ignorando os limites de taxa da API. ', - agentMode: 'Modo Agente', - }, - comingSoon: 'Em breve', - member: 'Membro', - memberAfter: 'Membro', - messageRequest: { - title: 'Créditos de Mensagem', - tooltip: 'Cotas de invocação de mensagens para vários planos usando modelos da OpenAI (exceto gpt4). Mensagens além do limite usarão sua Chave de API da OpenAI.', - titlePerMonth: '{{count,number}} mensagens/mês', - }, - annotatedResponse: { - title: 'Limites de Cota de Anotação', - tooltip: 'A edição manual e anotação de respostas oferece habilidades personalizadas de perguntas e respostas de alta qualidade para aplicativos. (Aplicável apenas em aplicativos de chat)', - }, - ragAPIRequestTooltip: 'Refere-se ao número de chamadas de API que invocam apenas as capacidades de processamento da base de conhecimento do Dify.', - receiptInfo: 'Somente proprietários e administradores de equipe podem se inscrever e visualizar informações de cobrança', - customTools: 'Ferramentas personalizadas', - annotationQuota: 'Cota de anotação', - contractSales: 'Entre em contato com a equipe de vendas', - unavailable: 'Indisponível', - priceTip: 'por espaço de trabalho/', - apiRateLimit: 'Limite de Taxa da API', - freeTrialTipPrefix: 'Inscreva-se e receba um', - teamMember_one: '{{count,number}} Membro da Equipe', - documentsRequestQuota: '{{count,number}}/min Limite de Taxa de Solicitação de Conhecimento', - cloud: 'Serviço de Nuvem', - teamWorkspace: '{{count,number}} Espaço de Trabalho da Equipe', - apiRateLimitUnit: '{{count,number}}', - freeTrialTipSuffix: 'Nenhum cartão de crédito necessário', - teamMember_other: '{{count,number}} Membros da Equipe', - comparePlanAndFeatures: 'Compare planos e recursos', - getStarted: 'Começar', - annualBilling: 'Cobrança Anual', - self: 'Auto-Hospedado', - documentsTooltip: 'Cota sobre o número de documentos importados da Fonte de Dados do Conhecimento.', - freeTrialTip: 'teste gratuito de 200 chamadas da OpenAI.', - documents: '{{count,number}} Documentos de Conhecimento', - unlimitedApiRate: 'Sem limite de taxa da API', - apiRateLimitTooltip: 'O limite da taxa da API se aplica a todas as solicitações feitas através da API Dify, incluindo geração de texto, conversas de chat, execuções de fluxo de trabalho e processamento de documentos.', - documentsRequestQuotaTooltip: 'Especifica o número total de ações que um espaço de trabalho pode realizar por minuto dentro da base de conhecimento, incluindo criação, exclusão, atualizações de conjuntos de dados, uploads de documentos, modificações, arquivamento e consultas à base de conhecimento. Esse métrica é utilizada para avaliar o desempenho das solicitações à base de conhecimento. Por exemplo, se um usuário do Sandbox realizar 10 testes de impacto consecutivos dentro de um minuto, seu espaço de trabalho ficará temporariamente restrito de realizar as seguintes ações no minuto seguinte: criação, exclusão, atualizações de conjuntos de dados e uploads ou modificações de documentos.', - startBuilding: 'Comece a construir', - taxTip: 'Todos os preços de assinatura (mensal/anual) não incluem os impostos aplicáveis (por exemplo, IVA, imposto sobre vendas).', - taxTipSecond: 'Se a sua região não tiver requisitos fiscais aplicáveis, nenhum imposto aparecerá no seu checkout e você não será cobrado por taxas adicionais durante todo o período da assinatura.', - triggerEvents: { - unlimited: 'Eventos de Gatilho Ilimitados', - tooltip: 'O número de eventos que iniciam automaticamente fluxos de trabalho através de disparadores de Plugin, Agendamento ou Webhook.', - sandbox: '{{count,number}} Acionar Eventos', - professional: '{{count,number}} Eventos de disparo/mês', - }, - workflowExecution: { - tooltip: 'Prioridade e velocidade da fila de execução de fluxo de trabalho.', - priority: 'Execução de Fluxo de Trabalho Prioritário', - faster: 'Execução de Fluxo de Trabalho Mais Rápida', - standard: 'Execução Padrão de Fluxo de Trabalho', - }, - startNodes: { - unlimited: 'Eventos de Gatilho/fluxo de trabalho ilimitados', - limited: 'Até {{count}} Acionadores/workflow', - }, - title: { - plans: 'planos', - description: 'Selecione o plano que melhor se adapta às necessidades da sua equipe.', - }, - }, - plans: { - sandbox: { - name: 'Sandbox', - description: '200 vezes GPT de teste gratuito', - for: 'Teste gratuito das capacidades principais', - }, - professional: { - name: 'Profissional', - description: 'Para indivíduos e pequenas equipes desbloquearem mais poder de forma acessível.', - for: 'Para Desenvolvedores Independentes/Pequenas Equipes', - }, - team: { - name: 'Equipe', - description: 'Colabore sem limites e aproveite o desempenho de primeira linha.', - for: 'Para Equipes de Médio Porte', - }, - enterprise: { - name: 'Empresa', - description: 'Obtenha capacidades completas e suporte para sistemas críticos em larga escala.', - includesTitle: 'Tudo no plano Equipe, além de:', - features: ['Soluções de Implantação Escaláveis de Nível Empresarial', 'Autorização de Licença Comercial', 'Recursos Exclusivos para Empresas', 'Múltiplos Espaços de Trabalho e Gestão Empresarial', 'SSO', 'SLAs negociados pelos parceiros da Dify', 'Segurança e Controles Avançados', 'Atualizações e Manutenção pela Dify Oficialmente', 'Suporte Técnico Profissional'], - btnText: 'Contate Vendas', - priceTip: 'Faturamento Anual Apenas', - price: 'Custom', - for: 'Para equipes de grande porte', - }, - community: { - features: ['Todos os Recursos Principais Lançados no Repositório Público', 'Espaço de Trabalho Único', 'Está em conformidade com a Licença de Código Aberto Dify'], - name: 'Comunidade', - description: 'Para Usuários Individuais, Pequenas Equipes ou Projetos Não Comerciais', - includesTitle: 'Recursos Gratuitos:', - btnText: 'Comece com a Comunidade', - price: 'Grátis', - for: 'Para Usuários Individuais, Pequenas Equipes ou Projetos Não Comerciais', - }, - premium: { - features: ['Confiabilidade Autogerenciada por Diversos Provedores de Nuvem', 'Espaço de Trabalho Único', 'Personalização de Logo e Branding do WebApp', 'Suporte Prioritário por E-mail e Chat'], - includesTitle: 'Tudo da Comunidade, além de:', - for: 'Para organizações e equipes de médio porte', - price: 'Escalável', - name: 'Premium', - comingSoon: 'Suporte da Microsoft Azure e Google Cloud em breve', - priceTip: 'Baseado no Mercado de Nuvem', - btnText: 'Obtenha Premium em', - description: 'Para organizações e equipes de médio porte', - }, - }, - vectorSpace: { - fullTip: 'O Espaço Vetorial está cheio.', - fullSolution: 'Faça o upgrade do seu plano para obter mais espaço.', - }, - apps: { - fullTip1: 'Atualize para criar mais aplicativos', - fullTip2: 'Limite do plano alcançado', - fullTip1des: 'Você atingiu o limite de criar aplicativos neste plano.', - contactUs: 'Contate-nos', - fullTip2des: 'É recomendado limpar aplicações inativas para liberar uso ou entrar em contato conosco.', - }, - annotatedResponse: { - fullTipLine1: 'Faça o upgrade do seu plano para', - fullTipLine2: 'anotar mais conversas.', - quotaTitle: 'Cota de Respostas Anotadas', - }, - usagePage: { - documentsUploadQuota: 'Cota de Upload de Documentos', - annotationQuota: 'Cota de Anotação', - teamMembers: 'Membros da equipe', - vectorSpace: 'Armazenamento de Dados do Conhecimento', - vectorSpaceTooltip: 'Documentos com o modo de indexação de Alta Qualidade consumirã recursos de Armazenamento de Dados de Conhecimento. Quando o Armazenamento de Dados de Conhecimento atingir o limite, novos documentos não serão carregados.', - buildApps: 'Desenvolver Apps', - perMonth: 'por mês', - triggerEvents: 'Eventos de Gatilho', - resetsIn: 'Reinicia em {{count,number}} dias', - }, - teamMembers: 'Membros da equipe', - triggerLimitModal: { - dismiss: 'Dispensar', - usageTitle: 'EVENTOS DE GATILHO', - title: 'Atualize para desbloquear mais eventos de gatilho', - upgrade: 'Atualizar', - description: 'Você atingiu o limite de eventos de gatilho de fluxo de trabalho para este plano.', - }, - viewBillingTitle: 'Faturamento e Assinaturas', - viewBillingDescription: 'Gerencie métodos de pagamento, faturas e alterações de assinatura', - viewBillingAction: 'Gerenciar', - upgrade: { - uploadMultiplePages: { - title: 'Atualize para enviar vários documentos de uma vez', - description: 'Você atingiu o limite de upload — apenas um documento pode ser selecionado e enviado por vez no seu plano atual.', - }, - uploadMultipleFiles: { - title: 'Atualize para desbloquear o envio de documentos em lote', - description: 'Faça upload de mais documentos de uma vez para economizar tempo e aumentar a eficiência.', - }, - addChunks: { - title: 'Faça upgrade para continuar adicionando blocos', - description: 'Você atingiu o limite de adição de blocos para este plano.', - }, - }, -} - -export default translation diff --git a/web/i18n/pt-BR/common.json b/web/i18n/pt-BR/common.json new file mode 100644 index 0000000000..77a9825d31 --- /dev/null +++ b/web/i18n/pt-BR/common.json @@ -0,0 +1,785 @@ +{ + "api": { + "success": "Sucesso", + "actionSuccess": "Ação bem-sucedida", + "saved": "Salvo", + "create": "Criado", + "remove": "Removido", + "actionFailed": "Ação falhou" + }, + "operation": { + "create": "Criar", + "confirm": "Confirmar", + "cancel": "Cancelar", + "clear": "Limpar", + "save": "Salvar", + "saveAndEnable": "Salvar e Ativar", + "edit": "Editar", + "add": "Adicionar", + "added": "Adicionado", + "refresh": "Reiniciar", + "reset": "Redefinir", + "search": "Buscar", + "change": "Alterar", + "remove": "Remover", + "send": "Enviar", + "copy": "Copiar", + "lineBreak": "Quebra de linha", + "sure": "Tenho certeza", + "download": "Baixar", + "delete": "Excluir", + "settings": "Configurações", + "setup": "Configuração", + "getForFree": "Obter gratuitamente", + "reload": "Recarregar", + "ok": "OK", + "log": "Log", + "learnMore": "Saiba Mais", + "params": "Parâmetros", + "duplicate": "Duplicada", + "rename": "Renomear", + "audioSourceUnavailable": "AudioSource não está disponível", + "zoomOut": "Diminuir o zoom", + "zoomIn": "Ampliar", + "copyImage": "Copiar imagem", + "openInNewTab": "Abrir em nova guia", + "viewMore": "VER MAIS", + "regenerate": "Regenerar", + "close": "Fechar", + "saveAndRegenerate": "Salvar e regenerar pedaços filhos", + "view": "Vista", + "submit": "Enviar", + "skip": "Navio", + "imageCopied": "Imagem copiada", + "deleteApp": "Excluir aplicativo", + "copied": "Copiado", + "in": "em", + "viewDetails": "Ver detalhes", + "downloadFailed": "Download falhou. Por favor, tente novamente mais tarde.", + "more": "Mais", + "downloadSuccess": "Download concluído.", + "format": "Formato", + "deSelectAll": "Desmarcar tudo", + "selectAll": "Selecionar tudo", + "config": "Configuração", + "no": "Não", + "yes": "Sim", + "deleteConfirmTitle": "Excluir?", + "confirmAction": "Por favor, confirme sua ação.", + "noSearchResults": "Nenhum {{content}} foi encontrado", + "resetKeywords": "Redefinir palavras-chave", + "selectCount": "{{count}} Selecionado", + "searchCount": "Encontre {{count}} {{content}}", + "noSearchCount": "0 {{content}}", + "now": "Agora" + }, + "placeholder": { + "input": "Por favor, insira", + "select": "Por favor, selecione", + "search": "Pesquisar..." + }, + "voice": { + "language": { + "zhHans": "Chinês", + "zhHant": "Chinês Tradicional", + "enUS": "Inglês", + "deDE": "Alemão", + "frFR": "Francês", + "esES": "Espanhol", + "itIT": "Italiano", + "thTH": "Tailandês", + "idID": "Indonésio", + "jaJP": "Japonês", + "koKR": "Coreano", + "ptBR": "Português", + "ruRU": "Russo", + "ukUA": "Ucraniano", + "viVN": "Vietnamita", + "plPL": "Polonês", + "roRO": "Romeno", + "hiIN": "Hindi", + "trTR": "Turco", + "faIR": "Persa", + "slSI": "Esloveno", + "arTN": "Árabe Tunisiano" + } + }, + "unit": { + "char": "caracteres" + }, + "actionMsg": { + "noModification": "Sem modificações no momento.", + "modifiedSuccessfully": "Modificado com sucesso", + "modifiedUnsuccessfully": "Modificado sem sucesso", + "copySuccessfully": "Copiado com sucesso", + "paySucceeded": "Pagamento realizado com sucesso", + "payCancelled": "Pagamento cancelado", + "generatedSuccessfully": "Gerado com sucesso", + "generatedUnsuccessfully": "Geração sem sucesso" + }, + "model": { + "params": { + "temperature": "Temperatura", + "temperatureTip": "Controla a aleatoriedade: Diminuir resulta em conclusões menos aleatórias. À medida que a temperatura se aproxima de zero, o modelo se tornará determinístico e repetitivo.", + "top_p": "Top P", + "top_pTip": "Controla a diversidade via amostragem de núcleo: 0.5 significa que metade de todas as opções ponderadas por probabilidade são consideradas.", + "presence_penalty": "Penalidade de presença", + "presence_penaltyTip": "Quanto penalizar novos tokens com base em se eles aparecem no texto até agora.\nAumenta a probabilidade do modelo de falar sobre novos tópicos.", + "frequency_penalty": "Penalidade de frequência", + "frequency_penaltyTip": "Quanto penalizar novos tokens com base em sua frequência existente no texto até agora.\nDiminui a probabilidade do modelo de repetir a mesma linha textualmente.", + "max_tokens": "Máximo de tokens", + "max_tokensTip": "Usado para limitar o comprimento máximo da resposta, em tokens. \nValores maiores podem limitar o espaço restante para palavras de prompt, registros de bate-papo e Conhecimento. \nRecomenda-se defini-lo abaixo de dois terços\ngpt-4-1106-preview, gpt-4-vision-preview max token (entrada 128k saída 4k)", + "maxTokenSettingTip": "Sua configuração máxima de token é alta, limitando potencialmente o espaço para palavras de prompt, consultas e dados. Considere definir abaixo de 2/3.", + "setToCurrentModelMaxTokenTip": "O máximo de tokens é atualizado para 80% do máximo de token do modelo atual {{maxToken}}.", + "stop_sequences": "Sequências de parada", + "stop_sequencesTip": "Até quatro sequências onde a API irá parar de gerar mais tokens. O texto retornado não conterá a sequência de parada.", + "stop_sequencesPlaceholder": "Digite a sequência e pressione Tab" + }, + "tone": { + "Creative": "Criativo", + "Balanced": "Equilibrado", + "Precise": "Preciso", + "Custom": "Personalizado" + }, + "addMoreModel": "Vá para configurações para adicionar mais modelos", + "settingsLink": "Configurações do provedor de modelos", + "capabilities": "Recursos multimodais" + }, + "menus": { + "status": "beta", + "explore": "Explorar", + "apps": "Estúdio", + "plugins": "Plugins", + "pluginsTips": "Integre plugins de terceiros ou crie plugins de IA compatíveis com o ChatGPT.", + "datasets": "Conhecimento", + "datasetsTips": "EM BREVE: Importe seus próprios dados de texto ou escreva dados em tempo real via Webhook para aprimoramento do contexto LLM.", + "newApp": "Novo App", + "newDataset": "Criar Conhecimento", + "tools": "Ferramentas", + "exploreMarketplace": "Explorar Mercado", + "appDetail": "Detalhes do aplicativo", + "account": "Conta" + }, + "userProfile": { + "settings": "Configurações", + "emailSupport": "Suporte por e-mail", + "workspace": "Espaço de trabalho", + "createWorkspace": "Criar Espaço de Trabalho", + "helpCenter": "Ajuda", + "roadmap": "Roteiro", + "community": "Comunidade", + "about": "Sobre", + "logout": "Sair", + "github": "GitHub", + "support": "Suporte", + "compliance": "Conformidade", + "contactUs": "Contate-Nos", + "forum": "Fórum" + }, + "settings": { + "accountGroup": "CONTA", + "workplaceGroup": "ESPAÇO DE TRABALHO", + "account": "Minha conta", + "members": "Membros", + "billing": "Faturamento", + "integrations": "Integrações", + "language": "Idioma", + "provider": "Fornecedor de modelo", + "dataSource": "Fonte de dados", + "plugin": "Plugins", + "apiBasedExtension": "Extensão baseada em API", + "generalGroup": "GERAL" + }, + "account": { + "avatar": "Avatar", + "name": "Nome", + "email": "E-mail", + "password": "Senha", + "passwordTip": "Você pode definir uma senha permanente se não quiser usar códigos de login temporários", + "setPassword": "Definir uma senha", + "resetPassword": "Redefinir senha", + "currentPassword": "Senha atual", + "newPassword": "Nova senha", + "confirmPassword": "Confirmar senha", + "notEqual": "As duas senhas são diferentes.", + "langGeniusAccount": "Conta Dify", + "langGeniusAccountTip": "Sua conta Dify e dados de usuário associados.", + "editName": "Editar Nome", + "showAppLength": "Mostrar {{length}} apps", + "delete": "Excluir conta", + "deleteTip": "Excluir sua conta apagará permanentemente todos os seus dados e eles não poderão ser recuperados.", + "myAccount": "Minha Conta", + "account": "Conta", + "studio": "Estúdio Dify", + "deletePrivacyLinkTip": "Para obter mais informações sobre como lidamos com seus dados, consulte nosso", + "deletePrivacyLink": "Política de privacidade.", + "deleteSuccessTip": "Sua conta precisa de tempo para concluir a exclusão. Enviaremos um e-mail quando tudo estiver pronto.", + "deleteLabel": "Para confirmar, digite seu e-mail abaixo", + "deletePlaceholder": "Por favor, digite seu e-mail", + "sendVerificationButton": "Enviar código de verificação", + "verificationLabel": "Código de verificação", + "verificationPlaceholder": "Cole o código de 6 dígitos", + "permanentlyDeleteButton": "Excluir conta permanentemente", + "feedbackTitle": "Realimentação", + "feedbackLabel": "Diga-nos por que você excluiu sua conta?", + "feedbackPlaceholder": "Opcional", + "workspaceName": "Nome do Espaço de Trabalho", + "workspaceIcon": "Ícone de Área de Trabalho", + "editWorkspaceInfo": "Editar Informações do Espaço de Trabalho", + "changeEmail": { + "verifyEmail": "Verifique seu email atual", + "resendCount": "Reenviar em {{count}}s", + "sendVerifyCode": "Enviar código de verificação", + "emailPlaceholder": "Digite um novo email", + "emailLabel": "Novo e-mail", + "resend": "Reenviar", + "codeLabel": "Código de verificação", + "content3": "Digite um novo e-mail e nós enviaremos um código de verificação.", + "codePlaceholder": "Cole o código de 6 dígitos", + "resendTip": "Não recebeu um código?", + "verifyNew": "Verifique seu novo e-mail", + "changeTo": "Mudar para {{email}}", + "continue": "Continue", + "title": "Mudar E-mail", + "content4": "Acabamos de enviar um código de verificação temporário para {{email}}.", + "existingEmail": "Um usuário com este e-mail já existe.", + "authTip": "Uma vez que seu e-mail seja alterado, as contas do Google ou GitHub vinculadas ao seu e-mail antigo não poderão mais fazer login nesta conta.", + "newEmail": "Crie um novo endereço de e-mail", + "content2": "Seu email atual é {{email}}. O código de verificação foi enviado para este endereço de email.", + "content1": "Se você continuar, enviaremos um código de verificação para {{email}} para reautenticação.", + "unAvailableEmail": "Este e-mail está temporariamente indisponível." + } + }, + "members": { + "team": "Equipe", + "invite": "Adicionar", + "name": "NOME", + "lastActive": "ÚLTIMA ATIVIDADE", + "role": "FUNÇÕES", + "pending": "Pendente...", + "owner": "Proprietário", + "admin": "Admin", + "adminTip": "Pode criar aplicativos e gerenciar configurações da equipe", + "normal": "Normal", + "normalTip": "Só pode usar aplicativos, não pode criar aplicativos", + "editor": "Editor", + "editorTip": "Pode editar aplicativos, mas não pode gerenciar configurações da equipe", + "inviteTeamMember": "Adicionar membro da equipe", + "inviteTeamMemberTip": "Eles podem acessar os dados da sua equipe diretamente após fazer login.", + "emailNotSetup": "O servidor de e-mail não está configurado, então os e-mails de convite não podem ser enviados. Por favor, notifique os usuários sobre o link de convite que será emitido após o convite.", + "email": "E-mail", + "emailInvalid": "Formato de e-mail inválido", + "emailPlaceholder": "Por favor, insira e-mails", + "sendInvite": "Enviar Convite", + "invitedAsRole": "Convidado como usuário {{role}}", + "invitationSent": "Convite enviado", + "invitationSentTip": "Convite enviado e eles podem fazer login no Dify para acessar os dados da sua equipe.", + "invitationLink": "Link do Convite", + "failedInvitationEmails": "Os seguintes usuários não foram convidados com sucesso", + "ok": "OK", + "removeFromTeam": "Remover da equipe", + "removeFromTeamTip": "Removerá o acesso da equipe", + "setAdmin": "Definir como administrador", + "setMember": "Definir como membro comum", + "setEditor": "Definir como editor", + "disInvite": "Cancelar o convite", + "deleteMember": "Excluir Membro", + "you": "(Você)", + "datasetOperatorTip": "Só pode gerenciar a base de dados de conhecimento", + "builder": "Construtor", + "setBuilder": "Definir como construtor", + "builderTip": "Pode criar e editar seus próprios aplicativos", + "datasetOperator": "Administrador de conhecimento", + "transferModal": { + "verifyEmail": "Verifique seu email atual", + "resendCount": "Reenviar em {{count}}s", + "codeLabel": "Código de verificação", + "title": "Transferir a propriedade do espaço de trabalho", + "transferPlaceholder": "Selecione um membro do espaço de trabalho…", + "continue": "Continue", + "resendTip": "Não recebeu um código?", + "warningTip": "Você se tornará um membro administrador, e o novo proprietário terá controle total.", + "verifyContent": "Seu email atual é {{email}}.", + "transfer": "Transferir a propriedade do espaço de trabalho", + "resend": "Reenviar", + "verifyContent2": "Enviaremos um código de verificação temporário para este email para reautenticação.", + "codePlaceholder": "Cole o código de 6 dígitos", + "warning": "Você está prestes a transferir a propriedade de \"{{workspace}}\". Isso entra em vigor imediatamente e não pode ser desfeito.", + "transferLabel": "Transferir a propriedade do espaço de trabalho para", + "sendTip": "Se você continuar, enviaremos um código de verificação para {{email}} para reautenticação.", + "sendVerifyCode": "Enviar código de verificação" + }, + "transferOwnership": "Transferir Propriedade" + }, + "integrations": { + "connected": "Conectado", + "google": "Google", + "googleAccount": "Faça login com a conta do Google", + "github": "GitHub", + "githubAccount": "Faça login com a conta do GitHub", + "connect": "Conectar" + }, + "language": { + "displayLanguage": "Idioma de exibição", + "timezone": "Fuso horário" + }, + "provider": { + "apiKey": "Chave da API", + "enterYourKey": "Insira sua chave da API aqui", + "invalidKey": "Chave da API OpenAI inválida", + "validatedError": "Falha na validação: ", + "validating": "Validando chave...", + "saveFailed": "Falha ao salvar a chave da API", + "apiKeyExceedBill": "Esta CHAVE DE API não tem quota disponível, por favor, leia", + "addKey": "Adicionar Chave", + "comingSoon": "Em breve", + "editKey": "Editar", + "invalidApiKey": "Chave da API inválida", + "azure": { + "apiBase": "Base da API", + "apiBasePlaceholder": "A URL base da API do seu ponto de extremidade Azure OpenAI.", + "apiKey": "Chave da API", + "apiKeyPlaceholder": "Insira sua chave da API aqui", + "helpTip": "Saiba mais sobre o Serviço Azure OpenAI" + }, + "openaiHosted": { + "openaiHosted": "OpenAI Hospedado", + "onTrial": "EM TESTE", + "exhausted": "COTA ESGOTADA", + "desc": "O serviço de hospedagem OpenAI fornecido pela Dify permite que você use modelos como GPT-3.5. Antes que sua cota de teste seja esgotada, você precisa configurar outros fornecedores de modelos.", + "callTimes": "Chamadas", + "usedUp": "Cota de teste esgotada. Adicione seu próprio Fornecedor de Modelo.", + "useYourModel": "Atualmente usando seu próprio Fornecedor de Modelo.", + "close": "Fechar" + }, + "anthropicHosted": { + "anthropicHosted": "Anthropic Claude", + "onTrial": "EM TESTE", + "exhausted": "COTA ESGOTADA", + "desc": "Modelo poderoso, que se destaca em uma ampla gama de tarefas, desde diálogos sofisticados e geração de conteúdo criativo até instruções detalhadas.", + "callTimes": "Chamadas", + "usedUp": "Cota de teste esgotada. Adicione seu próprio Fornecedor de Modelo.", + "useYourModel": "Atualmente usando seu próprio Fornecedor de Modelo.", + "close": "Fechar", + "trialQuotaTip": "Sua cota de teste do Anthropic expirará em 11/03/2025 e não estará mais disponível depois disso. Por favor, use-o a tempo." + }, + "anthropic": { + "using": "A capacidade de incorporação está sendo utilizada", + "enableTip": "Para habilitar o modelo da Anthropic, você precisa vincular ao OpenAI ou ao Azure OpenAI Service primeiro.", + "notEnabled": "Não habilitado", + "keyFrom": "Obtenha sua chave da API da Anthropic" + }, + "encrypted": { + "front": "Sua CHAVE DA API será criptografada e armazenada usando", + "back": " tecnologia." + } + }, + "modelProvider": { + "notConfigured": "O modelo do sistema ainda não foi totalmente configurado e algumas funções podem estar indisponíveis.", + "systemModelSettings": "Configurações do Modelo do Sistema", + "systemModelSettingsLink": "Por que é necessário configurar um modelo do sistema?", + "selectModel": "Selecione seu modelo", + "setupModelFirst": "Por favor, configure seu modelo primeiro", + "systemReasoningModel": { + "key": "Modelo de Raciocínio do Sistema", + "tip": "Defina o modelo de inferência padrão a ser usado para criar aplicativos, bem como recursos como geração de nomes de diálogo e sugestão de próxima pergunta também usarão o modelo de inferência padrão." + }, + "embeddingModel": { + "key": "Modelo de Incorporação", + "tip": "Defina o modelo padrão para o processamento de incorporação de documentos do Conhecimento, tanto a recuperação quanto a importação do Conhecimento usam este modelo de Incorporação para processamento de vetorização. Alterar causará inconsistência na dimensão do vetor entre o Conhecimento importado e a pergunta, resultando em falha na recuperação. Para evitar falhas na recuperação, não altere este modelo indiscriminadamente.", + "required": "O modelo de Incorporação é obrigatório" + }, + "speechToTextModel": { + "key": "Modelo de Fala para Texto", + "tip": "Defina o modelo padrão para entrada de fala para texto na conversa." + }, + "ttsModel": { + "key": "Modelo de Texto para Fala", + "tip": "Defina o modelo padrão para entrada de texto para fala na conversa." + }, + "rerankModel": { + "key": "Modelo de Reordenação", + "tip": "O modelo de reordenaenação reorganizará a lista de documentos candidatos com base na correspondência semântica com a consulta do usuário, melhorando os resultados da classificação semântica" + }, + "quota": "Quota", + "searchModel": "Modelo de pesquisa", + "noModelFound": "Nenhum modelo encontrado para {{model}}", + "models": "Modelos", + "showMoreModelProvider": "Mostrar mais provedor de modelo", + "selector": { + "tip": "Este modelo foi removido. Adicione um modelo ou selecione outro modelo.", + "emptyTip": "Nenhum modelo disponível", + "emptySetting": "Por favor, vá para configurações para configurar", + "rerankTip": "Por favor, configure o modelo de reordenação" + }, + "card": { + "quota": "QUOTA", + "onTrial": "Em Teste", + "paid": "Pago", + "quotaExhausted": "Quota esgotada", + "callTimes": "Chamadas", + "tokens": "Tokens", + "buyQuota": "Comprar Quota", + "priorityUse": "Uso prioritário", + "removeKey": "Remover Chave da API", + "tip": "A prioridade será dada à quota paga. A quota de teste será usada após a quota paga ser esgotada." + }, + "item": { + "deleteDesc": "{{modelName}} está sendo usado como modelos de raciocínio do sistema. Algumas funções não estarão disponíveis após a remoção. Por favor, confirme.", + "freeQuota": "QUOTA GRATUITA" + }, + "addApiKey": "Adicionar sua chave da API", + "invalidApiKey": "Chave da API inválida", + "encrypted": { + "front": "Sua CHAVE DA API será criptografada e armazenada usando", + "back": " tecnologia." + }, + "freeQuota": { + "howToEarn": "Como ganhar" + }, + "addMoreModelProvider": "ADICIONAR MAIS FORNECEDOR DE MODELO", + "addModel": "Adicionar Modelo", + "modelsNum": "{{num}} Modelos", + "showModels": "Mostrar Modelos", + "showModelsNum": "Mostrar {{num}} Modelos", + "collapse": "Recolher", + "config": "Configuração", + "modelAndParameters": "Modelo e Parâmetros", + "model": "Modelo", + "featureSupported": "{{feature}} suportado", + "callTimes": "Chamadas", + "credits": "Créditos de Mensagem", + "buyQuota": "Comprar Quota", + "getFreeTokens": "Obter Tokens Gratuitos", + "priorityUsing": "Uso prioritário", + "deprecated": "Obsoleto", + "confirmDelete": "confirmar exclusão?", + "quotaTip": "Tokens gratuitos disponíveis restantes", + "loadPresets": "Carregar Predefinições", + "parameters": "PARÂMETROS", + "loadBalancingDescription": "Reduza a pressão com vários conjuntos de credenciais.", + "configLoadBalancing": "Balanceamento de carga de configuração", + "upgradeForLoadBalancing": "Atualize seu plano para habilitar o balanceamento de carga.", + "providerManaged": "Gerenciado pelo provedor", + "apiKeyStatusNormal": "O status do APIKey é normal", + "loadBalancing": "Balanceamento de carga", + "addConfig": "Adicionar configuração", + "providerManagedDescription": "Use o único conjunto de credenciais fornecido pelo provedor de modelo.", + "apiKey": "CHAVE DE API", + "loadBalancingLeastKeyWarning": "Para habilitar o balanceamento de carga, pelo menos 2 chaves devem estar habilitadas.", + "editConfig": "Editar configuração", + "defaultConfig": "Configuração padrão", + "modelHasBeenDeprecated": "Este modelo foi preterido", + "loadBalancingInfo": "Por padrão, o balanceamento de carga usa a estratégia Round-robin. Se a limitação de taxa for acionada, um período de espera de 1 minuto será aplicado.", + "apiKeyRateLimit": "O limite de taxa foi atingido, disponível após {{seconds}}s", + "loadBalancingHeadline": "Balanceamento de carga", + "emptyProviderTip": "Instale um provedor de modelo primeiro.", + "installProvider": "Instalar provedores de modelo", + "discoverMore": "Descubra mais em", + "configureTip": "Configure a chave de API ou adicione o modelo a ser usado", + "emptyProviderTitle": "Provedor de modelo não configurado", + "toBeConfigured": "A ser configurado", + "auth": { + "apiKeyModal": { + "addModel": "Adicionar modelo", + "title": "Configuração de Autorização de Chave da API", + "desc": "Após configurar as credenciais, todos os membros dentro do espaço de trabalho podem usar este modelo ao orquestrar aplicações." + }, + "addCredential": "Adicionar credencial", + "configModel": "Configurar modelo", + "apiKeys": "Chaves de API", + "unAuthorized": "Não autorizado", + "modelCredentials": "Credenciais do modelo", + "providerManaged": "Provedor gerenciado", + "addApiKey": "Adicionar chave da API", + "authorizationError": "Erro de autorização", + "addNewModel": "Adicionar novo modelo", + "specifyModelCredential": "Especifique as credenciais do modelo", + "providerManagedTip": "A configuração atual é hospedada pelo provedor.", + "authRemoved": "Autorização removida", + "addModelCredential": "Adicionar credenciais do modelo", + "configLoadBalancing": "Configuração de Balanceamento de Carga", + "specifyModelCredentialTip": "Use uma credencial de modelo configurada.", + "modelCredential": "Credencial de modelo", + "editModelCredential": "Editar credencial do modelo", + "manageCredentials": "Gerenciar credenciais", + "customModelCredentials": "Credenciais de modelo personalizado", + "addModel": "Adicionar modelo", + "removeModel": "Remover modelo", + "selectModelCredential": "Selecione uma credencial de modelo", + "customModelCredentialsDeleteTip": "A credencial está em uso e não pode ser excluída", + "addNewModelCredential": "Adicionar nova credencial de modelo" + }, + "parametersInvalidRemoved": "Alguns parâmetros são inválidos e foram removidos", + "installDataSourceProvider": "Instalar provedores de fontes de dados" + }, + "dataSource": { + "add": "Adicionar uma fonte de dados", + "connect": "Conectar", + "notion": { + "title": "Notion", + "description": "Usando o Notion como fonte de dados para o Conhecimento.", + "connectedWorkspace": "Espaço de trabalho conectado", + "addWorkspace": "Adicionar espaço de trabalho", + "connected": "Conectado", + "disconnected": "Desconectado", + "changeAuthorizedPages": "Alterar páginas autorizadas", + "pagesAuthorized": "Páginas autorizadas", + "sync": "Sincronizar", + "remove": "Remover", + "selector": { + "pageSelected": "Páginas Selecionadas", + "searchPages": "Pesquisar páginas...", + "noSearchResult": "Nenhum resultado de pesquisa", + "addPages": "Adicionar páginas", + "preview": "PRÉ-VISUALIZAÇÃO" + }, + "integratedAlert": "O Notion está integrado através de credenciais internas, não é necessário reautorizar." + }, + "website": { + "inactive": "Inativo", + "active": "Ativo", + "title": "Local na rede Internet", + "with": "Com", + "configuredCrawlers": "Rastreadores configurados", + "description": "Importe conteúdo de sites usando o rastreador da Web." + }, + "configure": "Configurar" + }, + "plugin": { + "serpapi": { + "apiKey": "Chave da API", + "apiKeyPlaceholder": "Insira sua chave da API", + "keyFrom": "Obtenha sua chave da SerpAPI na página da conta da SerpAPI" + } + }, + "apiBasedExtension": { + "title": "As extensões de API fornecem gerenciamento centralizado de API, simplificando a configuração para uso fácil em todos os aplicativos da Dify.", + "link": "Saiba como desenvolver sua própria Extensão de API.", + "add": "Adicionar Extensão de API", + "selector": { + "title": "Extensão de API", + "placeholder": "Por favor, selecione a extensão de API", + "manage": "Gerenciar Extensão de API" + }, + "modal": { + "title": "Adicionar Extensão de API", + "editTitle": "Editar Extensão de API", + "name": { + "title": "Nome", + "placeholder": "Por favor, insira o nome" + }, + "apiEndpoint": { + "title": "Endpoint da API", + "placeholder": "Por favor, insira o endpoint da API" + }, + "apiKey": { + "title": "Chave da API", + "placeholder": "Por favor, insira a chave da API", + "lengthError": "O comprimento da chave da API não pode ser inferior a 5 caracteres" + } + }, + "type": "Tipo" + }, + "about": { + "changeLog": "Registro de Alterações", + "updateNow": "Atualizar agora", + "nowAvailable": "Dify {{version}} já está disponível.", + "latestAvailable": "Dify {{version}} é a última versão disponível." + }, + "appMenus": { + "overview": "Monitoramento", + "promptEng": "Orquestrar", + "apiAccess": "Acesso à API", + "logAndAnn": "Logs e Anúncios", + "logs": "Logs" + }, + "environment": { + "testing": "TESTE", + "development": "DESENVOLVIMENTO" + }, + "appModes": { + "completionApp": "Gerador de Texto", + "chatApp": "Aplicativo de Bate-papo" + }, + "datasetMenus": { + "documents": "Documentos", + "hitTesting": "Teste de Recuperação", + "settings": "Configurações", + "emptyTip": "O Conhecimento não foi associado, por favor, vá para o aplicativo ou plug-in para completar a associação.", + "viewDoc": "Ver documentação", + "relatedApp": "aplicativos relacionados", + "noRelatedApp": "Nenhum aplicativo vinculado", + "pipeline": "Pipeline" + }, + "voiceInput": { + "speaking": "Fale agora...", + "converting": "Convertendo para texto...", + "notAllow": "microfone não autorizado" + }, + "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": "Texto-Davinci-003", + "text-embedding-ada-002": "Texto-Embutimento-Ada-002", + "whisper-1": "Sussurro-1", + "claude-instant-1": "Claude-Instantâneo", + "claude-2": "Claude-2" + }, + "chat": { + "renameConversation": "Renomear Conversa", + "conversationName": "Nome da conversa", + "conversationNamePlaceholder": "Por favor, insira o nome da conversa", + "conversationNameCanNotEmpty": "Nome da conversa obrigatório", + "citation": { + "title": "CITAÇÕES", + "linkToDataset": "Link para Conhecimento", + "characters": "Personagens:", + "hitCount": "Contagem de recuperação:", + "vectorHash": "Hash de vetor:", + "hitScore": "Pontuação de recuperação:" + }, + "inputPlaceholder": "Fale com o {{botName}}", + "thinking": "Pensante...", + "thought": "Pensamento", + "resend": "Reenviar" + }, + "promptEditor": { + "placeholder": "Escreva sua palavra de incentivo aqui, digite '{' para inserir uma variável, digite '/' para inserir um bloco de conteúdo de incentivo", + "context": { + "item": { + "title": "Contexto", + "desc": "Inserir modelo de contexto" + }, + "modal": { + "title": "{{num}} Conhecimentos no Contexto", + "add": "Adicionar Contexto", + "footer": "Você pode gerenciar contextos na seção Contexto abaixo." + } + }, + "history": { + "item": { + "title": "Histórico de Conversas", + "desc": "Inserir modelo de mensagem histórica" + }, + "modal": { + "title": "EXEMPLO", + "user": "Olá", + "assistant": "Olá! Como posso ajudar hoje?", + "edit": "Editar Nomes de Função da Conversa" + } + }, + "variable": { + "item": { + "title": "Variáveis e Ferramentas Externas", + "desc": "Inserir Variáveis e Ferramentas Externas" + }, + "outputToolDisabledItem": { + "title": "Variáveis", + "desc": "Inserir variáveis" + }, + "modal": { + "add": "Nova variável", + "addTool": "Nova ferramenta" + } + }, + "query": { + "item": { + "title": "Consulta", + "desc": "Inserir modelo de consulta do usuário" + } + }, + "existed": "Já existe no incentivo" + }, + "imageUploader": { + "uploadFromComputer": "Enviar do Computador", + "uploadFromComputerReadError": "Falha ao ler a imagem, por favor, tente novamente.", + "uploadFromComputerUploadError": "Falha ao enviar a imagem, por favor, envie novamente.", + "uploadFromComputerLimit": "As imagens enviadas não podem exceder {{size}} MB", + "pasteImageLink": "Colar link da imagem", + "pasteImageLinkInputPlaceholder": "Cole o link da imagem aqui", + "pasteImageLinkInvalid": "Link da imagem inválido", + "imageUpload": "Enviar Imagem" + }, + "tag": { + "placeholder": "Todas as tags", + "addNew": "Adicionar nova tag", + "noTag": "Sem tags", + "noTagYet": "Nenhuma tag ainda", + "addTag": "adicionar etiqueta", + "editTag": "Editar tags", + "manageTags": "Gerenciar tags", + "selectorPlaceholder": "Digite para pesquisar ou criar", + "create": "Criar", + "delete": "Excluir etiqueta", + "deleteTip": "A tag está sendo usada, excluí-la?", + "created": "Tag criada com sucesso", + "failed": "Falha na criação da tag" + }, + "errorMsg": { + "fieldRequired": "{{field}} é obrigatório", + "urlError": "URL deve começar com http:// ou https://" + }, + "fileUploader": { + "uploadFromComputer": "Upload local", + "pasteFileLink": "Colar link do arquivo", + "pasteFileLinkInputPlaceholder": "Digite o URL...", + "pasteFileLinkInvalid": "Link de arquivo inválido", + "fileExtensionNotSupport": "Extensão de arquivo não suportada", + "uploadFromComputerReadError": "Falha na leitura do arquivo, tente novamente.", + "uploadFromComputerLimit": "Carregar arquivo não pode exceder {{size}}", + "uploadFromComputerUploadError": "Falha no upload do arquivo, faça o upload novamente.", + "fileExtensionBlocked": "Este tipo de arquivo está bloqueado por razões de segurança", + "uploadDisabled": "Envio de arquivo desativado" + }, + "license": { + "expiring": "Expirando em um dia", + "expiring_plural": "Expirando em {{count}} dias", + "unlimited": "Ilimitado" + }, + "pagination": { + "perPage": "Itens por página" + }, + "theme": { + "light": "luz", + "dark": "escuro", + "theme": "Tema", + "auto": "sistema" + }, + "compliance": { + "soc2Type1": "Relatório SOC 2 Tipo I", + "sandboxUpgradeTooltip": "Apenas disponível com um plano Profissional ou de Equipe.", + "soc2Type2": "Relatório SOC 2 Tipo II", + "professionalUpgradeTooltip": "Apenas disponível com um plano Team ou superior.", + "gdpr": "GDPR DPA", + "iso27001": "Certificação ISO 27001:2022" + }, + "imageInput": { + "dropImageHere": "Arraste sua imagem aqui, ou", + "supportedFormats": "Suporta PNG, JPG, JPEG, WEBP e GIF", + "browse": "navegar" + }, + "you": "Você", + "avatar": { + "deleteTitle": "Remover Avatar", + "deleteDescription": "Você tem certeza de que deseja remover sua foto de perfil? Sua conta usará o avatar padrão inicial." + }, + "feedback": { + "title": "Fornecer feedback", + "content": "Conteúdo do feedback", + "subtitle": "Por favor, nos diga o que deu errado com esta resposta", + "placeholder": "Por favor, descreva o que deu errado ou como podemos melhorar..." + }, + "label": { + "optional": "(opcional)" + }, + "noData": "Sem dados", + "dynamicSelect": { + "error": "Falha ao carregar opções", + "noData": "Nenhuma opção disponível", + "loading": "Carregando opções...", + "selected": "{{count}} selecionado" + } +} diff --git a/web/i18n/pt-BR/common.ts b/web/i18n/pt-BR/common.ts deleted file mode 100644 index b739561ca4..0000000000 --- a/web/i18n/pt-BR/common.ts +++ /dev/null @@ -1,792 +0,0 @@ -const translation = { - api: { - success: 'Sucesso', - actionSuccess: 'Ação bem-sucedida', - saved: 'Salvo', - create: 'Criado', - remove: 'Removido', - actionFailed: 'Ação falhou', - }, - operation: { - create: 'Criar', - confirm: 'Confirmar', - cancel: 'Cancelar', - clear: 'Limpar', - save: 'Salvar', - saveAndEnable: 'Salvar e Ativar', - edit: 'Editar', - add: 'Adicionar', - added: 'Adicionado', - refresh: 'Reiniciar', - reset: 'Redefinir', - search: 'Buscar', - change: 'Alterar', - remove: 'Remover', - send: 'Enviar', - copy: 'Copiar', - lineBreak: 'Quebra de linha', - sure: 'Tenho certeza', - download: 'Baixar', - delete: 'Excluir', - settings: 'Configurações', - setup: 'Configuração', - getForFree: 'Obter gratuitamente', - reload: 'Recarregar', - ok: 'OK', - log: 'Log', - learnMore: 'Saiba Mais', - params: 'Parâmetros', - duplicate: 'Duplicada', - rename: 'Renomear', - audioSourceUnavailable: 'AudioSource não está disponível', - zoomOut: 'Diminuir o zoom', - zoomIn: 'Ampliar', - copyImage: 'Copiar imagem', - openInNewTab: 'Abrir em nova guia', - viewMore: 'VER MAIS', - regenerate: 'Regenerar', - close: 'Fechar', - saveAndRegenerate: 'Salvar e regenerar pedaços filhos', - view: 'Vista', - submit: 'Enviar', - skip: 'Navio', - imageCopied: 'Imagem copiada', - deleteApp: 'Excluir aplicativo', - copied: 'Copiado', - in: 'em', - viewDetails: 'Ver detalhes', - downloadFailed: 'Download falhou. Por favor, tente novamente mais tarde.', - more: 'Mais', - downloadSuccess: 'Download concluído.', - format: 'Formato', - deSelectAll: 'Desmarcar tudo', - selectAll: 'Selecionar tudo', - config: 'Configuração', - no: 'Não', - yes: 'Sim', - deleteConfirmTitle: 'Excluir?', - confirmAction: 'Por favor, confirme sua ação.', - noSearchResults: 'Nenhum {{content}} foi encontrado', - resetKeywords: 'Redefinir palavras-chave', - selectCount: '{{count}} Selecionado', - searchCount: 'Encontre {{count}} {{content}}', - noSearchCount: '0 {{content}}', - now: 'Agora', - }, - placeholder: { - input: 'Por favor, insira', - select: 'Por favor, selecione', - search: 'Pesquisar...', - }, - voice: { - language: { - zhHans: 'Chinês', - zhHant: 'Chinês Tradicional', - enUS: 'Inglês', - deDE: 'Alemão', - frFR: 'Francês', - esES: 'Espanhol', - itIT: 'Italiano', - thTH: 'Tailandês', - idID: 'Indonésio', - jaJP: 'Japonês', - koKR: 'Coreano', - ptBR: 'Português', - ruRU: 'Russo', - ukUA: 'Ucraniano', - viVN: 'Vietnamita', - plPL: 'Polonês', - roRO: 'Romeno', - hiIN: 'Hindi', - trTR: 'Turco', - faIR: 'Persa', - slSI: 'Esloveno', - arTN: 'Árabe Tunisiano', - }, - }, - unit: { - char: 'caracteres', - }, - actionMsg: { - noModification: 'Sem modificações no momento.', - modifiedSuccessfully: 'Modificado com sucesso', - modifiedUnsuccessfully: 'Modificado sem sucesso', - copySuccessfully: 'Copiado com sucesso', - paySucceeded: 'Pagamento realizado com sucesso', - payCancelled: 'Pagamento cancelado', - generatedSuccessfully: 'Gerado com sucesso', - generatedUnsuccessfully: 'Geração sem sucesso', - }, - model: { - params: { - temperature: 'Temperatura', - temperatureTip: - 'Controla a aleatoriedade: Diminuir resulta em conclusões menos aleatórias. À medida que a temperatura se aproxima de zero, o modelo se tornará determinístico e repetitivo.', - top_p: 'Top P', - top_pTip: - 'Controla a diversidade via amostragem de núcleo: 0.5 significa que metade de todas as opções ponderadas por probabilidade são consideradas.', - presence_penalty: 'Penalidade de presença', - presence_penaltyTip: - 'Quanto penalizar novos tokens com base em se eles aparecem no texto até agora.\nAumenta a probabilidade do modelo de falar sobre novos tópicos.', - frequency_penalty: 'Penalidade de frequência', - frequency_penaltyTip: - 'Quanto penalizar novos tokens com base em sua frequência existente no texto até agora.\nDiminui a probabilidade do modelo de repetir a mesma linha textualmente.', - max_tokens: 'Máximo de tokens', - max_tokensTip: - 'Usado para limitar o comprimento máximo da resposta, em tokens. \nValores maiores podem limitar o espaço restante para palavras de prompt, registros de bate-papo e Conhecimento. \nRecomenda-se defini-lo abaixo de dois terços\ngpt-4-1106-preview, gpt-4-vision-preview max token (entrada 128k saída 4k)', - maxTokenSettingTip: 'Sua configuração máxima de token é alta, limitando potencialmente o espaço para palavras de prompt, consultas e dados. Considere definir abaixo de 2/3.', - setToCurrentModelMaxTokenTip: 'O máximo de tokens é atualizado para 80% do máximo de token do modelo atual {{maxToken}}.', - stop_sequences: 'Sequências de parada', - stop_sequencesTip: 'Até quatro sequências onde a API irá parar de gerar mais tokens. O texto retornado não conterá a sequência de parada.', - stop_sequencesPlaceholder: 'Digite a sequência e pressione Tab', - }, - tone: { - Creative: 'Criativo', - Balanced: 'Equilibrado', - Precise: 'Preciso', - Custom: 'Personalizado', - }, - addMoreModel: 'Vá para configurações para adicionar mais modelos', - settingsLink: 'Configurações do provedor de modelos', - capabilities: 'Recursos multimodais', - }, - menus: { - status: 'beta', - explore: 'Explorar', - apps: 'Estúdio', - plugins: 'Plugins', - pluginsTips: 'Integre plugins de terceiros ou crie plugins de IA compatíveis com o ChatGPT.', - datasets: 'Conhecimento', - datasetsTips: 'EM BREVE: Importe seus próprios dados de texto ou escreva dados em tempo real via Webhook para aprimoramento do contexto LLM.', - newApp: 'Novo App', - newDataset: 'Criar Conhecimento', - tools: 'Ferramentas', - exploreMarketplace: 'Explorar Mercado', - appDetail: 'Detalhes do aplicativo', - account: 'Conta', - }, - userProfile: { - settings: 'Configurações', - emailSupport: 'Suporte por e-mail', - workspace: 'Espaço de trabalho', - createWorkspace: 'Criar Espaço de Trabalho', - helpCenter: 'Ajuda', - roadmap: 'Roteiro', - community: 'Comunidade', - about: 'Sobre', - logout: 'Sair', - github: 'GitHub', - support: 'Suporte', - compliance: 'Conformidade', - contactUs: 'Contate-Nos', - forum: 'Fórum', - }, - settings: { - accountGroup: 'CONTA', - workplaceGroup: 'ESPAÇO DE TRABALHO', - account: 'Minha conta', - members: 'Membros', - billing: 'Faturamento', - integrations: 'Integrações', - language: 'Idioma', - provider: 'Fornecedor de modelo', - dataSource: 'Fonte de dados', - plugin: 'Plugins', - apiBasedExtension: 'Extensão baseada em API', - generalGroup: 'GERAL', - }, - account: { - avatar: 'Avatar', - name: 'Nome', - email: 'E-mail', - password: 'Senha', - passwordTip: 'Você pode definir uma senha permanente se não quiser usar códigos de login temporários', - setPassword: 'Definir uma senha', - resetPassword: 'Redefinir senha', - currentPassword: 'Senha atual', - newPassword: 'Nova senha', - confirmPassword: 'Confirmar senha', - notEqual: 'As duas senhas são diferentes.', - langGeniusAccount: 'Conta Dify', - langGeniusAccountTip: 'Sua conta Dify e dados de usuário associados.', - editName: 'Editar Nome', - showAppLength: 'Mostrar {{length}} apps', - delete: 'Excluir conta', - deleteTip: 'Excluir sua conta apagará permanentemente todos os seus dados e eles não poderão ser recuperados.', - myAccount: 'Minha Conta', - account: 'Conta', - studio: 'Estúdio Dify', - deletePrivacyLinkTip: 'Para obter mais informações sobre como lidamos com seus dados, consulte nosso', - deletePrivacyLink: 'Política de privacidade.', - deleteSuccessTip: 'Sua conta precisa de tempo para concluir a exclusão. Enviaremos um e-mail quando tudo estiver pronto.', - deleteLabel: 'Para confirmar, digite seu e-mail abaixo', - deletePlaceholder: 'Por favor, digite seu e-mail', - sendVerificationButton: 'Enviar código de verificação', - verificationLabel: 'Código de verificação', - verificationPlaceholder: 'Cole o código de 6 dígitos', - permanentlyDeleteButton: 'Excluir conta permanentemente', - feedbackTitle: 'Realimentação', - feedbackLabel: 'Diga-nos por que você excluiu sua conta?', - feedbackPlaceholder: 'Opcional', - workspaceName: 'Nome do Espaço de Trabalho', - workspaceIcon: 'Ícone de Área de Trabalho', - editWorkspaceInfo: 'Editar Informações do Espaço de Trabalho', - changeEmail: { - verifyEmail: 'Verifique seu email atual', - resendCount: 'Reenviar em {{count}}s', - sendVerifyCode: 'Enviar código de verificação', - emailPlaceholder: 'Digite um novo email', - emailLabel: 'Novo e-mail', - resend: 'Reenviar', - codeLabel: 'Código de verificação', - content3: 'Digite um novo e-mail e nós enviaremos um código de verificação.', - codePlaceholder: 'Cole o código de 6 dígitos', - resendTip: 'Não recebeu um código?', - verifyNew: 'Verifique seu novo e-mail', - changeTo: 'Mudar para {{email}}', - continue: 'Continue', - title: 'Mudar E-mail', - content4: 'Acabamos de enviar um código de verificação temporário para {{email}}.', - existingEmail: 'Um usuário com este e-mail já existe.', - authTip: 'Uma vez que seu e-mail seja alterado, as contas do Google ou GitHub vinculadas ao seu e-mail antigo não poderão mais fazer login nesta conta.', - newEmail: 'Crie um novo endereço de e-mail', - content2: 'Seu email atual é {{email}}. O código de verificação foi enviado para este endereço de email.', - content1: 'Se você continuar, enviaremos um código de verificação para {{email}} para reautenticação.', - unAvailableEmail: 'Este e-mail está temporariamente indisponível.', - }, - }, - members: { - team: 'Equipe', - invite: 'Adicionar', - name: 'NOME', - lastActive: 'ÚLTIMA ATIVIDADE', - role: 'FUNÇÕES', - pending: 'Pendente...', - owner: 'Proprietário', - admin: 'Admin', - adminTip: 'Pode criar aplicativos e gerenciar configurações da equipe', - normal: 'Normal', - normalTip: 'Só pode usar aplicativos, não pode criar aplicativos', - editor: 'Editor', - editorTip: 'Pode editar aplicativos, mas não pode gerenciar configurações da equipe', - inviteTeamMember: 'Adicionar membro da equipe', - inviteTeamMemberTip: 'Eles podem acessar os dados da sua equipe diretamente após fazer login.', - emailNotSetup: 'O servidor de e-mail não está configurado, então os e-mails de convite não podem ser enviados. Por favor, notifique os usuários sobre o link de convite que será emitido após o convite.', - email: 'E-mail', - emailInvalid: 'Formato de e-mail inválido', - emailPlaceholder: 'Por favor, insira e-mails', - sendInvite: 'Enviar Convite', - invitedAsRole: 'Convidado como usuário {{role}}', - invitationSent: 'Convite enviado', - invitationSentTip: 'Convite enviado e eles podem fazer login no Dify para acessar os dados da sua equipe.', - invitationLink: 'Link do Convite', - failedInvitationEmails: 'Os seguintes usuários não foram convidados com sucesso', - ok: 'OK', - removeFromTeam: 'Remover da equipe', - removeFromTeamTip: 'Removerá o acesso da equipe', - setAdmin: 'Definir como administrador', - setMember: 'Definir como membro comum', - setEditor: 'Definir como editor', - disInvite: 'Cancelar o convite', - deleteMember: 'Excluir Membro', - you: '(Você)', - datasetOperatorTip: 'Só pode gerenciar a base de dados de conhecimento', - builder: 'Construtor', - setBuilder: 'Definir como construtor', - builderTip: 'Pode criar e editar seus próprios aplicativos', - datasetOperator: 'Administrador de conhecimento', - transferModal: { - verifyEmail: 'Verifique seu email atual', - resendCount: 'Reenviar em {{count}}s', - codeLabel: 'Código de verificação', - title: 'Transferir a propriedade do espaço de trabalho', - transferPlaceholder: 'Selecione um membro do espaço de trabalho…', - continue: 'Continue', - resendTip: 'Não recebeu um código?', - warningTip: 'Você se tornará um membro administrador, e o novo proprietário terá controle total.', - verifyContent: 'Seu email atual é {{email}}.', - transfer: 'Transferir a propriedade do espaço de trabalho', - resend: 'Reenviar', - verifyContent2: 'Enviaremos um código de verificação temporário para este email para reautenticação.', - codePlaceholder: 'Cole o código de 6 dígitos', - warning: 'Você está prestes a transferir a propriedade de "{{workspace}}". Isso entra em vigor imediatamente e não pode ser desfeito.', - transferLabel: 'Transferir a propriedade do espaço de trabalho para', - sendTip: 'Se você continuar, enviaremos um código de verificação para {{email}} para reautenticação.', - sendVerifyCode: 'Enviar código de verificação', - }, - transferOwnership: 'Transferir Propriedade', - }, - integrations: { - connected: 'Conectado', - google: 'Google', - googleAccount: 'Faça login com a conta do Google', - github: 'GitHub', - githubAccount: 'Faça login com a conta do GitHub', - connect: 'Conectar', - }, - language: { - displayLanguage: 'Idioma de exibição', - timezone: 'Fuso horário', - }, - provider: { - apiKey: 'Chave da API', - enterYourKey: 'Insira sua chave da API aqui', - invalidKey: 'Chave da API OpenAI inválida', - validatedError: 'Falha na validação: ', - validating: 'Validando chave...', - saveFailed: 'Falha ao salvar a chave da API', - apiKeyExceedBill: 'Esta CHAVE DE API não tem quota disponível, por favor, leia', - addKey: 'Adicionar Chave', - comingSoon: 'Em breve', - editKey: 'Editar', - invalidApiKey: 'Chave da API inválida', - azure: { - apiBase: 'Base da API', - apiBasePlaceholder: 'A URL base da API do seu ponto de extremidade Azure OpenAI.', - apiKey: 'Chave da API', - apiKeyPlaceholder: 'Insira sua chave da API aqui', - helpTip: 'Saiba mais sobre o Serviço Azure OpenAI', - }, - openaiHosted: { - openaiHosted: 'OpenAI Hospedado', - onTrial: 'EM TESTE', - exhausted: 'COTA ESGOTADA', - desc: 'O serviço de hospedagem OpenAI fornecido pela Dify permite que você use modelos como GPT-3.5. Antes que sua cota de teste seja esgotada, você precisa configurar outros fornecedores de modelos.', - callTimes: 'Chamadas', - usedUp: 'Cota de teste esgotada. Adicione seu próprio Fornecedor de Modelo.', - useYourModel: 'Atualmente usando seu próprio Fornecedor de Modelo.', - close: 'Fechar', - }, - anthropicHosted: { - anthropicHosted: 'Anthropic Claude', - onTrial: 'EM TESTE', - exhausted: 'COTA ESGOTADA', - desc: 'Modelo poderoso, que se destaca em uma ampla gama de tarefas, desde diálogos sofisticados e geração de conteúdo criativo até instruções detalhadas.', - callTimes: 'Chamadas', - usedUp: 'Cota de teste esgotada. Adicione seu próprio Fornecedor de Modelo.', - useYourModel: 'Atualmente usando seu próprio Fornecedor de Modelo.', - close: 'Fechar', - trialQuotaTip: 'Sua cota de teste do Anthropic expirará em 11/03/2025 e não estará mais disponível depois disso. Por favor, use-o a tempo.', - }, - anthropic: { - using: 'A capacidade de incorporação está sendo utilizada', - enableTip: 'Para habilitar o modelo da Anthropic, você precisa vincular ao OpenAI ou ao Azure OpenAI Service primeiro.', - notEnabled: 'Não habilitado', - keyFrom: 'Obtenha sua chave da API da Anthropic', - }, - encrypted: { - front: 'Sua CHAVE DA API será criptografada e armazenada usando', - back: ' tecnologia.', - }, - }, - modelProvider: { - notConfigured: 'O modelo do sistema ainda não foi totalmente configurado e algumas funções podem estar indisponíveis.', - systemModelSettings: 'Configurações do Modelo do Sistema', - systemModelSettingsLink: 'Por que é necessário configurar um modelo do sistema?', - selectModel: 'Selecione seu modelo', - setupModelFirst: 'Por favor, configure seu modelo primeiro', - systemReasoningModel: { - key: 'Modelo de Raciocínio do Sistema', - tip: 'Defina o modelo de inferência padrão a ser usado para criar aplicativos, bem como recursos como geração de nomes de diálogo e sugestão de próxima pergunta também usarão o modelo de inferência padrão.', - }, - embeddingModel: { - key: 'Modelo de Incorporação', - tip: 'Defina o modelo padrão para o processamento de incorporação de documentos do Conhecimento, tanto a recuperação quanto a importação do Conhecimento usam este modelo de Incorporação para processamento de vetorização. Alterar causará inconsistência na dimensão do vetor entre o Conhecimento importado e a pergunta, resultando em falha na recuperação. Para evitar falhas na recuperação, não altere este modelo indiscriminadamente.', - required: 'O modelo de Incorporação é obrigatório', - }, - speechToTextModel: { - key: 'Modelo de Fala para Texto', - tip: 'Defina o modelo padrão para entrada de fala para texto na conversa.', - }, - ttsModel: { - key: 'Modelo de Texto para Fala', - tip: 'Defina o modelo padrão para entrada de texto para fala na conversa.', - }, - rerankModel: { - key: 'Modelo de Reordenação', - tip: 'O modelo de reordenaenação reorganizará a lista de documentos candidatos com base na correspondência semântica com a consulta do usuário, melhorando os resultados da classificação semântica', - }, - quota: 'Quota', - searchModel: 'Modelo de pesquisa', - noModelFound: 'Nenhum modelo encontrado para {{model}}', - models: 'Modelos', - showMoreModelProvider: 'Mostrar mais provedor de modelo', - selector: { - tip: 'Este modelo foi removido. Adicione um modelo ou selecione outro modelo.', - emptyTip: 'Nenhum modelo disponível', - emptySetting: 'Por favor, vá para configurações para configurar', - rerankTip: 'Por favor, configure o modelo de reordenação', - }, - card: { - quota: 'QUOTA', - onTrial: 'Em Teste', - paid: 'Pago', - quotaExhausted: 'Quota esgotada', - callTimes: 'Chamadas', - tokens: 'Tokens', - buyQuota: 'Comprar Quota', - priorityUse: 'Uso prioritário', - removeKey: 'Remover Chave da API', - tip: 'A prioridade será dada à quota paga. A quota de teste será usada após a quota paga ser esgotada.', - }, - item: { - deleteDesc: '{{modelName}} está sendo usado como modelos de raciocínio do sistema. Algumas funções não estarão disponíveis após a remoção. Por favor, confirme.', - freeQuota: 'QUOTA GRATUITA', - }, - addApiKey: 'Adicionar sua chave da API', - invalidApiKey: 'Chave da API inválida', - encrypted: { - front: 'Sua CHAVE DA API será criptografada e armazenada usando', - back: ' tecnologia.', - }, - freeQuota: { - howToEarn: 'Como ganhar', - }, - addMoreModelProvider: 'ADICIONAR MAIS FORNECEDOR DE MODELO', - addModel: 'Adicionar Modelo', - modelsNum: '{{num}} Modelos', - showModels: 'Mostrar Modelos', - showModelsNum: 'Mostrar {{num}} Modelos', - collapse: 'Recolher', - config: 'Configuração', - modelAndParameters: 'Modelo e Parâmetros', - model: 'Modelo', - featureSupported: '{{feature}} suportado', - callTimes: 'Chamadas', - credits: 'Créditos de Mensagem', - buyQuota: 'Comprar Quota', - getFreeTokens: 'Obter Tokens Gratuitos', - priorityUsing: 'Uso prioritário', - deprecated: 'Obsoleto', - confirmDelete: 'confirmar exclusão?', - quotaTip: 'Tokens gratuitos disponíveis restantes', - loadPresets: 'Carregar Predefinições', - parameters: 'PARÂMETROS', - loadBalancingDescription: 'Reduza a pressão com vários conjuntos de credenciais.', - configLoadBalancing: 'Balanceamento de carga de configuração', - upgradeForLoadBalancing: 'Atualize seu plano para habilitar o balanceamento de carga.', - providerManaged: 'Gerenciado pelo provedor', - apiKeyStatusNormal: 'O status do APIKey é normal', - loadBalancing: 'Balanceamento de carga', - addConfig: 'Adicionar configuração', - providerManagedDescription: 'Use o único conjunto de credenciais fornecido pelo provedor de modelo.', - apiKey: 'CHAVE DE API', - loadBalancingLeastKeyWarning: 'Para habilitar o balanceamento de carga, pelo menos 2 chaves devem estar habilitadas.', - editConfig: 'Editar configuração', - defaultConfig: 'Configuração padrão', - modelHasBeenDeprecated: 'Este modelo foi preterido', - loadBalancingInfo: 'Por padrão, o balanceamento de carga usa a estratégia Round-robin. Se a limitação de taxa for acionada, um período de espera de 1 minuto será aplicado.', - apiKeyRateLimit: 'O limite de taxa foi atingido, disponível após {{seconds}}s', - loadBalancingHeadline: 'Balanceamento de carga', - emptyProviderTip: 'Instale um provedor de modelo primeiro.', - installProvider: 'Instalar provedores de modelo', - discoverMore: 'Descubra mais em', - configureTip: 'Configure a chave de API ou adicione o modelo a ser usado', - emptyProviderTitle: 'Provedor de modelo não configurado', - toBeConfigured: 'A ser configurado', - auth: { - apiKeyModal: { - addModel: 'Adicionar modelo', - title: 'Configuração de Autorização de Chave da API', - desc: 'Após configurar as credenciais, todos os membros dentro do espaço de trabalho podem usar este modelo ao orquestrar aplicações.', - }, - addCredential: 'Adicionar credencial', - configModel: 'Configurar modelo', - apiKeys: 'Chaves de API', - unAuthorized: 'Não autorizado', - modelCredentials: 'Credenciais do modelo', - providerManaged: 'Provedor gerenciado', - addApiKey: 'Adicionar chave da API', - authorizationError: 'Erro de autorização', - addNewModel: 'Adicionar novo modelo', - specifyModelCredential: 'Especifique as credenciais do modelo', - providerManagedTip: 'A configuração atual é hospedada pelo provedor.', - authRemoved: 'Autorização removida', - addModelCredential: 'Adicionar credenciais do modelo', - configLoadBalancing: 'Configuração de Balanceamento de Carga', - specifyModelCredentialTip: 'Use uma credencial de modelo configurada.', - modelCredential: 'Credencial de modelo', - editModelCredential: 'Editar credencial do modelo', - manageCredentials: 'Gerenciar credenciais', - customModelCredentials: 'Credenciais de modelo personalizado', - addModel: 'Adicionar modelo', - removeModel: 'Remover modelo', - selectModelCredential: 'Selecione uma credencial de modelo', - customModelCredentialsDeleteTip: 'A credencial está em uso e não pode ser excluída', - addNewModelCredential: 'Adicionar nova credencial de modelo', - }, - parametersInvalidRemoved: 'Alguns parâmetros são inválidos e foram removidos', - installDataSourceProvider: 'Instalar provedores de fontes de dados', - }, - dataSource: { - add: 'Adicionar uma fonte de dados', - connect: 'Conectar', - notion: { - title: 'Notion', - description: 'Usando o Notion como fonte de dados para o Conhecimento.', - connectedWorkspace: 'Espaço de trabalho conectado', - addWorkspace: 'Adicionar espaço de trabalho', - connected: 'Conectado', - disconnected: 'Desconectado', - changeAuthorizedPages: 'Alterar páginas autorizadas', - pagesAuthorized: 'Páginas autorizadas', - sync: 'Sincronizar', - remove: 'Remover', - selector: { - pageSelected: 'Páginas Selecionadas', - searchPages: 'Pesquisar páginas...', - noSearchResult: 'Nenhum resultado de pesquisa', - addPages: 'Adicionar páginas', - preview: 'PRÉ-VISUALIZAÇÃO', - }, - integratedAlert: 'O Notion está integrado através de credenciais internas, não é necessário reautorizar.', - }, - website: { - inactive: 'Inativo', - active: 'Ativo', - title: 'Local na rede Internet', - with: 'Com', - configuredCrawlers: 'Rastreadores configurados', - description: 'Importe conteúdo de sites usando o rastreador da Web.', - }, - configure: 'Configurar', - }, - plugin: { - serpapi: { - apiKey: 'Chave da API', - apiKeyPlaceholder: 'Insira sua chave da API', - keyFrom: 'Obtenha sua chave da SerpAPI na página da conta da SerpAPI', - }, - }, - apiBasedExtension: { - title: 'As extensões de API fornecem gerenciamento centralizado de API, simplificando a configuração para uso fácil em todos os aplicativos da Dify.', - link: 'Saiba como desenvolver sua própria Extensão de API.', - add: 'Adicionar Extensão de API', - selector: { - title: 'Extensão de API', - placeholder: 'Por favor, selecione a extensão de API', - manage: 'Gerenciar Extensão de API', - }, - modal: { - title: 'Adicionar Extensão de API', - editTitle: 'Editar Extensão de API', - name: { - title: 'Nome', - placeholder: 'Por favor, insira o nome', - }, - apiEndpoint: { - title: 'Endpoint da API', - placeholder: 'Por favor, insira o endpoint da API', - }, - apiKey: { - title: 'Chave da API', - placeholder: 'Por favor, insira a chave da API', - lengthError: 'O comprimento da chave da API não pode ser inferior a 5 caracteres', - }, - }, - type: 'Tipo', - }, - about: { - changeLog: 'Registro de Alterações', - updateNow: 'Atualizar agora', - nowAvailable: 'Dify {{version}} já está disponível.', - latestAvailable: 'Dify {{version}} é a última versão disponível.', - }, - appMenus: { - overview: 'Monitoramento', - promptEng: 'Orquestrar', - apiAccess: 'Acesso à API', - logAndAnn: 'Logs e Anúncios', - logs: 'Logs', - }, - environment: { - testing: 'TESTE', - development: 'DESENVOLVIMENTO', - }, - appModes: { - completionApp: 'Gerador de Texto', - chatApp: 'Aplicativo de Bate-papo', - }, - datasetMenus: { - documents: 'Documentos', - hitTesting: 'Teste de Recuperação', - settings: 'Configurações', - emptyTip: 'O Conhecimento não foi associado, por favor, vá para o aplicativo ou plug-in para completar a associação.', - viewDoc: 'Ver documentação', - relatedApp: 'aplicativos relacionados', - noRelatedApp: 'Nenhum aplicativo vinculado', - pipeline: 'Pipeline', - }, - voiceInput: { - speaking: 'Fale agora...', - converting: 'Convertendo para texto...', - notAllow: 'microfone não autorizado', - }, - 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': 'Texto-Davinci-003', - 'text-embedding-ada-002': 'Texto-Embutimento-Ada-002', - 'whisper-1': 'Sussurro-1', - 'claude-instant-1': 'Claude-Instantâneo', - 'claude-2': 'Claude-2', - }, - chat: { - renameConversation: 'Renomear Conversa', - conversationName: 'Nome da conversa', - conversationNamePlaceholder: 'Por favor, insira o nome da conversa', - conversationNameCanNotEmpty: 'Nome da conversa obrigatório', - citation: { - title: 'CITAÇÕES', - linkToDataset: 'Link para Conhecimento', - characters: 'Personagens:', - hitCount: 'Contagem de recuperação:', - vectorHash: 'Hash de vetor:', - hitScore: 'Pontuação de recuperação:', - }, - inputPlaceholder: 'Fale com o {{botName}}', - thinking: 'Pensante...', - thought: 'Pensamento', - resend: 'Reenviar', - }, - promptEditor: { - placeholder: 'Escreva sua palavra de incentivo aqui, digite \'{\' para inserir uma variável, digite \'/\' para inserir um bloco de conteúdo de incentivo', - context: { - item: { - title: 'Contexto', - desc: 'Inserir modelo de contexto', - }, - modal: { - title: '{{num}} Conhecimentos no Contexto', - add: 'Adicionar Contexto', - footer: 'Você pode gerenciar contextos na seção Contexto abaixo.', - }, - }, - history: { - item: { - title: 'Histórico de Conversas', - desc: 'Inserir modelo de mensagem histórica', - }, - modal: { - title: 'EXEMPLO', - user: 'Olá', - assistant: 'Olá! Como posso ajudar hoje?', - edit: 'Editar Nomes de Função da Conversa', - }, - }, - variable: { - item: { - title: 'Variáveis e Ferramentas Externas', - desc: 'Inserir Variáveis e Ferramentas Externas', - }, - outputToolDisabledItem: { - title: 'Variáveis', - desc: 'Inserir variáveis', - }, - modal: { - add: 'Nova variável', - addTool: 'Nova ferramenta', - }, - }, - query: { - item: { - title: 'Consulta', - desc: 'Inserir modelo de consulta do usuário', - }, - }, - existed: 'Já existe no incentivo', - }, - imageUploader: { - uploadFromComputer: 'Enviar do Computador', - uploadFromComputerReadError: 'Falha ao ler a imagem, por favor, tente novamente.', - uploadFromComputerUploadError: 'Falha ao enviar a imagem, por favor, envie novamente.', - uploadFromComputerLimit: 'As imagens enviadas não podem exceder {{size}} MB', - pasteImageLink: 'Colar link da imagem', - pasteImageLinkInputPlaceholder: 'Cole o link da imagem aqui', - pasteImageLinkInvalid: 'Link da imagem inválido', - imageUpload: 'Enviar Imagem', - }, - tag: { - placeholder: 'Todas as tags', - addNew: 'Adicionar nova tag', - noTag: 'Sem tags', - noTagYet: 'Nenhuma tag ainda', - addTag: 'adicionar etiqueta', - editTag: 'Editar tags', - manageTags: 'Gerenciar tags', - selectorPlaceholder: 'Digite para pesquisar ou criar', - create: 'Criar', - delete: 'Excluir etiqueta', - deleteTip: 'A tag está sendo usada, excluí-la?', - created: 'Tag criada com sucesso', - failed: 'Falha na criação da tag', - }, - errorMsg: { - fieldRequired: '{{field}} é obrigatório', - urlError: 'URL deve começar com http:// ou https://', - }, - fileUploader: { - uploadFromComputer: 'Upload local', - pasteFileLink: 'Colar link do arquivo', - pasteFileLinkInputPlaceholder: 'Digite o URL...', - pasteFileLinkInvalid: 'Link de arquivo inválido', - fileExtensionNotSupport: 'Extensão de arquivo não suportada', - uploadFromComputerReadError: 'Falha na leitura do arquivo, tente novamente.', - uploadFromComputerLimit: 'Carregar arquivo não pode exceder {{size}}', - uploadFromComputerUploadError: 'Falha no upload do arquivo, faça o upload novamente.', - fileExtensionBlocked: 'Este tipo de arquivo está bloqueado por razões de segurança', - uploadDisabled: 'Envio de arquivo desativado', - }, - license: { - expiring: 'Expirando em um dia', - expiring_plural: 'Expirando em {{count}} dias', - unlimited: 'Ilimitado', - }, - pagination: { - perPage: 'Itens por página', - }, - theme: { - light: 'luz', - dark: 'escuro', - theme: 'Tema', - auto: 'sistema', - }, - compliance: { - soc2Type1: 'Relatório SOC 2 Tipo I', - sandboxUpgradeTooltip: 'Apenas disponível com um plano Profissional ou de Equipe.', - soc2Type2: 'Relatório SOC 2 Tipo II', - professionalUpgradeTooltip: 'Apenas disponível com um plano Team ou superior.', - gdpr: 'GDPR DPA', - iso27001: 'Certificação ISO 27001:2022', - }, - imageInput: { - dropImageHere: 'Arraste sua imagem aqui, ou', - supportedFormats: 'Suporta PNG, JPG, JPEG, WEBP e GIF', - browse: 'navegar', - }, - you: 'Você', - avatar: { - deleteTitle: 'Remover Avatar', - deleteDescription: 'Você tem certeza de que deseja remover sua foto de perfil? Sua conta usará o avatar padrão inicial.', - }, - feedback: { - title: 'Fornecer feedback', - content: 'Conteúdo do feedback', - subtitle: 'Por favor, nos diga o que deu errado com esta resposta', - placeholder: 'Por favor, descreva o que deu errado ou como podemos melhorar...', - }, - label: { - optional: '(opcional)', - }, - noData: 'Sem dados', - dynamicSelect: { - error: 'Falha ao carregar opções', - noData: 'Nenhuma opção disponível', - loading: 'Carregando opções...', - selected: '{{count}} selecionado', - }, -} - -export default translation diff --git a/web/i18n/pt-BR/custom.json b/web/i18n/pt-BR/custom.json new file mode 100644 index 0000000000..555875b4d3 --- /dev/null +++ b/web/i18n/pt-BR/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "Personalização", + "upgradeTip": { + "prefix": "Atualize seu plano para", + "suffix": "personalizar sua marca.", + "title": "Atualize seu plano", + "des": "Atualize seu plano para personalizar sua marca" + }, + "webapp": { + "title": "Personalizar marca do web app", + "removeBrand": "Remover Powered by Dify", + "changeLogo": "Alterar Imagem da Marca Powered by", + "changeLogoTip": "Formato SVG ou PNG com tamanho mínimo de 40x40px" + }, + "app": { + "title": "Personalizar cabeçalho do aplicativo", + "changeLogoTip": "Formato SVG ou PNG com tamanho mínimo de 80x80px" + }, + "upload": "Enviar", + "uploading": "Enviando", + "uploadedFail": "Falha no envio da imagem, por favor, envie novamente.", + "change": "Alterar", + "apply": "Aplicar", + "restore": "Restaurar Padrões", + "customize": { + "contactUs": " entre em contato conosco ", + "prefix": "Para personalizar o logotipo da marca dentro do aplicativo, por favor", + "suffix": "para fazer upgrade para a edição Enterprise." + } +} diff --git a/web/i18n/pt-BR/custom.ts b/web/i18n/pt-BR/custom.ts deleted file mode 100644 index e167035b9b..0000000000 --- a/web/i18n/pt-BR/custom.ts +++ /dev/null @@ -1,32 +0,0 @@ -const translation = { - custom: 'Personalização', - upgradeTip: { - prefix: 'Atualize seu plano para', - suffix: 'personalizar sua marca.', - title: 'Atualize seu plano', - des: 'Atualize seu plano para personalizar sua marca', - }, - webapp: { - title: 'Personalizar marca do web app', - removeBrand: 'Remover Powered by Dify', - changeLogo: 'Alterar Imagem da Marca Powered by', - changeLogoTip: 'Formato SVG ou PNG com tamanho mínimo de 40x40px', - }, - app: { - title: 'Personalizar cabeçalho do aplicativo', - changeLogoTip: 'Formato SVG ou PNG com tamanho mínimo de 80x80px', - }, - upload: 'Enviar', - uploading: 'Enviando', - uploadedFail: 'Falha no envio da imagem, por favor, envie novamente.', - change: 'Alterar', - apply: 'Aplicar', - restore: 'Restaurar Padrões', - customize: { - contactUs: ' entre em contato conosco ', - prefix: 'Para personalizar o logotipo da marca dentro do aplicativo, por favor', - suffix: 'para fazer upgrade para a edição Enterprise.', - }, -} - -export default translation diff --git a/web/i18n/pt-BR/dataset-creation.json b/web/i18n/pt-BR/dataset-creation.json new file mode 100644 index 0000000000..a755401e05 --- /dev/null +++ b/web/i18n/pt-BR/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "Conhecimento" + }, + "one": "Escolher fonte de dados", + "two": "Pré-processamento e Limpeza de Texto", + "three": "Executar e finalizar" + }, + "error": { + "unavailable": "Este Conhecimento não está disponível" + }, + "stepOne": { + "filePreview": "Visualização do arquivo", + "pagePreview": "Visualização da página", + "dataSourceType": { + "file": "Importar de arquivo de texto", + "notion": "Sincronizar do Notion", + "web": "Sincronizar de site" + }, + "uploader": { + "title": "Enviar arquivo de texto", + "button": "Arraste e solte arquivos ou pastas, ou", + "buttonSingleFile": "Arraste e solte um arquivo, ou", + "browse": "Navegar", + "tip": "Suporta {{supportTypes}}. Máximo de {{size}}MB cada.", + "validation": { + "typeError": "Tipo de arquivo não suportado", + "size": "Arquivo muito grande. Máximo é {{size}}MB", + "count": "Vários arquivos não suportados", + "filesNumber": "Limite de upload em massa {{filesNumber}}." + }, + "cancel": "Cancelar", + "change": "Alterar", + "failed": "Falha no envio" + }, + "notionSyncTitle": "Notion não está conectado", + "notionSyncTip": "Para sincronizar com o Notion, a conexão com o Notion deve ser estabelecida primeiro.", + "connect": "Ir para conexão", + "button": "Próximo", + "emptyDatasetCreation": "Quero criar um Conhecimento vazio", + "modal": { + "title": "Criar um Conhecimento vazio", + "tip": "Um Conhecimento vazio não conterá documentos e você poderá fazer upload de documentos a qualquer momento.", + "input": "Nome do Conhecimento", + "placeholder": "Por favor, insira", + "nameNotEmpty": "O nome não pode estar vazio", + "nameLengthInvalid": "O nome deve ter entre 1 e 40 caracteres", + "cancelButton": "Cancelar", + "confirmButton": "Criar", + "failed": "Falha na criação" + }, + "website": { + "fireCrawlNotConfiguredDescription": "Configure o Firecrawl com a chave de API para usá-lo.", + "run": "Correr", + "unknownError": "Erro desconhecido", + "crawlSubPage": "Rastrear subpáginas", + "selectAll": "Selecionar tudo", + "resetAll": "Redefinir tudo", + "includeOnlyPaths": "Incluir apenas caminhos", + "configure": "Configurar", + "limit": "Limite", + "firecrawlDoc": "Documentos do Firecrawl", + "preview": "Visualizar", + "options": "Opções", + "scrapTimeInfo": "Páginas {{total}} raspadas no total dentro de {{time}}s", + "exceptionErrorTitle": "Ocorreu uma exceção durante a execução do trabalho Firecrawl:", + "fireCrawlNotConfigured": "O Firecrawl não está configurado", + "maxDepthTooltip": "Profundidade máxima para rastrear em relação ao URL inserido. A profundidade 0 apenas raspa a página do url inserido, a profundidade 1 raspa o url e tudo depois de inseridoURL + um / e assim por diante.", + "firecrawlTitle": "Extraia conteúdo da web com 🔥Firecrawl", + "maxDepth": "Profundidade máxima", + "totalPageScraped": "Total de páginas raspadas:", + "excludePaths": "Excluir caminhos", + "extractOnlyMainContent": "Extraia apenas o conteúdo principal (sem cabeçalhos, navs, rodapés, etc.)", + "jinaReaderNotConfiguredDescription": "Configure o Jina Reader inserindo sua chave de API gratuita para acesso.", + "jinaReaderDoc": "Saiba mais sobre o Jina Reader", + "chooseProvider": "Selecione um provedor", + "jinaReaderNotConfigured": "Jina Reader não está configurado", + "jinaReaderDocLink": "https://jina.ai/reader", + "useSitemap": "Usar o mapa do site", + "useSitemapTooltip": "Siga o mapa do site para rastrear o site. Caso contrário, o Jina Reader rastreará iterativamente com base na relevância da página, produzindo menos páginas, mas de maior qualidade.", + "jinaReaderTitle": "Converter todo o site em Markdown", + "watercrawlTitle": "Extrair conteúdo da web com o Watercrawl", + "configureFirecrawl": "Configurar o Firecrawl", + "configureJinaReader": "Configurar o Leitor Jina", + "waterCrawlNotConfigured": "Watercrawl não está configurado", + "waterCrawlNotConfiguredDescription": "Configure o Watercrawl com a chave da API para usá-lo.", + "watercrawlDoc": "Documentos do Watercrawl", + "configureWatercrawl": "Configurar Watercrawl", + "running": "Executando" + }, + "cancel": "Cancelar" + }, + "stepTwo": { + "segmentation": "Configurações de fragmentação", + "auto": "Automático", + "autoDescription": "Configura automaticamente as regras de fragmentação e pré-processamento. Usuários não familiarizados são recomendados a selecionar esta opção.", + "custom": "Personalizado", + "customDescription": "Personalize as regras de fragmentação, comprimento dos fragmentos e regras de pré-processamento, etc.", + "separator": "Identificador de segmento", + "separatorPlaceholder": "Por exemplo, nova linha (\\\\n) ou separador especial (como \"***\")", + "maxLength": "Comprimento máximo do fragmento", + "overlap": "Sobreposição de blocos", + "overlapTip": "Configurar a sobreposição de blocos pode manter a relevância semântica entre eles, melhorando o efeito de recuperação. É recomendado definir de 10% a 25% do tamanho máximo do bloco.", + "overlapCheck": "a sobreposição de blocos não deve ser maior que o comprimento máximo do bloco", + "rules": "Regras de pré-processamento de texto", + "removeExtraSpaces": "Substituir espaços consecutivos, quebras de linha e tabulações", + "removeUrlEmails": "Excluir todos os URLs e endereços de e-mail", + "removeStopwords": "Remover palavras irrelevantes como \"um\", \"uma\", \"o\"", + "preview": "Confirmar e visualizar", + "reset": "Redefinir", + "indexMode": "Modo de índice", + "qualified": "Alta qualidade", + "recommend": "Recomendado", + "qualifiedTip": "Chama a interface de incorporação do sistema padrão para processamento, fornecendo maior precisão ao consultar.", + "warning": "Por favor, configure primeiro a chave da API do provedor do modelo.", + "click": "Ir para configurações", + "economical": "Econômico", + "economicalTip": "Use motores de vetor offline, índices de palavras-chave, etc. para reduzir a precisão sem gastar tokens", + "QATitle": "Fragmentação no formato de Perguntas e Respostas", + "QATip": "Habilitar esta opção consumirá mais tokens", + "QALanguage": "Fragmentar usando", + "estimateCost": "Estimativa", + "estimateSegment": "Fragmentos estimados", + "segmentCount": "fragmentos", + "calculating": "Calculando...", + "fileSource": "Pré-processar documentos", + "notionSource": "Pré-processar páginas", + "other": "e outros ", + "fileUnit": " arquivos", + "notionUnit": " páginas", + "previousStep": "Passo anterior", + "nextStep": "Salvar e Processar", + "save": "Salvar e Processar", + "cancel": "Cancelar", + "sideTipTitle": "Por que fragmentar e pré-processar?", + "sideTipP1": "Ao processar dados de texto, fragmentar e limpar são duas etapas importantes de pré-processamento.", + "sideTipP2": "A fragmentação divide um texto longo em parágrafos para que os modelos possam entender melhor. Isso melhora a qualidade e relevância dos resultados do modelo.", + "sideTipP3": "A limpeza remove caracteres e formatos desnecessários, tornando o Conhecimento mais limpo e fácil de analisar.", + "sideTipP4": "Fragmentação e limpeza adequadas melhoram o desempenho do modelo, fornecendo resultados mais precisos e valiosos.", + "previewTitle": "Visualização", + "previewTitleButton": "Visualização", + "previewButton": "Alternar para visualização no formato de Perguntas e Respostas", + "previewSwitchTipStart": "A visualização atual do fragmento está no formato de texto, alternar para uma visualização no formato de Perguntas e Respostas irá", + "previewSwitchTipEnd": " consumir tokens adicionais", + "characters": "caracteres", + "indexSettingTip": "Para alterar o método de índice, por favor vá para as ", + "retrievalSettingTip": "Para alterar o método de índice, por favor vá para as ", + "datasetSettingLink": "configurações do Conhecimento.", + "websiteSource": "Site de pré-processamento", + "webpageUnit": "Páginas", + "separatorTip": "Um delimitador é o caractere usado para separar o texto. \\n\\n e \\n são delimitadores comumente usados para separar parágrafos e linhas. Combinado com vírgulas (\\n\\n,\\n), os parágrafos serão segmentados por linhas ao exceder o comprimento máximo do bloco. Você também pode usar delimitadores especiais definidos por você (por exemplo, ***).", + "maxLengthCheck": "O comprimento máximo do chunk deve ser inferior a {{limit}}", + "parentChildDelimiterTip": "Um delimitador é o caractere usado para separar o texto. \\n\\n é recomendado para dividir o documento original em grandes partes pai. Você também pode usar delimitadores especiais definidos por você.", + "parentChildChunkDelimiterTip": "Um delimitador é o caractere usado para separar o texto. \\n é recomendado para dividir partes pai em pequenas partes filhas. Você também pode usar delimitadores especiais definidos por você.", + "notAvailableForQA": "Não disponível para o Índice de P e R", + "parentChild": "Pai-filho", + "general": "Geral", + "qaSwitchHighQualityTipTitle": "O formato de perguntas e respostas requer um método de indexação de alta qualidade", + "parentChunkForContext": "Parte-pai para contexto", + "switch": "Interruptor", + "fullDoc": "Doc completo", + "qaSwitchHighQualityTipContent": "Atualmente, apenas o método de índice de alta qualidade dá suporte ao agrupamento no formato Q&A. Gostaria de mudar para o modo de alta qualidade?", + "childChunkForRetrieval": "Filho-pedaço para recuperação", + "useQALanguage": "Chunk usando o formato de perguntas e respostas em", + "previewChunk": "Visualizar parte", + "notAvailableForParentChild": "Não disponível para Índice pai-filho", + "paragraph": "Parágrafo", + "parentChildTip": "Ao usar o modo pai-filho, o filho-chunk é usado para recuperação e o pai-chunk é usado para recall como contexto.", + "generalTip": "Modo de agrupamento de texto geral, os pedaços recuperados e recuperados são os mesmos.", + "highQualityTip": "Depois de concluir a incorporação no modo de alta qualidade, a reversão para o modo econômico não estará disponível.", + "previewChunkTip": "Clique no botão 'Preview Chunk' à esquerda para carregar a visualização", + "fullDocTip": "O documento inteiro é usado como parte pai e recuperado diretamente. Observe que, por motivos de desempenho, o texto que exceder 10000 tokens será truncado automaticamente.", + "paragraphTip": "Esse modo divide o texto em parágrafos com base em delimitadores e no comprimento máximo da parte, usando o texto dividido como a parte pai para recuperação.", + "previewChunkCount": "{{contagem}} Partes estimadas", + "qaTip": "Ao usar dados estruturados de perguntas e respostas, você pode criar documentos que combinam perguntas com respostas. Esses documentos são indexados com base na parte da pergunta, permitindo que o sistema recupere respostas relevantes com base na similaridade da consulta." + }, + "stepThree": { + "creationTitle": "🎉 Conhecimento criado", + "creationContent": "Nomeamos automaticamente o Conhecimento, você pode modificá-lo a qualquer momento", + "label": "Nome do Conhecimento", + "additionTitle": "🎉 Documento enviado", + "additionP1": "O documento foi enviado para o Conhecimento", + "additionP2": ", você pode encontrá-lo na lista de documentos do Conhecimento.", + "stop": "Parar processamento", + "resume": "Continuar processamento", + "navTo": "Ir para documento", + "sideTipTitle": "O que fazer em seguida", + "sideTipContent": "Após a conclusão da indexação do documento, o Conhecimento pode ser integrado à aplicação como contexto. Você pode encontrar a configuração de contexto na página de orquestração de prompts. Você também pode criá-lo como um plugin de indexação ChatGPT independente para lançamento.", + "modelTitle": "Tem certeza de que deseja parar a incorporação?", + "modelContent": "Se você precisar continuar o processamento posteriormente, você continuará de onde parou.", + "modelButtonConfirm": "Confirmar", + "modelButtonCancel": "Cancelar" + }, + "firecrawl": { + "apiKeyPlaceholder": "Chave de API do firecrawl.dev", + "configFirecrawl": "Configurar 🔥o Firecrawl", + "getApiKeyLinkText": "Obtenha sua chave de API do firecrawl.dev" + }, + "jinaReader": { + "getApiKeyLinkText": "Obtenha sua chave de API gratuita em jina.ai", + "configJinaReader": "Configurar o Jina Reader", + "apiKeyPlaceholder": "Chave de API do jina.ai" + }, + "otherDataSource": { + "learnMore": "Saiba Mais", + "description": "Atualmente, a base de conhecimento da Dify possui apenas fontes de dados limitadas. Contribuir com uma fonte de dados para a base de conhecimento Dify é uma maneira fantástica de ajudar a aumentar a flexibilidade e o poder da plataforma para todos os usuários. Nosso guia de contribuição facilita o início. Clique no link abaixo para saber mais.", + "title": "Conectar-se a outras fontes de dados?" + }, + "watercrawl": { + "apiKeyPlaceholder": "Chave da API do watercrawl.dev", + "configWatercrawl": "Configurar Watercrawl", + "getApiKeyLinkText": "Obtenha sua chave de API em watercrawl.dev" + } +} diff --git a/web/i18n/pt-BR/dataset-creation.ts b/web/i18n/pt-BR/dataset-creation.ts deleted file mode 100644 index c832e857ae..0000000000 --- a/web/i18n/pt-BR/dataset-creation.ts +++ /dev/null @@ -1,217 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: 'Conhecimento', - }, - one: 'Escolher fonte de dados', - two: 'Pré-processamento e Limpeza de Texto', - three: 'Executar e finalizar', - }, - error: { - unavailable: 'Este Conhecimento não está disponível', - }, - stepOne: { - filePreview: 'Visualização do arquivo', - pagePreview: 'Visualização da página', - dataSourceType: { - file: 'Importar de arquivo de texto', - notion: 'Sincronizar do Notion', - web: 'Sincronizar de site', - }, - uploader: { - title: 'Enviar arquivo de texto', - button: 'Arraste e solte arquivos ou pastas, ou', - buttonSingleFile: 'Arraste e solte um arquivo, ou', - browse: 'Navegar', - tip: 'Suporta {{supportTypes}}. Máximo de {{size}}MB cada.', - validation: { - typeError: 'Tipo de arquivo não suportado', - size: 'Arquivo muito grande. Máximo é {{size}}MB', - count: 'Vários arquivos não suportados', - filesNumber: 'Limite de upload em massa {{filesNumber}}.', - }, - cancel: 'Cancelar', - change: 'Alterar', - failed: 'Falha no envio', - }, - notionSyncTitle: 'Notion não está conectado', - notionSyncTip: 'Para sincronizar com o Notion, a conexão com o Notion deve ser estabelecida primeiro.', - connect: 'Ir para conexão', - button: 'Próximo', - emptyDatasetCreation: 'Quero criar um Conhecimento vazio', - modal: { - title: 'Criar um Conhecimento vazio', - tip: 'Um Conhecimento vazio não conterá documentos e você poderá fazer upload de documentos a qualquer momento.', - input: 'Nome do Conhecimento', - placeholder: 'Por favor, insira', - nameNotEmpty: 'O nome não pode estar vazio', - nameLengthInvalid: 'O nome deve ter entre 1 e 40 caracteres', - cancelButton: 'Cancelar', - confirmButton: 'Criar', - failed: 'Falha na criação', - }, - website: { - fireCrawlNotConfiguredDescription: 'Configure o Firecrawl com a chave de API para usá-lo.', - run: 'Correr', - unknownError: 'Erro desconhecido', - crawlSubPage: 'Rastrear subpáginas', - selectAll: 'Selecionar tudo', - resetAll: 'Redefinir tudo', - includeOnlyPaths: 'Incluir apenas caminhos', - configure: 'Configurar', - limit: 'Limite', - firecrawlDoc: 'Documentos do Firecrawl', - preview: 'Visualizar', - options: 'Opções', - scrapTimeInfo: 'Páginas {{total}} raspadas no total dentro de {{time}}s', - exceptionErrorTitle: 'Ocorreu uma exceção durante a execução do trabalho Firecrawl:', - fireCrawlNotConfigured: 'O Firecrawl não está configurado', - maxDepthTooltip: 'Profundidade máxima para rastrear em relação ao URL inserido. A profundidade 0 apenas raspa a página do url inserido, a profundidade 1 raspa o url e tudo depois de inseridoURL + um / e assim por diante.', - firecrawlTitle: 'Extraia conteúdo da web com 🔥Firecrawl', - maxDepth: 'Profundidade máxima', - totalPageScraped: 'Total de páginas raspadas:', - excludePaths: 'Excluir caminhos', - extractOnlyMainContent: 'Extraia apenas o conteúdo principal (sem cabeçalhos, navs, rodapés, etc.)', - jinaReaderNotConfiguredDescription: 'Configure o Jina Reader inserindo sua chave de API gratuita para acesso.', - jinaReaderDoc: 'Saiba mais sobre o Jina Reader', - chooseProvider: 'Selecione um provedor', - jinaReaderNotConfigured: 'Jina Reader não está configurado', - jinaReaderDocLink: 'https://jina.ai/reader', - useSitemap: 'Usar o mapa do site', - useSitemapTooltip: 'Siga o mapa do site para rastrear o site. Caso contrário, o Jina Reader rastreará iterativamente com base na relevância da página, produzindo menos páginas, mas de maior qualidade.', - jinaReaderTitle: 'Converter todo o site em Markdown', - watercrawlTitle: 'Extrair conteúdo da web com o Watercrawl', - configureFirecrawl: 'Configurar o Firecrawl', - configureJinaReader: 'Configurar o Leitor Jina', - waterCrawlNotConfigured: 'Watercrawl não está configurado', - waterCrawlNotConfiguredDescription: 'Configure o Watercrawl com a chave da API para usá-lo.', - watercrawlDoc: 'Documentos do Watercrawl', - configureWatercrawl: 'Configurar Watercrawl', - running: 'Executando', - }, - cancel: 'Cancelar', - }, - stepTwo: { - segmentation: 'Configurações de fragmentação', - auto: 'Automático', - autoDescription: 'Configura automaticamente as regras de fragmentação e pré-processamento. Usuários não familiarizados são recomendados a selecionar esta opção.', - custom: 'Personalizado', - customDescription: 'Personalize as regras de fragmentação, comprimento dos fragmentos e regras de pré-processamento, etc.', - separator: 'Identificador de segmento', - separatorPlaceholder: 'Por exemplo, nova linha (\\\\n) ou separador especial (como "***")', - maxLength: 'Comprimento máximo do fragmento', - overlap: 'Sobreposição de blocos', - overlapTip: 'Configurar a sobreposição de blocos pode manter a relevância semântica entre eles, melhorando o efeito de recuperação. É recomendado definir de 10% a 25% do tamanho máximo do bloco.', - overlapCheck: 'a sobreposição de blocos não deve ser maior que o comprimento máximo do bloco', - rules: 'Regras de pré-processamento de texto', - removeExtraSpaces: 'Substituir espaços consecutivos, quebras de linha e tabulações', - removeUrlEmails: 'Excluir todos os URLs e endereços de e-mail', - removeStopwords: 'Remover palavras irrelevantes como "um", "uma", "o"', - preview: 'Confirmar e visualizar', - reset: 'Redefinir', - indexMode: 'Modo de índice', - qualified: 'Alta qualidade', - recommend: 'Recomendado', - qualifiedTip: 'Chama a interface de incorporação do sistema padrão para processamento, fornecendo maior precisão ao consultar.', - warning: 'Por favor, configure primeiro a chave da API do provedor do modelo.', - click: 'Ir para configurações', - economical: 'Econômico', - economicalTip: 'Use motores de vetor offline, índices de palavras-chave, etc. para reduzir a precisão sem gastar tokens', - QATitle: 'Fragmentação no formato de Perguntas e Respostas', - QATip: 'Habilitar esta opção consumirá mais tokens', - QALanguage: 'Fragmentar usando', - estimateCost: 'Estimativa', - estimateSegment: 'Fragmentos estimados', - segmentCount: 'fragmentos', - calculating: 'Calculando...', - fileSource: 'Pré-processar documentos', - notionSource: 'Pré-processar páginas', - other: 'e outros ', - fileUnit: ' arquivos', - notionUnit: ' páginas', - previousStep: 'Passo anterior', - nextStep: 'Salvar e Processar', - save: 'Salvar e Processar', - cancel: 'Cancelar', - sideTipTitle: 'Por que fragmentar e pré-processar?', - sideTipP1: 'Ao processar dados de texto, fragmentar e limpar são duas etapas importantes de pré-processamento.', - sideTipP2: 'A fragmentação divide um texto longo em parágrafos para que os modelos possam entender melhor. Isso melhora a qualidade e relevância dos resultados do modelo.', - sideTipP3: 'A limpeza remove caracteres e formatos desnecessários, tornando o Conhecimento mais limpo e fácil de analisar.', - sideTipP4: 'Fragmentação e limpeza adequadas melhoram o desempenho do modelo, fornecendo resultados mais precisos e valiosos.', - previewTitle: 'Visualização', - previewTitleButton: 'Visualização', - previewButton: 'Alternar para visualização no formato de Perguntas e Respostas', - previewSwitchTipStart: 'A visualização atual do fragmento está no formato de texto, alternar para uma visualização no formato de Perguntas e Respostas irá', - previewSwitchTipEnd: ' consumir tokens adicionais', - characters: 'caracteres', - indexSettingTip: 'Para alterar o método de índice, por favor vá para as ', - retrievalSettingTip: 'Para alterar o método de índice, por favor vá para as ', - datasetSettingLink: 'configurações do Conhecimento.', - websiteSource: 'Site de pré-processamento', - webpageUnit: 'Páginas', - separatorTip: 'Um delimitador é o caractere usado para separar o texto. \\n\\n e \\n são delimitadores comumente usados para separar parágrafos e linhas. Combinado com vírgulas (\\n\\n,\\n), os parágrafos serão segmentados por linhas ao exceder o comprimento máximo do bloco. Você também pode usar delimitadores especiais definidos por você (por exemplo, ***).', - maxLengthCheck: 'O comprimento máximo do chunk deve ser inferior a {{limit}}', - parentChildDelimiterTip: 'Um delimitador é o caractere usado para separar o texto. \\n\\n é recomendado para dividir o documento original em grandes partes pai. Você também pode usar delimitadores especiais definidos por você.', - parentChildChunkDelimiterTip: 'Um delimitador é o caractere usado para separar o texto. \\n é recomendado para dividir partes pai em pequenas partes filhas. Você também pode usar delimitadores especiais definidos por você.', - notAvailableForQA: 'Não disponível para o Índice de P e R', - parentChild: 'Pai-filho', - general: 'Geral', - qaSwitchHighQualityTipTitle: 'O formato de perguntas e respostas requer um método de indexação de alta qualidade', - parentChunkForContext: 'Parte-pai para contexto', - switch: 'Interruptor', - fullDoc: 'Doc completo', - qaSwitchHighQualityTipContent: 'Atualmente, apenas o método de índice de alta qualidade dá suporte ao agrupamento no formato Q&A. Gostaria de mudar para o modo de alta qualidade?', - childChunkForRetrieval: 'Filho-pedaço para recuperação', - useQALanguage: 'Chunk usando o formato de perguntas e respostas em', - previewChunk: 'Visualizar parte', - notAvailableForParentChild: 'Não disponível para Índice pai-filho', - paragraph: 'Parágrafo', - parentChildTip: 'Ao usar o modo pai-filho, o filho-chunk é usado para recuperação e o pai-chunk é usado para recall como contexto.', - generalTip: 'Modo de agrupamento de texto geral, os pedaços recuperados e recuperados são os mesmos.', - highQualityTip: 'Depois de concluir a incorporação no modo de alta qualidade, a reversão para o modo econômico não estará disponível.', - previewChunkTip: 'Clique no botão \'Preview Chunk\' à esquerda para carregar a visualização', - fullDocTip: 'O documento inteiro é usado como parte pai e recuperado diretamente. Observe que, por motivos de desempenho, o texto que exceder 10000 tokens será truncado automaticamente.', - paragraphTip: 'Esse modo divide o texto em parágrafos com base em delimitadores e no comprimento máximo da parte, usando o texto dividido como a parte pai para recuperação.', - previewChunkCount: '{{contagem}} Partes estimadas', - qaTip: 'Ao usar dados estruturados de perguntas e respostas, você pode criar documentos que combinam perguntas com respostas. Esses documentos são indexados com base na parte da pergunta, permitindo que o sistema recupere respostas relevantes com base na similaridade da consulta.', - }, - stepThree: { - creationTitle: '🎉 Conhecimento criado', - creationContent: 'Nomeamos automaticamente o Conhecimento, você pode modificá-lo a qualquer momento', - label: 'Nome do Conhecimento', - additionTitle: '🎉 Documento enviado', - additionP1: 'O documento foi enviado para o Conhecimento', - additionP2: ', você pode encontrá-lo na lista de documentos do Conhecimento.', - stop: 'Parar processamento', - resume: 'Continuar processamento', - navTo: 'Ir para documento', - sideTipTitle: 'O que fazer em seguida', - sideTipContent: 'Após a conclusão da indexação do documento, o Conhecimento pode ser integrado à aplicação como contexto. Você pode encontrar a configuração de contexto na página de orquestração de prompts. Você também pode criá-lo como um plugin de indexação ChatGPT independente para lançamento.', - modelTitle: 'Tem certeza de que deseja parar a incorporação?', - modelContent: 'Se você precisar continuar o processamento posteriormente, você continuará de onde parou.', - modelButtonConfirm: 'Confirmar', - modelButtonCancel: 'Cancelar', - }, - firecrawl: { - apiKeyPlaceholder: 'Chave de API do firecrawl.dev', - configFirecrawl: 'Configurar 🔥o Firecrawl', - getApiKeyLinkText: 'Obtenha sua chave de API do firecrawl.dev', - }, - jinaReader: { - getApiKeyLinkText: 'Obtenha sua chave de API gratuita em jina.ai', - configJinaReader: 'Configurar o Jina Reader', - apiKeyPlaceholder: 'Chave de API do jina.ai', - }, - otherDataSource: { - learnMore: 'Saiba Mais', - description: 'Atualmente, a base de conhecimento da Dify possui apenas fontes de dados limitadas. Contribuir com uma fonte de dados para a base de conhecimento Dify é uma maneira fantástica de ajudar a aumentar a flexibilidade e o poder da plataforma para todos os usuários. Nosso guia de contribuição facilita o início. Clique no link abaixo para saber mais.', - title: 'Conectar-se a outras fontes de dados?', - }, - watercrawl: { - apiKeyPlaceholder: 'Chave da API do watercrawl.dev', - configWatercrawl: 'Configurar Watercrawl', - getApiKeyLinkText: 'Obtenha sua chave de API em watercrawl.dev', - }, -} - -export default translation diff --git a/web/i18n/pt-BR/dataset-documents.json b/web/i18n/pt-BR/dataset-documents.json new file mode 100644 index 0000000000..1c8e6a1f49 --- /dev/null +++ b/web/i18n/pt-BR/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "Documentos", + "desc": "Todos os arquivos do Knowledge são mostrados aqui, e todo o Knowledge pode ser vinculado a citações do Dify ou indexado por meio do plugin Chat.", + "addFile": "adicionar arquivo", + "addPages": "Adicionar Páginas", + "table": { + "header": { + "fileName": "NOME DO ARQUIVO", + "words": "PALAVRAS", + "hitCount": "CONTAGEM DE RECUPERAÇÃO", + "uploadTime": "HORA DO UPLOAD", + "status": "STATUS", + "action": "AÇÃO", + "chunkingMode": "MODO DE FRAGMENTAÇÃO" + }, + "name": "Nome", + "rename": "Renomear" + }, + "action": { + "uploadFile": "Enviar novo arquivo", + "settings": "Configurações de segmento", + "addButton": "Adicionar fragmento", + "add": "Adicionar um fragmento", + "batchAdd": "Adicionar em lote", + "archive": "Arquivar", + "unarchive": "Desarquivar", + "delete": "Excluir", + "enableWarning": "O arquivo arquivado não pode ser habilitado", + "sync": "Sincronizar", + "resume": "Retomar", + "pause": "Pausa" + }, + "index": { + "enable": "Habilitar", + "disable": "Desabilitar", + "all": "Todos", + "enableTip": "O arquivo pode ser indexado", + "disableTip": "O arquivo não pode ser indexado" + }, + "status": { + "queuing": "Em fila", + "indexing": "Indexando", + "paused": "Pausado", + "error": "Erro", + "available": "Disponível", + "enabled": "Habilitado", + "disabled": "Desabilitado", + "archived": "Arquivado" + }, + "empty": { + "title": "Ainda não há documentação", + "upload": { + "tip": "Você pode enviar arquivos, sincronizar do site ou de aplicativos da web como Notion, GitHub, etc." + }, + "sync": { + "tip": "O Dify baixará periodicamente arquivos do seu Notion e concluirá o processamento." + } + }, + "delete": { + "title": "Tem certeza que deseja excluir?", + "content": "Se você precisar retomar o processamento posteriormente, continuará de onde parou" + }, + "batchModal": { + "title": "Adicionar fragmentos em lote", + "csvUploadTitle": "Arraste e solte seu arquivo CSV aqui ou ", + "browse": "navegar", + "tip": "O arquivo CSV deve seguir a seguinte estrutura:", + "question": "pergunta", + "answer": "resposta", + "contentTitle": "conteúdo do fragmento", + "content": "conteúdo", + "template": "Baixe o modelo aqui", + "cancel": "Cancelar", + "run": "Executar em lote", + "runError": "Falha ao executar em lote", + "processing": "Processando em lote", + "completed": "Importação concluída", + "error": "Erro na importação", + "ok": "OK" + }, + "addUrl": "Adicionar URL", + "learnMore": "Saiba Mais", + "sort": { + "uploadTime": "Hora do envio", + "hitCount": "Contagem de Recuperação" + } + }, + "metadata": { + "title": "Metadados", + "desc": "A rotulagem de metadados para documentos permite que a IA acesse-os de maneira oportuna e expõe a fonte de referências para os usuários.", + "dateTimeFormat": "D MMMM, YYYY hh:mm A", + "docTypeSelectTitle": "Selecione um tipo de documento", + "docTypeChangeTitle": "Alterar tipo de documento", + "docTypeSelectWarning": "Se o tipo de documento for alterado, os metadados preenchidos agora não serão mais preservados", + "firstMetaAction": "Vamos lá", + "placeholder": { + "add": "Adicionar ", + "select": "Selecionar " + }, + "source": { + "upload_file": "Enviar arquivo", + "notion": "Sincronizar do Notion", + "github": "Sincronizar do Github", + "website_crawl": "Rastreamento de sites", + "local_file": "Arquivo local", + "online_document": "Documento Online" + }, + "type": { + "book": "Livro", + "webPage": "Página da Web", + "paper": "Artigo", + "socialMediaPost": "Postagem em Mídias Sociais", + "personalDocument": "Documento Pessoal", + "businessDocument": "Documento Empresarial", + "IMChat": "Chat de IM", + "wikipediaEntry": "Entrada da Wikipedia", + "notion": "Sincronizar do Notion", + "github": "Sincronizar do Github", + "technicalParameters": "Parâmetros Técnicos" + }, + "field": { + "processRule": { + "processDoc": "Processar Documento", + "segmentRule": "Regra de Fragmentação", + "segmentLength": "Comprimento dos Fragmentos", + "processClean": "Limpeza de Texto" + }, + "book": { + "title": "Título", + "language": "Idioma", + "author": "Autor", + "publisher": "Editora", + "publicationDate": "Data de Publicação", + "ISBN": "ISBN", + "category": "Categoria" + }, + "webPage": { + "title": "Título", + "url": "URL", + "language": "Idioma", + "authorPublisher": "Autor/Editor", + "publishDate": "Data de Publicação", + "topicKeywords": "Tópicos/Palavras-chave", + "description": "Descrição" + }, + "paper": { + "title": "Título", + "language": "Idioma", + "author": "Autor", + "publishDate": "Data de Publicação", + "journalConferenceName": "Nome do Jornal/Conferência", + "volumeIssuePage": "Volume/Edição/Página", + "DOI": "DOI", + "topicsKeywords": "Tópicos/Palavras-chave", + "abstract": "Resumo" + }, + "socialMediaPost": { + "platform": "Plataforma", + "authorUsername": "Autor/Nome de Usuário", + "publishDate": "Data de Publicação", + "postURL": "URL da Postagem", + "topicsTags": "Tópicos/Tags" + }, + "personalDocument": { + "title": "Título", + "author": "Autor", + "creationDate": "Data de Criação", + "lastModifiedDate": "Data da Última Modificação", + "documentType": "Tipo de Documento", + "tagsCategory": "Tags/Categoria" + }, + "businessDocument": { + "title": "Título", + "author": "Autor", + "creationDate": "Data de Criação", + "lastModifiedDate": "Data da Última Modificação", + "documentType": "Tipo de Documento", + "departmentTeam": "Departamento/Equipe" + }, + "IMChat": { + "chatPlatform": "Plataforma de Chat", + "chatPartiesGroupName": "Partes/Grupo do Chat", + "participants": "Participantes", + "startDate": "Data de Início", + "endDate": "Data de Término", + "topicsKeywords": "Tópicos/Palavras-chave", + "fileType": "Tipo de Arquivo" + }, + "wikipediaEntry": { + "title": "Título", + "language": "Idioma", + "webpageURL": "URL da Página da Web", + "editorContributor": "Editor/Contribuidor", + "lastEditDate": "Data da Última Edição", + "summaryIntroduction": "Resumo/Introdução" + }, + "notion": { + "title": "Título", + "language": "Idioma", + "author": "Autor", + "createdTime": "Data de Criação", + "lastModifiedTime": "Data da Última Modificação", + "url": "URL", + "tag": "Tag", + "description": "Descrição" + }, + "github": { + "repoName": "Nome do Repositório", + "repoDesc": "Descrição do Repositório", + "repoOwner": "Proprietário do Repositório", + "fileName": "Nome do Arquivo", + "filePath": "Caminho do Arquivo", + "programmingLang": "Linguagem de Programação", + "url": "URL", + "license": "Licença", + "lastCommitTime": "Data do Último Commit", + "lastCommitAuthor": "Autor do Último Commit" + }, + "originInfo": { + "originalFilename": "Nome do arquivo original", + "originalFileSize": "Tamanho do arquivo original", + "uploadDate": "Data de envio", + "lastUpdateDate": "Data da última atualização", + "source": "Fonte" + }, + "technicalParameters": { + "segmentSpecification": "Especificação dos fragmentos", + "segmentLength": "Comprimento dos fragmentos", + "avgParagraphLength": "Comprimento médio do parágrafo", + "paragraphs": "Parágrafos", + "hitCount": "Contagem de recuperação", + "embeddingTime": "Tempo de incorporação", + "embeddedSpend": "Tempo gasto na incorporação" + } + }, + "languageMap": { + "zh": "Chinês", + "en": "Inglês", + "es": "Espanhol", + "fr": "Francês", + "de": "Alemão", + "ja": "Japonês", + "ko": "Coreano", + "ru": "Russo", + "ar": "Árabe", + "pt": "Português", + "it": "Italiano", + "nl": "Holandês", + "pl": "Polonês", + "sv": "Sueco", + "tr": "Turco", + "he": "Hebraico", + "hi": "Hindi", + "da": "Dinamarquês", + "fi": "Finlandês", + "no": "Norueguês", + "hu": "Húngaro", + "el": "Grego", + "cs": "Tcheco", + "th": "Tailandês", + "id": "Indonésio" + }, + "categoryMap": { + "book": { + "fiction": "Ficção", + "biography": "Biografia", + "history": "História", + "science": "Ciência", + "technology": "Tecnologia", + "education": "Educação", + "philosophy": "Filosofia", + "religion": "Religião", + "socialSciences": "Ciências Sociais", + "art": "Arte", + "travel": "Viagem", + "health": "Saúde", + "selfHelp": "Autoajuda", + "businessEconomics": "Negócios/Economia", + "cooking": "Culinária", + "childrenYoungAdults": "Crianças/Jovens Adultos", + "comicsGraphicNovels": "Quadrinhos/Graphic Novels", + "poetry": "Poesia", + "drama": "Drama", + "other": "Outro" + }, + "personalDoc": { + "notes": "Notas", + "blogDraft": "Rascunho de Blog", + "diary": "Diário", + "researchReport": "Relatório de Pesquisa", + "bookExcerpt": "Trecho de Livro", + "schedule": "Agenda", + "list": "Lista", + "projectOverview": "Visão Geral do Projeto", + "photoCollection": "Coleção de Fotos", + "creativeWriting": "Escrita Criativa", + "codeSnippet": "Trecho de Código", + "designDraft": "Rascunho de Design", + "personalResume": "Currículo Pessoal", + "other": "Outro" + }, + "businessDoc": { + "meetingMinutes": "Minutos de Reunião", + "researchReport": "Relatório de Pesquisa", + "proposal": "Proposta", + "employeeHandbook": "Manual do Funcionário", + "trainingMaterials": "Materiais de Treinamento", + "requirementsDocument": "Documento de Requisitos", + "designDocument": "Documento de Design", + "productSpecification": "Especificação do Produto", + "financialReport": "Relatório Financeiro", + "marketAnalysis": "Análise de Mercado", + "projectPlan": "Plano de Projeto", + "teamStructure": "Estrutura da Equipe", + "policiesProcedures": "Políticas e Procedimentos", + "contractsAgreements": "Contratos e Acordos", + "emailCorrespondence": "Correspondência por E-mail", + "other": "Outro" + } + } + }, + "embedding": { + "processing": "Processando incorporação...", + "paused": "Incorporação pausada", + "completed": "Incorporação concluída", + "error": "Erro na incorporação", + "docName": "Pré-processamento do documento", + "mode": "Regra de segmentação", + "segmentLength": "Comprimento dos fragmentos", + "textCleaning": "Definição prévia e limpeza de texto", + "segments": "Parágrafos", + "highQuality": "Modo de alta qualidade", + "economy": "Modo econômico", + "estimate": "Consumo estimado", + "stop": "Parar processamento", + "resume": "Retomar processamento", + "automatic": "Automático", + "custom": "Personalizado", + "previewTip": "A visualização do parágrafo estará disponível após a incorporação ser concluída", + "pause": "Pausa", + "hierarchical": "Pai-filho", + "parentMaxTokens": "Pai", + "childMaxTokens": "Criança", + "waiting": "Aguarde a incorporação..." + }, + "segment": { + "paragraphs": "Parágrafos", + "keywords": "Palavras-chave", + "addKeyWord": "Adicionar palavra-chave", + "keywordError": "O comprimento máximo da palavra-chave é 20", + "hitCount": "Contagem de recuperação", + "vectorHash": "Hash do vetor: ", + "questionPlaceholder": "adicionar pergunta aqui", + "questionEmpty": "A pergunta não pode estar vazia", + "answerPlaceholder": "adicionar resposta aqui", + "answerEmpty": "A resposta não pode estar vazia", + "contentPlaceholder": "adicionar conteúdo aqui", + "contentEmpty": "O conteúdo não pode estar vazio", + "newTextSegment": "Novo fragmento de texto", + "newQaSegment": "Novo fragmento de P&R", + "delete": "Excluir este fragmento?", + "chunks_other": "PEDAÇOS", + "parentChunks_other": "PARTES PAI", + "childChunks_one": "PEDAÇO FILHO", + "searchResults_zero": "RESULTADO", + "searchResults_one": "RESULTADO", + "searchResults_other": "RESULTADOS", + "empty": "Nenhum pedaço encontrado", + "chunk": "Pedaço", + "newChunk": "Novo pedaço", + "childChunk": "Pedaço filho", + "characters_other": "Caracteres", + "addChunk": "Adicionar pedaço", + "addChildChunk": "Adicionar pedaço filho", + "addAnother": "Adicionar outro", + "editChunk": "Editar Chunk", + "editParentChunk": "Editar parte pai", + "editChildChunk": "Editar parte filho", + "regenerationConfirmTitle": "Deseja regenerar partes filhas?", + "regeneratingTitle": "Regenerando partes filhas", + "regeneratingMessage": "Isso pode demorar um pouco, por favor aguarde...", + "edited": "EDIÇÃO", + "editedAt": "Editado em", + "dateTimeFormat": "DD/MM/YYYY HH:mm", + "expandChunks": "Expandir pedaços", + "collapseChunks": "Recolher partes", + "regenerationConfirmMessage": "A regeneração de partes filhas substituirá as partes filhas atuais, incluindo partes editadas e partes recém-adicionadas. A regeneração não pode ser desfeita.", + "parentChunks_one": "PEDAÇO PAI", + "regenerationSuccessMessage": "Você pode fechar esta janela.", + "chunks_one": "PEDAÇO", + "childChunkAdded": "1 pedaço filho adicionado", + "clearFilter": "Limpar filtro", + "regenerationSuccessTitle": "Regeneração concluída", + "chunkDetail": "Detalhe do pedaço", + "childChunks_other": "PEDAÇOS FILHOS", + "chunkAdded": "1 pedaço adicionado", + "newChildChunk": "Novo pedaço filho", + "characters_one": "personagem", + "parentChunk": "Pedaço pai", + "keywordEmpty": "A palavra-chave não pode estar vazia", + "keywordDuplicate": "A palavra-chave já existe", + "allFilesUploaded": "Todos os arquivos devem ser enviados antes de salvar" + } +} diff --git a/web/i18n/pt-BR/dataset-documents.ts b/web/i18n/pt-BR/dataset-documents.ts deleted file mode 100644 index ac53e26027..0000000000 --- a/web/i18n/pt-BR/dataset-documents.ts +++ /dev/null @@ -1,408 +0,0 @@ -const translation = { - list: { - title: 'Documentos', - desc: 'Todos os arquivos do Knowledge são mostrados aqui, e todo o Knowledge pode ser vinculado a citações do Dify ou indexado por meio do plugin Chat.', - addFile: 'adicionar arquivo', - addPages: 'Adicionar Páginas', - table: { - header: { - fileName: 'NOME DO ARQUIVO', - words: 'PALAVRAS', - hitCount: 'CONTAGEM DE RECUPERAÇÃO', - uploadTime: 'HORA DO UPLOAD', - status: 'STATUS', - action: 'AÇÃO', - chunkingMode: 'MODO DE FRAGMENTAÇÃO', - }, - name: 'Nome', - rename: 'Renomear', - }, - action: { - uploadFile: 'Enviar novo arquivo', - settings: 'Configurações de segmento', - addButton: 'Adicionar fragmento', - add: 'Adicionar um fragmento', - batchAdd: 'Adicionar em lote', - archive: 'Arquivar', - unarchive: 'Desarquivar', - delete: 'Excluir', - enableWarning: 'O arquivo arquivado não pode ser habilitado', - sync: 'Sincronizar', - resume: 'Retomar', - pause: 'Pausa', - }, - index: { - enable: 'Habilitar', - disable: 'Desabilitar', - all: 'Todos', - enableTip: 'O arquivo pode ser indexado', - disableTip: 'O arquivo não pode ser indexado', - }, - status: { - queuing: 'Em fila', - indexing: 'Indexando', - paused: 'Pausado', - error: 'Erro', - available: 'Disponível', - enabled: 'Habilitado', - disabled: 'Desabilitado', - archived: 'Arquivado', - }, - empty: { - title: 'Ainda não há documentação', - upload: { - tip: 'Você pode enviar arquivos, sincronizar do site ou de aplicativos da web como Notion, GitHub, etc.', - }, - sync: { - tip: 'O Dify baixará periodicamente arquivos do seu Notion e concluirá o processamento.', - }, - }, - delete: { - title: 'Tem certeza que deseja excluir?', - content: 'Se você precisar retomar o processamento posteriormente, continuará de onde parou', - }, - batchModal: { - title: 'Adicionar fragmentos em lote', - csvUploadTitle: 'Arraste e solte seu arquivo CSV aqui ou ', - browse: 'navegar', - tip: 'O arquivo CSV deve seguir a seguinte estrutura:', - question: 'pergunta', - answer: 'resposta', - contentTitle: 'conteúdo do fragmento', - content: 'conteúdo', - template: 'Baixe o modelo aqui', - cancel: 'Cancelar', - run: 'Executar em lote', - runError: 'Falha ao executar em lote', - processing: 'Processando em lote', - completed: 'Importação concluída', - error: 'Erro na importação', - ok: 'OK', - }, - addUrl: 'Adicionar URL', - learnMore: 'Saiba Mais', - sort: { - uploadTime: 'Hora do envio', - hitCount: 'Contagem de Recuperação', - }, - }, - metadata: { - title: 'Metadados', - desc: 'A rotulagem de metadados para documentos permite que a IA acesse-os de maneira oportuna e expõe a fonte de referências para os usuários.', - dateTimeFormat: 'D MMMM, YYYY hh:mm A', - docTypeSelectTitle: 'Selecione um tipo de documento', - docTypeChangeTitle: 'Alterar tipo de documento', - docTypeSelectWarning: - 'Se o tipo de documento for alterado, os metadados preenchidos agora não serão mais preservados', - firstMetaAction: 'Vamos lá', - placeholder: { - add: 'Adicionar ', - select: 'Selecionar ', - }, - source: { - upload_file: 'Enviar arquivo', - notion: 'Sincronizar do Notion', - github: 'Sincronizar do Github', - website_crawl: 'Rastreamento de sites', - local_file: 'Arquivo local', - online_document: 'Documento Online', - }, - type: { - book: 'Livro', - webPage: 'Página da Web', - paper: 'Artigo', - socialMediaPost: 'Postagem em Mídias Sociais', - personalDocument: 'Documento Pessoal', - businessDocument: 'Documento Empresarial', - IMChat: 'Chat de IM', - wikipediaEntry: 'Entrada da Wikipedia', - notion: 'Sincronizar do Notion', - github: 'Sincronizar do Github', - technicalParameters: 'Parâmetros Técnicos', - }, - field: { - processRule: { - processDoc: 'Processar Documento', - segmentRule: 'Regra de Fragmentação', - segmentLength: 'Comprimento dos Fragmentos', - processClean: 'Limpeza de Texto', - }, - book: { - title: 'Título', - language: 'Idioma', - author: 'Autor', - publisher: 'Editora', - publicationDate: 'Data de Publicação', - ISBN: 'ISBN', - category: 'Categoria', - }, - webPage: { - title: 'Título', - url: 'URL', - language: 'Idioma', - authorPublisher: 'Autor/Editor', - publishDate: 'Data de Publicação', - topicKeywords: 'Tópicos/Palavras-chave', - description: 'Descrição', - }, - paper: { - title: 'Título', - language: 'Idioma', - author: 'Autor', - publishDate: 'Data de Publicação', - journalConferenceName: 'Nome do Jornal/Conferência', - volumeIssuePage: 'Volume/Edição/Página', - DOI: 'DOI', - topicsKeywords: 'Tópicos/Palavras-chave', - abstract: 'Resumo', - }, - socialMediaPost: { - platform: 'Plataforma', - authorUsername: 'Autor/Nome de Usuário', - publishDate: 'Data de Publicação', - postURL: 'URL da Postagem', - topicsTags: 'Tópicos/Tags', - }, - personalDocument: { - title: 'Título', - author: 'Autor', - creationDate: 'Data de Criação', - lastModifiedDate: 'Data da Última Modificação', - documentType: 'Tipo de Documento', - tagsCategory: 'Tags/Categoria', - }, - businessDocument: { - title: 'Título', - author: 'Autor', - creationDate: 'Data de Criação', - lastModifiedDate: 'Data da Última Modificação', - documentType: 'Tipo de Documento', - departmentTeam: 'Departamento/Equipe', - }, - IMChat: { - chatPlatform: 'Plataforma de Chat', - chatPartiesGroupName: 'Partes/Grupo do Chat', - participants: 'Participantes', - startDate: 'Data de Início', - endDate: 'Data de Término', - topicsKeywords: 'Tópicos/Palavras-chave', - fileType: 'Tipo de Arquivo', - }, - wikipediaEntry: { - title: 'Título', - language: 'Idioma', - webpageURL: 'URL da Página da Web', - editorContributor: 'Editor/Contribuidor', - lastEditDate: 'Data da Última Edição', - summaryIntroduction: 'Resumo/Introdução', - }, - notion: { - title: 'Título', - language: 'Idioma', - author: 'Autor', - createdTime: 'Data de Criação', - lastModifiedTime: 'Data da Última Modificação', - url: 'URL', - tag: 'Tag', - description: 'Descrição', - }, - github: { - repoName: 'Nome do Repositório', - repoDesc: 'Descrição do Repositório', - repoOwner: 'Proprietário do Repositório', - fileName: 'Nome do Arquivo', - filePath: 'Caminho do Arquivo', - programmingLang: 'Linguagem de Programação', - url: 'URL', - license: 'Licença', - lastCommitTime: 'Data do Último Commit', - lastCommitAuthor: 'Autor do Último Commit', - }, - originInfo: { - originalFilename: 'Nome do arquivo original', - originalFileSize: 'Tamanho do arquivo original', - uploadDate: 'Data de envio', - lastUpdateDate: 'Data da última atualização', - source: 'Fonte', - }, - technicalParameters: { - segmentSpecification: 'Especificação dos fragmentos', - segmentLength: 'Comprimento dos fragmentos', - avgParagraphLength: 'Comprimento médio do parágrafo', - paragraphs: 'Parágrafos', - hitCount: 'Contagem de recuperação', - embeddingTime: 'Tempo de incorporação', - embeddedSpend: 'Tempo gasto na incorporação', - }, - }, - languageMap: { - zh: 'Chinês', - en: 'Inglês', - es: 'Espanhol', - fr: 'Francês', - de: 'Alemão', - ja: 'Japonês', - ko: 'Coreano', - ru: 'Russo', - ar: 'Árabe', - pt: 'Português', - it: 'Italiano', - nl: 'Holandês', - pl: 'Polonês', - sv: 'Sueco', - tr: 'Turco', - he: 'Hebraico', - hi: 'Hindi', - da: 'Dinamarquês', - fi: 'Finlandês', - no: 'Norueguês', - hu: 'Húngaro', - el: 'Grego', - cs: 'Tcheco', - th: 'Tailandês', - id: 'Indonésio', - }, - categoryMap: { - book: { - fiction: 'Ficção', - biography: 'Biografia', - history: 'História', - science: 'Ciência', - technology: 'Tecnologia', - education: 'Educação', - philosophy: 'Filosofia', - religion: 'Religião', - socialSciences: 'Ciências Sociais', - art: 'Arte', - travel: 'Viagem', - health: 'Saúde', - selfHelp: 'Autoajuda', - businessEconomics: 'Negócios/Economia', - cooking: 'Culinária', - childrenYoungAdults: 'Crianças/Jovens Adultos', - comicsGraphicNovels: 'Quadrinhos/Graphic Novels', - poetry: 'Poesia', - drama: 'Drama', - other: 'Outro', - }, - personalDoc: { - notes: 'Notas', - blogDraft: 'Rascunho de Blog', - diary: 'Diário', - researchReport: 'Relatório de Pesquisa', - bookExcerpt: 'Trecho de Livro', - schedule: 'Agenda', - list: 'Lista', - projectOverview: 'Visão Geral do Projeto', - photoCollection: 'Coleção de Fotos', - creativeWriting: 'Escrita Criativa', - codeSnippet: 'Trecho de Código', - designDraft: 'Rascunho de Design', - personalResume: 'Currículo Pessoal', - other: 'Outro', - }, - businessDoc: { - meetingMinutes: 'Minutos de Reunião', - researchReport: 'Relatório de Pesquisa', - proposal: 'Proposta', - employeeHandbook: 'Manual do Funcionário', - trainingMaterials: 'Materiais de Treinamento', - requirementsDocument: 'Documento de Requisitos', - designDocument: 'Documento de Design', - productSpecification: 'Especificação do Produto', - financialReport: 'Relatório Financeiro', - marketAnalysis: 'Análise de Mercado', - projectPlan: 'Plano de Projeto', - teamStructure: 'Estrutura da Equipe', - policiesProcedures: 'Políticas e Procedimentos', - contractsAgreements: 'Contratos e Acordos', - emailCorrespondence: 'Correspondência por E-mail', - other: 'Outro', - }, - }, - }, - embedding: { - processing: 'Processando incorporação...', - paused: 'Incorporação pausada', - completed: 'Incorporação concluída', - error: 'Erro na incorporação', - docName: 'Pré-processamento do documento', - mode: 'Regra de segmentação', - segmentLength: 'Comprimento dos fragmentos', - textCleaning: 'Definição prévia e limpeza de texto', - segments: 'Parágrafos', - highQuality: 'Modo de alta qualidade', - economy: 'Modo econômico', - estimate: 'Consumo estimado', - stop: 'Parar processamento', - resume: 'Retomar processamento', - automatic: 'Automático', - custom: 'Personalizado', - previewTip: 'A visualização do parágrafo estará disponível após a incorporação ser concluída', - pause: 'Pausa', - hierarchical: 'Pai-filho', - parentMaxTokens: 'Pai', - childMaxTokens: 'Criança', - waiting: 'Aguarde a incorporação...', - }, - segment: { - paragraphs: 'Parágrafos', - keywords: 'Palavras-chave', - addKeyWord: 'Adicionar palavra-chave', - keywordError: 'O comprimento máximo da palavra-chave é 20', - hitCount: 'Contagem de recuperação', - vectorHash: 'Hash do vetor: ', - questionPlaceholder: 'adicionar pergunta aqui', - questionEmpty: 'A pergunta não pode estar vazia', - answerPlaceholder: 'adicionar resposta aqui', - answerEmpty: 'A resposta não pode estar vazia', - contentPlaceholder: 'adicionar conteúdo aqui', - contentEmpty: 'O conteúdo não pode estar vazio', - newTextSegment: 'Novo fragmento de texto', - newQaSegment: 'Novo fragmento de P&R', - delete: 'Excluir este fragmento?', - chunks_other: 'PEDAÇOS', - parentChunks_other: 'PARTES PAI', - childChunks_one: 'PEDAÇO FILHO', - searchResults_zero: 'RESULTADO', - searchResults_one: 'RESULTADO', - searchResults_other: 'RESULTADOS', - empty: 'Nenhum pedaço encontrado', - chunk: 'Pedaço', - newChunk: 'Novo pedaço', - childChunk: 'Pedaço filho', - characters_other: 'Caracteres', - addChunk: 'Adicionar pedaço', - addChildChunk: 'Adicionar pedaço filho', - addAnother: 'Adicionar outro', - editChunk: 'Editar Chunk', - editParentChunk: 'Editar parte pai', - editChildChunk: 'Editar parte filho', - regenerationConfirmTitle: 'Deseja regenerar partes filhas?', - regeneratingTitle: 'Regenerando partes filhas', - regeneratingMessage: 'Isso pode demorar um pouco, por favor aguarde...', - edited: 'EDIÇÃO', - editedAt: 'Editado em', - dateTimeFormat: 'DD/MM/YYYY HH:mm', - expandChunks: 'Expandir pedaços', - collapseChunks: 'Recolher partes', - regenerationConfirmMessage: 'A regeneração de partes filhas substituirá as partes filhas atuais, incluindo partes editadas e partes recém-adicionadas. A regeneração não pode ser desfeita.', - parentChunks_one: 'PEDAÇO PAI', - regenerationSuccessMessage: 'Você pode fechar esta janela.', - chunks_one: 'PEDAÇO', - childChunkAdded: '1 pedaço filho adicionado', - clearFilter: 'Limpar filtro', - regenerationSuccessTitle: 'Regeneração concluída', - chunkDetail: 'Detalhe do pedaço', - childChunks_other: 'PEDAÇOS FILHOS', - chunkAdded: '1 pedaço adicionado', - newChildChunk: 'Novo pedaço filho', - characters_one: 'personagem', - parentChunk: 'Pedaço pai', - keywordEmpty: 'A palavra-chave não pode estar vazia', - keywordDuplicate: 'A palavra-chave já existe', - allFilesUploaded: 'Todos os arquivos devem ser enviados antes de salvar', - }, -} - -export default translation diff --git a/web/i18n/pt-BR/dataset-hit-testing.json b/web/i18n/pt-BR/dataset-hit-testing.json new file mode 100644 index 0000000000..e1cbaaa7ac --- /dev/null +++ b/web/i18n/pt-BR/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "Teste de Recuperação", + "desc": "Teste o efeito de recuperação do conhecimento com base no texto de consulta fornecido.", + "dateTimeFormat": "MM/DD/YYYY hh:mm A", + "table": { + "header": { + "source": "Origem", + "time": "Hora", + "queryContent": "Conteúdo da Consulta" + } + }, + "input": { + "title": "Texto de origem", + "placeholder": "Digite um texto, uma frase declarativa curta é recomendada.", + "countWarning": "Até 200 caracteres.", + "indexWarning": "Somente conhecimento de alta qualidade.", + "testing": "Testando" + }, + "hit": { + "title": "PARÁGRAFOS DE RECUPERAÇÃO", + "emptyTip": "Os resultados do teste de recuperação serão exibidos aqui" + }, + "noRecentTip": "Nenhum resultado de consulta recente aqui", + "viewChart": "Ver GRÁFICO DE VETORES", + "viewDetail": "Ver detalhes", + "settingTitle": "Configuração de recuperação", + "records": "Arquivo", + "hitChunks": "Hit {{num}} pedaços filhos", + "open": "Abrir", + "chunkDetail": "Detalhe do pedaço", + "keyword": "Palavras-chave", + "imageUploader": { + "tip": "Carregar ou soltar imagens (Máx. {{batchCount}}, {{size}}MB cada)", + "tooltip": "Carregar imagens (Máx. {{batchCount}}, {{size}}MB cada)", + "dropZoneTip": "Arraste o arquivo aqui para enviar", + "singleChunkAttachmentLimitTooltip": "O número de anexos de um único bloco não pode exceder {{limit}}" + } +} diff --git a/web/i18n/pt-BR/dataset-hit-testing.ts b/web/i18n/pt-BR/dataset-hit-testing.ts deleted file mode 100644 index cf1962ed44..0000000000 --- a/web/i18n/pt-BR/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - title: 'Teste de Recuperação', - desc: 'Teste o efeito de recuperação do conhecimento com base no texto de consulta fornecido.', - dateTimeFormat: 'MM/DD/YYYY hh:mm A', - table: { - header: { - source: 'Origem', - time: 'Hora', - queryContent: 'Conteúdo da Consulta', - }, - }, - input: { - title: 'Texto de origem', - placeholder: 'Digite um texto, uma frase declarativa curta é recomendada.', - countWarning: 'Até 200 caracteres.', - indexWarning: 'Somente conhecimento de alta qualidade.', - testing: 'Testando', - }, - hit: { - title: 'PARÁGRAFOS DE RECUPERAÇÃO', - emptyTip: 'Os resultados do teste de recuperação serão exibidos aqui', - }, - noRecentTip: 'Nenhum resultado de consulta recente aqui', - viewChart: 'Ver GRÁFICO DE VETORES', - viewDetail: 'Ver detalhes', - settingTitle: 'Configuração de recuperação', - records: 'Arquivo', - hitChunks: 'Hit {{num}} pedaços filhos', - open: 'Abrir', - chunkDetail: 'Detalhe do pedaço', - keyword: 'Palavras-chave', - imageUploader: { - tip: 'Carregar ou soltar imagens (Máx. {{batchCount}}, {{size}}MB cada)', - tooltip: 'Carregar imagens (Máx. {{batchCount}}, {{size}}MB cada)', - dropZoneTip: 'Arraste o arquivo aqui para enviar', - singleChunkAttachmentLimitTooltip: 'O número de anexos de um único bloco não pode exceder {{limit}}', - }, -} - -export default translation diff --git a/web/i18n/pt-BR/dataset-pipeline.json b/web/i18n/pt-BR/dataset-pipeline.json new file mode 100644 index 0000000000..51d28ed9ee --- /dev/null +++ b/web/i18n/pt-BR/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "createFromScratch": { + "title": "Pipeline de conhecimento em branco", + "description": "Crie um pipeline personalizado do zero com controle total sobre o processamento e a estrutura de dados." + }, + "backToKnowledge": "Voltar ao Conhecimento", + "successTip": "Criou com sucesso uma Base de Dados de Conhecimento", + "createKnowledge": "Criar conhecimento", + "errorTip": "Falha ao criar uma base de dados de conhecimento", + "importDSL": "Importar de um arquivo DSL", + "caution": "Cuidado" + }, + "templates": { + "customized": "Personalizado" + }, + "operations": { + "process": "Processo", + "details": "Detalhes", + "preview": "Visualizar", + "convert": "Converter", + "exportPipeline": "Pipeline de exportação", + "useTemplate": "Usar este Pipeline de Conhecimento", + "editInfo": "Editar informações", + "choose": "Escolher", + "saveAndProcess": "Salvar & Processar", + "dataSource": "Fonte de dados", + "backToDataSource": "Voltar para a fonte de dados" + }, + "deletePipeline": { + "title": "Tem certeza de que deseja excluir este modelo de pipeline?", + "content": "A exclusão do modelo de pipeline é irreversível." + }, + "publishPipeline": { + "success": { + "message": "Pipeline de conhecimento publicado", + "tip": "Vá para Documentos para adicionar ou gerenciar documentos." + }, + "error": { + "message": "Falha ao publicar o pipeline de conhecimento" + } + }, + "publishTemplate": { + "success": { + "learnMore": "Saiba Mais", + "message": "Modelo de pipeline publicado", + "tip": "Você pode usar este modelo na página de criação." + }, + "error": { + "message": "Falha ao publicar o modelo de pipeline" + } + }, + "exportDSL": { + "errorTip": "Falha ao exportar DSL de pipeline", + "successTip": "Exportar DSL de pipeline com êxito" + }, + "details": { + "structure": "Estrutura", + "structureTooltip": "A Estrutura de Partes determina como os documentos são divididos e indexados, oferecendo os modos Geral, Pai-Filho e P e Resposta, e é exclusiva para cada base de conhecimento.", + "createdBy": "Por {{author}}" + }, + "testRun": { + "steps": { + "dataSource": "Fonte de dados", + "documentProcessing": "Processamento de documentos" + }, + "dataSource": { + "localFiles": "Arquivos locais" + }, + "notion": { + "title": "Escolher páginas do Notion", + "docTitle": "Documentos do Notion" + }, + "title": "Execução de teste", + "tooltip": "No modo de execução de teste, apenas um documento pode ser importado por vez para facilitar a depuração e a observação." + }, + "inputFieldPanel": { + "uniqueInputs": { + "title": "Entradas exclusivas para cada entrada", + "tooltip": "As entradas exclusivas só podem ser acessadas pela fonte de dados selecionada e seus nós downstream. Os usuários não precisarão preenchê-lo ao escolher outras fontes de dados. Somente os campos de entrada referenciados por variáveis de fonte de dados aparecerão na primeira etapa (Fonte de dados). Todos os outros campos serão mostrados na segunda etapa (Processar documentos)." + }, + "globalInputs": { + "title": "Entradas globais para todas as entradas", + "tooltip": "As entradas globais são compartilhadas entre todos os nós. Os usuários precisarão preenchê-los ao selecionar qualquer fonte de dados. Por exemplo, campos como delimitador e comprimento máximo do bloco podem ser aplicados uniformemente em várias fontes de dados. Somente os campos de entrada referenciados por variáveis de fonte de dados aparecem na primeira etapa (fonte de dados). Todos os outros campos aparecem na segunda etapa (Processar documentos)." + }, + "preview": { + "stepTwoTitle": "Documentos de processo", + "stepOneTitle": "Fonte de dados" + }, + "error": { + "variableDuplicate": "O nome da variável já existe. Por favor, escolha um nome diferente." + }, + "addInputField": "Adicionar campo de entrada", + "editInputField": "Editar campo de entrada", + "title": "Campos de entrada do usuário", + "description": "Os campos de entrada do usuário são usados para definir e coletar variáveis necessárias durante o processo de execução do pipeline. Os usuários podem personalizar o tipo de campo e configurar de forma flexível o valor de entrada para atender às necessidades de diferentes fontes de dados ou etapas de processamento de documentos." + }, + "addDocuments": { + "steps": { + "processDocuments": "Documentos de processo", + "processingDocuments": "Processamento de documentos", + "chooseDatasource": "Escolher uma fonte de dados" + }, + "stepOne": { + "preview": "Visualizar" + }, + "stepTwo": { + "chunkSettings": "Configurações de partes", + "previewChunks": "Visualizar partes" + }, + "stepThree": { + "learnMore": "Saiba Mais" + }, + "characters": "Caracteres", + "title": "Adicionar documentos", + "backToDataSource": "Fonte de dados", + "selectOnlineDocumentTip": "Processar até {{count}} páginas", + "selectOnlineDriveTip": "Processar até {{count}} arquivos, com no máximo {{fileSize}} MB cada" + }, + "documentSettings": { + "title": "Configurações do documento" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} páginas" + }, + "onlineDrive": { + "breadcrumbs": { + "searchPlaceholder": "Pesquisar arquivos...", + "allFiles": "Todos os arquivos", + "allBuckets": "Todos os buckets do Cloud Storage", + "searchResult": "Encontrar {{searchResultsLength}} itens na pasta \"{{folderName}}\"" + }, + "resetKeywords": "Redefinir palavras-chave", + "notSupportedFileType": "Este tipo de arquivo não é suportado", + "emptyFolder": "Esta pasta está vazia", + "emptySearchResult": "Nenhum item foi encontrado", + "notConnected": "{{name}} não está conectado", + "notConnectedTip": "Para sincronizar com {{name}}, a conexão com {{name}} deve ser estabelecida primeiro." + }, + "conversion": { + "confirm": { + "title": "Confirmação", + "content": "Esta ação é permanente. Você não poderá reverter para o método anterior. Por favor, confirme para converter." + }, + "errorMessage": "Falha ao converter o conjunto de dados em um pipeline", + "warning": "Esta ação não pode ser desfeita.", + "descriptionChunk2": "— uma abordagem mais aberta e flexível com acesso a plugins do nosso mercado. Isso aplicará o novo método de processamento a todos os documentos futuros.", + "successMessage": "Converteu com êxito o conjunto de dados em um pipeline", + "title": "Converter em pipeline de conhecimento", + "descriptionChunk1": "Agora você pode converter sua base de conhecimento existente para usar o Pipeline de Conhecimento para processamento de documentos" + }, + "knowledgeNameAndIconPlaceholder": "Insira o nome da Base de Conhecimento", + "knowledgeDescription": "Descrição do conhecimento", + "knowledgePermissions": "Permissões", + "pipelineNameAndIcon": "Nome e ícone do pipeline", + "inputField": "Campo de entrada", + "knowledgeNameAndIcon": "Nome e ícone do conhecimento", + "editPipelineInfo": "Editar informações do pipeline", + "knowledgeDescriptionPlaceholder": "Descreva o que está nesta Base de Conhecimento. Uma descrição detalhada permite que a IA acesse o conteúdo do conjunto de dados com mais precisão. Se estiver vazio, o Dify usará a estratégia de acerto padrão. (Opcional)", + "configurationTip": "Configure {{pluginName}}" +} diff --git a/web/i18n/pt-BR/dataset-pipeline.ts b/web/i18n/pt-BR/dataset-pipeline.ts deleted file mode 100644 index c3b737644a..0000000000 --- a/web/i18n/pt-BR/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - createFromScratch: { - title: 'Pipeline de conhecimento em branco', - description: 'Crie um pipeline personalizado do zero com controle total sobre o processamento e a estrutura de dados.', - }, - backToKnowledge: 'Voltar ao Conhecimento', - successTip: 'Criou com sucesso uma Base de Dados de Conhecimento', - createKnowledge: 'Criar conhecimento', - errorTip: 'Falha ao criar uma base de dados de conhecimento', - importDSL: 'Importar de um arquivo DSL', - caution: 'Cuidado', - }, - templates: { - customized: 'Personalizado', - }, - operations: { - process: 'Processo', - details: 'Detalhes', - preview: 'Visualizar', - convert: 'Converter', - exportPipeline: 'Pipeline de exportação', - useTemplate: 'Usar este Pipeline de Conhecimento', - editInfo: 'Editar informações', - choose: 'Escolher', - saveAndProcess: 'Salvar & Processar', - dataSource: 'Fonte de dados', - backToDataSource: 'Voltar para a fonte de dados', - }, - deletePipeline: { - title: 'Tem certeza de que deseja excluir este modelo de pipeline?', - content: 'A exclusão do modelo de pipeline é irreversível.', - }, - publishPipeline: { - success: { - message: 'Pipeline de conhecimento publicado', - tip: 'Vá para Documentos para adicionar ou gerenciar documentos.', - }, - error: { - message: 'Falha ao publicar o pipeline de conhecimento', - }, - }, - publishTemplate: { - success: { - learnMore: 'Saiba Mais', - message: 'Modelo de pipeline publicado', - tip: 'Você pode usar este modelo na página de criação.', - }, - error: { - message: 'Falha ao publicar o modelo de pipeline', - }, - }, - exportDSL: { - errorTip: 'Falha ao exportar DSL de pipeline', - successTip: 'Exportar DSL de pipeline com êxito', - }, - details: { - structure: 'Estrutura', - structureTooltip: 'A Estrutura de Partes determina como os documentos são divididos e indexados, oferecendo os modos Geral, Pai-Filho e P e Resposta, e é exclusiva para cada base de conhecimento.', - createdBy: 'Por {{author}}', - }, - testRun: { - steps: { - dataSource: 'Fonte de dados', - documentProcessing: 'Processamento de documentos', - }, - dataSource: { - localFiles: 'Arquivos locais', - }, - notion: { - title: 'Escolher páginas do Notion', - docTitle: 'Documentos do Notion', - }, - title: 'Execução de teste', - tooltip: 'No modo de execução de teste, apenas um documento pode ser importado por vez para facilitar a depuração e a observação.', - }, - inputFieldPanel: { - uniqueInputs: { - title: 'Entradas exclusivas para cada entrada', - tooltip: 'As entradas exclusivas só podem ser acessadas pela fonte de dados selecionada e seus nós downstream. Os usuários não precisarão preenchê-lo ao escolher outras fontes de dados. Somente os campos de entrada referenciados por variáveis de fonte de dados aparecerão na primeira etapa (Fonte de dados). Todos os outros campos serão mostrados na segunda etapa (Processar documentos).', - }, - globalInputs: { - title: 'Entradas globais para todas as entradas', - tooltip: 'As entradas globais são compartilhadas entre todos os nós. Os usuários precisarão preenchê-los ao selecionar qualquer fonte de dados. Por exemplo, campos como delimitador e comprimento máximo do bloco podem ser aplicados uniformemente em várias fontes de dados. Somente os campos de entrada referenciados por variáveis de fonte de dados aparecem na primeira etapa (fonte de dados). Todos os outros campos aparecem na segunda etapa (Processar documentos).', - }, - preview: { - stepTwoTitle: 'Documentos de processo', - stepOneTitle: 'Fonte de dados', - }, - error: { - variableDuplicate: 'O nome da variável já existe. Por favor, escolha um nome diferente.', - }, - addInputField: 'Adicionar campo de entrada', - editInputField: 'Editar campo de entrada', - title: 'Campos de entrada do usuário', - description: 'Os campos de entrada do usuário são usados para definir e coletar variáveis necessárias durante o processo de execução do pipeline. Os usuários podem personalizar o tipo de campo e configurar de forma flexível o valor de entrada para atender às necessidades de diferentes fontes de dados ou etapas de processamento de documentos.', - }, - addDocuments: { - steps: { - processDocuments: 'Documentos de processo', - processingDocuments: 'Processamento de documentos', - chooseDatasource: 'Escolher uma fonte de dados', - }, - stepOne: { - preview: 'Visualizar', - }, - stepTwo: { - chunkSettings: 'Configurações de partes', - previewChunks: 'Visualizar partes', - }, - stepThree: { - learnMore: 'Saiba Mais', - }, - characters: 'Caracteres', - title: 'Adicionar documentos', - backToDataSource: 'Fonte de dados', - selectOnlineDocumentTip: 'Processar até {{count}} páginas', - selectOnlineDriveTip: 'Processar até {{count}} arquivos, com no máximo {{fileSize}} MB cada', - }, - documentSettings: { - title: 'Configurações do documento', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} páginas', - }, - onlineDrive: { - breadcrumbs: { - searchPlaceholder: 'Pesquisar arquivos...', - allFiles: 'Todos os arquivos', - allBuckets: 'Todos os buckets do Cloud Storage', - searchResult: 'Encontrar {{searchResultsLength}} itens na pasta "{{folderName}}"', - }, - resetKeywords: 'Redefinir palavras-chave', - notSupportedFileType: 'Este tipo de arquivo não é suportado', - emptyFolder: 'Esta pasta está vazia', - emptySearchResult: 'Nenhum item foi encontrado', - notConnected: '{{name}} não está conectado', - notConnectedTip: 'Para sincronizar com {{name}}, a conexão com {{name}} deve ser estabelecida primeiro.', - }, - conversion: { - confirm: { - title: 'Confirmação', - content: 'Esta ação é permanente. Você não poderá reverter para o método anterior. Por favor, confirme para converter.', - }, - errorMessage: 'Falha ao converter o conjunto de dados em um pipeline', - warning: 'Esta ação não pode ser desfeita.', - descriptionChunk2: '— uma abordagem mais aberta e flexível com acesso a plugins do nosso mercado. Isso aplicará o novo método de processamento a todos os documentos futuros.', - successMessage: 'Converteu com êxito o conjunto de dados em um pipeline', - title: 'Converter em pipeline de conhecimento', - descriptionChunk1: 'Agora você pode converter sua base de conhecimento existente para usar o Pipeline de Conhecimento para processamento de documentos', - }, - knowledgeNameAndIconPlaceholder: 'Insira o nome da Base de Conhecimento', - knowledgeDescription: 'Descrição do conhecimento', - knowledgePermissions: 'Permissões', - pipelineNameAndIcon: 'Nome e ícone do pipeline', - inputField: 'Campo de entrada', - knowledgeNameAndIcon: 'Nome e ícone do conhecimento', - editPipelineInfo: 'Editar informações do pipeline', - knowledgeDescriptionPlaceholder: 'Descreva o que está nesta Base de Conhecimento. Uma descrição detalhada permite que a IA acesse o conteúdo do conjunto de dados com mais precisão. Se estiver vazio, o Dify usará a estratégia de acerto padrão. (Opcional)', - configurationTip: 'Configure {{pluginName}}', -} - -export default translation diff --git a/web/i18n/pt-BR/dataset-settings.json b/web/i18n/pt-BR/dataset-settings.json new file mode 100644 index 0000000000..66b6260f5f --- /dev/null +++ b/web/i18n/pt-BR/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "Configurações do conhecimento", + "desc": "Aqui você pode modificar as propriedades e métodos de trabalho do conhecimento.", + "form": { + "name": "Nome do conhecimento", + "namePlaceholder": "Por favor, insira o nome do conhecimento", + "nameError": "O nome não pode estar vazio", + "desc": "Descrição do conhecimento", + "descInfo": "Por favor, escreva uma descrição textual clara para delinear o conteúdo do conhecimento. Esta descrição será usada como base para a correspondência ao selecionar entre vários conhecimentos para inferência.", + "descPlaceholder": "Descreva o que está neste conhecimento. Uma descrição detalhada permite que a IA acesse o conteúdo do conhecimento de forma oportuna. Se estiver vazio, o Dify usará a estratégia de correspondência padrão.", + "descWrite": "Aprenda como escrever uma boa descrição do conhecimento.", + "permissions": "Permissões", + "permissionsOnlyMe": "Apenas eu", + "permissionsAllMember": "Todos os membros da equipe", + "indexMethod": "Método de indexação", + "indexMethodHighQuality": "Alta qualidade", + "indexMethodHighQualityTip": "Invocar o modelo de Embedding para processamento para fornecer maior precisão nas consultas dos usuários.", + "indexMethodEconomy": "Econômico", + "indexMethodEconomyTip": "Use motores de vetor offline, índices de palavras-chave, etc. para reduzir a precisão sem gastar tokens.", + "embeddingModel": "Modelo de incorporação", + "embeddingModelTip": "Altere o modelo incorporado, por favor, vá para ", + "embeddingModelTipLink": "Configurações", + "retrievalSetting": { + "title": "Configuração de recuperação", + "learnMore": "Saiba mais", + "description": " sobre o método de recuperação.", + "longDescription": " sobre o método de recuperação, você pode alterar isso a qualquer momento nas configurações do conhecimento.", + "method": "Método de Recuperação", + "multiModalTip": "Quando o modelo de incorporação suportar multimodal, por favor selecione um modelo de reclassificação multimodal para melhor desempenho." + }, + "save": "Salvar", + "permissionsInvitedMembers": "Membros parciais da equipe", + "me": "(Você)", + "retrievalSettings": "Configurações de recuperação", + "externalKnowledgeID": "ID de conhecimento externo", + "externalKnowledgeAPI": "API de conhecimento externo", + "indexMethodChangeToEconomyDisabledTip": "Não disponível para rebaixamento de HQ para ECO", + "helpText": "Aprenda a escrever uma boa descrição do conjunto de dados.", + "upgradeHighQualityTip": "Depois de atualizar para o modo de alta qualidade, reverter para o modo econômico não está disponível", + "searchModel": "Pesquisar modelo", + "chunkStructure": { + "description": "sobre a estrutura do pedaço.", + "learnMore": "Saiba Mais", + "title": "Estrutura de Chunk" + }, + "numberOfKeywords": "Número de palavras-chave", + "onSearchResults": "Nenhum membro corresponde à sua consulta de pesquisa.\nTente sua pesquisa novamente.", + "nameAndIcon": "Nome & Ícone" + } +} diff --git a/web/i18n/pt-BR/dataset-settings.ts b/web/i18n/pt-BR/dataset-settings.ts deleted file mode 100644 index 66234210fa..0000000000 --- a/web/i18n/pt-BR/dataset-settings.ts +++ /dev/null @@ -1,52 +0,0 @@ -const translation = { - title: 'Configurações do conhecimento', - desc: 'Aqui você pode modificar as propriedades e métodos de trabalho do conhecimento.', - form: { - name: 'Nome do conhecimento', - namePlaceholder: 'Por favor, insira o nome do conhecimento', - nameError: 'O nome não pode estar vazio', - desc: 'Descrição do conhecimento', - descInfo: 'Por favor, escreva uma descrição textual clara para delinear o conteúdo do conhecimento. Esta descrição será usada como base para a correspondência ao selecionar entre vários conhecimentos para inferência.', - descPlaceholder: 'Descreva o que está neste conhecimento. Uma descrição detalhada permite que a IA acesse o conteúdo do conhecimento de forma oportuna. Se estiver vazio, o Dify usará a estratégia de correspondência padrão.', - descWrite: 'Aprenda como escrever uma boa descrição do conhecimento.', - permissions: 'Permissões', - permissionsOnlyMe: 'Apenas eu', - permissionsAllMember: 'Todos os membros da equipe', - indexMethod: 'Método de indexação', - indexMethodHighQuality: 'Alta qualidade', - indexMethodHighQualityTip: 'Invocar o modelo de Embedding para processamento para fornecer maior precisão nas consultas dos usuários.', - indexMethodEconomy: 'Econômico', - indexMethodEconomyTip: 'Use motores de vetor offline, índices de palavras-chave, etc. para reduzir a precisão sem gastar tokens.', - embeddingModel: 'Modelo de incorporação', - embeddingModelTip: 'Altere o modelo incorporado, por favor, vá para ', - embeddingModelTipLink: 'Configurações', - retrievalSetting: { - title: 'Configuração de recuperação', - learnMore: 'Saiba mais', - description: ' sobre o método de recuperação.', - longDescription: ' sobre o método de recuperação, você pode alterar isso a qualquer momento nas configurações do conhecimento.', - method: 'Método de Recuperação', - multiModalTip: 'Quando o modelo de incorporação suportar multimodal, por favor selecione um modelo de reclassificação multimodal para melhor desempenho.', - }, - save: 'Salvar', - permissionsInvitedMembers: 'Membros parciais da equipe', - me: '(Você)', - retrievalSettings: 'Configurações de recuperação', - externalKnowledgeID: 'ID de conhecimento externo', - externalKnowledgeAPI: 'API de conhecimento externo', - indexMethodChangeToEconomyDisabledTip: 'Não disponível para rebaixamento de HQ para ECO', - helpText: 'Aprenda a escrever uma boa descrição do conjunto de dados.', - upgradeHighQualityTip: 'Depois de atualizar para o modo de alta qualidade, reverter para o modo econômico não está disponível', - searchModel: 'Pesquisar modelo', - chunkStructure: { - description: 'sobre a estrutura do pedaço.', - learnMore: 'Saiba Mais', - title: 'Estrutura de Chunk', - }, - numberOfKeywords: 'Número de palavras-chave', - onSearchResults: 'Nenhum membro corresponde à sua consulta de pesquisa.\nTente sua pesquisa novamente.', - nameAndIcon: 'Nome & Ícone', - }, -} - -export default translation diff --git a/web/i18n/pt-BR/dataset.json b/web/i18n/pt-BR/dataset.json new file mode 100644 index 0000000000..f33019a1c2 --- /dev/null +++ b/web/i18n/pt-BR/dataset.json @@ -0,0 +1,249 @@ +{ + "knowledge": "Wiedza", + "documentCount": " documentos", + "wordCount": " k palavras", + "appCount": " aplicativos vinculados", + "createDataset": "Criar Conhecimento", + "createDatasetIntro": "Importe seus próprios dados de texto ou escreva dados em tempo real via Webhook para aprimoramento de contexto LLM.", + "deleteDatasetConfirmTitle": "Excluir este Conhecimento?", + "deleteDatasetConfirmContent": "A exclusão do Conhecimento é irreversível. Os usuários não poderão mais acessar seu Conhecimento e todas as configurações e registros de prompt serão excluídos permanentemente.", + "datasetUsedByApp": "O conhecimento está sendo usado por alguns aplicativos. Os aplicativos não poderão mais usar esse Conhecimento, e todas as configurações de prompt e logs serão excluídos permanentemente.", + "datasetDeleted": "Conhecimento excluído", + "datasetDeleteFailed": "Falha ao excluir o Conhecimento", + "didYouKnow": "Você sabia?", + "intro1": "O Conhecimento pode ser integrado ao aplicativo Dify ", + "intro2": "como um contexto", + "intro3": ",", + "intro4": "ou pode ser criado", + "intro5": " como um plug-in de índice ChatGPT independente para publicação", + "unavailable": "Indisponível", + "datasets": "CONHECIMENTO", + "datasetsApi": "API", + "retrieval": { + "semantic_search": { + "title": "Pesquisa Vetorial", + "description": "Gere incorporações de consulta e pesquise o trecho de texto mais semelhante à sua representação vetorial." + }, + "full_text_search": { + "title": "Pesquisa de Texto Completo", + "description": "Indexe todos os termos no documento, permitindo que os usuários pesquisem qualquer termo e recuperem trechos de texto relevantes contendo esses termos." + }, + "hybrid_search": { + "title": "Pesquisa Híbrida", + "description": "Execute pesquisas de texto completo e pesquisas vetoriais simultaneamente, reclassifique para selecionar a melhor correspondência para a consulta do usuário. A configuração da API do modelo de reclassificação é necessária.", + "recommend": "Recomendar" + }, + "invertedIndex": {}, + "change": "Alterar", + "changeRetrievalMethod": "Alterar método de recuperação", + "keyword_search": { + "title": "Índice invertido", + "description": "O Índice Invertido é uma estrutura usada para recuperação eficiente. Organizado por termos, cada termo aponta para documentos ou páginas da web que o contêm." + } + }, + "docsFailedNotice": "documentos falharam ao serem indexados", + "retry": "Tentar novamente", + "indexingTechnique": { + "high_quality": "AQ", + "economy": "ECO" + }, + "indexingMethod": { + "semantic_search": "VETOR", + "full_text_search": "TEXTO COMPLETO", + "hybrid_search": "HÍBRIDO", + "invertedIndex": "INVERTIDO" + }, + "mixtureHighQualityAndEconomicTip": "O modelo de reclassificação é necessário para a mistura de bases de conhecimento de alta qualidade e econômicas.", + "inconsistentEmbeddingModelTip": "O modelo de reclassificação é necessário se os modelos de incorporação das bases de conhecimento selecionadas forem inconsistentes.", + "retrievalSettings": "Configurações de Recuperação", + "rerankSettings": "Configurações de Reclassificação", + "weightedScore": { + "title": "Pontuação Ponderada", + "description": "Ao ajustar os pesos atribuídos, esta estratégia de reclassificação determina se deve priorizar a correspondência semântica ou por palavras-chave.", + "semanticFirst": "Semântica primeiro", + "keywordFirst": "Palavra-chave primeiro", + "customized": "Personalizado", + "semantic": "Semântico", + "keyword": "Palavra-chave" + }, + "nTo1RetrievalLegacy": "A recuperação N-para-1 será oficialmente descontinuada a partir de setembro. Recomenda-se usar a recuperação de múltiplos caminhos mais recente para obter melhores resultados.", + "nTo1RetrievalLegacyLink": "Saiba mais", + "nTo1RetrievalLegacyLinkText": "A recuperação N-para-1 será oficialmente descontinuada em setembro.", + "intro6": "como um plug-in de índice ChatGPT autônomo para publicar", + "defaultRetrievalTip": "A recuperação de vários caminhos é usada por padrão. O conhecimento é recuperado de várias bases de dados de conhecimento e, em seguida, reclassificado.", + "editExternalAPIConfirmWarningContent": { + "front": "Esta API de conhecimento externo está vinculada a", + "end": "conhecimento externo, e essa modificação será aplicada a todos eles. Tem certeza de que deseja salvar essa alteração?" + }, + "editExternalAPIFormWarning": { + "end": "Conhecimento externo", + "front": "Esta API externa está vinculada a" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "front": "Excluir", + "end": "?" + }, + "content": { + "end": "conhecimento externo. A exclusão dessa API invalidará todos eles. Tem certeza de que deseja excluir esta API?", + "front": "Esta API de conhecimento externo está vinculada a" + }, + "noConnectionContent": "Tem certeza de que deseja excluir essa API?" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "Escolher uma API de conhecimento externa" + }, + "connectDatasetIntro": { + "content": { + "front": "Para se conectar a uma base de dados de conhecimento externa, você precisa primeiro criar uma API externa. Por favor, leia com atenção e consulte", + "link": "Saiba como criar uma API externa", + "end": ". Em seguida, encontre o ID de conhecimento correspondente e preencha-o no formulário à esquerda. Se todas as informações estiverem corretas, ele pulará automaticamente para o teste de recuperação na base de conhecimento depois de clicar no botão conectar." + }, + "learnMore": "Saiba Mais", + "title": "Como se conectar a uma base de conhecimento externa" + }, + "connectHelper": { + "helper3": ". Recomendamos fortemente que você", + "helper5": "cuidadosamente antes de usar esse recurso.", + "helper2": "apenas a funcionalidade de recuperação é suportada", + "helper4": "Leia a documentação de ajuda", + "helper1": "Conecte-se a bases de conhecimento externas por meio da API e do ID da base de conhecimento. Atualmente," + }, + "externalKnowledgeForm": { + "cancel": "Cancelar", + "connect": "Ligar" + }, + "externalAPIForm": { + "encrypted": { + "front": "Seu token de API será criptografado e armazenado usando", + "end": "Tecnologia." + }, + "name": "Nome", + "apiKey": "Chave de API", + "cancel": "Cancelar", + "save": "Salvar", + "edit": "Editar", + "endpoint": "API Endpoint" + }, + "externalAPI": "API externa", + "editExternalAPITooltipTitle": "CONHECIMENTO VINCULADO", + "noExternalKnowledge": "Ainda não existe uma API de conhecimento externo, clique aqui para criar", + "externalAPIPanelDescription": "A API de conhecimento externo é usada para se conectar a uma base de conhecimento fora do Dify e recuperar o conhecimento dessa base de conhecimento.", + "externalKnowledgeIdPlaceholder": "Insira o ID de conhecimento", + "externalKnowledgeDescriptionPlaceholder": "Descreva o que há nesta Base de Dados de Conhecimento (opcional)", + "connectDataset": "Conectar-se a uma base de conhecimento externa", + "createNewExternalAPI": "Criar uma nova API de conhecimento externo", + "allExternalTip": "Ao usar apenas conhecimento externo, o usuário pode escolher se deseja habilitar o modelo de reclassificação. Se não estiver ativado, os blocos recuperados serão classificados com base nas pontuações. Quando as estratégias de recuperação de diferentes bases de conhecimento são inconsistentes, elas serão imprecisas.", + "externalTag": "Externo", + "externalKnowledgeName": "Nome do Conhecimento Externo", + "externalKnowledgeId": "ID de conhecimento externo", + "externalAPIPanelTitle": "API de conhecimento externo", + "externalKnowledgeNamePlaceholder": "Insira o nome da base de conhecimento", + "createExternalAPI": "Adicionar uma API de conhecimento externo", + "editExternalAPIFormTitle": "Editar a API de conhecimento externo", + "mixtureInternalAndExternalTip": "O modelo de Reclassificação é necessário para a mistura de conhecimento interno e externo.", + "learnHowToWriteGoodKnowledgeDescription": "Aprenda a escrever uma boa descrição de conhecimento", + "externalAPIPanelDocumentation": "Saiba como criar uma API de conhecimento externo", + "externalKnowledgeDescription": "Descrição do Conhecimento", + "chunkingMode": { + "parentChild": "Pai-filho", + "general": "Geral", + "graph": "Gráfico", + "qa": "Perguntas e respostas" + }, + "parentMode": { + "fullDoc": "Documento completo", + "paragraph": "Parágrafo" + }, + "batchAction": { + "selected": "Selecionado", + "delete": "Excluir", + "enable": "Habilitar", + "archive": "Arquivo", + "disable": "Desabilitar", + "cancel": "Cancelar" + }, + "documentsDisabled": "{{num}} documentos desativados - inativos por mais de 30 dias", + "enable": "Habilitar", + "preprocessDocument": "{{num}} Documentos de pré-processamento", + "localDocs": "Documentos locais", + "allKnowledgeDescription": "Selecione para exibir todo o conhecimento neste espaço de trabalho. Somente o proprietário do espaço de trabalho pode gerenciar todo o conhecimento.", + "allKnowledge": "Todo o conhecimento", + "metadata": { + "createMetadata": { + "name": "Nome", + "title": "Nova Metadata", + "type": "Tipo", + "namePlaceholder": "Adicionar nome de metadados", + "back": "Voltar" + }, + "checkName": { + "empty": "O nome dos metadados não pode estar vazio", + "invalid": "O nome de metadata só pode conter letras minúsculas, números e sublinhados e deve começar com uma letra minúscula.", + "tooLong": "O nome dos metadados não pode exceder {{max}} caracteres." + }, + "batchEditMetadata": { + "editDocumentsNum": "Editando {{num}} documentos", + "applyToAllSelectDocument": "Aplicar a todos os documentos selecionados", + "editMetadata": "Editar Metadados", + "multipleValue": "Múltiplos Valores", + "applyToAllSelectDocumentTip": "Crie automaticamente todos os metadados editados e novos mencionados acima para todos os documentos selecionados, caso contrário, a edição de metadados só se aplicará aos documentos que já os possuem." + }, + "selectMetadata": { + "manageAction": "Gerenciar", + "search": "Pesquisar metadados", + "newAction": "Nova Metadados" + }, + "datasetMetadata": { + "addMetaData": "Adicionar Metadados", + "namePlaceholder": "Nome da metadata", + "description": "Você pode gerenciar todos os metadados neste conhecimento aqui. As modificações serão sincronizadas em todos os documentos.", + "deleteTitle": "Confirme para deletar", + "deleteContent": "Você tem certeza de que deseja excluir os metadados \"{{name}}\"?", + "name": "Nome", + "builtInDescription": "Os metadados incorporados são extraídos e gerados automaticamente. Eles devem ser ativados antes do uso e não podem ser editados.", + "disabled": "Desativado", + "builtIn": "Integrado", + "rename": "Renomear", + "values": "{{num}} Valores" + }, + "documentMetadata": { + "metadataToolTip": "Os metadados servem como um filtro crítico que aprimora a precisão e a relevância da recuperação de informações. Você pode modificar e adicionar metadados para este documento aqui.", + "technicalParameters": "Parâmetros Técnicos", + "documentInformation": "Informações do Documento", + "startLabeling": "Comece a rotular" + }, + "addMetadata": "Adicionar Metadados", + "chooseTime": "Escolha um horário...", + "metadata": "Metadados" + }, + "embeddingModelNotAvailable": "O modelo de incorporação não está disponível.", + "updated": "Atualizado", + "externalKnowledgeBase": "Base de conhecimento externa", + "createFromPipeline": "Criar a partir do pipeline de conhecimento", + "serviceApi": { + "card": { + "apiKey": "Chave de API", + "apiReference": "Referência da API", + "title": "API de serviço de backend", + "endpoint": "Endpoint da API de Serviço" + }, + "enabled": "Em serviço", + "title": "API de Serviço", + "disabled": "Desativado" + }, + "docAllEnabled_one": "{{count}} documento habilitado", + "docAllEnabled_other": "Todos os documentos {{count}} ativados", + "partialEnabled_one": "Total de {{count}} documentos, {{num}} disponíveis", + "partialEnabled_other": "Total de {{count}} documentos, {{num}} disponíveis", + "cornerLabel": { + "unavailable": "Indisponível", + "pipeline": "Pipeline" + }, + "multimodal": "Multimodal", + "imageUploader": { + "button": "Arraste e solte o arquivo ou pasta, ou", + "browse": "Navegar", + "tip": "{{supportTypes}} (Máx. {{batchCount}}, {{size}}MB cada)" + } +} diff --git a/web/i18n/pt-BR/dataset.ts b/web/i18n/pt-BR/dataset.ts deleted file mode 100644 index 941fc57b32..0000000000 --- a/web/i18n/pt-BR/dataset.ts +++ /dev/null @@ -1,253 +0,0 @@ -const translation = { - knowledge: 'Wiedza', - documentCount: ' documentos', - wordCount: ' k palavras', - appCount: ' aplicativos vinculados', - createDataset: 'Criar Conhecimento', - createDatasetIntro: 'Importe seus próprios dados de texto ou escreva dados em tempo real via Webhook para aprimoramento de contexto LLM.', - deleteDatasetConfirmTitle: 'Excluir este Conhecimento?', - deleteDatasetConfirmContent: - 'A exclusão do Conhecimento é irreversível. Os usuários não poderão mais acessar seu Conhecimento e todas as configurações e registros de prompt serão excluídos permanentemente.', - datasetUsedByApp: 'O conhecimento está sendo usado por alguns aplicativos. Os aplicativos não poderão mais usar esse Conhecimento, e todas as configurações de prompt e logs serão excluídos permanentemente.', - datasetDeleted: 'Conhecimento excluído', - datasetDeleteFailed: 'Falha ao excluir o Conhecimento', - didYouKnow: 'Você sabia?', - intro1: 'O Conhecimento pode ser integrado ao aplicativo Dify ', - intro2: 'como um contexto', - intro3: ',', - intro4: 'ou pode ser criado', - intro5: ' como um plug-in de índice ChatGPT independente para publicação', - unavailable: 'Indisponível', - datasets: 'CONHECIMENTO', - datasetsApi: 'API', - retrieval: { - semantic_search: { - title: 'Pesquisa Vetorial', - description: 'Gere incorporações de consulta e pesquise o trecho de texto mais semelhante à sua representação vetorial.', - }, - full_text_search: { - title: 'Pesquisa de Texto Completo', - description: 'Indexe todos os termos no documento, permitindo que os usuários pesquisem qualquer termo e recuperem trechos de texto relevantes contendo esses termos.', - }, - hybrid_search: { - title: 'Pesquisa Híbrida', - description: 'Execute pesquisas de texto completo e pesquisas vetoriais simultaneamente, reclassifique para selecionar a melhor correspondência para a consulta do usuário. A configuração da API do modelo de reclassificação é necessária.', - recommend: 'Recomendar', - }, - invertedIndex: { - }, - change: 'Alterar', - changeRetrievalMethod: 'Alterar método de recuperação', - keyword_search: { - title: 'Índice invertido', - description: 'O Índice Invertido é uma estrutura usada para recuperação eficiente. Organizado por termos, cada termo aponta para documentos ou páginas da web que o contêm.', - }, - }, - docsFailedNotice: 'documentos falharam ao serem indexados', - retry: 'Tentar novamente', - indexingTechnique: { - high_quality: 'AQ', - economy: 'ECO', - }, - indexingMethod: { - semantic_search: 'VETOR', - full_text_search: 'TEXTO COMPLETO', - hybrid_search: 'HÍBRIDO', - invertedIndex: 'INVERTIDO', - }, - mixtureHighQualityAndEconomicTip: 'O modelo de reclassificação é necessário para a mistura de bases de conhecimento de alta qualidade e econômicas.', - inconsistentEmbeddingModelTip: 'O modelo de reclassificação é necessário se os modelos de incorporação das bases de conhecimento selecionadas forem inconsistentes.', - retrievalSettings: 'Configurações de Recuperação', - rerankSettings: 'Configurações de Reclassificação', - weightedScore: { - title: 'Pontuação Ponderada', - description: 'Ao ajustar os pesos atribuídos, esta estratégia de reclassificação determina se deve priorizar a correspondência semântica ou por palavras-chave.', - semanticFirst: 'Semântica primeiro', - keywordFirst: 'Palavra-chave primeiro', - customized: 'Personalizado', - semantic: 'Semântico', - keyword: 'Palavra-chave', - }, - nTo1RetrievalLegacy: 'A recuperação N-para-1 será oficialmente descontinuada a partir de setembro. Recomenda-se usar a recuperação de múltiplos caminhos mais recente para obter melhores resultados.', - nTo1RetrievalLegacyLink: 'Saiba mais', - nTo1RetrievalLegacyLinkText: 'A recuperação N-para-1 será oficialmente descontinuada em setembro.', - intro6: 'como um plug-in de índice ChatGPT autônomo para publicar', - defaultRetrievalTip: 'A recuperação de vários caminhos é usada por padrão. O conhecimento é recuperado de várias bases de dados de conhecimento e, em seguida, reclassificado.', - editExternalAPIConfirmWarningContent: { - front: 'Esta API de conhecimento externo está vinculada a', - end: 'conhecimento externo, e essa modificação será aplicada a todos eles. Tem certeza de que deseja salvar essa alteração?', - }, - editExternalAPIFormWarning: { - end: 'Conhecimento externo', - front: 'Esta API externa está vinculada a', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - front: 'Excluir', - end: '?', - }, - content: { - end: 'conhecimento externo. A exclusão dessa API invalidará todos eles. Tem certeza de que deseja excluir esta API?', - front: 'Esta API de conhecimento externo está vinculada a', - }, - noConnectionContent: 'Tem certeza de que deseja excluir essa API?', - }, - selectExternalKnowledgeAPI: { - placeholder: 'Escolher uma API de conhecimento externa', - }, - connectDatasetIntro: { - content: { - front: 'Para se conectar a uma base de dados de conhecimento externa, você precisa primeiro criar uma API externa. Por favor, leia com atenção e consulte', - link: 'Saiba como criar uma API externa', - end: '. Em seguida, encontre o ID de conhecimento correspondente e preencha-o no formulário à esquerda. Se todas as informações estiverem corretas, ele pulará automaticamente para o teste de recuperação na base de conhecimento depois de clicar no botão conectar.', - }, - learnMore: 'Saiba Mais', - title: 'Como se conectar a uma base de conhecimento externa', - }, - connectHelper: { - helper3: '. Recomendamos fortemente que você', - helper5: 'cuidadosamente antes de usar esse recurso.', - helper2: 'apenas a funcionalidade de recuperação é suportada', - helper4: 'Leia a documentação de ajuda', - helper1: 'Conecte-se a bases de conhecimento externas por meio da API e do ID da base de conhecimento. Atualmente,', - }, - externalKnowledgeForm: { - cancel: 'Cancelar', - connect: 'Ligar', - }, - externalAPIForm: { - encrypted: { - front: 'Seu token de API será criptografado e armazenado usando', - end: 'Tecnologia.', - }, - name: 'Nome', - apiKey: 'Chave de API', - cancel: 'Cancelar', - save: 'Salvar', - edit: 'Editar', - endpoint: 'API Endpoint', - }, - externalAPI: 'API externa', - editExternalAPITooltipTitle: 'CONHECIMENTO VINCULADO', - noExternalKnowledge: 'Ainda não existe uma API de conhecimento externo, clique aqui para criar', - externalAPIPanelDescription: 'A API de conhecimento externo é usada para se conectar a uma base de conhecimento fora do Dify e recuperar o conhecimento dessa base de conhecimento.', - externalKnowledgeIdPlaceholder: 'Insira o ID de conhecimento', - externalKnowledgeDescriptionPlaceholder: 'Descreva o que há nesta Base de Dados de Conhecimento (opcional)', - connectDataset: 'Conectar-se a uma base de conhecimento externa', - createNewExternalAPI: 'Criar uma nova API de conhecimento externo', - allExternalTip: 'Ao usar apenas conhecimento externo, o usuário pode escolher se deseja habilitar o modelo de reclassificação. Se não estiver ativado, os blocos recuperados serão classificados com base nas pontuações. Quando as estratégias de recuperação de diferentes bases de conhecimento são inconsistentes, elas serão imprecisas.', - externalTag: 'Externo', - externalKnowledgeName: 'Nome do Conhecimento Externo', - externalKnowledgeId: 'ID de conhecimento externo', - externalAPIPanelTitle: 'API de conhecimento externo', - externalKnowledgeNamePlaceholder: 'Insira o nome da base de conhecimento', - createExternalAPI: 'Adicionar uma API de conhecimento externo', - editExternalAPIFormTitle: 'Editar a API de conhecimento externo', - mixtureInternalAndExternalTip: 'O modelo de Reclassificação é necessário para a mistura de conhecimento interno e externo.', - learnHowToWriteGoodKnowledgeDescription: 'Aprenda a escrever uma boa descrição de conhecimento', - externalAPIPanelDocumentation: 'Saiba como criar uma API de conhecimento externo', - externalKnowledgeDescription: 'Descrição do Conhecimento', - chunkingMode: { - parentChild: 'Pai-filho', - general: 'Geral', - graph: 'Gráfico', - qa: 'Perguntas e respostas', - }, - parentMode: { - fullDoc: 'Documento completo', - paragraph: 'Parágrafo', - }, - batchAction: { - selected: 'Selecionado', - delete: 'Excluir', - enable: 'Habilitar', - archive: 'Arquivo', - disable: 'Desabilitar', - cancel: 'Cancelar', - }, - documentsDisabled: '{{num}} documentos desativados - inativos por mais de 30 dias', - enable: 'Habilitar', - preprocessDocument: '{{num}} Documentos de pré-processamento', - localDocs: 'Documentos locais', - allKnowledgeDescription: 'Selecione para exibir todo o conhecimento neste espaço de trabalho. Somente o proprietário do espaço de trabalho pode gerenciar todo o conhecimento.', - allKnowledge: 'Todo o conhecimento', - metadata: { - createMetadata: { - name: 'Nome', - title: 'Nova Metadata', - type: 'Tipo', - namePlaceholder: 'Adicionar nome de metadados', - back: 'Voltar', - }, - checkName: { - empty: 'O nome dos metadados não pode estar vazio', - invalid: 'O nome de metadata só pode conter letras minúsculas, números e sublinhados e deve começar com uma letra minúscula.', - tooLong: 'O nome dos metadados não pode exceder {{max}} caracteres.', - }, - batchEditMetadata: { - editDocumentsNum: 'Editando {{num}} documentos', - applyToAllSelectDocument: 'Aplicar a todos os documentos selecionados', - editMetadata: 'Editar Metadados', - multipleValue: 'Múltiplos Valores', - applyToAllSelectDocumentTip: 'Crie automaticamente todos os metadados editados e novos mencionados acima para todos os documentos selecionados, caso contrário, a edição de metadados só se aplicará aos documentos que já os possuem.', - }, - selectMetadata: { - manageAction: 'Gerenciar', - search: 'Pesquisar metadados', - newAction: 'Nova Metadados', - }, - datasetMetadata: { - addMetaData: 'Adicionar Metadados', - namePlaceholder: 'Nome da metadata', - description: 'Você pode gerenciar todos os metadados neste conhecimento aqui. As modificações serão sincronizadas em todos os documentos.', - deleteTitle: 'Confirme para deletar', - deleteContent: 'Você tem certeza de que deseja excluir os metadados "{{name}}"?', - name: 'Nome', - builtInDescription: 'Os metadados incorporados são extraídos e gerados automaticamente. Eles devem ser ativados antes do uso e não podem ser editados.', - disabled: 'Desativado', - builtIn: 'Integrado', - rename: 'Renomear', - values: '{{num}} Valores', - }, - documentMetadata: { - metadataToolTip: 'Os metadados servem como um filtro crítico que aprimora a precisão e a relevância da recuperação de informações. Você pode modificar e adicionar metadados para este documento aqui.', - technicalParameters: 'Parâmetros Técnicos', - documentInformation: 'Informações do Documento', - startLabeling: 'Comece a rotular', - }, - addMetadata: 'Adicionar Metadados', - chooseTime: 'Escolha um horário...', - metadata: 'Metadados', - }, - embeddingModelNotAvailable: 'O modelo de incorporação não está disponível.', - updated: 'Atualizado', - externalKnowledgeBase: 'Base de conhecimento externa', - createFromPipeline: 'Criar a partir do pipeline de conhecimento', - serviceApi: { - card: { - apiKey: 'Chave de API', - apiReference: 'Referência da API', - title: 'API de serviço de backend', - endpoint: 'Endpoint da API de Serviço', - }, - enabled: 'Em serviço', - title: 'API de Serviço', - disabled: 'Desativado', - }, - docAllEnabled_one: '{{count}} documento habilitado', - docAllEnabled_other: 'Todos os documentos {{count}} ativados', - partialEnabled_one: 'Total de {{count}} documentos, {{num}} disponíveis', - partialEnabled_other: 'Total de {{count}} documentos, {{num}} disponíveis', - cornerLabel: { - unavailable: 'Indisponível', - pipeline: 'Pipeline', - }, - multimodal: 'Multimodal', - imageUploader: { - button: 'Arraste e solte o arquivo ou pasta, ou', - browse: 'Navegar', - tip: '{{supportTypes}} (Máx. {{batchCount}}, {{size}}MB cada)', - }, -} - -export default translation diff --git a/web/i18n/pt-BR/education.json b/web/i18n/pt-BR/education.json new file mode 100644 index 0000000000..1598d3e6b6 --- /dev/null +++ b/web/i18n/pt-BR/education.json @@ -0,0 +1,74 @@ +{ + "toVerifiedTip": { + "front": "Você agora está elegível para o status de Educação Verificada. Por favor, insira suas informações educacionais abaixo para concluir o processo e receber um", + "coupon": "cupom exclusivo de 100%", + "end": "para o Plano Profissional Dify." + }, + "form": { + "schoolName": { + "placeholder": "Digite o nome oficial e não abreviado da sua escola", + "title": "O nome da sua escola" + }, + "schoolRole": { + "option": { + "teacher": "Professor", + "student": "Estudante", + "administrator": "Administrador Escolar" + }, + "title": "Seu Papel na Escola" + }, + "terms": { + "desc": { + "and": "e", + "privacyPolicy": "Política de Privacidade", + "front": "Suas informações e o uso do status de Educação Verificada estão sujeitos ao nosso", + "termsOfService": "Termos de Serviço", + "end": "Ao enviar:" + }, + "option": { + "inSchool": "Eu confirmo que estou matriculado ou empregado na instituição mencionada. A Dify pode solicitar comprovação de matrícula/emprego. Se eu representar indevidamente minha elegibilidade, concordo em pagar quaisquer taxas inicialmente isentas com base no meu status educacional.", + "age": "Eu confirmo que tenho pelo menos 18 anos" + }, + "title": "Termos e Acordos" + } + }, + "learn": "Aprenda como fazer a verificação da sua educação", + "toVerified": "Verifique a Educação", + "currentSigned": "ATUALMENTE CONECTADO COMO", + "submit": "Enviar", + "emailLabel": "Seu e-mail atual", + "successContent": "Emitimos um cupom de desconto de 100% para o plano Dify Professional na sua conta. O cupom é válido por um ano, por favor, utilize-o dentro do período de validade.", + "rejectTitle": "A sua verificação educacional Dify foi rejeitada.", + "rejectContent": "Infelizmente, você não é elegível para o status de Educação Verificada e, portanto, não pode receber o cupom exclusivo de 100% para o Plano Profissional Dify se usar este endereço de e-mail.", + "successTitle": "Você Tem a Educação Dify Verificada", + "submitError": "A submissão do formulário falhou. Por favor, tente novamente mais tarde.", + "notice": { + "expired": { + "summary": { + "line2": "No entanto, você não é mais elegível para novos cupons de desconto na educação.", + "line1": "Você ainda pode acessar e usar o Dify." + }, + "title": "Seu status de educação expirou" + }, + "isAboutToExpire": { + "summary": "Não se preocupe — isso não afetará sua assinatura atual, mas você não receberá o desconto educacional quando ela for renovada, a menos que você verifique seu status novamente.", + "title": "Seu status educacional expirará em {{date}}" + }, + "stillInEducation": { + "title": "Ainda na educação?", + "isAboutToExpire": "Verifique novamente agora para receber um novo cupom para o próximo ano acadêmico. Ele será salvo na sua conta e estará pronto para ser usado na sua próxima renovação.", + "expired": "Reveja agora para obter um novo cupom para o próximo ano acadêmico. Nós o adicionaremos à sua conta e você poderá usá-lo na próxima atualização." + }, + "alreadyGraduated": { + "title": "Já se formou?", + "isAboutToExpire": "Sua assinatura atual ainda permanecerá ativa. Quando ela terminar, você será movido para o plano Sandbox, ou poderá fazer um upgrade a qualquer momento para restaurar o acesso completo aos recursos pagos.", + "expired": "Sinta-se à vontade para atualizar a qualquer momento para obter acesso total aos recursos pagos." + }, + "action": { + "reVerify": "Reverifique", + "upgrade": "Atualizar", + "dismiss": "Dispensar" + }, + "dateFormat": "DD/MM/AAAA" + } +} diff --git a/web/i18n/pt-BR/education.ts b/web/i18n/pt-BR/education.ts deleted file mode 100644 index 1516df76d1..0000000000 --- a/web/i18n/pt-BR/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerifiedTip: { - front: 'Você agora está elegível para o status de Educação Verificada. Por favor, insira suas informações educacionais abaixo para concluir o processo e receber um', - coupon: 'cupom exclusivo de 100%', - end: 'para o Plano Profissional Dify.', - }, - form: { - schoolName: { - placeholder: 'Digite o nome oficial e não abreviado da sua escola', - title: 'O nome da sua escola', - }, - schoolRole: { - option: { - teacher: 'Professor', - student: 'Estudante', - administrator: 'Administrador Escolar', - }, - title: 'Seu Papel na Escola', - }, - terms: { - desc: { - and: 'e', - privacyPolicy: 'Política de Privacidade', - front: 'Suas informações e o uso do status de Educação Verificada estão sujeitos ao nosso', - termsOfService: 'Termos de Serviço', - end: 'Ao enviar:', - }, - option: { - inSchool: 'Eu confirmo que estou matriculado ou empregado na instituição mencionada. A Dify pode solicitar comprovação de matrícula/emprego. Se eu representar indevidamente minha elegibilidade, concordo em pagar quaisquer taxas inicialmente isentas com base no meu status educacional.', - age: 'Eu confirmo que tenho pelo menos 18 anos', - }, - title: 'Termos e Acordos', - }, - }, - learn: 'Aprenda como fazer a verificação da sua educação', - toVerified: 'Verifique a Educação', - currentSigned: 'ATUALMENTE CONECTADO COMO', - submit: 'Enviar', - emailLabel: 'Seu e-mail atual', - successContent: 'Emitimos um cupom de desconto de 100% para o plano Dify Professional na sua conta. O cupom é válido por um ano, por favor, utilize-o dentro do período de validade.', - rejectTitle: 'A sua verificação educacional Dify foi rejeitada.', - rejectContent: 'Infelizmente, você não é elegível para o status de Educação Verificada e, portanto, não pode receber o cupom exclusivo de 100% para o Plano Profissional Dify se usar este endereço de e-mail.', - successTitle: 'Você Tem a Educação Dify Verificada', - submitError: 'A submissão do formulário falhou. Por favor, tente novamente mais tarde.', - notice: { - expired: { - summary: { - line2: 'No entanto, você não é mais elegível para novos cupons de desconto na educação.', - line1: 'Você ainda pode acessar e usar o Dify.', - }, - title: 'Seu status de educação expirou', - }, - isAboutToExpire: { - summary: 'Não se preocupe — isso não afetará sua assinatura atual, mas você não receberá o desconto educacional quando ela for renovada, a menos que você verifique seu status novamente.', - title: 'Seu status educacional expirará em {{date}}', - }, - stillInEducation: { - title: 'Ainda na educação?', - isAboutToExpire: 'Verifique novamente agora para receber um novo cupom para o próximo ano acadêmico. Ele será salvo na sua conta e estará pronto para ser usado na sua próxima renovação.', - expired: 'Reveja agora para obter um novo cupom para o próximo ano acadêmico. Nós o adicionaremos à sua conta e você poderá usá-lo na próxima atualização.', - }, - alreadyGraduated: { - title: 'Já se formou?', - isAboutToExpire: 'Sua assinatura atual ainda permanecerá ativa. Quando ela terminar, você será movido para o plano Sandbox, ou poderá fazer um upgrade a qualquer momento para restaurar o acesso completo aos recursos pagos.', - expired: 'Sinta-se à vontade para atualizar a qualquer momento para obter acesso total aos recursos pagos.', - }, - action: { - reVerify: 'Reverifique', - upgrade: 'Atualizar', - dismiss: 'Dispensar', - }, - dateFormat: 'DD/MM/AAAA', - }, -} - -export default translation diff --git a/web/i18n/pt-BR/explore.json b/web/i18n/pt-BR/explore.json new file mode 100644 index 0000000000..970a9c5749 --- /dev/null +++ b/web/i18n/pt-BR/explore.json @@ -0,0 +1,42 @@ +{ + "title": "Badać", + "sidebar": { + "discovery": "Descoberta", + "chat": "Chat", + "workspace": "Espaço de Trabalho", + "action": { + "pin": "Fixar", + "unpin": "Desafixar", + "rename": "Renomear", + "delete": "Excluir" + }, + "delete": { + "title": "Excluir aplicativo", + "content": "Tem certeza de que deseja excluir este aplicativo?" + } + }, + "apps": { + "title": "Explorar Aplicações por Dify", + "description": "Use esses aplicativos modelo instantaneamente ou personalize seus próprios aplicativos com base nos modelos.", + "allCategories": "Recomendado" + }, + "appCard": { + "addToWorkspace": "Adicionar ao Espaço de Trabalho", + "customize": "Personalizar" + }, + "appCustomize": { + "title": "Criar aplicativo a partir de {{name}}", + "subTitle": "Ícone e nome do aplicativo", + "nameRequired": "O nome do aplicativo é obrigatório" + }, + "category": { + "Assistant": "Assistente", + "Writing": "Escrita", + "Translate": "Traduzir", + "Programming": "Programação", + "HR": "RH", + "Workflow": "Fluxo de trabalho", + "Agent": "Agente", + "Entertainment": "Entretenimento" + } +} diff --git a/web/i18n/pt-BR/explore.ts b/web/i18n/pt-BR/explore.ts deleted file mode 100644 index 2a15d07f95..0000000000 --- a/web/i18n/pt-BR/explore.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - title: 'Badać', - sidebar: { - discovery: 'Descoberta', - chat: 'Chat', - workspace: 'Espaço de Trabalho', - action: { - pin: 'Fixar', - unpin: 'Desafixar', - rename: 'Renomear', - delete: 'Excluir', - }, - delete: { - title: 'Excluir aplicativo', - content: 'Tem certeza de que deseja excluir este aplicativo?', - }, - }, - apps: { - title: 'Explorar Aplicações por Dify', - description: 'Use esses aplicativos modelo instantaneamente ou personalize seus próprios aplicativos com base nos modelos.', - allCategories: 'Recomendado', - }, - appCard: { - addToWorkspace: 'Adicionar ao Espaço de Trabalho', - customize: 'Personalizar', - }, - appCustomize: { - title: 'Criar aplicativo a partir de {{name}}', - subTitle: 'Ícone e nome do aplicativo', - nameRequired: 'O nome do aplicativo é obrigatório', - }, - category: { - Assistant: 'Assistente', - Writing: 'Escrita', - Translate: 'Traduzir', - Programming: 'Programação', - HR: 'RH', - Workflow: 'Fluxo de trabalho', - Agent: 'Agente', - Entertainment: 'Entretenimento', - }, -} - -export default translation diff --git a/web/i18n/pt-BR/layout.json b/web/i18n/pt-BR/layout.json new file mode 100644 index 0000000000..25e27b99f5 --- /dev/null +++ b/web/i18n/pt-BR/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "collapseSidebar": "Recolher barra lateral", + "expandSidebar": "Expandir barra lateral" + } +} diff --git a/web/i18n/pt-BR/layout.ts b/web/i18n/pt-BR/layout.ts deleted file mode 100644 index 8400944ca0..0000000000 --- a/web/i18n/pt-BR/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - collapseSidebar: 'Recolher barra lateral', - expandSidebar: 'Expandir barra lateral', - }, -} - -export default translation diff --git a/web/i18n/pt-BR/login.json b/web/i18n/pt-BR/login.json new file mode 100644 index 0000000000..f40bcb663d --- /dev/null +++ b/web/i18n/pt-BR/login.json @@ -0,0 +1,124 @@ +{ + "pageTitle": "Oi, vamos começar!👋", + "welcome": "Bem-vindo ao Dify, faça login para continuar.", + "email": "Endereço de e-mail", + "emailPlaceholder": "Seu e-mail", + "password": "Senha", + "passwordPlaceholder": "Sua senha", + "name": "Nome de usuário", + "namePlaceholder": "Seu nome de usuário", + "forget": "Esqueceu sua senha?", + "signBtn": "Entrar", + "installBtn": "Configuração", + "setAdminAccount": "Configurando uma conta de administrador", + "setAdminAccountDesc": "Privilégios máximos para a conta de administrador, que pode ser usada para criar aplicativos e gerenciar provedores LLM, etc.", + "createAndSignIn": "Criar e entrar", + "oneMoreStep": "Mais um passo", + "createSample": "Com base nessas informações, criaremos um aplicativo de exemplo para você", + "invitationCode": "Código de convite", + "invitationCodePlaceholder": "Seu código de convite", + "interfaceLanguage": "Idioma da interface", + "timezone": "Fuso horário", + "go": "Ir para o Dify", + "sendUsMail": "Envie-nos um e-mail com sua introdução e cuidaremos do pedido de convite.", + "acceptPP": "Li e aceito a política de privacidade", + "reset": "Execute o seguinte comando para redefinir sua senha", + "withGitHub": "Continuar com o GitHub", + "withGoogle": "Continuar com o Google", + "rightTitle": "Desbloqueie todo o potencial do LLM", + "rightDesc": "Crie aplicativos de IA visualmente cativantes, operáveis e aprimoráveis sem esforço.", + "tos": "Termos de Serviço", + "pp": "Política de Privacidade", + "tosDesc": "Ao se inscrever, você concorda com nossos", + "goToInit": "Se você não inicializou a conta, vá para a página de inicialização", + "dontHave": "Não tem?", + "invalidInvitationCode": "Código de convite inválido", + "accountAlreadyInited": "Conta já iniciada", + "forgotPassword": "Esqueceu sua senha?", + "resetLinkSent": "Link de redefinição enviado", + "sendResetLink": "Enviar link de redefinição", + "backToSignIn": "Voltar para login", + "forgotPasswordDesc": "Por favor, insira seu endereço de e-mail para redefinir sua senha. Enviaremos um e-mail com instruções sobre como redefinir sua senha.", + "checkEmailForResetLink": "Verifique seu e-mail para um link para redefinir sua senha. Se não aparecer dentro de alguns minutos, verifique sua pasta de spam.", + "passwordChanged": "Entre agora", + "changePassword": "Mudar a senha", + "changePasswordTip": "Por favor, insira uma nova senha para sua conta", + "invalidToken": "Token inválido ou expirado", + "confirmPassword": "Confirme a Senha", + "confirmPasswordPlaceholder": "Confirme sua nova senha", + "passwordChangedTip": "Sua senha foi alterada com sucesso", + "error": { + "emailEmpty": "O endereço de e-mail é obrigatório", + "emailInValid": "Digite um endereço de e-mail válido", + "nameEmpty": "O nome é obrigatório", + "passwordEmpty": "A senha é obrigatória", + "passwordInvalid": "A senha deve conter letras e números e ter um comprimento maior que 8", + "passwordLengthInValid": "A senha deve ter pelo menos 8 caracteres", + "registrationNotAllowed": "Conta não encontrada. Entre em contato com o administrador do sistema para se registrar.", + "invalidEmailOrPassword": "E-mail ou senha inválidos." + }, + "license": { + "tip": "Antes de começar a usar a Edição Comunitária do Dify, leia a", + "link": "Licença de código aberto do GitHub" + }, + "join": "Participar", + "joinTipStart": "Convidamos você a participar da", + "joinTipEnd": "equipe no Dify", + "invalid": "O link expirou", + "explore": "Explorar o Dify", + "activatedTipStart": "Você se juntou à equipe", + "activatedTipEnd": "", + "activated": "Entrar agora", + "adminInitPassword": "Senha de inicialização do administrador", + "validate": "Validar", + "checkCode": { + "useAnotherMethod": "Use outro método", + "invalidCode": "Código inválido", + "verificationCodePlaceholder": "Digite o código de 6 dígitos", + "checkYourEmail": "Verifique seu e-mail", + "emptyCode": "O código é necessário", + "verify": "Verificar", + "verificationCode": "Código de verificação", + "resend": "Reenviar", + "didNotReceiveCode": "Não recebeu o código?", + "validTime": "Lembre-se de que o código é válido por 5 minutos", + "tipsPrefix": "Enviamos um código de verificação para" + }, + "resetPassword": "Redefinir senha", + "or": "OU", + "withSSO": "Continuar com SSO", + "setYourAccount": "Defina sua conta", + "backToLogin": "Voltar ao login", + "noLoginMethodTip": "Entre em contato com o administrador do sistema para adicionar um método de autenticação.", + "continueWithCode": "Continuar com o código", + "enterYourName": "Por favor, digite seu nome de usuário", + "noLoginMethod": "Método de autenticação não configurado", + "useVerificationCode": "Usar código de verificação", + "back": "Voltar", + "changePasswordBtn": "Definir uma senha", + "resetPasswordDesc": "Digite o e-mail que você usou para se inscrever no Dify e enviaremos um e-mail de redefinição de senha.", + "sendVerificationCode": "Enviar código de verificação", + "usePassword": "Usar senha", + "licenseInactiveTip": "A licença do Dify Enterprise para seu espaço de trabalho está inativa. Entre em contato com o administrador para continuar usando o Dify.", + "licenseLostTip": "Falha ao conectar o servidor de licenças Dify. Entre em contato com o administrador para continuar usando o Dify.", + "licenseExpired": "Licença expirada", + "licenseLost": "Licença perdida", + "licenseInactive": "Licença inativa", + "licenseExpiredTip": "A licença do Dify Enterprise para seu espaço de trabalho expirou. Entre em contato com o administrador para continuar usando o Dify.", + "webapp": { + "noLoginMethod": "Método de autenticação não configurado para o aplicativo web", + "disabled": "A autenticação do aplicativo da web está desativada. Por favor, entre em contato com o administrador do sistema para habilitá-la. Você pode tentar usar o aplicativo diretamente.", + "noLoginMethodTip": "Por favor, entre em contato com o administrador do sistema para adicionar um método de autenticação.", + "login": "Entrar" + }, + "signup": { + "signIn": "Entrar", + "noAccount": "Não tem uma conta?", + "createAccount": "Crie sua conta", + "haveAccount": "Já tem uma conta?", + "verifyMail": "Continue com o código de verificação", + "signUp": "Inscreva-se", + "welcome": "👋 Bem-vindo! Por favor, preencha os detalhes para começar." + }, + "pageTitleForE": "Ei, vamos começar!" +} diff --git a/web/i18n/pt-BR/login.ts b/web/i18n/pt-BR/login.ts deleted file mode 100644 index 4fa9f36146..0000000000 --- a/web/i18n/pt-BR/login.ts +++ /dev/null @@ -1,126 +0,0 @@ -const translation = { - pageTitle: 'Oi, vamos começar!👋', - welcome: 'Bem-vindo ao Dify, faça login para continuar.', - email: 'Endereço de e-mail', - emailPlaceholder: 'Seu e-mail', - password: 'Senha', - passwordPlaceholder: 'Sua senha', - name: 'Nome de usuário', - namePlaceholder: 'Seu nome de usuário', - forget: 'Esqueceu sua senha?', - signBtn: 'Entrar', - installBtn: 'Configuração', - setAdminAccount: 'Configurando uma conta de administrador', - setAdminAccountDesc: 'Privilégios máximos para a conta de administrador, que pode ser usada para criar aplicativos e gerenciar provedores LLM, etc.', - createAndSignIn: 'Criar e entrar', - oneMoreStep: 'Mais um passo', - createSample: 'Com base nessas informações, criaremos um aplicativo de exemplo para você', - invitationCode: 'Código de convite', - invitationCodePlaceholder: 'Seu código de convite', - interfaceLanguage: 'Idioma da interface', - timezone: 'Fuso horário', - go: 'Ir para o Dify', - sendUsMail: 'Envie-nos um e-mail com sua introdução e cuidaremos do pedido de convite.', - acceptPP: 'Li e aceito a política de privacidade', - reset: 'Execute o seguinte comando para redefinir sua senha', - withGitHub: 'Continuar com o GitHub', - withGoogle: 'Continuar com o Google', - rightTitle: 'Desbloqueie todo o potencial do LLM', - rightDesc: 'Crie aplicativos de IA visualmente cativantes, operáveis e aprimoráveis sem esforço.', - tos: 'Termos de Serviço', - pp: 'Política de Privacidade', - tosDesc: 'Ao se inscrever, você concorda com nossos', - goToInit: 'Se você não inicializou a conta, vá para a página de inicialização', - dontHave: 'Não tem?', - invalidInvitationCode: 'Código de convite inválido', - accountAlreadyInited: 'Conta já iniciada', - forgotPassword: 'Esqueceu sua senha?', - resetLinkSent: 'Link de redefinição enviado', - sendResetLink: 'Enviar link de redefinição', - backToSignIn: 'Voltar para login', - forgotPasswordDesc: 'Por favor, insira seu endereço de e-mail para redefinir sua senha. Enviaremos um e-mail com instruções sobre como redefinir sua senha.', - checkEmailForResetLink: 'Verifique seu e-mail para um link para redefinir sua senha. Se não aparecer dentro de alguns minutos, verifique sua pasta de spam.', - passwordChanged: 'Entre agora', - changePassword: 'Mudar a senha', - changePasswordTip: 'Por favor, insira uma nova senha para sua conta', - invalidToken: 'Token inválido ou expirado', - confirmPassword: 'Confirme a Senha', - confirmPasswordPlaceholder: 'Confirme sua nova senha', - passwordChangedTip: 'Sua senha foi alterada com sucesso', - error: { - emailEmpty: 'O endereço de e-mail é obrigatório', - emailInValid: 'Digite um endereço de e-mail válido', - nameEmpty: 'O nome é obrigatório', - passwordEmpty: 'A senha é obrigatória', - passwordInvalid: 'A senha deve conter letras e números e ter um comprimento maior que 8', - passwordLengthInValid: 'A senha deve ter pelo menos 8 caracteres', - registrationNotAllowed: 'Conta não encontrada. Entre em contato com o administrador do sistema para se registrar.', - invalidEmailOrPassword: 'E-mail ou senha inválidos.', - }, - license: { - tip: 'Antes de começar a usar a Edição Comunitária do Dify, leia a', - link: 'Licença de código aberto do GitHub', - }, - join: 'Participar', - joinTipStart: 'Convidamos você a participar da', - joinTipEnd: 'equipe no Dify', - invalid: 'O link expirou', - explore: 'Explorar o Dify', - activatedTipStart: 'Você se juntou à equipe', - activatedTipEnd: '', - activated: 'Entrar agora', - adminInitPassword: 'Senha de inicialização do administrador', - validate: 'Validar', - checkCode: { - useAnotherMethod: 'Use outro método', - invalidCode: 'Código inválido', - verificationCodePlaceholder: 'Digite o código de 6 dígitos', - checkYourEmail: 'Verifique seu e-mail', - emptyCode: 'O código é necessário', - verify: 'Verificar', - verificationCode: 'Código de verificação', - resend: 'Reenviar', - didNotReceiveCode: 'Não recebeu o código?', - validTime: 'Lembre-se de que o código é válido por 5 minutos', - tipsPrefix: 'Enviamos um código de verificação para', - }, - resetPassword: 'Redefinir senha', - or: 'OU', - withSSO: 'Continuar com SSO', - setYourAccount: 'Defina sua conta', - backToLogin: 'Voltar ao login', - noLoginMethodTip: 'Entre em contato com o administrador do sistema para adicionar um método de autenticação.', - continueWithCode: 'Continuar com o código', - enterYourName: 'Por favor, digite seu nome de usuário', - noLoginMethod: 'Método de autenticação não configurado', - useVerificationCode: 'Usar código de verificação', - back: 'Voltar', - changePasswordBtn: 'Definir uma senha', - resetPasswordDesc: 'Digite o e-mail que você usou para se inscrever no Dify e enviaremos um e-mail de redefinição de senha.', - sendVerificationCode: 'Enviar código de verificação', - usePassword: 'Usar senha', - licenseInactiveTip: 'A licença do Dify Enterprise para seu espaço de trabalho está inativa. Entre em contato com o administrador para continuar usando o Dify.', - licenseLostTip: 'Falha ao conectar o servidor de licenças Dify. Entre em contato com o administrador para continuar usando o Dify.', - licenseExpired: 'Licença expirada', - licenseLost: 'Licença perdida', - licenseInactive: 'Licença inativa', - licenseExpiredTip: 'A licença do Dify Enterprise para seu espaço de trabalho expirou. Entre em contato com o administrador para continuar usando o Dify.', - webapp: { - noLoginMethod: 'Método de autenticação não configurado para o aplicativo web', - disabled: 'A autenticação do aplicativo da web está desativada. Por favor, entre em contato com o administrador do sistema para habilitá-la. Você pode tentar usar o aplicativo diretamente.', - noLoginMethodTip: 'Por favor, entre em contato com o administrador do sistema para adicionar um método de autenticação.', - login: 'Entrar', - }, - signup: { - signIn: 'Entrar', - noAccount: 'Não tem uma conta?', - createAccount: 'Crie sua conta', - haveAccount: 'Já tem uma conta?', - verifyMail: 'Continue com o código de verificação', - signUp: 'Inscreva-se', - welcome: '👋 Bem-vindo! Por favor, preencha os detalhes para começar.', - }, - pageTitleForE: 'Ei, vamos começar!', -} - -export default translation diff --git a/web/i18n/pt-BR/oauth.json b/web/i18n/pt-BR/oauth.json new file mode 100644 index 0000000000..db319ffc2f --- /dev/null +++ b/web/i18n/pt-BR/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "notLoggedIn": "Este aplicativo quer acessar sua conta do Dify Cloud", + "loggedIn": "Este aplicativo quer acessar as seguintes informações da sua conta Dify Cloud.", + "common": "Respeitamos sua privacidade e usaremos essas informações apenas para melhorar sua experiência com nossas ferramentas de desenvolvedor.", + "needLogin": "Por favor, faça login para autorizar" + }, + "scopes": { + "email": "Email", + "avatar": "Avatar", + "languagePreference": "Preferência de Idioma", + "timezone": "Fuso horário", + "name": "Nome" + }, + "error": { + "authorizeFailed": "Autorização falhou", + "authAppInfoFetchFailed": "Falha ao buscar informações do aplicativo para autorização", + "invalidParams": "Parâmetros inválidos" + }, + "login": "Entrar", + "switchAccount": "Mudar Conta", + "unknownApp": "Aplicativo Desconhecido", + "continue": "Continue", + "connect": "Conectar a" +} diff --git a/web/i18n/pt-BR/oauth.ts b/web/i18n/pt-BR/oauth.ts deleted file mode 100644 index eba5d4e738..0000000000 --- a/web/i18n/pt-BR/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - notLoggedIn: 'Este aplicativo quer acessar sua conta do Dify Cloud', - loggedIn: 'Este aplicativo quer acessar as seguintes informações da sua conta Dify Cloud.', - common: 'Respeitamos sua privacidade e usaremos essas informações apenas para melhorar sua experiência com nossas ferramentas de desenvolvedor.', - needLogin: 'Por favor, faça login para autorizar', - }, - scopes: { - email: 'Email', - avatar: 'Avatar', - languagePreference: 'Preferência de Idioma', - timezone: 'Fuso horário', - name: 'Nome', - }, - error: { - authorizeFailed: 'Autorização falhou', - authAppInfoFetchFailed: 'Falha ao buscar informações do aplicativo para autorização', - invalidParams: 'Parâmetros inválidos', - }, - login: 'Entrar', - switchAccount: 'Mudar Conta', - unknownApp: 'Aplicativo Desconhecido', - continue: 'Continue', - connect: 'Conectar a', -} - -export default translation diff --git a/web/i18n/pt-BR/pipeline.json b/web/i18n/pt-BR/pipeline.json new file mode 100644 index 0000000000..a32b158b02 --- /dev/null +++ b/web/i18n/pt-BR/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "publishAsPipeline": { + "description": "Descrição do conhecimento", + "descriptionPlaceholder": "Insira a descrição deste Pipeline de Conhecimento. (Opcional)", + "namePlaceholder": "Insira o nome desse Pipeline de Conhecimento. (Obrigatório)", + "name": "Nome e ícone do pipeline" + }, + "processing": "Processamento", + "goToAddDocuments": "Vá para adicionar documentos", + "confirmPublish": "Confirmar publicação", + "testRun": "Execução de teste", + "preparingDataSource": "Preparando a fonte de dados", + "publishAs": "Publicar como um funil de conhecimento", + "reRun": "Executar novamente", + "confirmPublishContent": "Depois de publicar com êxito o pipeline de conhecimento, a estrutura de partes dessa base de dados de conhecimento não pode ser modificada. Tem certeza de que deseja publicá-lo?" + }, + "inputField": { + "manage": "Gerir", + "create": "Criar campo de entrada do usuário" + }, + "publishToast": { + "title": "Este pipeline ainda não foi publicado", + "desc": "Quando o pipeline não é publicado, você pode modificar a estrutura de partes no nó da base de dados de conhecimento, e a orquestração e as alterações do pipeline serão salvas automaticamente como rascunho." + }, + "result": { + "resultPreview": { + "loading": "Processamento... Aguarde", + "error": "Ocorreu um erro durante a execução", + "viewDetails": "Ver detalhes", + "footerTip": "No modo de execução de teste, visualize até {{count}} blocos" + } + }, + "ragToolSuggestions": { + "title": "Sugestões para RAG", + "noRecommendationPlugins": "Nenhum plugin recomendado, encontre mais em Marketplace" + } +} diff --git a/web/i18n/pt-BR/pipeline.ts b/web/i18n/pt-BR/pipeline.ts deleted file mode 100644 index ac670c7e64..0000000000 --- a/web/i18n/pt-BR/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - publishAsPipeline: { - description: 'Descrição do conhecimento', - descriptionPlaceholder: 'Insira a descrição deste Pipeline de Conhecimento. (Opcional)', - namePlaceholder: 'Insira o nome desse Pipeline de Conhecimento. (Obrigatório)', - name: 'Nome e ícone do pipeline', - }, - processing: 'Processamento', - goToAddDocuments: 'Vá para adicionar documentos', - confirmPublish: 'Confirmar publicação', - testRun: 'Execução de teste', - preparingDataSource: 'Preparando a fonte de dados', - publishAs: 'Publicar como um funil de conhecimento', - reRun: 'Executar novamente', - confirmPublishContent: 'Depois de publicar com êxito o pipeline de conhecimento, a estrutura de partes dessa base de dados de conhecimento não pode ser modificada. Tem certeza de que deseja publicá-lo?', - }, - inputField: { - manage: 'Gerir', - create: 'Criar campo de entrada do usuário', - }, - publishToast: { - title: 'Este pipeline ainda não foi publicado', - desc: 'Quando o pipeline não é publicado, você pode modificar a estrutura de partes no nó da base de dados de conhecimento, e a orquestração e as alterações do pipeline serão salvas automaticamente como rascunho.', - }, - result: { - resultPreview: { - loading: 'Processamento... Aguarde', - error: 'Ocorreu um erro durante a execução', - viewDetails: 'Ver detalhes', - footerTip: 'No modo de execução de teste, visualize até {{count}} blocos', - }, - }, - ragToolSuggestions: { - title: 'Sugestões para RAG', - noRecommendationPlugins: 'Nenhum plugin recomendado, encontre mais em Marketplace', - }, -} - -export default translation diff --git a/web/i18n/pt-BR/plugin-tags.json b/web/i18n/pt-BR/plugin-tags.json new file mode 100644 index 0000000000..43f19b4780 --- /dev/null +++ b/web/i18n/pt-BR/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "tags": { + "other": "Outro", + "medical": "Médico", + "videos": "Vídeos", + "productivity": "Produtividade", + "utilities": "Utilidades", + "social": "Social", + "finance": "Financiar", + "image": "Imagem", + "education": "Educação", + "design": "Projetar", + "business": "Negócio", + "weather": "Tempo", + "news": "Notícia", + "agent": "Agente", + "entertainment": "Entretenimento", + "search": "Procurar", + "travel": "Viajar", + "rag": "TRAPO" + }, + "allTags": "Todas as tags", + "searchTags": "Tags de pesquisa" +} diff --git a/web/i18n/pt-BR/plugin-tags.ts b/web/i18n/pt-BR/plugin-tags.ts deleted file mode 100644 index 855ea2c4ac..0000000000 --- a/web/i18n/pt-BR/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - tags: { - other: 'Outro', - medical: 'Médico', - videos: 'Vídeos', - productivity: 'Produtividade', - utilities: 'Utilidades', - social: 'Social', - finance: 'Financiar', - image: 'Imagem', - education: 'Educação', - design: 'Projetar', - business: 'Negócio', - weather: 'Tempo', - news: 'Notícia', - agent: 'Agente', - entertainment: 'Entretenimento', - search: 'Procurar', - travel: 'Viajar', - rag: 'TRAPO', - }, - allTags: 'Todas as tags', - searchTags: 'Tags de pesquisa', -} - -export default translation diff --git a/web/i18n/pt-BR/plugin-trigger.json b/web/i18n/pt-BR/plugin-trigger.json new file mode 100644 index 0000000000..7195b52d3f --- /dev/null +++ b/web/i18n/pt-BR/plugin-trigger.json @@ -0,0 +1,184 @@ +{ + "subscription": { + "title": "Assinaturas", + "listNum": "Assinaturas {{num}}", + "empty": { + "title": "Sem assinaturas", + "button": "Nova assinatura" + }, + "createButton": { + "oauth": "Nova assinatura com OAuth", + "apiKey": "Nova assinatura com chave de API", + "manual": "Cole a URL para criar uma nova assinatura" + }, + "createSuccess": "Assinatura criada com sucesso", + "createFailed": "Falha ao criar assinatura", + "maxCount": "Máximo de {{num}} assinaturas", + "selectPlaceholder": "Selecionar assinatura", + "noSubscriptionSelected": "Nenhuma assinatura selecionada", + "subscriptionRemoved": "Assinatura removida", + "list": { + "title": "Assinaturas", + "addButton": "Adicionar", + "tip": "Receber eventos via Assinatura", + "item": { + "enabled": "Habilitado", + "disabled": "Desativado", + "credentialType": { + "api_key": "Chave de API", + "oauth2": "OAuth", + "unauthorized": "Manual" + }, + "actions": { + "delete": "Excluir", + "deleteConfirm": { + "title": "Excluir {{name}}?", + "success": "Assinatura {{name}} excluída com sucesso", + "error": "Falha ao excluir a assinatura {{name}}", + "content": "Uma vez excl assinada, esta assinatura não pode ser recuperada. Por favor, confirme.", + "contentWithApps": "A assinatura atual é referenciada por {{count}} aplicativos. Excluí-la fará com que os aplicativos configurados parem de receber eventos da assinatura.", + "confirm": "Confirmar Exclusão", + "cancel": "Cancelar", + "confirmInputWarning": "Por favor, insira o nome correto para confirmar.", + "confirmInputPlaceholder": "Digite \"{{name}}\" para confirmar.", + "confirmInputTip": "Por favor, digite “{{name}}” para confirmar." + } + }, + "status": { + "active": "Ativo", + "inactive": "Inativo" + }, + "usedByNum": "Usado por {{num}} fluxos de trabalho", + "noUsed": "Nenhum fluxo de trabalho usado" + } + }, + "addType": { + "title": "Adicionar assinatura", + "description": "Escolha como você deseja criar sua assinatura de gatilho", + "options": { + "apikey": { + "title": "Criar com Chave de API", + "description": "Criar assinatura automaticamente usando credenciais da API" + }, + "oauth": { + "title": "Criar com OAuth", + "description": "Autorizar com plataforma de terceiros para criar assinatura", + "clientSettings": "Configurações do Cliente OAuth", + "clientTitle": "Cliente OAuth", + "default": "Padrão", + "custom": "Personalizado" + }, + "manual": { + "title": "Configuração Manual", + "description": "Cole a URL para criar uma nova assinatura", + "tip": "Configure a URL na plataforma de terceiros manualmente" + } + } + } + }, + "modal": { + "steps": { + "verify": "Verificar", + "configuration": "Configuração" + }, + "common": { + "cancel": "Cancelar", + "back": "Voltar", + "next": "Próximo", + "create": "Criar", + "verify": "Verificar", + "authorize": "Autorizar", + "creating": "Criando...", + "verifying": "Verificando...", + "authorizing": "Autorizando..." + }, + "oauthRedirectInfo": "Nenhum segredo de cliente do sistema foi encontrado para este provedor de ferramenta, é necessário configurá-lo manualmente; para redirect_uri, por favor use", + "apiKey": { + "title": "Criar com Chave de API", + "verify": { + "title": "Verificar Credenciais", + "description": "Por favor, forneça suas credenciais de API para verificar o acesso", + "error": "Falha na verificação de credenciais. Por favor, verifique sua chave de API.", + "success": "Credenciais verificadas com sucesso" + }, + "configuration": { + "title": "Configurar Assinatura", + "description": "Configure os parâmetros da sua assinatura" + } + }, + "oauth": { + "title": "Criar com OAuth", + "authorization": { + "title": "Autorização OAuth", + "description": "Autorize o Dify a acessar sua conta", + "redirectUrl": "Redirecionar URL", + "redirectUrlHelp": "Use este URL na configuração do seu aplicativo OAuth", + "authorizeButton": "Autorizar com {{provider}}", + "waitingAuth": "Aguardando autorização...", + "authSuccess": "Autorização bem-sucedida", + "authFailed": "Falha ao obter informações de autorização OAuth", + "waitingJump": "Autorizado, aguardando decolagem" + }, + "configuration": { + "title": "Configurar Assinatura", + "description": "Configure os parâmetros da sua assinatura após a autorização", + "success": "Configuração do OAuth bem-sucedida", + "failed": "Falha na configuração do OAuth" + }, + "remove": { + "success": "Remoção do OAuth bem-sucedida", + "failed": "Falha ao remover OAuth" + }, + "save": { + "success": "Configuração do OAuth salva com sucesso" + } + }, + "manual": { + "title": "Configuração Manual", + "description": "Configure sua assinatura de webhook manualmente", + "logs": { + "title": "Registros de Solicitações", + "request": "Solicitação", + "loading": "Aguardando solicitação de {{pluginName}}..." + } + }, + "form": { + "subscriptionName": { + "label": "Nome da Assinatura", + "placeholder": "Digite o nome da assinatura", + "required": "O nome da assinatura é obrigatório" + }, + "callbackUrl": { + "label": "URL de Retorno de Chamada", + "description": "Esta URL receberá eventos de webhook", + "tooltip": "Forneça um endpoint acessível publicamente que possa receber solicitações de retorno de chamada do provedor de gatilho.", + "placeholder": "Gerando...", + "privateAddressWarning": "Este URL parece ser um endereço interno, o que pode fazer com que as solicitações do webhook falhem. Você pode alterar o TRIGGER_URL para um endereço público." + } + }, + "errors": { + "createFailed": "Falha ao criar assinatura", + "verifyFailed": "Falha ao verificar as credenciais", + "authFailed": "Autorização falhou", + "networkError": "Erro de rede, por favor tente novamente" + } + }, + "events": { + "title": "Eventos Disponíveis", + "description": "Eventos aos quais este plugin de gatilho pode se inscrever", + "empty": "Nenhum evento disponível", + "event": "Evento", + "events": "Eventos", + "actionNum": "{{num}} {{event}} INCLUÍDO", + "item": { + "parameters": "parâmetros {{count}}", + "noParameters": "Sem parâmetros" + }, + "output": "Saída" + }, + "node": { + "status": { + "warning": "Desconectar" + } + } +} diff --git a/web/i18n/pt-BR/plugin-trigger.ts b/web/i18n/pt-BR/plugin-trigger.ts deleted file mode 100644 index d7cc597bbf..0000000000 --- a/web/i18n/pt-BR/plugin-trigger.ts +++ /dev/null @@ -1,186 +0,0 @@ -const translation = { - subscription: { - title: 'Assinaturas', - listNum: 'Assinaturas {{num}}', - empty: { - title: 'Sem assinaturas', - button: 'Nova assinatura', - }, - createButton: { - oauth: 'Nova assinatura com OAuth', - apiKey: 'Nova assinatura com chave de API', - manual: 'Cole a URL para criar uma nova assinatura', - }, - createSuccess: 'Assinatura criada com sucesso', - createFailed: 'Falha ao criar assinatura', - maxCount: 'Máximo de {{num}} assinaturas', - selectPlaceholder: 'Selecionar assinatura', - noSubscriptionSelected: 'Nenhuma assinatura selecionada', - subscriptionRemoved: 'Assinatura removida', - list: { - title: 'Assinaturas', - addButton: 'Adicionar', - tip: 'Receber eventos via Assinatura', - item: { - enabled: 'Habilitado', - disabled: 'Desativado', - credentialType: { - api_key: 'Chave de API', - oauth2: 'OAuth', - unauthorized: 'Manual', - }, - actions: { - delete: 'Excluir', - deleteConfirm: { - title: 'Excluir {{name}}?', - success: 'Assinatura {{name}} excluída com sucesso', - error: 'Falha ao excluir a assinatura {{name}}', - content: 'Uma vez excl assinada, esta assinatura não pode ser recuperada. Por favor, confirme.', - contentWithApps: 'A assinatura atual é referenciada por {{count}} aplicativos. Excluí-la fará com que os aplicativos configurados parem de receber eventos da assinatura.', - confirm: 'Confirmar Exclusão', - cancel: 'Cancelar', - confirmInputWarning: 'Por favor, insira o nome correto para confirmar.', - confirmInputPlaceholder: 'Digite "{{name}}" para confirmar.', - confirmInputTip: 'Por favor, digite “{{name}}” para confirmar.', - }, - }, - status: { - active: 'Ativo', - inactive: 'Inativo', - }, - usedByNum: 'Usado por {{num}} fluxos de trabalho', - noUsed: 'Nenhum fluxo de trabalho usado', - }, - }, - addType: { - title: 'Adicionar assinatura', - description: 'Escolha como você deseja criar sua assinatura de gatilho', - options: { - apikey: { - title: 'Criar com Chave de API', - description: 'Criar assinatura automaticamente usando credenciais da API', - }, - oauth: { - title: 'Criar com OAuth', - description: 'Autorizar com plataforma de terceiros para criar assinatura', - clientSettings: 'Configurações do Cliente OAuth', - clientTitle: 'Cliente OAuth', - default: 'Padrão', - custom: 'Personalizado', - }, - manual: { - title: 'Configuração Manual', - description: 'Cole a URL para criar uma nova assinatura', - tip: 'Configure a URL na plataforma de terceiros manualmente', - }, - }, - }, - }, - modal: { - steps: { - verify: 'Verificar', - configuration: 'Configuração', - }, - common: { - cancel: 'Cancelar', - back: 'Voltar', - next: 'Próximo', - create: 'Criar', - verify: 'Verificar', - authorize: 'Autorizar', - creating: 'Criando...', - verifying: 'Verificando...', - authorizing: 'Autorizando...', - }, - oauthRedirectInfo: 'Nenhum segredo de cliente do sistema foi encontrado para este provedor de ferramenta, é necessário configurá-lo manualmente; para redirect_uri, por favor use', - apiKey: { - title: 'Criar com Chave de API', - verify: { - title: 'Verificar Credenciais', - description: 'Por favor, forneça suas credenciais de API para verificar o acesso', - error: 'Falha na verificação de credenciais. Por favor, verifique sua chave de API.', - success: 'Credenciais verificadas com sucesso', - }, - configuration: { - title: 'Configurar Assinatura', - description: 'Configure os parâmetros da sua assinatura', - }, - }, - oauth: { - title: 'Criar com OAuth', - authorization: { - title: 'Autorização OAuth', - description: 'Autorize o Dify a acessar sua conta', - redirectUrl: 'Redirecionar URL', - redirectUrlHelp: 'Use este URL na configuração do seu aplicativo OAuth', - authorizeButton: 'Autorizar com {{provider}}', - waitingAuth: 'Aguardando autorização...', - authSuccess: 'Autorização bem-sucedida', - authFailed: 'Falha ao obter informações de autorização OAuth', - waitingJump: 'Autorizado, aguardando decolagem', - }, - configuration: { - title: 'Configurar Assinatura', - description: 'Configure os parâmetros da sua assinatura após a autorização', - success: 'Configuração do OAuth bem-sucedida', - failed: 'Falha na configuração do OAuth', - }, - remove: { - success: 'Remoção do OAuth bem-sucedida', - failed: 'Falha ao remover OAuth', - }, - save: { - success: 'Configuração do OAuth salva com sucesso', - }, - }, - manual: { - title: 'Configuração Manual', - description: 'Configure sua assinatura de webhook manualmente', - logs: { - title: 'Registros de Solicitações', - request: 'Solicitação', - loading: 'Aguardando solicitação de {{pluginName}}...', - }, - }, - form: { - subscriptionName: { - label: 'Nome da Assinatura', - placeholder: 'Digite o nome da assinatura', - required: 'O nome da assinatura é obrigatório', - }, - callbackUrl: { - label: 'URL de Retorno de Chamada', - description: 'Esta URL receberá eventos de webhook', - tooltip: 'Forneça um endpoint acessível publicamente que possa receber solicitações de retorno de chamada do provedor de gatilho.', - placeholder: 'Gerando...', - privateAddressWarning: 'Este URL parece ser um endereço interno, o que pode fazer com que as solicitações do webhook falhem. Você pode alterar o TRIGGER_URL para um endereço público.', - }, - }, - errors: { - createFailed: 'Falha ao criar assinatura', - verifyFailed: 'Falha ao verificar as credenciais', - authFailed: 'Autorização falhou', - networkError: 'Erro de rede, por favor tente novamente', - }, - }, - events: { - title: 'Eventos Disponíveis', - description: 'Eventos aos quais este plugin de gatilho pode se inscrever', - empty: 'Nenhum evento disponível', - event: 'Evento', - events: 'Eventos', - actionNum: '{{num}} {{event}} INCLUÍDO', - item: { - parameters: 'parâmetros {{count}}', - noParameters: 'Sem parâmetros', - }, - output: 'Saída', - }, - node: { - status: { - warning: 'Desconectar', - }, - }, -} - -export default translation diff --git a/web/i18n/pt-BR/plugin.json b/web/i18n/pt-BR/plugin.json new file mode 100644 index 0000000000..43a4c35424 --- /dev/null +++ b/web/i18n/pt-BR/plugin.json @@ -0,0 +1,323 @@ +{ + "category": { + "extensions": "Extensões", + "all": "Todo", + "bundles": "Pacotes", + "models": "Modelos", + "agents": "Estratégias do agente", + "tools": "Ferramentas", + "datasources": "Fontes de dados", + "triggers": "Gatilhos" + }, + "categorySingle": { + "model": "Modelo", + "bundle": "Pacote", + "agent": "Estratégia do agente", + "extension": "Extensão", + "tool": "Ferramenta", + "datasource": "Fonte de dados", + "trigger": "Gatilho" + }, + "list": { + "source": { + "marketplace": "Instalar do Marketplace", + "github": "Instalar do GitHub", + "local": "Instalar a partir do arquivo de pacote local" + }, + "noInstalled": "Nenhum plug-in instalado", + "notFound": "Nenhum plugin encontrado" + }, + "source": { + "local": "Arquivo de pacote local", + "github": "GitHub", + "marketplace": "Mercado" + }, + "detailPanel": { + "categoryTip": { + "debugging": "Plugin de depuração", + "marketplace": "Instalado do Marketplace", + "local": "Plug-in local", + "github": "Instalado a partir do Github" + }, + "operation": { + "checkUpdate": "Verifique a atualização", + "install": "Instalar", + "update": "Atualização", + "info": "Informações do plugin", + "detail": "Detalhes", + "remove": "Retirar", + "viewDetail": "Ver detalhes", + "back": "Voltar" + }, + "toolSelector": { + "uninstalledLink": "Gerenciar em plug-ins", + "unsupportedContent2": "Clique para mudar de versão.", + "auto": "Auto", + "title": "Adicionar ferramenta", + "params": "CONFIGURAÇÃO DE RACIOCÍNIO", + "toolLabel": "Ferramenta", + "paramsTip1": "Controla os parâmetros de inferência do LLM.", + "descriptionLabel": "Descrição da ferramenta", + "uninstalledContent": "Este plug-in é instalado a partir do repositório local/GitHub. Por favor, use após a instalação.", + "paramsTip2": "Quando 'Auto' está desativado, o valor padrão é usado.", + "placeholder": "Selecione uma ferramenta...", + "empty": "Clique no botão '+' para adicionar ferramentas. Você pode adicionar várias ferramentas.", + "settings": "CONFIGURAÇÕES DO USUÁRIO", + "unsupportedContent": "A versão do plug-in instalada não fornece essa ação.", + "descriptionPlaceholder": "Breve descrição da finalidade da ferramenta, por exemplo, obter a temperatura para um local específico.", + "uninstalledTitle": "Ferramenta não instalada", + "unsupportedTitle": "Ação sem suporte", + "toolSetting": "Configurações da Ferramenta", + "unsupportedMCPTool": "A versão atual do plugin de estratégia do agente selecionado não suporta ferramentas MCP." + }, + "serviceOk": "Serviço OK", + "endpointsTip": "Este plug-in fornece funcionalidades específicas por meio de endpoints e você pode configurar vários conjuntos de endpoints para o workspace atual.", + "strategyNum": "{{num}} {{estratégia}} INCLUSO", + "endpointDisableContent": "Gostaria de desativar {{name}}?", + "endpointDeleteContent": "Gostaria de remover {{name}}?", + "endpointsEmpty": "Clique no botão '+' para adicionar um endpoint", + "configureModel": "Configurar modelo", + "endpointModalDesc": "Uma vez configurados, os recursos fornecidos pelo plug-in por meio de endpoints de API podem ser usados.", + "endpointDeleteTip": "Remover endpoint", + "endpointDisableTip": "Desativar ponto de extremidade", + "modelNum": "{{num}} MODELOS INCLUÍDOS", + "actionNum": "{{num}} {{ação}} INCLUSO", + "switchVersion": "Versão do Switch", + "endpoints": "Extremidade", + "disabled": "Desactivado", + "configureApp": "Configurar aplicativo", + "configureTool": "Ferramenta de configuração", + "endpointsDocLink": "Veja o documento", + "endpointModalTitle": "Ponto de extremidade de configuração", + "deprecation": { + "reason": { + "businessAdjustments": "ajustes de negócios", + "ownershipTransferred": "propriedade transferida", + "noMaintainer": "sem mantenedor" + }, + "onlyReason": "Este plugin foi descontinuado devido a {{deprecatedReason}} e não será mais atualizado.", + "noReason": "Este plugin foi descontinuado e não será mais atualizado.", + "fullMessage": "Este plugin foi descontinuado devido a {{deprecatedReason}}, e não receberá mais atualizações. Por favor, use {{-alternativePluginId}} em vez disso." + } + }, + "debugInfo": { + "title": "Depuração", + "viewDocs": "Ver documentos" + }, + "privilege": { + "whoCanInstall": "Quem pode instalar e gerenciar plugins?", + "admins": "Administradores", + "noone": "Ninguém", + "whoCanDebug": "Quem pode depurar plugins?", + "title": "Preferências de plug-ins", + "everyone": "Todos" + }, + "pluginInfoModal": { + "repository": "Repositório", + "title": "Informações do plugin", + "packageName": "Pacote", + "release": "Soltar" + }, + "action": { + "deleteContentLeft": "Gostaria de remover", + "deleteContentRight": "plugin?", + "delete": "Remover plugin", + "pluginInfo": "Informações do plugin", + "checkForUpdates": "Verifique se há atualizações", + "usedInApps": "Este plugin está sendo usado em aplicativos {{num}}." + }, + "installModal": { + "labels": { + "version": "Versão", + "repository": "Repositório", + "package": "Pacote" + }, + "installPlugin": "Instale o plugin", + "close": "Fechar", + "installedSuccessfullyDesc": "O plugin foi instalado com sucesso.", + "next": "Próximo", + "installFailedDesc": "O plug-in foi instalado falhou.", + "installedSuccessfully": "Instalação bem-sucedida", + "install": "Instalar", + "installFailed": "Falha na instalação", + "readyToInstallPackages": "Prestes a instalar os seguintes plugins {{num}}", + "back": "Voltar", + "installComplete": "Instalação concluída", + "readyToInstallPackage": "Prestes a instalar o seguinte plugin", + "cancel": "Cancelar", + "fromTrustSource": "Certifique-se de instalar apenas plug-ins de uma fonte confiável.", + "pluginLoadError": "Erro de carregamento do plug-in", + "readyToInstall": "Prestes a instalar o seguinte plugin", + "pluginLoadErrorDesc": "Este plugin não será instalado", + "uploadFailed": "Falha no upload", + "installing": "Instalar...", + "uploadingPackage": "Carregando {{packageName}} ...", + "dropPluginToInstall": "Solte o pacote de plug-in aqui para instalar", + "installWarning": "Este plugin não é permitido ser instalado." + }, + "installFromGitHub": { + "selectVersionPlaceholder": "Selecione uma versão", + "updatePlugin": "Atualizar plugin do GitHub", + "installPlugin": "Instale o plugin do GitHub", + "gitHubRepo": "Repositório GitHub", + "installFailed": "Falha na instalação", + "selectVersion": "Selecione a versão", + "uploadFailed": "Falha no upload", + "installedSuccessfully": "Instalação bem-sucedida", + "installNote": "Certifique-se de instalar apenas plug-ins de uma fonte confiável.", + "selectPackagePlaceholder": "Selecione um pacote", + "selectPackage": "Selecione o pacote" + }, + "upgrade": { + "title": "Instale o plugin", + "successfulTitle": "Instalação bem-sucedida", + "close": "Fechar", + "upgrading": "Instalar...", + "upgrade": "Instalar", + "description": "Prestes a instalar o seguinte plugin", + "usedInApps": "Usado em aplicativos {{num}}" + }, + "error": { + "inValidGitHubUrl": "URL do GitHub inválida. Insira um URL válido no formato: https://github.com/owner/repo", + "noReleasesFound": "Nenhuma versão encontrada. Verifique o repositório GitHub ou a URL de entrada.", + "fetchReleasesError": "Não é possível recuperar versões. Por favor, tente novamente mais tarde." + }, + "marketplace": { + "sortOption": { + "mostPopular": "Mais popular", + "firstReleased": "Lançado pela primeira vez", + "recentlyUpdated": "Atualizado recentemente", + "newlyReleased": "Recém-lançado" + }, + "sortBy": "Ordenar por", + "viewMore": "Ver mais", + "and": "e", + "pluginsResult": "{{num}} resultados", + "empower": "Capacite seu desenvolvimento de IA", + "difyMarketplace": "Mercado Dify", + "moreFrom": "Mais do Marketplace", + "noPluginFound": "Nenhum plugin encontrado", + "discover": "Descobrir", + "verifiedTip": "Verificado pelo Dify", + "partnerTip": "Verificado por um parceiro da Dify" + }, + "task": { + "installedError": "Falha na instalação dos plug-ins {{errorLength}}", + "installingWithSuccess": "Instalando plugins {{installingLength}}, {{successLength}} sucesso.", + "installError": "{{errorLength}} plugins falha ao instalar, clique para ver", + "installingWithError": "Instalando plug-ins {{installingLength}}, {{successLength}} sucesso, {{errorLength}} falhou", + "installing": "Instalando plugins {{installingLength}}, 0 feito.", + "clearAll": "Apagar tudo", + "installSuccess": "{{successLength}} plugins installed successfully", + "installed": "Installed", + "runningPlugins": "Installing Plugins", + "successPlugins": "Successfully Installed Plugins", + "errorPlugins": "Failed to Install Plugins" + }, + "installAction": "Instalar", + "endpointsEnabled": "{{num}} conjuntos de endpoints habilitados", + "searchPlugins": "Pesquisar plugins", + "searchInMarketplace": "Pesquisar no Marketplace", + "installPlugin": "Instale o plugin", + "from": "De", + "searchTools": "Ferramentas de pesquisa...", + "search": "Procurar", + "fromMarketplace": "Do Marketplace", + "allCategories": "Todas as categorias", + "install": "{{num}} instala", + "searchCategories": "Categorias de pesquisa", + "findMoreInMarketplace": "Saiba mais no Marketplace", + "installFrom": "INSTALAR DE", + "metadata": { + "title": "Plugins" + }, + "difyVersionNotCompatible": "A versão atual do Dify não é compatível com este plugin, por favor atualize para a versão mínima exigida: {{minimalDifyVersion}}", + "requestAPlugin": "Solicitar um plugin", + "publishPlugins": "Publicar plugins", + "auth": { + "oauthClient": "Cliente OAuth", + "useOAuthAuth": "Use a autorização OAuth", + "useOAuth": "Use OAuth", + "setDefault": "Definir como padrão", + "saveOnly": "Salvar apenas", + "authRemoved": "Autorização removida", + "workspaceDefault": "Espaço de trabalho padrão", + "setupOAuth": "Configurar Cliente OAuth", + "addApi": "Adicionar chave da API", + "authorizationName": "Nome da Autorização", + "authorization": "Autorização", + "custom": "Custom", + "authorizations": "Autorizações", + "default": "Padrão", + "saveAndAuth": "Salvar e Autorizar", + "useApi": "Use a chave da API", + "oauthClientSettings": "Configurações do Cliente OAuth", + "useApiAuth": "Configuração de Autorização de Chave da API", + "addOAuth": "Adicionar OAuth", + "useApiAuthDesc": "Após configurar as credenciais, todos os membros dentro do espaço de trabalho podem usar esta ferramenta ao orquestrar aplicações.", + "clientInfo": "Como não foram encontrados segredos de cliente do sistema para este provedor de ferramentas, é necessário configurá-lo manualmente. Para redirect_uri, use", + "customCredentialUnavailable": "Credenciais personalizadas atualmente indisponíveis", + "unavailable": "Indisponível", + "credentialUnavailable": "Credenciais atualmente indisponíveis. Por favor, contate o administrador.", + "credentialUnavailableInButton": "Credencial indisponível", + "emptyAuth": "Configure a autenticação", + "connectedWorkspace": "Espaço de trabalho conectado" + }, + "deprecated": "Obsoleto", + "autoUpdate": { + "strategy": { + "disabled": { + "name": "Desativado", + "description": "Os plugins não atualizarão automaticamente" + }, + "fixOnly": { + "selectedDescription": "Atualização automática apenas para versões de patch", + "name": "Reparar Apenas", + "description": "Atualização automática apenas para versões de patch (por exemplo, 1.0.1 → 1.0.2). Mudanças de versão menor não ativarão atualizações." + }, + "latest": { + "description": "Sempre atualize para a versão mais recente", + "selectedDescription": "Sempre atualize para a versão mais recente", + "name": "Último" + } + }, + "upgradeMode": { + "all": "Atualizar tudo", + "exclude": "Excluir selecionados", + "partial": "Somente selecionado" + }, + "upgradeModePlaceholder": { + "exclude": "Plugins selecionados não serão atualizados automaticamente", + "partial": "Apenas plugins selecionados serão atualizados automaticamente. Nenhum plugin está atualmente selecionado, então nenhum plugin será atualizado automaticamente." + }, + "operation": { + "select": "Selecionar plugins", + "clearAll": "Limpar tudo" + }, + "pluginDowngradeWarning": { + "downgrade": "Descer de nível de qualquer forma", + "exclude": "Excluir da atualização automática", + "title": "Rebaixamento do Plugin", + "description": "A atualização automática está atualmente habilitada para este plugin. Reverter a versão pode causar a sobrescrição de suas alterações durante a próxima atualização automática." + }, + "noPluginPlaceholder": { + "noFound": "Nenhum plugin foi encontrado.", + "noInstalled": "Nenhum plugin instalado" + }, + "updateTime": "Atualizar hora", + "automaticUpdates": "Atualizações automáticas", + "excludeUpdate": "Os seguintes {{num}} plugins não serão atualizados automaticamente", + "updateTimeTitle": "Atualizar hora", + "specifyPluginsToUpdate": "Especifique os plugins a serem atualizados", + "changeTimezone": "Para mudar o fuso horário, vá para Configurações", + "nextUpdateTime": "Próxima atualização automática: {{time}}", + "partialUPdate": "Apenas os seguintes {{num}} plugins serão atualizados automaticamente", + "updateSettings": "Atualizar Configurações" + }, + "readmeInfo": { + "title": "LEIA-ME", + "needHelpCheckReadme": "Precisa de ajuda? Confira o README.", + "noReadmeAvailable": "Nenhum README disponível", + "failedToFetch": "Falha ao buscar o README" + } +} diff --git a/web/i18n/pt-BR/plugin.ts b/web/i18n/pt-BR/plugin.ts deleted file mode 100644 index b24d37ee63..0000000000 --- a/web/i18n/pt-BR/plugin.ts +++ /dev/null @@ -1,325 +0,0 @@ -const translation = { - category: { - extensions: 'Extensões', - all: 'Todo', - bundles: 'Pacotes', - models: 'Modelos', - agents: 'Estratégias do agente', - tools: 'Ferramentas', - datasources: 'Fontes de dados', - triggers: 'Gatilhos', - }, - categorySingle: { - model: 'Modelo', - bundle: 'Pacote', - agent: 'Estratégia do agente', - extension: 'Extensão', - tool: 'Ferramenta', - datasource: 'Fonte de dados', - trigger: 'Gatilho', - }, - list: { - source: { - marketplace: 'Instalar do Marketplace', - github: 'Instalar do GitHub', - local: 'Instalar a partir do arquivo de pacote local', - }, - noInstalled: 'Nenhum plug-in instalado', - notFound: 'Nenhum plugin encontrado', - }, - source: { - local: 'Arquivo de pacote local', - github: 'GitHub', - marketplace: 'Mercado', - }, - detailPanel: { - categoryTip: { - debugging: 'Plugin de depuração', - marketplace: 'Instalado do Marketplace', - local: 'Plug-in local', - github: 'Instalado a partir do Github', - }, - operation: { - checkUpdate: 'Verifique a atualização', - install: 'Instalar', - update: 'Atualização', - info: 'Informações do plugin', - detail: 'Detalhes', - remove: 'Retirar', - viewDetail: 'Ver detalhes', - back: 'Voltar', - }, - toolSelector: { - uninstalledLink: 'Gerenciar em plug-ins', - unsupportedContent2: 'Clique para mudar de versão.', - auto: 'Auto', - title: 'Adicionar ferramenta', - params: 'CONFIGURAÇÃO DE RACIOCÍNIO', - toolLabel: 'Ferramenta', - paramsTip1: 'Controla os parâmetros de inferência do LLM.', - descriptionLabel: 'Descrição da ferramenta', - uninstalledContent: 'Este plug-in é instalado a partir do repositório local/GitHub. Por favor, use após a instalação.', - paramsTip2: 'Quando \'Auto\' está desativado, o valor padrão é usado.', - placeholder: 'Selecione uma ferramenta...', - empty: 'Clique no botão \'+\' para adicionar ferramentas. Você pode adicionar várias ferramentas.', - settings: 'CONFIGURAÇÕES DO USUÁRIO', - unsupportedContent: 'A versão do plug-in instalada não fornece essa ação.', - descriptionPlaceholder: 'Breve descrição da finalidade da ferramenta, por exemplo, obter a temperatura para um local específico.', - uninstalledTitle: 'Ferramenta não instalada', - unsupportedTitle: 'Ação sem suporte', - toolSetting: 'Configurações da Ferramenta', - unsupportedMCPTool: 'A versão atual do plugin de estratégia do agente selecionado não suporta ferramentas MCP.', - }, - serviceOk: 'Serviço OK', - endpointsTip: 'Este plug-in fornece funcionalidades específicas por meio de endpoints e você pode configurar vários conjuntos de endpoints para o workspace atual.', - strategyNum: '{{num}} {{estratégia}} INCLUSO', - endpointDisableContent: 'Gostaria de desativar {{name}}?', - endpointDeleteContent: 'Gostaria de remover {{name}}?', - endpointsEmpty: 'Clique no botão \'+\' para adicionar um endpoint', - configureModel: 'Configurar modelo', - endpointModalDesc: 'Uma vez configurados, os recursos fornecidos pelo plug-in por meio de endpoints de API podem ser usados.', - endpointDeleteTip: 'Remover endpoint', - endpointDisableTip: 'Desativar ponto de extremidade', - modelNum: '{{num}} MODELOS INCLUÍDOS', - actionNum: '{{num}} {{ação}} INCLUSO', - switchVersion: 'Versão do Switch', - endpoints: 'Extremidade', - disabled: 'Desactivado', - configureApp: 'Configurar aplicativo', - configureTool: 'Ferramenta de configuração', - endpointsDocLink: 'Veja o documento', - endpointModalTitle: 'Ponto de extremidade de configuração', - deprecation: { - reason: { - businessAdjustments: 'ajustes de negócios', - ownershipTransferred: 'propriedade transferida', - noMaintainer: 'sem mantenedor', - }, - onlyReason: 'Este plugin foi descontinuado devido a {{deprecatedReason}} e não será mais atualizado.', - noReason: 'Este plugin foi descontinuado e não será mais atualizado.', - fullMessage: 'Este plugin foi descontinuado devido a {{deprecatedReason}}, e não receberá mais atualizações. Por favor, use {{-alternativePluginId}} em vez disso.', - }, - }, - debugInfo: { - title: 'Depuração', - viewDocs: 'Ver documentos', - }, - privilege: { - whoCanInstall: 'Quem pode instalar e gerenciar plugins?', - admins: 'Administradores', - noone: 'Ninguém', - whoCanDebug: 'Quem pode depurar plugins?', - title: 'Preferências de plug-ins', - everyone: 'Todos', - }, - pluginInfoModal: { - repository: 'Repositório', - title: 'Informações do plugin', - packageName: 'Pacote', - release: 'Soltar', - }, - action: { - deleteContentLeft: 'Gostaria de remover', - deleteContentRight: 'plugin?', - delete: 'Remover plugin', - pluginInfo: 'Informações do plugin', - checkForUpdates: 'Verifique se há atualizações', - usedInApps: 'Este plugin está sendo usado em aplicativos {{num}}.', - }, - installModal: { - labels: { - version: 'Versão', - repository: 'Repositório', - package: 'Pacote', - }, - installPlugin: 'Instale o plugin', - close: 'Fechar', - installedSuccessfullyDesc: 'O plugin foi instalado com sucesso.', - next: 'Próximo', - installFailedDesc: 'O plug-in foi instalado falhou.', - installedSuccessfully: 'Instalação bem-sucedida', - install: 'Instalar', - installFailed: 'Falha na instalação', - readyToInstallPackages: 'Prestes a instalar os seguintes plugins {{num}}', - back: 'Voltar', - installComplete: 'Instalação concluída', - readyToInstallPackage: 'Prestes a instalar o seguinte plugin', - cancel: 'Cancelar', - fromTrustSource: 'Certifique-se de instalar apenas plug-ins de uma fonte confiável.', - pluginLoadError: 'Erro de carregamento do plug-in', - readyToInstall: 'Prestes a instalar o seguinte plugin', - pluginLoadErrorDesc: 'Este plugin não será instalado', - uploadFailed: 'Falha no upload', - installing: 'Instalar...', - uploadingPackage: 'Carregando {{packageName}} ...', - dropPluginToInstall: 'Solte o pacote de plug-in aqui para instalar', - installWarning: 'Este plugin não é permitido ser instalado.', - }, - installFromGitHub: { - selectVersionPlaceholder: 'Selecione uma versão', - updatePlugin: 'Atualizar plugin do GitHub', - installPlugin: 'Instale o plugin do GitHub', - gitHubRepo: 'Repositório GitHub', - installFailed: 'Falha na instalação', - selectVersion: 'Selecione a versão', - uploadFailed: 'Falha no upload', - installedSuccessfully: 'Instalação bem-sucedida', - installNote: 'Certifique-se de instalar apenas plug-ins de uma fonte confiável.', - selectPackagePlaceholder: 'Selecione um pacote', - selectPackage: 'Selecione o pacote', - }, - upgrade: { - title: 'Instale o plugin', - successfulTitle: 'Instalação bem-sucedida', - close: 'Fechar', - upgrading: 'Instalar...', - upgrade: 'Instalar', - description: 'Prestes a instalar o seguinte plugin', - usedInApps: 'Usado em aplicativos {{num}}', - }, - error: { - inValidGitHubUrl: 'URL do GitHub inválida. Insira um URL válido no formato: https://github.com/owner/repo', - noReleasesFound: 'Nenhuma versão encontrada. Verifique o repositório GitHub ou a URL de entrada.', - fetchReleasesError: 'Não é possível recuperar versões. Por favor, tente novamente mais tarde.', - }, - marketplace: { - sortOption: { - mostPopular: 'Mais popular', - firstReleased: 'Lançado pela primeira vez', - recentlyUpdated: 'Atualizado recentemente', - newlyReleased: 'Recém-lançado', - }, - sortBy: 'Ordenar por', - viewMore: 'Ver mais', - and: 'e', - pluginsResult: '{{num}} resultados', - empower: 'Capacite seu desenvolvimento de IA', - difyMarketplace: 'Mercado Dify', - moreFrom: 'Mais do Marketplace', - noPluginFound: 'Nenhum plugin encontrado', - discover: 'Descobrir', - verifiedTip: 'Verificado pelo Dify', - partnerTip: 'Verificado por um parceiro da Dify', - }, - task: { - installedError: 'Falha na instalação dos plug-ins {{errorLength}}', - installingWithSuccess: 'Instalando plugins {{installingLength}}, {{successLength}} sucesso.', - installError: '{{errorLength}} plugins falha ao instalar, clique para ver', - installingWithError: 'Instalando plug-ins {{installingLength}}, {{successLength}} sucesso, {{errorLength}} falhou', - installing: 'Instalando plugins {{installingLength}}, 0 feito.', - clearAll: 'Apagar tudo', - installSuccess: '{{successLength}} plugins installed successfully', - installed: 'Installed', - runningPlugins: 'Installing Plugins', - successPlugins: 'Successfully Installed Plugins', - errorPlugins: 'Failed to Install Plugins', - }, - installAction: 'Instalar', - endpointsEnabled: '{{num}} conjuntos de endpoints habilitados', - searchPlugins: 'Pesquisar plugins', - searchInMarketplace: 'Pesquisar no Marketplace', - installPlugin: 'Instale o plugin', - from: 'De', - searchTools: 'Ferramentas de pesquisa...', - search: 'Procurar', - fromMarketplace: 'Do Marketplace', - allCategories: 'Todas as categorias', - install: '{{num}} instala', - searchCategories: 'Categorias de pesquisa', - findMoreInMarketplace: 'Saiba mais no Marketplace', - installFrom: 'INSTALAR DE', - metadata: { - title: 'Plugins', - }, - difyVersionNotCompatible: 'A versão atual do Dify não é compatível com este plugin, por favor atualize para a versão mínima exigida: {{minimalDifyVersion}}', - requestAPlugin: 'Solicitar um plugin', - publishPlugins: 'Publicar plugins', - auth: { - oauthClient: 'Cliente OAuth', - useOAuthAuth: 'Use a autorização OAuth', - useOAuth: 'Use OAuth', - setDefault: 'Definir como padrão', - saveOnly: 'Salvar apenas', - authRemoved: 'Autorização removida', - workspaceDefault: 'Espaço de trabalho padrão', - setupOAuth: 'Configurar Cliente OAuth', - addApi: 'Adicionar chave da API', - authorizationName: 'Nome da Autorização', - authorization: 'Autorização', - custom: 'Custom', - authorizations: 'Autorizações', - default: 'Padrão', - saveAndAuth: 'Salvar e Autorizar', - useApi: 'Use a chave da API', - oauthClientSettings: 'Configurações do Cliente OAuth', - useApiAuth: 'Configuração de Autorização de Chave da API', - addOAuth: 'Adicionar OAuth', - useApiAuthDesc: 'Após configurar as credenciais, todos os membros dentro do espaço de trabalho podem usar esta ferramenta ao orquestrar aplicações.', - clientInfo: 'Como não foram encontrados segredos de cliente do sistema para este provedor de ferramentas, é necessário configurá-lo manualmente. Para redirect_uri, use', - customCredentialUnavailable: 'Credenciais personalizadas atualmente indisponíveis', - unavailable: 'Indisponível', - credentialUnavailable: 'Credenciais atualmente indisponíveis. Por favor, contate o administrador.', - credentialUnavailableInButton: 'Credencial indisponível', - emptyAuth: 'Configure a autenticação', - connectedWorkspace: 'Espaço de trabalho conectado', - }, - deprecated: 'Obsoleto', - autoUpdate: { - strategy: { - disabled: { - name: 'Desativado', - description: 'Os plugins não atualizarão automaticamente', - }, - fixOnly: { - selectedDescription: 'Atualização automática apenas para versões de patch', - name: 'Reparar Apenas', - description: 'Atualização automática apenas para versões de patch (por exemplo, 1.0.1 → 1.0.2). Mudanças de versão menor não ativarão atualizações.', - }, - latest: { - description: 'Sempre atualize para a versão mais recente', - selectedDescription: 'Sempre atualize para a versão mais recente', - name: 'Último', - }, - }, - upgradeMode: { - all: 'Atualizar tudo', - exclude: 'Excluir selecionados', - partial: 'Somente selecionado', - }, - upgradeModePlaceholder: { - exclude: 'Plugins selecionados não serão atualizados automaticamente', - partial: 'Apenas plugins selecionados serão atualizados automaticamente. Nenhum plugin está atualmente selecionado, então nenhum plugin será atualizado automaticamente.', - }, - operation: { - select: 'Selecionar plugins', - clearAll: 'Limpar tudo', - }, - pluginDowngradeWarning: { - downgrade: 'Descer de nível de qualquer forma', - exclude: 'Excluir da atualização automática', - title: 'Rebaixamento do Plugin', - description: 'A atualização automática está atualmente habilitada para este plugin. Reverter a versão pode causar a sobrescrição de suas alterações durante a próxima atualização automática.', - }, - noPluginPlaceholder: { - noFound: 'Nenhum plugin foi encontrado.', - noInstalled: 'Nenhum plugin instalado', - }, - updateTime: 'Atualizar hora', - automaticUpdates: 'Atualizações automáticas', - excludeUpdate: 'Os seguintes {{num}} plugins não serão atualizados automaticamente', - updateTimeTitle: 'Atualizar hora', - specifyPluginsToUpdate: 'Especifique os plugins a serem atualizados', - changeTimezone: 'Para mudar o fuso horário, vá para Configurações', - nextUpdateTime: 'Próxima atualização automática: {{time}}', - partialUPdate: 'Apenas os seguintes {{num}} plugins serão atualizados automaticamente', - updateSettings: 'Atualizar Configurações', - }, - readmeInfo: { - title: 'LEIA-ME', - needHelpCheckReadme: 'Precisa de ajuda? Confira o README.', - noReadmeAvailable: 'Nenhum README disponível', - failedToFetch: 'Falha ao buscar o README', - }, -} - -export default translation diff --git a/web/i18n/pt-BR/register.json b/web/i18n/pt-BR/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/pt-BR/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/pt-BR/register.ts b/web/i18n/pt-BR/register.ts deleted file mode 100644 index 928649474b..0000000000 --- a/web/i18n/pt-BR/register.ts +++ /dev/null @@ -1,4 +0,0 @@ -const translation = { -} - -export default translation diff --git a/web/i18n/pt-BR/run-log.json b/web/i18n/pt-BR/run-log.json new file mode 100644 index 0000000000..e60f6093e1 --- /dev/null +++ b/web/i18n/pt-BR/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "ENTRADA", + "result": "RESULTADO", + "detail": "DETALHE", + "tracing": "RASTREIO", + "resultPanel": { + "status": "STATUS", + "time": "TEMPO DECORRIDO", + "tokens": "TOTAL DE TOKENS" + }, + "meta": { + "title": "METADADOS", + "status": "Status", + "version": "Versão", + "executor": "Executor", + "startTime": "Hora de Início", + "time": "Tempo Decorrido", + "tokens": "Total de Tokens", + "steps": "Passos de Execução" + }, + "resultEmpty": { + "title": "Esta execução apenas produz o formato JSON,", + "tipLeft": "por favor vá para ", + "link": "painel de detalhes", + "tipRight": " veja." + }, + "circularInvocationTip": "Há uma invocação circular de ferramentas/nós no fluxo de trabalho atual.", + "actionLogs": "Logs de ação" +} diff --git a/web/i18n/pt-BR/run-log.ts b/web/i18n/pt-BR/run-log.ts deleted file mode 100644 index 51ee3a6e8e..0000000000 --- a/web/i18n/pt-BR/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -const translation = { - input: 'ENTRADA', - result: 'RESULTADO', - detail: 'DETALHE', - tracing: 'RASTREIO', - resultPanel: { - status: 'STATUS', - time: 'TEMPO DECORRIDO', - tokens: 'TOTAL DE TOKENS', - }, - meta: { - title: 'METADADOS', - status: 'Status', - version: 'Versão', - executor: 'Executor', - startTime: 'Hora de Início', - time: 'Tempo Decorrido', - tokens: 'Total de Tokens', - steps: 'Passos de Execução', - }, - resultEmpty: { - title: 'Esta execução apenas produz o formato JSON,', - tipLeft: 'por favor vá para ', - link: 'painel de detalhes', - tipRight: ' veja.', - }, - circularInvocationTip: 'Há uma invocação circular de ferramentas/nós no fluxo de trabalho atual.', - actionLogs: 'Logs de ação', -} - -export default translation diff --git a/web/i18n/pt-BR/share.json b/web/i18n/pt-BR/share.json new file mode 100644 index 0000000000..6fad5dd86b --- /dev/null +++ b/web/i18n/pt-BR/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "", + "appUnavailable": "O aplicativo não está disponível", + "appUnknownError": "O aplicativo encontrou um erro desconhecido" + }, + "chat": { + "newChat": "Nova conversa", + "pinnedTitle": "Fixado", + "unpinnedTitle": "Conversas", + "newChatDefaultName": "Nova conversa", + "resetChat": "Redefinir conversa", + "poweredBy": "Desenvolvido por", + "prompt": "Prompt", + "privatePromptConfigTitle": "Configurações da conversa", + "publicPromptConfigTitle": "Prompt inicial", + "configStatusDes": "Antes de começar, você pode modificar as configurações da conversa", + "configDisabled": "As configurações da sessão anterior foram usadas para esta sessão.", + "startChat": "Iniciar conversa", + "privacyPolicyLeft": "Por favor, leia a ", + "privacyPolicyMiddle": "política de privacidade", + "privacyPolicyRight": " fornecida pelo desenvolvedor do aplicativo.", + "deleteConversation": { + "title": "Excluir conversa", + "content": "Tem certeza de que deseja excluir esta conversa?" + }, + "tryToSolve": "Tente resolver", + "temporarySystemIssue": "Desculpe, problema temporário do sistema.", + "expand": "Expandir", + "collapse": "Contrair", + "newChatTip": "Já em um novo chat", + "chatFormTip": "As configurações do chat não podem ser modificadas após o início do chat.", + "viewChatSettings": "Ver configurações de chat", + "chatSettingsTitle": "Nova configuração de chat" + }, + "generation": { + "tabs": { + "create": "Executar uma vez", + "batch": "Executar em lote", + "saved": "Salvo" + }, + "savedNoData": { + "title": "Você ainda não salvou um resultado!", + "description": "Comece a gerar conteúdo e encontre seus resultados salvos aqui.", + "startCreateContent": "Começar a criar conteúdo" + }, + "title": "Completar com IA", + "queryTitle": "Consultar conteúdo", + "completionResult": "Resultado da conclusão", + "queryPlaceholder": "Escreva sua consulta...", + "run": "Executar", + "copy": "Copiar", + "resultTitle": "Completar com IA", + "noData": "A IA fornecerá o que você deseja aqui.", + "csvUploadTitle": "Arraste e solte seu arquivo CSV aqui ou ", + "browse": "navegue", + "csvStructureTitle": "O arquivo CSV deve seguir a seguinte estrutura:", + "downloadTemplate": "Baixe o modelo aqui", + "field": "Campo", + "batchFailed": { + "info": "{{num}} execuções falharam", + "retry": "Tentar novamente", + "outputPlaceholder": "Nenhum conteúdo de saída" + }, + "errorMsg": { + "empty": "Por favor, insira conteúdo no arquivo enviado.", + "fileStructNotMatch": "O arquivo CSV enviado não corresponde à estrutura.", + "emptyLine": "A linha {{rowIndex}} está vazia", + "invalidLine": "Linha {{rowIndex}}: o valor de {{varName}} não pode estar vazio", + "moreThanMaxLengthLine": "Linha {{rowIndex}}: o valor de {{varName}} não pode ter mais de {{maxLength}} caracteres", + "atLeastOne": "Por favor, insira pelo menos uma linha no arquivo enviado." + }, + "execution": "Executar", + "executions": "{{num}} execuções", + "stopRun": "Parar execução" + }, + "login": { + "backToHome": "Voltar para a página inicial" + } +} diff --git a/web/i18n/pt-BR/share.ts b/web/i18n/pt-BR/share.ts deleted file mode 100644 index 03606bab77..0000000000 --- a/web/i18n/pt-BR/share.ts +++ /dev/null @@ -1,86 +0,0 @@ -const translation = { - common: { - welcome: '', - appUnavailable: 'O aplicativo não está disponível', - appUnknownError: 'O aplicativo encontrou um erro desconhecido', - }, - chat: { - newChat: 'Nova conversa', - pinnedTitle: 'Fixado', - unpinnedTitle: 'Conversas', - newChatDefaultName: 'Nova conversa', - resetChat: 'Redefinir conversa', - poweredBy: 'Desenvolvido por', - prompt: 'Prompt', - privatePromptConfigTitle: 'Configurações da conversa', - publicPromptConfigTitle: 'Prompt inicial', - configStatusDes: 'Antes de começar, você pode modificar as configurações da conversa', - configDisabled: - 'As configurações da sessão anterior foram usadas para esta sessão.', - startChat: 'Iniciar conversa', - privacyPolicyLeft: - 'Por favor, leia a ', - privacyPolicyMiddle: - 'política de privacidade', - privacyPolicyRight: - ' fornecida pelo desenvolvedor do aplicativo.', - deleteConversation: { - title: 'Excluir conversa', - content: 'Tem certeza de que deseja excluir esta conversa?', - }, - tryToSolve: 'Tente resolver', - temporarySystemIssue: 'Desculpe, problema temporário do sistema.', - expand: 'Expandir', - collapse: 'Contrair', - newChatTip: 'Já em um novo chat', - chatFormTip: 'As configurações do chat não podem ser modificadas após o início do chat.', - viewChatSettings: 'Ver configurações de chat', - chatSettingsTitle: 'Nova configuração de chat', - }, - generation: { - tabs: { - create: 'Executar uma vez', - batch: 'Executar em lote', - saved: 'Salvo', - }, - savedNoData: { - title: 'Você ainda não salvou um resultado!', - description: 'Comece a gerar conteúdo e encontre seus resultados salvos aqui.', - startCreateContent: 'Começar a criar conteúdo', - }, - title: 'Completar com IA', - queryTitle: 'Consultar conteúdo', - completionResult: 'Resultado da conclusão', - queryPlaceholder: 'Escreva sua consulta...', - run: 'Executar', - copy: 'Copiar', - resultTitle: 'Completar com IA', - noData: 'A IA fornecerá o que você deseja aqui.', - csvUploadTitle: 'Arraste e solte seu arquivo CSV aqui ou ', - browse: 'navegue', - csvStructureTitle: 'O arquivo CSV deve seguir a seguinte estrutura:', - downloadTemplate: 'Baixe o modelo aqui', - field: 'Campo', - batchFailed: { - info: '{{num}} execuções falharam', - retry: 'Tentar novamente', - outputPlaceholder: 'Nenhum conteúdo de saída', - }, - errorMsg: { - empty: 'Por favor, insira conteúdo no arquivo enviado.', - fileStructNotMatch: 'O arquivo CSV enviado não corresponde à estrutura.', - emptyLine: 'A linha {{rowIndex}} está vazia', - invalidLine: 'Linha {{rowIndex}}: o valor de {{varName}} não pode estar vazio', - moreThanMaxLengthLine: 'Linha {{rowIndex}}: o valor de {{varName}} não pode ter mais de {{maxLength}} caracteres', - atLeastOne: 'Por favor, insira pelo menos uma linha no arquivo enviado.', - }, - execution: 'Executar', - executions: '{{num}} execuções', - stopRun: 'Parar execução', - }, - login: { - backToHome: 'Voltar para a página inicial', - }, -} - -export default translation diff --git a/web/i18n/pt-BR/time.json b/web/i18n/pt-BR/time.json new file mode 100644 index 0000000000..561dd39291 --- /dev/null +++ b/web/i18n/pt-BR/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Wed": "Quarta-feira", + "Tue": "Terça-feira", + "Sun": "Sol", + "Thu": "Quinta-feira", + "Fri": "Sexta", + "Sat": "Sábado", + "Mon": "Mon" + }, + "months": { + "May": "Maio", + "February": "Fevereiro", + "April": "abril", + "September": "Setembro", + "March": "Março", + "December": "Dezembro", + "November": "Novembro", + "October": "Outubro", + "July": "Julho", + "August": "Agosto", + "June": "junho", + "January": "Janeiro" + }, + "operation": { + "pickDate": "Escolher Data", + "ok": "OK", + "cancel": "Cancelar", + "now": "Agora" + }, + "title": { + "pickTime": "Escolha o Horário" + }, + "defaultPlaceholder": "Escolha um horário...", + "dateFormats": { + "input": "AAAA-MM-DD", + "output": "AAAA-MM-DD", + "outputWithTime": "AAAA-MM-DDTHH:mm:ss.SSSZ", + "displayWithTime": "MMMM D, YYYY hh:mm A", + "display": "MMMM D, YYYY" + } +} diff --git a/web/i18n/pt-BR/time.ts b/web/i18n/pt-BR/time.ts deleted file mode 100644 index a0d634eb6a..0000000000 --- a/web/i18n/pt-BR/time.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - daysInWeek: { - Wed: 'Quarta-feira', - Tue: 'Terça-feira', - Sun: 'Sol', - Thu: 'Quinta-feira', - Fri: 'Sexta', - Sat: 'Sábado', - Mon: 'Mon', - }, - months: { - May: 'Maio', - February: 'Fevereiro', - April: 'abril', - September: 'Setembro', - March: 'Março', - December: 'Dezembro', - November: 'Novembro', - October: 'Outubro', - July: 'Julho', - August: 'Agosto', - June: 'junho', - January: 'Janeiro', - }, - operation: { - pickDate: 'Escolher Data', - ok: 'OK', - cancel: 'Cancelar', - now: 'Agora', - }, - title: { - pickTime: 'Escolha o Horário', - }, - defaultPlaceholder: 'Escolha um horário...', - dateFormats: { - input: 'AAAA-MM-DD', - output: 'AAAA-MM-DD', - outputWithTime: 'AAAA-MM-DDTHH:mm:ss.SSSZ', - displayWithTime: 'MMMM D, YYYY hh:mm A', - display: 'MMMM D, YYYY', - }, -} - -export default translation diff --git a/web/i18n/pt-BR/tools.json b/web/i18n/pt-BR/tools.json new file mode 100644 index 0000000000..4cd3423ede --- /dev/null +++ b/web/i18n/pt-BR/tools.json @@ -0,0 +1,262 @@ +{ + "title": "Ferramentas", + "createCustomTool": "Criar Ferramenta Personalizada", + "type": { + "builtIn": "Integradas", + "custom": "Personalizadas", + "workflow": "Fluxo de trabalho" + }, + "contribute": { + "line1": "Estou interessado em ", + "line2": "contribuir com ferramentas para o Dify.", + "viewGuide": "Ver o guia" + }, + "author": "Por", + "auth": { + "authorized": "Autorizado", + "setup": "Configurar autorização para usar", + "setupModalTitle": "Configurar Autorização", + "setupModalTitleDescription": "Após configurar as credenciais, todos os membros do espaço de trabalho podem usar essa ferramenta ao orquestrar aplicativos." + }, + "includeToolNum": "{{num}} ferramentas incluídas", + "createTool": { + "title": "Criar Ferramenta Personalizada", + "editAction": "Configurar", + "editTitle": "Editar Ferramenta Personalizada", + "name": "Nome", + "toolNamePlaceHolder": "Digite o nome da ferramenta", + "schema": "Esquema", + "schemaPlaceHolder": "Digite seu esquema OpenAPI aqui", + "viewSchemaSpec": "Ver a Especificação OpenAPI-Swagger", + "importFromUrl": "Importar de URL", + "importFromUrlPlaceHolder": "https://...", + "urlError": "Digite uma URL válida", + "examples": "Exemplos", + "exampleOptions": { + "json": "Clima(JSON)", + "yaml": "Pet Store(YAML)", + "blankTemplate": "Modelo em Branco" + }, + "availableTools": { + "title": "Ferramentas Disponíveis", + "name": "Nome", + "description": "Descrição", + "method": "Método", + "path": "Caminho", + "action": "Ações", + "test": "Testar" + }, + "authMethod": { + "title": "Método de Autorização", + "type": "Tipo de Autorização", + "keyTooltip": "Chave do Cabeçalho HTTP, você pode deixar como \"Authorization\" se não tiver ideia do que é ou definir um valor personalizado", + "types": { + "none": "Nenhum", + "apiKeyPlaceholder": "Nome do cabeçalho HTTP para a Chave de API", + "apiValuePlaceholder": "Digite a Chave de API", + "api_key_query": "Parâmetro de consulta", + "queryParamPlaceholder": "Nome do parâmetro de consulta para a chave da API", + "api_key_header": "Cabeçalho" + }, + "key": "Chave", + "value": "Valor", + "queryParam": "Parâmetro de consulta", + "queryParamTooltip": "O nome do parâmetro de consulta da chave da API a ser passado, por exemplo, \"key\" em \"https://example.com/test?key=API_KEY\"." + }, + "authHeaderPrefix": { + "title": "Tipo de Autenticação", + "types": { + "basic": "Básica", + "bearer": "Bearer", + "custom": "Personalizada" + } + }, + "privacyPolicy": "Política de Privacidade", + "privacyPolicyPlaceholder": "Digite a política de privacidade", + "customDisclaimer": "Aviso Personalizado", + "customDisclaimerPlaceholder": "Digite o aviso personalizado", + "deleteToolConfirmTitle": "Excluir esta ferramenta?", + "deleteToolConfirmContent": "Excluir a ferramenta é irreversível. Os usuários não poderão mais acessar sua ferramenta.", + "toolInput": { + "label": "Tags", + "methodSetting": "Ambiente", + "methodParameterTip": "Preenchimentos de LLM durante a inferência", + "methodSettingTip": "O usuário preenche a configuração da ferramenta", + "methodParameter": "Parâmetro", + "name": "Nome", + "description": "Descrição", + "method": "Método", + "required": "Necessário", + "title": "Entrada de ferramenta", + "labelPlaceholder": "Escolha tags(opcional)", + "descriptionPlaceholder": "Descrição do significado do parâmetro" + }, + "description": "Descrição", + "nameForToolCall": "Nome da chamada da ferramenta", + "confirmTip": "Os aplicativos que usam essa ferramenta serão afetados", + "confirmTitle": "Confirme para salvar ?", + "nameForToolCallTip": "Suporta apenas números, letras e sublinhados.", + "descriptionPlaceholder": "Breve descrição da finalidade da ferramenta, por exemplo, obter a temperatura para um local específico.", + "nameForToolCallPlaceHolder": "Usado para reconhecimento de máquina, como getCurrentWeather, list_pets", + "toolOutput": { + "title": "Saída da ferramenta", + "name": "Nome", + "reserved": "Reservado", + "reservedParameterDuplicateTip": "texto, json e arquivos são variáveis reservadas. Variáveis com esses nomes não podem aparecer no esquema de saída.", + "description": "Descrição" + } + }, + "test": { + "title": "Testar", + "parametersValue": "Parâmetros e Valor", + "parameters": "Parâmetros", + "value": "Valor", + "testResult": "Resultados do Teste", + "testResultPlaceholder": "O resultado do teste será exibido aqui" + }, + "thought": { + "using": "Usando", + "used": "Usado", + "requestTitle": "Requisição para", + "responseTitle": "Resposta de" + }, + "setBuiltInTools": { + "info": "Informações", + "setting": "Configuração", + "toolDescription": "Descrição da Ferramenta", + "parameters": "parâmetros", + "string": "string", + "number": "número", + "required": "Obrigatório", + "infoAndSetting": "Informações e Configurações", + "file": "arquivo" + }, + "noCustomTool": { + "title": "Nenhuma ferramenta personalizada!", + "content": "Adicione e gerencie suas ferramentas personalizadas aqui para construir aplicativos de IA.", + "createTool": "Criar Ferramenta" + }, + "noSearchRes": { + "title": "Desculpe, sem resultados!", + "content": "Não encontramos nenhuma ferramenta que corresponda à sua pesquisa.", + "reset": "Redefinir Pesquisa" + }, + "builtInPromptTitle": "Prompt", + "toolRemoved": "Ferramenta removida", + "notAuthorized": "Ferramenta não autorizada", + "howToGet": "Como obter", + "addToolModal": { + "category": "categoria", + "type": "tipo", + "added": "Adicionado", + "custom": { + "title": "Nenhuma ferramenta personalizada disponível", + "tip": "Crie uma ferramenta personalizada" + }, + "workflow": { + "title": "Nenhuma ferramenta de fluxo de trabalho disponível", + "tip": "Publique fluxos de trabalho como ferramentas no Studio" + }, + "mcp": { + "title": "Nenhuma ferramenta MCP disponível", + "tip": "Adicionar um servidor MCP" + }, + "agent": { + "title": "Nenhuma estratégia de agente disponível" + } + }, + "openInStudio": "Abrir no Studio", + "customToolTip": "Saiba mais sobre as ferramentas personalizadas da Dify", + "toolNameUsageTip": "Nome da chamada da ferramenta para raciocínio e solicitação do agente", + "copyToolName": "Nome da cópia", + "noTools": "Nenhuma ferramenta encontrada", + "mcp": { + "create": { + "cardTitle": "Adicionar Servidor MCP (HTTP)", + "cardLink": "Saiba mais sobre a integração do servidor MCP" + }, + "noConfigured": "Servidor Não Configurado", + "updateTime": "Atualizado", + "toolsCount": "{{count}} ferramentas", + "noTools": "Nenhuma ferramenta disponível", + "modal": { + "title": "Adicionar Servidor MCP (HTTP)", + "editTitle": "Editar Servidor MCP (HTTP)", + "name": "Nome & Ícone", + "namePlaceholder": "Dê um nome ao seu servidor MCP", + "serverUrl": "URL do Servidor", + "serverUrlPlaceholder": "URL para o endpoint do servidor", + "serverUrlWarning": "Atualizar o endereço do servidor pode interromper aplicações que dependem deste servidor", + "serverIdentifier": "Identificador do Servidor", + "serverIdentifierTip": "Identificador único para o servidor MCP dentro do espaço de trabalho. Apenas letras minúsculas, números, sublinhados e hífens. Até 24 caracteres.", + "serverIdentifierPlaceholder": "Identificador único, ex: meu-servidor-mcp", + "serverIdentifierWarning": "O servidor não será reconhecido por aplicativos existentes após uma mudança de ID", + "cancel": "Cancelar", + "save": "Salvar", + "confirm": "Adicionar e Autorizar", + "sseReadTimeout": "Tempo limite de leitura SSE", + "timeout": "Tempo esgotado", + "timeoutPlaceholder": "trinta", + "headerValue": "Valor do Cabeçalho", + "headerKeyPlaceholder": "por exemplo, Autorização", + "addHeader": "Adicionar Cabeçalho", + "headersTip": "Cabeçalhos HTTP adicionais a serem enviados com as solicitações do servidor MCP", + "headers": "Cabeçalhos", + "maskedHeadersTip": "Os valores do cabeçalho estão mascarados por segurança. As alterações atualizarão os valores reais.", + "headerKey": "Nome do Cabeçalho", + "noHeaders": "Nenhum cabeçalho personalizado configurado", + "headerValuePlaceholder": "ex: Token de portador 123", + "useDynamicClientRegistration": "Usar Registro Dinâmico de Cliente", + "configurations": "Configurações", + "clientSecret": "Segredo do Cliente", + "authentication": "Autenticação", + "clientID": "ID do Cliente", + "clientSecretPlaceholder": "Segredo do Cliente", + "redirectUrlWarning": "Por favor, configure sua URL de redirecionamento OAuth para:" + }, + "delete": "Remover Servidor MCP", + "deleteConfirmTitle": "Você gostaria de remover {{mcp}}?", + "operation": { + "edit": "Editar", + "remove": "Remover" + }, + "authorize": "Autorizar", + "authorizing": "Autorizando...", + "authorizingRequired": "Autorização é necessária", + "authorizeTip": "Após a autorização, as ferramentas serão exibidas aqui.", + "update": "Atualizar", + "updating": "Atualizando", + "gettingTools": "Obtendo Ferramentas...", + "updateTools": "Atualizando Ferramentas...", + "toolsEmpty": "Ferramentas não carregadas", + "getTools": "Obter ferramentas", + "toolUpdateConfirmTitle": "Atualizar Lista de Ferramentas", + "toolUpdateConfirmContent": "Atualizar a lista de ferramentas pode afetar aplicativos existentes. Você deseja continuar?", + "toolsNum": "{{count}} ferramentas incluídas", + "onlyTool": "1 ferramenta incluída", + "identifier": "Identificador do Servidor (Clique para Copiar)", + "server": { + "title": "Servidor MCP", + "url": "URL do Servidor", + "reGen": "Você deseja regenerar a URL do servidor?", + "addDescription": "Adicionar descrição", + "edit": "Editar descrição", + "modal": { + "addTitle": "Adicionar descrição para habilitar o servidor MCP", + "editTitle": "Editar descrição", + "description": "Descrição", + "descriptionPlaceholder": "Explique o que esta ferramenta faz e como deve ser utilizada pelo LLM", + "parameters": "Parâmetros", + "parametersTip": "Adicione descrições para cada parâmetro para ajudar o LLM a entender seus propósitos e restrições.", + "parametersPlaceholder": "Propósito e restrições do parâmetro", + "confirm": "Habilitar Servidor MCP" + }, + "publishTip": "Aplicativo não publicado. Por favor, publique o aplicativo primeiro." + }, + "toolItem": { + "noDescription": "Sem descrição", + "parameters": "Parâmetros" + } + }, + "allTools": "Todas as ferramentas" +} diff --git a/web/i18n/pt-BR/tools.ts b/web/i18n/pt-BR/tools.ts deleted file mode 100644 index 6517b92c25..0000000000 --- a/web/i18n/pt-BR/tools.ts +++ /dev/null @@ -1,264 +0,0 @@ -const translation = { - title: 'Ferramentas', - createCustomTool: 'Criar Ferramenta Personalizada', - type: { - builtIn: 'Integradas', - custom: 'Personalizadas', - workflow: 'Fluxo de trabalho', - }, - contribute: { - line1: 'Estou interessado em ', - line2: 'contribuir com ferramentas para o Dify.', - viewGuide: 'Ver o guia', - }, - author: 'Por', - auth: { - authorized: 'Autorizado', - setup: 'Configurar autorização para usar', - setupModalTitle: 'Configurar Autorização', - setupModalTitleDescription: 'Após configurar as credenciais, todos os membros do espaço de trabalho podem usar essa ferramenta ao orquestrar aplicativos.', - }, - includeToolNum: '{{num}} ferramentas incluídas', - createTool: { - title: 'Criar Ferramenta Personalizada', - editAction: 'Configurar', - editTitle: 'Editar Ferramenta Personalizada', - name: 'Nome', - toolNamePlaceHolder: 'Digite o nome da ferramenta', - schema: 'Esquema', - schemaPlaceHolder: 'Digite seu esquema OpenAPI aqui', - viewSchemaSpec: 'Ver a Especificação OpenAPI-Swagger', - importFromUrl: 'Importar de URL', - importFromUrlPlaceHolder: 'https://...', - urlError: 'Digite uma URL válida', - examples: 'Exemplos', - exampleOptions: { - json: 'Clima(JSON)', - yaml: 'Pet Store(YAML)', - blankTemplate: 'Modelo em Branco', - }, - availableTools: { - title: 'Ferramentas Disponíveis', - name: 'Nome', - description: 'Descrição', - method: 'Método', - path: 'Caminho', - action: 'Ações', - test: 'Testar', - }, - authMethod: { - title: 'Método de Autorização', - type: 'Tipo de Autorização', - keyTooltip: 'Chave do Cabeçalho HTTP, você pode deixar como "Authorization" se não tiver ideia do que é ou definir um valor personalizado', - types: { - none: 'Nenhum', - apiKeyPlaceholder: 'Nome do cabeçalho HTTP para a Chave de API', - apiValuePlaceholder: 'Digite a Chave de API', - api_key_query: 'Parâmetro de consulta', - queryParamPlaceholder: 'Nome do parâmetro de consulta para a chave da API', - api_key_header: 'Cabeçalho', - }, - key: 'Chave', - value: 'Valor', - queryParam: 'Parâmetro de consulta', - queryParamTooltip: 'O nome do parâmetro de consulta da chave da API a ser passado, por exemplo, "key" em "https://example.com/test?key=API_KEY".', - }, - authHeaderPrefix: { - title: 'Tipo de Autenticação', - types: { - basic: 'Básica', - bearer: 'Bearer', - custom: 'Personalizada', - }, - }, - privacyPolicy: 'Política de Privacidade', - privacyPolicyPlaceholder: 'Digite a política de privacidade', - customDisclaimer: 'Aviso Personalizado', - customDisclaimerPlaceholder: 'Digite o aviso personalizado', - deleteToolConfirmTitle: 'Excluir esta ferramenta?', - deleteToolConfirmContent: 'Excluir a ferramenta é irreversível. Os usuários não poderão mais acessar sua ferramenta.', - toolInput: { - label: 'Tags', - methodSetting: 'Ambiente', - methodParameterTip: 'Preenchimentos de LLM durante a inferência', - methodSettingTip: 'O usuário preenche a configuração da ferramenta', - methodParameter: 'Parâmetro', - name: 'Nome', - description: 'Descrição', - method: 'Método', - required: 'Necessário', - title: 'Entrada de ferramenta', - labelPlaceholder: 'Escolha tags(opcional)', - descriptionPlaceholder: 'Descrição do significado do parâmetro', - }, - description: 'Descrição', - nameForToolCall: 'Nome da chamada da ferramenta', - confirmTip: 'Os aplicativos que usam essa ferramenta serão afetados', - confirmTitle: 'Confirme para salvar ?', - nameForToolCallTip: 'Suporta apenas números, letras e sublinhados.', - descriptionPlaceholder: 'Breve descrição da finalidade da ferramenta, por exemplo, obter a temperatura para um local específico.', - nameForToolCallPlaceHolder: 'Usado para reconhecimento de máquina, como getCurrentWeather, list_pets', - toolOutput: { - title: 'Saída da ferramenta', - name: 'Nome', - reserved: 'Reservado', - reservedParameterDuplicateTip: 'texto, json e arquivos são variáveis reservadas. Variáveis com esses nomes não podem aparecer no esquema de saída.', - description: 'Descrição', - }, - }, - test: { - title: 'Testar', - parametersValue: 'Parâmetros e Valor', - parameters: 'Parâmetros', - value: 'Valor', - testResult: 'Resultados do Teste', - testResultPlaceholder: 'O resultado do teste será exibido aqui', - }, - thought: { - using: 'Usando', - used: 'Usado', - requestTitle: 'Requisição para', - responseTitle: 'Resposta de', - }, - setBuiltInTools: { - info: 'Informações', - setting: 'Configuração', - toolDescription: 'Descrição da Ferramenta', - parameters: 'parâmetros', - string: 'string', - number: 'número', - required: 'Obrigatório', - infoAndSetting: 'Informações e Configurações', - file: 'arquivo', - }, - noCustomTool: { - title: 'Nenhuma ferramenta personalizada!', - content: 'Adicione e gerencie suas ferramentas personalizadas aqui para construir aplicativos de IA.', - createTool: 'Criar Ferramenta', - }, - noSearchRes: { - title: 'Desculpe, sem resultados!', - content: 'Não encontramos nenhuma ferramenta que corresponda à sua pesquisa.', - reset: 'Redefinir Pesquisa', - }, - builtInPromptTitle: 'Prompt', - toolRemoved: 'Ferramenta removida', - notAuthorized: 'Ferramenta não autorizada', - howToGet: 'Como obter', - addToolModal: { - category: 'categoria', - type: 'tipo', - added: 'Adicionado', - custom: { - title: 'Nenhuma ferramenta personalizada disponível', - tip: 'Crie uma ferramenta personalizada', - }, - workflow: { - title: 'Nenhuma ferramenta de fluxo de trabalho disponível', - tip: 'Publique fluxos de trabalho como ferramentas no Studio', - }, - mcp: { - title: 'Nenhuma ferramenta MCP disponível', - tip: 'Adicionar um servidor MCP', - }, - agent: { - title: 'Nenhuma estratégia de agente disponível', - }, - }, - openInStudio: 'Abrir no Studio', - customToolTip: 'Saiba mais sobre as ferramentas personalizadas da Dify', - toolNameUsageTip: 'Nome da chamada da ferramenta para raciocínio e solicitação do agente', - copyToolName: 'Nome da cópia', - noTools: 'Nenhuma ferramenta encontrada', - mcp: { - create: { - cardTitle: 'Adicionar Servidor MCP (HTTP)', - cardLink: 'Saiba mais sobre a integração do servidor MCP', - }, - noConfigured: 'Servidor Não Configurado', - updateTime: 'Atualizado', - toolsCount: '{{count}} ferramentas', - noTools: 'Nenhuma ferramenta disponível', - modal: { - title: 'Adicionar Servidor MCP (HTTP)', - editTitle: 'Editar Servidor MCP (HTTP)', - name: 'Nome & Ícone', - namePlaceholder: 'Dê um nome ao seu servidor MCP', - serverUrl: 'URL do Servidor', - serverUrlPlaceholder: 'URL para o endpoint do servidor', - serverUrlWarning: 'Atualizar o endereço do servidor pode interromper aplicações que dependem deste servidor', - serverIdentifier: 'Identificador do Servidor', - serverIdentifierTip: 'Identificador único para o servidor MCP dentro do espaço de trabalho. Apenas letras minúsculas, números, sublinhados e hífens. Até 24 caracteres.', - serverIdentifierPlaceholder: 'Identificador único, ex: meu-servidor-mcp', - serverIdentifierWarning: 'O servidor não será reconhecido por aplicativos existentes após uma mudança de ID', - cancel: 'Cancelar', - save: 'Salvar', - confirm: 'Adicionar e Autorizar', - sseReadTimeout: 'Tempo limite de leitura SSE', - timeout: 'Tempo esgotado', - timeoutPlaceholder: 'trinta', - headerValue: 'Valor do Cabeçalho', - headerKeyPlaceholder: 'por exemplo, Autorização', - addHeader: 'Adicionar Cabeçalho', - headersTip: 'Cabeçalhos HTTP adicionais a serem enviados com as solicitações do servidor MCP', - headers: 'Cabeçalhos', - maskedHeadersTip: 'Os valores do cabeçalho estão mascarados por segurança. As alterações atualizarão os valores reais.', - headerKey: 'Nome do Cabeçalho', - noHeaders: 'Nenhum cabeçalho personalizado configurado', - headerValuePlaceholder: 'ex: Token de portador 123', - useDynamicClientRegistration: 'Usar Registro Dinâmico de Cliente', - configurations: 'Configurações', - clientSecret: 'Segredo do Cliente', - authentication: 'Autenticação', - clientID: 'ID do Cliente', - clientSecretPlaceholder: 'Segredo do Cliente', - redirectUrlWarning: 'Por favor, configure sua URL de redirecionamento OAuth para:', - }, - delete: 'Remover Servidor MCP', - deleteConfirmTitle: 'Você gostaria de remover {{mcp}}?', - operation: { - edit: 'Editar', - remove: 'Remover', - }, - authorize: 'Autorizar', - authorizing: 'Autorizando...', - authorizingRequired: 'Autorização é necessária', - authorizeTip: 'Após a autorização, as ferramentas serão exibidas aqui.', - update: 'Atualizar', - updating: 'Atualizando', - gettingTools: 'Obtendo Ferramentas...', - updateTools: 'Atualizando Ferramentas...', - toolsEmpty: 'Ferramentas não carregadas', - getTools: 'Obter ferramentas', - toolUpdateConfirmTitle: 'Atualizar Lista de Ferramentas', - toolUpdateConfirmContent: 'Atualizar a lista de ferramentas pode afetar aplicativos existentes. Você deseja continuar?', - toolsNum: '{{count}} ferramentas incluídas', - onlyTool: '1 ferramenta incluída', - identifier: 'Identificador do Servidor (Clique para Copiar)', - server: { - title: 'Servidor MCP', - url: 'URL do Servidor', - reGen: 'Você deseja regenerar a URL do servidor?', - addDescription: 'Adicionar descrição', - edit: 'Editar descrição', - modal: { - addTitle: 'Adicionar descrição para habilitar o servidor MCP', - editTitle: 'Editar descrição', - description: 'Descrição', - descriptionPlaceholder: 'Explique o que esta ferramenta faz e como deve ser utilizada pelo LLM', - parameters: 'Parâmetros', - parametersTip: 'Adicione descrições para cada parâmetro para ajudar o LLM a entender seus propósitos e restrições.', - parametersPlaceholder: 'Propósito e restrições do parâmetro', - confirm: 'Habilitar Servidor MCP', - }, - publishTip: 'Aplicativo não publicado. Por favor, publique o aplicativo primeiro.', - }, - toolItem: { - noDescription: 'Sem descrição', - parameters: 'Parâmetros', - }, - }, - allTools: 'Todas as ferramentas', -} - -export default translation diff --git a/web/i18n/pt-BR/workflow.json b/web/i18n/pt-BR/workflow.json new file mode 100644 index 0000000000..3337a2e032 --- /dev/null +++ b/web/i18n/pt-BR/workflow.json @@ -0,0 +1,1294 @@ +{ + "common": { + "undo": "Desfazer", + "redo": "Refazer", + "editing": "Editando", + "autoSaved": "Salvo automaticamente", + "unpublished": "Não publicado", + "published": "Publicado", + "publish": "Publicar", + "update": "Atualizar", + "run": "Executar teste", + "running": "Executando", + "inRunMode": "No modo de execução", + "inPreview": "Em visualização", + "inPreviewMode": "No modo de visualização", + "preview": "Visualizar", + "viewRunHistory": "Ver histórico de execução", + "runHistory": "Histórico de execução", + "goBackToEdit": "Voltar para o editor", + "conversationLog": "Registro de conversa", + "debugAndPreview": "Visualizar", + "restart": "Reiniciar", + "currentDraft": "Rascunho atual", + "currentDraftUnpublished": "Rascunho atual não publicado", + "latestPublished": "Último publicado", + "publishedAt": "Publicado em", + "restore": "Restaurar", + "runApp": "Executar aplicativo", + "batchRunApp": "Executar aplicativo em lote", + "accessAPIReference": "Acessar referência da API", + "embedIntoSite": "Incorporar ao site", + "addTitle": "Adicionar título...", + "addDescription": "Adicionar descrição...", + "noVar": "Sem variável", + "searchVar": "Buscar variável", + "variableNamePlaceholder": "Nome da variável", + "setVarValuePlaceholder": "Definir valor da variável", + "needConnectTip": "Este passo não está conectado a nada", + "maxTreeDepth": "Limite máximo de {{depth}} nós por ramo", + "workflowProcess": "Processo de fluxo de trabalho", + "notRunning": "Ainda não está em execução", + "previewPlaceholder": "Digite o conteúdo na caixa abaixo para começar a depurar o Chatbot", + "effectVarConfirm": { + "title": "Remover variável", + "content": "A variável é usada em outros nós. Você ainda deseja removê-la?" + }, + "insertVarTip": "Pressione a tecla '/' para inserir rapidamente", + "processData": "Processar dados", + "input": "Entrada", + "output": "Saída", + "jinjaEditorPlaceholder": "Digite '/' ou '{' para inserir variável", + "viewOnly": "Apenas visualização", + "showRunHistory": "Mostrar histórico de execução", + "enableJinja": "Ativar suporte ao template Jinja", + "learnMore": "Saiba mais", + "copy": "Copiar", + "duplicate": "Duplicar", + "pasteHere": "Colar aqui", + "pointerMode": "Modo ponteiro", + "handMode": "Modo mão", + "model": "Modelo", + "workflowAsTool": "Fluxo de trabalho como ferramenta", + "configureRequired": "Configuração necessária", + "configure": "Configurar", + "manageInTools": "Gerenciar nas ferramentas", + "workflowAsToolTip": "É necessária a reconfiguração da ferramenta após a atualização do fluxo de trabalho.", + "viewDetailInTracingPanel": "Ver detalhes", + "importSuccess": "Sucesso da importação", + "chooseDSL": "Escolha o arquivo DSL(yml)", + "importFailure": "Falha na importação", + "syncingData": "Sincronizando dados, apenas alguns segundos.", + "overwriteAndImport": "Substituir e importar", + "importDSLTip": "O rascunho atual será substituído. Exporte o fluxo de trabalho como backup antes de importar.", + "backupCurrentDraft": "Fazer backup do rascunho atual", + "importDSL": "Importar DSL", + "parallelTip": { + "click": { + "title": "Clique", + "desc": "para adicionar" + }, + "drag": { + "title": "Arrastar", + "desc": "para conectar" + }, + "limit": "O paralelismo é limitado a {{num}} ramificações.", + "depthLimit": "Limite de camada de aninhamento paralelo de {{num}} camadas" + }, + "disconnect": "Desligar", + "jumpToNode": "Ir para este nó", + "addParallelNode": "Adicionar nó paralelo", + "parallel": "PARALELO", + "branch": "RAMIFICAÇÃO", + "ImageUploadLegacyTip": "Agora você pode criar variáveis de tipo de arquivo no formulário inicial. Não daremos mais suporte ao recurso de upload de imagens no futuro.", + "fileUploadTip": "Os recursos de upload de imagens foram atualizados para upload de arquivos.", + "importWarning": "Cuidado", + "importWarningDetails": "A diferença de versão DSL pode afetar determinados recursos", + "openInExplore": "Abrir no Explore", + "onFailure": "Em caso de falha", + "addFailureBranch": "Adicionar ramificação com falha", + "noHistory": "Sem História", + "loadMore": "Carregar mais fluxos de trabalho", + "exportPNG": "Exportar como PNG", + "publishUpdate": "Publicar Atualização", + "versionHistory": "Histórico de Versão", + "exportImage": "Exportar Imagem", + "exitVersions": "Versões de Sair", + "exportSVG": "Exportar como SVG", + "exportJPEG": "Exportar como JPEG", + "addBlock": "Adicionar Nó", + "needOutputNode": "O nó de Saída deve ser adicionado", + "needAnswerNode": "O nó de resposta deve ser adicionado", + "tagBound": "Número de aplicativos usando esta tag", + "currentView": "Visualização atual", + "currentWorkflow": "Fluxo de trabalho atual", + "moreActions": "Mais ações", + "listening": "Ouvindo", + "chooseStartNodeToRun": "Escolha o nó inicial para executar", + "runAllTriggers": "Executar todos os gatilhos", + "features": "Recursos", + "featuresDescription": "Melhorar a experiência do usuário em aplicativos web", + "featuresDocLink": "Saiba mais", + "needAdd": "O nó {{node}} deve ser adicionado", + "needStartNode": "Pelo menos um nó inicial deve ser adicionado", + "workflowAsToolDisabledHint": "Publique o fluxo de trabalho mais recente e garanta que haja um nó de Entrada do Usuário conectado antes de configurá-lo como uma ferramenta." + }, + "env": { + "envPanelTitle": "Variáveis de Ambiente", + "envDescription": "Variáveis de ambiente podem ser usadas para armazenar informações privadas e credenciais. Elas são somente leitura e podem ser separadas do arquivo DSL durante a exportação.", + "envPanelButton": "Adicionar Variável", + "modal": { + "title": "Adicionar Variável de Ambiente", + "editTitle": "Editar Variável de Ambiente", + "type": "Tipo", + "name": "Nome", + "namePlaceholder": "nome da env", + "value": "Valor", + "valuePlaceholder": "valor da env", + "secretTip": "Usado para definir informações ou dados sensíveis, com configurações DSL configuradas para prevenção de vazamentos.", + "description": "Descrição", + "descriptionPlaceholder": "Descreva a variável" + }, + "export": { + "title": "Exportar variáveis de ambiente secretas?", + "checkbox": "Exportar valores secretos", + "ignore": "Exportar DSL", + "export": "Exportar DSL com valores secretos" + } + }, + "globalVar": { + "title": "Variáveis do sistema", + "description": "Variáveis do sistema são variáveis globais que qualquer nó pode referenciar sem conexões quando o tipo está correto, como o ID do usuário final e o ID do fluxo de trabalho.", + "fieldsDescription": { + "conversationId": "ID da conversa", + "dialogCount": "Contagem de conversas", + "userId": "ID do usuário", + "triggerTimestamp": "Carimbo de data/hora do início da aplicação", + "appId": "ID da aplicação", + "workflowId": "ID do fluxo de trabalho", + "workflowRunId": "ID da execução do fluxo de trabalho" + } + }, + "chatVariable": { + "panelTitle": "Variáveis de Conversação", + "panelDescription": "As Variáveis de Conversação são usadas para armazenar informações interativas que o LLM precisa lembrar, incluindo histórico de conversas, arquivos carregados, preferências do usuário. Elas são de leitura e escrita.", + "docLink": "Visite nossa documentação para saber mais.", + "button": "Adicionar Variável", + "modal": { + "title": "Adicionar Variável de Conversação", + "editTitle": "Editar Variável de Conversação", + "name": "Nome", + "namePlaceholder": "Nome da variável", + "type": "Tipo", + "value": "Valor Padrão", + "valuePlaceholder": "Valor padrão, deixe em branco para não definir", + "description": "Descrição", + "descriptionPlaceholder": "Descreva a variável", + "editInJSON": "Editar em JSON", + "oneByOne": "Adicionar um por um", + "editInForm": "Editar no Formulário", + "arrayValue": "Valor", + "addArrayValue": "Adicionar Valor", + "objectKey": "Chave", + "objectType": "Tipo", + "objectValue": "Valor Padrão" + }, + "storedContent": "Conteúdo armazenado", + "updatedAt": "Atualizado em " + }, + "changeHistory": { + "title": "Histórico de alterações", + "placeholder": "Você ainda não alterou nada", + "clearHistory": "Limpar histórico", + "hint": "Dica", + "hintText": "As ações de edição são rastreadas em um histórico de alterações, que é armazenado em seu dispositivo para a duração desta sessão. Este histórico será apagado quando você sair do editor.", + "stepBackward_one": "{{count}} passo para trás", + "stepBackward_other": "{{count}} passos para trás", + "stepForward_one": "{{count}} passo para frente", + "stepForward_other": "{{count}} passos para frente", + "sessionStart": "Início da sessão", + "currentState": "Estado atual", + "noteAdd": "Nota adicionada", + "noteChange": "Nota alterada", + "noteDelete": "Conexão excluída", + "nodeConnect": "Nó conectado", + "nodeDelete": "Nó deletado", + "nodePaste": "Nó colado", + "nodeTitleChange": "Título do nó alterado", + "nodeAdd": "Nó adicionado", + "nodeDescriptionChange": "Descrição do nó alterada", + "edgeDelete": "Nó desconectado", + "nodeResize": "Nó redimensionado", + "nodeChange": "Nó alterado", + "nodeDragStop": "Nó movido" + }, + "errorMsg": { + "fieldRequired": "{{field}} é obrigatório", + "authRequired": "Autorização é necessária", + "invalidJson": "{{field}} é um JSON inválido", + "fields": { + "variable": "Nome da variável", + "variableValue": "Valor da variável", + "code": "Código", + "model": "Modelo", + "rerankModel": "Modelo de reordenação", + "visionVariable": "Variável de visão" + }, + "invalidVariable": "Variável inválida", + "rerankModelRequired": "Antes de ativar o modelo de reclassificação, confirme se o modelo foi configurado com sucesso nas configurações.", + "toolParameterRequired": "{{field}}: o parâmetro [{{param}}] é necessário", + "noValidTool": "{{field}} nenhuma ferramenta válida selecionada", + "startNodeRequired": "Por favor, adicione um nó inicial antes de {{operation}}" + }, + "singleRun": { + "testRun": "Execução de teste ", + "startRun": "Iniciar execução", + "running": "Executando", + "testRunIteration": "Iteração de execução de teste", + "back": "Voltar", + "iteration": "Iteração", + "loop": "Laço", + "reRun": "Executar novamente", + "preparingDataSource": "Preparando a fonte de dados" + }, + "tabs": { + "tools": "Ferramentas", + "allTool": "Todos", + "customTool": "Personalizado", + "workflowTool": "Fluxo de trabalho", + "question-understand": "Compreensão de perguntas", + "logic": "Lógica", + "transform": "Transformar", + "utilities": "Utilitários", + "noResult": "Nenhum resultado encontrado", + "searchTool": "Ferramenta de pesquisa", + "plugin": "Plug-in", + "agent": "Estratégia do agente", + "blocks": "Nodos", + "searchBlock": "Nó de busca", + "addAll": "Adicionar tudo", + "allAdded": "Todos adicionados", + "sources": "Fontes", + "searchDataSource": "Fonte de dados de pesquisa", + "start": "Começar", + "searchTrigger": "Gatilhos de pesquisa...", + "allTriggers": "Todos os gatilhos", + "noPluginsFound": "Nenhum plugin foi encontrado", + "requestToCommunity": "Solicitações à comunidade", + "featuredTools": "Em destaque", + "showMoreFeatured": "Mostrar mais", + "showLessFeatured": "Mostrar menos", + "installed": "Instalado", + "pluginByAuthor": "Por {{author}}", + "usePlugin": "Selecionar ferramenta", + "hideActions": "Ocultar ferramentas", + "noFeaturedPlugins": "Descubra mais ferramentas no Marketplace", + "noFeaturedTriggers": "Descubra mais gatilhos no Marketplace", + "startDisabledTip": "O nó de gatilho e o nó de entrada do usuário são mutuamente exclusivos." + }, + "blocks": { + "start": "Iniciar", + "end": "Saída", + "answer": "Resposta", + "llm": "LLM", + "knowledge-retrieval": "Recuperação de conhecimento", + "question-classifier": "Classificador de perguntas", + "if-else": "SE/SENÃO", + "code": "Código", + "template-transform": "Modelo", + "http-request": "Requisição HTTP", + "variable-assigner": "Atribuidor de variáveis", + "variable-aggregator": "Agregador de variáveis", + "assigner": "Atribuidor de Variáveis", + "iteration-start": "Início de iteração", + "iteration": "Iteração", + "parameter-extractor": "Extrator de parâmetros", + "list-operator": "Operador de lista", + "document-extractor": "Extrator de documentos", + "agent": "Agente", + "loop-end": "Sair do Loop", + "loop-start": "Início do Loop", + "loop": "Laço", + "knowledge-index": "Base de conhecimento", + "datasource": "Fonte de dados", + "originalStartNode": "nó inicial original", + "trigger-schedule": "Acionador de Agendamento", + "trigger-webhook": "Acionador de Webhook", + "trigger-plugin": "Acionador de Plugin" + }, + "blocksAbout": { + "start": "Definir os parâmetros iniciais para iniciar um fluxo de trabalho", + "end": "Definir a saída e o tipo de resultado de um fluxo de trabalho", + "answer": "Definir o conteúdo da resposta de uma conversa", + "llm": "Invocar grandes modelos de linguagem para responder perguntas ou processar linguagem natural", + "knowledge-retrieval": "Permite consultar conteúdo de texto relacionado a perguntas do usuário a partir da base de conhecimento", + "question-classifier": "Definir as condições de classificação das perguntas dos usuários, LLM pode definir como a conversa progride com base na descrição da classificação", + "if-else": "Permite dividir o fluxo de trabalho em dois ramos com base nas condições if/else", + "code": "Executar um pedaço de código Python ou NodeJS para implementar lógica personalizada", + "template-transform": "Converter dados em string usando a sintaxe de template Jinja", + "http-request": "Permitir que solicitações de servidor sejam enviadas pelo protocolo HTTP", + "variable-assigner": "Agregue variáveis de vários ramos em uma única variável para configuração unificada dos nós finais.", + "assigner": "O nó de atribuição de variáveis é usado para atribuir valores a variáveis graváveis (como variáveis de conversação).", + "variable-aggregator": "Agregue variáveis de vários ramos em uma única variável para configuração unificada dos nós finais.", + "iteration": "Execute múltiplos passos em um objeto lista até que todos os resultados sejam produzidos.", + "parameter-extractor": "Use LLM para extrair parâmetros estruturados da linguagem natural para invocações de ferramentas ou requisições HTTP.", + "document-extractor": "Usado para analisar documentos carregados em conteúdo de texto que é facilmente compreensível pelo LLM.", + "list-operator": "Usado para filtrar ou classificar o conteúdo da matriz.", + "agent": "Invocar grandes modelos de linguagem para responder a perguntas ou processar linguagem natural", + "loop-end": "Equivalente a \"break\". Este nó não possui itens de configuração. Quando o corpo do loop atinge este nó, o loop termina.", + "loop": "Execute um loop de lógica até que a condição de término seja atendida ou o número máximo de loops seja alcançado.", + "knowledge-index": "Base de Conhecimento Sobre", + "datasource": "Fonte de dados Sobre", + "trigger-schedule": "Gatilho de fluxo de trabalho baseado em tempo que inicia fluxos de trabalho em um cronograma", + "trigger-webhook": "O Gatinho de Webhook recebe envios HTTP de sistemas terceirizados para acionar fluxos de trabalho automaticamente.", + "trigger-plugin": "Gatilho de integração de terceiros que inicia fluxos de trabalho a partir de eventos de plataformas externas" + }, + "operator": { + "zoomIn": "Aproximar", + "zoomOut": "Afastar", + "zoomTo50": "Aproximar para 50%", + "zoomTo100": "Aproximar para 100%", + "zoomToFit": "Aproximar para ajustar", + "vertical": "Vertical", + "alignNodes": "Alinhar nós", + "selectionAlignment": "Alinhamento de seleção", + "alignLeft": "Esquerda", + "alignBottom": "Inferior", + "distributeHorizontal": "Distribuir horizontalmente", + "alignMiddle": "Meio", + "alignRight": "Direita", + "horizontal": "Horizontal", + "distributeVertical": "Distribuir verticalmente", + "alignCenter": "Centro", + "alignTop": "Superior" + }, + "panel": { + "userInputField": "Campo de entrada do usuário", + "helpLink": "Ajuda", + "about": "Sobre", + "createdBy": "Criado por ", + "nextStep": "Próximo passo", + "runThisStep": "Executar este passo", + "checklist": "Lista de verificação", + "checklistTip": "Certifique-se de que todos os problemas foram resolvidos antes de publicar", + "checklistResolved": "Todos os problemas foram resolvidos", + "change": "Mudar", + "optional": "(opcional)", + "changeBlock": "Mudar Nó", + "addNextStep": "Adicione o próximo passo neste fluxo de trabalho", + "organizeBlocks": "Organizar nós", + "selectNextStep": "Selecione o próximo passo", + "maximize": "Maximize Canvas", + "minimize": "Sair do Modo Tela Cheia", + "scrollToSelectedNode": "Role até o nó selecionado", + "optional_and_hidden": "(opcional & oculto)", + "goTo": "Ir para", + "startNode": "Iniciar Nó", + "openWorkflow": "Abrir fluxo de trabalho" + }, + "nodes": { + "common": { + "outputVars": "Variáveis de saída", + "insertVarTip": "Inserir variável", + "memory": { + "memory": "Memória", + "memoryTip": "Configurações de memória de conversa", + "windowSize": "Tamanho da janela", + "conversationRoleName": "Nome do papel na conversa", + "user": "Prefixo do usuário", + "assistant": "Prefixo do assistente" + }, + "memories": { + "title": "Memórias", + "tip": "Memória de conversa", + "builtIn": "Integrado" + }, + "errorHandle": { + "none": { + "title": "Nenhum", + "desc": "O nó deixará de ser executado se ocorrer uma exceção e não for tratada" + }, + "defaultValue": { + "title": "Valor padrão", + "desc": "Quando ocorrer um erro, especifique um conteúdo de saída estático.", + "tip": "Em caso de erro, retornará o valor abaixo.", + "inLog": "Exceção de nó, saída de acordo com os valores padrão.", + "output": "Valor padrão de saída" + }, + "failBranch": { + "title": "Ramificação com falha", + "desc": "Quando ocorrer um erro, ele executará a ramificação de exceção", + "customize": "Vá para a tela para personalizar a lógica do branch de falha.", + "customizeTip": "Quando a ramificação de falha é ativada, as exceções geradas pelos nós não encerram o processo. Em vez disso, ele executará automaticamente a ramificação de falha predefinida, permitindo que você forneça mensagens de erro, relatórios, correções ou ações de salto com flexibilidade.", + "inLog": "Node exception, executará automaticamente a ramificação de falha. A saída do nó retornará um tipo de erro e uma mensagem de erro e os passará para o downstream." + }, + "partialSucceeded": { + "tip": "Existem {{num}} nós no processo em execução anormal, vá para rastreamento para verificar os logs." + }, + "title": "Tratamento de erros", + "tip": "Estratégia de tratamento de exceções, disparada quando um nó encontra uma exceção." + }, + "retry": { + "retry": "Repetir", + "retryOnFailure": "Tentar novamente em caso de falha", + "maxRetries": "Máximo de tentativas", + "retryInterval": "Intervalo de repetição", + "retryTimes": "Tente novamente {{times}} vezes em caso de falha", + "retrying": "Repetindo...", + "retrySuccessful": "Repetição bem-sucedida", + "retryFailed": "Falha na nova tentativa", + "retryFailedTimes": "{{times}} tentativas falharam", + "times": "vezes", + "ms": "ms", + "retries": "{{num}} Tentativas" + }, + "typeSwitch": { + "variable": "Use variável", + "input": "Valor de entrada" + }, + "inputVars": "Variáveis de entrada", + "pluginNotInstalled": "O plugin não está instalado" + }, + "start": { + "required": "requerido", + "inputField": "Campo de entrada", + "builtInVar": "Variáveis integradas", + "outputVars": { + "query": "Entrada do usuário", + "memories": { + "des": "Histórico da conversa", + "type": "tipo de mensagem", + "content": "conteúdo da mensagem" + }, + "files": "Lista de arquivos" + }, + "noVarTip": "Defina as entradas que podem ser usadas no Fluxo de Trabalho" + }, + "end": { + "outputs": "Saídas", + "output": { + "type": "tipo de saída", + "variable": "variável de saída" + }, + "type": { + "none": "Nenhum", + "plain-text": "Texto simples", + "structured": "Estruturado" + } + }, + "answer": { + "answer": "Resposta", + "outputVars": "Variáveis de saída" + }, + "llm": { + "model": "modelo", + "variables": "variáveis", + "context": "contexto", + "contextTooltip": "Você pode importar Conhecimento como contexto", + "notSetContextInPromptTip": "Para ativar o recurso de contexto, preencha a variável de contexto no PROMPT.", + "prompt": "prompt", + "roleDescription": { + "system": "Dar instruções de alto nível para a conversa", + "user": "Fornecer instruções, consultas ou qualquer entrada baseada em texto para o modelo", + "assistant": "As respostas do modelo baseadas nas mensagens do usuário" + }, + "addMessage": "Adicionar mensagem", + "vision": "visão", + "files": "Arquivos", + "resolution": { + "name": "Resolução", + "high": "Alta", + "low": "Baixa" + }, + "outputVars": { + "output": "Conteúdo gerado", + "reasoning_content": "Conteúdo de raciocínio", + "usage": "Informações de uso do modelo" + }, + "singleRun": { + "variable": "Variável" + }, + "sysQueryInUser": "sys.query na mensagem do usuário é necessário", + "jsonSchema": { + "warningTips": { + "saveSchema": "Por favor, termine de editar o campo atual antes de salvar o esquema." + }, + "instruction": "Instrução", + "showAdvancedOptions": "Mostrar opções avançadas", + "addField": "Adicionar Campo", + "descriptionPlaceholder": "Adicionar descrição", + "promptTooltip": "Converta a descrição do texto em uma estrutura de esquema JSON padronizada.", + "generating": "Gerando esquema JSON...", + "generate": "Gerar", + "title": "Esquema de Saída Estruturada", + "promptPlaceholder": "Descreva seu Esquema JSON...", + "back": "Voltar", + "doc": "Saiba mais sobre saída estruturada", + "regenerate": "Regenerar", + "resultTip": "Aqui está o resultado gerado. Se você não estiver satisfeito, pode voltar e modificar seu pedido.", + "addChildField": "Adicionar Campo de Criança", + "generationTip": "Você pode usar linguagem natural para criar rapidamente um esquema JSON.", + "generatedResult": "Resultado Gerado", + "import": "Importar de JSON", + "generateJsonSchema": "Gerar Esquema JSON", + "fieldNamePlaceholder": "Nome do Campo", + "resetDefaults": "Reiniciar", + "stringValidations": "Validações de String", + "apply": "Aplicar", + "required": "obrigatório" + }, + "reasoningFormat": { + "tagged": "Mantenha as tags de pensamento", + "title": "Ativar separação de tags de raciocínio", + "separated": "Separe as tags de pensamento", + "tooltip": "Extraia o conteúdo das tags de pensamento e armazene-o no campo reasoning_content." + } + }, + "knowledgeRetrieval": { + "queryVariable": "Variável de consulta", + "knowledge": "Conhecimento", + "outputVars": { + "output": "Dados segmentados recuperados", + "content": "Conteúdo segmentado", + "title": "Título segmentado", + "icon": "Ícone segmentado", + "url": "URL segmentado", + "metadata": "Outros metadados", + "files": "Arquivos recuperados" + }, + "metadata": { + "options": { + "disabled": { + "subTitle": "Não ativando a filtragem de metadados", + "title": "Desativado" + }, + "automatic": { + "desc": "Gere automaticamente condições de filtragem de metadados com base na Variável de Consulta", + "title": "Automático", + "subTitle": "Gerar automaticamente condições de filtragem de metadados com base na consulta do usuário" + }, + "manual": { + "title": "Manual", + "subTitle": "Adicione manualmente as condições de filtragem de metadados" + } + }, + "panel": { + "add": "Adicionar Condição", + "select": "Selecione a variável...", + "datePlaceholder": "Escolha um horário...", + "search": "Pesquisar metadados", + "conditions": "Condições", + "title": "Condições de filtro de metadados", + "placeholder": "Insira o valor" + }, + "title": "Filtragem de Metadados", + "tip": "A filtragem de metadados é o processo de usar atributos de metadados (como etiquetas, categorias ou permissões de acesso) para refinar e controlar a recuperação de informações relevantes dentro de um sistema." + }, + "queryText": "Texto da Consulta", + "queryAttachment": "Imagens de Consulta" + }, + "http": { + "inputVars": "Variáveis de entrada", + "api": "API", + "apiPlaceholder": "Digite a URL, digite ‘/’ para inserir variável", + "notStartWithHttp": "API deve começar com http:// ou https://", + "key": "Chave", + "value": "Valor", + "bulkEdit": "Edição em massa", + "keyValueEdit": "Edição chave-valor", + "headers": "Cabeçalhos", + "params": "Parâmetros", + "body": "Corpo", + "outputVars": { + "body": "Conteúdo da resposta", + "statusCode": "Código de status da resposta", + "headers": "Lista de cabeçalhos da resposta em JSON", + "files": "Lista de arquivos" + }, + "authorization": { + "authorization": "Autorização", + "authorizationType": "Tipo de autorização", + "no-auth": "Nenhuma", + "api-key": "Chave API", + "auth-type": "Tipo de autorização", + "basic": "Básica", + "bearer": "Bearer", + "custom": "Personalizada", + "api-key-title": "Chave API", + "header": "Cabeçalho" + }, + "insertVarPlaceholder": "digite '/' para inserir variável", + "timeout": { + "title": "Timeout", + "connectLabel": "Timeout de conexão", + "connectPlaceholder": "Digite o timeout de conexão em segundos", + "readLabel": "Timeout de leitura", + "readPlaceholder": "Digite o timeout de leitura em segundos", + "writeLabel": "Timeout de escrita", + "writePlaceholder": "Digite o timeout de escrita em segundos" + }, + "type": "Tipo", + "binaryFileVariable": "Variável de arquivo binário", + "extractListPlaceholder": "Insira o índice do item da lista, digite '/' inserir variável", + "curl": { + "placeholder": "Cole a string cURL aqui", + "title": "Importar do cURL" + }, + "verifySSL": { + "title": "Verificar o certificado SSL", + "warningTooltip": "Desabilitar a verificação SSL não é recomendado para ambientes de produção. Isso deve ser usado apenas em desenvolvimento ou teste, pois torna a conexão vulnerável a ameaças de segurança, como ataques man-in-the-middle." + } + }, + "code": { + "inputVars": "Variáveis de entrada", + "outputVars": "Variáveis de saída", + "advancedDependencies": "Dependências avançadas", + "advancedDependenciesTip": "Adicione algumas dependências pré-carregadas que levam mais tempo para consumir ou não são padrão aqui", + "searchDependencies": "Buscar dependências", + "syncFunctionSignature": "Sincronizar a assinatura da função com o código" + }, + "templateTransform": { + "inputVars": "Variáveis de entrada", + "code": "Código", + "codeSupportTip": "Suporta apenas Jinja2", + "outputVars": { + "output": "Conteúdo transformado" + } + }, + "ifElse": { + "if": "Se", + "else": "Senão", + "elseDescription": "Usado para definir a lógica que deve ser executada quando a condição if não é atendida.", + "and": "e", + "or": "ou", + "operator": "Operador", + "notSetVariable": "Por favor, defina a variável primeiro", + "comparisonOperator": { + "contains": "contém", + "not contains": "não contém", + "start with": "começa com", + "end with": "termina com", + "is": "é", + "is not": "não é", + "empty": "está vazio", + "not empty": "não está vazio", + "null": "é nulo", + "not null": "não é nulo", + "in": "em", + "not in": "não em", + "exists": "Existe", + "not exists": "não existe", + "all of": "todos os", + "after": "depois", + "before": "antes" + }, + "enterValue": "Digite o valor", + "addCondition": "Adicionar condição", + "conditionNotSetup": "Condição NÃO configurada", + "selectVariable": "Selecione a variável...", + "optionName": { + "image": "Imagem", + "doc": "Doc", + "url": "URL", + "audio": "Áudio", + "video": "Vídeo", + "localUpload": "Local Upload" + }, + "addSubVariable": "Subvariável", + "select": "Selecionar" + }, + "variableAssigner": { + "title": "Atribuir variáveis", + "outputType": "Tipo de saída", + "varNotSet": "Variável não definida", + "noVarTip": "Adicione as variáveis a serem atribuídas", + "type": { + "string": "String", + "number": "Número", + "object": "Objeto", + "array": "Array" + }, + "aggregationGroup": "Grupo de agregação", + "aggregationGroupTip": "Habilitar este recurso permite que o agregador de variáveis agregue múltiplos conjuntos de variáveis.", + "addGroup": "Adicionar grupo", + "outputVars": { + "varDescribe": "Saída de {{groupName}}" + }, + "setAssignVariable": "Definir variável atribuída" + }, + "assigner": { + "assignedVariable": "Variável Atribuída", + "writeMode": "Modo de Escrita", + "writeModeTip": "Quando a VARIÁVEL ATRIBUÍDA é um array, o modo de anexar adiciona ao final.", + "over-write": "Sobrescrever", + "append": "Anexar", + "plus": "Mais", + "clear": "Limpar", + "setVariable": "Definir Variável", + "variable": "Variável", + "operations": { + "clear": "Claro", + "title": "Operação", + "over-write": "Sobrescrever", + "-=": "-=", + "/=": "/=", + "*=": "*=", + "extend": "Estender", + "append": "Acrescentar", + "+=": "+=", + "set": "Pôr", + "overwrite": "Sobrescrever", + "remove-last": "Remover Último", + "remove-first": "Remover Primeiro" + }, + "selectAssignedVariable": "Selecione a variável atribuída...", + "setParameter": "Definir parâmetro...", + "noVarTip": "Clique no botão \"+\" para adicionar variáveis", + "assignedVarsDescription": "As variáveis atribuídas devem ser variáveis graváveis, como variáveis de conversação.", + "varNotSet": "Variável NÃO definida", + "noAssignedVars": "Nenhuma variável atribuída disponível", + "variables": "Variáveis" + }, + "tool": { + "inputVars": "Variáveis de entrada", + "outputVars": { + "text": "conteúdo gerado pela ferramenta", + "files": { + "title": "arquivos gerados pela ferramenta", + "type": "Tipo de suporte. Agora suporta apenas imagem", + "transfer_method": "Método de transferência. O valor é remote_url ou local_file", + "url": "URL da imagem", + "upload_file_id": "ID do arquivo enviado" + }, + "json": "JSON gerado por ferramenta" + }, + "authorize": "Autorizar", + "insertPlaceholder2": "inserir variável", + "insertPlaceholder1": "Digite ou pressione", + "settings": "Configurações" + }, + "questionClassifiers": { + "model": "modelo", + "inputVars": "Variáveis de entrada", + "outputVars": { + "className": "Nome da classe", + "usage": "Informações de uso do modelo" + }, + "class": "Classe", + "classNamePlaceholder": "Escreva o nome da sua classe", + "advancedSetting": "Configuração avançada", + "topicName": "Nome do tópico", + "topicPlaceholder": "Escreva o nome do seu tópico", + "addClass": "Adicionar classe", + "instruction": "Instrução", + "instructionTip": "Insira instruções adicionais para ajudar o classificador de perguntas a entender melhor como categorizar perguntas.", + "instructionPlaceholder": "Escreva sua instrução" + }, + "parameterExtractor": { + "inputVar": "Variável de entrada", + "outputVars": { + "isSuccess": "É sucesso. Em caso de sucesso, o valor é 1, em caso de falha, o valor é 0.", + "errorReason": "Motivo do erro", + "usage": "Informações de uso do modelo" + }, + "extractParameters": "Extrair parâmetros", + "importFromTool": "Importar das ferramentas", + "addExtractParameter": "Adicionar parâmetro de extração", + "addExtractParameterContent": { + "name": "Nome", + "namePlaceholder": "Nome do parâmetro de extração", + "type": "Tipo", + "typePlaceholder": "Tipo de parâmetro de extração", + "description": "Descrição", + "descriptionPlaceholder": "Descrição do parâmetro de extração", + "required": "Obrigatório", + "requiredContent": "Obrigatório é usado apenas como referência para inferência do modelo, e não para validação obrigatória da saída do parâmetro." + }, + "extractParametersNotSet": "Parâmetros de extração não configurados", + "instruction": "Instrução", + "instructionTip": "Insira instruções adicionais para ajudar o extrator de parâmetros a entender como extrair parâmetros.", + "advancedSetting": "Configuração avançada", + "reasoningMode": "Modo de raciocínio", + "reasoningModeTip": "Você pode escolher o modo de raciocínio apropriado com base na capacidade do modelo de responder a instruções para chamadas de função ou prompts." + }, + "iteration": { + "deleteTitle": "Excluir nó de iteração?", + "deleteDesc": "Excluir o nó de iteração excluirá todos os nós filhos", + "input": "Entrada", + "output": "Variáveis de saída", + "iteration_one": "{{count}} Iteração", + "iteration_other": "{{count}} Iterações", + "currentIteration": "Iteração atual", + "ErrorMethod": { + "continueOnError": "continuar em erro", + "removeAbnormalOutput": "saída anormal de remoção", + "operationTerminated": "Terminada" + }, + "MaxParallelismTitle": "Paralelismo máximo", + "parallelModeEnableTitle": "Modo paralelo ativado", + "errorResponseMethod": "Método de resposta de erro", + "error_other": "{{contagem}} Erros", + "parallelMode": "Modo paralelo", + "parallelModeUpper": "MODO PARALELO", + "error_one": "{{contagem}} Erro", + "parallelModeEnableDesc": "No modo paralelo, as tarefas dentro das iterações dão suporte à execução paralela. Você pode configurar isso no painel de propriedades à direita.", + "comma": ",", + "MaxParallelismDesc": "O paralelismo máximo é usado para controlar o número de tarefas executadas simultaneamente em uma única iteração.", + "answerNodeWarningDesc": "Aviso de modo paralelo: nós de resposta, atribuições de variáveis de conversação e operações persistentes de leitura/gravação em iterações podem causar exceções.", + "parallelPanelDesc": "No modo paralelo, as tarefas na iteração dão suporte à execução paralela.", + "flattenOutput": "Achatar Saída", + "flattenOutputDesc": "Quando ativado, se todas as saídas de iteração forem arrays, elas serão achatadas em um único array. Quando desativado, as saídas manterão uma estrutura de array aninhada." + }, + "note": { + "editor": { + "small": "Pequeno", + "bold": "Ousado", + "openLink": "Abrir", + "strikethrough": "Tachado", + "italic": "Itálico", + "invalidUrl": "URL inválido", + "placeholder": "Escreva sua nota...", + "bulletList": "Lista de marcadores", + "link": "Link", + "enterUrl": "Digite o URL...", + "medium": "Média", + "large": "Grande", + "unlink": "Desvincular", + "showAuthor": "Autor do programa" + }, + "addNote": "Adicionar nota" + }, + "docExtractor": { + "outputVars": { + "text": "Texto extraído" + }, + "inputVar": "Variável de entrada", + "learnMore": "Saiba Mais", + "supportFileTypes": "Tipos de arquivo de suporte: {{types}}." + }, + "listFilter": { + "outputVars": { + "result": "Resultado do filtro", + "last_record": "Último recorde", + "first_record": "Primeiro registro" + }, + "desc": "DESC", + "inputVar": "Variável de entrada", + "selectVariableKeyPlaceholder": "Selecione a chave da subvariável", + "limit": "Topo N", + "orderBy": "Ordenar por", + "filterCondition": "Condição do filtro", + "asc": "ASC", + "filterConditionKey": "Chave de condição do filtro", + "filterConditionComparisonOperator": "Operador de comparação de condição de filtro", + "filterConditionComparisonValue": "Valor da condição do filtro", + "extractsCondition": "Extraia o item N" + }, + "agent": { + "strategy": { + "tooltip": "Diferentes estratégias Agentic determinam como o sistema planeja e executa chamadas de ferramentas de várias etapas", + "searchPlaceholder": "Estratégia de busca agêntica", + "shortLabel": "Estratégia", + "label": "Estratégia Agêntica", + "selectTip": "Selecione a estratégia agêntica", + "configureTipDesc": "Depois de configurar a estratégia agêntica, esse nó carregará automaticamente as configurações restantes. A estratégia afetará o mecanismo de raciocínio da ferramenta de várias etapas.", + "configureTip": "Configure a estratégia agente." + }, + "pluginInstaller": { + "installing": "Instalar", + "install": "Instalar" + }, + "modelNotInMarketplace": { + "desc": "Esse modelo é instalado do repositório Local ou GitHub. Por favor, use após a instalação.", + "title": "Modelo não instalado", + "manageInPlugins": "Gerenciar em plug-ins" + }, + "modelNotSupport": { + "descForVersionSwitch": "A versão do plug-in instalada não fornece esse modelo. Clique para mudar de versão.", + "title": "Modelo não suportado", + "desc": "A versão do plug-in instalada não fornece esse modelo." + }, + "modelSelectorTooltips": { + "deprecated": "Este modelo está obsoleto" + }, + "outputVars": { + "files": { + "type": "Tipo de suporte. Agora suporta apenas imagem", + "upload_file_id": "Carregar ID do arquivo", + "url": "URL da imagem", + "transfer_method": "Método de transferência. O valor é remote_url ou local_file", + "title": "Arquivos gerados pelo agente" + }, + "json": "JSON gerado pelo agente", + "text": "Conteúdo gerado pelo agente", + "usage": "Informações de uso do modelo" + }, + "checkList": { + "strategyNotSelected": "Estratégia não selecionada" + }, + "installPlugin": { + "title": "Instale o plugin", + "install": "Instalar", + "cancel": "Cancelar", + "desc": "Prestes a instalar o seguinte plugin", + "changelog": "Registro de alterações" + }, + "toolNotInstallTooltip": "{{tool}} não está instalado", + "strategyNotFoundDesc": "A versão do plug-in instalada não fornece essa estratégia.", + "maxIterations": "Máximo de iterações", + "model": "modelo", + "strategyNotInstallTooltip": "{{strategy}} não está instalado", + "learnMore": "Saiba Mais", + "modelNotInstallTooltip": "Este modelo não está instalado", + "pluginNotFoundDesc": "Este plugin é instalado a partir do GitHub. Por favor, vá para Plugins para reinstalar", + "pluginNotInstalledDesc": "Este plugin é instalado a partir do GitHub. Por favor, vá para Plugins para reinstalar", + "strategyNotSet": "Estratégia agêntica não definida", + "pluginNotInstalled": "Este plugin não está instalado", + "notAuthorized": "Não autorizado", + "modelNotSelected": "Modelo não selecionado", + "linkToPlugin": "Link para plug-ins", + "configureModel": "Configurar modelo", + "unsupportedStrategy": "Estratégia sem suporte", + "strategyNotFoundDescAndSwitchVersion": "A versão do plug-in instalada não fornece essa estratégia. Clique para mudar de versão.", + "tools": "Ferramentas", + "toolNotAuthorizedTooltip": "{{ferramenta}} Não autorizado", + "toolbox": "caixa de ferramentas", + "parameterSchema": "Esquema de Parâmetro", + "clickToViewParameterSchema": "Clique para ver o esquema de parâmetros" + }, + "loop": { + "ErrorMethod": { + "removeAbnormalOutput": "Remover Saída Anormal", + "operationTerminated": "Terminado", + "continueOnError": "Continue em Caso de Erro" + }, + "errorResponseMethod": "Método de Resposta de Erro", + "loop_one": "{{count}} Loop", + "inputMode": "Modo de Entrada", + "setLoopVariables": "Defina variáveis dentro do escopo do loop", + "totalLoopCount": "Contagem total de loops: {{count}}", + "breakCondition": "Condição de Término de Loop", + "comma": ",", + "input": "Entrada", + "variableName": "Nome da Variável", + "initialLoopVariables": "Variáveis de Loop Iniciais", + "exitConditionTip": "Um nó de loop precisa de pelo menos uma condição de saída", + "loopNode": "Nó de Loop", + "loopMaxCount": "Contagem Máxima de Loop", + "currentLoopCount": "Contagem atual de loops: {{count}}", + "deleteTitle": "Excluir Nó de Loop?", + "error_other": "{{count}} Erros", + "loop_other": "{{count}} Laços", + "output": "Variável de Saída", + "error_one": "{{count}} Erro", + "finalLoopVariables": "Variáveis do Loop Final", + "loopMaxCountError": "Por favor, insira um limite máximo de loop válido, variando de 1 a {{maxCount}}", + "loopVariables": "Variáveis de Loop", + "breakConditionTip": "Somente variáveis dentro de laços com condições de término e variáveis de conversa podem ser referenciadas.", + "currentLoop": "Laço Atual", + "deleteDesc": "A exclusão do nó de loop removerá todos os nós filhos" + }, + "dataSource": { + "add": "Adicionar fonte de dados", + "supportedFileFormats": "Formatos de arquivo suportados", + "supportedFileFormatsPlaceholder": "Extensão de arquivo, e.g. doc" + }, + "knowledgeBase": { + "chunkStructureTip": { + "title": "Escolha uma estrutura de blocos", + "learnMore": "Saiba Mais", + "message": "A Base de Conhecimento Dify oferece suporte a três estruturas de agrupamento: Geral, Pai-filho e Perguntas e Respostas. Cada base de conhecimento pode ter apenas uma estrutura. A saída do nó anterior deve estar alinhada com a estrutura de partes selecionada. Observe que a escolha da estrutura de agrupamento afeta os métodos de índice disponíveis." + }, + "retrievalSettingIsRequired": "A configuração de recuperação é necessária", + "changeChunkStructure": "Alterar estrutura de blocos", + "chunkStructure": "Estrutura de Chunk", + "chunkIsRequired": "A estrutura de blocos é necessária", + "aboutRetrieval": "sobre o método de recuperação.", + "chooseChunkStructure": "Escolha uma estrutura de blocos", + "indexMethodIsRequired": "O método de índice é necessário", + "chunksInput": "Pedaços", + "chunksInputTip": "A variável de entrada do nó da base de conhecimento é Chunks. O tipo da variável é um objeto com um esquema JSON específico que deve ser consistente com a estrutura de chunk selecionada.", + "chunksVariableIsRequired": "A variável 'chunks' é obrigatória", + "embeddingModelIsRequired": "Modelo de incorporação é necessário", + "rerankingModelIsRequired": "Um modelo de reclassificação é necessário", + "embeddingModelIsInvalid": "O modelo de incorporação é inválido", + "rerankingModelIsInvalid": "O modelo de reclassificação é inválido" + }, + "triggerPlugin": { + "authorized": "Autorizado", + "notConfigured": "Não Configurado", + "notAuthorized": "Não Autorizado", + "selectSubscription": "Selecionar Assinatura", + "availableSubscriptions": "Assinaturas Disponíveis", + "addSubscription": "Adicionar Nova Assinatura", + "removeSubscription": "Cancelar Assinatura", + "subscriptionRemoved": "Assinatura removida com sucesso", + "error": "Erro", + "configuration": "Configuração", + "remove": "Remover", + "or": "OU", + "useOAuth": "Usar OAuth", + "useApiKey": "Usar chave de API", + "authenticationFailed": "Autenticação falhou", + "authenticationSuccess": "Autenticação bem-sucedida", + "oauthConfigFailed": "Falha na configuração do OAuth", + "configureOAuthClient": "Configurar Cliente OAuth", + "oauthClientDescription": "Configure as credenciais de cliente OAuth para habilitar a autenticação", + "oauthClientSaved": "Configuração do cliente OAuth salva com sucesso", + "configureApiKey": "Configurar Chave de API", + "apiKeyDescription": "Configure as credenciais da chave de API para autenticação", + "apiKeyConfigured": "Chave de API configurada com sucesso", + "configurationFailed": "Configuração falhou", + "failedToStart": "Falha ao iniciar o processo de autenticação", + "credentialsVerified": "Credenciais verificadas com sucesso", + "credentialVerificationFailed": "Falha na verificação das credenciais", + "verifyAndContinue": "Verificar e Continuar", + "configureParameters": "Configurar Parâmetros", + "parametersDescription": "Configure os parâmetros e propriedades do gatilho", + "configurationComplete": "Configuração Concluída", + "configurationCompleteDescription": "Seu gatilho foi configurado com sucesso", + "configurationCompleteMessage": "Sua configuração de gatilho está agora completa e pronta para uso.", + "parameters": "Parâmetros", + "properties": "Propriedades", + "propertiesDescription": "Propriedades de configuração adicionais para este gatilho", + "noConfigurationRequired": "Nenhuma configuração adicional é necessária para este gatilho.", + "subscriptionName": "Nome da Assinatura", + "subscriptionNameDescription": "Digite um nome único para esta assinatura de gatilho", + "subscriptionNamePlaceholder": "Digite o nome da assinatura...", + "subscriptionNameRequired": "O nome da assinatura é obrigatório", + "subscriptionRequired": "É necessário assinatura" + }, + "triggerSchedule": { + "title": "Agenda", + "nodeTitle": "Acionador de Agendamento", + "notConfigured": "Não configurado", + "useCronExpression": "Use expressão cron", + "useVisualPicker": "Usar seletor visual", + "frequency": { + "label": "FREQUÊNCIA", + "hourly": "Por hora", + "daily": "Diário", + "weekly": "Semanal", + "monthly": "Mensal" + }, + "selectFrequency": "Selecionar frequência", + "frequencyLabel": "Frequência", + "nextExecution": "Próxima execução", + "weekdays": "Dias da semana", + "time": "Tempo", + "cronExpression": "Expressão Cron", + "nextExecutionTime": "PRÓXIMA HORA DE EXECUÇÃO", + "nextExecutionTimes": "Próximos 5 tempos de execução", + "startTime": "Hora de Início", + "executeNow": "Executar agora", + "selectDateTime": "Selecionar data e hora", + "hours": "Horas", + "minutes": "Minutos", + "onMinute": "No Minuto", + "days": "Dias", + "lastDay": "Último dia", + "lastDayTooltip": "Nem todos os meses têm 31 dias. Use a opção 'último dia' para selecionar o último dia de cada mês.", + "mode": "Modo", + "timezone": "Fuso horário", + "visualConfig": "Configuração Visual", + "monthlyDay": "Dia do Mês", + "executionTime": "Tempo de Execução", + "invalidTimezone": "Fuso horário inválido", + "invalidCronExpression": "Expressão cron inválida", + "noValidExecutionTime": "Não é possível calcular um tempo de execução válido", + "executionTimeCalculationError": "Falha ao calcular os tempos de execução", + "invalidFrequency": "Frequência inválida", + "invalidStartTime": "Horário de início inválido", + "startTimeMustBeFuture": "O horário de início deve ser no futuro", + "invalidTimeFormat": "Formato de hora inválido (esperado HH:MM AM/PM)", + "invalidWeekday": "Dia da semana inválido: {{weekday}}", + "invalidMonthlyDay": "O dia mensal deve estar entre 1-31 ou \"último\"", + "invalidOnMinute": "O minuto deve estar entre 0 e 59", + "invalidExecutionTime": "Tempo de execução inválido", + "executionTimeMustBeFuture": "O horário de execução deve ser no futuro" + }, + "triggerWebhook": { + "title": "Acionador de Webhook", + "nodeTitle": "🔗 Acionador de Webhook", + "configPlaceholder": "A configuração do gatilho do webhook será implementada aqui", + "webhookUrl": "URL do Webhook", + "webhookUrlPlaceholder": "Clique em gerar para criar a URL do webhook", + "generate": "Gerar", + "copy": "Copiar", + "test": "Teste", + "urlGenerated": "URL do webhook gerada com sucesso", + "urlGenerationFailed": "Falha ao gerar URL do webhook", + "urlCopied": "URL copiada para a área de transferência", + "method": "Método", + "contentType": "Tipo de Conteúdo", + "queryParameters": "Parâmetros de Consulta", + "headerParameters": "Parâmetros do Cabeçalho", + "requestBodyParameters": "Parâmetros do Corpo da Requisição", + "parameterName": "Nome da variável", + "varName": "Nome da variável", + "varType": "Tipo", + "varNamePlaceholder": "Digite o nome da variável...", + "required": "Obrigatório", + "addParameter": "Adicionar", + "addHeader": "Adicionar", + "noParameters": "Nenhum parâmetro configurado", + "noQueryParameters": "Nenhum parâmetro de consulta configurado", + "noHeaders": "Nenhum cabeçalho configurado", + "noBodyParameters": "Nenhum parâmetro de corpo configurado", + "debugUrlTitle": "Para testes, sempre use este URL", + "debugUrlCopy": "Clique para copiar", + "debugUrlCopied": "Copiado!", + "debugUrlPrivateAddressWarning": "Este URL parece ser um endereço interno, o que pode fazer com que as solicitações do webhook falhem. Você pode alterar o TRIGGER_URL para um endereço público.", + "errorHandling": "Tratamento de Erros", + "errorStrategy": "Tratamento de Erros", + "responseConfiguration": "Resposta", + "asyncMode": "Modo Assíncrono", + "statusCode": "Código de Status", + "responseBody": "Corpo da Resposta", + "responseBodyPlaceholder": "Escreva o corpo da sua resposta aqui", + "headers": "Cabeçalhos", + "validation": { + "webhookUrlRequired": "A URL do Webhook é obrigatória", + "invalidParameterType": "Tipo de parâmetro inválido \"{{type}}\" para o parâmetro \"{{name}}\"" + } + } + }, + "tracing": { + "stopBy": "Parado por {{user}}" + }, + "variableReference": { + "noAssignedVars": "Nenhuma variável atribuída disponível", + "noVarsForOperation": "Não há variáveis disponíveis para atribuição com a operação selecionada.", + "conversationVars": "variáveis de conversação", + "assignedVarsDescription": "As variáveis atribuídas devem ser variáveis graváveis, como", + "noAvailableVars": "Nenhuma variável disponível" + }, + "versionHistory": { + "filter": { + "all": "Todos", + "empty": "Nenhuma versão histórica correspondente encontrada", + "reset": "Redefinir Filtro", + "onlyYours": "Somente seu", + "onlyShowNamedVersions": "Mostre apenas versões nomeadas" + }, + "editField": { + "titleLengthLimit": "O título não pode exceder {{limit}} caracteres", + "releaseNotes": "Notas de Lançamento", + "releaseNotesLengthLimit": "As notas de lançamento não podem exceder {{limit}} caracteres", + "title": "Título" + }, + "action": { + "updateFailure": "Falha ao atualizar a versão", + "updateSuccess": "Versão atualizada", + "deleteSuccess": "Versão excluída", + "restoreFailure": "Falha ao restaurar versão", + "restoreSuccess": "Versão restaurada", + "deleteFailure": "Falha ao deletar versão", + "copyIdSuccess": "ID copiado para a área de transferência" + }, + "title": "Versões", + "latest": "Último", + "nameThisVersion": "Nomeie esta versão", + "defaultName": "Versão Sem Título", + "releaseNotesPlaceholder": "Descreva o que mudou", + "editVersionInfo": "Editar informações da versão", + "restorationTip": "Após a restauração da versão, o rascunho atual será substituído.", + "currentDraft": "Rascunho Atual", + "deletionTip": "A exclusão é irreversível, por favor confirme.", + "copyId": "Copiar ID" + }, + "debug": { + "noData": { + "runThisNode": "Execute este nó", + "description": "Os resultados da última execução serão exibidos aqui" + }, + "variableInspect": { + "trigger": { + "normal": "Inspecionar Variável", + "stop": "Pare de correr", + "clear": "Claro", + "running": "Status de execução do cache", + "cached": "Ver variáveis em cache" + }, + "systemNode": "Sistema", + "edited": "Editado", + "clearAll": "Redefinir tudo", + "clearNode": "Limpar variável em cache", + "emptyLink": "Saiba mais", + "chatNode": "Conversa", + "envNode": "Ambiente", + "title": "Inspecionar Variável", + "reset": "Redefinir para o último valor de execução", + "resetConversationVar": "Redefinir a variável da conversa para o valor padrão", + "view": "Ver log", + "emptyTip": "Após passar por um nó na tela ou executar um nó passo a passo, você pode visualizar o valor atual da variável do nó na Inspecção de Variáveis.", + "export": "exportação", + "largeData": "Dados grandes, visualização somente leitura. Exportar para ver tudo.", + "exportToolTip": "Exportar variável como arquivo", + "largeDataNoExport": "Dados grandes - apenas visualização parcial", + "listening": { + "title": "Aguardando eventos dos gatilhos...", + "tip": "Agora você pode simular gatilhos de eventos enviando solicitações de teste para o endpoint HTTP {{nodeName}} ou usá-lo como uma URL de callback para depuração de eventos ao vivo. Todos os resultados podem ser visualizados diretamente no Inspetor de Variáveis.", + "tipPlugin": "Agora você pode criar eventos em {{- pluginName}} e recuperar resultados desses eventos no Inspetor de Variáveis.", + "tipSchedule": "Ouvindo eventos de gatilhos de agendamento.\nPróxima execução agendada: {{nextTriggerTime}}", + "tipFallback": "Aguardando eventos de gatilho. As saídas aparecerão aqui.", + "defaultNodeName": "este gatilho", + "defaultPluginName": "este gatilho de plugin", + "defaultScheduleTime": "Não configurado", + "selectedTriggers": "gatilhos selecionados", + "stopButton": "Pare" + } + }, + "settingsTab": "Configurações", + "lastRunTab": "Última execução", + "relations": { + "noDependents": "Sem dependentes", + "dependenciesDescription": "Nós dos quais esse nó depende", + "dependents": "Dependentes", + "dependencies": "Dependências", + "dependentsDescription": "Nós que dependem desse nó", + "noDependencies": "Sem dependências" + }, + "relationsTab": "Relações", + "noMatchingInputsFound": "Nenhuma entrada correspondente encontrada na última execução.", + "copyLastRunError": "Falha ao copiar as entradas da última execução", + "noLastRunFound": "Nenhuma execução anterior encontrada.", + "copyLastRun": "Copiar Última Execução", + "lastOutput": "Última Saída", + "lastRunInputsCopied": "{{count}} entrada(s) copiadas da última execução" + }, + "sidebar": { + "exportWarning": "Exportar a versão salva atual", + "exportWarningDesc": "Isto irá exportar a versão atual salva do seu fluxo de trabalho. Se você tiver alterações não salvas no editor, por favor, salve-as primeiro utilizando a opção de exportação na tela do fluxo de trabalho." + }, + "publishLimit": { + "startNodeTitlePrefix": "Atualizar para", + "startNodeTitleSuffix": "desbloquear gatilhos ilimitados por fluxo de trabalho", + "startNodeDesc": "Você atingiu o limite de 2 gatilhos por fluxo de trabalho para este plano. Faça um upgrade para publicar este fluxo de trabalho." + }, + "error": { + "startNodeRequired": "Por favor, adicione um nó inicial antes de {{operation}}", + "operations": { + "connectingNodes": "conectando nós", + "addingNodes": "adicionando nós", + "modifyingWorkflow": "modificando o fluxo de trabalho", + "updatingWorkflow": "atualizando fluxo de trabalho" + } + }, + "customWebhook": "Webhook Personalizado", + "difyTeam": "Equipe Dify", + "triggerStatus": { + "enabled": "GATILHO", + "disabled": "DISPARADOR • DESATIVADO" + }, + "entryNodeStatus": { + "enabled": "INICIAR", + "disabled": "INICIAR • DESATIVADO" + }, + "onboarding": { + "title": "Selecione um nó inicial para começar", + "description": "Diferentes nós iniciais têm diferentes capacidades. Não se preocupe, você sempre pode mudá-los mais tarde.", + "userInputFull": "Entrada do Usuário (nó inicial original)", + "userInputDescription": "Nó inicial que permite definir variáveis de entrada do usuário, com aplicativo web, API de serviço, servidor MCP e fluxo de trabalho como capacidades da ferramenta.", + "trigger": "Gatilho", + "triggerDescription": "Os gatilhos podem servir como o nó inicial de um fluxo de trabalho, como tarefas agendadas, webhooks personalizados ou integrações com outros aplicativos.", + "back": "Voltar", + "learnMore": "Saiba mais", + "aboutStartNode": "sobre o nó inicial.", + "escTip": { + "press": "Imprensa", + "key": "esc", + "toDismiss": "dispensar" + } + } +} diff --git a/web/i18n/pt-BR/workflow.ts b/web/i18n/pt-BR/workflow.ts deleted file mode 100644 index 240635dd4e..0000000000 --- a/web/i18n/pt-BR/workflow.ts +++ /dev/null @@ -1,1296 +0,0 @@ -const translation = { - common: { - undo: 'Desfazer', - redo: 'Refazer', - editing: 'Editando', - autoSaved: 'Salvo automaticamente', - unpublished: 'Não publicado', - published: 'Publicado', - publish: 'Publicar', - update: 'Atualizar', - run: 'Executar teste', - running: 'Executando', - inRunMode: 'No modo de execução', - inPreview: 'Em visualização', - inPreviewMode: 'No modo de visualização', - preview: 'Visualizar', - viewRunHistory: 'Ver histórico de execução', - runHistory: 'Histórico de execução', - goBackToEdit: 'Voltar para o editor', - conversationLog: 'Registro de conversa', - debugAndPreview: 'Visualizar', - restart: 'Reiniciar', - currentDraft: 'Rascunho atual', - currentDraftUnpublished: 'Rascunho atual não publicado', - latestPublished: 'Último publicado', - publishedAt: 'Publicado em', - restore: 'Restaurar', - runApp: 'Executar aplicativo', - batchRunApp: 'Executar aplicativo em lote', - accessAPIReference: 'Acessar referência da API', - embedIntoSite: 'Incorporar ao site', - addTitle: 'Adicionar título...', - addDescription: 'Adicionar descrição...', - noVar: 'Sem variável', - searchVar: 'Buscar variável', - variableNamePlaceholder: 'Nome da variável', - setVarValuePlaceholder: 'Definir valor da variável', - needConnectTip: 'Este passo não está conectado a nada', - maxTreeDepth: 'Limite máximo de {{depth}} nós por ramo', - workflowProcess: 'Processo de fluxo de trabalho', - notRunning: 'Ainda não está em execução', - previewPlaceholder: 'Digite o conteúdo na caixa abaixo para começar a depurar o Chatbot', - effectVarConfirm: { - title: 'Remover variável', - content: 'A variável é usada em outros nós. Você ainda deseja removê-la?', - }, - insertVarTip: 'Pressione a tecla \'/\' para inserir rapidamente', - processData: 'Processar dados', - input: 'Entrada', - output: 'Saída', - jinjaEditorPlaceholder: 'Digite \'/\' ou \'{\' para inserir variável', - viewOnly: 'Apenas visualização', - showRunHistory: 'Mostrar histórico de execução', - enableJinja: 'Ativar suporte ao template Jinja', - learnMore: 'Saiba mais', - copy: 'Copiar', - duplicate: 'Duplicar', - pasteHere: 'Colar aqui', - pointerMode: 'Modo ponteiro', - handMode: 'Modo mão', - model: 'Modelo', - workflowAsTool: 'Fluxo de trabalho como ferramenta', - configureRequired: 'Configuração necessária', - configure: 'Configurar', - manageInTools: 'Gerenciar nas ferramentas', - workflowAsToolTip: 'É necessária a reconfiguração da ferramenta após a atualização do fluxo de trabalho.', - viewDetailInTracingPanel: 'Ver detalhes', - importSuccess: 'Sucesso da importação', - chooseDSL: 'Escolha o arquivo DSL(yml)', - importFailure: 'Falha na importação', - syncingData: 'Sincronizando dados, apenas alguns segundos.', - overwriteAndImport: 'Substituir e importar', - importDSLTip: 'O rascunho atual será substituído. Exporte o fluxo de trabalho como backup antes de importar.', - backupCurrentDraft: 'Fazer backup do rascunho atual', - importDSL: 'Importar DSL', - parallelTip: { - click: { - title: 'Clique', - desc: 'para adicionar', - }, - drag: { - title: 'Arrastar', - desc: 'para conectar', - }, - limit: 'O paralelismo é limitado a {{num}} ramificações.', - depthLimit: 'Limite de camada de aninhamento paralelo de {{num}} camadas', - }, - disconnect: 'Desligar', - jumpToNode: 'Ir para este nó', - addParallelNode: 'Adicionar nó paralelo', - parallel: 'PARALELO', - branch: 'RAMIFICAÇÃO', - ImageUploadLegacyTip: 'Agora você pode criar variáveis de tipo de arquivo no formulário inicial. Não daremos mais suporte ao recurso de upload de imagens no futuro.', - fileUploadTip: 'Os recursos de upload de imagens foram atualizados para upload de arquivos.', - importWarning: 'Cuidado', - importWarningDetails: 'A diferença de versão DSL pode afetar determinados recursos', - openInExplore: 'Abrir no Explore', - onFailure: 'Em caso de falha', - addFailureBranch: 'Adicionar ramificação com falha', - noHistory: 'Sem História', - loadMore: 'Carregar mais fluxos de trabalho', - exportPNG: 'Exportar como PNG', - publishUpdate: 'Publicar Atualização', - versionHistory: 'Histórico de Versão', - exportImage: 'Exportar Imagem', - exitVersions: 'Versões de Sair', - exportSVG: 'Exportar como SVG', - exportJPEG: 'Exportar como JPEG', - addBlock: 'Adicionar Nó', - needOutputNode: 'O nó de Saída deve ser adicionado', - needAnswerNode: 'O nó de resposta deve ser adicionado', - tagBound: 'Número de aplicativos usando esta tag', - currentView: 'Visualização atual', - currentWorkflow: 'Fluxo de trabalho atual', - moreActions: 'Mais ações', - listening: 'Ouvindo', - chooseStartNodeToRun: 'Escolha o nó inicial para executar', - runAllTriggers: 'Executar todos os gatilhos', - features: 'Recursos', - featuresDescription: 'Melhorar a experiência do usuário em aplicativos web', - featuresDocLink: 'Saiba mais', - needAdd: 'O nó {{node}} deve ser adicionado', - needStartNode: 'Pelo menos um nó inicial deve ser adicionado', - workflowAsToolDisabledHint: 'Publique o fluxo de trabalho mais recente e garanta que haja um nó de Entrada do Usuário conectado antes de configurá-lo como uma ferramenta.', - }, - env: { - envPanelTitle: 'Variáveis de Ambiente', - envDescription: 'Variáveis de ambiente podem ser usadas para armazenar informações privadas e credenciais. Elas são somente leitura e podem ser separadas do arquivo DSL durante a exportação.', - envPanelButton: 'Adicionar Variável', - modal: { - title: 'Adicionar Variável de Ambiente', - editTitle: 'Editar Variável de Ambiente', - type: 'Tipo', - name: 'Nome', - namePlaceholder: 'nome da env', - value: 'Valor', - valuePlaceholder: 'valor da env', - secretTip: 'Usado para definir informações ou dados sensíveis, com configurações DSL configuradas para prevenção de vazamentos.', - description: 'Descrição', - descriptionPlaceholder: 'Descreva a variável', - }, - export: { - title: 'Exportar variáveis de ambiente secretas?', - checkbox: 'Exportar valores secretos', - ignore: 'Exportar DSL', - export: 'Exportar DSL com valores secretos', - }, - }, - globalVar: { - title: 'Variáveis do sistema', - description: 'Variáveis do sistema são variáveis globais que qualquer nó pode referenciar sem conexões quando o tipo está correto, como o ID do usuário final e o ID do fluxo de trabalho.', - fieldsDescription: { - conversationId: 'ID da conversa', - dialogCount: 'Contagem de conversas', - userId: 'ID do usuário', - triggerTimestamp: 'Carimbo de data/hora do início da aplicação', - appId: 'ID da aplicação', - workflowId: 'ID do fluxo de trabalho', - workflowRunId: 'ID da execução do fluxo de trabalho', - }, - }, - chatVariable: { - panelTitle: 'Variáveis de Conversação', - panelDescription: 'As Variáveis de Conversação são usadas para armazenar informações interativas que o LLM precisa lembrar, incluindo histórico de conversas, arquivos carregados, preferências do usuário. Elas são de leitura e escrita.', - docLink: 'Visite nossa documentação para saber mais.', - button: 'Adicionar Variável', - modal: { - title: 'Adicionar Variável de Conversação', - editTitle: 'Editar Variável de Conversação', - name: 'Nome', - namePlaceholder: 'Nome da variável', - type: 'Tipo', - value: 'Valor Padrão', - valuePlaceholder: 'Valor padrão, deixe em branco para não definir', - description: 'Descrição', - descriptionPlaceholder: 'Descreva a variável', - editInJSON: 'Editar em JSON', - oneByOne: 'Adicionar um por um', - editInForm: 'Editar no Formulário', - arrayValue: 'Valor', - addArrayValue: 'Adicionar Valor', - objectKey: 'Chave', - objectType: 'Tipo', - objectValue: 'Valor Padrão', - }, - storedContent: 'Conteúdo armazenado', - updatedAt: 'Atualizado em ', - }, - changeHistory: { - title: 'Histórico de alterações', - placeholder: 'Você ainda não alterou nada', - clearHistory: 'Limpar histórico', - hint: 'Dica', - hintText: 'As ações de edição são rastreadas em um histórico de alterações, que é armazenado em seu dispositivo para a duração desta sessão. Este histórico será apagado quando você sair do editor.', - stepBackward_one: '{{count}} passo para trás', - stepBackward_other: '{{count}} passos para trás', - stepForward_one: '{{count}} passo para frente', - stepForward_other: '{{count}} passos para frente', - sessionStart: 'Início da sessão', - currentState: 'Estado atual', - noteAdd: 'Nota adicionada', - noteChange: 'Nota alterada', - noteDelete: 'Conexão excluída', - nodeConnect: 'Nó conectado', - nodeDelete: 'Nó deletado', - nodePaste: 'Nó colado', - nodeTitleChange: 'Título do nó alterado', - nodeAdd: 'Nó adicionado', - nodeDescriptionChange: 'Descrição do nó alterada', - edgeDelete: 'Nó desconectado', - nodeResize: 'Nó redimensionado', - nodeChange: 'Nó alterado', - nodeDragStop: 'Nó movido', - }, - errorMsg: { - fieldRequired: '{{field}} é obrigatório', - authRequired: 'Autorização é necessária', - invalidJson: '{{field}} é um JSON inválido', - fields: { - variable: 'Nome da variável', - variableValue: 'Valor da variável', - code: 'Código', - model: 'Modelo', - rerankModel: 'Modelo de reordenação', - visionVariable: 'Variável de visão', - }, - invalidVariable: 'Variável inválida', - rerankModelRequired: 'Antes de ativar o modelo de reclassificação, confirme se o modelo foi configurado com sucesso nas configurações.', - toolParameterRequired: '{{field}}: o parâmetro [{{param}}] é necessário', - noValidTool: '{{field}} nenhuma ferramenta válida selecionada', - startNodeRequired: 'Por favor, adicione um nó inicial antes de {{operation}}', - }, - singleRun: { - testRun: 'Execução de teste ', - startRun: 'Iniciar execução', - running: 'Executando', - testRunIteration: 'Iteração de execução de teste', - back: 'Voltar', - iteration: 'Iteração', - loop: 'Laço', - reRun: 'Executar novamente', - preparingDataSource: 'Preparando a fonte de dados', - }, - tabs: { - 'tools': 'Ferramentas', - 'allTool': 'Todos', - 'customTool': 'Personalizado', - 'workflowTool': 'Fluxo de trabalho', - 'question-understand': 'Compreensão de perguntas', - 'logic': 'Lógica', - 'transform': 'Transformar', - 'utilities': 'Utilitários', - 'noResult': 'Nenhum resultado encontrado', - 'searchTool': 'Ferramenta de pesquisa', - 'plugin': 'Plug-in', - 'agent': 'Estratégia do agente', - 'blocks': 'Nodos', - 'searchBlock': 'Nó de busca', - 'addAll': 'Adicionar tudo', - 'allAdded': 'Todos adicionados', - 'sources': 'Fontes', - 'searchDataSource': 'Fonte de dados de pesquisa', - 'start': 'Começar', - 'searchTrigger': 'Gatilhos de pesquisa...', - 'allTriggers': 'Todos os gatilhos', - 'noPluginsFound': 'Nenhum plugin foi encontrado', - 'requestToCommunity': 'Solicitações à comunidade', - 'featuredTools': 'Em destaque', - 'showMoreFeatured': 'Mostrar mais', - 'showLessFeatured': 'Mostrar menos', - 'installed': 'Instalado', - 'pluginByAuthor': 'Por {{author}}', - 'usePlugin': 'Selecionar ferramenta', - 'hideActions': 'Ocultar ferramentas', - 'noFeaturedPlugins': 'Descubra mais ferramentas no Marketplace', - 'noFeaturedTriggers': 'Descubra mais gatilhos no Marketplace', - 'startDisabledTip': 'O nó de gatilho e o nó de entrada do usuário são mutuamente exclusivos.', - }, - blocks: { - 'start': 'Iniciar', - 'end': 'Saída', - 'answer': 'Resposta', - 'llm': 'LLM', - 'knowledge-retrieval': 'Recuperação de conhecimento', - 'question-classifier': 'Classificador de perguntas', - 'if-else': 'SE/SENÃO', - 'code': 'Código', - 'template-transform': 'Modelo', - 'http-request': 'Requisição HTTP', - 'variable-assigner': 'Atribuidor de variáveis', - 'variable-aggregator': 'Agregador de variáveis', - 'assigner': 'Atribuidor de Variáveis', - 'iteration-start': 'Início de iteração', - 'iteration': 'Iteração', - 'parameter-extractor': 'Extrator de parâmetros', - 'list-operator': 'Operador de lista', - 'document-extractor': 'Extrator de documentos', - 'agent': 'Agente', - 'loop-end': 'Sair do Loop', - 'loop-start': 'Início do Loop', - 'loop': 'Laço', - 'knowledge-index': 'Base de conhecimento', - 'datasource': 'Fonte de dados', - 'originalStartNode': 'nó inicial original', - 'trigger-schedule': 'Acionador de Agendamento', - 'trigger-webhook': 'Acionador de Webhook', - 'trigger-plugin': 'Acionador de Plugin', - }, - blocksAbout: { - 'start': 'Definir os parâmetros iniciais para iniciar um fluxo de trabalho', - 'end': 'Definir a saída e o tipo de resultado de um fluxo de trabalho', - 'answer': 'Definir o conteúdo da resposta de uma conversa', - 'llm': 'Invocar grandes modelos de linguagem para responder perguntas ou processar linguagem natural', - 'knowledge-retrieval': 'Permite consultar conteúdo de texto relacionado a perguntas do usuário a partir da base de conhecimento', - 'question-classifier': 'Definir as condições de classificação das perguntas dos usuários, LLM pode definir como a conversa progride com base na descrição da classificação', - 'if-else': 'Permite dividir o fluxo de trabalho em dois ramos com base nas condições if/else', - 'code': 'Executar um pedaço de código Python ou NodeJS para implementar lógica personalizada', - 'template-transform': 'Converter dados em string usando a sintaxe de template Jinja', - 'http-request': 'Permitir que solicitações de servidor sejam enviadas pelo protocolo HTTP', - 'variable-assigner': 'Agregue variáveis de vários ramos em uma única variável para configuração unificada dos nós finais.', - 'assigner': 'O nó de atribuição de variáveis é usado para atribuir valores a variáveis graváveis (como variáveis de conversação).', - 'variable-aggregator': 'Agregue variáveis de vários ramos em uma única variável para configuração unificada dos nós finais.', - 'iteration': 'Execute múltiplos passos em um objeto lista até que todos os resultados sejam produzidos.', - 'parameter-extractor': 'Use LLM para extrair parâmetros estruturados da linguagem natural para invocações de ferramentas ou requisições HTTP.', - 'document-extractor': 'Usado para analisar documentos carregados em conteúdo de texto que é facilmente compreensível pelo LLM.', - 'list-operator': 'Usado para filtrar ou classificar o conteúdo da matriz.', - 'agent': 'Invocar grandes modelos de linguagem para responder a perguntas ou processar linguagem natural', - 'loop-end': 'Equivalente a "break". Este nó não possui itens de configuração. Quando o corpo do loop atinge este nó, o loop termina.', - 'loop': 'Execute um loop de lógica até que a condição de término seja atendida ou o número máximo de loops seja alcançado.', - 'knowledge-index': 'Base de Conhecimento Sobre', - 'datasource': 'Fonte de dados Sobre', - 'trigger-schedule': 'Gatilho de fluxo de trabalho baseado em tempo que inicia fluxos de trabalho em um cronograma', - 'trigger-webhook': 'O Gatinho de Webhook recebe envios HTTP de sistemas terceirizados para acionar fluxos de trabalho automaticamente.', - 'trigger-plugin': 'Gatilho de integração de terceiros que inicia fluxos de trabalho a partir de eventos de plataformas externas', - }, - operator: { - zoomIn: 'Aproximar', - zoomOut: 'Afastar', - zoomTo50: 'Aproximar para 50%', - zoomTo100: 'Aproximar para 100%', - zoomToFit: 'Aproximar para ajustar', - vertical: 'Vertical', - alignNodes: 'Alinhar nós', - selectionAlignment: 'Alinhamento de seleção', - alignLeft: 'Esquerda', - alignBottom: 'Inferior', - distributeHorizontal: 'Distribuir horizontalmente', - alignMiddle: 'Meio', - alignRight: 'Direita', - horizontal: 'Horizontal', - distributeVertical: 'Distribuir verticalmente', - alignCenter: 'Centro', - alignTop: 'Superior', - }, - panel: { - userInputField: 'Campo de entrada do usuário', - helpLink: 'Ajuda', - about: 'Sobre', - createdBy: 'Criado por ', - nextStep: 'Próximo passo', - runThisStep: 'Executar este passo', - checklist: 'Lista de verificação', - checklistTip: 'Certifique-se de que todos os problemas foram resolvidos antes de publicar', - checklistResolved: 'Todos os problemas foram resolvidos', - change: 'Mudar', - optional: '(opcional)', - changeBlock: 'Mudar Nó', - addNextStep: 'Adicione o próximo passo neste fluxo de trabalho', - organizeBlocks: 'Organizar nós', - selectNextStep: 'Selecione o próximo passo', - maximize: 'Maximize Canvas', - minimize: 'Sair do Modo Tela Cheia', - scrollToSelectedNode: 'Role até o nó selecionado', - optional_and_hidden: '(opcional & oculto)', - goTo: 'Ir para', - startNode: 'Iniciar Nó', - openWorkflow: 'Abrir fluxo de trabalho', - }, - nodes: { - common: { - outputVars: 'Variáveis de saída', - insertVarTip: 'Inserir variável', - memory: { - memory: 'Memória', - memoryTip: 'Configurações de memória de conversa', - windowSize: 'Tamanho da janela', - conversationRoleName: 'Nome do papel na conversa', - user: 'Prefixo do usuário', - assistant: 'Prefixo do assistente', - }, - memories: { - title: 'Memórias', - tip: 'Memória de conversa', - builtIn: 'Integrado', - }, - errorHandle: { - none: { - title: 'Nenhum', - desc: 'O nó deixará de ser executado se ocorrer uma exceção e não for tratada', - }, - defaultValue: { - title: 'Valor padrão', - desc: 'Quando ocorrer um erro, especifique um conteúdo de saída estático.', - tip: 'Em caso de erro, retornará o valor abaixo.', - inLog: 'Exceção de nó, saída de acordo com os valores padrão.', - output: 'Valor padrão de saída', - }, - failBranch: { - title: 'Ramificação com falha', - desc: 'Quando ocorrer um erro, ele executará a ramificação de exceção', - customize: 'Vá para a tela para personalizar a lógica do branch de falha.', - customizeTip: 'Quando a ramificação de falha é ativada, as exceções geradas pelos nós não encerram o processo. Em vez disso, ele executará automaticamente a ramificação de falha predefinida, permitindo que você forneça mensagens de erro, relatórios, correções ou ações de salto com flexibilidade.', - inLog: 'Node exception, executará automaticamente a ramificação de falha. A saída do nó retornará um tipo de erro e uma mensagem de erro e os passará para o downstream.', - }, - partialSucceeded: { - tip: 'Existem {{num}} nós no processo em execução anormal, vá para rastreamento para verificar os logs.', - }, - title: 'Tratamento de erros', - tip: 'Estratégia de tratamento de exceções, disparada quando um nó encontra uma exceção.', - }, - retry: { - retry: 'Repetir', - retryOnFailure: 'Tentar novamente em caso de falha', - maxRetries: 'Máximo de tentativas', - retryInterval: 'Intervalo de repetição', - retryTimes: 'Tente novamente {{times}} vezes em caso de falha', - retrying: 'Repetindo...', - retrySuccessful: 'Repetição bem-sucedida', - retryFailed: 'Falha na nova tentativa', - retryFailedTimes: '{{times}} tentativas falharam', - times: 'vezes', - ms: 'ms', - retries: '{{num}} Tentativas', - }, - typeSwitch: { - variable: 'Use variável', - input: 'Valor de entrada', - }, - inputVars: 'Variáveis de entrada', - pluginNotInstalled: 'O plugin não está instalado', - }, - start: { - required: 'requerido', - inputField: 'Campo de entrada', - builtInVar: 'Variáveis integradas', - outputVars: { - query: 'Entrada do usuário', - memories: { - des: 'Histórico da conversa', - type: 'tipo de mensagem', - content: 'conteúdo da mensagem', - }, - files: 'Lista de arquivos', - }, - noVarTip: 'Defina as entradas que podem ser usadas no Fluxo de Trabalho', - }, - end: { - outputs: 'Saídas', - output: { - type: 'tipo de saída', - variable: 'variável de saída', - }, - type: { - 'none': 'Nenhum', - 'plain-text': 'Texto simples', - 'structured': 'Estruturado', - }, - }, - answer: { - answer: 'Resposta', - outputVars: 'Variáveis de saída', - }, - llm: { - model: 'modelo', - variables: 'variáveis', - context: 'contexto', - contextTooltip: 'Você pode importar Conhecimento como contexto', - notSetContextInPromptTip: 'Para ativar o recurso de contexto, preencha a variável de contexto no PROMPT.', - prompt: 'prompt', - roleDescription: { - system: 'Dar instruções de alto nível para a conversa', - user: 'Fornecer instruções, consultas ou qualquer entrada baseada em texto para o modelo', - assistant: 'As respostas do modelo baseadas nas mensagens do usuário', - }, - addMessage: 'Adicionar mensagem', - vision: 'visão', - files: 'Arquivos', - resolution: { - name: 'Resolução', - high: 'Alta', - low: 'Baixa', - }, - outputVars: { - output: 'Conteúdo gerado', - reasoning_content: 'Conteúdo de raciocínio', - usage: 'Informações de uso do modelo', - }, - singleRun: { - variable: 'Variável', - }, - sysQueryInUser: 'sys.query na mensagem do usuário é necessário', - jsonSchema: { - warningTips: { - saveSchema: 'Por favor, termine de editar o campo atual antes de salvar o esquema.', - }, - instruction: 'Instrução', - showAdvancedOptions: 'Mostrar opções avançadas', - addField: 'Adicionar Campo', - descriptionPlaceholder: 'Adicionar descrição', - promptTooltip: 'Converta a descrição do texto em uma estrutura de esquema JSON padronizada.', - generating: 'Gerando esquema JSON...', - generate: 'Gerar', - title: 'Esquema de Saída Estruturada', - promptPlaceholder: 'Descreva seu Esquema JSON...', - back: 'Voltar', - doc: 'Saiba mais sobre saída estruturada', - regenerate: 'Regenerar', - resultTip: 'Aqui está o resultado gerado. Se você não estiver satisfeito, pode voltar e modificar seu pedido.', - addChildField: 'Adicionar Campo de Criança', - generationTip: 'Você pode usar linguagem natural para criar rapidamente um esquema JSON.', - generatedResult: 'Resultado Gerado', - import: 'Importar de JSON', - generateJsonSchema: 'Gerar Esquema JSON', - fieldNamePlaceholder: 'Nome do Campo', - resetDefaults: 'Reiniciar', - stringValidations: 'Validações de String', - apply: 'Aplicar', - required: 'obrigatório', - }, - reasoningFormat: { - tagged: 'Mantenha as tags de pensamento', - title: 'Ativar separação de tags de raciocínio', - separated: 'Separe as tags de pensamento', - tooltip: 'Extraia o conteúdo das tags de pensamento e armazene-o no campo reasoning_content.', - }, - }, - knowledgeRetrieval: { - queryVariable: 'Variável de consulta', - knowledge: 'Conhecimento', - outputVars: { - output: 'Dados segmentados recuperados', - content: 'Conteúdo segmentado', - title: 'Título segmentado', - icon: 'Ícone segmentado', - url: 'URL segmentado', - metadata: 'Outros metadados', - files: 'Arquivos recuperados', - }, - metadata: { - options: { - disabled: { - subTitle: 'Não ativando a filtragem de metadados', - title: 'Desativado', - }, - automatic: { - desc: 'Gere automaticamente condições de filtragem de metadados com base na Variável de Consulta', - title: 'Automático', - subTitle: 'Gerar automaticamente condições de filtragem de metadados com base na consulta do usuário', - }, - manual: { - title: 'Manual', - subTitle: 'Adicione manualmente as condições de filtragem de metadados', - }, - }, - panel: { - add: 'Adicionar Condição', - select: 'Selecione a variável...', - datePlaceholder: 'Escolha um horário...', - search: 'Pesquisar metadados', - conditions: 'Condições', - title: 'Condições de filtro de metadados', - placeholder: 'Insira o valor', - }, - title: 'Filtragem de Metadados', - tip: 'A filtragem de metadados é o processo de usar atributos de metadados (como etiquetas, categorias ou permissões de acesso) para refinar e controlar a recuperação de informações relevantes dentro de um sistema.', - }, - queryText: 'Texto da Consulta', - queryAttachment: 'Imagens de Consulta', - }, - http: { - inputVars: 'Variáveis de entrada', - api: 'API', - apiPlaceholder: 'Digite a URL, digite ‘/’ para inserir variável', - notStartWithHttp: 'API deve começar com http:// ou https://', - key: 'Chave', - value: 'Valor', - bulkEdit: 'Edição em massa', - keyValueEdit: 'Edição chave-valor', - headers: 'Cabeçalhos', - params: 'Parâmetros', - body: 'Corpo', - outputVars: { - body: 'Conteúdo da resposta', - statusCode: 'Código de status da resposta', - headers: 'Lista de cabeçalhos da resposta em JSON', - files: 'Lista de arquivos', - }, - authorization: { - 'authorization': 'Autorização', - 'authorizationType': 'Tipo de autorização', - 'no-auth': 'Nenhuma', - 'api-key': 'Chave API', - 'auth-type': 'Tipo de autorização', - 'basic': 'Básica', - 'bearer': 'Bearer', - 'custom': 'Personalizada', - 'api-key-title': 'Chave API', - 'header': 'Cabeçalho', - }, - insertVarPlaceholder: 'digite \'/\' para inserir variável', - timeout: { - title: 'Timeout', - connectLabel: 'Timeout de conexão', - connectPlaceholder: 'Digite o timeout de conexão em segundos', - readLabel: 'Timeout de leitura', - readPlaceholder: 'Digite o timeout de leitura em segundos', - writeLabel: 'Timeout de escrita', - writePlaceholder: 'Digite o timeout de escrita em segundos', - }, - type: 'Tipo', - binaryFileVariable: 'Variável de arquivo binário', - extractListPlaceholder: 'Insira o índice do item da lista, digite \'/\' inserir variável', - curl: { - placeholder: 'Cole a string cURL aqui', - title: 'Importar do cURL', - }, - verifySSL: { - title: 'Verificar o certificado SSL', - warningTooltip: 'Desabilitar a verificação SSL não é recomendado para ambientes de produção. Isso deve ser usado apenas em desenvolvimento ou teste, pois torna a conexão vulnerável a ameaças de segurança, como ataques man-in-the-middle.', - }, - }, - code: { - inputVars: 'Variáveis de entrada', - outputVars: 'Variáveis de saída', - advancedDependencies: 'Dependências avançadas', - advancedDependenciesTip: 'Adicione algumas dependências pré-carregadas que levam mais tempo para consumir ou não são padrão aqui', - searchDependencies: 'Buscar dependências', - syncFunctionSignature: 'Sincronizar a assinatura da função com o código', - }, - templateTransform: { - inputVars: 'Variáveis de entrada', - code: 'Código', - codeSupportTip: 'Suporta apenas Jinja2', - outputVars: { - output: 'Conteúdo transformado', - }, - }, - ifElse: { - if: 'Se', - else: 'Senão', - elseDescription: 'Usado para definir a lógica que deve ser executada quando a condição if não é atendida.', - and: 'e', - or: 'ou', - operator: 'Operador', - notSetVariable: 'Por favor, defina a variável primeiro', - comparisonOperator: { - 'contains': 'contém', - 'not contains': 'não contém', - 'start with': 'começa com', - 'end with': 'termina com', - 'is': 'é', - 'is not': 'não é', - 'empty': 'está vazio', - 'not empty': 'não está vazio', - 'null': 'é nulo', - 'not null': 'não é nulo', - 'in': 'em', - 'not in': 'não em', - 'exists': 'Existe', - 'not exists': 'não existe', - 'all of': 'todos os', - 'after': 'depois', - 'before': 'antes', - }, - enterValue: 'Digite o valor', - addCondition: 'Adicionar condição', - conditionNotSetup: 'Condição NÃO configurada', - selectVariable: 'Selecione a variável...', - optionName: { - image: 'Imagem', - doc: 'Doc', - url: 'URL', - audio: 'Áudio', - video: 'Vídeo', - localUpload: 'Local Upload', - }, - addSubVariable: 'Subvariável', - select: 'Selecionar', - }, - variableAssigner: { - title: 'Atribuir variáveis', - outputType: 'Tipo de saída', - varNotSet: 'Variável não definida', - noVarTip: 'Adicione as variáveis a serem atribuídas', - type: { - string: 'String', - number: 'Número', - object: 'Objeto', - array: 'Array', - }, - aggregationGroup: 'Grupo de agregação', - aggregationGroupTip: 'Habilitar este recurso permite que o agregador de variáveis agregue múltiplos conjuntos de variáveis.', - addGroup: 'Adicionar grupo', - outputVars: { - varDescribe: 'Saída de {{groupName}}', - }, - setAssignVariable: 'Definir variável atribuída', - }, - assigner: { - 'assignedVariable': 'Variável Atribuída', - 'writeMode': 'Modo de Escrita', - 'writeModeTip': 'Quando a VARIÁVEL ATRIBUÍDA é um array, o modo de anexar adiciona ao final.', - 'over-write': 'Sobrescrever', - 'append': 'Anexar', - 'plus': 'Mais', - 'clear': 'Limpar', - 'setVariable': 'Definir Variável', - 'variable': 'Variável', - 'operations': { - 'clear': 'Claro', - 'title': 'Operação', - 'over-write': 'Sobrescrever', - '-=': '-=', - '/=': '/=', - '*=': '*=', - 'extend': 'Estender', - 'append': 'Acrescentar', - '+=': '+=', - 'set': 'Pôr', - 'overwrite': 'Sobrescrever', - 'remove-last': 'Remover Último', - 'remove-first': 'Remover Primeiro', - }, - 'selectAssignedVariable': 'Selecione a variável atribuída...', - 'setParameter': 'Definir parâmetro...', - 'noVarTip': 'Clique no botão "+" para adicionar variáveis', - 'assignedVarsDescription': 'As variáveis atribuídas devem ser variáveis graváveis, como variáveis de conversação.', - 'varNotSet': 'Variável NÃO definida', - 'noAssignedVars': 'Nenhuma variável atribuída disponível', - 'variables': 'Variáveis', - }, - tool: { - inputVars: 'Variáveis de entrada', - outputVars: { - text: 'conteúdo gerado pela ferramenta', - files: { - title: 'arquivos gerados pela ferramenta', - type: 'Tipo de suporte. Agora suporta apenas imagem', - transfer_method: 'Método de transferência. O valor é remote_url ou local_file', - url: 'URL da imagem', - upload_file_id: 'ID do arquivo enviado', - }, - json: 'JSON gerado por ferramenta', - }, - authorize: 'Autorizar', - insertPlaceholder2: 'inserir variável', - insertPlaceholder1: 'Digite ou pressione', - settings: 'Configurações', - }, - questionClassifiers: { - model: 'modelo', - inputVars: 'Variáveis de entrada', - outputVars: { - className: 'Nome da classe', - usage: 'Informações de uso do modelo', - }, - class: 'Classe', - classNamePlaceholder: 'Escreva o nome da sua classe', - advancedSetting: 'Configuração avançada', - topicName: 'Nome do tópico', - topicPlaceholder: 'Escreva o nome do seu tópico', - addClass: 'Adicionar classe', - instruction: 'Instrução', - instructionTip: 'Insira instruções adicionais para ajudar o classificador de perguntas a entender melhor como categorizar perguntas.', - instructionPlaceholder: 'Escreva sua instrução', - }, - parameterExtractor: { - inputVar: 'Variável de entrada', - outputVars: { - isSuccess: 'É sucesso. Em caso de sucesso, o valor é 1, em caso de falha, o valor é 0.', - errorReason: 'Motivo do erro', - usage: 'Informações de uso do modelo', - }, - extractParameters: 'Extrair parâmetros', - importFromTool: 'Importar das ferramentas', - addExtractParameter: 'Adicionar parâmetro de extração', - addExtractParameterContent: { - name: 'Nome', - namePlaceholder: 'Nome do parâmetro de extração', - type: 'Tipo', - typePlaceholder: 'Tipo de parâmetro de extração', - description: 'Descrição', - descriptionPlaceholder: 'Descrição do parâmetro de extração', - required: 'Obrigatório', - requiredContent: 'Obrigatório é usado apenas como referência para inferência do modelo, e não para validação obrigatória da saída do parâmetro.', - }, - extractParametersNotSet: 'Parâmetros de extração não configurados', - instruction: 'Instrução', - instructionTip: 'Insira instruções adicionais para ajudar o extrator de parâmetros a entender como extrair parâmetros.', - advancedSetting: 'Configuração avançada', - reasoningMode: 'Modo de raciocínio', - reasoningModeTip: 'Você pode escolher o modo de raciocínio apropriado com base na capacidade do modelo de responder a instruções para chamadas de função ou prompts.', - }, - iteration: { - deleteTitle: 'Excluir nó de iteração?', - deleteDesc: 'Excluir o nó de iteração excluirá todos os nós filhos', - input: 'Entrada', - output: 'Variáveis de saída', - iteration_one: '{{count}} Iteração', - iteration_other: '{{count}} Iterações', - currentIteration: 'Iteração atual', - ErrorMethod: { - continueOnError: 'continuar em erro', - removeAbnormalOutput: 'saída anormal de remoção', - operationTerminated: 'Terminada', - }, - MaxParallelismTitle: 'Paralelismo máximo', - parallelModeEnableTitle: 'Modo paralelo ativado', - errorResponseMethod: 'Método de resposta de erro', - error_other: '{{contagem}} Erros', - parallelMode: 'Modo paralelo', - parallelModeUpper: 'MODO PARALELO', - error_one: '{{contagem}} Erro', - parallelModeEnableDesc: 'No modo paralelo, as tarefas dentro das iterações dão suporte à execução paralela. Você pode configurar isso no painel de propriedades à direita.', - comma: ',', - MaxParallelismDesc: 'O paralelismo máximo é usado para controlar o número de tarefas executadas simultaneamente em uma única iteração.', - answerNodeWarningDesc: 'Aviso de modo paralelo: nós de resposta, atribuições de variáveis de conversação e operações persistentes de leitura/gravação em iterações podem causar exceções.', - parallelPanelDesc: 'No modo paralelo, as tarefas na iteração dão suporte à execução paralela.', - flattenOutput: 'Achatar Saída', - flattenOutputDesc: 'Quando ativado, se todas as saídas de iteração forem arrays, elas serão achatadas em um único array. Quando desativado, as saídas manterão uma estrutura de array aninhada.', - }, - note: { - editor: { - small: 'Pequeno', - bold: 'Ousado', - openLink: 'Abrir', - strikethrough: 'Tachado', - italic: 'Itálico', - invalidUrl: 'URL inválido', - placeholder: 'Escreva sua nota...', - bulletList: 'Lista de marcadores', - link: 'Link', - enterUrl: 'Digite o URL...', - medium: 'Média', - large: 'Grande', - unlink: 'Desvincular', - showAuthor: 'Autor do programa', - }, - addNote: 'Adicionar nota', - }, - docExtractor: { - outputVars: { - text: 'Texto extraído', - }, - inputVar: 'Variável de entrada', - learnMore: 'Saiba Mais', - supportFileTypes: 'Tipos de arquivo de suporte: {{types}}.', - }, - listFilter: { - outputVars: { - result: 'Resultado do filtro', - last_record: 'Último recorde', - first_record: 'Primeiro registro', - }, - desc: 'DESC', - inputVar: 'Variável de entrada', - selectVariableKeyPlaceholder: 'Selecione a chave da subvariável', - limit: 'Topo N', - orderBy: 'Ordenar por', - filterCondition: 'Condição do filtro', - asc: 'ASC', - filterConditionKey: 'Chave de condição do filtro', - filterConditionComparisonOperator: 'Operador de comparação de condição de filtro', - filterConditionComparisonValue: 'Valor da condição do filtro', - extractsCondition: 'Extraia o item N', - }, - agent: { - strategy: { - tooltip: 'Diferentes estratégias Agentic determinam como o sistema planeja e executa chamadas de ferramentas de várias etapas', - searchPlaceholder: 'Estratégia de busca agêntica', - shortLabel: 'Estratégia', - label: 'Estratégia Agêntica', - selectTip: 'Selecione a estratégia agêntica', - configureTipDesc: 'Depois de configurar a estratégia agêntica, esse nó carregará automaticamente as configurações restantes. A estratégia afetará o mecanismo de raciocínio da ferramenta de várias etapas.', - configureTip: 'Configure a estratégia agente.', - }, - pluginInstaller: { - installing: 'Instalar', - install: 'Instalar', - }, - modelNotInMarketplace: { - desc: 'Esse modelo é instalado do repositório Local ou GitHub. Por favor, use após a instalação.', - title: 'Modelo não instalado', - manageInPlugins: 'Gerenciar em plug-ins', - }, - modelNotSupport: { - descForVersionSwitch: 'A versão do plug-in instalada não fornece esse modelo. Clique para mudar de versão.', - title: 'Modelo não suportado', - desc: 'A versão do plug-in instalada não fornece esse modelo.', - }, - modelSelectorTooltips: { - deprecated: 'Este modelo está obsoleto', - }, - outputVars: { - files: { - type: 'Tipo de suporte. Agora suporta apenas imagem', - upload_file_id: 'Carregar ID do arquivo', - url: 'URL da imagem', - transfer_method: 'Método de transferência. O valor é remote_url ou local_file', - title: 'Arquivos gerados pelo agente', - }, - json: 'JSON gerado pelo agente', - text: 'Conteúdo gerado pelo agente', - usage: 'Informações de uso do modelo', - }, - checkList: { - strategyNotSelected: 'Estratégia não selecionada', - }, - installPlugin: { - title: 'Instale o plugin', - install: 'Instalar', - cancel: 'Cancelar', - desc: 'Prestes a instalar o seguinte plugin', - changelog: 'Registro de alterações', - }, - toolNotInstallTooltip: '{{tool}} não está instalado', - strategyNotFoundDesc: 'A versão do plug-in instalada não fornece essa estratégia.', - maxIterations: 'Máximo de iterações', - model: 'modelo', - strategyNotInstallTooltip: '{{strategy}} não está instalado', - learnMore: 'Saiba Mais', - modelNotInstallTooltip: 'Este modelo não está instalado', - pluginNotFoundDesc: 'Este plugin é instalado a partir do GitHub. Por favor, vá para Plugins para reinstalar', - pluginNotInstalledDesc: 'Este plugin é instalado a partir do GitHub. Por favor, vá para Plugins para reinstalar', - strategyNotSet: 'Estratégia agêntica não definida', - pluginNotInstalled: 'Este plugin não está instalado', - notAuthorized: 'Não autorizado', - modelNotSelected: 'Modelo não selecionado', - linkToPlugin: 'Link para plug-ins', - configureModel: 'Configurar modelo', - unsupportedStrategy: 'Estratégia sem suporte', - strategyNotFoundDescAndSwitchVersion: 'A versão do plug-in instalada não fornece essa estratégia. Clique para mudar de versão.', - tools: 'Ferramentas', - toolNotAuthorizedTooltip: '{{ferramenta}} Não autorizado', - toolbox: 'caixa de ferramentas', - parameterSchema: 'Esquema de Parâmetro', - clickToViewParameterSchema: 'Clique para ver o esquema de parâmetros', - }, - loop: { - ErrorMethod: { - removeAbnormalOutput: 'Remover Saída Anormal', - operationTerminated: 'Terminado', - continueOnError: 'Continue em Caso de Erro', - }, - errorResponseMethod: 'Método de Resposta de Erro', - loop_one: '{{count}} Loop', - inputMode: 'Modo de Entrada', - setLoopVariables: 'Defina variáveis dentro do escopo do loop', - totalLoopCount: 'Contagem total de loops: {{count}}', - breakCondition: 'Condição de Término de Loop', - comma: ',', - input: 'Entrada', - variableName: 'Nome da Variável', - initialLoopVariables: 'Variáveis de Loop Iniciais', - exitConditionTip: 'Um nó de loop precisa de pelo menos uma condição de saída', - loopNode: 'Nó de Loop', - loopMaxCount: 'Contagem Máxima de Loop', - currentLoopCount: 'Contagem atual de loops: {{count}}', - deleteTitle: 'Excluir Nó de Loop?', - error_other: '{{count}} Erros', - loop_other: '{{count}} Laços', - output: 'Variável de Saída', - error_one: '{{count}} Erro', - finalLoopVariables: 'Variáveis do Loop Final', - loopMaxCountError: 'Por favor, insira um limite máximo de loop válido, variando de 1 a {{maxCount}}', - loopVariables: 'Variáveis de Loop', - breakConditionTip: 'Somente variáveis dentro de laços com condições de término e variáveis de conversa podem ser referenciadas.', - currentLoop: 'Laço Atual', - deleteDesc: 'A exclusão do nó de loop removerá todos os nós filhos', - }, - dataSource: { - add: 'Adicionar fonte de dados', - supportedFileFormats: 'Formatos de arquivo suportados', - supportedFileFormatsPlaceholder: 'Extensão de arquivo, e.g. doc', - }, - knowledgeBase: { - chunkStructureTip: { - title: 'Escolha uma estrutura de blocos', - learnMore: 'Saiba Mais', - message: 'A Base de Conhecimento Dify oferece suporte a três estruturas de agrupamento: Geral, Pai-filho e Perguntas e Respostas. Cada base de conhecimento pode ter apenas uma estrutura. A saída do nó anterior deve estar alinhada com a estrutura de partes selecionada. Observe que a escolha da estrutura de agrupamento afeta os métodos de índice disponíveis.', - }, - retrievalSettingIsRequired: 'A configuração de recuperação é necessária', - changeChunkStructure: 'Alterar estrutura de blocos', - chunkStructure: 'Estrutura de Chunk', - chunkIsRequired: 'A estrutura de blocos é necessária', - aboutRetrieval: 'sobre o método de recuperação.', - chooseChunkStructure: 'Escolha uma estrutura de blocos', - indexMethodIsRequired: 'O método de índice é necessário', - chunksInput: 'Pedaços', - chunksInputTip: 'A variável de entrada do nó da base de conhecimento é Chunks. O tipo da variável é um objeto com um esquema JSON específico que deve ser consistente com a estrutura de chunk selecionada.', - chunksVariableIsRequired: 'A variável \'chunks\' é obrigatória', - embeddingModelIsRequired: 'Modelo de incorporação é necessário', - rerankingModelIsRequired: 'Um modelo de reclassificação é necessário', - embeddingModelIsInvalid: 'O modelo de incorporação é inválido', - rerankingModelIsInvalid: 'O modelo de reclassificação é inválido', - }, - triggerPlugin: { - authorized: 'Autorizado', - notConfigured: 'Não Configurado', - notAuthorized: 'Não Autorizado', - selectSubscription: 'Selecionar Assinatura', - availableSubscriptions: 'Assinaturas Disponíveis', - addSubscription: 'Adicionar Nova Assinatura', - removeSubscription: 'Cancelar Assinatura', - subscriptionRemoved: 'Assinatura removida com sucesso', - error: 'Erro', - configuration: 'Configuração', - remove: 'Remover', - or: 'OU', - useOAuth: 'Usar OAuth', - useApiKey: 'Usar chave de API', - authenticationFailed: 'Autenticação falhou', - authenticationSuccess: 'Autenticação bem-sucedida', - oauthConfigFailed: 'Falha na configuração do OAuth', - configureOAuthClient: 'Configurar Cliente OAuth', - oauthClientDescription: 'Configure as credenciais de cliente OAuth para habilitar a autenticação', - oauthClientSaved: 'Configuração do cliente OAuth salva com sucesso', - configureApiKey: 'Configurar Chave de API', - apiKeyDescription: 'Configure as credenciais da chave de API para autenticação', - apiKeyConfigured: 'Chave de API configurada com sucesso', - configurationFailed: 'Configuração falhou', - failedToStart: 'Falha ao iniciar o processo de autenticação', - credentialsVerified: 'Credenciais verificadas com sucesso', - credentialVerificationFailed: 'Falha na verificação das credenciais', - verifyAndContinue: 'Verificar e Continuar', - configureParameters: 'Configurar Parâmetros', - parametersDescription: 'Configure os parâmetros e propriedades do gatilho', - configurationComplete: 'Configuração Concluída', - configurationCompleteDescription: 'Seu gatilho foi configurado com sucesso', - configurationCompleteMessage: 'Sua configuração de gatilho está agora completa e pronta para uso.', - parameters: 'Parâmetros', - properties: 'Propriedades', - propertiesDescription: 'Propriedades de configuração adicionais para este gatilho', - noConfigurationRequired: 'Nenhuma configuração adicional é necessária para este gatilho.', - subscriptionName: 'Nome da Assinatura', - subscriptionNameDescription: 'Digite um nome único para esta assinatura de gatilho', - subscriptionNamePlaceholder: 'Digite o nome da assinatura...', - subscriptionNameRequired: 'O nome da assinatura é obrigatório', - subscriptionRequired: 'É necessário assinatura', - }, - triggerSchedule: { - title: 'Agenda', - nodeTitle: 'Acionador de Agendamento', - notConfigured: 'Não configurado', - useCronExpression: 'Use expressão cron', - useVisualPicker: 'Usar seletor visual', - frequency: { - label: 'FREQUÊNCIA', - hourly: 'Por hora', - daily: 'Diário', - weekly: 'Semanal', - monthly: 'Mensal', - }, - selectFrequency: 'Selecionar frequência', - frequencyLabel: 'Frequência', - nextExecution: 'Próxima execução', - weekdays: 'Dias da semana', - time: 'Tempo', - cronExpression: 'Expressão Cron', - nextExecutionTime: 'PRÓXIMA HORA DE EXECUÇÃO', - nextExecutionTimes: 'Próximos 5 tempos de execução', - startTime: 'Hora de Início', - executeNow: 'Executar agora', - selectDateTime: 'Selecionar data e hora', - hours: 'Horas', - minutes: 'Minutos', - onMinute: 'No Minuto', - days: 'Dias', - lastDay: 'Último dia', - lastDayTooltip: 'Nem todos os meses têm 31 dias. Use a opção \'último dia\' para selecionar o último dia de cada mês.', - mode: 'Modo', - timezone: 'Fuso horário', - visualConfig: 'Configuração Visual', - monthlyDay: 'Dia do Mês', - executionTime: 'Tempo de Execução', - invalidTimezone: 'Fuso horário inválido', - invalidCronExpression: 'Expressão cron inválida', - noValidExecutionTime: 'Não é possível calcular um tempo de execução válido', - executionTimeCalculationError: 'Falha ao calcular os tempos de execução', - invalidFrequency: 'Frequência inválida', - invalidStartTime: 'Horário de início inválido', - startTimeMustBeFuture: 'O horário de início deve ser no futuro', - invalidTimeFormat: 'Formato de hora inválido (esperado HH:MM AM/PM)', - invalidWeekday: 'Dia da semana inválido: {{weekday}}', - invalidMonthlyDay: 'O dia mensal deve estar entre 1-31 ou "último"', - invalidOnMinute: 'O minuto deve estar entre 0 e 59', - invalidExecutionTime: 'Tempo de execução inválido', - executionTimeMustBeFuture: 'O horário de execução deve ser no futuro', - }, - triggerWebhook: { - title: 'Acionador de Webhook', - nodeTitle: '🔗 Acionador de Webhook', - configPlaceholder: 'A configuração do gatilho do webhook será implementada aqui', - webhookUrl: 'URL do Webhook', - webhookUrlPlaceholder: 'Clique em gerar para criar a URL do webhook', - generate: 'Gerar', - copy: 'Copiar', - test: 'Teste', - urlGenerated: 'URL do webhook gerada com sucesso', - urlGenerationFailed: 'Falha ao gerar URL do webhook', - urlCopied: 'URL copiada para a área de transferência', - method: 'Método', - contentType: 'Tipo de Conteúdo', - queryParameters: 'Parâmetros de Consulta', - headerParameters: 'Parâmetros do Cabeçalho', - requestBodyParameters: 'Parâmetros do Corpo da Requisição', - parameterName: 'Nome da variável', - varName: 'Nome da variável', - varType: 'Tipo', - varNamePlaceholder: 'Digite o nome da variável...', - required: 'Obrigatório', - addParameter: 'Adicionar', - addHeader: 'Adicionar', - noParameters: 'Nenhum parâmetro configurado', - noQueryParameters: 'Nenhum parâmetro de consulta configurado', - noHeaders: 'Nenhum cabeçalho configurado', - noBodyParameters: 'Nenhum parâmetro de corpo configurado', - debugUrlTitle: 'Para testes, sempre use este URL', - debugUrlCopy: 'Clique para copiar', - debugUrlCopied: 'Copiado!', - debugUrlPrivateAddressWarning: 'Este URL parece ser um endereço interno, o que pode fazer com que as solicitações do webhook falhem. Você pode alterar o TRIGGER_URL para um endereço público.', - errorHandling: 'Tratamento de Erros', - errorStrategy: 'Tratamento de Erros', - responseConfiguration: 'Resposta', - asyncMode: 'Modo Assíncrono', - statusCode: 'Código de Status', - responseBody: 'Corpo da Resposta', - responseBodyPlaceholder: 'Escreva o corpo da sua resposta aqui', - headers: 'Cabeçalhos', - validation: { - webhookUrlRequired: 'A URL do Webhook é obrigatória', - invalidParameterType: 'Tipo de parâmetro inválido "{{type}}" para o parâmetro "{{name}}"', - }, - }, - }, - tracing: { - stopBy: 'Parado por {{user}}', - }, - variableReference: { - noAssignedVars: 'Nenhuma variável atribuída disponível', - noVarsForOperation: 'Não há variáveis disponíveis para atribuição com a operação selecionada.', - conversationVars: 'variáveis de conversação', - assignedVarsDescription: 'As variáveis atribuídas devem ser variáveis graváveis, como', - noAvailableVars: 'Nenhuma variável disponível', - }, - versionHistory: { - filter: { - all: 'Todos', - empty: 'Nenhuma versão histórica correspondente encontrada', - reset: 'Redefinir Filtro', - onlyYours: 'Somente seu', - onlyShowNamedVersions: 'Mostre apenas versões nomeadas', - }, - editField: { - titleLengthLimit: 'O título não pode exceder {{limit}} caracteres', - releaseNotes: 'Notas de Lançamento', - releaseNotesLengthLimit: 'As notas de lançamento não podem exceder {{limit}} caracteres', - title: 'Título', - }, - action: { - updateFailure: 'Falha ao atualizar a versão', - updateSuccess: 'Versão atualizada', - deleteSuccess: 'Versão excluída', - restoreFailure: 'Falha ao restaurar versão', - restoreSuccess: 'Versão restaurada', - deleteFailure: 'Falha ao deletar versão', - copyIdSuccess: 'ID copiado para a área de transferência', - }, - title: 'Versões', - latest: 'Último', - nameThisVersion: 'Nomeie esta versão', - defaultName: 'Versão Sem Título', - releaseNotesPlaceholder: 'Descreva o que mudou', - editVersionInfo: 'Editar informações da versão', - restorationTip: 'Após a restauração da versão, o rascunho atual será substituído.', - currentDraft: 'Rascunho Atual', - deletionTip: 'A exclusão é irreversível, por favor confirme.', - copyId: 'Copiar ID', - }, - debug: { - noData: { - runThisNode: 'Execute este nó', - description: 'Os resultados da última execução serão exibidos aqui', - }, - variableInspect: { - trigger: { - normal: 'Inspecionar Variável', - stop: 'Pare de correr', - clear: 'Claro', - running: 'Status de execução do cache', - cached: 'Ver variáveis em cache', - }, - systemNode: 'Sistema', - edited: 'Editado', - clearAll: 'Redefinir tudo', - clearNode: 'Limpar variável em cache', - emptyLink: 'Saiba mais', - chatNode: 'Conversa', - envNode: 'Ambiente', - title: 'Inspecionar Variável', - reset: 'Redefinir para o último valor de execução', - resetConversationVar: 'Redefinir a variável da conversa para o valor padrão', - view: 'Ver log', - emptyTip: 'Após passar por um nó na tela ou executar um nó passo a passo, você pode visualizar o valor atual da variável do nó na Inspecção de Variáveis.', - export: 'exportação', - largeData: 'Dados grandes, visualização somente leitura. Exportar para ver tudo.', - exportToolTip: 'Exportar variável como arquivo', - largeDataNoExport: 'Dados grandes - apenas visualização parcial', - listening: { - title: 'Aguardando eventos dos gatilhos...', - tip: 'Agora você pode simular gatilhos de eventos enviando solicitações de teste para o endpoint HTTP {{nodeName}} ou usá-lo como uma URL de callback para depuração de eventos ao vivo. Todos os resultados podem ser visualizados diretamente no Inspetor de Variáveis.', - tipPlugin: 'Agora você pode criar eventos em {{- pluginName}} e recuperar resultados desses eventos no Inspetor de Variáveis.', - tipSchedule: 'Ouvindo eventos de gatilhos de agendamento.\nPróxima execução agendada: {{nextTriggerTime}}', - tipFallback: 'Aguardando eventos de gatilho. As saídas aparecerão aqui.', - defaultNodeName: 'este gatilho', - defaultPluginName: 'este gatilho de plugin', - defaultScheduleTime: 'Não configurado', - selectedTriggers: 'gatilhos selecionados', - stopButton: 'Pare', - }, - }, - settingsTab: 'Configurações', - lastRunTab: 'Última execução', - relations: { - noDependents: 'Sem dependentes', - dependenciesDescription: 'Nós dos quais esse nó depende', - dependents: 'Dependentes', - dependencies: 'Dependências', - dependentsDescription: 'Nós que dependem desse nó', - noDependencies: 'Sem dependências', - }, - relationsTab: 'Relações', - noMatchingInputsFound: 'Nenhuma entrada correspondente encontrada na última execução.', - copyLastRunError: 'Falha ao copiar as entradas da última execução', - noLastRunFound: 'Nenhuma execução anterior encontrada.', - copyLastRun: 'Copiar Última Execução', - lastOutput: 'Última Saída', - lastRunInputsCopied: '{{count}} entrada(s) copiadas da última execução', - }, - sidebar: { - exportWarning: 'Exportar a versão salva atual', - exportWarningDesc: 'Isto irá exportar a versão atual salva do seu fluxo de trabalho. Se você tiver alterações não salvas no editor, por favor, salve-as primeiro utilizando a opção de exportação na tela do fluxo de trabalho.', - }, - publishLimit: { - startNodeTitlePrefix: 'Atualizar para', - startNodeTitleSuffix: 'desbloquear gatilhos ilimitados por fluxo de trabalho', - startNodeDesc: 'Você atingiu o limite de 2 gatilhos por fluxo de trabalho para este plano. Faça um upgrade para publicar este fluxo de trabalho.', - }, - error: { - startNodeRequired: 'Por favor, adicione um nó inicial antes de {{operation}}', - operations: { - connectingNodes: 'conectando nós', - addingNodes: 'adicionando nós', - modifyingWorkflow: 'modificando o fluxo de trabalho', - updatingWorkflow: 'atualizando fluxo de trabalho', - }, - }, - customWebhook: 'Webhook Personalizado', - difyTeam: 'Equipe Dify', - triggerStatus: { - enabled: 'GATILHO', - disabled: 'DISPARADOR • DESATIVADO', - }, - entryNodeStatus: { - enabled: 'INICIAR', - disabled: 'INICIAR • DESATIVADO', - }, - onboarding: { - title: 'Selecione um nó inicial para começar', - description: 'Diferentes nós iniciais têm diferentes capacidades. Não se preocupe, você sempre pode mudá-los mais tarde.', - userInputFull: 'Entrada do Usuário (nó inicial original)', - userInputDescription: 'Nó inicial que permite definir variáveis de entrada do usuário, com aplicativo web, API de serviço, servidor MCP e fluxo de trabalho como capacidades da ferramenta.', - trigger: 'Gatilho', - triggerDescription: 'Os gatilhos podem servir como o nó inicial de um fluxo de trabalho, como tarefas agendadas, webhooks personalizados ou integrações com outros aplicativos.', - back: 'Voltar', - learnMore: 'Saiba mais', - aboutStartNode: 'sobre o nó inicial.', - escTip: { - press: 'Imprensa', - key: 'esc', - toDismiss: 'dispensar', - }, - }, -} - -export default translation diff --git a/web/i18n/ro-RO/app-annotation.json b/web/i18n/ro-RO/app-annotation.json new file mode 100644 index 0000000000..989f0385fb --- /dev/null +++ b/web/i18n/ro-RO/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "Anotări", + "name": "Răspuns la Anotație", + "editBy": "Răspuns editat de {{author}}", + "noData": { + "title": "Fără anotări", + "description": "Puteți edita anotările în timpul depanării aplicației sau importați anotări în masă aici pentru un răspuns de înaltă calitate." + }, + "table": { + "header": { + "question": "întrebare", + "answer": "răspuns", + "createdAt": "creat la", + "hits": "accesări", + "actions": "acțiuni", + "addAnnotation": "Adaugă Anotație", + "bulkImport": "Import în Masă", + "bulkExport": "Export în Masă", + "clearAll": "Șterge Toate Anotațiile", + "clearAllConfirm": "Șterge toate anotările?" + } + }, + "editModal": { + "title": "Editează Răspunsul la Anotație", + "queryName": "Interogare Utilizator", + "answerName": "Povestitorul Bot", + "yourAnswer": "Răspunsul Tău", + "answerPlaceholder": "Scrie răspunsul tău aici", + "yourQuery": "Interogarea Ta", + "queryPlaceholder": "Scrie interogarea ta aici", + "removeThisCache": "Elimină Această Anotație", + "createdAt": "Creat La" + }, + "addModal": { + "title": "Adaugă Răspuns la Anotație", + "queryName": "Întrebare", + "answerName": "Răspuns", + "answerPlaceholder": "Scrie răspunsul aici", + "queryPlaceholder": "Scrie întrebarea aici", + "createNext": "Adaugă un alt răspuns anotat" + }, + "batchModal": { + "title": "Import în Masă", + "csvUploadTitle": "Trage și plasează fișierul tău CSV aici, sau ", + "browse": "răsfoiește", + "tip": "Fișierul CSV trebuie să respecte următoarea structură:", + "question": "întrebare", + "answer": "răspuns", + "contentTitle": "conținutul secțiunii", + "content": "conținut", + "template": "Descarcă șablonul aici", + "cancel": "Anulează", + "run": "Rulează Lotul", + "runError": "Eroare la rularea lotului", + "processing": "În procesare", + "completed": "Import finalizat", + "error": "Eroare de Import", + "ok": "OK" + }, + "errorMessage": { + "answerRequired": "Răspunsul este necesar", + "queryRequired": "Întrebarea este necesară" + }, + "viewModal": { + "annotatedResponse": "Răspuns Anotat", + "hitHistory": "Istoric Accesări", + "hit": "Acces", + "hits": "Accesări", + "noHitHistory": "Fără istoric de accesări" + }, + "hitHistoryTable": { + "query": "Interogare", + "match": "Potrivire", + "response": "Răspuns", + "source": "Sursă", + "score": "Scor", + "time": "Timp" + }, + "initSetup": { + "title": "Configurare Inițială Răspuns la Anotație", + "configTitle": "Configurare Răspuns la Anotație", + "confirmBtn": "Salvează & Activează", + "configConfirmBtn": "Salvează" + }, + "embeddingModelSwitchTip": "Model de vectorizare a textului anotației, schimbarea modelelor va fi reîncorporată, rezultând costuri suplimentare.", + "list": { + "delete": { + "title": "Ești sigur că vrei să ștergi?" + } + }, + "batchAction": { + "cancel": "Anulează", + "delete": "Șterge", + "selected": "Selectat" + } +} diff --git a/web/i18n/ro-RO/app-annotation.ts b/web/i18n/ro-RO/app-annotation.ts deleted file mode 100644 index 66c1c3aa29..0000000000 --- a/web/i18n/ro-RO/app-annotation.ts +++ /dev/null @@ -1,98 +0,0 @@ -const translation = { - title: 'Anotări', - name: 'Răspuns la Anotație', - editBy: 'Răspuns editat de {{author}}', - noData: { - title: 'Fără anotări', - description: 'Puteți edita anotările în timpul depanării aplicației sau importați anotări în masă aici pentru un răspuns de înaltă calitate.', - }, - table: { - header: { - question: 'întrebare', - answer: 'răspuns', - createdAt: 'creat la', - hits: 'accesări', - actions: 'acțiuni', - addAnnotation: 'Adaugă Anotație', - bulkImport: 'Import în Masă', - bulkExport: 'Export în Masă', - clearAll: 'Șterge Toate Anotațiile', - clearAllConfirm: 'Șterge toate anotările?', - }, - }, - editModal: { - title: 'Editează Răspunsul la Anotație', - queryName: 'Interogare Utilizator', - answerName: 'Povestitorul Bot', - yourAnswer: 'Răspunsul Tău', - answerPlaceholder: 'Scrie răspunsul tău aici', - yourQuery: 'Interogarea Ta', - queryPlaceholder: 'Scrie interogarea ta aici', - removeThisCache: 'Elimină Această Anotație', - createdAt: 'Creat La', - }, - addModal: { - title: 'Adaugă Răspuns la Anotație', - queryName: 'Întrebare', - answerName: 'Răspuns', - answerPlaceholder: 'Scrie răspunsul aici', - queryPlaceholder: 'Scrie întrebarea aici', - createNext: 'Adaugă un alt răspuns anotat', - }, - batchModal: { - title: 'Import în Masă', - csvUploadTitle: 'Trage și plasează fișierul tău CSV aici, sau ', - browse: 'răsfoiește', - tip: 'Fișierul CSV trebuie să respecte următoarea structură:', - question: 'întrebare', - answer: 'răspuns', - contentTitle: 'conținutul secțiunii', - content: 'conținut', - template: 'Descarcă șablonul aici', - cancel: 'Anulează', - run: 'Rulează Lotul', - runError: 'Eroare la rularea lotului', - processing: 'În procesare', - completed: 'Import finalizat', - error: 'Eroare de Import', - ok: 'OK', - }, - errorMessage: { - answerRequired: 'Răspunsul este necesar', - queryRequired: 'Întrebarea este necesară', - }, - viewModal: { - annotatedResponse: 'Răspuns Anotat', - hitHistory: 'Istoric Accesări', - hit: 'Acces', - hits: 'Accesări', - noHitHistory: 'Fără istoric de accesări', - }, - hitHistoryTable: { - query: 'Interogare', - match: 'Potrivire', - response: 'Răspuns', - source: 'Sursă', - score: 'Scor', - time: 'Timp', - }, - initSetup: { - title: 'Configurare Inițială Răspuns la Anotație', - configTitle: 'Configurare Răspuns la Anotație', - confirmBtn: 'Salvează & Activează', - configConfirmBtn: 'Salvează', - }, - embeddingModelSwitchTip: 'Model de vectorizare a textului anotației, schimbarea modelelor va fi reîncorporată, rezultând costuri suplimentare.', - list: { - delete: { - title: 'Ești sigur că vrei să ștergi?', - }, - }, - batchAction: { - cancel: 'Anulează', - delete: 'Șterge', - selected: 'Selectat', - }, -} - -export default translation diff --git a/web/i18n/ro-RO/app-api.json b/web/i18n/ro-RO/app-api.json new file mode 100644 index 0000000000..65887fd82f --- /dev/null +++ b/web/i18n/ro-RO/app-api.json @@ -0,0 +1,83 @@ +{ + "apiServer": "Server API", + "apiKey": "Cheia API", + "status": "Stare", + "disabled": "Dezactivat", + "ok": "În Serviciu", + "copy": "Copiază", + "copied": "Copiat", + "play": "Redă", + "pause": "Pauză", + "playing": "În redare", + "loading": "Se încarcă", + "merMaid": { + "rerender": "Reprocesare" + }, + "never": "Niciodată", + "apiKeyModal": { + "apiSecretKey": "Cheia secretă API", + "apiSecretKeyTips": "Pentru a preveni abuzul API, protejați-vă Cheia API. Evitați utilizarea ei ca text simplu în codul front-end. :)", + "createNewSecretKey": "Creează o nouă cheie secretă", + "secretKey": "Cheie Secretă", + "created": "CREATĂ", + "lastUsed": "ULTIMA UTILIZARE", + "generateTips": "Păstrați această cheie într-un loc sigur și accesibil." + }, + "actionMsg": { + "deleteConfirmTitle": "Ștergeți această cheie secretă?", + "deleteConfirmTips": "Această acțiune nu poate fi anulată.", + "ok": "OK" + }, + "completionMode": { + "title": "API completare aplicație", + "info": "Pentru generarea de text de înaltă calitate, cum ar fi articole, rezumate și traduceri, utilizați API-ul de mesaje de completare cu intrare de la utilizator. Generarea de text se bazează pe parametrii modelului și șabloanele de prompturi stabilite în Ingineria Prompturilor Dify.", + "createCompletionApi": "Creează mesaj de completare", + "createCompletionApiTip": "Creează un mesaj de completare pentru a sprijini modul de întrebare și răspuns.", + "inputsTips": "(Opțional) Furnizați câmpuri de intrare pentru utilizator ca perechi cheie-valoare, corespunzătoare variabilelor din Ingineria Prompt. Cheia este numele variabilei, Valoarea este valoarea parametrului. Dacă tipul de câmp este Select, Valoarea trimisă trebuie să fie una dintre opțiunile prestabilite.", + "queryTips": "Conținutul textului de intrare al utilizatorului.", + "blocking": "Tip blocant, așteptând finalizarea execuției și returnarea rezultatelor. (Cererea poate fi întreruptă dacă procesul este lung)", + "streaming": "returnare în flux. Implementarea returnării în flux bazată pe SSE (Evenimente trimise de server).", + "messageFeedbackApi": "Feedback mesaj (apreciere)", + "messageFeedbackApiTip": "Evaluează mesajele primite în numele utilizatorilor finali cu aprecieri sau dezaprecieri. Aceste date sunt vizibile în pagina Jurnale & Anotații și sunt utilizate pentru ajustarea fină a modelului viitor.", + "messageIDTip": "ID mesaj", + "ratingTip": "apreciere sau dezapreciere, nul este anulare", + "parametersApi": "Obțineți informații despre parametrii aplicației", + "parametersApiTip": "Recuperați parametrii de intrare configurați, inclusiv numele variabilelor, denumirile câmpurilor, tipurile și valorile implicite. De obicei, sunt folosiți pentru a afișa aceste câmpuri într-un formular sau pentru a completa valorile implicite după încărcarea clientului." + }, + "chatMode": { + "title": "API chat aplicație", + "info": "Pentru aplicații conversaționale versatile folosind un format Q&A, apelați API-ul de mesaje de chat pentru a iniția un dialog. Mențineți conversațiile continue transmitând conversation_id returnat. Parametrii de răspuns și șabloanele depind de setările Ingineriei Prompt Dify.", + "createChatApi": "Creează mesaj de chat", + "createChatApiTip": "Creează un nou mesaj de conversație sau continuă un dialog existent.", + "inputsTips": "(Opțional) Furnizați câmpuri de intrare pentru utilizator ca perechi cheie-valoare, corespunzătoare variabilelor din Ingineria Prompt. Cheia este numele variabilei, Valoarea este valoarea parametrului. Dacă tipul de câmp este Select, Valoarea trimisă trebuie să fie una dintre opțiunile prestabilite.", + "queryTips": "Conținutul întrebării/utilizatorului introdus", + "blocking": "Tip blocant, așteptând finalizarea execuției și returnarea rezultatelor. (Cererea poate fi întreruptă dacă procesul este lung)", + "streaming": "returnare în flux. Implementarea returnării în flux bazată pe SSE (Evenimente trimise de server).", + "conversationIdTip": "(Opțional) ID conversație: lăsați gol pentru prima conversație; transmiteți conversation_id din context pentru a continua dialogul.", + "messageFeedbackApi": "Feedback terminal utilizator mesaj, apreciere", + "messageFeedbackApiTip": "Evaluează mesajele primite în numele utilizatorilor finali cu aprecieri sau dezaprecieri. Aceste date sunt vizibile în pagina Jurnale & Anotații și sunt utilizate pentru ajustarea fină a modelului viitor.", + "messageIDTip": "ID mesaj", + "ratingTip": "apreciere sau dezapreciere, nul este anulare", + "chatMsgHistoryApi": "Obțineți istoricul mesajelor de chat", + "chatMsgHistoryApiTip": "Prima pagină returnează ultimele `limită` bare, care sunt în ordine inversă.", + "chatMsgHistoryConversationIdTip": "ID conversație", + "chatMsgHistoryFirstId": "ID-ul primului înregistrare de chat de pe pagina curentă. Implicit este niciunul.", + "chatMsgHistoryLimit": "Câte chat-uri sunt returnate într-o singură cerere", + "conversationsListApi": "Obțineți lista de conversații", + "conversationsListApiTip": "Obține lista de sesiuni a utilizatorului curent. În mod implicit, ultimele 20 de sesiuni sunt returnate.", + "conversationsListFirstIdTip": "ID-ul ultimei înregistrări de pe pagina curentă, implicit niciunul.", + "conversationsListLimitTip": "Câte chat-uri sunt returnate într-o singură cerere", + "conversationRenamingApi": "Redenumirea conversației", + "conversationRenamingApiTip": "Redenumiți conversațiile; numele este afișat în interfețele client cu sesiuni multiple.", + "conversationRenamingNameTip": "Nume nou", + "parametersApi": "Obțineți informații despre parametrii aplicației", + "parametersApiTip": "Recuperați parametrii de intrare configurați, inclusiv numele variabilelor, denumirile câmpurilor, tipurile și valorile implicite. De obicei, sunt folosiți pentru a afișa aceste câmpuri într-un formular sau pentru a completa valorile implicite după încărcarea clientului." + }, + "develop": { + "requestBody": "Corpul cererii", + "pathParams": "Parametrii căii", + "query": "Interogare", + "toc": "Conținut" + }, + "regenerate": "Regenera" +} diff --git a/web/i18n/ro-RO/app-api.ts b/web/i18n/ro-RO/app-api.ts deleted file mode 100644 index 09b65e5cf9..0000000000 --- a/web/i18n/ro-RO/app-api.ts +++ /dev/null @@ -1,85 +0,0 @@ -const translation = { - apiServer: 'Server API', - apiKey: 'Cheia API', - status: 'Stare', - disabled: 'Dezactivat', - ok: 'În Serviciu', - copy: 'Copiază', - copied: 'Copiat', - play: 'Redă', - pause: 'Pauză', - playing: 'În redare', - loading: 'Se încarcă', - merMaid: { - rerender: 'Reprocesare', - }, - never: 'Niciodată', - apiKeyModal: { - apiSecretKey: 'Cheia secretă API', - apiSecretKeyTips: 'Pentru a preveni abuzul API, protejați-vă Cheia API. Evitați utilizarea ei ca text simplu în codul front-end. :)', - createNewSecretKey: 'Creează o nouă cheie secretă', - secretKey: 'Cheie Secretă', - created: 'CREATĂ', - lastUsed: 'ULTIMA UTILIZARE', - generateTips: 'Păstrați această cheie într-un loc sigur și accesibil.', - }, - actionMsg: { - deleteConfirmTitle: 'Ștergeți această cheie secretă?', - deleteConfirmTips: 'Această acțiune nu poate fi anulată.', - ok: 'OK', - }, - completionMode: { - title: 'API completare aplicație', - info: 'Pentru generarea de text de înaltă calitate, cum ar fi articole, rezumate și traduceri, utilizați API-ul de mesaje de completare cu intrare de la utilizator. Generarea de text se bazează pe parametrii modelului și șabloanele de prompturi stabilite în Ingineria Prompturilor Dify.', - createCompletionApi: 'Creează mesaj de completare', - createCompletionApiTip: 'Creează un mesaj de completare pentru a sprijini modul de întrebare și răspuns.', - inputsTips: '(Opțional) Furnizați câmpuri de intrare pentru utilizator ca perechi cheie-valoare, corespunzătoare variabilelor din Ingineria Prompt. Cheia este numele variabilei, Valoarea este valoarea parametrului. Dacă tipul de câmp este Select, Valoarea trimisă trebuie să fie una dintre opțiunile prestabilite.', - queryTips: 'Conținutul textului de intrare al utilizatorului.', - blocking: 'Tip blocant, așteptând finalizarea execuției și returnarea rezultatelor. (Cererea poate fi întreruptă dacă procesul este lung)', - streaming: 'returnare în flux. Implementarea returnării în flux bazată pe SSE (Evenimente trimise de server).', - messageFeedbackApi: 'Feedback mesaj (apreciere)', - messageFeedbackApiTip: 'Evaluează mesajele primite în numele utilizatorilor finali cu aprecieri sau dezaprecieri. Aceste date sunt vizibile în pagina Jurnale & Anotații și sunt utilizate pentru ajustarea fină a modelului viitor.', - messageIDTip: 'ID mesaj', - ratingTip: 'apreciere sau dezapreciere, nul este anulare', - parametersApi: 'Obțineți informații despre parametrii aplicației', - parametersApiTip: 'Recuperați parametrii de intrare configurați, inclusiv numele variabilelor, denumirile câmpurilor, tipurile și valorile implicite. De obicei, sunt folosiți pentru a afișa aceste câmpuri într-un formular sau pentru a completa valorile implicite după încărcarea clientului.', - }, - chatMode: { - title: 'API chat aplicație', - info: 'Pentru aplicații conversaționale versatile folosind un format Q&A, apelați API-ul de mesaje de chat pentru a iniția un dialog. Mențineți conversațiile continue transmitând conversation_id returnat. Parametrii de răspuns și șabloanele depind de setările Ingineriei Prompt Dify.', - createChatApi: 'Creează mesaj de chat', - createChatApiTip: 'Creează un nou mesaj de conversație sau continuă un dialog existent.', - inputsTips: '(Opțional) Furnizați câmpuri de intrare pentru utilizator ca perechi cheie-valoare, corespunzătoare variabilelor din Ingineria Prompt. Cheia este numele variabilei, Valoarea este valoarea parametrului. Dacă tipul de câmp este Select, Valoarea trimisă trebuie să fie una dintre opțiunile prestabilite.', - queryTips: 'Conținutul întrebării/utilizatorului introdus', - blocking: 'Tip blocant, așteptând finalizarea execuției și returnarea rezultatelor. (Cererea poate fi întreruptă dacă procesul este lung)', - streaming: 'returnare în flux. Implementarea returnării în flux bazată pe SSE (Evenimente trimise de server).', - conversationIdTip: '(Opțional) ID conversație: lăsați gol pentru prima conversație; transmiteți conversation_id din context pentru a continua dialogul.', - messageFeedbackApi: 'Feedback terminal utilizator mesaj, apreciere', - messageFeedbackApiTip: 'Evaluează mesajele primite în numele utilizatorilor finali cu aprecieri sau dezaprecieri. Aceste date sunt vizibile în pagina Jurnale & Anotații și sunt utilizate pentru ajustarea fină a modelului viitor.', - messageIDTip: 'ID mesaj', - ratingTip: 'apreciere sau dezapreciere, nul este anulare', - chatMsgHistoryApi: 'Obțineți istoricul mesajelor de chat', - chatMsgHistoryApiTip: 'Prima pagină returnează ultimele `limită` bare, care sunt în ordine inversă.', - chatMsgHistoryConversationIdTip: 'ID conversație', - chatMsgHistoryFirstId: 'ID-ul primului înregistrare de chat de pe pagina curentă. Implicit este niciunul.', - chatMsgHistoryLimit: 'Câte chat-uri sunt returnate într-o singură cerere', - conversationsListApi: 'Obțineți lista de conversații', - conversationsListApiTip: 'Obține lista de sesiuni a utilizatorului curent. În mod implicit, ultimele 20 de sesiuni sunt returnate.', - conversationsListFirstIdTip: 'ID-ul ultimei înregistrări de pe pagina curentă, implicit niciunul.', - conversationsListLimitTip: 'Câte chat-uri sunt returnate într-o singură cerere', - conversationRenamingApi: 'Redenumirea conversației', - conversationRenamingApiTip: 'Redenumiți conversațiile; numele este afișat în interfețele client cu sesiuni multiple.', - conversationRenamingNameTip: 'Nume nou', - parametersApi: 'Obțineți informații despre parametrii aplicației', - parametersApiTip: 'Recuperați parametrii de intrare configurați, inclusiv numele variabilelor, denumirile câmpurilor, tipurile și valorile implicite. De obicei, sunt folosiți pentru a afișa aceste câmpuri într-un formular sau pentru a completa valorile implicite după încărcarea clientului.', - }, - develop: { - requestBody: 'Corpul cererii', - pathParams: 'Parametrii căii', - query: 'Interogare', - toc: 'Conținut', - }, - regenerate: 'Regenera', -} - -export default translation diff --git a/web/i18n/ro-RO/app-debug.json b/web/i18n/ro-RO/app-debug.json new file mode 100644 index 0000000000..d6f60b5fdf --- /dev/null +++ b/web/i18n/ro-RO/app-debug.json @@ -0,0 +1,563 @@ +{ + "pageTitle": { + "line1": "PROMPT", + "line2": "Inginerie" + }, + "orchestrate": "Orchestrează", + "promptMode": { + "simple": "Comută la Modul Expert pentru a edita întregul PROMPT", + "advanced": "Mod Expert", + "switchBack": "Comută înapoi", + "advancedWarning": { + "title": "Ați commutat la Modul Expert și, odată ce modificați PROMPT-ul, NU puteți reveni la modul de bază.", + "description": "În Modul Expert, puteți edita întregul PROMPT.", + "learnMore": "Aflați mai multe", + "ok": "OK" + }, + "operation": { + "addMessage": "Adaugă mesaj" + }, + "contextMissing": "Componentă de context lipsește, eficacitatea promptului poate să nu fie bună." + }, + "operation": { + "applyConfig": "Publică", + "resetConfig": "Resetează", + "debugConfig": "Depanează", + "addFeature": "Adaugă funcție", + "automatic": "Automat", + "stopResponding": "Oprește răspunsul", + "agree": "Îmi place", + "disagree": "Nu îmi place", + "cancelAgree": "Anulează Îmi place", + "cancelDisagree": "Anulează Nu îmi place", + "userAction": "Utilizator " + }, + "notSetAPIKey": { + "title": "Cheia furnizorului LLM nu a fost setată", + "trailFinished": "Perioada de încercare a expirat", + "description": "Cheia furnizorului LLM nu a fost setată și trebuie să fie setată înainte de depanare.", + "settingBtn": "Du-te la setări" + }, + "trailUseGPT4Info": { + "title": "Nu se acceptă acum gpt-4", + "description": "Pentru a utiliza gpt-4, vă rugăm să setați cheia API." + }, + "feature": { + "groupChat": { + "title": "Îmbunătățire chat", + "description": "Adăugați setări pre-conversație pentru aplicații, pentru a îmbunătăți experiența utilizatorilor." + }, + "groupExperience": { + "title": "Îmbunătățire experiență" + }, + "conversationOpener": { + "title": "Reîncărcări conversație", + "description": "Într-o aplicație de chat, prima propoziție pe care IA o vorbește în mod activ utilizatorului este de obicei utilizată ca salut." + }, + "suggestedQuestionsAfterAnswer": { + "title": "Urmărire", + "description": "Setarea sugestiilor pentru întrebările următoare poate oferi utilizatorilor o conversație mai bună.", + "resDes": "3 sugestii pentru următoarea întrebare a utilizatorului.", + "tryToAsk": "Încercați să întrebați" + }, + "moreLikeThis": { + "title": "Mai multe ca aceasta", + "description": "Generați mai multe texte o dată, apoi editați și continuați să generați", + "generateNumTip": "Numărul de generări fiecăruia", + "tip": "Utilizarea acestei funcții va genera un consum suplimentar de jetoane" + }, + "speechToText": { + "title": "Voce la text", + "description": "După activare, puteți utiliza intrarea vocală.", + "resDes": "Intrarea vocală este activată" + }, + "textToSpeech": { + "title": "Text la voce", + "description": "După activare, textul poate fi convertit în vorbire.", + "resDes": "Textul la audio este activat" + }, + "citation": { + "title": "Citări și atribuiri", + "description": "După activare, se vor afișa documentul sursă și secțiunea atribuită a conținutului generat.", + "resDes": "Citări și atribuiri sunt activate" + }, + "annotation": { + "title": "Răspuns anotat", + "description": "Puteți adăuga manual răspunsuri de înaltă calitate în cache pentru a le prioritiza la potrivirea cu întrebările similare ale utilizatorilor.", + "resDes": "Răspuns anotat este activat", + "scoreThreshold": { + "title": "Prag de scor", + "description": "Folosit pentru a seta pragul de similitudine pentru răspunsul anotat.", + "easyMatch": "Potrivire simplă", + "accurateMatch": "Potrivire precisă" + }, + "matchVariable": { + "title": "Variabilă de potrivire", + "choosePlaceholder": "Alegeți variabila de potrivire" + }, + "cacheManagement": "Adnotări", + "cached": "Adnotat", + "remove": "Elimină", + "removeConfirm": "Ștergeți această adnotare?", + "add": "Adaugă adnotare", + "edit": "Editează adnotare" + }, + "dataSet": { + "title": "Context", + "noData": "Puteți importa Cunoștințe ca context", + "selectTitle": "Selectați Cunoștințe de referință", + "selected": "Cunoștințe selectate", + "noDataSet": "Nu s-au găsit Cunoștințe", + "toCreate": "Du-te la creare", + "notSupportSelectMulti": "În prezent se acceptă doar o singură Cunoștință", + "queryVariable": { + "title": "Variabilă de interogare", + "tip": "Această variabilă va fi utilizată ca intrare de interogare pentru recuperarea contextului, obținând informații de context legate de intrarea acestei variabile.", + "choosePlaceholder": "Alegeți variabila de interogare", + "noVar": "Nicio variabilă", + "noVarTip": "vă rugăm să creați o variabilă în secțiunea Variabile", + "unableToQueryDataSet": "Imposibil de interogat Cunoștințele", + "unableToQueryDataSetTip": "Nu s-a reușit interogarea cu succes a Cunoștințelor, vă rugăm să alegeți o variabilă de interogare a contextului în secțiunea context.", + "ok": "OK", + "contextVarNotEmpty": "variabila de interogare a contextului nu poate fi goală", + "deleteContextVarTitle": "Ștergeți variabila \"{{varName}}\"?", + "deleteContextVarTip": "Această variabilă a fost setată ca variabilă de interogare a contextului și eliminarea ei va afecta utilizarea normală a Cunoștințelor. Dacă totuși trebuie să o ștergeți, vă rugăm să o reselectați în secțiunea context." + } + }, + "tools": { + "title": "Instrumente", + "tips": "Instrumentele oferă o metodă de apel API standard, luând intrarea utilizatorului sau variabilele ca parametri de solicitare pentru interogarea datelor externe ca context.", + "toolsInUse": "{{count}} instrumente în uz", + "modal": { + "title": "Instrument", + "toolType": { + "title": "Tip instrument", + "placeholder": "Vă rugăm să selectați tipul de instrument" + }, + "name": { + "title": "Nume", + "placeholder": "Vă rugăm să introduceți numele" + }, + "variableName": { + "title": "Nume variabilă", + "placeholder": "Vă rugăm să introduceți numele variabilei" + } + } + }, + "conversationHistory": { + "title": "Istoric conversație", + "description": "Setați numele prefixe pentru rolurile de conversație", + "tip": "Istoricul conversației nu este activat, adăugați în promptul de mai sus.", + "learnMore": "Aflați mai multe", + "editModal": { + "title": "Editați numele rolurilor de conversație", + "userPrefix": "Prefix utilizator", + "assistantPrefix": "Prefix asistent" + } + }, + "toolbox": { + "title": "TRUSĂ DE UNELTE" + }, + "moderation": { + "title": "Moderarea conținutului", + "description": "Asigurați securitatea ieșirii modelului folosind API-ul de moderare sau menținând o listă de cuvinte sensibile.", + "allEnabled": "Conținut INTRARE/IEȘIRE activat", + "inputEnabled": "Conținut INTRARE activat", + "outputEnabled": "Conținut IEȘIRE activat", + "modal": { + "title": "Setări de moderare a conținutului", + "provider": { + "title": "Furnizor", + "openai": "Moderare OpenAI", + "openaiTip": { + "prefix": "Moderarea OpenAI necesită o cheie API OpenAI configurată în", + "suffix": "." + }, + "keywords": "Cuvinte cheie" + }, + "keywords": { + "tip": "Câte unul pe rând, separate prin linii noi. Maxim 100 de caractere pe linie.", + "placeholder": "Câte unul pe rând, separate prin linii noi", + "line": "Linie" + }, + "content": { + "input": "Moderează conținut INTRARE", + "output": "Moderează conținut IEȘIRE", + "preset": "Răspunsuri prestabilite", + "placeholder": "Conținut răspunsuri prestabilite aici", + "condition": "Moderează conținut INTRARE și IEȘIRE activat cel puțin unul", + "fromApi": "Răspunsurile prestabilite sunt returnate de API", + "errorMessage": "Răspunsurile prestabilite nu pot fi goale", + "supportMarkdown": "Markdown suportat" + }, + "openaiNotConfig": { + "before": "Moderarea OpenAI necesită o cheie API OpenAI configurată în", + "after": "" + } + }, + "contentEnableLabel": "Moderarea conținutului activată" + }, + "fileUpload": { + "title": "Încărcare fișier", + "description": "Caseta de intrare chat permite încărcarea de imagini, documente și alte fișiere.", + "supportedTypes": "Tipuri de fișiere suportate", + "numberLimit": "Numărul maxim de încărcări", + "modalTitle": "Setări încărcare fișier" + }, + "imageUpload": { + "title": "Încărcare imagine", + "description": "Permite încărcarea imaginilor.", + "supportedTypes": "Tipuri de fișiere suportate", + "numberLimit": "Numărul maxim de încărcări", + "modalTitle": "Setări încărcare imagine" + }, + "bar": { + "empty": "Activează funcții pentru a îmbunătăți experiența utilizatorilor aplicației web", + "enableText": "Funcții activate", + "manage": "Gestionează" + }, + "documentUpload": { + "title": "Document", + "description": "Activarea Documentului va permite modelului să primească documente și să răspundă la întrebări despre ele." + }, + "audioUpload": { + "title": "Audio", + "description": "Activarea Audio va permite modelului să proceseze fișiere audio pentru transcriere și analiză." + } + }, + "automatic": {}, + "resetConfig": { + "title": "Confirmați resetarea?", + "message": "Resetarea renunță la modificări, restabilind ultima configurație publicată." + }, + "errorMessage": { + "nameOfKeyRequired": "numele cheii: {{key}} este obligatoriu", + "valueOfVarRequired": "valoarea {{key}} nu poate fi goală", + "queryRequired": "Textul solicitării este obligatoriu.", + "waitForResponse": "Vă rugăm să așteptați finalizarea răspunsului la mesajul anterior.", + "waitForBatchResponse": "Vă rugăm să așteptați finalizarea sarcinii în lot.", + "notSelectModel": "Vă rugăm să alegeți un model", + "waitForImgUpload": "Vă rugăm să așteptați încărcarea imaginii", + "waitForFileUpload": "Vă rugăm să așteptați încărcarea fișierului / fișierelor" + }, + "chatSubTitle": "Instrucțiuni", + "completionSubTitle": "Prefix prompt", + "promptTip": "Prompturile ghidează răspunsurile AI cu instrucțiuni și constrângeri. Inserați variabile ca {{input}}. Acest prompt nu va fi vizibil utilizatorilor.", + "formattingChangedTitle": "Formatarea s-a schimbat", + "formattingChangedText": "Modificarea formatării va reseta zona de depanare, ești sigur?", + "variableTitle": "Variabile", + "variableTip": "Utilizatorii completează variabile într-un formular, înlocuind automat variabilele din prompt.", + "notSetVar": "Variabilele permit utilizatorilor să introducă cuvinte de prompt sau remarci de deschidere atunci când completează formulare. Puteți încerca să introduceți \"{{input}}\" în cuvintele de prompt.", + "autoAddVar": "Variabilele nedefinite la care se face referire în pre-prompt, doriți să le adăugați în formularul de intrare al utilizatorului?", + "variableTable": { + "key": "Cheie variabilă", + "name": "Nume câmp de intrare utilizator", + "type": "Tip intrare", + "action": "Acțiuni", + "typeString": "Șir", + "typeSelect": "Selectează" + }, + "varKeyError": { + "canNoBeEmpty": "{{key}} este necesară", + "tooLong": "{{key}} este prea lungă. Nu poate fi mai lungă de 30 de caractere", + "notValid": "{{key}} este nevalidă. Poate conține doar litere, cifre și sublinieri", + "notStartWithNumber": "{{key}} nu poate începe cu un număr", + "keyAlreadyExists": ":{{key}} deja există" + }, + "otherError": { + "promptNoBeEmpty": "Promptul nu poate fi gol", + "historyNoBeEmpty": "Istoricul conversației trebuie setat în prompt", + "queryNoBeEmpty": "Interogația trebuie setată în prompt" + }, + "variableConfig": { + "addModalTitle": "Adăugați câmp de intrare", + "editModalTitle": "Editați câmpul de intrare", + "description": "Setare pentru variabila {{varName}}", + "fieldType": "Tip de câmp", + "string": "Text scurt", + "text-input": "Text scurt", + "paragraph": "Paragraf", + "select": "Selectați", + "number": "Număr", + "notSet": "Nesetat, încercați să tastați {{input}} în promptul de prefix", + "stringTitle": "Opțiuni casetă text formular", + "maxLength": "Lungime maximă", + "options": "Opțiuni", + "addOption": "Adăugați opțiune", + "apiBasedVar": "Variabilă bazată pe API", + "varName": "Nume variabilă", + "labelName": "Nume etichetă", + "inputPlaceholder": "Vă rugăm să introduceți", + "required": "Obligatoriu", + "hide": "Ascundeți", + "errorMsg": { + "labelNameRequired": "Numele etichetei este obligatoriu", + "varNameCanBeRepeat": "Numele variabilei nu poate fi repetat", + "atLeastOneOption": "Este necesară cel puțin o opțiune", + "optionRepeat": "Există opțiuni repetate" + }, + "defaultValue": "Valoare implicită", + "noDefaultValue": "Fără valoare implicită", + "selectDefaultValue": "Selectați valoarea implicită", + "file": { + "image": { + "name": "Imagine" + }, + "audio": { + "name": "Audio" + }, + "document": { + "name": "Document" + }, + "video": { + "name": "Video" + }, + "custom": { + "createPlaceholder": " Extensia fișierului, de exemplu .doc", + "name": "Alte tipuri de fișiere", + "description": "Specificați alte tipuri de fișiere." + }, + "supportFileTypes": "Tipuri de fișiere de asistență" + }, + "content": "Conținut", + "single-file": "Un singur fișier", + "multi-files": "Lista de fișiere", + "uploadFileTypes": "Încărcați tipuri de fișiere", + "localUpload": "Încărcare locală", + "maxNumberOfUploads": "Numărul maxim de încărcări", + "maxNumberTip": "Document < {{docLimit}}, imagine < {{imgLimit}}, audio < {{audioLimit}}, video < {{videoLimit}}", + "both": "Ambii", + "optional": "opțional", + "jsonSchema": "Schema JSON", + "checkbox": "Caseta de selectare", + "json": "Cod JSON", + "unit": "Unitate", + "placeholder": "Substituent", + "noDefaultSelected": "Nu selecta", + "displayName": "Nume afișat", + "startChecked": "Pornire verificată", + "startSelectedOption": "Porniți opțiunea selectată", + "uploadMethod": "Metoda de încărcare", + "tooltipsPlaceholder": "Introduceți textul util afișat atunci când treceți cu mouse-ul peste etichetă", + "showAllSettings": "Afișează toate setările", + "tooltips": "Sfaturi", + "unitPlaceholder": "Afișați unități după numere, de exemplu jetoane", + "placeholderPlaceholder": "Introduceți text de afișat atunci când câmpul este gol", + "defaultValuePlaceholder": "Introduceți valoarea implicită pentru a precompleta câmpul" + }, + "vision": { + "name": "Viziune", + "description": "Activarea Viziunii va permite modelului să primească imagini și să răspundă la întrebări despre ele.", + "settings": "Setări", + "visionSettings": { + "title": "Setări Viziune", + "resolution": "Rezoluție", + "resolutionTooltip": "rezoluția joasă va permite modelului să primească o versiune de 512 x 512 pixeli a imaginii și să o reprezinte cu un buget de 65 de tokenuri. Acest lucru permite API-ului să returneze răspunsuri mai rapide și să consume mai puține tokenuri de intrare pentru cazurile de utilizare care nu necesită detalii ridicate.\nrezoluția ridicată va permite în primul rând modelului să vadă imaginea la rezoluție scăzută și apoi va crea decupaje detaliate ale imaginilor de intrare ca pătrate de 512 pixeli, în funcție de dimensiunea imaginii de intrare. Fiecare decupaj detaliat utilizează un buget de token dublu, pentru un total de 129 de tokenuri.", + "high": "Ridicat", + "low": "Scăzut", + "uploadMethod": "Metodă de încărcare", + "both": "Ambele", + "localUpload": "Încărcare locală", + "url": "URL", + "uploadLimit": "Limită de încărcare" + }, + "onlySupportVisionModelTip": "Acceptă doar modele vizuale" + }, + "voice": { + "name": "Voce", + "defaultDisplay": "Voce implicită", + "description": "Setări de voce text-to-speech", + "settings": "Setări", + "voiceSettings": { + "title": "Setări Voce", + "language": "Limbă", + "resolutionTooltip": "Suport pentru limba de voce text-to-speech.", + "voice": "Voce", + "autoPlay": "Redare automata", + "autoPlayEnabled": "Deschis", + "autoPlayDisabled": "închidere" + } + }, + "openingStatement": { + "title": "Deschizător de conversație", + "add": "Adăugare", + "writeOpener": "Scrieți deschizătorul", + "placeholder": "Scrieți aici mesajul de deschidere, puteți utiliza variabile, încercați să tastați {{variable}}.", + "openingQuestion": "Întrebări de deschidere", + "openingQuestionPlaceholder": "Puteți utiliza variabile, încercați să tastați {{variable}}.", + "noDataPlaceHolder": "Începerea conversației cu utilizatorul poate ajuta AI să stabilească o conexiune mai strânsă cu ei în aplicațiile conversaționale.", + "varTip": "Puteți utiliza variabile, încercați să tastați {{variable}}", + "tooShort": "Este necesară o promptare inițială de cel puțin 20 de cuvinte pentru a genera o remarcă de deschidere a conversației.", + "notIncludeKey": "Promptarea inițială nu include variabila: {{key}}. Vă rugăm să o adăugați la promptarea inițială." + }, + "modelConfig": { + "model": "Model", + "setTone": "Setați tonul răspunsurilor", + "title": "Model și Parametri", + "modeType": { + "chat": "Chat", + "completion": "Completare" + } + }, + "inputs": { + "title": "Depanare și previzualizare", + "noPrompt": "Încercați să scrieți o promptare în câmpul de intrare pre-promptare", + "userInputField": "Câmp de intrare utilizator", + "noVar": "Completați valoarea variabilei, care va fi înlocuită automat în promptarea cuvintelor de fiecare dată când este pornită o nouă sesiune.", + "chatVarTip": "Completați valoarea variabilei, care va fi înlocuită automat în promptarea cuvintelor de fiecare dată când este pornită o nouă sesiune", + "completionVarTip": "Completați valoarea variabilei, care va fi înlocuită automat în promptarea cuvintelor de fiecare dată când este trimisă o întrebare.", + "previewTitle": "Previzualizare promptare", + "queryTitle": "Conținut interogare", + "queryPlaceholder": "Vă rugăm să introduceți textul solicitării.", + "run": "RULARE" + }, + "result": "Text de ieșire", + "datasetConfig": { + "settingTitle": "Setări de recuperare", + "knowledgeTip": "Faceți clic pe butonul \"+\" pentru a adăuga cunoștințe", + "retrieveOneWay": { + "title": "Recuperare N-la-1", + "description": "Pe baza intenției utilizatorului și a descrierilor Cunoștințelor, Agentul selectează în mod autonom cea mai bună Cunoștință pentru interogare. Cel mai bun pentru aplicații cu Cunoștințe distincte și limitate." + }, + "retrieveMultiWay": { + "title": "Recuperare multi-cale", + "description": "Pe baza intenției utilizatorului, interogați toate Cunoștințele, recuperați textul relevant din mai multe surse și selectați cele mai bune rezultate care se potrivesc interogării utilizatorului după reclasificare. Este necesară configurarea API-ului Rerank Model." + }, + "rerankModelRequired": "Este necesar modelul Rerank", + "params": "Parametri", + "top_k": "Top K", + "top_kTip": "Utilizat pentru a filtra bucățile cele mai similare cu întrebările utilizatorilor. Sistemul va ajusta, de asemenea, în mod dinamic valoarea Top K, în funcție de max_tokens al modelului selectat.", + "score_threshold": "Prag scor", + "score_thresholdTip": "Utilizat pentru a seta pragul de similitudine pentru filtrarea bucăților.", + "retrieveChangeTip": "Modificarea modului de indexare și a modului de recuperare poate afecta aplicațiile asociate cu aceste Cunoștințe.", + "embeddingModelRequired": "Este necesar un model de încorporare configurat" + }, + "debugAsSingleModel": "Depanare ca Model Unic", + "debugAsMultipleModel": "Depanare ca Modele Multiple", + "duplicateModel": "Duplicare", + "publishAs": "Publicare ca", + "assistantType": { + "name": "Tip Asistent", + "chatAssistant": { + "name": "Asistent de bază", + "description": "Construiți un asistent bazat pe chat utilizând un Model de Limbaj Mare" + }, + "agentAssistant": { + "name": "Asistent Agent", + "description": "Construiți un Agent inteligent care poate alege în mod autonom instrumente pentru a îndeplini sarcinile" + } + }, + "agent": { + "agentMode": "Mod Agent", + "agentModeDes": "Setați tipul de mod de inferență pentru agent", + "agentModeType": { + "ReACT": "ReAct", + "functionCall": "Apel de Funcție" + }, + "setting": { + "name": "Setări Agent", + "description": "Setările Asistentului Agent permit setarea modului agent și a funcțiilor avansate, cum ar fi prompturile încorporate, disponibile numai în tipul Agent.", + "maximumIterations": { + "name": "Iterații maxime", + "description": "Limitați numărul de iterații pe care le poate executa un asistent agent" + } + }, + "buildInPrompt": "Prompt încorporat", + "firstPrompt": "Primul Prompt", + "nextIteration": "Iterația următoare", + "promptPlaceholder": "Scrieți promptul aici", + "tools": { + "name": "Instrumente", + "description": "Utilizarea instrumentelor poate extinde capacitățile LLM, cum ar fi căutarea pe internet sau efectuarea de calcule științifice", + "enabled": "Activat" + } + }, + "codegen": { + "overwriteConfirmTitle": "Suprascrierea codului existent?", + "resTitle": "Cod generat", + "instruction": "Instrucţiuni", + "description": "Generatorul de cod utilizează modele configurate pentru a genera cod de înaltă calitate pe baza instrucțiunilor dvs. Vă rugăm să oferiți instrucțiuni clare și detaliate.", + "generatedCodeTitle": "Cod generat", + "apply": "Aplica", + "noDataLine2": "Previzualizarea codului va fi afișată aici.", + "noDataLine1": "Descrieți cazul de utilizare din stânga,", + "instructionPlaceholder": "Introduceți descrierea detaliată a codului pe care doriți să îl generați.", + "generate": "Genera", + "title": "Generator de coduri", + "applyChanges": "Aplicarea modificărilor", + "overwriteConfirmMessage": "Această acțiune va suprascrie codul existent. Vrei să continui?", + "loading": "Generarea codului..." + }, + "generate": { + "template": { + "pythonDebugger": { + "name": "Depanator Python", + "instruction": "Un bot care vă poate genera și depana codul pe baza instrucțiunilor dvs." + }, + "translation": { + "instruction": "Un traducător care poate traduce mai multe limbi", + "name": "Traducere" + }, + "professionalAnalyst": { + "name": "Analist profesionist", + "instruction": "Extrageți informații, identificați riscurile și distilați informațiile cheie din rapoartele lungi într-o singură notă" + }, + "excelFormulaExpert": { + "name": "Expert în formule Excel", + "instruction": "Un chatbot care poate ajuta utilizatorii începători să înțeleagă, să utilizeze și să creeze formule Excel pe baza instrucțiunilor utilizatorului" + }, + "travelPlanning": { + "name": "Planificarea călătoriei", + "instruction": "Asistentul de planificare a călătoriilor este un instrument inteligent conceput pentru a ajuta utilizatorii să-și planifice călătoriile fără efort" + }, + "SQLSorcerer": { + "name": "Vrăjitor SQL", + "instruction": "Transformați limbajul de zi cu zi în interogări SQL" + }, + "GitGud": { + "instruction": "Generați comenzi Git adecvate pe baza acțiunilor de control al versiunii descrise de utilizator", + "name": "Git gud" + }, + "meetingTakeaways": { + "instruction": "Distilați întâlnirile în rezumate concise, inclusiv subiecte de discuție, concluzii cheie și elemente de acțiune", + "name": "Concluzii ale întâlnirilor" + }, + "writingsPolisher": { + "name": "Șlefuitor de scris", + "instruction": "Utilizați tehnici avansate de editare pentru a vă îmbunătăți scrierile" + } + }, + "apply": "Aplica", + "generate": "Genera", + "resTitle": "Solicitare generată", + "tryIt": "Încearcă-l", + "overwriteTitle": "Înlocuiți configurația existentă?", + "description": "Generatorul de solicitări utilizează modelul configurat pentru a optimiza solicitările pentru o calitate superioară și o structură mai bună. Vă rugăm să scrieți instrucțiuni clare și detaliate.", + "instruction": "Instrucţiuni", + "loading": "Orchestrarea aplicației pentru dvs....", + "title": "Generator de solicitări", + "overwriteMessage": "Aplicarea acestei solicitări va înlocui configurația existentă.", + "press": "Presa", + "versions": "Versiuni", + "version": "Versiune", + "dismiss": "Respingere", + "to": "la", + "insertContext": "introduceți contextul", + "latest": "Cea mai recentă", + "idealOutput": "Ieșire ideală", + "optimizePromptTooltip": "Optimizează în Generatorul de Prompturi", + "optional": "Optional", + "optimizationNote": "Notă de optimizare", + "instructionPlaceHolderTitle": "Descrie cum ai dori să îmbunătățești acest Prompt. De exemplu:", + "instructionPlaceHolderLine3": "Tonul este prea aspru, te rog să-l faci mai prietenos.", + "newNoDataLine1": "Scrie o instrucțiune în coloana din stânga și apasă pe Generează pentru a vedea răspunsul.", + "codeGenInstructionPlaceHolderLine": "Cu cât feedback-ul este mai detaliat, cum ar fi tipurile de date ale inputului și outputului, precum și modul în care sunt procesate variabilele, cu atât generarea codului va fi mai precisă.", + "instructionPlaceHolderLine2": "Formatul de ieșire este incorect, vă rugăm să urmați strict formatul JSON.", + "idealOutputPlaceholder": "Descrie formatul ideal al răspunsului tău, lungimea, tonul și cerințele de conținut...", + "instructionPlaceHolderLine1": "Fă outputul mai concis, păstrând ideile principale." + }, + "warningMessage": { + "timeoutExceeded": "Rezultatele nu sunt afișate din cauza expirării. Vă rugăm să consultați jurnalele pentru a colecta rezultatele complete." + }, + "noResult": "Ieșirea va fi afișată aici." +} diff --git a/web/i18n/ro-RO/app-debug.ts b/web/i18n/ro-RO/app-debug.ts deleted file mode 100644 index 8e36078be5..0000000000 --- a/web/i18n/ro-RO/app-debug.ts +++ /dev/null @@ -1,575 +0,0 @@ -const translation = { - pageTitle: { - line1: 'PROMPT', - line2: 'Inginerie', - }, - orchestrate: 'Orchestrează', - promptMode: { - simple: 'Comută la Modul Expert pentru a edita întregul PROMPT', - advanced: 'Mod Expert', - switchBack: 'Comută înapoi', - advancedWarning: { - title: 'Ați commutat la Modul Expert și, odată ce modificați PROMPT-ul, NU puteți reveni la modul de bază.', - description: 'În Modul Expert, puteți edita întregul PROMPT.', - learnMore: 'Aflați mai multe', - ok: 'OK', - }, - operation: { - addMessage: 'Adaugă mesaj', - }, - contextMissing: 'Componentă de context lipsește, eficacitatea promptului poate să nu fie bună.', - }, - operation: { - applyConfig: 'Publică', - resetConfig: 'Resetează', - debugConfig: 'Depanează', - addFeature: 'Adaugă funcție', - automatic: 'Automat', - stopResponding: 'Oprește răspunsul', - agree: 'Îmi place', - disagree: 'Nu îmi place', - cancelAgree: 'Anulează Îmi place', - cancelDisagree: 'Anulează Nu îmi place', - userAction: 'Utilizator ', - }, - notSetAPIKey: { - title: 'Cheia furnizorului LLM nu a fost setată', - trailFinished: 'Perioada de încercare a expirat', - description: 'Cheia furnizorului LLM nu a fost setată și trebuie să fie setată înainte de depanare.', - settingBtn: 'Du-te la setări', - }, - trailUseGPT4Info: { - title: 'Nu se acceptă acum gpt-4', - description: 'Pentru a utiliza gpt-4, vă rugăm să setați cheia API.', - }, - feature: { - groupChat: { - title: 'Îmbunătățire chat', - description: 'Adăugați setări pre-conversație pentru aplicații, pentru a îmbunătăți experiența utilizatorilor.', - }, - groupExperience: { - title: 'Îmbunătățire experiență', - }, - conversationOpener: { - title: 'Reîncărcări conversație', - description: 'Într-o aplicație de chat, prima propoziție pe care IA o vorbește în mod activ utilizatorului este de obicei utilizată ca salut.', - }, - suggestedQuestionsAfterAnswer: { - title: 'Urmărire', - description: 'Setarea sugestiilor pentru întrebările următoare poate oferi utilizatorilor o conversație mai bună.', - resDes: '3 sugestii pentru următoarea întrebare a utilizatorului.', - tryToAsk: 'Încercați să întrebați', - }, - moreLikeThis: { - title: 'Mai multe ca aceasta', - description: 'Generați mai multe texte o dată, apoi editați și continuați să generați', - generateNumTip: 'Numărul de generări fiecăruia', - tip: 'Utilizarea acestei funcții va genera un consum suplimentar de jetoane', - }, - speechToText: { - title: 'Voce la text', - description: 'După activare, puteți utiliza intrarea vocală.', - resDes: 'Intrarea vocală este activată', - }, - textToSpeech: { - title: 'Text la voce', - description: 'După activare, textul poate fi convertit în vorbire.', - resDes: 'Textul la audio este activat', - }, - citation: { - title: 'Citări și atribuiri', - description: 'După activare, se vor afișa documentul sursă și secțiunea atribuită a conținutului generat.', - resDes: 'Citări și atribuiri sunt activate', - }, - annotation: { - title: 'Răspuns anotat', - description: 'Puteți adăuga manual răspunsuri de înaltă calitate în cache pentru a le prioritiza la potrivirea cu întrebările similare ale utilizatorilor.', - resDes: 'Răspuns anotat este activat', - scoreThreshold: { - title: 'Prag de scor', - description: 'Folosit pentru a seta pragul de similitudine pentru răspunsul anotat.', - easyMatch: 'Potrivire simplă', - accurateMatch: 'Potrivire precisă', - }, - matchVariable: { - title: 'Variabilă de potrivire', - choosePlaceholder: 'Alegeți variabila de potrivire', - }, - cacheManagement: 'Adnotări', - cached: 'Adnotat', - remove: 'Elimină', - removeConfirm: 'Ștergeți această adnotare?', - add: 'Adaugă adnotare', - edit: 'Editează adnotare', - }, - dataSet: { - title: 'Context', - noData: 'Puteți importa Cunoștințe ca context', - selectTitle: 'Selectați Cunoștințe de referință', - selected: 'Cunoștințe selectate', - noDataSet: 'Nu s-au găsit Cunoștințe', - toCreate: 'Du-te la creare', - notSupportSelectMulti: 'În prezent se acceptă doar o singură Cunoștință', - queryVariable: { - title: 'Variabilă de interogare', - tip: 'Această variabilă va fi utilizată ca intrare de interogare pentru recuperarea contextului, obținând informații de context legate de intrarea acestei variabile.', - choosePlaceholder: 'Alegeți variabila de interogare', - noVar: 'Nicio variabilă', - noVarTip: 'vă rugăm să creați o variabilă în secțiunea Variabile', - unableToQueryDataSet: 'Imposibil de interogat Cunoștințele', - unableToQueryDataSetTip: 'Nu s-a reușit interogarea cu succes a Cunoștințelor, vă rugăm să alegeți o variabilă de interogare a contextului în secțiunea context.', - ok: 'OK', - contextVarNotEmpty: 'variabila de interogare a contextului nu poate fi goală', - deleteContextVarTitle: 'Ștergeți variabila "{{varName}}"?', - deleteContextVarTip: 'Această variabilă a fost setată ca variabilă de interogare a contextului și eliminarea ei va afecta utilizarea normală a Cunoștințelor. Dacă totuși trebuie să o ștergeți, vă rugăm să o reselectați în secțiunea context.', - }, - }, - tools: { - title: 'Instrumente', - tips: 'Instrumentele oferă o metodă de apel API standard, luând intrarea utilizatorului sau variabilele ca parametri de solicitare pentru interogarea datelor externe ca context.', - toolsInUse: '{{count}} instrumente în uz', - modal: { - title: 'Instrument', - toolType: { - title: 'Tip instrument', - placeholder: 'Vă rugăm să selectați tipul de instrument', - }, - name: { - title: 'Nume', - placeholder: 'Vă rugăm să introduceți numele', - }, - variableName: { - title: 'Nume variabilă', - placeholder: 'Vă rugăm să introduceți numele variabilei', - }, - }, - }, - conversationHistory: { - title: 'Istoric conversație', - description: 'Setați numele prefixe pentru rolurile de conversație', - tip: 'Istoricul conversației nu este activat, adăugați în promptul de mai sus.', - learnMore: 'Aflați mai multe', - editModal: { - title: 'Editați numele rolurilor de conversație', - userPrefix: 'Prefix utilizator', - assistantPrefix: 'Prefix asistent', - }, - }, - toolbox: { - title: 'TRUSĂ DE UNELTE', - }, - moderation: { - title: 'Moderarea conținutului', - description: 'Asigurați securitatea ieșirii modelului folosind API-ul de moderare sau menținând o listă de cuvinte sensibile.', - allEnabled: 'Conținut INTRARE/IEȘIRE activat', - inputEnabled: 'Conținut INTRARE activat', - outputEnabled: 'Conținut IEȘIRE activat', - modal: { - title: 'Setări de moderare a conținutului', - provider: { - title: 'Furnizor', - openai: 'Moderare OpenAI', - openaiTip: { - prefix: 'Moderarea OpenAI necesită o cheie API OpenAI configurată în', - suffix: '.', - }, - keywords: 'Cuvinte cheie', - }, - keywords: { - tip: 'Câte unul pe rând, separate prin linii noi. Maxim 100 de caractere pe linie.', - placeholder: 'Câte unul pe rând, separate prin linii noi', - line: 'Linie', - }, - content: { - input: 'Moderează conținut INTRARE', - output: 'Moderează conținut IEȘIRE', - preset: 'Răspunsuri prestabilite', - placeholder: 'Conținut răspunsuri prestabilite aici', - condition: 'Moderează conținut INTRARE și IEȘIRE activat cel puțin unul', - fromApi: 'Răspunsurile prestabilite sunt returnate de API', - errorMessage: 'Răspunsurile prestabilite nu pot fi goale', - supportMarkdown: 'Markdown suportat', - }, - openaiNotConfig: { - before: 'Moderarea OpenAI necesită o cheie API OpenAI configurată în', - after: '', - }, - }, - contentEnableLabel: 'Moderarea conținutului activată', - }, - fileUpload: { - title: 'Încărcare fișier', - description: 'Caseta de intrare chat permite încărcarea de imagini, documente și alte fișiere.', - supportedTypes: 'Tipuri de fișiere suportate', - numberLimit: 'Numărul maxim de încărcări', - modalTitle: 'Setări încărcare fișier', - }, - imageUpload: { - title: 'Încărcare imagine', - description: 'Permite încărcarea imaginilor.', - supportedTypes: 'Tipuri de fișiere suportate', - numberLimit: 'Numărul maxim de încărcări', - modalTitle: 'Setări încărcare imagine', - }, - bar: { - empty: 'Activează funcții pentru a îmbunătăți experiența utilizatorilor aplicației web', - enableText: 'Funcții activate', - manage: 'Gestionează', - }, - documentUpload: { - title: 'Document', - description: 'Activarea Documentului va permite modelului să primească documente și să răspundă la întrebări despre ele.', - }, - audioUpload: { - title: 'Audio', - description: 'Activarea Audio va permite modelului să proceseze fișiere audio pentru transcriere și analiză.', - }, - }, - automatic: { - }, - resetConfig: { - title: 'Confirmați resetarea?', - message: - 'Resetarea renunță la modificări, restabilind ultima configurație publicată.', - }, - errorMessage: { - nameOfKeyRequired: 'numele cheii: {{key}} este obligatoriu', - valueOfVarRequired: 'valoarea {{key}} nu poate fi goală', - queryRequired: 'Textul solicitării este obligatoriu.', - waitForResponse: - 'Vă rugăm să așteptați finalizarea răspunsului la mesajul anterior.', - waitForBatchResponse: - 'Vă rugăm să așteptați finalizarea sarcinii în lot.', - notSelectModel: 'Vă rugăm să alegeți un model', - waitForImgUpload: 'Vă rugăm să așteptați încărcarea imaginii', - waitForFileUpload: 'Vă rugăm să așteptați încărcarea fișierului / fișierelor', - }, - chatSubTitle: 'Instrucțiuni', - completionSubTitle: 'Prefix prompt', - promptTip: - 'Prompturile ghidează răspunsurile AI cu instrucțiuni și constrângeri. Inserați variabile ca {{input}}. Acest prompt nu va fi vizibil utilizatorilor.', - formattingChangedTitle: 'Formatarea s-a schimbat', - formattingChangedText: - 'Modificarea formatării va reseta zona de depanare, ești sigur?', - variableTitle: 'Variabile', - variableTip: - 'Utilizatorii completează variabile într-un formular, înlocuind automat variabilele din prompt.', - notSetVar: 'Variabilele permit utilizatorilor să introducă cuvinte de prompt sau remarci de deschidere atunci când completează formulare. Puteți încerca să introduceți "{{input}}" în cuvintele de prompt.', - autoAddVar: 'Variabilele nedefinite la care se face referire în pre-prompt, doriți să le adăugați în formularul de intrare al utilizatorului?', - variableTable: { - key: 'Cheie variabilă', - name: 'Nume câmp de intrare utilizator', - type: 'Tip intrare', - action: 'Acțiuni', - typeString: 'Șir', - typeSelect: 'Selectează', - }, - varKeyError: { - canNoBeEmpty: '{{key}} este necesară', - tooLong: '{{key}} este prea lungă. Nu poate fi mai lungă de 30 de caractere', - notValid: '{{key}} este nevalidă. Poate conține doar litere, cifre și sublinieri', - notStartWithNumber: '{{key}} nu poate începe cu un număr', - keyAlreadyExists: ':{{key}} deja există', - }, - otherError: { - promptNoBeEmpty: 'Promptul nu poate fi gol', - historyNoBeEmpty: 'Istoricul conversației trebuie setat în prompt', - queryNoBeEmpty: 'Interogația trebuie setată în prompt', - }, - variableConfig: { - 'addModalTitle': 'Adăugați câmp de intrare', - 'editModalTitle': 'Editați câmpul de intrare', - 'description': 'Setare pentru variabila {{varName}}', - 'fieldType': 'Tip de câmp', - 'string': 'Text scurt', - 'text-input': 'Text scurt', - 'paragraph': 'Paragraf', - 'select': 'Selectați', - 'number': 'Număr', - 'notSet': 'Nesetat, încercați să tastați {{input}} în promptul de prefix', - 'stringTitle': 'Opțiuni casetă text formular', - 'maxLength': 'Lungime maximă', - 'options': 'Opțiuni', - 'addOption': 'Adăugați opțiune', - 'apiBasedVar': 'Variabilă bazată pe API', - 'varName': 'Nume variabilă', - 'labelName': 'Nume etichetă', - 'inputPlaceholder': 'Vă rugăm să introduceți', - 'required': 'Obligatoriu', - 'hide': 'Ascundeți', - 'errorMsg': { - labelNameRequired: 'Numele etichetei este obligatoriu', - varNameCanBeRepeat: 'Numele variabilei nu poate fi repetat', - atLeastOneOption: 'Este necesară cel puțin o opțiune', - optionRepeat: 'Există opțiuni repetate', - }, - 'defaultValue': 'Valoare implicită', - 'noDefaultValue': 'Fără valoare implicită', - 'selectDefaultValue': 'Selectați valoarea implicită', - 'file': { - image: { - name: 'Imagine', - }, - audio: { - name: 'Audio', - }, - document: { - name: 'Document', - }, - video: { - name: 'Video', - }, - custom: { - createPlaceholder: ' Extensia fișierului, de exemplu .doc', - name: 'Alte tipuri de fișiere', - description: 'Specificați alte tipuri de fișiere.', - }, - supportFileTypes: 'Tipuri de fișiere de asistență', - }, - 'content': 'Conținut', - 'single-file': 'Un singur fișier', - 'multi-files': 'Lista de fișiere', - 'uploadFileTypes': 'Încărcați tipuri de fișiere', - 'localUpload': 'Încărcare locală', - 'maxNumberOfUploads': 'Numărul maxim de încărcări', - 'maxNumberTip': 'Document < {{docLimit}}, imagine < {{imgLimit}}, audio < {{audioLimit}}, video < {{videoLimit}}', - 'both': 'Ambii', - 'optional': 'opțional', - 'jsonSchema': 'Schema JSON', - 'checkbox': 'Caseta de selectare', - 'json': 'Cod JSON', - 'unit': 'Unitate', - 'placeholder': 'Substituent', - 'noDefaultSelected': 'Nu selecta', - 'displayName': 'Nume afișat', - 'startChecked': 'Pornire verificată', - 'startSelectedOption': 'Porniți opțiunea selectată', - 'uploadMethod': 'Metoda de încărcare', - 'tooltipsPlaceholder': 'Introduceți textul util afișat atunci când treceți cu mouse-ul peste etichetă', - 'showAllSettings': 'Afișează toate setările', - 'tooltips': 'Sfaturi', - 'unitPlaceholder': 'Afișați unități după numere, de exemplu jetoane', - 'placeholderPlaceholder': 'Introduceți text de afișat atunci când câmpul este gol', - 'defaultValuePlaceholder': 'Introduceți valoarea implicită pentru a precompleta câmpul', - }, - vision: { - name: 'Viziune', - description: 'Activarea Viziunii va permite modelului să primească imagini și să răspundă la întrebări despre ele.', - settings: 'Setări', - visionSettings: { - title: 'Setări Viziune', - resolution: 'Rezoluție', - resolutionTooltip: 'rezoluția joasă va permite modelului să primească o versiune de 512 x 512 pixeli a imaginii și să o reprezinte cu un buget de 65 de tokenuri. Acest lucru permite API-ului să returneze răspunsuri mai rapide și să consume mai puține tokenuri de intrare pentru cazurile de utilizare care nu necesită detalii ridicate.\nrezoluția ridicată va permite în primul rând modelului să vadă imaginea la rezoluție scăzută și apoi va crea decupaje detaliate ale imaginilor de intrare ca pătrate de 512 pixeli, în funcție de dimensiunea imaginii de intrare. Fiecare decupaj detaliat utilizează un buget de token dublu, pentru un total de 129 de tokenuri.', - high: 'Ridicat', - low: 'Scăzut', - uploadMethod: 'Metodă de încărcare', - both: 'Ambele', - localUpload: 'Încărcare locală', - url: 'URL', - uploadLimit: 'Limită de încărcare', - }, - onlySupportVisionModelTip: 'Acceptă doar modele vizuale', - }, - voice: { - name: 'Voce', - defaultDisplay: 'Voce implicită', - description: 'Setări de voce text-to-speech', - settings: 'Setări', - voiceSettings: { - title: 'Setări Voce', - language: 'Limbă', - resolutionTooltip: 'Suport pentru limba de voce text-to-speech.', - voice: 'Voce', - autoPlay: 'Redare automata', - autoPlayEnabled: 'Deschis', - autoPlayDisabled: 'închidere', - }, - }, - openingStatement: { - title: 'Deschizător de conversație', - add: 'Adăugare', - writeOpener: 'Scrieți deschizătorul', - placeholder: 'Scrieți aici mesajul de deschidere, puteți utiliza variabile, încercați să tastați {{variable}}.', - openingQuestion: 'Întrebări de deschidere', - openingQuestionPlaceholder: 'Puteți utiliza variabile, încercați să tastați {{variable}}.', - noDataPlaceHolder: - 'Începerea conversației cu utilizatorul poate ajuta AI să stabilească o conexiune mai strânsă cu ei în aplicațiile conversaționale.', - varTip: 'Puteți utiliza variabile, încercați să tastați {{variable}}', - tooShort: 'Este necesară o promptare inițială de cel puțin 20 de cuvinte pentru a genera o remarcă de deschidere a conversației.', - notIncludeKey: 'Promptarea inițială nu include variabila: {{key}}. Vă rugăm să o adăugați la promptarea inițială.', - }, - modelConfig: { - model: 'Model', - setTone: 'Setați tonul răspunsurilor', - title: 'Model și Parametri', - modeType: { - chat: 'Chat', - completion: 'Completare', - }, - }, - inputs: { - title: 'Depanare și previzualizare', - noPrompt: 'Încercați să scrieți o promptare în câmpul de intrare pre-promptare', - userInputField: 'Câmp de intrare utilizator', - noVar: 'Completați valoarea variabilei, care va fi înlocuită automat în promptarea cuvintelor de fiecare dată când este pornită o nouă sesiune.', - chatVarTip: - 'Completați valoarea variabilei, care va fi înlocuită automat în promptarea cuvintelor de fiecare dată când este pornită o nouă sesiune', - completionVarTip: - 'Completați valoarea variabilei, care va fi înlocuită automat în promptarea cuvintelor de fiecare dată când este trimisă o întrebare.', - previewTitle: 'Previzualizare promptare', - queryTitle: 'Conținut interogare', - queryPlaceholder: 'Vă rugăm să introduceți textul solicitării.', - run: 'RULARE', - }, - result: 'Text de ieșire', - datasetConfig: { - settingTitle: 'Setări de recuperare', - knowledgeTip: 'Faceți clic pe butonul "+" pentru a adăuga cunoștințe', - retrieveOneWay: { - title: 'Recuperare N-la-1', - description: 'Pe baza intenției utilizatorului și a descrierilor Cunoștințelor, Agentul selectează în mod autonom cea mai bună Cunoștință pentru interogare. Cel mai bun pentru aplicații cu Cunoștințe distincte și limitate.', - }, - retrieveMultiWay: { - title: 'Recuperare multi-cale', - description: 'Pe baza intenției utilizatorului, interogați toate Cunoștințele, recuperați textul relevant din mai multe surse și selectați cele mai bune rezultate care se potrivesc interogării utilizatorului după reclasificare. Este necesară configurarea API-ului Rerank Model.', - }, - rerankModelRequired: 'Este necesar modelul Rerank', - params: 'Parametri', - top_k: 'Top K', - top_kTip: 'Utilizat pentru a filtra bucățile cele mai similare cu întrebările utilizatorilor. Sistemul va ajusta, de asemenea, în mod dinamic valoarea Top K, în funcție de max_tokens al modelului selectat.', - score_threshold: 'Prag scor', - score_thresholdTip: 'Utilizat pentru a seta pragul de similitudine pentru filtrarea bucăților.', - retrieveChangeTip: 'Modificarea modului de indexare și a modului de recuperare poate afecta aplicațiile asociate cu aceste Cunoștințe.', - embeddingModelRequired: 'Este necesar un model de încorporare configurat', - }, - debugAsSingleModel: 'Depanare ca Model Unic', - debugAsMultipleModel: 'Depanare ca Modele Multiple', - duplicateModel: 'Duplicare', - publishAs: 'Publicare ca', - assistantType: { - name: 'Tip Asistent', - chatAssistant: { - name: 'Asistent de bază', - description: 'Construiți un asistent bazat pe chat utilizând un Model de Limbaj Mare', - }, - agentAssistant: { - name: 'Asistent Agent', - description: 'Construiți un Agent inteligent care poate alege în mod autonom instrumente pentru a îndeplini sarcinile', - }, - }, - agent: { - agentMode: 'Mod Agent', - agentModeDes: 'Setați tipul de mod de inferență pentru agent', - agentModeType: { - ReACT: 'ReAct', - functionCall: 'Apel de Funcție', - }, - setting: { - name: 'Setări Agent', - description: 'Setările Asistentului Agent permit setarea modului agent și a funcțiilor avansate, cum ar fi prompturile încorporate, disponibile numai în tipul Agent.', - maximumIterations: { - name: 'Iterații maxime', - description: 'Limitați numărul de iterații pe care le poate executa un asistent agent', - }, - }, - buildInPrompt: 'Prompt încorporat', - firstPrompt: 'Primul Prompt', - nextIteration: 'Iterația următoare', - promptPlaceholder: 'Scrieți promptul aici', - tools: { - name: 'Instrumente', - description: 'Utilizarea instrumentelor poate extinde capacitățile LLM, cum ar fi căutarea pe internet sau efectuarea de calcule științifice', - enabled: 'Activat', - }, - }, - codegen: { - overwriteConfirmTitle: 'Suprascrierea codului existent?', - resTitle: 'Cod generat', - instruction: 'Instrucţiuni', - description: 'Generatorul de cod utilizează modele configurate pentru a genera cod de înaltă calitate pe baza instrucțiunilor dvs. Vă rugăm să oferiți instrucțiuni clare și detaliate.', - generatedCodeTitle: 'Cod generat', - apply: 'Aplica', - noDataLine2: 'Previzualizarea codului va fi afișată aici.', - noDataLine1: 'Descrieți cazul de utilizare din stânga,', - instructionPlaceholder: 'Introduceți descrierea detaliată a codului pe care doriți să îl generați.', - generate: 'Genera', - title: 'Generator de coduri', - applyChanges: 'Aplicarea modificărilor', - overwriteConfirmMessage: 'Această acțiune va suprascrie codul existent. Vrei să continui?', - loading: 'Generarea codului...', - }, - generate: { - template: { - pythonDebugger: { - name: 'Depanator Python', - instruction: 'Un bot care vă poate genera și depana codul pe baza instrucțiunilor dvs.', - }, - translation: { - instruction: 'Un traducător care poate traduce mai multe limbi', - name: 'Traducere', - }, - professionalAnalyst: { - name: 'Analist profesionist', - instruction: 'Extrageți informații, identificați riscurile și distilați informațiile cheie din rapoartele lungi într-o singură notă', - }, - excelFormulaExpert: { - name: 'Expert în formule Excel', - instruction: 'Un chatbot care poate ajuta utilizatorii începători să înțeleagă, să utilizeze și să creeze formule Excel pe baza instrucțiunilor utilizatorului', - }, - travelPlanning: { - name: 'Planificarea călătoriei', - instruction: 'Asistentul de planificare a călătoriilor este un instrument inteligent conceput pentru a ajuta utilizatorii să-și planifice călătoriile fără efort', - }, - SQLSorcerer: { - name: 'Vrăjitor SQL', - instruction: 'Transformați limbajul de zi cu zi în interogări SQL', - }, - GitGud: { - instruction: 'Generați comenzi Git adecvate pe baza acțiunilor de control al versiunii descrise de utilizator', - name: 'Git gud', - }, - meetingTakeaways: { - instruction: 'Distilați întâlnirile în rezumate concise, inclusiv subiecte de discuție, concluzii cheie și elemente de acțiune', - name: 'Concluzii ale întâlnirilor', - }, - writingsPolisher: { - name: 'Șlefuitor de scris', - instruction: 'Utilizați tehnici avansate de editare pentru a vă îmbunătăți scrierile', - }, - }, - apply: 'Aplica', - generate: 'Genera', - resTitle: 'Solicitare generată', - tryIt: 'Încearcă-l', - overwriteTitle: 'Înlocuiți configurația existentă?', - description: 'Generatorul de solicitări utilizează modelul configurat pentru a optimiza solicitările pentru o calitate superioară și o structură mai bună. Vă rugăm să scrieți instrucțiuni clare și detaliate.', - instruction: 'Instrucţiuni', - loading: 'Orchestrarea aplicației pentru dvs....', - title: 'Generator de solicitări', - overwriteMessage: 'Aplicarea acestei solicitări va înlocui configurația existentă.', - press: 'Presa', - versions: 'Versiuni', - version: 'Versiune', - dismiss: 'Respingere', - to: 'la', - insertContext: 'introduceți contextul', - latest: 'Cea mai recentă', - idealOutput: 'Ieșire ideală', - optimizePromptTooltip: 'Optimizează în Generatorul de Prompturi', - optional: 'Optional', - optimizationNote: 'Notă de optimizare', - instructionPlaceHolderTitle: 'Descrie cum ai dori să îmbunătățești acest Prompt. De exemplu:', - instructionPlaceHolderLine3: 'Tonul este prea aspru, te rog să-l faci mai prietenos.', - newNoDataLine1: 'Scrie o instrucțiune în coloana din stânga și apasă pe Generează pentru a vedea răspunsul.', - codeGenInstructionPlaceHolderLine: 'Cu cât feedback-ul este mai detaliat, cum ar fi tipurile de date ale inputului și outputului, precum și modul în care sunt procesate variabilele, cu atât generarea codului va fi mai precisă.', - instructionPlaceHolderLine2: 'Formatul de ieșire este incorect, vă rugăm să urmați strict formatul JSON.', - idealOutputPlaceholder: 'Descrie formatul ideal al răspunsului tău, lungimea, tonul și cerințele de conținut...', - instructionPlaceHolderLine1: 'Fă outputul mai concis, păstrând ideile principale.', - }, - warningMessage: { - timeoutExceeded: 'Rezultatele nu sunt afișate din cauza expirării. Vă rugăm să consultați jurnalele pentru a colecta rezultatele complete.', - }, - noResult: 'Ieșirea va fi afișată aici.', -} - -export default translation diff --git a/web/i18n/ro-RO/app-log.json b/web/i18n/ro-RO/app-log.json new file mode 100644 index 0000000000..0439e59f88 --- /dev/null +++ b/web/i18n/ro-RO/app-log.json @@ -0,0 +1,110 @@ +{ + "title": "Jurnale", + "description": "Jurnalele înregistrează starea de funcționare a aplicației, inclusiv intrările utilizatorilor și răspunsurile AI.", + "dateTimeFormat": "DD/MM/YYYY hh:mm:ss A", + "table": { + "header": { + "updatedTime": "Timp actualizare", + "time": "Timp creare", + "endUser": "Utilizator final sau cont", + "input": "Intrare", + "output": "Ieșire", + "summary": "Titlu", + "messageCount": "Număr de mesaje", + "userRate": "Evaluare utilizator", + "adminRate": "Evaluare op.", + "startTime": "ORA DE ÎNCEPERE", + "status": "STARE", + "runtime": "TIMP DE RULARE", + "tokens": "JETOANE", + "user": "UTILIZATOR FINAL SAU CONT", + "version": "VERSIUNE", + "triggered_from": "DECLANȘAT DE" + }, + "pagination": { + "previous": "Anterior", + "next": "Următor" + }, + "empty": { + "noChat": "Încă nu există nicio conversație", + "noOutput": "Fără ieșire", + "element": { + "title": "Există cineva acolo?", + "content": "Observați și annotați interacțiunile dintre utilizatorii finali și aplicațiile AI pentru a îmbunătăți în mod continuu acuratețea AI. Puteți încerca să partajați sau să testați aplicația web, apoi reveniți la această pagină." + } + } + }, + "detail": { + "time": "Oră", + "conversationId": "ID conversație", + "promptTemplate": "Șablon prompt", + "promptTemplateBeforeChat": "Șablon prompt înainte de chat · Ca mesaj de sistem", + "annotationTip": "Îmbunătățiri marcate de {{user}}", + "timeConsuming": "", + "second": "s", + "tokenCost": "Jetoane cheltuite", + "loading": "se încarcă", + "operation": { + "like": "apreciere", + "dislike": "dezaprobare", + "addAnnotation": "Adăugați o îmbunătățire", + "editAnnotation": "Editați o îmbunătățire", + "annotationPlaceholder": "Introduceți răspunsul așteptat pe care doriți ca AI să îl furnizeze, care poate fi utilizat pentru fine-tuning-ul modelului și îmbunătățirea continuă a calității generării de text în viitor." + }, + "variables": "Variabile", + "uploadImages": "Imagini încărcate", + "modelParams": "Parametrii modelului" + }, + "filter": { + "period": { + "today": "Astăzi", + "last7days": "Ultimele 7 zile", + "last4weeks": "Ultimele 4 săptămâni", + "last3months": "Ultimele 3 luni", + "last12months": "Ultimele 12 luni", + "monthToDate": "Luna curentă", + "quarterToDate": "Trimestrul curent", + "yearToDate": "Anul curent", + "allTime": "Tot timpul", + "custom": "Personalizat", + "last30days": "Ultimele 30 de zile" + }, + "annotation": { + "all": "Toate", + "annotated": "Îmbunătățiri annotate ({{count}} elemente)", + "not_annotated": "Fără annotări" + }, + "sortBy": "Sortează după:", + "descending": "descrescător", + "ascending": "crescător" + }, + "workflowTitle": "Jurnale de flux de lucru", + "workflowSubtitle": "Jurnalul a înregistrat operațiunea Automate.", + "runDetail": { + "title": "Jurnal de conversație", + "workflowTitle": "Detalii jurnal", + "fileListDetail": "Amănunt", + "fileListLabel": "Detalii fișier", + "testWithParams": "Test cu parametri" + }, + "promptLog": "Jurnal prompt", + "agentLog": "Jurnal agent", + "viewLog": "Vizualizare jurnal", + "agentLogDetail": { + "agentMode": "Mod agent", + "toolUsed": "Instrument utilizat", + "iterations": "Iterații", + "iteration": "Iterație", + "finalProcessing": "Procesare finală" + }, + "dateFormat": "ZZ/LL/AAAA", + "triggerBy": { + "debugging": "Depanare", + "appRun": "Aplicație web", + "webhook": "Webhook", + "schedule": "Program", + "plugin": "Plugin", + "ragPipelineRun": "Flux RAG", + "ragPipelineDebugging": "Depanare RAG" + } +} diff --git a/web/i18n/ro-RO/app-log.ts b/web/i18n/ro-RO/app-log.ts deleted file mode 100644 index c8215535bb..0000000000 --- a/web/i18n/ro-RO/app-log.ts +++ /dev/null @@ -1,112 +0,0 @@ -const translation = { - title: 'Jurnale', - description: 'Jurnalele înregistrează starea de funcționare a aplicației, inclusiv intrările utilizatorilor și răspunsurile AI.', - dateTimeFormat: 'DD/MM/YYYY hh:mm:ss A', - table: { - header: { - updatedTime: 'Timp actualizare', - time: 'Timp creare', - endUser: 'Utilizator final sau cont', - input: 'Intrare', - output: 'Ieșire', - summary: 'Titlu', - messageCount: 'Număr de mesaje', - userRate: 'Evaluare utilizator', - adminRate: 'Evaluare op.', - startTime: 'ORA DE ÎNCEPERE', - status: 'STARE', - runtime: 'TIMP DE RULARE', - tokens: 'JETOANE', - user: 'UTILIZATOR FINAL SAU CONT', - version: 'VERSIUNE', - triggered_from: 'DECLANȘAT DE', - }, - pagination: { - previous: 'Anterior', - next: 'Următor', - }, - empty: { - noChat: 'Încă nu există nicio conversație', - noOutput: 'Fără ieșire', - element: { - title: 'Există cineva acolo?', - content: 'Observați și annotați interacțiunile dintre utilizatorii finali și aplicațiile AI pentru a îmbunătăți în mod continuu acuratețea AI. Puteți încerca să partajați sau să testați aplicația web, apoi reveniți la această pagină.', - }, - }, - }, - detail: { - time: 'Oră', - conversationId: 'ID conversație', - promptTemplate: 'Șablon prompt', - promptTemplateBeforeChat: 'Șablon prompt înainte de chat · Ca mesaj de sistem', - annotationTip: 'Îmbunătățiri marcate de {{user}}', - timeConsuming: '', - second: 's', - tokenCost: 'Jetoane cheltuite', - loading: 'se încarcă', - operation: { - like: 'apreciere', - dislike: 'dezaprobare', - addAnnotation: 'Adăugați o îmbunătățire', - editAnnotation: 'Editați o îmbunătățire', - annotationPlaceholder: 'Introduceți răspunsul așteptat pe care doriți ca AI să îl furnizeze, care poate fi utilizat pentru fine-tuning-ul modelului și îmbunătățirea continuă a calității generării de text în viitor.', - }, - variables: 'Variabile', - uploadImages: 'Imagini încărcate', - modelParams: 'Parametrii modelului', - }, - filter: { - period: { - today: 'Astăzi', - last7days: 'Ultimele 7 zile', - last4weeks: 'Ultimele 4 săptămâni', - last3months: 'Ultimele 3 luni', - last12months: 'Ultimele 12 luni', - monthToDate: 'Luna curentă', - quarterToDate: 'Trimestrul curent', - yearToDate: 'Anul curent', - allTime: 'Tot timpul', - custom: 'Personalizat', - last30days: 'Ultimele 30 de zile', - }, - annotation: { - all: 'Toate', - annotated: 'Îmbunătățiri annotate ({{count}} elemente)', - not_annotated: 'Fără annotări', - }, - sortBy: 'Sortează după:', - descending: 'descrescător', - ascending: 'crescător', - }, - workflowTitle: 'Jurnale de flux de lucru', - workflowSubtitle: 'Jurnalul a înregistrat operațiunea Automate.', - runDetail: { - title: 'Jurnal de conversație', - workflowTitle: 'Detalii jurnal', - fileListDetail: 'Amănunt', - fileListLabel: 'Detalii fișier', - testWithParams: 'Test cu parametri', - }, - promptLog: 'Jurnal prompt', - agentLog: 'Jurnal agent', - viewLog: 'Vizualizare jurnal', - agentLogDetail: { - agentMode: 'Mod agent', - toolUsed: 'Instrument utilizat', - iterations: 'Iterații', - iteration: 'Iterație', - finalProcessing: 'Procesare finală', - }, - dateFormat: 'ZZ/LL/AAAA', - triggerBy: { - debugging: 'Depanare', - appRun: 'Aplicație web', - webhook: 'Webhook', - schedule: 'Program', - plugin: 'Plugin', - ragPipelineRun: 'Flux RAG', - ragPipelineDebugging: 'Depanare RAG', - }, -} - -export default translation diff --git a/web/i18n/ro-RO/app-overview.json b/web/i18n/ro-RO/app-overview.json new file mode 100644 index 0000000000..b4941bb3a9 --- /dev/null +++ b/web/i18n/ro-RO/app-overview.json @@ -0,0 +1,187 @@ +{ + "welcome": { + "firstStepTip": "Pentru a începe,", + "enterKeyTip": "introduceți cheia API OpenAI mai jos", + "getKeyTip": "Obțineți cheia API de la panoul de control OpenAI", + "placeholder": "Cheia API OpenAI (de ex. sk-xxxx)" + }, + "apiKeyInfo": { + "cloud": { + "trial": { + "title": "Utilizați cota de probă a furnizorului {{providerName}}.", + "description": "Cota de probă este furnizată pentru utilizarea de testare. Înainte ca apelurile cotei de probă să se epuizeze, vă rugăm să configurați propriul furnizor de modele sau să achiziționați o cotă suplimentară." + }, + "exhausted": { + "title": "Cota de probă a fost epuizată, vă rugăm să configurați cheia API.", + "description": "Cota de probă a fost epuizată. Vă rugăm să configurați propriul furnizor de modele sau să achiziționați o cotă suplimentară." + } + }, + "selfHost": { + "title": { + "row1": "Pentru a începe,", + "row2": "configurați mai întâi furnizorul de modele." + } + }, + "callTimes": "Apeluri efectuate", + "usedToken": "Token utilizat", + "setAPIBtn": "Mergeți la configurarea furnizorului de modele", + "tryCloud": "Sau încercați versiunea cloud a Dify cu cotă gratuită" + }, + "overview": { + "title": "Prezentare generală", + "appInfo": { + "explanation": "Aplicație web AI gata de utilizare", + "accessibleAddress": "URL public", + "preview": "Previzualizare", + "regenerate": "Regenerare", + "regenerateNotice": "Doriți să regenerați URL-ul public?", + "preUseReminder": "Activați aplicația web înainte de a continua.", + "settings": { + "entry": "Setări", + "title": "Setări aplicație web", + "webName": "Nume aplicație web", + "webDesc": "Descriere aplicație web", + "webDescTip": "Acest text va fi afișat pe partea clientului, oferind îndrumare de bază privind modul de utilizare a aplicației", + "webDescPlaceholder": "Introduceți descrierea aplicației web", + "language": "Limbă", + "workflow": { + "title": "Pași flux de lucru", + "show": "Afișați", + "hide": "Ascundeți", + "subTitle": "Detalii despre fluxul de lucru", + "showDesc": "Afișarea sau ascunderea detaliilor fluxului de lucru în web app" + }, + "chatColorTheme": "Tema de culoare a chatului", + "chatColorThemeDesc": "Setați tema de culoare a chatbotului", + "chatColorThemeInverted": "Inversat", + "invalidHexMessage": "Valoare hex nevalidă", + "invalidPrivacyPolicy": "Link politică de confidențialitate invalid. Vă rugăm să folosiți un link valid care începe cu http sau https", + "more": { + "entry": "Afișați mai multe setări", + "copyright": "Drepturi de autor", + "copyRightPlaceholder": "Introduceți numele autorului sau al organizației", + "privacyPolicy": "Politica de confidențialitate", + "privacyPolicyPlaceholder": "Introduceți link-ul politicii de confidențialitate", + "privacyPolicyTip": "Ajută vizitatorii să înțeleagă datele pe care le colectează aplicația, consultați Politica de confidențialitate a Dify.", + "customDisclaimerPlaceholder": "Introduceți textul personalizat de declinare a responsabilității", + "customDisclaimerTip": "Textul personalizat de declinare a responsabilității va fi afișat pe partea clientului, oferind informații suplimentare despre aplicație", + "customDisclaimer": "Declinarea responsabilității personalizate", + "copyrightTip": "Afișați informații despre drepturile de autor în aplicația web", + "copyrightTooltip": "Vă rugăm să faceți upgrade la planul Professional sau la o versiune ulterioară" + }, + "sso": { + "label": "Autentificare SSO", + "title": "web app SSO", + "description": "Toți utilizatorii trebuie să se conecteze cu SSO înainte de a utiliza web app", + "tooltip": "Contactați administratorul pentru a activa web app SSO" + }, + "modalTip": "Setările aplicației web pe partea clientului." + }, + "embedded": { + "entry": "Încorporat", + "title": "Încorporați pe site-ul web", + "explanation": "Alegeți modul de încorporare a aplicației de chat pe site-ul web", + "iframe": "Pentru a adăuga aplicația de chat oriunde pe site-ul web, adăugați acest iframe la codul HTML.", + "scripts": "Pentru a adăuga o aplicație de chat în colțul din dreapta jos al site-ului web, adăugați acest cod la codul HTML.", + "chromePlugin": "Instalați extensia Chrome Dify Chatbot", + "copied": "Copiat", + "copy": "Copiați" + }, + "qrcode": { + "title": "Cod QR pentru partajare", + "scan": "Scanați pentru a partaja aplicația", + "download": "Descărcați codul QR" + }, + "customize": { + "way": "mod", + "entry": "Personalizare", + "title": "Personalizați aplicația web AI", + "explanation": "Puteți personaliza interfața frontală a aplicației web pentru a se potrivi cu scenariul și stilul dorit.", + "way1": { + "name": "Bifurcați codul clientului, modificați-l și implementați-l pe Vercel (recomandat)", + "step1": "Bifurcați codul clientului și modificați-l", + "step1Tip": "Faceți clic aici pentru a bifurca codul sursă în contul dvs. GitHub și a modifica codul", + "step1Operation": "Dify-WebClient", + "step2": "Implementați pe Vercel", + "step2Tip": "Faceți clic aici pentru a importa depozitul în Vercel și a implementa", + "step2Operation": "Importați depozitul", + "step3": "Configurați variabilele de mediu", + "step3Tip": "Adăugați următoarele variabile de mediu în Vercel" + }, + "way2": { + "name": "Scrieți cod pe partea clientului pentru a apela API-ul și implementați-l pe un server", + "operation": "Documentație" + } + }, + "launch": "Lansa", + "enableTooltip": { + "description": "Pentru a activa această funcție, vă rugăm să adăugați un nod de introducere a utilizatorului pe canvas. (Poate exista deja în schiță, are efect după publicare)", + "learnMore": "Aflați mai multe" + }, + "title": "Aplicație web" + }, + "apiInfo": { + "title": "API serviciu backend", + "explanation": "Ușor de integrat în aplicația dvs.", + "accessibleAddress": "Punct final API serviciu", + "doc": "Referință API" + }, + "status": { + "running": "În service", + "disable": "Dezactivat" + }, + "triggerInfo": { + "title": "Declanșatoare", + "explanation": "Gestionarea declanșatoarelor de flux de lucru", + "triggersAdded": "{{count}} Declanșatoare adăugate", + "noTriggerAdded": "Niciun declanșator adăugat", + "triggerStatusDescription": "Starea nodului declanșator apare aici. (Poate exista deja în draft, devine efectivă după publicare)", + "learnAboutTriggers": "Află despre Declanșatoare" + }, + "disableTooltip": { + "triggerMode": "Funcționalitatea {{feature}} nu este suportată în modul Nod Trigger." + } + }, + "analysis": { + "title": "Analiză", + "ms": "ms", + "tokenPS": "Token/s", + "totalMessages": { + "title": "Mesaje totale", + "explanation": "Numărul de interacțiuni zilnice cu IA." + }, + "totalConversations": { + "title": "Total Conversații", + "explanation": "Numărul de conversații zilnice cu IA; ingineria/depanarea prompturilor exclusă." + }, + "activeUsers": { + "title": "Utilizatori activi", + "explanation": "Utilizatori unici care se angajează în întrebări și răspunsuri cu AI; exclud proiectarea și depanarea promptelor." + }, + "tokenUsage": { + "title": "Utilizare token", + "explanation": "Reflectă utilizarea zilnică a tokenurilor de către modelul lingvistic pentru aplicație, utilă pentru controlul costurilor.", + "consumed": "Consumat" + }, + "avgSessionInteractions": { + "title": "Interacțiuni medii pe sesiune", + "explanation": "Număr de comunicări continue utilizator-AI; pentru aplicații bazate pe conversație." + }, + "avgUserInteractions": { + "title": "Interacțiuni medii pe utilizator", + "explanation": "Reflectă frecvența de utilizare zilnică a utilizatorilor. Această metrica reflectă cât de fideli sunt utilizatorii." + }, + "userSatisfactionRate": { + "title": "Rata de satisfacție a utilizatorilor", + "explanation": "Numărul de aprecieri la 1.000 de mesaje. Acest lucru indică proporția de răspunsuri cu care utilizatorii sunt foarte mulțumiți." + }, + "avgResponseTime": { + "title": "Timp mediu de răspuns", + "explanation": "Timp (ms) pentru procesarea/răspunsul AI; pentru aplicații bazate pe text." + }, + "tps": { + "title": "Viteza de ieșire a tokenurilor", + "explanation": "Măsoară performanța modelului de limbaj mare. Numără viteza de ieșire a tokenurilor din modelul de limbaj mare de la începutul cererii până la finalizarea ieșirii." + } + } +} diff --git a/web/i18n/ro-RO/app-overview.ts b/web/i18n/ro-RO/app-overview.ts deleted file mode 100644 index 1382fb9e5b..0000000000 --- a/web/i18n/ro-RO/app-overview.ts +++ /dev/null @@ -1,189 +0,0 @@ -const translation = { - welcome: { - firstStepTip: 'Pentru a începe,', - enterKeyTip: 'introduceți cheia API OpenAI mai jos', - getKeyTip: 'Obțineți cheia API de la panoul de control OpenAI', - placeholder: 'Cheia API OpenAI (de ex. sk-xxxx)', - }, - apiKeyInfo: { - cloud: { - trial: { - title: 'Utilizați cota de probă a furnizorului {{providerName}}.', - description: 'Cota de probă este furnizată pentru utilizarea de testare. Înainte ca apelurile cotei de probă să se epuizeze, vă rugăm să configurați propriul furnizor de modele sau să achiziționați o cotă suplimentară.', - }, - exhausted: { - title: 'Cota de probă a fost epuizată, vă rugăm să configurați cheia API.', - description: 'Cota de probă a fost epuizată. Vă rugăm să configurați propriul furnizor de modele sau să achiziționați o cotă suplimentară.', - }, - }, - selfHost: { - title: { - row1: 'Pentru a începe,', - row2: 'configurați mai întâi furnizorul de modele.', - }, - }, - callTimes: 'Apeluri efectuate', - usedToken: 'Token utilizat', - setAPIBtn: 'Mergeți la configurarea furnizorului de modele', - tryCloud: 'Sau încercați versiunea cloud a Dify cu cotă gratuită', - }, - overview: { - title: 'Prezentare generală', - appInfo: { - explanation: 'Aplicație web AI gata de utilizare', - accessibleAddress: 'URL public', - preview: 'Previzualizare', - regenerate: 'Regenerare', - regenerateNotice: 'Doriți să regenerați URL-ul public?', - preUseReminder: 'Activați aplicația web înainte de a continua.', - settings: { - entry: 'Setări', - title: 'Setări aplicație web', - webName: 'Nume aplicație web', - webDesc: 'Descriere aplicație web', - webDescTip: 'Acest text va fi afișat pe partea clientului, oferind îndrumare de bază privind modul de utilizare a aplicației', - webDescPlaceholder: 'Introduceți descrierea aplicației web', - language: 'Limbă', - workflow: { - title: 'Pași flux de lucru', - show: 'Afișați', - hide: 'Ascundeți', - subTitle: 'Detalii despre fluxul de lucru', - showDesc: 'Afișarea sau ascunderea detaliilor fluxului de lucru în web app', - }, - chatColorTheme: 'Tema de culoare a chatului', - chatColorThemeDesc: 'Setați tema de culoare a chatbotului', - chatColorThemeInverted: 'Inversat', - invalidHexMessage: 'Valoare hex nevalidă', - invalidPrivacyPolicy: 'Link politică de confidențialitate invalid. Vă rugăm să folosiți un link valid care începe cu http sau https', - more: { - entry: 'Afișați mai multe setări', - copyright: 'Drepturi de autor', - copyRightPlaceholder: 'Introduceți numele autorului sau al organizației', - privacyPolicy: 'Politica de confidențialitate', - privacyPolicyPlaceholder: 'Introduceți link-ul politicii de confidențialitate', - privacyPolicyTip: 'Ajută vizitatorii să înțeleagă datele pe care le colectează aplicația, consultați Politica de confidențialitate a Dify.', - customDisclaimerPlaceholder: 'Introduceți textul personalizat de declinare a responsabilității', - customDisclaimerTip: 'Textul personalizat de declinare a responsabilității va fi afișat pe partea clientului, oferind informații suplimentare despre aplicație', - customDisclaimer: 'Declinarea responsabilității personalizate', - copyrightTip: 'Afișați informații despre drepturile de autor în aplicația web', - copyrightTooltip: 'Vă rugăm să faceți upgrade la planul Professional sau la o versiune ulterioară', - }, - sso: { - label: 'Autentificare SSO', - title: 'web app SSO', - description: 'Toți utilizatorii trebuie să se conecteze cu SSO înainte de a utiliza web app', - tooltip: 'Contactați administratorul pentru a activa web app SSO', - }, - modalTip: 'Setările aplicației web pe partea clientului.', - }, - embedded: { - entry: 'Încorporat', - title: 'Încorporați pe site-ul web', - explanation: 'Alegeți modul de încorporare a aplicației de chat pe site-ul web', - iframe: 'Pentru a adăuga aplicația de chat oriunde pe site-ul web, adăugați acest iframe la codul HTML.', - scripts: 'Pentru a adăuga o aplicație de chat în colțul din dreapta jos al site-ului web, adăugați acest cod la codul HTML.', - chromePlugin: 'Instalați extensia Chrome Dify Chatbot', - copied: 'Copiat', - copy: 'Copiați', - }, - qrcode: { - title: 'Cod QR pentru partajare', - scan: 'Scanați pentru a partaja aplicația', - download: 'Descărcați codul QR', - }, - customize: { - way: 'mod', - entry: 'Personalizare', - title: 'Personalizați aplicația web AI', - explanation: 'Puteți personaliza interfața frontală a aplicației web pentru a se potrivi cu scenariul și stilul dorit.', - way1: { - name: 'Bifurcați codul clientului, modificați-l și implementați-l pe Vercel (recomandat)', - step1: 'Bifurcați codul clientului și modificați-l', - step1Tip: 'Faceți clic aici pentru a bifurca codul sursă în contul dvs. GitHub și a modifica codul', - step1Operation: 'Dify-WebClient', - step2: 'Implementați pe Vercel', - step2Tip: 'Faceți clic aici pentru a importa depozitul în Vercel și a implementa', - step2Operation: 'Importați depozitul', - step3: 'Configurați variabilele de mediu', - step3Tip: 'Adăugați următoarele variabile de mediu în Vercel', - }, - way2: { - name: 'Scrieți cod pe partea clientului pentru a apela API-ul și implementați-l pe un server', - operation: 'Documentație', - }, - }, - launch: 'Lansa', - enableTooltip: { - description: 'Pentru a activa această funcție, vă rugăm să adăugați un nod de introducere a utilizatorului pe canvas. (Poate exista deja în schiță, are efect după publicare)', - learnMore: 'Aflați mai multe', - }, - title: 'Aplicație web', - }, - apiInfo: { - title: 'API serviciu backend', - explanation: 'Ușor de integrat în aplicația dvs.', - accessibleAddress: 'Punct final API serviciu', - doc: 'Referință API', - }, - status: { - running: 'În service', - disable: 'Dezactivat', - }, - triggerInfo: { - title: 'Declanșatoare', - explanation: 'Gestionarea declanșatoarelor de flux de lucru', - triggersAdded: '{{count}} Declanșatoare adăugate', - noTriggerAdded: 'Niciun declanșator adăugat', - triggerStatusDescription: 'Starea nodului declanșator apare aici. (Poate exista deja în draft, devine efectivă după publicare)', - learnAboutTriggers: 'Află despre Declanșatoare', - }, - disableTooltip: { - triggerMode: 'Funcționalitatea {{feature}} nu este suportată în modul Nod Trigger.', - }, - }, - analysis: { - title: 'Analiză', - ms: 'ms', - tokenPS: 'Token/s', - totalMessages: { - title: 'Mesaje totale', - explanation: 'Numărul de interacțiuni zilnice cu IA.', - }, - totalConversations: { - title: 'Total Conversații', - explanation: 'Numărul de conversații zilnice cu IA; ingineria/depanarea prompturilor exclusă.', - }, - activeUsers: { - title: 'Utilizatori activi', - explanation: 'Utilizatori unici care se angajează în întrebări și răspunsuri cu AI; exclud proiectarea și depanarea promptelor.', - }, - tokenUsage: { - title: 'Utilizare token', - explanation: 'Reflectă utilizarea zilnică a tokenurilor de către modelul lingvistic pentru aplicație, utilă pentru controlul costurilor.', - consumed: 'Consumat', - }, - avgSessionInteractions: { - title: 'Interacțiuni medii pe sesiune', - explanation: 'Număr de comunicări continue utilizator-AI; pentru aplicații bazate pe conversație.', - }, - avgUserInteractions: { - title: 'Interacțiuni medii pe utilizator', - explanation: 'Reflectă frecvența de utilizare zilnică a utilizatorilor. Această metrica reflectă cât de fideli sunt utilizatorii.', - }, - userSatisfactionRate: { - title: 'Rata de satisfacție a utilizatorilor', - explanation: 'Numărul de aprecieri la 1.000 de mesaje. Acest lucru indică proporția de răspunsuri cu care utilizatorii sunt foarte mulțumiți.', - }, - avgResponseTime: { - title: 'Timp mediu de răspuns', - explanation: 'Timp (ms) pentru procesarea/răspunsul AI; pentru aplicații bazate pe text.', - }, - tps: { - title: 'Viteza de ieșire a tokenurilor', - explanation: 'Măsoară performanța modelului de limbaj mare. Numără viteza de ieșire a tokenurilor din modelul de limbaj mare de la începutul cererii până la finalizarea ieșirii.', - }, - }, -} - -export default translation diff --git a/web/i18n/ro-RO/app.json b/web/i18n/ro-RO/app.json new file mode 100644 index 0000000000..7c1a8ffa4e --- /dev/null +++ b/web/i18n/ro-RO/app.json @@ -0,0 +1,345 @@ +{ + "createApp": "CREEAZĂ APLICAȚIE", + "types": { + "all": "Toate", + "chatbot": "Chatbot", + "agent": "Agent", + "workflow": "Flux de lucru", + "completion": "Finalizare", + "advanced": "Fluxul de chat", + "basic": "Bază" + }, + "duplicate": "Duplicat", + "duplicateTitle": "Duplică Aplicația", + "export": "Exportă DSL", + "exportFailed": "Exportul DSL a eșuat.", + "importDSL": "Importă fișier DSL", + "createFromConfigFile": "Creează din fișier DSL", + "deleteAppConfirmTitle": "Ștergi această aplicație?", + "deleteAppConfirmContent": "Ștergerea aplicației este ireversibilă. Utilizatorii nu vor mai putea accesa aplicația ta, iar toate configurațiile promptului și jurnalele vor fi șterse permanent.", + "appDeleted": "Aplicația a fost ștearsă", + "appDeleteFailed": "Ștergerea aplicației a eșuat", + "join": "Alătură-te comunității", + "communityIntro": "Discută cu membrii echipei, colaboratorii și dezvoltatorii pe diferite canale.", + "roadmap": "Vezi planul nostru de dezvoltare", + "newApp": { + "startFromBlank": "Creează din Nou", + "startFromTemplate": "Creează din Șablon", + "workflowWarning": "În prezent în beta", + "captionName": "Pictogramă și nume aplicație", + "appNamePlaceholder": "Dă-i aplicației tale un nume", + "captionDescription": "Descriere", + "appDescriptionPlaceholder": "Introduceți descrierea aplicației", + "useTemplate": "Folosește acest șablon", + "previewDemo": "Previzualizează demo", + "chatApp": "Asistent", + "chatAppIntro": "Vreau să construiesc o aplicație bazată pe chat. Această aplicație folosește un format întrebare-răspuns, permițând mai multe runde de conversație continuă.", + "agentAssistant": "Asistent Agent Nou", + "completeApp": "Generator de text", + "completeAppIntro": "Vreau să creez o aplicație care generează text de înaltă calitate pe baza indicațiilor, cum ar fi generarea de articole, rezumate, traduceri și mai multe.", + "showTemplates": "Vreau să aleg dintr-un șablon", + "hideTemplates": "Înapoi la selecția modului", + "Create": "Creează", + "Cancel": "Anulează", + "nameNotEmpty": "Numele nu poate fi gol", + "appTemplateNotSelected": "Vă rugăm să selectați un șablon", + "appTypeRequired": "Vă rugăm să selectați un tip de aplicație", + "appCreated": "Aplicația a fost creată", + "appCreateFailed": "Crearea aplicației a eșuat", + "caution": "Prudență", + "appCreateDSLErrorPart2": "Vrei să continui?", + "Confirm": "Confirma", + "appCreateDSLErrorTitle": "Incompatibilitate versiune", + "appCreateDSLWarning": "Atenție: diferența de versiune DSL poate afecta anumite caracteristici", + "appCreateDSLErrorPart3": "Versiunea DSL a aplicației curente:", + "appCreateDSLErrorPart1": "A fost detectată o diferență semnificativă în versiunile DSL. Forțarea importului poate cauza funcționarea defectuoasă a aplicației.", + "appCreateDSLErrorPart4": "Versiune DSL suportată de sistem:", + "chatbotShortDescription": "Chatbot bazat pe LLM cu configurare simplă", + "forBeginners": "Tipuri de aplicații mai simple", + "completionShortDescription": "Asistent AI pentru sarcini de generare de text", + "agentUserDescription": "Un agent inteligent capabil de raționament iterativ și utilizare autonomă a instrumentelor pentru a atinge obiectivele sarcinii.", + "workflowUserDescription": "Construiește vizual fluxuri AI autonome cu simplitatea drag-and-drop.", + "optional": "Facultativ", + "learnMore": "Află mai multe", + "completionUserDescription": "Construiește rapid un asistent AI pentru sarcinile de generare a textului cu o configurare simplă.", + "chatbotUserDescription": "Construiți rapid un chatbot bazat pe LLM cu o configurare simplă. Puteți trece la Chatflow mai târziu.", + "advancedShortDescription": "Flux de lucru îmbunătățit pentru conversații multi-tur", + "advancedUserDescription": "Flux de lucru cu funcții suplimentare de memorie și interfață de chatbot.", + "noTemplateFoundTip": "Încercați să căutați folosind cuvinte cheie diferite.", + "foundResults": "{{count}} Rezultatele", + "foundResult": "{{count}} Rezultat", + "noIdeaTip": "Nicio idee? Consultați șabloanele noastre", + "noAppsFound": "Nu s-au găsit aplicații", + "workflowShortDescription": "Flux agentic pentru automatizări inteligente", + "agentShortDescription": "Agent inteligent cu raționament și utilizare autonomă a uneltelor", + "noTemplateFound": "Nu s-au găsit șabloane", + "forAdvanced": "PENTRU UTILIZATORII AVANSAȚI", + "chooseAppType": "Alegeți un tip de aplicație", + "dropDSLToCreateApp": "Trageți fișierul DSL aici pentru a crea aplicația", + "import": "Importa" + }, + "editApp": "Editează Info", + "editAppTitle": "Editează Info Aplicație", + "editDone": "Informațiile despre aplicație au fost actualizate", + "editFailed": "Actualizarea informațiilor despre aplicație a eșuat", + "iconPicker": { + "ok": "OK", + "cancel": "Anulează", + "emoji": "Emoji", + "image": "Imagine" + }, + "switch": "Comută la Orchestrare Flux de Lucru", + "switchTipStart": "O nouă copie a aplicației va fi creată pentru tine, iar noua copie va comuta la Orchestrare Flux de Lucru. Noua copie ", + "switchTip": "nu va permite", + "switchTipEnd": " comutarea înapoi la Orchestrare de Bază.", + "switchLabel": "Copia aplicației care urmează să fie creată", + "removeOriginal": "Șterge aplicația originală", + "switchStart": "Începe comutarea", + "typeSelector": { + "all": "TOATE Tipurile", + "chatbot": "Chatbot", + "agent": "Agent", + "workflow": "Flux de lucru", + "completion": "Finalizare", + "advanced": "Fluxul de chat" + }, + "tracing": { + "title": "Urmărirea performanței aplicației", + "description": "Configurarea unui furnizor LLMOps terț și urmărirea performanței aplicației.", + "config": "Configurare", + "collapse": "Restrânge", + "expand": "Extinde", + "tracing": "Urmărire", + "disabled": "Dezactivat", + "disabledTip": "Vă rugăm să configurați mai întâi furnizorul", + "enabled": "În serviciu", + "tracingDescription": "Captează contextul complet al execuției aplicației, inclusiv apelurile LLM, context, prompt-uri, cereri HTTP și altele, către o platformă de urmărire terță.", + "configProviderTitle": { + "configured": "Configurat", + "notConfigured": "Configurați furnizorul pentru a activa urmărirea", + "moreProvider": "Mai mulți furnizori" + }, + "arize": { + "title": "Arize", + "description": "Observabilitate LLM de nivel enterprise, evaluare online și offline, monitorizare și experimentare—alimentată de OpenTelemetry. Proiectată special pentru aplicații bazate pe LLM și agenți." + }, + "phoenix": { + "title": "Phoenix", + "description": "Platformă open-source și bazată pe OpenTelemetry pentru observabilitate, evaluare, inginerie de prompturi și experimentare pentru fluxurile de lucru și agenții LLM." + }, + "langsmith": { + "title": "LangSmith", + "description": "O platformă de dezvoltare all-in-one pentru fiecare etapă a ciclului de viață al aplicației bazate pe LLM." + }, + "langfuse": { + "title": "Langfuse", + "description": "Urmărire, evaluări, gestionarea prompt-urilor și metrici pentru depanarea și îmbunătățirea aplicației dvs. LLM." + }, + "inUse": "În utilizare", + "configProvider": { + "title": "Configurare ", + "placeholder": "Introduceți {{key}}-ul dvs.", + "project": "Proiect", + "publicKey": "Cheie publică", + "secretKey": "Cheie secretă", + "viewDocsLink": "Vizualizați documentația {{key}}", + "removeConfirmTitle": "Eliminați configurația {{key}}?", + "removeConfirmContent": "Configurația curentă este în uz, eliminarea acesteia va dezactiva funcția de Urmărire.", + "clientSecret": "Secret client OAuth", + "password": "Parolă", + "experimentId": "ID-ul experimentului", + "databricksHost": "URL-ul spațiului de lucru Databricks", + "trackingUri": "URI de urmărire", + "personalAccessToken": "Token de acces personal (vechi)", + "clientId": "ID client OAuth", + "username": "Nume de utilizator" + }, + "view": "Vedere", + "opik": { + "description": "Opik este o platformă open-source pentru evaluarea, testarea și monitorizarea aplicațiilor LLM.", + "title": "Opik" + }, + "weave": { + "title": "Împletește", + "description": "Weave este o platformă open-source pentru evaluarea, testarea și monitorizarea aplicațiilor LLM." + }, + "aliyun": { + "description": "Platforma de observabilitate SaaS oferită de Alibaba Cloud permite monitorizarea, urmărirea și evaluarea aplicațiilor Dify din cutie.", + "title": "Monitorizarea Cloud" + }, + "mlflow": { + "title": "MLflow", + "description": "Platformă LLMOps open source pentru urmărirea experimentelor, observabilitate și evaluare, pentru a construi aplicații AI/LLM cu încredere." + }, + "databricks": { + "title": "Databricks", + "description": "Databricks oferă MLflow complet gestionat cu o puternică guvernanță și securitate pentru stocarea datelor de urmărire." + }, + "tencent": { + "title": "Tencent APM", + "description": "Monitorizarea Performanței Aplicațiilor Tencent oferă trasabilitate cuprinzătoare și analiză multidimensională pentru aplicațiile LLM." + } + }, + "answerIcon": { + "descriptionInExplore": "Dacă să utilizați pictograma web app pentru a înlocui 🤖 în Explore", + "description": "Dacă se utilizează pictograma web app pentru a înlocui 🤖 în aplicația partajată", + "title": "Utilizați pictograma web app pentru a înlocui 🤖" + }, + "importFromDSL": "Import din DSL", + "importFromDSLUrl": "De la URL", + "importFromDSLUrlPlaceholder": "Lipiți linkul DSL aici", + "dslUploader": { + "button": "Trageți și plasați fișierul, sau", + "browse": "Răsfoiți" + }, + "importFromDSLFile": "Din fișierul DSL", + "mermaid": { + "handDrawn": "Desenat de mână", + "classic": "Clasic" + }, + "openInExplore": "Deschide în Explorează", + "newAppFromTemplate": { + "sidebar": { + "Writing": "Scriere", + "Programming": "Programare", + "Workflow": "Flux de lucru", + "Agent": "Agent", + "Assistant": "Asistent", + "Recommended": "Recomandat", + "HR": "DOMN" + }, + "searchAllTemplate": "Căutați toate șabloanele...", + "byCategories": "DUPĂ CATEGORII" + }, + "showMyCreatedAppsOnly": "Afișează doar aplicațiile create de mine", + "appSelector": { + "label": "APLICAȚIE", + "params": "PARAMETRII APLICAȚIEI", + "noParams": "Nu sunt necesari parametri", + "placeholder": "Selectați o aplicație..." + }, + "structOutput": { + "notConfiguredTip": "Ieșirea structurată nu a fost configurată încă", + "LLMResponse": "Răspuns LLM", + "required": "Necesar", + "moreFillTip": "Afișând maxim 10 niveluri de imbricare", + "structured": "Structurat", + "modelNotSupported": "Modelul nu este suportat", + "structuredTip": "Ieșirile structurate sunt o caracteristică care asigură că modelul va genera întotdeauna răspunsuri care respectă schema JSON furnizată.", + "configure": "Configurează", + "modelNotSupportedTip": "Modelul actual nu suportă această funcție și este downgradat automat la injecția de prompt." + }, + "accessItemsDescription": { + "specific": "Numai grupuri sau membri specifici pot accesa aplicația web.", + "organization": "Oricine din organizație poate accesa aplicația web", + "anyone": "Oricine poate accesa aplicația web", + "external": "Numai utilizatorii externi autentificați pot accesa aplicația web" + }, + "accessControlDialog": { + "accessItems": { + "anyone": "Oricine are linkul", + "specific": "Grupuri sau membri specifici", + "organization": "Numai membrii din cadrul întreprinderii", + "external": "Utilizatori extern autentificați" + }, + "operateGroupAndMember": { + "searchPlaceholder": "Caută grupuri și membri", + "allMembers": "Toți membrii", + "expand": "Expandează", + "noResult": "Niciun rezultat" + }, + "title": "Controlul Accesului la Aplicația Web", + "description": "Setați permisiunile de acces la aplicația web", + "accessLabel": "Cine are acces", + "groups_one": "{{count}} GRUP", + "groups_other": "{{count}} GRUPURI", + "members_one": "{{count}} MEMBRU", + "members_other": "{{count}} MEMBRI", + "noGroupsOrMembers": "Niciun grup sau membri selectați", + "webAppSSONotEnabledTip": "Vă rugăm să contactați administratorul de întreprindere pentru a configura metoda de autentificare a aplicației web.", + "updateSuccess": "Actualizare reușită" + }, + "publishApp": { + "title": "Cine poate accesa aplicația web", + "notSet": "Nu este setat", + "notSetDesc": "În prezent, nimeni nu poate accesa aplicația web. Vă rugăm să setați permisiunile." + }, + "accessControl": "Controlul Accesului la Aplicația Web", + "noAccessPermission": "Nici o permisiune pentru a accesa aplicația web", + "maxActiveRequestsPlaceholder": "Introduceți 0 pentru nelimitat", + "maxActiveRequests": "Maxime cereri simultane", + "maxActiveRequestsTip": "Numărul maxim de cereri active concurente pe aplicație (0 pentru nelimitat)", + "gotoAnything": { + "actions": { + "searchKnowledgeBasesDesc": "Căutați și navigați la bazele de cunoștințe", + "searchWorkflowNodes": "Căutare în noduri de flux de lucru", + "searchKnowledgeBases": "Căutare în baze de cunoștințe", + "searchApplicationsDesc": "Căutați și navigați la aplicațiile dvs.", + "searchApplications": "Căutare aplicații", + "searchPluginsDesc": "Căutați și navigați la plugin-urile dvs.", + "searchWorkflowNodesDesc": "Găsiți și treceți la nodurile din fluxul de lucru curent după nume sau tip", + "searchWorkflowNodesHelp": "Această caracteristică funcționează numai atunci când vizualizați un flux de lucru. Navigați mai întâi la un flux de lucru.", + "searchPlugins": "Căutare plugin-uri", + "languageChangeDesc": "Schimbați limba interfeței", + "runTitle": "Comenzi", + "runDesc": "Rule comenzi rapide (temă, limbă, ...)", + "themeDark": "Temă întunecată", + "themeLightDesc": "Folosește aspectul luminos", + "themeCategoryTitle": "Temă", + "languageCategoryTitle": "Limba", + "themeDarkDesc": "Folosește aspectul întunecat", + "themeLight": "Temă deschisă", + "themeSystem": "Tema sistemului", + "themeCategoryDesc": "Schimbă tema aplicației", + "languageCategoryDesc": "Schimbați limba interfeței", + "themeSystemDesc": "Urmăriți aspectul sistemului de operare", + "slashDesc": "Execută comenzi precum /theme, /lang", + "feedbackDesc": "Discuții de feedback deschis pentru comunitate", + "docDesc": "Deschide documentația de ajutor", + "communityDesc": "Deschide comunitatea Discord", + "accountDesc": "Navigați la pagina de cont", + "zenTitle": "Zen Mode", + "zenDesc": "Toggle canvas focus mode" + }, + "emptyState": { + "noAppsFound": "Nu s-au găsit aplicații", + "noPluginsFound": "Nu au fost găsite plugin-uri", + "noWorkflowNodesFound": "Nu au fost găsite noduri de flux de lucru", + "noKnowledgeBasesFound": "Nu au fost găsite baze de cunoștințe", + "tryDifferentTerm": "Încercați un termen de căutare diferit sau eliminați filtrul {{mode}}", + "trySpecificSearch": "Încercați {{shortcuts}} pentru căutări specifice" + }, + "groups": { + "knowledgeBases": "Baze de cunoștințe", + "workflowNodes": "Noduri de flux de lucru", + "plugins": "Pluginuri", + "apps": "Aplicații", + "commands": "Comenzi" + }, + "useAtForSpecific": "Utilizați @ pentru anumite tipuri", + "searchTemporarilyUnavailable": "Căutare temporar indisponibilă", + "searchPlaceholder": "Căutați sau tastați @ pentru comenzi...", + "searchTitle": "Căutați orice", + "searching": "Căutarea...", + "noResults": "Nu s-au găsit rezultate", + "searchFailed": "Căutarea a eșuat", + "servicesUnavailableMessage": "Este posibil ca unele servicii de căutare să întâmpine probleme. Încercați din nou într-o clipă.", + "someServicesUnavailable": "Unele servicii de căutare nu sunt disponibile", + "clearToSearchAll": "Ștergeți @ pentru a căuta toate", + "selectSearchType": "Alegeți ce să căutați", + "commandHint": "Tastați @ pentru a naviga după categorie", + "searchHint": "Începeți să tastați pentru a căuta totul instantaneu", + "resultCount": "{{count}} rezultat", + "resultCount_other": "{{count}} rezultate", + "inScope": "în {{scope}}s", + "noMatchingCommands": "Nu s-au găsit comenzi potrivite", + "tryDifferentSearch": "Încercați un alt termen de căutare", + "slashHint": "Tastați / pentru a vedea toate comenzile disponibile", + "selectToNavigate": "Selectați pentru a naviga", + "startTyping": "Începeți să tastați pentru a căuta", + "tips": "Apăsați ↑↓ pentru a naviga", + "pressEscToClose": "Apăsați ESC pentru a închide" + }, + "notPublishedYet": "Aplicația nu este încă publicată", + "noUserInputNode": "Lipsă nod de intrare pentru utilizator" +} diff --git a/web/i18n/ro-RO/app.ts b/web/i18n/ro-RO/app.ts deleted file mode 100644 index 0f798b03bf..0000000000 --- a/web/i18n/ro-RO/app.ts +++ /dev/null @@ -1,351 +0,0 @@ -const translation = { - createApp: 'CREEAZĂ APLICAȚIE', - types: { - all: 'Toate', - chatbot: 'Chatbot', - agent: 'Agent', - workflow: 'Flux de lucru', - completion: 'Finalizare', - advanced: 'Fluxul de chat', - basic: 'Bază', - }, - duplicate: 'Duplicat', - duplicateTitle: 'Duplică Aplicația', - export: 'Exportă DSL', - exportFailed: 'Exportul DSL a eșuat.', - importDSL: 'Importă fișier DSL', - createFromConfigFile: 'Creează din fișier DSL', - deleteAppConfirmTitle: 'Ștergi această aplicație?', - deleteAppConfirmContent: - 'Ștergerea aplicației este ireversibilă. Utilizatorii nu vor mai putea accesa aplicația ta, iar toate configurațiile promptului și jurnalele vor fi șterse permanent.', - appDeleted: 'Aplicația a fost ștearsă', - appDeleteFailed: 'Ștergerea aplicației a eșuat', - join: 'Alătură-te comunității', - communityIntro: - 'Discută cu membrii echipei, colaboratorii și dezvoltatorii pe diferite canale.', - roadmap: 'Vezi planul nostru de dezvoltare', - newApp: { - startFromBlank: 'Creează din Nou', - startFromTemplate: 'Creează din Șablon', - workflowWarning: 'În prezent în beta', - captionName: 'Pictogramă și nume aplicație', - appNamePlaceholder: 'Dă-i aplicației tale un nume', - captionDescription: 'Descriere', - appDescriptionPlaceholder: 'Introduceți descrierea aplicației', - useTemplate: 'Folosește acest șablon', - previewDemo: 'Previzualizează demo', - chatApp: 'Asistent', - chatAppIntro: - 'Vreau să construiesc o aplicație bazată pe chat. Această aplicație folosește un format întrebare-răspuns, permițând mai multe runde de conversație continuă.', - agentAssistant: 'Asistent Agent Nou', - completeApp: 'Generator de text', - completeAppIntro: - 'Vreau să creez o aplicație care generează text de înaltă calitate pe baza indicațiilor, cum ar fi generarea de articole, rezumate, traduceri și mai multe.', - showTemplates: 'Vreau să aleg dintr-un șablon', - hideTemplates: 'Înapoi la selecția modului', - Create: 'Creează', - Cancel: 'Anulează', - nameNotEmpty: 'Numele nu poate fi gol', - appTemplateNotSelected: 'Vă rugăm să selectați un șablon', - appTypeRequired: 'Vă rugăm să selectați un tip de aplicație', - appCreated: 'Aplicația a fost creată', - appCreateFailed: 'Crearea aplicației a eșuat', - caution: 'Prudență', - appCreateDSLErrorPart2: 'Vrei să continui?', - Confirm: 'Confirma', - appCreateDSLErrorTitle: 'Incompatibilitate versiune', - appCreateDSLWarning: 'Atenție: diferența de versiune DSL poate afecta anumite caracteristici', - appCreateDSLErrorPart3: 'Versiunea DSL a aplicației curente:', - appCreateDSLErrorPart1: 'A fost detectată o diferență semnificativă în versiunile DSL. Forțarea importului poate cauza funcționarea defectuoasă a aplicației.', - appCreateDSLErrorPart4: 'Versiune DSL suportată de sistem:', - chatbotShortDescription: 'Chatbot bazat pe LLM cu configurare simplă', - forBeginners: 'Tipuri de aplicații mai simple', - completionShortDescription: 'Asistent AI pentru sarcini de generare de text', - agentUserDescription: 'Un agent inteligent capabil de raționament iterativ și utilizare autonomă a instrumentelor pentru a atinge obiectivele sarcinii.', - workflowUserDescription: 'Construiește vizual fluxuri AI autonome cu simplitatea drag-and-drop.', - optional: 'Facultativ', - learnMore: 'Află mai multe', - completionUserDescription: 'Construiește rapid un asistent AI pentru sarcinile de generare a textului cu o configurare simplă.', - chatbotUserDescription: 'Construiți rapid un chatbot bazat pe LLM cu o configurare simplă. Puteți trece la Chatflow mai târziu.', - advancedShortDescription: 'Flux de lucru îmbunătățit pentru conversații multi-tur', - advancedUserDescription: 'Flux de lucru cu funcții suplimentare de memorie și interfață de chatbot.', - noTemplateFoundTip: 'Încercați să căutați folosind cuvinte cheie diferite.', - foundResults: '{{count}} Rezultatele', - foundResult: '{{count}} Rezultat', - noIdeaTip: 'Nicio idee? Consultați șabloanele noastre', - noAppsFound: 'Nu s-au găsit aplicații', - workflowShortDescription: 'Flux agentic pentru automatizări inteligente', - agentShortDescription: 'Agent inteligent cu raționament și utilizare autonomă a uneltelor', - noTemplateFound: 'Nu s-au găsit șabloane', - forAdvanced: 'PENTRU UTILIZATORII AVANSAȚI', - chooseAppType: 'Alegeți un tip de aplicație', - dropDSLToCreateApp: 'Trageți fișierul DSL aici pentru a crea aplicația', - import: 'Importa', - }, - editApp: 'Editează Info', - editAppTitle: 'Editează Info Aplicație', - editDone: 'Informațiile despre aplicație au fost actualizate', - editFailed: 'Actualizarea informațiilor despre aplicație a eșuat', - iconPicker: { - ok: 'OK', - cancel: 'Anulează', - emoji: 'Emoji', - image: 'Imagine', - }, - switch: 'Comută la Orchestrare Flux de Lucru', - switchTipStart: 'O nouă copie a aplicației va fi creată pentru tine, iar noua copie va comuta la Orchestrare Flux de Lucru. Noua copie ', - switchTip: 'nu va permite', - switchTipEnd: ' comutarea înapoi la Orchestrare de Bază.', - switchLabel: 'Copia aplicației care urmează să fie creată', - removeOriginal: 'Șterge aplicația originală', - switchStart: 'Începe comutarea', - typeSelector: { - all: 'TOATE Tipurile', - chatbot: 'Chatbot', - agent: 'Agent', - workflow: 'Flux de lucru', - completion: 'Finalizare', - advanced: 'Fluxul de chat', - }, - tracing: { - title: 'Urmărirea performanței aplicației', - description: 'Configurarea unui furnizor LLMOps terț și urmărirea performanței aplicației.', - config: 'Configurare', - collapse: 'Restrânge', - expand: 'Extinde', - tracing: 'Urmărire', - disabled: 'Dezactivat', - disabledTip: 'Vă rugăm să configurați mai întâi furnizorul', - enabled: 'În serviciu', - tracingDescription: 'Captează contextul complet al execuției aplicației, inclusiv apelurile LLM, context, prompt-uri, cereri HTTP și altele, către o platformă de urmărire terță.', - configProviderTitle: { - configured: 'Configurat', - notConfigured: 'Configurați furnizorul pentru a activa urmărirea', - moreProvider: 'Mai mulți furnizori', - }, - arize: { - title: 'Arize', - description: 'Observabilitate LLM de nivel enterprise, evaluare online și offline, monitorizare și experimentare—alimentată de OpenTelemetry. Proiectată special pentru aplicații bazate pe LLM și agenți.', - }, - phoenix: { - title: 'Phoenix', - description: 'Platformă open-source și bazată pe OpenTelemetry pentru observabilitate, evaluare, inginerie de prompturi și experimentare pentru fluxurile de lucru și agenții LLM.', - }, - langsmith: { - title: 'LangSmith', - description: 'O platformă de dezvoltare all-in-one pentru fiecare etapă a ciclului de viață al aplicației bazate pe LLM.', - }, - langfuse: { - title: 'Langfuse', - description: 'Urmărire, evaluări, gestionarea prompt-urilor și metrici pentru depanarea și îmbunătățirea aplicației dvs. LLM.', - }, - inUse: 'În utilizare', - configProvider: { - title: 'Configurare ', - placeholder: 'Introduceți {{key}}-ul dvs.', - project: 'Proiect', - publicKey: 'Cheie publică', - secretKey: 'Cheie secretă', - viewDocsLink: 'Vizualizați documentația {{key}}', - removeConfirmTitle: 'Eliminați configurația {{key}}?', - removeConfirmContent: 'Configurația curentă este în uz, eliminarea acesteia va dezactiva funcția de Urmărire.', - clientSecret: 'Secret client OAuth', - password: 'Parolă', - experimentId: 'ID-ul experimentului', - databricksHost: 'URL-ul spațiului de lucru Databricks', - trackingUri: 'URI de urmărire', - personalAccessToken: 'Token de acces personal (vechi)', - clientId: 'ID client OAuth', - username: 'Nume de utilizator', - }, - view: 'Vedere', - opik: { - description: 'Opik este o platformă open-source pentru evaluarea, testarea și monitorizarea aplicațiilor LLM.', - title: 'Opik', - }, - weave: { - title: 'Împletește', - description: 'Weave este o platformă open-source pentru evaluarea, testarea și monitorizarea aplicațiilor LLM.', - }, - aliyun: { - description: 'Platforma de observabilitate SaaS oferită de Alibaba Cloud permite monitorizarea, urmărirea și evaluarea aplicațiilor Dify din cutie.', - title: 'Monitorizarea Cloud', - }, - mlflow: { - title: 'MLflow', - description: 'Platformă LLMOps open source pentru urmărirea experimentelor, observabilitate și evaluare, pentru a construi aplicații AI/LLM cu încredere.', - }, - databricks: { - title: 'Databricks', - description: 'Databricks oferă MLflow complet gestionat cu o puternică guvernanță și securitate pentru stocarea datelor de urmărire.', - }, - tencent: { - title: 'Tencent APM', - description: 'Monitorizarea Performanței Aplicațiilor Tencent oferă trasabilitate cuprinzătoare și analiză multidimensională pentru aplicațiile LLM.', - }, - }, - answerIcon: { - descriptionInExplore: 'Dacă să utilizați pictograma web app pentru a înlocui 🤖 în Explore', - description: 'Dacă se utilizează pictograma web app pentru a înlocui 🤖 în aplicația partajată', - title: 'Utilizați pictograma web app pentru a înlocui 🤖', - }, - importFromDSL: 'Import din DSL', - importFromDSLUrl: 'De la URL', - importFromDSLUrlPlaceholder: 'Lipiți linkul DSL aici', - dslUploader: { - button: 'Trageți și plasați fișierul, sau', - browse: 'Răsfoiți', - }, - importFromDSLFile: 'Din fișierul DSL', - mermaid: { - handDrawn: 'Desenat de mână', - classic: 'Clasic', - }, - openInExplore: 'Deschide în Explorează', - newAppFromTemplate: { - sidebar: { - Writing: 'Scriere', - Programming: 'Programare', - Workflow: 'Flux de lucru', - Agent: 'Agent', - Assistant: 'Asistent', - Recommended: 'Recomandat', - HR: 'DOMN', - }, - searchAllTemplate: 'Căutați toate șabloanele...', - byCategories: 'DUPĂ CATEGORII', - }, - showMyCreatedAppsOnly: 'Afișează doar aplicațiile create de mine', - appSelector: { - label: 'APLICAȚIE', - params: 'PARAMETRII APLICAȚIEI', - noParams: 'Nu sunt necesari parametri', - placeholder: 'Selectați o aplicație...', - }, - structOutput: { - notConfiguredTip: 'Ieșirea structurată nu a fost configurată încă', - LLMResponse: 'Răspuns LLM', - required: 'Necesar', - moreFillTip: 'Afișând maxim 10 niveluri de imbricare', - structured: 'Structurat', - modelNotSupported: 'Modelul nu este suportat', - structuredTip: 'Ieșirile structurate sunt o caracteristică care asigură că modelul va genera întotdeauna răspunsuri care respectă schema JSON furnizată.', - configure: 'Configurează', - modelNotSupportedTip: 'Modelul actual nu suportă această funcție și este downgradat automat la injecția de prompt.', - }, - accessItemsDescription: { - specific: 'Numai grupuri sau membri specifici pot accesa aplicația web.', - organization: 'Oricine din organizație poate accesa aplicația web', - anyone: 'Oricine poate accesa aplicația web', - external: 'Numai utilizatorii externi autentificați pot accesa aplicația web', - }, - accessControlDialog: { - accessItems: { - anyone: 'Oricine are linkul', - specific: 'Grupuri sau membri specifici', - organization: 'Numai membrii din cadrul întreprinderii', - external: 'Utilizatori extern autentificați', - }, - operateGroupAndMember: { - searchPlaceholder: 'Caută grupuri și membri', - allMembers: 'Toți membrii', - expand: 'Expandează', - noResult: 'Niciun rezultat', - }, - title: 'Controlul Accesului la Aplicația Web', - description: 'Setați permisiunile de acces la aplicația web', - accessLabel: 'Cine are acces', - groups_one: '{{count}} GRUP', - groups_other: '{{count}} GRUPURI', - members_one: '{{count}} MEMBRU', - members_other: '{{count}} MEMBRI', - noGroupsOrMembers: 'Niciun grup sau membri selectați', - webAppSSONotEnabledTip: 'Vă rugăm să contactați administratorul de întreprindere pentru a configura metoda de autentificare a aplicației web.', - updateSuccess: 'Actualizare reușită', - }, - publishApp: { - title: 'Cine poate accesa aplicația web', - notSet: 'Nu este setat', - notSetDesc: 'În prezent, nimeni nu poate accesa aplicația web. Vă rugăm să setați permisiunile.', - }, - accessControl: 'Controlul Accesului la Aplicația Web', - noAccessPermission: 'Nici o permisiune pentru a accesa aplicația web', - maxActiveRequestsPlaceholder: 'Introduceți 0 pentru nelimitat', - maxActiveRequests: 'Maxime cereri simultane', - maxActiveRequestsTip: 'Numărul maxim de cereri active concurente pe aplicație (0 pentru nelimitat)', - gotoAnything: { - actions: { - searchKnowledgeBasesDesc: 'Căutați și navigați la bazele de cunoștințe', - searchWorkflowNodes: 'Căutare în noduri de flux de lucru', - searchKnowledgeBases: 'Căutare în baze de cunoștințe', - searchApplicationsDesc: 'Căutați și navigați la aplicațiile dvs.', - searchApplications: 'Căutare aplicații', - searchPluginsDesc: 'Căutați și navigați la plugin-urile dvs.', - searchWorkflowNodesDesc: 'Găsiți și treceți la nodurile din fluxul de lucru curent după nume sau tip', - searchWorkflowNodesHelp: 'Această caracteristică funcționează numai atunci când vizualizați un flux de lucru. Navigați mai întâi la un flux de lucru.', - searchPlugins: 'Căutare plugin-uri', - languageChangeDesc: 'Schimbați limba interfeței', - runTitle: 'Comenzi', - runDesc: 'Rule comenzi rapide (temă, limbă, ...)', - themeDark: 'Temă întunecată', - themeLightDesc: 'Folosește aspectul luminos', - themeCategoryTitle: 'Temă', - languageCategoryTitle: 'Limba', - themeDarkDesc: 'Folosește aspectul întunecat', - themeLight: 'Temă deschisă', - themeSystem: 'Tema sistemului', - themeCategoryDesc: 'Schimbă tema aplicației', - languageCategoryDesc: 'Schimbați limba interfeței', - themeSystemDesc: 'Urmăriți aspectul sistemului de operare', - slashDesc: 'Execută comenzi precum /theme, /lang', - feedbackDesc: 'Discuții de feedback deschis pentru comunitate', - docDesc: 'Deschide documentația de ajutor', - communityDesc: 'Deschide comunitatea Discord', - accountDesc: 'Navigați la pagina de cont', - zenTitle: 'Zen Mode', - zenDesc: 'Toggle canvas focus mode', - }, - emptyState: { - noAppsFound: 'Nu s-au găsit aplicații', - noPluginsFound: 'Nu au fost găsite plugin-uri', - noWorkflowNodesFound: 'Nu au fost găsite noduri de flux de lucru', - noKnowledgeBasesFound: 'Nu au fost găsite baze de cunoștințe', - tryDifferentTerm: 'Încercați un termen de căutare diferit sau eliminați filtrul {{mode}}', - trySpecificSearch: 'Încercați {{shortcuts}} pentru căutări specifice', - }, - groups: { - knowledgeBases: 'Baze de cunoștințe', - workflowNodes: 'Noduri de flux de lucru', - plugins: 'Pluginuri', - apps: 'Aplicații', - commands: 'Comenzi', - }, - useAtForSpecific: 'Utilizați @ pentru anumite tipuri', - searchTemporarilyUnavailable: 'Căutare temporar indisponibilă', - searchPlaceholder: 'Căutați sau tastați @ pentru comenzi...', - searchTitle: 'Căutați orice', - searching: 'Căutarea...', - noResults: 'Nu s-au găsit rezultate', - searchFailed: 'Căutarea a eșuat', - servicesUnavailableMessage: 'Este posibil ca unele servicii de căutare să întâmpine probleme. Încercați din nou într-o clipă.', - someServicesUnavailable: 'Unele servicii de căutare nu sunt disponibile', - clearToSearchAll: 'Ștergeți @ pentru a căuta toate', - selectSearchType: 'Alegeți ce să căutați', - commandHint: 'Tastați @ pentru a naviga după categorie', - searchHint: 'Începeți să tastați pentru a căuta totul instantaneu', - resultCount: '{{count}} rezultat', - resultCount_other: '{{count}} rezultate', - inScope: 'în {{scope}}s', - noMatchingCommands: 'Nu s-au găsit comenzi potrivite', - tryDifferentSearch: 'Încercați un alt termen de căutare', - slashHint: 'Tastați / pentru a vedea toate comenzile disponibile', - selectToNavigate: 'Selectați pentru a naviga', - startTyping: 'Începeți să tastați pentru a căuta', - tips: 'Apăsați ↑↓ pentru a naviga', - pressEscToClose: 'Apăsați ESC pentru a închide', - }, - notPublishedYet: 'Aplicația nu este încă publicată', - noUserInputNode: 'Lipsă nod de intrare pentru utilizator', -} - -export default translation diff --git a/web/i18n/ro-RO/billing.json b/web/i18n/ro-RO/billing.json new file mode 100644 index 0000000000..efcbcc2627 --- /dev/null +++ b/web/i18n/ro-RO/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "Planul curent", + "upgradeBtn": { + "plain": "Actualizează planul", + "encourage": "Actualizează acum", + "encourageShort": "Actualizează" + }, + "viewBilling": "Gestionează facturarea și abonamentele", + "buyPermissionDeniedTip": "Vă rugăm să contactați administratorul dvs. de întreprindere pentru a vă abona", + "plansCommon": { + "yearlyTip": "Obțineți 2 luni gratuite prin abonarea anuală!", + "mostPopular": "Cel mai popular", + "planRange": { + "monthly": "Lunar", + "yearly": "Anual" + }, + "month": "lună", + "year": "an", + "save": "Economisește ", + "free": "Gratuit", + "currentPlan": "Planul curent", + "contractSales": "Contactați vânzările", + "contractOwner": "Contactați managerul echipei", + "startForFree": "Începe gratuit", + "contactSales": "Contactați vânzările", + "talkToSales": "Vorbiți cu vânzările", + "modelProviders": "Furnizori de modele", + "buildApps": "Construiește aplicații", + "vectorSpace": "Spațiu vectorial", + "vectorSpaceTooltip": "Spațiul vectorial este sistemul de memorie pe termen lung necesar pentru ca LLM-urile să înțeleagă datele dvs.", + "documentProcessingPriority": "Prioritatea procesării documentelor", + "documentProcessingPriorityTip": "Pentru o prioritate mai mare a procesării documentelor, vă rugăm să vă actualizați planul.", + "documentProcessingPriorityUpgrade": "Procesați mai multe date cu o acuratețe mai mare și la viteze mai rapide.", + "priority": { + "standard": "Standard", + "priority": "Prioritate", + "top-priority": "Prioritate maximă" + }, + "logsHistory": "Istoricul jurnalelor", + "customTools": "Instrumente personalizate", + "unavailable": "Indisponibil", + "days": "zile", + "unlimited": "Nelimitat", + "support": "Asistență", + "supportItems": { + "communityForums": "Forumuri comunitare", + "emailSupport": "Asistență prin e-mail", + "priorityEmail": "Asistență prioritară prin e-mail și chat", + "logoChange": "Schimbarea logo-ului", + "SSOAuthentication": "Autentificare SSO", + "personalizedSupport": "Asistență personalizată", + "dedicatedAPISupport": "Asistență API dedicată", + "customIntegration": "Integrare și asistență personalizate", + "ragAPIRequest": "Solicitări API RAG", + "bulkUpload": "Încărcare în bloc a documentelor", + "agentMode": "Mod agent", + "workflow": "Flux de lucru", + "llmLoadingBalancing": "Echilibrarea sarcinii LLM", + "llmLoadingBalancingTooltip": "Adăugați mai multe chei API la modele, ocolind efectiv limitele de rată API." + }, + "comingSoon": "Vine în curând", + "member": "Membru", + "memberAfter": "Membru", + "messageRequest": { + "title": "Credite de mesaje", + "tooltip": "Cote de invocare a mesajelor pentru diferite planuri utilizând modele OpenAI (cu excepția gpt4). Mesajele peste limită vor utiliza cheia API OpenAI.", + "titlePerMonth": "{{count,number}} mesaje/lună" + }, + "annotatedResponse": { + "title": "Limite de cotă de anotare", + "tooltip": "Editarea și anotarea manuală a răspunsurilor oferă capacități de întrebări și răspunsuri personalizabile și de înaltă calitate pentru aplicații. (Aplicabil numai în aplicațiile de chat)" + }, + "ragAPIRequestTooltip": "Se referă la numărul de apeluri API care invocă doar capacitățile de procesare a bazei de cunoștințe a Dify.", + "receiptInfo": "Doar proprietarul echipei și administratorul echipei pot să se aboneze și să vizualizeze informațiile de facturare", + "annotationQuota": "Cota de adnotare", + "priceTip": "pe spațiu de lucru/", + "teamMember_one": "{{count,number}} Membru al echipei", + "unlimitedApiRate": "Fără limită de rată API", + "freeTrialTipPrefix": "Înscrie-te și obține un", + "self": "Auto-găzduit", + "apiRateLimit": "Limită de rată API", + "documentsTooltip": "Cota pe numărul de documente importate din Sursele de Date de Cunoștințe.", + "getStarted": "Întrebați-vă", + "cloud": "Serviciu de cloud", + "apiRateLimitUnit": "{{count,number}}", + "comparePlanAndFeatures": "Compară planurile și caracteristicile", + "documentsRequestQuota": "{{count,number}}/min Limita de rată a cererilor de cunoștințe", + "documents": "{{count,number}} Documente de Cunoaștere", + "freeTrialTipSuffix": "Nu este necesară o carte de credit", + "teamMember_other": "{{count,number}} membri ai echipei", + "teamWorkspace": "{{count,number}} Spațiu de lucru în echipă", + "annualBilling": "Facturare anuala", + "freeTrialTip": "perioadă de probă gratuită de 200 de apeluri OpenAI.", + "documentsRequestQuotaTooltip": "Specificați numărul total de acțiuni pe care un spațiu de lucru le poate efectua pe minut în cadrul bazei de cunoștințe, inclusiv crearea, ștergerea, actualizările setului de date, încărcările de documente, modificările, arhivarea și interogările bazei de cunoștințe. Acest metric este utilizat pentru a evalua performanța cererilor din baza de cunoștințe. De exemplu, dacă un utilizator Sandbox efectuează 10 teste consecutive de hituri într-un minut, spațiul său de lucru va fi restricționat temporar de la efectuarea următoarelor acțiuni pentru minutul următor: crearea setului de date, ștergerea, actualizările și încărcările sau modificările documentelor.", + "apiRateLimitTooltip": "Limita de rată API se aplică tuturor cererilor efectuate prin API-ul Dify, inclusiv generarea de texte, conversațiile de chat, execuțiile fluxului de lucru și procesarea documentelor.", + "startBuilding": "Începeți să construiți", + "taxTip": "Toate prețurile abonamentelor (lunare/anuale) nu includ taxele aplicabile (de exemplu, TVA, taxa pe vânzări).", + "taxTipSecond": "Dacă regiunea dumneavoastră nu are cerințe fiscale aplicabile, niciun impozit nu va apărea la finalizarea comenzii și nu vi se vor percepe taxe suplimentare pe întreaga durată a abonamentului.", + "triggerEvents": { + "unlimited": "Evenimente de declanșare nelimitate", + "tooltip": "Numărul de evenimente care pornesc automat fluxuri de lucru prin declanșatoare Plugin, Programare sau Webhook.", + "sandbox": "{{count,number}} Evenimente Declanșatoare", + "professional": "{{count,number}} Evenimente declanșatoare/lună" + }, + "workflowExecution": { + "faster": "Executarea mai rapidă a fluxului de lucru", + "standard": "Executarea fluxului de lucru standard", + "tooltip": "Prioritatea și viteza cozii de execuție a fluxului de lucru.", + "priority": "Executarea fluxului de lucru prioritar" + }, + "startNodes": { + "unlimited": "Declanșatori/workflow nelimitați", + "limited": "Până la {{count}} declanșatori/workflow" + }, + "title": { + "plans": "planuri", + "description": "Selectați planul care se potrivește cel mai bine nevoilor echipei dvs." + } + }, + "plans": { + "sandbox": { + "name": "Sandbox", + "description": "200 de încercări gratuite GPT", + "for": "Proba gratuită a capacităților de bază" + }, + "professional": { + "name": "Professional", + "description": "Pentru persoane fizice și echipe mici pentru a debloca mai multă putere la un preț accesibil.", + "for": "Pentru dezvoltatori independenți/echipe mici" + }, + "team": { + "name": "Echipă", + "description": "Colaborați fără limite și bucurați-vă de performanțe de top.", + "for": "Pentru echipe de dimensiuni medii" + }, + "enterprise": { + "name": "Întreprindere", + "description": "Obțineți capacități și asistență complete pentru sisteme critice la scară largă.", + "includesTitle": "Tot ce este în planul Echipă, plus:", + "features": [ + "Soluții de implementare scalabile la nivel de întreprindere", + "Autorizație de licență comercială", + "Funcții Exclusive pentru Afaceri", + "Mai multe spații de lucru și managementul întreprinderii", + "Autentificare unică", + "SLA-uri negociate de partenerii Dify", + "Securitate și Control Avansate", + "Actualizări și întreținere de către Dify Oficial", + "Asistență Tehnică Profesională" + ], + "for": "Pentru echipe de mari dimensiuni", + "price": "Personalizat", + "priceTip": "Facturare anuală doar", + "btnText": "Contactați Vânzări" + }, + "community": { + "features": [ + "Toate Funcționalitățile de Bază Lansate în Repositorul Public", + "Spațiu de lucru unic", + "Respectă Licența Open Source Dify" + ], + "description": "Pentru utilizatori individuali, echipe mici sau proiecte necomerciale", + "btnText": "Începe cu Comunitatea", + "price": "Gratuit", + "name": "Comunitate", + "for": "Pentru utilizatori individuali, echipe mici sau proiecte necomerciale", + "includesTitle": "Funcții gratuite:" + }, + "premium": { + "features": [ + "Fiabilitate autogestionată de diferiți furnizori de cloud", + "Spațiu de lucru unic", + "Personalizare logo și branding pentru aplicația web", + "Asistență prioritară prin e-mail și chat" + ], + "btnText": "Obține Premium în", + "description": "Pentru organizații și echipe de dimensiuni medii", + "includesTitle": "Totul din Comunitate, plus:", + "price": "Scalabil", + "name": "Premium", + "priceTip": "Pe baza Pieței Cloud", + "comingSoon": "Suport Microsoft Azure și Google Cloud în curând", + "for": "Pentru organizații și echipe de dimensiuni medii" + } + }, + "vectorSpace": { + "fullTip": "Spațiul vectorial este plin.", + "fullSolution": "Actualizați-vă planul pentru a obține mai mult spațiu." + }, + "apps": { + "fullTip2des": "Se recomandă curățarea aplicațiilor inactive pentru a elibera resurse, sau contactați-ne.", + "fullTip2": "Limita planului a fost atinsă", + "fullTip1des": "Ați atins limita de aplicații construite pe acest plan", + "fullTip1": "Upgrade pentru a crea mai multe aplicații", + "contactUs": "Contactați-ne" + }, + "annotatedResponse": { + "fullTipLine1": "Actualizați-vă planul pentru a", + "fullTipLine2": "anota mai multe conversații.", + "quotaTitle": "Cotă de răspuns anotat" + }, + "usagePage": { + "vectorSpaceTooltip": "Documentele cu modul de indexare de calitate înaltă vor consuma resursele de stocare a datelor de cunoștințe. Când stocarea datelor de cunoștințe atinge limita, documentele noi nu vor fi încărcate.", + "buildApps": "Construiește aplicații", + "vectorSpace": "Stocarea datelor de cunoștințe", + "teamMembers": "Membrii echipei", + "annotationQuota": "Cota de Anotare", + "documentsUploadQuota": "Cota de încărcare a documentelor", + "triggerEvents": "Evenimente declanșatoare", + "perMonth": "pe lună", + "resetsIn": "Se resetează în {{count,number}} zile" + }, + "teamMembers": "Membrii echipei", + "triggerLimitModal": { + "dismiss": "Respinge", + "upgrade": "Actualizare", + "usageTitle": "EVENIMENTE DECLANȘATOARE", + "description": "Ai atins limita de evenimente declanșatoare de flux de lucru pentru acest plan.", + "title": "Actualizează pentru a debloca mai multe evenimente declanșatoare" + }, + "viewBillingTitle": "Facturare și abonamente", + "viewBillingDescription": "Gestionează metodele de plată, facturile și modificările abonamentului", + "viewBillingAction": "Gestiona", + "upgrade": { + "uploadMultiplePages": { + "title": "Actualizează pentru a încărca mai multe documente odată", + "description": "Ați atins limita de încărcare — poate fi selectat și încărcat doar un singur document odată în planul dvs. actual." + }, + "uploadMultipleFiles": { + "title": "Fă upgrade pentru a debloca încărcarea documentelor în masă", + "description": "Încărcați mai multe documente simultan pentru a economisi timp și a îmbunătăți eficiența." + }, + "addChunks": { + "title": "Actualizează pentru a continua să adaugi segmente", + "description": "Ai atins limita de adăugare a segmentelor pentru acest plan." + } + } +} diff --git a/web/i18n/ro-RO/billing.ts b/web/i18n/ro-RO/billing.ts deleted file mode 100644 index 3c57f4dfa9..0000000000 --- a/web/i18n/ro-RO/billing.ts +++ /dev/null @@ -1,221 +0,0 @@ -const translation = { - currentPlan: 'Planul curent', - upgradeBtn: { - plain: 'Actualizează planul', - encourage: 'Actualizează acum', - encourageShort: 'Actualizează', - }, - viewBilling: 'Gestionează facturarea și abonamentele', - buyPermissionDeniedTip: 'Vă rugăm să contactați administratorul dvs. de întreprindere pentru a vă abona', - plansCommon: { - yearlyTip: 'Obțineți 2 luni gratuite prin abonarea anuală!', - mostPopular: 'Cel mai popular', - planRange: { - monthly: 'Lunar', - yearly: 'Anual', - }, - month: 'lună', - year: 'an', - save: 'Economisește ', - free: 'Gratuit', - currentPlan: 'Planul curent', - contractSales: 'Contactați vânzările', - contractOwner: 'Contactați managerul echipei', - startForFree: 'Începe gratuit', - contactSales: 'Contactați vânzările', - talkToSales: 'Vorbiți cu vânzările', - modelProviders: 'Furnizori de modele', - buildApps: 'Construiește aplicații', - vectorSpace: 'Spațiu vectorial', - vectorSpaceTooltip: 'Spațiul vectorial este sistemul de memorie pe termen lung necesar pentru ca LLM-urile să înțeleagă datele dvs.', - documentProcessingPriority: 'Prioritatea procesării documentelor', - documentProcessingPriorityTip: 'Pentru o prioritate mai mare a procesării documentelor, vă rugăm să vă actualizați planul.', - documentProcessingPriorityUpgrade: 'Procesați mai multe date cu o acuratețe mai mare și la viteze mai rapide.', - priority: { - 'standard': 'Standard', - 'priority': 'Prioritate', - 'top-priority': 'Prioritate maximă', - }, - logsHistory: 'Istoricul jurnalelor', - customTools: 'Instrumente personalizate', - unavailable: 'Indisponibil', - days: 'zile', - unlimited: 'Nelimitat', - support: 'Asistență', - supportItems: { - communityForums: 'Forumuri comunitare', - emailSupport: 'Asistență prin e-mail', - priorityEmail: 'Asistență prioritară prin e-mail și chat', - logoChange: 'Schimbarea logo-ului', - SSOAuthentication: 'Autentificare SSO', - personalizedSupport: 'Asistență personalizată', - dedicatedAPISupport: 'Asistență API dedicată', - customIntegration: 'Integrare și asistență personalizate', - ragAPIRequest: 'Solicitări API RAG', - bulkUpload: 'Încărcare în bloc a documentelor', - agentMode: 'Mod agent', - workflow: 'Flux de lucru', - llmLoadingBalancing: 'Echilibrarea sarcinii LLM', - llmLoadingBalancingTooltip: 'Adăugați mai multe chei API la modele, ocolind efectiv limitele de rată API.', - }, - comingSoon: 'Vine în curând', - member: 'Membru', - memberAfter: 'Membru', - messageRequest: { - title: 'Credite de mesaje', - tooltip: 'Cote de invocare a mesajelor pentru diferite planuri utilizând modele OpenAI (cu excepția gpt4). Mesajele peste limită vor utiliza cheia API OpenAI.', - titlePerMonth: '{{count,number}} mesaje/lună', - }, - annotatedResponse: { - title: 'Limite de cotă de anotare', - tooltip: 'Editarea și anotarea manuală a răspunsurilor oferă capacități de întrebări și răspunsuri personalizabile și de înaltă calitate pentru aplicații. (Aplicabil numai în aplicațiile de chat)', - }, - ragAPIRequestTooltip: 'Se referă la numărul de apeluri API care invocă doar capacitățile de procesare a bazei de cunoștințe a Dify.', - receiptInfo: 'Doar proprietarul echipei și administratorul echipei pot să se aboneze și să vizualizeze informațiile de facturare', - annotationQuota: 'Cota de adnotare', - priceTip: 'pe spațiu de lucru/', - teamMember_one: '{{count,number}} Membru al echipei', - unlimitedApiRate: 'Fără limită de rată API', - freeTrialTipPrefix: 'Înscrie-te și obține un', - self: 'Auto-găzduit', - apiRateLimit: 'Limită de rată API', - documentsTooltip: 'Cota pe numărul de documente importate din Sursele de Date de Cunoștințe.', - getStarted: 'Întrebați-vă', - cloud: 'Serviciu de cloud', - apiRateLimitUnit: '{{count,number}}', - comparePlanAndFeatures: 'Compară planurile și caracteristicile', - documentsRequestQuota: '{{count,number}}/min Limita de rată a cererilor de cunoștințe', - documents: '{{count,number}} Documente de Cunoaștere', - freeTrialTipSuffix: 'Nu este necesară o carte de credit', - teamMember_other: '{{count,number}} membri ai echipei', - teamWorkspace: '{{count,number}} Spațiu de lucru în echipă', - annualBilling: 'Facturare anuala', - freeTrialTip: 'perioadă de probă gratuită de 200 de apeluri OpenAI.', - documentsRequestQuotaTooltip: 'Specificați numărul total de acțiuni pe care un spațiu de lucru le poate efectua pe minut în cadrul bazei de cunoștințe, inclusiv crearea, ștergerea, actualizările setului de date, încărcările de documente, modificările, arhivarea și interogările bazei de cunoștințe. Acest metric este utilizat pentru a evalua performanța cererilor din baza de cunoștințe. De exemplu, dacă un utilizator Sandbox efectuează 10 teste consecutive de hituri într-un minut, spațiul său de lucru va fi restricționat temporar de la efectuarea următoarelor acțiuni pentru minutul următor: crearea setului de date, ștergerea, actualizările și încărcările sau modificările documentelor.', - apiRateLimitTooltip: 'Limita de rată API se aplică tuturor cererilor efectuate prin API-ul Dify, inclusiv generarea de texte, conversațiile de chat, execuțiile fluxului de lucru și procesarea documentelor.', - startBuilding: 'Începeți să construiți', - taxTip: 'Toate prețurile abonamentelor (lunare/anuale) nu includ taxele aplicabile (de exemplu, TVA, taxa pe vânzări).', - taxTipSecond: 'Dacă regiunea dumneavoastră nu are cerințe fiscale aplicabile, niciun impozit nu va apărea la finalizarea comenzii și nu vi se vor percepe taxe suplimentare pe întreaga durată a abonamentului.', - triggerEvents: { - unlimited: 'Evenimente de declanșare nelimitate', - tooltip: 'Numărul de evenimente care pornesc automat fluxuri de lucru prin declanșatoare Plugin, Programare sau Webhook.', - sandbox: '{{count,number}} Evenimente Declanșatoare', - professional: '{{count,number}} Evenimente declanșatoare/lună', - }, - workflowExecution: { - faster: 'Executarea mai rapidă a fluxului de lucru', - standard: 'Executarea fluxului de lucru standard', - tooltip: 'Prioritatea și viteza cozii de execuție a fluxului de lucru.', - priority: 'Executarea fluxului de lucru prioritar', - }, - startNodes: { - unlimited: 'Declanșatori/workflow nelimitați', - limited: 'Până la {{count}} declanșatori/workflow', - }, - title: { - plans: 'planuri', - description: 'Selectați planul care se potrivește cel mai bine nevoilor echipei dvs.', - }, - }, - plans: { - sandbox: { - name: 'Sandbox', - description: '200 de încercări gratuite GPT', - for: 'Proba gratuită a capacităților de bază', - }, - professional: { - name: 'Professional', - description: 'Pentru persoane fizice și echipe mici pentru a debloca mai multă putere la un preț accesibil.', - for: 'Pentru dezvoltatori independenți/echipe mici', - }, - team: { - name: 'Echipă', - description: 'Colaborați fără limite și bucurați-vă de performanțe de top.', - for: 'Pentru echipe de dimensiuni medii', - }, - enterprise: { - name: 'Întreprindere', - description: 'Obțineți capacități și asistență complete pentru sisteme critice la scară largă.', - includesTitle: 'Tot ce este în planul Echipă, plus:', - features: ['Soluții de implementare scalabile la nivel de întreprindere', 'Autorizație de licență comercială', 'Funcții Exclusive pentru Afaceri', 'Mai multe spații de lucru și managementul întreprinderii', 'Autentificare unică', 'SLA-uri negociate de partenerii Dify', 'Securitate și Control Avansate', 'Actualizări și întreținere de către Dify Oficial', 'Asistență Tehnică Profesională'], - for: 'Pentru echipe de mari dimensiuni', - price: 'Personalizat', - priceTip: 'Facturare anuală doar', - btnText: 'Contactați Vânzări', - }, - community: { - features: ['Toate Funcționalitățile de Bază Lansate în Repositorul Public', 'Spațiu de lucru unic', 'Respectă Licența Open Source Dify'], - description: 'Pentru utilizatori individuali, echipe mici sau proiecte necomerciale', - btnText: 'Începe cu Comunitatea', - price: 'Gratuit', - name: 'Comunitate', - for: 'Pentru utilizatori individuali, echipe mici sau proiecte necomerciale', - includesTitle: 'Funcții gratuite:', - }, - premium: { - features: ['Fiabilitate autogestionată de diferiți furnizori de cloud', 'Spațiu de lucru unic', 'Personalizare logo și branding pentru aplicația web', 'Asistență prioritară prin e-mail și chat'], - btnText: 'Obține Premium în', - description: 'Pentru organizații și echipe de dimensiuni medii', - includesTitle: 'Totul din Comunitate, plus:', - price: 'Scalabil', - name: 'Premium', - priceTip: 'Pe baza Pieței Cloud', - comingSoon: 'Suport Microsoft Azure și Google Cloud în curând', - for: 'Pentru organizații și echipe de dimensiuni medii', - }, - }, - vectorSpace: { - fullTip: 'Spațiul vectorial este plin.', - fullSolution: 'Actualizați-vă planul pentru a obține mai mult spațiu.', - }, - apps: { - fullTip2des: 'Se recomandă curățarea aplicațiilor inactive pentru a elibera resurse, sau contactați-ne.', - fullTip2: 'Limita planului a fost atinsă', - fullTip1des: 'Ați atins limita de aplicații construite pe acest plan', - fullTip1: 'Upgrade pentru a crea mai multe aplicații', - contactUs: 'Contactați-ne', - }, - annotatedResponse: { - fullTipLine1: 'Actualizați-vă planul pentru a', - fullTipLine2: 'anota mai multe conversații.', - quotaTitle: 'Cotă de răspuns anotat', - }, - usagePage: { - vectorSpaceTooltip: 'Documentele cu modul de indexare de calitate înaltă vor consuma resursele de stocare a datelor de cunoștințe. Când stocarea datelor de cunoștințe atinge limita, documentele noi nu vor fi încărcate.', - buildApps: 'Construiește aplicații', - vectorSpace: 'Stocarea datelor de cunoștințe', - teamMembers: 'Membrii echipei', - annotationQuota: 'Cota de Anotare', - documentsUploadQuota: 'Cota de încărcare a documentelor', - triggerEvents: 'Evenimente declanșatoare', - perMonth: 'pe lună', - resetsIn: 'Se resetează în {{count,number}} zile', - }, - teamMembers: 'Membrii echipei', - triggerLimitModal: { - dismiss: 'Respinge', - upgrade: 'Actualizare', - usageTitle: 'EVENIMENTE DECLANȘATOARE', - description: 'Ai atins limita de evenimente declanșatoare de flux de lucru pentru acest plan.', - title: 'Actualizează pentru a debloca mai multe evenimente declanșatoare', - }, - viewBillingTitle: 'Facturare și abonamente', - viewBillingDescription: 'Gestionează metodele de plată, facturile și modificările abonamentului', - viewBillingAction: 'Gestiona', - upgrade: { - uploadMultiplePages: { - title: 'Actualizează pentru a încărca mai multe documente odată', - description: 'Ați atins limita de încărcare — poate fi selectat și încărcat doar un singur document odată în planul dvs. actual.', - }, - uploadMultipleFiles: { - title: 'Fă upgrade pentru a debloca încărcarea documentelor în masă', - description: 'Încărcați mai multe documente simultan pentru a economisi timp și a îmbunătăți eficiența.', - }, - addChunks: { - title: 'Actualizează pentru a continua să adaugi segmente', - description: 'Ai atins limita de adăugare a segmentelor pentru acest plan.', - }, - }, -} - -export default translation diff --git a/web/i18n/ro-RO/common.json b/web/i18n/ro-RO/common.json new file mode 100644 index 0000000000..ada76e4eb1 --- /dev/null +++ b/web/i18n/ro-RO/common.json @@ -0,0 +1,785 @@ +{ + "api": { + "success": "Succes", + "actionSuccess": "Acțiune reușită", + "saved": "Salvat", + "create": "Creat", + "remove": "Eliminat", + "actionFailed": "Acțiunea a eșuat" + }, + "operation": { + "create": "Creează", + "confirm": "Confirmă", + "cancel": "Anulează", + "clear": "Șterge", + "save": "Salvează", + "saveAndEnable": "Salvează și Activează", + "edit": "Editează", + "add": "Adaugă", + "added": "Adăugat", + "refresh": "Reîncarcă", + "reset": "Resetează", + "search": "Caută", + "change": "Schimbă", + "remove": "Elimină", + "send": "Trimite", + "copy": "Copiază", + "lineBreak": "Linie nouă", + "sure": "Sunt sigur", + "download": "Descarcă", + "delete": "Șterge", + "settings": "Setări", + "setup": "Configurare", + "getForFree": "Obține gratuit", + "reload": "Reîncarcă", + "ok": "OK", + "log": "Jurnal", + "learnMore": "Află mai multe", + "params": "Parametri", + "duplicate": "Duplică", + "rename": "Redenumește", + "audioSourceUnavailable": "Sursa audio nu este disponibilă", + "copyImage": "Copiere imagine", + "zoomOut": "Micșorare", + "openInNewTab": "Deschide într-o filă nouă", + "zoomIn": "Măriți", + "close": "Închide", + "viewMore": "VEZI MAI MULT", + "regenerate": "Regenera", + "saveAndRegenerate": "Salvați și regenerați bucățile secundare", + "view": "Vedere", + "submit": "Prezinte", + "skip": "Navă", + "imageCopied": "Imagine copiată", + "deleteApp": "Ștergeți aplicația", + "copied": "Copiat", + "in": "în", + "viewDetails": "Vezi detalii", + "downloadFailed": "Descărcarea a eșuat. Vă rugăm să încercați din nou mai târziu.", + "format": "Format", + "downloadSuccess": "Descărcarea a fost finalizată.", + "more": "Mai mult", + "deSelectAll": "Deselectați tot", + "selectAll": "Selectați tot", + "config": "Configurație", + "yes": "Da", + "deleteConfirmTitle": "Ștergere?", + "no": "Nu", + "confirmAction": "Vă rugăm să confirmați acțiunea dumneavoastră.", + "noSearchResults": "Nu au fost găsite {{content}}", + "resetKeywords": "Resetează cuvintele cheie", + "selectCount": "{{count}} Selectat", + "searchCount": "Găsește {{count}} {{content}}", + "noSearchCount": "0 {{content}}", + "now": "Acum" + }, + "placeholder": { + "input": "Vă rugăm să introduceți", + "select": "Vă rugăm să selectați", + "search": "Caută..." + }, + "voice": { + "language": { + "zhHans": "Chineză", + "zhHant": "Chineză tradițională", + "enUS": "Engleză", + "deDE": "Germană", + "frFR": "Franceză", + "esES": "Spaniolă", + "itIT": "Italiană", + "thTH": "Thailandeză", + "idID": "Indoneziană", + "jaJP": "Japoneză", + "koKR": "Coreeană", + "ptBR": "Portugheză", + "ruRU": "Rusă", + "ukUA": "Ucraineană", + "viVN": "Vietnameză", + "roRO": "Română", + "hiIN": "Hindi", + "trTR": "Turcă", + "faIR": "Persană", + "slSI": "Slovenă", + "arTN": "Arabă tunisiană", + "plPL": "Poloneză" + } + }, + "unit": { + "char": "caractere" + }, + "actionMsg": { + "noModification": "Nicio modificare în acest moment.", + "modifiedSuccessfully": "Modificat cu succes", + "modifiedUnsuccessfully": "Modificare eșuată", + "copySuccessfully": "Copiat cu succes", + "paySucceeded": "Plata a reușit", + "payCancelled": "Plata a fost anulată", + "generatedSuccessfully": "Generat cu succes", + "generatedUnsuccessfully": "Generare eșuată" + }, + "model": { + "params": { + "temperature": "Temperatură", + "temperatureTip": "Controlează aleatorietatea: Reducerea duce la mai puține completări aleatorii. Pe măsură ce temperatura se apropie de zero, modelul va deveni deterministic și repetitiv.", + "top_p": "Top P", + "top_pTip": "Controlează diversitatea prin eșantionarea nucleului: 0,5 înseamnă că jumătate din toate opțiunile ponderate după probabilitate sunt luate în considerare.", + "presence_penalty": "Penalizare prezență", + "presence_penaltyTip": "Cât de mult să se penalizeze noile jetoane în funcție de dacă apar sau nu în textul de până acum.\nCrește probabilitatea modelului de a vorbi despre subiecte noi.", + "frequency_penalty": "Penalizare frecvență", + "frequency_penaltyTip": "Cât de mult să se penalizeze noile jetoane în funcție de frecvența lor existentă în textul de până acum.\nScade probabilitatea modelului de a repeta aceeași linie cuvânt cu cuvânt.", + "max_tokens": "Jetoane maxime", + "max_tokensTip": "Folosit pentru a limita lungimea maximă a răspunsului, în jetoane.\nValori mai mari pot limita spațiul rămas pentru cuvintele promptului, jurnalele de chat și cunoștințe.\nSe recomandă să fie setat la mai puțin de două treimi\ngpt-4-1106-preview, gpt-4-vision-preview jetoane maxime (intrare 128k ieșire 4k)", + "maxTokenSettingTip": "Setarea jetoanelor maxime este ridicată, limitând potențial spațiul pentru prompturi, interogări și date. Luați în considerare setarea acesteia la sub 2/3.", + "setToCurrentModelMaxTokenTip": "Jetoanele maxime sunt actualizate la 80% din jetoanele maxime ale modelului curent {{maxToken}}.", + "stop_sequences": "Secvențe de oprire", + "stop_sequencesTip": "Până la patru secvențe în care API-ul va înceta să genereze mai multe jetoane. Textul returnat nu va conține secvența de oprire.", + "stop_sequencesPlaceholder": "Introduceți secvența și apăsați Tab" + }, + "tone": { + "Creative": "Creativ", + "Balanced": "Echilibrat", + "Precise": "Precis", + "Custom": "Personalizat" + }, + "addMoreModel": "Mergeți la setări pentru a adăuga mai multe modele", + "capabilities": "Capacități multimodale", + "settingsLink": "Setările furnizorului de modele" + }, + "menus": { + "status": "beta", + "explore": "Explorează", + "apps": "Studio", + "plugins": "Plugin-uri", + "pluginsTips": "Integrați plugin-uri terțe părți sau creați AI-Plugin-uri compatibile cu ChatGPT.", + "datasets": "Cunoștințe", + "datasetsTips": "CURÂND DISPONIBIL: Importați-vă propriile date text sau scrieți date în timp real prin Webhook pentru îmbunătățirea contextului LLM.", + "newApp": "Aplicație nouă", + "newDataset": "Creează Cunoștințe", + "tools": "Instrumente", + "exploreMarketplace": "Explorați Marketplace", + "appDetail": "Detalii aplicație", + "account": "Cont" + }, + "userProfile": { + "settings": "Setări", + "emailSupport": "Suport prin email", + "workspace": "Spațiu de lucru", + "createWorkspace": "Creează Spațiu de lucru", + "helpCenter": "Ajutor", + "roadmap": "Plan de acțiune", + "community": "Comunitate", + "about": "Despre", + "logout": "Deconectare", + "github": "GitHub", + "support": "Suport", + "compliance": "Conformitate", + "contactUs": "Contactați-ne", + "forum": "Forum" + }, + "settings": { + "accountGroup": "CONT", + "workplaceGroup": "SPAȚIU DE LUCRU", + "account": "Contul meu", + "members": "Membri", + "billing": "Facturare", + "integrations": "Integrări", + "language": "Limbă", + "provider": "Furnizor de modele", + "dataSource": "Sursă de date", + "plugin": "Plugin-uri", + "apiBasedExtension": "Extensie API", + "generalGroup": "GENERAL" + }, + "account": { + "avatar": "Avatar", + "name": "Nume", + "email": "Email", + "password": "Parolă", + "passwordTip": "Puteți seta o parolă permanentă dacă nu doriți să utilizați coduri de conectare temporare", + "setPassword": "Setează o parolă", + "resetPassword": "Resetează parola", + "currentPassword": "Parola curentă", + "newPassword": "Parolă nouă", + "confirmPassword": "Confirmă parola", + "notEqual": "Cele două parole sunt diferite.", + "langGeniusAccount": "Cont Dify", + "langGeniusAccountTip": "Contul Dify și datele de utilizator asociate.", + "editName": "Editează Nume", + "showAppLength": "Afișează {{length}} aplicații", + "delete": "Șterge contul", + "deleteTip": "Ștergerea contului vă va șterge definitiv toate datele și nu pot fi recuperate.", + "account": "Cont", + "studio": "Dify Studio", + "myAccount": "Contul meu", + "deletePrivacyLinkTip": "Pentru mai multe informații despre modul în care gestionăm datele dvs., vă rugăm să consultați", + "deletePrivacyLink": "Politica de confidențialitate.", + "deleteSuccessTip": "Contul tău are nevoie de timp pentru a termina ștergerea. Vă vom trimite un e-mail când totul este gata.", + "deleteLabel": "Pentru a confirma, vă rugăm să introduceți adresa de e-mail mai jos", + "deletePlaceholder": "Vă rugăm să introduceți adresa de e-mail", + "sendVerificationButton": "Trimiteți codul de verificare", + "verificationPlaceholder": "Lipiți codul din 6 cifre", + "permanentlyDeleteButton": "Ștergeți definitiv contul", + "feedbackLabel": "Spuneți-ne de ce v-ați șters contul?", + "feedbackPlaceholder": "Facultativ", + "feedbackTitle": "Feedback", + "verificationLabel": "Cod de verificare", + "workspaceName": "Numele spațiului de lucru", + "editWorkspaceInfo": "Editează informațiile spațiului de lucru", + "workspaceIcon": "Iconița de spațiu de lucru", + "changeEmail": { + "continue": "Continuați", + "newEmail": "Creează o nouă adresă de email", + "verifyEmail": "Verifică-ți adresa de email curentă", + "verifyNew": "Verifică-ți noul email", + "codePlaceholder": "Introduceți codul de 6 cifre", + "resendTip": "Nu ai primit un cod?", + "codeLabel": "Cod de verificare", + "resendCount": "Reexpediază în {{count}}s", + "resend": "Retrimite", + "title": "Schimbă emailul", + "changeTo": "Schimbă la {{email}}", + "existingEmail": "Un utilizator cu acest email există deja.", + "emailPlaceholder": "Introduceți un email nou", + "content3": "Introduceți un nou email și vă vom trimite un cod de verificare.", + "sendVerifyCode": "Trimite codul de verificare", + "content1": "Dacă continui, vom trimite un cod de verificare la {{email}} pentru reautentificare.", + "authTip": "Odată ce adresa ta de email este schimbată, conturile Google sau GitHub legate de vechea ta adresă de email nu vor mai putea să se conecteze la acest cont.", + "content4": "Tocmai ți-am trimis un cod de verificare temporar la {{email}}.", + "content2": "Adresa ta de email curentă este {{email}}. Codul de verificare a fost trimis la această adresă de email.", + "emailLabel": "Email nou", + "unAvailableEmail": "Acest email este temporar indisponibil." + } + }, + "members": { + "team": "Echipă", + "invite": "Adaugă", + "name": "NUME", + "lastActive": "ULTIMA ACTIVITATE", + "role": "ROLURI", + "pending": "În așteptare...", + "owner": "Proprietar", + "admin": "Administrator", + "adminTip": "Poate construi aplicații și gestiona setările echipei", + "normal": "Normal", + "normalTip": "Poate doar utiliza aplicații, nu poate construi aplicații", + "editor": "Editor", + "editorTip": "Poate construi aplicații, dar nu poate gestiona setările echipei", + "inviteTeamMember": "Adaugă membru în echipă", + "inviteTeamMemberTip": "Pot accesa direct datele echipei dvs. după autentificare.", + "emailNotSetup": "Serverul de e-mail nu este configurat, astfel încât e-mailurile de invitație nu pot fi trimise. Vă rugăm să notificați utilizatorii despre linkul de invitație care va fi emis după invitație.", + "email": "Email", + "emailInvalid": "Format de email invalid", + "emailPlaceholder": "Vă rugăm să introduceți emailuri", + "sendInvite": "Trimite invitație", + "invitedAsRole": "Invitat ca utilizator {{role}}", + "invitationSent": "Invitație trimisă", + "invitationSentTip": "Invitația a fost trimisă și pot să se autentifice în Dify pentru a accesa datele echipei dvs.", + "invitationLink": "Link de invitație", + "failedInvitationEmails": "Următorii utilizatori nu au fost invitați cu succes", + "ok": "OK", + "removeFromTeam": "Elimină din echipă", + "removeFromTeamTip": "Va elimina accesul la echipă", + "setAdmin": "Setează ca administrator", + "setMember": "Setează ca membru obișnuit", + "setEditor": "Setează ca editor", + "disInvite": "Anulează invitația", + "deleteMember": "Șterge membru", + "you": "(Dvs.)", + "datasetOperatorTip": "Numai poate gestiona baza de cunoștințe", + "builder": "Constructor", + "datasetOperator": "Administrator de cunoștințe", + "setBuilder": "Setare ca constructor", + "builderTip": "Poate construi și edita propriile aplicații", + "transferModal": { + "resendTip": "Nu ai primit un cod?", + "title": "Transferați proprietatea spațiului de lucru", + "warningTip": "Vei deveni membru administrator, iar noul proprietar va avea control total.", + "resendCount": "Reexpediază în {{count}}s", + "transferLabel": "Transferați proprietatea spațiului de lucru către", + "resend": "Retrimite", + "transfer": "Transferați proprietatea spațiului de lucru", + "transferPlaceholder": "Selectați un membru al spațiului de lucru…", + "continue": "Continuați", + "codeLabel": "Cod de verificare", + "verifyContent2": "Îți vom trimite un cod temporar de verificare pe acest email pentru reautentificare.", + "sendTip": "Dacă continui, vom trimite un cod de verificare la {{email}} pentru reautentificare.", + "verifyContent": "Adresa ta de email curentă este {{email}}.", + "warning": "Ești pe cale să transferi proprietatea „{{workspace}}”. Acest lucru va avea efect imediat și nu poate fi desfăcut.", + "sendVerifyCode": "Trimite codul de verificare", + "verifyEmail": "Verifică-ți adresa de email curentă", + "codePlaceholder": "Introduceți codul de 6 cifre" + }, + "transferOwnership": "Transferați proprietatea" + }, + "integrations": { + "connected": "Conectat", + "google": "Google", + "googleAccount": "Autentificare cu cont Google", + "github": "GitHub", + "githubAccount": "Autentificare cu cont GitHub", + "connect": "Conectează" + }, + "language": { + "displayLanguage": "Limbă de afișare", + "timezone": "Fus orar" + }, + "provider": { + "apiKey": "Cheie API", + "enterYourKey": "Introduceți cheia API aici", + "invalidKey": "Cheie API OpenAI nevalidă", + "validatedError": "Validare eșuată: ", + "validating": "Se validează cheia...", + "saveFailed": "Salvarea cheii API a eșuat", + "apiKeyExceedBill": "Această CHEIE API nu are cotă disponibilă, vă rugăm să citiți", + "addKey": "Adaugă cheie", + "comingSoon": "Curând disponibil", + "editKey": "Editează", + "invalidApiKey": "Cheie API nevalidă", + "azure": { + "apiBase": "Bază API", + "apiBasePlaceholder": "URL-ul de bază al API-ului pentru punctul final Azure OpenAI.", + "apiKey": "Cheie API", + "apiKeyPlaceholder": "Introduceți cheia API aici", + "helpTip": "Aflați despre serviciul Azure OpenAI" + }, + "openaiHosted": { + "openaiHosted": "OpenAI găzduit", + "onTrial": "ÎN PROBĂ", + "exhausted": "COTĂ EPUIZATĂ", + "desc": "Serviciul de găzduire OpenAI furnizat de Dify vă permite să utilizați modele precum GPT-3.5. Înainte ca cota de probă să fie epuizată, trebuie să configurați alți furnizori de modele.", + "callTimes": "Apeluri", + "usedUp": "Cota de probă a fost epuizată. Adăugați propriul furnizor de modele.", + "useYourModel": "În prezent se utilizează propriul furnizor de modele.", + "close": "Închide" + }, + "anthropicHosted": { + "anthropicHosted": "Anthropic Claude", + "onTrial": "ÎN PROBĂ", + "exhausted": "COTĂ EPUIZATĂ", + "desc": "Model puternic, care excelează într-o gamă largă de sarcini, de la dialog sofisticat și generare de conținut creativ, până la instrucțiuni detaliate.", + "callTimes": "Apeluri", + "usedUp": "Cota de probă a fost epuizată. Adăugați propriul furnizor de modele.", + "useYourModel": "În prezent se utilizează propriul furnizor de modele.", + "close": "Închide", + "trialQuotaTip": "Cota de încercare Anthropic va expira pe 11.03.2025 și nu va mai fi disponibilă ulterior. Vă rugăm să o utilizați la timp." + }, + "anthropic": { + "using": "Capacitatea de încorporare utilizează", + "enableTip": "Pentru a activa modelul Anthropic, trebuie să vă legați mai întâi la OpenAI sau la serviciul Azure OpenAI.", + "notEnabled": "Nu este activat", + "keyFrom": "Obțineți cheia API de la Anthropic" + }, + "encrypted": { + "front": "Cheia dvs. API va fi criptată și stocată folosind", + "back": " tehnologie." + } + }, + "modelProvider": { + "notConfigured": "Modelul de sistem nu a fost încă configurat complet, iar unele funcții pot fi indisponibile.", + "systemModelSettings": "Setări model de sistem", + "systemModelSettingsLink": "De ce este necesar să se configureze un model de sistem?", + "selectModel": "Selectați modelul dvs.", + "setupModelFirst": "Vă rugăm să configurați mai întâi modelul", + "systemReasoningModel": { + "key": "Model de raționament de sistem", + "tip": "Setați modelul de inferență implicit care va fi utilizat pentru crearea aplicațiilor, precum și caracteristici precum generarea de nume pentru dialog și sugestia următoarei întrebări vor utiliza, de asemenea, modelul de inferență implicit." + }, + "embeddingModel": { + "key": "Model de încorporare", + "tip": "Setați modelul implicit pentru procesarea încorporării documentelor a Cunoștințelor, atât pentru recuperare, cât și pentru importul Cunoștințelor, folosind acest model de încorporare pentru procesarea vectorizării. Comutarea va cauza inconsecvența dimensiunii vectorului între Cunoștințele importate și întrebarea, ceea ce va duce la eșecul recuperării. Pentru a evita eșecul recuperării, vă rugăm să nu comutați acest model la întâmplare.", + "required": "Modelul de încorporare este obligatoriu" + }, + "speechToTextModel": { + "key": "Model de conversie text-la-vorbire", + "tip": "Setați modelul implicit pentru intrarea de conversie text-la-vorbire în conversație." + }, + "ttsModel": { + "key": "Model de conversie vorbire-la-text", + "tip": "Setați modelul implicit pentru intrarea de conversie vorbire-la-text în conversație." + }, + "rerankModel": { + "key": "Model de reordonare", + "tip": "Modelul de reordonare va reordona lista de documente candidate pe baza potrivirii semantice cu interogarea utilizatorului, îmbunătățind rezultatele clasificării semantice" + }, + "quota": "Cotă", + "searchModel": "Model de căutare", + "noModelFound": "Nu a fost găsit niciun model pentru {{model}}", + "models": "Modele", + "showMoreModelProvider": "Arată mai multe furnizori de modele", + "selector": { + "tip": "Acest model a fost eliminat. Vă rugăm să adăugați un model sau să selectați un alt model.", + "emptyTip": "Nu există modele disponibile", + "emptySetting": "Vă rugăm să mergeți la setări pentru a configura", + "rerankTip": "Vă rugăm să configurați modelul de reordonare" + }, + "card": { + "quota": "COTĂ", + "onTrial": "În probă", + "paid": "Plătit", + "quotaExhausted": "Cotă epuizată", + "callTimes": "Apeluri", + "tokens": "Jetoane", + "buyQuota": "Cumpără cotă", + "priorityUse": "Utilizare prioritară", + "removeKey": "Elimină cheia API", + "tip": "Prioritate va fi acordată cotei plătite. Cota de probă va fi utilizată după epuizarea cotei plătite." + }, + "item": { + "deleteDesc": "{{modelName}} sunt utilizate ca modele de raționare a sistemului. Unele funcții nu vor fi disponibile după eliminare. Vă rugăm să confirmați.", + "freeQuota": "COTĂ GRATUITĂ" + }, + "addApiKey": "Adăugați cheia dvs. API", + "invalidApiKey": "Cheie API nevalidă", + "encrypted": { + "front": "Cheia dvs. API va fi criptată și stocată folosind", + "back": " tehnologie." + }, + "freeQuota": { + "howToEarn": "Cum să câștigați" + }, + "addMoreModelProvider": "ADĂUGAȚI MAI MULȚI FURNIZORI DE MODELE", + "addModel": "Adăugați model", + "modelsNum": "{{num}} Modele", + "showModels": "Arată modele", + "showModelsNum": "Arată {{num}} modele", + "collapse": "Restrânge", + "config": "Configurare", + "modelAndParameters": "Model și parametri", + "model": "Model", + "featureSupported": "{{feature}} acceptat", + "callTimes": "Apeluri", + "credits": "Credite mesaje", + "buyQuota": "Cumpără cotă", + "getFreeTokens": "Obțineți jetoane gratuite", + "priorityUsing": "Prioritizează utilizarea", + "deprecated": "Învechit", + "confirmDelete": "confirmați ștergerea?", + "quotaTip": "Jetoane gratuite disponibile rămase", + "loadPresets": "Încarcă presetări", + "parameters": "PARAMETRI", + "loadBalancingHeadline": "Echilibrare", + "loadBalancingInfo": "În mod implicit, echilibrarea încărcării utilizează strategia Round-robin. Dacă se declanșează limitarea ratei, se va aplica o perioadă de reactivare de 1 minut.", + "loadBalancing": "Echilibrare", + "apiKeyRateLimit": "Limita de viteză a fost atinsă, disponibilă după {{secunde}}s", + "providerManaged": "Gestionat de furnizor", + "providerManagedDescription": "Utilizați setul unic de acreditări furnizat de furnizorul de modele.", + "defaultConfig": "Configurație implicită", + "addConfig": "Adăugați configurație", + "apiKey": "CHEIE API", + "modelHasBeenDeprecated": "Acest model a fost depreciat", + "loadBalancingDescription": "Reduceți presiunea cu mai multe seturi de acreditări.", + "apiKeyStatusNormal": "Starea APIKey este normală", + "loadBalancingLeastKeyWarning": "Pentru a activa echilibrarea încărcării trebuie activate cel puțin 2 chei.", + "editConfig": "Editați configurația", + "configLoadBalancing": "Echilibrarea încărcării de configurare", + "upgradeForLoadBalancing": "Actualizați-vă planul pentru a activa Load Balancing.", + "configureTip": "Configurați api-key sau adăugați modelul de utilizat", + "installProvider": "Instalarea furnizorilor de modele", + "emptyProviderTitle": "Furnizorul de modele nu este configurat", + "discoverMore": "Descoperă mai multe în", + "emptyProviderTip": "Vă rugăm să instalați mai întâi un furnizor de modele.", + "toBeConfigured": "De configurat", + "auth": { + "apiKeyModal": { + "addModel": "Adăugați model", + "title": "Configurarea autorizării cheii API", + "desc": "După configurarea acreditivelor, toți membrii din spațiul de lucru pot folosi acest model atunci când orchestran aplicații." + }, + "unAuthorized": "Neautorizat", + "addApiKey": "Adăugați cheia API", + "apiKeys": "Chei API", + "addCredential": "Adăugați acreditive", + "configModel": "Configurați modelul", + "addNewModel": "Adăugați un nou model", + "authRemoved": "Autentificare eliminată", + "specifyModelCredential": "Specificați acreditivele modelului", + "providerManaged": "Gestionat de furnizor", + "authorizationError": "Eroare de autorizare", + "configLoadBalancing": "Configurare echilibrare a încărcării", + "addModelCredential": "Adăugați acreditivele modelului", + "providerManagedTip": "Configurarea curentă este găzduită de furnizor.", + "modelCredentials": "Credențiale model", + "specifyModelCredentialTip": "Utilizați un acreditiv de model configurat.", + "addNewModelCredential": "Adăugați acreditive noi pentru model", + "modelCredential": "Model de acreditare", + "removeModel": "Eliminați modelul", + "addModel": "Adăugați model", + "selectModelCredential": "Selectați o acreditare model", + "editModelCredential": "Editarea acreditării modelului", + "customModelCredentials": "Acreditări model personalizate", + "manageCredentials": "Gestionați acreditările", + "customModelCredentialsDeleteTip": "Acreditarea este în uz și nu poate fi ștearsă" + }, + "parametersInvalidRemoved": "Unele parametrii sunt invalizi și au fost eliminați.", + "installDataSourceProvider": "Instalați furnizorii de surse de date" + }, + "dataSource": { + "add": "Adăugați o sursă de date", + "connect": "Conectați", + "notion": { + "title": "Notion", + "description": "Utilizarea Notion ca sursă de date pentru Cunoștințe.", + "connectedWorkspace": "Spațiu de lucru conectat", + "addWorkspace": "Adăugați spațiu de lucru", + "connected": "Conectat", + "disconnected": "Deconectat", + "changeAuthorizedPages": "Schimbați paginile autorizate", + "pagesAuthorized": "Pagini autorizate", + "sync": "Sincronizare", + "remove": "Elimină", + "selector": { + "pageSelected": "Pagini selectate", + "searchPages": "Căutați pagini...", + "noSearchResult": "Niciun rezultat la căutare", + "addPages": "Adăugați pagini", + "preview": "PREVIZUALIZARE" + }, + "integratedAlert": "Notion este integrat prin credențiale interne, nu este nevoie să re-autorizăm." + }, + "website": { + "inactive": "Inactiv", + "description": "Importați conținut de pe site-uri web folosind crawlerul web.", + "active": "Activ", + "with": "Cu", + "title": "Site-ul web", + "configuredCrawlers": "Crawlere configurate" + }, + "configure": "Configura" + }, + "plugin": { + "serpapi": { + "apiKey": "Cheie API", + "apiKeyPlaceholder": "Introduceți cheia dvs. API", + "keyFrom": "Obțineți cheia dvs. SerpAPI din pagina contului SerpAPI" + } + }, + "apiBasedExtension": { + "title": "Extensiile bazate pe API oferă o gestionare centralizată a API-urilor, simplificând configurația pentru o utilizare ușoară în aplicațiile Dify.", + "link": "Aflați cum să dezvoltați propria extensie bazată pe API.", + "add": "Adăugați extensie API", + "selector": { + "title": "Extensie API", + "placeholder": "Vă rugăm să selectați extensia API", + "manage": "Gestionați extensia API" + }, + "modal": { + "title": "Adăugați extensie API", + "editTitle": "Editați extensia API", + "name": { + "title": "Nume", + "placeholder": "Vă rugăm să introduceți numele" + }, + "apiEndpoint": { + "title": "Endpoint API", + "placeholder": "Vă rugăm să introduceți endpoint-ul API" + }, + "apiKey": { + "title": "Cheie API", + "placeholder": "Vă rugăm să introduceți cheia API", + "lengthError": "Lungimea cheii API nu poate fi mai mică de 5 caractere" + } + }, + "type": "Tip" + }, + "about": { + "changeLog": "Jurnal modificări", + "updateNow": "Actualizați acum", + "nowAvailable": "Dify {{version}} este acum disponibil.", + "latestAvailable": "Dify {{version}} este ultima versiune disponibilă." + }, + "appMenus": { + "overview": "Monitorizare", + "promptEng": "Orchestrare", + "apiAccess": "Acces API", + "logAndAnn": "Jurnale și Ann.", + "logs": "Jurnale" + }, + "environment": { + "testing": "TESTARE", + "development": "DEZVOLTARE" + }, + "appModes": { + "completionApp": "Generator de text", + "chatApp": "Aplicație de chat" + }, + "datasetMenus": { + "documents": "Documente", + "hitTesting": "Testare recuperare", + "settings": "Setări", + "emptyTip": "Cunoștințele nu au fost asociate, vă rugăm să mergeți la aplicație sau la plug-in pentru a finaliza asocierea.", + "viewDoc": "Vizualizați documentația", + "relatedApp": "aplicații asociate", + "noRelatedApp": "Fără aplicații conectate", + "pipeline": "Pipeline" + }, + "voiceInput": { + "speaking": "Vorbiți acum...", + "converting": "Se convertește la text...", + "notAllow": "microfonul nu este autorizat" + }, + "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": "Redenumește conversația", + "conversationName": "Nume conversație", + "conversationNamePlaceholder": "Vă rugăm să introduceți numele conversației", + "conversationNameCanNotEmpty": "Numele conversației este obligatoriu", + "citation": { + "title": "CITĂRI", + "linkToDataset": "Legătură la Cunoștințe", + "characters": "Caractere:", + "hitCount": "Număr de recuperări:", + "vectorHash": "Hash vector:", + "hitScore": "Scor de recuperare:" + }, + "inputPlaceholder": "Vorbește cu {{botName}}", + "thinking": "Gândire...", + "thought": "Gând", + "resend": "Reexpediați" + }, + "promptEditor": { + "placeholder": "Scrieți aici prompt-ul, introduceți '{}' pentru a insera o variabilă, introduceți '/' pentru a insera un bloc de conținut prompt", + "context": { + "item": { + "title": "Context", + "desc": "Inserați șablon de context" + }, + "modal": { + "title": "{{num}} Cunoștințe în context", + "add": "Adăugați context ", + "footer": "Puteți gestiona contextele în secțiunea Context de mai jos." + } + }, + "history": { + "item": { + "title": "Istoric conversație", + "desc": "Inserați șablon de mesaj istoric" + }, + "modal": { + "title": "EXEMPLU", + "user": "Salut", + "assistant": "Salut! Cum vă pot ajuta astăzi?", + "edit": "Editați numele rolurilor de conversație" + } + }, + "variable": { + "item": { + "title": "Variabile și instrumente externe", + "desc": "Inserați variabile și instrumente externe" + }, + "outputToolDisabledItem": { + "title": "Variabile", + "desc": "Inserați variabile" + }, + "modal": { + "add": "Nouă variabilă", + "addTool": "Nou instrument" + } + }, + "query": { + "item": { + "title": "Interogare", + "desc": "Inserați șablon de interogare utilizator" + } + }, + "existed": "Există deja în prompt" + }, + "imageUploader": { + "uploadFromComputer": "Încărcați de pe computer", + "uploadFromComputerReadError": "Citirea imaginii a eșuat, vă rugăm încercați din nou.", + "uploadFromComputerUploadError": "Încărcarea imaginii a eșuat, vă rugăm încărcați din nou.", + "uploadFromComputerLimit": "Imaginile încărcate nu pot depăși {{size}} MB", + "pasteImageLink": "Inserați link-ul imaginii", + "pasteImageLinkInputPlaceholder": "Inserați link-ul imaginii aici", + "pasteImageLinkInvalid": "Link-ul imaginii este nevalid", + "imageUpload": "Încărcare imagine" + }, + "tag": { + "placeholder": "Toate etichetele", + "addNew": "Adăugați o etichetă nouă", + "noTag": "Nicio etichetă", + "noTagYet": "Încă nu există etichete", + "addTag": "Adăugați etichete", + "editTag": "Editați etichete", + "manageTags": "Gestionați etichete", + "selectorPlaceholder": "Tastați pentru a căuta sau crea", + "create": "Creați", + "delete": "Ștergeți eticheta", + "deleteTip": "Eticheta este utilizată, ștergeți-o?", + "created": "Etichetă creată cu succes", + "failed": "Crearea etichetei a eșuat" + }, + "errorMsg": { + "fieldRequired": "{{câmp}} este obligatoriu", + "urlError": "URL-ul ar trebui să înceapă cu http:// sau https://" + }, + "fileUploader": { + "uploadFromComputerReadError": "Citirea fișierului a eșuat, vă rugăm să încercați din nou.", + "fileExtensionNotSupport": "Extensia de fișier nu este acceptată", + "uploadFromComputer": "Încărcare locală", + "pasteFileLinkInputPlaceholder": "Introduceți adresa URL...", + "uploadFromComputerUploadError": "Încărcarea fișierului a eșuat, vă rugăm să încărcați din nou.", + "pasteFileLinkInvalid": "Link fișier nevalid", + "uploadFromComputerLimit": "Încărcarea fișierului nu poate depăși {{size}}", + "pasteFileLink": "Lipiți linkul fișierului", + "fileExtensionBlocked": "Acest tip de fișier este blocat din motive de securitate", + "uploadDisabled": "Încărcarea fișierelor este dezactivată" + }, + "license": { + "expiring": "Expiră într-o zi", + "expiring_plural": "Expiră în {{count}} zile", + "unlimited": "Nelimitat" + }, + "pagination": { + "perPage": "Articole pe pagină" + }, + "theme": { + "theme": "Temă", + "light": "lumina", + "auto": "sistem", + "dark": "întunecat" + }, + "compliance": { + "sandboxUpgradeTooltip": "Disponibilă doar cu un plan Profesional sau de Echipă.", + "iso27001": "Certificare ISO 27001:2022", + "professionalUpgradeTooltip": "Disponibilă doar cu un plan de echipă sau superior.", + "gdpr": "GDPR DPA", + "soc2Type1": "Raport SOC 2 Tip I", + "soc2Type2": "Raport SOC 2 Tip II" + }, + "imageInput": { + "supportedFormats": "Suportă PNG, JPG, JPEG, WEBP și GIF", + "browse": "naviga", + "dropImageHere": "Trageți imaginea aici sau" + }, + "you": "Tu", + "avatar": { + "deleteDescription": "Ești sigur că vrei să îți ștergi fotografia de profil? Contul tău va folosi avatarul inițial implicit.", + "deleteTitle": "Îndepărtează avatarul" + }, + "feedback": { + "content": "Conținut de feedback", + "subtitle": "Te rog să ne spui ce a mers prost cu acest răspuns", + "placeholder": "Vă rugăm să descrieți ce a mers prost sau cum putem îmbunătăți...", + "title": "Oferiți feedback" + }, + "label": { + "optional": "(opțional)" + }, + "noData": "Fără date", + "dynamicSelect": { + "error": "Încărcarea opțiunilor a eșuat", + "noData": "Nicio opțiune disponibilă", + "loading": "Se încarcă opțiuni...", + "selected": "{{count}} selectat" + } +} diff --git a/web/i18n/ro-RO/common.ts b/web/i18n/ro-RO/common.ts deleted file mode 100644 index df3cf01b6c..0000000000 --- a/web/i18n/ro-RO/common.ts +++ /dev/null @@ -1,792 +0,0 @@ -const translation = { - api: { - success: 'Succes', - actionSuccess: 'Acțiune reușită', - saved: 'Salvat', - create: 'Creat', - remove: 'Eliminat', - actionFailed: 'Acțiunea a eșuat', - }, - operation: { - create: 'Creează', - confirm: 'Confirmă', - cancel: 'Anulează', - clear: 'Șterge', - save: 'Salvează', - saveAndEnable: 'Salvează și Activează', - edit: 'Editează', - add: 'Adaugă', - added: 'Adăugat', - refresh: 'Reîncarcă', - reset: 'Resetează', - search: 'Caută', - change: 'Schimbă', - remove: 'Elimină', - send: 'Trimite', - copy: 'Copiază', - lineBreak: 'Linie nouă', - sure: 'Sunt sigur', - download: 'Descarcă', - delete: 'Șterge', - settings: 'Setări', - setup: 'Configurare', - getForFree: 'Obține gratuit', - reload: 'Reîncarcă', - ok: 'OK', - log: 'Jurnal', - learnMore: 'Află mai multe', - params: 'Parametri', - duplicate: 'Duplică', - rename: 'Redenumește', - audioSourceUnavailable: 'Sursa audio nu este disponibilă', - copyImage: 'Copiere imagine', - zoomOut: 'Micșorare', - openInNewTab: 'Deschide într-o filă nouă', - zoomIn: 'Măriți', - close: 'Închide', - viewMore: 'VEZI MAI MULT', - regenerate: 'Regenera', - saveAndRegenerate: 'Salvați și regenerați bucățile secundare', - view: 'Vedere', - submit: 'Prezinte', - skip: 'Navă', - imageCopied: 'Imagine copiată', - deleteApp: 'Ștergeți aplicația', - copied: 'Copiat', - in: 'în', - viewDetails: 'Vezi detalii', - downloadFailed: 'Descărcarea a eșuat. Vă rugăm să încercați din nou mai târziu.', - format: 'Format', - downloadSuccess: 'Descărcarea a fost finalizată.', - more: 'Mai mult', - deSelectAll: 'Deselectați tot', - selectAll: 'Selectați tot', - config: 'Configurație', - yes: 'Da', - deleteConfirmTitle: 'Ștergere?', - no: 'Nu', - confirmAction: 'Vă rugăm să confirmați acțiunea dumneavoastră.', - noSearchResults: 'Nu au fost găsite {{content}}', - resetKeywords: 'Resetează cuvintele cheie', - selectCount: '{{count}} Selectat', - searchCount: 'Găsește {{count}} {{content}}', - noSearchCount: '0 {{content}}', - now: 'Acum', - }, - placeholder: { - input: 'Vă rugăm să introduceți', - select: 'Vă rugăm să selectați', - search: 'Caută...', - }, - voice: { - language: { - zhHans: 'Chineză', - zhHant: 'Chineză tradițională', - enUS: 'Engleză', - deDE: 'Germană', - frFR: 'Franceză', - esES: 'Spaniolă', - itIT: 'Italiană', - thTH: 'Thailandeză', - idID: 'Indoneziană', - jaJP: 'Japoneză', - koKR: 'Coreeană', - ptBR: 'Portugheză', - ruRU: 'Rusă', - ukUA: 'Ucraineană', - viVN: 'Vietnameză', - roRO: 'Română', - hiIN: 'Hindi', - trTR: 'Turcă', - faIR: 'Persană', - slSI: 'Slovenă', - arTN: 'Arabă tunisiană', - plPL: 'Poloneză', - }, - }, - unit: { - char: 'caractere', - }, - actionMsg: { - noModification: 'Nicio modificare în acest moment.', - modifiedSuccessfully: 'Modificat cu succes', - modifiedUnsuccessfully: 'Modificare eșuată', - copySuccessfully: 'Copiat cu succes', - paySucceeded: 'Plata a reușit', - payCancelled: 'Plata a fost anulată', - generatedSuccessfully: 'Generat cu succes', - generatedUnsuccessfully: 'Generare eșuată', - }, - model: { - params: { - temperature: 'Temperatură', - temperatureTip: - 'Controlează aleatorietatea: Reducerea duce la mai puține completări aleatorii. Pe măsură ce temperatura se apropie de zero, modelul va deveni deterministic și repetitiv.', - top_p: 'Top P', - top_pTip: - 'Controlează diversitatea prin eșantionarea nucleului: 0,5 înseamnă că jumătate din toate opțiunile ponderate după probabilitate sunt luate în considerare.', - presence_penalty: 'Penalizare prezență', - presence_penaltyTip: - 'Cât de mult să se penalizeze noile jetoane în funcție de dacă apar sau nu în textul de până acum.\nCrește probabilitatea modelului de a vorbi despre subiecte noi.', - frequency_penalty: 'Penalizare frecvență', - frequency_penaltyTip: - 'Cât de mult să se penalizeze noile jetoane în funcție de frecvența lor existentă în textul de până acum.\nScade probabilitatea modelului de a repeta aceeași linie cuvânt cu cuvânt.', - max_tokens: 'Jetoane maxime', - max_tokensTip: - 'Folosit pentru a limita lungimea maximă a răspunsului, în jetoane.\nValori mai mari pot limita spațiul rămas pentru cuvintele promptului, jurnalele de chat și cunoștințe.\nSe recomandă să fie setat la mai puțin de două treimi\ngpt-4-1106-preview, gpt-4-vision-preview jetoane maxime (intrare 128k ieșire 4k)', - maxTokenSettingTip: 'Setarea jetoanelor maxime este ridicată, limitând potențial spațiul pentru prompturi, interogări și date. Luați în considerare setarea acesteia la sub 2/3.', - setToCurrentModelMaxTokenTip: 'Jetoanele maxime sunt actualizate la 80% din jetoanele maxime ale modelului curent {{maxToken}}.', - stop_sequences: 'Secvențe de oprire', - stop_sequencesTip: 'Până la patru secvențe în care API-ul va înceta să genereze mai multe jetoane. Textul returnat nu va conține secvența de oprire.', - stop_sequencesPlaceholder: 'Introduceți secvența și apăsați Tab', - }, - tone: { - Creative: 'Creativ', - Balanced: 'Echilibrat', - Precise: 'Precis', - Custom: 'Personalizat', - }, - addMoreModel: 'Mergeți la setări pentru a adăuga mai multe modele', - capabilities: 'Capacități multimodale', - settingsLink: 'Setările furnizorului de modele', - }, - menus: { - status: 'beta', - explore: 'Explorează', - apps: 'Studio', - plugins: 'Plugin-uri', - pluginsTips: 'Integrați plugin-uri terțe părți sau creați AI-Plugin-uri compatibile cu ChatGPT.', - datasets: 'Cunoștințe', - datasetsTips: 'CURÂND DISPONIBIL: Importați-vă propriile date text sau scrieți date în timp real prin Webhook pentru îmbunătățirea contextului LLM.', - newApp: 'Aplicație nouă', - newDataset: 'Creează Cunoștințe', - tools: 'Instrumente', - exploreMarketplace: 'Explorați Marketplace', - appDetail: 'Detalii aplicație', - account: 'Cont', - }, - userProfile: { - settings: 'Setări', - emailSupport: 'Suport prin email', - workspace: 'Spațiu de lucru', - createWorkspace: 'Creează Spațiu de lucru', - helpCenter: 'Ajutor', - roadmap: 'Plan de acțiune', - community: 'Comunitate', - about: 'Despre', - logout: 'Deconectare', - github: 'GitHub', - support: 'Suport', - compliance: 'Conformitate', - contactUs: 'Contactați-ne', - forum: 'Forum', - }, - settings: { - accountGroup: 'CONT', - workplaceGroup: 'SPAȚIU DE LUCRU', - account: 'Contul meu', - members: 'Membri', - billing: 'Facturare', - integrations: 'Integrări', - language: 'Limbă', - provider: 'Furnizor de modele', - dataSource: 'Sursă de date', - plugin: 'Plugin-uri', - apiBasedExtension: 'Extensie API', - generalGroup: 'GENERAL', - }, - account: { - avatar: 'Avatar', - name: 'Nume', - email: 'Email', - password: 'Parolă', - passwordTip: 'Puteți seta o parolă permanentă dacă nu doriți să utilizați coduri de conectare temporare', - setPassword: 'Setează o parolă', - resetPassword: 'Resetează parola', - currentPassword: 'Parola curentă', - newPassword: 'Parolă nouă', - confirmPassword: 'Confirmă parola', - notEqual: 'Cele două parole sunt diferite.', - langGeniusAccount: 'Cont Dify', - langGeniusAccountTip: 'Contul Dify și datele de utilizator asociate.', - editName: 'Editează Nume', - showAppLength: 'Afișează {{length}} aplicații', - delete: 'Șterge contul', - deleteTip: 'Ștergerea contului vă va șterge definitiv toate datele și nu pot fi recuperate.', - account: 'Cont', - studio: 'Dify Studio', - myAccount: 'Contul meu', - deletePrivacyLinkTip: 'Pentru mai multe informații despre modul în care gestionăm datele dvs., vă rugăm să consultați', - deletePrivacyLink: 'Politica de confidențialitate.', - deleteSuccessTip: 'Contul tău are nevoie de timp pentru a termina ștergerea. Vă vom trimite un e-mail când totul este gata.', - deleteLabel: 'Pentru a confirma, vă rugăm să introduceți adresa de e-mail mai jos', - deletePlaceholder: 'Vă rugăm să introduceți adresa de e-mail', - sendVerificationButton: 'Trimiteți codul de verificare', - verificationPlaceholder: 'Lipiți codul din 6 cifre', - permanentlyDeleteButton: 'Ștergeți definitiv contul', - feedbackLabel: 'Spuneți-ne de ce v-ați șters contul?', - feedbackPlaceholder: 'Facultativ', - feedbackTitle: 'Feedback', - verificationLabel: 'Cod de verificare', - workspaceName: 'Numele spațiului de lucru', - editWorkspaceInfo: 'Editează informațiile spațiului de lucru', - workspaceIcon: 'Iconița de spațiu de lucru', - changeEmail: { - continue: 'Continuați', - newEmail: 'Creează o nouă adresă de email', - verifyEmail: 'Verifică-ți adresa de email curentă', - verifyNew: 'Verifică-ți noul email', - codePlaceholder: 'Introduceți codul de 6 cifre', - resendTip: 'Nu ai primit un cod?', - codeLabel: 'Cod de verificare', - resendCount: 'Reexpediază în {{count}}s', - resend: 'Retrimite', - title: 'Schimbă emailul', - changeTo: 'Schimbă la {{email}}', - existingEmail: 'Un utilizator cu acest email există deja.', - emailPlaceholder: 'Introduceți un email nou', - content3: 'Introduceți un nou email și vă vom trimite un cod de verificare.', - sendVerifyCode: 'Trimite codul de verificare', - content1: 'Dacă continui, vom trimite un cod de verificare la {{email}} pentru reautentificare.', - authTip: 'Odată ce adresa ta de email este schimbată, conturile Google sau GitHub legate de vechea ta adresă de email nu vor mai putea să se conecteze la acest cont.', - content4: 'Tocmai ți-am trimis un cod de verificare temporar la {{email}}.', - content2: 'Adresa ta de email curentă este {{email}}. Codul de verificare a fost trimis la această adresă de email.', - emailLabel: 'Email nou', - unAvailableEmail: 'Acest email este temporar indisponibil.', - }, - }, - members: { - team: 'Echipă', - invite: 'Adaugă', - name: 'NUME', - lastActive: 'ULTIMA ACTIVITATE', - role: 'ROLURI', - pending: 'În așteptare...', - owner: 'Proprietar', - admin: 'Administrator', - adminTip: 'Poate construi aplicații și gestiona setările echipei', - normal: 'Normal', - normalTip: 'Poate doar utiliza aplicații, nu poate construi aplicații', - editor: 'Editor', - editorTip: 'Poate construi aplicații, dar nu poate gestiona setările echipei', - inviteTeamMember: 'Adaugă membru în echipă', - inviteTeamMemberTip: 'Pot accesa direct datele echipei dvs. după autentificare.', - emailNotSetup: 'Serverul de e-mail nu este configurat, astfel încât e-mailurile de invitație nu pot fi trimise. Vă rugăm să notificați utilizatorii despre linkul de invitație care va fi emis după invitație.', - email: 'Email', - emailInvalid: 'Format de email invalid', - emailPlaceholder: 'Vă rugăm să introduceți emailuri', - sendInvite: 'Trimite invitație', - invitedAsRole: 'Invitat ca utilizator {{role}}', - invitationSent: 'Invitație trimisă', - invitationSentTip: 'Invitația a fost trimisă și pot să se autentifice în Dify pentru a accesa datele echipei dvs.', - invitationLink: 'Link de invitație', - failedInvitationEmails: 'Următorii utilizatori nu au fost invitați cu succes', - ok: 'OK', - removeFromTeam: 'Elimină din echipă', - removeFromTeamTip: 'Va elimina accesul la echipă', - setAdmin: 'Setează ca administrator', - setMember: 'Setează ca membru obișnuit', - setEditor: 'Setează ca editor', - disInvite: 'Anulează invitația', - deleteMember: 'Șterge membru', - you: '(Dvs.)', - datasetOperatorTip: 'Numai poate gestiona baza de cunoștințe', - builder: 'Constructor', - datasetOperator: 'Administrator de cunoștințe', - setBuilder: 'Setare ca constructor', - builderTip: 'Poate construi și edita propriile aplicații', - transferModal: { - resendTip: 'Nu ai primit un cod?', - title: 'Transferați proprietatea spațiului de lucru', - warningTip: 'Vei deveni membru administrator, iar noul proprietar va avea control total.', - resendCount: 'Reexpediază în {{count}}s', - transferLabel: 'Transferați proprietatea spațiului de lucru către', - resend: 'Retrimite', - transfer: 'Transferați proprietatea spațiului de lucru', - transferPlaceholder: 'Selectați un membru al spațiului de lucru…', - continue: 'Continuați', - codeLabel: 'Cod de verificare', - verifyContent2: 'Îți vom trimite un cod temporar de verificare pe acest email pentru reautentificare.', - sendTip: 'Dacă continui, vom trimite un cod de verificare la {{email}} pentru reautentificare.', - verifyContent: 'Adresa ta de email curentă este {{email}}.', - warning: 'Ești pe cale să transferi proprietatea „{{workspace}}”. Acest lucru va avea efect imediat și nu poate fi desfăcut.', - sendVerifyCode: 'Trimite codul de verificare', - verifyEmail: 'Verifică-ți adresa de email curentă', - codePlaceholder: 'Introduceți codul de 6 cifre', - }, - transferOwnership: 'Transferați proprietatea', - }, - integrations: { - connected: 'Conectat', - google: 'Google', - googleAccount: 'Autentificare cu cont Google', - github: 'GitHub', - githubAccount: 'Autentificare cu cont GitHub', - connect: 'Conectează', - }, - language: { - displayLanguage: 'Limbă de afișare', - timezone: 'Fus orar', - }, - provider: { - apiKey: 'Cheie API', - enterYourKey: 'Introduceți cheia API aici', - invalidKey: 'Cheie API OpenAI nevalidă', - validatedError: 'Validare eșuată: ', - validating: 'Se validează cheia...', - saveFailed: 'Salvarea cheii API a eșuat', - apiKeyExceedBill: 'Această CHEIE API nu are cotă disponibilă, vă rugăm să citiți', - addKey: 'Adaugă cheie', - comingSoon: 'Curând disponibil', - editKey: 'Editează', - invalidApiKey: 'Cheie API nevalidă', - azure: { - apiBase: 'Bază API', - apiBasePlaceholder: 'URL-ul de bază al API-ului pentru punctul final Azure OpenAI.', - apiKey: 'Cheie API', - apiKeyPlaceholder: 'Introduceți cheia API aici', - helpTip: 'Aflați despre serviciul Azure OpenAI', - }, - openaiHosted: { - openaiHosted: 'OpenAI găzduit', - onTrial: 'ÎN PROBĂ', - exhausted: 'COTĂ EPUIZATĂ', - desc: 'Serviciul de găzduire OpenAI furnizat de Dify vă permite să utilizați modele precum GPT-3.5. Înainte ca cota de probă să fie epuizată, trebuie să configurați alți furnizori de modele.', - callTimes: 'Apeluri', - usedUp: 'Cota de probă a fost epuizată. Adăugați propriul furnizor de modele.', - useYourModel: 'În prezent se utilizează propriul furnizor de modele.', - close: 'Închide', - }, - anthropicHosted: { - anthropicHosted: 'Anthropic Claude', - onTrial: 'ÎN PROBĂ', - exhausted: 'COTĂ EPUIZATĂ', - desc: 'Model puternic, care excelează într-o gamă largă de sarcini, de la dialog sofisticat și generare de conținut creativ, până la instrucțiuni detaliate.', - callTimes: 'Apeluri', - usedUp: 'Cota de probă a fost epuizată. Adăugați propriul furnizor de modele.', - useYourModel: 'În prezent se utilizează propriul furnizor de modele.', - close: 'Închide', - trialQuotaTip: 'Cota de încercare Anthropic va expira pe 11.03.2025 și nu va mai fi disponibilă ulterior. Vă rugăm să o utilizați la timp.', - }, - anthropic: { - using: 'Capacitatea de încorporare utilizează', - enableTip: 'Pentru a activa modelul Anthropic, trebuie să vă legați mai întâi la OpenAI sau la serviciul Azure OpenAI.', - notEnabled: 'Nu este activat', - keyFrom: 'Obțineți cheia API de la Anthropic', - }, - encrypted: { - front: 'Cheia dvs. API va fi criptată și stocată folosind', - back: ' tehnologie.', - }, - }, - modelProvider: { - notConfigured: 'Modelul de sistem nu a fost încă configurat complet, iar unele funcții pot fi indisponibile.', - systemModelSettings: 'Setări model de sistem', - systemModelSettingsLink: 'De ce este necesar să se configureze un model de sistem?', - selectModel: 'Selectați modelul dvs.', - setupModelFirst: 'Vă rugăm să configurați mai întâi modelul', - systemReasoningModel: { - key: 'Model de raționament de sistem', - tip: 'Setați modelul de inferență implicit care va fi utilizat pentru crearea aplicațiilor, precum și caracteristici precum generarea de nume pentru dialog și sugestia următoarei întrebări vor utiliza, de asemenea, modelul de inferență implicit.', - }, - embeddingModel: { - key: 'Model de încorporare', - tip: 'Setați modelul implicit pentru procesarea încorporării documentelor a Cunoștințelor, atât pentru recuperare, cât și pentru importul Cunoștințelor, folosind acest model de încorporare pentru procesarea vectorizării. Comutarea va cauza inconsecvența dimensiunii vectorului între Cunoștințele importate și întrebarea, ceea ce va duce la eșecul recuperării. Pentru a evita eșecul recuperării, vă rugăm să nu comutați acest model la întâmplare.', - required: 'Modelul de încorporare este obligatoriu', - }, - speechToTextModel: { - key: 'Model de conversie text-la-vorbire', - tip: 'Setați modelul implicit pentru intrarea de conversie text-la-vorbire în conversație.', - }, - ttsModel: { - key: 'Model de conversie vorbire-la-text', - tip: 'Setați modelul implicit pentru intrarea de conversie vorbire-la-text în conversație.', - }, - rerankModel: { - key: 'Model de reordonare', - tip: 'Modelul de reordonare va reordona lista de documente candidate pe baza potrivirii semantice cu interogarea utilizatorului, îmbunătățind rezultatele clasificării semantice', - }, - quota: 'Cotă', - searchModel: 'Model de căutare', - noModelFound: 'Nu a fost găsit niciun model pentru {{model}}', - models: 'Modele', - showMoreModelProvider: 'Arată mai multe furnizori de modele', - selector: { - tip: 'Acest model a fost eliminat. Vă rugăm să adăugați un model sau să selectați un alt model.', - emptyTip: 'Nu există modele disponibile', - emptySetting: 'Vă rugăm să mergeți la setări pentru a configura', - rerankTip: 'Vă rugăm să configurați modelul de reordonare', - }, - card: { - quota: 'COTĂ', - onTrial: 'În probă', - paid: 'Plătit', - quotaExhausted: 'Cotă epuizată', - callTimes: 'Apeluri', - tokens: 'Jetoane', - buyQuota: 'Cumpără cotă', - priorityUse: 'Utilizare prioritară', - removeKey: 'Elimină cheia API', - tip: 'Prioritate va fi acordată cotei plătite. Cota de probă va fi utilizată după epuizarea cotei plătite.', - }, - item: { - deleteDesc: '{{modelName}} sunt utilizate ca modele de raționare a sistemului. Unele funcții nu vor fi disponibile după eliminare. Vă rugăm să confirmați.', - freeQuota: 'COTĂ GRATUITĂ', - }, - addApiKey: 'Adăugați cheia dvs. API', - invalidApiKey: 'Cheie API nevalidă', - encrypted: { - front: 'Cheia dvs. API va fi criptată și stocată folosind', - back: ' tehnologie.', - }, - freeQuota: { - howToEarn: 'Cum să câștigați', - }, - addMoreModelProvider: 'ADĂUGAȚI MAI MULȚI FURNIZORI DE MODELE', - addModel: 'Adăugați model', - modelsNum: '{{num}} Modele', - showModels: 'Arată modele', - showModelsNum: 'Arată {{num}} modele', - collapse: 'Restrânge', - config: 'Configurare', - modelAndParameters: 'Model și parametri', - model: 'Model', - featureSupported: '{{feature}} acceptat', - callTimes: 'Apeluri', - credits: 'Credite mesaje', - buyQuota: 'Cumpără cotă', - getFreeTokens: 'Obțineți jetoane gratuite', - priorityUsing: 'Prioritizează utilizarea', - deprecated: 'Învechit', - confirmDelete: 'confirmați ștergerea?', - quotaTip: 'Jetoane gratuite disponibile rămase', - loadPresets: 'Încarcă presetări', - parameters: 'PARAMETRI', - loadBalancingHeadline: 'Echilibrare', - loadBalancingInfo: 'În mod implicit, echilibrarea încărcării utilizează strategia Round-robin. Dacă se declanșează limitarea ratei, se va aplica o perioadă de reactivare de 1 minut.', - loadBalancing: 'Echilibrare', - apiKeyRateLimit: 'Limita de viteză a fost atinsă, disponibilă după {{secunde}}s', - providerManaged: 'Gestionat de furnizor', - providerManagedDescription: 'Utilizați setul unic de acreditări furnizat de furnizorul de modele.', - defaultConfig: 'Configurație implicită', - addConfig: 'Adăugați configurație', - apiKey: 'CHEIE API', - modelHasBeenDeprecated: 'Acest model a fost depreciat', - loadBalancingDescription: 'Reduceți presiunea cu mai multe seturi de acreditări.', - apiKeyStatusNormal: 'Starea APIKey este normală', - loadBalancingLeastKeyWarning: 'Pentru a activa echilibrarea încărcării trebuie activate cel puțin 2 chei.', - editConfig: 'Editați configurația', - configLoadBalancing: 'Echilibrarea încărcării de configurare', - upgradeForLoadBalancing: 'Actualizați-vă planul pentru a activa Load Balancing.', - configureTip: 'Configurați api-key sau adăugați modelul de utilizat', - installProvider: 'Instalarea furnizorilor de modele', - emptyProviderTitle: 'Furnizorul de modele nu este configurat', - discoverMore: 'Descoperă mai multe în', - emptyProviderTip: 'Vă rugăm să instalați mai întâi un furnizor de modele.', - toBeConfigured: 'De configurat', - auth: { - apiKeyModal: { - addModel: 'Adăugați model', - title: 'Configurarea autorizării cheii API', - desc: 'După configurarea acreditivelor, toți membrii din spațiul de lucru pot folosi acest model atunci când orchestran aplicații.', - }, - unAuthorized: 'Neautorizat', - addApiKey: 'Adăugați cheia API', - apiKeys: 'Chei API', - addCredential: 'Adăugați acreditive', - configModel: 'Configurați modelul', - addNewModel: 'Adăugați un nou model', - authRemoved: 'Autentificare eliminată', - specifyModelCredential: 'Specificați acreditivele modelului', - providerManaged: 'Gestionat de furnizor', - authorizationError: 'Eroare de autorizare', - configLoadBalancing: 'Configurare echilibrare a încărcării', - addModelCredential: 'Adăugați acreditivele modelului', - providerManagedTip: 'Configurarea curentă este găzduită de furnizor.', - modelCredentials: 'Credențiale model', - specifyModelCredentialTip: 'Utilizați un acreditiv de model configurat.', - addNewModelCredential: 'Adăugați acreditive noi pentru model', - modelCredential: 'Model de acreditare', - removeModel: 'Eliminați modelul', - addModel: 'Adăugați model', - selectModelCredential: 'Selectați o acreditare model', - editModelCredential: 'Editarea acreditării modelului', - customModelCredentials: 'Acreditări model personalizate', - manageCredentials: 'Gestionați acreditările', - customModelCredentialsDeleteTip: 'Acreditarea este în uz și nu poate fi ștearsă', - }, - parametersInvalidRemoved: 'Unele parametrii sunt invalizi și au fost eliminați.', - installDataSourceProvider: 'Instalați furnizorii de surse de date', - }, - dataSource: { - add: 'Adăugați o sursă de date', - connect: 'Conectați', - notion: { - title: 'Notion', - description: 'Utilizarea Notion ca sursă de date pentru Cunoștințe.', - connectedWorkspace: 'Spațiu de lucru conectat', - addWorkspace: 'Adăugați spațiu de lucru', - connected: 'Conectat', - disconnected: 'Deconectat', - changeAuthorizedPages: 'Schimbați paginile autorizate', - pagesAuthorized: 'Pagini autorizate', - sync: 'Sincronizare', - remove: 'Elimină', - selector: { - pageSelected: 'Pagini selectate', - searchPages: 'Căutați pagini...', - noSearchResult: 'Niciun rezultat la căutare', - addPages: 'Adăugați pagini', - preview: 'PREVIZUALIZARE', - }, - integratedAlert: 'Notion este integrat prin credențiale interne, nu este nevoie să re-autorizăm.', - }, - website: { - inactive: 'Inactiv', - description: 'Importați conținut de pe site-uri web folosind crawlerul web.', - active: 'Activ', - with: 'Cu', - title: 'Site-ul web', - configuredCrawlers: 'Crawlere configurate', - }, - configure: 'Configura', - }, - plugin: { - serpapi: { - apiKey: 'Cheie API', - apiKeyPlaceholder: 'Introduceți cheia dvs. API', - keyFrom: 'Obțineți cheia dvs. SerpAPI din pagina contului SerpAPI', - }, - }, - apiBasedExtension: { - title: 'Extensiile bazate pe API oferă o gestionare centralizată a API-urilor, simplificând configurația pentru o utilizare ușoară în aplicațiile Dify.', - link: 'Aflați cum să dezvoltați propria extensie bazată pe API.', - add: 'Adăugați extensie API', - selector: { - title: 'Extensie API', - placeholder: 'Vă rugăm să selectați extensia API', - manage: 'Gestionați extensia API', - }, - modal: { - title: 'Adăugați extensie API', - editTitle: 'Editați extensia API', - name: { - title: 'Nume', - placeholder: 'Vă rugăm să introduceți numele', - }, - apiEndpoint: { - title: 'Endpoint API', - placeholder: 'Vă rugăm să introduceți endpoint-ul API', - }, - apiKey: { - title: 'Cheie API', - placeholder: 'Vă rugăm să introduceți cheia API', - lengthError: 'Lungimea cheii API nu poate fi mai mică de 5 caractere', - }, - }, - type: 'Tip', - }, - about: { - changeLog: 'Jurnal modificări', - updateNow: 'Actualizați acum', - nowAvailable: 'Dify {{version}} este acum disponibil.', - latestAvailable: 'Dify {{version}} este ultima versiune disponibilă.', - }, - appMenus: { - overview: 'Monitorizare', - promptEng: 'Orchestrare', - apiAccess: 'Acces API', - logAndAnn: 'Jurnale și Ann.', - logs: 'Jurnale', - }, - environment: { - testing: 'TESTARE', - development: 'DEZVOLTARE', - }, - appModes: { - completionApp: 'Generator de text', - chatApp: 'Aplicație de chat', - }, - datasetMenus: { - documents: 'Documente', - hitTesting: 'Testare recuperare', - settings: 'Setări', - emptyTip: 'Cunoștințele nu au fost asociate, vă rugăm să mergeți la aplicație sau la plug-in pentru a finaliza asocierea.', - viewDoc: 'Vizualizați documentația', - relatedApp: 'aplicații asociate', - noRelatedApp: 'Fără aplicații conectate', - pipeline: 'Pipeline', - }, - voiceInput: { - speaking: 'Vorbiți acum...', - converting: 'Se convertește la text...', - notAllow: 'microfonul nu este autorizat', - }, - 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: 'Redenumește conversația', - conversationName: 'Nume conversație', - conversationNamePlaceholder: 'Vă rugăm să introduceți numele conversației', - conversationNameCanNotEmpty: 'Numele conversației este obligatoriu', - citation: { - title: 'CITĂRI', - linkToDataset: 'Legătură la Cunoștințe', - characters: 'Caractere:', - hitCount: 'Număr de recuperări:', - vectorHash: 'Hash vector:', - hitScore: 'Scor de recuperare:', - }, - inputPlaceholder: 'Vorbește cu {{botName}}', - thinking: 'Gândire...', - thought: 'Gând', - resend: 'Reexpediați', - }, - promptEditor: { - placeholder: 'Scrieți aici prompt-ul, introduceți \'{}\' pentru a insera o variabilă, introduceți \'/\' pentru a insera un bloc de conținut prompt', - context: { - item: { - title: 'Context', - desc: 'Inserați șablon de context', - }, - modal: { - title: '{{num}} Cunoștințe în context', - add: 'Adăugați context ', - footer: 'Puteți gestiona contextele în secțiunea Context de mai jos.', - }, - }, - history: { - item: { - title: 'Istoric conversație', - desc: 'Inserați șablon de mesaj istoric', - }, - modal: { - title: 'EXEMPLU', - user: 'Salut', - assistant: 'Salut! Cum vă pot ajuta astăzi?', - edit: 'Editați numele rolurilor de conversație', - }, - }, - variable: { - item: { - title: 'Variabile și instrumente externe', - desc: 'Inserați variabile și instrumente externe', - }, - outputToolDisabledItem: { - title: 'Variabile', - desc: 'Inserați variabile', - }, - modal: { - add: 'Nouă variabilă', - addTool: 'Nou instrument', - }, - }, - query: { - item: { - title: 'Interogare', - desc: 'Inserați șablon de interogare utilizator', - }, - }, - existed: 'Există deja în prompt', - }, - imageUploader: { - uploadFromComputer: 'Încărcați de pe computer', - uploadFromComputerReadError: 'Citirea imaginii a eșuat, vă rugăm încercați din nou.', - uploadFromComputerUploadError: 'Încărcarea imaginii a eșuat, vă rugăm încărcați din nou.', - uploadFromComputerLimit: 'Imaginile încărcate nu pot depăși {{size}} MB', - pasteImageLink: 'Inserați link-ul imaginii', - pasteImageLinkInputPlaceholder: 'Inserați link-ul imaginii aici', - pasteImageLinkInvalid: 'Link-ul imaginii este nevalid', - imageUpload: 'Încărcare imagine', - }, - tag: { - placeholder: 'Toate etichetele', - addNew: 'Adăugați o etichetă nouă', - noTag: 'Nicio etichetă', - noTagYet: 'Încă nu există etichete', - addTag: 'Adăugați etichete', - editTag: 'Editați etichete', - manageTags: 'Gestionați etichete', - selectorPlaceholder: 'Tastați pentru a căuta sau crea', - create: 'Creați', - delete: 'Ștergeți eticheta', - deleteTip: 'Eticheta este utilizată, ștergeți-o?', - created: 'Etichetă creată cu succes', - failed: 'Crearea etichetei a eșuat', - }, - errorMsg: { - fieldRequired: '{{câmp}} este obligatoriu', - urlError: 'URL-ul ar trebui să înceapă cu http:// sau https://', - }, - fileUploader: { - uploadFromComputerReadError: 'Citirea fișierului a eșuat, vă rugăm să încercați din nou.', - fileExtensionNotSupport: 'Extensia de fișier nu este acceptată', - uploadFromComputer: 'Încărcare locală', - pasteFileLinkInputPlaceholder: 'Introduceți adresa URL...', - uploadFromComputerUploadError: 'Încărcarea fișierului a eșuat, vă rugăm să încărcați din nou.', - pasteFileLinkInvalid: 'Link fișier nevalid', - uploadFromComputerLimit: 'Încărcarea fișierului nu poate depăși {{size}}', - pasteFileLink: 'Lipiți linkul fișierului', - fileExtensionBlocked: 'Acest tip de fișier este blocat din motive de securitate', - uploadDisabled: 'Încărcarea fișierelor este dezactivată', - }, - license: { - expiring: 'Expiră într-o zi', - expiring_plural: 'Expiră în {{count}} zile', - unlimited: 'Nelimitat', - }, - pagination: { - perPage: 'Articole pe pagină', - }, - theme: { - theme: 'Temă', - light: 'lumina', - auto: 'sistem', - dark: 'întunecat', - }, - compliance: { - sandboxUpgradeTooltip: 'Disponibilă doar cu un plan Profesional sau de Echipă.', - iso27001: 'Certificare ISO 27001:2022', - professionalUpgradeTooltip: 'Disponibilă doar cu un plan de echipă sau superior.', - gdpr: 'GDPR DPA', - soc2Type1: 'Raport SOC 2 Tip I', - soc2Type2: 'Raport SOC 2 Tip II', - }, - imageInput: { - supportedFormats: 'Suportă PNG, JPG, JPEG, WEBP și GIF', - browse: 'naviga', - dropImageHere: 'Trageți imaginea aici sau', - }, - you: 'Tu', - avatar: { - deleteDescription: 'Ești sigur că vrei să îți ștergi fotografia de profil? Contul tău va folosi avatarul inițial implicit.', - deleteTitle: 'Îndepărtează avatarul', - }, - feedback: { - content: 'Conținut de feedback', - subtitle: 'Te rog să ne spui ce a mers prost cu acest răspuns', - placeholder: 'Vă rugăm să descrieți ce a mers prost sau cum putem îmbunătăți...', - title: 'Oferiți feedback', - }, - label: { - optional: '(opțional)', - }, - noData: 'Fără date', - dynamicSelect: { - error: 'Încărcarea opțiunilor a eșuat', - noData: 'Nicio opțiune disponibilă', - loading: 'Se încarcă opțiuni...', - selected: '{{count}} selectat', - }, -} - -export default translation diff --git a/web/i18n/ro-RO/custom.json b/web/i18n/ro-RO/custom.json new file mode 100644 index 0000000000..7f8cc1d734 --- /dev/null +++ b/web/i18n/ro-RO/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "Personalizare", + "upgradeTip": { + "prefix": "Actualizați-vă planul pentru a", + "suffix": "să vă personalizați marca.", + "des": "Îmbunătățește-ți planul pentru a-ți personaliza marca", + "title": "Upgradează-ți planul" + }, + "webapp": { + "title": "Personalizați marca web app", + "removeBrand": "Eliminați \"Powered by Dify\"", + "changeLogo": "Schimbați imaginea mărcii \"Powered by\"", + "changeLogoTip": "Format SVG sau PNG cu o dimensiune minimă de 40x40px" + }, + "app": { + "title": "Personalizați marca antetului aplicației", + "changeLogoTip": "Format SVG sau PNG cu o dimensiune minimă de 80x80px" + }, + "upload": "Încărcare", + "uploading": "Se încarcă", + "uploadedFail": "Încărcarea imaginii a eșuat, vă rugăm să o reîncărcați.", + "change": "Schimbă", + "apply": "Aplică", + "restore": "Restabilește valorile implicite", + "customize": { + "contactUs": " contactați-ne ", + "prefix": "Pentru a personaliza sigla mărcii în cadrul aplicației, vă rugăm", + "suffix": "să actualizați la ediția Enterprise." + } +} diff --git a/web/i18n/ro-RO/custom.ts b/web/i18n/ro-RO/custom.ts deleted file mode 100644 index 0f90836172..0000000000 --- a/web/i18n/ro-RO/custom.ts +++ /dev/null @@ -1,32 +0,0 @@ -const translation = { - custom: 'Personalizare', - upgradeTip: { - prefix: 'Actualizați-vă planul pentru a', - suffix: 'să vă personalizați marca.', - des: 'Îmbunătățește-ți planul pentru a-ți personaliza marca', - title: 'Upgradează-ți planul', - }, - webapp: { - title: 'Personalizați marca web app', - removeBrand: 'Eliminați "Powered by Dify"', - changeLogo: 'Schimbați imaginea mărcii "Powered by"', - changeLogoTip: 'Format SVG sau PNG cu o dimensiune minimă de 40x40px', - }, - app: { - title: 'Personalizați marca antetului aplicației', - changeLogoTip: 'Format SVG sau PNG cu o dimensiune minimă de 80x80px', - }, - upload: 'Încărcare', - uploading: 'Se încarcă', - uploadedFail: 'Încărcarea imaginii a eșuat, vă rugăm să o reîncărcați.', - change: 'Schimbă', - apply: 'Aplică', - restore: 'Restabilește valorile implicite', - customize: { - contactUs: ' contactați-ne ', - prefix: 'Pentru a personaliza sigla mărcii în cadrul aplicației, vă rugăm', - suffix: 'să actualizați la ediția Enterprise.', - }, -} - -export default translation diff --git a/web/i18n/ro-RO/dataset-creation.json b/web/i18n/ro-RO/dataset-creation.json new file mode 100644 index 0000000000..74387fba54 --- /dev/null +++ b/web/i18n/ro-RO/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "Cunoaștere" + }, + "one": "Alegeți sursa de date", + "two": "Prelucrarea și curățarea textului", + "three": "Executați și finalizați" + }, + "error": { + "unavailable": "Această Cunoștință nu este disponibilă" + }, + "stepOne": { + "filePreview": "Previzualizare fișier", + "pagePreview": "Previzualizare pagină", + "dataSourceType": { + "file": "Importați din fișier text", + "notion": "Sincronizați din Notion", + "web": "Sincronizați din site web" + }, + "uploader": { + "title": "Încărcați fișier text", + "button": "Trageți și plasați fișiere sau foldere sau", + "buttonSingleFile": "Trageți și plasați un fișier sau", + "browse": "Răsfoire", + "tip": "Acceptă {{supportTypes}}. Maxim {{size}}MB fiecare.", + "validation": { + "typeError": "Tipul de fișier nu este acceptat", + "size": "Fișierul este prea mare. Maximul este de {{size}}MB", + "count": "Nu se acceptă mai multe fișiere", + "filesNumber": "Ați atins limita de încărcare în lot de {{filesNumber}} fișiere." + }, + "cancel": "Anulează", + "change": "Schimbă", + "failed": "Încărcarea a eșuat" + }, + "notionSyncTitle": "Notion nu este conectat", + "notionSyncTip": "Pentru a sincroniza cu Notion, trebuie mai întâi să se stabilească o conexiune la Notion.", + "connect": "Mergi la conectare", + "button": "următorul", + "emptyDatasetCreation": "Vreau să creez o Cunoștință goală", + "modal": { + "title": "Creați o Cunoștință goală", + "tip": "O Cunoștință goală nu va conține niciun document, iar dvs. puteți încărca documente în orice moment.", + "input": "Numele Cunoștinței", + "placeholder": "Vă rugăm să introduceți", + "nameNotEmpty": "Numele nu poate fi gol", + "nameLengthInvalid": "Numele trebuie să fie între 1 și 40 de caractere", + "cancelButton": "Anulează", + "confirmButton": "Creează", + "failed": "Crearea a eșuat" + }, + "website": { + "crawlSubPage": "Accesarea cu crawlere a subpaginilor", + "limit": "Limită", + "selectAll": "Selectează tot", + "configure": "Configura", + "preview": "Previzualizare", + "run": "Alerga", + "maxDepth": "Adâncime maximă", + "firecrawlDoc": "Documente Firecrawl", + "options": "Opțiuni", + "exceptionErrorTitle": "A apărut o excepție în timpul rulării lucrării Firecrawl:", + "firecrawlTitle": "Extrageți conținut web cu 🔥Firecrawl", + "unknownError": "Eroare necunoscută", + "scrapTimeInfo": "Pagini răzuite {{total}} în total în {{timp}}s", + "excludePaths": "Excluderea căilor", + "resetAll": "Resetați toate", + "extractOnlyMainContent": "Extrageți doar conținutul principal (fără anteturi, navigări, subsoluri etc.)", + "fireCrawlNotConfiguredDescription": "Configurați Firecrawl cu cheia API pentru a-l utiliza.", + "fireCrawlNotConfigured": "Firecrawl nu este configurat", + "includeOnlyPaths": "Includeți numai căi", + "totalPageScraped": "Total pagini răzuite:", + "maxDepthTooltip": "Adâncimea maximă de accesat cu crawlere în raport cu adresa URL introdusă. Adâncimea 0 doar răzuiește pagina URL-ului introdus, adâncimea 1 răzuiește url-ul și tot ceea ce după ce a introdusURL + un / și așa mai departe.", + "jinaReaderDocLink": "https://jina.ai/reader", + "chooseProvider": "Selectați un furnizor", + "jinaReaderNotConfiguredDescription": "Configurați Jina Reader introducând cheia API gratuită pentru acces.", + "useSitemap": "Utilizarea hărții site-ului", + "jinaReaderDoc": "Aflați mai multe despre Jina Reader", + "jinaReaderTitle": "Convertiți întregul site în Markdown", + "jinaReaderNotConfigured": "Jina Reader nu este configurat", + "useSitemapTooltip": "Urmați harta site-ului pentru a accesa cu crawlere site-ul. Dacă nu, Jina Reader va accesa cu crawlere iterativ în funcție de relevanța paginii, producând mai puține pagini, dar de calitate superioară.", + "waterCrawlNotConfigured": "Watercrawl nu este configurat", + "watercrawlTitle": "Extrageți conținut web cu Watercrawl", + "configureJinaReader": "Configurează Jina Reader", + "waterCrawlNotConfiguredDescription": "Configurează Watercrawl cu cheia API pentru a-l folosi.", + "configureFirecrawl": "Configurează Firecrawl", + "watercrawlDoc": "Documentele Watercrawl", + "configureWatercrawl": "Configurează Watercrawl", + "running": "Rulează" + }, + "cancel": "Anula" + }, + "stepTwo": { + "segmentation": "Setări de segmentare", + "auto": "Automat", + "autoDescription": "Setează automat regulile de segmentare și prelucrare. Utilizatorilor necunoscuți li se recomandă să selecteze această opțiune.", + "custom": "Personalizat", + "customDescription": "Personalizați regulile de segmentare, lungimea segmentelor și regulile de prelucrare, etc.", + "separator": "Identificator de segment", + "separatorPlaceholder": "De exemplu, linie nouă (\\\\n) sau separator special (cum ar fi \"***\")", + "maxLength": "Lungimea maximă a segmentului", + "overlap": "Suprapunerea segmentelor", + "overlapTip": "Setarea suprapunerii segmentelor poate menține relevanța semantică între ele, îmbunătățind efectul de recuperare. Se recomandă să setați 10%-25% din dimensiunea maximă a segmentului.", + "overlapCheck": "suprapunerea segmentului nu ar trebui să fie mai mare decât lungimea maximă a segmentului", + "rules": "Reguli de prelucrare a textului", + "removeExtraSpaces": "Înlocuiește spațiile consecutive, liniile noi și taburile", + "removeUrlEmails": "Șterge toate adresele URL și e-mailurile", + "removeStopwords": "Eliminați cuvintele de umplere, cum ar fi \"a\", \"an\", \"the\"", + "preview": "Confirmă și previzualizează", + "reset": "Resetează", + "indexMode": "Mod de indexare", + "qualified": "Calitate ridicată", + "recommend": "Recomandă", + "qualifiedTip": "Apelează interfața de încorporare a sistemului implicit pentru a procesa și a oferi o precizie mai mare atunci când utilizatorii interoghează.", + "warning": "Vă rugăm să setați mai întâi cheia API a furnizorului de modele.", + "click": "Mergi la setări", + "economical": "Economic", + "economicalTip": "Utilizați motoare de vectori offline, indexuri de cuvinte cheie etc. pentru a reduce precizia fără a cheltui jetoane", + "QATitle": "Segmentarea în format Întrebare și Răspuns", + "QATip": "Activarea acestei opțiuni va consuma mai multe jetoane", + "QALanguage": "Segmentează folosind", + "estimateCost": "Estimare", + "estimateSegment": "Segmente estimate", + "segmentCount": "segmente", + "calculating": "Se calculează...", + "fileSource": "Prelucrează documente", + "notionSource": "Prelucrează pagini", + "other": "și alte ", + "fileUnit": " fișiere", + "notionUnit": " pagini", + "previousStep": "Pasul anterior", + "nextStep": "Salvează și Procesează", + "save": "Salvează și Procesează", + "cancel": "Anulează", + "sideTipTitle": "De ce segmentare și prelucrare?", + "sideTipP1": "Atunci când se prelucrează date text, segmentarea și curățarea sunt două etape importante de pre-procesare.", + "sideTipP2": "Segmentarea împarte textul lung în paragrafe, astfel încât modelele să poată înțelege mai bine. Acest lucru îmbunătățește calitatea și relevanța rezultatelor modelului.", + "sideTipP3": "Curățarea elimină caracterele și formatele inutile, făcând Cunoștințele mai curate și mai ușor de analizat.", + "sideTipP4": "O segmentare și curățare adecvată îmbunătățesc performanța modelului, oferind rezultate mai precise și valoroase.", + "previewTitle": "Previzualizare", + "previewTitleButton": "Previzualizare", + "previewButton": "Comutare la format întrebare și răspuns", + "previewSwitchTipStart": "Previzualizarea curentă a segmentului este în format text, comutarea la o previzualizare în format întrebare și răspuns va", + "previewSwitchTipEnd": " consuma jetoane suplimentare", + "characters": "caractere", + "indexSettingTip": "Pentru a modifica metoda de indexare, vă rugăm să mergeți la ", + "retrievalSettingTip": "Pentru a modifica metoda de indexare, vă rugăm să mergeți la ", + "datasetSettingLink": "setările Cunoștinței.", + "webpageUnit": "Pagini", + "websiteSource": "Site-ul web de preprocesare", + "separatorTip": "Un delimitator este caracterul folosit pentru a separa textul. \\n\\n și \\n sunt delimitatori utilizați în mod obișnuit pentru separarea paragrafelor și liniilor. Combinate cu virgule (\\n\\n,\\n), paragrafele vor fi segmentate pe linii atunci când depășesc lungimea maximă a bucății. De asemenea, puteți utiliza delimitatori speciali definiți de dumneavoastră (de exemplu, ***).", + "maxLengthCheck": "Lungimea maximă a bucății trebuie să fie mai mică de {{limit}}", + "notAvailableForQA": "Nu este disponibil pentru Indexul de întrebări și răspunsuri", + "generalTip": "Modul general de fragmentare a textului, bucățile recuperate și rechemate sunt aceleași.", + "previewChunk": "Previzualizare bucată", + "previewChunkTip": "Faceți clic pe butonul \"Previzualizare bucată\" din stânga pentru a încărca previzualizarea", + "fullDoc": "Documentul complet", + "parentChildDelimiterTip": "Un delimitator este caracterul folosit pentru a separa textul. \\n\\n este recomandat pentru împărțirea documentului original în bucăți părinte mari. De asemenea, puteți utiliza delimitatori speciali definiți de dvs.", + "fullDocTip": "Întregul document este folosit ca bucată părinte și preluat direct. Vă rugăm să rețineți că, din motive de performanță, textul care depășește 10000 de jetoane va fi trunchiat automat.", + "switch": "Comutator", + "previewChunkCount": "{{număr}} Bucăți estimate", + "parentChunkForContext": "Părinte-bucată pentru context", + "paragraph": "Paragraf", + "childChunkForRetrieval": "Child-chunk pentru recuperare", + "parentChild": "Părinte-copil", + "parentChildTip": "Când utilizați modul părinte-copil, fragmentul copil este utilizat pentru recuperare, iar fragmentul părinte este utilizat pentru reamintire ca context.", + "highQualityTip": "După terminarea încorporarii în modul Înaltă calitate, revenirea la modul Economic nu este disponibilă.", + "qaSwitchHighQualityTipTitle": "Formatul de întrebări și răspunsuri necesită o metodă de indexare de înaltă calitate", + "paragraphTip": "Acest mod împarte textul în paragrafe pe baza delimitatorilor și a lungimii maxime a bucății, folosind textul împărțit ca bucată părinte pentru recuperare.", + "general": "General", + "notAvailableForParentChild": "Nu este disponibil pentru Indexul părinte-copil", + "qaSwitchHighQualityTipContent": "În prezent, numai metoda de index de înaltă calitate acceptă fragmentarea formatului de întrebări și răspunsuri. Doriți să treceți la modul de înaltă calitate?", + "parentChildChunkDelimiterTip": "Un delimitator este caracterul folosit pentru a separa textul. \\n este recomandat pentru împărțirea bucăților părinte în bucăți copii mici. De asemenea, puteți utiliza delimitatori speciali definiți de dvs.", + "useQALanguage": "Fragmentați folosind formatul Întrebări și răspunsuri în", + "qaTip": "Când utilizați date structurate de întrebări și răspunsuri, puteți crea documente care asociază întrebări cu răspunsuri. Aceste documente sunt indexate pe baza porțiunii de întrebare, permițând sistemului să preia răspunsuri relevante pe baza similitudinii interogărilor." + }, + "stepThree": { + "creationTitle": "🎉 Cunoștință creată", + "creationContent": "Am denumit automat Cunoștința, o puteți modifica în orice moment", + "label": "Numele Cunoștinței", + "additionTitle": "🎉 Document încărcat", + "additionP1": "Documentul a fost încărcat în Cunoștință", + "additionP2": ", îl puteți găsi în lista de documente a Cunoștinței.", + "stop": "Oprește procesarea", + "resume": "Reia procesarea", + "navTo": "Mergi la document", + "sideTipTitle": "Ce urmează", + "sideTipContent": "După ce documentul a terminat indexarea, Cunoștința poate fi integrată în aplicație ca context, puteți găsi setările contextuale în pagina de orchestrare a prompturilor. De asemenea, o puteți crea ca un plugin de indexare ChatGPT independent pentru a o publica.", + "modelTitle": "Sunteți sigur că doriți să opriți încorporarea?", + "modelContent": "Dacă trebuie să reluați procesarea mai târziu, veți continua de unde ați rămas.", + "modelButtonConfirm": "Confirmă", + "modelButtonCancel": "Anulează" + }, + "firecrawl": { + "configFirecrawl": "Configurați 🔥Firecrawl", + "getApiKeyLinkText": "Obțineți cheia API de la firecrawl.dev", + "apiKeyPlaceholder": "Cheie API de la firecrawl.dev" + }, + "jinaReader": { + "configJinaReader": "Configurați Jina Reader", + "apiKeyPlaceholder": "Cheie API de la jina.ai", + "getApiKeyLinkText": "Obțineți cheia API gratuită la jina.ai" + }, + "otherDataSource": { + "title": "Conectați-vă la alte surse de date?", + "description": "În prezent, baza de cunoștințe a Dify are doar surse de date limitate. Contribuția cu o sursă de date la baza de cunoștințe Dify este o modalitate fantastică de a ajuta la îmbunătățirea flexibilității și puterii platformei pentru toți utilizatorii. Ghidul nostru de contribuție vă ajută să începeți. Vă rugăm să faceți clic pe linkul de mai jos pentru a afla mai multe.", + "learnMore": "Află mai multe" + }, + "watercrawl": { + "getApiKeyLinkText": "Obțineți cheia dvs. API de la watercrawl.dev", + "apiKeyPlaceholder": "Cheia API de la watercrawl.dev", + "configWatercrawl": "Configurează Watercrawl" + } +} diff --git a/web/i18n/ro-RO/dataset-creation.ts b/web/i18n/ro-RO/dataset-creation.ts deleted file mode 100644 index 5723adf6db..0000000000 --- a/web/i18n/ro-RO/dataset-creation.ts +++ /dev/null @@ -1,217 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: 'Cunoaștere', - }, - one: 'Alegeți sursa de date', - two: 'Prelucrarea și curățarea textului', - three: 'Executați și finalizați', - }, - error: { - unavailable: 'Această Cunoștință nu este disponibilă', - }, - stepOne: { - filePreview: 'Previzualizare fișier', - pagePreview: 'Previzualizare pagină', - dataSourceType: { - file: 'Importați din fișier text', - notion: 'Sincronizați din Notion', - web: 'Sincronizați din site web', - }, - uploader: { - title: 'Încărcați fișier text', - button: 'Trageți și plasați fișiere sau foldere sau', - buttonSingleFile: 'Trageți și plasați un fișier sau', - browse: 'Răsfoire', - tip: 'Acceptă {{supportTypes}}. Maxim {{size}}MB fiecare.', - validation: { - typeError: 'Tipul de fișier nu este acceptat', - size: 'Fișierul este prea mare. Maximul este de {{size}}MB', - count: 'Nu se acceptă mai multe fișiere', - filesNumber: 'Ați atins limita de încărcare în lot de {{filesNumber}} fișiere.', - }, - cancel: 'Anulează', - change: 'Schimbă', - failed: 'Încărcarea a eșuat', - }, - notionSyncTitle: 'Notion nu este conectat', - notionSyncTip: 'Pentru a sincroniza cu Notion, trebuie mai întâi să se stabilească o conexiune la Notion.', - connect: 'Mergi la conectare', - button: 'următorul', - emptyDatasetCreation: 'Vreau să creez o Cunoștință goală', - modal: { - title: 'Creați o Cunoștință goală', - tip: 'O Cunoștință goală nu va conține niciun document, iar dvs. puteți încărca documente în orice moment.', - input: 'Numele Cunoștinței', - placeholder: 'Vă rugăm să introduceți', - nameNotEmpty: 'Numele nu poate fi gol', - nameLengthInvalid: 'Numele trebuie să fie între 1 și 40 de caractere', - cancelButton: 'Anulează', - confirmButton: 'Creează', - failed: 'Crearea a eșuat', - }, - website: { - crawlSubPage: 'Accesarea cu crawlere a subpaginilor', - limit: 'Limită', - selectAll: 'Selectează tot', - configure: 'Configura', - preview: 'Previzualizare', - run: 'Alerga', - maxDepth: 'Adâncime maximă', - firecrawlDoc: 'Documente Firecrawl', - options: 'Opțiuni', - exceptionErrorTitle: 'A apărut o excepție în timpul rulării lucrării Firecrawl:', - firecrawlTitle: 'Extrageți conținut web cu 🔥Firecrawl', - unknownError: 'Eroare necunoscută', - scrapTimeInfo: 'Pagini răzuite {{total}} în total în {{timp}}s', - excludePaths: 'Excluderea căilor', - resetAll: 'Resetați toate', - extractOnlyMainContent: 'Extrageți doar conținutul principal (fără anteturi, navigări, subsoluri etc.)', - fireCrawlNotConfiguredDescription: 'Configurați Firecrawl cu cheia API pentru a-l utiliza.', - fireCrawlNotConfigured: 'Firecrawl nu este configurat', - includeOnlyPaths: 'Includeți numai căi', - totalPageScraped: 'Total pagini răzuite:', - maxDepthTooltip: 'Adâncimea maximă de accesat cu crawlere în raport cu adresa URL introdusă. Adâncimea 0 doar răzuiește pagina URL-ului introdus, adâncimea 1 răzuiește url-ul și tot ceea ce după ce a introdusURL + un / și așa mai departe.', - jinaReaderDocLink: 'https://jina.ai/reader', - chooseProvider: 'Selectați un furnizor', - jinaReaderNotConfiguredDescription: 'Configurați Jina Reader introducând cheia API gratuită pentru acces.', - useSitemap: 'Utilizarea hărții site-ului', - jinaReaderDoc: 'Aflați mai multe despre Jina Reader', - jinaReaderTitle: 'Convertiți întregul site în Markdown', - jinaReaderNotConfigured: 'Jina Reader nu este configurat', - useSitemapTooltip: 'Urmați harta site-ului pentru a accesa cu crawlere site-ul. Dacă nu, Jina Reader va accesa cu crawlere iterativ în funcție de relevanța paginii, producând mai puține pagini, dar de calitate superioară.', - waterCrawlNotConfigured: 'Watercrawl nu este configurat', - watercrawlTitle: 'Extrageți conținut web cu Watercrawl', - configureJinaReader: 'Configurează Jina Reader', - waterCrawlNotConfiguredDescription: 'Configurează Watercrawl cu cheia API pentru a-l folosi.', - configureFirecrawl: 'Configurează Firecrawl', - watercrawlDoc: 'Documentele Watercrawl', - configureWatercrawl: 'Configurează Watercrawl', - running: 'Rulează', - }, - cancel: 'Anula', - }, - stepTwo: { - segmentation: 'Setări de segmentare', - auto: 'Automat', - autoDescription: 'Setează automat regulile de segmentare și prelucrare. Utilizatorilor necunoscuți li se recomandă să selecteze această opțiune.', - custom: 'Personalizat', - customDescription: 'Personalizați regulile de segmentare, lungimea segmentelor și regulile de prelucrare, etc.', - separator: 'Identificator de segment', - separatorPlaceholder: 'De exemplu, linie nouă (\\\\n) sau separator special (cum ar fi "***")', - maxLength: 'Lungimea maximă a segmentului', - overlap: 'Suprapunerea segmentelor', - overlapTip: 'Setarea suprapunerii segmentelor poate menține relevanța semantică între ele, îmbunătățind efectul de recuperare. Se recomandă să setați 10%-25% din dimensiunea maximă a segmentului.', - overlapCheck: 'suprapunerea segmentului nu ar trebui să fie mai mare decât lungimea maximă a segmentului', - rules: 'Reguli de prelucrare a textului', - removeExtraSpaces: 'Înlocuiește spațiile consecutive, liniile noi și taburile', - removeUrlEmails: 'Șterge toate adresele URL și e-mailurile', - removeStopwords: 'Eliminați cuvintele de umplere, cum ar fi "a", "an", "the"', - preview: 'Confirmă și previzualizează', - reset: 'Resetează', - indexMode: 'Mod de indexare', - qualified: 'Calitate ridicată', - recommend: 'Recomandă', - qualifiedTip: 'Apelează interfața de încorporare a sistemului implicit pentru a procesa și a oferi o precizie mai mare atunci când utilizatorii interoghează.', - warning: 'Vă rugăm să setați mai întâi cheia API a furnizorului de modele.', - click: 'Mergi la setări', - economical: 'Economic', - economicalTip: 'Utilizați motoare de vectori offline, indexuri de cuvinte cheie etc. pentru a reduce precizia fără a cheltui jetoane', - QATitle: 'Segmentarea în format Întrebare și Răspuns', - QATip: 'Activarea acestei opțiuni va consuma mai multe jetoane', - QALanguage: 'Segmentează folosind', - estimateCost: 'Estimare', - estimateSegment: 'Segmente estimate', - segmentCount: 'segmente', - calculating: 'Se calculează...', - fileSource: 'Prelucrează documente', - notionSource: 'Prelucrează pagini', - other: 'și alte ', - fileUnit: ' fișiere', - notionUnit: ' pagini', - previousStep: 'Pasul anterior', - nextStep: 'Salvează și Procesează', - save: 'Salvează și Procesează', - cancel: 'Anulează', - sideTipTitle: 'De ce segmentare și prelucrare?', - sideTipP1: 'Atunci când se prelucrează date text, segmentarea și curățarea sunt două etape importante de pre-procesare.', - sideTipP2: 'Segmentarea împarte textul lung în paragrafe, astfel încât modelele să poată înțelege mai bine. Acest lucru îmbunătățește calitatea și relevanța rezultatelor modelului.', - sideTipP3: 'Curățarea elimină caracterele și formatele inutile, făcând Cunoștințele mai curate și mai ușor de analizat.', - sideTipP4: 'O segmentare și curățare adecvată îmbunătățesc performanța modelului, oferind rezultate mai precise și valoroase.', - previewTitle: 'Previzualizare', - previewTitleButton: 'Previzualizare', - previewButton: 'Comutare la format întrebare și răspuns', - previewSwitchTipStart: 'Previzualizarea curentă a segmentului este în format text, comutarea la o previzualizare în format întrebare și răspuns va', - previewSwitchTipEnd: ' consuma jetoane suplimentare', - characters: 'caractere', - indexSettingTip: 'Pentru a modifica metoda de indexare, vă rugăm să mergeți la ', - retrievalSettingTip: 'Pentru a modifica metoda de indexare, vă rugăm să mergeți la ', - datasetSettingLink: 'setările Cunoștinței.', - webpageUnit: 'Pagini', - websiteSource: 'Site-ul web de preprocesare', - separatorTip: 'Un delimitator este caracterul folosit pentru a separa textul. \\n\\n și \\n sunt delimitatori utilizați în mod obișnuit pentru separarea paragrafelor și liniilor. Combinate cu virgule (\\n\\n,\\n), paragrafele vor fi segmentate pe linii atunci când depășesc lungimea maximă a bucății. De asemenea, puteți utiliza delimitatori speciali definiți de dumneavoastră (de exemplu, ***).', - maxLengthCheck: 'Lungimea maximă a bucății trebuie să fie mai mică de {{limit}}', - notAvailableForQA: 'Nu este disponibil pentru Indexul de întrebări și răspunsuri', - generalTip: 'Modul general de fragmentare a textului, bucățile recuperate și rechemate sunt aceleași.', - previewChunk: 'Previzualizare bucată', - previewChunkTip: 'Faceți clic pe butonul "Previzualizare bucată" din stânga pentru a încărca previzualizarea', - fullDoc: 'Documentul complet', - parentChildDelimiterTip: 'Un delimitator este caracterul folosit pentru a separa textul. \\n\\n este recomandat pentru împărțirea documentului original în bucăți părinte mari. De asemenea, puteți utiliza delimitatori speciali definiți de dvs.', - fullDocTip: 'Întregul document este folosit ca bucată părinte și preluat direct. Vă rugăm să rețineți că, din motive de performanță, textul care depășește 10000 de jetoane va fi trunchiat automat.', - switch: 'Comutator', - previewChunkCount: '{{număr}} Bucăți estimate', - parentChunkForContext: 'Părinte-bucată pentru context', - paragraph: 'Paragraf', - childChunkForRetrieval: 'Child-chunk pentru recuperare', - parentChild: 'Părinte-copil', - parentChildTip: 'Când utilizați modul părinte-copil, fragmentul copil este utilizat pentru recuperare, iar fragmentul părinte este utilizat pentru reamintire ca context.', - highQualityTip: 'După terminarea încorporarii în modul Înaltă calitate, revenirea la modul Economic nu este disponibilă.', - qaSwitchHighQualityTipTitle: 'Formatul de întrebări și răspunsuri necesită o metodă de indexare de înaltă calitate', - paragraphTip: 'Acest mod împarte textul în paragrafe pe baza delimitatorilor și a lungimii maxime a bucății, folosind textul împărțit ca bucată părinte pentru recuperare.', - general: 'General', - notAvailableForParentChild: 'Nu este disponibil pentru Indexul părinte-copil', - qaSwitchHighQualityTipContent: 'În prezent, numai metoda de index de înaltă calitate acceptă fragmentarea formatului de întrebări și răspunsuri. Doriți să treceți la modul de înaltă calitate?', - parentChildChunkDelimiterTip: 'Un delimitator este caracterul folosit pentru a separa textul. \\n este recomandat pentru împărțirea bucăților părinte în bucăți copii mici. De asemenea, puteți utiliza delimitatori speciali definiți de dvs.', - useQALanguage: 'Fragmentați folosind formatul Întrebări și răspunsuri în', - qaTip: 'Când utilizați date structurate de întrebări și răspunsuri, puteți crea documente care asociază întrebări cu răspunsuri. Aceste documente sunt indexate pe baza porțiunii de întrebare, permițând sistemului să preia răspunsuri relevante pe baza similitudinii interogărilor.', - }, - stepThree: { - creationTitle: '🎉 Cunoștință creată', - creationContent: 'Am denumit automat Cunoștința, o puteți modifica în orice moment', - label: 'Numele Cunoștinței', - additionTitle: '🎉 Document încărcat', - additionP1: 'Documentul a fost încărcat în Cunoștință', - additionP2: ', îl puteți găsi în lista de documente a Cunoștinței.', - stop: 'Oprește procesarea', - resume: 'Reia procesarea', - navTo: 'Mergi la document', - sideTipTitle: 'Ce urmează', - sideTipContent: 'După ce documentul a terminat indexarea, Cunoștința poate fi integrată în aplicație ca context, puteți găsi setările contextuale în pagina de orchestrare a prompturilor. De asemenea, o puteți crea ca un plugin de indexare ChatGPT independent pentru a o publica.', - modelTitle: 'Sunteți sigur că doriți să opriți încorporarea?', - modelContent: 'Dacă trebuie să reluați procesarea mai târziu, veți continua de unde ați rămas.', - modelButtonConfirm: 'Confirmă', - modelButtonCancel: 'Anulează', - }, - firecrawl: { - configFirecrawl: 'Configurați 🔥Firecrawl', - getApiKeyLinkText: 'Obțineți cheia API de la firecrawl.dev', - apiKeyPlaceholder: 'Cheie API de la firecrawl.dev', - }, - jinaReader: { - configJinaReader: 'Configurați Jina Reader', - apiKeyPlaceholder: 'Cheie API de la jina.ai', - getApiKeyLinkText: 'Obțineți cheia API gratuită la jina.ai', - }, - otherDataSource: { - title: 'Conectați-vă la alte surse de date?', - description: 'În prezent, baza de cunoștințe a Dify are doar surse de date limitate. Contribuția cu o sursă de date la baza de cunoștințe Dify este o modalitate fantastică de a ajuta la îmbunătățirea flexibilității și puterii platformei pentru toți utilizatorii. Ghidul nostru de contribuție vă ajută să începeți. Vă rugăm să faceți clic pe linkul de mai jos pentru a afla mai multe.', - learnMore: 'Află mai multe', - }, - watercrawl: { - getApiKeyLinkText: 'Obțineți cheia dvs. API de la watercrawl.dev', - apiKeyPlaceholder: 'Cheia API de la watercrawl.dev', - configWatercrawl: 'Configurează Watercrawl', - }, -} - -export default translation diff --git a/web/i18n/ro-RO/dataset-documents.json b/web/i18n/ro-RO/dataset-documents.json new file mode 100644 index 0000000000..a6d63463fb --- /dev/null +++ b/web/i18n/ro-RO/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "Documente", + "desc": "Toate fișierele din Cunoștințe sunt afișate aici, iar întreaga Cunoaștere poate fi legată de citări Dify sau indexată prin intermediul pluginului Chat.", + "addFile": "adaugă fișier", + "addPages": "Adaugă pagini", + "table": { + "header": { + "fileName": "NUMELE FIȘIERULUI", + "words": "CUVINTE", + "hitCount": "NUMĂR DE RECUPERĂRI", + "uploadTime": "TIMP DE ÎNCĂRCARE", + "status": "STARE", + "action": "ACȚIUNE", + "chunkingMode": "MOD DE FRAGMENTARE" + }, + "name": "Nume", + "rename": "Redenumire" + }, + "action": { + "uploadFile": "Încarcă un fișier nou", + "settings": "Setări de segment", + "addButton": "Adaugă segment", + "add": "Adaugă un segment", + "batchAdd": "Adăugare în lot", + "archive": "Arhivează", + "unarchive": "Dezarhivează", + "delete": "Șterge", + "enableWarning": "Fișierul arhivat nu poate fi activat", + "sync": "Sincronizează", + "pause": "Pauză", + "resume": "Reia" + }, + "index": { + "enable": "Activează", + "disable": "Dezactivează", + "all": "Toate", + "enableTip": "Fișierul poate fi indexat", + "disableTip": "Fișierul nu poate fi indexat" + }, + "status": { + "queuing": "În coadă", + "indexing": "Indexare", + "paused": "Întrerupt", + "error": "Eroare", + "available": "Disponibil", + "enabled": "Activat", + "disabled": "Dezactivat", + "archived": "Arhivat" + }, + "empty": { + "title": "Nu există încă documentație", + "upload": { + "tip": "Puteți încărca fișiere, sincroniza de pe site-ul web sau din aplicații web precum Notion, GitHub etc." + }, + "sync": { + "tip": "Dify va descărca periodic fișiere din Notion și va finaliza procesarea." + } + }, + "delete": { + "title": "Sigur doriți să ștergeți?", + "content": "Dacă trebuie să reluați procesarea mai târziu, veți continua de unde ați rămas" + }, + "batchModal": { + "title": "Adăugare în lot a segmentelor", + "csvUploadTitle": "Trage și plasează fișierul tău CSV aici sau ", + "browse": "răsfoiește", + "tip": "Fișierul CSV trebuie să respecte următoarea structură:", + "question": "întrebare", + "answer": "răspuns", + "contentTitle": "conținut segment", + "content": "conținut", + "template": "Descărcați șablonul aici", + "cancel": "Anulează", + "run": "Rulează Lot", + "runError": "Eșec la rularea lotului", + "processing": "În procesare lot", + "completed": "Import finalizat", + "error": "Eroare la import", + "ok": "OK" + }, + "addUrl": "Adăugați adresa URL", + "learnMore": "Află mai multe", + "sort": { + "uploadTime": "Timp de încărcare", + "hitCount": "Număr de recuperări" + } + }, + "metadata": { + "title": "Metadate", + "desc": "Etichetarea metadatelor pentru documente permite accesarea rapidă a acestora de către IA și expune sursa referințelor pentru utilizatori.", + "dateTimeFormat": "D MMMM YYYY hh:mm A", + "docTypeSelectTitle": "Vă rugăm să selectați un tip de document", + "docTypeChangeTitle": "Schimbați tipul de document", + "docTypeSelectWarning": "Dacă tipul de document este schimbat, metadatele completate acum nu vor mai fi păstrate", + "firstMetaAction": "Să începem", + "placeholder": { + "add": "Adaugă ", + "select": "Selectează " + }, + "source": { + "upload_file": "Încarcă fișier", + "notion": "Sincronizează din Notion", + "github": "Sincronizează din Github", + "local_file": "Fișier local", + "website_crawl": "Accesarea cu crawlere a site-ului web", + "online_document": "Online Document" + }, + "type": { + "book": "Carte", + "webPage": "Pagină web", + "paper": "Lucrare", + "socialMediaPost": "Postare pe rețele sociale", + "personalDocument": "Document personal", + "businessDocument": "Document de afaceri", + "IMChat": "Conversație IM", + "wikipediaEntry": "Intrare Wikipedia", + "notion": "Sincronizează din Notion", + "github": "Sincronizează din Github", + "technicalParameters": "Parametri tehnici" + }, + "field": { + "processRule": { + "processDoc": "Procesează documentul", + "segmentRule": "Regulă de segment", + "segmentLength": "Lungimea segmentelor", + "processClean": "Curățare text procesare" + }, + "book": { + "title": "Titlu", + "language": "Limbă", + "author": "Autor", + "publisher": "Editor", + "publicationDate": "Data publicării", + "ISBN": "ISBN", + "category": "Categorie" + }, + "webPage": { + "title": "Titlu", + "url": "URL", + "language": "Limbă", + "authorPublisher": "Autor/Editor", + "publishDate": "Data publicării", + "topicKeywords": "Subiecte/Cuvinte cheie", + "description": "Descriere" + }, + "paper": { + "title": "Titlu", + "language": "Limbă", + "author": "Autor", + "publishDate": "Data publicării", + "journalConferenceName": "Nume jurnal/conferință", + "volumeIssuePage": "Volum/Număr/Pagină", + "DOI": "DOI", + "topicsKeywords": "Subiecte/Cuvinte cheie", + "abstract": "Rezumat" + }, + "socialMediaPost": { + "platform": "Platformă", + "authorUsername": "Autor/Nume de utilizator", + "publishDate": "Data publicării", + "postURL": "URL postare", + "topicsTags": "Subiecte/Etichete" + }, + "personalDocument": { + "title": "Titlu", + "author": "Autor", + "creationDate": "Data creării", + "lastModifiedDate": "Ultima dată modificat", + "documentType": "Tip document", + "tagsCategory": "Etichete/Categorie" + }, + "businessDocument": { + "title": "Titlu", + "author": "Autor", + "creationDate": "Data creării", + "lastModifiedDate": "Ultima dată modificat", + "documentType": "Tip document", + "departmentTeam": "Departament/Echipă" + }, + "IMChat": { + "chatPlatform": "Platformă de chat", + "chatPartiesGroupName": "Persoane din chat/Nume grup", + "participants": "Participanți", + "startDate": "Data începerii", + "endDate": "Data încheierii", + "topicsKeywords": "Subiecte/Cuvinte cheie", + "fileType": "Tip fișier" + }, + "wikipediaEntry": { + "title": "Titlu", + "language": "Limbă", + "webpageURL": "URL pagină web", + "editorContributor": "Editor/Contributor", + "lastEditDate": "Ultima dată modificat", + "summaryIntroduction": "Rezumat/Introducere" + }, + "notion": { + "title": "Titlu", + "language": "Limbă", + "author": "Autor", + "createdTime": "Dată creare", + "lastModifiedTime": "Ultima dată modificat", + "url": "URL", + "tag": "Etichetă", + "description": "Descriere" + }, + "github": { + "repoName": "Nume depozit", + "repoDesc": "Descriere depozit", + "repoOwner": "Proprietar depozit", + "fileName": "Nume fișier", + "filePath": "Cale fișier", + "programmingLang": "Limbaj de programare", + "url": "URL", + "license": "Licență", + "lastCommitTime": "Ultima dată comitere", + "lastCommitAuthor": "Ultimul autor comitere" + }, + "originInfo": { + "originalFilename": "Nume fișier original", + "originalFileSize": "Dimensiune fișier original", + "uploadDate": "Dată încărcare", + "lastUpdateDate": "Ultima dată actualizare", + "source": "Sursă" + }, + "technicalParameters": { + "segmentSpecification": "Specificație segmente", + "segmentLength": "Lungime segmente", + "avgParagraphLength": "Lungime medie paragraf", + "paragraphs": "Paragrafe", + "hitCount": "Număr de recuperări", + "embeddingTime": "Timp încorporare", + "embeddedSpend": "Cheltuieli încorporare" + } + }, + "languageMap": { + "zh": "Chineză", + "en": "Engleză", + "es": "Spaniolă", + "fr": "Franceză", + "de": "Germană", + "ja": "Japoneză", + "ko": "Coreeană", + "ru": "Rusă", + "ar": "Arabă", + "pt": "Portugheză", + "it": "Italiană", + "nl": "Olandeză", + "pl": "Poloneză", + "sv": "Suedeză", + "tr": "Turcă", + "he": "Ebraică", + "hi": "Hindi", + "da": "Daneză", + "fi": "Finlandeză", + "no": "Norvegiană", + "hu": "Maghiară", + "el": "Greacă", + "cs": "Cehă", + "th": "Tailandeză", + "id": "Indoneziană" + }, + "categoryMap": { + "book": { + "fiction": "Ficțiune", + "biography": "Biografie", + "history": "Istorie", + "science": "Știință", + "technology": "Tehnologie", + "education": "Educație", + "philosophy": "Filozofie", + "religion": "Religie", + "socialSciences": "ȘtiințeSociale", + "art": "Artă", + "travel": "Călătorii", + "health": "Sănătate", + "selfHelp": "AutoAjutorare", + "businessEconomics": "AfaceriEconomie", + "cooking": "Bucătărie", + "childrenYoungAdults": "CopiiTineri", + "comicsGraphicNovels": "ComicsRomaneCgrafice", + "poetry": "Poezie", + "drama": "Dramă", + "other": "Altele" + }, + "personalDoc": { + "notes": "Note", + "blogDraft": "Ciornă blog", + "diary": "Jurnal", + "researchReport": "Raport de cercetare", + "bookExcerpt": "Extras carte", + "schedule": "Program", + "list": "Listă", + "projectOverview": "Prezentare generală proiect", + "photoCollection": "Colecție foto", + "creativeWriting": "Scriere creativă", + "codeSnippet": "Fragment de cod", + "designDraft": "Schiță de design", + "personalResume": "CV personal", + "other": "Altele" + }, + "businessDoc": { + "meetingMinutes": "Proces-verbal ședință", + "researchReport": "Raport de cercetare", + "proposal": "Propunere", + "employeeHandbook": "Manual angajat", + "trainingMaterials": "Materiale de formare", + "requirementsDocument": "Document cerințe", + "designDocument": "Document de design", + "productSpecification": "Specificație produs", + "financialReport": "Raport financiar", + "marketAnalysis": "Analiză piață", + "projectPlan": "Plan de proiect", + "teamStructure": "Structură echipă", + "policiesProcedures": "Politici și proceduri", + "contractsAgreements": "Contracte și acorduri", + "emailCorrespondence": "Corespondență email", + "other": "Altele" + } + } + }, + "embedding": { + "processing": "Procesare încorporare...", + "paused": "Încorporare întreruptă", + "completed": "Încorporare finalizată", + "error": "Eroare la încorporare", + "docName": "Prelucrare document", + "mode": "Regula de segmentare", + "segmentLength": "Lungime segmente", + "textCleaning": "Pre-definiție și curățare text", + "segments": "Paragrafe", + "highQuality": "Mod calitate ridicată", + "economy": "Mod economic", + "estimate": "Consum estimat", + "stop": "Oprește procesarea", + "resume": "Reia procesarea", + "automatic": "Automat", + "custom": "Personalizat", + "previewTip": "Previzualizarea paragrafului va fi disponibilă după finalizarea încorporării", + "hierarchical": "Părinte-copil", + "childMaxTokens": "Copil", + "parentMaxTokens": "Părinte", + "pause": "Pauză", + "waiting": "Așteptând încorporarea..." + }, + "segment": { + "paragraphs": "Paragrafe", + "keywords": "Cuvinte cheie", + "addKeyWord": "Adăugați un cuvânt cheie", + "keywordError": "Lungimea maximă a cuvântului cheie este de 20 de caractere", + "hitCount": "Număr de rezultate", + "vectorHash": "Vector hash: ", + "questionPlaceholder": "adăugați întrebarea aici", + "questionEmpty": "Întrebarea nu poate fi goală", + "answerPlaceholder": "adăugați răspunsul aici", + "answerEmpty": "Răspunsul nu poate fi gol", + "contentPlaceholder": "adăugați conținutul aici", + "contentEmpty": "Conținutul nu poate fi gol", + "newTextSegment": "Nou segment de text", + "newQaSegment": "Nou segment de întrebări și răspunsuri", + "delete": "Ștergeți acest fragment?", + "searchResults_zero": "REZULTAT", + "searchResults_one": "REZULTAT", + "characters_other": "Caractere", + "chunkAdded": "1 bucată adăugată", + "chunks_other": "BUCĂŢI", + "characters_one": "caracter", + "regenerationSuccessTitle": "Regenerare finalizată", + "editedAt": "Editat la", + "dateTimeFormat": "MM/DD/YYYY h:mm", + "addChunk": "Adăugați o bucată", + "chunk": "Bucată", + "chunks_one": "BUCATĂ", + "empty": "Nu s-a găsit nicio bucată", + "expandChunks": "Extindeți bucățile", + "editParentChunk": "Editați bucata părinte", + "regenerationSuccessMessage": "Puteți închide această fereastră.", + "chunkDetail": "Detalii bucăți", + "childChunk": "Bucată de copil", + "edited": "EDITATE", + "childChunks_one": "BUCATĂ COPIL", + "childChunkAdded": "1 bucată de copil adăugată", + "regenerationConfirmTitle": "Doriți să regenerați bucățile copil?", + "newChildChunk": "Bucată copil nouă", + "editChildChunk": "Editați fragmentul copil", + "childChunks_other": "BUCĂȚI COPIL", + "newChunk": "Bucată nouă", + "clearFilter": "Ștergeți filtrul", + "editChunk": "Editați bucata", + "addAnother": "Adăugați altul", + "parentChunks_other": "BUCĂȚI PĂRINTE", + "collapseChunks": "Restrângerea bucăților", + "parentChunk": "Părinte-bucată", + "regeneratingMessage": "Acest lucru poate dura un moment, vă rugăm să așteptați...", + "parentChunks_one": "FRAGMENT PĂRINTE", + "regenerationConfirmMessage": "Regenerarea bucăților copii va suprascrie bucățile copil curente, inclusiv bucățile editate și bucățile nou adăugate. Regenerarea nu poate fi anulată.", + "regeneratingTitle": "Regenerarea bucăților secundare", + "addChildChunk": "Adăugați o bucată copil", + "searchResults_other": "REZULTATELE", + "keywordDuplicate": "Cuvântul cheie există deja", + "keywordEmpty": "Cuvântul cheie nu poate fi gol", + "allFilesUploaded": "Toate fișierele trebuie încărcate înainte de salvare" + } +} diff --git a/web/i18n/ro-RO/dataset-documents.ts b/web/i18n/ro-RO/dataset-documents.ts deleted file mode 100644 index 42618061ee..0000000000 --- a/web/i18n/ro-RO/dataset-documents.ts +++ /dev/null @@ -1,408 +0,0 @@ -const translation = { - list: { - title: 'Documente', - desc: 'Toate fișierele din Cunoștințe sunt afișate aici, iar întreaga Cunoaștere poate fi legată de citări Dify sau indexată prin intermediul pluginului Chat.', - addFile: 'adaugă fișier', - addPages: 'Adaugă pagini', - table: { - header: { - fileName: 'NUMELE FIȘIERULUI', - words: 'CUVINTE', - hitCount: 'NUMĂR DE RECUPERĂRI', - uploadTime: 'TIMP DE ÎNCĂRCARE', - status: 'STARE', - action: 'ACȚIUNE', - chunkingMode: 'MOD DE FRAGMENTARE', - }, - name: 'Nume', - rename: 'Redenumire', - }, - action: { - uploadFile: 'Încarcă un fișier nou', - settings: 'Setări de segment', - addButton: 'Adaugă segment', - add: 'Adaugă un segment', - batchAdd: 'Adăugare în lot', - archive: 'Arhivează', - unarchive: 'Dezarhivează', - delete: 'Șterge', - enableWarning: 'Fișierul arhivat nu poate fi activat', - sync: 'Sincronizează', - pause: 'Pauză', - resume: 'Reia', - }, - index: { - enable: 'Activează', - disable: 'Dezactivează', - all: 'Toate', - enableTip: 'Fișierul poate fi indexat', - disableTip: 'Fișierul nu poate fi indexat', - }, - status: { - queuing: 'În coadă', - indexing: 'Indexare', - paused: 'Întrerupt', - error: 'Eroare', - available: 'Disponibil', - enabled: 'Activat', - disabled: 'Dezactivat', - archived: 'Arhivat', - }, - empty: { - title: 'Nu există încă documentație', - upload: { - tip: 'Puteți încărca fișiere, sincroniza de pe site-ul web sau din aplicații web precum Notion, GitHub etc.', - }, - sync: { - tip: 'Dify va descărca periodic fișiere din Notion și va finaliza procesarea.', - }, - }, - delete: { - title: 'Sigur doriți să ștergeți?', - content: 'Dacă trebuie să reluați procesarea mai târziu, veți continua de unde ați rămas', - }, - batchModal: { - title: 'Adăugare în lot a segmentelor', - csvUploadTitle: 'Trage și plasează fișierul tău CSV aici sau ', - browse: 'răsfoiește', - tip: 'Fișierul CSV trebuie să respecte următoarea structură:', - question: 'întrebare', - answer: 'răspuns', - contentTitle: 'conținut segment', - content: 'conținut', - template: 'Descărcați șablonul aici', - cancel: 'Anulează', - run: 'Rulează Lot', - runError: 'Eșec la rularea lotului', - processing: 'În procesare lot', - completed: 'Import finalizat', - error: 'Eroare la import', - ok: 'OK', - }, - addUrl: 'Adăugați adresa URL', - learnMore: 'Află mai multe', - sort: { - uploadTime: 'Timp de încărcare', - hitCount: 'Număr de recuperări', - }, - }, - metadata: { - title: 'Metadate', - desc: 'Etichetarea metadatelor pentru documente permite accesarea rapidă a acestora de către IA și expune sursa referințelor pentru utilizatori.', - dateTimeFormat: 'D MMMM YYYY hh:mm A', - docTypeSelectTitle: 'Vă rugăm să selectați un tip de document', - docTypeChangeTitle: 'Schimbați tipul de document', - docTypeSelectWarning: - 'Dacă tipul de document este schimbat, metadatele completate acum nu vor mai fi păstrate', - firstMetaAction: 'Să începem', - placeholder: { - add: 'Adaugă ', - select: 'Selectează ', - }, - source: { - upload_file: 'Încarcă fișier', - notion: 'Sincronizează din Notion', - github: 'Sincronizează din Github', - local_file: 'Fișier local', - website_crawl: 'Accesarea cu crawlere a site-ului web', - online_document: 'Online Document', - }, - type: { - book: 'Carte', - webPage: 'Pagină web', - paper: 'Lucrare', - socialMediaPost: 'Postare pe rețele sociale', - personalDocument: 'Document personal', - businessDocument: 'Document de afaceri', - IMChat: 'Conversație IM', - wikipediaEntry: 'Intrare Wikipedia', - notion: 'Sincronizează din Notion', - github: 'Sincronizează din Github', - technicalParameters: 'Parametri tehnici', - }, - field: { - processRule: { - processDoc: 'Procesează documentul', - segmentRule: 'Regulă de segment', - segmentLength: 'Lungimea segmentelor', - processClean: 'Curățare text procesare', - }, - book: { - title: 'Titlu', - language: 'Limbă', - author: 'Autor', - publisher: 'Editor', - publicationDate: 'Data publicării', - ISBN: 'ISBN', - category: 'Categorie', - }, - webPage: { - title: 'Titlu', - url: 'URL', - language: 'Limbă', - authorPublisher: 'Autor/Editor', - publishDate: 'Data publicării', - topicKeywords: 'Subiecte/Cuvinte cheie', - description: 'Descriere', - }, - paper: { - title: 'Titlu', - language: 'Limbă', - author: 'Autor', - publishDate: 'Data publicării', - journalConferenceName: 'Nume jurnal/conferință', - volumeIssuePage: 'Volum/Număr/Pagină', - DOI: 'DOI', - topicsKeywords: 'Subiecte/Cuvinte cheie', - abstract: 'Rezumat', - }, - socialMediaPost: { - platform: 'Platformă', - authorUsername: 'Autor/Nume de utilizator', - publishDate: 'Data publicării', - postURL: 'URL postare', - topicsTags: 'Subiecte/Etichete', - }, - personalDocument: { - title: 'Titlu', - author: 'Autor', - creationDate: 'Data creării', - lastModifiedDate: 'Ultima dată modificat', - documentType: 'Tip document', - tagsCategory: 'Etichete/Categorie', - }, - businessDocument: { - title: 'Titlu', - author: 'Autor', - creationDate: 'Data creării', - lastModifiedDate: 'Ultima dată modificat', - documentType: 'Tip document', - departmentTeam: 'Departament/Echipă', - }, - IMChat: { - chatPlatform: 'Platformă de chat', - chatPartiesGroupName: 'Persoane din chat/Nume grup', - participants: 'Participanți', - startDate: 'Data începerii', - endDate: 'Data încheierii', - topicsKeywords: 'Subiecte/Cuvinte cheie', - fileType: 'Tip fișier', - }, - wikipediaEntry: { - title: 'Titlu', - language: 'Limbă', - webpageURL: 'URL pagină web', - editorContributor: 'Editor/Contributor', - lastEditDate: 'Ultima dată modificat', - summaryIntroduction: 'Rezumat/Introducere', - }, - notion: { - title: 'Titlu', - language: 'Limbă', - author: 'Autor', - createdTime: 'Dată creare', - lastModifiedTime: 'Ultima dată modificat', - url: 'URL', - tag: 'Etichetă', - description: 'Descriere', - }, - github: { - repoName: 'Nume depozit', - repoDesc: 'Descriere depozit', - repoOwner: 'Proprietar depozit', - fileName: 'Nume fișier', - filePath: 'Cale fișier', - programmingLang: 'Limbaj de programare', - url: 'URL', - license: 'Licență', - lastCommitTime: 'Ultima dată comitere', - lastCommitAuthor: 'Ultimul autor comitere', - }, - originInfo: { - originalFilename: 'Nume fișier original', - originalFileSize: 'Dimensiune fișier original', - uploadDate: 'Dată încărcare', - lastUpdateDate: 'Ultima dată actualizare', - source: 'Sursă', - }, - technicalParameters: { - segmentSpecification: 'Specificație segmente', - segmentLength: 'Lungime segmente', - avgParagraphLength: 'Lungime medie paragraf', - paragraphs: 'Paragrafe', - hitCount: 'Număr de recuperări', - embeddingTime: 'Timp încorporare', - embeddedSpend: 'Cheltuieli încorporare', - }, - }, - languageMap: { - zh: 'Chineză', - en: 'Engleză', - es: 'Spaniolă', - fr: 'Franceză', - de: 'Germană', - ja: 'Japoneză', - ko: 'Coreeană', - ru: 'Rusă', - ar: 'Arabă', - pt: 'Portugheză', - it: 'Italiană', - nl: 'Olandeză', - pl: 'Poloneză', - sv: 'Suedeză', - tr: 'Turcă', - he: 'Ebraică', - hi: 'Hindi', - da: 'Daneză', - fi: 'Finlandeză', - no: 'Norvegiană', - hu: 'Maghiară', - el: 'Greacă', - cs: 'Cehă', - th: 'Tailandeză', - id: 'Indoneziană', - }, - categoryMap: { - book: { - fiction: 'Ficțiune', - biography: 'Biografie', - history: 'Istorie', - science: 'Știință', - technology: 'Tehnologie', - education: 'Educație', - philosophy: 'Filozofie', - religion: 'Religie', - socialSciences: 'ȘtiințeSociale', - art: 'Artă', - travel: 'Călătorii', - health: 'Sănătate', - selfHelp: 'AutoAjutorare', - businessEconomics: 'AfaceriEconomie', - cooking: 'Bucătărie', - childrenYoungAdults: 'CopiiTineri', - comicsGraphicNovels: 'ComicsRomaneCgrafice', - poetry: 'Poezie', - drama: 'Dramă', - other: 'Altele', - }, - personalDoc: { - notes: 'Note', - blogDraft: 'Ciornă blog', - diary: 'Jurnal', - researchReport: 'Raport de cercetare', - bookExcerpt: 'Extras carte', - schedule: 'Program', - list: 'Listă', - projectOverview: 'Prezentare generală proiect', - photoCollection: 'Colecție foto', - creativeWriting: 'Scriere creativă', - codeSnippet: 'Fragment de cod', - designDraft: 'Schiță de design', - personalResume: 'CV personal', - other: 'Altele', - }, - businessDoc: { - meetingMinutes: 'Proces-verbal ședință', - researchReport: 'Raport de cercetare', - proposal: 'Propunere', - employeeHandbook: 'Manual angajat', - trainingMaterials: 'Materiale de formare', - requirementsDocument: 'Document cerințe', - designDocument: 'Document de design', - productSpecification: 'Specificație produs', - financialReport: 'Raport financiar', - marketAnalysis: 'Analiză piață', - projectPlan: 'Plan de proiect', - teamStructure: 'Structură echipă', - policiesProcedures: 'Politici și proceduri', - contractsAgreements: 'Contracte și acorduri', - emailCorrespondence: 'Corespondență email', - other: 'Altele', - }, - }, - }, - embedding: { - processing: 'Procesare încorporare...', - paused: 'Încorporare întreruptă', - completed: 'Încorporare finalizată', - error: 'Eroare la încorporare', - docName: 'Prelucrare document', - mode: 'Regula de segmentare', - segmentLength: 'Lungime segmente', - textCleaning: 'Pre-definiție și curățare text', - segments: 'Paragrafe', - highQuality: 'Mod calitate ridicată', - economy: 'Mod economic', - estimate: 'Consum estimat', - stop: 'Oprește procesarea', - resume: 'Reia procesarea', - automatic: 'Automat', - custom: 'Personalizat', - previewTip: 'Previzualizarea paragrafului va fi disponibilă după finalizarea încorporării', - hierarchical: 'Părinte-copil', - childMaxTokens: 'Copil', - parentMaxTokens: 'Părinte', - pause: 'Pauză', - waiting: 'Așteptând încorporarea...', - }, - segment: { - paragraphs: 'Paragrafe', - keywords: 'Cuvinte cheie', - addKeyWord: 'Adăugați un cuvânt cheie', - keywordError: 'Lungimea maximă a cuvântului cheie este de 20 de caractere', - hitCount: 'Număr de rezultate', - vectorHash: 'Vector hash: ', - questionPlaceholder: 'adăugați întrebarea aici', - questionEmpty: 'Întrebarea nu poate fi goală', - answerPlaceholder: 'adăugați răspunsul aici', - answerEmpty: 'Răspunsul nu poate fi gol', - contentPlaceholder: 'adăugați conținutul aici', - contentEmpty: 'Conținutul nu poate fi gol', - newTextSegment: 'Nou segment de text', - newQaSegment: 'Nou segment de întrebări și răspunsuri', - delete: 'Ștergeți acest fragment?', - searchResults_zero: 'REZULTAT', - searchResults_one: 'REZULTAT', - characters_other: 'Caractere', - chunkAdded: '1 bucată adăugată', - chunks_other: 'BUCĂŢI', - characters_one: 'caracter', - regenerationSuccessTitle: 'Regenerare finalizată', - editedAt: 'Editat la', - dateTimeFormat: 'MM/DD/YYYY h:mm', - addChunk: 'Adăugați o bucată', - chunk: 'Bucată', - chunks_one: 'BUCATĂ', - empty: 'Nu s-a găsit nicio bucată', - expandChunks: 'Extindeți bucățile', - editParentChunk: 'Editați bucata părinte', - regenerationSuccessMessage: 'Puteți închide această fereastră.', - chunkDetail: 'Detalii bucăți', - childChunk: 'Bucată de copil', - edited: 'EDITATE', - childChunks_one: 'BUCATĂ COPIL', - childChunkAdded: '1 bucată de copil adăugată', - regenerationConfirmTitle: 'Doriți să regenerați bucățile copil?', - newChildChunk: 'Bucată copil nouă', - editChildChunk: 'Editați fragmentul copil', - childChunks_other: 'BUCĂȚI COPIL', - newChunk: 'Bucată nouă', - clearFilter: 'Ștergeți filtrul', - editChunk: 'Editați bucata', - addAnother: 'Adăugați altul', - parentChunks_other: 'BUCĂȚI PĂRINTE', - collapseChunks: 'Restrângerea bucăților', - parentChunk: 'Părinte-bucată', - regeneratingMessage: 'Acest lucru poate dura un moment, vă rugăm să așteptați...', - parentChunks_one: 'FRAGMENT PĂRINTE', - regenerationConfirmMessage: 'Regenerarea bucăților copii va suprascrie bucățile copil curente, inclusiv bucățile editate și bucățile nou adăugate. Regenerarea nu poate fi anulată.', - regeneratingTitle: 'Regenerarea bucăților secundare', - addChildChunk: 'Adăugați o bucată copil', - searchResults_other: 'REZULTATELE', - keywordDuplicate: 'Cuvântul cheie există deja', - keywordEmpty: 'Cuvântul cheie nu poate fi gol', - allFilesUploaded: 'Toate fișierele trebuie încărcate înainte de salvare', - }, -} - -export default translation diff --git a/web/i18n/ro-RO/dataset-hit-testing.json b/web/i18n/ro-RO/dataset-hit-testing.json new file mode 100644 index 0000000000..5b0fba8993 --- /dev/null +++ b/web/i18n/ro-RO/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "Testarea Recuperării", + "desc": "Testați efectul de atingere al Cunoștințelor pe baza textului interogat dat.", + "dateTimeFormat": "DD/MM/YYYY hh:mm A", + "table": { + "header": { + "source": "Sursă", + "time": "Timp", + "queryContent": "Conținutul cererii" + } + }, + "input": { + "title": "Text sursă", + "placeholder": "Vă rugăm să introduceți un text, se recomandă o propoziție declarativă scurtă.", + "countWarning": "Până la 200 de caractere.", + "indexWarning": "Doar Cunoștințe de înaltă calitate.", + "testing": "Testare" + }, + "hit": { + "title": "PARAGRAFE DE RECUPERARE", + "emptyTip": "Rezultatele testării de recuperare vor apărea aici" + }, + "noRecentTip": "Nu există rezultate de interogare recente aici", + "viewChart": "Vizualizați GRAFICUL VECTORIAL", + "settingTitle": "Setare de recuperare", + "viewDetail": "Vezi detalii", + "keyword": "Cuvinte cheie", + "chunkDetail": "Detalii bucăți", + "open": "Deschide", + "hitChunks": "Accesează {{num}} bucăți copil", + "records": "Înregistrări", + "imageUploader": { + "tip": "Încarcă sau plasează imagini (Maxim {{batchCount}}, {{size}}MB fiecare)", + "tooltip": "Încarcă imagini (Max {{batchCount}}, {{size}}MB fiecare)", + "dropZoneTip": "Trage fișierul aici pentru a încărca", + "singleChunkAttachmentLimitTooltip": "Numărul de atașamente într-un singur pachet nu poate depăși {{limit}}" + } +} diff --git a/web/i18n/ro-RO/dataset-hit-testing.ts b/web/i18n/ro-RO/dataset-hit-testing.ts deleted file mode 100644 index fe3a2fc44d..0000000000 --- a/web/i18n/ro-RO/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - title: 'Testarea Recuperării', - desc: 'Testați efectul de atingere al Cunoștințelor pe baza textului interogat dat.', - dateTimeFormat: 'DD/MM/YYYY hh:mm A', - table: { - header: { - source: 'Sursă', - time: 'Timp', - queryContent: 'Conținutul cererii', - }, - }, - input: { - title: 'Text sursă', - placeholder: 'Vă rugăm să introduceți un text, se recomandă o propoziție declarativă scurtă.', - countWarning: 'Până la 200 de caractere.', - indexWarning: 'Doar Cunoștințe de înaltă calitate.', - testing: 'Testare', - }, - hit: { - title: 'PARAGRAFE DE RECUPERARE', - emptyTip: 'Rezultatele testării de recuperare vor apărea aici', - }, - noRecentTip: 'Nu există rezultate de interogare recente aici', - viewChart: 'Vizualizați GRAFICUL VECTORIAL', - settingTitle: 'Setare de recuperare', - viewDetail: 'Vezi detalii', - keyword: 'Cuvinte cheie', - chunkDetail: 'Detalii bucăți', - open: 'Deschide', - hitChunks: 'Accesează {{num}} bucăți copil', - records: 'Înregistrări', - imageUploader: { - tip: 'Încarcă sau plasează imagini (Maxim {{batchCount}}, {{size}}MB fiecare)', - tooltip: 'Încarcă imagini (Max {{batchCount}}, {{size}}MB fiecare)', - dropZoneTip: 'Trage fișierul aici pentru a încărca', - singleChunkAttachmentLimitTooltip: 'Numărul de atașamente într-un singur pachet nu poate depăși {{limit}}', - }, -} - -export default translation diff --git a/web/i18n/ro-RO/dataset-pipeline.json b/web/i18n/ro-RO/dataset-pipeline.json new file mode 100644 index 0000000000..473a241a55 --- /dev/null +++ b/web/i18n/ro-RO/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "createFromScratch": { + "description": "Creați o conductă personalizată de la zero, cu control deplin asupra procesării și structurii datelor.", + "title": "Conductă de cunoștințe goală" + }, + "caution": "Prudență", + "backToKnowledge": "Înapoi la cunoștințe", + "importDSL": "Importul dintr-un fișier DSL", + "createKnowledge": "Creați cunoștințe", + "errorTip": "Nu s-a reușit crearea unei baze de cunoștințe", + "successTip": "Crearea cu succes a unei baze de cunoștințe" + }, + "templates": { + "customized": "Personalizate" + }, + "operations": { + "convert": "Converti", + "preview": "Previzualizare", + "details": "Detalii", + "process": "Proces", + "editInfo": "Editați informațiile", + "backToDataSource": "Înapoi la sursa de date", + "dataSource": "Sursa datelor", + "choose": "Alege", + "exportPipeline": "Export Pipeline", + "useTemplate": "Utilizați această conductă de cunoștințe", + "saveAndProcess": "Salvați și procesați" + }, + "deletePipeline": { + "title": "Sunteți sigur că ștergeți acest șablon de conductă?", + "content": "Ștergerea șablonului de conductă este ireversibilă." + }, + "publishPipeline": { + "success": { + "message": "Fluxul de cunoștințe publicat", + "tip": "Accesați Documente pentru a adăuga sau a gestiona documente." + }, + "error": { + "message": "Nu s-a reușit publicarea canalului de cunoștințe" + } + }, + "publishTemplate": { + "success": { + "learnMore": "Află mai multe", + "tip": "Puteți utiliza acest șablon pe pagina de creare.", + "message": "Șablon de conductă publicat" + }, + "error": { + "message": "Nu s-a reușit publicarea șablonului de conductă" + } + }, + "exportDSL": { + "errorTip": "Nu s-a reușit exportul DSL al conductei", + "successTip": "Exportați cu succes DSL" + }, + "details": { + "structure": "Structură", + "structureTooltip": "Structura de bucăți determină modul în care documentele sunt împărțite și indexate - oferind modurile General, Părinte-Copil și Întrebări și răspunsuri - și este unică pentru fiecare bază de cunoștințe.", + "createdBy": "De {{author}}" + }, + "testRun": { + "steps": { + "dataSource": "Sursa datelor", + "documentProcessing": "Procesarea documentelor" + }, + "dataSource": { + "localFiles": "Fișiere locale" + }, + "notion": { + "docTitle": "Documente Notion", + "title": "Alegeți paginile Notion" + }, + "tooltip": "În modul de testare, este permis importul unui singur document la un moment dat pentru o depanare și o observare mai ușoară.", + "title": "Rulare de testare" + }, + "inputFieldPanel": { + "uniqueInputs": { + "title": "Intrări unice pentru fiecare intrare", + "tooltip": "Intrările unice sunt accesibile numai sursei de date selectate și nodurilor sale din aval. Utilizatorii nu vor trebui să-l completeze atunci când aleg alte surse de date. Numai câmpurile de intrare la care se face referire variabilele sursei de date vor apărea în primul pas (Sursă de date). Toate celelalte câmpuri vor fi afișate în al doilea pas (Procesați documente)." + }, + "globalInputs": { + "tooltip": "Intrările globale sunt partajate între toate nodurile. Utilizatorii vor trebui să le completeze atunci când selectează orice sursă de date. De exemplu, câmpuri precum delimitatorul și lungimea maximă a bucății pot fi aplicate uniform în mai multe surse de date. Numai câmpurile de intrare la care se face referire variabilele Sursă de date apar în primul pas (Sursă de date). Toate celelalte câmpuri apar în al doilea pas (Procesare documente).", + "title": "Intrări globale pentru toate intrările" + }, + "preview": { + "stepOneTitle": "Sursa datelor", + "stepTwoTitle": "Procesați documente" + }, + "error": { + "variableDuplicate": "Numele variabilei există deja. Vă rugăm să alegeți un alt nume." + }, + "title": "Câmpuri de introducere a utilizatorului", + "editInputField": "Editați câmpul de intrare", + "addInputField": "Adăugați câmp de intrare", + "description": "Câmpurile de introducere ale utilizatorului sunt utilizate pentru a defini și colecta variabilele necesare în timpul procesului de execuție a conductei. Utilizatorii pot personaliza tipul de câmp și pot configura flexibil valoarea de intrare pentru a satisface nevoile diferitelor surse de date sau etape de procesare a documentelor." + }, + "addDocuments": { + "steps": { + "processDocuments": "Procesați documente", + "processingDocuments": "Procesarea documentelor", + "chooseDatasource": "Alegeți o sursă de date" + }, + "stepOne": { + "preview": "Previzualizare" + }, + "stepTwo": { + "chunkSettings": "Setări bucăți", + "previewChunks": "Previzualizați bucăți" + }, + "stepThree": { + "learnMore": "Află mai multe" + }, + "characters": "Caractere", + "backToDataSource": "Sursa datelor", + "title": "Adăugarea documentelor", + "selectOnlineDocumentTip": "Procesează până la {{count}} pagini", + "selectOnlineDriveTip": "Procesează până la {{count}} fișiere, maximum {{fileSize}} MB fiecare" + }, + "documentSettings": { + "title": "Setări document" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} pagini" + }, + "onlineDrive": { + "breadcrumbs": { + "allFiles": "Toate fișierele", + "allBuckets": "Toate gălețile de stocare în cloud", + "searchPlaceholder": "Căutați fișiere...", + "searchResult": "Găsește {{searchResultsLength}} articole în folderul \"{{folderName}}\"" + }, + "resetKeywords": "Resetați cuvintele cheie", + "emptyFolder": "Acest folder este gol", + "notSupportedFileType": "Acest tip de fișier nu este acceptat", + "emptySearchResult": "Nu au fost găsite obiecte", + "notConnected": "{{name}} nu este conectat", + "notConnectedTip": "Pentru a sincroniza cu {{name}}, trebuie mai întâi să se stabilească conexiunea cu {{name}}." + }, + "conversion": { + "confirm": { + "title": "Confirmare", + "content": "Această acțiune este permanentă. Nu veți putea reveni la metoda anterioară. Vă rugăm să confirmați pentru a converti." + }, + "warning": "Această acțiune nu poate fi anulată.", + "title": "Conversia în Knowledge Pipeline", + "errorMessage": "Nu s-a reușit să se convertească setul de date într-o conductă", + "successMessage": "Conversia cu succes a setului de date într-o conductă", + "descriptionChunk2": "— o abordare mai deschisă și mai flexibilă, cu acces la plugin-uri de pe piața noastră. Aceasta va aplica noua metodă de procesare tuturor documentelor viitoare.", + "descriptionChunk1": "Acum puteți converti baza de cunoștințe existentă pentru a utiliza Pipeline de cunoștințe pentru procesarea documentelor" + }, + "knowledgePermissions": "Permisiuni", + "knowledgeDescription": "Descrierea cunoștințelor", + "pipelineNameAndIcon": "Numele și pictograma conductei", + "knowledgeNameAndIcon": "Nume și pictogramă de cunoștințe", + "editPipelineInfo": "Editați informațiile despre conductă", + "knowledgeNameAndIconPlaceholder": "Vă rugăm să introduceți numele bazei de cunoștințe", + "knowledgeDescriptionPlaceholder": "Descrieți ce este în această bază de cunoștințe. O descriere detaliată permite AI să acceseze mai precis conținutul setului de date. Dacă este gol, Dify va folosi strategia implicită de accesare. (Opțional)", + "inputField": "Câmp de intrare", + "configurationTip": "Configurează {{pluginName}}" +} diff --git a/web/i18n/ro-RO/dataset-pipeline.ts b/web/i18n/ro-RO/dataset-pipeline.ts deleted file mode 100644 index 3f9fe54c52..0000000000 --- a/web/i18n/ro-RO/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - createFromScratch: { - description: 'Creați o conductă personalizată de la zero, cu control deplin asupra procesării și structurii datelor.', - title: 'Conductă de cunoștințe goală', - }, - caution: 'Prudență', - backToKnowledge: 'Înapoi la cunoștințe', - importDSL: 'Importul dintr-un fișier DSL', - createKnowledge: 'Creați cunoștințe', - errorTip: 'Nu s-a reușit crearea unei baze de cunoștințe', - successTip: 'Crearea cu succes a unei baze de cunoștințe', - }, - templates: { - customized: 'Personalizate', - }, - operations: { - convert: 'Converti', - preview: 'Previzualizare', - details: 'Detalii', - process: 'Proces', - editInfo: 'Editați informațiile', - backToDataSource: 'Înapoi la sursa de date', - dataSource: 'Sursa datelor', - choose: 'Alege', - exportPipeline: 'Export Pipeline', - useTemplate: 'Utilizați această conductă de cunoștințe', - saveAndProcess: 'Salvați și procesați', - }, - deletePipeline: { - title: 'Sunteți sigur că ștergeți acest șablon de conductă?', - content: 'Ștergerea șablonului de conductă este ireversibilă.', - }, - publishPipeline: { - success: { - message: 'Fluxul de cunoștințe publicat', - tip: 'Accesați Documente pentru a adăuga sau a gestiona documente.', - }, - error: { - message: 'Nu s-a reușit publicarea canalului de cunoștințe', - }, - }, - publishTemplate: { - success: { - learnMore: 'Află mai multe', - tip: 'Puteți utiliza acest șablon pe pagina de creare.', - message: 'Șablon de conductă publicat', - }, - error: { - message: 'Nu s-a reușit publicarea șablonului de conductă', - }, - }, - exportDSL: { - errorTip: 'Nu s-a reușit exportul DSL al conductei', - successTip: 'Exportați cu succes DSL', - }, - details: { - structure: 'Structură', - structureTooltip: 'Structura de bucăți determină modul în care documentele sunt împărțite și indexate - oferind modurile General, Părinte-Copil și Întrebări și răspunsuri - și este unică pentru fiecare bază de cunoștințe.', - createdBy: 'De {{author}}', - }, - testRun: { - steps: { - dataSource: 'Sursa datelor', - documentProcessing: 'Procesarea documentelor', - }, - dataSource: { - localFiles: 'Fișiere locale', - }, - notion: { - docTitle: 'Documente Notion', - title: 'Alegeți paginile Notion', - }, - tooltip: 'În modul de testare, este permis importul unui singur document la un moment dat pentru o depanare și o observare mai ușoară.', - title: 'Rulare de testare', - }, - inputFieldPanel: { - uniqueInputs: { - title: 'Intrări unice pentru fiecare intrare', - tooltip: 'Intrările unice sunt accesibile numai sursei de date selectate și nodurilor sale din aval. Utilizatorii nu vor trebui să-l completeze atunci când aleg alte surse de date. Numai câmpurile de intrare la care se face referire variabilele sursei de date vor apărea în primul pas (Sursă de date). Toate celelalte câmpuri vor fi afișate în al doilea pas (Procesați documente).', - }, - globalInputs: { - tooltip: 'Intrările globale sunt partajate între toate nodurile. Utilizatorii vor trebui să le completeze atunci când selectează orice sursă de date. De exemplu, câmpuri precum delimitatorul și lungimea maximă a bucății pot fi aplicate uniform în mai multe surse de date. Numai câmpurile de intrare la care se face referire variabilele Sursă de date apar în primul pas (Sursă de date). Toate celelalte câmpuri apar în al doilea pas (Procesare documente).', - title: 'Intrări globale pentru toate intrările', - }, - preview: { - stepOneTitle: 'Sursa datelor', - stepTwoTitle: 'Procesați documente', - }, - error: { - variableDuplicate: 'Numele variabilei există deja. Vă rugăm să alegeți un alt nume.', - }, - title: 'Câmpuri de introducere a utilizatorului', - editInputField: 'Editați câmpul de intrare', - addInputField: 'Adăugați câmp de intrare', - description: 'Câmpurile de introducere ale utilizatorului sunt utilizate pentru a defini și colecta variabilele necesare în timpul procesului de execuție a conductei. Utilizatorii pot personaliza tipul de câmp și pot configura flexibil valoarea de intrare pentru a satisface nevoile diferitelor surse de date sau etape de procesare a documentelor.', - }, - addDocuments: { - steps: { - processDocuments: 'Procesați documente', - processingDocuments: 'Procesarea documentelor', - chooseDatasource: 'Alegeți o sursă de date', - }, - stepOne: { - preview: 'Previzualizare', - }, - stepTwo: { - chunkSettings: 'Setări bucăți', - previewChunks: 'Previzualizați bucăți', - }, - stepThree: { - learnMore: 'Află mai multe', - }, - characters: 'Caractere', - backToDataSource: 'Sursa datelor', - title: 'Adăugarea documentelor', - selectOnlineDocumentTip: 'Procesează până la {{count}} pagini', - selectOnlineDriveTip: 'Procesează până la {{count}} fișiere, maximum {{fileSize}} MB fiecare', - }, - documentSettings: { - title: 'Setări document', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} pagini', - }, - onlineDrive: { - breadcrumbs: { - allFiles: 'Toate fișierele', - allBuckets: 'Toate gălețile de stocare în cloud', - searchPlaceholder: 'Căutați fișiere...', - searchResult: 'Găsește {{searchResultsLength}} articole în folderul "{{folderName}}"', - }, - resetKeywords: 'Resetați cuvintele cheie', - emptyFolder: 'Acest folder este gol', - notSupportedFileType: 'Acest tip de fișier nu este acceptat', - emptySearchResult: 'Nu au fost găsite obiecte', - notConnected: '{{name}} nu este conectat', - notConnectedTip: 'Pentru a sincroniza cu {{name}}, trebuie mai întâi să se stabilească conexiunea cu {{name}}.', - }, - conversion: { - confirm: { - title: 'Confirmare', - content: 'Această acțiune este permanentă. Nu veți putea reveni la metoda anterioară. Vă rugăm să confirmați pentru a converti.', - }, - warning: 'Această acțiune nu poate fi anulată.', - title: 'Conversia în Knowledge Pipeline', - errorMessage: 'Nu s-a reușit să se convertească setul de date într-o conductă', - successMessage: 'Conversia cu succes a setului de date într-o conductă', - descriptionChunk2: '— o abordare mai deschisă și mai flexibilă, cu acces la plugin-uri de pe piața noastră. Aceasta va aplica noua metodă de procesare tuturor documentelor viitoare.', - descriptionChunk1: 'Acum puteți converti baza de cunoștințe existentă pentru a utiliza Pipeline de cunoștințe pentru procesarea documentelor', - }, - knowledgePermissions: 'Permisiuni', - knowledgeDescription: 'Descrierea cunoștințelor', - pipelineNameAndIcon: 'Numele și pictograma conductei', - knowledgeNameAndIcon: 'Nume și pictogramă de cunoștințe', - editPipelineInfo: 'Editați informațiile despre conductă', - knowledgeNameAndIconPlaceholder: 'Vă rugăm să introduceți numele bazei de cunoștințe', - knowledgeDescriptionPlaceholder: 'Descrieți ce este în această bază de cunoștințe. O descriere detaliată permite AI să acceseze mai precis conținutul setului de date. Dacă este gol, Dify va folosi strategia implicită de accesare. (Opțional)', - inputField: 'Câmp de intrare', - configurationTip: 'Configurează {{pluginName}}', -} - -export default translation diff --git a/web/i18n/ro-RO/dataset-settings.json b/web/i18n/ro-RO/dataset-settings.json new file mode 100644 index 0000000000..71a4a9797e --- /dev/null +++ b/web/i18n/ro-RO/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "Setări de cunoștințe", + "desc": "Aici puteți modifica proprietățile și metodele de lucru ale cunoștințelor.", + "form": { + "name": "Numele cunoștințelor", + "namePlaceholder": "Vă rugăm să introduceți numele cunoștințelor", + "nameError": "Numele nu poate fi gol", + "desc": "Descrierea cunoștințelor", + "descInfo": "Vă rugăm să scrieți o descriere textuală clară pentru a contura conținutul cunoștințelor. Această descriere va fi utilizată ca bază pentru potrivire atunci când se selectează din mai multe cunoștințe pentru inferență.", + "descPlaceholder": "Descrieți ce se află în aceste cunoștințe. O descriere detaliată permite AI să acceseze conținutul cunoștințelor într-un timp oportun. Dacă este gol, Dify va folosi strategia implicită.", + "descWrite": "Aflați cum să scrieți o descriere bună a cunoștințelor.", + "permissions": "Permisiuni", + "permissionsOnlyMe": "Doar eu", + "permissionsAllMember": "Toți membrii echipei", + "indexMethod": "Metodă de indexare", + "indexMethodHighQuality": "Calitate ridicată", + "indexMethodHighQualityTip": "Invocă modelul Embedding pentru procesare pentru a oferi o acuratețe mai mare la interogările utilizatorilor.", + "indexMethodEconomy": "Economică", + "indexMethodEconomyTip": "Utilizați motoare de vectori offline, indexuri de cuvinte cheie etc. pentru a reduce acuratețea fără a cheltui jetoane", + "embeddingModel": "Model de încorporare", + "embeddingModelTip": "Schimbați modelul încorporat, vă rugăm să accesați ", + "embeddingModelTipLink": "Setări", + "retrievalSetting": { + "title": "Setări de recuperare", + "learnMore": "Aflați mai multe", + "description": " despre metoda de recuperare.", + "longDescription": " despre metoda de recuperare, o puteți schimba în orice moment în setările cunoștințelor.", + "method": "Metoda de recuperare", + "multiModalTip": "Când modelul de încorporare suportă multi-modal, vă rugăm să selectați un model de reordonare multi-modal pentru o performanță mai bună." + }, + "save": "Salvare", + "permissionsInvitedMembers": "Membri parțiali ai echipei", + "me": "(Tu)", + "externalKnowledgeID": "ID de cunoștințe extern", + "externalKnowledgeAPI": "API de cunoștințe externe", + "retrievalSettings": "Setări de recuperare", + "indexMethodChangeToEconomyDisabledTip": "Nu este disponibil pentru retrogradarea de la HQ la ECO", + "upgradeHighQualityTip": "După ce faceți upgrade la modul Înaltă calitate, revenirea la modul Economic nu este disponibilă", + "helpText": "Aflați cum să scrieți o descriere bună a setului de date.", + "searchModel": "Căutare model", + "chunkStructure": { + "learnMore": "Află mai multe", + "title": "Structura bucății", + "description": "despre Chunk Structure." + }, + "nameAndIcon": "Nume și pictogramă", + "onSearchResults": "Niciun membru nu corespunde interogării de căutare.\nÎncercați din nou căutarea.", + "numberOfKeywords": "Număr de cuvinte cheie" + } +} diff --git a/web/i18n/ro-RO/dataset-settings.ts b/web/i18n/ro-RO/dataset-settings.ts deleted file mode 100644 index 83c122241f..0000000000 --- a/web/i18n/ro-RO/dataset-settings.ts +++ /dev/null @@ -1,52 +0,0 @@ -const translation = { - title: 'Setări de cunoștințe', - desc: 'Aici puteți modifica proprietățile și metodele de lucru ale cunoștințelor.', - form: { - name: 'Numele cunoștințelor', - namePlaceholder: 'Vă rugăm să introduceți numele cunoștințelor', - nameError: 'Numele nu poate fi gol', - desc: 'Descrierea cunoștințelor', - descInfo: 'Vă rugăm să scrieți o descriere textuală clară pentru a contura conținutul cunoștințelor. Această descriere va fi utilizată ca bază pentru potrivire atunci când se selectează din mai multe cunoștințe pentru inferență.', - descPlaceholder: 'Descrieți ce se află în aceste cunoștințe. O descriere detaliată permite AI să acceseze conținutul cunoștințelor într-un timp oportun. Dacă este gol, Dify va folosi strategia implicită.', - descWrite: 'Aflați cum să scrieți o descriere bună a cunoștințelor.', - permissions: 'Permisiuni', - permissionsOnlyMe: 'Doar eu', - permissionsAllMember: 'Toți membrii echipei', - indexMethod: 'Metodă de indexare', - indexMethodHighQuality: 'Calitate ridicată', - indexMethodHighQualityTip: 'Invocă modelul Embedding pentru procesare pentru a oferi o acuratețe mai mare la interogările utilizatorilor.', - indexMethodEconomy: 'Economică', - indexMethodEconomyTip: 'Utilizați motoare de vectori offline, indexuri de cuvinte cheie etc. pentru a reduce acuratețea fără a cheltui jetoane', - embeddingModel: 'Model de încorporare', - embeddingModelTip: 'Schimbați modelul încorporat, vă rugăm să accesați ', - embeddingModelTipLink: 'Setări', - retrievalSetting: { - title: 'Setări de recuperare', - learnMore: 'Aflați mai multe', - description: ' despre metoda de recuperare.', - longDescription: ' despre metoda de recuperare, o puteți schimba în orice moment în setările cunoștințelor.', - method: 'Metoda de recuperare', - multiModalTip: 'Când modelul de încorporare suportă multi-modal, vă rugăm să selectați un model de reordonare multi-modal pentru o performanță mai bună.', - }, - save: 'Salvare', - permissionsInvitedMembers: 'Membri parțiali ai echipei', - me: '(Tu)', - externalKnowledgeID: 'ID de cunoștințe extern', - externalKnowledgeAPI: 'API de cunoștințe externe', - retrievalSettings: 'Setări de recuperare', - indexMethodChangeToEconomyDisabledTip: 'Nu este disponibil pentru retrogradarea de la HQ la ECO', - upgradeHighQualityTip: 'După ce faceți upgrade la modul Înaltă calitate, revenirea la modul Economic nu este disponibilă', - helpText: 'Aflați cum să scrieți o descriere bună a setului de date.', - searchModel: 'Căutare model', - chunkStructure: { - learnMore: 'Află mai multe', - title: 'Structura bucății', - description: 'despre Chunk Structure.', - }, - nameAndIcon: 'Nume și pictogramă', - onSearchResults: 'Niciun membru nu corespunde interogării de căutare.\nÎncercați din nou căutarea.', - numberOfKeywords: 'Număr de cuvinte cheie', - }, -} - -export default translation diff --git a/web/i18n/ro-RO/dataset.json b/web/i18n/ro-RO/dataset.json new file mode 100644 index 0000000000..bb5fe9af49 --- /dev/null +++ b/web/i18n/ro-RO/dataset.json @@ -0,0 +1,249 @@ +{ + "knowledge": "Cunoștințe", + "documentCount": " documente", + "wordCount": " mii de cuvinte", + "appCount": " aplicații conectate", + "createDataset": "Creează Cunoștințe", + "createDatasetIntro": "Importați-vă propriile date text sau scrieți date în timp real prin Webhook pentru îmbunătățirea contextului LLM.", + "deleteDatasetConfirmTitle": "Ștergeți această Cunoștință?", + "deleteDatasetConfirmContent": "Ștergerea Cunoștințelor este ireversibilă. Utilizatorii nu vor mai putea accesa Cunoștințele, iar toate configurațiile și jurnalele prompt vor fi șterse permanent.", + "datasetUsedByApp": "Cunoștințele sunt utilizate de unele aplicații. Aplicațiile nu vor mai putea utiliza aceste Cunoștințe, iar toate configurațiile de prompt și jurnalele vor fi șterse definitiv.", + "datasetDeleted": "Cunoștințe șterse", + "datasetDeleteFailed": "Eșec la ștergerea Cunoștințelor", + "didYouKnow": "Știați că?", + "intro1": "Cunoștințele pot fi integrate în aplicația Dify ", + "intro2": "ca un context", + "intro3": ",", + "intro4": "sau ele ", + "intro5": "pot fi create", + "intro6": " ca un plug-in index ChatGPT standalone pentru publicare", + "unavailable": "Indisponibil", + "datasets": "CUNOȘTINȚE", + "datasetsApi": "ACCES API", + "retrieval": { + "semantic_search": { + "title": "Căutare Vector", + "description": "Generați încorporările interogărilor și căutați bucata de text cea mai similară cu reprezentarea sa vectorială." + }, + "full_text_search": { + "title": "Căutare Full-Text", + "description": "Indexați toți termenii din document, permițând utilizatorilor să caute orice termen și să recupereze bucățile de text relevante care conțin acei termeni." + }, + "hybrid_search": { + "title": "Căutare Hibridă", + "description": "Executați căutări full-text și căutări vectoriale în același timp, reclasificați pentru a selecta cea mai bună potrivire pentru interogarea utilizatorului. Configurarea API-ului modelului Rerank este necesară.", + "recommend": "Recomandat" + }, + "invertedIndex": {}, + "change": "Schimbă", + "changeRetrievalMethod": "Schimbă metoda de recuperare", + "keyword_search": { + "description": "Indexul inversat este o structură utilizată pentru o recuperare eficientă. Organizat pe termeni, fiecare termen indică documente sau pagini web care îl conțin.", + "title": "Indice inversat" + } + }, + "docsFailedNotice": "documentele nu au putut fi indexate", + "retry": "Reîncercați", + "indexingTechnique": { + "high_quality": "IC", + "economy": "ECO" + }, + "indexingMethod": { + "semantic_search": "VECTOR", + "full_text_search": "TEXT COMPLET", + "hybrid_search": "HIBRID", + "invertedIndex": "INVERSAT" + }, + "mixtureHighQualityAndEconomicTip": "Modelul de reclasificare este necesar pentru amestecul de baze de cunoștințe de înaltă calitate și economice.", + "inconsistentEmbeddingModelTip": "Modelul de reclasificare este necesar dacă modelele de încorporare ale bazelor de cunoștințe selectate sunt inconsistente.", + "retrievalSettings": "Setări de recuperare", + "rerankSettings": "Setări de reclasificare", + "weightedScore": { + "title": "Scor ponderat", + "description": "Prin ajustarea ponderilor atribuite, această strategie de reclasificare determină dacă să prioritizeze potrivirea semantică sau pe cea a cuvintelor cheie.", + "semanticFirst": "Semantic primul", + "keywordFirst": "Cuvânt cheie primul", + "customized": "Personalizat", + "semantic": "Semantic", + "keyword": "Cuvânt cheie" + }, + "nTo1RetrievalLegacy": "Recuperarea N-la-1 va fi oficial depreciată din septembrie. Se recomandă utilizarea celei mai recente recuperări cu căi multiple pentru a obține rezultate mai bune.", + "nTo1RetrievalLegacyLink": "Află mai multe", + "nTo1RetrievalLegacyLinkText": "Recuperarea N-la-1 va fi oficial depreciată în septembrie.", + "defaultRetrievalTip": "Recuperarea pe mai multe căi este utilizată în mod implicit. Cunoștințele sunt preluate din mai multe baze de cunoștințe și apoi reclasificate.", + "editExternalAPIConfirmWarningContent": { + "front": "Acest API de cunoștințe externe este legat de", + "end": "cunoștințe externe, iar această modificare va fi aplicată tuturor. Sunteți sigur că doriți să salvați această modificare?" + }, + "editExternalAPIFormWarning": { + "front": "Acest API extern este legat de", + "end": "cunoștințe externe" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "front": "Șterge", + "end": "?" + }, + "content": { + "front": "Acest API de cunoștințe externe este legat de", + "end": "cunoștințe externe. Ștergerea acestui API le va invalida pe toate. Sunteți sigur că doriți să ștergeți acest API?" + }, + "noConnectionContent": "Sunteți sigur că ștergeți acest API?" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "Alegeți un API de cunoștințe extern" + }, + "connectDatasetIntro": { + "content": { + "end": ". Apoi găsiți ID-ul de cunoștințe corespunzător și completați-l în formularul din stânga. Dacă toate informațiile sunt corecte, va sări automat la testul de recuperare din baza de cunoștințe după ce faceți clic pe butonul de conectare.", + "link": "Aflați cum să creați un API extern", + "front": "Pentru a vă conecta la o bază de cunoștințe externă, trebuie mai întâi să creați un API extern. Vă rugăm să citiți cu atenție și să consultați" + }, + "title": "Cum să vă conectați la o bază de cunoștințe externă", + "learnMore": "Află mai multe" + }, + "connectHelper": { + "helper2": "este acceptată doar funcționalitatea de recuperare", + "helper5": "Cu atenție înainte de a utiliza această caracteristică.", + "helper3": ". Vă recomandăm cu tărie să", + "helper4": "Citiți documentația de ajutor", + "helper1": "Conectați-vă la baze de cunoștințe externe prin API și ID-ul bazei de cunoștințe. În prezent," + }, + "externalKnowledgeForm": { + "connect": "Conecta", + "cancel": "Anula" + }, + "externalAPIForm": { + "encrypted": { + "end": "Tehnologie.", + "front": "Tokenul API va fi criptat și stocat folosind" + }, + "edit": "Editare", + "endpoint": "Punct final API", + "apiKey": "Cheie API", + "name": "Nume", + "save": "Salva", + "cancel": "Anula" + }, + "editExternalAPIFormTitle": "Editarea API-ului de cunoștințe externe", + "externalTag": "Extern", + "createExternalAPI": "Adăugarea unui API de cunoștințe extern", + "connectDataset": "Conectați-vă la o bază de cunoștințe externă", + "externalKnowledgeDescriptionPlaceholder": "Descrieți ce este în această bază de cunoștințe (opțional)", + "externalAPI": "API extern", + "learnHowToWriteGoodKnowledgeDescription": "Aflați cum să scrieți o descriere bună a cunoștințelor", + "externalAPIPanelTitle": "API de cunoștințe externe", + "allExternalTip": "Când utilizează numai cunoștințe externe, utilizatorul poate alege dacă să activeze modelul Rerank. Dacă nu este activată, bucățile preluate vor fi sortate pe baza scorurilor. Când strategiile de recuperare a diferitelor baze de cunoștințe sunt inconsistente, acestea vor fi inexacte.", + "externalKnowledgeNamePlaceholder": "Vă rugăm să introduceți numele bazei de cunoștințe", + "externalAPIPanelDocumentation": "Aflați cum să creați un API de cunoștințe externe", + "externalKnowledgeName": "Nume cunoștințe externe", + "externalKnowledgeDescription": "Descrierea cunoștințelor", + "externalKnowledgeIdPlaceholder": "Vă rugăm să introduceți ID-ul de cunoștințe", + "noExternalKnowledge": "Nu există încă un API de cunoștințe externe, faceți clic aici pentru a crea", + "externalKnowledgeId": "ID de cunoștințe extern", + "editExternalAPITooltipTitle": "CUNOȘTINȚE LEGATE", + "mixtureInternalAndExternalTip": "Modelul Rerank este necesar pentru amestecul de cunoștințe interne și externe.", + "externalAPIPanelDescription": "API-ul de cunoștințe externe este utilizat pentru a se conecta la o bază de cunoștințe din afara Dify și pentru a prelua cunoștințe din acea bază de cunoștințe.", + "createNewExternalAPI": "Creați un nou API de cunoștințe externe", + "chunkingMode": { + "general": "General", + "parentChild": "Părinte-copil", + "graph": "Grafic", + "qa": "Întrebări și răspunsuri" + }, + "parentMode": { + "paragraph": "Paragraf", + "fullDoc": "Documentar complet" + }, + "batchAction": { + "enable": "Activa", + "cancel": "Anula", + "delete": "Șterge", + "disable": "Dezactiva", + "selected": "Selectat", + "archive": "Arhivă" + }, + "documentsDisabled": "{{num}} documente dezactivate - inactive de peste 30 de zile", + "preprocessDocument": "{{num}} Procesarea prealabilă a documentelor", + "enable": "Activa", + "localDocs": "Documente locale", + "allKnowledge": "Toate cunoștințele", + "allKnowledgeDescription": "Selectați pentru a afișa toate cunoștințele din acest spațiu de lucru. Doar proprietarul spațiului de lucru poate gestiona toate cunoștințele.", + "metadata": { + "createMetadata": { + "name": "Nume", + "type": "Tip", + "back": "Înapoi", + "namePlaceholder": "Adăugați numele de metadate", + "title": "Metadate noi" + }, + "checkName": { + "invalid": "Numele metadatelor poate conține doar litere mici, cifre și underscore și trebuie să înceapă cu o literă mică.", + "empty": "Numele metadatelor nu poate fi gol", + "tooLong": "Numele metadatelor nu poate depăși {{max}} caractere" + }, + "batchEditMetadata": { + "multipleValue": "Valoare multiplă", + "editMetadata": "Editează metadatele", + "applyToAllSelectDocument": "Aplică la toate documentele selectate", + "editDocumentsNum": "Editarea {{num}} documente", + "applyToAllSelectDocumentTip": "Creează automat toate metadatele editate și noi de mai sus pentru toate documentele selectate, altfel editarea metadatelor se va aplica doar documentelor care au aceste metadate." + }, + "selectMetadata": { + "manageAction": "Gestionează", + "search": "Căutare metadate", + "newAction": "Metadate noi" + }, + "datasetMetadata": { + "deleteTitle": "Confirmă ștergerea", + "namePlaceholder": "Numele metadata", + "builtIn": "Încărcat în", + "values": "{{num}} Valori", + "name": "Nume", + "disabled": "Dezactivat", + "deleteContent": "Ești sigur că vrei să ștergi metadata „{{name}}”?}", + "builtInDescription": "Metadatele încorporate sunt extrase și generate automat. Acestea trebuie să fie activate înainte de utilizare și nu pot fi editate.", + "description": "Puteți gestiona toate metadatele în această cunoaștere aici. Modificările vor fi sincronizate cu fiecare document.", + "addMetaData": "Adăugați Metadate", + "rename": "Renumire" + }, + "documentMetadata": { + "startLabeling": "Începe etichetarea", + "documentInformation": "Informații despre document", + "technicalParameters": "Parametrii tehnici", + "metadataToolTip": "Metadata serve ca un filtru critic care îmbunătățește acuratețea și relevanța recuperării informațiilor. Puteți modifica și adăuga metadata pentru acest document aici." + }, + "metadata": "Metadate", + "addMetadata": "Adăugați Metadate", + "chooseTime": "Alege o oră..." + }, + "embeddingModelNotAvailable": "Modelul de încorporare nu este disponibil.", + "updated": "Actualizat", + "externalKnowledgeBase": "Baza de cunoștințe externă", + "createFromPipeline": "Crearea din Knowledge Pipeline", + "serviceApi": { + "card": { + "title": "API pentru serviciul backend", + "apiReference": "Referință API", + "endpoint": "Punct final API de servicii", + "apiKey": "Cheie API" + }, + "disabled": "Dezactivat", + "enabled": "În serviciu", + "title": "API de servicii" + }, + "docAllEnabled_one": "Document {{count}} activat", + "docAllEnabled_other": "Toate documentele {{count}} activate", + "partialEnabled_one": "Total de {{count}} documente, {{num}} disponibile", + "partialEnabled_other": "Total de {{count}} documente, {{num}} disponibile", + "cornerLabel": { + "unavailable": "Indisponibil", + "pipeline": "Conductă" + }, + "multimodal": "Multimodal", + "imageUploader": { + "button": "Trage și plasează fișierul sau folderul, sau", + "browse": "Răsfoiește", + "tip": "{{supportTypes}} (Maxim {{batchCount}}, {{size}}MB fiecare)" + } +} diff --git a/web/i18n/ro-RO/dataset.ts b/web/i18n/ro-RO/dataset.ts deleted file mode 100644 index 99138c656a..0000000000 --- a/web/i18n/ro-RO/dataset.ts +++ /dev/null @@ -1,253 +0,0 @@ -const translation = { - knowledge: 'Cunoștințe', - documentCount: ' documente', - wordCount: ' mii de cuvinte', - appCount: ' aplicații conectate', - createDataset: 'Creează Cunoștințe', - createDatasetIntro: 'Importați-vă propriile date text sau scrieți date în timp real prin Webhook pentru îmbunătățirea contextului LLM.', - deleteDatasetConfirmTitle: 'Ștergeți această Cunoștință?', - deleteDatasetConfirmContent: - 'Ștergerea Cunoștințelor este ireversibilă. Utilizatorii nu vor mai putea accesa Cunoștințele, iar toate configurațiile și jurnalele prompt vor fi șterse permanent.', - datasetUsedByApp: 'Cunoștințele sunt utilizate de unele aplicații. Aplicațiile nu vor mai putea utiliza aceste Cunoștințe, iar toate configurațiile de prompt și jurnalele vor fi șterse definitiv.', - datasetDeleted: 'Cunoștințe șterse', - datasetDeleteFailed: 'Eșec la ștergerea Cunoștințelor', - didYouKnow: 'Știați că?', - intro1: 'Cunoștințele pot fi integrate în aplicația Dify ', - intro2: 'ca un context', - intro3: ',', - intro4: 'sau ele ', - intro5: 'pot fi create', - intro6: ' ca un plug-in index ChatGPT standalone pentru publicare', - unavailable: 'Indisponibil', - datasets: 'CUNOȘTINȚE', - datasetsApi: 'ACCES API', - retrieval: { - semantic_search: { - title: 'Căutare Vector', - description: 'Generați încorporările interogărilor și căutați bucata de text cea mai similară cu reprezentarea sa vectorială.', - }, - full_text_search: { - title: 'Căutare Full-Text', - description: 'Indexați toți termenii din document, permițând utilizatorilor să caute orice termen și să recupereze bucățile de text relevante care conțin acei termeni.', - }, - hybrid_search: { - title: 'Căutare Hibridă', - description: 'Executați căutări full-text și căutări vectoriale în același timp, reclasificați pentru a selecta cea mai bună potrivire pentru interogarea utilizatorului. Configurarea API-ului modelului Rerank este necesară.', - recommend: 'Recomandat', - }, - invertedIndex: { - }, - change: 'Schimbă', - changeRetrievalMethod: 'Schimbă metoda de recuperare', - keyword_search: { - description: 'Indexul inversat este o structură utilizată pentru o recuperare eficientă. Organizat pe termeni, fiecare termen indică documente sau pagini web care îl conțin.', - title: 'Indice inversat', - }, - }, - docsFailedNotice: 'documentele nu au putut fi indexate', - retry: 'Reîncercați', - indexingTechnique: { - high_quality: 'IC', - economy: 'ECO', - }, - indexingMethod: { - semantic_search: 'VECTOR', - full_text_search: 'TEXT COMPLET', - hybrid_search: 'HIBRID', - invertedIndex: 'INVERSAT', - }, - mixtureHighQualityAndEconomicTip: 'Modelul de reclasificare este necesar pentru amestecul de baze de cunoștințe de înaltă calitate și economice.', - inconsistentEmbeddingModelTip: 'Modelul de reclasificare este necesar dacă modelele de încorporare ale bazelor de cunoștințe selectate sunt inconsistente.', - retrievalSettings: 'Setări de recuperare', - rerankSettings: 'Setări de reclasificare', - weightedScore: { - title: 'Scor ponderat', - description: 'Prin ajustarea ponderilor atribuite, această strategie de reclasificare determină dacă să prioritizeze potrivirea semantică sau pe cea a cuvintelor cheie.', - semanticFirst: 'Semantic primul', - keywordFirst: 'Cuvânt cheie primul', - customized: 'Personalizat', - semantic: 'Semantic', - keyword: 'Cuvânt cheie', - }, - nTo1RetrievalLegacy: 'Recuperarea N-la-1 va fi oficial depreciată din septembrie. Se recomandă utilizarea celei mai recente recuperări cu căi multiple pentru a obține rezultate mai bune.', - nTo1RetrievalLegacyLink: 'Află mai multe', - nTo1RetrievalLegacyLinkText: 'Recuperarea N-la-1 va fi oficial depreciată în septembrie.', - defaultRetrievalTip: 'Recuperarea pe mai multe căi este utilizată în mod implicit. Cunoștințele sunt preluate din mai multe baze de cunoștințe și apoi reclasificate.', - editExternalAPIConfirmWarningContent: { - front: 'Acest API de cunoștințe externe este legat de', - end: 'cunoștințe externe, iar această modificare va fi aplicată tuturor. Sunteți sigur că doriți să salvați această modificare?', - }, - editExternalAPIFormWarning: { - front: 'Acest API extern este legat de', - end: 'cunoștințe externe', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - front: 'Șterge', - end: '?', - }, - content: { - front: 'Acest API de cunoștințe externe este legat de', - end: 'cunoștințe externe. Ștergerea acestui API le va invalida pe toate. Sunteți sigur că doriți să ștergeți acest API?', - }, - noConnectionContent: 'Sunteți sigur că ștergeți acest API?', - }, - selectExternalKnowledgeAPI: { - placeholder: 'Alegeți un API de cunoștințe extern', - }, - connectDatasetIntro: { - content: { - end: '. Apoi găsiți ID-ul de cunoștințe corespunzător și completați-l în formularul din stânga. Dacă toate informațiile sunt corecte, va sări automat la testul de recuperare din baza de cunoștințe după ce faceți clic pe butonul de conectare.', - link: 'Aflați cum să creați un API extern', - front: 'Pentru a vă conecta la o bază de cunoștințe externă, trebuie mai întâi să creați un API extern. Vă rugăm să citiți cu atenție și să consultați', - }, - title: 'Cum să vă conectați la o bază de cunoștințe externă', - learnMore: 'Află mai multe', - }, - connectHelper: { - helper2: 'este acceptată doar funcționalitatea de recuperare', - helper5: 'Cu atenție înainte de a utiliza această caracteristică.', - helper3: '. Vă recomandăm cu tărie să', - helper4: 'Citiți documentația de ajutor', - helper1: 'Conectați-vă la baze de cunoștințe externe prin API și ID-ul bazei de cunoștințe. În prezent,', - }, - externalKnowledgeForm: { - connect: 'Conecta', - cancel: 'Anula', - }, - externalAPIForm: { - encrypted: { - end: 'Tehnologie.', - front: 'Tokenul API va fi criptat și stocat folosind', - }, - edit: 'Editare', - endpoint: 'Punct final API', - apiKey: 'Cheie API', - name: 'Nume', - save: 'Salva', - cancel: 'Anula', - }, - editExternalAPIFormTitle: 'Editarea API-ului de cunoștințe externe', - externalTag: 'Extern', - createExternalAPI: 'Adăugarea unui API de cunoștințe extern', - connectDataset: 'Conectați-vă la o bază de cunoștințe externă', - externalKnowledgeDescriptionPlaceholder: 'Descrieți ce este în această bază de cunoștințe (opțional)', - externalAPI: 'API extern', - learnHowToWriteGoodKnowledgeDescription: 'Aflați cum să scrieți o descriere bună a cunoștințelor', - externalAPIPanelTitle: 'API de cunoștințe externe', - allExternalTip: 'Când utilizează numai cunoștințe externe, utilizatorul poate alege dacă să activeze modelul Rerank. Dacă nu este activată, bucățile preluate vor fi sortate pe baza scorurilor. Când strategiile de recuperare a diferitelor baze de cunoștințe sunt inconsistente, acestea vor fi inexacte.', - externalKnowledgeNamePlaceholder: 'Vă rugăm să introduceți numele bazei de cunoștințe', - externalAPIPanelDocumentation: 'Aflați cum să creați un API de cunoștințe externe', - externalKnowledgeName: 'Nume cunoștințe externe', - externalKnowledgeDescription: 'Descrierea cunoștințelor', - externalKnowledgeIdPlaceholder: 'Vă rugăm să introduceți ID-ul de cunoștințe', - noExternalKnowledge: 'Nu există încă un API de cunoștințe externe, faceți clic aici pentru a crea', - externalKnowledgeId: 'ID de cunoștințe extern', - editExternalAPITooltipTitle: 'CUNOȘTINȚE LEGATE', - mixtureInternalAndExternalTip: 'Modelul Rerank este necesar pentru amestecul de cunoștințe interne și externe.', - externalAPIPanelDescription: 'API-ul de cunoștințe externe este utilizat pentru a se conecta la o bază de cunoștințe din afara Dify și pentru a prelua cunoștințe din acea bază de cunoștințe.', - createNewExternalAPI: 'Creați un nou API de cunoștințe externe', - chunkingMode: { - general: 'General', - parentChild: 'Părinte-copil', - graph: 'Grafic', - qa: 'Întrebări și răspunsuri', - }, - parentMode: { - paragraph: 'Paragraf', - fullDoc: 'Documentar complet', - }, - batchAction: { - enable: 'Activa', - cancel: 'Anula', - delete: 'Șterge', - disable: 'Dezactiva', - selected: 'Selectat', - archive: 'Arhivă', - }, - documentsDisabled: '{{num}} documente dezactivate - inactive de peste 30 de zile', - preprocessDocument: '{{num}} Procesarea prealabilă a documentelor', - enable: 'Activa', - localDocs: 'Documente locale', - allKnowledge: 'Toate cunoștințele', - allKnowledgeDescription: 'Selectați pentru a afișa toate cunoștințele din acest spațiu de lucru. Doar proprietarul spațiului de lucru poate gestiona toate cunoștințele.', - metadata: { - createMetadata: { - name: 'Nume', - type: 'Tip', - back: 'Înapoi', - namePlaceholder: 'Adăugați numele de metadate', - title: 'Metadate noi', - }, - checkName: { - invalid: 'Numele metadatelor poate conține doar litere mici, cifre și underscore și trebuie să înceapă cu o literă mică.', - empty: 'Numele metadatelor nu poate fi gol', - tooLong: 'Numele metadatelor nu poate depăși {{max}} caractere', - }, - batchEditMetadata: { - multipleValue: 'Valoare multiplă', - editMetadata: 'Editează metadatele', - applyToAllSelectDocument: 'Aplică la toate documentele selectate', - editDocumentsNum: 'Editarea {{num}} documente', - applyToAllSelectDocumentTip: 'Creează automat toate metadatele editate și noi de mai sus pentru toate documentele selectate, altfel editarea metadatelor se va aplica doar documentelor care au aceste metadate.', - }, - selectMetadata: { - manageAction: 'Gestionează', - search: 'Căutare metadate', - newAction: 'Metadate noi', - }, - datasetMetadata: { - deleteTitle: 'Confirmă ștergerea', - namePlaceholder: 'Numele metadata', - builtIn: 'Încărcat în', - values: '{{num}} Valori', - name: 'Nume', - disabled: 'Dezactivat', - deleteContent: 'Ești sigur că vrei să ștergi metadata „{{name}}”?}', - builtInDescription: 'Metadatele încorporate sunt extrase și generate automat. Acestea trebuie să fie activate înainte de utilizare și nu pot fi editate.', - description: 'Puteți gestiona toate metadatele în această cunoaștere aici. Modificările vor fi sincronizate cu fiecare document.', - addMetaData: 'Adăugați Metadate', - rename: 'Renumire', - }, - documentMetadata: { - startLabeling: 'Începe etichetarea', - documentInformation: 'Informații despre document', - technicalParameters: 'Parametrii tehnici', - metadataToolTip: 'Metadata serve ca un filtru critic care îmbunătățește acuratețea și relevanța recuperării informațiilor. Puteți modifica și adăuga metadata pentru acest document aici.', - }, - metadata: 'Metadate', - addMetadata: 'Adăugați Metadate', - chooseTime: 'Alege o oră...', - }, - embeddingModelNotAvailable: 'Modelul de încorporare nu este disponibil.', - updated: 'Actualizat', - externalKnowledgeBase: 'Baza de cunoștințe externă', - createFromPipeline: 'Crearea din Knowledge Pipeline', - serviceApi: { - card: { - title: 'API pentru serviciul backend', - apiReference: 'Referință API', - endpoint: 'Punct final API de servicii', - apiKey: 'Cheie API', - }, - disabled: 'Dezactivat', - enabled: 'În serviciu', - title: 'API de servicii', - }, - docAllEnabled_one: 'Document {{count}} activat', - docAllEnabled_other: 'Toate documentele {{count}} activate', - partialEnabled_one: 'Total de {{count}} documente, {{num}} disponibile', - partialEnabled_other: 'Total de {{count}} documente, {{num}} disponibile', - cornerLabel: { - unavailable: 'Indisponibil', - pipeline: 'Conductă', - }, - multimodal: 'Multimodal', - imageUploader: { - button: 'Trage și plasează fișierul sau folderul, sau', - browse: 'Răsfoiește', - tip: '{{supportTypes}} (Maxim {{batchCount}}, {{size}}MB fiecare)', - }, -} - -export default translation diff --git a/web/i18n/ro-RO/education.json b/web/i18n/ro-RO/education.json new file mode 100644 index 0000000000..8313970597 --- /dev/null +++ b/web/i18n/ro-RO/education.json @@ -0,0 +1,74 @@ +{ + "toVerifiedTip": { + "coupon": "cupom exclusiv 100%", + "front": "Sunteți acum eligibil pentru statutul de Educație Verificată. Vă rugăm să introduceți informațiile despre educația dumneavoastră mai jos pentru a finaliza procesul și a primi un", + "end": "pentru Planul Profesional Dify." + }, + "form": { + "schoolName": { + "placeholder": "Introduceți numele oficial, neabbreviat al școlii dumneavoastră", + "title": "Numele Școlii Tale" + }, + "schoolRole": { + "option": { + "teacher": "Profesor", + "administrator": "Administrator școlar", + "student": "Student" + }, + "title": "Rolul tău la școală" + }, + "terms": { + "desc": { + "and": "și", + "front": "Informațiile tale și utilizarea statutului de Educație Verificată sunt supuse termenilor noștri", + "end": "Prin trimiterea:", + "termsOfService": "Termeni și condiții", + "privacyPolicy": "Politica de confidenţialitate" + }, + "option": { + "inSchool": "Confirm că sunt înscris sau angajat la instituția menționată. Dify poate solicita dovada înscrierii/angajării. Dacă îmi reprezint greșit eligibilitatea, sunt de acord să plătesc orice taxe inițial renunțate pe baza statutului meu educațional.", + "age": "Confirm că am cel puțin 18 ani" + }, + "title": "Termeni și condiții" + } + }, + "toVerified": "Obțineți verificarea educației", + "submitError": "Trimiterea formularului a eşuat. Vă rugăm să încercați din nou mai târziu.", + "rejectContent": "Din păcate, nu ești eligibil pentru statutul de Verificat Educațional și, prin urmare, nu poți primi cuponul exclusiv de 100% pentru Planul Profesional Dify dacă folosești această adresă de email.", + "successTitle": "Ai obținut educația Dify verificată", + "learn": "Învățați cum să verificați educația", + "submit": "Trimite", + "emailLabel": "Emailul tău curent", + "currentSigned": "CONEXIUNE ÎN PREZENT CA", + "rejectTitle": "Verificarea educațională Dify a fost respinsă", + "successContent": "Am emis un cupon de discount de 100% pentru planul Professional Dify pe contul dumneavoastră. Cuponul este valabil timp de un an, vă rugăm să îl utilizați în perioada de valabilitate.", + "notice": { + "expired": { + "summary": { + "line2": "Cu toate acestea, nu mai ești eligibil pentru noi cupoane de reducere la educație.", + "line1": "Încă poți accesa și folosi Dify." + }, + "title": "Starea ta educațională a expirat" + }, + "isAboutToExpire": { + "summary": "Nu te îngrijora — aceasta nu va afecta abonamentul tău curent, dar nu veți primi discountul educațional atunci când se reinnoiește, cu excepția cazului în care îți verifici din nou statutul.", + "title": "Starea ta educațională va expira la {{date}}" + }, + "stillInEducation": { + "isAboutToExpire": "Re-verifică acum pentru a obține un nou cupon pentru anul universitar următor. Va fi salvat în contul tău și gata de utilizat la următoarea reînnoire.", + "title": "Încă în educație?", + "expired": "Re-verificați acum pentru a obține un nou cupon pentru următorul an academic. Vom adăuga acest cupon în contul dvs. și îl puteți folosi pentru următoarea actualizare." + }, + "alreadyGraduated": { + "title": "Deja ai absolvit?", + "expired": "Nu ezita să faci upgrade oricând pentru a obține acces complet la funcțiile plătite.", + "isAboutToExpire": "Abonamentul tău curent va rămâne activ. Când se va încheia, vei fi mutat pe planul Sandbox, sau poți să faci upgrade în orice moment pentru a restaura accesul complet la funcțiile plătite." + }, + "action": { + "reVerify": "Re-verifică", + "upgrade": "Upgrade", + "dismiss": "Respingere" + }, + "dateFormat": "ZZ/LL/AAAA" + } +} diff --git a/web/i18n/ro-RO/education.ts b/web/i18n/ro-RO/education.ts deleted file mode 100644 index 6e26373ed7..0000000000 --- a/web/i18n/ro-RO/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerifiedTip: { - coupon: 'cupom exclusiv 100%', - front: 'Sunteți acum eligibil pentru statutul de Educație Verificată. Vă rugăm să introduceți informațiile despre educația dumneavoastră mai jos pentru a finaliza procesul și a primi un', - end: 'pentru Planul Profesional Dify.', - }, - form: { - schoolName: { - placeholder: 'Introduceți numele oficial, neabbreviat al școlii dumneavoastră', - title: 'Numele Școlii Tale', - }, - schoolRole: { - option: { - teacher: 'Profesor', - administrator: 'Administrator școlar', - student: 'Student', - }, - title: 'Rolul tău la școală', - }, - terms: { - desc: { - and: 'și', - front: 'Informațiile tale și utilizarea statutului de Educație Verificată sunt supuse termenilor noștri', - end: 'Prin trimiterea:', - termsOfService: 'Termeni și condiții', - privacyPolicy: 'Politica de confidenţialitate', - }, - option: { - inSchool: 'Confirm că sunt înscris sau angajat la instituția menționată. Dify poate solicita dovada înscrierii/angajării. Dacă îmi reprezint greșit eligibilitatea, sunt de acord să plătesc orice taxe inițial renunțate pe baza statutului meu educațional.', - age: 'Confirm că am cel puțin 18 ani', - }, - title: 'Termeni și condiții', - }, - }, - toVerified: 'Obțineți verificarea educației', - submitError: 'Trimiterea formularului a eşuat. Vă rugăm să încercați din nou mai târziu.', - rejectContent: 'Din păcate, nu ești eligibil pentru statutul de Verificat Educațional și, prin urmare, nu poți primi cuponul exclusiv de 100% pentru Planul Profesional Dify dacă folosești această adresă de email.', - successTitle: 'Ai obținut educația Dify verificată', - learn: 'Învățați cum să verificați educația', - submit: 'Trimite', - emailLabel: 'Emailul tău curent', - currentSigned: 'CONEXIUNE ÎN PREZENT CA', - rejectTitle: 'Verificarea educațională Dify a fost respinsă', - successContent: 'Am emis un cupon de discount de 100% pentru planul Professional Dify pe contul dumneavoastră. Cuponul este valabil timp de un an, vă rugăm să îl utilizați în perioada de valabilitate.', - notice: { - expired: { - summary: { - line2: 'Cu toate acestea, nu mai ești eligibil pentru noi cupoane de reducere la educație.', - line1: 'Încă poți accesa și folosi Dify.', - }, - title: 'Starea ta educațională a expirat', - }, - isAboutToExpire: { - summary: 'Nu te îngrijora — aceasta nu va afecta abonamentul tău curent, dar nu veți primi discountul educațional atunci când se reinnoiește, cu excepția cazului în care îți verifici din nou statutul.', - title: 'Starea ta educațională va expira la {{date}}', - }, - stillInEducation: { - isAboutToExpire: 'Re-verifică acum pentru a obține un nou cupon pentru anul universitar următor. Va fi salvat în contul tău și gata de utilizat la următoarea reînnoire.', - title: 'Încă în educație?', - expired: 'Re-verificați acum pentru a obține un nou cupon pentru următorul an academic. Vom adăuga acest cupon în contul dvs. și îl puteți folosi pentru următoarea actualizare.', - }, - alreadyGraduated: { - title: 'Deja ai absolvit?', - expired: 'Nu ezita să faci upgrade oricând pentru a obține acces complet la funcțiile plătite.', - isAboutToExpire: 'Abonamentul tău curent va rămâne activ. Când se va încheia, vei fi mutat pe planul Sandbox, sau poți să faci upgrade în orice moment pentru a restaura accesul complet la funcțiile plătite.', - }, - action: { - reVerify: 'Re-verifică', - upgrade: 'Upgrade', - dismiss: 'Respingere', - }, - dateFormat: 'ZZ/LL/AAAA', - }, -} - -export default translation diff --git a/web/i18n/ro-RO/explore.json b/web/i18n/ro-RO/explore.json new file mode 100644 index 0000000000..f281e7c0e8 --- /dev/null +++ b/web/i18n/ro-RO/explore.json @@ -0,0 +1,42 @@ +{ + "title": "Explorați", + "sidebar": { + "discovery": "Descoperire", + "chat": "Chat", + "workspace": "Spațiu de lucru", + "action": { + "pin": "Fixați", + "unpin": "Deblocați", + "rename": "Redenumire", + "delete": "Ștergeți" + }, + "delete": { + "title": "Ștergeți aplicația", + "content": "Sunteți sigur că doriți să ștergeți această aplicație?" + } + }, + "apps": { + "title": "Explorați aplicațiile Dify", + "description": "Utilizați aceste aplicații model imediat sau personalizați-vă propria aplicație pe baza modelelor.", + "allCategories": "Recomandate" + }, + "appCard": { + "addToWorkspace": "Adăugați la spațiul de lucru", + "customize": "Personalizați" + }, + "appCustomize": { + "title": "Creați o aplicație din {{name}}", + "subTitle": "Pictogramă și nume aplicație", + "nameRequired": "Numele aplicației este obligatoriu" + }, + "category": { + "Assistant": "Asistent", + "Writing": "Scriere", + "Translate": "Traducere", + "Programming": "Programare", + "HR": "Resurse Umane", + "Agent": "Agent", + "Workflow": "Flux de lucru", + "Entertainment": "Divertisment" + } +} diff --git a/web/i18n/ro-RO/explore.ts b/web/i18n/ro-RO/explore.ts deleted file mode 100644 index 153b236200..0000000000 --- a/web/i18n/ro-RO/explore.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - title: 'Explorați', - sidebar: { - discovery: 'Descoperire', - chat: 'Chat', - workspace: 'Spațiu de lucru', - action: { - pin: 'Fixați', - unpin: 'Deblocați', - rename: 'Redenumire', - delete: 'Ștergeți', - }, - delete: { - title: 'Ștergeți aplicația', - content: 'Sunteți sigur că doriți să ștergeți această aplicație?', - }, - }, - apps: { - title: 'Explorați aplicațiile Dify', - description: 'Utilizați aceste aplicații model imediat sau personalizați-vă propria aplicație pe baza modelelor.', - allCategories: 'Recomandate', - }, - appCard: { - addToWorkspace: 'Adăugați la spațiul de lucru', - customize: 'Personalizați', - }, - appCustomize: { - title: 'Creați o aplicație din {{name}}', - subTitle: 'Pictogramă și nume aplicație', - nameRequired: 'Numele aplicației este obligatoriu', - }, - category: { - Assistant: 'Asistent', - Writing: 'Scriere', - Translate: 'Traducere', - Programming: 'Programare', - HR: 'Resurse Umane', - Agent: 'Agent', - Workflow: 'Flux de lucru', - Entertainment: 'Divertisment', - }, -} - -export default translation diff --git a/web/i18n/ro-RO/layout.json b/web/i18n/ro-RO/layout.json new file mode 100644 index 0000000000..57c1c227b1 --- /dev/null +++ b/web/i18n/ro-RO/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "collapseSidebar": "Restrângere bară laterală", + "expandSidebar": "Extindeți bara laterală" + } +} diff --git a/web/i18n/ro-RO/layout.ts b/web/i18n/ro-RO/layout.ts deleted file mode 100644 index 822bf59c1a..0000000000 --- a/web/i18n/ro-RO/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - collapseSidebar: 'Restrângere bară laterală', - expandSidebar: 'Extindeți bara laterală', - }, -} - -export default translation diff --git a/web/i18n/ro-RO/login.json b/web/i18n/ro-RO/login.json new file mode 100644 index 0000000000..7e193ebd55 --- /dev/null +++ b/web/i18n/ro-RO/login.json @@ -0,0 +1,124 @@ +{ + "pageTitle": "Bun venit! Hai să începem!👋", + "welcome": "Bine ai venit la Dify, te rugăm să te autentifici pentru a continua.", + "email": "Adresă de email", + "emailPlaceholder": "Adresa ta de email", + "password": "Parolă", + "passwordPlaceholder": "Parola ta", + "name": "Nume de utilizator", + "namePlaceholder": "Numele tău de utilizator", + "forget": "Ai uitat parola?", + "signBtn": "Autentificare", + "installBtn": "Configurare", + "setAdminAccount": "Configurare cont de administrator", + "setAdminAccountDesc": "Privilegii maxime pentru contul de administrator, care poate fi utilizat pentru crearea de aplicații și gestionarea furnizorilor LLM, etc.", + "createAndSignIn": "Creează și autentifică-te", + "oneMoreStep": "Un pas în plus", + "createSample": "Pe baza acestor informații, vom crea o aplicație de exemplu pentru tine", + "invitationCode": "Cod de invitație", + "invitationCodePlaceholder": "Codul tău de invitație", + "interfaceLanguage": "Limba interfeței", + "timezone": "Fus orar", + "go": "Mergi la Dify", + "sendUsMail": "Trimite-ne un email cu introducerea ta și noi ne vom ocupa de cererea de invitație.", + "acceptPP": "Am citit și accept politica de confidențialitate", + "reset": "Rulați următoarea comandă pentru a vă reseta parola", + "withGitHub": "Continuă cu GitHub", + "withGoogle": "Continuă cu Google", + "rightTitle": "Deblochează întregul potențial al LLM", + "rightDesc": "Construiește cu ușurință aplicații AI captivante din punct de vedere vizual, utilizabile și îmbunătățibile.", + "tos": "Termeni și condiții", + "pp": "Politica de confidențialitate", + "tosDesc": "Prin înregistrarea, ești de acord cu", + "goToInit": "Dacă nu ai inițializat încă contul, te rugăm să mergi la pagina de inițializare", + "dontHave": "Nu ai?", + "invalidInvitationCode": "Cod de invitație invalid", + "accountAlreadyInited": "Contul este deja inițializat", + "forgotPassword": "Ați uitat parola?", + "resetLinkSent": "Link de resetare trimis", + "sendResetLink": "Trimiteți linkul de resetare", + "backToSignIn": "Înapoi la autentificare", + "forgotPasswordDesc": "Vă rugăm să introduceți adresa de e-mail pentru a reseta parola. Vă vom trimite un e-mail cu instrucțiuni despre cum să resetați parola.", + "checkEmailForResetLink": "Vă rugăm să verificați e-mailul pentru un link de resetare a parolei. Dacă nu apare în câteva minute, verificați folderul de spam.", + "passwordChanged": "Conectează-te acum", + "changePassword": "Schimbă parola", + "changePasswordTip": "Vă rugăm să introduceți o nouă parolă pentru contul dvs", + "invalidToken": "Token invalid sau expirat", + "confirmPassword": "Confirmă parola", + "confirmPasswordPlaceholder": "Confirmați noua parolă", + "passwordChangedTip": "Parola dvs. a fost schimbată cu succes", + "error": { + "emailEmpty": "Adresa de email este obligatorie", + "emailInValid": "Te rugăm să introduci o adresă de email validă", + "nameEmpty": "Numele este obligatoriu", + "passwordEmpty": "Parola este obligatorie", + "passwordInvalid": "Parola trebuie să conțină litere și cifre, iar lungimea trebuie să fie mai mare de 8 caractere", + "passwordLengthInValid": "Parola trebuie să aibă cel puțin 8 caractere", + "registrationNotAllowed": "Contul nu a fost găsit. Vă rugăm să contactați administratorul de sistem pentru a vă înregistra.", + "invalidEmailOrPassword": "Email sau parolă invalidă." + }, + "license": { + "tip": "Înainte de a începe Dify Community Edition, citește", + "link": "Licența open-source de pe GitHub" + }, + "join": "Alătură-te", + "joinTipStart": "Te invităm să te alături echipei", + "joinTipEnd": "pe Dify", + "invalid": "Link-ul a expirat", + "explore": "Explorează Dify", + "activatedTipStart": "Te-ai alăturat echipei", + "activatedTipEnd": "", + "activated": "Autentifică-te acum", + "adminInitPassword": "Parola de inițializare a administratorului", + "validate": "Validează", + "checkCode": { + "verificationCode": "Cod de verificare", + "invalidCode": "Cod nevalid", + "checkYourEmail": "Verifică-ți e-mailul", + "validTime": "Rețineți că codul este valabil timp de 5 minute", + "didNotReceiveCode": "Nu ați primit codul?", + "verificationCodePlaceholder": "Introduceți codul din 6 cifre", + "emptyCode": "Codul este necesar", + "verify": "Verifica", + "useAnotherMethod": "Utilizați o altă metodă", + "resend": "Retrimite", + "tipsPrefix": "Trimitem un cod de verificare la" + }, + "usePassword": "Utilizați parola", + "useVerificationCode": "Utilizarea codului de verificare", + "sendVerificationCode": "Trimiteți codul de verificare", + "resetPassword": "Resetați parola", + "withSSO": "Continuați cu SSO", + "setYourAccount": "Setați-vă contul", + "noLoginMethodTip": "Vă rugăm să contactați administratorul de sistem pentru a adăuga o metodă de autentificare.", + "back": "Spate", + "backToLogin": "Înapoi la autentificare", + "continueWithCode": "Continuați cu codul", + "noLoginMethod": "Metoda de autentificare nu este configurată", + "enterYourName": "Vă rugăm să introduceți numele de utilizator", + "or": "SAU", + "resetPasswordDesc": "Tastați e-mailul pe care l-ați folosit pentru a vă înscrie pe Dify și vă vom trimite un e-mail de resetare a parolei.", + "changePasswordBtn": "Setați o parolă", + "licenseLostTip": "Nu s-a reușit conectarea serverului de licențe Dify. Contactați administratorul pentru a continua să utilizați Dify.", + "licenseInactive": "Licență inactivă", + "licenseInactiveTip": "Licența Dify Enterprise pentru spațiul de lucru este inactivă. Contactați administratorul pentru a continua să utilizați Dify.", + "licenseExpired": "Licență expirată", + "licenseLost": "Licență pierdută", + "licenseExpiredTip": "Licența Dify Enterprise pentru spațiul de lucru a expirat. Contactați administratorul pentru a continua să utilizați Dify.", + "webapp": { + "noLoginMethod": "Metoda de autentificare nu este configurată pentru aplicația web", + "noLoginMethodTip": "Vă rugăm să contactați administratorul sistemului pentru a adăuga o metodă de autentificare.", + "disabled": "Autentificarea webapp-ului este dezactivată. Vă rugăm să contactați administratorul sistemului pentru a o activa. Puteți încerca să folosiți aplicația direct.", + "login": "Conectare" + }, + "signup": { + "haveAccount": "Ai deja un cont?", + "signIn": "Autentificare", + "noAccount": "Nu ai un cont?", + "verifyMail": "Continuați cu codul de verificare", + "signUp": "Înscriere", + "createAccount": "Creează-ți contul", + "welcome": "👋 Buna! Te rugăm să completezi detaliile pentru a începe." + }, + "pageTitleForE": "Hei, hai să începem!" +} diff --git a/web/i18n/ro-RO/login.ts b/web/i18n/ro-RO/login.ts deleted file mode 100644 index f676b812cb..0000000000 --- a/web/i18n/ro-RO/login.ts +++ /dev/null @@ -1,126 +0,0 @@ -const translation = { - pageTitle: 'Bun venit! Hai să începem!👋', - welcome: 'Bine ai venit la Dify, te rugăm să te autentifici pentru a continua.', - email: 'Adresă de email', - emailPlaceholder: 'Adresa ta de email', - password: 'Parolă', - passwordPlaceholder: 'Parola ta', - name: 'Nume de utilizator', - namePlaceholder: 'Numele tău de utilizator', - forget: 'Ai uitat parola?', - signBtn: 'Autentificare', - installBtn: 'Configurare', - setAdminAccount: 'Configurare cont de administrator', - setAdminAccountDesc: 'Privilegii maxime pentru contul de administrator, care poate fi utilizat pentru crearea de aplicații și gestionarea furnizorilor LLM, etc.', - createAndSignIn: 'Creează și autentifică-te', - oneMoreStep: 'Un pas în plus', - createSample: 'Pe baza acestor informații, vom crea o aplicație de exemplu pentru tine', - invitationCode: 'Cod de invitație', - invitationCodePlaceholder: 'Codul tău de invitație', - interfaceLanguage: 'Limba interfeței', - timezone: 'Fus orar', - go: 'Mergi la Dify', - sendUsMail: 'Trimite-ne un email cu introducerea ta și noi ne vom ocupa de cererea de invitație.', - acceptPP: 'Am citit și accept politica de confidențialitate', - reset: 'Rulați următoarea comandă pentru a vă reseta parola', - withGitHub: 'Continuă cu GitHub', - withGoogle: 'Continuă cu Google', - rightTitle: 'Deblochează întregul potențial al LLM', - rightDesc: 'Construiește cu ușurință aplicații AI captivante din punct de vedere vizual, utilizabile și îmbunătățibile.', - tos: 'Termeni și condiții', - pp: 'Politica de confidențialitate', - tosDesc: 'Prin înregistrarea, ești de acord cu', - goToInit: 'Dacă nu ai inițializat încă contul, te rugăm să mergi la pagina de inițializare', - dontHave: 'Nu ai?', - invalidInvitationCode: 'Cod de invitație invalid', - accountAlreadyInited: 'Contul este deja inițializat', - forgotPassword: 'Ați uitat parola?', - resetLinkSent: 'Link de resetare trimis', - sendResetLink: 'Trimiteți linkul de resetare', - backToSignIn: 'Înapoi la autentificare', - forgotPasswordDesc: 'Vă rugăm să introduceți adresa de e-mail pentru a reseta parola. Vă vom trimite un e-mail cu instrucțiuni despre cum să resetați parola.', - checkEmailForResetLink: 'Vă rugăm să verificați e-mailul pentru un link de resetare a parolei. Dacă nu apare în câteva minute, verificați folderul de spam.', - passwordChanged: 'Conectează-te acum', - changePassword: 'Schimbă parola', - changePasswordTip: 'Vă rugăm să introduceți o nouă parolă pentru contul dvs', - invalidToken: 'Token invalid sau expirat', - confirmPassword: 'Confirmă parola', - confirmPasswordPlaceholder: 'Confirmați noua parolă', - passwordChangedTip: 'Parola dvs. a fost schimbată cu succes', - error: { - emailEmpty: 'Adresa de email este obligatorie', - emailInValid: 'Te rugăm să introduci o adresă de email validă', - nameEmpty: 'Numele este obligatoriu', - passwordEmpty: 'Parola este obligatorie', - passwordInvalid: 'Parola trebuie să conțină litere și cifre, iar lungimea trebuie să fie mai mare de 8 caractere', - passwordLengthInValid: 'Parola trebuie să aibă cel puțin 8 caractere', - registrationNotAllowed: 'Contul nu a fost găsit. Vă rugăm să contactați administratorul de sistem pentru a vă înregistra.', - invalidEmailOrPassword: 'Email sau parolă invalidă.', - }, - license: { - tip: 'Înainte de a începe Dify Community Edition, citește', - link: 'Licența open-source de pe GitHub', - }, - join: 'Alătură-te', - joinTipStart: 'Te invităm să te alături echipei', - joinTipEnd: 'pe Dify', - invalid: 'Link-ul a expirat', - explore: 'Explorează Dify', - activatedTipStart: 'Te-ai alăturat echipei', - activatedTipEnd: '', - activated: 'Autentifică-te acum', - adminInitPassword: 'Parola de inițializare a administratorului', - validate: 'Validează', - checkCode: { - verificationCode: 'Cod de verificare', - invalidCode: 'Cod nevalid', - checkYourEmail: 'Verifică-ți e-mailul', - validTime: 'Rețineți că codul este valabil timp de 5 minute', - didNotReceiveCode: 'Nu ați primit codul?', - verificationCodePlaceholder: 'Introduceți codul din 6 cifre', - emptyCode: 'Codul este necesar', - verify: 'Verifica', - useAnotherMethod: 'Utilizați o altă metodă', - resend: 'Retrimite', - tipsPrefix: 'Trimitem un cod de verificare la', - }, - usePassword: 'Utilizați parola', - useVerificationCode: 'Utilizarea codului de verificare', - sendVerificationCode: 'Trimiteți codul de verificare', - resetPassword: 'Resetați parola', - withSSO: 'Continuați cu SSO', - setYourAccount: 'Setați-vă contul', - noLoginMethodTip: 'Vă rugăm să contactați administratorul de sistem pentru a adăuga o metodă de autentificare.', - back: 'Spate', - backToLogin: 'Înapoi la autentificare', - continueWithCode: 'Continuați cu codul', - noLoginMethod: 'Metoda de autentificare nu este configurată', - enterYourName: 'Vă rugăm să introduceți numele de utilizator', - or: 'SAU', - resetPasswordDesc: 'Tastați e-mailul pe care l-ați folosit pentru a vă înscrie pe Dify și vă vom trimite un e-mail de resetare a parolei.', - changePasswordBtn: 'Setați o parolă', - licenseLostTip: 'Nu s-a reușit conectarea serverului de licențe Dify. Contactați administratorul pentru a continua să utilizați Dify.', - licenseInactive: 'Licență inactivă', - licenseInactiveTip: 'Licența Dify Enterprise pentru spațiul de lucru este inactivă. Contactați administratorul pentru a continua să utilizați Dify.', - licenseExpired: 'Licență expirată', - licenseLost: 'Licență pierdută', - licenseExpiredTip: 'Licența Dify Enterprise pentru spațiul de lucru a expirat. Contactați administratorul pentru a continua să utilizați Dify.', - webapp: { - noLoginMethod: 'Metoda de autentificare nu este configurată pentru aplicația web', - noLoginMethodTip: 'Vă rugăm să contactați administratorul sistemului pentru a adăuga o metodă de autentificare.', - disabled: 'Autentificarea webapp-ului este dezactivată. Vă rugăm să contactați administratorul sistemului pentru a o activa. Puteți încerca să folosiți aplicația direct.', - login: 'Conectare', - }, - signup: { - haveAccount: 'Ai deja un cont?', - signIn: 'Autentificare', - noAccount: 'Nu ai un cont?', - verifyMail: 'Continuați cu codul de verificare', - signUp: 'Înscriere', - createAccount: 'Creează-ți contul', - welcome: '👋 Buna! Te rugăm să completezi detaliile pentru a începe.', - }, - pageTitleForE: 'Hei, hai să începem!', -} - -export default translation diff --git a/web/i18n/ro-RO/oauth.json b/web/i18n/ro-RO/oauth.json new file mode 100644 index 0000000000..a71d691382 --- /dev/null +++ b/web/i18n/ro-RO/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "needLogin": "Vă rugăm să vă conectați pentru a autoriza", + "loggedIn": "Această aplicație vrea să acceseze următoarele informații din contul tău Dify Cloud.", + "notLoggedIn": "Această aplicație vrea să acceseze contul tău Dify Cloud", + "common": "Respectăm confidențialitatea dvs. și vom folosi aceste informații doar pentru a îmbunătăți experiența dvs. cu instrumentele noastre pentru dezvoltatori." + }, + "scopes": { + "name": "Nume", + "avatar": "Avatar", + "languagePreference": "Preferință lingvistică", + "email": "Email", + "timezone": "Fus orar" + }, + "error": { + "invalidParams": "Parametrii invalizi", + "authorizeFailed": "Autorizarea a eșuat", + "authAppInfoFetchFailed": "Nu s-au putut obține informațiile aplicației pentru autorizare" + }, + "continue": "Continuați", + "connect": "Conectează la", + "unknownApp": "Aplicație necunoscută", + "login": "Conectare", + "switchAccount": "Schimbă contul" +} diff --git a/web/i18n/ro-RO/oauth.ts b/web/i18n/ro-RO/oauth.ts deleted file mode 100644 index c21322d2f2..0000000000 --- a/web/i18n/ro-RO/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - needLogin: 'Vă rugăm să vă conectați pentru a autoriza', - loggedIn: 'Această aplicație vrea să acceseze următoarele informații din contul tău Dify Cloud.', - notLoggedIn: 'Această aplicație vrea să acceseze contul tău Dify Cloud', - common: 'Respectăm confidențialitatea dvs. și vom folosi aceste informații doar pentru a îmbunătăți experiența dvs. cu instrumentele noastre pentru dezvoltatori.', - }, - scopes: { - name: 'Nume', - avatar: 'Avatar', - languagePreference: 'Preferință lingvistică', - email: 'Email', - timezone: 'Fus orar', - }, - error: { - invalidParams: 'Parametrii invalizi', - authorizeFailed: 'Autorizarea a eșuat', - authAppInfoFetchFailed: 'Nu s-au putut obține informațiile aplicației pentru autorizare', - }, - continue: 'Continuați', - connect: 'Conectează la', - unknownApp: 'Aplicație necunoscută', - login: 'Conectare', - switchAccount: 'Schimbă contul', -} - -export default translation diff --git a/web/i18n/ro-RO/pipeline.json b/web/i18n/ro-RO/pipeline.json new file mode 100644 index 0000000000..a6265ececf --- /dev/null +++ b/web/i18n/ro-RO/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "publishAsPipeline": { + "name": "Numele și pictograma conductei", + "description": "Descrierea cunoștințelor", + "namePlaceholder": "Vă rugăm să introduceți numele acestui Knowledge Pipeline. (Obligatoriu)", + "descriptionPlaceholder": "Vă rugăm să introduceți descrierea acestui Pipeline de cunoștințe. (Opțional)" + }, + "processing": "Prelucrare", + "confirmPublish": "Confirmați publicarea", + "testRun": "Rulare de testare", + "preparingDataSource": "Pregătirea sursei de date", + "publishAs": "Publicarea ca canal de cunoștințe", + "goToAddDocuments": "Accesați adăugarea documentelor", + "reRun": "Reluare", + "confirmPublishContent": "După publicarea cu succes a conductei de cunoștințe, structura de bucăți a acestei baze de cunoștințe nu poate fi modificată. Ești sigur că vrei să-l publici?" + }, + "inputField": { + "manage": "Gestiona", + "create": "Creați câmpul de introducere a utilizatorului" + }, + "publishToast": { + "title": "Această conductă nu a fost încă publicată", + "desc": "Când conducta nu este publicată, puteți modifica structura bucății în nodul bazei de cunoștințe, iar orchestrarea și modificările conductei vor fi salvate automat ca schiță." + }, + "result": { + "resultPreview": { + "loading": "Prelucrare... Te rog să aştepţi", + "viewDetails": "Vezi detalii", + "error": "A apărut o eroare în timpul execuției", + "footerTip": "În modul de testare, previzualizați până la {{count}} fragmente" + } + }, + "ragToolSuggestions": { + "title": "Sugestii pentru RAG", + "noRecommendationPlugins": "Nu există pluginuri recomandate, găsiți mai multe în Marketplace" + } +} diff --git a/web/i18n/ro-RO/pipeline.ts b/web/i18n/ro-RO/pipeline.ts deleted file mode 100644 index c32505b6c9..0000000000 --- a/web/i18n/ro-RO/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - publishAsPipeline: { - name: 'Numele și pictograma conductei', - description: 'Descrierea cunoștințelor', - namePlaceholder: 'Vă rugăm să introduceți numele acestui Knowledge Pipeline. (Obligatoriu)', - descriptionPlaceholder: 'Vă rugăm să introduceți descrierea acestui Pipeline de cunoștințe. (Opțional)', - }, - processing: 'Prelucrare', - confirmPublish: 'Confirmați publicarea', - testRun: 'Rulare de testare', - preparingDataSource: 'Pregătirea sursei de date', - publishAs: 'Publicarea ca canal de cunoștințe', - goToAddDocuments: 'Accesați adăugarea documentelor', - reRun: 'Reluare', - confirmPublishContent: 'După publicarea cu succes a conductei de cunoștințe, structura de bucăți a acestei baze de cunoștințe nu poate fi modificată. Ești sigur că vrei să-l publici?', - }, - inputField: { - manage: 'Gestiona', - create: 'Creați câmpul de introducere a utilizatorului', - }, - publishToast: { - title: 'Această conductă nu a fost încă publicată', - desc: 'Când conducta nu este publicată, puteți modifica structura bucății în nodul bazei de cunoștințe, iar orchestrarea și modificările conductei vor fi salvate automat ca schiță.', - }, - result: { - resultPreview: { - loading: 'Prelucrare... Te rog să aştepţi', - viewDetails: 'Vezi detalii', - error: 'A apărut o eroare în timpul execuției', - footerTip: 'În modul de testare, previzualizați până la {{count}} fragmente', - }, - }, - ragToolSuggestions: { - title: 'Sugestii pentru RAG', - noRecommendationPlugins: 'Nu există pluginuri recomandate, găsiți mai multe în Marketplace', - }, -} - -export default translation diff --git a/web/i18n/ro-RO/plugin-tags.json b/web/i18n/ro-RO/plugin-tags.json new file mode 100644 index 0000000000..4204ae9387 --- /dev/null +++ b/web/i18n/ro-RO/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "tags": { + "education": "Educație", + "finance": "Finanţa", + "other": "Alt", + "travel": "Călătorie", + "news": "Știri", + "utilities": "Utilităţi", + "entertainment": "Divertisment", + "search": "Căutare", + "productivity": "Productivitate", + "design": "Design", + "videos": "Videoclipuri", + "medical": "Medical", + "social": "Social", + "agent": "Agent", + "business": "Afacere", + "weather": "Vreme", + "image": "Imagine", + "rag": "CÂRPĂ" + }, + "allTags": "Toate etichetele", + "searchTags": "Etichete de căutare" +} diff --git a/web/i18n/ro-RO/plugin-tags.ts b/web/i18n/ro-RO/plugin-tags.ts deleted file mode 100644 index c2d7a2e2b4..0000000000 --- a/web/i18n/ro-RO/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - tags: { - education: 'Educație', - finance: 'Finanţa', - other: 'Alt', - travel: 'Călătorie', - news: 'Știri', - utilities: 'Utilităţi', - entertainment: 'Divertisment', - search: 'Căutare', - productivity: 'Productivitate', - design: 'Design', - videos: 'Videoclipuri', - medical: 'Medical', - social: 'Social', - agent: 'Agent', - business: 'Afacere', - weather: 'Vreme', - image: 'Imagine', - rag: 'CÂRPĂ', - }, - allTags: 'Toate etichetele', - searchTags: 'Etichete de căutare', -} - -export default translation diff --git a/web/i18n/ro-RO/plugin-trigger.json b/web/i18n/ro-RO/plugin-trigger.json new file mode 100644 index 0000000000..0205c8c0cf --- /dev/null +++ b/web/i18n/ro-RO/plugin-trigger.json @@ -0,0 +1,184 @@ +{ + "subscription": { + "title": "Abonamente", + "listNum": "Abonamente {{num}}", + "empty": { + "title": "Fără abonamente", + "button": "Abonament nou" + }, + "createButton": { + "oauth": "Abonament nou cu OAuth", + "apiKey": "Abonament nou cu cheia API", + "manual": "Lipiți URL-ul pentru a crea un abonament nou" + }, + "createSuccess": "Abonament creat cu succes", + "createFailed": "Eșec la crearea abonamentului", + "maxCount": "Max {{num}} abonamente", + "selectPlaceholder": "Selectați abonamentul", + "noSubscriptionSelected": "Nicio abonare selectată", + "subscriptionRemoved": "Abonament eliminat", + "list": { + "title": "Abonamente", + "addButton": "Adaugă", + "tip": "Primește evenimente prin abonament", + "item": { + "enabled": "Activat", + "disabled": "Dezactivat", + "credentialType": { + "api_key": "Cheie API", + "oauth2": "OAuth", + "unauthorized": "Manual" + }, + "actions": { + "delete": "Șterge", + "deleteConfirm": { + "title": "Ștergi {{name}}?", + "success": "Abonamentul {{name}} a fost șters cu succes", + "error": "Nu s-a putut șterge abonamentul {{name}}", + "content": "Odată șters, acest abonament nu poate fi recuperat. Vă rugăm să confirmați.", + "contentWithApps": "Abonamentul curent este referențiat de {{count}} aplicații. Ștergerea acestuia va determina aplicațiile configurate să înceteze să mai primească evenimentele abonamentului.", + "confirm": "Confirmă ștergerea", + "cancel": "Anulează", + "confirmInputWarning": "Vă rugăm să introduceți numele corect pentru confirmare.", + "confirmInputPlaceholder": "Introduceți \"{{name}}\" pentru a confirma.", + "confirmInputTip": "Vă rugăm să introduceți „{{name}}” pentru a confirma." + } + }, + "status": { + "active": "Activ", + "inactive": "Inactiv" + }, + "usedByNum": "Folosit de {{num}} fluxuri de lucru", + "noUsed": "Niciun flux de lucru utilizat" + } + }, + "addType": { + "title": "Adaugă abonament", + "description": "Alege cum dorești să creezi abonamentul pentru declanșator", + "options": { + "apikey": { + "title": "Creează cu cheia API", + "description": "Creează automat abonamente folosind acreditările API" + }, + "oauth": { + "title": "Creează cu OAuth", + "description": "Autentifică-te cu o platformă terță pentru a crea un abonament", + "clientSettings": "Setări client OAuth", + "clientTitle": "Client OAuth", + "default": "Implicit", + "custom": "Personalizat" + }, + "manual": { + "title": "Configurare manuală", + "description": "Lipiți URL-ul pentru a crea un abonament nou", + "tip": "Configurează URL-ul pe platforma terță manual" + } + } + } + }, + "modal": { + "steps": { + "verify": "Verifică", + "configuration": "Configurație" + }, + "common": { + "cancel": "Anulează", + "back": "Înapoi", + "next": "Următor", + "create": "Creează", + "verify": "Verifică", + "authorize": "Autorizează", + "creating": "Se creează...", + "verifying": "Se verifică...", + "authorizing": "Se autorizează..." + }, + "oauthRedirectInfo": "Deoarece nu au fost găsite secrete ale clienților de sistem pentru acest furnizor de instrumente, este necesară configurarea manuală, pentru redirect_uri, vă rugăm să folosiți", + "apiKey": { + "title": "Creează cu cheia API", + "verify": { + "title": "Verifică acreditările", + "description": "Vă rugăm să furnizați acreditările API pentru a verifica accesul", + "error": "Verificarea acreditărilor a eșuat. Vă rugăm să verificați cheia API.", + "success": "Datele de autentificare au fost verificate cu succes" + }, + "configuration": { + "title": "Configurează abonamentul", + "description": "Configurează parametrii abonamentului tău" + } + }, + "oauth": { + "title": "Creează cu OAuth", + "authorization": { + "title": "Autorizare OAuth", + "description": "Permiteți lui Dify să acceseze contul dumneavoastră", + "redirectUrl": "Redirecționează URL-ul", + "redirectUrlHelp": "Folosește acest URL în configurația aplicației tale OAuth", + "authorizeButton": "Autentifică-te cu {{provider}}", + "waitingAuth": "Așteptare autorizare...", + "authSuccess": "Autorizare reușită", + "authFailed": "Eșuat la obținerea informațiilor de autorizare OAuth", + "waitingJump": "Autorizat, în așteptarea săriturii" + }, + "configuration": { + "title": "Configurează abonamentul", + "description": "Configurează parametrii abonamentului după autorizare", + "success": "Configurarea OAuth a fost realizată cu succes", + "failed": "Configurarea OAuth a eșuat" + }, + "remove": { + "success": "Eliminarea OAuth a fost realizată cu succes", + "failed": "Eliminarea OAuth a eșuat" + }, + "save": { + "success": "Configurarea OAuth a fost salvată cu succes" + } + }, + "manual": { + "title": "Configurare manuală", + "description": "Configurează-ți abonamentul webhook manual", + "logs": { + "title": "Jurnale de cereri", + "request": "Cerere", + "loading": "Așteptând cererea de la {{pluginName}}..." + } + }, + "form": { + "subscriptionName": { + "label": "Numele abonamentului", + "placeholder": "Introduceți numele abonamentului", + "required": "Numele abonamentului este obligatoriu" + }, + "callbackUrl": { + "label": "URL de returnare", + "description": "Acest URL va primi evenimente webhook", + "tooltip": "Oferiți un punct de acces public care să poată primi cereri de apel invers de la furnizorul de declanșare.", + "placeholder": "Generare...", + "privateAddressWarning": "Această adresă URL pare să fie una internă, ceea ce poate cauza eșecul solicitărilor webhook. Puteți schimba TRIGGER_URL cu o adresă publică." + } + }, + "errors": { + "createFailed": "Eșec la crearea abonamentului", + "verifyFailed": "Nu s-au putut verifica acreditările", + "authFailed": "Autorizare eșuată", + "networkError": "Eroare de rețea, vă rugăm să încercați din nou" + } + }, + "events": { + "title": "Evenimente disponibile", + "description": "Evenimente la care acest plugin de declanșare se poate abona", + "empty": "Nu sunt evenimente disponibile", + "event": "Eveniment", + "events": "Evenimente", + "actionNum": "{{num}} {{event}} INCLUS", + "item": { + "parameters": "parametrii {{count}}", + "noParameters": "Fără parametri" + }, + "output": "Ieșire" + }, + "node": { + "status": { + "warning": "Deconectare" + } + } +} diff --git a/web/i18n/ro-RO/plugin-trigger.ts b/web/i18n/ro-RO/plugin-trigger.ts deleted file mode 100644 index 711d41c096..0000000000 --- a/web/i18n/ro-RO/plugin-trigger.ts +++ /dev/null @@ -1,186 +0,0 @@ -const translation = { - subscription: { - title: 'Abonamente', - listNum: 'Abonamente {{num}}', - empty: { - title: 'Fără abonamente', - button: 'Abonament nou', - }, - createButton: { - oauth: 'Abonament nou cu OAuth', - apiKey: 'Abonament nou cu cheia API', - manual: 'Lipiți URL-ul pentru a crea un abonament nou', - }, - createSuccess: 'Abonament creat cu succes', - createFailed: 'Eșec la crearea abonamentului', - maxCount: 'Max {{num}} abonamente', - selectPlaceholder: 'Selectați abonamentul', - noSubscriptionSelected: 'Nicio abonare selectată', - subscriptionRemoved: 'Abonament eliminat', - list: { - title: 'Abonamente', - addButton: 'Adaugă', - tip: 'Primește evenimente prin abonament', - item: { - enabled: 'Activat', - disabled: 'Dezactivat', - credentialType: { - api_key: 'Cheie API', - oauth2: 'OAuth', - unauthorized: 'Manual', - }, - actions: { - delete: 'Șterge', - deleteConfirm: { - title: 'Ștergi {{name}}?', - success: 'Abonamentul {{name}} a fost șters cu succes', - error: 'Nu s-a putut șterge abonamentul {{name}}', - content: 'Odată șters, acest abonament nu poate fi recuperat. Vă rugăm să confirmați.', - contentWithApps: 'Abonamentul curent este referențiat de {{count}} aplicații. Ștergerea acestuia va determina aplicațiile configurate să înceteze să mai primească evenimentele abonamentului.', - confirm: 'Confirmă ștergerea', - cancel: 'Anulează', - confirmInputWarning: 'Vă rugăm să introduceți numele corect pentru confirmare.', - confirmInputPlaceholder: 'Introduceți "{{name}}" pentru a confirma.', - confirmInputTip: 'Vă rugăm să introduceți „{{name}}” pentru a confirma.', - }, - }, - status: { - active: 'Activ', - inactive: 'Inactiv', - }, - usedByNum: 'Folosit de {{num}} fluxuri de lucru', - noUsed: 'Niciun flux de lucru utilizat', - }, - }, - addType: { - title: 'Adaugă abonament', - description: 'Alege cum dorești să creezi abonamentul pentru declanșator', - options: { - apikey: { - title: 'Creează cu cheia API', - description: 'Creează automat abonamente folosind acreditările API', - }, - oauth: { - title: 'Creează cu OAuth', - description: 'Autentifică-te cu o platformă terță pentru a crea un abonament', - clientSettings: 'Setări client OAuth', - clientTitle: 'Client OAuth', - default: 'Implicit', - custom: 'Personalizat', - }, - manual: { - title: 'Configurare manuală', - description: 'Lipiți URL-ul pentru a crea un abonament nou', - tip: 'Configurează URL-ul pe platforma terță manual', - }, - }, - }, - }, - modal: { - steps: { - verify: 'Verifică', - configuration: 'Configurație', - }, - common: { - cancel: 'Anulează', - back: 'Înapoi', - next: 'Următor', - create: 'Creează', - verify: 'Verifică', - authorize: 'Autorizează', - creating: 'Se creează...', - verifying: 'Se verifică...', - authorizing: 'Se autorizează...', - }, - oauthRedirectInfo: 'Deoarece nu au fost găsite secrete ale clienților de sistem pentru acest furnizor de instrumente, este necesară configurarea manuală, pentru redirect_uri, vă rugăm să folosiți', - apiKey: { - title: 'Creează cu cheia API', - verify: { - title: 'Verifică acreditările', - description: 'Vă rugăm să furnizați acreditările API pentru a verifica accesul', - error: 'Verificarea acreditărilor a eșuat. Vă rugăm să verificați cheia API.', - success: 'Datele de autentificare au fost verificate cu succes', - }, - configuration: { - title: 'Configurează abonamentul', - description: 'Configurează parametrii abonamentului tău', - }, - }, - oauth: { - title: 'Creează cu OAuth', - authorization: { - title: 'Autorizare OAuth', - description: 'Permiteți lui Dify să acceseze contul dumneavoastră', - redirectUrl: 'Redirecționează URL-ul', - redirectUrlHelp: 'Folosește acest URL în configurația aplicației tale OAuth', - authorizeButton: 'Autentifică-te cu {{provider}}', - waitingAuth: 'Așteptare autorizare...', - authSuccess: 'Autorizare reușită', - authFailed: 'Eșuat la obținerea informațiilor de autorizare OAuth', - waitingJump: 'Autorizat, în așteptarea săriturii', - }, - configuration: { - title: 'Configurează abonamentul', - description: 'Configurează parametrii abonamentului după autorizare', - success: 'Configurarea OAuth a fost realizată cu succes', - failed: 'Configurarea OAuth a eșuat', - }, - remove: { - success: 'Eliminarea OAuth a fost realizată cu succes', - failed: 'Eliminarea OAuth a eșuat', - }, - save: { - success: 'Configurarea OAuth a fost salvată cu succes', - }, - }, - manual: { - title: 'Configurare manuală', - description: 'Configurează-ți abonamentul webhook manual', - logs: { - title: 'Jurnale de cereri', - request: 'Cerere', - loading: 'Așteptând cererea de la {{pluginName}}...', - }, - }, - form: { - subscriptionName: { - label: 'Numele abonamentului', - placeholder: 'Introduceți numele abonamentului', - required: 'Numele abonamentului este obligatoriu', - }, - callbackUrl: { - label: 'URL de returnare', - description: 'Acest URL va primi evenimente webhook', - tooltip: 'Oferiți un punct de acces public care să poată primi cereri de apel invers de la furnizorul de declanșare.', - placeholder: 'Generare...', - privateAddressWarning: 'Această adresă URL pare să fie una internă, ceea ce poate cauza eșecul solicitărilor webhook. Puteți schimba TRIGGER_URL cu o adresă publică.', - }, - }, - errors: { - createFailed: 'Eșec la crearea abonamentului', - verifyFailed: 'Nu s-au putut verifica acreditările', - authFailed: 'Autorizare eșuată', - networkError: 'Eroare de rețea, vă rugăm să încercați din nou', - }, - }, - events: { - title: 'Evenimente disponibile', - description: 'Evenimente la care acest plugin de declanșare se poate abona', - empty: 'Nu sunt evenimente disponibile', - event: 'Eveniment', - events: 'Evenimente', - actionNum: '{{num}} {{event}} INCLUS', - item: { - parameters: 'parametrii {{count}}', - noParameters: 'Fără parametri', - }, - output: 'Ieșire', - }, - node: { - status: { - warning: 'Deconectare', - }, - }, -} - -export default translation diff --git a/web/i18n/ro-RO/plugin.json b/web/i18n/ro-RO/plugin.json new file mode 100644 index 0000000000..9561830da1 --- /dev/null +++ b/web/i18n/ro-RO/plugin.json @@ -0,0 +1,323 @@ +{ + "category": { + "all": "Tot", + "bundles": "Pachete", + "agents": "Strategii pentru agenți", + "tools": "Instrumente", + "extensions": "Extensii", + "models": "Modele", + "datasources": "Surse de date", + "triggers": "Declanșatori" + }, + "categorySingle": { + "tool": "Unealtă", + "bundle": "Pachet", + "extension": "Extensie", + "agent": "Strategia agentului", + "model": "Model", + "datasource": "Sursa datelor", + "trigger": "Declanșator" + }, + "list": { + "source": { + "marketplace": "Instalează din Marketplace", + "github": "Instalați din GitHub", + "local": "Instalare din fișierul pachet local" + }, + "noInstalled": "Nu sunt instalate plugin-uri", + "notFound": "Nu au fost găsite plugin-uri" + }, + "source": { + "local": "Fișier pachet local", + "marketplace": "Târg", + "github": "GitHub" + }, + "detailPanel": { + "categoryTip": { + "debugging": "Plugin de depanare", + "github": "Instalat de pe Github", + "marketplace": "Instalat din Marketplace", + "local": "Plugin local" + }, + "operation": { + "checkUpdate": "Verificați actualizarea", + "update": "Actualiza", + "viewDetail": "Vezi detalii", + "remove": "Depărta", + "install": "Instala", + "detail": "Detalii", + "info": "Informații despre plugin", + "back": "Înapoi" + }, + "toolSelector": { + "unsupportedContent": "Versiunea de plugin instalată nu oferă această acțiune.", + "auto": "Auto", + "empty": "Faceți clic pe butonul \"+\" pentru a adăuga instrumente. Puteți adăuga mai multe instrumente.", + "uninstalledContent": "Acest plugin este instalat din depozitul local/GitHub. Vă rugăm să utilizați după instalare.", + "descriptionLabel": "Descrierea instrumentului", + "unsupportedContent2": "Faceți clic pentru a comuta versiunea.", + "uninstalledLink": "Gestionați în pluginuri", + "paramsTip1": "Controlează parametrii de inferență LLM.", + "params": "CONFIGURAREA RAȚIONAMENTULUI", + "paramsTip2": "Când \"Auto\" este dezactivat, se folosește valoarea implicită.", + "settings": "SETĂRI UTILIZATOR", + "unsupportedTitle": "Acțiune neacceptată", + "placeholder": "Selectați un instrument...", + "title": "Adăugare instrument", + "descriptionPlaceholder": "Scurtă descriere a scopului instrumentului, de exemplu, obțineți temperatura pentru o anumită locație.", + "toolLabel": "Unealtă", + "uninstalledTitle": "Instrumentul nu este instalat", + "toolSetting": "Setările instrumentului", + "unsupportedMCPTool": "Versiunea pluginului de strategie a agentului selectat în prezent nu suportă uneltele MCP." + }, + "endpointDeleteContent": "Doriți să eliminați {{name}}?", + "strategyNum": "{{num}} {{strategie}} INCLUS", + "configureApp": "Configurați aplicația", + "actionNum": "{{num}} {{acțiune}} INCLUS", + "endpointsTip": "Acest plugin oferă funcționalități specifice prin puncte finale și puteți configura mai multe seturi de puncte finale pentru spațiul de lucru curent.", + "switchVersion": "Versiune de comutare", + "endpointDisableContent": "Doriți să dezactivați {{name}}?", + "endpointModalTitle": "Configurați punctul final", + "endpointDisableTip": "Dezactivați punctul final", + "endpointsEmpty": "Faceți clic pe butonul \"+\" pentru a adăuga un punct final", + "endpointDeleteTip": "Eliminați punctul final", + "disabled": "Dezactivat", + "configureTool": "Instrumentul de configurare", + "endpointsDocLink": "Vizualizați documentul", + "endpoints": "Capetele", + "serviceOk": "Serviciu OK", + "endpointModalDesc": "Odată configurate, pot fi utilizate funcțiile furnizate de plugin prin intermediul punctelor finale API.", + "modelNum": "{{num}} MODELE INCLUSE", + "configureModel": "Configurarea modelului", + "deprecation": { + "reason": { + "businessAdjustments": "ajustări de afaceri", + "noMaintainer": "fără întreținător", + "ownershipTransferred": "proprietatea transferată" + }, + "noReason": "Acest plugin a fost declarat învechit și nu va mai fi actualizat.", + "onlyReason": "Acest plugin a fost depreciat din cauza {{deprecatedReason}} și nu va mai fi actualizat.", + "fullMessage": "Acest plugin a fost declarat învechit din cauza {{deprecatedReason}}, și nu va mai fi actualizat. Vă rugăm să folosiți în schimb {{-alternativePluginId}}." + } + }, + "debugInfo": { + "viewDocs": "Vizualizați documentele", + "title": "Depanare" + }, + "privilege": { + "whoCanDebug": "Cine poate depana pluginuri?", + "everyone": "Oricine", + "title": "Preferințe plugin", + "whoCanInstall": "Cine poate instala și gestiona plugin-uri?", + "noone": "Nimeni", + "admins": "Administratori" + }, + "pluginInfoModal": { + "release": "Elibera", + "packageName": "Pachet", + "title": "Informații despre plugin", + "repository": "Depozit" + }, + "action": { + "deleteContentRight": "plugin?", + "pluginInfo": "Informații despre plugin", + "usedInApps": "Acest plugin este folosit în aplicațiile {{num}}.", + "delete": "Eliminați pluginul", + "checkForUpdates": "Verificați dacă există actualizări", + "deleteContentLeft": "Doriți să eliminați" + }, + "installModal": { + "labels": { + "version": "Versiune", + "package": "Pachet", + "repository": "Depozit" + }, + "installing": "Instalarea...", + "dropPluginToInstall": "Aruncați pachetul de plugin aici pentru a instala", + "back": "Spate", + "installFailed": "Instalarea a eșuat", + "pluginLoadError": "Eroare de încărcare a pluginului", + "installComplete": "Instalare finalizată", + "installedSuccessfully": "Instalarea cu succes", + "cancel": "Anula", + "install": "Instala", + "uploadingPackage": "Încărcarea {{packageName}}...", + "installPlugin": "Instalează pluginul", + "close": "Închide", + "readyToInstallPackages": "Despre instalarea următoarelor plugin-uri {{num}}", + "next": "Următor", + "installFailedDesc": "Pluginul a fost instalat a eșuat.", + "uploadFailed": "Încărcarea a eșuat", + "fromTrustSource": "Vă rugăm să vă asigurați că instalați plugin-uri numai dintr-o sursă de încredere.", + "readyToInstallPackage": "Despre instalarea următorului plugin", + "pluginLoadErrorDesc": "Acest plugin nu va fi instalat", + "installedSuccessfullyDesc": "Pluginul a fost instalat cu succes.", + "readyToInstall": "Despre instalarea următorului plugin", + "installWarning": "Acest plugin nu este permis să fie instalat." + }, + "installFromGitHub": { + "installFailed": "Instalarea a eșuat", + "updatePlugin": "Actualizați pluginul de pe GitHub", + "uploadFailed": "Încărcarea a eșuat", + "selectVersionPlaceholder": "Vă rugăm să selectați o versiune", + "installNote": "Vă rugăm să vă asigurați că instalați plugin-uri numai dintr-o sursă de încredere.", + "gitHubRepo": "Depozit GitHub", + "selectPackagePlaceholder": "Vă rugăm să selectați un pachet", + "selectPackage": "Selectează pachetul", + "selectVersion": "Selectează versiunea", + "installPlugin": "Instalați pluginul de pe GitHub", + "installedSuccessfully": "Instalarea cu succes" + }, + "upgrade": { + "close": "Închide", + "upgrade": "Instala", + "description": "Despre instalarea următorului plugin", + "upgrading": "Instalarea...", + "successfulTitle": "Instalarea cu succes", + "title": "Instalează pluginul", + "usedInApps": "Folosit în {{num}} aplicații" + }, + "error": { + "fetchReleasesError": "Nu se pot recupera versiunile. Vă rugăm să încercați din nou mai târziu.", + "inValidGitHubUrl": "URL GitHub nevalid. Vă rugăm să introduceți o adresă URL validă în formatul: https://github.com/owner/repo", + "noReleasesFound": "Nu s-au găsit eliberări. Vă rugăm să verificați depozitul GitHub sau URL-ul de intrare." + }, + "marketplace": { + "sortOption": { + "newlyReleased": "Nou lansat", + "recentlyUpdated": "Actualizat recent", + "mostPopular": "Cele mai populare", + "firstReleased": "Prima lansare" + }, + "noPluginFound": "Nu s-a găsit niciun plugin", + "sortBy": "Sortează după", + "discover": "Descoperi", + "empower": "Îmbunătățește-ți dezvoltarea AI", + "pluginsResult": "{{num}} rezultate", + "difyMarketplace": "Piața Dify", + "moreFrom": "Mai multe din Marketplace", + "and": "și", + "viewMore": "Vezi mai mult", + "partnerTip": "Verificat de un partener Dify", + "verifiedTip": "Verificat de Dify" + }, + "task": { + "installError": "{{errorLength}} plugin-urile nu s-au instalat, faceți clic pentru a vizualiza", + "clearAll": "Ștergeți tot", + "installedError": "{{errorLength}} plugin-urile nu s-au instalat", + "installingWithError": "Instalarea pluginurilor {{installingLength}}, {{successLength}} succes, {{errorLength}} eșuat", + "installingWithSuccess": "Instalarea pluginurilor {{installingLength}}, {{successLength}} succes.", + "installing": "Instalarea pluginurilor {{installingLength}}, 0 terminat.", + "installSuccess": "{{successLength}} plugins installed successfully", + "installed": "Installed", + "runningPlugins": "Installing Plugins", + "successPlugins": "Successfully Installed Plugins", + "errorPlugins": "Failed to Install Plugins" + }, + "fromMarketplace": "Din Marketplace", + "from": "Din", + "findMoreInMarketplace": "Află mai multe în Marketplace", + "searchInMarketplace": "Căutare în Marketplace", + "searchTools": "Instrumente de căutare...", + "installFrom": "INSTALEAZĂ DE LA", + "allCategories": "Toate categoriile", + "searchPlugins": "Pluginuri de căutare", + "installPlugin": "Instalează pluginul", + "install": "{{num}} instalări", + "search": "Căutare", + "installAction": "Instala", + "endpointsEnabled": "{{num}} seturi de puncte finale activate", + "searchCategories": "Categorii de căutare", + "metadata": { + "title": "Pluginuri" + }, + "difyVersionNotCompatible": "Versiunea curentă Dify nu este compatibilă cu acest plugin, vă rugăm să faceți upgrade la versiunea minimă necesară: {{minimalDifyVersion}}", + "requestAPlugin": "Solicitați un plugin", + "publishPlugins": "Publicați pluginuri", + "auth": { + "saveAndAuth": "Salvează și Autorizează", + "authRemoved": "Autentificare eliminată", + "custom": "Personalizat", + "addApi": "Adăugați cheia API", + "useOAuthAuth": "Folosește autorizarea OAuth", + "default": "Default", + "saveOnly": "Salvează doar", + "authorizationName": "Numele autorizării", + "oauthClientSettings": "Setările clientului OAuth", + "authorization": "Autorizație", + "useOAuth": "Folosește OAuth", + "authorizations": "Autorizări", + "workspaceDefault": "Spațiul de lucru implicit", + "setDefault": "Setați ca implicit", + "addOAuth": "Adăugați OAuth", + "useApiAuth": "Configurarea autorizării cheii API", + "useApi": "Folosește cheia API", + "oauthClient": "Client OAuth", + "setupOAuth": "Configurați clientul OAuth", + "useApiAuthDesc": "După configurarea acreditivelor, toți membrii din spațiul de lucru pot folosi acest instrument atunci când orchestran aplicații.", + "clientInfo": "Deoarece nu s-au găsit secretele clientului sistemului pentru acest furnizor de instrumente, este necesară configurarea manuală; pentru redirect_uri, vă rugăm să folosiți", + "unavailable": "Necesar", + "customCredentialUnavailable": "Credentialele personalizate sunt în prezent indisponibile", + "credentialUnavailable": "Credențialele nu sunt disponibile în acest moment. Vă rugăm să contactați administratorul.", + "credentialUnavailableInButton": "Credential indisponibil", + "connectedWorkspace": "Spațiu de lucru conectat", + "emptyAuth": "Vă rugăm să configurați autentificarea" + }, + "deprecated": "Încetat de a mai fi utilizat", + "autoUpdate": { + "strategy": { + "disabled": { + "description": "Pluginurile nu se vor actualiza automat", + "name": "Dezactivat" + }, + "fixOnly": { + "selectedDescription": "Actualizare automată doar pentru versiuni patch", + "name": "Fix doar", + "description": "Actualizare automată doar pentru versiunile de patch (de exemplu, 1.0.1 → 1.0.2). Schimbările de versiune minore nu vor declanșa actualizări." + }, + "latest": { + "name": "Ultimul", + "selectedDescription": "Actualizați întotdeauna la cea mai recentă versiune", + "description": "Actualizați întotdeauna la cea mai recentă versiune" + } + }, + "upgradeMode": { + "exclude": "Excluzi selecția", + "all": "Actualizează tot", + "partial": "Numai selectat" + }, + "upgradeModePlaceholder": { + "exclude": "Pluginurile selectate nu se vor actualiza automat.", + "partial": "Numai pluginurile selectate se vor actualiza automat. Nu există pluginuri selectate în prezent, așa că niciun plugin nu se va actualiza automat." + }, + "operation": { + "select": "Selectați plugin-uri", + "clearAll": "Șterge tot" + }, + "pluginDowngradeWarning": { + "title": "Scădere a pluginului", + "exclude": "Exclude de la actualizarea automată", + "downgrade": "Oricum, downgradează", + "description": "Actualizarea automată este în prezent activată pentru acest plugin. Revenirea la o versiune anterioară poate provoca suprascrierea modificărilor tale în timpul următoarei actualizări automate." + }, + "noPluginPlaceholder": { + "noFound": "Nu au fost găsite plugin-uri", + "noInstalled": "Niciun plugin instalat" + }, + "excludeUpdate": "Următoarele {{num}} pluginuri nu se vor actualiza automat", + "updateTimeTitle": "Timp de actualizare", + "updateSettings": "Actualizează setările", + "changeTimezone": "Pentru a schimba fusul orar, mergi la Setări", + "automaticUpdates": "Actualizări automate", + "specifyPluginsToUpdate": "Specificați plugin-urile de actualizat", + "partialUPdate": "Numai următoarele {{num}} pluginuri se vor actualiza automat", + "updateTime": "Timp de actualizare", + "nextUpdateTime": "Următoarea actualizare automată: {{time}}" + }, + "readmeInfo": { + "title": "Citiți-mă", + "needHelpCheckReadme": "Ai nevoie de ajutor? Verifică fișierul README.", + "noReadmeAvailable": "Nu există fișier README disponibil", + "failedToFetch": "Nu s-a putut prelua README" + } +} diff --git a/web/i18n/ro-RO/plugin.ts b/web/i18n/ro-RO/plugin.ts deleted file mode 100644 index e3db03a057..0000000000 --- a/web/i18n/ro-RO/plugin.ts +++ /dev/null @@ -1,325 +0,0 @@ -const translation = { - category: { - all: 'Tot', - bundles: 'Pachete', - agents: 'Strategii pentru agenți', - tools: 'Instrumente', - extensions: 'Extensii', - models: 'Modele', - datasources: 'Surse de date', - triggers: 'Declanșatori', - }, - categorySingle: { - tool: 'Unealtă', - bundle: 'Pachet', - extension: 'Extensie', - agent: 'Strategia agentului', - model: 'Model', - datasource: 'Sursa datelor', - trigger: 'Declanșator', - }, - list: { - source: { - marketplace: 'Instalează din Marketplace', - github: 'Instalați din GitHub', - local: 'Instalare din fișierul pachet local', - }, - noInstalled: 'Nu sunt instalate plugin-uri', - notFound: 'Nu au fost găsite plugin-uri', - }, - source: { - local: 'Fișier pachet local', - marketplace: 'Târg', - github: 'GitHub', - }, - detailPanel: { - categoryTip: { - debugging: 'Plugin de depanare', - github: 'Instalat de pe Github', - marketplace: 'Instalat din Marketplace', - local: 'Plugin local', - }, - operation: { - checkUpdate: 'Verificați actualizarea', - update: 'Actualiza', - viewDetail: 'Vezi detalii', - remove: 'Depărta', - install: 'Instala', - detail: 'Detalii', - info: 'Informații despre plugin', - back: 'Înapoi', - }, - toolSelector: { - unsupportedContent: 'Versiunea de plugin instalată nu oferă această acțiune.', - auto: 'Auto', - empty: 'Faceți clic pe butonul "+" pentru a adăuga instrumente. Puteți adăuga mai multe instrumente.', - uninstalledContent: 'Acest plugin este instalat din depozitul local/GitHub. Vă rugăm să utilizați după instalare.', - descriptionLabel: 'Descrierea instrumentului', - unsupportedContent2: 'Faceți clic pentru a comuta versiunea.', - uninstalledLink: 'Gestionați în pluginuri', - paramsTip1: 'Controlează parametrii de inferență LLM.', - params: 'CONFIGURAREA RAȚIONAMENTULUI', - paramsTip2: 'Când "Auto" este dezactivat, se folosește valoarea implicită.', - settings: 'SETĂRI UTILIZATOR', - unsupportedTitle: 'Acțiune neacceptată', - placeholder: 'Selectați un instrument...', - title: 'Adăugare instrument', - descriptionPlaceholder: 'Scurtă descriere a scopului instrumentului, de exemplu, obțineți temperatura pentru o anumită locație.', - toolLabel: 'Unealtă', - uninstalledTitle: 'Instrumentul nu este instalat', - toolSetting: 'Setările instrumentului', - unsupportedMCPTool: 'Versiunea pluginului de strategie a agentului selectat în prezent nu suportă uneltele MCP.', - }, - endpointDeleteContent: 'Doriți să eliminați {{name}}?', - strategyNum: '{{num}} {{strategie}} INCLUS', - configureApp: 'Configurați aplicația', - actionNum: '{{num}} {{acțiune}} INCLUS', - endpointsTip: 'Acest plugin oferă funcționalități specifice prin puncte finale și puteți configura mai multe seturi de puncte finale pentru spațiul de lucru curent.', - switchVersion: 'Versiune de comutare', - endpointDisableContent: 'Doriți să dezactivați {{name}}?', - endpointModalTitle: 'Configurați punctul final', - endpointDisableTip: 'Dezactivați punctul final', - endpointsEmpty: 'Faceți clic pe butonul "+" pentru a adăuga un punct final', - endpointDeleteTip: 'Eliminați punctul final', - disabled: 'Dezactivat', - configureTool: 'Instrumentul de configurare', - endpointsDocLink: 'Vizualizați documentul', - endpoints: 'Capetele', - serviceOk: 'Serviciu OK', - endpointModalDesc: 'Odată configurate, pot fi utilizate funcțiile furnizate de plugin prin intermediul punctelor finale API.', - modelNum: '{{num}} MODELE INCLUSE', - configureModel: 'Configurarea modelului', - deprecation: { - reason: { - businessAdjustments: 'ajustări de afaceri', - noMaintainer: 'fără întreținător', - ownershipTransferred: 'proprietatea transferată', - }, - noReason: 'Acest plugin a fost declarat învechit și nu va mai fi actualizat.', - onlyReason: 'Acest plugin a fost depreciat din cauza {{deprecatedReason}} și nu va mai fi actualizat.', - fullMessage: 'Acest plugin a fost declarat învechit din cauza {{deprecatedReason}}, și nu va mai fi actualizat. Vă rugăm să folosiți în schimb {{-alternativePluginId}}.', - }, - }, - debugInfo: { - viewDocs: 'Vizualizați documentele', - title: 'Depanare', - }, - privilege: { - whoCanDebug: 'Cine poate depana pluginuri?', - everyone: 'Oricine', - title: 'Preferințe plugin', - whoCanInstall: 'Cine poate instala și gestiona plugin-uri?', - noone: 'Nimeni', - admins: 'Administratori', - }, - pluginInfoModal: { - release: 'Elibera', - packageName: 'Pachet', - title: 'Informații despre plugin', - repository: 'Depozit', - }, - action: { - deleteContentRight: 'plugin?', - pluginInfo: 'Informații despre plugin', - usedInApps: 'Acest plugin este folosit în aplicațiile {{num}}.', - delete: 'Eliminați pluginul', - checkForUpdates: 'Verificați dacă există actualizări', - deleteContentLeft: 'Doriți să eliminați', - }, - installModal: { - labels: { - version: 'Versiune', - package: 'Pachet', - repository: 'Depozit', - }, - installing: 'Instalarea...', - dropPluginToInstall: 'Aruncați pachetul de plugin aici pentru a instala', - back: 'Spate', - installFailed: 'Instalarea a eșuat', - pluginLoadError: 'Eroare de încărcare a pluginului', - installComplete: 'Instalare finalizată', - installedSuccessfully: 'Instalarea cu succes', - cancel: 'Anula', - install: 'Instala', - uploadingPackage: 'Încărcarea {{packageName}}...', - installPlugin: 'Instalează pluginul', - close: 'Închide', - readyToInstallPackages: 'Despre instalarea următoarelor plugin-uri {{num}}', - next: 'Următor', - installFailedDesc: 'Pluginul a fost instalat a eșuat.', - uploadFailed: 'Încărcarea a eșuat', - fromTrustSource: 'Vă rugăm să vă asigurați că instalați plugin-uri numai dintr-o sursă de încredere.', - readyToInstallPackage: 'Despre instalarea următorului plugin', - pluginLoadErrorDesc: 'Acest plugin nu va fi instalat', - installedSuccessfullyDesc: 'Pluginul a fost instalat cu succes.', - readyToInstall: 'Despre instalarea următorului plugin', - installWarning: 'Acest plugin nu este permis să fie instalat.', - }, - installFromGitHub: { - installFailed: 'Instalarea a eșuat', - updatePlugin: 'Actualizați pluginul de pe GitHub', - uploadFailed: 'Încărcarea a eșuat', - selectVersionPlaceholder: 'Vă rugăm să selectați o versiune', - installNote: 'Vă rugăm să vă asigurați că instalați plugin-uri numai dintr-o sursă de încredere.', - gitHubRepo: 'Depozit GitHub', - selectPackagePlaceholder: 'Vă rugăm să selectați un pachet', - selectPackage: 'Selectează pachetul', - selectVersion: 'Selectează versiunea', - installPlugin: 'Instalați pluginul de pe GitHub', - installedSuccessfully: 'Instalarea cu succes', - }, - upgrade: { - close: 'Închide', - upgrade: 'Instala', - description: 'Despre instalarea următorului plugin', - upgrading: 'Instalarea...', - successfulTitle: 'Instalarea cu succes', - title: 'Instalează pluginul', - usedInApps: 'Folosit în {{num}} aplicații', - }, - error: { - fetchReleasesError: 'Nu se pot recupera versiunile. Vă rugăm să încercați din nou mai târziu.', - inValidGitHubUrl: 'URL GitHub nevalid. Vă rugăm să introduceți o adresă URL validă în formatul: https://github.com/owner/repo', - noReleasesFound: 'Nu s-au găsit eliberări. Vă rugăm să verificați depozitul GitHub sau URL-ul de intrare.', - }, - marketplace: { - sortOption: { - newlyReleased: 'Nou lansat', - recentlyUpdated: 'Actualizat recent', - mostPopular: 'Cele mai populare', - firstReleased: 'Prima lansare', - }, - noPluginFound: 'Nu s-a găsit niciun plugin', - sortBy: 'Sortează după', - discover: 'Descoperi', - empower: 'Îmbunătățește-ți dezvoltarea AI', - pluginsResult: '{{num}} rezultate', - difyMarketplace: 'Piața Dify', - moreFrom: 'Mai multe din Marketplace', - and: 'și', - viewMore: 'Vezi mai mult', - partnerTip: 'Verificat de un partener Dify', - verifiedTip: 'Verificat de Dify', - }, - task: { - installError: '{{errorLength}} plugin-urile nu s-au instalat, faceți clic pentru a vizualiza', - clearAll: 'Ștergeți tot', - installedError: '{{errorLength}} plugin-urile nu s-au instalat', - installingWithError: 'Instalarea pluginurilor {{installingLength}}, {{successLength}} succes, {{errorLength}} eșuat', - installingWithSuccess: 'Instalarea pluginurilor {{installingLength}}, {{successLength}} succes.', - installing: 'Instalarea pluginurilor {{installingLength}}, 0 terminat.', - installSuccess: '{{successLength}} plugins installed successfully', - installed: 'Installed', - runningPlugins: 'Installing Plugins', - successPlugins: 'Successfully Installed Plugins', - errorPlugins: 'Failed to Install Plugins', - }, - fromMarketplace: 'Din Marketplace', - from: 'Din', - findMoreInMarketplace: 'Află mai multe în Marketplace', - searchInMarketplace: 'Căutare în Marketplace', - searchTools: 'Instrumente de căutare...', - installFrom: 'INSTALEAZĂ DE LA', - allCategories: 'Toate categoriile', - searchPlugins: 'Pluginuri de căutare', - installPlugin: 'Instalează pluginul', - install: '{{num}} instalări', - search: 'Căutare', - installAction: 'Instala', - endpointsEnabled: '{{num}} seturi de puncte finale activate', - searchCategories: 'Categorii de căutare', - metadata: { - title: 'Pluginuri', - }, - difyVersionNotCompatible: 'Versiunea curentă Dify nu este compatibilă cu acest plugin, vă rugăm să faceți upgrade la versiunea minimă necesară: {{minimalDifyVersion}}', - requestAPlugin: 'Solicitați un plugin', - publishPlugins: 'Publicați pluginuri', - auth: { - saveAndAuth: 'Salvează și Autorizează', - authRemoved: 'Autentificare eliminată', - custom: 'Personalizat', - addApi: 'Adăugați cheia API', - useOAuthAuth: 'Folosește autorizarea OAuth', - default: 'Default', - saveOnly: 'Salvează doar', - authorizationName: 'Numele autorizării', - oauthClientSettings: 'Setările clientului OAuth', - authorization: 'Autorizație', - useOAuth: 'Folosește OAuth', - authorizations: 'Autorizări', - workspaceDefault: 'Spațiul de lucru implicit', - setDefault: 'Setați ca implicit', - addOAuth: 'Adăugați OAuth', - useApiAuth: 'Configurarea autorizării cheii API', - useApi: 'Folosește cheia API', - oauthClient: 'Client OAuth', - setupOAuth: 'Configurați clientul OAuth', - useApiAuthDesc: 'După configurarea acreditivelor, toți membrii din spațiul de lucru pot folosi acest instrument atunci când orchestran aplicații.', - clientInfo: 'Deoarece nu s-au găsit secretele clientului sistemului pentru acest furnizor de instrumente, este necesară configurarea manuală; pentru redirect_uri, vă rugăm să folosiți', - unavailable: 'Necesar', - customCredentialUnavailable: 'Credentialele personalizate sunt în prezent indisponibile', - credentialUnavailable: 'Credențialele nu sunt disponibile în acest moment. Vă rugăm să contactați administratorul.', - credentialUnavailableInButton: 'Credential indisponibil', - connectedWorkspace: 'Spațiu de lucru conectat', - emptyAuth: 'Vă rugăm să configurați autentificarea', - }, - deprecated: 'Încetat de a mai fi utilizat', - autoUpdate: { - strategy: { - disabled: { - description: 'Pluginurile nu se vor actualiza automat', - name: 'Dezactivat', - }, - fixOnly: { - selectedDescription: 'Actualizare automată doar pentru versiuni patch', - name: 'Fix doar', - description: 'Actualizare automată doar pentru versiunile de patch (de exemplu, 1.0.1 → 1.0.2). Schimbările de versiune minore nu vor declanșa actualizări.', - }, - latest: { - name: 'Ultimul', - selectedDescription: 'Actualizați întotdeauna la cea mai recentă versiune', - description: 'Actualizați întotdeauna la cea mai recentă versiune', - }, - }, - upgradeMode: { - exclude: 'Excluzi selecția', - all: 'Actualizează tot', - partial: 'Numai selectat', - }, - upgradeModePlaceholder: { - exclude: 'Pluginurile selectate nu se vor actualiza automat.', - partial: 'Numai pluginurile selectate se vor actualiza automat. Nu există pluginuri selectate în prezent, așa că niciun plugin nu se va actualiza automat.', - }, - operation: { - select: 'Selectați plugin-uri', - clearAll: 'Șterge tot', - }, - pluginDowngradeWarning: { - title: 'Scădere a pluginului', - exclude: 'Exclude de la actualizarea automată', - downgrade: 'Oricum, downgradează', - description: 'Actualizarea automată este în prezent activată pentru acest plugin. Revenirea la o versiune anterioară poate provoca suprascrierea modificărilor tale în timpul următoarei actualizări automate.', - }, - noPluginPlaceholder: { - noFound: 'Nu au fost găsite plugin-uri', - noInstalled: 'Niciun plugin instalat', - }, - excludeUpdate: 'Următoarele {{num}} pluginuri nu se vor actualiza automat', - updateTimeTitle: 'Timp de actualizare', - updateSettings: 'Actualizează setările', - changeTimezone: 'Pentru a schimba fusul orar, mergi la Setări', - automaticUpdates: 'Actualizări automate', - specifyPluginsToUpdate: 'Specificați plugin-urile de actualizat', - partialUPdate: 'Numai următoarele {{num}} pluginuri se vor actualiza automat', - updateTime: 'Timp de actualizare', - nextUpdateTime: 'Următoarea actualizare automată: {{time}}', - }, - readmeInfo: { - title: 'Citiți-mă', - needHelpCheckReadme: 'Ai nevoie de ajutor? Verifică fișierul README.', - noReadmeAvailable: 'Nu există fișier README disponibil', - failedToFetch: 'Nu s-a putut prelua README', - }, -} - -export default translation diff --git a/web/i18n/ro-RO/register.json b/web/i18n/ro-RO/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/ro-RO/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/ro-RO/register.ts b/web/i18n/ro-RO/register.ts deleted file mode 100644 index 928649474b..0000000000 --- a/web/i18n/ro-RO/register.ts +++ /dev/null @@ -1,4 +0,0 @@ -const translation = { -} - -export default translation diff --git a/web/i18n/ro-RO/run-log.json b/web/i18n/ro-RO/run-log.json new file mode 100644 index 0000000000..1f0e598bf9 --- /dev/null +++ b/web/i18n/ro-RO/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "INTRARE", + "result": "REZULTAT", + "detail": "DETALIU", + "tracing": "URMĂRIRE", + "resultPanel": { + "status": "STARE", + "time": "TIMP SCURS", + "tokens": "TOTAL TOKENI" + }, + "meta": { + "title": "METADATE", + "status": "Stare", + "version": "Versiune", + "executor": "Executor", + "startTime": "Timp de început", + "time": "Timp scurs", + "tokens": "Total tokeni", + "steps": "Pași de rulare" + }, + "resultEmpty": { + "title": "Această rulare generează doar format JSON,", + "tipLeft": "vă rugăm să mergeți la ", + "link": "panoul de detalii", + "tipRight": " pentru a o vizualiza." + }, + "actionLogs": "Jurnale de acțiuni", + "circularInvocationTip": "Există o invocare circulară a instrumentelor/nodurilor în fluxul de lucru curent." +} diff --git a/web/i18n/ro-RO/run-log.ts b/web/i18n/ro-RO/run-log.ts deleted file mode 100644 index 15aa590406..0000000000 --- a/web/i18n/ro-RO/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -const translation = { - input: 'INTRARE', - result: 'REZULTAT', - detail: 'DETALIU', - tracing: 'URMĂRIRE', - resultPanel: { - status: 'STARE', - time: 'TIMP SCURS', - tokens: 'TOTAL TOKENI', - }, - meta: { - title: 'METADATE', - status: 'Stare', - version: 'Versiune', - executor: 'Executor', - startTime: 'Timp de început', - time: 'Timp scurs', - tokens: 'Total tokeni', - steps: 'Pași de rulare', - }, - resultEmpty: { - title: 'Această rulare generează doar format JSON,', - tipLeft: 'vă rugăm să mergeți la ', - link: 'panoul de detalii', - tipRight: ' pentru a o vizualiza.', - }, - actionLogs: 'Jurnale de acțiuni', - circularInvocationTip: 'Există o invocare circulară a instrumentelor/nodurilor în fluxul de lucru curent.', -} - -export default translation diff --git a/web/i18n/ro-RO/share.json b/web/i18n/ro-RO/share.json new file mode 100644 index 0000000000..e8270f0afb --- /dev/null +++ b/web/i18n/ro-RO/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "", + "appUnavailable": "Aplicația nu este disponibilă", + "appUnknownError": "Aplicația nu este disponibilă" + }, + "chat": { + "newChat": "Chat nou", + "pinnedTitle": "Fixat", + "unpinnedTitle": "Conversații", + "newChatDefaultName": "Conversație nouă", + "resetChat": "Resetează conversația", + "poweredBy": "Furnizat de", + "prompt": "Sugestie", + "privatePromptConfigTitle": "Setări conversație", + "publicPromptConfigTitle": "Sugestie inițială", + "configStatusDes": "Înainte de a începe, puteți modifica setările conversației", + "configDisabled": "Setările sesiunii anterioare au fost utilizate pentru această sesiune.", + "startChat": "Începe chat", + "privacyPolicyLeft": "Vă rugăm să citiți ", + "privacyPolicyMiddle": "politica de confidențialitate", + "privacyPolicyRight": " furnizată de dezvoltatorul aplicației.", + "deleteConversation": { + "title": "Șterge conversația", + "content": "Sigur doriți să ștergeți această conversație?" + }, + "tryToSolve": "Încercați să rezolvați", + "temporarySystemIssue": "Ne pare rău, problemă temporară a sistemului.", + "expand": "Extinde", + "collapse": "Restrânge", + "chatFormTip": "Setările chat-ului nu pot fi modificate după ce chat-ul a început.", + "viewChatSettings": "Vizualizează setările de chat", + "newChatTip": "Deja într-o discuție nouă", + "chatSettingsTitle": "Nouă configurare a chatului" + }, + "generation": { + "tabs": { + "create": "Rulează o singură dată", + "batch": "Rulează în lot", + "saved": "Salvat" + }, + "savedNoData": { + "title": "Nu ați salvat încă un rezultat!", + "description": "Începeți generarea de conținut și găsiți aici rezultatele salvate.", + "startCreateContent": "Începeți crearea de conținut" + }, + "title": "Completare AI", + "queryTitle": "Conținutul interogării", + "completionResult": "Rezultatul completării", + "queryPlaceholder": "Scrieți conținutul interogării...", + "run": "Execută", + "copy": "Copiază", + "resultTitle": "Completare AI", + "noData": "AI vă va oferi ceea ce doriți aici.", + "csvUploadTitle": "Trageți și plasați fișierul CSV aici sau ", + "browse": "răsfoiți", + "csvStructureTitle": "Fișierul CSV trebuie să respecte următoarea structură:", + "downloadTemplate": "Descărcați șablonul aici", + "field": "Câmp", + "batchFailed": { + "info": "{{num}} execuții eșuate", + "retry": "Reîncercați", + "outputPlaceholder": "Niciun conținut de ieșire" + }, + "errorMsg": { + "empty": "Vă rugăm să introduceți conținut în fișierul încărcat.", + "fileStructNotMatch": "Fișierul CSV încărcat nu se potrivește cu structura.", + "emptyLine": "Rândul {{rowIndex}} este gol", + "invalidLine": "Rândul {{rowIndex}}: valoarea {{varName}} nu poate fi goală", + "moreThanMaxLengthLine": "Rândul {{rowIndex}}: valoarea {{varName}} nu poate avea mai mult de {{maxLength}} caractere", + "atLeastOne": "Vă rugăm să introduceți cel puțin un rând în fișierul încărcat." + }, + "execution": "Rulare", + "executions": "{{num}} rulări", + "stopRun": "Oprește execuția" + }, + "login": { + "backToHome": "Înapoi la Acasă" + } +} diff --git a/web/i18n/ro-RO/share.ts b/web/i18n/ro-RO/share.ts deleted file mode 100644 index 46908b08c6..0000000000 --- a/web/i18n/ro-RO/share.ts +++ /dev/null @@ -1,86 +0,0 @@ -const translation = { - common: { - welcome: '', - appUnavailable: 'Aplicația nu este disponibilă', - appUnknownError: 'Aplicația nu este disponibilă', - }, - chat: { - newChat: 'Chat nou', - pinnedTitle: 'Fixat', - unpinnedTitle: 'Conversații', - newChatDefaultName: 'Conversație nouă', - resetChat: 'Resetează conversația', - poweredBy: 'Furnizat de', - prompt: 'Sugestie', - privatePromptConfigTitle: 'Setări conversație', - publicPromptConfigTitle: 'Sugestie inițială', - configStatusDes: 'Înainte de a începe, puteți modifica setările conversației', - configDisabled: - 'Setările sesiunii anterioare au fost utilizate pentru această sesiune.', - startChat: 'Începe chat', - privacyPolicyLeft: - 'Vă rugăm să citiți ', - privacyPolicyMiddle: - 'politica de confidențialitate', - privacyPolicyRight: - ' furnizată de dezvoltatorul aplicației.', - deleteConversation: { - title: 'Șterge conversația', - content: 'Sigur doriți să ștergeți această conversație?', - }, - tryToSolve: 'Încercați să rezolvați', - temporarySystemIssue: 'Ne pare rău, problemă temporară a sistemului.', - expand: 'Extinde', - collapse: 'Restrânge', - chatFormTip: 'Setările chat-ului nu pot fi modificate după ce chat-ul a început.', - viewChatSettings: 'Vizualizează setările de chat', - newChatTip: 'Deja într-o discuție nouă', - chatSettingsTitle: 'Nouă configurare a chatului', - }, - generation: { - tabs: { - create: 'Rulează o singură dată', - batch: 'Rulează în lot', - saved: 'Salvat', - }, - savedNoData: { - title: 'Nu ați salvat încă un rezultat!', - description: 'Începeți generarea de conținut și găsiți aici rezultatele salvate.', - startCreateContent: 'Începeți crearea de conținut', - }, - title: 'Completare AI', - queryTitle: 'Conținutul interogării', - completionResult: 'Rezultatul completării', - queryPlaceholder: 'Scrieți conținutul interogării...', - run: 'Execută', - copy: 'Copiază', - resultTitle: 'Completare AI', - noData: 'AI vă va oferi ceea ce doriți aici.', - csvUploadTitle: 'Trageți și plasați fișierul CSV aici sau ', - browse: 'răsfoiți', - csvStructureTitle: 'Fișierul CSV trebuie să respecte următoarea structură:', - downloadTemplate: 'Descărcați șablonul aici', - field: 'Câmp', - batchFailed: { - info: '{{num}} execuții eșuate', - retry: 'Reîncercați', - outputPlaceholder: 'Niciun conținut de ieșire', - }, - errorMsg: { - empty: 'Vă rugăm să introduceți conținut în fișierul încărcat.', - fileStructNotMatch: 'Fișierul CSV încărcat nu se potrivește cu structura.', - emptyLine: 'Rândul {{rowIndex}} este gol', - invalidLine: 'Rândul {{rowIndex}}: valoarea {{varName}} nu poate fi goală', - moreThanMaxLengthLine: 'Rândul {{rowIndex}}: valoarea {{varName}} nu poate avea mai mult de {{maxLength}} caractere', - atLeastOne: 'Vă rugăm să introduceți cel puțin un rând în fișierul încărcat.', - }, - execution: 'Rulare', - executions: '{{num}} rulări', - stopRun: 'Oprește execuția', - }, - login: { - backToHome: 'Înapoi la Acasă', - }, -} - -export default translation diff --git a/web/i18n/ro-RO/time.json b/web/i18n/ro-RO/time.json new file mode 100644 index 0000000000..1d21b85e72 --- /dev/null +++ b/web/i18n/ro-RO/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Sun": "Soare", + "Thu": "Joia", + "Wed": "Miercuri", + "Tue": "Marți", + "Sat": "Sat", + "Mon": "Mon", + "Fri": "Vineri" + }, + "months": { + "December": "Decembrie", + "February": "Februarie", + "April": "Aprilie", + "August": "August", + "September": "septembrie", + "March": "Martie", + "May": "Mai", + "July": "Iulie", + "June": "Iunie", + "October": "Octombrie", + "November": "Noiembrie", + "January": "ianuarie" + }, + "operation": { + "cancel": "Anulează", + "pickDate": "Alege o dată", + "now": "Acum", + "ok": "Bine" + }, + "title": { + "pickTime": "Alegeți timpul" + }, + "defaultPlaceholder": "Alege o oră...", + "dateFormats": { + "display": "MMMM D, YYYY", + "input": "AAAA-LL-ZZ", + "output": "AAAA-LL-ZZ", + "displayWithTime": "MMMM D, YYYY hh:mm A", + "outputWithTime": "AAAA-LL-ZZSS:mm:ss.SSSZ" + } +} diff --git a/web/i18n/ro-RO/time.ts b/web/i18n/ro-RO/time.ts deleted file mode 100644 index 6fffd78d4a..0000000000 --- a/web/i18n/ro-RO/time.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - daysInWeek: { - Sun: 'Soare', - Thu: 'Joia', - Wed: 'Miercuri', - Tue: 'Marți', - Sat: 'Sat', - Mon: 'Mon', - Fri: 'Vineri', - }, - months: { - December: 'Decembrie', - February: 'Februarie', - April: 'Aprilie', - August: 'August', - September: 'septembrie', - March: 'Martie', - May: 'Mai', - July: 'Iulie', - June: 'Iunie', - October: 'Octombrie', - November: 'Noiembrie', - January: 'ianuarie', - }, - operation: { - cancel: 'Anulează', - pickDate: 'Alege o dată', - now: 'Acum', - ok: 'Bine', - }, - title: { - pickTime: 'Alegeți timpul', - }, - defaultPlaceholder: 'Alege o oră...', - dateFormats: { - display: 'MMMM D, YYYY', - input: 'AAAA-LL-ZZ', - output: 'AAAA-LL-ZZ', - displayWithTime: 'MMMM D, YYYY hh:mm A', - outputWithTime: 'AAAA-LL-ZZSS:mm:ss.SSSZ', - }, -} - -export default translation diff --git a/web/i18n/ro-RO/tools.json b/web/i18n/ro-RO/tools.json new file mode 100644 index 0000000000..03294b0def --- /dev/null +++ b/web/i18n/ro-RO/tools.json @@ -0,0 +1,262 @@ +{ + "title": "Instrumente", + "createCustomTool": "Creează Instrument Personalizat", + "type": { + "builtIn": "Incorporat", + "custom": "Personalizat", + "workflow": "Flux de lucru" + }, + "contribute": { + "line1": "Sunt interesat să ", + "line2": "contribui la Dify cu instrumente.", + "viewGuide": "Vezi ghidul" + }, + "author": "De", + "auth": { + "authorized": "Autorizat", + "setup": "Configurează autorizarea pentru a utiliza", + "setupModalTitle": "Configurează Autorizarea", + "setupModalTitleDescription": "După configurarea credențialelor, toți membrii din spațiul de lucru pot utiliza acest instrument la orchestrarea aplicațiilor." + }, + "includeToolNum": "{{num}} instrumente incluse", + "createTool": { + "title": "Creează Instrument Personalizat", + "editAction": "Configurează", + "editTitle": "Editează Instrument Personalizat", + "name": "Nume", + "toolNamePlaceHolder": "Introduceți numele instrumentului", + "schema": "Schema", + "schemaPlaceHolder": "Introduceți aici schema OpenAPI", + "viewSchemaSpec": "Vezi specificația OpenAPI-Swagger", + "importFromUrl": "Importă de la URL", + "importFromUrlPlaceHolder": "https://...", + "urlError": "Vă rugăm să introduceți un URL valid", + "examples": "Exemple", + "exampleOptions": { + "json": "Vreme(JSON)", + "yaml": "Pet Store(YAML)", + "blankTemplate": "Șablon Gol" + }, + "availableTools": { + "title": "Instrumente Disponibile", + "name": "Nume", + "description": "Descriere", + "method": "Metodă", + "path": "Cale", + "action": "Acțiuni", + "test": "Testează" + }, + "authMethod": { + "title": "Metoda de Autorizare", + "type": "Tipul de Autorizare", + "keyTooltip": "Cheie antet HTTP, puteți lăsa \"Autorizare\" dacă nu știți ce este sau setați-o la o valoare personalizată", + "types": { + "none": "Niciuna", + "apiKeyPlaceholder": "Nume antet HTTP pentru cheia API", + "apiValuePlaceholder": "Introduceți cheia API", + "api_key_header": "Antet", + "api_key_query": "Parametru de interogare", + "queryParamPlaceholder": "Numele parametrului de interogare pentru cheia API" + }, + "key": "Cheie", + "value": "Valoare", + "queryParam": "Parametru de interogare", + "queryParamTooltip": "Numele parametrului de interogare pentru cheia API care trebuie transmis, de exemplu, \"key\" în \"https://example.com/test?key=API_KEY\"." + }, + "authHeaderPrefix": { + "title": "Tipul de Autentificare", + "types": { + "basic": "Basic", + "bearer": "Bearer", + "custom": "Personalizat" + } + }, + "privacyPolicy": "Politica de Confidențialitate", + "privacyPolicyPlaceholder": "Vă rugăm să introduceți politica de confidențialitate", + "deleteToolConfirmTitle": "Ștergeți această unealtă?", + "deleteToolConfirmContent": " Ștergerea uneltă este irreversibilă. Utilizatorii nu vor mai putea accesa uneltă dvs.", + "toolInput": { + "methodParameter": "Parametru", + "description": "Descriere", + "methodSetting": "Setare", + "methodSettingTip": "Utilizatorul completează configurația instrumentului", + "methodParameterTip": "Completări LLM în timpul inferenței", + "name": "Nume", + "descriptionPlaceholder": "Descrierea semnificației parametrului", + "label": "Tags", + "required": "Necesar", + "method": "Metodă", + "title": "Intrare instrument", + "labelPlaceholder": "Alegeți etichetele (opțional)" + }, + "descriptionPlaceholder": "Scurtă descriere a scopului instrumentului, de exemplu, obțineți temperatura pentru o anumită locație.", + "nameForToolCall": "Numele apelului instrumentului", + "description": "Descriere", + "confirmTip": "Aplicațiile care folosesc acest instrument vor fi afectate", + "nameForToolCallPlaceHolder": "Utilizat pentru recunoașterea mașinii, cum ar fi getCurrentWeather, list_pets", + "customDisclaimer": "Declinarea responsabilității personalizate", + "confirmTitle": "Confirmați pentru a salva?", + "customDisclaimerPlaceholder": "Vă rugăm să introduceți declinarea responsabilității personalizate", + "nameForToolCallTip": "Acceptă doar numere, litere și caractere de subliniere.", + "toolOutput": { + "title": "Ieșire instrument", + "name": "Nume", + "reserved": "Rezervat", + "reservedParameterDuplicateTip": "text, json și fișiere sunt variabile rezervate. Variabilele cu aceste nume nu pot apărea în schema de ieșire.", + "description": "Descriere" + } + }, + "test": { + "title": "Testează", + "parametersValue": "Parametri & Valoare", + "parameters": "Parametri", + "value": "Valoare", + "testResult": "Rezultate Test", + "testResultPlaceholder": "Rezultatul testului va fi afișat aici" + }, + "thought": { + "using": "Utilizând", + "used": "Utilizat", + "requestTitle": "Cerere către", + "responseTitle": "Răspuns de la" + }, + "setBuiltInTools": { + "info": "Informații", + "setting": "Setări", + "toolDescription": "Descriere instrument", + "parameters": "parametri", + "string": "șir", + "number": "număr", + "required": "Obligatoriu", + "infoAndSetting": "Informații și Setări", + "file": "fișier" + }, + "noCustomTool": { + "title": "Niciun instrument personalizat!", + "content": "Adăugați și gestionați aici instrumentele personalizate pentru construirea aplicațiilor AI.", + "createTool": "Creează Instrument" + }, + "noSearchRes": { + "title": "Ne pare rău, nu s-au găsit rezultate!", + "content": "Nu am putut găsi niciun instrument care să se potrivească căutării dvs.", + "reset": "Resetează Căutarea" + }, + "builtInPromptTitle": "Prompt", + "toolRemoved": "Instrument eliminat", + "notAuthorized": "Instrument neautorizat", + "howToGet": "Cum să obții", + "addToolModal": { + "added": "adăugat", + "category": "categorie", + "type": "tip", + "custom": { + "title": "Niciun instrument personalizat disponibil", + "tip": "Creează un instrument personalizat" + }, + "workflow": { + "title": "Niciun instrument de flux de lucru disponibil", + "tip": "Publicați fluxuri de lucru ca instrumente în Studio" + }, + "mcp": { + "title": "Niciun instrument MCP disponibil", + "tip": "Adăugați un server MCP" + }, + "agent": { + "title": "Nicio strategie de agent disponibilă" + } + }, + "openInStudio": "Deschide în Studio", + "customToolTip": "Aflați mai multe despre instrumentele personalizate Dify", + "toolNameUsageTip": "Numele de apel al instrumentului pentru raționamentul și solicitarea agentului", + "copyToolName": "Copiază numele", + "noTools": "Nu s-au găsit unelte", + "mcp": { + "create": { + "cardTitle": "Adăugare Server MCP (HTTP)", + "cardLink": "Aflați mai multe despre integrarea serverului MCP" + }, + "noConfigured": "Server Neconfigurat", + "updateTime": "Actualizat", + "toolsCount": "{count} unelte", + "noTools": "Nu există unelte disponibile", + "modal": { + "title": "Adăugare Server MCP (HTTP)", + "editTitle": "Editare Server MCP (HTTP)", + "name": "Nume și Pictogramă", + "namePlaceholder": "Denumiți-vă serverul MCP", + "serverUrl": "URL Server", + "serverUrlPlaceholder": "URL către endpoint-ul serverului", + "serverUrlWarning": "Actualizarea adresei serverului poate întrerupe aplicațiile care depind de acesta", + "serverIdentifier": "Identificator Server", + "serverIdentifierTip": "Identificator unic pentru serverul MCP în spațiul de lucru. Doar litere mici, cifre, underscore și cratime. Maxim 24 de caractere.", + "serverIdentifierPlaceholder": "Identificator unic, ex: my-mcp-server", + "serverIdentifierWarning": "Serverul nu va fi recunoscut de aplicațiile existente după schimbarea ID-ului", + "cancel": "Anulare", + "save": "Salvare", + "confirm": "Adăugare și Autorizare", + "timeout": "Timp de așteptare", + "sseReadTimeout": "Timp de așteptare pentru citirea SSE", + "headerKeyPlaceholder": "de exemplu, Autorizație", + "headers": "Antete", + "addHeader": "Adăugați antet", + "headerValuePlaceholder": "de exemplu, Bearer token123", + "timeoutPlaceholder": "treizeci", + "headerKey": "Numele antetului", + "headerValue": "Valoare Antet", + "maskedHeadersTip": "Valorile de antet sunt mascate pentru securitate. Modificările vor actualiza valorile reale.", + "headersTip": "Header-uri HTTP suplimentare de trimis cu cererile către serverul MCP", + "noHeaders": "Nu sunt configurate antete personalizate.", + "authentication": "Autentificare", + "configurations": "Configurații", + "clientSecretPlaceholder": "Secretul Clientului", + "clientID": "ID client", + "useDynamicClientRegistration": "Utilizați înregistrarea dinamică a clientului", + "clientSecret": "Secretul Clientului", + "redirectUrlWarning": "Vă rugăm să configurați URL-ul de redirecționare OAuth astfel:" + }, + "delete": "Eliminare Server MCP", + "deleteConfirmTitle": "Ștergeți {mcp}?", + "operation": { + "edit": "Editare", + "remove": "Eliminare" + }, + "authorize": "Autorizare", + "authorizing": "Se autorizează...", + "authorizingRequired": "Autorizare necesară", + "authorizeTip": "După autorizare, uneltele vor fi afișate aici.", + "update": "Actualizare", + "updating": "Se actualizează...", + "gettingTools": "Se obțin unelte...", + "updateTools": "Se actualizează unelte...", + "toolsEmpty": "Unelte neîncărcate", + "getTools": "Obține unelte", + "toolUpdateConfirmTitle": "Actualizare Listă Unelte", + "toolUpdateConfirmContent": "Actualizarea listei de unelte poate afecta aplicațiile existente. Continuați?", + "toolsNum": "{count} unelte incluse", + "onlyTool": "1 unealtă inclusă", + "identifier": "Identificator Server (Clic pentru Copiere)", + "server": { + "title": "Server MCP", + "url": "URL Server", + "reGen": "Regenerați URL server?", + "addDescription": "Adăugare descriere", + "edit": "Editare descriere", + "modal": { + "addTitle": "Adăugați descriere pentru activarea serverului MCP", + "editTitle": "Editare descriere", + "description": "Descriere", + "descriptionPlaceholder": "Explicați funcționalitatea acestei unelte și cum ar trebui să fie utilizată de LLM", + "parameters": "Parametri", + "parametersTip": "Adăugați descrieri pentru fiecare parametru pentru a ajuta LLM să înțeleagă scopul și constrângerile.", + "parametersPlaceholder": "Scopul și constrângerile parametrului", + "confirm": "Activare Server MCP" + }, + "publishTip": "Aplicație nepublicată. Publicați aplicația mai întâi." + }, + "toolItem": { + "parameters": "Parametri", + "noDescription": "Fără descriere" + } + }, + "allTools": "Toate instrumentele" +} diff --git a/web/i18n/ro-RO/tools.ts b/web/i18n/ro-RO/tools.ts deleted file mode 100644 index c44320dbed..0000000000 --- a/web/i18n/ro-RO/tools.ts +++ /dev/null @@ -1,264 +0,0 @@ -const translation = { - title: 'Instrumente', - createCustomTool: 'Creează Instrument Personalizat', - type: { - builtIn: 'Incorporat', - custom: 'Personalizat', - workflow: 'Flux de lucru', - }, - contribute: { - line1: 'Sunt interesat să ', - line2: 'contribui la Dify cu instrumente.', - viewGuide: 'Vezi ghidul', - }, - author: 'De', - auth: { - authorized: 'Autorizat', - setup: 'Configurează autorizarea pentru a utiliza', - setupModalTitle: 'Configurează Autorizarea', - setupModalTitleDescription: 'După configurarea credențialelor, toți membrii din spațiul de lucru pot utiliza acest instrument la orchestrarea aplicațiilor.', - }, - includeToolNum: '{{num}} instrumente incluse', - createTool: { - title: 'Creează Instrument Personalizat', - editAction: 'Configurează', - editTitle: 'Editează Instrument Personalizat', - name: 'Nume', - toolNamePlaceHolder: 'Introduceți numele instrumentului', - schema: 'Schema', - schemaPlaceHolder: 'Introduceți aici schema OpenAPI', - viewSchemaSpec: 'Vezi specificația OpenAPI-Swagger', - importFromUrl: 'Importă de la URL', - importFromUrlPlaceHolder: 'https://...', - urlError: 'Vă rugăm să introduceți un URL valid', - examples: 'Exemple', - exampleOptions: { - json: 'Vreme(JSON)', - yaml: 'Pet Store(YAML)', - blankTemplate: 'Șablon Gol', - }, - availableTools: { - title: 'Instrumente Disponibile', - name: 'Nume', - description: 'Descriere', - method: 'Metodă', - path: 'Cale', - action: 'Acțiuni', - test: 'Testează', - }, - authMethod: { - title: 'Metoda de Autorizare', - type: 'Tipul de Autorizare', - keyTooltip: 'Cheie antet HTTP, puteți lăsa "Autorizare" dacă nu știți ce este sau setați-o la o valoare personalizată', - types: { - none: 'Niciuna', - apiKeyPlaceholder: 'Nume antet HTTP pentru cheia API', - apiValuePlaceholder: 'Introduceți cheia API', - api_key_header: 'Antet', - api_key_query: 'Parametru de interogare', - queryParamPlaceholder: 'Numele parametrului de interogare pentru cheia API', - }, - key: 'Cheie', - value: 'Valoare', - queryParam: 'Parametru de interogare', - queryParamTooltip: 'Numele parametrului de interogare pentru cheia API care trebuie transmis, de exemplu, "key" în "https://example.com/test?key=API_KEY".', - }, - authHeaderPrefix: { - title: 'Tipul de Autentificare', - types: { - basic: 'Basic', - bearer: 'Bearer', - custom: 'Personalizat', - }, - }, - privacyPolicy: 'Politica de Confidențialitate', - privacyPolicyPlaceholder: 'Vă rugăm să introduceți politica de confidențialitate', - deleteToolConfirmTitle: 'Ștergeți această unealtă?', - deleteToolConfirmContent: ' Ștergerea uneltă este irreversibilă. Utilizatorii nu vor mai putea accesa uneltă dvs.', - toolInput: { - methodParameter: 'Parametru', - description: 'Descriere', - methodSetting: 'Setare', - methodSettingTip: 'Utilizatorul completează configurația instrumentului', - methodParameterTip: 'Completări LLM în timpul inferenței', - name: 'Nume', - descriptionPlaceholder: 'Descrierea semnificației parametrului', - label: 'Tags', - required: 'Necesar', - method: 'Metodă', - title: 'Intrare instrument', - labelPlaceholder: 'Alegeți etichetele (opțional)', - }, - descriptionPlaceholder: 'Scurtă descriere a scopului instrumentului, de exemplu, obțineți temperatura pentru o anumită locație.', - nameForToolCall: 'Numele apelului instrumentului', - description: 'Descriere', - confirmTip: 'Aplicațiile care folosesc acest instrument vor fi afectate', - nameForToolCallPlaceHolder: 'Utilizat pentru recunoașterea mașinii, cum ar fi getCurrentWeather, list_pets', - customDisclaimer: 'Declinarea responsabilității personalizate', - confirmTitle: 'Confirmați pentru a salva?', - customDisclaimerPlaceholder: 'Vă rugăm să introduceți declinarea responsabilității personalizate', - nameForToolCallTip: 'Acceptă doar numere, litere și caractere de subliniere.', - toolOutput: { - title: 'Ieșire instrument', - name: 'Nume', - reserved: 'Rezervat', - reservedParameterDuplicateTip: 'text, json și fișiere sunt variabile rezervate. Variabilele cu aceste nume nu pot apărea în schema de ieșire.', - description: 'Descriere', - }, - }, - test: { - title: 'Testează', - parametersValue: 'Parametri & Valoare', - parameters: 'Parametri', - value: 'Valoare', - testResult: 'Rezultate Test', - testResultPlaceholder: 'Rezultatul testului va fi afișat aici', - }, - thought: { - using: 'Utilizând', - used: 'Utilizat', - requestTitle: 'Cerere către', - responseTitle: 'Răspuns de la', - }, - setBuiltInTools: { - info: 'Informații', - setting: 'Setări', - toolDescription: 'Descriere instrument', - parameters: 'parametri', - string: 'șir', - number: 'număr', - required: 'Obligatoriu', - infoAndSetting: 'Informații și Setări', - file: 'fișier', - }, - noCustomTool: { - title: 'Niciun instrument personalizat!', - content: 'Adăugați și gestionați aici instrumentele personalizate pentru construirea aplicațiilor AI.', - createTool: 'Creează Instrument', - }, - noSearchRes: { - title: 'Ne pare rău, nu s-au găsit rezultate!', - content: 'Nu am putut găsi niciun instrument care să se potrivească căutării dvs.', - reset: 'Resetează Căutarea', - }, - builtInPromptTitle: 'Prompt', - toolRemoved: 'Instrument eliminat', - notAuthorized: 'Instrument neautorizat', - howToGet: 'Cum să obții', - addToolModal: { - added: 'adăugat', - category: 'categorie', - type: 'tip', - custom: { - title: 'Niciun instrument personalizat disponibil', - tip: 'Creează un instrument personalizat', - }, - workflow: { - title: 'Niciun instrument de flux de lucru disponibil', - tip: 'Publicați fluxuri de lucru ca instrumente în Studio', - }, - mcp: { - title: 'Niciun instrument MCP disponibil', - tip: 'Adăugați un server MCP', - }, - agent: { - title: 'Nicio strategie de agent disponibilă', - }, - }, - openInStudio: 'Deschide în Studio', - customToolTip: 'Aflați mai multe despre instrumentele personalizate Dify', - toolNameUsageTip: 'Numele de apel al instrumentului pentru raționamentul și solicitarea agentului', - copyToolName: 'Copiază numele', - noTools: 'Nu s-au găsit unelte', - mcp: { - create: { - cardTitle: 'Adăugare Server MCP (HTTP)', - cardLink: 'Aflați mai multe despre integrarea serverului MCP', - }, - noConfigured: 'Server Neconfigurat', - updateTime: 'Actualizat', - toolsCount: '{count} unelte', - noTools: 'Nu există unelte disponibile', - modal: { - title: 'Adăugare Server MCP (HTTP)', - editTitle: 'Editare Server MCP (HTTP)', - name: 'Nume și Pictogramă', - namePlaceholder: 'Denumiți-vă serverul MCP', - serverUrl: 'URL Server', - serverUrlPlaceholder: 'URL către endpoint-ul serverului', - serverUrlWarning: 'Actualizarea adresei serverului poate întrerupe aplicațiile care depind de acesta', - serverIdentifier: 'Identificator Server', - serverIdentifierTip: 'Identificator unic pentru serverul MCP în spațiul de lucru. Doar litere mici, cifre, underscore și cratime. Maxim 24 de caractere.', - serverIdentifierPlaceholder: 'Identificator unic, ex: my-mcp-server', - serverIdentifierWarning: 'Serverul nu va fi recunoscut de aplicațiile existente după schimbarea ID-ului', - cancel: 'Anulare', - save: 'Salvare', - confirm: 'Adăugare și Autorizare', - timeout: 'Timp de așteptare', - sseReadTimeout: 'Timp de așteptare pentru citirea SSE', - headerKeyPlaceholder: 'de exemplu, Autorizație', - headers: 'Antete', - addHeader: 'Adăugați antet', - headerValuePlaceholder: 'de exemplu, Bearer token123', - timeoutPlaceholder: 'treizeci', - headerKey: 'Numele antetului', - headerValue: 'Valoare Antet', - maskedHeadersTip: 'Valorile de antet sunt mascate pentru securitate. Modificările vor actualiza valorile reale.', - headersTip: 'Header-uri HTTP suplimentare de trimis cu cererile către serverul MCP', - noHeaders: 'Nu sunt configurate antete personalizate.', - authentication: 'Autentificare', - configurations: 'Configurații', - clientSecretPlaceholder: 'Secretul Clientului', - clientID: 'ID client', - useDynamicClientRegistration: 'Utilizați înregistrarea dinamică a clientului', - clientSecret: 'Secretul Clientului', - redirectUrlWarning: 'Vă rugăm să configurați URL-ul de redirecționare OAuth astfel:', - }, - delete: 'Eliminare Server MCP', - deleteConfirmTitle: 'Ștergeți {mcp}?', - operation: { - edit: 'Editare', - remove: 'Eliminare', - }, - authorize: 'Autorizare', - authorizing: 'Se autorizează...', - authorizingRequired: 'Autorizare necesară', - authorizeTip: 'După autorizare, uneltele vor fi afișate aici.', - update: 'Actualizare', - updating: 'Se actualizează...', - gettingTools: 'Se obțin unelte...', - updateTools: 'Se actualizează unelte...', - toolsEmpty: 'Unelte neîncărcate', - getTools: 'Obține unelte', - toolUpdateConfirmTitle: 'Actualizare Listă Unelte', - toolUpdateConfirmContent: 'Actualizarea listei de unelte poate afecta aplicațiile existente. Continuați?', - toolsNum: '{count} unelte incluse', - onlyTool: '1 unealtă inclusă', - identifier: 'Identificator Server (Clic pentru Copiere)', - server: { - title: 'Server MCP', - url: 'URL Server', - reGen: 'Regenerați URL server?', - addDescription: 'Adăugare descriere', - edit: 'Editare descriere', - modal: { - addTitle: 'Adăugați descriere pentru activarea serverului MCP', - editTitle: 'Editare descriere', - description: 'Descriere', - descriptionPlaceholder: 'Explicați funcționalitatea acestei unelte și cum ar trebui să fie utilizată de LLM', - parameters: 'Parametri', - parametersTip: 'Adăugați descrieri pentru fiecare parametru pentru a ajuta LLM să înțeleagă scopul și constrângerile.', - parametersPlaceholder: 'Scopul și constrângerile parametrului', - confirm: 'Activare Server MCP', - }, - publishTip: 'Aplicație nepublicată. Publicați aplicația mai întâi.', - }, - toolItem: { - parameters: 'Parametri', - noDescription: 'Fără descriere', - }, - }, - allTools: 'Toate instrumentele', -} - -export default translation diff --git a/web/i18n/ro-RO/workflow.json b/web/i18n/ro-RO/workflow.json new file mode 100644 index 0000000000..b014a22daa --- /dev/null +++ b/web/i18n/ro-RO/workflow.json @@ -0,0 +1,1294 @@ +{ + "common": { + "undo": "Anulează", + "redo": "Refă", + "editing": "Editare", + "autoSaved": "Salvat automat", + "unpublished": "Nepublicat", + "published": "Publicat", + "publish": "Publică", + "update": "Actualizează", + "run": "Rulează test", + "running": "Rulând", + "inRunMode": "În modul de rulare", + "inPreview": "În previzualizare", + "inPreviewMode": "În modul de previzualizare", + "preview": "Previzualizează", + "viewRunHistory": "Vezi istoricul rulărilor", + "runHistory": "Istoric rulări", + "goBackToEdit": "Înapoi la editor", + "conversationLog": "Jurnal conversație", + "debugAndPreview": "Previzualizare", + "restart": "Repornește", + "currentDraft": "Schimbare curentă", + "currentDraftUnpublished": "Schimbare curentă nepublicată", + "latestPublished": "Ultima publicare", + "publishedAt": "Publicat la", + "restore": "Restaurează", + "runApp": "Rulează aplicația", + "batchRunApp": "Rulează aplicația în lot", + "accessAPIReference": "Accesează referința API", + "embedIntoSite": "Incorporează în site", + "addTitle": "Adaugă titlu...", + "addDescription": "Adaugă descriere...", + "noVar": "Fără variabilă", + "searchVar": "Caută variabilă", + "variableNamePlaceholder": "Nume variabilă", + "setVarValuePlaceholder": "Setează valoarea variabilei", + "needConnectTip": "Acest pas nu este conectat la nimic", + "maxTreeDepth": "Limită maximă de {{depth}} noduri pe ramură", + "workflowProcess": "Proces de flux de lucru", + "notRunning": "Încă nu rulează", + "previewPlaceholder": "Introduceți conținutul în caseta de mai jos pentru a începe depanarea Chatbotului", + "effectVarConfirm": { + "title": "Elimină variabila", + "content": "Variabila este utilizată în alte noduri. Doriți să o eliminați oricum?" + }, + "insertVarTip": "Apăsați tasta '/' pentru a insera rapid", + "processData": "Procesează date", + "input": "Intrare", + "output": "Ieșire", + "jinjaEditorPlaceholder": "Tastați '/' sau '{' pentru a insera variabila", + "viewOnly": "Vizualizare doar", + "showRunHistory": "Afișează istoricul rulărilor", + "enableJinja": "Activează suportul pentru șabloane Jinja", + "learnMore": "Află mai multe", + "copy": "Copiază", + "duplicate": "Duplică", + "pasteHere": "Lipește aici", + "pointerMode": "Modul pointer", + "handMode": "Modul mână", + "model": "Model", + "workflowAsTool": "Flux de lucru ca instrument", + "configureRequired": "Configurare necesară", + "configure": "Configurează", + "manageInTools": "Gestionează în instrumente", + "workflowAsToolTip": "Reconfigurarea instrumentului este necesară după actualizarea fluxului de lucru.", + "viewDetailInTracingPanel": "Vezi detalii", + "overwriteAndImport": "Suprascriere și import", + "chooseDSL": "Alegeți fișierul DSL(yml)", + "syncingData": "Sincronizarea datelor, doar câteva secunde.", + "importDSL": "Importați DSL", + "importFailure": "Eșecul importului", + "importSuccess": "Succesul importului", + "backupCurrentDraft": "Backup curent draft", + "importDSLTip": "Proiectul curent va fi suprascris. Exportați fluxul de lucru ca backup înainte de import.", + "parallelTip": { + "click": { + "title": "Clic", + "desc": "pentru a adăuga" + }, + "drag": { + "title": "Glisa", + "desc": "pentru a vă conecta" + }, + "depthLimit": "Limita straturilor de imbricare paralelă a {{num}} straturi", + "limit": "Paralelismul este limitat la {{num}} ramuri." + }, + "disconnect": "Deconecta", + "jumpToNode": "Sari la acest nod", + "addParallelNode": "Adăugare nod paralel", + "parallel": "PARALEL", + "branch": "RAMURĂ", + "fileUploadTip": "Funcțiile de încărcare a imaginilor au fost actualizate la încărcarea fișierelor.", + "ImageUploadLegacyTip": "Acum puteți crea variabile de tip de fișier în formularul de pornire. Nu vom mai accepta funcția de încărcare a imaginilor în viitor.", + "importWarning": "Prudență", + "importWarningDetails": "Diferența de versiune DSL poate afecta anumite caracteristici", + "openInExplore": "Deschide în Explorează", + "onFailure": "În caz de eșec", + "addFailureBranch": "Adăugare ramură Fail", + "noHistory": "Fără istorie", + "loadMore": "Încărcați mai multe fluxuri de lucru", + "exportImage": "Exportă imaginea", + "exportSVG": "Exportă ca SVG", + "exportPNG": "Exportă ca PNG", + "exitVersions": "Ieșire Versiuni", + "versionHistory": "Istoricul versiunilor", + "publishUpdate": "Publicați actualizarea", + "exportJPEG": "Exportă ca JPEG", + "addBlock": "Adaugă nod", + "needAnswerNode": "Nodul de răspuns trebuie adăugat", + "needOutputNode": "Nodul de ieșire trebuie adăugat", + "tagBound": "Numărul de aplicații care folosesc acest tag", + "currentView": "Vizualizare curentă", + "currentWorkflow": "Flux de lucru curent", + "moreActions": "Mai multe acțiuni", + "listening": "Ascultând", + "chooseStartNodeToRun": "Alegeți nodul de start pentru a rula", + "runAllTriggers": "Rulează toate declanșatoarele", + "features": "Caracteristici", + "featuresDescription": "Îmbunătățește experiența utilizatorului în aplicația web", + "featuresDocLink": "Aflați mai multe", + "needAdd": "Trebuie adăugat nodul {{node}}", + "needStartNode": "Trebuie adăugat cel puțin un nod de start", + "workflowAsToolDisabledHint": "Publicați fluxul de lucru cel mai recent și asigurați-vă că există un nod de Intrare Utilizator conectat înainte de a-l configura ca instrument." + }, + "env": { + "envPanelTitle": "Variabile de Mediu", + "envDescription": "Variabilele de mediu pot fi utilizate pentru a stoca informații private și credențiale. Acestea sunt doar pentru citire și pot fi separate de fișierul DSL în timpul exportului.", + "envPanelButton": "Adaugă Variabilă", + "modal": { + "title": "Adaugă Variabilă de Mediu", + "editTitle": "Editează Variabilă de Mediu", + "type": "Tip", + "name": "Nume", + "namePlaceholder": "nume mediu", + "value": "Valoare", + "valuePlaceholder": "valoare mediu", + "secretTip": "Utilizat pentru a defini informații sau date sensibile, cu setări DSL configurate pentru prevenirea scurgerilor.", + "description": "Descriere", + "descriptionPlaceholder": "Descrieți variabila" + }, + "export": { + "title": "Exportă variabile de mediu secrete?", + "checkbox": "Exportă valori secrete", + "ignore": "Exportă DSL", + "export": "Exportă DSL cu valori secrete" + } + }, + "globalVar": { + "title": "Variabile de sistem", + "description": "Variabilele de sistem sunt variabile globale care pot fi folosite de orice nod fără conexiuni dacă tipul este corect, precum ID-ul utilizatorului final și ID-ul fluxului de lucru.", + "fieldsDescription": { + "conversationId": "ID conversație", + "dialogCount": "Număr conversații", + "userId": "ID utilizator", + "triggerTimestamp": "Marcaj temporal al pornirii aplicației", + "appId": "ID aplicație", + "workflowId": "ID flux de lucru", + "workflowRunId": "ID rulare flux de lucru" + } + }, + "chatVariable": { + "panelTitle": "Variabile de Conversație", + "panelDescription": "Variabilele de Conversație sunt utilizate pentru a stoca informații interactive pe care LLM trebuie să le rețină, inclusiv istoricul conversației, fișiere încărcate, preferințele utilizatorului. Acestea sunt citibile și inscriptibile.", + "docLink": "Vizitați documentația noastră pentru a afla mai multe.", + "button": "Adăugare Variabilă", + "modal": { + "title": "Adăugare Variabilă de Conversație", + "editTitle": "Editare Variabilă de Conversație", + "name": "Nume", + "namePlaceholder": "Numele variabilei", + "type": "Tip", + "value": "Valoare Implicită", + "valuePlaceholder": "Valoare implicită, lăsați gol pentru a nu seta", + "description": "Descriere", + "descriptionPlaceholder": "Descrieți variabila", + "editInJSON": "Editare în JSON", + "oneByOne": "Adăugare una câte una", + "editInForm": "Editare în Formular", + "arrayValue": "Valoare", + "addArrayValue": "Adăugare Valoare", + "objectKey": "Cheie", + "objectType": "Tip", + "objectValue": "Valoare Implicită" + }, + "storedContent": "Conținut stocat", + "updatedAt": "Actualizat la " + }, + "changeHistory": { + "title": "Istoric modificări", + "placeholder": "Nu ați schimbat nimic încă", + "clearHistory": "Șterge istoricul", + "hint": "Sfat", + "hintText": "Acțiunile dvs. de editare sunt urmărite într-un istoric al modificărilor, care este stocat pe dispozitivul dvs. pe durata acestei sesiuni. Acest istoric va fi șters când veți părăsi editorul.", + "stepBackward_one": "{{count}} pas înapoi", + "stepBackward_other": "{{count}} pași înapoi", + "stepForward_one": "{{count}} pas înainte", + "stepForward_other": "{{count}} pași înainte", + "sessionStart": "Începutul sesiuni", + "currentState": "Stare actuală", + "noteAdd": "Notă adăugată", + "noteChange": "Notă modificată", + "noteDelete": "Notă ștearsă", + "nodeResize": "Nod redimensionat", + "nodeConnect": "Nod conectat", + "nodeTitleChange": "Titlul nodului a fost schimbat", + "nodeChange": "Nodul s-a schimbat", + "nodePaste": "Node lipit", + "nodeDelete": "Nod șters", + "nodeDescriptionChange": "Descrierea nodului a fost modificată", + "edgeDelete": "Nod deconectat", + "nodeAdd": "Nod adăugat", + "nodeDragStop": "Nod mutat" + }, + "errorMsg": { + "fieldRequired": "{{field}} este obligatoriu", + "authRequired": "Autorizarea este necesară", + "invalidJson": "{{field}} este un JSON invalid", + "fields": { + "variable": "Nume variabilă", + "variableValue": "Valoare variabilă", + "code": "Cod", + "model": "Model", + "rerankModel": "Model de rerankare", + "visionVariable": "Vizibilitate variabilă" + }, + "invalidVariable": "Variabilă invalidă", + "rerankModelRequired": "Înainte de a activa modelul de reclasificare, vă rugăm să confirmați că modelul a fost configurat cu succes în setări.", + "toolParameterRequired": "{{field}}: parametrul [{{param}}] este obligatoriu", + "noValidTool": "{{field}} nu a fost selectat niciun instrument valid", + "startNodeRequired": "Vă rugăm să adăugați mai întâi un nod de pornire înainte de {{operation}}" + }, + "singleRun": { + "testRun": "Rulare de test ", + "startRun": "Începe rularea", + "running": "Rulând", + "testRunIteration": "Iterație rulare de test", + "back": "Înapoi", + "iteration": "Iterație", + "loop": "Loop", + "reRun": "Reluare", + "preparingDataSource": "Pregătirea sursei de date" + }, + "tabs": { + "tools": "Instrumente", + "allTool": "Toate", + "customTool": "Personalizat", + "workflowTool": "Flux de lucru", + "question-understand": "Înțelegerea întrebărilor", + "logic": "Logică", + "transform": "Transformare", + "utilities": "Utilități", + "noResult": "Niciun rezultat găsit", + "searchTool": "Instrument de căutare", + "agent": "Strategia agentului", + "plugin": "Plugin", + "blocks": "Noduri", + "searchBlock": "Căutare nod", + "addAll": "Adaugă tot", + "allAdded": "Toate adăugate", + "sources": "Surse", + "searchDataSource": "Sursa de date de căutare", + "start": "Începe", + "searchTrigger": "Căutare declanșatoare...", + "allTriggers": "Toate declanșatoarele", + "noPluginsFound": "Nu au fost găsite plugin-uri", + "requestToCommunity": "Cereri către comunitate", + "featuredTools": "Recomandat", + "showMoreFeatured": "Arată mai mult", + "showLessFeatured": "Afișează mai puțin", + "installed": "Instalat", + "pluginByAuthor": "De {{author}}", + "usePlugin": "Selectează instrumentul", + "hideActions": "Ascunde uneltele", + "noFeaturedPlugins": "Descoperă mai multe instrumente în Marketplace", + "noFeaturedTriggers": "Descoperă mai multe declanșatoare în Marketplace", + "startDisabledTip": "Nodul de declanșare și nodul de intrare a utilizatorului se exclud reciproc." + }, + "blocks": { + "start": "Începe", + "end": "Ieșire", + "answer": "Răspuns", + "llm": "LLM", + "knowledge-retrieval": "Recuperare de cunoștințe", + "question-classifier": "Clasificator de întrebări", + "if-else": "Dacă/Altminteri", + "code": "Cod", + "template-transform": "Șablon", + "http-request": "Cerere HTTP", + "variable-assigner": "Asignator de variabile", + "variable-aggregator": "Agregator de variabile", + "assigner": "Asignator de Variabile", + "iteration-start": "Început de iterație", + "iteration": "Iterație", + "parameter-extractor": "Extractor de parametri", + "list-operator": "Operator de listă", + "document-extractor": "Extractor de documente", + "agent": "Agent", + "loop": "Loop", + "loop-end": "Ieșire din buclă", + "loop-start": "Întreținere buclă", + "knowledge-index": "Cunoştinţe", + "datasource": "Sursa datelor", + "originalStartNode": "nod de start original", + "trigger-schedule": "Declanșator Programat", + "trigger-webhook": "Declanșator Webhook", + "trigger-plugin": "Declanșator plugin" + }, + "blocksAbout": { + "start": "Definiți parametrii inițiali pentru lansarea unui flux de lucru", + "end": "Definiți ieșirea și tipul rezultatului unui flux de lucru", + "answer": "Definiți conținutul răspunsului unei conversații", + "llm": "Invocarea modelelor de limbaj mari pentru a răspunde la întrebări sau pentru a procesa limbajul natural", + "knowledge-retrieval": "Permite interogarea conținutului textului legat de întrebările utilizatorului din baza de cunoștințe", + "question-classifier": "Definiți condițiile de clasificare a întrebărilor utilizatorului, LLM poate defini cum progresează conversația pe baza descrierii clasificării", + "if-else": "Permite împărțirea fluxului de lucru în două ramuri pe baza condițiilor if/else", + "code": "Executați un fragment de cod Python sau NodeJS pentru a implementa logică personalizată", + "template-transform": "Convertiți datele în șiruri de caractere folosind sintaxa șablonului Jinja", + "http-request": "Permite trimiterea cererilor de server prin protocolul HTTP", + "variable-assigner": "Agregarea variabilelor din mai multe ramuri într-o singură variabilă pentru configurarea unificată a nodurilor ulterioare.", + "assigner": "Nodul de atribuire a variabilelor este utilizat pentru a atribui valori variabilelor inscriptibile (precum variabilele de conversație).", + "variable-aggregator": "Agregarea variabilelor din mai multe ramuri într-o singură variabilă pentru configurarea unificată a nodurilor ulterioare.", + "iteration": "Efectuați mai mulți pași pe un obiect listă până când toate rezultatele sunt produse.", + "parameter-extractor": "Utilizați LLM pentru a extrage parametrii structurați din limbajul natural pentru invocările de instrumente sau cererile HTTP.", + "list-operator": "Folosit pentru a filtra sau sorta conținutul matricei.", + "document-extractor": "Folosit pentru a analiza documentele încărcate în conținut text care este ușor de înțeles de LLM.", + "agent": "Invocarea modelelor lingvistice mari pentru a răspunde la întrebări sau pentru a procesa limbajul natural", + "loop": "Executați o buclă de logică până când condiția de terminare este îndeplinită sau numărul maxim de bucle este atins.", + "loop-end": "Echivalent cu „break”. Acest nod nu are elemente de configurare. Când corpul buclei ajunge la acest nod, bucla se termină.", + "datasource": "Sursa de date Despre", + "knowledge-index": "Baza de cunoștințe despre", + "trigger-schedule": "Declanșator de flux de lucru bazat pe timp care pornește fluxurile de lucru conform unui program", + "trigger-webhook": "Webhook Trigger primește push-uri HTTP de la sisteme terțe pentru a declanșa automat fluxuri de lucru.", + "trigger-plugin": "Declanșator de integrare terță parte care pornește fluxuri de lucru din evenimente ale platformelor externe" + }, + "operator": { + "zoomIn": "Mărește", + "zoomOut": "Micșorează", + "zoomTo50": "Mărește la 50%", + "zoomTo100": "Mărește la 100%", + "zoomToFit": "Mărește pentru a se potrivi", + "horizontal": "Orizontal", + "selectionAlignment": "Alinierea selecției", + "vertical": "Vertical", + "alignRight": "Dreapta", + "alignLeft": "Stânga", + "alignMiddle": "Mijloc", + "distributeVertical": "Distribuie vertical", + "alignCenter": "Centru", + "distributeHorizontal": "Distribuie orizontal", + "alignBottom": "Jos", + "alignTop": "Sus", + "alignNodes": "Alinierea nodurilor" + }, + "panel": { + "userInputField": "Câmp de introducere utilizator", + "helpLink": "Ajutor", + "about": "Despre", + "createdBy": "Creat de ", + "nextStep": "Pasul următor", + "runThisStep": "Rulează acest pas", + "checklist": "Lista de verificare", + "checklistTip": "Asigurați-vă că toate problemele sunt rezolvate înainte de publicare", + "checklistResolved": "Toate problemele au fost rezolvate", + "change": "Schimbă", + "optional": "(opțional)", + "organizeBlocks": "Organizează nodurile", + "addNextStep": "Adăugați următorul pas în acest flux de lucru", + "changeBlock": "Schimbă nodul", + "selectNextStep": "Selectați Pasul Următor", + "maximize": "Maximize Canvas", + "minimize": "Iesi din modul pe tot ecranul", + "scrollToSelectedNode": "Derulați la nodul selectat", + "optional_and_hidden": "(opțional și ascuns)", + "goTo": "Du-te la", + "startNode": "Nod de start", + "openWorkflow": "Deschide fluxul de lucru" + }, + "nodes": { + "common": { + "outputVars": "Variabile de ieșire", + "insertVarTip": "Inserează variabilă", + "memory": { + "memory": "Memorie", + "memoryTip": "Setări de memorie pentru conversație", + "windowSize": "Dimensiunea ferestrei", + "conversationRoleName": "Numele rolului în conversație", + "user": "Prefix utilizator", + "assistant": "Prefix asistent" + }, + "memories": { + "title": "Amintiri", + "tip": "Memoria conversației", + "builtIn": "Integrat" + }, + "errorHandle": { + "none": { + "title": "Niciunul", + "desc": "Nodul se va opri din rulare dacă apare o excepție și nu este gestionat" + }, + "defaultValue": { + "title": "Valoare implicită", + "desc": "Când apare o eroare, specificați un conținut de ieșire static.", + "tip": "În caz de eroare, va reveni sub valoare.", + "inLog": "Excepție de nod, ieșire în funcție de valorile implicite.", + "output": "Valoare implicită de ieșire" + }, + "failBranch": { + "title": "Ramură Fail", + "desc": "Când apare o eroare, va executa ramura de excepție", + "customize": "Accesați pânza pentru a personaliza logica ramurii de eșec.", + "inLog": "Excepția nodului, va executa automat ramura de eșec. Ieșirea nodului va returna un tip de eroare și un mesaj de eroare și le va transmite în aval.", + "customizeTip": "Când ramura de eșec este activată, excepțiile aruncate de noduri nu vor încheia procesul. În schimb, va executa automat ramura de eșec predefinită, permițându-vă să furnizați în mod flexibil mesaje de eroare, rapoarte, remedieri sau acțiuni de omitere." + }, + "partialSucceeded": { + "tip": "Există {{num}} noduri în proces care rulează anormal, vă rugăm să mergeți la urmărire pentru a verifica jurnalele." + }, + "title": "Gestionarea erorilor", + "tip": "Strategie de gestionare a excepțiilor, declanșată atunci când un nod întâlnește o excepție." + }, + "retry": { + "retry": "Reîncercare", + "retryOnFailure": "Reîncercați în caz de eșec", + "maxRetries": "numărul maxim de încercări", + "retryInterval": "Interval de reîncercare", + "retrying": "Reîncerca...", + "retrySuccessful": "Reîncercați cu succes", + "retryFailed": "Reîncercarea a eșuat", + "retryFailedTimes": "{{times}} reîncercări eșuate", + "times": "Ori", + "ms": "Ms", + "retries": "{{num}} Încercări", + "retryTimes": "Reîncercați {{times}} ori în caz de eșec" + }, + "typeSwitch": { + "variable": "Folosește variabila", + "input": "Valoare de intrare" + }, + "inputVars": "Variabile de intrare", + "pluginNotInstalled": "Pluginul nu este instalat" + }, + "start": { + "required": "necesar", + "inputField": "Câmp de intrare", + "builtInVar": "Variabile integrate", + "outputVars": { + "query": "Intrare utilizator", + "memories": { + "des": "Istoric conversație", + "type": "tip mesaj", + "content": "conținut mesaj" + }, + "files": "Listă de fișiere" + }, + "noVarTip": "Setați intrările care pot fi utilizate în fluxul de lucru" + }, + "end": { + "outputs": "Ieșiri", + "output": { + "type": "tip ieșire", + "variable": "variabilă de ieșire" + }, + "type": { + "none": "Nimic", + "plain-text": "Text simplu", + "structured": "Structurat" + } + }, + "answer": { + "answer": "Răspuns", + "outputVars": "Variabile de ieșire" + }, + "llm": { + "model": "model", + "variables": "variabile", + "context": "context", + "contextTooltip": "Puteți importa cunoștințe ca și context", + "notSetContextInPromptTip": "Pentru a activa funcția de context, completați variabila de context în PROMPT.", + "prompt": "prompt", + "roleDescription": { + "system": "Dați instrucțiuni de nivel înalt pentru conversație", + "user": "Furnizați instrucțiuni, întrebări sau orice intrare bazată pe text pentru model", + "assistant": "Răspunsurile modelului bazate pe mesajele utilizatorului" + }, + "addMessage": "Adaugă mesaj", + "vision": "viziune", + "files": "Fișiere", + "resolution": { + "name": "Rezoluție", + "high": "Înaltă", + "low": "Joasă" + }, + "outputVars": { + "output": "Conținut generat", + "reasoning_content": "Conținut de raționament", + "usage": "Informații de utilizare a modelului" + }, + "singleRun": { + "variable": "Variabilă" + }, + "sysQueryInUser": "sys.query în mesajul utilizatorului este necesar", + "jsonSchema": { + "warningTips": { + "saveSchema": "Vă rugăm să terminați editarea câmpului curent înainte de a salva schema." + }, + "addChildField": "Adăugați câmpul copil", + "generationTip": "Puteți folosi limbajul natural pentru a crea rapid un schema JSON.", + "promptTooltip": "Convertește descrierea textului într-o structură standardizată JSON Schema.", + "resetDefaults": "Resetează", + "apply": "Aplică", + "instruction": "Instrucțiune", + "doc": "Aflați mai multe despre ieșirea structurată", + "stringValidations": "Validările șirurilor", + "title": "Schema de Ieşire Structurată", + "generateJsonSchema": "Generați schema JSON", + "generate": "Generează", + "import": "Importă din JSON", + "generating": "Generarea schemei JSON...", + "addField": "Adaugă câmp", + "regenerate": "Regenerare", + "generatedResult": "Rezultatul generat", + "descriptionPlaceholder": "Adăugați o descriere", + "showAdvancedOptions": "Afișați opțiuni avansate", + "resultTip": "Iată rezultatul generat. Dacă nu ești mulțumit, poți să te întorci și să îți modifici cererea.", + "fieldNamePlaceholder": "Numele câmpului", + "required": "Necesar", + "back": "Înapoi", + "promptPlaceholder": "Descrie schema ta JSON..." + }, + "reasoningFormat": { + "tagged": "Ține minte etichetele", + "separated": "Etichete de gândire separate", + "title": "Activează separarea etichetelor de raționare", + "tooltip": "Extrage conținutul din etichetele think și stochează-l în câmpul reasoning_content." + } + }, + "knowledgeRetrieval": { + "queryVariable": "Variabilă de interogare", + "knowledge": "Cunoștințe", + "outputVars": { + "output": "Date segmentate recuperate", + "content": "Conținut segmentat", + "title": "Titlu segmentat", + "icon": "Pictogramă segmentată", + "url": "URL segmentat", + "metadata": "Alte metadate", + "files": "Fișiere recuperate" + }, + "metadata": { + "options": { + "disabled": { + "subTitle": "Nu activarea filtrării metadatelor", + "title": "Dezactivat" + }, + "automatic": { + "subTitle": "Generați automat condiții de filtrare a metadatelor pe baza interogării utilizatorului", + "desc": "Generați automat condiții de filtrare a metadatelor pe baza variabilei de interogare", + "title": "Automat" + }, + "manual": { + "subTitle": "Adăugați manual condiții de filtrare a metadatelor", + "title": "Manual" + } + }, + "panel": { + "conditions": "Condiții", + "select": "Selectați variabila...", + "title": "Condiții de filtrare a metadatelor", + "add": "Adaugă condiție", + "placeholder": "Introduceți valoarea", + "datePlaceholder": "Alege o oră...", + "search": "Căutare metadate" + }, + "title": "Filtrarea metadatelor", + "tip": "Filtrarea metadatelor este procesul de utilizare a atributelor metadatelor (cum ar fi etichetele, categoriile sau permisiunile de acces) pentru a rafina și controla recuperarea informațiilor relevante într-un sistem." + }, + "queryText": "Text interogare", + "queryAttachment": "Imagini interogate" + }, + "http": { + "inputVars": "Variabile de intrare", + "api": "API", + "apiPlaceholder": "Introduceți URL-ul, tastați ‘/’ pentru a insera variabilă", + "notStartWithHttp": "API-ul trebuie să înceapă cu http:// sau https://", + "key": "Cheie", + "value": "Valoare", + "bulkEdit": "Editare în masă", + "keyValueEdit": "Editare cheie-valoare", + "headers": "Antete", + "params": "Parametri", + "body": "Corp", + "outputVars": { + "body": "Conținutul răspunsului", + "statusCode": "Cod de stare al răspunsului", + "headers": "Lista antetelor de răspuns în format JSON", + "files": "Lista fișierelor" + }, + "authorization": { + "authorization": "Autorizare", + "authorizationType": "Tip de autorizare", + "no-auth": "Niciuna", + "api-key": "Cheie API", + "auth-type": "Tip de autentificare", + "basic": "De bază", + "bearer": "Bearer", + "custom": "Personalizat", + "api-key-title": "Cheie API", + "header": "Antet" + }, + "insertVarPlaceholder": "tastați '/' pentru a insera variabilă", + "timeout": { + "title": "Timp limită", + "connectLabel": "Timp limită pentru conexiune", + "connectPlaceholder": "Introduceți timpul limită pentru conexiune în secunde", + "readLabel": "Timp limită pentru citire", + "readPlaceholder": "Introduceți timpul limită pentru citire în secunde", + "writeLabel": "Timp limită pentru scriere", + "writePlaceholder": "Introduceți timpul limită pentru scriere în secunde" + }, + "type": "Tip", + "binaryFileVariable": "Variabilă de fișier binar", + "extractListPlaceholder": "Introduceți indexul elementelor din listă, tastați \"/\" inserați variabila", + "curl": { + "placeholder": "Lipiți șirul cURL aici", + "title": "Importați din cURL" + }, + "verifySSL": { + "title": "Verifică certificatul SSL", + "warningTooltip": "Dezactivarea verificării SSL nu este recomandată pentru medii de producție. Acest lucru ar trebui să fie folosit doar în dezvoltare sau testare, deoarece face conexiunea vulnerabilă la amenințări de securitate, cum ar fi atacurile man-in-the-middle." + } + }, + "code": { + "inputVars": "Variabile de intrare", + "outputVars": "Variabile de ieșire", + "advancedDependencies": "Dependențe avansate", + "advancedDependenciesTip": "Adăugați câteva dependențe preîncărcate care necesită mai mult timp pentru a consuma sau nu sunt integrate implicit aici", + "searchDependencies": "Căutați dependențe", + "syncFunctionSignature": "Sincronizați semnătura funcției cu codul" + }, + "templateTransform": { + "inputVars": "Variabile de intrare", + "code": "Cod", + "codeSupportTip": "Suportă doar Jinja2", + "outputVars": { + "output": "Conținut transformat" + } + }, + "ifElse": { + "if": "Dacă", + "else": "Altminteri", + "elseDescription": "Utilizat pentru a defini logica care ar trebui executată atunci când condiția if nu este îndeplinită.", + "and": "și", + "or": "sau", + "operator": "Operator", + "notSetVariable": "Vă rugăm să setați mai întâi variabila", + "comparisonOperator": { + "contains": "conține", + "not contains": "nu conține", + "start with": "începe cu", + "end with": "se termină cu", + "is": "este", + "is not": "nu este", + "empty": "este gol", + "not empty": "nu este gol", + "null": "este null", + "not null": "nu este null", + "in": "în", + "not in": "nu în", + "exists": "Există", + "all of": "Toate", + "not exists": "nu există", + "before": "înainte", + "after": "după" + }, + "enterValue": "Introduceți valoarea", + "addCondition": "Adăugați condiție", + "conditionNotSetup": "Condiția NU este setată", + "selectVariable": "Selectați variabila...", + "optionName": { + "audio": "Audio", + "localUpload": "Încărcare locală", + "url": "Adresa URL", + "image": "Imagine", + "video": "Video", + "doc": "Doc" + }, + "select": "Alege", + "addSubVariable": "Subvariabilă" + }, + "variableAssigner": { + "title": "Atribuie variabile", + "outputType": "Tip de ieșire", + "varNotSet": "Variabila nu este setată", + "noVarTip": "Adăugați variabilele de atribuit", + "type": { + "string": "Șir", + "number": "Număr", + "object": "Obiect", + "array": "Array" + }, + "aggregationGroup": "Grup de agregare", + "aggregationGroupTip": "Activarea acestei funcții permite agregatorului de variabile să agrege mai multe seturi de variabile.", + "addGroup": "Adăugați grup", + "outputVars": { + "varDescribe": "Ieșire {{groupName}}" + }, + "setAssignVariable": "Setați variabila de atribuire" + }, + "assigner": { + "assignedVariable": "Variabilă Atribuită", + "writeMode": "Mod de Scriere", + "writeModeTip": "Când VARIABILA ATRIBUITĂ este un array, modul de adăugare adaugă la sfârșit.", + "over-write": "Suprascrie", + "append": "Adaugă", + "plus": "Plus", + "clear": "Șterge", + "setVariable": "Setează Variabila", + "variable": "Variabilă", + "operations": { + "append": "Adăugaţi", + "extend": "Prelungi", + "title": "Operație", + "+=": "+=", + "set": "Apus", + "*=": "*=", + "overwrite": "Suprascrie", + "clear": "Clar", + "over-write": "Suprascrie", + "/=": "/=", + "-=": "-=", + "remove-first": "Îndepărtează primul", + "remove-last": "Îndepărtează ultimul" + }, + "selectAssignedVariable": "Selectați variabila atribuită...", + "varNotSet": "Variabila NU este setată", + "noVarTip": "Faceți clic pe butonul \"+\" pentru a adăuga variabile", + "noAssignedVars": "Nu există variabile atribuite disponibile", + "setParameter": "Setați parametrul...", + "assignedVarsDescription": "Variabilele atribuite trebuie să fie variabile inscripționabile, cum ar fi variabilele de conversație.", + "variables": "Variabile" + }, + "tool": { + "inputVars": "Variabile de intrare", + "outputVars": { + "text": "conținut generat de instrument", + "files": { + "title": "fișiere generate de instrument", + "type": "Tip de suport. Acum acceptă doar imagine", + "transfer_method": "Metodă de transfer. Valoarea este remote_url sau local_file", + "url": "URL imagine", + "upload_file_id": "ID fișier încărcat" + }, + "json": "JSON generat de instrument" + }, + "authorize": "Autorizați", + "insertPlaceholder2": "introduce o variabilă", + "insertPlaceholder1": "Scrieți sau apăsați", + "settings": "Setări" + }, + "questionClassifiers": { + "model": "model", + "inputVars": "Variabile de intrare", + "outputVars": { + "className": "Nume clasă", + "usage": "Informații de utilizare a modelului" + }, + "class": "Clasă", + "classNamePlaceholder": "Scrieți numele clasei", + "advancedSetting": "Setare avansată", + "topicName": "Nume subiect", + "topicPlaceholder": "Scrieți numele subiectului", + "addClass": "Adăugați clasă", + "instruction": "Instrucțiune", + "instructionTip": "Introduceți instrucțiuni suplimentare pentru a ajuta clasificatorul de întrebări să înțeleagă mai bine cum să categorizeze întrebările.", + "instructionPlaceholder": "Scrieți instrucțiunea" + }, + "parameterExtractor": { + "inputVar": "Variabilă de intrare", + "outputVars": { + "isSuccess": "Este succes. În caz de succes valoarea este 1, în caz de eșec valoarea este 0.", + "errorReason": "Motivul erorii", + "usage": "Informații de utilizare a modelului" + }, + "extractParameters": "Extrageți parametrii", + "importFromTool": "Importă din instrumente", + "addExtractParameter": "Adăugați parametru de extragere", + "addExtractParameterContent": { + "name": "Nume", + "namePlaceholder": "Nume parametru de extragere", + "type": "Tip", + "typePlaceholder": "Tip parametru de extragere", + "description": "Descriere", + "descriptionPlaceholder": "Descriere parametru de extragere", + "required": "Necesar", + "requiredContent": "Necesar este utilizat doar ca referință pentru inferența modelului și nu pentru validarea obligatorie a ieșirii parametrului." + }, + "extractParametersNotSet": "Parametrii de extragere nu sunt setați", + "instruction": "Instrucțiune", + "instructionTip": "Introduceți instrucțiuni suplimentare pentru a ajuta extractorul de parametri să înțeleagă cum să extragă parametrii.", + "advancedSetting": "Setare avansată", + "reasoningMode": "Mod de raționament", + "reasoningModeTip": "Puteți alege modul de raționament potrivit în funcție de capacitatea modelului de a răspunde la instrucțiuni pentru apelarea funcțiilor sau prompturi." + }, + "iteration": { + "deleteTitle": "Ștergeți nodul de iterație?", + "deleteDesc": "Ștergerea nodului de iterație va șterge toate nodurile copil", + "input": "Intrare", + "output": "Variabile de ieșire", + "iteration_one": "{{count}} Iterație", + "iteration_other": "{{count}} Iterații", + "currentIteration": "Iterație curentă", + "ErrorMethod": { + "operationTerminated": "Încheiată", + "continueOnError": "continuare-la-eroare", + "removeAbnormalOutput": "elimină-ieșire-anormală" + }, + "parallelModeEnableTitle": "Modul paralel activat", + "errorResponseMethod": "Metoda de răspuns la eroare", + "comma": ",", + "parallelModeEnableDesc": "În modul paralel, sarcinile din iterații acceptă execuția paralelă. Puteți configura acest lucru în panoul de proprietăți din dreapta.", + "parallelModeUpper": "MOD PARALEL", + "MaxParallelismTitle": "Paralelism maxim", + "parallelMode": "Mod paralel", + "error_other": "{{număr}} Erori", + "error_one": "{{număr}} Eroare", + "parallelPanelDesc": "În modul paralel, activitățile din iterație acceptă execuția paralelă.", + "MaxParallelismDesc": "Paralelismul maxim este utilizat pentru a controla numărul de sarcini executate simultan într-o singură iterație.", + "answerNodeWarningDesc": "Avertisment modul paralel: Nodurile de răspuns, atribuirea variabilelor de conversație și operațiunile persistente de citire/scriere în iterații pot cauza excepții.", + "flattenOutput": "Aplatizează ieșirea", + "flattenOutputDesc": "Când este activat, dacă toate ieșirile iterației sunt array-uri, acestea vor fi aplatizate într-un singur array. Când este dezactivat, ieșirile vor menține o structură de array-nested." + }, + "note": { + "editor": { + "small": "Mic", + "bold": "Îndrăzneț", + "unlink": "Deconecta", + "strikethrough": "Tăiere", + "invalidUrl": "URL nevalidă", + "medium": "Medie", + "openLink": "Deschide", + "large": "Mare", + "enterUrl": "Introduceți adresa URL...", + "italic": "Cursiv", + "placeholder": "Scrie-ți notița...", + "link": "Legătură", + "bulletList": "Lista de marcatori", + "showAuthor": "Afișați autorul" + }, + "addNote": "Adăugați o notă" + }, + "docExtractor": { + "outputVars": { + "text": "Text extras" + }, + "inputVar": "Variabilă de intrare", + "learnMore": "Află mai multe", + "supportFileTypes": "Tipuri de fișiere de suport: {{types}}." + }, + "listFilter": { + "outputVars": { + "first_record": "Primul record", + "last_record": "Ultima înregistrare", + "result": "Filtrează rezultatul" + }, + "desc": "DESC", + "inputVar": "Variabilă de intrare", + "filterConditionKey": "Tasta de condiție a filtrului", + "filterCondition": "Starea filtrului", + "orderBy": "Comandă după", + "selectVariableKeyPlaceholder": "Selectați tasta subvariabilă", + "filterConditionComparisonOperator": "Operator de comparare a condițiilor filtrului", + "limit": "N de sus", + "filterConditionComparisonValue": "Valoare Stare filtrare", + "asc": "ASC", + "extractsCondition": "Extrageți elementul N" + }, + "agent": { + "strategy": { + "configureTip": "Vă rugăm să configurați strategia agentică.", + "selectTip": "Selectați strategia agentică", + "configureTipDesc": "După configurarea strategiei agentice, acest nod va încărca automat configurațiile rămase. Strategia va afecta mecanismul raționamentului instrumentelor în mai mulți pași.", + "shortLabel": "Strategie", + "label": "Strategia agentică", + "tooltip": "Diferitele strategii agentice determină modul în care sistemul planifică și execută apelurile de instrumente în mai mulți pași", + "searchPlaceholder": "Strategie agentică de căutare" + }, + "pluginInstaller": { + "installing": "Instalarea", + "install": "Instala" + }, + "modelNotInMarketplace": { + "manageInPlugins": "Gestionați în pluginuri", + "title": "Model neinstalat", + "desc": "Acest model este instalat din depozitul local sau GitHub. Vă rugăm să utilizați după instalare." + }, + "modelNotSupport": { + "descForVersionSwitch": "Versiunea de plugin instalată nu oferă acest model. Faceți clic pentru a comuta versiunea.", + "desc": "Versiunea de plugin instalată nu oferă acest model.", + "title": "Model neacceptat" + }, + "modelSelectorTooltips": { + "deprecated": "Acest model este învechit" + }, + "outputVars": { + "files": { + "upload_file_id": "Încărcați ID-ul fișierului", + "type": "Tip de suport. Acum acceptă doar imaginea", + "transfer_method": "Metoda de transfer. Valoarea este remote_url sau local_file", + "title": "Fișiere generate de agent", + "url": "Adresa URL a imaginii" + }, + "text": "Conținut generat de agent", + "usage": "Informații de utilizare a modelului", + "json": "JSON generat de agent" + }, + "checkList": { + "strategyNotSelected": "Strategia neselectată" + }, + "installPlugin": { + "install": "Instala", + "changelog": "Jurnal de modificări", + "desc": "Despre instalarea următorului plugin", + "title": "Instalează pluginul", + "cancel": "Anula" + }, + "pluginNotInstalled": "Acest plugin nu este instalat", + "unsupportedStrategy": "Strategie neacceptată", + "notAuthorized": "Neautorizat", + "learnMore": "Află mai multe", + "toolbox": "cutie de scule", + "toolNotAuthorizedTooltip": "{{instrument}} Neautorizat", + "strategyNotSet": "Strategia agentică nu este setată", + "tools": "Instrumente", + "maxIterations": "Iterații maxime", + "configureModel": "Configurați modelul", + "strategyNotFoundDescAndSwitchVersion": "Versiunea de plugin instalată nu oferă această strategie. Faceți clic pentru a comuta versiunea.", + "strategyNotInstallTooltip": "{{strategy}} nu este instalat", + "pluginNotFoundDesc": "Acest plugin este instalat de pe GitHub. Vă rugăm să accesați Pluginuri pentru a reinstala", + "modelNotSelected": "Model neselectat", + "toolNotInstallTooltip": "{{tool}} nu este instalat", + "pluginNotInstalledDesc": "Acest plugin este instalat de pe GitHub. Vă rugăm să accesați Pluginuri pentru a reinstala", + "strategyNotFoundDesc": "Versiunea de plugin instalată nu oferă această strategie.", + "modelNotInstallTooltip": "Acest model nu este instalat", + "linkToPlugin": "Link către pluginuri", + "model": "model", + "parameterSchema": "Schema parametrului", + "clickToViewParameterSchema": "Click pentru a vizualiza schema parametrilor" + }, + "loop": { + "ErrorMethod": { + "removeAbnormalOutput": "Elimină ieșirea anormală", + "continueOnError": "Continuați în caz de eroare", + "operationTerminated": "Încetat" + }, + "inputMode": "Mod de introducere", + "currentLoopCount": "Numărul curent de iterații: {{count}}", + "error_one": "{{count}} Eroare", + "error_other": "{{count}} Erori", + "input": "Intrare", + "errorResponseMethod": "Metoda de Răspuns la Erori", + "deleteTitle": "Șterge nodul de ciclu?", + "breakConditionTip": "Numai variabilele din interiorul buclelor cu condiții de terminare și variabilele de conversație pot fi referite.", + "loop_one": "{{count}} buclă", + "loop_other": "{{count}} Buclă", + "loopNode": "Nod de buclă", + "loopMaxCount": "Numărul maxim de iterații", + "loopVariables": "Variabile de buclă", + "finalLoopVariables": "Variabilele ciclului final", + "currentLoop": "Circuit Curent", + "totalLoopCount": "Numărul total de bucle: {{count}}", + "output": "Variabilă de ieșire", + "exitConditionTip": "Un nod de buclă are nevoie de cel puțin o condiție de ieșire.", + "initialLoopVariables": "Variabilele de loop inițiale", + "setLoopVariables": "Setați variabilele în cadrul buclei", + "loopMaxCountError": "Vă rugăm să introduceți un număr maxim valid de bucle, care să fie între 1 și {{maxCount}}", + "deleteDesc": "Ștergerea nodului buclă va elimina toate nodurile copil.", + "breakCondition": "Condiția de terminare a buclei", + "comma": ",", + "variableName": "Nume Variabil" + }, + "dataSource": { + "add": "Adăugarea sursei de date", + "supportedFileFormatsPlaceholder": "Extensie de fișier, e.g. doc", + "supportedFileFormats": "Formate de fișiere acceptate" + }, + "knowledgeBase": { + "chunkStructureTip": { + "learnMore": "Află mai multe", + "title": "Vă rugăm să alegeți o structură de bucăți", + "message": "Baza de cunoștințe Dify acceptă trei structuri de fragmentare: General, Părinte-copil și Întrebări și răspunsuri. Fiecare bază de cunoștințe poate avea o singură structură. Ieșirea de la nodul precedent trebuie să se alinieze cu structura de bucăți selectată. Rețineți că alegerea structurii de fragmentare afectează metodele de index disponibile." + }, + "indexMethodIsRequired": "Este necesară metoda indexului", + "chunkStructure": "Structura bucății", + "chunkIsRequired": "Este necesară structura bucății", + "retrievalSettingIsRequired": "Setarea de recuperare este necesară", + "aboutRetrieval": "despre metoda de recuperare.", + "chooseChunkStructure": "Alegeți o structură de bucăți", + "changeChunkStructure": "Modificați structura bucății", + "chunksInput": "Bucăți", + "chunksInputTip": "Variabila de intrare a nodului bazei de cunoștințe este Chunks. Tipul variabilei este un obiect cu un Șchema JSON specific care trebuie să fie coerent cu structura de chunk selectată.", + "chunksVariableIsRequired": "Variabila Chunks este obligatorie", + "embeddingModelIsRequired": "Este necesar un model de încorporare", + "rerankingModelIsRequired": "Este necesar un model de reordonare", + "rerankingModelIsInvalid": "Modelul de reordonare este invalid", + "embeddingModelIsInvalid": "Modelul de încorporare este invalid" + }, + "triggerPlugin": { + "authorized": "Autorizat", + "notConfigured": "Nesetat", + "notAuthorized": "Neautorizat", + "selectSubscription": "Selectează abonamentul", + "availableSubscriptions": "Abonamente disponibile", + "addSubscription": "Adaugă un abonament nou", + "removeSubscription": "Anulează abonamentul", + "subscriptionRemoved": "Abonamentul a fost eliminat cu succes", + "error": "Eroare", + "configuration": "Configurație", + "remove": "Elimină", + "or": "SAU", + "useOAuth": "Folosește OAuth", + "useApiKey": "Utilizează cheia API", + "authenticationFailed": "Autentificare eșuată", + "authenticationSuccess": "Autentificare reușită", + "oauthConfigFailed": "Configurarea OAuth a eșuat", + "configureOAuthClient": "Configurează clientul OAuth", + "oauthClientDescription": "Configurează acreditările clientului OAuth pentru a permite autentificarea", + "oauthClientSaved": "Configurarea clientului OAuth a fost salvată cu succes", + "configureApiKey": "Configurează cheia API", + "apiKeyDescription": "Configurați acreditările cheii API pentru autentificare", + "apiKeyConfigured": "Cheia API a fost configurată cu succes", + "configurationFailed": "Configurarea a eșuat", + "failedToStart": "Eșec la inițierea procesului de autentificare", + "credentialsVerified": "Datele de autentificare au fost verificate cu succes", + "credentialVerificationFailed": "Verificarea acreditărilor a eșuat", + "verifyAndContinue": "Verifică și continuă", + "configureParameters": "Configurează parametrii", + "parametersDescription": "Configurează parametrii și proprietățile declanșatorului", + "configurationComplete": "Configurare completă", + "configurationCompleteDescription": "Declanșatorul tău a fost configurat cu succes", + "configurationCompleteMessage": "Configurația declanșatorului tău este acum completă și gata de utilizare.", + "parameters": "Parametri", + "properties": "Proprietăți", + "propertiesDescription": "Proprietăți suplimentare de configurare pentru acest declanșator", + "noConfigurationRequired": "Nu este necesară nicio configurare suplimentară pentru acest declanșator.", + "subscriptionName": "Numele abonamentului", + "subscriptionNameDescription": "Introduceți un nume unic pentru acest abonament al declanșatorului", + "subscriptionNamePlaceholder": "Introduceți numele abonamentului...", + "subscriptionNameRequired": "Numele abonamentului este obligatoriu", + "subscriptionRequired": "Este necesar un abonament" + }, + "triggerSchedule": { + "title": "Program", + "nodeTitle": "Declanșator Programat", + "notConfigured": "Neconfigurat", + "useCronExpression": "Utilizați expresie cron", + "useVisualPicker": "Utilizați selectorul vizual", + "frequency": { + "label": "FRECVENȚĂ", + "hourly": "Pe oră", + "daily": "Zilnic", + "weekly": "Săptămânal", + "monthly": "Lunar" + }, + "selectFrequency": "Selectați frecvența", + "frequencyLabel": "Frecvență", + "nextExecution": "Următoarea execuție", + "weekdays": "Zilele săptămânii", + "time": "Timp", + "cronExpression": "Expresie Cron", + "nextExecutionTime": "URMĂTOAREA ORĂ DE EXECUȚIE", + "nextExecutionTimes": "Următoarele 5 momente de execuție", + "startTime": "Ora de începere", + "executeNow": "Executare acum", + "selectDateTime": "Selectează data și ora", + "hours": "Ore", + "minutes": "Minute", + "onMinute": "Într-un minut", + "days": "Zile", + "lastDay": "Ultima zi", + "lastDayTooltip": "Nu toate lunile au 31 de zile. Folosește opțiunea 'ultima zi' pentru a selecta ultima zi a fiecărei luni.", + "mode": "Modă", + "timezone": "Fus orar", + "visualConfig": "Configurare vizuală", + "monthlyDay": "Ziua lunară", + "executionTime": "Timp de execuție", + "invalidTimezone": "Fus orar nevalid", + "invalidCronExpression": "Expresie cron nevalidă", + "noValidExecutionTime": "Nu se poate calcula un timp de execuție valid", + "executionTimeCalculationError": "Calcularea timpilor de execuție a eșuat", + "invalidFrequency": "Frecvență invalidă", + "invalidStartTime": "Ora de început nevalidă", + "startTimeMustBeFuture": "Ora de începere trebuie să fie în viitor", + "invalidTimeFormat": "Format de oră invalid (se aștepta HH:MM AM/PM)", + "invalidWeekday": "Zi a săptămânii invalidă: {{weekday}}", + "invalidMonthlyDay": "Ziua lunară trebuie să fie între 1-31 sau „ultima”", + "invalidOnMinute": "Minutele trebuie să fie între 0 și 59", + "invalidExecutionTime": "Timp de execuție invalid", + "executionTimeMustBeFuture": "Timpul de execuție trebuie să fie în viitor" + }, + "triggerWebhook": { + "title": "Declanșator Webhook", + "nodeTitle": "🔗 Declanșator Webhook", + "configPlaceholder": "Configurarea declanșatorului webhook va fi implementată aici", + "webhookUrl": "URL-ul Webhook", + "webhookUrlPlaceholder": "Apasă pe generează pentru a crea URL-ul webhook", + "generate": "Generează", + "copy": "Copiază", + "test": "Test", + "urlGenerated": "URL-ul webhook a fost generat cu succes", + "urlGenerationFailed": "Eșec la generarea URL-ului webhook", + "urlCopied": "URL copiat în clipboard", + "method": "Metodă", + "contentType": "Tip de conținut", + "queryParameters": "Parametri de interogare", + "headerParameters": "Parametri de antet", + "requestBodyParameters": "Parametri ai corpului cererii", + "parameterName": "Nume variabilă", + "varName": "Nume variabilă", + "varType": "Tip", + "varNamePlaceholder": "Introduceți numele variabilei...", + "required": "Necesar", + "addParameter": "Adaugă", + "addHeader": "Adaugă", + "noParameters": "Niciun parametru configurat", + "noQueryParameters": "Nu sunt configurate parametri de interogare", + "noHeaders": "Nu sunt configurate antete", + "noBodyParameters": "Nu sunt configurate parametrii pentru corp", + "debugUrlTitle": "Pentru teste, folosește întotdeauna acest URL", + "debugUrlCopy": "Click pentru a copia", + "debugUrlCopied": "Copiat!", + "debugUrlPrivateAddressWarning": "Această adresă URL pare să fie una internă, ceea ce poate cauza eșecul solicitărilor webhook. Puteți schimba TRIGGER_URL cu o adresă publică.", + "errorHandling": "Gestionarea erorilor", + "errorStrategy": "Gestionarea erorilor", + "responseConfiguration": "Răspuns", + "asyncMode": "Mod asincron", + "statusCode": "Cod de stare", + "responseBody": "Corp de răspuns", + "responseBodyPlaceholder": "Scrieți aici corpul răspunsului dvs.", + "headers": "Antete", + "validation": { + "webhookUrlRequired": "URL-ul webhook-ului este necesar", + "invalidParameterType": "Tip de parametru invalid \"{{type}}\" pentru parametrul \"{{name}}\"" + } + } + }, + "tracing": { + "stopBy": "Oprit de {{user}}" + }, + "variableReference": { + "noAvailableVars": "Nu există variabile disponibile", + "noVarsForOperation": "Nu există variabile disponibile pentru atribuire cu operațiunea selectată.", + "conversationVars": "Variabile de conversație", + "assignedVarsDescription": "Variabilele atribuite trebuie să fie variabile inscripționabile, cum ar fi", + "noAssignedVars": "Nu există variabile atribuite disponibile" + }, + "versionHistory": { + "filter": { + "all": "Toate", + "onlyYours": "Numai al tău", + "reset": "Resetare filtrare", + "onlyShowNamedVersions": "Afișați doar versiunile numite", + "empty": "Nu s-a găsit nicio istorie de versiune corespunzătoare." + }, + "editField": { + "releaseNotesLengthLimit": "Notele de eliberare nu pot depăși {{limit}} caractere", + "title": "Titlu", + "titleLengthLimit": "Titlul nu poate depăși {{limit}} caractere", + "releaseNotes": "Note de lansare" + }, + "action": { + "restoreSuccess": "Versiune restaurată", + "deleteSuccess": "Versiune ștearsă", + "restoreFailure": "Restaurarea versiunii a eșuat", + "deleteFailure": "Ștergerea versiunii a eșuat", + "updateSuccess": "Versiune actualizată", + "updateFailure": "Actualizarea versiunii a eșuat", + "copyIdSuccess": "ID copiat în clipboard" + }, + "latest": "Cea mai recentă", + "title": "Versiuni", + "nameThisVersion": "Numește această versiune", + "restorationTip": "După restaurarea versiunii, proiectul actual va fi suprascris.", + "defaultName": "Versiune fără titlu", + "editVersionInfo": "Editează informațiile versiunii", + "releaseNotesPlaceholder": "Descrie ce s-a schimbat", + "deletionTip": "Ștergerea este irreversibilă, vă rugăm să confirmați.", + "currentDraft": "Draftul curent", + "copyId": "Copiază ID" + }, + "debug": { + "noData": { + "runThisNode": "Rulează acest nod", + "description": "Rezultatele ultimei rulări vor fi afișate aici" + }, + "variableInspect": { + "trigger": { + "clear": "Clar", + "running": "Starea de funcționare a cache-ului", + "cached": "Vizualizează variabilele cached", + "normal": "Inspectare variabilă", + "stop": "Oprește-te din alergat" + }, + "chatNode": "Conversație", + "title": "Inspectare variabilă", + "systemNode": "Sistem", + "clearAll": "Resetare toate", + "emptyLink": "Învățați mai multe", + "view": "Vizualizați jurnalul", + "envNode": "Mediu", + "reset": "Resetează la ultima valoare rulată", + "resetConversationVar": "Resetați variabila de conversație la valoarea implicită", + "edited": "Editat", + "clearNode": "Șterge variabila cached", + "emptyTip": "După ce ai trecut printr-un nod pe canvas sau ai rulat un nod pas cu pas, poți vizualiza valoarea curentă a variabilei nodului în Inspectarea Variabilelor.", + "export": "export", + "largeDataNoExport": "Date mari - doar previzualizare parțială", + "exportToolTip": "Exportați variabila ca fișier", + "largeData": "Date mari, previzualizare doar în citire. Exportați pentru a vedea totul.", + "listening": { + "title": "Ascult pentru evenimente de la declanșatoare...", + "tip": "Acum puteți simula declanșatoare de evenimente trimițând cereri de test către endpointul HTTP {{nodeName}} sau îl puteți folosi ca URL de apel invers pentru depanarea evenimentelor în timp real. Toate rezultatele pot fi vizualizate direct în Inspectorul de Variabile.", + "tipPlugin": "Acum poți crea evenimente în {{- pluginName}} și poți prelua rezultatele acestor evenimente în Inspectorul de Variabile.", + "tipSchedule": "Ascultarea evenimentelor de la declanșatoarele de programare.\nUrmătoarea rulare programată: {{nextTriggerTime}}", + "tipFallback": "Așteptați evenimentele declanșatoare. Ieșirile vor apărea aici.", + "defaultNodeName": "acest declanșator", + "defaultPluginName": "acest plugin declanșează", + "defaultScheduleTime": "Neconfigurat", + "selectedTriggers": "declanșatori selectați", + "stopButton": "Oprește" + } + }, + "settingsTab": "Setări", + "lastRunTab": "Ultima execuție", + "relations": { + "dependencies": "Dependenţele", + "noDependencies": "Fără dependențe", + "dependents": "Dependenţe", + "noDependents": "Fără persoane aflate în întreținere", + "dependentsDescription": "Noduri care se bazează pe acest nod", + "dependenciesDescription": "Noduri pe care se bazează acest nod" + }, + "relationsTab": "Relații", + "noMatchingInputsFound": "Nu s-au găsit intrări corespunzătoare din ultima rulare", + "copyLastRun": "Copiază ultima execuție", + "noLastRunFound": "Niciun rulament anterior găsit", + "copyLastRunError": "Nu s-au putut copia ultimele intrări de rulare", + "lastOutput": "Ultimul rezultat", + "lastRunInputsCopied": "{{count}} intrare(e) copiate de la ultima rulare" + }, + "sidebar": { + "exportWarning": "Exportați versiunea salvată curentă", + "exportWarningDesc": "Aceasta va exporta versiunea curent salvată a fluxului dumneavoastră de lucru. Dacă aveți modificări nesalvate în editor, vă rugăm să le salvați mai întâi utilizând opțiunea de export din canvasul fluxului de lucru." + }, + "publishLimit": { + "startNodeTitlePrefix": "Actualizează la", + "startNodeTitleSuffix": "deblochează declanșatoare nelimitate pentru fiecare flux de lucru", + "startNodeDesc": "Ați atins limita de 2 declanșatoare pe flux de lucru pentru acest plan. Faceți upgrade pentru a publica acest flux de lucru." + }, + "error": { + "startNodeRequired": "Vă rugăm să adăugați mai întâi un nod de pornire înainte de {{operation}}", + "operations": { + "connectingNodes": "conectarea nodurilor", + "addingNodes": "adăugarea nodurilor", + "modifyingWorkflow": "modificarea fluxului de lucru", + "updatingWorkflow": "actualizarea fluxului de lucru" + } + }, + "customWebhook": "Webhook personalizat", + "difyTeam": "Echipa Dify", + "triggerStatus": { + "enabled": "DECLANȘATOR", + "disabled": "TRIGGER • DEZACTIVAT" + }, + "entryNodeStatus": { + "enabled": "PORNEȘTE", + "disabled": "PORNIRE • DEZACTIVAT" + }, + "onboarding": { + "title": "Selectați un nod de start pentru a începe", + "description": "Nodurile de start diferite au capabilități diferite. Nu-ți face griji, le poți schimba oricând mai târziu.", + "userInputFull": "Intrare utilizator (nod de start original)", + "userInputDescription": "Nod de pornire care permite setarea variabilelor de input ale utilizatorului, cu aplicație web, API de servicii, server MCP și flux de lucru ca funcționalități ale instrumentului.", + "trigger": "Declanșator", + "triggerDescription": "Triggerele pot servi ca nod de pornire al unui flux de lucru, cum ar fi sarcini programate, webhook-uri personalizate sau integrări cu alte aplicații.", + "back": "Înapoi", + "learnMore": "Aflați mai multe", + "aboutStartNode": "despre nodul de start.", + "escTip": { + "press": "Presă", + "key": "esc", + "toDismiss": "a concedia" + } + } +} diff --git a/web/i18n/ro-RO/workflow.ts b/web/i18n/ro-RO/workflow.ts deleted file mode 100644 index a542a18807..0000000000 --- a/web/i18n/ro-RO/workflow.ts +++ /dev/null @@ -1,1296 +0,0 @@ -const translation = { - common: { - undo: 'Anulează', - redo: 'Refă', - editing: 'Editare', - autoSaved: 'Salvat automat', - unpublished: 'Nepublicat', - published: 'Publicat', - publish: 'Publică', - update: 'Actualizează', - run: 'Rulează test', - running: 'Rulând', - inRunMode: 'În modul de rulare', - inPreview: 'În previzualizare', - inPreviewMode: 'În modul de previzualizare', - preview: 'Previzualizează', - viewRunHistory: 'Vezi istoricul rulărilor', - runHistory: 'Istoric rulări', - goBackToEdit: 'Înapoi la editor', - conversationLog: 'Jurnal conversație', - debugAndPreview: 'Previzualizare', - restart: 'Repornește', - currentDraft: 'Schimbare curentă', - currentDraftUnpublished: 'Schimbare curentă nepublicată', - latestPublished: 'Ultima publicare', - publishedAt: 'Publicat la', - restore: 'Restaurează', - runApp: 'Rulează aplicația', - batchRunApp: 'Rulează aplicația în lot', - accessAPIReference: 'Accesează referința API', - embedIntoSite: 'Incorporează în site', - addTitle: 'Adaugă titlu...', - addDescription: 'Adaugă descriere...', - noVar: 'Fără variabilă', - searchVar: 'Caută variabilă', - variableNamePlaceholder: 'Nume variabilă', - setVarValuePlaceholder: 'Setează valoarea variabilei', - needConnectTip: 'Acest pas nu este conectat la nimic', - maxTreeDepth: 'Limită maximă de {{depth}} noduri pe ramură', - workflowProcess: 'Proces de flux de lucru', - notRunning: 'Încă nu rulează', - previewPlaceholder: 'Introduceți conținutul în caseta de mai jos pentru a începe depanarea Chatbotului', - effectVarConfirm: { - title: 'Elimină variabila', - content: 'Variabila este utilizată în alte noduri. Doriți să o eliminați oricum?', - }, - insertVarTip: 'Apăsați tasta \'/\' pentru a insera rapid', - processData: 'Procesează date', - input: 'Intrare', - output: 'Ieșire', - jinjaEditorPlaceholder: 'Tastați \'/\' sau \'{\' pentru a insera variabila', - viewOnly: 'Vizualizare doar', - showRunHistory: 'Afișează istoricul rulărilor', - enableJinja: 'Activează suportul pentru șabloane Jinja', - learnMore: 'Află mai multe', - copy: 'Copiază', - duplicate: 'Duplică', - pasteHere: 'Lipește aici', - pointerMode: 'Modul pointer', - handMode: 'Modul mână', - model: 'Model', - workflowAsTool: 'Flux de lucru ca instrument', - configureRequired: 'Configurare necesară', - configure: 'Configurează', - manageInTools: 'Gestionează în instrumente', - workflowAsToolTip: 'Reconfigurarea instrumentului este necesară după actualizarea fluxului de lucru.', - viewDetailInTracingPanel: 'Vezi detalii', - overwriteAndImport: 'Suprascriere și import', - chooseDSL: 'Alegeți fișierul DSL(yml)', - syncingData: 'Sincronizarea datelor, doar câteva secunde.', - importDSL: 'Importați DSL', - importFailure: 'Eșecul importului', - importSuccess: 'Succesul importului', - backupCurrentDraft: 'Backup curent draft', - importDSLTip: 'Proiectul curent va fi suprascris. Exportați fluxul de lucru ca backup înainte de import.', - parallelTip: { - click: { - title: 'Clic', - desc: 'pentru a adăuga', - }, - drag: { - title: 'Glisa', - desc: 'pentru a vă conecta', - }, - depthLimit: 'Limita straturilor de imbricare paralelă a {{num}} straturi', - limit: 'Paralelismul este limitat la {{num}} ramuri.', - }, - disconnect: 'Deconecta', - jumpToNode: 'Sari la acest nod', - addParallelNode: 'Adăugare nod paralel', - parallel: 'PARALEL', - branch: 'RAMURĂ', - fileUploadTip: 'Funcțiile de încărcare a imaginilor au fost actualizate la încărcarea fișierelor.', - ImageUploadLegacyTip: 'Acum puteți crea variabile de tip de fișier în formularul de pornire. Nu vom mai accepta funcția de încărcare a imaginilor în viitor.', - importWarning: 'Prudență', - importWarningDetails: 'Diferența de versiune DSL poate afecta anumite caracteristici', - openInExplore: 'Deschide în Explorează', - onFailure: 'În caz de eșec', - addFailureBranch: 'Adăugare ramură Fail', - noHistory: 'Fără istorie', - loadMore: 'Încărcați mai multe fluxuri de lucru', - exportImage: 'Exportă imaginea', - exportSVG: 'Exportă ca SVG', - exportPNG: 'Exportă ca PNG', - exitVersions: 'Ieșire Versiuni', - versionHistory: 'Istoricul versiunilor', - publishUpdate: 'Publicați actualizarea', - exportJPEG: 'Exportă ca JPEG', - addBlock: 'Adaugă nod', - needAnswerNode: 'Nodul de răspuns trebuie adăugat', - needOutputNode: 'Nodul de ieșire trebuie adăugat', - tagBound: 'Numărul de aplicații care folosesc acest tag', - currentView: 'Vizualizare curentă', - currentWorkflow: 'Flux de lucru curent', - moreActions: 'Mai multe acțiuni', - listening: 'Ascultând', - chooseStartNodeToRun: 'Alegeți nodul de start pentru a rula', - runAllTriggers: 'Rulează toate declanșatoarele', - features: 'Caracteristici', - featuresDescription: 'Îmbunătățește experiența utilizatorului în aplicația web', - featuresDocLink: 'Aflați mai multe', - needAdd: 'Trebuie adăugat nodul {{node}}', - needStartNode: 'Trebuie adăugat cel puțin un nod de start', - workflowAsToolDisabledHint: 'Publicați fluxul de lucru cel mai recent și asigurați-vă că există un nod de Intrare Utilizator conectat înainte de a-l configura ca instrument.', - }, - env: { - envPanelTitle: 'Variabile de Mediu', - envDescription: 'Variabilele de mediu pot fi utilizate pentru a stoca informații private și credențiale. Acestea sunt doar pentru citire și pot fi separate de fișierul DSL în timpul exportului.', - envPanelButton: 'Adaugă Variabilă', - modal: { - title: 'Adaugă Variabilă de Mediu', - editTitle: 'Editează Variabilă de Mediu', - type: 'Tip', - name: 'Nume', - namePlaceholder: 'nume mediu', - value: 'Valoare', - valuePlaceholder: 'valoare mediu', - secretTip: 'Utilizat pentru a defini informații sau date sensibile, cu setări DSL configurate pentru prevenirea scurgerilor.', - description: 'Descriere', - descriptionPlaceholder: 'Descrieți variabila', - }, - export: { - title: 'Exportă variabile de mediu secrete?', - checkbox: 'Exportă valori secrete', - ignore: 'Exportă DSL', - export: 'Exportă DSL cu valori secrete', - }, - }, - globalVar: { - title: 'Variabile de sistem', - description: 'Variabilele de sistem sunt variabile globale care pot fi folosite de orice nod fără conexiuni dacă tipul este corect, precum ID-ul utilizatorului final și ID-ul fluxului de lucru.', - fieldsDescription: { - conversationId: 'ID conversație', - dialogCount: 'Număr conversații', - userId: 'ID utilizator', - triggerTimestamp: 'Marcaj temporal al pornirii aplicației', - appId: 'ID aplicație', - workflowId: 'ID flux de lucru', - workflowRunId: 'ID rulare flux de lucru', - }, - }, - chatVariable: { - panelTitle: 'Variabile de Conversație', - panelDescription: 'Variabilele de Conversație sunt utilizate pentru a stoca informații interactive pe care LLM trebuie să le rețină, inclusiv istoricul conversației, fișiere încărcate, preferințele utilizatorului. Acestea sunt citibile și inscriptibile.', - docLink: 'Vizitați documentația noastră pentru a afla mai multe.', - button: 'Adăugare Variabilă', - modal: { - title: 'Adăugare Variabilă de Conversație', - editTitle: 'Editare Variabilă de Conversație', - name: 'Nume', - namePlaceholder: 'Numele variabilei', - type: 'Tip', - value: 'Valoare Implicită', - valuePlaceholder: 'Valoare implicită, lăsați gol pentru a nu seta', - description: 'Descriere', - descriptionPlaceholder: 'Descrieți variabila', - editInJSON: 'Editare în JSON', - oneByOne: 'Adăugare una câte una', - editInForm: 'Editare în Formular', - arrayValue: 'Valoare', - addArrayValue: 'Adăugare Valoare', - objectKey: 'Cheie', - objectType: 'Tip', - objectValue: 'Valoare Implicită', - }, - storedContent: 'Conținut stocat', - updatedAt: 'Actualizat la ', - }, - changeHistory: { - title: 'Istoric modificări', - placeholder: 'Nu ați schimbat nimic încă', - clearHistory: 'Șterge istoricul', - hint: 'Sfat', - hintText: 'Acțiunile dvs. de editare sunt urmărite într-un istoric al modificărilor, care este stocat pe dispozitivul dvs. pe durata acestei sesiuni. Acest istoric va fi șters când veți părăsi editorul.', - stepBackward_one: '{{count}} pas înapoi', - stepBackward_other: '{{count}} pași înapoi', - stepForward_one: '{{count}} pas înainte', - stepForward_other: '{{count}} pași înainte', - sessionStart: 'Începutul sesiuni', - currentState: 'Stare actuală', - noteAdd: 'Notă adăugată', - noteChange: 'Notă modificată', - noteDelete: 'Notă ștearsă', - nodeResize: 'Nod redimensionat', - nodeConnect: 'Nod conectat', - nodeTitleChange: 'Titlul nodului a fost schimbat', - nodeChange: 'Nodul s-a schimbat', - nodePaste: 'Node lipit', - nodeDelete: 'Nod șters', - nodeDescriptionChange: 'Descrierea nodului a fost modificată', - edgeDelete: 'Nod deconectat', - nodeAdd: 'Nod adăugat', - nodeDragStop: 'Nod mutat', - }, - errorMsg: { - fieldRequired: '{{field}} este obligatoriu', - authRequired: 'Autorizarea este necesară', - invalidJson: '{{field}} este un JSON invalid', - fields: { - variable: 'Nume variabilă', - variableValue: 'Valoare variabilă', - code: 'Cod', - model: 'Model', - rerankModel: 'Model de rerankare', - visionVariable: 'Vizibilitate variabilă', - }, - invalidVariable: 'Variabilă invalidă', - rerankModelRequired: 'Înainte de a activa modelul de reclasificare, vă rugăm să confirmați că modelul a fost configurat cu succes în setări.', - toolParameterRequired: '{{field}}: parametrul [{{param}}] este obligatoriu', - noValidTool: '{{field}} nu a fost selectat niciun instrument valid', - startNodeRequired: 'Vă rugăm să adăugați mai întâi un nod de pornire înainte de {{operation}}', - }, - singleRun: { - testRun: 'Rulare de test ', - startRun: 'Începe rularea', - running: 'Rulând', - testRunIteration: 'Iterație rulare de test', - back: 'Înapoi', - iteration: 'Iterație', - loop: 'Loop', - reRun: 'Reluare', - preparingDataSource: 'Pregătirea sursei de date', - }, - tabs: { - 'tools': 'Instrumente', - 'allTool': 'Toate', - 'customTool': 'Personalizat', - 'workflowTool': 'Flux de lucru', - 'question-understand': 'Înțelegerea întrebărilor', - 'logic': 'Logică', - 'transform': 'Transformare', - 'utilities': 'Utilități', - 'noResult': 'Niciun rezultat găsit', - 'searchTool': 'Instrument de căutare', - 'agent': 'Strategia agentului', - 'plugin': 'Plugin', - 'blocks': 'Noduri', - 'searchBlock': 'Căutare nod', - 'addAll': 'Adaugă tot', - 'allAdded': 'Toate adăugate', - 'sources': 'Surse', - 'searchDataSource': 'Sursa de date de căutare', - 'start': 'Începe', - 'searchTrigger': 'Căutare declanșatoare...', - 'allTriggers': 'Toate declanșatoarele', - 'noPluginsFound': 'Nu au fost găsite plugin-uri', - 'requestToCommunity': 'Cereri către comunitate', - 'featuredTools': 'Recomandat', - 'showMoreFeatured': 'Arată mai mult', - 'showLessFeatured': 'Afișează mai puțin', - 'installed': 'Instalat', - 'pluginByAuthor': 'De {{author}}', - 'usePlugin': 'Selectează instrumentul', - 'hideActions': 'Ascunde uneltele', - 'noFeaturedPlugins': 'Descoperă mai multe instrumente în Marketplace', - 'noFeaturedTriggers': 'Descoperă mai multe declanșatoare în Marketplace', - 'startDisabledTip': 'Nodul de declanșare și nodul de intrare a utilizatorului se exclud reciproc.', - }, - blocks: { - 'start': 'Începe', - 'end': 'Ieșire', - 'answer': 'Răspuns', - 'llm': 'LLM', - 'knowledge-retrieval': 'Recuperare de cunoștințe', - 'question-classifier': 'Clasificator de întrebări', - 'if-else': 'Dacă/Altminteri', - 'code': 'Cod', - 'template-transform': 'Șablon', - 'http-request': 'Cerere HTTP', - 'variable-assigner': 'Asignator de variabile', - 'variable-aggregator': 'Agregator de variabile', - 'assigner': 'Asignator de Variabile', - 'iteration-start': 'Început de iterație', - 'iteration': 'Iterație', - 'parameter-extractor': 'Extractor de parametri', - 'list-operator': 'Operator de listă', - 'document-extractor': 'Extractor de documente', - 'agent': 'Agent', - 'loop': 'Loop', - 'loop-end': 'Ieșire din buclă', - 'loop-start': 'Întreținere buclă', - 'knowledge-index': 'Cunoştinţe', - 'datasource': 'Sursa datelor', - 'originalStartNode': 'nod de start original', - 'trigger-schedule': 'Declanșator Programat', - 'trigger-webhook': 'Declanșator Webhook', - 'trigger-plugin': 'Declanșator plugin', - }, - blocksAbout: { - 'start': 'Definiți parametrii inițiali pentru lansarea unui flux de lucru', - 'end': 'Definiți ieșirea și tipul rezultatului unui flux de lucru', - 'answer': 'Definiți conținutul răspunsului unei conversații', - 'llm': 'Invocarea modelelor de limbaj mari pentru a răspunde la întrebări sau pentru a procesa limbajul natural', - 'knowledge-retrieval': 'Permite interogarea conținutului textului legat de întrebările utilizatorului din baza de cunoștințe', - 'question-classifier': 'Definiți condițiile de clasificare a întrebărilor utilizatorului, LLM poate defini cum progresează conversația pe baza descrierii clasificării', - 'if-else': 'Permite împărțirea fluxului de lucru în două ramuri pe baza condițiilor if/else', - 'code': 'Executați un fragment de cod Python sau NodeJS pentru a implementa logică personalizată', - 'template-transform': 'Convertiți datele în șiruri de caractere folosind sintaxa șablonului Jinja', - 'http-request': 'Permite trimiterea cererilor de server prin protocolul HTTP', - 'variable-assigner': 'Agregarea variabilelor din mai multe ramuri într-o singură variabilă pentru configurarea unificată a nodurilor ulterioare.', - 'assigner': 'Nodul de atribuire a variabilelor este utilizat pentru a atribui valori variabilelor inscriptibile (precum variabilele de conversație).', - 'variable-aggregator': 'Agregarea variabilelor din mai multe ramuri într-o singură variabilă pentru configurarea unificată a nodurilor ulterioare.', - 'iteration': 'Efectuați mai mulți pași pe un obiect listă până când toate rezultatele sunt produse.', - 'parameter-extractor': 'Utilizați LLM pentru a extrage parametrii structurați din limbajul natural pentru invocările de instrumente sau cererile HTTP.', - 'list-operator': 'Folosit pentru a filtra sau sorta conținutul matricei.', - 'document-extractor': 'Folosit pentru a analiza documentele încărcate în conținut text care este ușor de înțeles de LLM.', - 'agent': 'Invocarea modelelor lingvistice mari pentru a răspunde la întrebări sau pentru a procesa limbajul natural', - 'loop': 'Executați o buclă de logică până când condiția de terminare este îndeplinită sau numărul maxim de bucle este atins.', - 'loop-end': 'Echivalent cu „break”. Acest nod nu are elemente de configurare. Când corpul buclei ajunge la acest nod, bucla se termină.', - 'datasource': 'Sursa de date Despre', - 'knowledge-index': 'Baza de cunoștințe despre', - 'trigger-schedule': 'Declanșator de flux de lucru bazat pe timp care pornește fluxurile de lucru conform unui program', - 'trigger-webhook': 'Webhook Trigger primește push-uri HTTP de la sisteme terțe pentru a declanșa automat fluxuri de lucru.', - 'trigger-plugin': 'Declanșator de integrare terță parte care pornește fluxuri de lucru din evenimente ale platformelor externe', - }, - operator: { - zoomIn: 'Mărește', - zoomOut: 'Micșorează', - zoomTo50: 'Mărește la 50%', - zoomTo100: 'Mărește la 100%', - zoomToFit: 'Mărește pentru a se potrivi', - horizontal: 'Orizontal', - selectionAlignment: 'Alinierea selecției', - vertical: 'Vertical', - alignRight: 'Dreapta', - alignLeft: 'Stânga', - alignMiddle: 'Mijloc', - distributeVertical: 'Distribuie vertical', - alignCenter: 'Centru', - distributeHorizontal: 'Distribuie orizontal', - alignBottom: 'Jos', - alignTop: 'Sus', - alignNodes: 'Alinierea nodurilor', - }, - panel: { - userInputField: 'Câmp de introducere utilizator', - helpLink: 'Ajutor', - about: 'Despre', - createdBy: 'Creat de ', - nextStep: 'Pasul următor', - runThisStep: 'Rulează acest pas', - checklist: 'Lista de verificare', - checklistTip: 'Asigurați-vă că toate problemele sunt rezolvate înainte de publicare', - checklistResolved: 'Toate problemele au fost rezolvate', - change: 'Schimbă', - optional: '(opțional)', - organizeBlocks: 'Organizează nodurile', - addNextStep: 'Adăugați următorul pas în acest flux de lucru', - changeBlock: 'Schimbă nodul', - selectNextStep: 'Selectați Pasul Următor', - maximize: 'Maximize Canvas', - minimize: 'Iesi din modul pe tot ecranul', - scrollToSelectedNode: 'Derulați la nodul selectat', - optional_and_hidden: '(opțional și ascuns)', - goTo: 'Du-te la', - startNode: 'Nod de start', - openWorkflow: 'Deschide fluxul de lucru', - }, - nodes: { - common: { - outputVars: 'Variabile de ieșire', - insertVarTip: 'Inserează variabilă', - memory: { - memory: 'Memorie', - memoryTip: 'Setări de memorie pentru conversație', - windowSize: 'Dimensiunea ferestrei', - conversationRoleName: 'Numele rolului în conversație', - user: 'Prefix utilizator', - assistant: 'Prefix asistent', - }, - memories: { - title: 'Amintiri', - tip: 'Memoria conversației', - builtIn: 'Integrat', - }, - errorHandle: { - none: { - title: 'Niciunul', - desc: 'Nodul se va opri din rulare dacă apare o excepție și nu este gestionat', - }, - defaultValue: { - title: 'Valoare implicită', - desc: 'Când apare o eroare, specificați un conținut de ieșire static.', - tip: 'În caz de eroare, va reveni sub valoare.', - inLog: 'Excepție de nod, ieșire în funcție de valorile implicite.', - output: 'Valoare implicită de ieșire', - }, - failBranch: { - title: 'Ramură Fail', - desc: 'Când apare o eroare, va executa ramura de excepție', - customize: 'Accesați pânza pentru a personaliza logica ramurii de eșec.', - inLog: 'Excepția nodului, va executa automat ramura de eșec. Ieșirea nodului va returna un tip de eroare și un mesaj de eroare și le va transmite în aval.', - customizeTip: 'Când ramura de eșec este activată, excepțiile aruncate de noduri nu vor încheia procesul. În schimb, va executa automat ramura de eșec predefinită, permițându-vă să furnizați în mod flexibil mesaje de eroare, rapoarte, remedieri sau acțiuni de omitere.', - }, - partialSucceeded: { - tip: 'Există {{num}} noduri în proces care rulează anormal, vă rugăm să mergeți la urmărire pentru a verifica jurnalele.', - }, - title: 'Gestionarea erorilor', - tip: 'Strategie de gestionare a excepțiilor, declanșată atunci când un nod întâlnește o excepție.', - }, - retry: { - retry: 'Reîncercare', - retryOnFailure: 'Reîncercați în caz de eșec', - maxRetries: 'numărul maxim de încercări', - retryInterval: 'Interval de reîncercare', - retrying: 'Reîncerca...', - retrySuccessful: 'Reîncercați cu succes', - retryFailed: 'Reîncercarea a eșuat', - retryFailedTimes: '{{times}} reîncercări eșuate', - times: 'Ori', - ms: 'Ms', - retries: '{{num}} Încercări', - retryTimes: 'Reîncercați {{times}} ori în caz de eșec', - }, - typeSwitch: { - variable: 'Folosește variabila', - input: 'Valoare de intrare', - }, - inputVars: 'Variabile de intrare', - pluginNotInstalled: 'Pluginul nu este instalat', - }, - start: { - required: 'necesar', - inputField: 'Câmp de intrare', - builtInVar: 'Variabile integrate', - outputVars: { - query: 'Intrare utilizator', - memories: { - des: 'Istoric conversație', - type: 'tip mesaj', - content: 'conținut mesaj', - }, - files: 'Listă de fișiere', - }, - noVarTip: 'Setați intrările care pot fi utilizate în fluxul de lucru', - }, - end: { - outputs: 'Ieșiri', - output: { - type: 'tip ieșire', - variable: 'variabilă de ieșire', - }, - type: { - 'none': 'Nimic', - 'plain-text': 'Text simplu', - 'structured': 'Structurat', - }, - }, - answer: { - answer: 'Răspuns', - outputVars: 'Variabile de ieșire', - }, - llm: { - model: 'model', - variables: 'variabile', - context: 'context', - contextTooltip: 'Puteți importa cunoștințe ca și context', - notSetContextInPromptTip: 'Pentru a activa funcția de context, completați variabila de context în PROMPT.', - prompt: 'prompt', - roleDescription: { - system: 'Dați instrucțiuni de nivel înalt pentru conversație', - user: 'Furnizați instrucțiuni, întrebări sau orice intrare bazată pe text pentru model', - assistant: 'Răspunsurile modelului bazate pe mesajele utilizatorului', - }, - addMessage: 'Adaugă mesaj', - vision: 'viziune', - files: 'Fișiere', - resolution: { - name: 'Rezoluție', - high: 'Înaltă', - low: 'Joasă', - }, - outputVars: { - output: 'Conținut generat', - reasoning_content: 'Conținut de raționament', - usage: 'Informații de utilizare a modelului', - }, - singleRun: { - variable: 'Variabilă', - }, - sysQueryInUser: 'sys.query în mesajul utilizatorului este necesar', - jsonSchema: { - warningTips: { - saveSchema: 'Vă rugăm să terminați editarea câmpului curent înainte de a salva schema.', - }, - addChildField: 'Adăugați câmpul copil', - generationTip: 'Puteți folosi limbajul natural pentru a crea rapid un schema JSON.', - promptTooltip: 'Convertește descrierea textului într-o structură standardizată JSON Schema.', - resetDefaults: 'Resetează', - apply: 'Aplică', - instruction: 'Instrucțiune', - doc: 'Aflați mai multe despre ieșirea structurată', - stringValidations: 'Validările șirurilor', - title: 'Schema de Ieşire Structurată', - generateJsonSchema: 'Generați schema JSON', - generate: 'Generează', - import: 'Importă din JSON', - generating: 'Generarea schemei JSON...', - addField: 'Adaugă câmp', - regenerate: 'Regenerare', - generatedResult: 'Rezultatul generat', - descriptionPlaceholder: 'Adăugați o descriere', - showAdvancedOptions: 'Afișați opțiuni avansate', - resultTip: 'Iată rezultatul generat. Dacă nu ești mulțumit, poți să te întorci și să îți modifici cererea.', - fieldNamePlaceholder: 'Numele câmpului', - required: 'Necesar', - back: 'Înapoi', - promptPlaceholder: 'Descrie schema ta JSON...', - }, - reasoningFormat: { - tagged: 'Ține minte etichetele', - separated: 'Etichete de gândire separate', - title: 'Activează separarea etichetelor de raționare', - tooltip: 'Extrage conținutul din etichetele think și stochează-l în câmpul reasoning_content.', - }, - }, - knowledgeRetrieval: { - queryVariable: 'Variabilă de interogare', - knowledge: 'Cunoștințe', - outputVars: { - output: 'Date segmentate recuperate', - content: 'Conținut segmentat', - title: 'Titlu segmentat', - icon: 'Pictogramă segmentată', - url: 'URL segmentat', - metadata: 'Alte metadate', - files: 'Fișiere recuperate', - }, - metadata: { - options: { - disabled: { - subTitle: 'Nu activarea filtrării metadatelor', - title: 'Dezactivat', - }, - automatic: { - subTitle: 'Generați automat condiții de filtrare a metadatelor pe baza interogării utilizatorului', - desc: 'Generați automat condiții de filtrare a metadatelor pe baza variabilei de interogare', - title: 'Automat', - }, - manual: { - subTitle: 'Adăugați manual condiții de filtrare a metadatelor', - title: 'Manual', - }, - }, - panel: { - conditions: 'Condiții', - select: 'Selectați variabila...', - title: 'Condiții de filtrare a metadatelor', - add: 'Adaugă condiție', - placeholder: 'Introduceți valoarea', - datePlaceholder: 'Alege o oră...', - search: 'Căutare metadate', - }, - title: 'Filtrarea metadatelor', - tip: 'Filtrarea metadatelor este procesul de utilizare a atributelor metadatelor (cum ar fi etichetele, categoriile sau permisiunile de acces) pentru a rafina și controla recuperarea informațiilor relevante într-un sistem.', - }, - queryText: 'Text interogare', - queryAttachment: 'Imagini interogate', - }, - http: { - inputVars: 'Variabile de intrare', - api: 'API', - apiPlaceholder: 'Introduceți URL-ul, tastați ‘/’ pentru a insera variabilă', - notStartWithHttp: 'API-ul trebuie să înceapă cu http:// sau https://', - key: 'Cheie', - value: 'Valoare', - bulkEdit: 'Editare în masă', - keyValueEdit: 'Editare cheie-valoare', - headers: 'Antete', - params: 'Parametri', - body: 'Corp', - outputVars: { - body: 'Conținutul răspunsului', - statusCode: 'Cod de stare al răspunsului', - headers: 'Lista antetelor de răspuns în format JSON', - files: 'Lista fișierelor', - }, - authorization: { - 'authorization': 'Autorizare', - 'authorizationType': 'Tip de autorizare', - 'no-auth': 'Niciuna', - 'api-key': 'Cheie API', - 'auth-type': 'Tip de autentificare', - 'basic': 'De bază', - 'bearer': 'Bearer', - 'custom': 'Personalizat', - 'api-key-title': 'Cheie API', - 'header': 'Antet', - }, - insertVarPlaceholder: 'tastați \'/\' pentru a insera variabilă', - timeout: { - title: 'Timp limită', - connectLabel: 'Timp limită pentru conexiune', - connectPlaceholder: 'Introduceți timpul limită pentru conexiune în secunde', - readLabel: 'Timp limită pentru citire', - readPlaceholder: 'Introduceți timpul limită pentru citire în secunde', - writeLabel: 'Timp limită pentru scriere', - writePlaceholder: 'Introduceți timpul limită pentru scriere în secunde', - }, - type: 'Tip', - binaryFileVariable: 'Variabilă de fișier binar', - extractListPlaceholder: 'Introduceți indexul elementelor din listă, tastați "/" inserați variabila', - curl: { - placeholder: 'Lipiți șirul cURL aici', - title: 'Importați din cURL', - }, - verifySSL: { - title: 'Verifică certificatul SSL', - warningTooltip: 'Dezactivarea verificării SSL nu este recomandată pentru medii de producție. Acest lucru ar trebui să fie folosit doar în dezvoltare sau testare, deoarece face conexiunea vulnerabilă la amenințări de securitate, cum ar fi atacurile man-in-the-middle.', - }, - }, - code: { - inputVars: 'Variabile de intrare', - outputVars: 'Variabile de ieșire', - advancedDependencies: 'Dependențe avansate', - advancedDependenciesTip: 'Adăugați câteva dependențe preîncărcate care necesită mai mult timp pentru a consuma sau nu sunt integrate implicit aici', - searchDependencies: 'Căutați dependențe', - syncFunctionSignature: 'Sincronizați semnătura funcției cu codul', - }, - templateTransform: { - inputVars: 'Variabile de intrare', - code: 'Cod', - codeSupportTip: 'Suportă doar Jinja2', - outputVars: { - output: 'Conținut transformat', - }, - }, - ifElse: { - if: 'Dacă', - else: 'Altminteri', - elseDescription: 'Utilizat pentru a defini logica care ar trebui executată atunci când condiția if nu este îndeplinită.', - and: 'și', - or: 'sau', - operator: 'Operator', - notSetVariable: 'Vă rugăm să setați mai întâi variabila', - comparisonOperator: { - 'contains': 'conține', - 'not contains': 'nu conține', - 'start with': 'începe cu', - 'end with': 'se termină cu', - 'is': 'este', - 'is not': 'nu este', - 'empty': 'este gol', - 'not empty': 'nu este gol', - 'null': 'este null', - 'not null': 'nu este null', - 'in': 'în', - 'not in': 'nu în', - 'exists': 'Există', - 'all of': 'Toate', - 'not exists': 'nu există', - 'before': 'înainte', - 'after': 'după', - }, - enterValue: 'Introduceți valoarea', - addCondition: 'Adăugați condiție', - conditionNotSetup: 'Condiția NU este setată', - selectVariable: 'Selectați variabila...', - optionName: { - audio: 'Audio', - localUpload: 'Încărcare locală', - url: 'Adresa URL', - image: 'Imagine', - video: 'Video', - doc: 'Doc', - }, - select: 'Alege', - addSubVariable: 'Subvariabilă', - }, - variableAssigner: { - title: 'Atribuie variabile', - outputType: 'Tip de ieșire', - varNotSet: 'Variabila nu este setată', - noVarTip: 'Adăugați variabilele de atribuit', - type: { - string: 'Șir', - number: 'Număr', - object: 'Obiect', - array: 'Array', - }, - aggregationGroup: 'Grup de agregare', - aggregationGroupTip: 'Activarea acestei funcții permite agregatorului de variabile să agrege mai multe seturi de variabile.', - addGroup: 'Adăugați grup', - outputVars: { - varDescribe: 'Ieșire {{groupName}}', - }, - setAssignVariable: 'Setați variabila de atribuire', - }, - assigner: { - 'assignedVariable': 'Variabilă Atribuită', - 'writeMode': 'Mod de Scriere', - 'writeModeTip': 'Când VARIABILA ATRIBUITĂ este un array, modul de adăugare adaugă la sfârșit.', - 'over-write': 'Suprascrie', - 'append': 'Adaugă', - 'plus': 'Plus', - 'clear': 'Șterge', - 'setVariable': 'Setează Variabila', - 'variable': 'Variabilă', - 'operations': { - 'append': 'Adăugaţi', - 'extend': 'Prelungi', - 'title': 'Operație', - '+=': '+=', - 'set': 'Apus', - '*=': '*=', - 'overwrite': 'Suprascrie', - 'clear': 'Clar', - 'over-write': 'Suprascrie', - '/=': '/=', - '-=': '-=', - 'remove-first': 'Îndepărtează primul', - 'remove-last': 'Îndepărtează ultimul', - }, - 'selectAssignedVariable': 'Selectați variabila atribuită...', - 'varNotSet': 'Variabila NU este setată', - 'noVarTip': 'Faceți clic pe butonul "+" pentru a adăuga variabile', - 'noAssignedVars': 'Nu există variabile atribuite disponibile', - 'setParameter': 'Setați parametrul...', - 'assignedVarsDescription': 'Variabilele atribuite trebuie să fie variabile inscripționabile, cum ar fi variabilele de conversație.', - 'variables': 'Variabile', - }, - tool: { - inputVars: 'Variabile de intrare', - outputVars: { - text: 'conținut generat de instrument', - files: { - title: 'fișiere generate de instrument', - type: 'Tip de suport. Acum acceptă doar imagine', - transfer_method: 'Metodă de transfer. Valoarea este remote_url sau local_file', - url: 'URL imagine', - upload_file_id: 'ID fișier încărcat', - }, - json: 'JSON generat de instrument', - }, - authorize: 'Autorizați', - insertPlaceholder2: 'introduce o variabilă', - insertPlaceholder1: 'Scrieți sau apăsați', - settings: 'Setări', - }, - questionClassifiers: { - model: 'model', - inputVars: 'Variabile de intrare', - outputVars: { - className: 'Nume clasă', - usage: 'Informații de utilizare a modelului', - }, - class: 'Clasă', - classNamePlaceholder: 'Scrieți numele clasei', - advancedSetting: 'Setare avansată', - topicName: 'Nume subiect', - topicPlaceholder: 'Scrieți numele subiectului', - addClass: 'Adăugați clasă', - instruction: 'Instrucțiune', - instructionTip: 'Introduceți instrucțiuni suplimentare pentru a ajuta clasificatorul de întrebări să înțeleagă mai bine cum să categorizeze întrebările.', - instructionPlaceholder: 'Scrieți instrucțiunea', - }, - parameterExtractor: { - inputVar: 'Variabilă de intrare', - outputVars: { - isSuccess: 'Este succes. În caz de succes valoarea este 1, în caz de eșec valoarea este 0.', - errorReason: 'Motivul erorii', - usage: 'Informații de utilizare a modelului', - }, - extractParameters: 'Extrageți parametrii', - importFromTool: 'Importă din instrumente', - addExtractParameter: 'Adăugați parametru de extragere', - addExtractParameterContent: { - name: 'Nume', - namePlaceholder: 'Nume parametru de extragere', - type: 'Tip', - typePlaceholder: 'Tip parametru de extragere', - description: 'Descriere', - descriptionPlaceholder: 'Descriere parametru de extragere', - required: 'Necesar', - requiredContent: 'Necesar este utilizat doar ca referință pentru inferența modelului și nu pentru validarea obligatorie a ieșirii parametrului.', - }, - extractParametersNotSet: 'Parametrii de extragere nu sunt setați', - instruction: 'Instrucțiune', - instructionTip: 'Introduceți instrucțiuni suplimentare pentru a ajuta extractorul de parametri să înțeleagă cum să extragă parametrii.', - advancedSetting: 'Setare avansată', - reasoningMode: 'Mod de raționament', - reasoningModeTip: 'Puteți alege modul de raționament potrivit în funcție de capacitatea modelului de a răspunde la instrucțiuni pentru apelarea funcțiilor sau prompturi.', - }, - iteration: { - deleteTitle: 'Ștergeți nodul de iterație?', - deleteDesc: 'Ștergerea nodului de iterație va șterge toate nodurile copil', - input: 'Intrare', - output: 'Variabile de ieșire', - iteration_one: '{{count}} Iterație', - iteration_other: '{{count}} Iterații', - currentIteration: 'Iterație curentă', - ErrorMethod: { - operationTerminated: 'Încheiată', - continueOnError: 'continuare-la-eroare', - removeAbnormalOutput: 'elimină-ieșire-anormală', - }, - parallelModeEnableTitle: 'Modul paralel activat', - errorResponseMethod: 'Metoda de răspuns la eroare', - comma: ',', - parallelModeEnableDesc: 'În modul paralel, sarcinile din iterații acceptă execuția paralelă. Puteți configura acest lucru în panoul de proprietăți din dreapta.', - parallelModeUpper: 'MOD PARALEL', - MaxParallelismTitle: 'Paralelism maxim', - parallelMode: 'Mod paralel', - error_other: '{{număr}} Erori', - error_one: '{{număr}} Eroare', - parallelPanelDesc: 'În modul paralel, activitățile din iterație acceptă execuția paralelă.', - MaxParallelismDesc: 'Paralelismul maxim este utilizat pentru a controla numărul de sarcini executate simultan într-o singură iterație.', - answerNodeWarningDesc: 'Avertisment modul paralel: Nodurile de răspuns, atribuirea variabilelor de conversație și operațiunile persistente de citire/scriere în iterații pot cauza excepții.', - flattenOutput: 'Aplatizează ieșirea', - flattenOutputDesc: 'Când este activat, dacă toate ieșirile iterației sunt array-uri, acestea vor fi aplatizate într-un singur array. Când este dezactivat, ieșirile vor menține o structură de array-nested.', - }, - note: { - editor: { - small: 'Mic', - bold: 'Îndrăzneț', - unlink: 'Deconecta', - strikethrough: 'Tăiere', - invalidUrl: 'URL nevalidă', - medium: 'Medie', - openLink: 'Deschide', - large: 'Mare', - enterUrl: 'Introduceți adresa URL...', - italic: 'Cursiv', - placeholder: 'Scrie-ți notița...', - link: 'Legătură', - bulletList: 'Lista de marcatori', - showAuthor: 'Afișați autorul', - }, - addNote: 'Adăugați o notă', - }, - docExtractor: { - outputVars: { - text: 'Text extras', - }, - inputVar: 'Variabilă de intrare', - learnMore: 'Află mai multe', - supportFileTypes: 'Tipuri de fișiere de suport: {{types}}.', - }, - listFilter: { - outputVars: { - first_record: 'Primul record', - last_record: 'Ultima înregistrare', - result: 'Filtrează rezultatul', - }, - desc: 'DESC', - inputVar: 'Variabilă de intrare', - filterConditionKey: 'Tasta de condiție a filtrului', - filterCondition: 'Starea filtrului', - orderBy: 'Comandă după', - selectVariableKeyPlaceholder: 'Selectați tasta subvariabilă', - filterConditionComparisonOperator: 'Operator de comparare a condițiilor filtrului', - limit: 'N de sus', - filterConditionComparisonValue: 'Valoare Stare filtrare', - asc: 'ASC', - extractsCondition: 'Extrageți elementul N', - }, - agent: { - strategy: { - configureTip: 'Vă rugăm să configurați strategia agentică.', - selectTip: 'Selectați strategia agentică', - configureTipDesc: 'După configurarea strategiei agentice, acest nod va încărca automat configurațiile rămase. Strategia va afecta mecanismul raționamentului instrumentelor în mai mulți pași.', - shortLabel: 'Strategie', - label: 'Strategia agentică', - tooltip: 'Diferitele strategii agentice determină modul în care sistemul planifică și execută apelurile de instrumente în mai mulți pași', - searchPlaceholder: 'Strategie agentică de căutare', - }, - pluginInstaller: { - installing: 'Instalarea', - install: 'Instala', - }, - modelNotInMarketplace: { - manageInPlugins: 'Gestionați în pluginuri', - title: 'Model neinstalat', - desc: 'Acest model este instalat din depozitul local sau GitHub. Vă rugăm să utilizați după instalare.', - }, - modelNotSupport: { - descForVersionSwitch: 'Versiunea de plugin instalată nu oferă acest model. Faceți clic pentru a comuta versiunea.', - desc: 'Versiunea de plugin instalată nu oferă acest model.', - title: 'Model neacceptat', - }, - modelSelectorTooltips: { - deprecated: 'Acest model este învechit', - }, - outputVars: { - files: { - upload_file_id: 'Încărcați ID-ul fișierului', - type: 'Tip de suport. Acum acceptă doar imaginea', - transfer_method: 'Metoda de transfer. Valoarea este remote_url sau local_file', - title: 'Fișiere generate de agent', - url: 'Adresa URL a imaginii', - }, - text: 'Conținut generat de agent', - usage: 'Informații de utilizare a modelului', - json: 'JSON generat de agent', - }, - checkList: { - strategyNotSelected: 'Strategia neselectată', - }, - installPlugin: { - install: 'Instala', - changelog: 'Jurnal de modificări', - desc: 'Despre instalarea următorului plugin', - title: 'Instalează pluginul', - cancel: 'Anula', - }, - pluginNotInstalled: 'Acest plugin nu este instalat', - unsupportedStrategy: 'Strategie neacceptată', - notAuthorized: 'Neautorizat', - learnMore: 'Află mai multe', - toolbox: 'cutie de scule', - toolNotAuthorizedTooltip: '{{instrument}} Neautorizat', - strategyNotSet: 'Strategia agentică nu este setată', - tools: 'Instrumente', - maxIterations: 'Iterații maxime', - configureModel: 'Configurați modelul', - strategyNotFoundDescAndSwitchVersion: 'Versiunea de plugin instalată nu oferă această strategie. Faceți clic pentru a comuta versiunea.', - strategyNotInstallTooltip: '{{strategy}} nu este instalat', - pluginNotFoundDesc: 'Acest plugin este instalat de pe GitHub. Vă rugăm să accesați Pluginuri pentru a reinstala', - modelNotSelected: 'Model neselectat', - toolNotInstallTooltip: '{{tool}} nu este instalat', - pluginNotInstalledDesc: 'Acest plugin este instalat de pe GitHub. Vă rugăm să accesați Pluginuri pentru a reinstala', - strategyNotFoundDesc: 'Versiunea de plugin instalată nu oferă această strategie.', - modelNotInstallTooltip: 'Acest model nu este instalat', - linkToPlugin: 'Link către pluginuri', - model: 'model', - parameterSchema: 'Schema parametrului', - clickToViewParameterSchema: 'Click pentru a vizualiza schema parametrilor', - }, - loop: { - ErrorMethod: { - removeAbnormalOutput: 'Elimină ieșirea anormală', - continueOnError: 'Continuați în caz de eroare', - operationTerminated: 'Încetat', - }, - inputMode: 'Mod de introducere', - currentLoopCount: 'Numărul curent de iterații: {{count}}', - error_one: '{{count}} Eroare', - error_other: '{{count}} Erori', - input: 'Intrare', - errorResponseMethod: 'Metoda de Răspuns la Erori', - deleteTitle: 'Șterge nodul de ciclu?', - breakConditionTip: 'Numai variabilele din interiorul buclelor cu condiții de terminare și variabilele de conversație pot fi referite.', - loop_one: '{{count}} buclă', - loop_other: '{{count}} Buclă', - loopNode: 'Nod de buclă', - loopMaxCount: 'Numărul maxim de iterații', - loopVariables: 'Variabile de buclă', - finalLoopVariables: 'Variabilele ciclului final', - currentLoop: 'Circuit Curent', - totalLoopCount: 'Numărul total de bucle: {{count}}', - output: 'Variabilă de ieșire', - exitConditionTip: 'Un nod de buclă are nevoie de cel puțin o condiție de ieșire.', - initialLoopVariables: 'Variabilele de loop inițiale', - setLoopVariables: 'Setați variabilele în cadrul buclei', - loopMaxCountError: 'Vă rugăm să introduceți un număr maxim valid de bucle, care să fie între 1 și {{maxCount}}', - deleteDesc: 'Ștergerea nodului buclă va elimina toate nodurile copil.', - breakCondition: 'Condiția de terminare a buclei', - comma: ',', - variableName: 'Nume Variabil', - }, - dataSource: { - add: 'Adăugarea sursei de date', - supportedFileFormatsPlaceholder: 'Extensie de fișier, e.g. doc', - supportedFileFormats: 'Formate de fișiere acceptate', - }, - knowledgeBase: { - chunkStructureTip: { - learnMore: 'Află mai multe', - title: 'Vă rugăm să alegeți o structură de bucăți', - message: 'Baza de cunoștințe Dify acceptă trei structuri de fragmentare: General, Părinte-copil și Întrebări și răspunsuri. Fiecare bază de cunoștințe poate avea o singură structură. Ieșirea de la nodul precedent trebuie să se alinieze cu structura de bucăți selectată. Rețineți că alegerea structurii de fragmentare afectează metodele de index disponibile.', - }, - indexMethodIsRequired: 'Este necesară metoda indexului', - chunkStructure: 'Structura bucății', - chunkIsRequired: 'Este necesară structura bucății', - retrievalSettingIsRequired: 'Setarea de recuperare este necesară', - aboutRetrieval: 'despre metoda de recuperare.', - chooseChunkStructure: 'Alegeți o structură de bucăți', - changeChunkStructure: 'Modificați structura bucății', - chunksInput: 'Bucăți', - chunksInputTip: 'Variabila de intrare a nodului bazei de cunoștințe este Chunks. Tipul variabilei este un obiect cu un Șchema JSON specific care trebuie să fie coerent cu structura de chunk selectată.', - chunksVariableIsRequired: 'Variabila Chunks este obligatorie', - embeddingModelIsRequired: 'Este necesar un model de încorporare', - rerankingModelIsRequired: 'Este necesar un model de reordonare', - rerankingModelIsInvalid: 'Modelul de reordonare este invalid', - embeddingModelIsInvalid: 'Modelul de încorporare este invalid', - }, - triggerPlugin: { - authorized: 'Autorizat', - notConfigured: 'Nesetat', - notAuthorized: 'Neautorizat', - selectSubscription: 'Selectează abonamentul', - availableSubscriptions: 'Abonamente disponibile', - addSubscription: 'Adaugă un abonament nou', - removeSubscription: 'Anulează abonamentul', - subscriptionRemoved: 'Abonamentul a fost eliminat cu succes', - error: 'Eroare', - configuration: 'Configurație', - remove: 'Elimină', - or: 'SAU', - useOAuth: 'Folosește OAuth', - useApiKey: 'Utilizează cheia API', - authenticationFailed: 'Autentificare eșuată', - authenticationSuccess: 'Autentificare reușită', - oauthConfigFailed: 'Configurarea OAuth a eșuat', - configureOAuthClient: 'Configurează clientul OAuth', - oauthClientDescription: 'Configurează acreditările clientului OAuth pentru a permite autentificarea', - oauthClientSaved: 'Configurarea clientului OAuth a fost salvată cu succes', - configureApiKey: 'Configurează cheia API', - apiKeyDescription: 'Configurați acreditările cheii API pentru autentificare', - apiKeyConfigured: 'Cheia API a fost configurată cu succes', - configurationFailed: 'Configurarea a eșuat', - failedToStart: 'Eșec la inițierea procesului de autentificare', - credentialsVerified: 'Datele de autentificare au fost verificate cu succes', - credentialVerificationFailed: 'Verificarea acreditărilor a eșuat', - verifyAndContinue: 'Verifică și continuă', - configureParameters: 'Configurează parametrii', - parametersDescription: 'Configurează parametrii și proprietățile declanșatorului', - configurationComplete: 'Configurare completă', - configurationCompleteDescription: 'Declanșatorul tău a fost configurat cu succes', - configurationCompleteMessage: 'Configurația declanșatorului tău este acum completă și gata de utilizare.', - parameters: 'Parametri', - properties: 'Proprietăți', - propertiesDescription: 'Proprietăți suplimentare de configurare pentru acest declanșator', - noConfigurationRequired: 'Nu este necesară nicio configurare suplimentară pentru acest declanșator.', - subscriptionName: 'Numele abonamentului', - subscriptionNameDescription: 'Introduceți un nume unic pentru acest abonament al declanșatorului', - subscriptionNamePlaceholder: 'Introduceți numele abonamentului...', - subscriptionNameRequired: 'Numele abonamentului este obligatoriu', - subscriptionRequired: 'Este necesar un abonament', - }, - triggerSchedule: { - title: 'Program', - nodeTitle: 'Declanșator Programat', - notConfigured: 'Neconfigurat', - useCronExpression: 'Utilizați expresie cron', - useVisualPicker: 'Utilizați selectorul vizual', - frequency: { - label: 'FRECVENȚĂ', - hourly: 'Pe oră', - daily: 'Zilnic', - weekly: 'Săptămânal', - monthly: 'Lunar', - }, - selectFrequency: 'Selectați frecvența', - frequencyLabel: 'Frecvență', - nextExecution: 'Următoarea execuție', - weekdays: 'Zilele săptămânii', - time: 'Timp', - cronExpression: 'Expresie Cron', - nextExecutionTime: 'URMĂTOAREA ORĂ DE EXECUȚIE', - nextExecutionTimes: 'Următoarele 5 momente de execuție', - startTime: 'Ora de începere', - executeNow: 'Executare acum', - selectDateTime: 'Selectează data și ora', - hours: 'Ore', - minutes: 'Minute', - onMinute: 'Într-un minut', - days: 'Zile', - lastDay: 'Ultima zi', - lastDayTooltip: 'Nu toate lunile au 31 de zile. Folosește opțiunea \'ultima zi\' pentru a selecta ultima zi a fiecărei luni.', - mode: 'Modă', - timezone: 'Fus orar', - visualConfig: 'Configurare vizuală', - monthlyDay: 'Ziua lunară', - executionTime: 'Timp de execuție', - invalidTimezone: 'Fus orar nevalid', - invalidCronExpression: 'Expresie cron nevalidă', - noValidExecutionTime: 'Nu se poate calcula un timp de execuție valid', - executionTimeCalculationError: 'Calcularea timpilor de execuție a eșuat', - invalidFrequency: 'Frecvență invalidă', - invalidStartTime: 'Ora de început nevalidă', - startTimeMustBeFuture: 'Ora de începere trebuie să fie în viitor', - invalidTimeFormat: 'Format de oră invalid (se aștepta HH:MM AM/PM)', - invalidWeekday: 'Zi a săptămânii invalidă: {{weekday}}', - invalidMonthlyDay: 'Ziua lunară trebuie să fie între 1-31 sau „ultima”', - invalidOnMinute: 'Minutele trebuie să fie între 0 și 59', - invalidExecutionTime: 'Timp de execuție invalid', - executionTimeMustBeFuture: 'Timpul de execuție trebuie să fie în viitor', - }, - triggerWebhook: { - title: 'Declanșator Webhook', - nodeTitle: '🔗 Declanșator Webhook', - configPlaceholder: 'Configurarea declanșatorului webhook va fi implementată aici', - webhookUrl: 'URL-ul Webhook', - webhookUrlPlaceholder: 'Apasă pe generează pentru a crea URL-ul webhook', - generate: 'Generează', - copy: 'Copiază', - test: 'Test', - urlGenerated: 'URL-ul webhook a fost generat cu succes', - urlGenerationFailed: 'Eșec la generarea URL-ului webhook', - urlCopied: 'URL copiat în clipboard', - method: 'Metodă', - contentType: 'Tip de conținut', - queryParameters: 'Parametri de interogare', - headerParameters: 'Parametri de antet', - requestBodyParameters: 'Parametri ai corpului cererii', - parameterName: 'Nume variabilă', - varName: 'Nume variabilă', - varType: 'Tip', - varNamePlaceholder: 'Introduceți numele variabilei...', - required: 'Necesar', - addParameter: 'Adaugă', - addHeader: 'Adaugă', - noParameters: 'Niciun parametru configurat', - noQueryParameters: 'Nu sunt configurate parametri de interogare', - noHeaders: 'Nu sunt configurate antete', - noBodyParameters: 'Nu sunt configurate parametrii pentru corp', - debugUrlTitle: 'Pentru teste, folosește întotdeauna acest URL', - debugUrlCopy: 'Click pentru a copia', - debugUrlCopied: 'Copiat!', - debugUrlPrivateAddressWarning: 'Această adresă URL pare să fie una internă, ceea ce poate cauza eșecul solicitărilor webhook. Puteți schimba TRIGGER_URL cu o adresă publică.', - errorHandling: 'Gestionarea erorilor', - errorStrategy: 'Gestionarea erorilor', - responseConfiguration: 'Răspuns', - asyncMode: 'Mod asincron', - statusCode: 'Cod de stare', - responseBody: 'Corp de răspuns', - responseBodyPlaceholder: 'Scrieți aici corpul răspunsului dvs.', - headers: 'Antete', - validation: { - webhookUrlRequired: 'URL-ul webhook-ului este necesar', - invalidParameterType: 'Tip de parametru invalid "{{type}}" pentru parametrul "{{name}}"', - }, - }, - }, - tracing: { - stopBy: 'Oprit de {{user}}', - }, - variableReference: { - noAvailableVars: 'Nu există variabile disponibile', - noVarsForOperation: 'Nu există variabile disponibile pentru atribuire cu operațiunea selectată.', - conversationVars: 'Variabile de conversație', - assignedVarsDescription: 'Variabilele atribuite trebuie să fie variabile inscripționabile, cum ar fi', - noAssignedVars: 'Nu există variabile atribuite disponibile', - }, - versionHistory: { - filter: { - all: 'Toate', - onlyYours: 'Numai al tău', - reset: 'Resetare filtrare', - onlyShowNamedVersions: 'Afișați doar versiunile numite', - empty: 'Nu s-a găsit nicio istorie de versiune corespunzătoare.', - }, - editField: { - releaseNotesLengthLimit: 'Notele de eliberare nu pot depăși {{limit}} caractere', - title: 'Titlu', - titleLengthLimit: 'Titlul nu poate depăși {{limit}} caractere', - releaseNotes: 'Note de lansare', - }, - action: { - restoreSuccess: 'Versiune restaurată', - deleteSuccess: 'Versiune ștearsă', - restoreFailure: 'Restaurarea versiunii a eșuat', - deleteFailure: 'Ștergerea versiunii a eșuat', - updateSuccess: 'Versiune actualizată', - updateFailure: 'Actualizarea versiunii a eșuat', - copyIdSuccess: 'ID copiat în clipboard', - }, - latest: 'Cea mai recentă', - title: 'Versiuni', - nameThisVersion: 'Numește această versiune', - restorationTip: 'După restaurarea versiunii, proiectul actual va fi suprascris.', - defaultName: 'Versiune fără titlu', - editVersionInfo: 'Editează informațiile versiunii', - releaseNotesPlaceholder: 'Descrie ce s-a schimbat', - deletionTip: 'Ștergerea este irreversibilă, vă rugăm să confirmați.', - currentDraft: 'Draftul curent', - copyId: 'Copiază ID', - }, - debug: { - noData: { - runThisNode: 'Rulează acest nod', - description: 'Rezultatele ultimei rulări vor fi afișate aici', - }, - variableInspect: { - trigger: { - clear: 'Clar', - running: 'Starea de funcționare a cache-ului', - cached: 'Vizualizează variabilele cached', - normal: 'Inspectare variabilă', - stop: 'Oprește-te din alergat', - }, - chatNode: 'Conversație', - title: 'Inspectare variabilă', - systemNode: 'Sistem', - clearAll: 'Resetare toate', - emptyLink: 'Învățați mai multe', - view: 'Vizualizați jurnalul', - envNode: 'Mediu', - reset: 'Resetează la ultima valoare rulată', - resetConversationVar: 'Resetați variabila de conversație la valoarea implicită', - edited: 'Editat', - clearNode: 'Șterge variabila cached', - emptyTip: 'După ce ai trecut printr-un nod pe canvas sau ai rulat un nod pas cu pas, poți vizualiza valoarea curentă a variabilei nodului în Inspectarea Variabilelor.', - export: 'export', - largeDataNoExport: 'Date mari - doar previzualizare parțială', - exportToolTip: 'Exportați variabila ca fișier', - largeData: 'Date mari, previzualizare doar în citire. Exportați pentru a vedea totul.', - listening: { - title: 'Ascult pentru evenimente de la declanșatoare...', - tip: 'Acum puteți simula declanșatoare de evenimente trimițând cereri de test către endpointul HTTP {{nodeName}} sau îl puteți folosi ca URL de apel invers pentru depanarea evenimentelor în timp real. Toate rezultatele pot fi vizualizate direct în Inspectorul de Variabile.', - tipPlugin: 'Acum poți crea evenimente în {{- pluginName}} și poți prelua rezultatele acestor evenimente în Inspectorul de Variabile.', - tipSchedule: 'Ascultarea evenimentelor de la declanșatoarele de programare.\nUrmătoarea rulare programată: {{nextTriggerTime}}', - tipFallback: 'Așteptați evenimentele declanșatoare. Ieșirile vor apărea aici.', - defaultNodeName: 'acest declanșator', - defaultPluginName: 'acest plugin declanșează', - defaultScheduleTime: 'Neconfigurat', - selectedTriggers: 'declanșatori selectați', - stopButton: 'Oprește', - }, - }, - settingsTab: 'Setări', - lastRunTab: 'Ultima execuție', - relations: { - dependencies: 'Dependenţele', - noDependencies: 'Fără dependențe', - dependents: 'Dependenţe', - noDependents: 'Fără persoane aflate în întreținere', - dependentsDescription: 'Noduri care se bazează pe acest nod', - dependenciesDescription: 'Noduri pe care se bazează acest nod', - }, - relationsTab: 'Relații', - noMatchingInputsFound: 'Nu s-au găsit intrări corespunzătoare din ultima rulare', - copyLastRun: 'Copiază ultima execuție', - noLastRunFound: 'Niciun rulament anterior găsit', - copyLastRunError: 'Nu s-au putut copia ultimele intrări de rulare', - lastOutput: 'Ultimul rezultat', - lastRunInputsCopied: '{{count}} intrare(e) copiate de la ultima rulare', - }, - sidebar: { - exportWarning: 'Exportați versiunea salvată curentă', - exportWarningDesc: 'Aceasta va exporta versiunea curent salvată a fluxului dumneavoastră de lucru. Dacă aveți modificări nesalvate în editor, vă rugăm să le salvați mai întâi utilizând opțiunea de export din canvasul fluxului de lucru.', - }, - publishLimit: { - startNodeTitlePrefix: 'Actualizează la', - startNodeTitleSuffix: 'deblochează declanșatoare nelimitate pentru fiecare flux de lucru', - startNodeDesc: 'Ați atins limita de 2 declanșatoare pe flux de lucru pentru acest plan. Faceți upgrade pentru a publica acest flux de lucru.', - }, - error: { - startNodeRequired: 'Vă rugăm să adăugați mai întâi un nod de pornire înainte de {{operation}}', - operations: { - connectingNodes: 'conectarea nodurilor', - addingNodes: 'adăugarea nodurilor', - modifyingWorkflow: 'modificarea fluxului de lucru', - updatingWorkflow: 'actualizarea fluxului de lucru', - }, - }, - customWebhook: 'Webhook personalizat', - difyTeam: 'Echipa Dify', - triggerStatus: { - enabled: 'DECLANȘATOR', - disabled: 'TRIGGER • DEZACTIVAT', - }, - entryNodeStatus: { - enabled: 'PORNEȘTE', - disabled: 'PORNIRE • DEZACTIVAT', - }, - onboarding: { - title: 'Selectați un nod de start pentru a începe', - description: 'Nodurile de start diferite au capabilități diferite. Nu-ți face griji, le poți schimba oricând mai târziu.', - userInputFull: 'Intrare utilizator (nod de start original)', - userInputDescription: 'Nod de pornire care permite setarea variabilelor de input ale utilizatorului, cu aplicație web, API de servicii, server MCP și flux de lucru ca funcționalități ale instrumentului.', - trigger: 'Declanșator', - triggerDescription: 'Triggerele pot servi ca nod de pornire al unui flux de lucru, cum ar fi sarcini programate, webhook-uri personalizate sau integrări cu alte aplicații.', - back: 'Înapoi', - learnMore: 'Aflați mai multe', - aboutStartNode: 'despre nodul de start.', - escTip: { - press: 'Presă', - key: 'esc', - toDismiss: 'a concedia', - }, - }, -} - -export default translation diff --git a/web/i18n/ru-RU/app-annotation.json b/web/i18n/ru-RU/app-annotation.json new file mode 100644 index 0000000000..c20096d64a --- /dev/null +++ b/web/i18n/ru-RU/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "Аннотации", + "name": "Ответить на аннотацию", + "editBy": "Ответ отредактирован {{author}}", + "noData": { + "title": "Нет аннотаций", + "description": "Вы можете редактировать аннотации во время отладки приложения или импортировать их массово здесь для получения качественного ответа." + }, + "table": { + "header": { + "question": "вопрос", + "answer": "ответ", + "createdAt": "создано", + "hits": "попаданий", + "actions": "действия", + "addAnnotation": "Добавить аннотацию", + "bulkImport": "Массовый импорт", + "bulkExport": "Массовый экспорт", + "clearAll": "Очистить все аннотации", + "clearAllConfirm": "Удалить все аннотации?" + } + }, + "editModal": { + "title": "Редактировать ответ аннотации", + "queryName": "Запрос пользователя", + "answerName": "Storyteller Bot", + "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": "Модель векторизации текста аннотаций, переключение между моделями будет осуществлено повторно, что приведет к дополнительным затратам.", + "list": { + "delete": { + "title": "Вы уверены, что хотите удалить?" + } + }, + "batchAction": { + "cancel": "Отменить", + "selected": "Выбрано", + "delete": "Удалить" + } +} diff --git a/web/i18n/ru-RU/app-annotation.ts b/web/i18n/ru-RU/app-annotation.ts deleted file mode 100644 index 5d55e40174..0000000000 --- a/web/i18n/ru-RU/app-annotation.ts +++ /dev/null @@ -1,98 +0,0 @@ -const translation = { - title: 'Аннотации', - name: 'Ответить на аннотацию', - editBy: 'Ответ отредактирован {{author}}', - noData: { - title: 'Нет аннотаций', - description: 'Вы можете редактировать аннотации во время отладки приложения или импортировать их массово здесь для получения качественного ответа.', - }, - table: { - header: { - question: 'вопрос', - answer: 'ответ', - createdAt: 'создано', - hits: 'попаданий', - actions: 'действия', - addAnnotation: 'Добавить аннотацию', - bulkImport: 'Массовый импорт', - bulkExport: 'Массовый экспорт', - clearAll: 'Очистить все аннотации', - clearAllConfirm: 'Удалить все аннотации?', - }, - }, - editModal: { - title: 'Редактировать ответ аннотации', - queryName: 'Запрос пользователя', - answerName: 'Storyteller Bot', - 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: 'Модель векторизации текста аннотаций, переключение между моделями будет осуществлено повторно, что приведет к дополнительным затратам.', - list: { - delete: { - title: 'Вы уверены, что хотите удалить?', - }, - }, - batchAction: { - cancel: 'Отменить', - selected: 'Выбрано', - delete: 'Удалить', - }, -} - -export default translation diff --git a/web/i18n/ru-RU/app-api.json b/web/i18n/ru-RU/app-api.json new file mode 100644 index 0000000000..f293dbbc3e --- /dev/null +++ b/web/i18n/ru-RU/app-api.json @@ -0,0 +1,83 @@ +{ + "apiServer": "API Сервер", + "apiKey": "API Ключ", + "status": "Статус", + "disabled": "Отключено", + "ok": "В работе", + "copy": "Копировать", + "copied": "Скопировано", + "play": "Запустить", + "pause": "Приостановить", + "playing": "Запущено", + "loading": "Загрузка", + "merMaid": { + "rerender": "Перезапустить рендеринг" + }, + "never": "Никогда", + "apiKeyModal": { + "apiSecretKey": "Секретный ключ API", + "apiSecretKeyTips": "Чтобы предотвратить злоупотребление API, защитите свой API ключ. Избегайте использования его в виде plain-текста во фронтенд-коде. :)", + "createNewSecretKey": "Создать новый секретный ключ", + "secretKey": "Секретный ключ", + "created": "СОЗДАН", + "lastUsed": "ПОСЛЕДНЕЕ ИСПОЛЬЗОВАНИЕ", + "generateTips": "Храните этот ключ в безопасном и доступном месте." + }, + "actionMsg": { + "deleteConfirmTitle": "Удалить этот секретный ключ?", + "deleteConfirmTips": "Это действие необратимо.", + "ok": "ОК" + }, + "completionMode": { + "title": "API приложения", + "info": "Для высококачественной генерации текста, такой как статьи, резюме и переводы, используйте API completion-messages с пользовательским вводом. Генерация текста основана на параметрах модели и шаблонах подсказок, установленных в Dify Prompt Engineering.", + "createCompletionApi": "Создать completion-message", + "createCompletionApiTip": "Создайте completion-message для поддержки режима вопросов и ответов.", + "inputsTips": "(Необязательно) Укажите поля пользовательского ввода в виде пар ключ-значение, соответствующих переменным в Prompt Eng. Ключ - это имя переменной, Значение - это значение параметра. Если тип поля - Выбор, отправленное Значение должно быть одним из предустановленных вариантов.", + "queryTips": "Текстовое содержимое пользовательского ввода.", + "blocking": "Блокирующий тип, ожидает завершения выполнения и возвращает результаты. (Запросы могут быть прерваны, если процесс длительный)", + "streaming": " Ответ в рамках потока. Реализация потоковой передачи ответов на основе SSE (Server-Sent Events).", + "messageFeedbackApi": "Обратная связь по сообщению (лайк)", + "messageFeedbackApiTip": "Оцените полученные сообщения от имени конечных пользователей с помощью лайков или дизлайков. Эти данные видны на странице Журналы и аннотации и используются для будущей тонкой настройки модели.", + "messageIDTip": "Идентификатор сообщения", + "ratingTip": "лайк или дизлайк, null - отмена", + "parametersApi": "Получить информацию о параметрах приложения", + "parametersApiTip": "Получить настроенные входные параметры, включая имена переменных, имена полей, типы и значения по умолчанию. Обычно используется для отображения этих полей в форме или заполнения значений по умолчанию после загрузки клиента." + }, + "chatMode": { + "title": "API приложения чата", + "info": "Для универсальных диалоговых приложений, использующих формат вопросов и ответов, вызовите API chat-messages, чтобы начать диалог. Поддерживайте текущие разговоры, передавая возвращенный conversation_id. Параметры ответа и шаблоны зависят от настроек Dify Prompt Eng.", + "createChatApi": "Создать сообщение чата", + "createChatApiTip": "Создайте новое сообщение разговора или продолжите существующий диалог.", + "inputsTips": "(Необязательно) Укажите поля пользовательского ввода в виде пар ключ-значение, соответствующих переменным в Prompt Eng. Ключ - это имя переменной, Значение - это значение параметра. Если тип поля - Выбор, отправленное Значение должно быть одним из предустановленных вариантов.", + "queryTips": "Содержимое пользовательского ввода/вопроса", + "blocking": "Блокирующий тип, ожидает завершения выполнения и возвращает результаты. (Запросы могут быть прерваны, если процесс длительный)", + "streaming": "потоковая передача возвращает. Реализация потоковой передачи возврата на основе SSE (Server-Sent Events).", + "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": "Запрос", + "toc": "Содержание" + }, + "regenerate": "Регенерировать" +} diff --git a/web/i18n/ru-RU/app-api.ts b/web/i18n/ru-RU/app-api.ts deleted file mode 100644 index 5dfe5c889f..0000000000 --- a/web/i18n/ru-RU/app-api.ts +++ /dev/null @@ -1,85 +0,0 @@ -const translation = { - apiServer: 'API Сервер', - apiKey: 'API Ключ', - status: 'Статус', - disabled: 'Отключено', - ok: 'В работе', - copy: 'Копировать', - copied: 'Скопировано', - play: 'Запустить', - pause: 'Приостановить', - playing: 'Запущено', - loading: 'Загрузка', - merMaid: { - rerender: 'Перезапустить рендеринг', - }, - never: 'Никогда', - apiKeyModal: { - apiSecretKey: 'Секретный ключ API', - apiSecretKeyTips: 'Чтобы предотвратить злоупотребление API, защитите свой API ключ. Избегайте использования его в виде plain-текста во фронтенд-коде. :)', - createNewSecretKey: 'Создать новый секретный ключ', - secretKey: 'Секретный ключ', - created: 'СОЗДАН', - lastUsed: 'ПОСЛЕДНЕЕ ИСПОЛЬЗОВАНИЕ', - generateTips: 'Храните этот ключ в безопасном и доступном месте.', - }, - actionMsg: { - deleteConfirmTitle: 'Удалить этот секретный ключ?', - deleteConfirmTips: 'Это действие необратимо.', - ok: 'ОК', - }, - completionMode: { - title: 'API приложения', - info: 'Для высококачественной генерации текста, такой как статьи, резюме и переводы, используйте API completion-messages с пользовательским вводом. Генерация текста основана на параметрах модели и шаблонах подсказок, установленных в Dify Prompt Engineering.', - createCompletionApi: 'Создать completion-message', - createCompletionApiTip: 'Создайте completion-message для поддержки режима вопросов и ответов.', - inputsTips: '(Необязательно) Укажите поля пользовательского ввода в виде пар ключ-значение, соответствующих переменным в Prompt Eng. Ключ - это имя переменной, Значение - это значение параметра. Если тип поля - Выбор, отправленное Значение должно быть одним из предустановленных вариантов.', - queryTips: 'Текстовое содержимое пользовательского ввода.', - blocking: 'Блокирующий тип, ожидает завершения выполнения и возвращает результаты. (Запросы могут быть прерваны, если процесс длительный)', - streaming: ' Ответ в рамках потока. Реализация потоковой передачи ответов на основе SSE (Server-Sent Events).', - messageFeedbackApi: 'Обратная связь по сообщению (лайк)', - messageFeedbackApiTip: 'Оцените полученные сообщения от имени конечных пользователей с помощью лайков или дизлайков. Эти данные видны на странице Журналы и аннотации и используются для будущей тонкой настройки модели.', - messageIDTip: 'Идентификатор сообщения', - ratingTip: 'лайк или дизлайк, null - отмена', - parametersApi: 'Получить информацию о параметрах приложения', - parametersApiTip: 'Получить настроенные входные параметры, включая имена переменных, имена полей, типы и значения по умолчанию. Обычно используется для отображения этих полей в форме или заполнения значений по умолчанию после загрузки клиента.', - }, - chatMode: { - title: 'API приложения чата', - info: 'Для универсальных диалоговых приложений, использующих формат вопросов и ответов, вызовите API chat-messages, чтобы начать диалог. Поддерживайте текущие разговоры, передавая возвращенный conversation_id. Параметры ответа и шаблоны зависят от настроек Dify Prompt Eng.', - createChatApi: 'Создать сообщение чата', - createChatApiTip: 'Создайте новое сообщение разговора или продолжите существующий диалог.', - inputsTips: '(Необязательно) Укажите поля пользовательского ввода в виде пар ключ-значение, соответствующих переменным в Prompt Eng. Ключ - это имя переменной, Значение - это значение параметра. Если тип поля - Выбор, отправленное Значение должно быть одним из предустановленных вариантов.', - queryTips: 'Содержимое пользовательского ввода/вопроса', - blocking: 'Блокирующий тип, ожидает завершения выполнения и возвращает результаты. (Запросы могут быть прерваны, если процесс длительный)', - streaming: 'потоковая передача возвращает. Реализация потоковой передачи возврата на основе SSE (Server-Sent Events).', - 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: 'Запрос', - toc: 'Содержание', - }, - regenerate: 'Регенерировать', -} - -export default translation diff --git a/web/i18n/ru-RU/app-debug.json b/web/i18n/ru-RU/app-debug.json new file mode 100644 index 0000000000..70ddce0773 --- /dev/null +++ b/web/i18n/ru-RU/app-debug.json @@ -0,0 +1,562 @@ +{ + "pageTitle": { + "line1": "PROMPT", + "line2": "Engineering" + }, + "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": "Ключ поставщика LLM не установлен", + "trailFinished": "Пробный период закончен", + "description": "Ключ поставщика LLM не установлен, его необходимо установить перед отладкой.", + "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": "Вы можете импортировать знания в качестве контекста", + "selectTitle": "Выберите справочные знания", + "selected": "Знания выбраны", + "noDataSet": "Знания не найдены", + "toCreate": "Перейти к созданию", + "notSupportSelectMulti": "В настоящее время поддерживаются только одни знания", + "queryVariable": { + "title": "Переменная запроса", + "tip": "Эта переменная будет использоваться в качестве входных данных запроса для поиска контекста, получая информацию о контексте, связанную с вводом этой переменной.", + "choosePlaceholder": "Выберите переменную запроса", + "noVar": "Нет переменных", + "noVarTip": "пожалуйста, создайте переменную в разделе Переменные", + "unableToQueryDataSet": "Невозможно запросить знания", + "unableToQueryDataSetTip": "Не удалось успешно запросить знания, пожалуйста, выберите переменную запроса контекста в разделе контекста.", + "ok": "ОК", + "contextVarNotEmpty": "переменная запроса контекста не может быть пустой", + "deleteContextVarTitle": "Удалить переменную \"{{varName}}\"?", + "deleteContextVarTip": "Эта переменная была установлена в качестве переменной запроса контекста, и ее удаление повлияет на нормальное использование знаний. Если вам все еще нужно удалить ее, пожалуйста, выберите ее заново в разделе контекста." + } + }, + "tools": { + "title": "Инструменты", + "tips": "Инструменты предоставляют стандартный метод вызова API, принимая пользовательский ввод или переменные в качестве параметров запроса для запроса внешних данных в качестве контекста.", + "toolsInUse": "{{count}} инструментов используется", + "modal": { + "title": "Инструмент", + "toolType": { + "title": "Тип инструмента", + "placeholder": "Пожалуйста, выберите тип инструмента" + }, + "name": { + "title": "Имя", + "placeholder": "Пожалуйста, введите имя" + }, + "variableName": { + "title": "Имя переменной", + "placeholder": "Пожалуйста, введите имя переменной" + } + } + }, + "conversationHistory": { + "title": "История разговоров", + "description": "Установить префиксы имен для ролей разговора", + "tip": "История разговоров не включена, пожалуйста, добавьте в промпт выше.", + "learnMore": "Узнать больше", + "editModal": { + "title": "Редактировать имена ролей разговора", + "userPrefix": "Префикс пользователя", + "assistantPrefix": "Префикс помощника" + } + }, + "toolbox": { + "title": "НАБОР ИНСТРУМЕНТОВ" + }, + "moderation": { + "title": "Модерация контента", + "description": "Обеспечьте безопасность выходных данных модели, используя API модерации или поддерживая список чувствительных слов.", + "allEnabled": "ВХОДНОЙ/ВЫХОДНОЙ контент включен", + "inputEnabled": "ВХОДНОЙ контент включен", + "outputEnabled": "ВЫХОДНОЙ контент включен", + "modal": { + "title": "Настройки модерации контента", + "provider": { + "title": "Поставщик", + "openai": "Модерация OpenAI", + "openaiTip": { + "prefix": "Для модерации OpenAI требуется ключ API OpenAI, настроенный в ", + "suffix": "." + }, + "keywords": "Ключевые слова" + }, + "keywords": { + "tip": "По одному на строку, разделенные разрывами строк. До 100 символов на строку.", + "placeholder": "По одному на строку, разделенные разрывами строк", + "line": "Строка" + }, + "content": { + "input": "Модерировать ВХОДНОЙ контент", + "output": "Модерировать ВЫХОДНОЙ контент", + "preset": "Предустановленные ответы", + "placeholder": "Здесь содержимое предустановленных ответов", + "condition": "Модерация ВХОДНОГО и ВЫХОДНОГО контента включена хотя бы одна", + "fromApi": "Предустановленные ответы возвращаются API", + "errorMessage": "Предустановленные ответы не могут быть пустыми", + "supportMarkdown": "Markdown поддерживается" + }, + "openaiNotConfig": { + "before": "Для модерации OpenAI требуется ключ API OpenAI, настроенный в", + "after": "" + } + }, + "contentEnableLabel": "Модерация контента включена" + }, + "fileUpload": { + "title": "Загрузка файлов", + "description": "Поле ввода чата позволяет загружать изображения, документы и другие файлы.", + "supportedTypes": "Поддерживаемые типы файлов", + "numberLimit": "Максимум загрузок", + "modalTitle": "Настройка загрузки файлов" + }, + "imageUpload": { + "title": "Загрузка изображений", + "description": "Позволяет загружать изображения.", + "supportedTypes": "Поддерживаемые типы файлов", + "numberLimit": "Максимум загрузок", + "modalTitle": "Настройка загрузки изображений" + }, + "bar": { + "empty": "Включить функции для улучшения пользовательского опыта веб-приложения", + "enableText": "Функции включены", + "manage": "Управлять" + }, + "documentUpload": { + "title": "Документ", + "description": "Включение Документа позволит модели принимать документы и отвечать на вопросы о них." + }, + "audioUpload": { + "title": "Аудио", + "description": "Включение Аудио позволит модели обрабатывать аудиофайлы для транскрипции и анализа." + } + }, + "generate": { + "title": "Генератор промпта", + "description": "Генератор промпта использует настроенную модель для оптимизации промпта для повышения качества и улучшения структуры. Пожалуйста, напишите четкие и подробные инструкции.", + "tryIt": "Попробуйте", + "instruction": "Инструкции", + "generate": "Сгенерировать", + "resTitle": "Сгенерированный промпт", + "apply": "Применить", + "loading": "Оркестрация приложения для вас...", + "overwriteTitle": "Перезаписать существующую конфигурацию?", + "overwriteMessage": "Применение этого промпта перезапишет существующую конфигурацию.", + "template": { + "pythonDebugger": { + "name": "Отладчик Python", + "instruction": "Бот, который может генерировать и отлаживать ваш код на основе ваших инструкций" + }, + "translation": { + "name": "Переводчик", + "instruction": "Переводчик, который может переводить на несколько языков" + }, + "professionalAnalyst": { + "name": "Профессиональный аналитик", + "instruction": "Извлекайте информацию, выявляйте риски и извлекайте ключевую информацию из длинных отчетов в одну записку" + }, + "excelFormulaExpert": { + "name": "Эксперт по формулам Excel", + "instruction": "Чат-бот, который может помочь начинающим пользователям понять, использовать и создавать формулы Excel на основе инструкций пользователя" + }, + "travelPlanning": { + "name": "Планировщик путешествий", + "instruction": "Помощник по планированию путешествий - это интеллектуальный инструмент, разработанный, чтобы помочь пользователям без труда планировать свои поездки" + }, + "SQLSorcerer": { + "name": "SQL-ассистент", + "instruction": "Преобразуйте повседневный язык в SQL-запросы" + }, + "GitGud": { + "name": "Git gud", + "instruction": "Генерируйте соответствующие команды Git на основе описанных пользователем действий по управлению версиями" + }, + "meetingTakeaways": { + "name": "Итоги совещания", + "instruction": "Извлекайте из совещаний краткие резюме, включая темы обсуждения, ключевые выводы и элементы действий" + }, + "writingsPolisher": { + "name": "Редактор", + "instruction": "Используйте LLM, чтобы улучшить свои письменные работы" + } + }, + "to": "к", + "versions": "Версии", + "latest": "Последний", + "version": "Версия", + "dismiss": "Отклонить", + "press": "Пресс", + "optional": "Необязательно", + "insertContext": "вставьте контекст", + "idealOutput": "Идеальный результат", + "optimizationNote": "Замечание по оптимизации", + "optimizePromptTooltip": "Оптимизировать в генераторе подсказок", + "instructionPlaceHolderTitle": "Опишите, как вы хотели бы улучшить этот запрос. Например:", + "instructionPlaceHolderLine2": "Формат вывода неверный, пожалуйста, строго следуйте формату JSON.", + "instructionPlaceHolderLine3": "Тон слишком резкий, пожалуйста, сделай его более дружелюбным.", + "instructionPlaceHolderLine1": "Сделайте результат более кратким, сохраняя основные моменты.", + "idealOutputPlaceholder": "Опишите формат ответа, длину, тон и требования к содержанию, которые вы считаете идеальными.", + "newNoDataLine1": "Напишите инструкцию в левом столбце и нажмите 'Сгенерировать', чтобы увидеть ответ.", + "codeGenInstructionPlaceHolderLine": "Чем более подробной является обратная связь, например, типы данных входных и выходных данных, а также то, как обрабатываются переменные, тем точнее будет генерируемый код." + }, + "resetConfig": { + "title": "Подтвердить сброс?", + "message": "Сброс отменяет изменения, восстанавливая последнюю опубликованную конфигурацию." + }, + "errorMessage": { + "nameOfKeyRequired": "имя ключа: {{key}} обязательно", + "valueOfVarRequired": "значение {{key}} не может быть пустым", + "queryRequired": "Требуется текст запроса.", + "waitForResponse": "Пожалуйста, дождитесь завершения ответа на предыдущее сообщение.", + "waitForBatchResponse": "Пожалуйста, дождитесь завершения ответа на пакетное задание.", + "notSelectModel": "Пожалуйста, выберите модель", + "waitForImgUpload": "Пожалуйста, дождитесь загрузки изображения", + "waitForFileUpload": "Пожалуйста, дождитесь загрузки файла/файлов" + }, + "chatSubTitle": "Инструкции", + "completionSubTitle": "Префикс Промпта", + "promptTip": "Промпт направляют ответы ИИ с помощью инструкций и ограничений. Вставьте переменные, такие как {{input}}. Этот Промпт не будет видна пользователям.", + "formattingChangedTitle": "Форматирование изменено", + "formattingChangedText": "Изменение форматирования приведет к сбросу области отладки, вы уверены?", + "variableTitle": "Переменные", + "variableTip": "Пользователи заполняют переменные в форме, автоматически заменяя переменные в промпте.", + "notSetVar": "Переменные позволяют пользователям вводить промпты или вступительные замечания при заполнении форм. Вы можете попробовать ввести \"{{input}}\" в промптах.", + "autoAddVar": "В предварительной промпте упоминаются неопределенные переменные, хотите ли вы добавить их в форму пользовательского ввода?", + "variableTable": { + "key": "Ключ переменной", + "name": "Имя поля пользовательского ввода", + "type": "Тип ввода", + "action": "Действия", + "typeString": "Строка", + "typeSelect": "Выбор" + }, + "varKeyError": { + "canNoBeEmpty": "{{key}} обязательно", + "tooLong": "{{key}} слишком длинное. Не может быть длиннее 30 символов", + "notValid": "{{key}} недействительно. Может содержать только буквы, цифры и подчеркивания", + "notStartWithNumber": "{{key}} не может начинаться с цифры", + "keyAlreadyExists": "{{key}} уже существует" + }, + "otherError": { + "promptNoBeEmpty": "Промпт не может быть пустой", + "historyNoBeEmpty": "История разговоров должна быть установлена в промпте", + "queryNoBeEmpty": "Запрос должен быть установлен в промпте" + }, + "variableConfig": { + "addModalTitle": "Добавить поле ввода", + "editModalTitle": "Редактировать поле ввода", + "description": "Настройка для переменной {{varName}}", + "fieldType": "Тип поля", + "string": "Короткий текст", + "text-input": "Короткий текст", + "paragraph": "Абзац", + "select": "Выбор", + "number": "Число", + "notSet": "Не задано, попробуйте ввести {{input}} в префикс промпта", + "stringTitle": "Параметры текстового поля формы", + "maxLength": "Максимальная длина", + "options": "Варианты", + "addOption": "Добавить вариант", + "apiBasedVar": "Переменная на основе API", + "varName": "Имя переменной", + "labelName": "Имя метки", + "inputPlaceholder": "Пожалуйста, введите", + "content": "Содержимое", + "required": "Обязательно", + "hide": "Скрыть", + "errorMsg": { + "labelNameRequired": "Имя метки обязательно", + "varNameCanBeRepeat": "Имя переменной не может повторяться", + "atLeastOneOption": "Требуется хотя бы один вариант", + "optionRepeat": "Есть повторяющиеся варианты" + }, + "defaultValue": "Значение по умолчанию", + "noDefaultValue": "Без значения по умолчанию", + "selectDefaultValue": "Выберите значение по умолчанию", + "file": { + "image": { + "name": "Образ" + }, + "audio": { + "name": "Аудио" + }, + "document": { + "name": "Документ" + }, + "video": { + "name": "Видео" + }, + "custom": { + "createPlaceholder": " Расширение файла, например .doc", + "name": "Другие типы файлов", + "description": "Укажите другие типы файлов." + }, + "supportFileTypes": "Типы файлов поддержки" + }, + "both": "Оба", + "localUpload": "Локальная загрузка", + "maxNumberOfUploads": "Максимальное количество загрузок", + "maxNumberTip": "Документ < {{docLimit}}, изображение < {{imgLimit}}, аудио < {{audioLimit}}, видео < {{videoLimit}}", + "uploadFileTypes": "Типы файлов загрузки", + "single-file": "Друг за другом", + "multi-files": "Список файлов", + "checkbox": "Флажок", + "optional": "необязательный", + "jsonSchema": "JSON схема", + "json": "JSON код", + "unit": "Единица", + "showAllSettings": "Показать все настройки", + "placeholder": "Заполнитель", + "noDefaultSelected": "Не выбирайте", + "uploadMethod": "Способ загрузки", + "displayName": "Отображаемое имя", + "startChecked": "Начало проверено", + "startSelectedOption": "Запустить выбранный вариант", + "tooltips": "Всплывающие подсказки", + "placeholderPlaceholder": "Ввод текста для отображения, когда поле пусто", + "unitPlaceholder": "Отображайте единицы измерения после цифр, например, токены", + "defaultValuePlaceholder": "Введите значение по умолчанию для предварительного заполнения поля", + "tooltipsPlaceholder": "Введите полезный текст, отображаемый при наведении указателя мыши на этикетку" + }, + "vision": { + "name": "Зрение", + "description": "Включение зрения позволит модели принимать изображения и отвечать на вопросы о них.", + "settings": "Настройки", + "visionSettings": { + "title": "Настройки зрения", + "resolution": "Разрешение", + "resolutionTooltip": "Низкое разрешение позволит модели получать версию изображения с низким разрешением 512 x 512 и представлять изображение с бюджетом 65 токенов. Это позволяет API возвращать ответы быстрее и потреблять меньше входных токенов для случаев использования, не требующих высокой детализации.\nВысокое разрешение сначала позволит модели увидеть изображение с низким разрешением, а затем создаст детальные фрагменты входных изображений в виде квадратов 512 пикселей на основе размера входного изображения. Каждый из детальных фрагментов использует вдвое больший бюджет токенов, в общей сложности 129 токенов.", + "high": "Высокое", + "low": "Низкое", + "uploadMethod": "Метод загрузки", + "both": "Оба", + "localUpload": "Локальная загрузка", + "url": "URL", + "uploadLimit": "Лимит загрузки" + }, + "onlySupportVisionModelTip": "Поддерживает только модели машинного зрения" + }, + "voice": { + "name": "Голос", + "defaultDisplay": "Голос по умолчанию", + "description": "Настройки преобразования текста в речь", + "settings": "Настройки", + "voiceSettings": { + "title": "Настройки голоса", + "language": "Язык", + "resolutionTooltip": "Язык, поддерживаемый преобразованием текста в речь.", + "voice": "Голос", + "autoPlay": "Автовоспроизведение", + "autoPlayEnabled": "Включить", + "autoPlayDisabled": "Выключить" + } + }, + "openingStatement": { + "title": "Начальное сообщение", + "add": "Добавить", + "writeOpener": "Написать начальное сообщение", + "placeholder": "Напишите здесь свое начальное сообщение, вы можете использовать переменные, попробуйте ввести {{variable}}.", + "openingQuestion": "Начальные вопросы", + "openingQuestionPlaceholder": "Вы можете использовать переменные, попробуйте ввести {{variable}}.", + "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": "Требуется rerank-модель ", + "params": "Параметры", + "top_k": "Top K", + "top_kTip": "Используется для фильтрации фрагментов, наиболее похожих на вопросы пользователей. Система также будет динамически корректировать значение Top K в зависимости от max_tokens выбранной модели.", + "score_threshold": "Порог оценки", + "score_thresholdTip": "Используется для установки порога сходства для фильтрации фрагментов.", + "retrieveChangeTip": "Изменение режима индексации и режима поиска может повлиять на приложения, связанные с этими знаниями.", + "embeddingModelRequired": "Требуется сконфигурированная модель встраивания" + }, + "debugAsSingleModel": "Отладка как одной модели", + "debugAsMultipleModel": "Отладка как нескольких моделей", + "duplicateModel": "Дублировать", + "publishAs": "Опубликовать как", + "assistantType": { + "name": "Тип помощника", + "chatAssistant": { + "name": "Базовый помощник", + "description": "Создайте помощника на основе чата, используя большую языковую модель" + }, + "agentAssistant": { + "name": "Агент-помощник", + "description": "Создайте интеллектуального агента, который может автономно выбирать инструменты для выполнения задач" + } + }, + "agent": { + "agentMode": "Режим агента", + "agentModeDes": "Установите тип режима вывода для агента", + "agentModeType": { + "ReACT": "ReAct", + "functionCall": "Вызов функции" + }, + "setting": { + "name": "Настройки агента", + "description": "Настройки агента-помощника позволяют установить режим агента и расширенные функции, такие как встроенные промпты, доступные только в типе агента.", + "maximumIterations": { + "name": "Максимальное количество итераций", + "description": "Ограничьте количество итераций, которые может выполнить агент-помощник" + } + }, + "buildInPrompt": "Встроенный промпт", + "firstPrompt": "Первый промпт", + "nextIteration": "Следующая итерация", + "promptPlaceholder": "Напишите здесь свой первый промпт", + "tools": { + "name": "Инструменты", + "description": "Использование инструментов может расширить возможности LLM, такие как поиск в Интернете или выполнение научных расчетов", + "enabled": "Включено" + } + }, + "codegen": { + "generate": "Порождать", + "title": "Генератор кодов", + "resTitle": "Сгенерированный код", + "generatedCodeTitle": "Сгенерированный код", + "applyChanges": "Применение изменений", + "loading": "Генерация кода...", + "noDataLine2": "Предварительный просмотр кода будет показан здесь.", + "instruction": "Резолюция", + "apply": "Применять", + "overwriteConfirmTitle": "Перезаписать существующий код?", + "overwriteConfirmMessage": "Это действие перезапишет существующий код. Хотите продолжить?", + "instructionPlaceholder": "Введите подробное описание кода, который вы хотите сгенерировать.", + "noDataLine1": "Опишите свой вариант использования слева,", + "description": "Генератор кода использует настроенные модели для создания высококачественного кода на основе ваших инструкций. Пожалуйста, предоставьте четкие и подробные инструкции." + }, + "warningMessage": { + "timeoutExceeded": "Результаты не отображаются из-за тайм-аута. Пожалуйста, обратитесь к журналам для получения полных результатов." + }, + "noResult": "Вывод будет отображаться здесь." +} diff --git a/web/i18n/ru-RU/app-debug.ts b/web/i18n/ru-RU/app-debug.ts deleted file mode 100644 index ea3b969df4..0000000000 --- a/web/i18n/ru-RU/app-debug.ts +++ /dev/null @@ -1,573 +0,0 @@ -const translation = { - pageTitle: { - line1: 'PROMPT', - line2: 'Engineering', - }, - 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: 'Ключ поставщика LLM не установлен', - trailFinished: 'Пробный период закончен', - description: 'Ключ поставщика LLM не установлен, его необходимо установить перед отладкой.', - 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: 'Вы можете импортировать знания в качестве контекста', - selectTitle: 'Выберите справочные знания', - selected: 'Знания выбраны', - noDataSet: 'Знания не найдены', - toCreate: 'Перейти к созданию', - notSupportSelectMulti: 'В настоящее время поддерживаются только одни знания', - queryVariable: { - title: 'Переменная запроса', - tip: 'Эта переменная будет использоваться в качестве входных данных запроса для поиска контекста, получая информацию о контексте, связанную с вводом этой переменной.', - choosePlaceholder: 'Выберите переменную запроса', - noVar: 'Нет переменных', - noVarTip: 'пожалуйста, создайте переменную в разделе Переменные', - unableToQueryDataSet: 'Невозможно запросить знания', - unableToQueryDataSetTip: 'Не удалось успешно запросить знания, пожалуйста, выберите переменную запроса контекста в разделе контекста.', - ok: 'ОК', - contextVarNotEmpty: 'переменная запроса контекста не может быть пустой', - deleteContextVarTitle: 'Удалить переменную "{{varName}}"?', - deleteContextVarTip: 'Эта переменная была установлена в качестве переменной запроса контекста, и ее удаление повлияет на нормальное использование знаний. Если вам все еще нужно удалить ее, пожалуйста, выберите ее заново в разделе контекста.', - }, - }, - tools: { - title: 'Инструменты', - tips: 'Инструменты предоставляют стандартный метод вызова API, принимая пользовательский ввод или переменные в качестве параметров запроса для запроса внешних данных в качестве контекста.', - toolsInUse: '{{count}} инструментов используется', - modal: { - title: 'Инструмент', - toolType: { - title: 'Тип инструмента', - placeholder: 'Пожалуйста, выберите тип инструмента', - }, - name: { - title: 'Имя', - placeholder: 'Пожалуйста, введите имя', - }, - variableName: { - title: 'Имя переменной', - placeholder: 'Пожалуйста, введите имя переменной', - }, - }, - }, - conversationHistory: { - title: 'История разговоров', - description: 'Установить префиксы имен для ролей разговора', - tip: 'История разговоров не включена, пожалуйста, добавьте в промпт выше.', - learnMore: 'Узнать больше', - editModal: { - title: 'Редактировать имена ролей разговора', - userPrefix: 'Префикс пользователя', - assistantPrefix: 'Префикс помощника', - }, - }, - toolbox: { - title: 'НАБОР ИНСТРУМЕНТОВ', - }, - moderation: { - title: 'Модерация контента', - description: 'Обеспечьте безопасность выходных данных модели, используя API модерации или поддерживая список чувствительных слов.', - allEnabled: 'ВХОДНОЙ/ВЫХОДНОЙ контент включен', - inputEnabled: 'ВХОДНОЙ контент включен', - outputEnabled: 'ВЫХОДНОЙ контент включен', - modal: { - title: 'Настройки модерации контента', - provider: { - title: 'Поставщик', - openai: 'Модерация OpenAI', - openaiTip: { - prefix: 'Для модерации OpenAI требуется ключ API OpenAI, настроенный в ', - suffix: '.', - }, - keywords: 'Ключевые слова', - }, - keywords: { - tip: 'По одному на строку, разделенные разрывами строк. До 100 символов на строку.', - placeholder: 'По одному на строку, разделенные разрывами строк', - line: 'Строка', - }, - content: { - input: 'Модерировать ВХОДНОЙ контент', - output: 'Модерировать ВЫХОДНОЙ контент', - preset: 'Предустановленные ответы', - placeholder: 'Здесь содержимое предустановленных ответов', - condition: 'Модерация ВХОДНОГО и ВЫХОДНОГО контента включена хотя бы одна', - fromApi: 'Предустановленные ответы возвращаются API', - errorMessage: 'Предустановленные ответы не могут быть пустыми', - supportMarkdown: 'Markdown поддерживается', - }, - openaiNotConfig: { - before: 'Для модерации OpenAI требуется ключ API OpenAI, настроенный в', - after: '', - }, - }, - contentEnableLabel: 'Модерация контента включена', - }, - fileUpload: { - title: 'Загрузка файлов', - description: 'Поле ввода чата позволяет загружать изображения, документы и другие файлы.', - supportedTypes: 'Поддерживаемые типы файлов', - numberLimit: 'Максимум загрузок', - modalTitle: 'Настройка загрузки файлов', - }, - imageUpload: { - title: 'Загрузка изображений', - description: 'Позволяет загружать изображения.', - supportedTypes: 'Поддерживаемые типы файлов', - numberLimit: 'Максимум загрузок', - modalTitle: 'Настройка загрузки изображений', - }, - bar: { - empty: 'Включить функции для улучшения пользовательского опыта веб-приложения', - enableText: 'Функции включены', - manage: 'Управлять', - }, - documentUpload: { - title: 'Документ', - description: 'Включение Документа позволит модели принимать документы и отвечать на вопросы о них.', - }, - audioUpload: { - title: 'Аудио', - description: 'Включение Аудио позволит модели обрабатывать аудиофайлы для транскрипции и анализа.', - }, - }, - generate: { - title: 'Генератор промпта', - description: 'Генератор промпта использует настроенную модель для оптимизации промпта для повышения качества и улучшения структуры. Пожалуйста, напишите четкие и подробные инструкции.', - tryIt: 'Попробуйте', - instruction: 'Инструкции', - generate: 'Сгенерировать', - resTitle: 'Сгенерированный промпт', - apply: 'Применить', - loading: 'Оркестрация приложения для вас...', - overwriteTitle: 'Перезаписать существующую конфигурацию?', - overwriteMessage: 'Применение этого промпта перезапишет существующую конфигурацию.', - template: { - pythonDebugger: { - name: 'Отладчик Python', - instruction: 'Бот, который может генерировать и отлаживать ваш код на основе ваших инструкций', - }, - translation: { - name: 'Переводчик', - instruction: 'Переводчик, который может переводить на несколько языков', - }, - professionalAnalyst: { - name: 'Профессиональный аналитик', - instruction: 'Извлекайте информацию, выявляйте риски и извлекайте ключевую информацию из длинных отчетов в одну записку', - }, - excelFormulaExpert: { - name: 'Эксперт по формулам Excel', - instruction: 'Чат-бот, который может помочь начинающим пользователям понять, использовать и создавать формулы Excel на основе инструкций пользователя', - }, - travelPlanning: { - name: 'Планировщик путешествий', - instruction: 'Помощник по планированию путешествий - это интеллектуальный инструмент, разработанный, чтобы помочь пользователям без труда планировать свои поездки', - }, - SQLSorcerer: { - name: 'SQL-ассистент', - instruction: 'Преобразуйте повседневный язык в SQL-запросы', - }, - GitGud: { - name: 'Git gud', - instruction: 'Генерируйте соответствующие команды Git на основе описанных пользователем действий по управлению версиями', - }, - meetingTakeaways: { - name: 'Итоги совещания', - instruction: 'Извлекайте из совещаний краткие резюме, включая темы обсуждения, ключевые выводы и элементы действий', - }, - writingsPolisher: { - name: 'Редактор', - instruction: 'Используйте LLM, чтобы улучшить свои письменные работы', - }, - }, - to: 'к', - versions: 'Версии', - latest: 'Последний', - version: 'Версия', - dismiss: 'Отклонить', - press: 'Пресс', - optional: 'Необязательно', - insertContext: 'вставьте контекст', - idealOutput: 'Идеальный результат', - optimizationNote: 'Замечание по оптимизации', - optimizePromptTooltip: 'Оптимизировать в генераторе подсказок', - instructionPlaceHolderTitle: 'Опишите, как вы хотели бы улучшить этот запрос. Например:', - instructionPlaceHolderLine2: 'Формат вывода неверный, пожалуйста, строго следуйте формату JSON.', - instructionPlaceHolderLine3: 'Тон слишком резкий, пожалуйста, сделай его более дружелюбным.', - instructionPlaceHolderLine1: 'Сделайте результат более кратким, сохраняя основные моменты.', - idealOutputPlaceholder: 'Опишите формат ответа, длину, тон и требования к содержанию, которые вы считаете идеальными.', - newNoDataLine1: 'Напишите инструкцию в левом столбце и нажмите \'Сгенерировать\', чтобы увидеть ответ.', - codeGenInstructionPlaceHolderLine: 'Чем более подробной является обратная связь, например, типы данных входных и выходных данных, а также то, как обрабатываются переменные, тем точнее будет генерируемый код.', - }, - resetConfig: { - title: 'Подтвердить сброс?', - message: - 'Сброс отменяет изменения, восстанавливая последнюю опубликованную конфигурацию.', - }, - errorMessage: { - nameOfKeyRequired: 'имя ключа: {{key}} обязательно', - valueOfVarRequired: 'значение {{key}} не может быть пустым', - queryRequired: 'Требуется текст запроса.', - waitForResponse: - 'Пожалуйста, дождитесь завершения ответа на предыдущее сообщение.', - waitForBatchResponse: - 'Пожалуйста, дождитесь завершения ответа на пакетное задание.', - notSelectModel: 'Пожалуйста, выберите модель', - waitForImgUpload: 'Пожалуйста, дождитесь загрузки изображения', - waitForFileUpload: 'Пожалуйста, дождитесь загрузки файла/файлов', - }, - chatSubTitle: 'Инструкции', - completionSubTitle: 'Префикс Промпта', - promptTip: - 'Промпт направляют ответы ИИ с помощью инструкций и ограничений. Вставьте переменные, такие как {{input}}. Этот Промпт не будет видна пользователям.', - formattingChangedTitle: 'Форматирование изменено', - formattingChangedText: - 'Изменение форматирования приведет к сбросу области отладки, вы уверены?', - variableTitle: 'Переменные', - variableTip: - 'Пользователи заполняют переменные в форме, автоматически заменяя переменные в промпте.', - notSetVar: 'Переменные позволяют пользователям вводить промпты или вступительные замечания при заполнении форм. Вы можете попробовать ввести "{{input}}" в промптах.', - autoAddVar: 'В предварительной промпте упоминаются неопределенные переменные, хотите ли вы добавить их в форму пользовательского ввода?', - variableTable: { - key: 'Ключ переменной', - name: 'Имя поля пользовательского ввода', - type: 'Тип ввода', - action: 'Действия', - typeString: 'Строка', - typeSelect: 'Выбор', - }, - varKeyError: { - canNoBeEmpty: '{{key}} обязательно', - tooLong: '{{key}} слишком длинное. Не может быть длиннее 30 символов', - notValid: '{{key}} недействительно. Может содержать только буквы, цифры и подчеркивания', - notStartWithNumber: '{{key}} не может начинаться с цифры', - keyAlreadyExists: '{{key}} уже существует', - }, - otherError: { - promptNoBeEmpty: 'Промпт не может быть пустой', - historyNoBeEmpty: 'История разговоров должна быть установлена в промпте', - queryNoBeEmpty: 'Запрос должен быть установлен в промпте', - }, - variableConfig: { - 'addModalTitle': 'Добавить поле ввода', - 'editModalTitle': 'Редактировать поле ввода', - 'description': 'Настройка для переменной {{varName}}', - 'fieldType': 'Тип поля', - 'string': 'Короткий текст', - 'text-input': 'Короткий текст', - 'paragraph': 'Абзац', - 'select': 'Выбор', - 'number': 'Число', - 'notSet': 'Не задано, попробуйте ввести {{input}} в префикс промпта', - 'stringTitle': 'Параметры текстового поля формы', - 'maxLength': 'Максимальная длина', - 'options': 'Варианты', - 'addOption': 'Добавить вариант', - 'apiBasedVar': 'Переменная на основе API', - 'varName': 'Имя переменной', - 'labelName': 'Имя метки', - 'inputPlaceholder': 'Пожалуйста, введите', - 'content': 'Содержимое', - 'required': 'Обязательно', - 'hide': 'Скрыть', - 'errorMsg': { - labelNameRequired: 'Имя метки обязательно', - varNameCanBeRepeat: 'Имя переменной не может повторяться', - atLeastOneOption: 'Требуется хотя бы один вариант', - optionRepeat: 'Есть повторяющиеся варианты', - }, - 'defaultValue': 'Значение по умолчанию', - 'noDefaultValue': 'Без значения по умолчанию', - 'selectDefaultValue': 'Выберите значение по умолчанию', - 'file': { - image: { - name: 'Образ', - }, - audio: { - name: 'Аудио', - }, - document: { - name: 'Документ', - }, - video: { - name: 'Видео', - }, - custom: { - createPlaceholder: ' Расширение файла, например .doc', - name: 'Другие типы файлов', - description: 'Укажите другие типы файлов.', - }, - supportFileTypes: 'Типы файлов поддержки', - }, - 'both': 'Оба', - 'localUpload': 'Локальная загрузка', - 'maxNumberOfUploads': 'Максимальное количество загрузок', - 'maxNumberTip': 'Документ < {{docLimit}}, изображение < {{imgLimit}}, аудио < {{audioLimit}}, видео < {{videoLimit}}', - 'uploadFileTypes': 'Типы файлов загрузки', - 'single-file': 'Друг за другом', - 'multi-files': 'Список файлов', - 'checkbox': 'Флажок', - 'optional': 'необязательный', - 'jsonSchema': 'JSON схема', - 'json': 'JSON код', - 'unit': 'Единица', - 'showAllSettings': 'Показать все настройки', - 'placeholder': 'Заполнитель', - 'noDefaultSelected': 'Не выбирайте', - 'uploadMethod': 'Способ загрузки', - 'displayName': 'Отображаемое имя', - 'startChecked': 'Начало проверено', - 'startSelectedOption': 'Запустить выбранный вариант', - 'tooltips': 'Всплывающие подсказки', - 'placeholderPlaceholder': 'Ввод текста для отображения, когда поле пусто', - 'unitPlaceholder': 'Отображайте единицы измерения после цифр, например, токены', - 'defaultValuePlaceholder': 'Введите значение по умолчанию для предварительного заполнения поля', - 'tooltipsPlaceholder': 'Введите полезный текст, отображаемый при наведении указателя мыши на этикетку', - }, - vision: { - name: 'Зрение', - description: 'Включение зрения позволит модели принимать изображения и отвечать на вопросы о них.', - settings: 'Настройки', - visionSettings: { - title: 'Настройки зрения', - resolution: 'Разрешение', - resolutionTooltip: 'Низкое разрешение позволит модели получать версию изображения с низким разрешением 512 x 512 и представлять изображение с бюджетом 65 токенов. Это позволяет API возвращать ответы быстрее и потреблять меньше входных токенов для случаев использования, не требующих высокой детализации.\nВысокое разрешение сначала позволит модели увидеть изображение с низким разрешением, а затем создаст детальные фрагменты входных изображений в виде квадратов 512 пикселей на основе размера входного изображения. Каждый из детальных фрагментов использует вдвое больший бюджет токенов, в общей сложности 129 токенов.', - high: 'Высокое', - low: 'Низкое', - uploadMethod: 'Метод загрузки', - both: 'Оба', - localUpload: 'Локальная загрузка', - url: 'URL', - uploadLimit: 'Лимит загрузки', - }, - onlySupportVisionModelTip: 'Поддерживает только модели машинного зрения', - }, - voice: { - name: 'Голос', - defaultDisplay: 'Голос по умолчанию', - description: 'Настройки преобразования текста в речь', - settings: 'Настройки', - voiceSettings: { - title: 'Настройки голоса', - language: 'Язык', - resolutionTooltip: 'Язык, поддерживаемый преобразованием текста в речь.', - voice: 'Голос', - autoPlay: 'Автовоспроизведение', - autoPlayEnabled: 'Включить', - autoPlayDisabled: 'Выключить', - }, - }, - openingStatement: { - title: 'Начальное сообщение', - add: 'Добавить', - writeOpener: 'Написать начальное сообщение', - placeholder: 'Напишите здесь свое начальное сообщение, вы можете использовать переменные, попробуйте ввести {{variable}}.', - openingQuestion: 'Начальные вопросы', - openingQuestionPlaceholder: 'Вы можете использовать переменные, попробуйте ввести {{variable}}.', - 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: 'Требуется rerank-модель ', - params: 'Параметры', - top_k: 'Top K', - top_kTip: 'Используется для фильтрации фрагментов, наиболее похожих на вопросы пользователей. Система также будет динамически корректировать значение Top K в зависимости от max_tokens выбранной модели.', - score_threshold: 'Порог оценки', - score_thresholdTip: 'Используется для установки порога сходства для фильтрации фрагментов.', - retrieveChangeTip: 'Изменение режима индексации и режима поиска может повлиять на приложения, связанные с этими знаниями.', - embeddingModelRequired: 'Требуется сконфигурированная модель встраивания', - }, - debugAsSingleModel: 'Отладка как одной модели', - debugAsMultipleModel: 'Отладка как нескольких моделей', - duplicateModel: 'Дублировать', - publishAs: 'Опубликовать как', - assistantType: { - name: 'Тип помощника', - chatAssistant: { - name: 'Базовый помощник', - description: 'Создайте помощника на основе чата, используя большую языковую модель', - }, - agentAssistant: { - name: 'Агент-помощник', - description: 'Создайте интеллектуального агента, который может автономно выбирать инструменты для выполнения задач', - }, - }, - agent: { - agentMode: 'Режим агента', - agentModeDes: 'Установите тип режима вывода для агента', - agentModeType: { - ReACT: 'ReAct', - functionCall: 'Вызов функции', - }, - setting: { - name: 'Настройки агента', - description: 'Настройки агента-помощника позволяют установить режим агента и расширенные функции, такие как встроенные промпты, доступные только в типе агента.', - maximumIterations: { - name: 'Максимальное количество итераций', - description: 'Ограничьте количество итераций, которые может выполнить агент-помощник', - }, - }, - buildInPrompt: 'Встроенный промпт', - firstPrompt: 'Первый промпт', - nextIteration: 'Следующая итерация', - promptPlaceholder: 'Напишите здесь свой первый промпт', - tools: { - name: 'Инструменты', - description: 'Использование инструментов может расширить возможности LLM, такие как поиск в Интернете или выполнение научных расчетов', - enabled: 'Включено', - }, - }, - codegen: { - generate: 'Порождать', - title: 'Генератор кодов', - resTitle: 'Сгенерированный код', - generatedCodeTitle: 'Сгенерированный код', - applyChanges: 'Применение изменений', - loading: 'Генерация кода...', - noDataLine2: 'Предварительный просмотр кода будет показан здесь.', - instruction: 'Резолюция', - apply: 'Применять', - overwriteConfirmTitle: 'Перезаписать существующий код?', - overwriteConfirmMessage: 'Это действие перезапишет существующий код. Хотите продолжить?', - instructionPlaceholder: 'Введите подробное описание кода, который вы хотите сгенерировать.', - noDataLine1: 'Опишите свой вариант использования слева,', - description: 'Генератор кода использует настроенные модели для создания высококачественного кода на основе ваших инструкций. Пожалуйста, предоставьте четкие и подробные инструкции.', - }, - warningMessage: { - timeoutExceeded: 'Результаты не отображаются из-за тайм-аута. Пожалуйста, обратитесь к журналам для получения полных результатов.', - }, - noResult: 'Вывод будет отображаться здесь.', -} - -export default translation diff --git a/web/i18n/ru-RU/app-log.json b/web/i18n/ru-RU/app-log.json new file mode 100644 index 0000000000..be147e98e0 --- /dev/null +++ b/web/i18n/ru-RU/app-log.json @@ -0,0 +1,110 @@ +{ + "title": "Логирование", + "description": "В логах записывается состояние работы приложения, включая пользовательский ввод и ответы ИИ.", + "dateTimeFormat": "DD.MM.YYYY HH:mm:ss", + "table": { + "header": { + "updatedTime": "Время обновления", + "time": "Время создания", + "endUser": "Конечный пользователь или аккаунт", + "input": "Ввод", + "output": "Вывод", + "summary": "Заголовок", + "messageCount": "Количество сообщений", + "userRate": "Оценка пользователя", + "adminRate": "Оценка оп.", + "startTime": "ВРЕМЯ НАЧАЛА", + "status": "СТАТУС", + "runtime": "ВРЕМЯ ВЫПОЛНЕНИЯ", + "tokens": "ТОКЕНЫ", + "user": "Конечный пользователь или аккаунт", + "version": "ВЕРСИЯ", + "triggered_from": "СРАБАТЫВАЕТ ОТ" + }, + "pagination": { + "previous": "Предыдущий", + "next": "Следующий" + }, + "empty": { + "noChat": "Еще нет чатов", + "noOutput": "Нет вывода", + "element": { + "title": "Есть кто-нибудь?", + "content": "Наблюдайте и аннотируйте взаимодействия между конечными пользователями и приложениями ИИ здесь, чтобы постоянно повышать точность ИИ. Вы можете попробовать поделиться или протестировать веб-приложение самостоятельно, а затем вернуться на эту страницу." + } + } + }, + "detail": { + "time": "Время", + "conversationId": "Идентификатор разговора", + "promptTemplate": "Шаблон подсказки", + "promptTemplateBeforeChat": "Шаблон подсказки перед чатом · Как системное сообщение", + "annotationTip": "Улучшения, отмеченные {{user}}", + "timeConsuming": "", + "second": "с", + "tokenCost": "Потрачено токенов", + "loading": "загрузка", + "operation": { + "like": "лайк", + "dislike": "дизлайк", + "addAnnotation": "Добавить улучшение", + "editAnnotation": "Редактировать улучшение", + "annotationPlaceholder": "Введите ожидаемый ответ, который вы хотите получить от ИИ, который может быть использован для тонкой настройки модели и постоянного улучшения качества генерации текста в будущем." + }, + "variables": "Переменные", + "uploadImages": "Загруженные изображения", + "modelParams": "Параметры модели" + }, + "filter": { + "period": { + "today": "Сегодня", + "last7days": "Последние 7 дней", + "last4weeks": "Последние 4 недели", + "last3months": "Последние 3 месяца", + "last12months": "Последние 12 месяцев", + "monthToDate": "С начала месяца", + "quarterToDate": "С начала квартала", + "yearToDate": "С начала года", + "allTime": "Все время", + "last30days": "Последние 30 дней", + "custom": "Кастомный" + }, + "annotation": { + "all": "Все", + "annotated": "Аннотированные улучшения ({{count}} элементов)", + "not_annotated": "Не аннотировано" + }, + "sortBy": "Сортировать по:", + "descending": "по убыванию", + "ascending": "по возрастанию" + }, + "workflowTitle": "Журналы рабочих процессов", + "workflowSubtitle": "Журнал записал работу Automate.", + "runDetail": { + "title": "Журнал разговоров", + "workflowTitle": "Подробная информация о журнале", + "fileListLabel": "Сведения о файле", + "fileListDetail": "Подробность", + "testWithParams": "Тест с параметрами" + }, + "promptLog": "Журнал подсказок", + "agentLog": "Журнал агента", + "viewLog": "Просмотреть журнал", + "agentLogDetail": { + "agentMode": "Режим агента", + "toolUsed": "Использованный инструмент", + "iterations": "Итерации", + "iteration": "Итерация", + "finalProcessing": "Окончательная обработка" + }, + "dateFormat": "ДД/ММ/ГГГГ", + "triggerBy": { + "debugging": "Отладка", + "appRun": "Веб-приложение", + "webhook": "Вебхук", + "schedule": "Расписание", + "plugin": "Плагин", + "ragPipelineRun": "Конвейер RAG", + "ragPipelineDebugging": "Отладка RAG" + } +} diff --git a/web/i18n/ru-RU/app-log.ts b/web/i18n/ru-RU/app-log.ts deleted file mode 100644 index 1b5899f359..0000000000 --- a/web/i18n/ru-RU/app-log.ts +++ /dev/null @@ -1,112 +0,0 @@ -const translation = { - title: 'Логирование', - description: 'В логах записывается состояние работы приложения, включая пользовательский ввод и ответы ИИ.', - dateTimeFormat: 'DD.MM.YYYY HH:mm:ss', - table: { - header: { - updatedTime: 'Время обновления', - time: 'Время создания', - endUser: 'Конечный пользователь или аккаунт', - input: 'Ввод', - output: 'Вывод', - summary: 'Заголовок', - messageCount: 'Количество сообщений', - userRate: 'Оценка пользователя', - adminRate: 'Оценка оп.', - startTime: 'ВРЕМЯ НАЧАЛА', - status: 'СТАТУС', - runtime: 'ВРЕМЯ ВЫПОЛНЕНИЯ', - tokens: 'ТОКЕНЫ', - user: 'Конечный пользователь или аккаунт', - version: 'ВЕРСИЯ', - triggered_from: 'СРАБАТЫВАЕТ ОТ', - }, - pagination: { - previous: 'Предыдущий', - next: 'Следующий', - }, - empty: { - noChat: 'Еще нет чатов', - noOutput: 'Нет вывода', - element: { - title: 'Есть кто-нибудь?', - content: 'Наблюдайте и аннотируйте взаимодействия между конечными пользователями и приложениями ИИ здесь, чтобы постоянно повышать точность ИИ. Вы можете попробовать поделиться или протестировать веб-приложение самостоятельно, а затем вернуться на эту страницу.', - }, - }, - }, - detail: { - time: 'Время', - conversationId: 'Идентификатор разговора', - promptTemplate: 'Шаблон подсказки', - promptTemplateBeforeChat: 'Шаблон подсказки перед чатом · Как системное сообщение', - annotationTip: 'Улучшения, отмеченные {{user}}', - timeConsuming: '', - second: 'с', - tokenCost: 'Потрачено токенов', - loading: 'загрузка', - operation: { - like: 'лайк', - dislike: 'дизлайк', - addAnnotation: 'Добавить улучшение', - editAnnotation: 'Редактировать улучшение', - annotationPlaceholder: 'Введите ожидаемый ответ, который вы хотите получить от ИИ, который может быть использован для тонкой настройки модели и постоянного улучшения качества генерации текста в будущем.', - }, - variables: 'Переменные', - uploadImages: 'Загруженные изображения', - modelParams: 'Параметры модели', - }, - filter: { - period: { - today: 'Сегодня', - last7days: 'Последние 7 дней', - last4weeks: 'Последние 4 недели', - last3months: 'Последние 3 месяца', - last12months: 'Последние 12 месяцев', - monthToDate: 'С начала месяца', - quarterToDate: 'С начала квартала', - yearToDate: 'С начала года', - allTime: 'Все время', - last30days: 'Последние 30 дней', - custom: 'Кастомный', - }, - annotation: { - all: 'Все', - annotated: 'Аннотированные улучшения ({{count}} элементов)', - not_annotated: 'Не аннотировано', - }, - sortBy: 'Сортировать по:', - descending: 'по убыванию', - ascending: 'по возрастанию', - }, - workflowTitle: 'Журналы рабочих процессов', - workflowSubtitle: 'Журнал записал работу Automate.', - runDetail: { - title: 'Журнал разговоров', - workflowTitle: 'Подробная информация о журнале', - fileListLabel: 'Сведения о файле', - fileListDetail: 'Подробность', - testWithParams: 'Тест с параметрами', - }, - promptLog: 'Журнал подсказок', - agentLog: 'Журнал агента', - viewLog: 'Просмотреть журнал', - agentLogDetail: { - agentMode: 'Режим агента', - toolUsed: 'Использованный инструмент', - iterations: 'Итерации', - iteration: 'Итерация', - finalProcessing: 'Окончательная обработка', - }, - dateFormat: 'ДД/ММ/ГГГГ', - triggerBy: { - debugging: 'Отладка', - appRun: 'Веб-приложение', - webhook: 'Вебхук', - schedule: 'Расписание', - plugin: 'Плагин', - ragPipelineRun: 'Конвейер RAG', - ragPipelineDebugging: 'Отладка RAG', - }, -} - -export default translation diff --git a/web/i18n/ru-RU/app-overview.json b/web/i18n/ru-RU/app-overview.json new file mode 100644 index 0000000000..ca5b947205 --- /dev/null +++ b/web/i18n/ru-RU/app-overview.json @@ -0,0 +1,187 @@ +{ + "welcome": { + "firstStepTip": "Чтобы начать,", + "enterKeyTip": "введите свой ключ API OpenAI ниже", + "getKeyTip": "Получите свой ключ API на панели инструментов OpenAI", + "placeholder": "Ваш ключ API OpenAI (например, sk-xxxx)" + }, + "apiKeyInfo": { + "cloud": { + "trial": { + "title": "Вы используете пробную квоту {{providerName}}.", + "description": "Пробная квота предоставляется для тестирования. Прежде чем пробная квота будет исчерпана, пожалуйста, настройте своего собственного поставщика модели или приобретите дополнительную квоту." + }, + "exhausted": { + "title": "Ваша пробная квота была исчерпана, пожалуйста, настройте свой APIKey.", + "description": "Вы исчерпали свою пробную квоту. Пожалуйста, настройте своего собственного поставщика модели или приобретите дополнительную квоту." + } + }, + "selfHost": { + "title": { + "row1": "Чтобы начать,", + "row2": "сначала настройте своего поставщика модели." + } + }, + "callTimes": "Количество вызовов", + "usedToken": "Использованные токены", + "setAPIBtn": "Перейти к настройке поставщика модели", + "tryCloud": "Или попробуйте облачную версию Dify с бесплатной квотой" + }, + "overview": { + "title": "Обзор", + "appInfo": { + "explanation": "Готовое к использованию веб-приложение ИИ", + "accessibleAddress": "Публичный URL", + "preview": "Предварительный просмотр", + "regenerate": "Перегенерировать", + "regenerateNotice": "Вы хотите перегенерировать публичный URL?", + "preUseReminder": "Пожалуйста, включите веб-приложение перед продолжением.", + "settings": { + "entry": "Настройки", + "title": "Настройки веб-приложения", + "webName": "Название веб-приложения", + "webDesc": "Описание веб-приложения", + "webDescTip": "Этот текст будет отображаться на стороне клиента, предоставляя базовые инструкции по использованию приложения", + "webDescPlaceholder": "Введите описание веб-приложения", + "language": "Язык", + "workflow": { + "title": "Рабочий процесс", + "subTitle": "Подробности рабочего процесса", + "show": "Показать", + "hide": "Скрыть", + "showDesc": "Показать или скрыть подробности рабочего процесса в веб-приложении" + }, + "chatColorTheme": "Цветовая тема чата", + "chatColorThemeDesc": "Установите цветовую тему чат-бота", + "chatColorThemeInverted": "Инвертированные цвета", + "invalidHexMessage": "Неверное HEX-значение", + "invalidPrivacyPolicy": "Недопустимая ссылка на политику конфиденциальности. Пожалуйста, используйте действительную ссылку, начинающуюся с http или https", + "sso": { + "label": "SSO аутентификация", + "title": "web app SSO", + "description": "Все пользователи должны войти в систему с помощью SSO перед использованием web app", + "tooltip": "Обратитесь к администратору, чтобы включить web app SSO" + }, + "more": { + "entry": "Показать больше настроек", + "copyright": "Авторские права", + "copyRightPlaceholder": "Введите имя автора или организации", + "privacyPolicy": "Политика конфиденциальности", + "privacyPolicyPlaceholder": "Введите ссылку на политику конфиденциальности", + "privacyPolicyTip": "Помогает посетителям понять, какие данные собирает приложение, см. Политику конфиденциальности Dify.", + "customDisclaimer": "Пользовательский отказ от ответственности", + "customDisclaimerPlaceholder": "Введите текст пользовательского отказа от ответственности", + "customDisclaimerTip": "Текст пользовательского отказа от ответственности будет отображаться на стороне клиента, предоставляя дополнительную информацию о приложении", + "copyrightTooltip": "Пожалуйста, перейдите на тарифный план Professional или выше", + "copyrightTip": "Отображение информации об авторских правах в веб-приложении" + }, + "modalTip": "Настройки веб-приложения на стороне клиента." + }, + "embedded": { + "entry": "Встраивание", + "title": "Встроить на веб-сайт", + "explanation": "Выберите способ встраивания чат-приложения на свой веб-сайт", + "iframe": "Чтобы добавить чат-приложение в любое место на вашем веб-сайте, добавьте этот iframe в свой HTML-код.", + "scripts": "Чтобы добавить чат-приложение в правый нижний угол вашего веб-сайта, добавьте этот код в свой HTML.", + "chromePlugin": "Установите расширение Dify Chatbot для Chrome", + "copied": "Скопировано", + "copy": "Копировать" + }, + "qrcode": { + "title": "QR-код ссылки", + "scan": "Сканировать, чтобы поделиться", + "download": "Скачать QR-код" + }, + "customize": { + "way": "способ", + "entry": "Настроить", + "title": "Настроить веб-приложение ИИ", + "explanation": "Вы можете настроить внешний интерфейс веб-приложения в соответствии со своими потребностями.", + "way1": { + "name": "Создайте форк клиентского кода, измените его и разверните на Vercel (рекомендуется)", + "step1": "Создайте форк клиентского кода и измените его", + "step1Tip": "Нажмите здесь, чтобы создать форк исходного кода в своей учетной записи GitHub и изменить код", + "step1Operation": "Dify-WebClient", + "step2": "Развернуть на Vercel", + "step2Tip": "Нажмите здесь, чтобы импортировать репозиторий в Vercel и развернуть", + "step2Operation": "Импортировать репозиторий", + "step3": "Настроить переменные среды", + "step3Tip": "Добавьте следующие переменные среды в Vercel" + }, + "way2": { + "name": "Напишите клиентский код для вызова API и разверните его на сервере", + "operation": "Документация" + } + }, + "launch": "Баркас", + "enableTooltip": { + "description": "Чтобы включить эту функцию, добавьте на холст узел ввода пользователя. (Может уже существовать в черновике, вступает в силу после публикации)", + "learnMore": "Узнать больше" + }, + "title": "Веб-приложение" + }, + "apiInfo": { + "title": "API серверной части", + "explanation": "Легко интегрируется в ваше приложение", + "accessibleAddress": "Конечная точка API сервиса", + "doc": "Справочник по API" + }, + "status": { + "running": "В работе", + "disable": "Отключено" + }, + "triggerInfo": { + "title": "Триггеры", + "explanation": "Управление триггерами рабочего процесса", + "triggersAdded": "Добавлены триггеры", + "noTriggerAdded": "Триггер не добавлен", + "triggerStatusDescription": "Статус узла триггера отображается здесь. (Может уже существовать в черновике, вступает в силу после публикации)", + "learnAboutTriggers": "Узнайте о триггерах" + }, + "disableTooltip": { + "triggerMode": "Функция {{feature}} не поддерживается в режиме узла триггера." + } + }, + "analysis": { + "title": "Анализ", + "ms": "мс", + "tokenPS": "Токен/с", + "totalMessages": { + "title": "Всего сообщений", + "explanation": "Ежедневное количество взаимодействий с ИИ." + }, + "totalConversations": { + "title": "Всего чатов", + "explanation": "Ежедневное количество чатов с LLM; проектирование/отладка не учитываются." + }, + "activeUsers": { + "title": "Активные пользователи", + "explanation": "Уникальные пользователи, участвующие в вопросах и ответах с LLM; проектирование/отладка не учитываются." + }, + "tokenUsage": { + "title": "Использование токенов", + "explanation": "Отражает ежедневное использование токенов языковой модели для приложения, полезно для целей контроля затрат.", + "consumed": "Потрачено" + }, + "avgSessionInteractions": { + "title": "Среднее количество взаимодействий за сеанс", + "explanation": "Количество непрерывных взаимодействий пользователя с LLM; для приложений на основе чатов." + }, + "avgUserInteractions": { + "title": "Среднее количество взаимодействий пользователя", + "explanation": "Отражает ежедневную частоту использования пользователями. Эта метрика отражает активность пользователей." + }, + "userSatisfactionRate": { + "title": "Уровень удовлетворенности пользователей", + "explanation": "Количество лайков на 1000 сообщений. Это указывает на долю ответов, которыми пользователи довольны." + }, + "avgResponseTime": { + "title": "Среднее время ответа", + "explanation": "Время (мс) для обработки/ответа LLM; для текстовых приложений." + }, + "tps": { + "title": "Скорость вывода токенов", + "explanation": "Измерьте производительность LLM. Подсчитайте скорость вывода токенов LLM от начала запроса до завершения вывода." + } + } +} diff --git a/web/i18n/ru-RU/app-overview.ts b/web/i18n/ru-RU/app-overview.ts deleted file mode 100644 index 9883975c87..0000000000 --- a/web/i18n/ru-RU/app-overview.ts +++ /dev/null @@ -1,189 +0,0 @@ -const translation = { - welcome: { - firstStepTip: 'Чтобы начать,', - enterKeyTip: 'введите свой ключ API OpenAI ниже', - getKeyTip: 'Получите свой ключ API на панели инструментов OpenAI', - placeholder: 'Ваш ключ API OpenAI (например, sk-xxxx)', - }, - apiKeyInfo: { - cloud: { - trial: { - title: 'Вы используете пробную квоту {{providerName}}.', - description: 'Пробная квота предоставляется для тестирования. Прежде чем пробная квота будет исчерпана, пожалуйста, настройте своего собственного поставщика модели или приобретите дополнительную квоту.', - }, - exhausted: { - title: 'Ваша пробная квота была исчерпана, пожалуйста, настройте свой APIKey.', - description: 'Вы исчерпали свою пробную квоту. Пожалуйста, настройте своего собственного поставщика модели или приобретите дополнительную квоту.', - }, - }, - selfHost: { - title: { - row1: 'Чтобы начать,', - row2: 'сначала настройте своего поставщика модели.', - }, - }, - callTimes: 'Количество вызовов', - usedToken: 'Использованные токены', - setAPIBtn: 'Перейти к настройке поставщика модели', - tryCloud: 'Или попробуйте облачную версию Dify с бесплатной квотой', - }, - overview: { - title: 'Обзор', - appInfo: { - explanation: 'Готовое к использованию веб-приложение ИИ', - accessibleAddress: 'Публичный URL', - preview: 'Предварительный просмотр', - regenerate: 'Перегенерировать', - regenerateNotice: 'Вы хотите перегенерировать публичный URL?', - preUseReminder: 'Пожалуйста, включите веб-приложение перед продолжением.', - settings: { - entry: 'Настройки', - title: 'Настройки веб-приложения', - webName: 'Название веб-приложения', - webDesc: 'Описание веб-приложения', - webDescTip: 'Этот текст будет отображаться на стороне клиента, предоставляя базовые инструкции по использованию приложения', - webDescPlaceholder: 'Введите описание веб-приложения', - language: 'Язык', - workflow: { - title: 'Рабочий процесс', - subTitle: 'Подробности рабочего процесса', - show: 'Показать', - hide: 'Скрыть', - showDesc: 'Показать или скрыть подробности рабочего процесса в веб-приложении', - }, - chatColorTheme: 'Цветовая тема чата', - chatColorThemeDesc: 'Установите цветовую тему чат-бота', - chatColorThemeInverted: 'Инвертированные цвета', - invalidHexMessage: 'Неверное HEX-значение', - invalidPrivacyPolicy: 'Недопустимая ссылка на политику конфиденциальности. Пожалуйста, используйте действительную ссылку, начинающуюся с http или https', - sso: { - label: 'SSO аутентификация', - title: 'web app SSO', - description: 'Все пользователи должны войти в систему с помощью SSO перед использованием web app', - tooltip: 'Обратитесь к администратору, чтобы включить web app SSO', - }, - more: { - entry: 'Показать больше настроек', - copyright: 'Авторские права', - copyRightPlaceholder: 'Введите имя автора или организации', - privacyPolicy: 'Политика конфиденциальности', - privacyPolicyPlaceholder: 'Введите ссылку на политику конфиденциальности', - privacyPolicyTip: 'Помогает посетителям понять, какие данные собирает приложение, см. Политику конфиденциальности Dify.', - customDisclaimer: 'Пользовательский отказ от ответственности', - customDisclaimerPlaceholder: 'Введите текст пользовательского отказа от ответственности', - customDisclaimerTip: 'Текст пользовательского отказа от ответственности будет отображаться на стороне клиента, предоставляя дополнительную информацию о приложении', - copyrightTooltip: 'Пожалуйста, перейдите на тарифный план Professional или выше', - copyrightTip: 'Отображение информации об авторских правах в веб-приложении', - }, - modalTip: 'Настройки веб-приложения на стороне клиента.', - }, - embedded: { - entry: 'Встраивание', - title: 'Встроить на веб-сайт', - explanation: 'Выберите способ встраивания чат-приложения на свой веб-сайт', - iframe: 'Чтобы добавить чат-приложение в любое место на вашем веб-сайте, добавьте этот iframe в свой HTML-код.', - scripts: 'Чтобы добавить чат-приложение в правый нижний угол вашего веб-сайта, добавьте этот код в свой HTML.', - chromePlugin: 'Установите расширение Dify Chatbot для Chrome', - copied: 'Скопировано', - copy: 'Копировать', - }, - qrcode: { - title: 'QR-код ссылки', - scan: 'Сканировать, чтобы поделиться', - download: 'Скачать QR-код', - }, - customize: { - way: 'способ', - entry: 'Настроить', - title: 'Настроить веб-приложение ИИ', - explanation: 'Вы можете настроить внешний интерфейс веб-приложения в соответствии со своими потребностями.', - way1: { - name: 'Создайте форк клиентского кода, измените его и разверните на Vercel (рекомендуется)', - step1: 'Создайте форк клиентского кода и измените его', - step1Tip: 'Нажмите здесь, чтобы создать форк исходного кода в своей учетной записи GitHub и изменить код', - step1Operation: 'Dify-WebClient', - step2: 'Развернуть на Vercel', - step2Tip: 'Нажмите здесь, чтобы импортировать репозиторий в Vercel и развернуть', - step2Operation: 'Импортировать репозиторий', - step3: 'Настроить переменные среды', - step3Tip: 'Добавьте следующие переменные среды в Vercel', - }, - way2: { - name: 'Напишите клиентский код для вызова API и разверните его на сервере', - operation: 'Документация', - }, - }, - launch: 'Баркас', - enableTooltip: { - description: 'Чтобы включить эту функцию, добавьте на холст узел ввода пользователя. (Может уже существовать в черновике, вступает в силу после публикации)', - learnMore: 'Узнать больше', - }, - title: 'Веб-приложение', - }, - apiInfo: { - title: 'API серверной части', - explanation: 'Легко интегрируется в ваше приложение', - accessibleAddress: 'Конечная точка API сервиса', - doc: 'Справочник по API', - }, - status: { - running: 'В работе', - disable: 'Отключено', - }, - triggerInfo: { - title: 'Триггеры', - explanation: 'Управление триггерами рабочего процесса', - triggersAdded: 'Добавлены триггеры', - noTriggerAdded: 'Триггер не добавлен', - triggerStatusDescription: 'Статус узла триггера отображается здесь. (Может уже существовать в черновике, вступает в силу после публикации)', - learnAboutTriggers: 'Узнайте о триггерах', - }, - disableTooltip: { - triggerMode: 'Функция {{feature}} не поддерживается в режиме узла триггера.', - }, - }, - analysis: { - title: 'Анализ', - ms: 'мс', - tokenPS: 'Токен/с', - totalMessages: { - title: 'Всего сообщений', - explanation: 'Ежедневное количество взаимодействий с ИИ.', - }, - totalConversations: { - title: 'Всего чатов', - explanation: 'Ежедневное количество чатов с LLM; проектирование/отладка не учитываются.', - }, - activeUsers: { - title: 'Активные пользователи', - explanation: 'Уникальные пользователи, участвующие в вопросах и ответах с LLM; проектирование/отладка не учитываются.', - }, - tokenUsage: { - title: 'Использование токенов', - explanation: 'Отражает ежедневное использование токенов языковой модели для приложения, полезно для целей контроля затрат.', - consumed: 'Потрачено', - }, - avgSessionInteractions: { - title: 'Среднее количество взаимодействий за сеанс', - explanation: 'Количество непрерывных взаимодействий пользователя с LLM; для приложений на основе чатов.', - }, - avgUserInteractions: { - title: 'Среднее количество взаимодействий пользователя', - explanation: 'Отражает ежедневную частоту использования пользователями. Эта метрика отражает активность пользователей.', - }, - userSatisfactionRate: { - title: 'Уровень удовлетворенности пользователей', - explanation: 'Количество лайков на 1000 сообщений. Это указывает на долю ответов, которыми пользователи довольны.', - }, - avgResponseTime: { - title: 'Среднее время ответа', - explanation: 'Время (мс) для обработки/ответа LLM; для текстовых приложений.', - }, - tps: { - title: 'Скорость вывода токенов', - explanation: 'Измерьте производительность LLM. Подсчитайте скорость вывода токенов LLM от начала запроса до завершения вывода.', - }, - }, -} - -export default translation diff --git a/web/i18n/ru-RU/app.json b/web/i18n/ru-RU/app.json new file mode 100644 index 0000000000..3054c56fa4 --- /dev/null +++ b/web/i18n/ru-RU/app.json @@ -0,0 +1,345 @@ +{ + "createApp": "СОЗДАТЬ ПРИЛОЖЕНИЕ", + "types": { + "all": "Все", + "chatbot": "Чат-бот", + "agent": "Агент", + "workflow": "Рабочий процесс", + "completion": "Завершение", + "advanced": "Чатфлоу", + "basic": "Основной" + }, + "duplicate": "Дублировать", + "duplicateTitle": "Дублировать приложение", + "export": "Экспортировать DSL", + "exportFailed": "Ошибка экспорта DSL.", + "importDSL": "Импортировать файл DSL", + "createFromConfigFile": "Создать из файла DSL", + "importFromDSL": "Импортировать из DSL", + "importFromDSLFile": "Из файла DSL", + "importFromDSLUrl": "Из URL", + "importFromDSLUrlPlaceholder": "Вставьте ссылку DSL сюда", + "dslUploader": { + "button": "Перетащите файл, или", + "browse": "Обзор" + }, + "deleteAppConfirmTitle": "Удалить это приложение?", + "deleteAppConfirmContent": "Удаление приложения необратимо. Пользователи больше не смогут получить доступ к вашему приложению, и все настройки подсказок и журналы будут безвозвратно удалены.", + "appDeleted": "Приложение удалено", + "appDeleteFailed": "Не удалось удалить приложение", + "join": "Присоединяйтесь к сообществу", + "communityIntro": "Общайтесь с членами команды, участниками и разработчиками на разных каналах.", + "roadmap": "Посмотреть наш roadmap", + "newApp": { + "startFromBlank": "Создать с нуля", + "startFromTemplate": "Создать из шаблона", + "workflowWarning": "В настоящее время находится в бета-версии", + "captionName": "Значок и название приложения", + "appNamePlaceholder": "Дайте вашему приложению имя", + "captionDescription": "Описание", + "appDescriptionPlaceholder": "Введите описание приложения", + "useTemplate": "Использовать этот шаблон", + "previewDemo": "Предварительный просмотр", + "chatApp": "Ассистент", + "chatAppIntro": "Я хочу создать приложение на основе чата. Это приложение использует формат вопросов и ответов, позволяя общаться непрерывно.", + "agentAssistant": "Новый Ассистент Агента", + "completeApp": "Генератор текста", + "completeAppIntro": "Я хочу создать приложение, которое генерирует высококачественный текст на основе подсказок, например, генерирует статьи, резюме, переводы и многое другое.", + "showTemplates": "Я хочу выбрать из шаблона", + "hideTemplates": "Вернуться к выбору режима", + "Create": "Создать", + "Cancel": "Отмена", + "nameNotEmpty": "Имя не может быть пустым", + "appTemplateNotSelected": "Пожалуйста, выберите шаблон", + "appTypeRequired": "Пожалуйста, выберите тип приложения", + "appCreated": "Приложение создано", + "appCreateFailed": "Не удалось создать приложение", + "caution": "Осторожность", + "appCreateDSLErrorPart2": "Хотите продолжить?", + "Confirm": "Подтверждать", + "appCreateDSLErrorTitle": "Несовместимость версий", + "appCreateDSLErrorPart3": "Актуальная версия приложения DSL:", + "appCreateDSLErrorPart4": "Поддерживаемая системой версия DSL:", + "appCreateDSLWarning": "Внимание: разница в версиях DSL может повлиять на некоторые функции", + "appCreateDSLErrorPart1": "Обнаружена существенная разница в версиях DSL. Принудительный импорт может привести к сбою в работе приложения.", + "learnMore": "Подробнее", + "forAdvanced": "ДЛЯ ПРОДВИНУТЫХ ПОЛЬЗОВАТЕЛЕЙ", + "foundResults": "{{count}} Результаты", + "optional": "Необязательный", + "chatbotShortDescription": "Чат-бот на основе LLM с простой настройкой", + "advancedShortDescription": "Рабочий процесс, улучшенный для многоходовых чатов", + "foundResult": "{{count}} Результат", + "workflowShortDescription": "Агентный поток для интеллектуальных автоматизаций", + "advancedUserDescription": "Рабочий процесс с дополнительными функциями памяти и интерфейсом чат-бота.", + "noAppsFound": "Приложения не найдены", + "agentUserDescription": "Интеллектуальный агент, способный к итеративным рассуждениям и автономному использованию инструментов для достижения целей задачи.", + "forBeginners": "Более простые типы приложений", + "chatbotUserDescription": "Быстро создайте чат-бота на основе LLM с простой настройкой. Вы можете переключиться на Chatflow позже.", + "noTemplateFound": "Шаблоны не найдены", + "completionShortDescription": "AI-помощник для задач генерации текста", + "noIdeaTip": "Нет идей? Ознакомьтесь с нашими шаблонами", + "chooseAppType": "Выберите тип приложения", + "agentShortDescription": "Интеллектуальный агент с рассуждениями и автономным использованием инструментов", + "noTemplateFoundTip": "Попробуйте искать по разным ключевым словам.", + "completionUserDescription": "Быстро создайте помощника с искусственным интеллектом для задач генерации текста с простой настройкой.", + "workflowUserDescription": "Визуально создавайте автономные ИИ-процессы простым перетаскиванием.", + "dropDSLToCreateApp": "Перетащите файл DSL сюда, чтобы создать приложение", + "import": "Импорт" + }, + "editApp": "Редактировать информацию", + "editAppTitle": "Редактировать информацию о приложении", + "editDone": "Информация о приложении обновлена", + "editFailed": "Не удалось обновить информацию о приложении", + "iconPicker": { + "ok": "ОК", + "cancel": "Отмена", + "emoji": "Эмодзи", + "image": "Изображение" + }, + "switch": "Переключиться на Workflow", + "switchTipStart": "Для вас будет создана новая копия Workflow. Новая копия ", + "switchTip": "не позволит", + "switchTipEnd": " переключиться обратно на базовую организацию.", + "switchLabel": "Копия приложения, которая будет создана", + "removeOriginal": "Удалить исходное приложение", + "switchStart": "Переключиться", + "typeSelector": { + "all": "ВСЕ типы", + "chatbot": "Чат-бот", + "agent": "Агент", + "workflow": "Рабочий процесс", + "completion": "Завершение", + "advanced": "Чатфлоу" + }, + "tracing": { + "title": "Отслеживание производительности приложения", + "description": "Настройка стороннего поставщика LLMOps и отслеживание производительности приложения.", + "config": "Настройка", + "view": "Просмотр", + "collapse": "Свернуть", + "expand": "Развернуть", + "tracing": "Отслеживание", + "disabled": "Отключено", + "disabledTip": "Пожалуйста, сначала настройте провайдера LLM", + "enabled": "В работе", + "tracingDescription": "Запись полного контекста выполнения приложения, включая вызовы LLM, контекст, подсказки, HTTP-запросы и многое другое, на стороннюю платформу трассировки.", + "configProviderTitle": { + "configured": "Настроено", + "notConfigured": "Настройте провайдера, чтобы включить трассировку", + "moreProvider": "Больше провайдеров" + }, + "arize": { + "title": "Arize", + "description": "Корпоративный уровень наблюдаемости LLM, онлайн и оффлайн оценка, мониторинг и эксперименты—на основе OpenTelemetry. Специально разработан для приложений на базе LLM и агентов." + }, + "phoenix": { + "title": "Phoenix", + "description": "Открытая и основанная на OpenTelemetry платформа для наблюдаемости, оценки, инженерии подсказок и экспериментов для ваших рабочих процессов и агентов LLM." + }, + "langsmith": { + "title": "LangSmith", + "description": "Универсальная платформа для разработчиков для каждого этапа жизненного цикла приложения на базе LLM." + }, + "langfuse": { + "title": "Langfuse", + "description": "Трассировка, оценка, управление подсказками и метрики для отладки и улучшения вашего приложения LLM." + }, + "inUse": "Используется", + "configProvider": { + "title": "Настройка ", + "placeholder": "Введите ваш {{key}}", + "project": "Проект", + "publicKey": "Публичный ключ", + "secretKey": "Секретный ключ", + "viewDocsLink": "Посмотреть документацию {{key}}", + "removeConfirmTitle": "Удалить конфигурацию {{key}}?", + "removeConfirmContent": "Текущая конфигурация используется, ее удаление отключит функцию трассировки.", + "username": "Имя пользователя", + "password": "Пароль", + "experimentId": "ID эксперимента", + "trackingUri": "URI отслеживания", + "clientSecret": "Секрет клиента OAuth", + "databricksHost": "URL рабочего пространства Databricks", + "clientId": "Идентификатор клиента OAuth", + "personalAccessToken": "Личный токен доступа (устаревший)" + }, + "opik": { + "title": "Опик", + "description": "Opik — это платформа с открытым исходным кодом для оценки, тестирования и мониторинга LLM-приложений." + }, + "weave": { + "description": "Weave — это открытая платформа для оценки, тестирования и мониторинга приложений LLM.", + "title": "Ткать" + }, + "aliyun": { + "title": "Облачный монитор", + "description": "Полностью управляемая и не требующая обслуживания платформа наблюдения, предоставляемая Alibaba Cloud, обеспечивает мониторинг, трассировку и оценку приложений Dify из коробки." + }, + "mlflow": { + "title": "MLflow", + "description": "Платформа LLMOps с открытым исходным кодом для отслеживания экспериментов, наблюдаемости и оценки, для создания приложений AI/LLM с уверенностью." + }, + "databricks": { + "title": "Databricks", + "description": "Databricks предлагает полностью управляемый MLflow с сильным управлением и безопасностью для хранения данных трассировки." + }, + "tencent": { + "title": "Tencent APM", + "description": "Мониторинг производительности приложений Tencent предоставляет всестороннее отслеживание и многомерный анализ для приложений LLM." + } + }, + "answerIcon": { + "title": "Использование значка web app для замены 🤖", + "description": "Следует ли использовать значок web app для замены 🤖 в общем приложении", + "descriptionInExplore": "Следует ли использовать значок web app для замены 🤖 в разделе \"Обзор\"" + }, + "mermaid": { + "handDrawn": "Рисованный", + "classic": "Классический" + }, + "openInExplore": "Открыть в разделе «Обзор»", + "newAppFromTemplate": { + "sidebar": { + "HR": "ЧАС", + "Workflow": "Рабочий процесс", + "Recommended": "Рекомендованный", + "Agent": "Агент", + "Assistant": "Помощник", + "Writing": "Пишущий", + "Programming": "Программирование" + }, + "searchAllTemplate": "Поиск по всем шаблонам...", + "byCategories": "ПО КАТЕГОРИЯМ" + }, + "showMyCreatedAppsOnly": "Показать только созданные мной приложения", + "appSelector": { + "label": "ПРИЛОЖЕНИЕ", + "noParams": "Параметры не нужны", + "placeholder": "Выберите приложение...", + "params": "ПАРАМЕТРЫ ПРИЛОЖЕНИЯ" + }, + "structOutput": { + "notConfiguredTip": "Структурированный вывод еще не был настроен.", + "LLMResponse": "Ответ LLM", + "structured": "Структурированный", + "moreFillTip": "Показано максимум 10 уровней вложенности", + "required": "Необходимо", + "configure": "Настроить", + "modelNotSupported": "Модель не поддерживается", + "modelNotSupportedTip": "Текущая модель не поддерживает эту функцию и автоматически понижается до инъекции подсказок.", + "structuredTip": "Структурированные выходные данные — это функция, которая гарантирует, что модель всегда будет генерировать ответы, соответствующие вашей предоставленной JSON-схеме." + }, + "accessItemsDescription": { + "anyone": "Любой может получить доступ к веб-приложению", + "specific": "Только определенные группы или участники могут получить доступ к веб-приложению.", + "organization": "Любой в организации может получить доступ к веб-приложению", + "external": "Только аутентифицированные внешние пользователи могут получить доступ к веб-приложению." + }, + "accessControlDialog": { + "accessItems": { + "anyone": "Кто угодно с ссылкой", + "specific": "Конкретные группы или члены", + "organization": "Только члены внутри предприятия", + "external": "Аутентифицированные внешние пользователи" + }, + "operateGroupAndMember": { + "searchPlaceholder": "Искать группы и участников", + "expand": "Расширить", + "noResult": "Нет результата", + "allMembers": "Все члены" + }, + "title": "Управление доступом к веб-приложению", + "description": "Установите разрешения на доступ к веб-приложению", + "accessLabel": "Кто имеет доступ", + "groups_one": "{{count}} ГРУППА", + "groups_other": "{{count}} ГРУПП", + "members_one": "{{count}} УЧАСТНИК", + "members_other": "{{count}} УЧАСТНИКИ", + "noGroupsOrMembers": "Группы или участники не выбраны", + "updateSuccess": "Обновление прошло успешно", + "webAppSSONotEnabledTip": "Пожалуйста, свяжитесь с администратором предприятия, чтобы настроить метод аутентификации веб-приложения." + }, + "publishApp": { + "title": "Кто может получить доступ к веб-приложению", + "notSet": "Не установлено", + "notSetDesc": "В настоящее время никто не может получить доступ к веб-приложению. Пожалуйста, установите права доступа." + }, + "accessControl": "Управление доступом к веб-приложению", + "noAccessPermission": "Нет разрешения на доступ к веб-приложению", + "maxActiveRequests": "Максимальное количество параллельных запросов", + "maxActiveRequestsPlaceholder": "Введите 0 для неограниченного количества", + "maxActiveRequestsTip": "Максимальное количество одновременно активных запросов на одно приложение (0 для неограниченного количества)", + "gotoAnything": { + "actions": { + "searchPlugins": "Поиск плагинов", + "searchKnowledgeBases": "Поиск в базах знаний", + "searchApplications": "Поиск приложений", + "searchKnowledgeBasesDesc": "Поиск и переход к базам знаний", + "searchPluginsDesc": "Поиск и переход к вашим плагинам", + "searchWorkflowNodes": "Поиск узлов рабочего процесса", + "searchApplicationsDesc": "Поиск и переход к приложениям", + "searchWorkflowNodesHelp": "Эта функция работает только при просмотре рабочего процесса. Сначала перейдите к рабочему процессу.", + "searchWorkflowNodesDesc": "Поиск узлов в текущем рабочем процессе и переход к ним по имени или типу", + "themeCategoryDesc": "Переключить тему приложения", + "runTitle": "Команды", + "themeDark": "Темная тема", + "themeCategoryTitle": "Тема", + "languageCategoryTitle": "Язык", + "themeSystem": "Системная тема", + "runDesc": "Запустите быстрые команды (тема, язык, …)", + "themeLight": "Светлая тема", + "themeDarkDesc": "Используйте темный внешний вид", + "languageChangeDesc": "Измените язык интерфейса", + "languageCategoryDesc": "Переключите язык интерфейса", + "themeLightDesc": "Используйте светлый внешний вид", + "themeSystemDesc": "Следуйте внешнему виду вашей операционной системы", + "slashDesc": "Выполняйте команды, такие как /theme, /lang", + "accountDesc": "Перейдите на страницу учетной записи", + "feedbackDesc": "Обсуждения обратной связи с открытым сообществом", + "docDesc": "Откройте справочную документацию", + "communityDesc": "Открытое сообщество Discord", + "zenTitle": "Zen Mode", + "zenDesc": "Toggle canvas focus mode" + }, + "emptyState": { + "noPluginsFound": "Плагины не найдены", + "noKnowledgeBasesFound": "Базы знаний не найдены", + "noAppsFound": "Приложения не найдены", + "noWorkflowNodesFound": "Узлы расчетной схемы не найдены", + "tryDifferentTerm": "Попробуйте другой поисковый термин или удалите фильтр {{mode}}", + "trySpecificSearch": "Попробуйте {{shortcuts}} для конкретного поиска" + }, + "groups": { + "knowledgeBases": "Базы знаний", + "plugins": "Плагины", + "apps": "Приложения", + "workflowNodes": "Узлы рабочих процессов", + "commands": "Команды" + }, + "searching": "Поиск...", + "noResults": "Ничего не найдено", + "searchFailed": "Ошибка поиска", + "searchTitle": "Ищите что угодно", + "useAtForSpecific": "Используйте @ для определенных типов", + "clearToSearchAll": "Очистите @ для поиска по всем", + "searchTemporarilyUnavailable": "Поиск временно недоступен", + "searchPlaceholder": "Найдите или введите @ для команд...", + "someServicesUnavailable": "Некоторые поисковые сервисы недоступны", + "servicesUnavailableMessage": "В некоторых поисковых службах могут возникать проблемы. Повторите попытку через мгновение.", + "searchHint": "Начните печатать, чтобы мгновенно искать все", + "commandHint": "Введите @ для просмотра по категориям", + "selectSearchType": "Выберите, что искать", + "resultCount": "{{count}} результат", + "resultCount_other": "{{count}} результатов", + "inScope": "в {{scope}}s", + "noMatchingCommands": "Соответствующие команды не найдены", + "tryDifferentSearch": "Попробуйте использовать другой поисковый запрос", + "slashHint": "Введите / чтобы увидеть все доступные команды", + "startTyping": "Начните вводить для поиска", + "tips": "Нажмите ↑↓ для навигации", + "selectToNavigate": "Выберите для навигации", + "pressEscToClose": "Нажмите ESC для закрытия" + }, + "notPublishedYet": "Приложение ещё не опубликовано", + "noUserInputNode": "Отсутствует узел ввода пользователя" +} diff --git a/web/i18n/ru-RU/app.ts b/web/i18n/ru-RU/app.ts deleted file mode 100644 index 8144ea1c2a..0000000000 --- a/web/i18n/ru-RU/app.ts +++ /dev/null @@ -1,351 +0,0 @@ -const translation = { - createApp: 'СОЗДАТЬ ПРИЛОЖЕНИЕ', - types: { - all: 'Все', - chatbot: 'Чат-бот', - agent: 'Агент', - workflow: 'Рабочий процесс', - completion: 'Завершение', - advanced: 'Чатфлоу', - basic: 'Основной', - }, - duplicate: 'Дублировать', - duplicateTitle: 'Дублировать приложение', - export: 'Экспортировать DSL', - exportFailed: 'Ошибка экспорта DSL.', - importDSL: 'Импортировать файл DSL', - createFromConfigFile: 'Создать из файла DSL', - importFromDSL: 'Импортировать из DSL', - importFromDSLFile: 'Из файла DSL', - importFromDSLUrl: 'Из URL', - importFromDSLUrlPlaceholder: 'Вставьте ссылку DSL сюда', - dslUploader: { - button: 'Перетащите файл, или', - browse: 'Обзор', - }, - deleteAppConfirmTitle: 'Удалить это приложение?', - deleteAppConfirmContent: - 'Удаление приложения необратимо. Пользователи больше не смогут получить доступ к вашему приложению, и все настройки подсказок и журналы будут безвозвратно удалены.', - appDeleted: 'Приложение удалено', - appDeleteFailed: 'Не удалось удалить приложение', - join: 'Присоединяйтесь к сообществу', - communityIntro: - 'Общайтесь с членами команды, участниками и разработчиками на разных каналах.', - roadmap: 'Посмотреть наш roadmap', - newApp: { - startFromBlank: 'Создать с нуля', - startFromTemplate: 'Создать из шаблона', - workflowWarning: 'В настоящее время находится в бета-версии', - captionName: 'Значок и название приложения', - appNamePlaceholder: 'Дайте вашему приложению имя', - captionDescription: 'Описание', - appDescriptionPlaceholder: 'Введите описание приложения', - useTemplate: 'Использовать этот шаблон', - previewDemo: 'Предварительный просмотр', - chatApp: 'Ассистент', - chatAppIntro: - 'Я хочу создать приложение на основе чата. Это приложение использует формат вопросов и ответов, позволяя общаться непрерывно.', - agentAssistant: 'Новый Ассистент Агента', - completeApp: 'Генератор текста', - completeAppIntro: - 'Я хочу создать приложение, которое генерирует высококачественный текст на основе подсказок, например, генерирует статьи, резюме, переводы и многое другое.', - showTemplates: 'Я хочу выбрать из шаблона', - hideTemplates: 'Вернуться к выбору режима', - Create: 'Создать', - Cancel: 'Отмена', - nameNotEmpty: 'Имя не может быть пустым', - appTemplateNotSelected: 'Пожалуйста, выберите шаблон', - appTypeRequired: 'Пожалуйста, выберите тип приложения', - appCreated: 'Приложение создано', - appCreateFailed: 'Не удалось создать приложение', - caution: 'Осторожность', - appCreateDSLErrorPart2: 'Хотите продолжить?', - Confirm: 'Подтверждать', - appCreateDSLErrorTitle: 'Несовместимость версий', - appCreateDSLErrorPart3: 'Актуальная версия приложения DSL:', - appCreateDSLErrorPart4: 'Поддерживаемая системой версия DSL:', - appCreateDSLWarning: 'Внимание: разница в версиях DSL может повлиять на некоторые функции', - appCreateDSLErrorPart1: 'Обнаружена существенная разница в версиях DSL. Принудительный импорт может привести к сбою в работе приложения.', - learnMore: 'Подробнее', - forAdvanced: 'ДЛЯ ПРОДВИНУТЫХ ПОЛЬЗОВАТЕЛЕЙ', - foundResults: '{{count}} Результаты', - optional: 'Необязательный', - chatbotShortDescription: 'Чат-бот на основе LLM с простой настройкой', - advancedShortDescription: 'Рабочий процесс, улучшенный для многоходовых чатов', - foundResult: '{{count}} Результат', - workflowShortDescription: 'Агентный поток для интеллектуальных автоматизаций', - advancedUserDescription: 'Рабочий процесс с дополнительными функциями памяти и интерфейсом чат-бота.', - noAppsFound: 'Приложения не найдены', - agentUserDescription: 'Интеллектуальный агент, способный к итеративным рассуждениям и автономному использованию инструментов для достижения целей задачи.', - forBeginners: 'Более простые типы приложений', - chatbotUserDescription: 'Быстро создайте чат-бота на основе LLM с простой настройкой. Вы можете переключиться на Chatflow позже.', - noTemplateFound: 'Шаблоны не найдены', - completionShortDescription: 'AI-помощник для задач генерации текста', - noIdeaTip: 'Нет идей? Ознакомьтесь с нашими шаблонами', - chooseAppType: 'Выберите тип приложения', - agentShortDescription: 'Интеллектуальный агент с рассуждениями и автономным использованием инструментов', - noTemplateFoundTip: 'Попробуйте искать по разным ключевым словам.', - completionUserDescription: 'Быстро создайте помощника с искусственным интеллектом для задач генерации текста с простой настройкой.', - workflowUserDescription: 'Визуально создавайте автономные ИИ-процессы простым перетаскиванием.', - dropDSLToCreateApp: 'Перетащите файл DSL сюда, чтобы создать приложение', - import: 'Импорт', - }, - editApp: 'Редактировать информацию', - editAppTitle: 'Редактировать информацию о приложении', - editDone: 'Информация о приложении обновлена', - editFailed: 'Не удалось обновить информацию о приложении', - iconPicker: { - ok: 'ОК', - cancel: 'Отмена', - emoji: 'Эмодзи', - image: 'Изображение', - }, - switch: 'Переключиться на Workflow', - switchTipStart: 'Для вас будет создана новая копия Workflow. Новая копия ', - switchTip: 'не позволит', - switchTipEnd: ' переключиться обратно на базовую организацию.', - switchLabel: 'Копия приложения, которая будет создана', - removeOriginal: 'Удалить исходное приложение', - switchStart: 'Переключиться', - typeSelector: { - all: 'ВСЕ типы', - chatbot: 'Чат-бот', - agent: 'Агент', - workflow: 'Рабочий процесс', - completion: 'Завершение', - advanced: 'Чатфлоу', - }, - tracing: { - title: 'Отслеживание производительности приложения', - description: 'Настройка стороннего поставщика LLMOps и отслеживание производительности приложения.', - config: 'Настройка', - view: 'Просмотр', - collapse: 'Свернуть', - expand: 'Развернуть', - tracing: 'Отслеживание', - disabled: 'Отключено', - disabledTip: 'Пожалуйста, сначала настройте провайдера LLM', - enabled: 'В работе', - tracingDescription: 'Запись полного контекста выполнения приложения, включая вызовы LLM, контекст, подсказки, HTTP-запросы и многое другое, на стороннюю платформу трассировки.', - configProviderTitle: { - configured: 'Настроено', - notConfigured: 'Настройте провайдера, чтобы включить трассировку', - moreProvider: 'Больше провайдеров', - }, - arize: { - title: 'Arize', - description: 'Корпоративный уровень наблюдаемости LLM, онлайн и оффлайн оценка, мониторинг и эксперименты—на основе OpenTelemetry. Специально разработан для приложений на базе LLM и агентов.', - }, - phoenix: { - title: 'Phoenix', - description: 'Открытая и основанная на OpenTelemetry платформа для наблюдаемости, оценки, инженерии подсказок и экспериментов для ваших рабочих процессов и агентов LLM.', - }, - langsmith: { - title: 'LangSmith', - description: 'Универсальная платформа для разработчиков для каждого этапа жизненного цикла приложения на базе LLM.', - }, - langfuse: { - title: 'Langfuse', - description: 'Трассировка, оценка, управление подсказками и метрики для отладки и улучшения вашего приложения LLM.', - }, - inUse: 'Используется', - configProvider: { - title: 'Настройка ', - placeholder: 'Введите ваш {{key}}', - project: 'Проект', - publicKey: 'Публичный ключ', - secretKey: 'Секретный ключ', - viewDocsLink: 'Посмотреть документацию {{key}}', - removeConfirmTitle: 'Удалить конфигурацию {{key}}?', - removeConfirmContent: 'Текущая конфигурация используется, ее удаление отключит функцию трассировки.', - username: 'Имя пользователя', - password: 'Пароль', - experimentId: 'ID эксперимента', - trackingUri: 'URI отслеживания', - clientSecret: 'Секрет клиента OAuth', - databricksHost: 'URL рабочего пространства Databricks', - clientId: 'Идентификатор клиента OAuth', - personalAccessToken: 'Личный токен доступа (устаревший)', - }, - opik: { - title: 'Опик', - description: 'Opik — это платформа с открытым исходным кодом для оценки, тестирования и мониторинга LLM-приложений.', - }, - weave: { - description: 'Weave — это открытая платформа для оценки, тестирования и мониторинга приложений LLM.', - title: 'Ткать', - }, - aliyun: { - title: 'Облачный монитор', - description: 'Полностью управляемая и не требующая обслуживания платформа наблюдения, предоставляемая Alibaba Cloud, обеспечивает мониторинг, трассировку и оценку приложений Dify из коробки.', - }, - mlflow: { - title: 'MLflow', - description: 'Платформа LLMOps с открытым исходным кодом для отслеживания экспериментов, наблюдаемости и оценки, для создания приложений AI/LLM с уверенностью.', - }, - databricks: { - title: 'Databricks', - description: 'Databricks предлагает полностью управляемый MLflow с сильным управлением и безопасностью для хранения данных трассировки.', - }, - tencent: { - title: 'Tencent APM', - description: 'Мониторинг производительности приложений Tencent предоставляет всестороннее отслеживание и многомерный анализ для приложений LLM.', - }, - }, - answerIcon: { - title: 'Использование значка web app для замены 🤖', - description: 'Следует ли использовать значок web app для замены 🤖 в общем приложении', - descriptionInExplore: 'Следует ли использовать значок web app для замены 🤖 в разделе "Обзор"', - }, - mermaid: { - handDrawn: 'Рисованный', - classic: 'Классический', - }, - openInExplore: 'Открыть в разделе «Обзор»', - newAppFromTemplate: { - sidebar: { - HR: 'ЧАС', - Workflow: 'Рабочий процесс', - Recommended: 'Рекомендованный', - Agent: 'Агент', - Assistant: 'Помощник', - Writing: 'Пишущий', - Programming: 'Программирование', - }, - searchAllTemplate: 'Поиск по всем шаблонам...', - byCategories: 'ПО КАТЕГОРИЯМ', - }, - showMyCreatedAppsOnly: 'Показать только созданные мной приложения', - appSelector: { - label: 'ПРИЛОЖЕНИЕ', - noParams: 'Параметры не нужны', - placeholder: 'Выберите приложение...', - params: 'ПАРАМЕТРЫ ПРИЛОЖЕНИЯ', - }, - structOutput: { - notConfiguredTip: 'Структурированный вывод еще не был настроен.', - LLMResponse: 'Ответ LLM', - structured: 'Структурированный', - moreFillTip: 'Показано максимум 10 уровней вложенности', - required: 'Необходимо', - configure: 'Настроить', - modelNotSupported: 'Модель не поддерживается', - modelNotSupportedTip: 'Текущая модель не поддерживает эту функцию и автоматически понижается до инъекции подсказок.', - structuredTip: 'Структурированные выходные данные — это функция, которая гарантирует, что модель всегда будет генерировать ответы, соответствующие вашей предоставленной JSON-схеме.', - }, - accessItemsDescription: { - anyone: 'Любой может получить доступ к веб-приложению', - specific: 'Только определенные группы или участники могут получить доступ к веб-приложению.', - organization: 'Любой в организации может получить доступ к веб-приложению', - external: 'Только аутентифицированные внешние пользователи могут получить доступ к веб-приложению.', - }, - accessControlDialog: { - accessItems: { - anyone: 'Кто угодно с ссылкой', - specific: 'Конкретные группы или члены', - organization: 'Только члены внутри предприятия', - external: 'Аутентифицированные внешние пользователи', - }, - operateGroupAndMember: { - searchPlaceholder: 'Искать группы и участников', - expand: 'Расширить', - noResult: 'Нет результата', - allMembers: 'Все члены', - }, - title: 'Управление доступом к веб-приложению', - description: 'Установите разрешения на доступ к веб-приложению', - accessLabel: 'Кто имеет доступ', - groups_one: '{{count}} ГРУППА', - groups_other: '{{count}} ГРУПП', - members_one: '{{count}} УЧАСТНИК', - members_other: '{{count}} УЧАСТНИКИ', - noGroupsOrMembers: 'Группы или участники не выбраны', - updateSuccess: 'Обновление прошло успешно', - webAppSSONotEnabledTip: 'Пожалуйста, свяжитесь с администратором предприятия, чтобы настроить метод аутентификации веб-приложения.', - }, - publishApp: { - title: 'Кто может получить доступ к веб-приложению', - notSet: 'Не установлено', - notSetDesc: 'В настоящее время никто не может получить доступ к веб-приложению. Пожалуйста, установите права доступа.', - }, - accessControl: 'Управление доступом к веб-приложению', - noAccessPermission: 'Нет разрешения на доступ к веб-приложению', - maxActiveRequests: 'Максимальное количество параллельных запросов', - maxActiveRequestsPlaceholder: 'Введите 0 для неограниченного количества', - maxActiveRequestsTip: 'Максимальное количество одновременно активных запросов на одно приложение (0 для неограниченного количества)', - gotoAnything: { - actions: { - searchPlugins: 'Поиск плагинов', - searchKnowledgeBases: 'Поиск в базах знаний', - searchApplications: 'Поиск приложений', - searchKnowledgeBasesDesc: 'Поиск и переход к базам знаний', - searchPluginsDesc: 'Поиск и переход к вашим плагинам', - searchWorkflowNodes: 'Поиск узлов рабочего процесса', - searchApplicationsDesc: 'Поиск и переход к приложениям', - searchWorkflowNodesHelp: 'Эта функция работает только при просмотре рабочего процесса. Сначала перейдите к рабочему процессу.', - searchWorkflowNodesDesc: 'Поиск узлов в текущем рабочем процессе и переход к ним по имени или типу', - themeCategoryDesc: 'Переключить тему приложения', - runTitle: 'Команды', - themeDark: 'Темная тема', - themeCategoryTitle: 'Тема', - languageCategoryTitle: 'Язык', - themeSystem: 'Системная тема', - runDesc: 'Запустите быстрые команды (тема, язык, …)', - themeLight: 'Светлая тема', - themeDarkDesc: 'Используйте темный внешний вид', - languageChangeDesc: 'Измените язык интерфейса', - languageCategoryDesc: 'Переключите язык интерфейса', - themeLightDesc: 'Используйте светлый внешний вид', - themeSystemDesc: 'Следуйте внешнему виду вашей операционной системы', - slashDesc: 'Выполняйте команды, такие как /theme, /lang', - accountDesc: 'Перейдите на страницу учетной записи', - feedbackDesc: 'Обсуждения обратной связи с открытым сообществом', - docDesc: 'Откройте справочную документацию', - communityDesc: 'Открытое сообщество Discord', - zenTitle: 'Zen Mode', - zenDesc: 'Toggle canvas focus mode', - }, - emptyState: { - noPluginsFound: 'Плагины не найдены', - noKnowledgeBasesFound: 'Базы знаний не найдены', - noAppsFound: 'Приложения не найдены', - noWorkflowNodesFound: 'Узлы расчетной схемы не найдены', - tryDifferentTerm: 'Попробуйте другой поисковый термин или удалите фильтр {{mode}}', - trySpecificSearch: 'Попробуйте {{shortcuts}} для конкретного поиска', - }, - groups: { - knowledgeBases: 'Базы знаний', - plugins: 'Плагины', - apps: 'Приложения', - workflowNodes: 'Узлы рабочих процессов', - commands: 'Команды', - }, - searching: 'Поиск...', - noResults: 'Ничего не найдено', - searchFailed: 'Ошибка поиска', - searchTitle: 'Ищите что угодно', - useAtForSpecific: 'Используйте @ для определенных типов', - clearToSearchAll: 'Очистите @ для поиска по всем', - searchTemporarilyUnavailable: 'Поиск временно недоступен', - searchPlaceholder: 'Найдите или введите @ для команд...', - someServicesUnavailable: 'Некоторые поисковые сервисы недоступны', - servicesUnavailableMessage: 'В некоторых поисковых службах могут возникать проблемы. Повторите попытку через мгновение.', - searchHint: 'Начните печатать, чтобы мгновенно искать все', - commandHint: 'Введите @ для просмотра по категориям', - selectSearchType: 'Выберите, что искать', - resultCount: '{{count}} результат', - resultCount_other: '{{count}} результатов', - inScope: 'в {{scope}}s', - noMatchingCommands: 'Соответствующие команды не найдены', - tryDifferentSearch: 'Попробуйте использовать другой поисковый запрос', - slashHint: 'Введите / чтобы увидеть все доступные команды', - startTyping: 'Начните вводить для поиска', - tips: 'Нажмите ↑↓ для навигации', - selectToNavigate: 'Выберите для навигации', - pressEscToClose: 'Нажмите ESC для закрытия', - }, - notPublishedYet: 'Приложение ещё не опубликовано', - noUserInputNode: 'Отсутствует узел ввода пользователя', -} - -export default translation diff --git a/web/i18n/ru-RU/billing.json b/web/i18n/ru-RU/billing.json new file mode 100644 index 0000000000..28dfe929e7 --- /dev/null +++ b/web/i18n/ru-RU/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "Текущий тарифный план", + "upgradeBtn": { + "plain": "Обновить тарифный план", + "encourage": "Обновить сейчас", + "encourageShort": "Обновить" + }, + "viewBilling": "Управление счетами и подписками", + "buyPermissionDeniedTip": "Пожалуйста, свяжитесь с администратором вашей организации, чтобы подписаться", + "plansCommon": { + "yearlyTip": "Получите 2 месяца бесплатно, подписавшись на год!", + "mostPopular": "Самый популярный", + "planRange": { + "monthly": "Ежемесячно", + "yearly": "Ежегодно" + }, + "month": "месяц", + "year": "год", + "save": "Сэкономить ", + "free": "Бесплатно", + "currentPlan": "Текущий тарифный план", + "contractSales": "Связаться с отделом продаж", + "contractOwner": "Связаться с руководителем команды", + "startForFree": "Начать бесплатно", + "contactSales": "Связаться с отделом продаж", + "talkToSales": "Поговорить с отделом продаж", + "modelProviders": "Поставщики моделей", + "annotationQuota": "Квота аннотаций", + "buildApps": "Создать приложения", + "vectorSpace": "Векторное пространство", + "vectorSpaceTooltip": "Векторное пространство - это система долговременной памяти, необходимая LLM для понимания ваших данных.", + "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). Сообщения, превышающие лимит, будут использовать ваш ключ API OpenAI.", + "titlePerMonth": "{{count,number}} сообщений/месяц" + }, + "annotatedResponse": { + "title": "Ограничения квоты аннотаций", + "tooltip": "Ручное редактирование и аннотирование ответов обеспечивает настраиваемые высококачественные возможности ответов на вопросы для приложений. (Применимо только в чат-приложениях)" + }, + "ragAPIRequestTooltip": "Относится к количеству вызовов API, вызывающих только возможности обработки базы знаний Dify.", + "receiptInfo": "Только владелец команды и администратор команды могут подписываться и просматривать информацию о выставлении счетов", + "cloud": "Облачный сервис", + "annualBilling": "Ежегодная оплата", + "apiRateLimit": "Ограничение скорости API", + "self": "Самостоятельно размещенный", + "teamMember_other": "{{count,number}} Члены команды", + "apiRateLimitUnit": "{{count,number}}", + "unlimitedApiRate": "Нет ограничений на количество запросов к API", + "freeTrialTip": "бесплатная пробная версия из 200 вызовов OpenAI.", + "freeTrialTipSuffix": "Кредитная карта не требуется", + "teamMember_one": "{{count,number}} Член команды", + "getStarted": "Начать", + "teamWorkspace": "{{count,number}} Командное рабочее пространство", + "freeTrialTipPrefix": "Зарегистрируйтесь и получите", + "comparePlanAndFeatures": "Сравните планы и функции", + "documents": "{{count,number}} Документов знаний", + "documentsRequestQuota": "{{count,number}}/мин Лимит Частоты Запросов на Знание", + "apiRateLimitTooltip": "Ограничение скорости API применяется ко всем запросам, сделанным через API Dify, включая генерацию текста, чатовую переписку, выполнение рабочих процессов и обработку документов.", + "documentsRequestQuotaTooltip": "Указывает общее количество действий, которые рабочая область может выполнять в минуту внутри базы знаний, включая создание, удаление, обновление наборов данных, загрузку документов, модификации, архивирование и запросы к базе знаний. Эта метрика используется для оценки производительности запросов к базе знаний. Например, если пользователь Sandbox выполняет 10 последовательных тестов за один минуту, его рабочая область будет временно ограничена в выполнении следующих действий в течение следующей минуты: создание, удаление, обновление наборов данных и загрузка или модификация документов.", + "priceTip": "по рабочему месту/", + "documentsTooltip": "Квота на количество документов, импортируемых из источника знаний.", + "startBuilding": "Начать строительство", + "taxTip": "Все цены на подписку (ежемесячную/годовую) не включают применимые налоги (например, НДС, налог с продаж).", + "taxTipSecond": "Если в вашем регионе нет применимых налоговых требований, налоги не будут отображаться при оформлении заказа, и с вас не будут взиматься дополнительные сборы за весь срок подписки.", + "triggerEvents": { + "unlimited": "Неограниченные триггерные события", + "tooltip": "Количество событий, которые автоматически запускают рабочие процессы с помощью плагина, расписания или вебхука.", + "sandbox": "{{count,number}} События триггера", + "professional": "{{count,number}} Событий срабатывания/месяц" + }, + "workflowExecution": { + "faster": "Более быстрое выполнение рабочих процессов", + "standard": "Стандартное выполнение рабочего процесса", + "tooltip": "Приоритет и скорость выполнения очереди рабочих процессов.", + "priority": "Выполнение рабочего процесса по приоритету" + }, + "startNodes": { + "unlimited": "Неограниченные триггеры/рабочий процесс", + "limited": "До {{count}} триггеров/рабочих процессов" + }, + "title": { + "plans": "планы", + "description": "Выберите план, который лучше всего соответствует потребностям вашей команды." + } + }, + "plans": { + "sandbox": { + "name": "Песочница", + "description": "200 бесплатных пробных использований GPT", + "for": "Бесплатная пробная версия основных возможностей" + }, + "professional": { + "name": "Профессиональный", + "description": "Для частных лиц и небольших команд, чтобы разблокировать больше возможностей по доступной цене.", + "for": "Для независимых разработчиков/малых команд" + }, + "team": { + "name": "Команда", + "description": "Сотрудничайте без ограничений и наслаждайтесь высочайшей производительностью.", + "for": "Для команд среднего размера" + }, + "enterprise": { + "name": "Корпоративный", + "description": "Получите полный набор возможностей и поддержку для крупномасштабных критически важных систем.", + "includesTitle": "Все в командном плане, плюс:", + "features": [ + "Масштабируемые решения для развертывания корпоративного уровня", + "Разрешение на коммерческую лицензию", + "Эксклюзивные корпоративные функции", + "Несколько рабочих пространств и корпоративное управление", + "Единый вход (SSO)", + "Согласованные SLA с партнёрами Dify", + "Расширенные функции безопасности и управления", + "Обновления и обслуживание от Dify официально", + "Профессиональная техническая поддержка" + ], + "price": "Пользовательский", + "priceTip": "Только годовая подписка", + "for": "Для команд большого размера", + "btnText": "Связаться с отделом продаж" + }, + "community": { + "features": [ + "Все основные функции выпущены в публичный репозиторий", + "Единое рабочее пространство", + "Соответствует лицензии с открытым исходным кодом Dify" + ], + "name": "Сообщество", + "btnText": "Начните с сообщества", + "price": "Свободно", + "includesTitle": "Бесплатные функции:", + "description": "Для отдельных пользователей, малых команд или некоммерческих проектов", + "for": "Для отдельных пользователей, малых команд или некоммерческих проектов" + }, + "premium": { + "features": [ + "Самоуправляемая надежность у различных облачных провайдеров", + "Единое рабочее пространство", + "Настройка логотипа и брендинга веб-приложения", + "Приоритетная поддержка по электронной почте и в чате" + ], + "description": "Для средних организаций и команд", + "includesTitle": "Всё из Сообщества, плюс:", + "priceTip": "На основе облачного маркетплейса", + "btnText": "Получите Премиум в", + "comingSoon": "Поддержка Microsoft Azure и Google Cloud скоро появится", + "price": "Масштабируемый", + "for": "Для средних организаций и команд", + "name": "Премиум" + } + }, + "vectorSpace": { + "fullTip": "Векторное пространство заполнено.", + "fullSolution": "Обновите свой тарифный план, чтобы получить больше места." + }, + "apps": { + "fullTip2des": "Рекомендуется удалить неактивные приложения, чтобы освободить место, или свяжитесь с нами.", + "fullTip2": "Достигнут лимит плана", + "contactUs": "Свяжитесь с нами", + "fullTip1des": "Вы достигли предела создания приложений по этому плану", + "fullTip1": "Обновите, чтобы создать больше приложений" + }, + "annotatedResponse": { + "fullTipLine1": "Обновите свой тарифный план, чтобы", + "fullTipLine2": "аннотировать больше разговоров.", + "quotaTitle": "Квота ответов аннотаций" + }, + "usagePage": { + "buildApps": "Создавайте приложения", + "teamMembers": "Члены команды", + "vectorSpaceTooltip": "Документы с режимом индексирования высокого качества будут потреблять ресурсы Хранилища Знаний. Когда Хранилище Знаний достигнет предела, новые документы не будут загружены.", + "annotationQuota": "Квота аннотации", + "vectorSpace": "Хранилище данных знаний", + "documentsUploadQuota": "Квота на загрузку документов", + "perMonth": "в месяц", + "triggerEvents": "Триггерные события", + "resetsIn": "Сброс через {{count,number}} дней" + }, + "teamMembers": "Члены команды", + "triggerLimitModal": { + "upgrade": "Обновить", + "dismiss": "Отклонить", + "usageTitle": "СОБЫТИЯ-ИНИЦИАТОРЫ", + "description": "Вы достигли предела триггеров событий рабочего процесса для этого плана.", + "title": "Обновите, чтобы открыть больше событий срабатывания" + }, + "viewBillingTitle": "Платежи и подписки", + "viewBillingDescription": "Управляйте способами оплаты, счетами и изменениями подписки", + "viewBillingAction": "Управлять", + "upgrade": { + "uploadMultiplePages": { + "title": "Обновите версию, чтобы загружать несколько документов одновременно", + "description": "Вы достигли лимита загрузки — на вашем текущем тарифном плане можно выбрать и загрузить только один документ за раз." + }, + "uploadMultipleFiles": { + "title": "Обновите версию, чтобы включить массовую загрузку документов", + "description": "Загружайте больше документов одновременно, чтобы сэкономить время и повысить эффективность." + }, + "addChunks": { + "title": "Обновите версию, чтобы продолжить добавление блоков", + "description": "Вы достигли предела добавления чанков по этому тарифному плану." + } + } +} diff --git a/web/i18n/ru-RU/billing.ts b/web/i18n/ru-RU/billing.ts deleted file mode 100644 index 694e848f04..0000000000 --- a/web/i18n/ru-RU/billing.ts +++ /dev/null @@ -1,221 +0,0 @@ -const translation = { - currentPlan: 'Текущий тарифный план', - upgradeBtn: { - plain: 'Обновить тарифный план', - encourage: 'Обновить сейчас', - encourageShort: 'Обновить', - }, - viewBilling: 'Управление счетами и подписками', - buyPermissionDeniedTip: 'Пожалуйста, свяжитесь с администратором вашей организации, чтобы подписаться', - plansCommon: { - yearlyTip: 'Получите 2 месяца бесплатно, подписавшись на год!', - mostPopular: 'Самый популярный', - planRange: { - monthly: 'Ежемесячно', - yearly: 'Ежегодно', - }, - month: 'месяц', - year: 'год', - save: 'Сэкономить ', - free: 'Бесплатно', - currentPlan: 'Текущий тарифный план', - contractSales: 'Связаться с отделом продаж', - contractOwner: 'Связаться с руководителем команды', - startForFree: 'Начать бесплатно', - contactSales: 'Связаться с отделом продаж', - talkToSales: 'Поговорить с отделом продаж', - modelProviders: 'Поставщики моделей', - annotationQuota: 'Квота аннотаций', - buildApps: 'Создать приложения', - vectorSpace: 'Векторное пространство', - vectorSpaceTooltip: 'Векторное пространство - это система долговременной памяти, необходимая LLM для понимания ваших данных.', - 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). Сообщения, превышающие лимит, будут использовать ваш ключ API OpenAI.', - titlePerMonth: '{{count,number}} сообщений/месяц', - }, - annotatedResponse: { - title: 'Ограничения квоты аннотаций', - tooltip: 'Ручное редактирование и аннотирование ответов обеспечивает настраиваемые высококачественные возможности ответов на вопросы для приложений. (Применимо только в чат-приложениях)', - }, - ragAPIRequestTooltip: 'Относится к количеству вызовов API, вызывающих только возможности обработки базы знаний Dify.', - receiptInfo: 'Только владелец команды и администратор команды могут подписываться и просматривать информацию о выставлении счетов', - cloud: 'Облачный сервис', - annualBilling: 'Ежегодная оплата', - apiRateLimit: 'Ограничение скорости API', - self: 'Самостоятельно размещенный', - teamMember_other: '{{count,number}} Члены команды', - apiRateLimitUnit: '{{count,number}}', - unlimitedApiRate: 'Нет ограничений на количество запросов к API', - freeTrialTip: 'бесплатная пробная версия из 200 вызовов OpenAI.', - freeTrialTipSuffix: 'Кредитная карта не требуется', - teamMember_one: '{{count,number}} Член команды', - getStarted: 'Начать', - teamWorkspace: '{{count,number}} Командное рабочее пространство', - freeTrialTipPrefix: 'Зарегистрируйтесь и получите', - comparePlanAndFeatures: 'Сравните планы и функции', - documents: '{{count,number}} Документов знаний', - documentsRequestQuota: '{{count,number}}/мин Лимит Частоты Запросов на Знание', - apiRateLimitTooltip: 'Ограничение скорости API применяется ко всем запросам, сделанным через API Dify, включая генерацию текста, чатовую переписку, выполнение рабочих процессов и обработку документов.', - documentsRequestQuotaTooltip: 'Указывает общее количество действий, которые рабочая область может выполнять в минуту внутри базы знаний, включая создание, удаление, обновление наборов данных, загрузку документов, модификации, архивирование и запросы к базе знаний. Эта метрика используется для оценки производительности запросов к базе знаний. Например, если пользователь Sandbox выполняет 10 последовательных тестов за один минуту, его рабочая область будет временно ограничена в выполнении следующих действий в течение следующей минуты: создание, удаление, обновление наборов данных и загрузка или модификация документов.', - priceTip: 'по рабочему месту/', - documentsTooltip: 'Квота на количество документов, импортируемых из источника знаний.', - startBuilding: 'Начать строительство', - taxTip: 'Все цены на подписку (ежемесячную/годовую) не включают применимые налоги (например, НДС, налог с продаж).', - taxTipSecond: 'Если в вашем регионе нет применимых налоговых требований, налоги не будут отображаться при оформлении заказа, и с вас не будут взиматься дополнительные сборы за весь срок подписки.', - triggerEvents: { - unlimited: 'Неограниченные триггерные события', - tooltip: 'Количество событий, которые автоматически запускают рабочие процессы с помощью плагина, расписания или вебхука.', - sandbox: '{{count,number}} События триггера', - professional: '{{count,number}} Событий срабатывания/месяц', - }, - workflowExecution: { - faster: 'Более быстрое выполнение рабочих процессов', - standard: 'Стандартное выполнение рабочего процесса', - tooltip: 'Приоритет и скорость выполнения очереди рабочих процессов.', - priority: 'Выполнение рабочего процесса по приоритету', - }, - startNodes: { - unlimited: 'Неограниченные триггеры/рабочий процесс', - limited: 'До {{count}} триггеров/рабочих процессов', - }, - title: { - plans: 'планы', - description: 'Выберите план, который лучше всего соответствует потребностям вашей команды.', - }, - }, - plans: { - sandbox: { - name: 'Песочница', - description: '200 бесплатных пробных использований GPT', - for: 'Бесплатная пробная версия основных возможностей', - }, - professional: { - name: 'Профессиональный', - description: 'Для частных лиц и небольших команд, чтобы разблокировать больше возможностей по доступной цене.', - for: 'Для независимых разработчиков/малых команд', - }, - team: { - name: 'Команда', - description: 'Сотрудничайте без ограничений и наслаждайтесь высочайшей производительностью.', - for: 'Для команд среднего размера', - }, - enterprise: { - name: 'Корпоративный', - description: 'Получите полный набор возможностей и поддержку для крупномасштабных критически важных систем.', - includesTitle: 'Все в командном плане, плюс:', - features: ['Масштабируемые решения для развертывания корпоративного уровня', 'Разрешение на коммерческую лицензию', 'Эксклюзивные корпоративные функции', 'Несколько рабочих пространств и корпоративное управление', 'Единый вход (SSO)', 'Согласованные SLA с партнёрами Dify', 'Расширенные функции безопасности и управления', 'Обновления и обслуживание от Dify официально', 'Профессиональная техническая поддержка'], - price: 'Пользовательский', - priceTip: 'Только годовая подписка', - for: 'Для команд большого размера', - btnText: 'Связаться с отделом продаж', - }, - community: { - features: ['Все основные функции выпущены в публичный репозиторий', 'Единое рабочее пространство', 'Соответствует лицензии с открытым исходным кодом Dify'], - name: 'Сообщество', - btnText: 'Начните с сообщества', - price: 'Свободно', - includesTitle: 'Бесплатные функции:', - description: 'Для отдельных пользователей, малых команд или некоммерческих проектов', - for: 'Для отдельных пользователей, малых команд или некоммерческих проектов', - }, - premium: { - features: ['Самоуправляемая надежность у различных облачных провайдеров', 'Единое рабочее пространство', 'Настройка логотипа и брендинга веб-приложения', 'Приоритетная поддержка по электронной почте и в чате'], - description: 'Для средних организаций и команд', - includesTitle: 'Всё из Сообщества, плюс:', - priceTip: 'На основе облачного маркетплейса', - btnText: 'Получите Премиум в', - comingSoon: 'Поддержка Microsoft Azure и Google Cloud скоро появится', - price: 'Масштабируемый', - for: 'Для средних организаций и команд', - name: 'Премиум', - }, - }, - vectorSpace: { - fullTip: 'Векторное пространство заполнено.', - fullSolution: 'Обновите свой тарифный план, чтобы получить больше места.', - }, - apps: { - fullTip2des: 'Рекомендуется удалить неактивные приложения, чтобы освободить место, или свяжитесь с нами.', - fullTip2: 'Достигнут лимит плана', - contactUs: 'Свяжитесь с нами', - fullTip1des: 'Вы достигли предела создания приложений по этому плану', - fullTip1: 'Обновите, чтобы создать больше приложений', - }, - annotatedResponse: { - fullTipLine1: 'Обновите свой тарифный план, чтобы', - fullTipLine2: 'аннотировать больше разговоров.', - quotaTitle: 'Квота ответов аннотаций', - }, - usagePage: { - buildApps: 'Создавайте приложения', - teamMembers: 'Члены команды', - vectorSpaceTooltip: 'Документы с режимом индексирования высокого качества будут потреблять ресурсы Хранилища Знаний. Когда Хранилище Знаний достигнет предела, новые документы не будут загружены.', - annotationQuota: 'Квота аннотации', - vectorSpace: 'Хранилище данных знаний', - documentsUploadQuota: 'Квота на загрузку документов', - perMonth: 'в месяц', - triggerEvents: 'Триггерные события', - resetsIn: 'Сброс через {{count,number}} дней', - }, - teamMembers: 'Члены команды', - triggerLimitModal: { - upgrade: 'Обновить', - dismiss: 'Отклонить', - usageTitle: 'СОБЫТИЯ-ИНИЦИАТОРЫ', - description: 'Вы достигли предела триггеров событий рабочего процесса для этого плана.', - title: 'Обновите, чтобы открыть больше событий срабатывания', - }, - viewBillingTitle: 'Платежи и подписки', - viewBillingDescription: 'Управляйте способами оплаты, счетами и изменениями подписки', - viewBillingAction: 'Управлять', - upgrade: { - uploadMultiplePages: { - title: 'Обновите версию, чтобы загружать несколько документов одновременно', - description: 'Вы достигли лимита загрузки — на вашем текущем тарифном плане можно выбрать и загрузить только один документ за раз.', - }, - uploadMultipleFiles: { - title: 'Обновите версию, чтобы включить массовую загрузку документов', - description: 'Загружайте больше документов одновременно, чтобы сэкономить время и повысить эффективность.', - }, - addChunks: { - title: 'Обновите версию, чтобы продолжить добавление блоков', - description: 'Вы достигли предела добавления чанков по этому тарифному плану.', - }, - }, -} - -export default translation diff --git a/web/i18n/ru-RU/common.json b/web/i18n/ru-RU/common.json new file mode 100644 index 0000000000..8baf80751c --- /dev/null +++ b/web/i18n/ru-RU/common.json @@ -0,0 +1,785 @@ +{ + "api": { + "success": "Успешно", + "actionSuccess": "Действие выполнено успешно", + "saved": "Сохранено", + "create": "Создано", + "remove": "Удалено", + "actionFailed": "Действие не удалось" + }, + "operation": { + "create": "Создать", + "confirm": "Подтвердить", + "cancel": "Отмена", + "clear": "Очистить", + "save": "Сохранить", + "saveAndEnable": "Сохранить и включить", + "edit": "Редактировать", + "add": "Добавить", + "added": "Добавлено", + "refresh": "Перезапустить", + "reset": "Сбросить", + "search": "Поиск", + "change": "Изменить", + "remove": "Удалить", + "send": "Отправить", + "copy": "Копировать", + "lineBreak": "Разрыв строки", + "sure": "Я уверен", + "download": "Скачать", + "delete": "Удалить", + "settings": "Настройки", + "setup": "Настроить", + "getForFree": "Получить бесплатно", + "reload": "Перезагрузить", + "ok": "ОК", + "log": "Журнал", + "learnMore": "Узнать больше", + "params": "Параметры", + "duplicate": "Дублировать", + "rename": "Переименовать", + "audioSourceUnavailable": "AudioSource недоступен", + "zoomIn": "Увеличить", + "zoomOut": "Уменьшение масштаба", + "openInNewTab": "Открыть в новой вкладке", + "copyImage": "Скопировать изображение", + "close": "Закрывать", + "regenerate": "Регенерировать", + "view": "Вид", + "viewMore": "ПОДРОБНЕЕ", + "saveAndRegenerate": "Сохранение и повторное создание дочерних блоков", + "submit": "Отправить", + "skip": "Корабль", + "imageCopied": "Скопированное изображение", + "deleteApp": "Удалить приложение", + "copied": "Скопированы", + "in": "в", + "viewDetails": "Подробнее", + "format": "Формат", + "more": "Больше", + "downloadFailed": "Скачивание не удалось. Пожалуйста, попробуйте еще раз позже.", + "downloadSuccess": "Загрузка завершена.", + "selectAll": "Выбрать все", + "deSelectAll": "Снять выделение со всех", + "config": "Конфигурация", + "yes": "Да", + "no": "Нет", + "deleteConfirmTitle": "Удалить?", + "confirmAction": "Пожалуйста, подтвердите ваше действие.", + "noSearchResults": "Ничего {{content}} не найдено", + "resetKeywords": "Сбросить ключевые слова", + "selectCount": "{{count}} Выбран", + "searchCount": "Найти {{count}} {{content}}", + "noSearchCount": "0 {{content}}", + "now": "Сейчас" + }, + "errorMsg": { + "fieldRequired": "{{field}} обязательно", + "urlError": "URL должен начинаться с http:// или https://" + }, + "placeholder": { + "input": "Пожалуйста, введите", + "select": "Пожалуйста, выберите", + "search": "Поиск..." + }, + "voice": { + "language": { + "zhHans": "Китайский", + "zhHant": "Традиционный китайский", + "enUS": "Английский", + "deDE": "Немецкий", + "frFR": "Французский", + "esES": "Испанский", + "itIT": "Итальянский", + "thTH": "Тайский", + "idID": "Индонезийский", + "jaJP": "Японский", + "koKR": "Корейский", + "ptBR": "Португальский", + "ruRU": "Русский", + "ukUA": "Украинский", + "viVN": "Вьетнамский", + "plPL": "Польский", + "roRO": "Румынский", + "hiIN": "Хинди", + "trTR": "Турецкий", + "faIR": "Персидский", + "slSI": "Словенский", + "arTN": "Тунисский арабский" + } + }, + "unit": { + "char": "символов" + }, + "actionMsg": { + "noModification": "На данный момент нет изменений.", + "modifiedSuccessfully": "Изменено успешно", + "modifiedUnsuccessfully": "Изменено неудачно", + "copySuccessfully": "Скопировано успешно", + "paySucceeded": "Оплата прошла успешно", + "payCancelled": "Оплата отменена", + "generatedSuccessfully": "Сгенерировано успешно", + "generatedUnsuccessfully": "Сгенерировано неудачно" + }, + "model": { + "params": { + "temperature": "Temperature", + "temperatureTip": "Контролирует случайность: более низкое значение приводит к менее случайным завершениям. По мере приближения температуры к нулю модель станет детерминированной и повторяющейся.", + "top_p": "Top P", + "top_pTip": "Контролирует разнообразие с помощью ядерной выборки: 0,5 означает, что рассматривается половина всех вариантов, взвешенных по вероятности.", + "presence_penalty": "Presence penalty", + "presence_penaltyTip": "Насколько штрафовать новые токены в зависимости от того, появляются ли они в тексте до сих пор.\nУвеличивает вероятность того, что модель будет говорить о новых темах.", + "frequency_penalty": "Frequency penalty", + "frequency_penaltyTip": "Насколько штрафовать новые токены в зависимости от их существующей частоты в тексте до сих пор.\nУменьшает вероятность того, что модель будет повторять одну и ту же строку дословно.", + "max_tokens": "Максимальное количество токенов", + "max_tokensTip": "Используется для ограничения максимальной длины ответа в токенах. \nБольшие значения могут ограничивать пространство, оставленное для подсказок, журналов чата и знаний. \nРекомендуется установить его ниже двух третей\ngpt-4-1106-preview, gpt-4-vision-preview max token (input 128k output 4k)", + "maxTokenSettingTip": "Ваша настройка максимального количества токенов высока, что потенциально ограничивает пространство для подсказок, запросов и данных. Подумайте о том, чтобы установить его ниже 2/3.", + "setToCurrentModelMaxTokenTip": "Максимальное количество токенов обновлено до 80% максимального количества токенов текущей модели {{maxToken}}.", + "stop_sequences": "Стоп-последовательности", + "stop_sequencesTip": "До четырех последовательностей, где API прекратит генерировать дальнейшие токены. Возвращаемый текст не будет содержать стоп-последовательность.", + "stop_sequencesPlaceholder": "Введите последовательность и нажмите Tab" + }, + "tone": { + "Creative": "Творческий", + "Balanced": "Сбалансированный", + "Precise": "Точный", + "Custom": "Пользовательский" + }, + "addMoreModel": "Перейдите в настройки, чтобы добавить больше моделей", + "capabilities": "Мультимодальные возможности", + "settingsLink": "Настройки поставщика моделей" + }, + "menus": { + "status": "бета", + "explore": "Исследовать", + "apps": "Студия", + "plugins": "Плагины", + "pluginsTips": "Интегрируйте сторонние плагины или создавайте совместимые с ChatGPT AI-плагины.", + "datasets": "Знания", + "datasetsTips": "СКОРО: Импортируйте свои собственные текстовые данные или записывайте данные в режиме реального времени через Webhook для улучшения контекста LLM.", + "newApp": "Новое приложение", + "newDataset": "Создать знания", + "tools": "Инструменты", + "exploreMarketplace": "Подробнее о Marketplace", + "appDetail": "Детали приложения", + "account": "Учетная запись" + }, + "userProfile": { + "settings": "Настройки", + "emailSupport": "Поддержка по электронной почте", + "workspace": "Рабочее пространство", + "createWorkspace": "Создать рабочее пространство", + "helpCenter": "Помощь", + "roadmap": "План развития", + "community": "Сообщество", + "about": "О нас", + "logout": "Выйти", + "github": "ГитХаб", + "compliance": "Соблюдение", + "support": "Поддержка", + "contactUs": "Свяжитесь с нами", + "forum": "Форум" + }, + "settings": { + "accountGroup": "АККАУНТ", + "workplaceGroup": "РАБОЧЕЕ ПРОСТРАНСТВО", + "account": "Моя учетная запись", + "members": "Участники", + "billing": "Оплата", + "integrations": "Интеграции", + "language": "Язык", + "provider": "Поставщик модели", + "dataSource": "Источник данных", + "plugin": "Плагины", + "apiBasedExtension": "API расширение", + "generalGroup": "ОБЩЕЕ" + }, + "account": { + "avatar": "Аватар", + "name": "Имя", + "email": "Электронная почта", + "password": "Пароль", + "passwordTip": "Вы можете установить постоянный пароль, если не хотите использовать временные коды входа", + "setPassword": "Установить пароль", + "resetPassword": "Сбросить пароль", + "currentPassword": "Текущий пароль", + "newPassword": "Новый пароль", + "confirmPassword": "Подтвердите пароль", + "notEqual": "Два пароля различаются.", + "langGeniusAccount": "Учетная запись Dify", + "langGeniusAccountTip": "Ваша учетная запись Dify и связанные с ней пользовательские данные.", + "editName": "Редактировать имя", + "showAppLength": "Показать {{length}} приложений", + "delete": "Удалить учетную запись", + "deleteTip": "Удаление вашей учетной записи приведет к безвозвратному удалению всех ваших данных, и их невозможно будет восстановить.", + "account": "Счет", + "studio": "Студия Dify", + "myAccount": "Моя учетная запись", + "deletePrivacyLink": "Политика конфиденциальности.", + "deletePlaceholder": "Пожалуйста, введите свой адрес электронной почты", + "sendVerificationButton": "Отправить код подтверждения", + "verificationLabel": "Проверочный код", + "verificationPlaceholder": "Вставьте 6-значный код", + "feedbackTitle": "Обратная связь", + "feedbackLabel": "Расскажите нам, почему вы удалили свой аккаунт?", + "feedbackPlaceholder": "Необязательный", + "permanentlyDeleteButton": "Окончательно удалить учетную запись", + "deleteLabel": "Для подтверждения, пожалуйста, введите свой адрес электронной почты ниже", + "deleteSuccessTip": "Вашему аккаунту требуется время, чтобы завершить удаление. Мы свяжемся с вами по электронной почте, когда все будет готово.", + "deletePrivacyLinkTip": "Для получения дополнительной информации о том, как мы обрабатываем ваши данные, ознакомьтесь с нашим", + "workspaceIcon": "Иконка рабочего пространства", + "workspaceName": "Название рабочего пространства", + "editWorkspaceInfo": "Редактировать информацию о рабочем пространстве", + "changeEmail": { + "resendTip": "Не получили код?", + "codePlaceholder": "Вставьте 6-значный код", + "emailLabel": "Новое письмо", + "codeLabel": "Код подтверждения", + "resend": "Переслать", + "continue": "Продолжайте", + "emailPlaceholder": "Введите новый адрес электронной почты", + "resendCount": "Отправьте снова через {{count}}с", + "newEmail": "Создайте новый адрес электронной почты", + "sendVerifyCode": "Отправить код проверки", + "title": "Сменить электронную почту", + "changeTo": "Изменить на {{email}}", + "existingEmail": "Пользователь с этим адресом электронной почты уже существует.", + "verifyNew": "Подтвердите ваш новый адрес электронной почты", + "verifyEmail": "Подтвердите ваш текущий адрес электронной почты", + "content2": "Ваш текущий электронный адрес: {{email}}. Код подтверждения был отправлен на этот адрес электронной почты.", + "content4": "Мы только что отправили вам временный код подтверждения на {{email}}.", + "content3": "Введите новый адрес электронной почты, и мы отправим вам код подтверждения.", + "content1": "Если вы продолжите, мы отправим код подтверждения на {{email}} для повторной аутентификации.", + "authTip": "После изменения вашего адреса электронной почты учетные записи Google или GitHub, связанные с вашим старым адресом, больше не смогут войти в эту учетную запись.", + "unAvailableEmail": "Этот email временно недоступен." + } + }, + "members": { + "team": "Команда", + "invite": "Добавить", + "name": "ИМЯ", + "lastActive": "ПОСЛЕДНЯЯ АКТИВНОСТЬ", + "role": "РОЛИ", + "pending": "Ожидание...", + "owner": "Владелец", + "admin": "Администратор", + "adminTip": "Может создавать приложения и управлять настройками команды", + "normal": "Обычный", + "normalTip": "Может только использовать приложения, не может создавать приложения", + "builder": "Разработчик", + "builderTip": "Может создавать и редактировать собственные приложения", + "editor": "Редактор", + "editorTip": "Может создавать и редактировать приложения", + "datasetOperator": "Администратор знаний", + "datasetOperatorTip": "Может управлять только базой знаний", + "inviteTeamMember": "Добавить участника команды", + "inviteTeamMemberTip": "Они могут получить доступ к данным вашей команды сразу после входа в систему.", + "emailNotSetup": "Почтовый сервер не настроен, поэтому приглашения по электронной почте не могут быть отправлены. Пожалуйста, уведомите пользователей о ссылке для приглашения, которая будет выдана после приглашения.", + "email": "Электронная почта", + "emailInvalid": "Неверный формат электронной почты", + "emailPlaceholder": "Пожалуйста, введите адреса электронной почты", + "sendInvite": "Отправить приглашение", + "invitedAsRole": "Приглашен как пользователь с ролью {{role}}", + "invitationSent": "Приглашение отправлено", + "invitationSentTip": "Приглашение отправлено, и они могут войти в Dify, чтобы получить доступ к данным вашей команды.", + "invitationLink": "Ссылка для приглашения", + "failedInvitationEmails": "Следующие пользователи не были успешно приглашены", + "ok": "ОК", + "removeFromTeam": "Удалить из команды", + "removeFromTeamTip": "Удалить доступ к команде", + "setAdmin": "Назначить администратором", + "setMember": "Назначить обычным участником", + "setBuilder": "Назначить разработчиком", + "setEditor": "Назначить редактором", + "disInvite": "Отменить приглашение", + "deleteMember": "Удалить участника", + "you": "(Вы)", + "transferModal": { + "sendVerifyCode": "Отправить код проверки", + "transferPlaceholder": "Выберите участника рабочего пространства…", + "resendCount": "Отправьте снова через {{count}}с", + "resend": "Переслать", + "codePlaceholder": "Вставьте 6-значный код", + "resendTip": "Не получили код?", + "continue": "Продолжайте", + "transfer": "Передать права собственности на рабочую область", + "warningTip": "Вы станете администратором, и новый владелец получит полный контроль.", + "transferLabel": "Передать право собственности на рабочее пространство на", + "codeLabel": "Код подтверждения", + "verifyContent2": "Мы отправим временный код для проверки на этот электронный адрес для повторной аутентификации.", + "verifyEmail": "Подтвердите ваш текущий адрес электронной почты", + "verifyContent": "Ваш текущий адрес электронной почты: {{email}}.", + "title": "Передать права собственности на рабочую область", + "warning": "Вы собираетесь передать право собственности на «{{workspace}}». Это вступает в силу немедленно и не может быть отменено.", + "sendTip": "Если вы продолжите, мы отправим код подтверждения на {{email}} для повторной аутентификации." + }, + "transferOwnership": "Передать право собственности" + }, + "integrations": { + "connected": "Подключено", + "google": "Google", + "googleAccount": "Войти с помощью учетной записи Google", + "github": "GitHub", + "githubAccount": "Войти с помощью учетной записи GitHub", + "connect": "Подключить" + }, + "language": { + "displayLanguage": "Язык отображения", + "timezone": "Часовой пояс" + }, + "provider": { + "apiKey": "Ключ API", + "enterYourKey": "Введите свой ключ API здесь", + "invalidKey": "Неверный ключ API OpenAI", + "validatedError": "Ошибка валидации: ", + "validating": "Проверка ключа...", + "saveFailed": "Ошибка сохранения ключа API", + "apiKeyExceedBill": "Этот API-ключ не имеет доступной квоты, пожалуйста, прочитайте", + "addKey": "Добавить ключ", + "comingSoon": "Скоро", + "editKey": "Редактировать", + "invalidApiKey": "Неверный ключ API", + "azure": { + "apiBase": "Базовый API", + "apiBasePlaceholder": "Базовый URL-адрес API вашей конечной точки Azure OpenAI.", + "apiKey": "Ключ API", + "apiKeyPlaceholder": "Введите свой ключ API здесь", + "helpTip": "Узнать о службе Azure OpenAI" + }, + "openaiHosted": { + "openaiHosted": "Размещенный OpenAI", + "onTrial": "ПРОБНАЯ ВЕРСИЯ", + "exhausted": "КВОТА ИСЧЕРПАНА", + "desc": "Хостинговая служба OpenAI, предоставляемая Dify, позволяет вам использовать такие модели, как GPT-3.5. Прежде чем ваша пробная квота будет исчерпана, вам необходимо настроить других поставщиков моделей.", + "callTimes": "Количество вызовов", + "usedUp": "Пробная квота исчерпана. Добавьте собственного поставщика модели.", + "useYourModel": "В настоящее время используется собственный поставщик модели.", + "close": "Закрыть" + }, + "anthropicHosted": { + "anthropicHosted": "Anthropic Claude", + "onTrial": "ПРОБНАЯ ВЕРСИЯ", + "exhausted": "КВОТА ИСЧЕРПАНА", + "desc": "Мощная модель, которая отлично справляется с широким спектром задач, от сложных диалогов и создания творческого контента до подробных инструкций.", + "callTimes": "Количество вызовов", + "usedUp": "Пробная квота исчерпана. Добавьте собственного поставщика модели.", + "useYourModel": "В настоящее время используется собственный поставщик модели.", + "close": "Закрыть", + "trialQuotaTip": "Ваша квота на пробную версию Anthropic истечет 11.03.2025 и больше не будет доступна. Пожалуйста, используйте его вовремя." + }, + "anthropic": { + "using": "Возможность встраивания использует", + "enableTip": "Чтобы включить модель Anthropic, вам необходимо сначала привязаться к OpenAI или Azure OpenAI Service.", + "notEnabled": "Не включено", + "keyFrom": "Получите свой ключ API от Anthropic" + }, + "encrypted": { + "front": "Ваш API-ключ будет зашифрован и сохранен с использованием", + "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-КЛЮЧ", + "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-ключ будет зашифрован и сохранен с использованием", + "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": "По умолчанию балансировка нагрузки использует стратегию Round-robin. Если срабатывает ограничение скорости, будет применен 1-минутный период охлаждения.", + "upgradeForLoadBalancing": "Обновите свой тарифный план, чтобы включить балансировку нагрузки.", + "emptyProviderTitle": "Поставщик модели не настроен", + "toBeConfigured": "Подлежит настройке", + "configureTip": "Настройте api-ключ или добавьте модель для использования", + "emptyProviderTip": "Сначала установите поставщик модели.", + "discoverMore": "Узнайте больше в", + "installProvider": "Установка поставщиков моделей", + "auth": { + "apiKeyModal": { + "addModel": "Добавить модель", + "title": "Конфигурация авторизации ключа API", + "desc": "После настройки учетных данных все члены рабочей области могут использовать эту модель при оркестрации приложений." + }, + "authRemoved": "Удалена аутентификация", + "addApiKey": "Добавьте API-ключ", + "addCredential": "Добавить учетные данные", + "apiKeys": "API ключи", + "authorizationError": "Ошибка авторизации", + "modelCredentials": "Учетные данные модели", + "configModel": "Настройка модели", + "providerManaged": "Управляемый провайдером", + "unAuthorized": "Неавторизованный", + "specifyModelCredential": "Укажите учетные данные модели", + "addNewModel": "Добавить новую модель", + "addModelCredential": "Добавить учетные данные модели", + "configLoadBalancing": "Конфигурация балансировки нагрузки", + "providerManagedTip": "Текущая конфигурация размещена у провайдера.", + "specifyModelCredentialTip": "Используйте конфигурированные учетные данные модели.", + "removeModel": "Удалить модель", + "addModel": "Добавить модель", + "modelCredential": "Удостоверение модели", + "editModelCredential": "Редактирование учетных данных модели", + "selectModelCredential": "Выбор учетных данных модели", + "addNewModelCredential": "Добавление новых учетных данных модели", + "customModelCredentials": "Учетные данные пользовательской модели", + "manageCredentials": "Управление учетными данными", + "customModelCredentialsDeleteTip": "Учетные данные используются и не могут быть удалены" + }, + "parametersInvalidRemoved": "Некоторые параметры недействительны и были удалены", + "installDataSourceProvider": "Установить поставщиков источников данных" + }, + "dataSource": { + "add": "Добавить источник данных", + "connect": "Подключить", + "configure": "Настроить", + "notion": { + "title": "Notion", + "description": "Использование Notion в качестве источника данных для знаний.", + "connectedWorkspace": "Подключенное рабочее пространство", + "addWorkspace": "Добавить рабочее пространство", + "connected": "Подключено", + "disconnected": "Отключено", + "changeAuthorizedPages": "Изменить авторизованные страницы", + "pagesAuthorized": "Авторизованные страницы", + "sync": "Синхронизировать", + "remove": "Удалить", + "selector": { + "pageSelected": "Выбранные страницы", + "searchPages": "Поиск страниц...", + "noSearchResult": "Нет результатов поиска", + "addPages": "Добавить страницы", + "preview": "ПРЕДПРОСМОТР" + }, + "integratedAlert": "Notion интегрирован через внутренние учетные данные, нет необходимости повторной авторизации." + }, + "website": { + "title": "Веб-сайт", + "description": "Импортировать контент с веб-сайтов с помощью веб-краулера.", + "with": "С", + "configuredCrawlers": "Настроенные краулеры", + "active": "Активный", + "inactive": "Неактивный" + } + }, + "plugin": { + "serpapi": { + "apiKey": "Ключ API", + "apiKeyPlaceholder": "Введите свой ключ API", + "keyFrom": "Получите свой ключ SerpAPI на странице учетной записи SerpAPI" + } + }, + "apiBasedExtension": { + "title": "API-расширения обеспечивают централизованное управление API, упрощая настройку для удобного использования в приложениях Dify.", + "link": "Узнайте, как разработать собственное API-расширение.", + "add": "Добавить API Extension", + "selector": { + "title": "API Extension", + "placeholder": "Пожалуйста, выберите API-расширение", + "manage": "Управление API-расширением" + }, + "modal": { + "title": "Добавить API-расширение", + "editTitle": "Редактировать API-расширение", + "name": { + "title": "Имя", + "placeholder": "Пожалуйста, введите имя" + }, + "apiEndpoint": { + "title": "API Endpoint", + "placeholder": "Пожалуйста, введите конечную точку API" + }, + "apiKey": { + "title": "API-ключ", + "placeholder": "Пожалуйста, введите API-ключ", + "lengthError": "Длина API-ключа не может быть меньше 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": "связанные приложения", + "noRelatedApp": "Нет связанных приложений", + "pipeline": "Трубопровод" + }, + "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": "Оценка совпадения:" + }, + "inputPlaceholder": "Поговорить с ботом", + "thinking": "Мыслящий...", + "thought": "Мысль", + "resend": "Переслать" + }, + "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}} МБ", + "pasteImageLink": "Вставить ссылку на изображение", + "pasteImageLinkInputPlaceholder": "Вставьте ссылку на изображение здесь", + "pasteImageLinkInvalid": "Неверная ссылка на изображение", + "imageUpload": "Загрузка изображения" + }, + "tag": { + "placeholder": "Все теги", + "addNew": "Добавить новый тег", + "noTag": "Нет тегов", + "noTagYet": "Еще нет тегов", + "addTag": "Добавить теги", + "editTag": "Редактировать теги", + "manageTags": "Управление тегами", + "selectorPlaceholder": "Введите для поиска или создания", + "create": "Создать", + "delete": "Удалить тег", + "deleteTip": "Тег используется, удалить его?", + "created": "Тег успешно создан", + "failed": "Ошибка создания тега" + }, + "fileUploader": { + "pasteFileLinkInputPlaceholder": "Введите URL...", + "pasteFileLink": "Вставить ссылку на файл", + "uploadFromComputer": "Локальная загрузка", + "fileExtensionNotSupport": "Расширение файла не поддерживается", + "uploadFromComputerReadError": "Чтение файла не удалось, пожалуйста, повторите попытку.", + "pasteFileLinkInvalid": "Неверная ссылка на файл", + "uploadFromComputerLimit": "Файл загрузки не может превышать {{size}}", + "uploadFromComputerUploadError": "Загрузка файла не удалась, пожалуйста, загрузите еще раз.", + "fileExtensionBlocked": "Этот тип файла заблокирован по соображениям безопасности", + "uploadDisabled": "Загрузка файлов отключена" + }, + "license": { + "expiring": "Срок действия истекает за один день", + "expiring_plural": "Срок действия истекает через {{count}} дней", + "unlimited": "Неограниченный" + }, + "pagination": { + "perPage": "Элементов на странице" + }, + "theme": { + "light": "свет", + "dark": "темный", + "theme": "Тема", + "auto": "система" + }, + "compliance": { + "soc2Type2": "Отчет SOC 2 Тип II", + "gdpr": "GDPR DPA", + "professionalUpgradeTooltip": "Доступно только с командным планом или выше.", + "iso27001": "Сертификация ISO 27001:2022", + "sandboxUpgradeTooltip": "Доступно только с профессиональным или командным планом.", + "soc2Type1": "Отчет SOC 2 Тип I" + }, + "imageInput": { + "browse": "просмотр", + "dropImageHere": "Перетащите ваше изображение сюда или", + "supportedFormats": "Поддерживает PNG, JPG, JPEG, WEBP и GIF" + }, + "you": "Ты", + "avatar": { + "deleteTitle": "Удалить аватар", + "deleteDescription": "Вы уверены, что хотите удалить свою фотографию профиля? Ваш аккаунт будет использовать стандартный аватар." + }, + "feedback": { + "title": "Оставить отзыв", + "content": "Содержимое обратной связи", + "placeholder": "Пожалуйста, опишите, что пошло не так или как мы можем улучшиться...", + "subtitle": "Пожалуйста, сообщите нам, что пошло не так с этим ответом" + }, + "label": { + "optional": "(необязательно)" + }, + "noData": "Нет данных", + "dynamicSelect": { + "error": "Не удалось загрузить параметры", + "noData": "Нет доступных вариантов", + "loading": "Загрузка параметров...", + "selected": "{{count}} выбрано" + } +} diff --git a/web/i18n/ru-RU/common.ts b/web/i18n/ru-RU/common.ts deleted file mode 100644 index ae8b2e558f..0000000000 --- a/web/i18n/ru-RU/common.ts +++ /dev/null @@ -1,792 +0,0 @@ -const translation = { - api: { - success: 'Успешно', - actionSuccess: 'Действие выполнено успешно', - saved: 'Сохранено', - create: 'Создано', - remove: 'Удалено', - actionFailed: 'Действие не удалось', - }, - operation: { - create: 'Создать', - confirm: 'Подтвердить', - cancel: 'Отмена', - clear: 'Очистить', - save: 'Сохранить', - saveAndEnable: 'Сохранить и включить', - edit: 'Редактировать', - add: 'Добавить', - added: 'Добавлено', - refresh: 'Перезапустить', - reset: 'Сбросить', - search: 'Поиск', - change: 'Изменить', - remove: 'Удалить', - send: 'Отправить', - copy: 'Копировать', - lineBreak: 'Разрыв строки', - sure: 'Я уверен', - download: 'Скачать', - delete: 'Удалить', - settings: 'Настройки', - setup: 'Настроить', - getForFree: 'Получить бесплатно', - reload: 'Перезагрузить', - ok: 'ОК', - log: 'Журнал', - learnMore: 'Узнать больше', - params: 'Параметры', - duplicate: 'Дублировать', - rename: 'Переименовать', - audioSourceUnavailable: 'AudioSource недоступен', - zoomIn: 'Увеличить', - zoomOut: 'Уменьшение масштаба', - openInNewTab: 'Открыть в новой вкладке', - copyImage: 'Скопировать изображение', - close: 'Закрывать', - regenerate: 'Регенерировать', - view: 'Вид', - viewMore: 'ПОДРОБНЕЕ', - saveAndRegenerate: 'Сохранение и повторное создание дочерних блоков', - submit: 'Отправить', - skip: 'Корабль', - imageCopied: 'Скопированное изображение', - deleteApp: 'Удалить приложение', - copied: 'Скопированы', - in: 'в', - viewDetails: 'Подробнее', - format: 'Формат', - more: 'Больше', - downloadFailed: 'Скачивание не удалось. Пожалуйста, попробуйте еще раз позже.', - downloadSuccess: 'Загрузка завершена.', - selectAll: 'Выбрать все', - deSelectAll: 'Снять выделение со всех', - config: 'Конфигурация', - yes: 'Да', - no: 'Нет', - deleteConfirmTitle: 'Удалить?', - confirmAction: 'Пожалуйста, подтвердите ваше действие.', - noSearchResults: 'Ничего {{content}} не найдено', - resetKeywords: 'Сбросить ключевые слова', - selectCount: '{{count}} Выбран', - searchCount: 'Найти {{count}} {{content}}', - noSearchCount: '0 {{content}}', - now: 'Сейчас', - }, - errorMsg: { - fieldRequired: '{{field}} обязательно', - urlError: 'URL должен начинаться с http:// или https://', - }, - placeholder: { - input: 'Пожалуйста, введите', - select: 'Пожалуйста, выберите', - search: 'Поиск...', - }, - voice: { - language: { - zhHans: 'Китайский', - zhHant: 'Традиционный китайский', - enUS: 'Английский', - deDE: 'Немецкий', - frFR: 'Французский', - esES: 'Испанский', - itIT: 'Итальянский', - thTH: 'Тайский', - idID: 'Индонезийский', - jaJP: 'Японский', - koKR: 'Корейский', - ptBR: 'Португальский', - ruRU: 'Русский', - ukUA: 'Украинский', - viVN: 'Вьетнамский', - plPL: 'Польский', - roRO: 'Румынский', - hiIN: 'Хинди', - trTR: 'Турецкий', - faIR: 'Персидский', - slSI: 'Словенский', - arTN: 'Тунисский арабский', - }, - }, - unit: { - char: 'символов', - }, - actionMsg: { - noModification: 'На данный момент нет изменений.', - modifiedSuccessfully: 'Изменено успешно', - modifiedUnsuccessfully: 'Изменено неудачно', - copySuccessfully: 'Скопировано успешно', - paySucceeded: 'Оплата прошла успешно', - payCancelled: 'Оплата отменена', - generatedSuccessfully: 'Сгенерировано успешно', - generatedUnsuccessfully: 'Сгенерировано неудачно', - }, - model: { - params: { - temperature: 'Temperature', - temperatureTip: - 'Контролирует случайность: более низкое значение приводит к менее случайным завершениям. По мере приближения температуры к нулю модель станет детерминированной и повторяющейся.', - top_p: 'Top P', - top_pTip: - 'Контролирует разнообразие с помощью ядерной выборки: 0,5 означает, что рассматривается половина всех вариантов, взвешенных по вероятности.', - presence_penalty: 'Presence penalty', - presence_penaltyTip: - 'Насколько штрафовать новые токены в зависимости от того, появляются ли они в тексте до сих пор.\nУвеличивает вероятность того, что модель будет говорить о новых темах.', - frequency_penalty: 'Frequency penalty', - frequency_penaltyTip: - 'Насколько штрафовать новые токены в зависимости от их существующей частоты в тексте до сих пор.\nУменьшает вероятность того, что модель будет повторять одну и ту же строку дословно.', - max_tokens: 'Максимальное количество токенов', - max_tokensTip: - 'Используется для ограничения максимальной длины ответа в токенах. \nБольшие значения могут ограничивать пространство, оставленное для подсказок, журналов чата и знаний. \nРекомендуется установить его ниже двух третей\ngpt-4-1106-preview, gpt-4-vision-preview max token (input 128k output 4k)', - maxTokenSettingTip: 'Ваша настройка максимального количества токенов высока, что потенциально ограничивает пространство для подсказок, запросов и данных. Подумайте о том, чтобы установить его ниже 2/3.', - setToCurrentModelMaxTokenTip: 'Максимальное количество токенов обновлено до 80% максимального количества токенов текущей модели {{maxToken}}.', - stop_sequences: 'Стоп-последовательности', - stop_sequencesTip: 'До четырех последовательностей, где API прекратит генерировать дальнейшие токены. Возвращаемый текст не будет содержать стоп-последовательность.', - stop_sequencesPlaceholder: 'Введите последовательность и нажмите Tab', - }, - tone: { - Creative: 'Творческий', - Balanced: 'Сбалансированный', - Precise: 'Точный', - Custom: 'Пользовательский', - }, - addMoreModel: 'Перейдите в настройки, чтобы добавить больше моделей', - capabilities: 'Мультимодальные возможности', - settingsLink: 'Настройки поставщика моделей', - }, - menus: { - status: 'бета', - explore: 'Исследовать', - apps: 'Студия', - plugins: 'Плагины', - pluginsTips: 'Интегрируйте сторонние плагины или создавайте совместимые с ChatGPT AI-плагины.', - datasets: 'Знания', - datasetsTips: 'СКОРО: Импортируйте свои собственные текстовые данные или записывайте данные в режиме реального времени через Webhook для улучшения контекста LLM.', - newApp: 'Новое приложение', - newDataset: 'Создать знания', - tools: 'Инструменты', - exploreMarketplace: 'Подробнее о Marketplace', - appDetail: 'Детали приложения', - account: 'Учетная запись', - }, - userProfile: { - settings: 'Настройки', - emailSupport: 'Поддержка по электронной почте', - workspace: 'Рабочее пространство', - createWorkspace: 'Создать рабочее пространство', - helpCenter: 'Помощь', - roadmap: 'План развития', - community: 'Сообщество', - about: 'О нас', - logout: 'Выйти', - github: 'ГитХаб', - compliance: 'Соблюдение', - support: 'Поддержка', - contactUs: 'Свяжитесь с нами', - forum: 'Форум', - }, - settings: { - accountGroup: 'АККАУНТ', - workplaceGroup: 'РАБОЧЕЕ ПРОСТРАНСТВО', - account: 'Моя учетная запись', - members: 'Участники', - billing: 'Оплата', - integrations: 'Интеграции', - language: 'Язык', - provider: 'Поставщик модели', - dataSource: 'Источник данных', - plugin: 'Плагины', - apiBasedExtension: 'API расширение', - generalGroup: 'ОБЩЕЕ', - }, - account: { - avatar: 'Аватар', - name: 'Имя', - email: 'Электронная почта', - password: 'Пароль', - passwordTip: 'Вы можете установить постоянный пароль, если не хотите использовать временные коды входа', - setPassword: 'Установить пароль', - resetPassword: 'Сбросить пароль', - currentPassword: 'Текущий пароль', - newPassword: 'Новый пароль', - confirmPassword: 'Подтвердите пароль', - notEqual: 'Два пароля различаются.', - langGeniusAccount: 'Учетная запись Dify', - langGeniusAccountTip: 'Ваша учетная запись Dify и связанные с ней пользовательские данные.', - editName: 'Редактировать имя', - showAppLength: 'Показать {{length}} приложений', - delete: 'Удалить учетную запись', - deleteTip: 'Удаление вашей учетной записи приведет к безвозвратному удалению всех ваших данных, и их невозможно будет восстановить.', - account: 'Счет', - studio: 'Студия Dify', - myAccount: 'Моя учетная запись', - deletePrivacyLink: 'Политика конфиденциальности.', - deletePlaceholder: 'Пожалуйста, введите свой адрес электронной почты', - sendVerificationButton: 'Отправить код подтверждения', - verificationLabel: 'Проверочный код', - verificationPlaceholder: 'Вставьте 6-значный код', - feedbackTitle: 'Обратная связь', - feedbackLabel: 'Расскажите нам, почему вы удалили свой аккаунт?', - feedbackPlaceholder: 'Необязательный', - permanentlyDeleteButton: 'Окончательно удалить учетную запись', - deleteLabel: 'Для подтверждения, пожалуйста, введите свой адрес электронной почты ниже', - deleteSuccessTip: 'Вашему аккаунту требуется время, чтобы завершить удаление. Мы свяжемся с вами по электронной почте, когда все будет готово.', - deletePrivacyLinkTip: 'Для получения дополнительной информации о том, как мы обрабатываем ваши данные, ознакомьтесь с нашим', - workspaceIcon: 'Иконка рабочего пространства', - workspaceName: 'Название рабочего пространства', - editWorkspaceInfo: 'Редактировать информацию о рабочем пространстве', - changeEmail: { - resendTip: 'Не получили код?', - codePlaceholder: 'Вставьте 6-значный код', - emailLabel: 'Новое письмо', - codeLabel: 'Код подтверждения', - resend: 'Переслать', - continue: 'Продолжайте', - emailPlaceholder: 'Введите новый адрес электронной почты', - resendCount: 'Отправьте снова через {{count}}с', - newEmail: 'Создайте новый адрес электронной почты', - sendVerifyCode: 'Отправить код проверки', - title: 'Сменить электронную почту', - changeTo: 'Изменить на {{email}}', - existingEmail: 'Пользователь с этим адресом электронной почты уже существует.', - verifyNew: 'Подтвердите ваш новый адрес электронной почты', - verifyEmail: 'Подтвердите ваш текущий адрес электронной почты', - content2: 'Ваш текущий электронный адрес: {{email}}. Код подтверждения был отправлен на этот адрес электронной почты.', - content4: 'Мы только что отправили вам временный код подтверждения на {{email}}.', - content3: 'Введите новый адрес электронной почты, и мы отправим вам код подтверждения.', - content1: 'Если вы продолжите, мы отправим код подтверждения на {{email}} для повторной аутентификации.', - authTip: 'После изменения вашего адреса электронной почты учетные записи Google или GitHub, связанные с вашим старым адресом, больше не смогут войти в эту учетную запись.', - unAvailableEmail: 'Этот email временно недоступен.', - }, - }, - members: { - team: 'Команда', - invite: 'Добавить', - name: 'ИМЯ', - lastActive: 'ПОСЛЕДНЯЯ АКТИВНОСТЬ', - role: 'РОЛИ', - pending: 'Ожидание...', - owner: 'Владелец', - admin: 'Администратор', - adminTip: 'Может создавать приложения и управлять настройками команды', - normal: 'Обычный', - normalTip: 'Может только использовать приложения, не может создавать приложения', - builder: 'Разработчик', - builderTip: 'Может создавать и редактировать собственные приложения', - editor: 'Редактор', - editorTip: 'Может создавать и редактировать приложения', - datasetOperator: 'Администратор знаний', - datasetOperatorTip: 'Может управлять только базой знаний', - inviteTeamMember: 'Добавить участника команды', - inviteTeamMemberTip: 'Они могут получить доступ к данным вашей команды сразу после входа в систему.', - emailNotSetup: 'Почтовый сервер не настроен, поэтому приглашения по электронной почте не могут быть отправлены. Пожалуйста, уведомите пользователей о ссылке для приглашения, которая будет выдана после приглашения.', - email: 'Электронная почта', - emailInvalid: 'Неверный формат электронной почты', - emailPlaceholder: 'Пожалуйста, введите адреса электронной почты', - sendInvite: 'Отправить приглашение', - invitedAsRole: 'Приглашен как пользователь с ролью {{role}}', - invitationSent: 'Приглашение отправлено', - invitationSentTip: 'Приглашение отправлено, и они могут войти в Dify, чтобы получить доступ к данным вашей команды.', - invitationLink: 'Ссылка для приглашения', - failedInvitationEmails: 'Следующие пользователи не были успешно приглашены', - ok: 'ОК', - removeFromTeam: 'Удалить из команды', - removeFromTeamTip: 'Удалить доступ к команде', - setAdmin: 'Назначить администратором', - setMember: 'Назначить обычным участником', - setBuilder: 'Назначить разработчиком', - setEditor: 'Назначить редактором', - disInvite: 'Отменить приглашение', - deleteMember: 'Удалить участника', - you: '(Вы)', - transferModal: { - sendVerifyCode: 'Отправить код проверки', - transferPlaceholder: 'Выберите участника рабочего пространства…', - resendCount: 'Отправьте снова через {{count}}с', - resend: 'Переслать', - codePlaceholder: 'Вставьте 6-значный код', - resendTip: 'Не получили код?', - continue: 'Продолжайте', - transfer: 'Передать права собственности на рабочую область', - warningTip: 'Вы станете администратором, и новый владелец получит полный контроль.', - transferLabel: 'Передать право собственности на рабочее пространство на', - codeLabel: 'Код подтверждения', - verifyContent2: 'Мы отправим временный код для проверки на этот электронный адрес для повторной аутентификации.', - verifyEmail: 'Подтвердите ваш текущий адрес электронной почты', - verifyContent: 'Ваш текущий адрес электронной почты: {{email}}.', - title: 'Передать права собственности на рабочую область', - warning: 'Вы собираетесь передать право собственности на «{{workspace}}». Это вступает в силу немедленно и не может быть отменено.', - sendTip: 'Если вы продолжите, мы отправим код подтверждения на {{email}} для повторной аутентификации.', - }, - transferOwnership: 'Передать право собственности', - }, - integrations: { - connected: 'Подключено', - google: 'Google', - googleAccount: 'Войти с помощью учетной записи Google', - github: 'GitHub', - githubAccount: 'Войти с помощью учетной записи GitHub', - connect: 'Подключить', - }, - language: { - displayLanguage: 'Язык отображения', - timezone: 'Часовой пояс', - }, - provider: { - apiKey: 'Ключ API', - enterYourKey: 'Введите свой ключ API здесь', - invalidKey: 'Неверный ключ API OpenAI', - validatedError: 'Ошибка валидации: ', - validating: 'Проверка ключа...', - saveFailed: 'Ошибка сохранения ключа API', - apiKeyExceedBill: 'Этот API-ключ не имеет доступной квоты, пожалуйста, прочитайте', - addKey: 'Добавить ключ', - comingSoon: 'Скоро', - editKey: 'Редактировать', - invalidApiKey: 'Неверный ключ API', - azure: { - apiBase: 'Базовый API', - apiBasePlaceholder: 'Базовый URL-адрес API вашей конечной точки Azure OpenAI.', - apiKey: 'Ключ API', - apiKeyPlaceholder: 'Введите свой ключ API здесь', - helpTip: 'Узнать о службе Azure OpenAI', - }, - openaiHosted: { - openaiHosted: 'Размещенный OpenAI', - onTrial: 'ПРОБНАЯ ВЕРСИЯ', - exhausted: 'КВОТА ИСЧЕРПАНА', - desc: 'Хостинговая служба OpenAI, предоставляемая Dify, позволяет вам использовать такие модели, как GPT-3.5. Прежде чем ваша пробная квота будет исчерпана, вам необходимо настроить других поставщиков моделей.', - callTimes: 'Количество вызовов', - usedUp: 'Пробная квота исчерпана. Добавьте собственного поставщика модели.', - useYourModel: 'В настоящее время используется собственный поставщик модели.', - close: 'Закрыть', - }, - anthropicHosted: { - anthropicHosted: 'Anthropic Claude', - onTrial: 'ПРОБНАЯ ВЕРСИЯ', - exhausted: 'КВОТА ИСЧЕРПАНА', - desc: 'Мощная модель, которая отлично справляется с широким спектром задач, от сложных диалогов и создания творческого контента до подробных инструкций.', - callTimes: 'Количество вызовов', - usedUp: 'Пробная квота исчерпана. Добавьте собственного поставщика модели.', - useYourModel: 'В настоящее время используется собственный поставщик модели.', - close: 'Закрыть', - trialQuotaTip: 'Ваша квота на пробную версию Anthropic истечет 11.03.2025 и больше не будет доступна. Пожалуйста, используйте его вовремя.', - }, - anthropic: { - using: 'Возможность встраивания использует', - enableTip: 'Чтобы включить модель Anthropic, вам необходимо сначала привязаться к OpenAI или Azure OpenAI Service.', - notEnabled: 'Не включено', - keyFrom: 'Получите свой ключ API от Anthropic', - }, - encrypted: { - front: 'Ваш API-ключ будет зашифрован и сохранен с использованием', - 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-КЛЮЧ', - 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-ключ будет зашифрован и сохранен с использованием', - 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: 'По умолчанию балансировка нагрузки использует стратегию Round-robin. Если срабатывает ограничение скорости, будет применен 1-минутный период охлаждения.', - upgradeForLoadBalancing: 'Обновите свой тарифный план, чтобы включить балансировку нагрузки.', - emptyProviderTitle: 'Поставщик модели не настроен', - toBeConfigured: 'Подлежит настройке', - configureTip: 'Настройте api-ключ или добавьте модель для использования', - emptyProviderTip: 'Сначала установите поставщик модели.', - discoverMore: 'Узнайте больше в', - installProvider: 'Установка поставщиков моделей', - auth: { - apiKeyModal: { - addModel: 'Добавить модель', - title: 'Конфигурация авторизации ключа API', - desc: 'После настройки учетных данных все члены рабочей области могут использовать эту модель при оркестрации приложений.', - }, - authRemoved: 'Удалена аутентификация', - addApiKey: 'Добавьте API-ключ', - addCredential: 'Добавить учетные данные', - apiKeys: 'API ключи', - authorizationError: 'Ошибка авторизации', - modelCredentials: 'Учетные данные модели', - configModel: 'Настройка модели', - providerManaged: 'Управляемый провайдером', - unAuthorized: 'Неавторизованный', - specifyModelCredential: 'Укажите учетные данные модели', - addNewModel: 'Добавить новую модель', - addModelCredential: 'Добавить учетные данные модели', - configLoadBalancing: 'Конфигурация балансировки нагрузки', - providerManagedTip: 'Текущая конфигурация размещена у провайдера.', - specifyModelCredentialTip: 'Используйте конфигурированные учетные данные модели.', - removeModel: 'Удалить модель', - addModel: 'Добавить модель', - modelCredential: 'Удостоверение модели', - editModelCredential: 'Редактирование учетных данных модели', - selectModelCredential: 'Выбор учетных данных модели', - addNewModelCredential: 'Добавление новых учетных данных модели', - customModelCredentials: 'Учетные данные пользовательской модели', - manageCredentials: 'Управление учетными данными', - customModelCredentialsDeleteTip: 'Учетные данные используются и не могут быть удалены', - }, - parametersInvalidRemoved: 'Некоторые параметры недействительны и были удалены', - installDataSourceProvider: 'Установить поставщиков источников данных', - }, - dataSource: { - add: 'Добавить источник данных', - connect: 'Подключить', - configure: 'Настроить', - notion: { - title: 'Notion', - description: 'Использование Notion в качестве источника данных для знаний.', - connectedWorkspace: 'Подключенное рабочее пространство', - addWorkspace: 'Добавить рабочее пространство', - connected: 'Подключено', - disconnected: 'Отключено', - changeAuthorizedPages: 'Изменить авторизованные страницы', - pagesAuthorized: 'Авторизованные страницы', - sync: 'Синхронизировать', - remove: 'Удалить', - selector: { - pageSelected: 'Выбранные страницы', - searchPages: 'Поиск страниц...', - noSearchResult: 'Нет результатов поиска', - addPages: 'Добавить страницы', - preview: 'ПРЕДПРОСМОТР', - }, - integratedAlert: 'Notion интегрирован через внутренние учетные данные, нет необходимости повторной авторизации.', - }, - website: { - title: 'Веб-сайт', - description: 'Импортировать контент с веб-сайтов с помощью веб-краулера.', - with: 'С', - configuredCrawlers: 'Настроенные краулеры', - active: 'Активный', - inactive: 'Неактивный', - }, - }, - plugin: { - serpapi: { - apiKey: 'Ключ API', - apiKeyPlaceholder: 'Введите свой ключ API', - keyFrom: 'Получите свой ключ SerpAPI на странице учетной записи SerpAPI', - }, - }, - apiBasedExtension: { - title: 'API-расширения обеспечивают централизованное управление API, упрощая настройку для удобного использования в приложениях Dify.', - link: 'Узнайте, как разработать собственное API-расширение.', - add: 'Добавить API Extension', - selector: { - title: 'API Extension', - placeholder: 'Пожалуйста, выберите API-расширение', - manage: 'Управление API-расширением', - }, - modal: { - title: 'Добавить API-расширение', - editTitle: 'Редактировать API-расширение', - name: { - title: 'Имя', - placeholder: 'Пожалуйста, введите имя', - }, - apiEndpoint: { - title: 'API Endpoint', - placeholder: 'Пожалуйста, введите конечную точку API', - }, - apiKey: { - title: 'API-ключ', - placeholder: 'Пожалуйста, введите API-ключ', - lengthError: 'Длина API-ключа не может быть меньше 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: 'связанные приложения', - noRelatedApp: 'Нет связанных приложений', - pipeline: 'Трубопровод', - }, - 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: 'Оценка совпадения:', - }, - inputPlaceholder: 'Поговорить с ботом', - thinking: 'Мыслящий...', - thought: 'Мысль', - resend: 'Переслать', - }, - 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}} МБ', - pasteImageLink: 'Вставить ссылку на изображение', - pasteImageLinkInputPlaceholder: 'Вставьте ссылку на изображение здесь', - pasteImageLinkInvalid: 'Неверная ссылка на изображение', - imageUpload: 'Загрузка изображения', - }, - tag: { - placeholder: 'Все теги', - addNew: 'Добавить новый тег', - noTag: 'Нет тегов', - noTagYet: 'Еще нет тегов', - addTag: 'Добавить теги', - editTag: 'Редактировать теги', - manageTags: 'Управление тегами', - selectorPlaceholder: 'Введите для поиска или создания', - create: 'Создать', - delete: 'Удалить тег', - deleteTip: 'Тег используется, удалить его?', - created: 'Тег успешно создан', - failed: 'Ошибка создания тега', - }, - fileUploader: { - pasteFileLinkInputPlaceholder: 'Введите URL...', - pasteFileLink: 'Вставить ссылку на файл', - uploadFromComputer: 'Локальная загрузка', - fileExtensionNotSupport: 'Расширение файла не поддерживается', - uploadFromComputerReadError: 'Чтение файла не удалось, пожалуйста, повторите попытку.', - pasteFileLinkInvalid: 'Неверная ссылка на файл', - uploadFromComputerLimit: 'Файл загрузки не может превышать {{size}}', - uploadFromComputerUploadError: 'Загрузка файла не удалась, пожалуйста, загрузите еще раз.', - fileExtensionBlocked: 'Этот тип файла заблокирован по соображениям безопасности', - uploadDisabled: 'Загрузка файлов отключена', - }, - license: { - expiring: 'Срок действия истекает за один день', - expiring_plural: 'Срок действия истекает через {{count}} дней', - unlimited: 'Неограниченный', - }, - pagination: { - perPage: 'Элементов на странице', - }, - theme: { - light: 'свет', - dark: 'темный', - theme: 'Тема', - auto: 'система', - }, - compliance: { - soc2Type2: 'Отчет SOC 2 Тип II', - gdpr: 'GDPR DPA', - professionalUpgradeTooltip: 'Доступно только с командным планом или выше.', - iso27001: 'Сертификация ISO 27001:2022', - sandboxUpgradeTooltip: 'Доступно только с профессиональным или командным планом.', - soc2Type1: 'Отчет SOC 2 Тип I', - }, - imageInput: { - browse: 'просмотр', - dropImageHere: 'Перетащите ваше изображение сюда или', - supportedFormats: 'Поддерживает PNG, JPG, JPEG, WEBP и GIF', - }, - you: 'Ты', - avatar: { - deleteTitle: 'Удалить аватар', - deleteDescription: 'Вы уверены, что хотите удалить свою фотографию профиля? Ваш аккаунт будет использовать стандартный аватар.', - }, - feedback: { - title: 'Оставить отзыв', - content: 'Содержимое обратной связи', - placeholder: 'Пожалуйста, опишите, что пошло не так или как мы можем улучшиться...', - subtitle: 'Пожалуйста, сообщите нам, что пошло не так с этим ответом', - }, - label: { - optional: '(необязательно)', - }, - noData: 'Нет данных', - dynamicSelect: { - error: 'Не удалось загрузить параметры', - noData: 'Нет доступных вариантов', - loading: 'Загрузка параметров...', - selected: '{{count}} выбрано', - }, -} - -export default translation diff --git a/web/i18n/ru-RU/custom.json b/web/i18n/ru-RU/custom.json new file mode 100644 index 0000000000..73d6668fe3 --- /dev/null +++ b/web/i18n/ru-RU/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "Настройка", + "upgradeTip": { + "prefix": "Обновите свой тарифный план, чтобы", + "suffix": "настроить свой бренд.", + "des": "Обновите свой план, чтобы настроить свой бренд", + "title": "Обновите свой план" + }, + "webapp": { + "title": "Настроить бренд веб-приложения", + "removeBrand": "Удалить Powered by Dify", + "changeLogo": "Изменить изображение бренда Powered by", + "changeLogoTip": "Формат SVG или PNG с минимальным размером 40x40px" + }, + "app": { + "title": "Настроить бренд заголовка приложения", + "changeLogoTip": "Формат SVG или PNG с минимальным размером 80x80px" + }, + "upload": "Загрузить", + "uploading": "Загрузка", + "uploadedFail": "Ошибка загрузки изображения, пожалуйста изображение, загрузите еще раз.", + "change": "Изменить", + "apply": "Применить", + "restore": "Восстановить значения по умолчанию", + "customize": { + "contactUs": " свяжитесь с нами ", + "prefix": "Чтобы настроить логотип бренда в приложении, пожалуйста,", + "suffix": "чтобы перейти на корпоративную версию." + } +} diff --git a/web/i18n/ru-RU/custom.ts b/web/i18n/ru-RU/custom.ts deleted file mode 100644 index bba1d28c1a..0000000000 --- a/web/i18n/ru-RU/custom.ts +++ /dev/null @@ -1,32 +0,0 @@ -const translation = { - custom: 'Настройка', - upgradeTip: { - prefix: 'Обновите свой тарифный план, чтобы', - suffix: 'настроить свой бренд.', - des: 'Обновите свой план, чтобы настроить свой бренд', - title: 'Обновите свой план', - }, - webapp: { - title: 'Настроить бренд веб-приложения', - removeBrand: 'Удалить Powered by Dify', - changeLogo: 'Изменить изображение бренда Powered by', - changeLogoTip: 'Формат SVG или PNG с минимальным размером 40x40px', - }, - app: { - title: 'Настроить бренд заголовка приложения', - changeLogoTip: 'Формат SVG или PNG с минимальным размером 80x80px', - }, - upload: 'Загрузить', - uploading: 'Загрузка', - uploadedFail: 'Ошибка загрузки изображения, пожалуйста изображение, загрузите еще раз.', - change: 'Изменить', - apply: 'Применить', - restore: 'Восстановить значения по умолчанию', - customize: { - contactUs: ' свяжитесь с нами ', - prefix: 'Чтобы настроить логотип бренда в приложении, пожалуйста,', - suffix: 'чтобы перейти на корпоративную версию.', - }, -} - -export default translation diff --git a/web/i18n/ru-RU/dataset-creation.json b/web/i18n/ru-RU/dataset-creation.json new file mode 100644 index 0000000000..73ab440a10 --- /dev/null +++ b/web/i18n/ru-RU/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "Знание" + }, + "one": "Выберите источник данных", + "two": "Предварительная обработка и очистка текста", + "three": "Выполнить и завершить" + }, + "error": { + "unavailable": "Эта база знаний недоступна" + }, + "firecrawl": { + "configFirecrawl": "Настроить 🔥Firecrawl", + "apiKeyPlaceholder": "Ключ API с firecrawl.dev", + "getApiKeyLinkText": "Получите свой ключ API с firecrawl.dev" + }, + "stepOne": { + "filePreview": "Предварительный просмотр файла", + "pagePreview": "Предварительный просмотр страницы", + "dataSourceType": { + "file": "Импортировать из файла", + "notion": "Синхронизировать из Notion", + "web": "Синхронизировать с веб-сайта" + }, + "uploader": { + "title": "Загрузить файл", + "button": "Перетащите файлы или папки или", + "buttonSingleFile": "Перетащите файл или", + "browse": "Обзор", + "tip": "Поддерживаются {{supportTypes}}. Максимум {{size}} МБ каждый.", + "validation": { + "typeError": "Тип файла не поддерживается", + "size": "Файл слишком большой. Максимум {{size}} МБ", + "count": "Несколько файлов не поддерживаются", + "filesNumber": "Вы достигли лимита пакетной загрузки {{filesNumber}} файлов." + }, + "cancel": "Отмена", + "change": "Изменить", + "failed": "Ошибка загрузки" + }, + "notionSyncTitle": "Notion не подключен", + "notionSyncTip": "Чтобы синхронизировать данные из Notion, сначала необходимо установить соединение с Notion.", + "connect": "Перейти к подключению", + "button": "Далее", + "emptyDatasetCreation": "Я хочу создать пустую базу знаний", + "modal": { + "title": "Создать пустую базу знаний", + "tip": "Пустая база знаний не будет содержать документов, и вы можете загружать документы в любое время.", + "input": "Название базы знаний", + "placeholder": "Пожалуйста, введите", + "nameNotEmpty": "Название не может быть пустым", + "nameLengthInvalid": "Название должно быть от 1 до 40 символов", + "cancelButton": "Отмена", + "confirmButton": "Создать", + "failed": "Ошибка создания" + }, + "website": { + "fireCrawlNotConfigured": "Firecrawl не настроен", + "fireCrawlNotConfiguredDescription": "Настройте Firecrawl с API-ключом.", + "configure": "Настроить", + "run": "Запустить", + "firecrawlTitle": "Извлечь веб-контент с помощью 🔥Firecrawl", + "firecrawlDoc": "Документация Firecrawl", + "options": "Опции", + "crawlSubPage": "Сканировать подстраницы", + "limit": "Лимит", + "maxDepth": "Максимальная глубина", + "excludePaths": "Исключить пути", + "includeOnlyPaths": "Включить только пути", + "extractOnlyMainContent": "Извлекать только основной контент (без заголовков, навигации, футеров и т. д.)", + "exceptionErrorTitle": "Произошло исключение при запуске задания Firecrawl:", + "unknownError": "Неизвестная ошибка", + "totalPageScraped": "Всего просканировано страниц:", + "selectAll": "Выбрать все", + "resetAll": "Сбросить все", + "scrapTimeInfo": "Всего просканировано {{total}} страниц за {{time}} секунд", + "preview": "Предварительный просмотр", + "maxDepthTooltip": "Максимальная глубина сканирования относительно введенного URL. Глубина 0 сканирует только страницу введенного URL, глубина 1 сканирует URL и все, что находится после введенного URL + один /, и так далее.", + "jinaReaderNotConfiguredDescription": "Настройте Jina Reader, введя свой бесплатный ключ API для доступа.", + "jinaReaderDocLink": "https://jina.ai/reader", + "useSitemap": "Использовать карту сайта", + "chooseProvider": "Выберите провайдера", + "jinaReaderNotConfigured": "Jina Reader не настроен", + "jinaReaderDoc": "Узнайте больше о Jina Reader", + "jinaReaderTitle": "Конвертируйте весь сайт в Markdown", + "useSitemapTooltip": "Следуйте карте сайта, чтобы просканировать сайт. Если нет, Jina Reader будет сканировать итеративно в зависимости от релевантности страницы, выдавая меньшее количество страниц, но более высокого качества.", + "watercrawlTitle": "Извлечение веб-контента с помощью Watercrawl", + "configureWatercrawl": "Настроить Watercrawl", + "waterCrawlNotConfigured": "Watercrawl не настроен", + "configureFirecrawl": "Настроить Firecrawl", + "waterCrawlNotConfiguredDescription": "Настройте Watercrawl с помощью ключа API для его использования.", + "configureJinaReader": "Настройте Jina Reader", + "watercrawlDoc": "Документация Watercrawl", + "running": "Бег" + }, + "cancel": "Отмена" + }, + "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": "Сегментировать с помощью", + "estimateCost": "Оценка", + "estimateSegment": "Оценочное количество фрагментов", + "segmentCount": "фрагментов", + "calculating": "Вычисление...", + "fileSource": "Предварительная обработка документов", + "notionSource": "Предварительная обработка страниц", + "websiteSource": "Предварительная обработка веб-сайта", + "other": "и другие ", + "fileUnit": " файлов", + "notionUnit": " страниц", + "webpageUnit": " страниц", + "previousStep": "Предыдущий шаг", + "nextStep": "Сохранить и обработать", + "save": "Сохранить и обработать", + "cancel": "Отмена", + "sideTipTitle": "Зачем нужна фрагментация и предварительная обработка?", + "sideTipP1": "При обработке текстовых данных фрагментация и очистка являются двумя важными этапами предварительной обработки.", + "sideTipP2": "Сегментация разбивает длинный текст на абзацы, чтобы модели могли лучше его понимать. Это улучшает качество и релевантность результатов модели.", + "sideTipP3": "Очистка удаляет ненужные символы и форматы, делая знания более чистыми и легкими для анализа.", + "sideTipP4": "Правильная фрагментация и очистка улучшают производительность модели, обеспечивая более точные и ценные результаты.", + "previewTitle": "Предварительный просмотр", + "previewTitleButton": "Предварительный просмотр", + "previewButton": "Переключение в формат вопрос-ответ", + "previewSwitchTipStart": "Текущий предварительный просмотр фрагмента находится в текстовом формате, переключение на предварительный просмотр в формате вопрос-ответ", + "previewSwitchTipEnd": " потребляет дополнительные токены", + "characters": "символов", + "indexSettingTip": "Чтобы изменить метод индексации, пожалуйста, перейдите в ", + "retrievalSettingTip": "Чтобы изменить метод индексации, пожалуйста, перейдите в ", + "datasetSettingLink": "настройки базы знаний.", + "separatorTip": "Разделитель — это символ, используемый для разделения текста. \\n\\n и \\n — это часто используемые разделители для разделения абзацев и строк. В сочетании с запятыми (\\n\\n,\\n) абзацы будут сегментированы по строкам, если максимальная длина блока превышает их. Вы также можете использовать специальные разделители, определенные вами (например, ***).", + "maxLengthCheck": "Максимальная длина блока должна быть меньше {{limit}}", + "switch": "Выключатель", + "parentChunkForContext": "Родительский блок для контекста", + "previewChunkTip": "Нажмите кнопку «Предварительный просмотр фрагмента» слева, чтобы загрузить предварительный просмотр", + "notAvailableForParentChild": "Недоступно для индекса типа \"родитель-потомок\"", + "parentChildChunkDelimiterTip": "Разделитель — это символ, используемый для разделения текста. \\n рекомендуется для разбиения родительских блоков на небольшие дочерние блоки. Вы также можете использовать специальные разделители, определенные самостоятельно.", + "previewChunk": "Предварительный просмотр фрагмента", + "previewChunkCount": "{{Количество}} Предполагаемые куски", + "generalTip": "Общий режим фрагментации текста, извлекаемые и вызываемые фрагменты одинаковы.", + "general": "Общее", + "useQALanguage": "Фрагмент с использованием формата Q&A в", + "notAvailableForQA": "Недоступно для индекса Q&A", + "paragraph": "Параграф", + "parentChild": "Родитель-дочерний", + "fullDoc": "Полный документальный фильм", + "qaSwitchHighQualityTipTitle": "Формат вопросов и ответов требует высококачественного метода индексации", + "parentChildDelimiterTip": "Разделитель — это символ, используемый для разделения текста. \\n\\n рекомендуется для разделения исходного документа на большие родительские части. Вы также можете использовать специальные разделители, определенные самостоятельно.", + "parentChildTip": "При использовании режима «родитель-потомок» дочерний блок используется для извлечения, а родительский блок — для вызова в качестве контекста.", + "paragraphTip": "В этом режиме текст разбивается на абзацы на основе разделителей и максимальной длины блока, используя разделенный текст в качестве родительского блока для извлечения.", + "highQualityTip": "После завершения встраивания в режиме «Высокое качество» возврат к экономичному режиму невозможен.", + "childChunkForRetrieval": "Детский фрагмент для извлечения", + "qaSwitchHighQualityTipContent": "В настоящее время только высококачественный метод индекса поддерживает фрагментацию формата Q&A. Хотели бы вы перейти в режим высокого качества?", + "fullDocTip": "Весь документ используется в качестве родительского блока и извлекается напрямую. Обратите внимание, что по причинам производительности текст, превышающий 10000 токенов, будет автоматически обрезан.", + "qaTip": "При использовании структурированных данных вопросов и ответов можно создавать документы, в которых вопросы сочетаются с ответами. Эти документы индексируются на основе части вопроса, что позволяет системе получать релевантные ответы на основе сходства запросов." + }, + "stepThree": { + "creationTitle": "🎉 База знаний создана", + "creationContent": "Мы автоматически назвали базу знаний, вы можете изменить ее в любое время", + "label": "Название базы знаний", + "additionTitle": "🎉 Документ загружен", + "additionP1": "Документ был загружен в базу знаний", + "additionP2": ", вы можете найти его в списке документов базы знаний.", + "stop": "Остановить обработку", + "resume": "Возобновить обработку", + "navTo": "Перейти к документу", + "sideTipTitle": "Что дальше", + "sideTipContent": "После завершения индексации документа база знаний может быть интегрирована в приложение в качестве контекста, вы можете найти настройку контекста на странице prompt orchestration. Вы также можете создать-workflow приложение как отдельный как независимый плагин.", + "modelTitle": "Вы уверены, что хотите остановить встраивание?", + "modelContent": "Если вам нужно будет возобновить обработку позже, вы продолжите с того места, где остановились.", + "modelButtonConfirm": "Подтвердить", + "modelButtonCancel": "Отмена" + }, + "jinaReader": { + "getApiKeyLinkText": "Получите бесплатный ключ API в jina.ai", + "configJinaReader": "Настройка Jina Reader", + "apiKeyPlaceholder": "Ключ API от jina.ai" + }, + "otherDataSource": { + "learnMore": "Подробнее", + "title": "Подключаться к другим источникам данных?", + "description": "В настоящее время база знаний Dify имеет лишь ограниченные источники данных. Добавление источника данных в базу знаний Dify — это отличный способ повысить гибкость и возможности платформы для всех пользователей. Наше руководство по вкладу поможет вам легко начать работу. Пожалуйста, нажмите на ссылку ниже, чтобы узнать больше." + }, + "watercrawl": { + "getApiKeyLinkText": "Получите свой API-ключ с watercrawl.dev", + "configWatercrawl": "Настроить Watercrawl", + "apiKeyPlaceholder": "API ключ с watercrawl.dev" + } +} diff --git a/web/i18n/ru-RU/dataset-creation.ts b/web/i18n/ru-RU/dataset-creation.ts deleted file mode 100644 index 2a5696997b..0000000000 --- a/web/i18n/ru-RU/dataset-creation.ts +++ /dev/null @@ -1,217 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: 'Знание', - }, - one: 'Выберите источник данных', - two: 'Предварительная обработка и очистка текста', - three: 'Выполнить и завершить', - }, - error: { - unavailable: 'Эта база знаний недоступна', - }, - firecrawl: { - configFirecrawl: 'Настроить 🔥Firecrawl', - apiKeyPlaceholder: 'Ключ API с firecrawl.dev', - getApiKeyLinkText: 'Получите свой ключ API с firecrawl.dev', - }, - stepOne: { - filePreview: 'Предварительный просмотр файла', - pagePreview: 'Предварительный просмотр страницы', - dataSourceType: { - file: 'Импортировать из файла', - notion: 'Синхронизировать из Notion', - web: 'Синхронизировать с веб-сайта', - }, - uploader: { - title: 'Загрузить файл', - button: 'Перетащите файлы или папки или', - buttonSingleFile: 'Перетащите файл или', - browse: 'Обзор', - tip: 'Поддерживаются {{supportTypes}}. Максимум {{size}} МБ каждый.', - validation: { - typeError: 'Тип файла не поддерживается', - size: 'Файл слишком большой. Максимум {{size}} МБ', - count: 'Несколько файлов не поддерживаются', - filesNumber: 'Вы достигли лимита пакетной загрузки {{filesNumber}} файлов.', - }, - cancel: 'Отмена', - change: 'Изменить', - failed: 'Ошибка загрузки', - }, - notionSyncTitle: 'Notion не подключен', - notionSyncTip: 'Чтобы синхронизировать данные из Notion, сначала необходимо установить соединение с Notion.', - connect: 'Перейти к подключению', - button: 'Далее', - emptyDatasetCreation: 'Я хочу создать пустую базу знаний', - modal: { - title: 'Создать пустую базу знаний', - tip: 'Пустая база знаний не будет содержать документов, и вы можете загружать документы в любое время.', - input: 'Название базы знаний', - placeholder: 'Пожалуйста, введите', - nameNotEmpty: 'Название не может быть пустым', - nameLengthInvalid: 'Название должно быть от 1 до 40 символов', - cancelButton: 'Отмена', - confirmButton: 'Создать', - failed: 'Ошибка создания', - }, - website: { - fireCrawlNotConfigured: 'Firecrawl не настроен', - fireCrawlNotConfiguredDescription: 'Настройте Firecrawl с API-ключом.', - configure: 'Настроить', - run: 'Запустить', - firecrawlTitle: 'Извлечь веб-контент с помощью 🔥Firecrawl', - firecrawlDoc: 'Документация Firecrawl', - options: 'Опции', - crawlSubPage: 'Сканировать подстраницы', - limit: 'Лимит', - maxDepth: 'Максимальная глубина', - excludePaths: 'Исключить пути', - includeOnlyPaths: 'Включить только пути', - extractOnlyMainContent: 'Извлекать только основной контент (без заголовков, навигации, футеров и т. д.)', - exceptionErrorTitle: 'Произошло исключение при запуске задания Firecrawl:', - unknownError: 'Неизвестная ошибка', - totalPageScraped: 'Всего просканировано страниц:', - selectAll: 'Выбрать все', - resetAll: 'Сбросить все', - scrapTimeInfo: 'Всего просканировано {{total}} страниц за {{time}} секунд', - preview: 'Предварительный просмотр', - maxDepthTooltip: 'Максимальная глубина сканирования относительно введенного URL. Глубина 0 сканирует только страницу введенного URL, глубина 1 сканирует URL и все, что находится после введенного URL + один /, и так далее.', - jinaReaderNotConfiguredDescription: 'Настройте Jina Reader, введя свой бесплатный ключ API для доступа.', - jinaReaderDocLink: 'https://jina.ai/reader', - useSitemap: 'Использовать карту сайта', - chooseProvider: 'Выберите провайдера', - jinaReaderNotConfigured: 'Jina Reader не настроен', - jinaReaderDoc: 'Узнайте больше о Jina Reader', - jinaReaderTitle: 'Конвертируйте весь сайт в Markdown', - useSitemapTooltip: 'Следуйте карте сайта, чтобы просканировать сайт. Если нет, Jina Reader будет сканировать итеративно в зависимости от релевантности страницы, выдавая меньшее количество страниц, но более высокого качества.', - watercrawlTitle: 'Извлечение веб-контента с помощью Watercrawl', - configureWatercrawl: 'Настроить Watercrawl', - waterCrawlNotConfigured: 'Watercrawl не настроен', - configureFirecrawl: 'Настроить Firecrawl', - waterCrawlNotConfiguredDescription: 'Настройте Watercrawl с помощью ключа API для его использования.', - configureJinaReader: 'Настройте Jina Reader', - watercrawlDoc: 'Документация Watercrawl', - running: 'Бег', - }, - cancel: 'Отмена', - }, - 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: 'Сегментировать с помощью', - estimateCost: 'Оценка', - estimateSegment: 'Оценочное количество фрагментов', - segmentCount: 'фрагментов', - calculating: 'Вычисление...', - fileSource: 'Предварительная обработка документов', - notionSource: 'Предварительная обработка страниц', - websiteSource: 'Предварительная обработка веб-сайта', - other: 'и другие ', - fileUnit: ' файлов', - notionUnit: ' страниц', - webpageUnit: ' страниц', - previousStep: 'Предыдущий шаг', - nextStep: 'Сохранить и обработать', - save: 'Сохранить и обработать', - cancel: 'Отмена', - sideTipTitle: 'Зачем нужна фрагментация и предварительная обработка?', - sideTipP1: 'При обработке текстовых данных фрагментация и очистка являются двумя важными этапами предварительной обработки.', - sideTipP2: 'Сегментация разбивает длинный текст на абзацы, чтобы модели могли лучше его понимать. Это улучшает качество и релевантность результатов модели.', - sideTipP3: 'Очистка удаляет ненужные символы и форматы, делая знания более чистыми и легкими для анализа.', - sideTipP4: 'Правильная фрагментация и очистка улучшают производительность модели, обеспечивая более точные и ценные результаты.', - previewTitle: 'Предварительный просмотр', - previewTitleButton: 'Предварительный просмотр', - previewButton: 'Переключение в формат вопрос-ответ', - previewSwitchTipStart: 'Текущий предварительный просмотр фрагмента находится в текстовом формате, переключение на предварительный просмотр в формате вопрос-ответ', - previewSwitchTipEnd: ' потребляет дополнительные токены', - characters: 'символов', - indexSettingTip: 'Чтобы изменить метод индексации, пожалуйста, перейдите в ', - retrievalSettingTip: 'Чтобы изменить метод индексации, пожалуйста, перейдите в ', - datasetSettingLink: 'настройки базы знаний.', - separatorTip: 'Разделитель — это символ, используемый для разделения текста. \\n\\n и \\n — это часто используемые разделители для разделения абзацев и строк. В сочетании с запятыми (\\n\\n,\\n) абзацы будут сегментированы по строкам, если максимальная длина блока превышает их. Вы также можете использовать специальные разделители, определенные вами (например, ***).', - maxLengthCheck: 'Максимальная длина блока должна быть меньше {{limit}}', - switch: 'Выключатель', - parentChunkForContext: 'Родительский блок для контекста', - previewChunkTip: 'Нажмите кнопку «Предварительный просмотр фрагмента» слева, чтобы загрузить предварительный просмотр', - notAvailableForParentChild: 'Недоступно для индекса типа "родитель-потомок"', - parentChildChunkDelimiterTip: 'Разделитель — это символ, используемый для разделения текста. \\n рекомендуется для разбиения родительских блоков на небольшие дочерние блоки. Вы также можете использовать специальные разделители, определенные самостоятельно.', - previewChunk: 'Предварительный просмотр фрагмента', - previewChunkCount: '{{Количество}} Предполагаемые куски', - generalTip: 'Общий режим фрагментации текста, извлекаемые и вызываемые фрагменты одинаковы.', - general: 'Общее', - useQALanguage: 'Фрагмент с использованием формата Q&A в', - notAvailableForQA: 'Недоступно для индекса Q&A', - paragraph: 'Параграф', - parentChild: 'Родитель-дочерний', - fullDoc: 'Полный документальный фильм', - qaSwitchHighQualityTipTitle: 'Формат вопросов и ответов требует высококачественного метода индексации', - parentChildDelimiterTip: 'Разделитель — это символ, используемый для разделения текста. \\n\\n рекомендуется для разделения исходного документа на большие родительские части. Вы также можете использовать специальные разделители, определенные самостоятельно.', - parentChildTip: 'При использовании режима «родитель-потомок» дочерний блок используется для извлечения, а родительский блок — для вызова в качестве контекста.', - paragraphTip: 'В этом режиме текст разбивается на абзацы на основе разделителей и максимальной длины блока, используя разделенный текст в качестве родительского блока для извлечения.', - highQualityTip: 'После завершения встраивания в режиме «Высокое качество» возврат к экономичному режиму невозможен.', - childChunkForRetrieval: 'Детский фрагмент для извлечения', - qaSwitchHighQualityTipContent: 'В настоящее время только высококачественный метод индекса поддерживает фрагментацию формата Q&A. Хотели бы вы перейти в режим высокого качества?', - fullDocTip: 'Весь документ используется в качестве родительского блока и извлекается напрямую. Обратите внимание, что по причинам производительности текст, превышающий 10000 токенов, будет автоматически обрезан.', - qaTip: 'При использовании структурированных данных вопросов и ответов можно создавать документы, в которых вопросы сочетаются с ответами. Эти документы индексируются на основе части вопроса, что позволяет системе получать релевантные ответы на основе сходства запросов.', - }, - stepThree: { - creationTitle: '🎉 База знаний создана', - creationContent: 'Мы автоматически назвали базу знаний, вы можете изменить ее в любое время', - label: 'Название базы знаний', - additionTitle: '🎉 Документ загружен', - additionP1: 'Документ был загружен в базу знаний', - additionP2: ', вы можете найти его в списке документов базы знаний.', - stop: 'Остановить обработку', - resume: 'Возобновить обработку', - navTo: 'Перейти к документу', - sideTipTitle: 'Что дальше', - sideTipContent: 'После завершения индексации документа база знаний может быть интегрирована в приложение в качестве контекста, вы можете найти настройку контекста на странице prompt orchestration. Вы также можете создать-workflow приложение как отдельный как независимый плагин.', - modelTitle: 'Вы уверены, что хотите остановить встраивание?', - modelContent: 'Если вам нужно будет возобновить обработку позже, вы продолжите с того места, где остановились.', - modelButtonConfirm: 'Подтвердить', - modelButtonCancel: 'Отмена', - }, - jinaReader: { - getApiKeyLinkText: 'Получите бесплатный ключ API в jina.ai', - configJinaReader: 'Настройка Jina Reader', - apiKeyPlaceholder: 'Ключ API от jina.ai', - }, - otherDataSource: { - learnMore: 'Подробнее', - title: 'Подключаться к другим источникам данных?', - description: 'В настоящее время база знаний Dify имеет лишь ограниченные источники данных. Добавление источника данных в базу знаний Dify — это отличный способ повысить гибкость и возможности платформы для всех пользователей. Наше руководство по вкладу поможет вам легко начать работу. Пожалуйста, нажмите на ссылку ниже, чтобы узнать больше.', - }, - watercrawl: { - getApiKeyLinkText: 'Получите свой API-ключ с watercrawl.dev', - configWatercrawl: 'Настроить Watercrawl', - apiKeyPlaceholder: 'API ключ с watercrawl.dev', - }, -} - -export default translation diff --git a/web/i18n/ru-RU/dataset-documents.json b/web/i18n/ru-RU/dataset-documents.json new file mode 100644 index 0000000000..aa719f98eb --- /dev/null +++ b/web/i18n/ru-RU/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "Документы", + "desc": "Здесь отображаются все файлы базы знаний, и вся база знаний может быть связана с цитатами Dify или проиндексирована с помощью чата.", + "addFile": "Добавить файл", + "addPages": "Добавить страницы", + "addUrl": "Добавить URL", + "table": { + "header": { + "fileName": "НАЗВАНИЕ ФАЙЛА", + "words": "СЛОВА", + "hitCount": "КОЛИЧЕСТВО ОБРАЩЕНИЙ", + "uploadTime": "ВРЕМЯ ЗАГРУЗКИ", + "status": "СТАТУС", + "action": "ДЕЙСТВИЕ", + "chunkingMode": "РЕЖИМ ДРОБЛЕНИЯ" + }, + "rename": "Переименовать", + "name": "Название" + }, + "action": { + "uploadFile": "Загрузить новый файл", + "settings": "Настройки сегментации", + "addButton": "Добавить фрагмент", + "add": "Добавить фрагмент", + "batchAdd": "Пакетное добавление", + "archive": "Архивировать", + "unarchive": "Разархивировать", + "delete": "Удалить", + "enableWarning": "Архивный файл не может быть включен", + "sync": "Синхронизировать", + "resume": "Возобновить", + "pause": "Пауза" + }, + "index": { + "enable": "Включить", + "disable": "Отключить", + "all": "Все", + "enableTip": "Файл может быть проиндексирован", + "disableTip": "Файл не может быть проиндексирован" + }, + "status": { + "queuing": "В очереди", + "indexing": "Индексация", + "paused": "Приостановлено", + "error": "Ошибка", + "available": "Доступно", + "enabled": "Включено", + "disabled": "Отключено", + "archived": "Архивировано" + }, + "empty": { + "title": "Пока нет документов", + "upload": { + "tip": "Вы можете загружать файлы, синхронизировать с веб-сайта или из веб-приложений, таких как Notion, GitHub и т. д." + }, + "sync": { + "tip": "Dify будет периодически загружать файлы из вашего Notion и завершать обработку." + } + }, + "delete": { + "title": "Вы уверены, что хотите удалить?", + "content": "Если вам нужно будет возобновить обработку позже, вы продолжите с того места, где остановились" + }, + "batchModal": { + "title": "Пакетное добавление фрагментов", + "csvUploadTitle": "Перетащите сюда свой CSV-файл или ", + "browse": "обзор", + "tip": "CSV-файл должен соответствовать следующей структуре:", + "question": "вопрос", + "answer": "ответ", + "contentTitle": "содержимое фрагмента", + "content": "содержимое", + "template": "Скачать шаблон здесь", + "cancel": "Отмена", + "run": "Запустить пакет", + "runError": "Ошибка запуска пакета", + "processing": "В процессе пакетной обработки", + "completed": "Импорт завершен", + "error": "Ошибка импорта", + "ok": "ОК" + }, + "learnMore": "Подробнее", + "sort": { + "uploadTime": "Время загрузки", + "hitCount": "Количество извлечений" + } + }, + "metadata": { + "title": "Метаданные", + "desc": "Маркировка метаданных для документов позволяет ИИ своевременно получать к ним доступ и раскрывать источник ссылок для пользователей.", + "dateTimeFormat": "D MMMM YYYY, HH:mm", + "docTypeSelectTitle": "Пожалуйста, выберите тип документа", + "docTypeChangeTitle": "Изменить тип документа", + "docTypeSelectWarning": "Если тип документа будет изменен, заполненные сейчас метаданные больше не будут сохранены", + "firstMetaAction": "Поехали", + "placeholder": { + "add": "Добавить ", + "select": "Выбрать " + }, + "source": { + "upload_file": "Загрузить файл", + "notion": "Синхронизировать из Notion", + "github": "Синхронизировать из Github", + "local_file": "Локальный файл", + "online_document": "Онлайн-документ", + "website_crawl": "Сканирование сайта" + }, + "type": { + "book": "Книга", + "webPage": "Веб-страница", + "paper": "Статья", + "socialMediaPost": "Пост в социальных сетях", + "personalDocument": "Личный документ", + "businessDocument": "Деловой документ", + "IMChat": "Чат в мессенджере", + "wikipediaEntry": "Статья в Википедии", + "notion": "Синхронизировать из Notion", + "github": "Синхронизировать из Github", + "technicalParameters": "Технические параметры" + }, + "field": { + "processRule": { + "processDoc": "Обработка документа", + "segmentRule": "Правило фрагментации", + "segmentLength": "Длина фрагментов", + "processClean": "Очистка текста" + }, + "book": { + "title": "Название", + "language": "Язык", + "author": "Автор", + "publisher": "Издатель", + "publicationDate": "Дата публикации", + "ISBN": "ISBN", + "category": "Категория" + }, + "webPage": { + "title": "Название", + "url": "URL", + "language": "Язык", + "authorPublisher": "Автор/Издатель", + "publishDate": "Дата публикации", + "topicKeywords": "Темы/Ключевые слова", + "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": "Предварительный просмотр абзацев будет доступен после завершения расчета эмбеддингов", + "parentMaxTokens": "Родитель", + "childMaxTokens": "Ребёнок", + "hierarchical": "Родитель-дочерний", + "pause": "Пауза", + "waiting": "Ожидание встраивания..." + }, + "segment": { + "paragraphs": "Абзацы", + "keywords": "Ключевые слова", + "addKeyWord": "Добавить ключевое слово", + "keywordError": "Максимальная длина ключевого слова - 20", + "hitCount": "Количество обращений", + "vectorHash": "Векторный хэш: ", + "questionPlaceholder": "добавьте вопрос здесь", + "questionEmpty": "Вопрос не может быть пустым", + "answerPlaceholder": "добавьте ответ здесь", + "answerEmpty": "Ответ не может быть пустым", + "contentPlaceholder": "добавьте содержимое здесь", + "contentEmpty": "Содержимое не может быть пустым", + "newTextSegment": "Новый текстовый сегмент", + "newQaSegment": "Новый сегмент вопрос-ответ", + "delete": "Удалить этот фрагмент?", + "chunks_other": "КУСКИ", + "searchResults_one": "РЕЗУЛЬТАТ", + "parentChunk": "Родительский блок", + "characters_other": "письмена", + "edited": "ОТРЕДАКТИРОВАНЫ", + "regenerationSuccessMessage": "Вы можете закрыть это окно.", + "searchResults_other": "РЕЗУЛЬТАТЫ", + "regeneratingTitle": "Регенерация дочерних блоков", + "parentChunks_one": "РОДИТЕЛЬСКИЙ БЛОК", + "childChunk": "Чайлд-Чанк", + "editedAt": "Отредактировано в", + "dateTimeFormat": "MM/DD/YYYY h:mm", + "editChildChunk": "Редактирование дочернего фрагмента", + "parentChunks_other": "РОДИТЕЛЬСКИЕ БЛОКИ", + "regenerationSuccessTitle": "Регенерация завершена", + "childChunks_one": "ДОЧЕРНИЙ ЧАНК", + "newChunk": "Новый чанк", + "addAnother": "Добавить еще один", + "clearFilter": "Очистить фильтр", + "addChunk": "Добавить чанк", + "editParentChunk": "Редактирование родительского блока", + "chunkDetail": "Деталь Чанка", + "regenerationConfirmMessage": "При повторном создании дочерних блоков текущие дочерние блоки будут перезаписаны, включая отредактированные и вновь добавленные блоки. Регенерацию нельзя отменить.", + "collapseChunks": "Сворачивание кусков", + "regenerationConfirmTitle": "Вы хотите регенерировать дочерние куски?", + "searchResults_zero": "РЕЗУЛЬТАТ", + "childChunks_other": "ДЕТСКИЕ КУСОЧКИ", + "childChunkAdded": "Добавлен 1 дочерний чанк", + "editChunk": "Редактировать фрагмент", + "empty": "Чанк не найден", + "chunks_one": "ЛОМОТЬ", + "regeneratingMessage": "Это может занять некоторое время, пожалуйста, подождите...", + "chunkAdded": "Добавлен 1 блок", + "chunk": "Ломоть", + "expandChunks": "Развернуть чанки", + "characters_one": "характер", + "addChildChunk": "Добавить дочерний чанк", + "newChildChunk": "Новый дочерний чанк", + "keywordEmpty": "Ключевое слово не может быть пустым", + "keywordDuplicate": "Ключевое слово уже существует", + "allFilesUploaded": "Все файлы должны быть загружены перед сохранением" + } +} diff --git a/web/i18n/ru-RU/dataset-documents.ts b/web/i18n/ru-RU/dataset-documents.ts deleted file mode 100644 index d3093d383b..0000000000 --- a/web/i18n/ru-RU/dataset-documents.ts +++ /dev/null @@ -1,408 +0,0 @@ -const translation = { - list: { - title: 'Документы', - desc: 'Здесь отображаются все файлы базы знаний, и вся база знаний может быть связана с цитатами Dify или проиндексирована с помощью чата.', - addFile: 'Добавить файл', - addPages: 'Добавить страницы', - addUrl: 'Добавить URL', - table: { - header: { - fileName: 'НАЗВАНИЕ ФАЙЛА', - words: 'СЛОВА', - hitCount: 'КОЛИЧЕСТВО ОБРАЩЕНИЙ', - uploadTime: 'ВРЕМЯ ЗАГРУЗКИ', - status: 'СТАТУС', - action: 'ДЕЙСТВИЕ', - chunkingMode: 'РЕЖИМ ДРОБЛЕНИЯ', - }, - rename: 'Переименовать', - name: 'Название', - }, - action: { - uploadFile: 'Загрузить новый файл', - settings: 'Настройки сегментации', - addButton: 'Добавить фрагмент', - add: 'Добавить фрагмент', - batchAdd: 'Пакетное добавление', - archive: 'Архивировать', - unarchive: 'Разархивировать', - delete: 'Удалить', - enableWarning: 'Архивный файл не может быть включен', - sync: 'Синхронизировать', - resume: 'Возобновить', - pause: 'Пауза', - }, - index: { - enable: 'Включить', - disable: 'Отключить', - all: 'Все', - enableTip: 'Файл может быть проиндексирован', - disableTip: 'Файл не может быть проиндексирован', - }, - status: { - queuing: 'В очереди', - indexing: 'Индексация', - paused: 'Приостановлено', - error: 'Ошибка', - available: 'Доступно', - enabled: 'Включено', - disabled: 'Отключено', - archived: 'Архивировано', - }, - empty: { - title: 'Пока нет документов', - upload: { - tip: 'Вы можете загружать файлы, синхронизировать с веб-сайта или из веб-приложений, таких как Notion, GitHub и т. д.', - }, - sync: { - tip: 'Dify будет периодически загружать файлы из вашего Notion и завершать обработку.', - }, - }, - delete: { - title: 'Вы уверены, что хотите удалить?', - content: 'Если вам нужно будет возобновить обработку позже, вы продолжите с того места, где остановились', - }, - batchModal: { - title: 'Пакетное добавление фрагментов', - csvUploadTitle: 'Перетащите сюда свой CSV-файл или ', - browse: 'обзор', - tip: 'CSV-файл должен соответствовать следующей структуре:', - question: 'вопрос', - answer: 'ответ', - contentTitle: 'содержимое фрагмента', - content: 'содержимое', - template: 'Скачать шаблон здесь', - cancel: 'Отмена', - run: 'Запустить пакет', - runError: 'Ошибка запуска пакета', - processing: 'В процессе пакетной обработки', - completed: 'Импорт завершен', - error: 'Ошибка импорта', - ok: 'ОК', - }, - learnMore: 'Подробнее', - sort: { - uploadTime: 'Время загрузки', - hitCount: 'Количество извлечений', - }, - }, - metadata: { - title: 'Метаданные', - desc: 'Маркировка метаданных для документов позволяет ИИ своевременно получать к ним доступ и раскрывать источник ссылок для пользователей.', - dateTimeFormat: 'D MMMM YYYY, HH:mm', - docTypeSelectTitle: 'Пожалуйста, выберите тип документа', - docTypeChangeTitle: 'Изменить тип документа', - docTypeSelectWarning: - 'Если тип документа будет изменен, заполненные сейчас метаданные больше не будут сохранены', - firstMetaAction: 'Поехали', - placeholder: { - add: 'Добавить ', - select: 'Выбрать ', - }, - source: { - upload_file: 'Загрузить файл', - notion: 'Синхронизировать из Notion', - github: 'Синхронизировать из Github', - local_file: 'Локальный файл', - online_document: 'Онлайн-документ', - website_crawl: 'Сканирование сайта', - }, - type: { - book: 'Книга', - webPage: 'Веб-страница', - paper: 'Статья', - socialMediaPost: 'Пост в социальных сетях', - personalDocument: 'Личный документ', - businessDocument: 'Деловой документ', - IMChat: 'Чат в мессенджере', - wikipediaEntry: 'Статья в Википедии', - notion: 'Синхронизировать из Notion', - github: 'Синхронизировать из Github', - technicalParameters: 'Технические параметры', - }, - field: { - processRule: { - processDoc: 'Обработка документа', - segmentRule: 'Правило фрагментации', - segmentLength: 'Длина фрагментов', - processClean: 'Очистка текста', - }, - book: { - title: 'Название', - language: 'Язык', - author: 'Автор', - publisher: 'Издатель', - publicationDate: 'Дата публикации', - ISBN: 'ISBN', - category: 'Категория', - }, - webPage: { - title: 'Название', - url: 'URL', - language: 'Язык', - authorPublisher: 'Автор/Издатель', - publishDate: 'Дата публикации', - topicKeywords: 'Темы/Ключевые слова', - 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: 'Предварительный просмотр абзацев будет доступен после завершения расчета эмбеддингов', - parentMaxTokens: 'Родитель', - childMaxTokens: 'Ребёнок', - hierarchical: 'Родитель-дочерний', - pause: 'Пауза', - waiting: 'Ожидание встраивания...', - }, - segment: { - paragraphs: 'Абзацы', - keywords: 'Ключевые слова', - addKeyWord: 'Добавить ключевое слово', - keywordError: 'Максимальная длина ключевого слова - 20', - hitCount: 'Количество обращений', - vectorHash: 'Векторный хэш: ', - questionPlaceholder: 'добавьте вопрос здесь', - questionEmpty: 'Вопрос не может быть пустым', - answerPlaceholder: 'добавьте ответ здесь', - answerEmpty: 'Ответ не может быть пустым', - contentPlaceholder: 'добавьте содержимое здесь', - contentEmpty: 'Содержимое не может быть пустым', - newTextSegment: 'Новый текстовый сегмент', - newQaSegment: 'Новый сегмент вопрос-ответ', - delete: 'Удалить этот фрагмент?', - chunks_other: 'КУСКИ', - searchResults_one: 'РЕЗУЛЬТАТ', - parentChunk: 'Родительский блок', - characters_other: 'письмена', - edited: 'ОТРЕДАКТИРОВАНЫ', - regenerationSuccessMessage: 'Вы можете закрыть это окно.', - searchResults_other: 'РЕЗУЛЬТАТЫ', - regeneratingTitle: 'Регенерация дочерних блоков', - parentChunks_one: 'РОДИТЕЛЬСКИЙ БЛОК', - childChunk: 'Чайлд-Чанк', - editedAt: 'Отредактировано в', - dateTimeFormat: 'MM/DD/YYYY h:mm', - editChildChunk: 'Редактирование дочернего фрагмента', - parentChunks_other: 'РОДИТЕЛЬСКИЕ БЛОКИ', - regenerationSuccessTitle: 'Регенерация завершена', - childChunks_one: 'ДОЧЕРНИЙ ЧАНК', - newChunk: 'Новый чанк', - addAnother: 'Добавить еще один', - clearFilter: 'Очистить фильтр', - addChunk: 'Добавить чанк', - editParentChunk: 'Редактирование родительского блока', - chunkDetail: 'Деталь Чанка', - regenerationConfirmMessage: 'При повторном создании дочерних блоков текущие дочерние блоки будут перезаписаны, включая отредактированные и вновь добавленные блоки. Регенерацию нельзя отменить.', - collapseChunks: 'Сворачивание кусков', - regenerationConfirmTitle: 'Вы хотите регенерировать дочерние куски?', - searchResults_zero: 'РЕЗУЛЬТАТ', - childChunks_other: 'ДЕТСКИЕ КУСОЧКИ', - childChunkAdded: 'Добавлен 1 дочерний чанк', - editChunk: 'Редактировать фрагмент', - empty: 'Чанк не найден', - chunks_one: 'ЛОМОТЬ', - regeneratingMessage: 'Это может занять некоторое время, пожалуйста, подождите...', - chunkAdded: 'Добавлен 1 блок', - chunk: 'Ломоть', - expandChunks: 'Развернуть чанки', - characters_one: 'характер', - addChildChunk: 'Добавить дочерний чанк', - newChildChunk: 'Новый дочерний чанк', - keywordEmpty: 'Ключевое слово не может быть пустым', - keywordDuplicate: 'Ключевое слово уже существует', - allFilesUploaded: 'Все файлы должны быть загружены перед сохранением', - }, -} - -export default translation diff --git a/web/i18n/ru-RU/dataset-hit-testing.json b/web/i18n/ru-RU/dataset-hit-testing.json new file mode 100644 index 0000000000..ef5d984674 --- /dev/null +++ b/web/i18n/ru-RU/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "Тестирование поиска", + "desc": "Проверьте эффективность поиска в базе знаний на основе заданного текста запроса.", + "dateTimeFormat": "DD.MM.YYYY HH:mm", + "table": { + "header": { + "source": "Источник", + "time": "Время", + "queryContent": "Содержимое запроса" + } + }, + "input": { + "title": "Исходный текст", + "placeholder": "Пожалуйста, введите текст, рекомендуется использовать короткое повествовательное предложение.", + "countWarning": "До 200 символов.", + "indexWarning": "Только база знаний высокого качества.", + "testing": "Тестирование" + }, + "hit": { + "title": "НАЙДЕННЫЕ АБЗАЦЫ", + "emptyTip": "Результаты тестирования поиска будут отображаться здесь" + }, + "noRecentTip": "Здесь нет результатов недавних запросов", + "viewChart": "Посмотреть ВЕКТОРНУЮ ДИАГРАММУ", + "viewDetail": "Подробнее", + "settingTitle": "Настройка извлечения", + "records": "Записи", + "hitChunks": "Попадание {{num}} дочерних чанков", + "chunkDetail": "Деталь Чанка", + "open": "Открытый", + "keyword": "Ключевые слова", + "imageUploader": { + "tip": "Загрузите или перетащите изображения (Макс. {{batchCount}}, {{size}} МБ каждое)", + "tooltip": "Загрузите изображения (макс. {{batchCount}}, {{size}} МБ каждое)", + "dropZoneTip": "Перетащите файл сюда для загрузки", + "singleChunkAttachmentLimitTooltip": "Количество одноэлементных вложений не может превышать {{limit}}" + } +} diff --git a/web/i18n/ru-RU/dataset-hit-testing.ts b/web/i18n/ru-RU/dataset-hit-testing.ts deleted file mode 100644 index 9e9b5da9e9..0000000000 --- a/web/i18n/ru-RU/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - title: 'Тестирование поиска', - desc: 'Проверьте эффективность поиска в базе знаний на основе заданного текста запроса.', - dateTimeFormat: 'DD.MM.YYYY HH:mm', - table: { - header: { - source: 'Источник', - time: 'Время', - queryContent: 'Содержимое запроса', - }, - }, - input: { - title: 'Исходный текст', - placeholder: 'Пожалуйста, введите текст, рекомендуется использовать короткое повествовательное предложение.', - countWarning: 'До 200 символов.', - indexWarning: 'Только база знаний высокого качества.', - testing: 'Тестирование', - }, - hit: { - title: 'НАЙДЕННЫЕ АБЗАЦЫ', - emptyTip: 'Результаты тестирования поиска будут отображаться здесь', - }, - noRecentTip: 'Здесь нет результатов недавних запросов', - viewChart: 'Посмотреть ВЕКТОРНУЮ ДИАГРАММУ', - viewDetail: 'Подробнее', - settingTitle: 'Настройка извлечения', - records: 'Записи', - hitChunks: 'Попадание {{num}} дочерних чанков', - chunkDetail: 'Деталь Чанка', - open: 'Открытый', - keyword: 'Ключевые слова', - imageUploader: { - tip: 'Загрузите или перетащите изображения (Макс. {{batchCount}}, {{size}} МБ каждое)', - tooltip: 'Загрузите изображения (макс. {{batchCount}}, {{size}} МБ каждое)', - dropZoneTip: 'Перетащите файл сюда для загрузки', - singleChunkAttachmentLimitTooltip: 'Количество одноэлементных вложений не может превышать {{limit}}', - }, -} - -export default translation diff --git a/web/i18n/ru-RU/dataset-pipeline.json b/web/i18n/ru-RU/dataset-pipeline.json new file mode 100644 index 0000000000..c38ba08489 --- /dev/null +++ b/web/i18n/ru-RU/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "createFromScratch": { + "title": "Пустой конвейер знаний", + "description": "Создайте кастомный конвейер с нуля с полным контролем над обработкой и структурой данных." + }, + "importDSL": "Импорт из файла DSL", + "caution": "Осторожность", + "backToKnowledge": "Назад к знаниям", + "createKnowledge": "Создание знаний", + "successTip": "Успешно создали базу знаний", + "errorTip": "Не удалось создать базу знаний" + }, + "templates": { + "customized": "Настроить" + }, + "operations": { + "choose": "Выбирать", + "process": "Процесс", + "details": "Подробности", + "dataSource": "Источник данных", + "preview": "Предварительный просмотр", + "saveAndProcess": "Сохранение и переработка", + "backToDataSource": "Вернуться к источнику данных", + "editInfo": "Редактировать информацию", + "useTemplate": "Использование этого конвейера знаний", + "convert": "Обращать", + "exportPipeline": "Экспортный конвейер" + }, + "deletePipeline": { + "title": "Вы уверены, что удалите этот шаблон воронки продаж?", + "content": "Удаление шаблона конвейера является необратимым." + }, + "publishPipeline": { + "success": { + "message": "Опубликован конвейер знаний", + "tip": "Перейдите в «Документы», чтобы добавить или управлять документами." + }, + "error": { + "message": "Не удалось опубликовать конвейер знаний" + } + }, + "publishTemplate": { + "success": { + "learnMore": "Подробнее", + "message": "Опубликован шаблон конвейера", + "tip": "Вы можете использовать этот шаблон на странице создания." + }, + "error": { + "message": "Не удалось опубликовать шаблон конвейера" + } + }, + "exportDSL": { + "successTip": "Экспорт конвейера DSL успешно", + "errorTip": "Не удалось экспортировать DSL конвейера" + }, + "details": { + "structure": "Структура", + "structureTooltip": "Структура блоков определяет порядок разделения и индексирования документов (в соответствии с режимами «Общие», «Родитель-потомок» и «Вопросы и ответы») и является уникальной для каждой базы знаний.", + "createdBy": "По {{author}}" + }, + "testRun": { + "steps": { + "dataSource": "Источник данных", + "documentProcessing": "Обработка документов" + }, + "dataSource": { + "localFiles": "Локальные файлы" + }, + "notion": { + "docTitle": "Документация по Notion", + "title": "Выберите страницы Notion" + }, + "title": "Тестовый прогон", + "tooltip": "В режиме тестового прогона одновременно разрешается импортировать только один документ для упрощения отладки и наблюдения." + }, + "inputFieldPanel": { + "uniqueInputs": { + "title": "Уникальные входы для каждого входа", + "tooltip": "Уникальные входные данные доступны только выбранному источнику данных и его нижестоящим узлам. Пользователям не нужно будет заполнять его при выборе других источников данных. На первом шаге (Data Source) будут отображаться только поля ввода, на которые ссылаются переменные источника данных. Все остальные поля будут показаны на втором шаге (Process Documents)." + }, + "globalInputs": { + "title": "Глобальные входы для всех входов", + "tooltip": "Глобальные входные данные являются общими для всех узлов. Пользователям потребуется ввести их при выборе любого источника данных. Например, такие поля, как разделитель и максимальная длина блока, могут быть единообразно применены к нескольким источникам данных. На первом шаге отображаются только поля ввода, на которые ссылаются переменные источника данных (Data Source). Все остальные поля отображаются на втором шаге (Process Documents)." + }, + "preview": { + "stepOneTitle": "Источник данных", + "stepTwoTitle": "Документы по процессу" + }, + "error": { + "variableDuplicate": "Имя переменной уже существует. Пожалуйста, выберите другое название." + }, + "addInputField": "Добавить поле ввода", + "editInputField": "Редактировать поле ввода", + "title": "Поля ввода данных пользователем", + "description": "Поля ввода данных пользователем используются для определения и сбора переменных, необходимых в процессе выполнения конвейера. Пользователи могут настраивать тип поля и гибко настраивать входное значение в соответствии с потребностями различных источников данных или этапов обработки документов." + }, + "addDocuments": { + "steps": { + "processDocuments": "Документы по процессу", + "chooseDatasource": "Выбор источника данных", + "processingDocuments": "Обработка документов" + }, + "stepOne": { + "preview": "Предварительный просмотр" + }, + "stepTwo": { + "chunkSettings": "Настройки чанка", + "previewChunks": "Предварительный просмотр чанков" + }, + "stepThree": { + "learnMore": "Подробнее" + }, + "characters": "письмена", + "backToDataSource": "Источник данных", + "title": "Добавить документы", + "selectOnlineDocumentTip": "Обработать до {{count}} страниц", + "selectOnlineDriveTip": "Обрабатывайте до {{count}} файлов, максимум {{fileSize}} МБ каждый" + }, + "documentSettings": { + "title": "Настройки документа" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} страниц" + }, + "onlineDrive": { + "breadcrumbs": { + "allFiles": "Все файлы", + "searchPlaceholder": "Поиск файлов...", + "allBuckets": "Все корзины облачного хранилища", + "searchResult": "Найти {{searchResultsLength}} элементов в папке \"{{folderName}}\"" + }, + "resetKeywords": "Сброс ключевых слов", + "emptyFolder": "Эта папка пуста", + "emptySearchResult": "Предметы не найдены", + "notSupportedFileType": "Этот тип файлов не поддерживается", + "notConnected": "{{name}} не подключен", + "notConnectedTip": "Чтобы синхронизироваться с {{name}}, сначала необходимо установить соединение с {{name}}." + }, + "conversion": { + "confirm": { + "title": "Подтверждение", + "content": "Это действие является постоянным. Вы не сможете вернуться к предыдущему методу. Пожалуйста, подтвердите конвертацию." + }, + "title": "Конвертация в конвейер знаний", + "warning": "Это действие нельзя отменить.", + "errorMessage": "Не удалось преобразовать набор данных в конвейер", + "successMessage": "Успешное преобразование набора данных в конвейер", + "descriptionChunk2": "— более открытый и гибкий подход с доступом к плагинам из нашего маркетплейса. Это позволит применить новый метод обработки ко всем будущим документам.", + "descriptionChunk1": "Теперь вы можете преобразовать существующую базу знаний для использования конвейера знаний для обработки документов" + }, + "knowledgeDescription": "Описание знаний", + "inputField": "Поле ввода", + "knowledgePermissions": "Разрешения", + "pipelineNameAndIcon": "Имя и иконка конвейера", + "knowledgeNameAndIcon": "Имя и значок базы знаний", + "knowledgeNameAndIconPlaceholder": "Пожалуйста, введите название базы знаний", + "editPipelineInfo": "Редактирование сведений о воронке продаж", + "knowledgeDescriptionPlaceholder": "Опишите, что входит в эту базу знаний. Подробное описание позволяет ИИ более точно получать доступ к содержимому набора данных. Если значение пусто, Dify будет использовать стратегию попадания по умолчанию. (Дополнительный)", + "configurationTip": "Настроить {{pluginName}}" +} diff --git a/web/i18n/ru-RU/dataset-pipeline.ts b/web/i18n/ru-RU/dataset-pipeline.ts deleted file mode 100644 index 6fee138fc6..0000000000 --- a/web/i18n/ru-RU/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - createFromScratch: { - title: 'Пустой конвейер знаний', - description: 'Создайте кастомный конвейер с нуля с полным контролем над обработкой и структурой данных.', - }, - importDSL: 'Импорт из файла DSL', - caution: 'Осторожность', - backToKnowledge: 'Назад к знаниям', - createKnowledge: 'Создание знаний', - successTip: 'Успешно создали базу знаний', - errorTip: 'Не удалось создать базу знаний', - }, - templates: { - customized: 'Настроить', - }, - operations: { - choose: 'Выбирать', - process: 'Процесс', - details: 'Подробности', - dataSource: 'Источник данных', - preview: 'Предварительный просмотр', - saveAndProcess: 'Сохранение и переработка', - backToDataSource: 'Вернуться к источнику данных', - editInfo: 'Редактировать информацию', - useTemplate: 'Использование этого конвейера знаний', - convert: 'Обращать', - exportPipeline: 'Экспортный конвейер', - }, - deletePipeline: { - title: 'Вы уверены, что удалите этот шаблон воронки продаж?', - content: 'Удаление шаблона конвейера является необратимым.', - }, - publishPipeline: { - success: { - message: 'Опубликован конвейер знаний', - tip: 'Перейдите в «Документы», чтобы добавить или управлять документами.', - }, - error: { - message: 'Не удалось опубликовать конвейер знаний', - }, - }, - publishTemplate: { - success: { - learnMore: 'Подробнее', - message: 'Опубликован шаблон конвейера', - tip: 'Вы можете использовать этот шаблон на странице создания.', - }, - error: { - message: 'Не удалось опубликовать шаблон конвейера', - }, - }, - exportDSL: { - successTip: 'Экспорт конвейера DSL успешно', - errorTip: 'Не удалось экспортировать DSL конвейера', - }, - details: { - structure: 'Структура', - structureTooltip: 'Структура блоков определяет порядок разделения и индексирования документов (в соответствии с режимами «Общие», «Родитель-потомок» и «Вопросы и ответы») и является уникальной для каждой базы знаний.', - createdBy: 'По {{author}}', - }, - testRun: { - steps: { - dataSource: 'Источник данных', - documentProcessing: 'Обработка документов', - }, - dataSource: { - localFiles: 'Локальные файлы', - }, - notion: { - docTitle: 'Документация по Notion', - title: 'Выберите страницы Notion', - }, - title: 'Тестовый прогон', - tooltip: 'В режиме тестового прогона одновременно разрешается импортировать только один документ для упрощения отладки и наблюдения.', - }, - inputFieldPanel: { - uniqueInputs: { - title: 'Уникальные входы для каждого входа', - tooltip: 'Уникальные входные данные доступны только выбранному источнику данных и его нижестоящим узлам. Пользователям не нужно будет заполнять его при выборе других источников данных. На первом шаге (Data Source) будут отображаться только поля ввода, на которые ссылаются переменные источника данных. Все остальные поля будут показаны на втором шаге (Process Documents).', - }, - globalInputs: { - title: 'Глобальные входы для всех входов', - tooltip: 'Глобальные входные данные являются общими для всех узлов. Пользователям потребуется ввести их при выборе любого источника данных. Например, такие поля, как разделитель и максимальная длина блока, могут быть единообразно применены к нескольким источникам данных. На первом шаге отображаются только поля ввода, на которые ссылаются переменные источника данных (Data Source). Все остальные поля отображаются на втором шаге (Process Documents).', - }, - preview: { - stepOneTitle: 'Источник данных', - stepTwoTitle: 'Документы по процессу', - }, - error: { - variableDuplicate: 'Имя переменной уже существует. Пожалуйста, выберите другое название.', - }, - addInputField: 'Добавить поле ввода', - editInputField: 'Редактировать поле ввода', - title: 'Поля ввода данных пользователем', - description: 'Поля ввода данных пользователем используются для определения и сбора переменных, необходимых в процессе выполнения конвейера. Пользователи могут настраивать тип поля и гибко настраивать входное значение в соответствии с потребностями различных источников данных или этапов обработки документов.', - }, - addDocuments: { - steps: { - processDocuments: 'Документы по процессу', - chooseDatasource: 'Выбор источника данных', - processingDocuments: 'Обработка документов', - }, - stepOne: { - preview: 'Предварительный просмотр', - }, - stepTwo: { - chunkSettings: 'Настройки чанка', - previewChunks: 'Предварительный просмотр чанков', - }, - stepThree: { - learnMore: 'Подробнее', - }, - characters: 'письмена', - backToDataSource: 'Источник данных', - title: 'Добавить документы', - selectOnlineDocumentTip: 'Обработать до {{count}} страниц', - selectOnlineDriveTip: 'Обрабатывайте до {{count}} файлов, максимум {{fileSize}} МБ каждый', - }, - documentSettings: { - title: 'Настройки документа', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} страниц', - }, - onlineDrive: { - breadcrumbs: { - allFiles: 'Все файлы', - searchPlaceholder: 'Поиск файлов...', - allBuckets: 'Все корзины облачного хранилища', - searchResult: 'Найти {{searchResultsLength}} элементов в папке "{{folderName}}"', - }, - resetKeywords: 'Сброс ключевых слов', - emptyFolder: 'Эта папка пуста', - emptySearchResult: 'Предметы не найдены', - notSupportedFileType: 'Этот тип файлов не поддерживается', - notConnected: '{{name}} не подключен', - notConnectedTip: 'Чтобы синхронизироваться с {{name}}, сначала необходимо установить соединение с {{name}}.', - }, - conversion: { - confirm: { - title: 'Подтверждение', - content: 'Это действие является постоянным. Вы не сможете вернуться к предыдущему методу. Пожалуйста, подтвердите конвертацию.', - }, - title: 'Конвертация в конвейер знаний', - warning: 'Это действие нельзя отменить.', - errorMessage: 'Не удалось преобразовать набор данных в конвейер', - successMessage: 'Успешное преобразование набора данных в конвейер', - descriptionChunk2: '— более открытый и гибкий подход с доступом к плагинам из нашего маркетплейса. Это позволит применить новый метод обработки ко всем будущим документам.', - descriptionChunk1: 'Теперь вы можете преобразовать существующую базу знаний для использования конвейера знаний для обработки документов', - }, - knowledgeDescription: 'Описание знаний', - inputField: 'Поле ввода', - knowledgePermissions: 'Разрешения', - pipelineNameAndIcon: 'Имя и иконка конвейера', - knowledgeNameAndIcon: 'Имя и значок базы знаний', - knowledgeNameAndIconPlaceholder: 'Пожалуйста, введите название базы знаний', - editPipelineInfo: 'Редактирование сведений о воронке продаж', - knowledgeDescriptionPlaceholder: 'Опишите, что входит в эту базу знаний. Подробное описание позволяет ИИ более точно получать доступ к содержимому набора данных. Если значение пусто, Dify будет использовать стратегию попадания по умолчанию. (Дополнительный)', - configurationTip: 'Настроить {{pluginName}}', -} - -export default translation diff --git a/web/i18n/ru-RU/dataset-settings.json b/web/i18n/ru-RU/dataset-settings.json new file mode 100644 index 0000000000..175070bd51 --- /dev/null +++ b/web/i18n/ru-RU/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "Настройки базы знаний", + "desc": "Здесь вы можете изменить свойства и методы работы базы знаний.", + "form": { + "name": "Название базы знаний", + "namePlaceholder": "Пожалуйста, введите название базы знаний", + "nameError": "Название не может быть пустым", + "desc": "Описание базы знаний", + "descInfo": "Пожалуйста, напишите четкое текстовое описание, чтобы обрисовать содержание базы знаний. Это описание будет использоваться в качестве основы для сопоставления при выборе из нескольких баз знаний для вывода.", + "descPlaceholder": "Опишите, что находится в этой базе знаний. Подробное описание позволяет ИИ своевременно получать доступ к содержимому базы знаний. Если оставить пустым, Dify будет использовать стратегию поиска по умолчанию.", + "descWrite": "Узнайте, как написать хорошее описание базы знаний.", + "permissions": "Разрешения", + "permissionsOnlyMe": "Только я", + "permissionsAllMember": "Все участники команды", + "permissionsInvitedMembers": "Отдельные участники команды", + "me": "(Вы)", + "indexMethod": "Метод индексации", + "indexMethodHighQuality": "Высокое качество", + "indexMethodHighQualityTip": "Вызов модели встраивания для обработки, чтобы обеспечить более высокую точность при запросах пользователей.", + "indexMethodEconomy": "Экономичный", + "indexMethodEconomyTip": "Используйте автономные векторные движки, индексы ключевых слов и т. д., чтобы снизить точность, не тратя токены", + "embeddingModel": "Модель встраивания", + "embeddingModelTip": "Изменить встроенную модель, пожалуйста, перейдите в ", + "embeddingModelTipLink": "Настройки", + "retrievalSetting": { + "title": "Настройки поиска", + "learnMore": "Узнать больше", + "description": " о методе поиска.", + "longDescription": " о методе поиска, вы можете изменить это в любое время в настройках базы знаний.", + "method": "Метод извлечения", + "multiModalTip": "Когда модель встраивания поддерживает мультимодальность, пожалуйста, выберите мультимодальную модель повторной ранжировки для лучшей производительности." + }, + "save": "Сохранить", + "externalKnowledgeAPI": "API внешних знаний", + "retrievalSettings": "Настройки извлечения", + "externalKnowledgeID": "Внешний идентификатор базы знаний", + "helpText": "Узнайте, как написать хорошее описание набора данных.", + "upgradeHighQualityTip": "После обновления до режима «Высокое качество» возврат к экономичному режиму невозможен", + "indexMethodChangeToEconomyDisabledTip": "Недоступно для понижения уровня с HQ до ECO", + "searchModel": "Поиск модели", + "chunkStructure": { + "learnMore": "Подробнее", + "title": "Структура чанка", + "description": "о структуре чанка." + }, + "nameAndIcon": "Имя и иконка", + "numberOfKeywords": "Количество ключевых слов", + "onSearchResults": "Ни один участник не соответствует вашему поисковому запросу.\nПовторите попытку поиска." + } +} diff --git a/web/i18n/ru-RU/dataset-settings.ts b/web/i18n/ru-RU/dataset-settings.ts deleted file mode 100644 index 7ce247bd94..0000000000 --- a/web/i18n/ru-RU/dataset-settings.ts +++ /dev/null @@ -1,52 +0,0 @@ -const translation = { - title: 'Настройки базы знаний', - desc: 'Здесь вы можете изменить свойства и методы работы базы знаний.', - form: { - name: 'Название базы знаний', - namePlaceholder: 'Пожалуйста, введите название базы знаний', - nameError: 'Название не может быть пустым', - desc: 'Описание базы знаний', - descInfo: 'Пожалуйста, напишите четкое текстовое описание, чтобы обрисовать содержание базы знаний. Это описание будет использоваться в качестве основы для сопоставления при выборе из нескольких баз знаний для вывода.', - descPlaceholder: 'Опишите, что находится в этой базе знаний. Подробное описание позволяет ИИ своевременно получать доступ к содержимому базы знаний. Если оставить пустым, Dify будет использовать стратегию поиска по умолчанию.', - descWrite: 'Узнайте, как написать хорошее описание базы знаний.', - permissions: 'Разрешения', - permissionsOnlyMe: 'Только я', - permissionsAllMember: 'Все участники команды', - permissionsInvitedMembers: 'Отдельные участники команды', - me: '(Вы)', - indexMethod: 'Метод индексации', - indexMethodHighQuality: 'Высокое качество', - indexMethodHighQualityTip: 'Вызов модели встраивания для обработки, чтобы обеспечить более высокую точность при запросах пользователей.', - indexMethodEconomy: 'Экономичный', - indexMethodEconomyTip: 'Используйте автономные векторные движки, индексы ключевых слов и т. д., чтобы снизить точность, не тратя токены', - embeddingModel: 'Модель встраивания', - embeddingModelTip: 'Изменить встроенную модель, пожалуйста, перейдите в ', - embeddingModelTipLink: 'Настройки', - retrievalSetting: { - title: 'Настройки поиска', - learnMore: 'Узнать больше', - description: ' о методе поиска.', - longDescription: ' о методе поиска, вы можете изменить это в любое время в настройках базы знаний.', - method: 'Метод извлечения', - multiModalTip: 'Когда модель встраивания поддерживает мультимодальность, пожалуйста, выберите мультимодальную модель повторной ранжировки для лучшей производительности.', - }, - save: 'Сохранить', - externalKnowledgeAPI: 'API внешних знаний', - retrievalSettings: 'Настройки извлечения', - externalKnowledgeID: 'Внешний идентификатор базы знаний', - helpText: 'Узнайте, как написать хорошее описание набора данных.', - upgradeHighQualityTip: 'После обновления до режима «Высокое качество» возврат к экономичному режиму невозможен', - indexMethodChangeToEconomyDisabledTip: 'Недоступно для понижения уровня с HQ до ECO', - searchModel: 'Поиск модели', - chunkStructure: { - learnMore: 'Подробнее', - title: 'Структура чанка', - description: 'о структуре чанка.', - }, - nameAndIcon: 'Имя и иконка', - numberOfKeywords: 'Количество ключевых слов', - onSearchResults: 'Ни один участник не соответствует вашему поисковому запросу.\nПовторите попытку поиска.', - }, -} - -export default translation diff --git a/web/i18n/ru-RU/dataset.json b/web/i18n/ru-RU/dataset.json new file mode 100644 index 0000000000..c7544e2bf1 --- /dev/null +++ b/web/i18n/ru-RU/dataset.json @@ -0,0 +1,249 @@ +{ + "knowledge": "База знаний", + "documentCount": " документов", + "wordCount": " тыс. слов", + "appCount": " связанных приложений", + "createDataset": "Создать базу знаний", + "createDatasetIntro": "Импортируйте свои собственные текстовые данные или записывайте данные в режиме реального времени через Webhook для улучшения контекста LLM.", + "deleteDatasetConfirmTitle": "Удалить эту базу знаний?", + "deleteDatasetConfirmContent": "Удаление базы знаний необратимо. Пользователи больше не смогут получить доступ к вашей базе знаний, и все настройки подсказок и журналы будут безвозвратно удалены.", + "datasetUsedByApp": "База знаний используется некоторыми приложениями. Приложения больше не смогут использовать эту базу знаний, и все настройки подсказок и журналы будут безвозвратно удалены.", + "datasetDeleted": "База знаний удалена", + "datasetDeleteFailed": "Не удалось удалить базу знаний", + "didYouKnow": "Знаете ли вы?", + "intro1": "Базу знаний можно интегрировать в приложение Dify ", + "intro2": "в качестве контекста", + "intro3": ",", + "intro4": "или ее ", + "intro5": "можно создать", + "intro6": " как отдельный плагин индекса ChatGPT для публикации", + "unavailable": "Недоступно", + "datasets": "БАЗЫ ЗНАНИЙ", + "datasetsApi": "ДОСТУП К API", + "retrieval": { + "semantic_search": { + "title": "Векторный поиск", + "description": "Создайте встраивания запросов и найдите фрагмент текста, наиболее похожий на его векторное представление." + }, + "full_text_search": { + "title": "Полнотекстовый поиск", + "description": "Индексируйте все термины в документе, позволяя пользователям искать любой термин и извлекать соответствующий фрагмент текста, содержащий эти термины." + }, + "hybrid_search": { + "title": "Гибридный поиск", + "description": "Выполняйте полнотекстовый поиск и векторный поиск одновременно, переранжируйте, чтобы выбрать наилучшее соответствие запросу пользователя. Пользователи могут выбрать установку весов или настройку модели переранжирования.", + "recommend": "Рекомендуется" + }, + "invertedIndex": {}, + "change": "Изменить", + "changeRetrievalMethod": "Изменить метод поиска", + "keyword_search": { + "title": "Инвертированный индекс", + "description": "Инвертированный индекс — это структура, используемая для эффективного извлечения. Каждый термин упорядочен по терминам и указывает на документы или веб-страницы, содержащие его." + } + }, + "docsFailedNotice": "документов не удалось проиндексировать", + "retry": "Повторить попытку", + "indexingTechnique": { + "high_quality": "HQ", + "economy": "ECO" + }, + "indexingMethod": { + "semantic_search": "ВЕКТОР", + "full_text_search": "ПОЛНЫЙ ТЕКСТ", + "hybrid_search": "ГИБРИД", + "invertedIndex": "ИНВЕРТИРОВАННЫЙ" + }, + "mixtureHighQualityAndEconomicTip": "Для смешивания высококачественных и экономичных баз знаний требуется модель переранжирования.", + "inconsistentEmbeddingModelTip": "Модель переранжирования требуется, если модели встраивания выбранных баз знаний несовместимы.", + "retrievalSettings": "Настройки поиска", + "rerankSettings": "Настройки переранжирования", + "weightedScore": { + "title": "Взвешенная оценка", + "description": "Регулируя назначенные веса, эта стратегия переранжирования определяет, следует ли отдавать приоритет семантическому или ключевому соответствию.", + "semanticFirst": "Семантика в первую очередь", + "keywordFirst": "Ключевые слова в первую очередь", + "customized": "Настраиваемый", + "semantic": "Семантика", + "keyword": "Ключевые слова" + }, + "nTo1RetrievalLegacy": "Поиск N-к-1 будет официально прекращен с сентября. Рекомендуется использовать новейший многопутный поиск для получения лучших результатов.", + "nTo1RetrievalLegacyLink": "Узнать больше", + "nTo1RetrievalLegacyLinkText": " Поиск N-к-1 будет официально прекращен в сентябре.", + "defaultRetrievalTip": "По умолчанию используется многоканальная проверка. Знания извлекаются из нескольких баз знаний, а затем повторно ранжируются.", + "editExternalAPIConfirmWarningContent": { + "end": "внешних знаний, и эта модификация будет применена ко всем им. Вы уверены, что хотите сохранить это изменение?", + "front": "Этот API внешних знаний связан с" + }, + "editExternalAPIFormWarning": { + "end": "Внешние знания", + "front": "Этот внешний API связан с" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "end": "?", + "front": "Удалить" + }, + "content": { + "front": "Этот API внешних знаний связан с", + "end": "внешнее знание. Удаление этого API сделает их все недействительными. Вы уверены, что хотите удалить этот API?" + }, + "noConnectionContent": "Вы уверены, что удалите этот API?" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "Выбор API внешних знаний" + }, + "connectDatasetIntro": { + "content": { + "link": "Узнайте, как создать внешний API", + "front": "Чтобы подключиться к внешней базе знаний, необходимо сначала создать внешний API. Пожалуйста, внимательно прочтите и обратитесь к", + "end": ". Затем найдите соответствующий идентификатор знания и заполните его в форме слева. Если вся информация верна, он автоматически перейдет к тесту извлечения в базе знаний после нажатия кнопки подключения." + }, + "learnMore": "Подробнее", + "title": "Как подключиться к внешней базе знаний" + }, + "connectHelper": { + "helper2": "Поддерживается только функция извлечения", + "helper3": ". Мы настоятельно рекомендуем вам", + "helper4": "Ознакомьтесь с справочной документацией", + "helper5": "Будьте внимательны перед использованием этой функции.", + "helper1": "Подключение к внешним базам знаний через API и идентификатор базы знаний. В настоящее время" + }, + "externalKnowledgeForm": { + "connect": "Соединять", + "cancel": "Отмена" + }, + "externalAPIForm": { + "encrypted": { + "end": "Технологии.", + "front": "Ваш токен API будет зашифрован и сохранен с помощью" + }, + "cancel": "Отмена", + "endpoint": "Конечная точка API", + "save": "Спасать", + "edit": "Редактировать", + "name": "Имя", + "apiKey": "Ключ API" + }, + "externalKnowledgeNamePlaceholder": "Пожалуйста, введите название базы знаний", + "externalTag": "Внешний", + "learnHowToWriteGoodKnowledgeDescription": "Узнайте, как написать хорошее описание знаний", + "externalAPIPanelTitle": "API внешних знаний", + "externalKnowledgeDescription": "Описание знаний", + "editExternalAPITooltipTitle": "СВЯЗАННЫЕ ЗНАНИЯ", + "externalKnowledgeName": "Имя внешнего базы знаний", + "createExternalAPI": "Добавление API внешних знаний", + "externalKnowledgeIdPlaceholder": "Пожалуйста, введите идентификатор знаний", + "externalKnowledgeDescriptionPlaceholder": "Опишите, что входит в эту базу знаний (необязательно)", + "noExternalKnowledge": "У нас еще нет External Knowledge API, нажмите здесь, чтобы создать", + "externalAPI": "Внешний API", + "externalKnowledgeId": "Внешний идентификатор базы знаний", + "createNewExternalAPI": "Создание нового API внешних знаний", + "editExternalAPIFormTitle": "Редактирование API внешних знаний", + "connectDataset": "Подключение к внешней базе знаний", + "mixtureInternalAndExternalTip": "Модель Rerank необходима для смешивания внутренних и внешних знаний.", + "allExternalTip": "При использовании только внешних знаний пользователь может выбрать, следует ли включать модель повторного ранжирования. Если этот параметр не включен, полученные фрагменты будут сортироваться на основе баллов. Когда стратегии извлечения из разных баз знаний несовместимы, они будут неточными.", + "externalAPIPanelDocumentation": "Узнайте, как создать API внешних знаний", + "externalAPIPanelDescription": "Внешний API базы знаний используется для подключения к базе знаний за пределами Dify и извлечения знаний из этой базы знаний.", + "chunkingMode": { + "general": "Общее", + "parentChild": "Родитель-дочерний", + "graph": "График", + "qa": "Вопросы и ответы" + }, + "parentMode": { + "fullDoc": "Полный документ", + "paragraph": "Параграф" + }, + "batchAction": { + "enable": "Давать возможность", + "delete": "Удалить", + "selected": "Выбранный", + "disable": "Отключить", + "cancel": "Отмена", + "archive": "Архив" + }, + "preprocessDocument": "{{число}} Предварительная обработка документов", + "documentsDisabled": "Документы {{num}} отключены - неактивны более 30 дней", + "localDocs": "Местная документация", + "enable": "Давать возможность", + "allKnowledge": "Все знания", + "allKnowledgeDescription": "Выберите, чтобы отобразить все знания в этой рабочей области. Только владелец рабочего пространства может управлять всеми знаниями.", + "metadata": { + "createMetadata": { + "type": "Тип", + "namePlaceholder": "Добавьте имя метаданных", + "back": "назад", + "name": "Имя", + "title": "Новые метаданные" + }, + "checkName": { + "empty": "Имя метаданных не может быть пустым", + "invalid": "Имя метаданных может содержать только строчные буквы, цифры и знаки нижнего подчеркивания и должно начинаться со строчной буквы.", + "tooLong": "Имя метаданных не может превышать {{max}} символов" + }, + "batchEditMetadata": { + "applyToAllSelectDocumentTip": "Автоматически создайте все вышеуказанные редактируемые и новые метаданные для всех выбранных документов, иначе редактирование метаданных будет применяться только к документам с ними.", + "applyToAllSelectDocument": "Применить ко всем выбранным документам", + "editDocumentsNum": "Редактирование {{num}} документов", + "multipleValue": "Множественное значение", + "editMetadata": "Редактировать метаданные" + }, + "selectMetadata": { + "manageAction": "Управлять", + "newAction": "Новые метаданные", + "search": "Поиск метаданных" + }, + "datasetMetadata": { + "deleteContent": "Вы уверены, что хотите удалить метаданные \"{{name}}\"?", + "values": "{{num}} Значений", + "builtIn": "Встроенный", + "description": "Вы можете управлять всеми метаданными в этих знаниях здесь. Изменения будут синхронизированы с каждым документом.", + "deleteTitle": "Подтвердите удаление", + "builtInDescription": "Встроенные метаданные автоматически извлекаются и генерируются. Их необходимо активировать перед использованием, и они не подлежат редактированию.", + "addMetaData": "Добавить метаданные", + "rename": "Переименовать", + "disabled": "Отключено", + "name": "Имя", + "namePlaceholder": "Имя метаданных" + }, + "documentMetadata": { + "startLabeling": "Начать маркировку", + "documentInformation": "Информация о документе", + "metadataToolTip": "Метаданные служат важным фильтром, который повышает точность и актуальность извлечения информации. Вы можете изменить и добавить метаданные для этого документа здесь.", + "technicalParameters": "Технические параметры" + }, + "chooseTime": "Выберите время...", + "metadata": "Метаданные", + "addMetadata": "Добавить метаданные" + }, + "embeddingModelNotAvailable": "Модель встраивания недоступна.", + "updated": "Обновлено", + "externalKnowledgeBase": "Внешняя база знаний", + "createFromPipeline": "Создание из конвейера знаний", + "serviceApi": { + "card": { + "apiReference": "Справочник API", + "title": "API бэкенд-сервиса", + "apiKey": "API ключ", + "endpoint": "Конечная точка API сервиса" + }, + "enabled": "На службе", + "title": "Сервисный API", + "disabled": "Отключено" + }, + "docAllEnabled_one": "Документ {{count}} включен", + "docAllEnabled_other": "Все документы {{count}} включены", + "partialEnabled_one": "Всего {{count}} документов, доступно {{num}}", + "partialEnabled_other": "Всего {{count}} документов, доступно {{num}}", + "cornerLabel": { + "unavailable": "Недоступно", + "pipeline": "Трубопровод" + }, + "multimodal": "Мультимодальный", + "imageUploader": { + "button": "Перетащите файл или папку, или", + "browse": "Просматривать", + "tip": "{{supportTypes}} (макс. {{batchCount}}, {{size}} МБ каждый)" + } +} diff --git a/web/i18n/ru-RU/dataset.ts b/web/i18n/ru-RU/dataset.ts deleted file mode 100644 index e11a4d9d9a..0000000000 --- a/web/i18n/ru-RU/dataset.ts +++ /dev/null @@ -1,253 +0,0 @@ -const translation = { - knowledge: 'База знаний', - documentCount: ' документов', - wordCount: ' тыс. слов', - appCount: ' связанных приложений', - createDataset: 'Создать базу знаний', - createDatasetIntro: 'Импортируйте свои собственные текстовые данные или записывайте данные в режиме реального времени через Webhook для улучшения контекста LLM.', - deleteDatasetConfirmTitle: 'Удалить эту базу знаний?', - deleteDatasetConfirmContent: - 'Удаление базы знаний необратимо. Пользователи больше не смогут получить доступ к вашей базе знаний, и все настройки подсказок и журналы будут безвозвратно удалены.', - datasetUsedByApp: 'База знаний используется некоторыми приложениями. Приложения больше не смогут использовать эту базу знаний, и все настройки подсказок и журналы будут безвозвратно удалены.', - datasetDeleted: 'База знаний удалена', - datasetDeleteFailed: 'Не удалось удалить базу знаний', - didYouKnow: 'Знаете ли вы?', - intro1: 'Базу знаний можно интегрировать в приложение Dify ', - intro2: 'в качестве контекста', - intro3: ',', - intro4: 'или ее ', - intro5: 'можно создать', - intro6: ' как отдельный плагин индекса ChatGPT для публикации', - unavailable: 'Недоступно', - datasets: 'БАЗЫ ЗНАНИЙ', - datasetsApi: 'ДОСТУП К API', - retrieval: { - semantic_search: { - title: 'Векторный поиск', - description: 'Создайте встраивания запросов и найдите фрагмент текста, наиболее похожий на его векторное представление.', - }, - full_text_search: { - title: 'Полнотекстовый поиск', - description: 'Индексируйте все термины в документе, позволяя пользователям искать любой термин и извлекать соответствующий фрагмент текста, содержащий эти термины.', - }, - hybrid_search: { - title: 'Гибридный поиск', - description: 'Выполняйте полнотекстовый поиск и векторный поиск одновременно, переранжируйте, чтобы выбрать наилучшее соответствие запросу пользователя. Пользователи могут выбрать установку весов или настройку модели переранжирования.', - recommend: 'Рекомендуется', - }, - invertedIndex: { - }, - change: 'Изменить', - changeRetrievalMethod: 'Изменить метод поиска', - keyword_search: { - title: 'Инвертированный индекс', - description: 'Инвертированный индекс — это структура, используемая для эффективного извлечения. Каждый термин упорядочен по терминам и указывает на документы или веб-страницы, содержащие его.', - }, - }, - docsFailedNotice: 'документов не удалось проиндексировать', - retry: 'Повторить попытку', - indexingTechnique: { - high_quality: 'HQ', - economy: 'ECO', - }, - indexingMethod: { - semantic_search: 'ВЕКТОР', - full_text_search: 'ПОЛНЫЙ ТЕКСТ', - hybrid_search: 'ГИБРИД', - invertedIndex: 'ИНВЕРТИРОВАННЫЙ', - }, - mixtureHighQualityAndEconomicTip: 'Для смешивания высококачественных и экономичных баз знаний требуется модель переранжирования.', - inconsistentEmbeddingModelTip: 'Модель переранжирования требуется, если модели встраивания выбранных баз знаний несовместимы.', - retrievalSettings: 'Настройки поиска', - rerankSettings: 'Настройки переранжирования', - weightedScore: { - title: 'Взвешенная оценка', - description: 'Регулируя назначенные веса, эта стратегия переранжирования определяет, следует ли отдавать приоритет семантическому или ключевому соответствию.', - semanticFirst: 'Семантика в первую очередь', - keywordFirst: 'Ключевые слова в первую очередь', - customized: 'Настраиваемый', - semantic: 'Семантика', - keyword: 'Ключевые слова', - }, - nTo1RetrievalLegacy: 'Поиск N-к-1 будет официально прекращен с сентября. Рекомендуется использовать новейший многопутный поиск для получения лучших результатов.', - nTo1RetrievalLegacyLink: 'Узнать больше', - nTo1RetrievalLegacyLinkText: ' Поиск N-к-1 будет официально прекращен в сентябре.', - defaultRetrievalTip: 'По умолчанию используется многоканальная проверка. Знания извлекаются из нескольких баз знаний, а затем повторно ранжируются.', - editExternalAPIConfirmWarningContent: { - end: 'внешних знаний, и эта модификация будет применена ко всем им. Вы уверены, что хотите сохранить это изменение?', - front: 'Этот API внешних знаний связан с', - }, - editExternalAPIFormWarning: { - end: 'Внешние знания', - front: 'Этот внешний API связан с', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - end: '?', - front: 'Удалить', - }, - content: { - front: 'Этот API внешних знаний связан с', - end: 'внешнее знание. Удаление этого API сделает их все недействительными. Вы уверены, что хотите удалить этот API?', - }, - noConnectionContent: 'Вы уверены, что удалите этот API?', - }, - selectExternalKnowledgeAPI: { - placeholder: 'Выбор API внешних знаний', - }, - connectDatasetIntro: { - content: { - link: 'Узнайте, как создать внешний API', - front: 'Чтобы подключиться к внешней базе знаний, необходимо сначала создать внешний API. Пожалуйста, внимательно прочтите и обратитесь к', - end: '. Затем найдите соответствующий идентификатор знания и заполните его в форме слева. Если вся информация верна, он автоматически перейдет к тесту извлечения в базе знаний после нажатия кнопки подключения.', - }, - learnMore: 'Подробнее', - title: 'Как подключиться к внешней базе знаний', - }, - connectHelper: { - helper2: 'Поддерживается только функция извлечения', - helper3: '. Мы настоятельно рекомендуем вам', - helper4: 'Ознакомьтесь с справочной документацией', - helper5: 'Будьте внимательны перед использованием этой функции.', - helper1: 'Подключение к внешним базам знаний через API и идентификатор базы знаний. В настоящее время', - }, - externalKnowledgeForm: { - connect: 'Соединять', - cancel: 'Отмена', - }, - externalAPIForm: { - encrypted: { - end: 'Технологии.', - front: 'Ваш токен API будет зашифрован и сохранен с помощью', - }, - cancel: 'Отмена', - endpoint: 'Конечная точка API', - save: 'Спасать', - edit: 'Редактировать', - name: 'Имя', - apiKey: 'Ключ API', - }, - externalKnowledgeNamePlaceholder: 'Пожалуйста, введите название базы знаний', - externalTag: 'Внешний', - learnHowToWriteGoodKnowledgeDescription: 'Узнайте, как написать хорошее описание знаний', - externalAPIPanelTitle: 'API внешних знаний', - externalKnowledgeDescription: 'Описание знаний', - editExternalAPITooltipTitle: 'СВЯЗАННЫЕ ЗНАНИЯ', - externalKnowledgeName: 'Имя внешнего базы знаний', - createExternalAPI: 'Добавление API внешних знаний', - externalKnowledgeIdPlaceholder: 'Пожалуйста, введите идентификатор знаний', - externalKnowledgeDescriptionPlaceholder: 'Опишите, что входит в эту базу знаний (необязательно)', - noExternalKnowledge: 'У нас еще нет External Knowledge API, нажмите здесь, чтобы создать', - externalAPI: 'Внешний API', - externalKnowledgeId: 'Внешний идентификатор базы знаний', - createNewExternalAPI: 'Создание нового API внешних знаний', - editExternalAPIFormTitle: 'Редактирование API внешних знаний', - connectDataset: 'Подключение к внешней базе знаний', - mixtureInternalAndExternalTip: 'Модель Rerank необходима для смешивания внутренних и внешних знаний.', - allExternalTip: 'При использовании только внешних знаний пользователь может выбрать, следует ли включать модель повторного ранжирования. Если этот параметр не включен, полученные фрагменты будут сортироваться на основе баллов. Когда стратегии извлечения из разных баз знаний несовместимы, они будут неточными.', - externalAPIPanelDocumentation: 'Узнайте, как создать API внешних знаний', - externalAPIPanelDescription: 'Внешний API базы знаний используется для подключения к базе знаний за пределами Dify и извлечения знаний из этой базы знаний.', - chunkingMode: { - general: 'Общее', - parentChild: 'Родитель-дочерний', - graph: 'График', - qa: 'Вопросы и ответы', - }, - parentMode: { - fullDoc: 'Полный документ', - paragraph: 'Параграф', - }, - batchAction: { - enable: 'Давать возможность', - delete: 'Удалить', - selected: 'Выбранный', - disable: 'Отключить', - cancel: 'Отмена', - archive: 'Архив', - }, - preprocessDocument: '{{число}} Предварительная обработка документов', - documentsDisabled: 'Документы {{num}} отключены - неактивны более 30 дней', - localDocs: 'Местная документация', - enable: 'Давать возможность', - allKnowledge: 'Все знания', - allKnowledgeDescription: 'Выберите, чтобы отобразить все знания в этой рабочей области. Только владелец рабочего пространства может управлять всеми знаниями.', - metadata: { - createMetadata: { - type: 'Тип', - namePlaceholder: 'Добавьте имя метаданных', - back: 'назад', - name: 'Имя', - title: 'Новые метаданные', - }, - checkName: { - empty: 'Имя метаданных не может быть пустым', - invalid: 'Имя метаданных может содержать только строчные буквы, цифры и знаки нижнего подчеркивания и должно начинаться со строчной буквы.', - tooLong: 'Имя метаданных не может превышать {{max}} символов', - }, - batchEditMetadata: { - applyToAllSelectDocumentTip: 'Автоматически создайте все вышеуказанные редактируемые и новые метаданные для всех выбранных документов, иначе редактирование метаданных будет применяться только к документам с ними.', - applyToAllSelectDocument: 'Применить ко всем выбранным документам', - editDocumentsNum: 'Редактирование {{num}} документов', - multipleValue: 'Множественное значение', - editMetadata: 'Редактировать метаданные', - }, - selectMetadata: { - manageAction: 'Управлять', - newAction: 'Новые метаданные', - search: 'Поиск метаданных', - }, - datasetMetadata: { - deleteContent: 'Вы уверены, что хотите удалить метаданные "{{name}}"?', - values: '{{num}} Значений', - builtIn: 'Встроенный', - description: 'Вы можете управлять всеми метаданными в этих знаниях здесь. Изменения будут синхронизированы с каждым документом.', - deleteTitle: 'Подтвердите удаление', - builtInDescription: 'Встроенные метаданные автоматически извлекаются и генерируются. Их необходимо активировать перед использованием, и они не подлежат редактированию.', - addMetaData: 'Добавить метаданные', - rename: 'Переименовать', - disabled: 'Отключено', - name: 'Имя', - namePlaceholder: 'Имя метаданных', - }, - documentMetadata: { - startLabeling: 'Начать маркировку', - documentInformation: 'Информация о документе', - metadataToolTip: 'Метаданные служат важным фильтром, который повышает точность и актуальность извлечения информации. Вы можете изменить и добавить метаданные для этого документа здесь.', - technicalParameters: 'Технические параметры', - }, - chooseTime: 'Выберите время...', - metadata: 'Метаданные', - addMetadata: 'Добавить метаданные', - }, - embeddingModelNotAvailable: 'Модель встраивания недоступна.', - updated: 'Обновлено', - externalKnowledgeBase: 'Внешняя база знаний', - createFromPipeline: 'Создание из конвейера знаний', - serviceApi: { - card: { - apiReference: 'Справочник API', - title: 'API бэкенд-сервиса', - apiKey: 'API ключ', - endpoint: 'Конечная точка API сервиса', - }, - enabled: 'На службе', - title: 'Сервисный API', - disabled: 'Отключено', - }, - docAllEnabled_one: 'Документ {{count}} включен', - docAllEnabled_other: 'Все документы {{count}} включены', - partialEnabled_one: 'Всего {{count}} документов, доступно {{num}}', - partialEnabled_other: 'Всего {{count}} документов, доступно {{num}}', - cornerLabel: { - unavailable: 'Недоступно', - pipeline: 'Трубопровод', - }, - multimodal: 'Мультимодальный', - imageUploader: { - button: 'Перетащите файл или папку, или', - browse: 'Просматривать', - tip: '{{supportTypes}} (макс. {{batchCount}}, {{size}} МБ каждый)', - }, -} - -export default translation diff --git a/web/i18n/ru-RU/education.json b/web/i18n/ru-RU/education.json new file mode 100644 index 0000000000..2fced07eed --- /dev/null +++ b/web/i18n/ru-RU/education.json @@ -0,0 +1,74 @@ +{ + "toVerifiedTip": { + "end": "для профессионального плана Dify.", + "front": "Теперь вы имеете право на статус \"Проверенное образование\". Пожалуйста, введите свои образовательные данные ниже, чтобы завершить процесс и получить", + "coupon": "эксклюзивный 100% купон" + }, + "form": { + "schoolName": { + "title": "Название вашей школы", + "placeholder": "Введите официальное, полное название вашей школы" + }, + "schoolRole": { + "option": { + "student": "Студент", + "teacher": "Учитель", + "administrator": "Школьный администратор" + }, + "title": "Ваша школьная роль" + }, + "terms": { + "desc": { + "termsOfService": "Условия обслуживания", + "front": "Ваша информация и использование статуса Проверенное образование подлежат нашим", + "privacyPolicy": "Политика конфиденциальности", + "and": "и", + "end": ". Отправляя:" + }, + "option": { + "age": "Я подтверждаю, что мне не меньше 18 лет", + "inSchool": "Я подтверждаю, что я зачислен или работаю в указанной учреждении. Dify может запросить подтверждение зачисления/трудоустройства. Если я неправильно укажу свою правообладанность, я согласен оплатить любые сборы, которые изначально были отменены на основании моего образовательного статуса." + }, + "title": "Условия и соглашения" + } + }, + "submit": "Отправить", + "rejectTitle": "Ваша образовательная проверка Dify была отклонена", + "currentSigned": "В ДАННЫЙ МОМЕНТ ВХОД В ПРОФИЛЬ КАК", + "toVerified": "Получите подтверждение образования", + "learn": "Узнайте, как получить подтверждение образования", + "submitError": "Отправка формы не удалась. Пожалуйста, попробуйте позже.", + "successTitle": "Вы получили подтвержденное образование Dify", + "emailLabel": "Ваш текущий адрес электронной почты", + "rejectContent": "К сожалению, вы не имеете права на статус Проверенного образованием и, следовательно, не можете получить эксклюзивный купон на 100% для профессионального плана Dify, если вы используете этот адрес электронной почты.", + "successContent": "Мы выдали купон на 100% скидку на план Dify Professional для вашего аккаунта. Купон действителен в течение одного года, пожалуйста, используйте его в течение срока действия.", + "notice": { + "expired": { + "summary": { + "line1": "Вы все еще можете получить доступ к Dify и использовать его.", + "line2": "Однако вы больше не имеете права на новые купоны на скидку на образование." + }, + "title": "Ваш статус образования истек" + }, + "isAboutToExpire": { + "summary": "Не волнуйся — это не повлияет на твою текущую подписку, но ты не получишь образовательную скидку при её продлении, если не подтвердишь свой статус снова.", + "title": "Статус вашего образования истечет {{date}}" + }, + "stillInEducation": { + "title": "Все еще учишься?", + "expired": "Переутвердите сейчас, чтобы получить новый купон на предстоящий учебный год. Мы добавим его на ваш аккаунт, и вы сможете использовать его для следующего обновления.", + "isAboutToExpire": "Проверьте еще раз, чтобы получить новый купон на предстоящий учебный год. Он будет сохранен в вашем аккаунте и готов к использованию при следующем продлении." + }, + "alreadyGraduated": { + "title": "Уже окончили?", + "expired": "Не стесняйтесь обновить подписку в любое время, чтобы получить полный доступ к платным функциям.", + "isAboutToExpire": "Ваша текущая подписка останется активной. Когда она закончится, вы перейдете на план Sandbox, или вы можете в любое время обновить подписку, чтобы восстановить полный доступ к платным функциям." + }, + "action": { + "upgrade": "Обновление", + "reVerify": "Перепроверить", + "dismiss": "Отклонить" + }, + "dateFormat": "ДД/ММ/ГГГГ" + } +} diff --git a/web/i18n/ru-RU/education.ts b/web/i18n/ru-RU/education.ts deleted file mode 100644 index c45690764a..0000000000 --- a/web/i18n/ru-RU/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerifiedTip: { - end: 'для профессионального плана Dify.', - front: 'Теперь вы имеете право на статус "Проверенное образование". Пожалуйста, введите свои образовательные данные ниже, чтобы завершить процесс и получить', - coupon: 'эксклюзивный 100% купон', - }, - form: { - schoolName: { - title: 'Название вашей школы', - placeholder: 'Введите официальное, полное название вашей школы', - }, - schoolRole: { - option: { - student: 'Студент', - teacher: 'Учитель', - administrator: 'Школьный администратор', - }, - title: 'Ваша школьная роль', - }, - terms: { - desc: { - termsOfService: 'Условия обслуживания', - front: 'Ваша информация и использование статуса Проверенное образование подлежат нашим', - privacyPolicy: 'Политика конфиденциальности', - and: 'и', - end: '. Отправляя:', - }, - option: { - age: 'Я подтверждаю, что мне не меньше 18 лет', - inSchool: 'Я подтверждаю, что я зачислен или работаю в указанной учреждении. Dify может запросить подтверждение зачисления/трудоустройства. Если я неправильно укажу свою правообладанность, я согласен оплатить любые сборы, которые изначально были отменены на основании моего образовательного статуса.', - }, - title: 'Условия и соглашения', - }, - }, - submit: 'Отправить', - rejectTitle: 'Ваша образовательная проверка Dify была отклонена', - currentSigned: 'В ДАННЫЙ МОМЕНТ ВХОД В ПРОФИЛЬ КАК', - toVerified: 'Получите подтверждение образования', - learn: 'Узнайте, как получить подтверждение образования', - submitError: 'Отправка формы не удалась. Пожалуйста, попробуйте позже.', - successTitle: 'Вы получили подтвержденное образование Dify', - emailLabel: 'Ваш текущий адрес электронной почты', - rejectContent: 'К сожалению, вы не имеете права на статус Проверенного образованием и, следовательно, не можете получить эксклюзивный купон на 100% для профессионального плана Dify, если вы используете этот адрес электронной почты.', - successContent: 'Мы выдали купон на 100% скидку на план Dify Professional для вашего аккаунта. Купон действителен в течение одного года, пожалуйста, используйте его в течение срока действия.', - notice: { - expired: { - summary: { - line1: 'Вы все еще можете получить доступ к Dify и использовать его.', - line2: 'Однако вы больше не имеете права на новые купоны на скидку на образование.', - }, - title: 'Ваш статус образования истек', - }, - isAboutToExpire: { - summary: 'Не волнуйся — это не повлияет на твою текущую подписку, но ты не получишь образовательную скидку при её продлении, если не подтвердишь свой статус снова.', - title: 'Статус вашего образования истечет {{date}}', - }, - stillInEducation: { - title: 'Все еще учишься?', - expired: 'Переутвердите сейчас, чтобы получить новый купон на предстоящий учебный год. Мы добавим его на ваш аккаунт, и вы сможете использовать его для следующего обновления.', - isAboutToExpire: 'Проверьте еще раз, чтобы получить новый купон на предстоящий учебный год. Он будет сохранен в вашем аккаунте и готов к использованию при следующем продлении.', - }, - alreadyGraduated: { - title: 'Уже окончили?', - expired: 'Не стесняйтесь обновить подписку в любое время, чтобы получить полный доступ к платным функциям.', - isAboutToExpire: 'Ваша текущая подписка останется активной. Когда она закончится, вы перейдете на план Sandbox, или вы можете в любое время обновить подписку, чтобы восстановить полный доступ к платным функциям.', - }, - action: { - upgrade: 'Обновление', - reVerify: 'Перепроверить', - dismiss: 'Отклонить', - }, - dateFormat: 'ДД/ММ/ГГГГ', - }, -} - -export default translation diff --git a/web/i18n/ru-RU/explore.json b/web/i18n/ru-RU/explore.json new file mode 100644 index 0000000000..6a59e1e6a7 --- /dev/null +++ b/web/i18n/ru-RU/explore.json @@ -0,0 +1,42 @@ +{ + "title": "Обзор", + "sidebar": { + "discovery": "Открытия", + "chat": "Чат", + "workspace": "Рабочее пространство", + "action": { + "pin": "Закрепить", + "unpin": "Открепить", + "rename": "Переименовать", + "delete": "Удалить" + }, + "delete": { + "title": "Удалить приложение", + "content": "Вы уверены, что хотите удалить это приложение?" + } + }, + "apps": { + "title": "Обзор приложений от Dify", + "description": "Используйте эти шаблонные приложения мгновенно или настройте свои собственные приложения на основе шаблонов.", + "allCategories": "Рекомендуемые" + }, + "appCard": { + "addToWorkspace": "Добавить в рабочее пространство", + "customize": "Настроить" + }, + "appCustomize": { + "title": "Создать приложение из {{name}}", + "subTitle": "Значок и название приложения", + "nameRequired": "Название приложения обязательно" + }, + "category": { + "Assistant": "Ассистент", + "Writing": "Написание", + "Translate": "Перевод", + "Programming": "Программирование", + "HR": "HR", + "Agent": "Агент", + "Workflow": "Рабочий процесс", + "Entertainment": "Развлечение" + } +} diff --git a/web/i18n/ru-RU/explore.ts b/web/i18n/ru-RU/explore.ts deleted file mode 100644 index 919d1e49d8..0000000000 --- a/web/i18n/ru-RU/explore.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - title: 'Обзор', - sidebar: { - discovery: 'Открытия', - chat: 'Чат', - workspace: 'Рабочее пространство', - action: { - pin: 'Закрепить', - unpin: 'Открепить', - rename: 'Переименовать', - delete: 'Удалить', - }, - delete: { - title: 'Удалить приложение', - content: 'Вы уверены, что хотите удалить это приложение?', - }, - }, - apps: { - title: 'Обзор приложений от Dify', - description: 'Используйте эти шаблонные приложения мгновенно или настройте свои собственные приложения на основе шаблонов.', - allCategories: 'Рекомендуемые', - }, - appCard: { - addToWorkspace: 'Добавить в рабочее пространство', - customize: 'Настроить', - }, - appCustomize: { - title: 'Создать приложение из {{name}}', - subTitle: 'Значок и название приложения', - nameRequired: 'Название приложения обязательно', - }, - category: { - Assistant: 'Ассистент', - Writing: 'Написание', - Translate: 'Перевод', - Programming: 'Программирование', - HR: 'HR', - Agent: 'Агент', - Workflow: 'Рабочий процесс', - Entertainment: 'Развлечение', - }, -} - -export default translation diff --git a/web/i18n/ru-RU/layout.json b/web/i18n/ru-RU/layout.json new file mode 100644 index 0000000000..1078c66a86 --- /dev/null +++ b/web/i18n/ru-RU/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "expandSidebar": "Развернуть боковую панель", + "collapseSidebar": "Свернуть боковую панель" + } +} diff --git a/web/i18n/ru-RU/layout.ts b/web/i18n/ru-RU/layout.ts deleted file mode 100644 index a3dab7075a..0000000000 --- a/web/i18n/ru-RU/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - expandSidebar: 'Развернуть боковую панель', - collapseSidebar: 'Свернуть боковую панель', - }, -} - -export default translation diff --git a/web/i18n/ru-RU/login.json b/web/i18n/ru-RU/login.json new file mode 100644 index 0000000000..c4e64c5d84 --- /dev/null +++ b/web/i18n/ru-RU/login.json @@ -0,0 +1,124 @@ +{ + "pageTitle": "Привет, давайте начнем!👋", + "welcome": "Добро пожаловать в Dify, пожалуйста, войдите, чтобы продолжить.", + "email": "Адрес электронной почты", + "emailPlaceholder": "Ваш адрес электронной почты", + "password": "Пароль", + "passwordPlaceholder": "Ваш пароль", + "name": "Имя пользователя", + "namePlaceholder": "Ваше имя пользователя", + "forget": "Забыли пароль?", + "signBtn": "Войти", + "installBtn": "Настроить", + "setAdminAccount": "Настройка учетной записи администратора", + "setAdminAccountDesc": "Максимальные привилегии для учетной записи администратора, которые можно использовать для создания приложений, управления поставщиками LLM и т. д.", + "createAndSignIn": "Создать и войти", + "oneMoreStep": "Еще один шаг", + "createSample": "На основе этой информации мы создадим для вас пример приложения", + "invitationCode": "Пригласительный код", + "invitationCodePlaceholder": "Ваш пригласительный код", + "interfaceLanguage": "Язык интерфейса", + "timezone": "Часовой пояс", + "go": "Перейти к Dify", + "sendUsMail": "Отправьте нам по электронной почте свое представление, и мы обработаем запрос на приглашение.", + "acceptPP": "Я прочитал и принимаю политику конфиденциальности", + "reset": "Пожалуйста, выполните следующую команду, чтобы сбросить пароль", + "withGitHub": "Продолжить с GitHub", + "withGoogle": "Продолжить с Google", + "rightTitle": "Раскройте весь потенциал LLM", + "rightDesc": "Без труда создавайте визуально привлекательные, работоспособные и улучшаемые приложения ИИ.", + "tos": "Условия обслуживания", + "pp": "Политика конфиденциальности", + "tosDesc": "Регистрируясь, вы соглашаетесь с нашими", + "goToInit": "Если вы не инициализировали учетную запись, перейдите на страницу инициализации", + "dontHave": "Нет?", + "invalidInvitationCode": "Неверный пригласительный код", + "accountAlreadyInited": "Учетная запись уже инициализирована", + "forgotPassword": "Забыли пароль?", + "resetLinkSent": "Ссылка для сброса отправлена", + "sendResetLink": "Отправить ссылку для сброса", + "backToSignIn": "Вернуться к входу", + "forgotPasswordDesc": "Пожалуйста, введите свой адрес электронной почты, чтобы сбросить пароль. Мы отправим вам электронное письмо с инструкциями о том, как сбросить пароль.", + "checkEmailForResetLink": "Пожалуйста, проверьте свою электронную почту на наличие ссылки для сброса пароля. Если она не появится в течение нескольких минут, обязательно проверьте папку со спамом.", + "passwordChanged": "Войдите сейчас", + "changePassword": "Изменить пароль", + "changePasswordTip": "Пожалуйста, введите новый пароль для своей учетной записи", + "invalidToken": "Неверный или просроченный токен", + "confirmPassword": "Подтвердите пароль", + "confirmPasswordPlaceholder": "Подтвердите свой новый пароль", + "passwordChangedTip": "Ваш пароль был успешно изменен", + "error": { + "emailEmpty": "Адрес электронной почты обязателен", + "emailInValid": "Пожалуйста, введите действительный адрес электронной почты", + "nameEmpty": "Имя обязательно", + "passwordEmpty": "Пароль обязателен", + "passwordLengthInValid": "Пароль должен содержать не менее 8 символов", + "passwordInvalid": "Пароль должен содержать буквы и цифры, а длина должна быть больше 8", + "registrationNotAllowed": "Аккаунт не найден. Пожалуйста, свяжитесь с системным администратором для регистрации.", + "invalidEmailOrPassword": "Неверный адрес электронной почты или пароль." + }, + "license": { + "tip": "Перед запуском Dify Community Edition ознакомьтесь с лицензией GitHub", + "link": "Лицензия с открытым исходным кодом" + }, + "join": "Присоединиться", + "joinTipStart": "Приглашаем вас присоединиться к", + "joinTipEnd": "команде на Dify", + "invalid": "Ссылка истекла", + "explore": "Изучить Dify", + "activatedTipStart": "Вы присоединились к команде", + "activatedTipEnd": "", + "activated": "Войдите сейчас", + "adminInitPassword": "Пароль инициализации администратора", + "validate": "Проверить", + "checkCode": { + "verify": "Проверять", + "resend": "Отправить", + "invalidCode": "Неверный код", + "didNotReceiveCode": "Не получили код?", + "emptyCode": "Код обязателен для заполнения", + "verificationCode": "Проверочный код", + "checkYourEmail": "Проверьте свою электронную почту", + "validTime": "Имейте в виду, что код действителен в течение 5 минут", + "verificationCodePlaceholder": "Введите 6-значный код", + "useAnotherMethod": "Используйте другой метод", + "tipsPrefix": "Мы отправляем код проверки на" + }, + "back": "Назад", + "changePasswordBtn": "Установите пароль", + "usePassword": "Использовать пароль", + "continueWithCode": "Продолжить с кодом", + "resetPassword": "Сброс пароля", + "withSSO": "Продолжение работы с SSO", + "noLoginMethod": "Метод аутентификации не настроен", + "useVerificationCode": "Используйте код подтверждения", + "sendVerificationCode": "Отправить код подтверждения", + "setYourAccount": "Настройте свою учетную запись", + "backToLogin": "Вернуться к входу", + "enterYourName": "Пожалуйста, введите свое имя пользователя", + "noLoginMethodTip": "Обратитесь к системному администратору, чтобы добавить метод аутентификации.", + "resetPasswordDesc": "Введите адрес электронной почты, который вы использовали для регистрации в Dify, и мы отправим вам электронное письмо для сброса пароля.", + "or": "ИЛИ", + "licenseInactive": "Лицензия неактивна", + "licenseLostTip": "Не удалось подключить сервер лицензий Dify. Обратитесь к своему администратору, чтобы продолжить использование Dify.", + "licenseExpired": "Срок действия лицензии истек", + "licenseLost": "Утеряна лицензия", + "licenseInactiveTip": "Лицензия Dify Enterprise для рабочего пространства неактивна. Обратитесь к своему администратору, чтобы продолжить использование Dify.", + "licenseExpiredTip": "Срок действия лицензии Dify Enterprise для рабочего пространства истек. Обратитесь к своему администратору, чтобы продолжить использование Dify.", + "webapp": { + "noLoginMethod": "Метод аутентификации не настроен для веб-приложения", + "noLoginMethodTip": "Пожалуйста, свяжитесь с администратором системы, чтобы добавить метод аутентификации.", + "disabled": "Аутентификация веб-приложения отключена. Пожалуйста, свяжитесь с администратором системы, чтобы включить ее. Вы можете попробовать использовать приложение напрямую.", + "login": "Вход" + }, + "signup": { + "signIn": "Войти", + "signUp": "Зарегистрироваться", + "haveAccount": "Уже есть учетная запись?", + "noAccount": "Нет аккаунта?", + "createAccount": "Создайте свою учетную запись", + "verifyMail": "Продолжите с кодом проверки", + "welcome": "👋 Добро пожаловать! Пожалуйста, заполните данные, чтобы начать." + }, + "pageTitleForE": "Привет, давай начнем!" +} diff --git a/web/i18n/ru-RU/login.ts b/web/i18n/ru-RU/login.ts deleted file mode 100644 index f864bdb845..0000000000 --- a/web/i18n/ru-RU/login.ts +++ /dev/null @@ -1,126 +0,0 @@ -const translation = { - pageTitle: 'Привет, давайте начнем!👋', - welcome: 'Добро пожаловать в Dify, пожалуйста, войдите, чтобы продолжить.', - email: 'Адрес электронной почты', - emailPlaceholder: 'Ваш адрес электронной почты', - password: 'Пароль', - passwordPlaceholder: 'Ваш пароль', - name: 'Имя пользователя', - namePlaceholder: 'Ваше имя пользователя', - forget: 'Забыли пароль?', - signBtn: 'Войти', - installBtn: 'Настроить', - setAdminAccount: 'Настройка учетной записи администратора', - setAdminAccountDesc: 'Максимальные привилегии для учетной записи администратора, которые можно использовать для создания приложений, управления поставщиками LLM и т. д.', - createAndSignIn: 'Создать и войти', - oneMoreStep: 'Еще один шаг', - createSample: 'На основе этой информации мы создадим для вас пример приложения', - invitationCode: 'Пригласительный код', - invitationCodePlaceholder: 'Ваш пригласительный код', - interfaceLanguage: 'Язык интерфейса', - timezone: 'Часовой пояс', - go: 'Перейти к Dify', - sendUsMail: 'Отправьте нам по электронной почте свое представление, и мы обработаем запрос на приглашение.', - acceptPP: 'Я прочитал и принимаю политику конфиденциальности', - reset: 'Пожалуйста, выполните следующую команду, чтобы сбросить пароль', - withGitHub: 'Продолжить с GitHub', - withGoogle: 'Продолжить с Google', - rightTitle: 'Раскройте весь потенциал LLM', - rightDesc: 'Без труда создавайте визуально привлекательные, работоспособные и улучшаемые приложения ИИ.', - tos: 'Условия обслуживания', - pp: 'Политика конфиденциальности', - tosDesc: 'Регистрируясь, вы соглашаетесь с нашими', - goToInit: 'Если вы не инициализировали учетную запись, перейдите на страницу инициализации', - dontHave: 'Нет?', - invalidInvitationCode: 'Неверный пригласительный код', - accountAlreadyInited: 'Учетная запись уже инициализирована', - forgotPassword: 'Забыли пароль?', - resetLinkSent: 'Ссылка для сброса отправлена', - sendResetLink: 'Отправить ссылку для сброса', - backToSignIn: 'Вернуться к входу', - forgotPasswordDesc: 'Пожалуйста, введите свой адрес электронной почты, чтобы сбросить пароль. Мы отправим вам электронное письмо с инструкциями о том, как сбросить пароль.', - checkEmailForResetLink: 'Пожалуйста, проверьте свою электронную почту на наличие ссылки для сброса пароля. Если она не появится в течение нескольких минут, обязательно проверьте папку со спамом.', - passwordChanged: 'Войдите сейчас', - changePassword: 'Изменить пароль', - changePasswordTip: 'Пожалуйста, введите новый пароль для своей учетной записи', - invalidToken: 'Неверный или просроченный токен', - confirmPassword: 'Подтвердите пароль', - confirmPasswordPlaceholder: 'Подтвердите свой новый пароль', - passwordChangedTip: 'Ваш пароль был успешно изменен', - error: { - emailEmpty: 'Адрес электронной почты обязателен', - emailInValid: 'Пожалуйста, введите действительный адрес электронной почты', - nameEmpty: 'Имя обязательно', - passwordEmpty: 'Пароль обязателен', - passwordLengthInValid: 'Пароль должен содержать не менее 8 символов', - passwordInvalid: 'Пароль должен содержать буквы и цифры, а длина должна быть больше 8', - registrationNotAllowed: 'Аккаунт не найден. Пожалуйста, свяжитесь с системным администратором для регистрации.', - invalidEmailOrPassword: 'Неверный адрес электронной почты или пароль.', - }, - license: { - tip: 'Перед запуском Dify Community Edition ознакомьтесь с лицензией GitHub', - link: 'Лицензия с открытым исходным кодом', - }, - join: 'Присоединиться', - joinTipStart: 'Приглашаем вас присоединиться к', - joinTipEnd: 'команде на Dify', - invalid: 'Ссылка истекла', - explore: 'Изучить Dify', - activatedTipStart: 'Вы присоединились к команде', - activatedTipEnd: '', - activated: 'Войдите сейчас', - adminInitPassword: 'Пароль инициализации администратора', - validate: 'Проверить', - checkCode: { - verify: 'Проверять', - resend: 'Отправить', - invalidCode: 'Неверный код', - didNotReceiveCode: 'Не получили код?', - emptyCode: 'Код обязателен для заполнения', - verificationCode: 'Проверочный код', - checkYourEmail: 'Проверьте свою электронную почту', - validTime: 'Имейте в виду, что код действителен в течение 5 минут', - verificationCodePlaceholder: 'Введите 6-значный код', - useAnotherMethod: 'Используйте другой метод', - tipsPrefix: 'Мы отправляем код проверки на', - }, - back: 'Назад', - changePasswordBtn: 'Установите пароль', - usePassword: 'Использовать пароль', - continueWithCode: 'Продолжить с кодом', - resetPassword: 'Сброс пароля', - withSSO: 'Продолжение работы с SSO', - noLoginMethod: 'Метод аутентификации не настроен', - useVerificationCode: 'Используйте код подтверждения', - sendVerificationCode: 'Отправить код подтверждения', - setYourAccount: 'Настройте свою учетную запись', - backToLogin: 'Вернуться к входу', - enterYourName: 'Пожалуйста, введите свое имя пользователя', - noLoginMethodTip: 'Обратитесь к системному администратору, чтобы добавить метод аутентификации.', - resetPasswordDesc: 'Введите адрес электронной почты, который вы использовали для регистрации в Dify, и мы отправим вам электронное письмо для сброса пароля.', - or: 'ИЛИ', - licenseInactive: 'Лицензия неактивна', - licenseLostTip: 'Не удалось подключить сервер лицензий Dify. Обратитесь к своему администратору, чтобы продолжить использование Dify.', - licenseExpired: 'Срок действия лицензии истек', - licenseLost: 'Утеряна лицензия', - licenseInactiveTip: 'Лицензия Dify Enterprise для рабочего пространства неактивна. Обратитесь к своему администратору, чтобы продолжить использование Dify.', - licenseExpiredTip: 'Срок действия лицензии Dify Enterprise для рабочего пространства истек. Обратитесь к своему администратору, чтобы продолжить использование Dify.', - webapp: { - noLoginMethod: 'Метод аутентификации не настроен для веб-приложения', - noLoginMethodTip: 'Пожалуйста, свяжитесь с администратором системы, чтобы добавить метод аутентификации.', - disabled: 'Аутентификация веб-приложения отключена. Пожалуйста, свяжитесь с администратором системы, чтобы включить ее. Вы можете попробовать использовать приложение напрямую.', - login: 'Вход', - }, - signup: { - signIn: 'Войти', - signUp: 'Зарегистрироваться', - haveAccount: 'Уже есть учетная запись?', - noAccount: 'Нет аккаунта?', - createAccount: 'Создайте свою учетную запись', - verifyMail: 'Продолжите с кодом проверки', - welcome: '👋 Добро пожаловать! Пожалуйста, заполните данные, чтобы начать.', - }, - pageTitleForE: 'Привет, давай начнем!', -} - -export default translation diff --git a/web/i18n/ru-RU/oauth.json b/web/i18n/ru-RU/oauth.json new file mode 100644 index 0000000000..048e5fe263 --- /dev/null +++ b/web/i18n/ru-RU/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "needLogin": "Пожалуйста, войдите, чтобы авторизоваться", + "notLoggedIn": "Это приложение хочет получить доступ к вашей учетной записи Dify Cloud", + "loggedIn": "Это приложение хочет получить следующую информацию из вашего аккаунта Dify Cloud.", + "common": "Мы уважаем вашу конфиденциальность и будем использовать эту информацию только для улучшения вашего опыта с нашими инструментами разработчика." + }, + "scopes": { + "languagePreference": "Предпочтение языка", + "email": "Электронная почта", + "avatar": "Аватар", + "name": "Имя", + "timezone": "Часовой пояс" + }, + "error": { + "invalidParams": "Неверные параметры", + "authorizeFailed": "Авторизация не удалась", + "authAppInfoFetchFailed": "Не удалось получить информацию об приложении для авторизации" + }, + "continue": "Продолжить", + "connect": "Подключиться к", + "switchAccount": "Сменить аккаунт", + "unknownApp": "Неизвестное приложение", + "login": "Вход" +} diff --git a/web/i18n/ru-RU/oauth.ts b/web/i18n/ru-RU/oauth.ts deleted file mode 100644 index d530b8c780..0000000000 --- a/web/i18n/ru-RU/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - needLogin: 'Пожалуйста, войдите, чтобы авторизоваться', - notLoggedIn: 'Это приложение хочет получить доступ к вашей учетной записи Dify Cloud', - loggedIn: 'Это приложение хочет получить следующую информацию из вашего аккаунта Dify Cloud.', - common: 'Мы уважаем вашу конфиденциальность и будем использовать эту информацию только для улучшения вашего опыта с нашими инструментами разработчика.', - }, - scopes: { - languagePreference: 'Предпочтение языка', - email: 'Электронная почта', - avatar: 'Аватар', - name: 'Имя', - timezone: 'Часовой пояс', - }, - error: { - invalidParams: 'Неверные параметры', - authorizeFailed: 'Авторизация не удалась', - authAppInfoFetchFailed: 'Не удалось получить информацию об приложении для авторизации', - }, - continue: 'Продолжить', - connect: 'Подключиться к', - switchAccount: 'Сменить аккаунт', - unknownApp: 'Неизвестное приложение', - login: 'Вход', -} - -export default translation diff --git a/web/i18n/ru-RU/pipeline.json b/web/i18n/ru-RU/pipeline.json new file mode 100644 index 0000000000..bed2933bfe --- /dev/null +++ b/web/i18n/ru-RU/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "publishAsPipeline": { + "description": "Описание знаний", + "name": "Имя и иконка конвейера", + "namePlaceholder": "Пожалуйста, введите имя этого конвейера знаний. (Обязательно)", + "descriptionPlaceholder": "Пожалуйста, введите описание этого конвейера знаний. (Дополнительный)" + }, + "processing": "Обработка", + "reRun": "Повторный запуск", + "testRun": "Тестовый прогон", + "preparingDataSource": "Подготовка источника данных", + "confirmPublish": "Подтвердите публикацию", + "goToAddDocuments": "Перейти к добавлению документов", + "publishAs": "Публикация в качестве конвейера знаний", + "confirmPublishContent": "После успешной публикации конвейера знаний структура блоков этой базы знаний не может быть изменена. Вы уверены, что хотите его опубликовать?" + }, + "inputField": { + "manage": "Руководить", + "create": "Создание поля ввода данных пользователем" + }, + "publishToast": { + "title": "Этот пайплайн еще не опубликован", + "desc": "Если конвейер не опубликован, вы можете изменить структуру блоков в узле базы знаний, а оркестрация конвейера и изменения будут автоматически сохранены в виде черновика." + }, + "result": { + "resultPreview": { + "viewDetails": "Подробнее", + "loading": "Обработка... Подождите", + "error": "Ошибка произошла во время выполнения", + "footerTip": "В режиме тестового запуска предварительный просмотр до {{count}} фрагментов" + } + }, + "ragToolSuggestions": { + "title": "Предложения по КГР", + "noRecommendationPlugins": "Рекомендуемые плагины отсутствуют, найдите больше на Marketplace" + } +} diff --git a/web/i18n/ru-RU/pipeline.ts b/web/i18n/ru-RU/pipeline.ts deleted file mode 100644 index 375f06afe4..0000000000 --- a/web/i18n/ru-RU/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - publishAsPipeline: { - description: 'Описание знаний', - name: 'Имя и иконка конвейера', - namePlaceholder: 'Пожалуйста, введите имя этого конвейера знаний. (Обязательно)', - descriptionPlaceholder: 'Пожалуйста, введите описание этого конвейера знаний. (Дополнительный)', - }, - processing: 'Обработка', - reRun: 'Повторный запуск', - testRun: 'Тестовый прогон', - preparingDataSource: 'Подготовка источника данных', - confirmPublish: 'Подтвердите публикацию', - goToAddDocuments: 'Перейти к добавлению документов', - publishAs: 'Публикация в качестве конвейера знаний', - confirmPublishContent: 'После успешной публикации конвейера знаний структура блоков этой базы знаний не может быть изменена. Вы уверены, что хотите его опубликовать?', - }, - inputField: { - manage: 'Руководить', - create: 'Создание поля ввода данных пользователем', - }, - publishToast: { - title: 'Этот пайплайн еще не опубликован', - desc: 'Если конвейер не опубликован, вы можете изменить структуру блоков в узле базы знаний, а оркестрация конвейера и изменения будут автоматически сохранены в виде черновика.', - }, - result: { - resultPreview: { - viewDetails: 'Подробнее', - loading: 'Обработка... Подождите', - error: 'Ошибка произошла во время выполнения', - footerTip: 'В режиме тестового запуска предварительный просмотр до {{count}} фрагментов', - }, - }, - ragToolSuggestions: { - title: 'Предложения по КГР', - noRecommendationPlugins: 'Рекомендуемые плагины отсутствуют, найдите больше на Marketplace', - }, -} - -export default translation diff --git a/web/i18n/ru-RU/plugin-tags.json b/web/i18n/ru-RU/plugin-tags.json new file mode 100644 index 0000000000..a6d6f098d9 --- /dev/null +++ b/web/i18n/ru-RU/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "tags": { + "business": "Дело", + "videos": "Видео", + "travel": "Путешествовать", + "social": "Общественный", + "agent": "Агент", + "search": "Искать", + "design": "Проектировать", + "image": "Образ", + "news": "Новости", + "utilities": "Коммунальные услуги", + "weather": "Погода", + "medical": "Медицинский", + "other": "Другой", + "finance": "Финансировать", + "education": "Образование", + "productivity": "Продуктивность", + "entertainment": "Развлечение", + "rag": "ТРЯПКА" + }, + "allTags": "Все теги", + "searchTags": "Поиск тегов" +} diff --git a/web/i18n/ru-RU/plugin-tags.ts b/web/i18n/ru-RU/plugin-tags.ts deleted file mode 100644 index 802a647883..0000000000 --- a/web/i18n/ru-RU/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - tags: { - business: 'Дело', - videos: 'Видео', - travel: 'Путешествовать', - social: 'Общественный', - agent: 'Агент', - search: 'Искать', - design: 'Проектировать', - image: 'Образ', - news: 'Новости', - utilities: 'Коммунальные услуги', - weather: 'Погода', - medical: 'Медицинский', - other: 'Другой', - finance: 'Финансировать', - education: 'Образование', - productivity: 'Продуктивность', - entertainment: 'Развлечение', - rag: 'ТРЯПКА', - }, - allTags: 'Все теги', - searchTags: 'Поиск тегов', -} - -export default translation diff --git a/web/i18n/ru-RU/plugin-trigger.json b/web/i18n/ru-RU/plugin-trigger.json new file mode 100644 index 0000000000..c314ff8d10 --- /dev/null +++ b/web/i18n/ru-RU/plugin-trigger.json @@ -0,0 +1,184 @@ +{ + "subscription": { + "title": "Подписки", + "listNum": "{{num}} подписки", + "empty": { + "title": "Нет подписок", + "button": "Новая подписка" + }, + "createButton": { + "oauth": "Новая подписка с OAuth", + "apiKey": "Новая подписка с ключом API", + "manual": "Вставьте URL для создания новой подписки" + }, + "createSuccess": "Подписка успешно создана", + "createFailed": "Не удалось создать подписку", + "maxCount": "Макс {{num}} подписок", + "selectPlaceholder": "Выберите подписку", + "noSubscriptionSelected": "Подписка не выбрана", + "subscriptionRemoved": "Подписка удалена", + "list": { + "title": "Подписки", + "addButton": "Добавить", + "tip": "Получать события через подписку", + "item": { + "enabled": "Включено", + "disabled": "Отключено", + "credentialType": { + "api_key": "API ключ", + "oauth2": "OAuth", + "unauthorized": "Руководство" + }, + "actions": { + "delete": "Удалить", + "deleteConfirm": { + "title": "Удалить {{name}}?", + "success": "Подписка {{name}} успешно удалена", + "error": "Не удалось удалить подписку {{name}}", + "content": "После удаления эта подписка не может быть восстановлена. Пожалуйста, подтвердите.", + "contentWithApps": "Текущая подписка используется {{count}} приложениями. Удаление подписки приведет к тому, что настроенные приложения перестанут получать события подписки.", + "confirm": "Подтвердить удаление", + "cancel": "Отмена", + "confirmInputWarning": "Пожалуйста, введите правильное имя для подтверждения.", + "confirmInputPlaceholder": "Введите \"{{name}}\", чтобы подтвердить.", + "confirmInputTip": "Пожалуйста, введите «{{name}}», чтобы подтвердить." + } + }, + "status": { + "active": "Активный", + "inactive": "Неактивный" + }, + "usedByNum": "Используется {{num}} рабочими процессами", + "noUsed": "Рабочий процесс не используется" + } + }, + "addType": { + "title": "Добавить подписку", + "description": "Выберите, как вы хотите создать подписку на триггер", + "options": { + "apikey": { + "title": "Создать с помощью ключа API", + "description": "Автоматически создавать подписку с использованием учетных данных API" + }, + "oauth": { + "title": "Создать с помощью OAuth", + "description": "Авторизуйтесь через стороннюю платформу, чтобы создать подписку", + "clientSettings": "Настройки клиента OAuth", + "clientTitle": "Клиент OAuth", + "default": "По умолчанию", + "custom": "Пользовательский" + }, + "manual": { + "title": "Ручная настройка", + "description": "Вставьте URL для создания новой подписки", + "tip": "Настроить URL на сторонней платформе вручную" + } + } + } + }, + "modal": { + "steps": { + "verify": "Проверить", + "configuration": "Конфигурация" + }, + "common": { + "cancel": "Отмена", + "back": "Назад", + "next": "Далее", + "create": "Создать", + "verify": "Проверить", + "authorize": "Авторизовать", + "creating": "Создание...", + "verifying": "Проверка...", + "authorizing": "Авторизация..." + }, + "oauthRedirectInfo": "Так как для этого поставщика инструментов не найдены клиентские секреты системы, необходимо настроить его вручную, для redirect_uri используйте", + "apiKey": { + "title": "Создать с помощью ключа API", + "verify": { + "title": "Проверить учетные данные", + "description": "Пожалуйста, предоставьте свои учетные данные API для проверки доступа", + "error": "Проверка учетных данных не удалась. Пожалуйста, проверьте ваш API-ключ.", + "success": "Учётные данные успешно проверены" + }, + "configuration": { + "title": "Настроить подписку", + "description": "Настройте параметры подписки" + } + }, + "oauth": { + "title": "Создать с помощью OAuth", + "authorization": { + "title": "Авторизация OAuth", + "description": "Разрешить Dify доступ к вашему аккаунту", + "redirectUrl": "URL перенаправления", + "redirectUrlHelp": "Используйте этот URL в настройках вашего приложения OAuth", + "authorizeButton": "Авторизоваться с {{provider}}", + "waitingAuth": "Ожидание авторизации...", + "authSuccess": "Авторизация прошла успешно", + "authFailed": "Не удалось получить информацию об авторизации OAuth", + "waitingJump": "Авторизовано, ожидаем прыжка" + }, + "configuration": { + "title": "Настроить подписку", + "description": "Настройте параметры подписки после авторизации", + "success": "Настройка OAuth выполнена успешно", + "failed": "Сбой настройки OAuth" + }, + "remove": { + "success": "OAuth успешно удалён", + "failed": "Сбой при удалении OAuth" + }, + "save": { + "success": "Настройка OAuth успешно сохранена" + } + }, + "manual": { + "title": "Ручная настройка", + "description": "Настройте подписку на вебхук вручную", + "logs": { + "title": "Журналы запросов", + "request": "Запрос", + "loading": "Ожидание запроса от {{pluginName}}..." + } + }, + "form": { + "subscriptionName": { + "label": "Название подписки", + "placeholder": "Введите название подписки", + "required": "Требуется название подписки" + }, + "callbackUrl": { + "label": "URL для обратного вызова", + "description": "Этот URL будет получать события вебхука", + "tooltip": "Предоставьте общедоступную точку доступа, которая может принимать обратные вызовы от поставщика триггеров.", + "placeholder": "Генерация...", + "privateAddressWarning": "Похоже, что этот URL является внутренним адресом, из-за чего запросы вебхука могут не выполняться. Вы можете изменить TRIGGER_URL на публичный адрес." + } + }, + "errors": { + "createFailed": "Не удалось создать подписку", + "verifyFailed": "Не удалось проверить учетные данные", + "authFailed": "Авторизация не удалась", + "networkError": "Ошибка сети, пожалуйста, попробуйте ещё раз" + } + }, + "events": { + "title": "Доступные события", + "description": "События, на которые может подписываться этот плагин триггера", + "empty": "События отсутствуют", + "event": "Событие", + "events": "События", + "actionNum": "{{num}} {{event}} ВКЛЮЧЕНО", + "item": { + "parameters": "параметры {{count}}", + "noParameters": "Нет параметров" + }, + "output": "Вывод" + }, + "node": { + "status": { + "warning": "Отключить" + } + } +} diff --git a/web/i18n/ru-RU/plugin-trigger.ts b/web/i18n/ru-RU/plugin-trigger.ts deleted file mode 100644 index 2208706f74..0000000000 --- a/web/i18n/ru-RU/plugin-trigger.ts +++ /dev/null @@ -1,186 +0,0 @@ -const translation = { - subscription: { - title: 'Подписки', - listNum: '{{num}} подписки', - empty: { - title: 'Нет подписок', - button: 'Новая подписка', - }, - createButton: { - oauth: 'Новая подписка с OAuth', - apiKey: 'Новая подписка с ключом API', - manual: 'Вставьте URL для создания новой подписки', - }, - createSuccess: 'Подписка успешно создана', - createFailed: 'Не удалось создать подписку', - maxCount: 'Макс {{num}} подписок', - selectPlaceholder: 'Выберите подписку', - noSubscriptionSelected: 'Подписка не выбрана', - subscriptionRemoved: 'Подписка удалена', - list: { - title: 'Подписки', - addButton: 'Добавить', - tip: 'Получать события через подписку', - item: { - enabled: 'Включено', - disabled: 'Отключено', - credentialType: { - api_key: 'API ключ', - oauth2: 'OAuth', - unauthorized: 'Руководство', - }, - actions: { - delete: 'Удалить', - deleteConfirm: { - title: 'Удалить {{name}}?', - success: 'Подписка {{name}} успешно удалена', - error: 'Не удалось удалить подписку {{name}}', - content: 'После удаления эта подписка не может быть восстановлена. Пожалуйста, подтвердите.', - contentWithApps: 'Текущая подписка используется {{count}} приложениями. Удаление подписки приведет к тому, что настроенные приложения перестанут получать события подписки.', - confirm: 'Подтвердить удаление', - cancel: 'Отмена', - confirmInputWarning: 'Пожалуйста, введите правильное имя для подтверждения.', - confirmInputPlaceholder: 'Введите "{{name}}", чтобы подтвердить.', - confirmInputTip: 'Пожалуйста, введите «{{name}}», чтобы подтвердить.', - }, - }, - status: { - active: 'Активный', - inactive: 'Неактивный', - }, - usedByNum: 'Используется {{num}} рабочими процессами', - noUsed: 'Рабочий процесс не используется', - }, - }, - addType: { - title: 'Добавить подписку', - description: 'Выберите, как вы хотите создать подписку на триггер', - options: { - apikey: { - title: 'Создать с помощью ключа API', - description: 'Автоматически создавать подписку с использованием учетных данных API', - }, - oauth: { - title: 'Создать с помощью OAuth', - description: 'Авторизуйтесь через стороннюю платформу, чтобы создать подписку', - clientSettings: 'Настройки клиента OAuth', - clientTitle: 'Клиент OAuth', - default: 'По умолчанию', - custom: 'Пользовательский', - }, - manual: { - title: 'Ручная настройка', - description: 'Вставьте URL для создания новой подписки', - tip: 'Настроить URL на сторонней платформе вручную', - }, - }, - }, - }, - modal: { - steps: { - verify: 'Проверить', - configuration: 'Конфигурация', - }, - common: { - cancel: 'Отмена', - back: 'Назад', - next: 'Далее', - create: 'Создать', - verify: 'Проверить', - authorize: 'Авторизовать', - creating: 'Создание...', - verifying: 'Проверка...', - authorizing: 'Авторизация...', - }, - oauthRedirectInfo: 'Так как для этого поставщика инструментов не найдены клиентские секреты системы, необходимо настроить его вручную, для redirect_uri используйте', - apiKey: { - title: 'Создать с помощью ключа API', - verify: { - title: 'Проверить учетные данные', - description: 'Пожалуйста, предоставьте свои учетные данные API для проверки доступа', - error: 'Проверка учетных данных не удалась. Пожалуйста, проверьте ваш API-ключ.', - success: 'Учётные данные успешно проверены', - }, - configuration: { - title: 'Настроить подписку', - description: 'Настройте параметры подписки', - }, - }, - oauth: { - title: 'Создать с помощью OAuth', - authorization: { - title: 'Авторизация OAuth', - description: 'Разрешить Dify доступ к вашему аккаунту', - redirectUrl: 'URL перенаправления', - redirectUrlHelp: 'Используйте этот URL в настройках вашего приложения OAuth', - authorizeButton: 'Авторизоваться с {{provider}}', - waitingAuth: 'Ожидание авторизации...', - authSuccess: 'Авторизация прошла успешно', - authFailed: 'Не удалось получить информацию об авторизации OAuth', - waitingJump: 'Авторизовано, ожидаем прыжка', - }, - configuration: { - title: 'Настроить подписку', - description: 'Настройте параметры подписки после авторизации', - success: 'Настройка OAuth выполнена успешно', - failed: 'Сбой настройки OAuth', - }, - remove: { - success: 'OAuth успешно удалён', - failed: 'Сбой при удалении OAuth', - }, - save: { - success: 'Настройка OAuth успешно сохранена', - }, - }, - manual: { - title: 'Ручная настройка', - description: 'Настройте подписку на вебхук вручную', - logs: { - title: 'Журналы запросов', - request: 'Запрос', - loading: 'Ожидание запроса от {{pluginName}}...', - }, - }, - form: { - subscriptionName: { - label: 'Название подписки', - placeholder: 'Введите название подписки', - required: 'Требуется название подписки', - }, - callbackUrl: { - label: 'URL для обратного вызова', - description: 'Этот URL будет получать события вебхука', - tooltip: 'Предоставьте общедоступную точку доступа, которая может принимать обратные вызовы от поставщика триггеров.', - placeholder: 'Генерация...', - privateAddressWarning: 'Похоже, что этот URL является внутренним адресом, из-за чего запросы вебхука могут не выполняться. Вы можете изменить TRIGGER_URL на публичный адрес.', - }, - }, - errors: { - createFailed: 'Не удалось создать подписку', - verifyFailed: 'Не удалось проверить учетные данные', - authFailed: 'Авторизация не удалась', - networkError: 'Ошибка сети, пожалуйста, попробуйте ещё раз', - }, - }, - events: { - title: 'Доступные события', - description: 'События, на которые может подписываться этот плагин триггера', - empty: 'События отсутствуют', - event: 'Событие', - events: 'События', - actionNum: '{{num}} {{event}} ВКЛЮЧЕНО', - item: { - parameters: 'параметры {{count}}', - noParameters: 'Нет параметров', - }, - output: 'Вывод', - }, - node: { - status: { - warning: 'Отключить', - }, - }, -} - -export default translation diff --git a/web/i18n/ru-RU/plugin.json b/web/i18n/ru-RU/plugin.json new file mode 100644 index 0000000000..0c8926108d --- /dev/null +++ b/web/i18n/ru-RU/plugin.json @@ -0,0 +1,323 @@ +{ + "category": { + "extensions": "Расширения", + "tools": "Инструменты", + "models": "Модели", + "all": "Все", + "bundles": "Пакеты", + "agents": "Агентские стратегии", + "datasources": "Источники данных", + "triggers": "Триггеры" + }, + "categorySingle": { + "bundle": "Связка", + "agent": "Агентская стратегия", + "model": "Модель", + "extension": "Расширение", + "tool": "Инструмент", + "datasource": "Источник данных", + "trigger": "Спусковой крючок" + }, + "list": { + "source": { + "github": "Установка с GitHub", + "marketplace": "Установка из Marketplace", + "local": "Установка из локального файла пакета" + }, + "notFound": "Плагины не найдены", + "noInstalled": "Плагины не установлены" + }, + "source": { + "github": "Сайт GitHub", + "marketplace": "Рынок", + "local": "Локальный файл пакета" + }, + "detailPanel": { + "categoryTip": { + "github": "Установлено с Github", + "debugging": "Плагин для отладки", + "local": "Локальный плагин", + "marketplace": "Установлено из Marketplace" + }, + "operation": { + "viewDetail": "Подробнее", + "detail": "Подробности", + "info": "Информация о плагине", + "remove": "Убирать", + "install": "Устанавливать", + "update": "Обновлять", + "checkUpdate": "Проверить обновление", + "back": "Назад" + }, + "toolSelector": { + "placeholder": "Выберите инструмент...", + "auto": "Автоматически", + "title": "Добавить инструмент", + "uninstalledTitle": "Инструмент не установлен", + "descriptionLabel": "Описание инструмента", + "unsupportedTitle": "Неподдерживаемое действие", + "settings": "ПОЛЬЗОВАТЕЛЬСКИЕ НАСТРОЙКИ", + "unsupportedContent": "Установленная версия плагина не предусматривает этого действия.", + "empty": "Нажмите кнопку «+», чтобы добавить инструменты. Вы можете добавить несколько инструментов.", + "uninstalledContent": "Этот плагин устанавливается из репозитория local/GitHub. Пожалуйста, используйте после установки.", + "paramsTip2": "Когда параметр «Автоматически» выключен, используется значение по умолчанию.", + "toolLabel": "Инструмент", + "paramsTip1": "Управляет параметрами вывода LLM.", + "descriptionPlaceholder": "Краткое описание назначения инструмента, например, получение температуры для конкретного места.", + "params": "КОНФИГУРАЦИЯ РАССУЖДЕНИЙ", + "unsupportedContent2": "Нажмите, чтобы переключить версию.", + "uninstalledLink": "Управление в плагинах", + "toolSetting": "Настройки инструмента", + "unsupportedMCPTool": "В настоящее время выбранная версия плагина стратегий агента не поддерживает инструменты MCP." + }, + "configureTool": "Инструмент настройки", + "endpointsTip": "Этот плагин предоставляет определенные функциональные возможности через конечные точки, и вы можете настроить несколько наборов конечных точек для текущей рабочей области.", + "endpointDeleteTip": "Удалить конечную точку", + "disabled": "Нетрудоспособный", + "serviceOk": "Услуга ОК", + "configureApp": "Настройка приложения", + "endpointDeleteContent": "Хотели бы вы удалить {{name}}?", + "strategyNum": "{{число}} {{Стратегия}} ВКЛЮЧЕННЫЙ", + "endpoints": "Конечные точки", + "modelNum": "{{число}} МОДЕЛИ В КОМПЛЕКТЕ", + "endpointDisableTip": "Отключить конечную точку", + "configureModel": "Настройка модели", + "endpointModalDesc": "После настройки можно использовать функции, предоставляемые плагином через конечные точки API.", + "endpointModalTitle": "Настройка конечной точки", + "actionNum": "{{число}} {{действие}} ВКЛЮЧЕННЫЙ", + "endpointDisableContent": "Хотели бы вы отключить {{name}}?", + "endpointsEmpty": "Нажмите кнопку «+», чтобы добавить конечную точку", + "switchVersion": "Версия для переключателя", + "endpointsDocLink": "Посмотреть документ", + "deprecation": { + "reason": { + "businessAdjustments": "бизнес-правки", + "ownershipTransferred": "передача права собственности", + "noMaintainer": "нет сопровождающего" + }, + "noReason": "Этот плагин был устаревшим и больше не будет обновляться.", + "onlyReason": "Этот плагин был устаревшим из-за {{deprecatedReason}} и больше не будет обновляться.", + "fullMessage": "Этот плагин больше не поддерживается по причине {{deprecatedReason}} и больше не будет обновляться. Пожалуйста, используйте {{-alternativePluginId}} вместо этого." + } + }, + "debugInfo": { + "title": "Отладка", + "viewDocs": "Просмотр документации" + }, + "privilege": { + "whoCanDebug": "Кто может отлаживать плагины?", + "admins": "Админы", + "noone": "Никто", + "everyone": "Каждый", + "title": "Настройки плагина", + "whoCanInstall": "Кто может устанавливать плагины и управлять ими?" + }, + "pluginInfoModal": { + "packageName": "Пакет", + "title": "Информация о плагине", + "repository": "Хранилище", + "release": "Отпускать" + }, + "action": { + "deleteContentLeft": "Вы хотели бы удалить", + "pluginInfo": "Информация о плагине", + "checkForUpdates": "Проверка обновлений", + "delete": "Удалить плагин", + "deleteContentRight": "Плагин?", + "usedInApps": "Этот плагин используется в приложениях {{num}}." + }, + "installModal": { + "labels": { + "package": "Пакет", + "version": "Версия", + "repository": "Хранилище" + }, + "readyToInstall": "О программе установки следующего плагина", + "close": "Закрывать", + "installedSuccessfully": "Установка успешна", + "dropPluginToInstall": "Перетащите пакет плагина сюда для установки", + "uploadFailed": "Ошибка загрузки", + "cancel": "Отмена", + "installFailed": "Ошибка установки", + "readyToInstallPackages": "О необходимости установки следующих плагинов {{num}}", + "installedSuccessfullyDesc": "Плагин успешно установлен.", + "installComplete": "Монтаж завершен", + "next": "Следующий", + "fromTrustSource": "Убедитесь, что вы устанавливаете плагины только из надежного источника.", + "install": "Устанавливать", + "installPlugin": "Установить плагин", + "installFailedDesc": "Плагин был установлен не удалось.", + "back": "Назад", + "pluginLoadErrorDesc": "Этот плагин не будет установлен", + "installing": "Установка...", + "uploadingPackage": "Загрузка {{packageName}}...", + "pluginLoadError": "Ошибка загрузки плагина", + "readyToInstallPackage": "О программе установки следующего плагина", + "installWarning": "Этот плагин не разрешено устанавливать." + }, + "installFromGitHub": { + "gitHubRepo": "Репозиторий GitHub", + "selectPackagePlaceholder": "Пожалуйста, выберите пакет", + "installNote": "Убедитесь, что вы устанавливаете плагины только из надежного источника.", + "selectPackage": "Выбрать пакет", + "installedSuccessfully": "Установка успешна", + "selectVersion": "Выберите версию", + "updatePlugin": "Обновление плагина с GitHub", + "installFailed": "Ошибка установки", + "uploadFailed": "Ошибка загрузки", + "installPlugin": "Установка плагина с GitHub", + "selectVersionPlaceholder": "Пожалуйста, выберите версию" + }, + "upgrade": { + "close": "Закрывать", + "upgrading": "Установка...", + "successfulTitle": "Установка успешна", + "title": "Установить плагин", + "upgrade": "Устанавливать", + "usedInApps": "Используется в приложениях {{num}}", + "description": "О программе установки следующего плагина" + }, + "error": { + "inValidGitHubUrl": "Недопустимый URL-адрес GitHub. Пожалуйста, введите действительный URL-адрес в формате: https://github.com/owner/repo", + "noReleasesFound": "Релизы не найдены. Пожалуйста, проверьте репозиторий GitHub или входной URL.", + "fetchReleasesError": "Не удается получить релизы. Пожалуйста, повторите попытку позже." + }, + "marketplace": { + "sortOption": { + "newlyReleased": "Недавно выпущенные", + "mostPopular": "Самые популярные", + "firstReleased": "Впервые выпущен", + "recentlyUpdated": "Недавно обновленные" + }, + "pluginsResult": "Результаты {{num}}", + "moreFrom": "Больше из Marketplace", + "noPluginFound": "Плагин не найден", + "sortBy": "Черный город", + "empower": "Расширьте возможности разработки ИИ", + "difyMarketplace": "Торговая площадка Dify", + "viewMore": "Подробнее", + "and": "и", + "discover": "Обнаруживать", + "verifiedTip": "Подтверждено Dify", + "partnerTip": "Подтверждено партнером Dify" + }, + "task": { + "installing": "Установка плагинов {{installingLength}}, 0 готово.", + "installingWithError": "Установка плагинов {{installingLength}}, {{successLength}} успех, {{errorLength}} неудачный", + "clearAll": "Очистить все", + "installingWithSuccess": "Установка плагинов {{installingLength}}, {{successLength}} успех.", + "installedError": "плагины {{errorLength}} не удалось установить", + "installError": "Плагины {{errorLength}} не удалось установить, нажмите для просмотра", + "installSuccess": "{{successLength}} plugins installed successfully", + "installed": "Installed", + "runningPlugins": "Installing Plugins", + "successPlugins": "Successfully Installed Plugins", + "errorPlugins": "Failed to Install Plugins" + }, + "install": "{{num}} установок", + "searchCategories": "Поиск категорий", + "search": "Искать", + "searchInMarketplace": "Поиск в маркетплейсе", + "searchTools": "Инструменты поиска...", + "allCategories": "Все категории", + "endpointsEnabled": "{{num}} наборы включенных конечных точек", + "installAction": "Устанавливать", + "from": "От", + "installFrom": "УСТАНОВИТЬ С", + "findMoreInMarketplace": "Узнайте больше в Marketplace", + "installPlugin": "Установка плагина", + "searchPlugins": "Плагины поиска", + "fromMarketplace": "Из маркетплейса", + "metadata": { + "title": "Плагины" + }, + "difyVersionNotCompatible": "Текущая версия Dify не совместима с этим плагином, пожалуйста, обновите до минимально необходимой версии: {{minimalDifyVersion}}", + "requestAPlugin": "Запросите плагин", + "publishPlugins": "Публикация плагинов", + "auth": { + "oauthClient": "OAuth клиент", + "oauthClientSettings": "Настройки клиента OAuth", + "authorization": "Авторизация", + "addOAuth": "Добавить OAuth", + "custom": "Пользовательский", + "setDefault": "Установить по умолчанию", + "authRemoved": "Авторы удалены", + "setupOAuth": "Настройка клиента OAuth", + "useApi": "Используйте API ключ", + "useOAuth": "Используйте OAuth", + "authorizations": "Авторизации", + "workspaceDefault": "Рабочее пространство по умолчанию", + "authorizationName": "Имя авторизации", + "default": "По умолчанию", + "useOAuthAuth": "Используйте авторизацию OAuth", + "addApi": "Добавьте API-ключ", + "useApiAuth": "Конфигурация авторизации ключа API", + "saveOnly": "Сохранить только", + "saveAndAuth": "Сохранить и авторизовать", + "useApiAuthDesc": "После настройки учетных данных все члены рабочей области могут использовать этот инструмент при оркестрации приложений.", + "clientInfo": "Поскольку не найдены секреты клиентской системы для этого поставщика инструментов, необходимо настроить его вручную, для redirect_uri, пожалуйста, используйте", + "unavailable": "Недоступно", + "customCredentialUnavailable": "Кастомные учетные данные в настоящее время недоступны", + "credentialUnavailable": "Учетные данные в настоящее время недоступны. Пожалуйста, свяжитесь с администратором.", + "credentialUnavailableInButton": "Учетные данные недоступны", + "emptyAuth": "Пожалуйста, настройте аутентификацию", + "connectedWorkspace": "Подключенное рабочее пространство" + }, + "deprecated": "Устаревший", + "autoUpdate": { + "strategy": { + "disabled": { + "name": "Отключен", + "description": "Плагины не будут автоматически обновляться" + }, + "fixOnly": { + "name": "Только исправить", + "selectedDescription": "Автообновление только для версий патчей", + "description": "Автообновление только для патч-версий (например, 1.0.1 → 1.0.2). Изменения в минорных версиях не вызовут обновления." + }, + "latest": { + "name": "Новости", + "selectedDescription": "Всегда обновляйте до последней версии", + "description": "Всегда обновляйте до последней версии" + } + }, + "upgradeMode": { + "partial": "Только выбрано", + "all": "Обновить все", + "exclude": "Исключить выбранное" + }, + "upgradeModePlaceholder": { + "partial": "Только выбранные плагины будут автоматически обновляться. В данный момент плагины не выбраны, поэтому никакие плагины не будут автоматически обновляться.", + "exclude": "Выбранные плагины не будут обновляться автоматически" + }, + "operation": { + "select": "Выберите плагины", + "clearAll": "Очистить все" + }, + "pluginDowngradeWarning": { + "exclude": "Исключить из автообновления", + "title": "Понижение версии плагина", + "downgrade": "Все равно понизьте версию", + "description": "Автообновление в данный момент включено для этого плагина. Понижение версии может привести к тому, что ваши изменения будут перезаписаны во время следующего автоматического обновления." + }, + "noPluginPlaceholder": { + "noFound": "Плагины не найдены", + "noInstalled": "Нет установленных плагинов" + }, + "updateTimeTitle": "Время обновления", + "updateTime": "Время обновления", + "automaticUpdates": "Автоматические обновления", + "updateSettings": "Обновить настройки", + "nextUpdateTime": "Следующее автообновление: {{time}}", + "specifyPluginsToUpdate": "Укажите плагины для обновления", + "excludeUpdate": "Следующие {{num}} плагины не будут обновляться автоматически", + "partialUPdate": "Только следующие {{num}} плагины будут обновляться автоматически", + "changeTimezone": "Чтобы изменить часовой пояс, перейдите в Настройки" + }, + "readmeInfo": { + "title": "ПРОЧТИ_МЕНЯ", + "needHelpCheckReadme": "Нужна помощь? Ознакомьтесь с файлом README.", + "noReadmeAvailable": "README недоступен", + "failedToFetch": "Не удалось получить README" + } +} diff --git a/web/i18n/ru-RU/plugin.ts b/web/i18n/ru-RU/plugin.ts deleted file mode 100644 index 23214fb195..0000000000 --- a/web/i18n/ru-RU/plugin.ts +++ /dev/null @@ -1,325 +0,0 @@ -const translation = { - category: { - extensions: 'Расширения', - tools: 'Инструменты', - models: 'Модели', - all: 'Все', - bundles: 'Пакеты', - agents: 'Агентские стратегии', - datasources: 'Источники данных', - triggers: 'Триггеры', - }, - categorySingle: { - bundle: 'Связка', - agent: 'Агентская стратегия', - model: 'Модель', - extension: 'Расширение', - tool: 'Инструмент', - datasource: 'Источник данных', - trigger: 'Спусковой крючок', - }, - list: { - source: { - github: 'Установка с GitHub', - marketplace: 'Установка из Marketplace', - local: 'Установка из локального файла пакета', - }, - notFound: 'Плагины не найдены', - noInstalled: 'Плагины не установлены', - }, - source: { - github: 'Сайт GitHub', - marketplace: 'Рынок', - local: 'Локальный файл пакета', - }, - detailPanel: { - categoryTip: { - github: 'Установлено с Github', - debugging: 'Плагин для отладки', - local: 'Локальный плагин', - marketplace: 'Установлено из Marketplace', - }, - operation: { - viewDetail: 'Подробнее', - detail: 'Подробности', - info: 'Информация о плагине', - remove: 'Убирать', - install: 'Устанавливать', - update: 'Обновлять', - checkUpdate: 'Проверить обновление', - back: 'Назад', - }, - toolSelector: { - placeholder: 'Выберите инструмент...', - auto: 'Автоматически', - title: 'Добавить инструмент', - uninstalledTitle: 'Инструмент не установлен', - descriptionLabel: 'Описание инструмента', - unsupportedTitle: 'Неподдерживаемое действие', - settings: 'ПОЛЬЗОВАТЕЛЬСКИЕ НАСТРОЙКИ', - unsupportedContent: 'Установленная версия плагина не предусматривает этого действия.', - empty: 'Нажмите кнопку «+», чтобы добавить инструменты. Вы можете добавить несколько инструментов.', - uninstalledContent: 'Этот плагин устанавливается из репозитория local/GitHub. Пожалуйста, используйте после установки.', - paramsTip2: 'Когда параметр «Автоматически» выключен, используется значение по умолчанию.', - toolLabel: 'Инструмент', - paramsTip1: 'Управляет параметрами вывода LLM.', - descriptionPlaceholder: 'Краткое описание назначения инструмента, например, получение температуры для конкретного места.', - params: 'КОНФИГУРАЦИЯ РАССУЖДЕНИЙ', - unsupportedContent2: 'Нажмите, чтобы переключить версию.', - uninstalledLink: 'Управление в плагинах', - toolSetting: 'Настройки инструмента', - unsupportedMCPTool: 'В настоящее время выбранная версия плагина стратегий агента не поддерживает инструменты MCP.', - }, - configureTool: 'Инструмент настройки', - endpointsTip: 'Этот плагин предоставляет определенные функциональные возможности через конечные точки, и вы можете настроить несколько наборов конечных точек для текущей рабочей области.', - endpointDeleteTip: 'Удалить конечную точку', - disabled: 'Нетрудоспособный', - serviceOk: 'Услуга ОК', - configureApp: 'Настройка приложения', - endpointDeleteContent: 'Хотели бы вы удалить {{name}}?', - strategyNum: '{{число}} {{Стратегия}} ВКЛЮЧЕННЫЙ', - endpoints: 'Конечные точки', - modelNum: '{{число}} МОДЕЛИ В КОМПЛЕКТЕ', - endpointDisableTip: 'Отключить конечную точку', - configureModel: 'Настройка модели', - endpointModalDesc: 'После настройки можно использовать функции, предоставляемые плагином через конечные точки API.', - endpointModalTitle: 'Настройка конечной точки', - actionNum: '{{число}} {{действие}} ВКЛЮЧЕННЫЙ', - endpointDisableContent: 'Хотели бы вы отключить {{name}}?', - endpointsEmpty: 'Нажмите кнопку «+», чтобы добавить конечную точку', - switchVersion: 'Версия для переключателя', - endpointsDocLink: 'Посмотреть документ', - deprecation: { - reason: { - businessAdjustments: 'бизнес-правки', - ownershipTransferred: 'передача права собственности', - noMaintainer: 'нет сопровождающего', - }, - noReason: 'Этот плагин был устаревшим и больше не будет обновляться.', - onlyReason: 'Этот плагин был устаревшим из-за {{deprecatedReason}} и больше не будет обновляться.', - fullMessage: 'Этот плагин больше не поддерживается по причине {{deprecatedReason}} и больше не будет обновляться. Пожалуйста, используйте {{-alternativePluginId}} вместо этого.', - }, - }, - debugInfo: { - title: 'Отладка', - viewDocs: 'Просмотр документации', - }, - privilege: { - whoCanDebug: 'Кто может отлаживать плагины?', - admins: 'Админы', - noone: 'Никто', - everyone: 'Каждый', - title: 'Настройки плагина', - whoCanInstall: 'Кто может устанавливать плагины и управлять ими?', - }, - pluginInfoModal: { - packageName: 'Пакет', - title: 'Информация о плагине', - repository: 'Хранилище', - release: 'Отпускать', - }, - action: { - deleteContentLeft: 'Вы хотели бы удалить', - pluginInfo: 'Информация о плагине', - checkForUpdates: 'Проверка обновлений', - delete: 'Удалить плагин', - deleteContentRight: 'Плагин?', - usedInApps: 'Этот плагин используется в приложениях {{num}}.', - }, - installModal: { - labels: { - package: 'Пакет', - version: 'Версия', - repository: 'Хранилище', - }, - readyToInstall: 'О программе установки следующего плагина', - close: 'Закрывать', - installedSuccessfully: 'Установка успешна', - dropPluginToInstall: 'Перетащите пакет плагина сюда для установки', - uploadFailed: 'Ошибка загрузки', - cancel: 'Отмена', - installFailed: 'Ошибка установки', - readyToInstallPackages: 'О необходимости установки следующих плагинов {{num}}', - installedSuccessfullyDesc: 'Плагин успешно установлен.', - installComplete: 'Монтаж завершен', - next: 'Следующий', - fromTrustSource: 'Убедитесь, что вы устанавливаете плагины только из надежного источника.', - install: 'Устанавливать', - installPlugin: 'Установить плагин', - installFailedDesc: 'Плагин был установлен не удалось.', - back: 'Назад', - pluginLoadErrorDesc: 'Этот плагин не будет установлен', - installing: 'Установка...', - uploadingPackage: 'Загрузка {{packageName}}...', - pluginLoadError: 'Ошибка загрузки плагина', - readyToInstallPackage: 'О программе установки следующего плагина', - installWarning: 'Этот плагин не разрешено устанавливать.', - }, - installFromGitHub: { - gitHubRepo: 'Репозиторий GitHub', - selectPackagePlaceholder: 'Пожалуйста, выберите пакет', - installNote: 'Убедитесь, что вы устанавливаете плагины только из надежного источника.', - selectPackage: 'Выбрать пакет', - installedSuccessfully: 'Установка успешна', - selectVersion: 'Выберите версию', - updatePlugin: 'Обновление плагина с GitHub', - installFailed: 'Ошибка установки', - uploadFailed: 'Ошибка загрузки', - installPlugin: 'Установка плагина с GitHub', - selectVersionPlaceholder: 'Пожалуйста, выберите версию', - }, - upgrade: { - close: 'Закрывать', - upgrading: 'Установка...', - successfulTitle: 'Установка успешна', - title: 'Установить плагин', - upgrade: 'Устанавливать', - usedInApps: 'Используется в приложениях {{num}}', - description: 'О программе установки следующего плагина', - }, - error: { - inValidGitHubUrl: 'Недопустимый URL-адрес GitHub. Пожалуйста, введите действительный URL-адрес в формате: https://github.com/owner/repo', - noReleasesFound: 'Релизы не найдены. Пожалуйста, проверьте репозиторий GitHub или входной URL.', - fetchReleasesError: 'Не удается получить релизы. Пожалуйста, повторите попытку позже.', - }, - marketplace: { - sortOption: { - newlyReleased: 'Недавно выпущенные', - mostPopular: 'Самые популярные', - firstReleased: 'Впервые выпущен', - recentlyUpdated: 'Недавно обновленные', - }, - pluginsResult: 'Результаты {{num}}', - moreFrom: 'Больше из Marketplace', - noPluginFound: 'Плагин не найден', - sortBy: 'Черный город', - empower: 'Расширьте возможности разработки ИИ', - difyMarketplace: 'Торговая площадка Dify', - viewMore: 'Подробнее', - and: 'и', - discover: 'Обнаруживать', - verifiedTip: 'Подтверждено Dify', - partnerTip: 'Подтверждено партнером Dify', - }, - task: { - installing: 'Установка плагинов {{installingLength}}, 0 готово.', - installingWithError: 'Установка плагинов {{installingLength}}, {{successLength}} успех, {{errorLength}} неудачный', - clearAll: 'Очистить все', - installingWithSuccess: 'Установка плагинов {{installingLength}}, {{successLength}} успех.', - installedError: 'плагины {{errorLength}} не удалось установить', - installError: 'Плагины {{errorLength}} не удалось установить, нажмите для просмотра', - installSuccess: '{{successLength}} plugins installed successfully', - installed: 'Installed', - runningPlugins: 'Installing Plugins', - successPlugins: 'Successfully Installed Plugins', - errorPlugins: 'Failed to Install Plugins', - }, - install: '{{num}} установок', - searchCategories: 'Поиск категорий', - search: 'Искать', - searchInMarketplace: 'Поиск в маркетплейсе', - searchTools: 'Инструменты поиска...', - allCategories: 'Все категории', - endpointsEnabled: '{{num}} наборы включенных конечных точек', - installAction: 'Устанавливать', - from: 'От', - installFrom: 'УСТАНОВИТЬ С', - findMoreInMarketplace: 'Узнайте больше в Marketplace', - installPlugin: 'Установка плагина', - searchPlugins: 'Плагины поиска', - fromMarketplace: 'Из маркетплейса', - metadata: { - title: 'Плагины', - }, - difyVersionNotCompatible: 'Текущая версия Dify не совместима с этим плагином, пожалуйста, обновите до минимально необходимой версии: {{minimalDifyVersion}}', - requestAPlugin: 'Запросите плагин', - publishPlugins: 'Публикация плагинов', - auth: { - oauthClient: 'OAuth клиент', - oauthClientSettings: 'Настройки клиента OAuth', - authorization: 'Авторизация', - addOAuth: 'Добавить OAuth', - custom: 'Пользовательский', - setDefault: 'Установить по умолчанию', - authRemoved: 'Авторы удалены', - setupOAuth: 'Настройка клиента OAuth', - useApi: 'Используйте API ключ', - useOAuth: 'Используйте OAuth', - authorizations: 'Авторизации', - workspaceDefault: 'Рабочее пространство по умолчанию', - authorizationName: 'Имя авторизации', - default: 'По умолчанию', - useOAuthAuth: 'Используйте авторизацию OAuth', - addApi: 'Добавьте API-ключ', - useApiAuth: 'Конфигурация авторизации ключа API', - saveOnly: 'Сохранить только', - saveAndAuth: 'Сохранить и авторизовать', - useApiAuthDesc: 'После настройки учетных данных все члены рабочей области могут использовать этот инструмент при оркестрации приложений.', - clientInfo: 'Поскольку не найдены секреты клиентской системы для этого поставщика инструментов, необходимо настроить его вручную, для redirect_uri, пожалуйста, используйте', - unavailable: 'Недоступно', - customCredentialUnavailable: 'Кастомные учетные данные в настоящее время недоступны', - credentialUnavailable: 'Учетные данные в настоящее время недоступны. Пожалуйста, свяжитесь с администратором.', - credentialUnavailableInButton: 'Учетные данные недоступны', - emptyAuth: 'Пожалуйста, настройте аутентификацию', - connectedWorkspace: 'Подключенное рабочее пространство', - }, - deprecated: 'Устаревший', - autoUpdate: { - strategy: { - disabled: { - name: 'Отключен', - description: 'Плагины не будут автоматически обновляться', - }, - fixOnly: { - name: 'Только исправить', - selectedDescription: 'Автообновление только для версий патчей', - description: 'Автообновление только для патч-версий (например, 1.0.1 → 1.0.2). Изменения в минорных версиях не вызовут обновления.', - }, - latest: { - name: 'Новости', - selectedDescription: 'Всегда обновляйте до последней версии', - description: 'Всегда обновляйте до последней версии', - }, - }, - upgradeMode: { - partial: 'Только выбрано', - all: 'Обновить все', - exclude: 'Исключить выбранное', - }, - upgradeModePlaceholder: { - partial: 'Только выбранные плагины будут автоматически обновляться. В данный момент плагины не выбраны, поэтому никакие плагины не будут автоматически обновляться.', - exclude: 'Выбранные плагины не будут обновляться автоматически', - }, - operation: { - select: 'Выберите плагины', - clearAll: 'Очистить все', - }, - pluginDowngradeWarning: { - exclude: 'Исключить из автообновления', - title: 'Понижение версии плагина', - downgrade: 'Все равно понизьте версию', - description: 'Автообновление в данный момент включено для этого плагина. Понижение версии может привести к тому, что ваши изменения будут перезаписаны во время следующего автоматического обновления.', - }, - noPluginPlaceholder: { - noFound: 'Плагины не найдены', - noInstalled: 'Нет установленных плагинов', - }, - updateTimeTitle: 'Время обновления', - updateTime: 'Время обновления', - automaticUpdates: 'Автоматические обновления', - updateSettings: 'Обновить настройки', - nextUpdateTime: 'Следующее автообновление: {{time}}', - specifyPluginsToUpdate: 'Укажите плагины для обновления', - excludeUpdate: 'Следующие {{num}} плагины не будут обновляться автоматически', - partialUPdate: 'Только следующие {{num}} плагины будут обновляться автоматически', - changeTimezone: 'Чтобы изменить часовой пояс, перейдите в Настройки', - }, - readmeInfo: { - title: 'ПРОЧТИ_МЕНЯ', - needHelpCheckReadme: 'Нужна помощь? Ознакомьтесь с файлом README.', - noReadmeAvailable: 'README недоступен', - failedToFetch: 'Не удалось получить README', - }, -} - -export default translation diff --git a/web/i18n/ru-RU/register.json b/web/i18n/ru-RU/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/ru-RU/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/ru-RU/register.ts b/web/i18n/ru-RU/register.ts deleted file mode 100644 index 928649474b..0000000000 --- a/web/i18n/ru-RU/register.ts +++ /dev/null @@ -1,4 +0,0 @@ -const translation = { -} - -export default translation diff --git a/web/i18n/ru-RU/run-log.json b/web/i18n/ru-RU/run-log.json new file mode 100644 index 0000000000..128aee29cb --- /dev/null +++ b/web/i18n/ru-RU/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "ВВОД", + "result": "РЕЗУЛЬТАТ", + "detail": "ДЕТАЛИ", + "tracing": "ТРАССИРОВКА", + "resultPanel": { + "status": "СТАТУС", + "time": "ПРОШЕДШЕЕ ВРЕМЯ", + "tokens": "ВСЕГО ТОКЕНОВ" + }, + "meta": { + "title": "МЕТАДАННЫЕ", + "status": "Статус", + "version": "Версия", + "executor": "Исполнитель", + "startTime": "Время начала", + "time": "Прошедшее время", + "tokens": "Всего токенов", + "steps": "Шаги выполнения" + }, + "resultEmpty": { + "title": "Этот запуск выводит только формат JSON,", + "tipLeft": "пожалуйста, перейдите на ", + "link": "панель деталей", + "tipRight": " чтобы просмотреть его." + }, + "circularInvocationTip": "В текущем рабочем процессе существует циклический вызов инструментов/узлов.", + "actionLogs": "Журналы действий" +} diff --git a/web/i18n/ru-RU/run-log.ts b/web/i18n/ru-RU/run-log.ts deleted file mode 100644 index 1e08dd6189..0000000000 --- a/web/i18n/ru-RU/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -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: ' чтобы просмотреть его.', - }, - circularInvocationTip: 'В текущем рабочем процессе существует циклический вызов инструментов/узлов.', - actionLogs: 'Журналы действий', -} - -export default translation diff --git a/web/i18n/ru-RU/share.json b/web/i18n/ru-RU/share.json new file mode 100644 index 0000000000..c599ceaef7 --- /dev/null +++ b/web/i18n/ru-RU/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "", + "appUnavailable": "Приложение недоступно", + "appUnknownError": "Приложение недоступно" + }, + "chat": { + "newChat": "Новый чат", + "pinnedTitle": "Закрепленные", + "unpinnedTitle": "Чаты", + "newChatDefaultName": "Новый разговор", + "resetChat": "Сбросить разговор", + "poweredBy": "Работает на", + "prompt": "Подсказка", + "privatePromptConfigTitle": "Настройки разговора", + "publicPromptConfigTitle": "Начальная подсказка", + "configStatusDes": "Перед началом вы можете изменить настройки разговора", + "configDisabled": "Для этого сеанса использовались настройки предыдущего сеанса.", + "startChat": "Начать чат", + "privacyPolicyLeft": "Пожалуйста, ознакомьтесь с ", + "privacyPolicyMiddle": "политикой конфиденциальности", + "privacyPolicyRight": ", предоставленной разработчиком приложения.", + "deleteConversation": { + "title": "Удалить разговор", + "content": "Вы уверены, что хотите удалить этот разговор?" + }, + "tryToSolve": "Попробуйте решить", + "temporarySystemIssue": "Извините, временная проблема с системой.", + "expand": "Развернуть", + "collapse": "Свернуть", + "viewChatSettings": "Посмотреть настройки чата", + "chatSettingsTitle": "Новая настройка чата", + "newChatTip": "Уже в новом чате", + "chatFormTip": "Настройки чата не могут быть изменены после его начала." + }, + "generation": { + "tabs": { + "create": "Запустить один раз", + "batch": "Запустить пакетно", + "saved": "Сохраненные" + }, + "savedNoData": { + "title": "Вы еще не сохранили ни одного результата!", + "description": "Начните генерировать контент, и вы найдете свои сохраненные результаты здесь.", + "startCreateContent": "Начать создавать контент" + }, + "title": "Завершение ИИ", + "queryTitle": "Содержимое запроса", + "completionResult": "Результат завершения", + "queryPlaceholder": "Напишите содержимое вашего запроса...", + "run": "Выполнить", + "copy": "Копировать", + "resultTitle": "Завершение ИИ", + "noData": "ИИ даст вам то, что вы хотите, здесь.", + "csvUploadTitle": "Перетащите сюда свой CSV-файл или ", + "browse": "обзор", + "csvStructureTitle": "CSV-файл должен соответствовать следующей структуре:", + "downloadTemplate": "Скачать шаблон здесь", + "field": "Поле", + "batchFailed": { + "info": "{{num}} неудачных выполнений", + "retry": "Повторить попытку", + "outputPlaceholder": "Нет выходного содержимого" + }, + "errorMsg": { + "empty": "Пожалуйста, введите содержимое в загруженный файл.", + "fileStructNotMatch": "Загруженный CSV-файл не соответствует структуре.", + "emptyLine": "Строка {{rowIndex}} пуста", + "invalidLine": "Строка {{rowIndex}}: значение {{varName}} не может быть пустым", + "moreThanMaxLengthLine": "Строка {{rowIndex}}: значение {{varName}} не может превышать {{maxLength}} символов", + "atLeastOne": "Пожалуйста, введите хотя бы одну строку в загруженный файл." + }, + "execution": "Запуск", + "executions": "{{num}} запусков", + "stopRun": "Остановить выполнение" + }, + "login": { + "backToHome": "Назад на главную" + } +} diff --git a/web/i18n/ru-RU/share.ts b/web/i18n/ru-RU/share.ts deleted file mode 100644 index 2507fc429a..0000000000 --- a/web/i18n/ru-RU/share.ts +++ /dev/null @@ -1,86 +0,0 @@ -const translation = { - common: { - welcome: '', - appUnavailable: 'Приложение недоступно', - appUnknownError: 'Приложение недоступно', - }, - chat: { - newChat: 'Новый чат', - pinnedTitle: 'Закрепленные', - unpinnedTitle: 'Чаты', - newChatDefaultName: 'Новый разговор', - resetChat: 'Сбросить разговор', - poweredBy: 'Работает на', - prompt: 'Подсказка', - privatePromptConfigTitle: 'Настройки разговора', - publicPromptConfigTitle: 'Начальная подсказка', - configStatusDes: 'Перед началом вы можете изменить настройки разговора', - configDisabled: - 'Для этого сеанса использовались настройки предыдущего сеанса.', - startChat: 'Начать чат', - privacyPolicyLeft: - 'Пожалуйста, ознакомьтесь с ', - privacyPolicyMiddle: - 'политикой конфиденциальности', - privacyPolicyRight: - ', предоставленной разработчиком приложения.', - deleteConversation: { - title: 'Удалить разговор', - content: 'Вы уверены, что хотите удалить этот разговор?', - }, - tryToSolve: 'Попробуйте решить', - temporarySystemIssue: 'Извините, временная проблема с системой.', - expand: 'Развернуть', - collapse: 'Свернуть', - viewChatSettings: 'Посмотреть настройки чата', - chatSettingsTitle: 'Новая настройка чата', - newChatTip: 'Уже в новом чате', - chatFormTip: 'Настройки чата не могут быть изменены после его начала.', - }, - generation: { - tabs: { - create: 'Запустить один раз', - batch: 'Запустить пакетно', - saved: 'Сохраненные', - }, - savedNoData: { - title: 'Вы еще не сохранили ни одного результата!', - description: 'Начните генерировать контент, и вы найдете свои сохраненные результаты здесь.', - startCreateContent: 'Начать создавать контент', - }, - title: 'Завершение ИИ', - queryTitle: 'Содержимое запроса', - completionResult: 'Результат завершения', - queryPlaceholder: 'Напишите содержимое вашего запроса...', - run: 'Выполнить', - copy: 'Копировать', - resultTitle: 'Завершение ИИ', - noData: 'ИИ даст вам то, что вы хотите, здесь.', - csvUploadTitle: 'Перетащите сюда свой CSV-файл или ', - browse: 'обзор', - csvStructureTitle: 'CSV-файл должен соответствовать следующей структуре:', - downloadTemplate: 'Скачать шаблон здесь', - field: 'Поле', - batchFailed: { - info: '{{num}} неудачных выполнений', - retry: 'Повторить попытку', - outputPlaceholder: 'Нет выходного содержимого', - }, - errorMsg: { - empty: 'Пожалуйста, введите содержимое в загруженный файл.', - fileStructNotMatch: 'Загруженный CSV-файл не соответствует структуре.', - emptyLine: 'Строка {{rowIndex}} пуста', - invalidLine: 'Строка {{rowIndex}}: значение {{varName}} не может быть пустым', - moreThanMaxLengthLine: 'Строка {{rowIndex}}: значение {{varName}} не может превышать {{maxLength}} символов', - atLeastOne: 'Пожалуйста, введите хотя бы одну строку в загруженный файл.', - }, - execution: 'Запуск', - executions: '{{num}} запусков', - stopRun: 'Остановить выполнение', - }, - login: { - backToHome: 'Назад на главную', - }, -} - -export default translation diff --git a/web/i18n/ru-RU/time.json b/web/i18n/ru-RU/time.json new file mode 100644 index 0000000000..05c55f203c --- /dev/null +++ b/web/i18n/ru-RU/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Mon": "Мой", + "Tue": "Вторник", + "Sat": "Суббота", + "Sun": "Солнце", + "Thu": "Четверг", + "Wed": "Сряда", + "Fri": "Свободно" + }, + "months": { + "March": "Март", + "May": "Май", + "April": "Апрель", + "July": "Июль", + "January": "Январь", + "August": "Август", + "December": "Декабрь", + "February": "Февраль", + "September": "Сентябрь", + "October": "Октябрь", + "June": "Июнь", + "November": "Ноябрь" + }, + "operation": { + "ok": "Хорошо", + "pickDate": "Выберите дату", + "now": "Теперь", + "cancel": "Отмена" + }, + "title": { + "pickTime": "Выберите время" + }, + "defaultPlaceholder": "Выберите время...", + "dateFormats": { + "display": "MMMM D, YYYY", + "outputWithTime": "YYYY-MM-DDTHH:mm:ss.SSSZ", + "displayWithTime": "MMMM D, YYYY hh:mm A", + "output": "ГГГГ-ММ-ДД", + "input": "ГГГГ-ММ-ДД" + } +} diff --git a/web/i18n/ru-RU/time.ts b/web/i18n/ru-RU/time.ts deleted file mode 100644 index 1a8325ce17..0000000000 --- a/web/i18n/ru-RU/time.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - daysInWeek: { - Mon: 'Мой', - Tue: 'Вторник', - Sat: 'Суббота', - Sun: 'Солнце', - Thu: 'Четверг', - Wed: 'Сряда', - Fri: 'Свободно', - }, - months: { - March: 'Март', - May: 'Май', - April: 'Апрель', - July: 'Июль', - January: 'Январь', - August: 'Август', - December: 'Декабрь', - February: 'Февраль', - September: 'Сентябрь', - October: 'Октябрь', - June: 'Июнь', - November: 'Ноябрь', - }, - operation: { - ok: 'Хорошо', - pickDate: 'Выберите дату', - now: 'Теперь', - cancel: 'Отмена', - }, - title: { - pickTime: 'Выберите время', - }, - defaultPlaceholder: 'Выберите время...', - dateFormats: { - display: 'MMMM D, YYYY', - outputWithTime: 'YYYY-MM-DDTHH:mm:ss.SSSZ', - displayWithTime: 'MMMM D, YYYY hh:mm A', - output: 'ГГГГ-ММ-ДД', - input: 'ГГГГ-ММ-ДД', - }, -} - -export default translation diff --git a/web/i18n/ru-RU/tools.json b/web/i18n/ru-RU/tools.json new file mode 100644 index 0000000000..8bb8861ac2 --- /dev/null +++ b/web/i18n/ru-RU/tools.json @@ -0,0 +1,262 @@ +{ + "title": "Инструменты", + "createCustomTool": "Создать пользовательский инструмент", + "customToolTip": "Узнать больше о пользовательских инструментах Dify", + "type": { + "builtIn": "Встроенные", + "custom": "Пользовательские", + "workflow": "Рабочий процесс" + }, + "contribute": { + "line1": "Я заинтересован в", + "line2": "внесении инструментов в Dify.", + "viewGuide": "Посмотреть руководство" + }, + "author": "Автор", + "auth": { + "authorized": "Авторизовано", + "setup": "Настроить авторизацию для использования", + "setupModalTitle": "Настроить авторизацию", + "setupModalTitleDescription": "После настройки учетных данных все участники рабочего пространства смогут использовать этот инструмент при оркестровке приложений." + }, + "includeToolNum": "Включено {{num}} инструментов", + "addToolModal": { + "type": "тип", + "category": "категория", + "added": "добавлено", + "custom": { + "title": "Нет доступного пользовательского инструмента", + "tip": "Создать пользовательский инструмент" + }, + "workflow": { + "title": "Нет доступного инструмента рабочего процесса", + "tip": "Публиковать рабочие процессы как инструменты в Студии" + }, + "mcp": { + "title": "Нет доступного инструмента MCP", + "tip": "Добавить сервер MCP" + }, + "agent": { + "title": "Нет доступной стратегии агента" + } + }, + "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": "Нет", + "apiKeyPlaceholder": "Название заголовка HTTP для ключа API", + "apiValuePlaceholder": "Введите ключ API", + "api_key_header": "Заголовок", + "queryParamPlaceholder": "Имя параметра запроса для API-ключа", + "api_key_query": "Параметр запроса" + }, + "key": "Ключ", + "value": "Значение", + "queryParam": "Параметр запроса", + "queryParamTooltip": "Название параметра запроса API-ключа, который нужно передать, например, \"key\" в \"https://example.com/test?key=API_KEY\"." + }, + "authHeaderPrefix": { + "title": "Тип авторизации", + "types": { + "basic": "Базовый", + "bearer": "Bearer", + "custom": "Пользовательский" + } + }, + "privacyPolicy": "Политика конфиденциальности", + "privacyPolicyPlaceholder": "Пожалуйста, введите политику конфиденциальности", + "toolInput": { + "title": "Входные данные инструмента", + "name": "Название", + "required": "Обязательно", + "method": "Метод", + "methodSetting": "Настройка", + "methodSettingTip": "Пользователь заполняет конфигурацию инструмента", + "methodParameter": "Параметр", + "methodParameterTip": "LLM заполняет во время вывода", + "label": "Теги", + "labelPlaceholder": "Выберите теги (необязательно)", + "description": "Описание", + "descriptionPlaceholder": "Описание значения параметра" + }, + "customDisclaimer": "Пользовательский отказ от ответственности", + "customDisclaimerPlaceholder": "Пожалуйста, введите пользовательский отказ от ответственности", + "confirmTitle": "Подтвердить сохранение?", + "confirmTip": "Приложения, использующие этот инструмент, будут затронуты", + "deleteToolConfirmTitle": "Удалить этот инструмент?", + "deleteToolConfirmContent": "Удаление инструмента необратимо. Пользователи больше не смогут получить доступ к вашему инструменту.", + "toolOutput": { + "title": "Вывод инструмента", + "name": "Имя", + "reserved": "Зарезервировано", + "reservedParameterDuplicateTip": "text, json и files — зарезервированные переменные. Переменные с этими именами не могут появляться в схеме вывода.", + "description": "Описание" + } + }, + "test": { + "title": "Тест", + "parametersValue": "Параметры и значение", + "parameters": "Параметры", + "value": "Значение", + "testResult": "Результаты теста", + "testResultPlaceholder": "Результат теста будет отображаться здесь" + }, + "thought": { + "using": "Использование", + "used": "Использовано", + "requestTitle": "Запрос к", + "responseTitle": "Ответ от" + }, + "setBuiltInTools": { + "info": "Информация", + "setting": "Настройка", + "toolDescription": "Описание инструмента", + "parameters": "параметры", + "string": "строка", + "number": "число", + "required": "Обязательно", + "infoAndSetting": "Информация и настройки", + "file": "файл" + }, + "noCustomTool": { + "title": "Нет пользовательских инструментов!", + "content": "Добавьте и управляйте своими пользовательскими инструментами здесь для создания приложений ИИ.", + "createTool": "Создать инструмент" + }, + "noSearchRes": { + "title": "Извините, результаты не найдены!", + "content": "Мы не смогли найти никаких инструментов, соответствующих вашему поиску.", + "reset": "Сбросить поиск" + }, + "builtInPromptTitle": "Подсказка", + "toolRemoved": "Инструмент удален", + "notAuthorized": "Инструмент не авторизован", + "howToGet": "Как получить", + "openInStudio": "Открыть в Studio", + "toolNameUsageTip": "Название вызова инструмента для рассуждений агента и подсказок", + "copyToolName": "Копировать имя", + "noTools": "Инструменты не найдены", + "mcp": { + "create": { + "cardTitle": "Добавить MCP сервер (HTTP)", + "cardLink": "Узнайте больше об интеграции MCP сервера" + }, + "noConfigured": "Неконфигурированный сервер", + "updateTime": "Обновлено", + "toolsCount": "{count} инструментов", + "noTools": "Нет доступных инструментов", + "modal": { + "title": "Добавить MCP сервер (HTTP)", + "editTitle": "Редактировать MCP сервер (HTTP)", + "name": "Имя и иконка", + "namePlaceholder": "Назовите ваш MCP сервер", + "serverUrl": "URL сервера", + "serverUrlPlaceholder": "URL конечной точки сервера", + "serverUrlWarning": "Обновление адреса сервера может нарушить работу приложений, которые зависят от этого сервера", + "serverIdentifier": "Идентификатор сервера", + "serverIdentifierTip": "Уникальный идентификатор MCP сервера в рабочем пространстве. Только строчные буквы, цифры, подчеркивания и дефисы. Максимум 24 символа.", + "serverIdentifierPlaceholder": "Уникальный идентификатор, например, мой-сервер-mcp", + "serverIdentifierWarning": "Сервер не будет распознан существующими приложениями после изменения ID", + "cancel": "Отмена", + "save": "Сохранить", + "confirm": "Добавить и авторизовать", + "timeout": "Тайм-аут", + "sseReadTimeout": "Таймаут чтения SSE", + "headerValuePlaceholder": "например, Токен носителя 123", + "headers": "Заголовки", + "headerKey": "Название заголовка", + "timeoutPlaceholder": "тридцать", + "addHeader": "Добавить заголовок", + "headerValue": "Значение заголовка", + "headerKeyPlaceholder": "например, Авторизация", + "noHeaders": "Нет настроенных пользовательских заголовков", + "maskedHeadersTip": "Значения заголовков скрыты для безопасности. Изменения обновят фактические значения.", + "headersTip": "Дополнительные HTTP заголовки для отправки с запросами к серверу MCP", + "configurations": "Конфигурации", + "clientID": "Идентификатор клиента", + "clientSecretPlaceholder": "Секрет клиента", + "useDynamicClientRegistration": "Использовать динамическую регистрацию клиентов", + "clientSecret": "Секрет клиента", + "authentication": "Аутентификация", + "redirectUrlWarning": "Пожалуйста, настройте ваш URL перенаправления OAuth на:" + }, + "delete": "Удалить MCP сервер", + "deleteConfirmTitle": "Вы действительно хотите удалить {mcp}?", + "operation": { + "edit": "Редактировать", + "remove": "Удалить" + }, + "authorize": "Авторизовать", + "authorizing": "Авторизация...", + "authorizingRequired": "Требуется авторизация", + "authorizeTip": "После авторизации инструменты будут отображены здесь.", + "update": "Обновить", + "updating": "Обновление", + "gettingTools": "Получение инструментов...", + "updateTools": "Обновление инструментов...", + "toolsEmpty": "Инструменты не загружены", + "getTools": "Получить инструменты", + "toolUpdateConfirmTitle": "Обновить список инструментов", + "toolUpdateConfirmContent": "Обновление списка инструментов может повлиять на существующие приложения. Вы хотите продолжить?", + "toolsNum": "{count} инструментов включено", + "onlyTool": "1 инструмент включен", + "identifier": "Идентификатор сервера (Нажмите, чтобы скопировать)", + "server": { + "title": "MCP Сервер", + "url": "URL сервера", + "reGen": "Хотите регенерировать URL сервера?", + "addDescription": "Добавить описание", + "edit": "Редактировать описание", + "modal": { + "addTitle": "Добавить описание, чтобы включить MCP сервер", + "editTitle": "Редактировать описание", + "description": "Описание", + "descriptionPlaceholder": "Объясните, что делает этот инструмент и как его должен использовать LLM", + "parameters": "Параметры", + "parametersTip": "Добавьте описания для каждого параметра, чтобы помочь LLM понять их назначение и ограничения.", + "parametersPlaceholder": "Назначение и ограничения параметра", + "confirm": "Активировать MCP сервер" + }, + "publishTip": "Приложение не опубликовано. Пожалуйста, сначала опубликуйте приложение." + }, + "toolItem": { + "parameters": "Параметры", + "noDescription": "Нет описания" + } + }, + "allTools": "Все инструменты" +} diff --git a/web/i18n/ru-RU/tools.ts b/web/i18n/ru-RU/tools.ts deleted file mode 100644 index 248448e0b3..0000000000 --- a/web/i18n/ru-RU/tools.ts +++ /dev/null @@ -1,264 +0,0 @@ -const translation = { - title: 'Инструменты', - createCustomTool: 'Создать пользовательский инструмент', - customToolTip: 'Узнать больше о пользовательских инструментах Dify', - type: { - builtIn: 'Встроенные', - custom: 'Пользовательские', - workflow: 'Рабочий процесс', - }, - contribute: { - line1: 'Я заинтересован в', - line2: 'внесении инструментов в Dify.', - viewGuide: 'Посмотреть руководство', - }, - author: 'Автор', - auth: { - authorized: 'Авторизовано', - setup: 'Настроить авторизацию для использования', - setupModalTitle: 'Настроить авторизацию', - setupModalTitleDescription: 'После настройки учетных данных все участники рабочего пространства смогут использовать этот инструмент при оркестровке приложений.', - }, - includeToolNum: 'Включено {{num}} инструментов', - addToolModal: { - type: 'тип', - category: 'категория', - added: 'добавлено', - custom: { - title: 'Нет доступного пользовательского инструмента', - tip: 'Создать пользовательский инструмент', - }, - workflow: { - title: 'Нет доступного инструмента рабочего процесса', - tip: 'Публиковать рабочие процессы как инструменты в Студии', - }, - mcp: { - title: 'Нет доступного инструмента MCP', - tip: 'Добавить сервер MCP', - }, - agent: { - title: 'Нет доступной стратегии агента', - }, - }, - 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: 'Нет', - apiKeyPlaceholder: 'Название заголовка HTTP для ключа API', - apiValuePlaceholder: 'Введите ключ API', - api_key_header: 'Заголовок', - queryParamPlaceholder: 'Имя параметра запроса для API-ключа', - api_key_query: 'Параметр запроса', - }, - key: 'Ключ', - value: 'Значение', - queryParam: 'Параметр запроса', - queryParamTooltip: 'Название параметра запроса API-ключа, который нужно передать, например, "key" в "https://example.com/test?key=API_KEY".', - }, - authHeaderPrefix: { - title: 'Тип авторизации', - types: { - basic: 'Базовый', - bearer: 'Bearer', - custom: 'Пользовательский', - }, - }, - privacyPolicy: 'Политика конфиденциальности', - privacyPolicyPlaceholder: 'Пожалуйста, введите политику конфиденциальности', - toolInput: { - title: 'Входные данные инструмента', - name: 'Название', - required: 'Обязательно', - method: 'Метод', - methodSetting: 'Настройка', - methodSettingTip: 'Пользователь заполняет конфигурацию инструмента', - methodParameter: 'Параметр', - methodParameterTip: 'LLM заполняет во время вывода', - label: 'Теги', - labelPlaceholder: 'Выберите теги (необязательно)', - description: 'Описание', - descriptionPlaceholder: 'Описание значения параметра', - }, - customDisclaimer: 'Пользовательский отказ от ответственности', - customDisclaimerPlaceholder: 'Пожалуйста, введите пользовательский отказ от ответственности', - confirmTitle: 'Подтвердить сохранение?', - confirmTip: 'Приложения, использующие этот инструмент, будут затронуты', - deleteToolConfirmTitle: 'Удалить этот инструмент?', - deleteToolConfirmContent: 'Удаление инструмента необратимо. Пользователи больше не смогут получить доступ к вашему инструменту.', - toolOutput: { - title: 'Вывод инструмента', - name: 'Имя', - reserved: 'Зарезервировано', - reservedParameterDuplicateTip: 'text, json и files — зарезервированные переменные. Переменные с этими именами не могут появляться в схеме вывода.', - description: 'Описание', - }, - }, - test: { - title: 'Тест', - parametersValue: 'Параметры и значение', - parameters: 'Параметры', - value: 'Значение', - testResult: 'Результаты теста', - testResultPlaceholder: 'Результат теста будет отображаться здесь', - }, - thought: { - using: 'Использование', - used: 'Использовано', - requestTitle: 'Запрос к', - responseTitle: 'Ответ от', - }, - setBuiltInTools: { - info: 'Информация', - setting: 'Настройка', - toolDescription: 'Описание инструмента', - parameters: 'параметры', - string: 'строка', - number: 'число', - required: 'Обязательно', - infoAndSetting: 'Информация и настройки', - file: 'файл', - }, - noCustomTool: { - title: 'Нет пользовательских инструментов!', - content: 'Добавьте и управляйте своими пользовательскими инструментами здесь для создания приложений ИИ.', - createTool: 'Создать инструмент', - }, - noSearchRes: { - title: 'Извините, результаты не найдены!', - content: 'Мы не смогли найти никаких инструментов, соответствующих вашему поиску.', - reset: 'Сбросить поиск', - }, - builtInPromptTitle: 'Подсказка', - toolRemoved: 'Инструмент удален', - notAuthorized: 'Инструмент не авторизован', - howToGet: 'Как получить', - openInStudio: 'Открыть в Studio', - toolNameUsageTip: 'Название вызова инструмента для рассуждений агента и подсказок', - copyToolName: 'Копировать имя', - noTools: 'Инструменты не найдены', - mcp: { - create: { - cardTitle: 'Добавить MCP сервер (HTTP)', - cardLink: 'Узнайте больше об интеграции MCP сервера', - }, - noConfigured: 'Неконфигурированный сервер', - updateTime: 'Обновлено', - toolsCount: '{count} инструментов', - noTools: 'Нет доступных инструментов', - modal: { - title: 'Добавить MCP сервер (HTTP)', - editTitle: 'Редактировать MCP сервер (HTTP)', - name: 'Имя и иконка', - namePlaceholder: 'Назовите ваш MCP сервер', - serverUrl: 'URL сервера', - serverUrlPlaceholder: 'URL конечной точки сервера', - serverUrlWarning: 'Обновление адреса сервера может нарушить работу приложений, которые зависят от этого сервера', - serverIdentifier: 'Идентификатор сервера', - serverIdentifierTip: 'Уникальный идентификатор MCP сервера в рабочем пространстве. Только строчные буквы, цифры, подчеркивания и дефисы. Максимум 24 символа.', - serverIdentifierPlaceholder: 'Уникальный идентификатор, например, мой-сервер-mcp', - serverIdentifierWarning: 'Сервер не будет распознан существующими приложениями после изменения ID', - cancel: 'Отмена', - save: 'Сохранить', - confirm: 'Добавить и авторизовать', - timeout: 'Тайм-аут', - sseReadTimeout: 'Таймаут чтения SSE', - headerValuePlaceholder: 'например, Токен носителя 123', - headers: 'Заголовки', - headerKey: 'Название заголовка', - timeoutPlaceholder: 'тридцать', - addHeader: 'Добавить заголовок', - headerValue: 'Значение заголовка', - headerKeyPlaceholder: 'например, Авторизация', - noHeaders: 'Нет настроенных пользовательских заголовков', - maskedHeadersTip: 'Значения заголовков скрыты для безопасности. Изменения обновят фактические значения.', - headersTip: 'Дополнительные HTTP заголовки для отправки с запросами к серверу MCP', - configurations: 'Конфигурации', - clientID: 'Идентификатор клиента', - clientSecretPlaceholder: 'Секрет клиента', - useDynamicClientRegistration: 'Использовать динамическую регистрацию клиентов', - clientSecret: 'Секрет клиента', - authentication: 'Аутентификация', - redirectUrlWarning: 'Пожалуйста, настройте ваш URL перенаправления OAuth на:', - }, - delete: 'Удалить MCP сервер', - deleteConfirmTitle: 'Вы действительно хотите удалить {mcp}?', - operation: { - edit: 'Редактировать', - remove: 'Удалить', - }, - authorize: 'Авторизовать', - authorizing: 'Авторизация...', - authorizingRequired: 'Требуется авторизация', - authorizeTip: 'После авторизации инструменты будут отображены здесь.', - update: 'Обновить', - updating: 'Обновление', - gettingTools: 'Получение инструментов...', - updateTools: 'Обновление инструментов...', - toolsEmpty: 'Инструменты не загружены', - getTools: 'Получить инструменты', - toolUpdateConfirmTitle: 'Обновить список инструментов', - toolUpdateConfirmContent: 'Обновление списка инструментов может повлиять на существующие приложения. Вы хотите продолжить?', - toolsNum: '{count} инструментов включено', - onlyTool: '1 инструмент включен', - identifier: 'Идентификатор сервера (Нажмите, чтобы скопировать)', - server: { - title: 'MCP Сервер', - url: 'URL сервера', - reGen: 'Хотите регенерировать URL сервера?', - addDescription: 'Добавить описание', - edit: 'Редактировать описание', - modal: { - addTitle: 'Добавить описание, чтобы включить MCP сервер', - editTitle: 'Редактировать описание', - description: 'Описание', - descriptionPlaceholder: 'Объясните, что делает этот инструмент и как его должен использовать LLM', - parameters: 'Параметры', - parametersTip: 'Добавьте описания для каждого параметра, чтобы помочь LLM понять их назначение и ограничения.', - parametersPlaceholder: 'Назначение и ограничения параметра', - confirm: 'Активировать MCP сервер', - }, - publishTip: 'Приложение не опубликовано. Пожалуйста, сначала опубликуйте приложение.', - }, - toolItem: { - parameters: 'Параметры', - noDescription: 'Нет описания', - }, - }, - allTools: 'Все инструменты', -} - -export default translation diff --git a/web/i18n/ru-RU/workflow.json b/web/i18n/ru-RU/workflow.json new file mode 100644 index 0000000000..e773b91e75 --- /dev/null +++ b/web/i18n/ru-RU/workflow.json @@ -0,0 +1,1294 @@ +{ + "common": { + "undo": "Отменить", + "redo": "Повторить", + "editing": "Редактирование", + "autoSaved": "Автосохранено", + "unpublished": "Не опубликовано", + "published": "Опубликовано", + "publish": "Опубликовать", + "update": "Обновить", + "run": "Тестовый запуск", + "running": "Выполняется", + "inRunMode": "В режиме выполнения", + "inPreview": "В режиме предпросмотра", + "inPreviewMode": "В режиме предпросмотра", + "preview": "Предпросмотр", + "viewRunHistory": "Посмотреть историю запусков", + "runHistory": "История запусков", + "goBackToEdit": "Вернуться к редактору", + "conversationLog": "Журнал разговоров", + "debugAndPreview": "Предпросмотр", + "restart": "Перезапустить", + "currentDraft": "Текущий черновик", + "currentDraftUnpublished": "Текущий черновик не опубликован", + "latestPublished": "Последняя опубликованная версия", + "publishedAt": "Опубликовано", + "restore": "Восстановить", + "runApp": "Запустить приложение", + "batchRunApp": "Пакетный запуск приложения", + "accessAPIReference": "Доступ к справочнику API", + "embedIntoSite": "Встроить на сайт", + "addTitle": "Добавить заголовок...", + "addDescription": "Добавить описание...", + "noVar": "Нет переменной", + "searchVar": "Поиск переменной", + "variableNamePlaceholder": "Имя переменной", + "setVarValuePlaceholder": "Установить значение переменной", + "needConnectTip": "Этот шаг ни к чему не подключен", + "maxTreeDepth": "Максимальный предел {{depth}} узлов на ветку", + "workflowProcess": "Процесс рабочего процесса", + "notRunning": "Еще не запущено", + "previewPlaceholder": "Введите текст в поле ниже, чтобы начать отладку чат-бота", + "effectVarConfirm": { + "title": "Удалить переменную", + "content": "Переменная используется в других узлах. Вы все еще хотите удалить ее?" + }, + "insertVarTip": "Нажмите клавишу \"/\" чтобы быстро вставить", + "processData": "Обработка данных", + "input": "Вход", + "output": "Выход", + "jinjaEditorPlaceholder": "Введите \"/\" или \"{\" для вставки переменной", + "viewOnly": "Только просмотр", + "showRunHistory": "Показать историю запусков", + "enableJinja": "Включить поддержку шаблонов Jinja", + "learnMore": "Узнать больше", + "copy": "Копировать", + "duplicate": "Дублировать", + "pasteHere": "Вставить сюда", + "pointerMode": "Режим указателя", + "handMode": "Режим руки", + "model": "Модель", + "workflowAsTool": "Рабочий процесс как инструмент", + "configureRequired": "Требуется настройка", + "configure": "Настроить", + "manageInTools": "Управление в инструментах", + "workflowAsToolTip": "После обновления рабочего процесса требуется перенастройка инструмента.", + "viewDetailInTracingPanel": "Посмотреть подробности", + "syncingData": "Синхронизация данных, всего несколько секунд.", + "importDSL": "Импортировать DSL", + "importDSLTip": "Текущий черновик будет перезаписан. Экспортируйте рабочий процесс в качестве резервной копии перед импортом.", + "backupCurrentDraft": "Резервное копирование текущего черновика", + "chooseDSL": "Выберите файл DSL(yml)", + "overwriteAndImport": "Перезаписать и импортировать", + "importFailure": "Ошибка импорта", + "importSuccess": "Импорт успешно завершен", + "parallelTip": { + "click": { + "title": "Щелчок", + "desc": "добавить" + }, + "drag": { + "title": "Волочить", + "desc": "для подключения" + }, + "limit": "Параллелизм ограничен ветвями {{num}}.", + "depthLimit": "Ограничение на количество слоев параллельной вложенности {{num}}" + }, + "disconnect": "Разъединять", + "jumpToNode": "Перейти к этому узлу", + "addParallelNode": "Добавить параллельный узел", + "parallel": "ПАРАЛЛЕЛЬНЫЙ", + "branch": "ВЕТКА", + "fileUploadTip": "Функции загрузки изображений были обновлены до загрузки файлов.", + "ImageUploadLegacyTip": "Теперь вы можете создавать переменные типа файла в стартовой форме. В будущем мы больше не будем поддерживать функцию загрузки изображений.", + "importWarning": "Осторожность", + "importWarningDetails": "Разница в версии DSL может повлиять на некоторые функции", + "openInExplore": "Открыть в разделе «Обзор»", + "onFailure": "О неудаче", + "addFailureBranch": "Добавить ветвь Fail", + "noHistory": "Без истории", + "loadMore": "Загрузите больше рабочих процессов", + "versionHistory": "История версий", + "exportPNG": "Экспортировать как PNG", + "exportImage": "Экспортировать изображение", + "exportJPEG": "Экспортировать как JPEG", + "exitVersions": "Выходные версии", + "exportSVG": "Экспортировать как SVG", + "publishUpdate": "Опубликовать обновление", + "addBlock": "Добавить узел", + "needAnswerNode": "В узел ответа необходимо добавить", + "needOutputNode": "Необходимо добавить узел вывода", + "tagBound": "Количество приложений, использующих этот тег", + "currentView": "Текущий вид", + "currentWorkflow": "Текущий рабочий процесс", + "moreActions": "Больше действий", + "listening": "Слушание", + "chooseStartNodeToRun": "Выберите начальный узел для запуска", + "runAllTriggers": "Запустить все триггеры", + "features": "Функции", + "featuresDescription": "Улучшить пользовательский опыт веб-приложения", + "featuresDocLink": "Узнать больше", + "needAdd": "Необходимо добавить узел {{node}}", + "needStartNode": "Необходимо добавить хотя бы один начальный узел", + "workflowAsToolDisabledHint": "Опубликуйте последний рабочий процесс и убедитесь, что подключен узел ввода пользователя, прежде чем настраивать его как инструмент." + }, + "env": { + "envPanelTitle": "Переменные среды", + "envDescription": "Переменные среды могут использоваться для хранения конфиденциальной информации и учетных данных. Они доступны только для чтения и могут быть отделены от файла DSL во время экспорта.", + "envPanelButton": "Добавить переменную", + "modal": { + "title": "Добавить переменную среды", + "editTitle": "Редактировать переменную среды", + "type": "Тип", + "name": "Имя", + "namePlaceholder": "Имя переменной среды", + "value": "Значение", + "valuePlaceholder": "Значение переменной среды", + "secretTip": "Используется для определения конфиденциальной информации или данных, с настройками DSL, настроенными для предотвращения утечки.", + "description": "Описание", + "descriptionPlaceholder": "Опишите переменную" + }, + "export": { + "title": "Экспортировать секретные переменные среды?", + "checkbox": "Экспортировать секретные значения", + "ignore": "Экспортировать DSL", + "export": "Экспортировать DSL с секретными значениями " + } + }, + "globalVar": { + "title": "Системные переменные", + "description": "Системные переменные — это глобальные переменные, к которым любой узел может обращаться без соединений при корректном типе, например идентификатор конечного пользователя и идентификатор рабочего процесса.", + "fieldsDescription": { + "conversationId": "ID беседы", + "dialogCount": "Количество бесед", + "userId": "ID пользователя", + "triggerTimestamp": "Отметка времени запуска приложения", + "appId": "ID приложения", + "workflowId": "ID рабочего процесса", + "workflowRunId": "ID запуска рабочего процесса" + } + }, + "chatVariable": { + "panelTitle": "Переменные разговора", + "panelDescription": "Переменные разговора используются для хранения интерактивной информации, которую LLM необходимо запомнить, включая историю разговоров, загруженные файлы, пользовательские настройки. Они доступны для чтения и записи. ", + "docLink": "Посетите нашу документацию, чтобы узнать больше.", + "button": "Добавить переменную", + "modal": { + "title": "Добавить переменную разговора", + "editTitle": "Редактировать переменную разговора", + "name": "Имя", + "namePlaceholder": "Имя переменной", + "type": "Тип", + "value": "Значение по умолчанию", + "valuePlaceholder": "Значение по умолчанию, оставьте пустым, чтобы не устанавливать", + "description": "Описание", + "descriptionPlaceholder": "Опишите переменную", + "editInJSON": "Редактировать в JSON", + "oneByOne": "Добавлять по одному", + "editInForm": "Редактировать в форме", + "arrayValue": "Значение", + "addArrayValue": "Добавить значение", + "objectKey": "Ключ", + "objectType": "Тип", + "objectValue": "Значение по умолчанию" + }, + "storedContent": "Сохраненный контент", + "updatedAt": "Обновлено в " + }, + "changeHistory": { + "title": "История изменений", + "placeholder": "Вы еще ничего не изменили", + "clearHistory": "Очистить историю", + "hint": "Подсказка", + "hintText": "Ваши действия по редактированию отслеживаются в истории изменений, которая хранится на вашем устройстве в течение этого сеанса. Эта история будет очищена, когда вы покинете редактор.", + "stepBackward_one": "{{count}} шаг назад", + "stepBackward_other": "{{count}} шагов назад", + "stepForward_one": "{{count}} шаг вперед", + "stepForward_other": "{{count}} шагов вперед", + "sessionStart": "Начало сеанса", + "currentState": "Текущее состояние", + "noteAdd": "Заметка добавлена", + "noteChange": "Заметка изменена", + "noteDelete": "Заметка удалена", + "nodeDragStop": "Узел перемещен", + "nodeResize": "Узел изменен в размере", + "nodeTitleChange": "Название узла изменено", + "edgeDelete": "Узел отключен", + "nodeConnect": "Узел подключен", + "nodeDelete": "Узел удален", + "nodePaste": "Узел вставлен", + "nodeChange": "Узел изменен", + "nodeAdd": "Узел добавлен", + "nodeDescriptionChange": "Описание узла изменено" + }, + "errorMsg": { + "fieldRequired": "{{field}} обязательно для заполнения", + "authRequired": "Требуется авторизация", + "invalidJson": "{{field}} неверный JSON", + "fields": { + "variable": "Имя переменной", + "variableValue": "Значение переменной", + "code": "Код", + "model": "Модель", + "rerankModel": "Модель переранжирования", + "visionVariable": "Переменная зрения" + }, + "invalidVariable": "Неверная переменная", + "rerankModelRequired": "Перед включением модели повторного ранжирования убедитесь, что модель успешно настроена в настройках.", + "noValidTool": "{{field}} не выбран валидный инструмент", + "toolParameterRequired": "{{field}}: параметр [{{param}}] является обязательным", + "startNodeRequired": "Пожалуйста, сначала добавьте начальный узел перед {{operation}}" + }, + "singleRun": { + "testRun": "Тестовый запуск ", + "startRun": "Начать запуск", + "running": "Выполняется", + "testRunIteration": "Итерация тестового запуска", + "back": "Назад", + "iteration": "Итерация", + "loop": "Цикл", + "reRun": "Повторный запуск", + "preparingDataSource": "Подготовка источника данных" + }, + "tabs": { + "searchTool": "Поиск инструмента", + "tools": "Инструменты", + "allTool": "Все", + "customTool": "Пользовательские", + "workflowTool": "Рабочий процесс", + "question-understand": "Понимание вопроса", + "logic": "Логика", + "transform": "Преобразование", + "utilities": "Утилиты", + "noResult": "Ничего не найдено", + "plugin": "Плагин", + "agent": "Агентская стратегия", + "blocks": "Узлы", + "searchBlock": "Поиск узла", + "addAll": "Добавить всё", + "allAdded": "Все добавлено", + "sources": "Источников", + "searchDataSource": "Поиск источника данных", + "start": "Начать", + "searchTrigger": "Триггеры поиска...", + "allTriggers": "Все триггеры", + "noPluginsFound": "Плагины не найдены", + "requestToCommunity": "Запросы к сообществу", + "featuredTools": "Избранное", + "showMoreFeatured": "Показать больше", + "showLessFeatured": "Показать меньше", + "installed": "Установлено", + "pluginByAuthor": "По {{author}}", + "usePlugin": "Выбрать инструмент", + "hideActions": "Скрыть инструменты", + "noFeaturedPlugins": "Откройте больше инструментов в Маркетплейсе", + "noFeaturedTriggers": "Откройте больше триггеров на Маркетплейсе", + "startDisabledTip": "Узел триггера и узел ввода пользователя исключают друг друга." + }, + "blocks": { + "start": "Начало", + "end": "Вывод", + "answer": "Ответ", + "llm": "LLM", + "knowledge-retrieval": "Поиск знаний", + "question-classifier": "Классификатор вопросов", + "if-else": "ЕСЛИ/ИНАЧЕ", + "code": "Код", + "template-transform": "Шаблон", + "http-request": "HTTP-запрос", + "variable-assigner": "Агрегатор переменных", + "variable-aggregator": "Агрегатор переменных", + "assigner": "Назначение переменной", + "iteration-start": "Начало итерации", + "iteration": "Итерация", + "parameter-extractor": "Извлечение параметров", + "document-extractor": "Экстрактор документов", + "list-operator": "Оператор списка", + "agent": "Агент", + "loop": "Цикл", + "loop-start": "Начало цикла", + "loop-end": "Выйти из цикла", + "knowledge-index": "База знаний", + "datasource": "Источник данных", + "originalStartNode": "исходный начальный узел", + "trigger-schedule": "Триггер расписания", + "trigger-webhook": "Вебхук-триггер", + "trigger-plugin": "Триггер плагина" + }, + "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": "Объединение переменных из нескольких ветвей в одну переменную для унифицированной настройки подчиненных узлов.", + "assigner": "Узел назначения переменной используется для назначения значений записываемым переменным (например, переменным разговора).", + "variable-aggregator": "Объединение переменных из нескольких ветвей в одну переменную для унифицированной настройки подчиненных узлов.", + "iteration": "Выполнение нескольких шагов над объектом списка до тех пор, пока не будут выведены все результаты.", + "parameter-extractor": "Используйте LLM для извлечения структурированных параметров из естественного языка для вызова инструментов или HTTP-запросов.", + "list-operator": "Используется для фильтрации или сортировки содержимого массива.", + "document-extractor": "Используется для разбора загруженных документов в текстовый контент, который легко воспринимается LLM.", + "agent": "Вызов больших языковых моделей для ответа на вопросы или обработки естественного языка", + "loop-end": "Эквивалентно \"break\". Этот узел не имеет конфигурационных элементов. Когда тело цикла достигает этого узла, цикл завершается.", + "loop": "Выполните цикл логики до тех пор, пока не будет достигнуто условие завершения или максимальное количество итераций цикла.", + "knowledge-index": "База знаний о компании", + "datasource": "Источник данных О компании", + "trigger-schedule": "Триггер рабочего процесса на основе времени, который запускает рабочие процессы по расписанию", + "trigger-webhook": "Триггер вебхука получает HTTP-запросы от сторонних систем для автоматического запуска рабочих процессов.", + "trigger-plugin": "Триггер интеграции с третьими сторонами, который запускает рабочие процессы на основе событий внешней платформы" + }, + "operator": { + "zoomIn": "Увеличить", + "zoomOut": "Уменьшить", + "zoomTo50": "Масштаб 50%", + "zoomTo100": "Масштаб 100%", + "zoomToFit": "По размеру", + "alignTop": "Вверх", + "alignBottom": "Вниз", + "alignRight": "Вправо", + "distributeHorizontal": "Распределить по горизонтали", + "alignMiddle": "По центру", + "vertical": "Вертикальный", + "alignCenter": "Центр", + "alignLeft": "Влево", + "selectionAlignment": "Выравнивание выделения", + "horizontal": "Горизонтальный", + "alignNodes": "Выравнивание узлов", + "distributeVertical": "Распределить по вертикали" + }, + "panel": { + "userInputField": "Поле ввода пользователя", + "helpLink": "Помощь", + "about": "О программе", + "createdBy": "Создано ", + "nextStep": "Следующий шаг", + "runThisStep": "Выполнить этот шаг", + "checklist": "Контрольный список", + "checklistTip": "Убедитесь, что все проблемы решены перед публикацией", + "checklistResolved": "Все проблемы решены", + "change": "Изменить", + "optional": "(необязательно)", + "selectNextStep": "Выберите следующий шаг", + "organizeBlocks": "Организовать узлы", + "addNextStep": "Добавьте следующий шаг в этот рабочий процесс", + "changeBlock": "Изменить узел", + "minimize": "Выйти из полноэкранного режима", + "maximize": "Максимизировать холст", + "scrollToSelectedNode": "Прокрутите до выбранного узла", + "optional_and_hidden": "(необязательно и скрыто)", + "goTo": "Перейти к", + "startNode": "Начальный узел", + "openWorkflow": "Открыть рабочий процесс" + }, + "nodes": { + "common": { + "outputVars": "Выходные переменные", + "insertVarTip": "Вставить переменную", + "memory": { + "memory": "Память", + "memoryTip": "Настройки памяти чата", + "windowSize": "Размер окна", + "conversationRoleName": "Имя роли разговора", + "user": "Префикс пользователя", + "assistant": "Префикс помощника" + }, + "memories": { + "title": "Воспоминания", + "tip": "Память чата", + "builtIn": "Встроенные" + }, + "errorHandle": { + "none": { + "title": "Никакой", + "desc": "Узел перестанет работать, если произойдет исключение и оно не будет обработано" + }, + "defaultValue": { + "title": "Значение по умолчанию", + "desc": "При возникновении ошибки укажите статическое выходное содержимое.", + "tip": "При ошибке будет возвращено значение ниже.", + "inLog": "Исключение узла, вывод в соответствии со значениями по умолчанию.", + "output": "Выходное значение по умолчанию" + }, + "failBranch": { + "desc": "При возникновении ошибки будет выполнена ветвь исключения", + "customize": "Перейдите на холст, чтобы настроить логику fail branch.", + "inLog": "Исключение узла, автоматически выполнит ветвь fail. Выходные данные узла вернут тип ошибки и сообщение об ошибке и передадут их нижестоящему потоку.", + "title": "Неудачная ветвь", + "customizeTip": "Когда ветвь fail активирована, исключения, созданные узлами, не завершат процесс. Вместо этого он автоматически выполнит предопределенную ветвь fail, что позволит вам гибко предоставлять сообщения об ошибках, отчеты, исправления или пропускать действия." + }, + "partialSucceeded": { + "tip": "В процессе есть {{num}} узлов, которые работают ненормально, пожалуйста, перейдите к трассировке, чтобы проверить логи." + }, + "title": "Обработка ошибок", + "tip": "Стратегия обработки исключений, запускаемая при обнаружении исключения на узле." + }, + "retry": { + "retry": "Снова пробовать", + "retryOnFailure": "Повторная попытка при неудаче", + "maxRetries": "максимальное количество повторных попыток", + "retryInterval": "Интервал повторных попыток", + "retryTimes": "Повторите {{раз}} раз при неудаче", + "retrying": "Повтор...", + "retrySuccessful": "Повторить попытку успешно", + "retryFailed": "Повторная попытка не удалась", + "times": "раз", + "ms": "госпожа", + "retryFailedTimes": "Повторные попытки {{times}} не увенчались успехом", + "retries": "{{число}} Повторных попыток" + }, + "typeSwitch": { + "input": "Входное значение", + "variable": "Используйте переменную" + }, + "inputVars": "Входные переменные", + "pluginNotInstalled": "Плагин не установлен" + }, + "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.", + "prompt": "подсказка", + "roleDescription": { + "system": "Дайте высокоуровневые инструкции для разговора", + "user": "Предоставьте инструкции, запросы или любой текстовый ввод для модели", + "assistant": "Ответы модели на основе сообщений пользователя" + }, + "addMessage": "Добавить сообщение", + "vision": "зрение", + "files": "Файлы", + "resolution": { + "name": "Разрешение", + "high": "Высокое", + "low": "Низкое" + }, + "outputVars": { + "output": "Создать контент", + "reasoning_content": "Содержимое рассуждений", + "usage": "Информация об использовании модели" + }, + "singleRun": { + "variable": "Переменная" + }, + "sysQueryInUser": "sys.query в сообщении пользователя обязателен", + "jsonSchema": { + "warningTips": { + "saveSchema": "Пожалуйста, завершите редактирование текущего поля перед сохранением схемы." + }, + "back": "Спина", + "resetDefaults": "Сброс", + "showAdvancedOptions": "Показать расширенные параметры", + "generatedResult": "Сгенерированный результат", + "generateJsonSchema": "Сгенерировать JSON-схему", + "import": "Импорт из JSON", + "stringValidations": "Проверка строк", + "promptPlaceholder": "Опишите вашу JSON-схему...", + "required": "необходимо", + "generate": "Сгенерировать", + "apply": "Подать заявку", + "addChildField": "Добавить поле ребенка", + "regenerate": "Сгенерировать заново", + "addField": "Добавить поле", + "instruction": "Инструкция", + "title": "Структурированная схема вывода", + "descriptionPlaceholder": "Добавить описание", + "fieldNamePlaceholder": "Название поля", + "doc": "Узнайте больше о структурированном выводе", + "resultTip": "Вот сгенерированный результат. Если вы не удовлетворены, вы можете вернуться и изменить свой запрос.", + "generationTip": "Вы можете использовать естественный язык для быстрого создания схемы JSON.", + "generating": "Генерация схемы JSON...", + "promptTooltip": "Преобразуйте текстовое описание в стандартизированную структуру JSON Schema." + }, + "reasoningFormat": { + "tagged": "Продолжайте думать о тегах", + "title": "Включите разделение тегов на основе логики", + "tooltip": "Извлечь содержимое из тегов think и сохранить его в поле reasoning_content.", + "separated": "Отдельные теги для мышления" + } + }, + "knowledgeRetrieval": { + "queryVariable": "Переменная запроса", + "knowledge": "Знания", + "outputVars": { + "output": "Извлеченные сегментированные данные", + "content": "Сегментированный контент", + "title": "Сегментированный заголовок", + "icon": "Сегментированный значок", + "url": "Сегментированный URL", + "metadata": "Другие метаданные", + "files": "Полученные файлы" + }, + "metadata": { + "options": { + "disabled": { + "title": "Отключено", + "subTitle": "Не включение фильтрации метаданных" + }, + "automatic": { + "desc": "Автоматически генерировать условия фильтрации метаданных на основе переменной запроса", + "title": "Автоматический", + "subTitle": "Автоматически генерировать условия фильтрации метаданных на основе запроса пользователя" + }, + "manual": { + "title": "Руководство", + "subTitle": "Вручную добавьте условия фильтрации метаданных" + } + }, + "panel": { + "conditions": "Условия", + "placeholder": "Введите значение", + "datePlaceholder": "Выберите время...", + "select": "Выберите переменную...", + "add": "Добавить условие", + "title": "Условия фильтрации метаданных", + "search": "Поиск метаданных" + }, + "title": "Фильтрация метаданных", + "tip": "Фильтрация метаданных — это процесс использования атрибутов метаданных (таких как теги, категории или права доступа) для уточнения и контроля извлечения соответствующей информации внутри системы." + }, + "queryText": "Текст запроса", + "queryAttachment": "Запрос изображений" + }, + "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": "Bearer", + "custom": "Пользовательская", + "api-key-title": "API-ключ", + "header": "Заголовок" + }, + "insertVarPlaceholder": "введите \"/\" для вставки переменной", + "timeout": { + "title": "Тайм-аут", + "connectLabel": "Тайм-аут подключения", + "connectPlaceholder": "Введите тайм-аут подключения в секундах", + "readLabel": "Тайм-аут чтения", + "readPlaceholder": "Введите тайм-аут чтения в секундах", + "writeLabel": "Тайм-аут записи", + "writePlaceholder": "Введите тайм-аут записи в секундах" + }, + "type": "Тип", + "binaryFileVariable": "Переменная двоичного файла", + "extractListPlaceholder": "Введите индекс элемента списка, введите '/' вставьте переменную", + "curl": { + "placeholder": "Вставьте сюда строку cURL", + "title": "Импорт из cURL" + }, + "verifySSL": { + "title": "Проверить SSL-сертификат", + "warningTooltip": "Отключение проверки SSL не рекомендуется для производственных сред. Это следует использовать только в разработке или тестировании, так как это делает соединение уязвимым для угроз безопасности, таких как атаки «человек посередине»." + } + }, + "code": { + "inputVars": "Входные переменные", + "outputVars": "Выходные переменные", + "advancedDependencies": "Расширенные зависимости", + "advancedDependenciesTip": "Добавьте сюда некоторые предварительно загруженные зависимости, которые занимают больше времени для потребления или не являются встроенными по умолчанию", + "searchDependencies": "Поиск зависимостей", + "syncFunctionSignature": "Синхронизировать сигнатуру функции с кодом" + }, + "templateTransform": { + "inputVars": "Входные переменные", + "code": "Код", + "codeSupportTip": "Поддерживает только Jinja2", + "outputVars": { + "output": "Преобразованный контент" + } + }, + "ifElse": { + "if": "Если", + "else": "Иначе", + "elseDescription": "Используется для определения логики, которая должна быть выполнена, когда условие if не выполняется.", + "and": "и", + "or": "или", + "operator": "Оператор", + "notSetVariable": "Пожалуйста, сначала установите переменную", + "comparisonOperator": { + "contains": "содержит", + "not contains": "не содержит", + "start with": "начинается с", + "end with": "заканчивается на", + "is": "равно", + "is not": "не равно", + "empty": "пусто", + "not empty": "не пусто", + "null": "null", + "not null": "не null", + "all of": "все", + "not in": "не в", + "not exists": "не существует", + "in": "в", + "exists": "Существует", + "before": "до", + "after": "после" + }, + "enterValue": "Введите значение", + "addCondition": "Добавить условие", + "conditionNotSetup": "Условие НЕ настроено", + "selectVariable": "Выберите переменную...", + "optionName": { + "audio": "Аудио", + "localUpload": "Локальная загрузка", + "doc": "Доктор", + "image": "Образ", + "video": "Видео", + "url": "URL-адрес" + }, + "select": "Выбирать", + "addSubVariable": "Подпеременная" + }, + "variableAssigner": { + "title": "Назначить переменные", + "outputType": "Тип вывода", + "varNotSet": "Переменная не установлена", + "noVarTip": "Добавьте переменные, которые нужно назначить", + "type": { + "string": "Строка", + "number": "Число", + "object": "Объект", + "array": "Массив" + }, + "aggregationGroup": "Группа агрегации", + "aggregationGroupTip": "Включение этой функции позволяет агрегатору переменных агрегировать несколько наборов переменных.", + "addGroup": "Добавить группу", + "outputVars": { + "varDescribe": "Вывод {{groupName}}" + }, + "setAssignVariable": "Установить переменную назначения" + }, + "assigner": { + "assignedVariable": "Назначенная переменная", + "writeMode": "Режим записи", + "writeModeTip": "Режим добавления: доступен только для переменных массива.", + "over-write": "Перезаписать", + "append": "Добавить", + "plus": "Плюс", + "clear": "Очистить", + "setVariable": "Установить переменную", + "variable": "Переменная", + "operations": { + "-=": "-=", + "+=": "+=", + "clear": "Ясный", + "extend": "Вытягивать", + "set": "Набор", + "overwrite": "Перезаписать", + "/=": "/=", + "*=": "*=", + "title": "Операция", + "over-write": "Перезаписать", + "append": "Прибавлять", + "remove-first": "Удалить первый", + "remove-last": "Удалить последний" + }, + "variables": "Переменные", + "noAssignedVars": "Нет доступных назначенных переменных", + "noVarTip": "Нажмите кнопку \"+\", чтобы добавить переменные", + "setParameter": "Установите параметр...", + "assignedVarsDescription": "Назначаемые переменные должны быть доступными для записи, например переменными беседы.", + "varNotSet": "Переменная НЕ установлена", + "selectAssignedVariable": "Выберите назначенную переменную..." + }, + "tool": { + "inputVars": "Входные переменные", + "outputVars": { + "text": "контент, сгенерированный инструментом", + "files": { + "title": "файлы, сгенерированные инструментом", + "type": "Поддерживаемый тип. Сейчас поддерживаются только изображения", + "transfer_method": "Метод передачи. Значение - remote_url или local_file", + "url": "URL изображения", + "upload_file_id": "Идентификатор загруженного файла" + }, + "json": "json, сгенерированный инструментом" + }, + "authorize": "Авторизовать", + "settings": "Настройки", + "insertPlaceholder2": "вставьте переменную", + "insertPlaceholder1": "Наберите или нажмите" + }, + "questionClassifiers": { + "model": "модель", + "inputVars": "Входные переменные", + "outputVars": { + "className": "Имя класса", + "usage": "Информация об использовании модели" + }, + "class": "Класс", + "classNamePlaceholder": "Введите имя вашего класса", + "advancedSetting": "Расширенные настройки", + "topicName": "Название темы", + "topicPlaceholder": "Введите название вашей темы", + "addClass": "Добавить класс", + "instruction": "Инструкция", + "instructionTip": "Введите дополнительные инструкции, чтобы помочь классификатору вопросов лучше понять, как классифицировать вопросы.", + "instructionPlaceholder": "Введите вашу инструкцию" + }, + "parameterExtractor": { + "inputVar": "Входная переменная", + "outputVars": { + "isSuccess": "Успешно. В случае успеха значение равно 1, в случае сбоя - 0.", + "errorReason": "Причина ошибки", + "usage": "Информация об использовании модели" + }, + "extractParameters": "Извлечь параметры", + "importFromTool": "Импортировать из инструментов", + "addExtractParameter": "Добавить параметр для извлечения", + "addExtractParameterContent": { + "name": "Имя", + "namePlaceholder": "Имя извлекаемого параметра", + "type": "Тип", + "typePlaceholder": "Тип извлекаемого параметра", + "description": "Описание", + "descriptionPlaceholder": "Описание извлекаемого параметра", + "required": "Обязательный", + "requiredContent": "Обязательный используется только в качестве ссылки для вывода модели, а не для обязательной проверки вывода параметра." + }, + "extractParametersNotSet": "Параметры для извлечения не настроены", + "instruction": "Инструкция", + "instructionTip": "Введите дополнительные инструкции, чтобы помочь извлекателю параметров понять, как извлекать параметры.", + "advancedSetting": "Расширенные настройки", + "reasoningMode": "Режим рассуждения", + "reasoningModeTip": "Вы можете выбрать соответствующий режим рассуждения, основываясь на способности модели реагировать на инструкции для вызова функций или подсказки." + }, + "iteration": { + "deleteTitle": "Удалить узел итерации?", + "deleteDesc": "Удаление узла итерации приведет к удалению всех дочерних узлов", + "input": "Вход", + "output": "Выходные переменные", + "iteration_one": "{{count}} Итерация", + "iteration_other": "{{count}} Итераций", + "currentIteration": "Текущая итерация", + "ErrorMethod": { + "operationTerminated": "Прекращено", + "continueOnError": "продолжить по ошибке", + "removeAbnormalOutput": "удалить аномальный вывод" + }, + "comma": ",", + "error_other": "{{Количество}} Ошибки", + "errorResponseMethod": "Метод реагирования на ошибку", + "MaxParallelismTitle": "Максимальный параллелизм", + "parallelModeUpper": "ПАРАЛЛЕЛЬНЫЙ РЕЖИМ", + "error_one": "{{Количество}} Ошибка", + "parallelModeEnableTitle": "Параллельный режим включен", + "parallelMode": "Параллельный режим", + "parallelPanelDesc": "В параллельном режиме задачи в итерации поддерживают параллельное выполнение.", + "parallelModeEnableDesc": "В параллельном режиме задачи в итерациях поддерживают параллельное выполнение. Вы можете настроить это на панели свойств справа.", + "MaxParallelismDesc": "Максимальный параллелизм используется для управления количеством задач, выполняемых одновременно в одной итерации.", + "answerNodeWarningDesc": "Предупреждение о параллельном режиме: узлы ответов, присвоение переменных диалога и постоянные операции чтения и записи в итерациях могут вызывать исключения.", + "flattenOutput": "Сгладить вывод", + "flattenOutputDesc": "Когда функция включена, если все результаты итераций являются массивами, они будут объединены в один массив. Когда функция выключена, результаты сохранят вложенную структуру массивов." + }, + "note": { + "addNote": "Добавить заметку", + "editor": { + "placeholder": "Напишите свою заметку...", + "small": "Маленький", + "medium": "Средний", + "large": "Большой", + "bold": "Жирный", + "italic": "Курсив", + "strikethrough": "Зачеркнутый", + "link": "Ссылка", + "openLink": "Открыть", + "unlink": "Удалить ссылку", + "enterUrl": "Введите URL...", + "invalidUrl": "Неверный URL", + "bulletList": "Маркированный список", + "showAuthor": "Показать автора" + } + }, + "docExtractor": { + "outputVars": { + "text": "Извлеченный текст" + }, + "learnMore": "Подробнее", + "inputVar": "Входная переменная", + "supportFileTypes": "Поддерживаемые типы файлов: {{types}}." + }, + "listFilter": { + "outputVars": { + "last_record": "Последняя запись", + "result": "Фильтрация результата", + "first_record": "Первая запись" + }, + "desc": "DESC", + "asc": "ASC", + "filterCondition": "Условие фильтра", + "filterConditionComparisonOperator": "Оператор сравнения условий фильтра", + "inputVar": "Входная переменная", + "limit": "Топ N", + "orderBy": "Заказать по", + "filterConditionKey": "Ключ условия фильтра", + "selectVariableKeyPlaceholder": "Выбор ключа подпеременной", + "filterConditionComparisonValue": "Значение условия фильтра", + "extractsCondition": "Извлечение элемента N" + }, + "agent": { + "strategy": { + "tooltip": "Различные агентные стратегии определяют, как система планирует и выполняет многоступенчатые вызовы инструментов", + "configureTip": "Пожалуйста, настройте агентскую стратегию.", + "searchPlaceholder": "Агентская стратегия поиска", + "selectTip": "Выберите агентскую стратегию", + "shortLabel": "Стратегия", + "configureTipDesc": "После настройки агентской стратегии этот узел автоматически загрузит оставшиеся конфигурации. Стратегия будет влиять на механизм многоступенчатого мышления инструмента.", + "label": "Агентная стратегия" + }, + "pluginInstaller": { + "install": "Устанавливать", + "installing": "Установка" + }, + "modelNotInMarketplace": { + "title": "Модель не установлена", + "manageInPlugins": "Управление в плагинах", + "desc": "Эта модель устанавливается из локального репозитория или репозитория GitHub. Пожалуйста, используйте после установки." + }, + "modelNotSupport": { + "title": "Неподдерживаемая модель", + "descForVersionSwitch": "Установленная версия плагина не предоставляет эту модель. Нажмите, чтобы переключить версию.", + "desc": "Установленная версия плагина не предоставляет эту модель." + }, + "modelSelectorTooltips": { + "deprecated": "Эта модель устарела" + }, + "outputVars": { + "files": { + "transfer_method": "Способ переноса. Ценность составляет remote_url или local_file", + "url": "URL изображения", + "upload_file_id": "Загрузить id файла", + "type": "Тип поддержки. Теперь только вспомогательное изображение", + "title": "Файлы, созданные агентом" + }, + "text": "Контент, генерируемый агентом", + "usage": "Информация об использовании модели", + "json": "JSON, сгенерированный агентом" + }, + "checkList": { + "strategyNotSelected": "Стратегия не выбрана" + }, + "installPlugin": { + "install": "Устанавливать", + "title": "Установить плагин", + "desc": "О программе установки следующего плагина", + "cancel": "Отмена", + "changelog": "Журнал изменений" + }, + "tools": "Инструменты", + "pluginNotInstalled": "Этот плагин не установлен", + "strategyNotFoundDesc": "Установленная версия плагина не предусматривает такой стратегии.", + "toolNotInstallTooltip": "{{tool}} не установлен", + "linkToPlugin": "Ссылка на плагины", + "learnMore": "Подробнее", + "modelNotInstallTooltip": "Данная модель не устанавливается", + "modelNotSelected": "Модель не выбрана", + "toolNotAuthorizedTooltip": "{{инструмент}} Не авторизован", + "unsupportedStrategy": "Неподдерживаемая стратегия", + "pluginNotInstalledDesc": "Этот плагин устанавливается с GitHub. Пожалуйста, перейдите в раздел Плагины для переустановки", + "model": "модель", + "strategyNotFoundDescAndSwitchVersion": "Установленная версия плагина не предусматривает такой стратегии. Нажмите, чтобы переключить версию.", + "notAuthorized": "Не авторизован", + "strategyNotSet": "Агентская стратегия не задана", + "strategyNotInstallTooltip": "{{strategy}} не установлен", + "toolbox": "ящик для инструментов", + "pluginNotFoundDesc": "Этот плагин устанавливается с GitHub. Пожалуйста, перейдите в раздел Плагины для переустановки", + "configureModel": "Сконфигурировать модель", + "maxIterations": "Максимальное количество итераций", + "parameterSchema": "Схема параметров", + "clickToViewParameterSchema": "Нажмите, чтобы просмотреть схему параметров" + }, + "loop": { + "ErrorMethod": { + "operationTerminated": "Прекращено", + "continueOnError": "Продолжать при ошибке", + "removeAbnormalOutput": "Устранить аномальный вывод" + }, + "inputMode": "Режим ввода", + "exitConditionTip": "У узла цикла должно быть как минимум одно условие выхода", + "loopMaxCountError": "Пожалуйста, введите допустимое максимальное количество циклов, от 1 до {{maxCount}}", + "setLoopVariables": "Устанавливайте переменные в области видимости цикла", + "currentLoop": "Текущий контур", + "input": "Ввод", + "comma": ",", + "loop_other": "{{count}} Циклов", + "currentLoopCount": "Текущее количество циклов: {{count}}", + "loop_one": "{{count}} Цикл", + "variableName": "Имя переменной", + "totalLoopCount": "Общее количество циклов: {{count}}", + "loopNode": "Циклический узел", + "errorResponseMethod": "Метод ответа об ошибке", + "deleteTitle": "Удалить узел цикла?", + "error_one": "{{count}} Ошибка", + "output": "Выходная переменная", + "deleteDesc": "Удаление узла цикла удалит все дочерние узлы.", + "loopMaxCount": "Максимальное количество итераций", + "error_other": "{{count}} Ошибок", + "breakConditionTip": "Только переменные в циклах с условиями завершения и переменные беседы могут быть использованы.", + "finalLoopVariables": "Финальные переменные цикла", + "initialLoopVariables": "Начальные переменные цикла", + "breakCondition": "Условие завершения цикла", + "loopVariables": "Циклические переменные" + }, + "dataSource": { + "supportedFileFormatsPlaceholder": "Расширение файла, e.g. doc", + "add": "Добавление источника данных", + "supportedFileFormats": "Поддерживаемые форматы файлов" + }, + "knowledgeBase": { + "chunkStructureTip": { + "learnMore": "Подробнее", + "title": "Пожалуйста, выберите структуру чанка", + "message": "База знаний Dify поддерживает три структуры фрагментации: Общие, Родитель-дочерний и Вопросы и ответы. Каждая база знаний может иметь только одну структуру. Выходные данные предыдущего узла должны быть выровнены с выбранной структурой блоков. Обратите внимание, что выбор структуры фрагментации влияет на доступные методы индекса." + }, + "chunkStructure": "Структура чанка", + "aboutRetrieval": "о методе извлечения.", + "indexMethodIsRequired": "Метод index является обязательным", + "chooseChunkStructure": "Выберите структуру чанка", + "chunkIsRequired": "Требуется структура чанка", + "changeChunkStructure": "Изменение структуры чанка", + "retrievalSettingIsRequired": "Настройка извлечения обязательна", + "chunksInput": "Куски", + "chunksInputTip": "Входная переменная узла базы знаний - это Чанки. Тип переменной является объектом с определенной схемой JSON, которая должна соответствовать выбранной структуре чанка.", + "chunksVariableIsRequired": "Переменная chunks обязательна", + "embeddingModelIsRequired": "Требуется модель встраивания", + "rerankingModelIsRequired": "Требуется модель перераспределения рангов", + "rerankingModelIsInvalid": "Модель повторной ранжировки недействительна", + "embeddingModelIsInvalid": "Модель встраивания недействительна" + }, + "triggerPlugin": { + "authorized": "Авторизованный", + "notConfigured": "Не настроено", + "notAuthorized": "Не авторизовано", + "selectSubscription": "Выберите подписку", + "availableSubscriptions": "Доступные подписки", + "addSubscription": "Добавить новую подписку", + "removeSubscription": "Отменить подписку", + "subscriptionRemoved": "Подписка успешно удалена", + "error": "Ошибка", + "configuration": "Конфигурация", + "remove": "Удалить", + "or": "ИЛИ", + "useOAuth": "Использовать OAuth", + "useApiKey": "Использовать ключ API", + "authenticationFailed": "Ошибка аутентификации", + "authenticationSuccess": "Аутентификация успешна", + "oauthConfigFailed": "Сбой настройки OAuth", + "configureOAuthClient": "Настроить OAuth-клиент", + "oauthClientDescription": "Настройте учетные данные клиента OAuth для включения аутентификации", + "oauthClientSaved": "Конфигурация клиента OAuth успешно сохранена", + "configureApiKey": "Настроить ключ API", + "apiKeyDescription": "Настройте учетные данные ключа API для аутентификации", + "apiKeyConfigured": "API-ключ успешно настроен", + "configurationFailed": "Не удалось выполнить настройку", + "failedToStart": "Не удалось запустить процесс аутентификации", + "credentialsVerified": "Учётные данные успешно проверены", + "credentialVerificationFailed": "Проверка учетных данных не удалась", + "verifyAndContinue": "Проверить и продолжить", + "configureParameters": "Настроить параметры", + "parametersDescription": "Настройте параметры и свойства триггера", + "configurationComplete": "Конфигурация завершена", + "configurationCompleteDescription": "Ваш триггер успешно настроен", + "configurationCompleteMessage": "Ваша конфигурация триггера завершена и готова к использованию.", + "parameters": "Параметры", + "properties": "Свойства", + "propertiesDescription": "Дополнительные параметры конфигурации для этого триггера", + "noConfigurationRequired": "Дополнительная настройка для этого триггера не требуется.", + "subscriptionName": "Название подписки", + "subscriptionNameDescription": "Введите уникальное имя для этой подписки на триггер", + "subscriptionNamePlaceholder": "Введите название подписки...", + "subscriptionNameRequired": "Требуется название подписки", + "subscriptionRequired": "Требуется подписка" + }, + "triggerSchedule": { + "title": "Расписание", + "nodeTitle": "Триггер расписания", + "notConfigured": "Не настроено", + "useCronExpression": "Используйте cron-выражение", + "useVisualPicker": "Использовать визуальный выбор", + "frequency": { + "label": "ЧАСТОТА", + "hourly": "Почасовой", + "daily": "Ежедневно", + "weekly": "Еженедельно", + "monthly": "Ежемесячно" + }, + "selectFrequency": "Выберите частоту", + "frequencyLabel": "Частота", + "nextExecution": "Следующее исполнение", + "weekdays": "Будние дни", + "time": "Время", + "cronExpression": "Выражение Cron", + "nextExecutionTime": "ВРЕМЯ СЛЕДУЮЩЕГО ВЫПОЛНЕНИЯ", + "nextExecutionTimes": "Следующие 5 времен выполнения", + "startTime": "Время начала", + "executeNow": "Выполнение сейчас", + "selectDateTime": "Выберите дату и время", + "hours": "Часы", + "minutes": "Минуты", + "onMinute": "На минуту", + "days": "Дни", + "lastDay": "Последний день", + "lastDayTooltip": "Не все месяцы имеют 31 день. Используйте опцию «последний день», чтобы выбрать последний день каждого месяца.", + "mode": "Мода", + "timezone": "Часовой пояс", + "visualConfig": "Визуальная конфигурация", + "monthlyDay": "Ежемесячный день", + "executionTime": "Время выполнения", + "invalidTimezone": "Недопустимая временная зона", + "invalidCronExpression": "Неверное выражение cron", + "noValidExecutionTime": "Невозможно рассчитать допустимое время выполнения", + "executionTimeCalculationError": "Не удалось вычислить время выполнения", + "invalidFrequency": "Недопустимая частота", + "invalidStartTime": "Недопустимое время начала", + "startTimeMustBeFuture": "Время начала должно быть в будущем", + "invalidTimeFormat": "Неверный формат времени (ожидается ЧЧ:ММ AM/PM)", + "invalidWeekday": "Неверный день недели: {{weekday}}", + "invalidMonthlyDay": "Месячный день должен быть от 1 до 31 или \"последний\"", + "invalidOnMinute": "Минуты должны быть в диапазоне от 0 до 59", + "invalidExecutionTime": "Недопустимое время выполнения", + "executionTimeMustBeFuture": "Время выполнения должно быть в будущем" + }, + "triggerWebhook": { + "title": "Вебхук-триггер", + "nodeTitle": "🔗 Вебхук триггер", + "configPlaceholder": "Настройка срабатывания вебхука будет реализована здесь", + "webhookUrl": "URL вебхука", + "webhookUrlPlaceholder": "Нажмите «Создать», чтобы сгенерировать URL вебхука", + "generate": "Сгенерировать", + "copy": "Копировать", + "test": "Тест", + "urlGenerated": "URL вебхука успешно создан", + "urlGenerationFailed": "Не удалось создать URL вебхука", + "urlCopied": "URL скопирован в буфер обмена", + "method": "Метод", + "contentType": "Тип контента", + "queryParameters": "Параметры запроса", + "headerParameters": "Параметры заголовка", + "requestBodyParameters": "Параметры тела запроса", + "parameterName": "Имя переменной", + "varName": "Имя переменной", + "varType": "Тип", + "varNamePlaceholder": "Введите имя переменной...", + "required": "Обязательно", + "addParameter": "Добавить", + "addHeader": "Добавить", + "noParameters": "Параметры не настроены", + "noQueryParameters": "Параметры запроса не настроены", + "noHeaders": "Заголовки не настроены", + "noBodyParameters": "Параметры тела не настроены", + "debugUrlTitle": "Для тестовых запусков всегда используйте этот URL", + "debugUrlCopy": "Нажмите, чтобы скопировать", + "debugUrlCopied": "Скопировано!", + "debugUrlPrivateAddressWarning": "Похоже, что этот URL является внутренним адресом, из-за чего запросы вебхука могут не выполняться. Вы можете изменить TRIGGER_URL на публичный адрес.", + "errorHandling": "Обработка ошибок", + "errorStrategy": "Обработка ошибок", + "responseConfiguration": "Ответ", + "asyncMode": "Асинхронный режим", + "statusCode": "Код состояния", + "responseBody": "Тело ответа", + "responseBodyPlaceholder": "Напишите здесь текст вашего ответа", + "headers": "Заголовки", + "validation": { + "webhookUrlRequired": "Требуется URL вебхука", + "invalidParameterType": "Неверный тип параметра \"{{type}}\" для параметра \"{{name}}\"" + } + } + }, + "tracing": { + "stopBy": "Остановлено {{user}}" + }, + "variableReference": { + "assignedVarsDescription": "Назначаемые переменные должны быть доступными для записи, такими как", + "noAssignedVars": "Нет доступных назначенных переменных", + "noVarsForOperation": "Переменные для присвоения выбранной операции отсутствуют.", + "conversationVars": "Переменные беседы", + "noAvailableVars": "Нет доступных переменных" + }, + "versionHistory": { + "filter": { + "onlyShowNamedVersions": "Показывать только именованные версии", + "all": "Все", + "reset": "Сбросить фильтр", + "onlyYours": "Только твой", + "empty": "История версий не найдена" + }, + "editField": { + "titleLengthLimit": "Заголовок не может превышать {{limit}} символов", + "releaseNotesLengthLimit": "Примечания к версии не могут превышать {{limit}} символов", + "releaseNotes": "Новости релиза", + "title": "Заголовок" + }, + "action": { + "restoreSuccess": "Версия восстановлена", + "updateSuccess": "Версия обновлена", + "deleteFailure": "Не удалось удалить версию", + "deleteSuccess": "Версия удалена", + "updateFailure": "Не удалось обновить версию", + "restoreFailure": "Не удалось восстановить версию", + "copyIdSuccess": "ID скопирован в буфер обмена" + }, + "latest": "Последний", + "restorationTip": "После восстановления версии текущий черновик будет перезаписан.", + "deletionTip": "Удаление необратимо, пожалуйста, подтвердите.", + "nameThisVersion": "Назовите эту версию", + "editVersionInfo": "Редактировать информацию о версии", + "title": "Версии", + "currentDraft": "Текущий проект", + "releaseNotesPlaceholder": "Опишите, что изменилось", + "defaultName": "Без названия версия", + "copyId": "Копировать ID" + }, + "debug": { + "noData": { + "description": "Результаты последнего запуска будут отображены здесь", + "runThisNode": "Запустите этот узел" + }, + "variableInspect": { + "trigger": { + "stop": "Стоп, беги", + "cached": "Посмотреть кэшированные переменные", + "normal": "Переменная Инспекция", + "clear": "Ясно", + "running": "Кэширование текущего состояния" + }, + "clearAll": "Сбросить все", + "edited": "Отредактировано", + "emptyLink": "Узнать больше", + "systemNode": "Система", + "chatNode": "Разговор", + "clearNode": "Очистить кэшированную переменную", + "reset": "Сбросить до последнего значения выполнения", + "view": "Просмотр журнала", + "title": "Переменная Инспекция", + "resetConversationVar": "Сбросить переменную разговора до значения по умолчанию", + "envNode": "Окружающая среда", + "emptyTip": "После прохождения через узел на холсте или выполнения узла шаг за шагом вы можете просмотреть текущее значение переменной узла в инспекторе переменных.", + "export": "экспорт", + "exportToolTip": "Экспорт переменной в файл", + "largeData": "Большие данные, предварительный просмотр только для чтения. Экспортируйте для просмотра всего.", + "largeDataNoExport": "Большие данные - только частичный предварительный просмотр", + "listening": { + "title": "Ожидание событий от триггеров...", + "tip": "Теперь вы можете имитировать срабатывание событий, отправляя тестовые запросы на HTTP {{nodeName}}-эндпоинт или использовать его в качестве URL обратного вызова для отладки живых событий. Все результаты можно просматривать непосредственно в инспекторе переменных.", + "tipPlugin": "Теперь вы можете создавать события в {{- pluginName}} и получать данные этих событий в Инспекторе переменных.", + "tipSchedule": "Прослушивание событий от триггеров расписания.\nСледующий запланированный запуск: {{nextTriggerTime}}", + "tipFallback": "Ожидайте входящие триггерные события. Результаты появятся здесь.", + "defaultNodeName": "этот триггер", + "defaultPluginName": "этот плагин срабатывает", + "defaultScheduleTime": "Не настроено", + "selectedTriggers": "выбранные триггеры", + "stopButton": "Стоп" + } + }, + "lastRunTab": "Последний запуск", + "settingsTab": "Настройки", + "relations": { + "dependencies": "Зависимости", + "dependents": "Иждивенцев", + "noDependencies": "Нет зависимостей", + "dependentsDescription": "Узлы, которые полагаются на этот узел", + "noDependents": "Отсутствие иждивенцев", + "dependenciesDescription": "Узлы, на которые опирается этот узел" + }, + "relationsTab": "Отношения", + "noLastRunFound": "Предыдущий запуск не найден", + "copyLastRun": "Копировать последний запуск", + "copyLastRunError": "Не удалось скопировать последние входные данные выполнения", + "noMatchingInputsFound": "Не найдено соответствующих входных данных из последнего запуска.", + "lastOutput": "Последний вывод", + "lastRunInputsCopied": "{{count}} вход(ов) скопировано из последнего запуска" + }, + "sidebar": { + "exportWarning": "Экспортировать текущую сохранённую версию", + "exportWarningDesc": "Это экспортирует текущую сохранённую версию вашего рабочего процесса. Если у вас есть несохранённые изменения в редакторе, сначала сохраните их с помощью опции экспорта на полотне рабочего процесса." + }, + "publishLimit": { + "startNodeTitlePrefix": "Обновить до", + "startNodeTitleSuffix": "разблокировать неограниченное количество триггеров для каждого рабочего процесса", + "startNodeDesc": "Вы достигли лимита в 2 триггера на рабочий процесс для этого плана. Обновите план, чтобы опубликовать этот рабочий процесс." + }, + "error": { + "startNodeRequired": "Пожалуйста, сначала добавьте начальный узел перед {{operation}}", + "operations": { + "connectingNodes": "соединение узлов", + "addingNodes": "добавление узлов", + "modifyingWorkflow": "изменение рабочего процесса", + "updatingWorkflow": "обновление рабочего процесса" + } + }, + "customWebhook": "Пользовательский вебхук", + "difyTeam": "Команда Dify", + "triggerStatus": { + "enabled": "СПУСКОВОЙ МЕХАНИЗМ", + "disabled": "ТРЕВОГА • ОТКЛЮЧЕНО" + }, + "entryNodeStatus": { + "enabled": "НАЧАТЬ", + "disabled": "СТАРТ • ОТКЛЮЧЕНО" + }, + "onboarding": { + "title": "Выберите начальный узел, чтобы начать", + "description": "Разные начальные узлы имеют разные возможности. Не волнуйтесь, вы всегда сможете изменить их позже.", + "userInputFull": "Вход пользователя (исходный начальный узел)", + "userInputDescription": "Начальный узел, который позволяет задавать переменные пользовательского ввода с возможностями инструментов: веб-приложение, API сервиса, сервер MCP и рабочий процесс.", + "trigger": "Триггер", + "triggerDescription": "Триггеры могут служить начальной точкой рабочего процесса, например, для запланированных задач, пользовательских вебхуков или интеграций с другими приложениями.", + "back": "Назад", + "learnMore": "Узнать больше", + "aboutStartNode": "о стартовом узле.", + "escTip": { + "press": "Нажмите", + "key": "esc", + "toDismiss": "уволить" + } + } +} diff --git a/web/i18n/ru-RU/workflow.ts b/web/i18n/ru-RU/workflow.ts deleted file mode 100644 index 183c113b20..0000000000 --- a/web/i18n/ru-RU/workflow.ts +++ /dev/null @@ -1,1296 +0,0 @@ -const translation = { - common: { - undo: 'Отменить', - redo: 'Повторить', - editing: 'Редактирование', - autoSaved: 'Автосохранено', - unpublished: 'Не опубликовано', - published: 'Опубликовано', - publish: 'Опубликовать', - update: 'Обновить', - run: 'Тестовый запуск', - running: 'Выполняется', - inRunMode: 'В режиме выполнения', - inPreview: 'В режиме предпросмотра', - inPreviewMode: 'В режиме предпросмотра', - preview: 'Предпросмотр', - viewRunHistory: 'Посмотреть историю запусков', - runHistory: 'История запусков', - goBackToEdit: 'Вернуться к редактору', - conversationLog: 'Журнал разговоров', - debugAndPreview: 'Предпросмотр', - restart: 'Перезапустить', - currentDraft: 'Текущий черновик', - currentDraftUnpublished: 'Текущий черновик не опубликован', - latestPublished: 'Последняя опубликованная версия', - publishedAt: 'Опубликовано', - restore: 'Восстановить', - runApp: 'Запустить приложение', - batchRunApp: 'Пакетный запуск приложения', - accessAPIReference: 'Доступ к справочнику API', - embedIntoSite: 'Встроить на сайт', - addTitle: 'Добавить заголовок...', - addDescription: 'Добавить описание...', - noVar: 'Нет переменной', - searchVar: 'Поиск переменной', - variableNamePlaceholder: 'Имя переменной', - setVarValuePlaceholder: 'Установить значение переменной', - needConnectTip: 'Этот шаг ни к чему не подключен', - maxTreeDepth: 'Максимальный предел {{depth}} узлов на ветку', - workflowProcess: 'Процесс рабочего процесса', - notRunning: 'Еще не запущено', - previewPlaceholder: 'Введите текст в поле ниже, чтобы начать отладку чат-бота', - effectVarConfirm: { - title: 'Удалить переменную', - content: 'Переменная используется в других узлах. Вы все еще хотите удалить ее?', - }, - insertVarTip: 'Нажмите клавишу "/" чтобы быстро вставить', - processData: 'Обработка данных', - input: 'Вход', - output: 'Выход', - jinjaEditorPlaceholder: 'Введите "/" или "{" для вставки переменной', - viewOnly: 'Только просмотр', - showRunHistory: 'Показать историю запусков', - enableJinja: 'Включить поддержку шаблонов Jinja', - learnMore: 'Узнать больше', - copy: 'Копировать', - duplicate: 'Дублировать', - pasteHere: 'Вставить сюда', - pointerMode: 'Режим указателя', - handMode: 'Режим руки', - model: 'Модель', - workflowAsTool: 'Рабочий процесс как инструмент', - configureRequired: 'Требуется настройка', - configure: 'Настроить', - manageInTools: 'Управление в инструментах', - workflowAsToolTip: 'После обновления рабочего процесса требуется перенастройка инструмента.', - viewDetailInTracingPanel: 'Посмотреть подробности', - syncingData: 'Синхронизация данных, всего несколько секунд.', - importDSL: 'Импортировать DSL', - importDSLTip: 'Текущий черновик будет перезаписан. Экспортируйте рабочий процесс в качестве резервной копии перед импортом.', - backupCurrentDraft: 'Резервное копирование текущего черновика', - chooseDSL: 'Выберите файл DSL(yml)', - overwriteAndImport: 'Перезаписать и импортировать', - importFailure: 'Ошибка импорта', - importSuccess: 'Импорт успешно завершен', - parallelTip: { - click: { - title: 'Щелчок', - desc: 'добавить', - }, - drag: { - title: 'Волочить', - desc: 'для подключения', - }, - limit: 'Параллелизм ограничен ветвями {{num}}.', - depthLimit: 'Ограничение на количество слоев параллельной вложенности {{num}}', - }, - disconnect: 'Разъединять', - jumpToNode: 'Перейти к этому узлу', - addParallelNode: 'Добавить параллельный узел', - parallel: 'ПАРАЛЛЕЛЬНЫЙ', - branch: 'ВЕТКА', - fileUploadTip: 'Функции загрузки изображений были обновлены до загрузки файлов.', - ImageUploadLegacyTip: 'Теперь вы можете создавать переменные типа файла в стартовой форме. В будущем мы больше не будем поддерживать функцию загрузки изображений.', - importWarning: 'Осторожность', - importWarningDetails: 'Разница в версии DSL может повлиять на некоторые функции', - openInExplore: 'Открыть в разделе «Обзор»', - onFailure: 'О неудаче', - addFailureBranch: 'Добавить ветвь Fail', - noHistory: 'Без истории', - loadMore: 'Загрузите больше рабочих процессов', - versionHistory: 'История версий', - exportPNG: 'Экспортировать как PNG', - exportImage: 'Экспортировать изображение', - exportJPEG: 'Экспортировать как JPEG', - exitVersions: 'Выходные версии', - exportSVG: 'Экспортировать как SVG', - publishUpdate: 'Опубликовать обновление', - addBlock: 'Добавить узел', - needAnswerNode: 'В узел ответа необходимо добавить', - needOutputNode: 'Необходимо добавить узел вывода', - tagBound: 'Количество приложений, использующих этот тег', - currentView: 'Текущий вид', - currentWorkflow: 'Текущий рабочий процесс', - moreActions: 'Больше действий', - listening: 'Слушание', - chooseStartNodeToRun: 'Выберите начальный узел для запуска', - runAllTriggers: 'Запустить все триггеры', - features: 'Функции', - featuresDescription: 'Улучшить пользовательский опыт веб-приложения', - featuresDocLink: 'Узнать больше', - needAdd: 'Необходимо добавить узел {{node}}', - needStartNode: 'Необходимо добавить хотя бы один начальный узел', - workflowAsToolDisabledHint: 'Опубликуйте последний рабочий процесс и убедитесь, что подключен узел ввода пользователя, прежде чем настраивать его как инструмент.', - }, - env: { - envPanelTitle: 'Переменные среды', - envDescription: 'Переменные среды могут использоваться для хранения конфиденциальной информации и учетных данных. Они доступны только для чтения и могут быть отделены от файла DSL во время экспорта.', - envPanelButton: 'Добавить переменную', - modal: { - title: 'Добавить переменную среды', - editTitle: 'Редактировать переменную среды', - type: 'Тип', - name: 'Имя', - namePlaceholder: 'Имя переменной среды', - value: 'Значение', - valuePlaceholder: 'Значение переменной среды', - secretTip: 'Используется для определения конфиденциальной информации или данных, с настройками DSL, настроенными для предотвращения утечки.', - description: 'Описание', - descriptionPlaceholder: 'Опишите переменную', - }, - export: { - title: 'Экспортировать секретные переменные среды?', - checkbox: 'Экспортировать секретные значения', - ignore: 'Экспортировать DSL', - export: 'Экспортировать DSL с секретными значениями ', - }, - }, - globalVar: { - title: 'Системные переменные', - description: 'Системные переменные — это глобальные переменные, к которым любой узел может обращаться без соединений при корректном типе, например идентификатор конечного пользователя и идентификатор рабочего процесса.', - fieldsDescription: { - conversationId: 'ID беседы', - dialogCount: 'Количество бесед', - userId: 'ID пользователя', - triggerTimestamp: 'Отметка времени запуска приложения', - appId: 'ID приложения', - workflowId: 'ID рабочего процесса', - workflowRunId: 'ID запуска рабочего процесса', - }, - }, - chatVariable: { - panelTitle: 'Переменные разговора', - panelDescription: 'Переменные разговора используются для хранения интерактивной информации, которую LLM необходимо запомнить, включая историю разговоров, загруженные файлы, пользовательские настройки. Они доступны для чтения и записи. ', - docLink: 'Посетите нашу документацию, чтобы узнать больше.', - button: 'Добавить переменную', - modal: { - title: 'Добавить переменную разговора', - editTitle: 'Редактировать переменную разговора', - name: 'Имя', - namePlaceholder: 'Имя переменной', - type: 'Тип', - value: 'Значение по умолчанию', - valuePlaceholder: 'Значение по умолчанию, оставьте пустым, чтобы не устанавливать', - description: 'Описание', - descriptionPlaceholder: 'Опишите переменную', - editInJSON: 'Редактировать в JSON', - oneByOne: 'Добавлять по одному', - editInForm: 'Редактировать в форме', - arrayValue: 'Значение', - addArrayValue: 'Добавить значение', - objectKey: 'Ключ', - objectType: 'Тип', - objectValue: 'Значение по умолчанию', - }, - storedContent: 'Сохраненный контент', - updatedAt: 'Обновлено в ', - }, - changeHistory: { - title: 'История изменений', - placeholder: 'Вы еще ничего не изменили', - clearHistory: 'Очистить историю', - hint: 'Подсказка', - hintText: 'Ваши действия по редактированию отслеживаются в истории изменений, которая хранится на вашем устройстве в течение этого сеанса. Эта история будет очищена, когда вы покинете редактор.', - stepBackward_one: '{{count}} шаг назад', - stepBackward_other: '{{count}} шагов назад', - stepForward_one: '{{count}} шаг вперед', - stepForward_other: '{{count}} шагов вперед', - sessionStart: 'Начало сеанса', - currentState: 'Текущее состояние', - noteAdd: 'Заметка добавлена', - noteChange: 'Заметка изменена', - noteDelete: 'Заметка удалена', - nodeDragStop: 'Узел перемещен', - nodeResize: 'Узел изменен в размере', - nodeTitleChange: 'Название узла изменено', - edgeDelete: 'Узел отключен', - nodeConnect: 'Узел подключен', - nodeDelete: 'Узел удален', - nodePaste: 'Узел вставлен', - nodeChange: 'Узел изменен', - nodeAdd: 'Узел добавлен', - nodeDescriptionChange: 'Описание узла изменено', - }, - errorMsg: { - fieldRequired: '{{field}} обязательно для заполнения', - authRequired: 'Требуется авторизация', - invalidJson: '{{field}} неверный JSON', - fields: { - variable: 'Имя переменной', - variableValue: 'Значение переменной', - code: 'Код', - model: 'Модель', - rerankModel: 'Модель переранжирования', - visionVariable: 'Переменная зрения', - }, - invalidVariable: 'Неверная переменная', - rerankModelRequired: 'Перед включением модели повторного ранжирования убедитесь, что модель успешно настроена в настройках.', - noValidTool: '{{field}} не выбран валидный инструмент', - toolParameterRequired: '{{field}}: параметр [{{param}}] является обязательным', - startNodeRequired: 'Пожалуйста, сначала добавьте начальный узел перед {{operation}}', - }, - singleRun: { - testRun: 'Тестовый запуск ', - startRun: 'Начать запуск', - running: 'Выполняется', - testRunIteration: 'Итерация тестового запуска', - back: 'Назад', - iteration: 'Итерация', - loop: 'Цикл', - reRun: 'Повторный запуск', - preparingDataSource: 'Подготовка источника данных', - }, - tabs: { - 'searchTool': 'Поиск инструмента', - 'tools': 'Инструменты', - 'allTool': 'Все', - 'customTool': 'Пользовательские', - 'workflowTool': 'Рабочий процесс', - 'question-understand': 'Понимание вопроса', - 'logic': 'Логика', - 'transform': 'Преобразование', - 'utilities': 'Утилиты', - 'noResult': 'Ничего не найдено', - 'plugin': 'Плагин', - 'agent': 'Агентская стратегия', - 'blocks': 'Узлы', - 'searchBlock': 'Поиск узла', - 'addAll': 'Добавить всё', - 'allAdded': 'Все добавлено', - 'sources': 'Источников', - 'searchDataSource': 'Поиск источника данных', - 'start': 'Начать', - 'searchTrigger': 'Триггеры поиска...', - 'allTriggers': 'Все триггеры', - 'noPluginsFound': 'Плагины не найдены', - 'requestToCommunity': 'Запросы к сообществу', - 'featuredTools': 'Избранное', - 'showMoreFeatured': 'Показать больше', - 'showLessFeatured': 'Показать меньше', - 'installed': 'Установлено', - 'pluginByAuthor': 'По {{author}}', - 'usePlugin': 'Выбрать инструмент', - 'hideActions': 'Скрыть инструменты', - 'noFeaturedPlugins': 'Откройте больше инструментов в Маркетплейсе', - 'noFeaturedTriggers': 'Откройте больше триггеров на Маркетплейсе', - 'startDisabledTip': 'Узел триггера и узел ввода пользователя исключают друг друга.', - }, - blocks: { - 'start': 'Начало', - 'end': 'Вывод', - 'answer': 'Ответ', - 'llm': 'LLM', - 'knowledge-retrieval': 'Поиск знаний', - 'question-classifier': 'Классификатор вопросов', - 'if-else': 'ЕСЛИ/ИНАЧЕ', - 'code': 'Код', - 'template-transform': 'Шаблон', - 'http-request': 'HTTP-запрос', - 'variable-assigner': 'Агрегатор переменных', - 'variable-aggregator': 'Агрегатор переменных', - 'assigner': 'Назначение переменной', - 'iteration-start': 'Начало итерации', - 'iteration': 'Итерация', - 'parameter-extractor': 'Извлечение параметров', - 'document-extractor': 'Экстрактор документов', - 'list-operator': 'Оператор списка', - 'agent': 'Агент', - 'loop': 'Цикл', - 'loop-start': 'Начало цикла', - 'loop-end': 'Выйти из цикла', - 'knowledge-index': 'База знаний', - 'datasource': 'Источник данных', - 'originalStartNode': 'исходный начальный узел', - 'trigger-schedule': 'Триггер расписания', - 'trigger-webhook': 'Вебхук-триггер', - 'trigger-plugin': 'Триггер плагина', - }, - 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': 'Объединение переменных из нескольких ветвей в одну переменную для унифицированной настройки подчиненных узлов.', - 'assigner': 'Узел назначения переменной используется для назначения значений записываемым переменным (например, переменным разговора).', - 'variable-aggregator': 'Объединение переменных из нескольких ветвей в одну переменную для унифицированной настройки подчиненных узлов.', - 'iteration': 'Выполнение нескольких шагов над объектом списка до тех пор, пока не будут выведены все результаты.', - 'parameter-extractor': 'Используйте LLM для извлечения структурированных параметров из естественного языка для вызова инструментов или HTTP-запросов.', - 'list-operator': 'Используется для фильтрации или сортировки содержимого массива.', - 'document-extractor': 'Используется для разбора загруженных документов в текстовый контент, который легко воспринимается LLM.', - 'agent': 'Вызов больших языковых моделей для ответа на вопросы или обработки естественного языка', - 'loop-end': 'Эквивалентно "break". Этот узел не имеет конфигурационных элементов. Когда тело цикла достигает этого узла, цикл завершается.', - 'loop': 'Выполните цикл логики до тех пор, пока не будет достигнуто условие завершения или максимальное количество итераций цикла.', - 'knowledge-index': 'База знаний о компании', - 'datasource': 'Источник данных О компании', - 'trigger-schedule': 'Триггер рабочего процесса на основе времени, который запускает рабочие процессы по расписанию', - 'trigger-webhook': 'Триггер вебхука получает HTTP-запросы от сторонних систем для автоматического запуска рабочих процессов.', - 'trigger-plugin': 'Триггер интеграции с третьими сторонами, который запускает рабочие процессы на основе событий внешней платформы', - }, - operator: { - zoomIn: 'Увеличить', - zoomOut: 'Уменьшить', - zoomTo50: 'Масштаб 50%', - zoomTo100: 'Масштаб 100%', - zoomToFit: 'По размеру', - alignTop: 'Вверх', - alignBottom: 'Вниз', - alignRight: 'Вправо', - distributeHorizontal: 'Распределить по горизонтали', - alignMiddle: 'По центру', - vertical: 'Вертикальный', - alignCenter: 'Центр', - alignLeft: 'Влево', - selectionAlignment: 'Выравнивание выделения', - horizontal: 'Горизонтальный', - alignNodes: 'Выравнивание узлов', - distributeVertical: 'Распределить по вертикали', - }, - panel: { - userInputField: 'Поле ввода пользователя', - helpLink: 'Помощь', - about: 'О программе', - createdBy: 'Создано ', - nextStep: 'Следующий шаг', - runThisStep: 'Выполнить этот шаг', - checklist: 'Контрольный список', - checklistTip: 'Убедитесь, что все проблемы решены перед публикацией', - checklistResolved: 'Все проблемы решены', - change: 'Изменить', - optional: '(необязательно)', - selectNextStep: 'Выберите следующий шаг', - organizeBlocks: 'Организовать узлы', - addNextStep: 'Добавьте следующий шаг в этот рабочий процесс', - changeBlock: 'Изменить узел', - minimize: 'Выйти из полноэкранного режима', - maximize: 'Максимизировать холст', - scrollToSelectedNode: 'Прокрутите до выбранного узла', - optional_and_hidden: '(необязательно и скрыто)', - goTo: 'Перейти к', - startNode: 'Начальный узел', - openWorkflow: 'Открыть рабочий процесс', - }, - nodes: { - common: { - outputVars: 'Выходные переменные', - insertVarTip: 'Вставить переменную', - memory: { - memory: 'Память', - memoryTip: 'Настройки памяти чата', - windowSize: 'Размер окна', - conversationRoleName: 'Имя роли разговора', - user: 'Префикс пользователя', - assistant: 'Префикс помощника', - }, - memories: { - title: 'Воспоминания', - tip: 'Память чата', - builtIn: 'Встроенные', - }, - errorHandle: { - none: { - title: 'Никакой', - desc: 'Узел перестанет работать, если произойдет исключение и оно не будет обработано', - }, - defaultValue: { - title: 'Значение по умолчанию', - desc: 'При возникновении ошибки укажите статическое выходное содержимое.', - tip: 'При ошибке будет возвращено значение ниже.', - inLog: 'Исключение узла, вывод в соответствии со значениями по умолчанию.', - output: 'Выходное значение по умолчанию', - }, - failBranch: { - desc: 'При возникновении ошибки будет выполнена ветвь исключения', - customize: 'Перейдите на холст, чтобы настроить логику fail branch.', - inLog: 'Исключение узла, автоматически выполнит ветвь fail. Выходные данные узла вернут тип ошибки и сообщение об ошибке и передадут их нижестоящему потоку.', - title: 'Неудачная ветвь', - customizeTip: 'Когда ветвь fail активирована, исключения, созданные узлами, не завершат процесс. Вместо этого он автоматически выполнит предопределенную ветвь fail, что позволит вам гибко предоставлять сообщения об ошибках, отчеты, исправления или пропускать действия.', - }, - partialSucceeded: { - tip: 'В процессе есть {{num}} узлов, которые работают ненормально, пожалуйста, перейдите к трассировке, чтобы проверить логи.', - }, - title: 'Обработка ошибок', - tip: 'Стратегия обработки исключений, запускаемая при обнаружении исключения на узле.', - }, - retry: { - retry: 'Снова пробовать', - retryOnFailure: 'Повторная попытка при неудаче', - maxRetries: 'максимальное количество повторных попыток', - retryInterval: 'Интервал повторных попыток', - retryTimes: 'Повторите {{раз}} раз при неудаче', - retrying: 'Повтор...', - retrySuccessful: 'Повторить попытку успешно', - retryFailed: 'Повторная попытка не удалась', - times: 'раз', - ms: 'госпожа', - retryFailedTimes: 'Повторные попытки {{times}} не увенчались успехом', - retries: '{{число}} Повторных попыток', - }, - typeSwitch: { - input: 'Входное значение', - variable: 'Используйте переменную', - }, - inputVars: 'Входные переменные', - pluginNotInstalled: 'Плагин не установлен', - }, - 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.', - prompt: 'подсказка', - roleDescription: { - system: 'Дайте высокоуровневые инструкции для разговора', - user: 'Предоставьте инструкции, запросы или любой текстовый ввод для модели', - assistant: 'Ответы модели на основе сообщений пользователя', - }, - addMessage: 'Добавить сообщение', - vision: 'зрение', - files: 'Файлы', - resolution: { - name: 'Разрешение', - high: 'Высокое', - low: 'Низкое', - }, - outputVars: { - output: 'Создать контент', - reasoning_content: 'Содержимое рассуждений', - usage: 'Информация об использовании модели', - }, - singleRun: { - variable: 'Переменная', - }, - sysQueryInUser: 'sys.query в сообщении пользователя обязателен', - jsonSchema: { - warningTips: { - saveSchema: 'Пожалуйста, завершите редактирование текущего поля перед сохранением схемы.', - }, - back: 'Спина', - resetDefaults: 'Сброс', - showAdvancedOptions: 'Показать расширенные параметры', - generatedResult: 'Сгенерированный результат', - generateJsonSchema: 'Сгенерировать JSON-схему', - import: 'Импорт из JSON', - stringValidations: 'Проверка строк', - promptPlaceholder: 'Опишите вашу JSON-схему...', - required: 'необходимо', - generate: 'Сгенерировать', - apply: 'Подать заявку', - addChildField: 'Добавить поле ребенка', - regenerate: 'Сгенерировать заново', - addField: 'Добавить поле', - instruction: 'Инструкция', - title: 'Структурированная схема вывода', - descriptionPlaceholder: 'Добавить описание', - fieldNamePlaceholder: 'Название поля', - doc: 'Узнайте больше о структурированном выводе', - resultTip: 'Вот сгенерированный результат. Если вы не удовлетворены, вы можете вернуться и изменить свой запрос.', - generationTip: 'Вы можете использовать естественный язык для быстрого создания схемы JSON.', - generating: 'Генерация схемы JSON...', - promptTooltip: 'Преобразуйте текстовое описание в стандартизированную структуру JSON Schema.', - }, - reasoningFormat: { - tagged: 'Продолжайте думать о тегах', - title: 'Включите разделение тегов на основе логики', - tooltip: 'Извлечь содержимое из тегов think и сохранить его в поле reasoning_content.', - separated: 'Отдельные теги для мышления', - }, - }, - knowledgeRetrieval: { - queryVariable: 'Переменная запроса', - knowledge: 'Знания', - outputVars: { - output: 'Извлеченные сегментированные данные', - content: 'Сегментированный контент', - title: 'Сегментированный заголовок', - icon: 'Сегментированный значок', - url: 'Сегментированный URL', - metadata: 'Другие метаданные', - files: 'Полученные файлы', - }, - metadata: { - options: { - disabled: { - title: 'Отключено', - subTitle: 'Не включение фильтрации метаданных', - }, - automatic: { - desc: 'Автоматически генерировать условия фильтрации метаданных на основе переменной запроса', - title: 'Автоматический', - subTitle: 'Автоматически генерировать условия фильтрации метаданных на основе запроса пользователя', - }, - manual: { - title: 'Руководство', - subTitle: 'Вручную добавьте условия фильтрации метаданных', - }, - }, - panel: { - conditions: 'Условия', - placeholder: 'Введите значение', - datePlaceholder: 'Выберите время...', - select: 'Выберите переменную...', - add: 'Добавить условие', - title: 'Условия фильтрации метаданных', - search: 'Поиск метаданных', - }, - title: 'Фильтрация метаданных', - tip: 'Фильтрация метаданных — это процесс использования атрибутов метаданных (таких как теги, категории или права доступа) для уточнения и контроля извлечения соответствующей информации внутри системы.', - }, - queryText: 'Текст запроса', - queryAttachment: 'Запрос изображений', - }, - 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': 'Bearer', - 'custom': 'Пользовательская', - 'api-key-title': 'API-ключ', - 'header': 'Заголовок', - }, - insertVarPlaceholder: 'введите "/" для вставки переменной', - timeout: { - title: 'Тайм-аут', - connectLabel: 'Тайм-аут подключения', - connectPlaceholder: 'Введите тайм-аут подключения в секундах', - readLabel: 'Тайм-аут чтения', - readPlaceholder: 'Введите тайм-аут чтения в секундах', - writeLabel: 'Тайм-аут записи', - writePlaceholder: 'Введите тайм-аут записи в секундах', - }, - type: 'Тип', - binaryFileVariable: 'Переменная двоичного файла', - extractListPlaceholder: 'Введите индекс элемента списка, введите \'/\' вставьте переменную', - curl: { - placeholder: 'Вставьте сюда строку cURL', - title: 'Импорт из cURL', - }, - verifySSL: { - title: 'Проверить SSL-сертификат', - warningTooltip: 'Отключение проверки SSL не рекомендуется для производственных сред. Это следует использовать только в разработке или тестировании, так как это делает соединение уязвимым для угроз безопасности, таких как атаки «человек посередине».', - }, - }, - code: { - inputVars: 'Входные переменные', - outputVars: 'Выходные переменные', - advancedDependencies: 'Расширенные зависимости', - advancedDependenciesTip: 'Добавьте сюда некоторые предварительно загруженные зависимости, которые занимают больше времени для потребления или не являются встроенными по умолчанию', - searchDependencies: 'Поиск зависимостей', - syncFunctionSignature: 'Синхронизировать сигнатуру функции с кодом', - }, - templateTransform: { - inputVars: 'Входные переменные', - code: 'Код', - codeSupportTip: 'Поддерживает только Jinja2', - outputVars: { - output: 'Преобразованный контент', - }, - }, - ifElse: { - if: 'Если', - else: 'Иначе', - elseDescription: 'Используется для определения логики, которая должна быть выполнена, когда условие if не выполняется.', - and: 'и', - or: 'или', - operator: 'Оператор', - notSetVariable: 'Пожалуйста, сначала установите переменную', - comparisonOperator: { - 'contains': 'содержит', - 'not contains': 'не содержит', - 'start with': 'начинается с', - 'end with': 'заканчивается на', - 'is': 'равно', - 'is not': 'не равно', - 'empty': 'пусто', - 'not empty': 'не пусто', - 'null': 'null', - 'not null': 'не null', - 'all of': 'все', - 'not in': 'не в', - 'not exists': 'не существует', - 'in': 'в', - 'exists': 'Существует', - 'before': 'до', - 'after': 'после', - }, - enterValue: 'Введите значение', - addCondition: 'Добавить условие', - conditionNotSetup: 'Условие НЕ настроено', - selectVariable: 'Выберите переменную...', - optionName: { - audio: 'Аудио', - localUpload: 'Локальная загрузка', - doc: 'Доктор', - image: 'Образ', - video: 'Видео', - url: 'URL-адрес', - }, - select: 'Выбирать', - addSubVariable: 'Подпеременная', - }, - variableAssigner: { - title: 'Назначить переменные', - outputType: 'Тип вывода', - varNotSet: 'Переменная не установлена', - noVarTip: 'Добавьте переменные, которые нужно назначить', - type: { - string: 'Строка', - number: 'Число', - object: 'Объект', - array: 'Массив', - }, - aggregationGroup: 'Группа агрегации', - aggregationGroupTip: 'Включение этой функции позволяет агрегатору переменных агрегировать несколько наборов переменных.', - addGroup: 'Добавить группу', - outputVars: { - varDescribe: 'Вывод {{groupName}}', - }, - setAssignVariable: 'Установить переменную назначения', - }, - assigner: { - 'assignedVariable': 'Назначенная переменная', - 'writeMode': 'Режим записи', - 'writeModeTip': 'Режим добавления: доступен только для переменных массива.', - 'over-write': 'Перезаписать', - 'append': 'Добавить', - 'plus': 'Плюс', - 'clear': 'Очистить', - 'setVariable': 'Установить переменную', - 'variable': 'Переменная', - 'operations': { - '-=': '-=', - '+=': '+=', - 'clear': 'Ясный', - 'extend': 'Вытягивать', - 'set': 'Набор', - 'overwrite': 'Перезаписать', - '/=': '/=', - '*=': '*=', - 'title': 'Операция', - 'over-write': 'Перезаписать', - 'append': 'Прибавлять', - 'remove-first': 'Удалить первый', - 'remove-last': 'Удалить последний', - }, - 'variables': 'Переменные', - 'noAssignedVars': 'Нет доступных назначенных переменных', - 'noVarTip': 'Нажмите кнопку "+", чтобы добавить переменные', - 'setParameter': 'Установите параметр...', - 'assignedVarsDescription': 'Назначаемые переменные должны быть доступными для записи, например переменными беседы.', - 'varNotSet': 'Переменная НЕ установлена', - 'selectAssignedVariable': 'Выберите назначенную переменную...', - }, - tool: { - inputVars: 'Входные переменные', - outputVars: { - text: 'контент, сгенерированный инструментом', - files: { - title: 'файлы, сгенерированные инструментом', - type: 'Поддерживаемый тип. Сейчас поддерживаются только изображения', - transfer_method: 'Метод передачи. Значение - remote_url или local_file', - url: 'URL изображения', - upload_file_id: 'Идентификатор загруженного файла', - }, - json: 'json, сгенерированный инструментом', - }, - authorize: 'Авторизовать', - settings: 'Настройки', - insertPlaceholder2: 'вставьте переменную', - insertPlaceholder1: 'Наберите или нажмите', - }, - questionClassifiers: { - model: 'модель', - inputVars: 'Входные переменные', - outputVars: { - className: 'Имя класса', - usage: 'Информация об использовании модели', - }, - class: 'Класс', - classNamePlaceholder: 'Введите имя вашего класса', - advancedSetting: 'Расширенные настройки', - topicName: 'Название темы', - topicPlaceholder: 'Введите название вашей темы', - addClass: 'Добавить класс', - instruction: 'Инструкция', - instructionTip: 'Введите дополнительные инструкции, чтобы помочь классификатору вопросов лучше понять, как классифицировать вопросы.', - instructionPlaceholder: 'Введите вашу инструкцию', - }, - parameterExtractor: { - inputVar: 'Входная переменная', - outputVars: { - isSuccess: 'Успешно. В случае успеха значение равно 1, в случае сбоя - 0.', - errorReason: 'Причина ошибки', - usage: 'Информация об использовании модели', - }, - extractParameters: 'Извлечь параметры', - importFromTool: 'Импортировать из инструментов', - addExtractParameter: 'Добавить параметр для извлечения', - addExtractParameterContent: { - name: 'Имя', - namePlaceholder: 'Имя извлекаемого параметра', - type: 'Тип', - typePlaceholder: 'Тип извлекаемого параметра', - description: 'Описание', - descriptionPlaceholder: 'Описание извлекаемого параметра', - required: 'Обязательный', - requiredContent: 'Обязательный используется только в качестве ссылки для вывода модели, а не для обязательной проверки вывода параметра.', - }, - extractParametersNotSet: 'Параметры для извлечения не настроены', - instruction: 'Инструкция', - instructionTip: 'Введите дополнительные инструкции, чтобы помочь извлекателю параметров понять, как извлекать параметры.', - advancedSetting: 'Расширенные настройки', - reasoningMode: 'Режим рассуждения', - reasoningModeTip: 'Вы можете выбрать соответствующий режим рассуждения, основываясь на способности модели реагировать на инструкции для вызова функций или подсказки.', - }, - iteration: { - deleteTitle: 'Удалить узел итерации?', - deleteDesc: 'Удаление узла итерации приведет к удалению всех дочерних узлов', - input: 'Вход', - output: 'Выходные переменные', - iteration_one: '{{count}} Итерация', - iteration_other: '{{count}} Итераций', - currentIteration: 'Текущая итерация', - ErrorMethod: { - operationTerminated: 'Прекращено', - continueOnError: 'продолжить по ошибке', - removeAbnormalOutput: 'удалить аномальный вывод', - }, - comma: ',', - error_other: '{{Количество}} Ошибки', - errorResponseMethod: 'Метод реагирования на ошибку', - MaxParallelismTitle: 'Максимальный параллелизм', - parallelModeUpper: 'ПАРАЛЛЕЛЬНЫЙ РЕЖИМ', - error_one: '{{Количество}} Ошибка', - parallelModeEnableTitle: 'Параллельный режим включен', - parallelMode: 'Параллельный режим', - parallelPanelDesc: 'В параллельном режиме задачи в итерации поддерживают параллельное выполнение.', - parallelModeEnableDesc: 'В параллельном режиме задачи в итерациях поддерживают параллельное выполнение. Вы можете настроить это на панели свойств справа.', - MaxParallelismDesc: 'Максимальный параллелизм используется для управления количеством задач, выполняемых одновременно в одной итерации.', - answerNodeWarningDesc: 'Предупреждение о параллельном режиме: узлы ответов, присвоение переменных диалога и постоянные операции чтения и записи в итерациях могут вызывать исключения.', - flattenOutput: 'Сгладить вывод', - flattenOutputDesc: 'Когда функция включена, если все результаты итераций являются массивами, они будут объединены в один массив. Когда функция выключена, результаты сохранят вложенную структуру массивов.', - }, - note: { - addNote: 'Добавить заметку', - editor: { - placeholder: 'Напишите свою заметку...', - small: 'Маленький', - medium: 'Средний', - large: 'Большой', - bold: 'Жирный', - italic: 'Курсив', - strikethrough: 'Зачеркнутый', - link: 'Ссылка', - openLink: 'Открыть', - unlink: 'Удалить ссылку', - enterUrl: 'Введите URL...', - invalidUrl: 'Неверный URL', - bulletList: 'Маркированный список', - showAuthor: 'Показать автора', - }, - }, - docExtractor: { - outputVars: { - text: 'Извлеченный текст', - }, - learnMore: 'Подробнее', - inputVar: 'Входная переменная', - supportFileTypes: 'Поддерживаемые типы файлов: {{types}}.', - }, - listFilter: { - outputVars: { - last_record: 'Последняя запись', - result: 'Фильтрация результата', - first_record: 'Первая запись', - }, - desc: 'DESC', - asc: 'ASC', - filterCondition: 'Условие фильтра', - filterConditionComparisonOperator: 'Оператор сравнения условий фильтра', - inputVar: 'Входная переменная', - limit: 'Топ N', - orderBy: 'Заказать по', - filterConditionKey: 'Ключ условия фильтра', - selectVariableKeyPlaceholder: 'Выбор ключа подпеременной', - filterConditionComparisonValue: 'Значение условия фильтра', - extractsCondition: 'Извлечение элемента N', - }, - agent: { - strategy: { - tooltip: 'Различные агентные стратегии определяют, как система планирует и выполняет многоступенчатые вызовы инструментов', - configureTip: 'Пожалуйста, настройте агентскую стратегию.', - searchPlaceholder: 'Агентская стратегия поиска', - selectTip: 'Выберите агентскую стратегию', - shortLabel: 'Стратегия', - configureTipDesc: 'После настройки агентской стратегии этот узел автоматически загрузит оставшиеся конфигурации. Стратегия будет влиять на механизм многоступенчатого мышления инструмента.', - label: 'Агентная стратегия', - }, - pluginInstaller: { - install: 'Устанавливать', - installing: 'Установка', - }, - modelNotInMarketplace: { - title: 'Модель не установлена', - manageInPlugins: 'Управление в плагинах', - desc: 'Эта модель устанавливается из локального репозитория или репозитория GitHub. Пожалуйста, используйте после установки.', - }, - modelNotSupport: { - title: 'Неподдерживаемая модель', - descForVersionSwitch: 'Установленная версия плагина не предоставляет эту модель. Нажмите, чтобы переключить версию.', - desc: 'Установленная версия плагина не предоставляет эту модель.', - }, - modelSelectorTooltips: { - deprecated: 'Эта модель устарела', - }, - outputVars: { - files: { - transfer_method: 'Способ переноса. Ценность составляет remote_url или local_file', - url: 'URL изображения', - upload_file_id: 'Загрузить id файла', - type: 'Тип поддержки. Теперь только вспомогательное изображение', - title: 'Файлы, созданные агентом', - }, - text: 'Контент, генерируемый агентом', - usage: 'Информация об использовании модели', - json: 'JSON, сгенерированный агентом', - }, - checkList: { - strategyNotSelected: 'Стратегия не выбрана', - }, - installPlugin: { - install: 'Устанавливать', - title: 'Установить плагин', - desc: 'О программе установки следующего плагина', - cancel: 'Отмена', - changelog: 'Журнал изменений', - }, - tools: 'Инструменты', - pluginNotInstalled: 'Этот плагин не установлен', - strategyNotFoundDesc: 'Установленная версия плагина не предусматривает такой стратегии.', - toolNotInstallTooltip: '{{tool}} не установлен', - linkToPlugin: 'Ссылка на плагины', - learnMore: 'Подробнее', - modelNotInstallTooltip: 'Данная модель не устанавливается', - modelNotSelected: 'Модель не выбрана', - toolNotAuthorizedTooltip: '{{инструмент}} Не авторизован', - unsupportedStrategy: 'Неподдерживаемая стратегия', - pluginNotInstalledDesc: 'Этот плагин устанавливается с GitHub. Пожалуйста, перейдите в раздел Плагины для переустановки', - model: 'модель', - strategyNotFoundDescAndSwitchVersion: 'Установленная версия плагина не предусматривает такой стратегии. Нажмите, чтобы переключить версию.', - notAuthorized: 'Не авторизован', - strategyNotSet: 'Агентская стратегия не задана', - strategyNotInstallTooltip: '{{strategy}} не установлен', - toolbox: 'ящик для инструментов', - pluginNotFoundDesc: 'Этот плагин устанавливается с GitHub. Пожалуйста, перейдите в раздел Плагины для переустановки', - configureModel: 'Сконфигурировать модель', - maxIterations: 'Максимальное количество итераций', - parameterSchema: 'Схема параметров', - clickToViewParameterSchema: 'Нажмите, чтобы просмотреть схему параметров', - }, - loop: { - ErrorMethod: { - operationTerminated: 'Прекращено', - continueOnError: 'Продолжать при ошибке', - removeAbnormalOutput: 'Устранить аномальный вывод', - }, - inputMode: 'Режим ввода', - exitConditionTip: 'У узла цикла должно быть как минимум одно условие выхода', - loopMaxCountError: 'Пожалуйста, введите допустимое максимальное количество циклов, от 1 до {{maxCount}}', - setLoopVariables: 'Устанавливайте переменные в области видимости цикла', - currentLoop: 'Текущий контур', - input: 'Ввод', - comma: ',', - loop_other: '{{count}} Циклов', - currentLoopCount: 'Текущее количество циклов: {{count}}', - loop_one: '{{count}} Цикл', - variableName: 'Имя переменной', - totalLoopCount: 'Общее количество циклов: {{count}}', - loopNode: 'Циклический узел', - errorResponseMethod: 'Метод ответа об ошибке', - deleteTitle: 'Удалить узел цикла?', - error_one: '{{count}} Ошибка', - output: 'Выходная переменная', - deleteDesc: 'Удаление узла цикла удалит все дочерние узлы.', - loopMaxCount: 'Максимальное количество итераций', - error_other: '{{count}} Ошибок', - breakConditionTip: 'Только переменные в циклах с условиями завершения и переменные беседы могут быть использованы.', - finalLoopVariables: 'Финальные переменные цикла', - initialLoopVariables: 'Начальные переменные цикла', - breakCondition: 'Условие завершения цикла', - loopVariables: 'Циклические переменные', - }, - dataSource: { - supportedFileFormatsPlaceholder: 'Расширение файла, e.g. doc', - add: 'Добавление источника данных', - supportedFileFormats: 'Поддерживаемые форматы файлов', - }, - knowledgeBase: { - chunkStructureTip: { - learnMore: 'Подробнее', - title: 'Пожалуйста, выберите структуру чанка', - message: 'База знаний Dify поддерживает три структуры фрагментации: Общие, Родитель-дочерний и Вопросы и ответы. Каждая база знаний может иметь только одну структуру. Выходные данные предыдущего узла должны быть выровнены с выбранной структурой блоков. Обратите внимание, что выбор структуры фрагментации влияет на доступные методы индекса.', - }, - chunkStructure: 'Структура чанка', - aboutRetrieval: 'о методе извлечения.', - indexMethodIsRequired: 'Метод index является обязательным', - chooseChunkStructure: 'Выберите структуру чанка', - chunkIsRequired: 'Требуется структура чанка', - changeChunkStructure: 'Изменение структуры чанка', - retrievalSettingIsRequired: 'Настройка извлечения обязательна', - chunksInput: 'Куски', - chunksInputTip: 'Входная переменная узла базы знаний - это Чанки. Тип переменной является объектом с определенной схемой JSON, которая должна соответствовать выбранной структуре чанка.', - chunksVariableIsRequired: 'Переменная chunks обязательна', - embeddingModelIsRequired: 'Требуется модель встраивания', - rerankingModelIsRequired: 'Требуется модель перераспределения рангов', - rerankingModelIsInvalid: 'Модель повторной ранжировки недействительна', - embeddingModelIsInvalid: 'Модель встраивания недействительна', - }, - triggerPlugin: { - authorized: 'Авторизованный', - notConfigured: 'Не настроено', - notAuthorized: 'Не авторизовано', - selectSubscription: 'Выберите подписку', - availableSubscriptions: 'Доступные подписки', - addSubscription: 'Добавить новую подписку', - removeSubscription: 'Отменить подписку', - subscriptionRemoved: 'Подписка успешно удалена', - error: 'Ошибка', - configuration: 'Конфигурация', - remove: 'Удалить', - or: 'ИЛИ', - useOAuth: 'Использовать OAuth', - useApiKey: 'Использовать ключ API', - authenticationFailed: 'Ошибка аутентификации', - authenticationSuccess: 'Аутентификация успешна', - oauthConfigFailed: 'Сбой настройки OAuth', - configureOAuthClient: 'Настроить OAuth-клиент', - oauthClientDescription: 'Настройте учетные данные клиента OAuth для включения аутентификации', - oauthClientSaved: 'Конфигурация клиента OAuth успешно сохранена', - configureApiKey: 'Настроить ключ API', - apiKeyDescription: 'Настройте учетные данные ключа API для аутентификации', - apiKeyConfigured: 'API-ключ успешно настроен', - configurationFailed: 'Не удалось выполнить настройку', - failedToStart: 'Не удалось запустить процесс аутентификации', - credentialsVerified: 'Учётные данные успешно проверены', - credentialVerificationFailed: 'Проверка учетных данных не удалась', - verifyAndContinue: 'Проверить и продолжить', - configureParameters: 'Настроить параметры', - parametersDescription: 'Настройте параметры и свойства триггера', - configurationComplete: 'Конфигурация завершена', - configurationCompleteDescription: 'Ваш триггер успешно настроен', - configurationCompleteMessage: 'Ваша конфигурация триггера завершена и готова к использованию.', - parameters: 'Параметры', - properties: 'Свойства', - propertiesDescription: 'Дополнительные параметры конфигурации для этого триггера', - noConfigurationRequired: 'Дополнительная настройка для этого триггера не требуется.', - subscriptionName: 'Название подписки', - subscriptionNameDescription: 'Введите уникальное имя для этой подписки на триггер', - subscriptionNamePlaceholder: 'Введите название подписки...', - subscriptionNameRequired: 'Требуется название подписки', - subscriptionRequired: 'Требуется подписка', - }, - triggerSchedule: { - title: 'Расписание', - nodeTitle: 'Триггер расписания', - notConfigured: 'Не настроено', - useCronExpression: 'Используйте cron-выражение', - useVisualPicker: 'Использовать визуальный выбор', - frequency: { - label: 'ЧАСТОТА', - hourly: 'Почасовой', - daily: 'Ежедневно', - weekly: 'Еженедельно', - monthly: 'Ежемесячно', - }, - selectFrequency: 'Выберите частоту', - frequencyLabel: 'Частота', - nextExecution: 'Следующее исполнение', - weekdays: 'Будние дни', - time: 'Время', - cronExpression: 'Выражение Cron', - nextExecutionTime: 'ВРЕМЯ СЛЕДУЮЩЕГО ВЫПОЛНЕНИЯ', - nextExecutionTimes: 'Следующие 5 времен выполнения', - startTime: 'Время начала', - executeNow: 'Выполнение сейчас', - selectDateTime: 'Выберите дату и время', - hours: 'Часы', - minutes: 'Минуты', - onMinute: 'На минуту', - days: 'Дни', - lastDay: 'Последний день', - lastDayTooltip: 'Не все месяцы имеют 31 день. Используйте опцию «последний день», чтобы выбрать последний день каждого месяца.', - mode: 'Мода', - timezone: 'Часовой пояс', - visualConfig: 'Визуальная конфигурация', - monthlyDay: 'Ежемесячный день', - executionTime: 'Время выполнения', - invalidTimezone: 'Недопустимая временная зона', - invalidCronExpression: 'Неверное выражение cron', - noValidExecutionTime: 'Невозможно рассчитать допустимое время выполнения', - executionTimeCalculationError: 'Не удалось вычислить время выполнения', - invalidFrequency: 'Недопустимая частота', - invalidStartTime: 'Недопустимое время начала', - startTimeMustBeFuture: 'Время начала должно быть в будущем', - invalidTimeFormat: 'Неверный формат времени (ожидается ЧЧ:ММ AM/PM)', - invalidWeekday: 'Неверный день недели: {{weekday}}', - invalidMonthlyDay: 'Месячный день должен быть от 1 до 31 или "последний"', - invalidOnMinute: 'Минуты должны быть в диапазоне от 0 до 59', - invalidExecutionTime: 'Недопустимое время выполнения', - executionTimeMustBeFuture: 'Время выполнения должно быть в будущем', - }, - triggerWebhook: { - title: 'Вебхук-триггер', - nodeTitle: '🔗 Вебхук триггер', - configPlaceholder: 'Настройка срабатывания вебхука будет реализована здесь', - webhookUrl: 'URL вебхука', - webhookUrlPlaceholder: 'Нажмите «Создать», чтобы сгенерировать URL вебхука', - generate: 'Сгенерировать', - copy: 'Копировать', - test: 'Тест', - urlGenerated: 'URL вебхука успешно создан', - urlGenerationFailed: 'Не удалось создать URL вебхука', - urlCopied: 'URL скопирован в буфер обмена', - method: 'Метод', - contentType: 'Тип контента', - queryParameters: 'Параметры запроса', - headerParameters: 'Параметры заголовка', - requestBodyParameters: 'Параметры тела запроса', - parameterName: 'Имя переменной', - varName: 'Имя переменной', - varType: 'Тип', - varNamePlaceholder: 'Введите имя переменной...', - required: 'Обязательно', - addParameter: 'Добавить', - addHeader: 'Добавить', - noParameters: 'Параметры не настроены', - noQueryParameters: 'Параметры запроса не настроены', - noHeaders: 'Заголовки не настроены', - noBodyParameters: 'Параметры тела не настроены', - debugUrlTitle: 'Для тестовых запусков всегда используйте этот URL', - debugUrlCopy: 'Нажмите, чтобы скопировать', - debugUrlCopied: 'Скопировано!', - debugUrlPrivateAddressWarning: 'Похоже, что этот URL является внутренним адресом, из-за чего запросы вебхука могут не выполняться. Вы можете изменить TRIGGER_URL на публичный адрес.', - errorHandling: 'Обработка ошибок', - errorStrategy: 'Обработка ошибок', - responseConfiguration: 'Ответ', - asyncMode: 'Асинхронный режим', - statusCode: 'Код состояния', - responseBody: 'Тело ответа', - responseBodyPlaceholder: 'Напишите здесь текст вашего ответа', - headers: 'Заголовки', - validation: { - webhookUrlRequired: 'Требуется URL вебхука', - invalidParameterType: 'Неверный тип параметра "{{type}}" для параметра "{{name}}"', - }, - }, - }, - tracing: { - stopBy: 'Остановлено {{user}}', - }, - variableReference: { - assignedVarsDescription: 'Назначаемые переменные должны быть доступными для записи, такими как', - noAssignedVars: 'Нет доступных назначенных переменных', - noVarsForOperation: 'Переменные для присвоения выбранной операции отсутствуют.', - conversationVars: 'Переменные беседы', - noAvailableVars: 'Нет доступных переменных', - }, - versionHistory: { - filter: { - onlyShowNamedVersions: 'Показывать только именованные версии', - all: 'Все', - reset: 'Сбросить фильтр', - onlyYours: 'Только твой', - empty: 'История версий не найдена', - }, - editField: { - titleLengthLimit: 'Заголовок не может превышать {{limit}} символов', - releaseNotesLengthLimit: 'Примечания к версии не могут превышать {{limit}} символов', - releaseNotes: 'Новости релиза', - title: 'Заголовок', - }, - action: { - restoreSuccess: 'Версия восстановлена', - updateSuccess: 'Версия обновлена', - deleteFailure: 'Не удалось удалить версию', - deleteSuccess: 'Версия удалена', - updateFailure: 'Не удалось обновить версию', - restoreFailure: 'Не удалось восстановить версию', - copyIdSuccess: 'ID скопирован в буфер обмена', - }, - latest: 'Последний', - restorationTip: 'После восстановления версии текущий черновик будет перезаписан.', - deletionTip: 'Удаление необратимо, пожалуйста, подтвердите.', - nameThisVersion: 'Назовите эту версию', - editVersionInfo: 'Редактировать информацию о версии', - title: 'Версии', - currentDraft: 'Текущий проект', - releaseNotesPlaceholder: 'Опишите, что изменилось', - defaultName: 'Без названия версия', - copyId: 'Копировать ID', - }, - debug: { - noData: { - description: 'Результаты последнего запуска будут отображены здесь', - runThisNode: 'Запустите этот узел', - }, - variableInspect: { - trigger: { - stop: 'Стоп, беги', - cached: 'Посмотреть кэшированные переменные', - normal: 'Переменная Инспекция', - clear: 'Ясно', - running: 'Кэширование текущего состояния', - }, - clearAll: 'Сбросить все', - edited: 'Отредактировано', - emptyLink: 'Узнать больше', - systemNode: 'Система', - chatNode: 'Разговор', - clearNode: 'Очистить кэшированную переменную', - reset: 'Сбросить до последнего значения выполнения', - view: 'Просмотр журнала', - title: 'Переменная Инспекция', - resetConversationVar: 'Сбросить переменную разговора до значения по умолчанию', - envNode: 'Окружающая среда', - emptyTip: 'После прохождения через узел на холсте или выполнения узла шаг за шагом вы можете просмотреть текущее значение переменной узла в инспекторе переменных.', - export: 'экспорт', - exportToolTip: 'Экспорт переменной в файл', - largeData: 'Большие данные, предварительный просмотр только для чтения. Экспортируйте для просмотра всего.', - largeDataNoExport: 'Большие данные - только частичный предварительный просмотр', - listening: { - title: 'Ожидание событий от триггеров...', - tip: 'Теперь вы можете имитировать срабатывание событий, отправляя тестовые запросы на HTTP {{nodeName}}-эндпоинт или использовать его в качестве URL обратного вызова для отладки живых событий. Все результаты можно просматривать непосредственно в инспекторе переменных.', - tipPlugin: 'Теперь вы можете создавать события в {{- pluginName}} и получать данные этих событий в Инспекторе переменных.', - tipSchedule: 'Прослушивание событий от триггеров расписания.\nСледующий запланированный запуск: {{nextTriggerTime}}', - tipFallback: 'Ожидайте входящие триггерные события. Результаты появятся здесь.', - defaultNodeName: 'этот триггер', - defaultPluginName: 'этот плагин срабатывает', - defaultScheduleTime: 'Не настроено', - selectedTriggers: 'выбранные триггеры', - stopButton: 'Стоп', - }, - }, - lastRunTab: 'Последний запуск', - settingsTab: 'Настройки', - relations: { - dependencies: 'Зависимости', - dependents: 'Иждивенцев', - noDependencies: 'Нет зависимостей', - dependentsDescription: 'Узлы, которые полагаются на этот узел', - noDependents: 'Отсутствие иждивенцев', - dependenciesDescription: 'Узлы, на которые опирается этот узел', - }, - relationsTab: 'Отношения', - noLastRunFound: 'Предыдущий запуск не найден', - copyLastRun: 'Копировать последний запуск', - copyLastRunError: 'Не удалось скопировать последние входные данные выполнения', - noMatchingInputsFound: 'Не найдено соответствующих входных данных из последнего запуска.', - lastOutput: 'Последний вывод', - lastRunInputsCopied: '{{count}} вход(ов) скопировано из последнего запуска', - }, - sidebar: { - exportWarning: 'Экспортировать текущую сохранённую версию', - exportWarningDesc: 'Это экспортирует текущую сохранённую версию вашего рабочего процесса. Если у вас есть несохранённые изменения в редакторе, сначала сохраните их с помощью опции экспорта на полотне рабочего процесса.', - }, - publishLimit: { - startNodeTitlePrefix: 'Обновить до', - startNodeTitleSuffix: 'разблокировать неограниченное количество триггеров для каждого рабочего процесса', - startNodeDesc: 'Вы достигли лимита в 2 триггера на рабочий процесс для этого плана. Обновите план, чтобы опубликовать этот рабочий процесс.', - }, - error: { - startNodeRequired: 'Пожалуйста, сначала добавьте начальный узел перед {{operation}}', - operations: { - connectingNodes: 'соединение узлов', - addingNodes: 'добавление узлов', - modifyingWorkflow: 'изменение рабочего процесса', - updatingWorkflow: 'обновление рабочего процесса', - }, - }, - customWebhook: 'Пользовательский вебхук', - difyTeam: 'Команда Dify', - triggerStatus: { - enabled: 'СПУСКОВОЙ МЕХАНИЗМ', - disabled: 'ТРЕВОГА • ОТКЛЮЧЕНО', - }, - entryNodeStatus: { - enabled: 'НАЧАТЬ', - disabled: 'СТАРТ • ОТКЛЮЧЕНО', - }, - onboarding: { - title: 'Выберите начальный узел, чтобы начать', - description: 'Разные начальные узлы имеют разные возможности. Не волнуйтесь, вы всегда сможете изменить их позже.', - userInputFull: 'Вход пользователя (исходный начальный узел)', - userInputDescription: 'Начальный узел, который позволяет задавать переменные пользовательского ввода с возможностями инструментов: веб-приложение, API сервиса, сервер MCP и рабочий процесс.', - trigger: 'Триггер', - triggerDescription: 'Триггеры могут служить начальной точкой рабочего процесса, например, для запланированных задач, пользовательских вебхуков или интеграций с другими приложениями.', - back: 'Назад', - learnMore: 'Узнать больше', - aboutStartNode: 'о стартовом узле.', - escTip: { - press: 'Нажмите', - key: 'esc', - toDismiss: 'уволить', - }, - }, -} - -export default translation diff --git a/web/i18n/sl-SI/app-annotation.json b/web/i18n/sl-SI/app-annotation.json new file mode 100644 index 0000000000..261cf5600f --- /dev/null +++ b/web/i18n/sl-SI/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "Opombe", + "name": "Odgovor na opombo", + "editBy": "Odgovor je uredil {{author}}", + "noData": { + "title": "Brez opomb", + "description": "Opombe lahko urejate med odpravljanjem napak v aplikaciji ali jih množično uvozite tukaj za visokokakovosten odgovor." + }, + "table": { + "header": { + "question": "vprašanje", + "answer": "odgovor", + "createdAt": "ustvarjeno ob", + "hits": "zadetki", + "actions": "dejanja", + "addAnnotation": "Dodaj opombo", + "bulkImport": "Množični uvoz", + "bulkExport": "Množični izvoz", + "clearAll": "Počisti vse opombe", + "clearAllConfirm": "Izbrišite vse opombe?" + } + }, + "editModal": { + "title": "Uredi odgovor na opombo", + "queryName": "Uporabniško vprašanje", + "answerName": "Pripovedovalec Bot", + "yourAnswer": "Vaš odgovor", + "answerPlaceholder": "Vnesite svoj odgovor tukaj", + "yourQuery": "Vaše vprašanje", + "queryPlaceholder": "Vnesite svoje vprašanje tukaj", + "removeThisCache": "Odstrani to opombo", + "createdAt": "Ustvarjeno ob" + }, + "addModal": { + "title": "Dodaj odgovor na opombo", + "queryName": "Vprašanje", + "answerName": "Odgovor", + "answerPlaceholder": "Vnesite odgovor tukaj", + "queryPlaceholder": "Vnesite vprašanje tukaj", + "createNext": "Dodaj še en odgovor z opombo" + }, + "batchModal": { + "title": "Množični uvoz", + "csvUploadTitle": "Povlecite in spustite svoj CSV datoteko tukaj ali ", + "browse": "poiščite", + "tip": "CSV datoteka mora ustrezati naslednji strukturi:", + "question": "vprašanje", + "answer": "odgovor", + "contentTitle": "vsebina fragmenta", + "content": "vsebina", + "template": "Prenesite predlogo tukaj", + "cancel": "Prekliči", + "run": "Zaženi množično obdelavo", + "runError": "Napaka pri množičnem zagonu", + "processing": "V množični obdelavi", + "completed": "Uvoz zaključen", + "error": "Napaka pri uvozu", + "ok": "V redu" + }, + "errorMessage": { + "answerRequired": "Odgovor je obvezen", + "queryRequired": "Vprašanje je obvezno" + }, + "viewModal": { + "annotatedResponse": "Odgovor na opombo", + "hitHistory": "Zgodovina zadetkov", + "hit": "Zadetek", + "hits": "Zadetki", + "noHitHistory": "Ni zgodovine zadetkov" + }, + "hitHistoryTable": { + "query": "Vprašanje", + "match": "Ujemanje", + "response": "Odgovor", + "source": "Vir", + "score": "Rezultat", + "time": "Čas" + }, + "initSetup": { + "title": "Začetna nastavitev odgovora na opombo", + "configTitle": "Nastavitev odgovora na opombo", + "confirmBtn": "Shrani in omogoči", + "configConfirmBtn": "Shrani" + }, + "embeddingModelSwitchTip": "Model za vektorizacijo besedila opomb, preklapljanje modelov bo ponovno vektoriziralo, kar bo povzročilo dodatne stroške.", + "list": { + "delete": { + "title": "Ali ste prepričani, da želite izbrisati?" + } + }, + "batchAction": { + "cancel": "Prekliči", + "delete": "Izbriši", + "selected": "Izbrano" + } +} diff --git a/web/i18n/sl-SI/app-annotation.ts b/web/i18n/sl-SI/app-annotation.ts deleted file mode 100644 index 69a6db57be..0000000000 --- a/web/i18n/sl-SI/app-annotation.ts +++ /dev/null @@ -1,98 +0,0 @@ -const translation = { - title: 'Opombe', - name: 'Odgovor na opombo', - editBy: 'Odgovor je uredil {{author}}', - noData: { - title: 'Brez opomb', - description: 'Opombe lahko urejate med odpravljanjem napak v aplikaciji ali jih množično uvozite tukaj za visokokakovosten odgovor.', - }, - table: { - header: { - question: 'vprašanje', - answer: 'odgovor', - createdAt: 'ustvarjeno ob', - hits: 'zadetki', - actions: 'dejanja', - addAnnotation: 'Dodaj opombo', - bulkImport: 'Množični uvoz', - bulkExport: 'Množični izvoz', - clearAll: 'Počisti vse opombe', - clearAllConfirm: 'Izbrišite vse opombe?', - }, - }, - editModal: { - title: 'Uredi odgovor na opombo', - queryName: 'Uporabniško vprašanje', - answerName: 'Pripovedovalec Bot', - yourAnswer: 'Vaš odgovor', - answerPlaceholder: 'Vnesite svoj odgovor tukaj', - yourQuery: 'Vaše vprašanje', - queryPlaceholder: 'Vnesite svoje vprašanje tukaj', - removeThisCache: 'Odstrani to opombo', - createdAt: 'Ustvarjeno ob', - }, - addModal: { - title: 'Dodaj odgovor na opombo', - queryName: 'Vprašanje', - answerName: 'Odgovor', - answerPlaceholder: 'Vnesite odgovor tukaj', - queryPlaceholder: 'Vnesite vprašanje tukaj', - createNext: 'Dodaj še en odgovor z opombo', - }, - batchModal: { - title: 'Množični uvoz', - csvUploadTitle: 'Povlecite in spustite svoj CSV datoteko tukaj ali ', - browse: 'poiščite', - tip: 'CSV datoteka mora ustrezati naslednji strukturi:', - question: 'vprašanje', - answer: 'odgovor', - contentTitle: 'vsebina fragmenta', - content: 'vsebina', - template: 'Prenesite predlogo tukaj', - cancel: 'Prekliči', - run: 'Zaženi množično obdelavo', - runError: 'Napaka pri množičnem zagonu', - processing: 'V množični obdelavi', - completed: 'Uvoz zaključen', - error: 'Napaka pri uvozu', - ok: 'V redu', - }, - errorMessage: { - answerRequired: 'Odgovor je obvezen', - queryRequired: 'Vprašanje je obvezno', - }, - viewModal: { - annotatedResponse: 'Odgovor na opombo', - hitHistory: 'Zgodovina zadetkov', - hit: 'Zadetek', - hits: 'Zadetki', - noHitHistory: 'Ni zgodovine zadetkov', - }, - hitHistoryTable: { - query: 'Vprašanje', - match: 'Ujemanje', - response: 'Odgovor', - source: 'Vir', - score: 'Rezultat', - time: 'Čas', - }, - initSetup: { - title: 'Začetna nastavitev odgovora na opombo', - configTitle: 'Nastavitev odgovora na opombo', - confirmBtn: 'Shrani in omogoči', - configConfirmBtn: 'Shrani', - }, - embeddingModelSwitchTip: 'Model za vektorizacijo besedila opomb, preklapljanje modelov bo ponovno vektoriziralo, kar bo povzročilo dodatne stroške.', - list: { - delete: { - title: 'Ali ste prepričani, da želite izbrisati?', - }, - }, - batchAction: { - cancel: 'Prekliči', - delete: 'Izbriši', - selected: 'Izbrano', - }, -} - -export default translation diff --git a/web/i18n/sl-SI/app-api.json b/web/i18n/sl-SI/app-api.json new file mode 100644 index 0000000000..d8e53d30ac --- /dev/null +++ b/web/i18n/sl-SI/app-api.json @@ -0,0 +1,83 @@ +{ + "apiServer": "API Strežnik", + "apiKey": "API Ključ", + "status": "Status", + "disabled": "Onemogočeno", + "ok": "V uporabi", + "copy": "Kopiraj", + "copied": "Kopirano", + "regenerate": "Regeneriraj", + "play": "Predvajaj", + "pause": "Premor", + "playing": "Predvajanje", + "loading": "Nalaganje", + "merMaid": { + "rerender": "Ponovno izrisi" + }, + "never": "Nikoli", + "apiKeyModal": { + "apiSecretKey": "API Skrivni ključ", + "apiSecretKeyTips": "Da bi preprečili zlorabo API-ja, zaščitite svoj API ključ. Izogibajte se uporabi v navadnem besedilu v sprednji kodi. :)", + "createNewSecretKey": "Ustvari nov skrivni ključ", + "secretKey": "Skrivni ključ", + "created": "USTVARJENO", + "lastUsed": "ZADNJA UPORABA", + "generateTips": "Hranite ta ključ na varnem in dostopnem mestu." + }, + "actionMsg": { + "deleteConfirmTitle": "Izbrisati ta skrivni ključ?", + "deleteConfirmTips": "To dejanje ni mogoče razveljaviti.", + "ok": "V redu" + }, + "completionMode": { + "title": "API za dokončanje aplikacije", + "info": "Za visokokakovostno generiranje besedil, kot so članki, povzetki in prevodi, uporabite API za dokončanje sporočil z vnosom uporabnika. Generiranje besedil temelji na parametrih modela in predlogah pozivov, določenih v Dify Prompt Engineering.", + "createCompletionApi": "Ustvari sporočilo o dokončanju", + "createCompletionApiTip": "Ustvari sporočilo o dokončanju za podporo načinu vprašanj in odgovorov.", + "inputsTips": "(Neobvezno) Navedite vnosna polja uporabnikov kot ključ-vrednost pare, ki ustrezajo spremenljivkam v Prompt Eng. Ključ je ime spremenljivke, vrednost pa vrednost parametra. Če je vrsta polja Izberi, mora biti posredovana vrednost ena izmed vnaprej določenih možnosti.", + "queryTips": "Vsebina besedila vnosa uporabnika.", + "blocking": "Vrsta blokiranja, čakanje na dokončanje izvajanja in vračanje rezultatov. (Zahteve se lahko prekinejo, če je postopek dolg)", + "streaming": "streaming povratki. Implementacija povratkov pretakanja na podlagi SSE (Server-Sent Events).", + "messageFeedbackApi": "Povratne informacije o sporočilih (všeč)", + "messageFeedbackApiTip": "Ocenite prejeta sporočila v imenu končnih uporabnikov z všečki ali nevšečki. Ti podatki so vidni na strani Dnevniki in opombe ter se uporabljajo za nadaljnje fino prilagajanje modela.", + "messageIDTip": "ID sporočila", + "ratingTip": "všeč ali nevšeč, null je preklic", + "parametersApi": "Pridobite informacije o parametrih aplikacije", + "parametersApiTip": "Pridobite konfigurirane vhodne parametre, vključno z imeni spremenljivk, imeni polj, vrstami in privzetimi vrednostmi. Običajno se uporablja za prikaz teh polj v obrazcu ali izpolnjevanje privzetih vrednosti po nalaganju odjemalca." + }, + "chatMode": { + "title": "API za klepet aplikacije", + "info": "Za vsestranske pogovorne aplikacije, ki uporabljajo obliko vprašanj in odgovorov, pokličite API za klepetna sporočila, da začnete dialog. Ohranite tekoče pogovore tako, da prenesete vrnjeni conversation_id. Parametri odgovorov in predloge so odvisni od nastavitev Dify Prompt Eng.", + "createChatApi": "Ustvari klepetno sporočilo", + "createChatApiTip": "Ustvari novo pogovorno sporočilo ali nadaljuj obstoječi pogovor.", + "inputsTips": "(Neobvezno) Navedite vnosna polja uporabnikov kot ključ-vrednost pare, ki ustrezajo spremenljivkam v Prompt Eng. Ključ je ime spremenljivke, vrednost pa vrednost parametra. Če je vrsta polja Izberi, mora biti posredovana vrednost ena izmed vnaprej določenih možnosti.", + "queryTips": "Vsebina vnosa/uporabniškega vprašanja", + "blocking": "Vrsta blokiranja, čakanje na dokončanje izvajanja in vračanje rezultatov. (Zahteve se lahko prekinejo, če je postopek dolg)", + "streaming": "streaming povratki. Implementacija povratkov pretakanja na podlagi SSE (Server-Sent Events).", + "conversationIdTip": "(Neobvezno) ID pogovora: pustite prazno za prvi pogovor; prenesite conversation_id iz konteksta, da nadaljujete dialog.", + "messageFeedbackApi": "Povratne informacije končnih uporabnikov o sporočilu, všeč", + "messageFeedbackApiTip": "Ocenite prejeta sporočila v imenu končnih uporabnikov z všečki ali nevšečki. Ti podatki so vidni na strani Dnevniki in opombe ter se uporabljajo za nadaljnje fino prilagajanje modela.", + "messageIDTip": "ID sporočila", + "ratingTip": "všeč ali nevšeč, null je preklic", + "chatMsgHistoryApi": "Pridobi zgodovino klepetnih sporočil", + "chatMsgHistoryApiTip": "Prva stran vrne najnovejše `limit` zapise, ki so v obratnem vrstnem redu.", + "chatMsgHistoryConversationIdTip": "ID pogovora", + "chatMsgHistoryFirstId": "ID prvega klepeta na trenutni strani. Privzeto ni.", + "chatMsgHistoryLimit": "Koliko klepetov je vrnjenih na eno zahtevo", + "conversationsListApi": "Pridobi seznam pogovorov", + "conversationsListApiTip": "Pridobi seznam sej trenutnega uporabnika. Privzeto je vrnjenih zadnjih 20 sej.", + "conversationsListFirstIdTip": "ID zadnjega zapisa na trenutni strani, privzeto ni.", + "conversationsListLimitTip": "Koliko klepetov je vrnjenih na eno zahtevo", + "conversationRenamingApi": "Preimenovanje pogovora", + "conversationRenamingApiTip": "Preimenujte pogovore; ime je prikazano v večsejnih odjemalskih vmesnikih.", + "conversationRenamingNameTip": "Novo ime", + "parametersApi": "Pridobite informacije o parametrih aplikacije", + "parametersApiTip": "Pridobite konfigurirane vhodne parametre, vključno z imeni spremenljivk, imeni polj, vrstami in privzetimi vrednostmi. Običajno se uporablja za prikaz teh polj v obrazcu ali izpolnjevanje privzetih vrednosti po nalaganju odjemalca." + }, + "develop": { + "requestBody": "Telo zahteve", + "pathParams": "Parametri poti", + "query": "Poizvedba", + "toc": "Vsebino" + } +} diff --git a/web/i18n/sl-SI/app-api.ts b/web/i18n/sl-SI/app-api.ts deleted file mode 100644 index 71365efa5d..0000000000 --- a/web/i18n/sl-SI/app-api.ts +++ /dev/null @@ -1,85 +0,0 @@ -const translation = { - apiServer: 'API Strežnik', - apiKey: 'API Ključ', - status: 'Status', - disabled: 'Onemogočeno', - ok: 'V uporabi', - copy: 'Kopiraj', - copied: 'Kopirano', - regenerate: 'Regeneriraj', - play: 'Predvajaj', - pause: 'Premor', - playing: 'Predvajanje', - loading: 'Nalaganje', - merMaid: { - rerender: 'Ponovno izrisi', - }, - never: 'Nikoli', - apiKeyModal: { - apiSecretKey: 'API Skrivni ključ', - apiSecretKeyTips: 'Da bi preprečili zlorabo API-ja, zaščitite svoj API ključ. Izogibajte se uporabi v navadnem besedilu v sprednji kodi. :)', - createNewSecretKey: 'Ustvari nov skrivni ključ', - secretKey: 'Skrivni ključ', - created: 'USTVARJENO', - lastUsed: 'ZADNJA UPORABA', - generateTips: 'Hranite ta ključ na varnem in dostopnem mestu.', - }, - actionMsg: { - deleteConfirmTitle: 'Izbrisati ta skrivni ključ?', - deleteConfirmTips: 'To dejanje ni mogoče razveljaviti.', - ok: 'V redu', - }, - completionMode: { - title: 'API za dokončanje aplikacije', - info: 'Za visokokakovostno generiranje besedil, kot so članki, povzetki in prevodi, uporabite API za dokončanje sporočil z vnosom uporabnika. Generiranje besedil temelji na parametrih modela in predlogah pozivov, določenih v Dify Prompt Engineering.', - createCompletionApi: 'Ustvari sporočilo o dokončanju', - createCompletionApiTip: 'Ustvari sporočilo o dokončanju za podporo načinu vprašanj in odgovorov.', - inputsTips: '(Neobvezno) Navedite vnosna polja uporabnikov kot ključ-vrednost pare, ki ustrezajo spremenljivkam v Prompt Eng. Ključ je ime spremenljivke, vrednost pa vrednost parametra. Če je vrsta polja Izberi, mora biti posredovana vrednost ena izmed vnaprej določenih možnosti.', - queryTips: 'Vsebina besedila vnosa uporabnika.', - blocking: 'Vrsta blokiranja, čakanje na dokončanje izvajanja in vračanje rezultatov. (Zahteve se lahko prekinejo, če je postopek dolg)', - streaming: 'streaming povratki. Implementacija povratkov pretakanja na podlagi SSE (Server-Sent Events).', - messageFeedbackApi: 'Povratne informacije o sporočilih (všeč)', - messageFeedbackApiTip: 'Ocenite prejeta sporočila v imenu končnih uporabnikov z všečki ali nevšečki. Ti podatki so vidni na strani Dnevniki in opombe ter se uporabljajo za nadaljnje fino prilagajanje modela.', - messageIDTip: 'ID sporočila', - ratingTip: 'všeč ali nevšeč, null je preklic', - parametersApi: 'Pridobite informacije o parametrih aplikacije', - parametersApiTip: 'Pridobite konfigurirane vhodne parametre, vključno z imeni spremenljivk, imeni polj, vrstami in privzetimi vrednostmi. Običajno se uporablja za prikaz teh polj v obrazcu ali izpolnjevanje privzetih vrednosti po nalaganju odjemalca.', - }, - chatMode: { - title: 'API za klepet aplikacije', - info: 'Za vsestranske pogovorne aplikacije, ki uporabljajo obliko vprašanj in odgovorov, pokličite API za klepetna sporočila, da začnete dialog. Ohranite tekoče pogovore tako, da prenesete vrnjeni conversation_id. Parametri odgovorov in predloge so odvisni od nastavitev Dify Prompt Eng.', - createChatApi: 'Ustvari klepetno sporočilo', - createChatApiTip: 'Ustvari novo pogovorno sporočilo ali nadaljuj obstoječi pogovor.', - inputsTips: '(Neobvezno) Navedite vnosna polja uporabnikov kot ključ-vrednost pare, ki ustrezajo spremenljivkam v Prompt Eng. Ključ je ime spremenljivke, vrednost pa vrednost parametra. Če je vrsta polja Izberi, mora biti posredovana vrednost ena izmed vnaprej določenih možnosti.', - queryTips: 'Vsebina vnosa/uporabniškega vprašanja', - blocking: 'Vrsta blokiranja, čakanje na dokončanje izvajanja in vračanje rezultatov. (Zahteve se lahko prekinejo, če je postopek dolg)', - streaming: 'streaming povratki. Implementacija povratkov pretakanja na podlagi SSE (Server-Sent Events).', - conversationIdTip: '(Neobvezno) ID pogovora: pustite prazno za prvi pogovor; prenesite conversation_id iz konteksta, da nadaljujete dialog.', - messageFeedbackApi: 'Povratne informacije končnih uporabnikov o sporočilu, všeč', - messageFeedbackApiTip: 'Ocenite prejeta sporočila v imenu končnih uporabnikov z všečki ali nevšečki. Ti podatki so vidni na strani Dnevniki in opombe ter se uporabljajo za nadaljnje fino prilagajanje modela.', - messageIDTip: 'ID sporočila', - ratingTip: 'všeč ali nevšeč, null je preklic', - chatMsgHistoryApi: 'Pridobi zgodovino klepetnih sporočil', - chatMsgHistoryApiTip: 'Prva stran vrne najnovejše `limit` zapise, ki so v obratnem vrstnem redu.', - chatMsgHistoryConversationIdTip: 'ID pogovora', - chatMsgHistoryFirstId: 'ID prvega klepeta na trenutni strani. Privzeto ni.', - chatMsgHistoryLimit: 'Koliko klepetov je vrnjenih na eno zahtevo', - conversationsListApi: 'Pridobi seznam pogovorov', - conversationsListApiTip: 'Pridobi seznam sej trenutnega uporabnika. Privzeto je vrnjenih zadnjih 20 sej.', - conversationsListFirstIdTip: 'ID zadnjega zapisa na trenutni strani, privzeto ni.', - conversationsListLimitTip: 'Koliko klepetov je vrnjenih na eno zahtevo', - conversationRenamingApi: 'Preimenovanje pogovora', - conversationRenamingApiTip: 'Preimenujte pogovore; ime je prikazano v večsejnih odjemalskih vmesnikih.', - conversationRenamingNameTip: 'Novo ime', - parametersApi: 'Pridobite informacije o parametrih aplikacije', - parametersApiTip: 'Pridobite konfigurirane vhodne parametre, vključno z imeni spremenljivk, imeni polj, vrstami in privzetimi vrednostmi. Običajno se uporablja za prikaz teh polj v obrazcu ali izpolnjevanje privzetih vrednosti po nalaganju odjemalca.', - }, - develop: { - requestBody: 'Telo zahteve', - pathParams: 'Parametri poti', - query: 'Poizvedba', - toc: 'Vsebino', - }, -} - -export default translation diff --git a/web/i18n/sl-SI/app-debug.json b/web/i18n/sl-SI/app-debug.json new file mode 100644 index 0000000000..43a88bebcf --- /dev/null +++ b/web/i18n/sl-SI/app-debug.json @@ -0,0 +1,576 @@ +{ + "pageTitle": { + "line1": "PROMPT", + "line2": "Inženiring" + }, + "orchestrate": "Orkestriraj", + "promptMode": { + "simple": "Preklopi na strokovni način, da urejaš celoten PROMPT", + "advanced": "Strokovni način", + "switchBack": "Preklopi nazaj", + "advancedWarning": { + "title": "Preklopil si na strokovni način. Ko spremeniš PROMPT, ne moreš več preklopiti nazaj v osnovni način.", + "description": "V strokovnem načinu lahko urejaš celoten PROMPT.", + "learnMore": "Preberi več", + "ok": "V redu" + }, + "operation": { + "addMessage": "Dodaj sporočilo" + }, + "contextMissing": "Manjka komponenta konteksta, zato učinkovitost PROMPT-a morda ne bo najboljša." + }, + "operation": { + "applyConfig": "Objavi", + "resetConfig": "Ponastavi", + "debugConfig": "Odpravljanje napak", + "addFeature": "Dodaj funkcionalnost", + "automatic": "Generiraj", + "stopResponding": "Prenehaj odgovarjati", + "agree": "všeč", + "disagree": "ni všeč", + "cancelAgree": "Prekliči všeček", + "cancelDisagree": "Prekliči nevšečnost", + "userAction": "Uporabnik " + }, + "notSetAPIKey": { + "title": "Ključ ponudnika LLM ni nastavljen", + "trailFinished": "Preizkus končan", + "description": "Ključ ponudnika LLM ni nastavljen. Pred odpravljanjem napak je treba nastaviti ključ.", + "settingBtn": "Pojdi v nastavitve" + }, + "trailUseGPT4Info": { + "title": "GPT-4 trenutno ni podprt", + "description": "Za uporabo GPT-4 je treba nastaviti API ključ." + }, + "feature": { + "groupChat": { + "title": "Izboljšanje klepeta", + "description": "Dodajanje prednastavitev klepeta lahko izboljša uporabniško izkušnjo." + }, + "groupExperience": { + "title": "Izboljšanje izkušnje" + }, + "conversationOpener": { + "title": "Začetek pogovora", + "description": "V klepetu AI običajno začne pogovor z uporabnikom z dobrodošlico." + }, + "suggestedQuestionsAfterAnswer": { + "title": "Nadaljnja vprašanja", + "description": "Nastavitev predlogov za naslednja vprašanja lahko uporabnikom izboljša klepet.", + "resDes": "3 predlogi za naslednje vprašanje uporabnika.", + "tryToAsk": "Poskusi vprašati" + }, + "moreLikeThis": { + "title": "Več takšnih", + "description": "Ustvari več besedil naenkrat, nato pa jih urejaj in nadaljuj z ustvarjanjem.", + "generateNumTip": "Število generacij vsakič", + "tip": "Uporaba te funkcije povzroča dodatno porabo žetonov." + }, + "speechToText": { + "title": "Govor v besedilo", + "description": "Ko je omogočeno, lahko uporabljaš glasovni vnos.", + "resDes": "Glasovni vnos je omogočen." + }, + "textToSpeech": { + "title": "Besedilo v govor", + "description": "Ko je omogočeno, lahko besedilo pretvoriš v govor.", + "resDes": "Pretvorba besedila v zvok je omogočena." + }, + "citation": { + "title": "Citati in pripisovanja", + "description": "Ko je omogočeno, prikaži izvorni dokument in pripisani del generirane vsebine.", + "resDes": "Citati in pripisovanja so omogočeni." + }, + "annotation": { + "title": "Odgovor z opombami", + "description": "Ročno lahko dodate visokokakovostne odgovore v predpomnilnik za prednostno ujemanje s podobnimi vprašanji uporabnikov.", + "resDes": "Odgovor z opombami je omogočen.", + "scoreThreshold": { + "title": "Prag ujemanja", + "description": "Uporabljeno za nastavitev praga podobnosti za odgovor z opombami.", + "easyMatch": "Lahko ujemanje", + "accurateMatch": "Natančno ujemanje" + }, + "matchVariable": { + "title": "Spremenljivka za ujemanje", + "choosePlaceholder": "Izberi spremenljivko za ujemanje" + }, + "cacheManagement": "Upravljanje opomb", + "cached": "Z opombo", + "remove": "Odstrani", + "removeConfirm": "Izbrisati to opombo?", + "add": "Dodaj opombo", + "edit": "Uredi opombo" + }, + "dataSet": { + "title": "Kontekst", + "noData": "Uvozi znanje kot kontekst", + "selectTitle": "Izberi referenčno znanje", + "selected": "Izbrano znanje", + "noDataSet": "Znanje ni bilo najdeno", + "toCreate": "Pojdi na ustvarjanje", + "notSupportSelectMulti": "Trenutno je podprto le eno znanje", + "queryVariable": { + "title": "Spremenljivka poizvedbe", + "tip": "Ta spremenljivka bo uporabljena kot vnos poizvedbe za pridobitev kontekstnih informacij.", + "choosePlaceholder": "Izberi spremenljivko poizvedbe", + "noVar": "Ni spremenljivk", + "noVarTip": "ustvari spremenljivko v razdelku Spremenljivke", + "unableToQueryDataSet": "Neuspešna poizvedba po znanju", + "unableToQueryDataSetTip": "Neuspešna poizvedba po znanju, izberi spremenljivko poizvedbe v razdelku kontekst.", + "ok": "V redu", + "contextVarNotEmpty": "Spremenljivka poizvedbe ne sme biti prazna", + "deleteContextVarTitle": "Izbrisati spremenljivko “{{varName}}”?", + "deleteContextVarTip": "Ta spremenljivka je nastavljena kot spremenljivka za poizvedbo po kontekstu. Če jo odstraniš, bo to vplivalo na uporabo znanja. Če jo želiš izbrisati, ponovno izberi v razdelku kontekst." + } + }, + "tools": { + "title": "Orodja", + "tips": "Orodja nudijo standardiziran način klicanja API-jev, pri čemer se uporabniški vnos ali spremenljivke uporabijo kot parametri za poizvedovanje zunanjih podatkov.", + "toolsInUse": "{{count}} orodij v uporabi", + "modal": { + "title": "Orodje", + "toolType": { + "title": "Tip orodja", + "placeholder": "Izberi tip orodja" + }, + "name": { + "title": "Ime", + "placeholder": "Vnesi ime" + }, + "variableName": { + "title": "Ime spremenljivke", + "placeholder": "Vnesi ime spremenljivke" + } + } + }, + "conversationHistory": { + "title": "Zgodovina pogovorov", + "description": "Nastavi predpone imen za vloge v pogovoru", + "tip": "Zgodovina pogovorov ni omogočena. Dodaj v zgornji PROMPT.", + "learnMore": "Preberi več", + "editModal": { + "title": "Uredi imena vlog v pogovoru", + "userPrefix": "Predpona uporabnika", + "assistantPrefix": "Predpona pomočnika" + } + }, + "toolbox": { + "title": "ORODJA" + }, + "moderation": { + "title": "Moderiranje vsebine", + "description": "Zagotovi varno izhodno vsebino s pomočjo API-ja za moderiranje ali vzdrževanja seznama občutljivih besed.", + "allEnabled": "VSEBINA VNOSA/IZHODA omogočena", + "inputEnabled": "VSEBINA VNOSA omogočena", + "outputEnabled": "VSEBINA IZHODA omogočena", + "modal": { + "title": "Nastavitve moderiranja vsebine", + "provider": { + "title": "Ponudnik", + "openai": "OpenAI Moderiranje", + "openaiTip": { + "prefix": "OpenAI Moderiranje zahteva nastavljen API ključ pri ", + "suffix": "." + }, + "keywords": "Ključne besede" + }, + "keywords": { + "tip": "Vsaka beseda na lastni vrstici, ločena z vrsticami. Največ 100 znakov na vrstico.", + "placeholder": "Vsaka beseda na lastni vrstici, ločena z vrsticami", + "line": "Vrstica" + }, + "content": { + "input": "Moderiraj VSEBINO VNOSA", + "output": "Moderiraj VSEBINO IZHODA", + "preset": "Prednastavljeni odgovori", + "errorMessage": "Prednastavljeni odgovori ne smejo biti prazni", + "condition": "Zmerna vsebina INPUT in OUTPUT je omogočena vsaj ena", + "supportMarkdown": "Podprt za Markdown", + "fromApi": "Prednastavljene odgovore vrne API", + "placeholder": "Prednastavljena vsebina odgovorov tukaj" + }, + "openaiNotConfig": { + "after": "", + "before": "Za moderiranje OpenAI potrebujete ključ OpenAI API, konfiguriran v" + } + }, + "contentEnableLabel": "Moderiranje vsebine omogočeno" + }, + "debug": {}, + "agent": { + "message": {} + }, + "history": {}, + "prompt": {}, + "message": {}, + "theme": { + "themes": {}, + "modal": { + "primaryColor": {}, + "textColor": {} + } + }, + "fileUpload": { + "title": "Nalaganje datoteke", + "description": "Pogovorno polje omogoča nalaganje slik, dokumentov in drugih datotek.", + "supportedTypes": "Podprte vrste datotek", + "numberLimit": "Največje število nalaganj", + "modalTitle": "Nastavitve nalaganja datoteke" + }, + "imageUpload": { + "title": "Nalaganje slike", + "description": "Omogoči nalaganje slik.", + "supportedTypes": "Podprte vrste datotek", + "numberLimit": "Največje število nalaganj", + "modalTitle": "Nastavitve nalaganja slike" + }, + "bar": { + "empty": "Omogoči funkcije za izboljšanje uporabniške izkušnje spletne aplikacije", + "enableText": "Funkcije omogočene", + "manage": "Upravljaj" + }, + "documentUpload": { + "title": "Dokument", + "description": "Omogočitev dokumenta bo omogočila modelu, da sprejme dokumente in odgovori na vprašanja o njih." + }, + "audioUpload": { + "title": "Zvok", + "description": "Omogočitev zvoka bo omogočila modelu, da obdela zvočne datoteke za prepisovanje in analizo." + } + }, + "codegen": { + "instruction": "Navodila", + "title": "Generator kode", + "resTitle": "Ustvarjena koda", + "loading": "Generiranje kode ...", + "generatedCodeTitle": "Ustvarjena koda", + "noDataLine1": "Na levi opišite primer uporabe,", + "noDataLine2": "Predogled kode bo prikazan tukaj.", + "instructionPlaceholder": "Vnesite podroben opis kode, ki jo želite ustvariti.", + "apply": "Uporabiti", + "generate": "Ustvariti", + "overwriteConfirmTitle": "Prepisati obstoječo kodo?", + "applyChanges": "Uporaba sprememb", + "overwriteConfirmMessage": "S tem dejanjem boste prepisali obstoječo kodo. Želite nadaljevati?", + "description": "Generator kode uporablja konfigurirane modele za ustvarjanje visokokakovostne kode na podlagi vaših navodil. Navedite jasna in podrobna navodila." + }, + "generate": { + "template": { + "pythonDebugger": { + "name": "Python razhroščevalnik", + "instruction": "Bot, ki lahko ustvari in razhrošči vašo kodo na podlagi vaših navodil" + }, + "translation": { + "name": "Prevod", + "instruction": "Prevajalec, ki zna prevesti več jezikov" + }, + "professionalAnalyst": { + "name": "Strokovni analitik", + "instruction": "Pridobite vpoglede, prepoznajte tveganja in destilirajte ključne informacije iz dolgih poročil v en sam zapisek" + }, + "excelFormulaExpert": { + "instruction": "Chatbot, ki lahko začetnikom pomaga razumeti, uporabljati in ustvarjati Excelove formule na podlagi uporabniških navodil", + "name": "Strokovnjak za formule v Excelu" + }, + "travelPlanning": { + "instruction": "Pomočnik za načrtovanje potovanj je inteligentno orodje, ki uporabnikom pomaga pri enostavnem načrtovanju potovanj", + "name": "Načrtovanje potovanj" + }, + "SQLSorcerer": { + "name": "Čarovnik SQL", + "instruction": "Pretvorba vsakdanjega jezika v poizvedbe SQL" + }, + "GitGud": { + "instruction": "Ustvarite ustrezne ukaze Git na podlagi dejanj nadzora različic, ki jih je opisal uporabnik", + "name": "Git gud" + }, + "meetingTakeaways": { + "name": "Povzetki s srečanja", + "instruction": "Srečanja destilirajte v jedrnate povzetke, vključno s temami za razpravo, ključnimi ugotovitvami in dejanji" + }, + "writingsPolisher": { + "name": "Pisanje polir", + "instruction": "Uporabite napredne tehnike urejanja besedil za izboljšanje svojega pisanja" + } + }, + "apply": "Uporabiti", + "generate": "Ustvariti", + "resTitle": "Ustvarjen poziv", + "overwriteMessage": "Če uporabite ta poziv, boste preglasili obstoječo konfiguracijo.", + "overwriteTitle": "Preglasiti obstoječo konfiguracijo?", + "instruction": "Navodila", + "loading": "Orkestriranje aplikacije za vas ...", + "title": "Generator pozivov", + "tryIt": "Poskusite", + "description": "Generator pozivov uporablja konfiguriran model za optimizacijo pozivov za višjo kakovost in boljšo strukturo. Prosimo, napišite jasna in podrobna navodila.", + "optional": "Opcijsko", + "press": "Pritisnite", + "dismiss": "Odpusti", + "latest": "Najnovejši", + "version": "Različica", + "versions": "Različice", + "instructionPlaceHolderLine3": "Ton je pretrd, prosim, naredite ga bolj prijaznega.", + "insertContext": "vstavite kontekst", + "optimizationNote": "Opomba o optimizaciji", + "idealOutput": "Idealni izhod", + "to": "do", + "optimizePromptTooltip": "Optimizirajte v generatorju pozivov", + "instructionPlaceHolderLine1": "Naredite izhod bolj jedrnat, ohranite ključne točke.", + "instructionPlaceHolderLine2": "Format izhoda je napačen, prosimo, strogo upoštevajte JSON format.", + "idealOutputPlaceholder": "Opišite svoj idealen format odgovora, dolžino, ton in zahteve glede vsebine...", + "codeGenInstructionPlaceHolderLine": "Bolj kot so povratne informacije podrobne, na primer vrste podatkov vhodov in izhodov ter način obdelave spremenljivk, natančnejše bo generiranje kode.", + "newNoDataLine1": "V levem stolpcu vpišite navodilo in kliknite na Generiraj, da vidite odgovor.", + "instructionPlaceHolderTitle": "Opišite, kako bi želeli izboljšati to navodilo. Na primer:" + }, + "resetConfig": { + "title": "Potrdite ponastavitev?", + "message": "Ponastavitev zavrže spremembe in obnovi zadnjo objavljeno konfiguracijo." + }, + "errorMessage": { + "notSelectModel": "Prosimo, izberite model", + "waitForImgUpload": "Prosimo, počakajte, da se slika naloži", + "waitForResponse": "Počakajte, da se odgovor na prejšnje sporočilo dokonča.", + "waitForBatchResponse": "Počakajte, da se konča odgovor na paketno nalogo.", + "queryRequired": "Besedilo zahteve je obvezno.", + "waitForFileUpload": "Prosimo, počakajte, da se datoteka/datoteke naložijo", + "nameOfKeyRequired": "ime ključa: {{key}} obvezno", + "valueOfVarRequired": "Vrednost {{key}} ne sme biti prazna" + }, + "warningMessage": { + "timeoutExceeded": "Rezultati niso prikazani zaradi časovne omejitve. Prosimo, glejte dnevnike, da zberete popolne rezultate." + }, + "variableTable": { + "action": "Dejanja", + "typeString": "Niz", + "typeSelect": "Izbrati", + "type": "Vrsta vnosa", + "key": "Spremenljivi ključ", + "name": "Ime uporabniškega vnosnega polja" + }, + "varKeyError": { + "canNoBeEmpty": "{{key}} je obvezno", + "tooLong": "{{key}} je predolg. Ne sme biti daljši od 30 znakov", + "notValid": "{{key}} ni veljaven. Lahko vsebuje samo črke, številke in podčrtaje", + "notStartWithNumber": "{{key}} se ne more začeti s številko", + "keyAlreadyExists": "{{key}} že obstaja" + }, + "otherError": { + "promptNoBeEmpty": "Poziv ne more biti prazen", + "historyNoBeEmpty": "Zgodovina pogovorov mora biti nastavljena v pozivu", + "queryNoBeEmpty": "Poizvedba mora biti nastavljena v pozivu" + }, + "variableConfig": { + "file": { + "image": { + "name": "Podoba" + }, + "audio": { + "name": "Avdio" + }, + "document": { + "name": "Dokument" + }, + "video": { + "name": "Video" + }, + "custom": { + "description": "Določite druge vrste datotek.", + "name": "Druge vrste datotek", + "createPlaceholder": " Pripona datoteke, npr. .doc" + }, + "supportFileTypes": "Podporne vrste datotek" + }, + "errorMsg": { + "varNameCanBeRepeat": "Imena spremenljivke ni mogoče ponoviti", + "atLeastOneOption": "Potrebna je vsaj ena možnost", + "optionRepeat": "Ima možnosti ponavljanja", + "labelNameRequired": "Ime nalepke je obvezno" + }, + "content": "Vsebina", + "number": "Številka", + "selectDefaultValue": "Izbira privzete vrednosti", + "maxNumberOfUploads": "Največje število nalaganj", + "localUpload": "Lokalno nalaganje", + "string": "Kratko besedilo", + "paragraph": "Odstavek", + "maxLength": "Največja dolžina", + "defaultValue": "Privzeta vrednost", + "apiBasedVar": "Spremenljivka, ki temelji na API-ju", + "stringTitle": "Možnosti polja z besedilom obrazca", + "varName": "Ime spremenljivke", + "text-input": "Kratko besedilo", + "uploadFileTypes": "Nalaganje vrst datotek", + "noDefaultValue": "Ni privzete vrednosti", + "addOption": "Dodaj možnost", + "select": "Izbrati", + "hide": "Skriti", + "both": "Oba", + "multi-files": "Seznam datotek", + "single-file": "Ena datoteka", + "options": "Možnosti", + "addModalTitle": "Dodajanje vhodnega polja", + "inputPlaceholder": "Prosimo, vnesite", + "fieldType": "Vrsta polja", + "editModalTitle": "Uredi vnosno polje", + "required": "Zahteva", + "labelName": "Ime nalepke", + "json": "JSON koda", + "jsonSchema": "JSON shema", + "optional": "neobvezno", + "checkbox": "Potrdite polje", + "placeholder": "Mestodržec", + "unit": "Enota", + "showAllSettings": "Pokaži vse nastavitve", + "noDefaultSelected": "Ne izberite", + "startSelectedOption": "Začni izbrano možnost", + "startChecked": "Začetek preverjen", + "displayName": "Prikazno ime", + "tooltips": "Opisi orodij", + "placeholderPlaceholder": "Vnesite besedilo za prikaz, ko je polje prazno", + "defaultValuePlaceholder": "Vnesite privzeto vrednost za vnaprejšnjo izpolnitev polja", + "tooltipsPlaceholder": "Vnos uporabnega besedila, ki se prikaže, ko premaknete kazalec miške nad oznako", + "uploadMethod": "Način nalaganja", + "unitPlaceholder": "Prikažite enote za številkami, npr. žetoni", + "description": "Nastavitev za spremenljivko {{varName}}", + "notSet": "Ni nastavljeno, poskusite v predpono vnesti {{input}}", + "maxNumberTip": "Dokument < {{docLimit}}, slika < {{imgLimit}}, avdio < {{audioLimit}}, video < {{videoLimit}}" + }, + "vision": { + "visionSettings": { + "resolution": "Resolucija", + "uploadMethod": "Način nalaganja", + "high": "Visok", + "url": "Spletni naslov", + "localUpload": "Lokalno nalaganje", + "uploadLimit": "Omejitev nalaganja", + "title": "Nastavitve vida", + "both": "Oba", + "low": "Nizek", + "resolutionTooltip": "nizka ločljivost bo modelu omogočila, da prejme različico slike nizke ločljivosti 512 x 512 in predstavi sliko z omejitvijo 65 tokenov. To omogoča API-ju, da vrne hitrejše odgovore in porabi manj vhodnih tokenov za primere uporabe, kjer visoka podrobnost ni potrebna.\n\nvisoka ločljivost bo modelu najprej omogočila, da vidi sliko nizke ločljivosti, nato pa ustvari podrobne izrezke vhodnih slik kot 512px kvadrate glede na velikost vhodne slike. Vsak od podrobnih izrezkov uporablja dvakrat večji proračun tokenov, za skupno 129 tokenov." + }, + "name": "Vid", + "settings": "Nastavitve", + "description": "Omogoči vid bo modelu omogočil, da posname slike in odgovarja na vprašanja o njih.", + "onlySupportVisionModelTip": "Podpira samo modele vida" + }, + "voice": { + "voiceSettings": { + "voice": "Glas", + "language": "Jezik", + "autoPlayDisabled": "Off", + "autoPlayEnabled": "Na", + "resolutionTooltip": "Jezik glasovne podpore za pretvorbo besedila v govor。", + "title": "Glasovne nastavitve", + "autoPlay": "Samodejno predvajanje" + }, + "defaultDisplay": "Privzeti glas", + "name": "Glas", + "settings": "Nastavitve", + "description": "Glasovne nastavitve za pretvorbo besedila v govor" + }, + "openingStatement": { + "openingQuestion": "Uvodna vprašanja", + "title": "Odpiralec pogovorov", + "tooShort": "Za ustvarjanje uvodnih pripomb za pogovor je potrebnih vsaj 20 besed začetnega poziva.", + "noDataPlaceHolder": "Začetek pogovora z uporabnikom lahko AI pomaga vzpostaviti tesnejšo povezavo z njimi v pogovornih aplikacijah.", + "add": "Dodati", + "writeOpener": "Odpiralnik za urejanje", + "placeholder": "Tukaj napišite svoje uvodno sporočilo, lahko uporabljate spremenljivke, poskusite tip {{variable}}.", + "openingQuestionPlaceholder": "Lahko uporabljaš spremenljivke, poskusi vpisati {{variable}}.", + "varTip": "Lahko uporabiš spremenljivke, poskusi tip {{variable}}", + "notIncludeKey": "Začetni poziv ne vključuje spremenljivke: {{key}}. Prosimo, dodajte jo v začetni poziv." + }, + "modelConfig": { + "modeType": { + "chat": "Chat", + "completion": "Dokončati" + }, + "title": "Model in parametri", + "model": "Model", + "setTone": "Nastavitev tona odzivov" + }, + "inputs": { + "queryPlaceholder": "Prosimo, vnesite besedilo zahteve.", + "title": "Odpravljanje napak in predogled", + "chatVarTip": "Izpolnite vrednost spremenljivke, ki bo samodejno nadomeščena v pozivni besedi vsakič, ko se začne nova seja", + "queryTitle": "Vsebina poizvedbe", + "userInputField": "Uporabniško polje za vnos", + "run": "TEČI", + "noPrompt": "Poskusite napisati nekaj poziva v vnos pred pozivom", + "previewTitle": "Takojšen predogled", + "noVar": "Izpolnite vrednost spremenljivke, ki bo samodejno nadomeščena v pozivni besedi vsakič, ko se začne nova seja.", + "completionVarTip": "Izpolnite vrednost spremenljivke, ki bo samodejno nadomeščena v pozivnih besedah vsakič, ko boste oddali vprašanje." + }, + "datasetConfig": { + "retrieveOneWay": { + "title": "Pridobivanje N-na-1", + "description": "Na podlagi namena uporabnika in opisov znanja agent avtonomno izbere najboljše znanje za poizvedovanje. Najboljše za aplikacije z izrazitim, omejenim znanjem." + }, + "retrieveMultiWay": { + "title": "Pridobivanje več poti", + "description": "Na podlagi namena uporabnika poizvedbe v celotnem znanju, pridobijo ustrezno besedilo iz več virov in izberejo najboljše rezultate, ki se ujemajo z uporabniško poizvedbo po ponovnem razvrščanju." + }, + "params": "Params", + "embeddingModelRequired": "Potreben je konfiguriran model vdelave", + "settingTitle": "Nastavitve pridobivanja", + "rerankModelRequired": "Potreben je konfiguriran model ponovnega razvrščanja", + "knowledgeTip": "Kliknite gumb \" \" za dodajanje znanja", + "score_threshold": "Prag ocenjevanja", + "score_thresholdTip": "Uporablja se za nastavitev praga podobnosti za filtriranje kosov.", + "retrieveChangeTip": "Spreminjanje kazalnega načina in načina pridobivanja lahko vpliva na aplikacije, povezane s tem znanjem.", + "top_k": "Vrh K", + "top_kTip": "Uporablja se za filtriranje kosov, ki so najbolj podobni vprašanjem uporabnikov. Sistem bo tudi dinamično prilagajal vrednost Top K, glede na max_tokens izbranega modela." + }, + "assistantType": { + "chatAssistant": { + "name": "Osnovni pomočnik", + "description": "Ustvarjanje pomočnika za klepet z uporabo velikega jezikovnega modela" + }, + "agentAssistant": { + "name": "Pomočnik agenta", + "description": "Zgradite inteligentnega agenta, ki lahko samostojno izbere orodja za dokončanje nalog" + }, + "name": "Vrsta pomočnika" + }, + "agent": { + "agentModeType": { + "functionCall": "Klicanje funkcij", + "ReACT": "Reagirajo" + }, + "setting": { + "maximumIterations": { + "description": "Omejitev števila ponovitev, ki jih lahko izvede pomočnik agenta", + "name": "Največje število ponovitev" + }, + "description": "Nastavitve pomočnika za agente omogočajo nastavitev načina agenta in naprednih funkcij, kot so vgrajeni pozivi, ki so na voljo samo v vrsti agenta.", + "name": "Nastavitve agenta" + }, + "tools": { + "enabled": "Omogočeno", + "name": "Orodja", + "description": "Uporaba orodij lahko razširi zmogljivosti LLM, kot je iskanje po internetu ali izvajanje znanstvenih izračunov" + }, + "agentMode": "Način agenta", + "promptPlaceholder": "Tukaj napišite svoj poziv", + "agentModeDes": "Nastavitev vrste načina sklepanja za agenta", + "firstPrompt": "Prvi poziv", + "nextIteration": "Naslednja ponovitev", + "buildInPrompt": "Poziv za vgradnjo" + }, + "chatSubTitle": "Navodila", + "variableTitle": "Spremenljivke", + "completionSubTitle": "Poziv za predpono", + "debugAsSingleModel": "Odpravljanje napak kot en model", + "noResult": "Tukaj bo prikazan izhod.", + "debugAsMultipleModel": "Odpravljanje napak kot več modelov", + "formattingChangedText": "Spreminjanje oblikovanja bo ponastavilo območje za odpravljanje napak, ste prepričani?", + "autoAddVar": "Nedoločene spremenljivke, na katere se sklicuje vnaprejšnji poziv, ali jih želite dodati v obrazec za vnos uporabnika?", + "formattingChangedTitle": "Spremenjeno oblikovanje", + "duplicateModel": "Dvojnik", + "publishAs": "Objavi kot", + "result": "Izhodno besedilo", + "variableTip": "Uporabniki izpolnijo spremenljivke v obrazcu in samodejno zamenjajo spremenljivke v pozivu.", + "promptTip": "Pozivi usmerjajo odgovore umetne inteligence z navodili in omejitvami. Vstavite spremenljivke, kot je {{input}}. Ta poziv ne bo viden uporabnikom.", + "notSetVar": "Spremenljivke uporabnikom omogočajo, da pri izpolnjevanju obrazcev vnesejo začetne besede ali uvodne opombe. Poskusite vnesti \"{{input}}\" v začetne besede." +} diff --git a/web/i18n/sl-SI/app-debug.ts b/web/i18n/sl-SI/app-debug.ts deleted file mode 100644 index efac0efdbf..0000000000 --- a/web/i18n/sl-SI/app-debug.ts +++ /dev/null @@ -1,586 +0,0 @@ -const translation = { - pageTitle: { - line1: 'PROMPT', - line2: 'Inženiring', - }, - orchestrate: 'Orkestriraj', - promptMode: { - simple: 'Preklopi na strokovni način, da urejaš celoten PROMPT', - advanced: 'Strokovni način', - switchBack: 'Preklopi nazaj', - advancedWarning: { - title: 'Preklopil si na strokovni način. Ko spremeniš PROMPT, ne moreš več preklopiti nazaj v osnovni način.', - description: 'V strokovnem načinu lahko urejaš celoten PROMPT.', - learnMore: 'Preberi več', - ok: 'V redu', - }, - operation: { - addMessage: 'Dodaj sporočilo', - }, - contextMissing: 'Manjka komponenta konteksta, zato učinkovitost PROMPT-a morda ne bo najboljša.', - }, - operation: { - applyConfig: 'Objavi', - resetConfig: 'Ponastavi', - debugConfig: 'Odpravljanje napak', - addFeature: 'Dodaj funkcionalnost', - automatic: 'Generiraj', - stopResponding: 'Prenehaj odgovarjati', - agree: 'všeč', - disagree: 'ni všeč', - cancelAgree: 'Prekliči všeček', - cancelDisagree: 'Prekliči nevšečnost', - userAction: 'Uporabnik ', - }, - notSetAPIKey: { - title: 'Ključ ponudnika LLM ni nastavljen', - trailFinished: 'Preizkus končan', - description: 'Ključ ponudnika LLM ni nastavljen. Pred odpravljanjem napak je treba nastaviti ključ.', - settingBtn: 'Pojdi v nastavitve', - }, - trailUseGPT4Info: { - title: 'GPT-4 trenutno ni podprt', - description: 'Za uporabo GPT-4 je treba nastaviti API ključ.', - }, - feature: { - groupChat: { - title: 'Izboljšanje klepeta', - description: 'Dodajanje prednastavitev klepeta lahko izboljša uporabniško izkušnjo.', - }, - groupExperience: { - title: 'Izboljšanje izkušnje', - }, - conversationOpener: { - title: 'Začetek pogovora', - description: 'V klepetu AI običajno začne pogovor z uporabnikom z dobrodošlico.', - }, - suggestedQuestionsAfterAnswer: { - title: 'Nadaljnja vprašanja', - description: 'Nastavitev predlogov za naslednja vprašanja lahko uporabnikom izboljša klepet.', - resDes: '3 predlogi za naslednje vprašanje uporabnika.', - tryToAsk: 'Poskusi vprašati', - }, - moreLikeThis: { - title: 'Več takšnih', - description: 'Ustvari več besedil naenkrat, nato pa jih urejaj in nadaljuj z ustvarjanjem.', - generateNumTip: 'Število generacij vsakič', - tip: 'Uporaba te funkcije povzroča dodatno porabo žetonov.', - }, - speechToText: { - title: 'Govor v besedilo', - description: 'Ko je omogočeno, lahko uporabljaš glasovni vnos.', - resDes: 'Glasovni vnos je omogočen.', - }, - textToSpeech: { - title: 'Besedilo v govor', - description: 'Ko je omogočeno, lahko besedilo pretvoriš v govor.', - resDes: 'Pretvorba besedila v zvok je omogočena.', - }, - citation: { - title: 'Citati in pripisovanja', - description: 'Ko je omogočeno, prikaži izvorni dokument in pripisani del generirane vsebine.', - resDes: 'Citati in pripisovanja so omogočeni.', - }, - annotation: { - title: 'Odgovor z opombami', - description: 'Ročno lahko dodate visokokakovostne odgovore v predpomnilnik za prednostno ujemanje s podobnimi vprašanji uporabnikov.', - resDes: 'Odgovor z opombami je omogočen.', - scoreThreshold: { - title: 'Prag ujemanja', - description: 'Uporabljeno za nastavitev praga podobnosti za odgovor z opombami.', - easyMatch: 'Lahko ujemanje', - accurateMatch: 'Natančno ujemanje', - }, - matchVariable: { - title: 'Spremenljivka za ujemanje', - choosePlaceholder: 'Izberi spremenljivko za ujemanje', - }, - cacheManagement: 'Upravljanje opomb', - cached: 'Z opombo', - remove: 'Odstrani', - removeConfirm: 'Izbrisati to opombo?', - add: 'Dodaj opombo', - edit: 'Uredi opombo', - }, - dataSet: { - title: 'Kontekst', - noData: 'Uvozi znanje kot kontekst', - selectTitle: 'Izberi referenčno znanje', - selected: 'Izbrano znanje', - noDataSet: 'Znanje ni bilo najdeno', - toCreate: 'Pojdi na ustvarjanje', - notSupportSelectMulti: 'Trenutno je podprto le eno znanje', - queryVariable: { - title: 'Spremenljivka poizvedbe', - tip: 'Ta spremenljivka bo uporabljena kot vnos poizvedbe za pridobitev kontekstnih informacij.', - choosePlaceholder: 'Izberi spremenljivko poizvedbe', - noVar: 'Ni spremenljivk', - noVarTip: 'ustvari spremenljivko v razdelku Spremenljivke', - unableToQueryDataSet: 'Neuspešna poizvedba po znanju', - unableToQueryDataSetTip: 'Neuspešna poizvedba po znanju, izberi spremenljivko poizvedbe v razdelku kontekst.', - ok: 'V redu', - contextVarNotEmpty: 'Spremenljivka poizvedbe ne sme biti prazna', - deleteContextVarTitle: 'Izbrisati spremenljivko “{{varName}}”?', - deleteContextVarTip: 'Ta spremenljivka je nastavljena kot spremenljivka za poizvedbo po kontekstu. Če jo odstraniš, bo to vplivalo na uporabo znanja. Če jo želiš izbrisati, ponovno izberi v razdelku kontekst.', - }, - }, - tools: { - title: 'Orodja', - tips: 'Orodja nudijo standardiziran način klicanja API-jev, pri čemer se uporabniški vnos ali spremenljivke uporabijo kot parametri za poizvedovanje zunanjih podatkov.', - toolsInUse: '{{count}} orodij v uporabi', - modal: { - title: 'Orodje', - toolType: { - title: 'Tip orodja', - placeholder: 'Izberi tip orodja', - }, - name: { - title: 'Ime', - placeholder: 'Vnesi ime', - }, - variableName: { - title: 'Ime spremenljivke', - placeholder: 'Vnesi ime spremenljivke', - }, - }, - }, - conversationHistory: { - title: 'Zgodovina pogovorov', - description: 'Nastavi predpone imen za vloge v pogovoru', - tip: 'Zgodovina pogovorov ni omogočena. Dodaj v zgornji PROMPT.', - learnMore: 'Preberi več', - editModal: { - title: 'Uredi imena vlog v pogovoru', - userPrefix: 'Predpona uporabnika', - assistantPrefix: 'Predpona pomočnika', - }, - }, - toolbox: { - title: 'ORODJA', - }, - moderation: { - title: 'Moderiranje vsebine', - description: 'Zagotovi varno izhodno vsebino s pomočjo API-ja za moderiranje ali vzdrževanja seznama občutljivih besed.', - allEnabled: 'VSEBINA VNOSA/IZHODA omogočena', - inputEnabled: 'VSEBINA VNOSA omogočena', - outputEnabled: 'VSEBINA IZHODA omogočena', - modal: { - title: 'Nastavitve moderiranja vsebine', - provider: { - title: 'Ponudnik', - openai: 'OpenAI Moderiranje', - openaiTip: { - prefix: 'OpenAI Moderiranje zahteva nastavljen API ključ pri ', - suffix: '.', - }, - keywords: 'Ključne besede', - }, - keywords: { - tip: 'Vsaka beseda na lastni vrstici, ločena z vrsticami. Največ 100 znakov na vrstico.', - placeholder: 'Vsaka beseda na lastni vrstici, ločena z vrsticami', - line: 'Vrstica', - }, - content: { - input: 'Moderiraj VSEBINO VNOSA', - output: 'Moderiraj VSEBINO IZHODA', - preset: 'Prednastavljeni odgovori', - errorMessage: 'Prednastavljeni odgovori ne smejo biti prazni', - condition: 'Zmerna vsebina INPUT in OUTPUT je omogočena vsaj ena', - supportMarkdown: 'Podprt za Markdown', - fromApi: 'Prednastavljene odgovore vrne API', - placeholder: 'Prednastavljena vsebina odgovorov tukaj', - }, - openaiNotConfig: { - after: '', - before: 'Za moderiranje OpenAI potrebujete ključ OpenAI API, konfiguriran v', - }, - }, - contentEnableLabel: 'Moderiranje vsebine omogočeno', - }, - debug: { - }, - agent: { - message: { - }, - }, - history: { - }, - prompt: { - }, - message: { - }, - theme: { - themes: { - }, - modal: { - primaryColor: { - }, - textColor: { - }, - }, - }, - fileUpload: { - title: 'Nalaganje datoteke', - description: 'Pogovorno polje omogoča nalaganje slik, dokumentov in drugih datotek.', - supportedTypes: 'Podprte vrste datotek', - numberLimit: 'Največje število nalaganj', - modalTitle: 'Nastavitve nalaganja datoteke', - }, - imageUpload: { - title: 'Nalaganje slike', - description: 'Omogoči nalaganje slik.', - supportedTypes: 'Podprte vrste datotek', - numberLimit: 'Največje število nalaganj', - modalTitle: 'Nastavitve nalaganja slike', - }, - bar: { - empty: 'Omogoči funkcije za izboljšanje uporabniške izkušnje spletne aplikacije', - enableText: 'Funkcije omogočene', - manage: 'Upravljaj', - }, - documentUpload: { - title: 'Dokument', - description: 'Omogočitev dokumenta bo omogočila modelu, da sprejme dokumente in odgovori na vprašanja o njih.', - }, - audioUpload: { - title: 'Zvok', - description: 'Omogočitev zvoka bo omogočila modelu, da obdela zvočne datoteke za prepisovanje in analizo.', - }, - }, - codegen: { - instruction: 'Navodila', - title: 'Generator kode', - resTitle: 'Ustvarjena koda', - loading: 'Generiranje kode ...', - generatedCodeTitle: 'Ustvarjena koda', - noDataLine1: 'Na levi opišite primer uporabe,', - noDataLine2: 'Predogled kode bo prikazan tukaj.', - instructionPlaceholder: 'Vnesite podroben opis kode, ki jo želite ustvariti.', - apply: 'Uporabiti', - generate: 'Ustvariti', - overwriteConfirmTitle: 'Prepisati obstoječo kodo?', - applyChanges: 'Uporaba sprememb', - overwriteConfirmMessage: 'S tem dejanjem boste prepisali obstoječo kodo. Želite nadaljevati?', - description: 'Generator kode uporablja konfigurirane modele za ustvarjanje visokokakovostne kode na podlagi vaših navodil. Navedite jasna in podrobna navodila.', - }, - generate: { - template: { - pythonDebugger: { - name: 'Python razhroščevalnik', - instruction: 'Bot, ki lahko ustvari in razhrošči vašo kodo na podlagi vaših navodil', - }, - translation: { - name: 'Prevod', - instruction: 'Prevajalec, ki zna prevesti več jezikov', - }, - professionalAnalyst: { - name: 'Strokovni analitik', - instruction: 'Pridobite vpoglede, prepoznajte tveganja in destilirajte ključne informacije iz dolgih poročil v en sam zapisek', - }, - excelFormulaExpert: { - instruction: 'Chatbot, ki lahko začetnikom pomaga razumeti, uporabljati in ustvarjati Excelove formule na podlagi uporabniških navodil', - name: 'Strokovnjak za formule v Excelu', - }, - travelPlanning: { - instruction: 'Pomočnik za načrtovanje potovanj je inteligentno orodje, ki uporabnikom pomaga pri enostavnem načrtovanju potovanj', - name: 'Načrtovanje potovanj', - }, - SQLSorcerer: { - name: 'Čarovnik SQL', - instruction: 'Pretvorba vsakdanjega jezika v poizvedbe SQL', - }, - GitGud: { - instruction: 'Ustvarite ustrezne ukaze Git na podlagi dejanj nadzora različic, ki jih je opisal uporabnik', - name: 'Git gud', - }, - meetingTakeaways: { - name: 'Povzetki s srečanja', - instruction: 'Srečanja destilirajte v jedrnate povzetke, vključno s temami za razpravo, ključnimi ugotovitvami in dejanji', - }, - writingsPolisher: { - name: 'Pisanje polir', - instruction: 'Uporabite napredne tehnike urejanja besedil za izboljšanje svojega pisanja', - }, - }, - apply: 'Uporabiti', - generate: 'Ustvariti', - resTitle: 'Ustvarjen poziv', - overwriteMessage: 'Če uporabite ta poziv, boste preglasili obstoječo konfiguracijo.', - overwriteTitle: 'Preglasiti obstoječo konfiguracijo?', - instruction: 'Navodila', - loading: 'Orkestriranje aplikacije za vas ...', - title: 'Generator pozivov', - tryIt: 'Poskusite', - description: 'Generator pozivov uporablja konfiguriran model za optimizacijo pozivov za višjo kakovost in boljšo strukturo. Prosimo, napišite jasna in podrobna navodila.', - optional: 'Opcijsko', - press: 'Pritisnite', - dismiss: 'Odpusti', - latest: 'Najnovejši', - version: 'Različica', - versions: 'Različice', - instructionPlaceHolderLine3: 'Ton je pretrd, prosim, naredite ga bolj prijaznega.', - insertContext: 'vstavite kontekst', - optimizationNote: 'Opomba o optimizaciji', - idealOutput: 'Idealni izhod', - to: 'do', - optimizePromptTooltip: 'Optimizirajte v generatorju pozivov', - instructionPlaceHolderLine1: 'Naredite izhod bolj jedrnat, ohranite ključne točke.', - instructionPlaceHolderLine2: 'Format izhoda je napačen, prosimo, strogo upoštevajte JSON format.', - idealOutputPlaceholder: 'Opišite svoj idealen format odgovora, dolžino, ton in zahteve glede vsebine...', - codeGenInstructionPlaceHolderLine: 'Bolj kot so povratne informacije podrobne, na primer vrste podatkov vhodov in izhodov ter način obdelave spremenljivk, natančnejše bo generiranje kode.', - newNoDataLine1: 'V levem stolpcu vpišite navodilo in kliknite na Generiraj, da vidite odgovor.', - instructionPlaceHolderTitle: 'Opišite, kako bi želeli izboljšati to navodilo. Na primer:', - }, - resetConfig: { - title: 'Potrdite ponastavitev?', - message: 'Ponastavitev zavrže spremembe in obnovi zadnjo objavljeno konfiguracijo.', - }, - errorMessage: { - notSelectModel: 'Prosimo, izberite model', - waitForImgUpload: 'Prosimo, počakajte, da se slika naloži', - waitForResponse: 'Počakajte, da se odgovor na prejšnje sporočilo dokonča.', - waitForBatchResponse: 'Počakajte, da se konča odgovor na paketno nalogo.', - queryRequired: 'Besedilo zahteve je obvezno.', - waitForFileUpload: 'Prosimo, počakajte, da se datoteka/datoteke naložijo', - nameOfKeyRequired: 'ime ključa: {{key}} obvezno', - valueOfVarRequired: 'Vrednost {{key}} ne sme biti prazna', - }, - warningMessage: { - timeoutExceeded: 'Rezultati niso prikazani zaradi časovne omejitve. Prosimo, glejte dnevnike, da zberete popolne rezultate.', - }, - variableTable: { - action: 'Dejanja', - typeString: 'Niz', - typeSelect: 'Izbrati', - type: 'Vrsta vnosa', - key: 'Spremenljivi ključ', - name: 'Ime uporabniškega vnosnega polja', - }, - varKeyError: { - canNoBeEmpty: '{{key}} je obvezno', - tooLong: '{{key}} je predolg. Ne sme biti daljši od 30 znakov', - notValid: '{{key}} ni veljaven. Lahko vsebuje samo črke, številke in podčrtaje', - notStartWithNumber: '{{key}} se ne more začeti s številko', - keyAlreadyExists: '{{key}} že obstaja', - }, - otherError: { - promptNoBeEmpty: 'Poziv ne more biti prazen', - historyNoBeEmpty: 'Zgodovina pogovorov mora biti nastavljena v pozivu', - queryNoBeEmpty: 'Poizvedba mora biti nastavljena v pozivu', - }, - variableConfig: { - 'file': { - image: { - name: 'Podoba', - }, - audio: { - name: 'Avdio', - }, - document: { - name: 'Dokument', - }, - video: { - name: 'Video', - }, - custom: { - description: 'Določite druge vrste datotek.', - name: 'Druge vrste datotek', - createPlaceholder: ' Pripona datoteke, npr. .doc', - }, - supportFileTypes: 'Podporne vrste datotek', - }, - 'errorMsg': { - varNameCanBeRepeat: 'Imena spremenljivke ni mogoče ponoviti', - atLeastOneOption: 'Potrebna je vsaj ena možnost', - optionRepeat: 'Ima možnosti ponavljanja', - labelNameRequired: 'Ime nalepke je obvezno', - }, - 'content': 'Vsebina', - 'number': 'Številka', - 'selectDefaultValue': 'Izbira privzete vrednosti', - 'maxNumberOfUploads': 'Največje število nalaganj', - 'localUpload': 'Lokalno nalaganje', - 'string': 'Kratko besedilo', - 'paragraph': 'Odstavek', - 'maxLength': 'Največja dolžina', - 'defaultValue': 'Privzeta vrednost', - 'apiBasedVar': 'Spremenljivka, ki temelji na API-ju', - 'stringTitle': 'Možnosti polja z besedilom obrazca', - 'varName': 'Ime spremenljivke', - 'text-input': 'Kratko besedilo', - 'uploadFileTypes': 'Nalaganje vrst datotek', - 'noDefaultValue': 'Ni privzete vrednosti', - 'addOption': 'Dodaj možnost', - 'select': 'Izbrati', - 'hide': 'Skriti', - 'both': 'Oba', - 'multi-files': 'Seznam datotek', - 'single-file': 'Ena datoteka', - 'options': 'Možnosti', - 'addModalTitle': 'Dodajanje vhodnega polja', - 'inputPlaceholder': 'Prosimo, vnesite', - 'fieldType': 'Vrsta polja', - 'editModalTitle': 'Uredi vnosno polje', - 'required': 'Zahteva', - 'labelName': 'Ime nalepke', - 'json': 'JSON koda', - 'jsonSchema': 'JSON shema', - 'optional': 'neobvezno', - 'checkbox': 'Potrdite polje', - 'placeholder': 'Mestodržec', - 'unit': 'Enota', - 'showAllSettings': 'Pokaži vse nastavitve', - 'noDefaultSelected': 'Ne izberite', - 'startSelectedOption': 'Začni izbrano možnost', - 'startChecked': 'Začetek preverjen', - 'displayName': 'Prikazno ime', - 'tooltips': 'Opisi orodij', - 'placeholderPlaceholder': 'Vnesite besedilo za prikaz, ko je polje prazno', - 'defaultValuePlaceholder': 'Vnesite privzeto vrednost za vnaprejšnjo izpolnitev polja', - 'tooltipsPlaceholder': 'Vnos uporabnega besedila, ki se prikaže, ko premaknete kazalec miške nad oznako', - 'uploadMethod': 'Način nalaganja', - 'unitPlaceholder': 'Prikažite enote za številkami, npr. žetoni', - 'description': 'Nastavitev za spremenljivko {{varName}}', - 'notSet': 'Ni nastavljeno, poskusite v predpono vnesti {{input}}', - 'maxNumberTip': 'Dokument < {{docLimit}}, slika < {{imgLimit}}, avdio < {{audioLimit}}, video < {{videoLimit}}', - }, - vision: { - visionSettings: { - resolution: 'Resolucija', - uploadMethod: 'Način nalaganja', - high: 'Visok', - url: 'Spletni naslov', - localUpload: 'Lokalno nalaganje', - uploadLimit: 'Omejitev nalaganja', - title: 'Nastavitve vida', - both: 'Oba', - low: 'Nizek', - resolutionTooltip: 'nizka ločljivost bo modelu omogočila, da prejme različico slike nizke ločljivosti 512 x 512 in predstavi sliko z omejitvijo 65 tokenov. To omogoča API-ju, da vrne hitrejše odgovore in porabi manj vhodnih tokenov za primere uporabe, kjer visoka podrobnost ni potrebna.\n\nvisoka ločljivost bo modelu najprej omogočila, da vidi sliko nizke ločljivosti, nato pa ustvari podrobne izrezke vhodnih slik kot 512px kvadrate glede na velikost vhodne slike. Vsak od podrobnih izrezkov uporablja dvakrat večji proračun tokenov, za skupno 129 tokenov.', - }, - name: 'Vid', - settings: 'Nastavitve', - description: 'Omogoči vid bo modelu omogočil, da posname slike in odgovarja na vprašanja o njih.', - onlySupportVisionModelTip: 'Podpira samo modele vida', - }, - voice: { - voiceSettings: { - voice: 'Glas', - language: 'Jezik', - autoPlayDisabled: 'Off', - autoPlayEnabled: 'Na', - resolutionTooltip: 'Jezik glasovne podpore za pretvorbo besedila v govor。', - title: 'Glasovne nastavitve', - autoPlay: 'Samodejno predvajanje', - }, - defaultDisplay: 'Privzeti glas', - name: 'Glas', - settings: 'Nastavitve', - description: 'Glasovne nastavitve za pretvorbo besedila v govor', - }, - openingStatement: { - openingQuestion: 'Uvodna vprašanja', - title: 'Odpiralec pogovorov', - tooShort: 'Za ustvarjanje uvodnih pripomb za pogovor je potrebnih vsaj 20 besed začetnega poziva.', - noDataPlaceHolder: 'Začetek pogovora z uporabnikom lahko AI pomaga vzpostaviti tesnejšo povezavo z njimi v pogovornih aplikacijah.', - add: 'Dodati', - writeOpener: 'Odpiralnik za urejanje', - placeholder: 'Tukaj napišite svoje uvodno sporočilo, lahko uporabljate spremenljivke, poskusite tip {{variable}}.', - openingQuestionPlaceholder: 'Lahko uporabljaš spremenljivke, poskusi vpisati {{variable}}.', - varTip: 'Lahko uporabiš spremenljivke, poskusi tip {{variable}}', - notIncludeKey: 'Začetni poziv ne vključuje spremenljivke: {{key}}. Prosimo, dodajte jo v začetni poziv.', - }, - modelConfig: { - modeType: { - chat: 'Chat', - completion: 'Dokončati', - }, - title: 'Model in parametri', - model: 'Model', - setTone: 'Nastavitev tona odzivov', - }, - inputs: { - queryPlaceholder: 'Prosimo, vnesite besedilo zahteve.', - title: 'Odpravljanje napak in predogled', - chatVarTip: 'Izpolnite vrednost spremenljivke, ki bo samodejno nadomeščena v pozivni besedi vsakič, ko se začne nova seja', - queryTitle: 'Vsebina poizvedbe', - userInputField: 'Uporabniško polje za vnos', - run: 'TEČI', - noPrompt: 'Poskusite napisati nekaj poziva v vnos pred pozivom', - previewTitle: 'Takojšen predogled', - noVar: 'Izpolnite vrednost spremenljivke, ki bo samodejno nadomeščena v pozivni besedi vsakič, ko se začne nova seja.', - completionVarTip: 'Izpolnite vrednost spremenljivke, ki bo samodejno nadomeščena v pozivnih besedah vsakič, ko boste oddali vprašanje.', - }, - datasetConfig: { - retrieveOneWay: { - title: 'Pridobivanje N-na-1', - description: 'Na podlagi namena uporabnika in opisov znanja agent avtonomno izbere najboljše znanje za poizvedovanje. Najboljše za aplikacije z izrazitim, omejenim znanjem.', - }, - retrieveMultiWay: { - title: 'Pridobivanje več poti', - description: 'Na podlagi namena uporabnika poizvedbe v celotnem znanju, pridobijo ustrezno besedilo iz več virov in izberejo najboljše rezultate, ki se ujemajo z uporabniško poizvedbo po ponovnem razvrščanju.', - }, - params: 'Params', - embeddingModelRequired: 'Potreben je konfiguriran model vdelave', - settingTitle: 'Nastavitve pridobivanja', - rerankModelRequired: 'Potreben je konfiguriran model ponovnega razvrščanja', - knowledgeTip: 'Kliknite gumb " " za dodajanje znanja', - score_threshold: 'Prag ocenjevanja', - score_thresholdTip: 'Uporablja se za nastavitev praga podobnosti za filtriranje kosov.', - retrieveChangeTip: 'Spreminjanje kazalnega načina in načina pridobivanja lahko vpliva na aplikacije, povezane s tem znanjem.', - top_k: 'Vrh K', - top_kTip: 'Uporablja se za filtriranje kosov, ki so najbolj podobni vprašanjem uporabnikov. Sistem bo tudi dinamično prilagajal vrednost Top K, glede na max_tokens izbranega modela.', - }, - assistantType: { - chatAssistant: { - name: 'Osnovni pomočnik', - description: 'Ustvarjanje pomočnika za klepet z uporabo velikega jezikovnega modela', - }, - agentAssistant: { - name: 'Pomočnik agenta', - description: 'Zgradite inteligentnega agenta, ki lahko samostojno izbere orodja za dokončanje nalog', - }, - name: 'Vrsta pomočnika', - }, - agent: { - agentModeType: { - functionCall: 'Klicanje funkcij', - ReACT: 'Reagirajo', - }, - setting: { - maximumIterations: { - description: 'Omejitev števila ponovitev, ki jih lahko izvede pomočnik agenta', - name: 'Največje število ponovitev', - }, - description: 'Nastavitve pomočnika za agente omogočajo nastavitev načina agenta in naprednih funkcij, kot so vgrajeni pozivi, ki so na voljo samo v vrsti agenta.', - name: 'Nastavitve agenta', - }, - tools: { - enabled: 'Omogočeno', - name: 'Orodja', - description: 'Uporaba orodij lahko razširi zmogljivosti LLM, kot je iskanje po internetu ali izvajanje znanstvenih izračunov', - }, - agentMode: 'Način agenta', - promptPlaceholder: 'Tukaj napišite svoj poziv', - agentModeDes: 'Nastavitev vrste načina sklepanja za agenta', - firstPrompt: 'Prvi poziv', - nextIteration: 'Naslednja ponovitev', - buildInPrompt: 'Poziv za vgradnjo', - }, - chatSubTitle: 'Navodila', - variableTitle: 'Spremenljivke', - completionSubTitle: 'Poziv za predpono', - debugAsSingleModel: 'Odpravljanje napak kot en model', - noResult: 'Tukaj bo prikazan izhod.', - debugAsMultipleModel: 'Odpravljanje napak kot več modelov', - formattingChangedText: 'Spreminjanje oblikovanja bo ponastavilo območje za odpravljanje napak, ste prepričani?', - autoAddVar: 'Nedoločene spremenljivke, na katere se sklicuje vnaprejšnji poziv, ali jih želite dodati v obrazec za vnos uporabnika?', - formattingChangedTitle: 'Spremenjeno oblikovanje', - duplicateModel: 'Dvojnik', - publishAs: 'Objavi kot', - result: 'Izhodno besedilo', - variableTip: 'Uporabniki izpolnijo spremenljivke v obrazcu in samodejno zamenjajo spremenljivke v pozivu.', - promptTip: 'Pozivi usmerjajo odgovore umetne inteligence z navodili in omejitvami. Vstavite spremenljivke, kot je {{input}}. Ta poziv ne bo viden uporabnikom.', - notSetVar: 'Spremenljivke uporabnikom omogočajo, da pri izpolnjevanju obrazcev vnesejo začetne besede ali uvodne opombe. Poskusite vnesti "{{input}}" v začetne besede.', -} - -export default translation diff --git a/web/i18n/sl-SI/app-log.json b/web/i18n/sl-SI/app-log.json new file mode 100644 index 0000000000..417a8fe1eb --- /dev/null +++ b/web/i18n/sl-SI/app-log.json @@ -0,0 +1,110 @@ +{ + "title": "Dnevniki", + "description": "Dnevniki beležijo stanje delovanja aplikacije, vključno z vnosi uporabnikov in odgovori umetne inteligence.", + "dateTimeFormat": "DD.MM.YYYY hh:mm:ss A", + "table": { + "header": { + "updatedTime": "Čas posodobitve", + "time": "Čas ustvarjanja", + "endUser": "Končni uporabnik ali račun", + "input": "Vnos", + "output": "Izhod", + "summary": "Naslov", + "messageCount": "Število sporočil", + "userRate": "Ocena uporabnika", + "adminRate": "Ocena operaterja", + "startTime": "ZAČETNI ČAS", + "status": "STATUS", + "runtime": "ČAS DELOVANJA", + "tokens": "ŽETONI", + "user": "Končni uporabnik ali račun", + "version": "VERZIJA", + "triggered_from": "SPROŽENO Z" + }, + "pagination": { + "previous": "Prejšnja", + "next": "Naslednja" + }, + "empty": { + "noChat": "Še ni pogovora", + "noOutput": "Ni izhoda", + "element": { + "title": "Je kdo tam?", + "content": "Opazujte in označite interakcije med končnimi uporabniki in aplikacijami umetne inteligence, da stalno izboljšujete natančnost AI. Lahko delite ali preizkusite spletno aplikacijo sami, nato pa se vrnete na to stran." + } + } + }, + "detail": { + "time": "Čas", + "conversationId": "ID pogovora", + "promptTemplate": "Predloga PROMPT-a", + "promptTemplateBeforeChat": "Predloga PROMPT-a pred pogovorom · Kot sistemsko sporočilo", + "annotationTip": "Izboljšave, ki jih je označil {{user}}", + "timeConsuming": "Porabljen čas", + "second": "s", + "tokenCost": "Porabljeni žetoni", + "loading": "nalaganje", + "operation": { + "like": "všeč", + "dislike": "ni všeč", + "addAnnotation": "Dodaj izboljšavo", + "editAnnotation": "Uredi izboljšavo", + "annotationPlaceholder": "Vnesite pričakovan odgovor, ki ga želite, da AI odgovori, kar se lahko uporabi za izboljšanje modela in kakovosti generiranja besedil v prihodnje." + }, + "variables": "Spremenljivke", + "uploadImages": "Naložene slike", + "modelParams": "Parametri modela" + }, + "filter": { + "period": { + "today": "Danes", + "last7days": "Zadnjih 7 dni", + "last4weeks": "Zadnje 4 tedne", + "last3months": "Zadnji 3 meseci", + "last12months": "Zadnjih 12 mesecev", + "monthToDate": "Mesec do danes", + "quarterToDate": "Četrtletje do danes", + "yearToDate": "Leto do danes", + "allTime": "Vse obdobje", + "last30days": "Zadnjih 30 dni", + "custom": "Po meri" + }, + "annotation": { + "all": "Vse", + "annotated": "Označene izboljšave ({{count}} elementov)", + "not_annotated": "Neoznačene" + }, + "sortBy": "Razvrsti po:", + "descending": "padajoče", + "ascending": "naraščajoče" + }, + "workflowTitle": "Dnevniki poteka dela", + "workflowSubtitle": "Dnevnik beleži delovanje avtomatizacije.", + "runDetail": { + "title": "Dnevnik pogovora", + "workflowTitle": "Podrobnosti dnevnika", + "fileListDetail": "Podrobnosti", + "fileListLabel": "Podrobnosti o datoteki", + "testWithParams": "Preizkus s parametri" + }, + "promptLog": "Dnevnik PROMPT-ov", + "agentLog": "Dnevnik pomočnika", + "viewLog": "Ogled dnevnika", + "agentLogDetail": { + "agentMode": "Način pomočnika", + "toolUsed": "Uporabljeno orodje", + "iterations": "Iteracije", + "iteration": "Iteracija", + "finalProcessing": "Končna obdelava" + }, + "dateFormat": "MM/DD/LETNO", + "triggerBy": { + "debugging": "Razhroščevanje", + "appRun": "Spletna aplikacija", + "webhook": "Webhook", + "schedule": "Urnik", + "plugin": "Vtičnik", + "ragPipelineRun": "RAG cevovod", + "ragPipelineDebugging": "RAG odpravljanje napak" + } +} diff --git a/web/i18n/sl-SI/app-log.ts b/web/i18n/sl-SI/app-log.ts deleted file mode 100644 index 37e12d2093..0000000000 --- a/web/i18n/sl-SI/app-log.ts +++ /dev/null @@ -1,112 +0,0 @@ -const translation = { - title: 'Dnevniki', - description: 'Dnevniki beležijo stanje delovanja aplikacije, vključno z vnosi uporabnikov in odgovori umetne inteligence.', - dateTimeFormat: 'DD.MM.YYYY hh:mm:ss A', - table: { - header: { - updatedTime: 'Čas posodobitve', - time: 'Čas ustvarjanja', - endUser: 'Končni uporabnik ali račun', - input: 'Vnos', - output: 'Izhod', - summary: 'Naslov', - messageCount: 'Število sporočil', - userRate: 'Ocena uporabnika', - adminRate: 'Ocena operaterja', - startTime: 'ZAČETNI ČAS', - status: 'STATUS', - runtime: 'ČAS DELOVANJA', - tokens: 'ŽETONI', - user: 'Končni uporabnik ali račun', - version: 'VERZIJA', - triggered_from: 'SPROŽENO Z', - }, - pagination: { - previous: 'Prejšnja', - next: 'Naslednja', - }, - empty: { - noChat: 'Še ni pogovora', - noOutput: 'Ni izhoda', - element: { - title: 'Je kdo tam?', - content: 'Opazujte in označite interakcije med končnimi uporabniki in aplikacijami umetne inteligence, da stalno izboljšujete natančnost AI. Lahko delite ali preizkusite spletno aplikacijo sami, nato pa se vrnete na to stran.', - }, - }, - }, - detail: { - time: 'Čas', - conversationId: 'ID pogovora', - promptTemplate: 'Predloga PROMPT-a', - promptTemplateBeforeChat: 'Predloga PROMPT-a pred pogovorom · Kot sistemsko sporočilo', - annotationTip: 'Izboljšave, ki jih je označil {{user}}', - timeConsuming: 'Porabljen čas', - second: 's', - tokenCost: 'Porabljeni žetoni', - loading: 'nalaganje', - operation: { - like: 'všeč', - dislike: 'ni všeč', - addAnnotation: 'Dodaj izboljšavo', - editAnnotation: 'Uredi izboljšavo', - annotationPlaceholder: 'Vnesite pričakovan odgovor, ki ga želite, da AI odgovori, kar se lahko uporabi za izboljšanje modela in kakovosti generiranja besedil v prihodnje.', - }, - variables: 'Spremenljivke', - uploadImages: 'Naložene slike', - modelParams: 'Parametri modela', - }, - filter: { - period: { - today: 'Danes', - last7days: 'Zadnjih 7 dni', - last4weeks: 'Zadnje 4 tedne', - last3months: 'Zadnji 3 meseci', - last12months: 'Zadnjih 12 mesecev', - monthToDate: 'Mesec do danes', - quarterToDate: 'Četrtletje do danes', - yearToDate: 'Leto do danes', - allTime: 'Vse obdobje', - last30days: 'Zadnjih 30 dni', - custom: 'Po meri', - }, - annotation: { - all: 'Vse', - annotated: 'Označene izboljšave ({{count}} elementov)', - not_annotated: 'Neoznačene', - }, - sortBy: 'Razvrsti po:', - descending: 'padajoče', - ascending: 'naraščajoče', - }, - workflowTitle: 'Dnevniki poteka dela', - workflowSubtitle: 'Dnevnik beleži delovanje avtomatizacije.', - runDetail: { - title: 'Dnevnik pogovora', - workflowTitle: 'Podrobnosti dnevnika', - fileListDetail: 'Podrobnosti', - fileListLabel: 'Podrobnosti o datoteki', - testWithParams: 'Preizkus s parametri', - }, - promptLog: 'Dnevnik PROMPT-ov', - agentLog: 'Dnevnik pomočnika', - viewLog: 'Ogled dnevnika', - agentLogDetail: { - agentMode: 'Način pomočnika', - toolUsed: 'Uporabljeno orodje', - iterations: 'Iteracije', - iteration: 'Iteracija', - finalProcessing: 'Končna obdelava', - }, - dateFormat: 'MM/DD/LETNO', - triggerBy: { - debugging: 'Razhroščevanje', - appRun: 'Spletna aplikacija', - webhook: 'Webhook', - schedule: 'Urnik', - plugin: 'Vtičnik', - ragPipelineRun: 'RAG cevovod', - ragPipelineDebugging: 'RAG odpravljanje napak', - }, -} - -export default translation diff --git a/web/i18n/sl-SI/app-overview.json b/web/i18n/sl-SI/app-overview.json new file mode 100644 index 0000000000..6828a1543f --- /dev/null +++ b/web/i18n/sl-SI/app-overview.json @@ -0,0 +1,187 @@ +{ + "welcome": { + "firstStepTip": "Začnite s tem, da", + "enterKeyTip": "vnesete svoj OpenAI API ključ spodaj", + "getKeyTip": "Pridobite svoj API ključ na nadzorni plošči OpenAI", + "placeholder": "Vaš OpenAI API ključ (npr. sk-xxxx)" + }, + "apiKeyInfo": { + "cloud": { + "trial": { + "title": "Uporabljate {{providerName}} poskusno kvoto.", + "description": "Poskusna kvota je namenjena vašemu testiranju. Preden se kvota izčrpa, nastavite lastnega ponudnika modela ali kupite dodatno kvoto." + }, + "exhausted": { + "title": "Vaša poskusna kvota je bila porabljena, nastavite API ključ.", + "description": "Porabili ste svojo poskusno kvoto. Prosimo, nastavite lastnega ponudnika modela ali kupite dodatno kvoto." + } + }, + "selfHost": { + "title": { + "row1": "Za začetek,", + "row2": "najprej nastavite svojega ponudnika modela." + } + }, + "callTimes": "Število klicev", + "usedToken": "Porabljeni žetoni", + "setAPIBtn": "Pojdi na nastavitev ponudnika modela", + "tryCloud": "Ali preizkusite oblačno različico Dify s prosto kvoto" + }, + "overview": { + "title": "Pregled", + "appInfo": { + "explanation": "Pripravljena AI spletna aplikacija", + "accessibleAddress": "Javni URL", + "preview": "Predogled", + "regenerate": "Ustvari ponovno", + "regenerateNotice": "Ali želite ponovno ustvariti javni URL?", + "preUseReminder": "Pred nadaljevanjem omogočite spletno aplikacijo.", + "settings": { + "entry": "Nastavitve", + "title": "Nastavitve spletne aplikacije", + "webName": "Ime spletne aplikacije", + "webDesc": "Opis spletne aplikacije", + "webDescTip": "Besedilo bo prikazano na strani za stranke in bo zagotavljalo osnovna navodila za uporabo aplikacije", + "webDescPlaceholder": "Vnesite opis spletne aplikacije", + "language": "Jezik", + "workflow": { + "title": "Potek dela", + "subTitle": "Podrobnosti poteka dela", + "show": "Prikaži", + "hide": "Skrij", + "showDesc": "Pokažite ali skrijte podrobnosti poteka dela v spletni aplikaciji" + }, + "chatColorTheme": "Barvna tema klepeta", + "chatColorThemeDesc": "Nastavite barvno temo klepetalnega bota", + "chatColorThemeInverted": "Inverzna", + "invalidHexMessage": "Neveljavna vrednost heksa", + "invalidPrivacyPolicy": "Neveljavna povezava do pravilnika o zasebnosti. Uporabite veljavno povezavo, ki se začne z http ali https", + "sso": { + "label": "SSO avtentikacija", + "title": "SSO spletne aplikacije", + "description": "Vsi uporabniki morajo pred uporabo spletne aplikacije opraviti prijavo preko SSO", + "tooltip": "Za omogočitev SSO za spletno aplikacijo se obrnite na skrbnika" + }, + "more": { + "entry": "Prikaži več nastavitev", + "copyright": "Avtorske pravice", + "copyRightPlaceholder": "Vnesite ime avtorja ali organizacije", + "privacyPolicy": "Politika zasebnosti", + "privacyPolicyPlaceholder": "Vnesite povezavo do politike zasebnosti", + "privacyPolicyTip": "Pomaga obiskovalcem razumeti, katere podatke aplikacija zbira, glejte politiko zasebnosti Dify.", + "customDisclaimer": "Prilagojena izjava o omejitvi odgovornosti", + "customDisclaimerPlaceholder": "Vnesite prilagojeno izjavo o omejitvi odgovornosti", + "customDisclaimerTip": "Prilagojeno izjavo o omejitvi odgovornosti bo prikazano na strani za stranke, ki bo zagotavljala dodatne informacije o aplikaciji", + "copyrightTip": "Prikaz informacij o avtorskih pravicah v spletni aplikaciji", + "copyrightTooltip": "Prosimo, nadgradite na paket Professional ali višji" + }, + "modalTip": "Nastavitve spletne aplikacije na strani odjemalca." + }, + "embedded": { + "entry": "Vdelano", + "title": "Vdelava na spletno stran", + "explanation": "Izberite način vdelave klepeta na svojo spletno stran", + "iframe": "Za dodajanje klepeta kjerkoli na vaši spletni strani dodajte to iframe v vašo HTML kodo.", + "scripts": "Za dodajanje klepeta na spodnji desni del vaše spletne strani dodajte to kodo v vašo HTML kodo.", + "chromePlugin": "Namestite Dify Chatbot razširitev za Chrome", + "copied": "Kopirano", + "copy": "Kopiraj" + }, + "qrcode": { + "title": "Povezava QR koda", + "scan": "Skeniraj za deljenje", + "download": "Prenesi QR kodo" + }, + "customize": { + "way": "način", + "entry": "Prilagodi", + "title": "Prilagodi AI spletno aplikacijo", + "explanation": "Lahko prilagodite sprednji del spletne aplikacije, da ustreza vašim scenarijem in potrebam po slogu.", + "way1": { + "name": "Forkajte kodo stranke, jo spremenite in namestite na Vercel (priporočeno)", + "step1": "Forkajte kodo stranke in jo spremenite", + "step1Tip": "Kliknite tukaj, da forknite izvorno kodo v svoj GitHub račun in spremenite kodo", + "step1Operation": "Dify-WebClient", + "step2": "Namestite na Vercel", + "step2Tip": "Kliknite tukaj, da uvozite repozitorij v Vercel in namestite", + "step2Operation": "Uvoz repozitorija", + "step3": "Konfigurirajte spremenljivke okolja", + "step3Tip": "Dodajte naslednje spremenljivke okolja v Vercel" + }, + "way2": { + "name": "Napišite kodo na strani stranke za klic API-ja in jo namestite na strežnik", + "operation": "Dokumentacija" + } + }, + "launch": "Začetek", + "enableTooltip": { + "description": "Za omogočanje te funkcije prosimo dodajte vozlišče Uporabniški vnos na platno. (Morda že obstaja v osnutku, začne veljati po objavi)", + "learnMore": "Izvedi več" + }, + "title": "Spletna aplikacija" + }, + "apiInfo": { + "title": "API storitev v ozadju", + "explanation": "Enostavna integracija v vašo aplikacijo", + "accessibleAddress": "API končna točka storitve", + "doc": "API referenca" + }, + "status": { + "running": "V storitvi", + "disable": "Onemogočeno" + }, + "triggerInfo": { + "title": "Sprožilci", + "explanation": "Upravljanje sprožilcev poteka dela", + "triggersAdded": "{{count}} sprožilci dodani", + "noTriggerAdded": "Sprožilec ni dodan", + "triggerStatusDescription": "Stanje sprožilnega vozlišča se prikaže tukaj. (Morda že obstaja v osnutku, začne veljati po objavi)", + "learnAboutTriggers": "Spoznajte sprožilce" + }, + "disableTooltip": { + "triggerMode": "Funkcija {{feature}} ni podprta v načinu vozlišča sprožilca." + } + }, + "analysis": { + "title": "Analiza", + "ms": "ms", + "tokenPS": "Žetoni/s", + "totalMessages": { + "title": "Skupno število sporočil", + "explanation": "Število dnevnih AI interakcij." + }, + "totalConversations": { + "title": "Skupno število pogovorov", + "explanation": "Število dnevnih AI pogovorov; inženiring promptov/debugging izključeno." + }, + "activeUsers": { + "title": "Aktivni uporabniki", + "explanation": "Unikatni uporabniki, ki sodelujejo v vprašanjih in odgovorih z AI; inženiring promptov/debugging izključeno." + }, + "tokenUsage": { + "title": "Poraba žetonov", + "explanation": "Odzrcaljuje dnevno porabo žetonov jezikovnega modela za aplikacijo, uporabno za namene nadzora stroškov.", + "consumed": "Porabljeni" + }, + "avgSessionInteractions": { + "title": "Povprečne interakcije v seji", + "explanation": "Število neprekinjenih komunikacij med uporabnikom in AI; za aplikacije, ki temeljijo na pogovoru." + }, + "avgUserInteractions": { + "title": "Povprečne interakcije uporabnika", + "explanation": "Odzrcaljuje dnevno pogostost uporabe uporabnikov. Ta metrika odraža vezanost uporabnikov." + }, + "userSatisfactionRate": { + "title": "Stopnja zadovoljstva uporabnikov", + "explanation": "Število všečkov na 1.000 sporočil. To kaže delež odgovorov, s katerimi so uporabniki zelo zadovoljni." + }, + "avgResponseTime": { + "title": "Povprečni odzivni čas", + "explanation": "Čas (v ms) za obdelavo/odgovor AI; za aplikacije, ki temeljijo na besedilu." + }, + "tps": { + "title": "Hitrost izhoda žetonov", + "explanation": "Merite učinkovitost LLM. Šteje hitrost izhoda žetonov od začetka zahteve do zaključka izhoda." + } + } +} diff --git a/web/i18n/sl-SI/app-overview.ts b/web/i18n/sl-SI/app-overview.ts deleted file mode 100644 index f5ece15d15..0000000000 --- a/web/i18n/sl-SI/app-overview.ts +++ /dev/null @@ -1,189 +0,0 @@ -const translation = { - welcome: { - firstStepTip: 'Začnite s tem, da', - enterKeyTip: 'vnesete svoj OpenAI API ključ spodaj', - getKeyTip: 'Pridobite svoj API ključ na nadzorni plošči OpenAI', - placeholder: 'Vaš OpenAI API ključ (npr. sk-xxxx)', - }, - apiKeyInfo: { - cloud: { - trial: { - title: 'Uporabljate {{providerName}} poskusno kvoto.', - description: 'Poskusna kvota je namenjena vašemu testiranju. Preden se kvota izčrpa, nastavite lastnega ponudnika modela ali kupite dodatno kvoto.', - }, - exhausted: { - title: 'Vaša poskusna kvota je bila porabljena, nastavite API ključ.', - description: 'Porabili ste svojo poskusno kvoto. Prosimo, nastavite lastnega ponudnika modela ali kupite dodatno kvoto.', - }, - }, - selfHost: { - title: { - row1: 'Za začetek,', - row2: 'najprej nastavite svojega ponudnika modela.', - }, - }, - callTimes: 'Število klicev', - usedToken: 'Porabljeni žetoni', - setAPIBtn: 'Pojdi na nastavitev ponudnika modela', - tryCloud: 'Ali preizkusite oblačno različico Dify s prosto kvoto', - }, - overview: { - title: 'Pregled', - appInfo: { - explanation: 'Pripravljena AI spletna aplikacija', - accessibleAddress: 'Javni URL', - preview: 'Predogled', - regenerate: 'Ustvari ponovno', - regenerateNotice: 'Ali želite ponovno ustvariti javni URL?', - preUseReminder: 'Pred nadaljevanjem omogočite spletno aplikacijo.', - settings: { - entry: 'Nastavitve', - title: 'Nastavitve spletne aplikacije', - webName: 'Ime spletne aplikacije', - webDesc: 'Opis spletne aplikacije', - webDescTip: 'Besedilo bo prikazano na strani za stranke in bo zagotavljalo osnovna navodila za uporabo aplikacije', - webDescPlaceholder: 'Vnesite opis spletne aplikacije', - language: 'Jezik', - workflow: { - title: 'Potek dela', - subTitle: 'Podrobnosti poteka dela', - show: 'Prikaži', - hide: 'Skrij', - showDesc: 'Pokažite ali skrijte podrobnosti poteka dela v spletni aplikaciji', - }, - chatColorTheme: 'Barvna tema klepeta', - chatColorThemeDesc: 'Nastavite barvno temo klepetalnega bota', - chatColorThemeInverted: 'Inverzna', - invalidHexMessage: 'Neveljavna vrednost heksa', - invalidPrivacyPolicy: 'Neveljavna povezava do pravilnika o zasebnosti. Uporabite veljavno povezavo, ki se začne z http ali https', - sso: { - label: 'SSO avtentikacija', - title: 'SSO spletne aplikacije', - description: 'Vsi uporabniki morajo pred uporabo spletne aplikacije opraviti prijavo preko SSO', - tooltip: 'Za omogočitev SSO za spletno aplikacijo se obrnite na skrbnika', - }, - more: { - entry: 'Prikaži več nastavitev', - copyright: 'Avtorske pravice', - copyRightPlaceholder: 'Vnesite ime avtorja ali organizacije', - privacyPolicy: 'Politika zasebnosti', - privacyPolicyPlaceholder: 'Vnesite povezavo do politike zasebnosti', - privacyPolicyTip: 'Pomaga obiskovalcem razumeti, katere podatke aplikacija zbira, glejte politiko zasebnosti Dify.', - customDisclaimer: 'Prilagojena izjava o omejitvi odgovornosti', - customDisclaimerPlaceholder: 'Vnesite prilagojeno izjavo o omejitvi odgovornosti', - customDisclaimerTip: 'Prilagojeno izjavo o omejitvi odgovornosti bo prikazano na strani za stranke, ki bo zagotavljala dodatne informacije o aplikaciji', - copyrightTip: 'Prikaz informacij o avtorskih pravicah v spletni aplikaciji', - copyrightTooltip: 'Prosimo, nadgradite na paket Professional ali višji', - }, - modalTip: 'Nastavitve spletne aplikacije na strani odjemalca.', - }, - embedded: { - entry: 'Vdelano', - title: 'Vdelava na spletno stran', - explanation: 'Izberite način vdelave klepeta na svojo spletno stran', - iframe: 'Za dodajanje klepeta kjerkoli na vaši spletni strani dodajte to iframe v vašo HTML kodo.', - scripts: 'Za dodajanje klepeta na spodnji desni del vaše spletne strani dodajte to kodo v vašo HTML kodo.', - chromePlugin: 'Namestite Dify Chatbot razširitev za Chrome', - copied: 'Kopirano', - copy: 'Kopiraj', - }, - qrcode: { - title: 'Povezava QR koda', - scan: 'Skeniraj za deljenje', - download: 'Prenesi QR kodo', - }, - customize: { - way: 'način', - entry: 'Prilagodi', - title: 'Prilagodi AI spletno aplikacijo', - explanation: 'Lahko prilagodite sprednji del spletne aplikacije, da ustreza vašim scenarijem in potrebam po slogu.', - way1: { - name: 'Forkajte kodo stranke, jo spremenite in namestite na Vercel (priporočeno)', - step1: 'Forkajte kodo stranke in jo spremenite', - step1Tip: 'Kliknite tukaj, da forknite izvorno kodo v svoj GitHub račun in spremenite kodo', - step1Operation: 'Dify-WebClient', - step2: 'Namestite na Vercel', - step2Tip: 'Kliknite tukaj, da uvozite repozitorij v Vercel in namestite', - step2Operation: 'Uvoz repozitorija', - step3: 'Konfigurirajte spremenljivke okolja', - step3Tip: 'Dodajte naslednje spremenljivke okolja v Vercel', - }, - way2: { - name: 'Napišite kodo na strani stranke za klic API-ja in jo namestite na strežnik', - operation: 'Dokumentacija', - }, - }, - launch: 'Začetek', - enableTooltip: { - description: 'Za omogočanje te funkcije prosimo dodajte vozlišče Uporabniški vnos na platno. (Morda že obstaja v osnutku, začne veljati po objavi)', - learnMore: 'Izvedi več', - }, - title: 'Spletna aplikacija', - }, - apiInfo: { - title: 'API storitev v ozadju', - explanation: 'Enostavna integracija v vašo aplikacijo', - accessibleAddress: 'API končna točka storitve', - doc: 'API referenca', - }, - status: { - running: 'V storitvi', - disable: 'Onemogočeno', - }, - triggerInfo: { - title: 'Sprožilci', - explanation: 'Upravljanje sprožilcev poteka dela', - triggersAdded: '{{count}} sprožilci dodani', - noTriggerAdded: 'Sprožilec ni dodan', - triggerStatusDescription: 'Stanje sprožilnega vozlišča se prikaže tukaj. (Morda že obstaja v osnutku, začne veljati po objavi)', - learnAboutTriggers: 'Spoznajte sprožilce', - }, - disableTooltip: { - triggerMode: 'Funkcija {{feature}} ni podprta v načinu vozlišča sprožilca.', - }, - }, - analysis: { - title: 'Analiza', - ms: 'ms', - tokenPS: 'Žetoni/s', - totalMessages: { - title: 'Skupno število sporočil', - explanation: 'Število dnevnih AI interakcij.', - }, - totalConversations: { - title: 'Skupno število pogovorov', - explanation: 'Število dnevnih AI pogovorov; inženiring promptov/debugging izključeno.', - }, - activeUsers: { - title: 'Aktivni uporabniki', - explanation: 'Unikatni uporabniki, ki sodelujejo v vprašanjih in odgovorih z AI; inženiring promptov/debugging izključeno.', - }, - tokenUsage: { - title: 'Poraba žetonov', - explanation: 'Odzrcaljuje dnevno porabo žetonov jezikovnega modela za aplikacijo, uporabno za namene nadzora stroškov.', - consumed: 'Porabljeni', - }, - avgSessionInteractions: { - title: 'Povprečne interakcije v seji', - explanation: 'Število neprekinjenih komunikacij med uporabnikom in AI; za aplikacije, ki temeljijo na pogovoru.', - }, - avgUserInteractions: { - title: 'Povprečne interakcije uporabnika', - explanation: 'Odzrcaljuje dnevno pogostost uporabe uporabnikov. Ta metrika odraža vezanost uporabnikov.', - }, - userSatisfactionRate: { - title: 'Stopnja zadovoljstva uporabnikov', - explanation: 'Število všečkov na 1.000 sporočil. To kaže delež odgovorov, s katerimi so uporabniki zelo zadovoljni.', - }, - avgResponseTime: { - title: 'Povprečni odzivni čas', - explanation: 'Čas (v ms) za obdelavo/odgovor AI; za aplikacije, ki temeljijo na besedilu.', - }, - tps: { - title: 'Hitrost izhoda žetonov', - explanation: 'Merite učinkovitost LLM. Šteje hitrost izhoda žetonov od začetka zahteve do zaključka izhoda.', - }, - }, -} - -export default translation diff --git a/web/i18n/sl-SI/app.json b/web/i18n/sl-SI/app.json new file mode 100644 index 0000000000..c00acfa028 --- /dev/null +++ b/web/i18n/sl-SI/app.json @@ -0,0 +1,345 @@ +{ + "createApp": "USTVARI APLIKACIJO", + "types": { + "all": "Vse", + "chatbot": "Klepetalnik", + "agent": "Agent", + "workflow": "Potek dela", + "completion": "Dopolnjevanje", + "advanced": "Tok klepeta", + "basic": "Osnoven" + }, + "duplicate": "Podvoji", + "duplicateTitle": "Podvoji aplikacijo", + "export": "Izvozi DSL", + "exportFailed": "Izvoz DSL ni uspel.", + "importDSL": "Uvozi datoteko DSL", + "createFromConfigFile": "Ustvari iz datoteke DSL", + "importFromDSL": "Uvozi iz DSL", + "importFromDSLFile": "Iz datoteke DSL", + "importFromDSLUrl": "Iz URL-ja", + "importFromDSLUrlPlaceholder": "Tukaj prilepi povezavo DSL", + "dslUploader": { + "button": "Povlecite in spustite datoteko, ali", + "browse": "Prebrskaj" + }, + "deleteAppConfirmTitle": "Izbrišem to aplikacijo?", + "deleteAppConfirmContent": "Brisanje aplikacije je nepopravljivo. Uporabniki ne bodo več imeli dostopa do vaše aplikacije, vse konfiguracije in dnevniki pa bodo trajno izbrisani.", + "appDeleted": "Aplikacija izbrisana", + "appDeleteFailed": "Brisanje aplikacije ni uspelo", + "join": "Pridruži se skupnosti", + "communityIntro": "Pogovarjajte se s člani ekipe, sodelavci in razvijalci na različnih kanalih.", + "roadmap": "Oglejte si naš načrt", + "newApp": { + "startFromBlank": "Ustvari iz nič", + "startFromTemplate": "Ustvari iz predloge", + "workflowWarning": "Trenutno v beta različici", + "captionName": "Ikona in ime aplikacije", + "appNamePlaceholder": "Poimenujte svojo aplikacijo", + "captionDescription": "Opis", + "appDescriptionPlaceholder": "Vnesite opis aplikacije", + "useTemplate": "Uporabi to predlogo", + "previewDemo": "Predogled demo različice", + "chatApp": "Pomočnik", + "chatAppIntro": "Želim zgraditi aplikacijo, ki temelji na klepetu. Ta aplikacija uporablja format vprašanj in odgovorov, ki omogoča več krogov neprekinjenega pogovora.", + "agentAssistant": "Novi pomočnik agenta", + "completeApp": "Generator besedila", + "completeAppIntro": "Želim ustvariti aplikacijo, ki na podlagi pozivov generira visokokakovostno besedilo, kot je ustvarjanje člankov, povzetkov, prevodov in več.", + "showTemplates": "Želim izbrati iz predloge", + "hideTemplates": "Vrni se na izbiro načina", + "Create": "Ustvari", + "Cancel": "Prekliči", + "nameNotEmpty": "Ime ne sme biti prazno", + "appTemplateNotSelected": "Izberite predlogo", + "appTypeRequired": "Izberite vrsto aplikacije", + "appCreated": "Aplikacija ustvarjena", + "appCreateFailed": "Ustvarjanje aplikacije ni uspelo", + "appCreateDSLErrorTitle": "Nezdružljivost različice", + "caution": "Previdnost", + "Confirm": "Potrditi", + "appCreateDSLErrorPart1": "Odkrita je bila pomembna razlika v različicah DSL. Vsiljevanje uvoza lahko povzroči nepravilno delovanje aplikacije.", + "appCreateDSLErrorPart3": "Trenutna različica aplikacije DSL:", + "appCreateDSLErrorPart4": "Sistemsko podprta različica DSL:", + "appCreateDSLWarning": "Pozor: Razlika v različici DSL lahko vpliva na nekatere funkcije", + "appCreateDSLErrorPart2": "Želite nadaljevati?", + "advancedShortDescription": "Potek dela izboljšan za večkratne pogovore", + "noAppsFound": "Ni bilo najdenih aplikacij", + "agentShortDescription": "Inteligentni agent z razmišljanjem in avtonomno uporabo orodij", + "foundResult": "{{count}} Rezultat", + "foundResults": "{{count}} Rezultati", + "noTemplateFoundTip": "Poskusite iskati z različnimi ključnimi besedami.", + "optional": "Neobvezno", + "forBeginners": "Bolj osnovne vrste aplikacij", + "forAdvanced": "ZA NAPREDNE UPORABNIKE", + "noIdeaTip": "Nimate idej? Oglejte si naše predloge", + "agentUserDescription": "Inteligentni agent, ki je sposoben iterativnega sklepanja in avtonomne uporabe orodij za doseganje ciljev nalog.", + "completionShortDescription": "Pomočnik AI za naloge generiranja besedila", + "chatbotUserDescription": "Hitro zgradite chatbota, ki temelji na LLM, s preprosto konfiguracijo. Na Chatflow lahko preklopite pozneje.", + "completionUserDescription": "Hitro ustvarite pomočnika AI za naloge ustvarjanja besedila s preprosto konfiguracijo.", + "advancedUserDescription": "Potek dela z dodatnimi funkcijami spomina in vmesnikom za klepetanje.", + "workflowUserDescription": "Vizualno ustvarjajte avtonomne AI poteke s preprostim vlečenjem in spuščanjem.", + "noTemplateFound": "Predloge niso bile najdene", + "workflowShortDescription": "Agentni tok za inteligentne avtomatizacije", + "chatbotShortDescription": "Chatbot, ki temelji na LLM, s preprosto nastavitvijo", + "chooseAppType": "Izberite vrsto aplikacije", + "learnMore": "Izvedi več", + "dropDSLToCreateApp": "Spustite DSL datoteko sem, da ustvarite aplikacijo", + "import": "Uvoz" + }, + "editApp": "Uredi informacije", + "editAppTitle": "Uredi informacije o aplikaciji", + "editDone": "Informacije o aplikaciji posodobljene", + "editFailed": "Posodobitev informacij o aplikaciji ni uspela", + "iconPicker": { + "ok": "V redu", + "cancel": "Prekliči", + "emoji": "Emoji", + "image": "Slika" + }, + "answerIcon": { + "title": "Uporabite ikono web app za zamenjavo 🤖", + "description": "Ali uporabiti ikono web app za zamenjavo 🤖 v deljeni aplikaciji", + "descriptionInExplore": "Ali uporabiti ikono web app za zamenjavo 🤖 v razdelku Razišči" + }, + "switch": "Preklopi na Workflow Orchestrate", + "switchTipStart": "Za vas bo ustvarjena nova kopija aplikacije, ki bo preklopila na Workflow Orchestrate. Nova kopija ne bo ", + "switchTip": "dovolila", + "switchTipEnd": " preklopa nazaj na Basic Orchestrate.", + "switchLabel": "Kopija aplikacije, ki bo ustvarjena", + "removeOriginal": "Izbriši izvirno aplikacijo", + "switchStart": "Začni preklop", + "typeSelector": { + "all": "VSE VRSTE", + "chatbot": "Klepetalnik", + "agent": "Agent", + "workflow": "Potek dela", + "completion": "Dopolnjevanje", + "advanced": "Tok klepeta" + }, + "tracing": { + "title": "Sledenje uspešnosti aplikacije", + "description": "Konfiguracija ponudnika LLMOps tretje osebe in sledenje uspešnosti aplikacije.", + "config": "Konfiguracija", + "view": "Ogled", + "collapse": "Strni", + "expand": "Razširi", + "tracing": "Sledenje", + "disabled": "Onemogočeno", + "disabledTip": "Najprej konfigurirajte ponudnika", + "enabled": "V storitvi", + "tracingDescription": "Zajem celotnega konteksta izvajanja aplikacije, vključno s klici LLM, kontekstom, pozivi, zahtevami HTTP in še več, na platformo za sledenje tretje osebe.", + "configProviderTitle": { + "configured": "Konfigurirano", + "notConfigured": "Konfigurirajte ponudnika za omogočanje sledenja", + "moreProvider": "Več ponudnikov" + }, + "arize": { + "title": "Arize", + "description": "Podjetniško opazovanje LLM, spletno in nespletno vrednotenje, nadzorovanje in eksperimentiranje — s podporo OpenTelemetry. Namenjeno aplikacijam, ki temeljijo na LLM in agentih." + }, + "phoenix": { + "title": "Phoenix", + "description": "Odprtokodna in na OpenTelemetry osnovana platforma za opazovanje, vrednotenje, inženiring pozivov ter eksperimentiranje za vaše LLM poteke dela in agente." + }, + "langsmith": { + "title": "LangSmith", + "description": "Vse-v-enem razvijalska platforma za vsak korak življenjskega cikla aplikacije, ki jo poganja LLM." + }, + "langfuse": { + "title": "Langfuse", + "description": "Sledi, vrednoti, upravlja pozive in meri za odpravljanje napak in izboljšanje vaše aplikacije LLM." + }, + "inUse": "V uporabi", + "configProvider": { + "title": "Konfiguracija", + "placeholder": "Vnesite vaš {{key}}", + "project": "Projekt", + "publicKey": "Javni ključ", + "secretKey": "Skrivni ključ", + "viewDocsLink": "Ogled dokumentov {{key}}", + "removeConfirmTitle": "Odstraniti konfiguracijo {{key}}?", + "removeConfirmContent": "Trenutna konfiguracija je v uporabi, odstranitev bo onemogočila funkcijo sledenja.", + "password": "Geslo", + "personalAccessToken": "Osebni dostopni žeton (stari)", + "experimentId": "ID eksperimenta", + "clientSecret": "OAuth skrivnost odjemalca", + "trackingUri": "Sledenje URI", + "clientId": "ID odjemalca OAuth", + "databricksHost": "URL delovnega prostora Databricks", + "username": "Uporabniško ime" + }, + "opik": { + "description": "Opik je odprtokodna platforma za ocenjevanje, testiranje in spremljanje aplikacij LLM.", + "title": "Opik" + }, + "weave": { + "title": "Tkanje", + "description": "Weave je odprtokodna platforma za vrednotenje, testiranje in spremljanje aplikacij LLM." + }, + "aliyun": { + "title": "Oblačni nadzor", + "description": "Popolnoma upravljana in brez vzdrževanja platforma za opazovanje, ki jo zagotavlja Alibaba Cloud, omogoča takojšnje spremljanje, sledenje in ocenjevanje aplikacij Dify." + }, + "mlflow": { + "title": "MLflow", + "description": "Odprtokodna platforma LLMOps za sledenje eksperimentom, opazljivost in ocenjevanje, za gradnjo aplikacij AI/LLM z zaupanjem." + }, + "databricks": { + "title": "Databricks", + "description": "Databricks ponuja popolnoma upravljan MLflow z močnim upravljanjem in varnostjo za shranjevanje podatkov sledenja." + }, + "tencent": { + "description": "Tencent Application Performance Monitoring zagotavlja celovito sledenje in večdimenzionalno analizo za aplikacije LLM.", + "title": "Tencent APM" + } + }, + "mermaid": { + "handDrawn": "Ročno narisano", + "classic": "Klasičen" + }, + "openInExplore": "Odpri v razišči", + "newAppFromTemplate": { + "sidebar": { + "Programming": "Programiranje", + "Recommended": "Priporočljivo", + "Writing": "Pisanje", + "Assistant": "Pomočnik", + "Workflow": "Potek dela", + "HR": "HR", + "Agent": "Agent" + }, + "byCategories": "PO KATEGORIJAH", + "searchAllTemplate": "Preišči vse predloge ..." + }, + "showMyCreatedAppsOnly": "Prikaži samo aplikacije, ki sem jih ustvaril", + "appSelector": { + "params": "PARAMETRI APLIKACIJE", + "noParams": "Parametri niso potrebni", + "label": "APL", + "placeholder": "Izberite aplikacijo ..." + }, + "structOutput": { + "configure": "Konfiguriraj", + "structured": "Strukturirano", + "modelNotSupported": "Model ni podprt", + "required": "Zahtevano", + "moreFillTip": "Prikazovanje največ 10 ravni gnezdenja", + "LLMResponse": "LLM odziv", + "notConfiguredTip": "Strukturiranega izhoda še ni mogoče konfigurirati", + "modelNotSupportedTip": "Trenutni model ne podpira te funkcije in se samodejno zniža na vbrizgavanje pozivov.", + "structuredTip": "Strukturirani izhodi so funkcija, ki zagotavlja, da bo model vedno generiral odgovore, ki se držijo vašega posredovanega JSON sheme." + }, + "accessItemsDescription": { + "anyone": "Vsakdo lahko dostopa do spletne aplikacije", + "specific": "Samo določenim skupinam ali članom je omogočen dostop do spletne aplikacije", + "organization": "Vsakdo v organizaciji lahko dostopa do spletne aplikacije", + "external": "Samo avtentificirani zunanji uporabniki lahko dostopajo do spletne aplikacije." + }, + "accessControlDialog": { + "accessItems": { + "anyone": "Kdorkoli s povezavo", + "specific": "Specifične skupine ali člani", + "organization": "Samo člani znotraj podjetja", + "external": "Avtorizirani zunanji uporabniki" + }, + "operateGroupAndMember": { + "searchPlaceholder": "Išči skupine in člane", + "allMembers": "Vsi člani", + "expand": "Razširi", + "noResult": "Brez rezultata" + }, + "title": "Nadzor dostopa do spletne aplikacije", + "description": "Nastavite dovoljenja za dostop do spletne aplikacije", + "accessLabel": "Kdo ima dostop", + "groups_one": "{{count}} SKUPINA", + "groups_other": "{{count}} SKUPIN", + "members_one": "{{count}} ČLAN", + "members_other": "{{count}} ČLANOV", + "updateSuccess": "Posodobitev uspešna", + "noGroupsOrMembers": "Nobene skupine ali članov ni izbranih", + "webAppSSONotEnabledTip": "Prosimo, da se obrnete na skrbnika podjetja, da konfigurira način avtentikacije spletne aplikacije." + }, + "publishApp": { + "title": "Kdo lahko dostopa do spletne aplikacije", + "notSet": "Ni nastavljeno", + "notSetDesc": "Trenutno nihče ne more dostopati do spletne aplikacije. Prosimo, nastavite dovoljenja." + }, + "accessControl": "Nadzor dostopa do spletne aplikacije", + "noAccessPermission": "Brez dovoljenja za dostop do spletne aplikacije", + "maxActiveRequestsPlaceholder": "Vnesite 0 za neomejeno", + "maxActiveRequests": "Maksimalno število hkratnih zahtevkov", + "maxActiveRequestsTip": "Največje število hkrati aktivnih zahtevkov na aplikacijo (0 za neomejeno)", + "gotoAnything": { + "actions": { + "searchWorkflowNodes": "Iskanje vozlišč poteka dela", + "searchKnowledgeBasesDesc": "Iskanje in krmarjenje do zbirk znanja", + "searchWorkflowNodesHelp": "Ta funkcija deluje le pri ogledu poteka dela. Najprej se pomaknite do poteka dela.", + "searchApplicationsDesc": "Iskanje in krmarjenje do aplikacij", + "searchPlugins": "Iskanje vtičnikov", + "searchApplications": "Iskanje aplikacij", + "searchWorkflowNodesDesc": "Iskanje vozlišč in skok nanje v trenutnem poteku dela po imenu ali vrsti", + "searchKnowledgeBases": "Iskanje po zbirkah znanja", + "searchPluginsDesc": "Iskanje in krmarjenje do vtičnikov", + "themeCategoryTitle": "Tema", + "themeLight": "Svetla tematika", + "runTitle": "Ukazi", + "themeSystem": "Sistem tema", + "themeDarkDesc": "Uporabite temen način", + "themeLightDesc": "Uporabite svetlo prikazovanje", + "themeCategoryDesc": "Preklopi temo aplikacije", + "themeDark": "Temna tema", + "languageCategoryDesc": "Preklopi jezik vmesnika", + "languageCategoryTitle": "Jezik", + "themeSystemDesc": "Sledite videzu svojega operacijskega sistema", + "runDesc": "Zaženi hitre ukaze (teme, jezik, ...)", + "languageChangeDesc": "Spremeni jezik vmesnika", + "slashDesc": "Izvedi ukaze kot so /tema, /jezik", + "accountDesc": "Pojdite na stran računa", + "docDesc": "Odprite pomoč dokumentacijo", + "feedbackDesc": "Razprave o povratnih informacijah odprte skupnosti", + "communityDesc": "Odpri Discord skupnost", + "zenTitle": "Zen Mode", + "zenDesc": "Toggle canvas focus mode" + }, + "emptyState": { + "noPluginsFound": "Vtičnikov ni mogoče najti", + "noWorkflowNodesFound": "Vozlišča poteka dela niso bila najdena", + "noKnowledgeBasesFound": "Zbirk znanja ni mogoče najti", + "noAppsFound": "Ni bilo najdenih aplikacij", + "tryDifferentTerm": "Poskusite z drugim iskalnim izrazom ali odstranite filter {{mode}}", + "trySpecificSearch": "Poskusite {{shortcuts}} za specifična iskanja" + }, + "groups": { + "workflowNodes": "Vozlišča poteka dela", + "apps": "Aplikacije", + "knowledgeBases": "Baze znanja", + "plugins": "Vtičniki", + "commands": "Ukazi" + }, + "searching": "Iskanje...", + "searchTitle": "Poiščite karkoli", + "searchTemporarilyUnavailable": "Iskanje začasno ni na voljo", + "someServicesUnavailable": "Nekatere iskalne storitve niso na voljo", + "noResults": "Ni najdenih rezultatov", + "clearToSearchAll": "Počisti @ za iskanje vseh", + "searchPlaceholder": "Poiščite ali vnesite @ za ukaze ...", + "searchFailed": "Iskanje ni uspelo", + "useAtForSpecific": "Uporaba znaka @ za določene vrste", + "servicesUnavailableMessage": "Pri nekaterih iskalnih storitvah se morda pojavljajo težave. Poskusite znova čez trenutek.", + "commandHint": "Vnesite @ za brskanje po kategoriji", + "selectSearchType": "Izberite, kaj želite iskati", + "searchHint": "Začnite tipkati, da takoj preiščete vse", + "resultCount": "{{count}} rezultat", + "resultCount_other": "{{count}} rezultatov", + "inScope": "v {{scope}}s", + "tryDifferentSearch": "Poskusite uporabiti drug iskalni izraz", + "noMatchingCommands": "Ujemajoči se ukazi niso našli", + "slashHint": "Vnesite / za ogled vseh razpoložljivih ukazov", + "startTyping": "Začnite vnašati za iskanje", + "pressEscToClose": "Pritisnite ESC za zapiranje", + "selectToNavigate": "Izberite za navigacijo", + "tips": "Pritisnite ↑↓ za navigacijo" + }, + "notPublishedYet": "Aplikacija še ni objavljena", + "noUserInputNode": "Manjka vozel uporabniškega vnosa" +} diff --git a/web/i18n/sl-SI/app.ts b/web/i18n/sl-SI/app.ts deleted file mode 100644 index d1dfd8c892..0000000000 --- a/web/i18n/sl-SI/app.ts +++ /dev/null @@ -1,351 +0,0 @@ -const translation = { - createApp: 'USTVARI APLIKACIJO', - types: { - all: 'Vse', - chatbot: 'Klepetalnik', - agent: 'Agent', - workflow: 'Potek dela', - completion: 'Dopolnjevanje', - advanced: 'Tok klepeta', - basic: 'Osnoven', - }, - duplicate: 'Podvoji', - duplicateTitle: 'Podvoji aplikacijo', - export: 'Izvozi DSL', - exportFailed: 'Izvoz DSL ni uspel.', - importDSL: 'Uvozi datoteko DSL', - createFromConfigFile: 'Ustvari iz datoteke DSL', - importFromDSL: 'Uvozi iz DSL', - importFromDSLFile: 'Iz datoteke DSL', - importFromDSLUrl: 'Iz URL-ja', - importFromDSLUrlPlaceholder: 'Tukaj prilepi povezavo DSL', - dslUploader: { - button: 'Povlecite in spustite datoteko, ali', - browse: 'Prebrskaj', - }, - deleteAppConfirmTitle: 'Izbrišem to aplikacijo?', - deleteAppConfirmContent: - 'Brisanje aplikacije je nepopravljivo. Uporabniki ne bodo več imeli dostopa do vaše aplikacije, vse konfiguracije in dnevniki pa bodo trajno izbrisani.', - appDeleted: 'Aplikacija izbrisana', - appDeleteFailed: 'Brisanje aplikacije ni uspelo', - join: 'Pridruži se skupnosti', - communityIntro: - 'Pogovarjajte se s člani ekipe, sodelavci in razvijalci na različnih kanalih.', - roadmap: 'Oglejte si naš načrt', - newApp: { - startFromBlank: 'Ustvari iz nič', - startFromTemplate: 'Ustvari iz predloge', - workflowWarning: 'Trenutno v beta različici', - captionName: 'Ikona in ime aplikacije', - appNamePlaceholder: 'Poimenujte svojo aplikacijo', - captionDescription: 'Opis', - appDescriptionPlaceholder: 'Vnesite opis aplikacije', - useTemplate: 'Uporabi to predlogo', - previewDemo: 'Predogled demo različice', - chatApp: 'Pomočnik', - chatAppIntro: - 'Želim zgraditi aplikacijo, ki temelji na klepetu. Ta aplikacija uporablja format vprašanj in odgovorov, ki omogoča več krogov neprekinjenega pogovora.', - agentAssistant: 'Novi pomočnik agenta', - completeApp: 'Generator besedila', - completeAppIntro: - 'Želim ustvariti aplikacijo, ki na podlagi pozivov generira visokokakovostno besedilo, kot je ustvarjanje člankov, povzetkov, prevodov in več.', - showTemplates: 'Želim izbrati iz predloge', - hideTemplates: 'Vrni se na izbiro načina', - Create: 'Ustvari', - Cancel: 'Prekliči', - nameNotEmpty: 'Ime ne sme biti prazno', - appTemplateNotSelected: 'Izberite predlogo', - appTypeRequired: 'Izberite vrsto aplikacije', - appCreated: 'Aplikacija ustvarjena', - appCreateFailed: 'Ustvarjanje aplikacije ni uspelo', - appCreateDSLErrorTitle: 'Nezdružljivost različice', - caution: 'Previdnost', - Confirm: 'Potrditi', - appCreateDSLErrorPart1: 'Odkrita je bila pomembna razlika v različicah DSL. Vsiljevanje uvoza lahko povzroči nepravilno delovanje aplikacije.', - appCreateDSLErrorPart3: 'Trenutna različica aplikacije DSL:', - appCreateDSLErrorPart4: 'Sistemsko podprta različica DSL:', - appCreateDSLWarning: 'Pozor: Razlika v različici DSL lahko vpliva na nekatere funkcije', - appCreateDSLErrorPart2: 'Želite nadaljevati?', - advancedShortDescription: 'Potek dela izboljšan za večkratne pogovore', - noAppsFound: 'Ni bilo najdenih aplikacij', - agentShortDescription: 'Inteligentni agent z razmišljanjem in avtonomno uporabo orodij', - foundResult: '{{count}} Rezultat', - foundResults: '{{count}} Rezultati', - noTemplateFoundTip: 'Poskusite iskati z različnimi ključnimi besedami.', - optional: 'Neobvezno', - forBeginners: 'Bolj osnovne vrste aplikacij', - forAdvanced: 'ZA NAPREDNE UPORABNIKE', - noIdeaTip: 'Nimate idej? Oglejte si naše predloge', - agentUserDescription: 'Inteligentni agent, ki je sposoben iterativnega sklepanja in avtonomne uporabe orodij za doseganje ciljev nalog.', - completionShortDescription: 'Pomočnik AI za naloge generiranja besedila', - chatbotUserDescription: 'Hitro zgradite chatbota, ki temelji na LLM, s preprosto konfiguracijo. Na Chatflow lahko preklopite pozneje.', - completionUserDescription: 'Hitro ustvarite pomočnika AI za naloge ustvarjanja besedila s preprosto konfiguracijo.', - advancedUserDescription: 'Potek dela z dodatnimi funkcijami spomina in vmesnikom za klepetanje.', - workflowUserDescription: 'Vizualno ustvarjajte avtonomne AI poteke s preprostim vlečenjem in spuščanjem.', - noTemplateFound: 'Predloge niso bile najdene', - workflowShortDescription: 'Agentni tok za inteligentne avtomatizacije', - chatbotShortDescription: 'Chatbot, ki temelji na LLM, s preprosto nastavitvijo', - chooseAppType: 'Izberite vrsto aplikacije', - learnMore: 'Izvedi več', - dropDSLToCreateApp: 'Spustite DSL datoteko sem, da ustvarite aplikacijo', - import: 'Uvoz', - }, - editApp: 'Uredi informacije', - editAppTitle: 'Uredi informacije o aplikaciji', - editDone: 'Informacije o aplikaciji posodobljene', - editFailed: 'Posodobitev informacij o aplikaciji ni uspela', - iconPicker: { - ok: 'V redu', - cancel: 'Prekliči', - emoji: 'Emoji', - image: 'Slika', - }, - answerIcon: { - title: 'Uporabite ikono web app za zamenjavo 🤖', - description: 'Ali uporabiti ikono web app za zamenjavo 🤖 v deljeni aplikaciji', - descriptionInExplore: 'Ali uporabiti ikono web app za zamenjavo 🤖 v razdelku Razišči', - }, - switch: 'Preklopi na Workflow Orchestrate', - switchTipStart: 'Za vas bo ustvarjena nova kopija aplikacije, ki bo preklopila na Workflow Orchestrate. Nova kopija ne bo ', - switchTip: 'dovolila', - switchTipEnd: ' preklopa nazaj na Basic Orchestrate.', - switchLabel: 'Kopija aplikacije, ki bo ustvarjena', - removeOriginal: 'Izbriši izvirno aplikacijo', - switchStart: 'Začni preklop', - typeSelector: { - all: 'VSE VRSTE', - chatbot: 'Klepetalnik', - agent: 'Agent', - workflow: 'Potek dela', - completion: 'Dopolnjevanje', - advanced: 'Tok klepeta', - }, - tracing: { - title: 'Sledenje uspešnosti aplikacije', - description: 'Konfiguracija ponudnika LLMOps tretje osebe in sledenje uspešnosti aplikacije.', - config: 'Konfiguracija', - view: 'Ogled', - collapse: 'Strni', - expand: 'Razširi', - tracing: 'Sledenje', - disabled: 'Onemogočeno', - disabledTip: 'Najprej konfigurirajte ponudnika', - enabled: 'V storitvi', - tracingDescription: 'Zajem celotnega konteksta izvajanja aplikacije, vključno s klici LLM, kontekstom, pozivi, zahtevami HTTP in še več, na platformo za sledenje tretje osebe.', - configProviderTitle: { - configured: 'Konfigurirano', - notConfigured: 'Konfigurirajte ponudnika za omogočanje sledenja', - moreProvider: 'Več ponudnikov', - }, - arize: { - title: 'Arize', - description: 'Podjetniško opazovanje LLM, spletno in nespletno vrednotenje, nadzorovanje in eksperimentiranje — s podporo OpenTelemetry. Namenjeno aplikacijam, ki temeljijo na LLM in agentih.', - }, - phoenix: { - title: 'Phoenix', - description: 'Odprtokodna in na OpenTelemetry osnovana platforma za opazovanje, vrednotenje, inženiring pozivov ter eksperimentiranje za vaše LLM poteke dela in agente.', - }, - langsmith: { - title: 'LangSmith', - description: 'Vse-v-enem razvijalska platforma za vsak korak življenjskega cikla aplikacije, ki jo poganja LLM.', - }, - langfuse: { - title: 'Langfuse', - description: 'Sledi, vrednoti, upravlja pozive in meri za odpravljanje napak in izboljšanje vaše aplikacije LLM.', - }, - inUse: 'V uporabi', - configProvider: { - title: 'Konfiguracija', - placeholder: 'Vnesite vaš {{key}}', - project: 'Projekt', - publicKey: 'Javni ključ', - secretKey: 'Skrivni ključ', - viewDocsLink: 'Ogled dokumentov {{key}}', - removeConfirmTitle: 'Odstraniti konfiguracijo {{key}}?', - removeConfirmContent: 'Trenutna konfiguracija je v uporabi, odstranitev bo onemogočila funkcijo sledenja.', - password: 'Geslo', - personalAccessToken: 'Osebni dostopni žeton (stari)', - experimentId: 'ID eksperimenta', - clientSecret: 'OAuth skrivnost odjemalca', - trackingUri: 'Sledenje URI', - clientId: 'ID odjemalca OAuth', - databricksHost: 'URL delovnega prostora Databricks', - username: 'Uporabniško ime', - }, - opik: { - description: 'Opik je odprtokodna platforma za ocenjevanje, testiranje in spremljanje aplikacij LLM.', - title: 'Opik', - }, - weave: { - title: 'Tkanje', - description: 'Weave je odprtokodna platforma za vrednotenje, testiranje in spremljanje aplikacij LLM.', - }, - aliyun: { - title: 'Oblačni nadzor', - description: 'Popolnoma upravljana in brez vzdrževanja platforma za opazovanje, ki jo zagotavlja Alibaba Cloud, omogoča takojšnje spremljanje, sledenje in ocenjevanje aplikacij Dify.', - }, - mlflow: { - title: 'MLflow', - description: 'Odprtokodna platforma LLMOps za sledenje eksperimentom, opazljivost in ocenjevanje, za gradnjo aplikacij AI/LLM z zaupanjem.', - }, - databricks: { - title: 'Databricks', - description: 'Databricks ponuja popolnoma upravljan MLflow z močnim upravljanjem in varnostjo za shranjevanje podatkov sledenja.', - }, - tencent: { - description: 'Tencent Application Performance Monitoring zagotavlja celovito sledenje in večdimenzionalno analizo za aplikacije LLM.', - title: 'Tencent APM', - }, - }, - mermaid: { - handDrawn: 'Ročno narisano', - classic: 'Klasičen', - }, - openInExplore: 'Odpri v razišči', - newAppFromTemplate: { - sidebar: { - Programming: 'Programiranje', - Recommended: 'Priporočljivo', - Writing: 'Pisanje', - Assistant: 'Pomočnik', - Workflow: 'Potek dela', - HR: 'HR', - Agent: 'Agent', - }, - byCategories: 'PO KATEGORIJAH', - searchAllTemplate: 'Preišči vse predloge ...', - }, - showMyCreatedAppsOnly: 'Prikaži samo aplikacije, ki sem jih ustvaril', - appSelector: { - params: 'PARAMETRI APLIKACIJE', - noParams: 'Parametri niso potrebni', - label: 'APL', - placeholder: 'Izberite aplikacijo ...', - }, - structOutput: { - configure: 'Konfiguriraj', - structured: 'Strukturirano', - modelNotSupported: 'Model ni podprt', - required: 'Zahtevano', - moreFillTip: 'Prikazovanje največ 10 ravni gnezdenja', - LLMResponse: 'LLM odziv', - notConfiguredTip: 'Strukturiranega izhoda še ni mogoče konfigurirati', - modelNotSupportedTip: 'Trenutni model ne podpira te funkcije in se samodejno zniža na vbrizgavanje pozivov.', - structuredTip: 'Strukturirani izhodi so funkcija, ki zagotavlja, da bo model vedno generiral odgovore, ki se držijo vašega posredovanega JSON sheme.', - }, - accessItemsDescription: { - anyone: 'Vsakdo lahko dostopa do spletne aplikacije', - specific: 'Samo določenim skupinam ali članom je omogočen dostop do spletne aplikacije', - organization: 'Vsakdo v organizaciji lahko dostopa do spletne aplikacije', - external: 'Samo avtentificirani zunanji uporabniki lahko dostopajo do spletne aplikacije.', - }, - accessControlDialog: { - accessItems: { - anyone: 'Kdorkoli s povezavo', - specific: 'Specifične skupine ali člani', - organization: 'Samo člani znotraj podjetja', - external: 'Avtorizirani zunanji uporabniki', - }, - operateGroupAndMember: { - searchPlaceholder: 'Išči skupine in člane', - allMembers: 'Vsi člani', - expand: 'Razširi', - noResult: 'Brez rezultata', - }, - title: 'Nadzor dostopa do spletne aplikacije', - description: 'Nastavite dovoljenja za dostop do spletne aplikacije', - accessLabel: 'Kdo ima dostop', - groups_one: '{{count}} SKUPINA', - groups_other: '{{count}} SKUPIN', - members_one: '{{count}} ČLAN', - members_other: '{{count}} ČLANOV', - updateSuccess: 'Posodobitev uspešna', - noGroupsOrMembers: 'Nobene skupine ali članov ni izbranih', - webAppSSONotEnabledTip: 'Prosimo, da se obrnete na skrbnika podjetja, da konfigurira način avtentikacije spletne aplikacije.', - }, - publishApp: { - title: 'Kdo lahko dostopa do spletne aplikacije', - notSet: 'Ni nastavljeno', - notSetDesc: 'Trenutno nihče ne more dostopati do spletne aplikacije. Prosimo, nastavite dovoljenja.', - }, - accessControl: 'Nadzor dostopa do spletne aplikacije', - noAccessPermission: 'Brez dovoljenja za dostop do spletne aplikacije', - maxActiveRequestsPlaceholder: 'Vnesite 0 za neomejeno', - maxActiveRequests: 'Maksimalno število hkratnih zahtevkov', - maxActiveRequestsTip: 'Največje število hkrati aktivnih zahtevkov na aplikacijo (0 za neomejeno)', - gotoAnything: { - actions: { - searchWorkflowNodes: 'Iskanje vozlišč poteka dela', - searchKnowledgeBasesDesc: 'Iskanje in krmarjenje do zbirk znanja', - searchWorkflowNodesHelp: 'Ta funkcija deluje le pri ogledu poteka dela. Najprej se pomaknite do poteka dela.', - searchApplicationsDesc: 'Iskanje in krmarjenje do aplikacij', - searchPlugins: 'Iskanje vtičnikov', - searchApplications: 'Iskanje aplikacij', - searchWorkflowNodesDesc: 'Iskanje vozlišč in skok nanje v trenutnem poteku dela po imenu ali vrsti', - searchKnowledgeBases: 'Iskanje po zbirkah znanja', - searchPluginsDesc: 'Iskanje in krmarjenje do vtičnikov', - themeCategoryTitle: 'Tema', - themeLight: 'Svetla tematika', - runTitle: 'Ukazi', - themeSystem: 'Sistem tema', - themeDarkDesc: 'Uporabite temen način', - themeLightDesc: 'Uporabite svetlo prikazovanje', - themeCategoryDesc: 'Preklopi temo aplikacije', - themeDark: 'Temna tema', - languageCategoryDesc: 'Preklopi jezik vmesnika', - languageCategoryTitle: 'Jezik', - themeSystemDesc: 'Sledite videzu svojega operacijskega sistema', - runDesc: 'Zaženi hitre ukaze (teme, jezik, ...)', - languageChangeDesc: 'Spremeni jezik vmesnika', - slashDesc: 'Izvedi ukaze kot so /tema, /jezik', - accountDesc: 'Pojdite na stran računa', - docDesc: 'Odprite pomoč dokumentacijo', - feedbackDesc: 'Razprave o povratnih informacijah odprte skupnosti', - communityDesc: 'Odpri Discord skupnost', - zenTitle: 'Zen Mode', - zenDesc: 'Toggle canvas focus mode', - }, - emptyState: { - noPluginsFound: 'Vtičnikov ni mogoče najti', - noWorkflowNodesFound: 'Vozlišča poteka dela niso bila najdena', - noKnowledgeBasesFound: 'Zbirk znanja ni mogoče najti', - noAppsFound: 'Ni bilo najdenih aplikacij', - tryDifferentTerm: 'Poskusite z drugim iskalnim izrazom ali odstranite filter {{mode}}', - trySpecificSearch: 'Poskusite {{shortcuts}} za specifična iskanja', - }, - groups: { - workflowNodes: 'Vozlišča poteka dela', - apps: 'Aplikacije', - knowledgeBases: 'Baze znanja', - plugins: 'Vtičniki', - commands: 'Ukazi', - }, - searching: 'Iskanje...', - searchTitle: 'Poiščite karkoli', - searchTemporarilyUnavailable: 'Iskanje začasno ni na voljo', - someServicesUnavailable: 'Nekatere iskalne storitve niso na voljo', - noResults: 'Ni najdenih rezultatov', - clearToSearchAll: 'Počisti @ za iskanje vseh', - searchPlaceholder: 'Poiščite ali vnesite @ za ukaze ...', - searchFailed: 'Iskanje ni uspelo', - useAtForSpecific: 'Uporaba znaka @ za določene vrste', - servicesUnavailableMessage: 'Pri nekaterih iskalnih storitvah se morda pojavljajo težave. Poskusite znova čez trenutek.', - commandHint: 'Vnesite @ za brskanje po kategoriji', - selectSearchType: 'Izberite, kaj želite iskati', - searchHint: 'Začnite tipkati, da takoj preiščete vse', - resultCount: '{{count}} rezultat', - resultCount_other: '{{count}} rezultatov', - inScope: 'v {{scope}}s', - tryDifferentSearch: 'Poskusite uporabiti drug iskalni izraz', - noMatchingCommands: 'Ujemajoči se ukazi niso našli', - slashHint: 'Vnesite / za ogled vseh razpoložljivih ukazov', - startTyping: 'Začnite vnašati za iskanje', - pressEscToClose: 'Pritisnite ESC za zapiranje', - selectToNavigate: 'Izberite za navigacijo', - tips: 'Pritisnite ↑↓ za navigacijo', - }, - notPublishedYet: 'Aplikacija še ni objavljena', - noUserInputNode: 'Manjka vozel uporabniškega vnosa', -} - -export default translation diff --git a/web/i18n/sl-SI/billing.json b/web/i18n/sl-SI/billing.json new file mode 100644 index 0000000000..4c01463667 --- /dev/null +++ b/web/i18n/sl-SI/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "Trenutni načrt", + "upgradeBtn": { + "plain": "Nadgradi načrt", + "encourage": "Nadgradi zdaj", + "encourageShort": "Nadgradi" + }, + "viewBilling": "Upravljanje s plačili in naročninami", + "buyPermissionDeniedTip": "Za naročnino kontaktirajte svojega skrbnika podjetja", + "plansCommon": { + "yearlyTip": "Z letno naročnino pridobite 2 meseca brezplačno!", + "mostPopular": "Najbolj priljubljeno", + "planRange": { + "monthly": "Mesečno", + "yearly": "Letno" + }, + "month": "mesec", + "year": "leto", + "save": "Prihranite ", + "free": "Brezplačno", + "currentPlan": "Trenutni načrt", + "contractSales": "Kontaktirajte prodajo", + "contractOwner": "Kontaktirajte upravitelja ekipe", + "startForFree": "Začnite brezplačno", + "contactSales": "Kontaktirajte prodajo", + "talkToSales": "Pogovorite se s prodajo", + "modelProviders": "Ponudniki modelov", + "annotationQuota": "Kvote za označevanje", + "buildApps": "Gradite aplikacije", + "vectorSpace": "Prostor za vektorje", + "vectorSpaceTooltip": "Prostor za vektorje je dolgoročni pomnilniški sistem, potreben za to, da LLM-ji razumejo vaše podatke.", + "documentProcessingPriority": "Prioriteta obdelave dokumentov", + "documentProcessingPriorityTip": "Za višjo prednost obdelave dokumentov nadgradite svoj načrt.", + "documentProcessingPriorityUpgrade": "Obdelujte več podatkov z večjo natančnostjo in hitrostjo.", + "priority": { + "standard": "Standard", + "priority": "Prioriteta", + "top-priority": "Najvišja prioriteta" + }, + "logsHistory": "Zgodovina dnevnikov", + "customTools": "Prilagojena orodja", + "unavailable": "Ni na voljo", + "days": "dni", + "unlimited": "Neomejeno", + "support": "Podpora", + "supportItems": { + "communityForums": "Skupnostni forumi", + "emailSupport": "Podpora preko e-pošte", + "priorityEmail": "Prioritetna podpora preko e-pošte in klepeta", + "logoChange": "Sprememba logotipa", + "SSOAuthentication": "SSO avtentikacija", + "personalizedSupport": "Osebna podpora", + "dedicatedAPISupport": "Namenska podpora API-ju", + "customIntegration": "Prilagojena integracija in podpora", + "ragAPIRequest": "RAG API zahtevki", + "bulkUpload": "Masovni prenos dokumentov", + "agentMode": "Način agenta", + "workflow": "Potek dela", + "llmLoadingBalancing": "LLM uravnoteženje obremenitve", + "llmLoadingBalancingTooltip": "Dodajte več API ključev modelom, kar učinkovito preseže omejitve hitrosti API-ja." + }, + "comingSoon": "Kmalu na voljo", + "member": "Član", + "memberAfter": "Član", + "messageRequest": { + "title": "Krediti za sporočila", + "tooltip": "Kvota za klice sporočil pri različnih načrtih z uporabo modelov OpenAI (razen GPT-4). Sporočila preko omejitve bodo uporabljala vaš OpenAI API ključ.", + "titlePerMonth": "{{count,number}} sporočil/mesec" + }, + "annotatedResponse": { + "title": "Omejitve kvote za označevanje", + "tooltip": "Ročno urejanje in označevanje odgovorov omogoča prilagojeno visoko kakovostno odgovarjanje na vprašanja v aplikacijah. (Velja samo za klepetalne aplikacije)" + }, + "ragAPIRequestTooltip": "Nanaša se na število API klicev, ki vključujejo samo sposobnosti obdelave baze znanja Dify.", + "receiptInfo": "Le lastnik ekipe in skrbnik ekipe lahko naročita in si ogledate podatke o plačilih", + "self": "Samostojno gostovanje", + "documents": "{{count,number}} dokumentov znanja", + "documentsTooltip": "Kvote na število dokumentov, uvoženih iz Vir podatkov znanja.", + "teamWorkspace": "{{count,number}} Ekipa delovni prostor", + "apiRateLimit": "Omejitev hitrosti API-ja", + "unlimitedApiRate": "Brez omejitve hitrostnega limita API-ja", + "comparePlanAndFeatures": "Primerjajte načrte in funkcije", + "apiRateLimitTooltip": "API omejitev hitrosti velja za vse poizvedbe, opravljene prek Dify API, vključno z generiranjem besedila, klepetnimi pogovori, izvajanjem delovnih tokov in obdelavo dokumentov.", + "freeTrialTipSuffix": "Brez zahteve po kreditni kartici", + "annualBilling": "Letno račунovodstvo", + "teamMember_one": "{{count,number}} član ekipe", + "teamMember_other": "{{count,number}} Članov ekipe", + "documentsRequestQuota": "{{count,number}}/min Omejitev stopnje zahtev po znanju", + "apiRateLimitUnit": "{{count,number}}", + "priceTip": "na delovnem prostoru/", + "freeTrialTipPrefix": "Prijavite se in prejmite", + "cloud": "Oblačna storitev", + "freeTrialTip": "brezplačno preizkušnjo 200 klicev OpenAI.", + "getStarted": "Začnite", + "documentsRequestQuotaTooltip": "Določa skupno število dejanj, ki jih lahko delovno mesto opravi na minuto znotraj znanja baze, vključno s kreiranjem, brisanjem, posodobitvami, nalaganjem dokumentov, spremembami, arhiviranjem in poizvedbami po znanju bazi. Ta meritev se uporablja za ocenjevanje uspešnosti poizvedb v bazi znanja. Na primer, če uporabnik Sandbox izvede 10 zaporednih testov udarca v eni minuti, bo njegovo delovno mesto začasno omejeno pri izvajanju naslednjih dejanj v naslednji minuti: kreiranje podatkovnih nizov, brisanje, posodobitve in nalaganje ali spremembe dokumentov.", + "startBuilding": "Začnite graditi", + "taxTip": "Vse cene naročnin (mesečne/letne) ne vključujejo veljavnih davkov (npr. DDV, davek na promet).", + "taxTipSecond": "Če vaša regija nima veljavnih davčnih zahtev, se v vaši košarici ne bo prikazal noben davek in za celotno obdobje naročnine vam ne bodo zaračunani nobeni dodatni stroški.", + "triggerEvents": { + "unlimited": "Neomejeni sprožilni dogodki", + "tooltip": "Število dogodkov, ki samodejno sprožijo delovne tokove prek vtičnika, urnika ali sprožilcev spletnih klicev.", + "sandbox": "{{count,number}} Sprožilni dogodki", + "professional": "{{count,number}} Sprožilni dogodki/mesec" + }, + "workflowExecution": { + "standard": "Izvajanje standardnega delovnega procesa", + "priority": "Izvajanje prednostnega poteka dela", + "tooltip": "Prednostna vrstni red in hitrost izvajanja delovnega toka.", + "faster": "Hitrejše izvajanje delovnega procesa" + }, + "startNodes": { + "unlimited": "Neomejeni sprožilci/poteki dela", + "limited": "Do {{count}} sprožilcev/poteka dela" + }, + "title": { + "plans": "plani", + "description": "Izberite načrt, ki najbolj ustreza potrebam vaše ekipe." + } + }, + "plans": { + "sandbox": { + "name": "Peskovnik", + "description": "200 brezplačnih poskusov GPT", + "for": "Brezplačno preizkušanje osnovnih zmogljivosti" + }, + "professional": { + "name": "Profesionalni", + "description": "Za posameznike in male ekipe, da odklenete več zmogljivosti po ugodni ceni.", + "for": "Za neodvisne razvijalce/male ekipe" + }, + "team": { + "name": "Ekipa", + "description": "Sodelujte brez omejitev in uživajte v vrhunski zmogljivosti.", + "for": "Za srednje velike ekipe" + }, + "enterprise": { + "name": "Podjetje", + "description": "Pridobite vse zmogljivosti in podporo za velike sisteme kritične za misijo.", + "includesTitle": "Vse v načrtu Ekipa, plus:", + "features": [ + "Razširljive rešitve za uvajanje na ravni podjetja", + "Pooblastilo za komercialno licenco", + "Ekskluzivne funkcije za podjetja", + "Več delovnih prostorov in upravljanje podjetja", + "SSO", + "Pogajani SLA-ji s strani partnerjev Dify", + "Napredna varnost in nadzor", + "Posodobitve in vzdrževanje s strani Dify uradno", + "Strokovna tehnična podpora" + ], + "priceTip": "Letno zaračunavanje samo", + "price": "Po meri", + "btnText": "Kontaktirajte prodajo", + "for": "Za velike ekipe" + }, + "community": { + "features": [ + "Vse osnovne funkcije so izdane v javni repozitorij", + "Enotno delovno okolje", + "V skladu z Dify licenco odprte kode" + ], + "includesTitle": "Brezplačne funkcije:", + "price": "Brezplačno", + "name": "Skupnost", + "description": "Za posamezne uporabnike, majhne skupine ali nekomercialne projekte", + "for": "Za posamezne uporabnike, majhne skupine ali nekomercialne projekte", + "btnText": "Začnite s skupnostjo" + }, + "premium": { + "features": [ + "Samo-upravljana zanesljivost različnih ponudnikov oblaka", + "Enotno delovno okolje", + "Prilagoditev logotipa in blagovne znamke spletne aplikacije", + "Prioritetna e-pošta in klepet v živo" + ], + "name": "Premium", + "priceTip": "Na podlagi oblaka Marketplace", + "price": "Škalable", + "includesTitle": "Vse iz skupnosti, poleg tega:", + "comingSoon": "Podpora za Microsoft Azure in Google Cloud kmalu prihaja", + "for": "Za srednje velika podjetja in ekipe", + "btnText": "Pridobi Premium v", + "description": "Za srednje velika podjetja in ekipe" + } + }, + "vectorSpace": { + "fullTip": "Prostor za vektorje je poln.", + "fullSolution": "Nadgradite svoj načrt za več prostora." + }, + "apps": { + "fullTip1des": "Dosegli ste omejitev za izdelavo aplikacij v tem načrtu.", + "fullTip1": "Nadgradite za ustvarjanje več aplikacij", + "fullTip2": "Dosežena meja načrta", + "contactUs": "Kontaktirajte nas", + "fullTip2des": "Priporočljivo je, da očistite neaktivne aplikacije, da sprostite prostor, ali nas kontaktirate." + }, + "annotatedResponse": { + "fullTipLine1": "Nadgradite svoj načrt, da", + "fullTipLine2": "označite več pogovorov.", + "quotaTitle": "Kvote za odgovor z označevanjem" + }, + "usagePage": { + "documentsUploadQuota": "Kvota za nalaganje dokumentov", + "vectorSpaceTooltip": "Dokumenti z načinom indeksiranja visoke kakovosti bodo porabili vire skladišča podatkov o znanju. Ko skladišče podatkov o znanju doseže mejo, novih dokumentov ne bo mogoče naložiti.", + "vectorSpace": "Shranjevanje podatkov znanja", + "annotationQuota": "Quota za anotacijo", + "teamMembers": "Člani ekipe", + "buildApps": "Gradite aplikacije", + "perMonth": "na mesec", + "triggerEvents": "Sprožilni dogodki", + "resetsIn": "Ponastavitve čez {{count,number}} dni" + }, + "teamMembers": "Člani ekipe", + "triggerLimitModal": { + "dismiss": "Zavrni", + "usageTitle": "SPROŽITVENI DOGODKI", + "description": "Dosegli ste omejitev sprožilcev dogodkov delovnega toka za ta načrt.", + "title": "Nadgradite za odklep več sprožilnih dogodkov", + "upgrade": "Nadgradnja" + }, + "viewBillingTitle": "Fakturiranje in naročnine", + "viewBillingDescription": "Upravljajte načine plačila, račune in spremembe naročnin", + "viewBillingAction": "Upravljaj", + "upgrade": { + "uploadMultiplePages": { + "title": "Nadgradite za nalaganje več dokumentov hkrati", + "description": "Dosegli ste omejitev nalaganja — na vašem trenutnem načrtu je mogoče izbrati in naložiti le en dokument naenkrat." + }, + "uploadMultipleFiles": { + "title": "Nadgradite za odklep nalaganja dokumentov v skupkih", + "description": "Naložite več dokumentov hkrati, da prihranite čas in izboljšate učinkovitost." + }, + "addChunks": { + "title": "Nadgradite, da nadaljujete z dodajanjem delov", + "description": "Dosegli ste omejitev dodajanja delov za ta načrt." + } + } +} diff --git a/web/i18n/sl-SI/billing.ts b/web/i18n/sl-SI/billing.ts deleted file mode 100644 index 5dabcc9f02..0000000000 --- a/web/i18n/sl-SI/billing.ts +++ /dev/null @@ -1,221 +0,0 @@ -const translation = { - currentPlan: 'Trenutni načrt', - upgradeBtn: { - plain: 'Nadgradi načrt', - encourage: 'Nadgradi zdaj', - encourageShort: 'Nadgradi', - }, - viewBilling: 'Upravljanje s plačili in naročninami', - buyPermissionDeniedTip: 'Za naročnino kontaktirajte svojega skrbnika podjetja', - plansCommon: { - yearlyTip: 'Z letno naročnino pridobite 2 meseca brezplačno!', - mostPopular: 'Najbolj priljubljeno', - planRange: { - monthly: 'Mesečno', - yearly: 'Letno', - }, - month: 'mesec', - year: 'leto', - save: 'Prihranite ', - free: 'Brezplačno', - currentPlan: 'Trenutni načrt', - contractSales: 'Kontaktirajte prodajo', - contractOwner: 'Kontaktirajte upravitelja ekipe', - startForFree: 'Začnite brezplačno', - contactSales: 'Kontaktirajte prodajo', - talkToSales: 'Pogovorite se s prodajo', - modelProviders: 'Ponudniki modelov', - annotationQuota: 'Kvote za označevanje', - buildApps: 'Gradite aplikacije', - vectorSpace: 'Prostor za vektorje', - vectorSpaceTooltip: 'Prostor za vektorje je dolgoročni pomnilniški sistem, potreben za to, da LLM-ji razumejo vaše podatke.', - documentProcessingPriority: 'Prioriteta obdelave dokumentov', - documentProcessingPriorityTip: 'Za višjo prednost obdelave dokumentov nadgradite svoj načrt.', - documentProcessingPriorityUpgrade: 'Obdelujte več podatkov z večjo natančnostjo in hitrostjo.', - priority: { - 'standard': 'Standard', - 'priority': 'Prioriteta', - 'top-priority': 'Najvišja prioriteta', - }, - logsHistory: 'Zgodovina dnevnikov', - customTools: 'Prilagojena orodja', - unavailable: 'Ni na voljo', - days: 'dni', - unlimited: 'Neomejeno', - support: 'Podpora', - supportItems: { - communityForums: 'Skupnostni forumi', - emailSupport: 'Podpora preko e-pošte', - priorityEmail: 'Prioritetna podpora preko e-pošte in klepeta', - logoChange: 'Sprememba logotipa', - SSOAuthentication: 'SSO avtentikacija', - personalizedSupport: 'Osebna podpora', - dedicatedAPISupport: 'Namenska podpora API-ju', - customIntegration: 'Prilagojena integracija in podpora', - ragAPIRequest: 'RAG API zahtevki', - bulkUpload: 'Masovni prenos dokumentov', - agentMode: 'Način agenta', - workflow: 'Potek dela', - llmLoadingBalancing: 'LLM uravnoteženje obremenitve', - llmLoadingBalancingTooltip: 'Dodajte več API ključev modelom, kar učinkovito preseže omejitve hitrosti API-ja.', - }, - comingSoon: 'Kmalu na voljo', - member: 'Član', - memberAfter: 'Član', - messageRequest: { - title: 'Krediti za sporočila', - tooltip: 'Kvota za klice sporočil pri različnih načrtih z uporabo modelov OpenAI (razen GPT-4). Sporočila preko omejitve bodo uporabljala vaš OpenAI API ključ.', - titlePerMonth: '{{count,number}} sporočil/mesec', - }, - annotatedResponse: { - title: 'Omejitve kvote za označevanje', - tooltip: 'Ročno urejanje in označevanje odgovorov omogoča prilagojeno visoko kakovostno odgovarjanje na vprašanja v aplikacijah. (Velja samo za klepetalne aplikacije)', - }, - ragAPIRequestTooltip: 'Nanaša se na število API klicev, ki vključujejo samo sposobnosti obdelave baze znanja Dify.', - receiptInfo: 'Le lastnik ekipe in skrbnik ekipe lahko naročita in si ogledate podatke o plačilih', - self: 'Samostojno gostovanje', - documents: '{{count,number}} dokumentov znanja', - documentsTooltip: 'Kvote na število dokumentov, uvoženih iz Vir podatkov znanja.', - teamWorkspace: '{{count,number}} Ekipa delovni prostor', - apiRateLimit: 'Omejitev hitrosti API-ja', - unlimitedApiRate: 'Brez omejitve hitrostnega limita API-ja', - comparePlanAndFeatures: 'Primerjajte načrte in funkcije', - apiRateLimitTooltip: 'API omejitev hitrosti velja za vse poizvedbe, opravljene prek Dify API, vključno z generiranjem besedila, klepetnimi pogovori, izvajanjem delovnih tokov in obdelavo dokumentov.', - freeTrialTipSuffix: 'Brez zahteve po kreditni kartici', - annualBilling: 'Letno račунovodstvo', - teamMember_one: '{{count,number}} član ekipe', - teamMember_other: '{{count,number}} Članov ekipe', - documentsRequestQuota: '{{count,number}}/min Omejitev stopnje zahtev po znanju', - apiRateLimitUnit: '{{count,number}}', - priceTip: 'na delovnem prostoru/', - freeTrialTipPrefix: 'Prijavite se in prejmite', - cloud: 'Oblačna storitev', - freeTrialTip: 'brezplačno preizkušnjo 200 klicev OpenAI.', - getStarted: 'Začnite', - documentsRequestQuotaTooltip: 'Določa skupno število dejanj, ki jih lahko delovno mesto opravi na minuto znotraj znanja baze, vključno s kreiranjem, brisanjem, posodobitvami, nalaganjem dokumentov, spremembami, arhiviranjem in poizvedbami po znanju bazi. Ta meritev se uporablja za ocenjevanje uspešnosti poizvedb v bazi znanja. Na primer, če uporabnik Sandbox izvede 10 zaporednih testov udarca v eni minuti, bo njegovo delovno mesto začasno omejeno pri izvajanju naslednjih dejanj v naslednji minuti: kreiranje podatkovnih nizov, brisanje, posodobitve in nalaganje ali spremembe dokumentov.', - startBuilding: 'Začnite graditi', - taxTip: 'Vse cene naročnin (mesečne/letne) ne vključujejo veljavnih davkov (npr. DDV, davek na promet).', - taxTipSecond: 'Če vaša regija nima veljavnih davčnih zahtev, se v vaši košarici ne bo prikazal noben davek in za celotno obdobje naročnine vam ne bodo zaračunani nobeni dodatni stroški.', - triggerEvents: { - unlimited: 'Neomejeni sprožilni dogodki', - tooltip: 'Število dogodkov, ki samodejno sprožijo delovne tokove prek vtičnika, urnika ali sprožilcev spletnih klicev.', - sandbox: '{{count,number}} Sprožilni dogodki', - professional: '{{count,number}} Sprožilni dogodki/mesec', - }, - workflowExecution: { - standard: 'Izvajanje standardnega delovnega procesa', - priority: 'Izvajanje prednostnega poteka dela', - tooltip: 'Prednostna vrstni red in hitrost izvajanja delovnega toka.', - faster: 'Hitrejše izvajanje delovnega procesa', - }, - startNodes: { - unlimited: 'Neomejeni sprožilci/poteki dela', - limited: 'Do {{count}} sprožilcev/poteka dela', - }, - title: { - plans: 'plani', - description: 'Izberite načrt, ki najbolj ustreza potrebam vaše ekipe.', - }, - }, - plans: { - sandbox: { - name: 'Peskovnik', - description: '200 brezplačnih poskusov GPT', - for: 'Brezplačno preizkušanje osnovnih zmogljivosti', - }, - professional: { - name: 'Profesionalni', - description: 'Za posameznike in male ekipe, da odklenete več zmogljivosti po ugodni ceni.', - for: 'Za neodvisne razvijalce/male ekipe', - }, - team: { - name: 'Ekipa', - description: 'Sodelujte brez omejitev in uživajte v vrhunski zmogljivosti.', - for: 'Za srednje velike ekipe', - }, - enterprise: { - name: 'Podjetje', - description: 'Pridobite vse zmogljivosti in podporo za velike sisteme kritične za misijo.', - includesTitle: 'Vse v načrtu Ekipa, plus:', - features: ['Razširljive rešitve za uvajanje na ravni podjetja', 'Pooblastilo za komercialno licenco', 'Ekskluzivne funkcije za podjetja', 'Več delovnih prostorov in upravljanje podjetja', 'SSO', 'Pogajani SLA-ji s strani partnerjev Dify', 'Napredna varnost in nadzor', 'Posodobitve in vzdrževanje s strani Dify uradno', 'Strokovna tehnična podpora'], - priceTip: 'Letno zaračunavanje samo', - price: 'Po meri', - btnText: 'Kontaktirajte prodajo', - for: 'Za velike ekipe', - }, - community: { - features: ['Vse osnovne funkcije so izdane v javni repozitorij', 'Enotno delovno okolje', 'V skladu z Dify licenco odprte kode'], - includesTitle: 'Brezplačne funkcije:', - price: 'Brezplačno', - name: 'Skupnost', - description: 'Za posamezne uporabnike, majhne skupine ali nekomercialne projekte', - for: 'Za posamezne uporabnike, majhne skupine ali nekomercialne projekte', - btnText: 'Začnite s skupnostjo', - }, - premium: { - features: ['Samo-upravljana zanesljivost različnih ponudnikov oblaka', 'Enotno delovno okolje', 'Prilagoditev logotipa in blagovne znamke spletne aplikacije', 'Prioritetna e-pošta in klepet v živo'], - name: 'Premium', - priceTip: 'Na podlagi oblaka Marketplace', - price: 'Škalable', - includesTitle: 'Vse iz skupnosti, poleg tega:', - comingSoon: 'Podpora za Microsoft Azure in Google Cloud kmalu prihaja', - for: 'Za srednje velika podjetja in ekipe', - btnText: 'Pridobi Premium v', - description: 'Za srednje velika podjetja in ekipe', - }, - }, - vectorSpace: { - fullTip: 'Prostor za vektorje je poln.', - fullSolution: 'Nadgradite svoj načrt za več prostora.', - }, - apps: { - fullTip1des: 'Dosegli ste omejitev za izdelavo aplikacij v tem načrtu.', - fullTip1: 'Nadgradite za ustvarjanje več aplikacij', - fullTip2: 'Dosežena meja načrta', - contactUs: 'Kontaktirajte nas', - fullTip2des: 'Priporočljivo je, da očistite neaktivne aplikacije, da sprostite prostor, ali nas kontaktirate.', - }, - annotatedResponse: { - fullTipLine1: 'Nadgradite svoj načrt, da', - fullTipLine2: 'označite več pogovorov.', - quotaTitle: 'Kvote za odgovor z označevanjem', - }, - usagePage: { - documentsUploadQuota: 'Kvota za nalaganje dokumentov', - vectorSpaceTooltip: 'Dokumenti z načinom indeksiranja visoke kakovosti bodo porabili vire skladišča podatkov o znanju. Ko skladišče podatkov o znanju doseže mejo, novih dokumentov ne bo mogoče naložiti.', - vectorSpace: 'Shranjevanje podatkov znanja', - annotationQuota: 'Quota za anotacijo', - teamMembers: 'Člani ekipe', - buildApps: 'Gradite aplikacije', - perMonth: 'na mesec', - triggerEvents: 'Sprožilni dogodki', - resetsIn: 'Ponastavitve čez {{count,number}} dni', - }, - teamMembers: 'Člani ekipe', - triggerLimitModal: { - dismiss: 'Zavrni', - usageTitle: 'SPROŽITVENI DOGODKI', - description: 'Dosegli ste omejitev sprožilcev dogodkov delovnega toka za ta načrt.', - title: 'Nadgradite za odklep več sprožilnih dogodkov', - upgrade: 'Nadgradnja', - }, - viewBillingTitle: 'Fakturiranje in naročnine', - viewBillingDescription: 'Upravljajte načine plačila, račune in spremembe naročnin', - viewBillingAction: 'Upravljaj', - upgrade: { - uploadMultiplePages: { - title: 'Nadgradite za nalaganje več dokumentov hkrati', - description: 'Dosegli ste omejitev nalaganja — na vašem trenutnem načrtu je mogoče izbrati in naložiti le en dokument naenkrat.', - }, - uploadMultipleFiles: { - title: 'Nadgradite za odklep nalaganja dokumentov v skupkih', - description: 'Naložite več dokumentov hkrati, da prihranite čas in izboljšate učinkovitost.', - }, - addChunks: { - title: 'Nadgradite, da nadaljujete z dodajanjem delov', - description: 'Dosegli ste omejitev dodajanja delov za ta načrt.', - }, - }, -} - -export default translation diff --git a/web/i18n/sl-SI/common.json b/web/i18n/sl-SI/common.json new file mode 100644 index 0000000000..3a67e1d9bd --- /dev/null +++ b/web/i18n/sl-SI/common.json @@ -0,0 +1,785 @@ +{ + "api": { + "success": "Uspeh", + "actionSuccess": "Dejanje je uspelo", + "saved": "Shranjeno", + "create": "Ustvarjeno", + "remove": "Odstranjeno", + "actionFailed": "Dejanje ni uspelo" + }, + "operation": { + "create": "Ustvari", + "confirm": "Potrdi", + "cancel": "Prekliči", + "clear": "Počisti", + "save": "Shrani", + "saveAndEnable": "Shrani in omogoči", + "edit": "Uredi", + "add": "Dodaj", + "added": "Dodano", + "refresh": "Osveži", + "reset": "Ponastavi", + "search": "Išči", + "change": "Spremeni", + "remove": "Odstrani", + "send": "Pošlji", + "copy": "Kopiraj", + "lineBreak": "Prelom vrstice", + "sure": "Prepričan sem", + "download": "Prenesi", + "delete": "Izbriši", + "settings": "Nastavitve", + "setup": "Nastavitev", + "getForFree": "Dobite brezplačno", + "reload": "Ponovno naloži", + "ok": "V redu", + "log": "Dnevnik", + "learnMore": "Izvedi več", + "params": "Parametri", + "duplicate": "Podvoji", + "rename": "Preimenuj", + "audioSourceUnavailable": "Zvočni vir ni na voljo", + "copyImage": "Kopiraj sliko", + "openInNewTab": "Odpri v novem zavihku", + "zoomOut": "Pomanjšanje", + "zoomIn": "Povečava", + "saveAndRegenerate": "Shranite in regenerirajte otroške koščke", + "close": "Blizu", + "view": "Pogled", + "regenerate": "Regeneracijo", + "viewMore": "POGLEJ VEČ", + "submit": "Predložiti", + "skip": "Ladja", + "imageCopied": "Kopirana slika", + "deleteApp": "Izbriši aplikacijo", + "viewDetails": "Poglej podrobnosti", + "copied": "Kopirati", + "in": "v", + "downloadFailed": "Prenos ni uspel. Prosim, poskusite znova pozneje.", + "more": "Več", + "downloadSuccess": "Prenos končan.", + "format": "Format", + "selectAll": "Izberi vse", + "deSelectAll": "Odberi vse", + "config": "Konfiguracija", + "no": "Ne", + "confirmAction": "Prosimo, potrdite svoje dejanje.", + "deleteConfirmTitle": "Izbrisati?", + "yes": "Da", + "noSearchResults": "Ni bilo najdenih {{content}}", + "resetKeywords": "Ponastavi ključne besede", + "selectCount": "{{count}} Izbrano", + "searchCount": "Najdi {{count}} {{content}}", + "noSearchCount": "0 {{content}}", + "now": "Zdaj" + }, + "errorMsg": { + "fieldRequired": "{{field}} je obvezno", + "urlError": "url mora začeti z http:// ali https://" + }, + "placeholder": { + "input": "Vnesite prosim", + "select": "Izberite prosim", + "search": "Išči..." + }, + "voice": { + "language": { + "zhHans": "Kitajščina (poenostavljena)", + "zhHant": "Kitajščina (tradicionalna)", + "enUS": "Angleščina", + "deDE": "Nemščina", + "frFR": "Francoščina", + "esES": "Španščina", + "itIT": "Italijanščina", + "thTH": "Tajščina", + "idID": "Indonezijščina", + "jaJP": "Japonščina", + "koKR": "Korejščina", + "ptBR": "Portugalščina", + "ruRU": "Ruščina", + "ukUA": "Ukrajinščina", + "viVN": "Vietnamščina", + "plPL": "Poljščina", + "roRO": "Romunščina", + "hiIN": "Hindujščina", + "trTR": "Turščina", + "faIR": "Farsi", + "slSI": "Slovenščina", + "arTN": "Tunizijska arabščina" + } + }, + "unit": { + "char": "znaki" + }, + "actionMsg": { + "noModification": "Trenutno ni sprememb.", + "modifiedSuccessfully": "Spremenjeno uspešno", + "modifiedUnsuccessfully": "Spremenjeno neuspešno", + "copySuccessfully": "Kopirano uspešno", + "paySucceeded": "Plačilo je uspelo", + "payCancelled": "Plačilo preklicano", + "generatedSuccessfully": "Generirano uspešno", + "generatedUnsuccessfully": "Generirano neuspešno" + }, + "model": { + "params": { + "temperature": "Temperatura", + "temperatureTip": "Nadzoruje naključnost: Znižanje temperature vodi do manj naključnih zaključkov. Ko se temperatura približa ničli, bo model postal determinističen in ponavljajoč.", + "top_p": "Top P", + "top_pTip": "Nadzoruje raznolikost preko vzorčenja jedra: 0.5 pomeni, da je upoštevanih polovica vseh možnosti glede na njihovo verjetnost.", + "presence_penalty": "Kaznovanje za prisotnost", + "presence_penaltyTip": "Kako močno kaznovati nove besede, glede na to, ali so se že pojavile v besedilu.\nPovečuje verjetnost, da bo model obravnaval nove teme.", + "frequency_penalty": "Kaznovanje za frekvenco", + "frequency_penaltyTip": "Kako močno kaznovati nove besede glede na njihovo že obstoječo frekvenco v besedilu.\nZmanjšuje verjetnost, da bo model ponavljal iste vrstice.", + "max_tokens": "Največje število žetonov", + "max_tokensTip": "Uporabljeno za omejitev največje dolžine odgovora, v žetonih.\nVečje vrednosti lahko omejijo prostor za besede, zgodovino pogovorov in znanje. \nPriporočljivo je nastaviti pod dve tretjini.\ngpt-4-1106-preview, gpt-4-vision-preview maksimalno število žetonov (vnos 128k, izhod 4k)", + "maxTokenSettingTip": "Vaša nastavitev za največje število žetonov je visoka, kar lahko omeji prostor za pozive, poizvedbe in podatke. Razmislite o nastavitvi pod 2/3.", + "setToCurrentModelMaxTokenTip": "Največje število žetonov je posodobljeno na 80 % največjega števila žetonov trenutnega modela {{maxToken}}.", + "stop_sequences": "Zaporedja ustavljanja", + "stop_sequencesTip": "Do štiri zaporedja, kjer bo API prenehal generirati nadaljnje žetone. Vrnjen tekst ne bo vseboval zaporedja ustavitve.", + "stop_sequencesPlaceholder": "Vnesite zaporedje in pritisnite Tab" + }, + "tone": { + "Creative": "Kreativno", + "Balanced": "Uravnoteženo", + "Precise": "Natančno", + "Custom": "Po meri" + }, + "addMoreModel": "Pojdite v nastavitve, da dodate več modelov", + "settingsLink": "Nastavitve ponudnika modelov", + "capabilities": "Multimodalne zmogljivosti" + }, + "menus": { + "status": "beta", + "explore": "Raziskuj", + "apps": "Studio", + "plugins": "Vtičniki", + "pluginsTips": "Integrirajte vtičnike tretjih oseb ali ustvarite vtičnike, združljive s ChatGPT.", + "datasets": "Znanje", + "datasetsTips": "KMALU: Uvozite svoje besedilne podatke ali pišite podatke v realnem času preko spletnih kljuk za izboljšanje konteksta LLM.", + "newApp": "Nova aplikacija", + "newDataset": "Ustvari znanje", + "tools": "Orodja", + "exploreMarketplace": "Raziščite Marketplace", + "appDetail": "Podrobnosti o aplikaciji", + "account": "Račun" + }, + "userProfile": { + "settings": "Nastavitve", + "emailSupport": "Podpora po e-pošti", + "workspace": "Delovni prostor", + "createWorkspace": "Ustvari delovni prostor", + "helpCenter": "Pomoč", + "roadmap": "Načrt razvoja", + "community": "Skupnost", + "about": "O nas", + "logout": "Odjava", + "support": "Podpora", + "github": "GitHub", + "compliance": "Skladnost", + "contactUs": "Kontaktirajte nas", + "forum": "Forum" + }, + "settings": { + "accountGroup": "SPLOŠNO", + "workplaceGroup": "DELOVNI PROSTOR", + "account": "Moj račun", + "members": "Člani", + "billing": "Zaračunavanje", + "integrations": "Integracije", + "language": "Jezik", + "provider": "Ponudnik modelov", + "dataSource": "Vir podatkov", + "plugin": "Vtičniki", + "apiBasedExtension": "Razširitev API-ja", + "generalGroup": "SPLOŠNO" + }, + "account": { + "account": "Račun", + "myAccount": "Moj račun", + "studio": "Dify Studio", + "avatar": "Avatar", + "name": "Ime", + "email": "E-pošta", + "password": "Geslo", + "passwordTip": "Lahko nastavite stalno geslo, če ne želite uporabljati začasnih prijavnih kod", + "setPassword": "Nastavi geslo", + "resetPassword": "Ponastavi geslo", + "currentPassword": "Trenutno geslo", + "newPassword": "Novo geslo", + "confirmPassword": "Potrdi geslo", + "notEqual": "Gesli se ne ujemata.", + "langGeniusAccount": "Dify račun", + "langGeniusAccountTip": "Vaš Dify račun in povezani uporabniški podatki.", + "editName": "Uredi ime", + "showAppLength": "Prikaz {{length}} aplikacij", + "delete": "Izbriši račun", + "deleteTip": "Brisanje vašega računa bo trajno izbrisalo vse vaše podatke in jih ne bo mogoče obnoviti.", + "permanentlyDeleteButton": "Trajno izbriši račun", + "deletePrivacyLinkTip": "Za več informacij o tem, kako ravnamo z vašimi podatki, si oglejte naše", + "feedbackPlaceholder": "Neobvezno", + "sendVerificationButton": "Pošlji kodo za preverjanje", + "feedbackLabel": "Povejte nam, zakaj ste izbrisali račun?", + "verificationLabel": "Koda za preverjanje", + "verificationPlaceholder": "Prilepite 6-mestno kodo", + "deletePrivacyLink": "Pravilnik o zasebnosti.", + "deletePlaceholder": "Prosimo, vnesite svoj e-poštni naslov", + "deleteSuccessTip": "Vaš račun potrebuje čas, da dokonča brisanje. Ko bo vse končano, vam bomo poslali e-pošto.", + "feedbackTitle": "Povratne informacije", + "deleteLabel": "Za potrditev spodaj vnesite svoj e-poštni naslov", + "workspaceName": "Ime delovnega prostora", + "workspaceIcon": "Ikona delovnega prostora", + "editWorkspaceInfo": "Uredi informacije o delovnem prostoru", + "changeEmail": { + "emailPlaceholder": "Vnesite nov e-poštni naslov", + "title": "Spremeni e-pošto", + "changeTo": "Spremeni v {{email}}", + "continue": "Nadaljuj", + "codeLabel": "Koda za potrditev", + "sendVerifyCode": "Pošlji kode za preverjanje", + "verifyNew": "Potrdite svoj nov email", + "resend": "Ponovno pošlji", + "resendTip": "Niste prejeli kode?", + "resendCount": "Ponovno pošlji čez {{count}}s", + "emailLabel": "Nova e-pošta", + "existingEmail": "Uporabnik s to e-pošto že obstaja.", + "content4": "Pravkar smo vam poslali začasno verifikacijsko kodo na {{email}}.", + "content1": "Če boste nadaljevali, bomo na {{email}} poslali verifikacijsko kodo za ponovno overitev.", + "codePlaceholder": "Prilepite 6-mestno kodo", + "verifyEmail": "Potrdite svoj trenutni e-poštni naslov", + "content3": "Vnesite nov e-poštni naslov in poslali vam bomo kodo za preverjanje.", + "newEmail": "Ustvarite nov e-poštni naslov", + "content2": "Vaš trenutni elektronski naslov je {{email}}. Koda za preverjanje je bila poslana na ta elektronski naslov.", + "authTip": "Ko bo vaš e-poštni naslov spremenjen, se računi Google ali GitHub, povezani z vašim starim e-poštnim naslovom, ne bodo mogli več prijaviti v ta račun.", + "unAvailableEmail": "Ta e-pošta trenutno ni na voljo." + } + }, + "members": { + "team": "Ekipa", + "invite": "Dodaj", + "name": "IME", + "lastActive": "NAZADNJE AKTIVEN", + "role": "VLOGE", + "pending": "V teku...", + "owner": "Lastnik", + "admin": "Administrator", + "adminTip": "Lahko ustvarja aplikacije in upravlja nastavitve ekipe", + "normal": "Običajni uporabnik", + "normalTip": "Lahko uporablja samo aplikacije, ne more ustvarjati aplikacij", + "builder": "Graditelj", + "builderTip": "Lahko ustvarja in ureja lastne aplikacije", + "editor": "Urednik", + "editorTip": "Lahko ustvarja in ureja aplikacije", + "datasetOperator": "Skrbnik znanja", + "datasetOperatorTip": "Lahko upravlja samo bazo znanja", + "inviteTeamMember": "Dodaj člana ekipe", + "inviteTeamMemberTip": "Do vaših podatkov bo lahko dostopal takoj po prijavi.", + "emailNotSetup": "E-poštni strežnik ni nastavljen, zato vabil po e-pošti ni mogoče poslati. Prosimo, obvestite uporabnike o povezavi za povabilo, ki bo izdana po povabilu.", + "email": "E-pošta", + "emailInvalid": "Neveljaven format e-pošte", + "emailPlaceholder": "Vnesite e-poštne naslove", + "sendInvite": "Pošlji povabilo", + "invitedAsRole": "Povabljen kot uporabnik {{role}}", + "invitationSent": "Povabilo poslano", + "invitationSentTip": "Povabilo poslano, in po prijavi v Dify bodo imeli dostop do vaših podatkov ekipe.", + "invitationLink": "Povezava za povabilo", + "failedInvitationEmails": "Spodnji uporabniki niso bili uspešno povabljeni", + "ok": "V redu", + "removeFromTeam": "Odstrani iz ekipe", + "removeFromTeamTip": "Odstranjen bo dostop do ekipe", + "setAdmin": "Nastavi za administratorja", + "setMember": "Nastavi za običajnega člana", + "setBuilder": "Nastavi za graditelja", + "setEditor": "Nastavi za urednika", + "disInvite": "Prekliči povabilo", + "deleteMember": "Izbriši člana", + "you": "(Vi)", + "transferModal": { + "codeLabel": "Koda za potrditev", + "resendTip": "Niste prejeli kode?", + "continue": "Nadaljuj", + "transferLabel": "Prenesite lastništvo delovnega prostora na", + "resend": "Ponovno pošlji", + "verifyEmail": "Potrdite svoj trenutni e-poštni naslov", + "codePlaceholder": "Prilepite 6-mestno kodo", + "transferPlaceholder": "Izberite člana delovnega prostora…", + "transfer": "Prenos lastništva delovnega prostora", + "resendCount": "Ponovno pošlji čez {{count}}s", + "verifyContent2": "Na ta e-poštni naslov bomo poslali začasno verifikacijsko kodo za ponovno overitev.", + "warningTip": "Postali boste član administracije, novi lastnik pa bo imel popoln nadzor.", + "warning": "Pripravljate se prenesti lastništvo nad \"{{workspace}}\". To začne veljati takoj in tega ni mogoče razveljaviti.", + "title": "Prenos lastništva delovnega prostora", + "sendVerifyCode": "Pošlji kode za preverjanje", + "sendTip": "Če boste nadaljevali, bomo na {{email}} poslali verifikacijsko kodo za ponovno overitev.", + "verifyContent": "Vaš trenutni e-poštni naslov je {{email}}." + }, + "transferOwnership": "Prenos lastništva" + }, + "integrations": { + "connected": "Povezano", + "google": "Google", + "googleAccount": "Prijavite se z Google računom", + "github": "GitHub", + "githubAccount": "Prijavite se z GitHub računom", + "connect": "Poveži" + }, + "language": { + "displayLanguage": "Jezik prikaza", + "timezone": "Časovni pas" + }, + "provider": { + "apiKey": "API ključ", + "enterYourKey": "Vnesite svoj API ključ tukaj", + "invalidKey": "Neveljaven OpenAI API ključ", + "validatedError": "Preverjanje ni uspelo: ", + "validating": "Preverjam ključ...", + "saveFailed": "Shranjevanje API ključa ni uspelo", + "apiKeyExceedBill": "Ta API ključ nima več na voljo kvote, preberite", + "addKey": "Dodaj ključ", + "comingSoon": "Kmalu", + "editKey": "Uredi", + "invalidApiKey": "Neveljaven API ključ", + "azure": { + "apiBase": "API Osnova", + "apiBasePlaceholder": "URL API osnove vašega Azure OpenAI končnega mesta.", + "apiKey": "API ključ", + "apiKeyPlaceholder": "Vnesite svoj API ključ tukaj", + "helpTip": "Spoznajte Azure OpenAI storitev" + }, + "openaiHosted": { + "openaiHosted": "Gostovani OpenAI", + "onTrial": "NA PREIZKUSU", + "exhausted": "KVOTA PORABLJENA", + "desc": "Gostitvena storitev OpenAI, ki jo ponuja Dify, vam omogoča uporabo modelov, kot je GPT-3.5. Preden porabite kvoto za preizkus, morate nastaviti druge ponudnike modelov.", + "callTimes": "Časi klicev", + "usedUp": "Kvota za preizkus porabljena. Dodajte svojega ponudnika modelov.", + "useYourModel": "Trenutno uporabljate svojega ponudnika modelov.", + "close": "Zapri" + }, + "anthropicHosted": { + "anthropicHosted": "Anthropic Claude", + "onTrial": "NA PREIZKUSU", + "exhausted": "KVOTA PORABLJENA", + "desc": "Zmogljiv model, ki se odlično obnese pri različnih nalogah, od sofisticiranega dialoga in ustvarjanja kreativnih vsebin do podrobnih navodil.", + "callTimes": "Časi klicev", + "usedUp": "Kvota za preizkus porabljena. Dodajte svojega ponudnika modelov.", + "useYourModel": "Trenutno uporabljate svojega ponudnika modelov.", + "close": "Zapri", + "trialQuotaTip": "Vaša kvota za preskušanje antropičnih izdelkov bo potekla 11.3.2025 in po tem datumu ne bo več na voljo. Prosimo, da jo pravočasno izkoristite." + }, + "anthropic": { + "using": "Zmožnost vdelave uporablja", + "enableTip": "Za omogočitev modela Anthropic morate najprej povezati OpenAI ali Azure OpenAI storitev.", + "notEnabled": "Ni omogočeno", + "keyFrom": "Pridobite svoj API ključ pri Anthropic" + }, + "encrypted": { + "front": "Vaš API ključ bo šifriran in shranjen z uporabo", + "back": " tehnologije." + } + }, + "modelProvider": { + "notConfigured": "Sistemski model še ni popolnoma konfiguriran, nekatere funkcije morda ne bodo na voljo.", + "systemModelSettings": "Nastavitve sistemskega modela", + "systemModelSettingsLink": "Zakaj je potrebno nastaviti sistemski model?", + "selectModel": "Izberite svoj model", + "setupModelFirst": "Najprej nastavite svoj model", + "systemReasoningModel": { + "key": "Sistemski model za sklepanja", + "tip": "Nastavite privzeti model za sklepanja, ki se bo uporabljal za ustvarjanje aplikacij, kot tudi funkcije, kot so generiranje imen dialogov in predlaganje naslednjih vprašanj." + }, + "embeddingModel": { + "key": "Model za vdelavo", + "tip": "Nastavite privzeti model za obdelavo vdelave dokumentov znanja, tako pri iskanju kot pri uvozu znanja se uporablja ta model za vektorizacijo. Preklop bo povzročil neusklajenost vektorske dimenzije med uvoženim znanjem in vprašanjem, kar bo povzročilo neuspešno iskanje. Da bi se izognili neuspehu pri iskanju, ne preklapljajte tega modela brez potrebe.", + "required": "Model za vdelavo je obvezen" + }, + "speechToTextModel": { + "key": "Model za pretvorbo govora v besedilo", + "tip": "Nastavite privzeti model za vnos govora v besedilo v pogovoru." + }, + "ttsModel": { + "key": "Model za pretvorbo besedila v govor", + "tip": "Nastavite privzeti model za pretvorbo besedila v govor v pogovoru." + }, + "rerankModel": { + "key": "Model za prerazvrstitev", + "tip": "Model za prerazvrstitev bo prerazporedil seznam kandidatskih dokumentov na podlagi semantične ujemanja z uporabniško poizvedbo, s čimer se izboljšajo rezultati semantičnega razvrščanja." + }, + "apiKey": "API-KEY", + "quota": "Kvote", + "searchModel": "Model iskanja", + "noModelFound": "Za {{model}} ni najden noben model", + "models": "Modeli", + "showMoreModelProvider": "Prikaži več ponudnikov modelov", + "selector": { + "tip": "Ta model je bil odstranjen. Prosimo, dodajte model ali izberite drugega.", + "emptyTip": "Ni razpoložljivih modelov", + "emptySetting": "Prosimo, pojdite v nastavitve za konfiguracijo", + "rerankTip": "Prosimo, nastavite model za prerazvrstitev" + }, + "card": { + "quota": "KVOTE", + "onTrial": "Na preizkusu", + "paid": "Plačano", + "quotaExhausted": "Kvote porabljene", + "callTimes": "Časi klicev", + "tokens": "Žetoni", + "buyQuota": "Kupi kvoto", + "priorityUse": "Prednostna uporaba", + "removeKey": "Odstrani API ključ", + "tip": "Prednostno se bo uporabila plačana kvota. Kvota za preizkus se bo uporabila, ko bo plačana kvota porabljena." + }, + "item": { + "deleteDesc": "{{modelName}} se uporablja kot sistemski model za sklepanja. Nekatere funkcije ne bodo na voljo po odstranitvi. Prosimo, potrdite.", + "freeQuota": "BREZPLAČNA KVOTA" + }, + "addApiKey": "Dodaj svoj API ključ", + "invalidApiKey": "Neveljaven API ključ", + "encrypted": { + "front": "Vaš API ključ bo šifriran in shranjen z uporabo", + "back": " tehnologije." + }, + "freeQuota": { + "howToEarn": "Kako zaslužiti" + }, + "addMoreModelProvider": "DODAJ VEČ PONUDNIKOV MODELOV", + "addModel": "Dodaj model", + "modelsNum": "{{num}} modelov", + "showModels": "Prikaži modele", + "showModelsNum": "Prikaži {{num}} modelov", + "collapse": "Strni", + "config": "Konfiguracija", + "modelAndParameters": "Model in parametri", + "model": "Model", + "featureSupported": "{{feature}} podprto", + "callTimes": "Število klicev", + "credits": "Sporočilni krediti", + "buyQuota": "Kupi kvoto", + "getFreeTokens": "Pridobi brezplačne žetone", + "priorityUsing": "Prednostna uporaba", + "deprecated": "Zastarelo", + "confirmDelete": "Potrdite izbris?", + "quotaTip": "Preostali razpoložljivi brezplačni žetoni", + "loadPresets": "Naloži prednastavitve", + "parameters": "PARAMETRI", + "loadBalancing": "Uravnoteženje obremenitev", + "loadBalancingDescription": "Zmanjšajte pritisk s pomočjo več sklopov poverilnic.", + "loadBalancingHeadline": "Uravnoteženje obremenitev", + "configLoadBalancing": "Konfiguracija uravnoteženja obremenitev", + "modelHasBeenDeprecated": "Ta model je zastarel", + "providerManaged": "Upravljano s strani ponudnika", + "providerManagedDescription": "Uporabite enoten sklop poverilnic, ki jih zagotovi ponudnik modela.", + "defaultConfig": "Privzeta konfiguracija", + "apiKeyStatusNormal": "Stanje API ključa je normalno", + "apiKeyRateLimit": "Omejitev hitrosti je dosežena, na voljo po {{seconds}} sekundah", + "addConfig": "Dodaj konfiguracijo", + "editConfig": "Uredi konfiguracijo", + "loadBalancingLeastKeyWarning": "Za omogočanje uravnoteženja obremenitev morata biti omogočena vsaj 2 ključa.", + "loadBalancingInfo": "Privzeto uravnoteženje obremenitev uporablja strategijo Round-robin. Če se sproži omejitev hitrosti, se uporabi 1-minutno obdobje ohlajanja.", + "upgradeForLoadBalancing": "Nadgradite svoj načrt, da omogočite uravnoteženje obremenitev.", + "discoverMore": "Odkrijte več v", + "installProvider": "Namestitev ponudnikov modelov", + "emptyProviderTitle": "Ponudnik modelov ni nastavljen", + "emptyProviderTip": "Najprej namestite ponudnika modelov.", + "toBeConfigured": "Za konfiguracijo", + "configureTip": "Nastavitev tipke API ali dodajanje modela za uporabo", + "auth": { + "apiKeyModal": { + "addModel": "Dodaj model", + "title": "Konfiguracija avtorizacije ključev API", + "desc": "Po konfiguraciji poverilnic lahko vsi člani v delovnem prostoru uporabljajo ta model pri usklajevanju aplikacij." + }, + "apiKeys": "API ključi", + "authRemoved": "Avtor odstranjen", + "unAuthorized": "Neavtorizirano", + "addNewModel": "Dodaj nov model", + "addModelCredential": "Dodajte poverilnice modela", + "addCredential": "Dodaj akreditiv", + "modelCredentials": "Model akreditivi", + "configLoadBalancing": "Nastavitve uravnoteženja obremenitve", + "providerManagedTip": "Trenutna konfiguracija je gostovana pri ponudniku.", + "providerManaged": "Zagotavlja upravljano", + "specifyModelCredentialTip": "Uporabite konfigurirane poverilnice modela.", + "specifyModelCredential": "Določite poverilnice modela", + "addApiKey": "Dodajte API ključ", + "configModel": "Konfiguriraj model", + "authorizationError": "Napaka pri avtorizaciji", + "addModel": "Dodajanje modela", + "removeModel": "Odstrani model", + "editModelCredential": "Urejanje poverilnic modela", + "modelCredential": "Poverilnice modela", + "selectModelCredential": "Izberite poverilnice modela", + "manageCredentials": "Upravljanje poverilnic", + "addNewModelCredential": "Dodajanje poverilnic novega modela", + "customModelCredentialsDeleteTip": "Poverilnice so v uporabi in jih ni mogoče izbrisati", + "customModelCredentials": "Poverilnice modela po meri" + }, + "parametersInvalidRemoved": "Nekateri parametri so neveljavni in so bili odstranjeni.", + "installDataSourceProvider": "Namestite ponudnike podatkovnih virov" + }, + "dataSource": { + "notion": { + "selector": { + "pageSelected": "Izbrane strani", + "addPages": "Dodajanje strani", + "searchPages": "Iskanje strani ...", + "noSearchResult": "Ni rezultatov iskanja", + "preview": "PREDOGLED" + }, + "connected": "Povezani", + "remove": "Odstrani", + "addWorkspace": "Dodajanje delovnega prostora", + "connectedWorkspace": "Povezani delovni prostor", + "description": "Uporaba pojma kot vira podatkov za znanje.", + "disconnected": "Odklopi", + "pagesAuthorized": "Dovoljene strani", + "title": "Pojem", + "changeAuthorizedPages": "Spreminjanje pooblaščenih strani", + "sync": "Sinhroniziranje", + "integratedAlert": "Notion je integriran prek notranjih poverilnic, ni potrebno ponovno avtorizirati." + }, + "website": { + "active": "Dejaven", + "configuredCrawlers": "Konfigurirani pajki", + "title": "Spletna stran", + "inactive": "Neaktiven", + "description": "Uvozite vsebino s spletnih mest s spletnim pajkom.", + "with": "S" + }, + "add": "Dodajanje vira podatkov", + "connect": "Povezati", + "configure": "Konfigurirati" + }, + "plugin": { + "serpapi": { + "apiKeyPlaceholder": "Vnesite ključ API", + "apiKey": "API ključ", + "keyFrom": "Pridobite svoj ključ SerpAPI na strani računa SerpAPI" + } + }, + "apiBasedExtension": { + "selector": { + "placeholder": "Prosimo, izberite razširitev API-ja", + "manage": "Upravljanje razširitve API", + "title": "Razširitev API-ja" + }, + "modal": { + "name": { + "placeholder": "Prosimo, vnesite ime", + "title": "Ime" + }, + "apiEndpoint": { + "title": "Končna točka API-ja", + "placeholder": "Prosimo, vnesite končno točko API-ja" + }, + "apiKey": { + "lengthError": "Dolžina ključa API ne sme biti manjša od 5 znakov", + "title": "Ključ API-ja", + "placeholder": "Prosimo, vnesite API-ključ" + }, + "editTitle": "Uredi razširitev API-ja", + "title": "Dodajanje razširitve API-ja" + }, + "type": "Vrsta", + "link": "Preberite, kako razvijete lastno razširitev API-ja.", + "title": "Razširitve API zagotavljajo centralizirano upravljanje API, kar poenostavlja konfiguracijo za enostavno uporabo v aplikacijah Dify.", + "add": "Dodajanje razširitve API-ja" + }, + "about": { + "updateNow": "Posodobi zdaj", + "nowAvailable": "Dify {{version}} je zdaj na voljo.", + "latestAvailable": "Dify {{version}} je najnovejša različica, ki je na voljo.", + "changeLog": "Dnevnik sprememb" + }, + "appMenus": { + "apiAccess": "Dostop do API-ja", + "logs": "Dnevniki", + "logAndAnn": "Dnevniki & Ann.", + "promptEng": "Orkester", + "overview": "Spremljanje" + }, + "environment": { + "development": "RAZVOJ", + "testing": "PREIZKUŠANJE" + }, + "appModes": { + "completionApp": "Generator besedila", + "chatApp": "Aplikacija za klepet" + }, + "datasetMenus": { + "documents": "Dokumentov", + "settings": "Nastavitve", + "hitTesting": "Testiranje pridobivanja", + "emptyTip": "Znanje ni bilo povezano, prosimo, pojdite na aplikacijo ali vtičnik, da dokončate združenje.", + "viewDoc": "Oglejte si dokumentacijo", + "relatedApp": "Povezane aplikacije", + "noRelatedApp": "Brez povezanih aplikacij", + "pipeline": "Cevovod" + }, + "voiceInput": { + "notAllow": "Mikrofon ni pooblaščen", + "speaking": "Spregovorite zdaj ...", + "converting": "Pretvorba v besedilo ..." + }, + "modelName": { + "claude-2": "Claude-2", + "gpt-4-32k": "GPT-4-32K", + "text-embedding-ada-002": "Vdelava besedila-Ada-002", + "gpt-4": "GPT-4", + "whisper-1": "Šepet-1", + "claude-instant-1": "Claude-Instant", + "text-davinci-003": "Besedilo-Davinci-003", + "gpt-3.5-turbo-16k": "GPT-3.5-Turbo-16K", + "gpt-3.5-turbo": "GPT-3.5-Turbo" + }, + "chat": { + "citation": { + "vectorHash": "Vektorska razpršitev:", + "hitScore": "Rezultat pridobivanja:", + "linkToDataset": "Povezava do znanja", + "hitCount": "Število pridobivanja:", + "characters": "Znakov:", + "title": "CITATI" + }, + "conversationNameCanNotEmpty": "Zahtevano ime pogovora", + "inputPlaceholder": "Pogovorite se z botom", + "renameConversation": "Preimenovanje pogovora", + "conversationName": "Ime pogovora", + "conversationNamePlaceholder": "Prosimo, vnesite ime pogovora", + "thinking": "Razmišljanje...", + "thought": "Misel", + "resend": "Ponovno pošlji" + }, + "promptEditor": { + "context": { + "item": { + "desc": "Vstavljanje predloge konteksta", + "title": "Kontekstu" + }, + "modal": { + "footer": "Kontekste lahko upravljate v spodnjem razdelku Kontekst.", + "title": "{{num}} Znanje v kontekstu", + "add": "Dodajanje konteksta" + } + }, + "history": { + "item": { + "desc": "Vstavljanje predloge zgodovinskega sporočila", + "title": "Zgodovina pogovorov" + }, + "modal": { + "title": "PRIMER", + "edit": "Urejanje imen vlog v pogovoru", + "assistant": "Zdravo! Kako vam lahko pomagam danes?", + "user": "Zdravo" + } + }, + "variable": { + "item": { + "desc": "Vstavljanje spremenljivk in zunanjih orodij", + "title": "Spremenljivke in zunanja orodja" + }, + "outputToolDisabledItem": { + "title": "Spremenljivke", + "desc": "Vstavljanje spremenljivk" + }, + "modal": { + "addTool": "Novo orodje", + "add": "Nova spremenljivka" + } + }, + "query": { + "item": { + "title": "Poizvedba", + "desc": "Vstavljanje predloge uporabniške poizvedbe" + } + }, + "existed": "Že obstaja v pozivu", + "placeholder": "Tukaj vnesite svojo pozivno besedo, vnesite '{' za vstavljanje spremenljivke, vnesite '/', da vstavite blok vsebine" + }, + "imageUploader": { + "pasteImageLinkInvalid": "Neveljavna povezava do slike", + "uploadFromComputerLimit": "Nalaganje slik ne sme presegati {{size}} MB", + "uploadFromComputerUploadError": "Nalaganje slike ni uspelo, naložite ga znova.", + "pasteImageLink": "Prilepi povezavo do slike", + "imageUpload": "Nalaganje slik", + "uploadFromComputer": "Naloži iz računalnika", + "pasteImageLinkInputPlaceholder": "Tukaj prilepi povezavo do slike", + "uploadFromComputerReadError": "Branje slik ni uspelo, poskusite znova." + }, + "fileUploader": { + "fileExtensionNotSupport": "Datotečna pripona ni podprta", + "pasteFileLinkInvalid": "Neveljavna povezava do datoteke", + "pasteFileLink": "Prilepi povezavo do datoteke", + "pasteFileLinkInputPlaceholder": "Vnesite URL ...", + "uploadFromComputerUploadError": "Nalaganje datoteke ni uspelo, naložite ga znova.", + "uploadFromComputer": "Lokalno nalaganje", + "uploadFromComputerLimit": "Nalaganje {{type}} ne sme presegati {{size}}", + "uploadFromComputerReadError": "Branje datoteke ni uspelo, poskusite znova.", + "fileExtensionBlocked": "Ta vrsta datoteke je zaradi varnostnih razlogov blokirana", + "uploadDisabled": "Nalaganje datotek je onemogočeno" + }, + "tag": { + "addTag": "Dodajanje oznak", + "delete": "Brisanje oznake", + "manageTags": "Upravljanje oznak", + "addNew": "Dodajanje nove oznake", + "placeholder": "Vse oznake", + "failed": "Ustvarjanje oznake ni uspelo", + "editTag": "Urejanje oznak", + "created": "Oznaka je bila uspešno ustvarjena", + "noTagYet": "Še ni oznak", + "create": "Ustvariti", + "deleteTip": "Oznaka se uporablja, jo izbrišite?", + "noTag": "Brez oznak", + "selectorPlaceholder": "Vnesite za iskanje ali ustvarjanje" + }, + "license": { + "expiring_plural": "Poteče v {{count}} dneh", + "expiring": "Poteče v enem dnevu", + "unlimited": "Brez omejitev" + }, + "pagination": { + "perPage": "Elementi na stran" + }, + "theme": { + "theme": "Tema", + "light": "svetloba", + "auto": "sistem", + "dark": "temno" + }, + "compliance": { + "sandboxUpgradeTooltip": "Na voljo je le z načrtom Professional ali Team.", + "gdpr": "GDPR DPA", + "soc2Type2": "Poročilo SOC 2 Tip II", + "professionalUpgradeTooltip": "Na voljo je le s Team načrtom ali višjim.", + "iso27001": "Certifikacija ISO 27001:2022", + "soc2Type1": "Poročilo SOC 2 Tip I" + }, + "imageInput": { + "supportedFormats": "Podpira PNG, JPG, JPEG, WEBP in GIF", + "browse": "brskati", + "dropImageHere": "Tukaj spustite svojo sliko ali" + }, + "you": "Ti", + "avatar": { + "deleteTitle": "Odstrani avatar", + "deleteDescription": "Ali ste prepričani, da želite odstraniti svojo profilno sliko? Vaš račun bo uporabljal privzeti začetni avatar." + }, + "feedback": { + "title": "Posreduj povratne informacije", + "content": "Vsebina povratnih informacij", + "placeholder": "Prosimo, opišite, kaj je šlo narobe ali kako lahko izboljšamo ...", + "subtitle": "Prosim, povejte nam, kaj je šlo narobe s tem odzivom." + }, + "label": { + "optional": "(neobvezno)" + }, + "noData": "Ni podatkov", + "dynamicSelect": { + "error": "Nalaganje možnosti ni uspelo", + "noData": "Ni na voljo nobenih možnosti", + "loading": "Nalaganje možnosti...", + "selected": "{{count}} izbrano" + } +} diff --git a/web/i18n/sl-SI/common.ts b/web/i18n/sl-SI/common.ts deleted file mode 100644 index 697d06eb8b..0000000000 --- a/web/i18n/sl-SI/common.ts +++ /dev/null @@ -1,792 +0,0 @@ -const translation = { - api: { - success: 'Uspeh', - actionSuccess: 'Dejanje je uspelo', - saved: 'Shranjeno', - create: 'Ustvarjeno', - remove: 'Odstranjeno', - actionFailed: 'Dejanje ni uspelo', - }, - operation: { - create: 'Ustvari', - confirm: 'Potrdi', - cancel: 'Prekliči', - clear: 'Počisti', - save: 'Shrani', - saveAndEnable: 'Shrani in omogoči', - edit: 'Uredi', - add: 'Dodaj', - added: 'Dodano', - refresh: 'Osveži', - reset: 'Ponastavi', - search: 'Išči', - change: 'Spremeni', - remove: 'Odstrani', - send: 'Pošlji', - copy: 'Kopiraj', - lineBreak: 'Prelom vrstice', - sure: 'Prepričan sem', - download: 'Prenesi', - delete: 'Izbriši', - settings: 'Nastavitve', - setup: 'Nastavitev', - getForFree: 'Dobite brezplačno', - reload: 'Ponovno naloži', - ok: 'V redu', - log: 'Dnevnik', - learnMore: 'Izvedi več', - params: 'Parametri', - duplicate: 'Podvoji', - rename: 'Preimenuj', - audioSourceUnavailable: 'Zvočni vir ni na voljo', - copyImage: 'Kopiraj sliko', - openInNewTab: 'Odpri v novem zavihku', - zoomOut: 'Pomanjšanje', - zoomIn: 'Povečava', - saveAndRegenerate: 'Shranite in regenerirajte otroške koščke', - close: 'Blizu', - view: 'Pogled', - regenerate: 'Regeneracijo', - viewMore: 'POGLEJ VEČ', - submit: 'Predložiti', - skip: 'Ladja', - imageCopied: 'Kopirana slika', - deleteApp: 'Izbriši aplikacijo', - viewDetails: 'Poglej podrobnosti', - copied: 'Kopirati', - in: 'v', - downloadFailed: 'Prenos ni uspel. Prosim, poskusite znova pozneje.', - more: 'Več', - downloadSuccess: 'Prenos končan.', - format: 'Format', - selectAll: 'Izberi vse', - deSelectAll: 'Odberi vse', - config: 'Konfiguracija', - no: 'Ne', - confirmAction: 'Prosimo, potrdite svoje dejanje.', - deleteConfirmTitle: 'Izbrisati?', - yes: 'Da', - noSearchResults: 'Ni bilo najdenih {{content}}', - resetKeywords: 'Ponastavi ključne besede', - selectCount: '{{count}} Izbrano', - searchCount: 'Najdi {{count}} {{content}}', - noSearchCount: '0 {{content}}', - now: 'Zdaj', - }, - errorMsg: { - fieldRequired: '{{field}} je obvezno', - urlError: 'url mora začeti z http:// ali https://', - }, - placeholder: { - input: 'Vnesite prosim', - select: 'Izberite prosim', - search: 'Išči...', - }, - voice: { - language: { - zhHans: 'Kitajščina (poenostavljena)', - zhHant: 'Kitajščina (tradicionalna)', - enUS: 'Angleščina', - deDE: 'Nemščina', - frFR: 'Francoščina', - esES: 'Španščina', - itIT: 'Italijanščina', - thTH: 'Tajščina', - idID: 'Indonezijščina', - jaJP: 'Japonščina', - koKR: 'Korejščina', - ptBR: 'Portugalščina', - ruRU: 'Ruščina', - ukUA: 'Ukrajinščina', - viVN: 'Vietnamščina', - plPL: 'Poljščina', - roRO: 'Romunščina', - hiIN: 'Hindujščina', - trTR: 'Turščina', - faIR: 'Farsi', - slSI: 'Slovenščina', - arTN: 'Tunizijska arabščina', - }, - }, - unit: { - char: 'znaki', - }, - actionMsg: { - noModification: 'Trenutno ni sprememb.', - modifiedSuccessfully: 'Spremenjeno uspešno', - modifiedUnsuccessfully: 'Spremenjeno neuspešno', - copySuccessfully: 'Kopirano uspešno', - paySucceeded: 'Plačilo je uspelo', - payCancelled: 'Plačilo preklicano', - generatedSuccessfully: 'Generirano uspešno', - generatedUnsuccessfully: 'Generirano neuspešno', - }, - model: { - params: { - temperature: 'Temperatura', - temperatureTip: - 'Nadzoruje naključnost: Znižanje temperature vodi do manj naključnih zaključkov. Ko se temperatura približa ničli, bo model postal determinističen in ponavljajoč.', - top_p: 'Top P', - top_pTip: - 'Nadzoruje raznolikost preko vzorčenja jedra: 0.5 pomeni, da je upoštevanih polovica vseh možnosti glede na njihovo verjetnost.', - presence_penalty: 'Kaznovanje za prisotnost', - presence_penaltyTip: - 'Kako močno kaznovati nove besede, glede na to, ali so se že pojavile v besedilu.\nPovečuje verjetnost, da bo model obravnaval nove teme.', - frequency_penalty: 'Kaznovanje za frekvenco', - frequency_penaltyTip: - 'Kako močno kaznovati nove besede glede na njihovo že obstoječo frekvenco v besedilu.\nZmanjšuje verjetnost, da bo model ponavljal iste vrstice.', - max_tokens: 'Največje število žetonov', - max_tokensTip: - 'Uporabljeno za omejitev največje dolžine odgovora, v žetonih.\nVečje vrednosti lahko omejijo prostor za besede, zgodovino pogovorov in znanje. \nPriporočljivo je nastaviti pod dve tretjini.\ngpt-4-1106-preview, gpt-4-vision-preview maksimalno število žetonov (vnos 128k, izhod 4k)', - maxTokenSettingTip: 'Vaša nastavitev za največje število žetonov je visoka, kar lahko omeji prostor za pozive, poizvedbe in podatke. Razmislite o nastavitvi pod 2/3.', - setToCurrentModelMaxTokenTip: 'Največje število žetonov je posodobljeno na 80 % največjega števila žetonov trenutnega modela {{maxToken}}.', - stop_sequences: 'Zaporedja ustavljanja', - stop_sequencesTip: 'Do štiri zaporedja, kjer bo API prenehal generirati nadaljnje žetone. Vrnjen tekst ne bo vseboval zaporedja ustavitve.', - stop_sequencesPlaceholder: 'Vnesite zaporedje in pritisnite Tab', - }, - tone: { - Creative: 'Kreativno', - Balanced: 'Uravnoteženo', - Precise: 'Natančno', - Custom: 'Po meri', - }, - addMoreModel: 'Pojdite v nastavitve, da dodate več modelov', - settingsLink: 'Nastavitve ponudnika modelov', - capabilities: 'Multimodalne zmogljivosti', - }, - menus: { - status: 'beta', - explore: 'Raziskuj', - apps: 'Studio', - plugins: 'Vtičniki', - pluginsTips: 'Integrirajte vtičnike tretjih oseb ali ustvarite vtičnike, združljive s ChatGPT.', - datasets: 'Znanje', - datasetsTips: 'KMALU: Uvozite svoje besedilne podatke ali pišite podatke v realnem času preko spletnih kljuk za izboljšanje konteksta LLM.', - newApp: 'Nova aplikacija', - newDataset: 'Ustvari znanje', - tools: 'Orodja', - exploreMarketplace: 'Raziščite Marketplace', - appDetail: 'Podrobnosti o aplikaciji', - account: 'Račun', - }, - userProfile: { - settings: 'Nastavitve', - emailSupport: 'Podpora po e-pošti', - workspace: 'Delovni prostor', - createWorkspace: 'Ustvari delovni prostor', - helpCenter: 'Pomoč', - roadmap: 'Načrt razvoja', - community: 'Skupnost', - about: 'O nas', - logout: 'Odjava', - support: 'Podpora', - github: 'GitHub', - compliance: 'Skladnost', - contactUs: 'Kontaktirajte nas', - forum: 'Forum', - }, - settings: { - accountGroup: 'SPLOŠNO', - workplaceGroup: 'DELOVNI PROSTOR', - account: 'Moj račun', - members: 'Člani', - billing: 'Zaračunavanje', - integrations: 'Integracije', - language: 'Jezik', - provider: 'Ponudnik modelov', - dataSource: 'Vir podatkov', - plugin: 'Vtičniki', - apiBasedExtension: 'Razširitev API-ja', - generalGroup: 'SPLOŠNO', - }, - account: { - account: 'Račun', - myAccount: 'Moj račun', - studio: 'Dify Studio', - avatar: 'Avatar', - name: 'Ime', - email: 'E-pošta', - password: 'Geslo', - passwordTip: 'Lahko nastavite stalno geslo, če ne želite uporabljati začasnih prijavnih kod', - setPassword: 'Nastavi geslo', - resetPassword: 'Ponastavi geslo', - currentPassword: 'Trenutno geslo', - newPassword: 'Novo geslo', - confirmPassword: 'Potrdi geslo', - notEqual: 'Gesli se ne ujemata.', - langGeniusAccount: 'Dify račun', - langGeniusAccountTip: 'Vaš Dify račun in povezani uporabniški podatki.', - editName: 'Uredi ime', - showAppLength: 'Prikaz {{length}} aplikacij', - delete: 'Izbriši račun', - deleteTip: 'Brisanje vašega računa bo trajno izbrisalo vse vaše podatke in jih ne bo mogoče obnoviti.', - permanentlyDeleteButton: 'Trajno izbriši račun', - deletePrivacyLinkTip: 'Za več informacij o tem, kako ravnamo z vašimi podatki, si oglejte naše', - feedbackPlaceholder: 'Neobvezno', - sendVerificationButton: 'Pošlji kodo za preverjanje', - feedbackLabel: 'Povejte nam, zakaj ste izbrisali račun?', - verificationLabel: 'Koda za preverjanje', - verificationPlaceholder: 'Prilepite 6-mestno kodo', - deletePrivacyLink: 'Pravilnik o zasebnosti.', - deletePlaceholder: 'Prosimo, vnesite svoj e-poštni naslov', - deleteSuccessTip: 'Vaš račun potrebuje čas, da dokonča brisanje. Ko bo vse končano, vam bomo poslali e-pošto.', - feedbackTitle: 'Povratne informacije', - deleteLabel: 'Za potrditev spodaj vnesite svoj e-poštni naslov', - workspaceName: 'Ime delovnega prostora', - workspaceIcon: 'Ikona delovnega prostora', - editWorkspaceInfo: 'Uredi informacije o delovnem prostoru', - changeEmail: { - emailPlaceholder: 'Vnesite nov e-poštni naslov', - title: 'Spremeni e-pošto', - changeTo: 'Spremeni v {{email}}', - continue: 'Nadaljuj', - codeLabel: 'Koda za potrditev', - sendVerifyCode: 'Pošlji kode za preverjanje', - verifyNew: 'Potrdite svoj nov email', - resend: 'Ponovno pošlji', - resendTip: 'Niste prejeli kode?', - resendCount: 'Ponovno pošlji čez {{count}}s', - emailLabel: 'Nova e-pošta', - existingEmail: 'Uporabnik s to e-pošto že obstaja.', - content4: 'Pravkar smo vam poslali začasno verifikacijsko kodo na {{email}}.', - content1: 'Če boste nadaljevali, bomo na {{email}} poslali verifikacijsko kodo za ponovno overitev.', - codePlaceholder: 'Prilepite 6-mestno kodo', - verifyEmail: 'Potrdite svoj trenutni e-poštni naslov', - content3: 'Vnesite nov e-poštni naslov in poslali vam bomo kodo za preverjanje.', - newEmail: 'Ustvarite nov e-poštni naslov', - content2: 'Vaš trenutni elektronski naslov je {{email}}. Koda za preverjanje je bila poslana na ta elektronski naslov.', - authTip: 'Ko bo vaš e-poštni naslov spremenjen, se računi Google ali GitHub, povezani z vašim starim e-poštnim naslovom, ne bodo mogli več prijaviti v ta račun.', - unAvailableEmail: 'Ta e-pošta trenutno ni na voljo.', - }, - }, - members: { - team: 'Ekipa', - invite: 'Dodaj', - name: 'IME', - lastActive: 'NAZADNJE AKTIVEN', - role: 'VLOGE', - pending: 'V teku...', - owner: 'Lastnik', - admin: 'Administrator', - adminTip: 'Lahko ustvarja aplikacije in upravlja nastavitve ekipe', - normal: 'Običajni uporabnik', - normalTip: 'Lahko uporablja samo aplikacije, ne more ustvarjati aplikacij', - builder: 'Graditelj', - builderTip: 'Lahko ustvarja in ureja lastne aplikacije', - editor: 'Urednik', - editorTip: 'Lahko ustvarja in ureja aplikacije', - datasetOperator: 'Skrbnik znanja', - datasetOperatorTip: 'Lahko upravlja samo bazo znanja', - inviteTeamMember: 'Dodaj člana ekipe', - inviteTeamMemberTip: 'Do vaših podatkov bo lahko dostopal takoj po prijavi.', - emailNotSetup: 'E-poštni strežnik ni nastavljen, zato vabil po e-pošti ni mogoče poslati. Prosimo, obvestite uporabnike o povezavi za povabilo, ki bo izdana po povabilu.', - email: 'E-pošta', - emailInvalid: 'Neveljaven format e-pošte', - emailPlaceholder: 'Vnesite e-poštne naslove', - sendInvite: 'Pošlji povabilo', - invitedAsRole: 'Povabljen kot uporabnik {{role}}', - invitationSent: 'Povabilo poslano', - invitationSentTip: 'Povabilo poslano, in po prijavi v Dify bodo imeli dostop do vaših podatkov ekipe.', - invitationLink: 'Povezava za povabilo', - failedInvitationEmails: 'Spodnji uporabniki niso bili uspešno povabljeni', - ok: 'V redu', - removeFromTeam: 'Odstrani iz ekipe', - removeFromTeamTip: 'Odstranjen bo dostop do ekipe', - setAdmin: 'Nastavi za administratorja', - setMember: 'Nastavi za običajnega člana', - setBuilder: 'Nastavi za graditelja', - setEditor: 'Nastavi za urednika', - disInvite: 'Prekliči povabilo', - deleteMember: 'Izbriši člana', - you: '(Vi)', - transferModal: { - codeLabel: 'Koda za potrditev', - resendTip: 'Niste prejeli kode?', - continue: 'Nadaljuj', - transferLabel: 'Prenesite lastništvo delovnega prostora na', - resend: 'Ponovno pošlji', - verifyEmail: 'Potrdite svoj trenutni e-poštni naslov', - codePlaceholder: 'Prilepite 6-mestno kodo', - transferPlaceholder: 'Izberite člana delovnega prostora…', - transfer: 'Prenos lastništva delovnega prostora', - resendCount: 'Ponovno pošlji čez {{count}}s', - verifyContent2: 'Na ta e-poštni naslov bomo poslali začasno verifikacijsko kodo za ponovno overitev.', - warningTip: 'Postali boste član administracije, novi lastnik pa bo imel popoln nadzor.', - warning: 'Pripravljate se prenesti lastništvo nad "{{workspace}}". To začne veljati takoj in tega ni mogoče razveljaviti.', - title: 'Prenos lastništva delovnega prostora', - sendVerifyCode: 'Pošlji kode za preverjanje', - sendTip: 'Če boste nadaljevali, bomo na {{email}} poslali verifikacijsko kodo za ponovno overitev.', - verifyContent: 'Vaš trenutni e-poštni naslov je {{email}}.', - }, - transferOwnership: 'Prenos lastništva', - }, - integrations: { - connected: 'Povezano', - google: 'Google', - googleAccount: 'Prijavite se z Google računom', - github: 'GitHub', - githubAccount: 'Prijavite se z GitHub računom', - connect: 'Poveži', - }, - language: { - displayLanguage: 'Jezik prikaza', - timezone: 'Časovni pas', - }, - provider: { - apiKey: 'API ključ', - enterYourKey: 'Vnesite svoj API ključ tukaj', - invalidKey: 'Neveljaven OpenAI API ključ', - validatedError: 'Preverjanje ni uspelo: ', - validating: 'Preverjam ključ...', - saveFailed: 'Shranjevanje API ključa ni uspelo', - apiKeyExceedBill: 'Ta API ključ nima več na voljo kvote, preberite', - addKey: 'Dodaj ključ', - comingSoon: 'Kmalu', - editKey: 'Uredi', - invalidApiKey: 'Neveljaven API ključ', - azure: { - apiBase: 'API Osnova', - apiBasePlaceholder: 'URL API osnove vašega Azure OpenAI končnega mesta.', - apiKey: 'API ključ', - apiKeyPlaceholder: 'Vnesite svoj API ključ tukaj', - helpTip: 'Spoznajte Azure OpenAI storitev', - }, - openaiHosted: { - openaiHosted: 'Gostovani OpenAI', - onTrial: 'NA PREIZKUSU', - exhausted: 'KVOTA PORABLJENA', - desc: 'Gostitvena storitev OpenAI, ki jo ponuja Dify, vam omogoča uporabo modelov, kot je GPT-3.5. Preden porabite kvoto za preizkus, morate nastaviti druge ponudnike modelov.', - callTimes: 'Časi klicev', - usedUp: 'Kvota za preizkus porabljena. Dodajte svojega ponudnika modelov.', - useYourModel: 'Trenutno uporabljate svojega ponudnika modelov.', - close: 'Zapri', - }, - anthropicHosted: { - anthropicHosted: 'Anthropic Claude', - onTrial: 'NA PREIZKUSU', - exhausted: 'KVOTA PORABLJENA', - desc: 'Zmogljiv model, ki se odlično obnese pri različnih nalogah, od sofisticiranega dialoga in ustvarjanja kreativnih vsebin do podrobnih navodil.', - callTimes: 'Časi klicev', - usedUp: 'Kvota za preizkus porabljena. Dodajte svojega ponudnika modelov.', - useYourModel: 'Trenutno uporabljate svojega ponudnika modelov.', - close: 'Zapri', - trialQuotaTip: 'Vaša kvota za preskušanje antropičnih izdelkov bo potekla 11.3.2025 in po tem datumu ne bo več na voljo. Prosimo, da jo pravočasno izkoristite.', - }, - anthropic: { - using: 'Zmožnost vdelave uporablja', - enableTip: 'Za omogočitev modela Anthropic morate najprej povezati OpenAI ali Azure OpenAI storitev.', - notEnabled: 'Ni omogočeno', - keyFrom: 'Pridobite svoj API ključ pri Anthropic', - }, - encrypted: { - front: 'Vaš API ključ bo šifriran in shranjen z uporabo', - back: ' tehnologije.', - }, - }, - modelProvider: { - notConfigured: 'Sistemski model še ni popolnoma konfiguriran, nekatere funkcije morda ne bodo na voljo.', - systemModelSettings: 'Nastavitve sistemskega modela', - systemModelSettingsLink: 'Zakaj je potrebno nastaviti sistemski model?', - selectModel: 'Izberite svoj model', - setupModelFirst: 'Najprej nastavite svoj model', - systemReasoningModel: { - key: 'Sistemski model za sklepanja', - tip: 'Nastavite privzeti model za sklepanja, ki se bo uporabljal za ustvarjanje aplikacij, kot tudi funkcije, kot so generiranje imen dialogov in predlaganje naslednjih vprašanj.', - }, - embeddingModel: { - key: 'Model za vdelavo', - tip: 'Nastavite privzeti model za obdelavo vdelave dokumentov znanja, tako pri iskanju kot pri uvozu znanja se uporablja ta model za vektorizacijo. Preklop bo povzročil neusklajenost vektorske dimenzije med uvoženim znanjem in vprašanjem, kar bo povzročilo neuspešno iskanje. Da bi se izognili neuspehu pri iskanju, ne preklapljajte tega modela brez potrebe.', - required: 'Model za vdelavo je obvezen', - }, - speechToTextModel: { - key: 'Model za pretvorbo govora v besedilo', - tip: 'Nastavite privzeti model za vnos govora v besedilo v pogovoru.', - }, - ttsModel: { - key: 'Model za pretvorbo besedila v govor', - tip: 'Nastavite privzeti model za pretvorbo besedila v govor v pogovoru.', - }, - rerankModel: { - key: 'Model za prerazvrstitev', - tip: 'Model za prerazvrstitev bo prerazporedil seznam kandidatskih dokumentov na podlagi semantične ujemanja z uporabniško poizvedbo, s čimer se izboljšajo rezultati semantičnega razvrščanja.', - }, - apiKey: 'API-KEY', - quota: 'Kvote', - searchModel: 'Model iskanja', - noModelFound: 'Za {{model}} ni najden noben model', - models: 'Modeli', - showMoreModelProvider: 'Prikaži več ponudnikov modelov', - selector: { - tip: 'Ta model je bil odstranjen. Prosimo, dodajte model ali izberite drugega.', - emptyTip: 'Ni razpoložljivih modelov', - emptySetting: 'Prosimo, pojdite v nastavitve za konfiguracijo', - rerankTip: 'Prosimo, nastavite model za prerazvrstitev', - }, - card: { - quota: 'KVOTE', - onTrial: 'Na preizkusu', - paid: 'Plačano', - quotaExhausted: 'Kvote porabljene', - callTimes: 'Časi klicev', - tokens: 'Žetoni', - buyQuota: 'Kupi kvoto', - priorityUse: 'Prednostna uporaba', - removeKey: 'Odstrani API ključ', - tip: 'Prednostno se bo uporabila plačana kvota. Kvota za preizkus se bo uporabila, ko bo plačana kvota porabljena.', - }, - item: { - deleteDesc: '{{modelName}} se uporablja kot sistemski model za sklepanja. Nekatere funkcije ne bodo na voljo po odstranitvi. Prosimo, potrdite.', - freeQuota: 'BREZPLAČNA KVOTA', - }, - addApiKey: 'Dodaj svoj API ključ', - invalidApiKey: 'Neveljaven API ključ', - encrypted: { - front: 'Vaš API ključ bo šifriran in shranjen z uporabo', - back: ' tehnologije.', - }, - freeQuota: { - howToEarn: 'Kako zaslužiti', - }, - addMoreModelProvider: 'DODAJ VEČ PONUDNIKOV MODELOV', - addModel: 'Dodaj model', - modelsNum: '{{num}} modelov', - showModels: 'Prikaži modele', - showModelsNum: 'Prikaži {{num}} modelov', - collapse: 'Strni', - config: 'Konfiguracija', - modelAndParameters: 'Model in parametri', - model: 'Model', - featureSupported: '{{feature}} podprto', - callTimes: 'Število klicev', - credits: 'Sporočilni krediti', - buyQuota: 'Kupi kvoto', - getFreeTokens: 'Pridobi brezplačne žetone', - priorityUsing: 'Prednostna uporaba', - deprecated: 'Zastarelo', - confirmDelete: 'Potrdite izbris?', - quotaTip: 'Preostali razpoložljivi brezplačni žetoni', - loadPresets: 'Naloži prednastavitve', - parameters: 'PARAMETRI', - loadBalancing: 'Uravnoteženje obremenitev', - loadBalancingDescription: 'Zmanjšajte pritisk s pomočjo več sklopov poverilnic.', - loadBalancingHeadline: 'Uravnoteženje obremenitev', - configLoadBalancing: 'Konfiguracija uravnoteženja obremenitev', - modelHasBeenDeprecated: 'Ta model je zastarel', - providerManaged: 'Upravljano s strani ponudnika', - providerManagedDescription: 'Uporabite enoten sklop poverilnic, ki jih zagotovi ponudnik modela.', - defaultConfig: 'Privzeta konfiguracija', - apiKeyStatusNormal: 'Stanje API ključa je normalno', - apiKeyRateLimit: 'Omejitev hitrosti je dosežena, na voljo po {{seconds}} sekundah', - addConfig: 'Dodaj konfiguracijo', - editConfig: 'Uredi konfiguracijo', - loadBalancingLeastKeyWarning: 'Za omogočanje uravnoteženja obremenitev morata biti omogočena vsaj 2 ključa.', - loadBalancingInfo: 'Privzeto uravnoteženje obremenitev uporablja strategijo Round-robin. Če se sproži omejitev hitrosti, se uporabi 1-minutno obdobje ohlajanja.', - upgradeForLoadBalancing: 'Nadgradite svoj načrt, da omogočite uravnoteženje obremenitev.', - discoverMore: 'Odkrijte več v', - installProvider: 'Namestitev ponudnikov modelov', - emptyProviderTitle: 'Ponudnik modelov ni nastavljen', - emptyProviderTip: 'Najprej namestite ponudnika modelov.', - toBeConfigured: 'Za konfiguracijo', - configureTip: 'Nastavitev tipke API ali dodajanje modela za uporabo', - auth: { - apiKeyModal: { - addModel: 'Dodaj model', - title: 'Konfiguracija avtorizacije ključev API', - desc: 'Po konfiguraciji poverilnic lahko vsi člani v delovnem prostoru uporabljajo ta model pri usklajevanju aplikacij.', - }, - apiKeys: 'API ključi', - authRemoved: 'Avtor odstranjen', - unAuthorized: 'Neavtorizirano', - addNewModel: 'Dodaj nov model', - addModelCredential: 'Dodajte poverilnice modela', - addCredential: 'Dodaj akreditiv', - modelCredentials: 'Model akreditivi', - configLoadBalancing: 'Nastavitve uravnoteženja obremenitve', - providerManagedTip: 'Trenutna konfiguracija je gostovana pri ponudniku.', - providerManaged: 'Zagotavlja upravljano', - specifyModelCredentialTip: 'Uporabite konfigurirane poverilnice modela.', - specifyModelCredential: 'Določite poverilnice modela', - addApiKey: 'Dodajte API ključ', - configModel: 'Konfiguriraj model', - authorizationError: 'Napaka pri avtorizaciji', - addModel: 'Dodajanje modela', - removeModel: 'Odstrani model', - editModelCredential: 'Urejanje poverilnic modela', - modelCredential: 'Poverilnice modela', - selectModelCredential: 'Izberite poverilnice modela', - manageCredentials: 'Upravljanje poverilnic', - addNewModelCredential: 'Dodajanje poverilnic novega modela', - customModelCredentialsDeleteTip: 'Poverilnice so v uporabi in jih ni mogoče izbrisati', - customModelCredentials: 'Poverilnice modela po meri', - }, - parametersInvalidRemoved: 'Nekateri parametri so neveljavni in so bili odstranjeni.', - installDataSourceProvider: 'Namestite ponudnike podatkovnih virov', - }, - dataSource: { - notion: { - selector: { - pageSelected: 'Izbrane strani', - addPages: 'Dodajanje strani', - searchPages: 'Iskanje strani ...', - noSearchResult: 'Ni rezultatov iskanja', - preview: 'PREDOGLED', - }, - connected: 'Povezani', - remove: 'Odstrani', - addWorkspace: 'Dodajanje delovnega prostora', - connectedWorkspace: 'Povezani delovni prostor', - description: 'Uporaba pojma kot vira podatkov za znanje.', - disconnected: 'Odklopi', - pagesAuthorized: 'Dovoljene strani', - title: 'Pojem', - changeAuthorizedPages: 'Spreminjanje pooblaščenih strani', - sync: 'Sinhroniziranje', - integratedAlert: 'Notion je integriran prek notranjih poverilnic, ni potrebno ponovno avtorizirati.', - }, - website: { - active: 'Dejaven', - configuredCrawlers: 'Konfigurirani pajki', - title: 'Spletna stran', - inactive: 'Neaktiven', - description: 'Uvozite vsebino s spletnih mest s spletnim pajkom.', - with: 'S', - }, - add: 'Dodajanje vira podatkov', - connect: 'Povezati', - configure: 'Konfigurirati', - }, - plugin: { - serpapi: { - apiKeyPlaceholder: 'Vnesite ključ API', - apiKey: 'API ključ', - keyFrom: 'Pridobite svoj ključ SerpAPI na strani računa SerpAPI', - }, - }, - apiBasedExtension: { - selector: { - placeholder: 'Prosimo, izberite razširitev API-ja', - manage: 'Upravljanje razširitve API', - title: 'Razširitev API-ja', - }, - modal: { - name: { - placeholder: 'Prosimo, vnesite ime', - title: 'Ime', - }, - apiEndpoint: { - title: 'Končna točka API-ja', - placeholder: 'Prosimo, vnesite končno točko API-ja', - }, - apiKey: { - lengthError: 'Dolžina ključa API ne sme biti manjša od 5 znakov', - title: 'Ključ API-ja', - placeholder: 'Prosimo, vnesite API-ključ', - }, - editTitle: 'Uredi razširitev API-ja', - title: 'Dodajanje razširitve API-ja', - }, - type: 'Vrsta', - link: 'Preberite, kako razvijete lastno razširitev API-ja.', - title: 'Razširitve API zagotavljajo centralizirano upravljanje API, kar poenostavlja konfiguracijo za enostavno uporabo v aplikacijah Dify.', - add: 'Dodajanje razširitve API-ja', - }, - about: { - updateNow: 'Posodobi zdaj', - nowAvailable: 'Dify {{version}} je zdaj na voljo.', - latestAvailable: 'Dify {{version}} je najnovejša različica, ki je na voljo.', - changeLog: 'Dnevnik sprememb', - }, - appMenus: { - apiAccess: 'Dostop do API-ja', - logs: 'Dnevniki', - logAndAnn: 'Dnevniki & Ann.', - promptEng: 'Orkester', - overview: 'Spremljanje', - }, - environment: { - development: 'RAZVOJ', - testing: 'PREIZKUŠANJE', - }, - appModes: { - completionApp: 'Generator besedila', - chatApp: 'Aplikacija za klepet', - }, - datasetMenus: { - documents: 'Dokumentov', - settings: 'Nastavitve', - hitTesting: 'Testiranje pridobivanja', - emptyTip: 'Znanje ni bilo povezano, prosimo, pojdite na aplikacijo ali vtičnik, da dokončate združenje.', - viewDoc: 'Oglejte si dokumentacijo', - relatedApp: 'Povezane aplikacije', - noRelatedApp: 'Brez povezanih aplikacij', - pipeline: 'Cevovod', - }, - voiceInput: { - notAllow: 'Mikrofon ni pooblaščen', - speaking: 'Spregovorite zdaj ...', - converting: 'Pretvorba v besedilo ...', - }, - modelName: { - 'claude-2': 'Claude-2', - 'gpt-4-32k': 'GPT-4-32K', - 'text-embedding-ada-002': 'Vdelava besedila-Ada-002', - 'gpt-4': 'GPT-4', - 'whisper-1': 'Šepet-1', - 'claude-instant-1': 'Claude-Instant', - 'text-davinci-003': 'Besedilo-Davinci-003', - 'gpt-3.5-turbo-16k': 'GPT-3.5-Turbo-16K', - 'gpt-3.5-turbo': 'GPT-3.5-Turbo', - }, - chat: { - citation: { - vectorHash: 'Vektorska razpršitev:', - hitScore: 'Rezultat pridobivanja:', - linkToDataset: 'Povezava do znanja', - hitCount: 'Število pridobivanja:', - characters: 'Znakov:', - title: 'CITATI', - }, - conversationNameCanNotEmpty: 'Zahtevano ime pogovora', - inputPlaceholder: 'Pogovorite se z botom', - renameConversation: 'Preimenovanje pogovora', - conversationName: 'Ime pogovora', - conversationNamePlaceholder: 'Prosimo, vnesite ime pogovora', - thinking: 'Razmišljanje...', - thought: 'Misel', - resend: 'Ponovno pošlji', - }, - promptEditor: { - context: { - item: { - desc: 'Vstavljanje predloge konteksta', - title: 'Kontekstu', - }, - modal: { - footer: 'Kontekste lahko upravljate v spodnjem razdelku Kontekst.', - title: '{{num}} Znanje v kontekstu', - add: 'Dodajanje konteksta', - }, - }, - history: { - item: { - desc: 'Vstavljanje predloge zgodovinskega sporočila', - title: 'Zgodovina pogovorov', - }, - modal: { - title: 'PRIMER', - edit: 'Urejanje imen vlog v pogovoru', - assistant: 'Zdravo! Kako vam lahko pomagam danes?', - user: 'Zdravo', - }, - }, - variable: { - item: { - desc: 'Vstavljanje spremenljivk in zunanjih orodij', - title: 'Spremenljivke in zunanja orodja', - }, - outputToolDisabledItem: { - title: 'Spremenljivke', - desc: 'Vstavljanje spremenljivk', - }, - modal: { - addTool: 'Novo orodje', - add: 'Nova spremenljivka', - }, - }, - query: { - item: { - title: 'Poizvedba', - desc: 'Vstavljanje predloge uporabniške poizvedbe', - }, - }, - existed: 'Že obstaja v pozivu', - placeholder: 'Tukaj vnesite svojo pozivno besedo, vnesite \'{\' za vstavljanje spremenljivke, vnesite \'/\', da vstavite blok vsebine', - }, - imageUploader: { - pasteImageLinkInvalid: 'Neveljavna povezava do slike', - uploadFromComputerLimit: 'Nalaganje slik ne sme presegati {{size}} MB', - uploadFromComputerUploadError: 'Nalaganje slike ni uspelo, naložite ga znova.', - pasteImageLink: 'Prilepi povezavo do slike', - imageUpload: 'Nalaganje slik', - uploadFromComputer: 'Naloži iz računalnika', - pasteImageLinkInputPlaceholder: 'Tukaj prilepi povezavo do slike', - uploadFromComputerReadError: 'Branje slik ni uspelo, poskusite znova.', - }, - fileUploader: { - fileExtensionNotSupport: 'Datotečna pripona ni podprta', - pasteFileLinkInvalid: 'Neveljavna povezava do datoteke', - pasteFileLink: 'Prilepi povezavo do datoteke', - pasteFileLinkInputPlaceholder: 'Vnesite URL ...', - uploadFromComputerUploadError: 'Nalaganje datoteke ni uspelo, naložite ga znova.', - uploadFromComputer: 'Lokalno nalaganje', - uploadFromComputerLimit: 'Nalaganje {{type}} ne sme presegati {{size}}', - uploadFromComputerReadError: 'Branje datoteke ni uspelo, poskusite znova.', - fileExtensionBlocked: 'Ta vrsta datoteke je zaradi varnostnih razlogov blokirana', - uploadDisabled: 'Nalaganje datotek je onemogočeno', - }, - tag: { - addTag: 'Dodajanje oznak', - delete: 'Brisanje oznake', - manageTags: 'Upravljanje oznak', - addNew: 'Dodajanje nove oznake', - placeholder: 'Vse oznake', - failed: 'Ustvarjanje oznake ni uspelo', - editTag: 'Urejanje oznak', - created: 'Oznaka je bila uspešno ustvarjena', - noTagYet: 'Še ni oznak', - create: 'Ustvariti', - deleteTip: 'Oznaka se uporablja, jo izbrišite?', - noTag: 'Brez oznak', - selectorPlaceholder: 'Vnesite za iskanje ali ustvarjanje', - }, - license: { - expiring_plural: 'Poteče v {{count}} dneh', - expiring: 'Poteče v enem dnevu', - unlimited: 'Brez omejitev', - }, - pagination: { - perPage: 'Elementi na stran', - }, - theme: { - theme: 'Tema', - light: 'svetloba', - auto: 'sistem', - dark: 'temno', - }, - compliance: { - sandboxUpgradeTooltip: 'Na voljo je le z načrtom Professional ali Team.', - gdpr: 'GDPR DPA', - soc2Type2: 'Poročilo SOC 2 Tip II', - professionalUpgradeTooltip: 'Na voljo je le s Team načrtom ali višjim.', - iso27001: 'Certifikacija ISO 27001:2022', - soc2Type1: 'Poročilo SOC 2 Tip I', - }, - imageInput: { - supportedFormats: 'Podpira PNG, JPG, JPEG, WEBP in GIF', - browse: 'brskati', - dropImageHere: 'Tukaj spustite svojo sliko ali', - }, - you: 'Ti', - avatar: { - deleteTitle: 'Odstrani avatar', - deleteDescription: 'Ali ste prepričani, da želite odstraniti svojo profilno sliko? Vaš račun bo uporabljal privzeti začetni avatar.', - }, - feedback: { - title: 'Posreduj povratne informacije', - content: 'Vsebina povratnih informacij', - placeholder: 'Prosimo, opišite, kaj je šlo narobe ali kako lahko izboljšamo ...', - subtitle: 'Prosim, povejte nam, kaj je šlo narobe s tem odzivom.', - }, - label: { - optional: '(neobvezno)', - }, - noData: 'Ni podatkov', - dynamicSelect: { - error: 'Nalaganje možnosti ni uspelo', - noData: 'Ni na voljo nobenih možnosti', - loading: 'Nalaganje možnosti...', - selected: '{{count}} izbrano', - }, -} - -export default translation diff --git a/web/i18n/sl-SI/custom.json b/web/i18n/sl-SI/custom.json new file mode 100644 index 0000000000..223ef6bb5a --- /dev/null +++ b/web/i18n/sl-SI/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "Prilagoditev", + "upgradeTip": { + "prefix": "Nadgradite svoj načrt za", + "suffix": "prilagoditev vaše blagovne znamke.", + "des": "Nadgradite svoj načrt, da prilagodite svojo blagovno znamko", + "title": "Nadgradite svoj načrt" + }, + "webapp": { + "title": "Prilagodi blagovno znamko spletne aplikacije", + "removeBrand": "Odstrani Powered by Dify", + "changeLogo": "Spremeni sliko Powered by Brand", + "changeLogoTip": "Format SVG ali PNG z minimalno velikostjo 40x40px" + }, + "app": { + "title": "Prilagodi blagovno znamko glave aplikacije", + "changeLogoTip": "Format SVG ali PNG z minimalno velikostjo 80x80px" + }, + "upload": "Naloži", + "uploading": "Nalagam", + "uploadedFail": "Nalaganje slike ni uspelo, prosimo, poskusite znova.", + "change": "Spremeni", + "apply": "Uporabi", + "restore": "Obnovi privzete nastavitve", + "customize": { + "contactUs": " kontaktirajte nas ", + "prefix": "Za prilagoditev logotipa blagovne znamke znotraj aplikacije, prosimo,", + "suffix": "za nadgradnjo na Enterprise izdajo." + } +} diff --git a/web/i18n/sl-SI/custom.ts b/web/i18n/sl-SI/custom.ts deleted file mode 100644 index 59f0a6baf9..0000000000 --- a/web/i18n/sl-SI/custom.ts +++ /dev/null @@ -1,32 +0,0 @@ -const translation = { - custom: 'Prilagoditev', - upgradeTip: { - prefix: 'Nadgradite svoj načrt za', - suffix: 'prilagoditev vaše blagovne znamke.', - des: 'Nadgradite svoj načrt, da prilagodite svojo blagovno znamko', - title: 'Nadgradite svoj načrt', - }, - webapp: { - title: 'Prilagodi blagovno znamko spletne aplikacije', - removeBrand: 'Odstrani Powered by Dify', - changeLogo: 'Spremeni sliko Powered by Brand', - changeLogoTip: 'Format SVG ali PNG z minimalno velikostjo 40x40px', - }, - app: { - title: 'Prilagodi blagovno znamko glave aplikacije', - changeLogoTip: 'Format SVG ali PNG z minimalno velikostjo 80x80px', - }, - upload: 'Naloži', - uploading: 'Nalagam', - uploadedFail: 'Nalaganje slike ni uspelo, prosimo, poskusite znova.', - change: 'Spremeni', - apply: 'Uporabi', - restore: 'Obnovi privzete nastavitve', - customize: { - contactUs: ' kontaktirajte nas ', - prefix: 'Za prilagoditev logotipa blagovne znamke znotraj aplikacije, prosimo,', - suffix: 'za nadgradnjo na Enterprise izdajo.', - }, -} - -export default translation diff --git a/web/i18n/sl-SI/dataset-creation.json b/web/i18n/sl-SI/dataset-creation.json new file mode 100644 index 0000000000..d85e2d40ea --- /dev/null +++ b/web/i18n/sl-SI/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "Znanje" + }, + "one": "Izberi vir podatkov", + "two": "Predobdelava in čiščenje besedila", + "three": "Izvedi in zaključi" + }, + "error": { + "unavailable": "To Znanje ni na voljo" + }, + "firecrawl": { + "configFirecrawl": "Nastavi 🔥Firecrawl", + "apiKeyPlaceholder": "API ključ od firecrawl.dev", + "getApiKeyLinkText": "Pridobi API ključ na firecrawl.dev" + }, + "jinaReader": { + "configJinaReader": "Nastavi Jina Reader", + "apiKeyPlaceholder": "API ključ od jina.ai", + "getApiKeyLinkText": "Pridobi brezplačni API ključ na jina.ai" + }, + "stepOne": { + "filePreview": "Predogled datoteke", + "pagePreview": "Predogled strani", + "dataSourceType": { + "file": "Uvozi iz datoteke", + "notion": "Sinhroniziraj z Notion", + "web": "Sinhroniziraj s spletno stranjo" + }, + "uploader": { + "title": "Naloži datoteko", + "button": "Povleci in spusti datoteke ali mape oz", + "buttonSingleFile": "Povleci in spusti datoteko oz", + "browse": "Prebrskaj", + "tip": "Podprti tipi datotek: {{supportTypes}}. Največ {{size}}MB na datoteko.", + "validation": { + "typeError": "Tip datoteke ni podprt", + "size": "Datoteka je prevelika. Največja dovoljena velikost je {{size}}MB", + "count": "Podprta je le ena datoteka", + "filesNumber": "Dosegli ste omejitev za pošiljanje {{filesNumber}} datotek." + }, + "cancel": "Prekliči", + "change": "Zamenjaj", + "failed": "Nalaganje ni uspelo" + }, + "notionSyncTitle": "Notion ni povezan", + "notionSyncTip": "Za sinhronizacijo z Notion je najprej potrebno vzpostaviti povezavo.", + "connect": "Pojdi na povezavo", + "button": "Naprej", + "emptyDatasetCreation": "Želim ustvariti prazno Znanje", + "modal": { + "title": "Ustvari prazno Znanje", + "tip": "Prazno Znanje ne bo vsebovalo dokumentov, dokumente pa lahko naložite kadarkoli.", + "input": "Ime Znanja", + "placeholder": "Vnesite ime", + "nameNotEmpty": "Ime ne sme biti prazno", + "nameLengthInvalid": "Ime mora imeti od 1 do 40 znakov", + "cancelButton": "Prekliči", + "confirmButton": "Ustvari", + "failed": "Ustvarjanje ni uspelo" + }, + "website": { + "chooseProvider": "Izberi ponudnika", + "fireCrawlNotConfigured": "Firecrawl ni nastavljen", + "fireCrawlNotConfiguredDescription": "Nastavite Firecrawl z API ključem, da ga lahko uporabite.", + "jinaReaderNotConfigured": "Jina Reader ni nastavljen", + "jinaReaderNotConfiguredDescription": "Nastavite Jina Reader z vnosom brezplačnega API ključa.", + "configure": "Nastavi", + "run": "Zaženi", + "firecrawlTitle": "Izvleci spletno vsebino z 🔥Firecrawl", + "firecrawlDoc": "Firecrawl dokumentacija", + "jinaReaderTitle": "Pretvori celotno stran v Markdown", + "jinaReaderDoc": "Več o Jina Reader", + "jinaReaderDocLink": "https://jina.ai/reader", + "useSitemap": "Uporabi sitemap", + "useSitemapTooltip": "Sledi zemljevidu spletne strani (sitemap) za iskanje strani. Če ne, bo Jina Reader iterativno iskal strani na podlagi pomembnosti, kar bo prineslo manj, a bolj relevantnih strani.", + "options": "Možnosti", + "crawlSubPage": "Išči podstrani", + "limit": "Omejitev", + "maxDepth": "Največja globina", + "excludePaths": "Izključi poti", + "includeOnlyPaths": "Vključi le poti", + "extractOnlyMainContent": "Izvleci le glavno vsebino (brez glav, navigacij, nog itd.)", + "exceptionErrorTitle": "Med izvajanjem iskanja je prišlo do izjeme:", + "unknownError": "Neznana napaka", + "totalPageScraped": "Skupaj preiskanih strani:", + "selectAll": "Izberi vse", + "resetAll": "Ponastavi vse", + "scrapTimeInfo": "Skupaj preiskanih {{total}} strani v {{time}}s", + "preview": "Predogled", + "maxDepthTooltip": "Največja globina iskanja glede na vneseni URL. Globina 0 bo iskala le stran z vnesenim URL-jem, globina 1 bo iskala URL in vse za tem, dodano z enim /, in tako naprej.", + "waterCrawlNotConfiguredDescription": "Konfigurirajte Watercrawl z API ključem, da ga uporabite.", + "configureWatercrawl": "Konfiguriraj Watercrawl", + "waterCrawlNotConfigured": "Watercrawl ni konfiguriran", + "watercrawlDoc": "Watercrawl dokumentacija", + "configureJinaReader": "Konfigurirajte Jina Reader", + "configureFirecrawl": "Konfigurirajte Firecrawl", + "watercrawlTitle": "Izvleci vsebino z interneta z Watercrawl", + "running": "Tek" + }, + "cancel": "Odpovedati" + }, + "stepTwo": { + "segmentation": "Nastavitve razdeljevanja", + "auto": "Samodejno", + "autoDescription": "Samodejno nastavi pravila za razdeljevanje in predobdelavo besedila. Neizkušenim uporabnikom priporočamo to možnost.", + "custom": "Po meri", + "customDescription": "Prilagodi pravila za razdeljevanje, dolžino delcev in pravila za predobdelavo besedila itd.", + "separator": "Ločilo", + "separatorTip": "Ločilo je znak, ki se uporablja za ločevanje besedila. \\n\\n in \\n sta pogosto uporabljeni ločili za ločevanje odstavkov in vrstic. V kombinaciji z vejicami (\\n\\n,\\n) bodo odstavki razdeljeni po vrsticah, ko bo presežena največja dolžina delcev. Uporabite lahko tudi posebna ločila, ki jih sami določite (npr. ***).", + "separatorPlaceholder": "\\n\\n za ločevanje odstavkov; \\n za ločevanje vrstic", + "maxLength": "Največja dolžina delca", + "overlap": "Prekrivanje delcev", + "overlapTip": "Nastavitev prekrivanja delcev lahko ohrani semantično povezavo med njimi, kar izboljša učinkovitost iskanja. Priporočamo nastavitev 10%-25% največje dolžine delca.", + "overlapCheck": "Prekrivanje delca ne sme biti večje od največje dolžine delca", + "rules": "Pravila predobdelave besedila", + "removeExtraSpaces": "Zamenjaj zaporedne presledke, vrstice in zavihke", + "removeUrlEmails": "Izbriši vse URL-je in e-poštne naslove", + "removeStopwords": "Odstrani neuporabne besede kot so \"a\", \"an\", \"the\"", + "preview": "Potrdi in predogled", + "reset": "Ponastavi", + "indexMode": "Način indeksiranja", + "qualified": "Visoka kakovost", + "recommend": "Priporočeno", + "qualifiedTip": "Za obdelavo se uporabi privzeti sistemski vmesnik za vdelavo, ki zagotavlja višjo natančnost pri poizvedbah uporabnikov.", + "warning": "Najprej nastavite API ključ za model ponudnika.", + "click": "Pojdi na nastavitve", + "economical": "Ekonomsko", + "economicalTip": "Uporablja lokalne vektorske pogone, ključne besede, itd., kar zmanjša natančnost brez porabe žetonov.", + "QATitle": "Razdeljevanje v obliki Vprašanje & Odgovor", + "QATip": "Omogočanje te možnosti bo porabilo več žetonov", + "QALanguage": "Razdelitev z uporabo", + "estimateCost": "Ocena stroškov", + "estimateSegment": "Ocenjeno število delcev", + "segmentCount": "delci", + "calculating": "Izračunavam...", + "fileSource": "Predobdelava dokumentov", + "notionSource": "Predobdelava strani", + "websiteSource": "Predobdelava spletne strani", + "other": "in drugi ", + "fileUnit": " dokumenti", + "notionUnit": " strani", + "webpageUnit": " strani", + "previousStep": "Prejšnji korak", + "nextStep": "Shrani in obdela", + "save": "Shrani in obdela", + "cancel": "Prekliči", + "sideTipTitle": "Zakaj razdeljevanje in predobdelava?", + "sideTipP1": "Pri obdelavi besedilnih podatkov sta razdeljevanje in čiščenje dve pomembni fazi predobdelave.", + "sideTipP2": "Razdeljevanje dolga besedila na odstavke omogoča modelom boljše razumevanje. To izboljša kakovost in relevantnost rezultatov modela.", + "sideTipP3": "Čiščenje odstranjuje nepotrebne znake in formate, kar Znanje naredi bolj čisto in lažje obdeljivo.", + "sideTipP4": "Pravilno razdeljevanje in čiščenje izboljšata delovanje modela, kar zagotavlja bolj natančne in dragocene rezultate.", + "previewTitle": "Predogled", + "previewTitleButton": "Predogled", + "previewButton": "Preklop v obliko Vprašanje & Odgovor", + "previewSwitchTipStart": "Trenutni predogled delcev je v obliki besedila, preklop na predogled v obliki vprašanj in odgovorov bo", + "previewSwitchTipEnd": " porabil dodatne žetone", + "characters": "znaki", + "indexSettingTip": "Če želite spremeniti način indeksiranja in model vdelave, pojdite na ", + "retrievalSettingTip": "Če želite spremeniti nastavitve iskanja, pojdite na ", + "datasetSettingLink": "nastavitve Znanja.", + "maxLengthCheck": "Največja dolžina kosa mora biti manjša od {{limit}}", + "fullDoc": "Celoten dokument", + "parentChildChunkDelimiterTip": "Ločilo je znak, ki se uporablja za ločevanje besedila. \\n je priporočljivo za razdelitev starševskih kosov na majhne otroške koščke. Uporabite lahko tudi posebne ločila, ki ste jih določili sami.", + "highQualityTip": "Ko končate vdelavo v načinu visoke kakovosti, vrnitev v ekonomični način ni na voljo.", + "parentChildTip": "Ko uporabljate način nadreje-podrejenega, se podrejeni kos uporablja za pridobivanje, nadrejeni kos pa se uporablja za odpoklic kot kontekst.", + "paragraph": "Odstavek", + "qaSwitchHighQualityTipTitle": "Oblika zapisa vprašanj in odgovorov zahteva visokokakovostno metodo indeksiranja", + "paragraphTip": "Ta način razdeli besedilo na odstavke na podlagi ločil in največje dolžine kosa, pri čemer se razdeljeno besedilo uporabi kot nadrejeni kos za pridobivanje.", + "parentChildDelimiterTip": "Ločilo je znak, ki se uporablja za ločevanje besedila. \\n\\n je priporočljivo za razdelitev izvirnega dokumenta na velike nadrejene dele. Uporabite lahko tudi posebne ločila, ki ste jih določili sami.", + "notAvailableForQA": "Ni na voljo za indeks vprašanj in odgovorov", + "parentChild": "Starš-otrok", + "parentChunkForContext": "Nadrejeni kos za kontekst", + "notAvailableForParentChild": "Ni na voljo za indeks nadrejenega in podrejenega", + "previewChunk": "Predogled kosa", + "previewChunkCount": "{{štetje}} Ocenjeni kosi", + "previewChunkTip": "Kliknite gumb »Predogled kosa« na levi, da naložite predogled", + "fullDocTip": "Celoten dokument je uporabljen kot nadrejeni kos in pridobljen neposredno. Upoštevajte, da bo zaradi uspešnosti besedilo, ki presega 10000 žetonov, samodejno prikrajšano.", + "childChunkForRetrieval": "Otroški kos za pridobivanje", + "qaSwitchHighQualityTipContent": "Trenutno samo visokokakovostna metoda indeksa podpira deljenje v obliki vprašanj in odgovorov. Želite preklopiti na kakovosten način?", + "generalTip": "Splošni način deljenja besedila, pridobljeni in odpoklicani kosi so enaki.", + "useQALanguage": "Delček z obliko zapisa vprašanj in odgovorov v", + "general": "Splošno", + "switch": "Stikalo", + "qaTip": "Če uporabljate strukturirane podatke vprašanj in odgovorov, lahko ustvarite dokumente, ki združujejo vprašanja z odgovori. Ti dokumenti so indeksirani na podlagi dela vprašanj, kar sistemu omogoča, da pridobi ustrezne odgovore na podlagi podobnosti poizvedbe." + }, + "stepThree": { + "creationTitle": "🎉 Znanje ustvarjeno", + "creationContent": "Samodejno smo poimenovali Znanje, ime lahko kadarkoli spremenite.", + "label": "Ime Znanja", + "additionTitle": "🎉 Dokument naložen", + "additionP1": "Dokument je bil naložen v Znanje", + "additionP2": ", lahko ga najdete v seznamu dokumentov Znanja.", + "stop": "Ustavi obdelavo", + "resume": "Nadaljuj obdelavo", + "navTo": "Pojdi na dokument", + "sideTipTitle": "Kaj sledi", + "sideTipContent": "Ko je dokument končan z indeksiranjem, lahko Znanje vključite v aplikacijo kot kontekst, nastavitve konteksta najdete na strani za orkestracijo ukazov. Prav tako ga lahko ustvarite kot samostojni vtičnik za indeksiranje ChatGPT in ga izdate.", + "modelTitle": "Ali ste prepričani, da želite ustaviti vdelavo?", + "modelContent": "Če boste morali nadaljevati obdelavo kasneje, se bo ta nadaljevala tam, kjer ste končali.", + "modelButtonConfirm": "Potrdi", + "modelButtonCancel": "Prekliči" + }, + "otherDataSource": { + "learnMore": "Izvedi več", + "title": "Vzpostavite povezavo z drugimi viri podatkov?", + "description": "Trenutno ima baza znanja Dify le omejene vire podatkov. Prispevanje vira podatkov v bazo znanja Dify je fantastičen način za izboljšanje prilagodljivosti in moči platforme za vse uporabnike. Naš vodnik za prispevke olajša začetek. Če želite izvedeti več, kliknite spodnjo povezavo." + }, + "watercrawl": { + "configWatercrawl": "Konfiguriraj Watercrawl", + "getApiKeyLinkText": "Pridobite svoj API ključ iz watercrawl.dev", + "apiKeyPlaceholder": "API ključ iz watercrawl.dev" + } +} diff --git a/web/i18n/sl-SI/dataset-creation.ts b/web/i18n/sl-SI/dataset-creation.ts deleted file mode 100644 index 2c0114dd61..0000000000 --- a/web/i18n/sl-SI/dataset-creation.ts +++ /dev/null @@ -1,217 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: 'Znanje', - }, - one: 'Izberi vir podatkov', - two: 'Predobdelava in čiščenje besedila', - three: 'Izvedi in zaključi', - }, - error: { - unavailable: 'To Znanje ni na voljo', - }, - firecrawl: { - configFirecrawl: 'Nastavi 🔥Firecrawl', - apiKeyPlaceholder: 'API ključ od firecrawl.dev', - getApiKeyLinkText: 'Pridobi API ključ na firecrawl.dev', - }, - jinaReader: { - configJinaReader: 'Nastavi Jina Reader', - apiKeyPlaceholder: 'API ključ od jina.ai', - getApiKeyLinkText: 'Pridobi brezplačni API ključ na jina.ai', - }, - stepOne: { - filePreview: 'Predogled datoteke', - pagePreview: 'Predogled strani', - dataSourceType: { - file: 'Uvozi iz datoteke', - notion: 'Sinhroniziraj z Notion', - web: 'Sinhroniziraj s spletno stranjo', - }, - uploader: { - title: 'Naloži datoteko', - button: 'Povleci in spusti datoteke ali mape oz', - buttonSingleFile: 'Povleci in spusti datoteko oz', - browse: 'Prebrskaj', - tip: 'Podprti tipi datotek: {{supportTypes}}. Največ {{size}}MB na datoteko.', - validation: { - typeError: 'Tip datoteke ni podprt', - size: 'Datoteka je prevelika. Največja dovoljena velikost je {{size}}MB', - count: 'Podprta je le ena datoteka', - filesNumber: 'Dosegli ste omejitev za pošiljanje {{filesNumber}} datotek.', - }, - cancel: 'Prekliči', - change: 'Zamenjaj', - failed: 'Nalaganje ni uspelo', - }, - notionSyncTitle: 'Notion ni povezan', - notionSyncTip: 'Za sinhronizacijo z Notion je najprej potrebno vzpostaviti povezavo.', - connect: 'Pojdi na povezavo', - button: 'Naprej', - emptyDatasetCreation: 'Želim ustvariti prazno Znanje', - modal: { - title: 'Ustvari prazno Znanje', - tip: 'Prazno Znanje ne bo vsebovalo dokumentov, dokumente pa lahko naložite kadarkoli.', - input: 'Ime Znanja', - placeholder: 'Vnesite ime', - nameNotEmpty: 'Ime ne sme biti prazno', - nameLengthInvalid: 'Ime mora imeti od 1 do 40 znakov', - cancelButton: 'Prekliči', - confirmButton: 'Ustvari', - failed: 'Ustvarjanje ni uspelo', - }, - website: { - chooseProvider: 'Izberi ponudnika', - fireCrawlNotConfigured: 'Firecrawl ni nastavljen', - fireCrawlNotConfiguredDescription: 'Nastavite Firecrawl z API ključem, da ga lahko uporabite.', - jinaReaderNotConfigured: 'Jina Reader ni nastavljen', - jinaReaderNotConfiguredDescription: 'Nastavite Jina Reader z vnosom brezplačnega API ključa.', - configure: 'Nastavi', - run: 'Zaženi', - firecrawlTitle: 'Izvleci spletno vsebino z 🔥Firecrawl', - firecrawlDoc: 'Firecrawl dokumentacija', - jinaReaderTitle: 'Pretvori celotno stran v Markdown', - jinaReaderDoc: 'Več o Jina Reader', - jinaReaderDocLink: 'https://jina.ai/reader', - useSitemap: 'Uporabi sitemap', - useSitemapTooltip: 'Sledi zemljevidu spletne strani (sitemap) za iskanje strani. Če ne, bo Jina Reader iterativno iskal strani na podlagi pomembnosti, kar bo prineslo manj, a bolj relevantnih strani.', - options: 'Možnosti', - crawlSubPage: 'Išči podstrani', - limit: 'Omejitev', - maxDepth: 'Največja globina', - excludePaths: 'Izključi poti', - includeOnlyPaths: 'Vključi le poti', - extractOnlyMainContent: 'Izvleci le glavno vsebino (brez glav, navigacij, nog itd.)', - exceptionErrorTitle: 'Med izvajanjem iskanja je prišlo do izjeme:', - unknownError: 'Neznana napaka', - totalPageScraped: 'Skupaj preiskanih strani:', - selectAll: 'Izberi vse', - resetAll: 'Ponastavi vse', - scrapTimeInfo: 'Skupaj preiskanih {{total}} strani v {{time}}s', - preview: 'Predogled', - maxDepthTooltip: 'Največja globina iskanja glede na vneseni URL. Globina 0 bo iskala le stran z vnesenim URL-jem, globina 1 bo iskala URL in vse za tem, dodano z enim /, in tako naprej.', - waterCrawlNotConfiguredDescription: 'Konfigurirajte Watercrawl z API ključem, da ga uporabite.', - configureWatercrawl: 'Konfiguriraj Watercrawl', - waterCrawlNotConfigured: 'Watercrawl ni konfiguriran', - watercrawlDoc: 'Watercrawl dokumentacija', - configureJinaReader: 'Konfigurirajte Jina Reader', - configureFirecrawl: 'Konfigurirajte Firecrawl', - watercrawlTitle: 'Izvleci vsebino z interneta z Watercrawl', - running: 'Tek', - }, - cancel: 'Odpovedati', - }, - stepTwo: { - segmentation: 'Nastavitve razdeljevanja', - auto: 'Samodejno', - autoDescription: 'Samodejno nastavi pravila za razdeljevanje in predobdelavo besedila. Neizkušenim uporabnikom priporočamo to možnost.', - custom: 'Po meri', - customDescription: 'Prilagodi pravila za razdeljevanje, dolžino delcev in pravila za predobdelavo besedila itd.', - separator: 'Ločilo', - separatorTip: 'Ločilo je znak, ki se uporablja za ločevanje besedila. \\n\\n in \\n sta pogosto uporabljeni ločili za ločevanje odstavkov in vrstic. V kombinaciji z vejicami (\\n\\n,\\n) bodo odstavki razdeljeni po vrsticah, ko bo presežena največja dolžina delcev. Uporabite lahko tudi posebna ločila, ki jih sami določite (npr. ***).', - separatorPlaceholder: '\\n\\n za ločevanje odstavkov; \\n za ločevanje vrstic', - maxLength: 'Največja dolžina delca', - overlap: 'Prekrivanje delcev', - overlapTip: 'Nastavitev prekrivanja delcev lahko ohrani semantično povezavo med njimi, kar izboljša učinkovitost iskanja. Priporočamo nastavitev 10%-25% največje dolžine delca.', - overlapCheck: 'Prekrivanje delca ne sme biti večje od največje dolžine delca', - rules: 'Pravila predobdelave besedila', - removeExtraSpaces: 'Zamenjaj zaporedne presledke, vrstice in zavihke', - removeUrlEmails: 'Izbriši vse URL-je in e-poštne naslove', - removeStopwords: 'Odstrani neuporabne besede kot so "a", "an", "the"', - preview: 'Potrdi in predogled', - reset: 'Ponastavi', - indexMode: 'Način indeksiranja', - qualified: 'Visoka kakovost', - recommend: 'Priporočeno', - qualifiedTip: 'Za obdelavo se uporabi privzeti sistemski vmesnik za vdelavo, ki zagotavlja višjo natančnost pri poizvedbah uporabnikov.', - warning: 'Najprej nastavite API ključ za model ponudnika.', - click: 'Pojdi na nastavitve', - economical: 'Ekonomsko', - economicalTip: 'Uporablja lokalne vektorske pogone, ključne besede, itd., kar zmanjša natančnost brez porabe žetonov.', - QATitle: 'Razdeljevanje v obliki Vprašanje & Odgovor', - QATip: 'Omogočanje te možnosti bo porabilo več žetonov', - QALanguage: 'Razdelitev z uporabo', - estimateCost: 'Ocena stroškov', - estimateSegment: 'Ocenjeno število delcev', - segmentCount: 'delci', - calculating: 'Izračunavam...', - fileSource: 'Predobdelava dokumentov', - notionSource: 'Predobdelava strani', - websiteSource: 'Predobdelava spletne strani', - other: 'in drugi ', - fileUnit: ' dokumenti', - notionUnit: ' strani', - webpageUnit: ' strani', - previousStep: 'Prejšnji korak', - nextStep: 'Shrani in obdela', - save: 'Shrani in obdela', - cancel: 'Prekliči', - sideTipTitle: 'Zakaj razdeljevanje in predobdelava?', - sideTipP1: 'Pri obdelavi besedilnih podatkov sta razdeljevanje in čiščenje dve pomembni fazi predobdelave.', - sideTipP2: 'Razdeljevanje dolga besedila na odstavke omogoča modelom boljše razumevanje. To izboljša kakovost in relevantnost rezultatov modela.', - sideTipP3: 'Čiščenje odstranjuje nepotrebne znake in formate, kar Znanje naredi bolj čisto in lažje obdeljivo.', - sideTipP4: 'Pravilno razdeljevanje in čiščenje izboljšata delovanje modela, kar zagotavlja bolj natančne in dragocene rezultate.', - previewTitle: 'Predogled', - previewTitleButton: 'Predogled', - previewButton: 'Preklop v obliko Vprašanje & Odgovor', - previewSwitchTipStart: 'Trenutni predogled delcev je v obliki besedila, preklop na predogled v obliki vprašanj in odgovorov bo', - previewSwitchTipEnd: ' porabil dodatne žetone', - characters: 'znaki', - indexSettingTip: 'Če želite spremeniti način indeksiranja in model vdelave, pojdite na ', - retrievalSettingTip: 'Če želite spremeniti nastavitve iskanja, pojdite na ', - datasetSettingLink: 'nastavitve Znanja.', - maxLengthCheck: 'Največja dolžina kosa mora biti manjša od {{limit}}', - fullDoc: 'Celoten dokument', - parentChildChunkDelimiterTip: 'Ločilo je znak, ki se uporablja za ločevanje besedila. \\n je priporočljivo za razdelitev starševskih kosov na majhne otroške koščke. Uporabite lahko tudi posebne ločila, ki ste jih določili sami.', - highQualityTip: 'Ko končate vdelavo v načinu visoke kakovosti, vrnitev v ekonomični način ni na voljo.', - parentChildTip: 'Ko uporabljate način nadreje-podrejenega, se podrejeni kos uporablja za pridobivanje, nadrejeni kos pa se uporablja za odpoklic kot kontekst.', - paragraph: 'Odstavek', - qaSwitchHighQualityTipTitle: 'Oblika zapisa vprašanj in odgovorov zahteva visokokakovostno metodo indeksiranja', - paragraphTip: 'Ta način razdeli besedilo na odstavke na podlagi ločil in največje dolžine kosa, pri čemer se razdeljeno besedilo uporabi kot nadrejeni kos za pridobivanje.', - parentChildDelimiterTip: 'Ločilo je znak, ki se uporablja za ločevanje besedila. \\n\\n je priporočljivo za razdelitev izvirnega dokumenta na velike nadrejene dele. Uporabite lahko tudi posebne ločila, ki ste jih določili sami.', - notAvailableForQA: 'Ni na voljo za indeks vprašanj in odgovorov', - parentChild: 'Starš-otrok', - parentChunkForContext: 'Nadrejeni kos za kontekst', - notAvailableForParentChild: 'Ni na voljo za indeks nadrejenega in podrejenega', - previewChunk: 'Predogled kosa', - previewChunkCount: '{{štetje}} Ocenjeni kosi', - previewChunkTip: 'Kliknite gumb »Predogled kosa« na levi, da naložite predogled', - fullDocTip: 'Celoten dokument je uporabljen kot nadrejeni kos in pridobljen neposredno. Upoštevajte, da bo zaradi uspešnosti besedilo, ki presega 10000 žetonov, samodejno prikrajšano.', - childChunkForRetrieval: 'Otroški kos za pridobivanje', - qaSwitchHighQualityTipContent: 'Trenutno samo visokokakovostna metoda indeksa podpira deljenje v obliki vprašanj in odgovorov. Želite preklopiti na kakovosten način?', - generalTip: 'Splošni način deljenja besedila, pridobljeni in odpoklicani kosi so enaki.', - useQALanguage: 'Delček z obliko zapisa vprašanj in odgovorov v', - general: 'Splošno', - switch: 'Stikalo', - qaTip: 'Če uporabljate strukturirane podatke vprašanj in odgovorov, lahko ustvarite dokumente, ki združujejo vprašanja z odgovori. Ti dokumenti so indeksirani na podlagi dela vprašanj, kar sistemu omogoča, da pridobi ustrezne odgovore na podlagi podobnosti poizvedbe.', - }, - stepThree: { - creationTitle: '🎉 Znanje ustvarjeno', - creationContent: 'Samodejno smo poimenovali Znanje, ime lahko kadarkoli spremenite.', - label: 'Ime Znanja', - additionTitle: '🎉 Dokument naložen', - additionP1: 'Dokument je bil naložen v Znanje', - additionP2: ', lahko ga najdete v seznamu dokumentov Znanja.', - stop: 'Ustavi obdelavo', - resume: 'Nadaljuj obdelavo', - navTo: 'Pojdi na dokument', - sideTipTitle: 'Kaj sledi', - sideTipContent: 'Ko je dokument končan z indeksiranjem, lahko Znanje vključite v aplikacijo kot kontekst, nastavitve konteksta najdete na strani za orkestracijo ukazov. Prav tako ga lahko ustvarite kot samostojni vtičnik za indeksiranje ChatGPT in ga izdate.', - modelTitle: 'Ali ste prepričani, da želite ustaviti vdelavo?', - modelContent: 'Če boste morali nadaljevati obdelavo kasneje, se bo ta nadaljevala tam, kjer ste končali.', - modelButtonConfirm: 'Potrdi', - modelButtonCancel: 'Prekliči', - }, - otherDataSource: { - learnMore: 'Izvedi več', - title: 'Vzpostavite povezavo z drugimi viri podatkov?', - description: 'Trenutno ima baza znanja Dify le omejene vire podatkov. Prispevanje vira podatkov v bazo znanja Dify je fantastičen način za izboljšanje prilagodljivosti in moči platforme za vse uporabnike. Naš vodnik za prispevke olajša začetek. Če želite izvedeti več, kliknite spodnjo povezavo.', - }, - watercrawl: { - configWatercrawl: 'Konfiguriraj Watercrawl', - getApiKeyLinkText: 'Pridobite svoj API ključ iz watercrawl.dev', - apiKeyPlaceholder: 'API ključ iz watercrawl.dev', - }, -} - -export default translation diff --git a/web/i18n/sl-SI/dataset-documents.json b/web/i18n/sl-SI/dataset-documents.json new file mode 100644 index 0000000000..bb8d403220 --- /dev/null +++ b/web/i18n/sl-SI/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "Dokumenti", + "desc": "Vse datoteke znanja so prikazane tukaj, celotno znanje pa je mogoče povezati s citati Dify ali indeksirati prek vtičnika Chat.", + "addFile": "Dodaj datoteko", + "addPages": "Dodaj strani", + "addUrl": "Dodaj URL", + "table": { + "header": { + "fileName": "IME DATOTEKE", + "words": "BESEDE", + "hitCount": "ŠTEVILO PRIDOBITEV", + "uploadTime": "ČAS NALAGANJA", + "status": "STATUS", + "action": "DEJANJE", + "chunkingMode": "NAČIN KOŠČENJA" + }, + "rename": "Preimenuj", + "name": "Ime" + }, + "action": { + "uploadFile": "Naloži novo datoteko", + "settings": "Nastavitve segmenta", + "addButton": "Dodaj del", + "add": "Dodaj del", + "batchAdd": "Serijsko dodajanje", + "archive": "Arhiviraj", + "unarchive": "Razveljavi arhiviranje", + "delete": "Izbriši", + "enableWarning": "Arhivirane datoteke ni mogoče omogočiti", + "sync": "Sinhroniziraj", + "pause": "Zaustavi", + "resume": "Nadaljuj" + }, + "index": { + "enable": "Omogoči", + "disable": "Onemogoči", + "all": "Vse", + "enableTip": "Datoteka je lahko indeksirana", + "disableTip": "Datoteka ne more biti indeksirana" + }, + "status": { + "queuing": "V čakalni vrsti", + "indexing": "Indeksiranje", + "paused": "Zaustavljeno", + "error": "Napaka", + "available": "Na voljo", + "enabled": "Omogočeno", + "disabled": "Onemogočeno", + "archived": "Arhivirano" + }, + "empty": { + "title": "Dokumentacije še ni", + "upload": { + "tip": "Lahko naložite datoteke, sinhronizirate z spletno stranjo ali aplikacijami, kot so Notion, GitHub itd." + }, + "sync": { + "tip": "Dify bo občasno prenesel datoteke iz Notion in dokončal obdelavo." + } + }, + "delete": { + "title": "Ali ste prepričani, da želite izbrisati?", + "content": "Če boste nadaljevali obdelavo kasneje, boste nadaljevali tam, kjer ste končali." + }, + "batchModal": { + "title": "Serijsko dodajanje delov", + "csvUploadTitle": "Povlecite in spustite svojo CSV datoteko tukaj ali ", + "browse": "brskajte", + "tip": "CSV datoteka mora ustrezati naslednji strukturi:", + "question": "vprašanje", + "answer": "odgovor", + "contentTitle": "vsebina dela", + "content": "vsebina", + "template": "Prenesite predlogo tukaj", + "cancel": "Prekliči", + "run": "Zaženi serijo", + "runError": "Serijsko dodajanje ni uspelo", + "processing": "V obdelavi serije", + "completed": "Uvoz zaključen", + "error": "Napaka pri uvozu", + "ok": "V redu" + }, + "learnMore": "Izvedi več", + "sort": { + "uploadTime": "Čas nalaganja", + "hitCount": "Število priklicev" + } + }, + "metadata": { + "title": "Metapodatki", + "desc": "Označevanje metapodatkov za dokumente omogoča, da AI pravočasno dostopa do njih in prikaže vir referenc uporabnikom.", + "dateTimeFormat": "MMMM D, YYYY hh:mm A", + "docTypeSelectTitle": "Izberite vrsto dokumenta", + "docTypeChangeTitle": "Spremeni vrsto dokumenta", + "docTypeSelectWarning": "Če se vrsta dokumenta spremeni, trenutni vneseni metapodatki ne bodo ohranjeni", + "firstMetaAction": "Začni", + "placeholder": { + "add": "Dodaj ", + "select": "Izberi " + }, + "source": { + "upload_file": "Naloži datoteko", + "notion": "Sinhroniziraj iz Notion", + "github": "Sinhroniziraj iz Github", + "local_file": "Lokalna datoteka", + "online_document": "Spletni dokument", + "website_crawl": "Iskanje po spletnih mestih" + }, + "type": { + "book": "Knjiga", + "webPage": "Spletna stran", + "paper": "Znanstveni članek", + "socialMediaPost": "Objava na družbenih omrežjih", + "personalDocument": "Osebni dokument", + "businessDocument": "Poslovni dokument", + "IMChat": "Klepet", + "wikipediaEntry": "Vnos iz Wikipedije", + "notion": "Sinhroniziraj iz Notion", + "github": "Sinhroniziraj iz Github", + "technicalParameters": "Tehnični parametri" + }, + "field": { + "processRule": { + "processDoc": "Obdelaj dokument", + "segmentRule": "Pravilo segmenta", + "segmentLength": "Dolžina segmentov", + "processClean": "Čiščenje besedila" + }, + "book": { + "title": "Naslov", + "language": "Jezik", + "author": "Avtor", + "publisher": "Založnik", + "publicationDate": "Datum objave", + "ISBN": "ISBN", + "category": "Kategorija" + }, + "webPage": { + "title": "Naslov", + "url": "URL", + "language": "Jezik", + "authorPublisher": "Avtor/Založnik", + "publishDate": "Datum objave", + "topicKeywords": "Teme/Ključne besede", + "description": "Opis" + }, + "paper": { + "title": "Naslov", + "language": "Jezik", + "author": "Avtor", + "publishDate": "Datum objave", + "journalConferenceName": "Ime revije/konference", + "volumeIssuePage": "Letnik/Številka/Stran", + "DOI": "DOI", + "topicsKeywords": "Teme/Ključne besede", + "abstract": "Povzetek" + }, + "socialMediaPost": { + "platform": "Platforma", + "authorUsername": "Avtor/Uporabniško ime", + "publishDate": "Datum objave", + "postURL": "URL objave", + "topicsTags": "Teme/Oznake" + }, + "personalDocument": { + "title": "Naslov", + "author": "Avtor", + "creationDate": "Datum nastanka", + "lastModifiedDate": "Datum zadnje spremembe", + "documentType": "Vrsta dokumenta", + "tagsCategory": "Oznake/Kategorija" + }, + "businessDocument": { + "title": "Naslov", + "author": "Avtor", + "creationDate": "Datum nastanka", + "lastModifiedDate": "Datum zadnje spremembe", + "documentType": "Vrsta dokumenta", + "departmentTeam": "Oddelek/Ekipa" + }, + "IMChat": { + "chatPlatform": "Platforma za klepet", + "chatPartiesGroupName": "Udeleženci klepeta/Skupina", + "participants": "Udeleženci", + "startDate": "Datum začetka", + "endDate": "Datum konca", + "topicsKeywords": "Teme/Ključne besede", + "fileType": "Vrsta datoteke" + }, + "wikipediaEntry": { + "title": "Naslov", + "language": "Jezik", + "webpageURL": "URL spletne strani", + "editorContributor": "Urednik/Sodelavec", + "lastEditDate": "Datum zadnje spremembe", + "summaryIntroduction": "Povzetek/Uvod" + }, + "notion": { + "title": "Naslov", + "language": "Jezik", + "author": "Avtor", + "createdTime": "Čas nastanka", + "lastModifiedTime": "Čas zadnje spremembe", + "url": "URL", + "tag": "Oznaka", + "description": "Opis" + }, + "github": { + "repoName": "Ime repozitorija", + "repoDesc": "Opis repozitorija", + "repoOwner": "Lastnik repozitorija", + "fileName": "Ime datoteke", + "filePath": "Pot do datoteke", + "programmingLang": "Programski jezik", + "url": "URL", + "license": "Licenca", + "lastCommitTime": "Čas zadnje spremembe", + "lastCommitAuthor": "Avtor zadnje spremembe" + }, + "originInfo": { + "originalFilename": "Izvirno ime datoteke", + "originalFileSize": "Izvirna velikost datoteke", + "uploadDate": "Datum nalaganja", + "lastUpdateDate": "Datum zadnje spremembe", + "source": "Vir" + }, + "technicalParameters": { + "segmentSpecification": "Specifikacija segmentov", + "segmentLength": "Dolžina segmentov", + "avgParagraphLength": "Povprečna dolžina odstavka", + "paragraphs": "Odstavki", + "hitCount": "Število pridobitev", + "embeddingTime": "Čas vdelave", + "embeddedSpend": "Stroški vdelave" + } + }, + "languageMap": { + "zh": "Kitajščina", + "en": "Angleščina", + "es": "Španščina", + "fr": "Francoščina", + "de": "Nemščina", + "ja": "Japonščina", + "ko": "Korejščina", + "ru": "Ruščina", + "ar": "Arabščina", + "pt": "Portugalščina", + "it": "Italijanščina", + "nl": "Nizozemščina", + "pl": "Poljščina", + "sv": "Švedščina", + "tr": "Turščina", + "he": "Hebrejščina", + "hi": "Hindujščina", + "da": "Danščina", + "fi": "Finščina", + "no": "Norveščina", + "hu": "Madžarščina", + "el": "Grščina", + "cs": "Češčina", + "th": "Tajščina", + "id": "Indonezijščina" + }, + "categoryMap": { + "book": { + "fiction": "Leposlovje", + "biography": "Biografija", + "history": "Zgodovina", + "science": "Znanost", + "technology": "Tehnologija", + "education": "Izobraževanje", + "philosophy": "Filozofija", + "religion": "Religija", + "socialSciences": "Družboslovje", + "art": "Umetnost", + "travel": "Potovanja", + "health": "Zdravje", + "selfHelp": "Samopomoč", + "businessEconomics": "Poslovanje in ekonomija", + "cooking": "Kuhanje", + "childrenYoungAdults": "Otroci in mladi odrasli", + "comicsGraphicNovels": "Stripi in grafični romani", + "poetry": "Poezija", + "drama": "Drama", + "other": "Drugo" + }, + "personalDoc": { + "notes": "Zapiski", + "blogDraft": "Osnutek bloga", + "diary": "Dnevnik", + "researchReport": "Raziskovalno poročilo", + "bookExcerpt": "Odlomek iz knjige", + "schedule": "Urnik", + "list": "Seznam", + "projectOverview": "Pregled projekta", + "photoCollection": "Fotografska zbirka", + "creativeWriting": "Ustvarjalno pisanje", + "codeSnippet": "Koda", + "designDraft": "Oblikovalski osnutek", + "personalResume": "Osebni življenjepis", + "other": "Drugo" + }, + "businessDoc": { + "meetingMinutes": "Zapisniki sestankov", + "researchReport": "Raziskovalno poročilo", + "proposal": "Predlog", + "employeeHandbook": "Priročnik za zaposlene", + "trainingMaterials": "Izobraževalni materiali", + "requirementsDocument": "Dokumentacija zahtev", + "designDocument": "Oblikovalska dokumentacija", + "productSpecification": "Specifikacija izdelka", + "financialReport": "Finančno poročilo", + "marketAnalysis": "Tržna analiza", + "projectPlan": "Načrt projekta", + "teamStructure": "Struktura ekipe", + "policiesProcedures": "Pravila in postopki", + "contractsAgreements": "Pogodbe in dogovori", + "emailCorrespondence": "E-poštna korespondenca", + "other": "Drugo" + } + } + }, + "embedding": { + "processing": "Proces vdelave...", + "paused": "Vdelava zaustavljena", + "completed": "Vdelava zaključena", + "error": "Napaka pri vdelavi", + "docName": "Predobdelava dokumenta", + "mode": "Pravilo segmentacije", + "segmentLength": "Dolžina segmentov", + "textCleaning": "Predobdelava in čiščenje besedila", + "segments": "Odstavki", + "highQuality": "Način visoke kakovosti", + "economy": "Ekonomski način", + "estimate": "Ocenjena poraba", + "stop": "Ustavi obdelavo", + "resume": "Nadaljuj obdelavo", + "automatic": "Samodejno", + "custom": "Po meri", + "previewTip": "Predogled odstavkov bo na voljo po zaključku vdelave", + "hierarchical": "Starš-otrok", + "childMaxTokens": "Otrok", + "pause": "Zaustavi", + "parentMaxTokens": "Starš", + "waiting": "Čakanje na zajemanje..." + }, + "segment": { + "paragraphs": "Odstavki", + "keywords": "Ključne besede", + "addKeyWord": "Dodaj ključno besedo", + "keywordError": "Največja dolžina ključne besede je 20", + "hitCount": "Število pridobitev", + "vectorHash": "Vektorski hash: ", + "questionPlaceholder": "dodajte vprašanje tukaj", + "questionEmpty": "Vprašanje ne sme biti prazno", + "answerPlaceholder": "dodajte odgovor tukaj", + "answerEmpty": "Odgovor ne sme biti prazen", + "contentPlaceholder": "dodajte vsebino tukaj", + "contentEmpty": "Vsebina ne sme biti prazna", + "newTextSegment": "Nov besedilni segment", + "newQaSegment": "Nov Q&A segment", + "delete": "Izbriši ta del?", + "regenerationSuccessTitle": "Regeneracija končana", + "expandChunks": "Razširitev kosov", + "childChunk": "Otroški kos", + "editedAt": "Urejeno na", + "dateTimeFormat": "MM/DD/YYYY h:mm", + "edited": "UREJATI", + "addAnother": "Dodajanje še enega", + "childChunks_one": "OTROŠKI KOS", + "chunkDetail": "Detajl koščka", + "chunkAdded": "Dodan 1 kos", + "editChildChunk": "Urejanje podrejenega kosa", + "regenerationConfirmTitle": "Ali želite regenerirati otroške koščke?", + "empty": "Ni najdenega koščka", + "searchResults_other": "REZULTATI", + "childChunks_other": "OTROŠKI KOŠČKI", + "addChildChunk": "Dodajanje podrejenega kosa", + "editParentChunk": "Urejanje nadrejenega kosa", + "regenerationConfirmMessage": "Obnavljanje podrejenih kosov bo prepisalo trenutne podrejene koščke, vključno z urejenimi koščki in na novo dodanimi kosi. Regeneracije ni mogoče razveljaviti.", + "editChunk": "Uredi kos", + "chunks_one": "KOS", + "searchResults_one": "REZULTAT", + "parentChunks_one": "STARŠEVSKI KOS", + "characters_other": "Znakov", + "chunks_other": "KOSE", + "clearFilter": "Počisti filter", + "newChildChunk": "Nov podzakonski kos", + "characters_one": "znak", + "regeneratingTitle": "Regeneracija otroških kosov", + "regeneratingMessage": "To lahko traja trenutek, prosim počakajte ...", + "parentChunks_other": "STARŠEVSKI KOSI", + "collapseChunks": "Strniti koščke", + "parentChunk": "Starševski kos", + "regenerationSuccessMessage": "To okno lahko zaprete.", + "newChunk": "Nov kos", + "searchResults_zero": "REZULTAT", + "chunk": "Kos", + "addChunk": "Dodajanje kosa", + "childChunkAdded": "Dodan je 1 kos otroka", + "keywordDuplicate": "Ključna beseda že obstaja", + "keywordEmpty": "Ključna beseda ne more biti prazna", + "allFilesUploaded": "Vse datoteke je treba naložiti, preden shranite" + } +} diff --git a/web/i18n/sl-SI/dataset-documents.ts b/web/i18n/sl-SI/dataset-documents.ts deleted file mode 100644 index 04a951402f..0000000000 --- a/web/i18n/sl-SI/dataset-documents.ts +++ /dev/null @@ -1,408 +0,0 @@ -const translation = { - list: { - title: 'Dokumenti', - desc: 'Vse datoteke znanja so prikazane tukaj, celotno znanje pa je mogoče povezati s citati Dify ali indeksirati prek vtičnika Chat.', - addFile: 'Dodaj datoteko', - addPages: 'Dodaj strani', - addUrl: 'Dodaj URL', - table: { - header: { - fileName: 'IME DATOTEKE', - words: 'BESEDE', - hitCount: 'ŠTEVILO PRIDOBITEV', - uploadTime: 'ČAS NALAGANJA', - status: 'STATUS', - action: 'DEJANJE', - chunkingMode: 'NAČIN KOŠČENJA', - }, - rename: 'Preimenuj', - name: 'Ime', - }, - action: { - uploadFile: 'Naloži novo datoteko', - settings: 'Nastavitve segmenta', - addButton: 'Dodaj del', - add: 'Dodaj del', - batchAdd: 'Serijsko dodajanje', - archive: 'Arhiviraj', - unarchive: 'Razveljavi arhiviranje', - delete: 'Izbriši', - enableWarning: 'Arhivirane datoteke ni mogoče omogočiti', - sync: 'Sinhroniziraj', - pause: 'Zaustavi', - resume: 'Nadaljuj', - }, - index: { - enable: 'Omogoči', - disable: 'Onemogoči', - all: 'Vse', - enableTip: 'Datoteka je lahko indeksirana', - disableTip: 'Datoteka ne more biti indeksirana', - }, - status: { - queuing: 'V čakalni vrsti', - indexing: 'Indeksiranje', - paused: 'Zaustavljeno', - error: 'Napaka', - available: 'Na voljo', - enabled: 'Omogočeno', - disabled: 'Onemogočeno', - archived: 'Arhivirano', - }, - empty: { - title: 'Dokumentacije še ni', - upload: { - tip: 'Lahko naložite datoteke, sinhronizirate z spletno stranjo ali aplikacijami, kot so Notion, GitHub itd.', - }, - sync: { - tip: 'Dify bo občasno prenesel datoteke iz Notion in dokončal obdelavo.', - }, - }, - delete: { - title: 'Ali ste prepričani, da želite izbrisati?', - content: 'Če boste nadaljevali obdelavo kasneje, boste nadaljevali tam, kjer ste končali.', - }, - batchModal: { - title: 'Serijsko dodajanje delov', - csvUploadTitle: 'Povlecite in spustite svojo CSV datoteko tukaj ali ', - browse: 'brskajte', - tip: 'CSV datoteka mora ustrezati naslednji strukturi:', - question: 'vprašanje', - answer: 'odgovor', - contentTitle: 'vsebina dela', - content: 'vsebina', - template: 'Prenesite predlogo tukaj', - cancel: 'Prekliči', - run: 'Zaženi serijo', - runError: 'Serijsko dodajanje ni uspelo', - processing: 'V obdelavi serije', - completed: 'Uvoz zaključen', - error: 'Napaka pri uvozu', - ok: 'V redu', - }, - learnMore: 'Izvedi več', - sort: { - uploadTime: 'Čas nalaganja', - hitCount: 'Število priklicev', - }, - }, - metadata: { - title: 'Metapodatki', - desc: 'Označevanje metapodatkov za dokumente omogoča, da AI pravočasno dostopa do njih in prikaže vir referenc uporabnikom.', - dateTimeFormat: 'MMMM D, YYYY hh:mm A', - docTypeSelectTitle: 'Izberite vrsto dokumenta', - docTypeChangeTitle: 'Spremeni vrsto dokumenta', - docTypeSelectWarning: - 'Če se vrsta dokumenta spremeni, trenutni vneseni metapodatki ne bodo ohranjeni', - firstMetaAction: 'Začni', - placeholder: { - add: 'Dodaj ', - select: 'Izberi ', - }, - source: { - upload_file: 'Naloži datoteko', - notion: 'Sinhroniziraj iz Notion', - github: 'Sinhroniziraj iz Github', - local_file: 'Lokalna datoteka', - online_document: 'Spletni dokument', - website_crawl: 'Iskanje po spletnih mestih', - }, - type: { - book: 'Knjiga', - webPage: 'Spletna stran', - paper: 'Znanstveni članek', - socialMediaPost: 'Objava na družbenih omrežjih', - personalDocument: 'Osebni dokument', - businessDocument: 'Poslovni dokument', - IMChat: 'Klepet', - wikipediaEntry: 'Vnos iz Wikipedije', - notion: 'Sinhroniziraj iz Notion', - github: 'Sinhroniziraj iz Github', - technicalParameters: 'Tehnični parametri', - }, - field: { - processRule: { - processDoc: 'Obdelaj dokument', - segmentRule: 'Pravilo segmenta', - segmentLength: 'Dolžina segmentov', - processClean: 'Čiščenje besedila', - }, - book: { - title: 'Naslov', - language: 'Jezik', - author: 'Avtor', - publisher: 'Založnik', - publicationDate: 'Datum objave', - ISBN: 'ISBN', - category: 'Kategorija', - }, - webPage: { - title: 'Naslov', - url: 'URL', - language: 'Jezik', - authorPublisher: 'Avtor/Založnik', - publishDate: 'Datum objave', - topicKeywords: 'Teme/Ključne besede', - description: 'Opis', - }, - paper: { - title: 'Naslov', - language: 'Jezik', - author: 'Avtor', - publishDate: 'Datum objave', - journalConferenceName: 'Ime revije/konference', - volumeIssuePage: 'Letnik/Številka/Stran', - DOI: 'DOI', - topicsKeywords: 'Teme/Ključne besede', - abstract: 'Povzetek', - }, - socialMediaPost: { - platform: 'Platforma', - authorUsername: 'Avtor/Uporabniško ime', - publishDate: 'Datum objave', - postURL: 'URL objave', - topicsTags: 'Teme/Oznake', - }, - personalDocument: { - title: 'Naslov', - author: 'Avtor', - creationDate: 'Datum nastanka', - lastModifiedDate: 'Datum zadnje spremembe', - documentType: 'Vrsta dokumenta', - tagsCategory: 'Oznake/Kategorija', - }, - businessDocument: { - title: 'Naslov', - author: 'Avtor', - creationDate: 'Datum nastanka', - lastModifiedDate: 'Datum zadnje spremembe', - documentType: 'Vrsta dokumenta', - departmentTeam: 'Oddelek/Ekipa', - }, - IMChat: { - chatPlatform: 'Platforma za klepet', - chatPartiesGroupName: 'Udeleženci klepeta/Skupina', - participants: 'Udeleženci', - startDate: 'Datum začetka', - endDate: 'Datum konca', - topicsKeywords: 'Teme/Ključne besede', - fileType: 'Vrsta datoteke', - }, - wikipediaEntry: { - title: 'Naslov', - language: 'Jezik', - webpageURL: 'URL spletne strani', - editorContributor: 'Urednik/Sodelavec', - lastEditDate: 'Datum zadnje spremembe', - summaryIntroduction: 'Povzetek/Uvod', - }, - notion: { - title: 'Naslov', - language: 'Jezik', - author: 'Avtor', - createdTime: 'Čas nastanka', - lastModifiedTime: 'Čas zadnje spremembe', - url: 'URL', - tag: 'Oznaka', - description: 'Opis', - }, - github: { - repoName: 'Ime repozitorija', - repoDesc: 'Opis repozitorija', - repoOwner: 'Lastnik repozitorija', - fileName: 'Ime datoteke', - filePath: 'Pot do datoteke', - programmingLang: 'Programski jezik', - url: 'URL', - license: 'Licenca', - lastCommitTime: 'Čas zadnje spremembe', - lastCommitAuthor: 'Avtor zadnje spremembe', - }, - originInfo: { - originalFilename: 'Izvirno ime datoteke', - originalFileSize: 'Izvirna velikost datoteke', - uploadDate: 'Datum nalaganja', - lastUpdateDate: 'Datum zadnje spremembe', - source: 'Vir', - }, - technicalParameters: { - segmentSpecification: 'Specifikacija segmentov', - segmentLength: 'Dolžina segmentov', - avgParagraphLength: 'Povprečna dolžina odstavka', - paragraphs: 'Odstavki', - hitCount: 'Število pridobitev', - embeddingTime: 'Čas vdelave', - embeddedSpend: 'Stroški vdelave', - }, - }, - languageMap: { - zh: 'Kitajščina', - en: 'Angleščina', - es: 'Španščina', - fr: 'Francoščina', - de: 'Nemščina', - ja: 'Japonščina', - ko: 'Korejščina', - ru: 'Ruščina', - ar: 'Arabščina', - pt: 'Portugalščina', - it: 'Italijanščina', - nl: 'Nizozemščina', - pl: 'Poljščina', - sv: 'Švedščina', - tr: 'Turščina', - he: 'Hebrejščina', - hi: 'Hindujščina', - da: 'Danščina', - fi: 'Finščina', - no: 'Norveščina', - hu: 'Madžarščina', - el: 'Grščina', - cs: 'Češčina', - th: 'Tajščina', - id: 'Indonezijščina', - }, - categoryMap: { - book: { - fiction: 'Leposlovje', - biography: 'Biografija', - history: 'Zgodovina', - science: 'Znanost', - technology: 'Tehnologija', - education: 'Izobraževanje', - philosophy: 'Filozofija', - religion: 'Religija', - socialSciences: 'Družboslovje', - art: 'Umetnost', - travel: 'Potovanja', - health: 'Zdravje', - selfHelp: 'Samopomoč', - businessEconomics: 'Poslovanje in ekonomija', - cooking: 'Kuhanje', - childrenYoungAdults: 'Otroci in mladi odrasli', - comicsGraphicNovels: 'Stripi in grafični romani', - poetry: 'Poezija', - drama: 'Drama', - other: 'Drugo', - }, - personalDoc: { - notes: 'Zapiski', - blogDraft: 'Osnutek bloga', - diary: 'Dnevnik', - researchReport: 'Raziskovalno poročilo', - bookExcerpt: 'Odlomek iz knjige', - schedule: 'Urnik', - list: 'Seznam', - projectOverview: 'Pregled projekta', - photoCollection: 'Fotografska zbirka', - creativeWriting: 'Ustvarjalno pisanje', - codeSnippet: 'Koda', - designDraft: 'Oblikovalski osnutek', - personalResume: 'Osebni življenjepis', - other: 'Drugo', - }, - businessDoc: { - meetingMinutes: 'Zapisniki sestankov', - researchReport: 'Raziskovalno poročilo', - proposal: 'Predlog', - employeeHandbook: 'Priročnik za zaposlene', - trainingMaterials: 'Izobraževalni materiali', - requirementsDocument: 'Dokumentacija zahtev', - designDocument: 'Oblikovalska dokumentacija', - productSpecification: 'Specifikacija izdelka', - financialReport: 'Finančno poročilo', - marketAnalysis: 'Tržna analiza', - projectPlan: 'Načrt projekta', - teamStructure: 'Struktura ekipe', - policiesProcedures: 'Pravila in postopki', - contractsAgreements: 'Pogodbe in dogovori', - emailCorrespondence: 'E-poštna korespondenca', - other: 'Drugo', - }, - }, - }, - embedding: { - processing: 'Proces vdelave...', - paused: 'Vdelava zaustavljena', - completed: 'Vdelava zaključena', - error: 'Napaka pri vdelavi', - docName: 'Predobdelava dokumenta', - mode: 'Pravilo segmentacije', - segmentLength: 'Dolžina segmentov', - textCleaning: 'Predobdelava in čiščenje besedila', - segments: 'Odstavki', - highQuality: 'Način visoke kakovosti', - economy: 'Ekonomski način', - estimate: 'Ocenjena poraba', - stop: 'Ustavi obdelavo', - resume: 'Nadaljuj obdelavo', - automatic: 'Samodejno', - custom: 'Po meri', - previewTip: 'Predogled odstavkov bo na voljo po zaključku vdelave', - hierarchical: 'Starš-otrok', - childMaxTokens: 'Otrok', - pause: 'Zaustavi', - parentMaxTokens: 'Starš', - waiting: 'Čakanje na zajemanje...', - }, - segment: { - paragraphs: 'Odstavki', - keywords: 'Ključne besede', - addKeyWord: 'Dodaj ključno besedo', - keywordError: 'Največja dolžina ključne besede je 20', - hitCount: 'Število pridobitev', - vectorHash: 'Vektorski hash: ', - questionPlaceholder: 'dodajte vprašanje tukaj', - questionEmpty: 'Vprašanje ne sme biti prazno', - answerPlaceholder: 'dodajte odgovor tukaj', - answerEmpty: 'Odgovor ne sme biti prazen', - contentPlaceholder: 'dodajte vsebino tukaj', - contentEmpty: 'Vsebina ne sme biti prazna', - newTextSegment: 'Nov besedilni segment', - newQaSegment: 'Nov Q&A segment', - delete: 'Izbriši ta del?', - regenerationSuccessTitle: 'Regeneracija končana', - expandChunks: 'Razširitev kosov', - childChunk: 'Otroški kos', - editedAt: 'Urejeno na', - dateTimeFormat: 'MM/DD/YYYY h:mm', - edited: 'UREJATI', - addAnother: 'Dodajanje še enega', - childChunks_one: 'OTROŠKI KOS', - chunkDetail: 'Detajl koščka', - chunkAdded: 'Dodan 1 kos', - editChildChunk: 'Urejanje podrejenega kosa', - regenerationConfirmTitle: 'Ali želite regenerirati otroške koščke?', - empty: 'Ni najdenega koščka', - searchResults_other: 'REZULTATI', - childChunks_other: 'OTROŠKI KOŠČKI', - addChildChunk: 'Dodajanje podrejenega kosa', - editParentChunk: 'Urejanje nadrejenega kosa', - regenerationConfirmMessage: 'Obnavljanje podrejenih kosov bo prepisalo trenutne podrejene koščke, vključno z urejenimi koščki in na novo dodanimi kosi. Regeneracije ni mogoče razveljaviti.', - editChunk: 'Uredi kos', - chunks_one: 'KOS', - searchResults_one: 'REZULTAT', - parentChunks_one: 'STARŠEVSKI KOS', - characters_other: 'Znakov', - chunks_other: 'KOSE', - clearFilter: 'Počisti filter', - newChildChunk: 'Nov podzakonski kos', - characters_one: 'znak', - regeneratingTitle: 'Regeneracija otroških kosov', - regeneratingMessage: 'To lahko traja trenutek, prosim počakajte ...', - parentChunks_other: 'STARŠEVSKI KOSI', - collapseChunks: 'Strniti koščke', - parentChunk: 'Starševski kos', - regenerationSuccessMessage: 'To okno lahko zaprete.', - newChunk: 'Nov kos', - searchResults_zero: 'REZULTAT', - chunk: 'Kos', - addChunk: 'Dodajanje kosa', - childChunkAdded: 'Dodan je 1 kos otroka', - keywordDuplicate: 'Ključna beseda že obstaja', - keywordEmpty: 'Ključna beseda ne more biti prazna', - allFilesUploaded: 'Vse datoteke je treba naložiti, preden shranite', - }, -} - -export default translation diff --git a/web/i18n/sl-SI/dataset-hit-testing.json b/web/i18n/sl-SI/dataset-hit-testing.json new file mode 100644 index 0000000000..8ad19e6d17 --- /dev/null +++ b/web/i18n/sl-SI/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "Testiranje pridobivanja", + "settingTitle": "Nastavitve pridobivanja", + "desc": "Preizkusite učinkovitost zadetkov znanja na podlagi podanega poizvedbenega besedila", + "dateTimeFormat": "DD/MM/YYYY hh:mm A", + "table": { + "header": { + "source": "Vir", + "time": "Čas", + "queryContent": "Vsebina poizvedbe" + } + }, + "input": { + "title": "Izvorno besedilo", + "placeholder": "Prosimo, vnesite besedilo, priporočljivo je kratko izjavno poved.", + "countWarning": "Do 200 znakov.", + "indexWarning": "Samo znanje visoke kakovosti.", + "testing": "Testiranje" + }, + "hit": { + "title": "PRIDOBLJENI ODSTAVKI", + "emptyTip": "Rezultati testiranja pridobivanja bodo prikazani tukaj" + }, + "noRecentTip": "Tukaj ni nedavnih rezultatov poizvedb", + "viewChart": "Prikaži VEKTORSKI GRAF", + "viewDetail": "Prikaži podrobnosti", + "records": "Zapisov", + "keyword": "Ključne besede", + "chunkDetail": "Detajl koščka", + "open": "Odprt", + "hitChunks": "Zadenite {{num}} podrejene koščke", + "imageUploader": { + "tip": "Naložite ali povlecite slike (največ {{batchCount}}, {{size}} MB vsaka)", + "tooltip": "Naloži slike (maksimalno {{batchCount}}, {{size}} MB vsaka)", + "dropZoneTip": "Povlecite datoteko sem za nalaganje", + "singleChunkAttachmentLimitTooltip": "Število priponk enega kosa ne sme presegati {{limit}}" + } +} diff --git a/web/i18n/sl-SI/dataset-hit-testing.ts b/web/i18n/sl-SI/dataset-hit-testing.ts deleted file mode 100644 index 860099ca2d..0000000000 --- a/web/i18n/sl-SI/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - title: 'Testiranje pridobivanja', - settingTitle: 'Nastavitve pridobivanja', - desc: 'Preizkusite učinkovitost zadetkov znanja na podlagi podanega poizvedbenega besedila', - dateTimeFormat: 'DD/MM/YYYY hh:mm A', - table: { - header: { - source: 'Vir', - time: 'Čas', - queryContent: 'Vsebina poizvedbe', - }, - }, - input: { - title: 'Izvorno besedilo', - placeholder: 'Prosimo, vnesite besedilo, priporočljivo je kratko izjavno poved.', - countWarning: 'Do 200 znakov.', - indexWarning: 'Samo znanje visoke kakovosti.', - testing: 'Testiranje', - }, - hit: { - title: 'PRIDOBLJENI ODSTAVKI', - emptyTip: 'Rezultati testiranja pridobivanja bodo prikazani tukaj', - }, - noRecentTip: 'Tukaj ni nedavnih rezultatov poizvedb', - viewChart: 'Prikaži VEKTORSKI GRAF', - viewDetail: 'Prikaži podrobnosti', - records: 'Zapisov', - keyword: 'Ključne besede', - chunkDetail: 'Detajl koščka', - open: 'Odprt', - hitChunks: 'Zadenite {{num}} podrejene koščke', - imageUploader: { - tip: 'Naložite ali povlecite slike (največ {{batchCount}}, {{size}} MB vsaka)', - tooltip: 'Naloži slike (maksimalno {{batchCount}}, {{size}} MB vsaka)', - dropZoneTip: 'Povlecite datoteko sem za nalaganje', - singleChunkAttachmentLimitTooltip: 'Število priponk enega kosa ne sme presegati {{limit}}', - }, -} - -export default translation diff --git a/web/i18n/sl-SI/dataset-pipeline.json b/web/i18n/sl-SI/dataset-pipeline.json new file mode 100644 index 0000000000..92f4d53249 --- /dev/null +++ b/web/i18n/sl-SI/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "createFromScratch": { + "title": "Prazen cevovod znanja", + "description": "Ustvarite cevovod po meri iz nič s popolnim nadzorom nad obdelavo in strukturo podatkov." + }, + "caution": "Previdnost", + "backToKnowledge": "Nazaj na Znanje", + "importDSL": "Uvoz iz datoteke DSL", + "createKnowledge": "Ustvarite znanje", + "successTip": "Uspešno ustvarjena baza znanja", + "errorTip": "Ustvarjanje zbirke znanja ni uspelo" + }, + "templates": { + "customized": "Prilagojene" + }, + "operations": { + "convert": "Pretvoriti", + "preview": "Predogled", + "details": "Podrobnosti", + "choose": "Izbrati", + "editInfo": "Urejanje podatkov", + "process": "Proces", + "backToDataSource": "Nazaj na vir podatkov", + "exportPipeline": "Izvozni cevovod", + "dataSource": "Vir podatkov", + "useTemplate": "Uporabite ta cevovod znanja", + "saveAndProcess": "Shranjevanje in obdelava" + }, + "deletePipeline": { + "content": "Brisanje predloge cevovoda je nepovratno.", + "title": "Ali ste prepričani, da boste izbrisali to predlogo cevovoda?" + }, + "publishPipeline": { + "success": { + "message": "Objavljen Knowledge Pipeline", + "tip": "Pojdite v Dokumente, da dodate ali upravljate z dokumenti." + }, + "error": { + "message": "Objava cevovoda znanja ni uspela" + } + }, + "publishTemplate": { + "success": { + "learnMore": "Izvedi več", + "message": "Objavljena predloga cevovoda", + "tip": "To predlogo lahko uporabite na strani za ustvarjanje." + }, + "error": { + "message": "Ni bilo mogoče objaviti predloge cevovoda" + } + }, + "exportDSL": { + "errorTip": "Izvoz cevovoda DSL ni uspel", + "successTip": "Uspešno izvozite DSL" + }, + "details": { + "structure": "Struktura", + "structureTooltip": "Struktura kosov določa, kako so dokumenti razdeljeni in indeksirani – ponuja načine Splošno, Nadrejeno-podrejeno in Vprašanja in odgovori – in je edinstvena za vsako zbirko znanja.", + "createdBy": "Avtor {{author}}" + }, + "testRun": { + "steps": { + "documentProcessing": "Obdelava dokumentov", + "dataSource": "Vir podatkov" + }, + "dataSource": { + "localFiles": "Lokalne datoteke" + }, + "notion": { + "docTitle": "Dokumenti o pojmih", + "title": "Izberite Notion Pages" + }, + "title": "Preskusni zagon", + "tooltip": "V načinu preskusnega zagona je dovoljeno uvoziti samo en dokument naenkrat za lažje odpravljanje napak in opazovanje." + }, + "inputFieldPanel": { + "uniqueInputs": { + "title": "Edinstveni vhodi za vsak vhod", + "tooltip": "Enolični vhodi so dostopni samo izbranemu viru podatkov in njegovim nadaljnjim vozliščem. Uporabnikom ga ne bo treba izpolniti pri izbiri drugih virov podatkov. V prvem koraku (Vir podatkov) bodo prikazana samo vhodna polja, na katera se sklicujejo spremenljivke vira podatkov. Vsa druga polja bodo prikazana v drugem koraku (Obdelava dokumentov)." + }, + "globalInputs": { + "title": "Globalni vložki za vse vhode", + "tooltip": "Globalni vhodi so v skupni rabi med vsemi vozlišči. Uporabniki jih bodo morali izpolniti pri izbiri katerega koli vira podatkov. Polja, kot sta ločilo in največja dolžina kosa, lahko na primer enakomerno uporabite v več virih podatkov. V prvem koraku (Vir podatkov) so prikazana le vhodna polja, na katera se sklicujejo spremenljivke vira podatkov. Vsa druga polja so prikazana v drugem koraku (Obdelava dokumentov)." + }, + "preview": { + "stepOneTitle": "Vir podatkov", + "stepTwoTitle": "Obdelava dokumentov" + }, + "error": { + "variableDuplicate": "Ime spremenljivke že obstaja. Prosimo, izberite drugo ime." + }, + "editInputField": "Uredi vnosno polje", + "title": "Uporabniška vnosna polja", + "addInputField": "Dodajanje vhodnega polja", + "description": "Uporabniška vnosna polja se uporabljajo za določanje in zbiranje spremenljivk, ki so potrebne med postopkom izvajanja cevovoda. Uporabniki lahko prilagodijo vrsto polja in prilagodljivo konfigurirajo vhodno vrednost, da ustreza potrebam različnih virov podatkov ali korakov obdelave dokumentov." + }, + "addDocuments": { + "steps": { + "processingDocuments": "Obdelava dokumentov", + "processDocuments": "Obdelava dokumentov", + "chooseDatasource": "Izbira vira podatkov" + }, + "stepOne": { + "preview": "Predogled" + }, + "stepTwo": { + "chunkSettings": "Nastavitve kosov", + "previewChunks": "Predogled kosov" + }, + "stepThree": { + "learnMore": "Izvedi več" + }, + "characters": "Znakov", + "backToDataSource": "Vir podatkov", + "title": "Dodajanje dokumentov", + "selectOnlineDocumentTip": "Obdelajte do {{count}} strani", + "selectOnlineDriveTip": "Obdelajte do {{count}} datotek, vsaka največ {{fileSize}} MB" + }, + "documentSettings": { + "title": "Nastavitve dokumenta" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} strani" + }, + "onlineDrive": { + "breadcrumbs": { + "allFiles": "Vse datoteke", + "searchPlaceholder": "Iskanje datotek ...", + "allBuckets": "Vsa vedra za shranjevanje v oblaku", + "searchResult": "Najdi {{searchResultsLength}} predmetov v mapi \"{{folderName}}\"" + }, + "resetKeywords": "Ponastavitev ključnih besed", + "emptyFolder": "Ta mapa je prazna", + "emptySearchResult": "Predmeti niso bili najdeni", + "notSupportedFileType": "Ta vrsta datoteke ni podprta", + "notConnected": "{{name}} ni povezan", + "notConnectedTip": "Za sinhronizacijo z {{name}} je treba najprej vzpostaviti povezavo z {{name}}." + }, + "conversion": { + "confirm": { + "title": "Potrditev", + "content": "To dejanje je trajno. Ne boste se mogli vrniti na prejšnjo metodo. Prosimo, potrdite za pretvorbo." + }, + "title": "Pretvori v cevovod znanja", + "errorMessage": "Pretvorba nabora podatkov v cevovod ni uspela", + "warning": "Tega dejanja ni mogoče razveljaviti.", + "successMessage": "Uspešno pretvorba nabora podatkov v cevovod", + "descriptionChunk2": "- bolj odprt in prilagodljiv pristop z dostopom do vtičnikov z našega trga. To bo uporabilo novo metodo obdelave za vse prihodnje dokumente.", + "descriptionChunk1": "Zdaj lahko obstoječo zbirko znanja pretvorite tako, da za obdelavo dokumentov uporabljate cevovod znanja" + }, + "knowledgePermissions": "Dovoljenja", + "pipelineNameAndIcon": "Ime in ikona cevovoda", + "knowledgeNameAndIconPlaceholder": "Prosimo, vnesite ime baze znanja", + "inputField": "Vnosno polje", + "knowledgeDescription": "Opis znanja", + "knowledgeNameAndIcon": "Ime in ikona znanja", + "editPipelineInfo": "Urejanje informacij o cevovodu", + "knowledgeDescriptionPlaceholder": "Opišite, kaj je v tej bazi znanja. Podroben opis omogoča umetni inteligenci natančnejši dostop do vsebine nabora podatkov. Če je prazen, bo Dify uporabil privzeto strategijo zadetkov. (Neobvezno)", + "configurationTip": "Konfiguriraj {{pluginName}}" +} diff --git a/web/i18n/sl-SI/dataset-pipeline.ts b/web/i18n/sl-SI/dataset-pipeline.ts deleted file mode 100644 index ae43d6fd2d..0000000000 --- a/web/i18n/sl-SI/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - createFromScratch: { - title: 'Prazen cevovod znanja', - description: 'Ustvarite cevovod po meri iz nič s popolnim nadzorom nad obdelavo in strukturo podatkov.', - }, - caution: 'Previdnost', - backToKnowledge: 'Nazaj na Znanje', - importDSL: 'Uvoz iz datoteke DSL', - createKnowledge: 'Ustvarite znanje', - successTip: 'Uspešno ustvarjena baza znanja', - errorTip: 'Ustvarjanje zbirke znanja ni uspelo', - }, - templates: { - customized: 'Prilagojene', - }, - operations: { - convert: 'Pretvoriti', - preview: 'Predogled', - details: 'Podrobnosti', - choose: 'Izbrati', - editInfo: 'Urejanje podatkov', - process: 'Proces', - backToDataSource: 'Nazaj na vir podatkov', - exportPipeline: 'Izvozni cevovod', - dataSource: 'Vir podatkov', - useTemplate: 'Uporabite ta cevovod znanja', - saveAndProcess: 'Shranjevanje in obdelava', - }, - deletePipeline: { - content: 'Brisanje predloge cevovoda je nepovratno.', - title: 'Ali ste prepričani, da boste izbrisali to predlogo cevovoda?', - }, - publishPipeline: { - success: { - message: 'Objavljen Knowledge Pipeline', - tip: 'Pojdite v Dokumente, da dodate ali upravljate z dokumenti.', - }, - error: { - message: 'Objava cevovoda znanja ni uspela', - }, - }, - publishTemplate: { - success: { - learnMore: 'Izvedi več', - message: 'Objavljena predloga cevovoda', - tip: 'To predlogo lahko uporabite na strani za ustvarjanje.', - }, - error: { - message: 'Ni bilo mogoče objaviti predloge cevovoda', - }, - }, - exportDSL: { - errorTip: 'Izvoz cevovoda DSL ni uspel', - successTip: 'Uspešno izvozite DSL', - }, - details: { - structure: 'Struktura', - structureTooltip: 'Struktura kosov določa, kako so dokumenti razdeljeni in indeksirani – ponuja načine Splošno, Nadrejeno-podrejeno in Vprašanja in odgovori – in je edinstvena za vsako zbirko znanja.', - createdBy: 'Avtor {{author}}', - }, - testRun: { - steps: { - documentProcessing: 'Obdelava dokumentov', - dataSource: 'Vir podatkov', - }, - dataSource: { - localFiles: 'Lokalne datoteke', - }, - notion: { - docTitle: 'Dokumenti o pojmih', - title: 'Izberite Notion Pages', - }, - title: 'Preskusni zagon', - tooltip: 'V načinu preskusnega zagona je dovoljeno uvoziti samo en dokument naenkrat za lažje odpravljanje napak in opazovanje.', - }, - inputFieldPanel: { - uniqueInputs: { - title: 'Edinstveni vhodi za vsak vhod', - tooltip: 'Enolični vhodi so dostopni samo izbranemu viru podatkov in njegovim nadaljnjim vozliščem. Uporabnikom ga ne bo treba izpolniti pri izbiri drugih virov podatkov. V prvem koraku (Vir podatkov) bodo prikazana samo vhodna polja, na katera se sklicujejo spremenljivke vira podatkov. Vsa druga polja bodo prikazana v drugem koraku (Obdelava dokumentov).', - }, - globalInputs: { - title: 'Globalni vložki za vse vhode', - tooltip: 'Globalni vhodi so v skupni rabi med vsemi vozlišči. Uporabniki jih bodo morali izpolniti pri izbiri katerega koli vira podatkov. Polja, kot sta ločilo in največja dolžina kosa, lahko na primer enakomerno uporabite v več virih podatkov. V prvem koraku (Vir podatkov) so prikazana le vhodna polja, na katera se sklicujejo spremenljivke vira podatkov. Vsa druga polja so prikazana v drugem koraku (Obdelava dokumentov).', - }, - preview: { - stepOneTitle: 'Vir podatkov', - stepTwoTitle: 'Obdelava dokumentov', - }, - error: { - variableDuplicate: 'Ime spremenljivke že obstaja. Prosimo, izberite drugo ime.', - }, - editInputField: 'Uredi vnosno polje', - title: 'Uporabniška vnosna polja', - addInputField: 'Dodajanje vhodnega polja', - description: 'Uporabniška vnosna polja se uporabljajo za določanje in zbiranje spremenljivk, ki so potrebne med postopkom izvajanja cevovoda. Uporabniki lahko prilagodijo vrsto polja in prilagodljivo konfigurirajo vhodno vrednost, da ustreza potrebam različnih virov podatkov ali korakov obdelave dokumentov.', - }, - addDocuments: { - steps: { - processingDocuments: 'Obdelava dokumentov', - processDocuments: 'Obdelava dokumentov', - chooseDatasource: 'Izbira vira podatkov', - }, - stepOne: { - preview: 'Predogled', - }, - stepTwo: { - chunkSettings: 'Nastavitve kosov', - previewChunks: 'Predogled kosov', - }, - stepThree: { - learnMore: 'Izvedi več', - }, - characters: 'Znakov', - backToDataSource: 'Vir podatkov', - title: 'Dodajanje dokumentov', - selectOnlineDocumentTip: 'Obdelajte do {{count}} strani', - selectOnlineDriveTip: 'Obdelajte do {{count}} datotek, vsaka največ {{fileSize}} MB', - }, - documentSettings: { - title: 'Nastavitve dokumenta', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} strani', - }, - onlineDrive: { - breadcrumbs: { - allFiles: 'Vse datoteke', - searchPlaceholder: 'Iskanje datotek ...', - allBuckets: 'Vsa vedra za shranjevanje v oblaku', - searchResult: 'Najdi {{searchResultsLength}} predmetov v mapi "{{folderName}}"', - }, - resetKeywords: 'Ponastavitev ključnih besed', - emptyFolder: 'Ta mapa je prazna', - emptySearchResult: 'Predmeti niso bili najdeni', - notSupportedFileType: 'Ta vrsta datoteke ni podprta', - notConnected: '{{name}} ni povezan', - notConnectedTip: 'Za sinhronizacijo z {{name}} je treba najprej vzpostaviti povezavo z {{name}}.', - }, - conversion: { - confirm: { - title: 'Potrditev', - content: 'To dejanje je trajno. Ne boste se mogli vrniti na prejšnjo metodo. Prosimo, potrdite za pretvorbo.', - }, - title: 'Pretvori v cevovod znanja', - errorMessage: 'Pretvorba nabora podatkov v cevovod ni uspela', - warning: 'Tega dejanja ni mogoče razveljaviti.', - successMessage: 'Uspešno pretvorba nabora podatkov v cevovod', - descriptionChunk2: '- bolj odprt in prilagodljiv pristop z dostopom do vtičnikov z našega trga. To bo uporabilo novo metodo obdelave za vse prihodnje dokumente.', - descriptionChunk1: 'Zdaj lahko obstoječo zbirko znanja pretvorite tako, da za obdelavo dokumentov uporabljate cevovod znanja', - }, - knowledgePermissions: 'Dovoljenja', - pipelineNameAndIcon: 'Ime in ikona cevovoda', - knowledgeNameAndIconPlaceholder: 'Prosimo, vnesite ime baze znanja', - inputField: 'Vnosno polje', - knowledgeDescription: 'Opis znanja', - knowledgeNameAndIcon: 'Ime in ikona znanja', - editPipelineInfo: 'Urejanje informacij o cevovodu', - knowledgeDescriptionPlaceholder: 'Opišite, kaj je v tej bazi znanja. Podroben opis omogoča umetni inteligenci natančnejši dostop do vsebine nabora podatkov. Če je prazen, bo Dify uporabil privzeto strategijo zadetkov. (Neobvezno)', - configurationTip: 'Konfiguriraj {{pluginName}}', -} - -export default translation diff --git a/web/i18n/sl-SI/dataset-settings.json b/web/i18n/sl-SI/dataset-settings.json new file mode 100644 index 0000000000..1e09644c4c --- /dev/null +++ b/web/i18n/sl-SI/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "Nastavitve znanja", + "desc": "Tukaj lahko spremenite lastnosti in nastavitve pridobivanja tega znanja.", + "form": { + "name": "Ime znanja", + "namePlaceholder": "Prosimo, vnesite ime znanja", + "nameError": "Ime ne sme biti prazno", + "desc": "Opis znanja", + "descInfo": "Prosimo, napišite jasen besedilni opis, ki bo povzel vsebino znanja. Ta opis bo uporabljen kot osnova za ujemanje pri izbiri med več znanji za sklepanje.", + "descPlaceholder": "Opišite, kaj je v tem znanju (neobvezno)", + "descWrite": "Naučite se, kako napisati dober opis znanja.", + "permissions": "Dovoljenja", + "permissionsOnlyMe": "Samo jaz", + "permissionsAllMember": "Vsi člani ekipe", + "permissionsInvitedMembers": "Določeni člani ekipe", + "me": "(Vi)", + "indexMethod": "Metoda indeksiranja", + "indexMethodHighQuality": "Visoka kakovost", + "indexMethodHighQualityTip": "Za obdelavo pokličite vdelani model za zagotovitev večje natančnosti pri poizvedbah uporabnikov.", + "indexMethodEconomy": "Varčna", + "indexMethodEconomyTip": "Uporabite offline vektorske motorje, indeksiranje ključnih besed itd., da zmanjšate natančnost brez porabe žetonov", + "embeddingModel": "Vdelani model", + "embeddingModelTip": "Če želite spremeniti vdelani model, pojdite na ", + "embeddingModelTipLink": "Nastavitve", + "retrievalSetting": { + "title": "Nastavitve pridobivanja", + "learnMore": "Izvedite več", + "description": " o metodi pridobivanja.", + "longDescription": " o metodi pridobivanja, to lahko kadar koli spremenite v nastavitvah znanja.", + "method": "Metoda pridobivanja", + "multiModalTip": "Ko vgrajeni model podpira več modalnosti, izberite model za ponovno razvrščanje z več modalnostmi za boljše delovanje." + }, + "externalKnowledgeAPI": "Zunanji API za znanje", + "externalKnowledgeID": "ID zunanjega znanja", + "retrievalSettings": "Nastavitve pridobivanja", + "save": "Shrani", + "indexMethodChangeToEconomyDisabledTip": "Ni na voljo za pregradnjo iz HQ v ECO", + "upgradeHighQualityTip": "Ko nadgradite na način visoke kakovosti, vrnitev v ekonomični način ni na voljo", + "helpText": "Naučite se napisati dober opis nabora podatkov.", + "searchModel": "Išči model", + "chunkStructure": { + "learnMore": "Izvedi več", + "description": "o strukturi Chunk.", + "title": "Struktura kosov" + }, + "nameAndIcon": "Ime in ikona", + "numberOfKeywords": "Število ključnih besed", + "onSearchResults": "Noben član se ne ujema z vašo iskalno poizvedbo.\nPoskusite znova iskati." + } +} diff --git a/web/i18n/sl-SI/dataset-settings.ts b/web/i18n/sl-SI/dataset-settings.ts deleted file mode 100644 index b9283157de..0000000000 --- a/web/i18n/sl-SI/dataset-settings.ts +++ /dev/null @@ -1,52 +0,0 @@ -const translation = { - title: 'Nastavitve znanja', - desc: 'Tukaj lahko spremenite lastnosti in nastavitve pridobivanja tega znanja.', - form: { - name: 'Ime znanja', - namePlaceholder: 'Prosimo, vnesite ime znanja', - nameError: 'Ime ne sme biti prazno', - desc: 'Opis znanja', - descInfo: 'Prosimo, napišite jasen besedilni opis, ki bo povzel vsebino znanja. Ta opis bo uporabljen kot osnova za ujemanje pri izbiri med več znanji za sklepanje.', - descPlaceholder: 'Opišite, kaj je v tem znanju (neobvezno)', - descWrite: 'Naučite se, kako napisati dober opis znanja.', - permissions: 'Dovoljenja', - permissionsOnlyMe: 'Samo jaz', - permissionsAllMember: 'Vsi člani ekipe', - permissionsInvitedMembers: 'Določeni člani ekipe', - me: '(Vi)', - indexMethod: 'Metoda indeksiranja', - indexMethodHighQuality: 'Visoka kakovost', - indexMethodHighQualityTip: 'Za obdelavo pokličite vdelani model za zagotovitev večje natančnosti pri poizvedbah uporabnikov.', - indexMethodEconomy: 'Varčna', - indexMethodEconomyTip: 'Uporabite offline vektorske motorje, indeksiranje ključnih besed itd., da zmanjšate natančnost brez porabe žetonov', - embeddingModel: 'Vdelani model', - embeddingModelTip: 'Če želite spremeniti vdelani model, pojdite na ', - embeddingModelTipLink: 'Nastavitve', - retrievalSetting: { - title: 'Nastavitve pridobivanja', - learnMore: 'Izvedite več', - description: ' o metodi pridobivanja.', - longDescription: ' o metodi pridobivanja, to lahko kadar koli spremenite v nastavitvah znanja.', - method: 'Metoda pridobivanja', - multiModalTip: 'Ko vgrajeni model podpira več modalnosti, izberite model za ponovno razvrščanje z več modalnostmi za boljše delovanje.', - }, - externalKnowledgeAPI: 'Zunanji API za znanje', - externalKnowledgeID: 'ID zunanjega znanja', - retrievalSettings: 'Nastavitve pridobivanja', - save: 'Shrani', - indexMethodChangeToEconomyDisabledTip: 'Ni na voljo za pregradnjo iz HQ v ECO', - upgradeHighQualityTip: 'Ko nadgradite na način visoke kakovosti, vrnitev v ekonomični način ni na voljo', - helpText: 'Naučite se napisati dober opis nabora podatkov.', - searchModel: 'Išči model', - chunkStructure: { - learnMore: 'Izvedi več', - description: 'o strukturi Chunk.', - title: 'Struktura kosov', - }, - nameAndIcon: 'Ime in ikona', - numberOfKeywords: 'Število ključnih besed', - onSearchResults: 'Noben član se ne ujema z vašo iskalno poizvedbo.\nPoskusite znova iskati.', - }, -} - -export default translation diff --git a/web/i18n/sl-SI/dataset.json b/web/i18n/sl-SI/dataset.json new file mode 100644 index 0000000000..c3f92b9a7e --- /dev/null +++ b/web/i18n/sl-SI/dataset.json @@ -0,0 +1,249 @@ +{ + "knowledge": "Znanje", + "externalTag": "Zunanje", + "externalAPI": "Zunanji API", + "externalAPIPanelTitle": "Zunanji API za znanje", + "externalKnowledgeId": "ID zunanjega znanja", + "externalKnowledgeName": "Ime zunanjega znanja", + "externalKnowledgeDescription": "Opis znanja", + "externalKnowledgeIdPlaceholder": "Prosimo, vnesite ID znanja", + "externalKnowledgeNamePlaceholder": "Prosimo, vnesite ime baze znanja", + "externalKnowledgeDescriptionPlaceholder": "Opišite, kaj je v tej bazi znanja (neobvezno)", + "learnHowToWriteGoodKnowledgeDescription": "Naučite se, kako napisati dober opis znanja", + "externalAPIPanelDescription": "Zunanji API za znanje se uporablja za povezovanje z bazo znanja izven Dify in pridobivanje znanja iz te baze.", + "externalAPIPanelDocumentation": "Naučite se, kako ustvariti zunanji API za znanje", + "documentCount": " dokumentov", + "wordCount": " tisoč besed", + "appCount": " povezanih aplikacij", + "createDataset": "Ustvari znanje", + "createNewExternalAPI": "Ustvari nov zunanji API za znanje", + "noExternalKnowledge": "Zunanjega API-ja za znanje še ni, kliknite tukaj za ustvarjanje", + "createExternalAPI": "Dodaj zunanji API za znanje", + "editExternalAPIFormTitle": "Uredi zunanji API za znanje", + "editExternalAPITooltipTitle": "POVEZANO ZNANJE", + "editExternalAPIConfirmWarningContent": { + "front": "Ta zunanji API za znanje je povezan z", + "end": "zunanjim znanjem, in ta sprememba bo vplivala na vse njih. Ali ste prepričani, da želite shraniti to spremembo?" + }, + "editExternalAPIFormWarning": { + "front": "Ta zunanji API je povezan z", + "end": "zunanjim znanjem" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "front": "Izbriši", + "end": "?" + }, + "content": { + "front": "Ta zunanji API za znanje je povezan z", + "end": "zunanjim znanjem. Brisanje tega API-ja bo onemogočilo vse povezane baze znanja. Ali ste prepričani, da želite izbrisati ta API?" + }, + "noConnectionContent": "Ali ste prepričani, da želite izbrisati ta API?" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "Izberite zunanji API za znanje" + }, + "connectDataset": "Povežite se z zunanjo bazo znanja", + "connectDatasetIntro": { + "title": "Kako se povezati z zunanjo bazo znanja", + "content": { + "front": "Za povezavo z zunanjo bazo znanja morate najprej ustvariti zunanji API. Prosimo, natančno preberite in se sklicujte na", + "link": "Naučite se, kako ustvariti zunanji API", + "end": ". Nato poiščite ustrezni ID znanja in ga vnesite v obrazec na levi. Če so vse informacije pravilne, boste po kliku na gumb za povezavo samodejno preusmerjeni na testiranje pridobivanja v bazi znanja." + }, + "learnMore": "Izvedite več" + }, + "connectHelper": { + "helper1": "Povežite se z zunanjimi bazami znanja preko API-ja in ID-ja baze znanja. Trenutno je ", + "helper2": "podprta le funkcionalnost pridobivanja", + "helper3": ". Močno priporočamo, da ", + "helper4": "natančno preberete dokumentacijo za pomoč", + "helper5": " pred uporabo te funkcije." + }, + "createDatasetIntro": "Uvozite lastne podatke v besedilni obliki ali v realnem času pišite podatke prek Webhook-a za izboljšanje konteksta LLM.", + "deleteDatasetConfirmTitle": "Izbrisati to znanje?", + "deleteDatasetConfirmContent": "Brisanje znanja je nepovratno. Uporabniki do vašega znanja ne bodo več imeli dostopa, vse nastavitve pozivov in dnevniki bodo trajno izbrisani.", + "datasetUsedByApp": "Znanje se uporablja v nekaterih aplikacijah. Aplikacije ne bodo več mogle uporabljati tega znanja, vse nastavitve pozivov in dnevniki bodo trajno izbrisani.", + "datasetDeleted": "Znanje izbrisano", + "datasetDeleteFailed": "Brisanje znanja ni uspelo", + "didYouKnow": "Ali ste vedeli?", + "intro1": "Znanje je mogoče integrirati v aplikacijo Dify ", + "intro2": "kot kontekst", + "intro3": ",", + "intro4": "ali pa ", + "intro5": "se lahko ustvari", + "intro6": " kot samostojni vtičnik ChatGPT za objavo", + "unavailable": "Ni na voljo", + "datasets": "ZNANJE", + "datasetsApi": "API DOSTOP", + "externalKnowledgeForm": { + "connect": "Poveži", + "cancel": "Prekliči" + }, + "externalAPIForm": { + "name": "Ime", + "endpoint": "API Končna točka", + "apiKey": "API ključ", + "save": "Shrani", + "cancel": "Prekliči", + "edit": "Uredi", + "encrypted": { + "front": "Vaš API žeton bo šifriran in shranjen z uporabo", + "end": "tehnologije." + } + }, + "retrieval": { + "semantic_search": { + "title": "Vektorsko iskanje", + "description": "Ustvari vdelke poizvedbe in poišči odstavke besedila, ki so najbolj podobni njegovi vektorski predstavitvi." + }, + "full_text_search": { + "title": "Iskanje celotnega besedila", + "description": "Indeksirajte vse izraze v dokumentu, kar uporabnikom omogoča iskanje katerega koli izraza in pridobitev ustreznega odstavka besedila, ki ga vsebuje." + }, + "hybrid_search": { + "title": "Hibridno iskanje", + "description": "Istočasno izvede iskanje celotnega besedila in vektorsko iskanje ter ponovno razvrsti zadetke, da izbere najboljše ujemanje za uporabnikovo poizvedbo. Uporabniki lahko določijo uteži ali konfigurirajo model za ponovno razvrščanje.", + "recommend": "Priporočamo" + }, + "invertedIndex": {}, + "change": "Spremeni", + "changeRetrievalMethod": "Spremeni metodo pridobivanja", + "keyword_search": { + "title": "Obrnjeni indeks", + "description": "Obrnjeni indeks je struktura, ki se uporablja za učinkovito iskanje. Vsak izraz, organiziran po izrazih, kaže na dokumente ali spletne strani, ki ga vsebujejo." + } + }, + "docsFailedNotice": "dokumentov ni bilo mogoče indeksirati", + "retry": "Poskusi znova", + "indexingTechnique": { + "high_quality": "HQ", + "economy": "ECO" + }, + "indexingMethod": { + "semantic_search": "VEKTORSKO", + "full_text_search": "CELOTNO BESEDILO", + "hybrid_search": "HIBRIDNO", + "invertedIndex": "INVERZNO" + }, + "defaultRetrievalTip": "Privzeto se uporablja večpotno pridobivanje. Znanje se pridobiva iz več baz znanja in nato ponovno razvrsti.", + "mixtureHighQualityAndEconomicTip": "Model za ponovno razvrščanje je potreben za mešanico baz znanja visoke kakovosti in varčnih baz.", + "inconsistentEmbeddingModelTip": "Model za ponovno razvrščanje je potreben, če so vdelani modeli izbranih baz znanja neenotni.", + "mixtureInternalAndExternalTip": "Model za ponovno razvrščanje je potreben za mešanico notranjega in zunanjega znanja.", + "allExternalTip": "Pri uporabi samo zunanjega znanja lahko uporabnik izbere, ali želi omogočiti model za ponovno razvrščanje. Če ni omogočen, bodo pridobljeni deli razvrščeni glede na ocene. Če so strategije pridobivanja različnih baz znanja neenotne, bo to netočno.", + "retrievalSettings": "Nastavitve pridobivanja", + "rerankSettings": "Nastavitve za ponovno razvrščanje", + "weightedScore": { + "title": "Utežena ocena", + "description": "Z nastavljanjem dodeljenih uteži ta strategija za ponovno razvrščanje določa, ali naj se daje prednost semantičnemu ali ključnemu ujemanju.", + "semanticFirst": "Semantično najprej", + "keywordFirst": "Ključne besede najprej", + "customized": "Prilagojeno", + "semantic": "Semantično", + "keyword": "Ključna beseda" + }, + "nTo1RetrievalLegacy": "N-to-1 pridobivanje bo uradno ukinjeno septembra. Priporočamo uporabo najnovejšega večpotnega pridobivanja za boljše rezultate.", + "nTo1RetrievalLegacyLink": "Izvedite več", + "nTo1RetrievalLegacyLinkText": "N-to-1 pridobivanje bo uradno ukinjeno septembra.", + "chunkingMode": { + "general": "Splošno", + "parentChild": "Starš-otrok", + "graph": "Graf", + "qa": "Vprašanja in odgovori" + }, + "parentMode": { + "fullDoc": "Celoten dokument", + "paragraph": "Odstavek" + }, + "batchAction": { + "cancel": "Odpovedati", + "selected": "Izbrane", + "enable": "Omogočiti", + "disable": "Onesposobiti", + "archive": "Arhiv", + "delete": "Izbrisati" + }, + "localDocs": "Lokalni dokumenti", + "documentsDisabled": "{{num}} dokumenti onemogočeni - neaktivni več kot 30 dni", + "preprocessDocument": "{{num}} Predobdelava dokumentov", + "enable": "Omogočiti", + "allKnowledge": "Vse znanje", + "allKnowledgeDescription": "Izberite, če želite prikazati vse znanje v tem delovnem prostoru. Samo lastnik delovnega prostora lahko upravlja vse znanje.", + "metadata": { + "createMetadata": { + "name": "Ime", + "type": "Tip", + "namePlaceholder": "Dodajte ime metapodatkov", + "back": "Nazaj", + "title": "Nova metapodatki" + }, + "checkName": { + "empty": "Ime metapodatkov ne more biti prazno", + "invalid": "Ime metapodatkov lahko vsebuje samo male črke, številke in podčrtaje ter se mora začeti z malo črko.", + "tooLong": "Ime metapodatkov ne sme presegati {{max}} znakov" + }, + "batchEditMetadata": { + "editMetadata": "Uredi metapodatke", + "applyToAllSelectDocument": "Uporabi za vse izbrane dokumente", + "multipleValue": "Več vrednosti", + "applyToAllSelectDocumentTip": "Samodejno ustvarite vse zgoraj omenjene urejene in nove metapodatke za vsa izbrana dokumenta, sicer bo urejanje metapodatkov veljalo le za dokumente, ki jih imajo.", + "editDocumentsNum": "Urejanje {{num}} dokumentov" + }, + "selectMetadata": { + "search": "Išči metapodatke", + "newAction": "Nova metapodatki", + "manageAction": "Upravljati" + }, + "datasetMetadata": { + "rename": "Preimenuj", + "namePlaceholder": "Ime metapodatkov", + "deleteTitle": "Potrdite, da želite izbrisati", + "builtIn": "Vgrajeno", + "deleteContent": "Ali ste prepričani, da želite izbrisati metadata \"{{name}}\"", + "builtInDescription": "Vgrajeni metapodatki so samodejno izvlečeni in ustvarjeni. Morajo biti omogočeni pred uporabo in jih ni mogoče urejati.", + "values": "{{num}} Vrednosti", + "addMetaData": "Dodaj metapodatke", + "description": "Vse metapodatke lahko upravljate tukaj v tej bazi znanja. Spremembe bodo usklajene z vsakim dokumentom.", + "disabled": "Onemogočeno", + "name": "Ime" + }, + "documentMetadata": { + "startLabeling": "Začni označevanje", + "technicalParameters": "Tehnični parametri", + "metadataToolTip": "Metapodatki služijo kot pomemben filter, ki izboljšuje natančnost in pomembnost iskanja informacij. Tukaj lahko spremenite in dodate metapodatke za ta dokument.", + "documentInformation": "Informacije o dokumentu" + }, + "metadata": "Meta podatki", + "chooseTime": "Izberi čas...", + "addMetadata": "Dodaj metapodatke" + }, + "embeddingModelNotAvailable": "Model za zajemanje ni na voljo.", + "createFromPipeline": "Ustvarjanje iz cevovoda znanja", + "updated": "Posodobljene", + "externalKnowledgeBase": "Zunanja baza znanja", + "serviceApi": { + "card": { + "apiKey": "API ključ", + "endpoint": "Vhodna točka API storitve", + "title": "API storitev za zaledje", + "apiReference": "API Referenca" + }, + "title": "Storitveni API", + "disabled": "Onemogočeno", + "enabled": "V storitvi" + }, + "docAllEnabled_one": "{{count}} dokument omogočen", + "docAllEnabled_other": "Vsi dokumenti {{count}} omogočeni", + "partialEnabled_one": "Skupno {{count}} dokumentov, na voljo {{num}}", + "partialEnabled_other": "Skupno {{count}} dokumentov, na voljo {{num}}", + "cornerLabel": { + "unavailable": "Ni na voljo", + "pipeline": "Cevovod" + }, + "multimodal": "Multimodalen", + "imageUploader": { + "button": "Povlecite in spustite datoteko ali mapo, ali", + "browse": "Brskaj", + "tip": "{{supportTypes}} (maks. {{batchCount}}, {{size}} MB vsak)" + } +} diff --git a/web/i18n/sl-SI/dataset.ts b/web/i18n/sl-SI/dataset.ts deleted file mode 100644 index 9be04f8c5d..0000000000 --- a/web/i18n/sl-SI/dataset.ts +++ /dev/null @@ -1,253 +0,0 @@ -const translation = { - knowledge: 'Znanje', - externalTag: 'Zunanje', - externalAPI: 'Zunanji API', - externalAPIPanelTitle: 'Zunanji API za znanje', - externalKnowledgeId: 'ID zunanjega znanja', - externalKnowledgeName: 'Ime zunanjega znanja', - externalKnowledgeDescription: 'Opis znanja', - externalKnowledgeIdPlaceholder: 'Prosimo, vnesite ID znanja', - externalKnowledgeNamePlaceholder: 'Prosimo, vnesite ime baze znanja', - externalKnowledgeDescriptionPlaceholder: 'Opišite, kaj je v tej bazi znanja (neobvezno)', - learnHowToWriteGoodKnowledgeDescription: 'Naučite se, kako napisati dober opis znanja', - externalAPIPanelDescription: 'Zunanji API za znanje se uporablja za povezovanje z bazo znanja izven Dify in pridobivanje znanja iz te baze.', - externalAPIPanelDocumentation: 'Naučite se, kako ustvariti zunanji API za znanje', - documentCount: ' dokumentov', - wordCount: ' tisoč besed', - appCount: ' povezanih aplikacij', - createDataset: 'Ustvari znanje', - createNewExternalAPI: 'Ustvari nov zunanji API za znanje', - noExternalKnowledge: 'Zunanjega API-ja za znanje še ni, kliknite tukaj za ustvarjanje', - createExternalAPI: 'Dodaj zunanji API za znanje', - editExternalAPIFormTitle: 'Uredi zunanji API za znanje', - editExternalAPITooltipTitle: 'POVEZANO ZNANJE', - editExternalAPIConfirmWarningContent: { - front: 'Ta zunanji API za znanje je povezan z', - end: 'zunanjim znanjem, in ta sprememba bo vplivala na vse njih. Ali ste prepričani, da želite shraniti to spremembo?', - }, - editExternalAPIFormWarning: { - front: 'Ta zunanji API je povezan z', - end: 'zunanjim znanjem', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - front: 'Izbriši', - end: '?', - }, - content: { - front: 'Ta zunanji API za znanje je povezan z', - end: 'zunanjim znanjem. Brisanje tega API-ja bo onemogočilo vse povezane baze znanja. Ali ste prepričani, da želite izbrisati ta API?', - }, - noConnectionContent: 'Ali ste prepričani, da želite izbrisati ta API?', - }, - selectExternalKnowledgeAPI: { - placeholder: 'Izberite zunanji API za znanje', - }, - connectDataset: 'Povežite se z zunanjo bazo znanja', - connectDatasetIntro: { - title: 'Kako se povezati z zunanjo bazo znanja', - content: { - front: 'Za povezavo z zunanjo bazo znanja morate najprej ustvariti zunanji API. Prosimo, natančno preberite in se sklicujte na', - link: 'Naučite se, kako ustvariti zunanji API', - end: '. Nato poiščite ustrezni ID znanja in ga vnesite v obrazec na levi. Če so vse informacije pravilne, boste po kliku na gumb za povezavo samodejno preusmerjeni na testiranje pridobivanja v bazi znanja.', - }, - learnMore: 'Izvedite več', - }, - connectHelper: { - helper1: 'Povežite se z zunanjimi bazami znanja preko API-ja in ID-ja baze znanja. Trenutno je ', - helper2: 'podprta le funkcionalnost pridobivanja', - helper3: '. Močno priporočamo, da ', - helper4: 'natančno preberete dokumentacijo za pomoč', - helper5: ' pred uporabo te funkcije.', - }, - createDatasetIntro: 'Uvozite lastne podatke v besedilni obliki ali v realnem času pišite podatke prek Webhook-a za izboljšanje konteksta LLM.', - deleteDatasetConfirmTitle: 'Izbrisati to znanje?', - deleteDatasetConfirmContent: - 'Brisanje znanja je nepovratno. Uporabniki do vašega znanja ne bodo več imeli dostopa, vse nastavitve pozivov in dnevniki bodo trajno izbrisani.', - datasetUsedByApp: 'Znanje se uporablja v nekaterih aplikacijah. Aplikacije ne bodo več mogle uporabljati tega znanja, vse nastavitve pozivov in dnevniki bodo trajno izbrisani.', - datasetDeleted: 'Znanje izbrisano', - datasetDeleteFailed: 'Brisanje znanja ni uspelo', - didYouKnow: 'Ali ste vedeli?', - intro1: 'Znanje je mogoče integrirati v aplikacijo Dify ', - intro2: 'kot kontekst', - intro3: ',', - intro4: 'ali pa ', - intro5: 'se lahko ustvari', - intro6: ' kot samostojni vtičnik ChatGPT za objavo', - unavailable: 'Ni na voljo', - datasets: 'ZNANJE', - datasetsApi: 'API DOSTOP', - externalKnowledgeForm: { - connect: 'Poveži', - cancel: 'Prekliči', - }, - externalAPIForm: { - name: 'Ime', - endpoint: 'API Končna točka', - apiKey: 'API ključ', - save: 'Shrani', - cancel: 'Prekliči', - edit: 'Uredi', - encrypted: { - front: 'Vaš API žeton bo šifriran in shranjen z uporabo', - end: 'tehnologije.', - }, - }, - retrieval: { - semantic_search: { - title: 'Vektorsko iskanje', - description: 'Ustvari vdelke poizvedbe in poišči odstavke besedila, ki so najbolj podobni njegovi vektorski predstavitvi.', - }, - full_text_search: { - title: 'Iskanje celotnega besedila', - description: 'Indeksirajte vse izraze v dokumentu, kar uporabnikom omogoča iskanje katerega koli izraza in pridobitev ustreznega odstavka besedila, ki ga vsebuje.', - }, - hybrid_search: { - title: 'Hibridno iskanje', - description: 'Istočasno izvede iskanje celotnega besedila in vektorsko iskanje ter ponovno razvrsti zadetke, da izbere najboljše ujemanje za uporabnikovo poizvedbo. Uporabniki lahko določijo uteži ali konfigurirajo model za ponovno razvrščanje.', - recommend: 'Priporočamo', - }, - invertedIndex: { - }, - change: 'Spremeni', - changeRetrievalMethod: 'Spremeni metodo pridobivanja', - keyword_search: { - title: 'Obrnjeni indeks', - description: 'Obrnjeni indeks je struktura, ki se uporablja za učinkovito iskanje. Vsak izraz, organiziran po izrazih, kaže na dokumente ali spletne strani, ki ga vsebujejo.', - }, - }, - docsFailedNotice: 'dokumentov ni bilo mogoče indeksirati', - retry: 'Poskusi znova', - indexingTechnique: { - high_quality: 'HQ', - economy: 'ECO', - }, - indexingMethod: { - semantic_search: 'VEKTORSKO', - full_text_search: 'CELOTNO BESEDILO', - hybrid_search: 'HIBRIDNO', - invertedIndex: 'INVERZNO', - }, - defaultRetrievalTip: 'Privzeto se uporablja večpotno pridobivanje. Znanje se pridobiva iz več baz znanja in nato ponovno razvrsti.', - mixtureHighQualityAndEconomicTip: 'Model za ponovno razvrščanje je potreben za mešanico baz znanja visoke kakovosti in varčnih baz.', - inconsistentEmbeddingModelTip: 'Model za ponovno razvrščanje je potreben, če so vdelani modeli izbranih baz znanja neenotni.', - mixtureInternalAndExternalTip: 'Model za ponovno razvrščanje je potreben za mešanico notranjega in zunanjega znanja.', - allExternalTip: 'Pri uporabi samo zunanjega znanja lahko uporabnik izbere, ali želi omogočiti model za ponovno razvrščanje. Če ni omogočen, bodo pridobljeni deli razvrščeni glede na ocene. Če so strategije pridobivanja različnih baz znanja neenotne, bo to netočno.', - retrievalSettings: 'Nastavitve pridobivanja', - rerankSettings: 'Nastavitve za ponovno razvrščanje', - weightedScore: { - title: 'Utežena ocena', - description: 'Z nastavljanjem dodeljenih uteži ta strategija za ponovno razvrščanje določa, ali naj se daje prednost semantičnemu ali ključnemu ujemanju.', - semanticFirst: 'Semantično najprej', - keywordFirst: 'Ključne besede najprej', - customized: 'Prilagojeno', - semantic: 'Semantično', - keyword: 'Ključna beseda', - }, - nTo1RetrievalLegacy: 'N-to-1 pridobivanje bo uradno ukinjeno septembra. Priporočamo uporabo najnovejšega večpotnega pridobivanja za boljše rezultate.', - nTo1RetrievalLegacyLink: 'Izvedite več', - nTo1RetrievalLegacyLinkText: 'N-to-1 pridobivanje bo uradno ukinjeno septembra.', - chunkingMode: { - general: 'Splošno', - parentChild: 'Starš-otrok', - graph: 'Graf', - qa: 'Vprašanja in odgovori', - }, - parentMode: { - fullDoc: 'Celoten dokument', - paragraph: 'Odstavek', - }, - batchAction: { - cancel: 'Odpovedati', - selected: 'Izbrane', - enable: 'Omogočiti', - disable: 'Onesposobiti', - archive: 'Arhiv', - delete: 'Izbrisati', - }, - localDocs: 'Lokalni dokumenti', - documentsDisabled: '{{num}} dokumenti onemogočeni - neaktivni več kot 30 dni', - preprocessDocument: '{{num}} Predobdelava dokumentov', - enable: 'Omogočiti', - allKnowledge: 'Vse znanje', - allKnowledgeDescription: 'Izberite, če želite prikazati vse znanje v tem delovnem prostoru. Samo lastnik delovnega prostora lahko upravlja vse znanje.', - metadata: { - createMetadata: { - name: 'Ime', - type: 'Tip', - namePlaceholder: 'Dodajte ime metapodatkov', - back: 'Nazaj', - title: 'Nova metapodatki', - }, - checkName: { - empty: 'Ime metapodatkov ne more biti prazno', - invalid: 'Ime metapodatkov lahko vsebuje samo male črke, številke in podčrtaje ter se mora začeti z malo črko.', - tooLong: 'Ime metapodatkov ne sme presegati {{max}} znakov', - }, - batchEditMetadata: { - editMetadata: 'Uredi metapodatke', - applyToAllSelectDocument: 'Uporabi za vse izbrane dokumente', - multipleValue: 'Več vrednosti', - applyToAllSelectDocumentTip: 'Samodejno ustvarite vse zgoraj omenjene urejene in nove metapodatke za vsa izbrana dokumenta, sicer bo urejanje metapodatkov veljalo le za dokumente, ki jih imajo.', - editDocumentsNum: 'Urejanje {{num}} dokumentov', - }, - selectMetadata: { - search: 'Išči metapodatke', - newAction: 'Nova metapodatki', - manageAction: 'Upravljati', - }, - datasetMetadata: { - rename: 'Preimenuj', - namePlaceholder: 'Ime metapodatkov', - deleteTitle: 'Potrdite, da želite izbrisati', - builtIn: 'Vgrajeno', - deleteContent: 'Ali ste prepričani, da želite izbrisati metadata "{{name}}"', - builtInDescription: 'Vgrajeni metapodatki so samodejno izvlečeni in ustvarjeni. Morajo biti omogočeni pred uporabo in jih ni mogoče urejati.', - values: '{{num}} Vrednosti', - addMetaData: 'Dodaj metapodatke', - description: 'Vse metapodatke lahko upravljate tukaj v tej bazi znanja. Spremembe bodo usklajene z vsakim dokumentom.', - disabled: 'Onemogočeno', - name: 'Ime', - }, - documentMetadata: { - startLabeling: 'Začni označevanje', - technicalParameters: 'Tehnični parametri', - metadataToolTip: 'Metapodatki služijo kot pomemben filter, ki izboljšuje natančnost in pomembnost iskanja informacij. Tukaj lahko spremenite in dodate metapodatke za ta dokument.', - documentInformation: 'Informacije o dokumentu', - }, - metadata: 'Meta podatki', - chooseTime: 'Izberi čas...', - addMetadata: 'Dodaj metapodatke', - }, - embeddingModelNotAvailable: 'Model za zajemanje ni na voljo.', - createFromPipeline: 'Ustvarjanje iz cevovoda znanja', - updated: 'Posodobljene', - externalKnowledgeBase: 'Zunanja baza znanja', - serviceApi: { - card: { - apiKey: 'API ključ', - endpoint: 'Vhodna točka API storitve', - title: 'API storitev za zaledje', - apiReference: 'API Referenca', - }, - title: 'Storitveni API', - disabled: 'Onemogočeno', - enabled: 'V storitvi', - }, - docAllEnabled_one: '{{count}} dokument omogočen', - docAllEnabled_other: 'Vsi dokumenti {{count}} omogočeni', - partialEnabled_one: 'Skupno {{count}} dokumentov, na voljo {{num}}', - partialEnabled_other: 'Skupno {{count}} dokumentov, na voljo {{num}}', - cornerLabel: { - unavailable: 'Ni na voljo', - pipeline: 'Cevovod', - }, - multimodal: 'Multimodalen', - imageUploader: { - button: 'Povlecite in spustite datoteko ali mapo, ali', - browse: 'Brskaj', - tip: '{{supportTypes}} (maks. {{batchCount}}, {{size}} MB vsak)', - }, -} - -export default translation diff --git a/web/i18n/sl-SI/education.json b/web/i18n/sl-SI/education.json new file mode 100644 index 0000000000..b3d6139040 --- /dev/null +++ b/web/i18n/sl-SI/education.json @@ -0,0 +1,74 @@ +{ + "toVerifiedTip": { + "end": "za profesionalni načrt Dify.", + "front": "Zdaj ste upravičeni do statusa Preverjeno izobraževanje. Prosimo, vnesite svoje izobraževalne podatke spodaj, da zaključite postopek in prejmete", + "coupon": "izključno 100% kupon" + }, + "form": { + "schoolName": { + "placeholder": "Vpišite uradno, neokrnjeno ime vaše šole", + "title": "Ime vaše šole" + }, + "schoolRole": { + "option": { + "administrator": "Šolski administrator", + "teacher": "Učitelj", + "student": "Študent" + }, + "title": "Vaša šolska vloga" + }, + "terms": { + "desc": { + "and": "in", + "termsOfService": "Pogoji storitve", + "end": ". Z oddajo:", + "privacyPolicy": "Politika zasebnosti", + "front": "Vaše informacije in uporaba statusa preverjene izobrazbe so predmet naših" + }, + "option": { + "inSchool": "Potrjujem, da sem vpisan ali zaposlen na navedenem zavodu. Dify lahko zahteva dokazilo o vpisu/zaposlitvi. Če napačno predstavim svojo upravičenost, se strinjam, da plačam morebitne pristojbine, ki so bile sprva oproščene na podlagi mojega izobraževalnega statusa.", + "age": "Potrjujem, da sem star najmanj 18 let" + }, + "title": "Pogoji in dogovori" + } + }, + "toVerified": "Preverite izobrazbo", + "successContent": "Za vaše račune smo izdali kupon za 100% popust na profesionalni načrt Dify. Kupon je veljaven eno leto, prosimo, uporabite ga v veljavnem obdobju.", + "successTitle": "Imate verifikacijo izobraževanja Dify", + "submitError": "Pošiljanje obrazca ni uspelo. Prosimo, poskusite znova kasneje.", + "submit": "Predloži", + "rejectTitle": "Vaša Dify izobraževalna verifikacija je bila zavrnjena.", + "learn": "Naučite se, kako preveriti izobrazbo", + "emailLabel": "Vaš trenutni elektronski naslov", + "currentSigned": "Trenutno prijavljen kot", + "rejectContent": "Na žalost niste upravičeni do statusa Verificirane izobrazbe in zato ne morete prejeti ekskluzivnega 100-odstotnega kupona za Dify profesionalni načrt, če uporabljate ta e-poštni naslov.", + "notice": { + "expired": { + "summary": { + "line1": "Še vedno lahko dostopate in uporabljate Dify.", + "line2": "Vendar pa niste več upravičeni do novih kuponov za popust na izobraževanje." + }, + "title": "Vaš status izobrazbe je potekel." + }, + "isAboutToExpire": { + "summary": "Ne skrbite — to ne bo vplivalo na vaše trenutno naročnino, vendar ne boste dobili izobraževalne popusti, ko se obnovi, razen če ponovno potrdite svoj status.", + "title": "Vaš status izobraževanja bo potekel {{date}}" + }, + "stillInEducation": { + "title": "Še vedno v izobraževanju?", + "expired": "Ponovno preverite zdaj, da pridobite nov kupon za prihajajoče šolsko leto. Dodali ga bomo vašemu računu in lahko ga uporabite za naslednjo nadgradnjo.", + "isAboutToExpire": "Ponovno preverite zdaj, da pridobite nov kupon za prihajajoče akademsko leto. Shranjen bo na vašem računu in pripravljen za uporabo ob vaši naslednji obnovitvi." + }, + "alreadyGraduated": { + "title": "Že končal?", + "expired": "Prosto se lahko nadgradite kadarkoli, da pridobite poln dostop do plačanih funkcij.", + "isAboutToExpire": "Vaša trenutna naročnina bo še vedno aktivna. Ko se konča, boste prešli na Sandbox načrt, ali pa lahko kadar koli nadgradite, da obnovite poln dostop do plačanih funkcij." + }, + "action": { + "reVerify": "Ponovno preverite", + "upgrade": "Nadgradnja", + "dismiss": "Odpusti" + }, + "dateFormat": "MM/DD/LETOS" + } +} diff --git a/web/i18n/sl-SI/education.ts b/web/i18n/sl-SI/education.ts deleted file mode 100644 index d207638e35..0000000000 --- a/web/i18n/sl-SI/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerifiedTip: { - end: 'za profesionalni načrt Dify.', - front: 'Zdaj ste upravičeni do statusa Preverjeno izobraževanje. Prosimo, vnesite svoje izobraževalne podatke spodaj, da zaključite postopek in prejmete', - coupon: 'izključno 100% kupon', - }, - form: { - schoolName: { - placeholder: 'Vpišite uradno, neokrnjeno ime vaše šole', - title: 'Ime vaše šole', - }, - schoolRole: { - option: { - administrator: 'Šolski administrator', - teacher: 'Učitelj', - student: 'Študent', - }, - title: 'Vaša šolska vloga', - }, - terms: { - desc: { - and: 'in', - termsOfService: 'Pogoji storitve', - end: '. Z oddajo:', - privacyPolicy: 'Politika zasebnosti', - front: 'Vaše informacije in uporaba statusa preverjene izobrazbe so predmet naših', - }, - option: { - inSchool: 'Potrjujem, da sem vpisan ali zaposlen na navedenem zavodu. Dify lahko zahteva dokazilo o vpisu/zaposlitvi. Če napačno predstavim svojo upravičenost, se strinjam, da plačam morebitne pristojbine, ki so bile sprva oproščene na podlagi mojega izobraževalnega statusa.', - age: 'Potrjujem, da sem star najmanj 18 let', - }, - title: 'Pogoji in dogovori', - }, - }, - toVerified: 'Preverite izobrazbo', - successContent: 'Za vaše račune smo izdali kupon za 100% popust na profesionalni načrt Dify. Kupon je veljaven eno leto, prosimo, uporabite ga v veljavnem obdobju.', - successTitle: 'Imate verifikacijo izobraževanja Dify', - submitError: 'Pošiljanje obrazca ni uspelo. Prosimo, poskusite znova kasneje.', - submit: 'Predloži', - rejectTitle: 'Vaša Dify izobraževalna verifikacija je bila zavrnjena.', - learn: 'Naučite se, kako preveriti izobrazbo', - emailLabel: 'Vaš trenutni elektronski naslov', - currentSigned: 'Trenutno prijavljen kot', - rejectContent: 'Na žalost niste upravičeni do statusa Verificirane izobrazbe in zato ne morete prejeti ekskluzivnega 100-odstotnega kupona za Dify profesionalni načrt, če uporabljate ta e-poštni naslov.', - notice: { - expired: { - summary: { - line1: 'Še vedno lahko dostopate in uporabljate Dify.', - line2: 'Vendar pa niste več upravičeni do novih kuponov za popust na izobraževanje.', - }, - title: 'Vaš status izobrazbe je potekel.', - }, - isAboutToExpire: { - summary: 'Ne skrbite — to ne bo vplivalo na vaše trenutno naročnino, vendar ne boste dobili izobraževalne popusti, ko se obnovi, razen če ponovno potrdite svoj status.', - title: 'Vaš status izobraževanja bo potekel {{date}}', - }, - stillInEducation: { - title: 'Še vedno v izobraževanju?', - expired: 'Ponovno preverite zdaj, da pridobite nov kupon za prihajajoče šolsko leto. Dodali ga bomo vašemu računu in lahko ga uporabite za naslednjo nadgradnjo.', - isAboutToExpire: 'Ponovno preverite zdaj, da pridobite nov kupon za prihajajoče akademsko leto. Shranjen bo na vašem računu in pripravljen za uporabo ob vaši naslednji obnovitvi.', - }, - alreadyGraduated: { - title: 'Že končal?', - expired: 'Prosto se lahko nadgradite kadarkoli, da pridobite poln dostop do plačanih funkcij.', - isAboutToExpire: 'Vaša trenutna naročnina bo še vedno aktivna. Ko se konča, boste prešli na Sandbox načrt, ali pa lahko kadar koli nadgradite, da obnovite poln dostop do plačanih funkcij.', - }, - action: { - reVerify: 'Ponovno preverite', - upgrade: 'Nadgradnja', - dismiss: 'Odpusti', - }, - dateFormat: 'MM/DD/LETOS', - }, -} - -export default translation diff --git a/web/i18n/sl-SI/explore.json b/web/i18n/sl-SI/explore.json new file mode 100644 index 0000000000..29bf531684 --- /dev/null +++ b/web/i18n/sl-SI/explore.json @@ -0,0 +1,42 @@ +{ + "title": "Razišči", + "sidebar": { + "discovery": "Odkritja", + "chat": "Klepet", + "workspace": "Delovni prostor", + "action": { + "pin": "Pripni", + "unpin": "Odpni", + "rename": "Preimenuj", + "delete": "Izbriši" + }, + "delete": { + "title": "Izbriši aplikacijo", + "content": "Ali ste prepričani, da želite izbrisati to aplikacijo?" + } + }, + "apps": { + "title": "Razišči aplikacije Dify", + "description": "Uporabite te predloge aplikacij takoj ali prilagodite svoje aplikacije na podlagi predlog.", + "allCategories": "Priporočeno" + }, + "appCard": { + "addToWorkspace": "Dodaj v delovni prostor", + "customize": "Prilagodi" + }, + "appCustomize": { + "title": "Ustvari aplikacijo iz {{name}}", + "subTitle": "Ikona aplikacije & ime", + "nameRequired": "Ime aplikacije je obvezno" + }, + "category": { + "Assistant": "Pomočnik", + "Writing": "Pisanje", + "Translate": "Prevajanje", + "Programming": "Programiranje", + "HR": "Kadri", + "Workflow": "Potek dela", + "Agent": "Agent", + "Entertainment": "Zabava" + } +} diff --git a/web/i18n/sl-SI/explore.ts b/web/i18n/sl-SI/explore.ts deleted file mode 100644 index add905631d..0000000000 --- a/web/i18n/sl-SI/explore.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - title: 'Razišči', - sidebar: { - discovery: 'Odkritja', - chat: 'Klepet', - workspace: 'Delovni prostor', - action: { - pin: 'Pripni', - unpin: 'Odpni', - rename: 'Preimenuj', - delete: 'Izbriši', - }, - delete: { - title: 'Izbriši aplikacijo', - content: 'Ali ste prepričani, da želite izbrisati to aplikacijo?', - }, - }, - apps: { - title: 'Razišči aplikacije Dify', - description: 'Uporabite te predloge aplikacij takoj ali prilagodite svoje aplikacije na podlagi predlog.', - allCategories: 'Priporočeno', - }, - appCard: { - addToWorkspace: 'Dodaj v delovni prostor', - customize: 'Prilagodi', - }, - appCustomize: { - title: 'Ustvari aplikacijo iz {{name}}', - subTitle: 'Ikona aplikacije & ime', - nameRequired: 'Ime aplikacije je obvezno', - }, - category: { - Assistant: 'Pomočnik', - Writing: 'Pisanje', - Translate: 'Prevajanje', - Programming: 'Programiranje', - HR: 'Kadri', - Workflow: 'Potek dela', - Agent: 'Agent', - Entertainment: 'Zabava', - }, -} - -export default translation diff --git a/web/i18n/sl-SI/layout.json b/web/i18n/sl-SI/layout.json new file mode 100644 index 0000000000..dc5b34c362 --- /dev/null +++ b/web/i18n/sl-SI/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "expandSidebar": "Razširi stransko vrstico", + "collapseSidebar": "Strni stransko vrstico" + } +} diff --git a/web/i18n/sl-SI/layout.ts b/web/i18n/sl-SI/layout.ts deleted file mode 100644 index d77f6c221a..0000000000 --- a/web/i18n/sl-SI/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - expandSidebar: 'Razširi stransko vrstico', - collapseSidebar: 'Strni stransko vrstico', - }, -} - -export default translation diff --git a/web/i18n/sl-SI/login.json b/web/i18n/sl-SI/login.json new file mode 100644 index 0000000000..77961c68b4 --- /dev/null +++ b/web/i18n/sl-SI/login.json @@ -0,0 +1,124 @@ +{ + "pageTitle": "Hej, začnimo!👋", + "welcome": "Dobrodošli v Dify, prosimo, prijavite se za nadaljevanje.", + "email": "E-poštni naslov", + "emailPlaceholder": "Vaš e-poštni naslov", + "password": "Geslo", + "passwordPlaceholder": "Vaše geslo", + "name": "Uporabniško ime", + "namePlaceholder": "Vaše uporabniško ime", + "forget": "Ste pozabili geslo?", + "signBtn": "Prijava", + "installBtn": "Namesti", + "setAdminAccount": "Nastavitev administratorskega računa", + "setAdminAccountDesc": "Najvišje pravice za administratorski račun, ki se lahko uporablja za ustvarjanje aplikacij in upravljanje LLM ponudnikov itd.", + "createAndSignIn": "Ustvari in prijavi se", + "oneMoreStep": "Še en korak", + "createSample": "Na podlagi teh informacij bomo za vas ustvarili vzorčno aplikacijo", + "invitationCode": "Vabilna koda", + "invitationCodePlaceholder": "Vaša vabilna koda", + "interfaceLanguage": "Jezik vmesnika", + "timezone": "Časovni pas", + "go": "Pojdi na Dify", + "sendUsMail": "Pošljite nam uvod po e-pošti, mi pa bomo obravnavali vašo zahtevo za vabilo.", + "acceptPP": "Prebral sem in sprejemam politiko zasebnosti", + "reset": "Za ponastavitev gesla zaženite naslednji ukaz", + "withGitHub": "Nadaljujte z GitHub", + "withGoogle": "Nadaljujte z Google", + "rightTitle": "Odklenite polni potencial LLM", + "rightDesc": "Brez napora gradite vizualno privlačne, operabilne in izboljšljive AI aplikacije.", + "tos": "Pogoji storitve", + "pp": "Politika zasebnosti", + "tosDesc": "Z registracijo se strinjate z našimi", + "goToInit": "Če računa še niste inicializirali, pojdite na stran za inicializacijo", + "dontHave": "Nimate?", + "invalidInvitationCode": "Neveljavna vabilna koda", + "accountAlreadyInited": "Račun je že inicializiran", + "forgotPassword": "Ste pozabili geslo?", + "resetLinkSent": "Povezava za ponastavitev poslana", + "sendResetLink": "Pošlji povezavo za ponastavitev", + "backToSignIn": "Nazaj na prijavo", + "forgotPasswordDesc": "Prosimo, vnesite svoj e-poštni naslov za ponastavitev gesla. Poslali vam bomo e-pošto z navodili za ponastavitev gesla.", + "checkEmailForResetLink": "Preverite svojo e-pošto za povezavo za ponastavitev gesla. Če je ne prejmete v nekaj minutah, preverite tudi mapo z neželeno pošto.", + "passwordChanged": "Prijavite se zdaj", + "changePassword": "Spremeni geslo", + "changePasswordTip": "Prosimo, vnesite novo geslo za svoj račun", + "invalidToken": "Neveljaven ali potekel žeton", + "confirmPassword": "Potrdite geslo", + "confirmPasswordPlaceholder": "Potrdite svoje novo geslo", + "passwordChangedTip": "Vaše geslo je bilo uspešno spremenjeno", + "error": { + "emailEmpty": "E-poštni naslov je obvezen", + "emailInValid": "Prosimo, vnesite veljaven e-poštni naslov", + "nameEmpty": "Ime je obvezno", + "passwordEmpty": "Geslo je obvezno", + "passwordLengthInValid": "Geslo mora vsebovati vsaj 8 znakov", + "passwordInvalid": "Geslo mora vsebovati črke in številke, dolžina pa mora biti več kot 8 znakov", + "registrationNotAllowed": "Računa ni mogoče najti. Za registracijo se obrnite na skrbnika sistema.", + "invalidEmailOrPassword": "Neveljaven e-poštni naslov ali geslo." + }, + "license": { + "tip": "Preden začnete z Dify Community Edition, preberite GitHub", + "link": "Licenco odprte kode" + }, + "join": "Pridruži se", + "joinTipStart": "Vabimo vas, da se pridružite", + "joinTipEnd": "ekipi na Dify", + "invalid": "Povezava je potekla", + "explore": "Razišči Dify", + "activatedTipStart": "Pridružili ste se ekipi", + "activatedTipEnd": "ekipi", + "activated": "Prijavite se zdaj", + "adminInitPassword": "Geslo za inicializacijo administratorja", + "validate": "Potrdi", + "checkCode": { + "emptyCode": "Koda je obvezna", + "verificationCodePlaceholder": "Vnesite 6-mestno kodo", + "resend": "Poslati", + "verificationCode": "Koda za preverjanje", + "verify": "Preveriti", + "validTime": "Upoštevajte, da je koda veljavna 5 minut", + "checkYourEmail": "Preverjanje e-pošte", + "didNotReceiveCode": "Niste prejeli kode?", + "invalidCode": "Neveljavna koda", + "useAnotherMethod": "Uporabite drug način", + "tipsPrefix": "Pošljemo kodo za preverjanje na" + }, + "useVerificationCode": "Uporaba kode za preverjanje", + "licenseInactive": "Licenca je neaktivna", + "changePasswordBtn": "Nastavitev gesla", + "licenseExpired": "Licenca je potekla", + "resetPassword": "Ponastavi geslo", + "back": "Hrbet", + "backToLogin": "Nazaj na prijavo", + "enterYourName": "Prosimo, vnesite svoje uporabniško ime", + "licenseLost": "Izgubljena licenca", + "licenseExpiredTip": "Licenca za Dify Enterprise za vaš delovni prostor je potekla. Če želite še naprej uporabljati Dify, se obrnite na skrbnika.", + "usePassword": "Uporaba gesla", + "sendVerificationCode": "Pošlji kodo za preverjanje", + "resetPasswordDesc": "Vnesite e-poštni naslov, ki ste ga uporabili za prijavo na Dify, in poslali vam bomo e-poštno sporočilo za ponastavitev gesla.", + "setYourAccount": "Nastavitev računa", + "noLoginMethodTip": "Obrnite se na skrbnika sistema, da dodate način preverjanja pristnosti.", + "or": "ALI", + "noLoginMethod": "Način preverjanja pristnosti ni konfiguriran", + "continueWithCode": "Nadaljujte s kodo", + "withSSO": "Nadaljujte z enotno prijavo", + "licenseLostTip": "Povezava z licenčnim strežnikom Dify ni uspela. Če želite še naprej uporabljati Dify, se obrnite na skrbnika.", + "licenseInactiveTip": "Licenca Dify Enterprise za vaš delovni prostor je neaktivna. Če želite še naprej uporabljati Dify, se obrnite na skrbnika.", + "webapp": { + "noLoginMethod": "Metoda overjanja ni nastavljena za spletno aplikacijo", + "noLoginMethodTip": "Prosimo, da se obrnete na sistemskega skrbnika, da dodate metodo za avtentikacijo.", + "disabled": "Avtentikacija v spletni aplikaciji je onemogočena. Prosimo, kontaktirajte skrbnika sistema, da jo omogoči. Poskusite lahko neposredno uporabljati aplikacijo.", + "login": "Prijava" + }, + "signup": { + "createAccount": "Ustvari svoj račun", + "signUp": "Prijavite se", + "verifyMail": "Nadaljujte z verifikacijskim kodom", + "haveAccount": "Že imate račun?", + "signIn": "Prijavite se", + "noAccount": "Nimate računa?", + "welcome": "👋 Dobrodošli! Prosimo, izpolnite podatke, da začnete." + }, + "pageTitleForE": "Hej, začnimo!" +} diff --git a/web/i18n/sl-SI/login.ts b/web/i18n/sl-SI/login.ts deleted file mode 100644 index 81f280666b..0000000000 --- a/web/i18n/sl-SI/login.ts +++ /dev/null @@ -1,126 +0,0 @@ -const translation = { - pageTitle: 'Hej, začnimo!👋', - welcome: 'Dobrodošli v Dify, prosimo, prijavite se za nadaljevanje.', - email: 'E-poštni naslov', - emailPlaceholder: 'Vaš e-poštni naslov', - password: 'Geslo', - passwordPlaceholder: 'Vaše geslo', - name: 'Uporabniško ime', - namePlaceholder: 'Vaše uporabniško ime', - forget: 'Ste pozabili geslo?', - signBtn: 'Prijava', - installBtn: 'Namesti', - setAdminAccount: 'Nastavitev administratorskega računa', - setAdminAccountDesc: 'Najvišje pravice za administratorski račun, ki se lahko uporablja za ustvarjanje aplikacij in upravljanje LLM ponudnikov itd.', - createAndSignIn: 'Ustvari in prijavi se', - oneMoreStep: 'Še en korak', - createSample: 'Na podlagi teh informacij bomo za vas ustvarili vzorčno aplikacijo', - invitationCode: 'Vabilna koda', - invitationCodePlaceholder: 'Vaša vabilna koda', - interfaceLanguage: 'Jezik vmesnika', - timezone: 'Časovni pas', - go: 'Pojdi na Dify', - sendUsMail: 'Pošljite nam uvod po e-pošti, mi pa bomo obravnavali vašo zahtevo za vabilo.', - acceptPP: 'Prebral sem in sprejemam politiko zasebnosti', - reset: 'Za ponastavitev gesla zaženite naslednji ukaz', - withGitHub: 'Nadaljujte z GitHub', - withGoogle: 'Nadaljujte z Google', - rightTitle: 'Odklenite polni potencial LLM', - rightDesc: 'Brez napora gradite vizualno privlačne, operabilne in izboljšljive AI aplikacije.', - tos: 'Pogoji storitve', - pp: 'Politika zasebnosti', - tosDesc: 'Z registracijo se strinjate z našimi', - goToInit: 'Če računa še niste inicializirali, pojdite na stran za inicializacijo', - dontHave: 'Nimate?', - invalidInvitationCode: 'Neveljavna vabilna koda', - accountAlreadyInited: 'Račun je že inicializiran', - forgotPassword: 'Ste pozabili geslo?', - resetLinkSent: 'Povezava za ponastavitev poslana', - sendResetLink: 'Pošlji povezavo za ponastavitev', - backToSignIn: 'Nazaj na prijavo', - forgotPasswordDesc: 'Prosimo, vnesite svoj e-poštni naslov za ponastavitev gesla. Poslali vam bomo e-pošto z navodili za ponastavitev gesla.', - checkEmailForResetLink: 'Preverite svojo e-pošto za povezavo za ponastavitev gesla. Če je ne prejmete v nekaj minutah, preverite tudi mapo z neželeno pošto.', - passwordChanged: 'Prijavite se zdaj', - changePassword: 'Spremeni geslo', - changePasswordTip: 'Prosimo, vnesite novo geslo za svoj račun', - invalidToken: 'Neveljaven ali potekel žeton', - confirmPassword: 'Potrdite geslo', - confirmPasswordPlaceholder: 'Potrdite svoje novo geslo', - passwordChangedTip: 'Vaše geslo je bilo uspešno spremenjeno', - error: { - emailEmpty: 'E-poštni naslov je obvezen', - emailInValid: 'Prosimo, vnesite veljaven e-poštni naslov', - nameEmpty: 'Ime je obvezno', - passwordEmpty: 'Geslo je obvezno', - passwordLengthInValid: 'Geslo mora vsebovati vsaj 8 znakov', - passwordInvalid: 'Geslo mora vsebovati črke in številke, dolžina pa mora biti več kot 8 znakov', - registrationNotAllowed: 'Računa ni mogoče najti. Za registracijo se obrnite na skrbnika sistema.', - invalidEmailOrPassword: 'Neveljaven e-poštni naslov ali geslo.', - }, - license: { - tip: 'Preden začnete z Dify Community Edition, preberite GitHub', - link: 'Licenco odprte kode', - }, - join: 'Pridruži se', - joinTipStart: 'Vabimo vas, da se pridružite', - joinTipEnd: 'ekipi na Dify', - invalid: 'Povezava je potekla', - explore: 'Razišči Dify', - activatedTipStart: 'Pridružili ste se ekipi', - activatedTipEnd: 'ekipi', - activated: 'Prijavite se zdaj', - adminInitPassword: 'Geslo za inicializacijo administratorja', - validate: 'Potrdi', - checkCode: { - emptyCode: 'Koda je obvezna', - verificationCodePlaceholder: 'Vnesite 6-mestno kodo', - resend: 'Poslati', - verificationCode: 'Koda za preverjanje', - verify: 'Preveriti', - validTime: 'Upoštevajte, da je koda veljavna 5 minut', - checkYourEmail: 'Preverjanje e-pošte', - didNotReceiveCode: 'Niste prejeli kode?', - invalidCode: 'Neveljavna koda', - useAnotherMethod: 'Uporabite drug način', - tipsPrefix: 'Pošljemo kodo za preverjanje na', - }, - useVerificationCode: 'Uporaba kode za preverjanje', - licenseInactive: 'Licenca je neaktivna', - changePasswordBtn: 'Nastavitev gesla', - licenseExpired: 'Licenca je potekla', - resetPassword: 'Ponastavi geslo', - back: 'Hrbet', - backToLogin: 'Nazaj na prijavo', - enterYourName: 'Prosimo, vnesite svoje uporabniško ime', - licenseLost: 'Izgubljena licenca', - licenseExpiredTip: 'Licenca za Dify Enterprise za vaš delovni prostor je potekla. Če želite še naprej uporabljati Dify, se obrnite na skrbnika.', - usePassword: 'Uporaba gesla', - sendVerificationCode: 'Pošlji kodo za preverjanje', - resetPasswordDesc: 'Vnesite e-poštni naslov, ki ste ga uporabili za prijavo na Dify, in poslali vam bomo e-poštno sporočilo za ponastavitev gesla.', - setYourAccount: 'Nastavitev računa', - noLoginMethodTip: 'Obrnite se na skrbnika sistema, da dodate način preverjanja pristnosti.', - or: 'ALI', - noLoginMethod: 'Način preverjanja pristnosti ni konfiguriran', - continueWithCode: 'Nadaljujte s kodo', - withSSO: 'Nadaljujte z enotno prijavo', - licenseLostTip: 'Povezava z licenčnim strežnikom Dify ni uspela. Če želite še naprej uporabljati Dify, se obrnite na skrbnika.', - licenseInactiveTip: 'Licenca Dify Enterprise za vaš delovni prostor je neaktivna. Če želite še naprej uporabljati Dify, se obrnite na skrbnika.', - webapp: { - noLoginMethod: 'Metoda overjanja ni nastavljena za spletno aplikacijo', - noLoginMethodTip: 'Prosimo, da se obrnete na sistemskega skrbnika, da dodate metodo za avtentikacijo.', - disabled: 'Avtentikacija v spletni aplikaciji je onemogočena. Prosimo, kontaktirajte skrbnika sistema, da jo omogoči. Poskusite lahko neposredno uporabljati aplikacijo.', - login: 'Prijava', - }, - signup: { - createAccount: 'Ustvari svoj račun', - signUp: 'Prijavite se', - verifyMail: 'Nadaljujte z verifikacijskim kodom', - haveAccount: 'Že imate račun?', - signIn: 'Prijavite se', - noAccount: 'Nimate računa?', - welcome: '👋 Dobrodošli! Prosimo, izpolnite podatke, da začnete.', - }, - pageTitleForE: 'Hej, začnimo!', -} - -export default translation diff --git a/web/i18n/sl-SI/oauth.json b/web/i18n/sl-SI/oauth.json new file mode 100644 index 0000000000..c899395177 --- /dev/null +++ b/web/i18n/sl-SI/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "notLoggedIn": "Ta aplikacija želi dostopati do vašega Dify Cloud računa", + "loggedIn": "Ta aplikacija želi dostopati do naslednjih informacij iz vašega računa Dify Cloud.", + "common": "Soočamo se z vašo zasebnostjo in te informacije bomo uporabili le za izboljšanje vaših izkušenj z našimi orodji za razvijalce.", + "needLogin": "Prosimo, prijavite se za avtorizacijo" + }, + "scopes": { + "timezone": "Časovni pas", + "email": "Email", + "languagePreference": "Jezikovna prednost", + "avatar": "Avatar", + "name": "Ime" + }, + "error": { + "authAppInfoFetchFailed": "Pridobivanje informacij o aplikaciji za avtorizacijo ni uspelo", + "authorizeFailed": "Avtentikacija je spodletela", + "invalidParams": "Neveljavni parametri" + }, + "login": "Prijava", + "unknownApp": "Nepoznana aplikacija", + "continue": "Nadaljuj", + "switchAccount": "Preklopi račun", + "connect": "Poveži se z" +} diff --git a/web/i18n/sl-SI/oauth.ts b/web/i18n/sl-SI/oauth.ts deleted file mode 100644 index f03bfadd50..0000000000 --- a/web/i18n/sl-SI/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - notLoggedIn: 'Ta aplikacija želi dostopati do vašega Dify Cloud računa', - loggedIn: 'Ta aplikacija želi dostopati do naslednjih informacij iz vašega računa Dify Cloud.', - common: 'Soočamo se z vašo zasebnostjo in te informacije bomo uporabili le za izboljšanje vaših izkušenj z našimi orodji za razvijalce.', - needLogin: 'Prosimo, prijavite se za avtorizacijo', - }, - scopes: { - timezone: 'Časovni pas', - email: 'Email', - languagePreference: 'Jezikovna prednost', - avatar: 'Avatar', - name: 'Ime', - }, - error: { - authAppInfoFetchFailed: 'Pridobivanje informacij o aplikaciji za avtorizacijo ni uspelo', - authorizeFailed: 'Avtentikacija je spodletela', - invalidParams: 'Neveljavni parametri', - }, - login: 'Prijava', - unknownApp: 'Nepoznana aplikacija', - continue: 'Nadaljuj', - switchAccount: 'Preklopi račun', - connect: 'Poveži se z', -} - -export default translation diff --git a/web/i18n/sl-SI/pipeline.json b/web/i18n/sl-SI/pipeline.json new file mode 100644 index 0000000000..2ce2d9416c --- /dev/null +++ b/web/i18n/sl-SI/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "publishAsPipeline": { + "description": "Opis znanja", + "name": "Ime in ikona cevovoda", + "descriptionPlaceholder": "Prosimo, vnesite opis tega cevovoda znanja. (Neobvezno)", + "namePlaceholder": "Prosimo, vnesite ime tega cevovoda znanja. (Obvezno)" + }, + "processing": "Predelava", + "goToAddDocuments": "Pojdite na dodajanje dokumentov", + "confirmPublish": "Potrdi objavo", + "preparingDataSource": "Priprava vira podatkov", + "confirmPublishContent": "Po uspešni objavi cevovoda znanja strukture tega znanja ni mogoče spremeniti. Ste prepričani, da ga želite objaviti?", + "reRun": "Ponovni zagon", + "testRun": "Preskusni zagon", + "publishAs": "Objavljanje kot cevovod znanja" + }, + "inputField": { + "manage": "Upravljanje", + "create": "Ustvarjanje uporabniškega polja za vnos" + }, + "publishToast": { + "title": "Ta cevovod še ni bil objavljen", + "desc": "Če cevovod ni objavljen, lahko spremenite strukturo kosov v vozlišču zbirke znanja, orkestracija cevovoda in spremembe pa bodo samodejno shranjene kot osnutek." + }, + "result": { + "resultPreview": { + "viewDetails": "Poglej podrobnosti", + "loading": "Predelava... Počakaj, prosim", + "error": "Med izvajanjem je prišlo do napake", + "footerTip": "V načinu preizkusnega zagona si oglejte do {{count}} kosov" + } + }, + "ragToolSuggestions": { + "title": "Predlogi za RAG", + "noRecommendationPlugins": "Brez priporočenih vtičnikov, več najdete v Tržnici" + } +} diff --git a/web/i18n/sl-SI/pipeline.ts b/web/i18n/sl-SI/pipeline.ts deleted file mode 100644 index 140a235c3f..0000000000 --- a/web/i18n/sl-SI/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - publishAsPipeline: { - description: 'Opis znanja', - name: 'Ime in ikona cevovoda', - descriptionPlaceholder: 'Prosimo, vnesite opis tega cevovoda znanja. (Neobvezno)', - namePlaceholder: 'Prosimo, vnesite ime tega cevovoda znanja. (Obvezno)', - }, - processing: 'Predelava', - goToAddDocuments: 'Pojdite na dodajanje dokumentov', - confirmPublish: 'Potrdi objavo', - preparingDataSource: 'Priprava vira podatkov', - confirmPublishContent: 'Po uspešni objavi cevovoda znanja strukture tega znanja ni mogoče spremeniti. Ste prepričani, da ga želite objaviti?', - reRun: 'Ponovni zagon', - testRun: 'Preskusni zagon', - publishAs: 'Objavljanje kot cevovod znanja', - }, - inputField: { - manage: 'Upravljanje', - create: 'Ustvarjanje uporabniškega polja za vnos', - }, - publishToast: { - title: 'Ta cevovod še ni bil objavljen', - desc: 'Če cevovod ni objavljen, lahko spremenite strukturo kosov v vozlišču zbirke znanja, orkestracija cevovoda in spremembe pa bodo samodejno shranjene kot osnutek.', - }, - result: { - resultPreview: { - viewDetails: 'Poglej podrobnosti', - loading: 'Predelava... Počakaj, prosim', - error: 'Med izvajanjem je prišlo do napake', - footerTip: 'V načinu preizkusnega zagona si oglejte do {{count}} kosov', - }, - }, - ragToolSuggestions: { - title: 'Predlogi za RAG', - noRecommendationPlugins: 'Brez priporočenih vtičnikov, več najdete v Tržnici', - }, -} - -export default translation diff --git a/web/i18n/sl-SI/plugin-tags.json b/web/i18n/sl-SI/plugin-tags.json new file mode 100644 index 0000000000..5893828217 --- /dev/null +++ b/web/i18n/sl-SI/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "tags": { + "design": "Oblikovanje", + "videos": "Videi", + "education": "Izobraževanje", + "search": "Iskanje", + "image": "Slika", + "medical": "Medicinski", + "weather": "Vreme", + "social": "Družbeni", + "entertainment": "Zabava", + "productivity": "Produktivnost", + "finance": "Finance", + "news": "Novice", + "business": "Poslovanje", + "utilities": "Komunalne storitve", + "agent": "Agent", + "other": "Drugo", + "travel": "Potovanje", + "rag": "RAG" + }, + "searchTags": "Iskalne oznake", + "allTags": "Vse nalepke" +} diff --git a/web/i18n/sl-SI/plugin-tags.ts b/web/i18n/sl-SI/plugin-tags.ts deleted file mode 100644 index bf4fc4f4dc..0000000000 --- a/web/i18n/sl-SI/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - tags: { - design: 'Oblikovanje', - videos: 'Videi', - education: 'Izobraževanje', - search: 'Iskanje', - image: 'Slika', - medical: 'Medicinski', - weather: 'Vreme', - social: 'Družbeni', - entertainment: 'Zabava', - productivity: 'Produktivnost', - finance: 'Finance', - news: 'Novice', - business: 'Poslovanje', - utilities: 'Komunalne storitve', - agent: 'Agent', - other: 'Drugo', - travel: 'Potovanje', - rag: 'RAG', - }, - searchTags: 'Iskalne oznake', - allTags: 'Vse nalepke', -} - -export default translation diff --git a/web/i18n/sl-SI/plugin-trigger.json b/web/i18n/sl-SI/plugin-trigger.json new file mode 100644 index 0000000000..a64cd59dc6 --- /dev/null +++ b/web/i18n/sl-SI/plugin-trigger.json @@ -0,0 +1,184 @@ +{ + "subscription": { + "title": "Naročnine", + "listNum": "{{num}} naročnine", + "empty": { + "title": "Brez naročnin", + "button": "Nova naročnina" + }, + "createButton": { + "oauth": "Nova naročnina z OAuth", + "apiKey": "Nova naročnina z API ključem", + "manual": "Prilepite URL za ustvarjanje novega naročniškega paketa" + }, + "createSuccess": "Naročnina je bila uspešno ustvarjena", + "createFailed": "Ustvarjanje naročnine ni uspelo", + "maxCount": "Največ {{num}} naročnin", + "selectPlaceholder": "Izberite naročnino", + "noSubscriptionSelected": "Nobena naročnina ni izbrana", + "subscriptionRemoved": "Naročnina odstranjena", + "list": { + "title": "Naročnine", + "addButton": "Dodaj", + "tip": "Prejemajte dogodke prek naročnine", + "item": { + "enabled": "Omogočeno", + "disabled": "Onemogočeno", + "credentialType": { + "api_key": "API ključ", + "oauth2": "OAuth", + "unauthorized": "Priročnik" + }, + "actions": { + "delete": "Izbriši", + "deleteConfirm": { + "title": "Izbrišem {{name}}?", + "success": "Naročnina {{name}} je bila uspešno izbrisana", + "error": "Brisanje naročnine {{name}} ni uspelo", + "content": "Ko bo ta naročnina izbrisana, je ne bo mogoče obnoviti. Prosimo, potrdite.", + "contentWithApps": "Trenutno naročnino uporablja {{count}} aplikacij. Njeno brisanje bo povzročilo, da konfigurirane aplikacije ne bodo več prejemale dogodkov naročnine.", + "confirm": "Potrdi izbris", + "cancel": "Prekliči", + "confirmInputWarning": "Prosimo, vnesite pravilno ime za potrditev.", + "confirmInputPlaceholder": "Vnesite \"{{name}}\" za potrditev.", + "confirmInputTip": "Prosimo vnesite “{{name}}”, da potrdite." + } + }, + "status": { + "active": "Aktiven", + "inactive": "Neaktiven" + }, + "usedByNum": "Uporabljajo {{num}} delovni tokovi", + "noUsed": "Brez uporabljenega poteka dela" + } + }, + "addType": { + "title": "Dodaj naročnino", + "description": "Izberite, kako želite ustvariti svojo naročnino na sprožilec", + "options": { + "apikey": { + "title": "Ustvari z API ključem", + "description": "Samodejno ustvarite naročnino z uporabo API poverilnic" + }, + "oauth": { + "title": "Ustvari z OAuth", + "description": "Pooblasti tretjo stran za ustvarjanje naročnine", + "clientSettings": "Nastavitve odjemalca OAuth", + "clientTitle": "OAuth odjemalec", + "default": "Privzeto", + "custom": "Po meri" + }, + "manual": { + "title": "Ročna nastavitev", + "description": "Prilepite URL za ustvarjanje novega naročniškega paketa", + "tip": "Ročno nastavite URL na platformi tretje osebe" + } + } + } + }, + "modal": { + "steps": { + "verify": "Preveri", + "configuration": "Konfiguracija" + }, + "common": { + "cancel": "Prekliči", + "back": "Nazaj", + "next": "Naslednji", + "create": "Ustvari", + "verify": "Preveri", + "authorize": "Pooblastiti", + "creating": "Ustvarjanje...", + "verifying": "Preverjanje...", + "authorizing": "Avtorizacija..." + }, + "oauthRedirectInfo": "Ker za tega ponudnika orodja niso bili najdeni sistemski odjemalski ključni podatki, je potrebno nastaviti ročno, za redirect_uri uporabite", + "apiKey": { + "title": "Ustvari z API ključem", + "verify": { + "title": "Preveri poverilnice", + "description": "Prosimo, vnesite svoje API poverilnice za preverjanje dostopa", + "error": "Preverjanje poverilnic ni uspelo. Prosimo, preverite svoj API ključ.", + "success": "Poverilnice so bile uspešno preverjene" + }, + "configuration": { + "title": "Konfiguriraj naročnino", + "description": "Nastavite parametre naročnine" + } + }, + "oauth": { + "title": "Ustvari z OAuth", + "authorization": { + "title": "OAuth avtorizacija", + "description": "Dovoli Difyju dostop do vašega računa", + "redirectUrl": "Preusmeritveni URL", + "redirectUrlHelp": "Uporabite ta URL v konfiguraciji vaše OAuth aplikacije", + "authorizeButton": "Avtorizirajte z {{provider}}", + "waitingAuth": "Čakanje na avtorizacijo...", + "authSuccess": "Pooblastilo uspešno", + "authFailed": "Ni uspelo pridobiti informacij o OAuth pooblastilu", + "waitingJump": "Pooblaščeno, čakajoč na skok" + }, + "configuration": { + "title": "Konfiguriraj naročnino", + "description": "Nastavite parametre naročnine po avtorizaciji", + "success": "OAuth konfiguracija uspešna", + "failed": "Konfiguracija OAuth je spodletela" + }, + "remove": { + "success": "OAuth uspešno odstranjen", + "failed": "Odstranjevanje OAuth ni uspelo" + }, + "save": { + "success": "Konfiguracija OAuth je bila uspešno shranjena" + } + }, + "manual": { + "title": "Ročna nastavitev", + "description": "Ročno konfigurirajte naročnino na spletni kavelj", + "logs": { + "title": "Dnevniki zahtev", + "request": "Zahteva", + "loading": "Čakam na zahtevo od {{pluginName}}..." + } + }, + "form": { + "subscriptionName": { + "label": "Ime naročnine", + "placeholder": "Vnesite ime naročnine", + "required": "Ime naročnine je obvezno" + }, + "callbackUrl": { + "label": "URL za povratni klic", + "description": "Ta URL bo prejel dogodke webhook", + "tooltip": "Zagotovite javno dostopen konec, ki lahko prejema klicne zahteve od ponudnika sprožilca.", + "placeholder": "Generiranje...", + "privateAddressWarning": "Ta URL se zdi notranji naslov, kar lahko povzroči, da zahtevki webhooka ne uspejo. Lahko spremenite TRIGGER_URL v javni naslov." + } + }, + "errors": { + "createFailed": "Ustvarjanje naročnine ni uspelo", + "verifyFailed": "Neuspešno preverjanje poverilnic", + "authFailed": "Avtorizacija ni uspela", + "networkError": "Napaka v omrežju, poskusite znova" + } + }, + "events": { + "title": "Razpoložljivi dogodki", + "description": "Dogodki, na katere se lahko ta vtičnik sprožilnika naroči", + "empty": "Ni razpoložljivih dogodkov", + "event": "Dogodek", + "events": "Dogodki", + "actionNum": "{{num}} {{event}} VKLJUČENO", + "item": { + "parameters": "{{count}} parametri", + "noParameters": "Brez parametrov" + }, + "output": "Izhod" + }, + "node": { + "status": { + "warning": "Prekini povezavo" + } + } +} diff --git a/web/i18n/sl-SI/plugin-trigger.ts b/web/i18n/sl-SI/plugin-trigger.ts deleted file mode 100644 index a904be053e..0000000000 --- a/web/i18n/sl-SI/plugin-trigger.ts +++ /dev/null @@ -1,186 +0,0 @@ -const translation = { - subscription: { - title: 'Naročnine', - listNum: '{{num}} naročnine', - empty: { - title: 'Brez naročnin', - button: 'Nova naročnina', - }, - createButton: { - oauth: 'Nova naročnina z OAuth', - apiKey: 'Nova naročnina z API ključem', - manual: 'Prilepite URL za ustvarjanje novega naročniškega paketa', - }, - createSuccess: 'Naročnina je bila uspešno ustvarjena', - createFailed: 'Ustvarjanje naročnine ni uspelo', - maxCount: 'Največ {{num}} naročnin', - selectPlaceholder: 'Izberite naročnino', - noSubscriptionSelected: 'Nobena naročnina ni izbrana', - subscriptionRemoved: 'Naročnina odstranjena', - list: { - title: 'Naročnine', - addButton: 'Dodaj', - tip: 'Prejemajte dogodke prek naročnine', - item: { - enabled: 'Omogočeno', - disabled: 'Onemogočeno', - credentialType: { - api_key: 'API ključ', - oauth2: 'OAuth', - unauthorized: 'Priročnik', - }, - actions: { - delete: 'Izbriši', - deleteConfirm: { - title: 'Izbrišem {{name}}?', - success: 'Naročnina {{name}} je bila uspešno izbrisana', - error: 'Brisanje naročnine {{name}} ni uspelo', - content: 'Ko bo ta naročnina izbrisana, je ne bo mogoče obnoviti. Prosimo, potrdite.', - contentWithApps: 'Trenutno naročnino uporablja {{count}} aplikacij. Njeno brisanje bo povzročilo, da konfigurirane aplikacije ne bodo več prejemale dogodkov naročnine.', - confirm: 'Potrdi izbris', - cancel: 'Prekliči', - confirmInputWarning: 'Prosimo, vnesite pravilno ime za potrditev.', - confirmInputPlaceholder: 'Vnesite "{{name}}" za potrditev.', - confirmInputTip: 'Prosimo vnesite “{{name}}”, da potrdite.', - }, - }, - status: { - active: 'Aktiven', - inactive: 'Neaktiven', - }, - usedByNum: 'Uporabljajo {{num}} delovni tokovi', - noUsed: 'Brez uporabljenega poteka dela', - }, - }, - addType: { - title: 'Dodaj naročnino', - description: 'Izberite, kako želite ustvariti svojo naročnino na sprožilec', - options: { - apikey: { - title: 'Ustvari z API ključem', - description: 'Samodejno ustvarite naročnino z uporabo API poverilnic', - }, - oauth: { - title: 'Ustvari z OAuth', - description: 'Pooblasti tretjo stran za ustvarjanje naročnine', - clientSettings: 'Nastavitve odjemalca OAuth', - clientTitle: 'OAuth odjemalec', - default: 'Privzeto', - custom: 'Po meri', - }, - manual: { - title: 'Ročna nastavitev', - description: 'Prilepite URL za ustvarjanje novega naročniškega paketa', - tip: 'Ročno nastavite URL na platformi tretje osebe', - }, - }, - }, - }, - modal: { - steps: { - verify: 'Preveri', - configuration: 'Konfiguracija', - }, - common: { - cancel: 'Prekliči', - back: 'Nazaj', - next: 'Naslednji', - create: 'Ustvari', - verify: 'Preveri', - authorize: 'Pooblastiti', - creating: 'Ustvarjanje...', - verifying: 'Preverjanje...', - authorizing: 'Avtorizacija...', - }, - oauthRedirectInfo: 'Ker za tega ponudnika orodja niso bili najdeni sistemski odjemalski ključni podatki, je potrebno nastaviti ročno, za redirect_uri uporabite', - apiKey: { - title: 'Ustvari z API ključem', - verify: { - title: 'Preveri poverilnice', - description: 'Prosimo, vnesite svoje API poverilnice za preverjanje dostopa', - error: 'Preverjanje poverilnic ni uspelo. Prosimo, preverite svoj API ključ.', - success: 'Poverilnice so bile uspešno preverjene', - }, - configuration: { - title: 'Konfiguriraj naročnino', - description: 'Nastavite parametre naročnine', - }, - }, - oauth: { - title: 'Ustvari z OAuth', - authorization: { - title: 'OAuth avtorizacija', - description: 'Dovoli Difyju dostop do vašega računa', - redirectUrl: 'Preusmeritveni URL', - redirectUrlHelp: 'Uporabite ta URL v konfiguraciji vaše OAuth aplikacije', - authorizeButton: 'Avtorizirajte z {{provider}}', - waitingAuth: 'Čakanje na avtorizacijo...', - authSuccess: 'Pooblastilo uspešno', - authFailed: 'Ni uspelo pridobiti informacij o OAuth pooblastilu', - waitingJump: 'Pooblaščeno, čakajoč na skok', - }, - configuration: { - title: 'Konfiguriraj naročnino', - description: 'Nastavite parametre naročnine po avtorizaciji', - success: 'OAuth konfiguracija uspešna', - failed: 'Konfiguracija OAuth je spodletela', - }, - remove: { - success: 'OAuth uspešno odstranjen', - failed: 'Odstranjevanje OAuth ni uspelo', - }, - save: { - success: 'Konfiguracija OAuth je bila uspešno shranjena', - }, - }, - manual: { - title: 'Ročna nastavitev', - description: 'Ročno konfigurirajte naročnino na spletni kavelj', - logs: { - title: 'Dnevniki zahtev', - request: 'Zahteva', - loading: 'Čakam na zahtevo od {{pluginName}}...', - }, - }, - form: { - subscriptionName: { - label: 'Ime naročnine', - placeholder: 'Vnesite ime naročnine', - required: 'Ime naročnine je obvezno', - }, - callbackUrl: { - label: 'URL za povratni klic', - description: 'Ta URL bo prejel dogodke webhook', - tooltip: 'Zagotovite javno dostopen konec, ki lahko prejema klicne zahteve od ponudnika sprožilca.', - placeholder: 'Generiranje...', - privateAddressWarning: 'Ta URL se zdi notranji naslov, kar lahko povzroči, da zahtevki webhooka ne uspejo. Lahko spremenite TRIGGER_URL v javni naslov.', - }, - }, - errors: { - createFailed: 'Ustvarjanje naročnine ni uspelo', - verifyFailed: 'Neuspešno preverjanje poverilnic', - authFailed: 'Avtorizacija ni uspela', - networkError: 'Napaka v omrežju, poskusite znova', - }, - }, - events: { - title: 'Razpoložljivi dogodki', - description: 'Dogodki, na katere se lahko ta vtičnik sprožilnika naroči', - empty: 'Ni razpoložljivih dogodkov', - event: 'Dogodek', - events: 'Dogodki', - actionNum: '{{num}} {{event}} VKLJUČENO', - item: { - parameters: '{{count}} parametri', - noParameters: 'Brez parametrov', - }, - output: 'Izhod', - }, - node: { - status: { - warning: 'Prekini povezavo', - }, - }, -} - -export default translation diff --git a/web/i18n/sl-SI/plugin.json b/web/i18n/sl-SI/plugin.json new file mode 100644 index 0000000000..a750e15f3d --- /dev/null +++ b/web/i18n/sl-SI/plugin.json @@ -0,0 +1,323 @@ +{ + "metadata": { + "title": "Vtičniki" + }, + "category": { + "bundles": "Paketi", + "all": "Vse", + "extensions": "Razširitve", + "models": "Modeli", + "agents": "Strategije agenta", + "tools": "Orodja", + "datasources": "Viri podatkov", + "triggers": "Sprožilci" + }, + "categorySingle": { + "extension": "Razširitev", + "bundle": "Paket", + "agent": "Agentska strategija", + "tool": "Orodje", + "model": "Model", + "datasource": "Vir podatkov", + "trigger": "Sprožilec" + }, + "list": { + "source": { + "local": "Namestite iz lokalne paketne datoteke", + "marketplace": "Namestite iz tržnice", + "github": "Namestite iz GitHub-a" + }, + "notFound": "Nobeni vtičniki niso bili najdeni.", + "noInstalled": "Nobeni vtičniki niso nameščeni." + }, + "source": { + "marketplace": "Tržnica", + "github": "GitHub", + "local": "Lokalna paketna datoteka" + }, + "detailPanel": { + "categoryTip": { + "local": "Lokalni vtičnik", + "marketplace": "Nameščeno iz tržnice", + "debugging": "Orodje za odpravljanje napak", + "github": "Nameščen iz Githuba" + }, + "operation": { + "remove": "Odstrani", + "install": "Namestite", + "viewDetail": "Oglej si podrobnosti", + "detail": "Podrobnosti", + "update": "Posodobitev", + "checkUpdate": "Preveri posodobitev", + "info": "Informacije o vtičniku", + "back": "Nazaj" + }, + "toolSelector": { + "unsupportedContent": "V različici vtičnika, ki je nameščena, ta akcija ni zagotovljena.", + "unsupportedContent2": "Kliknite za preklop različice.", + "params": "RAZLOGOVANJE KONFIGURACIJA", + "auto": "Samodejno", + "title": "Dodaj orodje", + "settings": "UPORABNIŠKE NASTAVITVE", + "descriptionLabel": "Opis orodja", + "uninstalledLink": "Upravljanje v vtičnikih", + "unsupportedTitle": "Nepodprta akcija", + "placeholder": "Izberite orodje...", + "uninstalledTitle": "Orodje ni nameščeno", + "uninstalledContent": "Ta vtičnik je nameščen iz lokalnega/GitHub repozitorija. Uporabite ga prosim po namestitvi.", + "toolLabel": "Orodje", + "descriptionPlaceholder": "Kratek opis namena orodja, npr. pridobitev temperature za določeno lokacijo.", + "empty": "Kliknite gumb ' ' za dodajanje orodij. Dodate lahko več orodij.", + "paramsTip1": "Nadzoruje parametre sklepanja LLM.", + "paramsTip2": "Ko je 'Avtomatsko' izklopljeno, se uporablja privzeta vrednost.", + "toolSetting": "Nastavitve orodja", + "unsupportedMCPTool": "Trenutno izbrana različica vtičnika strategije agenta ne podpira orodij MCP." + }, + "endpointDisableContent": "Ali želite onemogočiti {{name}}?", + "serviceOk": "Storitve so v redu", + "endpointDeleteTip": "Odstrani končno točko", + "actionNum": "{{num}} {{action}} VKLJUČENO", + "endpointDeleteContent": "Ali želite odstraniti {{name}}?", + "configureApp": "Konfiguriraj aplikacijo", + "endpointsDocLink": "Oglejte si dokument", + "endpointModalTitle": "Nastavi končno točko", + "disabled": "Onemogočeno", + "configureTool": "Konfigurirajte orodje", + "switchVersion": "Preklopna različica", + "strategyNum": "{{num}} {{strategy}} VKLJUČENO", + "endpoints": "Končne točke", + "configureModel": "Konfiguriraj model", + "modelNum": "{{num}} VZORCI VKLJUČENI", + "endpointDisableTip": "Onemogoči končno točko", + "endpointsTip": "Ta vtičnik zagotavlja specifične funkcionalnosti preko končnih točk, prav tako pa lahko konfigurirate več nizov končnih točk za trenutno delovno okolje.", + "endpointModalDesc": "Ko je konfiguriran, se lahko uporabljajo funkcije, ki jih vtičnik zagotavlja prek API končnih točk.", + "endpointsEmpty": "Kliknite gumb ' ' za dodajanje končne točke", + "deprecation": { + "reason": { + "businessAdjustments": "poslovne prilagoditve", + "noMaintainer": "brez vzdrževalca", + "ownershipTransferred": "lastništvo preneseno" + }, + "onlyReason": "Ta vtičnik je bil opuščen zaradi {{deprecatedReason}} in ne bo več posodobljen.", + "noReason": "Ta vtičnik je bil ukinjen in ne bo več posodabljan.", + "fullMessage": "Ta vtičnik je bil ukinjen zaradi {{deprecatedReason}}, in ne bo več posodobljen. Namesto tega uporabite {{-alternativePluginId}}." + } + }, + "debugInfo": { + "viewDocs": "Oglejte si dokumente", + "title": "Odpravljanje napak" + }, + "privilege": { + "whoCanInstall": "Kdo lahko namesti in upravlja vtičnike?", + "title": "Nastavitve vtičnika", + "admins": "Administratori", + "whoCanDebug": "Kdo lahko odpravi napake v vtičnikih?", + "everyone": "Vsi", + "noone": "Nihče" + }, + "pluginInfoModal": { + "title": "Informacije o vtičniku", + "packageName": "Paket", + "release": "Izdati", + "repository": "Shramba" + }, + "action": { + "usedInApps": "Ta vtičnik se uporablja v {{num}} aplikacijah.", + "checkForUpdates": "Preverite posodobitve", + "deleteContentLeft": "Ali želite odstraniti", + "deleteContentRight": "vtičnik?", + "delete": "Odstrani vtičnik", + "pluginInfo": "Informacije o vtičniku" + }, + "installModal": { + "labels": { + "repository": "Shramba", + "version": "Različica", + "package": "Paket" + }, + "installFailed": "Namestitev ni uspela", + "installing": "Nameščanje...", + "installedSuccessfully": "Namestitev uspešna", + "uploadFailed": "Nalaganje ni uspelo", + "pluginLoadErrorDesc": "Ta vtičnik ne bo nameščen", + "readyToInstallPackages": "Prihajamo do namestitve naslednjih {{num}} dodatkov", + "cancel": "Prekliči", + "fromTrustSource": "Prosimo, poskrbite, da namestite le vtičnike iz zaupanja vrednega vira.", + "installedSuccessfullyDesc": "Vtičnik je bil uspešno nameščen.", + "readyToInstallPackage": "Namestitev naslednjega vtičnika", + "installComplete": "Namestitev končana", + "installFailedDesc": "Namestitev vtičnika je bila neuspešna.", + "close": "Zapri", + "uploadingPackage": "Nalagam {{packageName}}...", + "readyToInstall": "Namestitev naslednjega vtičnika", + "dropPluginToInstall": "Tukaj spustite paket vtičnika, da ga namestite", + "next": "Naprej", + "back": "Nazaj", + "install": "Namestite", + "pluginLoadError": "Napaka pri nalaganju vtičnika", + "installPlugin": "Namestite vtičnik", + "installWarning": "Ta vtičnik ni dovoljen za namestitev." + }, + "installFromGitHub": { + "updatePlugin": "Posodobite vtičnik iz GitHuba", + "gitHubRepo": "GitHub repozitorij", + "installFailed": "Namestitev ni uspela", + "installPlugin": "Namestite vtičnik iz GitHuba", + "selectVersionPlaceholder": "Prosim, izberite različico", + "selectPackagePlaceholder": "Prosim, izberite paket", + "selectPackage": "Izberite paket", + "uploadFailed": "Nalaganje ni uspelo", + "selectVersion": "Izberite različico", + "installedSuccessfully": "Namestitev uspešna", + "installNote": "Prosim, prepričajte se, da namestite vtičnike samo iz zaupanja vrednega vira." + }, + "upgrade": { + "close": "Zapri", + "description": "Namestitev naslednjega vtičnika", + "upgrading": "Nameščanje...", + "successfulTitle": "Namestitev uspešna", + "upgrade": "Namestite", + "usedInApps": "Uporablja se v {{num}} aplikacijah", + "title": "Namestite vtičnik" + }, + "error": { + "noReleasesFound": "Ni najdenih izdaj. Prosimo preverite GitHub repozitorij ali vhodni URL.", + "fetchReleasesError": "Ne morem pridobiti izdaj. Prosim, poskusite znova pozneje.", + "inValidGitHubUrl": "Neveljavna GitHub povezava. Vnesite veljavno povezavo v formatu: https://github.com/lastnik/repo" + }, + "marketplace": { + "sortOption": { + "mostPopular": "Najbolj priljubljeno", + "firstReleased": "Prvič izdan", + "recentlyUpdated": "Nedavno posodobljeno", + "newlyReleased": "Nedavno izdano" + }, + "and": "in", + "pluginsResult": "{{num}} rezultati", + "sortBy": "Razvrsti po", + "verifiedTip": "Verificirano s strani Dify", + "discover": "Odkrijte", + "partnerTip": "Potrjeno s strani partnerja Dify", + "empower": "Okrepite svoj razvoj AI", + "noPluginFound": "Nobenega vtičnika ni bilo najti.", + "viewMore": "Oglejte si več", + "moreFrom": "Več iz tržnice", + "difyMarketplace": "Dify Marketplace" + }, + "task": { + "installing": "Namestitev {{installingLength}} vtičnikov, 0 končanih.", + "clearAll": "Počisti vse", + "installError": "{{errorLength}} vtičnikov ni uspelo namestiti, kliknite za ogled", + "installingWithSuccess": "Namestitev {{installingLength}} dodatkov, {{successLength}} uspešnih.", + "installedError": "{{errorLength}} vtičnikov ni uspelo namestiti", + "installingWithError": "Namestitev {{installingLength}} vtičnikov, {{successLength}} uspešnih, {{errorLength}} neuspešnih", + "installSuccess": "{{successLength}} plugins installed successfully", + "installed": "Installed", + "runningPlugins": "Installing Plugins", + "successPlugins": "Successfully Installed Plugins", + "errorPlugins": "Failed to Install Plugins" + }, + "endpointsEnabled": "{{num}} nizov končnih točk omogočenih", + "search": "Iskanje", + "searchInMarketplace": "Iskanje na trgu", + "searchPlugins": "Išči vtičnike", + "fromMarketplace": "Iz tržnice", + "searchTools": "Iskalna orodja...", + "installPlugin": "Namestite vtičnik", + "from": "Iz", + "installFrom": "NAMESTITE IZ", + "searchCategories": "Išči kategorije", + "installAction": "Namestite", + "findMoreInMarketplace": "Poiščite več v Tržnici", + "install": "{{num}} namestitev", + "allCategories": "Vse kategorije", + "difyVersionNotCompatible": "Trenutna različica Dify ni združljiva s to vtičnico, prosimo, posodobite na minimalno zahtevano različico: {{minimalDifyVersion}}", + "requestAPlugin": "Zahtevajte vtičnik", + "publishPlugins": "Objavljanje vtičnikov", + "auth": { + "authorizationName": "Ime pooblastila", + "workspaceDefault": "Privzeti delovni prostor", + "custom": "Po meri", + "setDefault": "Nastavi kot privzeto", + "default": "Privzeto", + "addApi": "Dodajte API ključ", + "addOAuth": "Dodaj OAuth", + "useApi": "Uporabite ključ API", + "useOAuthAuth": "Uporabite OAuth avtentikacijo", + "saveAndAuth": "Shrani in pooblasti", + "authorizations": "Avtorizacije", + "setupOAuth": "Nastavite OAuth odjemalca", + "saveOnly": "Shrani samo", + "useOAuth": "Uporabite OAuth", + "authRemoved": "Avtor odstranjen", + "authorization": "Avtorizacija", + "oauthClient": "OAuth odjemalec", + "useApiAuth": "Konfiguracija avtorizacije ključev API", + "oauthClientSettings": "Nastavitve odjemalca OAuth", + "clientInfo": "Ker za tega ponudnika orodij niso bili najdeni klientski skrivnosti sistema, je potrebna ročna nastavitev, za redirect_uri prosimo uporabite", + "useApiAuthDesc": "Po konfiguraciji poverilnic lahko vsi člani v delovnem prostoru uporabljajo to orodje pri orkestraciji aplikacij.", + "unavailable": "Nedostopno", + "customCredentialUnavailable": "Trenutno niso na voljo prilagojene prijave.", + "credentialUnavailable": "Trenutno niso na voljo poverilnice. Prosimo, kontaktirajte administratorja.", + "credentialUnavailableInButton": "Pogodba ni na voljo", + "connectedWorkspace": "Povezani delovni prostor", + "emptyAuth": "Prosimo, konfigurirajte preverjanje pristnosti" + }, + "deprecated": "Zastaran", + "autoUpdate": { + "strategy": { + "disabled": { + "name": "Onemogočeno", + "description": "Vtičniki se ne bodo samodejno posodobili" + }, + "fixOnly": { + "name": "Popravi samo", + "selectedDescription": "Samodejno posodabljanje samo za različice popravkov", + "description": "Samodejno posodabljanje samo za različice popravkov (npr. 1.0.1 → 1.0.2). Spremembe manjših različic ne bodo povzročile posodobitev." + }, + "latest": { + "selectedDescription": "Vedno posodobite na najnovejšo različico", + "name": "Najnovejši", + "description": "Vedno posodobite na najnovejšo različico" + } + }, + "upgradeMode": { + "partial": "Samo izbrano", + "exclude": "Izključi izbrano", + "all": "Posodobi vse" + }, + "upgradeModePlaceholder": { + "exclude": "Izbrani vtičniki se ne bodo samodejno posodabljali.", + "partial": "Samo izbrani vtičniki se bodo samodejno posodabljali. Trenutno ni izbranih nobenih vtičnikov, zato se nobeni vtičniki ne bodo samodejno posodobili." + }, + "operation": { + "select": "Izberi vtičnike", + "clearAll": "Počisti vse" + }, + "pluginDowngradeWarning": { + "downgrade": "Kljub temu narediti nižjo različico", + "exclude": "Izključi iz samodejnega posodabljanja", + "title": "Zmanjšanje različice vtičnika", + "description": "Samodejno posodabljanje je trenutno omogočeno za ta vtičnik. Zmanjšanje različice lahko povzroči, da bodo vaše spremembe prepisane med naslednjim samodejnim posodabljanjem." + }, + "noPluginPlaceholder": { + "noFound": "Nobeni vtičniki niso bili najdeni", + "noInstalled": "Nobenih vtičnikov ni nameščenih" + }, + "updateTimeTitle": "Čas posodobitve", + "specifyPluginsToUpdate": "Določite vtičnike za posodobitev", + "updateTime": "Čas posodobitve", + "nextUpdateTime": "Naslednje samodejno posodabljanje: {{time}}", + "automaticUpdates": "Samodejna posodobitev", + "excludeUpdate": "Naslednjih {{num}} razširitev ne bo samodejno posodobljenih", + "changeTimezone": "Za spremembo časovnega pasu pojdite v Nastavitve", + "partialUPdate": "Samo naslednjih {{num}} vtičnikov se bo samodejno posodabljalo.", + "updateSettings": "Posodobi nastavitve" + }, + "readmeInfo": { + "title": "PREBERIME", + "needHelpCheckReadme": "Potrebujete pomoč? Preverite README.", + "noReadmeAvailable": "README ni na voljo", + "failedToFetch": "Neuspešno pridobivanje datoteke README" + } +} diff --git a/web/i18n/sl-SI/plugin.ts b/web/i18n/sl-SI/plugin.ts deleted file mode 100644 index ea99b649bf..0000000000 --- a/web/i18n/sl-SI/plugin.ts +++ /dev/null @@ -1,325 +0,0 @@ -const translation = { - metadata: { - title: 'Vtičniki', - }, - category: { - bundles: 'Paketi', - all: 'Vse', - extensions: 'Razširitve', - models: 'Modeli', - agents: 'Strategije agenta', - tools: 'Orodja', - datasources: 'Viri podatkov', - triggers: 'Sprožilci', - }, - categorySingle: { - extension: 'Razširitev', - bundle: 'Paket', - agent: 'Agentska strategija', - tool: 'Orodje', - model: 'Model', - datasource: 'Vir podatkov', - trigger: 'Sprožilec', - }, - list: { - source: { - local: 'Namestite iz lokalne paketne datoteke', - marketplace: 'Namestite iz tržnice', - github: 'Namestite iz GitHub-a', - }, - notFound: 'Nobeni vtičniki niso bili najdeni.', - noInstalled: 'Nobeni vtičniki niso nameščeni.', - }, - source: { - marketplace: 'Tržnica', - github: 'GitHub', - local: 'Lokalna paketna datoteka', - }, - detailPanel: { - categoryTip: { - local: 'Lokalni vtičnik', - marketplace: 'Nameščeno iz tržnice', - debugging: 'Orodje za odpravljanje napak', - github: 'Nameščen iz Githuba', - }, - operation: { - remove: 'Odstrani', - install: 'Namestite', - viewDetail: 'Oglej si podrobnosti', - detail: 'Podrobnosti', - update: 'Posodobitev', - checkUpdate: 'Preveri posodobitev', - info: 'Informacije o vtičniku', - back: 'Nazaj', - }, - toolSelector: { - unsupportedContent: 'V različici vtičnika, ki je nameščena, ta akcija ni zagotovljena.', - unsupportedContent2: 'Kliknite za preklop različice.', - params: 'RAZLOGOVANJE KONFIGURACIJA', - auto: 'Samodejno', - title: 'Dodaj orodje', - settings: 'UPORABNIŠKE NASTAVITVE', - descriptionLabel: 'Opis orodja', - uninstalledLink: 'Upravljanje v vtičnikih', - unsupportedTitle: 'Nepodprta akcija', - placeholder: 'Izberite orodje...', - uninstalledTitle: 'Orodje ni nameščeno', - uninstalledContent: 'Ta vtičnik je nameščen iz lokalnega/GitHub repozitorija. Uporabite ga prosim po namestitvi.', - toolLabel: 'Orodje', - descriptionPlaceholder: 'Kratek opis namena orodja, npr. pridobitev temperature za določeno lokacijo.', - empty: 'Kliknite gumb \' \' za dodajanje orodij. Dodate lahko več orodij.', - paramsTip1: 'Nadzoruje parametre sklepanja LLM.', - paramsTip2: 'Ko je \'Avtomatsko\' izklopljeno, se uporablja privzeta vrednost.', - toolSetting: 'Nastavitve orodja', - unsupportedMCPTool: 'Trenutno izbrana različica vtičnika strategije agenta ne podpira orodij MCP.', - }, - endpointDisableContent: 'Ali želite onemogočiti {{name}}?', - serviceOk: 'Storitve so v redu', - endpointDeleteTip: 'Odstrani končno točko', - actionNum: '{{num}} {{action}} VKLJUČENO', - endpointDeleteContent: 'Ali želite odstraniti {{name}}?', - configureApp: 'Konfiguriraj aplikacijo', - endpointsDocLink: 'Oglejte si dokument', - endpointModalTitle: 'Nastavi končno točko', - disabled: 'Onemogočeno', - configureTool: 'Konfigurirajte orodje', - switchVersion: 'Preklopna različica', - strategyNum: '{{num}} {{strategy}} VKLJUČENO', - endpoints: 'Končne točke', - configureModel: 'Konfiguriraj model', - modelNum: '{{num}} VZORCI VKLJUČENI', - endpointDisableTip: 'Onemogoči končno točko', - endpointsTip: 'Ta vtičnik zagotavlja specifične funkcionalnosti preko končnih točk, prav tako pa lahko konfigurirate več nizov končnih točk za trenutno delovno okolje.', - endpointModalDesc: 'Ko je konfiguriran, se lahko uporabljajo funkcije, ki jih vtičnik zagotavlja prek API končnih točk.', - endpointsEmpty: 'Kliknite gumb \' \' za dodajanje končne točke', - deprecation: { - reason: { - businessAdjustments: 'poslovne prilagoditve', - noMaintainer: 'brez vzdrževalca', - ownershipTransferred: 'lastništvo preneseno', - }, - onlyReason: 'Ta vtičnik je bil opuščen zaradi {{deprecatedReason}} in ne bo več posodobljen.', - noReason: 'Ta vtičnik je bil ukinjen in ne bo več posodabljan.', - fullMessage: 'Ta vtičnik je bil ukinjen zaradi {{deprecatedReason}}, in ne bo več posodobljen. Namesto tega uporabite {{-alternativePluginId}}.', - }, - }, - debugInfo: { - viewDocs: 'Oglejte si dokumente', - title: 'Odpravljanje napak', - }, - privilege: { - whoCanInstall: 'Kdo lahko namesti in upravlja vtičnike?', - title: 'Nastavitve vtičnika', - admins: 'Administratori', - whoCanDebug: 'Kdo lahko odpravi napake v vtičnikih?', - everyone: 'Vsi', - noone: 'Nihče', - }, - pluginInfoModal: { - title: 'Informacije o vtičniku', - packageName: 'Paket', - release: 'Izdati', - repository: 'Shramba', - }, - action: { - usedInApps: 'Ta vtičnik se uporablja v {{num}} aplikacijah.', - checkForUpdates: 'Preverite posodobitve', - deleteContentLeft: 'Ali želite odstraniti', - deleteContentRight: 'vtičnik?', - delete: 'Odstrani vtičnik', - pluginInfo: 'Informacije o vtičniku', - }, - installModal: { - labels: { - repository: 'Shramba', - version: 'Različica', - package: 'Paket', - }, - installFailed: 'Namestitev ni uspela', - installing: 'Nameščanje...', - installedSuccessfully: 'Namestitev uspešna', - uploadFailed: 'Nalaganje ni uspelo', - pluginLoadErrorDesc: 'Ta vtičnik ne bo nameščen', - readyToInstallPackages: 'Prihajamo do namestitve naslednjih {{num}} dodatkov', - cancel: 'Prekliči', - fromTrustSource: 'Prosimo, poskrbite, da namestite le vtičnike iz zaupanja vrednega vira.', - installedSuccessfullyDesc: 'Vtičnik je bil uspešno nameščen.', - readyToInstallPackage: 'Namestitev naslednjega vtičnika', - installComplete: 'Namestitev končana', - installFailedDesc: 'Namestitev vtičnika je bila neuspešna.', - close: 'Zapri', - uploadingPackage: 'Nalagam {{packageName}}...', - readyToInstall: 'Namestitev naslednjega vtičnika', - dropPluginToInstall: 'Tukaj spustite paket vtičnika, da ga namestite', - next: 'Naprej', - back: 'Nazaj', - install: 'Namestite', - pluginLoadError: 'Napaka pri nalaganju vtičnika', - installPlugin: 'Namestite vtičnik', - installWarning: 'Ta vtičnik ni dovoljen za namestitev.', - }, - installFromGitHub: { - updatePlugin: 'Posodobite vtičnik iz GitHuba', - gitHubRepo: 'GitHub repozitorij', - installFailed: 'Namestitev ni uspela', - installPlugin: 'Namestite vtičnik iz GitHuba', - selectVersionPlaceholder: 'Prosim, izberite različico', - selectPackagePlaceholder: 'Prosim, izberite paket', - selectPackage: 'Izberite paket', - uploadFailed: 'Nalaganje ni uspelo', - selectVersion: 'Izberite različico', - installedSuccessfully: 'Namestitev uspešna', - installNote: 'Prosim, prepričajte se, da namestite vtičnike samo iz zaupanja vrednega vira.', - }, - upgrade: { - close: 'Zapri', - description: 'Namestitev naslednjega vtičnika', - upgrading: 'Nameščanje...', - successfulTitle: 'Namestitev uspešna', - upgrade: 'Namestite', - usedInApps: 'Uporablja se v {{num}} aplikacijah', - title: 'Namestite vtičnik', - }, - error: { - noReleasesFound: 'Ni najdenih izdaj. Prosimo preverite GitHub repozitorij ali vhodni URL.', - fetchReleasesError: 'Ne morem pridobiti izdaj. Prosim, poskusite znova pozneje.', - inValidGitHubUrl: 'Neveljavna GitHub povezava. Vnesite veljavno povezavo v formatu: https://github.com/lastnik/repo', - }, - marketplace: { - sortOption: { - mostPopular: 'Najbolj priljubljeno', - firstReleased: 'Prvič izdan', - recentlyUpdated: 'Nedavno posodobljeno', - newlyReleased: 'Nedavno izdano', - }, - and: 'in', - pluginsResult: '{{num}} rezultati', - sortBy: 'Razvrsti po', - verifiedTip: 'Verificirano s strani Dify', - discover: 'Odkrijte', - partnerTip: 'Potrjeno s strani partnerja Dify', - empower: 'Okrepite svoj razvoj AI', - noPluginFound: 'Nobenega vtičnika ni bilo najti.', - viewMore: 'Oglejte si več', - moreFrom: 'Več iz tržnice', - difyMarketplace: 'Dify Marketplace', - }, - task: { - installing: 'Namestitev {{installingLength}} vtičnikov, 0 končanih.', - clearAll: 'Počisti vse', - installError: '{{errorLength}} vtičnikov ni uspelo namestiti, kliknite za ogled', - installingWithSuccess: 'Namestitev {{installingLength}} dodatkov, {{successLength}} uspešnih.', - installedError: '{{errorLength}} vtičnikov ni uspelo namestiti', - installingWithError: 'Namestitev {{installingLength}} vtičnikov, {{successLength}} uspešnih, {{errorLength}} neuspešnih', - installSuccess: '{{successLength}} plugins installed successfully', - installed: 'Installed', - runningPlugins: 'Installing Plugins', - successPlugins: 'Successfully Installed Plugins', - errorPlugins: 'Failed to Install Plugins', - }, - endpointsEnabled: '{{num}} nizov končnih točk omogočenih', - search: 'Iskanje', - searchInMarketplace: 'Iskanje na trgu', - searchPlugins: 'Išči vtičnike', - fromMarketplace: 'Iz tržnice', - searchTools: 'Iskalna orodja...', - installPlugin: 'Namestite vtičnik', - from: 'Iz', - installFrom: 'NAMESTITE IZ', - searchCategories: 'Išči kategorije', - installAction: 'Namestite', - findMoreInMarketplace: 'Poiščite več v Tržnici', - install: '{{num}} namestitev', - allCategories: 'Vse kategorije', - difyVersionNotCompatible: 'Trenutna različica Dify ni združljiva s to vtičnico, prosimo, posodobite na minimalno zahtevano različico: {{minimalDifyVersion}}', - requestAPlugin: 'Zahtevajte vtičnik', - publishPlugins: 'Objavljanje vtičnikov', - auth: { - authorizationName: 'Ime pooblastila', - workspaceDefault: 'Privzeti delovni prostor', - custom: 'Po meri', - setDefault: 'Nastavi kot privzeto', - default: 'Privzeto', - addApi: 'Dodajte API ključ', - addOAuth: 'Dodaj OAuth', - useApi: 'Uporabite ključ API', - useOAuthAuth: 'Uporabite OAuth avtentikacijo', - saveAndAuth: 'Shrani in pooblasti', - authorizations: 'Avtorizacije', - setupOAuth: 'Nastavite OAuth odjemalca', - saveOnly: 'Shrani samo', - useOAuth: 'Uporabite OAuth', - authRemoved: 'Avtor odstranjen', - authorization: 'Avtorizacija', - oauthClient: 'OAuth odjemalec', - useApiAuth: 'Konfiguracija avtorizacije ključev API', - oauthClientSettings: 'Nastavitve odjemalca OAuth', - clientInfo: 'Ker za tega ponudnika orodij niso bili najdeni klientski skrivnosti sistema, je potrebna ročna nastavitev, za redirect_uri prosimo uporabite', - useApiAuthDesc: 'Po konfiguraciji poverilnic lahko vsi člani v delovnem prostoru uporabljajo to orodje pri orkestraciji aplikacij.', - unavailable: 'Nedostopno', - customCredentialUnavailable: 'Trenutno niso na voljo prilagojene prijave.', - credentialUnavailable: 'Trenutno niso na voljo poverilnice. Prosimo, kontaktirajte administratorja.', - credentialUnavailableInButton: 'Pogodba ni na voljo', - connectedWorkspace: 'Povezani delovni prostor', - emptyAuth: 'Prosimo, konfigurirajte preverjanje pristnosti', - }, - deprecated: 'Zastaran', - autoUpdate: { - strategy: { - disabled: { - name: 'Onemogočeno', - description: 'Vtičniki se ne bodo samodejno posodobili', - }, - fixOnly: { - name: 'Popravi samo', - selectedDescription: 'Samodejno posodabljanje samo za različice popravkov', - description: 'Samodejno posodabljanje samo za različice popravkov (npr. 1.0.1 → 1.0.2). Spremembe manjših različic ne bodo povzročile posodobitev.', - }, - latest: { - selectedDescription: 'Vedno posodobite na najnovejšo različico', - name: 'Najnovejši', - description: 'Vedno posodobite na najnovejšo različico', - }, - }, - upgradeMode: { - partial: 'Samo izbrano', - exclude: 'Izključi izbrano', - all: 'Posodobi vse', - }, - upgradeModePlaceholder: { - exclude: 'Izbrani vtičniki se ne bodo samodejno posodabljali.', - partial: 'Samo izbrani vtičniki se bodo samodejno posodabljali. Trenutno ni izbranih nobenih vtičnikov, zato se nobeni vtičniki ne bodo samodejno posodobili.', - }, - operation: { - select: 'Izberi vtičnike', - clearAll: 'Počisti vse', - }, - pluginDowngradeWarning: { - downgrade: 'Kljub temu narediti nižjo različico', - exclude: 'Izključi iz samodejnega posodabljanja', - title: 'Zmanjšanje različice vtičnika', - description: 'Samodejno posodabljanje je trenutno omogočeno za ta vtičnik. Zmanjšanje različice lahko povzroči, da bodo vaše spremembe prepisane med naslednjim samodejnim posodabljanjem.', - }, - noPluginPlaceholder: { - noFound: 'Nobeni vtičniki niso bili najdeni', - noInstalled: 'Nobenih vtičnikov ni nameščenih', - }, - updateTimeTitle: 'Čas posodobitve', - specifyPluginsToUpdate: 'Določite vtičnike za posodobitev', - updateTime: 'Čas posodobitve', - nextUpdateTime: 'Naslednje samodejno posodabljanje: {{time}}', - automaticUpdates: 'Samodejna posodobitev', - excludeUpdate: 'Naslednjih {{num}} razširitev ne bo samodejno posodobljenih', - changeTimezone: 'Za spremembo časovnega pasu pojdite v Nastavitve', - partialUPdate: 'Samo naslednjih {{num}} vtičnikov se bo samodejno posodabljalo.', - updateSettings: 'Posodobi nastavitve', - }, - readmeInfo: { - title: 'PREBERIME', - needHelpCheckReadme: 'Potrebujete pomoč? Preverite README.', - noReadmeAvailable: 'README ni na voljo', - failedToFetch: 'Neuspešno pridobivanje datoteke README', - }, -} - -export default translation diff --git a/web/i18n/sl-SI/register.json b/web/i18n/sl-SI/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/sl-SI/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/sl-SI/register.ts b/web/i18n/sl-SI/register.ts deleted file mode 100644 index 928649474b..0000000000 --- a/web/i18n/sl-SI/register.ts +++ /dev/null @@ -1,4 +0,0 @@ -const translation = { -} - -export default translation diff --git a/web/i18n/sl-SI/run-log.json b/web/i18n/sl-SI/run-log.json new file mode 100644 index 0000000000..4787227c9f --- /dev/null +++ b/web/i18n/sl-SI/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "VNOS", + "result": "REZULTAT", + "detail": "PODROBNOSTI", + "tracing": "SLEDENJE", + "resultPanel": { + "status": "STATUS", + "time": "PRETEČENI ČAS", + "tokens": "SKUPNI ŽETONI" + }, + "meta": { + "title": "METAPODATKI", + "status": "Status", + "version": "Različica", + "executor": "Izvajalec", + "startTime": "Čas začetka", + "time": "Pretečeni čas", + "tokens": "Skupni žetoni", + "steps": "Koraki izvajanja" + }, + "resultEmpty": { + "title": "Ta zagon je izpisal samo format JSON,", + "tipLeft": "prosimo, pojdite na ", + "link": "panel podrobnosti", + "tipRight": " za ogled." + }, + "actionLogs": "Dnevniki dejanj", + "circularInvocationTip": "V trenutnem poteku dela obstaja krožno sklicevanje orodij / vozlišč." +} diff --git a/web/i18n/sl-SI/run-log.ts b/web/i18n/sl-SI/run-log.ts deleted file mode 100644 index c0ae92f1df..0000000000 --- a/web/i18n/sl-SI/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -const translation = { - input: 'VNOS', - result: 'REZULTAT', - detail: 'PODROBNOSTI', - tracing: 'SLEDENJE', - resultPanel: { - status: 'STATUS', - time: 'PRETEČENI ČAS', - tokens: 'SKUPNI ŽETONI', - }, - meta: { - title: 'METAPODATKI', - status: 'Status', - version: 'Različica', - executor: 'Izvajalec', - startTime: 'Čas začetka', - time: 'Pretečeni čas', - tokens: 'Skupni žetoni', - steps: 'Koraki izvajanja', - }, - resultEmpty: { - title: 'Ta zagon je izpisal samo format JSON,', - tipLeft: 'prosimo, pojdite na ', - link: 'panel podrobnosti', - tipRight: ' za ogled.', - }, - actionLogs: 'Dnevniki dejanj', - circularInvocationTip: 'V trenutnem poteku dela obstaja krožno sklicevanje orodij / vozlišč.', -} - -export default translation diff --git a/web/i18n/sl-SI/share.json b/web/i18n/sl-SI/share.json new file mode 100644 index 0000000000..79e4df415a --- /dev/null +++ b/web/i18n/sl-SI/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "", + "appUnavailable": "Aplikacija ni na voljo", + "appUnknownError": "Aplikacija ni na voljo" + }, + "chat": { + "newChat": "Nov klepet", + "pinnedTitle": "Pripeto", + "unpinnedTitle": "Klepeti", + "newChatDefaultName": "Nova konverzacija", + "resetChat": "Ponastavi konverzacijo", + "poweredBy": "Poganja", + "prompt": "Poziv", + "privatePromptConfigTitle": "Nastavitve konverzacije", + "publicPromptConfigTitle": "Začetni poziv", + "configStatusDes": "Pred začetkom lahko spremenite nastavitve konverzacije", + "configDisabled": "Nastavitve prejšnje seje so uporabljene za to sejo.", + "startChat": "Začni klepet", + "privacyPolicyLeft": "Prosimo, preberite ", + "privacyPolicyMiddle": "politiko zasebnosti", + "privacyPolicyRight": " ponudnika aplikacije.", + "deleteConversation": { + "title": "Izbriši konverzacijo", + "content": "Ali ste prepričani, da želite izbrisati to konverzacijo?" + }, + "tryToSolve": "Poskusite rešiti", + "temporarySystemIssue": "Oprostite, začasna težava s sistemom.", + "expand": "Razširi", + "collapse": "Skrči", + "newChatTip": "Že v novem klepetu", + "viewChatSettings": "Ogled nastavitve klepeta", + "chatSettingsTitle": "Nova nastavitev klepeta", + "chatFormTip": "Nastavitve klepeta ni mogoče spremeniti po začetku klepeta." + }, + "generation": { + "tabs": { + "create": "Zaženi enkrat", + "batch": "Zaženi serijo", + "saved": "Shranjeno" + }, + "savedNoData": { + "title": "Še niste shranili rezultata!", + "description": "Začnite z ustvarjanjem vsebine in tukaj najdite svoje shranjene rezultate.", + "startCreateContent": "Začnite z ustvarjanjem vsebine" + }, + "title": "AI Zaključek", + "queryTitle": "Vsebina poizvedbe", + "completionResult": "Rezultat zaključka", + "queryPlaceholder": "Vnesite vsebino poizvedbe...", + "run": "Izvedi", + "copy": "Kopiraj", + "resultTitle": "AI Zaključek", + "noData": "AI vam bo tukaj zagotovil, kar želite.", + "csvUploadTitle": "Povlecite in spustite svojo CSV datoteko tukaj, ali ", + "browse": "brskajte", + "csvStructureTitle": "CSV datoteka mora ustrezati naslednji strukturi:", + "downloadTemplate": "Prenesite predlogo tukaj", + "field": "Polje", + "batchFailed": { + "info": "{{num}} neuspelih izvedb", + "retry": "Poskusite znova", + "outputPlaceholder": "Brez izhodne vsebine" + }, + "errorMsg": { + "empty": "Prosimo, vnesite vsebino v naloženo datoteko.", + "fileStructNotMatch": "Naložena CSV datoteka ne ustreza strukturi.", + "emptyLine": "Vrstica {{rowIndex}} je prazna", + "invalidLine": "Vrstica {{rowIndex}}: vrednost {{varName}} ne sme biti prazna", + "moreThanMaxLengthLine": "Vrstica {{rowIndex}}: vrednost {{varName}} ne sme biti daljša od {{maxLength}} znakov", + "atLeastOne": "Prosimo, vnesite vsaj eno vrstico v naloženo datoteko." + }, + "execution": "Zagon", + "executions": "{{num}} zagonov", + "stopRun": "Ustavi izvajanje" + }, + "login": { + "backToHome": "Nazaj na začetno stran" + } +} diff --git a/web/i18n/sl-SI/share.ts b/web/i18n/sl-SI/share.ts deleted file mode 100644 index 4b84d7dcee..0000000000 --- a/web/i18n/sl-SI/share.ts +++ /dev/null @@ -1,83 +0,0 @@ -const translation = { - common: { - welcome: '', - appUnavailable: 'Aplikacija ni na voljo', - appUnknownError: 'Aplikacija ni na voljo', - }, - chat: { - newChat: 'Nov klepet', - pinnedTitle: 'Pripeto', - unpinnedTitle: 'Klepeti', - newChatDefaultName: 'Nova konverzacija', - resetChat: 'Ponastavi konverzacijo', - poweredBy: 'Poganja', - prompt: 'Poziv', - privatePromptConfigTitle: 'Nastavitve konverzacije', - publicPromptConfigTitle: 'Začetni poziv', - configStatusDes: 'Pred začetkom lahko spremenite nastavitve konverzacije', - configDisabled: - 'Nastavitve prejšnje seje so uporabljene za to sejo.', - startChat: 'Začni klepet', - privacyPolicyLeft: 'Prosimo, preberite ', - privacyPolicyMiddle: 'politiko zasebnosti', - privacyPolicyRight: ' ponudnika aplikacije.', - deleteConversation: { - title: 'Izbriši konverzacijo', - content: 'Ali ste prepričani, da želite izbrisati to konverzacijo?', - }, - tryToSolve: 'Poskusite rešiti', - temporarySystemIssue: 'Oprostite, začasna težava s sistemom.', - expand: 'Razširi', - collapse: 'Skrči', - newChatTip: 'Že v novem klepetu', - viewChatSettings: 'Ogled nastavitve klepeta', - chatSettingsTitle: 'Nova nastavitev klepeta', - chatFormTip: 'Nastavitve klepeta ni mogoče spremeniti po začetku klepeta.', - }, - generation: { - tabs: { - create: 'Zaženi enkrat', - batch: 'Zaženi serijo', - saved: 'Shranjeno', - }, - savedNoData: { - title: 'Še niste shranili rezultata!', - description: 'Začnite z ustvarjanjem vsebine in tukaj najdite svoje shranjene rezultate.', - startCreateContent: 'Začnite z ustvarjanjem vsebine', - }, - title: 'AI Zaključek', - queryTitle: 'Vsebina poizvedbe', - completionResult: 'Rezultat zaključka', - queryPlaceholder: 'Vnesite vsebino poizvedbe...', - run: 'Izvedi', - copy: 'Kopiraj', - resultTitle: 'AI Zaključek', - noData: 'AI vam bo tukaj zagotovil, kar želite.', - csvUploadTitle: 'Povlecite in spustite svojo CSV datoteko tukaj, ali ', - browse: 'brskajte', - csvStructureTitle: 'CSV datoteka mora ustrezati naslednji strukturi:', - downloadTemplate: 'Prenesite predlogo tukaj', - field: 'Polje', - batchFailed: { - info: '{{num}} neuspelih izvedb', - retry: 'Poskusite znova', - outputPlaceholder: 'Brez izhodne vsebine', - }, - errorMsg: { - empty: 'Prosimo, vnesite vsebino v naloženo datoteko.', - fileStructNotMatch: 'Naložena CSV datoteka ne ustreza strukturi.', - emptyLine: 'Vrstica {{rowIndex}} je prazna', - invalidLine: 'Vrstica {{rowIndex}}: vrednost {{varName}} ne sme biti prazna', - moreThanMaxLengthLine: 'Vrstica {{rowIndex}}: vrednost {{varName}} ne sme biti daljša od {{maxLength}} znakov', - atLeastOne: 'Prosimo, vnesite vsaj eno vrstico v naloženo datoteko.', - }, - execution: 'Zagon', - executions: '{{num}} zagonov', - stopRun: 'Ustavi izvajanje', - }, - login: { - backToHome: 'Nazaj na začetno stran', - }, -} - -export default translation diff --git a/web/i18n/sl-SI/time.json b/web/i18n/sl-SI/time.json new file mode 100644 index 0000000000..9b7b539a5c --- /dev/null +++ b/web/i18n/sl-SI/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Thu": "Četrtek", + "Fri": "Petek", + "Tue": "Torek", + "Sun": "Sonce", + "Wed": "Sreda", + "Mon": "Mon", + "Sat": "Satelit" + }, + "months": { + "February": "Februar", + "April": "April", + "October": "oktober", + "May": "Maj", + "December": "December", + "September": "September", + "January": "Januar", + "July": "Julij", + "March": "Marec", + "June": "Junij", + "November": "November", + "August": "Avgust" + }, + "operation": { + "cancel": "Prekliči", + "now": "Zdaj", + "pickDate": "Izberi datum", + "ok": "V redu" + }, + "title": { + "pickTime": "Izberi čas" + }, + "defaultPlaceholder": "Izberi čas...", + "dateFormats": { + "display": "MMMM D, YYYY", + "input": "YYYY-MM-DD", + "output": "YYYY-MM-DD", + "outputWithTime": "YYYY-MM-DDTHH:mm:ss.SSSZ", + "displayWithTime": "MMMM D, YYYY hh:mm A" + } +} diff --git a/web/i18n/sl-SI/time.ts b/web/i18n/sl-SI/time.ts deleted file mode 100644 index 6e2e93357e..0000000000 --- a/web/i18n/sl-SI/time.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - daysInWeek: { - Thu: 'Četrtek', - Fri: 'Petek', - Tue: 'Torek', - Sun: 'Sonce', - Wed: 'Sreda', - Mon: 'Mon', - Sat: 'Satelit', - }, - months: { - February: 'Februar', - April: 'April', - October: 'oktober', - May: 'Maj', - December: 'December', - September: 'September', - January: 'Januar', - July: 'Julij', - March: 'Marec', - June: 'Junij', - November: 'November', - August: 'Avgust', - }, - operation: { - cancel: 'Prekliči', - now: 'Zdaj', - pickDate: 'Izberi datum', - ok: 'V redu', - }, - title: { - pickTime: 'Izberi čas', - }, - defaultPlaceholder: 'Izberi čas...', - dateFormats: { - display: 'MMMM D, YYYY', - input: 'YYYY-MM-DD', - output: 'YYYY-MM-DD', - outputWithTime: 'YYYY-MM-DDTHH:mm:ss.SSSZ', - displayWithTime: 'MMMM D, YYYY hh:mm A', - }, -} - -export default translation diff --git a/web/i18n/sl-SI/tools.json b/web/i18n/sl-SI/tools.json new file mode 100644 index 0000000000..f97586850e --- /dev/null +++ b/web/i18n/sl-SI/tools.json @@ -0,0 +1,262 @@ +{ + "title": "Orodja", + "createCustomTool": "Ustvari prilagojeno orodje", + "customToolTip": "Izvedite več o prilagojenih orodjih Dify", + "type": { + "builtIn": "Vgrajena", + "custom": "Prilagojena", + "workflow": "Potek dela" + }, + "contribute": { + "line1": "Zanima me ", + "line2": "prispevanje orodij k Dify.", + "viewGuide": "Oglejte si vodič" + }, + "author": "Avtor", + "auth": { + "authorized": "Avtorizirano", + "setup": "Nastavite avtorizacijo za uporabo", + "setupModalTitle": "Nastavi avtorizacijo", + "setupModalTitleDescription": "Po konfiguraciji poverilnic bodo vsi člani znotraj delovnega prostora lahko uporabljali to orodje pri orkestraciji aplikacij." + }, + "includeToolNum": "Vključeno {{num}} orodij", + "addToolModal": { + "type": "tip", + "category": "kategorija", + "added": "dodano", + "custom": { + "title": "Žiadne prispôsobené nástroje nie sú k dispozícii", + "tip": "Vytvorte prispôsobený nástroj" + }, + "workflow": { + "title": "Žiadny nástroj pracovného postupu nie je k dispozícii", + "tip": "Publikujte pracovné postupy ako nástroje v Studio" + }, + "mcp": { + "title": "Žiadny nástroj MCP nie je k dispozícii", + "tip": "Pridajte server MCP" + }, + "agent": { + "title": "Žiadna stratégia agenta nie je k dispozícii" + } + }, + "createTool": { + "title": "Ustvari prilagojeno orodje", + "editAction": "Konfiguriraj", + "editTitle": "Uredi prilagojeno orodje", + "name": "Ime", + "toolNamePlaceHolder": "Vnesite ime orodja", + "nameForToolCall": "Ime za klic orodja", + "nameForToolCallPlaceHolder": "Uporablja se za strojno prepoznavo, na primer getCurrentWeather, list_pets", + "nameForToolCallTip": "Podprte so samo številke, črke in podčrtaji.", + "description": "Opis", + "descriptionPlaceholder": "Kratek opis namena orodja, npr. pridobi temperaturo za določeno lokacijo.", + "schema": "Shema", + "schemaPlaceHolder": "Vnesite svojo OpenAPI shemo tukaj", + "viewSchemaSpec": "Oglejte si OpenAPI-Swagger specifikacijo", + "importFromUrl": "Uvozi iz URL-ja", + "importFromUrlPlaceHolder": "https://...", + "urlError": "Prosimo, vnesite veljaven URL", + "examples": "Primeri", + "exampleOptions": { + "json": "Vreme(JSON)", + "yaml": "Trgovina za domače ljubljenčke(YAML)", + "blankTemplate": "Prazna predloga" + }, + "availableTools": { + "title": "Razpoložljiva orodja", + "name": "Ime", + "description": "Opis", + "method": "Metoda", + "path": "Pot", + "action": "Dejanja", + "test": "Testiraj" + }, + "authMethod": { + "title": "Metoda avtorizacije", + "type": "Vrsta avtorizacije", + "keyTooltip": "Ključ HTTP glave, pustite kot \"Authorization\", če ne veste, kaj je to, ali pa nastavite na vrednost po meri", + "types": { + "none": "Brez", + "apiKeyPlaceholder": "Ime HTTP glave za API ključ", + "apiValuePlaceholder": "Vnesite API ključ", + "api_key_query": "Vprašanje Param", + "queryParamPlaceholder": "Ime poizvedbenega parametra za API ključ", + "api_key_header": "Naslov" + }, + "key": "Ključ", + "value": "Vrednost", + "queryParam": "Parametri poizvedbe", + "queryParamTooltip": "Ime poizvedbenega parametra API ključa, ki ga je treba posredovati, npr. \"key\" v \"https://example.com/test?key=API_KEY\"." + }, + "authHeaderPrefix": { + "title": "Vrsta avtorizacije", + "types": { + "basic": "Osnovna", + "bearer": "Imetnik", + "custom": "Prilagojena" + } + }, + "privacyPolicy": "Politika zasebnosti", + "privacyPolicyPlaceholder": "Prosimo, vnesite politiko zasebnosti", + "toolInput": { + "title": "Vnos orodja", + "name": "Ime", + "required": "Obvezno", + "method": "Metoda", + "methodSetting": "Nastavitve", + "methodSettingTip": "Uporabnik izpolni konfiguracijo orodja", + "methodParameter": "Parameter", + "methodParameterTip": "LLM izpolni med sklepanjem", + "label": "Oznake", + "labelPlaceholder": "Izberite oznake (neobvezno)", + "description": "Opis", + "descriptionPlaceholder": "Opis pomena parametra" + }, + "customDisclaimer": "Prilagojeno zavrnitev odgovornosti", + "customDisclaimerPlaceholder": "Prosimo, vnesite prilagojeno zavrnitev odgovornosti", + "confirmTitle": "Potrditi shranjevanje?", + "confirmTip": "Aplikacije, ki uporabljajo to orodje, bodo vplivane", + "deleteToolConfirmTitle": "Izbrisati to orodje?", + "deleteToolConfirmContent": "Brisanje orodja je nepovratno. Uporabniki ne bodo več imeli dostopa do vašega orodja.", + "toolOutput": { + "title": "Izhod orodja", + "name": "Ime", + "reserved": "Rezervirano", + "reservedParameterDuplicateTip": "text, json in datoteke so rezervirane spremenljivke. Spremenljivke s temi imeni se ne smejo pojaviti v izhodni shemi.", + "description": "Opis" + } + }, + "test": { + "title": "Test", + "parametersValue": "Parametri in vrednosti", + "parameters": "Parametri", + "value": "Vrednost", + "testResult": "Rezultati testa", + "testResultPlaceholder": "Rezultati testa bodo prikazani tukaj" + }, + "thought": { + "using": "Uporablja se", + "used": "Uporabljeno", + "requestTitle": "Zahteva za", + "responseTitle": "Odgovor iz" + }, + "setBuiltInTools": { + "info": "Informacije", + "setting": "Nastavitve", + "toolDescription": "Opis orodja", + "parameters": "parametri", + "string": "niz", + "number": "številka", + "required": "Obvezno", + "infoAndSetting": "Informacije in nastavitve", + "file": "datoteka" + }, + "noCustomTool": { + "title": "Ni prilagojenih orodij!", + "content": "Tukaj lahko dodate in upravljate svoja prilagojena orodja za gradnjo AI aplikacij.", + "createTool": "Ustvari orodje" + }, + "noSearchRes": { + "title": "Oprostite, ni rezultatov!", + "content": "Nismo našli nobenih orodij, ki ustrezajo vašemu iskanju.", + "reset": "Ponastavi iskanje" + }, + "builtInPromptTitle": "Poziv", + "toolRemoved": "Orodje odstranjeno", + "notAuthorized": "Orodje ni avtorizirano", + "howToGet": "Kako pridobiti", + "openInStudio": "Odpri v Studiju", + "toolNameUsageTip": "Ime klica orodja za sklepanja in pozivanje agenta", + "copyToolName": "Kopiraj ime", + "noTools": "Orodja niso bila najdena", + "mcp": { + "create": { + "cardTitle": "Dodaj strežnik MCP (HTTP)", + "cardLink": "Več o integraciji strežnika MCP" + }, + "noConfigured": "Nekonfiguriran strežnik", + "updateTime": "Posodobljeno", + "toolsCount": "{count} orodij", + "noTools": "Na voljo ni orodij", + "modal": { + "title": "Dodaj strežnik MCP (HTTP)", + "editTitle": "Uredi strežnik MCP (HTTP)", + "name": "Ime in ikona", + "namePlaceholder": "Poimenuj svoj strežnik MCP", + "serverUrl": "URL strežnika", + "serverUrlPlaceholder": "URL do končne točke strežnika", + "serverUrlWarning": "Posodobitev naslova strežnika lahko prekine aplikacije, ki so odvisne od tega strežnika", + "serverIdentifier": "Identifikator strežnika", + "serverIdentifierTip": "Edinstven identifikator za strežnik MCP v delovnem prostoru. Samo male črke, številke, podčrtaji in vezaji. Največ 24 znakov.", + "serverIdentifierPlaceholder": "Edinstven identifikator, npr. moj-mcp-streznik", + "serverIdentifierWarning": "Strežnik po spremembi ID-ja ne bo prepoznan s strani obstoječih aplikacij", + "cancel": "Prekliči", + "save": "Shrani", + "confirm": "Dodaj in avtoriziraj", + "timeout": "Časovna omejitev", + "sseReadTimeout": "SSE časovna omejitev branja", + "timeoutPlaceholder": "30", + "headers": "Glave", + "headerKeyPlaceholder": "npr., Authorization", + "headerValue": "Vrednost glave", + "headerKey": "Ime glave", + "addHeader": "Dodaj glavo", + "headersTip": "Dodatni HTTP glavi za poslati z zahtevami MCP strežnika", + "headerValuePlaceholder": "npr., Bearer žeton123", + "noHeaders": "Nobena prilagojena glava ni konfigurirana", + "maskedHeadersTip": "Vrednosti glave so zakrite zaradi varnosti. Spremembe bodo posodobile dejanske vrednosti.", + "authentication": "Avtentikacija", + "configurations": "Konfiguracije", + "clientSecret": "Skrivnost odjemalca", + "useDynamicClientRegistration": "Uporabi dinamično registracijo odjemalca", + "clientID": "ID odjemalca", + "clientSecretPlaceholder": "Skrivnost odjemalca", + "redirectUrlWarning": "Prosimo, nastavite URL za preusmeritev OAuth na:" + }, + "delete": "Odstrani strežnik MCP", + "deleteConfirmTitle": "Odstraniti {mcp}?", + "operation": { + "edit": "Uredi", + "remove": "Odstrani" + }, + "authorize": "Avtoriziraj", + "authorizing": "Avtoriziranje...", + "authorizingRequired": "Avtorizacija je zahtevana", + "authorizeTip": "Po avtorizaciji bodo orodja prikazana tukaj.", + "update": "Posodobi", + "updating": "Posodabljanje...", + "gettingTools": "Pridobivanje orodij...", + "updateTools": "Posodabljanje orodij...", + "toolsEmpty": "Orodja niso naložena", + "getTools": "Pridobi orodja", + "toolUpdateConfirmTitle": "Posodobi seznam orodij", + "toolUpdateConfirmContent": "Posodobitev seznama orodij lahko vpliva na obstoječe aplikacije. Želite nadaljevati?", + "toolsNum": "Vključenih {count} orodij", + "onlyTool": "Vključeno 1 orodje", + "identifier": "Identifikator strežnika (Kliknite za kopiranje)", + "server": { + "title": "Strežnik MCP", + "url": "URL strežnika", + "reGen": "Želite ponovno ustvariti URL strežnika?", + "addDescription": "Dodaj opis", + "edit": "Uredi opis", + "modal": { + "addTitle": "Dodajte opis za omogočitev strežnika MCP", + "editTitle": "Uredi opis", + "description": "Opis", + "descriptionPlaceholder": "Pojasnite, kaj to orodje počne in kako naj ga uporablja LLM", + "parameters": "Parametri", + "parametersTip": "Dodajte opise za vsak parameter, da pomagate LLM razumeti njihov namen in omejitve.", + "parametersPlaceholder": "Namen in omejitve parametra", + "confirm": "Omogoči strežnik MCP" + }, + "publishTip": "Aplikacija ni objavljena. Najprej objavite aplikacijo." + }, + "toolItem": { + "parameters": "Parametri", + "noDescription": "Brez opisa" + } + }, + "allTools": "Vsa orodja" +} diff --git a/web/i18n/sl-SI/tools.ts b/web/i18n/sl-SI/tools.ts deleted file mode 100644 index 9b7d803614..0000000000 --- a/web/i18n/sl-SI/tools.ts +++ /dev/null @@ -1,264 +0,0 @@ -const translation = { - title: 'Orodja', - createCustomTool: 'Ustvari prilagojeno orodje', - customToolTip: 'Izvedite več o prilagojenih orodjih Dify', - type: { - builtIn: 'Vgrajena', - custom: 'Prilagojena', - workflow: 'Potek dela', - }, - contribute: { - line1: 'Zanima me ', - line2: 'prispevanje orodij k Dify.', - viewGuide: 'Oglejte si vodič', - }, - author: 'Avtor', - auth: { - authorized: 'Avtorizirano', - setup: 'Nastavite avtorizacijo za uporabo', - setupModalTitle: 'Nastavi avtorizacijo', - setupModalTitleDescription: 'Po konfiguraciji poverilnic bodo vsi člani znotraj delovnega prostora lahko uporabljali to orodje pri orkestraciji aplikacij.', - }, - includeToolNum: 'Vključeno {{num}} orodij', - addToolModal: { - type: 'tip', - category: 'kategorija', - added: 'dodano', - custom: { - title: 'Žiadne prispôsobené nástroje nie sú k dispozícii', - tip: 'Vytvorte prispôsobený nástroj', - }, - workflow: { - title: 'Žiadny nástroj pracovného postupu nie je k dispozícii', - tip: 'Publikujte pracovné postupy ako nástroje v Studio', - }, - mcp: { - title: 'Žiadny nástroj MCP nie je k dispozícii', - tip: 'Pridajte server MCP', - }, - agent: { - title: 'Žiadna stratégia agenta nie je k dispozícii', - }, - }, - createTool: { - title: 'Ustvari prilagojeno orodje', - editAction: 'Konfiguriraj', - editTitle: 'Uredi prilagojeno orodje', - name: 'Ime', - toolNamePlaceHolder: 'Vnesite ime orodja', - nameForToolCall: 'Ime za klic orodja', - nameForToolCallPlaceHolder: 'Uporablja se za strojno prepoznavo, na primer getCurrentWeather, list_pets', - nameForToolCallTip: 'Podprte so samo številke, črke in podčrtaji.', - description: 'Opis', - descriptionPlaceholder: 'Kratek opis namena orodja, npr. pridobi temperaturo za določeno lokacijo.', - schema: 'Shema', - schemaPlaceHolder: 'Vnesite svojo OpenAPI shemo tukaj', - viewSchemaSpec: 'Oglejte si OpenAPI-Swagger specifikacijo', - importFromUrl: 'Uvozi iz URL-ja', - importFromUrlPlaceHolder: 'https://...', - urlError: 'Prosimo, vnesite veljaven URL', - examples: 'Primeri', - exampleOptions: { - json: 'Vreme(JSON)', - yaml: 'Trgovina za domače ljubljenčke(YAML)', - blankTemplate: 'Prazna predloga', - }, - availableTools: { - title: 'Razpoložljiva orodja', - name: 'Ime', - description: 'Opis', - method: 'Metoda', - path: 'Pot', - action: 'Dejanja', - test: 'Testiraj', - }, - authMethod: { - title: 'Metoda avtorizacije', - type: 'Vrsta avtorizacije', - keyTooltip: 'Ključ HTTP glave, pustite kot "Authorization", če ne veste, kaj je to, ali pa nastavite na vrednost po meri', - types: { - none: 'Brez', - apiKeyPlaceholder: 'Ime HTTP glave za API ključ', - apiValuePlaceholder: 'Vnesite API ključ', - api_key_query: 'Vprašanje Param', - queryParamPlaceholder: 'Ime poizvedbenega parametra za API ključ', - api_key_header: 'Naslov', - }, - key: 'Ključ', - value: 'Vrednost', - queryParam: 'Parametri poizvedbe', - queryParamTooltip: 'Ime poizvedbenega parametra API ključa, ki ga je treba posredovati, npr. "key" v "https://example.com/test?key=API_KEY".', - }, - authHeaderPrefix: { - title: 'Vrsta avtorizacije', - types: { - basic: 'Osnovna', - bearer: 'Imetnik', - custom: 'Prilagojena', - }, - }, - privacyPolicy: 'Politika zasebnosti', - privacyPolicyPlaceholder: 'Prosimo, vnesite politiko zasebnosti', - toolInput: { - title: 'Vnos orodja', - name: 'Ime', - required: 'Obvezno', - method: 'Metoda', - methodSetting: 'Nastavitve', - methodSettingTip: 'Uporabnik izpolni konfiguracijo orodja', - methodParameter: 'Parameter', - methodParameterTip: 'LLM izpolni med sklepanjem', - label: 'Oznake', - labelPlaceholder: 'Izberite oznake (neobvezno)', - description: 'Opis', - descriptionPlaceholder: 'Opis pomena parametra', - }, - customDisclaimer: 'Prilagojeno zavrnitev odgovornosti', - customDisclaimerPlaceholder: 'Prosimo, vnesite prilagojeno zavrnitev odgovornosti', - confirmTitle: 'Potrditi shranjevanje?', - confirmTip: 'Aplikacije, ki uporabljajo to orodje, bodo vplivane', - deleteToolConfirmTitle: 'Izbrisati to orodje?', - deleteToolConfirmContent: 'Brisanje orodja je nepovratno. Uporabniki ne bodo več imeli dostopa do vašega orodja.', - toolOutput: { - title: 'Izhod orodja', - name: 'Ime', - reserved: 'Rezervirano', - reservedParameterDuplicateTip: 'text, json in datoteke so rezervirane spremenljivke. Spremenljivke s temi imeni se ne smejo pojaviti v izhodni shemi.', - description: 'Opis', - }, - }, - test: { - title: 'Test', - parametersValue: 'Parametri in vrednosti', - parameters: 'Parametri', - value: 'Vrednost', - testResult: 'Rezultati testa', - testResultPlaceholder: 'Rezultati testa bodo prikazani tukaj', - }, - thought: { - using: 'Uporablja se', - used: 'Uporabljeno', - requestTitle: 'Zahteva za', - responseTitle: 'Odgovor iz', - }, - setBuiltInTools: { - info: 'Informacije', - setting: 'Nastavitve', - toolDescription: 'Opis orodja', - parameters: 'parametri', - string: 'niz', - number: 'številka', - required: 'Obvezno', - infoAndSetting: 'Informacije in nastavitve', - file: 'datoteka', - }, - noCustomTool: { - title: 'Ni prilagojenih orodij!', - content: 'Tukaj lahko dodate in upravljate svoja prilagojena orodja za gradnjo AI aplikacij.', - createTool: 'Ustvari orodje', - }, - noSearchRes: { - title: 'Oprostite, ni rezultatov!', - content: 'Nismo našli nobenih orodij, ki ustrezajo vašemu iskanju.', - reset: 'Ponastavi iskanje', - }, - builtInPromptTitle: 'Poziv', - toolRemoved: 'Orodje odstranjeno', - notAuthorized: 'Orodje ni avtorizirano', - howToGet: 'Kako pridobiti', - openInStudio: 'Odpri v Studiju', - toolNameUsageTip: 'Ime klica orodja za sklepanja in pozivanje agenta', - copyToolName: 'Kopiraj ime', - noTools: 'Orodja niso bila najdena', - mcp: { - create: { - cardTitle: 'Dodaj strežnik MCP (HTTP)', - cardLink: 'Več o integraciji strežnika MCP', - }, - noConfigured: 'Nekonfiguriran strežnik', - updateTime: 'Posodobljeno', - toolsCount: '{count} orodij', - noTools: 'Na voljo ni orodij', - modal: { - title: 'Dodaj strežnik MCP (HTTP)', - editTitle: 'Uredi strežnik MCP (HTTP)', - name: 'Ime in ikona', - namePlaceholder: 'Poimenuj svoj strežnik MCP', - serverUrl: 'URL strežnika', - serverUrlPlaceholder: 'URL do končne točke strežnika', - serverUrlWarning: 'Posodobitev naslova strežnika lahko prekine aplikacije, ki so odvisne od tega strežnika', - serverIdentifier: 'Identifikator strežnika', - serverIdentifierTip: 'Edinstven identifikator za strežnik MCP v delovnem prostoru. Samo male črke, številke, podčrtaji in vezaji. Največ 24 znakov.', - serverIdentifierPlaceholder: 'Edinstven identifikator, npr. moj-mcp-streznik', - serverIdentifierWarning: 'Strežnik po spremembi ID-ja ne bo prepoznan s strani obstoječih aplikacij', - cancel: 'Prekliči', - save: 'Shrani', - confirm: 'Dodaj in avtoriziraj', - timeout: 'Časovna omejitev', - sseReadTimeout: 'SSE časovna omejitev branja', - timeoutPlaceholder: '30', - headers: 'Glave', - headerKeyPlaceholder: 'npr., Authorization', - headerValue: 'Vrednost glave', - headerKey: 'Ime glave', - addHeader: 'Dodaj glavo', - headersTip: 'Dodatni HTTP glavi za poslati z zahtevami MCP strežnika', - headerValuePlaceholder: 'npr., Bearer žeton123', - noHeaders: 'Nobena prilagojena glava ni konfigurirana', - maskedHeadersTip: 'Vrednosti glave so zakrite zaradi varnosti. Spremembe bodo posodobile dejanske vrednosti.', - authentication: 'Avtentikacija', - configurations: 'Konfiguracije', - clientSecret: 'Skrivnost odjemalca', - useDynamicClientRegistration: 'Uporabi dinamično registracijo odjemalca', - clientID: 'ID odjemalca', - clientSecretPlaceholder: 'Skrivnost odjemalca', - redirectUrlWarning: 'Prosimo, nastavite URL za preusmeritev OAuth na:', - }, - delete: 'Odstrani strežnik MCP', - deleteConfirmTitle: 'Odstraniti {mcp}?', - operation: { - edit: 'Uredi', - remove: 'Odstrani', - }, - authorize: 'Avtoriziraj', - authorizing: 'Avtoriziranje...', - authorizingRequired: 'Avtorizacija je zahtevana', - authorizeTip: 'Po avtorizaciji bodo orodja prikazana tukaj.', - update: 'Posodobi', - updating: 'Posodabljanje...', - gettingTools: 'Pridobivanje orodij...', - updateTools: 'Posodabljanje orodij...', - toolsEmpty: 'Orodja niso naložena', - getTools: 'Pridobi orodja', - toolUpdateConfirmTitle: 'Posodobi seznam orodij', - toolUpdateConfirmContent: 'Posodobitev seznama orodij lahko vpliva na obstoječe aplikacije. Želite nadaljevati?', - toolsNum: 'Vključenih {count} orodij', - onlyTool: 'Vključeno 1 orodje', - identifier: 'Identifikator strežnika (Kliknite za kopiranje)', - server: { - title: 'Strežnik MCP', - url: 'URL strežnika', - reGen: 'Želite ponovno ustvariti URL strežnika?', - addDescription: 'Dodaj opis', - edit: 'Uredi opis', - modal: { - addTitle: 'Dodajte opis za omogočitev strežnika MCP', - editTitle: 'Uredi opis', - description: 'Opis', - descriptionPlaceholder: 'Pojasnite, kaj to orodje počne in kako naj ga uporablja LLM', - parameters: 'Parametri', - parametersTip: 'Dodajte opise za vsak parameter, da pomagate LLM razumeti njihov namen in omejitve.', - parametersPlaceholder: 'Namen in omejitve parametra', - confirm: 'Omogoči strežnik MCP', - }, - publishTip: 'Aplikacija ni objavljena. Najprej objavite aplikacijo.', - }, - toolItem: { - parameters: 'Parametri', - noDescription: 'Brez opisa', - }, - }, - allTools: 'Vsa orodja', -} - -export default translation diff --git a/web/i18n/sl-SI/workflow.json b/web/i18n/sl-SI/workflow.json new file mode 100644 index 0000000000..5f6d750008 --- /dev/null +++ b/web/i18n/sl-SI/workflow.json @@ -0,0 +1,1294 @@ +{ + "common": { + "effectVarConfirm": { + "title": "Odstrani spremenljivko", + "content": "Spremenljivka se uporablja v drugih vozliščih. Ali jo še vedno želite odstraniti?" + }, + "parallelTip": { + "click": { + "desc": "dodati", + "title": "Klikni" + }, + "drag": { + "desc": "povezati", + "title": "Povleci" + }, + "depthLimit": "Meja paralelnega gnezdenja plasti {{num}} plasti", + "limit": "Paralelizem je omejen na {{num}} veje." + }, + "versionHistory": "Zgodovina različic", + "published": "Objavljeno", + "run": "Testni tek", + "notRunning": "Še ne teče", + "exportImage": "Izvozi sliko", + "openInExplore": "Odpri v Raziskovanju", + "publishUpdate": "Objavi posodobitev", + "disconnect": "Odklop", + "exportJPEG": "Izvozi kot JPEG", + "exportSVG": "Izvozi kot SVG", + "model": "Model", + "restart": "Znova zaženi", + "running": "Tek", + "undo": "Razveljavi", + "enableJinja": "Omogoči podporo za Jinja predloge", + "publish": "Objavi", + "importSuccess": "Uvoz uspešen", + "workflowAsTool": "Delovni potek kot orodje", + "update": "Posodobitev", + "jumpToNode": "Preskoči na ta vozel", + "publishedAt": "Objavljeno", + "addParallelNode": "Dodaj paralelni vozlišče", + "inPreview": "V predogledu", + "workflowAsToolTip": "Zaradi posodobitve delovnega poteka je potrebna ponovna konfiguracija orodja.", + "variableNamePlaceholder": "Ime spremenljivke", + "needOutputNode": "Dodati je treba izhodiščno vozlišče", + "onFailure": "O neuspehu", + "embedIntoSite": "Vstavite v spletno stran", + "conversationLog": "Pogovor Log", + "accessAPIReference": "Dostop do referenčnega API-ja", + "inPreviewMode": "V načinu predogleda", + "previewPlaceholder": "Vnesite vsebino v spodnje polje, da začnete odpravljati napake v chatbotu", + "input": "Vnos", + "importDSLTip": "Trenutni osnutek bo prepisan. Izvozite delovni postopek kot varnostno kopijo pred uvozom.", + "duplicate": "Podvojiti", + "loadMore": "Naloži več", + "addTitle": "Dodajte naslov...", + "goBackToEdit": "Pojdi nazaj k uredniku", + "needAnswerNode": "Skrivnostni element mora biti dodan.", + "needConnectTip": "Ta korak ni povezan z ničemer.", + "searchVar": "Iskalna spremenljivka", + "branch": "VEJA", + "viewRunHistory": "Poglej zgodovino izvajanja", + "learnMore": "Nauči se več", + "workflowProcess": "Delovni postopek", + "preview": "Predogled", + "output": "Izhod", + "viewDetailInTracingPanel": "Oglejte si podrobnosti", + "debugAndPreview": "Predogled", + "restore": "Obnovi", + "latestPublished": "Najnovejša objavljena", + "importDSL": "Uvozi DSL", + "viewOnly": "Samo za ogled", + "insertVarTip": "Pritisnite tipko '/' za hitro vstavljanje", + "currentDraftUnpublished": "Trenutna osnutek neobjavljeno", + "showRunHistory": "Prikaži zgodovino izvajanja", + "runHistory": "Zgodovina izvajanja", + "fileUploadTip": "Funkcije nalaganja slik so bile nadgrajene na nalaganje datotek.", + "backupCurrentDraft": "Varnostno kopiraj trenutni osnutek", + "overwriteAndImport": "Prepiši in uvozi", + "exportPNG": "Izvozi kot PNG", + "chooseDSL": "Izberi DSL datoteko", + "unpublished": "Nepublikirano", + "pasteHere": "Prilepite tukaj", + "exitVersions": "Izhodne različice", + "editing": "Urejanje", + "addFailureBranch": "Dodaj neuspešno vejo", + "syncingData": "Sinhronizacija podatkov, samo nekaj sekund.", + "noVar": "Brez spremenljivke", + "runApp": "Zaženi aplikacijo", + "ImageUploadLegacyTip": "Zdaj lahko v začetni obliki ustvarite spremenljivke datotečnega tipa. V prihodnje ne bomo več podpirali funkcije nalaganja slik.", + "importWarning": "Opozorilo", + "copy": "Kopirati", + "redo": "Ponovno naredi", + "currentDraft": "Trenutni osnutek", + "manageInTools": "Upravljajte v orodjih", + "parallel": "PARALELNO", + "importWarningDetails": "Razlika v različici DSL lahko vpliva na nekatere funkcije", + "addDescription": "Dodajte opis...", + "maxTreeDepth": "Največje število {{depth}} vozlišč na vejo", + "jinjaEditorPlaceholder": "Vnesite '/' ali '{', da vstavite spremenljivko", + "batchRunApp": "Program za serijsko izvajanje", + "importFailure": "Uvoz ni uspel", + "handMode": "Ročni način", + "processData": "Obdelava podatkov", + "addBlock": "Dodaj vozlišče", + "noHistory": "Brez zgodovine", + "configureRequired": "Konfigurirajte zahteve", + "setVarValuePlaceholder": "Nastavi spremenljivko", + "pointerMode": "Način s kazalcem", + "autoSaved": "Samodejno shranjeno", + "configure": "Konfiguriraj", + "inRunMode": "V načinu izvajanja", + "tagBound": "Število aplikacij, ki uporabljajo to oznako", + "currentView": "Trenutni pogled", + "currentWorkflow": "Trenutni potek dela", + "moreActions": "Več dejanj", + "listening": "Poslušanje", + "chooseStartNodeToRun": "Izberite začetno vozlišče za zagon", + "runAllTriggers": "Zaženi vse sprožilce", + "features": "Značilnosti", + "featuresDescription": "Izboljšajte uporabniško izkušnjo spletne aplikacije", + "featuresDocLink": "Izvedi več", + "needAdd": "Povezava {{node}} mora biti dodana", + "needStartNode": "Dodati je treba vsaj eno začetno vozlišče", + "workflowAsToolDisabledHint": "Objavite najnovejše delovne tokove in zagotovite, da je pred konfiguracijo kot orodje povezan vozel za vnos uporabnika." + }, + "env": { + "modal": { + "value": "Vrednost", + "title": "Dodaj okoljsko spremenljivko", + "name": "Ime", + "valuePlaceholder": "vrednost okolja", + "namePlaceholder": "ime okolja", + "type": "Tip", + "editTitle": "Uredi okoljsko spremenljivko", + "secretTip": "Uporablja se za opredelitev občutljivih informacij ali podatkov, s konfiguriranimi nastavitvami DSL za preprečevanje puščanja.", + "description": "Opis", + "descriptionPlaceholder": "Opisujte spremenljivko" + }, + "export": { + "export": "Izvozi DSL z skrivnimi vrednostmi", + "ignore": "Izvoz DSL", + "checkbox": "Izvozi tajne vrednosti", + "title": "Izvozi skrivne okoljske spremenljivke?" + }, + "envPanelTitle": "Spremenljivke okolja", + "envPanelButton": "Dodaj spremenljivko", + "envDescription": "Okoljske spremenljivke se lahko uporabljajo za shranjevanje zasebnih informacij in poverilnic. So samo za branje in jih je mogoče ločiti od DSL datoteke med izvozem." + }, + "globalVar": { + "title": "Sistemske spremenljivke", + "description": "Sistemske spremenljivke so globalne spremenljivke, do katerih lahko vsako vozlišče dostopa brez povezovanja, če je tip pravilen, na primer ID končnega uporabnika in ID poteka dela.", + "fieldsDescription": { + "conversationId": "ID pogovora", + "dialogCount": "Število pogovorov", + "userId": "ID uporabnika", + "triggerTimestamp": "Časovni žig začetka delovanja aplikacije", + "appId": "ID aplikacije", + "workflowId": "ID poteka dela", + "workflowRunId": "ID izvajanja poteka dela" + } + }, + "chatVariable": { + "modal": { + "namePlaceholder": "Ime spremenljivke", + "title": "Dodaj spremenljivko za pogovor", + "editInJSON": "Uredi v JSON", + "objectKey": "Ključ", + "valuePlaceholder": "Privzeta vrednost, pustite prazno, da je ne nastavite", + "description": "Opis", + "descriptionPlaceholder": "Opisujte spremenljivko", + "type": "Tip", + "value": "Privzeta vrednost", + "name": "Ime", + "arrayValue": "Vrednost", + "editTitle": "Uredi spremenljivko pogovora", + "editInForm": "Uredi v obrazcu", + "addArrayValue": "Dodati vrednost", + "objectType": "Tip", + "oneByOne": "Dodaj eno po eno", + "objectValue": "Privzeta vrednost" + }, + "updatedAt": "Posodobljeno ob", + "docLink": "Obiščite našo dokumentacijo, da se naučite več.", + "panelTitle": "Pogovor Spremenljivke", + "storedContent": "Shranjena vsebina", + "panelDescription": "Spremenljivke pogovora se uporabljajo za shranjevanje interaktivnih informacij, ki se jih LLM mora zapomniti, vključno z zgodovino pogovorov, naloženimi datotekami in uporabnikovimi nastavitvami. So branje-in-pisanje.", + "button": "Dodaj spremenljivko" + }, + "changeHistory": { + "stepBackward_other": "{{count}} korakov nazaj", + "sessionStart": "Začetek seje", + "nodeTitleChange": "Naslov vozlišča je bil spremenjen", + "noteChange": "Opomba spremenjena", + "title": "Zgodovina sprememb", + "noteAdd": "Opomba dodana", + "nodeAdd": "Vozlišče dodano", + "nodeDragStop": "Vozlišče je bilo premaknjeno", + "stepBackward_one": "{{count}} korak nazaj", + "stepForward_other": "{{count}} korakov naprej", + "nodeDelete": "Vozlišče je bilo izbrisano", + "edgeDelete": "Vozlišče je odklopljeno", + "nodeResize": "Vozlišče je spremenjeno velikost", + "hint": "Namig", + "nodeDescriptionChange": "Opis vozlišča je bil spremenjen", + "noteDelete": "Opomba izbrisana", + "currentState": "Trenutno stanje", + "nodeConnect": "Povezana vozlišča", + "nodeChange": "Vozlišče se je spremenilo", + "nodePaste": "Vozlišče prilepljeno", + "clearHistory": "Počisti zgodovino", + "hintText": "Vaša dejanja urejanja so sledena v zgodovini sprememb, ki se hrani na vaši napravi za čas trajanja te seje. Ta zgodovina bo izbrisana, ko zapustite urejevalnik.", + "placeholder": "Še niste spremenili ničesar.", + "stepForward_one": "{{count}} korak naprej" + }, + "errorMsg": { + "fields": { + "variableValue": "Spremenljivka Vrednost", + "model": "Model", + "variable": "Spremenljivka Ime", + "code": "Koda", + "rerankModel": "Konfiguriran model ponovne uvrstitve", + "visionVariable": "Vizijska spremenljivka" + }, + "invalidVariable": "Neveljavna spremenljivka", + "noValidTool": "{{field}} ni izbranega veljavnega orodja", + "toolParameterRequired": "{{field}}: parameter [{{param}}] je obvezen", + "rerankModelRequired": "Zahteva se konfigurirana model ponovnega razvrščanja.", + "authRequired": "Zahtevana je avtorizacija", + "invalidJson": "{{field}} je neveljaven JSON", + "fieldRequired": "{{field}} je obvezno", + "startNodeRequired": "Prosimo, najprej dodajte začetni vozel pred {{operation}}" + }, + "singleRun": { + "iteration": "Iteracija", + "startRun": "Začni zagon", + "loop": "Zanka", + "running": "Tek", + "testRunIteration": "Testiranje ponovitve", + "back": "Nazaj", + "testRun": "Testna vožnja", + "reRun": "Ponovni zagon", + "preparingDataSource": "Priprava vira podatkov" + }, + "tabs": { + "customTool": "Po meri", + "logic": "Logika", + "tools": "Orodja", + "searchBlock": "Išči vozlišče", + "utilities": "Komunalne storitve", + "plugin": "Vtičnik", + "allTool": "Vse", + "searchTool": "Orodje za iskanje", + "workflowTool": "Delovni tok", + "noResult": "Ni bilo najdenih ujemanj", + "transform": "Pretvori", + "blocks": "Vozlišča", + "question-understand": "Vprašanje Razumevanje", + "agent": "Agentska strategija", + "addAll": "Dodaj vse", + "allAdded": "Vse dodano", + "sources": "Virov", + "searchDataSource": "Iskanje vira podatkov", + "start": "Začni", + "searchTrigger": "Iskalni sprožilci...", + "allTriggers": "Vsi sprožilci", + "noPluginsFound": "Ni bilo najdenih nobenih vtičnikov", + "requestToCommunity": "Zahteve skupnosti", + "featuredTools": "Priporočeno", + "showMoreFeatured": "Pokaži več", + "showLessFeatured": "Pokaži manj", + "installed": "Nameščeno", + "pluginByAuthor": "Avtor: {{author}}", + "usePlugin": "Izberi orodje", + "hideActions": "Skrij orodja", + "noFeaturedPlugins": "Odkrijte več orodij na Tržnici", + "noFeaturedTriggers": "Odkrijte več sprožilcev na Tržnici", + "startDisabledTip": "Vozlišče sprožilca in vozlišče vnosa uporabnika se med seboj izključujeta." + }, + "blocks": { + "iteration": "Iteracija", + "if-else": "Če/Drugače", + "llm": "LLM", + "document-extractor": "Ekstraktor dokumentov", + "knowledge-retrieval": "Pridobivanje znanja", + "loop-start": "Začetek zanke", + "assigner": "Dodeljevalec spremenljivk", + "question-classifier": "Razvrščevalec vprašanj", + "start": "Začni", + "loop-end": "Izhod iz zanke", + "http-request": "HTTP zahteva", + "code": "Koda", + "template-transform": "Predloga", + "answer": "Odgovor", + "end": "Izhod", + "iteration-start": "Začetek iteracije", + "list-operator": "Seznam operater", + "variable-aggregator": "Spremenljivka agregator", + "parameter-extractor": "Ekstraktor parametrov", + "loop": "Zanka", + "agent": "Agent", + "variable-assigner": "Spremenljivka agregator", + "datasource": "Vir podatkov", + "knowledge-index": "Baza znanja", + "originalStartNode": "izvorna začetna točka", + "trigger-schedule": "Sprožilec urnika", + "trigger-webhook": "Sprožilec spletnega ključa", + "trigger-plugin": "Sprožilec vtičnika" + }, + "blocksAbout": { + "list-operator": "Uporabljeno za filtriranje ali razvrščanje vsebine polja.", + "template-transform": "Pretvori podatke v niz z uporabo Jinja predloge", + "if-else": "Omogoča vam, da razdelite delovni tok na dve veji na podlagi pogojev if/else.", + "code": "Izvedite kos Python ali NodeJS kode za izvajanje prilagojene logike.", + "iteration": "Izvedite več korakov na seznamu objektov, dokler niso vsi rezultati izpisani.", + "loop-end": "Enakovredno „prekini“. Ta vozlišče nima konfiguracijskih elementov. Ko telo zanke doseže to vozlišče, zanka preneha.", + "document-extractor": "Uporabljeno za razčlenitev prenesenih dokumentov v besedilno vsebino, ki jo je enostavno razumeti za LLM.", + "answer": "Določi vsebino odgovora v pogovoru.", + "end": "Določite izhod in tip rezultata delovnega toka", + "knowledge-retrieval": "Omogoča vam, da poizvedujete o besedilnih vsebinah, povezanih z vprašanji uporabnikov iz znanja.", + "http-request": "Dovoli pošiljanje zahtevkov strežniku prek protokola HTTP", + "llm": "Uporaba velikih jezikovnih modelov za odgovarjanje na vprašanja ali obdelavo naravnega jezika", + "loop": "Izvedite zanko logike, dokler ni izpolnjen pogoj za prekinitev ali dokler ni dosežena največja število ponovitev.", + "question-classifier": "Določite pogoje klasifikacije uporabniških vprašanj, LLM lahko določi, kako se pogovor razvija na podlagi opisa klasifikacije.", + "parameter-extractor": "Uporabite LLM za pridobivanje strukturiranih parametrov iz naravnega jezika za klice orodij ali HTTP zahtev.", + "agent": "Uporaba velikih jezikovnih modelov za odgovarjanje na vprašanja ali obdelavo naravnega jezika", + "start": "Določite začetne parametre za zagon delovnega toka", + "variable-assigner": "Združite večpodružinske spremenljivke v eno samo spremenljivko za enotno konfiguracijo spodnjih vozlišč.", + "variable-aggregator": "Združite večpodružnične spremenljivke v eno samo spremenljivko za enotno konfiguracijo spodnjih vozlišč.", + "assigner": "Vožnji vozlišča za dodelitev spremenljivk se uporablja za dodeljevanje vrednosti spremenljivkam, ki jih je mogoče zapisati (kot so spremenljivke za pogovor).", + "datasource": "Vir podatkov O nas", + "knowledge-index": "Baza znanja O", + "trigger-schedule": "Sprožilec delovnega toka, ki se začne po urniku", + "trigger-webhook": "Sprožilec Webhook prejema HTTP potiske od sistemov tretjih oseb za samodejno sprožitev delovnih tokov.", + "trigger-plugin": "Sprožilec integracije tretje osebe, ki začne delovne tokove iz dogodkov na zunanji platformi" + }, + "operator": { + "zoomOut": "Zoomirati ven", + "zoomToFit": "Povečaj, da se prilega", + "zoomIn": "Zoom in", + "zoomTo50": "Povečaj na 50%", + "zoomTo100": "Povečaj na 100%", + "alignMiddle": "Sredina", + "alignBottom": "Spodaj", + "alignCenter": "Center", + "distributeVertical": "Razporedi navpično", + "alignRight": "Desno", + "alignTop": "Vrh", + "vertical": "Navpičen", + "distributeHorizontal": "Razporedi vodoravno", + "selectionAlignment": "Poravnava izbora", + "alignNodes": "Poravnava vozlišč", + "horizontal": "Vodoraven", + "alignLeft": "Levo" + }, + "variableReference": { + "conversationVars": "pogovorne spremenljivke", + "assignedVarsDescription": "Dodeljene spremenljivke morajo biti spremenljivke, ki jih je mogoče pisati, na primer", + "noAvailableVars": "Ni razpoložljivih spremenljivk.", + "noAssignedVars": "Nobenih dodeljenih spremenljivk ni na voljo.", + "noVarsForOperation": "Za izbrano operacijo ni nobenih spremenljivk, ki bi jih bilo mogoče dodeliti." + }, + "panel": { + "change": "Spremeni", + "about": "O tem", + "userInputField": "Uporabniško vhodno polje", + "nextStep": "Naslednji korak", + "runThisStep": "Izvedi ta korak", + "changeBlock": "Spremeni vozlišče", + "addNextStep": "Dodajte naslednji korak v ta delovni potek", + "checklistTip": "Prepričajte se, da so vse težave rešene, preden objavite.", + "selectNextStep": "Izberi naslednji korak", + "helpLink": "Pomoč", + "checklist": "Kontrolni seznam", + "checklistResolved": "Vse težave so rešene", + "createdBy": "Ustvarjeno z", + "organizeBlocks": "Organizirajte vozlišča", + "minimize": "Izhod iz celotnega zaslona", + "maximize": "Maksimiziraj platno", + "optional": "(neobvezno)", + "scrollToSelectedNode": "Pomaknite se do izbranega vozlišča", + "optional_and_hidden": "(neobvezno in skrito)", + "goTo": "Pojdi na", + "startNode": "Začetni vozel", + "openWorkflow": "Odpri delovni tok" + }, + "nodes": { + "common": { + "memory": { + "user": "Uporabniški predpon", + "assistant": "Pomagalec predpona", + "memory": "Spomin", + "conversationRoleName": "Ime vloge v pogovoru", + "memoryTip": "Nastavitve spomina za klepet", + "windowSize": "Velikost okna" + }, + "memories": { + "tip": "Pomnilnik klepeta", + "title": "Spomini", + "builtIn": "Vgrajeno" + }, + "errorHandle": { + "none": { + "title": "Noben", + "desc": "Vozlišče se bo prenehalo izvajati, če pride do izjeme, ki ni obravnavana." + }, + "defaultValue": { + "output": "Privzeta vrednost izhoda", + "inLog": "Napaka vozlišča, izhod po privzetih vrednostih.", + "title": "Privzeta vrednost", + "desc": "Ko pride do napake, določi statično vsebino izhoda.", + "tip": "Ob napaki bo vrnil spodnjo vrednost." + }, + "failBranch": { + "title": "Napaka veja", + "customize": "Pojdite na platno, da prilagodite logiko veje neuspeha.", + "desc": "Ko pride do napake, se bo izvedla veja izjeme.", + "inLog": "Napaka na vozlišču, samodejno se bo izvedla veja za neuspeh. Izhod vozlišča bo vrnil tip napake in sporočilo o napaki ter ju posredoval naprej.", + "customizeTip": "Ko je aktivirana veja napak, izjeme, ki jih sprožijo vozlišča, ne bodo prekinile procesa. Namesto tega bo samodejno izvedena vnaprej določena veja napak, kar vam omogoča, da prilagodljivo ponudite sporočila o napakah, poročila, popravke ali preskočite dejanja." + }, + "partialSucceeded": { + "tip": "V procesu je {{num}} vozlišč, ki delujejo nenormalno, prosim, pojdite na sledenje, da preverite dnevnike." + }, + "title": "Obvladovanje napak", + "tip": "Strategija ravnanja z izjemo, ki se sproži, ko vozlišče naleti na izjemo." + }, + "retry": { + "retrySuccessful": "Ponovni poskus je bil uspešen", + "retryFailedTimes": "{{times}} poskusi so spodleteli", + "maxRetries": "maksimalno število poskusov", + "ms": "ms", + "retrying": "Ponovno poskušam...", + "times": "časi", + "retry": "Poskusi znova", + "retryFailed": "Ponovi neuspeh", + "retryOnFailure": "poskusi znova v primeru napake", + "retryInterval": "ponovni interval", + "retries": "{{num}} Poskusi", + "retryTimes": "Poskusite {{times}} krat v primeru napake" + }, + "insertVarTip": "Vstavite spremenljivko", + "outputVars": "Izhodne spremenljivke", + "typeSwitch": { + "variable": "Uporabi spremenljivko", + "input": "Vhodna vrednost" + }, + "inputVars": "Vhodne spremenljivke", + "pluginNotInstalled": "Vtičnik ni nameščen" + }, + "start": { + "outputVars": { + "memories": { + "des": "Zgodovina pogovora", + "type": "vrsta sporočila", + "content": "vsebina sporočila" + }, + "files": "Seznam datotek", + "query": "Uporabniški vnos" + }, + "noVarTip": "Nastavite vhodne podatke, ki jih lahko uporabite v delovnem toku.", + "required": "zahtevano", + "builtInVar": "Vgrajene spremenljivke", + "inputField": "Vnosno polje" + }, + "end": { + "output": { + "type": "izhodna vrsta", + "variable": "izhodna spremenljivka" + }, + "type": { + "structured": "Strukturirano", + "none": "Noben", + "plain-text": "Navadno besedilo" + }, + "outputs": "Izhodi" + }, + "answer": { + "outputVars": "Izhodne spremenljivke", + "answer": "Odgovor" + }, + "llm": { + "roleDescription": { + "system": "Dajte visoko raven navodil za pogovor.", + "assistant": "Odgovori modela so zasnovani na uporabnikovih sporočilih.", + "user": "Navedite navodila, poizvedbe ali kakršnokoli besedilne vnose modelu" + }, + "resolution": { + "low": "Nizko", + "high": "Visoko", + "name": "Resolucija" + }, + "outputVars": { + "output": "Ustvari vsebino", + "reasoning_content": "Vsebina razmišljanja", + "usage": "Informacije o uporabi modela" + }, + "singleRun": { + "variable": "Spremenljivka" + }, + "jsonSchema": { + "warningTips": { + "saveSchema": "Prosimo, da dokončate urejanje trenutnega polja, preden shranite shemo." + }, + "generatedResult": "Generiran rezultat", + "instruction": "Navodilo", + "resetDefaults": "Ponastavi", + "promptPlaceholder": "Opiši svoj JSON shemo...", + "generating": "Generiranje JSON sheme...", + "resultTip": "Tukaj je generiran rezultat. Če niste zadovoljni, se lahko vrnete in spremenite svoj poziv.", + "promptTooltip": "Pretvorite besedilni opis v standardizirano strukturo JSON sheme.", + "addField": "Dodaj polje", + "fieldNamePlaceholder": "Ime polja", + "import": "Uvoz iz JSON", + "generationTip": "Lahko uporabite naravni jezik za hitro ustvarjanje JSON sheme.", + "back": "Nazaj", + "descriptionPlaceholder": "Dodajte opis", + "generate": "Generirati", + "doc": "Izvedite več o strukturiranem izhodu", + "title": "Strukturirana izhodna shema", + "required": "zahtevano", + "apply": "Uporabi", + "generateJsonSchema": "Generiraj JSON shemo", + "addChildField": "Dodaj polje za otroka", + "showAdvancedOptions": "Prikaži napredne možnosti", + "stringValidations": "Preverjanje nizov", + "regenerate": "Ponovno generiranje" + }, + "prompt": "ukaz", + "sysQueryInUser": "vprašanje v uporabniškem sporočilu je obvezno", + "notSetContextInPromptTip": "Da omogočite funkcijo konteksta, prosimo izpolnite spremenljivko konteksta v PROMPT.", + "contextTooltip": "Lahko uvažate znanje kot kontekst", + "variables": "spremenljivke", + "files": "Datoteke", + "model": "model", + "context": "kontekst", + "addMessage": "Dodaj sporočilo", + "vision": "vizija", + "reasoningFormat": { + "tagged": "Ohranite oznake za razmišljanje", + "title": "Omogoči ločevanje oznak za razsojanje", + "tooltip": "Izvleći vsebino iz miselnih oznak in jo shraniti v polje reasoning_content.", + "separated": "Ločite oznake za razmišljanje" + } + }, + "knowledgeRetrieval": { + "outputVars": { + "title": "Segmentirana naslov", + "url": "Segmentirana URL", + "icon": "Segmentirana ikona", + "content": "Segmentirana vsebina", + "metadata": "Drug metapodatki", + "output": "Podatki o segmentaciji iskanja", + "files": "Pridobljene datoteke" + }, + "metadata": { + "options": { + "disabled": { + "title": "Onemogočeno", + "subTitle": "Ne omogočanje filtriranja metapodatkov" + }, + "automatic": { + "title": "Samodejno", + "subTitle": "Samodejno ustvarite filtrirne pogoje za metapodatke na podlagi uporabniškega poizvedovanja.", + "desc": "Samodejno ustvarite filtrirne pogoje za metapodatke na podlagi spremenljivke poizvedbe" + }, + "manual": { + "subTitle": "Ročno dodajte pogoje za filtriranje metapodatkov", + "title": "Ročno" + } + }, + "panel": { + "title": "Pogoji za filtriranje metapodatkov", + "conditions": "Pogoji", + "placeholder": "Vnesite vrednost", + "search": "Išči metapodatke", + "select": "Izberi spremenljivko...", + "datePlaceholder": "Izberi čas...", + "add": "Dodaj pogoj" + }, + "title": "Filtriranje metapodatkov", + "tip": "Filtriranje metapodatkov je postopek uporabe metapodatkovnih atributov (kot so oznake, kategorije ali dovoljenja za dostop) za natančnejše določanje in nadzorovanje pridobivanja relevantnih informacij znotraj sistema." + }, + "queryVariable": "Vprašanje spremenljivka", + "knowledge": "Znanje", + "queryText": "Besedilo poizvedbe", + "queryAttachment": "Poizvedbe slik" + }, + "http": { + "outputVars": { + "files": "Seznam datotek", + "body": "Vsebina odziva", + "headers": "Seznam odzivnih glav JSON", + "statusCode": "Statusna koda odgovora" + }, + "authorization": { + "no-auth": "Noben", + "custom": "Po meri", + "header": "Naslov", + "bearer": "Nosilac", + "api-key-title": "API ključ", + "authorization": "Avtorizacija", + "api-key": "API-kljuc", + "basic": "Osnovno", + "auth-type": "Vrsta avtentikacije", + "authorizationType": "Vrsta pooblastila" + }, + "timeout": { + "readLabel": "Časovna omejitev branja", + "title": "Časovna omejitev", + "readPlaceholder": "Vnesite časovne omejitve za branje v sekundah", + "connectPlaceholder": "Vnesite časovne omejitve povezave v sekundah", + "connectLabel": "Čas povezave je potekel", + "writePlaceholder": "Vnesite časovne omejitve za pisanje v sekundah", + "writeLabel": "Časovna omejitev pisanja" + }, + "curl": { + "title": "Uvozi iz cURL", + "placeholder": "Prilepite cURL niz tukaj" + }, + "body": "Telo", + "inputVars": "Vhodne spremenljivke", + "apiPlaceholder": "Vnesite URL, vtipkajte '/' in vstavite spremenljivko.", + "api": "API", + "extractListPlaceholder": "Vnesite indeks seznamske postavke, vnesite '/' za vstavitev spremenljivke", + "key": "Ključ", + "binaryFileVariable": "Dvojiška datoteka spremenljivka", + "notStartWithHttp": "API se mora začeti z http:// ali https://", + "keyValueEdit": "Urejanje ključ-vrednost", + "bulkEdit": "Masovno urejanje", + "type": "Tip", + "headers": "Naslovi", + "value": "Vrednost", + "params": "Parametri", + "insertVarPlaceholder": "vnesite '/' za vstavljanje spremenljivke", + "verifySSL": { + "title": "Preverite SSL certifikat", + "warningTooltip": "Onemogočanje preverjanja SSL ni priporočljivo za proizvodna okolja. To bi se moralo uporabljati le pri razvoju ali testiranju, saj povezavo izpostavi varnostnim grožnjam, kot so napadi človek-v-sredini." + } + }, + "code": { + "searchDependencies": "Išči odvisnosti", + "advancedDependencies": "Napredne odvisnosti", + "outputVars": "Izhodne spremenljivke", + "inputVars": "Vhodne spremenljivke", + "advancedDependenciesTip": "Dodajte nekaj vnaprej naloženih odvisnosti, ki potrebujejo več časa za obdelavo ali niso privzete vgrajene.", + "syncFunctionSignature": "Sinhronizirajte podpis funkcije s kodo" + }, + "templateTransform": { + "outputVars": { + "output": "Transformirana vsebina" + }, + "codeSupportTip": "Podpira samo Jinja2", + "code": "Koda", + "inputVars": "Vhodne spremenljivke" + }, + "ifElse": { + "comparisonOperator": { + "all of": "vse od", + "not in": "ni v", + "in": "v", + "null": "je nič", + "after": "po", + "is": "je", + "not exists": "ne obstaja", + "empty": "je prazno", + "is not": "ni", + "start with": "začeti z", + "not empty": "ni prazen", + "before": "pred", + "end with": "končati z", + "not contains": "ne vsebuje", + "contains": "vsebuje", + "exists": "obstaja", + "not null": "ni ničelno" + }, + "optionName": { + "localUpload": "Lokalno nalaganje", + "video": "Video", + "url": "URL", + "image": "Slika", + "doc": "Dokument", + "audio": "Zvočni zapis" + }, + "addCondition": "Dodaj pogoj", + "selectVariable": "Izberi spremenljivko...", + "or": "ali", + "if": "Če", + "and": "in", + "else": "Drugje", + "notSetVariable": "Prosim, najprej nastavite spremenljivko.", + "enterValue": "Vnesite vrednost", + "elseDescription": "Uporabljeno za opredelitev logike, ki se izvede, ko pogoj if ni izpolnjen.", + "addSubVariable": "Podspremenljivka", + "conditionNotSetup": "Pogoji NISO nastavljeni", + "operator": "Operater", + "select": "Izberite" + }, + "variableAssigner": { + "type": { + "object": "Predmet", + "string": "Niz", + "number": "Število", + "array": "Množica" + }, + "outputVars": { + "varDescribe": "{{groupName}} izhod" + }, + "varNotSet": "Spremenljivka ni nastavljena", + "title": "Dodelite spremenljivke", + "noVarTip": "Dodajte spremenljivke, ki jih je treba dodeliti.", + "aggregationGroup": "Agregacijska skupina", + "outputType": "Vrsta izhoda", + "addGroup": "Dodaj skupino", + "setAssignVariable": "Določite spremenljivko", + "aggregationGroupTip": "Omogočanje te funkcije omogoča agregatorju spremenljivk, da združi več skupin spremenljivk." + }, + "assigner": { + "operations": { + "set": "Nabor", + "append": "Dodaj", + "/=": "/=", + "over-write": "Prepiši", + "*=": "*=", + "remove-first": "Odstrani prvi", + "remove-last": "Odstrani zadnje", + "-=": "-=", + "+=": "+=", + "extend": "Razširi", + "clear": "Jasno", + "overwrite": "Prepiši", + "title": "Operacija" + }, + "clear": "Jasno", + "plus": "Plus", + "noAssignedVars": "Nobenih dodeljenih spremenljivk ni na voljo.", + "variables": "Spremenljivke", + "assignedVariable": "Dodeljena spremenljivka", + "writeMode": "Načrtovanje pisanja", + "setParameter": "Nastavite parameter...", + "writeModeTip": "Način dodajanja: Na voljo samo za spremenljivke tipa tabel.", + "over-write": "Prepiši", + "append": "Dodaj", + "varNotSet": "Spremenljivka NI nastavljena", + "noVarTip": "Kliknite na gumb \" + \" za dodajanje spremenljivk", + "variable": "Spremenljivka", + "assignedVarsDescription": "Dodeljene spremenljivke morajo biti spremenljivke, ki jih je mogoče pisati, kot so spremenljivke za pogovor.", + "setVariable": "Nastavi spremenljivko", + "selectAssignedVariable": "Izberite dodeljeno spremenljivko..." + }, + "tool": { + "outputVars": { + "files": { + "transfer_method": "Metoda prenosa. Vrednost je remote_url ali local_file.", + "title": "orodja ustvarjena datoteke", + "upload_file_id": "Naložite ID datoteke", + "url": "URL slike", + "type": "Vrsta podpore. Zdaj podpiramo samo slike." + }, + "text": "vsebina, ki jo je generiral orodje", + "json": "orodje je ustvarilo json" + }, + "inputVars": "Vhodne spremenljivke", + "authorize": "Pooblasti", + "insertPlaceholder2": "vstavite spremenljivko", + "insertPlaceholder1": "Vnesite ali pritisnite", + "settings": "Nastavitve" + }, + "questionClassifiers": { + "outputVars": { + "className": "Ime razreda", + "usage": "Informacije o uporabi modela" + }, + "instruction": "Navodilo", + "addClass": "Dodaj razred", + "class": "Razred", + "model": "model", + "topicPlaceholder": "Napišite ime svoje teme", + "topicName": "Ime teme", + "instructionTip": "Vnesite dodatna navodila, ki bodo pomagala klasifikatorju vprašanj bolje razumeti, kako kategorizirati vprašanja.", + "inputVars": "Vhodne spremenljivke", + "classNamePlaceholder": "Napiši ime svoje razredi", + "advancedSetting": "Napredno nastavitev", + "instructionPlaceholder": "Napišite svoje navodilo" + }, + "parameterExtractor": { + "addExtractParameterContent": { + "required": "Zahtevano", + "description": "Opis", + "name": "Ime", + "descriptionPlaceholder": "Izvleči opis parametra", + "namePlaceholder": "Izvleči ime parametra", + "type": "Tip", + "typePlaceholder": "Izvleči vrsto parametra", + "requiredContent": "Zahtevano se uporablja le kot referenca za sklepanje modela in ne kot obvezno validacijo izhodnih parametrov." + }, + "extractParameters": "Izvleči parametre", + "instruction": "Navodilo", + "instructionTip": "Vnesite dodatna navodila, da pomagate izvleku parametrov razumeti, kako izvleči parametre.", + "reasoningMode": "Način razmišljanja", + "importFromTool": "Uvoz iz orodij", + "advancedSetting": "Napredno nastavitev", + "addExtractParameter": "Dodaj parameter za ekstrakcijo", + "extractParametersNotSet": "Parameterji za ekstrakcijo niso nastavljeni", + "inputVar": "Vhodna spremenljivka", + "outputVars": { + "isSuccess": "Ali je uspeh. Na uspehu je vrednost 1, na neuspehu je vrednost 0.", + "errorReason": "Razlog za napako", + "usage": "Informacije o uporabi modela" + }, + "reasoningModeTip": "Lahko izberete ustrezen način razmišljanja glede na sposobnost modela, da se odzove na navodila za klic funkcij ali pozive." + }, + "iteration": { + "ErrorMethod": { + "operationTerminated": "Prekinjeno", + "removeAbnormalOutput": "Odstrani nenavadne izhode", + "continueOnError": "Nadaljuj naprej kljub napaki" + }, + "errorResponseMethod": "Metoda odziva napake", + "parallelModeEnableTitle": "Paralelni način vključen", + "output": "Izhodne spremenljivke", + "MaxParallelismTitle": "Maksimalno paralelizem", + "currentIteration": "Trenutna iteracija", + "error_other": "{{count}} Napak", + "comma": ",", + "iteration_one": "{{count}} Iteracija", + "parallelMode": "Paralelni način", + "error_one": "{{count}} Napaka", + "deleteTitle": "Izbriši vozlišče ponovitve?", + "iteration_other": "{{count}} ponovitev", + "input": "Vnos", + "answerNodeWarningDesc": "Opozorilo o paralelnem načinu: Odgovorni vozli, dodelitve spremenljivk v pogovorih in trajne operacije branja/pisanja znotraj iteracij lahko povzročijo izjeme.", + "parallelModeUpper": "PARALELNO MODE", + "MaxParallelismDesc": "Največje paralelizem se uporablja za nadzorovanje števila nalog, ki se izvajajo hkrati v eni iteraciji.", + "deleteDesc": "Izbris iteracijskega vozlišča bo izbrisal vsa otroška vozlišča.", + "parallelModeEnableDesc": "V vzporednem načinu naloge znotraj iteracij podpirajo vzporedno izvajanje. To lahko nastavite v razdelku lastnosti na desni strani.", + "parallelPanelDesc": "V paralelnem načinu naloge v iteraciji podpirajo parallelno izvajanje.", + "flattenOutput": "Izravnaj izhod", + "flattenOutputDesc": "Ko je omogočeno, bodo vsi izhodi posameznih iteracij, če so v obliki tabel, združeni v eno samo tabelo. Ko je onemogočeno, bodo izhodi ohranili strukturo gnezdene tabele." + }, + "loop": { + "ErrorMethod": { + "removeAbnormalOutput": "Odstrani nenavadne izhode", + "operationTerminated": "Prekinjeno", + "continueOnError": "Nadaljuj naprej kljub napaki" + }, + "loop_one": "{{count}} Zanka", + "loop_other": "{{count}} Zavoji", + "input": "Vnos", + "errorResponseMethod": "Metoda odziva napake", + "output": "Izhodna spremenljivka", + "loopMaxCount": "Maksimalno število zank", + "loopVariables": "Zanke Spremenljivke", + "comma": ",", + "currentLoop": "Trenutni obrat", + "currentLoopCount": "Trenutno število zank: {{count}}", + "deleteTitle": "Izbriši vozlišče zanke?", + "loopNode": "Ciklični vozlišče", + "inputMode": "Vnosni način", + "variableName": "Spremenljivka Ime", + "exitConditionTip": "Vozić potrebuje vsaj eno izhodno pogoj.", + "finalLoopVariables": "Končne zanke spremenljivke", + "deleteDesc": "Izbris vozlišča zanke bo odstranil vse otroške vozlišča.", + "breakCondition": "Pogoji za prekinitev zanke", + "error_one": "{{count}} Napaka", + "error_other": "{{count}} Napak", + "setLoopVariables": "Nastavite spremenljivke znotraj obsega zanke", + "totalLoopCount": "Skupno število zank: {{count}}", + "initialLoopVariables": "Začetne spremenljivke zanke", + "breakConditionTip": "Lahko se sklicujete le na spremenljivke znotraj zank z zaključnimi pogoji in pogovorne spremenljivke.", + "loopMaxCountError": "Prosimo, vnesite veljavno največje število ponovitev, ki mora biti med 1 in {{maxCount}}" + }, + "note": { + "editor": { + "bold": "Poudarjeno", + "medium": "Srednje", + "large": "Velik", + "link": "Povezava", + "enterUrl": "Vnesite URL...", + "small": "Majhen", + "bulletList": "Seznam s puščicami", + "unlink": "Odstrani povezavo", + "italic": "Italika", + "placeholder": "Napiši svojo opombo...", + "openLink": "Odprto", + "showAuthor": "Prikaži avtorja", + "strikethrough": "Prečrtano", + "invalidUrl": "Nesprejemljiv URL" + }, + "addNote": "Dodaj opombo" + }, + "docExtractor": { + "outputVars": { + "text": "Izvlečene besedilo" + }, + "supportFileTypes": "Podpora za vrste datotek: {{types}}.", + "learnMore": "Nauči se več", + "inputVar": "Vhodna spremenljivka" + }, + "listFilter": { + "outputVars": { + "first_record": "Prvi zapis", + "last_record": "Zadnji zapis", + "result": "Filtriraj rezultat" + }, + "filterConditionKey": "Ključ pogoja filtra", + "asc": "ASC", + "filterConditionComparisonOperator": "Operator za primerjavo filtrovanja pogojev", + "selectVariableKeyPlaceholder": "Izberi podključ spremenljivke", + "limit": "Najboljši N", + "filterConditionComparisonValue": "Vrednost pogoja filtra", + "desc": "DESC", + "inputVar": "Vhodna spremenljivka", + "orderBy": "Naroči po", + "extractsCondition": "Izvleči N predmet", + "filterCondition": "Filtrirni pogoj" + }, + "agent": { + "strategy": { + "configureTip": "Prosimo, konfigurirajte agentno strategijo.", + "selectTip": "Izberite agencijsko strategijo", + "searchPlaceholder": "Išči agentno strategijo", + "label": "Agentična strategija", + "shortLabel": "Strategija", + "configureTipDesc": "Po nastavitvi agentne strategije bo ta vozlišče samodejno naložilo preostale nastavitve. Strategija bo vplivala na mehanizem večstopenjskega razmišljanja o orodju.", + "tooltip": "Različne agentne strategije določajo, kako sistem načrtuje in izvaja večstopenjske klice orodij." + }, + "pluginInstaller": { + "installing": "Namestitev", + "install": "Namestite" + }, + "modelNotInMarketplace": { + "title": "Model ni nameščen", + "manageInPlugins": "Upravljanje v vtičnikih", + "desc": "Ta model je nameščen iz lokalnega ali GitHub repozitorija. Prosimo, uporabite ga po namestitvi." + }, + "modelNotSupport": { + "title": "Nepodprti model", + "desc": "V različici vtičnika, ki je nameščena, ta model ni na voljo.", + "descForVersionSwitch": "Nameščena različica vtičnika ne podpira tega modela. Kliknite za preklop na drugo različico." + }, + "modelSelectorTooltips": { + "deprecated": "Ta model je zastarelo" + }, + "outputVars": { + "files": { + "type": "Vrsta podpore. Zdaj podpiramo samo slike.", + "upload_file_id": "Naložite ID datoteke", + "title": "datoteke, ki jih je ustvaril agent", + "url": "URL slike", + "transfer_method": "Metoda prenosa. Vrednost je remote_url ali local_file." + }, + "json": "agent generiran json", + "text": "vsebina, ki jo je ustvaril agent", + "usage": "informacije o uporabi modela" + }, + "checkList": { + "strategyNotSelected": "Strategija ni izbrana" + }, + "installPlugin": { + "desc": "Namestitev naslednjega vtičnika", + "title": "Namestite vtičnik", + "changelog": "Zapis sprememb", + "cancel": "Prekliči", + "install": "Namestite" + }, + "toolbox": "delovna orodja", + "configureModel": "Konfiguriraj Model", + "toolNotInstallTooltip": "{{tool}} ni nameščen", + "pluginNotInstalled": "Ta vtičnik ni nameščen", + "strategyNotInstallTooltip": "{{strategy}} ni nameščen", + "modelNotInstallTooltip": "Ta model ni nameščen.", + "model": "model", + "maxIterations": "Maksimalne iteracije", + "notAuthorized": "Nimam dovoljenja", + "modelNotSelected": "Model ni izbran", + "learnMore": "Nauči se več", + "unsupportedStrategy": "Nepodprta strategija", + "pluginNotFoundDesc": "Ta vtičnik je nameščen iz GitHuba. Prosimo, da greste v vtičnike in ga ponovo namestite.", + "tools": "Orodja", + "strategyNotFoundDesc": "V različici vtičnika, ki je nameščena, ta strategija ni zagotovljena.", + "linkToPlugin": "Povezava do vtičnikov", + "strategyNotSet": "Agentična strategija ni nastavljena", + "toolNotAuthorizedTooltip": "{{tool}} Ni pooblaščen", + "strategyNotFoundDescAndSwitchVersion": "Nameščena različica vtičnika ne podpira te strategije. Kliknite za preklop na drugo različico.", + "pluginNotInstalledDesc": "Ta vtičnik je nameščen iz GitHuba. Prosimo, da greste v vtičnike in ga ponovo namestite.", + "parameterSchema": "Parametrska shema", + "clickToViewParameterSchema": "Kliknite za prikaz sheme parametrov" + }, + "dataSource": { + "supportedFileFormats": "Podprte oblike zapisa datotek", + "add": "Dodajanje vira podatkov", + "supportedFileFormatsPlaceholder": "Razširitev datoteke, e.g. doc" + }, + "knowledgeBase": { + "chunkStructureTip": { + "learnMore": "Izvedi več", + "title": "Prosimo, izberite strukturo kosov", + "message": "Baza znanja Dify podpira tri strukture del: Splošno, Staršev-otrok in Vprašanja in odgovori. Vsaka baza znanja ima lahko samo eno strukturo. Izhod iz prejšnjega vozlišča mora biti poravnan z izbrano strukturo kosov. Upoštevajte, da izbira strukture koščkov vpliva na razpoložljive metode indeksa." + }, + "chunkIsRequired": "Potrebna je struktura kosov", + "chooseChunkStructure": "Izbira strukture koščka", + "retrievalSettingIsRequired": "Zahtevana je nastavitev pridobivanja", + "indexMethodIsRequired": "Zahteva se indeksna metoda", + "chunkStructure": "Struktura kosov", + "changeChunkStructure": "Spreminjanje strukture kosov", + "aboutRetrieval": "o metodi iskanja.", + "chunksInput": "Kosi", + "chunksInputTip": "Vhodna spremenljivka vozlišča podatkovne baze je Chunks. Tip spremenljivke je objekt s specifično JSON shemo, ki mora biti skladna z izbrano strukturo kosov.", + "chunksVariableIsRequired": "Spremenljivka Chunks je obvezna", + "embeddingModelIsRequired": "Zahteva se vgrajevalni model", + "rerankingModelIsRequired": "Potreben je model za ponovno razvrščanje", + "rerankingModelIsInvalid": "Model prerazvrščanja ni veljaven", + "embeddingModelIsInvalid": "Vdelovalni model ni veljaven" + }, + "triggerPlugin": { + "authorized": "Pooblaščeno", + "notConfigured": "Ni nastavljeno", + "notAuthorized": "Ni pooblaščeno", + "selectSubscription": "Izberite naročnino", + "availableSubscriptions": "Razpoložljive naročnine", + "addSubscription": "Dodaj novo naročnino", + "removeSubscription": "Odstrani naročnino", + "subscriptionRemoved": "Naročnina je bila uspešno odstranjena", + "error": "Napaka", + "configuration": "Konfiguracija", + "remove": "Odstrani", + "or": "ALI", + "useOAuth": "Uporabi OAuth", + "useApiKey": "Uporabi ključno besedo API", + "authenticationFailed": "Overjanje ni uspelo", + "authenticationSuccess": "Overjanje uspešno", + "oauthConfigFailed": "Konfiguracija OAuth je spodletela", + "configureOAuthClient": "Konfiguriraj OAuth odjemalca", + "oauthClientDescription": "Konfigurirajte poverilnice odjemalca OAuth za omogočanje preverjanja pristnosti", + "oauthClientSaved": "Konfiguracija OAuth odjemalca je bila uspešno shranjena", + "configureApiKey": "Konfiguriraj API ključ", + "apiKeyDescription": "Konfigurirajte poverilnice ključa API za overjanje", + "apiKeyConfigured": "API ključ je bil uspešno konfiguriran", + "configurationFailed": "Konfiguracija ni uspela", + "failedToStart": "Začetek avtentikacijskega procesa ni uspel", + "credentialsVerified": "Poverilnice so bile uspešno preverjene", + "credentialVerificationFailed": "Preverjanje poverilnic ni uspelo", + "verifyAndContinue": "Preveri in nadaljuj", + "configureParameters": "Konfiguriraj parametre", + "parametersDescription": "Konfigurirajte parametre in lastnosti sprožilnika", + "configurationComplete": "Konfiguracija je zaključena", + "configurationCompleteDescription": "Vaš sprožilec je bil uspešno konfiguriran", + "configurationCompleteMessage": "Vaša konfiguracija sprožilnika je zdaj dokončana in pripravljena za uporabo.", + "parameters": "Parametri", + "properties": "Lastnosti", + "propertiesDescription": "Dodatne konfiguracijske lastnosti za ta sprožilec", + "noConfigurationRequired": "Za ta sprožilec ni potrebna dodatna nastavitev.", + "subscriptionName": "Ime naročnine", + "subscriptionNameDescription": "Vnesite edinstveno ime za to naročnino na sprožilec", + "subscriptionNamePlaceholder": "Vnesite ime naročnine...", + "subscriptionNameRequired": "Ime naročnine je obvezno", + "subscriptionRequired": "Potrebna je naročnina" + }, + "triggerSchedule": { + "title": "Urnik", + "nodeTitle": "Sprožilec urnika", + "notConfigured": "Ni konfigurirano", + "useCronExpression": "Uporabi cron izraz", + "useVisualPicker": "Uporabi vizualni izbirnik", + "frequency": { + "label": "FREKVENCA", + "hourly": "Ura", + "daily": "Dnevno", + "weekly": "Tedensko", + "monthly": "Mesečno" + }, + "selectFrequency": "Izberite frekvenco", + "frequencyLabel": "Frekvenca", + "nextExecution": "Naslednja izvršitev", + "weekdays": "Delovni dnevi", + "time": "Čas", + "cronExpression": "Izraz Cron", + "nextExecutionTime": "NASLEDNJI ČAS IZVRŠITVE", + "nextExecutionTimes": "Naslednjih 5 časov izvajanja", + "startTime": "Začetni čas", + "executeNow": "Izvršitev zdaj", + "selectDateTime": "Izberite datum in čas", + "hours": "Ure", + "minutes": "Minute", + "onMinute": "Na minuto", + "days": "Dnevi", + "lastDay": "Zadnji dan", + "lastDayTooltip": "Ne vsi meseci imajo 31 dni. Uporabite možnost 'zadnji dan', da izberete zadnji dan vsakega meseca.", + "mode": "Moda", + "timezone": "Časovni pas", + "visualConfig": "Vizualna konfiguracija", + "monthlyDay": "Mesečni dan", + "executionTime": "Čas izvajanja", + "invalidTimezone": "Neveljavna časovna cona", + "invalidCronExpression": "Neveljavna cron izraz", + "noValidExecutionTime": "Ni mogoče izračunati veljavnega časa izvajanja", + "executionTimeCalculationError": "Ni bilo mogoče izračunati časov izvajanja", + "invalidFrequency": "Neveljavna frekvenca", + "invalidStartTime": "Neveljaven čas začetka", + "startTimeMustBeFuture": "Začetni čas mora biti v prihodnosti", + "invalidTimeFormat": "Neveljaven format časa (pričakovano U:MM AM/PM)", + "invalidWeekday": "Neveljaven dan v tednu: {{weekday}}", + "invalidMonthlyDay": "Mesečni dan mora biti med 1 in 31 ali \"zadnji\"", + "invalidOnMinute": "Minute morajo biti med 0 in 59", + "invalidExecutionTime": "Neveljaven čas izvajanja", + "executionTimeMustBeFuture": "Čas izvajanja mora biti v prihodnosti" + }, + "triggerWebhook": { + "title": "Sprožilec spletnega ključa", + "nodeTitle": "🔗 Sprožilec Webhook", + "configPlaceholder": "Konfiguracija sprožilca webhook bo izvedena tukaj", + "webhookUrl": "URL spletnega kljuka", + "webhookUrlPlaceholder": "Kliknite ustvari za ustvarjanje URL-ja spletnega ključa", + "generate": "Ustvari", + "copy": "Kopiraj", + "test": "Preizkus", + "urlGenerated": "URL spletnega ključa je bil uspešno ustvarjen", + "urlGenerationFailed": "Ni bilo mogoče ustvariti URL-ja spletnega vtiča", + "urlCopied": "URL je bil kopiran v odložišče", + "method": "Metoda", + "contentType": "Vrsta vsebine", + "queryParameters": "Parametri poizvedbe", + "headerParameters": "Parametri glave", + "requestBodyParameters": "Parametri telesa zahteve", + "parameterName": "Ime spremenljivke", + "varName": "Ime spremenljivke", + "varType": "Tip", + "varNamePlaceholder": "Vnesite ime spremenljivke...", + "required": "Zahtevano", + "addParameter": "Dodaj", + "addHeader": "Dodaj", + "noParameters": "Nobeni parametri niso nastavljeni", + "noQueryParameters": "Ni konfiguriranih parametrov poizvedbe", + "noHeaders": "Brez konfiguriranih glavi", + "noBodyParameters": "Nobenih telesnih parametrov ni konfiguriranih", + "debugUrlTitle": "Za testne zagon vedno uporabite ta URL", + "debugUrlCopy": "Kliknite, da kopirate", + "debugUrlCopied": "Kopirano!", + "debugUrlPrivateAddressWarning": "Ta URL se zdi notranji naslov, kar lahko povzroči, da zahtevki webhooka ne uspejo. TRIGGER_URL lahko spremenite v javni naslov.", + "errorHandling": "Ravnanje z napakami", + "errorStrategy": "Ravnanje z napakami", + "responseConfiguration": "Odgovor", + "asyncMode": "Asinhroni način", + "statusCode": "Statusna koda", + "responseBody": "Telo odgovora", + "responseBodyPlaceholder": "Napišite svoje telo odgovora tukaj", + "headers": "Glave", + "validation": { + "webhookUrlRequired": "URL spletnega ključa je obvezen", + "invalidParameterType": "Neveljavna vrsta parametra \"{{type}}\" za parameter \"{{name}}\"" + } + } + }, + "tracing": { + "stopBy": "Ohranjaj se pri {{user}}" + }, + "versionHistory": { + "filter": { + "all": "Vse", + "reset": "Ponastavi filter", + "onlyShowNamedVersions": "Prikaži samo poimenovane različice", + "onlyYours": "Samo tvoje", + "empty": "Ni najdene zgodovine različic, ki bi se ujemala." + }, + "editField": { + "title": "Naslov", + "titleLengthLimit": "Naslov ne sme presegati {{limit}} znakov", + "releaseNotesLengthLimit": "Opombe o različici ne smejo presegati {{limit}} znakov.", + "releaseNotes": "Opombe o izdaji" + }, + "action": { + "deleteSuccess": "Različica izbrisana", + "deleteFailure": "Brisanje različice ni uspelo", + "updateFailure": "Posodobitev različice ni uspela", + "restoreSuccess": "Obnovljena različica", + "restoreFailure": "Obnavljanje različice ni uspelo", + "updateSuccess": "Različica posodobljena", + "copyIdSuccess": "ID kopiran v odložišče" + }, + "defaultName": "Nepodpisana različica", + "deletionTip": "Izbris je nepovraten, prosim potrdite.", + "currentDraft": "Trenutni osnutek", + "title": "Različice", + "editVersionInfo": "Uredi informacije o različici", + "latest": "Najnovejši", + "nameThisVersion": "Poimenujte to različico", + "releaseNotesPlaceholder": "Opisujte, kaj se je spremenilo", + "restorationTip": "Po obnovitvi različice bo trenutni osnutek prepisan.", + "copyId": "Kopiraj ID" + }, + "debug": { + "noData": { + "runThisNode": "Zagon te vozlišča", + "description": "Rezultati zadnjega zagona bodo prikazani tukaj" + }, + "variableInspect": { + "trigger": { + "stop": "Ustavi se", + "normal": "Inspiciranje spremenljivk", + "clear": "Jasno", + "cached": "Poglej shranjene spremenljivke", + "running": "Shranjevanje statusa delovanja" + }, + "emptyLink": "Nauči se več", + "chatNode": "Pogovor", + "envNode": "Okolje", + "systemNode": "Sistem", + "view": "Oglej si dnevnik", + "title": "Inspiciranje spremenljivk", + "clearNode": "Počisti predpomnjeno spremenljivko", + "clearAll": "Ponastavi vse", + "reset": "Ponastavi na zadnjo vrednost izvajanja", + "edited": "Uredjeno", + "resetConversationVar": "Ponastavi spremenljivko pogovora na privzeto vrednost", + "emptyTip": "Po prehodu skozi vozlišče na platnu ali po zagonu vozlišča korak za korakom lahko v pregledu spremenljivk vidite trenutno vrednost spremenljivke vozlišča.", + "export": "izvoz", + "exportToolTip": "Izvozi spremenljivko kot datoteko", + "largeDataNoExport": "Veliki podatki – samo delni predogled", + "largeData": "Veliki podatki, predogled samo za branje. Izvozi, če si želite ogledati vse.", + "listening": { + "title": "Poslušanje dogodkov iz sprožilcev...", + "tip": "Zdaj lahko simulirate sprožilce dogodkov tako, da pošljete testne zahteve na HTTP {{nodeName}} končno točko ali jo uporabite kot URL za klicanje povratne funkcije za odpravljanje napak v živo. Vse izhode lahko neposredno ogledate v inšpektorju spremenljivk.", + "tipPlugin": "Zdaj lahko ustvarjate dogodke v {{- pluginName}} in pridobivate izhode iz teh dogodkov v Inšpektorju spremenljivk.", + "tipSchedule": "Poslušanje dogodkov iz sprožilcev urnika.\nNaslednje načrtovano izvajanje: {{nextTriggerTime}}", + "tipFallback": "Počakajte na prihajajoče sprožilne dogodke. Izhodi se bodo prikazali tukaj.", + "defaultNodeName": "ta sprožilec", + "defaultPluginName": "ta vtičnik sproži", + "defaultScheduleTime": "Ni konfigurirano", + "selectedTriggers": "izbrani sprožilci", + "stopButton": "Ustavi" + } + }, + "settingsTab": "Nastavitve", + "lastRunTab": "Zadnji zagon", + "relations": { + "dependencies": "Odvisnosti", + "dependents": "Odvisnim", + "noDependents": "Brez vzdrževanih oseb", + "dependentsDescription": "Vozlišča, ki se zanašajo na to vozlišče", + "dependenciesDescription": "Vozlišča, na katera se zanaša to vozlišče", + "noDependencies": "Brez odvisnosti" + }, + "relationsTab": "Odnose", + "copyLastRun": "Kopiraj zadnji zagon", + "copyLastRunError": "Kopiranje vhodov zadnjega zagona ni uspelo", + "noLastRunFound": "Nobenega prejšnjega zagona ni bilo najdenega.", + "noMatchingInputsFound": "Ni podatkov, ki bi ustrezali prejšnjemu zagonu", + "lastOutput": "Nazadnje izhod", + "lastRunInputsCopied": "{{count}} vhod(i) kopiran(i) iz zadnjega zagona" + }, + "sidebar": { + "exportWarning": "Izvozi trenutna shranjena različica", + "exportWarningDesc": "To bo izvozilo trenutno shranjeno različico vašega delovnega toka. Če imate neshranjene spremembe v urejevalniku, jih najprej shranite z uporabo možnosti izvoza na platnu delovnega toka." + }, + "publishLimit": { + "startNodeTitlePrefix": "Nadgradi na", + "startNodeTitleSuffix": "odklene neomejene sprožilce na delovni tok", + "startNodeDesc": "Dosegli ste omejitev 2 sprožilcev na delovni tok za ta načrt. Nadgradite, da lahko objavite ta delovni tok." + }, + "error": { + "startNodeRequired": "Prosimo, najprej dodajte začetni vozel pred {{operation}}", + "operations": { + "connectingNodes": "povezovalni vozel", + "addingNodes": "dodajanje vozlišč", + "modifyingWorkflow": "spreminjanje delovnega toka", + "updatingWorkflow": "posodabljanje delovnega procesa" + } + }, + "customWebhook": "Prilagojeni spletni kavelj", + "difyTeam": "Ekipa Dify", + "triggerStatus": { + "enabled": "SPROŽILEC", + "disabled": "SPROŽILEC • ONEMOGOČENO" + }, + "entryNodeStatus": { + "enabled": "ZAČETEK", + "disabled": "ZAČNI • ONEMOGOČENO" + }, + "onboarding": { + "title": "Izberite začetno vozlišče za začetek", + "description": "Različni začetni vozli imajo različne zmogljivosti. Brez skrbi, vedno jih lahko kasneje spremenite.", + "userInputFull": "Uporabniški vnos (izvorna začetna točka)", + "userInputDescription": "Začetni vozel, ki omogoča nastavitev uporabniških vhodnih spremenljivk, z zmogljivostmi orodij za spletno aplikacijo, API storitev, MCP strežnik in potek dela.", + "trigger": "Sprožilec", + "triggerDescription": "Sprožilci lahko služijo kot začetna točka delovnega toka, na primer razporejene naloge, po meri narejeni spletni oglasi ali integracije z drugimi aplikacijami.", + "back": "Nazaj", + "learnMore": "Izvedi več", + "aboutStartNode": "o začetnem vozelu.", + "escTip": { + "press": "Tisk", + "key": "esc", + "toDismiss": "odpustiti" + } + } +} diff --git a/web/i18n/sl-SI/workflow.ts b/web/i18n/sl-SI/workflow.ts deleted file mode 100644 index d92d92da4a..0000000000 --- a/web/i18n/sl-SI/workflow.ts +++ /dev/null @@ -1,1296 +0,0 @@ -const translation = { - common: { - effectVarConfirm: { - title: 'Odstrani spremenljivko', - content: 'Spremenljivka se uporablja v drugih vozliščih. Ali jo še vedno želite odstraniti?', - }, - parallelTip: { - click: { - desc: 'dodati', - title: 'Klikni', - }, - drag: { - desc: 'povezati', - title: 'Povleci', - }, - depthLimit: 'Meja paralelnega gnezdenja plasti {{num}} plasti', - limit: 'Paralelizem je omejen na {{num}} veje.', - }, - versionHistory: 'Zgodovina različic', - published: 'Objavljeno', - run: 'Testni tek', - notRunning: 'Še ne teče', - exportImage: 'Izvozi sliko', - openInExplore: 'Odpri v Raziskovanju', - publishUpdate: 'Objavi posodobitev', - disconnect: 'Odklop', - exportJPEG: 'Izvozi kot JPEG', - exportSVG: 'Izvozi kot SVG', - model: 'Model', - restart: 'Znova zaženi', - running: 'Tek', - undo: 'Razveljavi', - enableJinja: 'Omogoči podporo za Jinja predloge', - publish: 'Objavi', - importSuccess: 'Uvoz uspešen', - workflowAsTool: 'Delovni potek kot orodje', - update: 'Posodobitev', - jumpToNode: 'Preskoči na ta vozel', - publishedAt: 'Objavljeno', - addParallelNode: 'Dodaj paralelni vozlišče', - inPreview: 'V predogledu', - workflowAsToolTip: 'Zaradi posodobitve delovnega poteka je potrebna ponovna konfiguracija orodja.', - variableNamePlaceholder: 'Ime spremenljivke', - needOutputNode: 'Dodati je treba izhodiščno vozlišče', - onFailure: 'O neuspehu', - embedIntoSite: 'Vstavite v spletno stran', - conversationLog: 'Pogovor Log', - accessAPIReference: 'Dostop do referenčnega API-ja', - inPreviewMode: 'V načinu predogleda', - previewPlaceholder: 'Vnesite vsebino v spodnje polje, da začnete odpravljati napake v chatbotu', - input: 'Vnos', - importDSLTip: 'Trenutni osnutek bo prepisan. Izvozite delovni postopek kot varnostno kopijo pred uvozom.', - duplicate: 'Podvojiti', - loadMore: 'Naloži več', - addTitle: 'Dodajte naslov...', - goBackToEdit: 'Pojdi nazaj k uredniku', - needAnswerNode: 'Skrivnostni element mora biti dodan.', - needConnectTip: 'Ta korak ni povezan z ničemer.', - searchVar: 'Iskalna spremenljivka', - branch: 'VEJA', - viewRunHistory: 'Poglej zgodovino izvajanja', - learnMore: 'Nauči se več', - workflowProcess: 'Delovni postopek', - preview: 'Predogled', - output: 'Izhod', - viewDetailInTracingPanel: 'Oglejte si podrobnosti', - debugAndPreview: 'Predogled', - restore: 'Obnovi', - latestPublished: 'Najnovejša objavljena', - importDSL: 'Uvozi DSL', - viewOnly: 'Samo za ogled', - insertVarTip: 'Pritisnite tipko \'/\' za hitro vstavljanje', - currentDraftUnpublished: 'Trenutna osnutek neobjavljeno', - showRunHistory: 'Prikaži zgodovino izvajanja', - runHistory: 'Zgodovina izvajanja', - fileUploadTip: 'Funkcije nalaganja slik so bile nadgrajene na nalaganje datotek.', - backupCurrentDraft: 'Varnostno kopiraj trenutni osnutek', - overwriteAndImport: 'Prepiši in uvozi', - exportPNG: 'Izvozi kot PNG', - chooseDSL: 'Izberi DSL datoteko', - unpublished: 'Nepublikirano', - pasteHere: 'Prilepite tukaj', - exitVersions: 'Izhodne različice', - editing: 'Urejanje', - addFailureBranch: 'Dodaj neuspešno vejo', - syncingData: 'Sinhronizacija podatkov, samo nekaj sekund.', - noVar: 'Brez spremenljivke', - runApp: 'Zaženi aplikacijo', - ImageUploadLegacyTip: 'Zdaj lahko v začetni obliki ustvarite spremenljivke datotečnega tipa. V prihodnje ne bomo več podpirali funkcije nalaganja slik.', - importWarning: 'Opozorilo', - copy: 'Kopirati', - redo: 'Ponovno naredi', - currentDraft: 'Trenutni osnutek', - manageInTools: 'Upravljajte v orodjih', - parallel: 'PARALELNO', - importWarningDetails: 'Razlika v različici DSL lahko vpliva na nekatere funkcije', - addDescription: 'Dodajte opis...', - maxTreeDepth: 'Največje število {{depth}} vozlišč na vejo', - jinjaEditorPlaceholder: 'Vnesite \'/\' ali \'{\', da vstavite spremenljivko', - batchRunApp: 'Program za serijsko izvajanje', - importFailure: 'Uvoz ni uspel', - handMode: 'Ročni način', - processData: 'Obdelava podatkov', - addBlock: 'Dodaj vozlišče', - noHistory: 'Brez zgodovine', - configureRequired: 'Konfigurirajte zahteve', - setVarValuePlaceholder: 'Nastavi spremenljivko', - pointerMode: 'Način s kazalcem', - autoSaved: 'Samodejno shranjeno', - configure: 'Konfiguriraj', - inRunMode: 'V načinu izvajanja', - tagBound: 'Število aplikacij, ki uporabljajo to oznako', - currentView: 'Trenutni pogled', - currentWorkflow: 'Trenutni potek dela', - moreActions: 'Več dejanj', - listening: 'Poslušanje', - chooseStartNodeToRun: 'Izberite začetno vozlišče za zagon', - runAllTriggers: 'Zaženi vse sprožilce', - features: 'Značilnosti', - featuresDescription: 'Izboljšajte uporabniško izkušnjo spletne aplikacije', - featuresDocLink: 'Izvedi več', - needAdd: 'Povezava {{node}} mora biti dodana', - needStartNode: 'Dodati je treba vsaj eno začetno vozlišče', - workflowAsToolDisabledHint: 'Objavite najnovejše delovne tokove in zagotovite, da je pred konfiguracijo kot orodje povezan vozel za vnos uporabnika.', - }, - env: { - modal: { - value: 'Vrednost', - title: 'Dodaj okoljsko spremenljivko', - name: 'Ime', - valuePlaceholder: 'vrednost okolja', - namePlaceholder: 'ime okolja', - type: 'Tip', - editTitle: 'Uredi okoljsko spremenljivko', - secretTip: 'Uporablja se za opredelitev občutljivih informacij ali podatkov, s konfiguriranimi nastavitvami DSL za preprečevanje puščanja.', - description: 'Opis', - descriptionPlaceholder: 'Opisujte spremenljivko', - }, - export: { - export: 'Izvozi DSL z skrivnimi vrednostmi', - ignore: 'Izvoz DSL', - checkbox: 'Izvozi tajne vrednosti', - title: 'Izvozi skrivne okoljske spremenljivke?', - }, - envPanelTitle: 'Spremenljivke okolja', - envPanelButton: 'Dodaj spremenljivko', - envDescription: 'Okoljske spremenljivke se lahko uporabljajo za shranjevanje zasebnih informacij in poverilnic. So samo za branje in jih je mogoče ločiti od DSL datoteke med izvozem.', - }, - globalVar: { - title: 'Sistemske spremenljivke', - description: 'Sistemske spremenljivke so globalne spremenljivke, do katerih lahko vsako vozlišče dostopa brez povezovanja, če je tip pravilen, na primer ID končnega uporabnika in ID poteka dela.', - fieldsDescription: { - conversationId: 'ID pogovora', - dialogCount: 'Število pogovorov', - userId: 'ID uporabnika', - triggerTimestamp: 'Časovni žig začetka delovanja aplikacije', - appId: 'ID aplikacije', - workflowId: 'ID poteka dela', - workflowRunId: 'ID izvajanja poteka dela', - }, - }, - chatVariable: { - modal: { - namePlaceholder: 'Ime spremenljivke', - title: 'Dodaj spremenljivko za pogovor', - editInJSON: 'Uredi v JSON', - objectKey: 'Ključ', - valuePlaceholder: 'Privzeta vrednost, pustite prazno, da je ne nastavite', - description: 'Opis', - descriptionPlaceholder: 'Opisujte spremenljivko', - type: 'Tip', - value: 'Privzeta vrednost', - name: 'Ime', - arrayValue: 'Vrednost', - editTitle: 'Uredi spremenljivko pogovora', - editInForm: 'Uredi v obrazcu', - addArrayValue: 'Dodati vrednost', - objectType: 'Tip', - oneByOne: 'Dodaj eno po eno', - objectValue: 'Privzeta vrednost', - }, - updatedAt: 'Posodobljeno ob', - docLink: 'Obiščite našo dokumentacijo, da se naučite več.', - panelTitle: 'Pogovor Spremenljivke', - storedContent: 'Shranjena vsebina', - panelDescription: 'Spremenljivke pogovora se uporabljajo za shranjevanje interaktivnih informacij, ki se jih LLM mora zapomniti, vključno z zgodovino pogovorov, naloženimi datotekami in uporabnikovimi nastavitvami. So branje-in-pisanje.', - button: 'Dodaj spremenljivko', - }, - changeHistory: { - stepBackward_other: '{{count}} korakov nazaj', - sessionStart: 'Začetek seje', - nodeTitleChange: 'Naslov vozlišča je bil spremenjen', - noteChange: 'Opomba spremenjena', - title: 'Zgodovina sprememb', - noteAdd: 'Opomba dodana', - nodeAdd: 'Vozlišče dodano', - nodeDragStop: 'Vozlišče je bilo premaknjeno', - stepBackward_one: '{{count}} korak nazaj', - stepForward_other: '{{count}} korakov naprej', - nodeDelete: 'Vozlišče je bilo izbrisano', - edgeDelete: 'Vozlišče je odklopljeno', - nodeResize: 'Vozlišče je spremenjeno velikost', - hint: 'Namig', - nodeDescriptionChange: 'Opis vozlišča je bil spremenjen', - noteDelete: 'Opomba izbrisana', - currentState: 'Trenutno stanje', - nodeConnect: 'Povezana vozlišča', - nodeChange: 'Vozlišče se je spremenilo', - nodePaste: 'Vozlišče prilepljeno', - clearHistory: 'Počisti zgodovino', - hintText: 'Vaša dejanja urejanja so sledena v zgodovini sprememb, ki se hrani na vaši napravi za čas trajanja te seje. Ta zgodovina bo izbrisana, ko zapustite urejevalnik.', - placeholder: 'Še niste spremenili ničesar.', - stepForward_one: '{{count}} korak naprej', - }, - errorMsg: { - fields: { - variableValue: 'Spremenljivka Vrednost', - model: 'Model', - variable: 'Spremenljivka Ime', - code: 'Koda', - rerankModel: 'Konfiguriran model ponovne uvrstitve', - visionVariable: 'Vizijska spremenljivka', - }, - invalidVariable: 'Neveljavna spremenljivka', - noValidTool: '{{field}} ni izbranega veljavnega orodja', - toolParameterRequired: '{{field}}: parameter [{{param}}] je obvezen', - rerankModelRequired: 'Zahteva se konfigurirana model ponovnega razvrščanja.', - authRequired: 'Zahtevana je avtorizacija', - invalidJson: '{{field}} je neveljaven JSON', - fieldRequired: '{{field}} je obvezno', - startNodeRequired: 'Prosimo, najprej dodajte začetni vozel pred {{operation}}', - }, - singleRun: { - iteration: 'Iteracija', - startRun: 'Začni zagon', - loop: 'Zanka', - running: 'Tek', - testRunIteration: 'Testiranje ponovitve', - back: 'Nazaj', - testRun: 'Testna vožnja', - reRun: 'Ponovni zagon', - preparingDataSource: 'Priprava vira podatkov', - }, - tabs: { - 'customTool': 'Po meri', - 'logic': 'Logika', - 'tools': 'Orodja', - 'searchBlock': 'Išči vozlišče', - 'utilities': 'Komunalne storitve', - 'plugin': 'Vtičnik', - 'allTool': 'Vse', - 'searchTool': 'Orodje za iskanje', - 'workflowTool': 'Delovni tok', - 'noResult': 'Ni bilo najdenih ujemanj', - 'transform': 'Pretvori', - 'blocks': 'Vozlišča', - 'question-understand': 'Vprašanje Razumevanje', - 'agent': 'Agentska strategija', - 'addAll': 'Dodaj vse', - 'allAdded': 'Vse dodano', - 'sources': 'Virov', - 'searchDataSource': 'Iskanje vira podatkov', - 'start': 'Začni', - 'searchTrigger': 'Iskalni sprožilci...', - 'allTriggers': 'Vsi sprožilci', - 'noPluginsFound': 'Ni bilo najdenih nobenih vtičnikov', - 'requestToCommunity': 'Zahteve skupnosti', - 'featuredTools': 'Priporočeno', - 'showMoreFeatured': 'Pokaži več', - 'showLessFeatured': 'Pokaži manj', - 'installed': 'Nameščeno', - 'pluginByAuthor': 'Avtor: {{author}}', - 'usePlugin': 'Izberi orodje', - 'hideActions': 'Skrij orodja', - 'noFeaturedPlugins': 'Odkrijte več orodij na Tržnici', - 'noFeaturedTriggers': 'Odkrijte več sprožilcev na Tržnici', - 'startDisabledTip': 'Vozlišče sprožilca in vozlišče vnosa uporabnika se med seboj izključujeta.', - }, - blocks: { - 'iteration': 'Iteracija', - 'if-else': 'Če/Drugače', - 'llm': 'LLM', - 'document-extractor': 'Ekstraktor dokumentov', - 'knowledge-retrieval': 'Pridobivanje znanja', - 'loop-start': 'Začetek zanke', - 'assigner': 'Dodeljevalec spremenljivk', - 'question-classifier': 'Razvrščevalec vprašanj', - 'start': 'Začni', - 'loop-end': 'Izhod iz zanke', - 'http-request': 'HTTP zahteva', - 'code': 'Koda', - 'template-transform': 'Predloga', - 'answer': 'Odgovor', - 'end': 'Izhod', - 'iteration-start': 'Začetek iteracije', - 'list-operator': 'Seznam operater', - 'variable-aggregator': 'Spremenljivka agregator', - 'parameter-extractor': 'Ekstraktor parametrov', - 'loop': 'Zanka', - 'agent': 'Agent', - 'variable-assigner': 'Spremenljivka agregator', - 'datasource': 'Vir podatkov', - 'knowledge-index': 'Baza znanja', - 'originalStartNode': 'izvorna začetna točka', - 'trigger-schedule': 'Sprožilec urnika', - 'trigger-webhook': 'Sprožilec spletnega ključa', - 'trigger-plugin': 'Sprožilec vtičnika', - }, - blocksAbout: { - 'list-operator': 'Uporabljeno za filtriranje ali razvrščanje vsebine polja.', - 'template-transform': 'Pretvori podatke v niz z uporabo Jinja predloge', - 'if-else': 'Omogoča vam, da razdelite delovni tok na dve veji na podlagi pogojev if/else.', - 'code': 'Izvedite kos Python ali NodeJS kode za izvajanje prilagojene logike.', - 'iteration': 'Izvedite več korakov na seznamu objektov, dokler niso vsi rezultati izpisani.', - 'loop-end': 'Enakovredno „prekini“. Ta vozlišče nima konfiguracijskih elementov. Ko telo zanke doseže to vozlišče, zanka preneha.', - 'document-extractor': 'Uporabljeno za razčlenitev prenesenih dokumentov v besedilno vsebino, ki jo je enostavno razumeti za LLM.', - 'answer': 'Določi vsebino odgovora v pogovoru.', - 'end': 'Določite izhod in tip rezultata delovnega toka', - 'knowledge-retrieval': 'Omogoča vam, da poizvedujete o besedilnih vsebinah, povezanih z vprašanji uporabnikov iz znanja.', - 'http-request': 'Dovoli pošiljanje zahtevkov strežniku prek protokola HTTP', - 'llm': 'Uporaba velikih jezikovnih modelov za odgovarjanje na vprašanja ali obdelavo naravnega jezika', - 'loop': 'Izvedite zanko logike, dokler ni izpolnjen pogoj za prekinitev ali dokler ni dosežena največja število ponovitev.', - 'question-classifier': 'Določite pogoje klasifikacije uporabniških vprašanj, LLM lahko določi, kako se pogovor razvija na podlagi opisa klasifikacije.', - 'parameter-extractor': 'Uporabite LLM za pridobivanje strukturiranih parametrov iz naravnega jezika za klice orodij ali HTTP zahtev.', - 'agent': 'Uporaba velikih jezikovnih modelov za odgovarjanje na vprašanja ali obdelavo naravnega jezika', - 'start': 'Določite začetne parametre za zagon delovnega toka', - 'variable-assigner': 'Združite večpodružinske spremenljivke v eno samo spremenljivko za enotno konfiguracijo spodnjih vozlišč.', - 'variable-aggregator': 'Združite večpodružnične spremenljivke v eno samo spremenljivko za enotno konfiguracijo spodnjih vozlišč.', - 'assigner': 'Vožnji vozlišča za dodelitev spremenljivk se uporablja za dodeljevanje vrednosti spremenljivkam, ki jih je mogoče zapisati (kot so spremenljivke za pogovor).', - 'datasource': 'Vir podatkov O nas', - 'knowledge-index': 'Baza znanja O', - 'trigger-schedule': 'Sprožilec delovnega toka, ki se začne po urniku', - 'trigger-webhook': 'Sprožilec Webhook prejema HTTP potiske od sistemov tretjih oseb za samodejno sprožitev delovnih tokov.', - 'trigger-plugin': 'Sprožilec integracije tretje osebe, ki začne delovne tokove iz dogodkov na zunanji platformi', - }, - operator: { - zoomOut: 'Zoomirati ven', - zoomToFit: 'Povečaj, da se prilega', - zoomIn: 'Zoom in', - zoomTo50: 'Povečaj na 50%', - zoomTo100: 'Povečaj na 100%', - alignMiddle: 'Sredina', - alignBottom: 'Spodaj', - alignCenter: 'Center', - distributeVertical: 'Razporedi navpično', - alignRight: 'Desno', - alignTop: 'Vrh', - vertical: 'Navpičen', - distributeHorizontal: 'Razporedi vodoravno', - selectionAlignment: 'Poravnava izbora', - alignNodes: 'Poravnava vozlišč', - horizontal: 'Vodoraven', - alignLeft: 'Levo', - }, - variableReference: { - conversationVars: 'pogovorne spremenljivke', - assignedVarsDescription: 'Dodeljene spremenljivke morajo biti spremenljivke, ki jih je mogoče pisati, na primer', - noAvailableVars: 'Ni razpoložljivih spremenljivk.', - noAssignedVars: 'Nobenih dodeljenih spremenljivk ni na voljo.', - noVarsForOperation: 'Za izbrano operacijo ni nobenih spremenljivk, ki bi jih bilo mogoče dodeliti.', - }, - panel: { - change: 'Spremeni', - about: 'O tem', - userInputField: 'Uporabniško vhodno polje', - nextStep: 'Naslednji korak', - runThisStep: 'Izvedi ta korak', - changeBlock: 'Spremeni vozlišče', - addNextStep: 'Dodajte naslednji korak v ta delovni potek', - checklistTip: 'Prepričajte se, da so vse težave rešene, preden objavite.', - selectNextStep: 'Izberi naslednji korak', - helpLink: 'Pomoč', - checklist: 'Kontrolni seznam', - checklistResolved: 'Vse težave so rešene', - createdBy: 'Ustvarjeno z', - organizeBlocks: 'Organizirajte vozlišča', - minimize: 'Izhod iz celotnega zaslona', - maximize: 'Maksimiziraj platno', - optional: '(neobvezno)', - scrollToSelectedNode: 'Pomaknite se do izbranega vozlišča', - optional_and_hidden: '(neobvezno in skrito)', - goTo: 'Pojdi na', - startNode: 'Začetni vozel', - openWorkflow: 'Odpri delovni tok', - }, - nodes: { - common: { - memory: { - user: 'Uporabniški predpon', - assistant: 'Pomagalec predpona', - memory: 'Spomin', - conversationRoleName: 'Ime vloge v pogovoru', - memoryTip: 'Nastavitve spomina za klepet', - windowSize: 'Velikost okna', - }, - memories: { - tip: 'Pomnilnik klepeta', - title: 'Spomini', - builtIn: 'Vgrajeno', - }, - errorHandle: { - none: { - title: 'Noben', - desc: 'Vozlišče se bo prenehalo izvajati, če pride do izjeme, ki ni obravnavana.', - }, - defaultValue: { - output: 'Privzeta vrednost izhoda', - inLog: 'Napaka vozlišča, izhod po privzetih vrednostih.', - title: 'Privzeta vrednost', - desc: 'Ko pride do napake, določi statično vsebino izhoda.', - tip: 'Ob napaki bo vrnil spodnjo vrednost.', - }, - failBranch: { - title: 'Napaka veja', - customize: 'Pojdite na platno, da prilagodite logiko veje neuspeha.', - desc: 'Ko pride do napake, se bo izvedla veja izjeme.', - inLog: 'Napaka na vozlišču, samodejno se bo izvedla veja za neuspeh. Izhod vozlišča bo vrnil tip napake in sporočilo o napaki ter ju posredoval naprej.', - customizeTip: 'Ko je aktivirana veja napak, izjeme, ki jih sprožijo vozlišča, ne bodo prekinile procesa. Namesto tega bo samodejno izvedena vnaprej določena veja napak, kar vam omogoča, da prilagodljivo ponudite sporočila o napakah, poročila, popravke ali preskočite dejanja.', - }, - partialSucceeded: { - tip: 'V procesu je {{num}} vozlišč, ki delujejo nenormalno, prosim, pojdite na sledenje, da preverite dnevnike.', - }, - title: 'Obvladovanje napak', - tip: 'Strategija ravnanja z izjemo, ki se sproži, ko vozlišče naleti na izjemo.', - }, - retry: { - retrySuccessful: 'Ponovni poskus je bil uspešen', - retryFailedTimes: '{{times}} poskusi so spodleteli', - maxRetries: 'maksimalno število poskusov', - ms: 'ms', - retrying: 'Ponovno poskušam...', - times: 'časi', - retry: 'Poskusi znova', - retryFailed: 'Ponovi neuspeh', - retryOnFailure: 'poskusi znova v primeru napake', - retryInterval: 'ponovni interval', - retries: '{{num}} Poskusi', - retryTimes: 'Poskusite {{times}} krat v primeru napake', - }, - insertVarTip: 'Vstavite spremenljivko', - outputVars: 'Izhodne spremenljivke', - typeSwitch: { - variable: 'Uporabi spremenljivko', - input: 'Vhodna vrednost', - }, - inputVars: 'Vhodne spremenljivke', - pluginNotInstalled: 'Vtičnik ni nameščen', - }, - start: { - outputVars: { - memories: { - des: 'Zgodovina pogovora', - type: 'vrsta sporočila', - content: 'vsebina sporočila', - }, - files: 'Seznam datotek', - query: 'Uporabniški vnos', - }, - noVarTip: 'Nastavite vhodne podatke, ki jih lahko uporabite v delovnem toku.', - required: 'zahtevano', - builtInVar: 'Vgrajene spremenljivke', - inputField: 'Vnosno polje', - }, - end: { - output: { - type: 'izhodna vrsta', - variable: 'izhodna spremenljivka', - }, - type: { - 'structured': 'Strukturirano', - 'none': 'Noben', - 'plain-text': 'Navadno besedilo', - }, - outputs: 'Izhodi', - }, - answer: { - outputVars: 'Izhodne spremenljivke', - answer: 'Odgovor', - }, - llm: { - roleDescription: { - system: 'Dajte visoko raven navodil za pogovor.', - assistant: 'Odgovori modela so zasnovani na uporabnikovih sporočilih.', - user: 'Navedite navodila, poizvedbe ali kakršnokoli besedilne vnose modelu', - }, - resolution: { - low: 'Nizko', - high: 'Visoko', - name: 'Resolucija', - }, - outputVars: { - output: 'Ustvari vsebino', - reasoning_content: 'Vsebina razmišljanja', - usage: 'Informacije o uporabi modela', - }, - singleRun: { - variable: 'Spremenljivka', - }, - jsonSchema: { - warningTips: { - saveSchema: 'Prosimo, da dokončate urejanje trenutnega polja, preden shranite shemo.', - }, - generatedResult: 'Generiran rezultat', - instruction: 'Navodilo', - resetDefaults: 'Ponastavi', - promptPlaceholder: 'Opiši svoj JSON shemo...', - generating: 'Generiranje JSON sheme...', - resultTip: 'Tukaj je generiran rezultat. Če niste zadovoljni, se lahko vrnete in spremenite svoj poziv.', - promptTooltip: 'Pretvorite besedilni opis v standardizirano strukturo JSON sheme.', - addField: 'Dodaj polje', - fieldNamePlaceholder: 'Ime polja', - import: 'Uvoz iz JSON', - generationTip: 'Lahko uporabite naravni jezik za hitro ustvarjanje JSON sheme.', - back: 'Nazaj', - descriptionPlaceholder: 'Dodajte opis', - generate: 'Generirati', - doc: 'Izvedite več o strukturiranem izhodu', - title: 'Strukturirana izhodna shema', - required: 'zahtevano', - apply: 'Uporabi', - generateJsonSchema: 'Generiraj JSON shemo', - addChildField: 'Dodaj polje za otroka', - showAdvancedOptions: 'Prikaži napredne možnosti', - stringValidations: 'Preverjanje nizov', - regenerate: 'Ponovno generiranje', - }, - prompt: 'ukaz', - sysQueryInUser: 'vprašanje v uporabniškem sporočilu je obvezno', - notSetContextInPromptTip: 'Da omogočite funkcijo konteksta, prosimo izpolnite spremenljivko konteksta v PROMPT.', - contextTooltip: 'Lahko uvažate znanje kot kontekst', - variables: 'spremenljivke', - files: 'Datoteke', - model: 'model', - context: 'kontekst', - addMessage: 'Dodaj sporočilo', - vision: 'vizija', - reasoningFormat: { - tagged: 'Ohranite oznake za razmišljanje', - title: 'Omogoči ločevanje oznak za razsojanje', - tooltip: 'Izvleći vsebino iz miselnih oznak in jo shraniti v polje reasoning_content.', - separated: 'Ločite oznake za razmišljanje', - }, - }, - knowledgeRetrieval: { - outputVars: { - title: 'Segmentirana naslov', - url: 'Segmentirana URL', - icon: 'Segmentirana ikona', - content: 'Segmentirana vsebina', - metadata: 'Drug metapodatki', - output: 'Podatki o segmentaciji iskanja', - files: 'Pridobljene datoteke', - }, - metadata: { - options: { - disabled: { - title: 'Onemogočeno', - subTitle: 'Ne omogočanje filtriranja metapodatkov', - }, - automatic: { - title: 'Samodejno', - subTitle: 'Samodejno ustvarite filtrirne pogoje za metapodatke na podlagi uporabniškega poizvedovanja.', - desc: 'Samodejno ustvarite filtrirne pogoje za metapodatke na podlagi spremenljivke poizvedbe', - }, - manual: { - subTitle: 'Ročno dodajte pogoje za filtriranje metapodatkov', - title: 'Ročno', - }, - }, - panel: { - title: 'Pogoji za filtriranje metapodatkov', - conditions: 'Pogoji', - placeholder: 'Vnesite vrednost', - search: 'Išči metapodatke', - select: 'Izberi spremenljivko...', - datePlaceholder: 'Izberi čas...', - add: 'Dodaj pogoj', - }, - title: 'Filtriranje metapodatkov', - tip: 'Filtriranje metapodatkov je postopek uporabe metapodatkovnih atributov (kot so oznake, kategorije ali dovoljenja za dostop) za natančnejše določanje in nadzorovanje pridobivanja relevantnih informacij znotraj sistema.', - }, - queryVariable: 'Vprašanje spremenljivka', - knowledge: 'Znanje', - queryText: 'Besedilo poizvedbe', - queryAttachment: 'Poizvedbe slik', - }, - http: { - outputVars: { - files: 'Seznam datotek', - body: 'Vsebina odziva', - headers: 'Seznam odzivnih glav JSON', - statusCode: 'Statusna koda odgovora', - }, - authorization: { - 'no-auth': 'Noben', - 'custom': 'Po meri', - 'header': 'Naslov', - 'bearer': 'Nosilac', - 'api-key-title': 'API ključ', - 'authorization': 'Avtorizacija', - 'api-key': 'API-kljuc', - 'basic': 'Osnovno', - 'auth-type': 'Vrsta avtentikacije', - 'authorizationType': 'Vrsta pooblastila', - }, - timeout: { - readLabel: 'Časovna omejitev branja', - title: 'Časovna omejitev', - readPlaceholder: 'Vnesite časovne omejitve za branje v sekundah', - connectPlaceholder: 'Vnesite časovne omejitve povezave v sekundah', - connectLabel: 'Čas povezave je potekel', - writePlaceholder: 'Vnesite časovne omejitve za pisanje v sekundah', - writeLabel: 'Časovna omejitev pisanja', - }, - curl: { - title: 'Uvozi iz cURL', - placeholder: 'Prilepite cURL niz tukaj', - }, - body: 'Telo', - inputVars: 'Vhodne spremenljivke', - apiPlaceholder: 'Vnesite URL, vtipkajte \'/\' in vstavite spremenljivko.', - api: 'API', - extractListPlaceholder: 'Vnesite indeks seznamske postavke, vnesite \'/\' za vstavitev spremenljivke', - key: 'Ključ', - binaryFileVariable: 'Dvojiška datoteka spremenljivka', - notStartWithHttp: 'API se mora začeti z http:// ali https://', - keyValueEdit: 'Urejanje ključ-vrednost', - bulkEdit: 'Masovno urejanje', - type: 'Tip', - headers: 'Naslovi', - value: 'Vrednost', - params: 'Parametri', - insertVarPlaceholder: 'vnesite \'/\' za vstavljanje spremenljivke', - verifySSL: { - title: 'Preverite SSL certifikat', - warningTooltip: 'Onemogočanje preverjanja SSL ni priporočljivo za proizvodna okolja. To bi se moralo uporabljati le pri razvoju ali testiranju, saj povezavo izpostavi varnostnim grožnjam, kot so napadi človek-v-sredini.', - }, - }, - code: { - searchDependencies: 'Išči odvisnosti', - advancedDependencies: 'Napredne odvisnosti', - outputVars: 'Izhodne spremenljivke', - inputVars: 'Vhodne spremenljivke', - advancedDependenciesTip: 'Dodajte nekaj vnaprej naloženih odvisnosti, ki potrebujejo več časa za obdelavo ali niso privzete vgrajene.', - syncFunctionSignature: 'Sinhronizirajte podpis funkcije s kodo', - }, - templateTransform: { - outputVars: { - output: 'Transformirana vsebina', - }, - codeSupportTip: 'Podpira samo Jinja2', - code: 'Koda', - inputVars: 'Vhodne spremenljivke', - }, - ifElse: { - comparisonOperator: { - 'all of': 'vse od', - 'not in': 'ni v', - 'in': 'v', - 'null': 'je nič', - 'after': 'po', - 'is': 'je', - 'not exists': 'ne obstaja', - 'empty': 'je prazno', - 'is not': 'ni', - 'start with': 'začeti z', - 'not empty': 'ni prazen', - 'before': 'pred', - 'end with': 'končati z', - 'not contains': 'ne vsebuje', - 'contains': 'vsebuje', - 'exists': 'obstaja', - 'not null': 'ni ničelno', - }, - optionName: { - localUpload: 'Lokalno nalaganje', - video: 'Video', - url: 'URL', - image: 'Slika', - doc: 'Dokument', - audio: 'Zvočni zapis', - }, - addCondition: 'Dodaj pogoj', - selectVariable: 'Izberi spremenljivko...', - or: 'ali', - if: 'Če', - and: 'in', - else: 'Drugje', - notSetVariable: 'Prosim, najprej nastavite spremenljivko.', - enterValue: 'Vnesite vrednost', - elseDescription: 'Uporabljeno za opredelitev logike, ki se izvede, ko pogoj if ni izpolnjen.', - addSubVariable: 'Podspremenljivka', - conditionNotSetup: 'Pogoji NISO nastavljeni', - operator: 'Operater', - select: 'Izberite', - }, - variableAssigner: { - type: { - object: 'Predmet', - string: 'Niz', - number: 'Število', - array: 'Množica', - }, - outputVars: { - varDescribe: '{{groupName}} izhod', - }, - varNotSet: 'Spremenljivka ni nastavljena', - title: 'Dodelite spremenljivke', - noVarTip: 'Dodajte spremenljivke, ki jih je treba dodeliti.', - aggregationGroup: 'Agregacijska skupina', - outputType: 'Vrsta izhoda', - addGroup: 'Dodaj skupino', - setAssignVariable: 'Določite spremenljivko', - aggregationGroupTip: 'Omogočanje te funkcije omogoča agregatorju spremenljivk, da združi več skupin spremenljivk.', - }, - assigner: { - 'operations': { - 'set': 'Nabor', - 'append': 'Dodaj', - '/=': '/=', - 'over-write': 'Prepiši', - '*=': '*=', - 'remove-first': 'Odstrani prvi', - 'remove-last': 'Odstrani zadnje', - '-=': '-=', - '+=': '+=', - 'extend': 'Razširi', - 'clear': 'Jasno', - 'overwrite': 'Prepiši', - 'title': 'Operacija', - }, - 'clear': 'Jasno', - 'plus': 'Plus', - 'noAssignedVars': 'Nobenih dodeljenih spremenljivk ni na voljo.', - 'variables': 'Spremenljivke', - 'assignedVariable': 'Dodeljena spremenljivka', - 'writeMode': 'Načrtovanje pisanja', - 'setParameter': 'Nastavite parameter...', - 'writeModeTip': 'Način dodajanja: Na voljo samo za spremenljivke tipa tabel.', - 'over-write': 'Prepiši', - 'append': 'Dodaj', - 'varNotSet': 'Spremenljivka NI nastavljena', - 'noVarTip': 'Kliknite na gumb " + " za dodajanje spremenljivk', - 'variable': 'Spremenljivka', - 'assignedVarsDescription': 'Dodeljene spremenljivke morajo biti spremenljivke, ki jih je mogoče pisati, kot so spremenljivke za pogovor.', - 'setVariable': 'Nastavi spremenljivko', - 'selectAssignedVariable': 'Izberite dodeljeno spremenljivko...', - }, - tool: { - outputVars: { - files: { - transfer_method: 'Metoda prenosa. Vrednost je remote_url ali local_file.', - title: 'orodja ustvarjena datoteke', - upload_file_id: 'Naložite ID datoteke', - url: 'URL slike', - type: 'Vrsta podpore. Zdaj podpiramo samo slike.', - }, - text: 'vsebina, ki jo je generiral orodje', - json: 'orodje je ustvarilo json', - }, - inputVars: 'Vhodne spremenljivke', - authorize: 'Pooblasti', - insertPlaceholder2: 'vstavite spremenljivko', - insertPlaceholder1: 'Vnesite ali pritisnite', - settings: 'Nastavitve', - }, - questionClassifiers: { - outputVars: { - className: 'Ime razreda', - usage: 'Informacije o uporabi modela', - }, - instruction: 'Navodilo', - addClass: 'Dodaj razred', - class: 'Razred', - model: 'model', - topicPlaceholder: 'Napišite ime svoje teme', - topicName: 'Ime teme', - instructionTip: 'Vnesite dodatna navodila, ki bodo pomagala klasifikatorju vprašanj bolje razumeti, kako kategorizirati vprašanja.', - inputVars: 'Vhodne spremenljivke', - classNamePlaceholder: 'Napiši ime svoje razredi', - advancedSetting: 'Napredno nastavitev', - instructionPlaceholder: 'Napišite svoje navodilo', - }, - parameterExtractor: { - addExtractParameterContent: { - required: 'Zahtevano', - description: 'Opis', - name: 'Ime', - descriptionPlaceholder: 'Izvleči opis parametra', - namePlaceholder: 'Izvleči ime parametra', - type: 'Tip', - typePlaceholder: 'Izvleči vrsto parametra', - requiredContent: 'Zahtevano se uporablja le kot referenca za sklepanje modela in ne kot obvezno validacijo izhodnih parametrov.', - }, - extractParameters: 'Izvleči parametre', - instruction: 'Navodilo', - instructionTip: 'Vnesite dodatna navodila, da pomagate izvleku parametrov razumeti, kako izvleči parametre.', - reasoningMode: 'Način razmišljanja', - importFromTool: 'Uvoz iz orodij', - advancedSetting: 'Napredno nastavitev', - addExtractParameter: 'Dodaj parameter za ekstrakcijo', - extractParametersNotSet: 'Parameterji za ekstrakcijo niso nastavljeni', - inputVar: 'Vhodna spremenljivka', - outputVars: { - isSuccess: 'Ali je uspeh. Na uspehu je vrednost 1, na neuspehu je vrednost 0.', - errorReason: 'Razlog za napako', - usage: 'Informacije o uporabi modela', - }, - reasoningModeTip: 'Lahko izberete ustrezen način razmišljanja glede na sposobnost modela, da se odzove na navodila za klic funkcij ali pozive.', - }, - iteration: { - ErrorMethod: { - operationTerminated: 'Prekinjeno', - removeAbnormalOutput: 'Odstrani nenavadne izhode', - continueOnError: 'Nadaljuj naprej kljub napaki', - }, - errorResponseMethod: 'Metoda odziva napake', - parallelModeEnableTitle: 'Paralelni način vključen', - output: 'Izhodne spremenljivke', - MaxParallelismTitle: 'Maksimalno paralelizem', - currentIteration: 'Trenutna iteracija', - error_other: '{{count}} Napak', - comma: ',', - iteration_one: '{{count}} Iteracija', - parallelMode: 'Paralelni način', - error_one: '{{count}} Napaka', - deleteTitle: 'Izbriši vozlišče ponovitve?', - iteration_other: '{{count}} ponovitev', - input: 'Vnos', - answerNodeWarningDesc: 'Opozorilo o paralelnem načinu: Odgovorni vozli, dodelitve spremenljivk v pogovorih in trajne operacije branja/pisanja znotraj iteracij lahko povzročijo izjeme.', - parallelModeUpper: 'PARALELNO MODE', - MaxParallelismDesc: 'Največje paralelizem se uporablja za nadzorovanje števila nalog, ki se izvajajo hkrati v eni iteraciji.', - deleteDesc: 'Izbris iteracijskega vozlišča bo izbrisal vsa otroška vozlišča.', - parallelModeEnableDesc: 'V vzporednem načinu naloge znotraj iteracij podpirajo vzporedno izvajanje. To lahko nastavite v razdelku lastnosti na desni strani.', - parallelPanelDesc: 'V paralelnem načinu naloge v iteraciji podpirajo parallelno izvajanje.', - flattenOutput: 'Izravnaj izhod', - flattenOutputDesc: 'Ko je omogočeno, bodo vsi izhodi posameznih iteracij, če so v obliki tabel, združeni v eno samo tabelo. Ko je onemogočeno, bodo izhodi ohranili strukturo gnezdene tabele.', - }, - loop: { - ErrorMethod: { - removeAbnormalOutput: 'Odstrani nenavadne izhode', - operationTerminated: 'Prekinjeno', - continueOnError: 'Nadaljuj naprej kljub napaki', - }, - loop_one: '{{count}} Zanka', - loop_other: '{{count}} Zavoji', - input: 'Vnos', - errorResponseMethod: 'Metoda odziva napake', - output: 'Izhodna spremenljivka', - loopMaxCount: 'Maksimalno število zank', - loopVariables: 'Zanke Spremenljivke', - comma: ',', - currentLoop: 'Trenutni obrat', - currentLoopCount: 'Trenutno število zank: {{count}}', - deleteTitle: 'Izbriši vozlišče zanke?', - loopNode: 'Ciklični vozlišče', - inputMode: 'Vnosni način', - variableName: 'Spremenljivka Ime', - exitConditionTip: 'Vozić potrebuje vsaj eno izhodno pogoj.', - finalLoopVariables: 'Končne zanke spremenljivke', - deleteDesc: 'Izbris vozlišča zanke bo odstranil vse otroške vozlišča.', - breakCondition: 'Pogoji za prekinitev zanke', - error_one: '{{count}} Napaka', - error_other: '{{count}} Napak', - setLoopVariables: 'Nastavite spremenljivke znotraj obsega zanke', - totalLoopCount: 'Skupno število zank: {{count}}', - initialLoopVariables: 'Začetne spremenljivke zanke', - breakConditionTip: 'Lahko se sklicujete le na spremenljivke znotraj zank z zaključnimi pogoji in pogovorne spremenljivke.', - loopMaxCountError: 'Prosimo, vnesite veljavno največje število ponovitev, ki mora biti med 1 in {{maxCount}}', - }, - note: { - editor: { - bold: 'Poudarjeno', - medium: 'Srednje', - large: 'Velik', - link: 'Povezava', - enterUrl: 'Vnesite URL...', - small: 'Majhen', - bulletList: 'Seznam s puščicami', - unlink: 'Odstrani povezavo', - italic: 'Italika', - placeholder: 'Napiši svojo opombo...', - openLink: 'Odprto', - showAuthor: 'Prikaži avtorja', - strikethrough: 'Prečrtano', - invalidUrl: 'Nesprejemljiv URL', - }, - addNote: 'Dodaj opombo', - }, - docExtractor: { - outputVars: { - text: 'Izvlečene besedilo', - }, - supportFileTypes: 'Podpora za vrste datotek: {{types}}.', - learnMore: 'Nauči se več', - inputVar: 'Vhodna spremenljivka', - }, - listFilter: { - outputVars: { - first_record: 'Prvi zapis', - last_record: 'Zadnji zapis', - result: 'Filtriraj rezultat', - }, - filterConditionKey: 'Ključ pogoja filtra', - asc: 'ASC', - filterConditionComparisonOperator: 'Operator za primerjavo filtrovanja pogojev', - selectVariableKeyPlaceholder: 'Izberi podključ spremenljivke', - limit: 'Najboljši N', - filterConditionComparisonValue: 'Vrednost pogoja filtra', - desc: 'DESC', - inputVar: 'Vhodna spremenljivka', - orderBy: 'Naroči po', - extractsCondition: 'Izvleči N predmet', - filterCondition: 'Filtrirni pogoj', - }, - agent: { - strategy: { - configureTip: 'Prosimo, konfigurirajte agentno strategijo.', - selectTip: 'Izberite agencijsko strategijo', - searchPlaceholder: 'Išči agentno strategijo', - label: 'Agentična strategija', - shortLabel: 'Strategija', - configureTipDesc: 'Po nastavitvi agentne strategije bo ta vozlišče samodejno naložilo preostale nastavitve. Strategija bo vplivala na mehanizem večstopenjskega razmišljanja o orodju.', - tooltip: 'Različne agentne strategije določajo, kako sistem načrtuje in izvaja večstopenjske klice orodij.', - }, - pluginInstaller: { - installing: 'Namestitev', - install: 'Namestite', - }, - modelNotInMarketplace: { - title: 'Model ni nameščen', - manageInPlugins: 'Upravljanje v vtičnikih', - desc: 'Ta model je nameščen iz lokalnega ali GitHub repozitorija. Prosimo, uporabite ga po namestitvi.', - }, - modelNotSupport: { - title: 'Nepodprti model', - desc: 'V različici vtičnika, ki je nameščena, ta model ni na voljo.', - descForVersionSwitch: 'Nameščena različica vtičnika ne podpira tega modela. Kliknite za preklop na drugo različico.', - }, - modelSelectorTooltips: { - deprecated: 'Ta model je zastarelo', - }, - outputVars: { - files: { - type: 'Vrsta podpore. Zdaj podpiramo samo slike.', - upload_file_id: 'Naložite ID datoteke', - title: 'datoteke, ki jih je ustvaril agent', - url: 'URL slike', - transfer_method: 'Metoda prenosa. Vrednost je remote_url ali local_file.', - }, - json: 'agent generiran json', - text: 'vsebina, ki jo je ustvaril agent', - usage: 'informacije o uporabi modela', - }, - checkList: { - strategyNotSelected: 'Strategija ni izbrana', - }, - installPlugin: { - desc: 'Namestitev naslednjega vtičnika', - title: 'Namestite vtičnik', - changelog: 'Zapis sprememb', - cancel: 'Prekliči', - install: 'Namestite', - }, - toolbox: 'delovna orodja', - configureModel: 'Konfiguriraj Model', - toolNotInstallTooltip: '{{tool}} ni nameščen', - pluginNotInstalled: 'Ta vtičnik ni nameščen', - strategyNotInstallTooltip: '{{strategy}} ni nameščen', - modelNotInstallTooltip: 'Ta model ni nameščen.', - model: 'model', - maxIterations: 'Maksimalne iteracije', - notAuthorized: 'Nimam dovoljenja', - modelNotSelected: 'Model ni izbran', - learnMore: 'Nauči se več', - unsupportedStrategy: 'Nepodprta strategija', - pluginNotFoundDesc: 'Ta vtičnik je nameščen iz GitHuba. Prosimo, da greste v vtičnike in ga ponovo namestite.', - tools: 'Orodja', - strategyNotFoundDesc: 'V različici vtičnika, ki je nameščena, ta strategija ni zagotovljena.', - linkToPlugin: 'Povezava do vtičnikov', - strategyNotSet: 'Agentična strategija ni nastavljena', - toolNotAuthorizedTooltip: '{{tool}} Ni pooblaščen', - strategyNotFoundDescAndSwitchVersion: 'Nameščena različica vtičnika ne podpira te strategije. Kliknite za preklop na drugo različico.', - pluginNotInstalledDesc: 'Ta vtičnik je nameščen iz GitHuba. Prosimo, da greste v vtičnike in ga ponovo namestite.', - parameterSchema: 'Parametrska shema', - clickToViewParameterSchema: 'Kliknite za prikaz sheme parametrov', - }, - dataSource: { - supportedFileFormats: 'Podprte oblike zapisa datotek', - add: 'Dodajanje vira podatkov', - supportedFileFormatsPlaceholder: 'Razširitev datoteke, e.g. doc', - }, - knowledgeBase: { - chunkStructureTip: { - learnMore: 'Izvedi več', - title: 'Prosimo, izberite strukturo kosov', - message: 'Baza znanja Dify podpira tri strukture del: Splošno, Staršev-otrok in Vprašanja in odgovori. Vsaka baza znanja ima lahko samo eno strukturo. Izhod iz prejšnjega vozlišča mora biti poravnan z izbrano strukturo kosov. Upoštevajte, da izbira strukture koščkov vpliva na razpoložljive metode indeksa.', - }, - chunkIsRequired: 'Potrebna je struktura kosov', - chooseChunkStructure: 'Izbira strukture koščka', - retrievalSettingIsRequired: 'Zahtevana je nastavitev pridobivanja', - indexMethodIsRequired: 'Zahteva se indeksna metoda', - chunkStructure: 'Struktura kosov', - changeChunkStructure: 'Spreminjanje strukture kosov', - aboutRetrieval: 'o metodi iskanja.', - chunksInput: 'Kosi', - chunksInputTip: 'Vhodna spremenljivka vozlišča podatkovne baze je Chunks. Tip spremenljivke je objekt s specifično JSON shemo, ki mora biti skladna z izbrano strukturo kosov.', - chunksVariableIsRequired: 'Spremenljivka Chunks je obvezna', - embeddingModelIsRequired: 'Zahteva se vgrajevalni model', - rerankingModelIsRequired: 'Potreben je model za ponovno razvrščanje', - rerankingModelIsInvalid: 'Model prerazvrščanja ni veljaven', - embeddingModelIsInvalid: 'Vdelovalni model ni veljaven', - }, - triggerPlugin: { - authorized: 'Pooblaščeno', - notConfigured: 'Ni nastavljeno', - notAuthorized: 'Ni pooblaščeno', - selectSubscription: 'Izberite naročnino', - availableSubscriptions: 'Razpoložljive naročnine', - addSubscription: 'Dodaj novo naročnino', - removeSubscription: 'Odstrani naročnino', - subscriptionRemoved: 'Naročnina je bila uspešno odstranjena', - error: 'Napaka', - configuration: 'Konfiguracija', - remove: 'Odstrani', - or: 'ALI', - useOAuth: 'Uporabi OAuth', - useApiKey: 'Uporabi ključno besedo API', - authenticationFailed: 'Overjanje ni uspelo', - authenticationSuccess: 'Overjanje uspešno', - oauthConfigFailed: 'Konfiguracija OAuth je spodletela', - configureOAuthClient: 'Konfiguriraj OAuth odjemalca', - oauthClientDescription: 'Konfigurirajte poverilnice odjemalca OAuth za omogočanje preverjanja pristnosti', - oauthClientSaved: 'Konfiguracija OAuth odjemalca je bila uspešno shranjena', - configureApiKey: 'Konfiguriraj API ključ', - apiKeyDescription: 'Konfigurirajte poverilnice ključa API za overjanje', - apiKeyConfigured: 'API ključ je bil uspešno konfiguriran', - configurationFailed: 'Konfiguracija ni uspela', - failedToStart: 'Začetek avtentikacijskega procesa ni uspel', - credentialsVerified: 'Poverilnice so bile uspešno preverjene', - credentialVerificationFailed: 'Preverjanje poverilnic ni uspelo', - verifyAndContinue: 'Preveri in nadaljuj', - configureParameters: 'Konfiguriraj parametre', - parametersDescription: 'Konfigurirajte parametre in lastnosti sprožilnika', - configurationComplete: 'Konfiguracija je zaključena', - configurationCompleteDescription: 'Vaš sprožilec je bil uspešno konfiguriran', - configurationCompleteMessage: 'Vaša konfiguracija sprožilnika je zdaj dokončana in pripravljena za uporabo.', - parameters: 'Parametri', - properties: 'Lastnosti', - propertiesDescription: 'Dodatne konfiguracijske lastnosti za ta sprožilec', - noConfigurationRequired: 'Za ta sprožilec ni potrebna dodatna nastavitev.', - subscriptionName: 'Ime naročnine', - subscriptionNameDescription: 'Vnesite edinstveno ime za to naročnino na sprožilec', - subscriptionNamePlaceholder: 'Vnesite ime naročnine...', - subscriptionNameRequired: 'Ime naročnine je obvezno', - subscriptionRequired: 'Potrebna je naročnina', - }, - triggerSchedule: { - title: 'Urnik', - nodeTitle: 'Sprožilec urnika', - notConfigured: 'Ni konfigurirano', - useCronExpression: 'Uporabi cron izraz', - useVisualPicker: 'Uporabi vizualni izbirnik', - frequency: { - label: 'FREKVENCA', - hourly: 'Ura', - daily: 'Dnevno', - weekly: 'Tedensko', - monthly: 'Mesečno', - }, - selectFrequency: 'Izberite frekvenco', - frequencyLabel: 'Frekvenca', - nextExecution: 'Naslednja izvršitev', - weekdays: 'Delovni dnevi', - time: 'Čas', - cronExpression: 'Izraz Cron', - nextExecutionTime: 'NASLEDNJI ČAS IZVRŠITVE', - nextExecutionTimes: 'Naslednjih 5 časov izvajanja', - startTime: 'Začetni čas', - executeNow: 'Izvršitev zdaj', - selectDateTime: 'Izberite datum in čas', - hours: 'Ure', - minutes: 'Minute', - onMinute: 'Na minuto', - days: 'Dnevi', - lastDay: 'Zadnji dan', - lastDayTooltip: 'Ne vsi meseci imajo 31 dni. Uporabite možnost \'zadnji dan\', da izberete zadnji dan vsakega meseca.', - mode: 'Moda', - timezone: 'Časovni pas', - visualConfig: 'Vizualna konfiguracija', - monthlyDay: 'Mesečni dan', - executionTime: 'Čas izvajanja', - invalidTimezone: 'Neveljavna časovna cona', - invalidCronExpression: 'Neveljavna cron izraz', - noValidExecutionTime: 'Ni mogoče izračunati veljavnega časa izvajanja', - executionTimeCalculationError: 'Ni bilo mogoče izračunati časov izvajanja', - invalidFrequency: 'Neveljavna frekvenca', - invalidStartTime: 'Neveljaven čas začetka', - startTimeMustBeFuture: 'Začetni čas mora biti v prihodnosti', - invalidTimeFormat: 'Neveljaven format časa (pričakovano U:MM AM/PM)', - invalidWeekday: 'Neveljaven dan v tednu: {{weekday}}', - invalidMonthlyDay: 'Mesečni dan mora biti med 1 in 31 ali "zadnji"', - invalidOnMinute: 'Minute morajo biti med 0 in 59', - invalidExecutionTime: 'Neveljaven čas izvajanja', - executionTimeMustBeFuture: 'Čas izvajanja mora biti v prihodnosti', - }, - triggerWebhook: { - title: 'Sprožilec spletnega ključa', - nodeTitle: '🔗 Sprožilec Webhook', - configPlaceholder: 'Konfiguracija sprožilca webhook bo izvedena tukaj', - webhookUrl: 'URL spletnega kljuka', - webhookUrlPlaceholder: 'Kliknite ustvari za ustvarjanje URL-ja spletnega ključa', - generate: 'Ustvari', - copy: 'Kopiraj', - test: 'Preizkus', - urlGenerated: 'URL spletnega ključa je bil uspešno ustvarjen', - urlGenerationFailed: 'Ni bilo mogoče ustvariti URL-ja spletnega vtiča', - urlCopied: 'URL je bil kopiran v odložišče', - method: 'Metoda', - contentType: 'Vrsta vsebine', - queryParameters: 'Parametri poizvedbe', - headerParameters: 'Parametri glave', - requestBodyParameters: 'Parametri telesa zahteve', - parameterName: 'Ime spremenljivke', - varName: 'Ime spremenljivke', - varType: 'Tip', - varNamePlaceholder: 'Vnesite ime spremenljivke...', - required: 'Zahtevano', - addParameter: 'Dodaj', - addHeader: 'Dodaj', - noParameters: 'Nobeni parametri niso nastavljeni', - noQueryParameters: 'Ni konfiguriranih parametrov poizvedbe', - noHeaders: 'Brez konfiguriranih glavi', - noBodyParameters: 'Nobenih telesnih parametrov ni konfiguriranih', - debugUrlTitle: 'Za testne zagon vedno uporabite ta URL', - debugUrlCopy: 'Kliknite, da kopirate', - debugUrlCopied: 'Kopirano!', - debugUrlPrivateAddressWarning: 'Ta URL se zdi notranji naslov, kar lahko povzroči, da zahtevki webhooka ne uspejo. TRIGGER_URL lahko spremenite v javni naslov.', - errorHandling: 'Ravnanje z napakami', - errorStrategy: 'Ravnanje z napakami', - responseConfiguration: 'Odgovor', - asyncMode: 'Asinhroni način', - statusCode: 'Statusna koda', - responseBody: 'Telo odgovora', - responseBodyPlaceholder: 'Napišite svoje telo odgovora tukaj', - headers: 'Glave', - validation: { - webhookUrlRequired: 'URL spletnega ključa je obvezen', - invalidParameterType: 'Neveljavna vrsta parametra "{{type}}" za parameter "{{name}}"', - }, - }, - }, - tracing: { - stopBy: 'Ohranjaj se pri {{user}}', - }, - versionHistory: { - filter: { - all: 'Vse', - reset: 'Ponastavi filter', - onlyShowNamedVersions: 'Prikaži samo poimenovane različice', - onlyYours: 'Samo tvoje', - empty: 'Ni najdene zgodovine različic, ki bi se ujemala.', - }, - editField: { - title: 'Naslov', - titleLengthLimit: 'Naslov ne sme presegati {{limit}} znakov', - releaseNotesLengthLimit: 'Opombe o različici ne smejo presegati {{limit}} znakov.', - releaseNotes: 'Opombe o izdaji', - }, - action: { - deleteSuccess: 'Različica izbrisana', - deleteFailure: 'Brisanje različice ni uspelo', - updateFailure: 'Posodobitev različice ni uspela', - restoreSuccess: 'Obnovljena različica', - restoreFailure: 'Obnavljanje različice ni uspelo', - updateSuccess: 'Različica posodobljena', - copyIdSuccess: 'ID kopiran v odložišče', - }, - defaultName: 'Nepodpisana različica', - deletionTip: 'Izbris je nepovraten, prosim potrdite.', - currentDraft: 'Trenutni osnutek', - title: 'Različice', - editVersionInfo: 'Uredi informacije o različici', - latest: 'Najnovejši', - nameThisVersion: 'Poimenujte to različico', - releaseNotesPlaceholder: 'Opisujte, kaj se je spremenilo', - restorationTip: 'Po obnovitvi različice bo trenutni osnutek prepisan.', - copyId: 'Kopiraj ID', - }, - debug: { - noData: { - runThisNode: 'Zagon te vozlišča', - description: 'Rezultati zadnjega zagona bodo prikazani tukaj', - }, - variableInspect: { - trigger: { - stop: 'Ustavi se', - normal: 'Inspiciranje spremenljivk', - clear: 'Jasno', - cached: 'Poglej shranjene spremenljivke', - running: 'Shranjevanje statusa delovanja', - }, - emptyLink: 'Nauči se več', - chatNode: 'Pogovor', - envNode: 'Okolje', - systemNode: 'Sistem', - view: 'Oglej si dnevnik', - title: 'Inspiciranje spremenljivk', - clearNode: 'Počisti predpomnjeno spremenljivko', - clearAll: 'Ponastavi vse', - reset: 'Ponastavi na zadnjo vrednost izvajanja', - edited: 'Uredjeno', - resetConversationVar: 'Ponastavi spremenljivko pogovora na privzeto vrednost', - emptyTip: 'Po prehodu skozi vozlišče na platnu ali po zagonu vozlišča korak za korakom lahko v pregledu spremenljivk vidite trenutno vrednost spremenljivke vozlišča.', - export: 'izvoz', - exportToolTip: 'Izvozi spremenljivko kot datoteko', - largeDataNoExport: 'Veliki podatki – samo delni predogled', - largeData: 'Veliki podatki, predogled samo za branje. Izvozi, če si želite ogledati vse.', - listening: { - title: 'Poslušanje dogodkov iz sprožilcev...', - tip: 'Zdaj lahko simulirate sprožilce dogodkov tako, da pošljete testne zahteve na HTTP {{nodeName}} končno točko ali jo uporabite kot URL za klicanje povratne funkcije za odpravljanje napak v živo. Vse izhode lahko neposredno ogledate v inšpektorju spremenljivk.', - tipPlugin: 'Zdaj lahko ustvarjate dogodke v {{- pluginName}} in pridobivate izhode iz teh dogodkov v Inšpektorju spremenljivk.', - tipSchedule: 'Poslušanje dogodkov iz sprožilcev urnika.\nNaslednje načrtovano izvajanje: {{nextTriggerTime}}', - tipFallback: 'Počakajte na prihajajoče sprožilne dogodke. Izhodi se bodo prikazali tukaj.', - defaultNodeName: 'ta sprožilec', - defaultPluginName: 'ta vtičnik sproži', - defaultScheduleTime: 'Ni konfigurirano', - selectedTriggers: 'izbrani sprožilci', - stopButton: 'Ustavi', - }, - }, - settingsTab: 'Nastavitve', - lastRunTab: 'Zadnji zagon', - relations: { - dependencies: 'Odvisnosti', - dependents: 'Odvisnim', - noDependents: 'Brez vzdrževanih oseb', - dependentsDescription: 'Vozlišča, ki se zanašajo na to vozlišče', - dependenciesDescription: 'Vozlišča, na katera se zanaša to vozlišče', - noDependencies: 'Brez odvisnosti', - }, - relationsTab: 'Odnose', - copyLastRun: 'Kopiraj zadnji zagon', - copyLastRunError: 'Kopiranje vhodov zadnjega zagona ni uspelo', - noLastRunFound: 'Nobenega prejšnjega zagona ni bilo najdenega.', - noMatchingInputsFound: 'Ni podatkov, ki bi ustrezali prejšnjemu zagonu', - lastOutput: 'Nazadnje izhod', - lastRunInputsCopied: '{{count}} vhod(i) kopiran(i) iz zadnjega zagona', - }, - sidebar: { - exportWarning: 'Izvozi trenutna shranjena različica', - exportWarningDesc: 'To bo izvozilo trenutno shranjeno različico vašega delovnega toka. Če imate neshranjene spremembe v urejevalniku, jih najprej shranite z uporabo možnosti izvoza na platnu delovnega toka.', - }, - publishLimit: { - startNodeTitlePrefix: 'Nadgradi na', - startNodeTitleSuffix: 'odklene neomejene sprožilce na delovni tok', - startNodeDesc: 'Dosegli ste omejitev 2 sprožilcev na delovni tok za ta načrt. Nadgradite, da lahko objavite ta delovni tok.', - }, - error: { - startNodeRequired: 'Prosimo, najprej dodajte začetni vozel pred {{operation}}', - operations: { - connectingNodes: 'povezovalni vozel', - addingNodes: 'dodajanje vozlišč', - modifyingWorkflow: 'spreminjanje delovnega toka', - updatingWorkflow: 'posodabljanje delovnega procesa', - }, - }, - customWebhook: 'Prilagojeni spletni kavelj', - difyTeam: 'Ekipa Dify', - triggerStatus: { - enabled: 'SPROŽILEC', - disabled: 'SPROŽILEC • ONEMOGOČENO', - }, - entryNodeStatus: { - enabled: 'ZAČETEK', - disabled: 'ZAČNI • ONEMOGOČENO', - }, - onboarding: { - title: 'Izberite začetno vozlišče za začetek', - description: 'Različni začetni vozli imajo različne zmogljivosti. Brez skrbi, vedno jih lahko kasneje spremenite.', - userInputFull: 'Uporabniški vnos (izvorna začetna točka)', - userInputDescription: 'Začetni vozel, ki omogoča nastavitev uporabniških vhodnih spremenljivk, z zmogljivostmi orodij za spletno aplikacijo, API storitev, MCP strežnik in potek dela.', - trigger: 'Sprožilec', - triggerDescription: 'Sprožilci lahko služijo kot začetna točka delovnega toka, na primer razporejene naloge, po meri narejeni spletni oglasi ali integracije z drugimi aplikacijami.', - back: 'Nazaj', - learnMore: 'Izvedi več', - aboutStartNode: 'o začetnem vozelu.', - escTip: { - press: 'Tisk', - key: 'esc', - toDismiss: 'odpustiti', - }, - }, -} - -export default translation diff --git a/web/i18n/th-TH/app-annotation.json b/web/i18n/th-TH/app-annotation.json new file mode 100644 index 0000000000..ea09043186 --- /dev/null +++ b/web/i18n/th-TH/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "คำ อธิบาย", + "name": "คําอธิบายประกอบ ตอบกลับ", + "editBy": "ตอบแก้ไขโดย {{author}}", + "noData": { + "title": "ไม่มีคําอธิบายประกอบ", + "description": "คุณสามารถแก้ไขคําอธิบายประกอบระหว่างการดีบักแอปหรือนําเข้าคําอธิบายประกอบจํานวนมากได้ที่นี่เพื่อการตอบกลับคุณภาพสูง" + }, + "table": { + "header": { + "question": "ปัญหา", + "answer": "ตอบ", + "createdAt": "สร้างเมื่อ", + "hits": "ฮิต", + "actions": "การกระทํา", + "addAnnotation": "เพิ่มคําอธิบายประกอบ", + "bulkImport": "นําเข้าจํานวนมาก", + "bulkExport": "ส่งออกจํานวนมาก", + "clearAll": "ล้างคําอธิบายประกอบทั้งหมด", + "clearAllConfirm": "ลบหมายเหตุต่างๆ ทั้งหมดหรือไม่?" + } + }, + "editModal": { + "title": "แก้ไขคําอธิบายประกอบ ตอบกลับ", + "queryName": "การสอบถามของผู้ใช้", + "answerName": "บอทนักเล่าเรื่อง", + "yourAnswer": "คําตอบของคุณ", + "answerPlaceholder": "พิมพ์คําตอบของคุณที่นี่", + "yourQuery": "คําถามของคุณ", + "queryPlaceholder": "พิมพ์แบบสอบถามของคุณที่นี่", + "removeThisCache": "ลบคําอธิบายประกอบนี้", + "createdAt": "สร้างที่" + }, + "addModal": { + "title": "เพิ่มคําอธิบายประกอบตอบกลับ", + "queryName": "ปัญหา", + "answerName": "ตอบ", + "answerPlaceholder": "พิมพ์คําตอบที่นี่", + "queryPlaceholder": "พิมพ์ query ที่นี่", + "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": "โมเดลเวกเตอร์ข้อความคําอธิบายประกอบ โมเดลการสลับจะถูกฝังใหม่ส่งผลให้มีค่าใช้จ่ายเพิ่มเติม", + "list": { + "delete": { + "title": "คุณแน่ใจหรือว่าต้องการลบ?" + } + }, + "batchAction": { + "delete": "ลบ", + "selected": "เลือกไว้", + "cancel": "ยกเลิก" + } +} diff --git a/web/i18n/th-TH/app-annotation.ts b/web/i18n/th-TH/app-annotation.ts deleted file mode 100644 index 60598267c3..0000000000 --- a/web/i18n/th-TH/app-annotation.ts +++ /dev/null @@ -1,98 +0,0 @@ -const translation = { - title: 'คำ อธิบาย', - name: 'คําอธิบายประกอบ ตอบกลับ', - editBy: 'ตอบแก้ไขโดย {{author}}', - noData: { - title: 'ไม่มีคําอธิบายประกอบ', - description: 'คุณสามารถแก้ไขคําอธิบายประกอบระหว่างการดีบักแอปหรือนําเข้าคําอธิบายประกอบจํานวนมากได้ที่นี่เพื่อการตอบกลับคุณภาพสูง', - }, - table: { - header: { - question: 'ปัญหา', - answer: 'ตอบ', - createdAt: 'สร้างเมื่อ', - hits: 'ฮิต', - actions: 'การกระทํา', - addAnnotation: 'เพิ่มคําอธิบายประกอบ', - bulkImport: 'นําเข้าจํานวนมาก', - bulkExport: 'ส่งออกจํานวนมาก', - clearAll: 'ล้างคําอธิบายประกอบทั้งหมด', - clearAllConfirm: 'ลบหมายเหตุต่างๆ ทั้งหมดหรือไม่?', - }, - }, - editModal: { - title: 'แก้ไขคําอธิบายประกอบ ตอบกลับ', - queryName: 'การสอบถามของผู้ใช้', - answerName: 'บอทนักเล่าเรื่อง', - yourAnswer: 'คําตอบของคุณ', - answerPlaceholder: 'พิมพ์คําตอบของคุณที่นี่', - yourQuery: 'คําถามของคุณ', - queryPlaceholder: 'พิมพ์แบบสอบถามของคุณที่นี่', - removeThisCache: 'ลบคําอธิบายประกอบนี้', - createdAt: 'สร้างที่', - }, - addModal: { - title: 'เพิ่มคําอธิบายประกอบตอบกลับ', - queryName: 'ปัญหา', - answerName: 'ตอบ', - answerPlaceholder: 'พิมพ์คําตอบที่นี่', - queryPlaceholder: 'พิมพ์ query ที่นี่', - 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: 'โมเดลเวกเตอร์ข้อความคําอธิบายประกอบ โมเดลการสลับจะถูกฝังใหม่ส่งผลให้มีค่าใช้จ่ายเพิ่มเติม', - list: { - delete: { - title: 'คุณแน่ใจหรือว่าต้องการลบ?', - }, - }, - batchAction: { - delete: 'ลบ', - selected: 'เลือกไว้', - cancel: 'ยกเลิก', - }, -} - -export default translation diff --git a/web/i18n/th-TH/app-api.json b/web/i18n/th-TH/app-api.json new file mode 100644 index 0000000000..f035d1882f --- /dev/null +++ b/web/i18n/th-TH/app-api.json @@ -0,0 +1,83 @@ +{ + "apiServer": "เซิร์ฟเวอร์ API", + "apiKey": "คีย์ API", + "status": "สถานะ", + "disabled": "พิการ", + "ok": "ให้บริการ", + "copy": "ลอก", + "copied": "คัด ลอก", + "regenerate": "สร้างใหม่", + "play": "เล่น", + "pause": "หยุด", + "playing": "เล่น", + "loading": "การโหลด", + "merMaid": { + "rerender": "ทําซ้ํา Rerender" + }, + "never": "ไม่เคย", + "apiKeyModal": { + "apiSecretKey": "คีย์ลับ API", + "apiSecretKeyTips": "เพื่อป้องกันการละเมิด API ให้ปกป้องคีย์ API ของคุณ หลีกเลี่ยงการใช้เป็นข้อความธรรมดาในโค้ดส่วนหน้า :)", + "createNewSecretKey": "สร้างคีย์ลับใหม่", + "secretKey": "กุญแจลับ", + "created": "สร้าง", + "lastUsed": "ใช้ล่าสุด", + "generateTips": "เก็บกุญแจนี้ไว้ในที่ปลอดภัยและเข้าถึงได้" + }, + "actionMsg": { + "deleteConfirmTitle": "ลบคีย์ลับนี้?", + "deleteConfirmTips": "การดําเนินการนี้ไม่สามารถยกเลิกได้", + "ok": "ตกลง, ได้" + }, + "completionMode": { + "title": "API แอปที่สมบูรณ์", + "info": "สําหรับการสร้างข้อความคุณภาพสูง เช่น บทความ บทสรุป และการแปล ให้ใช้ API ข้อความที่สมบูรณ์กับการป้อนข้อมูลของผู้ใช้ การสร้างข้อความอาศัยพารามิเตอร์โมเดลและเทมเพลตพร้อมท์ที่ตั้งค่าไว้ใน Dify Prompt Engineering", + "createCompletionApi": "สร้างข้อความเสร็จสมบูรณ์", + "createCompletionApiTip": "สร้างข้อความเสร็จสิ้นเพื่อรองรับโหมดคําถามและคําตอบ", + "inputsTips": "(ไม่บังคับ) ระบุฟิลด์อินพุตของผู้ใช้เป็นคู่คีย์-ค่า ซึ่งสอดคล้องกับตัวแปรใน Prompt Eng คีย์คือชื่อตัวแปร ค่าคือค่าพารามิเตอร์ ถ้าชนิดฟิลด์เป็น เลือก ค่าที่ส่งจะต้องเป็นหนึ่งในตัวเลือกที่ตั้งไว้ล่วงหน้า", + "queryTips": "เนื้อหาข้อความที่ผู้ใช้ป้อน", + "blocking": "ประเภทการบล็อก รอให้การดําเนินการเสร็จสมบูรณ์และส่งคืนผลลัพธ์ (คําขออาจถูกขัดจังหวะหากกระบวนการใช้เวลานาน)", + "streaming": "การสตรีมกลับมา การใช้งานการส่งคืนการสตรีมตาม SSE (เหตุการณ์ที่ส่งโดยเซิร์ฟเวอร์)", + "messageFeedbackApi": "ข้อความแสดงความคิดเห็น (ชอบ)", + "messageFeedbackApiTip": "ให้คะแนนข้อความที่ได้รับในนามของผู้ใช้ปลายทางที่มีการชอบหรือไม่ชอบ ข้อมูลนี้สามารถมองเห็นได้ในหน้า Logs & Annotations และใช้สําหรับการปรับแต่งโมเดลในอนาคต", + "messageIDTip": "รหัสข้อความ", + "ratingTip": "ชอบหรือไม่ชอบ null คือเลิกทํา", + "parametersApi": "รับข้อมูลพารามิเตอร์แอปพลิเคชัน", + "parametersApiTip": "ดึงพารามิเตอร์อินพุตที่กําหนดค่าไว้ รวมถึงชื่อตัวแปร ชื่อฟิลด์ ชนิด และค่าเริ่มต้น โดยทั่วไปจะใช้สําหรับแสดงฟิลด์เหล่านี้ในฟอร์มหรือกรอกค่าเริ่มต้นหลังจากโหลดไคลเอ็นต์" + }, + "chatMode": { + "title": "API แอปแชท", + "info": "สําหรับแอปการสนทนาอเนกประสงค์ที่ใช้รูปแบบ Q&A ให้เรียก API ข้อความแชทเพื่อเริ่มการสนทนา รักษาการสนทนาอย่างต่อเนื่องโดยส่ง conversation_id ที่ส่งคืน พารามิเตอร์การตอบสนองและเทมเพลตขึ้นอยู่กับ Dify Prompt Eng การตั้งค่า", + "createChatApi": "สร้างข้อความแชท", + "createChatApiTip": "สร้างข้อความการสนทนาใหม่หรือดําเนินการต่อในการสนทนาที่มีอยู่", + "inputsTips": "(ไม่บังคับ) ระบุฟิลด์อินพุตของผู้ใช้เป็นคู่คีย์-ค่า ซึ่งสอดคล้องกับตัวแปรใน Prompt Eng คีย์คือชื่อตัวแปร ค่าคือค่าพารามิเตอร์ ถ้าชนิดฟิลด์เป็น เลือก ค่าที่ส่งจะต้องเป็นหนึ่งในตัวเลือกที่ตั้งไว้ล่วงหน้า", + "queryTips": "เนื้อหาการป้อนข้อมูล/คําถามของผู้ใช้", + "blocking": "ประเภทการบล็อก รอให้การดําเนินการเสร็จสมบูรณ์และส่งคืนผลลัพธ์ (คําขออาจถูกขัดจังหวะหากกระบวนการใช้เวลานาน)", + "streaming": "การสตรีมกลับมา การใช้งานการส่งคืนการสตรีมตาม SSE (เหตุการณ์ที่ส่งโดยเซิร์ฟเวอร์)", + "conversationIdTip": "(ไม่บังคับ) รหัสการสนทนา: เว้นว่างไว้สําหรับการสนทนาครั้งแรก ส่ง conversation_id จากบริบทเพื่อสนทนาต่อ", + "messageFeedbackApi": "ข้อความความคิดเห็นของผู้ใช้เทอร์มินัล เช่น", + "messageFeedbackApiTip": "ให้คะแนนข้อความที่ได้รับในนามของผู้ใช้ปลายทางที่มีการชอบหรือไม่ชอบ ข้อมูลนี้สามารถมองเห็นได้ในหน้า Logs & Annotations และใช้สําหรับการปรับแต่งโมเดลในอนาคต", + "messageIDTip": "รหัสข้อความ", + "ratingTip": "ชอบหรือไม่ชอบ null คือเลิกทํา", + "chatMsgHistoryApi": "รับข้อความประวัติการแชท", + "chatMsgHistoryApiTip": "หน้าแรกส่งคืนแถบ 'ขีดจํากัด' ล่าสุด ซึ่งอยู่ในลําดับที่กลับกัน", + "chatMsgHistoryConversationIdTip": "รหัสการสนทนา", + "chatMsgHistoryFirstId": "ID ของเรกคอร์ดแชทแรกบนหน้าปัจจุบัน ค่าเริ่มต้นคือไม่มี", + "chatMsgHistoryLimit": "จํานวนแชทที่ส่งคืนในคําขอเดียว", + "conversationsListApi": "รับรายการการสนทนา", + "conversationsListApiTip": "รับรายการเซสชันของผู้ใช้ปัจจุบัน โดยค่าเริ่มต้น 20 เซสชันล่าสุดจะถูกส่งคืน", + "conversationsListFirstIdTip": "รหัสของเรกคอร์ดสุดท้ายบนหน้าปัจจุบัน ค่าเริ่มต้นไม่มี", + "conversationsListLimitTip": "จํานวนแชทที่ส่งคืนในคําขอเดียว", + "conversationRenamingApi": "การเปลี่ยนชื่อการสนทนา", + "conversationRenamingApiTip": "เปลี่ยนชื่อการสนทนา ชื่อจะแสดงในอินเทอร์เฟซไคลเอ็นต์แบบหลายเซสชัน", + "conversationRenamingNameTip": "ชื่อใหม่", + "parametersApi": "รับข้อมูลพารามิเตอร์แอปพลิเคชัน", + "parametersApiTip": "ดึงพารามิเตอร์อินพุตที่กําหนดค่าไว้ รวมถึงชื่อตัวแปร ชื่อฟิลด์ ชนิด และค่าเริ่มต้น โดยทั่วไปจะใช้สําหรับแสดงฟิลด์เหล่านี้ในฟอร์มหรือกรอกค่าเริ่มต้นหลังจากโหลดไคลเอ็นต์" + }, + "develop": { + "requestBody": "เนื้อหาคําขอ", + "pathParams": "พารามิเตอร์เส้นทาง", + "query": "สอบถาม", + "toc": "เนื้อหา" + } +} diff --git a/web/i18n/th-TH/app-api.ts b/web/i18n/th-TH/app-api.ts deleted file mode 100644 index e8372508df..0000000000 --- a/web/i18n/th-TH/app-api.ts +++ /dev/null @@ -1,85 +0,0 @@ -const translation = { - apiServer: 'เซิร์ฟเวอร์ API', - apiKey: 'คีย์ API', - status: 'สถานะ', - disabled: 'พิการ', - ok: 'ให้บริการ', - copy: 'ลอก', - copied: 'คัด ลอก', - regenerate: 'สร้างใหม่', - play: 'เล่น', - pause: 'หยุด', - playing: 'เล่น', - loading: 'การโหลด', - merMaid: { - rerender: 'ทําซ้ํา Rerender', - }, - never: 'ไม่เคย', - apiKeyModal: { - apiSecretKey: 'คีย์ลับ API', - apiSecretKeyTips: 'เพื่อป้องกันการละเมิด API ให้ปกป้องคีย์ API ของคุณ หลีกเลี่ยงการใช้เป็นข้อความธรรมดาในโค้ดส่วนหน้า :)', - createNewSecretKey: 'สร้างคีย์ลับใหม่', - secretKey: 'กุญแจลับ', - created: 'สร้าง', - lastUsed: 'ใช้ล่าสุด', - generateTips: 'เก็บกุญแจนี้ไว้ในที่ปลอดภัยและเข้าถึงได้', - }, - actionMsg: { - deleteConfirmTitle: 'ลบคีย์ลับนี้?', - deleteConfirmTips: 'การดําเนินการนี้ไม่สามารถยกเลิกได้', - ok: 'ตกลง, ได้', - }, - completionMode: { - title: 'API แอปที่สมบูรณ์', - info: 'สําหรับการสร้างข้อความคุณภาพสูง เช่น บทความ บทสรุป และการแปล ให้ใช้ API ข้อความที่สมบูรณ์กับการป้อนข้อมูลของผู้ใช้ การสร้างข้อความอาศัยพารามิเตอร์โมเดลและเทมเพลตพร้อมท์ที่ตั้งค่าไว้ใน Dify Prompt Engineering', - createCompletionApi: 'สร้างข้อความเสร็จสมบูรณ์', - createCompletionApiTip: 'สร้างข้อความเสร็จสิ้นเพื่อรองรับโหมดคําถามและคําตอบ', - inputsTips: '(ไม่บังคับ) ระบุฟิลด์อินพุตของผู้ใช้เป็นคู่คีย์-ค่า ซึ่งสอดคล้องกับตัวแปรใน Prompt Eng คีย์คือชื่อตัวแปร ค่าคือค่าพารามิเตอร์ ถ้าชนิดฟิลด์เป็น เลือก ค่าที่ส่งจะต้องเป็นหนึ่งในตัวเลือกที่ตั้งไว้ล่วงหน้า', - queryTips: 'เนื้อหาข้อความที่ผู้ใช้ป้อน', - blocking: 'ประเภทการบล็อก รอให้การดําเนินการเสร็จสมบูรณ์และส่งคืนผลลัพธ์ (คําขออาจถูกขัดจังหวะหากกระบวนการใช้เวลานาน)', - streaming: 'การสตรีมกลับมา การใช้งานการส่งคืนการสตรีมตาม SSE (เหตุการณ์ที่ส่งโดยเซิร์ฟเวอร์)', - messageFeedbackApi: 'ข้อความแสดงความคิดเห็น (ชอบ)', - messageFeedbackApiTip: 'ให้คะแนนข้อความที่ได้รับในนามของผู้ใช้ปลายทางที่มีการชอบหรือไม่ชอบ ข้อมูลนี้สามารถมองเห็นได้ในหน้า Logs & Annotations และใช้สําหรับการปรับแต่งโมเดลในอนาคต', - messageIDTip: 'รหัสข้อความ', - ratingTip: 'ชอบหรือไม่ชอบ null คือเลิกทํา', - parametersApi: 'รับข้อมูลพารามิเตอร์แอปพลิเคชัน', - parametersApiTip: 'ดึงพารามิเตอร์อินพุตที่กําหนดค่าไว้ รวมถึงชื่อตัวแปร ชื่อฟิลด์ ชนิด และค่าเริ่มต้น โดยทั่วไปจะใช้สําหรับแสดงฟิลด์เหล่านี้ในฟอร์มหรือกรอกค่าเริ่มต้นหลังจากโหลดไคลเอ็นต์', - }, - chatMode: { - title: 'API แอปแชท', - info: 'สําหรับแอปการสนทนาอเนกประสงค์ที่ใช้รูปแบบ Q&A ให้เรียก API ข้อความแชทเพื่อเริ่มการสนทนา รักษาการสนทนาอย่างต่อเนื่องโดยส่ง conversation_id ที่ส่งคืน พารามิเตอร์การตอบสนองและเทมเพลตขึ้นอยู่กับ Dify Prompt Eng การตั้งค่า', - createChatApi: 'สร้างข้อความแชท', - createChatApiTip: 'สร้างข้อความการสนทนาใหม่หรือดําเนินการต่อในการสนทนาที่มีอยู่', - inputsTips: '(ไม่บังคับ) ระบุฟิลด์อินพุตของผู้ใช้เป็นคู่คีย์-ค่า ซึ่งสอดคล้องกับตัวแปรใน Prompt Eng คีย์คือชื่อตัวแปร ค่าคือค่าพารามิเตอร์ ถ้าชนิดฟิลด์เป็น เลือก ค่าที่ส่งจะต้องเป็นหนึ่งในตัวเลือกที่ตั้งไว้ล่วงหน้า', - queryTips: 'เนื้อหาการป้อนข้อมูล/คําถามของผู้ใช้', - blocking: 'ประเภทการบล็อก รอให้การดําเนินการเสร็จสมบูรณ์และส่งคืนผลลัพธ์ (คําขออาจถูกขัดจังหวะหากกระบวนการใช้เวลานาน)', - streaming: 'การสตรีมกลับมา การใช้งานการส่งคืนการสตรีมตาม SSE (เหตุการณ์ที่ส่งโดยเซิร์ฟเวอร์)', - conversationIdTip: '(ไม่บังคับ) รหัสการสนทนา: เว้นว่างไว้สําหรับการสนทนาครั้งแรก ส่ง conversation_id จากบริบทเพื่อสนทนาต่อ', - messageFeedbackApi: 'ข้อความความคิดเห็นของผู้ใช้เทอร์มินัล เช่น', - messageFeedbackApiTip: 'ให้คะแนนข้อความที่ได้รับในนามของผู้ใช้ปลายทางที่มีการชอบหรือไม่ชอบ ข้อมูลนี้สามารถมองเห็นได้ในหน้า Logs & Annotations และใช้สําหรับการปรับแต่งโมเดลในอนาคต', - messageIDTip: 'รหัสข้อความ', - ratingTip: 'ชอบหรือไม่ชอบ null คือเลิกทํา', - chatMsgHistoryApi: 'รับข้อความประวัติการแชท', - chatMsgHistoryApiTip: 'หน้าแรกส่งคืนแถบ \'ขีดจํากัด\' ล่าสุด ซึ่งอยู่ในลําดับที่กลับกัน', - chatMsgHistoryConversationIdTip: 'รหัสการสนทนา', - chatMsgHistoryFirstId: 'ID ของเรกคอร์ดแชทแรกบนหน้าปัจจุบัน ค่าเริ่มต้นคือไม่มี', - chatMsgHistoryLimit: 'จํานวนแชทที่ส่งคืนในคําขอเดียว', - conversationsListApi: 'รับรายการการสนทนา', - conversationsListApiTip: 'รับรายการเซสชันของผู้ใช้ปัจจุบัน โดยค่าเริ่มต้น 20 เซสชันล่าสุดจะถูกส่งคืน', - conversationsListFirstIdTip: 'รหัสของเรกคอร์ดสุดท้ายบนหน้าปัจจุบัน ค่าเริ่มต้นไม่มี', - conversationsListLimitTip: 'จํานวนแชทที่ส่งคืนในคําขอเดียว', - conversationRenamingApi: 'การเปลี่ยนชื่อการสนทนา', - conversationRenamingApiTip: 'เปลี่ยนชื่อการสนทนา ชื่อจะแสดงในอินเทอร์เฟซไคลเอ็นต์แบบหลายเซสชัน', - conversationRenamingNameTip: 'ชื่อใหม่', - parametersApi: 'รับข้อมูลพารามิเตอร์แอปพลิเคชัน', - parametersApiTip: 'ดึงพารามิเตอร์อินพุตที่กําหนดค่าไว้ รวมถึงชื่อตัวแปร ชื่อฟิลด์ ชนิด และค่าเริ่มต้น โดยทั่วไปจะใช้สําหรับแสดงฟิลด์เหล่านี้ในฟอร์มหรือกรอกค่าเริ่มต้นหลังจากโหลดไคลเอ็นต์', - }, - develop: { - requestBody: 'เนื้อหาคําขอ', - pathParams: 'พารามิเตอร์เส้นทาง', - query: 'สอบถาม', - toc: 'เนื้อหา', - }, -} - -export default translation diff --git a/web/i18n/th-TH/app-debug.json b/web/i18n/th-TH/app-debug.json new file mode 100644 index 0000000000..51e2e9ee4b --- /dev/null +++ b/web/i18n/th-TH/app-debug.json @@ -0,0 +1,562 @@ +{ + "feature": { + "fileUpload": { + "title": "การอัปโหลดไฟล์", + "description": "กล่องข้อความแชทช่วยให้สามารถอัปโหลดรูปภาพ เอกสาร และไฟล์อื่นๆ ได้", + "supportedTypes": "ประเภทไฟล์ที่รองรับ", + "numberLimit": "จำนวนสูงสุดที่อัปโหลดได้", + "modalTitle": "การตั้งค่าการอัปโหลดไฟล์" + }, + "imageUpload": { + "title": "การอัปโหลดรูปภาพ", + "description": "อนุญาตให้อัปโหลดรูปภาพได้", + "supportedTypes": "ประเภทไฟล์ที่รองรับ", + "numberLimit": "จำนวนสูงสุดที่อัปโหลดได้", + "modalTitle": "การตั้งค่าการอัปโหลดรูปภาพ" + }, + "bar": { + "empty": "เปิดใช้งานคุณสมบัติเพื่อเพิ่มประสบการณ์ผู้ใช้ของเว็บแอป", + "enableText": "เปิดใช้งานคุณสมบัติแล้ว", + "manage": "จัดการ" + }, + "documentUpload": { + "title": "เอกสาร", + "description": "การเปิดใช้งานเอกสารจะทำให้โมเดลสามารถรับเอกสารและตอบคำถามเกี่ยวกับเอกสารเหล่านั้นได้" + }, + "audioUpload": { + "title": "เสียง", + "description": "การเปิดใช้งานเสียงจะทำให้โมเดลสามารถประมวลผลไฟล์เสียงเพื่อการถอดข้อความและการวิเคราะห์ได้" + }, + "groupChat": { + "title": "ปรับปรุงแชท", + "description": "เพิ่มการตั้งค่าก่อนการสนทนาสําหรับแอปสามารถปรับปรุงประสบการณ์ของผู้ใช้ได้" + }, + "groupExperience": { + "title": "ปรับปรุงประสบการณ์" + }, + "conversationOpener": { + "description": "ในแอปแชท ประโยคแรกที่ AI พูดกับผู้ใช้อย่างแข็งขันมักจะใช้เป็นการต้อนรับ", + "title": "ที่เปิดการสนทนา" + }, + "suggestedQuestionsAfterAnswer": { + "title": "ติดตาม", + "resDes": "3 ข้อเสนอแนะสําหรับผู้ใช้คําถามถัดไป", + "tryToAsk": "ลองถาม", + "description": "การตั้งค่าคําแนะนําคําถามถัดไปจะช่วยให้ผู้ใช้แชทได้ดีขึ้น" + }, + "moreLikeThis": { + "title": "เพิ่มเติมเช่นนี้", + "tip": "การใช้คุณสมบัตินี้จะมีค่าใช้จ่ายโทเค็นเพิ่มเติม", + "generateNumTip": "จํานวนครั้งที่สร้างขึ้นแต่ละครั้ง", + "description": "สร้างข้อความหลายข้อความพร้อมกัน จากนั้นแก้ไขและสร้างต่อไป" + }, + "speechToText": { + "description": "สามารถใช้การป้อนข้อมูลด้วยเสียงในการแชทได้", + "title": "คําพูดเป็นข้อความ", + "resDes": "เปิดใช้งานการป้อนข้อมูลด้วยเสียง" + }, + "textToSpeech": { + "title": "ข้อความเป็นคําพูด", + "resDes": "เปิดใช้งานข้อความเป็นเสียง", + "description": "ข้อความการสนทนาสามารถแปลงเป็นคําพูดได้" + }, + "citation": { + "title": "การอ้างอิงและการระบุแหล่งที่มา", + "resDes": "เปิดใช้งานการอ้างอิงและการระบุแหล่งที่มา", + "description": "แสดงเอกสารต้นฉบับและส่วนที่มาของเนื้อหาที่สร้างขึ้น" + }, + "annotation": { + "scoreThreshold": { + "accurateMatch": "การจับคู่ที่แม่นยํา", + "description": "ใช้เพื่อกําหนดเกณฑ์ความคล้ายคลึงกันสําหรับการตอบกลับคําอธิบายประกอบ", + "easyMatch": "จับคู่ง่าย", + "title": "เกณฑ์คะแนน" + }, + "matchVariable": { + "title": "ตัวแปรการจับคู่", + "choosePlaceholder": "เลือกตัวแปรการจับคู่" + }, + "removeConfirm": "ลบคําอธิบายประกอบนี้ ?", + "cacheManagement": "คำ อธิบาย", + "title": "คําอธิบายประกอบ ตอบกลับ", + "remove": "ถอด", + "resDes": "เปิดใช้งานการตอบสนองคําอธิบายประกอบ", + "add": "เพิ่มคําอธิบายประกอบ", + "edit": "แก้ไขคําอธิบายประกอบ", + "cached": "มีคําอธิบายประกอบ", + "description": "คุณสามารถเพิ่มการตอบกลับคุณภาพสูงลงในแคชด้วยตนเองเพื่อจับคู่ลําดับความสําคัญกับคําถามของผู้ใช้ที่คล้ายกัน" + }, + "dataSet": { + "queryVariable": { + "ok": "ตกลง, ได้", + "noVar": "ไม่ใช่ตัวแปร", + "choosePlaceholder": "เลือกตัวแปรแบบสอบถาม", + "tip": "ตัวแปรนี้จะถูกใช้เป็นอินพุตแบบสอบถามสําหรับการดึงบริบท โดยรับข้อมูลบริบทที่เกี่ยวข้องกับอินพุตของตัวแปรนี้", + "unableToQueryDataSetTip": "ไม่สามารถสืบค้นความรู้ได้สําเร็จ โปรดเลือกตัวแปรการสืบค้นบริบทในส่วนบริบท", + "noVarTip": "โปรดสร้างตัวแปรภายใต้ส่วนตัวแปร", + "title": "ตัวแปรคิวรี", + "contextVarNotEmpty": "ตัวแปรการสืบค้นบริบทต้องไม่ว่างเปล่า", + "deleteContextVarTip": "ตัวแปรนี้ถูกตั้งค่าเป็นตัวแปรแบบสอบถามบริบท และการลบตัวแปรนี้จะส่งผลต่อการใช้ความรู้ตามปกติ หากคุณยังต้องการลบ โปรดเลือกใหม่ในส่วนบริบท", + "unableToQueryDataSet": "ไม่สามารถสืบค้นความรู้ได้", + "deleteContextVarTitle": "ต้องการลบตัวแปร “{{varName}}” หรือไม่?" + }, + "noDataSet": "ไม่พบความรู้", + "notSupportSelectMulti": "ปัจจุบันรองรับความรู้เพียงหนึ่งความรู้", + "selected": "เลือกความรู้", + "title": "ความรู้", + "toCreate": "ไปที่สร้าง", + "noData": "คุณสามารถนําเข้าความรู้เป็นบริบทได้", + "selectTitle": "เลือกข้อมูลอ้างอิง ความรู้" + }, + "tools": { + "modal": { + "toolType": { + "title": "ประเภทเครื่องมือ", + "placeholder": "โปรดเลือกประเภทเครื่องมือ" + }, + "name": { + "title": "ชื่อ", + "placeholder": "กรุณากรอกชื่อ" + }, + "variableName": { + "title": "ชื่อตัวแปร", + "placeholder": "กรุณากรอกชื่อตัวแปร" + }, + "title": "เครื่องมือ" + }, + "title": "เครื่อง มือ", + "tips": "เครื่องมือมีวิธีการเรียก API มาตรฐาน โดยใช้อินพุตหรือตัวแปรของผู้ใช้เป็นพารามิเตอร์คําขอสําหรับการสืบค้นข้อมูลภายนอกตามบริบท", + "toolsInUse": "เครื่องมือ {{count}} ที่ใช้งาน" + }, + "conversationHistory": { + "editModal": { + "userPrefix": "คํานําหน้าผู้ใช้", + "title": "แก้ไขชื่อบทบาทการสนทนา", + "assistantPrefix": "คํานําหน้าผู้ช่วย" + }, + "description": "ตั้งชื่อคํานําหน้าสําหรับบทบาทการสนทนา", + "learnMore": "ศึกษาเพิ่มเติม", + "title": "ประวัติการสนทนา", + "tip": "ประวัติการสนทนายังไม่ได้เปิดใช้งาน กรุณาเพิ่ม ในคำสั่งด้านบน" + }, + "toolbox": { + "title": "เครื่อง มือ" + }, + "moderation": { + "modal": { + "provider": { + "openaiTip": { + "suffix": ".", + "prefix": "การกลั่นกรอง OpenAI ต้องใช้คีย์ OpenAI API ที่กําหนดค่าไว้ใน" + }, + "keywords": "คำ", + "openai": "การกลั่นกรอง OpenAI", + "title": "ผู้จัดหา" + }, + "keywords": { + "placeholder": "หนึ่งบรรทัดต่อบรรทัดคั่นด้วยตัวแบ่งบรรทัด", + "tip": "หนึ่งบรรทัด คั่นด้วยตัวแบ่งบรรทัด สูงสุด 100 อักขระต่อบรรทัด", + "line": "สาย" + }, + "content": { + "output": "เนื้อหา OUTPUT ปานกลาง", + "errorMessage": "การตอบกลับที่ตั้งไว้ล่วงหน้าต้องไม่ว่างเปล่า", + "fromApi": "การตอบกลับที่ตั้งไว้ล่วงหน้าจะถูกส่งคืนโดย API", + "supportMarkdown": "รองรับ Markdown", + "placeholder": "เนื้อหาตอบกลับที่ตั้งไว้ล่วงหน้าที่นี่", + "condition": "เปิดใช้งานเนื้อหา INPUT และ OUTPUT กลั่นกรองอย่างน้อยหนึ่งรายการ", + "input": "กลั่นกรองเนื้อหา INPUT", + "preset": "การตอบกลับที่ตั้งไว้ล่วงหน้า" + }, + "openaiNotConfig": { + "after": "", + "before": "การกลั่นกรอง OpenAI ต้องใช้คีย์ OpenAI API ที่กําหนดค่าไว้ใน" + }, + "title": "การตั้งค่าการกลั่นกรองเนื้อหา" + }, + "contentEnableLabel": "การกลั่นกรองเนื้อหาเปิดใช้งานแล้ว", + "outputEnabled": "ผลิตภัณฑ์", + "title": "การกลั่นกรองเนื้อหา", + "allEnabled": "อินพุต & เอาต์พุต", + "inputEnabled": "อินพุต", + "description": "รักษาความปลอดภัยเอาต์พุตโมเดลโดยใช้ API การกลั่นกรองหรือรักษารายการคําที่ละเอียดอ่อน" + } + }, + "pageTitle": { + "line1": "พร้อมท์", + "line2": "วิศวกรรม" + }, + "promptMode": { + "advancedWarning": { + "ok": "ตกลง, ได้", + "description": "ในโหมดผู้เชี่ยวชาญ คุณสามารถแก้ไข PROMPT ทั้งหมดได้", + "title": "คุณได้เปลี่ยนเป็นโหมดผู้เชี่ยวชาญแล้ว และเมื่อคุณแก้ไข PROMPT แล้ว คุณจะไม่สามารถกลับสู่โหมดพื้นฐานได้", + "learnMore": "ศึกษาเพิ่มเติม" + }, + "operation": { + "addMessage": "เพิ่มข้อความ" + }, + "switchBack": "สลับกลับ", + "contextMissing": "องค์ประกอบบริบทที่พลาดไปประสิทธิภาพของพรอมต์อาจไม่ดี", + "simple": "เปลี่ยนเป็นโหมดผู้เชี่ยวชาญเพื่อแก้ไข PROMPT ทั้งหมด", + "advanced": "แฟชั่นผู้เชี่ยวชาญ" + }, + "operation": { + "automatic": "ผลิต", + "applyConfig": "ตีพิมพ์", + "disagree": "ไม่ชอบ", + "userAction": "ผู้ใช้", + "stopResponding": "หยุดการตอบสนอง", + "cancelAgree": "ยกเลิกถูกใจ", + "addFeature": "เพิ่มคุณสมบัติ", + "cancelDisagree": "ยกเลิกการไม่ชอบ", + "agree": "ชอบ", + "resetConfig": "รี เซ็ต", + "debugConfig": "ดีบัก" + }, + "notSetAPIKey": { + "settingBtn": "ไปที่การตั้งค่า", + "trailFinished": "เส้นทางเสร็จสิ้น", + "description": "ยังไม่ได้ตั้งค่าคีย์ผู้ให้บริการ LLM และจําเป็นต้องตั้งค่าก่อนการดีบัก", + "title": "ไม่ได้ตั้งค่าคีย์ผู้ให้บริการ LLM" + }, + "trailUseGPT4Info": { + "description": "ใช้ gpt-4 โปรดตั้งค่าคีย์ API", + "title": "ไม่รองรับ gpt-4 ในขณะนี้" + }, + "codegen": { + "applyChanges": "ใช้การเปลี่ยนแปลง", + "generate": "ผลิต", + "instructionPlaceholder": "ป้อนคําอธิบายโดยละเอียดของรหัสที่คุณต้องการสร้าง", + "noDataLine1": "อธิบายกรณีการใช้งานของคุณทางด้านซ้าย", + "title": "เครื่องสร้างรหัส", + "overwriteConfirmMessage": "การดําเนินการนี้จะเขียนทับโค้ดที่มีอยู่ คุณต้องการดําเนินการต่อหรือไม่?", + "loading": "กําลังสร้างโค้ด...", + "generatedCodeTitle": "รหัสที่สร้างขึ้น", + "apply": "ใช้", + "overwriteConfirmTitle": "เขียนทับรหัสที่มีอยู่ใช่ไหม", + "instruction": "คำ แนะ นำ", + "resTitle": "รหัสที่สร้างขึ้น", + "noDataLine2": "ตัวอย่างโค้ดจะแสดงที่นี่", + "description": "ตัวสร้างโค้ดใช้โมเดลที่กําหนดค่าเพื่อสร้างโค้ดคุณภาพสูงตามคําแนะนําของคุณ โปรดให้คําแนะนําที่ชัดเจนและละเอียด" + }, + "generate": { + "template": { + "pythonDebugger": { + "name": "ดีบักเกอร์ Python", + "instruction": "บอทที่สามารถสร้างและแก้ไขข้อบกพร่องโค้ดของคุณตามคําสั่งของคุณ" + }, + "translation": { + "instruction": "นักแปลที่สามารถแปลได้หลายภาษา", + "name": "การแปล" + }, + "professionalAnalyst": { + "name": "นักวิเคราะห์มืออาชีพ", + "instruction": "ดึงข้อมูลเชิงลึก ระบุความเสี่ยง และกลั่นกรองข้อมูลสําคัญจากรายงานขนาดยาวลงในบันทึกเดียว" + }, + "excelFormulaExpert": { + "name": "ผู้เชี่ยวชาญด้านสูตร Excel", + "instruction": "แชทบอทที่สามารถช่วยให้ผู้ใช้มือใหม่เข้าใจ ใช้ และสร้างสูตร Excel ตามคําแนะนําของผู้ใช้" + }, + "travelPlanning": { + "name": "การวางแผนการเดินทาง", + "instruction": "ผู้ช่วยวางแผนการเดินทางเป็นเครื่องมืออัจฉริยะที่ออกแบบมาเพื่อช่วยให้ผู้ใช้วางแผนการเดินทางได้อย่างง่ายดาย" + }, + "SQLSorcerer": { + "name": "พ่อมด SQL", + "instruction": "แปลงภาษาในชีวิตประจําวันให้เป็นแบบสอบถาม SQL" + }, + "GitGud": { + "name": "กิต gud", + "instruction": "สร้างคําสั่ง Git ที่เหมาะสมตามการดําเนินการควบคุมเวอร์ชันที่ผู้ใช้อธิบาย" + }, + "meetingTakeaways": { + "name": "ประเด็นการประชุม", + "instruction": "กลั่นกรองการประชุมเป็นบทสรุปที่กระชับ รวมถึงหัวข้อการสนทนา ประเด็นสําคัญ และรายการปฏิบัติ" + }, + "writingsPolisher": { + "name": "เครื่องขัดเขียน", + "instruction": "ใช้เทคนิคการแก้ไขคําโฆษณาขั้นสูงเพื่อปรับปรุงงานเขียนของคุณ" + } + }, + "generate": "ผลิต", + "instruction": "คำ แนะ นำ", + "apply": "ใช้", + "resTitle": "พรอมต์ที่สร้างขึ้น", + "title": "เครื่องกําเนิดพร้อมท์", + "tryIt": "ลองดู", + "overwriteTitle": "แทนที่การกําหนดค่าที่มีอยู่ใช่ไหม", + "overwriteMessage": "การใช้พรอมต์นี้จะแทนที่การกําหนดค่าที่มีอยู่", + "description": "ตัวสร้างพรอมต์ใช้โมเดลที่กําหนดค่าเพื่อปรับพรอมต์ให้เหมาะสมเพื่อคุณภาพที่สูงขึ้นและโครงสร้างที่ดีขึ้น โปรดเขียนคําแนะนําที่ชัดเจนและละเอียด", + "loading": "กําลังประสานงานแอปพลิเคชันสําหรับคุณ...", + "latest": "ล่าสุด", + "dismiss": "ปฏิเสธ", + "optional": "ตัวเลือก", + "optimizationNote": "หมายเหตุการปรับแต่ง", + "press": "กด", + "idealOutput": "ผลลัพธ์ที่เหมาะสม", + "to": "ไป", + "instructionPlaceHolderLine2": "รูปแบบการส่งออกไม่ถูกต้อง กรุณาปฏิบัติตามรูปแบบ JSON อย่างเคร่งครัด.", + "versions": "เวอร์ชัน", + "newNoDataLine1": "เขียนคำแนะนำในคอลัมน์ซ้าย และคลิกที่สร้างเพื่อดูผลลัพธ์.", + "instructionPlaceHolderLine3": "โทนเสียงดูเข้มเกินไป กรุณาทำให้มันเป็นกันเองมากขึ้น", + "instructionPlaceHolderLine1": "ทำให้ผลลัพธ์กระชับขึ้น โดยคงสาระสำคัญไว้", + "instructionPlaceHolderTitle": "อธิบายว่าคุณต้องการปรับปรุง Prompt นี้อย่างไร ตัวอย่างเช่น:", + "version": "เวอร์ชัน", + "insertContext": "แทรกบริบท", + "idealOutputPlaceholder": "โปรดอธิบายรูปแบบการตอบสนองที่คุณต้องการ ความยาว โทนเสียง และความต้องการเนื้อหา...", + "optimizePromptTooltip": "ปรับปรุงในเครื่องกำเนิดคำแนะนำ", + "codeGenInstructionPlaceHolderLine": "ยิ่งข้อเสนอแนะแน่นอนมากขึ้น เช่น ประเภทของข้อมูลที่เป็นอินพุตและเอาต์พุต รวมถึงวิธีการที่ตัวแปรถูกประมวลผล การสร้างโค้ดจะยิ่งแม่นยำมากขึ้น" + }, + "resetConfig": { + "title": "ยืนยันการรีเซ็ต?", + "message": "รีเซ็ตจะละทิ้งการเปลี่ยนแปลง โดยคืนค่าการกําหนดค่าที่เผยแพร่ล่าสุด" + }, + "errorMessage": { + "waitForFileUpload": "โปรดรอให้ไฟล์/ไฟล์อัปโหลด", + "notSelectModel": "โปรดเลือกรุ่น", + "waitForBatchResponse": "โปรดรอให้การตอบกลับงานแบทช์เสร็จสมบูรณ์", + "waitForResponse": "โปรดรอให้การตอบกลับข้อความก่อนหน้าเสร็จสมบูรณ์", + "waitForImgUpload": "โปรดรอให้ภาพอัปโหลด", + "queryRequired": "ต้องส่งข้อความคําขอ", + "nameOfKeyRequired": "ชื่อของคีย์: {{key}} จำเป็นต้องมี", + "valueOfVarRequired": "ค่า {{key}} ไม่สามารถเว้นว่างได้" + }, + "warningMessage": { + "timeoutExceeded": "ผลลัพธ์จะไม่แสดงเนื่องจากหมดเวลา โปรดดูบันทึกเพื่อรวบรวมผลลัพธ์ที่สมบูรณ์" + }, + "variableTable": { + "key": "ปุ่มตัวแปร", + "typeString": "เชือก", + "typeSelect": "เลือก", + "type": "ประเภทอินพุต", + "name": "ชื่อฟิลด์ป้อนข้อมูลของผู้ใช้", + "action": "การดําเนินการ" + }, + "varKeyError": { + "canNoBeEmpty": "{{key}} จำเป็นต้องมี", + "tooLong": "{{key}} ยาวเกินไป ไม่สามารถยาวกว่า 30 ตัวอักษร", + "notValid": "{{key}} ไม่ถูกต้อง สามารถใช้ได้เฉพาะตัวอักษร ตัวเลข และเครื่องหมายขีดล่างเท่านั้น", + "notStartWithNumber": "{{key}} ไม่สามารถเริ่มต้นด้วยตัวเลขได้", + "keyAlreadyExists": "{{key}} มีอยู่แล้ว" + }, + "otherError": { + "queryNoBeEmpty": "ต้องตั้งค่าคิวรีในพร้อมท์", + "promptNoBeEmpty": "พรอมต์ไม่สามารถว่างเปล่าได้", + "historyNoBeEmpty": "ต้องตั้งค่าประวัติการสนทนาในข้อความแจ้ง" + }, + "variableConfig": { + "file": { + "image": { + "name": "ภาพ" + }, + "audio": { + "name": "เสียง" + }, + "document": { + "name": "เอกสาร" + }, + "video": { + "name": "วีดิทัศน์" + }, + "custom": { + "description": "ระบุประเภทไฟล์อื่นๆ", + "name": "ไฟล์ประเภทอื่น ๆ", + "createPlaceholder": " นามสกุลไฟล์ เช่น .doc" + }, + "supportFileTypes": "ประเภทไฟล์ที่รองรับ" + }, + "errorMsg": { + "atLeastOneOption": "จําเป็นต้องมีอย่างน้อยหนึ่งตัวเลือก", + "labelNameRequired": "ต้องมีชื่อฉลาก", + "optionRepeat": "มีตัวเลือกการทําซ้ํา", + "varNameCanBeRepeat": "ไม่สามารถทําซ้ําชื่อตัวแปรได้" + }, + "hide": "ซ่อน", + "required": "ต้องระบุ", + "number": "เลข", + "inputPlaceholder": "กรุณาป้อน", + "uploadFileTypes": "อัปโหลดประเภทไฟล์", + "content": "เนื้อหา", + "addOption": "เพิ่มตัวเลือก", + "labelName": "ชื่อฉลาก", + "options": "ตัวเลือก", + "stringTitle": "ตัวเลือกกล่องข้อความฟอร์ม", + "noDefaultValue": "ไม่มีค่าเริ่มต้น", + "varName": "ชื่อตัวแปร", + "defaultValue": "ค่าเริ่มต้น", + "fieldType": "ชนิดฟิลด์", + "selectDefaultValue": "เลือกค่าเริ่มต้น", + "string": "ข้อความสั้น", + "text-input": "ข้อความสั้น", + "multi-files": "รายการไฟล์", + "maxLength": "ความยาวสูงสุด", + "addModalTitle": "เพิ่มฟิลด์อินพุต", + "localUpload": "อัปโหลดในเครื่อง", + "single-file": "ไฟล์เดียว", + "select": "เลือก", + "maxNumberOfUploads": "จํานวนการอัปโหลดสูงสุด", + "editModalTitle": "แก้ไขฟิลด์อินพุต", + "apiBasedVar": "ตัวแปรที่ใช้ API", + "paragraph": "วรรค", + "both": "ทั้งสอง", + "checkbox": "Checkbox", + "jsonSchema": "แบบจำลอง JSON", + "json": "รหัส JSON", + "optional": "ตัวเลือก", + "unit": "หน่วย", + "placeholder": "ตัว ยึด", + "noDefaultSelected": "อย่าเลือก", + "displayName": "ชื่อที่แสดง", + "startChecked": "เริ่มตรวจสอบ", + "startSelectedOption": "เริ่มตัวเลือกที่เลือก", + "uploadMethod": "วิธีการอัปโหลด", + "tooltips": "คําแนะนําเครื่องมือ", + "showAllSettings": "แสดงการตั้งค่าทั้งหมด", + "unitPlaceholder": "แสดงหน่วยหลังตัวเลข เช่น โทเค็น", + "defaultValuePlaceholder": "ป้อนค่าเริ่มต้นเพื่อเติมข้อมูลในฟิลด์ล่วงหน้า", + "placeholderPlaceholder": "ป้อนข้อความที่จะแสดงเมื่อเขตข้อมูลว่างเปล่า", + "tooltipsPlaceholder": "ป้อนข้อความที่เป็นประโยชน์ที่แสดงเมื่อวางเมาส์เหนือป้ายกํากับ", + "description": "การตั้งค่าสำหรับตัวแปร {{varName}}", + "notSet": "ยังไม่ได้ตั้งค่า ลองพิมพ์ {{input}} ในช่องแจ้งนำหน้า", + "maxNumberTip": "เอกสาร < {{docLimit}}, รูปภาพ < {{imgLimit}}, เสียง < {{audioLimit}}, วิดีโอ < {{videoLimit}}" + }, + "vision": { + "visionSettings": { + "resolution": "มติ", + "uploadMethod": "วิธีการอัปโหลด", + "localUpload": "อัปโหลดในเครื่อง", + "low": "ต่ํา", + "high": "สูง", + "title": "การตั้งค่าวิสัยทัศน์", + "uploadLimit": "ขีดจํากัดการอัปโหลด", + "both": "ทั้งสอง", + "url": "URL", + "resolutionTooltip": "ความละเอียดต่ำจะช่วยให้โมเดลรับภาพเวอร์ชันความละเอียดต่ำขนาด 512 x 512 และแสดงภาพด้วยงบประมาณ 65 โทเค็น ซึ่งช่วยให้ API ตอบสนองได้เร็วขึ้นและใช้โทเค็นนำเข้าน้อยลงสำหรับกรณีการใช้งานที่ไม่ต้องการรายละเอียดสูง\n\nความละเอียดสูงจะเริ่มจากการให้โมเดลเห็นภาพความละเอียดต่ำก่อน จากนั้นสร้างการครอปภาพรายละเอียดของภาพอินพุตเป็นสี่เหลี่ยมขนาด 512px ตามขนาดภาพอินพุต แต่ละการครอปละเอียดจะใช้โทเค็นสองเท่า รวมเป็น 129 โทเค็น" + }, + "onlySupportVisionModelTip": "รองรับเฉพาะโมเดลการมองเห็น", + "name": "การมองเห็น", + "description": "เปิดใช้งานวิสัยทัศน์จะช่วยให้โมเดลสามารถถ่ายภาพและตอบคําถามเกี่ยวกับภาพเหล่านั้นได้", + "settings": "การตั้งค่า" + }, + "voice": { + "voiceSettings": { + "autoPlayEnabled": "บน", + "autoPlay": "เล่นอัตโนมัติ", + "voice": "เสียง", + "resolutionTooltip": "ภาษาสนับสนุนเสียงแปลงข้อความเป็นคําพูด。", + "autoPlayDisabled": "ไป", + "title": "การตั้งค่าเสียง", + "language": "ภาษา" + }, + "name": "เสียง", + "settings": "การตั้งค่า", + "description": "การตั้งค่าเสียงข้อความเป็นคําพูด", + "defaultDisplay": "เสียงเริ่มต้น" + }, + "openingStatement": { + "tooShort": "ต้องใช้ข้อความแจ้งเริ่มต้นอย่างน้อย 20 คําเพื่อสร้างคําพูดเปิดการสนทนา", + "openingQuestion": "คําถามเปิด", + "writeOpener": "ตัวเปิดแก้ไข", + "add": "เพิ่ม", + "title": "ที่เปิดการสนทนา", + "noDataPlaceHolder": "การเริ่มการสนทนากับผู้ใช้สามารถช่วยให้ AI สร้างความสัมพันธ์ที่ใกล้ชิดกับพวกเขาในแอปพลิเคชันการสนทนา", + "placeholder": "เขียนข้อความเปิดของคุณที่นี่ คุณสามารถใช้ตัวแปร ลองพิมพ์ {{variable}}", + "openingQuestionPlaceholder": "คุณสามารถใช้ตัวแปร ลองพิมพ์ {{variable}} ดูสิ", + "varTip": "คุณสามารถใช้ตัวแปรได้ ลองพิมพ์ {{variable}}", + "notIncludeKey": "คำสั่งเริ่มต้นไม่ได้รวมตัวแปร: {{key}}. กรุณาเพิ่มตัวแปรนี้ในคำสั่งเริ่มต้นด้วย" + }, + "modelConfig": { + "modeType": { + "completion": "สมบูรณ์", + "chat": "สนทนา" + }, + "model": "แบบ", + "title": "รุ่นและพารามิเตอร์", + "setTone": "กําหนดน้ําเสียงของการตอบกลับ" + }, + "inputs": { + "run": "วิ่ง", + "userInputField": "ฟิลด์ป้อนข้อมูลของผู้ใช้", + "queryPlaceholder": "กรุณากรอกข้อความคําขอ", + "queryTitle": "เนื้อหาแบบสอบถาม", + "title": "ดีบัก & ดูตัวอย่าง", + "noVar": "กรอกค่าของตัวแปร ซึ่งจะถูกแทนที่โดยอัตโนมัติในคําพร้อมท์ทุกครั้งที่เริ่มเซสชันใหม่", + "previewTitle": "พร้อมท์ดูตัวอย่าง", + "chatVarTip": "กรอกค่าของตัวแปร ซึ่งจะถูกแทนที่โดยอัตโนมัติในคําพร้อมท์ทุกครั้งที่เริ่มเซสชันใหม่", + "noPrompt": "ลองเขียนข้อความแจ้งในการป้อนข้อมูลล่วงหน้า", + "completionVarTip": "กรอกค่าของตัวแปร ซึ่งจะถูกแทนที่โดยอัตโนมัติในคําพร้อมท์ทุกครั้งที่มีการส่งคําถาม" + }, + "datasetConfig": { + "retrieveOneWay": { + "title": "การดึงข้อมูล N-to-1", + "description": "เอเจนต์จะเลือกความรู้ที่ดีที่สุดสําหรับการสืบค้นด้วยตนเอง ดีที่สุดสําหรับการใช้งานที่มีความรู้ที่แตกต่างและจํากัด" + }, + "retrieveMultiWay": { + "title": "การดึงข้อมูลหลายเส้นทาง", + "description": "ตามความตั้งใจของผู้ใช้ การสืบค้นในความรู้ทั้งหมด ดึงข้อความที่เกี่ยวข้องจากหลายแหล่ง และเลือกผลลัพธ์ที่ดีที่สุดที่ตรงกับการสืบค้นของผู้ใช้หลังจากจัดอันดับใหม่" + }, + "score_thresholdTip": "ใช้เพื่อกําหนดเกณฑ์ความคล้ายคลึงกันสําหรับการกรองกลุ่ม", + "settingTitle": "การตั้งค่าการดึงข้อมูล", + "rerankModelRequired": "จําเป็นต้องมีโมเดลจัดอันดับใหม่ที่กําหนดค่าไว้", + "knowledgeTip": "คลิกปุ่ม \" \" เพื่อเพิ่มความรู้", + "embeddingModelRequired": "จําเป็นต้องมีโมเดลการฝังที่กําหนดค่าไว้", + "score_threshold": "เกณฑ์คะแนน", + "retrieveChangeTip": "การปรับเปลี่ยนโหมดดัชนีและโหมดการดึงข้อมูลอาจส่งผลต่อแอปพลิเคชันที่เกี่ยวข้องกับความรู้นี้", + "top_k": "ท็อป K", + "params": "พารามิเตอร์", + "top_kTip": "ใช้เพื่อกรองกลุ่มที่คล้ายกับคําถามของผู้ใช้มากที่สุด ระบบจะปรับค่าของ Top K แบบไดนามิกตาม max_tokens ของรุ่นที่เลือก" + }, + "assistantType": { + "chatAssistant": { + "name": "ผู้ช่วยพื้นฐาน", + "description": "สร้างผู้ช่วยตามแชทโดยใช้โมเดลภาษาขนาดใหญ่" + }, + "agentAssistant": { + "name": "ผู้ช่วยตัวแทน", + "description": "สร้างตัวแทนอัจฉริยะที่สามารถเลือกเครื่องมือเพื่อทํางานให้เสร็จได้โดยอัตโนมัติ" + }, + "name": "ประเภทผู้ช่วย" + }, + "agent": { + "agentModeType": { + "functionCall": "การเรียกฟังก์ชัน", + "ReACT": "ตอบสนอง" + }, + "setting": { + "maximumIterations": { + "description": "จํากัดจํานวนการทําซ้ําที่ผู้ช่วยตัวแทนสามารถดําเนินการได้", + "name": "การทําซ้ําสูงสุด" + }, + "name": "การตั้งค่าตัวแทน", + "description": "การตั้งค่าผู้ช่วยตัวแทนอนุญาตให้ตั้งค่าโหมดตัวแทนและคุณสมบัติขั้นสูง เช่น ข้อความแจ้งในตัว ซึ่งใช้ได้เฉพาะในประเภทตัวแทนเท่านั้น" + }, + "tools": { + "enabled": "เปิด", + "name": "เครื่อง มือ", + "description": "การใช้เครื่องมือสามารถขยายขีดความสามารถของ LLM ได้ เช่น การค้นหาทางอินเทอร์เน็ตหรือการคํานวณทางวิทยาศาสตร์" + }, + "agentMode": "โหมดตัวแทน", + "firstPrompt": "พรอมต์แรก", + "buildInPrompt": "พรอมต์ในตัว", + "promptPlaceholder": "เขียนข้อความแจ้งของคุณที่นี่", + "nextIteration": "การทําซ้ําครั้งต่อไป", + "agentModeDes": "ตั้งค่าประเภทของโหมดการอนุมานสําหรับตัวแทน" + }, + "orchestrate": "ออเคสตร้า", + "variableTitle": "ตัว แปร", + "noResult": "ผลลัพธ์จะแสดงที่นี่", + "formattingChangedText": "การแก้ไขการจัดรูปแบบจะรีเซ็ตพื้นที่ดีบัก คุณแน่ใจหรือไม่?", + "publishAs": "เผยแพร่เป็น", + "result": "ข้อความที่ส่งออก", + "formattingChangedTitle": "การจัดรูปแบบเปลี่ยนไป", + "completionSubTitle": "พรอมต์คํานําหน้า", + "chatSubTitle": "คำ แนะ นำ", + "debugAsMultipleModel": "ดีบักเป็นหลายรุ่น", + "variableTip": "ผู้ใช้กรอกตัวแปรในแบบฟอร์ม แทนที่ตัวแปรในพรอมต์โดยอัตโนมัติ", + "debugAsSingleModel": "ดีบักเป็นโมเดลเดียว", + "duplicateModel": "สำเนา", + "autoAddVar": "ตัวแปรที่ไม่ได้กําหนดอ้างอิงในพรอมต์ล่วงหน้าคุณต้องการเพิ่มในแบบฟอร์มการป้อนข้อมูลของผู้ใช้หรือไม่?", + "promptTip": "พรอมต์ช่วยชี้แนะแบบตอบสนองของ AI ด้วยคำแนะนำและข้อจำกัด ใส่ตัวแปรเช่น {{input}} พรอมต์นี้จะมองไม่เห็นสำหรับผู้ใช้", + "notSetVar": "ตัวแปรช่วยให้ผู้ใช้สามารถใส่คำกระตุ้นหรือข้อคิดเห็นเริ่มต้นเมื่อกรอกแบบฟอร์ม คุณสามารถลองใส่ \"{{input}}\" ในคำกระตุ้นได้" +} diff --git a/web/i18n/th-TH/app-debug.ts b/web/i18n/th-TH/app-debug.ts deleted file mode 100644 index 21fccb7e31..0000000000 --- a/web/i18n/th-TH/app-debug.ts +++ /dev/null @@ -1,564 +0,0 @@ -const translation = { - feature: { - fileUpload: { - title: 'การอัปโหลดไฟล์', - description: 'กล่องข้อความแชทช่วยให้สามารถอัปโหลดรูปภาพ เอกสาร และไฟล์อื่นๆ ได้', - supportedTypes: 'ประเภทไฟล์ที่รองรับ', - numberLimit: 'จำนวนสูงสุดที่อัปโหลดได้', - modalTitle: 'การตั้งค่าการอัปโหลดไฟล์', - }, - imageUpload: { - title: 'การอัปโหลดรูปภาพ', - description: 'อนุญาตให้อัปโหลดรูปภาพได้', - supportedTypes: 'ประเภทไฟล์ที่รองรับ', - numberLimit: 'จำนวนสูงสุดที่อัปโหลดได้', - modalTitle: 'การตั้งค่าการอัปโหลดรูปภาพ', - }, - bar: { - empty: 'เปิดใช้งานคุณสมบัติเพื่อเพิ่มประสบการณ์ผู้ใช้ของเว็บแอป', - enableText: 'เปิดใช้งานคุณสมบัติแล้ว', - manage: 'จัดการ', - }, - documentUpload: { - title: 'เอกสาร', - description: 'การเปิดใช้งานเอกสารจะทำให้โมเดลสามารถรับเอกสารและตอบคำถามเกี่ยวกับเอกสารเหล่านั้นได้', - }, - audioUpload: { - title: 'เสียง', - description: 'การเปิดใช้งานเสียงจะทำให้โมเดลสามารถประมวลผลไฟล์เสียงเพื่อการถอดข้อความและการวิเคราะห์ได้', - }, - groupChat: { - title: 'ปรับปรุงแชท', - description: 'เพิ่มการตั้งค่าก่อนการสนทนาสําหรับแอปสามารถปรับปรุงประสบการณ์ของผู้ใช้ได้', - }, - groupExperience: { - title: 'ปรับปรุงประสบการณ์', - }, - conversationOpener: { - description: 'ในแอปแชท ประโยคแรกที่ AI พูดกับผู้ใช้อย่างแข็งขันมักจะใช้เป็นการต้อนรับ', - title: 'ที่เปิดการสนทนา', - }, - suggestedQuestionsAfterAnswer: { - title: 'ติดตาม', - resDes: '3 ข้อเสนอแนะสําหรับผู้ใช้คําถามถัดไป', - tryToAsk: 'ลองถาม', - description: 'การตั้งค่าคําแนะนําคําถามถัดไปจะช่วยให้ผู้ใช้แชทได้ดีขึ้น', - }, - moreLikeThis: { - title: 'เพิ่มเติมเช่นนี้', - tip: 'การใช้คุณสมบัตินี้จะมีค่าใช้จ่ายโทเค็นเพิ่มเติม', - generateNumTip: 'จํานวนครั้งที่สร้างขึ้นแต่ละครั้ง', - description: 'สร้างข้อความหลายข้อความพร้อมกัน จากนั้นแก้ไขและสร้างต่อไป', - }, - speechToText: { - description: 'สามารถใช้การป้อนข้อมูลด้วยเสียงในการแชทได้', - title: 'คําพูดเป็นข้อความ', - resDes: 'เปิดใช้งานการป้อนข้อมูลด้วยเสียง', - }, - textToSpeech: { - title: 'ข้อความเป็นคําพูด', - resDes: 'เปิดใช้งานข้อความเป็นเสียง', - description: 'ข้อความการสนทนาสามารถแปลงเป็นคําพูดได้', - }, - citation: { - title: 'การอ้างอิงและการระบุแหล่งที่มา', - resDes: 'เปิดใช้งานการอ้างอิงและการระบุแหล่งที่มา', - description: 'แสดงเอกสารต้นฉบับและส่วนที่มาของเนื้อหาที่สร้างขึ้น', - }, - annotation: { - scoreThreshold: { - accurateMatch: 'การจับคู่ที่แม่นยํา', - description: 'ใช้เพื่อกําหนดเกณฑ์ความคล้ายคลึงกันสําหรับการตอบกลับคําอธิบายประกอบ', - easyMatch: 'จับคู่ง่าย', - title: 'เกณฑ์คะแนน', - }, - matchVariable: { - title: 'ตัวแปรการจับคู่', - choosePlaceholder: 'เลือกตัวแปรการจับคู่', - }, - removeConfirm: 'ลบคําอธิบายประกอบนี้ ?', - cacheManagement: 'คำ อธิบาย', - title: 'คําอธิบายประกอบ ตอบกลับ', - remove: 'ถอด', - resDes: 'เปิดใช้งานการตอบสนองคําอธิบายประกอบ', - add: 'เพิ่มคําอธิบายประกอบ', - edit: 'แก้ไขคําอธิบายประกอบ', - cached: 'มีคําอธิบายประกอบ', - description: 'คุณสามารถเพิ่มการตอบกลับคุณภาพสูงลงในแคชด้วยตนเองเพื่อจับคู่ลําดับความสําคัญกับคําถามของผู้ใช้ที่คล้ายกัน', - }, - dataSet: { - queryVariable: { - ok: 'ตกลง, ได้', - noVar: 'ไม่ใช่ตัวแปร', - choosePlaceholder: 'เลือกตัวแปรแบบสอบถาม', - tip: 'ตัวแปรนี้จะถูกใช้เป็นอินพุตแบบสอบถามสําหรับการดึงบริบท โดยรับข้อมูลบริบทที่เกี่ยวข้องกับอินพุตของตัวแปรนี้', - unableToQueryDataSetTip: 'ไม่สามารถสืบค้นความรู้ได้สําเร็จ โปรดเลือกตัวแปรการสืบค้นบริบทในส่วนบริบท', - noVarTip: 'โปรดสร้างตัวแปรภายใต้ส่วนตัวแปร', - title: 'ตัวแปรคิวรี', - contextVarNotEmpty: 'ตัวแปรการสืบค้นบริบทต้องไม่ว่างเปล่า', - deleteContextVarTip: 'ตัวแปรนี้ถูกตั้งค่าเป็นตัวแปรแบบสอบถามบริบท และการลบตัวแปรนี้จะส่งผลต่อการใช้ความรู้ตามปกติ หากคุณยังต้องการลบ โปรดเลือกใหม่ในส่วนบริบท', - unableToQueryDataSet: 'ไม่สามารถสืบค้นความรู้ได้', - deleteContextVarTitle: 'ต้องการลบตัวแปร “{{varName}}” หรือไม่?', - }, - noDataSet: 'ไม่พบความรู้', - notSupportSelectMulti: 'ปัจจุบันรองรับความรู้เพียงหนึ่งความรู้', - selected: 'เลือกความรู้', - title: 'ความรู้', - toCreate: 'ไปที่สร้าง', - noData: 'คุณสามารถนําเข้าความรู้เป็นบริบทได้', - selectTitle: 'เลือกข้อมูลอ้างอิง ความรู้', - }, - tools: { - modal: { - toolType: { - title: 'ประเภทเครื่องมือ', - placeholder: 'โปรดเลือกประเภทเครื่องมือ', - }, - name: { - title: 'ชื่อ', - placeholder: 'กรุณากรอกชื่อ', - }, - variableName: { - title: 'ชื่อตัวแปร', - placeholder: 'กรุณากรอกชื่อตัวแปร', - }, - title: 'เครื่องมือ', - }, - title: 'เครื่อง มือ', - tips: 'เครื่องมือมีวิธีการเรียก API มาตรฐาน โดยใช้อินพุตหรือตัวแปรของผู้ใช้เป็นพารามิเตอร์คําขอสําหรับการสืบค้นข้อมูลภายนอกตามบริบท', - toolsInUse: 'เครื่องมือ {{count}} ที่ใช้งาน', - }, - conversationHistory: { - editModal: { - userPrefix: 'คํานําหน้าผู้ใช้', - title: 'แก้ไขชื่อบทบาทการสนทนา', - assistantPrefix: 'คํานําหน้าผู้ช่วย', - }, - description: 'ตั้งชื่อคํานําหน้าสําหรับบทบาทการสนทนา', - learnMore: 'ศึกษาเพิ่มเติม', - title: 'ประวัติการสนทนา', - tip: 'ประวัติการสนทนายังไม่ได้เปิดใช้งาน กรุณาเพิ่ม ในคำสั่งด้านบน', - }, - toolbox: { - title: 'เครื่อง มือ', - }, - moderation: { - modal: { - provider: { - openaiTip: { - suffix: '.', - prefix: 'การกลั่นกรอง OpenAI ต้องใช้คีย์ OpenAI API ที่กําหนดค่าไว้ใน', - }, - keywords: 'คำ', - openai: 'การกลั่นกรอง OpenAI', - title: 'ผู้จัดหา', - }, - keywords: { - placeholder: 'หนึ่งบรรทัดต่อบรรทัดคั่นด้วยตัวแบ่งบรรทัด', - tip: 'หนึ่งบรรทัด คั่นด้วยตัวแบ่งบรรทัด สูงสุด 100 อักขระต่อบรรทัด', - line: 'สาย', - }, - content: { - output: 'เนื้อหา OUTPUT ปานกลาง', - errorMessage: 'การตอบกลับที่ตั้งไว้ล่วงหน้าต้องไม่ว่างเปล่า', - fromApi: 'การตอบกลับที่ตั้งไว้ล่วงหน้าจะถูกส่งคืนโดย API', - supportMarkdown: 'รองรับ Markdown', - placeholder: 'เนื้อหาตอบกลับที่ตั้งไว้ล่วงหน้าที่นี่', - condition: 'เปิดใช้งานเนื้อหา INPUT และ OUTPUT กลั่นกรองอย่างน้อยหนึ่งรายการ', - input: 'กลั่นกรองเนื้อหา INPUT', - preset: 'การตอบกลับที่ตั้งไว้ล่วงหน้า', - }, - openaiNotConfig: { - after: '', - before: 'การกลั่นกรอง OpenAI ต้องใช้คีย์ OpenAI API ที่กําหนดค่าไว้ใน', - }, - title: 'การตั้งค่าการกลั่นกรองเนื้อหา', - }, - contentEnableLabel: 'การกลั่นกรองเนื้อหาเปิดใช้งานแล้ว', - outputEnabled: 'ผลิตภัณฑ์', - title: 'การกลั่นกรองเนื้อหา', - allEnabled: 'อินพุต & เอาต์พุต', - inputEnabled: 'อินพุต', - description: 'รักษาความปลอดภัยเอาต์พุตโมเดลโดยใช้ API การกลั่นกรองหรือรักษารายการคําที่ละเอียดอ่อน', - }, - }, - pageTitle: { - line1: 'พร้อมท์', - line2: 'วิศวกรรม', - }, - promptMode: { - advancedWarning: { - ok: 'ตกลง, ได้', - description: 'ในโหมดผู้เชี่ยวชาญ คุณสามารถแก้ไข PROMPT ทั้งหมดได้', - title: 'คุณได้เปลี่ยนเป็นโหมดผู้เชี่ยวชาญแล้ว และเมื่อคุณแก้ไข PROMPT แล้ว คุณจะไม่สามารถกลับสู่โหมดพื้นฐานได้', - learnMore: 'ศึกษาเพิ่มเติม', - }, - operation: { - addMessage: 'เพิ่มข้อความ', - }, - switchBack: 'สลับกลับ', - contextMissing: 'องค์ประกอบบริบทที่พลาดไปประสิทธิภาพของพรอมต์อาจไม่ดี', - simple: 'เปลี่ยนเป็นโหมดผู้เชี่ยวชาญเพื่อแก้ไข PROMPT ทั้งหมด', - advanced: 'แฟชั่นผู้เชี่ยวชาญ', - }, - operation: { - automatic: 'ผลิต', - applyConfig: 'ตีพิมพ์', - disagree: 'ไม่ชอบ', - userAction: 'ผู้ใช้', - stopResponding: 'หยุดการตอบสนอง', - cancelAgree: 'ยกเลิกถูกใจ', - addFeature: 'เพิ่มคุณสมบัติ', - cancelDisagree: 'ยกเลิกการไม่ชอบ', - agree: 'ชอบ', - resetConfig: 'รี เซ็ต', - debugConfig: 'ดีบัก', - }, - notSetAPIKey: { - settingBtn: 'ไปที่การตั้งค่า', - trailFinished: 'เส้นทางเสร็จสิ้น', - description: 'ยังไม่ได้ตั้งค่าคีย์ผู้ให้บริการ LLM และจําเป็นต้องตั้งค่าก่อนการดีบัก', - title: 'ไม่ได้ตั้งค่าคีย์ผู้ให้บริการ LLM', - }, - trailUseGPT4Info: { - description: 'ใช้ gpt-4 โปรดตั้งค่าคีย์ API', - title: 'ไม่รองรับ gpt-4 ในขณะนี้', - }, - codegen: { - applyChanges: 'ใช้การเปลี่ยนแปลง', - generate: 'ผลิต', - instructionPlaceholder: 'ป้อนคําอธิบายโดยละเอียดของรหัสที่คุณต้องการสร้าง', - noDataLine1: 'อธิบายกรณีการใช้งานของคุณทางด้านซ้าย', - title: 'เครื่องสร้างรหัส', - overwriteConfirmMessage: 'การดําเนินการนี้จะเขียนทับโค้ดที่มีอยู่ คุณต้องการดําเนินการต่อหรือไม่?', - loading: 'กําลังสร้างโค้ด...', - generatedCodeTitle: 'รหัสที่สร้างขึ้น', - apply: 'ใช้', - overwriteConfirmTitle: 'เขียนทับรหัสที่มีอยู่ใช่ไหม', - instruction: 'คำ แนะ นำ', - resTitle: 'รหัสที่สร้างขึ้น', - noDataLine2: 'ตัวอย่างโค้ดจะแสดงที่นี่', - description: 'ตัวสร้างโค้ดใช้โมเดลที่กําหนดค่าเพื่อสร้างโค้ดคุณภาพสูงตามคําแนะนําของคุณ โปรดให้คําแนะนําที่ชัดเจนและละเอียด', - }, - generate: { - template: { - pythonDebugger: { - name: 'ดีบักเกอร์ Python', - instruction: 'บอทที่สามารถสร้างและแก้ไขข้อบกพร่องโค้ดของคุณตามคําสั่งของคุณ', - }, - translation: { - instruction: 'นักแปลที่สามารถแปลได้หลายภาษา', - name: 'การแปล', - }, - professionalAnalyst: { - name: 'นักวิเคราะห์มืออาชีพ', - instruction: 'ดึงข้อมูลเชิงลึก ระบุความเสี่ยง และกลั่นกรองข้อมูลสําคัญจากรายงานขนาดยาวลงในบันทึกเดียว', - }, - excelFormulaExpert: { - name: 'ผู้เชี่ยวชาญด้านสูตร Excel', - instruction: 'แชทบอทที่สามารถช่วยให้ผู้ใช้มือใหม่เข้าใจ ใช้ และสร้างสูตร Excel ตามคําแนะนําของผู้ใช้', - }, - travelPlanning: { - name: 'การวางแผนการเดินทาง', - instruction: 'ผู้ช่วยวางแผนการเดินทางเป็นเครื่องมืออัจฉริยะที่ออกแบบมาเพื่อช่วยให้ผู้ใช้วางแผนการเดินทางได้อย่างง่ายดาย', - }, - SQLSorcerer: { - name: 'พ่อมด SQL', - instruction: 'แปลงภาษาในชีวิตประจําวันให้เป็นแบบสอบถาม SQL', - }, - GitGud: { - name: 'กิต gud', - instruction: 'สร้างคําสั่ง Git ที่เหมาะสมตามการดําเนินการควบคุมเวอร์ชันที่ผู้ใช้อธิบาย', - }, - meetingTakeaways: { - name: 'ประเด็นการประชุม', - instruction: 'กลั่นกรองการประชุมเป็นบทสรุปที่กระชับ รวมถึงหัวข้อการสนทนา ประเด็นสําคัญ และรายการปฏิบัติ', - }, - writingsPolisher: { - name: 'เครื่องขัดเขียน', - instruction: 'ใช้เทคนิคการแก้ไขคําโฆษณาขั้นสูงเพื่อปรับปรุงงานเขียนของคุณ', - }, - }, - generate: 'ผลิต', - instruction: 'คำ แนะ นำ', - apply: 'ใช้', - resTitle: 'พรอมต์ที่สร้างขึ้น', - title: 'เครื่องกําเนิดพร้อมท์', - tryIt: 'ลองดู', - overwriteTitle: 'แทนที่การกําหนดค่าที่มีอยู่ใช่ไหม', - overwriteMessage: 'การใช้พรอมต์นี้จะแทนที่การกําหนดค่าที่มีอยู่', - description: 'ตัวสร้างพรอมต์ใช้โมเดลที่กําหนดค่าเพื่อปรับพรอมต์ให้เหมาะสมเพื่อคุณภาพที่สูงขึ้นและโครงสร้างที่ดีขึ้น โปรดเขียนคําแนะนําที่ชัดเจนและละเอียด', - loading: 'กําลังประสานงานแอปพลิเคชันสําหรับคุณ...', - latest: 'ล่าสุด', - dismiss: 'ปฏิเสธ', - optional: 'ตัวเลือก', - optimizationNote: 'หมายเหตุการปรับแต่ง', - press: 'กด', - idealOutput: 'ผลลัพธ์ที่เหมาะสม', - to: 'ไป', - instructionPlaceHolderLine2: 'รูปแบบการส่งออกไม่ถูกต้อง กรุณาปฏิบัติตามรูปแบบ JSON อย่างเคร่งครัด.', - versions: 'เวอร์ชัน', - newNoDataLine1: 'เขียนคำแนะนำในคอลัมน์ซ้าย และคลิกที่สร้างเพื่อดูผลลัพธ์.', - instructionPlaceHolderLine3: 'โทนเสียงดูเข้มเกินไป กรุณาทำให้มันเป็นกันเองมากขึ้น', - instructionPlaceHolderLine1: 'ทำให้ผลลัพธ์กระชับขึ้น โดยคงสาระสำคัญไว้', - instructionPlaceHolderTitle: 'อธิบายว่าคุณต้องการปรับปรุง Prompt นี้อย่างไร ตัวอย่างเช่น:', - version: 'เวอร์ชัน', - insertContext: 'แทรกบริบท', - idealOutputPlaceholder: 'โปรดอธิบายรูปแบบการตอบสนองที่คุณต้องการ ความยาว โทนเสียง และความต้องการเนื้อหา...', - optimizePromptTooltip: 'ปรับปรุงในเครื่องกำเนิดคำแนะนำ', - codeGenInstructionPlaceHolderLine: 'ยิ่งข้อเสนอแนะแน่นอนมากขึ้น เช่น ประเภทของข้อมูลที่เป็นอินพุตและเอาต์พุต รวมถึงวิธีการที่ตัวแปรถูกประมวลผล การสร้างโค้ดจะยิ่งแม่นยำมากขึ้น', - }, - resetConfig: { - title: 'ยืนยันการรีเซ็ต?', - message: 'รีเซ็ตจะละทิ้งการเปลี่ยนแปลง โดยคืนค่าการกําหนดค่าที่เผยแพร่ล่าสุด', - }, - errorMessage: { - waitForFileUpload: 'โปรดรอให้ไฟล์/ไฟล์อัปโหลด', - notSelectModel: 'โปรดเลือกรุ่น', - waitForBatchResponse: 'โปรดรอให้การตอบกลับงานแบทช์เสร็จสมบูรณ์', - waitForResponse: 'โปรดรอให้การตอบกลับข้อความก่อนหน้าเสร็จสมบูรณ์', - waitForImgUpload: 'โปรดรอให้ภาพอัปโหลด', - queryRequired: 'ต้องส่งข้อความคําขอ', - nameOfKeyRequired: 'ชื่อของคีย์: {{key}} จำเป็นต้องมี', - valueOfVarRequired: 'ค่า {{key}} ไม่สามารถเว้นว่างได้', - }, - warningMessage: { - timeoutExceeded: 'ผลลัพธ์จะไม่แสดงเนื่องจากหมดเวลา โปรดดูบันทึกเพื่อรวบรวมผลลัพธ์ที่สมบูรณ์', - }, - variableTable: { - key: 'ปุ่มตัวแปร', - typeString: 'เชือก', - typeSelect: 'เลือก', - type: 'ประเภทอินพุต', - name: 'ชื่อฟิลด์ป้อนข้อมูลของผู้ใช้', - action: 'การดําเนินการ', - }, - varKeyError: { - canNoBeEmpty: '{{key}} จำเป็นต้องมี', - tooLong: '{{key}} ยาวเกินไป ไม่สามารถยาวกว่า 30 ตัวอักษร', - notValid: '{{key}} ไม่ถูกต้อง สามารถใช้ได้เฉพาะตัวอักษร ตัวเลข และเครื่องหมายขีดล่างเท่านั้น', - notStartWithNumber: '{{key}} ไม่สามารถเริ่มต้นด้วยตัวเลขได้', - keyAlreadyExists: '{{key}} มีอยู่แล้ว', - }, - otherError: { - queryNoBeEmpty: 'ต้องตั้งค่าคิวรีในพร้อมท์', - promptNoBeEmpty: 'พรอมต์ไม่สามารถว่างเปล่าได้', - historyNoBeEmpty: 'ต้องตั้งค่าประวัติการสนทนาในข้อความแจ้ง', - }, - variableConfig: { - 'file': { - image: { - name: 'ภาพ', - }, - audio: { - name: 'เสียง', - }, - document: { - name: 'เอกสาร', - }, - video: { - name: 'วีดิทัศน์', - }, - custom: { - description: 'ระบุประเภทไฟล์อื่นๆ', - name: 'ไฟล์ประเภทอื่น ๆ', - createPlaceholder: ' นามสกุลไฟล์ เช่น .doc', - }, - supportFileTypes: 'ประเภทไฟล์ที่รองรับ', - }, - 'errorMsg': { - atLeastOneOption: 'จําเป็นต้องมีอย่างน้อยหนึ่งตัวเลือก', - labelNameRequired: 'ต้องมีชื่อฉลาก', - optionRepeat: 'มีตัวเลือกการทําซ้ํา', - varNameCanBeRepeat: 'ไม่สามารถทําซ้ําชื่อตัวแปรได้', - }, - 'hide': 'ซ่อน', - 'required': 'ต้องระบุ', - 'number': 'เลข', - 'inputPlaceholder': 'กรุณาป้อน', - 'uploadFileTypes': 'อัปโหลดประเภทไฟล์', - 'content': 'เนื้อหา', - 'addOption': 'เพิ่มตัวเลือก', - 'labelName': 'ชื่อฉลาก', - 'options': 'ตัวเลือก', - 'stringTitle': 'ตัวเลือกกล่องข้อความฟอร์ม', - 'noDefaultValue': 'ไม่มีค่าเริ่มต้น', - 'varName': 'ชื่อตัวแปร', - 'defaultValue': 'ค่าเริ่มต้น', - 'fieldType': 'ชนิดฟิลด์', - 'selectDefaultValue': 'เลือกค่าเริ่มต้น', - 'string': 'ข้อความสั้น', - 'text-input': 'ข้อความสั้น', - 'multi-files': 'รายการไฟล์', - 'maxLength': 'ความยาวสูงสุด', - 'addModalTitle': 'เพิ่มฟิลด์อินพุต', - 'localUpload': 'อัปโหลดในเครื่อง', - 'single-file': 'ไฟล์เดียว', - 'select': 'เลือก', - 'maxNumberOfUploads': 'จํานวนการอัปโหลดสูงสุด', - 'editModalTitle': 'แก้ไขฟิลด์อินพุต', - 'apiBasedVar': 'ตัวแปรที่ใช้ API', - 'paragraph': 'วรรค', - 'both': 'ทั้งสอง', - 'checkbox': 'Checkbox', - 'jsonSchema': 'แบบจำลอง JSON', - 'json': 'รหัส JSON', - 'optional': 'ตัวเลือก', - 'unit': 'หน่วย', - 'placeholder': 'ตัว ยึด', - 'noDefaultSelected': 'อย่าเลือก', - 'displayName': 'ชื่อที่แสดง', - 'startChecked': 'เริ่มตรวจสอบ', - 'startSelectedOption': 'เริ่มตัวเลือกที่เลือก', - 'uploadMethod': 'วิธีการอัปโหลด', - 'tooltips': 'คําแนะนําเครื่องมือ', - 'showAllSettings': 'แสดงการตั้งค่าทั้งหมด', - 'unitPlaceholder': 'แสดงหน่วยหลังตัวเลข เช่น โทเค็น', - 'defaultValuePlaceholder': 'ป้อนค่าเริ่มต้นเพื่อเติมข้อมูลในฟิลด์ล่วงหน้า', - 'placeholderPlaceholder': 'ป้อนข้อความที่จะแสดงเมื่อเขตข้อมูลว่างเปล่า', - 'tooltipsPlaceholder': 'ป้อนข้อความที่เป็นประโยชน์ที่แสดงเมื่อวางเมาส์เหนือป้ายกํากับ', - 'description': 'การตั้งค่าสำหรับตัวแปร {{varName}}', - 'notSet': 'ยังไม่ได้ตั้งค่า ลองพิมพ์ {{input}} ในช่องแจ้งนำหน้า', - 'maxNumberTip': 'เอกสาร < {{docLimit}}, รูปภาพ < {{imgLimit}}, เสียง < {{audioLimit}}, วิดีโอ < {{videoLimit}}', - }, - vision: { - visionSettings: { - resolution: 'มติ', - uploadMethod: 'วิธีการอัปโหลด', - localUpload: 'อัปโหลดในเครื่อง', - low: 'ต่ํา', - high: 'สูง', - title: 'การตั้งค่าวิสัยทัศน์', - uploadLimit: 'ขีดจํากัดการอัปโหลด', - both: 'ทั้งสอง', - url: 'URL', - resolutionTooltip: 'ความละเอียดต่ำจะช่วยให้โมเดลรับภาพเวอร์ชันความละเอียดต่ำขนาด 512 x 512 และแสดงภาพด้วยงบประมาณ 65 โทเค็น ซึ่งช่วยให้ API ตอบสนองได้เร็วขึ้นและใช้โทเค็นนำเข้าน้อยลงสำหรับกรณีการใช้งานที่ไม่ต้องการรายละเอียดสูง\n\nความละเอียดสูงจะเริ่มจากการให้โมเดลเห็นภาพความละเอียดต่ำก่อน จากนั้นสร้างการครอปภาพรายละเอียดของภาพอินพุตเป็นสี่เหลี่ยมขนาด 512px ตามขนาดภาพอินพุต แต่ละการครอปละเอียดจะใช้โทเค็นสองเท่า รวมเป็น 129 โทเค็น', - }, - onlySupportVisionModelTip: 'รองรับเฉพาะโมเดลการมองเห็น', - name: 'การมองเห็น', - description: 'เปิดใช้งานวิสัยทัศน์จะช่วยให้โมเดลสามารถถ่ายภาพและตอบคําถามเกี่ยวกับภาพเหล่านั้นได้', - settings: 'การตั้งค่า', - }, - voice: { - voiceSettings: { - autoPlayEnabled: 'บน', - autoPlay: 'เล่นอัตโนมัติ', - voice: 'เสียง', - resolutionTooltip: 'ภาษาสนับสนุนเสียงแปลงข้อความเป็นคําพูด。', - autoPlayDisabled: 'ไป', - title: 'การตั้งค่าเสียง', - language: 'ภาษา', - }, - name: 'เสียง', - settings: 'การตั้งค่า', - description: 'การตั้งค่าเสียงข้อความเป็นคําพูด', - defaultDisplay: 'เสียงเริ่มต้น', - }, - openingStatement: { - tooShort: 'ต้องใช้ข้อความแจ้งเริ่มต้นอย่างน้อย 20 คําเพื่อสร้างคําพูดเปิดการสนทนา', - openingQuestion: 'คําถามเปิด', - writeOpener: 'ตัวเปิดแก้ไข', - add: 'เพิ่ม', - title: 'ที่เปิดการสนทนา', - noDataPlaceHolder: 'การเริ่มการสนทนากับผู้ใช้สามารถช่วยให้ AI สร้างความสัมพันธ์ที่ใกล้ชิดกับพวกเขาในแอปพลิเคชันการสนทนา', - placeholder: 'เขียนข้อความเปิดของคุณที่นี่ คุณสามารถใช้ตัวแปร ลองพิมพ์ {{variable}}', - openingQuestionPlaceholder: 'คุณสามารถใช้ตัวแปร ลองพิมพ์ {{variable}} ดูสิ', - varTip: 'คุณสามารถใช้ตัวแปรได้ ลองพิมพ์ {{variable}}', - notIncludeKey: 'คำสั่งเริ่มต้นไม่ได้รวมตัวแปร: {{key}}. กรุณาเพิ่มตัวแปรนี้ในคำสั่งเริ่มต้นด้วย', - }, - modelConfig: { - modeType: { - completion: 'สมบูรณ์', - chat: 'สนทนา', - }, - model: 'แบบ', - title: 'รุ่นและพารามิเตอร์', - setTone: 'กําหนดน้ําเสียงของการตอบกลับ', - }, - inputs: { - run: 'วิ่ง', - userInputField: 'ฟิลด์ป้อนข้อมูลของผู้ใช้', - queryPlaceholder: 'กรุณากรอกข้อความคําขอ', - queryTitle: 'เนื้อหาแบบสอบถาม', - title: 'ดีบัก & ดูตัวอย่าง', - noVar: 'กรอกค่าของตัวแปร ซึ่งจะถูกแทนที่โดยอัตโนมัติในคําพร้อมท์ทุกครั้งที่เริ่มเซสชันใหม่', - previewTitle: 'พร้อมท์ดูตัวอย่าง', - chatVarTip: 'กรอกค่าของตัวแปร ซึ่งจะถูกแทนที่โดยอัตโนมัติในคําพร้อมท์ทุกครั้งที่เริ่มเซสชันใหม่', - noPrompt: 'ลองเขียนข้อความแจ้งในการป้อนข้อมูลล่วงหน้า', - completionVarTip: 'กรอกค่าของตัวแปร ซึ่งจะถูกแทนที่โดยอัตโนมัติในคําพร้อมท์ทุกครั้งที่มีการส่งคําถาม', - }, - datasetConfig: { - retrieveOneWay: { - title: 'การดึงข้อมูล N-to-1', - description: 'เอเจนต์จะเลือกความรู้ที่ดีที่สุดสําหรับการสืบค้นด้วยตนเอง ดีที่สุดสําหรับการใช้งานที่มีความรู้ที่แตกต่างและจํากัด', - }, - retrieveMultiWay: { - title: 'การดึงข้อมูลหลายเส้นทาง', - description: 'ตามความตั้งใจของผู้ใช้ การสืบค้นในความรู้ทั้งหมด ดึงข้อความที่เกี่ยวข้องจากหลายแหล่ง และเลือกผลลัพธ์ที่ดีที่สุดที่ตรงกับการสืบค้นของผู้ใช้หลังจากจัดอันดับใหม่', - }, - score_thresholdTip: 'ใช้เพื่อกําหนดเกณฑ์ความคล้ายคลึงกันสําหรับการกรองกลุ่ม', - settingTitle: 'การตั้งค่าการดึงข้อมูล', - rerankModelRequired: 'จําเป็นต้องมีโมเดลจัดอันดับใหม่ที่กําหนดค่าไว้', - knowledgeTip: 'คลิกปุ่ม " " เพื่อเพิ่มความรู้', - embeddingModelRequired: 'จําเป็นต้องมีโมเดลการฝังที่กําหนดค่าไว้', - score_threshold: 'เกณฑ์คะแนน', - retrieveChangeTip: 'การปรับเปลี่ยนโหมดดัชนีและโหมดการดึงข้อมูลอาจส่งผลต่อแอปพลิเคชันที่เกี่ยวข้องกับความรู้นี้', - top_k: 'ท็อป K', - params: 'พารามิเตอร์', - top_kTip: 'ใช้เพื่อกรองกลุ่มที่คล้ายกับคําถามของผู้ใช้มากที่สุด ระบบจะปรับค่าของ Top K แบบไดนามิกตาม max_tokens ของรุ่นที่เลือก', - }, - assistantType: { - chatAssistant: { - name: 'ผู้ช่วยพื้นฐาน', - description: 'สร้างผู้ช่วยตามแชทโดยใช้โมเดลภาษาขนาดใหญ่', - }, - agentAssistant: { - name: 'ผู้ช่วยตัวแทน', - description: 'สร้างตัวแทนอัจฉริยะที่สามารถเลือกเครื่องมือเพื่อทํางานให้เสร็จได้โดยอัตโนมัติ', - }, - name: 'ประเภทผู้ช่วย', - }, - agent: { - agentModeType: { - functionCall: 'การเรียกฟังก์ชัน', - ReACT: 'ตอบสนอง', - }, - setting: { - maximumIterations: { - description: 'จํากัดจํานวนการทําซ้ําที่ผู้ช่วยตัวแทนสามารถดําเนินการได้', - name: 'การทําซ้ําสูงสุด', - }, - name: 'การตั้งค่าตัวแทน', - description: 'การตั้งค่าผู้ช่วยตัวแทนอนุญาตให้ตั้งค่าโหมดตัวแทนและคุณสมบัติขั้นสูง เช่น ข้อความแจ้งในตัว ซึ่งใช้ได้เฉพาะในประเภทตัวแทนเท่านั้น', - }, - tools: { - enabled: 'เปิด', - name: 'เครื่อง มือ', - description: 'การใช้เครื่องมือสามารถขยายขีดความสามารถของ LLM ได้ เช่น การค้นหาทางอินเทอร์เน็ตหรือการคํานวณทางวิทยาศาสตร์', - }, - agentMode: 'โหมดตัวแทน', - firstPrompt: 'พรอมต์แรก', - buildInPrompt: 'พรอมต์ในตัว', - promptPlaceholder: 'เขียนข้อความแจ้งของคุณที่นี่', - nextIteration: 'การทําซ้ําครั้งต่อไป', - agentModeDes: 'ตั้งค่าประเภทของโหมดการอนุมานสําหรับตัวแทน', - }, - orchestrate: 'ออเคสตร้า', - variableTitle: 'ตัว แปร', - noResult: 'ผลลัพธ์จะแสดงที่นี่', - formattingChangedText: 'การแก้ไขการจัดรูปแบบจะรีเซ็ตพื้นที่ดีบัก คุณแน่ใจหรือไม่?', - publishAs: 'เผยแพร่เป็น', - result: 'ข้อความที่ส่งออก', - formattingChangedTitle: 'การจัดรูปแบบเปลี่ยนไป', - completionSubTitle: 'พรอมต์คํานําหน้า', - chatSubTitle: 'คำ แนะ นำ', - debugAsMultipleModel: 'ดีบักเป็นหลายรุ่น', - variableTip: 'ผู้ใช้กรอกตัวแปรในแบบฟอร์ม แทนที่ตัวแปรในพรอมต์โดยอัตโนมัติ', - debugAsSingleModel: 'ดีบักเป็นโมเดลเดียว', - duplicateModel: 'สำเนา', - autoAddVar: 'ตัวแปรที่ไม่ได้กําหนดอ้างอิงในพรอมต์ล่วงหน้าคุณต้องการเพิ่มในแบบฟอร์มการป้อนข้อมูลของผู้ใช้หรือไม่?', - promptTip: 'พรอมต์ช่วยชี้แนะแบบตอบสนองของ AI ด้วยคำแนะนำและข้อจำกัด ใส่ตัวแปรเช่น {{input}} พรอมต์นี้จะมองไม่เห็นสำหรับผู้ใช้', - notSetVar: 'ตัวแปรช่วยให้ผู้ใช้สามารถใส่คำกระตุ้นหรือข้อคิดเห็นเริ่มต้นเมื่อกรอกแบบฟอร์ม คุณสามารถลองใส่ "{{input}}" ในคำกระตุ้นได้', -} - -export default translation diff --git a/web/i18n/th-TH/app-log.json b/web/i18n/th-TH/app-log.json new file mode 100644 index 0000000000..82c6f6a0d0 --- /dev/null +++ b/web/i18n/th-TH/app-log.json @@ -0,0 +1,110 @@ +{ + "title": "บันทึก", + "description": "บันทึกบันทึกสถานะการทํางานของแอปพลิเคชัน รวมถึงการป้อนข้อมูลของผู้ใช้และการตอบกลับ AI", + "dateTimeFormat": "MM/DD/YYYY hh:mm:ss A", + "table": { + "header": { + "updatedTime": "อัพเดทเวลา", + "time": "เวลาที่สร้าง", + "endUser": "ผู้ใช้ปลายทางหรือบัญชี", + "input": "อินพุต", + "output": "ผลิตภัณฑ์", + "summary": "ชื่อเรื่อง", + "messageCount": "จํานวนข้อความ", + "userRate": "อัตราผู้ใช้", + "adminRate": "Op. อัตรา", + "startTime": "เวลาเริ่มต้น", + "status": "สถานะ", + "runtime": "เวลาทํางาน", + "tokens": "โท เค็น", + "user": "ผู้ใช้ปลายทางหรือบัญชี", + "version": "เวอร์ชัน", + "triggered_from": "ถูกกระตุ้นโดย" + }, + "pagination": { + "previous": "ก่อนหน้า", + "next": "ต่อไป" + }, + "empty": { + "noChat": "ยังไม่มีการสนทนา", + "noOutput": "ไม่มีเอาต์พุต", + "element": { + "title": "มีใครอยู่ที่นั่นไหม?", + "content": "สังเกตและใส่คําอธิบายประกอบการโต้ตอบระหว่างผู้ใช้ปลายทางและแอปพลิเคชัน AI ที่นี่เพื่อปรับปรุงความแม่นยําของ AI อย่างต่อเนื่อง คุณสามารถลองแชร์หรือทดสอบเว็บแอปด้วยตัวคุณเอง แล้วกลับไปที่หน้านี้" + } + } + }, + "detail": { + "time": "เวลา", + "conversationId": "รหัสการสนทนา", + "promptTemplate": "เทมเพลตพร้อมท์", + "promptTemplateBeforeChat": "เทมเพลตพร้อมท์ก่อนแชท · เป็นข้อความของระบบ", + "annotationTip": "การปรับปรุงที่ทําเครื่องหมายโดย {{user}}", + "second": "s", + "tokenCost": "โทเค็นที่ใช้ไป", + "loading": "การโหลด", + "operation": { + "like": "ชอบ", + "dislike": "ไม่ชอบ", + "addAnnotation": "เพิ่มการปรับปรุง", + "editAnnotation": "แก้ไขการปรับปรุง", + "annotationPlaceholder": "ป้อนคําตอบที่คาดหวังที่คุณต้องการให้ AI ตอบกลับ ซึ่งสามารถใช้สําหรับการปรับแต่งโมเดลและการปรับปรุงคุณภาพการสร้างข้อความอย่างต่อเนื่องในอนาคต" + }, + "variables": "ตัว แปร", + "uploadImages": "รูปภาพที่อัปโหลด", + "timeConsuming": "", + "modelParams": "พารามิเตอร์แบบจําลอง" + }, + "filter": { + "period": { + "today": "วันนี้", + "last7days": "7 วันที่ผ่านมา", + "last4weeks": "4 สัปดาห์ที่ผ่านมา", + "last3months": "3 เดือนที่ผ่านมา", + "last12months": "12 เดือนที่ผ่านมา", + "monthToDate": "เดือนจนถึงปัจจุบัน", + "quarterToDate": "ไตรมาสจนถึงปัจจุบัน", + "yearToDate": "ปีจนถึงปัจจุบัน", + "allTime": "ตลอดเวลา", + "last30days": "30 วันที่ผ่านมา", + "custom": "กำหนดเอง" + }, + "annotation": { + "all": "ทั้งหมด", + "annotated": "การปรับปรุงที่มีคําอธิบายประกอบ ({{count}} รายการ)", + "not_annotated": "ไม่มีคําอธิบายประกอบ" + }, + "sortBy": "เมืองสีดํา:", + "descending": "จากมากไปหาน้อย", + "ascending": "จากน้อยไปมาก" + }, + "workflowTitle": "บันทึกเวิร์กโฟลว์", + "workflowSubtitle": "บันทึกบันทึกการทํางานของ Automate", + "runDetail": { + "title": "บันทึกการสนทนา", + "workflowTitle": "รายละเอียดบันทึก", + "fileListDetail": "รายละเอียด", + "fileListLabel": "รายละเอียดไฟล์", + "testWithParams": "ทดสอบด้วยพารามิเตอร์" + }, + "promptLog": "บันทึกพร้อมท์", + "agentLog": "บันทึกตัวแทน", + "viewLog": "ดูบันทึก", + "agentLogDetail": { + "agentMode": "โหมดตัวแทน", + "toolUsed": "เครื่องมือที่ใช้", + "iterations": "เกิด ซ้ำ", + "iteration": "เกิด ซ้ำ", + "finalProcessing": "การประมวลผลขั้นสุดท้าย" + }, + "dateFormat": "วัน/เดือน/ปี", + "triggerBy": { + "debugging": "การแก้ไขข้อบกพร่อง", + "appRun": "เว็บแอป", + "webhook": "เว็บฮุค", + "schedule": "ตารางเวลา", + "plugin": "ปลั๊กอิน", + "ragPipelineRun": "กระบวนการ RAG", + "ragPipelineDebugging": "การดีบัก RAG" + } +} diff --git a/web/i18n/th-TH/app-log.ts b/web/i18n/th-TH/app-log.ts deleted file mode 100644 index 647e1bfc15..0000000000 --- a/web/i18n/th-TH/app-log.ts +++ /dev/null @@ -1,112 +0,0 @@ -const translation = { - title: 'บันทึก', - description: 'บันทึกบันทึกสถานะการทํางานของแอปพลิเคชัน รวมถึงการป้อนข้อมูลของผู้ใช้และการตอบกลับ AI', - dateTimeFormat: 'MM/DD/YYYY hh:mm:ss A', - table: { - header: { - updatedTime: 'อัพเดทเวลา', - time: 'เวลาที่สร้าง', - endUser: 'ผู้ใช้ปลายทางหรือบัญชี', - input: 'อินพุต', - output: 'ผลิตภัณฑ์', - summary: 'ชื่อเรื่อง', - messageCount: 'จํานวนข้อความ', - userRate: 'อัตราผู้ใช้', - adminRate: 'Op. อัตรา', - startTime: 'เวลาเริ่มต้น', - status: 'สถานะ', - runtime: 'เวลาทํางาน', - tokens: 'โท เค็น', - user: 'ผู้ใช้ปลายทางหรือบัญชี', - version: 'เวอร์ชัน', - triggered_from: 'ถูกกระตุ้นโดย', - }, - pagination: { - previous: 'ก่อนหน้า', - next: 'ต่อไป', - }, - empty: { - noChat: 'ยังไม่มีการสนทนา', - noOutput: 'ไม่มีเอาต์พุต', - element: { - title: 'มีใครอยู่ที่นั่นไหม?', - content: 'สังเกตและใส่คําอธิบายประกอบการโต้ตอบระหว่างผู้ใช้ปลายทางและแอปพลิเคชัน AI ที่นี่เพื่อปรับปรุงความแม่นยําของ AI อย่างต่อเนื่อง คุณสามารถลองแชร์หรือทดสอบเว็บแอปด้วยตัวคุณเอง แล้วกลับไปที่หน้านี้', - }, - }, - }, - detail: { - time: 'เวลา', - conversationId: 'รหัสการสนทนา', - promptTemplate: 'เทมเพลตพร้อมท์', - promptTemplateBeforeChat: 'เทมเพลตพร้อมท์ก่อนแชท · เป็นข้อความของระบบ', - annotationTip: 'การปรับปรุงที่ทําเครื่องหมายโดย {{user}}', - second: 's', - tokenCost: 'โทเค็นที่ใช้ไป', - loading: 'การโหลด', - operation: { - like: 'ชอบ', - dislike: 'ไม่ชอบ', - addAnnotation: 'เพิ่มการปรับปรุง', - editAnnotation: 'แก้ไขการปรับปรุง', - annotationPlaceholder: 'ป้อนคําตอบที่คาดหวังที่คุณต้องการให้ AI ตอบกลับ ซึ่งสามารถใช้สําหรับการปรับแต่งโมเดลและการปรับปรุงคุณภาพการสร้างข้อความอย่างต่อเนื่องในอนาคต', - }, - variables: 'ตัว แปร', - uploadImages: 'รูปภาพที่อัปโหลด', - timeConsuming: '', - modelParams: 'พารามิเตอร์แบบจําลอง', - }, - filter: { - period: { - today: 'วันนี้', - last7days: '7 วันที่ผ่านมา', - last4weeks: '4 สัปดาห์ที่ผ่านมา', - last3months: '3 เดือนที่ผ่านมา', - last12months: '12 เดือนที่ผ่านมา', - monthToDate: 'เดือนจนถึงปัจจุบัน', - quarterToDate: 'ไตรมาสจนถึงปัจจุบัน', - yearToDate: 'ปีจนถึงปัจจุบัน', - allTime: 'ตลอดเวลา', - last30days: '30 วันที่ผ่านมา', - custom: 'กำหนดเอง', - }, - annotation: { - all: 'ทั้งหมด', - annotated: 'การปรับปรุงที่มีคําอธิบายประกอบ ({{count}} รายการ)', - not_annotated: 'ไม่มีคําอธิบายประกอบ', - }, - sortBy: 'เมืองสีดํา:', - descending: 'จากมากไปหาน้อย', - ascending: 'จากน้อยไปมาก', - }, - workflowTitle: 'บันทึกเวิร์กโฟลว์', - workflowSubtitle: 'บันทึกบันทึกการทํางานของ Automate', - runDetail: { - title: 'บันทึกการสนทนา', - workflowTitle: 'รายละเอียดบันทึก', - fileListDetail: 'รายละเอียด', - fileListLabel: 'รายละเอียดไฟล์', - testWithParams: 'ทดสอบด้วยพารามิเตอร์', - }, - promptLog: 'บันทึกพร้อมท์', - agentLog: 'บันทึกตัวแทน', - viewLog: 'ดูบันทึก', - agentLogDetail: { - agentMode: 'โหมดตัวแทน', - toolUsed: 'เครื่องมือที่ใช้', - iterations: 'เกิด ซ้ำ', - iteration: 'เกิด ซ้ำ', - finalProcessing: 'การประมวลผลขั้นสุดท้าย', - }, - dateFormat: 'วัน/เดือน/ปี', - triggerBy: { - debugging: 'การแก้ไขข้อบกพร่อง', - appRun: 'เว็บแอป', - webhook: 'เว็บฮุค', - schedule: 'ตารางเวลา', - plugin: 'ปลั๊กอิน', - ragPipelineRun: 'กระบวนการ RAG', - ragPipelineDebugging: 'การดีบัก RAG', - }, -} - -export default translation diff --git a/web/i18n/th-TH/app-overview.json b/web/i18n/th-TH/app-overview.json new file mode 100644 index 0000000000..f8d13c2b69 --- /dev/null +++ b/web/i18n/th-TH/app-overview.json @@ -0,0 +1,187 @@ +{ + "welcome": { + "firstStepTip": "ในการเริ่มต้น", + "enterKeyTip": "ป้อนคีย์ OpenAI API ของคุณด้านล่าง", + "getKeyTip": "รับคีย์ API ของคุณจากแดชบอร์ด OpenAI", + "placeholder": "คีย์ API OpenAI ของคุณ (เช่น sk-xxxx)" + }, + "apiKeyInfo": { + "cloud": { + "trial": { + "title": "คุณกําลังใช้โควต้าทดลองใช้ {{providerName}}", + "description": "โควต้าทดลองใช้มีไว้เพื่อวัตถุประสงค์ในการทดสอบของคุณ ก่อนที่โควต้าทดลองใช้จะหมด โปรดตั้งค่าผู้ให้บริการโมเดลของคุณเองหรือซื้อโควต้าเพิ่มเติม" + }, + "exhausted": { + "title": "โควต้าทดลองใช้ของคุณหมดแล้ว โปรดตั้งค่า APIKey ของคุณ", + "description": "คุณใช้โควต้าทดลองใช้หมดแล้ว โปรดตั้งค่าผู้ให้บริการโมเดลของคุณเองหรือซื้อโควต้าเพิ่มเติม" + } + }, + "selfHost": { + "title": { + "row1": "ในการเริ่มต้น", + "row2": "ตั้งค่าผู้ให้บริการโมเดลของคุณก่อน" + } + }, + "callTimes": "เวลาโทร", + "usedToken": "โทเค็นที่ใช้", + "setAPIBtn": "ไปที่ผู้ให้บริการโมเดลการตั้งค่า", + "tryCloud": "หรือลองใช้ Dify เวอร์ชันคลาวด์พร้อมใบเสนอราคาฟรี" + }, + "overview": { + "title": "ภาพรวม", + "appInfo": { + "explanation": "AI web app พร้อมใช้งาน", + "accessibleAddress": "URL สาธารณะ", + "preview": "ดูตัวอย่าง", + "regenerate": "สร้างใหม่", + "regenerateNotice": "คุณต้องการสร้าง URL สาธารณะใหม่หรือไม่", + "preUseReminder": "โปรดเปิดใช้งาน web app ก่อนดําเนินการต่อ", + "settings": { + "entry": "การตั้งค่า", + "title": "การตั้งค่าเว็บแอป", + "webName": "ชื่อเว็บแอป", + "webDesc": "คําอธิบาย web app", + "webDescTip": "ข้อความนี้จะแสดงที่ฝั่งไคลเอ็นต์ โดยให้คําแนะนําพื้นฐานเกี่ยวกับวิธีการใช้แอปพลิเคชัน", + "webDescPlaceholder": "ป้อนคําอธิบายของ web app", + "language": "ภาษา", + "workflow": { + "title": "เวิร์กโฟลว์", + "subTitle": "รายละเอียดเวิร์กโฟลว์", + "show": "แสดง", + "hide": "ซ่อน", + "showDesc": "แสดงหรือซ่อนรายละเอียดเวิร์กโฟลว์ใน web app" + }, + "chatColorTheme": "ธีมสีแชท", + "chatColorThemeDesc": "กําหนดธีมสีของแชทบอท", + "chatColorThemeInverted": "คว่ำ", + "invalidHexMessage": "ค่าฐานสิบหกไม่ถูกต้อง", + "invalidPrivacyPolicy": "ลิงก์นโยบายความเป็นส่วนตัวไม่ถูกต้อง โปรดใช้ลิงก์ที่ถูกต้องขึ้นต้นด้วย http หรือ https", + "sso": { + "label": "การรับรองความถูกต้องของ SSO", + "title": "เว็บแอป SSO", + "description": "ผู้ใช้ทุกคนต้องเข้าสู่ระบบด้วย SSO ก่อนใช้ web app", + "tooltip": "ติดต่อผู้ดูแลระบบเพื่อเปิดใช้ web app SSO" + }, + "more": { + "entry": "แสดงการตั้งค่าเพิ่มเติม", + "copyright": "ลิขสิทธิ์", + "copyRightPlaceholder": "ป้อนชื่อผู้เขียนหรือองค์กร", + "privacyPolicy": "นโยบายความเป็นส่วนตัว", + "privacyPolicyPlaceholder": "ป้อนลิงก์นโยบายความเป็นส่วนตัว", + "privacyPolicyTip": "ช่วยให้ผู้เยี่ยมชมเข้าใจข้อมูลที่แอปพลิเคชันรวบรวม โปรดดูนโยบายความเป็นส่วนตัวของ Dify", + "customDisclaimer": "ข้อจํากัดความรับผิดชอบที่กําหนดเอง", + "customDisclaimerPlaceholder": "ป้อนข้อความข้อจํากัดความรับผิดชอบที่กําหนดเอง", + "customDisclaimerTip": "ข้อความปฏิเสธความรับผิดชอบที่กําหนดเองจะแสดงที่ฝั่งไคลเอ็นต์ โดยให้ข้อมูลเพิ่มเติมเกี่ยวกับแอปพลิเคชัน", + "copyrightTip": "แสดงข้อมูลลิขสิทธิ์ในเว็บแอป", + "copyrightTooltip": "โปรดอัปเกรดเป็นแผน Professional หรือสูงกว่า" + }, + "modalTip": "การตั้งค่าเว็บแอปฝั่งไคลเอ็นต์" + }, + "embedded": { + "entry": "ฝัง ตัว", + "title": "ฝังบนเว็บไซต์", + "explanation": "เลือกวิธีฝังแอปแชทลงในเว็บไซต์ของคุณ", + "iframe": "หากต้องการเพิ่มแอปแชทที่ใดก็ได้บนเว็บไซต์ของคุณ ให้เพิ่ม iframe นี้ลงในโค้ด html ของคุณ", + "scripts": "หากต้องการเพิ่มแอปแชทที่ด้านขวาล่างของเว็บไซต์ ให้เพิ่มโค้ดนี้ลงใน html ของคุณ", + "chromePlugin": "ติดตั้งส่วนขยาย Dify Chatbot Chrome", + "copied": "คัด ลอก", + "copy": "ลอก" + }, + "qrcode": { + "title": "เชื่อมโยงรหัส QR", + "scan": "สแกนเพื่อแบ่งปัน", + "download": "ดาวน์โหลด QR Code" + }, + "customize": { + "way": "วิธี", + "entry": "ปรับแต่ง", + "title": "ปรับแต่ง AI web app", + "explanation": "คุณสามารถปรับแต่งส่วนหน้าของ Web App ให้เหมาะกับสถานการณ์และความต้องการสไตล์ของคุณได้", + "way1": { + "name": "แยกรหัสไคลเอ็นต์ แก้ไข และปรับใช้กับ Vercel (แนะนํา)", + "step1": "แยกรหัสไคลเอ็นต์และแก้ไข", + "step1Tip": "คลิกที่นี่เพื่อแยกซอร์สโค้ดลงในบัญชี GitHub ของคุณและแก้ไขโค้ด", + "step1Operation": "Dify-Web ไคลเอ็นต์", + "step2": "ปรับใช้กับ Vercel", + "step2Tip": "คลิกที่นี่เพื่อนําเข้าที่เก็บไปยัง Vercel และปรับใช้", + "step2Operation": "นําเข้าที่เก็บข้อมูล", + "step3": "กําหนดค่าตัวแปรสภาพแวดล้อม", + "step3Tip": "เพิ่มตัวแปรสภาพแวดล้อมต่อไปนี้ใน Vercel" + }, + "way2": { + "name": "เขียนโค้ดฝั่งไคลเอ็นต์เพื่อเรียกใช้ API และปรับใช้กับเซิร์ฟเวอร์", + "operation": "เอกสาร" + } + }, + "launch": "เรือยนต์", + "enableTooltip": { + "description": "เพื่อเปิดใช้งานฟีเจอร์นี้ โปรดเพิ่มโหนดการป้อนข้อมูลผู้ใช้ไปยังแคนวาส (อาจมีอยู่แล้วในร่าง ใช้งานได้หลังจากเผยแพร่)", + "learnMore": "เรียนรู้เพิ่มเติม" + }, + "title": "เว็บแอป" + }, + "apiInfo": { + "title": "API บริการแบ็กเอนด์", + "explanation": "ผสานรวมเข้ากับแอปพลิเคชันของคุณได้อย่างง่ายดาย", + "accessibleAddress": "ปลายทาง API บริการ", + "doc": "การอ้างอิง API" + }, + "status": { + "running": "ให้บริการ", + "disable": "พิการ" + }, + "triggerInfo": { + "title": "สิ่งกระตุ้น", + "explanation": "การจัดการทริกเกอร์เวิร์กโฟลว์", + "triggersAdded": "เพิ่มทริกเกอร์เรียบร้อยแล้ว", + "noTriggerAdded": "ยังไม่ได้เพิ่มทริกเกอร์", + "triggerStatusDescription": "สถานะของโหนดตัวเรียกปรากฏที่นี่ (อาจมีอยู่แล้วในร่าง และจะมีผลหลังจากเผยแพร่)", + "learnAboutTriggers": "เรียนรู้เกี่ยวกับทริกเกอร์" + }, + "disableTooltip": { + "triggerMode": "โหมดโหนดทริกเกอร์ไม่รองรับฟีเจอร์ {{feature}}." + } + }, + "analysis": { + "title": "การวิเคราะห์", + "ms": "นางสาว", + "tokenPS": "โทเค็น/วินาที", + "totalMessages": { + "title": "ข้อความทั้งหมด", + "explanation": "การโต้ตอบ AI รายวันนับ" + }, + "totalConversations": { + "title": "การสนทนาทั้งหมด", + "explanation": "การสนทนา AI รายวันนับ ไม่รวมวิศวกรรม/ดีบักพร้อมท์" + }, + "activeUsers": { + "title": "ผู้ใช้ที่ใช้งานอยู่", + "explanation": "ผู้ใช้ที่ไม่ซ้ํากันมีส่วนร่วมในการถามตอบกับ AI ไม่รวมวิศวกรรม/ดีบักพร้อมท์" + }, + "tokenUsage": { + "title": "การใช้โทเค็น", + "explanation": "สะท้อนถึงการใช้โทเค็นรายวันของโมเดลภาษาสําหรับแอปพลิเคชัน ซึ่งมีประโยชน์สําหรับวัตถุประสงค์ในการควบคุมต้นทุน", + "consumed": "ใช้" + }, + "avgSessionInteractions": { + "title": "การโต้ตอบเซสชันโดยเฉลี่ย", + "explanation": "จํานวนการสื่อสารระหว่างผู้ใช้และ AI อย่างต่อเนื่อง สําหรับแอปที่ใช้การสนทนา" + }, + "avgUserInteractions": { + "title": "การโต้ตอบของผู้ใช้โดยเฉลี่ย", + "explanation": "สะท้อนถึงความถี่ในการใช้งานรายวันของผู้ใช้ เมตริกนี้สะท้อนถึงความเหนียวแน่นของผู้ใช้" + }, + "userSatisfactionRate": { + "title": "อัตราความพึงพอใจของผู้ใช้", + "explanation": "จํานวนไลค์ต่อ 1,000 ข้อความ สิ่งนี้บ่งชี้ถึงสัดส่วนของคําตอบที่ผู้ใช้พึงพอใจอย่างมาก" + }, + "avgResponseTime": { + "title": "เวลาตอบสนองเฉลี่ย", + "explanation": "เวลา (มิลลิวินาที) สําหรับ AI ในการประมวลผล/ตอบสนอง สําหรับแอปที่ใช้ข้อความ" + }, + "tps": { + "title": "ความเร็วในการส่งออกโทเค็น", + "explanation": "วัดประสิทธิภาพของ LLM นับความเร็วในการส่งออกโทเค็นของ LLM ตั้งแต่เริ่มต้นคําขอจนถึงเสร็จสิ้นเอาต์พุต" + } + } +} diff --git a/web/i18n/th-TH/app-overview.ts b/web/i18n/th-TH/app-overview.ts deleted file mode 100644 index 81f519ebb3..0000000000 --- a/web/i18n/th-TH/app-overview.ts +++ /dev/null @@ -1,189 +0,0 @@ -const translation = { - welcome: { - firstStepTip: 'ในการเริ่มต้น', - enterKeyTip: 'ป้อนคีย์ OpenAI API ของคุณด้านล่าง', - getKeyTip: 'รับคีย์ API ของคุณจากแดชบอร์ด OpenAI', - placeholder: 'คีย์ API OpenAI ของคุณ (เช่น sk-xxxx)', - }, - apiKeyInfo: { - cloud: { - trial: { - title: 'คุณกําลังใช้โควต้าทดลองใช้ {{providerName}}', - description: 'โควต้าทดลองใช้มีไว้เพื่อวัตถุประสงค์ในการทดสอบของคุณ ก่อนที่โควต้าทดลองใช้จะหมด โปรดตั้งค่าผู้ให้บริการโมเดลของคุณเองหรือซื้อโควต้าเพิ่มเติม', - }, - exhausted: { - title: 'โควต้าทดลองใช้ของคุณหมดแล้ว โปรดตั้งค่า APIKey ของคุณ', - description: 'คุณใช้โควต้าทดลองใช้หมดแล้ว โปรดตั้งค่าผู้ให้บริการโมเดลของคุณเองหรือซื้อโควต้าเพิ่มเติม', - }, - }, - selfHost: { - title: { - row1: 'ในการเริ่มต้น', - row2: 'ตั้งค่าผู้ให้บริการโมเดลของคุณก่อน', - }, - }, - callTimes: 'เวลาโทร', - usedToken: 'โทเค็นที่ใช้', - setAPIBtn: 'ไปที่ผู้ให้บริการโมเดลการตั้งค่า', - tryCloud: 'หรือลองใช้ Dify เวอร์ชันคลาวด์พร้อมใบเสนอราคาฟรี', - }, - overview: { - title: 'ภาพรวม', - appInfo: { - explanation: 'AI web app พร้อมใช้งาน', - accessibleAddress: 'URL สาธารณะ', - preview: 'ดูตัวอย่าง', - regenerate: 'สร้างใหม่', - regenerateNotice: 'คุณต้องการสร้าง URL สาธารณะใหม่หรือไม่', - preUseReminder: 'โปรดเปิดใช้งาน web app ก่อนดําเนินการต่อ', - settings: { - entry: 'การตั้งค่า', - title: 'การตั้งค่าเว็บแอป', - webName: 'ชื่อเว็บแอป', - webDesc: 'คําอธิบาย web app', - webDescTip: 'ข้อความนี้จะแสดงที่ฝั่งไคลเอ็นต์ โดยให้คําแนะนําพื้นฐานเกี่ยวกับวิธีการใช้แอปพลิเคชัน', - webDescPlaceholder: 'ป้อนคําอธิบายของ web app', - language: 'ภาษา', - workflow: { - title: 'เวิร์กโฟลว์', - subTitle: 'รายละเอียดเวิร์กโฟลว์', - show: 'แสดง', - hide: 'ซ่อน', - showDesc: 'แสดงหรือซ่อนรายละเอียดเวิร์กโฟลว์ใน web app', - }, - chatColorTheme: 'ธีมสีแชท', - chatColorThemeDesc: 'กําหนดธีมสีของแชทบอท', - chatColorThemeInverted: 'คว่ำ', - invalidHexMessage: 'ค่าฐานสิบหกไม่ถูกต้อง', - invalidPrivacyPolicy: 'ลิงก์นโยบายความเป็นส่วนตัวไม่ถูกต้อง โปรดใช้ลิงก์ที่ถูกต้องขึ้นต้นด้วย http หรือ https', - sso: { - label: 'การรับรองความถูกต้องของ SSO', - title: 'เว็บแอป SSO', - description: 'ผู้ใช้ทุกคนต้องเข้าสู่ระบบด้วย SSO ก่อนใช้ web app', - tooltip: 'ติดต่อผู้ดูแลระบบเพื่อเปิดใช้ web app SSO', - }, - more: { - entry: 'แสดงการตั้งค่าเพิ่มเติม', - copyright: 'ลิขสิทธิ์', - copyRightPlaceholder: 'ป้อนชื่อผู้เขียนหรือองค์กร', - privacyPolicy: 'นโยบายความเป็นส่วนตัว', - privacyPolicyPlaceholder: 'ป้อนลิงก์นโยบายความเป็นส่วนตัว', - privacyPolicyTip: 'ช่วยให้ผู้เยี่ยมชมเข้าใจข้อมูลที่แอปพลิเคชันรวบรวม โปรดดูนโยบายความเป็นส่วนตัวของ Dify', - customDisclaimer: 'ข้อจํากัดความรับผิดชอบที่กําหนดเอง', - customDisclaimerPlaceholder: 'ป้อนข้อความข้อจํากัดความรับผิดชอบที่กําหนดเอง', - customDisclaimerTip: 'ข้อความปฏิเสธความรับผิดชอบที่กําหนดเองจะแสดงที่ฝั่งไคลเอ็นต์ โดยให้ข้อมูลเพิ่มเติมเกี่ยวกับแอปพลิเคชัน', - copyrightTip: 'แสดงข้อมูลลิขสิทธิ์ในเว็บแอป', - copyrightTooltip: 'โปรดอัปเกรดเป็นแผน Professional หรือสูงกว่า', - }, - modalTip: 'การตั้งค่าเว็บแอปฝั่งไคลเอ็นต์', - }, - embedded: { - entry: 'ฝัง ตัว', - title: 'ฝังบนเว็บไซต์', - explanation: 'เลือกวิธีฝังแอปแชทลงในเว็บไซต์ของคุณ', - iframe: 'หากต้องการเพิ่มแอปแชทที่ใดก็ได้บนเว็บไซต์ของคุณ ให้เพิ่ม iframe นี้ลงในโค้ด html ของคุณ', - scripts: 'หากต้องการเพิ่มแอปแชทที่ด้านขวาล่างของเว็บไซต์ ให้เพิ่มโค้ดนี้ลงใน html ของคุณ', - chromePlugin: 'ติดตั้งส่วนขยาย Dify Chatbot Chrome', - copied: 'คัด ลอก', - copy: 'ลอก', - }, - qrcode: { - title: 'เชื่อมโยงรหัส QR', - scan: 'สแกนเพื่อแบ่งปัน', - download: 'ดาวน์โหลด QR Code', - }, - customize: { - way: 'วิธี', - entry: 'ปรับแต่ง', - title: 'ปรับแต่ง AI web app', - explanation: 'คุณสามารถปรับแต่งส่วนหน้าของ Web App ให้เหมาะกับสถานการณ์และความต้องการสไตล์ของคุณได้', - way1: { - name: 'แยกรหัสไคลเอ็นต์ แก้ไข และปรับใช้กับ Vercel (แนะนํา)', - step1: 'แยกรหัสไคลเอ็นต์และแก้ไข', - step1Tip: 'คลิกที่นี่เพื่อแยกซอร์สโค้ดลงในบัญชี GitHub ของคุณและแก้ไขโค้ด', - step1Operation: 'Dify-Web ไคลเอ็นต์', - step2: 'ปรับใช้กับ Vercel', - step2Tip: 'คลิกที่นี่เพื่อนําเข้าที่เก็บไปยัง Vercel และปรับใช้', - step2Operation: 'นําเข้าที่เก็บข้อมูล', - step3: 'กําหนดค่าตัวแปรสภาพแวดล้อม', - step3Tip: 'เพิ่มตัวแปรสภาพแวดล้อมต่อไปนี้ใน Vercel', - }, - way2: { - name: 'เขียนโค้ดฝั่งไคลเอ็นต์เพื่อเรียกใช้ API และปรับใช้กับเซิร์ฟเวอร์', - operation: 'เอกสาร', - }, - }, - launch: 'เรือยนต์', - enableTooltip: { - description: 'เพื่อเปิดใช้งานฟีเจอร์นี้ โปรดเพิ่มโหนดการป้อนข้อมูลผู้ใช้ไปยังแคนวาส (อาจมีอยู่แล้วในร่าง ใช้งานได้หลังจากเผยแพร่)', - learnMore: 'เรียนรู้เพิ่มเติม', - }, - title: 'เว็บแอป', - }, - apiInfo: { - title: 'API บริการแบ็กเอนด์', - explanation: 'ผสานรวมเข้ากับแอปพลิเคชันของคุณได้อย่างง่ายดาย', - accessibleAddress: 'ปลายทาง API บริการ', - doc: 'การอ้างอิง API', - }, - status: { - running: 'ให้บริการ', - disable: 'พิการ', - }, - triggerInfo: { - title: 'สิ่งกระตุ้น', - explanation: 'การจัดการทริกเกอร์เวิร์กโฟลว์', - triggersAdded: 'เพิ่มทริกเกอร์เรียบร้อยแล้ว', - noTriggerAdded: 'ยังไม่ได้เพิ่มทริกเกอร์', - triggerStatusDescription: 'สถานะของโหนดตัวเรียกปรากฏที่นี่ (อาจมีอยู่แล้วในร่าง และจะมีผลหลังจากเผยแพร่)', - learnAboutTriggers: 'เรียนรู้เกี่ยวกับทริกเกอร์', - }, - disableTooltip: { - triggerMode: 'โหมดโหนดทริกเกอร์ไม่รองรับฟีเจอร์ {{feature}}.', - }, - }, - analysis: { - title: 'การวิเคราะห์', - ms: 'นางสาว', - tokenPS: 'โทเค็น/วินาที', - totalMessages: { - title: 'ข้อความทั้งหมด', - explanation: 'การโต้ตอบ AI รายวันนับ', - }, - totalConversations: { - title: 'การสนทนาทั้งหมด', - explanation: 'การสนทนา AI รายวันนับ ไม่รวมวิศวกรรม/ดีบักพร้อมท์', - }, - activeUsers: { - title: 'ผู้ใช้ที่ใช้งานอยู่', - explanation: 'ผู้ใช้ที่ไม่ซ้ํากันมีส่วนร่วมในการถามตอบกับ AI ไม่รวมวิศวกรรม/ดีบักพร้อมท์', - }, - tokenUsage: { - title: 'การใช้โทเค็น', - explanation: 'สะท้อนถึงการใช้โทเค็นรายวันของโมเดลภาษาสําหรับแอปพลิเคชัน ซึ่งมีประโยชน์สําหรับวัตถุประสงค์ในการควบคุมต้นทุน', - consumed: 'ใช้', - }, - avgSessionInteractions: { - title: 'การโต้ตอบเซสชันโดยเฉลี่ย', - explanation: 'จํานวนการสื่อสารระหว่างผู้ใช้และ AI อย่างต่อเนื่อง สําหรับแอปที่ใช้การสนทนา', - }, - avgUserInteractions: { - title: 'การโต้ตอบของผู้ใช้โดยเฉลี่ย', - explanation: 'สะท้อนถึงความถี่ในการใช้งานรายวันของผู้ใช้ เมตริกนี้สะท้อนถึงความเหนียวแน่นของผู้ใช้', - }, - userSatisfactionRate: { - title: 'อัตราความพึงพอใจของผู้ใช้', - explanation: 'จํานวนไลค์ต่อ 1,000 ข้อความ สิ่งนี้บ่งชี้ถึงสัดส่วนของคําตอบที่ผู้ใช้พึงพอใจอย่างมาก', - }, - avgResponseTime: { - title: 'เวลาตอบสนองเฉลี่ย', - explanation: 'เวลา (มิลลิวินาที) สําหรับ AI ในการประมวลผล/ตอบสนอง สําหรับแอปที่ใช้ข้อความ', - }, - tps: { - title: 'ความเร็วในการส่งออกโทเค็น', - explanation: 'วัดประสิทธิภาพของ LLM นับความเร็วในการส่งออกโทเค็นของ LLM ตั้งแต่เริ่มต้นคําขอจนถึงเสร็จสิ้นเอาต์พุต', - }, - }, -} - -export default translation diff --git a/web/i18n/th-TH/app.json b/web/i18n/th-TH/app.json new file mode 100644 index 0000000000..197e72edfb --- /dev/null +++ b/web/i18n/th-TH/app.json @@ -0,0 +1,345 @@ +{ + "createApp": "สร้างโปรเจกต์ใหม่", + "types": { + "all": "ทั้งหมด", + "chatbot": "แชทบอท", + "agent": "ตัวแทน", + "workflow": "กระบวนการทำงาน", + "completion": "เสร็จสมบูรณ์", + "basic": "พื้นฐาน", + "advanced": "แชทโฟลว์" + }, + "duplicate": "สำเนา", + "duplicateTitle": "ชื่อซ้ำ", + "export": "ส่งออก DSL", + "exportFailed": "ส่งออก DSL ล้มเหลว", + "importDSL": "นําเข้าไฟล์ DSL", + "createFromConfigFile": "สร้างจากไฟล์ DSL", + "importFromDSL": "นําเข้าจาก DSL", + "importFromDSLFile": "จากไฟล์ DSL", + "importFromDSLUrl": "จาก URL", + "importFromDSLUrlPlaceholder": "วางลิงค์ DSL ที่นี่", + "dslUploader": { + "button": "ลากและวางไฟล์ หรือ", + "browse": "เรียกดู" + }, + "deleteAppConfirmTitle": "ลบโปรเจกต์นี้?", + "deleteAppConfirmContent": "การลบโปรเจกนั้นไม่สามารถย้อนกลับได้ ผู้ใช้จะไม่สามารถเข้าถึงโปรเจกต์ของคุณอีกต่อไป และการกําหนดค่าต่างๆและบันทึกทั้งหมดจะถูกลบอย่างถาวร", + "appDeleted": "โปรเจกต์ถูกลบ", + "appDeleteFailed": "ลบโปรเจกต์ไม่สําเร็จ", + "join": "เข้าร่วมชุมชนนักพัฒนา", + "communityIntro": "พูดคุยกับสมาชิกในทีม ผู้ร่วมให้ข้อมูล และนักพัฒนาในช่องทางต่างๆ", + "roadmap": "ดูแผนงานของเรา", + "newApp": { + "startFromBlank": "สร้างโปรเจกต์ปล่าว", + "startFromTemplate": "สร้างจากเทมเพลต", + "workflowWarning": "ขณะนี้อยู่ในช่วงเบต้า", + "captionName": "ไอคอนและชื่อโปรเจกต์", + "appNamePlaceholder": "ตั้งชื่อโปรเจกต์ของคุณ", + "captionDescription": "คำอธิบาย", + "appDescriptionPlaceholder": "ป้อนคำอธิบายของโปรเจกต์", + "useTemplate": "ใช้เทมเพลตนี้", + "previewDemo": "ตัวอย่างการใช้งาน", + "chatApp": "ผู้ช่วย", + "chatAppIntro": "ฉันต้องการสร้างโปรเจกต์ ที่เป็นแอปพลิเคชันที่ใช้การแชท โปรเจกต์นี้ใช้รูปแบบคำถามและคำตอบ ทําให้สามารถสนทนาต่อเนื่องได้หลายรอบ(Multi-turn)", + "agentAssistant": "ผู้ช่วยใหม่", + "completeApp": "เครื่องมือสร้างข้อความ", + "completeAppIntro": "ฉันต้องการสร้างโปรเจกต์ที่ ที่สามารถสร้างข้อความคุณภาพสูงตามข้อความแจ้ง เช่น การสร้างบทความ สรุป การแปล และอื่นๆ", + "showTemplates": "ฉันต้องการเลือกจากเทมเพลต", + "hideTemplates": "กลับไปที่การเลือกโหมด", + "Create": "สร้าง", + "Cancel": "ยกเลิก", + "Confirm": "ยืนยัน", + "nameNotEmpty": "ชื่อต้องไม่ว่างเปล่า", + "appTemplateNotSelected": "โปรดเลือกเทมเพลต", + "appTypeRequired": "โปรดเลือกประเภทโปรเจกต์", + "appCreated": "สร้างโปรเจกต์", + "caution": "ข้อควรระวัง", + "appCreateDSLWarning": "ข้อควรระวัง: ความแตกต่างของเวอร์ชัน DSL อาจส่งผลต่อคุณสมบัติบางอย่าง", + "appCreateDSLErrorTitle": "ความเข้ากันไม่ได้ของ DSL เวอร์ชัน", + "appCreateDSLErrorPart1": "ตรวจพบความแตกต่างอย่างมีนัยสําคัญในเวอร์ชัน DSL การบังคับนําเข้าอาจทําให้โปรเจกต์ทํางานผิดปกติ", + "appCreateDSLErrorPart2": "คุณต้องการดําเนินการต่อหรือไม่?", + "appCreateDSLErrorPart3": "เวอร์ชัน DSL ของโปรเจกต์ปัจจุบัน:", + "appCreateDSLErrorPart4": "เวอร์ชัน DSL ที่ระบบรองรับ:", + "appCreateFailed": "สร้างโปรเจกต์ไม่สําเร็จ", + "learnMore": "ศึกษาเพิ่มเติม", + "foundResults": "{{count}} ผลลัพธ์", + "noTemplateFoundTip": "ลองค้นหาโดยใช้คีย์เวิร์ดอื่น", + "chatbotShortDescription": "แชทบอทที่ใช้ LLM พร้อมการตั้งค่าที่ง่ายดาย", + "optional": "เสริม", + "workflowUserDescription": "สร้างโฟลว์ AI อัตโนมัติด้วยระบบลากและวางอย่างง่าย", + "agentShortDescription": "ตัวแทนอัจฉริยะพร้อมการใช้เหตุผลและเครื่องมืออัตโนมัติ", + "forBeginners": "ประเภทแอปพื้นฐาน", + "completionShortDescription": "ผู้ช่วย AI สําหรับงานสร้างข้อความ", + "agentUserDescription": "ตัวแทนอัจฉริยะที่สามารถให้เหตุผลซ้ําๆ และใช้เครื่องมืออัตโนมัติเพื่อให้บรรลุเป้าหมายของงาน", + "noIdeaTip": "ไม่มีความคิด? ดูเทมเพลตของเรา", + "foundResult": "{{count}} ผล", + "noAppsFound": "ไม่พบแอป", + "workflowShortDescription": "โฟลว์อัตโนมัติสำหรับระบบอัจฉริยะ", + "forAdvanced": "สําหรับผู้ใช้ขั้นสูง", + "chatbotUserDescription": "สร้างแชทบอทที่ใช้ LLM ได้อย่างรวดเร็วด้วยการกําหนดค่าที่ง่าย คุณสามารถเปลี่ยนไปใช้ Chatflow ได้ในภายหลัง", + "noTemplateFound": "ไม่พบเทมเพลต", + "completionUserDescription": "สร้างผู้ช่วย AI สําหรับงานสร้างข้อความอย่างรวดเร็วด้วยการกําหนดค่าที่ง่าย", + "advancedUserDescription": "โฟลว์พร้อมคุณสมบัติหน่วยความจำเพิ่มเติมและอินเตอร์เฟซแชทบอท", + "chooseAppType": "เลือกประเภทแอป", + "advancedShortDescription": "โฟลว์ที่เสริมประสิทธิภาพสำหรับการสนทนาหลายรอบ", + "dropDSLToCreateApp": "ลากไฟล์ DSL มาที่นี่เพื่สร้างแอป", + "import": "นําเข้า" + }, + "editApp": "แก้ไขข้อมูล", + "editAppTitle": "แก้ไขข้อมูลโปรเจกต์", + "editDone": "อัปเดตข้อมูลโปรเจกต์", + "editFailed": "อัปเดตข้อมูลโปรเจกต์ไม่สําเร็จ", + "iconPicker": { + "ok": "ตกลง, ได้", + "cancel": "ยกเลิก", + "emoji": "อิโมจิ", + "image": "ภาพ" + }, + "answerIcon": { + "title": "ใช้ไอคอน web app เพื่อแทนที่ 🤖", + "description": "จะใช้ไอคอน web app เพื่อแทนที่🤖ในโปรเจกต์ที่ใช้ร่วมกันหรือไม่", + "descriptionInExplore": "จะใช้ไอคอน web app เพื่อแทนที่🤖ใน Explore หรือไม่" + }, + "switch": "เปลี่ยนไปใช้ Workflow Orchestrate", + "switchTipStart": "สําเนาโปรเจกต์ใหม่จะถูกสร้างขึ้นสําหรับคุณ และสําเนาใหม่จะเปลี่ยนเป็น Workflow Orchestration", + "switchTip": "ไม่อนุญาต", + "switchTipEnd": "เปลี่ยนกลับเป็น Basic Orchestrate", + "switchLabel": "สําเนาโปรเจกต์ที่จะสร้าง", + "removeOriginal": "ลบโปรเจกต์เดิม", + "switchStart": "สวิตช์สตาร์ท", + "typeSelector": { + "all": "ทุกประเภท", + "chatbot": "แชทบอท", + "agent": "ตัวแทน", + "workflow": "เวิร์กโฟลว์", + "completion": "เสร็จ", + "advanced": "แชทโฟลว์" + }, + "tracing": { + "title": "การติดตามประสิทธิภาพของโปรเจกต์", + "description": "การกําหนดค่าผู้ให้บริการ LLMOps บุคคลที่สามและประสิทธิภาพของโปรเจกต์ที่นำไปใช้", + "config": "กําหนดค่า", + "view": "มุมมอง", + "collapse": "ยุบ", + "expand": "ขยาย", + "tracing": "ติดตาม", + "disabled": "ปิดการใช้งาน", + "disabledTip": "โปรดกําหนดค่าผู้ให้บริการก่อน", + "enabled": "ให้บริการ", + "tracingDescription": "บันทึกบริบททั้งหมดของการดําเนินการของโปรเจกต์ รวมถึงการเรียก LLM, Prompt คําขอ HTTP และอื่นๆไปยังแพลตฟอร์มของของบุคคลที่สาม", + "configProviderTitle": { + "configured": "กําหนดค่าแล้ว", + "notConfigured": "ผู้ให้บริการกําหนดค่าเพื่อเปิดใช้งานการติดตาม", + "moreProvider": "ผู้ให้บริการเพิ่มเติม" + }, + "arize": { + "title": "Arize", + "description": "การสังเกตการณ์ LLM ระดับองค์กร การประเมินออนไลน์และออฟไลน์ การตรวจสอบ และการทดลอง—ขับเคลื่อนโดย OpenTelemetry ออกแบบมาโดยเฉพาะสำหรับแอปพลิเคชันที่ขับเคลื่อนด้วย LLM และตัวแทน" + }, + "phoenix": { + "title": "Phoenix", + "description": "แพลตฟอร์มโอเพ่นซอร์สและ OpenTelemetry สำหรับการสังเกตการณ์ การประเมิน วิศวกรรมพรอมต์ และการทดลองสำหรับเวิร์กโฟลว์และตัวแทน LLM ของคุณ" + }, + "langsmith": { + "title": "Langsmith", + "description": "แพลตฟอร์มนักพัฒนาแบบครบวงจรสําหรับทุกขั้นตอนของ การพัฒนาโปรเจกต์ที่ขับเคลื่อนด้วย LLM" + }, + "langfuse": { + "title": "Langfuse", + "description": "การติดตาม การประเมินการจัดการพร้อมท์ และเมตริกเพื่อแก้ไขข้อบกพร่องและปรับปรุงโปรเจกต์ LLM ของคุณ" + }, + "inUse": "ใช้งาน", + "configProvider": { + "title": "กําหนดค่า", + "placeholder": "ป้อน {{key}} ของคุณ", + "project": "โครงการ", + "publicKey": "กุญแจสาธารณะ", + "secretKey": "กุญแจลับ", + "viewDocsLink": "ดูเอกสาร {{key}}", + "removeConfirmTitle": "ลบการกําหนดค่า {{key}} หรือไม่?", + "removeConfirmContent": "การกําหนดค่าปัจจุบันกําลังใช้งาน การลบออกจะเป็นการปิดคุณสมบัติการติดตาม", + "clientId": "รหัสลูกค้า OAuth", + "trackingUri": "ติดตาม URI", + "databricksHost": "URL ของ Workspace ใน Databricks", + "username": "ชื่อผู้ใช้", + "clientSecret": "รหัสลับของลูกค้า OAuth", + "experimentId": "รหัสการทดลอง", + "password": "รหัสผ่าน", + "personalAccessToken": "โทเค็นการเข้าถึงส่วนตัว (รุ่นเก่า)" + }, + "opik": { + "title": "โอปิก", + "description": "Opik เป็นแพลตฟอร์มโอเพ่นซอร์สสําหรับการประเมิน ทดสอบ และตรวจสอบแอปพลิเคชัน LLM" + }, + "weave": { + "title": "ทอ", + "description": "Weave เป็นแพลตฟอร์มโอเพนซอร์สสำหรับการประเมินผล ทดสอบ และตรวจสอบแอปพลิเคชัน LLM" + }, + "aliyun": { + "title": "การตรวจสอบคลาวด์", + "description": "แพลตฟอร์มการสังเกตการณ์ที่จัดการโดย Alibaba Cloud ซึ่งไม่ต้องดูแลและบำรุงรักษา ช่วยให้สามารถติดตาม ตรวจสอบ และประเมินแอปพลิเคชัน Dify ได้ทันที" + }, + "mlflow": { + "title": "MLflow", + "description": "แพลตฟอร์ม LLMOps โอเพนซอร์สสำหรับการติดตามการทดลอง การสังเกตการณ์ และการประเมินผล เพื่อสร้างแอป AI/LLM ด้วยความมั่นใจ" + }, + "databricks": { + "title": "Databricks", + "description": "Databricks ให้บริการ MLflow ที่จัดการแบบเต็มรูปแบบพร้อมการกำกับดูแลและความปลอดภัยที่แข็งแกร่งสำหรับการจัดเก็บข้อมูลการติดตาม" + }, + "tencent": { + "title": "Tencent APM", + "description": "การติดตามประสิทธิภาพแอปพลิเคชันของ Tencent มอบการตรวจสอบแบบครบวงจรและการวิเคราะห์หลายมิติสำหรับแอป LLM" + } + }, + "mermaid": { + "handDrawn": "วาดด้วยมือ", + "classic": "คลาสสิก" + }, + "openInExplore": "เปิดใน Explore", + "newAppFromTemplate": { + "sidebar": { + "Assistant": "ผู้ช่วย", + "Writing": "การเขียน", + "Recommended": "แนะ นำ", + "Workflow": "เวิร์กโฟลว์", + "Programming": "โปรแกรม", + "HR": "ชั่วโมง", + "Agent": "ตัวแทน" + }, + "searchAllTemplate": "ค้นหาเทมเพลตทั้งหมด...", + "byCategories": "ตามหมวดหมู่" + }, + "showMyCreatedAppsOnly": "แสดงเฉพาะแอปที่ฉันสร้าง", + "appSelector": { + "placeholder": "เลือกแอป...", + "params": "พารามิเตอร์แอพ", + "noParams": "ไม่จําเป็นต้องใช้พารามิเตอร์", + "label": "แอพ" + }, + "structOutput": { + "notConfiguredTip": "ยังไม่ได้กำหนดผลลัพธ์ที่มีโครงสร้าง", + "moreFillTip": "แสดงระดับการซ้อนสูงสุด 10 ระดับ", + "structuredTip": "Structured Outputs เป็นฟีเจอร์ที่ทำให้มั่นใจว่าโมเดลจะสร้างคำตอบที่สอดคล้องกับ JSON Schema ที่คุณกำหนดไว้เสมอ", + "configure": "กำหนดค่า", + "required": "ที่จำเป็น", + "LLMResponse": "LLM ตอบสนอง", + "structured": "มีระเบียบ", + "modelNotSupported": "โมเดลไม่ได้รับการสนับสนุน", + "modelNotSupportedTip": "โมเดลปัจจุบันไม่รองรับฟีเจอร์นี้และจะถูกลดระดับเป็นการฉีดคำสั่งโดยอัตโนมัติ." + }, + "accessItemsDescription": { + "anyone": "ใครก็สามารถเข้าถึงเว็บแอปได้", + "specific": "สมาชิกหรือกลุ่มเฉพาะเท่านั้นที่สามารถเข้าถึงแอปเว็บได้", + "organization": "ใครก็ได้ในองค์กรสามารถเข้าถึงแอปเว็บได้", + "external": "ผู้ใช้งานภายนอกที่ได้รับการยืนยันตัวตนเท่านั้นที่สามารถเข้าถึงแอปพลิเคชันเว็บได้" + }, + "accessControlDialog": { + "accessItems": { + "specific": "กลุ่มหรือสมาชิกเฉพาะ", + "organization": "เฉพาะสมาชิกภายในองค์กร", + "anyone": "ใครก็ตามที่มีลิงก์", + "external": "ผู้ใช้ภายนอกที่ได้รับการตรวจสอบแล้ว" + }, + "operateGroupAndMember": { + "searchPlaceholder": "ค้นหากลุ่มและสมาชิก", + "allMembers": "สมาชิกทั้งหมด", + "noResult": "ไม่มีผลลัพธ์", + "expand": "ขยาย" + }, + "title": "การควบคุมการเข้าถึงเว็บแอปพลิเคชัน", + "description": "ตั้งค่าสิทธิ์การเข้าถึงเว็บแอป", + "accessLabel": "ใครมีสิทธิ์เข้าถึง", + "groups_one": "{{count}} กลุ่ม", + "groups_other": "{{count}} กลุ่ม", + "members_one": "{{count}} สมาชิก", + "noGroupsOrMembers": "ไม่มีกลุ่มหรือสมาชิกที่เลือก", + "webAppSSONotEnabledTip": "กรุณาติดต่อผู้ดูแลระบบองค์กรเพื่อกำหนดวิธีการตรวจสอบสิทธิ์แอปเว็บ.", + "updateSuccess": "อัปเดตสำเร็จแล้ว", + "members_other": "{{count}} สมาชิก" + }, + "publishApp": { + "title": "ใครสามารถเข้าถึงแอปเว็บได้", + "notSet": "ยังไม่ได้ตั้งค่า", + "notSetDesc": "ขณะนี้ไม่มีใครสามารถเข้าถึงแอปเว็บได้ กรุณาเพิ่มสิทธิ์การเข้าถึง." + }, + "accessControl": "การควบคุมการเข้าถึงเว็บแอปพลิเคชัน", + "noAccessPermission": "ไม่มีสิทธิ์เข้าถึงเว็บแอป", + "maxActiveRequestsPlaceholder": "ใส่ 0 สำหรับไม่จำกัด", + "maxActiveRequests": "จำนวนคำขอพร้อมกันสูงสุด", + "maxActiveRequestsTip": "จำนวนการร้องขอที่ใช้งานพร้อมกันสูงสุดต่อแอป (0 หมายถึงไม่จำกัด)", + "gotoAnything": { + "actions": { + "searchKnowledgeBases": "ค้นหาฐานความรู้", + "searchPlugins": "ค้นหาปลั๊กอิน", + "searchWorkflowNodes": "ค้นหาโหนดเวิร์กโฟลว์", + "searchApplications": "ค้นหาแอปพลิเคชัน", + "searchKnowledgeBasesDesc": "ค้นหาและนําทางไปยังฐานความรู้ของคุณ", + "searchPluginsDesc": "ค้นหาและนําทางไปยังปลั๊กอินของคุณ", + "searchApplicationsDesc": "ค้นหาและนําทางไปยังแอปพลิเคชันของคุณ", + "searchWorkflowNodesHelp": "คุณลักษณะนี้ใช้ได้เฉพาะเมื่อดูเวิร์กโฟลว์เท่านั้น นําทางไปยังเวิร์กโฟลว์ก่อน", + "searchWorkflowNodesDesc": "ค้นหาและข้ามไปยังโหนดในเวิร์กโฟลว์ปัจจุบันตามชื่อหรือประเภท", + "themeCategoryTitle": "ธีม", + "languageCategoryTitle": "ภาษา", + "runTitle": "คำสั่ง", + "themeDark": "ธีมมืด", + "languageChangeDesc": "เปลี่ยนภาษา UI", + "themeSystem": "ธีมระบบ", + "themeLight": "ธีมสว่าง", + "runDesc": "เรียกใช้คำสั่งอย่างรวดเร็ว (ธีม, ภาษา, ... )", + "themeDarkDesc": "ใช้รูปลักษณ์เข้ม", + "themeCategoryDesc": "เปลี่ยนธีมแอปพลิเคชัน", + "languageCategoryDesc": "เปลี่ยนภาษาของอินเทอร์เฟซ", + "themeLightDesc": "ใช้รูปลักษณ์ที่มีความสว่าง", + "themeSystemDesc": "ติดตามรูปลักษณ์ของระบบปฏิบัติการของคุณ", + "slashDesc": "ใช้คำสั่งเช่น /theme, /lang", + "feedbackDesc": "การอภิปรายข้อเสนอแนะแบบเปิดในชุมชน", + "accountDesc": "ไปที่หน้าบัญชี", + "docDesc": "เปิดเอกสารช่วยเหลือ", + "communityDesc": "เปิดชุมชน Discord", + "zenTitle": "Zen Mode", + "zenDesc": "Toggle canvas focus mode" + }, + "emptyState": { + "noPluginsFound": "ไม่พบปลั๊กอิน", + "noAppsFound": "ไม่พบแอป", + "noWorkflowNodesFound": "ไม่พบโหนดเวิร์กโฟลว์", + "noKnowledgeBasesFound": "ไม่พบฐานความรู้", + "tryDifferentTerm": "ลองใช้คำค้นหาที่แตกต่างออกไปหรือลบตัวกรอง {{mode}}", + "trySpecificSearch": "ลองใช้ {{shortcuts}} สำหรับการค้นหาเฉพาะ" + }, + "groups": { + "apps": "แอปพลิเคชัน", + "knowledgeBases": "ฐานความรู้", + "plugins": "ปลั๊กอิน", + "workflowNodes": "โหนดเวิร์กโฟลว์", + "commands": "คำสั่ง" + }, + "searchTitle": "ค้นหาอะไรก็ได้", + "searchFailed": "การค้นหาล้มเหลว", + "useAtForSpecific": "ใช้ @ สําหรับบางประเภท", + "noResults": "ไม่พบผลลัพธ์", + "searchTemporarilyUnavailable": "การค้นหาไม่พร้อมใช้งานชั่วคราว", + "someServicesUnavailable": "บริการค้นหาบางบริการไม่พร้อมใช้งาน", + "clearToSearchAll": "ล้าง @ เพื่อค้นหาทั้งหมด", + "searchPlaceholder": "ค้นหาหรือพิมพ์ @ สำหรับคำสั่ง...", + "servicesUnavailableMessage": "บริการค้นหาบางบริการอาจประสบปัญหา ลองอีกครั้งในอีกสักครู่", + "searching": "กำลังค้นหา...", + "searchHint": "เริ่มพิมพ์เพื่อค้นหาทุกอย่างได้ทันที", + "selectSearchType": "เลือกสิ่งที่จะค้นหา", + "commandHint": "พิมพ์ @ เพื่อเรียกดูตามหมวดหมู่", + "resultCount": "{{count}} ผลลัพธ์", + "resultCount_other": "{{count}} ผลลัพธ์", + "inScope": "ใน {{scope}}s", + "noMatchingCommands": "ไม่พบคำสั่งที่ตรงกัน", + "tryDifferentSearch": "ลองใช้ข้อความค้นหาอื่น", + "slashHint": "พิมพ์ / เพื่อดูคำสั่งที่มีให้ทั้งหมด", + "pressEscToClose": "กด ESC เพื่อปิด", + "selectToNavigate": "เลือกเพื่อนำทาง", + "startTyping": "เริ่มพิมพ์เพื่อค้นหา", + "tips": "กด ↑↓ เพื่อเลื่อนดู" + }, + "noUserInputNode": "ไม่มีโหนดป้อนข้อมูลผู้ใช้", + "notPublishedYet": "แอปยังไม่ได้เผยแพร่" +} diff --git a/web/i18n/th-TH/app.ts b/web/i18n/th-TH/app.ts deleted file mode 100644 index 7412497692..0000000000 --- a/web/i18n/th-TH/app.ts +++ /dev/null @@ -1,347 +0,0 @@ -const translation = { - createApp: 'สร้างโปรเจกต์ใหม่', - types: { - all: 'ทั้งหมด', - chatbot: 'แชทบอท', - agent: 'ตัวแทน', - workflow: 'กระบวนการทำงาน', - completion: 'เสร็จสมบูรณ์', - basic: 'พื้นฐาน', - advanced: 'แชทโฟลว์', - }, - duplicate: 'สำเนา', - duplicateTitle: 'ชื่อซ้ำ', - export: 'ส่งออก DSL', - exportFailed: 'ส่งออก DSL ล้มเหลว', - importDSL: 'นําเข้าไฟล์ DSL', - createFromConfigFile: 'สร้างจากไฟล์ DSL', - importFromDSL: 'นําเข้าจาก DSL', - importFromDSLFile: 'จากไฟล์ DSL', - importFromDSLUrl: 'จาก URL', - importFromDSLUrlPlaceholder: 'วางลิงค์ DSL ที่นี่', - dslUploader: { - button: 'ลากและวางไฟล์ หรือ', - browse: 'เรียกดู', - }, - deleteAppConfirmTitle: 'ลบโปรเจกต์นี้?', - deleteAppConfirmContent: 'การลบโปรเจกนั้นไม่สามารถย้อนกลับได้ ผู้ใช้จะไม่สามารถเข้าถึงโปรเจกต์ของคุณอีกต่อไป และการกําหนดค่าต่างๆและบันทึกทั้งหมดจะถูกลบอย่างถาวร', - appDeleted: 'โปรเจกต์ถูกลบ', - appDeleteFailed: 'ลบโปรเจกต์ไม่สําเร็จ', - join: 'เข้าร่วมชุมชนนักพัฒนา', - communityIntro: 'พูดคุยกับสมาชิกในทีม ผู้ร่วมให้ข้อมูล และนักพัฒนาในช่องทางต่างๆ', - roadmap: 'ดูแผนงานของเรา', - newApp: { - startFromBlank: 'สร้างโปรเจกต์ปล่าว', - startFromTemplate: 'สร้างจากเทมเพลต', - workflowWarning: 'ขณะนี้อยู่ในช่วงเบต้า', - captionName: 'ไอคอนและชื่อโปรเจกต์', - appNamePlaceholder: 'ตั้งชื่อโปรเจกต์ของคุณ', - captionDescription: 'คำอธิบาย', - appDescriptionPlaceholder: 'ป้อนคำอธิบายของโปรเจกต์', - useTemplate: 'ใช้เทมเพลตนี้', - previewDemo: 'ตัวอย่างการใช้งาน', - chatApp: 'ผู้ช่วย', - chatAppIntro: 'ฉันต้องการสร้างโปรเจกต์ ที่เป็นแอปพลิเคชันที่ใช้การแชท โปรเจกต์นี้ใช้รูปแบบคำถามและคำตอบ ทําให้สามารถสนทนาต่อเนื่องได้หลายรอบ(Multi-turn)', - agentAssistant: 'ผู้ช่วยใหม่', - completeApp: 'เครื่องมือสร้างข้อความ', - completeAppIntro: 'ฉันต้องการสร้างโปรเจกต์ที่ ที่สามารถสร้างข้อความคุณภาพสูงตามข้อความแจ้ง เช่น การสร้างบทความ สรุป การแปล และอื่นๆ', - showTemplates: 'ฉันต้องการเลือกจากเทมเพลต', - hideTemplates: 'กลับไปที่การเลือกโหมด', - Create: 'สร้าง', - Cancel: 'ยกเลิก', - Confirm: 'ยืนยัน', - nameNotEmpty: 'ชื่อต้องไม่ว่างเปล่า', - appTemplateNotSelected: 'โปรดเลือกเทมเพลต', - appTypeRequired: 'โปรดเลือกประเภทโปรเจกต์', - appCreated: 'สร้างโปรเจกต์', - caution: 'ข้อควรระวัง', - appCreateDSLWarning: 'ข้อควรระวัง: ความแตกต่างของเวอร์ชัน DSL อาจส่งผลต่อคุณสมบัติบางอย่าง', - appCreateDSLErrorTitle: 'ความเข้ากันไม่ได้ของ DSL เวอร์ชัน', - appCreateDSLErrorPart1: 'ตรวจพบความแตกต่างอย่างมีนัยสําคัญในเวอร์ชัน DSL การบังคับนําเข้าอาจทําให้โปรเจกต์ทํางานผิดปกติ', - appCreateDSLErrorPart2: 'คุณต้องการดําเนินการต่อหรือไม่?', - appCreateDSLErrorPart3: 'เวอร์ชัน DSL ของโปรเจกต์ปัจจุบัน:', - appCreateDSLErrorPart4: 'เวอร์ชัน DSL ที่ระบบรองรับ:', - appCreateFailed: 'สร้างโปรเจกต์ไม่สําเร็จ', - learnMore: 'ศึกษาเพิ่มเติม', - foundResults: '{{count}} ผลลัพธ์', - noTemplateFoundTip: 'ลองค้นหาโดยใช้คีย์เวิร์ดอื่น', - chatbotShortDescription: 'แชทบอทที่ใช้ LLM พร้อมการตั้งค่าที่ง่ายดาย', - optional: 'เสริม', - workflowUserDescription: 'สร้างโฟลว์ AI อัตโนมัติด้วยระบบลากและวางอย่างง่าย', - agentShortDescription: 'ตัวแทนอัจฉริยะพร้อมการใช้เหตุผลและเครื่องมืออัตโนมัติ', - forBeginners: 'ประเภทแอปพื้นฐาน', - completionShortDescription: 'ผู้ช่วย AI สําหรับงานสร้างข้อความ', - agentUserDescription: 'ตัวแทนอัจฉริยะที่สามารถให้เหตุผลซ้ําๆ และใช้เครื่องมืออัตโนมัติเพื่อให้บรรลุเป้าหมายของงาน', - noIdeaTip: 'ไม่มีความคิด? ดูเทมเพลตของเรา', - foundResult: '{{count}} ผล', - noAppsFound: 'ไม่พบแอป', - workflowShortDescription: 'โฟลว์อัตโนมัติสำหรับระบบอัจฉริยะ', - forAdvanced: 'สําหรับผู้ใช้ขั้นสูง', - chatbotUserDescription: 'สร้างแชทบอทที่ใช้ LLM ได้อย่างรวดเร็วด้วยการกําหนดค่าที่ง่าย คุณสามารถเปลี่ยนไปใช้ Chatflow ได้ในภายหลัง', - noTemplateFound: 'ไม่พบเทมเพลต', - completionUserDescription: 'สร้างผู้ช่วย AI สําหรับงานสร้างข้อความอย่างรวดเร็วด้วยการกําหนดค่าที่ง่าย', - advancedUserDescription: 'โฟลว์พร้อมคุณสมบัติหน่วยความจำเพิ่มเติมและอินเตอร์เฟซแชทบอท', - chooseAppType: 'เลือกประเภทแอป', - advancedShortDescription: 'โฟลว์ที่เสริมประสิทธิภาพสำหรับการสนทนาหลายรอบ', - dropDSLToCreateApp: 'ลากไฟล์ DSL มาที่นี่เพื่สร้างแอป', - import: 'นําเข้า', - }, - editApp: 'แก้ไขข้อมูล', - editAppTitle: 'แก้ไขข้อมูลโปรเจกต์', - editDone: 'อัปเดตข้อมูลโปรเจกต์', - editFailed: 'อัปเดตข้อมูลโปรเจกต์ไม่สําเร็จ', - iconPicker: { - ok: 'ตกลง, ได้', - cancel: 'ยกเลิก', - emoji: 'อิโมจิ', - image: 'ภาพ', - }, - answerIcon: { - title: 'ใช้ไอคอน web app เพื่อแทนที่ 🤖', - description: 'จะใช้ไอคอน web app เพื่อแทนที่🤖ในโปรเจกต์ที่ใช้ร่วมกันหรือไม่', - descriptionInExplore: 'จะใช้ไอคอน web app เพื่อแทนที่🤖ใน Explore หรือไม่', - }, - switch: 'เปลี่ยนไปใช้ Workflow Orchestrate', - switchTipStart: 'สําเนาโปรเจกต์ใหม่จะถูกสร้างขึ้นสําหรับคุณ และสําเนาใหม่จะเปลี่ยนเป็น Workflow Orchestration', - switchTip: 'ไม่อนุญาต', - switchTipEnd: 'เปลี่ยนกลับเป็น Basic Orchestrate', - switchLabel: 'สําเนาโปรเจกต์ที่จะสร้าง', - removeOriginal: 'ลบโปรเจกต์เดิม', - switchStart: 'สวิตช์สตาร์ท', - typeSelector: { - all: 'ทุกประเภท', - chatbot: 'แชทบอท', - agent: 'ตัวแทน', - workflow: 'เวิร์กโฟลว์', - completion: 'เสร็จ', - advanced: 'แชทโฟลว์', - }, - tracing: { - title: 'การติดตามประสิทธิภาพของโปรเจกต์', - description: 'การกําหนดค่าผู้ให้บริการ LLMOps บุคคลที่สามและประสิทธิภาพของโปรเจกต์ที่นำไปใช้', - config: 'กําหนดค่า', - view: 'มุมมอง', - collapse: 'ยุบ', - expand: 'ขยาย', - tracing: 'ติดตาม', - disabled: 'ปิดการใช้งาน', - disabledTip: 'โปรดกําหนดค่าผู้ให้บริการก่อน', - enabled: 'ให้บริการ', - tracingDescription: 'บันทึกบริบททั้งหมดของการดําเนินการของโปรเจกต์ รวมถึงการเรียก LLM, Prompt คําขอ HTTP และอื่นๆไปยังแพลตฟอร์มของของบุคคลที่สาม', - configProviderTitle: { - configured: 'กําหนดค่าแล้ว', - notConfigured: 'ผู้ให้บริการกําหนดค่าเพื่อเปิดใช้งานการติดตาม', - moreProvider: 'ผู้ให้บริการเพิ่มเติม', - }, - arize: { - title: 'Arize', - description: 'การสังเกตการณ์ LLM ระดับองค์กร การประเมินออนไลน์และออฟไลน์ การตรวจสอบ และการทดลอง—ขับเคลื่อนโดย OpenTelemetry ออกแบบมาโดยเฉพาะสำหรับแอปพลิเคชันที่ขับเคลื่อนด้วย LLM และตัวแทน', - }, - phoenix: { - title: 'Phoenix', - description: 'แพลตฟอร์มโอเพ่นซอร์สและ OpenTelemetry สำหรับการสังเกตการณ์ การประเมิน วิศวกรรมพรอมต์ และการทดลองสำหรับเวิร์กโฟลว์และตัวแทน LLM ของคุณ', - }, - langsmith: { - title: 'Langsmith', - description: 'แพลตฟอร์มนักพัฒนาแบบครบวงจรสําหรับทุกขั้นตอนของ การพัฒนาโปรเจกต์ที่ขับเคลื่อนด้วย LLM', - }, - langfuse: { - title: 'Langfuse', - description: 'การติดตาม การประเมินการจัดการพร้อมท์ และเมตริกเพื่อแก้ไขข้อบกพร่องและปรับปรุงโปรเจกต์ LLM ของคุณ', - }, - inUse: 'ใช้งาน', - configProvider: { - title: 'กําหนดค่า', - placeholder: 'ป้อน {{key}} ของคุณ', - project: 'โครงการ', - publicKey: 'กุญแจสาธารณะ', - secretKey: 'กุญแจลับ', - viewDocsLink: 'ดูเอกสาร {{key}}', - removeConfirmTitle: 'ลบการกําหนดค่า {{key}} หรือไม่?', - removeConfirmContent: 'การกําหนดค่าปัจจุบันกําลังใช้งาน การลบออกจะเป็นการปิดคุณสมบัติการติดตาม', - clientId: 'รหัสลูกค้า OAuth', - trackingUri: 'ติดตาม URI', - databricksHost: 'URL ของ Workspace ใน Databricks', - username: 'ชื่อผู้ใช้', - clientSecret: 'รหัสลับของลูกค้า OAuth', - experimentId: 'รหัสการทดลอง', - password: 'รหัสผ่าน', - personalAccessToken: 'โทเค็นการเข้าถึงส่วนตัว (รุ่นเก่า)', - }, - opik: { - title: 'โอปิก', - description: 'Opik เป็นแพลตฟอร์มโอเพ่นซอร์สสําหรับการประเมิน ทดสอบ และตรวจสอบแอปพลิเคชัน LLM', - }, - weave: { - title: 'ทอ', - description: 'Weave เป็นแพลตฟอร์มโอเพนซอร์สสำหรับการประเมินผล ทดสอบ และตรวจสอบแอปพลิเคชัน LLM', - }, - aliyun: { - title: 'การตรวจสอบคลาวด์', - description: 'แพลตฟอร์มการสังเกตการณ์ที่จัดการโดย Alibaba Cloud ซึ่งไม่ต้องดูแลและบำรุงรักษา ช่วยให้สามารถติดตาม ตรวจสอบ และประเมินแอปพลิเคชัน Dify ได้ทันที', - }, - mlflow: { - title: 'MLflow', - description: 'แพลตฟอร์ม LLMOps โอเพนซอร์สสำหรับการติดตามการทดลอง การสังเกตการณ์ และการประเมินผล เพื่อสร้างแอป AI/LLM ด้วยความมั่นใจ', - }, - databricks: { - title: 'Databricks', - description: 'Databricks ให้บริการ MLflow ที่จัดการแบบเต็มรูปแบบพร้อมการกำกับดูแลและความปลอดภัยที่แข็งแกร่งสำหรับการจัดเก็บข้อมูลการติดตาม', - }, - tencent: { - title: 'Tencent APM', - description: 'การติดตามประสิทธิภาพแอปพลิเคชันของ Tencent มอบการตรวจสอบแบบครบวงจรและการวิเคราะห์หลายมิติสำหรับแอป LLM', - }, - }, - mermaid: { - handDrawn: 'วาดด้วยมือ', - classic: 'คลาสสิก', - }, - openInExplore: 'เปิดใน Explore', - newAppFromTemplate: { - sidebar: { - Assistant: 'ผู้ช่วย', - Writing: 'การเขียน', - Recommended: 'แนะ นำ', - Workflow: 'เวิร์กโฟลว์', - Programming: 'โปรแกรม', - HR: 'ชั่วโมง', - Agent: 'ตัวแทน', - }, - searchAllTemplate: 'ค้นหาเทมเพลตทั้งหมด...', - byCategories: 'ตามหมวดหมู่', - }, - showMyCreatedAppsOnly: 'แสดงเฉพาะแอปที่ฉันสร้าง', - appSelector: { - placeholder: 'เลือกแอป...', - params: 'พารามิเตอร์แอพ', - noParams: 'ไม่จําเป็นต้องใช้พารามิเตอร์', - label: 'แอพ', - }, - structOutput: { - notConfiguredTip: 'ยังไม่ได้กำหนดผลลัพธ์ที่มีโครงสร้าง', - moreFillTip: 'แสดงระดับการซ้อนสูงสุด 10 ระดับ', - structuredTip: 'Structured Outputs เป็นฟีเจอร์ที่ทำให้มั่นใจว่าโมเดลจะสร้างคำตอบที่สอดคล้องกับ JSON Schema ที่คุณกำหนดไว้เสมอ', - configure: 'กำหนดค่า', - required: 'ที่จำเป็น', - LLMResponse: 'LLM ตอบสนอง', - structured: 'มีระเบียบ', - modelNotSupported: 'โมเดลไม่ได้รับการสนับสนุน', - modelNotSupportedTip: 'โมเดลปัจจุบันไม่รองรับฟีเจอร์นี้และจะถูกลดระดับเป็นการฉีดคำสั่งโดยอัตโนมัติ.', - }, - accessItemsDescription: { - anyone: 'ใครก็สามารถเข้าถึงเว็บแอปได้', - specific: 'สมาชิกหรือกลุ่มเฉพาะเท่านั้นที่สามารถเข้าถึงแอปเว็บได้', - organization: 'ใครก็ได้ในองค์กรสามารถเข้าถึงแอปเว็บได้', - external: 'ผู้ใช้งานภายนอกที่ได้รับการยืนยันตัวตนเท่านั้นที่สามารถเข้าถึงแอปพลิเคชันเว็บได้', - }, - accessControlDialog: { - accessItems: { - specific: 'กลุ่มหรือสมาชิกเฉพาะ', - organization: 'เฉพาะสมาชิกภายในองค์กร', - anyone: 'ใครก็ตามที่มีลิงก์', - external: 'ผู้ใช้ภายนอกที่ได้รับการตรวจสอบแล้ว', - }, - operateGroupAndMember: { - searchPlaceholder: 'ค้นหากลุ่มและสมาชิก', - allMembers: 'สมาชิกทั้งหมด', - noResult: 'ไม่มีผลลัพธ์', - expand: 'ขยาย', - }, - title: 'การควบคุมการเข้าถึงเว็บแอปพลิเคชัน', - description: 'ตั้งค่าสิทธิ์การเข้าถึงเว็บแอป', - accessLabel: 'ใครมีสิทธิ์เข้าถึง', - groups_one: '{{count}} กลุ่ม', - groups_other: '{{count}} กลุ่ม', - members_one: '{{count}} สมาชิก', - noGroupsOrMembers: 'ไม่มีกลุ่มหรือสมาชิกที่เลือก', - webAppSSONotEnabledTip: 'กรุณาติดต่อผู้ดูแลระบบองค์กรเพื่อกำหนดวิธีการตรวจสอบสิทธิ์แอปเว็บ.', - updateSuccess: 'อัปเดตสำเร็จแล้ว', - members_other: '{{count}} สมาชิก', - }, - publishApp: { - title: 'ใครสามารถเข้าถึงแอปเว็บได้', - notSet: 'ยังไม่ได้ตั้งค่า', - notSetDesc: 'ขณะนี้ไม่มีใครสามารถเข้าถึงแอปเว็บได้ กรุณาเพิ่มสิทธิ์การเข้าถึง.', - }, - accessControl: 'การควบคุมการเข้าถึงเว็บแอปพลิเคชัน', - noAccessPermission: 'ไม่มีสิทธิ์เข้าถึงเว็บแอป', - maxActiveRequestsPlaceholder: 'ใส่ 0 สำหรับไม่จำกัด', - maxActiveRequests: 'จำนวนคำขอพร้อมกันสูงสุด', - maxActiveRequestsTip: 'จำนวนการร้องขอที่ใช้งานพร้อมกันสูงสุดต่อแอป (0 หมายถึงไม่จำกัด)', - gotoAnything: { - actions: { - searchKnowledgeBases: 'ค้นหาฐานความรู้', - searchPlugins: 'ค้นหาปลั๊กอิน', - searchWorkflowNodes: 'ค้นหาโหนดเวิร์กโฟลว์', - searchApplications: 'ค้นหาแอปพลิเคชัน', - searchKnowledgeBasesDesc: 'ค้นหาและนําทางไปยังฐานความรู้ของคุณ', - searchPluginsDesc: 'ค้นหาและนําทางไปยังปลั๊กอินของคุณ', - searchApplicationsDesc: 'ค้นหาและนําทางไปยังแอปพลิเคชันของคุณ', - searchWorkflowNodesHelp: 'คุณลักษณะนี้ใช้ได้เฉพาะเมื่อดูเวิร์กโฟลว์เท่านั้น นําทางไปยังเวิร์กโฟลว์ก่อน', - searchWorkflowNodesDesc: 'ค้นหาและข้ามไปยังโหนดในเวิร์กโฟลว์ปัจจุบันตามชื่อหรือประเภท', - themeCategoryTitle: 'ธีม', - languageCategoryTitle: 'ภาษา', - runTitle: 'คำสั่ง', - themeDark: 'ธีมมืด', - languageChangeDesc: 'เปลี่ยนภาษา UI', - themeSystem: 'ธีมระบบ', - themeLight: 'ธีมสว่าง', - runDesc: 'เรียกใช้คำสั่งอย่างรวดเร็ว (ธีม, ภาษา, ... )', - themeDarkDesc: 'ใช้รูปลักษณ์เข้ม', - themeCategoryDesc: 'เปลี่ยนธีมแอปพลิเคชัน', - languageCategoryDesc: 'เปลี่ยนภาษาของอินเทอร์เฟซ', - themeLightDesc: 'ใช้รูปลักษณ์ที่มีความสว่าง', - themeSystemDesc: 'ติดตามรูปลักษณ์ของระบบปฏิบัติการของคุณ', - slashDesc: 'ใช้คำสั่งเช่น /theme, /lang', - feedbackDesc: 'การอภิปรายข้อเสนอแนะแบบเปิดในชุมชน', - accountDesc: 'ไปที่หน้าบัญชี', - docDesc: 'เปิดเอกสารช่วยเหลือ', - communityDesc: 'เปิดชุมชน Discord', - zenTitle: 'Zen Mode', - zenDesc: 'Toggle canvas focus mode', - }, - emptyState: { - noPluginsFound: 'ไม่พบปลั๊กอิน', - noAppsFound: 'ไม่พบแอป', - noWorkflowNodesFound: 'ไม่พบโหนดเวิร์กโฟลว์', - noKnowledgeBasesFound: 'ไม่พบฐานความรู้', - tryDifferentTerm: 'ลองใช้คำค้นหาที่แตกต่างออกไปหรือลบตัวกรอง {{mode}}', - trySpecificSearch: 'ลองใช้ {{shortcuts}} สำหรับการค้นหาเฉพาะ', - }, - groups: { - apps: 'แอปพลิเคชัน', - knowledgeBases: 'ฐานความรู้', - plugins: 'ปลั๊กอิน', - workflowNodes: 'โหนดเวิร์กโฟลว์', - commands: 'คำสั่ง', - }, - searchTitle: 'ค้นหาอะไรก็ได้', - searchFailed: 'การค้นหาล้มเหลว', - useAtForSpecific: 'ใช้ @ สําหรับบางประเภท', - noResults: 'ไม่พบผลลัพธ์', - searchTemporarilyUnavailable: 'การค้นหาไม่พร้อมใช้งานชั่วคราว', - someServicesUnavailable: 'บริการค้นหาบางบริการไม่พร้อมใช้งาน', - clearToSearchAll: 'ล้าง @ เพื่อค้นหาทั้งหมด', - searchPlaceholder: 'ค้นหาหรือพิมพ์ @ สำหรับคำสั่ง...', - servicesUnavailableMessage: 'บริการค้นหาบางบริการอาจประสบปัญหา ลองอีกครั้งในอีกสักครู่', - searching: 'กำลังค้นหา...', - searchHint: 'เริ่มพิมพ์เพื่อค้นหาทุกอย่างได้ทันที', - selectSearchType: 'เลือกสิ่งที่จะค้นหา', - commandHint: 'พิมพ์ @ เพื่อเรียกดูตามหมวดหมู่', - resultCount: '{{count}} ผลลัพธ์', - resultCount_other: '{{count}} ผลลัพธ์', - inScope: 'ใน {{scope}}s', - noMatchingCommands: 'ไม่พบคำสั่งที่ตรงกัน', - tryDifferentSearch: 'ลองใช้ข้อความค้นหาอื่น', - slashHint: 'พิมพ์ / เพื่อดูคำสั่งที่มีให้ทั้งหมด', - pressEscToClose: 'กด ESC เพื่อปิด', - selectToNavigate: 'เลือกเพื่อนำทาง', - startTyping: 'เริ่มพิมพ์เพื่อค้นหา', - tips: 'กด ↑↓ เพื่อเลื่อนดู', - }, - noUserInputNode: 'ไม่มีโหนดป้อนข้อมูลผู้ใช้', - notPublishedYet: 'แอปยังไม่ได้เผยแพร่', -} - -export default translation diff --git a/web/i18n/th-TH/billing.json b/web/i18n/th-TH/billing.json new file mode 100644 index 0000000000..5f70c5d561 --- /dev/null +++ b/web/i18n/th-TH/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "แผนปัจจุบัน", + "upgradeBtn": { + "plain": "แผนการอัปเกรด", + "encourage": "อัปเกรดเดี๋ยวนี้", + "encourageShort": "อัพ เกรด" + }, + "viewBilling": "จัดการการเรียกเก็บเงินและการสมัครใช้งาน", + "buyPermissionDeniedTip": "โปรดติดต่อผู้ดูแลระบบองค์กรของคุณเพื่อสมัครสมาชิก", + "plansCommon": { + "yearlyTip": "รับฟรี 2 เดือนโดยสมัครสมาชิกรายปี!", + "mostPopular": "แห่ง", + "planRange": { + "monthly": "รายเดือน", + "yearly": "รายปี" + }, + "month": "เดือน", + "year": "ปี", + "save": "ประหยัด", + "free": "ฟรี", + "currentPlan": "แผนปัจจุบัน", + "contractSales": "ติดต่อฝ่ายขาย", + "contractOwner": "ติดต่อผู้จัดการทีม", + "startForFree": "เริ่มฟรี", + "contactSales": "ติดต่อฝ่ายขาย", + "talkToSales": "พูดคุยกับฝ่ายขาย", + "modelProviders": "ผู้ให้บริการโมเดล", + "annotationQuota": "โควต้าคําอธิบายประกอบ", + "buildApps": "สร้างแอพ", + "vectorSpace": "พื้นที่เวกเตอร์", + "vectorSpaceTooltip": "Vector Space เป็นระบบหน่วยความจําระยะยาวที่จําเป็นสําหรับ LLM ในการทําความเข้าใจข้อมูลของคุณ", + "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 ของคุณ", + "titlePerMonth": "{{count,number}} ข้อความ/เดือน" + }, + "annotatedResponse": { + "title": "ขีดจํากัดโควต้าคําอธิบายประกอบ", + "tooltip": "การแก้ไขและคําอธิบายประกอบการตอบกลับด้วยตนเองให้ความสามารถในการตอบคําถามคุณภาพสูงที่ปรับแต่งได้สําหรับแอป (ใช้ได้เฉพาะในแอปแชท)" + }, + "ragAPIRequestTooltip": "หมายถึงจํานวนการเรียก API ที่เรียกใช้เฉพาะความสามารถในการประมวลผลฐานความรู้ของ Dify", + "receiptInfo": "เฉพาะเจ้าของทีมและผู้ดูแลทีมเท่านั้นที่สามารถสมัครสมาชิกและดูข้อมูลการเรียกเก็บเงินได้", + "cloud": "บริการคลาวด์", + "comparePlanAndFeatures": "เปรียบเทียบแผนและฟีเจอร์", + "apiRateLimit": "ข้อจำกัดอัตราการใช้ API", + "getStarted": "เริ่มต้น", + "documents": "{{count,number}} เอกสารความรู้", + "freeTrialTipPrefix": "ลงทะเบียนและรับ", + "teamMember_one": "{{count,number}} สมาชิกทีม", + "unlimitedApiRate": "ไม่มีข้อจำกัดอัตราการเรียก API", + "self": "โฮสต์ด้วยตัวเอง", + "apiRateLimitUnit": "{{count,number}}", + "teamMember_other": "{{count,number}} สมาชิกทีม", + "teamWorkspace": "{{count,number}} ทีมทำงาน", + "priceTip": "ต่อพื้นที่ทำงาน/", + "documentsTooltip": "โควต้าสำหรับจำนวนเอกสารที่นำเข้าจากแหล่งข้อมูลความรู้.", + "documentsRequestQuota": "{{count,number}}/นาที จำกัด อัตราการร้องขอข้อมูล", + "apiRateLimitTooltip": "ข้อจำกัดการใช้งาน API จะใช้กับคำขอทั้งหมดที่ทำผ่าน Dify API รวมถึงการสร้างข้อความ, การสนทนาแชท, การดำเนินการเวิร์กโฟลว์ และการประมวลผลเอกสาร.", + "freeTrialTipSuffix": "ไม่จำเป็นต้องใช้บัตรเครดิต", + "freeTrialTip": "ทดลองใช้งานฟรี 200 ครั้งสำหรับ OpenAI.", + "annualBilling": "การเรียกเก็บเงินประจำปี", + "documentsRequestQuotaTooltip": "ระบุจำนวนรวมของการกระทำที่เวิร์กสเปซสามารถดำเนินการต่อหนึ่งนาทีภายในฐานความรู้ รวมถึงการสร้างชุดข้อมูล การลบ การอัปเดต การอัปโหลดเอกสาร การปรับเปลี่ยน การเก็บถาวร และการสอบถามฐานความรู้ เมตริกนี้ถูกใช้ในการประเมินประสิทธิภาพของคำขอฐานความรู้ ตัวอย่างเช่น หากผู้ใช้ Sandbox ทำการทดสอบการตี 10 ครั้งต่อเนื่องภายในหนึ่งนาที เวิร์กสเปซของพวกเขาจะถูกจำกัดชั่วคราวในการดำเนินการต่อไปนี้ในนาทีถัดไป: การสร้างชุดข้อมูล การลบ การอัปเดต หรือการอัปโหลดหรือปรับเปลี่ยนเอกสาร.", + "startBuilding": "เริ่มสร้าง", + "taxTip": "ราคาการสมัครสมาชิกทั้งหมด (รายเดือน/รายปี) ไม่รวมภาษีที่ใช้บังคับ (เช่น ภาษีมูลค่าเพิ่ม, ภาษีการขาย)", + "taxTipSecond": "หากภูมิภาคของคุณไม่มีข้อกำหนดเกี่ยวกับภาษีที่ใช้ได้ จะไม่มีการคิดภาษีในขั้นตอนการชำระเงินของคุณ และคุณจะไม่ถูกเรียกเก็บค่าธรรมเนียมเพิ่มเติมใด ๆ ตลอดระยะเวลาสมาชิกทั้งหมด", + "triggerEvents": { + "unlimited": "เหตุการณ์ทริกเกอร์ไม่จำกัด", + "tooltip": "จำนวนเหตุการณ์ที่เริ่มเวิร์กโฟลว์โดยอัตโนมัติผ่านปลั๊กอิน ตารางเวลา หรือทริกเกอร์เว็บฮุก", + "sandbox": "{{count,number}} เหตุการณ์ทริกเกอร์", + "professional": "{{count,number}} เหตุการณ์ที่ก่อให้เกิดต่อเดือน" + }, + "workflowExecution": { + "standard": "การดำเนินงานเวิร์กโฟลว์มาตรฐาน", + "priority": "การดำเนินงานลำดับความสำคัญ", + "tooltip": "ลำดับความสำคัญและความเร็วของคิวการดำเนินงานของเวิร์กโฟลว์", + "faster": "การดำเนินงานเวิร์กโฟลว์ที่รวดเร็วขึ้น" + }, + "startNodes": { + "unlimited": "ทริกเกอร์/เวิร์กโฟลว์ไม่จำกัด", + "limited": "สูงสุด {{count}} ตัวกระตุ้น/เวิร์กโฟลว์" + }, + "title": { + "plans": "แผน", + "description": "เลือกแผนที่เหมาะสมที่สุดกับความต้องการของทีมคุณ" + } + }, + "plans": { + "sandbox": { + "name": "กระบะทราย", + "description": "ทดลองใช้ GPT ฟรี 200 ครั้ง", + "for": "ทดลองใช้ฟรีของความสามารถหลัก" + }, + "professional": { + "name": "มืออาชีพ", + "description": "สําหรับบุคคลและทีมขนาดเล็กเพื่อปลดล็อกพลังงานมากขึ้นในราคาย่อมเยา", + "for": "สำหรับนักพัฒนาที่เป็นอิสระ/ทีมขนาดเล็ก" + }, + "team": { + "name": "ทีม", + "description": "ทํางานร่วมกันอย่างไร้ขีดจํากัดและเพลิดเพลินไปกับประสิทธิภาพระดับสูงสุด", + "for": "สำหรับทีมขนาดกลาง" + }, + "enterprise": { + "name": "กิจการ", + "description": "รับความสามารถและการสนับสนุนเต็มรูปแบบสําหรับระบบที่สําคัญต่อภารกิจขนาดใหญ่", + "includesTitle": "ทุกอย่างในแผนทีม รวมถึง:", + "features": [ + "โซลูชันการปรับใช้ที่ปรับขนาดได้สำหรับองค์กร", + "การอนุญาตใบอนุญาตเชิงพาณิชย์", + "ฟีเจอร์เฉพาะสำหรับองค์กร", + "หลายพื้นที่ทำงานและการจัดการองค์กร", + "ระบบลงชื่อเพียงครั้งเดียว (SSO)", + "ข้อตกลง SLA ที่เจรจากับพันธมิตร Dify", + "ระบบความปลอดภัยและการควบคุมขั้นสูง", + "การอัปเดตและการบำรุงรักษาโดย Dify อย่างเป็นทางการ", + "การสนับสนุนทางเทคนิคระดับมืออาชีพ" + ], + "btnText": "ติดต่อฝ่ายขาย", + "price": "ที่กำหนดเอง", + "for": "สำหรับทีมขนาดใหญ่", + "priceTip": "การเรียกเก็บเงินประจำปีเท่านั้น" + }, + "community": { + "features": [ + "คุณลักษณะหลักทั้งหมดถูกปล่อยภายใต้ที่เก็บสาธารณะ", + "พื้นที่ทำงานเดียว", + "เป็นไปตามใบอนุญาตแบบโอเพ่นซอร์สของ Dify" + ], + "name": "ชุมชน", + "price": "ฟรี", + "includesTitle": "คุณสมบัติเสรี:", + "description": "สำหรับผู้ใช้ส่วนบุคคล ทีมขนาดเล็ก หรือโครงการที่ไม่ใช่เชิงพาณิชย์", + "btnText": "เริ่มต้นกับชุมชน", + "for": "สำหรับผู้ใช้ส่วนบุคคล ทีมขนาดเล็ก หรือโครงการที่ไม่ใช่เชิงพาณิชย์" + }, + "premium": { + "features": [ + "ความน่าเชื่อถือที่บริหารเองโดยผู้ให้บริการคลาวด์ต่างๆ", + "พื้นที่ทำงานเดียว", + "การปรับแต่งโลโก้และแบรนด์ของเว็บแอป", + "บริการอีเมลและแชทด่วน" + ], + "priceTip": "อิงตามตลาดคลาวด์", + "for": "สำหรับองค์กรและทีมขนาดกลาง", + "btnText": "รับพรีเมียมใน", + "includesTitle": "ทุกอย่างจากชุมชน รวมถึง:", + "description": "สำหรับองค์กรและทีมขนาดกลาง", + "name": "พรีเมียม", + "comingSoon": "การสนับสนุน Microsoft Azure และ Google Cloud กำลังมาเร็วๆ นี้", + "price": "ขยายได้" + } + }, + "vectorSpace": { + "fullTip": "เวกเตอร์สเปซเต็ม", + "fullSolution": "อัปเกรดแผนของคุณเพื่อเพิ่มพื้นที่" + }, + "apps": { + "contactUs": "ติดต่อเรา", + "fullTip2": "ถึงขีดจำกัดของแผนแล้ว", + "fullTip1": "อัปเกรดเพื่อสร้างแอปเพิ่มเติม", + "fullTip1des": "คุณได้ถึงขีด จำกัด ของการสร้างแอปในแผนนี้แล้ว", + "fullTip2des": "แนะนำให้ทำความสะอาดแอปพลิเคชันที่ไม่ใช้งานเพื่อเพิ่มการใช้งาน หรือติดต่อเรา" + }, + "annotatedResponse": { + "fullTipLine1": "อัปเกรดแผนของคุณเป็น", + "fullTipLine2": "ใส่คําอธิบายประกอบการสนทนาเพิ่มเติม", + "quotaTitle": "โควต้าตอบกลับคําอธิบายประกอบ" + }, + "usagePage": { + "buildApps": "สร้างแอป", + "annotationQuota": "โควตาการประกาศ", + "documentsUploadQuota": "โควต้าการอัปโหลดเอกสาร", + "teamMembers": "สมาชิกในทีม", + "vectorSpace": "การจัดเก็บข้อมูลความรู้", + "vectorSpaceTooltip": "เอกสารที่ใช้โหมดการจัดทำดัชนีคุณภาพสูงจะใช้ทรัพยากรเก็บข้อมูลความรู้ เมื่อการเก็บข้อมูลความรู้ถึงขีดจำกัด เอกสารใหม่จะไม่สามารถอัปโหลดได้.", + "triggerEvents": "เหตุการณ์กระตุ้น", + "perMonth": "ต่อเดือน", + "resetsIn": "รีเซ็ตในอีก {{count,number}} วัน" + }, + "teamMembers": "สมาชิกในทีม", + "triggerLimitModal": { + "upgrade": "อัปเกรด", + "dismiss": "ปฏิเสธ", + "usageTitle": "เหตุการณ์ทริกเกอร์", + "title": "อัปเกรดเพื่อปลดล็อกเหตุการณ์ทริกเกอร์เพิ่มเติม", + "description": "คุณได้ถึงขีดจำกัดของทริกเกอร์เหตุการณ์เวิร์กโฟลว์สำหรับแผนนี้แล้ว" + }, + "viewBillingTitle": "การเรียกเก็บเงินและการสมัครสมาชิก", + "viewBillingDescription": "จัดการวิธีการชำระเงิน ใบแจ้งหนี้ และการเปลี่ยนแปลงการสมัครสมาชิก", + "viewBillingAction": "จัดการ", + "upgrade": { + "uploadMultiplePages": { + "title": "อัปเกรดเพื่ออัปโหลดเอกสารหลายฉบับพร้อมกัน", + "description": "คุณได้ถึงขีดจำกัดการอัปโหลดแล้ว — สามารถเลือกและอัปโหลดเอกสารได้เพียงไฟล์เดียวต่อครั้งในแผนปัจจุบันของคุณ" + }, + "uploadMultipleFiles": { + "title": "อัปเกรดเพื่อปลดล็อกการอัปโหลดเอกสารเป็นชุด", + "description": "อัปโหลดเอกสารหลายชิ้นพร้อมกันในครั้งเดียวเพื่อประหยัดเวลาและเพิ่มประสิทธิภาพ" + }, + "addChunks": { + "title": "อัปเกรดเพื่อเพิ่มชิ้นส่วนต่อ", + "description": "คุณได้ถึงขีดจำกัดในการเพิ่มชิ้นส่วนสำหรับแผนนี้แล้ว" + } + } +} diff --git a/web/i18n/th-TH/billing.ts b/web/i18n/th-TH/billing.ts deleted file mode 100644 index 7c55baba60..0000000000 --- a/web/i18n/th-TH/billing.ts +++ /dev/null @@ -1,221 +0,0 @@ -const translation = { - currentPlan: 'แผนปัจจุบัน', - upgradeBtn: { - plain: 'แผนการอัปเกรด', - encourage: 'อัปเกรดเดี๋ยวนี้', - encourageShort: 'อัพ เกรด', - }, - viewBilling: 'จัดการการเรียกเก็บเงินและการสมัครใช้งาน', - buyPermissionDeniedTip: 'โปรดติดต่อผู้ดูแลระบบองค์กรของคุณเพื่อสมัครสมาชิก', - plansCommon: { - yearlyTip: 'รับฟรี 2 เดือนโดยสมัครสมาชิกรายปี!', - mostPopular: 'แห่ง', - planRange: { - monthly: 'รายเดือน', - yearly: 'รายปี', - }, - month: 'เดือน', - year: 'ปี', - save: 'ประหยัด', - free: 'ฟรี', - currentPlan: 'แผนปัจจุบัน', - contractSales: 'ติดต่อฝ่ายขาย', - contractOwner: 'ติดต่อผู้จัดการทีม', - startForFree: 'เริ่มฟรี', - contactSales: 'ติดต่อฝ่ายขาย', - talkToSales: 'พูดคุยกับฝ่ายขาย', - modelProviders: 'ผู้ให้บริการโมเดล', - annotationQuota: 'โควต้าคําอธิบายประกอบ', - buildApps: 'สร้างแอพ', - vectorSpace: 'พื้นที่เวกเตอร์', - vectorSpaceTooltip: 'Vector Space เป็นระบบหน่วยความจําระยะยาวที่จําเป็นสําหรับ LLM ในการทําความเข้าใจข้อมูลของคุณ', - 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 ของคุณ', - titlePerMonth: '{{count,number}} ข้อความ/เดือน', - }, - annotatedResponse: { - title: 'ขีดจํากัดโควต้าคําอธิบายประกอบ', - tooltip: 'การแก้ไขและคําอธิบายประกอบการตอบกลับด้วยตนเองให้ความสามารถในการตอบคําถามคุณภาพสูงที่ปรับแต่งได้สําหรับแอป (ใช้ได้เฉพาะในแอปแชท)', - }, - ragAPIRequestTooltip: 'หมายถึงจํานวนการเรียก API ที่เรียกใช้เฉพาะความสามารถในการประมวลผลฐานความรู้ของ Dify', - receiptInfo: 'เฉพาะเจ้าของทีมและผู้ดูแลทีมเท่านั้นที่สามารถสมัครสมาชิกและดูข้อมูลการเรียกเก็บเงินได้', - cloud: 'บริการคลาวด์', - comparePlanAndFeatures: 'เปรียบเทียบแผนและฟีเจอร์', - apiRateLimit: 'ข้อจำกัดอัตราการใช้ API', - getStarted: 'เริ่มต้น', - documents: '{{count,number}} เอกสารความรู้', - freeTrialTipPrefix: 'ลงทะเบียนและรับ', - teamMember_one: '{{count,number}} สมาชิกทีม', - unlimitedApiRate: 'ไม่มีข้อจำกัดอัตราการเรียก API', - self: 'โฮสต์ด้วยตัวเอง', - apiRateLimitUnit: '{{count,number}}', - teamMember_other: '{{count,number}} สมาชิกทีม', - teamWorkspace: '{{count,number}} ทีมทำงาน', - priceTip: 'ต่อพื้นที่ทำงาน/', - documentsTooltip: 'โควต้าสำหรับจำนวนเอกสารที่นำเข้าจากแหล่งข้อมูลความรู้.', - documentsRequestQuota: '{{count,number}}/นาที จำกัด อัตราการร้องขอข้อมูล', - apiRateLimitTooltip: 'ข้อจำกัดการใช้งาน API จะใช้กับคำขอทั้งหมดที่ทำผ่าน Dify API รวมถึงการสร้างข้อความ, การสนทนาแชท, การดำเนินการเวิร์กโฟลว์ และการประมวลผลเอกสาร.', - freeTrialTipSuffix: 'ไม่จำเป็นต้องใช้บัตรเครดิต', - freeTrialTip: 'ทดลองใช้งานฟรี 200 ครั้งสำหรับ OpenAI.', - annualBilling: 'การเรียกเก็บเงินประจำปี', - documentsRequestQuotaTooltip: 'ระบุจำนวนรวมของการกระทำที่เวิร์กสเปซสามารถดำเนินการต่อหนึ่งนาทีภายในฐานความรู้ รวมถึงการสร้างชุดข้อมูล การลบ การอัปเดต การอัปโหลดเอกสาร การปรับเปลี่ยน การเก็บถาวร และการสอบถามฐานความรู้ เมตริกนี้ถูกใช้ในการประเมินประสิทธิภาพของคำขอฐานความรู้ ตัวอย่างเช่น หากผู้ใช้ Sandbox ทำการทดสอบการตี 10 ครั้งต่อเนื่องภายในหนึ่งนาที เวิร์กสเปซของพวกเขาจะถูกจำกัดชั่วคราวในการดำเนินการต่อไปนี้ในนาทีถัดไป: การสร้างชุดข้อมูล การลบ การอัปเดต หรือการอัปโหลดหรือปรับเปลี่ยนเอกสาร.', - startBuilding: 'เริ่มสร้าง', - taxTip: 'ราคาการสมัครสมาชิกทั้งหมด (รายเดือน/รายปี) ไม่รวมภาษีที่ใช้บังคับ (เช่น ภาษีมูลค่าเพิ่ม, ภาษีการขาย)', - taxTipSecond: 'หากภูมิภาคของคุณไม่มีข้อกำหนดเกี่ยวกับภาษีที่ใช้ได้ จะไม่มีการคิดภาษีในขั้นตอนการชำระเงินของคุณ และคุณจะไม่ถูกเรียกเก็บค่าธรรมเนียมเพิ่มเติมใด ๆ ตลอดระยะเวลาสมาชิกทั้งหมด', - triggerEvents: { - unlimited: 'เหตุการณ์ทริกเกอร์ไม่จำกัด', - tooltip: 'จำนวนเหตุการณ์ที่เริ่มเวิร์กโฟลว์โดยอัตโนมัติผ่านปลั๊กอิน ตารางเวลา หรือทริกเกอร์เว็บฮุก', - sandbox: '{{count,number}} เหตุการณ์ทริกเกอร์', - professional: '{{count,number}} เหตุการณ์ที่ก่อให้เกิดต่อเดือน', - }, - workflowExecution: { - standard: 'การดำเนินงานเวิร์กโฟลว์มาตรฐาน', - priority: 'การดำเนินงานลำดับความสำคัญ', - tooltip: 'ลำดับความสำคัญและความเร็วของคิวการดำเนินงานของเวิร์กโฟลว์', - faster: 'การดำเนินงานเวิร์กโฟลว์ที่รวดเร็วขึ้น', - }, - startNodes: { - unlimited: 'ทริกเกอร์/เวิร์กโฟลว์ไม่จำกัด', - limited: 'สูงสุด {{count}} ตัวกระตุ้น/เวิร์กโฟลว์', - }, - title: { - plans: 'แผน', - description: 'เลือกแผนที่เหมาะสมที่สุดกับความต้องการของทีมคุณ', - }, - }, - plans: { - sandbox: { - name: 'กระบะทราย', - description: 'ทดลองใช้ GPT ฟรี 200 ครั้ง', - for: 'ทดลองใช้ฟรีของความสามารถหลัก', - }, - professional: { - name: 'มืออาชีพ', - description: 'สําหรับบุคคลและทีมขนาดเล็กเพื่อปลดล็อกพลังงานมากขึ้นในราคาย่อมเยา', - for: 'สำหรับนักพัฒนาที่เป็นอิสระ/ทีมขนาดเล็ก', - }, - team: { - name: 'ทีม', - description: 'ทํางานร่วมกันอย่างไร้ขีดจํากัดและเพลิดเพลินไปกับประสิทธิภาพระดับสูงสุด', - for: 'สำหรับทีมขนาดกลาง', - }, - enterprise: { - name: 'กิจการ', - description: 'รับความสามารถและการสนับสนุนเต็มรูปแบบสําหรับระบบที่สําคัญต่อภารกิจขนาดใหญ่', - includesTitle: 'ทุกอย่างในแผนทีม รวมถึง:', - features: ['โซลูชันการปรับใช้ที่ปรับขนาดได้สำหรับองค์กร', 'การอนุญาตใบอนุญาตเชิงพาณิชย์', 'ฟีเจอร์เฉพาะสำหรับองค์กร', 'หลายพื้นที่ทำงานและการจัดการองค์กร', 'ระบบลงชื่อเพียงครั้งเดียว (SSO)', 'ข้อตกลง SLA ที่เจรจากับพันธมิตร Dify', 'ระบบความปลอดภัยและการควบคุมขั้นสูง', 'การอัปเดตและการบำรุงรักษาโดย Dify อย่างเป็นทางการ', 'การสนับสนุนทางเทคนิคระดับมืออาชีพ'], - btnText: 'ติดต่อฝ่ายขาย', - price: 'ที่กำหนดเอง', - for: 'สำหรับทีมขนาดใหญ่', - priceTip: 'การเรียกเก็บเงินประจำปีเท่านั้น', - }, - community: { - features: ['คุณลักษณะหลักทั้งหมดถูกปล่อยภายใต้ที่เก็บสาธารณะ', 'พื้นที่ทำงานเดียว', 'เป็นไปตามใบอนุญาตแบบโอเพ่นซอร์สของ Dify'], - name: 'ชุมชน', - price: 'ฟรี', - includesTitle: 'คุณสมบัติเสรี:', - description: 'สำหรับผู้ใช้ส่วนบุคคล ทีมขนาดเล็ก หรือโครงการที่ไม่ใช่เชิงพาณิชย์', - btnText: 'เริ่มต้นกับชุมชน', - for: 'สำหรับผู้ใช้ส่วนบุคคล ทีมขนาดเล็ก หรือโครงการที่ไม่ใช่เชิงพาณิชย์', - }, - premium: { - features: ['ความน่าเชื่อถือที่บริหารเองโดยผู้ให้บริการคลาวด์ต่างๆ', 'พื้นที่ทำงานเดียว', 'การปรับแต่งโลโก้และแบรนด์ของเว็บแอป', 'บริการอีเมลและแชทด่วน'], - priceTip: 'อิงตามตลาดคลาวด์', - for: 'สำหรับองค์กรและทีมขนาดกลาง', - btnText: 'รับพรีเมียมใน', - includesTitle: 'ทุกอย่างจากชุมชน รวมถึง:', - description: 'สำหรับองค์กรและทีมขนาดกลาง', - name: 'พรีเมียม', - comingSoon: 'การสนับสนุน Microsoft Azure และ Google Cloud กำลังมาเร็วๆ นี้', - price: 'ขยายได้', - }, - }, - vectorSpace: { - fullTip: 'เวกเตอร์สเปซเต็ม', - fullSolution: 'อัปเกรดแผนของคุณเพื่อเพิ่มพื้นที่', - }, - apps: { - contactUs: 'ติดต่อเรา', - fullTip2: 'ถึงขีดจำกัดของแผนแล้ว', - fullTip1: 'อัปเกรดเพื่อสร้างแอปเพิ่มเติม', - fullTip1des: 'คุณได้ถึงขีด จำกัด ของการสร้างแอปในแผนนี้แล้ว', - fullTip2des: 'แนะนำให้ทำความสะอาดแอปพลิเคชันที่ไม่ใช้งานเพื่อเพิ่มการใช้งาน หรือติดต่อเรา', - }, - annotatedResponse: { - fullTipLine1: 'อัปเกรดแผนของคุณเป็น', - fullTipLine2: 'ใส่คําอธิบายประกอบการสนทนาเพิ่มเติม', - quotaTitle: 'โควต้าตอบกลับคําอธิบายประกอบ', - }, - usagePage: { - buildApps: 'สร้างแอป', - annotationQuota: 'โควตาการประกาศ', - documentsUploadQuota: 'โควต้าการอัปโหลดเอกสาร', - teamMembers: 'สมาชิกในทีม', - vectorSpace: 'การจัดเก็บข้อมูลความรู้', - vectorSpaceTooltip: 'เอกสารที่ใช้โหมดการจัดทำดัชนีคุณภาพสูงจะใช้ทรัพยากรเก็บข้อมูลความรู้ เมื่อการเก็บข้อมูลความรู้ถึงขีดจำกัด เอกสารใหม่จะไม่สามารถอัปโหลดได้.', - triggerEvents: 'เหตุการณ์กระตุ้น', - perMonth: 'ต่อเดือน', - resetsIn: 'รีเซ็ตในอีก {{count,number}} วัน', - }, - teamMembers: 'สมาชิกในทีม', - triggerLimitModal: { - upgrade: 'อัปเกรด', - dismiss: 'ปฏิเสธ', - usageTitle: 'เหตุการณ์ทริกเกอร์', - title: 'อัปเกรดเพื่อปลดล็อกเหตุการณ์ทริกเกอร์เพิ่มเติม', - description: 'คุณได้ถึงขีดจำกัดของทริกเกอร์เหตุการณ์เวิร์กโฟลว์สำหรับแผนนี้แล้ว', - }, - viewBillingTitle: 'การเรียกเก็บเงินและการสมัครสมาชิก', - viewBillingDescription: 'จัดการวิธีการชำระเงิน ใบแจ้งหนี้ และการเปลี่ยนแปลงการสมัครสมาชิก', - viewBillingAction: 'จัดการ', - upgrade: { - uploadMultiplePages: { - title: 'อัปเกรดเพื่ออัปโหลดเอกสารหลายฉบับพร้อมกัน', - description: 'คุณได้ถึงขีดจำกัดการอัปโหลดแล้ว — สามารถเลือกและอัปโหลดเอกสารได้เพียงไฟล์เดียวต่อครั้งในแผนปัจจุบันของคุณ', - }, - uploadMultipleFiles: { - title: 'อัปเกรดเพื่อปลดล็อกการอัปโหลดเอกสารเป็นชุด', - description: 'อัปโหลดเอกสารหลายชิ้นพร้อมกันในครั้งเดียวเพื่อประหยัดเวลาและเพิ่มประสิทธิภาพ', - }, - addChunks: { - title: 'อัปเกรดเพื่อเพิ่มชิ้นส่วนต่อ', - description: 'คุณได้ถึงขีดจำกัดในการเพิ่มชิ้นส่วนสำหรับแผนนี้แล้ว', - }, - }, -} - -export default translation diff --git a/web/i18n/th-TH/common.json b/web/i18n/th-TH/common.json new file mode 100644 index 0000000000..73e57fd1a8 --- /dev/null +++ b/web/i18n/th-TH/common.json @@ -0,0 +1,785 @@ +{ + "api": { + "success": "ความสําเร็จ", + "actionSuccess": "การดําเนินการสําเร็จ", + "saved": "บันทึก", + "create": "สร้าง", + "remove": "ถูก เอา ออก", + "actionFailed": "การดำเนินการล้มเหลว" + }, + "operation": { + "create": "สร้าง", + "confirm": "ยืนยัน", + "cancel": "ยกเลิก", + "clear": "ใส", + "save": "ประหยัด", + "saveAndEnable": "บันทึกและเปิดใช้งาน", + "edit": "แก้ไข", + "add": "เพิ่ม", + "added": "เพิ่ม", + "refresh": "เริ่มใหม่", + "reset": "รี เซ็ต", + "search": "ค้น", + "change": "เปลี่ยน", + "remove": "ถอด", + "send": "ส่ง", + "copy": "ลอก", + "lineBreak": "ตัวแบ่งบรรทัด", + "sure": "ฉันแน่ใจ", + "download": "ดาวน์โหลด", + "delete": "ลบ", + "settings": "การตั้งค่า", + "setup": "ตั้ง ค่า", + "getForFree": "รับฟรี", + "reload": "โหลด", + "ok": "ตกลง, ได้", + "log": "ซุง", + "learnMore": "ศึกษาเพิ่มเติม", + "params": "พารามิเตอร์", + "duplicate": "สำเนา", + "rename": "ตั้งชื่อใหม่", + "audioSourceUnavailable": "AudioSource ไม่พร้อมใช้งาน", + "copyImage": "คัดลอกรูปภาพ", + "zoomOut": "ซูมออก", + "zoomIn": "ซูมเข้า", + "openInNewTab": "เปิดในแท็บใหม่", + "view": "ทิวทัศน์", + "regenerate": "สร้างใหม่", + "viewMore": "ดูเพิ่มเติม", + "saveAndRegenerate": "บันทึกและสร้างก้อนย่อยใหม่", + "close": "ปิด", + "skip": "เรือ", + "submit": "ส่ง", + "imageCopied": "ภาพที่คัดลอก", + "deleteApp": "ลบแอพ", + "copied": "คัด ลอก", + "viewDetails": "ดูรายละเอียด", + "in": "ใน", + "format": "รูปแบบ", + "downloadFailed": "ดาวน์โหลดล้มเหลว กรุณาลองอีกครั้งในภายหลัง.", + "more": "มากขึ้น", + "downloadSuccess": "ดาวน์โหลดเสร็จสิ้นแล้ว.", + "selectAll": "เลือกทั้งหมด", + "deSelectAll": "ยกเลิกการเลือกทั้งหมด", + "config": "การตั้งค่า", + "no": "ไม่", + "deleteConfirmTitle": "ลบหรือไม่?", + "confirmAction": "กรุณายืนยันการกระทำของคุณ", + "yes": "ใช่", + "noSearchResults": "ไม่พบ {{content}}", + "resetKeywords": "รีเซ็ตคำสำคัญ", + "selectCount": "{{count}} ที่เลือก", + "searchCount": "ค้นหา {{count}} {{content}}", + "noSearchCount": "0 {{content}}", + "now": "ตอนนี้" + }, + "errorMsg": { + "fieldRequired": "{{field}} เป็นสิ่งจําเป็น", + "urlError": "url ควรขึ้นต้นด้วย http:// หรือ https://" + }, + "placeholder": { + "input": "กรุณากรอก", + "select": "กรุณาเลือก", + "search": "ค้นหา..." + }, + "voice": { + "language": { + "zhHans": "จีน", + "zhHant": "ภาษาจีนตัวเต็ม", + "enUS": "อังกฤษ", + "deDE": "เยอรมัน", + "frFR": "ฝรั่งเศส", + "esES": "สเปน", + "itIT": "อิตาลี", + "thTH": "ไทย", + "idID": "อินโดนีเซีย", + "jaJP": "ญี่ปุ่น", + "koKR": "เกาหลี", + "ptBR": "โปรตุเกส", + "ruRU": "รัสเซีย", + "ukUA": "ยูเครน", + "viVN": "เวียดนาม", + "plPL": "โปแลนด์", + "roRO": "โรมาเนีย", + "hiIN": "ฮินดี", + "trTR": "ตุรกี", + "faIR": "ภาษาเปอร์เซีย", + "slSI": "ภาษาสโลเวเนีย", + "arTN": "ภาษาอาหรับตูนิเซีย" + } + }, + "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": "โทเค็นสูงสุดได้รับการอัปเดตเป็นโทเค็นสูงสุด 80% ของรุ่นปัจจุบัน {{maxToken}}", + "stop_sequences": "หยุดลําดับ", + "stop_sequencesTip": "สูงสุดสี่ลําดับที่ API จะหยุดสร้างโทเค็นเพิ่มเติม ข้อความที่ส่งคืนจะไม่มีลําดับการหยุด", + "stop_sequencesPlaceholder": "ป้อนลําดับแล้วกด Tab" + }, + "tone": { + "Creative": "สร้างสรรค์", + "Balanced": "สมดุล", + "Precise": "ถูกต้อง", + "Custom": "ธรรมเนียม" + }, + "addMoreModel": "ไปที่การตั้งค่าเพื่อเพิ่มรุ่นเพิ่มเติม", + "settingsLink": "การตั้งค่าผู้ให้บริการโมเดล", + "capabilities": "ความสามารถหลายรูปแบบ" + }, + "menus": { + "status": "Beta", + "explore": "สํารวจ", + "apps": "สตูดิโอ", + "plugins": "ปลั๊กอิน", + "pluginsTips": "รวมปลั๊กอินของบุคคลที่สามหรือสร้างปลั๊กอิน AI ที่เข้ากันได้กับ ChatGPT", + "datasets": "ความรู้", + "datasetsTips": "เร็ว ๆ นี้: นําเข้าข้อมูลข้อความของคุณเองหรือเขียนข้อมูลแบบเรียลไทม์ผ่าน Webhook เพื่อปรับปรุงบริบท LLM", + "newApp": "แอพใหม่", + "newDataset": "สร้างความรู้", + "tools": "เครื่อง มือ", + "exploreMarketplace": "สํารวจ Marketplace", + "appDetail": "รายละเอียดแอป", + "account": "บัญชี" + }, + "userProfile": { + "settings": "การตั้งค่า", + "emailSupport": "การสนับสนุนทางอีเมล", + "workspace": "พื้นที่", + "createWorkspace": "สร้างพื้นที่ทํางาน", + "helpCenter": "วิธีใช้", + "roadmap": "แผนงาน", + "community": "ชุมชน", + "about": "ประมาณ", + "logout": "ออกจากระบบ", + "github": "GitHub", + "compliance": "การปฏิบัติตามข้อกำหนด", + "support": "การสนับสนุน", + "contactUs": "ติดต่อเรา", + "forum": "ฟอรั่ม" + }, + "settings": { + "accountGroup": "ทั่วไป", + "workplaceGroup": "พื้นที่", + "account": "บัญชีของฉัน", + "members": "สมาชิก", + "billing": "เรียก เก็บ เงิน", + "integrations": "บูรณาการ", + "language": "ภาษา", + "provider": "ผู้ให้บริการโมเดล", + "dataSource": "แหล่งข้อมูล", + "plugin": "ปลั๊กอิน", + "apiBasedExtension": "ส่วนขยาย API", + "generalGroup": "ทั่วไป" + }, + "account": { + "account": "บัญชี", + "myAccount": "บัญชีของฉัน", + "studio": "Dify สตูดิโอ", + "avatar": "อวตาร", + "name": "ชื่อ", + "email": "อีเมล", + "password": "รหัสผ่าน", + "passwordTip": "คุณสามารถตั้งรหัสผ่านถาวรได้หากคุณไม่ต้องการใช้รหัสเข้าสู่ระบบชั่วคราว", + "setPassword": "ตั้งรหัสผ่าน", + "resetPassword": "รีเซ็ตรหัสผ่าน", + "currentPassword": "รหัสผ่านปัจจุบัน", + "newPassword": "รหัสผ่านใหม่", + "confirmPassword": "ยืนยันรหัสผ่าน", + "notEqual": "รหัสผ่านสองรหัสผ่านแตกต่างกัน", + "langGeniusAccount": "บัญชี Dify", + "langGeniusAccountTip": "บัญชี Dify และข้อมูลผู้ใช้ที่เกี่ยวข้อง", + "editName": "แก้ไขชื่อ", + "showAppLength": "แสดง {{length}} แอป", + "delete": "ลบบัญชี", + "deleteTip": "การลบบัญชีของคุณจะเป็นการลบข้อมูลทั้งหมดของคุณอย่างถาวรและไม่สามารถกู้คืนได้", + "deletePrivacyLinkTip": "สําหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่เราจัดการกับข้อมูลของคุณ โปรดดูที่", + "deletePrivacyLink": "นโยบายความเป็นส่วนตัว", + "deleteLabel": "เพื่อยืนยัน โปรดพิมพ์อีเมลของคุณด้านล่าง", + "deletePlaceholder": "กรุณากรอกอีเมลของคุณ", + "sendVerificationButton": "ส่งรหัสยืนยัน", + "verificationLabel": "รหัสยืนยัน", + "verificationPlaceholder": "วางรหัส 6 หลัก", + "permanentlyDeleteButton": "ลบบัญชีอย่างถาวร", + "feedbackTitle": "การตอบสนอง", + "feedbackLabel": "บอกเราว่าทําไมคุณถึงลบบัญชีของคุณ", + "feedbackPlaceholder": "เสริม", + "deleteSuccessTip": "บัญชีของคุณต้องใช้เวลาในการลบให้เสร็จสิ้น เราจะส่งอีเมลถึงคุณเมื่อทุกอย่างเสร็จสิ้น", + "workspaceIcon": "ไอคอนพื้นที่ทำงาน", + "editWorkspaceInfo": "แก้ไขข้อมูลเวิร์กสเปซ", + "workspaceName": "ชื่อพื้นที่ทำงาน", + "changeEmail": { + "resend": "ส่งซ้ำ", + "changeTo": "เปลี่ยนเป็น {{email}}", + "sendVerifyCode": "ส่งรหัสยืนยัน", + "newEmail": "สร้างที่อยู่อีเมลใหม่", + "emailLabel": "อีเมลใหม่", + "emailPlaceholder": "ป้อนอีเมลใหม่", + "verifyEmail": "ตรวจสอบอีเมลปัจจุบันของคุณ", + "codePlaceholder": "กรุณาวางรหัส 6 หลัก", + "codeLabel": "รหัสยืนยันตัวตน", + "existingEmail": "มีผู้ใช้ที่มีอีเมลนี้อยู่แล้ว.", + "verifyNew": "ยืนยันอีเมลใหม่ของคุณ", + "content4": "เราเพิ่งส่งรหัสยืนยันชั่วคราวไปที่ {{email}}.", + "continue": "ดำเนินต่อไป", + "content2": "อีเมลปัจจุบันของคุณคือ {{email}} รหัสยืนยันได้ถูกส่งไปยังที่อยู่อีเมลนี้แล้ว", + "content3": "กรุณาใส่อีเมลใหม่และเราจะส่งรหัสยืนยันให้คุณ", + "content1": "หากคุณดำเนินการต่อ เราจะส่งรหัสยืนยันไปยัง {{email}} เพื่อการยืนยันตัวตนใหม่อีกครั้ง.", + "resendTip": "ไม่ได้รับรหัสเหรอ?", + "resendCount": "ส่งอีกครั้งใน {{count}} วินาที", + "authTip": "เมื่ออีเมลของคุณถูกเปลี่ยนแปลง บัญชี Google หรือบัญชี GitHub ที่เชื่อมโยงกับอีเมลเก่าของคุณจะไม่สามารถเข้าสู่ระบบบัญชีนี้ได้อีกต่อไป.", + "title": "เปลี่ยนอีเมล", + "unAvailableEmail": "อีเมลนี้ไม่สามารถใช้งานได้ชั่วคราว." + } + }, + "members": { + "team": "ทีม", + "invite": "เพิ่ม", + "name": "ชื่อ", + "lastActive": "ใช้งานล่าสุด", + "role": "บทบาท", + "pending": "รอ ", + "owner": "เจ้าของ", + "admin": "ผู้ดูแลระบบ", + "adminTip": "สามารถสร้างแอพและจัดการการตั้งค่าทีมได้", + "normal": "ปกติ", + "normalTip": "ใช้ได้เฉพาะแอพ สร้างแอพไม่ได้", + "builder": "ผู้สร้าง", + "builderTip": "สามารถสร้างและแก้ไขแอปของตัวเองได้", + "editor": "บรรณาธิการ", + "editorTip": "สามารถสร้างและแก้ไขแอปได้", + "datasetOperator": "ผู้ดูแลระบบความรู้", + "datasetOperatorTip": "สามารถจัดการฐานความรู้ได้เท่านั้น", + "inviteTeamMember": "เพิ่มสมาชิกในทีม", + "inviteTeamMemberTip": "พวกเขาสามารถเข้าถึงข้อมูลทีมของคุณได้โดยตรงหลังจากลงชื่อเข้าใช้", + "emailNotSetup": "เซิร์ฟเวอร์อีเมลไม่ได้ตั้งค่าไว้ จึงไม่สามารถส่งอีเมลเชิญได้ กรุณาแจ้งผู้ใช้เกี่ยวกับลิงก์เชิญที่จะออกหลังจากการเชิญแทน", + "email": "อีเมล", + "emailInvalid": "รูปแบบอีเมลไม่ถูกต้อง", + "emailPlaceholder": "กรุณากรอกอีเมล", + "sendInvite": "ส่งคําเชิญ", + "invitedAsRole": "ได้รับเชิญให้เป็นผู้ใช้ {{role}}", + "invitationSent": "ส่งคําเชิญแล้ว", + "invitationSentTip": "ส่งคําเชิญแล้ว และพวกเขาสามารถลงชื่อเข้าใช้ Dify เพื่อเข้าถึงข้อมูลทีมของคุณได้", + "invitationLink": "ลิงค์คําเชิญ", + "failedInvitationEmails": "ผู้ใช้ด้านล่างไม่ได้รับเชิญสําเร็จ", + "ok": "ตกลง, ได้", + "removeFromTeam": "ลบออกจากทีม", + "removeFromTeamTip": "จะลบการเข้าถึงของทีม", + "setAdmin": "ตั้งเป็นผู้ดูแลระบบ", + "setMember": "ตั้งเป็นสมาชิกสามัญ", + "setBuilder": "ตั้งเป็นผู้สร้าง", + "setEditor": "ตั้งค่าเป็นตัวแก้ไข", + "disInvite": "ยกเลิกคําเชิญ", + "deleteMember": "ลบสมาชิก", + "you": "(คุณ)", + "transferModal": { + "resend": "ส่งซ้ำ", + "codePlaceholder": "กรุณาวางรหัส 6 หลัก", + "resendTip": "ไม่ received รหัสใช่ไหม?", + "sendVerifyCode": "ส่งรหัสยืนยัน", + "continue": "ดำเนินต่อไป", + "codeLabel": "รหัสยืนยัน", + "transferPlaceholder": "เลือกสมาชิกในที่ทำงาน…", + "transferLabel": "โอนความเป็นเจ้าของพื้นที่ทำงานไปยัง", + "transfer": "โอนความเป็นเจ้าของพื้นที่ทำงาน", + "resendCount": "ส่งอีกครั้งใน {{count}} วินาที", + "verifyEmail": "ตรวจสอบอีเมลปัจจุบันของคุณ", + "verifyContent2": "เราจะส่งรหัสการตรวจสอบชั่วคราวไปยังอีเมลนี้เพื่อทำการยืนยันตัวตนใหม่.", + "warningTip": "คุณจะกลายเป็นสมาชิกผู้ดูแลระบบ และเจ้าของคนใหม่จะมีการควบคุมทั้งหมด", + "warning": "คุณกำลังจะโอนความเป็นเจ้าของของ \"{{workspace}}\" นี่จะมีผลทันทีและไม่สามารถย้อนกลับได้.", + "sendTip": "หากคุณดำเนินการต่อไป เราจะส่งรหัสการตรวจสอบไปยัง {{email}} สำหรับการตรวจสอบสิทธิ์ใหม่อีกครั้ง.", + "verifyContent": "อีเมลปัจจุบันของคุณคือ {{email}}.", + "title": "โอนความเป็นเจ้าของพื้นที่ทำงาน" + }, + "transferOwnership": "โอนความเป็นเจ้าของ" + }, + "integrations": { + "connected": "เชื่อม ต่อ", + "google": "กูเกิล", + "googleAccount": "เข้าสู่ระบบด้วยบัญชี Google", + "github": "เกวบ", + "githubAccount": "เข้าสู่ระบบด้วยบัญชี GitHub", + "connect": "ติด" + }, + "language": { + "displayLanguage": "ภาษาที่แสดง", + "timezone": "เขตเวลา" + }, + "provider": { + "apiKey": "คีย์ API", + "enterYourKey": "ป้อนคีย์ API ของคุณที่นี่", + "invalidKey": "คีย์ OpenAI API ไม่ถูกต้อง", + "validatedError": "การตรวจสอบล้มเหลว:", + "validating": "กําลังตรวจสอบความถูกต้องของคีย์...", + "saveFailed": "บันทึกคีย์ API ล้มเหลว", + "apiKeyExceedBill": "คีย์ API นี้ไม่มีโควต้า โปรดอ่าน", + "addKey": "เพิ่มคีย์", + "comingSoon": "เร็ว ๆ นี้", + "editKey": "แก้ไข", + "invalidApiKey": "คีย์ API ไม่ถูกต้อง", + "azure": { + "apiBase": "ฐาน API", + "apiBasePlaceholder": "URL ฐาน API ของปลายทาง Azure OpenAI ของคุณ", + "apiKey": "คีย์ API", + "apiKeyPlaceholder": "ป้อนคีย์ API ของคุณที่นี่", + "helpTip": "เรียนรู้บริการ Azure OpenAI" + }, + "openaiHosted": { + "openaiHosted": "โฮสต์ OpenAI", + "onTrial": "ทดลองใช้", + "exhausted": "โควต้าหมด", + "desc": "บริการโฮสติ้ง OpenAI ที่ให้บริการโดย Dify ช่วยให้คุณใช้โมเดลต่างๆ เช่น GPT-3.5 ก่อนที่โควต้าการทดลองใช้ของคุณจะหมด คุณจําเป็นต้องตั้งค่าผู้ให้บริการรุ่นอื่นๆ", + "callTimes": "เวลาโทร", + "usedUp": "โควต้าทดลองใช้หมด เพิ่มผู้ให้บริการโมเดลของตัวเอง", + "useYourModel": "ปัจจุบันใช้ผู้ให้บริการโมเดลของตัวเอง", + "close": "ปิด" + }, + "anthropicHosted": { + "anthropicHosted": "Claude มานุษยวิทยา", + "onTrial": "ทดลองใช้", + "exhausted": "โควต้าหมด", + "desc": "โมเดลที่ทรงพลังซึ่งเก่งในงานที่หลากหลายตั้งแต่บทสนทนาที่ซับซ้อนและการสร้างเนื้อหาที่สร้างสรรค์ไปจนถึงคําแนะนําโดยละเอียด", + "callTimes": "เวลาโทร", + "usedUp": "โควต้าทดลองใช้หมด เพิ่มผู้ให้บริการโมเดลของตัวเอง", + "useYourModel": "ปัจจุบันใช้ผู้ให้บริการโมเดลของตัวเอง", + "close": "ปิด", + "trialQuotaTip": "โควต้าการทดลองใช้ Anthropic ของคุณจะหมดอายุในวันที่ 2025/03/11 และจะไม่สามารถใช้งานได้อีกต่อไปหลังจากนั้นโปรดใช้มันให้ทันเวลา" + }, + "anthropic": { + "using": "ความสามารถในการฝังกําลังใช้", + "enableTip": "ในการเปิดใช้งานโมเดล Anthropic คุณต้องผูกกับ OpenAI หรือ Azure OpenAI Service ก่อน", + "notEnabled": "ไม่ได้เปิดใช้งาน", + "keyFrom": "รับคีย์ API ของคุณจาก Anthropic" + }, + "encrypted": { + "front": "คีย์ API ของคุณจะถูกเข้ารหัสและจัดเก็บโดยใช้", + "back": "เทคโนโลยี " + } + }, + "modelProvider": { + "notConfigured": "โมเดลระบบยังไม่ได้รับการกําหนดค่าอย่างสมบูรณ์ และฟังก์ชันบางอย่างอาจไม่พร้อมใช้งาน", + "systemModelSettings": "การตั้งค่ารุ่นระบบ", + "systemModelSettingsLink": "เหตุใดจึงจําเป็นต้องตั้งค่าโมเดลระบบ", + "selectModel": "เลือกรุ่นของคุณ", + "setupModelFirst": "โปรดตั้งค่าโมเดลของคุณก่อน", + "systemReasoningModel": { + "key": "แบบจําลองการให้เหตุผลของระบบ", + "tip": "ตั้งค่าโมเดลการอนุมานเริ่มต้นที่จะใช้สําหรับการสร้างแอปพลิเคชัน ตลอดจนคุณลักษณะต่างๆ เช่น การสร้างชื่อบทสนทนาและคําแนะนําคําถามถัดไปจะใช้โมเดลการอนุมานเริ่มต้นด้วย" + }, + "embeddingModel": { + "key": "โมเดลการฝัง", + "tip": "ตั้งค่าโมเดลเริ่มต้นสําหรับการประมวลผลการฝังเอกสารของความรู้ ทั้งการดึงข้อมูลและการนําเข้าความรู้ใช้โมเดลการฝังนี้สําหรับการประมวลผลแบบเวกเตอร์ การสลับจะทําให้มิติเวกเตอร์ระหว่างความรู้ที่นําเข้าและคําถามไม่สอดคล้องกัน เพื่อหลีกเลี่ยงความล้มเหลวในการดึงข้อมูล โปรดอย่าเปลี่ยนรุ่นนี้ตามต้องการ", + "required": "จําเป็นต้องมีแบบจําลองการฝัง" + }, + "speechToTextModel": { + "key": "โมเดลคําพูดเป็นข้อความ", + "tip": "ตั้งค่าโมเดลเริ่มต้นสําหรับการป้อนข้อมูลคําพูดเป็นข้อความในการสนทนา" + }, + "ttsModel": { + "key": "โมเดลการแปลงข้อความเป็นคําพูด", + "tip": "ตั้งค่าโมเดลเริ่มต้นสําหรับการป้อนข้อมูลเป็นข้อความเป็นคําพูดในการสนทนา" + }, + "rerankModel": { + "key": "จัดอันดับโมเดลใหม่", + "tip": "โมเดล Rerank จะจัดลําดับรายการเอกสารผู้สมัครใหม่ตามการจับคู่ความหมายกับการสืบค้นของผู้ใช้ ซึ่งช่วยปรับปรุงผลลัพธ์ของการจัดอันดับความหมาย" + }, + "apiKey": "คีย์ API", + "quota": "โควตา", + "searchModel": "ค้นหารุ่น", + "noModelFound": "ไม่พบแบบจําลองสําหรับ {{model}}", + "models": "รุ่น", + "showMoreModelProvider": "แสดงผู้ให้บริการรุ่นเพิ่มเติม", + "selector": { + "tip": "รุ่นนี้ถูกลบออกแล้ว โปรดเพิ่มรุ่นหรือเลือกรุ่นอื่น", + "emptyTip": "ไม่มีรุ่นที่พร้อมใช้งาน", + "emptySetting": "โปรดไปที่การตั้งค่าเพื่อกําหนดค่า", + "rerankTip": "โปรดตั้งค่าโมเดล Rerank" + }, + "card": { + "quota": "โควตา", + "onTrial": "ทดลองใช้", + "paid": "จ่าย", + "quotaExhausted": "โควต้าหมด", + "callTimes": "เวลาโทร", + "tokens": "โท เค็น", + "buyQuota": "ซื้อโควต้า", + "priorityUse": "ลําดับความสําคัญในการใช้งาน", + "removeKey": "ลบคีย์ API", + "tip": "ลําดับความสําคัญจะได้รับจากโควต้าที่จ่าย โควต้าทดลองใช้จะถูกใช้หลังจากโควต้าที่จ่ายหมด" + }, + "item": { + "deleteDesc": "{{modelName}} ถูกใช้เป็นแบบจําลองการให้เหตุผลของระบบ ฟังก์ชันบางอย่างจะไม่สามารถใช้งานได้หลังจากการลบออก กรุณายืนยัน", + "freeQuota": "โควต้าฟรี" + }, + "addApiKey": "เพิ่มคีย์ API ของคุณ", + "invalidApiKey": "คีย์ API ไม่ถูกต้อง", + "encrypted": { + "front": "คีย์ API ของคุณจะถูกเข้ารหัสและจัดเก็บโดยใช้", + "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": "ตามค่าเริ่มต้น การปรับสมดุลภาระงานจะใช้กลยุทธ์แบบ Round-robin หากเปิดใช้งานการจํากัดอัตรา จะมีการใช้ระยะเวลาคูลดาวน์ 1 นาที", + "upgradeForLoadBalancing": "อัปเกรดแผนของคุณเพื่อเปิดใช้งานการปรับสมดุลโหลด", + "emptyProviderTip": "โปรดติดตั้งผู้ให้บริการโมเดลก่อน", + "discoverMore": "ดูเพิ่มเติมใน", + "emptyProviderTitle": "ไม่ได้ตั้งค่าผู้ให้บริการโมเดล", + "toBeConfigured": "ต้องกําหนดค่า", + "installProvider": "ติดตั้งผู้ให้บริการโมเดล", + "configureTip": "ตั้งค่า api-key หรือเพิ่มโมเดลเพื่อใช้", + "auth": { + "apiKeyModal": { + "addModel": "เพิ่มโมเดล", + "title": "การกำหนดค่าการอนุญาตคีย์ API", + "desc": "หลังจากตั้งค่าข้อมูลประจำตัวแล้ว สมาชิกทุกคนภายในพื้นที่ทำงานสามารถใช้โมเดลนี้เมื่อจัดการแอปพลิเคชันได้" + }, + "configModel": "กำหนดโมเดล", + "unAuthorized": "ไม่ได้รับอนุญาต", + "addCredential": "เพิ่มข้อมูลรับรอง", + "addNewModel": "เพิ่มโมเดลใหม่", + "authRemoved": "ผู้แต่งถูกลบออก", + "providerManaged": "ผู้ให้บริการจัดการ", + "addApiKey": "เพิ่มคีย์ API", + "apiKeys": "คีย์ API", + "modelCredentials": "ข้อมูลรับรองโมเดล", + "specifyModelCredential": "ระบุข้อมูลประจำตัวของโมเดล", + "configLoadBalancing": "การตั้งค่าการโหลดสมดุล", + "addModelCredential": "เพิ่มข้อมูลรับรองโมเดล", + "authorizationError": "ข้อผิดพลาดในการอนุญาต", + "specifyModelCredentialTip": "ใช้ข้อมูลรับรองโมเดลที่กำหนดไว้", + "providerManagedTip": "การกำหนดค่าปัจจุบันถูกโฮสต์โดยผู้ให้บริการ.", + "customModelCredentialsDeleteTip": "ข้อมูลรับรองกำลังถูกใช้งานและไม่สามารถลบได้", + "addModel": "เพิ่มรุ่น", + "removeModel": "ลบโมเดล", + "manageCredentials": "จัดการข้อมูลประจําตัว", + "modelCredential": "ข้อมูลประจําตัวของรุ่น", + "editModelCredential": "แก้ไขข้อมูลประจําตัวของโมเดล", + "selectModelCredential": "เลือกข้อมูลประจําตัวของโมเดล", + "customModelCredentials": "ข้อมูลประจําตัวของโมเดลแบบกําหนดเอง", + "addNewModelCredential": "เพิ่มข้อมูลประจําตัวของโมเดลใหม่" + }, + "parametersInvalidRemoved": "บางพารามิเตอร์ไม่ถูกต้องและถูกนำออก", + "installDataSourceProvider": "ติดตั้งผู้ให้บริการแหล่งข้อมูล" + }, + "dataSource": { + "add": "เพิ่มแหล่งข้อมูล", + "connect": "ติด", + "configure": "กําหนดค่า", + "notion": { + "title": "แนวคิด", + "description": "การใช้ Notion เป็นแหล่งข้อมูลสําหรับความรู้", + "connectedWorkspace": "พื้นที่ทํางานที่เชื่อมต่อ", + "addWorkspace": "เพิ่มพื้นที่ทํางาน", + "connected": "เชื่อม ต่อ", + "disconnected": "เชื่อม ต่อ", + "changeAuthorizedPages": "เปลี่ยนหน้าที่ได้รับอนุญาต", + "pagesAuthorized": "เพจที่ได้รับอนุญาต", + "sync": "ซิงค์", + "remove": "ถอด", + "selector": { + "pageSelected": "หน้าที่เลือก", + "searchPages": "หน้าค้นหา...", + "noSearchResult": "ไม่มีผลการค้นหา", + "addPages": "เพิ่มหน้า", + "preview": "ดูตัวอย่าง" + }, + "integratedAlert": "Notion ถูกผสานผ่านข้อมูลประจำตัวภายใน ไม่จำเป็นต้องทำการอนุญาตใหม่อีกครั้ง." + }, + "website": { + "title": "เว็บไซต์", + "description": "นําเข้าเนื้อหาจากเว็บไซต์โดยใช้โปรแกรมรวบรวมข้อมูลเว็บ", + "with": "กับ", + "configuredCrawlers": "โปรแกรมรวบรวมข้อมูลที่กําหนดค่าไว้", + "active": "กระปรี้กระเปร่า", + "inactive": "เกียจคร้าน" + } + }, + "plugin": { + "serpapi": { + "apiKey": "คีย์ API", + "apiKeyPlaceholder": "ป้อนคีย์ API ของคุณ", + "keyFrom": "รับคีย์ SerpAPI ของคุณจากหน้าบัญชี SerpAPI" + } + }, + "apiBasedExtension": { + "title": "ส่วนขยาย API ให้การจัดการ API แบบรวมศูนย์ ทําให้การกําหนดค่าง่ายขึ้นเพื่อให้ใช้งานได้ง่ายในแอปพลิเคชันของ Dify", + "link": "เรียนรู้วิธีพัฒนาส่วนขยาย API ของคุณเอง", + "add": "เพิ่มส่วนขยาย API", + "selector": { + "title": "ส่วนขยาย API", + "placeholder": "โปรดเลือกส่วนขยาย API", + "manage": "จัดการส่วนขยาย API" + }, + "modal": { + "title": "เพิ่มส่วนขยาย API", + "editTitle": "แก้ไขส่วนขยาย API", + "name": { + "title": "ชื่อ", + "placeholder": "กรุณากรอกชื่อ" + }, + "apiEndpoint": { + "title": "ปลายทาง API", + "placeholder": "โปรดป้อนปลายทาง API" + }, + "apiKey": { + "title": "คีย์ API", + "placeholder": "กรุณาป้อนคีย์ API", + "lengthError": "ความยาวคีย์ API ต้องไม่น้อยกว่า 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": "แอปที่เชื่อมโยง", + "noRelatedApp": "ไม่มีแอปที่เชื่อมโยง", + "pipeline": "ท่อ" + }, + "voiceInput": { + "speaking": "พูดเดี๋ยวนี้...", + "converting": "กําลังแปลงเป็นข้อความ...", + "notAllow": "ไม่ได้รับอนุญาตไมโครโฟน" + }, + "modelName": { + "gpt-3.5-turbo": "GPT-3.5-เทอร์โบ", + "gpt-3.5-turbo-16k": "GPT-3.5-เทอร์โบ-16K", + "gpt-4": "จีพีที-4", + "gpt-4-32k": "จีทีพี-4-32 เค", + "text-davinci-003": "ข้อความ-Davinci-003", + "text-embedding-ada-002": "การฝังข้อความ-ADA-002", + "whisper-1": "กระซิบ-1", + "claude-instant-1": "Claude-Instant", + "claude-2": "Claude-2 (โคลด-2)" + }, + "chat": { + "renameConversation": "เปลี่ยนชื่อการสนทนา", + "conversationName": "ชื่อการสนทนา", + "conversationNamePlaceholder": "กรุณากรอกชื่อการสนทนา", + "conversationNameCanNotEmpty": "ต้องมีชื่อการสนทนา", + "citation": { + "title": "อ้าง อิง", + "linkToDataset": "ลิงค์สู่ความรู้", + "characters": "อักขระ:", + "hitCount": "จํานวนการดึงข้อมูล:", + "vectorHash": "แฮชเวกเตอร์:", + "hitScore": "คะแนนการดึงข้อมูล:" + }, + "inputPlaceholder": "พูดคุยกับบอท", + "thought": "ความคิด", + "thinking": "ความคิด ", + "resend": "ส่งอีกครั้ง" + }, + "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": "อัปโหลดรูปภาพ" + }, + "fileUploader": { + "uploadFromComputer": "อัปโหลดในเครื่อง", + "pasteFileLink": "วางลิงค์ไฟล์", + "pasteFileLinkInputPlaceholder": "ป้อน URL...", + "uploadFromComputerReadError": "การอ่านไฟล์ล้มเหลว โปรดลองอีกครั้ง", + "uploadFromComputerUploadError": "อัปโหลดไฟล์ล้มเหลว โปรดอัปโหลดอีกครั้ง", + "uploadFromComputerLimit": "อัปโหลด {{type}} ต้องไม่เกิน {{size}}", + "pasteFileLinkInvalid": "ลิงก์ไฟล์ไม่ถูกต้อง", + "fileExtensionNotSupport": "ไม่รองรับนามสกุลไฟล์", + "fileExtensionBlocked": "ประเภทไฟล์นี้ถูกบล็อกด้วยเหตุผลด้านความปลอดภัย", + "uploadDisabled": "การอัปโหลดไฟล์ถูกปิดใช้งาน" + }, + "tag": { + "placeholder": "แท็กทั้งหมด", + "addNew": "เพิ่มแท็กใหม่", + "noTag": "ไม่มีแท็ก", + "noTagYet": "ยังไม่มีแท็ก", + "addTag": "เพิ่มแท็ก", + "editTag": "แก้ไขแท็ก", + "manageTags": "จัดการแท็ก", + "selectorPlaceholder": "พิมพ์เพื่อค้นหาหรือสร้าง", + "create": "สร้าง", + "delete": "ลบแท็ก", + "deleteTip": "แท็กกําลังถูกใช้ลบออก?", + "created": "สร้างแท็กสําเร็จ", + "failed": "การสร้างแท็กล้มเหลว" + }, + "license": { + "expiring": "หมดอายุในหนึ่งวัน", + "expiring_plural": "หมดอายุใน {{count}} วัน", + "unlimited": "ไม่มีขีดจำกัด" + }, + "pagination": { + "perPage": "รายการต่อหน้า" + }, + "theme": { + "dark": "มืด", + "theme": "ธีม", + "auto": "ระบบ", + "light": "แสง" + }, + "compliance": { + "professionalUpgradeTooltip": "ใช้ได้เฉพาะแผนทีมหรือสูงกว่าเท่านั้น.", + "gdpr": "GDPR DPA", + "sandboxUpgradeTooltip": "มีให้บริการเฉพาะกับแผนการใช้งานแบบมืออาชีพหรือทีมเท่านั้น.", + "iso27001": "การรับรอง ISO 27001:2022", + "soc2Type2": "รายงาน SOC 2 Type II", + "soc2Type1": "รายงาน SOC 2 ประเภท I" + }, + "imageInput": { + "dropImageHere": "วางภาพของคุณที่นี่ หรือ", + "browse": "ท่องเว็บ", + "supportedFormats": "รองรับ PNG, JPG, JPEG, WEBP และ GIF" + }, + "you": "คุณ", + "avatar": { + "deleteTitle": "ลบอวตาร", + "deleteDescription": "คุณแน่ใจหรือไม่ว่าต้องการลบรูปโปรไฟล์ของคุณ? บัญชีของคุณจะใช้รูปโปรไฟล์เริ่มต้นตามค่าเริ่มต้น." + }, + "feedback": { + "content": "เนื้อหาข้อเสนอแนะ", + "title": "ให้ข้อเสนอแนะ", + "placeholder": "กรุณาบรรยายสิ่งที่ผิดพลาดหรือวิธีที่เราสามารถปรับปรุงได้...", + "subtitle": "กรุณาบอกเราว่าเกิดอะไรขึ้นผิดพลาดกับการตอบนี้" + }, + "label": { + "optional": "(ไม่บังคับ)" + }, + "noData": "ไม่มีข้อมูล", + "dynamicSelect": { + "error": "การโหลดตัวเลือกล้มเหลว", + "noData": "ไม่มีตัวเลือก available", + "loading": "กำลังโหลดตัวเลือก...", + "selected": "{{count}} ที่ถูกเลือก" + } +} diff --git a/web/i18n/th-TH/common.ts b/web/i18n/th-TH/common.ts deleted file mode 100644 index dc82c71c78..0000000000 --- a/web/i18n/th-TH/common.ts +++ /dev/null @@ -1,787 +0,0 @@ -const translation = { - api: { - success: 'ความสําเร็จ', - actionSuccess: 'การดําเนินการสําเร็จ', - saved: 'บันทึก', - create: 'สร้าง', - remove: 'ถูก เอา ออก', - actionFailed: 'การดำเนินการล้มเหลว', - }, - operation: { - create: 'สร้าง', - confirm: 'ยืนยัน', - cancel: 'ยกเลิก', - clear: 'ใส', - save: 'ประหยัด', - saveAndEnable: 'บันทึกและเปิดใช้งาน', - edit: 'แก้ไข', - add: 'เพิ่ม', - added: 'เพิ่ม', - refresh: 'เริ่มใหม่', - reset: 'รี เซ็ต', - search: 'ค้น', - change: 'เปลี่ยน', - remove: 'ถอด', - send: 'ส่ง', - copy: 'ลอก', - lineBreak: 'ตัวแบ่งบรรทัด', - sure: 'ฉันแน่ใจ', - download: 'ดาวน์โหลด', - delete: 'ลบ', - settings: 'การตั้งค่า', - setup: 'ตั้ง ค่า', - getForFree: 'รับฟรี', - reload: 'โหลด', - ok: 'ตกลง, ได้', - log: 'ซุง', - learnMore: 'ศึกษาเพิ่มเติม', - params: 'พารามิเตอร์', - duplicate: 'สำเนา', - rename: 'ตั้งชื่อใหม่', - audioSourceUnavailable: 'AudioSource ไม่พร้อมใช้งาน', - copyImage: 'คัดลอกรูปภาพ', - zoomOut: 'ซูมออก', - zoomIn: 'ซูมเข้า', - openInNewTab: 'เปิดในแท็บใหม่', - view: 'ทิวทัศน์', - regenerate: 'สร้างใหม่', - viewMore: 'ดูเพิ่มเติม', - saveAndRegenerate: 'บันทึกและสร้างก้อนย่อยใหม่', - close: 'ปิด', - skip: 'เรือ', - submit: 'ส่ง', - imageCopied: 'ภาพที่คัดลอก', - deleteApp: 'ลบแอพ', - copied: 'คัด ลอก', - viewDetails: 'ดูรายละเอียด', - in: 'ใน', - format: 'รูปแบบ', - downloadFailed: 'ดาวน์โหลดล้มเหลว กรุณาลองอีกครั้งในภายหลัง.', - more: 'มากขึ้น', - downloadSuccess: 'ดาวน์โหลดเสร็จสิ้นแล้ว.', - selectAll: 'เลือกทั้งหมด', - deSelectAll: 'ยกเลิกการเลือกทั้งหมด', - config: 'การตั้งค่า', - no: 'ไม่', - deleteConfirmTitle: 'ลบหรือไม่?', - confirmAction: 'กรุณายืนยันการกระทำของคุณ', - yes: 'ใช่', - noSearchResults: 'ไม่พบ {{content}}', - resetKeywords: 'รีเซ็ตคำสำคัญ', - selectCount: '{{count}} ที่เลือก', - searchCount: 'ค้นหา {{count}} {{content}}', - noSearchCount: '0 {{content}}', - now: 'ตอนนี้', - }, - errorMsg: { - fieldRequired: '{{field}} เป็นสิ่งจําเป็น', - urlError: 'url ควรขึ้นต้นด้วย http:// หรือ https://', - }, - placeholder: { - input: 'กรุณากรอก', - select: 'กรุณาเลือก', - search: 'ค้นหา...', - }, - voice: { - language: { - zhHans: 'จีน', - zhHant: 'ภาษาจีนตัวเต็ม', - enUS: 'อังกฤษ', - deDE: 'เยอรมัน', - frFR: 'ฝรั่งเศส', - esES: 'สเปน', - itIT: 'อิตาลี', - thTH: 'ไทย', - idID: 'อินโดนีเซีย', - jaJP: 'ญี่ปุ่น', - koKR: 'เกาหลี', - ptBR: 'โปรตุเกส', - ruRU: 'รัสเซีย', - ukUA: 'ยูเครน', - viVN: 'เวียดนาม', - plPL: 'โปแลนด์', - roRO: 'โรมาเนีย', - hiIN: 'ฮินดี', - trTR: 'ตุรกี', - faIR: 'ภาษาเปอร์เซีย', - slSI: 'ภาษาสโลเวเนีย', - arTN: 'ภาษาอาหรับตูนิเซีย', - }, - }, - 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: 'โทเค็นสูงสุดได้รับการอัปเดตเป็นโทเค็นสูงสุด 80% ของรุ่นปัจจุบัน {{maxToken}}', - stop_sequences: 'หยุดลําดับ', - stop_sequencesTip: 'สูงสุดสี่ลําดับที่ API จะหยุดสร้างโทเค็นเพิ่มเติม ข้อความที่ส่งคืนจะไม่มีลําดับการหยุด', - stop_sequencesPlaceholder: 'ป้อนลําดับแล้วกด Tab', - }, - tone: { - Creative: 'สร้างสรรค์', - Balanced: 'สมดุล', - Precise: 'ถูกต้อง', - Custom: 'ธรรมเนียม', - }, - addMoreModel: 'ไปที่การตั้งค่าเพื่อเพิ่มรุ่นเพิ่มเติม', - settingsLink: 'การตั้งค่าผู้ให้บริการโมเดล', - capabilities: 'ความสามารถหลายรูปแบบ', - }, - menus: { - status: 'Beta', - explore: 'สํารวจ', - apps: 'สตูดิโอ', - plugins: 'ปลั๊กอิน', - pluginsTips: 'รวมปลั๊กอินของบุคคลที่สามหรือสร้างปลั๊กอิน AI ที่เข้ากันได้กับ ChatGPT', - datasets: 'ความรู้', - datasetsTips: 'เร็ว ๆ นี้: นําเข้าข้อมูลข้อความของคุณเองหรือเขียนข้อมูลแบบเรียลไทม์ผ่าน Webhook เพื่อปรับปรุงบริบท LLM', - newApp: 'แอพใหม่', - newDataset: 'สร้างความรู้', - tools: 'เครื่อง มือ', - exploreMarketplace: 'สํารวจ Marketplace', - appDetail: 'รายละเอียดแอป', - account: 'บัญชี', - }, - userProfile: { - settings: 'การตั้งค่า', - emailSupport: 'การสนับสนุนทางอีเมล', - workspace: 'พื้นที่', - createWorkspace: 'สร้างพื้นที่ทํางาน', - helpCenter: 'วิธีใช้', - roadmap: 'แผนงาน', - community: 'ชุมชน', - about: 'ประมาณ', - logout: 'ออกจากระบบ', - github: 'GitHub', - compliance: 'การปฏิบัติตามข้อกำหนด', - support: 'การสนับสนุน', - contactUs: 'ติดต่อเรา', - forum: 'ฟอรั่ม', - }, - settings: { - accountGroup: 'ทั่วไป', - workplaceGroup: 'พื้นที่', - account: 'บัญชีของฉัน', - members: 'สมาชิก', - billing: 'เรียก เก็บ เงิน', - integrations: 'บูรณาการ', - language: 'ภาษา', - provider: 'ผู้ให้บริการโมเดล', - dataSource: 'แหล่งข้อมูล', - plugin: 'ปลั๊กอิน', - apiBasedExtension: 'ส่วนขยาย API', - generalGroup: 'ทั่วไป', - }, - account: { - account: 'บัญชี', - myAccount: 'บัญชีของฉัน', - studio: 'Dify สตูดิโอ', - avatar: 'อวตาร', - name: 'ชื่อ', - email: 'อีเมล', - password: 'รหัสผ่าน', - passwordTip: 'คุณสามารถตั้งรหัสผ่านถาวรได้หากคุณไม่ต้องการใช้รหัสเข้าสู่ระบบชั่วคราว', - setPassword: 'ตั้งรหัสผ่าน', - resetPassword: 'รีเซ็ตรหัสผ่าน', - currentPassword: 'รหัสผ่านปัจจุบัน', - newPassword: 'รหัสผ่านใหม่', - confirmPassword: 'ยืนยันรหัสผ่าน', - notEqual: 'รหัสผ่านสองรหัสผ่านแตกต่างกัน', - langGeniusAccount: 'บัญชี Dify', - langGeniusAccountTip: 'บัญชี Dify และข้อมูลผู้ใช้ที่เกี่ยวข้อง', - editName: 'แก้ไขชื่อ', - showAppLength: 'แสดง {{length}} แอป', - delete: 'ลบบัญชี', - deleteTip: 'การลบบัญชีของคุณจะเป็นการลบข้อมูลทั้งหมดของคุณอย่างถาวรและไม่สามารถกู้คืนได้', - deletePrivacyLinkTip: 'สําหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีที่เราจัดการกับข้อมูลของคุณ โปรดดูที่', - deletePrivacyLink: 'นโยบายความเป็นส่วนตัว', - deleteLabel: 'เพื่อยืนยัน โปรดพิมพ์อีเมลของคุณด้านล่าง', - deletePlaceholder: 'กรุณากรอกอีเมลของคุณ', - sendVerificationButton: 'ส่งรหัสยืนยัน', - verificationLabel: 'รหัสยืนยัน', - verificationPlaceholder: 'วางรหัส 6 หลัก', - permanentlyDeleteButton: 'ลบบัญชีอย่างถาวร', - feedbackTitle: 'การตอบสนอง', - feedbackLabel: 'บอกเราว่าทําไมคุณถึงลบบัญชีของคุณ', - feedbackPlaceholder: 'เสริม', - deleteSuccessTip: 'บัญชีของคุณต้องใช้เวลาในการลบให้เสร็จสิ้น เราจะส่งอีเมลถึงคุณเมื่อทุกอย่างเสร็จสิ้น', - workspaceIcon: 'ไอคอนพื้นที่ทำงาน', - editWorkspaceInfo: 'แก้ไขข้อมูลเวิร์กสเปซ', - workspaceName: 'ชื่อพื้นที่ทำงาน', - changeEmail: { - resend: 'ส่งซ้ำ', - changeTo: 'เปลี่ยนเป็น {{email}}', - sendVerifyCode: 'ส่งรหัสยืนยัน', - newEmail: 'สร้างที่อยู่อีเมลใหม่', - emailLabel: 'อีเมลใหม่', - emailPlaceholder: 'ป้อนอีเมลใหม่', - verifyEmail: 'ตรวจสอบอีเมลปัจจุบันของคุณ', - codePlaceholder: 'กรุณาวางรหัส 6 หลัก', - codeLabel: 'รหัสยืนยันตัวตน', - existingEmail: 'มีผู้ใช้ที่มีอีเมลนี้อยู่แล้ว.', - verifyNew: 'ยืนยันอีเมลใหม่ของคุณ', - content4: 'เราเพิ่งส่งรหัสยืนยันชั่วคราวไปที่ {{email}}.', - continue: 'ดำเนินต่อไป', - content2: 'อีเมลปัจจุบันของคุณคือ {{email}} รหัสยืนยันได้ถูกส่งไปยังที่อยู่อีเมลนี้แล้ว', - content3: 'กรุณาใส่อีเมลใหม่และเราจะส่งรหัสยืนยันให้คุณ', - content1: 'หากคุณดำเนินการต่อ เราจะส่งรหัสยืนยันไปยัง {{email}} เพื่อการยืนยันตัวตนใหม่อีกครั้ง.', - resendTip: 'ไม่ได้รับรหัสเหรอ?', - resendCount: 'ส่งอีกครั้งใน {{count}} วินาที', - authTip: 'เมื่ออีเมลของคุณถูกเปลี่ยนแปลง บัญชี Google หรือบัญชี GitHub ที่เชื่อมโยงกับอีเมลเก่าของคุณจะไม่สามารถเข้าสู่ระบบบัญชีนี้ได้อีกต่อไป.', - title: 'เปลี่ยนอีเมล', - unAvailableEmail: 'อีเมลนี้ไม่สามารถใช้งานได้ชั่วคราว.', - }, - }, - members: { - team: 'ทีม', - invite: 'เพิ่ม', - name: 'ชื่อ', - lastActive: 'ใช้งานล่าสุด', - role: 'บทบาท', - pending: 'รอ ', - owner: 'เจ้าของ', - admin: 'ผู้ดูแลระบบ', - adminTip: 'สามารถสร้างแอพและจัดการการตั้งค่าทีมได้', - normal: 'ปกติ', - normalTip: 'ใช้ได้เฉพาะแอพ สร้างแอพไม่ได้', - builder: 'ผู้สร้าง', - builderTip: 'สามารถสร้างและแก้ไขแอปของตัวเองได้', - editor: 'บรรณาธิการ', - editorTip: 'สามารถสร้างและแก้ไขแอปได้', - datasetOperator: 'ผู้ดูแลระบบความรู้', - datasetOperatorTip: 'สามารถจัดการฐานความรู้ได้เท่านั้น', - inviteTeamMember: 'เพิ่มสมาชิกในทีม', - inviteTeamMemberTip: 'พวกเขาสามารถเข้าถึงข้อมูลทีมของคุณได้โดยตรงหลังจากลงชื่อเข้าใช้', - emailNotSetup: 'เซิร์ฟเวอร์อีเมลไม่ได้ตั้งค่าไว้ จึงไม่สามารถส่งอีเมลเชิญได้ กรุณาแจ้งผู้ใช้เกี่ยวกับลิงก์เชิญที่จะออกหลังจากการเชิญแทน', - email: 'อีเมล', - emailInvalid: 'รูปแบบอีเมลไม่ถูกต้อง', - emailPlaceholder: 'กรุณากรอกอีเมล', - sendInvite: 'ส่งคําเชิญ', - invitedAsRole: 'ได้รับเชิญให้เป็นผู้ใช้ {{role}}', - invitationSent: 'ส่งคําเชิญแล้ว', - invitationSentTip: 'ส่งคําเชิญแล้ว และพวกเขาสามารถลงชื่อเข้าใช้ Dify เพื่อเข้าถึงข้อมูลทีมของคุณได้', - invitationLink: 'ลิงค์คําเชิญ', - failedInvitationEmails: 'ผู้ใช้ด้านล่างไม่ได้รับเชิญสําเร็จ', - ok: 'ตกลง, ได้', - removeFromTeam: 'ลบออกจากทีม', - removeFromTeamTip: 'จะลบการเข้าถึงของทีม', - setAdmin: 'ตั้งเป็นผู้ดูแลระบบ', - setMember: 'ตั้งเป็นสมาชิกสามัญ', - setBuilder: 'ตั้งเป็นผู้สร้าง', - setEditor: 'ตั้งค่าเป็นตัวแก้ไข', - disInvite: 'ยกเลิกคําเชิญ', - deleteMember: 'ลบสมาชิก', - you: '(คุณ)', - transferModal: { - resend: 'ส่งซ้ำ', - codePlaceholder: 'กรุณาวางรหัส 6 หลัก', - resendTip: 'ไม่ received รหัสใช่ไหม?', - sendVerifyCode: 'ส่งรหัสยืนยัน', - continue: 'ดำเนินต่อไป', - codeLabel: 'รหัสยืนยัน', - transferPlaceholder: 'เลือกสมาชิกในที่ทำงาน…', - transferLabel: 'โอนความเป็นเจ้าของพื้นที่ทำงานไปยัง', - transfer: 'โอนความเป็นเจ้าของพื้นที่ทำงาน', - resendCount: 'ส่งอีกครั้งใน {{count}} วินาที', - verifyEmail: 'ตรวจสอบอีเมลปัจจุบันของคุณ', - verifyContent2: 'เราจะส่งรหัสการตรวจสอบชั่วคราวไปยังอีเมลนี้เพื่อทำการยืนยันตัวตนใหม่.', - warningTip: 'คุณจะกลายเป็นสมาชิกผู้ดูแลระบบ และเจ้าของคนใหม่จะมีการควบคุมทั้งหมด', - warning: 'คุณกำลังจะโอนความเป็นเจ้าของของ "{{workspace}}" นี่จะมีผลทันทีและไม่สามารถย้อนกลับได้.', - sendTip: 'หากคุณดำเนินการต่อไป เราจะส่งรหัสการตรวจสอบไปยัง {{email}} สำหรับการตรวจสอบสิทธิ์ใหม่อีกครั้ง.', - verifyContent: 'อีเมลปัจจุบันของคุณคือ {{email}}.', - title: 'โอนความเป็นเจ้าของพื้นที่ทำงาน', - }, - transferOwnership: 'โอนความเป็นเจ้าของ', - }, - integrations: { - connected: 'เชื่อม ต่อ', - google: 'กูเกิล', - googleAccount: 'เข้าสู่ระบบด้วยบัญชี Google', - github: 'เกวบ', - githubAccount: 'เข้าสู่ระบบด้วยบัญชี GitHub', - connect: 'ติด', - }, - language: { - displayLanguage: 'ภาษาที่แสดง', - timezone: 'เขตเวลา', - }, - provider: { - apiKey: 'คีย์ API', - enterYourKey: 'ป้อนคีย์ API ของคุณที่นี่', - invalidKey: 'คีย์ OpenAI API ไม่ถูกต้อง', - validatedError: 'การตรวจสอบล้มเหลว:', - validating: 'กําลังตรวจสอบความถูกต้องของคีย์...', - saveFailed: 'บันทึกคีย์ API ล้มเหลว', - apiKeyExceedBill: 'คีย์ API นี้ไม่มีโควต้า โปรดอ่าน', - addKey: 'เพิ่มคีย์', - comingSoon: 'เร็ว ๆ นี้', - editKey: 'แก้ไข', - invalidApiKey: 'คีย์ API ไม่ถูกต้อง', - azure: { - apiBase: 'ฐาน API', - apiBasePlaceholder: 'URL ฐาน API ของปลายทาง Azure OpenAI ของคุณ', - apiKey: 'คีย์ API', - apiKeyPlaceholder: 'ป้อนคีย์ API ของคุณที่นี่', - helpTip: 'เรียนรู้บริการ Azure OpenAI', - }, - openaiHosted: { - openaiHosted: 'โฮสต์ OpenAI', - onTrial: 'ทดลองใช้', - exhausted: 'โควต้าหมด', - desc: 'บริการโฮสติ้ง OpenAI ที่ให้บริการโดย Dify ช่วยให้คุณใช้โมเดลต่างๆ เช่น GPT-3.5 ก่อนที่โควต้าการทดลองใช้ของคุณจะหมด คุณจําเป็นต้องตั้งค่าผู้ให้บริการรุ่นอื่นๆ', - callTimes: 'เวลาโทร', - usedUp: 'โควต้าทดลองใช้หมด เพิ่มผู้ให้บริการโมเดลของตัวเอง', - useYourModel: 'ปัจจุบันใช้ผู้ให้บริการโมเดลของตัวเอง', - close: 'ปิด', - }, - anthropicHosted: { - anthropicHosted: 'Claude มานุษยวิทยา', - onTrial: 'ทดลองใช้', - exhausted: 'โควต้าหมด', - desc: 'โมเดลที่ทรงพลังซึ่งเก่งในงานที่หลากหลายตั้งแต่บทสนทนาที่ซับซ้อนและการสร้างเนื้อหาที่สร้างสรรค์ไปจนถึงคําแนะนําโดยละเอียด', - callTimes: 'เวลาโทร', - usedUp: 'โควต้าทดลองใช้หมด เพิ่มผู้ให้บริการโมเดลของตัวเอง', - useYourModel: 'ปัจจุบันใช้ผู้ให้บริการโมเดลของตัวเอง', - close: 'ปิด', - trialQuotaTip: 'โควต้าการทดลองใช้ Anthropic ของคุณจะหมดอายุในวันที่ 2025/03/11 และจะไม่สามารถใช้งานได้อีกต่อไปหลังจากนั้นโปรดใช้มันให้ทันเวลา', - }, - anthropic: { - using: 'ความสามารถในการฝังกําลังใช้', - enableTip: 'ในการเปิดใช้งานโมเดล Anthropic คุณต้องผูกกับ OpenAI หรือ Azure OpenAI Service ก่อน', - notEnabled: 'ไม่ได้เปิดใช้งาน', - keyFrom: 'รับคีย์ API ของคุณจาก Anthropic', - }, - encrypted: { - front: 'คีย์ API ของคุณจะถูกเข้ารหัสและจัดเก็บโดยใช้', - back: 'เทคโนโลยี ', - }, - }, - modelProvider: { - notConfigured: 'โมเดลระบบยังไม่ได้รับการกําหนดค่าอย่างสมบูรณ์ และฟังก์ชันบางอย่างอาจไม่พร้อมใช้งาน', - systemModelSettings: 'การตั้งค่ารุ่นระบบ', - systemModelSettingsLink: 'เหตุใดจึงจําเป็นต้องตั้งค่าโมเดลระบบ', - selectModel: 'เลือกรุ่นของคุณ', - setupModelFirst: 'โปรดตั้งค่าโมเดลของคุณก่อน', - systemReasoningModel: { - key: 'แบบจําลองการให้เหตุผลของระบบ', - tip: 'ตั้งค่าโมเดลการอนุมานเริ่มต้นที่จะใช้สําหรับการสร้างแอปพลิเคชัน ตลอดจนคุณลักษณะต่างๆ เช่น การสร้างชื่อบทสนทนาและคําแนะนําคําถามถัดไปจะใช้โมเดลการอนุมานเริ่มต้นด้วย', - }, - embeddingModel: { - key: 'โมเดลการฝัง', - tip: 'ตั้งค่าโมเดลเริ่มต้นสําหรับการประมวลผลการฝังเอกสารของความรู้ ทั้งการดึงข้อมูลและการนําเข้าความรู้ใช้โมเดลการฝังนี้สําหรับการประมวลผลแบบเวกเตอร์ การสลับจะทําให้มิติเวกเตอร์ระหว่างความรู้ที่นําเข้าและคําถามไม่สอดคล้องกัน เพื่อหลีกเลี่ยงความล้มเหลวในการดึงข้อมูล โปรดอย่าเปลี่ยนรุ่นนี้ตามต้องการ', - required: 'จําเป็นต้องมีแบบจําลองการฝัง', - }, - speechToTextModel: { - key: 'โมเดลคําพูดเป็นข้อความ', - tip: 'ตั้งค่าโมเดลเริ่มต้นสําหรับการป้อนข้อมูลคําพูดเป็นข้อความในการสนทนา', - }, - ttsModel: { - key: 'โมเดลการแปลงข้อความเป็นคําพูด', - tip: 'ตั้งค่าโมเดลเริ่มต้นสําหรับการป้อนข้อมูลเป็นข้อความเป็นคําพูดในการสนทนา', - }, - rerankModel: { - key: 'จัดอันดับโมเดลใหม่', - tip: 'โมเดล Rerank จะจัดลําดับรายการเอกสารผู้สมัครใหม่ตามการจับคู่ความหมายกับการสืบค้นของผู้ใช้ ซึ่งช่วยปรับปรุงผลลัพธ์ของการจัดอันดับความหมาย', - }, - apiKey: 'คีย์ API', - quota: 'โควตา', - searchModel: 'ค้นหารุ่น', - noModelFound: 'ไม่พบแบบจําลองสําหรับ {{model}}', - models: 'รุ่น', - showMoreModelProvider: 'แสดงผู้ให้บริการรุ่นเพิ่มเติม', - selector: { - tip: 'รุ่นนี้ถูกลบออกแล้ว โปรดเพิ่มรุ่นหรือเลือกรุ่นอื่น', - emptyTip: 'ไม่มีรุ่นที่พร้อมใช้งาน', - emptySetting: 'โปรดไปที่การตั้งค่าเพื่อกําหนดค่า', - rerankTip: 'โปรดตั้งค่าโมเดล Rerank', - }, - card: { - quota: 'โควตา', - onTrial: 'ทดลองใช้', - paid: 'จ่าย', - quotaExhausted: 'โควต้าหมด', - callTimes: 'เวลาโทร', - tokens: 'โท เค็น', - buyQuota: 'ซื้อโควต้า', - priorityUse: 'ลําดับความสําคัญในการใช้งาน', - removeKey: 'ลบคีย์ API', - tip: 'ลําดับความสําคัญจะได้รับจากโควต้าที่จ่าย โควต้าทดลองใช้จะถูกใช้หลังจากโควต้าที่จ่ายหมด', - }, - item: { - deleteDesc: '{{modelName}} ถูกใช้เป็นแบบจําลองการให้เหตุผลของระบบ ฟังก์ชันบางอย่างจะไม่สามารถใช้งานได้หลังจากการลบออก กรุณายืนยัน', - freeQuota: 'โควต้าฟรี', - }, - addApiKey: 'เพิ่มคีย์ API ของคุณ', - invalidApiKey: 'คีย์ API ไม่ถูกต้อง', - encrypted: { - front: 'คีย์ API ของคุณจะถูกเข้ารหัสและจัดเก็บโดยใช้', - 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: 'ตามค่าเริ่มต้น การปรับสมดุลภาระงานจะใช้กลยุทธ์แบบ Round-robin หากเปิดใช้งานการจํากัดอัตรา จะมีการใช้ระยะเวลาคูลดาวน์ 1 นาที', - upgradeForLoadBalancing: 'อัปเกรดแผนของคุณเพื่อเปิดใช้งานการปรับสมดุลโหลด', - emptyProviderTip: 'โปรดติดตั้งผู้ให้บริการโมเดลก่อน', - discoverMore: 'ดูเพิ่มเติมใน', - emptyProviderTitle: 'ไม่ได้ตั้งค่าผู้ให้บริการโมเดล', - toBeConfigured: 'ต้องกําหนดค่า', - installProvider: 'ติดตั้งผู้ให้บริการโมเดล', - configureTip: 'ตั้งค่า api-key หรือเพิ่มโมเดลเพื่อใช้', - auth: { - apiKeyModal: { - addModel: 'เพิ่มโมเดล', - title: 'การกำหนดค่าการอนุญาตคีย์ API', - desc: 'หลังจากตั้งค่าข้อมูลประจำตัวแล้ว สมาชิกทุกคนภายในพื้นที่ทำงานสามารถใช้โมเดลนี้เมื่อจัดการแอปพลิเคชันได้', - }, - configModel: 'กำหนดโมเดล', - unAuthorized: 'ไม่ได้รับอนุญาต', - addCredential: 'เพิ่มข้อมูลรับรอง', - addNewModel: 'เพิ่มโมเดลใหม่', - authRemoved: 'ผู้แต่งถูกลบออก', - providerManaged: 'ผู้ให้บริการจัดการ', - addApiKey: 'เพิ่มคีย์ API', - apiKeys: 'คีย์ API', - modelCredentials: 'ข้อมูลรับรองโมเดล', - specifyModelCredential: 'ระบุข้อมูลประจำตัวของโมเดล', - configLoadBalancing: 'การตั้งค่าการโหลดสมดุล', - addModelCredential: 'เพิ่มข้อมูลรับรองโมเดล', - authorizationError: 'ข้อผิดพลาดในการอนุญาต', - specifyModelCredentialTip: 'ใช้ข้อมูลรับรองโมเดลที่กำหนดไว้', - providerManagedTip: 'การกำหนดค่าปัจจุบันถูกโฮสต์โดยผู้ให้บริการ.', - customModelCredentialsDeleteTip: 'ข้อมูลรับรองกำลังถูกใช้งานและไม่สามารถลบได้', - addModel: 'เพิ่มรุ่น', - removeModel: 'ลบโมเดล', - manageCredentials: 'จัดการข้อมูลประจําตัว', - modelCredential: 'ข้อมูลประจําตัวของรุ่น', - editModelCredential: 'แก้ไขข้อมูลประจําตัวของโมเดล', - selectModelCredential: 'เลือกข้อมูลประจําตัวของโมเดล', - customModelCredentials: 'ข้อมูลประจําตัวของโมเดลแบบกําหนดเอง', - addNewModelCredential: 'เพิ่มข้อมูลประจําตัวของโมเดลใหม่', - }, - parametersInvalidRemoved: 'บางพารามิเตอร์ไม่ถูกต้องและถูกนำออก', - installDataSourceProvider: 'ติดตั้งผู้ให้บริการแหล่งข้อมูล', - }, - dataSource: { - add: 'เพิ่มแหล่งข้อมูล', - connect: 'ติด', - configure: 'กําหนดค่า', - notion: { - title: 'แนวคิด', - description: 'การใช้ Notion เป็นแหล่งข้อมูลสําหรับความรู้', - connectedWorkspace: 'พื้นที่ทํางานที่เชื่อมต่อ', - addWorkspace: 'เพิ่มพื้นที่ทํางาน', - connected: 'เชื่อม ต่อ', - disconnected: 'เชื่อม ต่อ', - changeAuthorizedPages: 'เปลี่ยนหน้าที่ได้รับอนุญาต', - pagesAuthorized: 'เพจที่ได้รับอนุญาต', - sync: 'ซิงค์', - remove: 'ถอด', - selector: { - pageSelected: 'หน้าที่เลือก', - searchPages: 'หน้าค้นหา...', - noSearchResult: 'ไม่มีผลการค้นหา', - addPages: 'เพิ่มหน้า', - preview: 'ดูตัวอย่าง', - }, - integratedAlert: 'Notion ถูกผสานผ่านข้อมูลประจำตัวภายใน ไม่จำเป็นต้องทำการอนุญาตใหม่อีกครั้ง.', - }, - website: { - title: 'เว็บไซต์', - description: 'นําเข้าเนื้อหาจากเว็บไซต์โดยใช้โปรแกรมรวบรวมข้อมูลเว็บ', - with: 'กับ', - configuredCrawlers: 'โปรแกรมรวบรวมข้อมูลที่กําหนดค่าไว้', - active: 'กระปรี้กระเปร่า', - inactive: 'เกียจคร้าน', - }, - }, - plugin: { - serpapi: { - apiKey: 'คีย์ API', - apiKeyPlaceholder: 'ป้อนคีย์ API ของคุณ', - keyFrom: 'รับคีย์ SerpAPI ของคุณจากหน้าบัญชี SerpAPI', - }, - }, - apiBasedExtension: { - title: 'ส่วนขยาย API ให้การจัดการ API แบบรวมศูนย์ ทําให้การกําหนดค่าง่ายขึ้นเพื่อให้ใช้งานได้ง่ายในแอปพลิเคชันของ Dify', - link: 'เรียนรู้วิธีพัฒนาส่วนขยาย API ของคุณเอง', - add: 'เพิ่มส่วนขยาย API', - selector: { - title: 'ส่วนขยาย API', - placeholder: 'โปรดเลือกส่วนขยาย API', - manage: 'จัดการส่วนขยาย API', - }, - modal: { - title: 'เพิ่มส่วนขยาย API', - editTitle: 'แก้ไขส่วนขยาย API', - name: { - title: 'ชื่อ', - placeholder: 'กรุณากรอกชื่อ', - }, - apiEndpoint: { - title: 'ปลายทาง API', - placeholder: 'โปรดป้อนปลายทาง API', - }, - apiKey: { - title: 'คีย์ API', - placeholder: 'กรุณาป้อนคีย์ API', - lengthError: 'ความยาวคีย์ API ต้องไม่น้อยกว่า 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: 'แอปที่เชื่อมโยง', - noRelatedApp: 'ไม่มีแอปที่เชื่อมโยง', - pipeline: 'ท่อ', - }, - voiceInput: { - speaking: 'พูดเดี๋ยวนี้...', - converting: 'กําลังแปลงเป็นข้อความ...', - notAllow: 'ไม่ได้รับอนุญาตไมโครโฟน', - }, - modelName: { - 'gpt-3.5-turbo': 'GPT-3.5-เทอร์โบ', - 'gpt-3.5-turbo-16k': 'GPT-3.5-เทอร์โบ-16K', - 'gpt-4': 'จีพีที-4', - 'gpt-4-32k': 'จีทีพี-4-32 เค', - 'text-davinci-003': 'ข้อความ-Davinci-003', - 'text-embedding-ada-002': 'การฝังข้อความ-ADA-002', - 'whisper-1': 'กระซิบ-1', - 'claude-instant-1': 'Claude-Instant', - 'claude-2': 'Claude-2 (โคลด-2)', - }, - chat: { - renameConversation: 'เปลี่ยนชื่อการสนทนา', - conversationName: 'ชื่อการสนทนา', - conversationNamePlaceholder: 'กรุณากรอกชื่อการสนทนา', - conversationNameCanNotEmpty: 'ต้องมีชื่อการสนทนา', - citation: { - title: 'อ้าง อิง', - linkToDataset: 'ลิงค์สู่ความรู้', - characters: 'อักขระ:', - hitCount: 'จํานวนการดึงข้อมูล:', - vectorHash: 'แฮชเวกเตอร์:', - hitScore: 'คะแนนการดึงข้อมูล:', - }, - inputPlaceholder: 'พูดคุยกับบอท', - thought: 'ความคิด', - thinking: 'ความคิด ', - resend: 'ส่งอีกครั้ง', - }, - 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: 'อัปโหลดรูปภาพ', - }, - fileUploader: { - uploadFromComputer: 'อัปโหลดในเครื่อง', - pasteFileLink: 'วางลิงค์ไฟล์', - pasteFileLinkInputPlaceholder: 'ป้อน URL...', - uploadFromComputerReadError: 'การอ่านไฟล์ล้มเหลว โปรดลองอีกครั้ง', - uploadFromComputerUploadError: 'อัปโหลดไฟล์ล้มเหลว โปรดอัปโหลดอีกครั้ง', - uploadFromComputerLimit: 'อัปโหลด {{type}} ต้องไม่เกิน {{size}}', - pasteFileLinkInvalid: 'ลิงก์ไฟล์ไม่ถูกต้อง', - fileExtensionNotSupport: 'ไม่รองรับนามสกุลไฟล์', - fileExtensionBlocked: 'ประเภทไฟล์นี้ถูกบล็อกด้วยเหตุผลด้านความปลอดภัย', - uploadDisabled: 'การอัปโหลดไฟล์ถูกปิดใช้งาน', - }, - tag: { - placeholder: 'แท็กทั้งหมด', - addNew: 'เพิ่มแท็กใหม่', - noTag: 'ไม่มีแท็ก', - noTagYet: 'ยังไม่มีแท็ก', - addTag: 'เพิ่มแท็ก', - editTag: 'แก้ไขแท็ก', - manageTags: 'จัดการแท็ก', - selectorPlaceholder: 'พิมพ์เพื่อค้นหาหรือสร้าง', - create: 'สร้าง', - delete: 'ลบแท็ก', - deleteTip: 'แท็กกําลังถูกใช้ลบออก?', - created: 'สร้างแท็กสําเร็จ', - failed: 'การสร้างแท็กล้มเหลว', - }, - license: { - expiring: 'หมดอายุในหนึ่งวัน', - expiring_plural: 'หมดอายุใน {{count}} วัน', - unlimited: 'ไม่มีขีดจำกัด', - }, - pagination: { - perPage: 'รายการต่อหน้า', - }, - theme: { - dark: 'มืด', - theme: 'ธีม', - auto: 'ระบบ', - light: 'แสง', - }, - compliance: { - professionalUpgradeTooltip: 'ใช้ได้เฉพาะแผนทีมหรือสูงกว่าเท่านั้น.', - gdpr: 'GDPR DPA', - sandboxUpgradeTooltip: 'มีให้บริการเฉพาะกับแผนการใช้งานแบบมืออาชีพหรือทีมเท่านั้น.', - iso27001: 'การรับรอง ISO 27001:2022', - soc2Type2: 'รายงาน SOC 2 Type II', - soc2Type1: 'รายงาน SOC 2 ประเภท I', - }, - imageInput: { - dropImageHere: 'วางภาพของคุณที่นี่ หรือ', - browse: 'ท่องเว็บ', - supportedFormats: 'รองรับ PNG, JPG, JPEG, WEBP และ GIF', - }, - you: 'คุณ', - avatar: { - deleteTitle: 'ลบอวตาร', - deleteDescription: 'คุณแน่ใจหรือไม่ว่าต้องการลบรูปโปรไฟล์ของคุณ? บัญชีของคุณจะใช้รูปโปรไฟล์เริ่มต้นตามค่าเริ่มต้น.', - }, - feedback: { - content: 'เนื้อหาข้อเสนอแนะ', - title: 'ให้ข้อเสนอแนะ', - placeholder: 'กรุณาบรรยายสิ่งที่ผิดพลาดหรือวิธีที่เราสามารถปรับปรุงได้...', - subtitle: 'กรุณาบอกเราว่าเกิดอะไรขึ้นผิดพลาดกับการตอบนี้', - }, - label: { - optional: '(ไม่บังคับ)', - }, - noData: 'ไม่มีข้อมูล', - dynamicSelect: { - error: 'การโหลดตัวเลือกล้มเหลว', - noData: 'ไม่มีตัวเลือก available', - loading: 'กำลังโหลดตัวเลือก...', - selected: '{{count}} ที่ถูกเลือก', - }, -} - -export default translation diff --git a/web/i18n/th-TH/custom.json b/web/i18n/th-TH/custom.json new file mode 100644 index 0000000000..a23af2a1c6 --- /dev/null +++ b/web/i18n/th-TH/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "กำหนด เอง", + "upgradeTip": { + "prefix": "อัปเกรดแผนของคุณเป็น", + "suffix": "ปรับแต่งแบรนด์ของคุณ", + "des": "อัปเกรดแผนของคุณเพื่อปรับแต่งแบรนด์ของคุณ", + "title": "อัปเกรดแผนของคุณ" + }, + "webapp": { + "title": "ปรับแต่งแบรนด์ web app", + "removeBrand": "ลบ ขับเคลื่อนโดย Dify", + "changeLogo": "การเปลี่ยนแปลงที่ขับเคลื่อนโดยภาพลักษณ์ของแบรนด์", + "changeLogoTip": "รูปแบบ SVG หรือ PNG ที่มีขนาดขั้นต่ํา 40x40px" + }, + "app": { + "title": "ปรับแต่งแบรนด์ส่วนหัวของแอป", + "changeLogoTip": "รูปแบบ SVG หรือ PNG ที่มีขนาดขั้นต่ํา 80x80px" + }, + "upload": "อัปโหลด", + "uploading": "อัป โหลด", + "uploadedFail": "อัปโหลดรูปภาพล้มเหลวโปรดอัปโหลดใหม่", + "change": "เปลี่ยน", + "apply": "ใช้", + "restore": "คืนค่าเริ่มต้น", + "customize": { + "contactUs": "ติดต่อเรา", + "prefix": "หากต้องการปรับแต่งโลโก้แบรนด์ภายในแอพ โปรด", + "suffix": "เพื่ออัปเกรดเป็นรุ่น Enterprise" + } +} diff --git a/web/i18n/th-TH/custom.ts b/web/i18n/th-TH/custom.ts deleted file mode 100644 index 41a0441988..0000000000 --- a/web/i18n/th-TH/custom.ts +++ /dev/null @@ -1,32 +0,0 @@ -const translation = { - custom: 'กำหนด เอง', - upgradeTip: { - prefix: 'อัปเกรดแผนของคุณเป็น', - suffix: 'ปรับแต่งแบรนด์ของคุณ', - des: 'อัปเกรดแผนของคุณเพื่อปรับแต่งแบรนด์ของคุณ', - title: 'อัปเกรดแผนของคุณ', - }, - webapp: { - title: 'ปรับแต่งแบรนด์ web app', - removeBrand: 'ลบ ขับเคลื่อนโดย Dify', - 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 diff --git a/web/i18n/th-TH/dataset-creation.json b/web/i18n/th-TH/dataset-creation.json new file mode 100644 index 0000000000..82ffc5e290 --- /dev/null +++ b/web/i18n/th-TH/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "ความรู้" + }, + "one": "เลือกแหล่งข้อมูล", + "two": "การประมวลผลและการทําความสะอาดข้อความล่วงหน้า", + "three": "ดําเนินการและเสร็จสิ้น" + }, + "error": { + "unavailable": "ความรู้นี้ไม่มี" + }, + "firecrawl": { + "configFirecrawl": "กําหนดค่า 🔥Firecrawl", + "apiKeyPlaceholder": "คีย์ API จาก firecrawl.dev", + "getApiKeyLinkText": "รับคีย์ API ของคุณจาก firecrawl.dev" + }, + "jinaReader": { + "configJinaReader": "กําหนดค่า Jina Reader", + "apiKeyPlaceholder": "คีย์ API จาก jina.ai", + "getApiKeyLinkText": "รับคีย์ API ฟรีได้ที่ jina.ai" + }, + "stepOne": { + "filePreview": "ตัวอย่างไฟล์", + "pagePreview": "ตัวอย่างหน้า", + "dataSourceType": { + "file": "นําเข้าจากไฟล์", + "notion": "ซิงค์จาก Notion", + "web": "ซิงค์จากเว็บไซต์" + }, + "uploader": { + "title": "อัปโหลดไฟล์", + "button": "ลากและวางไฟล์หรือโฟลเดอร์หรือ", + "buttonSingleFile": "ลากและวางไฟล์หรือ", + "browse": "เล็ม", + "tip": "รองรับ {{supportTypes}} สูงสุด {{size}}MB แต่ละตัว", + "validation": { + "typeError": "ไม่รองรับประเภทไฟล์", + "size": "ไฟล์ใหญ่เกินไป สูงสุดคือ {{size}}MB", + "count": "ไม่รองรับหลายไฟล์", + "filesNumber": "คุณถึงขีดจํากัดการอัปโหลดเป็นชุดของ {{filesNumber}} แล้ว" + }, + "cancel": "ยกเลิก", + "change": "เปลี่ยน", + "failed": "อัปโหลดล้มเหลว" + }, + "notionSyncTitle": "ความคิดไม่เชื่อมต่อ", + "notionSyncTip": "ในการซิงค์กับ Notion ต้องสร้างการเชื่อมต่อกับ Notion ก่อน", + "connect": "ไปที่เชื่อมต่อ", + "button": "ต่อไป", + "emptyDatasetCreation": "ฉันต้องการสร้างความรู้ที่ว่างเปล่า", + "modal": { + "title": "สร้างความรู้ที่ว่างเปล่า", + "tip": "ความรู้ที่ว่างเปล่าจะไม่มีเอกสาร และคุณสามารถอัปโหลดเอกสารได้ตลอดเวลา", + "input": "ชื่อความรู้", + "placeholder": "กรุณาป้อน", + "nameNotEmpty": "ชื่อต้องไม่ว่างเปล่า", + "nameLengthInvalid": "ชื่อต้องมีอักขระระหว่าง 1 ถึง 40 ตัว", + "cancelButton": "ยกเลิก", + "confirmButton": "สร้าง", + "failed": "การสร้างล้มเหลว" + }, + "website": { + "chooseProvider": "เลือกผู้ให้บริการ", + "fireCrawlNotConfigured": "ไม่ได้กําหนดค่า Firecrawl", + "fireCrawlNotConfiguredDescription": "กําหนดค่า Firecrawl ด้วยคีย์ API เพื่อใช้งาน", + "jinaReaderNotConfigured": "ไม่ได้กําหนดค่า Jina Reader", + "jinaReaderNotConfiguredDescription": "ตั้งค่า Jina Reader โดยป้อนคีย์ API ฟรีเพื่อเข้าถึง", + "configure": "กําหนดค่า", + "run": "วิ่ง", + "firecrawlTitle": "แยกเนื้อหาเว็บด้วย 🔥Firecrawl", + "firecrawlDoc": "เอกสาร Firecrawl", + "jinaReaderTitle": "แปลงทั้งไซต์เป็น Markdown", + "jinaReaderDoc": "เรียนรู้เพิ่มเติมเกี่ยวกับ Jina Reader", + "jinaReaderDocLink": "https://jina.ai/reader", + "useSitemap": "ใช้แผนผังเว็บไซต์", + "useSitemapTooltip": "ทําตามแผนผังเว็บไซต์เพื่อรวบรวมข้อมูลเว็บไซต์ หากไม่เป็นเช่นนั้น Jina Reader จะรวบรวมข้อมูลซ้ําๆ ตามความเกี่ยวข้องของหน้า โดยให้หน้าเว็บน้อยลงแต่มีคุณภาพสูงกว่า", + "options": "ตัวเลือก", + "crawlSubPage": "รวบรวมข้อมูลหน้าย่อย", + "limit": "เขต", + "maxDepth": "ความลึกสูงสุด", + "excludePaths": "ยกเว้นเส้นทาง", + "includeOnlyPaths": "รวมเฉพาะเส้นทาง", + "extractOnlyMainContent": "แยกเฉพาะเนื้อหาหลัก (ไม่มีส่วนหัว การนําทาง ส่วนท้าย ฯลฯ)", + "exceptionErrorTitle": "มีข้อยกเว้นเกิดขึ้นขณะรันงานการรวบรวมข้อมูล:", + "unknownError": "ข้อผิดพลาดที่ไม่รู้จัก", + "totalPageScraped": "จํานวนหน้าที่ขูด:", + "selectAll": "เลือกทั้งหมด", + "resetAll": "รีเซ็ตทั้งหมด", + "scrapTimeInfo": "ขูด {{total}} หน้าทั้งหมดภายใน {{time}}s", + "preview": "ดูตัวอย่าง", + "maxDepthTooltip": "ความลึกสูงสุดในการรวบรวมข้อมูลเมื่อเทียบกับ URL ที่ป้อน ความลึก 0 เพียงแค่ขูดหน้าของ URL ที่ป้อนความลึก 1 ขูด url และทุกอย่างหลังจาก enteredURL + หนึ่ง / เป็นต้น", + "watercrawlTitle": "ดึงเนื้อหาจากเว็บด้วย Watercrawl", + "configureJinaReader": "ตั้งค่า Jina Reader", + "configureFirecrawl": "กำหนดค่า Firecrawl", + "configureWatercrawl": "กำหนดค่าการเข้าถึงน้ำ", + "waterCrawlNotConfiguredDescription": "กำหนดค่า Watercrawl ด้วย API key เพื่อใช้งาน.", + "watercrawlDoc": "เอกสาร Watercrawl", + "waterCrawlNotConfigured": "Watercrawl ยังไม่ได้ตั้งค่า", + "running": "กำลัง เรียก ใช้" + }, + "cancel": "ยกเลิก" + }, + "stepTwo": { + "segmentation": "การตั้งค่าก้อน", + "auto": "อัตโนมัติ", + "autoDescription": "ตั้งค่ากฎการแบ่งกลุ่มและการประมวลผลล่วงหน้าโดยอัตโนมัติ ขอแนะนําให้ผู้ใช้ที่ไม่คุ้นเคยเลือกสิ่งนี้", + "custom": "ธรรมเนียม", + "customDescription": "ปรับแต่งกฎของกลุ่ม ความยาวของกลุ่ม และกฎการประมวลผลล่วงหน้า ฯลฯ", + "separator": "ตัวคั่น", + "separatorTip": "ตัวคั่นคืออักขระที่ใช้ในการแยกข้อความ \\n\\n และ \\n เป็นตัวคั่นที่ใช้กันทั่วไปสําหรับการแยกย่อหน้าและบรรทัด เมื่อรวมกับเครื่องหมายจุลภาค (\\n\\n,\\n) ย่อหน้าจะถูกแบ่งตามบรรทัดเมื่อเกินความยาวของก้อนสูงสุด คุณยังสามารถใช้ตัวคั่นพิเศษที่กําหนดโดยตัวคุณเอง (เช่น ***)", + "separatorPlaceholder": "\\n\\n สําหรับแยกย่อหน้า \\n สําหรับแยกเส้น", + "maxLength": "ความยาวก้อนสูงสุด", + "maxLengthCheck": "ความยาวก้อนสูงสุดควรน้อยกว่า {{limit}}", + "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": "แบ่งกลุ่มโดยใช้", + "estimateCost": "กะ", + "estimateSegment": "ก้อนโดยประมาณ", + "segmentCount": "ก้อน", + "calculating": "คำนวณ ", + "fileSource": "เตรียมเอกสารล่วงหน้า", + "notionSource": "หน้าประมวลผลล่วงหน้า", + "websiteSource": "เว็บไซต์ Preprocess", + "other": "และอื่น ๆ", + "fileUnit": "แฟ้ม", + "notionUnit": "หน้า", + "webpageUnit": "หน้า", + "previousStep": "ขั้นตอนก่อนหน้า", + "nextStep": "บันทึกและประมวลผล", + "save": "บันทึกและประมวลผล", + "cancel": "ยกเลิก", + "sideTipTitle": "ทําไมต้องแบ่งกลุ่มและเตรียมกระบวนการล่วงหน้า?", + "sideTipP1": "เมื่อประมวลผลข้อมูลข้อความ การแบ่งกลุ่มและการทําความสะอาดเป็นขั้นตอนการประมวลผลล่วงหน้าที่สําคัญสองขั้นตอน", + "sideTipP2": "การแบ่งส่วนจะแบ่งข้อความยาวออกเป็นย่อหน้าเพื่อให้โมเดลเข้าใจได้ดีขึ้น สิ่งนี้ช่วยปรับปรุงคุณภาพและความเกี่ยวข้องของผลลัพธ์ของแบบจําลอง", + "sideTipP3": "การทําความสะอาดจะลบอักขระและรูปแบบที่ไม่จําเป็น ทําให้ความรู้สะอาดขึ้นและง่ายต่อการแยกวิเคราะห์", + "sideTipP4": "การแบ่งส่วนและการทําความสะอาดที่เหมาะสมช่วยปรับปรุงประสิทธิภาพของโมเดล ให้ผลลัพธ์ที่แม่นยําและมีคุณค่ามากขึ้น", + "previewTitle": "ดูตัวอย่าง", + "previewTitleButton": "ดูตัวอย่าง", + "previewButton": "การเปลี่ยนไปใช้รูปแบบ Q&A", + "previewSwitchTipStart": "การแสดงตัวอย่างส่วนปัจจุบันอยู่ในรูปแบบข้อความ การเปลี่ยนไปใช้ตัวอย่างรูปแบบคําถามและคําตอบจะ", + "previewSwitchTipEnd": "ใช้โทเค็นเพิ่มเติม", + "characters": "อักขระ", + "indexSettingTip": "หากต้องการเปลี่ยนวิธีการจัดทําดัชนีและรูปแบบการฝัง โปรดไปที่", + "retrievalSettingTip": "หากต้องการเปลี่ยนการตั้งค่าการดึงข้อมูล โปรดไปที่", + "datasetSettingLink": "การตั้งค่าความรู้", + "notAvailableForParentChild": "ไม่สามารถใช้ได้กับ ดัชนีผู้ปกครอง-ลูก", + "qaSwitchHighQualityTipContent": "ปัจจุบัน มีเพียงวิธีการจัดทําดัชนีคุณภาพสูงเท่านั้นที่รองรับการแบ่งกลุ่มรูปแบบ Q&A คุณต้องการเปลี่ยนไปใช้โหมดคุณภาพสูงหรือไม่?", + "fullDoc": "เอกสารฉบับเต็ม", + "parentChild": "พ่อแม่ลูก", + "parentChunkForContext": "Parent-chunk สําหรับบริบท", + "general": "ทั่วไป", + "parentChildChunkDelimiterTip": "ตัวคั่นคืออักขระที่ใช้ในการแยกข้อความ \\n แนะนําให้ใช้สําหรับการแยกก้อนหลักออกเป็นก้อนย่อยขนาดเล็ก คุณยังสามารถใช้ตัวคั่นพิเศษที่กําหนดโดยตัวคุณเอง", + "previewChunkCount": "{{นับ}} ก้อนโดยประมาณ", + "fullDocTip": "เอกสารทั้งหมดจะถูกใช้เป็นส่วนหลักและดึงข้อมูลโดยตรง โปรดทราบว่าด้วยเหตุผลด้านประสิทธิภาพ ข้อความที่เกิน 10,000 โทเค็นจะถูกตัดทอนโดยอัตโนมัติ", + "useQALanguage": "ก้อนโดยใช้รูปแบบ Q&A ใน", + "switch": "เปลี่ยน", + "paragraphTip": "โหมดนี้จะแบ่งข้อความออกเป็นย่อหน้าตามตัวคั่นและความยาวของกลุ่มสูงสุด โดยใช้ข้อความที่แยกเป็นส่วนหลักสําหรับการดึงข้อมูล", + "childChunkForRetrieval": "ก้อนเด็กสําหรับการดึงข้อมูล", + "parentChildDelimiterTip": "ตัวคั่นคืออักขระที่ใช้ในการแยกข้อความ \\n\\n แนะนําให้ใช้สําหรับการแบ่งเอกสารต้นฉบับออกเป็นส่วนหลักขนาดใหญ่ คุณยังสามารถใช้ตัวคั่นพิเศษที่กําหนดโดยตัวคุณเอง", + "qaSwitchHighQualityTipTitle": "รูปแบบ Q&A ต้องใช้วิธีการจัดทําดัชนีคุณภาพสูง", + "highQualityTip": "เมื่อฝังในโหมดคุณภาพสูงเสร็จแล้ว จะไม่สามารถเปลี่ยนกลับเป็นโหมดประหยัดได้", + "generalTip": "โหมดการแบ่งกลุ่มข้อความทั่วไป กลุ่มที่ดึงและเรียกคืนจะเหมือนกัน", + "previewChunkTip": "คลิกปุ่ม 'Preview Chunk' ทางด้านซ้ายเพื่อโหลดตัวอย่าง", + "previewChunk": "ดูตัวอย่าง Chunk", + "notAvailableForQA": "ไม่สามารถใช้ได้กับ Q&A Index", + "paragraph": "วรรค", + "parentChildTip": "เมื่อใช้โหมดผู้ปกครอง-รอง child-chunk จะใช้สําหรับการดึงข้อมูล และ parent-chunk จะใช้สําหรับการเรียกคืนเป็นบริบท", + "qaTip": "เมื่อใช้ข้อมูล Q&A ที่มีโครงสร้าง คุณสามารถสร้างเอกสารที่จับคู่คําถามกับคําตอบได้ เอกสารเหล่านี้ได้รับการจัดทําดัชนีตามส่วนคําถาม ทําให้ระบบสามารถดึงคําตอบที่เกี่ยวข้องตามความคล้ายคลึงกันของคําถาม" + }, + "stepThree": { + "creationTitle": "🎉 สร้างความรู้", + "creationContent": "เราตั้งชื่อความรู้โดยอัตโนมัติ คุณสามารถแก้ไขได้ตลอดเวลา", + "label": "ชื่อความรู้", + "additionTitle": "🎉 อัปโหลดเอกสาร", + "additionP1": "เอกสารถูกอัปโหลดไปยังความรู้แล้ว", + "additionP2": "คุณสามารถค้นหาได้ในรายการเอกสารของความรู้", + "stop": "หยุดการประมวลผล", + "resume": "ดําเนินการต่อ", + "navTo": "ไปที่เอกสาร", + "sideTipTitle": "อะไรต่อไป", + "sideTipContent": "หลังจากที่เอกสารเสร็จสิ้นการจัดทําดัชนี ความรู้สามารถรวมเข้ากับแอปพลิเคชันเป็นบริบท คุณสามารถค้นหาการตั้งค่าบริบทในหน้าการประสานงานพร้อมท์ คุณยังสามารถสร้างเป็นปลั๊กอินการจัดทําดัชนี ChatGPT อิสระสําหรับการเผยแพร่", + "modelTitle": "คุณแน่ใจหรือว่าจะหยุดฝัง?", + "modelContent": "หากคุณต้องการดําเนินการต่อในภายหลัง คุณจะดําเนินการต่อจากจุดที่คุณค้างไว้", + "modelButtonConfirm": "ยืนยัน", + "modelButtonCancel": "ยกเลิก" + }, + "otherDataSource": { + "learnMore": "ศึกษาเพิ่มเติม", + "title": "เชื่อมต่อกับแหล่งข้อมูลอื่นใช่ไหม", + "description": "ปัจจุบัน ฐานความรู้ของ Dify มีแหล่งข้อมูลที่จํากัดเท่านั้น การมีส่วนร่วมในแหล่งข้อมูลในฐานความรู้ Dify เป็นวิธีที่ยอดเยี่ยมในการช่วยเพิ่มความยืดหยุ่นและพลังของแพลตฟอร์มสําหรับผู้ใช้ทุกคน คู่มือการมีส่วนร่วมของเราทําให้ง่ายต่อการเริ่มต้นใช้งาน โปรดคลิกที่ลิงค์ด้านล่างเพื่อเรียนรู้เพิ่มเติม" + }, + "watercrawl": { + "configWatercrawl": "กำหนด Watercrawl", + "getApiKeyLinkText": "รับคีย์ API ของคุณจาก watercrawl.dev", + "apiKeyPlaceholder": "คีย์ API จาก watercrawl.dev" + } +} diff --git a/web/i18n/th-TH/dataset-creation.ts b/web/i18n/th-TH/dataset-creation.ts deleted file mode 100644 index 0424fd8d6e..0000000000 --- a/web/i18n/th-TH/dataset-creation.ts +++ /dev/null @@ -1,217 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: 'ความรู้', - }, - one: 'เลือกแหล่งข้อมูล', - two: 'การประมวลผลและการทําความสะอาดข้อความล่วงหน้า', - three: 'ดําเนินการและเสร็จสิ้น', - }, - error: { - unavailable: 'ความรู้นี้ไม่มี', - }, - firecrawl: { - configFirecrawl: 'กําหนดค่า 🔥Firecrawl', - apiKeyPlaceholder: 'คีย์ API จาก firecrawl.dev', - getApiKeyLinkText: 'รับคีย์ API ของคุณจาก firecrawl.dev', - }, - jinaReader: { - configJinaReader: 'กําหนดค่า Jina Reader', - apiKeyPlaceholder: 'คีย์ API จาก jina.ai', - getApiKeyLinkText: 'รับคีย์ API ฟรีได้ที่ jina.ai', - }, - stepOne: { - filePreview: 'ตัวอย่างไฟล์', - pagePreview: 'ตัวอย่างหน้า', - dataSourceType: { - file: 'นําเข้าจากไฟล์', - notion: 'ซิงค์จาก Notion', - web: 'ซิงค์จากเว็บไซต์', - }, - uploader: { - title: 'อัปโหลดไฟล์', - button: 'ลากและวางไฟล์หรือโฟลเดอร์หรือ', - buttonSingleFile: 'ลากและวางไฟล์หรือ', - browse: 'เล็ม', - tip: 'รองรับ {{supportTypes}} สูงสุด {{size}}MB แต่ละตัว', - validation: { - typeError: 'ไม่รองรับประเภทไฟล์', - size: 'ไฟล์ใหญ่เกินไป สูงสุดคือ {{size}}MB', - count: 'ไม่รองรับหลายไฟล์', - filesNumber: 'คุณถึงขีดจํากัดการอัปโหลดเป็นชุดของ {{filesNumber}} แล้ว', - }, - cancel: 'ยกเลิก', - change: 'เปลี่ยน', - failed: 'อัปโหลดล้มเหลว', - }, - notionSyncTitle: 'ความคิดไม่เชื่อมต่อ', - notionSyncTip: 'ในการซิงค์กับ Notion ต้องสร้างการเชื่อมต่อกับ Notion ก่อน', - connect: 'ไปที่เชื่อมต่อ', - button: 'ต่อไป', - emptyDatasetCreation: 'ฉันต้องการสร้างความรู้ที่ว่างเปล่า', - modal: { - title: 'สร้างความรู้ที่ว่างเปล่า', - tip: 'ความรู้ที่ว่างเปล่าจะไม่มีเอกสาร และคุณสามารถอัปโหลดเอกสารได้ตลอดเวลา', - input: 'ชื่อความรู้', - placeholder: 'กรุณาป้อน', - nameNotEmpty: 'ชื่อต้องไม่ว่างเปล่า', - nameLengthInvalid: 'ชื่อต้องมีอักขระระหว่าง 1 ถึง 40 ตัว', - cancelButton: 'ยกเลิก', - confirmButton: 'สร้าง', - failed: 'การสร้างล้มเหลว', - }, - website: { - chooseProvider: 'เลือกผู้ให้บริการ', - fireCrawlNotConfigured: 'ไม่ได้กําหนดค่า Firecrawl', - fireCrawlNotConfiguredDescription: 'กําหนดค่า Firecrawl ด้วยคีย์ API เพื่อใช้งาน', - jinaReaderNotConfigured: 'ไม่ได้กําหนดค่า Jina Reader', - jinaReaderNotConfiguredDescription: 'ตั้งค่า Jina Reader โดยป้อนคีย์ API ฟรีเพื่อเข้าถึง', - configure: 'กําหนดค่า', - run: 'วิ่ง', - firecrawlTitle: 'แยกเนื้อหาเว็บด้วย 🔥Firecrawl', - firecrawlDoc: 'เอกสาร Firecrawl', - jinaReaderTitle: 'แปลงทั้งไซต์เป็น Markdown', - jinaReaderDoc: 'เรียนรู้เพิ่มเติมเกี่ยวกับ Jina Reader', - jinaReaderDocLink: 'https://jina.ai/reader', - useSitemap: 'ใช้แผนผังเว็บไซต์', - useSitemapTooltip: 'ทําตามแผนผังเว็บไซต์เพื่อรวบรวมข้อมูลเว็บไซต์ หากไม่เป็นเช่นนั้น Jina Reader จะรวบรวมข้อมูลซ้ําๆ ตามความเกี่ยวข้องของหน้า โดยให้หน้าเว็บน้อยลงแต่มีคุณภาพสูงกว่า', - options: 'ตัวเลือก', - crawlSubPage: 'รวบรวมข้อมูลหน้าย่อย', - limit: 'เขต', - maxDepth: 'ความลึกสูงสุด', - excludePaths: 'ยกเว้นเส้นทาง', - includeOnlyPaths: 'รวมเฉพาะเส้นทาง', - extractOnlyMainContent: 'แยกเฉพาะเนื้อหาหลัก (ไม่มีส่วนหัว การนําทาง ส่วนท้าย ฯลฯ)', - exceptionErrorTitle: 'มีข้อยกเว้นเกิดขึ้นขณะรันงานการรวบรวมข้อมูล:', - unknownError: 'ข้อผิดพลาดที่ไม่รู้จัก', - totalPageScraped: 'จํานวนหน้าที่ขูด:', - selectAll: 'เลือกทั้งหมด', - resetAll: 'รีเซ็ตทั้งหมด', - scrapTimeInfo: 'ขูด {{total}} หน้าทั้งหมดภายใน {{time}}s', - preview: 'ดูตัวอย่าง', - maxDepthTooltip: 'ความลึกสูงสุดในการรวบรวมข้อมูลเมื่อเทียบกับ URL ที่ป้อน ความลึก 0 เพียงแค่ขูดหน้าของ URL ที่ป้อนความลึก 1 ขูด url และทุกอย่างหลังจาก enteredURL + หนึ่ง / เป็นต้น', - watercrawlTitle: 'ดึงเนื้อหาจากเว็บด้วย Watercrawl', - configureJinaReader: 'ตั้งค่า Jina Reader', - configureFirecrawl: 'กำหนดค่า Firecrawl', - configureWatercrawl: 'กำหนดค่าการเข้าถึงน้ำ', - waterCrawlNotConfiguredDescription: 'กำหนดค่า Watercrawl ด้วย API key เพื่อใช้งาน.', - watercrawlDoc: 'เอกสาร Watercrawl', - waterCrawlNotConfigured: 'Watercrawl ยังไม่ได้ตั้งค่า', - running: 'กำลัง เรียก ใช้', - }, - cancel: 'ยกเลิก', - }, - stepTwo: { - segmentation: 'การตั้งค่าก้อน', - auto: 'อัตโนมัติ', - autoDescription: 'ตั้งค่ากฎการแบ่งกลุ่มและการประมวลผลล่วงหน้าโดยอัตโนมัติ ขอแนะนําให้ผู้ใช้ที่ไม่คุ้นเคยเลือกสิ่งนี้', - custom: 'ธรรมเนียม', - customDescription: 'ปรับแต่งกฎของกลุ่ม ความยาวของกลุ่ม และกฎการประมวลผลล่วงหน้า ฯลฯ', - separator: 'ตัวคั่น', - separatorTip: 'ตัวคั่นคืออักขระที่ใช้ในการแยกข้อความ \\n\\n และ \\n เป็นตัวคั่นที่ใช้กันทั่วไปสําหรับการแยกย่อหน้าและบรรทัด เมื่อรวมกับเครื่องหมายจุลภาค (\\n\\n,\\n) ย่อหน้าจะถูกแบ่งตามบรรทัดเมื่อเกินความยาวของก้อนสูงสุด คุณยังสามารถใช้ตัวคั่นพิเศษที่กําหนดโดยตัวคุณเอง (เช่น ***)', - separatorPlaceholder: '\\n\\n สําหรับแยกย่อหน้า \\n สําหรับแยกเส้น', - maxLength: 'ความยาวก้อนสูงสุด', - maxLengthCheck: 'ความยาวก้อนสูงสุดควรน้อยกว่า {{limit}}', - 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: 'แบ่งกลุ่มโดยใช้', - estimateCost: 'กะ', - estimateSegment: 'ก้อนโดยประมาณ', - segmentCount: 'ก้อน', - calculating: 'คำนวณ ', - fileSource: 'เตรียมเอกสารล่วงหน้า', - notionSource: 'หน้าประมวลผลล่วงหน้า', - websiteSource: 'เว็บไซต์ Preprocess', - other: 'และอื่น ๆ', - fileUnit: 'แฟ้ม', - notionUnit: 'หน้า', - webpageUnit: 'หน้า', - previousStep: 'ขั้นตอนก่อนหน้า', - nextStep: 'บันทึกและประมวลผล', - save: 'บันทึกและประมวลผล', - cancel: 'ยกเลิก', - sideTipTitle: 'ทําไมต้องแบ่งกลุ่มและเตรียมกระบวนการล่วงหน้า?', - sideTipP1: 'เมื่อประมวลผลข้อมูลข้อความ การแบ่งกลุ่มและการทําความสะอาดเป็นขั้นตอนการประมวลผลล่วงหน้าที่สําคัญสองขั้นตอน', - sideTipP2: 'การแบ่งส่วนจะแบ่งข้อความยาวออกเป็นย่อหน้าเพื่อให้โมเดลเข้าใจได้ดีขึ้น สิ่งนี้ช่วยปรับปรุงคุณภาพและความเกี่ยวข้องของผลลัพธ์ของแบบจําลอง', - sideTipP3: 'การทําความสะอาดจะลบอักขระและรูปแบบที่ไม่จําเป็น ทําให้ความรู้สะอาดขึ้นและง่ายต่อการแยกวิเคราะห์', - sideTipP4: 'การแบ่งส่วนและการทําความสะอาดที่เหมาะสมช่วยปรับปรุงประสิทธิภาพของโมเดล ให้ผลลัพธ์ที่แม่นยําและมีคุณค่ามากขึ้น', - previewTitle: 'ดูตัวอย่าง', - previewTitleButton: 'ดูตัวอย่าง', - previewButton: 'การเปลี่ยนไปใช้รูปแบบ Q&A', - previewSwitchTipStart: 'การแสดงตัวอย่างส่วนปัจจุบันอยู่ในรูปแบบข้อความ การเปลี่ยนไปใช้ตัวอย่างรูปแบบคําถามและคําตอบจะ', - previewSwitchTipEnd: 'ใช้โทเค็นเพิ่มเติม', - characters: 'อักขระ', - indexSettingTip: 'หากต้องการเปลี่ยนวิธีการจัดทําดัชนีและรูปแบบการฝัง โปรดไปที่', - retrievalSettingTip: 'หากต้องการเปลี่ยนการตั้งค่าการดึงข้อมูล โปรดไปที่', - datasetSettingLink: 'การตั้งค่าความรู้', - notAvailableForParentChild: 'ไม่สามารถใช้ได้กับ ดัชนีผู้ปกครอง-ลูก', - qaSwitchHighQualityTipContent: 'ปัจจุบัน มีเพียงวิธีการจัดทําดัชนีคุณภาพสูงเท่านั้นที่รองรับการแบ่งกลุ่มรูปแบบ Q&A คุณต้องการเปลี่ยนไปใช้โหมดคุณภาพสูงหรือไม่?', - fullDoc: 'เอกสารฉบับเต็ม', - parentChild: 'พ่อแม่ลูก', - parentChunkForContext: 'Parent-chunk สําหรับบริบท', - general: 'ทั่วไป', - parentChildChunkDelimiterTip: 'ตัวคั่นคืออักขระที่ใช้ในการแยกข้อความ \\n แนะนําให้ใช้สําหรับการแยกก้อนหลักออกเป็นก้อนย่อยขนาดเล็ก คุณยังสามารถใช้ตัวคั่นพิเศษที่กําหนดโดยตัวคุณเอง', - previewChunkCount: '{{นับ}} ก้อนโดยประมาณ', - fullDocTip: 'เอกสารทั้งหมดจะถูกใช้เป็นส่วนหลักและดึงข้อมูลโดยตรง โปรดทราบว่าด้วยเหตุผลด้านประสิทธิภาพ ข้อความที่เกิน 10,000 โทเค็นจะถูกตัดทอนโดยอัตโนมัติ', - useQALanguage: 'ก้อนโดยใช้รูปแบบ Q&A ใน', - switch: 'เปลี่ยน', - paragraphTip: 'โหมดนี้จะแบ่งข้อความออกเป็นย่อหน้าตามตัวคั่นและความยาวของกลุ่มสูงสุด โดยใช้ข้อความที่แยกเป็นส่วนหลักสําหรับการดึงข้อมูล', - childChunkForRetrieval: 'ก้อนเด็กสําหรับการดึงข้อมูล', - parentChildDelimiterTip: 'ตัวคั่นคืออักขระที่ใช้ในการแยกข้อความ \\n\\n แนะนําให้ใช้สําหรับการแบ่งเอกสารต้นฉบับออกเป็นส่วนหลักขนาดใหญ่ คุณยังสามารถใช้ตัวคั่นพิเศษที่กําหนดโดยตัวคุณเอง', - qaSwitchHighQualityTipTitle: 'รูปแบบ Q&A ต้องใช้วิธีการจัดทําดัชนีคุณภาพสูง', - highQualityTip: 'เมื่อฝังในโหมดคุณภาพสูงเสร็จแล้ว จะไม่สามารถเปลี่ยนกลับเป็นโหมดประหยัดได้', - generalTip: 'โหมดการแบ่งกลุ่มข้อความทั่วไป กลุ่มที่ดึงและเรียกคืนจะเหมือนกัน', - previewChunkTip: 'คลิกปุ่ม \'Preview Chunk\' ทางด้านซ้ายเพื่อโหลดตัวอย่าง', - previewChunk: 'ดูตัวอย่าง Chunk', - notAvailableForQA: 'ไม่สามารถใช้ได้กับ Q&A Index', - paragraph: 'วรรค', - parentChildTip: 'เมื่อใช้โหมดผู้ปกครอง-รอง child-chunk จะใช้สําหรับการดึงข้อมูล และ parent-chunk จะใช้สําหรับการเรียกคืนเป็นบริบท', - qaTip: 'เมื่อใช้ข้อมูล Q&A ที่มีโครงสร้าง คุณสามารถสร้างเอกสารที่จับคู่คําถามกับคําตอบได้ เอกสารเหล่านี้ได้รับการจัดทําดัชนีตามส่วนคําถาม ทําให้ระบบสามารถดึงคําตอบที่เกี่ยวข้องตามความคล้ายคลึงกันของคําถาม', - }, - stepThree: { - creationTitle: '🎉 สร้างความรู้', - creationContent: 'เราตั้งชื่อความรู้โดยอัตโนมัติ คุณสามารถแก้ไขได้ตลอดเวลา', - label: 'ชื่อความรู้', - additionTitle: '🎉 อัปโหลดเอกสาร', - additionP1: 'เอกสารถูกอัปโหลดไปยังความรู้แล้ว', - additionP2: 'คุณสามารถค้นหาได้ในรายการเอกสารของความรู้', - stop: 'หยุดการประมวลผล', - resume: 'ดําเนินการต่อ', - navTo: 'ไปที่เอกสาร', - sideTipTitle: 'อะไรต่อไป', - sideTipContent: 'หลังจากที่เอกสารเสร็จสิ้นการจัดทําดัชนี ความรู้สามารถรวมเข้ากับแอปพลิเคชันเป็นบริบท คุณสามารถค้นหาการตั้งค่าบริบทในหน้าการประสานงานพร้อมท์ คุณยังสามารถสร้างเป็นปลั๊กอินการจัดทําดัชนี ChatGPT อิสระสําหรับการเผยแพร่', - modelTitle: 'คุณแน่ใจหรือว่าจะหยุดฝัง?', - modelContent: 'หากคุณต้องการดําเนินการต่อในภายหลัง คุณจะดําเนินการต่อจากจุดที่คุณค้างไว้', - modelButtonConfirm: 'ยืนยัน', - modelButtonCancel: 'ยกเลิก', - }, - otherDataSource: { - learnMore: 'ศึกษาเพิ่มเติม', - title: 'เชื่อมต่อกับแหล่งข้อมูลอื่นใช่ไหม', - description: 'ปัจจุบัน ฐานความรู้ของ Dify มีแหล่งข้อมูลที่จํากัดเท่านั้น การมีส่วนร่วมในแหล่งข้อมูลในฐานความรู้ Dify เป็นวิธีที่ยอดเยี่ยมในการช่วยเพิ่มความยืดหยุ่นและพลังของแพลตฟอร์มสําหรับผู้ใช้ทุกคน คู่มือการมีส่วนร่วมของเราทําให้ง่ายต่อการเริ่มต้นใช้งาน โปรดคลิกที่ลิงค์ด้านล่างเพื่อเรียนรู้เพิ่มเติม', - }, - watercrawl: { - configWatercrawl: 'กำหนด Watercrawl', - getApiKeyLinkText: 'รับคีย์ API ของคุณจาก watercrawl.dev', - apiKeyPlaceholder: 'คีย์ API จาก watercrawl.dev', - }, -} - -export default translation diff --git a/web/i18n/th-TH/dataset-documents.json b/web/i18n/th-TH/dataset-documents.json new file mode 100644 index 0000000000..2ab7e3ea9c --- /dev/null +++ b/web/i18n/th-TH/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "เอกสาร", + "desc": "ไฟล์ทั้งหมดของความรู้จะแสดงที่นี่ และความรู้ทั้งหมดสามารถเชื่อมโยงกับการอ้างอิง Dify หรือจัดทําดัชนีผ่านปลั๊กอินแชท", + "addFile": "เพิ่มไฟล์", + "addPages": "เพิ่มหน้า", + "addUrl": "เพิ่ม URL", + "table": { + "header": { + "fileName": "ชื่อไฟล์", + "words": "นิรุกติ", + "hitCount": "จํานวนการดึงข้อมูล", + "uploadTime": "เวลาอัปโหลด", + "status": "สถานะ", + "action": "การเคลื่อนไหว", + "chunkingMode": "โหมดก้อน" + }, + "rename": "ตั้งชื่อใหม่", + "name": "ชื่อ" + }, + "action": { + "uploadFile": "อัปโหลดไฟล์ใหม่", + "settings": "การตั้งค่ากลุ่ม", + "addButton": "เพิ่มก้อน", + "add": "เพิ่มก้อน", + "batchAdd": "เพิ่มแบทช์", + "archive": "หอจดหมายเหตุ", + "unarchive": "ยกเลิกการเก็บถาวร", + "delete": "ลบ", + "enableWarning": "ไม่สามารถเปิดใช้งานไฟล์ที่เก็บถาวรได้", + "sync": "ซิงค์", + "pause": "หยุด", + "resume": "ดำเนิน" + }, + "index": { + "enable": "เปิด", + "disable": "เก", + "all": "ทั้งหมด", + "enableTip": "สามารถจัดทําดัชนีไฟล์ได้", + "disableTip": "ไม่สามารถจัดทําดัชนีไฟล์" + }, + "status": { + "queuing": "จัด คิว", + "indexing": "ดัชนี", + "paused": "หยุดชั่วคราว", + "error": "ความผิดพลาด", + "available": "มีอยู่", + "enabled": "เปิด", + "disabled": "พิการ", + "archived": "เก็บ ถาวร" + }, + "empty": { + "title": "ยังไม่มีเอกสาร", + "upload": { + "tip": "คุณสามารถอัปโหลดไฟล์ ซิงค์จากเว็บไซต์ หรือจากแอป web เช่น Notion, GitHub เป็นต้น" + }, + "sync": { + "tip": "Dify จะดาวน์โหลดไฟล์จาก Notion ของคุณเป็นระยะและดําเนินการให้เสร็จสมบูรณ์" + } + }, + "delete": { + "title": "คุณแน่ใจหรือเปล่า ลบ?", + "content": "หากคุณต้องการดําเนินการต่อในภายหลัง คุณจะดําเนินการต่อจากจุดที่คุณค้างไว้" + }, + "batchModal": { + "title": "แบทช์เพิ่มก้อน", + "csvUploadTitle": "ลากและวางไฟล์ CSV ของคุณที่นี่ หรือ", + "browse": "เล็ม", + "tip": "ไฟล์ CSV ต้องสอดคล้องกับโครงสร้างต่อไปนี้:", + "question": "ปัญหา", + "answer": "ตอบ", + "contentTitle": "เนื้อหาก้อน", + "content": "เนื้อหา", + "template": "ดาวน์โหลดเทมเพลตที่นี่", + "cancel": "ยกเลิก", + "run": "เรียกใช้แบทช์", + "runError": "เรียกใช้ชุดงานล้มเหลว", + "processing": "ในการประมวลผลแบบแบทช์", + "completed": "นําเข้าเสร็จสมบูรณ์", + "error": "ข้อผิดพลาดในการนําเข้า", + "ok": "ตกลง, ได้" + }, + "learnMore": "ศึกษาเพิ่มเติม", + "sort": { + "uploadTime": "เวลาที่อัปโหลด", + "hitCount": "จำนวนการดึงข้อมูล" + } + }, + "metadata": { + "title": "ข้อมูลเมตา", + "desc": "การติดฉลากข้อมูลเมตาสําหรับเอกสารช่วยให้ AI สามารถเข้าถึงเอกสารได้ทันท่วงทีและเปิดเผยแหล่งที่มาของการอ้างอิงสําหรับผู้ใช้", + "dateTimeFormat": "มมมม ด, ป hh:mm A", + "docTypeSelectTitle": "โปรดเลือกประเภทเอกสาร", + "docTypeChangeTitle": "เปลี่ยนชนิดเอกสาร", + "docTypeSelectWarning": "หากชนิดเอกสารมีการเปลี่ยนแปลง ข้อมูลเมตาที่เติมในขณะนี้จะไม่ถูกเก็บรักษาไว้อีกต่อไป", + "firstMetaAction": "ไปกันเถอะ", + "placeholder": { + "add": "เพิ่ม", + "select": "เลือก" + }, + "source": { + "upload_file": "อัปโหลดไฟล์", + "notion": "ซิงค์แบบฟอร์ม Notion", + "github": "แบบฟอร์มซิงค์ Github", + "online_document": "เอกสารออนไลน์", + "local_file": "ไฟล์ท้องถิ่น", + "website_crawl": "รวบรวมข้อมูลเว็บไซต์" + }, + "type": { + "book": "หนังสือ", + "webPage": "เว็บเพจ", + "paper": "กระดาษ", + "socialMediaPost": "โพสต์บนโซเชียลมีเดีย", + "personalDocument": "เอกสารส่วนตัว", + "businessDocument": "เอกสารทางธุรกิจ", + "IMChat": "แชท IM", + "wikipediaEntry": "รายการวิกิพีเดีย", + "notion": "ซิงค์แบบฟอร์ม Notion", + "github": "แบบฟอร์มซิงค์ Github", + "technicalParameters": "พารามิเตอร์ทางเทคนิค" + }, + "field": { + "processRule": { + "processDoc": "เอกสารกระบวนการ", + "segmentRule": "กฎก้อน", + "segmentLength": "ความยาวของก้อน", + "processClean": "กระบวนการส่งข้อความที่สะอาด" + }, + "book": { + "title": "ชื่อเรื่อง", + "language": "ภาษา", + "author": "ผู้แต่ง", + "publisher": "ผู้พิมพ์", + "publicationDate": "วันที่ตีพิมพ์", + "ISBN": "ไอเอส", + "category": "ประเภท" + }, + "webPage": { + "title": "ชื่อเรื่อง", + "url": "URL", + "language": "ภาษา", + "authorPublisher": "ผู้เขียน/สํานักพิมพ์", + "publishDate": "วันที่เผยแพร่", + "topicKeywords": "หัวข้อ/คําสําคัญ", + "description": "คำอธิบาย" + }, + "paper": { + "title": "ชื่อเรื่อง", + "language": "ภาษา", + "author": "ผู้แต่ง", + "publishDate": "วันที่เผยแพร่", + "journalConferenceName": "ชื่อวารสาร/การประชุม", + "volumeIssuePage": "ปริมาณ/ฉบับ/หน้า", + "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": "ชื่อ Repo", + "repoDesc": "คําอธิบาย Repo", + "repoOwner": "เจ้าของ Repo", + "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": "การแสดงตัวอย่างย่อหน้าจะพร้อมใช้งานหลังจากการฝังเสร็จสิ้น", + "childMaxTokens": "เด็ก", + "parentMaxTokens": "พ่อแม่", + "pause": "หยุด", + "hierarchical": "พ่อแม่ลูก", + "waiting": "กำลังรอสัญญาณ..." + }, + "segment": { + "paragraphs": "ย่อหน้า", + "keywords": "คําสําคัญ", + "addKeyWord": "เพิ่มคําสําคัญ", + "keywordError": "ความยาวสูงสุดของคําหลักคือ 20", + "hitCount": "จํานวนการดึงข้อมูล", + "vectorHash": "แฮชเวกเตอร์:", + "questionPlaceholder": "เพิ่มคําถามที่นี่", + "questionEmpty": "คําถามไม่สามารถว่างเปล่าได้", + "answerPlaceholder": "เพิ่มคําตอบที่นี่", + "answerEmpty": "คําตอบไม่สามารถว่างเปล่าได้", + "contentPlaceholder": "เพิ่มเนื้อหาที่นี่", + "contentEmpty": "เนื้อหาไม่สามารถว่างเปล่าได้", + "newTextSegment": "เซ็กเมนต์ข้อความใหม่", + "newQaSegment": "ส่วนถาม & คําตอบใหม่", + "delete": "ลบส่วนนี้ ?", + "parentChunks_other": "ก้อนผู้ปกครอง", + "childChunkAdded": "เพิ่มก้อนลูก 1 ชิ้น", + "regeneratingMessage": "อาจใช้เวลาสักครู่โปรดรอสักครู่...", + "regenerationSuccessTitle": "การฟื้นฟูเสร็จสมบูรณ์", + "chunkDetail": "รายละเอียดก้อน", + "childChunk": "ก้อนเด็ก", + "chunk": "ก้อน", + "edited": "แก้ไข", + "addChunk": "เพิ่มก้อน", + "editedAt": "แก้ไขที่", + "dateTimeFormat": "MM/DD/YYYY h:mm", + "childChunks_other": "ก้อนเด็ก", + "editChildChunk": "แก้ไข Child Chunk", + "parentChunk": "ผู้ปกครอง-ก้อน", + "newChildChunk": "ก้อนเด็กใหม่", + "regenerationConfirmTitle": "คุณต้องการสร้างก้อนเด็กขึ้นมาใหม่หรือไม่?", + "chunks_other": "ก้อน", + "regeneratingTitle": "การสร้างก้อนลูกใหม่", + "regenerationConfirmMessage": "การสร้างก้อนย่อยใหม่จะเขียนทับส่วนย่อยปัจจุบัน รวมถึงก้อนที่แก้ไขแล้วและก้อนที่เพิ่มเข้ามาใหม่ การฟื้นฟูไม่สามารถยกเลิกได้", + "chunkAdded": "เพิ่ม 1 ก้อน", + "expandChunks": "ขยายก้อน", + "searchResults_zero": "ผล", + "characters_one": "อักขระ", + "empty": "ไม่พบก้อน", + "addChildChunk": "เพิ่ม Child Chunk", + "chunks_one": "ก้อน", + "clearFilter": "ล้างตัวกรอง", + "searchResults_one": "ผล", + "addAnother": "เพิ่มอีก", + "editParentChunk": "แก้ไขส่วนผู้ปกครอง", + "characters_other": "อักขระ", + "parentChunks_one": "ก้อนผู้ปกครอง", + "collapseChunks": "ยุบก้อน", + "newChunk": "ก้อนใหม่", + "editChunk": "แก้ไขก้อน", + "searchResults_other": "ผลลัพธ์", + "regenerationSuccessMessage": "คุณสามารถปิดหน้าต่างนี้ได้", + "childChunks_one": "ก้อนเด็ก", + "keywordDuplicate": "คำสำคัญมีอยู่แล้ว", + "keywordEmpty": "คีย์เวิร์ดไม่สามารถว่างเปล่าได้", + "allFilesUploaded": "ต้องอัปโหลดไฟล์ทั้งหมดก่อนบันทึก" + } +} diff --git a/web/i18n/th-TH/dataset-documents.ts b/web/i18n/th-TH/dataset-documents.ts deleted file mode 100644 index cb7a82ae89..0000000000 --- a/web/i18n/th-TH/dataset-documents.ts +++ /dev/null @@ -1,407 +0,0 @@ -const translation = { - list: { - title: 'เอกสาร', - desc: 'ไฟล์ทั้งหมดของความรู้จะแสดงที่นี่ และความรู้ทั้งหมดสามารถเชื่อมโยงกับการอ้างอิง Dify หรือจัดทําดัชนีผ่านปลั๊กอินแชท', - addFile: 'เพิ่มไฟล์', - addPages: 'เพิ่มหน้า', - addUrl: 'เพิ่ม URL', - table: { - header: { - fileName: 'ชื่อไฟล์', - words: 'นิรุกติ', - hitCount: 'จํานวนการดึงข้อมูล', - uploadTime: 'เวลาอัปโหลด', - status: 'สถานะ', - action: 'การเคลื่อนไหว', - chunkingMode: 'โหมดก้อน', - }, - rename: 'ตั้งชื่อใหม่', - name: 'ชื่อ', - }, - action: { - uploadFile: 'อัปโหลดไฟล์ใหม่', - settings: 'การตั้งค่ากลุ่ม', - addButton: 'เพิ่มก้อน', - add: 'เพิ่มก้อน', - batchAdd: 'เพิ่มแบทช์', - archive: 'หอจดหมายเหตุ', - unarchive: 'ยกเลิกการเก็บถาวร', - delete: 'ลบ', - enableWarning: 'ไม่สามารถเปิดใช้งานไฟล์ที่เก็บถาวรได้', - sync: 'ซิงค์', - pause: 'หยุด', - resume: 'ดำเนิน', - }, - index: { - enable: 'เปิด', - disable: 'เก', - all: 'ทั้งหมด', - enableTip: 'สามารถจัดทําดัชนีไฟล์ได้', - disableTip: 'ไม่สามารถจัดทําดัชนีไฟล์', - }, - status: { - queuing: 'จัด คิว', - indexing: 'ดัชนี', - paused: 'หยุดชั่วคราว', - error: 'ความผิดพลาด', - available: 'มีอยู่', - enabled: 'เปิด', - disabled: 'พิการ', - archived: 'เก็บ ถาวร', - }, - empty: { - title: 'ยังไม่มีเอกสาร', - upload: { - tip: 'คุณสามารถอัปโหลดไฟล์ ซิงค์จากเว็บไซต์ หรือจากแอป web เช่น Notion, GitHub เป็นต้น', - }, - sync: { - tip: 'Dify จะดาวน์โหลดไฟล์จาก Notion ของคุณเป็นระยะและดําเนินการให้เสร็จสมบูรณ์', - }, - }, - delete: { - title: 'คุณแน่ใจหรือเปล่า ลบ?', - content: 'หากคุณต้องการดําเนินการต่อในภายหลัง คุณจะดําเนินการต่อจากจุดที่คุณค้างไว้', - }, - batchModal: { - title: 'แบทช์เพิ่มก้อน', - csvUploadTitle: 'ลากและวางไฟล์ CSV ของคุณที่นี่ หรือ', - browse: 'เล็ม', - tip: 'ไฟล์ CSV ต้องสอดคล้องกับโครงสร้างต่อไปนี้:', - question: 'ปัญหา', - answer: 'ตอบ', - contentTitle: 'เนื้อหาก้อน', - content: 'เนื้อหา', - template: 'ดาวน์โหลดเทมเพลตที่นี่', - cancel: 'ยกเลิก', - run: 'เรียกใช้แบทช์', - runError: 'เรียกใช้ชุดงานล้มเหลว', - processing: 'ในการประมวลผลแบบแบทช์', - completed: 'นําเข้าเสร็จสมบูรณ์', - error: 'ข้อผิดพลาดในการนําเข้า', - ok: 'ตกลง, ได้', - }, - learnMore: 'ศึกษาเพิ่มเติม', - sort: { - uploadTime: 'เวลาที่อัปโหลด', - hitCount: 'จำนวนการดึงข้อมูล', - }, - }, - metadata: { - title: 'ข้อมูลเมตา', - desc: 'การติดฉลากข้อมูลเมตาสําหรับเอกสารช่วยให้ AI สามารถเข้าถึงเอกสารได้ทันท่วงทีและเปิดเผยแหล่งที่มาของการอ้างอิงสําหรับผู้ใช้', - dateTimeFormat: 'มมมม ด, ป hh:mm A', - docTypeSelectTitle: 'โปรดเลือกประเภทเอกสาร', - docTypeChangeTitle: 'เปลี่ยนชนิดเอกสาร', - docTypeSelectWarning: 'หากชนิดเอกสารมีการเปลี่ยนแปลง ข้อมูลเมตาที่เติมในขณะนี้จะไม่ถูกเก็บรักษาไว้อีกต่อไป', - firstMetaAction: 'ไปกันเถอะ', - placeholder: { - add: 'เพิ่ม', - select: 'เลือก', - }, - source: { - upload_file: 'อัปโหลดไฟล์', - notion: 'ซิงค์แบบฟอร์ม Notion', - github: 'แบบฟอร์มซิงค์ Github', - online_document: 'เอกสารออนไลน์', - local_file: 'ไฟล์ท้องถิ่น', - website_crawl: 'รวบรวมข้อมูลเว็บไซต์', - }, - type: { - book: 'หนังสือ', - webPage: 'เว็บเพจ', - paper: 'กระดาษ', - socialMediaPost: 'โพสต์บนโซเชียลมีเดีย', - personalDocument: 'เอกสารส่วนตัว', - businessDocument: 'เอกสารทางธุรกิจ', - IMChat: 'แชท IM', - wikipediaEntry: 'รายการวิกิพีเดีย', - notion: 'ซิงค์แบบฟอร์ม Notion', - github: 'แบบฟอร์มซิงค์ Github', - technicalParameters: 'พารามิเตอร์ทางเทคนิค', - }, - field: { - processRule: { - processDoc: 'เอกสารกระบวนการ', - segmentRule: 'กฎก้อน', - segmentLength: 'ความยาวของก้อน', - processClean: 'กระบวนการส่งข้อความที่สะอาด', - }, - book: { - title: 'ชื่อเรื่อง', - language: 'ภาษา', - author: 'ผู้แต่ง', - publisher: 'ผู้พิมพ์', - publicationDate: 'วันที่ตีพิมพ์', - ISBN: 'ไอเอส', - category: 'ประเภท', - }, - webPage: { - title: 'ชื่อเรื่อง', - url: 'URL', - language: 'ภาษา', - authorPublisher: 'ผู้เขียน/สํานักพิมพ์', - publishDate: 'วันที่เผยแพร่', - topicKeywords: 'หัวข้อ/คําสําคัญ', - description: 'คำอธิบาย', - }, - paper: { - title: 'ชื่อเรื่อง', - language: 'ภาษา', - author: 'ผู้แต่ง', - publishDate: 'วันที่เผยแพร่', - journalConferenceName: 'ชื่อวารสาร/การประชุม', - volumeIssuePage: 'ปริมาณ/ฉบับ/หน้า', - 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: 'ชื่อ Repo', - repoDesc: 'คําอธิบาย Repo', - repoOwner: 'เจ้าของ Repo', - 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: 'การแสดงตัวอย่างย่อหน้าจะพร้อมใช้งานหลังจากการฝังเสร็จสิ้น', - childMaxTokens: 'เด็ก', - parentMaxTokens: 'พ่อแม่', - pause: 'หยุด', - hierarchical: 'พ่อแม่ลูก', - waiting: 'กำลังรอสัญญาณ...', - }, - segment: { - paragraphs: 'ย่อหน้า', - keywords: 'คําสําคัญ', - addKeyWord: 'เพิ่มคําสําคัญ', - keywordError: 'ความยาวสูงสุดของคําหลักคือ 20', - hitCount: 'จํานวนการดึงข้อมูล', - vectorHash: 'แฮชเวกเตอร์:', - questionPlaceholder: 'เพิ่มคําถามที่นี่', - questionEmpty: 'คําถามไม่สามารถว่างเปล่าได้', - answerPlaceholder: 'เพิ่มคําตอบที่นี่', - answerEmpty: 'คําตอบไม่สามารถว่างเปล่าได้', - contentPlaceholder: 'เพิ่มเนื้อหาที่นี่', - contentEmpty: 'เนื้อหาไม่สามารถว่างเปล่าได้', - newTextSegment: 'เซ็กเมนต์ข้อความใหม่', - newQaSegment: 'ส่วนถาม & คําตอบใหม่', - delete: 'ลบส่วนนี้ ?', - parentChunks_other: 'ก้อนผู้ปกครอง', - childChunkAdded: 'เพิ่มก้อนลูก 1 ชิ้น', - regeneratingMessage: 'อาจใช้เวลาสักครู่โปรดรอสักครู่...', - regenerationSuccessTitle: 'การฟื้นฟูเสร็จสมบูรณ์', - chunkDetail: 'รายละเอียดก้อน', - childChunk: 'ก้อนเด็ก', - chunk: 'ก้อน', - edited: 'แก้ไข', - addChunk: 'เพิ่มก้อน', - editedAt: 'แก้ไขที่', - dateTimeFormat: 'MM/DD/YYYY h:mm', - childChunks_other: 'ก้อนเด็ก', - editChildChunk: 'แก้ไข Child Chunk', - parentChunk: 'ผู้ปกครอง-ก้อน', - newChildChunk: 'ก้อนเด็กใหม่', - regenerationConfirmTitle: 'คุณต้องการสร้างก้อนเด็กขึ้นมาใหม่หรือไม่?', - chunks_other: 'ก้อน', - regeneratingTitle: 'การสร้างก้อนลูกใหม่', - regenerationConfirmMessage: 'การสร้างก้อนย่อยใหม่จะเขียนทับส่วนย่อยปัจจุบัน รวมถึงก้อนที่แก้ไขแล้วและก้อนที่เพิ่มเข้ามาใหม่ การฟื้นฟูไม่สามารถยกเลิกได้', - chunkAdded: 'เพิ่ม 1 ก้อน', - expandChunks: 'ขยายก้อน', - searchResults_zero: 'ผล', - characters_one: 'อักขระ', - empty: 'ไม่พบก้อน', - addChildChunk: 'เพิ่ม Child Chunk', - chunks_one: 'ก้อน', - clearFilter: 'ล้างตัวกรอง', - searchResults_one: 'ผล', - addAnother: 'เพิ่มอีก', - editParentChunk: 'แก้ไขส่วนผู้ปกครอง', - characters_other: 'อักขระ', - parentChunks_one: 'ก้อนผู้ปกครอง', - collapseChunks: 'ยุบก้อน', - newChunk: 'ก้อนใหม่', - editChunk: 'แก้ไขก้อน', - searchResults_other: 'ผลลัพธ์', - regenerationSuccessMessage: 'คุณสามารถปิดหน้าต่างนี้ได้', - childChunks_one: 'ก้อนเด็ก', - keywordDuplicate: 'คำสำคัญมีอยู่แล้ว', - keywordEmpty: 'คีย์เวิร์ดไม่สามารถว่างเปล่าได้', - allFilesUploaded: 'ต้องอัปโหลดไฟล์ทั้งหมดก่อนบันทึก', - }, -} - -export default translation diff --git a/web/i18n/th-TH/dataset-hit-testing.json b/web/i18n/th-TH/dataset-hit-testing.json new file mode 100644 index 0000000000..aec4ab8c80 --- /dev/null +++ b/web/i18n/th-TH/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "การทดสอบการดึงข้อมูล", + "settingTitle": "การตั้งค่าการดึงข้อมูล", + "desc": "ทดสอบเอฟเฟกต์การตีของความรู้ตามข้อความแบบสอบถามที่กําหนด", + "dateTimeFormat": "MM/DD/YYYY hh:mm A", + "table": { + "header": { + "source": "ที่มา", + "time": "เวลา", + "queryContent": "เนื้อหาคำถาม" + } + }, + "input": { + "title": "ข้อความต้นฉบับ", + "placeholder": "กรุณาป้อนข้อความแนะนําให้ใช้ประโยคประกาศสั้น ๆ", + "countWarning": "สูงสุด 200 อักขระ", + "indexWarning": "ความรู้คุณภาพสูงเท่านั้น", + "testing": "การทดสอบ" + }, + "hit": { + "title": "ย่อหน้าดึงข้อมูล", + "emptyTip": "ผลการทดสอบการดึงข้อมูลจะแสดงที่นี่" + }, + "noRecentTip": "ไม่มีผลการค้นหาล่าสุดที่นี่", + "viewChart": "ดูแผนภูมิเวกเตอร์", + "viewDetail": "ดูรายละเอียด", + "open": "เปิด", + "keyword": "คำ", + "chunkDetail": "รายละเอียดก้อน", + "records": "เรก คอร์ด", + "hitChunks": "กด {{num}} ก้อนลูก", + "imageUploader": { + "tip": "อัปโหลดหรือลากภาพลง (สูงสุด {{batchCount}} รูป, {{size}}MB ต่อรูป)", + "tooltip": "อัปโหลดรูปภาพ (สูงสุด {{batchCount}} รูป, {{size}}MB ต่อรูป)", + "dropZoneTip": "ลากไฟล์มาที่นี่เพื่ออัปโหลด", + "singleChunkAttachmentLimitTooltip": "จำนวนของไฟล์แนบแบบชิ้นเดียวไม่สามารถเกิน {{limit}}" + } +} diff --git a/web/i18n/th-TH/dataset-hit-testing.ts b/web/i18n/th-TH/dataset-hit-testing.ts deleted file mode 100644 index 05a343219d..0000000000 --- a/web/i18n/th-TH/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - title: 'การทดสอบการดึงข้อมูล', - settingTitle: 'การตั้งค่าการดึงข้อมูล', - desc: 'ทดสอบเอฟเฟกต์การตีของความรู้ตามข้อความแบบสอบถามที่กําหนด', - dateTimeFormat: 'MM/DD/YYYY hh:mm A', - table: { - header: { - source: 'ที่มา', - time: 'เวลา', - queryContent: 'เนื้อหาคำถาม', - }, - }, - input: { - title: 'ข้อความต้นฉบับ', - placeholder: 'กรุณาป้อนข้อความแนะนําให้ใช้ประโยคประกาศสั้น ๆ', - countWarning: 'สูงสุด 200 อักขระ', - indexWarning: 'ความรู้คุณภาพสูงเท่านั้น', - testing: 'การทดสอบ', - }, - hit: { - title: 'ย่อหน้าดึงข้อมูล', - emptyTip: 'ผลการทดสอบการดึงข้อมูลจะแสดงที่นี่', - }, - noRecentTip: 'ไม่มีผลการค้นหาล่าสุดที่นี่', - viewChart: 'ดูแผนภูมิเวกเตอร์', - viewDetail: 'ดูรายละเอียด', - open: 'เปิด', - keyword: 'คำ', - chunkDetail: 'รายละเอียดก้อน', - records: 'เรก คอร์ด', - hitChunks: 'กด {{num}} ก้อนลูก', - imageUploader: { - tip: 'อัปโหลดหรือลากภาพลง (สูงสุด {{batchCount}} รูป, {{size}}MB ต่อรูป)', - tooltip: 'อัปโหลดรูปภาพ (สูงสุด {{batchCount}} รูป, {{size}}MB ต่อรูป)', - dropZoneTip: 'ลากไฟล์มาที่นี่เพื่ออัปโหลด', - singleChunkAttachmentLimitTooltip: 'จำนวนของไฟล์แนบแบบชิ้นเดียวไม่สามารถเกิน {{limit}}', - }, -} - -export default translation diff --git a/web/i18n/th-TH/dataset-pipeline.json b/web/i18n/th-TH/dataset-pipeline.json new file mode 100644 index 0000000000..885a268fca --- /dev/null +++ b/web/i18n/th-TH/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "createFromScratch": { + "title": "ไปป์ไลน์ความรู้เปล่า", + "description": "สร้างไปป์ไลน์แบบกําหนดเองตั้งแต่เริ่มต้นด้วยการควบคุมการประมวลผลและโครงสร้างข้อมูลอย่างเต็มที่" + }, + "caution": "ความระมัดระวัง", + "createKnowledge": "สร้างความรู้", + "importDSL": "นําเข้าจากไฟล์ DSL", + "backToKnowledge": "กลับไปที่ความรู้", + "successTip": "สร้างฐานความรู้สําเร็จ", + "errorTip": "สร้างฐานความรู้ไม่สําเร็จ" + }, + "templates": { + "customized": "กำหนด เอง" + }, + "operations": { + "choose": "เลือก", + "convert": "แปลง", + "preview": "ดูตัวอย่าง", + "details": "ราย ละเอียด", + "editInfo": "แก้ไขข้อมูล", + "process": "แปรรูป", + "exportPipeline": "ส่งออกไปป์ไลน์", + "saveAndProcess": "บันทึกและประมวลผล", + "dataSource": "แหล่งข้อมูล", + "backToDataSource": "กลับไปที่แหล่งข้อมูล", + "useTemplate": "ใช้ไปป์ไลน์ความรู้นี้" + }, + "deletePipeline": { + "content": "การลบเทมเพลตไปป์ไลน์ไม่สามารถย้อนกลับได้", + "title": "คุณแน่ใจที่จะลบเทมเพลตไปป์ไลน์นี้หรือไม่" + }, + "publishPipeline": { + "success": { + "message": "เผยแพร่ไปป์ไลน์ความรู้", + "tip": "ไปที่เอกสาร เพื่อเพิ่มหรือจัดการเอกสาร" + }, + "error": { + "message": "ไม่สามารถเผยแพร่ไปป์ไลน์ความรู้" + } + }, + "publishTemplate": { + "success": { + "learnMore": "ศึกษาเพิ่มเติม", + "message": "เผยแพร่เทมเพลตไปป์ไลน์", + "tip": "คุณสามารถใช้เทมเพลตนี้ในหน้าการสร้าง" + }, + "error": { + "message": "ไม่สามารถเผยแพร่เทมเพลตไปป์ไลน์ได้" + } + }, + "exportDSL": { + "successTip": "ส่งออก DSL ไปป์ไลน์สําเร็จ", + "errorTip": "ไม่สามารถส่งออก DSL ไปป์ไลน์ได้" + }, + "details": { + "structure": "โครงสร้าง", + "structureTooltip": "โครงสร้างก้อนกําหนดวิธีการแยกและจัดทําดัชนีเอกสาร โดยเสนอโหมดทั่วไป ผู้ปกครอง-รอง และ Q&A และไม่ซ้ํากันสําหรับแต่ละฐานความรู้", + "createdBy": "โดย {{author}}" + }, + "testRun": { + "steps": { + "dataSource": "แหล่งข้อมูล", + "documentProcessing": "การประมวลผลเอกสาร" + }, + "dataSource": { + "localFiles": "ไฟล์ในเครื่อง" + }, + "notion": { + "docTitle": "เอกสาร Notion", + "title": "เลือกหน้า Notion" + }, + "title": "ทดสอบการทํางาน", + "tooltip": "ในโหมดทดสอบการทํางาน อนุญาตให้นําเข้าเอกสารได้ครั้งละหนึ่งฉบับเท่านั้นเพื่อการดีบักและสังเกตการณ์ที่ง่ายขึ้น" + }, + "inputFieldPanel": { + "uniqueInputs": { + "title": "อินพุตที่ไม่ซ้ํากันสําหรับแต่ละทางเข้า", + "tooltip": "อินพุตที่ไม่ซ้ํากันสามารถเข้าถึงได้เฉพาะแหล่งข้อมูลที่เลือกและโหนดดาวน์สตรีมเท่านั้น ผู้ใช้ไม่จําเป็นต้องกรอกข้อมูลเมื่อเลือกแหล่งข้อมูลอื่น เฉพาะฟิลด์อินพุตที่อ้างอิงโดยตัวแปรแหล่งข้อมูลเท่านั้นที่จะปรากฏในขั้นตอนแรก (แหล่งข้อมูล) ฟิลด์อื่น ๆ ทั้งหมดจะแสดงในขั้นตอนที่สอง (เอกสารการประมวลผล)" + }, + "globalInputs": { + "title": "อินพุตทั่วโลกสําหรับทางเข้าทั้งหมด", + "tooltip": "อินพุตส่วนกลางจะถูกแชร์ในทุกโหนด ผู้ใช้จะต้องกรอกข้อมูลเมื่อเลือกแหล่งข้อมูลใดๆ ตัวอย่างเช่น ฟิลด์ เช่น ตัวคั่นและความยาวของก้อนสูงสุดสามารถนําไปใช้อย่างสม่ําเสมอกับแหล่งข้อมูลหลายแหล่ง เฉพาะฟิลด์อินพุตที่อ้างอิงโดยตัวแปรแหล่งข้อมูลเท่านั้นที่ปรากฏในขั้นตอนแรก (แหล่งข้อมูล) ฟิลด์อื่นๆ ทั้งหมดจะแสดงในขั้นตอนที่สอง (เอกสารกระบวนการ)" + }, + "preview": { + "stepOneTitle": "แหล่งข้อมูล", + "stepTwoTitle": "เอกสารกระบวนการ" + }, + "error": { + "variableDuplicate": "ชื่อตัวแปรมีอยู่แล้ว โปรดเลือกชื่ออื่น" + }, + "addInputField": "เพิ่มฟิลด์อินพุต", + "editInputField": "แก้ไขฟิลด์อินพุต", + "title": "ช่องป้อนข้อมูลของผู้ใช้", + "description": "ฟิลด์การป้อนข้อมูลของผู้ใช้ใช้เพื่อกําหนดและรวบรวมตัวแปรที่จําเป็นในระหว่างกระบวนการดําเนินการไปป์ไลน์ ผู้ใช้สามารถปรับแต่งประเภทฟิลด์และกําหนดค่าอินพุตได้อย่างยืดหยุ่นเพื่อตอบสนองความต้องการของแหล่งข้อมูลหรือขั้นตอนการประมวลผลเอกสารต่างๆ" + }, + "addDocuments": { + "steps": { + "processDocuments": "เอกสารกระบวนการ", + "processingDocuments": "การประมวลผลเอกสาร", + "chooseDatasource": "เลือกแหล่งข้อมูล" + }, + "stepOne": { + "preview": "ดูตัวอย่าง" + }, + "stepTwo": { + "previewChunks": "ดูตัวอย่างก้อน", + "chunkSettings": "การตั้งค่าก้อน" + }, + "stepThree": { + "learnMore": "ศึกษาเพิ่มเติม" + }, + "characters": "อักขระ", + "backToDataSource": "แหล่งข้อมูล", + "title": "เพิ่มเอกสาร", + "selectOnlineDocumentTip": "ประมวลผลได้สูงสุด {{count}} หน้า", + "selectOnlineDriveTip": "ประมวลผลไฟล์ได้สูงสุด {{count}} ไฟล์ แต่ละไฟล์ไม่เกิน {{fileSize}} MB" + }, + "documentSettings": { + "title": "การตั้งค่าเอกสาร" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} หน้า" + }, + "onlineDrive": { + "breadcrumbs": { + "searchPlaceholder": "ค้นหาไฟล์...", + "allFiles": "ไฟล์ทั้งหมด", + "allBuckets": "ที่เก็บข้อมูลบนคลาวด์ทั้งหมด", + "searchResult": "พบ {{searchResultsLength}} รายการในโฟลเดอร์ \"{{folderName}}\"" + }, + "resetKeywords": "รีเซ็ตคีย์เวิร์ด", + "emptySearchResult": "ไม่พบสิ่งของ", + "notSupportedFileType": "ไม่รองรับชนิดแฟ้มนี้", + "emptyFolder": "โฟลเดอร์นี้ว่างเปล่า", + "notConnected": "{{name}} ไม่ได้เชื่อมต่อ", + "notConnectedTip": "เพื่อซิงค์กับ {{name}} ต้องสร้างการเชื่อมต่อกับ {{name}} ก่อน" + }, + "conversion": { + "confirm": { + "title": "การยืนยัน", + "content": "การกระทํานี้เป็นแบบถาวร คุณจะไม่สามารถเปลี่ยนกลับไปใช้วิธีการก่อนหน้านี้ได้ โปรดยืนยันการแปลง" + }, + "title": "แปลงเป็นไปป์ไลน์ความรู้", + "warning": "การดําเนินการนี้ไม่สามารถยกเลิกได้", + "errorMessage": "ไม่สามารถแปลงชุดข้อมูลเป็นไปป์ไลน์ได้", + "successMessage": "แปลงชุดข้อมูลเป็นไปป์ไลน์เรียบร้อยแล้ว", + "descriptionChunk2": "— แนวทางที่เปิดกว้างและยืดหยุ่นมากขึ้นด้วยการเข้าถึงปลั๊กอินจากตลาดของเรา การดําเนินการนี้จะใช้วิธีการประมวลผลใหม่กับเอกสารในอนาคตทั้งหมด", + "descriptionChunk1": "ตอนนี้คุณสามารถแปลงฐานความรู้ที่มีอยู่เพื่อใช้ไปป์ไลน์ความรู้สําหรับการประมวลผลเอกสารได้แล้ว" + }, + "knowledgePermissions": "สิทธิ์", + "inputField": "ฟิลด์อินพุต", + "knowledgeNameAndIcon": "ชื่อความรู้และไอคอน", + "knowledgeDescription": "คําอธิบายความรู้", + "knowledgeNameAndIconPlaceholder": "โปรดป้อนชื่อฐานความรู้", + "editPipelineInfo": "แก้ไขข้อมูลไปป์ไลน์", + "pipelineNameAndIcon": "ชื่อและไอคอนไปป์ไลน์", + "knowledgeDescriptionPlaceholder": "อธิบายสิ่งที่อยู่ในฐานความรู้นี้ คําอธิบายโดยละเอียดช่วยให้ AI สามารถเข้าถึงเนื้อหาของชุดข้อมูลได้แม่นยํายิ่งขึ้น หากว่างเปล่า Dify จะใช้กลยุทธ์การโจมตีเริ่มต้น (ไม่บังคับ)", + "configurationTip": "กำหนดค่า {{pluginName}}" +} diff --git a/web/i18n/th-TH/dataset-pipeline.ts b/web/i18n/th-TH/dataset-pipeline.ts deleted file mode 100644 index b9df16dbb9..0000000000 --- a/web/i18n/th-TH/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - createFromScratch: { - title: 'ไปป์ไลน์ความรู้เปล่า', - description: 'สร้างไปป์ไลน์แบบกําหนดเองตั้งแต่เริ่มต้นด้วยการควบคุมการประมวลผลและโครงสร้างข้อมูลอย่างเต็มที่', - }, - caution: 'ความระมัดระวัง', - createKnowledge: 'สร้างความรู้', - importDSL: 'นําเข้าจากไฟล์ DSL', - backToKnowledge: 'กลับไปที่ความรู้', - successTip: 'สร้างฐานความรู้สําเร็จ', - errorTip: 'สร้างฐานความรู้ไม่สําเร็จ', - }, - templates: { - customized: 'กำหนด เอง', - }, - operations: { - choose: 'เลือก', - convert: 'แปลง', - preview: 'ดูตัวอย่าง', - details: 'ราย ละเอียด', - editInfo: 'แก้ไขข้อมูล', - process: 'แปรรูป', - exportPipeline: 'ส่งออกไปป์ไลน์', - saveAndProcess: 'บันทึกและประมวลผล', - dataSource: 'แหล่งข้อมูล', - backToDataSource: 'กลับไปที่แหล่งข้อมูล', - useTemplate: 'ใช้ไปป์ไลน์ความรู้นี้', - }, - deletePipeline: { - content: 'การลบเทมเพลตไปป์ไลน์ไม่สามารถย้อนกลับได้', - title: 'คุณแน่ใจที่จะลบเทมเพลตไปป์ไลน์นี้หรือไม่', - }, - publishPipeline: { - success: { - message: 'เผยแพร่ไปป์ไลน์ความรู้', - tip: 'ไปที่เอกสาร เพื่อเพิ่มหรือจัดการเอกสาร', - }, - error: { - message: 'ไม่สามารถเผยแพร่ไปป์ไลน์ความรู้', - }, - }, - publishTemplate: { - success: { - learnMore: 'ศึกษาเพิ่มเติม', - message: 'เผยแพร่เทมเพลตไปป์ไลน์', - tip: 'คุณสามารถใช้เทมเพลตนี้ในหน้าการสร้าง', - }, - error: { - message: 'ไม่สามารถเผยแพร่เทมเพลตไปป์ไลน์ได้', - }, - }, - exportDSL: { - successTip: 'ส่งออก DSL ไปป์ไลน์สําเร็จ', - errorTip: 'ไม่สามารถส่งออก DSL ไปป์ไลน์ได้', - }, - details: { - structure: 'โครงสร้าง', - structureTooltip: 'โครงสร้างก้อนกําหนดวิธีการแยกและจัดทําดัชนีเอกสาร โดยเสนอโหมดทั่วไป ผู้ปกครอง-รอง และ Q&A และไม่ซ้ํากันสําหรับแต่ละฐานความรู้', - createdBy: 'โดย {{author}}', - }, - testRun: { - steps: { - dataSource: 'แหล่งข้อมูล', - documentProcessing: 'การประมวลผลเอกสาร', - }, - dataSource: { - localFiles: 'ไฟล์ในเครื่อง', - }, - notion: { - docTitle: 'เอกสาร Notion', - title: 'เลือกหน้า Notion', - }, - title: 'ทดสอบการทํางาน', - tooltip: 'ในโหมดทดสอบการทํางาน อนุญาตให้นําเข้าเอกสารได้ครั้งละหนึ่งฉบับเท่านั้นเพื่อการดีบักและสังเกตการณ์ที่ง่ายขึ้น', - }, - inputFieldPanel: { - uniqueInputs: { - title: 'อินพุตที่ไม่ซ้ํากันสําหรับแต่ละทางเข้า', - tooltip: 'อินพุตที่ไม่ซ้ํากันสามารถเข้าถึงได้เฉพาะแหล่งข้อมูลที่เลือกและโหนดดาวน์สตรีมเท่านั้น ผู้ใช้ไม่จําเป็นต้องกรอกข้อมูลเมื่อเลือกแหล่งข้อมูลอื่น เฉพาะฟิลด์อินพุตที่อ้างอิงโดยตัวแปรแหล่งข้อมูลเท่านั้นที่จะปรากฏในขั้นตอนแรก (แหล่งข้อมูล) ฟิลด์อื่น ๆ ทั้งหมดจะแสดงในขั้นตอนที่สอง (เอกสารการประมวลผล)', - }, - globalInputs: { - title: 'อินพุตทั่วโลกสําหรับทางเข้าทั้งหมด', - tooltip: 'อินพุตส่วนกลางจะถูกแชร์ในทุกโหนด ผู้ใช้จะต้องกรอกข้อมูลเมื่อเลือกแหล่งข้อมูลใดๆ ตัวอย่างเช่น ฟิลด์ เช่น ตัวคั่นและความยาวของก้อนสูงสุดสามารถนําไปใช้อย่างสม่ําเสมอกับแหล่งข้อมูลหลายแหล่ง เฉพาะฟิลด์อินพุตที่อ้างอิงโดยตัวแปรแหล่งข้อมูลเท่านั้นที่ปรากฏในขั้นตอนแรก (แหล่งข้อมูล) ฟิลด์อื่นๆ ทั้งหมดจะแสดงในขั้นตอนที่สอง (เอกสารกระบวนการ)', - }, - preview: { - stepOneTitle: 'แหล่งข้อมูล', - stepTwoTitle: 'เอกสารกระบวนการ', - }, - error: { - variableDuplicate: 'ชื่อตัวแปรมีอยู่แล้ว โปรดเลือกชื่ออื่น', - }, - addInputField: 'เพิ่มฟิลด์อินพุต', - editInputField: 'แก้ไขฟิลด์อินพุต', - title: 'ช่องป้อนข้อมูลของผู้ใช้', - description: 'ฟิลด์การป้อนข้อมูลของผู้ใช้ใช้เพื่อกําหนดและรวบรวมตัวแปรที่จําเป็นในระหว่างกระบวนการดําเนินการไปป์ไลน์ ผู้ใช้สามารถปรับแต่งประเภทฟิลด์และกําหนดค่าอินพุตได้อย่างยืดหยุ่นเพื่อตอบสนองความต้องการของแหล่งข้อมูลหรือขั้นตอนการประมวลผลเอกสารต่างๆ', - }, - addDocuments: { - steps: { - processDocuments: 'เอกสารกระบวนการ', - processingDocuments: 'การประมวลผลเอกสาร', - chooseDatasource: 'เลือกแหล่งข้อมูล', - }, - stepOne: { - preview: 'ดูตัวอย่าง', - }, - stepTwo: { - previewChunks: 'ดูตัวอย่างก้อน', - chunkSettings: 'การตั้งค่าก้อน', - }, - stepThree: { - learnMore: 'ศึกษาเพิ่มเติม', - }, - characters: 'อักขระ', - backToDataSource: 'แหล่งข้อมูล', - title: 'เพิ่มเอกสาร', - selectOnlineDocumentTip: 'ประมวลผลได้สูงสุด {{count}} หน้า', - selectOnlineDriveTip: 'ประมวลผลไฟล์ได้สูงสุด {{count}} ไฟล์ แต่ละไฟล์ไม่เกิน {{fileSize}} MB', - }, - documentSettings: { - title: 'การตั้งค่าเอกสาร', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} หน้า', - }, - onlineDrive: { - breadcrumbs: { - searchPlaceholder: 'ค้นหาไฟล์...', - allFiles: 'ไฟล์ทั้งหมด', - allBuckets: 'ที่เก็บข้อมูลบนคลาวด์ทั้งหมด', - searchResult: 'พบ {{searchResultsLength}} รายการในโฟลเดอร์ "{{folderName}}"', - }, - resetKeywords: 'รีเซ็ตคีย์เวิร์ด', - emptySearchResult: 'ไม่พบสิ่งของ', - notSupportedFileType: 'ไม่รองรับชนิดแฟ้มนี้', - emptyFolder: 'โฟลเดอร์นี้ว่างเปล่า', - notConnected: '{{name}} ไม่ได้เชื่อมต่อ', - notConnectedTip: 'เพื่อซิงค์กับ {{name}} ต้องสร้างการเชื่อมต่อกับ {{name}} ก่อน', - }, - conversion: { - confirm: { - title: 'การยืนยัน', - content: 'การกระทํานี้เป็นแบบถาวร คุณจะไม่สามารถเปลี่ยนกลับไปใช้วิธีการก่อนหน้านี้ได้ โปรดยืนยันการแปลง', - }, - title: 'แปลงเป็นไปป์ไลน์ความรู้', - warning: 'การดําเนินการนี้ไม่สามารถยกเลิกได้', - errorMessage: 'ไม่สามารถแปลงชุดข้อมูลเป็นไปป์ไลน์ได้', - successMessage: 'แปลงชุดข้อมูลเป็นไปป์ไลน์เรียบร้อยแล้ว', - descriptionChunk2: '— แนวทางที่เปิดกว้างและยืดหยุ่นมากขึ้นด้วยการเข้าถึงปลั๊กอินจากตลาดของเรา การดําเนินการนี้จะใช้วิธีการประมวลผลใหม่กับเอกสารในอนาคตทั้งหมด', - descriptionChunk1: 'ตอนนี้คุณสามารถแปลงฐานความรู้ที่มีอยู่เพื่อใช้ไปป์ไลน์ความรู้สําหรับการประมวลผลเอกสารได้แล้ว', - }, - knowledgePermissions: 'สิทธิ์', - inputField: 'ฟิลด์อินพุต', - knowledgeNameAndIcon: 'ชื่อความรู้และไอคอน', - knowledgeDescription: 'คําอธิบายความรู้', - knowledgeNameAndIconPlaceholder: 'โปรดป้อนชื่อฐานความรู้', - editPipelineInfo: 'แก้ไขข้อมูลไปป์ไลน์', - pipelineNameAndIcon: 'ชื่อและไอคอนไปป์ไลน์', - knowledgeDescriptionPlaceholder: 'อธิบายสิ่งที่อยู่ในฐานความรู้นี้ คําอธิบายโดยละเอียดช่วยให้ AI สามารถเข้าถึงเนื้อหาของชุดข้อมูลได้แม่นยํายิ่งขึ้น หากว่างเปล่า Dify จะใช้กลยุทธ์การโจมตีเริ่มต้น (ไม่บังคับ)', - configurationTip: 'กำหนดค่า {{pluginName}}', -} - -export default translation diff --git a/web/i18n/th-TH/dataset-settings.json b/web/i18n/th-TH/dataset-settings.json new file mode 100644 index 0000000000..e3a797cbab --- /dev/null +++ b/web/i18n/th-TH/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "การตั้งค่าความรู้", + "desc": "ที่นี่คุณสามารถแก้ไขคุณสมบัติและการตั้งค่าการดึงข้อมูลของความรู้นี้", + "form": { + "name": "ชื่อความรู้", + "namePlaceholder": "กรุณากรอกชื่อความรู้", + "nameError": "ชื่อต้องไม่ว่างเปล่า", + "desc": "คําอธิบายความรู้", + "descInfo": "โปรดเขียนคําอธิบายข้อความที่ชัดเจนเพื่อร่างเนื้อหาของความรู้ คําอธิบายนี้จะใช้เป็นพื้นฐานสําหรับการจับคู่เมื่อเลือกจากความรู้หลายรายการเพื่อการอนุมาน", + "descPlaceholder": "อธิบายสิ่งที่อยู่ในความรู้นี้ (ไม่บังคับ)", + "descWrite": "เรียนรู้วิธีเขียนคําอธิบายความรู้ที่ดี", + "permissions": "สิทธิ์", + "permissionsOnlyMe": "ฉันเท่านั้น", + "permissionsAllMember": "สมาชิกในทีมทุกคน", + "permissionsInvitedMembers": "สมาชิกในทีมบางส่วน", + "me": "(คุณ)", + "indexMethod": "วิธีการจัดทําดัชนี", + "indexMethodHighQuality": "คุณภาพสูง", + "indexMethodHighQualityTip": "เรียกใช้แบบจําลองการฝังตัวสําหรับการประมวลผลเพื่อให้มีความแม่นยําสูงขึ้นเมื่อผู้ใช้สืบค้น", + "indexMethodEconomy": "ประหยัด", + "indexMethodEconomyTip": "ใช้เอ็นจิ้นเวกเตอร์ออฟไลน์ ดัชนีคําหลัก ฯลฯ เพื่อลดความแม่นยําโดยไม่ต้องใช้โทเค็น", + "embeddingModel": "โมเดลการฝัง", + "embeddingModelTip": "เปลี่ยนรุ่นที่ฝังไว้ โปรดไปที่", + "embeddingModelTipLink": "การตั้งค่า", + "retrievalSetting": { + "title": "การตั้งค่าการดึงข้อมูล", + "learnMore": "ศึกษาเพิ่มเติม", + "description": "เกี่ยวกับวิธีการดึงข้อมูล", + "longDescription": "เกี่ยวกับวิธีการดึงข้อมูล คุณสามารถเปลี่ยนแปลงได้ตลอดเวลาในการตั้งค่าความรู้", + "method": "วิธีการค้นคืน", + "multiModalTip": "เมื่อโมเดลฝังตัวรองรับมัลติ-โมดอล กรุณาเลือกโมเดลจัดอันดับใหม่แบบมัลติ-โมดอลเพื่อประสิทธิภาพที่ดีกว่า" + }, + "externalKnowledgeAPI": "API ความรู้ภายนอก", + "externalKnowledgeID": "ID ความรู้ภายนอก", + "retrievalSettings": "การตั้งค่าการดึงข้อมูล", + "save": "ประหยัด", + "indexMethodChangeToEconomyDisabledTip": "ไม่สามารถดาวน์เกรดจาก HQ เป็น ECO ได้", + "helpText": "เรียนรู้วิธีเขียนคําอธิบายชุดข้อมูลที่ดี", + "upgradeHighQualityTip": "เมื่ออัปเกรดเป็นโหมดคุณภาพสูงแล้ว จะไม่สามารถเปลี่ยนกลับเป็นโหมดประหยัดได้", + "searchModel": "ค้นหารุ่น", + "chunkStructure": { + "learnMore": "ศึกษาเพิ่มเติม", + "description": "เกี่ยวกับ Chunk Structure", + "title": "โครงสร้างก้อน" + }, + "numberOfKeywords": "จํานวนคําหลัก", + "nameAndIcon": "ชื่อ & ไอคอน", + "onSearchResults": "ไม่มีสมาชิกที่ตรงกับคําค้นหาของคุณ\nลองค้นหาอีกครั้ง" + } +} diff --git a/web/i18n/th-TH/dataset-settings.ts b/web/i18n/th-TH/dataset-settings.ts deleted file mode 100644 index e30d553f1c..0000000000 --- a/web/i18n/th-TH/dataset-settings.ts +++ /dev/null @@ -1,52 +0,0 @@ -const translation = { - title: 'การตั้งค่าความรู้', - desc: 'ที่นี่คุณสามารถแก้ไขคุณสมบัติและการตั้งค่าการดึงข้อมูลของความรู้นี้', - form: { - name: 'ชื่อความรู้', - namePlaceholder: 'กรุณากรอกชื่อความรู้', - nameError: 'ชื่อต้องไม่ว่างเปล่า', - desc: 'คําอธิบายความรู้', - descInfo: 'โปรดเขียนคําอธิบายข้อความที่ชัดเจนเพื่อร่างเนื้อหาของความรู้ คําอธิบายนี้จะใช้เป็นพื้นฐานสําหรับการจับคู่เมื่อเลือกจากความรู้หลายรายการเพื่อการอนุมาน', - descPlaceholder: 'อธิบายสิ่งที่อยู่ในความรู้นี้ (ไม่บังคับ)', - descWrite: 'เรียนรู้วิธีเขียนคําอธิบายความรู้ที่ดี', - permissions: 'สิทธิ์', - permissionsOnlyMe: 'ฉันเท่านั้น', - permissionsAllMember: 'สมาชิกในทีมทุกคน', - permissionsInvitedMembers: 'สมาชิกในทีมบางส่วน', - me: '(คุณ)', - indexMethod: 'วิธีการจัดทําดัชนี', - indexMethodHighQuality: 'คุณภาพสูง', - indexMethodHighQualityTip: 'เรียกใช้แบบจําลองการฝังตัวสําหรับการประมวลผลเพื่อให้มีความแม่นยําสูงขึ้นเมื่อผู้ใช้สืบค้น', - indexMethodEconomy: 'ประหยัด', - indexMethodEconomyTip: 'ใช้เอ็นจิ้นเวกเตอร์ออฟไลน์ ดัชนีคําหลัก ฯลฯ เพื่อลดความแม่นยําโดยไม่ต้องใช้โทเค็น', - embeddingModel: 'โมเดลการฝัง', - embeddingModelTip: 'เปลี่ยนรุ่นที่ฝังไว้ โปรดไปที่', - embeddingModelTipLink: 'การตั้งค่า', - retrievalSetting: { - title: 'การตั้งค่าการดึงข้อมูล', - learnMore: 'ศึกษาเพิ่มเติม', - description: 'เกี่ยวกับวิธีการดึงข้อมูล', - longDescription: 'เกี่ยวกับวิธีการดึงข้อมูล คุณสามารถเปลี่ยนแปลงได้ตลอดเวลาในการตั้งค่าความรู้', - method: 'วิธีการค้นคืน', - multiModalTip: 'เมื่อโมเดลฝังตัวรองรับมัลติ-โมดอล กรุณาเลือกโมเดลจัดอันดับใหม่แบบมัลติ-โมดอลเพื่อประสิทธิภาพที่ดีกว่า', - }, - externalKnowledgeAPI: 'API ความรู้ภายนอก', - externalKnowledgeID: 'ID ความรู้ภายนอก', - retrievalSettings: 'การตั้งค่าการดึงข้อมูล', - save: 'ประหยัด', - indexMethodChangeToEconomyDisabledTip: 'ไม่สามารถดาวน์เกรดจาก HQ เป็น ECO ได้', - helpText: 'เรียนรู้วิธีเขียนคําอธิบายชุดข้อมูลที่ดี', - upgradeHighQualityTip: 'เมื่ออัปเกรดเป็นโหมดคุณภาพสูงแล้ว จะไม่สามารถเปลี่ยนกลับเป็นโหมดประหยัดได้', - searchModel: 'ค้นหารุ่น', - chunkStructure: { - learnMore: 'ศึกษาเพิ่มเติม', - description: 'เกี่ยวกับ Chunk Structure', - title: 'โครงสร้างก้อน', - }, - numberOfKeywords: 'จํานวนคําหลัก', - nameAndIcon: 'ชื่อ & ไอคอน', - onSearchResults: 'ไม่มีสมาชิกที่ตรงกับคําค้นหาของคุณ\nลองค้นหาอีกครั้ง', - }, -} - -export default translation diff --git a/web/i18n/th-TH/dataset.json b/web/i18n/th-TH/dataset.json new file mode 100644 index 0000000000..161dac15bc --- /dev/null +++ b/web/i18n/th-TH/dataset.json @@ -0,0 +1,249 @@ +{ + "knowledge": "ความรู้", + "externalTag": "ภายนอก", + "externalAPI": "API ภายนอก", + "externalAPIPanelTitle": "API ความรู้ภายนอก", + "externalKnowledgeId": "ID ความรู้ภายนอก", + "externalKnowledgeName": "ชื่อความรู้ภายนอก", + "externalKnowledgeDescription": "คําอธิบายความรู้", + "externalKnowledgeIdPlaceholder": "โปรดป้อน Knowledge ID", + "externalKnowledgeNamePlaceholder": "โปรดป้อนชื่อฐานความรู้", + "externalKnowledgeDescriptionPlaceholder": "อธิบายสิ่งที่อยู่ในฐานความรู้นี้ (ไม่บังคับ)", + "learnHowToWriteGoodKnowledgeDescription": "เรียนรู้วิธีการเขียนคําอธิบายความรู้ที่ดี", + "externalAPIPanelDescription": "API ความรู้ภายนอกใช้เพื่อเชื่อมต่อกับฐานความรู้ภายนอก Dify และดึงความรู้จากฐานความรู้นั้น", + "externalAPIPanelDocumentation": "เรียนรู้วิธีสร้าง API ความรู้ภายนอก", + "documentCount": "เอกสาร", + "wordCount": "คํา k", + "appCount": "แอปที่เชื่อมโยง", + "createDataset": "สร้างความรู้", + "createNewExternalAPI": "สร้าง API ความรู้ภายนอกใหม่", + "noExternalKnowledge": "ยังไม่มี External Knowledge API คลิกที่นี่เพื่อสร้าง", + "createExternalAPI": "เพิ่ม API ความรู้ภายนอก", + "editExternalAPIFormTitle": "แก้ไข API ความรู้ภายนอก", + "editExternalAPITooltipTitle": "ความรู้ที่เชื่อมโยง", + "editExternalAPIConfirmWarningContent": { + "front": "API ความรู้ภายนอกนี้เชื่อมโยงกับ", + "end": "ความรู้ภายนอกและการปรับเปลี่ยนนี้จะนําไปใช้กับพวกเขาทั้งหมด คุณแน่ใจหรือไม่ว่าต้องการบันทึกการเปลี่ยนแปลงนี้?" + }, + "editExternalAPIFormWarning": { + "front": "API ภายนอกนี้เชื่อมโยงกับ", + "end": "ความรู้ภายนอก" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "front": "ลบ", + "end": "?" + }, + "content": { + "front": "API ความรู้ภายนอกนี้เชื่อมโยงกับ", + "end": "ความรู้ภายนอก การลบ API นี้จะทําให้ API ทั้งหมดเป็นโมฆะ คุณแน่ใจหรือไม่ว่าต้องการลบ API นี้?" + }, + "noConnectionContent": "คุณแน่ใจว่าจะลบ API นี้หรือไม่" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "เลือก API ความรู้ภายนอก" + }, + "connectDataset": "เชื่อมต่อกับฐานความรู้ภายนอก", + "connectDatasetIntro": { + "title": "วิธีการเชื่อมต่อกับฐานความรู้ภายนอก", + "content": { + "front": "เมื่อต้องการเชื่อมต่อกับฐานความรู้ภายนอก คุณต้องสร้าง API ภายนอกก่อน โปรดอ่านอย่างละเอียดและอ้างอิง", + "link": "ดูวิธีสร้าง API ภายนอก", + "end": ". จากนั้นค้นหา Knowledge ID ที่เกี่ยวข้องและกรอกข้อมูลในแบบฟอร์มทางด้านซ้าย หากข้อมูลทั้งหมดถูกต้อง ข้อมูลจะข้ามไปยังการทดสอบการดึงข้อมูลในฐานความรู้โดยอัตโนมัติหลังจากคลิกปุ่มเชื่อมต่อ" + }, + "learnMore": "ศึกษาเพิ่มเติม" + }, + "connectHelper": { + "helper1": "เชื่อมต่อกับฐานความรู้ภายนอกผ่าน API และ ID ฐานความรู้ ปัจจุบัน", + "helper2": "รองรับเฉพาะฟังก์ชันการดึงข้อมูล", + "helper3": ". เราขอแนะนําให้คุณ", + "helper4": "อ่านเอกสารวิธีใช้", + "helper5": "ระมัดระวังก่อนใช้คุณสมบัตินี้" + }, + "createDatasetIntro": "นําเข้าข้อมูลข้อความของคุณเองหรือเขียนข้อมูลแบบเรียลไทม์ผ่าน Webhook เพื่อปรับปรุงบริบท LLM", + "deleteDatasetConfirmTitle": "ลบความรู้นี้?", + "deleteDatasetConfirmContent": "การลบความรู้นั้นไม่สามารถย้อนกลับได้ ผู้ใช้จะไม่สามารถเข้าถึงความรู้ของคุณอีกต่อไป และการกําหนดค่าพร้อมท์และบันทึกทั้งหมดจะถูกลบอย่างถาวร", + "datasetUsedByApp": "ความรู้นี้ถูกใช้โดยบางแอป แอปจะไม่สามารถใช้ความรู้นี้ได้อีกต่อไป และการกําหนดค่าพร้อมท์และบันทึกทั้งหมดจะถูกลบอย่างถาวร", + "datasetDeleted": "ลบความรู้", + "datasetDeleteFailed": "ลบความรู้ไม่สําเร็จ", + "didYouKnow": "คุณรู้หรือไม่?", + "intro1": "ความรู้สามารถรวมเข้ากับแอปพลิเคชัน Dify ได้", + "intro2": "ตามบริบท", + "intro3": ",", + "intro4": "หรือมัน", + "intro5": "สามารถสร้างได้", + "intro6": "เป็นปลั๊กอินดัชนี ChatGPT แบบสแตนด์อโลนเพื่อเผยแพร่", + "unavailable": "ไม่", + "datasets": "ความรู้", + "datasetsApi": "การเข้าถึง API", + "externalKnowledgeForm": { + "connect": "ติด", + "cancel": "ยกเลิก" + }, + "externalAPIForm": { + "name": "ชื่อ", + "endpoint": "ปลายทาง API", + "apiKey": "คีย์ API", + "save": "ประหยัด", + "cancel": "ยกเลิก", + "edit": "แก้ไข", + "encrypted": { + "front": "โทเค็น API ของคุณจะถูกเข้ารหัสและจัดเก็บโดยใช้", + "end": "เทคโนโลยี " + } + }, + "retrieval": { + "semantic_search": { + "title": "การค้นหาเวกเตอร์", + "description": "สร้างการฝังแบบสอบถามและค้นหาส่วนข้อความที่คล้ายกับการแสดงเวกเตอร์มากที่สุด" + }, + "full_text_search": { + "title": "การค้นหาข้อความแบบเต็ม", + "description": "จัดทําดัชนีคําศัพท์ทั้งหมดในเอกสาร เพื่อให้ผู้ใช้สามารถค้นหาคําศัพท์ใดก็ได้และดึงข้อความที่เกี่ยวข้องที่มีคําเหล่านั้น" + }, + "hybrid_search": { + "title": "การค้นหาแบบไฮบริด", + "description": "ดําเนินการค้นหาข้อความแบบเต็มและการค้นหาแบบเวกเตอร์พร้อมกันจัดอันดับใหม่เพื่อเลือกการจับคู่ที่ดีที่สุดสําหรับคําค้นหาของผู้ใช้ ผู้ใช้สามารถเลือกที่จะตั้งค่าน้ําหนักหรือกําหนดค่าเป็นโมเดล Rerank", + "recommend": "แนะนำ" + }, + "invertedIndex": {}, + "change": "เปลี่ยน", + "changeRetrievalMethod": "วิธีการเรียกดูการเปลี่ยนแปลง", + "keyword_search": { + "title": "ดัชนีกลับด้าน", + "description": "Inverted Index เป็นโครงสร้างที่ใช้สําหรับการดึงข้อมูลอย่างมีประสิทธิภาพ จัดเรียงตามคําศัพท์ แต่ละคําชี้ไปที่เอกสารหรือหน้าเว็บที่มีคําดังกล่าว" + } + }, + "docsFailedNotice": "เอกสารไม่สามารถจัดทําดัชนีได้", + "retry": "ลอง", + "indexingTechnique": { + "high_quality": "สํานักงานใหญ่", + "economy": "อีโค" + }, + "indexingMethod": { + "semantic_search": "เวกเตอร์", + "full_text_search": "ข้อความฉบับเต็ม", + "hybrid_search": "พันธุ์ผสม", + "invertedIndex": "คว่ำ" + }, + "defaultRetrievalTip": "การดึงข้อมูลหลายเส้นทางจะถูกใช้โดยค่าเริ่มต้น ความรู้จะถูกดึงมาจากฐานความรู้หลายแห่งแล้วจัดอันดับใหม่", + "mixtureHighQualityAndEconomicTip": "โมเดล Rerank จําเป็นสําหรับการผสมผสานระหว่างฐานความรู้คุณภาพสูงและประหยัด", + "inconsistentEmbeddingModelTip": "จําเป็นต้องมีแบบจําลอง Rerank หากแบบจําลองการฝังของฐานความรู้ที่เลือกไม่สอดคล้องกัน", + "mixtureInternalAndExternalTip": "โมเดล Rerank จําเป็นสําหรับการผสมผสานระหว่างความรู้ภายในและภายนอก", + "allExternalTip": "เมื่อใช้ความรู้ภายนอกเท่านั้น ผู้ใช้สามารถเลือกได้ว่าจะเปิดใช้งานโมเดล Rerank หรือไม่ หากไม่ได้เปิดใช้งาน ก้อนที่ดึงมาจะถูกจัดเรียงตามคะแนน เมื่อกลยุทธ์การดึงข้อมูลของฐานความรู้ที่แตกต่างกันไม่สอดคล้องกัน ก็จะไม่ถูกต้อง", + "retrievalSettings": "การตั้งค่าการดึงข้อมูล", + "rerankSettings": "การตั้งค่ารีไลน์", + "weightedScore": { + "title": "คะแนนถ่วงน้ําหนัก", + "description": "กลยุทธ์การจัดอันดับใหม่นี้จะกําหนดว่าควรจัดลําดับความสําคัญของการจับคู่ความหมายหรือคีย์เวิร์ด", + "semanticFirst": "ความหมายก่อน", + "keywordFirst": "คีย์เวิร์ดก่อน", + "customized": "กำหนด เอง", + "semantic": "ความหมาย", + "keyword": "คำ" + }, + "nTo1RetrievalLegacy": "การดึงข้อมูล N-to-1 จะเลิกใช้อย่างเป็นทางการตั้งแต่เดือนกันยายน ขอแนะนําให้ใช้การดึงข้อมูลหลายเส้นทางล่าสุดเพื่อให้ได้ผลลัพธ์ที่ดีขึ้น", + "nTo1RetrievalLegacyLink": "ศึกษาเพิ่มเติม", + "nTo1RetrievalLegacyLinkText": "การดึงข้อมูล N-to-1 จะเลิกใช้อย่างเป็นทางการในเดือนกันยายน", + "chunkingMode": { + "general": "ทั่วไป", + "parentChild": "พ่อแม่ลูก", + "graph": "กราฟ", + "qa": "ถาม & ตอบ" + }, + "parentMode": { + "paragraph": "วรรค", + "fullDoc": "เอกสารฉบับเต็ม" + }, + "batchAction": { + "selected": "เลือก", + "archive": "หอจดหมายเหตุ", + "delete": "ลบ", + "enable": "เปิด", + "cancel": "ยกเลิก", + "disable": "เก" + }, + "localDocs": "เอกสารท้องถิ่น", + "preprocessDocument": "{{num}} เอกสารการประมวลผลล่วงหน้า", + "documentsDisabled": "{{num}} เอกสารถูกปิดใช้งาน - ไม่ได้ใช้งานนานกว่า 30 วัน", + "enable": "เปิด", + "allKnowledge": "ความรู้ทั้งหมด", + "allKnowledgeDescription": "เลือกเพื่อแสดงความรู้ทั้งหมดในพื้นที่ทํางานนี้ เฉพาะเจ้าของพื้นที่ทํางานเท่านั้นที่สามารถจัดการความรู้ทั้งหมดได้", + "metadata": { + "createMetadata": { + "back": "กลับ", + "title": "ข้อมูลเมตาใหม่", + "namePlaceholder": "เพิ่มชื่อข้อมูลเมตา", + "name": "ชื่อ", + "type": "ประเภท" + }, + "checkName": { + "invalid": "ชื่อเมตาดาต้าต้องประกอบด้วยตัวอักษรตัวเล็กเท่านั้น เลข และขีดล่าง และต้องเริ่มต้นด้วยตัวอักษรตัวเล็ก", + "empty": "ชื่อข้อมูลเมตาไม่สามารถเป็นค่าแEmpty", + "tooLong": "ชื่อเมตาดาต้าไม่สามารถเกิน {{max}} ตัวอักษร" + }, + "batchEditMetadata": { + "multipleValue": "หลายค่า", + "applyToAllSelectDocument": "ใช้กับเอกสารที่เลือกทั้งหมด", + "editMetadata": "แก้ไขข้อมูลเมตา", + "editDocumentsNum": "การแก้ไขเอกสาร {{num}} ฉบับ", + "applyToAllSelectDocumentTip": "สร้างข้อมูลเมตาใหม่และแก้ไขทั้งหมดข้างต้นโดยอัตโนมัติสำหรับเอกสารที่เลือกทั้งหมด มิฉะนั้นการแก้ไขข้อมูลเมตาจะใช้ได้เฉพาะกับเอกสารที่มีข้อมูลเมตานั้นเท่านั้น." + }, + "selectMetadata": { + "manageAction": "จัดการ", + "search": "ค้นหาข้อมูลเมตา", + "newAction": "ข้อมูลเมตาใหม่" + }, + "datasetMetadata": { + "deleteTitle": "ยืนยันเพื่อทำการลบ", + "values": "{{num}} ค่า", + "disabled": "คนพิการ", + "builtInDescription": "ข้อมูลเมตาที่สร้างขึ้นในตัวจะถูกดึงออกและสร้างโดยอัตโนมัติ ต้องเปิดใช้งานก่อนใช้งานและไม่สามารถแก้ไขได้", + "rename": "เปลี่ยนชื่อ", + "description": "คุณสามารถจัดการข้อมูลเมตาทั้งหมดในความรู้นี้ได้ที่นี่ การปรับเปลี่ยนจะถูกซิงโครไนซ์ไปยังเอกสารทุกฉบับ", + "deleteContent": "คุณแน่ใจหรือว่าต้องการลบข้อมูลเมตา \"{{name}}\"", + "name": "ชื่อ", + "addMetaData": "เพิ่มข้อมูลเมตา", + "builtIn": "แบบในตัว", + "namePlaceholder": "ชื่อเมทาดาทา" + }, + "documentMetadata": { + "technicalParameters": "พารามิเตอร์ทางเทคนิค", + "startLabeling": "เริ่มการติดป้าย", + "metadataToolTip": "ข้อมูลเมตาเป็นตัวกรองที่สำคัญซึ่งช่วยเพิ่มความถูกต้องและความเกี่ยวข้องของการดึงข้อมูล คุณสามารถปรับแก้และเพิ่มข้อมูลเมตาสำหรับเอกสารนี้ได้ที่นี่", + "documentInformation": "ข้อมูลเอกสาร" + }, + "metadata": "ข้อมูลเมตา", + "addMetadata": "เพิ่มข้อมูลเมตา", + "chooseTime": "เลือกเวลา..." + }, + "embeddingModelNotAvailable": "โมเดลฝังตัวไม่สามารถใช้งานได้.", + "updated": "ปรับ ปรุง", + "externalKnowledgeBase": "ฐานความรู้ภายนอก", + "createFromPipeline": "สร้างจากไปป์ไลน์ความรู้", + "serviceApi": { + "card": { + "title": "บริการแบ็กเอนด์ API", + "apiReference": "เอกสารอ้างอิง API", + "apiKey": "กุญแจ API", + "endpoint": "จุดเชื่อมต่อ API บริการ" + }, + "enabled": "ให้บริการ", + "disabled": "ถูกปิดใช้งาน", + "title": "บริการ API" + }, + "docAllEnabled_one": "{{count}} เอกสารถูกเปิดใช้งาน", + "docAllEnabled_other": "เอกสาร {{count}} ทั้งหมดเปิดใช้งานแล้ว", + "partialEnabled_one": "รวม {{count}} เอกสาร, {{num}} ใช้งานได้", + "partialEnabled_other": "รวม {{count}} เอกสาร, {{num}} ใช้งานได้", + "cornerLabel": { + "unavailable": "ไม่สามารถใช้ได้", + "pipeline": "ท่อส่ง" + }, + "multimodal": "หลายรูปแบบ", + "imageUploader": { + "button": "ลากและวางไฟล์หรือโฟลเดอร์ หรือ", + "browse": "เรียกดู", + "tip": "{{supportTypes}} (สูงสุด {{batchCount}}, {{size}}MB ต่อชิ้น)" + } +} diff --git a/web/i18n/th-TH/dataset.ts b/web/i18n/th-TH/dataset.ts deleted file mode 100644 index 922ab9bbc1..0000000000 --- a/web/i18n/th-TH/dataset.ts +++ /dev/null @@ -1,252 +0,0 @@ -const translation = { - knowledge: 'ความรู้', - externalTag: 'ภายนอก', - externalAPI: 'API ภายนอก', - externalAPIPanelTitle: 'API ความรู้ภายนอก', - externalKnowledgeId: 'ID ความรู้ภายนอก', - externalKnowledgeName: 'ชื่อความรู้ภายนอก', - externalKnowledgeDescription: 'คําอธิบายความรู้', - externalKnowledgeIdPlaceholder: 'โปรดป้อน Knowledge ID', - externalKnowledgeNamePlaceholder: 'โปรดป้อนชื่อฐานความรู้', - externalKnowledgeDescriptionPlaceholder: 'อธิบายสิ่งที่อยู่ในฐานความรู้นี้ (ไม่บังคับ)', - learnHowToWriteGoodKnowledgeDescription: 'เรียนรู้วิธีการเขียนคําอธิบายความรู้ที่ดี', - externalAPIPanelDescription: 'API ความรู้ภายนอกใช้เพื่อเชื่อมต่อกับฐานความรู้ภายนอก Dify และดึงความรู้จากฐานความรู้นั้น', - externalAPIPanelDocumentation: 'เรียนรู้วิธีสร้าง API ความรู้ภายนอก', - documentCount: 'เอกสาร', - wordCount: 'คํา k', - appCount: 'แอปที่เชื่อมโยง', - createDataset: 'สร้างความรู้', - createNewExternalAPI: 'สร้าง API ความรู้ภายนอกใหม่', - noExternalKnowledge: 'ยังไม่มี External Knowledge API คลิกที่นี่เพื่อสร้าง', - createExternalAPI: 'เพิ่ม API ความรู้ภายนอก', - editExternalAPIFormTitle: 'แก้ไข API ความรู้ภายนอก', - editExternalAPITooltipTitle: 'ความรู้ที่เชื่อมโยง', - editExternalAPIConfirmWarningContent: { - front: 'API ความรู้ภายนอกนี้เชื่อมโยงกับ', - end: 'ความรู้ภายนอกและการปรับเปลี่ยนนี้จะนําไปใช้กับพวกเขาทั้งหมด คุณแน่ใจหรือไม่ว่าต้องการบันทึกการเปลี่ยนแปลงนี้?', - }, - editExternalAPIFormWarning: { - front: 'API ภายนอกนี้เชื่อมโยงกับ', - end: 'ความรู้ภายนอก', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - front: 'ลบ', - end: '?', - }, - content: { - front: 'API ความรู้ภายนอกนี้เชื่อมโยงกับ', - end: 'ความรู้ภายนอก การลบ API นี้จะทําให้ API ทั้งหมดเป็นโมฆะ คุณแน่ใจหรือไม่ว่าต้องการลบ API นี้?', - }, - noConnectionContent: 'คุณแน่ใจว่าจะลบ API นี้หรือไม่', - }, - selectExternalKnowledgeAPI: { - placeholder: 'เลือก API ความรู้ภายนอก', - }, - connectDataset: 'เชื่อมต่อกับฐานความรู้ภายนอก', - connectDatasetIntro: { - title: 'วิธีการเชื่อมต่อกับฐานความรู้ภายนอก', - content: { - front: 'เมื่อต้องการเชื่อมต่อกับฐานความรู้ภายนอก คุณต้องสร้าง API ภายนอกก่อน โปรดอ่านอย่างละเอียดและอ้างอิง', - link: 'ดูวิธีสร้าง API ภายนอก', - end: '. จากนั้นค้นหา Knowledge ID ที่เกี่ยวข้องและกรอกข้อมูลในแบบฟอร์มทางด้านซ้าย หากข้อมูลทั้งหมดถูกต้อง ข้อมูลจะข้ามไปยังการทดสอบการดึงข้อมูลในฐานความรู้โดยอัตโนมัติหลังจากคลิกปุ่มเชื่อมต่อ', - }, - learnMore: 'ศึกษาเพิ่มเติม', - }, - connectHelper: { - helper1: 'เชื่อมต่อกับฐานความรู้ภายนอกผ่าน API และ ID ฐานความรู้ ปัจจุบัน', - helper2: 'รองรับเฉพาะฟังก์ชันการดึงข้อมูล', - helper3: '. เราขอแนะนําให้คุณ', - helper4: 'อ่านเอกสารวิธีใช้', - helper5: 'ระมัดระวังก่อนใช้คุณสมบัตินี้', - }, - createDatasetIntro: 'นําเข้าข้อมูลข้อความของคุณเองหรือเขียนข้อมูลแบบเรียลไทม์ผ่าน Webhook เพื่อปรับปรุงบริบท LLM', - deleteDatasetConfirmTitle: 'ลบความรู้นี้?', - deleteDatasetConfirmContent: 'การลบความรู้นั้นไม่สามารถย้อนกลับได้ ผู้ใช้จะไม่สามารถเข้าถึงความรู้ของคุณอีกต่อไป และการกําหนดค่าพร้อมท์และบันทึกทั้งหมดจะถูกลบอย่างถาวร', - datasetUsedByApp: 'ความรู้นี้ถูกใช้โดยบางแอป แอปจะไม่สามารถใช้ความรู้นี้ได้อีกต่อไป และการกําหนดค่าพร้อมท์และบันทึกทั้งหมดจะถูกลบอย่างถาวร', - datasetDeleted: 'ลบความรู้', - datasetDeleteFailed: 'ลบความรู้ไม่สําเร็จ', - didYouKnow: 'คุณรู้หรือไม่?', - intro1: 'ความรู้สามารถรวมเข้ากับแอปพลิเคชัน Dify ได้', - intro2: 'ตามบริบท', - intro3: ',', - intro4: 'หรือมัน', - intro5: 'สามารถสร้างได้', - intro6: 'เป็นปลั๊กอินดัชนี ChatGPT แบบสแตนด์อโลนเพื่อเผยแพร่', - unavailable: 'ไม่', - datasets: 'ความรู้', - datasetsApi: 'การเข้าถึง API', - externalKnowledgeForm: { - connect: 'ติด', - cancel: 'ยกเลิก', - }, - externalAPIForm: { - name: 'ชื่อ', - endpoint: 'ปลายทาง API', - apiKey: 'คีย์ API', - save: 'ประหยัด', - cancel: 'ยกเลิก', - edit: 'แก้ไข', - encrypted: { - front: 'โทเค็น API ของคุณจะถูกเข้ารหัสและจัดเก็บโดยใช้', - end: 'เทคโนโลยี ', - }, - }, - retrieval: { - semantic_search: { - title: 'การค้นหาเวกเตอร์', - description: 'สร้างการฝังแบบสอบถามและค้นหาส่วนข้อความที่คล้ายกับการแสดงเวกเตอร์มากที่สุด', - }, - full_text_search: { - title: 'การค้นหาข้อความแบบเต็ม', - description: 'จัดทําดัชนีคําศัพท์ทั้งหมดในเอกสาร เพื่อให้ผู้ใช้สามารถค้นหาคําศัพท์ใดก็ได้และดึงข้อความที่เกี่ยวข้องที่มีคําเหล่านั้น', - }, - hybrid_search: { - title: 'การค้นหาแบบไฮบริด', - description: 'ดําเนินการค้นหาข้อความแบบเต็มและการค้นหาแบบเวกเตอร์พร้อมกันจัดอันดับใหม่เพื่อเลือกการจับคู่ที่ดีที่สุดสําหรับคําค้นหาของผู้ใช้ ผู้ใช้สามารถเลือกที่จะตั้งค่าน้ําหนักหรือกําหนดค่าเป็นโมเดล Rerank', - recommend: 'แนะนำ', - }, - invertedIndex: { - }, - change: 'เปลี่ยน', - changeRetrievalMethod: 'วิธีการเรียกดูการเปลี่ยนแปลง', - keyword_search: { - title: 'ดัชนีกลับด้าน', - description: 'Inverted Index เป็นโครงสร้างที่ใช้สําหรับการดึงข้อมูลอย่างมีประสิทธิภาพ จัดเรียงตามคําศัพท์ แต่ละคําชี้ไปที่เอกสารหรือหน้าเว็บที่มีคําดังกล่าว', - }, - }, - docsFailedNotice: 'เอกสารไม่สามารถจัดทําดัชนีได้', - retry: 'ลอง', - indexingTechnique: { - high_quality: 'สํานักงานใหญ่', - economy: 'อีโค', - }, - indexingMethod: { - semantic_search: 'เวกเตอร์', - full_text_search: 'ข้อความฉบับเต็ม', - hybrid_search: 'พันธุ์ผสม', - invertedIndex: 'คว่ำ', - }, - defaultRetrievalTip: 'การดึงข้อมูลหลายเส้นทางจะถูกใช้โดยค่าเริ่มต้น ความรู้จะถูกดึงมาจากฐานความรู้หลายแห่งแล้วจัดอันดับใหม่', - mixtureHighQualityAndEconomicTip: 'โมเดล Rerank จําเป็นสําหรับการผสมผสานระหว่างฐานความรู้คุณภาพสูงและประหยัด', - inconsistentEmbeddingModelTip: 'จําเป็นต้องมีแบบจําลอง Rerank หากแบบจําลองการฝังของฐานความรู้ที่เลือกไม่สอดคล้องกัน', - mixtureInternalAndExternalTip: 'โมเดล Rerank จําเป็นสําหรับการผสมผสานระหว่างความรู้ภายในและภายนอก', - allExternalTip: 'เมื่อใช้ความรู้ภายนอกเท่านั้น ผู้ใช้สามารถเลือกได้ว่าจะเปิดใช้งานโมเดล Rerank หรือไม่ หากไม่ได้เปิดใช้งาน ก้อนที่ดึงมาจะถูกจัดเรียงตามคะแนน เมื่อกลยุทธ์การดึงข้อมูลของฐานความรู้ที่แตกต่างกันไม่สอดคล้องกัน ก็จะไม่ถูกต้อง', - retrievalSettings: 'การตั้งค่าการดึงข้อมูล', - rerankSettings: 'การตั้งค่ารีไลน์', - weightedScore: { - title: 'คะแนนถ่วงน้ําหนัก', - description: 'กลยุทธ์การจัดอันดับใหม่นี้จะกําหนดว่าควรจัดลําดับความสําคัญของการจับคู่ความหมายหรือคีย์เวิร์ด', - semanticFirst: 'ความหมายก่อน', - keywordFirst: 'คีย์เวิร์ดก่อน', - customized: 'กำหนด เอง', - semantic: 'ความหมาย', - keyword: 'คำ', - }, - nTo1RetrievalLegacy: 'การดึงข้อมูล N-to-1 จะเลิกใช้อย่างเป็นทางการตั้งแต่เดือนกันยายน ขอแนะนําให้ใช้การดึงข้อมูลหลายเส้นทางล่าสุดเพื่อให้ได้ผลลัพธ์ที่ดีขึ้น', - nTo1RetrievalLegacyLink: 'ศึกษาเพิ่มเติม', - nTo1RetrievalLegacyLinkText: 'การดึงข้อมูล N-to-1 จะเลิกใช้อย่างเป็นทางการในเดือนกันยายน', - chunkingMode: { - general: 'ทั่วไป', - parentChild: 'พ่อแม่ลูก', - graph: 'กราฟ', - qa: 'ถาม & ตอบ', - }, - parentMode: { - paragraph: 'วรรค', - fullDoc: 'เอกสารฉบับเต็ม', - }, - batchAction: { - selected: 'เลือก', - archive: 'หอจดหมายเหตุ', - delete: 'ลบ', - enable: 'เปิด', - cancel: 'ยกเลิก', - disable: 'เก', - }, - localDocs: 'เอกสารท้องถิ่น', - preprocessDocument: '{{num}} เอกสารการประมวลผลล่วงหน้า', - documentsDisabled: '{{num}} เอกสารถูกปิดใช้งาน - ไม่ได้ใช้งานนานกว่า 30 วัน', - enable: 'เปิด', - allKnowledge: 'ความรู้ทั้งหมด', - allKnowledgeDescription: 'เลือกเพื่อแสดงความรู้ทั้งหมดในพื้นที่ทํางานนี้ เฉพาะเจ้าของพื้นที่ทํางานเท่านั้นที่สามารถจัดการความรู้ทั้งหมดได้', - metadata: { - createMetadata: { - back: 'กลับ', - title: 'ข้อมูลเมตาใหม่', - namePlaceholder: 'เพิ่มชื่อข้อมูลเมตา', - name: 'ชื่อ', - type: 'ประเภท', - }, - checkName: { - invalid: 'ชื่อเมตาดาต้าต้องประกอบด้วยตัวอักษรตัวเล็กเท่านั้น เลข และขีดล่าง และต้องเริ่มต้นด้วยตัวอักษรตัวเล็ก', - empty: 'ชื่อข้อมูลเมตาไม่สามารถเป็นค่าแEmpty', - tooLong: 'ชื่อเมตาดาต้าไม่สามารถเกิน {{max}} ตัวอักษร', - }, - batchEditMetadata: { - multipleValue: 'หลายค่า', - applyToAllSelectDocument: 'ใช้กับเอกสารที่เลือกทั้งหมด', - editMetadata: 'แก้ไขข้อมูลเมตา', - editDocumentsNum: 'การแก้ไขเอกสาร {{num}} ฉบับ', - applyToAllSelectDocumentTip: 'สร้างข้อมูลเมตาใหม่และแก้ไขทั้งหมดข้างต้นโดยอัตโนมัติสำหรับเอกสารที่เลือกทั้งหมด มิฉะนั้นการแก้ไขข้อมูลเมตาจะใช้ได้เฉพาะกับเอกสารที่มีข้อมูลเมตานั้นเท่านั้น.', - }, - selectMetadata: { - manageAction: 'จัดการ', - search: 'ค้นหาข้อมูลเมตา', - newAction: 'ข้อมูลเมตาใหม่', - }, - datasetMetadata: { - deleteTitle: 'ยืนยันเพื่อทำการลบ', - values: '{{num}} ค่า', - disabled: 'คนพิการ', - builtInDescription: 'ข้อมูลเมตาที่สร้างขึ้นในตัวจะถูกดึงออกและสร้างโดยอัตโนมัติ ต้องเปิดใช้งานก่อนใช้งานและไม่สามารถแก้ไขได้', - rename: 'เปลี่ยนชื่อ', - description: 'คุณสามารถจัดการข้อมูลเมตาทั้งหมดในความรู้นี้ได้ที่นี่ การปรับเปลี่ยนจะถูกซิงโครไนซ์ไปยังเอกสารทุกฉบับ', - deleteContent: 'คุณแน่ใจหรือว่าต้องการลบข้อมูลเมตา "{{name}}"', - name: 'ชื่อ', - addMetaData: 'เพิ่มข้อมูลเมตา', - builtIn: 'แบบในตัว', - namePlaceholder: 'ชื่อเมทาดาทา', - }, - documentMetadata: { - technicalParameters: 'พารามิเตอร์ทางเทคนิค', - startLabeling: 'เริ่มการติดป้าย', - metadataToolTip: 'ข้อมูลเมตาเป็นตัวกรองที่สำคัญซึ่งช่วยเพิ่มความถูกต้องและความเกี่ยวข้องของการดึงข้อมูล คุณสามารถปรับแก้และเพิ่มข้อมูลเมตาสำหรับเอกสารนี้ได้ที่นี่', - documentInformation: 'ข้อมูลเอกสาร', - }, - metadata: 'ข้อมูลเมตา', - addMetadata: 'เพิ่มข้อมูลเมตา', - chooseTime: 'เลือกเวลา...', - }, - embeddingModelNotAvailable: 'โมเดลฝังตัวไม่สามารถใช้งานได้.', - updated: 'ปรับ ปรุง', - externalKnowledgeBase: 'ฐานความรู้ภายนอก', - createFromPipeline: 'สร้างจากไปป์ไลน์ความรู้', - serviceApi: { - card: { - title: 'บริการแบ็กเอนด์ API', - apiReference: 'เอกสารอ้างอิง API', - apiKey: 'กุญแจ API', - endpoint: 'จุดเชื่อมต่อ API บริการ', - }, - enabled: 'ให้บริการ', - disabled: 'ถูกปิดใช้งาน', - title: 'บริการ API', - }, - docAllEnabled_one: '{{count}} เอกสารถูกเปิดใช้งาน', - docAllEnabled_other: 'เอกสาร {{count}} ทั้งหมดเปิดใช้งานแล้ว', - partialEnabled_one: 'รวม {{count}} เอกสาร, {{num}} ใช้งานได้', - partialEnabled_other: 'รวม {{count}} เอกสาร, {{num}} ใช้งานได้', - cornerLabel: { - unavailable: 'ไม่สามารถใช้ได้', - pipeline: 'ท่อส่ง', - }, - multimodal: 'หลายรูปแบบ', - imageUploader: { - button: 'ลากและวางไฟล์หรือโฟลเดอร์ หรือ', - browse: 'เรียกดู', - tip: '{{supportTypes}} (สูงสุด {{batchCount}}, {{size}}MB ต่อชิ้น)', - }, -} - -export default translation diff --git a/web/i18n/th-TH/education.json b/web/i18n/th-TH/education.json new file mode 100644 index 0000000000..76a2208413 --- /dev/null +++ b/web/i18n/th-TH/education.json @@ -0,0 +1,74 @@ +{ + "toVerifiedTip": { + "coupon": "คูปองพิเศษ 100%", + "end": "สำหรับแผนมืออาชีพของ Dify.", + "front": "คุณมีสิทธิ์ได้รับสถานะการตรวจสอบการศึกษาแล้ว กรุณากรอกข้อมูลการศึกษาของคุณด้านล่างเพื่อดำเนินการให้เสร็จสิ้นและรับสิทธิ์" + }, + "form": { + "schoolName": { + "title": "ชื่อโรงเรียนของคุณ", + "placeholder": "กรุณาใส่ชื่อของโรงเรียนอย่างเป็นทางการที่ไม่มีการย่อ" + }, + "schoolRole": { + "option": { + "student": "นักเรียน", + "teacher": "ครู", + "administrator": "ผู้ดูแลโรงเรียน" + }, + "title": "บทบาทของคุณในโรงเรียน" + }, + "terms": { + "desc": { + "front": "ข้อมูลของคุณและการใช้สถานะการตรวจสอบการศึกษาอยู่ภายใต้เงื่อนไขของเรา", + "end": ". โดยการส่ง:", + "privacyPolicy": "นโยบายความเป็นส่วนตัว", + "and": "และ", + "termsOfService": "ข้อกำหนดในการให้บริการ" + }, + "option": { + "age": "ฉันยืนยันว่าฉันมีอายุอย่างน้อย 18 ปี", + "inSchool": "ฉันยืนยันว่าฉันได้ลงทะเบียนหรือทำงานที่สถาบันที่ระบุไว้ Dify อาจขอหลักฐานการลงทะเบียน/การจ้างงาน หากฉันแสดงความไม่ถูกต้องเกี่ยวกับคุณสมบัติของฉัน ฉันตกลงที่จะชำระค่าธรรมเนียมใด ๆ ที่ถูกยกเว้นไปในเบื้องต้นตามสถานะการศึกษาของฉัน." + }, + "title": "ข้อกำหนดและเงื่อนไข" + } + }, + "toVerified": "ตรวจสอบการศึกษา", + "rejectTitle": "การตรวจสอบการศึกษา Dify ของคุณถูกปฏิเสธ", + "emailLabel": "อีเมลปัจจุบันของคุณ", + "currentSigned": "ลงชื่อเข้าใช้ในฐานะ", + "successTitle": "คุณได้รับการรับรองการศึกษา Dify", + "learn": "เรียนรู้วิธีการตรวจสอบการศึกษา", + "submitError": "การส่งแบบฟอร์มล้มเหลว โปรดลองอีกครั้งในภายหลัง.", + "submit": "ส่ง", + "successContent": "เราได้ออกคูปองส่วนลด 100% สำหรับแผน Dify Professional ให้กับบัญชีของคุณ คูปองนี้สามารถใช้ได้เป็นระยะเวลา 1 ปี กรุณาใช้ภายในช่วงระยะเวลาที่กำหนด.", + "rejectContent": "น่าเสียดายที่คุณไม่มีสิทธิ์ได้รับสถานะการตรวจสอบการศึกษาและดังนั้นคุณจึงไม่สามารถรับคูปองพิเศษ 100% สำหรับแผนมืออาชีพ Dify หากคุณใช้ที่อยู่อีเมลนี้.", + "notice": { + "expired": { + "summary": { + "line1": "คุณยังสามารถเข้าถึงและใช้ Dify ได้อยู่", + "line2": "อย่างไรก็ตาม คุณไม่มีสิทธิ์ในการใช้คูปองส่วนลดการศึกษาใหม่อีกต่อไป" + }, + "title": "สถานภาพการศึกษาของคุณหมดอายุแล้ว" + }, + "isAboutToExpire": { + "summary": "ไม่ต้องกังวล — สิ่งนี้จะไม่กระทบต่อการสมัครสมาชิกปัจจุบันของคุณ แต่คุณจะไม่ได้รับส่วนลดการศึกษาขณะต่ออายุเว้นแต่คุณจะยืนยันสถานะของคุณอีกครั้ง.", + "title": "สถานะการศึกษาของคุณจะหมดอายุในวันที่ {{date}}" + }, + "stillInEducation": { + "title": "ยังอยู่ในวัยเรียนใช่ไหม?", + "isAboutToExpire": "ตรวจสอบอีกครั้งเดี๋ยวนี้เพื่อรับคูปองใหม่สำหรับปีการศึกษาที่จะมาถึง มันจะถูกบันทึกในบัญชีของคุณและพร้อมใช้งานในการต่ออายุครั้งถัดไปของคุณ.", + "expired": "ตรวจสอบอีกครั้งตอนนี้เพื่อรับคูปองใหม่สำหรับปีการศึกษาใหม่ เราจะเพิ่มมันเข้ากับบัญชีของคุณและคุณสามารถใช้มันสำหรับการอัปเกรดครั้งถัดไปได้" + }, + "alreadyGraduated": { + "title": "จบการศึกษาแล้วเหรอ?", + "expired": "สามารถอัปเกรดเมื่อใดก็ได้เพื่อเข้าถึงฟีเจอร์แบบชำระเงินอย่างเต็มที่", + "isAboutToExpire": "การสมัครสมาชิกปัจจุบันของคุณจะยังคงมีผลต่อไป เมื่อมันสิ้นสุดลง คุณจะถูกย้ายไปยังแผน Sandbox หรือคุณสามารถอัปเกรดได้ทุกเมื่อเพื่อคืนสิทธิ์การเข้าถึงฟีเจอร์แบบชำระเงินทั้งหมด." + }, + "action": { + "reVerify": "ตรวจสอบอีกครั้ง", + "upgrade": "อัปเกรด", + "dismiss": "ปฏิเสธ" + }, + "dateFormat": "วัน/เดือน/ปี" + } +} diff --git a/web/i18n/th-TH/education.ts b/web/i18n/th-TH/education.ts deleted file mode 100644 index bb975f7fa1..0000000000 --- a/web/i18n/th-TH/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerifiedTip: { - coupon: 'คูปองพิเศษ 100%', - end: 'สำหรับแผนมืออาชีพของ Dify.', - front: 'คุณมีสิทธิ์ได้รับสถานะการตรวจสอบการศึกษาแล้ว กรุณากรอกข้อมูลการศึกษาของคุณด้านล่างเพื่อดำเนินการให้เสร็จสิ้นและรับสิทธิ์', - }, - form: { - schoolName: { - title: 'ชื่อโรงเรียนของคุณ', - placeholder: 'กรุณาใส่ชื่อของโรงเรียนอย่างเป็นทางการที่ไม่มีการย่อ', - }, - schoolRole: { - option: { - student: 'นักเรียน', - teacher: 'ครู', - administrator: 'ผู้ดูแลโรงเรียน', - }, - title: 'บทบาทของคุณในโรงเรียน', - }, - terms: { - desc: { - front: 'ข้อมูลของคุณและการใช้สถานะการตรวจสอบการศึกษาอยู่ภายใต้เงื่อนไขของเรา', - end: '. โดยการส่ง:', - privacyPolicy: 'นโยบายความเป็นส่วนตัว', - and: 'และ', - termsOfService: 'ข้อกำหนดในการให้บริการ', - }, - option: { - age: 'ฉันยืนยันว่าฉันมีอายุอย่างน้อย 18 ปี', - inSchool: 'ฉันยืนยันว่าฉันได้ลงทะเบียนหรือทำงานที่สถาบันที่ระบุไว้ Dify อาจขอหลักฐานการลงทะเบียน/การจ้างงาน หากฉันแสดงความไม่ถูกต้องเกี่ยวกับคุณสมบัติของฉัน ฉันตกลงที่จะชำระค่าธรรมเนียมใด ๆ ที่ถูกยกเว้นไปในเบื้องต้นตามสถานะการศึกษาของฉัน.', - }, - title: 'ข้อกำหนดและเงื่อนไข', - }, - }, - toVerified: 'ตรวจสอบการศึกษา', - rejectTitle: 'การตรวจสอบการศึกษา Dify ของคุณถูกปฏิเสธ', - emailLabel: 'อีเมลปัจจุบันของคุณ', - currentSigned: 'ลงชื่อเข้าใช้ในฐานะ', - successTitle: 'คุณได้รับการรับรองการศึกษา Dify', - learn: 'เรียนรู้วิธีการตรวจสอบการศึกษา', - submitError: 'การส่งแบบฟอร์มล้มเหลว โปรดลองอีกครั้งในภายหลัง.', - submit: 'ส่ง', - successContent: 'เราได้ออกคูปองส่วนลด 100% สำหรับแผน Dify Professional ให้กับบัญชีของคุณ คูปองนี้สามารถใช้ได้เป็นระยะเวลา 1 ปี กรุณาใช้ภายในช่วงระยะเวลาที่กำหนด.', - rejectContent: 'น่าเสียดายที่คุณไม่มีสิทธิ์ได้รับสถานะการตรวจสอบการศึกษาและดังนั้นคุณจึงไม่สามารถรับคูปองพิเศษ 100% สำหรับแผนมืออาชีพ Dify หากคุณใช้ที่อยู่อีเมลนี้.', - notice: { - expired: { - summary: { - line1: 'คุณยังสามารถเข้าถึงและใช้ Dify ได้อยู่', - line2: 'อย่างไรก็ตาม คุณไม่มีสิทธิ์ในการใช้คูปองส่วนลดการศึกษาใหม่อีกต่อไป', - }, - title: 'สถานภาพการศึกษาของคุณหมดอายุแล้ว', - }, - isAboutToExpire: { - summary: 'ไม่ต้องกังวล — สิ่งนี้จะไม่กระทบต่อการสมัครสมาชิกปัจจุบันของคุณ แต่คุณจะไม่ได้รับส่วนลดการศึกษาขณะต่ออายุเว้นแต่คุณจะยืนยันสถานะของคุณอีกครั้ง.', - title: 'สถานะการศึกษาของคุณจะหมดอายุในวันที่ {{date}}', - }, - stillInEducation: { - title: 'ยังอยู่ในวัยเรียนใช่ไหม?', - isAboutToExpire: 'ตรวจสอบอีกครั้งเดี๋ยวนี้เพื่อรับคูปองใหม่สำหรับปีการศึกษาที่จะมาถึง มันจะถูกบันทึกในบัญชีของคุณและพร้อมใช้งานในการต่ออายุครั้งถัดไปของคุณ.', - expired: 'ตรวจสอบอีกครั้งตอนนี้เพื่อรับคูปองใหม่สำหรับปีการศึกษาใหม่ เราจะเพิ่มมันเข้ากับบัญชีของคุณและคุณสามารถใช้มันสำหรับการอัปเกรดครั้งถัดไปได้', - }, - alreadyGraduated: { - title: 'จบการศึกษาแล้วเหรอ?', - expired: 'สามารถอัปเกรดเมื่อใดก็ได้เพื่อเข้าถึงฟีเจอร์แบบชำระเงินอย่างเต็มที่', - isAboutToExpire: 'การสมัครสมาชิกปัจจุบันของคุณจะยังคงมีผลต่อไป เมื่อมันสิ้นสุดลง คุณจะถูกย้ายไปยังแผน Sandbox หรือคุณสามารถอัปเกรดได้ทุกเมื่อเพื่อคืนสิทธิ์การเข้าถึงฟีเจอร์แบบชำระเงินทั้งหมด.', - }, - action: { - reVerify: 'ตรวจสอบอีกครั้ง', - upgrade: 'อัปเกรด', - dismiss: 'ปฏิเสธ', - }, - dateFormat: 'วัน/เดือน/ปี', - }, -} - -export default translation diff --git a/web/i18n/th-TH/explore.json b/web/i18n/th-TH/explore.json new file mode 100644 index 0000000000..2da74873bd --- /dev/null +++ b/web/i18n/th-TH/explore.json @@ -0,0 +1,42 @@ +{ + "title": "สํารวจ", + "sidebar": { + "discovery": "การค้นพบ", + "chat": "สนทนา", + "workspace": "พื้นที่", + "action": { + "pin": "เข็มกลัด", + "unpin": "ปลดหมุด", + "rename": "ตั้งชื่อใหม่", + "delete": "ลบ" + }, + "delete": { + "title": "ลบแอป", + "content": "คุณแน่ใจหรือไม่ว่าต้องการลบแอปนี้?" + } + }, + "apps": { + "title": "สํารวจแอพโดย Dify", + "description": "ใช้แอปเทมเพลตเหล่านี้ทันทีหรือปรับแต่งแอปของคุณเองตามเทมเพลต", + "allCategories": "แนะ นำ" + }, + "appCard": { + "addToWorkspace": "เพิ่มไปยังพื้นที่ทํางาน", + "customize": "ปรับแต่ง" + }, + "appCustomize": { + "title": "สร้างแอปจาก {{name}}", + "subTitle": "ไอคอนและชื่อแอป", + "nameRequired": "ต้องใช้ชื่อแอป" + }, + "category": { + "Assistant": "ผู้ช่วย", + "Writing": "การเขียน", + "Translate": "แปล", + "Programming": "โปรแกรม", + "HR": "ชั่วโมง", + "Workflow": "เวิร์กโฟลว์", + "Agent": "ตัวแทน", + "Entertainment": "ความบันเทิง" + } +} diff --git a/web/i18n/th-TH/explore.ts b/web/i18n/th-TH/explore.ts deleted file mode 100644 index d8eb53d194..0000000000 --- a/web/i18n/th-TH/explore.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - title: 'สํารวจ', - sidebar: { - discovery: 'การค้นพบ', - chat: 'สนทนา', - workspace: 'พื้นที่', - action: { - pin: 'เข็มกลัด', - unpin: 'ปลดหมุด', - rename: 'ตั้งชื่อใหม่', - delete: 'ลบ', - }, - delete: { - title: 'ลบแอป', - content: 'คุณแน่ใจหรือไม่ว่าต้องการลบแอปนี้?', - }, - }, - apps: { - title: 'สํารวจแอพโดย Dify', - description: 'ใช้แอปเทมเพลตเหล่านี้ทันทีหรือปรับแต่งแอปของคุณเองตามเทมเพลต', - allCategories: 'แนะ นำ', - }, - appCard: { - addToWorkspace: 'เพิ่มไปยังพื้นที่ทํางาน', - customize: 'ปรับแต่ง', - }, - appCustomize: { - title: 'สร้างแอปจาก {{name}}', - subTitle: 'ไอคอนและชื่อแอป', - nameRequired: 'ต้องใช้ชื่อแอป', - }, - category: { - Assistant: 'ผู้ช่วย', - Writing: 'การเขียน', - Translate: 'แปล', - Programming: 'โปรแกรม', - HR: 'ชั่วโมง', - Workflow: 'เวิร์กโฟลว์', - Agent: 'ตัวแทน', - Entertainment: 'ความบันเทิง', - }, -} - -export default translation diff --git a/web/i18n/th-TH/layout.json b/web/i18n/th-TH/layout.json new file mode 100644 index 0000000000..2960a427d6 --- /dev/null +++ b/web/i18n/th-TH/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "collapseSidebar": "ยุบแถบด้านข้าง", + "expandSidebar": "ขยายแถบด้านข้าง" + } +} diff --git a/web/i18n/th-TH/layout.ts b/web/i18n/th-TH/layout.ts deleted file mode 100644 index 83a8acc6da..0000000000 --- a/web/i18n/th-TH/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - collapseSidebar: 'ยุบแถบด้านข้าง', - expandSidebar: 'ขยายแถบด้านข้าง', - }, -} - -export default translation diff --git a/web/i18n/th-TH/login.json b/web/i18n/th-TH/login.json new file mode 100644 index 0000000000..4855e0d0ef --- /dev/null +++ b/web/i18n/th-TH/login.json @@ -0,0 +1,124 @@ +{ + "pageTitle": "เฮ้ มาเริ่มกันเลย!", + "welcome": "👋 ยินดีต้อนรับสู่ Dify โปรดเข้าสู่ระบบเพื่อดําเนินการต่อ", + "email": "ที่อยู่อีเมล", + "emailPlaceholder": "อีเมลของคุณ", + "password": "รหัสผ่าน", + "passwordPlaceholder": "รหัสผ่านของคุณ", + "name": "ชื่อผู้ใช้", + "namePlaceholder": "ชื่อผู้ใช้ของคุณ", + "forget": "ลืมรหัสผ่านใช่ไหม", + "signBtn": "เข้าสู่ระบบ", + "continueWithCode": "ดําเนินการต่อด้วยรหัส", + "sendVerificationCode": "ส่งรหัสยืนยัน", + "usePassword": "ใช้รหัสผ่าน", + "useVerificationCode": "ใช้รหัสยืนยัน", + "or": "หรือ", + "installBtn": "สถาปนา", + "setAdminAccount": "การตั้งค่าบัญชีผู้ดูแลระบบ", + "setAdminAccountDesc": "สิทธิ์สูงสุดสําหรับบัญชีผู้ดูแลระบบ ซึ่งสามารถใช้สร้างแอปพลิเคชันและจัดการผู้ให้บริการ LLM เป็นต้น", + "createAndSignIn": "สร้างและลงชื่อเข้าใช้", + "oneMoreStep": "อีกหนึ่งขั้นตอน", + "createSample": "จากข้อมูลนี้ เราจะสร้างแอปพลิเคชันตัวอย่างสําหรับคุณ", + "invitationCode": "รหัสเชิญ", + "invitationCodePlaceholder": "รหัสเชิญของคุณ", + "interfaceLanguage": "ภาษาอินเทอร์เฟซ", + "timezone": "เขตเวลา", + "go": "ไปที่ Dify", + "sendUsMail": "ส่งอีเมลถึงเรา แล้วเราจะจัดการกับคําขอเชิญ", + "acceptPP": "ฉันได้อ่านและยอมรับนโยบายความเป็นส่วนตัวแล้ว", + "reset": "โปรดเรียกใช้คําสั่งต่อไปนี้เพื่อรีเซ็ตรหัสผ่านของคุณ", + "withGitHub": "ดําเนินการต่อด้วย GitHub", + "withGoogle": "ดําเนินการต่อกับ Google", + "withSSO": "ดําเนินการต่อด้วย SSO", + "rightTitle": "ปลดล็อกศักยภาพของ LLM อย่างเต็มที่", + "rightDesc": "สร้างแอปพลิเคชัน AI ที่ดึงดูดสายตา ใช้งานได้ และปรับปรุงได้อย่างง่ายดาย", + "tos": "ข้อกําหนดในการให้บริการ", + "pp": "นโยบายความเป็นส่วนตัว", + "tosDesc": "การลงทะเบียนแสดงว่าคุณยอมรับ", + "goToInit": "หากคุณยังไม่ได้เริ่มต้นบัญชี โปรดไปที่หน้าการเริ่มต้น", + "dontHave": "ไม่มี?", + "invalidInvitationCode": "รหัสเชิญไม่ถูกต้อง", + "accountAlreadyInited": "บัญชีเริ่มต้นแล้ว", + "forgotPassword": "ลืมรหัสผ่านใช่ไหม", + "resetLinkSent": "รีเซ็ตลิงก์ที่ส่ง", + "sendResetLink": "ส่งลิงก์รีเซ็ต", + "backToSignIn": "กลับไปที่การลงชื่อเข้าใช้", + "forgotPasswordDesc": "โปรดป้อนที่อยู่อีเมลของคุณเพื่อรีเซ็ตรหัสผ่านของคุณ เราจะส่งอีเมลพร้อมคําแนะนําเกี่ยวกับวิธีการรีเซ็ตรหัสผ่านของคุณ", + "checkEmailForResetLink": "โปรดตรวจสอบอีเมลของคุณเพื่อหาลิงก์สําหรับรีเซ็ตรหัสผ่านของคุณ หากไม่ปรากฏขึ้นภายใน 2-3 นาที โปรดตรวจสอบโฟลเดอร์สแปมของคุณ", + "passwordChanged": "ลงชื่อเข้าใช้ตอนนี้", + "changePassword": "ตั้งรหัสผ่าน", + "changePasswordTip": "โปรดป้อนรหัสผ่านใหม่สําหรับบัญชีของคุณ", + "changePasswordBtn": "ตั้งรหัสผ่าน", + "invalidToken": "โทเค็นไม่ถูกต้องหรือหมดอายุ", + "confirmPassword": "ยืนยันรหัสผ่าน", + "confirmPasswordPlaceholder": "ยืนยันรหัสผ่านใหม่ของคุณ", + "passwordChangedTip": "เปลี่ยนรหัสผ่านของคุณเรียบร้อยแล้ว", + "error": { + "emailEmpty": "ต้องระบุที่อยู่อีเมล", + "emailInValid": "โปรดป้อนที่อยู่อีเมลที่ถูกต้อง", + "nameEmpty": "ต้องระบุชื่อ", + "passwordEmpty": "ต้องใช้รหัสผ่าน", + "passwordLengthInValid": "รหัสผ่านต้องมีอย่างน้อย 8 อักขระ", + "passwordInvalid": "รหัสผ่านต้องมีตัวอักษรและตัวเลข และความยาวต้องมากกว่า 8", + "registrationNotAllowed": "ไม่พบบัญชี โปรดติดต่อผู้ดูแลระบบเพื่อลงทะเบียน", + "invalidEmailOrPassword": "อีเมลหรือรหัสผ่านไม่ถูกต้อง." + }, + "license": { + "tip": "ก่อนเริ่ม Dify Community Edition โปรดอ่าน GitHub", + "link": "ใบอนุญาตโอเพ่นซอร์ส" + }, + "join": "ต่อ", + "joinTipStart": "เชิญคุณเข้าร่วม", + "joinTipEnd": "ทีมงานใน Dify", + "invalid": "ลิงก์หมดอายุ", + "explore": "สํารวจ Dify", + "activatedTipStart": "คุณได้เข้าร่วม", + "activatedTipEnd": "ทีม", + "activated": "ลงชื่อเข้าใช้ตอนนี้", + "adminInitPassword": "รหัสผ่านเริ่มต้นผู้ดูแลระบบ", + "validate": "ตรวจ สอบ", + "checkCode": { + "checkYourEmail": "ตรวจสอบอีเมลของคุณ", + "validTime": "โปรดทราบว่ารหัสนี้ใช้ได้นาน 5 นาที", + "verificationCode": "รหัสยืนยัน", + "verificationCodePlaceholder": "ป้อนรหัส 6 หลัก", + "verify": "ตรวจสอบ", + "didNotReceiveCode": "ไม่ได้รับรหัสใช่ไหม", + "resend": "ส่ง", + "useAnotherMethod": "ใช้วิธีอื่น", + "emptyCode": "ต้องใช้รหัส", + "invalidCode": "รหัสไม่ถูกต้อง", + "tipsPrefix": "เราส่งรหัสตรวจสอบไปยัง" + }, + "resetPassword": "รีเซ็ตรหัสผ่าน", + "resetPasswordDesc": "พิมพ์อีเมลที่คุณใช้ลงทะเบียนบน Dify แล้วเราจะส่งอีเมลรีเซ็ตรหัสผ่านให้คุณ", + "backToLogin": "กลับไปที่เข้าสู่ระบบ", + "setYourAccount": "ตั้งค่าบัญชีของคุณ", + "enterYourName": "โปรดป้อนชื่อผู้ใช้ของคุณ", + "back": "ย้อนกลับ", + "noLoginMethod": "ไม่ได้กําหนดค่าวิธีการตรวจสอบสิทธิ์", + "noLoginMethodTip": "โปรดติดต่อผู้ดูแลระบบเพื่อเพิ่มวิธีการรับรองความถูกต้อง", + "licenseExpired": "ใบอนุญาตหมดอายุ", + "licenseExpiredTip": "สิทธิ์การใช้งาน Dify Enterprise สําหรับพื้นที่ทํางานของคุณหมดอายุแล้ว โปรดติดต่อผู้ดูแลระบบของคุณเพื่อใช้ Dify ต่อไป", + "licenseLost": "ใบอนุญาตสูญหาย", + "licenseLostTip": "เชื่อมต่อเซิร์ฟเวอร์ใบอนุญาต Dify ไม่สําเร็จ โปรดติดต่อผู้ดูแลระบบของคุณเพื่อใช้ Dify ต่อไป", + "licenseInactive": "ใบอนุญาตไม่ใช้งาน", + "licenseInactiveTip": "สิทธิ์การใช้งาน Dify Enterprise สําหรับพื้นที่ทํางานของคุณไม่ได้ใช้งาน โปรดติดต่อผู้ดูแลระบบของคุณเพื่อใช้ Dify ต่อไป", + "webapp": { + "noLoginMethodTip": "กรุณาติดต่อผู้ดูแลระบบเพื่อเพิ่มวิธีการตรวจสอบสิทธิ์.", + "noLoginMethod": "ไม่ได้กำหนดวิธีการตรวจสอบสิทธิ์สำหรับเว็บแอป", + "disabled": "การรับรองความถูกต้องของเว็บแอปถูกปิดใช้งาน โปรดติดต่อผู้ดูแลระบบเพื่อเปิดใช้งาน คุณสามารถลองใช้แอปโดยตรงได้", + "login": "เข้าสู่ระบบ" + }, + "signup": { + "signIn": "เข้าสู่ระบบ", + "signUp": "สมัครสมาชิก", + "createAccount": "สร้างบัญชีของคุณ", + "noAccount": "ยังไม่มีบัญชีใช่ไหม?", + "welcome": "👋 ยินดีต้อนรับ! โปรดกรอกข้อมูลเพื่อเริ่มต้น.", + "verifyMail": "โปรดดำเนินการต่อด้วยรหัสการตรวจสอบ", + "haveAccount": "มีบัญชีอยู่แล้วใช่ไหม?" + }, + "pageTitleForE": "เฮ้ เรามาเริ่มกันเถอะ!" +} diff --git a/web/i18n/th-TH/login.ts b/web/i18n/th-TH/login.ts deleted file mode 100644 index 517eee95a2..0000000000 --- a/web/i18n/th-TH/login.ts +++ /dev/null @@ -1,126 +0,0 @@ -const translation = { - pageTitle: 'เฮ้ มาเริ่มกันเลย!', - welcome: '👋 ยินดีต้อนรับสู่ Dify โปรดเข้าสู่ระบบเพื่อดําเนินการต่อ', - email: 'ที่อยู่อีเมล', - emailPlaceholder: 'อีเมลของคุณ', - password: 'รหัสผ่าน', - passwordPlaceholder: 'รหัสผ่านของคุณ', - name: 'ชื่อผู้ใช้', - namePlaceholder: 'ชื่อผู้ใช้ของคุณ', - forget: 'ลืมรหัสผ่านใช่ไหม', - signBtn: 'เข้าสู่ระบบ', - continueWithCode: 'ดําเนินการต่อด้วยรหัส', - sendVerificationCode: 'ส่งรหัสยืนยัน', - usePassword: 'ใช้รหัสผ่าน', - useVerificationCode: 'ใช้รหัสยืนยัน', - or: 'หรือ', - installBtn: 'สถาปนา', - setAdminAccount: 'การตั้งค่าบัญชีผู้ดูแลระบบ', - setAdminAccountDesc: 'สิทธิ์สูงสุดสําหรับบัญชีผู้ดูแลระบบ ซึ่งสามารถใช้สร้างแอปพลิเคชันและจัดการผู้ให้บริการ LLM เป็นต้น', - createAndSignIn: 'สร้างและลงชื่อเข้าใช้', - oneMoreStep: 'อีกหนึ่งขั้นตอน', - createSample: 'จากข้อมูลนี้ เราจะสร้างแอปพลิเคชันตัวอย่างสําหรับคุณ', - invitationCode: 'รหัสเชิญ', - invitationCodePlaceholder: 'รหัสเชิญของคุณ', - interfaceLanguage: 'ภาษาอินเทอร์เฟซ', - timezone: 'เขตเวลา', - go: 'ไปที่ Dify', - sendUsMail: 'ส่งอีเมลถึงเรา แล้วเราจะจัดการกับคําขอเชิญ', - acceptPP: 'ฉันได้อ่านและยอมรับนโยบายความเป็นส่วนตัวแล้ว', - reset: 'โปรดเรียกใช้คําสั่งต่อไปนี้เพื่อรีเซ็ตรหัสผ่านของคุณ', - withGitHub: 'ดําเนินการต่อด้วย GitHub', - withGoogle: 'ดําเนินการต่อกับ Google', - withSSO: 'ดําเนินการต่อด้วย SSO', - rightTitle: 'ปลดล็อกศักยภาพของ LLM อย่างเต็มที่', - rightDesc: 'สร้างแอปพลิเคชัน AI ที่ดึงดูดสายตา ใช้งานได้ และปรับปรุงได้อย่างง่ายดาย', - tos: 'ข้อกําหนดในการให้บริการ', - pp: 'นโยบายความเป็นส่วนตัว', - tosDesc: 'การลงทะเบียนแสดงว่าคุณยอมรับ', - goToInit: 'หากคุณยังไม่ได้เริ่มต้นบัญชี โปรดไปที่หน้าการเริ่มต้น', - dontHave: 'ไม่มี?', - invalidInvitationCode: 'รหัสเชิญไม่ถูกต้อง', - accountAlreadyInited: 'บัญชีเริ่มต้นแล้ว', - forgotPassword: 'ลืมรหัสผ่านใช่ไหม', - resetLinkSent: 'รีเซ็ตลิงก์ที่ส่ง', - sendResetLink: 'ส่งลิงก์รีเซ็ต', - backToSignIn: 'กลับไปที่การลงชื่อเข้าใช้', - forgotPasswordDesc: 'โปรดป้อนที่อยู่อีเมลของคุณเพื่อรีเซ็ตรหัสผ่านของคุณ เราจะส่งอีเมลพร้อมคําแนะนําเกี่ยวกับวิธีการรีเซ็ตรหัสผ่านของคุณ', - checkEmailForResetLink: 'โปรดตรวจสอบอีเมลของคุณเพื่อหาลิงก์สําหรับรีเซ็ตรหัสผ่านของคุณ หากไม่ปรากฏขึ้นภายใน 2-3 นาที โปรดตรวจสอบโฟลเดอร์สแปมของคุณ', - passwordChanged: 'ลงชื่อเข้าใช้ตอนนี้', - changePassword: 'ตั้งรหัสผ่าน', - changePasswordTip: 'โปรดป้อนรหัสผ่านใหม่สําหรับบัญชีของคุณ', - changePasswordBtn: 'ตั้งรหัสผ่าน', - invalidToken: 'โทเค็นไม่ถูกต้องหรือหมดอายุ', - confirmPassword: 'ยืนยันรหัสผ่าน', - confirmPasswordPlaceholder: 'ยืนยันรหัสผ่านใหม่ของคุณ', - passwordChangedTip: 'เปลี่ยนรหัสผ่านของคุณเรียบร้อยแล้ว', - error: { - emailEmpty: 'ต้องระบุที่อยู่อีเมล', - emailInValid: 'โปรดป้อนที่อยู่อีเมลที่ถูกต้อง', - nameEmpty: 'ต้องระบุชื่อ', - passwordEmpty: 'ต้องใช้รหัสผ่าน', - passwordLengthInValid: 'รหัสผ่านต้องมีอย่างน้อย 8 อักขระ', - passwordInvalid: 'รหัสผ่านต้องมีตัวอักษรและตัวเลข และความยาวต้องมากกว่า 8', - registrationNotAllowed: 'ไม่พบบัญชี โปรดติดต่อผู้ดูแลระบบเพื่อลงทะเบียน', - invalidEmailOrPassword: 'อีเมลหรือรหัสผ่านไม่ถูกต้อง.', - }, - license: { - tip: 'ก่อนเริ่ม Dify Community Edition โปรดอ่าน GitHub', - link: 'ใบอนุญาตโอเพ่นซอร์ส', - }, - join: 'ต่อ', - joinTipStart: 'เชิญคุณเข้าร่วม', - joinTipEnd: 'ทีมงานใน Dify', - invalid: 'ลิงก์หมดอายุ', - explore: 'สํารวจ Dify', - activatedTipStart: 'คุณได้เข้าร่วม', - activatedTipEnd: 'ทีม', - activated: 'ลงชื่อเข้าใช้ตอนนี้', - adminInitPassword: 'รหัสผ่านเริ่มต้นผู้ดูแลระบบ', - validate: 'ตรวจ สอบ', - checkCode: { - checkYourEmail: 'ตรวจสอบอีเมลของคุณ', - validTime: 'โปรดทราบว่ารหัสนี้ใช้ได้นาน 5 นาที', - verificationCode: 'รหัสยืนยัน', - verificationCodePlaceholder: 'ป้อนรหัส 6 หลัก', - verify: 'ตรวจสอบ', - didNotReceiveCode: 'ไม่ได้รับรหัสใช่ไหม', - resend: 'ส่ง', - useAnotherMethod: 'ใช้วิธีอื่น', - emptyCode: 'ต้องใช้รหัส', - invalidCode: 'รหัสไม่ถูกต้อง', - tipsPrefix: 'เราส่งรหัสตรวจสอบไปยัง', - }, - resetPassword: 'รีเซ็ตรหัสผ่าน', - resetPasswordDesc: 'พิมพ์อีเมลที่คุณใช้ลงทะเบียนบน Dify แล้วเราจะส่งอีเมลรีเซ็ตรหัสผ่านให้คุณ', - backToLogin: 'กลับไปที่เข้าสู่ระบบ', - setYourAccount: 'ตั้งค่าบัญชีของคุณ', - enterYourName: 'โปรดป้อนชื่อผู้ใช้ของคุณ', - back: 'ย้อนกลับ', - noLoginMethod: 'ไม่ได้กําหนดค่าวิธีการตรวจสอบสิทธิ์', - noLoginMethodTip: 'โปรดติดต่อผู้ดูแลระบบเพื่อเพิ่มวิธีการรับรองความถูกต้อง', - licenseExpired: 'ใบอนุญาตหมดอายุ', - licenseExpiredTip: 'สิทธิ์การใช้งาน Dify Enterprise สําหรับพื้นที่ทํางานของคุณหมดอายุแล้ว โปรดติดต่อผู้ดูแลระบบของคุณเพื่อใช้ Dify ต่อไป', - licenseLost: 'ใบอนุญาตสูญหาย', - licenseLostTip: 'เชื่อมต่อเซิร์ฟเวอร์ใบอนุญาต Dify ไม่สําเร็จ โปรดติดต่อผู้ดูแลระบบของคุณเพื่อใช้ Dify ต่อไป', - licenseInactive: 'ใบอนุญาตไม่ใช้งาน', - licenseInactiveTip: 'สิทธิ์การใช้งาน Dify Enterprise สําหรับพื้นที่ทํางานของคุณไม่ได้ใช้งาน โปรดติดต่อผู้ดูแลระบบของคุณเพื่อใช้ Dify ต่อไป', - webapp: { - noLoginMethodTip: 'กรุณาติดต่อผู้ดูแลระบบเพื่อเพิ่มวิธีการตรวจสอบสิทธิ์.', - noLoginMethod: 'ไม่ได้กำหนดวิธีการตรวจสอบสิทธิ์สำหรับเว็บแอป', - disabled: 'การรับรองความถูกต้องของเว็บแอปถูกปิดใช้งาน โปรดติดต่อผู้ดูแลระบบเพื่อเปิดใช้งาน คุณสามารถลองใช้แอปโดยตรงได้', - login: 'เข้าสู่ระบบ', - }, - signup: { - signIn: 'เข้าสู่ระบบ', - signUp: 'สมัครสมาชิก', - createAccount: 'สร้างบัญชีของคุณ', - noAccount: 'ยังไม่มีบัญชีใช่ไหม?', - welcome: '👋 ยินดีต้อนรับ! โปรดกรอกข้อมูลเพื่อเริ่มต้น.', - verifyMail: 'โปรดดำเนินการต่อด้วยรหัสการตรวจสอบ', - haveAccount: 'มีบัญชีอยู่แล้วใช่ไหม?', - }, - pageTitleForE: 'เฮ้ เรามาเริ่มกันเถอะ!', -} - -export default translation diff --git a/web/i18n/th-TH/oauth.json b/web/i18n/th-TH/oauth.json new file mode 100644 index 0000000000..585d12dd15 --- /dev/null +++ b/web/i18n/th-TH/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "needLogin": "โปรดเข้าสู่ระบบเพื่ออนุญาต", + "notLoggedIn": "แอปพลิเคชันนี้ต้องการเข้าถึงบัญชี Dify Cloud ของคุณ", + "loggedIn": "แอปพลิเคชันนี้ต้องการเข้าถึงข้อมูลต่อไปนี้จากบัญชี Dify Cloud ของคุณ.", + "common": "เรามีความเคารพต่อความเป็นส่วนตัวของคุณและจะใช้ข้อมูลนี้เพื่อปรับปรุงประสบการณ์ของคุณกับเครื่องมือนักพัฒนาของเราเท่านั้น." + }, + "scopes": { + "email": "อีเมล", + "languagePreference": "ความชอบภาษา", + "timezone": "เขตเวลา", + "name": "ชื่อ", + "avatar": "อวตาร" + }, + "error": { + "authorizeFailed": "การอนุญาตล้มเหลว", + "authAppInfoFetchFailed": "ไม่สามารถดึงข้อมูลแอปเพื่อการอนุญาตได้", + "invalidParams": "พารามิเตอร์ไม่ถูกต้อง" + }, + "login": "เข้าสู่ระบบ", + "continue": "ดำเนินต่อไป", + "connect": "เชื่อมต่อกับ", + "unknownApp": "แอปพลิเคชันที่ไม่รู้จัก", + "switchAccount": "เปลี่ยนบัญชี" +} diff --git a/web/i18n/th-TH/oauth.ts b/web/i18n/th-TH/oauth.ts deleted file mode 100644 index 626510b684..0000000000 --- a/web/i18n/th-TH/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - needLogin: 'โปรดเข้าสู่ระบบเพื่ออนุญาต', - notLoggedIn: 'แอปพลิเคชันนี้ต้องการเข้าถึงบัญชี Dify Cloud ของคุณ', - loggedIn: 'แอปพลิเคชันนี้ต้องการเข้าถึงข้อมูลต่อไปนี้จากบัญชี Dify Cloud ของคุณ.', - common: 'เรามีความเคารพต่อความเป็นส่วนตัวของคุณและจะใช้ข้อมูลนี้เพื่อปรับปรุงประสบการณ์ของคุณกับเครื่องมือนักพัฒนาของเราเท่านั้น.', - }, - scopes: { - email: 'อีเมล', - languagePreference: 'ความชอบภาษา', - timezone: 'เขตเวลา', - name: 'ชื่อ', - avatar: 'อวตาร', - }, - error: { - authorizeFailed: 'การอนุญาตล้มเหลว', - authAppInfoFetchFailed: 'ไม่สามารถดึงข้อมูลแอปเพื่อการอนุญาตได้', - invalidParams: 'พารามิเตอร์ไม่ถูกต้อง', - }, - login: 'เข้าสู่ระบบ', - continue: 'ดำเนินต่อไป', - connect: 'เชื่อมต่อกับ', - unknownApp: 'แอปพลิเคชันที่ไม่รู้จัก', - switchAccount: 'เปลี่ยนบัญชี', -} - -export default translation diff --git a/web/i18n/th-TH/pipeline.json b/web/i18n/th-TH/pipeline.json new file mode 100644 index 0000000000..6ced2bc9c4 --- /dev/null +++ b/web/i18n/th-TH/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "publishAsPipeline": { + "description": "คําอธิบายความรู้", + "name": "ชื่อและไอคอนไปป์ไลน์", + "namePlaceholder": "โปรดป้อนชื่อของไปป์ไลน์ความรู้นี้ (จําเป็น)", + "descriptionPlaceholder": "โปรดป้อนคําอธิบายของไปป์ไลน์ความรู้นี้ (ไม่บังคับ)" + }, + "reRun": "เรียกใช้ซ้ํา", + "confirmPublish": "ยืนยันการเผยแพร่", + "goToAddDocuments": "ไปที่เพิ่มเอกสาร", + "processing": "ประมวล ผล", + "testRun": "ทดสอบการทํางาน", + "preparingDataSource": "การเตรียมแหล่งข้อมูล", + "publishAs": "เผยแพร่เป็นไปป์ไลน์ความรู้", + "confirmPublishContent": "หลังจากเผยแพร่ไปป์ไลน์ความรู้สําเร็จแล้ว จะไม่สามารถแก้ไขโครงสร้างกลุ่มของฐานความรู้นี้ได้ คุณแน่ใจหรือไม่ว่าต้องการเผยแพร่?" + }, + "inputField": { + "manage": "จัดการ", + "create": "สร้างฟิลด์ป้อนข้อมูลของผู้ใช้" + }, + "publishToast": { + "title": "ไปป์ไลน์นี้ยังไม่ได้รับการเผยแพร่", + "desc": "เมื่อไม่ได้เผยแพร่ไปป์ไลน์ คุณสามารถปรับเปลี่ยนโครงสร้างก้อนในโหนดฐานความรู้ และการประสานไปป์ไลน์และการเปลี่ยนแปลงจะถูกบันทึกเป็นแบบร่างโดยอัตโนมัติ" + }, + "result": { + "resultPreview": { + "viewDetails": "ดูรายละเอียด", + "error": "เกิดข้อผิดพลาดระหว่างการดําเนินการ", + "loading": "กำลังประมวลผล...กรุณารอ", + "footerTip": "ในโหมดทดสอบ ลองดูตัวอย่างได้สูงสุด {{count}} ชิ้น" + } + }, + "ragToolSuggestions": { + "title": "คําแนะนําสําหรับ RAG", + "noRecommendationPlugins": "ไม่มีปลั๊กอินที่แนะนำ ค้นหาเพิ่มเติมได้ใน ตลาด" + } +} diff --git a/web/i18n/th-TH/pipeline.ts b/web/i18n/th-TH/pipeline.ts deleted file mode 100644 index 57174daa64..0000000000 --- a/web/i18n/th-TH/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - publishAsPipeline: { - description: 'คําอธิบายความรู้', - name: 'ชื่อและไอคอนไปป์ไลน์', - namePlaceholder: 'โปรดป้อนชื่อของไปป์ไลน์ความรู้นี้ (จําเป็น)', - descriptionPlaceholder: 'โปรดป้อนคําอธิบายของไปป์ไลน์ความรู้นี้ (ไม่บังคับ)', - }, - reRun: 'เรียกใช้ซ้ํา', - confirmPublish: 'ยืนยันการเผยแพร่', - goToAddDocuments: 'ไปที่เพิ่มเอกสาร', - processing: 'ประมวล ผล', - testRun: 'ทดสอบการทํางาน', - preparingDataSource: 'การเตรียมแหล่งข้อมูล', - publishAs: 'เผยแพร่เป็นไปป์ไลน์ความรู้', - confirmPublishContent: 'หลังจากเผยแพร่ไปป์ไลน์ความรู้สําเร็จแล้ว จะไม่สามารถแก้ไขโครงสร้างกลุ่มของฐานความรู้นี้ได้ คุณแน่ใจหรือไม่ว่าต้องการเผยแพร่?', - }, - inputField: { - manage: 'จัดการ', - create: 'สร้างฟิลด์ป้อนข้อมูลของผู้ใช้', - }, - publishToast: { - title: 'ไปป์ไลน์นี้ยังไม่ได้รับการเผยแพร่', - desc: 'เมื่อไม่ได้เผยแพร่ไปป์ไลน์ คุณสามารถปรับเปลี่ยนโครงสร้างก้อนในโหนดฐานความรู้ และการประสานไปป์ไลน์และการเปลี่ยนแปลงจะถูกบันทึกเป็นแบบร่างโดยอัตโนมัติ', - }, - result: { - resultPreview: { - viewDetails: 'ดูรายละเอียด', - error: 'เกิดข้อผิดพลาดระหว่างการดําเนินการ', - loading: 'กำลังประมวลผล...กรุณารอ', - footerTip: 'ในโหมดทดสอบ ลองดูตัวอย่างได้สูงสุด {{count}} ชิ้น', - }, - }, - ragToolSuggestions: { - title: 'คําแนะนําสําหรับ RAG', - noRecommendationPlugins: 'ไม่มีปลั๊กอินที่แนะนำ ค้นหาเพิ่มเติมได้ใน ตลาด', - }, -} - -export default translation diff --git a/web/i18n/th-TH/plugin-tags.json b/web/i18n/th-TH/plugin-tags.json new file mode 100644 index 0000000000..20b60faed3 --- /dev/null +++ b/web/i18n/th-TH/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "tags": { + "weather": "อากาศ", + "finance": "การเงิน", + "social": "สังคม", + "entertainment": "มหรสพ", + "education": "การศึกษา", + "news": "ข่าว", + "design": "ออกแบบ", + "agent": "ตัวแทน", + "videos": "วิดีโอ", + "utilities": "สาธารณูปโภค", + "search": "ค้น", + "business": "ธุรกิจ", + "productivity": "ผลิตภาพ", + "travel": "เดินทาง", + "medical": "ทางการแพทย์", + "image": "ภาพ", + "other": "อื่นๆ", + "rag": "ผ้าขี้ริ้ว" + }, + "searchTags": "แท็กค้นหา", + "allTags": "แท็กทั้งหมด" +} diff --git a/web/i18n/th-TH/plugin-tags.ts b/web/i18n/th-TH/plugin-tags.ts deleted file mode 100644 index 3416fbdb65..0000000000 --- a/web/i18n/th-TH/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - tags: { - weather: 'อากาศ', - finance: 'การเงิน', - social: 'สังคม', - entertainment: 'มหรสพ', - education: 'การศึกษา', - news: 'ข่าว', - design: 'ออกแบบ', - agent: 'ตัวแทน', - videos: 'วิดีโอ', - utilities: 'สาธารณูปโภค', - search: 'ค้น', - business: 'ธุรกิจ', - productivity: 'ผลิตภาพ', - travel: 'เดินทาง', - medical: 'ทางการแพทย์', - image: 'ภาพ', - other: 'อื่นๆ', - rag: 'ผ้าขี้ริ้ว', - }, - searchTags: 'แท็กค้นหา', - allTags: 'แท็กทั้งหมด', -} - -export default translation diff --git a/web/i18n/th-TH/plugin-trigger.json b/web/i18n/th-TH/plugin-trigger.json new file mode 100644 index 0000000000..77778aca1c --- /dev/null +++ b/web/i18n/th-TH/plugin-trigger.json @@ -0,0 +1,184 @@ +{ + "subscription": { + "title": "การสมัครสมาชิก", + "listNum": "การสมัครสมาชิก {{num}}", + "empty": { + "title": "ไม่มีการสมัครสมาชิก", + "button": "สมัครสมาชิกใหม่" + }, + "createButton": { + "oauth": "การสมัครสมาชิกใหม่ด้วย OAuth", + "apiKey": "การสมัครสมาชิกใหม่ด้วยคีย์ API", + "manual": "วาง URL เพื่อสร้างการสมัครสมาชิกใหม่" + }, + "createSuccess": "การสมัครสมาชิกสร้างเรียบร้อยแล้ว", + "createFailed": "ไม่สามารถสร้างการสมัครสมาชิกได้", + "maxCount": "สมาชิกสูงสุด {{num}}", + "selectPlaceholder": "เลือกการสมัครสมาชิก", + "noSubscriptionSelected": "ยังไม่ได้เลือกการสมัครสมาชิก", + "subscriptionRemoved": "ยกเลิกการสมัครแล้ว", + "list": { + "title": "การสมัครสมาชิก", + "addButton": "เพิ่ม", + "tip": "รับเหตุการณ์ผ่านการสมัครสมาชิก", + "item": { + "enabled": "เปิดใช้งาน", + "disabled": "ปิดการใช้งาน", + "credentialType": { + "api_key": "คีย์ API", + "oauth2": "OAuth", + "unauthorized": "คู่มือ" + }, + "actions": { + "delete": "ลบ", + "deleteConfirm": { + "title": "ลบ {{name}} หรือไม่?", + "success": "การสมัครสมาชิก {{name}} ถูกลบเรียบร้อยแล้ว", + "error": "ลบการสมัครสมาชิก {{name}} ไม่สำเร็จ", + "content": "เมื่อถูกลบแล้ว การสมัครสมาชิกนี้ไม่สามารถกู้คืนได้ กรุณายืนยัน", + "contentWithApps": "การสมัครสมาชิกปัจจุบันถูกอ้างอิงโดยแอปพลิเคชัน {{count}} การลบการสมัครสมาชิกนี้จะทำให้แอปพลิเคชันที่ถูกกำหนดค่าไม่สามารถรับเหตุการณ์การสมัครสมาชิกได้", + "confirm": "ยืนยันการลบ", + "cancel": "ยกเลิก", + "confirmInputWarning": "กรุณาใส่ชื่อที่ถูกต้องเพื่อยืนยัน", + "confirmInputPlaceholder": "ใส่ \"{{name}}\" เพื่อยืนยัน", + "confirmInputTip": "โปรดใส่ “{{name}}” เพื่อยืนยัน" + } + }, + "status": { + "active": "ใช้งานอยู่", + "inactive": "ไม่ทำงาน" + }, + "usedByNum": "ใช้โดยเวิร์กโฟลว์ {{num}}", + "noUsed": "ไม่ได้ใช้เวิร์กโฟลว์" + } + }, + "addType": { + "title": "เพิ่มการสมัครสมาชิก", + "description": "เลือกวิธีที่คุณต้องการสร้างการสมัครรับข้อมูลทริกเกอร์ของคุณ", + "options": { + "apikey": { + "title": "สร้างด้วยคีย์ API", + "description": "สร้างการสมัครสมาชิกโดยอัตโนมัติโดยใช้ข้อมูลรับรอง API" + }, + "oauth": { + "title": "สร้างด้วย OAuth", + "description": "อนุญาตการใช้งานกับแพลตฟอร์มภายนอกเพื่อสร้างการสมัครสมาชิก", + "clientSettings": "การตั้งค่าไคลเอนต์ OAuth", + "clientTitle": "ไคลเอนต์ OAuth", + "default": "ค่าเริ่มต้น", + "custom": "กำหนดเอง" + }, + "manual": { + "title": "การตั้งค่าแบบแมนนวล", + "description": "วาง URL เพื่อสร้างการสมัครสมาชิกใหม่", + "tip": "กำหนดค่า URL บนแพลตฟอร์มของบุคคลที่สามด้วยตนเอง" + } + } + } + }, + "modal": { + "steps": { + "verify": "ยืนยัน", + "configuration": "การกำหนดค่า" + }, + "common": { + "cancel": "ยกเลิก", + "back": "กลับ", + "next": "ถัดไป", + "create": "สร้าง", + "verify": "ยืนยัน", + "authorize": "อนุญาต", + "creating": "กำลังสร้าง...", + "verifying": "กำลังตรวจสอบ...", + "authorizing": "กำลังอนุมัติ..." + }, + "oauthRedirectInfo": "เนื่องจากไม่พบรหัสลับของระบบลูกค้าสำหรับผู้ให้บริการเครื่องมือนี้ จำเป็นต้องตั้งค่าเอง สำหรับ redirect_uri กรุณาใช้", + "apiKey": { + "title": "สร้างด้วยคีย์ API", + "verify": { + "title": "ตรวจสอบข้อมูลรับรอง", + "description": "กรุณาให้ข้อมูลรับรอง API ของคุณเพื่อยืนยันการเข้าถึง", + "error": "การตรวจสอบข้อมูลรับรองล้มเหลว โปรดตรวจสอบคีย์ API ของคุณ", + "success": "การยืนยันข้อมูลประจำตัวสำเร็จ" + }, + "configuration": { + "title": "ตั้งค่าการสมัครสมาชิก", + "description": "ตั้งค่าพารามิเตอร์การสมัครของคุณ" + } + }, + "oauth": { + "title": "สร้างด้วย OAuth", + "authorization": { + "title": "การอนุญาต OAuth", + "description": "อนุญาตให้ Dify เข้าถึงบัญชีของคุณ", + "redirectUrl": "เปลี่ยนเส้นทาง URL", + "redirectUrlHelp": "ใช้ URL นี้ในการตั้งค่าแอป OAuth ของคุณ", + "authorizeButton": "อนุญาตด้วย {{provider}}", + "waitingAuth": "กำลังรอการอนุญาต...", + "authSuccess": "การอนุญาตสำเร็จ", + "authFailed": "ไม่สามารถดึงข้อมูลการอนุญาต OAuth ได้", + "waitingJump": "ได้รับอนุญาต กำลังรอการบินขึ้น" + }, + "configuration": { + "title": "ตั้งค่าการสมัครสมาชิก", + "description": "ตั้งค่าพารามิเตอร์การสมัครของคุณหลังจากได้รับอนุญาต", + "success": "การตั้งค่า OAuth สำเร็จ", + "failed": "การตั้งค่า OAuth ล้มเหลว" + }, + "remove": { + "success": "การลบ OAuth สำเร็จ", + "failed": "การลบ OAuth ล้มเหลว" + }, + "save": { + "success": "บันทึกการตั้งค่า OAuth สำเร็จแล้ว" + } + }, + "manual": { + "title": "การตั้งค่าด้วยตนเอง", + "description": "ตั้งค่าการสมัครสมาชิกเว็บฮุคของคุณด้วยตนเอง", + "logs": { + "title": "บันทึกคำขอ", + "request": "คำขอ", + "loading": "กำลังรอคำขอจาก {{pluginName}} ..." + } + }, + "form": { + "subscriptionName": { + "label": "ชื่อการสมัครสมาชิก", + "placeholder": "ใส่ชื่อการสมัครสมาชิก", + "required": "จำเป็นต้องระบุชื่อการสมัครสมาชิก" + }, + "callbackUrl": { + "label": "URL สำหรับเรียกกลับ", + "description": "URL นี้จะได้รับเหตุการณ์เว็บฮุค", + "tooltip": "จัดเตรียมจุดปลายทางที่สามารถเข้าถึงได้สาธารณะเพื่อรับคำขอกลับเรียกจากผู้ให้บริการทริกเกอร์", + "placeholder": "กำลังสร้าง...", + "privateAddressWarning": "URL นี้ดูเหมือนจะเป็นที่อยู่ภายใน ซึ่งอาจทำให้การร้องขอ webhook ล้มเหลว คุณสามารถเปลี่ยน TRIGGER_URL เป็นที่อยู่สาธารณะได้" + } + }, + "errors": { + "createFailed": "ไม่สามารถสร้างการสมัครสมาชิกได้", + "verifyFailed": "ไม่สามารถตรวจสอบข้อมูลประจำตัวได้", + "authFailed": "การอนุญาตล้มเหลว", + "networkError": "เกิดข้อผิดพลาดของเครือข่าย กรุณาลองใหม่" + } + }, + "events": { + "title": "กิจกรรมที่มีอยู่", + "description": "เหตุการณ์ที่ปลั๊กอินทริกเกอร์นี้สามารถสมัครรับได้", + "empty": "ไม่มีเหตุการณ์ใดๆ", + "event": "งานกิจกรรม", + "events": "เหตุการณ์", + "actionNum": "{{num}} {{event}} รวมอยู่ด้วย", + "item": { + "parameters": "พารามิเตอร์ {{count}}", + "noParameters": "ไม่มีพารามิเตอร์" + }, + "output": "ผลลัพธ์" + }, + "node": { + "status": { + "warning": "ตัดการเชื่อมต่อ" + } + } +} diff --git a/web/i18n/th-TH/plugin-trigger.ts b/web/i18n/th-TH/plugin-trigger.ts deleted file mode 100644 index abf352073c..0000000000 --- a/web/i18n/th-TH/plugin-trigger.ts +++ /dev/null @@ -1,186 +0,0 @@ -const translation = { - subscription: { - title: 'การสมัครสมาชิก', - listNum: 'การสมัครสมาชิก {{num}}', - empty: { - title: 'ไม่มีการสมัครสมาชิก', - button: 'สมัครสมาชิกใหม่', - }, - createButton: { - oauth: 'การสมัครสมาชิกใหม่ด้วย OAuth', - apiKey: 'การสมัครสมาชิกใหม่ด้วยคีย์ API', - manual: 'วาง URL เพื่อสร้างการสมัครสมาชิกใหม่', - }, - createSuccess: 'การสมัครสมาชิกสร้างเรียบร้อยแล้ว', - createFailed: 'ไม่สามารถสร้างการสมัครสมาชิกได้', - maxCount: 'สมาชิกสูงสุด {{num}}', - selectPlaceholder: 'เลือกการสมัครสมาชิก', - noSubscriptionSelected: 'ยังไม่ได้เลือกการสมัครสมาชิก', - subscriptionRemoved: 'ยกเลิกการสมัครแล้ว', - list: { - title: 'การสมัครสมาชิก', - addButton: 'เพิ่ม', - tip: 'รับเหตุการณ์ผ่านการสมัครสมาชิก', - item: { - enabled: 'เปิดใช้งาน', - disabled: 'ปิดการใช้งาน', - credentialType: { - api_key: 'คีย์ API', - oauth2: 'OAuth', - unauthorized: 'คู่มือ', - }, - actions: { - delete: 'ลบ', - deleteConfirm: { - title: 'ลบ {{name}} หรือไม่?', - success: 'การสมัครสมาชิก {{name}} ถูกลบเรียบร้อยแล้ว', - error: 'ลบการสมัครสมาชิก {{name}} ไม่สำเร็จ', - content: 'เมื่อถูกลบแล้ว การสมัครสมาชิกนี้ไม่สามารถกู้คืนได้ กรุณายืนยัน', - contentWithApps: 'การสมัครสมาชิกปัจจุบันถูกอ้างอิงโดยแอปพลิเคชัน {{count}} การลบการสมัครสมาชิกนี้จะทำให้แอปพลิเคชันที่ถูกกำหนดค่าไม่สามารถรับเหตุการณ์การสมัครสมาชิกได้', - confirm: 'ยืนยันการลบ', - cancel: 'ยกเลิก', - confirmInputWarning: 'กรุณาใส่ชื่อที่ถูกต้องเพื่อยืนยัน', - confirmInputPlaceholder: 'ใส่ "{{name}}" เพื่อยืนยัน', - confirmInputTip: 'โปรดใส่ “{{name}}” เพื่อยืนยัน', - }, - }, - status: { - active: 'ใช้งานอยู่', - inactive: 'ไม่ทำงาน', - }, - usedByNum: 'ใช้โดยเวิร์กโฟลว์ {{num}}', - noUsed: 'ไม่ได้ใช้เวิร์กโฟลว์', - }, - }, - addType: { - title: 'เพิ่มการสมัครสมาชิก', - description: 'เลือกวิธีที่คุณต้องการสร้างการสมัครรับข้อมูลทริกเกอร์ของคุณ', - options: { - apikey: { - title: 'สร้างด้วยคีย์ API', - description: 'สร้างการสมัครสมาชิกโดยอัตโนมัติโดยใช้ข้อมูลรับรอง API', - }, - oauth: { - title: 'สร้างด้วย OAuth', - description: 'อนุญาตการใช้งานกับแพลตฟอร์มภายนอกเพื่อสร้างการสมัครสมาชิก', - clientSettings: 'การตั้งค่าไคลเอนต์ OAuth', - clientTitle: 'ไคลเอนต์ OAuth', - default: 'ค่าเริ่มต้น', - custom: 'กำหนดเอง', - }, - manual: { - title: 'การตั้งค่าแบบแมนนวล', - description: 'วาง URL เพื่อสร้างการสมัครสมาชิกใหม่', - tip: 'กำหนดค่า URL บนแพลตฟอร์มของบุคคลที่สามด้วยตนเอง', - }, - }, - }, - }, - modal: { - steps: { - verify: 'ยืนยัน', - configuration: 'การกำหนดค่า', - }, - common: { - cancel: 'ยกเลิก', - back: 'กลับ', - next: 'ถัดไป', - create: 'สร้าง', - verify: 'ยืนยัน', - authorize: 'อนุญาต', - creating: 'กำลังสร้าง...', - verifying: 'กำลังตรวจสอบ...', - authorizing: 'กำลังอนุมัติ...', - }, - oauthRedirectInfo: 'เนื่องจากไม่พบรหัสลับของระบบลูกค้าสำหรับผู้ให้บริการเครื่องมือนี้ จำเป็นต้องตั้งค่าเอง สำหรับ redirect_uri กรุณาใช้', - apiKey: { - title: 'สร้างด้วยคีย์ API', - verify: { - title: 'ตรวจสอบข้อมูลรับรอง', - description: 'กรุณาให้ข้อมูลรับรอง API ของคุณเพื่อยืนยันการเข้าถึง', - error: 'การตรวจสอบข้อมูลรับรองล้มเหลว โปรดตรวจสอบคีย์ API ของคุณ', - success: 'การยืนยันข้อมูลประจำตัวสำเร็จ', - }, - configuration: { - title: 'ตั้งค่าการสมัครสมาชิก', - description: 'ตั้งค่าพารามิเตอร์การสมัครของคุณ', - }, - }, - oauth: { - title: 'สร้างด้วย OAuth', - authorization: { - title: 'การอนุญาต OAuth', - description: 'อนุญาตให้ Dify เข้าถึงบัญชีของคุณ', - redirectUrl: 'เปลี่ยนเส้นทาง URL', - redirectUrlHelp: 'ใช้ URL นี้ในการตั้งค่าแอป OAuth ของคุณ', - authorizeButton: 'อนุญาตด้วย {{provider}}', - waitingAuth: 'กำลังรอการอนุญาต...', - authSuccess: 'การอนุญาตสำเร็จ', - authFailed: 'ไม่สามารถดึงข้อมูลการอนุญาต OAuth ได้', - waitingJump: 'ได้รับอนุญาต กำลังรอการบินขึ้น', - }, - configuration: { - title: 'ตั้งค่าการสมัครสมาชิก', - description: 'ตั้งค่าพารามิเตอร์การสมัครของคุณหลังจากได้รับอนุญาต', - success: 'การตั้งค่า OAuth สำเร็จ', - failed: 'การตั้งค่า OAuth ล้มเหลว', - }, - remove: { - success: 'การลบ OAuth สำเร็จ', - failed: 'การลบ OAuth ล้มเหลว', - }, - save: { - success: 'บันทึกการตั้งค่า OAuth สำเร็จแล้ว', - }, - }, - manual: { - title: 'การตั้งค่าด้วยตนเอง', - description: 'ตั้งค่าการสมัครสมาชิกเว็บฮุคของคุณด้วยตนเอง', - logs: { - title: 'บันทึกคำขอ', - request: 'คำขอ', - loading: 'กำลังรอคำขอจาก {{pluginName}} ...', - }, - }, - form: { - subscriptionName: { - label: 'ชื่อการสมัครสมาชิก', - placeholder: 'ใส่ชื่อการสมัครสมาชิก', - required: 'จำเป็นต้องระบุชื่อการสมัครสมาชิก', - }, - callbackUrl: { - label: 'URL สำหรับเรียกกลับ', - description: 'URL นี้จะได้รับเหตุการณ์เว็บฮุค', - tooltip: 'จัดเตรียมจุดปลายทางที่สามารถเข้าถึงได้สาธารณะเพื่อรับคำขอกลับเรียกจากผู้ให้บริการทริกเกอร์', - placeholder: 'กำลังสร้าง...', - privateAddressWarning: 'URL นี้ดูเหมือนจะเป็นที่อยู่ภายใน ซึ่งอาจทำให้การร้องขอ webhook ล้มเหลว คุณสามารถเปลี่ยน TRIGGER_URL เป็นที่อยู่สาธารณะได้', - }, - }, - errors: { - createFailed: 'ไม่สามารถสร้างการสมัครสมาชิกได้', - verifyFailed: 'ไม่สามารถตรวจสอบข้อมูลประจำตัวได้', - authFailed: 'การอนุญาตล้มเหลว', - networkError: 'เกิดข้อผิดพลาดของเครือข่าย กรุณาลองใหม่', - }, - }, - events: { - title: 'กิจกรรมที่มีอยู่', - description: 'เหตุการณ์ที่ปลั๊กอินทริกเกอร์นี้สามารถสมัครรับได้', - empty: 'ไม่มีเหตุการณ์ใดๆ', - event: 'งานกิจกรรม', - events: 'เหตุการณ์', - actionNum: '{{num}} {{event}} รวมอยู่ด้วย', - item: { - parameters: 'พารามิเตอร์ {{count}}', - noParameters: 'ไม่มีพารามิเตอร์', - }, - output: 'ผลลัพธ์', - }, - node: { - status: { - warning: 'ตัดการเชื่อมต่อ', - }, - }, -} - -export default translation diff --git a/web/i18n/th-TH/plugin.json b/web/i18n/th-TH/plugin.json new file mode 100644 index 0000000000..d4652c4e4b --- /dev/null +++ b/web/i18n/th-TH/plugin.json @@ -0,0 +1,323 @@ +{ + "category": { + "extensions": "นาม สกุล", + "models": "รุ่น", + "tools": "เครื่อง มือ", + "agents": "กลยุทธ์ตัวแทน", + "all": "ทั้งหมด", + "bundles": "ชุดรวม", + "datasources": "แหล่งข้อมูล", + "triggers": "สิ่งกระตุ้น" + }, + "categorySingle": { + "tool": "เครื่องมือ", + "extension": "การเพิ่ม", + "agent": "กลยุทธ์ตัวแทน", + "model": "แบบ", + "bundle": "มัด", + "datasource": "แหล่งข้อมูล", + "trigger": "ทริกเกอร์" + }, + "list": { + "source": { + "github": "ติดตั้งจาก GitHub", + "local": "ติดตั้งจากไฟล์แพ็คเกจในเครื่อง", + "marketplace": "ติดตั้งจาก Marketplace" + }, + "noInstalled": "ไม่ได้ติดตั้งปลั๊กอิน", + "notFound": "ไม่พบปลั๊กอิน" + }, + "source": { + "local": "ไฟล์แพ็คเกจในเครื่อง", + "github": "เกวบ", + "marketplace": "ตลาด" + }, + "detailPanel": { + "categoryTip": { + "debugging": "ปลั๊กอินการดีบัก", + "local": "ปลั๊กอินท้องถิ่น", + "marketplace": "ติดตั้งจาก Marketplace", + "github": "ติดตั้งจาก Github" + }, + "operation": { + "info": "ข้อมูลปลั๊กอิน", + "detail": "ราย ละเอียด", + "install": "ติดตั้ง", + "update": "อัพเดต", + "viewDetail": "ดูรายละเอียด", + "checkUpdate": "ตรวจสอบการอัปเดต", + "remove": "ถอด", + "back": "กลับ" + }, + "toolSelector": { + "settings": "การตั้งค่าผู้ใช้", + "placeholder": "เลือกเครื่องมือ...", + "params": "การกําหนดค่าเหตุผล", + "paramsTip2": "เมื่อปิด 'อัตโนมัติ' จะใช้ค่าเริ่มต้น", + "toolLabel": "เครื่องมือ", + "paramsTip1": "ควบคุมพารามิเตอร์การอนุมาน LLM", + "uninstalledLink": "จัดการในปลั๊กอิน", + "unsupportedContent": "เวอร์ชันปลั๊กอินที่ติดตั้งไม่มีการดําเนินการนี้", + "title": "เพิ่มเครื่องมือ", + "unsupportedContent2": "คลิกเพื่อเปลี่ยนเวอร์ชัน", + "empty": "คลิกปุ่ม '+' เพื่อเพิ่มเครื่องมือ คุณสามารถเพิ่มเครื่องมือได้หลายอย่าง", + "descriptionLabel": "คําอธิบายเครื่องมือ", + "auto": "อัตโนมัติ", + "unsupportedTitle": "การดําเนินการที่ไม่รองรับ", + "uninstalledTitle": "ไม่ได้ติดตั้งเครื่องมือ", + "descriptionPlaceholder": "คําอธิบายสั้น ๆ เกี่ยวกับวัตถุประสงค์ของเครื่องมือ เช่น รับอุณหภูมิสําหรับตําแหน่งเฉพาะ", + "uninstalledContent": "ปลั๊กอินนี้ติดตั้งจากที่เก็บในเครื่อง/GitHub กรุณาใช้หลังการติดตั้ง", + "toolSetting": "การตั้งค่าเครื่องมือ", + "unsupportedMCPTool": "รุ่นปลั๊กอินกลยุทธ์ตัวแทนที่เลือกในขณะนี้ไม่สนับสนุนเครื่องมือ MCP." + }, + "endpointDisableContent": "คุณต้องการปิดการใช้งาน {{name}} หรือไม่?", + "configureApp": "กําหนดค่าแอป", + "configureTool": "กําหนดค่าเครื่องมือ", + "switchVersion": "สลับเวอร์ชัน", + "endpointModalTitle": "ปลายทางการตั้งค่า", + "actionNum": "{{num}} {{การกระทํา}} รวม", + "strategyNum": "{{num}} {{กลยุทธ์}} รวม", + "endpointsDocLink": "ดูเอกสาร", + "configureModel": "กําหนดค่าแบบจําลอง", + "endpointModalDesc": "เมื่อกําหนดค่าแล้ว สามารถใช้คุณสมบัติที่ปลั๊กอินให้ผ่านปลายทาง API ได้", + "modelNum": "{{num}} รุ่นรวม", + "endpointDisableTip": "ปิดใช้งานปลายทาง", + "endpointDeleteTip": "ลบปลายทาง", + "disabled": "พิการ", + "endpointDeleteContent": "คุณต้องการลบ {{name}} หรือไม่?", + "endpoints": "ปลาย ทาง", + "endpointsTip": "ปลั๊กอินนี้มีฟังก์ชันเฉพาะผ่านปลายทาง และคุณสามารถกําหนดค่าชุดปลายทางหลายชุดสําหรับพื้นที่ทํางานปัจจุบันได้", + "endpointsEmpty": "คลิกปุ่ม '+' เพื่อเพิ่มปลายทาง", + "serviceOk": "บริการตกลง", + "deprecation": { + "reason": { + "ownershipTransferred": "การโอนความเป็นเจ้าของ", + "businessAdjustments": "การปรับเปลี่ยนธุรกิจ", + "noMaintainer": "ไม่มีผู้ดูแล" + }, + "onlyReason": "ปลั๊กอินนี้ถูกเลิกใช้เนื่องจาก {{deprecatedReason}} และจะไม่มีการอัปเดตอีกต่อไป.", + "noReason": "ปลั๊กอินนี้ได้ถูกยกเลิกใช้งานและจะไม่มีการอัปเดตอีกต่อไป.", + "fullMessage": "ปลั๊กอินนี้ถูกยกเลิกการใช้งานเนื่องจาก {{เหตุผลที่ถูกยกเลิก}} และจะไม่มีการอัปเดตอีกต่อไป กรุณาใช้ {{-alternativePluginId}} แทน." + } + }, + "debugInfo": { + "viewDocs": "ดูเอกสาร", + "title": "การแก้จุดบกพร่อง" + }, + "privilege": { + "everyone": "ทุกคน", + "whoCanInstall": "ใครสามารถติดตั้งและจัดการปลั๊กอินได้บ้าง", + "noone": "ไม่มีใคร", + "whoCanDebug": "ใครสามารถดีบักปลั๊กอินได้บ้าง", + "title": "การตั้งค่าปลั๊กอิน", + "admins": "ผู้ดูแลระบบ" + }, + "pluginInfoModal": { + "packageName": "ห่อ", + "title": "ข้อมูลปลั๊กอิน", + "release": "ปล่อย", + "repository": "เก็บ" + }, + "action": { + "pluginInfo": "ข้อมูลปลั๊กอิน", + "deleteContentLeft": "คุณต้องการลบ", + "deleteContentRight": "ปลั๊กอิน?", + "usedInApps": "ปลั๊กอินนี้ถูกใช้ในแอป {{num}}", + "delete": "ลบปลั๊กอิน", + "checkForUpdates": "ตรวจสอบการอัปเดต" + }, + "installModal": { + "labels": { + "version": "เวอร์ชัน", + "package": "ห่อ", + "repository": "เก็บ" + }, + "pluginLoadErrorDesc": "ปลั๊กอินนี้จะไม่ถูกติดตั้ง", + "readyToInstall": "เกี่ยวกับการติดตั้งปลั๊กอินต่อไปนี้", + "uploadFailed": "อัปโหลดล้มเหลว", + "installFailed": "การติดตั้งล้มเหลว", + "installedSuccessfullyDesc": "ติดตั้งปลั๊กอินสําเร็จแล้ว", + "readyToInstallPackage": "เกี่ยวกับการติดตั้งปลั๊กอินต่อไปนี้", + "dropPluginToInstall": "วางแพ็คเกจปลั๊กอินที่นี่เพื่อติดตั้ง", + "install": "ติดตั้ง", + "back": "ย้อนกลับ", + "cancel": "ยกเลิก", + "installPlugin": "ติดตั้งปลั๊กอิน", + "readyToInstallPackages": "เกี่ยวกับการติดตั้งปลั๊กอิน {{num}} ต่อไปนี้", + "uploadingPackage": "กําลังอัปโหลด {{packageName}}...", + "installFailedDesc": "ติดตั้งปลั๊กอินล้มเหลว", + "next": "ต่อไป", + "fromTrustSource": "โปรดตรวจสอบให้แน่ใจว่าคุณติดตั้งปลั๊กอินจากแหล่งที่เชื่อถือได้เท่านั้น", + "installing": "ติด ตั้ง ", + "close": "ปิด", + "installedSuccessfully": "การติดตั้งสําเร็จ", + "installComplete": "การติดตั้งเสร็จสมบูรณ์", + "pluginLoadError": "ข้อผิดพลาดในการโหลดปลั๊กอิน", + "installWarning": "ไม่อนุญาตให้ติดตั้งปลั๊กอินนี้" + }, + "installFromGitHub": { + "updatePlugin": "อัปเดตปลั๊กอินจาก GitHub", + "gitHubRepo": "ที่เก็บ GitHub", + "installNote": "โปรดตรวจสอบให้แน่ใจว่าคุณติดตั้งปลั๊กอินจากแหล่งที่เชื่อถือได้เท่านั้น", + "installedSuccessfully": "การติดตั้งสําเร็จ", + "uploadFailed": "อัปโหลดล้มเหลว", + "selectVersionPlaceholder": "โปรดเลือกเวอร์ชัน", + "selectPackagePlaceholder": "โปรดเลือกแพ็กเกจ", + "installFailed": "การติดตั้งล้มเหลว", + "selectVersion": "เลือกรุ่น", + "installPlugin": "ติดตั้งปลั๊กอินจาก GitHub", + "selectPackage": "เลือกแพ็กเกจ" + }, + "upgrade": { + "description": "เกี่ยวกับการติดตั้งปลั๊กอินต่อไปนี้", + "title": "ติดตั้งปลั๊กอิน", + "upgrading": "ติด ตั้ง ", + "successfulTitle": "ติดตั้งสําเร็จ", + "upgrade": "ติดตั้ง", + "usedInApps": "ใช้ในแอป {{num}}", + "close": "ปิด" + }, + "error": { + "noReleasesFound": "ไม่พบข่าวประชาสัมพันธ์ โปรดตรวจสอบที่เก็บ GitHub หรือ URL ที่ป้อนข้อมูล", + "inValidGitHubUrl": "URL GitHub ไม่ถูกต้อง โปรดป้อน URL ที่ถูกต้องในรูปแบบ: https://github.com/owner/repo", + "fetchReleasesError": "ไม่สามารถดึงข้อมูลการเผยแพร่ได้ โปรดลองอีกครั้งในภายหลัง" + }, + "marketplace": { + "sortOption": { + "newlyReleased": "เปิดตัวใหม่", + "mostPopular": "แห่ง", + "recentlyUpdated": "อัพเดทล่าสุด", + "firstReleased": "เปิดตัวครั้งแรก" + }, + "viewMore": "ดูเพิ่มเติม", + "moreFrom": "แอปเพิ่มเติมจาก Marketplace", + "pluginsResult": "{{num}} ผลลัพธ์", + "and": "และ", + "sortBy": "เมืองสีดํา", + "discover": "ค้นพบ", + "noPluginFound": "ไม่พบปลั๊กอิน", + "empower": "เพิ่มศักยภาพในการพัฒนา AI ของคุณ", + "difyMarketplace": "ตลาด Dify", + "partnerTip": "ได้รับการตรวจสอบโดยพันธมิตรของ Dify", + "verifiedTip": "ได้รับการตรวจสอบโดย Dify" + }, + "task": { + "installing": "การติดตั้งปลั๊กอิน {{installingLength}} 0 เสร็จแล้ว", + "installingWithError": "การติดตั้งปลั๊กอิน {{installingLength}}, {{successLength}} สําเร็จ, {{errorLength}} ล้มเหลว", + "installingWithSuccess": "การติดตั้งปลั๊กอิน {{installingLength}}, {{successLength}} สําเร็จ", + "installedError": "{{errorLength}} ปลั๊กอินติดตั้งไม่สําเร็จ", + "clearAll": "ล้างทั้งหมด", + "installError": "{{errorLength}} ปลั๊กอินติดตั้งไม่สําเร็จ คลิกเพื่อดู", + "installSuccess": "{{successLength}} plugins installed successfully", + "installed": "Installed", + "runningPlugins": "Installing Plugins", + "successPlugins": "Successfully Installed Plugins", + "errorPlugins": "Failed to Install Plugins" + }, + "searchCategories": "หมวดหมู่การค้นหา", + "searchInMarketplace": "ค้นหาใน Marketplace", + "findMoreInMarketplace": "ค้นหาเพิ่มเติมใน Marketplace", + "installPlugin": "ติดตั้งปลั๊กอิน", + "search": "ค้น", + "from": "จาก", + "install": "{{num}} การติดตั้ง", + "endpointsEnabled": "{{num}} ชุดของปลายทางที่เปิดใช้งาน", + "searchPlugins": "ค้นหาปลั๊กอิน", + "installAction": "ติดตั้ง", + "searchTools": "เครื่องมือค้นหา...", + "installFrom": "ติดตั้งจาก", + "fromMarketplace": "จาก Marketplace", + "allCategories": "หมวดหมู่ทั้งหมด", + "metadata": { + "title": "ปลั๊กอิน" + }, + "difyVersionNotCompatible": "เวอร์ชั่นปัจจุบันของ Dify ไม่สามารถใช้งานร่วมกับปลั๊กอินนี้ได้ กรุณาอัปเกรดไปยังเวอร์ชั่นขั้นต่ำที่ต้องการ: {{minimalDifyVersion}}", + "requestAPlugin": "ขอปลั๊กอิน", + "publishPlugins": "เผยแพร่ปลั๊กอิน", + "auth": { + "saveOnly": "บันทึกเฉพาะ", + "oauthClientSettings": "การตั้งค่าไคลเอนต์ OAuth", + "addApi": "เพิ่มคีย์ API", + "setDefault": "ตั้งเป็นค่าเริ่มต้น", + "addOAuth": "เพิ่ม OAuth", + "authRemoved": "ผู้แต่งถูกลบออก", + "default": "ค่าเริ่มต้น", + "setupOAuth": "ตั้งค่า OAuth Client", + "useOAuthAuth": "ใช้การอนุญาต OAuth", + "workspaceDefault": "พื้นที่ทำงานเริ่มต้น", + "authorization": "การอนุญาต", + "saveAndAuth": "บันทึกและอนุญาต", + "useApi": "ใช้รหัส API", + "authorizations": "การอนุญาต", + "oauthClient": "ไคลเอนต์ OAuth", + "authorizationName": "ชื่อผู้มีอำนาจ", + "useApiAuth": "การกำหนดค่าการอนุญาตคีย์ API", + "useOAuth": "ใช้ OAuth", + "custom": "ที่กำหนดเอง", + "useApiAuthDesc": "หลังจากตั้งค่าข้อมูลประจำตัวแล้ว สมาชิกทุกคนภายในพื้นที่ทำงานสามารถใช้เครื่องมือนี้เมื่อจัดการแอปพลิเคชันได้", + "clientInfo": "เนื่องจากไม่พบความลับของลูกค้าสำหรับผู้ให้บริการเครื่องมือนี้ จำเป็นต้องตั้งค่าแบบแมนนวล สำหรับ redirect_uri กรุณาใช้", + "unavailable": "ไม่มีให้บริการ", + "customCredentialUnavailable": "ข้อมูลรับรองที่กำหนดเองขณะนี้ไม่สามารถใช้ได้", + "credentialUnavailable": "ข้อมูลรับรองไม่สามารถใช้งานได้ในขณะนี้ กรุณาติดต่อผู้ดูแลระบบ.", + "credentialUnavailableInButton": "ข้อมูลรับรองไม่พร้อมใช้งาน", + "connectedWorkspace": "พื้นที่ทํางานที่เชื่อมต่อ", + "emptyAuth": "โปรดกําหนดค่าการรับรองความถูกต้อง" + }, + "deprecated": "เลิกใช้", + "autoUpdate": { + "strategy": { + "disabled": { + "name": "ผู้พิการ", + "description": "ปลั๊กอินจะไม่อัปเดตอัตโนมัติ" + }, + "fixOnly": { + "name": "ซ่อมเฉพาะ", + "selectedDescription": "อัปเดตอัตโนมัติเฉพาะเวอร์ชันแพตช์เท่านั้น", + "description": "การอัปเดตอัตโนมัติสำหรับเฉพาะเวอร์ชันแพทช์ (เช่น 1.0.1 → 1.0.2) การเปลี่ยนแปลงเวอร์ชันย่อยจะไม่ทำให้เกิดการอัปเดต" + }, + "latest": { + "name": "ล่าสุด", + "selectedDescription": "อัปเดตเป็นเวอร์ชันล่าสุดเสมอ", + "description": "อัปเดตเป็นเวอร์ชันล่าสุดเสมอ" + } + }, + "upgradeMode": { + "partial": "เฉพาะที่เลือกไว้", + "exclude": "ยกเว้นที่เลือกไว้", + "all": "อัปเดตทั้งหมด" + }, + "upgradeModePlaceholder": { + "exclude": "ปลั๊กอินที่เลือกจะไม่อัปเดตอัตโนมัติ", + "partial": "เฉพาะปลั๊กอินที่เลือกจะอัปเดตโดยอัตโนมัติ ขณะนี้ไม่มีปลั๊กอินใดที่ถูกเลือก ดังนั้นจะไม่มีปลั๊กอินใดที่อัปเดตโดยอัตโนมัติ" + }, + "operation": { + "clearAll": "ล้างทั้งหมด", + "select": "เลือกปลั๊กอิน" + }, + "pluginDowngradeWarning": { + "title": "การลดเวอร์ชันปลั๊กอิน", + "downgrade": "ลดระดับอยู่ดี", + "exclude": "ไม่รวมในการอัปเดตอัตโนมัติ", + "description": "ฟีเจอร์การอัปเดตอัตโนมัติเปิดใช้งานอยู่สำหรับปลั๊กอินนี้ การลดระดับเวอร์ชันอาจทำให้การเปลี่ยนแปลงของคุณหายไปในระหว่างการอัปเดตอัตโนมัติต่อไป" + }, + "noPluginPlaceholder": { + "noInstalled": "ไม่มีปลั๊กอินติดตั้ง", + "noFound": "ไม่พบปลั๊กอิน" + }, + "specifyPluginsToUpdate": "ระบุปลั๊กอินที่จะแ atualizar", + "updateTime": "เวลาที่อัปเดต", + "updateTimeTitle": "เวลาที่อัปเดต", + "updateSettings": "อัปเดตการตั้งค่า", + "nextUpdateTime": "การอัปเดตอัตโนมัติครั้งถัดไป: {{time}}", + "automaticUpdates": "การอัปเดตอัตโนมัติ", + "excludeUpdate": "ปลั๊กอิน {{num}} ต่อไปนี้จะไม่อัพเดตอัตโนมัติ", + "partialUPdate": "ปลั๊กอิน {{num}} ตัวต่อไปนี้จะอัปเดตให้อัตโนมัติเท่านั้น", + "changeTimezone": "ในการเปลี่ยนเขตเวลา ให้ไปที่ การตั้งค่า" + }, + "readmeInfo": { + "title": "อ่านฉัน", + "needHelpCheckReadme": "ต้องการความช่วยเหลือ? ตรวจสอบไฟล์ README", + "noReadmeAvailable": "ไม่มีไฟล์ README", + "failedToFetch": "ไม่สามารถดึงไฟล์ README ได้" + } +} diff --git a/web/i18n/th-TH/plugin.ts b/web/i18n/th-TH/plugin.ts deleted file mode 100644 index 8f59a5bded..0000000000 --- a/web/i18n/th-TH/plugin.ts +++ /dev/null @@ -1,325 +0,0 @@ -const translation = { - category: { - extensions: 'นาม สกุล', - models: 'รุ่น', - tools: 'เครื่อง มือ', - agents: 'กลยุทธ์ตัวแทน', - all: 'ทั้งหมด', - bundles: 'ชุดรวม', - datasources: 'แหล่งข้อมูล', - triggers: 'สิ่งกระตุ้น', - }, - categorySingle: { - tool: 'เครื่องมือ', - extension: 'การเพิ่ม', - agent: 'กลยุทธ์ตัวแทน', - model: 'แบบ', - bundle: 'มัด', - datasource: 'แหล่งข้อมูล', - trigger: 'ทริกเกอร์', - }, - list: { - source: { - github: 'ติดตั้งจาก GitHub', - local: 'ติดตั้งจากไฟล์แพ็คเกจในเครื่อง', - marketplace: 'ติดตั้งจาก Marketplace', - }, - noInstalled: 'ไม่ได้ติดตั้งปลั๊กอิน', - notFound: 'ไม่พบปลั๊กอิน', - }, - source: { - local: 'ไฟล์แพ็คเกจในเครื่อง', - github: 'เกวบ', - marketplace: 'ตลาด', - }, - detailPanel: { - categoryTip: { - debugging: 'ปลั๊กอินการดีบัก', - local: 'ปลั๊กอินท้องถิ่น', - marketplace: 'ติดตั้งจาก Marketplace', - github: 'ติดตั้งจาก Github', - }, - operation: { - info: 'ข้อมูลปลั๊กอิน', - detail: 'ราย ละเอียด', - install: 'ติดตั้ง', - update: 'อัพเดต', - viewDetail: 'ดูรายละเอียด', - checkUpdate: 'ตรวจสอบการอัปเดต', - remove: 'ถอด', - back: 'กลับ', - }, - toolSelector: { - settings: 'การตั้งค่าผู้ใช้', - placeholder: 'เลือกเครื่องมือ...', - params: 'การกําหนดค่าเหตุผล', - paramsTip2: 'เมื่อปิด \'อัตโนมัติ\' จะใช้ค่าเริ่มต้น', - toolLabel: 'เครื่องมือ', - paramsTip1: 'ควบคุมพารามิเตอร์การอนุมาน LLM', - uninstalledLink: 'จัดการในปลั๊กอิน', - unsupportedContent: 'เวอร์ชันปลั๊กอินที่ติดตั้งไม่มีการดําเนินการนี้', - title: 'เพิ่มเครื่องมือ', - unsupportedContent2: 'คลิกเพื่อเปลี่ยนเวอร์ชัน', - empty: 'คลิกปุ่ม \'+\' เพื่อเพิ่มเครื่องมือ คุณสามารถเพิ่มเครื่องมือได้หลายอย่าง', - descriptionLabel: 'คําอธิบายเครื่องมือ', - auto: 'อัตโนมัติ', - unsupportedTitle: 'การดําเนินการที่ไม่รองรับ', - uninstalledTitle: 'ไม่ได้ติดตั้งเครื่องมือ', - descriptionPlaceholder: 'คําอธิบายสั้น ๆ เกี่ยวกับวัตถุประสงค์ของเครื่องมือ เช่น รับอุณหภูมิสําหรับตําแหน่งเฉพาะ', - uninstalledContent: 'ปลั๊กอินนี้ติดตั้งจากที่เก็บในเครื่อง/GitHub กรุณาใช้หลังการติดตั้ง', - toolSetting: 'การตั้งค่าเครื่องมือ', - unsupportedMCPTool: 'รุ่นปลั๊กอินกลยุทธ์ตัวแทนที่เลือกในขณะนี้ไม่สนับสนุนเครื่องมือ MCP.', - }, - endpointDisableContent: 'คุณต้องการปิดการใช้งาน {{name}} หรือไม่?', - configureApp: 'กําหนดค่าแอป', - configureTool: 'กําหนดค่าเครื่องมือ', - switchVersion: 'สลับเวอร์ชัน', - endpointModalTitle: 'ปลายทางการตั้งค่า', - actionNum: '{{num}} {{การกระทํา}} รวม', - strategyNum: '{{num}} {{กลยุทธ์}} รวม', - endpointsDocLink: 'ดูเอกสาร', - configureModel: 'กําหนดค่าแบบจําลอง', - endpointModalDesc: 'เมื่อกําหนดค่าแล้ว สามารถใช้คุณสมบัติที่ปลั๊กอินให้ผ่านปลายทาง API ได้', - modelNum: '{{num}} รุ่นรวม', - endpointDisableTip: 'ปิดใช้งานปลายทาง', - endpointDeleteTip: 'ลบปลายทาง', - disabled: 'พิการ', - endpointDeleteContent: 'คุณต้องการลบ {{name}} หรือไม่?', - endpoints: 'ปลาย ทาง', - endpointsTip: 'ปลั๊กอินนี้มีฟังก์ชันเฉพาะผ่านปลายทาง และคุณสามารถกําหนดค่าชุดปลายทางหลายชุดสําหรับพื้นที่ทํางานปัจจุบันได้', - endpointsEmpty: 'คลิกปุ่ม \'+\' เพื่อเพิ่มปลายทาง', - serviceOk: 'บริการตกลง', - deprecation: { - reason: { - ownershipTransferred: 'การโอนความเป็นเจ้าของ', - businessAdjustments: 'การปรับเปลี่ยนธุรกิจ', - noMaintainer: 'ไม่มีผู้ดูแล', - }, - onlyReason: 'ปลั๊กอินนี้ถูกเลิกใช้เนื่องจาก {{deprecatedReason}} และจะไม่มีการอัปเดตอีกต่อไป.', - noReason: 'ปลั๊กอินนี้ได้ถูกยกเลิกใช้งานและจะไม่มีการอัปเดตอีกต่อไป.', - fullMessage: 'ปลั๊กอินนี้ถูกยกเลิกการใช้งานเนื่องจาก {{เหตุผลที่ถูกยกเลิก}} และจะไม่มีการอัปเดตอีกต่อไป กรุณาใช้ {{-alternativePluginId}} แทน.', - }, - }, - debugInfo: { - viewDocs: 'ดูเอกสาร', - title: 'การแก้จุดบกพร่อง', - }, - privilege: { - everyone: 'ทุกคน', - whoCanInstall: 'ใครสามารถติดตั้งและจัดการปลั๊กอินได้บ้าง', - noone: 'ไม่มีใคร', - whoCanDebug: 'ใครสามารถดีบักปลั๊กอินได้บ้าง', - title: 'การตั้งค่าปลั๊กอิน', - admins: 'ผู้ดูแลระบบ', - }, - pluginInfoModal: { - packageName: 'ห่อ', - title: 'ข้อมูลปลั๊กอิน', - release: 'ปล่อย', - repository: 'เก็บ', - }, - action: { - pluginInfo: 'ข้อมูลปลั๊กอิน', - deleteContentLeft: 'คุณต้องการลบ', - deleteContentRight: 'ปลั๊กอิน?', - usedInApps: 'ปลั๊กอินนี้ถูกใช้ในแอป {{num}}', - delete: 'ลบปลั๊กอิน', - checkForUpdates: 'ตรวจสอบการอัปเดต', - }, - installModal: { - labels: { - version: 'เวอร์ชัน', - package: 'ห่อ', - repository: 'เก็บ', - }, - pluginLoadErrorDesc: 'ปลั๊กอินนี้จะไม่ถูกติดตั้ง', - readyToInstall: 'เกี่ยวกับการติดตั้งปลั๊กอินต่อไปนี้', - uploadFailed: 'อัปโหลดล้มเหลว', - installFailed: 'การติดตั้งล้มเหลว', - installedSuccessfullyDesc: 'ติดตั้งปลั๊กอินสําเร็จแล้ว', - readyToInstallPackage: 'เกี่ยวกับการติดตั้งปลั๊กอินต่อไปนี้', - dropPluginToInstall: 'วางแพ็คเกจปลั๊กอินที่นี่เพื่อติดตั้ง', - install: 'ติดตั้ง', - back: 'ย้อนกลับ', - cancel: 'ยกเลิก', - installPlugin: 'ติดตั้งปลั๊กอิน', - readyToInstallPackages: 'เกี่ยวกับการติดตั้งปลั๊กอิน {{num}} ต่อไปนี้', - uploadingPackage: 'กําลังอัปโหลด {{packageName}}...', - installFailedDesc: 'ติดตั้งปลั๊กอินล้มเหลว', - next: 'ต่อไป', - fromTrustSource: 'โปรดตรวจสอบให้แน่ใจว่าคุณติดตั้งปลั๊กอินจากแหล่งที่เชื่อถือได้เท่านั้น', - installing: 'ติด ตั้ง ', - close: 'ปิด', - installedSuccessfully: 'การติดตั้งสําเร็จ', - installComplete: 'การติดตั้งเสร็จสมบูรณ์', - pluginLoadError: 'ข้อผิดพลาดในการโหลดปลั๊กอิน', - installWarning: 'ไม่อนุญาตให้ติดตั้งปลั๊กอินนี้', - }, - installFromGitHub: { - updatePlugin: 'อัปเดตปลั๊กอินจาก GitHub', - gitHubRepo: 'ที่เก็บ GitHub', - installNote: 'โปรดตรวจสอบให้แน่ใจว่าคุณติดตั้งปลั๊กอินจากแหล่งที่เชื่อถือได้เท่านั้น', - installedSuccessfully: 'การติดตั้งสําเร็จ', - uploadFailed: 'อัปโหลดล้มเหลว', - selectVersionPlaceholder: 'โปรดเลือกเวอร์ชัน', - selectPackagePlaceholder: 'โปรดเลือกแพ็กเกจ', - installFailed: 'การติดตั้งล้มเหลว', - selectVersion: 'เลือกรุ่น', - installPlugin: 'ติดตั้งปลั๊กอินจาก GitHub', - selectPackage: 'เลือกแพ็กเกจ', - }, - upgrade: { - description: 'เกี่ยวกับการติดตั้งปลั๊กอินต่อไปนี้', - title: 'ติดตั้งปลั๊กอิน', - upgrading: 'ติด ตั้ง ', - successfulTitle: 'ติดตั้งสําเร็จ', - upgrade: 'ติดตั้ง', - usedInApps: 'ใช้ในแอป {{num}}', - close: 'ปิด', - }, - error: { - noReleasesFound: 'ไม่พบข่าวประชาสัมพันธ์ โปรดตรวจสอบที่เก็บ GitHub หรือ URL ที่ป้อนข้อมูล', - inValidGitHubUrl: 'URL GitHub ไม่ถูกต้อง โปรดป้อน URL ที่ถูกต้องในรูปแบบ: https://github.com/owner/repo', - fetchReleasesError: 'ไม่สามารถดึงข้อมูลการเผยแพร่ได้ โปรดลองอีกครั้งในภายหลัง', - }, - marketplace: { - sortOption: { - newlyReleased: 'เปิดตัวใหม่', - mostPopular: 'แห่ง', - recentlyUpdated: 'อัพเดทล่าสุด', - firstReleased: 'เปิดตัวครั้งแรก', - }, - viewMore: 'ดูเพิ่มเติม', - moreFrom: 'แอปเพิ่มเติมจาก Marketplace', - pluginsResult: '{{num}} ผลลัพธ์', - and: 'และ', - sortBy: 'เมืองสีดํา', - discover: 'ค้นพบ', - noPluginFound: 'ไม่พบปลั๊กอิน', - empower: 'เพิ่มศักยภาพในการพัฒนา AI ของคุณ', - difyMarketplace: 'ตลาด Dify', - partnerTip: 'ได้รับการตรวจสอบโดยพันธมิตรของ Dify', - verifiedTip: 'ได้รับการตรวจสอบโดย Dify', - }, - task: { - installing: 'การติดตั้งปลั๊กอิน {{installingLength}} 0 เสร็จแล้ว', - installingWithError: 'การติดตั้งปลั๊กอิน {{installingLength}}, {{successLength}} สําเร็จ, {{errorLength}} ล้มเหลว', - installingWithSuccess: 'การติดตั้งปลั๊กอิน {{installingLength}}, {{successLength}} สําเร็จ', - installedError: '{{errorLength}} ปลั๊กอินติดตั้งไม่สําเร็จ', - clearAll: 'ล้างทั้งหมด', - installError: '{{errorLength}} ปลั๊กอินติดตั้งไม่สําเร็จ คลิกเพื่อดู', - installSuccess: '{{successLength}} plugins installed successfully', - installed: 'Installed', - runningPlugins: 'Installing Plugins', - successPlugins: 'Successfully Installed Plugins', - errorPlugins: 'Failed to Install Plugins', - }, - searchCategories: 'หมวดหมู่การค้นหา', - searchInMarketplace: 'ค้นหาใน Marketplace', - findMoreInMarketplace: 'ค้นหาเพิ่มเติมใน Marketplace', - installPlugin: 'ติดตั้งปลั๊กอิน', - search: 'ค้น', - from: 'จาก', - install: '{{num}} การติดตั้ง', - endpointsEnabled: '{{num}} ชุดของปลายทางที่เปิดใช้งาน', - searchPlugins: 'ค้นหาปลั๊กอิน', - installAction: 'ติดตั้ง', - searchTools: 'เครื่องมือค้นหา...', - installFrom: 'ติดตั้งจาก', - fromMarketplace: 'จาก Marketplace', - allCategories: 'หมวดหมู่ทั้งหมด', - metadata: { - title: 'ปลั๊กอิน', - }, - difyVersionNotCompatible: 'เวอร์ชั่นปัจจุบันของ Dify ไม่สามารถใช้งานร่วมกับปลั๊กอินนี้ได้ กรุณาอัปเกรดไปยังเวอร์ชั่นขั้นต่ำที่ต้องการ: {{minimalDifyVersion}}', - requestAPlugin: 'ขอปลั๊กอิน', - publishPlugins: 'เผยแพร่ปลั๊กอิน', - auth: { - saveOnly: 'บันทึกเฉพาะ', - oauthClientSettings: 'การตั้งค่าไคลเอนต์ OAuth', - addApi: 'เพิ่มคีย์ API', - setDefault: 'ตั้งเป็นค่าเริ่มต้น', - addOAuth: 'เพิ่ม OAuth', - authRemoved: 'ผู้แต่งถูกลบออก', - default: 'ค่าเริ่มต้น', - setupOAuth: 'ตั้งค่า OAuth Client', - useOAuthAuth: 'ใช้การอนุญาต OAuth', - workspaceDefault: 'พื้นที่ทำงานเริ่มต้น', - authorization: 'การอนุญาต', - saveAndAuth: 'บันทึกและอนุญาต', - useApi: 'ใช้รหัส API', - authorizations: 'การอนุญาต', - oauthClient: 'ไคลเอนต์ OAuth', - authorizationName: 'ชื่อผู้มีอำนาจ', - useApiAuth: 'การกำหนดค่าการอนุญาตคีย์ API', - useOAuth: 'ใช้ OAuth', - custom: 'ที่กำหนดเอง', - useApiAuthDesc: 'หลังจากตั้งค่าข้อมูลประจำตัวแล้ว สมาชิกทุกคนภายในพื้นที่ทำงานสามารถใช้เครื่องมือนี้เมื่อจัดการแอปพลิเคชันได้', - clientInfo: 'เนื่องจากไม่พบความลับของลูกค้าสำหรับผู้ให้บริการเครื่องมือนี้ จำเป็นต้องตั้งค่าแบบแมนนวล สำหรับ redirect_uri กรุณาใช้', - unavailable: 'ไม่มีให้บริการ', - customCredentialUnavailable: 'ข้อมูลรับรองที่กำหนดเองขณะนี้ไม่สามารถใช้ได้', - credentialUnavailable: 'ข้อมูลรับรองไม่สามารถใช้งานได้ในขณะนี้ กรุณาติดต่อผู้ดูแลระบบ.', - credentialUnavailableInButton: 'ข้อมูลรับรองไม่พร้อมใช้งาน', - connectedWorkspace: 'พื้นที่ทํางานที่เชื่อมต่อ', - emptyAuth: 'โปรดกําหนดค่าการรับรองความถูกต้อง', - }, - deprecated: 'เลิกใช้', - autoUpdate: { - strategy: { - disabled: { - name: 'ผู้พิการ', - description: 'ปลั๊กอินจะไม่อัปเดตอัตโนมัติ', - }, - fixOnly: { - name: 'ซ่อมเฉพาะ', - selectedDescription: 'อัปเดตอัตโนมัติเฉพาะเวอร์ชันแพตช์เท่านั้น', - description: 'การอัปเดตอัตโนมัติสำหรับเฉพาะเวอร์ชันแพทช์ (เช่น 1.0.1 → 1.0.2) การเปลี่ยนแปลงเวอร์ชันย่อยจะไม่ทำให้เกิดการอัปเดต', - }, - latest: { - name: 'ล่าสุด', - selectedDescription: 'อัปเดตเป็นเวอร์ชันล่าสุดเสมอ', - description: 'อัปเดตเป็นเวอร์ชันล่าสุดเสมอ', - }, - }, - upgradeMode: { - partial: 'เฉพาะที่เลือกไว้', - exclude: 'ยกเว้นที่เลือกไว้', - all: 'อัปเดตทั้งหมด', - }, - upgradeModePlaceholder: { - exclude: 'ปลั๊กอินที่เลือกจะไม่อัปเดตอัตโนมัติ', - partial: 'เฉพาะปลั๊กอินที่เลือกจะอัปเดตโดยอัตโนมัติ ขณะนี้ไม่มีปลั๊กอินใดที่ถูกเลือก ดังนั้นจะไม่มีปลั๊กอินใดที่อัปเดตโดยอัตโนมัติ', - }, - operation: { - clearAll: 'ล้างทั้งหมด', - select: 'เลือกปลั๊กอิน', - }, - pluginDowngradeWarning: { - title: 'การลดเวอร์ชันปลั๊กอิน', - downgrade: 'ลดระดับอยู่ดี', - exclude: 'ไม่รวมในการอัปเดตอัตโนมัติ', - description: 'ฟีเจอร์การอัปเดตอัตโนมัติเปิดใช้งานอยู่สำหรับปลั๊กอินนี้ การลดระดับเวอร์ชันอาจทำให้การเปลี่ยนแปลงของคุณหายไปในระหว่างการอัปเดตอัตโนมัติต่อไป', - }, - noPluginPlaceholder: { - noInstalled: 'ไม่มีปลั๊กอินติดตั้ง', - noFound: 'ไม่พบปลั๊กอิน', - }, - specifyPluginsToUpdate: 'ระบุปลั๊กอินที่จะแ atualizar', - updateTime: 'เวลาที่อัปเดต', - updateTimeTitle: 'เวลาที่อัปเดต', - updateSettings: 'อัปเดตการตั้งค่า', - nextUpdateTime: 'การอัปเดตอัตโนมัติครั้งถัดไป: {{time}}', - automaticUpdates: 'การอัปเดตอัตโนมัติ', - excludeUpdate: 'ปลั๊กอิน {{num}} ต่อไปนี้จะไม่อัพเดตอัตโนมัติ', - partialUPdate: 'ปลั๊กอิน {{num}} ตัวต่อไปนี้จะอัปเดตให้อัตโนมัติเท่านั้น', - changeTimezone: 'ในการเปลี่ยนเขตเวลา ให้ไปที่ การตั้งค่า', - }, - readmeInfo: { - title: 'อ่านฉัน', - needHelpCheckReadme: 'ต้องการความช่วยเหลือ? ตรวจสอบไฟล์ README', - noReadmeAvailable: 'ไม่มีไฟล์ README', - failedToFetch: 'ไม่สามารถดึงไฟล์ README ได้', - }, -} - -export default translation diff --git a/web/i18n/th-TH/register.json b/web/i18n/th-TH/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/th-TH/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/th-TH/register.ts b/web/i18n/th-TH/register.ts deleted file mode 100644 index e2410dd34b..0000000000 --- a/web/i18n/th-TH/register.ts +++ /dev/null @@ -1,3 +0,0 @@ -const translation = {} - -export default translation diff --git a/web/i18n/th-TH/run-log.json b/web/i18n/th-TH/run-log.json new file mode 100644 index 0000000000..4212665596 --- /dev/null +++ b/web/i18n/th-TH/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "อินพุต", + "result": "ผล", + "detail": "รายละเอียด", + "tracing": "ติดตาม", + "resultPanel": { + "status": "สถานะ", + "time": "เวลาที่ผ่านไป", + "tokens": "โทเค็นทั้งหมด" + }, + "meta": { + "title": "ข้อมูลเมตา", + "status": "สถานะ", + "version": "เวอร์ชัน", + "executor": "ผู้ปฏิบัติการ", + "startTime": "เวลาเริ่มต้น", + "time": "เวลาที่ผ่านไป", + "tokens": "โทเค็นทั้งหมด", + "steps": "เรียกใช้ขั้นตอน" + }, + "resultEmpty": { + "title": "เรียกใช้เฉพาะรูปแบบ JSON เอาต์พุต", + "tipLeft": "กรุณาไปที่", + "link": "แผงรายละเอียด", + "tipRight": "ดูมัน" + }, + "circularInvocationTip": "มีการเรียกใช้เครื่องมือ/โหนดแบบวงกลมในเวิร์กโฟลว์ปัจจุบัน", + "actionLogs": "บันทึกการดําเนินการ" +} diff --git a/web/i18n/th-TH/run-log.ts b/web/i18n/th-TH/run-log.ts deleted file mode 100644 index 49e7f68fb3..0000000000 --- a/web/i18n/th-TH/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -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: 'ดูมัน', - }, - circularInvocationTip: 'มีการเรียกใช้เครื่องมือ/โหนดแบบวงกลมในเวิร์กโฟลว์ปัจจุบัน', - actionLogs: 'บันทึกการดําเนินการ', -} - -export default translation diff --git a/web/i18n/th-TH/share.json b/web/i18n/th-TH/share.json new file mode 100644 index 0000000000..aff4d6d693 --- /dev/null +++ b/web/i18n/th-TH/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "appUnavailable": "แอพไม่พร้อมใช้งาน", + "appUnknownError": "แอพไม่พร้อมใช้งาน", + "welcome": "" + }, + "chat": { + "newChat": "แชทใหม่", + "pinnedTitle": "ปัก หมุด", + "unpinnedTitle": "แมว", + "newChatDefaultName": "การสนทนาใหม่", + "resetChat": "รีเซ็ตการสนทนา", + "poweredBy": "รับพลังมาจาก", + "prompt": "พร้อมท์", + "privatePromptConfigTitle": "การตั้งค่าการสนทนา", + "publicPromptConfigTitle": "พรอมต์เริ่มต้น", + "configStatusDes": "ก่อนเริ่ม คุณสามารถแก้ไขการตั้งค่าการสนทนาได้", + "configDisabled": "มีการใช้การตั้งค่าเซสชันก่อนหน้านี้สําหรับเซสชันนี้", + "startChat": "เริ่มแชท", + "privacyPolicyLeft": "โปรดอ่าน", + "privacyPolicyMiddle": "นโยบายความเป็นส่วนตัว", + "privacyPolicyRight": "จัดทําโดยนักพัฒนาแอป", + "deleteConversation": { + "title": "ลบการสนทนา", + "content": "คุณแน่ใจหรือไม่ว่าต้องการลบการสนทนานี้?" + }, + "tryToSolve": "พยายามแก้", + "temporarySystemIssue": "ขออภัย ปัญหาระบบชั่วคราว", + "expand": "ขยาย", + "collapse": "ย่อ", + "newChatTip": "อยู่ในแชทใหม่แล้ว", + "chatSettingsTitle": "การตั้งค่าการสนทนาใหม่", + "viewChatSettings": "ดูการตั้งค่าการแชท", + "chatFormTip": "การตั้งค่าแชทไม่สามารถเปลี่ยนแปลงได้หลังจากที่แชทเริ่มต้นขึ้นแล้ว." + }, + "generation": { + "tabs": { + "create": "เรียกใช้ครั้งเดียว", + "batch": "เรียกใช้แบทช์", + "saved": "บันทึก" + }, + "savedNoData": { + "title": "คุณยังไม่ได้บันทึกผลลัพธ์!", + "description": "เริ่มสร้างเนื้อหา และค้นหาผลลัพธ์ที่บันทึกไว้ที่นี่", + "startCreateContent": "เริ่มสร้างเนื้อหา" + }, + "title": "ความสมบูรณ์ของ AI", + "queryTitle": "เนื้อหาแบบสอบถาม", + "completionResult": "ผลการเสร็จสมบูรณ์", + "queryPlaceholder": "เขียนเนื้อหาแบบสอบถามของคุณ...", + "run": "ประหารชีวิต", + "copy": "ลอก", + "resultTitle": "ความสมบูรณ์ของ AI", + "noData": "AI จะให้สิ่งที่คุณต้องการที่นี่", + "csvUploadTitle": "ลากและวางไฟล์ CSV ของคุณที่นี่ หรือ", + "browse": "เล็ม", + "csvStructureTitle": "ไฟล์ CSV ต้องสอดคล้องกับโครงสร้างต่อไปนี้:", + "downloadTemplate": "ดาวน์โหลดเทมเพลตที่นี่", + "field": "สนาม", + "batchFailed": { + "info": "{{num}} การดําเนินการที่ล้มเหลว", + "retry": "ลอง", + "outputPlaceholder": "ไม่มีเนื้อหาเอาต์พุต" + }, + "errorMsg": { + "empty": "กรุณาป้อนเนื้อหาในไฟล์ที่อัปโหลด", + "fileStructNotMatch": "ไฟล์ CSV ที่อัปโหลดไม่ตรงกับโครงสร้าง", + "emptyLine": "แถว {{rowIndex}} ว่างเปล่า", + "invalidLine": "แถว {{rowIndex}}: ค่า {{varName}} ต้องว่างเปล่าไม่ได้", + "moreThanMaxLengthLine": "แถว {{rowIndex}}: ค่า {{varName}} ต้องไม่เกิน {{maxLength}} อักขระ", + "atLeastOne": "โปรดป้อนอย่างน้อยหนึ่งแถวในไฟล์ที่อัปโหลด" + }, + "execution": "การดำเนินการ", + "executions": "{{num}} ครั้งที่รัน", + "stopRun": "หยุดการทำงาน" + }, + "login": { + "backToHome": "กลับไปที่หน้าแรก" + } +} diff --git a/web/i18n/th-TH/share.ts b/web/i18n/th-TH/share.ts deleted file mode 100644 index 69558b1c93..0000000000 --- a/web/i18n/th-TH/share.ts +++ /dev/null @@ -1,82 +0,0 @@ -const translation = { - common: { - appUnavailable: 'แอพไม่พร้อมใช้งาน', - appUnknownError: 'แอพไม่พร้อมใช้งาน', - welcome: '', - }, - chat: { - newChat: 'แชทใหม่', - pinnedTitle: 'ปัก หมุด', - unpinnedTitle: 'แมว', - newChatDefaultName: 'การสนทนาใหม่', - resetChat: 'รีเซ็ตการสนทนา', - poweredBy: 'รับพลังมาจาก', - prompt: 'พร้อมท์', - privatePromptConfigTitle: 'การตั้งค่าการสนทนา', - publicPromptConfigTitle: 'พรอมต์เริ่มต้น', - configStatusDes: 'ก่อนเริ่ม คุณสามารถแก้ไขการตั้งค่าการสนทนาได้', - configDisabled: 'มีการใช้การตั้งค่าเซสชันก่อนหน้านี้สําหรับเซสชันนี้', - startChat: 'เริ่มแชท', - privacyPolicyLeft: 'โปรดอ่าน', - privacyPolicyMiddle: 'นโยบายความเป็นส่วนตัว', - privacyPolicyRight: 'จัดทําโดยนักพัฒนาแอป', - deleteConversation: { - title: 'ลบการสนทนา', - content: 'คุณแน่ใจหรือไม่ว่าต้องการลบการสนทนานี้?', - }, - tryToSolve: 'พยายามแก้', - temporarySystemIssue: 'ขออภัย ปัญหาระบบชั่วคราว', - expand: 'ขยาย', - collapse: 'ย่อ', - newChatTip: 'อยู่ในแชทใหม่แล้ว', - chatSettingsTitle: 'การตั้งค่าการสนทนาใหม่', - viewChatSettings: 'ดูการตั้งค่าการแชท', - chatFormTip: 'การตั้งค่าแชทไม่สามารถเปลี่ยนแปลงได้หลังจากที่แชทเริ่มต้นขึ้นแล้ว.', - }, - generation: { - tabs: { - create: 'เรียกใช้ครั้งเดียว', - batch: 'เรียกใช้แบทช์', - saved: 'บันทึก', - }, - savedNoData: { - title: 'คุณยังไม่ได้บันทึกผลลัพธ์!', - description: 'เริ่มสร้างเนื้อหา และค้นหาผลลัพธ์ที่บันทึกไว้ที่นี่', - startCreateContent: 'เริ่มสร้างเนื้อหา', - }, - title: 'ความสมบูรณ์ของ AI', - queryTitle: 'เนื้อหาแบบสอบถาม', - completionResult: 'ผลการเสร็จสมบูรณ์', - queryPlaceholder: 'เขียนเนื้อหาแบบสอบถามของคุณ...', - run: 'ประหารชีวิต', - copy: 'ลอก', - resultTitle: 'ความสมบูรณ์ของ AI', - noData: 'AI จะให้สิ่งที่คุณต้องการที่นี่', - csvUploadTitle: 'ลากและวางไฟล์ CSV ของคุณที่นี่ หรือ', - browse: 'เล็ม', - csvStructureTitle: 'ไฟล์ CSV ต้องสอดคล้องกับโครงสร้างต่อไปนี้:', - downloadTemplate: 'ดาวน์โหลดเทมเพลตที่นี่', - field: 'สนาม', - batchFailed: { - info: '{{num}} การดําเนินการที่ล้มเหลว', - retry: 'ลอง', - outputPlaceholder: 'ไม่มีเนื้อหาเอาต์พุต', - }, - errorMsg: { - empty: 'กรุณาป้อนเนื้อหาในไฟล์ที่อัปโหลด', - fileStructNotMatch: 'ไฟล์ CSV ที่อัปโหลดไม่ตรงกับโครงสร้าง', - emptyLine: 'แถว {{rowIndex}} ว่างเปล่า', - invalidLine: 'แถว {{rowIndex}}: ค่า {{varName}} ต้องว่างเปล่าไม่ได้', - moreThanMaxLengthLine: 'แถว {{rowIndex}}: ค่า {{varName}} ต้องไม่เกิน {{maxLength}} อักขระ', - atLeastOne: 'โปรดป้อนอย่างน้อยหนึ่งแถวในไฟล์ที่อัปโหลด', - }, - execution: 'การดำเนินการ', - executions: '{{num}} ครั้งที่รัน', - stopRun: 'หยุดการทำงาน', - }, - login: { - backToHome: 'กลับไปที่หน้าแรก', - }, -} - -export default translation diff --git a/web/i18n/th-TH/time.json b/web/i18n/th-TH/time.json new file mode 100644 index 0000000000..8e57a374e5 --- /dev/null +++ b/web/i18n/th-TH/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Fri": "เสรี", + "Sat": "เสาร์", + "Wed": "วันพุธ", + "Sun": "ดวงอาทิตย์", + "Tue": "อังคาร", + "Thu": "วันพฤหัสบดี", + "Mon": "มอน" + }, + "months": { + "February": "กุมภาพันธ์", + "July": "กรกฎาคม", + "June": "มิถุนายน", + "January": "มกราคม", + "September": "กันยายน", + "August": "สิงหาคม", + "October": "ตุลาคม", + "May": "พฤษภาคม", + "November": "พฤศจิกายน", + "March": "มีนาคม", + "December": "ธันวาคม", + "April": "เมษายน" + }, + "operation": { + "ok": "ตกลง", + "cancel": "ยกเลิก", + "pickDate": "เลือกวันที่", + "now": "ตอนนี้" + }, + "title": { + "pickTime": "เลือกเวลา" + }, + "defaultPlaceholder": "เลือกเวลา...", + "dateFormats": { + "input": "YYYY-MM-DD", + "displayWithTime": "MMMM D, YYYY hh:mm A", + "outputWithTime": "YYYY-MM-DDTHH:mm:ss.SSSZ", + "display": "MMMM D, YYYY", + "output": "YYYY-MM-DD" + } +} diff --git a/web/i18n/th-TH/time.ts b/web/i18n/th-TH/time.ts deleted file mode 100644 index 73b2a4fed9..0000000000 --- a/web/i18n/th-TH/time.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - daysInWeek: { - Fri: 'เสรี', - Sat: 'เสาร์', - Wed: 'วันพุธ', - Sun: 'ดวงอาทิตย์', - Tue: 'อังคาร', - Thu: 'วันพฤหัสบดี', - Mon: 'มอน', - }, - months: { - February: 'กุมภาพันธ์', - July: 'กรกฎาคม', - June: 'มิถุนายน', - January: 'มกราคม', - September: 'กันยายน', - August: 'สิงหาคม', - October: 'ตุลาคม', - May: 'พฤษภาคม', - November: 'พฤศจิกายน', - March: 'มีนาคม', - December: 'ธันวาคม', - April: 'เมษายน', - }, - operation: { - ok: 'ตกลง', - cancel: 'ยกเลิก', - pickDate: 'เลือกวันที่', - now: 'ตอนนี้', - }, - title: { - pickTime: 'เลือกเวลา', - }, - defaultPlaceholder: 'เลือกเวลา...', - dateFormats: { - input: 'YYYY-MM-DD', - displayWithTime: 'MMMM D, YYYY hh:mm A', - outputWithTime: 'YYYY-MM-DDTHH:mm:ss.SSSZ', - display: 'MMMM D, YYYY', - output: 'YYYY-MM-DD', - }, -} - -export default translation diff --git a/web/i18n/th-TH/tools.json b/web/i18n/th-TH/tools.json new file mode 100644 index 0000000000..e2fb27cdc1 --- /dev/null +++ b/web/i18n/th-TH/tools.json @@ -0,0 +1,262 @@ +{ + "title": "เครื่อง มือ", + "createCustomTool": "สร้างเครื่องมือที่กําหนดเอง", + "customToolTip": "เรียนรู้เพิ่มเติมเกี่ยวกับเครื่องมือแบบกําหนดเองของ Dify", + "type": { + "builtIn": "ในตัว", + "custom": "ธรรมเนียม", + "workflow": "เวิร์กโฟลว์" + }, + "contribute": { + "line1": "ฉันสนใจใน", + "line2": "เครื่องมือที่มีส่วนร่วมใน Dify", + "viewGuide": "ดูคู่มือ" + }, + "author": "โดย", + "auth": { + "authorized": "อนุญาต", + "setup": "ตั้งค่าการให้สิทธิ์เพื่อใช้", + "setupModalTitle": "ตั้งค่าการให้สิทธิ์", + "setupModalTitleDescription": "หลังจากกําหนดค่าข้อมูลประจําตัวแล้ว สมาชิกทั้งหมดภายในพื้นที่ทํางานสามารถใช้เครื่องมือนี้เมื่อประสานงานแอปพลิเคชันได้" + }, + "includeToolNum": "{{num}} รวมเครื่องมือ", + "addToolModal": { + "type": "ประเภท", + "category": "ประเภท", + "added": "เพิ่ม", + "custom": { + "title": "ไม่มีเครื่องมือกำหนดเอง", + "tip": "สร้างเครื่องมือกำหนดเอง" + }, + "workflow": { + "title": "ไม่มีเครื่องมือเวิร์กโฟลว์", + "tip": "เผยแพร่เวิร์กโฟลว์เป็นเครื่องมือใน Studio" + }, + "mcp": { + "title": "ไม่มีเครื่องมือ MCP", + "tip": "เพิ่มเซิร์ฟเวอร์ MCP" + }, + "agent": { + "title": "ไม่มีกลยุทธ์เอเจนต์" + } + }, + "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 Header Key คุณสามารถปล่อยให้เป็น \"การอนุญาต\" ได้หากคุณไม่รู้ว่ามันคืออะไรหรือตั้งค่าเป็นค่าที่กําหนดเอง", + "types": { + "none": "ไม่มีใคร", + "apiKeyPlaceholder": "ชื่อส่วนหัว HTTP สําหรับคีย์ API", + "apiValuePlaceholder": "ป้อนคีย์ API", + "api_key_header": "หัวเรื่อง", + "api_key_query": "พารามิเตอร์การค้นหา", + "queryParamPlaceholder": "ชื่อพารามิเตอร์คำค้นสำหรับ API Key" + }, + "key": "กุญแจ", + "value": "ค่า", + "queryParam": "พารามิเตอร์การค้นหา", + "queryParamTooltip": "ชื่อของพารามิเตอร์การค้นหา API key ที่ต้องส่ง ตัวอย่างเช่น \"key\" ใน \"https://example.com/test?key=API_KEY\"." + }, + "authHeaderPrefix": { + "title": "ประเภทการรับรองความถูกต้อง", + "types": { + "basic": "พื้นฐาน", + "bearer": "ผู้ถือ", + "custom": "ธรรมเนียม" + } + }, + "privacyPolicy": "นโยบายความเป็นส่วนตัว", + "privacyPolicyPlaceholder": "กรุณากรอกนโยบายความเป็นส่วนตัว", + "toolInput": { + "title": "อินพุตเครื่องมือ", + "name": "ชื่อ", + "required": "ต้องระบุ", + "method": "วิธี", + "methodSetting": "ฉาก", + "methodSettingTip": "ผู้ใช้กรอกข้อมูลในการกําหนดค่าเครื่องมือ", + "methodParameter": "พารามิเตอร์", + "methodParameterTip": "การเติม LLM ระหว่างการอนุมาน", + "label": "ในตอนกลางวัน", + "labelPlaceholder": "เลือกแท็ก (ไม่บังคับ)", + "description": "คำอธิบาย", + "descriptionPlaceholder": "คําอธิบายความหมายของพารามิเตอร์" + }, + "customDisclaimer": "ข้อจํากัดความรับผิดชอบที่กําหนดเอง", + "customDisclaimerPlaceholder": "โปรดป้อนข้อจํากัดความรับผิดชอบที่กําหนดเอง", + "confirmTitle": "ยืนยันการบันทึก ?", + "confirmTip": "แอปที่ใช้เครื่องมือนี้จะได้รับผลกระทบ", + "deleteToolConfirmTitle": "ลบเครื่องมือนี้?", + "deleteToolConfirmContent": "การลบเครื่องมือนั้นไม่สามารถย้อนกลับได้ ผู้ใช้จะไม่สามารถเข้าถึงเครื่องมือของคุณได้อีกต่อไป", + "toolOutput": { + "title": "เอาต์พุตของเครื่องมือ", + "name": "ชื่อ", + "reserved": "สงวน", + "reservedParameterDuplicateTip": "text, json และ files เป็นตัวแปรที่สงวนไว้ ไม่สามารถใช้ชื่อตัวแปรเหล่านี้ในโครงสร้างผลลัพธ์ได้", + "description": "คำอธิบาย" + } + }, + "test": { + "title": "ทดสอบ", + "parametersValue": "พารามิเตอร์และค่า", + "parameters": "พารามิเตอร์", + "value": "ค่า", + "testResult": "ผลการทดสอบ", + "testResultPlaceholder": "ผลการทดสอบจะแสดงที่นี่" + }, + "thought": { + "using": "ใช้", + "used": "ใช้แล้ว", + "requestTitle": "ขอร้อง", + "responseTitle": "การตอบสนอง" + }, + "setBuiltInTools": { + "info": "ข้อมูล", + "setting": "ฉาก", + "toolDescription": "คําอธิบายเครื่องมือ", + "parameters": "พารามิเตอร์", + "string": "เชือก", + "number": "เลข", + "required": "ต้องระบุ", + "infoAndSetting": "ข้อมูลและการตั้งค่า", + "file": "แฟ้ม" + }, + "noCustomTool": { + "title": "ไม่มีเครื่องมือที่กําหนดเอง!", + "content": "เพิ่มและจัดการเครื่องมือที่กําหนดเองของคุณที่นี่สําหรับการสร้างแอป AI", + "createTool": "สร้างเครื่องมือ" + }, + "noSearchRes": { + "title": "ขออภัย ไม่มีผลลัพธ์!", + "content": "เราไม่พบเครื่องมือที่ตรงกับการค้นหาของคุณ", + "reset": "รีเซ็ตการค้นหา" + }, + "builtInPromptTitle": "พร้อมท์", + "toolRemoved": "เครื่องมือถูกลบออก", + "notAuthorized": "เครื่องมือไม่ได้รับอนุญาต", + "howToGet": "วิธีรับ", + "openInStudio": "เปิดในสตูดิโอ", + "toolNameUsageTip": "ชื่อการเรียกเครื่องมือสําหรับการใช้เหตุผลและการแจ้งเตือนของตัวแทน", + "noTools": "ไม่พบเครื่องมือ", + "copyToolName": "คัดลอกชื่อ", + "mcp": { + "create": { + "cardTitle": "เพิ่มเซิร์ฟเวอร์ MCP (HTTP)", + "cardLink": "เรียนรู้เพิ่มเติมเกี่ยวกับการรวมเซิร์ฟเวอร์ MCP" + }, + "noConfigured": "เซิร์ฟเวอร์ที่ยังไม่ได้กำหนดค่า", + "updateTime": "อัปเดตแล้ว", + "toolsCount": "{count} เครื่องมือ", + "noTools": "ไม่มีเครื่องมือที่ใช้ได้", + "modal": { + "title": "เพิ่มเซิร์ฟเวอร์ MCP (HTTP)", + "editTitle": "แก้ไขเซิร์ฟเวอร์ MCP (HTTP)", + "name": "ชื่อ & ไอคอน", + "namePlaceholder": "ตั้งชื่อเซิร์ฟเวอร์ MCP ของคุณ", + "serverUrl": "URL ของเซิร์ฟเวอร์", + "serverUrlPlaceholder": "URL สำหรับจุดสิ้นสุดของเซิร์ฟเวอร์", + "serverUrlWarning": "การอัปเดตที่อยู่เซิร์ฟเวอร์อาจทำให้แอปพลิเคชันที่พึ่งพาเซิร์ฟเวอร์นี้หยุดทำงาน", + "serverIdentifier": "ตัวระบุเซิร์ฟเวอร์", + "serverIdentifierTip": "ตัวระบุที่ไม่ซ้ำกันสำหรับเซิร์ฟเวอร์ MCP ภายในพื้นที่ทำงาน ตัวอักษรเล็ก ตัวเลข ขีดล่าง และขีดกลางเท่านั้น ความยาวไม่เกิน 24 ตัวอักษร", + "serverIdentifierPlaceholder": "ตัวระบุที่ไม่ซ้ำกัน เช่น my-mcp-server", + "serverIdentifierWarning": "เซิร์ฟเวอร์จะไม่ถูกต้องในแอปพลิเคชันที่มีอยู่หลังจากการเปลี่ยน ID", + "cancel": "ยกเลิก", + "save": "บันทึก", + "confirm": "เพิ่มและอนุญาต", + "timeout": "หมดเวลา", + "sseReadTimeout": "หมดเวลาการอ่าน SSE", + "timeoutPlaceholder": "สามสิบ", + "headerValue": "ค่าหัวข้อ", + "addHeader": "เพิ่มหัวเรื่อง", + "headerKey": "ชื่อหัวเรื่อง", + "headerKeyPlaceholder": "เช่น การอนุญาต", + "headerValuePlaceholder": "ตัวอย่าง: รหัสตัวแทน token123", + "headers": "หัวเรื่อง", + "noHeaders": "ไม่มีการกำหนดหัวข้อที่กำหนดเอง", + "headersTip": "HTTP header เพิ่มเติมที่จะส่งไปกับคำขอ MCP server", + "maskedHeadersTip": "ค่าหัวถูกปกปิดเพื่อความปลอดภัย การเปลี่ยนแปลงจะปรับปรุงค่าที่แท้จริง", + "clientSecret": "รหัสลับของลูกค้า", + "configurations": "การตั้งค่า", + "authentication": "การตรวจสอบตัวตน", + "clientSecretPlaceholder": "รหัสลับของลูกค้า", + "useDynamicClientRegistration": "ใช้การลงทะเบียนลูกค้าแบบไดนามิก", + "clientID": "รหัสลูกค้า", + "redirectUrlWarning": "กรุณากำหนด URL การเปลี่ยนเส้นทาง OAuth ของคุณเป็น:" + }, + "delete": "ลบเซิร์ฟเวอร์ MCP", + "deleteConfirmTitle": "คุณต้องการลบ {mcp} หรือไม่?", + "operation": { + "edit": "แก้ไข", + "remove": "ลบ" + }, + "authorize": "อนุญาต", + "authorizing": "กำลังอนุญาต...", + "authorizingRequired": "ต้องมีการอนุญาต", + "authorizeTip": "หลังจากอนุญาต เครื่องมือจะถูกแสดงที่นี่", + "update": "อัปเดต", + "updating": "กำลังอัปเดต", + "gettingTools": "กำลังโหลดเครื่องมือ...", + "updateTools": "กำลังอัปเดตเครื่องมือ...", + "toolsEmpty": "ยังไม่โหลดเครื่องมือ", + "getTools": "รับเครื่องมือ", + "toolUpdateConfirmTitle": "อัปเดตรายการเครื่องมือ", + "toolUpdateConfirmContent": "การอัปเดตรายการเครื่องมืออาจส่งผลต่อแอปพลิเคชันที่มีอยู่ คุณต้องการดำเนินการต่อหรือไม่?", + "toolsNum": "{count} เครื่องมือที่รวมอยู่", + "onlyTool": "รวม 1 เครื่องมือ", + "identifier": "ตัวระบุเซิร์ฟเวอร์ (คลิกเพื่อคัดลอก)", + "server": { + "title": "เซิร์ฟเวอร์ MCP", + "url": "URL ของเซิร์ฟเวอร์", + "reGen": "คุณต้องการสร้าง URL ของเซิร์ฟเวอร์ใหม่หรือไม่?", + "addDescription": "เพิ่มคำอธิบาย", + "edit": "แก้ไขคำอธิบาย", + "modal": { + "addTitle": "เพิ่มคำอธิบายเพื่อเปิดใช้งานเซิร์ฟเวอร์ MCP", + "editTitle": "แก้ไขคำอธิบาย", + "description": "คำอธิบาย", + "descriptionPlaceholder": "อธิบายว่าเครื่องมือนี้ทำอะไรและควรใช้กับ LLM อย่างไร", + "parameters": "พารามิเตอร์", + "parametersTip": "เพิ่มคำอธิบายสำหรับแต่ละพารามิเตอร์เพื่อช่วยให้ LLM เข้าใจวัตถุประสงค์และข้อจำกัดของมัน", + "parametersPlaceholder": "วัตถุประสงค์และข้อจำกัดของพารามิเตอร์", + "confirm": "เปิดใช้งานเซิร์ฟเวอร์ MCP" + }, + "publishTip": "แอปไม่ถูกเผยแพร่ กรุณาเผยแพร่แอปก่อน" + }, + "toolItem": { + "noDescription": "ไม่มีคำอธิบาย", + "parameters": "พารามิเตอร์" + } + }, + "allTools": "เครื่องมือทั้งหมด" +} diff --git a/web/i18n/th-TH/tools.ts b/web/i18n/th-TH/tools.ts deleted file mode 100644 index 1616d83ba4..0000000000 --- a/web/i18n/th-TH/tools.ts +++ /dev/null @@ -1,264 +0,0 @@ -const translation = { - title: 'เครื่อง มือ', - createCustomTool: 'สร้างเครื่องมือที่กําหนดเอง', - customToolTip: 'เรียนรู้เพิ่มเติมเกี่ยวกับเครื่องมือแบบกําหนดเองของ Dify', - type: { - builtIn: 'ในตัว', - custom: 'ธรรมเนียม', - workflow: 'เวิร์กโฟลว์', - }, - contribute: { - line1: 'ฉันสนใจใน', - line2: 'เครื่องมือที่มีส่วนร่วมใน Dify', - viewGuide: 'ดูคู่มือ', - }, - author: 'โดย', - auth: { - authorized: 'อนุญาต', - setup: 'ตั้งค่าการให้สิทธิ์เพื่อใช้', - setupModalTitle: 'ตั้งค่าการให้สิทธิ์', - setupModalTitleDescription: 'หลังจากกําหนดค่าข้อมูลประจําตัวแล้ว สมาชิกทั้งหมดภายในพื้นที่ทํางานสามารถใช้เครื่องมือนี้เมื่อประสานงานแอปพลิเคชันได้', - }, - includeToolNum: '{{num}} รวมเครื่องมือ', - addToolModal: { - type: 'ประเภท', - category: 'ประเภท', - added: 'เพิ่ม', - custom: { - title: 'ไม่มีเครื่องมือกำหนดเอง', - tip: 'สร้างเครื่องมือกำหนดเอง', - }, - workflow: { - title: 'ไม่มีเครื่องมือเวิร์กโฟลว์', - tip: 'เผยแพร่เวิร์กโฟลว์เป็นเครื่องมือใน Studio', - }, - mcp: { - title: 'ไม่มีเครื่องมือ MCP', - tip: 'เพิ่มเซิร์ฟเวอร์ MCP', - }, - agent: { - title: 'ไม่มีกลยุทธ์เอเจนต์', - }, - }, - 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 Header Key คุณสามารถปล่อยให้เป็น "การอนุญาต" ได้หากคุณไม่รู้ว่ามันคืออะไรหรือตั้งค่าเป็นค่าที่กําหนดเอง', - types: { - none: 'ไม่มีใคร', - apiKeyPlaceholder: 'ชื่อส่วนหัว HTTP สําหรับคีย์ API', - apiValuePlaceholder: 'ป้อนคีย์ API', - api_key_header: 'หัวเรื่อง', - api_key_query: 'พารามิเตอร์การค้นหา', - queryParamPlaceholder: 'ชื่อพารามิเตอร์คำค้นสำหรับ API Key', - }, - key: 'กุญแจ', - value: 'ค่า', - queryParam: 'พารามิเตอร์การค้นหา', - queryParamTooltip: 'ชื่อของพารามิเตอร์การค้นหา API key ที่ต้องส่ง ตัวอย่างเช่น "key" ใน "https://example.com/test?key=API_KEY".', - }, - authHeaderPrefix: { - title: 'ประเภทการรับรองความถูกต้อง', - types: { - basic: 'พื้นฐาน', - bearer: 'ผู้ถือ', - custom: 'ธรรมเนียม', - }, - }, - privacyPolicy: 'นโยบายความเป็นส่วนตัว', - privacyPolicyPlaceholder: 'กรุณากรอกนโยบายความเป็นส่วนตัว', - toolInput: { - title: 'อินพุตเครื่องมือ', - name: 'ชื่อ', - required: 'ต้องระบุ', - method: 'วิธี', - methodSetting: 'ฉาก', - methodSettingTip: 'ผู้ใช้กรอกข้อมูลในการกําหนดค่าเครื่องมือ', - methodParameter: 'พารามิเตอร์', - methodParameterTip: 'การเติม LLM ระหว่างการอนุมาน', - label: 'ในตอนกลางวัน', - labelPlaceholder: 'เลือกแท็ก (ไม่บังคับ)', - description: 'คำอธิบาย', - descriptionPlaceholder: 'คําอธิบายความหมายของพารามิเตอร์', - }, - customDisclaimer: 'ข้อจํากัดความรับผิดชอบที่กําหนดเอง', - customDisclaimerPlaceholder: 'โปรดป้อนข้อจํากัดความรับผิดชอบที่กําหนดเอง', - confirmTitle: 'ยืนยันการบันทึก ?', - confirmTip: 'แอปที่ใช้เครื่องมือนี้จะได้รับผลกระทบ', - deleteToolConfirmTitle: 'ลบเครื่องมือนี้?', - deleteToolConfirmContent: 'การลบเครื่องมือนั้นไม่สามารถย้อนกลับได้ ผู้ใช้จะไม่สามารถเข้าถึงเครื่องมือของคุณได้อีกต่อไป', - toolOutput: { - title: 'เอาต์พุตของเครื่องมือ', - name: 'ชื่อ', - reserved: 'สงวน', - reservedParameterDuplicateTip: 'text, json และ files เป็นตัวแปรที่สงวนไว้ ไม่สามารถใช้ชื่อตัวแปรเหล่านี้ในโครงสร้างผลลัพธ์ได้', - description: 'คำอธิบาย', - }, - }, - test: { - title: 'ทดสอบ', - parametersValue: 'พารามิเตอร์และค่า', - parameters: 'พารามิเตอร์', - value: 'ค่า', - testResult: 'ผลการทดสอบ', - testResultPlaceholder: 'ผลการทดสอบจะแสดงที่นี่', - }, - thought: { - using: 'ใช้', - used: 'ใช้แล้ว', - requestTitle: 'ขอร้อง', - responseTitle: 'การตอบสนอง', - }, - setBuiltInTools: { - info: 'ข้อมูล', - setting: 'ฉาก', - toolDescription: 'คําอธิบายเครื่องมือ', - parameters: 'พารามิเตอร์', - string: 'เชือก', - number: 'เลข', - required: 'ต้องระบุ', - infoAndSetting: 'ข้อมูลและการตั้งค่า', - file: 'แฟ้ม', - }, - noCustomTool: { - title: 'ไม่มีเครื่องมือที่กําหนดเอง!', - content: 'เพิ่มและจัดการเครื่องมือที่กําหนดเองของคุณที่นี่สําหรับการสร้างแอป AI', - createTool: 'สร้างเครื่องมือ', - }, - noSearchRes: { - title: 'ขออภัย ไม่มีผลลัพธ์!', - content: 'เราไม่พบเครื่องมือที่ตรงกับการค้นหาของคุณ', - reset: 'รีเซ็ตการค้นหา', - }, - builtInPromptTitle: 'พร้อมท์', - toolRemoved: 'เครื่องมือถูกลบออก', - notAuthorized: 'เครื่องมือไม่ได้รับอนุญาต', - howToGet: 'วิธีรับ', - openInStudio: 'เปิดในสตูดิโอ', - toolNameUsageTip: 'ชื่อการเรียกเครื่องมือสําหรับการใช้เหตุผลและการแจ้งเตือนของตัวแทน', - noTools: 'ไม่พบเครื่องมือ', - copyToolName: 'คัดลอกชื่อ', - mcp: { - create: { - cardTitle: 'เพิ่มเซิร์ฟเวอร์ MCP (HTTP)', - cardLink: 'เรียนรู้เพิ่มเติมเกี่ยวกับการรวมเซิร์ฟเวอร์ MCP', - }, - noConfigured: 'เซิร์ฟเวอร์ที่ยังไม่ได้กำหนดค่า', - updateTime: 'อัปเดตแล้ว', - toolsCount: '{count} เครื่องมือ', - noTools: 'ไม่มีเครื่องมือที่ใช้ได้', - modal: { - title: 'เพิ่มเซิร์ฟเวอร์ MCP (HTTP)', - editTitle: 'แก้ไขเซิร์ฟเวอร์ MCP (HTTP)', - name: 'ชื่อ & ไอคอน', - namePlaceholder: 'ตั้งชื่อเซิร์ฟเวอร์ MCP ของคุณ', - serverUrl: 'URL ของเซิร์ฟเวอร์', - serverUrlPlaceholder: 'URL สำหรับจุดสิ้นสุดของเซิร์ฟเวอร์', - serverUrlWarning: 'การอัปเดตที่อยู่เซิร์ฟเวอร์อาจทำให้แอปพลิเคชันที่พึ่งพาเซิร์ฟเวอร์นี้หยุดทำงาน', - serverIdentifier: 'ตัวระบุเซิร์ฟเวอร์', - serverIdentifierTip: 'ตัวระบุที่ไม่ซ้ำกันสำหรับเซิร์ฟเวอร์ MCP ภายในพื้นที่ทำงาน ตัวอักษรเล็ก ตัวเลข ขีดล่าง และขีดกลางเท่านั้น ความยาวไม่เกิน 24 ตัวอักษร', - serverIdentifierPlaceholder: 'ตัวระบุที่ไม่ซ้ำกัน เช่น my-mcp-server', - serverIdentifierWarning: 'เซิร์ฟเวอร์จะไม่ถูกต้องในแอปพลิเคชันที่มีอยู่หลังจากการเปลี่ยน ID', - cancel: 'ยกเลิก', - save: 'บันทึก', - confirm: 'เพิ่มและอนุญาต', - timeout: 'หมดเวลา', - sseReadTimeout: 'หมดเวลาการอ่าน SSE', - timeoutPlaceholder: 'สามสิบ', - headerValue: 'ค่าหัวข้อ', - addHeader: 'เพิ่มหัวเรื่อง', - headerKey: 'ชื่อหัวเรื่อง', - headerKeyPlaceholder: 'เช่น การอนุญาต', - headerValuePlaceholder: 'ตัวอย่าง: รหัสตัวแทน token123', - headers: 'หัวเรื่อง', - noHeaders: 'ไม่มีการกำหนดหัวข้อที่กำหนดเอง', - headersTip: 'HTTP header เพิ่มเติมที่จะส่งไปกับคำขอ MCP server', - maskedHeadersTip: 'ค่าหัวถูกปกปิดเพื่อความปลอดภัย การเปลี่ยนแปลงจะปรับปรุงค่าที่แท้จริง', - clientSecret: 'รหัสลับของลูกค้า', - configurations: 'การตั้งค่า', - authentication: 'การตรวจสอบตัวตน', - clientSecretPlaceholder: 'รหัสลับของลูกค้า', - useDynamicClientRegistration: 'ใช้การลงทะเบียนลูกค้าแบบไดนามิก', - clientID: 'รหัสลูกค้า', - redirectUrlWarning: 'กรุณากำหนด URL การเปลี่ยนเส้นทาง OAuth ของคุณเป็น:', - }, - delete: 'ลบเซิร์ฟเวอร์ MCP', - deleteConfirmTitle: 'คุณต้องการลบ {mcp} หรือไม่?', - operation: { - edit: 'แก้ไข', - remove: 'ลบ', - }, - authorize: 'อนุญาต', - authorizing: 'กำลังอนุญาต...', - authorizingRequired: 'ต้องมีการอนุญาต', - authorizeTip: 'หลังจากอนุญาต เครื่องมือจะถูกแสดงที่นี่', - update: 'อัปเดต', - updating: 'กำลังอัปเดต', - gettingTools: 'กำลังโหลดเครื่องมือ...', - updateTools: 'กำลังอัปเดตเครื่องมือ...', - toolsEmpty: 'ยังไม่โหลดเครื่องมือ', - getTools: 'รับเครื่องมือ', - toolUpdateConfirmTitle: 'อัปเดตรายการเครื่องมือ', - toolUpdateConfirmContent: 'การอัปเดตรายการเครื่องมืออาจส่งผลต่อแอปพลิเคชันที่มีอยู่ คุณต้องการดำเนินการต่อหรือไม่?', - toolsNum: '{count} เครื่องมือที่รวมอยู่', - onlyTool: 'รวม 1 เครื่องมือ', - identifier: 'ตัวระบุเซิร์ฟเวอร์ (คลิกเพื่อคัดลอก)', - server: { - title: 'เซิร์ฟเวอร์ MCP', - url: 'URL ของเซิร์ฟเวอร์', - reGen: 'คุณต้องการสร้าง URL ของเซิร์ฟเวอร์ใหม่หรือไม่?', - addDescription: 'เพิ่มคำอธิบาย', - edit: 'แก้ไขคำอธิบาย', - modal: { - addTitle: 'เพิ่มคำอธิบายเพื่อเปิดใช้งานเซิร์ฟเวอร์ MCP', - editTitle: 'แก้ไขคำอธิบาย', - description: 'คำอธิบาย', - descriptionPlaceholder: 'อธิบายว่าเครื่องมือนี้ทำอะไรและควรใช้กับ LLM อย่างไร', - parameters: 'พารามิเตอร์', - parametersTip: 'เพิ่มคำอธิบายสำหรับแต่ละพารามิเตอร์เพื่อช่วยให้ LLM เข้าใจวัตถุประสงค์และข้อจำกัดของมัน', - parametersPlaceholder: 'วัตถุประสงค์และข้อจำกัดของพารามิเตอร์', - confirm: 'เปิดใช้งานเซิร์ฟเวอร์ MCP', - }, - publishTip: 'แอปไม่ถูกเผยแพร่ กรุณาเผยแพร่แอปก่อน', - }, - toolItem: { - noDescription: 'ไม่มีคำอธิบาย', - parameters: 'พารามิเตอร์', - }, - }, - allTools: 'เครื่องมือทั้งหมด', -} - -export default translation diff --git a/web/i18n/th-TH/workflow.json b/web/i18n/th-TH/workflow.json new file mode 100644 index 0000000000..5fdb359534 --- /dev/null +++ b/web/i18n/th-TH/workflow.json @@ -0,0 +1,1294 @@ +{ + "common": { + "undo": "แก้", + "redo": "พร้อม", + "editing": "แก้ไข", + "autoSaved": "บันทึกอัตโนมัติ", + "unpublished": "ไม่ได้เผยแพร่", + "published": "เผย แพร่", + "publish": "ตีพิมพ์", + "update": "อัพเดต", + "run": "ทดสอบการทำงาน", + "running": "กำลัง เรียก ใช้", + "inRunMode": "ในโหมดเรียกใช้", + "inPreview": "ในการแสดงตัวอย่าง", + "inPreviewMode": "ในโหมดแสดงตัวอย่าง", + "preview": "ดูตัวอย่าง", + "viewRunHistory": "ดูประวัติการวิ่ง", + "runHistory": "ประวัติการวิ่ง", + "goBackToEdit": "กลับไปที่ตัวแก้ไข", + "conversationLog": "บันทึกการสนทนา", + "ImageUploadLegacyTip": "ตอนนี้คุณสามารถสร้างตัวแปรชนิดไฟล์ในฟอร์มเริ่มต้นได้แล้ว เราจะไม่รองรับฟีเจอร์การอัปโหลดรูปภาพอีกต่อไปในอนาคต", + "fileUploadTip": "ฟีเจอร์การอัปโหลดรูปภาพได้รับการอัปเกรดเป็นการอัปโหลดไฟล์", + "debugAndPreview": "ดูตัวอย่าง", + "restart": "เริ่มใหม่", + "currentDraft": "ร่างปัจจุบัน", + "currentDraftUnpublished": "ร่างปัจจุบันที่ไม่ได้เผยแพร่", + "latestPublished": "เผยแพร่ล่าสุด", + "publishedAt": "เผย แพร่", + "restore": "ซ่อมแซม", + "runApp": "เรียกใช้แอพ", + "batchRunApp": "แอป Batch Run", + "accessAPIReference": "การอ้างอิง API การเข้าถึง", + "embedIntoSite": "ฝังลงในไซต์", + "addTitle": "เพิ่มชื่อเรื่อง...", + "addDescription": "เพิ่มคําอธิบาย...", + "noVar": "ไม่มีตัวแปร", + "searchVar": "ตัวแปรการค้นหา", + "variableNamePlaceholder": "ชื่อตัวแปร", + "setVarValuePlaceholder": "ตั้งค่าตัวแปร", + "needConnectTip": "ขั้นตอนนี้ไม่ได้เชื่อมต่อกับสิ่งใด", + "maxTreeDepth": "ขีดจํากัดสูงสุดของ {{depth}} โหนดต่อสาขา", + "workflowProcess": "กระบวนการเวิร์กโฟลว์", + "notRunning": "ยังไม่ได้ทํางาน", + "previewPlaceholder": "ป้อนเนื้อหาในช่องด้านล่างเพื่อเริ่มแก้ไขข้อบกพร่องของแชทบอท", + "effectVarConfirm": { + "title": "ลบตัวแปร", + "content": "ตัวแปรนี้ใช้ในโหนดอื่น คุณยังต้องการลบออกหรือไม่?" + }, + "insertVarTip": "กดปุ่ม '/' เพื่อแทรกอย่างรวดเร็ว", + "processData": "ประมวลผลข้อมูล", + "input": "อินพุต", + "output": "ผลิตภัณฑ์", + "jinjaEditorPlaceholder": "พิมพ์ '/' หรือ '{' เพื่อแทรกตัวแปร", + "viewOnly": "ดูเท่านั้น", + "showRunHistory": "แสดงประวัติการวิ่ง", + "enableJinja": "เปิดใช้งานการสนับสนุนเทมเพลต Jinja", + "learnMore": "ศึกษาเพิ่มเติม", + "copy": "ลอก", + "duplicate": "สำเนา", + "pasteHere": "วางที่นี่", + "pointerMode": "โหมดตัวชี้", + "handMode": "โหมดมือ", + "model": "แบบ", + "workflowAsTool": "เวิร์กโฟลว์เป็นเครื่องมือ", + "configureRequired": "กําหนดค่าที่จําเป็น", + "configure": "กําหนดค่า", + "manageInTools": "จัดการในเครื่องมือ", + "workflowAsToolTip": "จําเป็นต้องมีการกําหนดค่าเครื่องมือใหม่หลังจากการอัปเดตเวิร์กโฟลว์", + "viewDetailInTracingPanel": "ดูรายละเอียด", + "syncingData": "ซิงค์ข้อมูลเพียงไม่กี่วินาที", + "importDSL": "นําเข้า DSL", + "importDSLTip": "ร่างปัจจุบันจะถูกเขียนทับ\nส่งออกเวิร์กโฟลว์เป็นข้อมูลสํารองก่อนนําเข้า", + "backupCurrentDraft": "สํารองร่างปัจจุบัน", + "chooseDSL": "เลือกไฟล์ DSL", + "overwriteAndImport": "เขียนทับและนําเข้า", + "importFailure": "นําเข้าล้มเหลว", + "importWarning": "ความระมัดระวัง", + "importWarningDetails": "ความแตกต่างของเวอร์ชัน DSL อาจส่งผลต่อคุณสมบัติบางอย่าง", + "importSuccess": "นําเข้าสําเร็จ", + "parallelTip": { + "click": { + "title": "คลิก", + "desc": "เพื่อเพิ่ม" + }, + "drag": { + "title": "ลาก", + "desc": "เพื่อเชื่อมต่อ" + }, + "limit": "ความขนานถูกจํากัดไว้ที่ {{num}} สาขา", + "depthLimit": "ขีดจํากัดเลเยอร์ซ้อนแบบขนานของ {{num}} เลเยอร์" + }, + "disconnect": "ยก เลิก", + "jumpToNode": "ข้ามไปยังโหนดนี้", + "addParallelNode": "เพิ่มโหนดขนาน", + "parallel": "ขนาน", + "branch": "กิ่ง", + "openInExplore": "เปิดใน Explore", + "onFailure": "เมื่อล้มเหลว", + "addFailureBranch": "เพิ่มสาขา Fail", + "loadMore": "โหลดเวิร์กโฟลว์เพิ่มเติม", + "noHistory": "ไม่มีประวัติ", + "versionHistory": "ประวัติรุ่น", + "exportPNG": "ส่งออกเป็น PNG", + "exportJPEG": "ส่งออกเป็น JPEG", + "publishUpdate": "เผยแพร่การอัปเดต", + "exitVersions": "ออกเวอร์ชัน", + "exportImage": "ส่งออกภาพ", + "exportSVG": "ส่งออกเป็น SVG", + "needAnswerNode": "ต้องเพิ่มโหนดคำตอบ", + "addBlock": "เพิ่มโนด", + "needOutputNode": "ต้องเพิ่มโหนดเอาต์พุต", + "tagBound": "จำนวนแอปพลิเคชันที่ใช้แท็กนี้", + "currentWorkflow": "เวิร์กโฟลว์ปัจจุบัน", + "currentView": "ปัจจุบัน View", + "moreActions": "การดําเนินการเพิ่มเติม", + "listening": "การฟัง", + "chooseStartNodeToRun": "เลือกโหนดเริ่มต้นเพื่อรัน", + "runAllTriggers": "เรียกใช้งานตัวทริกเกอร์ทั้งหมด", + "features": "คุณสมบัติ", + "featuresDescription": "ปรับปรุงประสบการณ์ผู้ใช้ของเว็บแอป", + "featuresDocLink": "เรียนรู้เพิ่มเติม", + "needAdd": "ต้องเพิ่มโหนด {{node}}", + "needStartNode": "ต้องเพิ่มโหนดเริ่มต้นอย่างน้อยหนึ่งโหนด", + "workflowAsToolDisabledHint": "เผยแพร่เวิร์กโฟลว์ล่าสุดและตรวจสอบให้แน่ใจว่ามีโหนดป้อนข้อมูลผู้ใช้เชื่อมต่อก่อนที่จะกำหนดค่าเป็นเครื่องมือ" + }, + "env": { + "envPanelTitle": "ตัวแปรสภาพแวดล้อม", + "envDescription": "ตัวแปรสภาพแวดล้อมสามารถใช้เพื่อจัดเก็บข้อมูลส่วนตัวและข้อมูลประจําตัวได้ เป็นแบบอ่านอย่างเดียวและสามารถแยกออกจากไฟล์ DSL ระหว่างการส่งออก", + "envPanelButton": "เพิ่มตัวแปร", + "modal": { + "title": "เพิ่มตัวแปรสภาพแวดล้อม", + "editTitle": "แก้ไขตัวแปรสภาพแวดล้อม", + "type": "ประเภท", + "name": "ชื่อ", + "namePlaceholder": "ชื่อ env", + "value": "ค่า", + "valuePlaceholder": "ค่า env", + "secretTip": "ใช้เพื่อกําหนดข้อมูลหรือข้อมูลที่ละเอียดอ่อน โดยมีการตั้งค่า DSL ที่กําหนดค่าไว้เพื่อป้องกันการรั่วไหล", + "description": "คำอธิบาย", + "descriptionPlaceholder": "อธิบายตัวแปร" + }, + "export": { + "title": "ส่งออกตัวแปรสภาพแวดล้อม Secret หรือไม่", + "checkbox": "ส่งออกค่าข้อมูลลับ", + "ignore": "ส่งออก DSL", + "export": "ส่งออก DSL ด้วยค่าลับ" + } + }, + "globalVar": { + "title": "ตัวแปรระบบ", + "description": "ตัวแปรระบบเป็นตัวแปรแบบโกลบอลที่โหนดใด ๆ สามารถอ้างอิงได้โดยไม่ต้องเดินสายเมื่อชนิดข้อมูลถูกต้อง เช่น รหัสผู้ใช้ปลายทางและรหัสเวิร์กโฟลว์", + "fieldsDescription": { + "conversationId": "รหัสการสนทนา", + "dialogCount": "จำนวนการสนทนา", + "userId": "รหัสผู้ใช้", + "triggerTimestamp": "ตราประทับเวลาที่แอปเริ่มทำงาน", + "appId": "รหัสแอปพลิเคชัน", + "workflowId": "รหัสเวิร์กโฟลว์", + "workflowRunId": "รหัสการรันเวิร์กโฟลว์" + } + }, + "chatVariable": { + "panelTitle": "ตัวแปรการสนทนา", + "panelDescription": "ตัวแปรการสนทนาใช้เพื่อจัดเก็บข้อมูลแบบโต้ตอบที่ LLM จําเป็นต้องจดจํา รวมถึงประวัติการสนทนา ไฟล์ที่อัปโหลด การตั้งค่าของผู้ใช้ พวกเขาอ่าน-เขียน", + "docLink": "เยี่ยมชมเอกสารของเราเพื่อเรียนรู้เพิ่มเติม", + "button": "เพิ่มตัวแปร", + "modal": { + "title": "เพิ่มตัวแปรการสนทนา", + "editTitle": "แก้ไขตัวแปรการสนทนา", + "name": "ชื่อ", + "namePlaceholder": "ชื่อตัวแปร", + "type": "ประเภท", + "value": "ค่าเริ่มต้น", + "valuePlaceholder": "ค่าเริ่มต้น เว้นว่างไว้เพื่อไม่ให้ตั้งค่า", + "description": "คำอธิบาย", + "descriptionPlaceholder": "อธิบายตัวแปร", + "editInJSON": "แก้ไขใน JSON", + "oneByOne": "เพิ่มทีละรายการ", + "editInForm": "แก้ไขในแบบฟอร์ม", + "arrayValue": "ค่า", + "addArrayValue": "เพิ่มมูลค่า", + "objectKey": "กุญแจ", + "objectType": "ประเภท", + "objectValue": "ค่าเริ่มต้น" + }, + "storedContent": "เนื้อหาที่เก็บไว้", + "updatedAt": "อัพเดทเมื่อ" + }, + "changeHistory": { + "title": "ประวัติการเปลี่ยนแปลง", + "placeholder": "คุณยังไม่ได้เปลี่ยนแปลงอะไรเลย", + "clearHistory": "ล้างประวัติ", + "hint": "คนอินเดีย", + "hintText": "การดําเนินการแก้ไขของคุณจะถูกติดตามในประวัติการเปลี่ยนแปลง ซึ่งจะถูกจัดเก็บไว้ในอุปกรณ์ของคุณตลอดระยะเวลาของเซสชันนี้ ประวัตินี้จะถูกล้างเมื่อคุณออกจากตัวแก้ไข", + "stepBackward_one": "{{count}} ถอยหลัง", + "stepBackward_other": "{{count}} ถอยหลัง", + "stepForward_one": "{{count}} ก้าวไปข้างหน้า", + "stepForward_other": "{{count}} ก้าวไปข้างหน้า", + "sessionStart": "เริ่มเซสชัน", + "currentState": "สถานะปัจจุบัน", + "noteAdd": "เพิ่มหมายเหตุ", + "noteChange": "เปลี่ยนหมายเหตุ", + "noteDelete": "ลบโน้ต", + "nodeDelete": "โหนดถูกลบแล้ว", + "nodeDescriptionChange": "คำอธิบายของโหนดถูกเปลี่ยน", + "nodeDragStop": "โหนดถูกย้าย", + "edgeDelete": "เชื่อมต่อ Node ขาดหาย", + "nodeTitleChange": "ชื่อโหนดเปลี่ยน", + "nodeAdd": "เพิ่มโนด", + "nodeChange": "โหนดเปลี่ยนแปลง", + "nodeResize": "ขนาดของโหนดถูกปรับขนาด", + "nodeConnect": "เชื่อมต่อ Node", + "nodePaste": "โนดที่วางไว้" + }, + "errorMsg": { + "fieldRequired": "{{field}} เป็นสิ่งจําเป็น", + "rerankModelRequired": "ก่อนเปิด Rerank Model โปรดยืนยันว่าได้กําหนดค่าโมเดลสําเร็จในการตั้งค่า", + "authRequired": "ต้องได้รับอนุญาต", + "invalidJson": "{{field}} เป็น JSON ไม่ถูกต้อง", + "fields": { + "variable": "ชื่อตัวแปร", + "variableValue": "ค่าตัวแปร", + "code": "รหัส", + "model": "แบบ", + "rerankModel": "จัดอันดับโมเดลใหม่", + "visionVariable": "ตัวแปรวิสัยทัศน์" + }, + "invalidVariable": "ตัวแปรไม่ถูกต้อง", + "noValidTool": "{{field}} ไม่ได้เลือกเครื่องมือที่ถูกต้อง", + "toolParameterRequired": "{{field}}: พารามิเตอร์ [{{param}}] เป็นสิ่งจําเป็น", + "startNodeRequired": "โปรดเพิ่มโหนดเริ่มต้นก่อน {{operation}}" + }, + "singleRun": { + "testRun": "ทดสอบการทํางาน", + "startRun": "เริ่มวิ่ง", + "running": "กำลัง เรียก ใช้", + "testRunIteration": "การทดสอบการทําซ้ํา", + "back": "ย้อนกลับ", + "iteration": "เกิด ซ้ำ", + "loop": "ลูป", + "reRun": "เรียกใช้ซ้ํา", + "preparingDataSource": "การเตรียมแหล่งข้อมูล" + }, + "tabs": { + "searchTool": "เครื่องมือค้นหา", + "tools": "เครื่อง มือ", + "allTool": "ทั้งหมด", + "customTool": "ธรรมเนียม", + "workflowTool": "เวิร์กโฟลว์", + "question-understand": "คําถาม: เข้าใจ", + "logic": "ตรรกวิทยา", + "transform": "แปลง", + "utilities": "สาธารณูปโภค", + "noResult": "ไม่พบการจับคู่", + "agent": "กลยุทธ์ตัวแทน", + "plugin": "ปลั๊กอิน", + "searchBlock": "ค้นหาโหนด", + "blocks": "โหนด", + "allAdded": "ทั้งหมดที่เพิ่มเข้ามา", + "addAll": "เพิ่มทั้งหมด", + "searchDataSource": "ค้นหาแหล่งข้อมูล", + "sources": "แหล่ง", + "start": "เริ่ม", + "searchTrigger": "ค้นหาทริกเกอร์...", + "allTriggers": "ทริกเกอร์ทั้งหมด", + "noPluginsFound": "ไม่พบปลั๊กอิน", + "requestToCommunity": "คำขอถึงชุมชน", + "featuredTools": "เด่น", + "showMoreFeatured": "แสดงเพิ่มเติม", + "showLessFeatured": "แสดงน้อยลง", + "installed": "ติดตั้งแล้ว", + "pluginByAuthor": "โดย {{author}}", + "usePlugin": "เลือกเครื่องมือ", + "hideActions": "ซ่อนเครื่องมือ", + "noFeaturedPlugins": "ค้นพบเครื่องมือเพิ่มเติมใน Marketplace", + "noFeaturedTriggers": "ค้นพบทริกเกอร์เพิ่มเติมใน Marketplace", + "startDisabledTip": "โหนดทริกเกอร์และโหนดป้อนข้อมูลของผู้ใช้ไม่สามารถใช้ร่วมกันได้" + }, + "blocks": { + "start": "เริ่ม", + "end": "เอาต์พุต", + "answer": "ตอบ", + "llm": "นิติศาสตราจารย์", + "knowledge-retrieval": "การดึงความรู้", + "question-classifier": "ตัวจําแนกคําถาม", + "if-else": "ถ้า/อื่น", + "code": "รหัส", + "template-transform": "แม่ แบบ", + "http-request": "คําขอ HTTP", + "variable-assigner": "ตัวรวบรวมตัวแปร", + "variable-aggregator": "ตัวรวบรวมตัวแปร", + "assigner": "ตัวกําหนดตัวแปร", + "iteration-start": "เริ่มการทําซ้ํา", + "iteration": "เกิด ซ้ำ", + "parameter-extractor": "ตัวแยกพารามิเตอร์", + "document-extractor": "ตัวแยกเอกสาร", + "list-operator": "ตัวดําเนินการรายการ", + "agent": "ตัวแทน", + "loop": "ลูป", + "loop-start": "เริ่มลูป", + "loop-end": "ออกจากลูป", + "knowledge-index": "ฐานความรู้", + "datasource": "แหล่งข้อมูล", + "originalStartNode": "โหนดเริ่มต้นเดิม", + "trigger-schedule": "ทริกเกอร์ตามตาราง", + "trigger-webhook": "ทริกเกอร์เว็บฮุค", + "trigger-plugin": "ทริกเกอร์ปลั๊กอิน" + }, + "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": "รวมตัวแปรหลายสาขาเป็นตัวแปรเดียวสําหรับการกําหนดค่าแบบรวมของโหนดดาวน์สตรีม", + "assigner": "โหนดการกําหนดตัวแปรใช้สําหรับกําหนดค่าให้กับตัวแปรที่เขียนได้ (เช่นตัวแปรการสนทนา)", + "variable-aggregator": "รวมตัวแปรหลายสาขาเป็นตัวแปรเดียวสําหรับการกําหนดค่าแบบรวมของโหนดดาวน์สตรีม", + "iteration": "ดําเนินการหลายขั้นตอนกับวัตถุรายการจนกว่าจะส่งออกผลลัพธ์ทั้งหมด", + "parameter-extractor": "ใช้ LLM เพื่อแยกพารามิเตอร์ที่มีโครงสร้างจากภาษาธรรมชาติสําหรับการเรียกใช้เครื่องมือหรือคําขอ HTTP", + "document-extractor": "ใช้เพื่อแยกวิเคราะห์เอกสารที่อัปโหลดเป็นเนื้อหาข้อความที่ LLM เข้าใจได้ง่าย", + "list-operator": "ใช้เพื่อกรองหรือจัดเรียงเนื้อหาอาร์เรย์", + "agent": "การเรียกใช้โมเดลภาษาขนาดใหญ่เพื่อตอบคําถามหรือประมวลผลภาษาธรรมชาติ", + "loop": "ดำเนินการลูปของตรรกะจนกว่าจะถึงเงื่อนไขการสิ้นสุดหรือตรงตามจำนวนลูปสูงสุดที่กำหนด.", + "loop-end": "เทียบเท่ากับ \"break\" โหนดนี้ไม่มีรายการการกำหนดค่า เมื่อร่างกายของลูปถึงโหนดนี้ ลูปจะสิ้นสุดลง.", + "knowledge-index": "ฐานความรู้เกี่ยวกับ", + "datasource": "แหล่งข้อมูลเกี่ยวกับ", + "trigger-schedule": "ตัวทริกเกอร์เวิร์กโฟลว์ตามเวลา ซึ่งเริ่มเวิร์กโฟลว์ตามกำหนดการ", + "trigger-webhook": "Webhook Trigger รับการส่งข้อมูลแบบ HTTP จากระบบของบุคคลที่สามเพื่อเรียกใช้งานเวิร์กโฟลว์โดยอัตโนมัติ", + "trigger-plugin": "ทริกเกอร์การรวมจากบุคคลที่สามที่เริ่มการทำงานอัตโนมัติจากเหตุการณ์ของแพลตฟอร์มภายนอก" + }, + "operator": { + "zoomIn": "ซูมเข้า", + "zoomOut": "ซูมออก", + "zoomTo50": "ซูมไปที่ 50%", + "zoomTo100": "ซูมไปที่ 100%", + "zoomToFit": "ซูมให้พอดี", + "alignBottom": "ด้านล่าง", + "alignCenter": "ศูนย์กลาง", + "alignMiddle": "กลาง", + "horizontal": "แนวนอน", + "vertical": "แนวตั้ง", + "alignTop": "ด้านบน", + "distributeVertical": "ระยะห่างแนวตั้ง", + "alignLeft": "ซ้าย", + "selectionAlignment": "การจัดตําแหน่งการเลือก", + "distributeHorizontal": "ระยะห่างแนวนอน", + "alignRight": "ขวา", + "alignNodes": "จัดตําแหน่งโหนด" + }, + "panel": { + "userInputField": "ฟิลด์ป้อนข้อมูลของผู้ใช้", + "helpLink": "วิธีใช้", + "about": "ประมาณ", + "createdBy": "สร้างโดย", + "nextStep": "ขั้นตอนถัดไป", + "runThisStep": "เรียกใช้ขั้นตอนนี้", + "checklist": "ตรวจ สอบ", + "checklistTip": "ตรวจสอบให้แน่ใจว่าปัญหาทั้งหมดได้รับการแก้ไขแล้วก่อนที่จะเผยแพร่", + "checklistResolved": "ปัญหาทั้งหมดได้รับการแก้ไขแล้ว", + "change": "เปลี่ยน", + "optional": "(ไม่บังคับ)", + "organizeBlocks": "จัดระเบียบโหนด", + "addNextStep": "เพิ่มขั้นตอนถัดไปในกระบวนการทำงานนี้", + "changeBlock": "เปลี่ยนโหนด", + "selectNextStep": "เลือกขั้นตอนถัดไป", + "minimize": "ออกจากโหมดเต็มหน้าจอ", + "maximize": "เพิ่มประสิทธิภาพผ้าใบ", + "scrollToSelectedNode": "เลื่อนไปยังโหนดที่เลือก", + "optional_and_hidden": "(ตัวเลือก & ซ่อน)", + "goTo": "ไปที่", + "startNode": "เริ่มต้นโหนด", + "openWorkflow": "เปิดเวิร์กโฟลว์" + }, + "nodes": { + "common": { + "outputVars": "ตัวแปรเอาต์พุต", + "insertVarTip": "แทรกตัวแปร", + "memory": { + "memory": "ความจำ", + "memoryTip": "การตั้งค่าหน่วยความจําแชท", + "windowSize": "ขนาดหน้าต่าง", + "conversationRoleName": "ชื่อบทบาทการสนทนา", + "user": "คํานําหน้าผู้ใช้", + "assistant": "คํานําหน้าผู้ช่วย" + }, + "memories": { + "title": "ความ ทรง จำ", + "tip": "ความทรงจําการแชท", + "builtIn": "ในตัว" + }, + "errorHandle": { + "none": { + "title": "ไม่มีใคร", + "desc": "โหนดจะหยุดทํางานหากเกิดข้อยกเว้นและไม่ได้รับการจัดการ" + }, + "defaultValue": { + "title": "ค่าเริ่มต้น", + "desc": "เมื่อเกิดข้อผิดพลาด ให้ระบุเนื้อหาเอาต์พุตแบบคงที่", + "tip": "เมื่อเกิดข้อผิดพลาด จะส่งคืนค่าต่ํากว่า", + "inLog": "ข้อยกเว้นโหนดส่งออกตามค่าเริ่มต้น", + "output": "ค่าเริ่มต้นเอาต์พุต" + }, + "failBranch": { + "title": "สาขาล้มเหลว", + "desc": "เมื่อเกิดข้อผิดพลาด จะดําเนินการสาขาข้อยกเว้น", + "customize": "ไปที่พื้นที่ทํางานเพื่อปรับแต่งตรรกะสาขาที่ล้มเหลว", + "customizeTip": "เมื่อเปิดใช้งานสาขาล้มเหลว ข้อยกเว้นที่โหนดโยนจะไม่ยุติกระบวนการ แต่จะเรียกใช้สาขาล้มเหลวที่กําหนดไว้ล่วงหน้าโดยอัตโนมัติ ช่วยให้คุณระบุข้อความแสดงข้อผิดพลาด รายงาน การแก้ไข หรือข้ามการดําเนินการได้อย่างยืดหยุ่น", + "inLog": "ข้อยกเว้นโหนดจะดําเนินการสาขาที่ล้มเหลวโดยอัตโนมัติ เอาต์พุตโหนดจะส่งคืนประเภทข้อผิดพลาดและข้อความแสดงข้อผิดพลาดและส่งต่อไปยังดาวน์สตรีม" + }, + "partialSucceeded": { + "tip": "มีโหนด {{num}} ในกระบวนการที่ทํางานผิดปกติ โปรดไปที่การติดตามเพื่อตรวจสอบบันทึก" + }, + "title": "การจัดการข้อผิดพลาด", + "tip": "กลยุทธ์การจัดการข้อยกเว้น ทริกเกอร์เมื่อโหนดพบข้อยกเว้น" + }, + "retry": { + "retry": "ลอง", + "retryOnFailure": "ลองใหม่เมื่อล้มเหลว", + "maxRetries": "การลองซ้ําสูงสุด", + "retryInterval": "ช่วงเวลาลองใหม่", + "retryTimes": "ลอง {{times}} ครั้งเมื่อล้มเหลว", + "retrying": "กําลังลองซ้ํา...", + "retrySuccessful": "ลองใหม่สําเร็จ", + "retryFailed": "ลองใหม่ล้มเหลว", + "retryFailedTimes": "{{times}} การลองซ้ําล้มเหลว", + "times": "ครั้ง", + "retries": "{{num}} ลอง", + "ms": "นางสาว" + }, + "typeSwitch": { + "input": "ค่าป้อนข้อมูล", + "variable": "ใช้ตัวแปร" + }, + "inputVars": "ตัวแปรอินพุต", + "pluginNotInstalled": "ปลั๊กอินไม่ได้ติดตั้ง" + }, + "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", + "prompt": "พร้อมท์", + "roleDescription": { + "system": "ให้คําแนะนําระดับสูงสําหรับการสนทนา", + "user": "ให้คําแนะนํา แบบสอบถาม หรือการป้อนข้อมูลตามข้อความใดๆ ไปยังแบบจําลอง", + "assistant": "การตอบสนองของโมเดลตามข้อความของผู้ใช้" + }, + "addMessage": "เพิ่มข้อความ", + "vision": "การมองเห็น", + "files": "แฟ้ม", + "resolution": { + "name": "มติ", + "high": "สูง", + "low": "ต่ํา" + }, + "outputVars": { + "output": "สร้างเนื้อหา", + "reasoning_content": "เนื้อหาการให้เหตุผล", + "usage": "ข้อมูลการใช้งานรุ่น" + }, + "singleRun": { + "variable": "ตัวแปร" + }, + "sysQueryInUser": "sys.query ในข้อความผู้ใช้เป็นสิ่งจําเป็น", + "jsonSchema": { + "warningTips": { + "saveSchema": "กรุณาแก้ไขฟิลด์ปัจจุบันให้เสร็จก่อนที่จะบันทึกสคีมา" + }, + "apply": "สมัคร", + "resetDefaults": "รีเซ็ต", + "generate": "สร้าง", + "import": "นำเข้าจาก JSON", + "descriptionPlaceholder": "เพิ่มคำอธิบาย", + "instruction": "คำแนะนำ", + "generating": "กำลังสร้าง JSON Schema...", + "resultTip": "นี่คือผลลัพธ์ที่สร้างขึ้น หากคุณไม่พอใจ คุณสามารถกลับไปและแก้ไขคำสั่งของคุณได้", + "regenerate": "สร้างใหม่", + "title": "รูปแบบข้อมูลที่จัดระเบียบ", + "promptPlaceholder": "โปรดอธิบาย JSON Schema ของคุณ...", + "generatedResult": "ผลลัพธ์ที่สร้างขึ้น", + "generateJsonSchema": "สร้าง JSON Schema", + "promptTooltip": "แปลงคำอธิบายข้อความเป็นโครงสร้าง JSON Schema มาตรฐาน.", + "showAdvancedOptions": "แสดงตัวเลือกขั้นสูง", + "addField": "เพิ่มฟิลด์", + "back": "กลับ", + "fieldNamePlaceholder": "ชื่อฟิลด์", + "generationTip": "คุณสามารถใช้ภาษาธรรมชาติในการสร้าง JSON Schema ได้อย่างรวดเร็ว.", + "doc": "เรียนรู้เพิ่มเติมเกี่ยวกับผลลัพธ์ที่มีโครงสร้าง", + "addChildField": "เพิ่มฟิลด์เด็ก", + "stringValidations": "การตรวจสอบสตริง", + "required": "จำเป็นต้องใช้" + }, + "reasoningFormat": { + "tagged": "รักษาความคิดเกี่ยวกับแท็ก", + "separated": "แยกแท็กความคิดเห็น", + "tooltip": "ดึงเนื้อหาจากแท็กคิดและเก็บไว้ในฟิลด์ reasoning_content.", + "title": "เปิดใช้งานการแยกแท็กการเหตุผล" + } + }, + "knowledgeRetrieval": { + "queryVariable": "ตัวแปรแบบสอบถาม", + "knowledge": "ความรู้", + "outputVars": { + "output": "การดึงข้อมูลที่แบ่งส่วน", + "content": "เนื้อหาที่แบ่งกลุ่ม", + "title": "ชื่อแบ่งส่วน", + "icon": "ไอคอนแบ่งส่วน", + "url": "URL ที่แบ่งกลุ่ม", + "metadata": "ข้อมูลเมตาอื่นๆ", + "files": "ไฟล์ที่ดึงมา" + }, + "metadata": { + "options": { + "disabled": { + "title": "คนพิการ", + "subTitle": "ไม่ได้เปิดใช้งานการกรองข้อมูลเมตา" + }, + "automatic": { + "desc": "สร้างเงื่อนไขการกรองข้อมูลเมตาโดยอัตโนมัติตามตัวแปรค้นหา", + "title": "อัตโนมัติ", + "subTitle": "สร้างเงื่อนไขการกรองข้อมูลเมตาโดยอัตโนมัติตามการค้นหาของผู้ใช้" + }, + "manual": { + "subTitle": "เพิ่มเงื่อนไขการกรองข้อมูลเมตาด้วยตนเอง", + "title": "คู่มือ" + } + }, + "panel": { + "conditions": "เงื่อนไข", + "search": "ค้นหาข้อมูลเมตา", + "add": "เพิ่มเงื่อนไข", + "datePlaceholder": "เลือกเวลา...", + "title": "เงื่อนไขการกรองข้อมูลเมตา", + "select": "เลือกตัวแปร...", + "placeholder": "ใส่ค่า" + }, + "title": "การกรองข้อมูลเมตา", + "tip": "การกรองข้อมูลเมตาดาต้าเป็นกระบวนการที่ใช้คุณลักษณะของเมตาดาต้า (เช่น แท็ก หมวดหมู่ หรือสิทธิการเข้าถึง) เพื่อปรับแต่งและควบคุมการดึงข้อมูลที่เกี่ยวข้องภายในระบบ." + }, + "queryText": "ข้อความค้นหา", + "queryAttachment": "ค้นหารูปภาพ" + }, + "http": { + "inputVars": "ตัวแปรอินพุต", + "api": "เอพีไอ", + "apiPlaceholder": "ป้อน URL พิมพ์ '/' แทรกตัวแปร", + "extractListPlaceholder": "ป้อนดัชนีรายการพิมพ์ '/' แทรกตัวแปร", + "notStartWithHttp": "API ควรขึ้นต้นด้วย http:// หรือ https://", + "key": "กุญแจ", + "type": "ประเภท", + "value": "ค่า", + "bulkEdit": "แก้ไขจํานวนมาก", + "keyValueEdit": "การแก้ไขคีย์-ค่า", + "headers": "หัว กระดาษ", + "params": "พารามิเตอร์", + "body": "ร่างกาย", + "binaryFileVariable": "ตัวแปรไฟล์ไบนารี", + "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": "ป้อนหมดเวลาการเขียนเป็นวินาที" + }, + "curl": { + "title": "นําเข้าจาก cURL", + "placeholder": "วางสตริง cURL ที่นี่" + }, + "verifySSL": { + "title": "ตรวจสอบใบรับรอง SSL", + "warningTooltip": "การปิดการตรวจสอบ SSL ไม่แนะนำให้ใช้ในสภาพแวดล้อมการผลิต ควรใช้เฉพาะในระหว่างการพัฒนาหรือการทดสอบเท่านั้น เนื่องจากจะทำให้การเชื่อมต่อมีความเสี่ยงต่อภัยคุกคามด้านความปลอดภัย เช่น การโจมตีแบบ Man-in-the-middle." + } + }, + "code": { + "inputVars": "ตัวแปรอินพุต", + "outputVars": "ตัวแปรเอาต์พุต", + "advancedDependencies": "การพึ่งพาขั้นสูง", + "advancedDependenciesTip": "เพิ่มการพึ่งพาที่โหลดไว้ล่วงหน้าซึ่งใช้เวลามากขึ้นในการใช้หรือไม่ใช่ค่าเริ่มต้นในตัวที่นี่", + "searchDependencies": "การพึ่งพาการค้นหา", + "syncFunctionSignature": "ซิงก์ลายเซ็นฟังก์ชันให้ตรงกับโค้ด" + }, + "templateTransform": { + "inputVars": "ตัวแปรอินพุต", + "code": "รหัส", + "codeSupportTip": "รองรับเฉพาะ Jinja2", + "outputVars": { + "output": "เนื้อหาที่แปลงโฉม" + } + }, + "ifElse": { + "if": "ถ้า", + "else": "อื่น", + "elseDescription": "ใช้เพื่อกําหนดตรรกะที่ควรดําเนินการเมื่อไม่ตรงตามเงื่อนไข if", + "and": "และ", + "or": "หรือ", + "operator": "ผู้ปฏิบัติการ", + "notSetVariable": "โปรดตั้งค่าตัวแปรก่อน", + "comparisonOperator": { + "contains": "ประกอบ ด้วย", + "not contains": "ไม่มี", + "start with": "เริ่มต้นด้วย", + "end with": "ลงท้ายด้วย", + "is": "คือ", + "is not": "ไม่ใช่", + "empty": "ว่างเปล่า", + "not empty": "ไม่ว่างเปล่า", + "null": "เป็นโมฆะ", + "not null": "ไม่เป็นโมฆะ", + "in": "ใน", + "not in": "ไม่อยู่ใน", + "all of": "ทั้งหมด", + "exists": "อยู่", + "not exists": "ไม่มีอยู่จริง", + "before": "ก่อน", + "after": "หลังจากนั้น" + }, + "optionName": { + "image": "ภาพ", + "doc": "เอกสาร", + "audio": "เสียง", + "video": "วีดิทัศน์", + "localUpload": "อัปโหลดในเครื่อง", + "url": "URL" + }, + "enterValue": "ป้อนค่า", + "addCondition": "เพิ่มเงื่อนไข", + "conditionNotSetup": "เงื่อนไข NOT ตั้งค่า", + "selectVariable": "เลือกตัวแปร...", + "addSubVariable": "ตัวแปรย่อย", + "select": "เลือก" + }, + "variableAssigner": { + "title": "กําหนดตัวแปร", + "outputType": "ประเภทเอาต์พุต", + "varNotSet": "ไม่ได้ตั้งค่าตัวแปร", + "noVarTip": "เพิ่มตัวแปรที่จะกําหนด", + "type": { + "string": "เชือก", + "number": "เลข", + "object": "วัตถุ", + "array": "อาร์เรย์" + }, + "aggregationGroup": "กลุ่มการรวม", + "aggregationGroupTip": "การเปิดใช้งานคุณลักษณะนี้ช่วยให้ตัวรวบรวมตัวแปรสามารถรวมชุดตัวแปรหลายชุดได้", + "addGroup": "เพิ่มกลุ่ม", + "outputVars": { + "varDescribe": "{{groupName}} เอาต์พุต" + }, + "setAssignVariable": "ตั้งค่าตัวแปรกําหนด" + }, + "assigner": { + "assignedVariable": "ตัวแปรที่กําหนด", + "writeMode": "โหมดเขียน", + "writeModeTip": "โหมดผนวก: ใช้ได้กับตัวแปรอาร์เรย์เท่านั้น", + "over-write": "เขียน ทับ", + "append": "ผนวก", + "plus": "บวก", + "clear": "ใส", + "setVariable": "ตั้งค่าตัวแปร", + "variable": "ตัวแปร", + "operations": { + "set": "ชุด", + "append": "ผนวก", + "-=": "-=", + "*=": "*=", + "overwrite": "เขียน ทับ", + "extend": "ขยาย", + "title": "การผ่าตัด", + "clear": "ใส", + "over-write": "เขียน ทับ", + "+=": "+=", + "/=": "/=", + "remove-last": "ลบสุดท้าย", + "remove-first": "ลบอันดับแรก" + }, + "noAssignedVars": "ไม่มีตัวแปรที่กําหนด", + "selectAssignedVariable": "เลือกตัวแปรที่กําหนด...", + "variables": "ตัว แปร", + "varNotSet": "ตัวแปรไม่ได้ตั้งค่า", + "assignedVarsDescription": "ตัวแปรที่กําหนดต้องเป็นตัวแปรที่เขียนได้ เช่น ตัวแปรการสนทนา", + "noVarTip": "คลิกปุ่ม \"+\" เพื่อเพิ่มตัวแปร", + "setParameter": "ตั้งค่าพารามิเตอร์..." + }, + "tool": { + "inputVars": "ตัวแปรอินพุต", + "outputVars": { + "text": "เนื้อหาที่สร้างขึ้นด้วยเครื่องมือ", + "files": { + "title": "ไฟล์ที่สร้างขึ้นด้วยเครื่องมือ", + "type": "ประเภทการสนับสนุน ตอนนี้รองรับเฉพาะรูปภาพ", + "transfer_method": "วิธีการโอน ค่าเป็น remote_url หรือ local_file", + "url": "URL ของรูปภาพ", + "upload_file_id": "อัปโหลดรหัสไฟล์" + }, + "json": "เครื่องมือสร้าง JSON" + }, + "authorize": "อนุญาต", + "insertPlaceholder2": "แทรกตัวแปร", + "insertPlaceholder1": "พิมพ์หรือลงทะเบียน", + "settings": "การตั้งค่า" + }, + "questionClassifiers": { + "model": "แบบ", + "inputVars": "ตัวแปรอินพุต", + "outputVars": { + "className": "ชื่อคลาส", + "usage": "ข้อมูลการใช้งานรุ่น" + }, + "class": "ประเภท", + "classNamePlaceholder": "เขียนชื่อชั้นเรียนของคุณ", + "advancedSetting": "การตั้งค่าขั้นสูง", + "topicName": "ชื่อหัวข้อ", + "topicPlaceholder": "เขียนชื่อหัวข้อของคุณ", + "addClass": "เพิ่มชั้นเรียน", + "instruction": "การสอน", + "instructionTip": "ป้อนคําแนะนําเพิ่มเติมเพื่อช่วยให้ตัวจําแนกคําถามเข้าใจวิธีจัดหมวดหมู่คําถามได้ดียิ่งขึ้น", + "instructionPlaceholder": "เขียนคําแนะนําของคุณ" + }, + "parameterExtractor": { + "inputVar": "ตัวแปรอินพุต", + "outputVars": { + "isSuccess": "คือ Success เมื่อสําเร็จค่าคือ 1 เมื่อล้มเหลวค่าเป็น 0", + "errorReason": "สาเหตุข้อผิดพลาด", + "usage": "ข้อมูลการใช้งานรุ่น" + }, + "extractParameters": "แยกพารามิเตอร์", + "importFromTool": "นําเข้าจากเครื่องมือ", + "addExtractParameter": "เพิ่มพารามิเตอร์การแยกข้อมูล", + "addExtractParameterContent": { + "name": "ชื่อ", + "namePlaceholder": "แยกชื่อพารามิเตอร์", + "type": "ประเภท", + "typePlaceholder": "แยกประเภทพารามิเตอร์", + "description": "คำอธิบาย", + "descriptionPlaceholder": "แยกคําอธิบายพารามิเตอร์", + "required": "ต้องระบุ", + "requiredContent": "Required ใช้เป็นข้อมูลอ้างอิงสําหรับการอนุมานแบบจําลองเท่านั้น และไม่ใช่สําหรับการตรวจสอบความถูกต้องของเอาต์พุตพารามิเตอร์ที่จําเป็น" + }, + "extractParametersNotSet": "ไม่ได้ตั้งค่าพารามิเตอร์การแยกข้อมูล", + "instruction": "การสอน", + "instructionTip": "ป้อนคําแนะนําเพิ่มเติมเพื่อช่วยให้ตัวแยกพารามิเตอร์เข้าใจวิธีการแยกพารามิเตอร์", + "advancedSetting": "การตั้งค่าขั้นสูง", + "reasoningMode": "โหมดการให้เหตุผล", + "reasoningModeTip": "คุณสามารถเลือกโหมดการให้เหตุผลที่เหมาะสมตามความสามารถของโมเดลในการตอบสนองต่อคําแนะนําสําหรับการเรียกใช้ฟังก์ชันหรือข้อความแจ้ง" + }, + "iteration": { + "deleteTitle": "ลบโหนดการทําซ้ํา?", + "deleteDesc": "การลบโหนดการวนซ้ําจะเป็นการลบโหนดย่อยทั้งหมด", + "input": "อินพุต", + "output": "ตัวแปรเอาต์พุต", + "iteration_one": "{{นับ}} เกิด ซ้ำ", + "iteration_other": "{{นับ}} เกิด ซ้ำ", + "currentIteration": "การทําซ้ําปัจจุบัน", + "comma": ",", + "error_one": "{{นับ}} ความผิดพลาด", + "error_other": "{{นับ}} ข้อ ผิด พลาด", + "parallelMode": "โหมดขนาน", + "parallelModeUpper": "โหมดขนาน", + "parallelModeEnableTitle": "เปิดใช้งานโหมดขนาน", + "parallelModeEnableDesc": "ในโหมดขนาน งานภายในการทําซ้ําจะสนับสนุนการดําเนินการแบบขนาน คุณสามารถกําหนดค่านี้ได้ในแผงคุณสมบัติทางด้านขวา", + "parallelPanelDesc": "ในโหมดขนาน งานในการวนซ้ําจะสนับสนุนการดําเนินการแบบขนาน", + "MaxParallelismTitle": "ความขนานสูงสุด", + "MaxParallelismDesc": "ความขนานสูงสุดใช้เพื่อควบคุมจํานวนงานที่ดําเนินการพร้อมกันในการทําซ้ําครั้งเดียว", + "errorResponseMethod": "วิธีการตอบสนองข้อผิดพลาด", + "ErrorMethod": { + "operationTerminated": "ยก เลิก", + "continueOnError": "ดําเนินการต่อเมื่อเกิดข้อผิดพลาด", + "removeAbnormalOutput": "ลบเอาต์พุตที่ผิดปกติ" + }, + "answerNodeWarningDesc": "คําเตือนโหมดคู่ขนาน: โหนดคําตอบ การกําหนดตัวแปรการสนทนา และการดําเนินการอ่าน/เขียนแบบถาวรภายในการวนซ้ําอาจทําให้เกิดข้อยกเว้น", + "flattenOutput": "แบนผลลัพธ์", + "flattenOutputDesc": "เมื่อเปิดใช้งาน หากผลลัพธ์ของแต่ละรอบเป็นอาร์เรย์ทั้งหมด พวกมันจะถูกรวมเป็นอาร์เรย์เดียว เมื่อปิดใช้งาน ผลลัพธ์จะยังคงมีโครงสร้างอาร์เรย์ซ้อนกันอยู่" + }, + "note": { + "addNote": "เพิ่มหมายเหตุ", + "editor": { + "placeholder": "เขียนบันทึกของคุณ...", + "small": "เล็ก", + "medium": "ปานกลาง", + "large": "ใหญ่", + "bold": "กล้า", + "italic": "ตัวเอียง", + "strikethrough": "ขีดทับ", + "link": "ลิงก์", + "openLink": "เปิด", + "unlink": "ยก เลิก", + "enterUrl": "ป้อน URL...", + "invalidUrl": "URL ไม่ถูกต้อง", + "bulletList": "รายการสัญลักษณ์แสดงหัวข้อย่อย", + "showAuthor": "แสดงผู้เขียน" + } + }, + "docExtractor": { + "inputVar": "ตัวแปรอินพุต", + "outputVars": { + "text": "ข้อความที่แยกออกมา" + }, + "supportFileTypes": "ประเภทไฟล์ที่รองรับ: {{types}}", + "learnMore": "ศึกษาเพิ่มเติม" + }, + "listFilter": { + "inputVar": "ตัวแปรอินพุต", + "filterCondition": "เงื่อนไขการกรอง", + "filterConditionKey": "คีย์เงื่อนไขตัวกรอง", + "extractsCondition": "แยกรายการ N", + "filterConditionComparisonOperator": "ตัวดําเนินการเปรียบเทียบเงื่อนไขตัวกรอง", + "filterConditionComparisonValue": "ค่าเงื่อนไขตัวกรอง", + "selectVariableKeyPlaceholder": "เลือกคีย์ตัวแปรย่อย", + "limit": "ด้านบน N", + "orderBy": "สั่งซื้อโดย", + "asc": "เอเอสซี", + "desc": "สูง สุด", + "outputVars": { + "result": "กรองผลลัพธ์", + "first_record": "บันทึกแรก", + "last_record": "บันทึกล่าสุด" + } + }, + "agent": { + "strategy": { + "label": "กลยุทธ์ตัวแทน", + "tooltip": "กลยุทธ์ Agentic ที่แตกต่างกันกําหนดวิธีที่ระบบวางแผนและดําเนินการเรียกใช้เครื่องมือหลายขั้นตอน", + "configureTipDesc": "หลังจากกําหนดค่ากลยุทธ์ตัวแทนโหนดนี้จะโหลดการกําหนดค่าที่เหลือโดยอัตโนมัติ กลยุทธ์จะส่งผลต่อกลไกการให้เหตุผลของเครื่องมือหลายขั้นตอน", + "configureTip": "โปรดกําหนดค่ากลยุทธ์เอเจนต์", + "searchPlaceholder": "กลยุทธ์ตัวแทนการค้นหา", + "selectTip": "เลือกกลยุทธ์ตัวแทน", + "shortLabel": "ยุทธศาสตร์" + }, + "pluginInstaller": { + "installing": "ติด ตั้ง", + "install": "ติดตั้ง" + }, + "modelNotInMarketplace": { + "desc": "โมเดลนี้ติดตั้งจากที่เก็บในเครื่องหรือ GitHub กรุณาใช้หลังการติดตั้ง", + "title": "ไม่ได้ติดตั้งรุ่น", + "manageInPlugins": "จัดการในปลั๊กอิน" + }, + "modelNotSupport": { + "descForVersionSwitch": "เวอร์ชันปลั๊กอินที่ติดตั้งไม่มีรุ่นนี้ คลิกเพื่อเปลี่ยนเวอร์ชัน", + "title": "รุ่นที่ไม่รองรับ", + "desc": "เวอร์ชันปลั๊กอินที่ติดตั้งไม่มีรุ่นนี้" + }, + "modelSelectorTooltips": { + "deprecated": "โมเดลนี้เลิกใช้แล้ว" + }, + "outputVars": { + "files": { + "transfer_method": "วิธีการโอน ค่าเป็น remote_url หรือ local_file", + "upload_file_id": "อัปโหลดรหัสไฟล์", + "url": "URL ของรูปภาพ", + "title": "ไฟล์ที่สร้างตัวแทน", + "type": "ประเภทการสนับสนุน ตอนนี้รองรับเฉพาะรูปภาพ" + }, + "text": "เนื้อหาที่สร้างตัวแทน", + "usage": "ข้อมูลการใช้งานรุ่น", + "json": "ตัวแทนสร้าง JSON" + }, + "checkList": { + "strategyNotSelected": "ไม่ได้เลือกกลยุทธ์" + }, + "installPlugin": { + "changelog": "บันทึกการเปลี่ยนแปลง", + "install": "ติดตั้ง", + "desc": "เกี่ยวกับการติดตั้งปลั๊กอินต่อไปนี้", + "title": "ติดตั้งปลั๊กอิน", + "cancel": "ยกเลิก" + }, + "toolbox": "เครื่อง มือ", + "maxIterations": "การทําซ้ําสูงสุด", + "strategyNotFoundDescAndSwitchVersion": "เวอร์ชันปลั๊กอินที่ติดตั้งไม่มีกลยุทธ์นี้ คลิกเพื่อเปลี่ยนเวอร์ชัน", + "pluginNotInstalledDesc": "ปลั๊กอินนี้ติดตั้งจาก GitHub โปรดไปที่ปลั๊กอินเพื่อติดตั้งใหม่", + "pluginNotInstalled": "ไม่ได้ติดตั้งปลั๊กอินนี้", + "toolNotInstallTooltip": "{{tool}} ไม่ได้ติดตั้ง", + "modelNotInstallTooltip": "ไม่ได้ติดตั้งรุ่นนี้", + "model": "แบบ", + "strategyNotFoundDesc": "เวอร์ชันปลั๊กอินที่ติดตั้งไม่มีกลยุทธ์นี้", + "toolNotAuthorizedTooltip": "{{เครื่องมือ}} ไม่ได้รับอนุญาต", + "unsupportedStrategy": "กลยุทธ์ที่ไม่รองรับ", + "strategyNotSet": "ไม่ได้ตั้งค่ากลยุทธ์ตัวแทน", + "learnMore": "ศึกษาเพิ่มเติม", + "pluginNotFoundDesc": "ปลั๊กอินนี้ติดตั้งจาก GitHub โปรดไปที่ปลั๊กอินเพื่อติดตั้งใหม่", + "notAuthorized": "ไม่ได้รับอนุญาต", + "configureModel": "กําหนดค่าแบบจําลอง", + "strategyNotInstallTooltip": "{{strategy}} ไม่ได้ติดตั้ง", + "tools": "เครื่อง มือ", + "modelNotSelected": "ไม่ได้เลือกรุ่น", + "linkToPlugin": "ลิงก์ไปยังปลั๊กอิน", + "parameterSchema": "แบบจำลองพารามิเตอร์", + "clickToViewParameterSchema": "คลิกเพื่อดูโครงร่างพารามิเตอร์" + }, + "loop": { + "ErrorMethod": { + "removeAbnormalOutput": "ลบผลลัพธ์ที่ผิดปกติ", + "operationTerminated": "ถูกยกเลิก", + "continueOnError": "ดำเนินการต่อเมื่อมีข้อผิดพลาด" + }, + "breakCondition": "เงื่อนไขการหยุดลูป", + "output": "ตัวแปรเอาท์พุท", + "error_one": "{{count}} ข้อผิดพลาด", + "loop_one": "{{count}} ลูป", + "loopMaxCount": "จำนวนรอบสูงสุด", + "errorResponseMethod": "วิธีการตอบสนองข้อผิดพลาด", + "loopVariables": "ตัวแปรลูป", + "deleteDesc": "การลบโหนดลูปจะลบโหนดลูกทั้งหมด", + "deleteTitle": "ลบโหนดลูปหรือไม่?", + "error_other": "{{count}} ข้อผิดพลาด", + "loop_other": "{{count}} รอบ", + "loopMaxCountError": "กรุณาใส่จำนวนรอบสูงสุดที่ถูกต้อง ซึ่งอยู่ระหว่าง 1 ถึง {{maxCount}}", + "comma": ",", + "loopNode": "น็อดลูป", + "totalLoopCount": "จำนวนรอบทั้งหมด: {{count}}", + "setLoopVariables": "กำหนดตัวแปรภายในขอบเขตของลูป", + "input": "การป้อนข้อมูล", + "finalLoopVariables": "ตัวแปรในลูปสุดท้าย", + "inputMode": "โหมดการนำเข้า", + "currentLoop": "วงจรปัจจุบัน", + "initialLoopVariables": "ตัวแปรในลูปเริ่มต้น", + "currentLoopCount": "จำนวนรอบปัจจุบัน: {{count}}", + "variableName": "ชื่อ ตัวแปร", + "exitConditionTip": "โหนดลูปต้องมีเงื่อนไขการออกอย่างน้อยหนึ่งเงื่อนไข", + "breakConditionTip": "แค่ตัวแปรภายในลูปที่มีเงื่อนไขการสิ้นสุดและตัวแปรสำหรับการสนทนาเท่านั้นที่สามารถอ้างอิงได้." + }, + "dataSource": { + "add": "เพิ่มแหล่งข้อมูล", + "supportedFileFormats": "รูปแบบไฟล์ที่รองรับ", + "supportedFileFormatsPlaceholder": "นามสกุลไฟล์ e.g. doc" + }, + "knowledgeBase": { + "chunkStructureTip": { + "learnMore": "ศึกษาเพิ่มเติม", + "title": "โปรดเลือกโครงสร้างก้อน", + "message": "ฐานความรู้ Dify รองรับโครงสร้างการแบ่งกลุ่มสามแบบ ได้แก่ ทั่วไป ผู้ปกครอง-ลูก และถาม & ตอบ ฐานความรู้แต่ละฐานข้อมูลสามารถมีโครงสร้างได้เพียงโครงสร้างเดียว ผลลัพธ์จากโหนดก่อนหน้าต้องสอดคล้องกับโครงสร้างก้อนที่เลือก โปรดทราบว่าการเลือกโครงสร้างการแบ่งกลุ่มมีผลต่อวิธีการดัชนีที่ใช้ได้" + }, + "chunkStructure": "โครงสร้างก้อน", + "chooseChunkStructure": "เลือกโครงสร้างก้อน", + "changeChunkStructure": "เปลี่ยนโครงสร้างก้อน", + "aboutRetrieval": "เกี่ยวกับวิธีการดึงข้อมูล", + "indexMethodIsRequired": "ต้องใช้วิธีการจัดทําดัชนี", + "retrievalSettingIsRequired": "จําเป็นต้องมีการตั้งค่าการดึงข้อมูล", + "chunkIsRequired": "จําเป็นต้องมีโครงสร้างก้อน", + "chunksInput": "ชิ้นส่วน", + "chunksInputTip": "ตัวแปรนำเข้าของโหนดฐานความรู้คือ Chunks ตัวแปรประเภทเป็นอ็อบเจ็กต์ที่มี JSON Schema เฉพาะซึ่งต้องสอดคล้องกับโครงสร้างชิ้นส่วนที่เลือกไว้.", + "chunksVariableIsRequired": "ตัวแปร Chunks เป็นสิ่งจำเป็น", + "embeddingModelIsRequired": "จำเป็นต้องใช้โมเดลฝัง", + "rerankingModelIsRequired": "จำเป็นต้องมีโมเดลการจัดอันดับใหม่", + "embeddingModelIsInvalid": "แบบจำลองการฝังไม่ถูกต้อง", + "rerankingModelIsInvalid": "โมเดลการจัดอันดับใหม่ไม่ถูกต้อง" + }, + "triggerPlugin": { + "authorized": "ได้รับอนุญาต", + "notConfigured": "ยังไม่ได้ตั้งค่า", + "notAuthorized": "ไม่มีสิทธิ์", + "selectSubscription": "เลือกการสมัครสมาชิก", + "availableSubscriptions": "การสมัครสมาชิกที่มีอยู่", + "addSubscription": "เพิ่มการสมัครสมาชิกใหม่", + "removeSubscription": "ยกเลิกการสมัครสมาชิก", + "subscriptionRemoved": "ยกเลิกการสมัครสมาชิกเรียบร้อยแล้ว", + "error": "ข้อผิดพลาด", + "configuration": "การกำหนดค่า", + "remove": "ลบ", + "or": "หรือ", + "useOAuth": "ใช้ OAuth", + "useApiKey": "ใช้คีย์ API", + "authenticationFailed": "การตรวจสอบล้มเหลว", + "authenticationSuccess": "ตรวจสอบสิทธิ์สำเร็จ", + "oauthConfigFailed": "การตั้งค่า OAuth ล้มเหลว", + "configureOAuthClient": "ตั้งค่าไคลเอนต์ OAuth", + "oauthClientDescription": "กำหนดค่า OAuth client credentials เพื่อเปิดใช้งานการตรวจสอบสิทธิ์", + "oauthClientSaved": "การตั้งค่าไคลเอนต์ OAuth บันทึกเรียบร้อยแล้ว", + "configureApiKey": "ตั้งค่า API Key", + "apiKeyDescription": "กำหนดค่า API key สำหรับการตรวจสอบสิทธิ์", + "apiKeyConfigured": "ตั้งค่า API key สำเร็จแล้ว", + "configurationFailed": "การตั้งค่าไม่สำเร็จ", + "failedToStart": "ไม่สามารถเริ่มกระบวนการตรวจสอบสิทธิ์ได้", + "credentialsVerified": "การยืนยันข้อมูลประจำตัวสำเร็จ", + "credentialVerificationFailed": "การตรวจสอบข้อมูลประจำตัวล้มเหลว", + "verifyAndContinue": "ยืนยันและดำเนินการต่อ", + "configureParameters": "กำหนดค่าพารามิเตอร์", + "parametersDescription": "กำหนดค่าพารามิเตอร์และคุณสมบัติของทริกเกอร์", + "configurationComplete": "การตั้งค่าเสร็จสมบูรณ์", + "configurationCompleteDescription": "การตั้งค่าทริกเกอร์ของคุณสำเร็จแล้ว", + "configurationCompleteMessage": "การตั้งค่าตัวกระตุ้นของคุณเสร็จสมบูรณ์และพร้อมใช้งานแล้ว", + "parameters": "พารามิเตอร์", + "properties": "คุณสมบัติ", + "propertiesDescription": "คุณสมบัติการกำหนดค่าที่เพิ่มเติมสำหรับตัวกระตุ้นนี้", + "noConfigurationRequired": "ไม่จำเป็นต้องตั้งค่าเพิ่มเติมสำหรับทริกเกอร์นี้", + "subscriptionName": "ชื่อการสมัครสมาชิก", + "subscriptionNameDescription": "กรอกชื่อที่ไม่ซ้ำสำหรับการสมัครตัวกระตุ้นนี้", + "subscriptionNamePlaceholder": "ใส่ชื่อการสมัครสมาชิก...", + "subscriptionNameRequired": "จำเป็นต้องระบุชื่อการสมัครสมาชิก", + "subscriptionRequired": "ต้องสมัครสมาชิก" + }, + "triggerSchedule": { + "title": "ตารางเวลา", + "nodeTitle": "ทริกเกอร์ตามตาราง", + "notConfigured": "ยังไม่ได้ตั้งค่า", + "useCronExpression": "ใช้สำนวน cron", + "useVisualPicker": "ใช้ตัวเลือกแบบภาพ", + "frequency": { + "label": "ความถี่", + "hourly": "รายชั่วโมง", + "daily": "ประจำวัน", + "weekly": "รายสัปดาห์", + "monthly": "รายเดือน" + }, + "selectFrequency": "เลือกความถี่", + "frequencyLabel": "ความถี่", + "nextExecution": "การดำเนินการครั้งถัดไป", + "weekdays": "วันในสัปดาห์", + "time": "เวลา", + "cronExpression": "นิพจน์ครอน", + "nextExecutionTime": "เวลาการดำเนินการครั้งถัดไป", + "nextExecutionTimes": "เวลาการประมวลผล 5 ครั้งถัดไป", + "startTime": "เวลาเริ่มต้น", + "executeNow": "ดำเนินการตอนนี้", + "selectDateTime": "เลือกวันที่และเวลา", + "hours": "ชั่วโมง", + "minutes": "นาที", + "onMinute": "ในนาที", + "days": "วัน", + "lastDay": "วันสุดท้าย", + "lastDayTooltip": "ไม่ใช่ทุกเดือนที่จะมี 31 วัน ใช้ตัวเลือก 'วันสุดท้าย' เพื่อเลือกวันสุดท้ายของแต่ละเดือน", + "mode": "แฟชั่น", + "timezone": "เขตเวลา", + "visualConfig": "การตั้งค่าภาพ", + "monthlyDay": "วันประจำเดือน", + "executionTime": "เวลาการดำเนินการ", + "invalidTimezone": "เขตเวลาที่ไม่ถูกต้อง", + "invalidCronExpression": "นิพจน์ cron ไม่ถูกต้อง", + "noValidExecutionTime": "ไม่สามารถคำนวณเวลาการดำเนินการที่ถูกต้องได้", + "executionTimeCalculationError": "ไม่สามารถคำนวณเวลาการดำเนินการได้", + "invalidFrequency": "ความถี่ไม่ถูกต้อง", + "invalidStartTime": "เวลาเริ่มต้นไม่ถูกต้อง", + "startTimeMustBeFuture": "เวลาที่เริ่มต้นต้องเป็นเวลาที่อยู่ในอนาคต", + "invalidTimeFormat": "รูปแบบเวลาที่ไม่ถูกต้อง (ควรเป็น HH:MM AM/PM)", + "invalidWeekday": "วันในสัปดาห์ไม่ถูกต้อง: {{weekday}}", + "invalidMonthlyDay": "วันของเดือนต้องอยู่ระหว่าง 1-31 หรือ \"สุดท้าย\"", + "invalidOnMinute": "นาทีต้องอยู่ระหว่าง 0-59", + "invalidExecutionTime": "เวลาการดำเนินการไม่ถูกต้อง", + "executionTimeMustBeFuture": "เวลาการดำเนินการต้องเป็นอนาคต" + }, + "triggerWebhook": { + "title": "ทริกเกอร์เว็บฮุค", + "nodeTitle": "🔗 ทริกเกอร์เว็บฮุค", + "configPlaceholder": "การกำหนดค่า Webhook trigger จะถูกใช้งานที่นี่", + "webhookUrl": "URL เว็บฮุก", + "webhookUrlPlaceholder": "คลิกสร้างเพื่อสร้าง URL ของเว็บฮุค", + "generate": "สร้าง", + "copy": "คัดลอก", + "test": "ทดสอบ", + "urlGenerated": "สร้าง URL Webhook สำเร็จแล้ว", + "urlGenerationFailed": "ไม่สามารถสร้าง URL ของเว็บฮุคได้", + "urlCopied": "คัดลอก URL ไปยังคลิปบอร์ดแล้ว", + "method": "วิธี", + "contentType": "ประเภทเนื้อหา", + "queryParameters": "พารามิเตอร์คำค้น", + "headerParameters": "พารามิเตอร์หัวเรื่อง", + "requestBodyParameters": "พารามิเตอร์ของเนื้อคำขอ", + "parameterName": "ชื่อของตัวแปร", + "varName": "ชื่อของตัวแปร", + "varType": "พิมพ์", + "varNamePlaceholder": "ใส่ชื่อของตัวแปร...", + "required": "จำเป็น", + "addParameter": "เพิ่ม", + "addHeader": "เพิ่ม", + "noParameters": "ยังไม่ได้ตั้งค่าพารามิเตอร์", + "noQueryParameters": "ไม่มีการตั้งค่าพารามิเตอร์การค้นหา", + "noHeaders": "ยังไม่ได้ตั้งค่าเฮดเดอร์", + "noBodyParameters": "ไม่มีการกำหนดพารามิเตอร์ของร่างกาย", + "debugUrlTitle": "สำหรับการทดสอบ ให้ใช้ URL นี้เสมอ", + "debugUrlCopy": "คลิกเพื่อคัดลอก", + "debugUrlCopied": "คัดลอกแล้ว!", + "debugUrlPrivateAddressWarning": "URL นี้ดูเหมือนจะเป็นที่อยู่ภายใน ซึ่งอาจทำให้คำขอเว็บฮุคล้มเหลวได้ คุณสามารถเปลี่ยน TRIGGER_URL เป็นที่อยู่สาธารณะได้", + "errorHandling": "การจัดการข้อผิดพลาด", + "errorStrategy": "การจัดการข้อผิดพลาด", + "responseConfiguration": "การตอบสนอง", + "asyncMode": "โหมดไม่ประสานเวลา", + "statusCode": "รหัสสถานะ", + "responseBody": "ตัวตอบสนองของเนื้อหา", + "responseBodyPlaceholder": "เขียนเนื้อหาการตอบของคุณที่นี่", + "headers": "หัวข้อ", + "validation": { + "webhookUrlRequired": "ต้องระบุ URL ของ Webhook", + "invalidParameterType": "ประเภทพารามิเตอร์ \"{{type}}\" ไม่ถูกต้องสำหรับพารามิเตอร์ \"{{name}}\"" + } + } + }, + "tracing": { + "stopBy": "แวะที่ {{user}}" + }, + "variableReference": { + "conversationVars": "ตัวแปรการสนทนา", + "noVarsForOperation": "ไม่มีตัวแปรที่พร้อมใช้งานสําหรับการกําหนดด้วยการดําเนินการที่เลือก", + "noAvailableVars": "ไม่มีตัวแปรที่ใช้ได้", + "assignedVarsDescription": "ตัวแปรที่กําหนดต้องเป็นตัวแปรที่เขียนได้ เช่น", + "noAssignedVars": "ไม่มีตัวแปรที่กําหนด" + }, + "versionHistory": { + "filter": { + "onlyYours": "เพียงของคุณเท่านั้น", + "empty": "ไม่พบประวัติการเวอร์ชันที่ตรงกัน", + "onlyShowNamedVersions": "แสดงเฉพาะรุ่นที่ตั้งชื่อ", + "all": "ทั้งหมด", + "reset": "รีเซ็ตตัวกรอง" + }, + "editField": { + "releaseNotes": "บันทึกการเปิดตัว", + "releaseNotesLengthLimit": "หมายเหตุการปล่อยไม่สามารถเกิน {{limit}} ตัวอักษร", + "titleLengthLimit": "ชื่อเรื่องต้องไม่เกิน {{limit}} ตัวอักษร", + "title": "ชื่อเรื่อง" + }, + "action": { + "updateFailure": "ไม่สามารถอัปเดตเวอร์ชันได้", + "deleteFailure": "ลบเวอร์ชันไม่สำเร็จ", + "deleteSuccess": "เวอร์ชันถูกลบ", + "restoreSuccess": "เวอร์ชันที่กู้คืน", + "restoreFailure": "ไม่สามารถกู้คืนเวอร์ชันได้", + "updateSuccess": "อัปเดตเวอร์ชัน", + "copyIdSuccess": "คัดลอกรหัสไปยังคลิปบอร์ด" + }, + "releaseNotesPlaceholder": "อธิบายว่าสิ่งที่เปลี่ยนแปลงไปคืออะไร", + "currentDraft": "ร่างปัจจุบัน", + "editVersionInfo": "แก้ไขข้อมูลเวอร์ชัน", + "restorationTip": "หลังจากการกู้คืนเวอร์ชันแล้ว ร่างปัจจุบันจะถูกเขียนทับ.", + "defaultName": "เวอร์ชันที่ไม่มีชื่อ", + "deletionTip": "การลบไม่สามารถย้อนกลับได้ กรุณายืนยัน.", + "nameThisVersion": "ชื่อเวอร์ชันนี้", + "title": "เวอร์ชัน", + "latest": "ล่าสุด", + "copyId": "คัดลอก ID" + }, + "debug": { + "noData": { + "runThisNode": "ทำงานโหนดนี้", + "description": "ผลลัพธ์จากการวิ่งครั้งล่าสุดจะแสดงที่นี่" + }, + "variableInspect": { + "trigger": { + "stop": "หยุดวิ่ง", + "normal": "ตรวจสอบตัวแปร", + "cached": "ดูตัวแปรที่ถูกเก็บไว้ในแคช", + "clear": "ชัดเจน", + "running": "สถานะการทำงานของการเก็บข้อมูลชั่วคราว" + }, + "systemNode": "ระบบ", + "view": "ดูบันทึก", + "chatNode": "การสนทนา", + "clearAll": "รีเซ็ตทั้งหมด", + "envNode": "สิ่งแวดล้อม", + "emptyLink": "เรียนรู้เพิ่มเติม", + "edited": "แก้ไขแล้ว", + "reset": "รีเซ็ตกลับไปยังค่าครั้งล่าสุด", + "title": "ตรวจสอบตัวแปร", + "resetConversationVar": "รีเซ็ตตัวแปรการสนทนาไปยังค่าตั้งต้น", + "emptyTip": "หลังจากก้าวผ่านโหนดบนผืนผ้าใบหรือเรียกใช้โหนดทีละขั้นตอน คุณสามารถดูค่าปัจจุบันของตัวแปรโหนดใน Variable Inspect ได้", + "clearNode": "ล้างตัวแปรที่เก็บไว้ในแคช", + "export": "ส่งออก", + "exportToolTip": "ส่งออกตัวแปรเป็นไฟล์", + "largeDataNoExport": "ข้อมูลขนาดใหญ่ - แสดงตัวอย่างบางส่วนเท่านั้น", + "largeData": "ข้อมูลขนาดใหญ่ ตัวอย่างแบบอ่านอย่างเดียว ส่งออกเพื่อดูทั้งหมด", + "listening": { + "title": "กำลังรอฟังเหตุการณ์จากทริกเกอร์...", + "tip": "คุณสามารถจำลองการทริกเกอร์เหตุการณ์ได้โดยส่งคำขอทดสอบไปยังจุดสิ้นสุด HTTP {{nodeName}} หรือใช้มันเป็น URL สำหรับการดีบักเหตุการณ์แบบสด ผลลัพธ์ทั้งหมดสามารถดูได้โดยตรงในตัวตรวจสอบตัวแปร", + "tipPlugin": "ตอนนี้คุณสามารถสร้างกิจกรรมใน {{- pluginName}} และดึงผลลัพธ์จากกิจกรรมเหล่านี้ในตัวตรวจสอบตัวแปรได้แล้ว", + "tipSchedule": "กำลังรอฟังเหตุการณ์จากตัวเรียกใช้งานตามตาราง การทำงานครั้งถัดไปตามตาราง: {{nextTriggerTime}}", + "tipFallback": "รอเหตุการณ์ทริกเกอร์เข้ามา ผลลัพธ์จะแสดงที่นี่", + "defaultNodeName": "ทริกเกอร์นี้", + "defaultPluginName": "ปลั๊กอินนี้ทำงาน", + "defaultScheduleTime": "ยังไม่ได้ตั้งค่า", + "selectedTriggers": "ทริกเกอร์ที่เลือก", + "stopButton": "หยุด" + } + }, + "settingsTab": "การตั้งค่า", + "lastRunTab": "รอบสุดท้าย", + "relations": { + "dependents": "ผู้อยู่ในอุปการะ", + "dependencies": "อ้าง อิง", + "dependenciesDescription": "โหนดที่โหนดนี้อาศัย", + "noDependencies": "ไม่มีการพึ่งพา", + "noDependents": "ไม่มีผู้อยู่ในอุปการะ", + "dependentsDescription": "โหนดที่อาศัยโหนดนี้" + }, + "relationsTab": "สัมพันธ์", + "copyLastRun": "คัดลอกการทำงานล่าสุด", + "noLastRunFound": "ไม่พบการทำงานก่อนหน้า", + "copyLastRunError": "ไม่สามารถคัดลอกข้อมูลการทำงานครั้งสุดท้ายได้", + "noMatchingInputsFound": "ไม่พบข้อมูลที่ตรงกันจากการรันครั้งล่าสุด", + "lastOutput": "ผลลัพธ์สุดท้าย", + "lastRunInputsCopied": "{{count}} อินพุต ถูกคัดลอกจากการรันครั้งล่าสุด" + }, + "sidebar": { + "exportWarning": "ส่งออกเวอร์ชันที่บันทึกปัจจุบัน", + "exportWarningDesc": "นี่จะส่งออกเวอร์ชันที่บันทึกไว้ปัจจุบันของเวิร์กโฟลว์ของคุณ หากคุณมีการเปลี่ยนแปลงที่ยังไม่ได้บันทึกในแก้ไข กรุณาบันทึกมันก่อนโดยใช้ตัวเลือกส่งออกในผืนผ้าใบเวิร์กโฟลว์" + }, + "publishLimit": { + "startNodeTitlePrefix": "อัปเกรดเป็น", + "startNodeTitleSuffix": "ปลดล็อกทริกเกอร์ไม่จำกัดต่อเวิร์กโฟลว์", + "startNodeDesc": "คุณได้ถึงขีดจำกัดของทริกเกอร์ 2 ครั้งต่อเวิร์กโฟลว์สำหรับแผนนี้แล้ว อัปเกรดเพื่อเผยแพร่เวิร์กโฟลว์นี้" + }, + "error": { + "startNodeRequired": "โปรดเพิ่มโหนดเริ่มต้นก่อน {{operation}}", + "operations": { + "connectingNodes": "การเชื่อมต่อโหนด", + "addingNodes": "เพิ่มโหนด", + "modifyingWorkflow": "การปรับเปลี่ยนเวิร์กโฟลว์", + "updatingWorkflow": "กำลังปรับปรุงเวิร์กโฟลว์" + } + }, + "customWebhook": "เว็บฮุกที่กำหนดเอง", + "difyTeam": "ทีม Dify", + "triggerStatus": { + "enabled": "ทริกเกอร์", + "disabled": "ทริกเกอร์ • ปิดการใช้งาน" + }, + "entryNodeStatus": { + "enabled": "เริ่ม", + "disabled": "เริ่ม • ปิดใช้งาน" + }, + "onboarding": { + "title": "เลือกโหนดเริ่มต้นเพื่อเริ่ม", + "description": "โหนดเริ่มต้นที่แตกต่างกันมีความสามารถที่แตกต่างกัน ไม่ต้องกังวล คุณสามารถเปลี่ยนมันได้เสมอในภายหลัง", + "userInputFull": "ข้อมูลผู้ใช้ (โหนดเริ่มต้นต้นฉบับ)", + "userInputDescription": "โหนดเริ่มต้นที่อนุญาตให้ตั้งค่าตัวแปรการป้อนข้อมูลของผู้ใช้ พร้อมความสามารถในการใช้เครื่องมือต่าง ๆ เช่น เว็บแอป, API บริการ, เซิร์ฟเวอร์ MCP และเวิร์กโฟลว์", + "trigger": "ทริกเกอร์", + "triggerDescription": "ทริกเกอร์สามารถทำหน้าที่เป็นโหนดเริ่มต้นของเวิร์กโฟลว์ได้ เช่น งานที่ตั้งเวลาไว้ เว็บฮุกแบบกำหนดเอง หรือการรวมเข้ากับแอปอื่น ๆ", + "back": "กลับ", + "learnMore": "เรียนรู้เพิ่มเติม", + "aboutStartNode": "เกี่ยวกับโหนดเริ่มต้น", + "escTip": { + "press": "กด", + "key": "esc", + "toDismiss": "ปฏิเสธ" + } + } +} diff --git a/web/i18n/th-TH/workflow.ts b/web/i18n/th-TH/workflow.ts deleted file mode 100644 index d91461f535..0000000000 --- a/web/i18n/th-TH/workflow.ts +++ /dev/null @@ -1,1296 +0,0 @@ -const translation = { - common: { - undo: 'แก้', - redo: 'พร้อม', - editing: 'แก้ไข', - autoSaved: 'บันทึกอัตโนมัติ', - unpublished: 'ไม่ได้เผยแพร่', - published: 'เผย แพร่', - publish: 'ตีพิมพ์', - update: 'อัพเดต', - run: 'ทดสอบการทำงาน', - running: 'กำลัง เรียก ใช้', - inRunMode: 'ในโหมดเรียกใช้', - inPreview: 'ในการแสดงตัวอย่าง', - inPreviewMode: 'ในโหมดแสดงตัวอย่าง', - preview: 'ดูตัวอย่าง', - viewRunHistory: 'ดูประวัติการวิ่ง', - runHistory: 'ประวัติการวิ่ง', - goBackToEdit: 'กลับไปที่ตัวแก้ไข', - conversationLog: 'บันทึกการสนทนา', - ImageUploadLegacyTip: 'ตอนนี้คุณสามารถสร้างตัวแปรชนิดไฟล์ในฟอร์มเริ่มต้นได้แล้ว เราจะไม่รองรับฟีเจอร์การอัปโหลดรูปภาพอีกต่อไปในอนาคต', - fileUploadTip: 'ฟีเจอร์การอัปโหลดรูปภาพได้รับการอัปเกรดเป็นการอัปโหลดไฟล์', - debugAndPreview: 'ดูตัวอย่าง', - restart: 'เริ่มใหม่', - currentDraft: 'ร่างปัจจุบัน', - currentDraftUnpublished: 'ร่างปัจจุบันที่ไม่ได้เผยแพร่', - latestPublished: 'เผยแพร่ล่าสุด', - publishedAt: 'เผย แพร่', - restore: 'ซ่อมแซม', - runApp: 'เรียกใช้แอพ', - batchRunApp: 'แอป Batch Run', - accessAPIReference: 'การอ้างอิง API การเข้าถึง', - embedIntoSite: 'ฝังลงในไซต์', - addTitle: 'เพิ่มชื่อเรื่อง...', - addDescription: 'เพิ่มคําอธิบาย...', - noVar: 'ไม่มีตัวแปร', - searchVar: 'ตัวแปรการค้นหา', - variableNamePlaceholder: 'ชื่อตัวแปร', - setVarValuePlaceholder: 'ตั้งค่าตัวแปร', - needConnectTip: 'ขั้นตอนนี้ไม่ได้เชื่อมต่อกับสิ่งใด', - maxTreeDepth: 'ขีดจํากัดสูงสุดของ {{depth}} โหนดต่อสาขา', - workflowProcess: 'กระบวนการเวิร์กโฟลว์', - notRunning: 'ยังไม่ได้ทํางาน', - previewPlaceholder: 'ป้อนเนื้อหาในช่องด้านล่างเพื่อเริ่มแก้ไขข้อบกพร่องของแชทบอท', - effectVarConfirm: { - title: 'ลบตัวแปร', - content: 'ตัวแปรนี้ใช้ในโหนดอื่น คุณยังต้องการลบออกหรือไม่?', - }, - insertVarTip: 'กดปุ่ม \'/\' เพื่อแทรกอย่างรวดเร็ว', - processData: 'ประมวลผลข้อมูล', - input: 'อินพุต', - output: 'ผลิตภัณฑ์', - jinjaEditorPlaceholder: 'พิมพ์ \'/\' หรือ \'{\' เพื่อแทรกตัวแปร', - viewOnly: 'ดูเท่านั้น', - showRunHistory: 'แสดงประวัติการวิ่ง', - enableJinja: 'เปิดใช้งานการสนับสนุนเทมเพลต Jinja', - learnMore: 'ศึกษาเพิ่มเติม', - copy: 'ลอก', - duplicate: 'สำเนา', - pasteHere: 'วางที่นี่', - pointerMode: 'โหมดตัวชี้', - handMode: 'โหมดมือ', - model: 'แบบ', - workflowAsTool: 'เวิร์กโฟลว์เป็นเครื่องมือ', - configureRequired: 'กําหนดค่าที่จําเป็น', - configure: 'กําหนดค่า', - manageInTools: 'จัดการในเครื่องมือ', - workflowAsToolTip: 'จําเป็นต้องมีการกําหนดค่าเครื่องมือใหม่หลังจากการอัปเดตเวิร์กโฟลว์', - viewDetailInTracingPanel: 'ดูรายละเอียด', - syncingData: 'ซิงค์ข้อมูลเพียงไม่กี่วินาที', - importDSL: 'นําเข้า DSL', - importDSLTip: 'ร่างปัจจุบันจะถูกเขียนทับ\nส่งออกเวิร์กโฟลว์เป็นข้อมูลสํารองก่อนนําเข้า', - backupCurrentDraft: 'สํารองร่างปัจจุบัน', - chooseDSL: 'เลือกไฟล์ DSL', - overwriteAndImport: 'เขียนทับและนําเข้า', - importFailure: 'นําเข้าล้มเหลว', - importWarning: 'ความระมัดระวัง', - importWarningDetails: 'ความแตกต่างของเวอร์ชัน DSL อาจส่งผลต่อคุณสมบัติบางอย่าง', - importSuccess: 'นําเข้าสําเร็จ', - parallelTip: { - click: { - title: 'คลิก', - desc: 'เพื่อเพิ่ม', - }, - drag: { - title: 'ลาก', - desc: 'เพื่อเชื่อมต่อ', - }, - limit: 'ความขนานถูกจํากัดไว้ที่ {{num}} สาขา', - depthLimit: 'ขีดจํากัดเลเยอร์ซ้อนแบบขนานของ {{num}} เลเยอร์', - }, - disconnect: 'ยก เลิก', - jumpToNode: 'ข้ามไปยังโหนดนี้', - addParallelNode: 'เพิ่มโหนดขนาน', - parallel: 'ขนาน', - branch: 'กิ่ง', - openInExplore: 'เปิดใน Explore', - onFailure: 'เมื่อล้มเหลว', - addFailureBranch: 'เพิ่มสาขา Fail', - loadMore: 'โหลดเวิร์กโฟลว์เพิ่มเติม', - noHistory: 'ไม่มีประวัติ', - versionHistory: 'ประวัติรุ่น', - exportPNG: 'ส่งออกเป็น PNG', - exportJPEG: 'ส่งออกเป็น JPEG', - publishUpdate: 'เผยแพร่การอัปเดต', - exitVersions: 'ออกเวอร์ชัน', - exportImage: 'ส่งออกภาพ', - exportSVG: 'ส่งออกเป็น SVG', - needAnswerNode: 'ต้องเพิ่มโหนดคำตอบ', - addBlock: 'เพิ่มโนด', - needOutputNode: 'ต้องเพิ่มโหนดเอาต์พุต', - tagBound: 'จำนวนแอปพลิเคชันที่ใช้แท็กนี้', - currentWorkflow: 'เวิร์กโฟลว์ปัจจุบัน', - currentView: 'ปัจจุบัน View', - moreActions: 'การดําเนินการเพิ่มเติม', - listening: 'การฟัง', - chooseStartNodeToRun: 'เลือกโหนดเริ่มต้นเพื่อรัน', - runAllTriggers: 'เรียกใช้งานตัวทริกเกอร์ทั้งหมด', - features: 'คุณสมบัติ', - featuresDescription: 'ปรับปรุงประสบการณ์ผู้ใช้ของเว็บแอป', - featuresDocLink: 'เรียนรู้เพิ่มเติม', - needAdd: 'ต้องเพิ่มโหนด {{node}}', - needStartNode: 'ต้องเพิ่มโหนดเริ่มต้นอย่างน้อยหนึ่งโหนด', - workflowAsToolDisabledHint: 'เผยแพร่เวิร์กโฟลว์ล่าสุดและตรวจสอบให้แน่ใจว่ามีโหนดป้อนข้อมูลผู้ใช้เชื่อมต่อก่อนที่จะกำหนดค่าเป็นเครื่องมือ', - }, - env: { - envPanelTitle: 'ตัวแปรสภาพแวดล้อม', - envDescription: 'ตัวแปรสภาพแวดล้อมสามารถใช้เพื่อจัดเก็บข้อมูลส่วนตัวและข้อมูลประจําตัวได้ เป็นแบบอ่านอย่างเดียวและสามารถแยกออกจากไฟล์ DSL ระหว่างการส่งออก', - envPanelButton: 'เพิ่มตัวแปร', - modal: { - title: 'เพิ่มตัวแปรสภาพแวดล้อม', - editTitle: 'แก้ไขตัวแปรสภาพแวดล้อม', - type: 'ประเภท', - name: 'ชื่อ', - namePlaceholder: 'ชื่อ env', - value: 'ค่า', - valuePlaceholder: 'ค่า env', - secretTip: 'ใช้เพื่อกําหนดข้อมูลหรือข้อมูลที่ละเอียดอ่อน โดยมีการตั้งค่า DSL ที่กําหนดค่าไว้เพื่อป้องกันการรั่วไหล', - description: 'คำอธิบาย', - descriptionPlaceholder: 'อธิบายตัวแปร', - }, - export: { - title: 'ส่งออกตัวแปรสภาพแวดล้อม Secret หรือไม่', - checkbox: 'ส่งออกค่าข้อมูลลับ', - ignore: 'ส่งออก DSL', - export: 'ส่งออก DSL ด้วยค่าลับ', - }, - }, - globalVar: { - title: 'ตัวแปรระบบ', - description: 'ตัวแปรระบบเป็นตัวแปรแบบโกลบอลที่โหนดใด ๆ สามารถอ้างอิงได้โดยไม่ต้องเดินสายเมื่อชนิดข้อมูลถูกต้อง เช่น รหัสผู้ใช้ปลายทางและรหัสเวิร์กโฟลว์', - fieldsDescription: { - conversationId: 'รหัสการสนทนา', - dialogCount: 'จำนวนการสนทนา', - userId: 'รหัสผู้ใช้', - triggerTimestamp: 'ตราประทับเวลาที่แอปเริ่มทำงาน', - appId: 'รหัสแอปพลิเคชัน', - workflowId: 'รหัสเวิร์กโฟลว์', - workflowRunId: 'รหัสการรันเวิร์กโฟลว์', - }, - }, - chatVariable: { - panelTitle: 'ตัวแปรการสนทนา', - panelDescription: 'ตัวแปรการสนทนาใช้เพื่อจัดเก็บข้อมูลแบบโต้ตอบที่ LLM จําเป็นต้องจดจํา รวมถึงประวัติการสนทนา ไฟล์ที่อัปโหลด การตั้งค่าของผู้ใช้ พวกเขาอ่าน-เขียน', - docLink: 'เยี่ยมชมเอกสารของเราเพื่อเรียนรู้เพิ่มเติม', - button: 'เพิ่มตัวแปร', - modal: { - title: 'เพิ่มตัวแปรการสนทนา', - editTitle: 'แก้ไขตัวแปรการสนทนา', - name: 'ชื่อ', - namePlaceholder: 'ชื่อตัวแปร', - type: 'ประเภท', - value: 'ค่าเริ่มต้น', - valuePlaceholder: 'ค่าเริ่มต้น เว้นว่างไว้เพื่อไม่ให้ตั้งค่า', - description: 'คำอธิบาย', - descriptionPlaceholder: 'อธิบายตัวแปร', - editInJSON: 'แก้ไขใน JSON', - oneByOne: 'เพิ่มทีละรายการ', - editInForm: 'แก้ไขในแบบฟอร์ม', - arrayValue: 'ค่า', - addArrayValue: 'เพิ่มมูลค่า', - objectKey: 'กุญแจ', - objectType: 'ประเภท', - objectValue: 'ค่าเริ่มต้น', - }, - storedContent: 'เนื้อหาที่เก็บไว้', - updatedAt: 'อัพเดทเมื่อ', - }, - changeHistory: { - title: 'ประวัติการเปลี่ยนแปลง', - placeholder: 'คุณยังไม่ได้เปลี่ยนแปลงอะไรเลย', - clearHistory: 'ล้างประวัติ', - hint: 'คนอินเดีย', - hintText: 'การดําเนินการแก้ไขของคุณจะถูกติดตามในประวัติการเปลี่ยนแปลง ซึ่งจะถูกจัดเก็บไว้ในอุปกรณ์ของคุณตลอดระยะเวลาของเซสชันนี้ ประวัตินี้จะถูกล้างเมื่อคุณออกจากตัวแก้ไข', - stepBackward_one: '{{count}} ถอยหลัง', - stepBackward_other: '{{count}} ถอยหลัง', - stepForward_one: '{{count}} ก้าวไปข้างหน้า', - stepForward_other: '{{count}} ก้าวไปข้างหน้า', - sessionStart: 'เริ่มเซสชัน', - currentState: 'สถานะปัจจุบัน', - noteAdd: 'เพิ่มหมายเหตุ', - noteChange: 'เปลี่ยนหมายเหตุ', - noteDelete: 'ลบโน้ต', - nodeDelete: 'โหนดถูกลบแล้ว', - nodeDescriptionChange: 'คำอธิบายของโหนดถูกเปลี่ยน', - nodeDragStop: 'โหนดถูกย้าย', - edgeDelete: 'เชื่อมต่อ Node ขาดหาย', - nodeTitleChange: 'ชื่อโหนดเปลี่ยน', - nodeAdd: 'เพิ่มโนด', - nodeChange: 'โหนดเปลี่ยนแปลง', - nodeResize: 'ขนาดของโหนดถูกปรับขนาด', - nodeConnect: 'เชื่อมต่อ Node', - nodePaste: 'โนดที่วางไว้', - }, - errorMsg: { - fieldRequired: '{{field}} เป็นสิ่งจําเป็น', - rerankModelRequired: 'ก่อนเปิด Rerank Model โปรดยืนยันว่าได้กําหนดค่าโมเดลสําเร็จในการตั้งค่า', - authRequired: 'ต้องได้รับอนุญาต', - invalidJson: '{{field}} เป็น JSON ไม่ถูกต้อง', - fields: { - variable: 'ชื่อตัวแปร', - variableValue: 'ค่าตัวแปร', - code: 'รหัส', - model: 'แบบ', - rerankModel: 'จัดอันดับโมเดลใหม่', - visionVariable: 'ตัวแปรวิสัยทัศน์', - }, - invalidVariable: 'ตัวแปรไม่ถูกต้อง', - noValidTool: '{{field}} ไม่ได้เลือกเครื่องมือที่ถูกต้อง', - toolParameterRequired: '{{field}}: พารามิเตอร์ [{{param}}] เป็นสิ่งจําเป็น', - startNodeRequired: 'โปรดเพิ่มโหนดเริ่มต้นก่อน {{operation}}', - }, - singleRun: { - testRun: 'ทดสอบการทํางาน', - startRun: 'เริ่มวิ่ง', - running: 'กำลัง เรียก ใช้', - testRunIteration: 'การทดสอบการทําซ้ํา', - back: 'ย้อนกลับ', - iteration: 'เกิด ซ้ำ', - loop: 'ลูป', - reRun: 'เรียกใช้ซ้ํา', - preparingDataSource: 'การเตรียมแหล่งข้อมูล', - }, - tabs: { - 'searchTool': 'เครื่องมือค้นหา', - 'tools': 'เครื่อง มือ', - 'allTool': 'ทั้งหมด', - 'customTool': 'ธรรมเนียม', - 'workflowTool': 'เวิร์กโฟลว์', - 'question-understand': 'คําถาม: เข้าใจ', - 'logic': 'ตรรกวิทยา', - 'transform': 'แปลง', - 'utilities': 'สาธารณูปโภค', - 'noResult': 'ไม่พบการจับคู่', - 'agent': 'กลยุทธ์ตัวแทน', - 'plugin': 'ปลั๊กอิน', - 'searchBlock': 'ค้นหาโหนด', - 'blocks': 'โหนด', - 'allAdded': 'ทั้งหมดที่เพิ่มเข้ามา', - 'addAll': 'เพิ่มทั้งหมด', - 'searchDataSource': 'ค้นหาแหล่งข้อมูล', - 'sources': 'แหล่ง', - 'start': 'เริ่ม', - 'searchTrigger': 'ค้นหาทริกเกอร์...', - 'allTriggers': 'ทริกเกอร์ทั้งหมด', - 'noPluginsFound': 'ไม่พบปลั๊กอิน', - 'requestToCommunity': 'คำขอถึงชุมชน', - 'featuredTools': 'เด่น', - 'showMoreFeatured': 'แสดงเพิ่มเติม', - 'showLessFeatured': 'แสดงน้อยลง', - 'installed': 'ติดตั้งแล้ว', - 'pluginByAuthor': 'โดย {{author}}', - 'usePlugin': 'เลือกเครื่องมือ', - 'hideActions': 'ซ่อนเครื่องมือ', - 'noFeaturedPlugins': 'ค้นพบเครื่องมือเพิ่มเติมใน Marketplace', - 'noFeaturedTriggers': 'ค้นพบทริกเกอร์เพิ่มเติมใน Marketplace', - 'startDisabledTip': 'โหนดทริกเกอร์และโหนดป้อนข้อมูลของผู้ใช้ไม่สามารถใช้ร่วมกันได้', - }, - blocks: { - 'start': 'เริ่ม', - 'end': 'เอาต์พุต', - 'answer': 'ตอบ', - 'llm': 'นิติศาสตราจารย์', - 'knowledge-retrieval': 'การดึงความรู้', - 'question-classifier': 'ตัวจําแนกคําถาม', - 'if-else': 'ถ้า/อื่น', - 'code': 'รหัส', - 'template-transform': 'แม่ แบบ', - 'http-request': 'คําขอ HTTP', - 'variable-assigner': 'ตัวรวบรวมตัวแปร', - 'variable-aggregator': 'ตัวรวบรวมตัวแปร', - 'assigner': 'ตัวกําหนดตัวแปร', - 'iteration-start': 'เริ่มการทําซ้ํา', - 'iteration': 'เกิด ซ้ำ', - 'parameter-extractor': 'ตัวแยกพารามิเตอร์', - 'document-extractor': 'ตัวแยกเอกสาร', - 'list-operator': 'ตัวดําเนินการรายการ', - 'agent': 'ตัวแทน', - 'loop': 'ลูป', - 'loop-start': 'เริ่มลูป', - 'loop-end': 'ออกจากลูป', - 'knowledge-index': 'ฐานความรู้', - 'datasource': 'แหล่งข้อมูล', - 'originalStartNode': 'โหนดเริ่มต้นเดิม', - 'trigger-schedule': 'ทริกเกอร์ตามตาราง', - 'trigger-webhook': 'ทริกเกอร์เว็บฮุค', - 'trigger-plugin': 'ทริกเกอร์ปลั๊กอิน', - }, - 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': 'รวมตัวแปรหลายสาขาเป็นตัวแปรเดียวสําหรับการกําหนดค่าแบบรวมของโหนดดาวน์สตรีม', - 'assigner': 'โหนดการกําหนดตัวแปรใช้สําหรับกําหนดค่าให้กับตัวแปรที่เขียนได้ (เช่นตัวแปรการสนทนา)', - 'variable-aggregator': 'รวมตัวแปรหลายสาขาเป็นตัวแปรเดียวสําหรับการกําหนดค่าแบบรวมของโหนดดาวน์สตรีม', - 'iteration': 'ดําเนินการหลายขั้นตอนกับวัตถุรายการจนกว่าจะส่งออกผลลัพธ์ทั้งหมด', - 'parameter-extractor': 'ใช้ LLM เพื่อแยกพารามิเตอร์ที่มีโครงสร้างจากภาษาธรรมชาติสําหรับการเรียกใช้เครื่องมือหรือคําขอ HTTP', - 'document-extractor': 'ใช้เพื่อแยกวิเคราะห์เอกสารที่อัปโหลดเป็นเนื้อหาข้อความที่ LLM เข้าใจได้ง่าย', - 'list-operator': 'ใช้เพื่อกรองหรือจัดเรียงเนื้อหาอาร์เรย์', - 'agent': 'การเรียกใช้โมเดลภาษาขนาดใหญ่เพื่อตอบคําถามหรือประมวลผลภาษาธรรมชาติ', - 'loop': 'ดำเนินการลูปของตรรกะจนกว่าจะถึงเงื่อนไขการสิ้นสุดหรือตรงตามจำนวนลูปสูงสุดที่กำหนด.', - 'loop-end': 'เทียบเท่ากับ "break" โหนดนี้ไม่มีรายการการกำหนดค่า เมื่อร่างกายของลูปถึงโหนดนี้ ลูปจะสิ้นสุดลง.', - 'knowledge-index': 'ฐานความรู้เกี่ยวกับ', - 'datasource': 'แหล่งข้อมูลเกี่ยวกับ', - 'trigger-schedule': 'ตัวทริกเกอร์เวิร์กโฟลว์ตามเวลา ซึ่งเริ่มเวิร์กโฟลว์ตามกำหนดการ', - 'trigger-webhook': 'Webhook Trigger รับการส่งข้อมูลแบบ HTTP จากระบบของบุคคลที่สามเพื่อเรียกใช้งานเวิร์กโฟลว์โดยอัตโนมัติ', - 'trigger-plugin': 'ทริกเกอร์การรวมจากบุคคลที่สามที่เริ่มการทำงานอัตโนมัติจากเหตุการณ์ของแพลตฟอร์มภายนอก', - }, - operator: { - zoomIn: 'ซูมเข้า', - zoomOut: 'ซูมออก', - zoomTo50: 'ซูมไปที่ 50%', - zoomTo100: 'ซูมไปที่ 100%', - zoomToFit: 'ซูมให้พอดี', - alignBottom: 'ด้านล่าง', - alignCenter: 'ศูนย์กลาง', - alignMiddle: 'กลาง', - horizontal: 'แนวนอน', - vertical: 'แนวตั้ง', - alignTop: 'ด้านบน', - distributeVertical: 'ระยะห่างแนวตั้ง', - alignLeft: 'ซ้าย', - selectionAlignment: 'การจัดตําแหน่งการเลือก', - distributeHorizontal: 'ระยะห่างแนวนอน', - alignRight: 'ขวา', - alignNodes: 'จัดตําแหน่งโหนด', - }, - panel: { - userInputField: 'ฟิลด์ป้อนข้อมูลของผู้ใช้', - helpLink: 'วิธีใช้', - about: 'ประมาณ', - createdBy: 'สร้างโดย', - nextStep: 'ขั้นตอนถัดไป', - runThisStep: 'เรียกใช้ขั้นตอนนี้', - checklist: 'ตรวจ สอบ', - checklistTip: 'ตรวจสอบให้แน่ใจว่าปัญหาทั้งหมดได้รับการแก้ไขแล้วก่อนที่จะเผยแพร่', - checklistResolved: 'ปัญหาทั้งหมดได้รับการแก้ไขแล้ว', - change: 'เปลี่ยน', - optional: '(ไม่บังคับ)', - organizeBlocks: 'จัดระเบียบโหนด', - addNextStep: 'เพิ่มขั้นตอนถัดไปในกระบวนการทำงานนี้', - changeBlock: 'เปลี่ยนโหนด', - selectNextStep: 'เลือกขั้นตอนถัดไป', - minimize: 'ออกจากโหมดเต็มหน้าจอ', - maximize: 'เพิ่มประสิทธิภาพผ้าใบ', - scrollToSelectedNode: 'เลื่อนไปยังโหนดที่เลือก', - optional_and_hidden: '(ตัวเลือก & ซ่อน)', - goTo: 'ไปที่', - startNode: 'เริ่มต้นโหนด', - openWorkflow: 'เปิดเวิร์กโฟลว์', - }, - nodes: { - common: { - outputVars: 'ตัวแปรเอาต์พุต', - insertVarTip: 'แทรกตัวแปร', - memory: { - memory: 'ความจำ', - memoryTip: 'การตั้งค่าหน่วยความจําแชท', - windowSize: 'ขนาดหน้าต่าง', - conversationRoleName: 'ชื่อบทบาทการสนทนา', - user: 'คํานําหน้าผู้ใช้', - assistant: 'คํานําหน้าผู้ช่วย', - }, - memories: { - title: 'ความ ทรง จำ', - tip: 'ความทรงจําการแชท', - builtIn: 'ในตัว', - }, - errorHandle: { - none: { - title: 'ไม่มีใคร', - desc: 'โหนดจะหยุดทํางานหากเกิดข้อยกเว้นและไม่ได้รับการจัดการ', - }, - defaultValue: { - title: 'ค่าเริ่มต้น', - desc: 'เมื่อเกิดข้อผิดพลาด ให้ระบุเนื้อหาเอาต์พุตแบบคงที่', - tip: 'เมื่อเกิดข้อผิดพลาด จะส่งคืนค่าต่ํากว่า', - inLog: 'ข้อยกเว้นโหนดส่งออกตามค่าเริ่มต้น', - output: 'ค่าเริ่มต้นเอาต์พุต', - }, - failBranch: { - title: 'สาขาล้มเหลว', - desc: 'เมื่อเกิดข้อผิดพลาด จะดําเนินการสาขาข้อยกเว้น', - customize: 'ไปที่พื้นที่ทํางานเพื่อปรับแต่งตรรกะสาขาที่ล้มเหลว', - customizeTip: 'เมื่อเปิดใช้งานสาขาล้มเหลว ข้อยกเว้นที่โหนดโยนจะไม่ยุติกระบวนการ แต่จะเรียกใช้สาขาล้มเหลวที่กําหนดไว้ล่วงหน้าโดยอัตโนมัติ ช่วยให้คุณระบุข้อความแสดงข้อผิดพลาด รายงาน การแก้ไข หรือข้ามการดําเนินการได้อย่างยืดหยุ่น', - inLog: 'ข้อยกเว้นโหนดจะดําเนินการสาขาที่ล้มเหลวโดยอัตโนมัติ เอาต์พุตโหนดจะส่งคืนประเภทข้อผิดพลาดและข้อความแสดงข้อผิดพลาดและส่งต่อไปยังดาวน์สตรีม', - }, - partialSucceeded: { - tip: 'มีโหนด {{num}} ในกระบวนการที่ทํางานผิดปกติ โปรดไปที่การติดตามเพื่อตรวจสอบบันทึก', - }, - title: 'การจัดการข้อผิดพลาด', - tip: 'กลยุทธ์การจัดการข้อยกเว้น ทริกเกอร์เมื่อโหนดพบข้อยกเว้น', - }, - retry: { - retry: 'ลอง', - retryOnFailure: 'ลองใหม่เมื่อล้มเหลว', - maxRetries: 'การลองซ้ําสูงสุด', - retryInterval: 'ช่วงเวลาลองใหม่', - retryTimes: 'ลอง {{times}} ครั้งเมื่อล้มเหลว', - retrying: 'กําลังลองซ้ํา...', - retrySuccessful: 'ลองใหม่สําเร็จ', - retryFailed: 'ลองใหม่ล้มเหลว', - retryFailedTimes: '{{times}} การลองซ้ําล้มเหลว', - times: 'ครั้ง', - retries: '{{num}} ลอง', - ms: 'นางสาว', - }, - typeSwitch: { - input: 'ค่าป้อนข้อมูล', - variable: 'ใช้ตัวแปร', - }, - inputVars: 'ตัวแปรอินพุต', - pluginNotInstalled: 'ปลั๊กอินไม่ได้ติดตั้ง', - }, - 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', - prompt: 'พร้อมท์', - roleDescription: { - system: 'ให้คําแนะนําระดับสูงสําหรับการสนทนา', - user: 'ให้คําแนะนํา แบบสอบถาม หรือการป้อนข้อมูลตามข้อความใดๆ ไปยังแบบจําลอง', - assistant: 'การตอบสนองของโมเดลตามข้อความของผู้ใช้', - }, - addMessage: 'เพิ่มข้อความ', - vision: 'การมองเห็น', - files: 'แฟ้ม', - resolution: { - name: 'มติ', - high: 'สูง', - low: 'ต่ํา', - }, - outputVars: { - output: 'สร้างเนื้อหา', - reasoning_content: 'เนื้อหาการให้เหตุผล', - usage: 'ข้อมูลการใช้งานรุ่น', - }, - singleRun: { - variable: 'ตัวแปร', - }, - sysQueryInUser: 'sys.query ในข้อความผู้ใช้เป็นสิ่งจําเป็น', - jsonSchema: { - warningTips: { - saveSchema: 'กรุณาแก้ไขฟิลด์ปัจจุบันให้เสร็จก่อนที่จะบันทึกสคีมา', - }, - apply: 'สมัคร', - resetDefaults: 'รีเซ็ต', - generate: 'สร้าง', - import: 'นำเข้าจาก JSON', - descriptionPlaceholder: 'เพิ่มคำอธิบาย', - instruction: 'คำแนะนำ', - generating: 'กำลังสร้าง JSON Schema...', - resultTip: 'นี่คือผลลัพธ์ที่สร้างขึ้น หากคุณไม่พอใจ คุณสามารถกลับไปและแก้ไขคำสั่งของคุณได้', - regenerate: 'สร้างใหม่', - title: 'รูปแบบข้อมูลที่จัดระเบียบ', - promptPlaceholder: 'โปรดอธิบาย JSON Schema ของคุณ...', - generatedResult: 'ผลลัพธ์ที่สร้างขึ้น', - generateJsonSchema: 'สร้าง JSON Schema', - promptTooltip: 'แปลงคำอธิบายข้อความเป็นโครงสร้าง JSON Schema มาตรฐาน.', - showAdvancedOptions: 'แสดงตัวเลือกขั้นสูง', - addField: 'เพิ่มฟิลด์', - back: 'กลับ', - fieldNamePlaceholder: 'ชื่อฟิลด์', - generationTip: 'คุณสามารถใช้ภาษาธรรมชาติในการสร้าง JSON Schema ได้อย่างรวดเร็ว.', - doc: 'เรียนรู้เพิ่มเติมเกี่ยวกับผลลัพธ์ที่มีโครงสร้าง', - addChildField: 'เพิ่มฟิลด์เด็ก', - stringValidations: 'การตรวจสอบสตริง', - required: 'จำเป็นต้องใช้', - }, - reasoningFormat: { - tagged: 'รักษาความคิดเกี่ยวกับแท็ก', - separated: 'แยกแท็กความคิดเห็น', - tooltip: 'ดึงเนื้อหาจากแท็กคิดและเก็บไว้ในฟิลด์ reasoning_content.', - title: 'เปิดใช้งานการแยกแท็กการเหตุผล', - }, - }, - knowledgeRetrieval: { - queryVariable: 'ตัวแปรแบบสอบถาม', - knowledge: 'ความรู้', - outputVars: { - output: 'การดึงข้อมูลที่แบ่งส่วน', - content: 'เนื้อหาที่แบ่งกลุ่ม', - title: 'ชื่อแบ่งส่วน', - icon: 'ไอคอนแบ่งส่วน', - url: 'URL ที่แบ่งกลุ่ม', - metadata: 'ข้อมูลเมตาอื่นๆ', - files: 'ไฟล์ที่ดึงมา', - }, - metadata: { - options: { - disabled: { - title: 'คนพิการ', - subTitle: 'ไม่ได้เปิดใช้งานการกรองข้อมูลเมตา', - }, - automatic: { - desc: 'สร้างเงื่อนไขการกรองข้อมูลเมตาโดยอัตโนมัติตามตัวแปรค้นหา', - title: 'อัตโนมัติ', - subTitle: 'สร้างเงื่อนไขการกรองข้อมูลเมตาโดยอัตโนมัติตามการค้นหาของผู้ใช้', - }, - manual: { - subTitle: 'เพิ่มเงื่อนไขการกรองข้อมูลเมตาด้วยตนเอง', - title: 'คู่มือ', - }, - }, - panel: { - conditions: 'เงื่อนไข', - search: 'ค้นหาข้อมูลเมตา', - add: 'เพิ่มเงื่อนไข', - datePlaceholder: 'เลือกเวลา...', - title: 'เงื่อนไขการกรองข้อมูลเมตา', - select: 'เลือกตัวแปร...', - placeholder: 'ใส่ค่า', - }, - title: 'การกรองข้อมูลเมตา', - tip: 'การกรองข้อมูลเมตาดาต้าเป็นกระบวนการที่ใช้คุณลักษณะของเมตาดาต้า (เช่น แท็ก หมวดหมู่ หรือสิทธิการเข้าถึง) เพื่อปรับแต่งและควบคุมการดึงข้อมูลที่เกี่ยวข้องภายในระบบ.', - }, - queryText: 'ข้อความค้นหา', - queryAttachment: 'ค้นหารูปภาพ', - }, - http: { - inputVars: 'ตัวแปรอินพุต', - api: 'เอพีไอ', - apiPlaceholder: 'ป้อน URL พิมพ์ \'/\' แทรกตัวแปร', - extractListPlaceholder: 'ป้อนดัชนีรายการพิมพ์ \'/\' แทรกตัวแปร', - notStartWithHttp: 'API ควรขึ้นต้นด้วย http:// หรือ https://', - key: 'กุญแจ', - type: 'ประเภท', - value: 'ค่า', - bulkEdit: 'แก้ไขจํานวนมาก', - keyValueEdit: 'การแก้ไขคีย์-ค่า', - headers: 'หัว กระดาษ', - params: 'พารามิเตอร์', - body: 'ร่างกาย', - binaryFileVariable: 'ตัวแปรไฟล์ไบนารี', - 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: 'ป้อนหมดเวลาการเขียนเป็นวินาที', - }, - curl: { - title: 'นําเข้าจาก cURL', - placeholder: 'วางสตริง cURL ที่นี่', - }, - verifySSL: { - title: 'ตรวจสอบใบรับรอง SSL', - warningTooltip: 'การปิดการตรวจสอบ SSL ไม่แนะนำให้ใช้ในสภาพแวดล้อมการผลิต ควรใช้เฉพาะในระหว่างการพัฒนาหรือการทดสอบเท่านั้น เนื่องจากจะทำให้การเชื่อมต่อมีความเสี่ยงต่อภัยคุกคามด้านความปลอดภัย เช่น การโจมตีแบบ Man-in-the-middle.', - }, - }, - code: { - inputVars: 'ตัวแปรอินพุต', - outputVars: 'ตัวแปรเอาต์พุต', - advancedDependencies: 'การพึ่งพาขั้นสูง', - advancedDependenciesTip: 'เพิ่มการพึ่งพาที่โหลดไว้ล่วงหน้าซึ่งใช้เวลามากขึ้นในการใช้หรือไม่ใช่ค่าเริ่มต้นในตัวที่นี่', - searchDependencies: 'การพึ่งพาการค้นหา', - syncFunctionSignature: 'ซิงก์ลายเซ็นฟังก์ชันให้ตรงกับโค้ด', - }, - templateTransform: { - inputVars: 'ตัวแปรอินพุต', - code: 'รหัส', - codeSupportTip: 'รองรับเฉพาะ Jinja2', - outputVars: { - output: 'เนื้อหาที่แปลงโฉม', - }, - }, - ifElse: { - if: 'ถ้า', - else: 'อื่น', - elseDescription: 'ใช้เพื่อกําหนดตรรกะที่ควรดําเนินการเมื่อไม่ตรงตามเงื่อนไข if', - and: 'และ', - or: 'หรือ', - operator: 'ผู้ปฏิบัติการ', - notSetVariable: 'โปรดตั้งค่าตัวแปรก่อน', - comparisonOperator: { - 'contains': 'ประกอบ ด้วย', - 'not contains': 'ไม่มี', - 'start with': 'เริ่มต้นด้วย', - 'end with': 'ลงท้ายด้วย', - 'is': 'คือ', - 'is not': 'ไม่ใช่', - 'empty': 'ว่างเปล่า', - 'not empty': 'ไม่ว่างเปล่า', - 'null': 'เป็นโมฆะ', - 'not null': 'ไม่เป็นโมฆะ', - 'in': 'ใน', - 'not in': 'ไม่อยู่ใน', - 'all of': 'ทั้งหมด', - 'exists': 'อยู่', - 'not exists': 'ไม่มีอยู่จริง', - 'before': 'ก่อน', - 'after': 'หลังจากนั้น', - }, - optionName: { - image: 'ภาพ', - doc: 'เอกสาร', - audio: 'เสียง', - video: 'วีดิทัศน์', - localUpload: 'อัปโหลดในเครื่อง', - url: 'URL', - }, - enterValue: 'ป้อนค่า', - addCondition: 'เพิ่มเงื่อนไข', - conditionNotSetup: 'เงื่อนไข NOT ตั้งค่า', - selectVariable: 'เลือกตัวแปร...', - addSubVariable: 'ตัวแปรย่อย', - select: 'เลือก', - }, - variableAssigner: { - title: 'กําหนดตัวแปร', - outputType: 'ประเภทเอาต์พุต', - varNotSet: 'ไม่ได้ตั้งค่าตัวแปร', - noVarTip: 'เพิ่มตัวแปรที่จะกําหนด', - type: { - string: 'เชือก', - number: 'เลข', - object: 'วัตถุ', - array: 'อาร์เรย์', - }, - aggregationGroup: 'กลุ่มการรวม', - aggregationGroupTip: 'การเปิดใช้งานคุณลักษณะนี้ช่วยให้ตัวรวบรวมตัวแปรสามารถรวมชุดตัวแปรหลายชุดได้', - addGroup: 'เพิ่มกลุ่ม', - outputVars: { - varDescribe: '{{groupName}} เอาต์พุต', - }, - setAssignVariable: 'ตั้งค่าตัวแปรกําหนด', - }, - assigner: { - 'assignedVariable': 'ตัวแปรที่กําหนด', - 'writeMode': 'โหมดเขียน', - 'writeModeTip': 'โหมดผนวก: ใช้ได้กับตัวแปรอาร์เรย์เท่านั้น', - 'over-write': 'เขียน ทับ', - 'append': 'ผนวก', - 'plus': 'บวก', - 'clear': 'ใส', - 'setVariable': 'ตั้งค่าตัวแปร', - 'variable': 'ตัวแปร', - 'operations': { - 'set': 'ชุด', - 'append': 'ผนวก', - '-=': '-=', - '*=': '*=', - 'overwrite': 'เขียน ทับ', - 'extend': 'ขยาย', - 'title': 'การผ่าตัด', - 'clear': 'ใส', - 'over-write': 'เขียน ทับ', - '+=': '+=', - '/=': '/=', - 'remove-last': 'ลบสุดท้าย', - 'remove-first': 'ลบอันดับแรก', - }, - 'noAssignedVars': 'ไม่มีตัวแปรที่กําหนด', - 'selectAssignedVariable': 'เลือกตัวแปรที่กําหนด...', - 'variables': 'ตัว แปร', - 'varNotSet': 'ตัวแปรไม่ได้ตั้งค่า', - 'assignedVarsDescription': 'ตัวแปรที่กําหนดต้องเป็นตัวแปรที่เขียนได้ เช่น ตัวแปรการสนทนา', - 'noVarTip': 'คลิกปุ่ม "+" เพื่อเพิ่มตัวแปร', - 'setParameter': 'ตั้งค่าพารามิเตอร์...', - }, - tool: { - inputVars: 'ตัวแปรอินพุต', - outputVars: { - text: 'เนื้อหาที่สร้างขึ้นด้วยเครื่องมือ', - files: { - title: 'ไฟล์ที่สร้างขึ้นด้วยเครื่องมือ', - type: 'ประเภทการสนับสนุน ตอนนี้รองรับเฉพาะรูปภาพ', - transfer_method: 'วิธีการโอน ค่าเป็น remote_url หรือ local_file', - url: 'URL ของรูปภาพ', - upload_file_id: 'อัปโหลดรหัสไฟล์', - }, - json: 'เครื่องมือสร้าง JSON', - }, - authorize: 'อนุญาต', - insertPlaceholder2: 'แทรกตัวแปร', - insertPlaceholder1: 'พิมพ์หรือลงทะเบียน', - settings: 'การตั้งค่า', - }, - questionClassifiers: { - model: 'แบบ', - inputVars: 'ตัวแปรอินพุต', - outputVars: { - className: 'ชื่อคลาส', - usage: 'ข้อมูลการใช้งานรุ่น', - }, - class: 'ประเภท', - classNamePlaceholder: 'เขียนชื่อชั้นเรียนของคุณ', - advancedSetting: 'การตั้งค่าขั้นสูง', - topicName: 'ชื่อหัวข้อ', - topicPlaceholder: 'เขียนชื่อหัวข้อของคุณ', - addClass: 'เพิ่มชั้นเรียน', - instruction: 'การสอน', - instructionTip: 'ป้อนคําแนะนําเพิ่มเติมเพื่อช่วยให้ตัวจําแนกคําถามเข้าใจวิธีจัดหมวดหมู่คําถามได้ดียิ่งขึ้น', - instructionPlaceholder: 'เขียนคําแนะนําของคุณ', - }, - parameterExtractor: { - inputVar: 'ตัวแปรอินพุต', - outputVars: { - isSuccess: 'คือ Success เมื่อสําเร็จค่าคือ 1 เมื่อล้มเหลวค่าเป็น 0', - errorReason: 'สาเหตุข้อผิดพลาด', - usage: 'ข้อมูลการใช้งานรุ่น', - }, - extractParameters: 'แยกพารามิเตอร์', - importFromTool: 'นําเข้าจากเครื่องมือ', - addExtractParameter: 'เพิ่มพารามิเตอร์การแยกข้อมูล', - addExtractParameterContent: { - name: 'ชื่อ', - namePlaceholder: 'แยกชื่อพารามิเตอร์', - type: 'ประเภท', - typePlaceholder: 'แยกประเภทพารามิเตอร์', - description: 'คำอธิบาย', - descriptionPlaceholder: 'แยกคําอธิบายพารามิเตอร์', - required: 'ต้องระบุ', - requiredContent: 'Required ใช้เป็นข้อมูลอ้างอิงสําหรับการอนุมานแบบจําลองเท่านั้น และไม่ใช่สําหรับการตรวจสอบความถูกต้องของเอาต์พุตพารามิเตอร์ที่จําเป็น', - }, - extractParametersNotSet: 'ไม่ได้ตั้งค่าพารามิเตอร์การแยกข้อมูล', - instruction: 'การสอน', - instructionTip: 'ป้อนคําแนะนําเพิ่มเติมเพื่อช่วยให้ตัวแยกพารามิเตอร์เข้าใจวิธีการแยกพารามิเตอร์', - advancedSetting: 'การตั้งค่าขั้นสูง', - reasoningMode: 'โหมดการให้เหตุผล', - reasoningModeTip: 'คุณสามารถเลือกโหมดการให้เหตุผลที่เหมาะสมตามความสามารถของโมเดลในการตอบสนองต่อคําแนะนําสําหรับการเรียกใช้ฟังก์ชันหรือข้อความแจ้ง', - }, - iteration: { - deleteTitle: 'ลบโหนดการทําซ้ํา?', - deleteDesc: 'การลบโหนดการวนซ้ําจะเป็นการลบโหนดย่อยทั้งหมด', - input: 'อินพุต', - output: 'ตัวแปรเอาต์พุต', - iteration_one: '{{นับ}} เกิด ซ้ำ', - iteration_other: '{{นับ}} เกิด ซ้ำ', - currentIteration: 'การทําซ้ําปัจจุบัน', - comma: ',', - error_one: '{{นับ}} ความผิดพลาด', - error_other: '{{นับ}} ข้อ ผิด พลาด', - parallelMode: 'โหมดขนาน', - parallelModeUpper: 'โหมดขนาน', - parallelModeEnableTitle: 'เปิดใช้งานโหมดขนาน', - parallelModeEnableDesc: 'ในโหมดขนาน งานภายในการทําซ้ําจะสนับสนุนการดําเนินการแบบขนาน คุณสามารถกําหนดค่านี้ได้ในแผงคุณสมบัติทางด้านขวา', - parallelPanelDesc: 'ในโหมดขนาน งานในการวนซ้ําจะสนับสนุนการดําเนินการแบบขนาน', - MaxParallelismTitle: 'ความขนานสูงสุด', - MaxParallelismDesc: 'ความขนานสูงสุดใช้เพื่อควบคุมจํานวนงานที่ดําเนินการพร้อมกันในการทําซ้ําครั้งเดียว', - errorResponseMethod: 'วิธีการตอบสนองข้อผิดพลาด', - ErrorMethod: { - operationTerminated: 'ยก เลิก', - continueOnError: 'ดําเนินการต่อเมื่อเกิดข้อผิดพลาด', - removeAbnormalOutput: 'ลบเอาต์พุตที่ผิดปกติ', - }, - answerNodeWarningDesc: 'คําเตือนโหมดคู่ขนาน: โหนดคําตอบ การกําหนดตัวแปรการสนทนา และการดําเนินการอ่าน/เขียนแบบถาวรภายในการวนซ้ําอาจทําให้เกิดข้อยกเว้น', - flattenOutput: 'แบนผลลัพธ์', - flattenOutputDesc: 'เมื่อเปิดใช้งาน หากผลลัพธ์ของแต่ละรอบเป็นอาร์เรย์ทั้งหมด พวกมันจะถูกรวมเป็นอาร์เรย์เดียว เมื่อปิดใช้งาน ผลลัพธ์จะยังคงมีโครงสร้างอาร์เรย์ซ้อนกันอยู่', - }, - note: { - addNote: 'เพิ่มหมายเหตุ', - editor: { - placeholder: 'เขียนบันทึกของคุณ...', - small: 'เล็ก', - medium: 'ปานกลาง', - large: 'ใหญ่', - bold: 'กล้า', - italic: 'ตัวเอียง', - strikethrough: 'ขีดทับ', - link: 'ลิงก์', - openLink: 'เปิด', - unlink: 'ยก เลิก', - enterUrl: 'ป้อน URL...', - invalidUrl: 'URL ไม่ถูกต้อง', - bulletList: 'รายการสัญลักษณ์แสดงหัวข้อย่อย', - showAuthor: 'แสดงผู้เขียน', - }, - }, - docExtractor: { - inputVar: 'ตัวแปรอินพุต', - outputVars: { - text: 'ข้อความที่แยกออกมา', - }, - supportFileTypes: 'ประเภทไฟล์ที่รองรับ: {{types}}', - learnMore: 'ศึกษาเพิ่มเติม', - }, - listFilter: { - inputVar: 'ตัวแปรอินพุต', - filterCondition: 'เงื่อนไขการกรอง', - filterConditionKey: 'คีย์เงื่อนไขตัวกรอง', - extractsCondition: 'แยกรายการ N', - filterConditionComparisonOperator: 'ตัวดําเนินการเปรียบเทียบเงื่อนไขตัวกรอง', - filterConditionComparisonValue: 'ค่าเงื่อนไขตัวกรอง', - selectVariableKeyPlaceholder: 'เลือกคีย์ตัวแปรย่อย', - limit: 'ด้านบน N', - orderBy: 'สั่งซื้อโดย', - asc: 'เอเอสซี', - desc: 'สูง สุด', - outputVars: { - result: 'กรองผลลัพธ์', - first_record: 'บันทึกแรก', - last_record: 'บันทึกล่าสุด', - }, - }, - agent: { - strategy: { - label: 'กลยุทธ์ตัวแทน', - tooltip: 'กลยุทธ์ Agentic ที่แตกต่างกันกําหนดวิธีที่ระบบวางแผนและดําเนินการเรียกใช้เครื่องมือหลายขั้นตอน', - configureTipDesc: 'หลังจากกําหนดค่ากลยุทธ์ตัวแทนโหนดนี้จะโหลดการกําหนดค่าที่เหลือโดยอัตโนมัติ กลยุทธ์จะส่งผลต่อกลไกการให้เหตุผลของเครื่องมือหลายขั้นตอน', - configureTip: 'โปรดกําหนดค่ากลยุทธ์เอเจนต์', - searchPlaceholder: 'กลยุทธ์ตัวแทนการค้นหา', - selectTip: 'เลือกกลยุทธ์ตัวแทน', - shortLabel: 'ยุทธศาสตร์', - }, - pluginInstaller: { - installing: 'ติด ตั้ง', - install: 'ติดตั้ง', - }, - modelNotInMarketplace: { - desc: 'โมเดลนี้ติดตั้งจากที่เก็บในเครื่องหรือ GitHub กรุณาใช้หลังการติดตั้ง', - title: 'ไม่ได้ติดตั้งรุ่น', - manageInPlugins: 'จัดการในปลั๊กอิน', - }, - modelNotSupport: { - descForVersionSwitch: 'เวอร์ชันปลั๊กอินที่ติดตั้งไม่มีรุ่นนี้ คลิกเพื่อเปลี่ยนเวอร์ชัน', - title: 'รุ่นที่ไม่รองรับ', - desc: 'เวอร์ชันปลั๊กอินที่ติดตั้งไม่มีรุ่นนี้', - }, - modelSelectorTooltips: { - deprecated: 'โมเดลนี้เลิกใช้แล้ว', - }, - outputVars: { - files: { - transfer_method: 'วิธีการโอน ค่าเป็น remote_url หรือ local_file', - upload_file_id: 'อัปโหลดรหัสไฟล์', - url: 'URL ของรูปภาพ', - title: 'ไฟล์ที่สร้างตัวแทน', - type: 'ประเภทการสนับสนุน ตอนนี้รองรับเฉพาะรูปภาพ', - }, - text: 'เนื้อหาที่สร้างตัวแทน', - usage: 'ข้อมูลการใช้งานรุ่น', - json: 'ตัวแทนสร้าง JSON', - }, - checkList: { - strategyNotSelected: 'ไม่ได้เลือกกลยุทธ์', - }, - installPlugin: { - changelog: 'บันทึกการเปลี่ยนแปลง', - install: 'ติดตั้ง', - desc: 'เกี่ยวกับการติดตั้งปลั๊กอินต่อไปนี้', - title: 'ติดตั้งปลั๊กอิน', - cancel: 'ยกเลิก', - }, - toolbox: 'เครื่อง มือ', - maxIterations: 'การทําซ้ําสูงสุด', - strategyNotFoundDescAndSwitchVersion: 'เวอร์ชันปลั๊กอินที่ติดตั้งไม่มีกลยุทธ์นี้ คลิกเพื่อเปลี่ยนเวอร์ชัน', - pluginNotInstalledDesc: 'ปลั๊กอินนี้ติดตั้งจาก GitHub โปรดไปที่ปลั๊กอินเพื่อติดตั้งใหม่', - pluginNotInstalled: 'ไม่ได้ติดตั้งปลั๊กอินนี้', - toolNotInstallTooltip: '{{tool}} ไม่ได้ติดตั้ง', - modelNotInstallTooltip: 'ไม่ได้ติดตั้งรุ่นนี้', - model: 'แบบ', - strategyNotFoundDesc: 'เวอร์ชันปลั๊กอินที่ติดตั้งไม่มีกลยุทธ์นี้', - toolNotAuthorizedTooltip: '{{เครื่องมือ}} ไม่ได้รับอนุญาต', - unsupportedStrategy: 'กลยุทธ์ที่ไม่รองรับ', - strategyNotSet: 'ไม่ได้ตั้งค่ากลยุทธ์ตัวแทน', - learnMore: 'ศึกษาเพิ่มเติม', - pluginNotFoundDesc: 'ปลั๊กอินนี้ติดตั้งจาก GitHub โปรดไปที่ปลั๊กอินเพื่อติดตั้งใหม่', - notAuthorized: 'ไม่ได้รับอนุญาต', - configureModel: 'กําหนดค่าแบบจําลอง', - strategyNotInstallTooltip: '{{strategy}} ไม่ได้ติดตั้ง', - tools: 'เครื่อง มือ', - modelNotSelected: 'ไม่ได้เลือกรุ่น', - linkToPlugin: 'ลิงก์ไปยังปลั๊กอิน', - parameterSchema: 'แบบจำลองพารามิเตอร์', - clickToViewParameterSchema: 'คลิกเพื่อดูโครงร่างพารามิเตอร์', - }, - loop: { - ErrorMethod: { - removeAbnormalOutput: 'ลบผลลัพธ์ที่ผิดปกติ', - operationTerminated: 'ถูกยกเลิก', - continueOnError: 'ดำเนินการต่อเมื่อมีข้อผิดพลาด', - }, - breakCondition: 'เงื่อนไขการหยุดลูป', - output: 'ตัวแปรเอาท์พุท', - error_one: '{{count}} ข้อผิดพลาด', - loop_one: '{{count}} ลูป', - loopMaxCount: 'จำนวนรอบสูงสุด', - errorResponseMethod: 'วิธีการตอบสนองข้อผิดพลาด', - loopVariables: 'ตัวแปรลูป', - deleteDesc: 'การลบโหนดลูปจะลบโหนดลูกทั้งหมด', - deleteTitle: 'ลบโหนดลูปหรือไม่?', - error_other: '{{count}} ข้อผิดพลาด', - loop_other: '{{count}} รอบ', - loopMaxCountError: 'กรุณาใส่จำนวนรอบสูงสุดที่ถูกต้อง ซึ่งอยู่ระหว่าง 1 ถึง {{maxCount}}', - comma: ',', - loopNode: 'น็อดลูป', - totalLoopCount: 'จำนวนรอบทั้งหมด: {{count}}', - setLoopVariables: 'กำหนดตัวแปรภายในขอบเขตของลูป', - input: 'การป้อนข้อมูล', - finalLoopVariables: 'ตัวแปรในลูปสุดท้าย', - inputMode: 'โหมดการนำเข้า', - currentLoop: 'วงจรปัจจุบัน', - initialLoopVariables: 'ตัวแปรในลูปเริ่มต้น', - currentLoopCount: 'จำนวนรอบปัจจุบัน: {{count}}', - variableName: 'ชื่อ ตัวแปร', - exitConditionTip: 'โหนดลูปต้องมีเงื่อนไขการออกอย่างน้อยหนึ่งเงื่อนไข', - breakConditionTip: 'แค่ตัวแปรภายในลูปที่มีเงื่อนไขการสิ้นสุดและตัวแปรสำหรับการสนทนาเท่านั้นที่สามารถอ้างอิงได้.', - }, - dataSource: { - add: 'เพิ่มแหล่งข้อมูล', - supportedFileFormats: 'รูปแบบไฟล์ที่รองรับ', - supportedFileFormatsPlaceholder: 'นามสกุลไฟล์ e.g. doc', - }, - knowledgeBase: { - chunkStructureTip: { - learnMore: 'ศึกษาเพิ่มเติม', - title: 'โปรดเลือกโครงสร้างก้อน', - message: 'ฐานความรู้ Dify รองรับโครงสร้างการแบ่งกลุ่มสามแบบ ได้แก่ ทั่วไป ผู้ปกครอง-ลูก และถาม & ตอบ ฐานความรู้แต่ละฐานข้อมูลสามารถมีโครงสร้างได้เพียงโครงสร้างเดียว ผลลัพธ์จากโหนดก่อนหน้าต้องสอดคล้องกับโครงสร้างก้อนที่เลือก โปรดทราบว่าการเลือกโครงสร้างการแบ่งกลุ่มมีผลต่อวิธีการดัชนีที่ใช้ได้', - }, - chunkStructure: 'โครงสร้างก้อน', - chooseChunkStructure: 'เลือกโครงสร้างก้อน', - changeChunkStructure: 'เปลี่ยนโครงสร้างก้อน', - aboutRetrieval: 'เกี่ยวกับวิธีการดึงข้อมูล', - indexMethodIsRequired: 'ต้องใช้วิธีการจัดทําดัชนี', - retrievalSettingIsRequired: 'จําเป็นต้องมีการตั้งค่าการดึงข้อมูล', - chunkIsRequired: 'จําเป็นต้องมีโครงสร้างก้อน', - chunksInput: 'ชิ้นส่วน', - chunksInputTip: 'ตัวแปรนำเข้าของโหนดฐานความรู้คือ Chunks ตัวแปรประเภทเป็นอ็อบเจ็กต์ที่มี JSON Schema เฉพาะซึ่งต้องสอดคล้องกับโครงสร้างชิ้นส่วนที่เลือกไว้.', - chunksVariableIsRequired: 'ตัวแปร Chunks เป็นสิ่งจำเป็น', - embeddingModelIsRequired: 'จำเป็นต้องใช้โมเดลฝัง', - rerankingModelIsRequired: 'จำเป็นต้องมีโมเดลการจัดอันดับใหม่', - embeddingModelIsInvalid: 'แบบจำลองการฝังไม่ถูกต้อง', - rerankingModelIsInvalid: 'โมเดลการจัดอันดับใหม่ไม่ถูกต้อง', - }, - triggerPlugin: { - authorized: 'ได้รับอนุญาต', - notConfigured: 'ยังไม่ได้ตั้งค่า', - notAuthorized: 'ไม่มีสิทธิ์', - selectSubscription: 'เลือกการสมัครสมาชิก', - availableSubscriptions: 'การสมัครสมาชิกที่มีอยู่', - addSubscription: 'เพิ่มการสมัครสมาชิกใหม่', - removeSubscription: 'ยกเลิกการสมัครสมาชิก', - subscriptionRemoved: 'ยกเลิกการสมัครสมาชิกเรียบร้อยแล้ว', - error: 'ข้อผิดพลาด', - configuration: 'การกำหนดค่า', - remove: 'ลบ', - or: 'หรือ', - useOAuth: 'ใช้ OAuth', - useApiKey: 'ใช้คีย์ API', - authenticationFailed: 'การตรวจสอบล้มเหลว', - authenticationSuccess: 'ตรวจสอบสิทธิ์สำเร็จ', - oauthConfigFailed: 'การตั้งค่า OAuth ล้มเหลว', - configureOAuthClient: 'ตั้งค่าไคลเอนต์ OAuth', - oauthClientDescription: 'กำหนดค่า OAuth client credentials เพื่อเปิดใช้งานการตรวจสอบสิทธิ์', - oauthClientSaved: 'การตั้งค่าไคลเอนต์ OAuth บันทึกเรียบร้อยแล้ว', - configureApiKey: 'ตั้งค่า API Key', - apiKeyDescription: 'กำหนดค่า API key สำหรับการตรวจสอบสิทธิ์', - apiKeyConfigured: 'ตั้งค่า API key สำเร็จแล้ว', - configurationFailed: 'การตั้งค่าไม่สำเร็จ', - failedToStart: 'ไม่สามารถเริ่มกระบวนการตรวจสอบสิทธิ์ได้', - credentialsVerified: 'การยืนยันข้อมูลประจำตัวสำเร็จ', - credentialVerificationFailed: 'การตรวจสอบข้อมูลประจำตัวล้มเหลว', - verifyAndContinue: 'ยืนยันและดำเนินการต่อ', - configureParameters: 'กำหนดค่าพารามิเตอร์', - parametersDescription: 'กำหนดค่าพารามิเตอร์และคุณสมบัติของทริกเกอร์', - configurationComplete: 'การตั้งค่าเสร็จสมบูรณ์', - configurationCompleteDescription: 'การตั้งค่าทริกเกอร์ของคุณสำเร็จแล้ว', - configurationCompleteMessage: 'การตั้งค่าตัวกระตุ้นของคุณเสร็จสมบูรณ์และพร้อมใช้งานแล้ว', - parameters: 'พารามิเตอร์', - properties: 'คุณสมบัติ', - propertiesDescription: 'คุณสมบัติการกำหนดค่าที่เพิ่มเติมสำหรับตัวกระตุ้นนี้', - noConfigurationRequired: 'ไม่จำเป็นต้องตั้งค่าเพิ่มเติมสำหรับทริกเกอร์นี้', - subscriptionName: 'ชื่อการสมัครสมาชิก', - subscriptionNameDescription: 'กรอกชื่อที่ไม่ซ้ำสำหรับการสมัครตัวกระตุ้นนี้', - subscriptionNamePlaceholder: 'ใส่ชื่อการสมัครสมาชิก...', - subscriptionNameRequired: 'จำเป็นต้องระบุชื่อการสมัครสมาชิก', - subscriptionRequired: 'ต้องสมัครสมาชิก', - }, - triggerSchedule: { - title: 'ตารางเวลา', - nodeTitle: 'ทริกเกอร์ตามตาราง', - notConfigured: 'ยังไม่ได้ตั้งค่า', - useCronExpression: 'ใช้สำนวน cron', - useVisualPicker: 'ใช้ตัวเลือกแบบภาพ', - frequency: { - label: 'ความถี่', - hourly: 'รายชั่วโมง', - daily: 'ประจำวัน', - weekly: 'รายสัปดาห์', - monthly: 'รายเดือน', - }, - selectFrequency: 'เลือกความถี่', - frequencyLabel: 'ความถี่', - nextExecution: 'การดำเนินการครั้งถัดไป', - weekdays: 'วันในสัปดาห์', - time: 'เวลา', - cronExpression: 'นิพจน์ครอน', - nextExecutionTime: 'เวลาการดำเนินการครั้งถัดไป', - nextExecutionTimes: 'เวลาการประมวลผล 5 ครั้งถัดไป', - startTime: 'เวลาเริ่มต้น', - executeNow: 'ดำเนินการตอนนี้', - selectDateTime: 'เลือกวันที่และเวลา', - hours: 'ชั่วโมง', - minutes: 'นาที', - onMinute: 'ในนาที', - days: 'วัน', - lastDay: 'วันสุดท้าย', - lastDayTooltip: 'ไม่ใช่ทุกเดือนที่จะมี 31 วัน ใช้ตัวเลือก \'วันสุดท้าย\' เพื่อเลือกวันสุดท้ายของแต่ละเดือน', - mode: 'แฟชั่น', - timezone: 'เขตเวลา', - visualConfig: 'การตั้งค่าภาพ', - monthlyDay: 'วันประจำเดือน', - executionTime: 'เวลาการดำเนินการ', - invalidTimezone: 'เขตเวลาที่ไม่ถูกต้อง', - invalidCronExpression: 'นิพจน์ cron ไม่ถูกต้อง', - noValidExecutionTime: 'ไม่สามารถคำนวณเวลาการดำเนินการที่ถูกต้องได้', - executionTimeCalculationError: 'ไม่สามารถคำนวณเวลาการดำเนินการได้', - invalidFrequency: 'ความถี่ไม่ถูกต้อง', - invalidStartTime: 'เวลาเริ่มต้นไม่ถูกต้อง', - startTimeMustBeFuture: 'เวลาที่เริ่มต้นต้องเป็นเวลาที่อยู่ในอนาคต', - invalidTimeFormat: 'รูปแบบเวลาที่ไม่ถูกต้อง (ควรเป็น HH:MM AM/PM)', - invalidWeekday: 'วันในสัปดาห์ไม่ถูกต้อง: {{weekday}}', - invalidMonthlyDay: 'วันของเดือนต้องอยู่ระหว่าง 1-31 หรือ "สุดท้าย"', - invalidOnMinute: 'นาทีต้องอยู่ระหว่าง 0-59', - invalidExecutionTime: 'เวลาการดำเนินการไม่ถูกต้อง', - executionTimeMustBeFuture: 'เวลาการดำเนินการต้องเป็นอนาคต', - }, - triggerWebhook: { - title: 'ทริกเกอร์เว็บฮุค', - nodeTitle: '🔗 ทริกเกอร์เว็บฮุค', - configPlaceholder: 'การกำหนดค่า Webhook trigger จะถูกใช้งานที่นี่', - webhookUrl: 'URL เว็บฮุก', - webhookUrlPlaceholder: 'คลิกสร้างเพื่อสร้าง URL ของเว็บฮุค', - generate: 'สร้าง', - copy: 'คัดลอก', - test: 'ทดสอบ', - urlGenerated: 'สร้าง URL Webhook สำเร็จแล้ว', - urlGenerationFailed: 'ไม่สามารถสร้าง URL ของเว็บฮุคได้', - urlCopied: 'คัดลอก URL ไปยังคลิปบอร์ดแล้ว', - method: 'วิธี', - contentType: 'ประเภทเนื้อหา', - queryParameters: 'พารามิเตอร์คำค้น', - headerParameters: 'พารามิเตอร์หัวเรื่อง', - requestBodyParameters: 'พารามิเตอร์ของเนื้อคำขอ', - parameterName: 'ชื่อของตัวแปร', - varName: 'ชื่อของตัวแปร', - varType: 'พิมพ์', - varNamePlaceholder: 'ใส่ชื่อของตัวแปร...', - required: 'จำเป็น', - addParameter: 'เพิ่ม', - addHeader: 'เพิ่ม', - noParameters: 'ยังไม่ได้ตั้งค่าพารามิเตอร์', - noQueryParameters: 'ไม่มีการตั้งค่าพารามิเตอร์การค้นหา', - noHeaders: 'ยังไม่ได้ตั้งค่าเฮดเดอร์', - noBodyParameters: 'ไม่มีการกำหนดพารามิเตอร์ของร่างกาย', - debugUrlTitle: 'สำหรับการทดสอบ ให้ใช้ URL นี้เสมอ', - debugUrlCopy: 'คลิกเพื่อคัดลอก', - debugUrlCopied: 'คัดลอกแล้ว!', - debugUrlPrivateAddressWarning: 'URL นี้ดูเหมือนจะเป็นที่อยู่ภายใน ซึ่งอาจทำให้คำขอเว็บฮุคล้มเหลวได้ คุณสามารถเปลี่ยน TRIGGER_URL เป็นที่อยู่สาธารณะได้', - errorHandling: 'การจัดการข้อผิดพลาด', - errorStrategy: 'การจัดการข้อผิดพลาด', - responseConfiguration: 'การตอบสนอง', - asyncMode: 'โหมดไม่ประสานเวลา', - statusCode: 'รหัสสถานะ', - responseBody: 'ตัวตอบสนองของเนื้อหา', - responseBodyPlaceholder: 'เขียนเนื้อหาการตอบของคุณที่นี่', - headers: 'หัวข้อ', - validation: { - webhookUrlRequired: 'ต้องระบุ URL ของ Webhook', - invalidParameterType: 'ประเภทพารามิเตอร์ "{{type}}" ไม่ถูกต้องสำหรับพารามิเตอร์ "{{name}}"', - }, - }, - }, - tracing: { - stopBy: 'แวะที่ {{user}}', - }, - variableReference: { - conversationVars: 'ตัวแปรการสนทนา', - noVarsForOperation: 'ไม่มีตัวแปรที่พร้อมใช้งานสําหรับการกําหนดด้วยการดําเนินการที่เลือก', - noAvailableVars: 'ไม่มีตัวแปรที่ใช้ได้', - assignedVarsDescription: 'ตัวแปรที่กําหนดต้องเป็นตัวแปรที่เขียนได้ เช่น', - noAssignedVars: 'ไม่มีตัวแปรที่กําหนด', - }, - versionHistory: { - filter: { - onlyYours: 'เพียงของคุณเท่านั้น', - empty: 'ไม่พบประวัติการเวอร์ชันที่ตรงกัน', - onlyShowNamedVersions: 'แสดงเฉพาะรุ่นที่ตั้งชื่อ', - all: 'ทั้งหมด', - reset: 'รีเซ็ตตัวกรอง', - }, - editField: { - releaseNotes: 'บันทึกการเปิดตัว', - releaseNotesLengthLimit: 'หมายเหตุการปล่อยไม่สามารถเกิน {{limit}} ตัวอักษร', - titleLengthLimit: 'ชื่อเรื่องต้องไม่เกิน {{limit}} ตัวอักษร', - title: 'ชื่อเรื่อง', - }, - action: { - updateFailure: 'ไม่สามารถอัปเดตเวอร์ชันได้', - deleteFailure: 'ลบเวอร์ชันไม่สำเร็จ', - deleteSuccess: 'เวอร์ชันถูกลบ', - restoreSuccess: 'เวอร์ชันที่กู้คืน', - restoreFailure: 'ไม่สามารถกู้คืนเวอร์ชันได้', - updateSuccess: 'อัปเดตเวอร์ชัน', - copyIdSuccess: 'คัดลอกรหัสไปยังคลิปบอร์ด', - }, - releaseNotesPlaceholder: 'อธิบายว่าสิ่งที่เปลี่ยนแปลงไปคืออะไร', - currentDraft: 'ร่างปัจจุบัน', - editVersionInfo: 'แก้ไขข้อมูลเวอร์ชัน', - restorationTip: 'หลังจากการกู้คืนเวอร์ชันแล้ว ร่างปัจจุบันจะถูกเขียนทับ.', - defaultName: 'เวอร์ชันที่ไม่มีชื่อ', - deletionTip: 'การลบไม่สามารถย้อนกลับได้ กรุณายืนยัน.', - nameThisVersion: 'ชื่อเวอร์ชันนี้', - title: 'เวอร์ชัน', - latest: 'ล่าสุด', - copyId: 'คัดลอก ID', - }, - debug: { - noData: { - runThisNode: 'ทำงานโหนดนี้', - description: 'ผลลัพธ์จากการวิ่งครั้งล่าสุดจะแสดงที่นี่', - }, - variableInspect: { - trigger: { - stop: 'หยุดวิ่ง', - normal: 'ตรวจสอบตัวแปร', - cached: 'ดูตัวแปรที่ถูกเก็บไว้ในแคช', - clear: 'ชัดเจน', - running: 'สถานะการทำงานของการเก็บข้อมูลชั่วคราว', - }, - systemNode: 'ระบบ', - view: 'ดูบันทึก', - chatNode: 'การสนทนา', - clearAll: 'รีเซ็ตทั้งหมด', - envNode: 'สิ่งแวดล้อม', - emptyLink: 'เรียนรู้เพิ่มเติม', - edited: 'แก้ไขแล้ว', - reset: 'รีเซ็ตกลับไปยังค่าครั้งล่าสุด', - title: 'ตรวจสอบตัวแปร', - resetConversationVar: 'รีเซ็ตตัวแปรการสนทนาไปยังค่าตั้งต้น', - emptyTip: 'หลังจากก้าวผ่านโหนดบนผืนผ้าใบหรือเรียกใช้โหนดทีละขั้นตอน คุณสามารถดูค่าปัจจุบันของตัวแปรโหนดใน Variable Inspect ได้', - clearNode: 'ล้างตัวแปรที่เก็บไว้ในแคช', - export: 'ส่งออก', - exportToolTip: 'ส่งออกตัวแปรเป็นไฟล์', - largeDataNoExport: 'ข้อมูลขนาดใหญ่ - แสดงตัวอย่างบางส่วนเท่านั้น', - largeData: 'ข้อมูลขนาดใหญ่ ตัวอย่างแบบอ่านอย่างเดียว ส่งออกเพื่อดูทั้งหมด', - listening: { - title: 'กำลังรอฟังเหตุการณ์จากทริกเกอร์...', - tip: 'คุณสามารถจำลองการทริกเกอร์เหตุการณ์ได้โดยส่งคำขอทดสอบไปยังจุดสิ้นสุด HTTP {{nodeName}} หรือใช้มันเป็น URL สำหรับการดีบักเหตุการณ์แบบสด ผลลัพธ์ทั้งหมดสามารถดูได้โดยตรงในตัวตรวจสอบตัวแปร', - tipPlugin: 'ตอนนี้คุณสามารถสร้างกิจกรรมใน {{- pluginName}} และดึงผลลัพธ์จากกิจกรรมเหล่านี้ในตัวตรวจสอบตัวแปรได้แล้ว', - tipSchedule: 'กำลังรอฟังเหตุการณ์จากตัวเรียกใช้งานตามตาราง การทำงานครั้งถัดไปตามตาราง: {{nextTriggerTime}}', - tipFallback: 'รอเหตุการณ์ทริกเกอร์เข้ามา ผลลัพธ์จะแสดงที่นี่', - defaultNodeName: 'ทริกเกอร์นี้', - defaultPluginName: 'ปลั๊กอินนี้ทำงาน', - defaultScheduleTime: 'ยังไม่ได้ตั้งค่า', - selectedTriggers: 'ทริกเกอร์ที่เลือก', - stopButton: 'หยุด', - }, - }, - settingsTab: 'การตั้งค่า', - lastRunTab: 'รอบสุดท้าย', - relations: { - dependents: 'ผู้อยู่ในอุปการะ', - dependencies: 'อ้าง อิง', - dependenciesDescription: 'โหนดที่โหนดนี้อาศัย', - noDependencies: 'ไม่มีการพึ่งพา', - noDependents: 'ไม่มีผู้อยู่ในอุปการะ', - dependentsDescription: 'โหนดที่อาศัยโหนดนี้', - }, - relationsTab: 'สัมพันธ์', - copyLastRun: 'คัดลอกการทำงานล่าสุด', - noLastRunFound: 'ไม่พบการทำงานก่อนหน้า', - copyLastRunError: 'ไม่สามารถคัดลอกข้อมูลการทำงานครั้งสุดท้ายได้', - noMatchingInputsFound: 'ไม่พบข้อมูลที่ตรงกันจากการรันครั้งล่าสุด', - lastOutput: 'ผลลัพธ์สุดท้าย', - lastRunInputsCopied: '{{count}} อินพุต ถูกคัดลอกจากการรันครั้งล่าสุด', - }, - sidebar: { - exportWarning: 'ส่งออกเวอร์ชันที่บันทึกปัจจุบัน', - exportWarningDesc: 'นี่จะส่งออกเวอร์ชันที่บันทึกไว้ปัจจุบันของเวิร์กโฟลว์ของคุณ หากคุณมีการเปลี่ยนแปลงที่ยังไม่ได้บันทึกในแก้ไข กรุณาบันทึกมันก่อนโดยใช้ตัวเลือกส่งออกในผืนผ้าใบเวิร์กโฟลว์', - }, - publishLimit: { - startNodeTitlePrefix: 'อัปเกรดเป็น', - startNodeTitleSuffix: 'ปลดล็อกทริกเกอร์ไม่จำกัดต่อเวิร์กโฟลว์', - startNodeDesc: 'คุณได้ถึงขีดจำกัดของทริกเกอร์ 2 ครั้งต่อเวิร์กโฟลว์สำหรับแผนนี้แล้ว อัปเกรดเพื่อเผยแพร่เวิร์กโฟลว์นี้', - }, - error: { - startNodeRequired: 'โปรดเพิ่มโหนดเริ่มต้นก่อน {{operation}}', - operations: { - connectingNodes: 'การเชื่อมต่อโหนด', - addingNodes: 'เพิ่มโหนด', - modifyingWorkflow: 'การปรับเปลี่ยนเวิร์กโฟลว์', - updatingWorkflow: 'กำลังปรับปรุงเวิร์กโฟลว์', - }, - }, - customWebhook: 'เว็บฮุกที่กำหนดเอง', - difyTeam: 'ทีม Dify', - triggerStatus: { - enabled: 'ทริกเกอร์', - disabled: 'ทริกเกอร์ • ปิดการใช้งาน', - }, - entryNodeStatus: { - enabled: 'เริ่ม', - disabled: 'เริ่ม • ปิดใช้งาน', - }, - onboarding: { - title: 'เลือกโหนดเริ่มต้นเพื่อเริ่ม', - description: 'โหนดเริ่มต้นที่แตกต่างกันมีความสามารถที่แตกต่างกัน ไม่ต้องกังวล คุณสามารถเปลี่ยนมันได้เสมอในภายหลัง', - userInputFull: 'ข้อมูลผู้ใช้ (โหนดเริ่มต้นต้นฉบับ)', - userInputDescription: 'โหนดเริ่มต้นที่อนุญาตให้ตั้งค่าตัวแปรการป้อนข้อมูลของผู้ใช้ พร้อมความสามารถในการใช้เครื่องมือต่าง ๆ เช่น เว็บแอป, API บริการ, เซิร์ฟเวอร์ MCP และเวิร์กโฟลว์', - trigger: 'ทริกเกอร์', - triggerDescription: 'ทริกเกอร์สามารถทำหน้าที่เป็นโหนดเริ่มต้นของเวิร์กโฟลว์ได้ เช่น งานที่ตั้งเวลาไว้ เว็บฮุกแบบกำหนดเอง หรือการรวมเข้ากับแอปอื่น ๆ', - back: 'กลับ', - learnMore: 'เรียนรู้เพิ่มเติม', - aboutStartNode: 'เกี่ยวกับโหนดเริ่มต้น', - escTip: { - press: 'กด', - key: 'esc', - toDismiss: 'ปฏิเสธ', - }, - }, -} - -export default translation diff --git a/web/i18n/tr-TR/app-annotation.json b/web/i18n/tr-TR/app-annotation.json new file mode 100644 index 0000000000..fe21057c02 --- /dev/null +++ b/web/i18n/tr-TR/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "Ek Açıklamalar", + "name": "Ek Açıklama Yanıtı", + "editBy": "{{author}} tarafından düzenlendi", + "noData": { + "title": "Ek açıklama yok", + "description": "Uygulama hata ayıklaması sırasında ek açıklamaları düzenleyebilir veya yüksek kaliteli bir yanıt için burada toplu olarak ek açıklamaları içe aktarabilirsiniz." + }, + "table": { + "header": { + "question": "soru", + "answer": "cevap", + "createdAt": "oluşturulma tarihi", + "hits": "vuruşlar", + "actions": "aksiyonlar", + "addAnnotation": "Ek Açıklama Ekle", + "bulkImport": "Toplu İçe Aktarma", + "bulkExport": "Toplu Dışa Aktarma", + "clearAll": "Tüm Ek Açıklamaları Temizle", + "clearAllConfirm": "Tüm açıklamaları silinsin mi?" + } + }, + "editModal": { + "title": "Ek Açıklama Yanıtını Düzenle", + "queryName": "Kullanıcı Sorgusu", + "answerName": "Storyteller Bot", + "yourAnswer": "Senin Cevabın", + "answerPlaceholder": "Cevabınızı buraya yazın", + "yourQuery": "Senin Sorgun", + "queryPlaceholder": "Sorgunuzu buraya yazın", + "removeThisCache": "Bu Ek Açıklamayı Kaldır", + "createdAt": "Oluşturulma Tarihi" + }, + "addModal": { + "title": "Ek Açıklama Yantı Ekle", + "queryName": "Soru", + "answerName": "Cevap", + "answerPlaceholder": "Cevabı buraya yazın", + "queryPlaceholder": "Sorguyu buraya yazın", + "createNext": "Başka bir ek açıklamalı yanıt ekle" + }, + "batchModal": { + "title": "Toplu İçe Aktarma", + "csvUploadTitle": "CSV dosyanızı buraya sürükleyip bırakın veya ", + "browse": "gözatın", + "tip": "CSV dosyası aşağıdaki yapıya uygun olmalıdır:", + "question": "soru", + "answer": "cevap", + "contentTitle": "içerik parçası", + "content": "içerik", + "template": "Şablonu buradan indir", + "cancel": "İptal", + "run": "Toplu İşlemi Çalıştır", + "runError": "Toplu işlem başarısız oldu", + "processing": "Toplu işlemde", + "completed": "İçe aktarma tamamlandı", + "error": "İçe Aktarma Hatası", + "ok": "Tamam" + }, + "errorMessage": { + "answerRequired": "Cevap gerekli", + "queryRequired": "Soru gerekli" + }, + "viewModal": { + "annotatedResponse": "Ek Açıklama Yanıtı", + "hitHistory": "Vuruş Geçmişi", + "hit": "Vuruş", + "hits": "Vuruşlar", + "noHitHistory": "Vuruş geçmişi yok" + }, + "hitHistoryTable": { + "query": "Sorgu", + "match": "Eşleşme", + "response": "Yanıt", + "source": "Kaynak", + "score": "Puan", + "time": "Zaman" + }, + "initSetup": { + "title": "Ek Açıklama Yanıtı İlk Kurulum", + "configTitle": "Ek Açıklama Yanıtı Ayarı", + "confirmBtn": "Kaydet ve Etkinleştir", + "configConfirmBtn": "Kaydet" + }, + "embeddingModelSwitchTip": "Ek açıklama metin vektörleştirme modeli, model değiştirmek yeniden yerleştirilecek ve ek maliyetlere yol açacaktır.", + "list": { + "delete": { + "title": "Silmekte emin misin?" + } + }, + "batchAction": { + "delete": "Sil", + "selected": "Seçildi", + "cancel": "İptal et" + } +} diff --git a/web/i18n/tr-TR/app-annotation.ts b/web/i18n/tr-TR/app-annotation.ts deleted file mode 100644 index a5974093e8..0000000000 --- a/web/i18n/tr-TR/app-annotation.ts +++ /dev/null @@ -1,98 +0,0 @@ -const translation = { - title: 'Ek Açıklamalar', - name: 'Ek Açıklama Yanıtı', - editBy: '{{author}} tarafından düzenlendi', - noData: { - title: 'Ek açıklama yok', - description: 'Uygulama hata ayıklaması sırasında ek açıklamaları düzenleyebilir veya yüksek kaliteli bir yanıt için burada toplu olarak ek açıklamaları içe aktarabilirsiniz.', - }, - table: { - header: { - question: 'soru', - answer: 'cevap', - createdAt: 'oluşturulma tarihi', - hits: 'vuruşlar', - actions: 'aksiyonlar', - addAnnotation: 'Ek Açıklama Ekle', - bulkImport: 'Toplu İçe Aktarma', - bulkExport: 'Toplu Dışa Aktarma', - clearAll: 'Tüm Ek Açıklamaları Temizle', - clearAllConfirm: 'Tüm açıklamaları silinsin mi?', - }, - }, - editModal: { - title: 'Ek Açıklama Yanıtını Düzenle', - queryName: 'Kullanıcı Sorgusu', - answerName: 'Storyteller Bot', - yourAnswer: 'Senin Cevabın', - answerPlaceholder: 'Cevabınızı buraya yazın', - yourQuery: 'Senin Sorgun', - queryPlaceholder: 'Sorgunuzu buraya yazın', - removeThisCache: 'Bu Ek Açıklamayı Kaldır', - createdAt: 'Oluşturulma Tarihi', - }, - addModal: { - title: 'Ek Açıklama Yantı Ekle', - queryName: 'Soru', - answerName: 'Cevap', - answerPlaceholder: 'Cevabı buraya yazın', - queryPlaceholder: 'Sorguyu buraya yazın', - createNext: 'Başka bir ek açıklamalı yanıt ekle', - }, - batchModal: { - title: 'Toplu İçe Aktarma', - csvUploadTitle: 'CSV dosyanızı buraya sürükleyip bırakın veya ', - browse: 'gözatın', - tip: 'CSV dosyası aşağıdaki yapıya uygun olmalıdır:', - question: 'soru', - answer: 'cevap', - contentTitle: 'içerik parçası', - content: 'içerik', - template: 'Şablonu buradan indir', - cancel: 'İptal', - run: 'Toplu İşlemi Çalıştır', - runError: 'Toplu işlem başarısız oldu', - processing: 'Toplu işlemde', - completed: 'İçe aktarma tamamlandı', - error: 'İçe Aktarma Hatası', - ok: 'Tamam', - }, - errorMessage: { - answerRequired: 'Cevap gerekli', - queryRequired: 'Soru gerekli', - }, - viewModal: { - annotatedResponse: 'Ek Açıklama Yanıtı', - hitHistory: 'Vuruş Geçmişi', - hit: 'Vuruş', - hits: 'Vuruşlar', - noHitHistory: 'Vuruş geçmişi yok', - }, - hitHistoryTable: { - query: 'Sorgu', - match: 'Eşleşme', - response: 'Yanıt', - source: 'Kaynak', - score: 'Puan', - time: 'Zaman', - }, - initSetup: { - title: 'Ek Açıklama Yanıtı İlk Kurulum', - configTitle: 'Ek Açıklama Yanıtı Ayarı', - confirmBtn: 'Kaydet ve Etkinleştir', - configConfirmBtn: 'Kaydet', - }, - embeddingModelSwitchTip: 'Ek açıklama metin vektörleştirme modeli, model değiştirmek yeniden yerleştirilecek ve ek maliyetlere yol açacaktır.', - list: { - delete: { - title: 'Silmekte emin misin?', - }, - }, - batchAction: { - delete: 'Sil', - selected: 'Seçildi', - cancel: 'İptal et', - }, -} - -export default translation diff --git a/web/i18n/tr-TR/app-api.json b/web/i18n/tr-TR/app-api.json new file mode 100644 index 0000000000..62bc4fd2d7 --- /dev/null +++ b/web/i18n/tr-TR/app-api.json @@ -0,0 +1,83 @@ +{ + "apiServer": "API Sunucusu", + "apiKey": "API Anahtarı", + "status": "Durum", + "disabled": "Devre Dışı", + "ok": "Hizmette", + "copy": "Kopyala", + "copied": "Kopyalandı", + "play": "Oynat", + "pause": "Duraklat", + "playing": "Oynatılıyor", + "loading": "Yükleniyor", + "merMaid": { + "rerender": "Yeniden İşleme" + }, + "never": "Asla", + "apiKeyModal": { + "apiSecretKey": "API Gizli Anahtar", + "apiSecretKeyTips": "API suiistimalini önlemek için, API Anahtarınızı koruyunuz. Ön uç kodda düz metin olarak kullanmaktan kaçının. :)", + "createNewSecretKey": "Yeni Gizli Anahtar Oluştur", + "secretKey": "Gizli Anahtar", + "created": "OLUŞTURULDU", + "lastUsed": "SON KULLANIM", + "generateTips": "Bu anahtarı güvenli ve erişilebilir bir yerde saklayın." + }, + "actionMsg": { + "deleteConfirmTitle": "Bu gizli anahtarı silmek istiyor musunuz?", + "deleteConfirmTips": "Bu işlem geri alınamaz.", + "ok": "Tamam" + }, + "completionMode": { + "title": "Completion Uygulama API", + "info": "Makale, özet ve çeviri gibi yüksek kaliteli metin üretimi için, completion-messages API'sini kullanıcı girişi ile birlikte kullanın. Metin üretimi, Dify Prompt Engineering'de ayarlanan model parametrelerine ve prompt şablonlarına dayanır.", + "createCompletionApi": "Completion Mesajı Oluştur", + "createCompletionApiTip": "Soru-cevap modunu desteklemek için bir Completion Mesajı oluşturun.", + "inputsTips": "(İsteğe bağlı) Prompt Eng'deki değişkenlere karşılık gelen kullanıcı giriş alanlarını anahtar-değer çiftleri olarak sağlayın. Anahtar, değişken adıdır, Değer ise parametre değeridir. Alan türü Select ise, gönderilen Değer önceden ayarlanmış seçeneklerden biri olmalıdır.", + "queryTips": "Kullanıcı giriş metni içeriği.", + "blocking": "Bloke etme tipi, yürütmenin tamamlanmasını bekleyip sonuçları döndürme. (Süreç uzun sürerse istekler kesilebilir)", + "streaming": "Streaming döndürmeleri. SSE (Sunucu Tarafından Gönderilen Etkinlikler) tabanlı streaming döndürme uygulaması.", + "messageFeedbackApi": "Mesaj geri bildirimi (beğeni)", + "messageFeedbackApiTip": "Son kullanıcılar adına beğeni veya beğenmeme ile alınan mesajları değerlendirin. Bu veriler, Günlükler ve Ek Açıklamalar sayfasında görünür ve gelecekteki model ince ayarları için kullanılır.", + "messageIDTip": "Mesaj Kimliği", + "ratingTip": "beğeni veya beğenmeme, null geri almaktır", + "parametersApi": "Uygulama parametre bilgilerini al", + "parametersApiTip": "Değişken adları, alan adları, türleri ve varsayılan değerler dahil olmak üzere yapılandırılmış Giriş parametrelerini alın. Genellikle bu alanları bir formda görüntülemek veya istemci yüklendikten sonra varsayılan değerleri doldurmak için kullanılır." + }, + "chatMode": { + "title": "Chat Uygulama API", + "info": "Soru-Cevap formatını kullanan çok yönlü sohbet uygulamaları için, diyalogu başlatmak üzere chat-messages API'sini çağırın. conversation_id'yi ileterek devam eden konuşmaları sürdürün. Yanıt parametreleri ve şablonları, Dify Prompt Engineering ayarlarına bağlıdır.", + "createChatApi": "Sohbet mesajı oluştur", + "createChatApiTip": "Yeni bir konuşma mesajı oluşturun veya mevcut diyaloğu devam ettirin.", + "inputsTips": "(İsteğe bağlı) Prompt Eng'deki değişkenlere karşılık gelen kullanıcı giriş alanlarını anahtar-değer çiftleri olarak sağlayın. Anahtar, değişken adıdır, Değer ise parametre değeridir. Alan türü Select ise, gönderilen Değer önceden ayarlanmış seçeneklerden biri olmalıdır.", + "queryTips": "Kullanıcı girişi/soru içeriği", + "blocking": "Bloke etme tipi, yürütmenin tamamlanmasını bekleyip sonuçları döndürme. (Süreç uzun sürerse istekler kesilebilir)", + "streaming": "Streaming döndürmeleri. SSE (Sunucu Tarafından Gönderilen Etkinlikler) tabanlı streaming döndürme uygulaması.", + "conversationIdTip": "(İsteğe bağlı) Konuşma ID: ilk konuşma için boş bırakın; diyaloğu devam ettirmek için context'ten conversation_id'yi iletin.", + "messageFeedbackApi": "Mesaj son kullanıcı geri bildirimi, beğeni", + "messageFeedbackApiTip": "Son kullanıcılar adına beğeni veya beğenmeme ile alınan mesajları değerlendirin. Bu veriler, Günlükler ve Ek Açıklamalar sayfasında görünür ve gelecekteki model ince ayarları için kullanılır.", + "messageIDTip": "Mesaj Kimliği", + "ratingTip": "beğeni veya beğenmeme, null geri almaktır", + "chatMsgHistoryApi": "Sohbet geçmişi mesajı al", + "chatMsgHistoryApiTip": "İlk sayfa en son `limit` barını döndürür ve bu ters sıradadır.", + "chatMsgHistoryConversationIdTip": "Konuşma ID", + "chatMsgHistoryFirstId": "Mevcut sayfadaki ilk sohbet kaydının ID'si. Varsayılan yok.", + "chatMsgHistoryLimit": "Bir istekte kaç sohbet döndürüleceği", + "conversationsListApi": "Konuşma listesini al", + "conversationsListApiTip": "Mevcut kullanıcının oturum listesini alır. Varsayılan olarak, son 20 oturum döndürülür.", + "conversationsListFirstIdTip": "Mevcut sayfadaki son kaydın ID'si, varsayılan yok.", + "conversationsListLimitTip": "Bir istekte kaç sohbet döndürüleceği", + "conversationRenamingApi": "Konuşma yeniden adlandırma", + "conversationRenamingApiTip": "Konuşmaları yeniden adlandırın; ad, çoklu oturum istemci arayüzlerinde görüntülenir.", + "conversationRenamingNameTip": "Yeni isim", + "parametersApi": "Uygulama parametre bilgilerini al", + "parametersApiTip": "Değişken adları, alan adları, türleri ve varsayılan değerler dahil olmak üzere yapılandırılmış Giriş parametrelerini alın. Genellikle bu alanları bir formda görüntülemek veya istemci yüklendikten sonra varsayılan değerleri doldurmak için kullanılır." + }, + "develop": { + "requestBody": "Request Body", + "pathParams": "Path Params", + "query": "Query", + "toc": "Içeriği" + }, + "regenerate": "Yenilemek" +} diff --git a/web/i18n/tr-TR/app-api.ts b/web/i18n/tr-TR/app-api.ts deleted file mode 100644 index 94163093de..0000000000 --- a/web/i18n/tr-TR/app-api.ts +++ /dev/null @@ -1,85 +0,0 @@ -const translation = { - apiServer: 'API Sunucusu', - apiKey: 'API Anahtarı', - status: 'Durum', - disabled: 'Devre Dışı', - ok: 'Hizmette', - copy: 'Kopyala', - copied: 'Kopyalandı', - play: 'Oynat', - pause: 'Duraklat', - playing: 'Oynatılıyor', - loading: 'Yükleniyor', - merMaid: { - rerender: 'Yeniden İşleme', - }, - never: 'Asla', - apiKeyModal: { - apiSecretKey: 'API Gizli Anahtar', - apiSecretKeyTips: 'API suiistimalini önlemek için, API Anahtarınızı koruyunuz. Ön uç kodda düz metin olarak kullanmaktan kaçının. :)', - createNewSecretKey: 'Yeni Gizli Anahtar Oluştur', - secretKey: 'Gizli Anahtar', - created: 'OLUŞTURULDU', - lastUsed: 'SON KULLANIM', - generateTips: 'Bu anahtarı güvenli ve erişilebilir bir yerde saklayın.', - }, - actionMsg: { - deleteConfirmTitle: 'Bu gizli anahtarı silmek istiyor musunuz?', - deleteConfirmTips: 'Bu işlem geri alınamaz.', - ok: 'Tamam', - }, - completionMode: { - title: 'Completion Uygulama API', - info: 'Makale, özet ve çeviri gibi yüksek kaliteli metin üretimi için, completion-messages API\'sini kullanıcı girişi ile birlikte kullanın. Metin üretimi, Dify Prompt Engineering\'de ayarlanan model parametrelerine ve prompt şablonlarına dayanır.', - createCompletionApi: 'Completion Mesajı Oluştur', - createCompletionApiTip: 'Soru-cevap modunu desteklemek için bir Completion Mesajı oluşturun.', - inputsTips: '(İsteğe bağlı) Prompt Eng\'deki değişkenlere karşılık gelen kullanıcı giriş alanlarını anahtar-değer çiftleri olarak sağlayın. Anahtar, değişken adıdır, Değer ise parametre değeridir. Alan türü Select ise, gönderilen Değer önceden ayarlanmış seçeneklerden biri olmalıdır.', - queryTips: 'Kullanıcı giriş metni içeriği.', - blocking: 'Bloke etme tipi, yürütmenin tamamlanmasını bekleyip sonuçları döndürme. (Süreç uzun sürerse istekler kesilebilir)', - streaming: 'Streaming döndürmeleri. SSE (Sunucu Tarafından Gönderilen Etkinlikler) tabanlı streaming döndürme uygulaması.', - messageFeedbackApi: 'Mesaj geri bildirimi (beğeni)', - messageFeedbackApiTip: 'Son kullanıcılar adına beğeni veya beğenmeme ile alınan mesajları değerlendirin. Bu veriler, Günlükler ve Ek Açıklamalar sayfasında görünür ve gelecekteki model ince ayarları için kullanılır.', - messageIDTip: 'Mesaj Kimliği', - ratingTip: 'beğeni veya beğenmeme, null geri almaktır', - parametersApi: 'Uygulama parametre bilgilerini al', - parametersApiTip: 'Değişken adları, alan adları, türleri ve varsayılan değerler dahil olmak üzere yapılandırılmış Giriş parametrelerini alın. Genellikle bu alanları bir formda görüntülemek veya istemci yüklendikten sonra varsayılan değerleri doldurmak için kullanılır.', - }, - chatMode: { - title: 'Chat Uygulama API', - info: 'Soru-Cevap formatını kullanan çok yönlü sohbet uygulamaları için, diyalogu başlatmak üzere chat-messages API\'sini çağırın. conversation_id\'yi ileterek devam eden konuşmaları sürdürün. Yanıt parametreleri ve şablonları, Dify Prompt Engineering ayarlarına bağlıdır.', - createChatApi: 'Sohbet mesajı oluştur', - createChatApiTip: 'Yeni bir konuşma mesajı oluşturun veya mevcut diyaloğu devam ettirin.', - inputsTips: '(İsteğe bağlı) Prompt Eng\'deki değişkenlere karşılık gelen kullanıcı giriş alanlarını anahtar-değer çiftleri olarak sağlayın. Anahtar, değişken adıdır, Değer ise parametre değeridir. Alan türü Select ise, gönderilen Değer önceden ayarlanmış seçeneklerden biri olmalıdır.', - queryTips: 'Kullanıcı girişi/soru içeriği', - blocking: 'Bloke etme tipi, yürütmenin tamamlanmasını bekleyip sonuçları döndürme. (Süreç uzun sürerse istekler kesilebilir)', - streaming: 'Streaming döndürmeleri. SSE (Sunucu Tarafından Gönderilen Etkinlikler) tabanlı streaming döndürme uygulaması.', - conversationIdTip: '(İsteğe bağlı) Konuşma ID: ilk konuşma için boş bırakın; diyaloğu devam ettirmek için context\'ten conversation_id\'yi iletin.', - messageFeedbackApi: 'Mesaj son kullanıcı geri bildirimi, beğeni', - messageFeedbackApiTip: 'Son kullanıcılar adına beğeni veya beğenmeme ile alınan mesajları değerlendirin. Bu veriler, Günlükler ve Ek Açıklamalar sayfasında görünür ve gelecekteki model ince ayarları için kullanılır.', - messageIDTip: 'Mesaj Kimliği', - ratingTip: 'beğeni veya beğenmeme, null geri almaktır', - chatMsgHistoryApi: 'Sohbet geçmişi mesajı al', - chatMsgHistoryApiTip: 'İlk sayfa en son `limit` barını döndürür ve bu ters sıradadır.', - chatMsgHistoryConversationIdTip: 'Konuşma ID', - chatMsgHistoryFirstId: 'Mevcut sayfadaki ilk sohbet kaydının ID\'si. Varsayılan yok.', - chatMsgHistoryLimit: 'Bir istekte kaç sohbet döndürüleceği', - conversationsListApi: 'Konuşma listesini al', - conversationsListApiTip: 'Mevcut kullanıcının oturum listesini alır. Varsayılan olarak, son 20 oturum döndürülür.', - conversationsListFirstIdTip: 'Mevcut sayfadaki son kaydın ID\'si, varsayılan yok.', - conversationsListLimitTip: 'Bir istekte kaç sohbet döndürüleceği', - conversationRenamingApi: 'Konuşma yeniden adlandırma', - conversationRenamingApiTip: 'Konuşmaları yeniden adlandırın; ad, çoklu oturum istemci arayüzlerinde görüntülenir.', - conversationRenamingNameTip: 'Yeni isim', - parametersApi: 'Uygulama parametre bilgilerini al', - parametersApiTip: 'Değişken adları, alan adları, türleri ve varsayılan değerler dahil olmak üzere yapılandırılmış Giriş parametrelerini alın. Genellikle bu alanları bir formda görüntülemek veya istemci yüklendikten sonra varsayılan değerleri doldurmak için kullanılır.', - }, - develop: { - requestBody: 'Request Body', - pathParams: 'Path Params', - query: 'Query', - toc: 'Içeriği', - }, - regenerate: 'Yenilemek', -} - -export default translation diff --git a/web/i18n/tr-TR/app-debug.json b/web/i18n/tr-TR/app-debug.json new file mode 100644 index 0000000000..3187c422ca --- /dev/null +++ b/web/i18n/tr-TR/app-debug.json @@ -0,0 +1,562 @@ +{ + "pageTitle": { + "line1": "PROMPT", + "line2": "Engineering" + }, + "orchestrate": "Orchestrate", + "promptMode": { + "simple": "Tüm PROMPT'u düzenlemek için Uzman Moduna geçin", + "advanced": "Uzman Modu", + "switchBack": "Geri Dön", + "advancedWarning": { + "title": "Uzman Moduna geçtiniz ve PROMPT'u değiştirdiğinizde, temel moda geri DÖNEMEZSİNİZ.", + "description": "Uzman Modunda, tüm PROMPT'u düzenleyebilirsiniz.", + "learnMore": "Daha Fazla Bilgi", + "ok": "Tamam" + }, + "operation": { + "addMessage": "Mesaj Ekle" + }, + "contextMissing": "Bağlam bileşeni eksik, promptun etkinliği iyi olmayabilir." + }, + "operation": { + "applyConfig": "Yayınla", + "resetConfig": "Sıfırla", + "debugConfig": "Hata Ayıkla", + "addFeature": "Özellik Ekle", + "automatic": "Oluştur", + "stopResponding": "Yanıtlamayı Durdur", + "agree": "beğeni", + "disagree": "beğenmeme", + "cancelAgree": "Beğeniyi İptal Et", + "cancelDisagree": "Beğenmeme İptal Et", + "userAction": "Kullanıcı" + }, + "notSetAPIKey": { + "title": "LLM sağlayıcı anahtarı ayarlanmadı", + "trailFinished": "Deneme süresi sona erdi", + "description": "LLM sağlayıcı anahtarı ayarlanmadı, hata ayıklamadan önce ayarlanması gerekiyor.", + "settingBtn": "Ayarlar'a git" + }, + "trailUseGPT4Info": { + "title": "Şu anda gpt-4 desteklenmiyor", + "description": "Gpt-4 kullanmak için, lütfen API Anahtarını ayarlayın." + }, + "feature": { + "groupChat": { + "title": "Sohbet Geliştirme", + "description": "Uygulamalar için ön görüşme ayarları eklemek kullanıcı deneyimini artırabilir." + }, + "groupExperience": { + "title": "Deneyim Geliştirme" + }, + "conversationOpener": { + "title": "Konuşma Başlatıcı", + "description": "Bir sohbet uygulamasında, yapay zekanın kullanıcıya aktif olarak söylediği ilk cümle genellikle bir karşılama olarak kullanılır." + }, + "suggestedQuestionsAfterAnswer": { + "title": "Takip Soruları", + "description": "Sonraki soru önerilerini ayarlamak, kullanıcılara daha iyi bir sohbet deneyimi sunabilir.", + "resDes": "Kullanıcı için 3 önerilen sonraki soru.", + "tryToAsk": "Sormayı dene" + }, + "moreLikeThis": { + "title": "Bunun gibi daha fazlası", + "description": "Birden fazla metni bir kerede üretin, ardından düzenleyin ve üretmeye devam edin", + "generateNumTip": "Her üretim seferinde üretilen metin sayısı", + "tip": "Bu özelliği kullanmak ek token maliyetine yol açacaktır" + }, + "speechToText": { + "title": "Sesten Metne", + "description": "Etkinleştirildiğinde, sesli giriş kullanabilirsiniz.", + "resDes": "Sesli giriş etkinleştirildi" + }, + "textToSpeech": { + "title": "Metinden Sese", + "description": "Etkinleştirildiğinde, metin sese dönüştürülebilir.", + "resDes": "Metinden Ses dosyasına dönüştürme etkinleştirildi" + }, + "citation": { + "title": "Alıntılar ve Atıflar", + "description": "Etkinleştirildiğinde, oluşturulan içeriğin kaynak belgesi ve atıfta bulunulan bölümü gösterilir.", + "resDes": "Alıntılar ve Atıflar etkinleştirildi" + }, + "annotation": { + "title": "Ek Açıklama Yanıtı", + "description": "Benzer kullanıcı sorularıyla öncelikli eşleşme için, yüksek kaliteli yanıtları manuel olarak önbelleğe ekleyebilirsiniz.", + "resDes": "Ek Açıklama Yanıtı etkinleştirildi", + "scoreThreshold": { + "title": "Skor Eşiği", + "description": "Ek açıklama yanıtı için benzerlik eşiğini ayarlamak için kullanılır.", + "easyMatch": "Kolay Eşleşme", + "accurateMatch": "Doğru Eşleşme" + }, + "matchVariable": { + "title": "Eşleşme Değişkeni", + "choosePlaceholder": "Eşleşme değişkenini seçin" + }, + "cacheManagement": "Ek Açıklamalar", + "cached": "Ek Açıklamalı", + "remove": "Kaldır", + "removeConfirm": "Bu ek açıklamayı silmek istiyor musunuz?", + "add": "Ek açıklama ekle", + "edit": "Ek açıklamayı düzenle" + }, + "dataSet": { + "title": "Bağlam", + "noData": "Bağlam olarak Bilgi'yi içe aktarabilirsiniz", + "selectTitle": "Referans Bilgi'yi seçin", + "selected": "Bilgi seçildi", + "noDataSet": "Bilgi bulunamadı", + "toCreate": "Oluşturmaya git", + "notSupportSelectMulti": "Şu anda sadece bir Bilgi destekleniyor", + "queryVariable": { + "title": "Sorgu değişkeni", + "tip": "Bu değişken, bağlam geri alımı için sorgu girişi olarak kullanılacak ve bu değişkenin girdisiyle ilgili bağlam bilgisi elde edilecektir.", + "choosePlaceholder": "Sorgu değişkenini seçin", + "noVar": "Değişken yok", + "noVarTip": "Lütfen Değişkenler bölümünde bir değişken oluşturun", + "unableToQueryDataSet": "Bilgi sorgulanamıyor", + "unableToQueryDataSetTip": "Bilgi başarılı bir şekilde sorgulanamıyor, lütfen bağlam bölümünde bir bağlam sorgu değişkeni seçin.", + "ok": "Tamam", + "contextVarNotEmpty": "Bağlam sorgu değişkeni boş olamaz", + "deleteContextVarTitle": "Değişken \"{{varName}}\" silinsin mi?", + "deleteContextVarTip": "Bu değişken bağlam sorgu değişkeni olarak ayarlanmış, kaldırılması Bilgi'nin normal kullanımını etkileyecektir. Yine de silmek istiyorsanız, lütfen bağlam bölümünde yeniden seçin." + } + }, + "tools": { + "title": "Araçlar", + "tips": "Araçlar, kullanıcı girişi veya değişkenleri istek parametreleri olarak alarak dış verileri bağlam olarak sorgulamak için standart bir API çağrı yöntemi sağlar.", + "toolsInUse": "{{count}} araç kullanımda", + "modal": { + "title": "Araç", + "toolType": { + "title": "Araç Türü", + "placeholder": "Lütfen araç türünü seçin" + }, + "name": { + "title": "İsim", + "placeholder": "Lütfen ismi girin" + }, + "variableName": { + "title": "Değişken İsmi", + "placeholder": "Lütfen değişken ismini girin" + } + } + }, + "conversationHistory": { + "title": "Konuşma Geçmişi", + "description": "Konuşma rolleri için ön ek isimler ayarlayın", + "tip": "Konuşma Geçmişi etkin değil, lütfen promptun üst kısmında ekleyin.", + "learnMore": "Daha fazla bilgi", + "editModal": { + "title": "Konuşma Rol İsimlerini Düzenle", + "userPrefix": "Kullanıcı ön eki", + "assistantPrefix": "Asistan ön eki" + } + }, + "toolbox": { + "title": "ARAÇLAR" + }, + "moderation": { + "title": "İçerik Denetimi", + "description": "Denetim API'sini kullanarak veya bir hassas kelime listesi oluşturarak model çıktısını güvence altına alın.", + "allEnabled": "GİRİŞ/ÇIKIŞ İçeriği Etkin", + "inputEnabled": "GİRİŞ İçeriği Etkin", + "outputEnabled": "ÇIKIŞ İçeriği Etkin", + "modal": { + "title": "İçerik denetim ayarları", + "provider": { + "title": "Sağlayıcı", + "openai": "OpenAI Denetim", + "openaiTip": { + "prefix": "OpenAI Denetim, Ayarlar sayfasında yapılandırılmış bir OpenAI API anahtarı gerektirir", + "suffix": "." + }, + "keywords": "Anahtar Kelimeler" + }, + "keywords": { + "tip": "Her satırda bir tane, satır sonlarıyla ayrılmış. Satır başına en fazla 100 karakter.", + "placeholder": "Her satırda bir tane, satır sonlarıyla ayrılmış", + "line": "Satır" + }, + "content": { + "input": "GİRİŞ İçeriğini Denetle", + "output": "ÇIKIŞ İçeriğini Denetle", + "preset": "Önceden Ayarlanmış Yanıtlar", + "placeholder": "Önceden ayarlanmış yanıt içeriği buraya", + "condition": "GİRİŞ ve ÇIKIŞ İçeriği denetimi en az birinde etkin", + "fromApi": "Önceden ayarlanmış yanıtlar API tarafından döndürülür", + "errorMessage": "Önceden ayarlanmış yanıtlar boş olamaz", + "supportMarkdown": "Markdown desteklenir" + }, + "openaiNotConfig": { + "before": "OpenAI Denetim, Ayarlar sayfasında yapılandırılmış bir OpenAI API anahtarı gerektirir", + "after": "" + } + }, + "contentEnableLabel": "İçerik denetimi etkin" + }, + "fileUpload": { + "title": "Dosya Yükleme", + "description": "Sohbet giriş kutusu görüntü, belge ve diğer dosyaların yüklenmesine izin verir.", + "supportedTypes": "Desteklenen Dosya Türleri", + "numberLimit": "Maksimum yükleme sayısı", + "modalTitle": "Dosya Yükleme Ayarları" + }, + "imageUpload": { + "title": "Görüntü Yükleme", + "description": "Görüntü yüklemeye izin verir.", + "supportedTypes": "Desteklenen Dosya Türleri", + "numberLimit": "Maksimum yükleme sayısı", + "modalTitle": "Görüntü Yükleme Ayarları" + }, + "bar": { + "empty": "Web uygulaması kullanıcı deneyimini geliştirmek için özellikleri etkinleştirin", + "enableText": "Özellikler Etkinleştirildi", + "manage": "Yönet" + }, + "documentUpload": { + "title": "Belge", + "description": "Belgeyi etkinleştirmek modelin belgeleri almasına ve bunlar hakkında sorulara cevap vermesine izin verir." + }, + "audioUpload": { + "title": "Ses", + "description": "Sesi etkinleştirmek modelin transkripsiyon ve analiz için ses dosyalarını işlemesine izin verir." + } + }, + "generate": { + "title": "Prompt Oluşturucu", + "description": "Prompt Oluşturucu, yapılandırılan modeli kullanarak promptları daha iyi kalite ve yapı için optimize eder. Lütfen açık ve ayrıntılı talimatlar yazın.", + "tryIt": "Deneyin", + "instruction": "Talimatlar", + "generate": "Oluştur", + "resTitle": "Oluşturulmuş Prompt", + "apply": "Uygula", + "loading": "Uygulama orkestrasyonu yapılıyor...", + "overwriteTitle": "Mevcut yapılandırmanın üzerine yazılsın mı?", + "overwriteMessage": "Bu promptu uygulamak mevcut yapılandırmanın üzerine yazacaktır.", + "template": { + "pythonDebugger": { + "name": "Python hata ayıklayıcı", + "instruction": "Talimatlarınıza göre kod üretebilen ve hata ayıklayabilen bir bot" + }, + "translation": { + "name": "Çeviri", + "instruction": "Birden çok dili çevirebilen bir çevirmen" + }, + "professionalAnalyst": { + "name": "Profesyonel analist", + "instruction": "Uzun raporlardan içgörüleri çıkarın, riskleri belirleyin ve temel bilgileri tek bir notta özetleyin" + }, + "excelFormulaExpert": { + "name": "Excel formül uzmanı", + "instruction": "Kullanıcı talimatlarına dayalı olarak Excel formüllerini anlamaya, kullanmaya ve oluşturmaya yardımcı olan bir sohbet botu" + }, + "travelPlanning": { + "name": "Seyahat planlama", + "instruction": "Seyahat Planlama Asistanı, kullanıcıların seyahatlerini zorluk çekmeden planlamalarına yardımcı olmak için tasarlanmış akıllı bir araçtır" + }, + "SQLSorcerer": { + "name": "SQL büyücüsü", + "instruction": "Günlük dili SQL sorgularına dönüştürür" + }, + "GitGud": { + "name": "Git güd", + "instruction": "Kullanıcı tarafından açıklanan sürüm kontrol eylemlerine dayalı uygun Git komutları oluşturur" + }, + "meetingTakeaways": { + "name": "Toplantıdan alınanlar", + "instruction": "Toplantıları anahtar konular, önemli çıkarımlar ve eylem maddeleri dahil olmak üzere özlü özetlere ayırır" + }, + "writingsPolisher": { + "name": "Yazma cilalayıcı", + "instruction": "Yazılarınızı geliştirmek için ileri düzeyde kopya düzenleme teknikleri kullanır" + } + }, + "versions": "Sürümler", + "dismiss": "Reddet", + "version": "Sürüm", + "idealOutput": "İdeal Çıktı", + "press": "Basın", + "optional": "İsteğe bağlı", + "latest": "Sonuncu", + "optimizePromptTooltip": "Promp Oluşturucu'da Optimize Et", + "optimizationNote": "Optimizasyon Notu", + "to": "için", + "newNoDataLine1": "Sol sütuna bir talimat yazın ve yanıtı görmek için Üret'e tıklayın.", + "instructionPlaceHolderTitle": "Bu İstemi nasıl geliştirmek istediğinizi tanımlayın. Örneğin:", + "idealOutputPlaceholder": "İdeal yanıt formatınızı, uzunluğunu, tonunu ve içerik gereksinimlerinizi tanımlayın...", + "instructionPlaceHolderLine1": "Çıktıyı daha özlü hale getirin, ana noktaları koruyarak.", + "insertContext": "bağlamı ekleyin", + "instructionPlaceHolderLine3": "Ton çok sert, lütfen daha samimi hale getir.", + "codeGenInstructionPlaceHolderLine": "Geri bildirim ne kadar detaylı olursa, örneğin girdi ve çıktının veri türleri ile değişkenlerin nasıl işlendiği gibi, kod üretimi o kadar doğru olacaktır.", + "instructionPlaceHolderLine2": "Çıktı formatı yanlış, lütfen JSON formatını kesinlikle takip edin." + }, + "resetConfig": { + "title": "Sıfırlamayı onaylıyor musunuz?", + "message": "Sıfırlama, son yayımlanan yapılandırmaya geri yükleyerek değişiklikleri atar." + }, + "errorMessage": { + "nameOfKeyRequired": "Anahtar adı: {{key}} gerekli", + "valueOfVarRequired": "{{key}} değeri boş olamaz", + "queryRequired": "İstek metni gereklidir.", + "waitForResponse": "Önceki mesajın yanıtını tamamlamasını bekleyin.", + "waitForBatchResponse": "Toplu görevin yanıtını tamamlamasını bekleyin.", + "notSelectModel": "Lütfen bir model seçin", + "waitForImgUpload": "Lütfen görüntünün yüklenmesini bekleyin", + "waitForFileUpload": "Lütfen dosyanın/dosyaların yüklenmesini bekleyin" + }, + "chatSubTitle": "Talimatlar", + "completionSubTitle": "Ön Prompt", + "promptTip": "Promptlar, yapay zekayı talimatlar ve kısıtlamalarla yönlendirir. {{input}} gibi değişkenler ekleyin. Bu prompt, kullanıcılara görünmeyecek.", + "formattingChangedTitle": "Biçimlendirme değiştirildi", + "formattingChangedText": "Biçimlendirmeyi değiştirmek hata ayıklama alanını sıfırlayacaktır, emin misiniz?", + "variableTitle": "Değişkenler", + "variableTip": "Kullanıcılar değişkenleri bir formda doldurur ve otomatik olarak prompt içinde değişkenler değiştirilir.", + "notSetVar": "Değişkenler, kullanıcıların form doldururken prompt kelimelerini veya açılış ifadelerini getirmesine izin verir. Prompt kelimelerine \"{{input}}\" yazmayı deneyebilirsiniz.", + "autoAddVar": "Ön promptta referans verilen tanımlanmamış değişkenler, kullanıcı giriş formunda eklemek istiyor musunuz?", + "variableTable": { + "key": "Değişken Anahtarı", + "name": "Kullanıcı Giriş Alanı Adı", + "type": "Giriş Tipi", + "action": "Aksiyonlar", + "typeString": "Metin", + "typeSelect": "Seçim" + }, + "varKeyError": { + "canNoBeEmpty": "{{key}} gereklidir", + "tooLong": "{{key}} çok uzun. 30 karakterden uzun olamaz", + "notValid": "{{key}} geçersizdir. Sadece harfler, rakamlar ve altçizgiler içerebilir", + "notStartWithNumber": "{{key}} bir rakamla başlamamalıdır", + "keyAlreadyExists": "{{key}} zaten mevcut" + }, + "otherError": { + "promptNoBeEmpty": "Prompt boş olamaz", + "historyNoBeEmpty": "Konuşma geçmişi prompt'ta ayarlanmalıdır", + "queryNoBeEmpty": "Sorgu prompt'ta ayarlanmalıdır" + }, + "variableConfig": { + "addModalTitle": "Giriş Alanı Ekle", + "editModalTitle": "Giriş Alanı Düzenle", + "description": "Değişken ayarı {{varName}}", + "fieldType": "Alan türü", + "string": "Kısa Metin", + "paragraph": "Paragraf", + "select": "Seçim", + "number": "Numara", + "notSet": "Ayarlanmamış, ön promptta {{input}} yazmayı deneyin", + "stringTitle": "Form metin kutusu seçenekleri", + "maxLength": "En uzunluk", + "options": "Seçenekler", + "addOption": "Seçenek ekle", + "apiBasedVar": "API tabanlı Değişken", + "varName": "Değişken Adı", + "labelName": "Etiket Adı", + "inputPlaceholder": "Lütfen girin", + "content": "İçerik", + "required": "Gerekli", + "errorMsg": { + "labelNameRequired": "Etiket adı gereklidir", + "varNameCanBeRepeat": "Değişken adı tekrar edemez", + "atLeastOneOption": "En az bir seçenek gereklidir", + "optionRepeat": "Yinelenen seçenekler var" + }, + "defaultValue": "Varsayılan değer", + "noDefaultValue": "Varsayılan değer yok", + "selectDefaultValue": "Varsayılan değer seç", + "file": { + "image": { + "name": "Resim" + }, + "audio": { + "name": "Ses" + }, + "document": { + "name": "Belge" + }, + "video": { + "name": "Video" + }, + "custom": { + "description": "Diğer dosya türlerini belirtin.", + "createPlaceholder": " Dosya uzantısı, örneğin .doc", + "name": "Diğer dosya türleri" + }, + "supportFileTypes": "Destek Dosya Türleri" + }, + "hide": "Gizlemek", + "uploadFileTypes": "Dosya Türlerini Yükle", + "localUpload": "Yerel Yükleme", + "single-file": "Tek Dosya", + "multi-files": "Dosya Listesi", + "text-input": "Kısa Metin", + "both": "Her ikisi", + "maxNumberOfUploads": "Maksimum yükleme sayısı", + "checkbox": "Onay kutusu", + "json": "JSON Kodu", + "optional": "isteğe bağlı", + "jsonSchema": "JSON Şeması", + "unit": "Birim", + "displayName": "Görünen Ad", + "startChecked": "Kontrol edilmeye başla", + "startSelectedOption": "Seçili seçeneği başlat", + "tooltipsPlaceholder": "Etiketin üzerine gelindiğinde gösterilen yardımcı metni girin", + "unitPlaceholder": "Sayılardan sonra birimleri görüntüleyin, örneğin belirteçler", + "showAllSettings": "Tüm Ayarları Göster", + "tooltips": "Araç İpuçları", + "noDefaultSelected": "Seçmeyin", + "uploadMethod": "Yükleme Yöntemi", + "placeholder": "Yer tutucu", + "placeholderPlaceholder": "Alan boş olduğunda görüntülenecek metni girin", + "defaultValuePlaceholder": "Alanı önceden doldurmak için varsayılan değeri girin", + "maxNumberTip": "Belge < {{docLimit}}, resim < {{imgLimit}}, ses < {{audioLimit}}, video < {{videoLimit}}" + }, + "vision": { + "name": "Görüş", + "description": "Görüş etkinleştirildiğinde modelin görüntüleri almasını ve bunlarla ilgili soruları yanıtlamasını sağlar.", + "settings": "Ayarlar", + "visionSettings": { + "title": "Görüş Ayarları", + "resolution": "Çözünürlük", + "resolutionTooltip": "Düşük çözünürlük, modelin görüntünün düşük çözünürlüklü 512 x 512 versiyonunu almasını sağlar ve görüntüyü 65 token bütçesiyle temsil eder. Bu, API'nin daha hızlı yanıtlar dönmesini ve daha az giriş tokeni tüketmesini sağlar ve bu yüksek detay gerektirmeyen kullanım durumları için uygundur.\nYüksek çözünürlük, modelin önce düşük çözünürlüklü görüntüyü görmesini sağlar ve ardından giriş görüntüsünün boyutuna göre 512 piksel kareler olarak detaylı kırpma işlemleri gerçekleştirir. Her bir detaylı kırpma işlemi toplamda 129 token bütçesi kullanır.", + "high": "Yüksek", + "low": "Düşük", + "uploadMethod": "Yükleme Yöntemi", + "both": "Her İkisi", + "localUpload": "Yerel Yükleme", + "url": "URL", + "uploadLimit": "Yükleme Limiti" + }, + "onlySupportVisionModelTip": "Yalnızca görme modellerini destekler" + }, + "voice": { + "name": "Konuşma", + "defaultDisplay": "Varsayılan Ses", + "description": "Metinden sese ses ayarları", + "settings": "Ayarlar", + "voiceSettings": { + "title": "Ses Ayarları", + "language": "Dil", + "resolutionTooltip": "Metinden sese ses destek dili.", + "voice": "Ses", + "autoPlay": "Otomatik Oynatma", + "autoPlayEnabled": "Açık", + "autoPlayDisabled": "Kapalı" + } + }, + "openingStatement": { + "title": "Konuşma Başlatıcı", + "add": "Ekle", + "writeOpener": "Başlangıç mesajı yaz", + "placeholder": "Başlangıç mesajınızı buraya yazın, değişkenler kullanabilirsiniz, örneğin {{variable}} yazmayı deneyin.", + "openingQuestion": "Açılış Soruları", + "openingQuestionPlaceholder": "Değişkenler kullanabilirsiniz, {{variable}} yazmayı deneyin.", + "noDataPlaceHolder": "Kullanıcı ile konuşmayı başlatmak, AI'ın konuşma uygulamalarında onlarla daha yakın bir bağlantı kurmasına yardımcı olabilir.", + "varTip": "Değişkenler kullanabilirsiniz, örneğin {{variable}} yazmayı deneyin", + "tooShort": "Konuşma için açılış ifadeleri oluşturmak için en az 20 kelimelik başlangıç promptu gereklidir.", + "notIncludeKey": "Başlangıç promptu değişkeni içermiyor: {{key}}. Lütfen bunu başlangıç promptuna ekleyin." + }, + "modelConfig": { + "model": "Model", + "setTone": "Yanıtların tonunu ayarla", + "title": "Model ve Parametreler", + "modeType": { + "chat": "Sohbet", + "completion": "Tamamlama" + } + }, + "inputs": { + "title": "Hata ayıklama ve Önizleme", + "noPrompt": "Ön prompt girişine bazı promptlar yazmayı deneyin", + "userInputField": "Kullanıcı Giriş Alanı", + "noVar": "Yeni bir oturum başlatıldığında prompt kelimesinde otomatik olarak değiştirilecek değişkenin değerini doldurun.", + "chatVarTip": "Yeni bir oturum başlatıldığında prompt kelimesinde otomatik olarak değiştirilecek değişkenin değerini doldurun", + "completionVarTip": "Her soru gönderildiğinde prompt kelimelerinde otomatik olarak değiştirilecek değişkenin değerini doldurun.", + "previewTitle": "Prompt önizleme", + "queryTitle": "Sorgu içeriği", + "queryPlaceholder": "Lütfen istek metnini girin.", + "run": "ÇALIŞTIR" + }, + "result": "Çıktı Metni", + "datasetConfig": { + "settingTitle": "Geri Alım Ayarları", + "knowledgeTip": "Bilgi eklemek için “+” düğmesine tıklayın", + "retrieveOneWay": { + "title": "N-to-1 geri alım", + "description": "Kullanıcı niyetine ve Bilgi tanımına dayanarak, Agent en iyi Bilgi'yi sorgulamak için özerk bir şekilde seçer. Belirgin, sınırlı Bilgi bulunan uygulamalar için en iyisidir." + }, + "retrieveMultiWay": { + "title": "Çoklu yol geri alım", + "description": "Kullanıcı niyetine dayanarak, tüm Bilgilerde sorgular, çoklu kaynaklardan ilgili metni alır ve yeniden sıraladıktan sonra kullanıcı sorgusuyla eşleşen en iyi sonuçları seçer." + }, + "rerankModelRequired": "Rerank modeli gereklidir", + "params": "Parametreler", + "top_k": "En İyi K", + "top_kTip": "Kullanıcı sorularına en çok benzeyen parçaları filtrelemek için kullanılır. Sistem ayrıca en iyi K değerini, seçilen modelin max_tokens'a göre dinamik olarak ayarlar.", + "score_threshold": "Skor Eşiği", + "score_thresholdTip": "Parça filtreleme için benzerlik eşiğini ayarlamak için kullanılır.", + "retrieveChangeTip": "Dizin modunu ve geri alım modunu değiştirmek, bu Bilgi ile ilişkili uygulamaları etkileyebilir.", + "embeddingModelRequired": "Yapılandırılmış bir Gömme Modeli gereklidir" + }, + "debugAsSingleModel": "Tek Model Olarak Hata Ayıkla", + "debugAsMultipleModel": "Çoklu Model Olarak Hata Ayıkla", + "duplicateModel": "Çoğalt", + "publishAs": "Olarak Yayınla", + "assistantType": { + "name": "Asistan Türü", + "chatAssistant": { + "name": "Temel Asistan", + "description": "Büyük Dil Modeli kullanarak sohbet tabanlı bir asistan oluşturun" + }, + "agentAssistant": { + "name": "Agent Asistanı", + "description": "Görevleri tamamlamak için araçları özerk bir şekilde seçebilen bir zeki Agent oluşturun" + } + }, + "agent": { + "agentMode": "Agent Modu", + "agentModeDes": "Agent için çıkarım modunu ayarlayın", + "agentModeType": { + "ReACT": "ReAct", + "functionCall": "Fonksiyon Çağrısı" + }, + "setting": { + "name": "Agent Ayarları", + "description": "Agent Asistanı ayarları, Agent modunu ve yerleşik promptlar gibi gelişmiş özellikleri ayarlamanıza olanak tanır. Sadece Agent türünde kullanılabilir.", + "maximumIterations": { + "name": "Maksimum Yineleme", + "description": "Bir Agent asistanının gerçekleştirebileceği yineleme sayısını sınırlayın" + } + }, + "buildInPrompt": "Yerleşik Prompt", + "firstPrompt": "İlk Prompt", + "nextIteration": "Sonraki Yineleme", + "promptPlaceholder": "Promptunuzu buraya yazın", + "tools": { + "name": "Araçlar", + "description": "Araçlar kullanmak, internette arama yapmak veya bilimsel hesaplamalar yapmak gibi LLM yeteneklerini genişletebilir", + "enabled": "Etkinleştirildi" + } + }, + "codegen": { + "generatedCodeTitle": "Oluşturulan Kod", + "overwriteConfirmTitle": "Mevcut kodun üzerine yazılsın mı?", + "applyChanges": "Değişiklikleri Uygula", + "generate": "Oluşturmak", + "noDataLine2": "Kod önizlemesi burada gösterilecektir.", + "title": "Kod Oluşturucu", + "apply": "Uygulamak", + "instructionPlaceholder": "Oluşturmak istediğiniz kodun ayrıntılı açıklamasını girin.", + "description": "Kod Oluşturucu, talimatlarınıza göre yüksek kaliteli kod oluşturmak için yapılandırılmış modelleri kullanır. Lütfen açık ve ayrıntılı talimatlar verin.", + "resTitle": "Oluşturulan Kod", + "noDataLine1": "Solda kullanım durumunuzu açıklayın,", + "loading": "Kod oluşturuluyor...", + "instruction": "Talimat -ları", + "overwriteConfirmMessage": "Bu eylem mevcut kodun üzerine yazacaktır. Devam etmek istiyor musunuz?" + }, + "warningMessage": { + "timeoutExceeded": "Zaman aşımı nedeniyle sonuçlar görüntülenmez. Tam sonuçları almak için lütfen günlüklere bakın." + }, + "noResult": "Çıktı burada görüntülenecektir." +} diff --git a/web/i18n/tr-TR/app-debug.ts b/web/i18n/tr-TR/app-debug.ts deleted file mode 100644 index 811ca4e53f..0000000000 --- a/web/i18n/tr-TR/app-debug.ts +++ /dev/null @@ -1,571 +0,0 @@ -const translation = { - pageTitle: { - line1: 'PROMPT', - line2: 'Engineering', - }, - orchestrate: 'Orchestrate', - promptMode: { - simple: 'Tüm PROMPT\'u düzenlemek için Uzman Moduna geçin', - advanced: 'Uzman Modu', - switchBack: 'Geri Dön', - advancedWarning: { - title: 'Uzman Moduna geçtiniz ve PROMPT\'u değiştirdiğinizde, temel moda geri DÖNEMEZSİNİZ.', - description: 'Uzman Modunda, tüm PROMPT\'u düzenleyebilirsiniz.', - learnMore: 'Daha Fazla Bilgi', - ok: 'Tamam', - }, - operation: { - addMessage: 'Mesaj Ekle', - }, - contextMissing: 'Bağlam bileşeni eksik, promptun etkinliği iyi olmayabilir.', - }, - operation: { - applyConfig: 'Yayınla', - resetConfig: 'Sıfırla', - debugConfig: 'Hata Ayıkla', - addFeature: 'Özellik Ekle', - automatic: 'Oluştur', - stopResponding: 'Yanıtlamayı Durdur', - agree: 'beğeni', - disagree: 'beğenmeme', - cancelAgree: 'Beğeniyi İptal Et', - cancelDisagree: 'Beğenmeme İptal Et', - userAction: 'Kullanıcı', - }, - notSetAPIKey: { - title: 'LLM sağlayıcı anahtarı ayarlanmadı', - trailFinished: 'Deneme süresi sona erdi', - description: 'LLM sağlayıcı anahtarı ayarlanmadı, hata ayıklamadan önce ayarlanması gerekiyor.', - settingBtn: 'Ayarlar\'a git', - }, - trailUseGPT4Info: { - title: 'Şu anda gpt-4 desteklenmiyor', - description: 'Gpt-4 kullanmak için, lütfen API Anahtarını ayarlayın.', - }, - feature: { - groupChat: { - title: 'Sohbet Geliştirme', - description: 'Uygulamalar için ön görüşme ayarları eklemek kullanıcı deneyimini artırabilir.', - }, - groupExperience: { - title: 'Deneyim Geliştirme', - }, - conversationOpener: { - title: 'Konuşma Başlatıcı', - description: 'Bir sohbet uygulamasında, yapay zekanın kullanıcıya aktif olarak söylediği ilk cümle genellikle bir karşılama olarak kullanılır.', - }, - suggestedQuestionsAfterAnswer: { - title: 'Takip Soruları', - description: 'Sonraki soru önerilerini ayarlamak, kullanıcılara daha iyi bir sohbet deneyimi sunabilir.', - resDes: 'Kullanıcı için 3 önerilen sonraki soru.', - tryToAsk: 'Sormayı dene', - }, - moreLikeThis: { - title: 'Bunun gibi daha fazlası', - description: 'Birden fazla metni bir kerede üretin, ardından düzenleyin ve üretmeye devam edin', - generateNumTip: 'Her üretim seferinde üretilen metin sayısı', - tip: 'Bu özelliği kullanmak ek token maliyetine yol açacaktır', - }, - speechToText: { - title: 'Sesten Metne', - description: 'Etkinleştirildiğinde, sesli giriş kullanabilirsiniz.', - resDes: 'Sesli giriş etkinleştirildi', - }, - textToSpeech: { - title: 'Metinden Sese', - description: 'Etkinleştirildiğinde, metin sese dönüştürülebilir.', - resDes: 'Metinden Ses dosyasına dönüştürme etkinleştirildi', - }, - citation: { - title: 'Alıntılar ve Atıflar', - description: 'Etkinleştirildiğinde, oluşturulan içeriğin kaynak belgesi ve atıfta bulunulan bölümü gösterilir.', - resDes: 'Alıntılar ve Atıflar etkinleştirildi', - }, - annotation: { - title: 'Ek Açıklama Yanıtı', - description: 'Benzer kullanıcı sorularıyla öncelikli eşleşme için, yüksek kaliteli yanıtları manuel olarak önbelleğe ekleyebilirsiniz.', - resDes: 'Ek Açıklama Yanıtı etkinleştirildi', - scoreThreshold: { - title: 'Skor Eşiği', - description: 'Ek açıklama yanıtı için benzerlik eşiğini ayarlamak için kullanılır.', - easyMatch: 'Kolay Eşleşme', - accurateMatch: 'Doğru Eşleşme', - }, - matchVariable: { - title: 'Eşleşme Değişkeni', - choosePlaceholder: 'Eşleşme değişkenini seçin', - }, - cacheManagement: 'Ek Açıklamalar', - cached: 'Ek Açıklamalı', - remove: 'Kaldır', - removeConfirm: 'Bu ek açıklamayı silmek istiyor musunuz?', - add: 'Ek açıklama ekle', - edit: 'Ek açıklamayı düzenle', - }, - dataSet: { - title: 'Bağlam', - noData: 'Bağlam olarak Bilgi\'yi içe aktarabilirsiniz', - selectTitle: 'Referans Bilgi\'yi seçin', - selected: 'Bilgi seçildi', - noDataSet: 'Bilgi bulunamadı', - toCreate: 'Oluşturmaya git', - notSupportSelectMulti: 'Şu anda sadece bir Bilgi destekleniyor', - queryVariable: { - title: 'Sorgu değişkeni', - tip: 'Bu değişken, bağlam geri alımı için sorgu girişi olarak kullanılacak ve bu değişkenin girdisiyle ilgili bağlam bilgisi elde edilecektir.', - choosePlaceholder: 'Sorgu değişkenini seçin', - noVar: 'Değişken yok', - noVarTip: 'Lütfen Değişkenler bölümünde bir değişken oluşturun', - unableToQueryDataSet: 'Bilgi sorgulanamıyor', - unableToQueryDataSetTip: 'Bilgi başarılı bir şekilde sorgulanamıyor, lütfen bağlam bölümünde bir bağlam sorgu değişkeni seçin.', - ok: 'Tamam', - contextVarNotEmpty: 'Bağlam sorgu değişkeni boş olamaz', - deleteContextVarTitle: 'Değişken "{{varName}}" silinsin mi?', - deleteContextVarTip: 'Bu değişken bağlam sorgu değişkeni olarak ayarlanmış, kaldırılması Bilgi\'nin normal kullanımını etkileyecektir. Yine de silmek istiyorsanız, lütfen bağlam bölümünde yeniden seçin.', - }, - }, - tools: { - title: 'Araçlar', - tips: 'Araçlar, kullanıcı girişi veya değişkenleri istek parametreleri olarak alarak dış verileri bağlam olarak sorgulamak için standart bir API çağrı yöntemi sağlar.', - toolsInUse: '{{count}} araç kullanımda', - modal: { - title: 'Araç', - toolType: { - title: 'Araç Türü', - placeholder: 'Lütfen araç türünü seçin', - }, - name: { - title: 'İsim', - placeholder: 'Lütfen ismi girin', - }, - variableName: { - title: 'Değişken İsmi', - placeholder: 'Lütfen değişken ismini girin', - }, - }, - }, - conversationHistory: { - title: 'Konuşma Geçmişi', - description: 'Konuşma rolleri için ön ek isimler ayarlayın', - tip: 'Konuşma Geçmişi etkin değil, lütfen promptun üst kısmında ekleyin.', - learnMore: 'Daha fazla bilgi', - editModal: { - title: 'Konuşma Rol İsimlerini Düzenle', - userPrefix: 'Kullanıcı ön eki', - assistantPrefix: 'Asistan ön eki', - }, - }, - toolbox: { - title: 'ARAÇLAR', - }, - moderation: { - title: 'İçerik Denetimi', - description: 'Denetim API\'sini kullanarak veya bir hassas kelime listesi oluşturarak model çıktısını güvence altına alın.', - allEnabled: 'GİRİŞ/ÇIKIŞ İçeriği Etkin', - inputEnabled: 'GİRİŞ İçeriği Etkin', - outputEnabled: 'ÇIKIŞ İçeriği Etkin', - modal: { - title: 'İçerik denetim ayarları', - provider: { - title: 'Sağlayıcı', - openai: 'OpenAI Denetim', - openaiTip: { - prefix: 'OpenAI Denetim, Ayarlar sayfasında yapılandırılmış bir OpenAI API anahtarı gerektirir', - suffix: '.', - }, - keywords: 'Anahtar Kelimeler', - }, - keywords: { - tip: 'Her satırda bir tane, satır sonlarıyla ayrılmış. Satır başına en fazla 100 karakter.', - placeholder: 'Her satırda bir tane, satır sonlarıyla ayrılmış', - line: 'Satır', - }, - content: { - input: 'GİRİŞ İçeriğini Denetle', - output: 'ÇIKIŞ İçeriğini Denetle', - preset: 'Önceden Ayarlanmış Yanıtlar', - placeholder: 'Önceden ayarlanmış yanıt içeriği buraya', - condition: 'GİRİŞ ve ÇIKIŞ İçeriği denetimi en az birinde etkin', - fromApi: 'Önceden ayarlanmış yanıtlar API tarafından döndürülür', - errorMessage: 'Önceden ayarlanmış yanıtlar boş olamaz', - supportMarkdown: 'Markdown desteklenir', - }, - openaiNotConfig: { - before: 'OpenAI Denetim, Ayarlar sayfasında yapılandırılmış bir OpenAI API anahtarı gerektirir', - after: '', - }, - }, - contentEnableLabel: 'İçerik denetimi etkin', - }, - fileUpload: { - title: 'Dosya Yükleme', - description: 'Sohbet giriş kutusu görüntü, belge ve diğer dosyaların yüklenmesine izin verir.', - supportedTypes: 'Desteklenen Dosya Türleri', - numberLimit: 'Maksimum yükleme sayısı', - modalTitle: 'Dosya Yükleme Ayarları', - }, - imageUpload: { - title: 'Görüntü Yükleme', - description: 'Görüntü yüklemeye izin verir.', - supportedTypes: 'Desteklenen Dosya Türleri', - numberLimit: 'Maksimum yükleme sayısı', - modalTitle: 'Görüntü Yükleme Ayarları', - }, - bar: { - empty: 'Web uygulaması kullanıcı deneyimini geliştirmek için özellikleri etkinleştirin', - enableText: 'Özellikler Etkinleştirildi', - manage: 'Yönet', - }, - documentUpload: { - title: 'Belge', - description: 'Belgeyi etkinleştirmek modelin belgeleri almasına ve bunlar hakkında sorulara cevap vermesine izin verir.', - }, - audioUpload: { - title: 'Ses', - description: 'Sesi etkinleştirmek modelin transkripsiyon ve analiz için ses dosyalarını işlemesine izin verir.', - }, - }, - generate: { - title: 'Prompt Oluşturucu', - description: 'Prompt Oluşturucu, yapılandırılan modeli kullanarak promptları daha iyi kalite ve yapı için optimize eder. Lütfen açık ve ayrıntılı talimatlar yazın.', - tryIt: 'Deneyin', - instruction: 'Talimatlar', - generate: 'Oluştur', - resTitle: 'Oluşturulmuş Prompt', - apply: 'Uygula', - loading: 'Uygulama orkestrasyonu yapılıyor...', - overwriteTitle: 'Mevcut yapılandırmanın üzerine yazılsın mı?', - overwriteMessage: 'Bu promptu uygulamak mevcut yapılandırmanın üzerine yazacaktır.', - template: { - pythonDebugger: { - name: 'Python hata ayıklayıcı', - instruction: 'Talimatlarınıza göre kod üretebilen ve hata ayıklayabilen bir bot', - }, - translation: { - name: 'Çeviri', - instruction: 'Birden çok dili çevirebilen bir çevirmen', - }, - professionalAnalyst: { - name: 'Profesyonel analist', - instruction: 'Uzun raporlardan içgörüleri çıkarın, riskleri belirleyin ve temel bilgileri tek bir notta özetleyin', - }, - excelFormulaExpert: { - name: 'Excel formül uzmanı', - instruction: 'Kullanıcı talimatlarına dayalı olarak Excel formüllerini anlamaya, kullanmaya ve oluşturmaya yardımcı olan bir sohbet botu', - }, - travelPlanning: { - name: 'Seyahat planlama', - instruction: 'Seyahat Planlama Asistanı, kullanıcıların seyahatlerini zorluk çekmeden planlamalarına yardımcı olmak için tasarlanmış akıllı bir araçtır', - }, - SQLSorcerer: { - name: 'SQL büyücüsü', - instruction: 'Günlük dili SQL sorgularına dönüştürür', - }, - GitGud: { - name: 'Git güd', - instruction: 'Kullanıcı tarafından açıklanan sürüm kontrol eylemlerine dayalı uygun Git komutları oluşturur', - }, - meetingTakeaways: { - name: 'Toplantıdan alınanlar', - instruction: 'Toplantıları anahtar konular, önemli çıkarımlar ve eylem maddeleri dahil olmak üzere özlü özetlere ayırır', - }, - writingsPolisher: { - name: 'Yazma cilalayıcı', - instruction: 'Yazılarınızı geliştirmek için ileri düzeyde kopya düzenleme teknikleri kullanır', - }, - }, - versions: 'Sürümler', - dismiss: 'Reddet', - version: 'Sürüm', - idealOutput: 'İdeal Çıktı', - press: 'Basın', - optional: 'İsteğe bağlı', - latest: 'Sonuncu', - optimizePromptTooltip: 'Promp Oluşturucu\'da Optimize Et', - optimizationNote: 'Optimizasyon Notu', - to: 'için', - newNoDataLine1: 'Sol sütuna bir talimat yazın ve yanıtı görmek için Üret\'e tıklayın.', - instructionPlaceHolderTitle: 'Bu İstemi nasıl geliştirmek istediğinizi tanımlayın. Örneğin:', - idealOutputPlaceholder: 'İdeal yanıt formatınızı, uzunluğunu, tonunu ve içerik gereksinimlerinizi tanımlayın...', - instructionPlaceHolderLine1: 'Çıktıyı daha özlü hale getirin, ana noktaları koruyarak.', - insertContext: 'bağlamı ekleyin', - instructionPlaceHolderLine3: 'Ton çok sert, lütfen daha samimi hale getir.', - codeGenInstructionPlaceHolderLine: 'Geri bildirim ne kadar detaylı olursa, örneğin girdi ve çıktının veri türleri ile değişkenlerin nasıl işlendiği gibi, kod üretimi o kadar doğru olacaktır.', - instructionPlaceHolderLine2: 'Çıktı formatı yanlış, lütfen JSON formatını kesinlikle takip edin.', - }, - resetConfig: { - title: 'Sıfırlamayı onaylıyor musunuz?', - message: - 'Sıfırlama, son yayımlanan yapılandırmaya geri yükleyerek değişiklikleri atar.', - }, - errorMessage: { - nameOfKeyRequired: 'Anahtar adı: {{key}} gerekli', - valueOfVarRequired: '{{key}} değeri boş olamaz', - queryRequired: 'İstek metni gereklidir.', - waitForResponse: - 'Önceki mesajın yanıtını tamamlamasını bekleyin.', - waitForBatchResponse: - 'Toplu görevin yanıtını tamamlamasını bekleyin.', - notSelectModel: 'Lütfen bir model seçin', - waitForImgUpload: 'Lütfen görüntünün yüklenmesini bekleyin', - waitForFileUpload: 'Lütfen dosyanın/dosyaların yüklenmesini bekleyin', - }, - chatSubTitle: 'Talimatlar', - completionSubTitle: 'Ön Prompt', - promptTip: - 'Promptlar, yapay zekayı talimatlar ve kısıtlamalarla yönlendirir. {{input}} gibi değişkenler ekleyin. Bu prompt, kullanıcılara görünmeyecek.', - formattingChangedTitle: 'Biçimlendirme değiştirildi', - formattingChangedText: - 'Biçimlendirmeyi değiştirmek hata ayıklama alanını sıfırlayacaktır, emin misiniz?', - variableTitle: 'Değişkenler', - variableTip: - 'Kullanıcılar değişkenleri bir formda doldurur ve otomatik olarak prompt içinde değişkenler değiştirilir.', - notSetVar: 'Değişkenler, kullanıcıların form doldururken prompt kelimelerini veya açılış ifadelerini getirmesine izin verir. Prompt kelimelerine "{{input}}" yazmayı deneyebilirsiniz.', - autoAddVar: 'Ön promptta referans verilen tanımlanmamış değişkenler, kullanıcı giriş formunda eklemek istiyor musunuz?', - variableTable: { - key: 'Değişken Anahtarı', - name: 'Kullanıcı Giriş Alanı Adı', - type: 'Giriş Tipi', - action: 'Aksiyonlar', - typeString: 'Metin', - typeSelect: 'Seçim', - }, - varKeyError: { - canNoBeEmpty: '{{key}} gereklidir', - tooLong: '{{key}} çok uzun. 30 karakterden uzun olamaz', - notValid: '{{key}} geçersizdir. Sadece harfler, rakamlar ve altçizgiler içerebilir', - notStartWithNumber: '{{key}} bir rakamla başlamamalıdır', - keyAlreadyExists: '{{key}} zaten mevcut', - }, - otherError: { - promptNoBeEmpty: 'Prompt boş olamaz', - historyNoBeEmpty: 'Konuşma geçmişi prompt\'ta ayarlanmalıdır', - queryNoBeEmpty: 'Sorgu prompt\'ta ayarlanmalıdır', - }, - variableConfig: { - 'addModalTitle': 'Giriş Alanı Ekle', - 'editModalTitle': 'Giriş Alanı Düzenle', - 'description': 'Değişken ayarı {{varName}}', - 'fieldType': 'Alan türü', - 'string': 'Kısa Metin', - 'paragraph': 'Paragraf', - 'select': 'Seçim', - 'number': 'Numara', - 'notSet': 'Ayarlanmamış, ön promptta {{input}} yazmayı deneyin', - 'stringTitle': 'Form metin kutusu seçenekleri', - 'maxLength': 'En uzunluk', - 'options': 'Seçenekler', - 'addOption': 'Seçenek ekle', - 'apiBasedVar': 'API tabanlı Değişken', - 'varName': 'Değişken Adı', - 'labelName': 'Etiket Adı', - 'inputPlaceholder': 'Lütfen girin', - 'content': 'İçerik', - 'required': 'Gerekli', - 'errorMsg': { - labelNameRequired: 'Etiket adı gereklidir', - varNameCanBeRepeat: 'Değişken adı tekrar edemez', - atLeastOneOption: 'En az bir seçenek gereklidir', - optionRepeat: 'Yinelenen seçenekler var', - }, - 'defaultValue': 'Varsayılan değer', - 'noDefaultValue': 'Varsayılan değer yok', - 'selectDefaultValue': 'Varsayılan değer seç', - 'file': { - image: { - name: 'Resim', - }, - audio: { - name: 'Ses', - }, - document: { - name: 'Belge', - }, - video: { - name: 'Video', - }, - custom: { - description: 'Diğer dosya türlerini belirtin.', - createPlaceholder: ' Dosya uzantısı, örneğin .doc', - name: 'Diğer dosya türleri', - }, - supportFileTypes: 'Destek Dosya Türleri', - }, - 'hide': 'Gizlemek', - 'uploadFileTypes': 'Dosya Türlerini Yükle', - 'localUpload': 'Yerel Yükleme', - 'single-file': 'Tek Dosya', - 'multi-files': 'Dosya Listesi', - 'text-input': 'Kısa Metin', - 'both': 'Her ikisi', - 'maxNumberOfUploads': 'Maksimum yükleme sayısı', - 'checkbox': 'Onay kutusu', - 'json': 'JSON Kodu', - 'optional': 'isteğe bağlı', - 'jsonSchema': 'JSON Şeması', - 'unit': 'Birim', - 'displayName': 'Görünen Ad', - 'startChecked': 'Kontrol edilmeye başla', - 'startSelectedOption': 'Seçili seçeneği başlat', - 'tooltipsPlaceholder': 'Etiketin üzerine gelindiğinde gösterilen yardımcı metni girin', - 'unitPlaceholder': 'Sayılardan sonra birimleri görüntüleyin, örneğin belirteçler', - 'showAllSettings': 'Tüm Ayarları Göster', - 'tooltips': 'Araç İpuçları', - 'noDefaultSelected': 'Seçmeyin', - 'uploadMethod': 'Yükleme Yöntemi', - 'placeholder': 'Yer tutucu', - 'placeholderPlaceholder': 'Alan boş olduğunda görüntülenecek metni girin', - 'defaultValuePlaceholder': 'Alanı önceden doldurmak için varsayılan değeri girin', - 'maxNumberTip': 'Belge < {{docLimit}}, resim < {{imgLimit}}, ses < {{audioLimit}}, video < {{videoLimit}}', - }, - vision: { - name: 'Görüş', - description: 'Görüş etkinleştirildiğinde modelin görüntüleri almasını ve bunlarla ilgili soruları yanıtlamasını sağlar.', - settings: 'Ayarlar', - visionSettings: { - title: 'Görüş Ayarları', - resolution: 'Çözünürlük', - resolutionTooltip: 'Düşük çözünürlük, modelin görüntünün düşük çözünürlüklü 512 x 512 versiyonunu almasını sağlar ve görüntüyü 65 token bütçesiyle temsil eder. Bu, API\'nin daha hızlı yanıtlar dönmesini ve daha az giriş tokeni tüketmesini sağlar ve bu yüksek detay gerektirmeyen kullanım durumları için uygundur.\nYüksek çözünürlük, modelin önce düşük çözünürlüklü görüntüyü görmesini sağlar ve ardından giriş görüntüsünün boyutuna göre 512 piksel kareler olarak detaylı kırpma işlemleri gerçekleştirir. Her bir detaylı kırpma işlemi toplamda 129 token bütçesi kullanır.', - high: 'Yüksek', - low: 'Düşük', - uploadMethod: 'Yükleme Yöntemi', - both: 'Her İkisi', - localUpload: 'Yerel Yükleme', - url: 'URL', - uploadLimit: 'Yükleme Limiti', - }, - onlySupportVisionModelTip: 'Yalnızca görme modellerini destekler', - }, - voice: { - name: 'Konuşma', - defaultDisplay: 'Varsayılan Ses', - description: 'Metinden sese ses ayarları', - settings: 'Ayarlar', - voiceSettings: { - title: 'Ses Ayarları', - language: 'Dil', - resolutionTooltip: 'Metinden sese ses destek dili.', - voice: 'Ses', - autoPlay: 'Otomatik Oynatma', - autoPlayEnabled: 'Açık', - autoPlayDisabled: 'Kapalı', - }, - }, - openingStatement: { - title: 'Konuşma Başlatıcı', - add: 'Ekle', - writeOpener: 'Başlangıç mesajı yaz', - placeholder: 'Başlangıç mesajınızı buraya yazın, değişkenler kullanabilirsiniz, örneğin {{variable}} yazmayı deneyin.', - openingQuestion: 'Açılış Soruları', - openingQuestionPlaceholder: 'Değişkenler kullanabilirsiniz, {{variable}} yazmayı deneyin.', - noDataPlaceHolder: - 'Kullanıcı ile konuşmayı başlatmak, AI\'ın konuşma uygulamalarında onlarla daha yakın bir bağlantı kurmasına yardımcı olabilir.', - varTip: 'Değişkenler kullanabilirsiniz, örneğin {{variable}} yazmayı deneyin', - tooShort: 'Konuşma için açılış ifadeleri oluşturmak için en az 20 kelimelik başlangıç promptu gereklidir.', - notIncludeKey: 'Başlangıç promptu değişkeni içermiyor: {{key}}. Lütfen bunu başlangıç promptuna ekleyin.', - }, - modelConfig: { - model: 'Model', - setTone: 'Yanıtların tonunu ayarla', - title: 'Model ve Parametreler', - modeType: { - chat: 'Sohbet', - completion: 'Tamamlama', - }, - }, - inputs: { - title: 'Hata ayıklama ve Önizleme', - noPrompt: 'Ön prompt girişine bazı promptlar yazmayı deneyin', - userInputField: 'Kullanıcı Giriş Alanı', - noVar: 'Yeni bir oturum başlatıldığında prompt kelimesinde otomatik olarak değiştirilecek değişkenin değerini doldurun.', - chatVarTip: 'Yeni bir oturum başlatıldığında prompt kelimesinde otomatik olarak değiştirilecek değişkenin değerini doldurun', - completionVarTip: 'Her soru gönderildiğinde prompt kelimelerinde otomatik olarak değiştirilecek değişkenin değerini doldurun.', - previewTitle: 'Prompt önizleme', - queryTitle: 'Sorgu içeriği', - queryPlaceholder: 'Lütfen istek metnini girin.', - run: 'ÇALIŞTIR', - }, - result: 'Çıktı Metni', - datasetConfig: { - settingTitle: 'Geri Alım Ayarları', - knowledgeTip: 'Bilgi eklemek için “+” düğmesine tıklayın', - retrieveOneWay: { - title: 'N-to-1 geri alım', - description: 'Kullanıcı niyetine ve Bilgi tanımına dayanarak, Agent en iyi Bilgi\'yi sorgulamak için özerk bir şekilde seçer. Belirgin, sınırlı Bilgi bulunan uygulamalar için en iyisidir.', - }, - retrieveMultiWay: { - title: 'Çoklu yol geri alım', - description: 'Kullanıcı niyetine dayanarak, tüm Bilgilerde sorgular, çoklu kaynaklardan ilgili metni alır ve yeniden sıraladıktan sonra kullanıcı sorgusuyla eşleşen en iyi sonuçları seçer.', - }, - rerankModelRequired: 'Rerank modeli gereklidir', - params: 'Parametreler', - top_k: 'En İyi K', - top_kTip: 'Kullanıcı sorularına en çok benzeyen parçaları filtrelemek için kullanılır. Sistem ayrıca en iyi K değerini, seçilen modelin max_tokens\'a göre dinamik olarak ayarlar.', - score_threshold: 'Skor Eşiği', - score_thresholdTip: 'Parça filtreleme için benzerlik eşiğini ayarlamak için kullanılır.', - retrieveChangeTip: 'Dizin modunu ve geri alım modunu değiştirmek, bu Bilgi ile ilişkili uygulamaları etkileyebilir.', - embeddingModelRequired: 'Yapılandırılmış bir Gömme Modeli gereklidir', - }, - debugAsSingleModel: 'Tek Model Olarak Hata Ayıkla', - debugAsMultipleModel: 'Çoklu Model Olarak Hata Ayıkla', - duplicateModel: 'Çoğalt', - publishAs: 'Olarak Yayınla', - assistantType: { - name: 'Asistan Türü', - chatAssistant: { - name: 'Temel Asistan', - description: 'Büyük Dil Modeli kullanarak sohbet tabanlı bir asistan oluşturun', - }, - agentAssistant: { - name: 'Agent Asistanı', - description: 'Görevleri tamamlamak için araçları özerk bir şekilde seçebilen bir zeki Agent oluşturun', - }, - }, - agent: { - agentMode: 'Agent Modu', - agentModeDes: 'Agent için çıkarım modunu ayarlayın', - agentModeType: { - ReACT: 'ReAct', - functionCall: 'Fonksiyon Çağrısı', - }, - setting: { - name: 'Agent Ayarları', - description: 'Agent Asistanı ayarları, Agent modunu ve yerleşik promptlar gibi gelişmiş özellikleri ayarlamanıza olanak tanır. Sadece Agent türünde kullanılabilir.', - maximumIterations: { - name: 'Maksimum Yineleme', - description: 'Bir Agent asistanının gerçekleştirebileceği yineleme sayısını sınırlayın', - }, - }, - buildInPrompt: 'Yerleşik Prompt', - firstPrompt: 'İlk Prompt', - nextIteration: 'Sonraki Yineleme', - promptPlaceholder: 'Promptunuzu buraya yazın', - tools: { - name: 'Araçlar', - description: 'Araçlar kullanmak, internette arama yapmak veya bilimsel hesaplamalar yapmak gibi LLM yeteneklerini genişletebilir', - enabled: 'Etkinleştirildi', - }, - }, - codegen: { - generatedCodeTitle: 'Oluşturulan Kod', - overwriteConfirmTitle: 'Mevcut kodun üzerine yazılsın mı?', - applyChanges: 'Değişiklikleri Uygula', - generate: 'Oluşturmak', - noDataLine2: 'Kod önizlemesi burada gösterilecektir.', - title: 'Kod Oluşturucu', - apply: 'Uygulamak', - instructionPlaceholder: 'Oluşturmak istediğiniz kodun ayrıntılı açıklamasını girin.', - description: 'Kod Oluşturucu, talimatlarınıza göre yüksek kaliteli kod oluşturmak için yapılandırılmış modelleri kullanır. Lütfen açık ve ayrıntılı talimatlar verin.', - resTitle: 'Oluşturulan Kod', - noDataLine1: 'Solda kullanım durumunuzu açıklayın,', - loading: 'Kod oluşturuluyor...', - instruction: 'Talimat -ları', - overwriteConfirmMessage: 'Bu eylem mevcut kodun üzerine yazacaktır. Devam etmek istiyor musunuz?', - }, - warningMessage: { - timeoutExceeded: 'Zaman aşımı nedeniyle sonuçlar görüntülenmez. Tam sonuçları almak için lütfen günlüklere bakın.', - }, - noResult: 'Çıktı burada görüntülenecektir.', -} - -export default translation diff --git a/web/i18n/tr-TR/app-log.json b/web/i18n/tr-TR/app-log.json new file mode 100644 index 0000000000..c2f47ff955 --- /dev/null +++ b/web/i18n/tr-TR/app-log.json @@ -0,0 +1,110 @@ +{ + "title": "Günlükler", + "description": "Günlükler, kullanıcının girdileri ve AI tepkileri dahil olmak üzere uygulamanın çalışma durumunu kaydeder.", + "dateTimeFormat": "GG/AA/YYYY ss:dd ÖÖ/ÖS", + "table": { + "header": { + "updatedTime": "Güncellenme zamanı", + "time": "Oluşturulma zamanı", + "endUser": "Son Kullanıcı veya Hesap", + "input": "Girdi", + "output": "Çıktı", + "summary": "Başlık", + "messageCount": "Mesaj Sayısı", + "userRate": "Kullanıcı Puanı", + "adminRate": "Op. Puanı", + "startTime": "BAŞLANGIÇ ZAMANI", + "status": "DURUM", + "runtime": "ÇALIŞMA SÜRESİ", + "tokens": "TOKENLAR", + "user": "SON KULLANICI VEYA HESAP", + "version": "VERSİYON", + "triggered_from": "TETİKLEYEN TARAF" + }, + "pagination": { + "previous": "Önceki", + "next": "Sonraki" + }, + "empty": { + "noChat": "Henüz konuşma yok", + "noOutput": "Çıktı yok", + "element": { + "title": "Kimse var mı?", + "content": "Son kullanıcılar ve AI uygulamaları arasındaki etkileşimleri gözlemleyin ve açıklamalar ekleyin, böylece AI doğruluğunu sürekli olarak artırabilirsiniz. Web Uygulamasını paylaşmayı veya kendiniz test etmeyi deneyebilir, ardından bu sayfaya geri dönebilirsiniz." + } + } + }, + "detail": { + "time": "Zaman", + "conversationId": "Konuşma ID", + "promptTemplate": "Prompt Şablonu", + "promptTemplateBeforeChat": "Sohbet Öncesi Prompt Şablonu · Sistem Mesajı Olarak", + "annotationTip": "{{user}} tarafından işaretlenen iyileştirmeler", + "timeConsuming": "Geçen Süre", + "second": "s", + "tokenCost": "Token harcanan", + "loading": "yükleniyor", + "operation": { + "like": "beğeni", + "dislike": "beğenmeme", + "addAnnotation": "İyileştirme Ekle", + "editAnnotation": "İyileştirme Düzenle", + "annotationPlaceholder": "AI'ın yanıtlamasını istediğiniz beklenen cevabı girin, bu, model ince ayarı ve metin üretim kalitesinin sürekli iyileştirilmesi için kullanılabilir." + }, + "variables": "Değişkenler", + "uploadImages": "Yüklenen Görseller", + "modelParams": "Model parametreleri" + }, + "filter": { + "period": { + "today": "Bugün", + "last7days": "Son 7 Gün", + "last4weeks": "Son 4 Hafta", + "last3months": "Son 3 Ay", + "last12months": "Son 12 Ay", + "monthToDate": "Ay Başlangıcından İtibaren", + "quarterToDate": "Çeyrek Başlangıcından İtibaren", + "yearToDate": "Yıl Başlangıcından İtibaren", + "allTime": "Tüm Zamanlar", + "custom": "Özel", + "last30days": "Son 30 Gün" + }, + "annotation": { + "all": "Hepsi", + "annotated": "Açıklamalı İyileştirmeler ({{count}} öğe)", + "not_annotated": "Açıklanmamış" + }, + "sortBy": "Sıralama ölçütü:", + "descending": "azalan", + "ascending": "artan" + }, + "workflowTitle": "Workflow Günlükleri", + "workflowSubtitle": "Günlük, Automate'in çalışmasını kaydetmiştir.", + "runDetail": { + "title": "Konuşma Günlüğü", + "workflowTitle": "Günlük Detayı", + "fileListDetail": "Ayrıntı", + "fileListLabel": "Dosya Detayları", + "testWithParams": "Parametrelerle Test" + }, + "promptLog": "Prompt Günlüğü", + "agentLog": "Agent Günlüğü", + "viewLog": "Günlüğü Görüntüle", + "agentLogDetail": { + "agentMode": "Agent Modu", + "toolUsed": "Kullanılan Araç", + "iterations": "Yinelemeler", + "iteration": "Yineleme", + "finalProcessing": "Son İşleme" + }, + "dateFormat": "GG/AA/YYYY", + "triggerBy": { + "debugging": "Hata ayıklama", + "appRun": "WebUygulama", + "webhook": "Webhook", + "schedule": "Program", + "plugin": "Eklenti", + "ragPipelineRun": "RAG Boru Hattı", + "ragPipelineDebugging": "RAG Hata Ayıklama" + } +} diff --git a/web/i18n/tr-TR/app-log.ts b/web/i18n/tr-TR/app-log.ts deleted file mode 100644 index afaec2186b..0000000000 --- a/web/i18n/tr-TR/app-log.ts +++ /dev/null @@ -1,112 +0,0 @@ -const translation = { - title: 'Günlükler', - description: 'Günlükler, kullanıcının girdileri ve AI tepkileri dahil olmak üzere uygulamanın çalışma durumunu kaydeder.', - dateTimeFormat: 'GG/AA/YYYY ss:dd ÖÖ/ÖS', - table: { - header: { - updatedTime: 'Güncellenme zamanı', - time: 'Oluşturulma zamanı', - endUser: 'Son Kullanıcı veya Hesap', - input: 'Girdi', - output: 'Çıktı', - summary: 'Başlık', - messageCount: 'Mesaj Sayısı', - userRate: 'Kullanıcı Puanı', - adminRate: 'Op. Puanı', - startTime: 'BAŞLANGIÇ ZAMANI', - status: 'DURUM', - runtime: 'ÇALIŞMA SÜRESİ', - tokens: 'TOKENLAR', - user: 'SON KULLANICI VEYA HESAP', - version: 'VERSİYON', - triggered_from: 'TETİKLEYEN TARAF', - }, - pagination: { - previous: 'Önceki', - next: 'Sonraki', - }, - empty: { - noChat: 'Henüz konuşma yok', - noOutput: 'Çıktı yok', - element: { - title: 'Kimse var mı?', - content: 'Son kullanıcılar ve AI uygulamaları arasındaki etkileşimleri gözlemleyin ve açıklamalar ekleyin, böylece AI doğruluğunu sürekli olarak artırabilirsiniz. Web Uygulamasını paylaşmayı veya kendiniz test etmeyi deneyebilir, ardından bu sayfaya geri dönebilirsiniz.', - }, - }, - }, - detail: { - time: 'Zaman', - conversationId: 'Konuşma ID', - promptTemplate: 'Prompt Şablonu', - promptTemplateBeforeChat: 'Sohbet Öncesi Prompt Şablonu · Sistem Mesajı Olarak', - annotationTip: '{{user}} tarafından işaretlenen iyileştirmeler', - timeConsuming: 'Geçen Süre', - second: 's', - tokenCost: 'Token harcanan', - loading: 'yükleniyor', - operation: { - like: 'beğeni', - dislike: 'beğenmeme', - addAnnotation: 'İyileştirme Ekle', - editAnnotation: 'İyileştirme Düzenle', - annotationPlaceholder: 'AI\'ın yanıtlamasını istediğiniz beklenen cevabı girin, bu, model ince ayarı ve metin üretim kalitesinin sürekli iyileştirilmesi için kullanılabilir.', - }, - variables: 'Değişkenler', - uploadImages: 'Yüklenen Görseller', - modelParams: 'Model parametreleri', - }, - filter: { - period: { - today: 'Bugün', - last7days: 'Son 7 Gün', - last4weeks: 'Son 4 Hafta', - last3months: 'Son 3 Ay', - last12months: 'Son 12 Ay', - monthToDate: 'Ay Başlangıcından İtibaren', - quarterToDate: 'Çeyrek Başlangıcından İtibaren', - yearToDate: 'Yıl Başlangıcından İtibaren', - allTime: 'Tüm Zamanlar', - custom: 'Özel', - last30days: 'Son 30 Gün', - }, - annotation: { - all: 'Hepsi', - annotated: 'Açıklamalı İyileştirmeler ({{count}} öğe)', - not_annotated: 'Açıklanmamış', - }, - sortBy: 'Sıralama ölçütü:', - descending: 'azalan', - ascending: 'artan', - }, - workflowTitle: 'Workflow Günlükleri', - workflowSubtitle: 'Günlük, Automate\'in çalışmasını kaydetmiştir.', - runDetail: { - title: 'Konuşma Günlüğü', - workflowTitle: 'Günlük Detayı', - fileListDetail: 'Ayrıntı', - fileListLabel: 'Dosya Detayları', - testWithParams: 'Parametrelerle Test', - }, - promptLog: 'Prompt Günlüğü', - agentLog: 'Agent Günlüğü', - viewLog: 'Günlüğü Görüntüle', - agentLogDetail: { - agentMode: 'Agent Modu', - toolUsed: 'Kullanılan Araç', - iterations: 'Yinelemeler', - iteration: 'Yineleme', - finalProcessing: 'Son İşleme', - }, - dateFormat: 'GG/AA/YYYY', - triggerBy: { - debugging: 'Hata ayıklama', - appRun: 'WebUygulama', - webhook: 'Webhook', - schedule: 'Program', - plugin: 'Eklenti', - ragPipelineRun: 'RAG Boru Hattı', - ragPipelineDebugging: 'RAG Hata Ayıklama', - }, -} - -export default translation diff --git a/web/i18n/tr-TR/app-overview.json b/web/i18n/tr-TR/app-overview.json new file mode 100644 index 0000000000..db7eb9f8cd --- /dev/null +++ b/web/i18n/tr-TR/app-overview.json @@ -0,0 +1,187 @@ +{ + "welcome": { + "firstStepTip": "Başlamak için,", + "enterKeyTip": "aşağıya OpenAI API Anahtarınızı girin", + "getKeyTip": "OpenAI kontrol panelinden API Anahtarınızı alın", + "placeholder": "API Anahtarınız (ör. sk-xxxx)" + }, + "apiKeyInfo": { + "cloud": { + "trial": { + "title": "{{providerName}} deneme kotasını kullanıyorsunuz.", + "description": "Deneme kotası, test amaçlarınız için sağlanmıştır. Deneme kotası bitmeden önce kendi model sağlayıcınızı ayarlayın veya ek kota satın alın." + }, + "exhausted": { + "title": "Deneme kotanızı kullandınız, lütfen API Anahtarınızı ayarlayın.", + "description": "Deneme kotanızı bitirdiniz. Lütfen kendi model sağlayıcınızı ayarlayın veya ek kota satın alın." + } + }, + "selfHost": { + "title": { + "row1": "Başlamak için,", + "row2": "model sağlayıcınızı ayarlayın." + } + }, + "callTimes": "Çağrı süresi", + "usedToken": "Kullanılan token", + "setAPIBtn": "Model sağlayıcısını ayarlamaya git", + "tryCloud": "Veya Dify'nin bulut sürümünü ücretsiz kotayla deneyin" + }, + "overview": { + "title": "Genel Bakış", + "appInfo": { + "explanation": "Kullanıma hazır AI web app", + "accessibleAddress": "Genel URL", + "preview": "Önizleme", + "regenerate": "Yeniden Oluştur", + "regenerateNotice": "Genel URL'yi yeniden oluşturmak istiyor musunuz?", + "preUseReminder": "Devam etmeden önce web app'i etkinleştirin.", + "settings": { + "entry": "Ayarlar", + "title": "web app Ayarları", + "webName": "web app İsmi", + "webDesc": "web app Açıklaması", + "webDescTip": "Bu metin, uygulamanın nasıl kullanılacağına dair temel açıklamalar sağlar ve istemci tarafında görüntülenir", + "webDescPlaceholder": "web app'in açıklamasını girin", + "language": "Dil", + "workflow": { + "title": "Workflow Adımları", + "show": "Göster", + "hide": "Gizle", + "showDesc": "web app'te iş akışı ayrıntılarını gösterme veya gizleme", + "subTitle": "İş Akışı Detayları" + }, + "chatColorTheme": "Sohbet renk teması", + "chatColorThemeDesc": "Sohbet botunun renk temasını ayarlayın", + "chatColorThemeInverted": "Tersine çevrilmiş", + "invalidHexMessage": "Geçersiz hex değeri", + "invalidPrivacyPolicy": "Geçersiz gizlilik politikası bağlantısı. Lütfen http veya https ile başlayan geçerli bir bağlantı kullanın", + "more": { + "entry": "Daha fazla ayarı göster", + "copyright": "Telif Hakkı", + "copyRightPlaceholder": "Yazarın veya kuruluşun adını girin", + "privacyPolicy": "Gizlilik Politikası", + "privacyPolicyPlaceholder": "Gizlilik politikası bağlantısını girin", + "privacyPolicyTip": "Ziyaretçilerin uygulamanın topladığı verileri anlamalarına yardımcı olur, Dify'nin Gizlilik Politikası'na bakın.", + "customDisclaimer": "Özel İfşa", + "customDisclaimerPlaceholder": "Özel ifşa metnini girin", + "customDisclaimerTip": "Özel ifşa metni istemci tarafında görüntülenecek ve uygulama hakkında ek bilgiler sağlayacak", + "copyrightTip": "Web uygulamasında telif hakkı bilgilerini görüntüleme", + "copyrightTooltip": "Lütfen Profesyonel plana veya daha yüksek bir plana yükseltin" + }, + "sso": { + "title": "web app SSO'su", + "tooltip": "web app SSO'yu etkinleştirmek için yöneticiyle iletişime geçin", + "label": "SSO Kimlik Doğrulaması", + "description": "Tüm kullanıcıların web app'i kullanmadan önce SSO ile oturum açmaları gerekir" + }, + "modalTip": "İstemci tarafı web uygulaması ayarları." + }, + "embedded": { + "entry": "Gömülü", + "title": "Siteye Yerleştir", + "explanation": "Sohbet uygulamasını web sitenize yerleştirmenin yollarını seçin", + "iframe": "Sohbet uygulamasını web sitenizin herhangi bir yerine eklemek için bu iframe'i HTML kodunuza ekleyin.", + "scripts": "Sohbet uygulamasını web sitenizin sağ alt köşesine eklemek için bu kodu HTML'e ekleyin.", + "chromePlugin": "Dify Chatbot Chrome Eklentisini Yükleyin", + "copied": "Kopyalandı", + "copy": "Kopyala" + }, + "qrcode": { + "title": "Bağlantı QR Kodu", + "scan": "Paylaşmak İçin Taramak", + "download": "QR Kodu İndir" + }, + "customize": { + "way": "yol", + "entry": "Özelleştir", + "title": "AI web app'i Özelleştirin", + "explanation": "Web Uygulamasının ön yüzünü senaryo ve stil ihtiyaçlarınıza uygun şekilde özelleştirebilirsiniz.", + "way1": { + "name": "İstemci kodunu forklayarak değiştirin ve Vercel'e dağıtın (önerilen)", + "step1": "İstemci kodunu forklayarak değiştirin", + "step1Tip": "Kaynak kodunu GitHub hesabınıza forklayarak değiştirmek için buraya tıklayın", + "step1Operation": "Dify-WebClient", + "step2": "Vercel'e dağıtın", + "step2Tip": "Depoyu Vercel'e içe aktarmak ve dağıtmak için buraya tıklayın", + "step2Operation": "Depo içe aktar", + "step3": "Çevresel değişkenleri yapılandırın", + "step3Tip": "Vercel'de aşağıdaki çevresel değişkenleri ekleyin" + }, + "way2": { + "name": "İstemci kodunu yazarak API'yi çağırın ve bir sunucuya dağıtın", + "operation": "Dokümantasyon" + } + }, + "launch": "Başlat", + "enableTooltip": { + "description": "Bu özelliği etkinleştirmek için lütfen tuvale bir Kullanıcı Girişi düğümü ekleyin. (Taslakta zaten mevcut olabilir, yayınlandıktan sonra geçerli olur)", + "learnMore": "Daha fazla bilgi edin" + }, + "title": "Web Uygulaması" + }, + "apiInfo": { + "title": "Arka Uç Servis API'si", + "explanation": "Kolayca uygulamanıza entegre edin", + "accessibleAddress": "Servis API Uç Noktası", + "doc": "API Referansı" + }, + "status": { + "running": "Hizmette", + "disable": "Devre Dışı" + }, + "triggerInfo": { + "title": "Tetikleyiciler", + "explanation": "İş akışı tetikleyici yönetimi", + "triggersAdded": "{{count}} Tetikleyiciler eklendi", + "noTriggerAdded": "Hiç tetikleyici eklenmedi", + "triggerStatusDescription": "Tetikleyici düğüm durumu burada görünür. (Zaten taslakta mevcut olabilir, yayımlandıktan sonra geçerli olur)", + "learnAboutTriggers": "Tetikleyiciler hakkında bilgi edinin" + }, + "disableTooltip": { + "triggerMode": "Trigger Düğümü modunda {{feature}} özelliği desteklenmiyor." + } + }, + "analysis": { + "title": "Analiz", + "ms": "ms", + "tokenPS": "Token/s", + "totalMessages": { + "title": "Toplam Mesajlar", + "explanation": "Günlük AI etkileşimi sayısı." + }, + "totalConversations": { + "title": "Toplam Konuşmalar", + "explanation": "Günlük AI konuşmaları sayısı; prompt mühendisliği/hata ayıklama hariç." + }, + "activeUsers": { + "title": "Aktif Kullanıcılar", + "explanation": "AI ile Soru-Cevap etkileşiminde bulunan benzersiz kullanıcılar; prompt mühendisliği/hata ayıklama hariç." + }, + "tokenUsage": { + "title": "Token Kullanımı", + "explanation": "Uygulama için dil modelinin günlük token kullanımını yansıtır, maliyet kontrolü amacıyla faydalıdır.", + "consumed": "Tüketilen" + }, + "avgSessionInteractions": { + "title": "Ort. Oturum Etkileşimleri", + "explanation": "Sohbete dayalı uygulamalar için sürekli kullanıcı-AI iletişim sayısı." + }, + "avgUserInteractions": { + "title": "Ort. Kullanıcı Etkileşimleri", + "explanation": "Kullanıcıların günlük kullanım sıklığını yansıtır. Bu metrik, kullanıcı bağlılığını yansıtır." + }, + "userSatisfactionRate": { + "title": "Kullanıcı Memnuniyet Oranı", + "explanation": "Her 1.000 mesajda alınan beğeni sayısı. Bu, kullanıcıların çok memnun olduğu cevapların oranını gösterir." + }, + "avgResponseTime": { + "title": "Ort. Yanıt Süresi", + "explanation": "Metin tabanlı uygulamalar için AI'ın işlem/yanıt süresi (ms)." + }, + "tps": { + "title": "Token Çıktı Hızı", + "explanation": "LLM'nin performansını ölçün. İstekten çıktının tamamlanmasına kadar LLM'nin Token çıktı hızını sayın." + } + } +} diff --git a/web/i18n/tr-TR/app-overview.ts b/web/i18n/tr-TR/app-overview.ts deleted file mode 100644 index 8275b02851..0000000000 --- a/web/i18n/tr-TR/app-overview.ts +++ /dev/null @@ -1,189 +0,0 @@ -const translation = { - welcome: { - firstStepTip: 'Başlamak için,', - enterKeyTip: 'aşağıya OpenAI API Anahtarınızı girin', - getKeyTip: 'OpenAI kontrol panelinden API Anahtarınızı alın', - placeholder: 'API Anahtarınız (ör. sk-xxxx)', - }, - apiKeyInfo: { - cloud: { - trial: { - title: '{{providerName}} deneme kotasını kullanıyorsunuz.', - description: 'Deneme kotası, test amaçlarınız için sağlanmıştır. Deneme kotası bitmeden önce kendi model sağlayıcınızı ayarlayın veya ek kota satın alın.', - }, - exhausted: { - title: 'Deneme kotanızı kullandınız, lütfen API Anahtarınızı ayarlayın.', - description: 'Deneme kotanızı bitirdiniz. Lütfen kendi model sağlayıcınızı ayarlayın veya ek kota satın alın.', - }, - }, - selfHost: { - title: { - row1: 'Başlamak için,', - row2: 'model sağlayıcınızı ayarlayın.', - }, - }, - callTimes: 'Çağrı süresi', - usedToken: 'Kullanılan token', - setAPIBtn: 'Model sağlayıcısını ayarlamaya git', - tryCloud: 'Veya Dify\'nin bulut sürümünü ücretsiz kotayla deneyin', - }, - overview: { - title: 'Genel Bakış', - appInfo: { - explanation: 'Kullanıma hazır AI web app', - accessibleAddress: 'Genel URL', - preview: 'Önizleme', - regenerate: 'Yeniden Oluştur', - regenerateNotice: 'Genel URL\'yi yeniden oluşturmak istiyor musunuz?', - preUseReminder: 'Devam etmeden önce web app\'i etkinleştirin.', - settings: { - entry: 'Ayarlar', - title: 'web app Ayarları', - webName: 'web app İsmi', - webDesc: 'web app Açıklaması', - webDescTip: 'Bu metin, uygulamanın nasıl kullanılacağına dair temel açıklamalar sağlar ve istemci tarafında görüntülenir', - webDescPlaceholder: 'web app\'in açıklamasını girin', - language: 'Dil', - workflow: { - title: 'Workflow Adımları', - show: 'Göster', - hide: 'Gizle', - showDesc: 'web app\'te iş akışı ayrıntılarını gösterme veya gizleme', - subTitle: 'İş Akışı Detayları', - }, - chatColorTheme: 'Sohbet renk teması', - chatColorThemeDesc: 'Sohbet botunun renk temasını ayarlayın', - chatColorThemeInverted: 'Tersine çevrilmiş', - invalidHexMessage: 'Geçersiz hex değeri', - invalidPrivacyPolicy: 'Geçersiz gizlilik politikası bağlantısı. Lütfen http veya https ile başlayan geçerli bir bağlantı kullanın', - more: { - entry: 'Daha fazla ayarı göster', - copyright: 'Telif Hakkı', - copyRightPlaceholder: 'Yazarın veya kuruluşun adını girin', - privacyPolicy: 'Gizlilik Politikası', - privacyPolicyPlaceholder: 'Gizlilik politikası bağlantısını girin', - privacyPolicyTip: 'Ziyaretçilerin uygulamanın topladığı verileri anlamalarına yardımcı olur, Dify\'nin Gizlilik Politikası\'na bakın.', - customDisclaimer: 'Özel İfşa', - customDisclaimerPlaceholder: 'Özel ifşa metnini girin', - customDisclaimerTip: 'Özel ifşa metni istemci tarafında görüntülenecek ve uygulama hakkında ek bilgiler sağlayacak', - copyrightTip: 'Web uygulamasında telif hakkı bilgilerini görüntüleme', - copyrightTooltip: 'Lütfen Profesyonel plana veya daha yüksek bir plana yükseltin', - }, - sso: { - title: 'web app SSO\'su', - tooltip: 'web app SSO\'yu etkinleştirmek için yöneticiyle iletişime geçin', - label: 'SSO Kimlik Doğrulaması', - description: 'Tüm kullanıcıların web app\'i kullanmadan önce SSO ile oturum açmaları gerekir', - }, - modalTip: 'İstemci tarafı web uygulaması ayarları.', - }, - embedded: { - entry: 'Gömülü', - title: 'Siteye Yerleştir', - explanation: 'Sohbet uygulamasını web sitenize yerleştirmenin yollarını seçin', - iframe: 'Sohbet uygulamasını web sitenizin herhangi bir yerine eklemek için bu iframe\'i HTML kodunuza ekleyin.', - scripts: 'Sohbet uygulamasını web sitenizin sağ alt köşesine eklemek için bu kodu HTML\'e ekleyin.', - chromePlugin: 'Dify Chatbot Chrome Eklentisini Yükleyin', - copied: 'Kopyalandı', - copy: 'Kopyala', - }, - qrcode: { - title: 'Bağlantı QR Kodu', - scan: 'Paylaşmak İçin Taramak', - download: 'QR Kodu İndir', - }, - customize: { - way: 'yol', - entry: 'Özelleştir', - title: 'AI web app\'i Özelleştirin', - explanation: 'Web Uygulamasının ön yüzünü senaryo ve stil ihtiyaçlarınıza uygun şekilde özelleştirebilirsiniz.', - way1: { - name: 'İstemci kodunu forklayarak değiştirin ve Vercel\'e dağıtın (önerilen)', - step1: 'İstemci kodunu forklayarak değiştirin', - step1Tip: 'Kaynak kodunu GitHub hesabınıza forklayarak değiştirmek için buraya tıklayın', - step1Operation: 'Dify-WebClient', - step2: 'Vercel\'e dağıtın', - step2Tip: 'Depoyu Vercel\'e içe aktarmak ve dağıtmak için buraya tıklayın', - step2Operation: 'Depo içe aktar', - step3: 'Çevresel değişkenleri yapılandırın', - step3Tip: 'Vercel\'de aşağıdaki çevresel değişkenleri ekleyin', - }, - way2: { - name: 'İstemci kodunu yazarak API\'yi çağırın ve bir sunucuya dağıtın', - operation: 'Dokümantasyon', - }, - }, - launch: 'Başlat', - enableTooltip: { - description: 'Bu özelliği etkinleştirmek için lütfen tuvale bir Kullanıcı Girişi düğümü ekleyin. (Taslakta zaten mevcut olabilir, yayınlandıktan sonra geçerli olur)', - learnMore: 'Daha fazla bilgi edin', - }, - title: 'Web Uygulaması', - }, - apiInfo: { - title: 'Arka Uç Servis API\'si', - explanation: 'Kolayca uygulamanıza entegre edin', - accessibleAddress: 'Servis API Uç Noktası', - doc: 'API Referansı', - }, - status: { - running: 'Hizmette', - disable: 'Devre Dışı', - }, - triggerInfo: { - title: 'Tetikleyiciler', - explanation: 'İş akışı tetikleyici yönetimi', - triggersAdded: '{{count}} Tetikleyiciler eklendi', - noTriggerAdded: 'Hiç tetikleyici eklenmedi', - triggerStatusDescription: 'Tetikleyici düğüm durumu burada görünür. (Zaten taslakta mevcut olabilir, yayımlandıktan sonra geçerli olur)', - learnAboutTriggers: 'Tetikleyiciler hakkında bilgi edinin', - }, - disableTooltip: { - triggerMode: 'Trigger Düğümü modunda {{feature}} özelliği desteklenmiyor.', - }, - }, - analysis: { - title: 'Analiz', - ms: 'ms', - tokenPS: 'Token/s', - totalMessages: { - title: 'Toplam Mesajlar', - explanation: 'Günlük AI etkileşimi sayısı.', - }, - totalConversations: { - title: 'Toplam Konuşmalar', - explanation: 'Günlük AI konuşmaları sayısı; prompt mühendisliği/hata ayıklama hariç.', - }, - activeUsers: { - title: 'Aktif Kullanıcılar', - explanation: 'AI ile Soru-Cevap etkileşiminde bulunan benzersiz kullanıcılar; prompt mühendisliği/hata ayıklama hariç.', - }, - tokenUsage: { - title: 'Token Kullanımı', - explanation: 'Uygulama için dil modelinin günlük token kullanımını yansıtır, maliyet kontrolü amacıyla faydalıdır.', - consumed: 'Tüketilen', - }, - avgSessionInteractions: { - title: 'Ort. Oturum Etkileşimleri', - explanation: 'Sohbete dayalı uygulamalar için sürekli kullanıcı-AI iletişim sayısı.', - }, - avgUserInteractions: { - title: 'Ort. Kullanıcı Etkileşimleri', - explanation: 'Kullanıcıların günlük kullanım sıklığını yansıtır. Bu metrik, kullanıcı bağlılığını yansıtır.', - }, - userSatisfactionRate: { - title: 'Kullanıcı Memnuniyet Oranı', - explanation: 'Her 1.000 mesajda alınan beğeni sayısı. Bu, kullanıcıların çok memnun olduğu cevapların oranını gösterir.', - }, - avgResponseTime: { - title: 'Ort. Yanıt Süresi', - explanation: 'Metin tabanlı uygulamalar için AI\'ın işlem/yanıt süresi (ms).', - }, - tps: { - title: 'Token Çıktı Hızı', - explanation: 'LLM\'nin performansını ölçün. İstekten çıktının tamamlanmasına kadar LLM\'nin Token çıktı hızını sayın.', - }, - }, -} - -export default translation diff --git a/web/i18n/tr-TR/app.json b/web/i18n/tr-TR/app.json new file mode 100644 index 0000000000..72eb2a3dda --- /dev/null +++ b/web/i18n/tr-TR/app.json @@ -0,0 +1,345 @@ +{ + "createApp": "UYGULAMA OLUŞTUR", + "types": { + "all": "Hepsi", + "chatbot": "Chatbot", + "agent": "Agent", + "workflow": "Workflow", + "completion": "Tamamlama", + "advanced": "Sohbet akışı", + "basic": "Temel" + }, + "duplicate": "Çoğalt", + "duplicateTitle": "Uygulamayı Çoğalt", + "export": "DSL Dışa Aktar", + "exportFailed": "DSL dışa aktarımı başarısız oldu.", + "importDSL": "DSL dosyasını içe aktar", + "createFromConfigFile": "DSL dosyasından oluştur", + "importFromDSL": "DSL içe aktar", + "importFromDSLFile": "DSL dosyasından", + "importFromDSLUrl": "URL'den", + "importFromDSLUrlPlaceholder": "DSL bağlantısını buraya yapıştır", + "dslUploader": { + "button": "Dosyayı sürükleyip bırakın veya", + "browse": "Gözat" + }, + "deleteAppConfirmTitle": "Bu uygulamayı silmek istiyor musunuz?", + "deleteAppConfirmContent": "Uygulamanın silinmesi geri alınamaz. Kullanıcılar artık uygulamanıza erişemeyecek ve tüm prompt yapılandırmaları ile loglar kalıcı olarak silinecektir.", + "appDeleted": "Uygulama silindi", + "appDeleteFailed": "Uygulama silinemedi", + "join": "Topluluğa katıl", + "communityIntro": "Farklı kanallarda takım üyeleri, katkıda bulunanlar ve geliştiricilerle tartışın.", + "roadmap": "Yol haritamızı görün", + "newApp": { + "startFromBlank": "Boş Oluştur", + "startFromTemplate": "Şablondan Oluştur", + "workflowWarning": "Şu anda beta aşamasında", + "captionName": "Uygulama simgesi & ismi", + "appNamePlaceholder": "Uygulamanıza bir isim verin", + "captionDescription": "Açıklama", + "appDescriptionPlaceholder": "Uygulamanın açıklamasını girin", + "useTemplate": "Bu şablonu kullan", + "previewDemo": "Önizleme demosu", + "chatApp": "Asistan", + "chatAppIntro": "Sohbete dayalı bir uygulama oluşturmak istiyorum. Bu uygulama, çoklu turlar halinde sürekli konuşmaya izin veren bir soru-cevap formatı kullanır.", + "agentAssistant": "Yeni Agent Asistanı", + "completeApp": "Metin Üretici", + "completeAppIntro": "Promptlara dayalı olarak yüksek kaliteli metinler üreten bir uygulama oluşturmak istiyorum, örneğin makaleler, özetler, çeviriler ve daha fazlasını oluşturmak için.", + "showTemplates": "Bir şablondan seçmek istiyorum", + "hideTemplates": "Mod seçim ekranına geri dön", + "Create": "Oluştur", + "Cancel": "İptal", + "nameNotEmpty": "İsim boş olamaz", + "appTemplateNotSelected": "Lütfen bir şablon seçin", + "appTypeRequired": "Lütfen bir uygulama türü seçin", + "appCreated": "Uygulama oluşturuldu", + "appCreateFailed": "Uygulama oluşturulamadı", + "appCreateDSLErrorPart4": "Sistem tarafından desteklenen DSL sürümü:", + "appCreateDSLErrorPart2": "Devam etmek istiyor musunuz?", + "appCreateDSLWarning": "Dikkat: DSL sürüm farkı bazı özellikleri etkileyebilir", + "appCreateDSLErrorPart1": "DSL sürümlerinde önemli bir fark tespit edildi. İçe aktarmayı zorlamak, uygulamanın hatalı çalışmasına neden olabilir.", + "caution": "Dikkat", + "appCreateDSLErrorPart3": "Geçerli uygulama DSL sürümü:", + "appCreateDSLErrorTitle": "Sürüm Uyumsuzluğu", + "Confirm": "Onaylamak", + "foundResults": "{{count}} Sonuç -ları", + "noAppsFound": "Uygulama bulunamadı", + "chatbotUserDescription": "Basit yapılandırmayla hızlı bir şekilde LLM tabanlı bir sohbet botu oluşturun. Daha sonra Chatflow'a geçebilirsiniz.", + "optional": "Opsiyonel", + "foundResult": "{{count}} Sonuç", + "noTemplateFound": "Şablon bulunamadı", + "workflowUserDescription": "Sürükle-bırak kolaylığıyla görsel olarak otonom yapay zeka iş akışları oluşturun.", + "advancedUserDescription": "Ek bellek özellikleri ve sohbet robotu arayüzü ile iş akışı.", + "completionShortDescription": "Metin oluşturma görevleri için yapay zeka asistanı", + "noTemplateFoundTip": "Farklı anahtar kelimeler kullanarak arama yapmayı deneyin.", + "learnMore": "Daha fazla bilgi edinin", + "agentShortDescription": "Akıl yürütme ve otonom araç kullanımına sahip akıllı ajan", + "forBeginners": "Daha temel uygulama türleri", + "workflowShortDescription": "Akıllı otomasyonlar için ajantik akış", + "agentUserDescription": "Görev hedeflerine ulaşmak için yinelemeli akıl yürütme ve otonom araç kullanımı yeteneğine sahip akıllı bir ajan.", + "chooseAppType": "Uygulama Türünü Seçin", + "completionUserDescription": "Basit yapılandırmayla metin oluşturma görevleri için hızlı bir şekilde bir yapay zeka asistanı oluşturun.", + "chatbotShortDescription": "Basit kurulumlu LLM tabanlı sohbet robotu", + "advancedShortDescription": "Çok turlu sohbetler için geliştirilmiş iş akışı", + "noIdeaTip": "Fikriniz yok mu? Şablonlarımıza göz atın", + "forAdvanced": "İLERI DÜZEY KULLANICILAR IÇIN", + "dropDSLToCreateApp": "Uygulama oluşturmak için DSL dosyasını buraya bırakın", + "import": "Ithalat" + }, + "editApp": "Bilgileri Düzenle", + "editAppTitle": "Uygulama Bilgilerini Düzenle", + "editDone": "Uygulama bilgileri güncellendi", + "editFailed": "Uygulama bilgileri güncellenemedi", + "iconPicker": { + "ok": "Tamam", + "cancel": "İptal", + "emoji": "Emoji", + "image": "Görsel" + }, + "switch": "Workflow Orkestrasyonuna Geç", + "switchTipStart": "Sizin için yeni bir uygulama kopyası oluşturulacak ve yeni kopya Workflow Orkestrasyonuna geçecektir. Yeni kopya ", + "switchTip": "izin vermeyecek", + "switchTipEnd": " Temel Orkestrasyona geri dönmek.", + "switchLabel": "Oluşturulacak uygulama kopyası", + "removeOriginal": "Orijinal uygulamayı sil", + "switchStart": "Geçişi Başlat", + "typeSelector": { + "all": "All Types", + "chatbot": "Chatbot", + "agent": "Agent", + "workflow": "Workflow", + "completion": "Completion", + "advanced": "Sohbet akışı" + }, + "tracing": { + "title": "Uygulama performansını izleme", + "description": "Üçüncü taraf LLMOps sağlayıcısını yapılandırma ve uygulama performansını izleme.", + "config": "Yapılandırma", + "collapse": "Daralt", + "expand": "Genişlet", + "tracing": "İzleme", + "disabled": "Devre Dışı", + "disabledTip": "Lütfen önce sağlayıcıyı yapılandırın", + "enabled": "Hizmette", + "tracingDescription": "Uygulama yürütmesinin tam bağlamını, LLM çağrıları, bağlam, promptlar, HTTP istekleri ve daha fazlası dahil olmak üzere üçüncü taraf izleme platformuna yakalama.", + "configProviderTitle": { + "configured": "Yapılandırıldı", + "notConfigured": "İzlemeyi etkinleştirmek için sağlayıcıyı yapılandırın", + "moreProvider": "Daha Fazla Sağlayıcı" + }, + "arize": { + "title": "Arize", + "description": "Kurumsal düzeyde LLM gözlemlenebilirliği, çevrimiçi ve çevrimdışı değerlendirme, izleme ve deneyler — OpenTelemetry ile desteklenmektedir. LLM ve ajan tabanlı uygulamalar için özel olarak tasarlanmıştır." + }, + "phoenix": { + "title": "Phoenix", + "description": "LLM iş akışlarınız ve ajanlarınız için açık kaynaklı ve OpenTelemetry tabanlı gözlemlenebilirlik, değerlendirme, istem mühendisliği ve deney platformu." + }, + "langsmith": { + "title": "LangSmith", + "description": "LLM destekli uygulama yaşam döngüsünün her adımı için her şeyi kapsayan bir geliştirici platformu." + }, + "langfuse": { + "title": "Langfuse", + "description": "LLM uygulamanızı hata ayıklamak ve geliştirmek için izlemeler, değerlendirmeler, prompt yönetimi ve metrikler." + }, + "inUse": "Kullanımda", + "configProvider": { + "title": "Yapılandırma", + "placeholder": "{{key}} bilgilerinizi girin", + "project": "Proje", + "publicKey": "Genel Anahtar", + "secretKey": "Gizli Anahtar", + "viewDocsLink": "{{key}} dökümanlarını görüntüle", + "removeConfirmTitle": "{{key}} yapılandırmasını kaldır?", + "removeConfirmContent": "Mevcut yapılandırma kullanımda, kaldırılması İzleme özelliğini kapatacaktır.", + "password": "Parola", + "clientId": "OAuth İstemci Kimliği", + "databricksHost": "Databricks Çalışma Alanı URL'si", + "clientSecret": "OAuth İstemci Sırrı", + "username": "Kullanıcı Adı", + "experimentId": "Deney Kimliği", + "personalAccessToken": "Kişisel Erişim Belirteci (eski)", + "trackingUri": "İzleme URI'si" + }, + "view": "Görünüm", + "opik": { + "title": "Opik Belediyesi", + "description": "Opik, LLM uygulamalarını değerlendirmek, test etmek ve izlemek için açık kaynaklı bir platformdur." + }, + "weave": { + "title": "Dokuma", + "description": "Weave, LLM uygulamalarını değerlendirmek, test etmek ve izlemek için açık kaynaklı bir platformdur." + }, + "aliyun": { + "title": "Bulut İzleyici", + "description": "Alibaba Cloud tarafından sağlanan tamamen yönetilen ve bakım gerektirmeyen gözlemleme platformu, Dify uygulamalarının kutudan çıkar çıkmaz izlenmesi, takip edilmesi ve değerlendirilmesine olanak tanır." + }, + "mlflow": { + "title": "MLflow", + "description": "Deney takibi, gözlemlenebilirlik ve değerlendirme için açık kaynaklı LLMOps platformu, AI/LLM uygulamalarını güvenle oluşturmak için." + }, + "databricks": { + "title": "Databricks", + "description": "Databricks, iz veri depolama için güçlü yönetişim ve güvenlik ile tamamen yönetilen MLflow sunar." + }, + "tencent": { + "title": "Tencent APM", + "description": "Tencent Uygulama Performans İzleme, LLM uygulamaları için kapsamlı izleme ve çok boyutlu analiz sağlar." + } + }, + "answerIcon": { + "descriptionInExplore": "Keşfet'te değiştirilecek 🤖 web app simgesinin kullanılıp kullanılmayacağı", + "title": "Değiştirmek 🤖 için web app simgesini kullanın", + "description": "Paylaşılan uygulamada değiştirmek 🤖 için web app simgesinin kullanılıp kullanılmayacağı" + }, + "mermaid": { + "handDrawn": "Elle çizilmiş", + "classic": "Klasik" + }, + "openInExplore": "Keşfet'te Aç", + "newAppFromTemplate": { + "sidebar": { + "Programming": "Programlama", + "Assistant": "Asistan", + "Writing": "Yazı", + "Agent": "Aracı", + "Workflow": "İş Akışı", + "Recommended": "Önerilen", + "HR": "HR" + }, + "searchAllTemplate": "Tüm şablonlarda ara...", + "byCategories": "KATEGORILERE GÖRE" + }, + "showMyCreatedAppsOnly": "Sadece oluşturduğum uygulamaları göster", + "appSelector": { + "noParams": "Parametre gerekmez", + "label": "Uygulama", + "placeholder": "Bir uygulama seçin...", + "params": "UYGULAMA PARAMETRELERI" + }, + "structOutput": { + "required": "Gerekli", + "structured": "Yapılandırılmış", + "LLMResponse": "LLM Yanıtı", + "notConfiguredTip": "Yapılandırılmış çıktı henüz yapılandırılmamış.", + "configure": "Yapılandır", + "modelNotSupported": "Model desteklenmiyor", + "moreFillTip": "Maksimum 10 katmanlı iç içe geçişleri gösterme", + "modelNotSupportedTip": "Mevcut model bu özelliği desteklemiyor ve otomatik olarak prompt enjeksiyonuna düşürülüyor.", + "structuredTip": "Yapılandırılmış Çıktılar, modelin sağladığınız JSON Şemasına uyacak şekilde her zaman yanıtlar üretmesini sağlayan bir özelliktir." + }, + "accessItemsDescription": { + "anyone": "Herkes web uygulamasına erişebilir", + "organization": "Kuruluşta herkes web uygulamasına erişebilir.", + "specific": "Sadece belirli gruplar veya üyeler web uygulamasına erişebilir.", + "external": "Sadece kimliği doğrulanmış dış kullanıcılar Web uygulamasına erişebilir" + }, + "accessControlDialog": { + "accessItems": { + "anyone": "Bağlantıya sahip olan herkes", + "organization": "Sadece işletme içindeki üyeler", + "specific": "Belirli gruplar veya üyeler", + "external": "Kimliği onaylanmış harici kullanıcılar" + }, + "operateGroupAndMember": { + "searchPlaceholder": "Grupları ve üyeleri ara", + "expand": "Genişlet", + "allMembers": "Tüm üyeler", + "noResult": "Sonuç yok" + }, + "title": "Web Uygulaması Erişim Kontrolü", + "description": "Web uygulaması erişim izinlerini ayarlayın", + "accessLabel": "Kimin erişimi var", + "groups_other": "{{count}} GRUP", + "members_one": "{{count}} ÜYE", + "members_other": "{{count}} ÜYE", + "noGroupsOrMembers": "Seçilen grup veya üye yok", + "webAppSSONotEnabledTip": "Lütfen web uygulaması kimlik doğrulama yöntemini yapılandırmak için kurumsal yöneticinizle iletişime geçin.", + "updateSuccess": "Başarıyla güncellendi", + "groups_one": "{{count}} GRUP" + }, + "publishApp": { + "title": "Web uygulamasına kim erişebilir", + "notSet": "Ayar yapılmamış", + "notSetDesc": "Şu anda kimse web uygulamasına erişemiyor. Lütfen izinleri ayarlayın." + }, + "accessControl": "Web Uygulaması Erişim Kontrolü", + "noAccessPermission": "Web uygulamasına erişim izni yok", + "maxActiveRequestsPlaceholder": "Sınırsız için 0 girin", + "maxActiveRequests": "Maksimum eş zamanlı istekler", + "maxActiveRequestsTip": "Her uygulama için maksimum eşzamanlı aktif istek sayısı (sınırsız için 0)", + "gotoAnything": { + "actions": { + "searchKnowledgeBasesDesc": "Bilgi bankalarınızda arama yapın ve bu forumlara gidin", + "searchWorkflowNodesDesc": "Geçerli iş akışındaki düğümleri ada veya türe göre bulun ve atlayın", + "searchApplications": "Uygulamaları Ara", + "searchKnowledgeBases": "Bilgi Bankalarında Ara", + "searchWorkflowNodes": "İş Akışı Düğümlerini Ara", + "searchPlugins": "Eklentileri Ara", + "searchWorkflowNodesHelp": "Bu özellik yalnızca bir iş akışını görüntülerken çalışır. Önce bir iş akışına gidin.", + "searchApplicationsDesc": "Uygulamalarınızı arayın ve uygulamalarınıza gidin", + "languageChangeDesc": "UI dilini değiştir", + "themeSystem": "Sistem Teması", + "runTitle": "Komutlar", + "themeLightDesc": "Aydınlık görünüm kullan", + "themeSystemDesc": "İşletim sisteminizin görünümünü takip edin", + "languageCategoryTitle": "Dil", + "themeCategoryTitle": "Tema", + "themeLight": "Aydınlık Tema", + "themeDark": "Karanlık Tema", + "languageCategoryDesc": "Arayüz dilini değiştir", + "themeDarkDesc": "Koyu görünümü kullan", + "themeCategoryDesc": "Uygulama temasını değiştir", + "runDesc": "Hızlı komutlar çalıştır (tema, dil, ...)", + "searchPluginsDesc": "Eklentilerinizi arayın ve gezinin", + "slashDesc": "/tema, /dil gibi komutları çalıştırın", + "communityDesc": "Açık Discord topluluğu", + "accountDesc": "Hesap sayfasına gidin", + "feedbackDesc": "Açık topluluk geri bildirim tartışmaları", + "docDesc": "Yardım belgelerini aç", + "zenTitle": "Zen Mode", + "zenDesc": "Toggle canvas focus mode" + }, + "emptyState": { + "noAppsFound": "Uygulama bulunamadı", + "noWorkflowNodesFound": "İş akışı düğümü bulunamadı", + "noKnowledgeBasesFound": "Bilgi bankası bulunamadı", + "noPluginsFound": "Eklenti bulunamadı", + "tryDifferentTerm": "Farklı bir arama terimi deneyin veya {{mode}} filtresini kaldırın", + "trySpecificSearch": "Belirli aramalar için {{shortcuts}} deneyin" + }, + "groups": { + "apps": "Uygulamalar", + "plugins": "Eklentiler", + "knowledgeBases": "Bilgi Tabanları", + "workflowNodes": "İş Akışı Düğümleri", + "commands": "Komutlar" + }, + "searchFailed": "Arama başarısız oldu", + "clearToSearchAll": "Tümünü aramak için @ işaretini kaldırın", + "someServicesUnavailable": "Bazı arama hizmetleri kullanılamıyor", + "searchPlaceholder": "Komutlar için @ arayın veya yazın...", + "useAtForSpecific": "Belirli türler için @ kullanın", + "searchTemporarilyUnavailable": "Arama geçici olarak kullanılamıyor", + "searchTitle": "Her şeyi arayın", + "noResults": "Sonuç bulunamadı", + "servicesUnavailableMessage": "Bazı arama hizmetlerinde sorunlar yaşanıyor olabilir. Kısa bir süre sonra tekrar deneyin.", + "searching": "Aranıyor...", + "selectSearchType": "Ne arayacağınızı seçin", + "searchHint": "Her şeyi anında aramak için yazmaya başlayın", + "commandHint": "Kategoriye göre göz atmak için @ yazın", + "resultCount": "{{count}} sonuç", + "resultCount_other": "{{count}} sonuç", + "inScope": "{{scope}}s içinde", + "tryDifferentSearch": "Farklı bir arama terimi deneyin", + "noMatchingCommands": "Eşleşen komut bulunamadı", + "slashHint": "Tüm mevcut komutları görmek için / yazın", + "tips": "Navigasyon için ↑↓ tuşlarına basın", + "selectToNavigate": "Gezinmek için seçin", + "pressEscToClose": "Kapatmak için ESC tuşuna basın", + "startTyping": "Arama yapmak için yazmaya başlayın" + }, + "noUserInputNode": "Eksik kullanıcı girdi düğümü", + "notPublishedYet": "Uygulama henüz yayımlanmadı" +} diff --git a/web/i18n/tr-TR/app.ts b/web/i18n/tr-TR/app.ts deleted file mode 100644 index a5afdf4300..0000000000 --- a/web/i18n/tr-TR/app.ts +++ /dev/null @@ -1,347 +0,0 @@ -const translation = { - createApp: 'UYGULAMA OLUŞTUR', - types: { - all: 'Hepsi', - chatbot: 'Chatbot', - agent: 'Agent', - workflow: 'Workflow', - completion: 'Tamamlama', - advanced: 'Sohbet akışı', - basic: 'Temel', - }, - duplicate: 'Çoğalt', - duplicateTitle: 'Uygulamayı Çoğalt', - export: 'DSL Dışa Aktar', - exportFailed: 'DSL dışa aktarımı başarısız oldu.', - importDSL: 'DSL dosyasını içe aktar', - createFromConfigFile: 'DSL dosyasından oluştur', - importFromDSL: 'DSL içe aktar', - importFromDSLFile: 'DSL dosyasından', - importFromDSLUrl: 'URL\'den', - importFromDSLUrlPlaceholder: 'DSL bağlantısını buraya yapıştır', - dslUploader: { - button: 'Dosyayı sürükleyip bırakın veya', - browse: 'Gözat', - }, - deleteAppConfirmTitle: 'Bu uygulamayı silmek istiyor musunuz?', - deleteAppConfirmContent: 'Uygulamanın silinmesi geri alınamaz. Kullanıcılar artık uygulamanıza erişemeyecek ve tüm prompt yapılandırmaları ile loglar kalıcı olarak silinecektir.', - appDeleted: 'Uygulama silindi', - appDeleteFailed: 'Uygulama silinemedi', - join: 'Topluluğa katıl', - communityIntro: 'Farklı kanallarda takım üyeleri, katkıda bulunanlar ve geliştiricilerle tartışın.', - roadmap: 'Yol haritamızı görün', - newApp: { - startFromBlank: 'Boş Oluştur', - startFromTemplate: 'Şablondan Oluştur', - workflowWarning: 'Şu anda beta aşamasında', - captionName: 'Uygulama simgesi & ismi', - appNamePlaceholder: 'Uygulamanıza bir isim verin', - captionDescription: 'Açıklama', - appDescriptionPlaceholder: 'Uygulamanın açıklamasını girin', - useTemplate: 'Bu şablonu kullan', - previewDemo: 'Önizleme demosu', - chatApp: 'Asistan', - chatAppIntro: 'Sohbete dayalı bir uygulama oluşturmak istiyorum. Bu uygulama, çoklu turlar halinde sürekli konuşmaya izin veren bir soru-cevap formatı kullanır.', - agentAssistant: 'Yeni Agent Asistanı', - completeApp: 'Metin Üretici', - completeAppIntro: 'Promptlara dayalı olarak yüksek kaliteli metinler üreten bir uygulama oluşturmak istiyorum, örneğin makaleler, özetler, çeviriler ve daha fazlasını oluşturmak için.', - showTemplates: 'Bir şablondan seçmek istiyorum', - hideTemplates: 'Mod seçim ekranına geri dön', - Create: 'Oluştur', - Cancel: 'İptal', - nameNotEmpty: 'İsim boş olamaz', - appTemplateNotSelected: 'Lütfen bir şablon seçin', - appTypeRequired: 'Lütfen bir uygulama türü seçin', - appCreated: 'Uygulama oluşturuldu', - appCreateFailed: 'Uygulama oluşturulamadı', - appCreateDSLErrorPart4: 'Sistem tarafından desteklenen DSL sürümü:', - appCreateDSLErrorPart2: 'Devam etmek istiyor musunuz?', - appCreateDSLWarning: 'Dikkat: DSL sürüm farkı bazı özellikleri etkileyebilir', - appCreateDSLErrorPart1: 'DSL sürümlerinde önemli bir fark tespit edildi. İçe aktarmayı zorlamak, uygulamanın hatalı çalışmasına neden olabilir.', - caution: 'Dikkat', - appCreateDSLErrorPart3: 'Geçerli uygulama DSL sürümü:', - appCreateDSLErrorTitle: 'Sürüm Uyumsuzluğu', - Confirm: 'Onaylamak', - foundResults: '{{count}} Sonuç -ları', - noAppsFound: 'Uygulama bulunamadı', - chatbotUserDescription: 'Basit yapılandırmayla hızlı bir şekilde LLM tabanlı bir sohbet botu oluşturun. Daha sonra Chatflow\'a geçebilirsiniz.', - optional: 'Opsiyonel', - foundResult: '{{count}} Sonuç', - noTemplateFound: 'Şablon bulunamadı', - workflowUserDescription: 'Sürükle-bırak kolaylığıyla görsel olarak otonom yapay zeka iş akışları oluşturun.', - advancedUserDescription: 'Ek bellek özellikleri ve sohbet robotu arayüzü ile iş akışı.', - completionShortDescription: 'Metin oluşturma görevleri için yapay zeka asistanı', - noTemplateFoundTip: 'Farklı anahtar kelimeler kullanarak arama yapmayı deneyin.', - learnMore: 'Daha fazla bilgi edinin', - agentShortDescription: 'Akıl yürütme ve otonom araç kullanımına sahip akıllı ajan', - forBeginners: 'Daha temel uygulama türleri', - workflowShortDescription: 'Akıllı otomasyonlar için ajantik akış', - agentUserDescription: 'Görev hedeflerine ulaşmak için yinelemeli akıl yürütme ve otonom araç kullanımı yeteneğine sahip akıllı bir ajan.', - chooseAppType: 'Uygulama Türünü Seçin', - completionUserDescription: 'Basit yapılandırmayla metin oluşturma görevleri için hızlı bir şekilde bir yapay zeka asistanı oluşturun.', - chatbotShortDescription: 'Basit kurulumlu LLM tabanlı sohbet robotu', - advancedShortDescription: 'Çok turlu sohbetler için geliştirilmiş iş akışı', - noIdeaTip: 'Fikriniz yok mu? Şablonlarımıza göz atın', - forAdvanced: 'İLERI DÜZEY KULLANICILAR IÇIN', - dropDSLToCreateApp: 'Uygulama oluşturmak için DSL dosyasını buraya bırakın', - import: 'Ithalat', - }, - editApp: 'Bilgileri Düzenle', - editAppTitle: 'Uygulama Bilgilerini Düzenle', - editDone: 'Uygulama bilgileri güncellendi', - editFailed: 'Uygulama bilgileri güncellenemedi', - iconPicker: { - ok: 'Tamam', - cancel: 'İptal', - emoji: 'Emoji', - image: 'Görsel', - }, - switch: 'Workflow Orkestrasyonuna Geç', - switchTipStart: 'Sizin için yeni bir uygulama kopyası oluşturulacak ve yeni kopya Workflow Orkestrasyonuna geçecektir. Yeni kopya ', - switchTip: 'izin vermeyecek', - switchTipEnd: ' Temel Orkestrasyona geri dönmek.', - switchLabel: 'Oluşturulacak uygulama kopyası', - removeOriginal: 'Orijinal uygulamayı sil', - switchStart: 'Geçişi Başlat', - typeSelector: { - all: 'All Types', - chatbot: 'Chatbot', - agent: 'Agent', - workflow: 'Workflow', - completion: 'Completion', - advanced: 'Sohbet akışı', - }, - tracing: { - title: 'Uygulama performansını izleme', - description: 'Üçüncü taraf LLMOps sağlayıcısını yapılandırma ve uygulama performansını izleme.', - config: 'Yapılandırma', - collapse: 'Daralt', - expand: 'Genişlet', - tracing: 'İzleme', - disabled: 'Devre Dışı', - disabledTip: 'Lütfen önce sağlayıcıyı yapılandırın', - enabled: 'Hizmette', - tracingDescription: 'Uygulama yürütmesinin tam bağlamını, LLM çağrıları, bağlam, promptlar, HTTP istekleri ve daha fazlası dahil olmak üzere üçüncü taraf izleme platformuna yakalama.', - configProviderTitle: { - configured: 'Yapılandırıldı', - notConfigured: 'İzlemeyi etkinleştirmek için sağlayıcıyı yapılandırın', - moreProvider: 'Daha Fazla Sağlayıcı', - }, - arize: { - title: 'Arize', - description: 'Kurumsal düzeyde LLM gözlemlenebilirliği, çevrimiçi ve çevrimdışı değerlendirme, izleme ve deneyler — OpenTelemetry ile desteklenmektedir. LLM ve ajan tabanlı uygulamalar için özel olarak tasarlanmıştır.', - }, - phoenix: { - title: 'Phoenix', - description: 'LLM iş akışlarınız ve ajanlarınız için açık kaynaklı ve OpenTelemetry tabanlı gözlemlenebilirlik, değerlendirme, istem mühendisliği ve deney platformu.', - }, - langsmith: { - title: 'LangSmith', - description: 'LLM destekli uygulama yaşam döngüsünün her adımı için her şeyi kapsayan bir geliştirici platformu.', - }, - langfuse: { - title: 'Langfuse', - description: 'LLM uygulamanızı hata ayıklamak ve geliştirmek için izlemeler, değerlendirmeler, prompt yönetimi ve metrikler.', - }, - inUse: 'Kullanımda', - configProvider: { - title: 'Yapılandırma', - placeholder: '{{key}} bilgilerinizi girin', - project: 'Proje', - publicKey: 'Genel Anahtar', - secretKey: 'Gizli Anahtar', - viewDocsLink: '{{key}} dökümanlarını görüntüle', - removeConfirmTitle: '{{key}} yapılandırmasını kaldır?', - removeConfirmContent: 'Mevcut yapılandırma kullanımda, kaldırılması İzleme özelliğini kapatacaktır.', - password: 'Parola', - clientId: 'OAuth İstemci Kimliği', - databricksHost: 'Databricks Çalışma Alanı URL\'si', - clientSecret: 'OAuth İstemci Sırrı', - username: 'Kullanıcı Adı', - experimentId: 'Deney Kimliği', - personalAccessToken: 'Kişisel Erişim Belirteci (eski)', - trackingUri: 'İzleme URI\'si', - }, - view: 'Görünüm', - opik: { - title: 'Opik Belediyesi', - description: 'Opik, LLM uygulamalarını değerlendirmek, test etmek ve izlemek için açık kaynaklı bir platformdur.', - }, - weave: { - title: 'Dokuma', - description: 'Weave, LLM uygulamalarını değerlendirmek, test etmek ve izlemek için açık kaynaklı bir platformdur.', - }, - aliyun: { - title: 'Bulut İzleyici', - description: 'Alibaba Cloud tarafından sağlanan tamamen yönetilen ve bakım gerektirmeyen gözlemleme platformu, Dify uygulamalarının kutudan çıkar çıkmaz izlenmesi, takip edilmesi ve değerlendirilmesine olanak tanır.', - }, - mlflow: { - title: 'MLflow', - description: 'Deney takibi, gözlemlenebilirlik ve değerlendirme için açık kaynaklı LLMOps platformu, AI/LLM uygulamalarını güvenle oluşturmak için.', - }, - databricks: { - title: 'Databricks', - description: 'Databricks, iz veri depolama için güçlü yönetişim ve güvenlik ile tamamen yönetilen MLflow sunar.', - }, - tencent: { - title: 'Tencent APM', - description: 'Tencent Uygulama Performans İzleme, LLM uygulamaları için kapsamlı izleme ve çok boyutlu analiz sağlar.', - }, - }, - answerIcon: { - descriptionInExplore: 'Keşfet\'te değiştirilecek 🤖 web app simgesinin kullanılıp kullanılmayacağı', - title: 'Değiştirmek 🤖 için web app simgesini kullanın', - description: 'Paylaşılan uygulamada değiştirmek 🤖 için web app simgesinin kullanılıp kullanılmayacağı', - }, - mermaid: { - handDrawn: 'Elle çizilmiş', - classic: 'Klasik', - }, - openInExplore: 'Keşfet\'te Aç', - newAppFromTemplate: { - sidebar: { - Programming: 'Programlama', - Assistant: 'Asistan', - Writing: 'Yazı', - Agent: 'Aracı', - Workflow: 'İş Akışı', - Recommended: 'Önerilen', - HR: 'HR', - }, - searchAllTemplate: 'Tüm şablonlarda ara...', - byCategories: 'KATEGORILERE GÖRE', - }, - showMyCreatedAppsOnly: 'Sadece oluşturduğum uygulamaları göster', - appSelector: { - noParams: 'Parametre gerekmez', - label: 'Uygulama', - placeholder: 'Bir uygulama seçin...', - params: 'UYGULAMA PARAMETRELERI', - }, - structOutput: { - required: 'Gerekli', - structured: 'Yapılandırılmış', - LLMResponse: 'LLM Yanıtı', - notConfiguredTip: 'Yapılandırılmış çıktı henüz yapılandırılmamış.', - configure: 'Yapılandır', - modelNotSupported: 'Model desteklenmiyor', - moreFillTip: 'Maksimum 10 katmanlı iç içe geçişleri gösterme', - modelNotSupportedTip: 'Mevcut model bu özelliği desteklemiyor ve otomatik olarak prompt enjeksiyonuna düşürülüyor.', - structuredTip: 'Yapılandırılmış Çıktılar, modelin sağladığınız JSON Şemasına uyacak şekilde her zaman yanıtlar üretmesini sağlayan bir özelliktir.', - }, - accessItemsDescription: { - anyone: 'Herkes web uygulamasına erişebilir', - organization: 'Kuruluşta herkes web uygulamasına erişebilir.', - specific: 'Sadece belirli gruplar veya üyeler web uygulamasına erişebilir.', - external: 'Sadece kimliği doğrulanmış dış kullanıcılar Web uygulamasına erişebilir', - }, - accessControlDialog: { - accessItems: { - anyone: 'Bağlantıya sahip olan herkes', - organization: 'Sadece işletme içindeki üyeler', - specific: 'Belirli gruplar veya üyeler', - external: 'Kimliği onaylanmış harici kullanıcılar', - }, - operateGroupAndMember: { - searchPlaceholder: 'Grupları ve üyeleri ara', - expand: 'Genişlet', - allMembers: 'Tüm üyeler', - noResult: 'Sonuç yok', - }, - title: 'Web Uygulaması Erişim Kontrolü', - description: 'Web uygulaması erişim izinlerini ayarlayın', - accessLabel: 'Kimin erişimi var', - groups_other: '{{count}} GRUP', - members_one: '{{count}} ÜYE', - members_other: '{{count}} ÜYE', - noGroupsOrMembers: 'Seçilen grup veya üye yok', - webAppSSONotEnabledTip: 'Lütfen web uygulaması kimlik doğrulama yöntemini yapılandırmak için kurumsal yöneticinizle iletişime geçin.', - updateSuccess: 'Başarıyla güncellendi', - groups_one: '{{count}} GRUP', - }, - publishApp: { - title: 'Web uygulamasına kim erişebilir', - notSet: 'Ayar yapılmamış', - notSetDesc: 'Şu anda kimse web uygulamasına erişemiyor. Lütfen izinleri ayarlayın.', - }, - accessControl: 'Web Uygulaması Erişim Kontrolü', - noAccessPermission: 'Web uygulamasına erişim izni yok', - maxActiveRequestsPlaceholder: 'Sınırsız için 0 girin', - maxActiveRequests: 'Maksimum eş zamanlı istekler', - maxActiveRequestsTip: 'Her uygulama için maksimum eşzamanlı aktif istek sayısı (sınırsız için 0)', - gotoAnything: { - actions: { - searchKnowledgeBasesDesc: 'Bilgi bankalarınızda arama yapın ve bu forumlara gidin', - searchWorkflowNodesDesc: 'Geçerli iş akışındaki düğümleri ada veya türe göre bulun ve atlayın', - searchApplications: 'Uygulamaları Ara', - searchKnowledgeBases: 'Bilgi Bankalarında Ara', - searchWorkflowNodes: 'İş Akışı Düğümlerini Ara', - searchPlugins: 'Eklentileri Ara', - searchWorkflowNodesHelp: 'Bu özellik yalnızca bir iş akışını görüntülerken çalışır. Önce bir iş akışına gidin.', - searchApplicationsDesc: 'Uygulamalarınızı arayın ve uygulamalarınıza gidin', - languageChangeDesc: 'UI dilini değiştir', - themeSystem: 'Sistem Teması', - runTitle: 'Komutlar', - themeLightDesc: 'Aydınlık görünüm kullan', - themeSystemDesc: 'İşletim sisteminizin görünümünü takip edin', - languageCategoryTitle: 'Dil', - themeCategoryTitle: 'Tema', - themeLight: 'Aydınlık Tema', - themeDark: 'Karanlık Tema', - languageCategoryDesc: 'Arayüz dilini değiştir', - themeDarkDesc: 'Koyu görünümü kullan', - themeCategoryDesc: 'Uygulama temasını değiştir', - runDesc: 'Hızlı komutlar çalıştır (tema, dil, ...)', - searchPluginsDesc: 'Eklentilerinizi arayın ve gezinin', - slashDesc: '/tema, /dil gibi komutları çalıştırın', - communityDesc: 'Açık Discord topluluğu', - accountDesc: 'Hesap sayfasına gidin', - feedbackDesc: 'Açık topluluk geri bildirim tartışmaları', - docDesc: 'Yardım belgelerini aç', - zenTitle: 'Zen Mode', - zenDesc: 'Toggle canvas focus mode', - }, - emptyState: { - noAppsFound: 'Uygulama bulunamadı', - noWorkflowNodesFound: 'İş akışı düğümü bulunamadı', - noKnowledgeBasesFound: 'Bilgi bankası bulunamadı', - noPluginsFound: 'Eklenti bulunamadı', - tryDifferentTerm: 'Farklı bir arama terimi deneyin veya {{mode}} filtresini kaldırın', - trySpecificSearch: 'Belirli aramalar için {{shortcuts}} deneyin', - }, - groups: { - apps: 'Uygulamalar', - plugins: 'Eklentiler', - knowledgeBases: 'Bilgi Tabanları', - workflowNodes: 'İş Akışı Düğümleri', - commands: 'Komutlar', - }, - searchFailed: 'Arama başarısız oldu', - clearToSearchAll: 'Tümünü aramak için @ işaretini kaldırın', - someServicesUnavailable: 'Bazı arama hizmetleri kullanılamıyor', - searchPlaceholder: 'Komutlar için @ arayın veya yazın...', - useAtForSpecific: 'Belirli türler için @ kullanın', - searchTemporarilyUnavailable: 'Arama geçici olarak kullanılamıyor', - searchTitle: 'Her şeyi arayın', - noResults: 'Sonuç bulunamadı', - servicesUnavailableMessage: 'Bazı arama hizmetlerinde sorunlar yaşanıyor olabilir. Kısa bir süre sonra tekrar deneyin.', - searching: 'Aranıyor...', - selectSearchType: 'Ne arayacağınızı seçin', - searchHint: 'Her şeyi anında aramak için yazmaya başlayın', - commandHint: 'Kategoriye göre göz atmak için @ yazın', - resultCount: '{{count}} sonuç', - resultCount_other: '{{count}} sonuç', - inScope: '{{scope}}s içinde', - tryDifferentSearch: 'Farklı bir arama terimi deneyin', - noMatchingCommands: 'Eşleşen komut bulunamadı', - slashHint: 'Tüm mevcut komutları görmek için / yazın', - tips: 'Navigasyon için ↑↓ tuşlarına basın', - selectToNavigate: 'Gezinmek için seçin', - pressEscToClose: 'Kapatmak için ESC tuşuna basın', - startTyping: 'Arama yapmak için yazmaya başlayın', - }, - noUserInputNode: 'Eksik kullanıcı girdi düğümü', - notPublishedYet: 'Uygulama henüz yayımlanmadı', -} - -export default translation diff --git a/web/i18n/tr-TR/billing.json b/web/i18n/tr-TR/billing.json new file mode 100644 index 0000000000..775d141ade --- /dev/null +++ b/web/i18n/tr-TR/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "Mevcut Plan", + "upgradeBtn": { + "plain": "Planı Yükselt", + "encourage": "Şimdi Yükselt", + "encourageShort": "Yükselt" + }, + "viewBilling": "Faturalandırma ve abonelikleri yönet", + "buyPermissionDeniedTip": "Abone olmak için lütfen işletme yöneticinize başvurun", + "plansCommon": { + "yearlyTip": "Yıllık abonelikle 2 ay ücretsiz!", + "mostPopular": "En Popüler", + "planRange": { + "monthly": "Aylık", + "yearly": "Yıllık" + }, + "month": "ay", + "year": "yıl", + "save": "Tasarruf et ", + "free": "Ücretsiz", + "currentPlan": "Mevcut Plan", + "contractSales": "Satışla iletişime geçin", + "contractOwner": "Takım yöneticisine başvurun", + "startForFree": "Ücretsiz Başla", + "contactSales": "Satışlarla İletişime Geçin", + "talkToSales": "Satışlarla Konuşun", + "modelProviders": "Model Sağlayıcılar", + "annotationQuota": "Ek Açıklama Kotası", + "buildApps": "Uygulamalar Oluştur", + "vectorSpace": "Vektör Alanı", + "vectorSpaceTooltip": "Vektör Alanı, LLM'lerin verilerinizi anlaması için gerekli uzun süreli hafıza sistemidir.", + "documentProcessingPriority": "Doküman İşleme Önceliği", + "documentProcessingPriorityTip": "Daha yüksek belge işleme önceliği için lütfen planınızı yükseltin.", + "documentProcessingPriorityUpgrade": "Daha fazla veriyi daha yüksek doğrulukla ve daha hızlı işleyin.", + "priority": { + "standard": "Standart", + "priority": "Öncelikli", + "top-priority": "En Öncelikli" + }, + "logsHistory": "Günlük Geçmişi", + "customTools": "Özel Araçlar", + "unavailable": "Mevcut Değil", + "days": "gün", + "unlimited": "Sınırsız", + "support": "Destek", + "supportItems": { + "communityForums": "Topluluk forumları", + "emailSupport": "E-posta desteği", + "priorityEmail": "Öncelikli e-posta ve sohbet desteği", + "logoChange": "Logo değişikliği", + "SSOAuthentication": "SSO kimlik doğrulama", + "personalizedSupport": "Kişiselleştirilmiş destek", + "dedicatedAPISupport": "Özel API desteği", + "customIntegration": "Özel entegrasyon ve destek", + "ragAPIRequest": "RAG API Talepleri", + "bulkUpload": "Toplu doküman yükleme", + "agentMode": "Agent Modu", + "workflow": "Workflow", + "llmLoadingBalancing": "LLM Yük Dengeleme", + "llmLoadingBalancingTooltip": "Modellere birden fazla API anahtarı ekleyin, API hız sınırlarını etkili bir şekilde aşın." + }, + "comingSoon": "Yakında geliyor", + "member": "Üye", + "memberAfter": "Üye", + "messageRequest": { + "title": "Mesaj Kredileri", + "tooltip": "OpenAI modellerini (gpt4 hariç) kullanarak çeşitli planlar için mesaj çağrı kotaları. Limitin üzerindeki mesajlar OpenAI API Anahtarınızı kullanır.", + "titlePerMonth": "{{count,number}} mesaj/ay" + }, + "annotatedResponse": { + "title": "Ek Açıklama Kota Sınırları", + "tooltip": "Yanıtların elle düzenlenmesi ve ek açıklanması, uygulamalar için özelleştirilebilir yüksek kaliteli soru-cevap yetenekleri sağlar. (Sadece sohbet uygulamalarında geçerlidir)" + }, + "ragAPIRequestTooltip": "Dify'nin sadece bilgi tabanı işleme yeteneklerini çağıran API çağrıları sayısını ifade eder.", + "receiptInfo": "Sadece takım sahibi ve takım yöneticisi abone olabilir ve faturalandırma bilgilerini görüntüleyebilir", + "documentsTooltip": "Bilgi Veri Kaynağından ithal edilen belge sayısına kota.", + "freeTrialTipSuffix": "Kredi kartı gerekmez", + "freeTrialTipPrefix": "Kaydolun ve bir", + "priceTip": "iş alanı başına/", + "documentsRequestQuota": "{{count,number}}/dakika Bilgi İsteği Oran Limiti", + "apiRateLimitUnit": "{{count,number}}", + "documents": "{{count,number}} Bilgi Belgesi", + "comparePlanAndFeatures": "Planları ve özellikleri karşılaştır", + "self": "Kendi Barındırılan", + "getStarted": "Başlayın", + "annualBilling": "Yıllık Faturalama", + "teamMember_one": "{{count,number}} Takım Üyesi", + "apiRateLimit": "API Hız Limiti", + "cloud": "Bulut Hizmeti", + "teamMember_other": "{{count,number}} Takım Üyesi", + "apiRateLimitTooltip": "Dify API'si aracılığıyla yapılan tüm isteklerde, metin oluşturma, sohbet konuşmaları, iş akışı yürütmeleri ve belge işleme dahil olmak üzere, API Oran Sınırı uygulanır.", + "unlimitedApiRate": "API Hız Sınırı Yok", + "freeTrialTip": "200 OpenAI çağrısının ücretsiz denemesi.", + "teamWorkspace": "{{count,number}} Takım Çalışma Alanı", + "documentsRequestQuotaTooltip": "Bir çalışma alanının bilgi tabanında, veri seti oluşturma, silme, güncellemeler, belge yüklemeleri, değişiklikler, arşivleme ve bilgi tabanı sorguları dahil olmak üzere, dakikada gerçekleştirebileceği toplam işlem sayısını belirtir. Bu ölçüt, bilgi tabanı taleplerinin performansını değerlendirmek için kullanılır. Örneğin, bir Sandbox kullanıcısı bir dakika içinde ardışık 10 vurma testi gerçekleştirirse, çalışma alanı bir sonraki dakika için aşağıdaki işlemleri gerçekleştirmesi geçici olarak kısıtlanacaktır: veri seti oluşturma, silme, güncellemeler ve belge yüklemeleri veya değişiklikler.", + "startBuilding": "İnşa Etmeye Başlayın", + "taxTip": "Tüm abonelik fiyatları (aylık/yıllık) geçerli vergiler (ör. KDV, satış vergisi) hariçtir.", + "taxTipSecond": "Bölgenizde geçerli vergi gereksinimleri yoksa, ödeme sayfanızda herhangi bir vergi görünmeyecek ve tüm abonelik süresi boyunca ek bir ücret tahsil edilmeyecektir.", + "triggerEvents": { + "unlimited": "Sınırsız Tetikleme Olayları", + "tooltip": "Eklenti, Zamanlama veya Webhook tetikleyicileri aracılığıyla iş akışlarını otomatik olarak başlatan etkinliklerin sayısı.", + "sandbox": "{{count,number}} Tetikleyici Olaylar", + "professional": "{{count,number}} Tetikleme Etkinlikleri/ay" + }, + "workflowExecution": { + "faster": "Daha Hızlı İş Akışı Yürütme", + "tooltip": "İş akışı yürütme kuyruğu önceliği ve hızı.", + "priority": "Öncelikli İş Akışı Yürütme", + "standard": "Standart İş Akışı Yürütme" + }, + "startNodes": { + "unlimited": "Sınırsız Tetikleyiciler/iş akışı", + "limited": "Maksimum {{count}} Tetikleyici/iş akışı" + }, + "title": { + "plans": "planlar", + "description": "Ekibinizin ihtiyaçlarına en uygun planı seçin." + } + }, + "plans": { + "sandbox": { + "name": "Sandbox", + "description": "200 kez GPT ücretsiz deneme", + "for": "Temel Yeteneklerin Ücretsiz Denemesi" + }, + "professional": { + "name": "Profesyonel", + "description": "Bireyler ve küçük takımlar için daha fazla güç açın.", + "for": "Bağımsız Geliştiriciler/Küçük Takımlar için" + }, + "team": { + "name": "Takım", + "description": "Sınırsız işbirliği ve en üst düzey performans.", + "for": "Orta Boyutlu Takımlar İçin" + }, + "enterprise": { + "name": "Kurumsal", + "description": "Büyük ölçekli kritik sistemler için tam yetenekler ve destek.", + "includesTitle": "Takım plandaki her şey, artı:", + "features": [ + "Kurumsal Düzeyde Ölçeklenebilir Dağıtım Çözümleri", + "Ticari Lisans Yetkilendirmesi", + "Özel Kurumsal Özellikler", + "Birden Fazla Çalışma Alanı ve Kurumsal Yönetim", + "SSO", + "Dify Ortakları tarafından Müzakere Edilen SLA'lar", + "Gelişmiş Güvenlik ve Kontroller", + "Dify Resmi Tarafından Güncellemeler ve Bakım", + "Profesyonel Teknik Destek" + ], + "priceTip": "Yıllık Faturalama Sadece", + "for": "Büyük boyutlu Takımlar için", + "btnText": "Satış ile İletişime Geç", + "price": "Özel" + }, + "community": { + "features": [ + "Tüm Temel Özellikler Açık Depoda Yayınlandı", + "Tek Çalışma Alanı", + "Dify Açık Kaynak Lisansına uygundur" + ], + "price": "Ücretsiz", + "includesTitle": "Ücretsiz Özellikler:", + "name": "Topluluk", + "btnText": "Topluluğa Başlayın", + "for": "Bireysel Kullanıcılar, Küçük Ekipler veya Ticari Olmayan Projeler İçin", + "description": "Bireysel Kullanıcılar, Küçük Ekipler veya Ticari Olmayan Projeler İçin" + }, + "premium": { + "features": [ + "Çeşitli Bulut Sağlayıcıları Tarafından Kendi Kendine Yönetilen Güvenilirlik", + "Tek Çalışma Alanı", + "Web Uygulama Logo ve Marka Özelleştirme", + "Öncelikli E-posta ve Sohbet Desteği" + ], + "name": "Premium", + "includesTitle": "Topluluktan her şey, artı:", + "for": "Orta Büyüklükteki Organizasyonlar ve Ekipler için", + "price": "Ölçeklenebilir", + "btnText": "Premium alın", + "priceTip": "Bulut Pazarına Dayalı", + "description": "Orta Büyüklükteki Organizasyonlar ve Ekipler için", + "comingSoon": "Microsoft Azure ve Google Cloud Desteği Yakında Geliyor" + } + }, + "vectorSpace": { + "fullTip": "Vektör Alanı dolu.", + "fullSolution": "Daha fazla alan için planınızı yükseltin." + }, + "apps": { + "contactUs": "Bizimle iletişime geçin", + "fullTip2des": "Kullanımı serbest bırakmak için etkisiz uygulamaların temizlenmesi önerilir veya bizimle iletişime geçin.", + "fullTip1des": "Bu planda uygulama oluşturma limitine ulaştınız.", + "fullTip2": "Plan limiti aşıldı", + "fullTip1": "Daha fazla uygulama oluşturmak için yükseltin" + }, + "annotatedResponse": { + "fullTipLine1": "Daha fazla konuşmayı açıklamak için", + "fullTipLine2": "planınızı yükseltin.", + "quotaTitle": "Ek Açıklama Yanıtı Kotası" + }, + "usagePage": { + "teamMembers": "Ekip Üyeleri", + "vectorSpaceTooltip": "Yüksek Kalite indeksleme moduna sahip belgeler, Bilgi Veri Depolama kaynaklarını tüketir. Bilgi Veri Depolama sınırına ulaştığında, yeni belgeler yüklenmeyecek.", + "vectorSpace": "Bilgi Veri Depolama", + "buildApps": "Uygulama Geliştir", + "annotationQuota": "Notlandırma Kotası", + "documentsUploadQuota": "Belgeler Yükleme Kotası", + "triggerEvents": "Tetikleyici Olaylar", + "perMonth": "ayda", + "resetsIn": "{{count,number}} gün içinde sıfırlanır" + }, + "teamMembers": "Ekip Üyeleri", + "triggerLimitModal": { + "upgrade": "Güncelle", + "title": "Daha fazla tetikleyici olayı açmak için yükseltin", + "dismiss": "Kapat", + "description": "Bu plan için iş akışı etkinliği tetikleyici sınırına ulaştınız.", + "usageTitle": "TETİKLEYİCİ OLAYLAR" + }, + "viewBillingTitle": "Faturalama ve Abonelikler", + "viewBillingDescription": "Ödeme yöntemlerini, faturaları ve abonelik değişikliklerini yönetin", + "viewBillingAction": "Yönet", + "upgrade": { + "uploadMultiplePages": { + "title": "Aynı anda birden fazla belge yüklemek için yükseltin", + "description": "Yükleme sınırına ulaştınız — mevcut planınızda aynı anda yalnızca bir belge seçip yükleyebilirsiniz." + }, + "uploadMultipleFiles": { + "title": "Toplu belge yüklemeyi açmak için yükseltin", + "description": "Zaman kazanmak ve verimliliği artırmak için bir kerede daha fazla belgeyi toplu olarak yükleyin." + }, + "addChunks": { + "title": "Parçalar eklemeye devam etmek için yükseltin", + "description": "Bu plan için parça ekleme sınırına ulaştınız." + } + } +} diff --git a/web/i18n/tr-TR/billing.ts b/web/i18n/tr-TR/billing.ts deleted file mode 100644 index 716a350c7b..0000000000 --- a/web/i18n/tr-TR/billing.ts +++ /dev/null @@ -1,221 +0,0 @@ -const translation = { - currentPlan: 'Mevcut Plan', - upgradeBtn: { - plain: 'Planı Yükselt', - encourage: 'Şimdi Yükselt', - encourageShort: 'Yükselt', - }, - viewBilling: 'Faturalandırma ve abonelikleri yönet', - buyPermissionDeniedTip: 'Abone olmak için lütfen işletme yöneticinize başvurun', - plansCommon: { - yearlyTip: 'Yıllık abonelikle 2 ay ücretsiz!', - mostPopular: 'En Popüler', - planRange: { - monthly: 'Aylık', - yearly: 'Yıllık', - }, - month: 'ay', - year: 'yıl', - save: 'Tasarruf et ', - free: 'Ücretsiz', - currentPlan: 'Mevcut Plan', - contractSales: 'Satışla iletişime geçin', - contractOwner: 'Takım yöneticisine başvurun', - startForFree: 'Ücretsiz Başla', - contactSales: 'Satışlarla İletişime Geçin', - talkToSales: 'Satışlarla Konuşun', - modelProviders: 'Model Sağlayıcılar', - annotationQuota: 'Ek Açıklama Kotası', - buildApps: 'Uygulamalar Oluştur', - vectorSpace: 'Vektör Alanı', - vectorSpaceTooltip: 'Vektör Alanı, LLM\'lerin verilerinizi anlaması için gerekli uzun süreli hafıza sistemidir.', - documentProcessingPriority: 'Doküman İşleme Önceliği', - documentProcessingPriorityTip: 'Daha yüksek belge işleme önceliği için lütfen planınızı yükseltin.', - documentProcessingPriorityUpgrade: 'Daha fazla veriyi daha yüksek doğrulukla ve daha hızlı işleyin.', - priority: { - 'standard': 'Standart', - 'priority': 'Öncelikli', - 'top-priority': 'En Öncelikli', - }, - logsHistory: 'Günlük Geçmişi', - customTools: 'Özel Araçlar', - unavailable: 'Mevcut Değil', - days: 'gün', - unlimited: 'Sınırsız', - support: 'Destek', - supportItems: { - communityForums: 'Topluluk forumları', - emailSupport: 'E-posta desteği', - priorityEmail: 'Öncelikli e-posta ve sohbet desteği', - logoChange: 'Logo değişikliği', - SSOAuthentication: 'SSO kimlik doğrulama', - personalizedSupport: 'Kişiselleştirilmiş destek', - dedicatedAPISupport: 'Özel API desteği', - customIntegration: 'Özel entegrasyon ve destek', - ragAPIRequest: 'RAG API Talepleri', - bulkUpload: 'Toplu doküman yükleme', - agentMode: 'Agent Modu', - workflow: 'Workflow', - llmLoadingBalancing: 'LLM Yük Dengeleme', - llmLoadingBalancingTooltip: 'Modellere birden fazla API anahtarı ekleyin, API hız sınırlarını etkili bir şekilde aşın.', - }, - comingSoon: 'Yakında geliyor', - member: 'Üye', - memberAfter: 'Üye', - messageRequest: { - title: 'Mesaj Kredileri', - tooltip: 'OpenAI modellerini (gpt4 hariç) kullanarak çeşitli planlar için mesaj çağrı kotaları. Limitin üzerindeki mesajlar OpenAI API Anahtarınızı kullanır.', - titlePerMonth: '{{count,number}} mesaj/ay', - }, - annotatedResponse: { - title: 'Ek Açıklama Kota Sınırları', - tooltip: 'Yanıtların elle düzenlenmesi ve ek açıklanması, uygulamalar için özelleştirilebilir yüksek kaliteli soru-cevap yetenekleri sağlar. (Sadece sohbet uygulamalarında geçerlidir)', - }, - ragAPIRequestTooltip: 'Dify\'nin sadece bilgi tabanı işleme yeteneklerini çağıran API çağrıları sayısını ifade eder.', - receiptInfo: 'Sadece takım sahibi ve takım yöneticisi abone olabilir ve faturalandırma bilgilerini görüntüleyebilir', - documentsTooltip: 'Bilgi Veri Kaynağından ithal edilen belge sayısına kota.', - freeTrialTipSuffix: 'Kredi kartı gerekmez', - freeTrialTipPrefix: 'Kaydolun ve bir', - priceTip: 'iş alanı başına/', - documentsRequestQuota: '{{count,number}}/dakika Bilgi İsteği Oran Limiti', - apiRateLimitUnit: '{{count,number}}', - documents: '{{count,number}} Bilgi Belgesi', - comparePlanAndFeatures: 'Planları ve özellikleri karşılaştır', - self: 'Kendi Barındırılan', - getStarted: 'Başlayın', - annualBilling: 'Yıllık Faturalama', - teamMember_one: '{{count,number}} Takım Üyesi', - apiRateLimit: 'API Hız Limiti', - cloud: 'Bulut Hizmeti', - teamMember_other: '{{count,number}} Takım Üyesi', - apiRateLimitTooltip: 'Dify API\'si aracılığıyla yapılan tüm isteklerde, metin oluşturma, sohbet konuşmaları, iş akışı yürütmeleri ve belge işleme dahil olmak üzere, API Oran Sınırı uygulanır.', - unlimitedApiRate: 'API Hız Sınırı Yok', - freeTrialTip: '200 OpenAI çağrısının ücretsiz denemesi.', - teamWorkspace: '{{count,number}} Takım Çalışma Alanı', - documentsRequestQuotaTooltip: 'Bir çalışma alanının bilgi tabanında, veri seti oluşturma, silme, güncellemeler, belge yüklemeleri, değişiklikler, arşivleme ve bilgi tabanı sorguları dahil olmak üzere, dakikada gerçekleştirebileceği toplam işlem sayısını belirtir. Bu ölçüt, bilgi tabanı taleplerinin performansını değerlendirmek için kullanılır. Örneğin, bir Sandbox kullanıcısı bir dakika içinde ardışık 10 vurma testi gerçekleştirirse, çalışma alanı bir sonraki dakika için aşağıdaki işlemleri gerçekleştirmesi geçici olarak kısıtlanacaktır: veri seti oluşturma, silme, güncellemeler ve belge yüklemeleri veya değişiklikler.', - startBuilding: 'İnşa Etmeye Başlayın', - taxTip: 'Tüm abonelik fiyatları (aylık/yıllık) geçerli vergiler (ör. KDV, satış vergisi) hariçtir.', - taxTipSecond: 'Bölgenizde geçerli vergi gereksinimleri yoksa, ödeme sayfanızda herhangi bir vergi görünmeyecek ve tüm abonelik süresi boyunca ek bir ücret tahsil edilmeyecektir.', - triggerEvents: { - unlimited: 'Sınırsız Tetikleme Olayları', - tooltip: 'Eklenti, Zamanlama veya Webhook tetikleyicileri aracılığıyla iş akışlarını otomatik olarak başlatan etkinliklerin sayısı.', - sandbox: '{{count,number}} Tetikleyici Olaylar', - professional: '{{count,number}} Tetikleme Etkinlikleri/ay', - }, - workflowExecution: { - faster: 'Daha Hızlı İş Akışı Yürütme', - tooltip: 'İş akışı yürütme kuyruğu önceliği ve hızı.', - priority: 'Öncelikli İş Akışı Yürütme', - standard: 'Standart İş Akışı Yürütme', - }, - startNodes: { - unlimited: 'Sınırsız Tetikleyiciler/iş akışı', - limited: 'Maksimum {{count}} Tetikleyici/iş akışı', - }, - title: { - plans: 'planlar', - description: 'Ekibinizin ihtiyaçlarına en uygun planı seçin.', - }, - }, - plans: { - sandbox: { - name: 'Sandbox', - description: '200 kez GPT ücretsiz deneme', - for: 'Temel Yeteneklerin Ücretsiz Denemesi', - }, - professional: { - name: 'Profesyonel', - description: 'Bireyler ve küçük takımlar için daha fazla güç açın.', - for: 'Bağımsız Geliştiriciler/Küçük Takımlar için', - }, - team: { - name: 'Takım', - description: 'Sınırsız işbirliği ve en üst düzey performans.', - for: 'Orta Boyutlu Takımlar İçin', - }, - enterprise: { - name: 'Kurumsal', - description: 'Büyük ölçekli kritik sistemler için tam yetenekler ve destek.', - includesTitle: 'Takım plandaki her şey, artı:', - features: ['Kurumsal Düzeyde Ölçeklenebilir Dağıtım Çözümleri', 'Ticari Lisans Yetkilendirmesi', 'Özel Kurumsal Özellikler', 'Birden Fazla Çalışma Alanı ve Kurumsal Yönetim', 'SSO', 'Dify Ortakları tarafından Müzakere Edilen SLA\'lar', 'Gelişmiş Güvenlik ve Kontroller', 'Dify Resmi Tarafından Güncellemeler ve Bakım', 'Profesyonel Teknik Destek'], - priceTip: 'Yıllık Faturalama Sadece', - for: 'Büyük boyutlu Takımlar için', - btnText: 'Satış ile İletişime Geç', - price: 'Özel', - }, - community: { - features: ['Tüm Temel Özellikler Açık Depoda Yayınlandı', 'Tek Çalışma Alanı', 'Dify Açık Kaynak Lisansına uygundur'], - price: 'Ücretsiz', - includesTitle: 'Ücretsiz Özellikler:', - name: 'Topluluk', - btnText: 'Topluluğa Başlayın', - for: 'Bireysel Kullanıcılar, Küçük Ekipler veya Ticari Olmayan Projeler İçin', - description: 'Bireysel Kullanıcılar, Küçük Ekipler veya Ticari Olmayan Projeler İçin', - }, - premium: { - features: ['Çeşitli Bulut Sağlayıcıları Tarafından Kendi Kendine Yönetilen Güvenilirlik', 'Tek Çalışma Alanı', 'Web Uygulama Logo ve Marka Özelleştirme', 'Öncelikli E-posta ve Sohbet Desteği'], - name: 'Premium', - includesTitle: 'Topluluktan her şey, artı:', - for: 'Orta Büyüklükteki Organizasyonlar ve Ekipler için', - price: 'Ölçeklenebilir', - btnText: 'Premium alın', - priceTip: 'Bulut Pazarına Dayalı', - description: 'Orta Büyüklükteki Organizasyonlar ve Ekipler için', - comingSoon: 'Microsoft Azure ve Google Cloud Desteği Yakında Geliyor', - }, - }, - vectorSpace: { - fullTip: 'Vektör Alanı dolu.', - fullSolution: 'Daha fazla alan için planınızı yükseltin.', - }, - apps: { - contactUs: 'Bizimle iletişime geçin', - fullTip2des: 'Kullanımı serbest bırakmak için etkisiz uygulamaların temizlenmesi önerilir veya bizimle iletişime geçin.', - fullTip1des: 'Bu planda uygulama oluşturma limitine ulaştınız.', - fullTip2: 'Plan limiti aşıldı', - fullTip1: 'Daha fazla uygulama oluşturmak için yükseltin', - }, - annotatedResponse: { - fullTipLine1: 'Daha fazla konuşmayı açıklamak için', - fullTipLine2: 'planınızı yükseltin.', - quotaTitle: 'Ek Açıklama Yanıtı Kotası', - }, - usagePage: { - teamMembers: 'Ekip Üyeleri', - vectorSpaceTooltip: 'Yüksek Kalite indeksleme moduna sahip belgeler, Bilgi Veri Depolama kaynaklarını tüketir. Bilgi Veri Depolama sınırına ulaştığında, yeni belgeler yüklenmeyecek.', - vectorSpace: 'Bilgi Veri Depolama', - buildApps: 'Uygulama Geliştir', - annotationQuota: 'Notlandırma Kotası', - documentsUploadQuota: 'Belgeler Yükleme Kotası', - triggerEvents: 'Tetikleyici Olaylar', - perMonth: 'ayda', - resetsIn: '{{count,number}} gün içinde sıfırlanır', - }, - teamMembers: 'Ekip Üyeleri', - triggerLimitModal: { - upgrade: 'Güncelle', - title: 'Daha fazla tetikleyici olayı açmak için yükseltin', - dismiss: 'Kapat', - description: 'Bu plan için iş akışı etkinliği tetikleyici sınırına ulaştınız.', - usageTitle: 'TETİKLEYİCİ OLAYLAR', - }, - viewBillingTitle: 'Faturalama ve Abonelikler', - viewBillingDescription: 'Ödeme yöntemlerini, faturaları ve abonelik değişikliklerini yönetin', - viewBillingAction: 'Yönet', - upgrade: { - uploadMultiplePages: { - title: 'Aynı anda birden fazla belge yüklemek için yükseltin', - description: 'Yükleme sınırına ulaştınız — mevcut planınızda aynı anda yalnızca bir belge seçip yükleyebilirsiniz.', - }, - uploadMultipleFiles: { - title: 'Toplu belge yüklemeyi açmak için yükseltin', - description: 'Zaman kazanmak ve verimliliği artırmak için bir kerede daha fazla belgeyi toplu olarak yükleyin.', - }, - addChunks: { - title: 'Parçalar eklemeye devam etmek için yükseltin', - description: 'Bu plan için parça ekleme sınırına ulaştınız.', - }, - }, -} - -export default translation diff --git a/web/i18n/tr-TR/common.json b/web/i18n/tr-TR/common.json new file mode 100644 index 0000000000..3744d9d715 --- /dev/null +++ b/web/i18n/tr-TR/common.json @@ -0,0 +1,785 @@ +{ + "api": { + "success": "Başarılı", + "actionSuccess": "İşlem başarılı", + "saved": "Kaydedildi", + "create": "Oluşturuldu", + "remove": "Kaldırıldı", + "actionFailed": "İşlem başarısız" + }, + "operation": { + "create": "Oluştur", + "confirm": "Onayla", + "cancel": "İptal", + "clear": "Temizle", + "save": "Kaydet", + "saveAndEnable": "Kaydet ve Etkinleştir", + "edit": "Düzenle", + "add": "Ekle", + "added": "Eklendi", + "refresh": "Yeniden Başlat", + "reset": "Sıfırla", + "search": "Ara", + "change": "Değiştir", + "remove": "Kaldır", + "send": "Gönder", + "copy": "Kopyala", + "lineBreak": "Satır sonu", + "sure": "Eminim", + "download": "İndir", + "delete": "Sil", + "settings": "Ayarlar", + "setup": "Kurulum", + "getForFree": "Ücretsiz edinin", + "reload": "Yeniden Yükle", + "ok": "Tamam", + "log": "log", + "learnMore": "Daha Fazla Bilgi", + "params": "Parametreler", + "duplicate": "Çoğalt", + "rename": "Yeniden Adlandır", + "audioSourceUnavailable": "AudioSource kullanılamıyor", + "copyImage": "Resmi Kopyala", + "zoomOut": "Uzaklaştırma", + "openInNewTab": "Yeni sekmede aç", + "zoomIn": "Yakınlaştırma", + "view": "Görünüm", + "viewMore": "DAHA FAZLA GÖSTER", + "regenerate": "Yenilemek", + "saveAndRegenerate": "Alt Parçaları Kaydetme ve Yeniden Oluşturma", + "close": "Kapatmak", + "submit": "Gönder", + "skip": "Gemi", + "imageCopied": "Kopyalanan görüntü", + "deleteApp": "Uygulamayı Sil", + "copied": "Kopya -lanan", + "in": "içinde", + "viewDetails": "Detayları Görüntüle", + "downloadSuccess": "İndirme Tamamlandı.", + "format": "Format", + "more": "Daha fazla", + "downloadFailed": "İndirme başarısız oldu. Lütfen daha sonra tekrar deneyin.", + "selectAll": "Hepsini Seç", + "deSelectAll": "Hepsini Seçme", + "config": "Konfigürasyon", + "no": "Hayır", + "yes": "Evet", + "deleteConfirmTitle": "Silinsin mi?", + "confirmAction": "Lütfen işleminizi onaylayın.", + "noSearchResults": "Hiç {{content}} bulunamadı", + "resetKeywords": "Anahtar kelimeleri sıfırla", + "selectCount": "{{count}} Seçildi", + "searchCount": "{{count}} {{content}} bul", + "noSearchCount": "0 {{content}}", + "now": "Şimdi" + }, + "errorMsg": { + "fieldRequired": "{{field}} gereklidir", + "urlError": "URL http:// veya https:// ile başlamalıdır" + }, + "placeholder": { + "input": "Lütfen girin", + "select": "Lütfen seçin", + "search": "Ara..." + }, + "voice": { + "language": { + "zhHans": "Chinese", + "zhHant": "Traditional Chinese", + "enUS": "English", + "deDE": "German", + "frFR": "French", + "esES": "Spanish", + "itIT": "Italian", + "thTH": "Thai", + "idID": "Indonesian", + "jaJP": "Japanese", + "koKR": "Korean", + "ptBR": "Portuguese", + "ruRU": "Russian", + "ukUA": "Ukrainian", + "viVN": "Vietnamese", + "plPL": "Polish", + "roRO": "Romence", + "hiIN": "Hintçe", + "trTR": "Türkçe", + "faIR": "Farsça", + "slSI": "Slovence", + "arTN": "Tunus Arapçası" + } + }, + "unit": { + "char": "karakter" + }, + "actionMsg": { + "noModification": "Şu an için değişiklik yok.", + "modifiedSuccessfully": "Başarıyla değiştirildi", + "modifiedUnsuccessfully": "Değiştirme başarısız oldu", + "copySuccessfully": "Başarıyla kopyalandı", + "paySucceeded": "Ödeme başarılı oldu", + "payCancelled": "Ödeme iptal edildi", + "generatedSuccessfully": "Başarıyla oluşturuldu", + "generatedUnsuccessfully": "Oluşturma başarısız oldu" + }, + "model": { + "params": { + "temperature": "Sıcaklık", + "temperatureTip": "Rastgeleliği kontrol eder: Sıcaklık düştükçe daha az rastgele tamamlamalar gerçekleşir. Sıcaklık sıfıra yaklaştıkça model deterministik ve tekrarlı hale gelir.", + "top_p": "Top P", + "top_pTip": "Çeşitliliği nucleus örnekleme ile kontrol eder: 0.5, tüm olasılık ağırlıklı seçeneklerin yarısının dikkate alındığı anlamına gelir.", + "presence_penalty": "Varlık cezası", + "presence_penaltyTip": "Şimdiye kadar metinde görünüp görünmediğine bağlı olarak yeni tokenları ne kadar cezalandıracağını belirler.\nModelin yeni konular hakkında konuşma olasılığını artırır.", + "frequency_penalty": "Frekans cezası", + "frequency_penaltyTip": "Mevcut metindeki frekanslarına göre yeni tokenları ne kadar cezalandıracağını belirler.\nModelin aynı satırı aynen tekrarlama olasılığını azaltır.", + "max_tokens": "Maksimum token", + "max_tokensTip": "Yanıtın maksimum uzunluğunu token cinsinden sınırlar.\nDaha büyük değerler prompt kelimeleri, sohbet kayıtları ve Bilgiler için bırakılacak alanı sınırlayabilir. \nİki üçün altında ayarlanması önerilir\ngpt-4-1106-preview, gpt-4-vision-preview maksimum token (giriş 128k, çıkış 4k).", + "maxTokenSettingTip": "Maksimum token ayarınız yüksek, bu da promptlar, sorgular ve veriler için alanı sınırlayabilir. Bu değeri 2/3'ün altında ayarlamayı düşünün.", + "setToCurrentModelMaxTokenTip": "Maksimum token, mevcut modelin maksimum token'ın %80'ine {maxToken} olarak güncellendi.", + "stop_sequences": "Stop sıraları", + "stop_sequencesTip": "API, dört adede kadar sıra belirleyerek daha fazla token üretmeyi durduracaktır. Dönülen metin durdurma sırasını içermez.", + "stop_sequencesPlaceholder": "Sıra girin ve Tab tuşuna basın" + }, + "tone": { + "Creative": "Yaratıcı", + "Balanced": "Dengeli", + "Precise": "Kesin", + "Custom": "Özel" + }, + "addMoreModel": "Daha fazla model eklemek için ayarlara gidin", + "capabilities": "MultiModal Yetenekler", + "settingsLink": "Model Sağlayıcı Ayarları" + }, + "menus": { + "status": "beta", + "explore": "Keşfet", + "apps": "Studio", + "plugins": "Eklentiler", + "pluginsTips": "Üçüncü taraf eklentileri entegre edin veya ChatGPT uyumlu AI-Eklentileri oluşturun.", + "datasets": "Bilgi", + "datasetsTips": "YAKINDA: Kendi metin verilerinizi içe aktarın veya LLM bağlamını geliştirmek için Webhook aracılığıyla gerçek zamanlı veri yazın.", + "newApp": "Yeni Uygulama", + "newDataset": "Bilgi Oluştur", + "tools": "Araçlar", + "exploreMarketplace": "Marketplace'i Keşfedin", + "appDetail": "Uygulama Detayı", + "account": "Hesap" + }, + "userProfile": { + "settings": "Ayarlar", + "emailSupport": "E-posta Desteği", + "workspace": "Çalışma Alanı", + "createWorkspace": "Çalışma Alanı Oluştur", + "helpCenter": "Yardım", + "roadmap": "Yol haritası", + "community": "Topluluk", + "about": "Hakkında", + "logout": "Çıkış Yap", + "support": "Destek", + "compliance": "Uygunluk", + "github": "GitHub", + "contactUs": "Bize Ulaşın", + "forum": "Forum" + }, + "settings": { + "accountGroup": "HESAP", + "workplaceGroup": "ÇALIŞMA ALANI", + "account": "Hesabım", + "members": "Üyeler", + "billing": "Faturalandırma", + "integrations": "Entegrasyonlar", + "language": "Dil", + "provider": "Model Sağlayıcı", + "dataSource": "Veri Kaynağı", + "plugin": "Eklentiler", + "apiBasedExtension": "API Uzantısı", + "generalGroup": "GENEL" + }, + "account": { + "avatar": "Avatar", + "name": "İsim", + "email": "E-posta", + "password": "Şifre", + "passwordTip": "Geçici giriş kodlarını kullanmak istemiyorsanız kalıcı bir şifre ayarlayabilirsiniz", + "setPassword": "Şifre Ayarla", + "resetPassword": "Şifreyi Sıfırla", + "currentPassword": "Mevcut şifre", + "newPassword": "Yeni şifre", + "confirmPassword": "Şifreyi onayla", + "notEqual": "İki şifre aynı değil.", + "langGeniusAccount": "Dify hesabı", + "langGeniusAccountTip": "Dify hesabınız ve ilişkili kullanıcı verileri.", + "editName": "İsmi Düzenle", + "showAppLength": "{{length}} uygulamayı göster", + "delete": "Hesabı Sil", + "deleteTip": "Hesabınızı silmek tüm verilerinizi kalıcı olarak siler ve geri alınamaz.", + "account": "Hesap", + "myAccount": "Hesabım", + "studio": "Dify Stüdyo", + "deleteSuccessTip": "Hesabınızın silme işleminin tamamlanması için zamana ihtiyacı var. Her şey bittiğinde size e-posta göndereceğiz.", + "deletePrivacyLink": "Gizlilik Politikası.", + "feedbackTitle": "Geri besleme", + "verificationPlaceholder": "6 haneli kodu yapıştırın", + "feedbackLabel": "Hesabınızı neden sildiğinizi bize bildirin?", + "deleteLabel": "Onaylamak için lütfen aşağıya e-postanızı yazın", + "deletePlaceholder": "Lütfen e-posta adresinizi giriniz", + "verificationLabel": "Doğrulama Kodu", + "feedbackPlaceholder": "Opsiyonel", + "permanentlyDeleteButton": "Hesabı Kalıcı Olarak Sil", + "deletePrivacyLinkTip": "Verilerinizi nasıl işlediğimiz hakkında daha fazla bilgi için lütfen", + "sendVerificationButton": "Doğrulama Kodu Gönder", + "workspaceName": "Çalışma Alanı Adı", + "workspaceIcon": "Çalışma Alanı İkonu", + "editWorkspaceInfo": "Çalışma Alanı Bilgilerini Düzenle", + "changeEmail": { + "resendCount": "{{count}} saniye içinde yeniden gönder", + "resend": "Tekrar gönder", + "newEmail": "Yeni bir e-posta adresi oluşturun", + "verifyNew": "Yeni e-posta adresinizi doğrulayın", + "changeTo": "{{email}}'yi değiştir", + "codePlaceholder": "6 haneli kodu yapıştırın", + "continue": "Devam et", + "emailLabel": "Yeni e-posta", + "emailPlaceholder": "Yeni bir e-posta girin", + "existingEmail": "Bu e-posta ile zaten bir kullanıcı var.", + "sendVerifyCode": "Doğrulama kodunu gönder", + "title": "E-posta Değiştir", + "content3": "Yeni bir e-posta adresi girin ve size bir doğrulama kodu göndereceğiz.", + "verifyEmail": "Mevcut e-posta adresinizi doğrulayın", + "resendTip": "Bir kod almadınız mı?", + "content1": "Devam ederseniz, tekrar kimlik doğrulaması için {{email}} adresine bir doğrulama kodu göndereceğiz.", + "content4": "Size {{email}} adresine geçici bir doğrulama kodu gönderdik.", + "codeLabel": "Doğrulama kodu", + "content2": "Sizin mevcut e-posta adresiniz {{email}}. Doğrulama kodu bu e-posta adresine gönderilmiştir.", + "authTip": "E-posta adresiniz değiştiğinde, eski e-posta adresinize bağlı Google veya GitHub hesapları bu hesaba giriş yapamayacak.", + "unAvailableEmail": "Bu e-posta geçici olarak kullanılamıyor." + } + }, + "members": { + "team": "Takım", + "invite": "Ekle", + "name": "İSİM", + "lastActive": "SON AKTİF", + "role": "ROLLER", + "pending": "Beklemede...", + "owner": "Sahibi", + "admin": "Yönetici", + "adminTip": "Uygulama oluşturabilir ve takım ayarlarını yönetebilir", + "normal": "Normal", + "normalTip": "Sadece uygulamaları kullanabilir, uygulama oluşturamaz", + "builder": "Oluşturucu", + "builderTip": "Kendi uygulamalarını oluşturup düzenleyebilir", + "editor": "Editör", + "editorTip": "Uygulama oluşturabilir ve düzenleyebilir", + "datasetOperator": "Bilgi Yöneticisi", + "datasetOperatorTip": "Sadece bilgi tabanını yönetebilir", + "inviteTeamMember": "Takım Üyesi Ekle", + "inviteTeamMemberTip": "Giriş yaptıktan sonra takım verilerinize doğrudan erişebilirler.", + "emailNotSetup": "E-posta sunucusu kurulu değil, bu nedenle davet e-postaları gönderilemiyor. Lütfen kullanıcıları davetten sonra verilecek davet bağlantısı hakkında bilgilendirin.", + "email": "E-posta", + "emailInvalid": "Geçersiz E-posta Formatı", + "emailPlaceholder": "Lütfen e-postaları girin", + "sendInvite": "Davet Gönder", + "invitedAsRole": "{{role}} kullanıcısı olarak davet edildi", + "invitationSent": "Davet gönderildi", + "invitationSentTip": "Davet gönderildi, Dify'ye giriş yaparak takım verilerinize erişebilirler.", + "invitationLink": "Davet Linki", + "failedInvitationEmails": "Aşağıdaki kullanıcılar başarıyla davet edilmedi", + "ok": "Tamam", + "removeFromTeam": "Takımdan Kaldır", + "removeFromTeamTip": "Takım erişimi kaldırılacak", + "setAdmin": "Yönetici olarak ayarla", + "setMember": "Normal üye olarak ayarla", + "setBuilder": "Oluşturucu olarak ayarla", + "setEditor": "Editör olarak ayarla", + "disInvite": "Davetiyeyi iptal et", + "deleteMember": "Üyeyi Sil", + "you": "(Siz)", + "transferModal": { + "resend": "Tekrar gönder", + "continue": "Devam et", + "transferPlaceholder": "Bir çalışma alanı üyesi seçin…", + "title": "Çalışma alanı sahipliğini devret", + "resendCount": "{{count}}s içinde yeniden gönder", + "resendTip": "Bir kod almadınız mı?", + "transferLabel": "Çalışma alanı sahipliğini şuna aktar", + "verifyContent": "Mevcut e-posta adresiniz {{email}}.", + "warningTip": "Yönetici üyesi olacaksın ve yeni sahibi tam kontrole sahip olacak.", + "verifyContent2": "Bu e-postaya yeniden kimlik doğrulama için geçici bir doğrulama kodu göndereceğiz.", + "codeLabel": "Doğrulama kodu", + "warning": "“{{workspace}}” sahipliğini devretmek üzere olduğunuz için. Bu, hemen yürürlüğe girecek ve geri alınamaz.", + "sendVerifyCode": "Doğrulama kodunu gönder", + "transfer": "Çalışma alanı sahipliğini devret", + "codePlaceholder": "6 haneli kodu yapıştırın", + "verifyEmail": "Mevcut e-posta adresinizi doğrulayın", + "sendTip": "Devam ederseniz, tekrar kimlik doğrulaması için {{email}} adresine bir doğrulama kodu göndereceğiz." + }, + "transferOwnership": "Sahipliği Devret" + }, + "integrations": { + "connected": "Bağlandı", + "google": "Google", + "googleAccount": "Google hesabıyla giriş yap", + "github": "GitHub", + "githubAccount": "GitHub hesabıyla giriş yap", + "connect": "Bağlan" + }, + "language": { + "displayLanguage": "Görüntüleme Dili", + "timezone": "Zaman Dilimi" + }, + "provider": { + "apiKey": "API Anahtarı", + "enterYourKey": "API anahtarınızı buraya girin", + "invalidKey": "Geçersiz OpenAI API anahtarı", + "validatedError": "Doğrulama hatası: ", + "validating": "Anahtar doğrulanıyor...", + "saveFailed": "API anahtarını kaydetme başarısız oldu", + "apiKeyExceedBill": "Bu API ANAHTARININ kullanılabilir kotası yok, lütfen okuyun", + "addKey": "Anahtar Ekle", + "comingSoon": "Yakında", + "editKey": "Düzenle", + "invalidApiKey": "Geçersiz API anahtarı", + "azure": { + "apiBase": "API Tabanı", + "apiBasePlaceholder": "Azure OpenAI Endpoint'inizin API Tabanı URL'si.", + "apiKey": "API Anahtarı", + "apiKeyPlaceholder": "API anahtarınızı buraya girin", + "helpTip": "Azure OpenAI Service hakkında bilgi edinin" + }, + "openaiHosted": { + "openaiHosted": "Barındırılan OpenAI", + "onTrial": "DENEMEDE", + "exhausted": "KOTA DOLU", + "desc": "Dify tarafından sağlanan OpenAI barındırma hizmeti, GPT-3.5 gibi modelleri kullanmanıza olanak tanır. Deneme kotanız bitmeden önce, diğer model sağlayıcılarını ayarlamanız gerekir.", + "callTimes": "Çağrı süreleri", + "usedUp": "Deneme kotası kullanıldı. Kendi Model Sağlayıcınızı ekleyin.", + "useYourModel": "Şu anda kendi Model Sağlayıcınızı kullanıyorsunuz.", + "close": "Kapat" + }, + "anthropicHosted": { + "anthropicHosted": "Anthropic Claude", + "onTrial": "DENEMEDE", + "exhausted": "KOTA DOLU", + "desc": "Güçlü model, karmaşık diyaloglar ve yaratıcı içerik üretiminden ayrıntılı yönlendirmeye kadar geniş bir görev yelpazesi konusunda mükemmeldir.", + "callTimes": "Çağrı Süreleri", + "usedUp": "Deneme kotası kullanıldı. Kendi Model Sağlayıcınızı ekleyin.", + "useYourModel": "Şu anda kendi Model Sağlayıcınızı kullanıyorsunuz.", + "close": "Kapat", + "trialQuotaTip": "Antropik deneme kotanız 11/03/2025 tarihinde sona erecek ve bu tarihten sonra kullanılamayacaktır. Lütfen zamanında kullanın." + }, + "anthropic": { + "using": "Yerleştirme yeteneği,", + "enableTip": "Anthropic modelini etkinleştirmek için önce OpenAI veya Azure OpenAI hizmetine bağlanmanız gerekir.", + "notEnabled": "Etkin değil", + "keyFrom": "API anahtarınızı Anthropic'ten edinin" + }, + "encrypted": { + "front": "API ANAHTARINIZ şu kullanılarak şifrelenip saklanacak:", + "back": " teknolojisi." + } + }, + "modelProvider": { + "notConfigured": "Sistem modeli henüz tam olarak yapılandırılmadı ve bazı işlevler kullanılamayabilir.", + "systemModelSettings": "Sistem Model Ayarları", + "systemModelSettingsLink": "Sistem modelini ayarlamak neden gereklidir?", + "selectModel": "Modelinizi seçin", + "setupModelFirst": "Lütfen önce modelinizi ayarlayın", + "systemReasoningModel": { + "key": "Sistem Çıkarım Modeli", + "tip": "Uygulamalar oluşturmak ve diyalog adı oluşturma ve sonraki soru önerisi gibi özelliklerin otomatikleştirilmesi için kullanılacak varsayılan çıkarım modelini ayarlayın." + }, + "embeddingModel": { + "key": "Yerleştirme Modeli", + "tip": "Bilginin belge yerleştirme işlemi için varsayılan modeli ayarlayın, Bilginin geri alımı ve içe aktarımı için bu Yerleştirme modeli kullanılarak vektörizasyon işlemleri yapılır. Değiştirilmesi, içe aktarılan Bilgilere ve sorulara arasındaki vektör boyutlarının tutarsız olmasına neden olarak geri alım hatasına yol açar. Geri alım hatasını önlemek için önce modeli keyfi olarak değiştirmeyin.", + "required": "Yerleştirme Modeli gereklidir" + }, + "speechToTextModel": { + "key": "Konuşmadan Metne Modeli", + "tip": "Konuşmada konuşmadan metne giriş için varsayılan modeli ayarlayın." + }, + "ttsModel": { + "key": "Metinden Konuşmaya Modeli", + "tip": "Konuşmada metinden konuşmaya giriş için varsayılan modeli ayarlayın." + }, + "rerankModel": { + "key": "Yeniden Sıralama Modeli", + "tip": "Yeniden sıralama modeli, kullanıcı sorgusuyla anlam eşleştirmesine dayalı olarak aday belge listesini yeniden sıralayacak ve anlam sıralama sonuçlarını iyileştirecektir." + }, + "apiKey": "API-KEY", + "quota": "Kota", + "searchModel": "Model ara", + "noModelFound": "{{model}} için model bulunamadı", + "models": "Modeller", + "showMoreModelProvider": "Daha fazla model sağlayıcı göster", + "selector": { + "tip": "Bu model kaldırıldı. Lütfen bir model ekleyin veya başka bir model seçin.", + "emptyTip": "Kullanılabilir model yok", + "emptySetting": "Lütfen ayarlara gidip yapılandırın", + "rerankTip": "Lütfen Yeniden Sıralama modelini ayarlayın" + }, + "card": { + "quota": "KOTA", + "onTrial": "Deneme Sürümünde", + "paid": "Ücretli", + "quotaExhausted": "Kota Tükendi", + "callTimes": "Çağrı Süreleri", + "tokens": "Tokenler", + "buyQuota": "Kota Satın Al", + "priorityUse": "Öncelikli Kullan", + "removeKey": "API Anahtarını Kaldır", + "tip": "Öncelikle ücretli kota kullanılacaktır. Deneme kotası, ücretli kota tükendiğinde kullanılacaktır." + }, + "item": { + "deleteDesc": "{{modelName}} şu anda sistem çıkarım modeli olarak kullanılmaktadır. Kaldırıldıktan sonra bazı işlevler kullanılamayabilir. Lütfen onaylayın.", + "freeQuota": "ÜCRETSİZ KOTA" + }, + "addApiKey": "API anahtarınızı ekleyin", + "invalidApiKey": "Geçersiz API anahtarı", + "encrypted": { + "front": "API ANAHTARINIZ şu kullanılarak şifrelenip saklanacak:", + "back": " teknolojisi." + }, + "freeQuota": { + "howToEarn": "Nasıl kazanılır" + }, + "addMoreModelProvider": "DAHA FAZLA MODEL SAĞLAYICI EKLEYİN", + "addModel": "Model Ekle", + "modelsNum": "{{num}} Model", + "showModels": "Modelleri Göster", + "showModelsNum": "{{num}} Modeli Göster", + "collapse": "Daralt", + "config": "Yapılandır", + "modelAndParameters": "Model ve Parametreler", + "model": "Model", + "featureSupported": "{{feature}} desteklenir", + "callTimes": "Çağrı Süreleri", + "credits": "Mesaj Kredileri", + "buyQuota": "Kota Satın Al", + "getFreeTokens": "Ücretsiz Token Al", + "priorityUsing": "Öncelikli Kullanım", + "deprecated": "Kullanım dışı", + "confirmDelete": "silme onayı?", + "quotaTip": "Kalan kullanılabilir ücretsiz tokenler", + "loadPresets": "Hazır Ayarları Yükle", + "parameters": "PARAMETRELER", + "loadBalancing": "Yük dengeleme", + "loadBalancingDescription": "Birden fazla kimlik bilgisi grubu ile baskıyı azaltın.", + "loadBalancingHeadline": "Yük Dengeleme", + "configLoadBalancing": "Yük Dengelemeyi Yapılandır", + "modelHasBeenDeprecated": "Bu model kullanım dışıdır", + "providerManaged": "Sağlayıcı tarafından yönetilen", + "providerManagedDescription": "Model sağlayıcı tarafından sağlanan tek bir kimlik bilgisi grubunu kullanın.", + "defaultConfig": "Varsayılan Yapılandırma", + "apiKeyStatusNormal": "API Anahtarının durumu normal", + "apiKeyRateLimit": "Hız sınırına ulaşıldı, {{seconds}} saniye sonra tekrar kullanılabilir", + "addConfig": "Yapılandırma Ekle", + "editConfig": "Yapılandırmayı Düzenle", + "loadBalancingLeastKeyWarning": "Yük dengeleme etkinleştirmek için en az 2 anahtar etkinleştirilmelidir.", + "loadBalancingInfo": "Varsayılan olarak, yük dengeleme Yuvarlakrobin stratejisini kullanır. Hız sınırlaması tetiklenirse, 1 dakikalık bir soğuma süresi uygulanacaktır.", + "upgradeForLoadBalancing": "Yük Dengelemeyi etkinleştirmek için planınızı yükseltin.", + "installProvider": "Model sağlayıcılarını yükleme", + "toBeConfigured": "Yapılandırılacak", + "emptyProviderTip": "Lütfen önce bir model sağlayıcı yükleyin.", + "emptyProviderTitle": "Model sağlayıcı ayarlanmadı", + "discoverMore": "Daha fazlasını keşfedin", + "configureTip": "Api-key'i ayarlayın veya kullanmak için model ekleyin", + "auth": { + "apiKeyModal": { + "addModel": "Model ekle", + "title": "API Anahtar Yetkilendirme Yapılandırması", + "desc": "Kimlik bilgileri yapılandırıldıktan sonra, çalışma alanındaki tüm üyeler bu modeli uygulamaları düzenlerken kullanabilir." + }, + "unAuthorized": "Yetkisiz", + "authRemoved": "Yazar kaldırıldı", + "providerManaged": "Sağlayıcı yönetimi", + "configModel": "Modeli yapılandır", + "apiKeys": "API Anahtarları", + "addApiKey": "API Anahtarını Ekle", + "addCredential": "Kimlik bilgisi ekle", + "addNewModel": "Yeni model ekle", + "providerManagedTip": "Mevcut yapılandırma sağlayıcı tarafından barındırılmaktadır.", + "modelCredentials": "Model kimlik bilgileri", + "specifyModelCredentialTip": "Yapılandırılmış bir model kimliği kullanın.", + "configLoadBalancing": "Yük Dengeleme Yapılandırması", + "addModelCredential": "Model kimlik bilgisi ekle", + "specifyModelCredential": "Model kimlik bilgilerini belirtin", + "authorizationError": "Yetkilendirme hatası", + "removeModel": "Modeli Kaldır", + "customModelCredentials": "Özel Model Kimlik Bilgileri", + "manageCredentials": "Kimlik Bilgilerini Yönet", + "addModel": "Model ekle", + "modelCredential": "Model kimlik bilgileri", + "editModelCredential": "Model kimlik bilgilerini düzenleme", + "selectModelCredential": "Bir model kimlik bilgisi seçin", + "addNewModelCredential": "Yeni model kimlik bilgisi ekleme", + "customModelCredentialsDeleteTip": "Kimlik bilgisi kullanımda ve silinemiyor" + }, + "parametersInvalidRemoved": "Bazı parametreler geçersizdir ve kaldırılmıştır.", + "installDataSourceProvider": "Veri kaynağı sağlayıcılarını yükle" + }, + "dataSource": { + "add": "Bir veri kaynağı ekle", + "connect": "Bağlan", + "configure": "Yapılandır", + "notion": { + "title": "Notion", + "description": "Bilgi için veri kaynağı olarak Notion kullanma.", + "connectedWorkspace": "Bağlı çalışma alanı", + "addWorkspace": "Çalışma alanı ekle", + "connected": "Bağlandı", + "disconnected": "Bağlantı Kesildi", + "changeAuthorizedPages": "Yetkilendirilen sayfaları değiştir", + "pagesAuthorized": "Yetkilendirilen sayfalar", + "sync": "Senkronize et", + "remove": "Kaldır", + "selector": { + "pageSelected": "Seçilen Sayfalar", + "searchPages": "Sayfaları ara...", + "noSearchResult": "Arama sonucu yok", + "addPages": "Sayfa ekle", + "preview": "ÖNİZLEME" + }, + "integratedAlert": "Notion, dahili kimlik bilgileri aracılığıyla entegre edilmiştir, yeniden yetkilendirme yapmaya gerek yoktur." + }, + "website": { + "title": "Web Sitesi", + "description": "Web tarayıcı kullanarak web sitelerinden içerik içe aktarın.", + "with": "İle", + "configuredCrawlers": "Yapılandırılmış tarayıcılar", + "active": "Aktif", + "inactive": "Pasif" + } + }, + "plugin": { + "serpapi": { + "apiKey": "API Anahtarı", + "apiKeyPlaceholder": "API anahtarınızı girin", + "keyFrom": "SerpAPI Hesap Sayfasından SerpAPI anahtarınızı alın" + } + }, + "apiBasedExtension": { + "title": "API uzantıları merkezi API yönetimi sağlar, Dify'nin uygulamaları arasında kolay kullanım için yapılandırmayı basitleştirir.", + "link": "Kendi API Uzantınızı nasıl geliştireceğinizi öğrenin.", + "add": "API Uzantısı Ekle", + "selector": { + "title": "API Uzantısı", + "placeholder": "Lütfen API uzantısını seçin", + "manage": "API Uzantısını Yönet" + }, + "modal": { + "title": "API Uzantısı Ekle", + "editTitle": "API Uzantısını Düzenle", + "name": { + "title": "Ad", + "placeholder": "Lütfen adı girin" + }, + "apiEndpoint": { + "title": "API Uç Noktası", + "placeholder": "Lütfen API uç noktasını girin" + }, + "apiKey": { + "title": "API anahtarı", + "placeholder": "Lütfen API anahtarını girin", + "lengthError": "API anahtarı uzunluğu 5 karakterden az olamaz" + } + }, + "type": "Tür" + }, + "about": { + "changeLog": "Değişiklik Günlüğü", + "updateNow": "Şimdi güncelle", + "nowAvailable": "Dify {{version}} şimdi mevcut.", + "latestAvailable": "Dify {{version}} en son mevcut sürüm." + }, + "appMenus": { + "overview": "İzleme", + "promptEng": "Orchestrate", + "apiAccess": "API Erişimi", + "logAndAnn": "Günlükler & Anlamlandırmalar", + "logs": "Günlükler" + }, + "environment": { + "testing": "TEST", + "development": "GELİŞTİRME" + }, + "appModes": { + "completionApp": "Metin Üreteci", + "chatApp": "Sohbet Uygulaması" + }, + "datasetMenus": { + "documents": "Belgeler", + "hitTesting": "Geri Alım Testi", + "settings": "Ayarlar", + "emptyTip": "Bilgi ilişkilendirilmemiş, ilişkilendirme işlemini tamamlamak için uygulama veya eklentiye gidin.", + "viewDoc": "Dökümantasyon görüntüle", + "relatedApp": "bağlantılı uygulamalar", + "noRelatedApp": "Bağlı uygulama yok", + "pipeline": "Ardışık düzen" + }, + "voiceInput": { + "speaking": "Şimdi konuş...", + "converting": "Metne dönüştürülüyor...", + "notAllow": "mikrofon yetkilendirilmedi" + }, + "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": "Konuşmayı Yeniden Adlandır", + "conversationName": "Konuşma adı", + "conversationNamePlaceholder": "Konuşma adını girin", + "conversationNameCanNotEmpty": "Konuşma adı gereklidir", + "citation": { + "title": "ALINTILAR", + "linkToDataset": "Bilgiye Bağlantı", + "characters": "Karakterler:", + "hitCount": "Geri Alım Sayısı:", + "vectorHash": "Vektör Hash:", + "hitScore": "Geri Alım Skoru:" + }, + "inputPlaceholder": "{{botName}} ile konuş", + "thought": "Düşünce", + "thinking": "Düşünü...", + "resend": "Yeniden gönder" + }, + "promptEditor": { + "placeholder": "Prompt kelimenizi buraya yazın, değişken eklemek için '{' tuşuna, prompt içerik bloğu eklemek için '/' tuşuna basın", + "context": { + "item": { + "title": "Bağlam", + "desc": "Bağlam şablonunu ekle" + }, + "modal": { + "title": "Bağlamda {{num}} Knowledge", + "add": "Bağlam Ekle", + "footer": "Bağlamları aşağıdaki Bağlam bölümünde yönetebilirsiniz." + } + }, + "history": { + "item": { + "title": "Konuşma Geçmişi", + "desc": "Tarihi mesaj şablonunu ekle" + }, + "modal": { + "title": "ÖRNEK", + "user": "Merhaba", + "assistant": "Merhaba! Bugün size nasıl yardımcı olabilirim?", + "edit": "Konuşma Rol İsimlerini Düzenle" + } + }, + "variable": { + "item": { + "title": "Değişkenler & Harici Araçlar", + "desc": "Değişkenler & Harici Araçlar ekle" + }, + "outputToolDisabledItem": { + "title": "Değişkenler", + "desc": "Değişkenleri ekle" + }, + "modal": { + "add": "Yeni değişken", + "addTool": "Yeni araç" + } + }, + "query": { + "item": { + "title": "Sorgu", + "desc": "Kullanıcı sorgu şablonunu ekle" + } + }, + "existed": "Zaten prompt içinde mevcut" + }, + "imageUploader": { + "uploadFromComputer": "Bilgisayardan Yükle", + "uploadFromComputerReadError": "Görüntü okuma başarısız oldu, lütfen tekrar deneyin.", + "uploadFromComputerUploadError": "Görüntü yükleme başarısız oldu, lütfen tekrar yükleyin.", + "uploadFromComputerLimit": "Yükleme görüntüleri {{size}} MB'yi aşamaz", + "pasteImageLink": "Görüntü bağlantısını yapıştır", + "pasteImageLinkInputPlaceholder": "Görüntü bağlantısını buraya yapıştırın", + "pasteImageLinkInvalid": "Geçersiz görüntü bağlantısı", + "imageUpload": "Görüntü Yükleme" + }, + "tag": { + "placeholder": "Tüm Etiketler", + "addNew": "Yeni etiket ekle", + "noTag": "Etiket yok", + "noTagYet": "Henüz etiket yok", + "addTag": "Etiket ekle", + "editTag": "Etiketleri düzenle", + "manageTags": "Etiketleri Yönet", + "selectorPlaceholder": "Aramak veya oluşturmak için yazın", + "create": "Oluştur", + "delete": "Etiketi sil", + "deleteTip": "Etiket kullanılıyor, silinsin mi?", + "created": "Etiket başarıyla oluşturuldu", + "failed": "Etiket oluşturma başarısız oldu" + }, + "fileUploader": { + "pasteFileLink": "Dosya bağlantısını yapıştır", + "uploadFromComputer": "Yerel yükleme", + "uploadFromComputerReadError": "Dosya okuma başarısız oldu, lütfen tekrar deneyin.", + "uploadFromComputerLimit": "Dosya Yükleme {{size}}'ı aşamaz", + "uploadFromComputerUploadError": "Dosya yükleme başarısız oldu, lütfen tekrar yükleyin.", + "pasteFileLinkInputPlaceholder": "URL'yi giriniz...", + "pasteFileLinkInvalid": "Geçersiz dosya bağlantısı", + "fileExtensionNotSupport": "Dosya uzantısı desteklenmiyor", + "fileExtensionBlocked": "Bu dosya türü güvenlik nedenleriyle engellenmiştir", + "uploadDisabled": "Dosya yükleme devre dışı" + }, + "license": { + "expiring_plural": "{{count}} gün içinde sona eriyor", + "expiring": "Bir günde sona eriyor", + "unlimited": "Sınırsız" + }, + "pagination": { + "perPage": "Sayfa başına öğe sayısı" + }, + "theme": { + "light": "ışık", + "dark": "koyu", + "auto": "sistem", + "theme": "Tema" + }, + "compliance": { + "soc2Type1": "SOC 2 Tip I Raporu", + "sandboxUpgradeTooltip": "Yalnızca Profesyonel veya Takım planı ile kullanılabilir.", + "iso27001": "ISO 27001:2022 Sertifikası", + "professionalUpgradeTooltip": "Yalnızca Takım planı veya üstü ile mevcuttur.", + "gdpr": "GDPR DPA", + "soc2Type2": "SOC 2 Tip II Raporu" + }, + "imageInput": { + "supportedFormats": "PNG, JPG, JPEG, WEBP ve GIF'i destekler", + "dropImageHere": "Görüntünüzü buraya bırakın veya", + "browse": "tarayıcı" + }, + "you": "Sen", + "avatar": { + "deleteTitle": "Avatarı kaldır", + "deleteDescription": "Profil resminizi kaldırmak istediğinize emin misiniz? Hesabınız varsayılan başlangıç avatarını kullanacaktır." + }, + "feedback": { + "content": "Geri Bildirim İçeriği", + "subtitle": "Lütfen bu yanıtla ilgili neyin yanlış gittiğini bize bildirin", + "title": "Geri Bildirim Sağla", + "placeholder": "Lütfen neyin yanlış gittiğini veya nasıl iyileşebileceğimizi açıklayın..." + }, + "label": { + "optional": "(isteğe bağlı)" + }, + "noData": "Veri yok", + "dynamicSelect": { + "error": "Seçenekler yüklenemedi", + "noData": "Seçenek yok", + "loading": "Seçenekler yükleniyor...", + "selected": "{{count}} seçildi" + } +} diff --git a/web/i18n/tr-TR/common.ts b/web/i18n/tr-TR/common.ts deleted file mode 100644 index 5e7f2182c7..0000000000 --- a/web/i18n/tr-TR/common.ts +++ /dev/null @@ -1,792 +0,0 @@ -const translation = { - api: { - success: 'Başarılı', - actionSuccess: 'İşlem başarılı', - saved: 'Kaydedildi', - create: 'Oluşturuldu', - remove: 'Kaldırıldı', - actionFailed: 'İşlem başarısız', - }, - operation: { - create: 'Oluştur', - confirm: 'Onayla', - cancel: 'İptal', - clear: 'Temizle', - save: 'Kaydet', - saveAndEnable: 'Kaydet ve Etkinleştir', - edit: 'Düzenle', - add: 'Ekle', - added: 'Eklendi', - refresh: 'Yeniden Başlat', - reset: 'Sıfırla', - search: 'Ara', - change: 'Değiştir', - remove: 'Kaldır', - send: 'Gönder', - copy: 'Kopyala', - lineBreak: 'Satır sonu', - sure: 'Eminim', - download: 'İndir', - delete: 'Sil', - settings: 'Ayarlar', - setup: 'Kurulum', - getForFree: 'Ücretsiz edinin', - reload: 'Yeniden Yükle', - ok: 'Tamam', - log: 'log', - learnMore: 'Daha Fazla Bilgi', - params: 'Parametreler', - duplicate: 'Çoğalt', - rename: 'Yeniden Adlandır', - audioSourceUnavailable: 'AudioSource kullanılamıyor', - copyImage: 'Resmi Kopyala', - zoomOut: 'Uzaklaştırma', - openInNewTab: 'Yeni sekmede aç', - zoomIn: 'Yakınlaştırma', - view: 'Görünüm', - viewMore: 'DAHA FAZLA GÖSTER', - regenerate: 'Yenilemek', - saveAndRegenerate: 'Alt Parçaları Kaydetme ve Yeniden Oluşturma', - close: 'Kapatmak', - submit: 'Gönder', - skip: 'Gemi', - imageCopied: 'Kopyalanan görüntü', - deleteApp: 'Uygulamayı Sil', - copied: 'Kopya -lanan', - in: 'içinde', - viewDetails: 'Detayları Görüntüle', - downloadSuccess: 'İndirme Tamamlandı.', - format: 'Format', - more: 'Daha fazla', - downloadFailed: 'İndirme başarısız oldu. Lütfen daha sonra tekrar deneyin.', - selectAll: 'Hepsini Seç', - deSelectAll: 'Hepsini Seçme', - config: 'Konfigürasyon', - no: 'Hayır', - yes: 'Evet', - deleteConfirmTitle: 'Silinsin mi?', - confirmAction: 'Lütfen işleminizi onaylayın.', - noSearchResults: 'Hiç {{content}} bulunamadı', - resetKeywords: 'Anahtar kelimeleri sıfırla', - selectCount: '{{count}} Seçildi', - searchCount: '{{count}} {{content}} bul', - noSearchCount: '0 {{content}}', - now: 'Şimdi', - }, - errorMsg: { - fieldRequired: '{{field}} gereklidir', - urlError: 'URL http:// veya https:// ile başlamalıdır', - }, - placeholder: { - input: 'Lütfen girin', - select: 'Lütfen seçin', - search: 'Ara...', - }, - voice: { - language: { - zhHans: 'Chinese', - zhHant: 'Traditional Chinese', - enUS: 'English', - deDE: 'German', - frFR: 'French', - esES: 'Spanish', - itIT: 'Italian', - thTH: 'Thai', - idID: 'Indonesian', - jaJP: 'Japanese', - koKR: 'Korean', - ptBR: 'Portuguese', - ruRU: 'Russian', - ukUA: 'Ukrainian', - viVN: 'Vietnamese', - plPL: 'Polish', - roRO: 'Romence', - hiIN: 'Hintçe', - trTR: 'Türkçe', - faIR: 'Farsça', - slSI: 'Slovence', - arTN: 'Tunus Arapçası', - }, - }, - unit: { - char: 'karakter', - }, - actionMsg: { - noModification: 'Şu an için değişiklik yok.', - modifiedSuccessfully: 'Başarıyla değiştirildi', - modifiedUnsuccessfully: 'Değiştirme başarısız oldu', - copySuccessfully: 'Başarıyla kopyalandı', - paySucceeded: 'Ödeme başarılı oldu', - payCancelled: 'Ödeme iptal edildi', - generatedSuccessfully: 'Başarıyla oluşturuldu', - generatedUnsuccessfully: 'Oluşturma başarısız oldu', - }, - model: { - params: { - temperature: 'Sıcaklık', - temperatureTip: - 'Rastgeleliği kontrol eder: Sıcaklık düştükçe daha az rastgele tamamlamalar gerçekleşir. Sıcaklık sıfıra yaklaştıkça model deterministik ve tekrarlı hale gelir.', - top_p: 'Top P', - top_pTip: - 'Çeşitliliği nucleus örnekleme ile kontrol eder: 0.5, tüm olasılık ağırlıklı seçeneklerin yarısının dikkate alındığı anlamına gelir.', - presence_penalty: 'Varlık cezası', - presence_penaltyTip: - 'Şimdiye kadar metinde görünüp görünmediğine bağlı olarak yeni tokenları ne kadar cezalandıracağını belirler.\nModelin yeni konular hakkında konuşma olasılığını artırır.', - frequency_penalty: 'Frekans cezası', - frequency_penaltyTip: - 'Mevcut metindeki frekanslarına göre yeni tokenları ne kadar cezalandıracağını belirler.\nModelin aynı satırı aynen tekrarlama olasılığını azaltır.', - max_tokens: 'Maksimum token', - max_tokensTip: - 'Yanıtın maksimum uzunluğunu token cinsinden sınırlar.\nDaha büyük değerler prompt kelimeleri, sohbet kayıtları ve Bilgiler için bırakılacak alanı sınırlayabilir. \nİki üçün altında ayarlanması önerilir\ngpt-4-1106-preview, gpt-4-vision-preview maksimum token (giriş 128k, çıkış 4k).', - maxTokenSettingTip: 'Maksimum token ayarınız yüksek, bu da promptlar, sorgular ve veriler için alanı sınırlayabilir. Bu değeri 2/3\'ün altında ayarlamayı düşünün.', - setToCurrentModelMaxTokenTip: 'Maksimum token, mevcut modelin maksimum token\'ın %80\'ine {maxToken} olarak güncellendi.', - stop_sequences: 'Stop sıraları', - stop_sequencesTip: 'API, dört adede kadar sıra belirleyerek daha fazla token üretmeyi durduracaktır. Dönülen metin durdurma sırasını içermez.', - stop_sequencesPlaceholder: 'Sıra girin ve Tab tuşuna basın', - }, - tone: { - Creative: 'Yaratıcı', - Balanced: 'Dengeli', - Precise: 'Kesin', - Custom: 'Özel', - }, - addMoreModel: 'Daha fazla model eklemek için ayarlara gidin', - capabilities: 'MultiModal Yetenekler', - settingsLink: 'Model Sağlayıcı Ayarları', - }, - menus: { - status: 'beta', - explore: 'Keşfet', - apps: 'Studio', - plugins: 'Eklentiler', - pluginsTips: 'Üçüncü taraf eklentileri entegre edin veya ChatGPT uyumlu AI-Eklentileri oluşturun.', - datasets: 'Bilgi', - datasetsTips: 'YAKINDA: Kendi metin verilerinizi içe aktarın veya LLM bağlamını geliştirmek için Webhook aracılığıyla gerçek zamanlı veri yazın.', - newApp: 'Yeni Uygulama', - newDataset: 'Bilgi Oluştur', - tools: 'Araçlar', - exploreMarketplace: 'Marketplace\'i Keşfedin', - appDetail: 'Uygulama Detayı', - account: 'Hesap', - }, - userProfile: { - settings: 'Ayarlar', - emailSupport: 'E-posta Desteği', - workspace: 'Çalışma Alanı', - createWorkspace: 'Çalışma Alanı Oluştur', - helpCenter: 'Yardım', - roadmap: 'Yol haritası', - community: 'Topluluk', - about: 'Hakkında', - logout: 'Çıkış Yap', - support: 'Destek', - compliance: 'Uygunluk', - github: 'GitHub', - contactUs: 'Bize Ulaşın', - forum: 'Forum', - }, - settings: { - accountGroup: 'HESAP', - workplaceGroup: 'ÇALIŞMA ALANI', - account: 'Hesabım', - members: 'Üyeler', - billing: 'Faturalandırma', - integrations: 'Entegrasyonlar', - language: 'Dil', - provider: 'Model Sağlayıcı', - dataSource: 'Veri Kaynağı', - plugin: 'Eklentiler', - apiBasedExtension: 'API Uzantısı', - generalGroup: 'GENEL', - }, - account: { - avatar: 'Avatar', - name: 'İsim', - email: 'E-posta', - password: 'Şifre', - passwordTip: 'Geçici giriş kodlarını kullanmak istemiyorsanız kalıcı bir şifre ayarlayabilirsiniz', - setPassword: 'Şifre Ayarla', - resetPassword: 'Şifreyi Sıfırla', - currentPassword: 'Mevcut şifre', - newPassword: 'Yeni şifre', - confirmPassword: 'Şifreyi onayla', - notEqual: 'İki şifre aynı değil.', - langGeniusAccount: 'Dify hesabı', - langGeniusAccountTip: 'Dify hesabınız ve ilişkili kullanıcı verileri.', - editName: 'İsmi Düzenle', - showAppLength: '{{length}} uygulamayı göster', - delete: 'Hesabı Sil', - deleteTip: 'Hesabınızı silmek tüm verilerinizi kalıcı olarak siler ve geri alınamaz.', - account: 'Hesap', - myAccount: 'Hesabım', - studio: 'Dify Stüdyo', - deleteSuccessTip: 'Hesabınızın silme işleminin tamamlanması için zamana ihtiyacı var. Her şey bittiğinde size e-posta göndereceğiz.', - deletePrivacyLink: 'Gizlilik Politikası.', - feedbackTitle: 'Geri besleme', - verificationPlaceholder: '6 haneli kodu yapıştırın', - feedbackLabel: 'Hesabınızı neden sildiğinizi bize bildirin?', - deleteLabel: 'Onaylamak için lütfen aşağıya e-postanızı yazın', - deletePlaceholder: 'Lütfen e-posta adresinizi giriniz', - verificationLabel: 'Doğrulama Kodu', - feedbackPlaceholder: 'Opsiyonel', - permanentlyDeleteButton: 'Hesabı Kalıcı Olarak Sil', - deletePrivacyLinkTip: 'Verilerinizi nasıl işlediğimiz hakkında daha fazla bilgi için lütfen', - sendVerificationButton: 'Doğrulama Kodu Gönder', - workspaceName: 'Çalışma Alanı Adı', - workspaceIcon: 'Çalışma Alanı İkonu', - editWorkspaceInfo: 'Çalışma Alanı Bilgilerini Düzenle', - changeEmail: { - resendCount: '{{count}} saniye içinde yeniden gönder', - resend: 'Tekrar gönder', - newEmail: 'Yeni bir e-posta adresi oluşturun', - verifyNew: 'Yeni e-posta adresinizi doğrulayın', - changeTo: '{{email}}\'yi değiştir', - codePlaceholder: '6 haneli kodu yapıştırın', - continue: 'Devam et', - emailLabel: 'Yeni e-posta', - emailPlaceholder: 'Yeni bir e-posta girin', - existingEmail: 'Bu e-posta ile zaten bir kullanıcı var.', - sendVerifyCode: 'Doğrulama kodunu gönder', - title: 'E-posta Değiştir', - content3: 'Yeni bir e-posta adresi girin ve size bir doğrulama kodu göndereceğiz.', - verifyEmail: 'Mevcut e-posta adresinizi doğrulayın', - resendTip: 'Bir kod almadınız mı?', - content1: 'Devam ederseniz, tekrar kimlik doğrulaması için {{email}} adresine bir doğrulama kodu göndereceğiz.', - content4: 'Size {{email}} adresine geçici bir doğrulama kodu gönderdik.', - codeLabel: 'Doğrulama kodu', - content2: 'Sizin mevcut e-posta adresiniz {{email}}. Doğrulama kodu bu e-posta adresine gönderilmiştir.', - authTip: 'E-posta adresiniz değiştiğinde, eski e-posta adresinize bağlı Google veya GitHub hesapları bu hesaba giriş yapamayacak.', - unAvailableEmail: 'Bu e-posta geçici olarak kullanılamıyor.', - }, - }, - members: { - team: 'Takım', - invite: 'Ekle', - name: 'İSİM', - lastActive: 'SON AKTİF', - role: 'ROLLER', - pending: 'Beklemede...', - owner: 'Sahibi', - admin: 'Yönetici', - adminTip: 'Uygulama oluşturabilir ve takım ayarlarını yönetebilir', - normal: 'Normal', - normalTip: 'Sadece uygulamaları kullanabilir, uygulama oluşturamaz', - builder: 'Oluşturucu', - builderTip: 'Kendi uygulamalarını oluşturup düzenleyebilir', - editor: 'Editör', - editorTip: 'Uygulama oluşturabilir ve düzenleyebilir', - datasetOperator: 'Bilgi Yöneticisi', - datasetOperatorTip: 'Sadece bilgi tabanını yönetebilir', - inviteTeamMember: 'Takım Üyesi Ekle', - inviteTeamMemberTip: 'Giriş yaptıktan sonra takım verilerinize doğrudan erişebilirler.', - emailNotSetup: 'E-posta sunucusu kurulu değil, bu nedenle davet e-postaları gönderilemiyor. Lütfen kullanıcıları davetten sonra verilecek davet bağlantısı hakkında bilgilendirin.', - email: 'E-posta', - emailInvalid: 'Geçersiz E-posta Formatı', - emailPlaceholder: 'Lütfen e-postaları girin', - sendInvite: 'Davet Gönder', - invitedAsRole: '{{role}} kullanıcısı olarak davet edildi', - invitationSent: 'Davet gönderildi', - invitationSentTip: 'Davet gönderildi, Dify\'ye giriş yaparak takım verilerinize erişebilirler.', - invitationLink: 'Davet Linki', - failedInvitationEmails: 'Aşağıdaki kullanıcılar başarıyla davet edilmedi', - ok: 'Tamam', - removeFromTeam: 'Takımdan Kaldır', - removeFromTeamTip: 'Takım erişimi kaldırılacak', - setAdmin: 'Yönetici olarak ayarla', - setMember: 'Normal üye olarak ayarla', - setBuilder: 'Oluşturucu olarak ayarla', - setEditor: 'Editör olarak ayarla', - disInvite: 'Davetiyeyi iptal et', - deleteMember: 'Üyeyi Sil', - you: '(Siz)', - transferModal: { - resend: 'Tekrar gönder', - continue: 'Devam et', - transferPlaceholder: 'Bir çalışma alanı üyesi seçin…', - title: 'Çalışma alanı sahipliğini devret', - resendCount: '{{count}}s içinde yeniden gönder', - resendTip: 'Bir kod almadınız mı?', - transferLabel: 'Çalışma alanı sahipliğini şuna aktar', - verifyContent: 'Mevcut e-posta adresiniz {{email}}.', - warningTip: 'Yönetici üyesi olacaksın ve yeni sahibi tam kontrole sahip olacak.', - verifyContent2: 'Bu e-postaya yeniden kimlik doğrulama için geçici bir doğrulama kodu göndereceğiz.', - codeLabel: 'Doğrulama kodu', - warning: '“{{workspace}}” sahipliğini devretmek üzere olduğunuz için. Bu, hemen yürürlüğe girecek ve geri alınamaz.', - sendVerifyCode: 'Doğrulama kodunu gönder', - transfer: 'Çalışma alanı sahipliğini devret', - codePlaceholder: '6 haneli kodu yapıştırın', - verifyEmail: 'Mevcut e-posta adresinizi doğrulayın', - sendTip: 'Devam ederseniz, tekrar kimlik doğrulaması için {{email}} adresine bir doğrulama kodu göndereceğiz.', - }, - transferOwnership: 'Sahipliği Devret', - }, - integrations: { - connected: 'Bağlandı', - google: 'Google', - googleAccount: 'Google hesabıyla giriş yap', - github: 'GitHub', - githubAccount: 'GitHub hesabıyla giriş yap', - connect: 'Bağlan', - }, - language: { - displayLanguage: 'Görüntüleme Dili', - timezone: 'Zaman Dilimi', - }, - provider: { - apiKey: 'API Anahtarı', - enterYourKey: 'API anahtarınızı buraya girin', - invalidKey: 'Geçersiz OpenAI API anahtarı', - validatedError: 'Doğrulama hatası: ', - validating: 'Anahtar doğrulanıyor...', - saveFailed: 'API anahtarını kaydetme başarısız oldu', - apiKeyExceedBill: 'Bu API ANAHTARININ kullanılabilir kotası yok, lütfen okuyun', - addKey: 'Anahtar Ekle', - comingSoon: 'Yakında', - editKey: 'Düzenle', - invalidApiKey: 'Geçersiz API anahtarı', - azure: { - apiBase: 'API Tabanı', - apiBasePlaceholder: 'Azure OpenAI Endpoint\'inizin API Tabanı URL\'si.', - apiKey: 'API Anahtarı', - apiKeyPlaceholder: 'API anahtarınızı buraya girin', - helpTip: 'Azure OpenAI Service hakkında bilgi edinin', - }, - openaiHosted: { - openaiHosted: 'Barındırılan OpenAI', - onTrial: 'DENEMEDE', - exhausted: 'KOTA DOLU', - desc: 'Dify tarafından sağlanan OpenAI barındırma hizmeti, GPT-3.5 gibi modelleri kullanmanıza olanak tanır. Deneme kotanız bitmeden önce, diğer model sağlayıcılarını ayarlamanız gerekir.', - callTimes: 'Çağrı süreleri', - usedUp: 'Deneme kotası kullanıldı. Kendi Model Sağlayıcınızı ekleyin.', - useYourModel: 'Şu anda kendi Model Sağlayıcınızı kullanıyorsunuz.', - close: 'Kapat', - }, - anthropicHosted: { - anthropicHosted: 'Anthropic Claude', - onTrial: 'DENEMEDE', - exhausted: 'KOTA DOLU', - desc: 'Güçlü model, karmaşık diyaloglar ve yaratıcı içerik üretiminden ayrıntılı yönlendirmeye kadar geniş bir görev yelpazesi konusunda mükemmeldir.', - callTimes: 'Çağrı Süreleri', - usedUp: 'Deneme kotası kullanıldı. Kendi Model Sağlayıcınızı ekleyin.', - useYourModel: 'Şu anda kendi Model Sağlayıcınızı kullanıyorsunuz.', - close: 'Kapat', - trialQuotaTip: 'Antropik deneme kotanız 11/03/2025 tarihinde sona erecek ve bu tarihten sonra kullanılamayacaktır. Lütfen zamanında kullanın.', - }, - anthropic: { - using: 'Yerleştirme yeteneği,', - enableTip: 'Anthropic modelini etkinleştirmek için önce OpenAI veya Azure OpenAI hizmetine bağlanmanız gerekir.', - notEnabled: 'Etkin değil', - keyFrom: 'API anahtarınızı Anthropic\'ten edinin', - }, - encrypted: { - front: 'API ANAHTARINIZ şu kullanılarak şifrelenip saklanacak:', - back: ' teknolojisi.', - }, - }, - modelProvider: { - notConfigured: 'Sistem modeli henüz tam olarak yapılandırılmadı ve bazı işlevler kullanılamayabilir.', - systemModelSettings: 'Sistem Model Ayarları', - systemModelSettingsLink: 'Sistem modelini ayarlamak neden gereklidir?', - selectModel: 'Modelinizi seçin', - setupModelFirst: 'Lütfen önce modelinizi ayarlayın', - systemReasoningModel: { - key: 'Sistem Çıkarım Modeli', - tip: 'Uygulamalar oluşturmak ve diyalog adı oluşturma ve sonraki soru önerisi gibi özelliklerin otomatikleştirilmesi için kullanılacak varsayılan çıkarım modelini ayarlayın.', - }, - embeddingModel: { - key: 'Yerleştirme Modeli', - tip: 'Bilginin belge yerleştirme işlemi için varsayılan modeli ayarlayın, Bilginin geri alımı ve içe aktarımı için bu Yerleştirme modeli kullanılarak vektörizasyon işlemleri yapılır. Değiştirilmesi, içe aktarılan Bilgilere ve sorulara arasındaki vektör boyutlarının tutarsız olmasına neden olarak geri alım hatasına yol açar. Geri alım hatasını önlemek için önce modeli keyfi olarak değiştirmeyin.', - required: 'Yerleştirme Modeli gereklidir', - }, - speechToTextModel: { - key: 'Konuşmadan Metne Modeli', - tip: 'Konuşmada konuşmadan metne giriş için varsayılan modeli ayarlayın.', - }, - ttsModel: { - key: 'Metinden Konuşmaya Modeli', - tip: 'Konuşmada metinden konuşmaya giriş için varsayılan modeli ayarlayın.', - }, - rerankModel: { - key: 'Yeniden Sıralama Modeli', - tip: 'Yeniden sıralama modeli, kullanıcı sorgusuyla anlam eşleştirmesine dayalı olarak aday belge listesini yeniden sıralayacak ve anlam sıralama sonuçlarını iyileştirecektir.', - }, - apiKey: 'API-KEY', - quota: 'Kota', - searchModel: 'Model ara', - noModelFound: '{{model}} için model bulunamadı', - models: 'Modeller', - showMoreModelProvider: 'Daha fazla model sağlayıcı göster', - selector: { - tip: 'Bu model kaldırıldı. Lütfen bir model ekleyin veya başka bir model seçin.', - emptyTip: 'Kullanılabilir model yok', - emptySetting: 'Lütfen ayarlara gidip yapılandırın', - rerankTip: 'Lütfen Yeniden Sıralama modelini ayarlayın', - }, - card: { - quota: 'KOTA', - onTrial: 'Deneme Sürümünde', - paid: 'Ücretli', - quotaExhausted: 'Kota Tükendi', - callTimes: 'Çağrı Süreleri', - tokens: 'Tokenler', - buyQuota: 'Kota Satın Al', - priorityUse: 'Öncelikli Kullan', - removeKey: 'API Anahtarını Kaldır', - tip: 'Öncelikle ücretli kota kullanılacaktır. Deneme kotası, ücretli kota tükendiğinde kullanılacaktır.', - }, - item: { - deleteDesc: '{{modelName}} şu anda sistem çıkarım modeli olarak kullanılmaktadır. Kaldırıldıktan sonra bazı işlevler kullanılamayabilir. Lütfen onaylayın.', - freeQuota: 'ÜCRETSİZ KOTA', - }, - addApiKey: 'API anahtarınızı ekleyin', - invalidApiKey: 'Geçersiz API anahtarı', - encrypted: { - front: 'API ANAHTARINIZ şu kullanılarak şifrelenip saklanacak:', - back: ' teknolojisi.', - }, - freeQuota: { - howToEarn: 'Nasıl kazanılır', - }, - addMoreModelProvider: 'DAHA FAZLA MODEL SAĞLAYICI EKLEYİN', - addModel: 'Model Ekle', - modelsNum: '{{num}} Model', - showModels: 'Modelleri Göster', - showModelsNum: '{{num}} Modeli Göster', - collapse: 'Daralt', - config: 'Yapılandır', - modelAndParameters: 'Model ve Parametreler', - model: 'Model', - featureSupported: '{{feature}} desteklenir', - callTimes: 'Çağrı Süreleri', - credits: 'Mesaj Kredileri', - buyQuota: 'Kota Satın Al', - getFreeTokens: 'Ücretsiz Token Al', - priorityUsing: 'Öncelikli Kullanım', - deprecated: 'Kullanım dışı', - confirmDelete: 'silme onayı?', - quotaTip: 'Kalan kullanılabilir ücretsiz tokenler', - loadPresets: 'Hazır Ayarları Yükle', - parameters: 'PARAMETRELER', - loadBalancing: 'Yük dengeleme', - loadBalancingDescription: 'Birden fazla kimlik bilgisi grubu ile baskıyı azaltın.', - loadBalancingHeadline: 'Yük Dengeleme', - configLoadBalancing: 'Yük Dengelemeyi Yapılandır', - modelHasBeenDeprecated: 'Bu model kullanım dışıdır', - providerManaged: 'Sağlayıcı tarafından yönetilen', - providerManagedDescription: 'Model sağlayıcı tarafından sağlanan tek bir kimlik bilgisi grubunu kullanın.', - defaultConfig: 'Varsayılan Yapılandırma', - apiKeyStatusNormal: 'API Anahtarının durumu normal', - apiKeyRateLimit: 'Hız sınırına ulaşıldı, {{seconds}} saniye sonra tekrar kullanılabilir', - addConfig: 'Yapılandırma Ekle', - editConfig: 'Yapılandırmayı Düzenle', - loadBalancingLeastKeyWarning: 'Yük dengeleme etkinleştirmek için en az 2 anahtar etkinleştirilmelidir.', - loadBalancingInfo: 'Varsayılan olarak, yük dengeleme Yuvarlakrobin stratejisini kullanır. Hız sınırlaması tetiklenirse, 1 dakikalık bir soğuma süresi uygulanacaktır.', - upgradeForLoadBalancing: 'Yük Dengelemeyi etkinleştirmek için planınızı yükseltin.', - installProvider: 'Model sağlayıcılarını yükleme', - toBeConfigured: 'Yapılandırılacak', - emptyProviderTip: 'Lütfen önce bir model sağlayıcı yükleyin.', - emptyProviderTitle: 'Model sağlayıcı ayarlanmadı', - discoverMore: 'Daha fazlasını keşfedin', - configureTip: 'Api-key\'i ayarlayın veya kullanmak için model ekleyin', - auth: { - apiKeyModal: { - addModel: 'Model ekle', - title: 'API Anahtar Yetkilendirme Yapılandırması', - desc: 'Kimlik bilgileri yapılandırıldıktan sonra, çalışma alanındaki tüm üyeler bu modeli uygulamaları düzenlerken kullanabilir.', - }, - unAuthorized: 'Yetkisiz', - authRemoved: 'Yazar kaldırıldı', - providerManaged: 'Sağlayıcı yönetimi', - configModel: 'Modeli yapılandır', - apiKeys: 'API Anahtarları', - addApiKey: 'API Anahtarını Ekle', - addCredential: 'Kimlik bilgisi ekle', - addNewModel: 'Yeni model ekle', - providerManagedTip: 'Mevcut yapılandırma sağlayıcı tarafından barındırılmaktadır.', - modelCredentials: 'Model kimlik bilgileri', - specifyModelCredentialTip: 'Yapılandırılmış bir model kimliği kullanın.', - configLoadBalancing: 'Yük Dengeleme Yapılandırması', - addModelCredential: 'Model kimlik bilgisi ekle', - specifyModelCredential: 'Model kimlik bilgilerini belirtin', - authorizationError: 'Yetkilendirme hatası', - removeModel: 'Modeli Kaldır', - customModelCredentials: 'Özel Model Kimlik Bilgileri', - manageCredentials: 'Kimlik Bilgilerini Yönet', - addModel: 'Model ekle', - modelCredential: 'Model kimlik bilgileri', - editModelCredential: 'Model kimlik bilgilerini düzenleme', - selectModelCredential: 'Bir model kimlik bilgisi seçin', - addNewModelCredential: 'Yeni model kimlik bilgisi ekleme', - customModelCredentialsDeleteTip: 'Kimlik bilgisi kullanımda ve silinemiyor', - }, - parametersInvalidRemoved: 'Bazı parametreler geçersizdir ve kaldırılmıştır.', - installDataSourceProvider: 'Veri kaynağı sağlayıcılarını yükle', - }, - dataSource: { - add: 'Bir veri kaynağı ekle', - connect: 'Bağlan', - configure: 'Yapılandır', - notion: { - title: 'Notion', - description: 'Bilgi için veri kaynağı olarak Notion kullanma.', - connectedWorkspace: 'Bağlı çalışma alanı', - addWorkspace: 'Çalışma alanı ekle', - connected: 'Bağlandı', - disconnected: 'Bağlantı Kesildi', - changeAuthorizedPages: 'Yetkilendirilen sayfaları değiştir', - pagesAuthorized: 'Yetkilendirilen sayfalar', - sync: 'Senkronize et', - remove: 'Kaldır', - selector: { - pageSelected: 'Seçilen Sayfalar', - searchPages: 'Sayfaları ara...', - noSearchResult: 'Arama sonucu yok', - addPages: 'Sayfa ekle', - preview: 'ÖNİZLEME', - }, - integratedAlert: 'Notion, dahili kimlik bilgileri aracılığıyla entegre edilmiştir, yeniden yetkilendirme yapmaya gerek yoktur.', - }, - website: { - title: 'Web Sitesi', - description: 'Web tarayıcı kullanarak web sitelerinden içerik içe aktarın.', - with: 'İle', - configuredCrawlers: 'Yapılandırılmış tarayıcılar', - active: 'Aktif', - inactive: 'Pasif', - }, - }, - plugin: { - serpapi: { - apiKey: 'API Anahtarı', - apiKeyPlaceholder: 'API anahtarınızı girin', - keyFrom: 'SerpAPI Hesap Sayfasından SerpAPI anahtarınızı alın', - }, - }, - apiBasedExtension: { - title: 'API uzantıları merkezi API yönetimi sağlar, Dify\'nin uygulamaları arasında kolay kullanım için yapılandırmayı basitleştirir.', - link: 'Kendi API Uzantınızı nasıl geliştireceğinizi öğrenin.', - add: 'API Uzantısı Ekle', - selector: { - title: 'API Uzantısı', - placeholder: 'Lütfen API uzantısını seçin', - manage: 'API Uzantısını Yönet', - }, - modal: { - title: 'API Uzantısı Ekle', - editTitle: 'API Uzantısını Düzenle', - name: { - title: 'Ad', - placeholder: 'Lütfen adı girin', - }, - apiEndpoint: { - title: 'API Uç Noktası', - placeholder: 'Lütfen API uç noktasını girin', - }, - apiKey: { - title: 'API anahtarı', - placeholder: 'Lütfen API anahtarını girin', - lengthError: 'API anahtarı uzunluğu 5 karakterden az olamaz', - }, - }, - type: 'Tür', - }, - about: { - changeLog: 'Değişiklik Günlüğü', - updateNow: 'Şimdi güncelle', - nowAvailable: 'Dify {{version}} şimdi mevcut.', - latestAvailable: 'Dify {{version}} en son mevcut sürüm.', - }, - appMenus: { - overview: 'İzleme', - promptEng: 'Orchestrate', - apiAccess: 'API Erişimi', - logAndAnn: 'Günlükler & Anlamlandırmalar', - logs: 'Günlükler', - }, - environment: { - testing: 'TEST', - development: 'GELİŞTİRME', - }, - appModes: { - completionApp: 'Metin Üreteci', - chatApp: 'Sohbet Uygulaması', - }, - datasetMenus: { - documents: 'Belgeler', - hitTesting: 'Geri Alım Testi', - settings: 'Ayarlar', - emptyTip: 'Bilgi ilişkilendirilmemiş, ilişkilendirme işlemini tamamlamak için uygulama veya eklentiye gidin.', - viewDoc: 'Dökümantasyon görüntüle', - relatedApp: 'bağlantılı uygulamalar', - noRelatedApp: 'Bağlı uygulama yok', - pipeline: 'Ardışık düzen', - }, - voiceInput: { - speaking: 'Şimdi konuş...', - converting: 'Metne dönüştürülüyor...', - notAllow: 'mikrofon yetkilendirilmedi', - }, - 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: 'Konuşmayı Yeniden Adlandır', - conversationName: 'Konuşma adı', - conversationNamePlaceholder: 'Konuşma adını girin', - conversationNameCanNotEmpty: 'Konuşma adı gereklidir', - citation: { - title: 'ALINTILAR', - linkToDataset: 'Bilgiye Bağlantı', - characters: 'Karakterler:', - hitCount: 'Geri Alım Sayısı:', - vectorHash: 'Vektör Hash:', - hitScore: 'Geri Alım Skoru:', - }, - inputPlaceholder: '{{botName}} ile konuş', - thought: 'Düşünce', - thinking: 'Düşünü...', - resend: 'Yeniden gönder', - }, - promptEditor: { - placeholder: 'Prompt kelimenizi buraya yazın, değişken eklemek için \'{\' tuşuna, prompt içerik bloğu eklemek için \'/\' tuşuna basın', - context: { - item: { - title: 'Bağlam', - desc: 'Bağlam şablonunu ekle', - }, - modal: { - title: 'Bağlamda {{num}} Knowledge', - add: 'Bağlam Ekle', - footer: 'Bağlamları aşağıdaki Bağlam bölümünde yönetebilirsiniz.', - }, - }, - history: { - item: { - title: 'Konuşma Geçmişi', - desc: 'Tarihi mesaj şablonunu ekle', - }, - modal: { - title: 'ÖRNEK', - user: 'Merhaba', - assistant: 'Merhaba! Bugün size nasıl yardımcı olabilirim?', - edit: 'Konuşma Rol İsimlerini Düzenle', - }, - }, - variable: { - item: { - title: 'Değişkenler & Harici Araçlar', - desc: 'Değişkenler & Harici Araçlar ekle', - }, - outputToolDisabledItem: { - title: 'Değişkenler', - desc: 'Değişkenleri ekle', - }, - modal: { - add: 'Yeni değişken', - addTool: 'Yeni araç', - }, - }, - query: { - item: { - title: 'Sorgu', - desc: 'Kullanıcı sorgu şablonunu ekle', - }, - }, - existed: 'Zaten prompt içinde mevcut', - }, - imageUploader: { - uploadFromComputer: 'Bilgisayardan Yükle', - uploadFromComputerReadError: 'Görüntü okuma başarısız oldu, lütfen tekrar deneyin.', - uploadFromComputerUploadError: 'Görüntü yükleme başarısız oldu, lütfen tekrar yükleyin.', - uploadFromComputerLimit: 'Yükleme görüntüleri {{size}} MB\'yi aşamaz', - pasteImageLink: 'Görüntü bağlantısını yapıştır', - pasteImageLinkInputPlaceholder: 'Görüntü bağlantısını buraya yapıştırın', - pasteImageLinkInvalid: 'Geçersiz görüntü bağlantısı', - imageUpload: 'Görüntü Yükleme', - }, - tag: { - placeholder: 'Tüm Etiketler', - addNew: 'Yeni etiket ekle', - noTag: 'Etiket yok', - noTagYet: 'Henüz etiket yok', - addTag: 'Etiket ekle', - editTag: 'Etiketleri düzenle', - manageTags: 'Etiketleri Yönet', - selectorPlaceholder: 'Aramak veya oluşturmak için yazın', - create: 'Oluştur', - delete: 'Etiketi sil', - deleteTip: 'Etiket kullanılıyor, silinsin mi?', - created: 'Etiket başarıyla oluşturuldu', - failed: 'Etiket oluşturma başarısız oldu', - }, - fileUploader: { - pasteFileLink: 'Dosya bağlantısını yapıştır', - uploadFromComputer: 'Yerel yükleme', - uploadFromComputerReadError: 'Dosya okuma başarısız oldu, lütfen tekrar deneyin.', - uploadFromComputerLimit: 'Dosya Yükleme {{size}}\'ı aşamaz', - uploadFromComputerUploadError: 'Dosya yükleme başarısız oldu, lütfen tekrar yükleyin.', - pasteFileLinkInputPlaceholder: 'URL\'yi giriniz...', - pasteFileLinkInvalid: 'Geçersiz dosya bağlantısı', - fileExtensionNotSupport: 'Dosya uzantısı desteklenmiyor', - fileExtensionBlocked: 'Bu dosya türü güvenlik nedenleriyle engellenmiştir', - uploadDisabled: 'Dosya yükleme devre dışı', - }, - license: { - expiring_plural: '{{count}} gün içinde sona eriyor', - expiring: 'Bir günde sona eriyor', - unlimited: 'Sınırsız', - }, - pagination: { - perPage: 'Sayfa başına öğe sayısı', - }, - theme: { - light: 'ışık', - dark: 'koyu', - auto: 'sistem', - theme: 'Tema', - }, - compliance: { - soc2Type1: 'SOC 2 Tip I Raporu', - sandboxUpgradeTooltip: 'Yalnızca Profesyonel veya Takım planı ile kullanılabilir.', - iso27001: 'ISO 27001:2022 Sertifikası', - professionalUpgradeTooltip: 'Yalnızca Takım planı veya üstü ile mevcuttur.', - gdpr: 'GDPR DPA', - soc2Type2: 'SOC 2 Tip II Raporu', - }, - imageInput: { - supportedFormats: 'PNG, JPG, JPEG, WEBP ve GIF\'i destekler', - dropImageHere: 'Görüntünüzü buraya bırakın veya', - browse: 'tarayıcı', - }, - you: 'Sen', - avatar: { - deleteTitle: 'Avatarı kaldır', - deleteDescription: 'Profil resminizi kaldırmak istediğinize emin misiniz? Hesabınız varsayılan başlangıç avatarını kullanacaktır.', - }, - feedback: { - content: 'Geri Bildirim İçeriği', - subtitle: 'Lütfen bu yanıtla ilgili neyin yanlış gittiğini bize bildirin', - title: 'Geri Bildirim Sağla', - placeholder: 'Lütfen neyin yanlış gittiğini veya nasıl iyileşebileceğimizi açıklayın...', - }, - label: { - optional: '(isteğe bağlı)', - }, - noData: 'Veri yok', - dynamicSelect: { - error: 'Seçenekler yüklenemedi', - noData: 'Seçenek yok', - loading: 'Seçenekler yükleniyor...', - selected: '{{count}} seçildi', - }, -} - -export default translation diff --git a/web/i18n/tr-TR/custom.json b/web/i18n/tr-TR/custom.json new file mode 100644 index 0000000000..5a124334da --- /dev/null +++ b/web/i18n/tr-TR/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "Özelleştirme", + "upgradeTip": { + "prefix": "Markanızı özelleştirmek için planınızı yükseltin", + "suffix": ".", + "des": "Markanızı özelleştirmek için planınızı yükseltin", + "title": "Planınızı yükseltin" + }, + "webapp": { + "title": "web app markasını özelleştir", + "removeBrand": "Powered by Dify'i kaldır", + "changeLogo": "Powered by Brand Resmini Değiştir", + "changeLogoTip": "SVG veya PNG formatında, en az 40x40px boyutunda" + }, + "app": { + "title": "Uygulama başlığı markasını özelleştir", + "changeLogoTip": "SVG veya PNG formatında, en az 80x80px boyutunda" + }, + "upload": "Yükle", + "uploading": "Yükleniyor", + "uploadedFail": "Resim yükleme başarısız oldu, lütfen tekrar yükleyin.", + "change": "Değiştir", + "apply": "Uygula", + "restore": "Varsayılan Ayarları Geri Yükle", + "customize": { + "contactUs": " bizimle iletişime geçin ", + "prefix": "Uygulama içindeki marka logosunu özelleştirmek için, lütfen", + "suffix": "Enterprise sürümüne yükseltin." + } +} diff --git a/web/i18n/tr-TR/custom.ts b/web/i18n/tr-TR/custom.ts deleted file mode 100644 index 83135a1787..0000000000 --- a/web/i18n/tr-TR/custom.ts +++ /dev/null @@ -1,32 +0,0 @@ -const translation = { - custom: 'Özelleştirme', - upgradeTip: { - prefix: 'Markanızı özelleştirmek için planınızı yükseltin', - suffix: '.', - des: 'Markanızı özelleştirmek için planınızı yükseltin', - title: 'Planınızı yükseltin', - }, - webapp: { - title: 'web app markasını özelleştir', - removeBrand: 'Powered by Dify\'i kaldır', - changeLogo: 'Powered by Brand Resmini Değiştir', - changeLogoTip: 'SVG veya PNG formatında, en az 40x40px boyutunda', - }, - app: { - title: 'Uygulama başlığı markasını özelleştir', - changeLogoTip: 'SVG veya PNG formatında, en az 80x80px boyutunda', - }, - upload: 'Yükle', - uploading: 'Yükleniyor', - uploadedFail: 'Resim yükleme başarısız oldu, lütfen tekrar yükleyin.', - change: 'Değiştir', - apply: 'Uygula', - restore: 'Varsayılan Ayarları Geri Yükle', - customize: { - contactUs: ' bizimle iletişime geçin ', - prefix: 'Uygulama içindeki marka logosunu özelleştirmek için, lütfen', - suffix: 'Enterprise sürümüne yükseltin.', - }, -} - -export default translation diff --git a/web/i18n/tr-TR/dataset-creation.json b/web/i18n/tr-TR/dataset-creation.json new file mode 100644 index 0000000000..5e543db62d --- /dev/null +++ b/web/i18n/tr-TR/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "Bilgi" + }, + "one": "Veri kaynağı seçin", + "two": "Metin Ön İşleme ve Temizleme", + "three": "Çalıştır ve Bitir" + }, + "error": { + "unavailable": "Bu Bilgi kullanılamıyor" + }, + "firecrawl": { + "configFirecrawl": "🔥Firecrawl'ı Yapılandır", + "apiKeyPlaceholder": "firecrawl.dev'den API anahtarı", + "getApiKeyLinkText": "API anahtarınızı firecrawl.dev'den alın" + }, + "stepOne": { + "filePreview": "Dosya Önizleme", + "pagePreview": "Sayfa Önizleme", + "dataSourceType": { + "file": "Dosyadan içe aktar", + "notion": "Notion'dan senkronize et", + "web": "Web sitesinden senkronize et" + }, + "uploader": { + "title": "Dosya yükle", + "button": "Dosyaları veya klasörleri sürükleyip bırakın veya", + "buttonSingleFile": "Dosyayı sürükleyip bırakın veya", + "browse": "Göz atın", + "tip": "Destekler {{supportTypes}}. Her biri en fazla {{size}}MB.", + "validation": { + "typeError": "Dosya tipi desteklenmiyor", + "size": "Dosya çok büyük. Maksimum {{size}} MB", + "count": "Birden fazla dosya desteklenmiyor", + "filesNumber": "Toplu yükleme sınırına ulaştınız, {{filesNumber}} dosya." + }, + "cancel": "İptal", + "change": "Değiştir", + "failed": "Yükleme başarısız" + }, + "notionSyncTitle": "Notion bağlı değil", + "notionSyncTip": "Notion ile senkronize etmek için önce Notion'a bağlanılmalıdır.", + "connect": "Bağlanmaya git", + "button": "Sonraki", + "emptyDatasetCreation": "Boş bir bilgi oluşturmak istiyorum", + "modal": { + "title": "Boş bir bilgi oluştur", + "tip": "Boş bir bilgi hiçbir belge içermeyecektir ve dilediğiniz zaman belge yükleyebilirsiniz.", + "input": "Bilgi adı", + "placeholder": "Lütfen girin", + "nameNotEmpty": "Ad boş olamaz", + "nameLengthInvalid": "Ad 1 ile 40 karakter arasında olmalıdır", + "cancelButton": "İptal", + "confirmButton": "Oluştur", + "failed": "Oluşturma başarısız" + }, + "website": { + "fireCrawlNotConfigured": "Firecrawl yapılandırılmamış", + "fireCrawlNotConfiguredDescription": "Firecrawl'ı kullanmak için API anahtarı ile yapılandırın.", + "configure": "Yapılandır", + "run": "Çalıştır", + "firecrawlTitle": "🔥Firecrawl ile web içeriğini çıkarın", + "firecrawlDoc": "Firecrawl dokümanları", + "options": "Seçenekler", + "crawlSubPage": "Alt sayfaları tarayın", + "limit": "Sınır", + "maxDepth": "Maksimum derinlik", + "excludePaths": "Yolları hariç tut", + "includeOnlyPaths": "Yalnızca yolları dahil et", + "extractOnlyMainContent": "Sadece ana içeriği çıkar (başlıklar, navigasyonlar, altbilgiler vb. yok)", + "exceptionErrorTitle": "Firecrawl işi çalıştırılırken bir istisna meydana geldi:", + "unknownError": "Bilinmeyen hata", + "totalPageScraped": "Toplam kazınan sayfa:", + "selectAll": "Hepsini Seç", + "resetAll": "Hepsini Sıfırla", + "scrapTimeInfo": "Toplam {{total}} sayfa {{time}}s içinde kazındı", + "preview": "Önizleme", + "maxDepthTooltip": "Girilen URL'ye göre tarama için maksimum derinlik. Derinlik 0 sadece girilen url sayfasını kazır, derinlik 1 url ve girilen URL + bir / 'dan sonraki her şeyi kazır ve böyle devam eder.", + "jinaReaderTitle": "Tüm siteyi Markdown'a dönüştürün", + "useSitemap": "Site haritasını kullan", + "useSitemapTooltip": "Siteyi taramak için site haritasını takip edin. Aksi takdirde, Jina Reader sayfa alaka düzeyine göre yinelemeli olarak tarar ve daha az ancak daha yüksek kaliteli sayfalar verir.", + "jinaReaderNotConfiguredDescription": "Erişim için ücretsiz API anahtarınızı girerek Jina Reader'ı kurun.", + "chooseProvider": "Bir sağlayıcı seçin", + "jinaReaderDoc": "Jina Reader hakkında daha fazla bilgi edinin", + "jinaReaderNotConfigured": "Jina Reader yapılandırılmadı", + "jinaReaderDocLink": "https://jina.ai/reader", + "waterCrawlNotConfiguredDescription": "Watercrawl'ı kullanmak için API anahtarı ile yapılandırın.", + "configureFirecrawl": "Firecrawl'ı yapılandır", + "watercrawlDoc": "Watercrawl belgeleri", + "waterCrawlNotConfigured": "Watercrawl yapılandırılmamış", + "watercrawlTitle": "Watercrawl ile web içeriğini çıkar", + "configureJinaReader": "Jina Okuyucusunu Yapılandır", + "configureWatercrawl": "Watercrawl'ı yapılandır", + "running": "Koşarak" + }, + "cancel": "İptal" + }, + "stepTwo": { + "segmentation": "Parçalanma ayarları", + "auto": "Otomatik", + "autoDescription": "Parçalanma ve ön işleme kurallarını otomatik olarak ayarlayın. Bilgisiz kullanıcıların bunu seçmesi önerilir.", + "custom": "Özel", + "customDescription": "Parçalanma kurallarını, parçalanma uzunluğunu ve ön işleme kurallarını kişiselleştirin.", + "separator": "Parçalanma belirleyicisi", + "separatorPlaceholder": "Örneğin, yeni satır (\\\\n) veya özel ayırıcı (örn. \"***\")", + "maxLength": "Maksimum parça uzunluğu", + "overlap": "Parça örtüşmesi", + "overlapTip": "Parça örtüşmesini ayarlamak, aralarındaki anlamsal bağı koruyabilir, geri alım etkisini artırır. Maksimum parça boyutunun %10-%25'ini ayarlamanız önerilir.", + "overlapCheck": "parça örtüşmesi maksimum parça uzunluğundan büyük olmamalıdır", + "rules": "Metin ön işleme kuralları", + "removeExtraSpaces": "Art arda gelen boşlukları, yeni satırları ve sekmeleri değiştirin", + "removeUrlEmails": "Tüm URL'leri ve e-posta adreslerini silin", + "removeStopwords": "\"a\", \"an\", \"the\" gibi durdurma kelimelerini silin", + "preview": "Onayla ve Önizleme", + "reset": "Sıfırla", + "indexMode": "Dizin modu", + "qualified": "Yüksek Kalite", + "recommend": "Önerilen", + "qualifiedTip": "Kullanıcılar sorguladığında daha yüksek doğruluk sağlamak için varsayılan sistem yerleştirme arayüzünü çağırır.", + "warning": "Lütfen önce model sağlayıcı API anahtarını ayarlayın.", + "click": "Ayarlara git", + "economical": "Ekonomik", + "economicalTip": "Doğruluğu azaltmak için çevrimdışı vektör motorlarını, anahtar kelime dizinlerini vb. kullanın, token harcamadan", + "QATitle": "Soru ve Yanıt formatında parçalama", + "QATip": "Bu seçeneği etkinleştirmek daha fazla token tüketecektir", + "QALanguage": "Kullanarak parçalara ayır", + "estimateCost": "Tahmin", + "estimateSegment": "Tahmini parçalar", + "segmentCount": "parçalar", + "calculating": "Hesaplanıyor...", + "fileSource": "Belgeleri ön işleme", + "notionSource": "Sayfaları ön işleme", + "websiteSource": "Web sitesini ön işleme", + "other": "ve diğer", + "fileUnit": " dosyalar", + "notionUnit": " sayfalar", + "webpageUnit": " sayfalar", + "previousStep": "Önceki adım", + "nextStep": "Kaydet ve İşle", + "save": "Kaydet ve İşle", + "cancel": "İptal", + "sideTipTitle": "Neden parçalanma ve ön işleme?", + "sideTipP1": "Metin verileri işlerken, parçalama ve temizleme iki önemli ön işleme adımıdır.", + "sideTipP2": "Parçalanma, uzun metinleri paragraflara böler, böylece modeller daha iyi anlayabilir. Bu, model sonuçlarının kalitesini ve alaka düzeyini artırır.", + "sideTipP3": "Temizleme, gereksiz karakterleri ve formatları kaldırarak Bilginin daha temiz ve daha kolay analiz edilmesini sağlar.", + "sideTipP4": "Uygun parçalama ve temizleme, model performansını iyileştirir, daha doğru ve değerli sonuçlar sağlar.", + "previewTitle": "Önizleme", + "previewTitleButton": "Önizleme", + "previewButton": "Q&A formatına geçiş", + "previewSwitchTipStart": "Geçerli parça önizlemesi metin formatındadır, soru ve yanıt formatına geçiş ek tüketir", + "previewSwitchTipEnd": "token", + "characters": "karakterler", + "indexSettingTip": "Dizin yöntemini değiştirmek için, lütfen", + "retrievalSettingTip": "Dizin yöntemini değiştirmek için, lütfen", + "datasetSettingLink": "Bilgi ayarlarına gidin.", + "separatorTip": "Sınırlayıcı, metni ayırmak için kullanılan karakterdir. \\n\\n ve \\n, paragrafları ve satırları ayırmak için yaygın olarak kullanılan sınırlayıcılardır. Virgüllerle (\\n\\n,\\n) birleştirildiğinde, paragraflar maksimum öbek uzunluğunu aştığında satırlarla bölünür. Kendiniz tarafından tanımlanan özel sınırlayıcıları da kullanabilirsiniz (örn.", + "maxLengthCheck": "Maksimum yığın uzunluğu {{limit}}'den az olmalıdır", + "paragraph": "Paragraf", + "parentChildDelimiterTip": "Sınırlayıcı, metni ayırmak için kullanılan karakterdir. \\n\\n orijinal belgeyi büyük üst parçalara bölmek için önerilir. Kendiniz tarafından tanımlanan özel sınırlayıcıları da kullanabilirsiniz.", + "parentChild": "Ebeveyn-çocuk", + "previewChunkCount": "{{sayı}} Tahmini parçalar", + "parentChildChunkDelimiterTip": "Sınırlayıcı, metni ayırmak için kullanılan karakterdir. \\n Üst parçaları küçük alt parçalara bölmek için önerilir. Kendiniz tarafından tanımlanan özel sınırlayıcıları da kullanabilirsiniz.", + "qaSwitchHighQualityTipContent": "Şu anda, yalnızca yüksek kaliteli dizin yöntemi Soru-Cevap biçimi öbeklerini destekler. Yüksek kalite moduna geçmek ister misiniz?", + "previewChunkTip": "Önizlemeyi yüklemek için soldaki 'Önizleme Parçası' düğmesini tıklayın", + "qaSwitchHighQualityTipTitle": "Soru-Cevap Formatı Yüksek Kaliteli İndeksleme Yöntemi Gerektirir", + "notAvailableForQA": "Soru-Cevap Dizini için kullanılamaz", + "generalTip": "Genel metin parçalama modu, alınan ve geri çağrılan parçalar aynıdır.", + "paragraphTip": "Bu mod, metni sınırlayıcılara ve maksimum öbek uzunluğuna göre paragraflara böler ve bölünmüş metni almak için üst öbek olarak kullanır.", + "parentChildTip": "Üst-alt modu kullanılırken, alt öbek alma için kullanılır ve üst öbek bağlam olarak geri çağırma için kullanılır.", + "fullDocTip": "Belgenin tamamı üst yığın olarak kullanılır ve doğrudan alınır. Performans nedenleriyle, 10000 jetonu aşan metnin otomatik olarak kesileceğini lütfen unutmayın.", + "fullDoc": "Tam Doküman", + "useQALanguage": "Soru-Cevap biçimini kullanarak parçalama", + "general": "Genel", + "switch": "Şalter", + "notAvailableForParentChild": "Üst-alt Dizini için kullanılamaz", + "previewChunk": "Önizleme Parçası", + "highQualityTip": "Yüksek Kalite modunda yerleştirme işlemi tamamlandıktan sonra, Ekonomik moda geri dönülemez.", + "childChunkForRetrieval": "Alma için alt yığın", + "parentChunkForContext": "Bağlam için üst yığın", + "qaTip": "Yapılandırılmış Soru-Cevap verilerini kullanırken, soruları yanıtlarla eşleştiren belgeler oluşturabilirsiniz. Bu belgeler, soru bölümüne göre dizine eklenir ve sistemin sorgu benzerliğine dayalı olarak ilgili yanıtları almasına olanak tanır." + }, + "stepThree": { + "creationTitle": "🎉 Bilgi oluşturuldu", + "creationContent": "Bilginin adını otomatik olarak belirledik, dilediğiniz zaman değiştirebilirsiniz", + "label": "Bilgi adı", + "additionTitle": "🎉 Belge yüklendi", + "additionP1": "Belge Bilgi'ye yüklendi", + "additionP2": ", bilgi listesinden bulabilirsiniz.", + "stop": "İşlemeyi durdur", + "resume": "İşlemeye devam et", + "navTo": "Belgeye git", + "sideTipTitle": "Sırada ne var", + "sideTipContent": "Belge dizine ekleme işlemi bittikten sonra Bilgi, bağlam olarak uygulamaya entegre edilebilir. Prompt düzenleme sayfasında bağlam ayarlarını bulabilirsiniz. Ayrıca bağımsız bir ChatGPT dizinleme eklentisi olarak yayınlamak için de oluşturabilirsiniz.", + "modelTitle": "Yerleştirmeyi durdurmak istediğinize emin misiniz?", + "modelContent": "İşlemeye daha sonra devam etmeniz gerekirse, kaldığınız yerden devam edeceksiniz.", + "modelButtonConfirm": "Onayla", + "modelButtonCancel": "İptal" + }, + "jinaReader": { + "apiKeyPlaceholder": "jina.ai'dan API anahtarı", + "configJinaReader": "Jina Reader'ı Yapılandırma", + "getApiKeyLinkText": "Ücretsiz API anahtarınızı hemen jina.ai alın" + }, + "otherDataSource": { + "learnMore": "Daha fazla bilgi edinin", + "description": "Şu anda, Dify'ın bilgi tabanı yalnızca sınırlı veri kaynaklarına sahiptir. Dify bilgi tabanına bir veri kaynağına katkıda bulunmak, tüm kullanıcılar için platformun esnekliğini ve gücünü artırmaya yardımcı olmanın harika bir yoludur. Katkı kılavuzumuz, başlamanızı kolaylaştırır. Daha fazla bilgi edinmek için lütfen aşağıdaki bağlantıya tıklayın.", + "title": "Diğer veri kaynaklarına bağlanılıyor mu?" + }, + "watercrawl": { + "configWatercrawl": "Su Tarayıcısını Yapılandır", + "apiKeyPlaceholder": "watercrawl.dev'den API anahtarı", + "getApiKeyLinkText": "API anahtarınızı watercrawl.dev'den alın" + } +} diff --git a/web/i18n/tr-TR/dataset-creation.ts b/web/i18n/tr-TR/dataset-creation.ts deleted file mode 100644 index 9cf05a0a46..0000000000 --- a/web/i18n/tr-TR/dataset-creation.ts +++ /dev/null @@ -1,217 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: 'Bilgi', - }, - one: 'Veri kaynağı seçin', - two: 'Metin Ön İşleme ve Temizleme', - three: 'Çalıştır ve Bitir', - }, - error: { - unavailable: 'Bu Bilgi kullanılamıyor', - }, - firecrawl: { - configFirecrawl: '🔥Firecrawl\'ı Yapılandır', - apiKeyPlaceholder: 'firecrawl.dev\'den API anahtarı', - getApiKeyLinkText: 'API anahtarınızı firecrawl.dev\'den alın', - }, - stepOne: { - filePreview: 'Dosya Önizleme', - pagePreview: 'Sayfa Önizleme', - dataSourceType: { - file: 'Dosyadan içe aktar', - notion: 'Notion\'dan senkronize et', - web: 'Web sitesinden senkronize et', - }, - uploader: { - title: 'Dosya yükle', - button: 'Dosyaları veya klasörleri sürükleyip bırakın veya', - buttonSingleFile: 'Dosyayı sürükleyip bırakın veya', - browse: 'Göz atın', - tip: 'Destekler {{supportTypes}}. Her biri en fazla {{size}}MB.', - validation: { - typeError: 'Dosya tipi desteklenmiyor', - size: 'Dosya çok büyük. Maksimum {{size}} MB', - count: 'Birden fazla dosya desteklenmiyor', - filesNumber: 'Toplu yükleme sınırına ulaştınız, {{filesNumber}} dosya.', - }, - cancel: 'İptal', - change: 'Değiştir', - failed: 'Yükleme başarısız', - }, - notionSyncTitle: 'Notion bağlı değil', - notionSyncTip: 'Notion ile senkronize etmek için önce Notion\'a bağlanılmalıdır.', - connect: 'Bağlanmaya git', - button: 'Sonraki', - emptyDatasetCreation: 'Boş bir bilgi oluşturmak istiyorum', - modal: { - title: 'Boş bir bilgi oluştur', - tip: 'Boş bir bilgi hiçbir belge içermeyecektir ve dilediğiniz zaman belge yükleyebilirsiniz.', - input: 'Bilgi adı', - placeholder: 'Lütfen girin', - nameNotEmpty: 'Ad boş olamaz', - nameLengthInvalid: 'Ad 1 ile 40 karakter arasında olmalıdır', - cancelButton: 'İptal', - confirmButton: 'Oluştur', - failed: 'Oluşturma başarısız', - }, - website: { - fireCrawlNotConfigured: 'Firecrawl yapılandırılmamış', - fireCrawlNotConfiguredDescription: 'Firecrawl\'ı kullanmak için API anahtarı ile yapılandırın.', - configure: 'Yapılandır', - run: 'Çalıştır', - firecrawlTitle: '🔥Firecrawl ile web içeriğini çıkarın', - firecrawlDoc: 'Firecrawl dokümanları', - options: 'Seçenekler', - crawlSubPage: 'Alt sayfaları tarayın', - limit: 'Sınır', - maxDepth: 'Maksimum derinlik', - excludePaths: 'Yolları hariç tut', - includeOnlyPaths: 'Yalnızca yolları dahil et', - extractOnlyMainContent: 'Sadece ana içeriği çıkar (başlıklar, navigasyonlar, altbilgiler vb. yok)', - exceptionErrorTitle: 'Firecrawl işi çalıştırılırken bir istisna meydana geldi:', - unknownError: 'Bilinmeyen hata', - totalPageScraped: 'Toplam kazınan sayfa:', - selectAll: 'Hepsini Seç', - resetAll: 'Hepsini Sıfırla', - scrapTimeInfo: 'Toplam {{total}} sayfa {{time}}s içinde kazındı', - preview: 'Önizleme', - maxDepthTooltip: 'Girilen URL\'ye göre tarama için maksimum derinlik. Derinlik 0 sadece girilen url sayfasını kazır, derinlik 1 url ve girilen URL + bir / \'dan sonraki her şeyi kazır ve böyle devam eder.', - jinaReaderTitle: 'Tüm siteyi Markdown\'a dönüştürün', - useSitemap: 'Site haritasını kullan', - useSitemapTooltip: 'Siteyi taramak için site haritasını takip edin. Aksi takdirde, Jina Reader sayfa alaka düzeyine göre yinelemeli olarak tarar ve daha az ancak daha yüksek kaliteli sayfalar verir.', - jinaReaderNotConfiguredDescription: 'Erişim için ücretsiz API anahtarınızı girerek Jina Reader\'ı kurun.', - chooseProvider: 'Bir sağlayıcı seçin', - jinaReaderDoc: 'Jina Reader hakkında daha fazla bilgi edinin', - jinaReaderNotConfigured: 'Jina Reader yapılandırılmadı', - jinaReaderDocLink: 'https://jina.ai/reader', - waterCrawlNotConfiguredDescription: 'Watercrawl\'ı kullanmak için API anahtarı ile yapılandırın.', - configureFirecrawl: 'Firecrawl\'ı yapılandır', - watercrawlDoc: 'Watercrawl belgeleri', - waterCrawlNotConfigured: 'Watercrawl yapılandırılmamış', - watercrawlTitle: 'Watercrawl ile web içeriğini çıkar', - configureJinaReader: 'Jina Okuyucusunu Yapılandır', - configureWatercrawl: 'Watercrawl\'ı yapılandır', - running: 'Koşarak', - }, - cancel: 'İptal', - }, - stepTwo: { - segmentation: 'Parçalanma ayarları', - auto: 'Otomatik', - autoDescription: 'Parçalanma ve ön işleme kurallarını otomatik olarak ayarlayın. Bilgisiz kullanıcıların bunu seçmesi önerilir.', - custom: 'Özel', - customDescription: 'Parçalanma kurallarını, parçalanma uzunluğunu ve ön işleme kurallarını kişiselleştirin.', - separator: 'Parçalanma belirleyicisi', - separatorPlaceholder: 'Örneğin, yeni satır (\\\\n) veya özel ayırıcı (örn. "***")', - maxLength: 'Maksimum parça uzunluğu', - overlap: 'Parça örtüşmesi', - overlapTip: 'Parça örtüşmesini ayarlamak, aralarındaki anlamsal bağı koruyabilir, geri alım etkisini artırır. Maksimum parça boyutunun %10-%25\'ini ayarlamanız önerilir.', - overlapCheck: 'parça örtüşmesi maksimum parça uzunluğundan büyük olmamalıdır', - rules: 'Metin ön işleme kuralları', - removeExtraSpaces: 'Art arda gelen boşlukları, yeni satırları ve sekmeleri değiştirin', - removeUrlEmails: 'Tüm URL\'leri ve e-posta adreslerini silin', - removeStopwords: '"a", "an", "the" gibi durdurma kelimelerini silin', - preview: 'Onayla ve Önizleme', - reset: 'Sıfırla', - indexMode: 'Dizin modu', - qualified: 'Yüksek Kalite', - recommend: 'Önerilen', - qualifiedTip: 'Kullanıcılar sorguladığında daha yüksek doğruluk sağlamak için varsayılan sistem yerleştirme arayüzünü çağırır.', - warning: 'Lütfen önce model sağlayıcı API anahtarını ayarlayın.', - click: 'Ayarlara git', - economical: 'Ekonomik', - economicalTip: 'Doğruluğu azaltmak için çevrimdışı vektör motorlarını, anahtar kelime dizinlerini vb. kullanın, token harcamadan', - QATitle: 'Soru ve Yanıt formatında parçalama', - QATip: 'Bu seçeneği etkinleştirmek daha fazla token tüketecektir', - QALanguage: 'Kullanarak parçalara ayır', - estimateCost: 'Tahmin', - estimateSegment: 'Tahmini parçalar', - segmentCount: 'parçalar', - calculating: 'Hesaplanıyor...', - fileSource: 'Belgeleri ön işleme', - notionSource: 'Sayfaları ön işleme', - websiteSource: 'Web sitesini ön işleme', - other: 've diğer', - fileUnit: ' dosyalar', - notionUnit: ' sayfalar', - webpageUnit: ' sayfalar', - previousStep: 'Önceki adım', - nextStep: 'Kaydet ve İşle', - save: 'Kaydet ve İşle', - cancel: 'İptal', - sideTipTitle: 'Neden parçalanma ve ön işleme?', - sideTipP1: 'Metin verileri işlerken, parçalama ve temizleme iki önemli ön işleme adımıdır.', - sideTipP2: 'Parçalanma, uzun metinleri paragraflara böler, böylece modeller daha iyi anlayabilir. Bu, model sonuçlarının kalitesini ve alaka düzeyini artırır.', - sideTipP3: 'Temizleme, gereksiz karakterleri ve formatları kaldırarak Bilginin daha temiz ve daha kolay analiz edilmesini sağlar.', - sideTipP4: 'Uygun parçalama ve temizleme, model performansını iyileştirir, daha doğru ve değerli sonuçlar sağlar.', - previewTitle: 'Önizleme', - previewTitleButton: 'Önizleme', - previewButton: 'Q&A formatına geçiş', - previewSwitchTipStart: 'Geçerli parça önizlemesi metin formatındadır, soru ve yanıt formatına geçiş ek tüketir', - previewSwitchTipEnd: 'token', - characters: 'karakterler', - indexSettingTip: 'Dizin yöntemini değiştirmek için, lütfen', - retrievalSettingTip: 'Dizin yöntemini değiştirmek için, lütfen', - datasetSettingLink: 'Bilgi ayarlarına gidin.', - separatorTip: 'Sınırlayıcı, metni ayırmak için kullanılan karakterdir. \\n\\n ve \\n, paragrafları ve satırları ayırmak için yaygın olarak kullanılan sınırlayıcılardır. Virgüllerle (\\n\\n,\\n) birleştirildiğinde, paragraflar maksimum öbek uzunluğunu aştığında satırlarla bölünür. Kendiniz tarafından tanımlanan özel sınırlayıcıları da kullanabilirsiniz (örn.', - maxLengthCheck: 'Maksimum yığın uzunluğu {{limit}}\'den az olmalıdır', - paragraph: 'Paragraf', - parentChildDelimiterTip: 'Sınırlayıcı, metni ayırmak için kullanılan karakterdir. \\n\\n orijinal belgeyi büyük üst parçalara bölmek için önerilir. Kendiniz tarafından tanımlanan özel sınırlayıcıları da kullanabilirsiniz.', - parentChild: 'Ebeveyn-çocuk', - previewChunkCount: '{{sayı}} Tahmini parçalar', - parentChildChunkDelimiterTip: 'Sınırlayıcı, metni ayırmak için kullanılan karakterdir. \\n Üst parçaları küçük alt parçalara bölmek için önerilir. Kendiniz tarafından tanımlanan özel sınırlayıcıları da kullanabilirsiniz.', - qaSwitchHighQualityTipContent: 'Şu anda, yalnızca yüksek kaliteli dizin yöntemi Soru-Cevap biçimi öbeklerini destekler. Yüksek kalite moduna geçmek ister misiniz?', - previewChunkTip: 'Önizlemeyi yüklemek için soldaki \'Önizleme Parçası\' düğmesini tıklayın', - qaSwitchHighQualityTipTitle: 'Soru-Cevap Formatı Yüksek Kaliteli İndeksleme Yöntemi Gerektirir', - notAvailableForQA: 'Soru-Cevap Dizini için kullanılamaz', - generalTip: 'Genel metin parçalama modu, alınan ve geri çağrılan parçalar aynıdır.', - paragraphTip: 'Bu mod, metni sınırlayıcılara ve maksimum öbek uzunluğuna göre paragraflara böler ve bölünmüş metni almak için üst öbek olarak kullanır.', - parentChildTip: 'Üst-alt modu kullanılırken, alt öbek alma için kullanılır ve üst öbek bağlam olarak geri çağırma için kullanılır.', - fullDocTip: 'Belgenin tamamı üst yığın olarak kullanılır ve doğrudan alınır. Performans nedenleriyle, 10000 jetonu aşan metnin otomatik olarak kesileceğini lütfen unutmayın.', - fullDoc: 'Tam Doküman', - useQALanguage: 'Soru-Cevap biçimini kullanarak parçalama', - general: 'Genel', - switch: 'Şalter', - notAvailableForParentChild: 'Üst-alt Dizini için kullanılamaz', - previewChunk: 'Önizleme Parçası', - highQualityTip: 'Yüksek Kalite modunda yerleştirme işlemi tamamlandıktan sonra, Ekonomik moda geri dönülemez.', - childChunkForRetrieval: 'Alma için alt yığın', - parentChunkForContext: 'Bağlam için üst yığın', - qaTip: 'Yapılandırılmış Soru-Cevap verilerini kullanırken, soruları yanıtlarla eşleştiren belgeler oluşturabilirsiniz. Bu belgeler, soru bölümüne göre dizine eklenir ve sistemin sorgu benzerliğine dayalı olarak ilgili yanıtları almasına olanak tanır.', - }, - stepThree: { - creationTitle: '🎉 Bilgi oluşturuldu', - creationContent: 'Bilginin adını otomatik olarak belirledik, dilediğiniz zaman değiştirebilirsiniz', - label: 'Bilgi adı', - additionTitle: '🎉 Belge yüklendi', - additionP1: 'Belge Bilgi\'ye yüklendi', - additionP2: ', bilgi listesinden bulabilirsiniz.', - stop: 'İşlemeyi durdur', - resume: 'İşlemeye devam et', - navTo: 'Belgeye git', - sideTipTitle: 'Sırada ne var', - sideTipContent: 'Belge dizine ekleme işlemi bittikten sonra Bilgi, bağlam olarak uygulamaya entegre edilebilir. Prompt düzenleme sayfasında bağlam ayarlarını bulabilirsiniz. Ayrıca bağımsız bir ChatGPT dizinleme eklentisi olarak yayınlamak için de oluşturabilirsiniz.', - modelTitle: 'Yerleştirmeyi durdurmak istediğinize emin misiniz?', - modelContent: 'İşlemeye daha sonra devam etmeniz gerekirse, kaldığınız yerden devam edeceksiniz.', - modelButtonConfirm: 'Onayla', - modelButtonCancel: 'İptal', - }, - jinaReader: { - apiKeyPlaceholder: 'jina.ai\'dan API anahtarı', - configJinaReader: 'Jina Reader\'ı Yapılandırma', - getApiKeyLinkText: 'Ücretsiz API anahtarınızı hemen jina.ai alın', - }, - otherDataSource: { - learnMore: 'Daha fazla bilgi edinin', - description: 'Şu anda, Dify\'ın bilgi tabanı yalnızca sınırlı veri kaynaklarına sahiptir. Dify bilgi tabanına bir veri kaynağına katkıda bulunmak, tüm kullanıcılar için platformun esnekliğini ve gücünü artırmaya yardımcı olmanın harika bir yoludur. Katkı kılavuzumuz, başlamanızı kolaylaştırır. Daha fazla bilgi edinmek için lütfen aşağıdaki bağlantıya tıklayın.', - title: 'Diğer veri kaynaklarına bağlanılıyor mu?', - }, - watercrawl: { - configWatercrawl: 'Su Tarayıcısını Yapılandır', - apiKeyPlaceholder: 'watercrawl.dev\'den API anahtarı', - getApiKeyLinkText: 'API anahtarınızı watercrawl.dev\'den alın', - }, -} - -export default translation diff --git a/web/i18n/tr-TR/dataset-documents.json b/web/i18n/tr-TR/dataset-documents.json new file mode 100644 index 0000000000..d880082dc2 --- /dev/null +++ b/web/i18n/tr-TR/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "Belgeler", + "desc": "Bilginin tüm dosyaları burada gösterilir ve Bilginin tamamı Dify alıntılarına veya Sohbet eklentisi üzerinden dizine eklenebilir.", + "addFile": "Dosya Ekle", + "addPages": "Sayfa Ekle", + "addUrl": "URL Ekle", + "table": { + "header": { + "fileName": "DOSYA ADI", + "words": "KELİMELER", + "hitCount": "GERİ ALIM SAYISI", + "uploadTime": "YÜKLEME ZAMANI", + "status": "DURUM", + "action": "EYLEM", + "chunkingMode": "PARÇALAMA MODU" + }, + "rename": "Yeniden Adlandır", + "name": "Ad" + }, + "action": { + "uploadFile": "Yeni dosya yükle", + "settings": "Segment ayarları", + "addButton": "Parça ekle", + "add": "Bir parça ekle", + "batchAdd": "Toplu ekle", + "archive": "Arşivle", + "unarchive": "Arşivden Çıkar", + "delete": "Sil", + "enableWarning": "Arşivlenmiş dosya etkinleştirilemez", + "sync": "Senkronize et", + "pause": "Duraklat", + "resume": "Devam Et" + }, + "index": { + "enable": "Etkinleştir", + "disable": "Devre Dışı Bırak", + "all": "Hepsi", + "enableTip": "Dosya dizine eklenebilir", + "disableTip": "Dosya dizine eklenemez" + }, + "status": { + "queuing": "Kuyrukta", + "indexing": "Dizine Ekleniyor", + "paused": "Durduruldu", + "error": "Hata", + "available": "Kullanılabilir", + "enabled": "Etkin", + "disabled": "Devre Dışı", + "archived": "Arşivlendi" + }, + "empty": { + "title": "Henüz belge yok", + "upload": { + "tip": "Dosya yükleyebilir, web sitesinden veya Notion, GitHub gibi web uygulamalarından senkronize edebilirsiniz." + }, + "sync": { + "tip": "Dify, Notion'dan periyodik olarak dosyaları indirir ve işlemeyi tamamlar." + } + }, + "delete": { + "title": "Silmek istediğinize emin misiniz?", + "content": "İşlemeye daha sonra devam etmeniz gerekirse, kaldığınız yerden devam edeceksiniz" + }, + "batchModal": { + "title": "Toplu parçalar ekle", + "csvUploadTitle": "CSV dosyanızı buraya sürükleyip bırakın ya da ", + "browse": "göz atın", + "tip": "CSV dosyası şu yapıya uygun olmalıdır:", + "question": "soru", + "answer": "cevap", + "contentTitle": "parça içeriği", + "content": "içerik", + "template": "Şablonu buradan indir", + "cancel": "İptal", + "run": "Toplu İşlemi Çalıştır", + "runError": "Toplu işlem başarısız oldu", + "processing": "Toplu işlemde", + "completed": "İçe aktarma tamamlandı", + "error": "İçe Aktarma Hatası", + "ok": "Tamam" + }, + "learnMore": "Daha fazla bilgi edinin", + "sort": { + "uploadTime": "Yükleme Zamanı", + "hitCount": "Alım Sayısı" + } + }, + "metadata": { + "title": "Meta Veri", + "desc": "Belgeler için meta veri etiketleme, AI'ın bunlara zamanında erişmesini sağlar ve kullanıcılar için referansların kaynağını ortaya çıkarır.", + "dateTimeFormat": "MMMM D, YYYY ss:dd ÖÖ/ÖS", + "docTypeSelectTitle": "Lütfen bir belge türü seçin", + "docTypeChangeTitle": "Belge türünü değiştir", + "docTypeSelectWarning": "Belge türü değiştirilirse, şimdi doldurulan meta veriler artık korunmayacaktır", + "firstMetaAction": "Hadi başlayalım", + "placeholder": { + "add": "Ekle ", + "select": "Seç " + }, + "source": { + "upload_file": "Dosya Yükle", + "notion": "Notion'dan Senkronize Et", + "github": "GitHub'dan Senkronize Et", + "website_crawl": "Web Sitesi Taraması", + "online_document": "Çevrimiçi Belge", + "local_file": "Yerel Dosya" + }, + "type": { + "book": "Kitap", + "webPage": "Web Sayfası", + "paper": "Makale", + "socialMediaPost": "Sosyal Medya Paylaşımı", + "personalDocument": "Kişisel Belge", + "businessDocument": "İş Belgesi", + "IMChat": "IM Sohbet", + "wikipediaEntry": "Wikipedia Girişi", + "notion": "Notion'dan Senkronize Et", + "github": "GitHub'dan Senkronize Et", + "technicalParameters": "Teknik Parametreler" + }, + "field": { + "processRule": { + "processDoc": "Belgeyi İşle", + "segmentRule": "Parça Kuralı", + "segmentLength": "Parça Uzunluğu", + "processClean": "Metin İşleme Temizliği" + }, + "book": { + "title": "Başlık", + "language": "Dil", + "author": "Yazar", + "publisher": "Yayıncı", + "publicationDate": "Yayın Tarihi", + "ISBN": "ISBN", + "category": "Kategori" + }, + "webPage": { + "title": "Başlık", + "url": "URL", + "language": "Dil", + "authorPublisher": "Yazar/Yayıncı", + "publishDate": "Yayın Tarihi", + "topicKeywords": "Konular/Anahtar Kelimeler", + "description": "Açıklama" + }, + "paper": { + "title": "Başlık", + "language": "Dil", + "author": "Yazar", + "publishDate": "Yayın Tarihi", + "journalConferenceName": "Dergi/Konferans Adı", + "volumeIssuePage": "Cilt/Sayı/Sayfa", + "DOI": "DOI", + "topicsKeywords": "Konular/Anahtar Kelimeler", + "abstract": "Özet" + }, + "socialMediaPost": { + "platform": "Platform", + "authorUsername": "Yazar/Kullanıcı adı", + "publishDate": "Yayın Tarihi", + "postURL": "Gönderi URL'si", + "topicsTags": "Konular/Etiketler" + }, + "personalDocument": { + "title": "Başlık", + "author": "Yazar", + "creationDate": "Oluşturma Tarihi", + "lastModifiedDate": "Son Değiştirme Tarihi", + "documentType": "Belge Türü", + "tagsCategory": "Etiketler/Kategori" + }, + "businessDocument": { + "title": "Başlık", + "author": "Yazar", + "creationDate": "Oluşturma Tarihi", + "lastModifiedDate": "Son Değiştirme Tarihi", + "documentType": "Belge Türü", + "departmentTeam": "Bölüm/Takım" + }, + "IMChat": { + "chatPlatform": "Sohbet Platformu", + "chatPartiesGroupName": "Sohbet Tarafları/Grup Adı", + "participants": "Katılımcılar", + "startDate": "Başlangıç Tarihi", + "endDate": "Bitiş Tarihi", + "topicsKeywords": "Konular/Anahtar Kelimeler", + "fileType": "Dosya Türü" + }, + "wikipediaEntry": { + "title": "Başlık", + "language": "Dil", + "webpageURL": "Web Sayfası URL'si", + "editorContributor": "Editör/Katılımcı", + "lastEditDate": "Son Düzenleme Tarihi", + "summaryIntroduction": "Özet/Giriş" + }, + "notion": { + "title": "Başlık", + "language": "Dil", + "author": "Yazar", + "createdTime": "Oluşturulma Zamanı", + "lastModifiedTime": "Son Değiştirilme Zamanı", + "url": "URL", + "tag": "Etiket", + "description": "Açıklama" + }, + "github": { + "repoName": "Depo Adı", + "repoDesc": "Depo Açıklaması", + "repoOwner": "Depo Sahibi", + "fileName": "Dosya Adı", + "filePath": "Dosya Yolu", + "programmingLang": "Programlama Dili", + "url": "URL", + "license": "Lisans", + "lastCommitTime": "Son Commit Zamanı", + "lastCommitAuthor": "Son Commit Yazar" + }, + "originInfo": { + "originalFilename": "Orijinal dosya adı", + "originalFileSize": "Orijinal dosya boyutu", + "uploadDate": "Yükleme tarihi", + "lastUpdateDate": "Son güncelleme tarihi", + "source": "Kaynak" + }, + "technicalParameters": { + "segmentSpecification": "Parçalar spesifikasyonu", + "segmentLength": "Parçalar uzunluğu", + "avgParagraphLength": "Ort. paragraf uzunluğu", + "paragraphs": "Paragraflar", + "hitCount": "Geri alım sayısı", + "embeddingTime": "Yerleştirme zamanı", + "embeddedSpend": "Yerleştirme harcaması" + } + }, + "languageMap": { + "zh": "Çince", + "en": "İngilizce", + "es": "İspanyolca", + "fr": "Fransızca", + "de": "Almanca", + "ja": "Japonca", + "ko": "Korece", + "ru": "Rusça", + "ar": "Arapça", + "pt": "Portekizce", + "it": "İtalyanca", + "nl": "Flemenkçe", + "pl": "Lehçe", + "sv": "İsveççe", + "tr": "Türkçe", + "he": "İbranice", + "hi": "Hintçe", + "da": "Danca", + "fi": "Fince", + "no": "Norveççe", + "hu": "Macarca", + "el": "Yunanca", + "cs": "Çekçe", + "th": "Tayca", + "id": "Endonezce" + }, + "categoryMap": { + "book": { + "fiction": "Kurgu", + "biography": "Biyografi", + "history": "Tarih", + "science": "Bilim", + "technology": "Teknoloji", + "education": "Eğitim", + "philosophy": "Felsefe", + "religion": "Din", + "socialSciences": "Sosyal Bilimler", + "art": "Sanat", + "travel": "Gezi", + "health": "Sağlık", + "selfHelp": "Kişisel Gelişim", + "businessEconomics": "İş ve Ekonomi", + "cooking": "Yemek", + "childrenYoungAdults": "Çocuk ve Genç Yetişkin", + "comicsGraphicNovels": "Çizgi Roman ve Grafik Roman", + "poetry": "Şiir", + "drama": "Drama", + "other": "Diğer" + }, + "personalDoc": { + "notes": "Notlar", + "blogDraft": "Blog Taslağı", + "diary": "Günlük", + "researchReport": "Araştırma Raporu", + "bookExcerpt": "Kitap Alıntısı", + "schedule": "Takvim", + "list": "Liste", + "projectOverview": "Proje Genel Bakış", + "photoCollection": "Fotoğraf Koleksiyonu", + "creativeWriting": "Yaratıcı Yazma", + "codeSnippet": "Kod Parçacığı", + "designDraft": "Tasarım Taslağı", + "personalResume": "Kişisel Özgeçmiş", + "other": "Diğer" + }, + "businessDoc": { + "meetingMinutes": "Toplantı Tutanakları", + "researchReport": "Araştırma Raporu", + "proposal": "Teklif", + "employeeHandbook": "Çalışan El Kitabı", + "trainingMaterials": "Eğitim Materyalleri", + "requirementsDocument": "Gereksinim Dokümanı", + "designDocument": "Tasarım Dokümanı", + "productSpecification": "Ürün Spesifikasyonu", + "financialReport": "Mali Rapor", + "marketAnalysis": "Pazar Analizi", + "projectPlan": "Proje Planı", + "teamStructure": "Takım Yapısı", + "policiesProcedures": "Politikalar ve Prosedürler", + "contractsAgreements": "Sözleşmeler ve Anlaşmalar", + "emailCorrespondence": "E-posta Yazışmaları", + "other": "Diğer" + } + } + }, + "embedding": { + "processing": "Yerleştirme işlemi...", + "paused": "Yerleştirme duraklatıldı", + "completed": "Yerleştirme tamamlandı", + "error": "Yerleştirme hatası", + "docName": "Belgeler işleniyor", + "mode": "Segmentasyon kuralı", + "segmentLength": "Parçalar uzunluğu", + "textCleaning": "Metin önişleme ve temizlik", + "segments": "Paragraflar", + "highQuality": "Yüksek kaliteli mod", + "economy": "Ekonomik mod", + "estimate": "Tahmini tüketim", + "stop": "İşlemi durdur", + "resume": "İşleme devam et", + "automatic": "Otomatik", + "custom": "Özel", + "previewTip": "Paragraf önizlemesi yerleştirme tamamlandıktan sonra kullanılabilir olacak", + "childMaxTokens": "Çocuk", + "parentMaxTokens": "Ebeveyn", + "hierarchical": "Ebeveyn-çocuk", + "pause": "Duraklat", + "waiting": "Gömme bekleniyor..." + }, + "segment": { + "paragraphs": "Paragraflar", + "keywords": "Anahtar Kelimeler", + "addKeyWord": "Anahtar kelime ekle", + "keywordError": "Anahtar kelimenin maksimum uzunluğu 20", + "hitCount": "Geri alım sayısı", + "vectorHash": "Vektör hash: ", + "questionPlaceholder": "soruyu buraya ekleyin", + "questionEmpty": "Soru boş olamaz", + "answerPlaceholder": "cevabı buraya ekleyin", + "answerEmpty": "Cevap boş olamaz", + "contentPlaceholder": "içeriği buraya ekleyin", + "contentEmpty": "İçerik boş olamaz", + "newTextSegment": "Yeni Metin Parçası", + "newQaSegment": "Yeni Soru-Cevap Parçası", + "delete": "Bu parçayı silmek istiyor musunuz?", + "chunks_one": "ÖBEK", + "childChunks_one": "ALT ÖBEK", + "searchResults_one": "SONUÇ", + "chunk": "Öbek", + "addChunk": "Parça Ekle", + "regenerationSuccessMessage": "Bu pencereyi kapatabilirsiniz.", + "characters_other": "Karakter", + "editParentChunk": "Üst Parçayı Düzenle", + "editChildChunk": "Alt Parçayı Düzenle", + "edited": "DÜZENLEN -MİŞ", + "collapseChunks": "Parçaları daraltma", + "chunkDetail": "Yığın Detayı", + "parentChunk": "Ebeveyn-Yığın", + "parentChunks_one": "ÜST ÖBEK", + "searchResults_other": "SONUÇ -LARI", + "childChunks_other": "ÇOCUK PARÇALARI", + "newChunk": "Yeni Yığın", + "regenerationConfirmMessage": "Alt öbekleri yeniden oluşturmak, düzenlenen öbekler ve yeni eklenen öbekler de dahil olmak üzere mevcut alt öbeklerin üzerine yazılır. Yenilenme geri alınamaz.", + "empty": "Yığın bulunamadı", + "parentChunks_other": "ÜST PARÇALAR", + "childChunk": "Çocuk-Parça", + "expandChunks": "Parçaları genişletme", + "childChunkAdded": "1 alt öbek eklendi", + "newChildChunk": "Yeni Çocuk Yığını", + "editChunk": "Yığını Düzenle", + "chunkAdded": "1 parça eklendi", + "regenerationSuccessTitle": "Rejenerasyon tamamlandı", + "regeneratingTitle": "Alt parçaları yeniden oluşturma", + "clearFilter": "Filtreyi kaldır", + "regenerationConfirmTitle": "Alt parçaları yeniden oluşturmak istiyor musunuz?", + "characters_one": "karakter", + "addAnother": "Bir tane daha ekle", + "regeneratingMessage": "Bu biraz zaman alabilir, lütfen bekleyin...", + "searchResults_zero": "SONUÇ", + "chunks_other": "Parçalar", + "editedAt": "Şurada düzenlendi:", + "dateTimeFormat": "MM/DD/YYYY h:mm", + "addChildChunk": "Alt Parça Ekle", + "keywordDuplicate": "Anahtar kelime zaten var", + "keywordEmpty": "Anahtar kelime boş olamaz", + "allFilesUploaded": "Kaydetmeden önce tüm dosyaların yüklenmesi gerekir" + } +} diff --git a/web/i18n/tr-TR/dataset-documents.ts b/web/i18n/tr-TR/dataset-documents.ts deleted file mode 100644 index 23da837be5..0000000000 --- a/web/i18n/tr-TR/dataset-documents.ts +++ /dev/null @@ -1,407 +0,0 @@ -const translation = { - list: { - title: 'Belgeler', - desc: 'Bilginin tüm dosyaları burada gösterilir ve Bilginin tamamı Dify alıntılarına veya Sohbet eklentisi üzerinden dizine eklenebilir.', - addFile: 'Dosya Ekle', - addPages: 'Sayfa Ekle', - addUrl: 'URL Ekle', - table: { - header: { - fileName: 'DOSYA ADI', - words: 'KELİMELER', - hitCount: 'GERİ ALIM SAYISI', - uploadTime: 'YÜKLEME ZAMANI', - status: 'DURUM', - action: 'EYLEM', - chunkingMode: 'PARÇALAMA MODU', - }, - rename: 'Yeniden Adlandır', - name: 'Ad', - }, - action: { - uploadFile: 'Yeni dosya yükle', - settings: 'Segment ayarları', - addButton: 'Parça ekle', - add: 'Bir parça ekle', - batchAdd: 'Toplu ekle', - archive: 'Arşivle', - unarchive: 'Arşivden Çıkar', - delete: 'Sil', - enableWarning: 'Arşivlenmiş dosya etkinleştirilemez', - sync: 'Senkronize et', - pause: 'Duraklat', - resume: 'Devam Et', - }, - index: { - enable: 'Etkinleştir', - disable: 'Devre Dışı Bırak', - all: 'Hepsi', - enableTip: 'Dosya dizine eklenebilir', - disableTip: 'Dosya dizine eklenemez', - }, - status: { - queuing: 'Kuyrukta', - indexing: 'Dizine Ekleniyor', - paused: 'Durduruldu', - error: 'Hata', - available: 'Kullanılabilir', - enabled: 'Etkin', - disabled: 'Devre Dışı', - archived: 'Arşivlendi', - }, - empty: { - title: 'Henüz belge yok', - upload: { - tip: 'Dosya yükleyebilir, web sitesinden veya Notion, GitHub gibi web uygulamalarından senkronize edebilirsiniz.', - }, - sync: { - tip: 'Dify, Notion\'dan periyodik olarak dosyaları indirir ve işlemeyi tamamlar.', - }, - }, - delete: { - title: 'Silmek istediğinize emin misiniz?', - content: 'İşlemeye daha sonra devam etmeniz gerekirse, kaldığınız yerden devam edeceksiniz', - }, - batchModal: { - title: 'Toplu parçalar ekle', - csvUploadTitle: 'CSV dosyanızı buraya sürükleyip bırakın ya da ', - browse: 'göz atın', - tip: 'CSV dosyası şu yapıya uygun olmalıdır:', - question: 'soru', - answer: 'cevap', - contentTitle: 'parça içeriği', - content: 'içerik', - template: 'Şablonu buradan indir', - cancel: 'İptal', - run: 'Toplu İşlemi Çalıştır', - runError: 'Toplu işlem başarısız oldu', - processing: 'Toplu işlemde', - completed: 'İçe aktarma tamamlandı', - error: 'İçe Aktarma Hatası', - ok: 'Tamam', - }, - learnMore: 'Daha fazla bilgi edinin', - sort: { - uploadTime: 'Yükleme Zamanı', - hitCount: 'Alım Sayısı', - }, - }, - metadata: { - title: 'Meta Veri', - desc: 'Belgeler için meta veri etiketleme, AI\'ın bunlara zamanında erişmesini sağlar ve kullanıcılar için referansların kaynağını ortaya çıkarır.', - dateTimeFormat: 'MMMM D, YYYY ss:dd ÖÖ/ÖS', - docTypeSelectTitle: 'Lütfen bir belge türü seçin', - docTypeChangeTitle: 'Belge türünü değiştir', - docTypeSelectWarning: 'Belge türü değiştirilirse, şimdi doldurulan meta veriler artık korunmayacaktır', - firstMetaAction: 'Hadi başlayalım', - placeholder: { - add: 'Ekle ', - select: 'Seç ', - }, - source: { - upload_file: 'Dosya Yükle', - notion: 'Notion\'dan Senkronize Et', - github: 'GitHub\'dan Senkronize Et', - website_crawl: 'Web Sitesi Taraması', - online_document: 'Çevrimiçi Belge', - local_file: 'Yerel Dosya', - }, - type: { - book: 'Kitap', - webPage: 'Web Sayfası', - paper: 'Makale', - socialMediaPost: 'Sosyal Medya Paylaşımı', - personalDocument: 'Kişisel Belge', - businessDocument: 'İş Belgesi', - IMChat: 'IM Sohbet', - wikipediaEntry: 'Wikipedia Girişi', - notion: 'Notion\'dan Senkronize Et', - github: 'GitHub\'dan Senkronize Et', - technicalParameters: 'Teknik Parametreler', - }, - field: { - processRule: { - processDoc: 'Belgeyi İşle', - segmentRule: 'Parça Kuralı', - segmentLength: 'Parça Uzunluğu', - processClean: 'Metin İşleme Temizliği', - }, - book: { - title: 'Başlık', - language: 'Dil', - author: 'Yazar', - publisher: 'Yayıncı', - publicationDate: 'Yayın Tarihi', - ISBN: 'ISBN', - category: 'Kategori', - }, - webPage: { - title: 'Başlık', - url: 'URL', - language: 'Dil', - authorPublisher: 'Yazar/Yayıncı', - publishDate: 'Yayın Tarihi', - topicKeywords: 'Konular/Anahtar Kelimeler', - description: 'Açıklama', - }, - paper: { - title: 'Başlık', - language: 'Dil', - author: 'Yazar', - publishDate: 'Yayın Tarihi', - journalConferenceName: 'Dergi/Konferans Adı', - volumeIssuePage: 'Cilt/Sayı/Sayfa', - DOI: 'DOI', - topicsKeywords: 'Konular/Anahtar Kelimeler', - abstract: 'Özet', - }, - socialMediaPost: { - platform: 'Platform', - authorUsername: 'Yazar/Kullanıcı adı', - publishDate: 'Yayın Tarihi', - postURL: 'Gönderi URL\'si', - topicsTags: 'Konular/Etiketler', - }, - personalDocument: { - title: 'Başlık', - author: 'Yazar', - creationDate: 'Oluşturma Tarihi', - lastModifiedDate: 'Son Değiştirme Tarihi', - documentType: 'Belge Türü', - tagsCategory: 'Etiketler/Kategori', - }, - businessDocument: { - title: 'Başlık', - author: 'Yazar', - creationDate: 'Oluşturma Tarihi', - lastModifiedDate: 'Son Değiştirme Tarihi', - documentType: 'Belge Türü', - departmentTeam: 'Bölüm/Takım', - }, - IMChat: { - chatPlatform: 'Sohbet Platformu', - chatPartiesGroupName: 'Sohbet Tarafları/Grup Adı', - participants: 'Katılımcılar', - startDate: 'Başlangıç Tarihi', - endDate: 'Bitiş Tarihi', - topicsKeywords: 'Konular/Anahtar Kelimeler', - fileType: 'Dosya Türü', - }, - wikipediaEntry: { - title: 'Başlık', - language: 'Dil', - webpageURL: 'Web Sayfası URL\'si', - editorContributor: 'Editör/Katılımcı', - lastEditDate: 'Son Düzenleme Tarihi', - summaryIntroduction: 'Özet/Giriş', - }, - notion: { - title: 'Başlık', - language: 'Dil', - author: 'Yazar', - createdTime: 'Oluşturulma Zamanı', - lastModifiedTime: 'Son Değiştirilme Zamanı', - url: 'URL', - tag: 'Etiket', - description: 'Açıklama', - }, - github: { - repoName: 'Depo Adı', - repoDesc: 'Depo Açıklaması', - repoOwner: 'Depo Sahibi', - fileName: 'Dosya Adı', - filePath: 'Dosya Yolu', - programmingLang: 'Programlama Dili', - url: 'URL', - license: 'Lisans', - lastCommitTime: 'Son Commit Zamanı', - lastCommitAuthor: 'Son Commit Yazar', - }, - originInfo: { - originalFilename: 'Orijinal dosya adı', - originalFileSize: 'Orijinal dosya boyutu', - uploadDate: 'Yükleme tarihi', - lastUpdateDate: 'Son güncelleme tarihi', - source: 'Kaynak', - }, - technicalParameters: { - segmentSpecification: 'Parçalar spesifikasyonu', - segmentLength: 'Parçalar uzunluğu', - avgParagraphLength: 'Ort. paragraf uzunluğu', - paragraphs: 'Paragraflar', - hitCount: 'Geri alım sayısı', - embeddingTime: 'Yerleştirme zamanı', - embeddedSpend: 'Yerleştirme harcaması', - }, - }, - languageMap: { - zh: 'Çince', - en: 'İngilizce', - es: 'İspanyolca', - fr: 'Fransızca', - de: 'Almanca', - ja: 'Japonca', - ko: 'Korece', - ru: 'Rusça', - ar: 'Arapça', - pt: 'Portekizce', - it: 'İtalyanca', - nl: 'Flemenkçe', - pl: 'Lehçe', - sv: 'İsveççe', - tr: 'Türkçe', - he: 'İbranice', - hi: 'Hintçe', - da: 'Danca', - fi: 'Fince', - no: 'Norveççe', - hu: 'Macarca', - el: 'Yunanca', - cs: 'Çekçe', - th: 'Tayca', - id: 'Endonezce', - }, - categoryMap: { - book: { - fiction: 'Kurgu', - biography: 'Biyografi', - history: 'Tarih', - science: 'Bilim', - technology: 'Teknoloji', - education: 'Eğitim', - philosophy: 'Felsefe', - religion: 'Din', - socialSciences: 'Sosyal Bilimler', - art: 'Sanat', - travel: 'Gezi', - health: 'Sağlık', - selfHelp: 'Kişisel Gelişim', - businessEconomics: 'İş ve Ekonomi', - cooking: 'Yemek', - childrenYoungAdults: 'Çocuk ve Genç Yetişkin', - comicsGraphicNovels: 'Çizgi Roman ve Grafik Roman', - poetry: 'Şiir', - drama: 'Drama', - other: 'Diğer', - }, - personalDoc: { - notes: 'Notlar', - blogDraft: 'Blog Taslağı', - diary: 'Günlük', - researchReport: 'Araştırma Raporu', - bookExcerpt: 'Kitap Alıntısı', - schedule: 'Takvim', - list: 'Liste', - projectOverview: 'Proje Genel Bakış', - photoCollection: 'Fotoğraf Koleksiyonu', - creativeWriting: 'Yaratıcı Yazma', - codeSnippet: 'Kod Parçacığı', - designDraft: 'Tasarım Taslağı', - personalResume: 'Kişisel Özgeçmiş', - other: 'Diğer', - }, - businessDoc: { - meetingMinutes: 'Toplantı Tutanakları', - researchReport: 'Araştırma Raporu', - proposal: 'Teklif', - employeeHandbook: 'Çalışan El Kitabı', - trainingMaterials: 'Eğitim Materyalleri', - requirementsDocument: 'Gereksinim Dokümanı', - designDocument: 'Tasarım Dokümanı', - productSpecification: 'Ürün Spesifikasyonu', - financialReport: 'Mali Rapor', - marketAnalysis: 'Pazar Analizi', - projectPlan: 'Proje Planı', - teamStructure: 'Takım Yapısı', - policiesProcedures: 'Politikalar ve Prosedürler', - contractsAgreements: 'Sözleşmeler ve Anlaşmalar', - emailCorrespondence: 'E-posta Yazışmaları', - other: 'Diğer', - }, - }, - }, - embedding: { - processing: 'Yerleştirme işlemi...', - paused: 'Yerleştirme duraklatıldı', - completed: 'Yerleştirme tamamlandı', - error: 'Yerleştirme hatası', - docName: 'Belgeler işleniyor', - mode: 'Segmentasyon kuralı', - segmentLength: 'Parçalar uzunluğu', - textCleaning: 'Metin önişleme ve temizlik', - segments: 'Paragraflar', - highQuality: 'Yüksek kaliteli mod', - economy: 'Ekonomik mod', - estimate: 'Tahmini tüketim', - stop: 'İşlemi durdur', - resume: 'İşleme devam et', - automatic: 'Otomatik', - custom: 'Özel', - previewTip: 'Paragraf önizlemesi yerleştirme tamamlandıktan sonra kullanılabilir olacak', - childMaxTokens: 'Çocuk', - parentMaxTokens: 'Ebeveyn', - hierarchical: 'Ebeveyn-çocuk', - pause: 'Duraklat', - waiting: 'Gömme bekleniyor...', - }, - segment: { - paragraphs: 'Paragraflar', - keywords: 'Anahtar Kelimeler', - addKeyWord: 'Anahtar kelime ekle', - keywordError: 'Anahtar kelimenin maksimum uzunluğu 20', - hitCount: 'Geri alım sayısı', - vectorHash: 'Vektör hash: ', - questionPlaceholder: 'soruyu buraya ekleyin', - questionEmpty: 'Soru boş olamaz', - answerPlaceholder: 'cevabı buraya ekleyin', - answerEmpty: 'Cevap boş olamaz', - contentPlaceholder: 'içeriği buraya ekleyin', - contentEmpty: 'İçerik boş olamaz', - newTextSegment: 'Yeni Metin Parçası', - newQaSegment: 'Yeni Soru-Cevap Parçası', - delete: 'Bu parçayı silmek istiyor musunuz?', - chunks_one: 'ÖBEK', - childChunks_one: 'ALT ÖBEK', - searchResults_one: 'SONUÇ', - chunk: 'Öbek', - addChunk: 'Parça Ekle', - regenerationSuccessMessage: 'Bu pencereyi kapatabilirsiniz.', - characters_other: 'Karakter', - editParentChunk: 'Üst Parçayı Düzenle', - editChildChunk: 'Alt Parçayı Düzenle', - edited: 'DÜZENLEN -MİŞ', - collapseChunks: 'Parçaları daraltma', - chunkDetail: 'Yığın Detayı', - parentChunk: 'Ebeveyn-Yığın', - parentChunks_one: 'ÜST ÖBEK', - searchResults_other: 'SONUÇ -LARI', - childChunks_other: 'ÇOCUK PARÇALARI', - newChunk: 'Yeni Yığın', - regenerationConfirmMessage: 'Alt öbekleri yeniden oluşturmak, düzenlenen öbekler ve yeni eklenen öbekler de dahil olmak üzere mevcut alt öbeklerin üzerine yazılır. Yenilenme geri alınamaz.', - empty: 'Yığın bulunamadı', - parentChunks_other: 'ÜST PARÇALAR', - childChunk: 'Çocuk-Parça', - expandChunks: 'Parçaları genişletme', - childChunkAdded: '1 alt öbek eklendi', - newChildChunk: 'Yeni Çocuk Yığını', - editChunk: 'Yığını Düzenle', - chunkAdded: '1 parça eklendi', - regenerationSuccessTitle: 'Rejenerasyon tamamlandı', - regeneratingTitle: 'Alt parçaları yeniden oluşturma', - clearFilter: 'Filtreyi kaldır', - regenerationConfirmTitle: 'Alt parçaları yeniden oluşturmak istiyor musunuz?', - characters_one: 'karakter', - addAnother: 'Bir tane daha ekle', - regeneratingMessage: 'Bu biraz zaman alabilir, lütfen bekleyin...', - searchResults_zero: 'SONUÇ', - chunks_other: 'Parçalar', - editedAt: 'Şurada düzenlendi:', - dateTimeFormat: 'MM/DD/YYYY h:mm', - addChildChunk: 'Alt Parça Ekle', - keywordDuplicate: 'Anahtar kelime zaten var', - keywordEmpty: 'Anahtar kelime boş olamaz', - allFilesUploaded: 'Kaydetmeden önce tüm dosyaların yüklenmesi gerekir', - }, -} - -export default translation diff --git a/web/i18n/tr-TR/dataset-hit-testing.json b/web/i18n/tr-TR/dataset-hit-testing.json new file mode 100644 index 0000000000..a9980ed3bf --- /dev/null +++ b/web/i18n/tr-TR/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "Geri Alım Testi", + "desc": "Verilen sorgu metnine göre Bilginin isabet etkisini test edin.", + "dateTimeFormat": "GG/AA/YYYY ss:dd ÖÖ/ÖS", + "table": { + "header": { + "source": "Kaynak", + "time": "Zaman", + "queryContent": "Sorgu İçeriği" + } + }, + "input": { + "title": "Kaynak metin", + "placeholder": "Bir metin girin, kısa bir bildirim cümlesi önerilir.", + "countWarning": "En fazla 200 karakter.", + "indexWarning": "Yüksek kaliteli Bilgi sadece.", + "testing": "Test Ediliyor" + }, + "hit": { + "title": "GERİ ALINAN PARAGRAFLAR", + "emptyTip": "Geri Alım Testi sonuçları burada gösterilecektir" + }, + "noRecentTip": "Burada son sorgu sonuçları yok", + "viewChart": "VEKTÖR GRAFİĞİNİ GÖRÜNTÜLE", + "viewDetail": "ayrıntılara bakın", + "settingTitle": "Alma Ayarı", + "open": "Açık", + "chunkDetail": "Yığın Detayı", + "keyword": "Anahtar kelime -ler", + "hitChunks": "{{num}} alt parçalarına basın", + "records": "Kayıt", + "imageUploader": { + "tip": "Resimleri yükleyin veya bırakın (Her biri maksimum {{batchCount}}, {{size}}MB)", + "tooltip": "Görselleri yükleyin (Maks. {{batchCount}}, her biri {{size}}MB)", + "dropZoneTip": "Yüklemek için dosyayı buraya sürükleyin", + "singleChunkAttachmentLimitTooltip": "Tek parça eklerin sayısı {{limit}} değerini aşamaz" + } +} diff --git a/web/i18n/tr-TR/dataset-hit-testing.ts b/web/i18n/tr-TR/dataset-hit-testing.ts deleted file mode 100644 index 0ece4f3bcf..0000000000 --- a/web/i18n/tr-TR/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - title: 'Geri Alım Testi', - desc: 'Verilen sorgu metnine göre Bilginin isabet etkisini test edin.', - dateTimeFormat: 'GG/AA/YYYY ss:dd ÖÖ/ÖS', - table: { - header: { - source: 'Kaynak', - time: 'Zaman', - queryContent: 'Sorgu İçeriği', - }, - }, - input: { - title: 'Kaynak metin', - placeholder: 'Bir metin girin, kısa bir bildirim cümlesi önerilir.', - countWarning: 'En fazla 200 karakter.', - indexWarning: 'Yüksek kaliteli Bilgi sadece.', - testing: 'Test Ediliyor', - }, - hit: { - title: 'GERİ ALINAN PARAGRAFLAR', - emptyTip: 'Geri Alım Testi sonuçları burada gösterilecektir', - }, - noRecentTip: 'Burada son sorgu sonuçları yok', - viewChart: 'VEKTÖR GRAFİĞİNİ GÖRÜNTÜLE', - viewDetail: 'ayrıntılara bakın', - settingTitle: 'Alma Ayarı', - open: 'Açık', - chunkDetail: 'Yığın Detayı', - keyword: 'Anahtar kelime -ler', - hitChunks: '{{num}} alt parçalarına basın', - records: 'Kayıt', - imageUploader: { - tip: 'Resimleri yükleyin veya bırakın (Her biri maksimum {{batchCount}}, {{size}}MB)', - tooltip: 'Görselleri yükleyin (Maks. {{batchCount}}, her biri {{size}}MB)', - dropZoneTip: 'Yüklemek için dosyayı buraya sürükleyin', - singleChunkAttachmentLimitTooltip: 'Tek parça eklerin sayısı {{limit}} değerini aşamaz', - }, -} - -export default translation diff --git a/web/i18n/tr-TR/dataset-pipeline.json b/web/i18n/tr-TR/dataset-pipeline.json new file mode 100644 index 0000000000..013a52950b --- /dev/null +++ b/web/i18n/tr-TR/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "createFromScratch": { + "title": "Boş bilgi hattı", + "description": "Veri işleme ve yapı üzerinde tam denetime sahip sıfırdan özel bir işlem hattı oluşturun." + }, + "createKnowledge": "Bilgi Oluştur", + "caution": "Dikkat", + "successTip": "Başarıyla bir Bilgi Bankası oluşturuldu", + "errorTip": "Bilgi Bankası oluşturulamadı", + "importDSL": "DSL dosyasından içe aktarma", + "backToKnowledge": "Bilgiye Geri Dön" + }, + "templates": { + "customized": "Özel -leştirilmiş" + }, + "operations": { + "details": "Şey", + "preview": "Önizleme", + "choose": "Seçmek", + "dataSource": "Veri Kaynağı", + "convert": "Dönüştürmek", + "saveAndProcess": "Kaydet ve İşle", + "useTemplate": "Bu Bilgi İşlem Hattını kullanın", + "backToDataSource": "Veri Kaynağına Geri Dön", + "exportPipeline": "Boru Hattını Dışa Aktar", + "editInfo": "Bilgileri düzenle", + "process": "İşlem" + }, + "deletePipeline": { + "title": "Bu işlem hattı şablonunu sildiğinizden emin misiniz?", + "content": "İşlem hattı şablonunun silinmesi geri alınamaz." + }, + "publishPipeline": { + "success": { + "message": "Bilgi İşlem Hattı Yayımlandı", + "tip": "Belgeler bölümüne giderek belgeleri ekleyebilir veya yönetebilirsiniz." + }, + "error": { + "message": "Bilgi İşlem Hattı yayımlanamadı" + } + }, + "publishTemplate": { + "success": { + "message": "İşlem hattı şablonu yayımlandı", + "tip": "Bu şablonu oluşturma sayfasında kullanabilirsiniz.", + "learnMore": "Daha fazla bilgi edinin" + }, + "error": { + "message": "İşlem hattı şablonu yayımlanamadı" + } + }, + "exportDSL": { + "successTip": "İşlem hattı DSL'sini başarıyla dışarı aktarın", + "errorTip": "İşlem hattı DSL'si dışarı aktarılamadı" + }, + "details": { + "structure": "Yapı", + "structureTooltip": "Yığın Yapısı, belgelerin nasıl bölündüğünü ve dizine eklendiğini belirler (Genel, Üst-Alt ve Soru-Cevap modları sunar) ve her bilgi bankası için benzersizdir.", + "createdBy": "{{author}} tarafından" + }, + "testRun": { + "steps": { + "documentProcessing": "Belge İşleme", + "dataSource": "Veri Kaynağı" + }, + "dataSource": { + "localFiles": "Yerel Dosyalar" + }, + "notion": { + "title": "Notion Sayfalarını Seçin", + "docTitle": "Kavram belgeleri" + }, + "title": "Test Çalıştırması", + "tooltip": "Test çalıştırması modunda, daha kolay hata ayıklama ve gözlem için aynı anda yalnızca bir belgenin içe aktarılmasına izin verilir." + }, + "inputFieldPanel": { + "uniqueInputs": { + "title": "Her giriş için benzersiz girişler", + "tooltip": "Benzersiz Girişlere yalnızca seçilen veri kaynağı ve aşağı akış düğümleri tarafından erişilebilir. Kullanıcıların diğer veri kaynaklarını seçerken bu bilgileri doldurmaları gerekmez. İlk adımda (Veri Kaynağı) yalnızca veri kaynağı değişkenleri tarafından başvurulan giriş alanları görünecektir. Diğer tüm alanlar ikinci adımda (Belgeleri İşle) gösterilecektir." + }, + "globalInputs": { + "title": "Tüm girişler için Global Girişler", + "tooltip": "Global Girişler tüm düğümler arasında paylaşılır. Kullanıcıların herhangi bir veri kaynağını seçerken bunları doldurmaları gerekecektir. Örneğin, sınırlayıcı ve maksimum öbek uzunluğu gibi alanlar birden çok veri kaynağına aynı şekilde uygulanabilir. İlk adımda (Veri Kaynağı) yalnızca Veri Kaynağı değişkenleri tarafından başvurulan giriş alanları görünür. Diğer tüm alanlar ikinci adımda (Belgeleri İşleme) gösterilir." + }, + "preview": { + "stepOneTitle": "Veri Kaynağı", + "stepTwoTitle": "Süreç Belgeleri" + }, + "error": { + "variableDuplicate": "Değişken adı zaten var. Lütfen farklı bir ad seçin." + }, + "addInputField": "Giriş Alanı Ekle", + "title": "Kullanıcı Giriş Alanları", + "description": "Kullanıcı giriş alanları, işlem hattı yürütme işlemi sırasında gerekli olan değişkenleri tanımlamak ve toplamak için kullanılır. Kullanıcılar, alan türünü özelleştirebilir ve giriş değerini farklı veri kaynaklarının veya belge işleme adımlarının ihtiyaçlarını karşılayacak şekilde esnek bir şekilde yapılandırabilir.", + "editInputField": "Giriş Alanını Düzenle" + }, + "addDocuments": { + "steps": { + "processDocuments": "Süreç Belgeleri", + "processingDocuments": "Belgelerin İşlenmesi", + "chooseDatasource": "Bir Veri Kaynağı Seçin" + }, + "stepOne": { + "preview": "Önizleme" + }, + "stepTwo": { + "previewChunks": "Öbek Öbeklerini Önizle", + "chunkSettings": "Yığın Ayarları" + }, + "stepThree": { + "learnMore": "Daha fazla bilgi edinin" + }, + "characters": "Karakter", + "backToDataSource": "Veri Kaynağı", + "title": "Belge Ekle", + "selectOnlineDocumentTip": "En fazla {{count}} sayfa işleyin", + "selectOnlineDriveTip": "Her biri en fazla {{fileSize}} MB olan {{count}} dosyaya kadar işlem yap" + }, + "documentSettings": { + "title": "Belge Ayarları" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} sayfa" + }, + "onlineDrive": { + "breadcrumbs": { + "allFiles": "Tüm Dosyalar", + "searchPlaceholder": "Dosyaları ara...", + "allBuckets": "Tüm Bulut Depolama Paketleri", + "searchResult": "{{folderName}} klasöründe {{searchResultsLength}} öğe bulun" + }, + "emptySearchResult": "Hiçbir öğe bulunamadı", + "resetKeywords": "Anahtar kelimeleri sıfırlama", + "notSupportedFileType": "Bu dosya türü desteklenmiyor", + "emptyFolder": "Bu klasör boş", + "notConnected": "{{name}} bağlı değil", + "notConnectedTip": "{{name}} ile senkronize olmak için önce {{name}} bağlantısının kurulması gerekir." + }, + "conversion": { + "confirm": { + "title": "Onay", + "content": "Bu eylem kalıcıdır. Önceki yönteme geri dönemezsiniz. Dönüştürmek için lütfen onaylayın." + }, + "warning": "Bu işlem geri alınamaz.", + "title": "Bilgi İşlem Hattına Dönüştür", + "errorMessage": "Veri kümesi işlem hattına dönüştürülemedi", + "successMessage": "Veri kümesi başarıyla işlem hattına dönüştürüldü", + "descriptionChunk2": "— Pazarımızdaki eklentilere erişim ile daha açık ve esnek bir yaklaşım. Bu, yeni işleme yöntemini gelecekteki tüm belgelere uygulayacaktır.", + "descriptionChunk1": "Artık mevcut bilgi bankanızı belge işleme için Bilgi İşlem Hattı'nı kullanacak şekilde dönüştürebilirsiniz" + }, + "knowledgePermissions": "İzinler", + "inputField": "Giriş Alanı", + "knowledgeDescription": "Bilgi açıklaması", + "knowledgeNameAndIconPlaceholder": "Lütfen Bilgi Bankasının adını giriniz", + "knowledgeNameAndIcon": "Bilgi adı ve simgesi", + "pipelineNameAndIcon": "İşlem hattı adı & simgesi", + "editPipelineInfo": "İşlem hattı bilgilerini düzenleme", + "knowledgeDescriptionPlaceholder": "Bu Bilgi Bankasında neler olduğunu açıklayın. Ayrıntılı bir açıklama, yapay zekanın veri kümesinin içeriğine daha doğru bir şekilde erişmesini sağlar. Boşsa, Dify varsayılan isabet stratejisini kullanacaktır. (İsteğe bağlı)", + "configurationTip": "{{pluginName}}'yi yapılandır" +} diff --git a/web/i18n/tr-TR/dataset-pipeline.ts b/web/i18n/tr-TR/dataset-pipeline.ts deleted file mode 100644 index 27433bde26..0000000000 --- a/web/i18n/tr-TR/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - createFromScratch: { - title: 'Boş bilgi hattı', - description: 'Veri işleme ve yapı üzerinde tam denetime sahip sıfırdan özel bir işlem hattı oluşturun.', - }, - createKnowledge: 'Bilgi Oluştur', - caution: 'Dikkat', - successTip: 'Başarıyla bir Bilgi Bankası oluşturuldu', - errorTip: 'Bilgi Bankası oluşturulamadı', - importDSL: 'DSL dosyasından içe aktarma', - backToKnowledge: 'Bilgiye Geri Dön', - }, - templates: { - customized: 'Özel -leştirilmiş', - }, - operations: { - details: 'Şey', - preview: 'Önizleme', - choose: 'Seçmek', - dataSource: 'Veri Kaynağı', - convert: 'Dönüştürmek', - saveAndProcess: 'Kaydet ve İşle', - useTemplate: 'Bu Bilgi İşlem Hattını kullanın', - backToDataSource: 'Veri Kaynağına Geri Dön', - exportPipeline: 'Boru Hattını Dışa Aktar', - editInfo: 'Bilgileri düzenle', - process: 'İşlem', - }, - deletePipeline: { - title: 'Bu işlem hattı şablonunu sildiğinizden emin misiniz?', - content: 'İşlem hattı şablonunun silinmesi geri alınamaz.', - }, - publishPipeline: { - success: { - message: 'Bilgi İşlem Hattı Yayımlandı', - tip: 'Belgeler bölümüne giderek belgeleri ekleyebilir veya yönetebilirsiniz.', - }, - error: { - message: 'Bilgi İşlem Hattı yayımlanamadı', - }, - }, - publishTemplate: { - success: { - message: 'İşlem hattı şablonu yayımlandı', - tip: 'Bu şablonu oluşturma sayfasında kullanabilirsiniz.', - learnMore: 'Daha fazla bilgi edinin', - }, - error: { - message: 'İşlem hattı şablonu yayımlanamadı', - }, - }, - exportDSL: { - successTip: 'İşlem hattı DSL\'sini başarıyla dışarı aktarın', - errorTip: 'İşlem hattı DSL\'si dışarı aktarılamadı', - }, - details: { - structure: 'Yapı', - structureTooltip: 'Yığın Yapısı, belgelerin nasıl bölündüğünü ve dizine eklendiğini belirler (Genel, Üst-Alt ve Soru-Cevap modları sunar) ve her bilgi bankası için benzersizdir.', - createdBy: '{{author}} tarafından', - }, - testRun: { - steps: { - documentProcessing: 'Belge İşleme', - dataSource: 'Veri Kaynağı', - }, - dataSource: { - localFiles: 'Yerel Dosyalar', - }, - notion: { - title: 'Notion Sayfalarını Seçin', - docTitle: 'Kavram belgeleri', - }, - title: 'Test Çalıştırması', - tooltip: 'Test çalıştırması modunda, daha kolay hata ayıklama ve gözlem için aynı anda yalnızca bir belgenin içe aktarılmasına izin verilir.', - }, - inputFieldPanel: { - uniqueInputs: { - title: 'Her giriş için benzersiz girişler', - tooltip: 'Benzersiz Girişlere yalnızca seçilen veri kaynağı ve aşağı akış düğümleri tarafından erişilebilir. Kullanıcıların diğer veri kaynaklarını seçerken bu bilgileri doldurmaları gerekmez. İlk adımda (Veri Kaynağı) yalnızca veri kaynağı değişkenleri tarafından başvurulan giriş alanları görünecektir. Diğer tüm alanlar ikinci adımda (Belgeleri İşle) gösterilecektir.', - }, - globalInputs: { - title: 'Tüm girişler için Global Girişler', - tooltip: 'Global Girişler tüm düğümler arasında paylaşılır. Kullanıcıların herhangi bir veri kaynağını seçerken bunları doldurmaları gerekecektir. Örneğin, sınırlayıcı ve maksimum öbek uzunluğu gibi alanlar birden çok veri kaynağına aynı şekilde uygulanabilir. İlk adımda (Veri Kaynağı) yalnızca Veri Kaynağı değişkenleri tarafından başvurulan giriş alanları görünür. Diğer tüm alanlar ikinci adımda (Belgeleri İşleme) gösterilir.', - }, - preview: { - stepOneTitle: 'Veri Kaynağı', - stepTwoTitle: 'Süreç Belgeleri', - }, - error: { - variableDuplicate: 'Değişken adı zaten var. Lütfen farklı bir ad seçin.', - }, - addInputField: 'Giriş Alanı Ekle', - title: 'Kullanıcı Giriş Alanları', - description: 'Kullanıcı giriş alanları, işlem hattı yürütme işlemi sırasında gerekli olan değişkenleri tanımlamak ve toplamak için kullanılır. Kullanıcılar, alan türünü özelleştirebilir ve giriş değerini farklı veri kaynaklarının veya belge işleme adımlarının ihtiyaçlarını karşılayacak şekilde esnek bir şekilde yapılandırabilir.', - editInputField: 'Giriş Alanını Düzenle', - }, - addDocuments: { - steps: { - processDocuments: 'Süreç Belgeleri', - processingDocuments: 'Belgelerin İşlenmesi', - chooseDatasource: 'Bir Veri Kaynağı Seçin', - }, - stepOne: { - preview: 'Önizleme', - }, - stepTwo: { - previewChunks: 'Öbek Öbeklerini Önizle', - chunkSettings: 'Yığın Ayarları', - }, - stepThree: { - learnMore: 'Daha fazla bilgi edinin', - }, - characters: 'Karakter', - backToDataSource: 'Veri Kaynağı', - title: 'Belge Ekle', - selectOnlineDocumentTip: 'En fazla {{count}} sayfa işleyin', - selectOnlineDriveTip: 'Her biri en fazla {{fileSize}} MB olan {{count}} dosyaya kadar işlem yap', - }, - documentSettings: { - title: 'Belge Ayarları', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} sayfa', - }, - onlineDrive: { - breadcrumbs: { - allFiles: 'Tüm Dosyalar', - searchPlaceholder: 'Dosyaları ara...', - allBuckets: 'Tüm Bulut Depolama Paketleri', - searchResult: '{{folderName}} klasöründe {{searchResultsLength}} öğe bulun', - }, - emptySearchResult: 'Hiçbir öğe bulunamadı', - resetKeywords: 'Anahtar kelimeleri sıfırlama', - notSupportedFileType: 'Bu dosya türü desteklenmiyor', - emptyFolder: 'Bu klasör boş', - notConnected: '{{name}} bağlı değil', - notConnectedTip: '{{name}} ile senkronize olmak için önce {{name}} bağlantısının kurulması gerekir.', - }, - conversion: { - confirm: { - title: 'Onay', - content: 'Bu eylem kalıcıdır. Önceki yönteme geri dönemezsiniz. Dönüştürmek için lütfen onaylayın.', - }, - warning: 'Bu işlem geri alınamaz.', - title: 'Bilgi İşlem Hattına Dönüştür', - errorMessage: 'Veri kümesi işlem hattına dönüştürülemedi', - successMessage: 'Veri kümesi başarıyla işlem hattına dönüştürüldü', - descriptionChunk2: '— Pazarımızdaki eklentilere erişim ile daha açık ve esnek bir yaklaşım. Bu, yeni işleme yöntemini gelecekteki tüm belgelere uygulayacaktır.', - descriptionChunk1: 'Artık mevcut bilgi bankanızı belge işleme için Bilgi İşlem Hattı\'nı kullanacak şekilde dönüştürebilirsiniz', - }, - knowledgePermissions: 'İzinler', - inputField: 'Giriş Alanı', - knowledgeDescription: 'Bilgi açıklaması', - knowledgeNameAndIconPlaceholder: 'Lütfen Bilgi Bankasının adını giriniz', - knowledgeNameAndIcon: 'Bilgi adı ve simgesi', - pipelineNameAndIcon: 'İşlem hattı adı & simgesi', - editPipelineInfo: 'İşlem hattı bilgilerini düzenleme', - knowledgeDescriptionPlaceholder: 'Bu Bilgi Bankasında neler olduğunu açıklayın. Ayrıntılı bir açıklama, yapay zekanın veri kümesinin içeriğine daha doğru bir şekilde erişmesini sağlar. Boşsa, Dify varsayılan isabet stratejisini kullanacaktır. (İsteğe bağlı)', - configurationTip: '{{pluginName}}\'yi yapılandır', -} - -export default translation diff --git a/web/i18n/tr-TR/dataset-settings.json b/web/i18n/tr-TR/dataset-settings.json new file mode 100644 index 0000000000..40b48673e5 --- /dev/null +++ b/web/i18n/tr-TR/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "Bilgi ayarları", + "desc": "Burada Bilginin özelliklerini ve çalışma yöntemlerini değiştirebilirsiniz.", + "form": { + "name": "Bilgi İsmi", + "namePlaceholder": "Bilgi ismini girin", + "nameError": "İsim boş olamaz", + "desc": "Bilgi açıklaması", + "descInfo": "Lütfen Bilginin içeriğini özetlemek için net bir metinsel açıklama yazın. Bu açıklama, çıkarım için birden fazla Bilgi arasından seçim yaparken eşleştirme temeli olarak kullanılacaktır.", + "descPlaceholder": "Bu Bilginin içeriğini açıklayın. Ayrıntılı bir açıklama, AI'nın Bilginin içeriğine zamanında erişmesini sağlar. Boş bırakılırsa, Dify varsayılan isabet stratejisini kullanır.", + "descWrite": "İyi bir Bilgi açıklamasının nasıl yazılacağını öğrenin.", + "permissions": "İzinler", + "permissionsOnlyMe": "Sadece ben", + "permissionsAllMember": "Tüm takım üyeleri", + "permissionsInvitedMembers": "Bazı takım üyeleri", + "me": "(Siz)", + "indexMethod": "Dizin Yöntemi", + "indexMethodHighQuality": "Yüksek Kalite", + "indexMethodHighQualityTip": "Kullanıcılar sorguladığında daha yüksek doğruluk sağlamak için Yerleştirme modelini çağırır.", + "indexMethodEconomy": "Ekonomik", + "indexMethodEconomyTip": "Doğruluğu azaltmak için çevrimdışı vektör motorları, anahtar kelime dizinleri vb. kullanın, token harcamadan", + "embeddingModel": "Yerleştirme Modeli", + "embeddingModelTip": "Yerleştirme modelini değiştirmek için, lütfen ", + "embeddingModelTipLink": "Ayarlar'a gidin", + "retrievalSetting": { + "title": "Geri Alım Ayarı", + "learnMore": "Daha fazla bilgi edinin", + "description": " geri alım yöntemi hakkında.", + "longDescription": " geri alım yöntemi hakkında, bunu Bilgi ayarlarında istediğiniz zaman değiştirebilirsiniz.", + "method": "Retrieval Yöntemi", + "multiModalTip": "Embedding modeli çok modlu destekliyorsa, daha iyi performans için çok modlu bir yeniden sıralama modeli seçin." + }, + "save": "Kaydet", + "retrievalSettings": "Alma Ayarları", + "externalKnowledgeAPI": "Harici Bilgi API'si", + "externalKnowledgeID": "Harici Bilgi Kimliği", + "upgradeHighQualityTip": "Yüksek Kalite moduna yükselttikten sonra Ekonomik moda geri dönülemez", + "indexMethodChangeToEconomyDisabledTip": "Genel Merkezden ECO'ya düşürme için mevcut değil", + "helpText": "İyi bir veri kümesi açıklamasının nasıl yazılacağını öğrenin.", + "searchModel": "Model Ara", + "chunkStructure": { + "learnMore": "Daha fazla bilgi edinin", + "description": "Yığın Yapısı hakkında.", + "title": "Yığın Yapısı" + }, + "nameAndIcon": "İsim ve Simge", + "numberOfKeywords": "Anahtar Kelime Sayısı", + "onSearchResults": "Arama sorgunuzla eşleşen üye yok.\nAramanızı tekrar deneyin." + } +} diff --git a/web/i18n/tr-TR/dataset-settings.ts b/web/i18n/tr-TR/dataset-settings.ts deleted file mode 100644 index cd051bcc91..0000000000 --- a/web/i18n/tr-TR/dataset-settings.ts +++ /dev/null @@ -1,52 +0,0 @@ -const translation = { - title: 'Bilgi ayarları', - desc: 'Burada Bilginin özelliklerini ve çalışma yöntemlerini değiştirebilirsiniz.', - form: { - name: 'Bilgi İsmi', - namePlaceholder: 'Bilgi ismini girin', - nameError: 'İsim boş olamaz', - desc: 'Bilgi açıklaması', - descInfo: 'Lütfen Bilginin içeriğini özetlemek için net bir metinsel açıklama yazın. Bu açıklama, çıkarım için birden fazla Bilgi arasından seçim yaparken eşleştirme temeli olarak kullanılacaktır.', - descPlaceholder: 'Bu Bilginin içeriğini açıklayın. Ayrıntılı bir açıklama, AI\'nın Bilginin içeriğine zamanında erişmesini sağlar. Boş bırakılırsa, Dify varsayılan isabet stratejisini kullanır.', - descWrite: 'İyi bir Bilgi açıklamasının nasıl yazılacağını öğrenin.', - permissions: 'İzinler', - permissionsOnlyMe: 'Sadece ben', - permissionsAllMember: 'Tüm takım üyeleri', - permissionsInvitedMembers: 'Bazı takım üyeleri', - me: '(Siz)', - indexMethod: 'Dizin Yöntemi', - indexMethodHighQuality: 'Yüksek Kalite', - indexMethodHighQualityTip: 'Kullanıcılar sorguladığında daha yüksek doğruluk sağlamak için Yerleştirme modelini çağırır.', - indexMethodEconomy: 'Ekonomik', - indexMethodEconomyTip: 'Doğruluğu azaltmak için çevrimdışı vektör motorları, anahtar kelime dizinleri vb. kullanın, token harcamadan', - embeddingModel: 'Yerleştirme Modeli', - embeddingModelTip: 'Yerleştirme modelini değiştirmek için, lütfen ', - embeddingModelTipLink: 'Ayarlar\'a gidin', - retrievalSetting: { - title: 'Geri Alım Ayarı', - learnMore: 'Daha fazla bilgi edinin', - description: ' geri alım yöntemi hakkında.', - longDescription: ' geri alım yöntemi hakkında, bunu Bilgi ayarlarında istediğiniz zaman değiştirebilirsiniz.', - method: 'Retrieval Yöntemi', - multiModalTip: 'Embedding modeli çok modlu destekliyorsa, daha iyi performans için çok modlu bir yeniden sıralama modeli seçin.', - }, - save: 'Kaydet', - retrievalSettings: 'Alma Ayarları', - externalKnowledgeAPI: 'Harici Bilgi API\'si', - externalKnowledgeID: 'Harici Bilgi Kimliği', - upgradeHighQualityTip: 'Yüksek Kalite moduna yükselttikten sonra Ekonomik moda geri dönülemez', - indexMethodChangeToEconomyDisabledTip: 'Genel Merkezden ECO\'ya düşürme için mevcut değil', - helpText: 'İyi bir veri kümesi açıklamasının nasıl yazılacağını öğrenin.', - searchModel: 'Model Ara', - chunkStructure: { - learnMore: 'Daha fazla bilgi edinin', - description: 'Yığın Yapısı hakkında.', - title: 'Yığın Yapısı', - }, - nameAndIcon: 'İsim ve Simge', - numberOfKeywords: 'Anahtar Kelime Sayısı', - onSearchResults: 'Arama sorgunuzla eşleşen üye yok.\nAramanızı tekrar deneyin.', - }, -} - -export default translation diff --git a/web/i18n/tr-TR/dataset.json b/web/i18n/tr-TR/dataset.json new file mode 100644 index 0000000000..e52f71024b --- /dev/null +++ b/web/i18n/tr-TR/dataset.json @@ -0,0 +1,249 @@ +{ + "knowledge": "Bilgi", + "documentCount": " belge", + "wordCount": " k kelime", + "appCount": " bağlı uygulamalar", + "createDataset": "Bilgi Oluştur", + "createDatasetIntro": "Kendi metin verilerinizi içe aktarın veya Webhook aracılığıyla gerçek zamanlı olarak veri yazın, LLM bağlamını geliştirin.", + "deleteDatasetConfirmTitle": "Bu Bilgi'yi silmek istiyor musunuz?", + "deleteDatasetConfirmContent": "Bilginin silinmesi geri alınamaz. Kullanıcılar artık Bilginize erişemeyecek ve tüm prompt yapılandırmaları ve günlükler kalıcı olarak silinecektir.", + "datasetUsedByApp": "Bilgi bazı uygulamalar tarafından kullanılıyor. Uygulamalar artık bu Bilgiyi kullanamayacak ve tüm prompt yapılandırmaları ve günlükler kalıcı olarak silinecektir.", + "datasetDeleted": "Bilgi silindi", + "datasetDeleteFailed": "Bilgi silinemedi", + "didYouKnow": "Biliyor muydunuz?", + "intro1": "Bilgi, Dify uygulamasına ", + "intro2": "bağlam olarak", + "intro3": " entegre edilebilir,", + "intro4": "veya ", + "intro5": "bağımsız bir ChatGPT dizin eklentisi olarak oluşturulabilir", + "intro6": " ve yayınlanabilir.", + "unavailable": "Kullanılamıyor", + "datasets": "BİLGİ", + "datasetsApi": "API ERİŞİMİ", + "retrieval": { + "semantic_search": { + "title": "Vektör Arama", + "description": "Sorgu yerleştirmelerini oluşturun ve vektör temsiline en benzeyen metin parçasını arayın." + }, + "full_text_search": { + "title": "Tam Metin Arama", + "description": "Belgelerdeki tüm terimleri dizinleyerek, kullanıcıların herhangi bir terimi aramasına ve bu terimleri içeren ilgili metin parçasını geri almasına olanak tanır." + }, + "hybrid_search": { + "title": "Hibrit Arama", + "description": "Tam metin arama ve vektör aramalarını aynı anda çalıştırın, kullanıcı sorgusu için en iyi eşleşmeyi seçmek için yeniden sıralayın. Kullanıcılar ağırlıklar ayarlayabilir veya bir Yeniden Sıralama modeli yapılandırabilir.", + "recommend": "Önerilir" + }, + "invertedIndex": {}, + "change": "Değiştir", + "changeRetrievalMethod": "Geri alma yöntemini değiştir", + "keyword_search": { + "title": "Ters Çevrilmiş İndeks", + "description": "Ters İndeks, verimli erişim için kullanılan bir yapıdır. Terimlere göre düzenlenen her terim, onu içeren belgelere veya web sayfalarına işaret eder." + } + }, + "docsFailedNotice": "belgeler dizine eklenemedi", + "retry": "Yeniden Dene", + "indexingTechnique": { + "high_quality": "Yüksek Kalite", + "economy": "Ekonomi" + }, + "indexingMethod": { + "semantic_search": "VEKTÖR", + "full_text_search": "TAM METİN", + "hybrid_search": "HİBRİT", + "invertedIndex": "TERS" + }, + "mixtureHighQualityAndEconomicTip": "Yüksek kaliteli ve ekonomik bilgi tabanlarının karışımı için Yeniden Sıralama modeli gereklidir.", + "inconsistentEmbeddingModelTip": "Seçilen bilgi tabanlarının Yerleştirme modelleri tutarsızsa Yeniden Sıralama modeli gereklidir.", + "retrievalSettings": "Geri Alım Ayarı", + "rerankSettings": "Yeniden Sıralama Ayarı", + "weightedScore": { + "title": "Ağırlıklı Puan", + "description": "Verilen ağırlıkları ayarlayarak bu yeniden sıralama stratejisi, anlamsal mı yoksa anahtar kelime eşleştirmesini mi önceliklendireceğini belirler.", + "semanticFirst": "Anlamsal Öncelikli", + "keywordFirst": "Anahtar Kelime Öncelikli", + "customized": "Özelleştirilmiş", + "semantic": "Anlamsal", + "keyword": "Anahtar Kelime" + }, + "nTo1RetrievalLegacy": "Geri alım stratejisinin optimizasyonu ve yükseltilmesi nedeniyle, N-to-1 geri alımı Eylül ayında resmi olarak kullanım dışı kalacaktır. O zamana kadar normal şekilde kullanabilirsiniz.", + "nTo1RetrievalLegacyLink": "Daha fazla bilgi edin", + "nTo1RetrievalLegacyLinkText": "N-1 geri alma Eylül ayında resmi olarak kullanımdan kaldırılacaktır.", + "defaultRetrievalTip": "Varsayılan olarak çok alma kullanılır. Bilgi, birden fazla bilgi tabanından alınır ve ardından yeniden sıralanır.", + "editExternalAPIConfirmWarningContent": { + "front": "Bu Harici Bilgi API'si aşağıdakilerle bağlantılıdır", + "end": "Dışsal bilgi ve bu değişiklik hepsine uygulanacaktır. Bu değişikliği kaydetmek istediğinizden emin misiniz?" + }, + "editExternalAPIFormWarning": { + "end": "Dış bilgi", + "front": "Bu Harici API aşağıdakilere bağlıdır:" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "front": "Silmek", + "end": "?" + }, + "content": { + "front": "Bu Harici Bilgi API'si aşağıdakilerle bağlantılıdır", + "end": "dış bilgi. Bu API'yi silmek hepsini geçersiz kılacaktır. Bu API'yi silmek istediğinizden emin misiniz?" + }, + "noConnectionContent": "Bu API'yi sildiğinizden emin misiniz?" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "Bir Harici Bilgi API'si seçin" + }, + "connectDatasetIntro": { + "content": { + "front": "Harici bir bilgi bankasına bağlanmak için önce harici bir API oluşturmanız gerekir. Lütfen dikkatlice okuyun ve bakınız", + "end": ". Ardından ilgili bilgi kimliğini bulun ve soldaki forma doldurun. Tüm bilgiler doğruysa, bağlan düğmesine tıkladıktan sonra otomatik olarak bilgi tabanındaki alma testine atlayacaktır.", + "link": "Harici API oluşturmayı öğrenin" + }, + "title": "Harici bir bilgi bankasına nasıl bağlanılır", + "learnMore": "Daha fazla bilgi edinin" + }, + "connectHelper": { + "helper2": "Yalnızca alma işlevi desteklenir", + "helper5": "Bu özelliği kullanmadan önce dikkatlice kullanın.", + "helper3": ". Şunları yapmanızı şiddetle tavsiye ederiz", + "helper1": "API ve bilgi bankası kimliği aracılığıyla harici bilgi bankalarına bağlanın. Şu anda,", + "helper4": "Yardım belgelerini okuyun" + }, + "externalKnowledgeForm": { + "connect": "Bağlamak", + "cancel": "İptal" + }, + "externalAPIForm": { + "encrypted": { + "end": "Teknoloji.", + "front": "API Token'ınız kullanılarak şifrelenecek ve saklanacaktır." + }, + "save": "Kurtarmak", + "cancel": "İptal", + "endpoint": "API Uç Noktası", + "edit": "Düzenlemek", + "name": "Ad", + "apiKey": "API Anahtarı" + }, + "externalTag": "Dış", + "externalAPI": "Harici API", + "externalKnowledgeDescription": "Bilgi Açıklaması", + "externalAPIPanelDescription": "Harici bilgi API'si, Dify dışındaki bir bilgi bankasına bağlanmak ve bu bilgi bankasından bilgi almak için kullanılır.", + "externalKnowledgeDescriptionPlaceholder": "Bu Bilgi Bankası'nda neler olduğunu açıklayın (isteğe bağlı)", + "externalAPIPanelDocumentation": "External Knowledge API'nin nasıl oluşturulacağını öğrenin", + "mixtureInternalAndExternalTip": "Rerank modeli, iç ve dış bilgilerin karışımı için gereklidir.", + "externalKnowledgeName": "Dış Bilgi Adı", + "connectDataset": "Harici bir bilgi bankasına bağlanın", + "editExternalAPITooltipTitle": "BAĞLANTILI BILGI", + "externalAPIPanelTitle": "Harici Bilgi API'si", + "editExternalAPIFormTitle": "External Knowledge API'yi düzenleme", + "externalKnowledgeIdPlaceholder": "Lütfen Bilgi Kimliğini girin", + "learnHowToWriteGoodKnowledgeDescription": "İyi bir bilgi açıklamasının nasıl yazılacağını öğrenin", + "externalKnowledgeNamePlaceholder": "Lütfen bilgi bankasının adını giriniz", + "noExternalKnowledge": "Henüz Harici Bilgi API'si yok, oluşturmak için buraya tıklayın", + "allExternalTip": "Yalnızca harici bilgileri kullanırken, kullanıcı Rerank modelinin etkinleştirilip etkinleştirilmeyeceğini seçebilir. Etkinleştirilmezse, alınan parçalar puanlara göre sıralanır. Farklı bilgi tabanlarının erişim stratejileri tutarsız olduğunda, yanlış olacaktır.", + "externalKnowledgeId": "Harici Bilgi Kimliği", + "createExternalAPI": "Harici bilgi API'si ekleme", + "createNewExternalAPI": "Yeni bir External Knowledge API oluşturma", + "chunkingMode": { + "general": "Genel", + "parentChild": "Ebeveyn-çocuk", + "graph": "Grafik", + "qa": "Soru-Cevap" + }, + "parentMode": { + "fullDoc": "Tam doküman", + "paragraph": "Paragraf" + }, + "batchAction": { + "selected": "Seçilmiş", + "cancel": "İptal", + "enable": "Etkinleştirmek", + "delete": "Silmek", + "archive": "Arşiv", + "disable": "Devre dışı bırakmak" + }, + "preprocessDocument": "{{sayı}} Belgeleri Ön İşleme", + "localDocs": "Yerel Dokümanlar", + "documentsDisabled": "{{num}} belge devre dışı - 30 günden uzun süre etkin değil", + "enable": "Etkinleştirmek", + "allKnowledge": "Tüm Bilgiler", + "allKnowledgeDescription": "Bu çalışma alanındaki tüm bilgileri görüntülemek için seçin. Yalnızca Çalışma Alanı Sahibi tüm bilgileri yönetebilir.", + "metadata": { + "createMetadata": { + "namePlaceholder": "Meta veri adı ekleyin", + "back": "Geri", + "name": "İsim", + "type": "Yaz", + "title": "Yeni Veriler" + }, + "checkName": { + "empty": "Meta veri adı boş olamaz", + "invalid": "Meta verisi adı yalnızca küçük harfler, sayılar ve alt çizgiler içerebilir ve küçük bir harfle başlamalıdır.", + "tooLong": "Meta veri adı {{max}} karakteri geçemez" + }, + "batchEditMetadata": { + "multipleValue": "Birden Fazla Değer", + "applyToAllSelectDocumentTip": "Seçilen tüm belgeler için yukarıda düzenlenmiş ve yeni olan tüm meta verileri otomatik olarak oluşturun, aksi takdirde meta verileri düzenlemek yalnızca bununla ilgili belgelere uygulanacaktır.", + "editDocumentsNum": "{{num}} belge düzenleniyor", + "editMetadata": "Meta Verileri Düzenle", + "applyToAllSelectDocument": "Seçilen tüm belgelere uygula" + }, + "selectMetadata": { + "newAction": "Yeni Veriler", + "manageAction": "Yönet", + "search": "Arama meta verileri" + }, + "datasetMetadata": { + "disabled": "Devre dışı bırakıldı.", + "builtIn": "Yerleşik", + "values": "{{num}} Değerler", + "builtInDescription": "Yerleşik meta veriler otomatik olarak çıkarılır ve oluşturulur. Kullanımdan önce etkinleştirilmesi gerekir ve düzenlenemez.", + "rename": "Yeniden Adlandır", + "addMetaData": "Meta Verileri Ekle", + "name": "İsim", + "deleteContent": "Bu {{name}} meta verisini silmek istediğinizden emin misiniz?", + "namePlaceholder": "Meta veri adı", + "deleteTitle": "Silmek için onayla", + "description": "Bu bilgideki tüm meta verileri yönetebilirsiniz. Değişiklikler her belgeye senkronize edilecektir." + }, + "documentMetadata": { + "documentInformation": "Belge Bilgisi", + "metadataToolTip": "Meta veriler, bilgi alma doğruluğunu ve geçerliliğini artıran önemli bir filtre görevi görür. Bu belgede meta verileri burada değiştirebilir ve ekleyebilirsiniz.", + "startLabeling": "Etiketlemeye Başla", + "technicalParameters": "Teknik Parametreler" + }, + "metadata": "Veri Seti", + "addMetadata": "Meta Verileri Ekle", + "chooseTime": "Bir zaman seçin..." + }, + "embeddingModelNotAvailable": "Gömme modeli mevcut değil.", + "updated": "Güncel -leştirilmiş", + "createFromPipeline": "Bilgi İşlem Hattından Oluşturun", + "externalKnowledgeBase": "Harici Bilgi Bankası", + "serviceApi": { + "card": { + "apiReference": "API Referansı", + "title": "Backend servis api", + "apiKey": "API Anahtarı", + "endpoint": "Hizmet API Uç Noktası" + }, + "disabled": "Engelli", + "enabled": "Hizmette", + "title": "Servis API'si" + }, + "docAllEnabled_one": "{{count}} belgesi etkinleştirildi", + "docAllEnabled_other": "Tüm {{count}} belgeleri etkinleştirildi", + "partialEnabled_one": "Toplam {{count}} belge, {{num}} mevcut", + "partialEnabled_other": "Toplam {{count}} belge, {{num}} mevcut", + "cornerLabel": { + "unavailable": "Mevcut değil", + "pipeline": "Boruhattı" + }, + "multimodal": "Multimodal", + "imageUploader": { + "button": "Dosya veya klasörü sürükleyip bırakın, veya", + "browse": "Gözat", + "tip": "{{supportTypes}} (Her biri Maks. {{batchCount}}, {{size}}MB)" + } +} diff --git a/web/i18n/tr-TR/dataset.ts b/web/i18n/tr-TR/dataset.ts deleted file mode 100644 index 75c1a530e4..0000000000 --- a/web/i18n/tr-TR/dataset.ts +++ /dev/null @@ -1,253 +0,0 @@ -const translation = { - knowledge: 'Bilgi', - documentCount: ' belge', - wordCount: ' k kelime', - appCount: ' bağlı uygulamalar', - createDataset: 'Bilgi Oluştur', - createDatasetIntro: 'Kendi metin verilerinizi içe aktarın veya Webhook aracılığıyla gerçek zamanlı olarak veri yazın, LLM bağlamını geliştirin.', - deleteDatasetConfirmTitle: 'Bu Bilgi\'yi silmek istiyor musunuz?', - deleteDatasetConfirmContent: - 'Bilginin silinmesi geri alınamaz. Kullanıcılar artık Bilginize erişemeyecek ve tüm prompt yapılandırmaları ve günlükler kalıcı olarak silinecektir.', - datasetUsedByApp: 'Bilgi bazı uygulamalar tarafından kullanılıyor. Uygulamalar artık bu Bilgiyi kullanamayacak ve tüm prompt yapılandırmaları ve günlükler kalıcı olarak silinecektir.', - datasetDeleted: 'Bilgi silindi', - datasetDeleteFailed: 'Bilgi silinemedi', - didYouKnow: 'Biliyor muydunuz?', - intro1: 'Bilgi, Dify uygulamasına ', - intro2: 'bağlam olarak', - intro3: ' entegre edilebilir,', - intro4: 'veya ', - intro5: 'bağımsız bir ChatGPT dizin eklentisi olarak oluşturulabilir', - intro6: ' ve yayınlanabilir.', - unavailable: 'Kullanılamıyor', - datasets: 'BİLGİ', - datasetsApi: 'API ERİŞİMİ', - retrieval: { - semantic_search: { - title: 'Vektör Arama', - description: 'Sorgu yerleştirmelerini oluşturun ve vektör temsiline en benzeyen metin parçasını arayın.', - }, - full_text_search: { - title: 'Tam Metin Arama', - description: 'Belgelerdeki tüm terimleri dizinleyerek, kullanıcıların herhangi bir terimi aramasına ve bu terimleri içeren ilgili metin parçasını geri almasına olanak tanır.', - }, - hybrid_search: { - title: 'Hibrit Arama', - description: 'Tam metin arama ve vektör aramalarını aynı anda çalıştırın, kullanıcı sorgusu için en iyi eşleşmeyi seçmek için yeniden sıralayın. Kullanıcılar ağırlıklar ayarlayabilir veya bir Yeniden Sıralama modeli yapılandırabilir.', - recommend: 'Önerilir', - }, - invertedIndex: { - }, - change: 'Değiştir', - changeRetrievalMethod: 'Geri alma yöntemini değiştir', - keyword_search: { - title: 'Ters Çevrilmiş İndeks', - description: 'Ters İndeks, verimli erişim için kullanılan bir yapıdır. Terimlere göre düzenlenen her terim, onu içeren belgelere veya web sayfalarına işaret eder.', - }, - }, - docsFailedNotice: 'belgeler dizine eklenemedi', - retry: 'Yeniden Dene', - indexingTechnique: { - high_quality: 'Yüksek Kalite', - economy: 'Ekonomi', - }, - indexingMethod: { - semantic_search: 'VEKTÖR', - full_text_search: 'TAM METİN', - hybrid_search: 'HİBRİT', - invertedIndex: 'TERS', - }, - mixtureHighQualityAndEconomicTip: 'Yüksek kaliteli ve ekonomik bilgi tabanlarının karışımı için Yeniden Sıralama modeli gereklidir.', - inconsistentEmbeddingModelTip: 'Seçilen bilgi tabanlarının Yerleştirme modelleri tutarsızsa Yeniden Sıralama modeli gereklidir.', - retrievalSettings: 'Geri Alım Ayarı', - rerankSettings: 'Yeniden Sıralama Ayarı', - weightedScore: { - title: 'Ağırlıklı Puan', - description: 'Verilen ağırlıkları ayarlayarak bu yeniden sıralama stratejisi, anlamsal mı yoksa anahtar kelime eşleştirmesini mi önceliklendireceğini belirler.', - semanticFirst: 'Anlamsal Öncelikli', - keywordFirst: 'Anahtar Kelime Öncelikli', - customized: 'Özelleştirilmiş', - semantic: 'Anlamsal', - keyword: 'Anahtar Kelime', - }, - nTo1RetrievalLegacy: 'Geri alım stratejisinin optimizasyonu ve yükseltilmesi nedeniyle, N-to-1 geri alımı Eylül ayında resmi olarak kullanım dışı kalacaktır. O zamana kadar normal şekilde kullanabilirsiniz.', - nTo1RetrievalLegacyLink: 'Daha fazla bilgi edin', - nTo1RetrievalLegacyLinkText: 'N-1 geri alma Eylül ayında resmi olarak kullanımdan kaldırılacaktır.', - defaultRetrievalTip: 'Varsayılan olarak çok alma kullanılır. Bilgi, birden fazla bilgi tabanından alınır ve ardından yeniden sıralanır.', - editExternalAPIConfirmWarningContent: { - front: 'Bu Harici Bilgi API\'si aşağıdakilerle bağlantılıdır', - end: 'Dışsal bilgi ve bu değişiklik hepsine uygulanacaktır. Bu değişikliği kaydetmek istediğinizden emin misiniz?', - }, - editExternalAPIFormWarning: { - end: 'Dış bilgi', - front: 'Bu Harici API aşağıdakilere bağlıdır:', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - front: 'Silmek', - end: '?', - }, - content: { - front: 'Bu Harici Bilgi API\'si aşağıdakilerle bağlantılıdır', - end: 'dış bilgi. Bu API\'yi silmek hepsini geçersiz kılacaktır. Bu API\'yi silmek istediğinizden emin misiniz?', - }, - noConnectionContent: 'Bu API\'yi sildiğinizden emin misiniz?', - }, - selectExternalKnowledgeAPI: { - placeholder: 'Bir Harici Bilgi API\'si seçin', - }, - connectDatasetIntro: { - content: { - front: 'Harici bir bilgi bankasına bağlanmak için önce harici bir API oluşturmanız gerekir. Lütfen dikkatlice okuyun ve bakınız', - end: '. Ardından ilgili bilgi kimliğini bulun ve soldaki forma doldurun. Tüm bilgiler doğruysa, bağlan düğmesine tıkladıktan sonra otomatik olarak bilgi tabanındaki alma testine atlayacaktır.', - link: 'Harici API oluşturmayı öğrenin', - }, - title: 'Harici bir bilgi bankasına nasıl bağlanılır', - learnMore: 'Daha fazla bilgi edinin', - }, - connectHelper: { - helper2: 'Yalnızca alma işlevi desteklenir', - helper5: 'Bu özelliği kullanmadan önce dikkatlice kullanın.', - helper3: '. Şunları yapmanızı şiddetle tavsiye ederiz', - helper1: 'API ve bilgi bankası kimliği aracılığıyla harici bilgi bankalarına bağlanın. Şu anda,', - helper4: 'Yardım belgelerini okuyun', - }, - externalKnowledgeForm: { - connect: 'Bağlamak', - cancel: 'İptal', - }, - externalAPIForm: { - encrypted: { - end: 'Teknoloji.', - front: 'API Token\'ınız kullanılarak şifrelenecek ve saklanacaktır.', - }, - save: 'Kurtarmak', - cancel: 'İptal', - endpoint: 'API Uç Noktası', - edit: 'Düzenlemek', - name: 'Ad', - apiKey: 'API Anahtarı', - }, - externalTag: 'Dış', - externalAPI: 'Harici API', - externalKnowledgeDescription: 'Bilgi Açıklaması', - externalAPIPanelDescription: 'Harici bilgi API\'si, Dify dışındaki bir bilgi bankasına bağlanmak ve bu bilgi bankasından bilgi almak için kullanılır.', - externalKnowledgeDescriptionPlaceholder: 'Bu Bilgi Bankası\'nda neler olduğunu açıklayın (isteğe bağlı)', - externalAPIPanelDocumentation: 'External Knowledge API\'nin nasıl oluşturulacağını öğrenin', - mixtureInternalAndExternalTip: 'Rerank modeli, iç ve dış bilgilerin karışımı için gereklidir.', - externalKnowledgeName: 'Dış Bilgi Adı', - connectDataset: 'Harici bir bilgi bankasına bağlanın', - editExternalAPITooltipTitle: 'BAĞLANTILI BILGI', - externalAPIPanelTitle: 'Harici Bilgi API\'si', - editExternalAPIFormTitle: 'External Knowledge API\'yi düzenleme', - externalKnowledgeIdPlaceholder: 'Lütfen Bilgi Kimliğini girin', - learnHowToWriteGoodKnowledgeDescription: 'İyi bir bilgi açıklamasının nasıl yazılacağını öğrenin', - externalKnowledgeNamePlaceholder: 'Lütfen bilgi bankasının adını giriniz', - noExternalKnowledge: 'Henüz Harici Bilgi API\'si yok, oluşturmak için buraya tıklayın', - allExternalTip: 'Yalnızca harici bilgileri kullanırken, kullanıcı Rerank modelinin etkinleştirilip etkinleştirilmeyeceğini seçebilir. Etkinleştirilmezse, alınan parçalar puanlara göre sıralanır. Farklı bilgi tabanlarının erişim stratejileri tutarsız olduğunda, yanlış olacaktır.', - externalKnowledgeId: 'Harici Bilgi Kimliği', - createExternalAPI: 'Harici bilgi API\'si ekleme', - createNewExternalAPI: 'Yeni bir External Knowledge API oluşturma', - chunkingMode: { - general: 'Genel', - parentChild: 'Ebeveyn-çocuk', - graph: 'Grafik', - qa: 'Soru-Cevap', - }, - parentMode: { - fullDoc: 'Tam doküman', - paragraph: 'Paragraf', - }, - batchAction: { - selected: 'Seçilmiş', - cancel: 'İptal', - enable: 'Etkinleştirmek', - delete: 'Silmek', - archive: 'Arşiv', - disable: 'Devre dışı bırakmak', - }, - preprocessDocument: '{{sayı}} Belgeleri Ön İşleme', - localDocs: 'Yerel Dokümanlar', - documentsDisabled: '{{num}} belge devre dışı - 30 günden uzun süre etkin değil', - enable: 'Etkinleştirmek', - allKnowledge: 'Tüm Bilgiler', - allKnowledgeDescription: 'Bu çalışma alanındaki tüm bilgileri görüntülemek için seçin. Yalnızca Çalışma Alanı Sahibi tüm bilgileri yönetebilir.', - metadata: { - createMetadata: { - namePlaceholder: 'Meta veri adı ekleyin', - back: 'Geri', - name: 'İsim', - type: 'Yaz', - title: 'Yeni Veriler', - }, - checkName: { - empty: 'Meta veri adı boş olamaz', - invalid: 'Meta verisi adı yalnızca küçük harfler, sayılar ve alt çizgiler içerebilir ve küçük bir harfle başlamalıdır.', - tooLong: 'Meta veri adı {{max}} karakteri geçemez', - }, - batchEditMetadata: { - multipleValue: 'Birden Fazla Değer', - applyToAllSelectDocumentTip: 'Seçilen tüm belgeler için yukarıda düzenlenmiş ve yeni olan tüm meta verileri otomatik olarak oluşturun, aksi takdirde meta verileri düzenlemek yalnızca bununla ilgili belgelere uygulanacaktır.', - editDocumentsNum: '{{num}} belge düzenleniyor', - editMetadata: 'Meta Verileri Düzenle', - applyToAllSelectDocument: 'Seçilen tüm belgelere uygula', - }, - selectMetadata: { - newAction: 'Yeni Veriler', - manageAction: 'Yönet', - search: 'Arama meta verileri', - }, - datasetMetadata: { - disabled: 'Devre dışı bırakıldı.', - builtIn: 'Yerleşik', - values: '{{num}} Değerler', - builtInDescription: 'Yerleşik meta veriler otomatik olarak çıkarılır ve oluşturulur. Kullanımdan önce etkinleştirilmesi gerekir ve düzenlenemez.', - rename: 'Yeniden Adlandır', - addMetaData: 'Meta Verileri Ekle', - name: 'İsim', - deleteContent: 'Bu {{name}} meta verisini silmek istediğinizden emin misiniz?', - namePlaceholder: 'Meta veri adı', - deleteTitle: 'Silmek için onayla', - description: 'Bu bilgideki tüm meta verileri yönetebilirsiniz. Değişiklikler her belgeye senkronize edilecektir.', - }, - documentMetadata: { - documentInformation: 'Belge Bilgisi', - metadataToolTip: 'Meta veriler, bilgi alma doğruluğunu ve geçerliliğini artıran önemli bir filtre görevi görür. Bu belgede meta verileri burada değiştirebilir ve ekleyebilirsiniz.', - startLabeling: 'Etiketlemeye Başla', - technicalParameters: 'Teknik Parametreler', - }, - metadata: 'Veri Seti', - addMetadata: 'Meta Verileri Ekle', - chooseTime: 'Bir zaman seçin...', - }, - embeddingModelNotAvailable: 'Gömme modeli mevcut değil.', - updated: 'Güncel -leştirilmiş', - createFromPipeline: 'Bilgi İşlem Hattından Oluşturun', - externalKnowledgeBase: 'Harici Bilgi Bankası', - serviceApi: { - card: { - apiReference: 'API Referansı', - title: 'Backend servis api', - apiKey: 'API Anahtarı', - endpoint: 'Hizmet API Uç Noktası', - }, - disabled: 'Engelli', - enabled: 'Hizmette', - title: 'Servis API\'si', - }, - docAllEnabled_one: '{{count}} belgesi etkinleştirildi', - docAllEnabled_other: 'Tüm {{count}} belgeleri etkinleştirildi', - partialEnabled_one: 'Toplam {{count}} belge, {{num}} mevcut', - partialEnabled_other: 'Toplam {{count}} belge, {{num}} mevcut', - cornerLabel: { - unavailable: 'Mevcut değil', - pipeline: 'Boruhattı', - }, - multimodal: 'Multimodal', - imageUploader: { - button: 'Dosya veya klasörü sürükleyip bırakın, veya', - browse: 'Gözat', - tip: '{{supportTypes}} (Her biri Maks. {{batchCount}}, {{size}}MB)', - }, -} - -export default translation diff --git a/web/i18n/tr-TR/education.json b/web/i18n/tr-TR/education.json new file mode 100644 index 0000000000..48261aa0f6 --- /dev/null +++ b/web/i18n/tr-TR/education.json @@ -0,0 +1,74 @@ +{ + "toVerifiedTip": { + "end": "Dify Profesyonel Planı için.", + "front": "Artık Eğitim Doğrulandı statüsüne uygun oldunuz. Lütfen süreci tamamlamak ve bir almak için eğitim bilgilerinizi aşağıya girin.", + "coupon": "özel %100 kupon" + }, + "form": { + "schoolName": { + "placeholder": "Okulunuzun resmi, kısaltılmamış adını girin", + "title": "Okulunuzun Adı" + }, + "schoolRole": { + "option": { + "student": "Öğrenci", + "teacher": "Öğretmen", + "administrator": "Okul Yöneticisi" + }, + "title": "Okul Rolünüz" + }, + "terms": { + "desc": { + "front": "Eğitim Doğrulandı durumunuza ilişkin bilgileriniz ve kullanımınız, bizim", + "termsOfService": "Hizmet Şartları", + "end": "Göndererek:", + "privacyPolicy": "Gizlilik Politikası", + "and": "ve" + }, + "option": { + "age": "En az 18 yaşında olduğumu onaylıyorum.", + "inSchool": "Verilen kurumda kayıtlı veya istihdamda olduğumu onaylıyorum. Dify, kayıt veya istihdam kanıtı talep edebilir. Uygunluğumu yanlış beyan edersem, eğitim durumuma dayalı olarak başlangıçta feragat edilen her türlü ücreti ödemeyi kabul ediyorum." + }, + "title": "Şartlar ve Koşullar" + } + }, + "toVerified": "Eğitim Bilgilerinizi Doğrulayın", + "currentSigned": "ŞU ANDA GİRİŞ YAPILDIĞI KİŞİ", + "submitError": "Form gönderimi başarısız oldu. Lütfen daha sonra tekrar deneyin.", + "rejectTitle": "Dify Eğitim Doğrulamanız Rededildi", + "emailLabel": "Şu anki e-posta adresin", + "submit": "Gönder", + "rejectContent": "Maalesef, Eğitim Doğrulama statüsüne uygun değilsiniz ve bu nedenle bu e-posta adresini kullanıyorsanız Dify Profesyonel Planı için özel %100 kuponu alamazsınız.", + "learn": "Eğitim doğrulamasının nasıl yapılacağını öğrenin", + "successContent": "Hesabınıza Dify Profesyonel planı için %100 indirim kuponu verdik. Kuponun geçerlilik süresi bir yıldır, lütfen bu süre içinde kullanın.", + "successTitle": "Dify Eğitim Onayınız Var", + "notice": { + "expired": { + "summary": { + "line2": "Ancak, artık yeni eğitim indirim kuponları için uygun değilsiniz.", + "line1": "Dify'e hala erişebilir ve kullanabilirsiniz." + }, + "title": "Eğitim durumunuzun süresi dolmuştur" + }, + "isAboutToExpire": { + "summary": "Endişelenmeyin — bu mevcut aboneliğinizi etkilemeyecek, ancak durumunuzu tekrar doğrulamazsanız yenilendiğinde eğitim indirimi almayacaksınız.", + "title": "Eğitim durumunuz {{date}} tarihinde sona erecektir" + }, + "stillInEducation": { + "title": "Hala eğitimde misin?", + "isAboutToExpire": "Şimdi yeniden doğrulayın ve gelecek akademik yıl için yeni bir kupon alın. Bu, hesabınıza kaydedilecek ve bir sonraki yenilemenizde kullanıma hazır olacak.", + "expired": "Şimdi yeniden doğrulayın, böylece yaklaşan akademik yıl için yeni bir kupon alın. Bu kuponu hesabınıza ekleyeceğiz ve sonraki yükseltme için kullanabilirsiniz." + }, + "alreadyGraduated": { + "title": "Zaten mezun oldun mu?", + "expired": "Tam erişim için dilediğiniz zaman ücretli özelliklere yükseltebilirsiniz.", + "isAboutToExpire": "Mevcut aboneliğiniz hâlâ aktif kalacaktır. Bittiğinde, Sandbox planına geçeceksiniz veya isterseniz her zaman tam erişimi geri kazanmak için yükseltebilirsiniz." + }, + "action": { + "reVerify": "Yeniden doğrula", + "upgrade": "Yükseltme", + "dismiss": "Reddet" + }, + "dateFormat": "GG/AA/YYYY" + } +} diff --git a/web/i18n/tr-TR/education.ts b/web/i18n/tr-TR/education.ts deleted file mode 100644 index 3c6204581f..0000000000 --- a/web/i18n/tr-TR/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerifiedTip: { - end: 'Dify Profesyonel Planı için.', - front: 'Artık Eğitim Doğrulandı statüsüne uygun oldunuz. Lütfen süreci tamamlamak ve bir almak için eğitim bilgilerinizi aşağıya girin.', - coupon: 'özel %100 kupon', - }, - form: { - schoolName: { - placeholder: 'Okulunuzun resmi, kısaltılmamış adını girin', - title: 'Okulunuzun Adı', - }, - schoolRole: { - option: { - student: 'Öğrenci', - teacher: 'Öğretmen', - administrator: 'Okul Yöneticisi', - }, - title: 'Okul Rolünüz', - }, - terms: { - desc: { - front: 'Eğitim Doğrulandı durumunuza ilişkin bilgileriniz ve kullanımınız, bizim', - termsOfService: 'Hizmet Şartları', - end: 'Göndererek:', - privacyPolicy: 'Gizlilik Politikası', - and: 've', - }, - option: { - age: 'En az 18 yaşında olduğumu onaylıyorum.', - inSchool: 'Verilen kurumda kayıtlı veya istihdamda olduğumu onaylıyorum. Dify, kayıt veya istihdam kanıtı talep edebilir. Uygunluğumu yanlış beyan edersem, eğitim durumuma dayalı olarak başlangıçta feragat edilen her türlü ücreti ödemeyi kabul ediyorum.', - }, - title: 'Şartlar ve Koşullar', - }, - }, - toVerified: 'Eğitim Bilgilerinizi Doğrulayın', - currentSigned: 'ŞU ANDA GİRİŞ YAPILDIĞI KİŞİ', - submitError: 'Form gönderimi başarısız oldu. Lütfen daha sonra tekrar deneyin.', - rejectTitle: 'Dify Eğitim Doğrulamanız Rededildi', - emailLabel: 'Şu anki e-posta adresin', - submit: 'Gönder', - rejectContent: 'Maalesef, Eğitim Doğrulama statüsüne uygun değilsiniz ve bu nedenle bu e-posta adresini kullanıyorsanız Dify Profesyonel Planı için özel %100 kuponu alamazsınız.', - learn: 'Eğitim doğrulamasının nasıl yapılacağını öğrenin', - successContent: 'Hesabınıza Dify Profesyonel planı için %100 indirim kuponu verdik. Kuponun geçerlilik süresi bir yıldır, lütfen bu süre içinde kullanın.', - successTitle: 'Dify Eğitim Onayınız Var', - notice: { - expired: { - summary: { - line2: 'Ancak, artık yeni eğitim indirim kuponları için uygun değilsiniz.', - line1: 'Dify\'e hala erişebilir ve kullanabilirsiniz.', - }, - title: 'Eğitim durumunuzun süresi dolmuştur', - }, - isAboutToExpire: { - summary: 'Endişelenmeyin — bu mevcut aboneliğinizi etkilemeyecek, ancak durumunuzu tekrar doğrulamazsanız yenilendiğinde eğitim indirimi almayacaksınız.', - title: 'Eğitim durumunuz {{date}} tarihinde sona erecektir', - }, - stillInEducation: { - title: 'Hala eğitimde misin?', - isAboutToExpire: 'Şimdi yeniden doğrulayın ve gelecek akademik yıl için yeni bir kupon alın. Bu, hesabınıza kaydedilecek ve bir sonraki yenilemenizde kullanıma hazır olacak.', - expired: 'Şimdi yeniden doğrulayın, böylece yaklaşan akademik yıl için yeni bir kupon alın. Bu kuponu hesabınıza ekleyeceğiz ve sonraki yükseltme için kullanabilirsiniz.', - }, - alreadyGraduated: { - title: 'Zaten mezun oldun mu?', - expired: 'Tam erişim için dilediğiniz zaman ücretli özelliklere yükseltebilirsiniz.', - isAboutToExpire: 'Mevcut aboneliğiniz hâlâ aktif kalacaktır. Bittiğinde, Sandbox planına geçeceksiniz veya isterseniz her zaman tam erişimi geri kazanmak için yükseltebilirsiniz.', - }, - action: { - reVerify: 'Yeniden doğrula', - upgrade: 'Yükseltme', - dismiss: 'Reddet', - }, - dateFormat: 'GG/AA/YYYY', - }, -} - -export default translation diff --git a/web/i18n/tr-TR/explore.json b/web/i18n/tr-TR/explore.json new file mode 100644 index 0000000000..7c9a042455 --- /dev/null +++ b/web/i18n/tr-TR/explore.json @@ -0,0 +1,42 @@ +{ + "title": "Keşfet", + "sidebar": { + "discovery": "Keşif", + "chat": "Sohbet", + "workspace": "Çalışma Alanı", + "action": { + "pin": "Sabitle", + "unpin": "Sabitlemeyi Kaldır", + "rename": "Yeniden Adlandır", + "delete": "Sil" + }, + "delete": { + "title": "Uygulamayı sil", + "content": "Bu uygulamayı silmek istediğinizden emin misiniz?" + } + }, + "apps": { + "title": "Dify Tarafından Keşfet Uygulamaları", + "description": "Bu şablon uygulamalarını anında kullanın veya şablonlara dayalı kendi uygulamalarınızı özelleştirin.", + "allCategories": "Önerilen" + }, + "appCard": { + "addToWorkspace": "Çalışma Alanına Ekle", + "customize": "Özelleştir" + }, + "appCustomize": { + "title": "{{name}} uygulamasından uygulama oluştur", + "subTitle": "Uygulama simgesi ve ismi", + "nameRequired": "Uygulama ismi gereklidir" + }, + "category": { + "Assistant": "Asistan", + "Writing": "Yazma", + "Translate": "Çeviri", + "Programming": "Programlama", + "HR": "İK", + "Agent": "Aracı", + "Workflow": "İş Akışı", + "Entertainment": "Eğlence" + } +} diff --git a/web/i18n/tr-TR/explore.ts b/web/i18n/tr-TR/explore.ts deleted file mode 100644 index 78b305ee47..0000000000 --- a/web/i18n/tr-TR/explore.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - title: 'Keşfet', - sidebar: { - discovery: 'Keşif', - chat: 'Sohbet', - workspace: 'Çalışma Alanı', - action: { - pin: 'Sabitle', - unpin: 'Sabitlemeyi Kaldır', - rename: 'Yeniden Adlandır', - delete: 'Sil', - }, - delete: { - title: 'Uygulamayı sil', - content: 'Bu uygulamayı silmek istediğinizden emin misiniz?', - }, - }, - apps: { - title: 'Dify Tarafından Keşfet Uygulamaları', - description: 'Bu şablon uygulamalarını anında kullanın veya şablonlara dayalı kendi uygulamalarınızı özelleştirin.', - allCategories: 'Önerilen', - }, - appCard: { - addToWorkspace: 'Çalışma Alanına Ekle', - customize: 'Özelleştir', - }, - appCustomize: { - title: '{{name}} uygulamasından uygulama oluştur', - subTitle: 'Uygulama simgesi ve ismi', - nameRequired: 'Uygulama ismi gereklidir', - }, - category: { - Assistant: 'Asistan', - Writing: 'Yazma', - Translate: 'Çeviri', - Programming: 'Programlama', - HR: 'İK', - Agent: 'Aracı', - Workflow: 'İş Akışı', - Entertainment: 'Eğlence', - }, -} - -export default translation diff --git a/web/i18n/tr-TR/layout.json b/web/i18n/tr-TR/layout.json new file mode 100644 index 0000000000..05b76055f0 --- /dev/null +++ b/web/i18n/tr-TR/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "expandSidebar": "Kenar Çubuğunu Genişlet", + "collapseSidebar": "Kenar Çubuğunu Daralt" + } +} diff --git a/web/i18n/tr-TR/layout.ts b/web/i18n/tr-TR/layout.ts deleted file mode 100644 index 5c1f8e8d52..0000000000 --- a/web/i18n/tr-TR/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - expandSidebar: 'Kenar Çubuğunu Genişlet', - collapseSidebar: 'Kenar Çubuğunu Daralt', - }, -} - -export default translation diff --git a/web/i18n/tr-TR/login.json b/web/i18n/tr-TR/login.json new file mode 100644 index 0000000000..bfe4c2599f --- /dev/null +++ b/web/i18n/tr-TR/login.json @@ -0,0 +1,124 @@ +{ + "pageTitle": "Hey, başlayalım!👋", + "welcome": "Dify'ye hoş geldiniz, devam etmek için lütfen giriş yapın.", + "email": "E-posta adresi", + "emailPlaceholder": "E-postanız", + "password": "Şifre", + "passwordPlaceholder": "Şifreniz", + "name": "Kullanıcı adı", + "namePlaceholder": "Kullanıcı adınız", + "forget": "Şifrenizi mi unuttunuz?", + "signBtn": "Giriş yap", + "installBtn": "Kurulum", + "setAdminAccount": "Yönetici hesabı ayarlama", + "setAdminAccountDesc": "Yönetici hesabı için maksimum ayrıcalıklar, uygulama oluşturma ve LLM sağlayıcılarını yönetme gibi işlemler için kullanılabilir.", + "createAndSignIn": "Oluştur ve giriş yap", + "oneMoreStep": "Bir adım kaldı", + "createSample": "Bu bilgilere dayanarak, sizin için örnek bir uygulama oluşturacağız", + "invitationCode": "Davet Kodu", + "invitationCodePlaceholder": "Davet kodunuz", + "interfaceLanguage": "Arayüz Dili", + "timezone": "Zaman dilimi", + "go": "Dify'ye git", + "sendUsMail": "Tanıtımınızı e-posta ile gönderin, davet talebini işleme alalım.", + "acceptPP": "Gizlilik politikasını okudum ve kabul ediyorum", + "reset": "Şifrenizi sıfırlamak için şu komutu çalıştırın", + "withGitHub": "GitHub ile devam et", + "withGoogle": "Google ile devam et", + "rightTitle": "LLM'nin tam potansiyelini ortaya çıkarın", + "rightDesc": "Görsel olarak çekici, çalışılabilir ve iyileştirilebilir AI uygulamaları oluşturun.", + "tos": "Hizmet Şartları", + "pp": "Gizlilik Politikası", + "tosDesc": "Kaydolarak, Hizmet Şartlarımızı kabul etmiş olursunuz", + "goToInit": "Hesabı başlatmadıysanız, lütfen başlatma sayfasına gidin", + "dontHave": "Sahip değil misiniz?", + "invalidInvitationCode": "Geçersiz davet kodu", + "accountAlreadyInited": "Hesap zaten başlatılmış", + "forgotPassword": "Şifrenizi mi unuttunuz?", + "resetLinkSent": "Sıfırlama bağlantısı gönderildi", + "sendResetLink": "Sıfırlama bağlantısı gönder", + "backToSignIn": "Girişe dön", + "forgotPasswordDesc": "Şifrenizi sıfırlamak için e-posta adresinizi girin. Şifrenizi nasıl sıfırlayacağınıza dair talimatları içeren bir e-posta göndereceğiz.", + "checkEmailForResetLink": "Şifrenizi sıfırlamak için bir bağlantı içeren e-postayı kontrol edin. Birkaç dakika içinde görünmezse, spam klasörünüzü kontrol ettiğinizden emin olun.", + "passwordChanged": "Şimdi giriş yapın", + "changePassword": "Şifre Değiştir", + "changePasswordTip": "Hesabınız için yeni bir şifre girin", + "invalidToken": "Geçersiz veya süresi dolmuş token", + "confirmPassword": "Şifreyi Onayla", + "confirmPasswordPlaceholder": "Yeni şifrenizi onaylayın", + "passwordChangedTip": "Şifreniz başarıyla değiştirildi", + "error": { + "emailEmpty": "E-posta adresi gereklidir", + "emailInValid": "Geçerli bir e-posta adresi girin", + "nameEmpty": "İsim gereklidir", + "passwordEmpty": "Şifre gereklidir", + "passwordLengthInValid": "Şifre en az 8 karakterden oluşmalıdır", + "passwordInvalid": "Şifre harf ve rakamlardan oluşmalı ve uzunluğu 8 karakterden fazla olmalıdır", + "registrationNotAllowed": "Hesap bulunamadı. Kayıt olmak için lütfen sistem yöneticisi ile iletişime geçin.", + "invalidEmailOrPassword": "Geçersiz e-posta veya şifre." + }, + "license": { + "tip": "Dify Community Edition'ı başlatmadan önce GitHub'daki", + "link": "Açık Kaynak Lisansını" + }, + "join": "Katıl", + "joinTipStart": "Sizi", + "joinTipEnd": "takımına davet ediyor", + "invalid": "Bağlantı süresi doldu", + "explore": "Dify'yi Keşfet", + "activatedTipStart": "Katıldınız", + "activatedTipEnd": "takımına", + "activated": "Şimdi giriş yapın", + "adminInitPassword": "Yönetici başlangıç şifresi", + "validate": "Doğrula", + "checkCode": { + "emptyCode": "Kod gereklidir", + "verificationCode": "Doğrulama kodu", + "verify": "Doğrulamak", + "validTime": "Kodun 5 dakika boyunca geçerli olduğunu unutmayın", + "invalidCode": "Geçersiz kod", + "checkYourEmail": "E-postanızı kontrol edin", + "verificationCodePlaceholder": "6 haneli kodu girin", + "useAnotherMethod": "Başka bir yöntem kullanın", + "didNotReceiveCode": "Kodu almadınız mı?", + "resend": "Tekrar Gönder", + "tipsPrefix": "Bir doğrulama kodu gönderiyoruz" + }, + "enterYourName": "Lütfen kullanıcı adınızı giriniz", + "resetPassword": "Şifre Sıfırlama", + "noLoginMethod": "Kimlik doğrulama yöntemi yapılandırılmadı", + "or": "VEYA", + "continueWithCode": "Kodla Devam Et", + "setYourAccount": "Hesabınızı Ayarlayın", + "changePasswordBtn": "Bir şifre belirleyin", + "withSSO": "TOA ile devam etme", + "usePassword": "Şifre Kullan", + "resetPasswordDesc": "Dify'a kaydolmak için kullandığınız e-postayı yazın, size bir şifre sıfırlama e-postası gönderelim.", + "backToLogin": "Girişe geri dön", + "useVerificationCode": "Doğrulama Kodunu Kullan", + "noLoginMethodTip": "Bir kimlik doğrulama yöntemi eklemek için lütfen sistem yöneticisine başvurun.", + "sendVerificationCode": "Doğrulama Kodu Gönder", + "back": "Geri", + "licenseExpiredTip": "Çalışma alanınız için Dify Enterprise lisansının süresi doldu. Dify'ı kullanmaya devam etmek için lütfen yöneticinizle iletişime geçin.", + "licenseLostTip": "Dify lisans sunucusuna bağlanılamadı. Dify'ı kullanmaya devam etmek için lütfen yöneticinizle iletişime geçin.", + "licenseInactiveTip": "Çalışma alanınız için Dify Enterprise lisansı etkin değil. Dify'ı kullanmaya devam etmek için lütfen yöneticinizle iletişime geçin.", + "licenseExpired": "Lisansın Süresi Doldu", + "licenseLost": "Lisans Kaybedildi", + "licenseInactive": "Lisans Etkin Değil", + "webapp": { + "disabled": "Web uygulaması kimlik doğrulaması devre dışı. Lütfen bu özelliği etkinleştirmesi için sistem yöneticisi ile iletişime geçin. Uygulamayı doğrudan kullanmayı deneyebilirsiniz.", + "noLoginMethod": "Web uygulaması için kimlik doğrulama yöntemi yapılandırılmamış", + "noLoginMethodTip": "Lütfen bir kimlik doğrulama yöntemi eklemek için sistem yöneticisi ile iletişime geçin.", + "login": "Giriş" + }, + "signup": { + "noAccount": "Hesabınız yok mu?", + "signIn": "Giriş Yap", + "signUp": "Kaydol", + "createAccount": "Hesabınızı oluşturun", + "verifyMail": "Doğrulama kodu ile devam et", + "haveAccount": "Zaten bir hesabınız var mı?", + "welcome": "👋 Hoş geldiniz! Başlamak için lütfen detayları doldurun." + }, + "pageTitleForE": "Hey, haydi başlayalım!" +} diff --git a/web/i18n/tr-TR/login.ts b/web/i18n/tr-TR/login.ts deleted file mode 100644 index d6ada5f950..0000000000 --- a/web/i18n/tr-TR/login.ts +++ /dev/null @@ -1,126 +0,0 @@ -const translation = { - pageTitle: 'Hey, başlayalım!👋', - welcome: 'Dify\'ye hoş geldiniz, devam etmek için lütfen giriş yapın.', - email: 'E-posta adresi', - emailPlaceholder: 'E-postanız', - password: 'Şifre', - passwordPlaceholder: 'Şifreniz', - name: 'Kullanıcı adı', - namePlaceholder: 'Kullanıcı adınız', - forget: 'Şifrenizi mi unuttunuz?', - signBtn: 'Giriş yap', - installBtn: 'Kurulum', - setAdminAccount: 'Yönetici hesabı ayarlama', - setAdminAccountDesc: 'Yönetici hesabı için maksimum ayrıcalıklar, uygulama oluşturma ve LLM sağlayıcılarını yönetme gibi işlemler için kullanılabilir.', - createAndSignIn: 'Oluştur ve giriş yap', - oneMoreStep: 'Bir adım kaldı', - createSample: 'Bu bilgilere dayanarak, sizin için örnek bir uygulama oluşturacağız', - invitationCode: 'Davet Kodu', - invitationCodePlaceholder: 'Davet kodunuz', - interfaceLanguage: 'Arayüz Dili', - timezone: 'Zaman dilimi', - go: 'Dify\'ye git', - sendUsMail: 'Tanıtımınızı e-posta ile gönderin, davet talebini işleme alalım.', - acceptPP: 'Gizlilik politikasını okudum ve kabul ediyorum', - reset: 'Şifrenizi sıfırlamak için şu komutu çalıştırın', - withGitHub: 'GitHub ile devam et', - withGoogle: 'Google ile devam et', - rightTitle: 'LLM\'nin tam potansiyelini ortaya çıkarın', - rightDesc: 'Görsel olarak çekici, çalışılabilir ve iyileştirilebilir AI uygulamaları oluşturun.', - tos: 'Hizmet Şartları', - pp: 'Gizlilik Politikası', - tosDesc: 'Kaydolarak, Hizmet Şartlarımızı kabul etmiş olursunuz', - goToInit: 'Hesabı başlatmadıysanız, lütfen başlatma sayfasına gidin', - dontHave: 'Sahip değil misiniz?', - invalidInvitationCode: 'Geçersiz davet kodu', - accountAlreadyInited: 'Hesap zaten başlatılmış', - forgotPassword: 'Şifrenizi mi unuttunuz?', - resetLinkSent: 'Sıfırlama bağlantısı gönderildi', - sendResetLink: 'Sıfırlama bağlantısı gönder', - backToSignIn: 'Girişe dön', - forgotPasswordDesc: 'Şifrenizi sıfırlamak için e-posta adresinizi girin. Şifrenizi nasıl sıfırlayacağınıza dair talimatları içeren bir e-posta göndereceğiz.', - checkEmailForResetLink: 'Şifrenizi sıfırlamak için bir bağlantı içeren e-postayı kontrol edin. Birkaç dakika içinde görünmezse, spam klasörünüzü kontrol ettiğinizden emin olun.', - passwordChanged: 'Şimdi giriş yapın', - changePassword: 'Şifre Değiştir', - changePasswordTip: 'Hesabınız için yeni bir şifre girin', - invalidToken: 'Geçersiz veya süresi dolmuş token', - confirmPassword: 'Şifreyi Onayla', - confirmPasswordPlaceholder: 'Yeni şifrenizi onaylayın', - passwordChangedTip: 'Şifreniz başarıyla değiştirildi', - error: { - emailEmpty: 'E-posta adresi gereklidir', - emailInValid: 'Geçerli bir e-posta adresi girin', - nameEmpty: 'İsim gereklidir', - passwordEmpty: 'Şifre gereklidir', - passwordLengthInValid: 'Şifre en az 8 karakterden oluşmalıdır', - passwordInvalid: 'Şifre harf ve rakamlardan oluşmalı ve uzunluğu 8 karakterden fazla olmalıdır', - registrationNotAllowed: 'Hesap bulunamadı. Kayıt olmak için lütfen sistem yöneticisi ile iletişime geçin.', - invalidEmailOrPassword: 'Geçersiz e-posta veya şifre.', - }, - license: { - tip: 'Dify Community Edition\'ı başlatmadan önce GitHub\'daki', - link: 'Açık Kaynak Lisansını', - }, - join: 'Katıl', - joinTipStart: 'Sizi', - joinTipEnd: 'takımına davet ediyor', - invalid: 'Bağlantı süresi doldu', - explore: 'Dify\'yi Keşfet', - activatedTipStart: 'Katıldınız', - activatedTipEnd: 'takımına', - activated: 'Şimdi giriş yapın', - adminInitPassword: 'Yönetici başlangıç şifresi', - validate: 'Doğrula', - checkCode: { - emptyCode: 'Kod gereklidir', - verificationCode: 'Doğrulama kodu', - verify: 'Doğrulamak', - validTime: 'Kodun 5 dakika boyunca geçerli olduğunu unutmayın', - invalidCode: 'Geçersiz kod', - checkYourEmail: 'E-postanızı kontrol edin', - verificationCodePlaceholder: '6 haneli kodu girin', - useAnotherMethod: 'Başka bir yöntem kullanın', - didNotReceiveCode: 'Kodu almadınız mı?', - resend: 'Tekrar Gönder', - tipsPrefix: 'Bir doğrulama kodu gönderiyoruz', - }, - enterYourName: 'Lütfen kullanıcı adınızı giriniz', - resetPassword: 'Şifre Sıfırlama', - noLoginMethod: 'Kimlik doğrulama yöntemi yapılandırılmadı', - or: 'VEYA', - continueWithCode: 'Kodla Devam Et', - setYourAccount: 'Hesabınızı Ayarlayın', - changePasswordBtn: 'Bir şifre belirleyin', - withSSO: 'TOA ile devam etme', - usePassword: 'Şifre Kullan', - resetPasswordDesc: 'Dify\'a kaydolmak için kullandığınız e-postayı yazın, size bir şifre sıfırlama e-postası gönderelim.', - backToLogin: 'Girişe geri dön', - useVerificationCode: 'Doğrulama Kodunu Kullan', - noLoginMethodTip: 'Bir kimlik doğrulama yöntemi eklemek için lütfen sistem yöneticisine başvurun.', - sendVerificationCode: 'Doğrulama Kodu Gönder', - back: 'Geri', - licenseExpiredTip: 'Çalışma alanınız için Dify Enterprise lisansının süresi doldu. Dify\'ı kullanmaya devam etmek için lütfen yöneticinizle iletişime geçin.', - licenseLostTip: 'Dify lisans sunucusuna bağlanılamadı. Dify\'ı kullanmaya devam etmek için lütfen yöneticinizle iletişime geçin.', - licenseInactiveTip: 'Çalışma alanınız için Dify Enterprise lisansı etkin değil. Dify\'ı kullanmaya devam etmek için lütfen yöneticinizle iletişime geçin.', - licenseExpired: 'Lisansın Süresi Doldu', - licenseLost: 'Lisans Kaybedildi', - licenseInactive: 'Lisans Etkin Değil', - webapp: { - disabled: 'Web uygulaması kimlik doğrulaması devre dışı. Lütfen bu özelliği etkinleştirmesi için sistem yöneticisi ile iletişime geçin. Uygulamayı doğrudan kullanmayı deneyebilirsiniz.', - noLoginMethod: 'Web uygulaması için kimlik doğrulama yöntemi yapılandırılmamış', - noLoginMethodTip: 'Lütfen bir kimlik doğrulama yöntemi eklemek için sistem yöneticisi ile iletişime geçin.', - login: 'Giriş', - }, - signup: { - noAccount: 'Hesabınız yok mu?', - signIn: 'Giriş Yap', - signUp: 'Kaydol', - createAccount: 'Hesabınızı oluşturun', - verifyMail: 'Doğrulama kodu ile devam et', - haveAccount: 'Zaten bir hesabınız var mı?', - welcome: '👋 Hoş geldiniz! Başlamak için lütfen detayları doldurun.', - }, - pageTitleForE: 'Hey, haydi başlayalım!', -} - -export default translation diff --git a/web/i18n/tr-TR/oauth.json b/web/i18n/tr-TR/oauth.json new file mode 100644 index 0000000000..31657c44a3 --- /dev/null +++ b/web/i18n/tr-TR/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "notLoggedIn": "Bu uygulama Dify Cloud hesabınıza erişmek istiyor", + "common": "Gizliliğinize saygı gösteriyoruz ve bu bilgiyi yalnızca geliştirici araçlarımızla deneyiminizi geliştirmek için kullanacağız.", + "loggedIn": "Bu uygulama Dify Cloud hesabınızdaki aşağıdaki bilgilere erişmek istiyor.", + "needLogin": "Lütfen yetkilendirmek için giriş yapın" + }, + "scopes": { + "timezone": "Saat Dilimi", + "name": "İsim", + "email": "E-posta", + "avatar": "Avatar", + "languagePreference": "Dil Tercihi" + }, + "error": { + "authorizeFailed": "Yetkilendirme başarısız", + "authAppInfoFetchFailed": "Yetkilendirme için uygulama bilgisi alınamadı", + "invalidParams": "Geçersiz parametreler" + }, + "continue": "Devam et", + "connect": "Bağlan", + "unknownApp": "Bilinmeyen Uygulama", + "login": "Giriş", + "switchAccount": "Hesabı Değiştir" +} diff --git a/web/i18n/tr-TR/oauth.ts b/web/i18n/tr-TR/oauth.ts deleted file mode 100644 index 3f71cdf483..0000000000 --- a/web/i18n/tr-TR/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - notLoggedIn: 'Bu uygulama Dify Cloud hesabınıza erişmek istiyor', - common: 'Gizliliğinize saygı gösteriyoruz ve bu bilgiyi yalnızca geliştirici araçlarımızla deneyiminizi geliştirmek için kullanacağız.', - loggedIn: 'Bu uygulama Dify Cloud hesabınızdaki aşağıdaki bilgilere erişmek istiyor.', - needLogin: 'Lütfen yetkilendirmek için giriş yapın', - }, - scopes: { - timezone: 'Saat Dilimi', - name: 'İsim', - email: 'E-posta', - avatar: 'Avatar', - languagePreference: 'Dil Tercihi', - }, - error: { - authorizeFailed: 'Yetkilendirme başarısız', - authAppInfoFetchFailed: 'Yetkilendirme için uygulama bilgisi alınamadı', - invalidParams: 'Geçersiz parametreler', - }, - continue: 'Devam et', - connect: 'Bağlan', - unknownApp: 'Bilinmeyen Uygulama', - login: 'Giriş', - switchAccount: 'Hesabı Değiştir', -} - -export default translation diff --git a/web/i18n/tr-TR/pipeline.json b/web/i18n/tr-TR/pipeline.json new file mode 100644 index 0000000000..336461b85c --- /dev/null +++ b/web/i18n/tr-TR/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "publishAsPipeline": { + "namePlaceholder": "Lütfen bu Bilgi İşlem Hattının adını girin. (Gerekli)", + "descriptionPlaceholder": "Lütfen bu Bilgi İşlem Hattının açıklamasını girin. (İsteğe bağlı)", + "name": "İşlem hattı adı & simgesi", + "description": "Bilgi açıklaması" + }, + "processing": "Işleme", + "preparingDataSource": "Veri Kaynağını Hazırlama", + "reRun": "Yeniden çalıştır", + "testRun": "Test Çalıştırması", + "confirmPublish": "Yayınlamayı Onayla", + "goToAddDocuments": "Belge eklemeye git", + "confirmPublishContent": "Bilgi işlem hattı başarıyla yayımlandıktan sonra, bu bilgi bankasının öbek yapısı değiştirilemez. Yayınlamak istediğinizden emin misiniz?", + "publishAs": "Bilgi İşlem Hattı Olarak Yayımlama" + }, + "inputField": { + "manage": "Yönetmek", + "create": "Kullanıcı giriş alanı oluştur" + }, + "publishToast": { + "title": "Bu işlem hattı henüz yayımlanmadı", + "desc": "İşlem hattı yayımlanmadığında, bilgi bankası düğümündeki öbek yapısını değiştirebilirsiniz ve işlem hattı düzenlemesi ve değişiklikleri otomatik olarak taslak olarak kaydedilir." + }, + "result": { + "resultPreview": { + "loading": "Işleme... Lütfen bekleyin", + "viewDetails": "Ayrıntıları görüntüleme", + "error": "Yürütme sırasında hata oluştu", + "footerTip": "Test çalıştırma modunda, {{count}} parçaya kadar önizleme yapabilirsiniz" + } + }, + "ragToolSuggestions": { + "title": "RAG için Öneriler", + "noRecommendationPlugins": "Önerilen eklenti yok, daha fazlasını Marketplace içinde bulabilirsiniz" + } +} diff --git a/web/i18n/tr-TR/pipeline.ts b/web/i18n/tr-TR/pipeline.ts deleted file mode 100644 index 1b0c5e5238..0000000000 --- a/web/i18n/tr-TR/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - publishAsPipeline: { - namePlaceholder: 'Lütfen bu Bilgi İşlem Hattının adını girin. (Gerekli)', - descriptionPlaceholder: 'Lütfen bu Bilgi İşlem Hattının açıklamasını girin. (İsteğe bağlı)', - name: 'İşlem hattı adı & simgesi', - description: 'Bilgi açıklaması', - }, - processing: 'Işleme', - preparingDataSource: 'Veri Kaynağını Hazırlama', - reRun: 'Yeniden çalıştır', - testRun: 'Test Çalıştırması', - confirmPublish: 'Yayınlamayı Onayla', - goToAddDocuments: 'Belge eklemeye git', - confirmPublishContent: 'Bilgi işlem hattı başarıyla yayımlandıktan sonra, bu bilgi bankasının öbek yapısı değiştirilemez. Yayınlamak istediğinizden emin misiniz?', - publishAs: 'Bilgi İşlem Hattı Olarak Yayımlama', - }, - inputField: { - manage: 'Yönetmek', - create: 'Kullanıcı giriş alanı oluştur', - }, - publishToast: { - title: 'Bu işlem hattı henüz yayımlanmadı', - desc: 'İşlem hattı yayımlanmadığında, bilgi bankası düğümündeki öbek yapısını değiştirebilirsiniz ve işlem hattı düzenlemesi ve değişiklikleri otomatik olarak taslak olarak kaydedilir.', - }, - result: { - resultPreview: { - loading: 'Işleme... Lütfen bekleyin', - viewDetails: 'Ayrıntıları görüntüleme', - error: 'Yürütme sırasında hata oluştu', - footerTip: 'Test çalıştırma modunda, {{count}} parçaya kadar önizleme yapabilirsiniz', - }, - }, - ragToolSuggestions: { - title: 'RAG için Öneriler', - noRecommendationPlugins: 'Önerilen eklenti yok, daha fazlasını Marketplace içinde bulabilirsiniz', - }, -} - -export default translation diff --git a/web/i18n/tr-TR/plugin-tags.json b/web/i18n/tr-TR/plugin-tags.json new file mode 100644 index 0000000000..ef2652ade2 --- /dev/null +++ b/web/i18n/tr-TR/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "tags": { + "finance": "Maliye", + "utilities": "Yardımcı program", + "design": "Tasarım", + "image": "Resim", + "videos": "Video", + "other": "Diğer", + "education": "Eğitim", + "medical": "Tıbbi", + "social": "Sosyal", + "agent": "Aracı", + "business": "İş", + "weather": "Hava", + "travel": "Seyahat", + "productivity": "Verimli -lik", + "news": "Haberler", + "entertainment": "Eğlence", + "search": "Aramak", + "rag": "PAÇAVRA" + }, + "allTags": "Tüm Etiketler", + "searchTags": "Arama Etiketleri" +} diff --git a/web/i18n/tr-TR/plugin-tags.ts b/web/i18n/tr-TR/plugin-tags.ts deleted file mode 100644 index 8b5245bf30..0000000000 --- a/web/i18n/tr-TR/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - tags: { - finance: 'Maliye', - utilities: 'Yardımcı program', - design: 'Tasarım', - image: 'Resim', - videos: 'Video', - other: 'Diğer', - education: 'Eğitim', - medical: 'Tıbbi', - social: 'Sosyal', - agent: 'Aracı', - business: 'İş', - weather: 'Hava', - travel: 'Seyahat', - productivity: 'Verimli -lik', - news: 'Haberler', - entertainment: 'Eğlence', - search: 'Aramak', - rag: 'PAÇAVRA', - }, - allTags: 'Tüm Etiketler', - searchTags: 'Arama Etiketleri', -} - -export default translation diff --git a/web/i18n/tr-TR/plugin-trigger.json b/web/i18n/tr-TR/plugin-trigger.json new file mode 100644 index 0000000000..67874fc3ad --- /dev/null +++ b/web/i18n/tr-TR/plugin-trigger.json @@ -0,0 +1,184 @@ +{ + "subscription": { + "title": "Abonelikler", + "listNum": "{{num}} abonelikler", + "empty": { + "title": "Abonelik yok", + "button": "Yeni abonelik" + }, + "createButton": { + "oauth": "OAuth ile yeni abonelik", + "apiKey": "API Anahtarı ile yeni abonelik", + "manual": "Yeni bir abonelik oluşturmak için URL'yi yapıştırın" + }, + "createSuccess": "Abonelik başarıyla oluşturuldu", + "createFailed": "Abonelik oluşturulamadı", + "maxCount": "Maksimum {{num}} abonelik", + "selectPlaceholder": "Abonelik seç", + "noSubscriptionSelected": "Hiçbir abonelik seçilmedi", + "subscriptionRemoved": "Abonelik kaldırıldı", + "list": { + "title": "Abonelikler", + "addButton": "Ekle", + "tip": "Abonelik aracılığıyla etkinlikleri alın", + "item": { + "enabled": "Etkin", + "disabled": "Devre Dışı", + "credentialType": { + "api_key": "API Anahtarı", + "oauth2": "OAuth", + "unauthorized": "Kılavuz" + }, + "actions": { + "delete": "Sil", + "deleteConfirm": { + "title": "{{name}} silinsin mi?", + "success": "Abonelik {{name}} başarıyla silindi", + "error": "Abonelik {{name}} silinemedi", + "content": "Bir kez silindiğinde, bu abonelik kurtarılamaz. Lütfen onaylayın.", + "contentWithApps": "Mevcut abonelik {{count}} uygulama tarafından referans gösterilmektedir. Bunu silmek, yapılandırılmış uygulamaların abonelik olaylarını almamasına neden olacaktır.", + "confirm": "Silmeyi Onayla", + "cancel": "İptal", + "confirmInputWarning": "Onaylamak için lütfen doğru adı girin.", + "confirmInputPlaceholder": "\"{{name}}\" yazın ve onaylayın.", + "confirmInputTip": "Lütfen onaylamak için “{{name}}” girin." + } + }, + "status": { + "active": "Aktif", + "inactive": "Etkin değil" + }, + "usedByNum": "{{num}} iş akışı tarafından kullanılıyor", + "noUsed": "Hiç işlem akışı kullanılmadı" + } + }, + "addType": { + "title": "Abonelik ekle", + "description": "Tetikleyici aboneliğinizi nasıl oluşturmak istediğinizi seçin", + "options": { + "apikey": { + "title": "API Anahtarı ile Oluştur", + "description": "API kimlik bilgilerini kullanarak otomatik olarak abonelik oluştur" + }, + "oauth": { + "title": "OAuth ile oluştur", + "description": "Abonelik oluşturmak için üçüncü taraf platformla yetkilendirme yap", + "clientSettings": "OAuth İstemci Ayarları", + "clientTitle": "OAuth İstemcisi", + "default": "Varsayılan", + "custom": "Özel" + }, + "manual": { + "title": "Manuel Kurulum", + "description": "Yeni bir abonelik oluşturmak için URL'yi yapıştırın", + "tip": "URL'yi üçüncü taraf platformda manuel olarak yapılandır" + } + } + } + }, + "modal": { + "steps": { + "verify": "Doğrula", + "configuration": "Yapılandırma" + }, + "common": { + "cancel": "İptal", + "back": "Geri", + "next": "Sonraki", + "create": "Oluştur", + "verify": "Doğrula", + "authorize": "Yetkilendir", + "creating": "Oluşturuluyor...", + "verifying": "Doğrulanıyor...", + "authorizing": "Yetkilendiriliyor..." + }, + "oauthRedirectInfo": "Bu araç sağlayıcı için sistem istemci gizli anahtarları bulunamadığından, yönlendirme_uri için manuel olarak ayarlamanız gerekmektedir, lütfen kullanın", + "apiKey": { + "title": "API Anahtarı ile Oluştur", + "verify": { + "title": "Kimlik Bilgilerini Doğrula", + "description": "Erişimi doğrulamak için lütfen API kimlik bilgilerinizi sağlayın", + "error": "Kimlik doğrulama başarısız oldu. Lütfen API anahtarınızı kontrol edin.", + "success": "Kimlik bilgileri başarıyla doğrulandı" + }, + "configuration": { + "title": "Aboneliği Yapılandır", + "description": "Abonelik parametrelerinizi ayarlayın" + } + }, + "oauth": { + "title": "OAuth ile oluştur", + "authorization": { + "title": "OAuth Yetkilendirmesi", + "description": "Dify'nin hesabınıza erişmesine izin verin", + "redirectUrl": "Yönlendirme URL'si", + "redirectUrlHelp": "Bu URL'yi OAuth uygulama yapılandırmanızda kullanın", + "authorizeButton": "{{provider}} ile yetkilendir", + "waitingAuth": "Yetkilendirme bekleniyor...", + "authSuccess": "Yetkilendirme başarılı", + "authFailed": "OAuth yetkilendirme bilgileri alınamadı", + "waitingJump": "Yetkili, atlama için bekliyor" + }, + "configuration": { + "title": "Aboneliği Yapılandır", + "description": "Yetkilendirmeden sonra abonelik parametrelerinizi ayarlayın", + "success": "OAuth yapılandırması başarılı", + "failed": "OAuth yapılandırması başarısız oldu" + }, + "remove": { + "success": "OAuth kaldırma başarılı", + "failed": "OAuth kaldırma başarısız oldu" + }, + "save": { + "success": "OAuth yapılandırması başarıyla kaydedildi" + } + }, + "manual": { + "title": "Manuel Kurulum", + "description": "Webhook aboneliğinizi manuel olarak yapılandırın", + "logs": { + "title": "İstek Kayıtları", + "request": "Talep", + "loading": "{{pluginName}}'dan istek bekleniyor..." + } + }, + "form": { + "subscriptionName": { + "label": "Abonelik Adı", + "placeholder": "Abonelik adını girin", + "required": "Abonelik adı gereklidir" + }, + "callbackUrl": { + "label": "Geri Arama URL'si", + "description": "Bu URL webhook olaylarını alacaktır", + "tooltip": "Tetikleyici sağlayıcısından geri arama istekleri alabilecek genel erişime açık bir uç nokta sağlayın.", + "placeholder": "Oluşturuluyor...", + "privateAddressWarning": "Bu URL dahili bir adres gibi görünüyor ve bu, webhook isteklerinin başarısız olmasına neden olabilir. TRIGGER_URL'i halka açık bir adresle değiştirebilirsiniz." + } + }, + "errors": { + "createFailed": "Abonelik oluşturulamadı", + "verifyFailed": "Kimlik bilgileri doğrulanamadı", + "authFailed": "Yetkilendirme başarısız", + "networkError": "Ağ hatası, lütfen tekrar deneyin" + } + }, + "events": { + "title": "Mevcut Etkinlikler", + "description": "Bu tetikleyici eklentisinin abone olabileceği etkinlikler", + "empty": "Hiç etkinlik yok", + "event": "Etkinlik", + "events": "Etkinlikler", + "actionNum": "{{num}} {{event}} DAHİL", + "item": { + "parameters": "{{count}} parametreleri", + "noParameters": "Parametre yok" + }, + "output": "Çıktı" + }, + "node": { + "status": { + "warning": "Bağlantıyı kes" + } + } +} diff --git a/web/i18n/tr-TR/plugin-trigger.ts b/web/i18n/tr-TR/plugin-trigger.ts deleted file mode 100644 index 46995edd7f..0000000000 --- a/web/i18n/tr-TR/plugin-trigger.ts +++ /dev/null @@ -1,186 +0,0 @@ -const translation = { - subscription: { - title: 'Abonelikler', - listNum: '{{num}} abonelikler', - empty: { - title: 'Abonelik yok', - button: 'Yeni abonelik', - }, - createButton: { - oauth: 'OAuth ile yeni abonelik', - apiKey: 'API Anahtarı ile yeni abonelik', - manual: 'Yeni bir abonelik oluşturmak için URL\'yi yapıştırın', - }, - createSuccess: 'Abonelik başarıyla oluşturuldu', - createFailed: 'Abonelik oluşturulamadı', - maxCount: 'Maksimum {{num}} abonelik', - selectPlaceholder: 'Abonelik seç', - noSubscriptionSelected: 'Hiçbir abonelik seçilmedi', - subscriptionRemoved: 'Abonelik kaldırıldı', - list: { - title: 'Abonelikler', - addButton: 'Ekle', - tip: 'Abonelik aracılığıyla etkinlikleri alın', - item: { - enabled: 'Etkin', - disabled: 'Devre Dışı', - credentialType: { - api_key: 'API Anahtarı', - oauth2: 'OAuth', - unauthorized: 'Kılavuz', - }, - actions: { - delete: 'Sil', - deleteConfirm: { - title: '{{name}} silinsin mi?', - success: 'Abonelik {{name}} başarıyla silindi', - error: 'Abonelik {{name}} silinemedi', - content: 'Bir kez silindiğinde, bu abonelik kurtarılamaz. Lütfen onaylayın.', - contentWithApps: 'Mevcut abonelik {{count}} uygulama tarafından referans gösterilmektedir. Bunu silmek, yapılandırılmış uygulamaların abonelik olaylarını almamasına neden olacaktır.', - confirm: 'Silmeyi Onayla', - cancel: 'İptal', - confirmInputWarning: 'Onaylamak için lütfen doğru adı girin.', - confirmInputPlaceholder: '"{{name}}" yazın ve onaylayın.', - confirmInputTip: 'Lütfen onaylamak için “{{name}}” girin.', - }, - }, - status: { - active: 'Aktif', - inactive: 'Etkin değil', - }, - usedByNum: '{{num}} iş akışı tarafından kullanılıyor', - noUsed: 'Hiç işlem akışı kullanılmadı', - }, - }, - addType: { - title: 'Abonelik ekle', - description: 'Tetikleyici aboneliğinizi nasıl oluşturmak istediğinizi seçin', - options: { - apikey: { - title: 'API Anahtarı ile Oluştur', - description: 'API kimlik bilgilerini kullanarak otomatik olarak abonelik oluştur', - }, - oauth: { - title: 'OAuth ile oluştur', - description: 'Abonelik oluşturmak için üçüncü taraf platformla yetkilendirme yap', - clientSettings: 'OAuth İstemci Ayarları', - clientTitle: 'OAuth İstemcisi', - default: 'Varsayılan', - custom: 'Özel', - }, - manual: { - title: 'Manuel Kurulum', - description: 'Yeni bir abonelik oluşturmak için URL\'yi yapıştırın', - tip: 'URL\'yi üçüncü taraf platformda manuel olarak yapılandır', - }, - }, - }, - }, - modal: { - steps: { - verify: 'Doğrula', - configuration: 'Yapılandırma', - }, - common: { - cancel: 'İptal', - back: 'Geri', - next: 'Sonraki', - create: 'Oluştur', - verify: 'Doğrula', - authorize: 'Yetkilendir', - creating: 'Oluşturuluyor...', - verifying: 'Doğrulanıyor...', - authorizing: 'Yetkilendiriliyor...', - }, - oauthRedirectInfo: 'Bu araç sağlayıcı için sistem istemci gizli anahtarları bulunamadığından, yönlendirme_uri için manuel olarak ayarlamanız gerekmektedir, lütfen kullanın', - apiKey: { - title: 'API Anahtarı ile Oluştur', - verify: { - title: 'Kimlik Bilgilerini Doğrula', - description: 'Erişimi doğrulamak için lütfen API kimlik bilgilerinizi sağlayın', - error: 'Kimlik doğrulama başarısız oldu. Lütfen API anahtarınızı kontrol edin.', - success: 'Kimlik bilgileri başarıyla doğrulandı', - }, - configuration: { - title: 'Aboneliği Yapılandır', - description: 'Abonelik parametrelerinizi ayarlayın', - }, - }, - oauth: { - title: 'OAuth ile oluştur', - authorization: { - title: 'OAuth Yetkilendirmesi', - description: 'Dify\'nin hesabınıza erişmesine izin verin', - redirectUrl: 'Yönlendirme URL\'si', - redirectUrlHelp: 'Bu URL\'yi OAuth uygulama yapılandırmanızda kullanın', - authorizeButton: '{{provider}} ile yetkilendir', - waitingAuth: 'Yetkilendirme bekleniyor...', - authSuccess: 'Yetkilendirme başarılı', - authFailed: 'OAuth yetkilendirme bilgileri alınamadı', - waitingJump: 'Yetkili, atlama için bekliyor', - }, - configuration: { - title: 'Aboneliği Yapılandır', - description: 'Yetkilendirmeden sonra abonelik parametrelerinizi ayarlayın', - success: 'OAuth yapılandırması başarılı', - failed: 'OAuth yapılandırması başarısız oldu', - }, - remove: { - success: 'OAuth kaldırma başarılı', - failed: 'OAuth kaldırma başarısız oldu', - }, - save: { - success: 'OAuth yapılandırması başarıyla kaydedildi', - }, - }, - manual: { - title: 'Manuel Kurulum', - description: 'Webhook aboneliğinizi manuel olarak yapılandırın', - logs: { - title: 'İstek Kayıtları', - request: 'Talep', - loading: '{{pluginName}}\'dan istek bekleniyor...', - }, - }, - form: { - subscriptionName: { - label: 'Abonelik Adı', - placeholder: 'Abonelik adını girin', - required: 'Abonelik adı gereklidir', - }, - callbackUrl: { - label: 'Geri Arama URL\'si', - description: 'Bu URL webhook olaylarını alacaktır', - tooltip: 'Tetikleyici sağlayıcısından geri arama istekleri alabilecek genel erişime açık bir uç nokta sağlayın.', - placeholder: 'Oluşturuluyor...', - privateAddressWarning: 'Bu URL dahili bir adres gibi görünüyor ve bu, webhook isteklerinin başarısız olmasına neden olabilir. TRIGGER_URL\'i halka açık bir adresle değiştirebilirsiniz.', - }, - }, - errors: { - createFailed: 'Abonelik oluşturulamadı', - verifyFailed: 'Kimlik bilgileri doğrulanamadı', - authFailed: 'Yetkilendirme başarısız', - networkError: 'Ağ hatası, lütfen tekrar deneyin', - }, - }, - events: { - title: 'Mevcut Etkinlikler', - description: 'Bu tetikleyici eklentisinin abone olabileceği etkinlikler', - empty: 'Hiç etkinlik yok', - event: 'Etkinlik', - events: 'Etkinlikler', - actionNum: '{{num}} {{event}} DAHİL', - item: { - parameters: '{{count}} parametreleri', - noParameters: 'Parametre yok', - }, - output: 'Çıktı', - }, - node: { - status: { - warning: 'Bağlantıyı kes', - }, - }, -} - -export default translation diff --git a/web/i18n/tr-TR/plugin.json b/web/i18n/tr-TR/plugin.json new file mode 100644 index 0000000000..61f64360c5 --- /dev/null +++ b/web/i18n/tr-TR/plugin.json @@ -0,0 +1,323 @@ +{ + "category": { + "models": "Model", + "all": "Tüm", + "bundles": "Paketler", + "agents": "Ajan Stratejileri", + "tools": "Araçları", + "extensions": "Uzantı -ları", + "datasources": "Veri Kaynakları", + "triggers": "Tetikleyiciler" + }, + "categorySingle": { + "tool": "Alet", + "bundle": "Bohça", + "extension": "Uzantı", + "agent": "Temsilci Stratejisi", + "model": "Model", + "datasource": "Veri Kaynağı", + "trigger": "Tetik" + }, + "list": { + "source": { + "github": "GitHub'dan yükleyin", + "marketplace": "Marketten Yükleme", + "local": "Yerel Paket Dosyasından Yükle" + }, + "noInstalled": "Yüklü eklenti yok", + "notFound": "Eklenti bulunamadı" + }, + "source": { + "github": "GitHub (İngilizce)", + "marketplace": "Pazar", + "local": "Yerel Paket Dosyası" + }, + "detailPanel": { + "categoryTip": { + "marketplace": "Marketplace'ten yüklendi", + "local": "Yerel Eklenti", + "debugging": "Hata Ayıklama Eklentisi", + "github": "Github'dan yüklendi" + }, + "operation": { + "install": "Yüklemek", + "detail": "Şey", + "checkUpdate": "Güncellemeyi Kontrol Et", + "remove": "Kaldırmak", + "info": "Eklenti Bilgileri", + "viewDetail": "ayrıntılara bakın", + "update": "Güncelleştirmek", + "back": "Geri" + }, + "toolSelector": { + "uninstalledContent": "Bu eklenti yerel/GitHub deposundan yüklenir. Lütfen kurulumdan sonra kullanın.", + "uninstalledLink": "Eklentilerde Yönet", + "descriptionLabel": "Araç açıklaması", + "auto": "Otomatik", + "settings": "KULLANICI AYARLARI", + "empty": "Araç eklemek için '+' düğmesini tıklayın. Birden fazla araç ekleyebilirsiniz.", + "unsupportedContent": "Yüklü eklenti sürümü bu eylemi sağlamaz.", + "paramsTip1": "LLM çıkarım parametrelerini kontrol eder.", + "descriptionPlaceholder": "Aletin amacının kısa açıklaması, örneğin belirli bir konum için sıcaklığı elde edin.", + "toolLabel": "Alet", + "placeholder": "Bir araç seçin...", + "title": "Araç ekle", + "uninstalledTitle": "Araç yüklü değil", + "unsupportedContent2": "Sürümü değiştirmek için tıklayın.", + "params": "AKIL YÜRÜTME YAPILANDIRMASI", + "paramsTip2": "'Otomatik' kapalıyken, varsayılan değer kullanılır.", + "unsupportedTitle": "Desteklenmeyen Eylem", + "toolSetting": "Araç Ayarları", + "unsupportedMCPTool": "Şu anda seçili olan ajan stratejisi eklenti sürümü MCP araçlarını desteklemiyor." + }, + "strategyNum": "{{sayı}} {{strateji}} DAHİL", + "switchVersion": "Sürümü Değiştir", + "endpointDisableContent": "{{name}} öğesini devre dışı bırakmak ister misiniz?", + "endpointsDocLink": "Belgeyi görüntüleyin", + "endpointsEmpty": "Uç nokta eklemek için '+' düğmesini tıklayın", + "endpoints": "Bitiş noktası", + "disabled": "Sakat", + "endpointModalTitle": "Uç noktayı ayarlama", + "configureModel": "Modeli yapılandırma", + "actionNum": "{{sayı}} {{eylem}} DAHİL", + "configureTool": "Aracı yapılandır", + "endpointsTip": "Bu eklenti, uç noktalar aracılığıyla belirli işlevler sağlar ve geçerli çalışma alanı için birden çok uç nokta kümesi yapılandırabilirsiniz.", + "configureApp": "Uygulamayı Yapılandır", + "endpointDeleteTip": "Uç Noktayı Kaldır", + "endpointDeleteContent": "{{name}} öğesini kaldırmak ister misiniz?", + "endpointModalDesc": "Yapılandırıldıktan sonra, eklenti tarafından API uç noktaları aracılığıyla sağlanan özellikler kullanılabilir.", + "modelNum": "{{sayı}} DAHİL OLAN MODELLER", + "endpointDisableTip": "Uç Noktayı Devre Dışı Bırak", + "serviceOk": "Servis Tamam", + "deprecation": { + "reason": { + "noMaintainer": "bakımcı yok", + "ownershipTransferred": "mülkiyet devredildi", + "businessAdjustments": "iş ayarlamaları" + }, + "noReason": "Bu eklenti kullanımdan kaldırıldı ve artık güncellenmeyecek.", + "onlyReason": "Bu eklenti {{deprecatedReason}} nedeniyle kullanımdan kaldırılmıştır ve artık güncellenmeyecektir.", + "fullMessage": "Bu eklenti {{deprecatedReason}} nedeniyle kullanım dışı bırakılmıştır ve artık güncellenmeyecek. Lütfen bunun yerine {{-alternativePluginId}}'i kullanın." + } + }, + "debugInfo": { + "title": "Hata ayıklama", + "viewDocs": "Belgeleri Görüntüle" + }, + "privilege": { + "admins": "Yöneticiler", + "whoCanDebug": "Eklentilerde kimler hata ayıklayabilir?", + "everyone": "Herkes", + "title": "Eklenti Tercihleri", + "noone": "Hiç kimse", + "whoCanInstall": "Eklentileri kimler yükleyebilir ve yönetebilir?" + }, + "pluginInfoModal": { + "packageName": "Paket", + "repository": "Depo", + "release": "Serbest bırakma", + "title": "Eklenti bilgisi" + }, + "action": { + "checkForUpdates": "Güncellemeleri kontrol et", + "deleteContentLeft": "Kaldırmak ister misiniz", + "usedInApps": "Bu eklenti {{num}} uygulamalarında kullanılıyor.", + "delete": "Eklentiyi kaldır", + "pluginInfo": "Eklenti bilgisi", + "deleteContentRight": "eklenti?" + }, + "installModal": { + "labels": { + "repository": "Depo", + "version": "Sürüm", + "package": "Paket" + }, + "back": "Geri", + "installComplete": "Kurulum tamamlandı", + "installing": "Yükleme...", + "installedSuccessfully": "Yükleme başarılı", + "installFailedDesc": "Eklenti yüklenemedi, başarısız oldu.", + "fromTrustSource": "Lütfen eklentileri yalnızca güvenilir bir kaynaktan yüklediğinizden emin olun.", + "uploadingPackage": "{{packageName}} yükleniyor...", + "readyToInstall": "Aşağıdaki eklentiyi yüklemek üzere", + "next": "Önümüzdeki", + "pluginLoadError": "Eklenti yükleme hatası", + "install": "Yüklemek", + "cancel": "İptal", + "installedSuccessfullyDesc": "Eklenti başarıyla yüklendi.", + "close": "Kapatmak", + "uploadFailed": "Karşıya yükleme başarısız oldu", + "installFailed": "Yükleme başarısız oldu", + "pluginLoadErrorDesc": "Bu eklenti yüklenmeyecek", + "readyToInstallPackage": "Aşağıdaki eklentiyi yüklemek üzere", + "readyToInstallPackages": "Aşağıdaki {{num}} eklentilerini yüklemek üzereyim", + "dropPluginToInstall": "Yüklemek için eklenti paketini buraya bırakın", + "installPlugin": "Eklentiyi Yükle", + "installWarning": "Bu eklentinin yüklenmesine izin verilmemektedir." + }, + "installFromGitHub": { + "installedSuccessfully": "Yükleme başarılı", + "installFailed": "Yükleme başarısız oldu", + "installNote": "Lütfen eklentileri yalnızca güvenilir bir kaynaktan yüklediğinizden emin olun.", + "selectVersion": "Sürümü seçin", + "selectPackage": "Paket seç", + "installPlugin": "GitHub'dan eklenti yükleyin", + "selectPackagePlaceholder": "Lütfen bir paket seçin", + "uploadFailed": "Karşıya yükleme başarısız oldu", + "selectVersionPlaceholder": "Lütfen bir sürüm seçin", + "gitHubRepo": "GitHub deposu", + "updatePlugin": "GitHub'dan eklentiyi güncelleyin" + }, + "upgrade": { + "usedInApps": "{{num}} uygulamalarında kullanılır", + "upgrade": "Yüklemek", + "title": "Eklentiyi Yükle", + "successfulTitle": "Yükleme başarılı", + "upgrading": "Yükleme...", + "close": "Kapatmak", + "description": "Aşağıdaki eklentiyi yüklemek üzere" + }, + "error": { + "inValidGitHubUrl": "Geçersiz GitHub URL'si. Lütfen şu biçimde geçerli bir URL girin: https://github.com/owner/repo", + "fetchReleasesError": "Sürümler alınamıyor. Lütfen daha sonra tekrar deneyin.", + "noReleasesFound": "Yayın bulunamadı. Lütfen GitHub deposunu veya giriş URL'sini kontrol edin." + }, + "marketplace": { + "sortOption": { + "newlyReleased": "Yeni Çıkanlar", + "mostPopular": "En popüler", + "firstReleased": "İlk Çıkanlar", + "recentlyUpdated": "Son Güncelleme" + }, + "and": "ve", + "empower": "Yapay zeka geliştirmenizi güçlendirin", + "pluginsResult": "{{num}} sonuç", + "difyMarketplace": "Dify Pazar Yeri", + "sortBy": "Kara şehir", + "moreFrom": "Marketplace'ten daha fazlası", + "noPluginFound": "Eklenti bulunamadı", + "viewMore": "Daha fazla göster", + "discover": "Keşfetmek", + "verifiedTip": "Dify tarafından doğrulanmıştır.", + "partnerTip": "Dify partner'ı tarafından doğrulandı" + }, + "task": { + "installedError": "{{errorLength}} eklentileri yüklenemedi", + "clearAll": "Tümünü temizle", + "installing": "{{installingLength}} eklentilerinin kurulumu, 0 bitti.", + "installingWithSuccess": "{{installingLength}} eklentileri yükleniyor, {{successLength}} başarılı.", + "installError": "{{errorLength}} eklentileri yüklenemedi, görüntülemek için tıklayın", + "installingWithError": "{{installingLength}} eklentileri yükleniyor, {{successLength}} başarılı, {{errorLength}} başarısız oldu", + "installSuccess": "{{successLength}} plugins installed successfully", + "installed": "Installed", + "runningPlugins": "Installing Plugins", + "successPlugins": "Successfully Installed Plugins", + "errorPlugins": "Failed to Install Plugins" + }, + "allCategories": "Tüm Kategoriler", + "installAction": "Yüklemek", + "search": "Aramak", + "install": "{{num}} yükleme", + "searchPlugins": "Eklentileri ara", + "searchTools": "Arama araçları...", + "fromMarketplace": "Pazar Yerinden", + "installPlugin": "Eklentiyi yükle", + "installFrom": "ŞURADAN YÜKLE", + "from": "Kaynak", + "endpointsEnabled": "{{num}} uç nokta kümesi etkinleştirildi", + "findMoreInMarketplace": "Marketplace'te daha fazla bilgi edinin", + "searchCategories": "Arama Kategorileri", + "searchInMarketplace": "Marketplace'te arama yapma", + "metadata": { + "title": "Eklentiler" + }, + "difyVersionNotCompatible": "Mevcut Dify sürümü bu eklentiyle uyumlu değil, lütfen gerekli minimum sürüme güncelleyin: {{minimalDifyVersion}}", + "requestAPlugin": "Bir eklenti iste", + "publishPlugins": "Eklentileri yayınlayın", + "auth": { + "default": "Varsayılan", + "setupOAuth": "OAuth İstemcisini Ayarla", + "saveOnly": "Sadece kaydet", + "setDefault": "Varsayılan olarak ayarla", + "useApi": "API Anahtarını Kullan", + "custom": "Özel", + "oauthClientSettings": "OAuth İstemci Ayarları", + "authorizationName": "Yetkilendirme Adı", + "useOAuth": "OAuth kullanın", + "authRemoved": "Yetki kaldırıldı", + "authorization": "Yetkilendirme", + "addOAuth": "OAuth ekle", + "workspaceDefault": "Çalışma Alanı Varsayılan", + "useApiAuth": "API Anahtarı Yetkilendirme Yapılandırması", + "useOAuthAuth": "OAuth Yetkilendirmesi Kullan", + "authorizations": "Yetkilendirmeler", + "oauthClient": "OAuth İstemcisi", + "useApiAuthDesc": "Kimlik bilgileri yapılandırıldıktan sonra, çalışma alanındaki tüm üyeler bu aracı uygulamaları düzenlerken kullanabilir.", + "addApi": "API Anahtarını Ekle", + "saveAndAuth": "Kaydet ve Yetkilendir", + "clientInfo": "Bu araç sağlayıcı için sistem istemci gizlilikleri bulunmadığından, manuel olarak ayar yapılması gerekmektedir. redirect_uri için lütfen şu adresi kullanın", + "unavailable": "Kullanılamıyor", + "customCredentialUnavailable": "Özel kimlik bilgileri şu anda mevcut değil.", + "credentialUnavailable": "Kimlik bilgileri şu anda mevcut değil. Lütfen yönetici ile iletişime geçin.", + "credentialUnavailableInButton": "Kimlik bilgileri mevcut değil", + "connectedWorkspace": "Bağlı Çalışma Alanı", + "emptyAuth": "Lütfen kimlik doğrulamasını yapılandırın" + }, + "deprecated": "Kaldırılmış", + "autoUpdate": { + "strategy": { + "disabled": { + "name": "Engelli", + "description": "Eklentiler otomatik olarak güncellenmeyecek" + }, + "fixOnly": { + "selectedDescription": "Sadece yamanın versiyonları için otomatik güncelleme", + "name": "Sadece Düzelt", + "description": "Yalnızca yamanın sürüm güncellemeleri için otomatik güncelleme (örneğin, 1.0.1 → 1.0.2). Küçük sürüm değişiklikleri güncellemeleri tetiklemez." + }, + "latest": { + "name": "Son", + "selectedDescription": "Her zaman en son sürüme güncelle", + "description": "Her zaman en son sürüme güncelle" + } + }, + "upgradeMode": { + "partial": "Sadece seçilen", + "all": "Hepsini güncelle", + "exclude": "Seçilenleri hariç tut" + }, + "upgradeModePlaceholder": { + "exclude": "Seçilen eklentiler otomatik olarak güncellenmeyecek.", + "partial": "Sadece seçilen eklentiler otomatik olarak güncellenecek. Şu anda hiçbir eklenti seçilmedi, bu yüzden hiçbir eklenti otomatik olarak güncellenmeyecek." + }, + "operation": { + "select": "Eklentileri seçin", + "clearAll": "Hepsini temizle" + }, + "pluginDowngradeWarning": { + "downgrade": "Her durumda düşürme", + "title": "Eklenti Düşürme", + "exclude": "Otomatik güncellemeden hariç tut", + "description": "Bu eklenti için otomatik güncelleme şu anda etkin. Sürümün düşürülmesi, bir sonraki otomatik güncelleme sırasında değişikliklerinizin üzerine yazılmasına neden olabilir." + }, + "noPluginPlaceholder": { + "noInstalled": "Hiçbir eklenti yüklenmemiş", + "noFound": "Hiçbir eklenti bulunamadı" + }, + "automaticUpdates": "Otomatik güncellemeler", + "updateTime": "Güncelleme zamanı", + "updateTimeTitle": "Güncelleme zamanı", + "updateSettings": "Ayarları Güncelle", + "nextUpdateTime": "Sonraki otomatik güncelleme: {{time}}", + "specifyPluginsToUpdate": "Güncellemek için eklentileri belirtin", + "excludeUpdate": "Aşağıdaki {{num}} eklenti otomatik olarak güncellenmeyecek", + "changeTimezone": "Zaman dilimini değiştirmek için Ayarlar sekmesine gidin", + "partialUPdate": "Sadece aşağıdaki {{num}} eklenti otomatik olarak güncellenecek" + }, + "readmeInfo": { + "title": "OKUMA MESELESİ", + "needHelpCheckReadme": "Yardıma mı ihtiyacınız var? README dosyasına bakın.", + "noReadmeAvailable": "README mevcut değil", + "failedToFetch": "README alınamadı" + } +} diff --git a/web/i18n/tr-TR/plugin.ts b/web/i18n/tr-TR/plugin.ts deleted file mode 100644 index bdc10bc753..0000000000 --- a/web/i18n/tr-TR/plugin.ts +++ /dev/null @@ -1,325 +0,0 @@ -const translation = { - category: { - models: 'Model', - all: 'Tüm', - bundles: 'Paketler', - agents: 'Ajan Stratejileri', - tools: 'Araçları', - extensions: 'Uzantı -ları', - datasources: 'Veri Kaynakları', - triggers: 'Tetikleyiciler', - }, - categorySingle: { - tool: 'Alet', - bundle: 'Bohça', - extension: 'Uzantı', - agent: 'Temsilci Stratejisi', - model: 'Model', - datasource: 'Veri Kaynağı', - trigger: 'Tetik', - }, - list: { - source: { - github: 'GitHub\'dan yükleyin', - marketplace: 'Marketten Yükleme', - local: 'Yerel Paket Dosyasından Yükle', - }, - noInstalled: 'Yüklü eklenti yok', - notFound: 'Eklenti bulunamadı', - }, - source: { - github: 'GitHub (İngilizce)', - marketplace: 'Pazar', - local: 'Yerel Paket Dosyası', - }, - detailPanel: { - categoryTip: { - marketplace: 'Marketplace\'ten yüklendi', - local: 'Yerel Eklenti', - debugging: 'Hata Ayıklama Eklentisi', - github: 'Github\'dan yüklendi', - }, - operation: { - install: 'Yüklemek', - detail: 'Şey', - checkUpdate: 'Güncellemeyi Kontrol Et', - remove: 'Kaldırmak', - info: 'Eklenti Bilgileri', - viewDetail: 'ayrıntılara bakın', - update: 'Güncelleştirmek', - back: 'Geri', - }, - toolSelector: { - uninstalledContent: 'Bu eklenti yerel/GitHub deposundan yüklenir. Lütfen kurulumdan sonra kullanın.', - uninstalledLink: 'Eklentilerde Yönet', - descriptionLabel: 'Araç açıklaması', - auto: 'Otomatik', - settings: 'KULLANICI AYARLARI', - empty: 'Araç eklemek için \'+\' düğmesini tıklayın. Birden fazla araç ekleyebilirsiniz.', - unsupportedContent: 'Yüklü eklenti sürümü bu eylemi sağlamaz.', - paramsTip1: 'LLM çıkarım parametrelerini kontrol eder.', - descriptionPlaceholder: 'Aletin amacının kısa açıklaması, örneğin belirli bir konum için sıcaklığı elde edin.', - toolLabel: 'Alet', - placeholder: 'Bir araç seçin...', - title: 'Araç ekle', - uninstalledTitle: 'Araç yüklü değil', - unsupportedContent2: 'Sürümü değiştirmek için tıklayın.', - params: 'AKIL YÜRÜTME YAPILANDIRMASI', - paramsTip2: '\'Otomatik\' kapalıyken, varsayılan değer kullanılır.', - unsupportedTitle: 'Desteklenmeyen Eylem', - toolSetting: 'Araç Ayarları', - unsupportedMCPTool: 'Şu anda seçili olan ajan stratejisi eklenti sürümü MCP araçlarını desteklemiyor.', - }, - strategyNum: '{{sayı}} {{strateji}} DAHİL', - switchVersion: 'Sürümü Değiştir', - endpointDisableContent: '{{name}} öğesini devre dışı bırakmak ister misiniz?', - endpointsDocLink: 'Belgeyi görüntüleyin', - endpointsEmpty: 'Uç nokta eklemek için \'+\' düğmesini tıklayın', - endpoints: 'Bitiş noktası', - disabled: 'Sakat', - endpointModalTitle: 'Uç noktayı ayarlama', - configureModel: 'Modeli yapılandırma', - actionNum: '{{sayı}} {{eylem}} DAHİL', - configureTool: 'Aracı yapılandır', - endpointsTip: 'Bu eklenti, uç noktalar aracılığıyla belirli işlevler sağlar ve geçerli çalışma alanı için birden çok uç nokta kümesi yapılandırabilirsiniz.', - configureApp: 'Uygulamayı Yapılandır', - endpointDeleteTip: 'Uç Noktayı Kaldır', - endpointDeleteContent: '{{name}} öğesini kaldırmak ister misiniz?', - endpointModalDesc: 'Yapılandırıldıktan sonra, eklenti tarafından API uç noktaları aracılığıyla sağlanan özellikler kullanılabilir.', - modelNum: '{{sayı}} DAHİL OLAN MODELLER', - endpointDisableTip: 'Uç Noktayı Devre Dışı Bırak', - serviceOk: 'Servis Tamam', - deprecation: { - reason: { - noMaintainer: 'bakımcı yok', - ownershipTransferred: 'mülkiyet devredildi', - businessAdjustments: 'iş ayarlamaları', - }, - noReason: 'Bu eklenti kullanımdan kaldırıldı ve artık güncellenmeyecek.', - onlyReason: 'Bu eklenti {{deprecatedReason}} nedeniyle kullanımdan kaldırılmıştır ve artık güncellenmeyecektir.', - fullMessage: 'Bu eklenti {{deprecatedReason}} nedeniyle kullanım dışı bırakılmıştır ve artık güncellenmeyecek. Lütfen bunun yerine {{-alternativePluginId}}\'i kullanın.', - }, - }, - debugInfo: { - title: 'Hata ayıklama', - viewDocs: 'Belgeleri Görüntüle', - }, - privilege: { - admins: 'Yöneticiler', - whoCanDebug: 'Eklentilerde kimler hata ayıklayabilir?', - everyone: 'Herkes', - title: 'Eklenti Tercihleri', - noone: 'Hiç kimse', - whoCanInstall: 'Eklentileri kimler yükleyebilir ve yönetebilir?', - }, - pluginInfoModal: { - packageName: 'Paket', - repository: 'Depo', - release: 'Serbest bırakma', - title: 'Eklenti bilgisi', - }, - action: { - checkForUpdates: 'Güncellemeleri kontrol et', - deleteContentLeft: 'Kaldırmak ister misiniz', - usedInApps: 'Bu eklenti {{num}} uygulamalarında kullanılıyor.', - delete: 'Eklentiyi kaldır', - pluginInfo: 'Eklenti bilgisi', - deleteContentRight: 'eklenti?', - }, - installModal: { - labels: { - repository: 'Depo', - version: 'Sürüm', - package: 'Paket', - }, - back: 'Geri', - installComplete: 'Kurulum tamamlandı', - installing: 'Yükleme...', - installedSuccessfully: 'Yükleme başarılı', - installFailedDesc: 'Eklenti yüklenemedi, başarısız oldu.', - fromTrustSource: 'Lütfen eklentileri yalnızca güvenilir bir kaynaktan yüklediğinizden emin olun.', - uploadingPackage: '{{packageName}} yükleniyor...', - readyToInstall: 'Aşağıdaki eklentiyi yüklemek üzere', - next: 'Önümüzdeki', - pluginLoadError: 'Eklenti yükleme hatası', - install: 'Yüklemek', - cancel: 'İptal', - installedSuccessfullyDesc: 'Eklenti başarıyla yüklendi.', - close: 'Kapatmak', - uploadFailed: 'Karşıya yükleme başarısız oldu', - installFailed: 'Yükleme başarısız oldu', - pluginLoadErrorDesc: 'Bu eklenti yüklenmeyecek', - readyToInstallPackage: 'Aşağıdaki eklentiyi yüklemek üzere', - readyToInstallPackages: 'Aşağıdaki {{num}} eklentilerini yüklemek üzereyim', - dropPluginToInstall: 'Yüklemek için eklenti paketini buraya bırakın', - installPlugin: 'Eklentiyi Yükle', - installWarning: 'Bu eklentinin yüklenmesine izin verilmemektedir.', - }, - installFromGitHub: { - installedSuccessfully: 'Yükleme başarılı', - installFailed: 'Yükleme başarısız oldu', - installNote: 'Lütfen eklentileri yalnızca güvenilir bir kaynaktan yüklediğinizden emin olun.', - selectVersion: 'Sürümü seçin', - selectPackage: 'Paket seç', - installPlugin: 'GitHub\'dan eklenti yükleyin', - selectPackagePlaceholder: 'Lütfen bir paket seçin', - uploadFailed: 'Karşıya yükleme başarısız oldu', - selectVersionPlaceholder: 'Lütfen bir sürüm seçin', - gitHubRepo: 'GitHub deposu', - updatePlugin: 'GitHub\'dan eklentiyi güncelleyin', - }, - upgrade: { - usedInApps: '{{num}} uygulamalarında kullanılır', - upgrade: 'Yüklemek', - title: 'Eklentiyi Yükle', - successfulTitle: 'Yükleme başarılı', - upgrading: 'Yükleme...', - close: 'Kapatmak', - description: 'Aşağıdaki eklentiyi yüklemek üzere', - }, - error: { - inValidGitHubUrl: 'Geçersiz GitHub URL\'si. Lütfen şu biçimde geçerli bir URL girin: https://github.com/owner/repo', - fetchReleasesError: 'Sürümler alınamıyor. Lütfen daha sonra tekrar deneyin.', - noReleasesFound: 'Yayın bulunamadı. Lütfen GitHub deposunu veya giriş URL\'sini kontrol edin.', - }, - marketplace: { - sortOption: { - newlyReleased: 'Yeni Çıkanlar', - mostPopular: 'En popüler', - firstReleased: 'İlk Çıkanlar', - recentlyUpdated: 'Son Güncelleme', - }, - and: 've', - empower: 'Yapay zeka geliştirmenizi güçlendirin', - pluginsResult: '{{num}} sonuç', - difyMarketplace: 'Dify Pazar Yeri', - sortBy: 'Kara şehir', - moreFrom: 'Marketplace\'ten daha fazlası', - noPluginFound: 'Eklenti bulunamadı', - viewMore: 'Daha fazla göster', - discover: 'Keşfetmek', - verifiedTip: 'Dify tarafından doğrulanmıştır.', - partnerTip: 'Dify partner\'ı tarafından doğrulandı', - }, - task: { - installedError: '{{errorLength}} eklentileri yüklenemedi', - clearAll: 'Tümünü temizle', - installing: '{{installingLength}} eklentilerinin kurulumu, 0 bitti.', - installingWithSuccess: '{{installingLength}} eklentileri yükleniyor, {{successLength}} başarılı.', - installError: '{{errorLength}} eklentileri yüklenemedi, görüntülemek için tıklayın', - installingWithError: '{{installingLength}} eklentileri yükleniyor, {{successLength}} başarılı, {{errorLength}} başarısız oldu', - installSuccess: '{{successLength}} plugins installed successfully', - installed: 'Installed', - runningPlugins: 'Installing Plugins', - successPlugins: 'Successfully Installed Plugins', - errorPlugins: 'Failed to Install Plugins', - }, - allCategories: 'Tüm Kategoriler', - installAction: 'Yüklemek', - search: 'Aramak', - install: '{{num}} yükleme', - searchPlugins: 'Eklentileri ara', - searchTools: 'Arama araçları...', - fromMarketplace: 'Pazar Yerinden', - installPlugin: 'Eklentiyi yükle', - installFrom: 'ŞURADAN YÜKLE', - from: 'Kaynak', - endpointsEnabled: '{{num}} uç nokta kümesi etkinleştirildi', - findMoreInMarketplace: 'Marketplace\'te daha fazla bilgi edinin', - searchCategories: 'Arama Kategorileri', - searchInMarketplace: 'Marketplace\'te arama yapma', - metadata: { - title: 'Eklentiler', - }, - difyVersionNotCompatible: 'Mevcut Dify sürümü bu eklentiyle uyumlu değil, lütfen gerekli minimum sürüme güncelleyin: {{minimalDifyVersion}}', - requestAPlugin: 'Bir eklenti iste', - publishPlugins: 'Eklentileri yayınlayın', - auth: { - default: 'Varsayılan', - setupOAuth: 'OAuth İstemcisini Ayarla', - saveOnly: 'Sadece kaydet', - setDefault: 'Varsayılan olarak ayarla', - useApi: 'API Anahtarını Kullan', - custom: 'Özel', - oauthClientSettings: 'OAuth İstemci Ayarları', - authorizationName: 'Yetkilendirme Adı', - useOAuth: 'OAuth kullanın', - authRemoved: 'Yetki kaldırıldı', - authorization: 'Yetkilendirme', - addOAuth: 'OAuth ekle', - workspaceDefault: 'Çalışma Alanı Varsayılan', - useApiAuth: 'API Anahtarı Yetkilendirme Yapılandırması', - useOAuthAuth: 'OAuth Yetkilendirmesi Kullan', - authorizations: 'Yetkilendirmeler', - oauthClient: 'OAuth İstemcisi', - useApiAuthDesc: 'Kimlik bilgileri yapılandırıldıktan sonra, çalışma alanındaki tüm üyeler bu aracı uygulamaları düzenlerken kullanabilir.', - addApi: 'API Anahtarını Ekle', - saveAndAuth: 'Kaydet ve Yetkilendir', - clientInfo: 'Bu araç sağlayıcı için sistem istemci gizlilikleri bulunmadığından, manuel olarak ayar yapılması gerekmektedir. redirect_uri için lütfen şu adresi kullanın', - unavailable: 'Kullanılamıyor', - customCredentialUnavailable: 'Özel kimlik bilgileri şu anda mevcut değil.', - credentialUnavailable: 'Kimlik bilgileri şu anda mevcut değil. Lütfen yönetici ile iletişime geçin.', - credentialUnavailableInButton: 'Kimlik bilgileri mevcut değil', - connectedWorkspace: 'Bağlı Çalışma Alanı', - emptyAuth: 'Lütfen kimlik doğrulamasını yapılandırın', - }, - deprecated: 'Kaldırılmış', - autoUpdate: { - strategy: { - disabled: { - name: 'Engelli', - description: 'Eklentiler otomatik olarak güncellenmeyecek', - }, - fixOnly: { - selectedDescription: 'Sadece yamanın versiyonları için otomatik güncelleme', - name: 'Sadece Düzelt', - description: 'Yalnızca yamanın sürüm güncellemeleri için otomatik güncelleme (örneğin, 1.0.1 → 1.0.2). Küçük sürüm değişiklikleri güncellemeleri tetiklemez.', - }, - latest: { - name: 'Son', - selectedDescription: 'Her zaman en son sürüme güncelle', - description: 'Her zaman en son sürüme güncelle', - }, - }, - upgradeMode: { - partial: 'Sadece seçilen', - all: 'Hepsini güncelle', - exclude: 'Seçilenleri hariç tut', - }, - upgradeModePlaceholder: { - exclude: 'Seçilen eklentiler otomatik olarak güncellenmeyecek.', - partial: 'Sadece seçilen eklentiler otomatik olarak güncellenecek. Şu anda hiçbir eklenti seçilmedi, bu yüzden hiçbir eklenti otomatik olarak güncellenmeyecek.', - }, - operation: { - select: 'Eklentileri seçin', - clearAll: 'Hepsini temizle', - }, - pluginDowngradeWarning: { - downgrade: 'Her durumda düşürme', - title: 'Eklenti Düşürme', - exclude: 'Otomatik güncellemeden hariç tut', - description: 'Bu eklenti için otomatik güncelleme şu anda etkin. Sürümün düşürülmesi, bir sonraki otomatik güncelleme sırasında değişikliklerinizin üzerine yazılmasına neden olabilir.', - }, - noPluginPlaceholder: { - noInstalled: 'Hiçbir eklenti yüklenmemiş', - noFound: 'Hiçbir eklenti bulunamadı', - }, - automaticUpdates: 'Otomatik güncellemeler', - updateTime: 'Güncelleme zamanı', - updateTimeTitle: 'Güncelleme zamanı', - updateSettings: 'Ayarları Güncelle', - nextUpdateTime: 'Sonraki otomatik güncelleme: {{time}}', - specifyPluginsToUpdate: 'Güncellemek için eklentileri belirtin', - excludeUpdate: 'Aşağıdaki {{num}} eklenti otomatik olarak güncellenmeyecek', - changeTimezone: 'Zaman dilimini değiştirmek için Ayarlar sekmesine gidin', - partialUPdate: 'Sadece aşağıdaki {{num}} eklenti otomatik olarak güncellenecek', - }, - readmeInfo: { - title: 'OKUMA MESELESİ', - needHelpCheckReadme: 'Yardıma mı ihtiyacınız var? README dosyasına bakın.', - noReadmeAvailable: 'README mevcut değil', - failedToFetch: 'README alınamadı', - }, -} - -export default translation diff --git a/web/i18n/tr-TR/register.json b/web/i18n/tr-TR/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/tr-TR/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/tr-TR/register.ts b/web/i18n/tr-TR/register.ts deleted file mode 100644 index e2410dd34b..0000000000 --- a/web/i18n/tr-TR/register.ts +++ /dev/null @@ -1,3 +0,0 @@ -const translation = {} - -export default translation diff --git a/web/i18n/tr-TR/run-log.json b/web/i18n/tr-TR/run-log.json new file mode 100644 index 0000000000..2c147d5e19 --- /dev/null +++ b/web/i18n/tr-TR/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "GİRİŞ", + "result": "SONUÇ", + "detail": "DETAY", + "tracing": "İZLEME", + "resultPanel": { + "status": "DURUM", + "time": "GEÇEN ZAMAN", + "tokens": "TOPLAM TOKEN" + }, + "meta": { + "title": "METADATA", + "status": "Durum", + "version": "Sürüm", + "executor": "Yürütücü", + "startTime": "Başlama Zamanı", + "time": "Geçen Zaman", + "tokens": "Toplam Token", + "steps": "Çalıştırma Adımları" + }, + "resultEmpty": { + "title": "Bu çalıştırma sadece JSON formatında çıktı verdi,", + "tipLeft": "lütfen ", + "link": "detay paneli", + "tipRight": "ne gidin ve görüntüleyin." + }, + "actionLogs": "Eylem Günlükleri", + "circularInvocationTip": "Geçerli iş akışında araçların/düğümlerin döngüsel olarak çağrılması vardır." +} diff --git a/web/i18n/tr-TR/run-log.ts b/web/i18n/tr-TR/run-log.ts deleted file mode 100644 index 8fa8e9383a..0000000000 --- a/web/i18n/tr-TR/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -const translation = { - input: 'GİRİŞ', - result: 'SONUÇ', - detail: 'DETAY', - tracing: 'İZLEME', - resultPanel: { - status: 'DURUM', - time: 'GEÇEN ZAMAN', - tokens: 'TOPLAM TOKEN', - }, - meta: { - title: 'METADATA', - status: 'Durum', - version: 'Sürüm', - executor: 'Yürütücü', - startTime: 'Başlama Zamanı', - time: 'Geçen Zaman', - tokens: 'Toplam Token', - steps: 'Çalıştırma Adımları', - }, - resultEmpty: { - title: 'Bu çalıştırma sadece JSON formatında çıktı verdi,', - tipLeft: 'lütfen ', - link: 'detay paneli', - tipRight: 'ne gidin ve görüntüleyin.', - }, - actionLogs: 'Eylem Günlükleri', - circularInvocationTip: 'Geçerli iş akışında araçların/düğümlerin döngüsel olarak çağrılması vardır.', -} - -export default translation diff --git a/web/i18n/tr-TR/share.json b/web/i18n/tr-TR/share.json new file mode 100644 index 0000000000..677dc20f5b --- /dev/null +++ b/web/i18n/tr-TR/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "", + "appUnavailable": "Uygulama kullanılamıyor", + "appUnknownError": "Uygulama kullanılamıyor" + }, + "chat": { + "newChat": "Yeni sohbet", + "pinnedTitle": "Sabitlenmiş", + "unpinnedTitle": "Sohbetler", + "newChatDefaultName": "Yeni konuşma", + "resetChat": "Konuşmayı sıfırla", + "poweredBy": "Tarafından desteklenmektedir", + "prompt": "Prompt", + "privatePromptConfigTitle": "Konuşma ayarları", + "publicPromptConfigTitle": "Başlangıç Promptu", + "configStatusDes": "Başlamadan önce, konuşma ayarlarını değiştirebilirsiniz", + "configDisabled": "Bu oturum için önceki oturum ayarları kullanılmıştır.", + "startChat": "Sohbete Başla", + "privacyPolicyLeft": "Lütfen okuyun", + "privacyPolicyMiddle": "gizlilik politikası", + "privacyPolicyRight": "uygulama geliştiricisi tarafından sağlanmıştır.", + "deleteConversation": { + "title": "Konuşmayı sil", + "content": "Bu konuşmayı silmek istediğinize emin misiniz?" + }, + "tryToSolve": "Çözmeyi Dene", + "temporarySystemIssue": "Üzgünüz, geçici sistem sorunu.", + "expand": "Genişlet", + "collapse": "Kısıtla", + "chatSettingsTitle": "Yeni sohbet kurulumu", + "chatFormTip": "Sohbet başladıktan sonra sohbet ayarları değiştirilemez.", + "viewChatSettings": "Sohbet ayarlarını görüntüle", + "newChatTip": "Zaten yeni bir sohbette" + }, + "generation": { + "tabs": { + "create": "Bir Kere Çalıştır", + "batch": "Toplu Çalıştır", + "saved": "Kaydedildi" + }, + "savedNoData": { + "title": "Henüz bir sonuç kaydetmediniz!", + "description": "İçerik oluşturmaya başlayın ve kaydedilen sonuçları burada bulun.", + "startCreateContent": "İçerik oluşturmayı başlat" + }, + "title": "AI Tamamlama", + "queryTitle": "Sorgu içeriği", + "completionResult": "Tamamlama sonucu", + "queryPlaceholder": "Sorgu içeriğinizi yazın...", + "run": "Çalıştır", + "copy": "Kopyala", + "resultTitle": "AI Tamamlama", + "noData": "AI burada istediğinizi size verecek.", + "csvUploadTitle": "CSV dosyanızı buraya sürükleyip bırakın ya da ", + "browse": "göz atın", + "csvStructureTitle": "CSV dosyası şu yapıya uygun olmalıdır:", + "downloadTemplate": "Şablonu buradan indir", + "field": "Alan", + "batchFailed": { + "info": "{{num}} başarısız işlemler", + "retry": "Yeniden dene", + "outputPlaceholder": "Çıktı içeriği yok" + }, + "errorMsg": { + "empty": "Lütfen yüklenen dosyada içerik girin.", + "fileStructNotMatch": "Yüklenen CSV dosyası yapıya uymuyor.", + "emptyLine": "Satır {{rowIndex}} boş", + "invalidLine": "Satır {{rowIndex}}: {{varName}} değeri boş olamaz", + "moreThanMaxLengthLine": "Satır {{rowIndex}}: {{varName}} değeri {{maxLength}} karakterden fazla olamaz", + "atLeastOne": "Lütfen yüklenen dosyada en az bir satır girin." + }, + "execution": "Çalıştır", + "executions": "{{num}} çalıştırma", + "stopRun": "Çalışmayı durdur" + }, + "login": { + "backToHome": "Ana Sayfaya Dön" + } +} diff --git a/web/i18n/tr-TR/share.ts b/web/i18n/tr-TR/share.ts deleted file mode 100644 index 8c72cb0a64..0000000000 --- a/web/i18n/tr-TR/share.ts +++ /dev/null @@ -1,82 +0,0 @@ -const translation = { - common: { - welcome: '', - appUnavailable: 'Uygulama kullanılamıyor', - appUnknownError: 'Uygulama kullanılamıyor', - }, - chat: { - newChat: 'Yeni sohbet', - pinnedTitle: 'Sabitlenmiş', - unpinnedTitle: 'Sohbetler', - newChatDefaultName: 'Yeni konuşma', - resetChat: 'Konuşmayı sıfırla', - poweredBy: 'Tarafından desteklenmektedir', - prompt: 'Prompt', - privatePromptConfigTitle: 'Konuşma ayarları', - publicPromptConfigTitle: 'Başlangıç Promptu', - configStatusDes: 'Başlamadan önce, konuşma ayarlarını değiştirebilirsiniz', - configDisabled: 'Bu oturum için önceki oturum ayarları kullanılmıştır.', - startChat: 'Sohbete Başla', - privacyPolicyLeft: 'Lütfen okuyun', - privacyPolicyMiddle: 'gizlilik politikası', - privacyPolicyRight: 'uygulama geliştiricisi tarafından sağlanmıştır.', - deleteConversation: { - title: 'Konuşmayı sil', - content: 'Bu konuşmayı silmek istediğinize emin misiniz?', - }, - tryToSolve: 'Çözmeyi Dene', - temporarySystemIssue: 'Üzgünüz, geçici sistem sorunu.', - expand: 'Genişlet', - collapse: 'Kısıtla', - chatSettingsTitle: 'Yeni sohbet kurulumu', - chatFormTip: 'Sohbet başladıktan sonra sohbet ayarları değiştirilemez.', - viewChatSettings: 'Sohbet ayarlarını görüntüle', - newChatTip: 'Zaten yeni bir sohbette', - }, - generation: { - tabs: { - create: 'Bir Kere Çalıştır', - batch: 'Toplu Çalıştır', - saved: 'Kaydedildi', - }, - savedNoData: { - title: 'Henüz bir sonuç kaydetmediniz!', - description: 'İçerik oluşturmaya başlayın ve kaydedilen sonuçları burada bulun.', - startCreateContent: 'İçerik oluşturmayı başlat', - }, - title: 'AI Tamamlama', - queryTitle: 'Sorgu içeriği', - completionResult: 'Tamamlama sonucu', - queryPlaceholder: 'Sorgu içeriğinizi yazın...', - run: 'Çalıştır', - copy: 'Kopyala', - resultTitle: 'AI Tamamlama', - noData: 'AI burada istediğinizi size verecek.', - csvUploadTitle: 'CSV dosyanızı buraya sürükleyip bırakın ya da ', - browse: 'göz atın', - csvStructureTitle: 'CSV dosyası şu yapıya uygun olmalıdır:', - downloadTemplate: 'Şablonu buradan indir', - field: 'Alan', - batchFailed: { - info: '{{num}} başarısız işlemler', - retry: 'Yeniden dene', - outputPlaceholder: 'Çıktı içeriği yok', - }, - errorMsg: { - empty: 'Lütfen yüklenen dosyada içerik girin.', - fileStructNotMatch: 'Yüklenen CSV dosyası yapıya uymuyor.', - emptyLine: 'Satır {{rowIndex}} boş', - invalidLine: 'Satır {{rowIndex}}: {{varName}} değeri boş olamaz', - moreThanMaxLengthLine: 'Satır {{rowIndex}}: {{varName}} değeri {{maxLength}} karakterden fazla olamaz', - atLeastOne: 'Lütfen yüklenen dosyada en az bir satır girin.', - }, - execution: 'Çalıştır', - executions: '{{num}} çalıştırma', - stopRun: 'Çalışmayı durdur', - }, - login: { - backToHome: 'Ana Sayfaya Dön', - }, -} - -export default translation diff --git a/web/i18n/tr-TR/time.json b/web/i18n/tr-TR/time.json new file mode 100644 index 0000000000..12a9c70f2b --- /dev/null +++ b/web/i18n/tr-TR/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Sat": "Sat", + "Thu": "Perşembe", + "Tue": "Salı", + "Mon": "Mon", + "Sun": "Güneş", + "Fri": "Cuma", + "Wed": "Çarşamba" + }, + "months": { + "March": "Mart", + "December": "Aralık", + "October": "Ekim", + "September": "Eylül", + "July": "Temmuz", + "August": "Ağustos", + "June": "Haziran", + "November": "Kasım", + "February": "Şubat", + "April": "Nisan", + "May": "Mayıs", + "January": "Ocak" + }, + "operation": { + "cancel": "İptal", + "now": "Şimdi", + "pickDate": "Tarih Seç", + "ok": "Tamam" + }, + "title": { + "pickTime": "Zamanı Seç" + }, + "defaultPlaceholder": "Bir zaman seç...", + "dateFormats": { + "displayWithTime": "MMMM D, YYYY hh:mm A", + "output": "YYYY-AA-GG", + "display": "MMMM D, YYYY", + "outputWithTime": "YYYY-AA-GGSS:DD:DDS.SSSZ", + "input": "YYYY-AA-GG" + } +} diff --git a/web/i18n/tr-TR/time.ts b/web/i18n/tr-TR/time.ts deleted file mode 100644 index a8f78094fd..0000000000 --- a/web/i18n/tr-TR/time.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - daysInWeek: { - Sat: 'Sat', - Thu: 'Perşembe', - Tue: 'Salı', - Mon: 'Mon', - Sun: 'Güneş', - Fri: 'Cuma', - Wed: 'Çarşamba', - }, - months: { - March: 'Mart', - December: 'Aralık', - October: 'Ekim', - September: 'Eylül', - July: 'Temmuz', - August: 'Ağustos', - June: 'Haziran', - November: 'Kasım', - February: 'Şubat', - April: 'Nisan', - May: 'Mayıs', - January: 'Ocak', - }, - operation: { - cancel: 'İptal', - now: 'Şimdi', - pickDate: 'Tarih Seç', - ok: 'Tamam', - }, - title: { - pickTime: 'Zamanı Seç', - }, - defaultPlaceholder: 'Bir zaman seç...', - dateFormats: { - displayWithTime: 'MMMM D, YYYY hh:mm A', - output: 'YYYY-AA-GG', - display: 'MMMM D, YYYY', - outputWithTime: 'YYYY-AA-GGSS:DD:DDS.SSSZ', - input: 'YYYY-AA-GG', - }, -} - -export default translation diff --git a/web/i18n/tr-TR/tools.json b/web/i18n/tr-TR/tools.json new file mode 100644 index 0000000000..c930457abe --- /dev/null +++ b/web/i18n/tr-TR/tools.json @@ -0,0 +1,262 @@ +{ + "title": "Araçlar", + "createCustomTool": "Özel Araç Oluştur", + "customToolTip": "Dify özel araçları hakkında daha fazla bilgi edinin", + "type": { + "builtIn": "Yerleşik", + "custom": "Özel", + "workflow": "Workflow" + }, + "contribute": { + "line1": "Dify'ye ", + "line2": "araçlar eklemekle ilgileniyorum.", + "viewGuide": "Rehberi Görüntüle" + }, + "author": "Tarafından", + "auth": { + "authorized": "Yetkilendirildi", + "setup": "Kullanmak için yetkilendirmeyi ayarla", + "setupModalTitle": "Yetkilendirmeyi Ayarla", + "setupModalTitleDescription": "Kimlik bilgilerini yapılandırdıktan sonra, çalışma alanındaki tüm üyeler uygulamaları düzenlerken bu aracı kullanabilir." + }, + "includeToolNum": "{{num}} araç dahil", + "addToolModal": { + "type": "Tür", + "category": "Kategori", + "added": "Eklendi", + "custom": { + "title": "Mevcut özel araç yok", + "tip": "Özel bir araç oluşturun" + }, + "workflow": { + "title": "Mevcut iş akışı aracı yok", + "tip": "İş akışlarını Studio'da araç olarak yayınlayın" + }, + "mcp": { + "title": "Mevcut MCP aracı yok", + "tip": "Bir MCP sunucusu ekleyin" + }, + "agent": { + "title": "Mevcut ajan stratejisi yok" + } + }, + "createTool": { + "title": "Özel Araç Oluştur", + "editAction": "Yapılandır", + "editTitle": "Özel Aracı Düzenle", + "name": "İsim", + "toolNamePlaceHolder": "Araç ismini girin", + "nameForToolCall": "Araç çağrı adı", + "nameForToolCallPlaceHolder": "Makine tanıması için kullanılır, örneğin getCurrentWeather, list_pets", + "nameForToolCallTip": "Sadece rakamlar, harfler ve alt çizgileri destekler.", + "description": "Açıklama", + "descriptionPlaceholder": "Araç amacının kısa açıklaması, örneğin belirli bir yer için sıcaklığı al.", + "schema": "Şema", + "schemaPlaceHolder": "OpenAPI şemanızı buraya girin", + "viewSchemaSpec": "OpenAPI-Swagger Spesifikasyonunu Görüntüle", + "importFromUrl": "URL'den İçe Aktar", + "importFromUrlPlaceHolder": "https://...", + "urlError": "Geçerli bir URL girin", + "examples": "Örnekler", + "exampleOptions": { + "json": "Hava Durumu (JSON)", + "yaml": "Evcil Hayvan Mağazası (YAML)", + "blankTemplate": "Boş Şablon" + }, + "availableTools": { + "title": "Kullanılabilir Araçlar", + "name": "İsim", + "description": "Açıklama", + "method": "Yöntem", + "path": "Yol", + "action": "Eylemler", + "test": "Test" + }, + "authMethod": { + "title": "Yetkilendirme yöntemi", + "type": "Yetkilendirme türü", + "keyTooltip": "Http Başlığı Anahtarı, ne olduğunu bilmiyorsanız \"Authorization\" olarak bırakabilirsiniz veya özel bir değere ayarlayabilirsiniz", + "types": { + "none": "Yok", + "apiKeyPlaceholder": "API Anahtarı için HTTP başlık adı", + "apiValuePlaceholder": "API Anahtarını girin", + "api_key_header": "Başlık", + "queryParamPlaceholder": "API Anahtarı için Sorgu parametre adı", + "api_key_query": "Sorgu Parametre" + }, + "key": "Anahtar", + "value": "Değer", + "queryParam": "Sorgu Parametresi", + "queryParamTooltip": "API anahtarı sorgu parametresinin adı, örneğin \"key\" değeri \"https://example.com/test?key=API_KEY\" adresinde." + }, + "authHeaderPrefix": { + "title": "Yetki Türü", + "types": { + "basic": "Temel", + "bearer": "Bearer", + "custom": "Özel" + } + }, + "privacyPolicy": "Gizlilik politikası", + "privacyPolicyPlaceholder": "Gizlilik politikasını girin", + "toolInput": { + "title": "Araç Girişi", + "name": "İsim", + "required": "Gerekli", + "method": "Yöntem", + "methodSetting": "Ayar", + "methodSettingTip": "Kullanıcı araç yapılandırmasını doldurur", + "methodParameter": "Parametre", + "methodParameterTip": "Çıkarım sırasında LLM tarafından doldurulur", + "label": "Etiketler", + "labelPlaceholder": "Etiketleri seç (isteğe bağlı)", + "description": "Açıklama", + "descriptionPlaceholder": "Parametrenin anlamının açıklaması" + }, + "customDisclaimer": "Özel feragatname", + "customDisclaimerPlaceholder": "Özel feragatnameyi girin", + "confirmTitle": "Kaydetmek için onaylıyor musunuz?", + "confirmTip": "Bu aracı kullanan uygulamalar etkilenecek", + "deleteToolConfirmTitle": "Bu Aracı silmek istiyor musunuz?", + "deleteToolConfirmContent": "Aracın silinmesi geri alınamaz. Kullanıcılar artık aracınıza erişemeyecek.", + "toolOutput": { + "title": "Araç Çıktısı", + "name": "İsim", + "reserved": "Ayrılmış", + "reservedParameterDuplicateTip": "text, json ve dosyalar ayrılmış değişkenlerdir. Bu isimlere sahip değişkenler çıktı şemasında yer alamaz.", + "description": "Açıklama" + } + }, + "test": { + "title": "Test", + "parametersValue": "Parametreler ve Değer", + "parameters": "Parametreler", + "value": "Değer", + "testResult": "Test Sonuçları", + "testResultPlaceholder": "Test sonucu burada gösterilecektir" + }, + "thought": { + "using": "Kullanılıyor", + "used": "Kullanıldı", + "requestTitle": "İstek", + "responseTitle": "Yanıt" + }, + "setBuiltInTools": { + "info": "Bilgi", + "setting": "Ayar", + "toolDescription": "Araç açıklaması", + "parameters": "parametreler", + "string": "string", + "number": "numara", + "required": "Gerekli", + "infoAndSetting": "Bilgi ve Ayarlar", + "file": "dosya" + }, + "noCustomTool": { + "title": "Özel araç yok!", + "content": "AI uygulamaları oluşturmak için özel araçlarınızı buraya ekleyin ve yönetin.", + "createTool": "Araç Oluştur" + }, + "noSearchRes": { + "title": "Üzgünüz, sonuç bulunamadı!", + "content": "Aramanızla eşleşen araçlar bulamadık.", + "reset": "Aramayı Sıfırla" + }, + "builtInPromptTitle": "Prompt", + "toolRemoved": "Araç kaldırıldı", + "notAuthorized": "Araç yetkilendirilmedi", + "howToGet": "Nasıl alınır", + "openInStudio": "Studyoda Aç", + "toolNameUsageTip": "Agent akıl yürütme ve prompt için araç çağrı adı", + "copyToolName": "Adı Kopyala", + "noTools": "Araç bulunamadı", + "mcp": { + "create": { + "cardTitle": "MCP Sunucusu Ekle (HTTP)", + "cardLink": "MCP sunucu entegrasyonu hakkında daha fazla bilgi edinin" + }, + "noConfigured": "Yapılandırılmamış Sunucu", + "updateTime": "Güncellendi", + "toolsCount": "{count} araç", + "noTools": "Kullanılabilir araç yok", + "modal": { + "title": "MCP Sunucusu Ekle (HTTP)", + "editTitle": "MCP Sunucusunu Düzenle (HTTP)", + "name": "Ad ve Simge", + "namePlaceholder": "MCP sunucunuza ad verin", + "serverUrl": "Sunucu URL", + "serverUrlPlaceholder": "Sunucu endpoint URL", + "serverUrlWarning": "Sunucu adresini güncellemek, bu sunucuya bağımlı uygulamaları kesintiye uğratabilir", + "serverIdentifier": "Sunucu Tanımlayıcı", + "serverIdentifierTip": "Çalışma alanındaki MCP sunucusu için benzersiz tanımlayıcı. Sadece küçük harf, rakam, alt çizgi ve tire. En fazla 24 karakter.", + "serverIdentifierPlaceholder": "Benzersiz tanımlayıcı, örn. my-mcp-server", + "serverIdentifierWarning": "ID değiştirildikten sonra sunucu mevcut uygulamalar tarafından tanınmayacak", + "cancel": "İptal", + "save": "Kaydet", + "confirm": "Ekle ve Yetkilendir", + "timeout": "Zaman aşımı", + "sseReadTimeout": "SSE Okuma Zaman Aşımı", + "headers": "Başlıklar", + "headerKeyPlaceholder": "örneğin, Yetkilendirme", + "addHeader": "Başlık Ekle", + "headerValue": "Başlık Değeri", + "noHeaders": "Özel başlıklar yapılandırılmamış", + "headerKey": "Başlık Adı", + "timeoutPlaceholder": "otuz", + "headersTip": "MCP sunucu istekleri ile gönderilecek ek HTTP başlıkları", + "headerValuePlaceholder": "örneğin, Taşıyıcı jeton123", + "maskedHeadersTip": "Başlık değerleri güvenlik amacıyla gizlenmiştir. Değişiklikler gerçek değerleri güncelleyecektir.", + "clientID": "Müşteri Kimliği", + "configurations": "Yapılandırmalar", + "clientSecretPlaceholder": "İstemci Sırrı", + "clientSecret": "İstemci Sırrı", + "authentication": "Kimlik Doğrulama", + "useDynamicClientRegistration": "Dinamik İstemci Kaydını Kullan", + "redirectUrlWarning": "Lütfen OAuth yönlendirme URL'nizi şu şekilde yapılandırın:" + }, + "delete": "MCP Sunucusunu Kaldır", + "deleteConfirmTitle": "{mcp} kaldırılsın mı?", + "operation": { + "edit": "Düzenle", + "remove": "Kaldır" + }, + "authorize": "Yetkilendir", + "authorizing": "Yetkilendiriliyor...", + "authorizingRequired": "Yetkilendirme gerekli", + "authorizeTip": "Yetkilendirmeden sonra araçlar burada görüntülenecektir.", + "update": "Güncelle", + "updating": "Güncelleniyor...", + "gettingTools": "Araçlar alınıyor...", + "updateTools": "Araçlar güncelleniyor...", + "toolsEmpty": "Araçlar yüklenmedi", + "getTools": "Araçları al", + "toolUpdateConfirmTitle": "Araç Listesini Güncelle", + "toolUpdateConfirmContent": "Araç listesini güncellemek mevcut uygulamaları etkileyebilir. Devam etmek istiyor musunuz?", + "toolsNum": "{count} araç dahil", + "onlyTool": "1 araç dahil", + "identifier": "Sunucu Tanımlayıcı (Kopyalamak için Tıklayın)", + "server": { + "title": "MCP Sunucusu", + "url": "Sunucu URL", + "reGen": "Sunucu URL yeniden oluşturulsun mu?", + "addDescription": "Açıklama ekle", + "edit": "Açıklamayı düzenle", + "modal": { + "addTitle": "MCP Sunucusunu etkinleştirmek için açıklama ekleyin", + "editTitle": "Açıklamayı düzenle", + "description": "Açıklama", + "descriptionPlaceholder": "Bu aracın ne yaptığını ve LLM tarafından nasıl kullanılması gerektiğini açıklayın", + "parameters": "Parametreler", + "parametersTip": "LLM'nin amaçlarını ve kısıtlamalarını anlamasına yardımcı olmak için her parametreye açıklamalar ekleyin.", + "parametersPlaceholder": "Parametre amacı ve kısıtlamaları", + "confirm": "MCP Sunucusunu Etkinleştir" + }, + "publishTip": "Uygulama yayınlanmadı. Lütfen önce uygulamayı yayınlayın." + }, + "toolItem": { + "parameters": "Parametreler", + "noDescription": "Açıklama yok" + } + }, + "allTools": "Tüm araçlar" +} diff --git a/web/i18n/tr-TR/tools.ts b/web/i18n/tr-TR/tools.ts deleted file mode 100644 index e709175652..0000000000 --- a/web/i18n/tr-TR/tools.ts +++ /dev/null @@ -1,264 +0,0 @@ -const translation = { - title: 'Araçlar', - createCustomTool: 'Özel Araç Oluştur', - customToolTip: 'Dify özel araçları hakkında daha fazla bilgi edinin', - type: { - builtIn: 'Yerleşik', - custom: 'Özel', - workflow: 'Workflow', - }, - contribute: { - line1: 'Dify\'ye ', - line2: 'araçlar eklemekle ilgileniyorum.', - viewGuide: 'Rehberi Görüntüle', - }, - author: 'Tarafından', - auth: { - authorized: 'Yetkilendirildi', - setup: 'Kullanmak için yetkilendirmeyi ayarla', - setupModalTitle: 'Yetkilendirmeyi Ayarla', - setupModalTitleDescription: 'Kimlik bilgilerini yapılandırdıktan sonra, çalışma alanındaki tüm üyeler uygulamaları düzenlerken bu aracı kullanabilir.', - }, - includeToolNum: '{{num}} araç dahil', - addToolModal: { - type: 'Tür', - category: 'Kategori', - added: 'Eklendi', - custom: { - title: 'Mevcut özel araç yok', - tip: 'Özel bir araç oluşturun', - }, - workflow: { - title: 'Mevcut iş akışı aracı yok', - tip: 'İş akışlarını Studio\'da araç olarak yayınlayın', - }, - mcp: { - title: 'Mevcut MCP aracı yok', - tip: 'Bir MCP sunucusu ekleyin', - }, - agent: { - title: 'Mevcut ajan stratejisi yok', - }, - }, - createTool: { - title: 'Özel Araç Oluştur', - editAction: 'Yapılandır', - editTitle: 'Özel Aracı Düzenle', - name: 'İsim', - toolNamePlaceHolder: 'Araç ismini girin', - nameForToolCall: 'Araç çağrı adı', - nameForToolCallPlaceHolder: 'Makine tanıması için kullanılır, örneğin getCurrentWeather, list_pets', - nameForToolCallTip: 'Sadece rakamlar, harfler ve alt çizgileri destekler.', - description: 'Açıklama', - descriptionPlaceholder: 'Araç amacının kısa açıklaması, örneğin belirli bir yer için sıcaklığı al.', - schema: 'Şema', - schemaPlaceHolder: 'OpenAPI şemanızı buraya girin', - viewSchemaSpec: 'OpenAPI-Swagger Spesifikasyonunu Görüntüle', - importFromUrl: 'URL\'den İçe Aktar', - importFromUrlPlaceHolder: 'https://...', - urlError: 'Geçerli bir URL girin', - examples: 'Örnekler', - exampleOptions: { - json: 'Hava Durumu (JSON)', - yaml: 'Evcil Hayvan Mağazası (YAML)', - blankTemplate: 'Boş Şablon', - }, - availableTools: { - title: 'Kullanılabilir Araçlar', - name: 'İsim', - description: 'Açıklama', - method: 'Yöntem', - path: 'Yol', - action: 'Eylemler', - test: 'Test', - }, - authMethod: { - title: 'Yetkilendirme yöntemi', - type: 'Yetkilendirme türü', - keyTooltip: 'Http Başlığı Anahtarı, ne olduğunu bilmiyorsanız "Authorization" olarak bırakabilirsiniz veya özel bir değere ayarlayabilirsiniz', - types: { - none: 'Yok', - apiKeyPlaceholder: 'API Anahtarı için HTTP başlık adı', - apiValuePlaceholder: 'API Anahtarını girin', - api_key_header: 'Başlık', - queryParamPlaceholder: 'API Anahtarı için Sorgu parametre adı', - api_key_query: 'Sorgu Parametre', - }, - key: 'Anahtar', - value: 'Değer', - queryParam: 'Sorgu Parametresi', - queryParamTooltip: 'API anahtarı sorgu parametresinin adı, örneğin "key" değeri "https://example.com/test?key=API_KEY" adresinde.', - }, - authHeaderPrefix: { - title: 'Yetki Türü', - types: { - basic: 'Temel', - bearer: 'Bearer', - custom: 'Özel', - }, - }, - privacyPolicy: 'Gizlilik politikası', - privacyPolicyPlaceholder: 'Gizlilik politikasını girin', - toolInput: { - title: 'Araç Girişi', - name: 'İsim', - required: 'Gerekli', - method: 'Yöntem', - methodSetting: 'Ayar', - methodSettingTip: 'Kullanıcı araç yapılandırmasını doldurur', - methodParameter: 'Parametre', - methodParameterTip: 'Çıkarım sırasında LLM tarafından doldurulur', - label: 'Etiketler', - labelPlaceholder: 'Etiketleri seç (isteğe bağlı)', - description: 'Açıklama', - descriptionPlaceholder: 'Parametrenin anlamının açıklaması', - }, - customDisclaimer: 'Özel feragatname', - customDisclaimerPlaceholder: 'Özel feragatnameyi girin', - confirmTitle: 'Kaydetmek için onaylıyor musunuz?', - confirmTip: 'Bu aracı kullanan uygulamalar etkilenecek', - deleteToolConfirmTitle: 'Bu Aracı silmek istiyor musunuz?', - deleteToolConfirmContent: 'Aracın silinmesi geri alınamaz. Kullanıcılar artık aracınıza erişemeyecek.', - toolOutput: { - title: 'Araç Çıktısı', - name: 'İsim', - reserved: 'Ayrılmış', - reservedParameterDuplicateTip: 'text, json ve dosyalar ayrılmış değişkenlerdir. Bu isimlere sahip değişkenler çıktı şemasında yer alamaz.', - description: 'Açıklama', - }, - }, - test: { - title: 'Test', - parametersValue: 'Parametreler ve Değer', - parameters: 'Parametreler', - value: 'Değer', - testResult: 'Test Sonuçları', - testResultPlaceholder: 'Test sonucu burada gösterilecektir', - }, - thought: { - using: 'Kullanılıyor', - used: 'Kullanıldı', - requestTitle: 'İstek', - responseTitle: 'Yanıt', - }, - setBuiltInTools: { - info: 'Bilgi', - setting: 'Ayar', - toolDescription: 'Araç açıklaması', - parameters: 'parametreler', - string: 'string', - number: 'numara', - required: 'Gerekli', - infoAndSetting: 'Bilgi ve Ayarlar', - file: 'dosya', - }, - noCustomTool: { - title: 'Özel araç yok!', - content: 'AI uygulamaları oluşturmak için özel araçlarınızı buraya ekleyin ve yönetin.', - createTool: 'Araç Oluştur', - }, - noSearchRes: { - title: 'Üzgünüz, sonuç bulunamadı!', - content: 'Aramanızla eşleşen araçlar bulamadık.', - reset: 'Aramayı Sıfırla', - }, - builtInPromptTitle: 'Prompt', - toolRemoved: 'Araç kaldırıldı', - notAuthorized: 'Araç yetkilendirilmedi', - howToGet: 'Nasıl alınır', - openInStudio: 'Studyoda Aç', - toolNameUsageTip: 'Agent akıl yürütme ve prompt için araç çağrı adı', - copyToolName: 'Adı Kopyala', - noTools: 'Araç bulunamadı', - mcp: { - create: { - cardTitle: 'MCP Sunucusu Ekle (HTTP)', - cardLink: 'MCP sunucu entegrasyonu hakkında daha fazla bilgi edinin', - }, - noConfigured: 'Yapılandırılmamış Sunucu', - updateTime: 'Güncellendi', - toolsCount: '{count} araç', - noTools: 'Kullanılabilir araç yok', - modal: { - title: 'MCP Sunucusu Ekle (HTTP)', - editTitle: 'MCP Sunucusunu Düzenle (HTTP)', - name: 'Ad ve Simge', - namePlaceholder: 'MCP sunucunuza ad verin', - serverUrl: 'Sunucu URL', - serverUrlPlaceholder: 'Sunucu endpoint URL', - serverUrlWarning: 'Sunucu adresini güncellemek, bu sunucuya bağımlı uygulamaları kesintiye uğratabilir', - serverIdentifier: 'Sunucu Tanımlayıcı', - serverIdentifierTip: 'Çalışma alanındaki MCP sunucusu için benzersiz tanımlayıcı. Sadece küçük harf, rakam, alt çizgi ve tire. En fazla 24 karakter.', - serverIdentifierPlaceholder: 'Benzersiz tanımlayıcı, örn. my-mcp-server', - serverIdentifierWarning: 'ID değiştirildikten sonra sunucu mevcut uygulamalar tarafından tanınmayacak', - cancel: 'İptal', - save: 'Kaydet', - confirm: 'Ekle ve Yetkilendir', - timeout: 'Zaman aşımı', - sseReadTimeout: 'SSE Okuma Zaman Aşımı', - headers: 'Başlıklar', - headerKeyPlaceholder: 'örneğin, Yetkilendirme', - addHeader: 'Başlık Ekle', - headerValue: 'Başlık Değeri', - noHeaders: 'Özel başlıklar yapılandırılmamış', - headerKey: 'Başlık Adı', - timeoutPlaceholder: 'otuz', - headersTip: 'MCP sunucu istekleri ile gönderilecek ek HTTP başlıkları', - headerValuePlaceholder: 'örneğin, Taşıyıcı jeton123', - maskedHeadersTip: 'Başlık değerleri güvenlik amacıyla gizlenmiştir. Değişiklikler gerçek değerleri güncelleyecektir.', - clientID: 'Müşteri Kimliği', - configurations: 'Yapılandırmalar', - clientSecretPlaceholder: 'İstemci Sırrı', - clientSecret: 'İstemci Sırrı', - authentication: 'Kimlik Doğrulama', - useDynamicClientRegistration: 'Dinamik İstemci Kaydını Kullan', - redirectUrlWarning: 'Lütfen OAuth yönlendirme URL\'nizi şu şekilde yapılandırın:', - }, - delete: 'MCP Sunucusunu Kaldır', - deleteConfirmTitle: '{mcp} kaldırılsın mı?', - operation: { - edit: 'Düzenle', - remove: 'Kaldır', - }, - authorize: 'Yetkilendir', - authorizing: 'Yetkilendiriliyor...', - authorizingRequired: 'Yetkilendirme gerekli', - authorizeTip: 'Yetkilendirmeden sonra araçlar burada görüntülenecektir.', - update: 'Güncelle', - updating: 'Güncelleniyor...', - gettingTools: 'Araçlar alınıyor...', - updateTools: 'Araçlar güncelleniyor...', - toolsEmpty: 'Araçlar yüklenmedi', - getTools: 'Araçları al', - toolUpdateConfirmTitle: 'Araç Listesini Güncelle', - toolUpdateConfirmContent: 'Araç listesini güncellemek mevcut uygulamaları etkileyebilir. Devam etmek istiyor musunuz?', - toolsNum: '{count} araç dahil', - onlyTool: '1 araç dahil', - identifier: 'Sunucu Tanımlayıcı (Kopyalamak için Tıklayın)', - server: { - title: 'MCP Sunucusu', - url: 'Sunucu URL', - reGen: 'Sunucu URL yeniden oluşturulsun mu?', - addDescription: 'Açıklama ekle', - edit: 'Açıklamayı düzenle', - modal: { - addTitle: 'MCP Sunucusunu etkinleştirmek için açıklama ekleyin', - editTitle: 'Açıklamayı düzenle', - description: 'Açıklama', - descriptionPlaceholder: 'Bu aracın ne yaptığını ve LLM tarafından nasıl kullanılması gerektiğini açıklayın', - parameters: 'Parametreler', - parametersTip: 'LLM\'nin amaçlarını ve kısıtlamalarını anlamasına yardımcı olmak için her parametreye açıklamalar ekleyin.', - parametersPlaceholder: 'Parametre amacı ve kısıtlamaları', - confirm: 'MCP Sunucusunu Etkinleştir', - }, - publishTip: 'Uygulama yayınlanmadı. Lütfen önce uygulamayı yayınlayın.', - }, - toolItem: { - parameters: 'Parametreler', - noDescription: 'Açıklama yok', - }, - }, - allTools: 'Tüm araçlar', -} - -export default translation diff --git a/web/i18n/tr-TR/workflow.json b/web/i18n/tr-TR/workflow.json new file mode 100644 index 0000000000..68f2f5be61 --- /dev/null +++ b/web/i18n/tr-TR/workflow.json @@ -0,0 +1,1294 @@ +{ + "common": { + "undo": "Geri Al", + "redo": "Yinele", + "editing": "Düzenleme", + "autoSaved": "Otomatik Kaydedildi", + "unpublished": "Yayınlanmamış", + "published": "Yayınlandı", + "publish": "Yayınla", + "update": "Güncelle", + "run": "Test çalıştır", + "running": "Çalışıyor", + "inRunMode": "Çalıştırma Modunda", + "inPreview": "Ön İzlemede", + "inPreviewMode": "Önizleme Modunda", + "preview": "Önizleme", + "viewRunHistory": "Çalıştırma geçmişini görüntüle", + "runHistory": "Çalıştırma Geçmişi", + "goBackToEdit": "Editöre geri dön", + "conversationLog": "Konuşma Günlüğü", + "debugAndPreview": "Önizleme", + "restart": "Yeniden Başlat", + "currentDraft": "Geçerli Taslak", + "currentDraftUnpublished": "Mevcut Taslak Yayınlanmamış", + "latestPublished": "Son Yayınlanan", + "publishedAt": "Yayınlandı", + "restore": "Geri Yükle", + "runApp": "Uygulamayı Çalıştır", + "batchRunApp": "Toplu Uygulama Çalıştır", + "accessAPIReference": "API Referansına Eriş", + "embedIntoSite": "Siteye Göm", + "addTitle": "Başlık ekle...", + "addDescription": "Açıklama ekle...", + "noVar": "Değişken yok", + "searchVar": "Değişkeni ara", + "variableNamePlaceholder": "Değişken adı", + "setVarValuePlaceholder": "Değişkeni ayarla", + "needConnectTip": "Bu adım hiçbir şeye bağlı değil", + "maxTreeDepth": "Her dal için maksimum {{depth}} düğüm limiti", + "workflowProcess": "Workflow Süreci", + "notRunning": "Henüz çalıştırılmadı", + "previewPlaceholder": "Sohbet Robotunu hata ayıklamak için aşağıdaki kutuya içerik girin", + "effectVarConfirm": { + "title": "Değişkeni Kaldır", + "content": "Değişken diğer düğümlerde kullanılıyor. Yine de kaldırmak istiyor musunuz?" + }, + "insertVarTip": "Hızlı eklemek için '/' tuşuna basın", + "processData": "Veriyi İşle", + "input": "Girdi", + "output": "Çıktı", + "jinjaEditorPlaceholder": "Değişken eklemek için '/' veya '{' yazın", + "viewOnly": "Sadece Görüntüleme", + "showRunHistory": "Çalıştırma Geçmişini Göster", + "enableJinja": "Jinja şablon desteğini etkinleştir", + "learnMore": "Daha Fazla Bilgi", + "copy": "Kopyala", + "duplicate": "Çoğalt", + "pasteHere": "Buraya Yapıştır", + "pointerMode": "İşaretçi Modu", + "handMode": "El Modu", + "model": "Model", + "workflowAsTool": "Araç Olarak Workflow", + "configureRequired": "Yapılandırma Gerekli", + "configure": "Yapılandır", + "manageInTools": "Araçlarda Yönet", + "workflowAsToolTip": "Workflow güncellemesinden sonra araç yeniden yapılandırması gereklidir.", + "viewDetailInTracingPanel": "Ayrıntıları görüntüle", + "syncingData": "Veriler senkronize ediliyor, birkaç saniye bekleyin.", + "importDSL": "DSL İçe Aktar", + "importDSLTip": "Geçerli taslak üzerine yazılacak. İçe aktarmadan önce workflow yedekleyin.", + "backupCurrentDraft": "Geçerli Taslağı Yedekleyin", + "chooseDSL": "DSL(yml) dosyasını seçin", + "overwriteAndImport": "Üzerine Yaz ve İçe Aktar", + "importFailure": "İçe Aktarma Başarısız", + "importSuccess": "İçe Aktarma Başarılı", + "parallelTip": { + "click": { + "desc": "Eklemek için", + "title": "Tık" + }, + "drag": { + "title": "Sürükleme", + "desc": "Bağlanmak için" + }, + "depthLimit": "{{num}} katmanlarının paralel iç içe geçme katmanı sınırı", + "limit": "Paralellik {{num}} dallarıyla sınırlıdır." + }, + "jumpToNode": "Bu düğüme atla", + "addParallelNode": "Paralel Düğüm Ekle", + "disconnect": "Ayırmak", + "parallel": "PARALEL", + "branch": "DAL", + "fileUploadTip": "Resim yükleme özellikleri, dosya yüklemeye yükseltildi.", + "ImageUploadLegacyTip": "Artık başlangıç formunda dosya türü değişkenleri oluşturabilirsiniz. Gelecekte resim yükleme özelliğini artık desteklemeyeceğiz.", + "importWarningDetails": "DSL sürüm farkı bazı özellikleri etkileyebilir", + "importWarning": "Dikkat", + "openInExplore": "Keşfet'te Aç", + "onFailure": "Başarısızlık Üzerine", + "addFailureBranch": "Başarısız dal ekle", + "loadMore": "Daha Fazla İş Akışı Yükleyin", + "noHistory": "Tarih Yok", + "exportPNG": "PNG olarak dışa aktar", + "exportImage": "Resmi Dışa Aktar", + "publishUpdate": "Güncellemeyi Yayınla", + "exitVersions": "Çıkış Sürümleri", + "versionHistory": "Sürüm Geçmişi", + "exportJPEG": "JPEG olarak dışa aktar", + "exportSVG": "SVG olarak dışa aktar", + "addBlock": "Düğüm Ekle", + "needAnswerNode": "Cevap düğümü eklenmelidir.", + "needOutputNode": "Çıktı düğümü eklenmelidir", + "tagBound": "Bu etiketi kullanan uygulama sayısı", + "currentView": "Geçerli Görünüm", + "currentWorkflow": "Mevcut İş Akışı", + "moreActions": "Daha Fazla Eylem", + "listening": "Dinleme", + "chooseStartNodeToRun": "Çalıştırmak için başlangıç düğümünü seçin", + "runAllTriggers": "Tüm tetikleyicileri çalıştır", + "features": "Özellikler", + "featuresDescription": "Web uygulaması kullanıcı deneyimini geliştirin", + "featuresDocLink": "Daha fazla bilgi edin", + "needAdd": "{{node}} düğümü eklenmelidir", + "needStartNode": "En az bir başlangıç düğümü eklenmelidir", + "workflowAsToolDisabledHint": "En son iş akışını yayınlayın ve bunu bir araç olarak yapılandırmadan önce bağlı bir Kullanıcı Girdisi düğümünün olduğundan emin olun." + }, + "env": { + "envPanelTitle": "Çevre Değişkenleri", + "envDescription": "Çevre değişkenleri özel bilgileri ve kimlik bilgilerini saklamak için kullanılabilir. Yalnızca okunabilirler ve dışa aktarım sırasında DSL dosyasından ayrılabilirler.", + "envPanelButton": "Değişken Ekle", + "modal": { + "title": "Çevre Değişkeni Ekle", + "editTitle": "Çevre Değişkenini Düzenle", + "type": "Tür", + "name": "Ad", + "namePlaceholder": "env adı", + "value": "Değer", + "valuePlaceholder": "env değeri", + "secretTip": "Hassas bilgileri veya verileri tanımlamak için kullanılır, bilgi sızıntısını önlemek için DSL ayarları yapılandırılmıştır.", + "description": "Açıklama", + "descriptionPlaceholder": "Değişkeni açıklayın" + }, + "export": { + "title": "Gizli çevre değişkenleri dışa aktarılsın mı?", + "checkbox": "Gizli değerleri dışa aktar", + "ignore": "DSL'yi dışa aktar", + "export": "Gizli değerlerle DSL'yi dışa aktar" + } + }, + "globalVar": { + "title": "Sistem Değişkenleri", + "description": "Sistem değişkenleri, tipi uyumlu olduğunda herhangi bir düğümün bağlantı gerektirmeden başvurabileceği küresel değişkenlerdir; örneğin son kullanıcı kimliği ve iş akışı kimliği.", + "fieldsDescription": { + "conversationId": "Konuşma Kimliği", + "dialogCount": "Konuşma Sayısı", + "userId": "Kullanıcı Kimliği", + "triggerTimestamp": "Uygulamanın çalışmaya başladığı zaman damgası", + "appId": "Uygulama Kimliği", + "workflowId": "İş Akışı Kimliği", + "workflowRunId": "İş akışı yürütme kimliği" + } + }, + "chatVariable": { + "panelTitle": "Konuşma Değişkenleri", + "panelDescription": "Konuşma Değişkenleri, LLM'nin hatırlaması gereken interaktif bilgileri (konuşma geçmişi, yüklenen dosyalar, kullanıcı tercihleri dahil) depolamak için kullanılır. Bunlar okunabilir ve yazılabilirdir.", + "docLink": "Daha fazla bilgi için belgelerimizi ziyaret edin.", + "button": "Değişken Ekle", + "modal": { + "title": "Konuşma Değişkeni Ekle", + "editTitle": "Konuşma Değişkenini Düzenle", + "name": "İsim", + "namePlaceholder": "Değişken adı", + "type": "Tür", + "value": "Varsayılan Değer", + "valuePlaceholder": "Varsayılan değer, ayarlanmaması için boş bırakın", + "description": "Açıklama", + "descriptionPlaceholder": "Değişkeni açıklayın", + "editInJSON": "JSON olarak düzenle", + "oneByOne": "Teker teker ekle", + "editInForm": "Formda düzenle", + "arrayValue": "Değer", + "addArrayValue": "Değer Ekle", + "objectKey": "Anahtar", + "objectType": "Tür", + "objectValue": "Varsayılan Değer" + }, + "storedContent": "Depolanan içerik", + "updatedAt": "Güncellenme zamanı: " + }, + "changeHistory": { + "title": "Değişiklik Geçmişi", + "placeholder": "Henüz hiçbir şey değiştirmediniz", + "clearHistory": "Geçmişi Temizle", + "hint": "İpucu", + "hintText": "Düzenleme işlemleriniz, bu oturum süresince cihazınızda saklanan bir değişiklik geçmişinde izlenir. Bu tarihçesi düzenleyiciden çıktığınızda temizlenir.", + "stepBackward_one": "{{count}} adım geri", + "stepBackward_other": "{{count}} adım geri", + "stepForward_one": "{{count}} adım ileri", + "stepForward_other": "{{count}} adım ileri", + "sessionStart": "Oturum Başladı", + "currentState": "Geçerli Durum", + "noteAdd": "Not eklendi", + "noteChange": "Not değiştirildi", + "noteDelete": "Not silindi", + "nodeDragStop": "Düğüm taşındı", + "nodeConnect": "Node bağlandı", + "nodeDescriptionChange": "Düğüm açıklaması değiştirildi", + "edgeDelete": "Düğüm bağlantısı kesildi", + "nodeChange": "Düğüm değişti", + "nodeDelete": "Düğüm silindi", + "nodeResize": "Düğüm boyutu değiştirildi", + "nodeTitleChange": "Düğüm başlığı değiştirildi", + "nodeAdd": "Düğüm eklendi", + "nodePaste": "Düğüm yapıştırıldı" + }, + "errorMsg": { + "fieldRequired": "{{field}} gereklidir", + "authRequired": "Yetkilendirme gereklidir", + "invalidJson": "{{field}} geçersiz JSON", + "fields": { + "variable": "Değişken Adı", + "variableValue": "Değişken Değeri", + "code": "Kod", + "model": "Model", + "rerankModel": "Yeniden Sıralama Modeli", + "visionVariable": "Vizyon Değişkeni" + }, + "invalidVariable": "Geçersiz değişken", + "rerankModelRequired": "Yeniden Sıralama Modelini açmadan önce, lütfen ayarlarda modelin başarıyla yapılandırıldığını onaylayın.", + "toolParameterRequired": "{{field}}: [{{param}}] parametresi gereklidir", + "noValidTool": "{{field}} geçerli bir araç seçilmedi", + "startNodeRequired": "Lütfen {{operation}} işleminden önce önce bir başlangıç düğümü ekleyin" + }, + "singleRun": { + "testRun": "Test Çalıştırma", + "startRun": "Çalıştırmayı Başlat", + "running": "Çalışıyor", + "testRunIteration": "Test Çalıştırma Yineleme", + "back": "Geri", + "iteration": "Yineleme", + "loop": "Döngü", + "reRun": "Yeniden çalıştır", + "preparingDataSource": "Veri Kaynağını Hazırlama" + }, + "tabs": { + "tools": "Araçlar", + "allTool": "Hepsi", + "customTool": "Özel", + "workflowTool": "Workflow", + "question-understand": "Soruyu Anlama", + "logic": "Mantık", + "transform": "Dönüştür", + "utilities": "Yardımcı Araçlar", + "noResult": "Eşleşen bulunamadı", + "searchTool": "Arama aracı", + "agent": "Temsilci Stratejisi", + "plugin": "Eklenti", + "blocks": "Düğümler", + "searchBlock": "Arama düğümü", + "allAdded": "Hepsi eklendi", + "addAll": "Hepsini ekle", + "sources": "Kaynak", + "searchDataSource": "Veri Kaynağında Arama Yapın", + "start": "Başlat", + "searchTrigger": "Arama tetikleyicileri...", + "allTriggers": "Tüm tetikleyiciler", + "noPluginsFound": "Hiç eklenti bulunamadı", + "requestToCommunity": "Topluluğa yapılan talepler", + "featuredTools": "Öne Çıkan", + "showMoreFeatured": "Daha fazla göster", + "showLessFeatured": "Daha az göster", + "installed": "Yüklendi", + "pluginByAuthor": "{{author}} tarafından", + "usePlugin": "Araç seç", + "hideActions": "Araçları gizle", + "noFeaturedPlugins": "Marketplace'te daha fazla araç keşfedin", + "noFeaturedTriggers": "Marketplace'te daha fazla tetikleyici keşfedin", + "startDisabledTip": "Tetikleyici düğümü ve kullanıcı girişi düğümü birbirini dışlar." + }, + "blocks": { + "start": "Başlat", + "end": "Çıktı", + "answer": "Yanıt", + "llm": "LLM", + "knowledge-retrieval": "Bilgi Geri Alımı", + "question-classifier": "Soru Sınıflandırıcı", + "if-else": "IF/ELSE", + "code": "Kod", + "template-transform": "Şablon", + "http-request": "HTTP İsteği", + "variable-assigner": "Değişken Ata", + "variable-aggregator": "Değişken Toplayıcı", + "assigner": "Değişken Atayıcı", + "iteration-start": "Yineleme Başlat", + "iteration": "Yineleme", + "parameter-extractor": "Parametre Çıkarıcı", + "list-operator": "Liste İşleci", + "document-extractor": "Doküman Çıkarıcı", + "agent": "Aracı", + "loop-start": "Döngü Başlangıcı", + "loop-end": "Döngüden Çık", + "loop": "Döngü", + "knowledge-index": "Bilgi bankası", + "datasource": "Veri Kaynağı", + "originalStartNode": "orijinal başlangıç düğümü", + "trigger-schedule": "Zamanlayıcı Tetikleyici", + "trigger-webhook": "Webhook Tetikleyici", + "trigger-plugin": "Eklenti Tetikleyicisi" + }, + "blocksAbout": { + "start": "Bir iş akışını başlatmak için başlangıç parametrelerini tanımlayın", + "end": "Bir iş akışının çıktısını ve sonuç türünü tanımlayın", + "answer": "Bir sohbet konuşmasının yanıt içeriğini tanımlayın", + "llm": "Büyük dil modellerini soruları yanıtlamak veya doğal dili işlemek için çağırın", + "knowledge-retrieval": "Kullanıcı sorularıyla ilgili metin içeriğini Bilgi'den sorgulamanıza olanak tanır", + "question-classifier": "Kullanıcı sorularının sınıflandırma koşullarını tanımlayın, LLM sınıflandırma açıklamasına dayalı olarak konuşmanın nasıl ilerleyeceğini tanımlayabilir", + "if-else": "İş akışını if/else koşullarına göre iki dala ayırmanızı sağlar", + "code": "Özel mantığı uygulamak için bir Python veya NodeJS kod parçası yürütün", + "template-transform": "Jinja şablon sözdizimini kullanarak verileri stringe dönüştürün", + "http-request": "HTTP protokolü üzerinden sunucu isteklerinin gönderilmesine izin verin", + "variable-assigner": "Çoklu dal değişkenlerini tek bir değişkende toplayın ve sonraki düğümler için birleşik bir yapılandırma sağlayın.", + "assigner": "Değişken atama düğümü, yazılabilir değişkenlere (konuşma değişkenleri gibi) değer atamak için kullanılır.", + "variable-aggregator": "Çoklu dal değişkenlerini tek bir değişkende toplayın ve sonraki düğümler için birleşik bir yapılandırma sağlayın.", + "iteration": "Bir liste nesnesinde birden fazla adım gerçekleştirir ve tüm sonuçlar çıkana kadar devam eder.", + "parameter-extractor": "Aracı çağırmak veya HTTP istekleri için doğal dilden yapılandırılmış parametreler çıkarmak için LLM kullanın.", + "document-extractor": "Yüklenen belgeleri LLM tarafından kolayca anlaşılabilen metin içeriğine ayrıştırmak için kullanılır.", + "list-operator": "Dizi içeriğini filtrelemek veya sıralamak için kullanılır.", + "agent": "Soruları yanıtlamak veya doğal dili işlemek için büyük dil modellerini çağırma", + "loop": "Sonlandırma koşulu karşılanana kadar veya maksimum döngü sayısına ulaşılana kadar bir mantık döngüsü çalıştırın.", + "loop-end": "\"break\" ile eşdeğerdir. Bu düğümün yapılandırma öğesi yoktur. Döngü gövdesi bu düğüme ulaştığında, döngü sona erer.", + "datasource": "Veri Kaynağı Hakkında", + "knowledge-index": "Bilgi tabanı hakkında", + "trigger-schedule": "Zaman tabanlı iş akışı tetikleyicisi, iş akışlarını bir takvime göre başlatır", + "trigger-webhook": "Webhook Tetikleyicisi, üçüncü taraf sistemlerden gelen HTTP iletilerini alarak iş akışlarını otomatik olarak başlatır.", + "trigger-plugin": "Üçüncü taraf entegrasyon tetikleyicisi, dış platform olaylarından iş akışlarını başlatır" + }, + "operator": { + "zoomIn": "Yakınlaştır", + "zoomOut": "Uzaklaştır", + "zoomTo50": "%50 Yakınlaştır", + "zoomTo100": "%100 Yakınlaştır", + "zoomToFit": "Sığdıracak Şekilde Yakınlaştır", + "alignCenter": "Orta", + "alignMiddle": "Orta", + "alignLeft": "Sol", + "alignNodes": "Düğümleri Hizala", + "vertical": "Dikey", + "alignRight": "Sağ", + "alignTop": "Üst", + "alignBottom": "Alt", + "selectionAlignment": "Seçim Hizalama", + "distributeHorizontal": "Yatay Dağıt", + "horizontal": "Yatay", + "distributeVertical": "Dikey Dağıt" + }, + "panel": { + "userInputField": "Kullanıcı Giriş Alanı", + "helpLink": "Yardım", + "about": "Hakkında", + "createdBy": "Oluşturan: ", + "nextStep": "Sonraki Adım", + "runThisStep": "Bu adımı çalıştır", + "checklist": "Kontrol Listesi", + "checklistTip": "Yayınlamadan önce tüm sorunların çözüldüğünden emin olun", + "checklistResolved": "Tüm sorunlar çözüldü", + "change": "Değiştir", + "optional": "(isteğe bağlı)", + "changeBlock": "Düğümü Değiştir", + "addNextStep": "Bu iş akışına bir sonraki adımı ekleyin", + "organizeBlocks": "Düğümleri düzenle", + "selectNextStep": "Sonraki Adımı Seç", + "minimize": "Tam Ekrandan Çık", + "maximize": "Kanvası Maksimize Et", + "scrollToSelectedNode": "Seçili düğüme kaydırma", + "optional_and_hidden": "(isteğe bağlı ve gizli)", + "goTo": "Git", + "startNode": "Başlangıç Düğümü", + "openWorkflow": "İş Akışını Aç" + }, + "nodes": { + "common": { + "outputVars": "Çıktı Değişkenleri", + "insertVarTip": "Değişken Ekle", + "memory": { + "memory": "Bellek", + "memoryTip": "Sohbet belleği ayarları", + "windowSize": "Pencere Boyutu", + "conversationRoleName": "Konuşma Rol Adı", + "user": "Kullanıcı ön eki", + "assistant": "Asistan ön eki" + }, + "memories": { + "title": "Bellekler", + "tip": "Sohbet belleği", + "builtIn": "Yerleşik" + }, + "errorHandle": { + "none": { + "title": "Hiç kimse", + "desc": "Bir özel durum oluşursa ve işlenmezse düğüm çalışmayı durdurur" + }, + "defaultValue": { + "title": "Varsayılan Değer", + "desc": "Bir hata oluştuğunda, statik bir çıkış içeriği belirtin.", + "tip": "Hata durumunda, değerin altına dönecektir.", + "inLog": "Düğüm istisnası, varsayılan değerlere göre çıktı.", + "output": "Çıktı Varsayılan Değeri" + }, + "failBranch": { + "title": "Başarısız Dal", + "desc": "Bir hata oluştuğunda, özel durum dalını yürütür", + "customize": "Başarısız dal mantığını özelleştirmek için tuvale gidin.", + "inLog": "Düğüm özel durumu, başarısız dalı otomatik olarak yürütür. Düğüm çıkışı bir hata türü ve hata mesajı döndürür ve bunları aşağı akışa iletir.", + "customizeTip": "Başarısız dal etkinleştirildiğinde, düğümler tarafından oluşturulan özel durumlar işlemi sonlandırmaz. Bunun yerine, önceden tanımlanmış hata dalını otomatik olarak yürüterek hata mesajları, raporlar, düzeltmeler veya atlama eylemleri sağlamanıza olanak tanır." + }, + "partialSucceeded": { + "tip": "İşlemde anormal şekilde çalışan {{num}} düğümleri var, lütfen günlükleri kontrol etmek için izlemeye gidin." + }, + "title": "Hata İşleme", + "tip": "Bir düğüm bir özel durumla karşılaştığında tetiklenen özel durum işleme stratejisi." + }, + "retry": { + "retry": "Yeni -den deneme", + "retryOnFailure": "Hata durumunda yeniden dene", + "maxRetries": "En fazla yeniden deneme", + "times": "kere", + "retries": "{{sayı}} Yeni -den deneme", + "retryFailed": "Yeniden deneme başarısız oldu", + "retryInterval": "Yeniden deneme aralığı", + "retryTimes": "Hata durumunda {{times}} kez yeniden deneyin", + "retryFailedTimes": "{{times}} yeniden denemeleri başarısız oldu", + "retrySuccessful": "Yeniden deneme başarılı", + "retrying": "Yeniden deneniyor...", + "ms": "Ms" + }, + "typeSwitch": { + "variable": "Değişken kullan", + "input": "Girdi değeri" + }, + "inputVars": "Giriş Değişkenleri", + "pluginNotInstalled": "Eklenti yüklü değil" + }, + "start": { + "required": "gerekli", + "inputField": "Giriş Alanı", + "builtInVar": "Yerleşik Değişkenler", + "outputVars": { + "query": "Kullanıcı girişi", + "memories": { + "des": "Konuşma geçmişi", + "type": "mesaj türü", + "content": "mesaj içeriği" + }, + "files": "Dosya listesi" + }, + "noVarTip": "İş Akışında kullanılabilecek girişleri ayarlayın" + }, + "end": { + "outputs": "Çıktılar", + "output": { + "type": "çıktı türü", + "variable": "çıktı değişkeni" + }, + "type": { + "none": "Yok", + "plain-text": "Düz Metin", + "structured": "Yapılandırılmış" + } + }, + "answer": { + "answer": "Yanıt", + "outputVars": "Çıktı Değişkenleri" + }, + "llm": { + "model": "model", + "variables": "değişkenler", + "context": "bağlam", + "contextTooltip": "Bağlam olarak Bilgi ekleyebilirsiniz", + "notSetContextInPromptTip": "Bağlam özelliğini etkinleştirmek için lütfen PROMPT içinde bağlam değişkenini doldurun.", + "prompt": "prompt", + "roleDescription": { + "system": "Konuşma için üst düzey talimatlar verin", + "user": "Modele talimatlar, sorgular veya herhangi bir metin tabanlı giriş sağlayın", + "assistant": "Modelin kullanıcı mesajlarına göre verdiği yanıtlar" + }, + "addMessage": "Mesaj Ekle", + "vision": "görsel", + "files": "Dosyalar", + "resolution": { + "name": "Çözünürlük", + "high": "Yüksek", + "low": "Düşük" + }, + "outputVars": { + "output": "İçerik Üret", + "reasoning_content": "Akıl yürütme içeriği", + "usage": "Model Kullanım Bilgileri" + }, + "singleRun": { + "variable": "Değişken" + }, + "sysQueryInUser": "sys.query kullanıcı mesajında gereklidir", + "jsonSchema": { + "warningTips": { + "saveSchema": "Lütfen şemayı kaydetmeden önce mevcut alanı düzenlemeyi tamamlayın." + }, + "apply": "Uygula", + "addField": "Alan Ekle", + "descriptionPlaceholder": "Açıklama ekleyin", + "title": "Yapılandırılmış Çıktı Şeması", + "generate": "Oluştur", + "fieldNamePlaceholder": "Alan Adı", + "doc": "Yapılandırılmış çıktı hakkında daha fazla bilgi edinin", + "instruction": "Talimat", + "promptTooltip": "Metin tanımını standart bir JSON Şeması yapısına dönüştür.", + "import": "JSON'den içe aktar", + "back": "Geri", + "promptPlaceholder": "JSON Şemanızı tanımlayın...", + "required": "gerekli", + "generatedResult": "Üretilen Sonuç", + "regenerate": "Yeniden üret", + "generateJsonSchema": "JSON Şeması Oluştur", + "stringValidations": "Dize Doğrulamaları", + "showAdvancedOptions": "Gelişmiş seçenekleri göster", + "resetDefaults": "Sıfırlama", + "generating": "JSON Şeması Oluşturuluyor...", + "generationTip": "Doğal dil kullanarak hızlıca bir JSON Şeması oluşturabilirsiniz.", + "addChildField": "Çocuk Alanı Ekle", + "resultTip": "İşte oluşturulan sonuç. Eğer memnun değilseniz, geri dönüp isteminizi değiştirebilirsiniz." + }, + "reasoningFormat": { + "separated": "Ayrı düşünce etiketleri", + "title": "Akıl yürütme etiket ayrımını etkinleştir", + "tagged": "Etiketleri düşünmeye devam et", + "tooltip": "Düşünce etiketlerinden içeriği çıkarın ve bunu reasoning_content alanında saklayın." + } + }, + "knowledgeRetrieval": { + "queryVariable": "Sorgu Değişkeni", + "knowledge": "Bilgi", + "outputVars": { + "output": "Geri alınmış parça verisi", + "content": "Parça içeriği", + "title": "Parça başlığı", + "icon": "Parça simgesi", + "url": "Parça URL'si", + "metadata": "Diğer meta veriler", + "files": "Alınan dosyalar" + }, + "metadata": { + "options": { + "disabled": { + "title": "Devre dışı bırakıldı.", + "subTitle": "Meta veri filtreleme özelliğini devre dışı bırakma" + }, + "automatic": { + "title": "Otomatik", + "desc": "Sorgu Değişkenine dayalı olarak otomatik olarak meta veri filtreleme koşulları oluşturun", + "subTitle": "Kullanıcı sorgusuna dayalı olarak otomatik olarak meta veri filtreleme koşulları oluşturun." + }, + "manual": { + "subTitle": "Manuel olarak meta veri filtreleme koşulları ekleyin", + "title": "Kılavuz" + } + }, + "panel": { + "add": "Koşul Ekle", + "select": "Değişkeni seç...", + "title": "Meta Verisi Filtre Koşulları", + "search": "Arama meta verileri", + "conditions": "Koşullar", + "placeholder": "Değer girin", + "datePlaceholder": "Bir zaman seçin..." + }, + "title": "Meta Verileri Filtreleme", + "tip": "Metadata filtreleme, bir sistem içinde ilgili bilgilerin alınmasını ince ayar ve kontrol etmek için metadata özniteliklerini (etiketler, kategoriler veya erişim izinleri gibi) kullanma sürecidir." + }, + "queryText": "Sorgu Metni", + "queryAttachment": "Sorgu Görüntüleri" + }, + "http": { + "inputVars": "Giriş Değişkenleri", + "api": "API", + "apiPlaceholder": "URL girin, değişken eklemek için ‘/’ tuşuna basın", + "notStartWithHttp": "API http:// veya https:// ile başlamalıdır", + "key": "Anahtar", + "value": "Değer", + "bulkEdit": "Toplu Düzenleme", + "keyValueEdit": "Anahtar-Değer Düzenleme", + "headers": "Başlıklar", + "params": "Parametreler", + "body": "Gövde", + "outputVars": { + "body": "Yanıt İçeriği", + "statusCode": "Yanıt Durum Kodu", + "headers": "Yanıt Başlık Listesi JSON", + "files": "Dosya Listesi" + }, + "authorization": { + "authorization": "Yetkilendirme", + "authorizationType": "Yetkilendirme Türü", + "no-auth": "Yok", + "api-key": "API Anahtarı", + "basic": "Temel", + "bearer": "Bearer", + "custom": "Özel", + "api-key-title": "API Anahtarı", + "header": "Başlık", + "auth-type": "Kimlik Doğrulama Türü" + }, + "insertVarPlaceholder": "değişkeni eklemek için '/' yazın", + "timeout": { + "title": "Zaman Aşımı", + "connectLabel": "Bağlantı Zaman Aşımı", + "connectPlaceholder": "Bağlantı zaman aşımını saniye cinsinden girin", + "readLabel": "Okuma Zaman Aşımı", + "readPlaceholder": "Okuma zaman aşımını saniye cinsinden girin", + "writeLabel": "Yazma Zaman Aşımı", + "writePlaceholder": "Yazma zaman aşımını saniye cinsinden girin" + }, + "type": "Tür", + "binaryFileVariable": "İkili Dosya Değişkeni", + "extractListPlaceholder": "Liste öğesi dizinini girin, '/' yazın değişken ekle", + "curl": { + "placeholder": "cURL dizesini buraya yapıştırın", + "title": "cURL'den içe aktar" + }, + "verifySSL": { + "title": "SSL Sertifikasını Doğrula", + "warningTooltip": "SSL doğrulamasını devre dışı bırakmak, üretim ortamları için önerilmez. Bu yalnızca geliştirme veya test aşamalarında kullanılmalıdır, çünkü bağlantıyı adam ortada saldırıları gibi güvenlik tehditlerine karşı savunmasız hale getirir." + } + }, + "code": { + "inputVars": "Giriş Değişkenleri", + "outputVars": "Çıktı Değişkenleri", + "advancedDependencies": "Gelişmiş Bağımlılıklar", + "advancedDependenciesTip": "Burada daha uzun sürede tüketilen veya varsayılan olarak yerleşik olmayan bazı ön yüklenmiş bağımlılıkları ekleyin", + "searchDependencies": "Bağımlılıkları Ara", + "syncFunctionSignature": "Senkrone işlev imzasını koda eşitle" + }, + "templateTransform": { + "inputVars": "Giriş Değişkenleri", + "code": "Kod", + "codeSupportTip": "Sadece Jinja2 destekler", + "outputVars": { + "output": "Dönüştürülmüş içerik" + } + }, + "ifElse": { + "if": "Eğer", + "else": "Değilse", + "elseDescription": "Eğer koşulu karşılanmadığında hangi mantığın çalıştırılması gerektiğini tanımlamak için kullanılır.", + "and": "ve", + "or": "veya", + "operator": "Operatör", + "notSetVariable": "Lütfen önce değişken ayarlayın", + "comparisonOperator": { + "contains": "içerir", + "not contains": "içermez", + "start with": "ile başlar", + "end with": "ile biter", + "is": "eşittir", + "is not": "eşit değildir", + "empty": "boş", + "not empty": "boş değil", + "null": "null", + "not null": "null değil", + "in": "içinde", + "not exists": "mevcut değil", + "all of": "Tümü", + "not in": "İçinde değil", + "exists": "Var", + "before": "önce", + "after": "sonra" + }, + "enterValue": "Değer girin", + "addCondition": "Koşul Ekle", + "conditionNotSetup": "Koşul AYARLANMADI", + "selectVariable": "Değişken seçin...", + "optionName": { + "localUpload": "Yerel Yükleme", + "video": "Video", + "audio": "Ses", + "url": "URL", + "image": "Resim", + "doc": "Doktor" + }, + "addSubVariable": "Alt Değişken", + "select": "Seçmek" + }, + "variableAssigner": { + "title": "Değişken ata", + "outputType": "Çıktı Türü", + "varNotSet": "Değişken ayarlanmadı", + "noVarTip": "Atanacak değişkenleri ekleyin", + "type": { + "string": "Metin", + "number": "Sayı", + "object": "Nesne", + "array": "Dizi" + }, + "aggregationGroup": "Toplama Grubu", + "aggregationGroupTip": "Bu özelliği etkinleştirmek, değişken toplayıcının birden fazla değişken setini toplamasına olanak tanır.", + "addGroup": "Grup Ekle", + "outputVars": { + "varDescribe": "{{groupName}} çıktısı" + }, + "setAssignVariable": "Atama değişkenini ayarla" + }, + "assigner": { + "assignedVariable": "Atanan Değişken", + "writeMode": "Yazma Modu", + "writeModeTip": "ATANAN DEĞİŞKEN bir dizi olduğunda, ekleme modu sona ekler.", + "over-write": "Üzerine Yaz", + "append": "Ekle", + "plus": "Artı", + "clear": "Temizle", + "setVariable": "Değişken Ayarla", + "variable": "Değişken", + "operations": { + "extend": "Uzatmak", + "overwrite": "Üzerine", + "over-write": "Üzerine", + "title": "İşlem", + "+=": "+=", + "clear": "Berrak", + "append": "Ekleme", + "/=": "/=", + "-=": "-=", + "*=": "*=", + "set": "Ayarlamak", + "remove-last": "Sonuncuyu Kaldır", + "remove-first": "İlkini kaldır" + }, + "variables": "Değişken", + "selectAssignedVariable": "Atanan değişkeni seçin...", + "setParameter": "Parametreyi ayarla...", + "varNotSet": "Değişken NOT Set", + "assignedVarsDescription": "Atanan değişkenler, konuşma değişkenleri gibi yazılabilir değişkenler olmalıdır.", + "noVarTip": "Değişken eklemek için \"+\" düğmesini tıklayın", + "noAssignedVars": "Kullanılabilir atanmış değişken yok" + }, + "tool": { + "inputVars": "Giriş Değişkenleri", + "outputVars": { + "text": "araç tarafından oluşturulan içerik", + "files": { + "title": "araç tarafından oluşturulan dosyalar", + "type": "Desteklenen tür. Şu anda sadece resim destekleniyor", + "transfer_method": "Transfer yöntemi. Değer remote_url veya local_file olabilir", + "url": "Resim URL'si", + "upload_file_id": "Yüklenen dosya kimliği" + }, + "json": "araç tarafından oluşturulan json" + }, + "authorize": "Yetkilendirmek", + "settings": "Ayarlar", + "insertPlaceholder2": "değişken ekle", + "insertPlaceholder1": "Yazın veya basın" + }, + "questionClassifiers": { + "model": "model", + "inputVars": "Giriş Değişkenleri", + "outputVars": { + "className": "Sınıf Adı", + "usage": "Model Kullanım Bilgileri" + }, + "class": "Sınıf", + "classNamePlaceholder": "Sınıf adınızı yazın", + "advancedSetting": "Gelişmiş Ayarlar", + "topicName": "Konu Adı", + "topicPlaceholder": "Konu adınızı yazın", + "addClass": "Sınıf Ekle", + "instruction": "Talimat", + "instructionTip": "Soru sınıflandırıcının soruları nasıl kategorize edeceğini daha iyi anlamasına yardımcı olmak için ek talimatlar girin.", + "instructionPlaceholder": "Talimatınızı yazın" + }, + "parameterExtractor": { + "inputVar": "Giriş Değişkeni", + "outputVars": { + "isSuccess": "Başarılı mı. Başarılı olduğunda değer 1, başarısız olduğunda değer 0'dır.", + "errorReason": "Hata Nedeni", + "usage": "Model Kullanım Bilgileri" + }, + "extractParameters": "Parametreleri Çıkar", + "importFromTool": "Araçlardan içe aktar", + "addExtractParameter": "Çıkarma Parametresi Ekle", + "addExtractParameterContent": { + "name": "Ad", + "namePlaceholder": "Çıkarma Parametresi Adı", + "type": "Tür", + "typePlaceholder": "Çıkarma Parametresi Türü", + "description": "Açıklama", + "descriptionPlaceholder": "Çıkarma Parametresi Açıklaması", + "required": "Gerekli", + "requiredContent": "Gerekli sadece model çıkarımı için referans olarak kullanılır ve parametre çıktısının zorunlu doğrulaması için kullanılmaz." + }, + "extractParametersNotSet": "Çıkarma Parametreleri ayarlanmadı", + "instruction": "Talimat", + "instructionTip": "Parametre çıkarıcının parametreleri nasıl çıkaracağını anlamasına yardımcı olmak için ek talimatlar girin.", + "advancedSetting": "Gelişmiş Ayarlar", + "reasoningMode": "Akıl Yürütme Modu", + "reasoningModeTip": "Modelin fonksiyon çağırma veya istemler için talimatlara yanıt verme yeteneğine bağlı olarak uygun akıl yürütme modunu seçebilirsiniz." + }, + "iteration": { + "deleteTitle": "Yineleme Düğümünü Sil?", + "deleteDesc": "Yineleme düğümünü silmek tüm alt düğümleri silecektir", + "input": "Giriş", + "output": "Çıkış Değişkenleri", + "iteration_one": "{{count}} Yineleme", + "iteration_other": "{{count}} Yineleme", + "currentIteration": "Mevcut Yineleme", + "ErrorMethod": { + "operationTerminated": "Sonlandırıldı", + "continueOnError": "Hata Üzerine Devam Et", + "removeAbnormalOutput": "anormal çıktıyı kaldır" + }, + "parallelModeUpper": "PARALEL MOD", + "parallelMode": "Paralel Mod", + "MaxParallelismTitle": "Maksimum paralellik", + "error_one": "{{sayı}} Hata", + "errorResponseMethod": "Hata yanıtı yöntemi", + "comma": ",", + "parallelModeEnableTitle": "Paralel Mod Etkin", + "error_other": "{{sayı}} Hata", + "parallelPanelDesc": "Paralel modda, yinelemedeki görevler paralel yürütmeyi destekler.", + "answerNodeWarningDesc": "Paralel mod uyarısı: Yinelemeler içindeki yanıt düğümleri, konuşma değişkeni atamaları ve kalıcı okuma/yazma işlemleri özel durumlara neden olabilir.", + "parallelModeEnableDesc": "Paralel modda, yinelemeler içindeki görevler paralel yürütmeyi destekler. Bunu sağdaki özellikler panelinde yapılandırabilirsiniz.", + "MaxParallelismDesc": "Maksimum paralellik, tek bir yinelemede aynı anda yürütülen görevlerin sayısını kontrol etmek için kullanılır.", + "flattenOutput": "Çıktıyı Düzleştir", + "flattenOutputDesc": "Etkinleştirildiğinde, eğer tüm yineleme çıktıları dizilerse, bunlar tek bir dizi halinde düzleştirilecektir. Devre dışı bırakıldığında ise çıktılar iç içe diziler şeklini koruyacaktır." + }, + "note": { + "addNote": "Not Ekle", + "editor": { + "placeholder": "Notunuzu yazın...", + "small": "Küçük", + "medium": "Orta", + "large": "Büyük", + "bold": "Kalın", + "italic": "İtalik", + "strikethrough": "Üstü Çizili", + "link": "Bağlantı", + "openLink": "Aç", + "unlink": "Bağlantıyı Kaldır", + "enterUrl": "URL girin...", + "invalidUrl": "Geçersiz URL", + "bulletList": "Madde İşaretli Liste", + "showAuthor": "Yazarı Göster" + } + }, + "docExtractor": { + "outputVars": { + "text": "Ayıklanan metin" + }, + "learnMore": "Daha fazla bilgi edinin", + "inputVar": "Giriş Değişkeni", + "supportFileTypes": "Destek dosya türleri: {{types}}." + }, + "listFilter": { + "outputVars": { + "result": "Filtre sonucu", + "first_record": "İlk kayıt", + "last_record": "Son kayıt" + }, + "filterConditionComparisonOperator": "Filtre Koşulu Karşılaştırma İşleci", + "filterCondition": "Filtre Koşulu", + "limit": "İlk N", + "asc": "ASC", + "inputVar": "Giriş Değişkeni", + "filterConditionKey": "Filtre Koşulu Anahtarı", + "orderBy": "Sıralama ölçütü", + "filterConditionComparisonValue": "Filtre Koşulu değeri", + "selectVariableKeyPlaceholder": "Alt değişken anahtarını seçin", + "desc": "DESC", + "extractsCondition": "N öğesini ayıklayın" + }, + "agent": { + "strategy": { + "searchPlaceholder": "Arama aracısı stratejisi", + "selectTip": "Ajan stratejisi seçin", + "label": "Ajan Stratejisi", + "configureTip": "Lütfen ajan stratejisini yapılandırın.", + "configureTipDesc": "Aracı stratejiyi yapılandırdıktan sonra, bu düğüm kalan yapılandırmaları otomatik olarak yükleyecektir. Strateji, çok adımlı araç akıl yürütme mekanizmasını etkileyecektir.", + "shortLabel": "Strateji", + "tooltip": "Farklı Agentic stratejileri, sistemin çok adımlı araç çağrılarını nasıl planladığını ve yürüttüğünü belirler" + }, + "pluginInstaller": { + "install": "Yüklemek", + "installing": "Yükleme" + }, + "modelNotInMarketplace": { + "desc": "Bu model Yerel veya GitHub deposundan yüklenir. Lütfen kurulumdan sonra kullanın.", + "title": "Model yüklü değil", + "manageInPlugins": "Eklentilerde Yönet" + }, + "modelNotSupport": { + "descForVersionSwitch": "Yüklenen eklenti sürümü bu modeli sağlamaz. Sürümü değiştirmek için tıklayın.", + "title": "Desteklenmeyen Model", + "desc": "Yüklenen eklenti sürümü bu modeli sağlamaz." + }, + "modelSelectorTooltips": { + "deprecated": "Bu model kullanım dışıdır" + }, + "outputVars": { + "files": { + "upload_file_id": "Dosya kimliğini karşıya yükle", + "type": "Destek türü. Şimdi sadece görüntüyü destekleyin", + "transfer_method": "Transfer yöntemi. Değer remote_url veya local_file", + "title": "Aracı Tarafından Oluşturulan Dosyalar", + "url": "Resim url'si" + }, + "text": "Temsilci Tarafından Oluşturulan İçerik", + "usage": "Model Kullanım Bilgileri", + "json": "Aracı tarafından oluşturulan JSON" + }, + "checkList": { + "strategyNotSelected": "Strateji seçilmedi" + }, + "installPlugin": { + "changelog": "Değişiklik günlüğü", + "cancel": "İptal", + "install": "Yüklemek", + "title": "Eklentiyi Yükle", + "desc": "Aşağıdaki eklentiyi yüklemek üzere" + }, + "configureModel": "Modeli Yapılandır", + "toolNotInstallTooltip": "{{tool}} yüklü değil", + "unsupportedStrategy": "Desteklenmeyen strateji", + "notAuthorized": "Yetkili Değil", + "tools": "Araçları", + "strategyNotFoundDesc": "Yüklenen eklenti sürümü bu stratejiyi sağlamaz.", + "strategyNotSet": "Ajan stratejisi Belirlenmedi", + "pluginNotFoundDesc": "Bu eklenti GitHub'dan yüklenmiştir. Lütfen şuraya gidin: Eklentiler yeniden yüklemek için", + "strategyNotFoundDescAndSwitchVersion": "Yüklenen eklenti sürümü bu stratejiyi sağlamaz. Sürümü değiştirmek için tıklayın.", + "pluginNotInstalledDesc": "Bu eklenti GitHub'dan yüklenmiştir. Lütfen şuraya gidin: Eklentiler yeniden yüklemek için", + "learnMore": "Daha fazla bilgi edinin", + "linkToPlugin": "Eklentilere Bağlantı", + "modelNotInstallTooltip": "Bu model yüklü değil", + "toolbox": "Araç", + "modelNotSelected": "Model seçilmedi", + "pluginNotInstalled": "Bu eklenti yüklü değil", + "maxIterations": "Maksimum Yineleme", + "strategyNotInstallTooltip": "{{strateji}} yüklü değil", + "toolNotAuthorizedTooltip": "{{araç}} Yetkili Değil", + "model": "model", + "parameterSchema": "Parametre Şeması", + "clickToViewParameterSchema": "Parametre şemasını görüntülemek için tıklayın" + }, + "loop": { + "ErrorMethod": { + "operationTerminated": "Sonlandırıldı", + "removeAbnormalOutput": "Anormal Çıktıyı Kaldır", + "continueOnError": "Hata ile Devam Et" + }, + "loopNode": "Döngü Düğümü", + "output": "Çıktı Değişkeni", + "exitConditionTip": "Bir döngü düğümünün en az bir çıkış koşuluna ihtiyacı vardır.", + "inputMode": "Giriş Modu", + "setLoopVariables": "Döngü kapsamı içinde değişkenleri ayarla", + "loopMaxCount": "Maksimum Döngü Sayısı", + "input": "Girdi", + "breakCondition": "Döngü Sonlandırma Koşulu", + "comma": ",", + "finalLoopVariables": "Son Döngü Değişkenleri", + "initialLoopVariables": "İlk Döngü Değişkenleri", + "errorResponseMethod": "Hata Yanıt Yöntemi", + "deleteTitle": "Döngü Düğümünü Sil?", + "totalLoopCount": "Toplam döngü sayısı: {{count}}", + "currentLoop": "Mevcut Döngü", + "loopMaxCountError": "Lütfen 1 ile {{maxCount}} arasında geçerli bir maksimum döngü sayısı girin.", + "variableName": "Değişken Adı", + "deleteDesc": "Döngü düğümünü silmek, tüm alt düğümleri kaldıracaktır.", + "breakConditionTip": "Sadece sonlandırma koşulları olan döngüler içindeki değişkenler ve konuşma değişkenleri referans alınabilir.", + "loop_other": "{{count}} Döngü", + "currentLoopCount": "Mevcut döngü sayısı: {{count}}", + "error_one": "{{count}} Hata", + "error_other": "{{count}} Hata", + "loop_one": "{{count}} Döngü", + "loopVariables": "Döngü Değişkenleri" + }, + "dataSource": { + "add": "Veri kaynağı ekleme", + "supportedFileFormatsPlaceholder": "Dosya uzantısı, e.g. doc", + "supportedFileFormats": "Desteklenen dosya biçimleri" + }, + "knowledgeBase": { + "chunkStructureTip": { + "learnMore": "Daha fazla bilgi edinin", + "title": "Lütfen bir yığın yapısı seçin", + "message": "Dify Bilgi Bankası üç parçalı yapıyı destekler: Genel, Üst-alt ve Soru-Cevap. Her bilgi tabanı yalnızca bir yapıya sahip olabilir. Önceki düğümden gelen çıktı, seçilen öbek yapısıyla hizalanmalıdır. Yığın yapısı seçiminin mevcut dizin yöntemlerini etkilediğini unutmayın." + }, + "chooseChunkStructure": "Bir yığın yapısı seçin", + "chunkIsRequired": "Yığın yapısı gereklidir", + "chunkStructure": "Yığın Yapısı", + "indexMethodIsRequired": "İndeks yöntemi gereklidir", + "aboutRetrieval": "geri alma yöntemi hakkında.", + "retrievalSettingIsRequired": "Alma ayarı gereklidir", + "changeChunkStructure": "Yığın Yapısını Değiştir", + "chunksInput": "Parçalar", + "chunksInputTip": "Bilgi tabanı düğümünün girdi değişkeni 'Chunks'tır. Değişkenin tipi, seçilen parça yapısıyla tutarlı olması gereken belirli bir JSON Şemasına sahip bir nesnedir.", + "embeddingModelIsRequired": "Gömme modeli gereklidir", + "chunksVariableIsRequired": "Chunks değişkeni gereklidir", + "rerankingModelIsRequired": "Yeniden sıralama modeli gereklidir", + "rerankingModelIsInvalid": "Yeniden sıralama modeli geçersiz", + "embeddingModelIsInvalid": "Gömme modeli geçersiz" + }, + "triggerPlugin": { + "authorized": "Yetkili", + "notConfigured": "Yapılandırılmadı", + "notAuthorized": "Yetkisiz", + "selectSubscription": "Abonelik Seç", + "availableSubscriptions": "Mevcut Abonelikler", + "addSubscription": "Yeni Abonelik Ekle", + "removeSubscription": "Aboneliği Kaldır", + "subscriptionRemoved": "Abonelik başarıyla kaldırıldı", + "error": "Hata", + "configuration": "Yapılandırma", + "remove": "Kaldır", + "or": "VEYA", + "useOAuth": "OAuth Kullan", + "useApiKey": "API Anahtarını Kullan", + "authenticationFailed": "Kimlik doğrulama başarısız", + "authenticationSuccess": "Kimlik doğrulama başarılı", + "oauthConfigFailed": "OAuth yapılandırması başarısız oldu", + "configureOAuthClient": "OAuth İstemcisini Yapılandır", + "oauthClientDescription": "Kimlik doğrulamayı etkinleştirmek için OAuth istemci kimlik bilgilerini yapılandırın", + "oauthClientSaved": "OAuth istemci yapılandırması başarıyla kaydedildi", + "configureApiKey": "API Anahtarını Yapılandır", + "apiKeyDescription": "Kimlik doğrulama için API anahtarı kimlik bilgilerini yapılandırın", + "apiKeyConfigured": "API anahtarı başarıyla yapılandırıldı", + "configurationFailed": "Yapılandırma başarısız", + "failedToStart": "Kimlik doğrulama akışı başlatılamadı", + "credentialsVerified": "Kimlik bilgileri başarıyla doğrulandı", + "credentialVerificationFailed": "Kimlik bilgileri doğrulaması başarısız oldu", + "verifyAndContinue": "Doğrula ve Devam Et", + "configureParameters": "Parametreleri Yapılandır", + "parametersDescription": "Tetikleyici parametrelerini ve özelliklerini yapılandır", + "configurationComplete": "Yapılandırma Tamamlandı", + "configurationCompleteDescription": "Tetikleyiciniz başarıyla yapılandırıldı", + "configurationCompleteMessage": "Tetikleyici yapılandırmanız artık tamamlandı ve kullanıma hazır.", + "parameters": "Parametreler", + "properties": "Özellikler", + "propertiesDescription": "Bu tetikleyici için ek yapılandırma özellikleri", + "noConfigurationRequired": "Bu tetikleyici için ek yapılandırma gerekmez.", + "subscriptionName": "Abonelik Adı", + "subscriptionNameDescription": "Bu tetikleyici aboneliği için benzersiz bir ad girin", + "subscriptionNamePlaceholder": "Abonelik adını girin...", + "subscriptionNameRequired": "Abonelik adı gereklidir", + "subscriptionRequired": "Abonelik gereklidir" + }, + "triggerSchedule": { + "title": "Program", + "nodeTitle": "Zamanlayıcı Tetikleyici", + "notConfigured": "Yapılandırılmadı", + "useCronExpression": "Cron ifadesi kullan", + "useVisualPicker": "Görsel seçici kullan", + "frequency": { + "label": "FREKANSLIK", + "hourly": "Saatlik", + "daily": "Günlük", + "weekly": "Haftalık", + "monthly": "Aylık" + }, + "selectFrequency": "Frekansı seç", + "frequencyLabel": "Frekans", + "nextExecution": "Bir sonraki idam", + "weekdays": "Hafta günleri", + "time": "Zaman", + "cronExpression": "Cron ifadesi", + "nextExecutionTime": "SONRAKİ YÜRÜTME ZAMANI", + "nextExecutionTimes": "Sonraki 5 yürütme zamanı", + "startTime": "Başlangıç Saati", + "executeNow": "Şimdi yürüt", + "selectDateTime": "Tarih ve Saat Seç", + "hours": "Saatler", + "minutes": "Dakikalar", + "onMinute": "On Dakika", + "days": "Günler", + "lastDay": "Son gün", + "lastDayTooltip": "Tüm ayların 31 günü yoktur. Her ayın son gününü seçmek için 'son gün' seçeneğini kullanın.", + "mode": "Moda", + "timezone": "Saat dilimi", + "visualConfig": "Görsel Konfigürasyon", + "monthlyDay": "Aylık Gün", + "executionTime": "Çalıştırma Süresi", + "invalidTimezone": "Geçersiz saat dilimi", + "invalidCronExpression": "Geçersiz cron ifadesi", + "noValidExecutionTime": "Geçerli bir yürütme süresi hesaplanamıyor", + "executionTimeCalculationError": "Çalıştırma süreleri hesaplanamadı", + "invalidFrequency": "Geçersiz frekans", + "invalidStartTime": "Geçersiz başlangıç zamanı", + "startTimeMustBeFuture": "Başlangıç zamanı gelecekte olmalıdır", + "invalidTimeFormat": "Geçersiz saat formatı (beklenen HH:MM AM/PM)", + "invalidWeekday": "Geçersiz hafta günü: {{weekday}}", + "invalidMonthlyDay": "Aylık gün 1-31 arasında veya \"son\" olmalıdır", + "invalidOnMinute": "Dakika 0-59 arasında olmalıdır", + "invalidExecutionTime": "Geçersiz yürütme süresi", + "executionTimeMustBeFuture": "Yürütme zamanı gelecekte olmalıdır" + }, + "triggerWebhook": { + "title": "Webhook Tetikleyici", + "nodeTitle": "🔗 Webhook Tetikleyici", + "configPlaceholder": "Webhook tetikleyici yapılandırması burada uygulanacak", + "webhookUrl": "Webhook URL", + "webhookUrlPlaceholder": "Webhook URL'si oluşturmak için oluştur'a tıklayın", + "generate": "Oluştur", + "copy": "Kopyala", + "test": "Test", + "urlGenerated": "Webhook URL başarıyla oluşturuldu", + "urlGenerationFailed": "Webhook URL'si oluşturulamadı", + "urlCopied": "URL panoya kopyalandı", + "method": "Yöntem", + "contentType": "İçerik Türü", + "queryParameters": "Sorgu Parametreleri", + "headerParameters": "Başlık Parametreleri", + "requestBodyParameters": "İstek Gövdesi Parametreleri", + "parameterName": "Değişken adı", + "varName": "Değişken adı", + "varType": "Tür", + "varNamePlaceholder": "Değişken adı girin...", + "required": "Gerekli", + "addParameter": "Ekle", + "addHeader": "Ekle", + "noParameters": "Hiç parametre yapılandırılmadı", + "noQueryParameters": "Sorgu parametresi yapılandırılmadı", + "noHeaders": "Başlıklar yapılandırılmamış", + "noBodyParameters": "Hiçbir gövde parametresi yapılandırılmamış", + "debugUrlTitle": "Test çalışmaları için her zaman bu URL'yi kullanın", + "debugUrlCopy": "Kopyalamak için tıkla", + "debugUrlCopied": "Kopyalandı!", + "debugUrlPrivateAddressWarning": "Bu URL dahili bir adres gibi görünüyor ve bu, webhook isteklerinin başarısız olmasına neden olabilir. TRIGGER_URL'i halka açık bir adresle değiştirebilirsiniz.", + "errorHandling": "Hata Yönetimi", + "errorStrategy": "Hata Yönetimi", + "responseConfiguration": "Yanıt", + "asyncMode": "Asenkron Mod", + "statusCode": "Durum Kodu", + "responseBody": "Yanıt Gövdesi", + "responseBodyPlaceholder": "Yanıt metninizi buraya yazın", + "headers": "Başlıklar", + "validation": { + "webhookUrlRequired": "Webhook URL'si gerekli", + "invalidParameterType": "\"{{name}}\" parametresi için geçersiz parametre türü \"{{type}}\"" + } + } + }, + "tracing": { + "stopBy": "{{user}} tarafından durduruldu" + }, + "variableReference": { + "assignedVarsDescription": "Atanan değişkenler, örneğin yazılabilir değişkenler olmalıdır", + "noAvailableVars": "Kullanılabilir değişken yok", + "conversationVars": "Konuşma değişkenleri", + "noVarsForOperation": "Seçilen işlemle atanabilecek değişken yok.", + "noAssignedVars": "Kullanılabilir atanmış değişken yok" + }, + "versionHistory": { + "filter": { + "reset": "Filtreyi Sıfırla", + "onlyYours": "Sadece senin", + "empty": "Eşleşen bir sürüm geçmişi bulunamadı.", + "all": "Her şey", + "onlyShowNamedVersions": "Sadece adlandırılmış sürümleri göster" + }, + "editField": { + "releaseNotesLengthLimit": "Sürüm notları {{limit}} karakteri geçemez", + "titleLengthLimit": "Başlık {{limit}} karakteri geçemez.", + "title": "Başlık", + "releaseNotes": "Sürüm Notları" + }, + "action": { + "restoreSuccess": "Sürüm geri yüklendi", + "deleteFailure": "Versiyonu silme işlemi başarısız oldu", + "restoreFailure": "Sürümü geri yüklemekte başarısız olundu", + "updateFailure": "Sürüm güncellenemedi", + "updateSuccess": "Sürüm güncellendi", + "deleteSuccess": "Sürüm silindi", + "copyIdSuccess": "Kimlik panoya kopyalandı" + }, + "latest": "Sonuncu", + "currentDraft": "Mevcut Taslak", + "restorationTip": "Sürüm geri yüklemeden sonra, mevcut taslak üzerine yazılacak.", + "title": "Sürümler", + "defaultName": "Başlıksız Versiyon", + "editVersionInfo": "Sürüm bilgilerini düzenle", + "releaseNotesPlaceholder": "Değişen şeyleri tanımlayın", + "nameThisVersion": "Bu versiyona isim ver", + "deletionTip": "Silme işlemi geri alınamaz, lütfen onaylayın.", + "copyId": "ID Kopyala" + }, + "debug": { + "noData": { + "runThisNode": "Bu düğümü çalıştır", + "description": "Son çalışmanın sonuçları burada gösterilecektir." + }, + "variableInspect": { + "trigger": { + "clear": "Açık", + "running": "Önbellek çalışma durumu", + "normal": "Değişken İncele", + "cached": "Önbelleklenmiş değişkenleri görüntüle", + "stop": "Koşmayı durdur" + }, + "envNode": "Çevre", + "title": "Değişken İncele", + "edited": "Düzenlenmiş", + "chatNode": "Konuşma", + "resetConversationVar": "Konuşma değişkenini varsayılan değere sıfırla", + "emptyLink": "Daha fazla öğrenin", + "clearAll": "Hepsini sıfırla", + "systemNode": "Sistem", + "clearNode": "Önbelleklenmiş değişkeni temizle", + "reset": "Son çalıştırma değerine sıfırla", + "view": "Günlüğü görüntüle", + "emptyTip": "Bir düğümü kanvas üzerinde geçtikten veya bir düğümü adım adım çalıştırdıktan sonra, Düğüm Değişkeni'ndeki mevcut değeri Değişken İncele'de görüntüleyebilirsiniz.", + "export": "Ihracat", + "largeDataNoExport": "Büyük veri - yalnızca kısmi önizleme", + "largeData": "Büyük veri, salt okunur önizleme. Tümünü görüntülemek için dışa aktarın.", + "exportToolTip": "Değişkeni Dosya Olarak Dışa Aktar", + "listening": { + "title": "Tetikleyicilerden olaylar dinleniyor...", + "tip": "Artık test istekleri göndererek HTTP {{nodeName}} uç noktasında olay tetikleyicilerini simüle edebilir veya canlı olay hata ayıklama için bir geri arama URL'si olarak kullanabilirsiniz. Tüm çıktılar, Değişken Denetleyicisinde doğrudan görüntülenebilir.", + "tipPlugin": "Artık {{- pluginName}} içinde etkinlikler oluşturabilir ve bu etkinliklerden elde edilen çıktıları Değişken Denetleyicisinde görebilirsiniz.", + "tipSchedule": "Zamanlayıcı tetikleyicilerinden etkinlikleri dinleme. Bir sonraki planlanan çalıştırma: {{nextTriggerTime}}", + "tipFallback": "Gelen tetikleyici olaylarını bekleyin. Çıktılar burada görünecektir.", + "defaultNodeName": "bu tetik", + "defaultPluginName": "bu eklenti tetikleyici", + "defaultScheduleTime": "Yapılandırılmadı", + "selectedTriggers": "seçilen tetikleyiciler", + "stopButton": "Dur" + } + }, + "lastRunTab": "Son Koşu", + "settingsTab": "Ayarlar", + "relations": { + "noDependents": "Bakmakla yükümlü olunan kişi yok", + "dependentsDescription": "Bu düğüme dayanan düğümler", + "dependenciesDescription": "Bu düğümün dayandığı düğümler", + "dependencies": "Bağımlılık", + "dependents": "Bağımlı", + "noDependencies": "Bağımlılık yok" + }, + "relationsTab": "Ilişkiler", + "copyLastRun": "Son Çalışmayı Kopyala", + "noLastRunFound": "Önceki çalışmaya rastlanmadı.", + "noMatchingInputsFound": "Son çalışmadan eşleşen giriş bulunamadı.", + "copyLastRunError": "Son çalışma girdilerini kopyalamak başarısız oldu.", + "lastOutput": "Son Çıktı", + "lastRunInputsCopied": "Son çalıştırmadan {{count}} girdi kopyalandı" + }, + "sidebar": { + "exportWarning": "Mevcut Kaydedilmiş Versiyonu Dışa Aktar", + "exportWarningDesc": "Bu, çalışma akışınızın mevcut kaydedilmiş sürümünü dışa aktaracaktır. Editörde kaydedilmemiş değişiklikleriniz varsa, lütfen önce bunları çalışma akışı alanındaki dışa aktarma seçeneğini kullanarak kaydedin." + }, + "publishLimit": { + "startNodeTitlePrefix": "Yükselt", + "startNodeTitleSuffix": "her iş akışı için sınırsız tetikleyici aç", + "startNodeDesc": "Bu plan için bir iş akışında 2 tetikleyici sınırına ulaştınız. Bu iş akışını yayınlamak için yükseltme yapın." + }, + "error": { + "startNodeRequired": "Lütfen {{operation}} işleminden önce önce bir başlangıç düğümü ekleyin", + "operations": { + "connectingNodes": "düğümleri bağlamak", + "addingNodes": "düğüm ekleme", + "modifyingWorkflow": "iş akışını değiştirme", + "updatingWorkflow": "iş akışını güncelleme" + } + }, + "customWebhook": "Özel Webhook", + "difyTeam": "Dify Ekibi", + "triggerStatus": { + "enabled": "TETİK", + "disabled": "TETİKLEYİCİ • DEVRE DIŞI" + }, + "entryNodeStatus": { + "enabled": "BAŞLAT", + "disabled": "BAŞLAT • ENGELLİ" + }, + "onboarding": { + "title": "Başlamak için bir başlangıç düğümü seçin", + "description": "Farklı başlangıç düğümlerinin farklı yetenekleri vardır. Endişelenmeyin, bunları her zaman daha sonra değiştirebilirsiniz.", + "userInputFull": "Kullanıcı Girdisi (orijinal başlangıç düğümü)", + "userInputDescription": "Kullanıcı giriş değişkenlerini ayarlamaya imkan veren başlangıç düğümü; araç olarak web uygulaması, servis API'si, MCP sunucusu ve iş akışı özelliklerine sahiptir.", + "trigger": "Tetik", + "triggerDescription": "Tetikleyiciler, zamanlanmış görevler, özel web kancaları veya diğer uygulamalarla entegrasyonlar gibi bir iş akışının başlangıç düğümü olarak hizmet edebilir.", + "back": "Geri", + "learnMore": "Daha fazla bilgi edin", + "aboutStartNode": "başlangıç düğümü hakkında.", + "escTip": { + "press": "Basın", + "key": "esc", + "toDismiss": "reddetmek" + } + } +} diff --git a/web/i18n/tr-TR/workflow.ts b/web/i18n/tr-TR/workflow.ts deleted file mode 100644 index b32b0b31e4..0000000000 --- a/web/i18n/tr-TR/workflow.ts +++ /dev/null @@ -1,1296 +0,0 @@ -const translation = { - common: { - undo: 'Geri Al', - redo: 'Yinele', - editing: 'Düzenleme', - autoSaved: 'Otomatik Kaydedildi', - unpublished: 'Yayınlanmamış', - published: 'Yayınlandı', - publish: 'Yayınla', - update: 'Güncelle', - run: 'Test çalıştır', - running: 'Çalışıyor', - inRunMode: 'Çalıştırma Modunda', - inPreview: 'Ön İzlemede', - inPreviewMode: 'Önizleme Modunda', - preview: 'Önizleme', - viewRunHistory: 'Çalıştırma geçmişini görüntüle', - runHistory: 'Çalıştırma Geçmişi', - goBackToEdit: 'Editöre geri dön', - conversationLog: 'Konuşma Günlüğü', - debugAndPreview: 'Önizleme', - restart: 'Yeniden Başlat', - currentDraft: 'Geçerli Taslak', - currentDraftUnpublished: 'Mevcut Taslak Yayınlanmamış', - latestPublished: 'Son Yayınlanan', - publishedAt: 'Yayınlandı', - restore: 'Geri Yükle', - runApp: 'Uygulamayı Çalıştır', - batchRunApp: 'Toplu Uygulama Çalıştır', - accessAPIReference: 'API Referansına Eriş', - embedIntoSite: 'Siteye Göm', - addTitle: 'Başlık ekle...', - addDescription: 'Açıklama ekle...', - noVar: 'Değişken yok', - searchVar: 'Değişkeni ara', - variableNamePlaceholder: 'Değişken adı', - setVarValuePlaceholder: 'Değişkeni ayarla', - needConnectTip: 'Bu adım hiçbir şeye bağlı değil', - maxTreeDepth: 'Her dal için maksimum {{depth}} düğüm limiti', - workflowProcess: 'Workflow Süreci', - notRunning: 'Henüz çalıştırılmadı', - previewPlaceholder: 'Sohbet Robotunu hata ayıklamak için aşağıdaki kutuya içerik girin', - effectVarConfirm: { - title: 'Değişkeni Kaldır', - content: 'Değişken diğer düğümlerde kullanılıyor. Yine de kaldırmak istiyor musunuz?', - }, - insertVarTip: 'Hızlı eklemek için \'/\' tuşuna basın', - processData: 'Veriyi İşle', - input: 'Girdi', - output: 'Çıktı', - jinjaEditorPlaceholder: 'Değişken eklemek için \'/\' veya \'{\' yazın', - viewOnly: 'Sadece Görüntüleme', - showRunHistory: 'Çalıştırma Geçmişini Göster', - enableJinja: 'Jinja şablon desteğini etkinleştir', - learnMore: 'Daha Fazla Bilgi', - copy: 'Kopyala', - duplicate: 'Çoğalt', - pasteHere: 'Buraya Yapıştır', - pointerMode: 'İşaretçi Modu', - handMode: 'El Modu', - model: 'Model', - workflowAsTool: 'Araç Olarak Workflow', - configureRequired: 'Yapılandırma Gerekli', - configure: 'Yapılandır', - manageInTools: 'Araçlarda Yönet', - workflowAsToolTip: 'Workflow güncellemesinden sonra araç yeniden yapılandırması gereklidir.', - viewDetailInTracingPanel: 'Ayrıntıları görüntüle', - syncingData: 'Veriler senkronize ediliyor, birkaç saniye bekleyin.', - importDSL: 'DSL İçe Aktar', - importDSLTip: 'Geçerli taslak üzerine yazılacak. İçe aktarmadan önce workflow yedekleyin.', - backupCurrentDraft: 'Geçerli Taslağı Yedekleyin', - chooseDSL: 'DSL(yml) dosyasını seçin', - overwriteAndImport: 'Üzerine Yaz ve İçe Aktar', - importFailure: 'İçe Aktarma Başarısız', - importSuccess: 'İçe Aktarma Başarılı', - parallelTip: { - click: { - desc: 'Eklemek için', - title: 'Tık', - }, - drag: { - title: 'Sürükleme', - desc: 'Bağlanmak için', - }, - depthLimit: '{{num}} katmanlarının paralel iç içe geçme katmanı sınırı', - limit: 'Paralellik {{num}} dallarıyla sınırlıdır.', - }, - jumpToNode: 'Bu düğüme atla', - addParallelNode: 'Paralel Düğüm Ekle', - disconnect: 'Ayırmak', - parallel: 'PARALEL', - branch: 'DAL', - fileUploadTip: 'Resim yükleme özellikleri, dosya yüklemeye yükseltildi.', - ImageUploadLegacyTip: 'Artık başlangıç formunda dosya türü değişkenleri oluşturabilirsiniz. Gelecekte resim yükleme özelliğini artık desteklemeyeceğiz.', - importWarningDetails: 'DSL sürüm farkı bazı özellikleri etkileyebilir', - importWarning: 'Dikkat', - openInExplore: 'Keşfet\'te Aç', - onFailure: 'Başarısızlık Üzerine', - addFailureBranch: 'Başarısız dal ekle', - loadMore: 'Daha Fazla İş Akışı Yükleyin', - noHistory: 'Tarih Yok', - exportPNG: 'PNG olarak dışa aktar', - exportImage: 'Resmi Dışa Aktar', - publishUpdate: 'Güncellemeyi Yayınla', - exitVersions: 'Çıkış Sürümleri', - versionHistory: 'Sürüm Geçmişi', - exportJPEG: 'JPEG olarak dışa aktar', - exportSVG: 'SVG olarak dışa aktar', - addBlock: 'Düğüm Ekle', - needAnswerNode: 'Cevap düğümü eklenmelidir.', - needOutputNode: 'Çıktı düğümü eklenmelidir', - tagBound: 'Bu etiketi kullanan uygulama sayısı', - currentView: 'Geçerli Görünüm', - currentWorkflow: 'Mevcut İş Akışı', - moreActions: 'Daha Fazla Eylem', - listening: 'Dinleme', - chooseStartNodeToRun: 'Çalıştırmak için başlangıç düğümünü seçin', - runAllTriggers: 'Tüm tetikleyicileri çalıştır', - features: 'Özellikler', - featuresDescription: 'Web uygulaması kullanıcı deneyimini geliştirin', - featuresDocLink: 'Daha fazla bilgi edin', - needAdd: '{{node}} düğümü eklenmelidir', - needStartNode: 'En az bir başlangıç düğümü eklenmelidir', - workflowAsToolDisabledHint: 'En son iş akışını yayınlayın ve bunu bir araç olarak yapılandırmadan önce bağlı bir Kullanıcı Girdisi düğümünün olduğundan emin olun.', - }, - env: { - envPanelTitle: 'Çevre Değişkenleri', - envDescription: 'Çevre değişkenleri özel bilgileri ve kimlik bilgilerini saklamak için kullanılabilir. Yalnızca okunabilirler ve dışa aktarım sırasında DSL dosyasından ayrılabilirler.', - envPanelButton: 'Değişken Ekle', - modal: { - title: 'Çevre Değişkeni Ekle', - editTitle: 'Çevre Değişkenini Düzenle', - type: 'Tür', - name: 'Ad', - namePlaceholder: 'env adı', - value: 'Değer', - valuePlaceholder: 'env değeri', - secretTip: 'Hassas bilgileri veya verileri tanımlamak için kullanılır, bilgi sızıntısını önlemek için DSL ayarları yapılandırılmıştır.', - description: 'Açıklama', - descriptionPlaceholder: 'Değişkeni açıklayın', - }, - export: { - title: 'Gizli çevre değişkenleri dışa aktarılsın mı?', - checkbox: 'Gizli değerleri dışa aktar', - ignore: 'DSL\'yi dışa aktar', - export: 'Gizli değerlerle DSL\'yi dışa aktar', - }, - }, - globalVar: { - title: 'Sistem Değişkenleri', - description: 'Sistem değişkenleri, tipi uyumlu olduğunda herhangi bir düğümün bağlantı gerektirmeden başvurabileceği küresel değişkenlerdir; örneğin son kullanıcı kimliği ve iş akışı kimliği.', - fieldsDescription: { - conversationId: 'Konuşma Kimliği', - dialogCount: 'Konuşma Sayısı', - userId: 'Kullanıcı Kimliği', - triggerTimestamp: 'Uygulamanın çalışmaya başladığı zaman damgası', - appId: 'Uygulama Kimliği', - workflowId: 'İş Akışı Kimliği', - workflowRunId: 'İş akışı yürütme kimliği', - }, - }, - chatVariable: { - panelTitle: 'Konuşma Değişkenleri', - panelDescription: 'Konuşma Değişkenleri, LLM\'nin hatırlaması gereken interaktif bilgileri (konuşma geçmişi, yüklenen dosyalar, kullanıcı tercihleri dahil) depolamak için kullanılır. Bunlar okunabilir ve yazılabilirdir.', - docLink: 'Daha fazla bilgi için belgelerimizi ziyaret edin.', - button: 'Değişken Ekle', - modal: { - title: 'Konuşma Değişkeni Ekle', - editTitle: 'Konuşma Değişkenini Düzenle', - name: 'İsim', - namePlaceholder: 'Değişken adı', - type: 'Tür', - value: 'Varsayılan Değer', - valuePlaceholder: 'Varsayılan değer, ayarlanmaması için boş bırakın', - description: 'Açıklama', - descriptionPlaceholder: 'Değişkeni açıklayın', - editInJSON: 'JSON olarak düzenle', - oneByOne: 'Teker teker ekle', - editInForm: 'Formda düzenle', - arrayValue: 'Değer', - addArrayValue: 'Değer Ekle', - objectKey: 'Anahtar', - objectType: 'Tür', - objectValue: 'Varsayılan Değer', - }, - storedContent: 'Depolanan içerik', - updatedAt: 'Güncellenme zamanı: ', - }, - changeHistory: { - title: 'Değişiklik Geçmişi', - placeholder: 'Henüz hiçbir şey değiştirmediniz', - clearHistory: 'Geçmişi Temizle', - hint: 'İpucu', - hintText: 'Düzenleme işlemleriniz, bu oturum süresince cihazınızda saklanan bir değişiklik geçmişinde izlenir. Bu tarihçesi düzenleyiciden çıktığınızda temizlenir.', - stepBackward_one: '{{count}} adım geri', - stepBackward_other: '{{count}} adım geri', - stepForward_one: '{{count}} adım ileri', - stepForward_other: '{{count}} adım ileri', - sessionStart: 'Oturum Başladı', - currentState: 'Geçerli Durum', - noteAdd: 'Not eklendi', - noteChange: 'Not değiştirildi', - noteDelete: 'Not silindi', - nodeDragStop: 'Düğüm taşındı', - nodeConnect: 'Node bağlandı', - nodeDescriptionChange: 'Düğüm açıklaması değiştirildi', - edgeDelete: 'Düğüm bağlantısı kesildi', - nodeChange: 'Düğüm değişti', - nodeDelete: 'Düğüm silindi', - nodeResize: 'Düğüm boyutu değiştirildi', - nodeTitleChange: 'Düğüm başlığı değiştirildi', - nodeAdd: 'Düğüm eklendi', - nodePaste: 'Düğüm yapıştırıldı', - }, - errorMsg: { - fieldRequired: '{{field}} gereklidir', - authRequired: 'Yetkilendirme gereklidir', - invalidJson: '{{field}} geçersiz JSON', - fields: { - variable: 'Değişken Adı', - variableValue: 'Değişken Değeri', - code: 'Kod', - model: 'Model', - rerankModel: 'Yeniden Sıralama Modeli', - visionVariable: 'Vizyon Değişkeni', - }, - invalidVariable: 'Geçersiz değişken', - rerankModelRequired: 'Yeniden Sıralama Modelini açmadan önce, lütfen ayarlarda modelin başarıyla yapılandırıldığını onaylayın.', - toolParameterRequired: '{{field}}: [{{param}}] parametresi gereklidir', - noValidTool: '{{field}} geçerli bir araç seçilmedi', - startNodeRequired: 'Lütfen {{operation}} işleminden önce önce bir başlangıç düğümü ekleyin', - }, - singleRun: { - testRun: 'Test Çalıştırma', - startRun: 'Çalıştırmayı Başlat', - running: 'Çalışıyor', - testRunIteration: 'Test Çalıştırma Yineleme', - back: 'Geri', - iteration: 'Yineleme', - loop: 'Döngü', - reRun: 'Yeniden çalıştır', - preparingDataSource: 'Veri Kaynağını Hazırlama', - }, - tabs: { - 'tools': 'Araçlar', - 'allTool': 'Hepsi', - 'customTool': 'Özel', - 'workflowTool': 'Workflow', - 'question-understand': 'Soruyu Anlama', - 'logic': 'Mantık', - 'transform': 'Dönüştür', - 'utilities': 'Yardımcı Araçlar', - 'noResult': 'Eşleşen bulunamadı', - 'searchTool': 'Arama aracı', - 'agent': 'Temsilci Stratejisi', - 'plugin': 'Eklenti', - 'blocks': 'Düğümler', - 'searchBlock': 'Arama düğümü', - 'allAdded': 'Hepsi eklendi', - 'addAll': 'Hepsini ekle', - 'sources': 'Kaynak', - 'searchDataSource': 'Veri Kaynağında Arama Yapın', - 'start': 'Başlat', - 'searchTrigger': 'Arama tetikleyicileri...', - 'allTriggers': 'Tüm tetikleyiciler', - 'noPluginsFound': 'Hiç eklenti bulunamadı', - 'requestToCommunity': 'Topluluğa yapılan talepler', - 'featuredTools': 'Öne Çıkan', - 'showMoreFeatured': 'Daha fazla göster', - 'showLessFeatured': 'Daha az göster', - 'installed': 'Yüklendi', - 'pluginByAuthor': '{{author}} tarafından', - 'usePlugin': 'Araç seç', - 'hideActions': 'Araçları gizle', - 'noFeaturedPlugins': 'Marketplace\'te daha fazla araç keşfedin', - 'noFeaturedTriggers': 'Marketplace\'te daha fazla tetikleyici keşfedin', - 'startDisabledTip': 'Tetikleyici düğümü ve kullanıcı girişi düğümü birbirini dışlar.', - }, - blocks: { - 'start': 'Başlat', - 'end': 'Çıktı', - 'answer': 'Yanıt', - 'llm': 'LLM', - 'knowledge-retrieval': 'Bilgi Geri Alımı', - 'question-classifier': 'Soru Sınıflandırıcı', - 'if-else': 'IF/ELSE', - 'code': 'Kod', - 'template-transform': 'Şablon', - 'http-request': 'HTTP İsteği', - 'variable-assigner': 'Değişken Ata', - 'variable-aggregator': 'Değişken Toplayıcı', - 'assigner': 'Değişken Atayıcı', - 'iteration-start': 'Yineleme Başlat', - 'iteration': 'Yineleme', - 'parameter-extractor': 'Parametre Çıkarıcı', - 'list-operator': 'Liste İşleci', - 'document-extractor': 'Doküman Çıkarıcı', - 'agent': 'Aracı', - 'loop-start': 'Döngü Başlangıcı', - 'loop-end': 'Döngüden Çık', - 'loop': 'Döngü', - 'knowledge-index': 'Bilgi bankası', - 'datasource': 'Veri Kaynağı', - 'originalStartNode': 'orijinal başlangıç düğümü', - 'trigger-schedule': 'Zamanlayıcı Tetikleyici', - 'trigger-webhook': 'Webhook Tetikleyici', - 'trigger-plugin': 'Eklenti Tetikleyicisi', - }, - blocksAbout: { - 'start': 'Bir iş akışını başlatmak için başlangıç parametrelerini tanımlayın', - 'end': 'Bir iş akışının çıktısını ve sonuç türünü tanımlayın', - 'answer': 'Bir sohbet konuşmasının yanıt içeriğini tanımlayın', - 'llm': 'Büyük dil modellerini soruları yanıtlamak veya doğal dili işlemek için çağırın', - 'knowledge-retrieval': 'Kullanıcı sorularıyla ilgili metin içeriğini Bilgi\'den sorgulamanıza olanak tanır', - 'question-classifier': 'Kullanıcı sorularının sınıflandırma koşullarını tanımlayın, LLM sınıflandırma açıklamasına dayalı olarak konuşmanın nasıl ilerleyeceğini tanımlayabilir', - 'if-else': 'İş akışını if/else koşullarına göre iki dala ayırmanızı sağlar', - 'code': 'Özel mantığı uygulamak için bir Python veya NodeJS kod parçası yürütün', - 'template-transform': 'Jinja şablon sözdizimini kullanarak verileri stringe dönüştürün', - 'http-request': 'HTTP protokolü üzerinden sunucu isteklerinin gönderilmesine izin verin', - 'variable-assigner': 'Çoklu dal değişkenlerini tek bir değişkende toplayın ve sonraki düğümler için birleşik bir yapılandırma sağlayın.', - 'assigner': 'Değişken atama düğümü, yazılabilir değişkenlere (konuşma değişkenleri gibi) değer atamak için kullanılır.', - 'variable-aggregator': 'Çoklu dal değişkenlerini tek bir değişkende toplayın ve sonraki düğümler için birleşik bir yapılandırma sağlayın.', - 'iteration': 'Bir liste nesnesinde birden fazla adım gerçekleştirir ve tüm sonuçlar çıkana kadar devam eder.', - 'parameter-extractor': 'Aracı çağırmak veya HTTP istekleri için doğal dilden yapılandırılmış parametreler çıkarmak için LLM kullanın.', - 'document-extractor': 'Yüklenen belgeleri LLM tarafından kolayca anlaşılabilen metin içeriğine ayrıştırmak için kullanılır.', - 'list-operator': 'Dizi içeriğini filtrelemek veya sıralamak için kullanılır.', - 'agent': 'Soruları yanıtlamak veya doğal dili işlemek için büyük dil modellerini çağırma', - 'loop': 'Sonlandırma koşulu karşılanana kadar veya maksimum döngü sayısına ulaşılana kadar bir mantık döngüsü çalıştırın.', - 'loop-end': '"break" ile eşdeğerdir. Bu düğümün yapılandırma öğesi yoktur. Döngü gövdesi bu düğüme ulaştığında, döngü sona erer.', - 'datasource': 'Veri Kaynağı Hakkında', - 'knowledge-index': 'Bilgi tabanı hakkında', - 'trigger-schedule': 'Zaman tabanlı iş akışı tetikleyicisi, iş akışlarını bir takvime göre başlatır', - 'trigger-webhook': 'Webhook Tetikleyicisi, üçüncü taraf sistemlerden gelen HTTP iletilerini alarak iş akışlarını otomatik olarak başlatır.', - 'trigger-plugin': 'Üçüncü taraf entegrasyon tetikleyicisi, dış platform olaylarından iş akışlarını başlatır', - }, - operator: { - zoomIn: 'Yakınlaştır', - zoomOut: 'Uzaklaştır', - zoomTo50: '%50 Yakınlaştır', - zoomTo100: '%100 Yakınlaştır', - zoomToFit: 'Sığdıracak Şekilde Yakınlaştır', - alignCenter: 'Orta', - alignMiddle: 'Orta', - alignLeft: 'Sol', - alignNodes: 'Düğümleri Hizala', - vertical: 'Dikey', - alignRight: 'Sağ', - alignTop: 'Üst', - alignBottom: 'Alt', - selectionAlignment: 'Seçim Hizalama', - distributeHorizontal: 'Yatay Dağıt', - horizontal: 'Yatay', - distributeVertical: 'Dikey Dağıt', - }, - panel: { - userInputField: 'Kullanıcı Giriş Alanı', - helpLink: 'Yardım', - about: 'Hakkında', - createdBy: 'Oluşturan: ', - nextStep: 'Sonraki Adım', - runThisStep: 'Bu adımı çalıştır', - checklist: 'Kontrol Listesi', - checklistTip: 'Yayınlamadan önce tüm sorunların çözüldüğünden emin olun', - checklistResolved: 'Tüm sorunlar çözüldü', - change: 'Değiştir', - optional: '(isteğe bağlı)', - changeBlock: 'Düğümü Değiştir', - addNextStep: 'Bu iş akışına bir sonraki adımı ekleyin', - organizeBlocks: 'Düğümleri düzenle', - selectNextStep: 'Sonraki Adımı Seç', - minimize: 'Tam Ekrandan Çık', - maximize: 'Kanvası Maksimize Et', - scrollToSelectedNode: 'Seçili düğüme kaydırma', - optional_and_hidden: '(isteğe bağlı ve gizli)', - goTo: 'Git', - startNode: 'Başlangıç Düğümü', - openWorkflow: 'İş Akışını Aç', - }, - nodes: { - common: { - outputVars: 'Çıktı Değişkenleri', - insertVarTip: 'Değişken Ekle', - memory: { - memory: 'Bellek', - memoryTip: 'Sohbet belleği ayarları', - windowSize: 'Pencere Boyutu', - conversationRoleName: 'Konuşma Rol Adı', - user: 'Kullanıcı ön eki', - assistant: 'Asistan ön eki', - }, - memories: { - title: 'Bellekler', - tip: 'Sohbet belleği', - builtIn: 'Yerleşik', - }, - errorHandle: { - none: { - title: 'Hiç kimse', - desc: 'Bir özel durum oluşursa ve işlenmezse düğüm çalışmayı durdurur', - }, - defaultValue: { - title: 'Varsayılan Değer', - desc: 'Bir hata oluştuğunda, statik bir çıkış içeriği belirtin.', - tip: 'Hata durumunda, değerin altına dönecektir.', - inLog: 'Düğüm istisnası, varsayılan değerlere göre çıktı.', - output: 'Çıktı Varsayılan Değeri', - }, - failBranch: { - title: 'Başarısız Dal', - desc: 'Bir hata oluştuğunda, özel durum dalını yürütür', - customize: 'Başarısız dal mantığını özelleştirmek için tuvale gidin.', - inLog: 'Düğüm özel durumu, başarısız dalı otomatik olarak yürütür. Düğüm çıkışı bir hata türü ve hata mesajı döndürür ve bunları aşağı akışa iletir.', - customizeTip: 'Başarısız dal etkinleştirildiğinde, düğümler tarafından oluşturulan özel durumlar işlemi sonlandırmaz. Bunun yerine, önceden tanımlanmış hata dalını otomatik olarak yürüterek hata mesajları, raporlar, düzeltmeler veya atlama eylemleri sağlamanıza olanak tanır.', - }, - partialSucceeded: { - tip: 'İşlemde anormal şekilde çalışan {{num}} düğümleri var, lütfen günlükleri kontrol etmek için izlemeye gidin.', - }, - title: 'Hata İşleme', - tip: 'Bir düğüm bir özel durumla karşılaştığında tetiklenen özel durum işleme stratejisi.', - }, - retry: { - retry: 'Yeni -den deneme', - retryOnFailure: 'Hata durumunda yeniden dene', - maxRetries: 'En fazla yeniden deneme', - times: 'kere', - retries: '{{sayı}} Yeni -den deneme', - retryFailed: 'Yeniden deneme başarısız oldu', - retryInterval: 'Yeniden deneme aralığı', - retryTimes: 'Hata durumunda {{times}} kez yeniden deneyin', - retryFailedTimes: '{{times}} yeniden denemeleri başarısız oldu', - retrySuccessful: 'Yeniden deneme başarılı', - retrying: 'Yeniden deneniyor...', - ms: 'Ms', - }, - typeSwitch: { - variable: 'Değişken kullan', - input: 'Girdi değeri', - }, - inputVars: 'Giriş Değişkenleri', - pluginNotInstalled: 'Eklenti yüklü değil', - }, - start: { - required: 'gerekli', - inputField: 'Giriş Alanı', - builtInVar: 'Yerleşik Değişkenler', - outputVars: { - query: 'Kullanıcı girişi', - memories: { - des: 'Konuşma geçmişi', - type: 'mesaj türü', - content: 'mesaj içeriği', - }, - files: 'Dosya listesi', - }, - noVarTip: 'İş Akışında kullanılabilecek girişleri ayarlayın', - }, - end: { - outputs: 'Çıktılar', - output: { - type: 'çıktı türü', - variable: 'çıktı değişkeni', - }, - type: { - 'none': 'Yok', - 'plain-text': 'Düz Metin', - 'structured': 'Yapılandırılmış', - }, - }, - answer: { - answer: 'Yanıt', - outputVars: 'Çıktı Değişkenleri', - }, - llm: { - model: 'model', - variables: 'değişkenler', - context: 'bağlam', - contextTooltip: 'Bağlam olarak Bilgi ekleyebilirsiniz', - notSetContextInPromptTip: 'Bağlam özelliğini etkinleştirmek için lütfen PROMPT içinde bağlam değişkenini doldurun.', - prompt: 'prompt', - roleDescription: { - system: 'Konuşma için üst düzey talimatlar verin', - user: 'Modele talimatlar, sorgular veya herhangi bir metin tabanlı giriş sağlayın', - assistant: 'Modelin kullanıcı mesajlarına göre verdiği yanıtlar', - }, - addMessage: 'Mesaj Ekle', - vision: 'görsel', - files: 'Dosyalar', - resolution: { - name: 'Çözünürlük', - high: 'Yüksek', - low: 'Düşük', - }, - outputVars: { - output: 'İçerik Üret', - reasoning_content: 'Akıl yürütme içeriği', - usage: 'Model Kullanım Bilgileri', - }, - singleRun: { - variable: 'Değişken', - }, - sysQueryInUser: 'sys.query kullanıcı mesajında gereklidir', - jsonSchema: { - warningTips: { - saveSchema: 'Lütfen şemayı kaydetmeden önce mevcut alanı düzenlemeyi tamamlayın.', - }, - apply: 'Uygula', - addField: 'Alan Ekle', - descriptionPlaceholder: 'Açıklama ekleyin', - title: 'Yapılandırılmış Çıktı Şeması', - generate: 'Oluştur', - fieldNamePlaceholder: 'Alan Adı', - doc: 'Yapılandırılmış çıktı hakkında daha fazla bilgi edinin', - instruction: 'Talimat', - promptTooltip: 'Metin tanımını standart bir JSON Şeması yapısına dönüştür.', - import: 'JSON\'den içe aktar', - back: 'Geri', - promptPlaceholder: 'JSON Şemanızı tanımlayın...', - required: 'gerekli', - generatedResult: 'Üretilen Sonuç', - regenerate: 'Yeniden üret', - generateJsonSchema: 'JSON Şeması Oluştur', - stringValidations: 'Dize Doğrulamaları', - showAdvancedOptions: 'Gelişmiş seçenekleri göster', - resetDefaults: 'Sıfırlama', - generating: 'JSON Şeması Oluşturuluyor...', - generationTip: 'Doğal dil kullanarak hızlıca bir JSON Şeması oluşturabilirsiniz.', - addChildField: 'Çocuk Alanı Ekle', - resultTip: 'İşte oluşturulan sonuç. Eğer memnun değilseniz, geri dönüp isteminizi değiştirebilirsiniz.', - }, - reasoningFormat: { - separated: 'Ayrı düşünce etiketleri', - title: 'Akıl yürütme etiket ayrımını etkinleştir', - tagged: 'Etiketleri düşünmeye devam et', - tooltip: 'Düşünce etiketlerinden içeriği çıkarın ve bunu reasoning_content alanında saklayın.', - }, - }, - knowledgeRetrieval: { - queryVariable: 'Sorgu Değişkeni', - knowledge: 'Bilgi', - outputVars: { - output: 'Geri alınmış parça verisi', - content: 'Parça içeriği', - title: 'Parça başlığı', - icon: 'Parça simgesi', - url: 'Parça URL\'si', - metadata: 'Diğer meta veriler', - files: 'Alınan dosyalar', - }, - metadata: { - options: { - disabled: { - title: 'Devre dışı bırakıldı.', - subTitle: 'Meta veri filtreleme özelliğini devre dışı bırakma', - }, - automatic: { - title: 'Otomatik', - desc: 'Sorgu Değişkenine dayalı olarak otomatik olarak meta veri filtreleme koşulları oluşturun', - subTitle: 'Kullanıcı sorgusuna dayalı olarak otomatik olarak meta veri filtreleme koşulları oluşturun.', - }, - manual: { - subTitle: 'Manuel olarak meta veri filtreleme koşulları ekleyin', - title: 'Kılavuz', - }, - }, - panel: { - add: 'Koşul Ekle', - select: 'Değişkeni seç...', - title: 'Meta Verisi Filtre Koşulları', - search: 'Arama meta verileri', - conditions: 'Koşullar', - placeholder: 'Değer girin', - datePlaceholder: 'Bir zaman seçin...', - }, - title: 'Meta Verileri Filtreleme', - tip: 'Metadata filtreleme, bir sistem içinde ilgili bilgilerin alınmasını ince ayar ve kontrol etmek için metadata özniteliklerini (etiketler, kategoriler veya erişim izinleri gibi) kullanma sürecidir.', - }, - queryText: 'Sorgu Metni', - queryAttachment: 'Sorgu Görüntüleri', - }, - http: { - inputVars: 'Giriş Değişkenleri', - api: 'API', - apiPlaceholder: 'URL girin, değişken eklemek için ‘/’ tuşuna basın', - notStartWithHttp: 'API http:// veya https:// ile başlamalıdır', - key: 'Anahtar', - value: 'Değer', - bulkEdit: 'Toplu Düzenleme', - keyValueEdit: 'Anahtar-Değer Düzenleme', - headers: 'Başlıklar', - params: 'Parametreler', - body: 'Gövde', - outputVars: { - body: 'Yanıt İçeriği', - statusCode: 'Yanıt Durum Kodu', - headers: 'Yanıt Başlık Listesi JSON', - files: 'Dosya Listesi', - }, - authorization: { - 'authorization': 'Yetkilendirme', - 'authorizationType': 'Yetkilendirme Türü', - 'no-auth': 'Yok', - 'api-key': 'API Anahtarı', - 'basic': 'Temel', - 'bearer': 'Bearer', - 'custom': 'Özel', - 'api-key-title': 'API Anahtarı', - 'header': 'Başlık', - 'auth-type': 'Kimlik Doğrulama Türü', - }, - insertVarPlaceholder: 'değişkeni eklemek için \'/\' yazın', - timeout: { - title: 'Zaman Aşımı', - connectLabel: 'Bağlantı Zaman Aşımı', - connectPlaceholder: 'Bağlantı zaman aşımını saniye cinsinden girin', - readLabel: 'Okuma Zaman Aşımı', - readPlaceholder: 'Okuma zaman aşımını saniye cinsinden girin', - writeLabel: 'Yazma Zaman Aşımı', - writePlaceholder: 'Yazma zaman aşımını saniye cinsinden girin', - }, - type: 'Tür', - binaryFileVariable: 'İkili Dosya Değişkeni', - extractListPlaceholder: 'Liste öğesi dizinini girin, \'/\' yazın değişken ekle', - curl: { - placeholder: 'cURL dizesini buraya yapıştırın', - title: 'cURL\'den içe aktar', - }, - verifySSL: { - title: 'SSL Sertifikasını Doğrula', - warningTooltip: 'SSL doğrulamasını devre dışı bırakmak, üretim ortamları için önerilmez. Bu yalnızca geliştirme veya test aşamalarında kullanılmalıdır, çünkü bağlantıyı adam ortada saldırıları gibi güvenlik tehditlerine karşı savunmasız hale getirir.', - }, - }, - code: { - inputVars: 'Giriş Değişkenleri', - outputVars: 'Çıktı Değişkenleri', - advancedDependencies: 'Gelişmiş Bağımlılıklar', - advancedDependenciesTip: 'Burada daha uzun sürede tüketilen veya varsayılan olarak yerleşik olmayan bazı ön yüklenmiş bağımlılıkları ekleyin', - searchDependencies: 'Bağımlılıkları Ara', - syncFunctionSignature: 'Senkrone işlev imzasını koda eşitle', - }, - templateTransform: { - inputVars: 'Giriş Değişkenleri', - code: 'Kod', - codeSupportTip: 'Sadece Jinja2 destekler', - outputVars: { - output: 'Dönüştürülmüş içerik', - }, - }, - ifElse: { - if: 'Eğer', - else: 'Değilse', - elseDescription: 'Eğer koşulu karşılanmadığında hangi mantığın çalıştırılması gerektiğini tanımlamak için kullanılır.', - and: 've', - or: 'veya', - operator: 'Operatör', - notSetVariable: 'Lütfen önce değişken ayarlayın', - comparisonOperator: { - 'contains': 'içerir', - 'not contains': 'içermez', - 'start with': 'ile başlar', - 'end with': 'ile biter', - 'is': 'eşittir', - 'is not': 'eşit değildir', - 'empty': 'boş', - 'not empty': 'boş değil', - 'null': 'null', - 'not null': 'null değil', - 'in': 'içinde', - 'not exists': 'mevcut değil', - 'all of': 'Tümü', - 'not in': 'İçinde değil', - 'exists': 'Var', - 'before': 'önce', - 'after': 'sonra', - }, - enterValue: 'Değer girin', - addCondition: 'Koşul Ekle', - conditionNotSetup: 'Koşul AYARLANMADI', - selectVariable: 'Değişken seçin...', - optionName: { - localUpload: 'Yerel Yükleme', - video: 'Video', - audio: 'Ses', - url: 'URL', - image: 'Resim', - doc: 'Doktor', - }, - addSubVariable: 'Alt Değişken', - select: 'Seçmek', - }, - variableAssigner: { - title: 'Değişken ata', - outputType: 'Çıktı Türü', - varNotSet: 'Değişken ayarlanmadı', - noVarTip: 'Atanacak değişkenleri ekleyin', - type: { - string: 'Metin', - number: 'Sayı', - object: 'Nesne', - array: 'Dizi', - }, - aggregationGroup: 'Toplama Grubu', - aggregationGroupTip: 'Bu özelliği etkinleştirmek, değişken toplayıcının birden fazla değişken setini toplamasına olanak tanır.', - addGroup: 'Grup Ekle', - outputVars: { - varDescribe: '{{groupName}} çıktısı', - }, - setAssignVariable: 'Atama değişkenini ayarla', - }, - assigner: { - 'assignedVariable': 'Atanan Değişken', - 'writeMode': 'Yazma Modu', - 'writeModeTip': 'ATANAN DEĞİŞKEN bir dizi olduğunda, ekleme modu sona ekler.', - 'over-write': 'Üzerine Yaz', - 'append': 'Ekle', - 'plus': 'Artı', - 'clear': 'Temizle', - 'setVariable': 'Değişken Ayarla', - 'variable': 'Değişken', - 'operations': { - 'extend': 'Uzatmak', - 'overwrite': 'Üzerine', - 'over-write': 'Üzerine', - 'title': 'İşlem', - '+=': '+=', - 'clear': 'Berrak', - 'append': 'Ekleme', - '/=': '/=', - '-=': '-=', - '*=': '*=', - 'set': 'Ayarlamak', - 'remove-last': 'Sonuncuyu Kaldır', - 'remove-first': 'İlkini kaldır', - }, - 'variables': 'Değişken', - 'selectAssignedVariable': 'Atanan değişkeni seçin...', - 'setParameter': 'Parametreyi ayarla...', - 'varNotSet': 'Değişken NOT Set', - 'assignedVarsDescription': 'Atanan değişkenler, konuşma değişkenleri gibi yazılabilir değişkenler olmalıdır.', - 'noVarTip': 'Değişken eklemek için "+" düğmesini tıklayın', - 'noAssignedVars': 'Kullanılabilir atanmış değişken yok', - }, - tool: { - inputVars: 'Giriş Değişkenleri', - outputVars: { - text: 'araç tarafından oluşturulan içerik', - files: { - title: 'araç tarafından oluşturulan dosyalar', - type: 'Desteklenen tür. Şu anda sadece resim destekleniyor', - transfer_method: 'Transfer yöntemi. Değer remote_url veya local_file olabilir', - url: 'Resim URL\'si', - upload_file_id: 'Yüklenen dosya kimliği', - }, - json: 'araç tarafından oluşturulan json', - }, - authorize: 'Yetkilendirmek', - settings: 'Ayarlar', - insertPlaceholder2: 'değişken ekle', - insertPlaceholder1: 'Yazın veya basın', - }, - questionClassifiers: { - model: 'model', - inputVars: 'Giriş Değişkenleri', - outputVars: { - className: 'Sınıf Adı', - usage: 'Model Kullanım Bilgileri', - }, - class: 'Sınıf', - classNamePlaceholder: 'Sınıf adınızı yazın', - advancedSetting: 'Gelişmiş Ayarlar', - topicName: 'Konu Adı', - topicPlaceholder: 'Konu adınızı yazın', - addClass: 'Sınıf Ekle', - instruction: 'Talimat', - instructionTip: 'Soru sınıflandırıcının soruları nasıl kategorize edeceğini daha iyi anlamasına yardımcı olmak için ek talimatlar girin.', - instructionPlaceholder: 'Talimatınızı yazın', - }, - parameterExtractor: { - inputVar: 'Giriş Değişkeni', - outputVars: { - isSuccess: 'Başarılı mı. Başarılı olduğunda değer 1, başarısız olduğunda değer 0\'dır.', - errorReason: 'Hata Nedeni', - usage: 'Model Kullanım Bilgileri', - }, - extractParameters: 'Parametreleri Çıkar', - importFromTool: 'Araçlardan içe aktar', - addExtractParameter: 'Çıkarma Parametresi Ekle', - addExtractParameterContent: { - name: 'Ad', - namePlaceholder: 'Çıkarma Parametresi Adı', - type: 'Tür', - typePlaceholder: 'Çıkarma Parametresi Türü', - description: 'Açıklama', - descriptionPlaceholder: 'Çıkarma Parametresi Açıklaması', - required: 'Gerekli', - requiredContent: 'Gerekli sadece model çıkarımı için referans olarak kullanılır ve parametre çıktısının zorunlu doğrulaması için kullanılmaz.', - }, - extractParametersNotSet: 'Çıkarma Parametreleri ayarlanmadı', - instruction: 'Talimat', - instructionTip: 'Parametre çıkarıcının parametreleri nasıl çıkaracağını anlamasına yardımcı olmak için ek talimatlar girin.', - advancedSetting: 'Gelişmiş Ayarlar', - reasoningMode: 'Akıl Yürütme Modu', - reasoningModeTip: 'Modelin fonksiyon çağırma veya istemler için talimatlara yanıt verme yeteneğine bağlı olarak uygun akıl yürütme modunu seçebilirsiniz.', - }, - iteration: { - deleteTitle: 'Yineleme Düğümünü Sil?', - deleteDesc: 'Yineleme düğümünü silmek tüm alt düğümleri silecektir', - input: 'Giriş', - output: 'Çıkış Değişkenleri', - iteration_one: '{{count}} Yineleme', - iteration_other: '{{count}} Yineleme', - currentIteration: 'Mevcut Yineleme', - ErrorMethod: { - operationTerminated: 'Sonlandırıldı', - continueOnError: 'Hata Üzerine Devam Et', - removeAbnormalOutput: 'anormal çıktıyı kaldır', - }, - parallelModeUpper: 'PARALEL MOD', - parallelMode: 'Paralel Mod', - MaxParallelismTitle: 'Maksimum paralellik', - error_one: '{{sayı}} Hata', - errorResponseMethod: 'Hata yanıtı yöntemi', - comma: ',', - parallelModeEnableTitle: 'Paralel Mod Etkin', - error_other: '{{sayı}} Hata', - parallelPanelDesc: 'Paralel modda, yinelemedeki görevler paralel yürütmeyi destekler.', - answerNodeWarningDesc: 'Paralel mod uyarısı: Yinelemeler içindeki yanıt düğümleri, konuşma değişkeni atamaları ve kalıcı okuma/yazma işlemleri özel durumlara neden olabilir.', - parallelModeEnableDesc: 'Paralel modda, yinelemeler içindeki görevler paralel yürütmeyi destekler. Bunu sağdaki özellikler panelinde yapılandırabilirsiniz.', - MaxParallelismDesc: 'Maksimum paralellik, tek bir yinelemede aynı anda yürütülen görevlerin sayısını kontrol etmek için kullanılır.', - flattenOutput: 'Çıktıyı Düzleştir', - flattenOutputDesc: 'Etkinleştirildiğinde, eğer tüm yineleme çıktıları dizilerse, bunlar tek bir dizi halinde düzleştirilecektir. Devre dışı bırakıldığında ise çıktılar iç içe diziler şeklini koruyacaktır.', - }, - note: { - addNote: 'Not Ekle', - editor: { - placeholder: 'Notunuzu yazın...', - small: 'Küçük', - medium: 'Orta', - large: 'Büyük', - bold: 'Kalın', - italic: 'İtalik', - strikethrough: 'Üstü Çizili', - link: 'Bağlantı', - openLink: 'Aç', - unlink: 'Bağlantıyı Kaldır', - enterUrl: 'URL girin...', - invalidUrl: 'Geçersiz URL', - bulletList: 'Madde İşaretli Liste', - showAuthor: 'Yazarı Göster', - }, - }, - docExtractor: { - outputVars: { - text: 'Ayıklanan metin', - }, - learnMore: 'Daha fazla bilgi edinin', - inputVar: 'Giriş Değişkeni', - supportFileTypes: 'Destek dosya türleri: {{types}}.', - }, - listFilter: { - outputVars: { - result: 'Filtre sonucu', - first_record: 'İlk kayıt', - last_record: 'Son kayıt', - }, - filterConditionComparisonOperator: 'Filtre Koşulu Karşılaştırma İşleci', - filterCondition: 'Filtre Koşulu', - limit: 'İlk N', - asc: 'ASC', - inputVar: 'Giriş Değişkeni', - filterConditionKey: 'Filtre Koşulu Anahtarı', - orderBy: 'Sıralama ölçütü', - filterConditionComparisonValue: 'Filtre Koşulu değeri', - selectVariableKeyPlaceholder: 'Alt değişken anahtarını seçin', - desc: 'DESC', - extractsCondition: 'N öğesini ayıklayın', - }, - agent: { - strategy: { - searchPlaceholder: 'Arama aracısı stratejisi', - selectTip: 'Ajan stratejisi seçin', - label: 'Ajan Stratejisi', - configureTip: 'Lütfen ajan stratejisini yapılandırın.', - configureTipDesc: 'Aracı stratejiyi yapılandırdıktan sonra, bu düğüm kalan yapılandırmaları otomatik olarak yükleyecektir. Strateji, çok adımlı araç akıl yürütme mekanizmasını etkileyecektir.', - shortLabel: 'Strateji', - tooltip: 'Farklı Agentic stratejileri, sistemin çok adımlı araç çağrılarını nasıl planladığını ve yürüttüğünü belirler', - }, - pluginInstaller: { - install: 'Yüklemek', - installing: 'Yükleme', - }, - modelNotInMarketplace: { - desc: 'Bu model Yerel veya GitHub deposundan yüklenir. Lütfen kurulumdan sonra kullanın.', - title: 'Model yüklü değil', - manageInPlugins: 'Eklentilerde Yönet', - }, - modelNotSupport: { - descForVersionSwitch: 'Yüklenen eklenti sürümü bu modeli sağlamaz. Sürümü değiştirmek için tıklayın.', - title: 'Desteklenmeyen Model', - desc: 'Yüklenen eklenti sürümü bu modeli sağlamaz.', - }, - modelSelectorTooltips: { - deprecated: 'Bu model kullanım dışıdır', - }, - outputVars: { - files: { - upload_file_id: 'Dosya kimliğini karşıya yükle', - type: 'Destek türü. Şimdi sadece görüntüyü destekleyin', - transfer_method: 'Transfer yöntemi. Değer remote_url veya local_file', - title: 'Aracı Tarafından Oluşturulan Dosyalar', - url: 'Resim url\'si', - }, - text: 'Temsilci Tarafından Oluşturulan İçerik', - usage: 'Model Kullanım Bilgileri', - json: 'Aracı tarafından oluşturulan JSON', - }, - checkList: { - strategyNotSelected: 'Strateji seçilmedi', - }, - installPlugin: { - changelog: 'Değişiklik günlüğü', - cancel: 'İptal', - install: 'Yüklemek', - title: 'Eklentiyi Yükle', - desc: 'Aşağıdaki eklentiyi yüklemek üzere', - }, - configureModel: 'Modeli Yapılandır', - toolNotInstallTooltip: '{{tool}} yüklü değil', - unsupportedStrategy: 'Desteklenmeyen strateji', - notAuthorized: 'Yetkili Değil', - tools: 'Araçları', - strategyNotFoundDesc: 'Yüklenen eklenti sürümü bu stratejiyi sağlamaz.', - strategyNotSet: 'Ajan stratejisi Belirlenmedi', - pluginNotFoundDesc: 'Bu eklenti GitHub\'dan yüklenmiştir. Lütfen şuraya gidin: Eklentiler yeniden yüklemek için', - strategyNotFoundDescAndSwitchVersion: 'Yüklenen eklenti sürümü bu stratejiyi sağlamaz. Sürümü değiştirmek için tıklayın.', - pluginNotInstalledDesc: 'Bu eklenti GitHub\'dan yüklenmiştir. Lütfen şuraya gidin: Eklentiler yeniden yüklemek için', - learnMore: 'Daha fazla bilgi edinin', - linkToPlugin: 'Eklentilere Bağlantı', - modelNotInstallTooltip: 'Bu model yüklü değil', - toolbox: 'Araç', - modelNotSelected: 'Model seçilmedi', - pluginNotInstalled: 'Bu eklenti yüklü değil', - maxIterations: 'Maksimum Yineleme', - strategyNotInstallTooltip: '{{strateji}} yüklü değil', - toolNotAuthorizedTooltip: '{{araç}} Yetkili Değil', - model: 'model', - parameterSchema: 'Parametre Şeması', - clickToViewParameterSchema: 'Parametre şemasını görüntülemek için tıklayın', - }, - loop: { - ErrorMethod: { - operationTerminated: 'Sonlandırıldı', - removeAbnormalOutput: 'Anormal Çıktıyı Kaldır', - continueOnError: 'Hata ile Devam Et', - }, - loopNode: 'Döngü Düğümü', - output: 'Çıktı Değişkeni', - exitConditionTip: 'Bir döngü düğümünün en az bir çıkış koşuluna ihtiyacı vardır.', - inputMode: 'Giriş Modu', - setLoopVariables: 'Döngü kapsamı içinde değişkenleri ayarla', - loopMaxCount: 'Maksimum Döngü Sayısı', - input: 'Girdi', - breakCondition: 'Döngü Sonlandırma Koşulu', - comma: ',', - finalLoopVariables: 'Son Döngü Değişkenleri', - initialLoopVariables: 'İlk Döngü Değişkenleri', - errorResponseMethod: 'Hata Yanıt Yöntemi', - deleteTitle: 'Döngü Düğümünü Sil?', - totalLoopCount: 'Toplam döngü sayısı: {{count}}', - currentLoop: 'Mevcut Döngü', - loopMaxCountError: 'Lütfen 1 ile {{maxCount}} arasında geçerli bir maksimum döngü sayısı girin.', - variableName: 'Değişken Adı', - deleteDesc: 'Döngü düğümünü silmek, tüm alt düğümleri kaldıracaktır.', - breakConditionTip: 'Sadece sonlandırma koşulları olan döngüler içindeki değişkenler ve konuşma değişkenleri referans alınabilir.', - loop_other: '{{count}} Döngü', - currentLoopCount: 'Mevcut döngü sayısı: {{count}}', - error_one: '{{count}} Hata', - error_other: '{{count}} Hata', - loop_one: '{{count}} Döngü', - loopVariables: 'Döngü Değişkenleri', - }, - dataSource: { - add: 'Veri kaynağı ekleme', - supportedFileFormatsPlaceholder: 'Dosya uzantısı, e.g. doc', - supportedFileFormats: 'Desteklenen dosya biçimleri', - }, - knowledgeBase: { - chunkStructureTip: { - learnMore: 'Daha fazla bilgi edinin', - title: 'Lütfen bir yığın yapısı seçin', - message: 'Dify Bilgi Bankası üç parçalı yapıyı destekler: Genel, Üst-alt ve Soru-Cevap. Her bilgi tabanı yalnızca bir yapıya sahip olabilir. Önceki düğümden gelen çıktı, seçilen öbek yapısıyla hizalanmalıdır. Yığın yapısı seçiminin mevcut dizin yöntemlerini etkilediğini unutmayın.', - }, - chooseChunkStructure: 'Bir yığın yapısı seçin', - chunkIsRequired: 'Yığın yapısı gereklidir', - chunkStructure: 'Yığın Yapısı', - indexMethodIsRequired: 'İndeks yöntemi gereklidir', - aboutRetrieval: 'geri alma yöntemi hakkında.', - retrievalSettingIsRequired: 'Alma ayarı gereklidir', - changeChunkStructure: 'Yığın Yapısını Değiştir', - chunksInput: 'Parçalar', - chunksInputTip: 'Bilgi tabanı düğümünün girdi değişkeni \'Chunks\'tır. Değişkenin tipi, seçilen parça yapısıyla tutarlı olması gereken belirli bir JSON Şemasına sahip bir nesnedir.', - embeddingModelIsRequired: 'Gömme modeli gereklidir', - chunksVariableIsRequired: 'Chunks değişkeni gereklidir', - rerankingModelIsRequired: 'Yeniden sıralama modeli gereklidir', - rerankingModelIsInvalid: 'Yeniden sıralama modeli geçersiz', - embeddingModelIsInvalid: 'Gömme modeli geçersiz', - }, - triggerPlugin: { - authorized: 'Yetkili', - notConfigured: 'Yapılandırılmadı', - notAuthorized: 'Yetkisiz', - selectSubscription: 'Abonelik Seç', - availableSubscriptions: 'Mevcut Abonelikler', - addSubscription: 'Yeni Abonelik Ekle', - removeSubscription: 'Aboneliği Kaldır', - subscriptionRemoved: 'Abonelik başarıyla kaldırıldı', - error: 'Hata', - configuration: 'Yapılandırma', - remove: 'Kaldır', - or: 'VEYA', - useOAuth: 'OAuth Kullan', - useApiKey: 'API Anahtarını Kullan', - authenticationFailed: 'Kimlik doğrulama başarısız', - authenticationSuccess: 'Kimlik doğrulama başarılı', - oauthConfigFailed: 'OAuth yapılandırması başarısız oldu', - configureOAuthClient: 'OAuth İstemcisini Yapılandır', - oauthClientDescription: 'Kimlik doğrulamayı etkinleştirmek için OAuth istemci kimlik bilgilerini yapılandırın', - oauthClientSaved: 'OAuth istemci yapılandırması başarıyla kaydedildi', - configureApiKey: 'API Anahtarını Yapılandır', - apiKeyDescription: 'Kimlik doğrulama için API anahtarı kimlik bilgilerini yapılandırın', - apiKeyConfigured: 'API anahtarı başarıyla yapılandırıldı', - configurationFailed: 'Yapılandırma başarısız', - failedToStart: 'Kimlik doğrulama akışı başlatılamadı', - credentialsVerified: 'Kimlik bilgileri başarıyla doğrulandı', - credentialVerificationFailed: 'Kimlik bilgileri doğrulaması başarısız oldu', - verifyAndContinue: 'Doğrula ve Devam Et', - configureParameters: 'Parametreleri Yapılandır', - parametersDescription: 'Tetikleyici parametrelerini ve özelliklerini yapılandır', - configurationComplete: 'Yapılandırma Tamamlandı', - configurationCompleteDescription: 'Tetikleyiciniz başarıyla yapılandırıldı', - configurationCompleteMessage: 'Tetikleyici yapılandırmanız artık tamamlandı ve kullanıma hazır.', - parameters: 'Parametreler', - properties: 'Özellikler', - propertiesDescription: 'Bu tetikleyici için ek yapılandırma özellikleri', - noConfigurationRequired: 'Bu tetikleyici için ek yapılandırma gerekmez.', - subscriptionName: 'Abonelik Adı', - subscriptionNameDescription: 'Bu tetikleyici aboneliği için benzersiz bir ad girin', - subscriptionNamePlaceholder: 'Abonelik adını girin...', - subscriptionNameRequired: 'Abonelik adı gereklidir', - subscriptionRequired: 'Abonelik gereklidir', - }, - triggerSchedule: { - title: 'Program', - nodeTitle: 'Zamanlayıcı Tetikleyici', - notConfigured: 'Yapılandırılmadı', - useCronExpression: 'Cron ifadesi kullan', - useVisualPicker: 'Görsel seçici kullan', - frequency: { - label: 'FREKANSLIK', - hourly: 'Saatlik', - daily: 'Günlük', - weekly: 'Haftalık', - monthly: 'Aylık', - }, - selectFrequency: 'Frekansı seç', - frequencyLabel: 'Frekans', - nextExecution: 'Bir sonraki idam', - weekdays: 'Hafta günleri', - time: 'Zaman', - cronExpression: 'Cron ifadesi', - nextExecutionTime: 'SONRAKİ YÜRÜTME ZAMANI', - nextExecutionTimes: 'Sonraki 5 yürütme zamanı', - startTime: 'Başlangıç Saati', - executeNow: 'Şimdi yürüt', - selectDateTime: 'Tarih ve Saat Seç', - hours: 'Saatler', - minutes: 'Dakikalar', - onMinute: 'On Dakika', - days: 'Günler', - lastDay: 'Son gün', - lastDayTooltip: 'Tüm ayların 31 günü yoktur. Her ayın son gününü seçmek için \'son gün\' seçeneğini kullanın.', - mode: 'Moda', - timezone: 'Saat dilimi', - visualConfig: 'Görsel Konfigürasyon', - monthlyDay: 'Aylık Gün', - executionTime: 'Çalıştırma Süresi', - invalidTimezone: 'Geçersiz saat dilimi', - invalidCronExpression: 'Geçersiz cron ifadesi', - noValidExecutionTime: 'Geçerli bir yürütme süresi hesaplanamıyor', - executionTimeCalculationError: 'Çalıştırma süreleri hesaplanamadı', - invalidFrequency: 'Geçersiz frekans', - invalidStartTime: 'Geçersiz başlangıç zamanı', - startTimeMustBeFuture: 'Başlangıç zamanı gelecekte olmalıdır', - invalidTimeFormat: 'Geçersiz saat formatı (beklenen HH:MM AM/PM)', - invalidWeekday: 'Geçersiz hafta günü: {{weekday}}', - invalidMonthlyDay: 'Aylık gün 1-31 arasında veya "son" olmalıdır', - invalidOnMinute: 'Dakika 0-59 arasında olmalıdır', - invalidExecutionTime: 'Geçersiz yürütme süresi', - executionTimeMustBeFuture: 'Yürütme zamanı gelecekte olmalıdır', - }, - triggerWebhook: { - title: 'Webhook Tetikleyici', - nodeTitle: '🔗 Webhook Tetikleyici', - configPlaceholder: 'Webhook tetikleyici yapılandırması burada uygulanacak', - webhookUrl: 'Webhook URL', - webhookUrlPlaceholder: 'Webhook URL\'si oluşturmak için oluştur\'a tıklayın', - generate: 'Oluştur', - copy: 'Kopyala', - test: 'Test', - urlGenerated: 'Webhook URL başarıyla oluşturuldu', - urlGenerationFailed: 'Webhook URL\'si oluşturulamadı', - urlCopied: 'URL panoya kopyalandı', - method: 'Yöntem', - contentType: 'İçerik Türü', - queryParameters: 'Sorgu Parametreleri', - headerParameters: 'Başlık Parametreleri', - requestBodyParameters: 'İstek Gövdesi Parametreleri', - parameterName: 'Değişken adı', - varName: 'Değişken adı', - varType: 'Tür', - varNamePlaceholder: 'Değişken adı girin...', - required: 'Gerekli', - addParameter: 'Ekle', - addHeader: 'Ekle', - noParameters: 'Hiç parametre yapılandırılmadı', - noQueryParameters: 'Sorgu parametresi yapılandırılmadı', - noHeaders: 'Başlıklar yapılandırılmamış', - noBodyParameters: 'Hiçbir gövde parametresi yapılandırılmamış', - debugUrlTitle: 'Test çalışmaları için her zaman bu URL\'yi kullanın', - debugUrlCopy: 'Kopyalamak için tıkla', - debugUrlCopied: 'Kopyalandı!', - debugUrlPrivateAddressWarning: 'Bu URL dahili bir adres gibi görünüyor ve bu, webhook isteklerinin başarısız olmasına neden olabilir. TRIGGER_URL\'i halka açık bir adresle değiştirebilirsiniz.', - errorHandling: 'Hata Yönetimi', - errorStrategy: 'Hata Yönetimi', - responseConfiguration: 'Yanıt', - asyncMode: 'Asenkron Mod', - statusCode: 'Durum Kodu', - responseBody: 'Yanıt Gövdesi', - responseBodyPlaceholder: 'Yanıt metninizi buraya yazın', - headers: 'Başlıklar', - validation: { - webhookUrlRequired: 'Webhook URL\'si gerekli', - invalidParameterType: '"{{name}}" parametresi için geçersiz parametre türü "{{type}}"', - }, - }, - }, - tracing: { - stopBy: '{{user}} tarafından durduruldu', - }, - variableReference: { - assignedVarsDescription: 'Atanan değişkenler, örneğin yazılabilir değişkenler olmalıdır', - noAvailableVars: 'Kullanılabilir değişken yok', - conversationVars: 'Konuşma değişkenleri', - noVarsForOperation: 'Seçilen işlemle atanabilecek değişken yok.', - noAssignedVars: 'Kullanılabilir atanmış değişken yok', - }, - versionHistory: { - filter: { - reset: 'Filtreyi Sıfırla', - onlyYours: 'Sadece senin', - empty: 'Eşleşen bir sürüm geçmişi bulunamadı.', - all: 'Her şey', - onlyShowNamedVersions: 'Sadece adlandırılmış sürümleri göster', - }, - editField: { - releaseNotesLengthLimit: 'Sürüm notları {{limit}} karakteri geçemez', - titleLengthLimit: 'Başlık {{limit}} karakteri geçemez.', - title: 'Başlık', - releaseNotes: 'Sürüm Notları', - }, - action: { - restoreSuccess: 'Sürüm geri yüklendi', - deleteFailure: 'Versiyonu silme işlemi başarısız oldu', - restoreFailure: 'Sürümü geri yüklemekte başarısız olundu', - updateFailure: 'Sürüm güncellenemedi', - updateSuccess: 'Sürüm güncellendi', - deleteSuccess: 'Sürüm silindi', - copyIdSuccess: 'Kimlik panoya kopyalandı', - }, - latest: 'Sonuncu', - currentDraft: 'Mevcut Taslak', - restorationTip: 'Sürüm geri yüklemeden sonra, mevcut taslak üzerine yazılacak.', - title: 'Sürümler', - defaultName: 'Başlıksız Versiyon', - editVersionInfo: 'Sürüm bilgilerini düzenle', - releaseNotesPlaceholder: 'Değişen şeyleri tanımlayın', - nameThisVersion: 'Bu versiyona isim ver', - deletionTip: 'Silme işlemi geri alınamaz, lütfen onaylayın.', - copyId: 'ID Kopyala', - }, - debug: { - noData: { - runThisNode: 'Bu düğümü çalıştır', - description: 'Son çalışmanın sonuçları burada gösterilecektir.', - }, - variableInspect: { - trigger: { - clear: 'Açık', - running: 'Önbellek çalışma durumu', - normal: 'Değişken İncele', - cached: 'Önbelleklenmiş değişkenleri görüntüle', - stop: 'Koşmayı durdur', - }, - envNode: 'Çevre', - title: 'Değişken İncele', - edited: 'Düzenlenmiş', - chatNode: 'Konuşma', - resetConversationVar: 'Konuşma değişkenini varsayılan değere sıfırla', - emptyLink: 'Daha fazla öğrenin', - clearAll: 'Hepsini sıfırla', - systemNode: 'Sistem', - clearNode: 'Önbelleklenmiş değişkeni temizle', - reset: 'Son çalıştırma değerine sıfırla', - view: 'Günlüğü görüntüle', - emptyTip: 'Bir düğümü kanvas üzerinde geçtikten veya bir düğümü adım adım çalıştırdıktan sonra, Düğüm Değişkeni\'ndeki mevcut değeri Değişken İncele\'de görüntüleyebilirsiniz.', - export: 'Ihracat', - largeDataNoExport: 'Büyük veri - yalnızca kısmi önizleme', - largeData: 'Büyük veri, salt okunur önizleme. Tümünü görüntülemek için dışa aktarın.', - exportToolTip: 'Değişkeni Dosya Olarak Dışa Aktar', - listening: { - title: 'Tetikleyicilerden olaylar dinleniyor...', - tip: 'Artık test istekleri göndererek HTTP {{nodeName}} uç noktasında olay tetikleyicilerini simüle edebilir veya canlı olay hata ayıklama için bir geri arama URL\'si olarak kullanabilirsiniz. Tüm çıktılar, Değişken Denetleyicisinde doğrudan görüntülenebilir.', - tipPlugin: 'Artık {{- pluginName}} içinde etkinlikler oluşturabilir ve bu etkinliklerden elde edilen çıktıları Değişken Denetleyicisinde görebilirsiniz.', - tipSchedule: 'Zamanlayıcı tetikleyicilerinden etkinlikleri dinleme. Bir sonraki planlanan çalıştırma: {{nextTriggerTime}}', - tipFallback: 'Gelen tetikleyici olaylarını bekleyin. Çıktılar burada görünecektir.', - defaultNodeName: 'bu tetik', - defaultPluginName: 'bu eklenti tetikleyici', - defaultScheduleTime: 'Yapılandırılmadı', - selectedTriggers: 'seçilen tetikleyiciler', - stopButton: 'Dur', - }, - }, - lastRunTab: 'Son Koşu', - settingsTab: 'Ayarlar', - relations: { - noDependents: 'Bakmakla yükümlü olunan kişi yok', - dependentsDescription: 'Bu düğüme dayanan düğümler', - dependenciesDescription: 'Bu düğümün dayandığı düğümler', - dependencies: 'Bağımlılık', - dependents: 'Bağımlı', - noDependencies: 'Bağımlılık yok', - }, - relationsTab: 'Ilişkiler', - copyLastRun: 'Son Çalışmayı Kopyala', - noLastRunFound: 'Önceki çalışmaya rastlanmadı.', - noMatchingInputsFound: 'Son çalışmadan eşleşen giriş bulunamadı.', - copyLastRunError: 'Son çalışma girdilerini kopyalamak başarısız oldu.', - lastOutput: 'Son Çıktı', - lastRunInputsCopied: 'Son çalıştırmadan {{count}} girdi kopyalandı', - }, - sidebar: { - exportWarning: 'Mevcut Kaydedilmiş Versiyonu Dışa Aktar', - exportWarningDesc: 'Bu, çalışma akışınızın mevcut kaydedilmiş sürümünü dışa aktaracaktır. Editörde kaydedilmemiş değişiklikleriniz varsa, lütfen önce bunları çalışma akışı alanındaki dışa aktarma seçeneğini kullanarak kaydedin.', - }, - publishLimit: { - startNodeTitlePrefix: 'Yükselt', - startNodeTitleSuffix: 'her iş akışı için sınırsız tetikleyici aç', - startNodeDesc: 'Bu plan için bir iş akışında 2 tetikleyici sınırına ulaştınız. Bu iş akışını yayınlamak için yükseltme yapın.', - }, - error: { - startNodeRequired: 'Lütfen {{operation}} işleminden önce önce bir başlangıç düğümü ekleyin', - operations: { - connectingNodes: 'düğümleri bağlamak', - addingNodes: 'düğüm ekleme', - modifyingWorkflow: 'iş akışını değiştirme', - updatingWorkflow: 'iş akışını güncelleme', - }, - }, - customWebhook: 'Özel Webhook', - difyTeam: 'Dify Ekibi', - triggerStatus: { - enabled: 'TETİK', - disabled: 'TETİKLEYİCİ • DEVRE DIŞI', - }, - entryNodeStatus: { - enabled: 'BAŞLAT', - disabled: 'BAŞLAT • ENGELLİ', - }, - onboarding: { - title: 'Başlamak için bir başlangıç düğümü seçin', - description: 'Farklı başlangıç düğümlerinin farklı yetenekleri vardır. Endişelenmeyin, bunları her zaman daha sonra değiştirebilirsiniz.', - userInputFull: 'Kullanıcı Girdisi (orijinal başlangıç düğümü)', - userInputDescription: 'Kullanıcı giriş değişkenlerini ayarlamaya imkan veren başlangıç düğümü; araç olarak web uygulaması, servis API\'si, MCP sunucusu ve iş akışı özelliklerine sahiptir.', - trigger: 'Tetik', - triggerDescription: 'Tetikleyiciler, zamanlanmış görevler, özel web kancaları veya diğer uygulamalarla entegrasyonlar gibi bir iş akışının başlangıç düğümü olarak hizmet edebilir.', - back: 'Geri', - learnMore: 'Daha fazla bilgi edin', - aboutStartNode: 'başlangıç düğümü hakkında.', - escTip: { - press: 'Basın', - key: 'esc', - toDismiss: 'reddetmek', - }, - }, -} - -export default translation diff --git a/web/i18n/uk-UA/app-annotation.json b/web/i18n/uk-UA/app-annotation.json new file mode 100644 index 0000000000..4f04b7eeb9 --- /dev/null +++ b/web/i18n/uk-UA/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "Анотації", + "name": "Відповідь на анотацію", + "editBy": "Відповідь відредагована {{author}}", + "noData": { + "title": "Немає анотацій", + "description": "Ви можете редагувати анотації під час налагодження програми або імпортувати анотації гуртом тут для отримання високоякісної відповіді." + }, + "table": { + "header": { + "question": "запитання", + "answer": "відповідь", + "createdAt": "створено у", + "hits": "переглядів", + "actions": "дії", + "addAnnotation": "Додати анотацію", + "bulkImport": "Масовий імпорт", + "bulkExport": "Масовий експорт", + "clearAll": "Очистити всі анотації", + "clearAllConfirm": "Видалити всі анотації?" + } + }, + "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": "Модель векторизації тексту анотації, перемикання моделей буде повторно вбудовано, що призведе до додаткових витрат.", + "list": { + "delete": { + "title": "Ви впевнені, що хочете видалити?" + } + }, + "batchAction": { + "selected": "Вибрано", + "cancel": "Скасувати", + "delete": "Видалити" + } +} diff --git a/web/i18n/uk-UA/app-annotation.ts b/web/i18n/uk-UA/app-annotation.ts deleted file mode 100644 index bda4037c9c..0000000000 --- a/web/i18n/uk-UA/app-annotation.ts +++ /dev/null @@ -1,98 +0,0 @@ -const translation = { - title: 'Анотації', - name: 'Відповідь на анотацію', - editBy: 'Відповідь відредагована {{author}}', - noData: { - title: 'Немає анотацій', - description: 'Ви можете редагувати анотації під час налагодження програми або імпортувати анотації гуртом тут для отримання високоякісної відповіді.', - }, - table: { - header: { - question: 'запитання', - answer: 'відповідь', - createdAt: 'створено у', - hits: 'переглядів', - actions: 'дії', - addAnnotation: 'Додати анотацію', - bulkImport: 'Масовий імпорт', - bulkExport: 'Масовий експорт', - clearAll: 'Очистити всі анотації', - clearAllConfirm: 'Видалити всі анотації?', - }, - }, - 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: 'Модель векторизації тексту анотації, перемикання моделей буде повторно вбудовано, що призведе до додаткових витрат.', - list: { - delete: { - title: 'Ви впевнені, що хочете видалити?', - }, - }, - batchAction: { - selected: 'Вибрано', - cancel: 'Скасувати', - delete: 'Видалити', - }, -} - -export default translation diff --git a/web/i18n/uk-UA/app-api.json b/web/i18n/uk-UA/app-api.json new file mode 100644 index 0000000000..163d10121b --- /dev/null +++ b/web/i18n/uk-UA/app-api.json @@ -0,0 +1,83 @@ +{ + "apiServer": "API сервер", + "apiKey": "Ключ API", + "status": "Статус", + "disabled": "Вимкнено", + "ok": "Працює", + "copy": "Копіювати", + "copied": "Скопійовано", + "play": "Відтворити", + "pause": "Пауза", + "playing": "Відтворення", + "merMaid": { + "rerender": "Повторити рендер" + }, + "never": "Ніколи", + "apiKeyModal": { + "apiSecretKey": "Секретний ключ API", + "apiSecretKeyTips": "Щоб запобігти зловживанням API, захистіть свій ключ API. Уникайте його використання як звичайного тексту у front-end коді. :)", + "createNewSecretKey": "Створити новий секретний ключ", + "secretKey": "Секретний ключ", + "created": "СТВОРЕНО", + "lastUsed": "ОСТАННЄ ВИКОРИСТАННЯ", + "generateTips": "Зберігайте цей ключ у безпечному та доступному місці." + }, + "actionMsg": { + "deleteConfirmTitle": "Видалити цей секретний ключ?", + "deleteConfirmTips": "Цю дію не можна скасувати.", + "ok": "Гаразд" + }, + "chatMode": { + "title": "API чат-додатку", + "info": "Для універсальних чат-ботів, що використовують формат запитання-відповіді, викличте API chat-messages, щоб розпочати діалог. Підтримуйте безперервні розмови, передаючи conversation_id, що повертається. Параметри відповідей і шаблони залежать від налаштувань Dify Prompt.", + "createChatApi": "Створити повідомлення чату", + "createChatApiTip": "Створіть нове повідомлення розмови або продовжте існуючий діалог.", + "inputsTips": "(Необов’язково) Надайте поля введення користувача як пари ключ-значення, які відповідають змінним у Prompt. Ключ – це ім’я змінної, Значення – це значення параметра. Якщо тип поля Select, надіслане значення має бути одним із встановлених параметрів.", + "queryTips": "Вміст введення/запитання користувача", + "blocking": "Тип блокування, очікування завершення виконання та повернення результатів. (Запити можуть бути перервані, якщо процес тривалий)", + "streaming": "повернення потокового передавання. Реалізація повернення потокового передавання на основі SSE (Server-Sent Events).", + "conversationIdTip": "(Опціонально) Ідентифікатор розмови: залиште порожнім для першої розмови; передайте conversation_id з контексту, щоб продовжити діалог.", + "messageFeedbackApi": "Фідбек із повідомленнями сеансу користувача, наприклад", + "messageFeedbackApiTip": "Оцінюйте отримані повідомлення від імені кінцевих користувачів за допомогою лайків або дизлайків. Ці дані відображаються на сторінці \"Журнали та анотації\" та використовуються для майбутнього точного налаштування моделі.", + "messageIDTip": "Ідентифікатор повідомлення", + "ratingTip": "подобається чи не подобається, null — скасувати", + "chatMsgHistoryApi": "Отримати повідомлення з історії чату", + "chatMsgHistoryApiTip": "Перша сторінка повертає останній `обмежений` рядок, який знаходиться у зворотному порядку", + "chatMsgHistoryConversationIdTip": "Ідентифікатор розмови", + "chatMsgHistoryFirstId": "Ідентифікатор першого запису чату на поточній сторінці. Типовим є відсутність.", + "chatMsgHistoryLimit": "Скільки чатів повертається в одному запиті", + "conversationsListApi": "Отримати список розмов", + "conversationsListApiTip": "Отримує список сеансів поточного користувача. За замовчуванням повертаються останні 20 сеансів.", + "conversationsListFirstIdTip": "Ідентифікатор останнього запису на поточній сторінці, значення за замовчуванням відсутнє.", + "conversationsListLimitTip": "Скільки чатів повертається в одному запиті", + "conversationRenamingApi": "Перейменування розмови", + "conversationRenamingApiTip": "Перейменуйте розмови; ім’я відображається в інтерфейсах клієнтів із кількома сеансами.", + "conversationRenamingNameTip": "Нове ім’я", + "parametersApi": "Отримання інформації про параметри програми", + "parametersApiTip": "Отримати налаштовані вхідні параметри, включаючи імена змінних, імена полів, типи та значення за замовчуванням. Зазвичай використовується для відображення цих полів у формі або заповнення значень за замовчуванням після завантаження клієнта." + }, + "develop": { + "requestBody": "Тіло запиту", + "pathParams": "Параметри шляху", + "query": "Запит", + "toc": "Вміст" + }, + "completionMode": { + "messageIDTip": "Ідентифікатор повідомлення", + "streaming": "Потокове передавання повертається. Реалізація повернення потокового мовлення на основі SSE (Server-Sent Events).", + "blocking": "Тип блокування, очікування завершення виконання та повернення результатів. (Запити можуть бути перервані, якщо процес тривалий)", + "title": "API програми для завершення", + "ratingTip": "Подобається чи не подобається, null – це скасувати", + "createCompletionApiTip": "Створіть повідомлення про завершення, щоб підтримувати режим запитань і відповідей.", + "parametersApi": "Отримання інформації про параметри програми", + "queryTips": "Текстовий контент, що вводиться користувачем.", + "createCompletionApi": "Створити повідомлення про завершення", + "messageFeedbackApi": "Відгук у повідомленні (подобається)", + "messageFeedbackApiTip": "Оцінюйте отримані повідомлення від імені кінцевих користувачів з лайками або дизлайками. Ці дані відображаються на сторінці «Журнали та анотації» та використовуються для доопрацювання майбутньої моделі.", + "info": "Для створення високоякісного тексту, такого як статті, резюме та переклади, використовуйте API повідомлень про завершення з введенням користувачем. Генерація тексту залежить від параметрів моделі та шаблонів підказок, встановлених у Dify Prompt Engineering.", + "inputsTips": "(Необов'язково.) Надайте поля введення користувача у вигляді пар ключ-значення, що відповідають змінним у Prompt Eng. Key — це ім'я змінної, Value — значення параметра. Якщо вибрано тип поля Вибір, надіслане значення має бути одним із попередньо встановлених варіантів.", + "parametersApiTip": "Отримання налаштованих вхідних параметрів, включаючи імена змінних, імена полів, типи та значення за замовчуванням. Зазвичай використовується для відображення цих полів у формі або заповнення значень за замовчуванням після завантаження клієнта." + }, + "loading": "Завантаження", + "regenerate": "Відновити" +} diff --git a/web/i18n/uk-UA/app-api.ts b/web/i18n/uk-UA/app-api.ts deleted file mode 100644 index 76cb410eef..0000000000 --- a/web/i18n/uk-UA/app-api.ts +++ /dev/null @@ -1,85 +0,0 @@ -const translation = { - apiServer: 'API сервер', - apiKey: 'Ключ API', - status: 'Статус', - disabled: 'Вимкнено', - ok: 'Працює', - copy: 'Копіювати', - copied: 'Скопійовано', - play: 'Відтворити', - pause: 'Пауза', - playing: 'Відтворення', - merMaid: { - rerender: 'Повторити рендер', - }, - never: 'Ніколи', - apiKeyModal: { - apiSecretKey: 'Секретний ключ API', - apiSecretKeyTips: 'Щоб запобігти зловживанням API, захистіть свій ключ API. Уникайте його використання як звичайного тексту у front-end коді. :)', - createNewSecretKey: 'Створити новий секретний ключ', - secretKey: 'Секретний ключ', - created: 'СТВОРЕНО', - lastUsed: 'ОСТАННЄ ВИКОРИСТАННЯ', - generateTips: 'Зберігайте цей ключ у безпечному та доступному місці.', - }, - actionMsg: { - deleteConfirmTitle: 'Видалити цей секретний ключ?', - deleteConfirmTips: 'Цю дію не можна скасувати.', - ok: 'Гаразд', - }, - chatMode: { - title: 'API чат-додатку', - info: 'Для універсальних чат-ботів, що використовують формат запитання-відповіді, викличте API chat-messages, щоб розпочати діалог. Підтримуйте безперервні розмови, передаючи conversation_id, що повертається. Параметри відповідей і шаблони залежать від налаштувань Dify Prompt.', - createChatApi: 'Створити повідомлення чату', - createChatApiTip: 'Створіть нове повідомлення розмови або продовжте існуючий діалог.', - inputsTips: '(Необов’язково) Надайте поля введення користувача як пари ключ-значення, які відповідають змінним у Prompt. Ключ – це ім’я змінної, Значення – це значення параметра. Якщо тип поля Select, надіслане значення має бути одним із встановлених параметрів.', - queryTips: 'Вміст введення/запитання користувача', - blocking: 'Тип блокування, очікування завершення виконання та повернення результатів. (Запити можуть бути перервані, якщо процес тривалий)', - streaming: 'повернення потокового передавання. Реалізація повернення потокового передавання на основі SSE (Server-Sent Events).', - conversationIdTip: '(Опціонально) Ідентифікатор розмови: залиште порожнім для першої розмови; передайте conversation_id з контексту, щоб продовжити діалог.', - messageFeedbackApi: 'Фідбек із повідомленнями сеансу користувача, наприклад', - messageFeedbackApiTip: 'Оцінюйте отримані повідомлення від імені кінцевих користувачів за допомогою лайків або дизлайків. Ці дані відображаються на сторінці "Журнали та анотації" та використовуються для майбутнього точного налаштування моделі.', - messageIDTip: 'Ідентифікатор повідомлення', - ratingTip: 'подобається чи не подобається, null — скасувати', - chatMsgHistoryApi: 'Отримати повідомлення з історії чату', - chatMsgHistoryApiTip: 'Перша сторінка повертає останній `обмежений` рядок, який знаходиться у зворотному порядку', - chatMsgHistoryConversationIdTip: 'Ідентифікатор розмови', - chatMsgHistoryFirstId: 'Ідентифікатор першого запису чату на поточній сторінці. Типовим є відсутність.', - chatMsgHistoryLimit: 'Скільки чатів повертається в одному запиті', - conversationsListApi: 'Отримати список розмов', - conversationsListApiTip: 'Отримує список сеансів поточного користувача. За замовчуванням повертаються останні 20 сеансів.', - conversationsListFirstIdTip: 'Ідентифікатор останнього запису на поточній сторінці, значення за замовчуванням відсутнє.', - conversationsListLimitTip: 'Скільки чатів повертається в одному запиті', - conversationRenamingApi: 'Перейменування розмови', - conversationRenamingApiTip: 'Перейменуйте розмови; ім’я відображається в інтерфейсах клієнтів із кількома сеансами.', - conversationRenamingNameTip: 'Нове ім’я', - parametersApi: 'Отримання інформації про параметри програми', - parametersApiTip: 'Отримати налаштовані вхідні параметри, включаючи імена змінних, імена полів, типи та значення за замовчуванням. Зазвичай використовується для відображення цих полів у формі або заповнення значень за замовчуванням після завантаження клієнта.', - }, - develop: { - requestBody: 'Тіло запиту', - pathParams: 'Параметри шляху', - query: 'Запит', - toc: 'Вміст', - }, - completionMode: { - messageIDTip: 'Ідентифікатор повідомлення', - streaming: 'Потокове передавання повертається. Реалізація повернення потокового мовлення на основі SSE (Server-Sent Events).', - blocking: 'Тип блокування, очікування завершення виконання та повернення результатів. (Запити можуть бути перервані, якщо процес тривалий)', - title: 'API програми для завершення', - ratingTip: 'Подобається чи не подобається, null – це скасувати', - createCompletionApiTip: 'Створіть повідомлення про завершення, щоб підтримувати режим запитань і відповідей.', - parametersApi: 'Отримання інформації про параметри програми', - queryTips: 'Текстовий контент, що вводиться користувачем.', - createCompletionApi: 'Створити повідомлення про завершення', - messageFeedbackApi: 'Відгук у повідомленні (подобається)', - messageFeedbackApiTip: 'Оцінюйте отримані повідомлення від імені кінцевих користувачів з лайками або дизлайками. Ці дані відображаються на сторінці «Журнали та анотації» та використовуються для доопрацювання майбутньої моделі.', - info: 'Для створення високоякісного тексту, такого як статті, резюме та переклади, використовуйте API повідомлень про завершення з введенням користувачем. Генерація тексту залежить від параметрів моделі та шаблонів підказок, встановлених у Dify Prompt Engineering.', - inputsTips: '(Необов\'язково.) Надайте поля введення користувача у вигляді пар ключ-значення, що відповідають змінним у Prompt Eng. Key — це ім\'я змінної, Value — значення параметра. Якщо вибрано тип поля Вибір, надіслане значення має бути одним із попередньо встановлених варіантів.', - parametersApiTip: 'Отримання налаштованих вхідних параметрів, включаючи імена змінних, імена полів, типи та значення за замовчуванням. Зазвичай використовується для відображення цих полів у формі або заповнення значень за замовчуванням після завантаження клієнта.', - }, - loading: 'Завантаження', - regenerate: 'Відновити', -} - -export default translation diff --git a/web/i18n/uk-UA/app-debug.json b/web/i18n/uk-UA/app-debug.json new file mode 100644 index 0000000000..3a9085bcc9 --- /dev/null +++ b/web/i18n/uk-UA/app-debug.json @@ -0,0 +1,563 @@ +{ + "pageTitle": { + "line1": "PROMPT", + "line2": "Engineering" + }, + "orchestrate": "Диригувати", + "promptMode": { + "simple": "Перейти в експертний режим, щоб редагувати весь запрос PROMPT", + "advanced": "Експертний режим", + "switchBack": "Змінити налаштування", + "advancedWarning": { + "title": "Ви перейшли в експертний режим, і після того, як ви зміните PROMPT, ви НЕ можете повернутися назад в базовий режим.", + "description": "В експертному режимі ви можете редагувати весь PROMPT.", + "learnMore": "Детальніше", + "ok": "Гаразд" + }, + "operation": { + "addMessage": "Додати повідомлення" + }, + "contextMissing": "Компонент контексту відсутній, ефективність підказки може бути не найкращою." + }, + "operation": { + "applyConfig": "Опублікувати", + "resetConfig": "Скинути", + "debugConfig": "Налагодження", + "addFeature": "Додати функціонал", + "automatic": "Автоматично", + "stopResponding": "Припинити реагувати", + "agree": "лайк", + "disagree": "дизлайк", + "cancelAgree": "Скасувати лайк", + "cancelDisagree": "Скасувати дизлайк", + "userAction": "Користувач " + }, + "notSetAPIKey": { + "title": "Ключ провайдера LLM не встановлено", + "trailFinished": "Демо закінчилось", + "description": "Ключ провайдера LLM не встановлено, і його потрібно встановити перед налагодженням.", + "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": "Ви можете імпортувати знання як контекст", + "selectTitle": "Виберіть довідкові знання", + "selected": "Знання обрані", + "noDataSet": "Знання не знайдені", + "toCreate": "Перейти до створення", + "notSupportSelectMulti": "Наразі підтримується лише одне знання", + "queryVariable": { + "title": "Змінна запиту", + "tip": "Ця змінна буде використовуватися як вхідний запит для отримання контексту, отримання контекстної інформації, пов’язаної з введенням цієї змінної.", + "choosePlaceholder": "Виберіть змінну для запиту", + "noVar": "Змінних немає", + "noVarTip": "будь ласка, створіть змінну в розділі Змінні", + "unableToQueryDataSet": "Неможливо виконати запит до Знань", + "unableToQueryDataSetTip": "Не вдалося успішно виконати запит до Бази Знань, будь ласка, виберіть змінну контекстного запиту в розділі контексту.", + "ok": "ОК", + "contextVarNotEmpty": "змінна контекстного запиту не може бути порожньою", + "deleteContextVarTitle": "Видалити змінну “{{varName}}”?", + "deleteContextVarTip": "Ця змінна була встановлена ​​як змінна контекстного запиту, і її видалення вплине на нормальне використання Знань. Якщо вам все ще потрібно її видалити, будь ласка, виберіть її повторно в розділі контексту." + } + }, + "tools": { + "title": "Інструменти", + "tips": "Інструменти надають стандартний метод виклику API, приймаючи вхідні дані користувача або змінні як параметри запиту для запиту зовнішніх даних як контексту.", + "toolsInUse": "Використовується інструментів: {{count}}", + "modal": { + "title": "Інструмент", + "toolType": { + "title": "Тип інструменту", + "placeholder": "Будь ласка, виберіть тип інструменту" + }, + "name": { + "title": "Назва", + "placeholder": "Будь ласка, введіть назву" + }, + "variableName": { + "title": "Назва змінної", + "placeholder": "Будь ласка, введіть назву змінної" + } + } + }, + "conversationHistory": { + "title": "Історія розмов", + "description": "Встановіть префікси для ролей у розмові", + "tip": "Історію розмов не ввімкнено, додайте у запит вище.", + "learnMore": "Дізнатися більше", + "editModal": { + "title": "Редагувати назви ролей у розмові", + "userPrefix": "Префікс користувача", + "assistantPrefix": "Префікс помічника" + } + }, + "toolbox": { + "title": "ІНСТРУМЕНТИ" + }, + "moderation": { + "title": "Модерація контенту", + "description": "Захистіть вивід моделі, використовуючи API модерації або список конфіденційних слів.", + "allEnabled": "Вміст ВВЕДЕННЯ/ВИВЕДЕННЯ ввімкнено", + "inputEnabled": "Вміст ВВЕДЕННЯ ввімкнено", + "outputEnabled": "Вміст ВИВЕДЕННЯ ввімкнено", + "modal": { + "title": "Налаштування модерації вмісту", + "provider": { + "title": "Провайдер", + "openai": "Модерація OpenAI", + "openaiTip": { + "prefix": "Для модерації OpenAI потрібен ключ API OpenAI, налаштований у ", + "suffix": "." + }, + "keywords": "Ключові слова" + }, + "keywords": { + "tip": "По одному на рядок, розділені розривами рядків. До 100 символів у рядку.", + "placeholder": "По одному на рядок, розділені розривами рядків", + "line": "Рядок" + }, + "content": { + "input": "Помірне ВВЕДЕННЯ Вмісту", + "output": "Помірне ВИВЕДЕННЯ Вмісту", + "preset": "Попередньо встановлені відповіді", + "placeholder": "Попередньо встановлені відповіді тут", + "condition": "Увімкнено принаймні одне: «Модерувати ВВЕДЕННЯ ТА ВИВЕДЕННЯ Вмісту»", + "fromApi": "Попередньо встановлені відповіді повертаються через API", + "errorMessage": "Попередньо встановлені відповіді не можуть бути порожніми", + "supportMarkdown": "Підтримка Markdown" + }, + "openaiNotConfig": { + "before": "Модерація OpenAI вимагає, щоб ключ API OpenAI був налаштований у ", + "after": "" + } + }, + "contentEnableLabel": "Модерація контенту увімкнена" + }, + "fileUpload": { + "title": "Завантаження файлу", + "description": "Поле вводу чату дозволяє завантажувати зображення, документи та інші файли.", + "supportedTypes": "Підтримувані типи файлів", + "numberLimit": "Максимальна кількість завантажень", + "modalTitle": "Налаштування завантаження файлів" + }, + "imageUpload": { + "title": "Завантаження зображення", + "description": "Дозволити завантаження зображень.", + "supportedTypes": "Підтримувані типи файлів", + "numberLimit": "Максимальна кількість завантажень", + "modalTitle": "Налаштування завантаження зображень" + }, + "bar": { + "empty": "Увімкніть функції для покращення користувацького досвіду веб-додатка", + "enableText": "Функції увімкнено", + "manage": "Керувати" + }, + "documentUpload": { + "title": "Документ", + "description": "Увімкнення документа дозволить моделі приймати документи та відповідати на запитання про них." + }, + "audioUpload": { + "title": "Аудіо", + "description": "Увімкнення аудіо дозволить моделі обробляти аудіофайли для транскрипції та аналізу." + } + }, + "automatic": {}, + "resetConfig": { + "title": "Підтвердіть скидання?", + "message": "Скидання призводить до скасування змін, відновлюючи останню опубліковану конфігурацію." + }, + "errorMessage": { + "nameOfKeyRequired": "назва ключа: {{key}} обов’язкова", + "valueOfVarRequired": "значення {{key}} не може бути порожнім", + "queryRequired": "Текст запиту обов’язковий.", + "waitForResponse": "Будь ласка, зачекайте, доки буде завершено відповідь на попереднє повідомлення.", + "waitForBatchResponse": "Будь ласка, дочекайтеся завершення відповіді на пакетне завдання.", + "notSelectModel": "Будь ласка, виберіть модель", + "waitForImgUpload": "Будь ласка, зачекайте, поки зображення завантажиться", + "waitForFileUpload": "Будь ласка, зачекайте, поки файл/файли завантажаться" + }, + "chatSubTitle": "Інструкції", + "completionSubTitle": "Префікс команди", + "promptTip": "Запити керують відповідями ШІ, надаючи інструкції та обмеження. Вставте змінні, як-от {{input}}. Цей запит не буде видно користувачам.", + "formattingChangedTitle": "Змінено форматування", + "formattingChangedText": "Змінення форматування призведе до скидання області налагодження. Ви впевнені?", + "variableTitle": "Змінні", + "variableTip": "Користувачі заповнюють змінні у формі, автоматично замінюючи змінні в команді.", + "notSetVar": "Змінні дозволяють користувачам вводити підказки або вступні зауваження під час заповнення форм. Ви можете спробувати ввести \"{{input}}\" у слова підказки.", + "autoAddVar": "На невизначені змінні, на які посилаються в попередньому запиті, є посилання. Ви хочете додати їх у форму вводу користувача?", + "variableTable": { + "key": "Ключ змінної", + "name": "Назва поля для введення користувача", + "type": "Тип введення", + "action": "Дії", + "typeString": "Рядок", + "typeSelect": "Вибрати" + }, + "varKeyError": { + "canNoBeEmpty": "Потрібен {{key}}", + "tooLong": "{{key}} занадто довгий. Не може бути більше 30 символів", + "notValid": "{{key}} недійсний. Може містити лише літери, цифри та підкреслення", + "notStartWithNumber": "{{key}} не може починатися з цифри", + "keyAlreadyExists": ":{{key}} вже існує" + }, + "otherError": { + "promptNoBeEmpty": "Команда не може бути порожньою", + "historyNoBeEmpty": "Історію розмови необхідно встановити у підказці", + "queryNoBeEmpty": "Запит має бути встановлений у підказці" + }, + "variableConfig": { + "addModalTitle": "Додати Поле Введення", + "editModalTitle": "Редагувати Поле Введення", + "description": "Налаштування для змінної {{varName}}", + "fieldType": "Тип поля", + "string": "Короткий текст", + "text-input": "Короткий текст", + "paragraph": "Параграф", + "select": "Вибрати", + "number": "Число", + "notSet": "Не встановлено, спробуйте ввести {{input}} у префіксній підказці", + "stringTitle": "Параметри поля введення форми", + "maxLength": "Максимальна довжина", + "options": "Опції", + "addOption": "Додати опцію", + "apiBasedVar": "Змінна на основі API", + "varName": "Назва змінної", + "labelName": "Назва мітки", + "inputPlaceholder": "Будь ласка, введіть", + "required": "Обов'язково", + "hide": "Приховати", + "errorMsg": { + "labelNameRequired": "Потрібно вказати назву мітки", + "varNameCanBeRepeat": "Назва змінної не може повторюватися", + "atLeastOneOption": "Потрібно щонайменше одну опцію", + "optionRepeat": "Є повторні опції" + }, + "defaultValue": "Значення за замовчуванням", + "noDefaultValue": "Без значення за замовчуванням", + "selectDefaultValue": "Обрати значення за замовчуванням", + "file": { + "image": { + "name": "Образ" + }, + "audio": { + "name": "Аудіо" + }, + "document": { + "name": "Документ" + }, + "video": { + "name": "Відео" + }, + "custom": { + "description": "Укажіть інші типи файлів.", + "createPlaceholder": " Розширення файлу, наприклад .doc", + "name": "Інші типи файлів" + }, + "supportFileTypes": "Підтримка типів файлів" + }, + "content": "Вміст", + "both": "Як", + "single-file": "Один файл", + "multi-files": "Список файлів", + "localUpload": "Локальне завантаження", + "uploadFileTypes": "Типи файлів для завантаження", + "maxNumberOfUploads": "Максимальна кількість завантажень", + "maxNumberTip": "Документ < {{docLimit}}, зображення < {{imgLimit}}, аудіо < {{audioLimit}}, відео < {{videoLimit}}", + "jsonSchema": "JSON схема", + "optional": "додатковий", + "json": "JSON Код", + "checkbox": "Чекбокс", + "unit": "Одиниці", + "placeholder": "Заповнювач", + "noDefaultSelected": "Не вибирати", + "startChecked": "Почати перевірено", + "displayName": "Відображуване ім'я", + "uploadMethod": "Спосіб завантаження", + "showAllSettings": "Показати всі налаштування", + "startSelectedOption": "Почати вибраний варіант", + "tooltips": "Спливаючі чтива", + "placeholderPlaceholder": "Введіть текст для відображення, коли поле порожнє", + "unitPlaceholder": "Показувати одиниці виміру після чисел, наприклад токени", + "defaultValuePlaceholder": "Введіть значення за замовчуванням, щоб попередньо заповнити поле", + "tooltipsPlaceholder": "Введіть корисний текст, який відображається при наведенні курсору на мітку" + }, + "vision": { + "name": "Зображення", + "description": "Увімкнення функції \"Зображення\" дозволить моделі приймати зображення та відповідати на запитання про них.", + "settings": "Налаштування", + "visionSettings": { + "title": "Налаштування зображень", + "resolution": "Роздільна здатність", + "resolutionTooltip": "низька роздільна здатність дозволить моделі отримати зображення з низькою роздільною здатністю 512 x 512 пікселів і представити зображення з обмеженням у 65 токенів. Це дозволяє API швидше повертати відповіді та споживати менше вхідних токенів для випадків використання, які не потребують високої деталізації.\nвисока роздільна здатність спочатку дозволить моделі побачити зображення з низькою роздільною здатністю, а потім створити детальні фрагменти вхідних зображень у вигляді квадратів 512px на основі розміру вхідного зображення. Кожен із детальних фрагментів використовує подвійний запас токенів, загалом 129 токенів.", + "high": "Висока", + "low": "Низька", + "uploadMethod": "Спосіб завантаження", + "both": "Обидва", + "localUpload": "Локальне завантаження", + "url": "URL-адреса", + "uploadLimit": "Ліміт завантаження" + }, + "onlySupportVisionModelTip": "Підтримує лише моделі зору" + }, + "voice": { + "name": "Голос", + "defaultDisplay": "Голос за замовчуванням", + "description": "Налаштування синтезу мовлення", + "settings": "Налаштування", + "voiceSettings": { + "title": "Налаштування голосу", + "language": "Мова", + "resolutionTooltip": "Мовна підтримка для синтезу мовлення.", + "voice": "Голос", + "autoPlay": "Автоматичне відтворення", + "autoPlayEnabled": "ВІДЧИНЕНО", + "autoPlayDisabled": "закриття" + } + }, + "openingStatement": { + "title": "Вступ до розмови", + "add": "Додати", + "writeOpener": "Напишіть вступне повідомлення", + "placeholder": "Напишіть тут своє вступне повідомлення, ви можете використовувати змінні, спробуйте ввести {{variable}}.", + "openingQuestion": "Відкриваючі питання", + "openingQuestionPlaceholder": "Ви можете використовувати змінні, спробуйте ввести {{variable}}.", + "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": "Односторонній пошук", + "description": "На основі намірів користувача та описів Знань Агент самостійно вибирає найкращі Знання для запитів. Найкраще підходить для застосунків з окремими, обмеженими Знаннями." + }, + "retrieveMultiWay": { + "title": "Багатосторонній пошук", + "description": "На основі намірів користувача запитує по всіх Базах Знань, отримує релевантний текст із кількох джерел і вибирає найкращі результати, що відповідають запиту користувача, після переранжування. Необхідна конфігурація API моделі переранжування." + }, + "rerankModelRequired": "Необхідна модель переранжування", + "params": "Параметри", + "top_k": "Найкращих K", + "top_kTip": "Використовується для фільтрації фрагментів, найбільш схожих на запитання користувачів. Система також динамічно регулюватиме значення K у відповідності з max_tokens обраної моделі.", + "score_threshold": "Поріг оцінки", + "score_thresholdTip": "Використовується для встановлення порогу схожості для фільтрації фрагментів.", + "retrieveChangeTip": "Зміна режиму індексування та режиму отримання може вплинути на застосунки, пов’язані з цими знаннями.", + "embeddingModelRequired": "Потрібна налаштована модель вбудовування" + }, + "debugAsSingleModel": "Налагодження як одна модель", + "debugAsMultipleModel": "Налагодження як багато моделей", + "duplicateModel": "Дублювання", + "publishAs": "Опублікувати як", + "assistantType": { + "name": "Тип Асистента", + "chatAssistant": { + "name": "Базовий помічник", + "description": "Створіть помічника на базі чату за допомогою великої мовної моделі" + }, + "agentAssistant": { + "name": "Інтелектуальний помічник", + "description": "Створіть інтелектуального агента, який може самостійно вибирати інструменти для виконання завдань" + } + }, + "agent": { + "agentMode": "Режим агента", + "agentModeDes": "Встановіть тип режиму висновку для агента", + "agentModeType": { + "ReACT": "ReACT", + "functionCall": "Виклик функції" + }, + "setting": { + "name": "Налаштування агента", + "description": "Налаштування агента дозволяють встановити режим агента та розширені функції, наприклад вбудовані команди, доступні тільки для типу агента.", + "maximumIterations": { + "name": "Максимальна кількість ітерацій", + "description": "Обмежте кількість ітерацій, які може виконати помічник агента" + } + }, + "buildInPrompt": "Вбудована команда", + "firstPrompt": "Перша команда", + "nextIteration": "Наступна ітерація", + "promptPlaceholder": "Напишіть тут своє запрошення", + "tools": { + "name": "Інструменти", + "description": "Використання інструментів може розширити можливості LLM, наприклад, пошук в Інтернеті або виконання наукових розрахунків", + "enabled": "Увімкнено" + } + }, + "codegen": { + "generatedCodeTitle": "Згенерований код", + "generate": "Генерувати", + "title": "Генератор коду", + "loading": "Генерація коду...", + "instruction": "Інструкції", + "applyChanges": "Застосувати зміни", + "resTitle": "Згенерований код", + "noDataLine2": "Тут з'явиться попередній перегляд коду.", + "noDataLine1": "Опишіть свій випадок використання зліва,", + "apply": "Застосовувати", + "overwriteConfirmTitle": "Перезаписати існуючий код?", + "overwriteConfirmMessage": "Ця дія перезапише існуючий код. Хочете продовжити?", + "instructionPlaceholder": "Введіть детальний опис коду, який ви хочете згенерувати.", + "description": "Генератор коду використовує налаштовані моделі для генерації високоякісного коду на основі ваших інструкцій. Будь ласка, надайте чіткі та детальні інструкції." + }, + "generate": { + "template": { + "pythonDebugger": { + "name": "Налагоджувач Python", + "instruction": "Бот, який може генерувати та налагоджувати ваш код на основі ваших інструкцій" + }, + "translation": { + "name": "Переклад", + "instruction": "Перекладач, який може перекладати кількома мовами" + }, + "professionalAnalyst": { + "name": "Професійний аналітик", + "instruction": "Отримуйте аналітичні дані, виявляйте ризики та перетворюйте ключову інформацію з довгих звітів в єдину записку" + }, + "excelFormulaExpert": { + "name": "Експерт з формул Excel", + "instruction": "Чат-бот, який може допомогти користувачам-початківцям розуміти, використовувати та створювати формули Excel на основі інструкцій користувача" + }, + "travelPlanning": { + "name": "Планування подорожей", + "instruction": "Помічник із планування подорожей — це інтелектуальний інструмент, розроблений, щоб допомогти користувачам без зусиль планувати свої поїздки" + }, + "SQLSorcerer": { + "name": "SQL чаклун", + "instruction": "Перетворюйте повсякденну мову на SQL-запити" + }, + "GitGud": { + "name": "Git gud", + "instruction": "Генеруйте відповідні команди Git на основі описаних користувачем дій контролю версій" + }, + "meetingTakeaways": { + "name": "Підсумки зустрічі", + "instruction": "Перетворіть зустрічі на стислі підсумки, включаючи теми для обговорення, ключові висновки та пункти дій" + }, + "writingsPolisher": { + "name": "Письменницька полірувальна машина", + "instruction": "Використовуйте передові методи редагування тексту, щоб покращити свої тексти" + } + }, + "instruction": "Інструкції", + "generate": "Генерувати", + "apply": "Застосовувати", + "tryIt": "Спробуйте", + "overwriteTitle": "Змінити існуючу конфігурацію?", + "loading": "Оркестрування програми для вас...", + "resTitle": "Згенерований запит", + "title": "Генератор підказок", + "overwriteMessage": "Застосування цього рядка замінить існуючу конфігурацію.", + "description": "Генератор підказок використовує налаштовану модель для оптимізації запитів для кращої якості та кращої структури. Напишіть, будь ласка, зрозумілу та детальну інструкцію.", + "versions": "Версії", + "version": "Версія", + "press": "Пресa", + "optional": "Необов'язково", + "dismiss": "Відхилити", + "to": "до", + "latest": "Останні новини", + "idealOutput": "Ідеальний вихід", + "insertContext": "вставте контекст", + "optimizePromptTooltip": "Оптимізувати в генераторі запитів", + "optimizationNote": "Примітка щодо оптимізації", + "instructionPlaceHolderTitle": "Опишіть, як би ви хотіли покращити цей запит. Наприклад:", + "instructionPlaceHolderLine3": "Тон занадто жорсткий, будь ласка, зробіть його більш дружнім.", + "instructionPlaceHolderLine2": "Формат виводу неправильний, будь ласка, суворо дотримуйтесь формату JSON.", + "newNoDataLine1": "Напишіть інструкцію в лівій колонці та натисніть Генерувати, щоб побачити відповідь.", + "instructionPlaceHolderLine1": "Зробіть вихідні дані більш стислими, зберігаючи основні моменти.", + "idealOutputPlaceholder": "Опишіть свій ідеальний формат відповіді, довжину, тон та вимоги до змісту...", + "codeGenInstructionPlaceHolderLine": "Чим детальнішим буде зворотний зв'язок, наприклад, типи даних вхідних та вихідних даних, а також спосіб обробки змінних, тим точнішою буде генерація коду." + }, + "warningMessage": { + "timeoutExceeded": "Результати не відображаються через тайм-аут. Будь ласка, зверніться до журналів, щоб отримати повні результати." + }, + "noResult": "Тут буде відображено вихідні дані." +} diff --git a/web/i18n/uk-UA/app-debug.ts b/web/i18n/uk-UA/app-debug.ts deleted file mode 100644 index 18b4d32163..0000000000 --- a/web/i18n/uk-UA/app-debug.ts +++ /dev/null @@ -1,597 +0,0 @@ -const translation = { - pageTitle: { - line1: 'PROMPT', - line2: 'Engineering', // Or 'інженерія' - }, - orchestrate: 'Диригувати', - promptMode: { - simple: 'Перейти в експертний режим, щоб редагувати весь запрос PROMPT', - advanced: 'Експертний режим', - switchBack: 'Змінити налаштування', - advancedWarning: { - title: 'Ви перейшли в експертний режим, і після того, як ви зміните PROMPT, ви НЕ можете повернутися назад в базовий режим.', - description: 'В експертному режимі ви можете редагувати весь PROMPT.', - learnMore: 'Детальніше', - ok: 'Гаразд', - }, - operation: { - addMessage: 'Додати повідомлення', - }, - contextMissing: 'Компонент контексту відсутній, ефективність підказки може бути не найкращою.', - }, - operation: { - applyConfig: 'Опублікувати', - resetConfig: 'Скинути', - debugConfig: 'Налагодження', - addFeature: 'Додати функціонал', - automatic: 'Автоматично', - stopResponding: 'Припинити реагувати', - agree: 'лайк', - disagree: 'дизлайк', - cancelAgree: 'Скасувати лайк', - cancelDisagree: 'Скасувати дизлайк', - userAction: 'Користувач ', - }, - notSetAPIKey: { - title: 'Ключ провайдера LLM не встановлено', - trailFinished: 'Демо закінчилось', - description: 'Ключ провайдера LLM не встановлено, і його потрібно встановити перед налагодженням.', - 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: 'Цитати та Атрибуції', // Citations and Attributions - description: 'Після активації показувати вихідний документ та атрибутований розділ згенерованого вмісту.', - resDes: 'Цитати та Атрибуції активовано', - }, - annotation: { - title: 'Відповідь-Анотація', // Annotation Reply - description: 'Ви можете вручну додати високоякісну відповідь до кешу для пріоритетного порівняння з подібними запитаннями користувачів.', - resDes: 'Відповідь-Анотація увімкнена', - scoreThreshold: { - title: 'Поріг оцінки', // Score Threshold - description: 'Використовується для встановлення порогу схожості для відповіді-анотації.', - easyMatch: 'Легке співпадіння', // Easy Match - accurateMatch: 'Точне співпадіння', // Accurate Match - }, - matchVariable: { - title: 'Збіг змінних', // Match Variable - choosePlaceholder: 'Виберіть змінну відповідності', // Choose match variable - }, - cacheManagement: 'Анотації', // Annotations - cached: 'Анотовано', // Annotated - remove: 'Видалити', // Remove - removeConfirm: 'Видалити цю анотацію?', - add: 'Додати анотацію', // Add annotation - edit: 'Редагувати анотацію', // Edit annotation - }, - dataSet: { - title: 'Контекст', // Context - noData: 'Ви можете імпортувати знання як контекст', // You can import Knowledge as context - selectTitle: 'Виберіть довідкові знання', // Select reference Knowledge - selected: 'Знання обрані', // Knowledge selected - noDataSet: 'Знання не знайдені', // No Knowledge found - toCreate: 'Перейти до створення', // Go to create - notSupportSelectMulti: 'Наразі підтримується лише одне знання', // Currently only support one Knowledge - queryVariable: { - title: 'Змінна запиту', // Query variable - tip: 'Ця змінна буде використовуватися як вхідний запит для отримання контексту, отримання контекстної інформації, пов’язаної з введенням цієї змінної.', - choosePlaceholder: 'Виберіть змінну для запиту', // Choose query variable - noVar: 'Змінних немає', // No variables - noVarTip: 'будь ласка, створіть змінну в розділі Змінні', // please create a variable under the Variables section - unableToQueryDataSet: 'Неможливо виконати запит до Знань', // Unable to query the Knowledge - unableToQueryDataSetTip: 'Не вдалося успішно виконати запит до Бази Знань, будь ласка, виберіть змінну контекстного запиту в розділі контексту.', - ok: 'ОК', // OK - contextVarNotEmpty: 'змінна контекстного запиту не може бути порожньою', // context query variable can not be empty - deleteContextVarTitle: 'Видалити змінну “{{varName}}”?', // Delete variable “{{varName}}”? - deleteContextVarTip: 'Ця змінна була встановлена ​​як змінна контекстного запиту, і її видалення вплине на нормальне використання Знань. Якщо вам все ще потрібно її видалити, будь ласка, виберіть її повторно в розділі контексту.', - }, - }, - tools: { - title: 'Інструменти', // Tools - tips: 'Інструменти надають стандартний метод виклику API, приймаючи вхідні дані користувача або змінні як параметри запиту для запиту зовнішніх даних як контексту.', - toolsInUse: 'Використовується інструментів: {{count}}', // {{count}} tools in use - modal: { - title: 'Інструмент', // Tool - toolType: { - title: 'Тип інструменту', // Tool Type - placeholder: 'Будь ласка, виберіть тип інструменту', // Please select the tool type - }, - name: { - title: 'Назва', // Name - placeholder: 'Будь ласка, введіть назву', // Please enter the name - }, - variableName: { - title: 'Назва змінної', // Variable Name - placeholder: 'Будь ласка, введіть назву змінної', // Please enter the variable name - }, - }, - }, - conversationHistory: { - title: 'Історія розмов', // Conversation History - description: 'Встановіть префікси для ролей у розмові', // Set prefix names for conversation roles - tip: 'Історію розмов не ввімкнено, додайте у запит вище.', // The Conversation History is not enabled, please add in the prompt above. - learnMore: 'Дізнатися більше', // Learn more - editModal: { - title: 'Редагувати назви ролей у розмові', // Edit Conversation Role Names - userPrefix: 'Префікс користувача', // User prefix - assistantPrefix: 'Префікс помічника', // Assistant prefix - }, - }, - toolbox: { - title: 'ІНСТРУМЕНТИ', // TOOLBOX (all caps to convey its section title nature) - }, - moderation: { - // Content moderation - title: 'Модерація контенту', - // Secure model output... - description: 'Захистіть вивід моделі, використовуючи API модерації або список конфіденційних слів.', - // INPUT/OUTPUT Content Enabled - allEnabled: 'Вміст ВВЕДЕННЯ/ВИВЕДЕННЯ ввімкнено', - // INPUT Content Enabled - inputEnabled: 'Вміст ВВЕДЕННЯ ввімкнено', - // OUTPUT Content Enabled - outputEnabled: 'Вміст ВИВЕДЕННЯ ввімкнено', - modal: { - title: 'Налаштування модерації вмісту', // Content moderation settings - provider: { - title: 'Провайдер', // Provider - openai: 'Модерація OpenAI', // OpenAI Moderation - openaiTip: { - prefix: 'Для модерації OpenAI потрібен ключ API OpenAI, налаштований у ', - suffix: '.', - }, - keywords: 'Ключові слова', // Keywords - }, - keywords: { - tip: 'По одному на рядок, розділені розривами рядків. До 100 символів у рядку.', - placeholder: 'По одному на рядок, розділені розривами рядків', - line: 'Рядок', - }, - content: { - input: 'Помірне ВВЕДЕННЯ Вмісту', - output: 'Помірне ВИВЕДЕННЯ Вмісту', - preset: 'Попередньо встановлені відповіді', // Preset replies - placeholder: 'Попередньо встановлені відповіді тут', - condition: 'Увімкнено принаймні одне: «Модерувати ВВЕДЕННЯ ТА ВИВЕДЕННЯ Вмісту»', - fromApi: 'Попередньо встановлені відповіді повертаються через API', // Preset replies are returned by API - errorMessage: 'Попередньо встановлені відповіді не можуть бути порожніми', - supportMarkdown: 'Підтримка Markdown', // Markdown supported - }, - openaiNotConfig: { - before: 'Модерація OpenAI вимагає, щоб ключ API OpenAI був налаштований у ', - after: '', - }, - }, - contentEnableLabel: 'Модерація контенту увімкнена', - }, - fileUpload: { - title: 'Завантаження файлу', - description: 'Поле вводу чату дозволяє завантажувати зображення, документи та інші файли.', - supportedTypes: 'Підтримувані типи файлів', - numberLimit: 'Максимальна кількість завантажень', - modalTitle: 'Налаштування завантаження файлів', - }, - imageUpload: { - title: 'Завантаження зображення', - description: 'Дозволити завантаження зображень.', - supportedTypes: 'Підтримувані типи файлів', - numberLimit: 'Максимальна кількість завантажень', - modalTitle: 'Налаштування завантаження зображень', - }, - bar: { - empty: 'Увімкніть функції для покращення користувацького досвіду веб-додатка', - enableText: 'Функції увімкнено', - manage: 'Керувати', - }, - documentUpload: { - title: 'Документ', - description: 'Увімкнення документа дозволить моделі приймати документи та відповідати на запитання про них.', - }, - audioUpload: { - title: 'Аудіо', - description: 'Увімкнення аудіо дозволить моделі обробляти аудіофайли для транскрипції та аналізу.', - }, - }, - automatic: { - }, - resetConfig: { - title: 'Підтвердіть скидання?', - message: 'Скидання призводить до скасування змін, відновлюючи останню опубліковану конфігурацію.', - }, - errorMessage: { - // name of the key: {{key}} required - nameOfKeyRequired: 'назва ключа: {{key}} обов’язкова', - // {{key}} value can not be empty - valueOfVarRequired: 'значення {{key}} не може бути порожнім', - // Request text is required. - queryRequired: 'Текст запиту обов’язковий.', - // Please wait for the response to the previous message to complete. - waitForResponse: 'Будь ласка, зачекайте, доки буде завершено відповідь на попереднє повідомлення.', - // Please wait for the response to the batch task to complete. - waitForBatchResponse: 'Будь ласка, дочекайтеся завершення відповіді на пакетне завдання.', - // Please choose a model - notSelectModel: 'Будь ласка, виберіть модель', - // Please wait for the image to upload - waitForImgUpload: 'Будь ласка, зачекайте, поки зображення завантажиться', - waitForFileUpload: 'Будь ласка, зачекайте, поки файл/файли завантажаться', - }, - // Instructions - chatSubTitle: 'Інструкції', - // Prefix Prompt - completionSubTitle: 'Префікс команди', - promptTip: 'Запити керують відповідями ШІ, надаючи інструкції та обмеження. Вставте змінні, як-от {{input}}. Цей запит не буде видно користувачам.', - // Formatting changed - formattingChangedTitle: 'Змінено форматування', - // Modifying the formatting will reset the debug area, are you sure? - formattingChangedText: 'Змінення форматування призведе до скидання області налагодження. Ви впевнені?', - // Variables - variableTitle: 'Змінні', - variableTip: 'Користувачі заповнюють змінні у формі, автоматично замінюючи змінні в команді.', - notSetVar: 'Змінні дозволяють користувачам вводити підказки або вступні зауваження під час заповнення форм. Ви можете спробувати ввести "{{input}}" у слова підказки.', - // Undefined variables referenced in pre-prompt, are you want to add them in user input form? - autoAddVar: 'На невизначені змінні, на які посилаються в попередньому запиті, є посилання. Ви хочете додати їх у форму вводу користувача?', - variableTable: { - key: 'Ключ змінної', // Variable Key - name: 'Назва поля для введення користувача', // User Input Field Name - type: 'Тип введення', // Input Type - action: 'Дії', // Actions - typeString: 'Рядок', // String - typeSelect: 'Вибрати', // Select - }, - varKeyError: { - canNoBeEmpty: 'Потрібен {{key}}', // Variable key can not be empty - tooLong: '{{key}} занадто довгий. Не може бути більше 30 символів', // Variable key: {{key}} too length. Can not be longer then 30 characters - notValid: '{{key}} недійсний. Може містити лише літери, цифри та підкреслення', // Variable key: {{key}} is invalid. Can only contain letters, numbers, and underscores - notStartWithNumber: '{{key}} не може починатися з цифри', // Variable key: {{key}} can not start with a number - keyAlreadyExists: ':{{key}} вже існує', // Variable key: :{{key}} already exists - }, - otherError: { - promptNoBeEmpty: 'Команда не може бути порожньою', // Prompt can not be empty - historyNoBeEmpty: 'Історію розмови необхідно встановити у підказці', // Conversation history must be set in the prompt - queryNoBeEmpty: 'Запит має бути встановлений у підказці', // Query must be set in the prompt - }, - variableConfig: { - 'addModalTitle': 'Додати Поле Введення', - 'editModalTitle': 'Редагувати Поле Введення', - 'description': 'Налаштування для змінної {{varName}}', - 'fieldType': 'Тип поля', - 'string': 'Короткий текст', - 'text-input': 'Короткий текст', - 'paragraph': 'Параграф', - 'select': 'Вибрати', - 'number': 'Число', - 'notSet': 'Не встановлено, спробуйте ввести {{input}} у префіксній підказці', - 'stringTitle': 'Параметри поля введення форми', - 'maxLength': 'Максимальна довжина', - 'options': 'Опції', - 'addOption': 'Додати опцію', - 'apiBasedVar': 'Змінна на основі API', - 'varName': 'Назва змінної', - 'labelName': 'Назва мітки', - 'inputPlaceholder': 'Будь ласка, введіть', - 'required': 'Обов\'язково', - 'hide': 'Приховати', - 'errorMsg': { - labelNameRequired: 'Потрібно вказати назву мітки', - varNameCanBeRepeat: 'Назва змінної не може повторюватися', - atLeastOneOption: 'Потрібно щонайменше одну опцію', - optionRepeat: 'Є повторні опції', - }, - 'defaultValue': 'Значення за замовчуванням', - 'noDefaultValue': 'Без значення за замовчуванням', - 'selectDefaultValue': 'Обрати значення за замовчуванням', - 'file': { - image: { - name: 'Образ', - }, - audio: { - name: 'Аудіо', - }, - document: { - name: 'Документ', - }, - video: { - name: 'Відео', - }, - custom: { - description: 'Укажіть інші типи файлів.', - createPlaceholder: ' Розширення файлу, наприклад .doc', - name: 'Інші типи файлів', - }, - supportFileTypes: 'Підтримка типів файлів', - }, - 'content': 'Вміст', - 'both': 'Як', - 'single-file': 'Один файл', - 'multi-files': 'Список файлів', - 'localUpload': 'Локальне завантаження', - 'uploadFileTypes': 'Типи файлів для завантаження', - 'maxNumberOfUploads': 'Максимальна кількість завантажень', - 'maxNumberTip': 'Документ < {{docLimit}}, зображення < {{imgLimit}}, аудіо < {{audioLimit}}, відео < {{videoLimit}}', - 'jsonSchema': 'JSON схема', - 'optional': 'додатковий', - 'json': 'JSON Код', - 'checkbox': 'Чекбокс', - 'unit': 'Одиниці', - 'placeholder': 'Заповнювач', - 'noDefaultSelected': 'Не вибирати', - 'startChecked': 'Почати перевірено', - 'displayName': 'Відображуване ім\'я', - 'uploadMethod': 'Спосіб завантаження', - 'showAllSettings': 'Показати всі налаштування', - 'startSelectedOption': 'Почати вибраний варіант', - 'tooltips': 'Спливаючі чтива', - 'placeholderPlaceholder': 'Введіть текст для відображення, коли поле порожнє', - 'unitPlaceholder': 'Показувати одиниці виміру після чисел, наприклад токени', - 'defaultValuePlaceholder': 'Введіть значення за замовчуванням, щоб попередньо заповнити поле', - 'tooltipsPlaceholder': 'Введіть корисний текст, який відображається при наведенні курсору на мітку', - }, - vision: { - // Vision - name: 'Зображення', - description: 'Увімкнення функції "Зображення" дозволить моделі приймати зображення та відповідати на запитання про них.', - // Settings - settings: 'Налаштування', - visionSettings: { - title: 'Налаштування зображень', // Vision Settings - resolution: 'Роздільна здатність', // Resolution - resolutionTooltip: 'низька роздільна здатність дозволить моделі отримати зображення з низькою роздільною здатністю 512 x 512 пікселів і представити зображення з обмеженням у 65 токенів. Це дозволяє API швидше повертати відповіді та споживати менше вхідних токенів для випадків використання, які не потребують високої деталізації.\nвисока роздільна здатність спочатку дозволить моделі побачити зображення з низькою роздільною здатністю, а потім створити детальні фрагменти вхідних зображень у вигляді квадратів 512px на основі розміру вхідного зображення. Кожен із детальних фрагментів використовує подвійний запас токенів, загалом 129 токенів.', - high: 'Висока', // High - low: 'Низька', // Low - uploadMethod: 'Спосіб завантаження', // Upload Method - both: 'Обидва', // Both - localUpload: 'Локальне завантаження', // Local Upload - url: 'URL-адреса', // URL - uploadLimit: 'Ліміт завантаження', // Upload Limit - }, - onlySupportVisionModelTip: 'Підтримує лише моделі зору', - }, - voice: { - name: 'Голос', // Voice - defaultDisplay: 'Голос за замовчуванням', // Default Voice - description: 'Налаштування синтезу мовлення', // Text to speech voice Settings - settings: 'Налаштування', // Settings - voiceSettings: { - title: 'Налаштування голосу', // Voice Settings - language: 'Мова', // Language - resolutionTooltip: 'Мовна підтримка для синтезу мовлення.', // Text-to-speech voice support language。 - voice: 'Голос', // Voice - autoPlay: 'Автоматичне відтворення', - autoPlayEnabled: 'ВІДЧИНЕНО', - autoPlayDisabled: 'закриття', - }, - }, - openingStatement: { - title: 'Вступ до розмови', // Conversation Opener - add: 'Додати', // Add - writeOpener: 'Напишіть вступне повідомлення', // Write opener - placeholder: 'Напишіть тут своє вступне повідомлення, ви можете використовувати змінні, спробуйте ввести {{variable}}.', // Write your opener message here... - openingQuestion: 'Відкриваючі питання', // Opening Questions - openingQuestionPlaceholder: 'Ви можете використовувати змінні, спробуйте ввести {{variable}}.', - noDataPlaceHolder: 'Початок розмови з користувачем може допомогти ШІ встановити більш тісний зв’язок з ним у розмовних застосунках.', // ... conversational applications. - varTip: 'Ви можете використовувати змінні, спробуйте ввести {{variable}}', // You can use variables, try type {{variable}} - tooShort: 'Для створення вступних зауважень для розмови потрібно принаймні 20 слів вступного запиту.', // ... are required to generate an opening remarks for the conversation. - notIncludeKey: 'Початковий запит не включає змінну: {{key}}. Будь ласка, додайте її до початкового запиту.', // ... does not include the variable ... - }, - modelConfig: { - model: 'Модель', // Model - setTone: 'Встановити тон відповідей', // Set tone of responses - title: 'Модель і параметри', // Model and Parameters - modeType: { - chat: 'Чат', // Chat - completion: 'Завершення', // Complete - }, - }, - inputs: { - title: 'Налагодження та попередній перегляд', // Debug and Preview - noPrompt: 'Спробуйте написати якийсь запит у полі введення префіксу команди', // Try write some prompt in pre-prompt input - userInputField: 'Поле введення користувача', // User Input Field - noVar: 'Заповніть значення змінної, яка буде автоматично замінена в слові-підказці під час кожного запуску нового сеансу.', // Fill in the value of the variable... - chatVarTip: 'Заповніть значення змінної, яка буде автоматично замінена в слові-підказці під час кожного запуску нового сеансу.', // Fill in the value of the variable... - completionVarTip: 'Заповніть значення змінної, яка буде автоматично замінена в словах-підказках під час кожного відправлення запиту.', // Fill in the value of the variable... - previewTitle: 'Попередній перегляд підказки', // Prompt preview - queryTitle: 'Вміст запиту', // Query content - queryPlaceholder: 'Будь ласка, введіть текст запиту', // Please enter the request text. - run: 'ЗАПУСТИТИ', // RUN - }, - // Output Text - result: 'Вихідний текст', - datasetConfig: { - // Retrieval settings - settingTitle: 'Налаштування пошуку', - knowledgeTip: 'Клацніть кнопку “+”, щоб додати знання', - retrieveOneWay: { - title: 'Односторонній пошук', // N-to-1 retrieval - description: 'На основі намірів користувача та описів Знань Агент самостійно вибирає найкращі Знання для запитів. Найкраще підходить для застосунків з окремими, обмеженими Знаннями.', - }, - retrieveMultiWay: { - title: 'Багатосторонній пошук', // Multi-path retrieval - description: 'На основі намірів користувача запитує по всіх Базах Знань, отримує релевантний текст із кількох джерел і вибирає найкращі результати, що відповідають запиту користувача, після переранжування. Необхідна конфігурація API моделі переранжування.', - }, - // Rerank model is required - rerankModelRequired: 'Необхідна модель переранжування', - // Params - params: 'Параметри', - // Top K - top_k: 'Найкращих K', - top_kTip: 'Використовується для фільтрації фрагментів, найбільш схожих на запитання користувачів. Система також динамічно регулюватиме значення K у відповідності з max_tokens обраної моделі.', - // Score Threshold - score_threshold: 'Поріг оцінки', - score_thresholdTip: 'Використовується для встановлення порогу схожості для фільтрації фрагментів.', - // Modifying... - retrieveChangeTip: 'Зміна режиму індексування та режиму отримання може вплинути на застосунки, пов’язані з цими знаннями.', - embeddingModelRequired: 'Потрібна налаштована модель вбудовування', - }, - // Debug as Single Model - debugAsSingleModel: 'Налагодження як одна модель', - // Debug as Multiple Models - debugAsMultipleModel: 'Налагодження як багато моделей', - // Duplicate - duplicateModel: 'Дублювання', - // Publish as - publishAs: 'Опублікувати як', - assistantType: { - name: 'Тип Асистента', // Assistant Type - chatAssistant: { - name: 'Базовий помічник', // Basic Assistant - description: 'Створіть помічника на базі чату за допомогою великої мовної моделі', // Build a chat-based... - }, - agentAssistant: { - name: 'Інтелектуальний помічник', // Agent Assistant - description: 'Створіть інтелектуального агента, який може самостійно вибирати інструменти для виконання завдань', // Build an intelligent Agent... - }, - }, - agent: { - agentMode: 'Режим агента', // Agent Mode - agentModeDes: 'Встановіть тип режиму висновку для агента', // Set the type of inference mode... - agentModeType: { - ReACT: 'ReACT', - functionCall: 'Виклик функції', // Function Calling - }, - setting: { - name: 'Налаштування агента', // Agent Settings - description: 'Налаштування агента дозволяють встановити режим агента та розширені функції, наприклад вбудовані команди, доступні тільки для типу агента.', // Agent Assistant settings allow... - maximumIterations: { - name: 'Максимальна кількість ітерацій', // Maximum Iterations - description: 'Обмежте кількість ітерацій, які може виконати помічник агента', // Limit the number of iterations... - }, - }, - buildInPrompt: 'Вбудована команда', // Build-In Prompt - firstPrompt: 'Перша команда', // First Prompt - nextIteration: 'Наступна ітерація', // Next Iteration - promptPlaceholder: 'Напишіть тут своє запрошення', // Write your prompt here - tools: { - name: 'Інструменти', // Tools - description: 'Використання інструментів може розширити можливості LLM, наприклад, пошук в Інтернеті або виконання наукових розрахунків', // Using tools can extend... - enabled: 'Увімкнено', // Enabled - }, - }, - codegen: { - generatedCodeTitle: 'Згенерований код', - generate: 'Генерувати', - title: 'Генератор коду', - loading: 'Генерація коду...', - instruction: 'Інструкції', - applyChanges: 'Застосувати зміни', - resTitle: 'Згенерований код', - noDataLine2: 'Тут з\'явиться попередній перегляд коду.', - noDataLine1: 'Опишіть свій випадок використання зліва,', - apply: 'Застосовувати', - overwriteConfirmTitle: 'Перезаписати існуючий код?', - overwriteConfirmMessage: 'Ця дія перезапише існуючий код. Хочете продовжити?', - instructionPlaceholder: 'Введіть детальний опис коду, який ви хочете згенерувати.', - description: 'Генератор коду використовує налаштовані моделі для генерації високоякісного коду на основі ваших інструкцій. Будь ласка, надайте чіткі та детальні інструкції.', - }, - generate: { - template: { - pythonDebugger: { - name: 'Налагоджувач Python', - instruction: 'Бот, який може генерувати та налагоджувати ваш код на основі ваших інструкцій', - }, - translation: { - name: 'Переклад', - instruction: 'Перекладач, який може перекладати кількома мовами', - }, - professionalAnalyst: { - name: 'Професійний аналітик', - instruction: 'Отримуйте аналітичні дані, виявляйте ризики та перетворюйте ключову інформацію з довгих звітів в єдину записку', - }, - excelFormulaExpert: { - name: 'Експерт з формул Excel', - instruction: 'Чат-бот, який може допомогти користувачам-початківцям розуміти, використовувати та створювати формули Excel на основі інструкцій користувача', - }, - travelPlanning: { - name: 'Планування подорожей', - instruction: 'Помічник із планування подорожей — це інтелектуальний інструмент, розроблений, щоб допомогти користувачам без зусиль планувати свої поїздки', - }, - SQLSorcerer: { - name: 'SQL чаклун', - instruction: 'Перетворюйте повсякденну мову на SQL-запити', - }, - GitGud: { - name: 'Git gud', - instruction: 'Генеруйте відповідні команди Git на основі описаних користувачем дій контролю версій', - }, - meetingTakeaways: { - name: 'Підсумки зустрічі', - instruction: 'Перетворіть зустрічі на стислі підсумки, включаючи теми для обговорення, ключові висновки та пункти дій', - }, - writingsPolisher: { - name: 'Письменницька полірувальна машина', - instruction: 'Використовуйте передові методи редагування тексту, щоб покращити свої тексти', - }, - }, - instruction: 'Інструкції', - generate: 'Генерувати', - apply: 'Застосовувати', - tryIt: 'Спробуйте', - overwriteTitle: 'Змінити існуючу конфігурацію?', - loading: 'Оркестрування програми для вас...', - resTitle: 'Згенерований запит', - title: 'Генератор підказок', - overwriteMessage: 'Застосування цього рядка замінить існуючу конфігурацію.', - description: 'Генератор підказок використовує налаштовану модель для оптимізації запитів для кращої якості та кращої структури. Напишіть, будь ласка, зрозумілу та детальну інструкцію.', - versions: 'Версії', - version: 'Версія', - press: 'Пресa', - optional: 'Необов\'язково', - dismiss: 'Відхилити', - to: 'до', - latest: 'Останні новини', - idealOutput: 'Ідеальний вихід', - insertContext: 'вставте контекст', - optimizePromptTooltip: 'Оптимізувати в генераторі запитів', - optimizationNote: 'Примітка щодо оптимізації', - instructionPlaceHolderTitle: 'Опишіть, як би ви хотіли покращити цей запит. Наприклад:', - instructionPlaceHolderLine3: 'Тон занадто жорсткий, будь ласка, зробіть його більш дружнім.', - instructionPlaceHolderLine2: 'Формат виводу неправильний, будь ласка, суворо дотримуйтесь формату JSON.', - newNoDataLine1: 'Напишіть інструкцію в лівій колонці та натисніть Генерувати, щоб побачити відповідь.', - instructionPlaceHolderLine1: 'Зробіть вихідні дані більш стислими, зберігаючи основні моменти.', - idealOutputPlaceholder: 'Опишіть свій ідеальний формат відповіді, довжину, тон та вимоги до змісту...', - codeGenInstructionPlaceHolderLine: 'Чим детальнішим буде зворотний зв\'язок, наприклад, типи даних вхідних та вихідних даних, а також спосіб обробки змінних, тим точнішою буде генерація коду.', - }, - warningMessage: { - timeoutExceeded: 'Результати не відображаються через тайм-аут. Будь ласка, зверніться до журналів, щоб отримати повні результати.', - }, - noResult: 'Тут буде відображено вихідні дані.', -} - -export default translation diff --git a/web/i18n/uk-UA/app-log.json b/web/i18n/uk-UA/app-log.json new file mode 100644 index 0000000000..8a369b57e3 --- /dev/null +++ b/web/i18n/uk-UA/app-log.json @@ -0,0 +1,110 @@ +{ + "title": "Журнали", + "description": "Журнали фіксують робочий статус додатка, включаючи введення користувачів та відповіді штучного інтелекту.", + "dateTimeFormat": "MM/DD/YYYY hh:mm:ss A", + "table": { + "header": { + "updatedTime": "Час оновлення", + "time": "Час створення", + "endUser": "Кінцевий Користувач або Обліковий Запис", + "input": "Введення", + "output": "Виведення", + "summary": "Заголовок", + "messageCount": "Кількість Повідомлень", + "userRate": "Рейтинг Користувача", + "adminRate": "Рейтинг Оператора", + "startTime": "ЧАС ПОЧАТКУ", + "status": "СТАТУС", + "runtime": "ЧАС ВИКОНАННЯ", + "tokens": "ТОКЕНИ", + "user": "КІНЦЕВИЙ КОРИСТУВАЧ АБО ОБЛІКОВИЙ ЗАПИС", + "version": "ВЕРСІЯ", + "triggered_from": "АКТИВУЄТЬСЯ ВІД" + }, + "pagination": { + "previous": "Попередня", + "next": "Наступна" + }, + "empty": { + "noChat": "Ще немає розмов", + "noOutput": "Немає виводу", + "element": { + "title": "Хтось тут?", + "content": "Спостерігайте та анотуйте взаємодії між кінцевими користувачами та додатками штучного інтелекту тут, щоб постійно покращувати точність штучного інтелекту. Ви можете спробувати поділитися або протестувати веб-додаток самостійно, а потім повернутися на цю сторінку." + } + } + }, + "detail": { + "time": "Час", + "conversationId": "ID Розмови", + "promptTemplate": "Шаблон Запитання", + "promptTemplateBeforeChat": "Шаблон Запитання Перед Чатом · Як Системне Повідомлення", + "annotationTip": "Покращення Позначені Користувачем {{user}}", + "timeConsuming": "", + "second": "с", + "tokenCost": "Витрати Токенів", + "loading": "завантаження", + "operation": { + "like": "подобається", + "dislike": "не подобається", + "addAnnotation": "Додати Покращення", + "editAnnotation": "Редагувати Покращення", + "annotationPlaceholder": "Введіть очікувану відповідь, яку ви хочете, щоб штучний інтелект повертав, це може бути використано для налаштування моделі та постійного покращення якості генерації тексту в майбутньому." + }, + "variables": "Змінні", + "uploadImages": "Завантажені Зображення", + "modelParams": "Параметри моделі" + }, + "filter": { + "period": { + "today": "Сьогодні", + "last7days": "Останні 7 днів", + "last4weeks": "Останні 4 тижні", + "last3months": "Останні 3 місяці", + "last12months": "Останні 12 місяців", + "monthToDate": "Місяць до сьогодні", + "quarterToDate": "Квартал до сьогодні", + "yearToDate": "Рік до сьогодні", + "allTime": "За весь час", + "last30days": "Останні 30 днів", + "custom": "Користувацький" + }, + "annotation": { + "all": "Всі", + "annotated": "Покращення з Анотацією ({{count}} елементів)", + "not_annotated": "Без Анотації" + }, + "sortBy": "Сортувати за:", + "descending": "спадаючий", + "ascending": "зростаючий" + }, + "workflowTitle": "Журнали Робочого Процесу", + "workflowSubtitle": "Журнал зареєстрував роботу Автоматизації.", + "runDetail": { + "title": "Журнал Розмови", + "workflowTitle": "Деталі Журналу", + "fileListDetail": "Деталь", + "fileListLabel": "Подробиці файлу", + "testWithParams": "Тест з параметрами" + }, + "promptLog": "Журнал Запитань", + "agentLog": "Журнал агента", + "viewLog": "Переглянути журнал", + "agentLogDetail": { + "agentMode": "Режим агента", + "toolUsed": "Використаний інструмент", + "iterations": "Ітерації", + "iteration": "Ітерація", + "finalProcessing": "Остаточна обробка" + }, + "dateFormat": "ДД/ММ/РРРР", + "triggerBy": { + "debugging": "Налагодження", + "appRun": "Веб-додаток", + "webhook": "Вебхук", + "schedule": "Розклад", + "plugin": "Плагін", + "ragPipelineRun": "Конвеєр RAG", + "ragPipelineDebugging": "Виправлення помилок RAG" + } +} diff --git a/web/i18n/uk-UA/app-log.ts b/web/i18n/uk-UA/app-log.ts deleted file mode 100644 index 666bf8c888..0000000000 --- a/web/i18n/uk-UA/app-log.ts +++ /dev/null @@ -1,112 +0,0 @@ -const translation = { - title: 'Журнали', - description: 'Журнали фіксують робочий статус додатка, включаючи введення користувачів та відповіді штучного інтелекту.', - dateTimeFormat: 'MM/DD/YYYY hh:mm:ss A', - table: { - header: { - updatedTime: 'Час оновлення', - time: 'Час створення', - endUser: 'Кінцевий Користувач або Обліковий Запис', - input: 'Введення', - output: 'Виведення', - summary: 'Заголовок', - messageCount: 'Кількість Повідомлень', - userRate: 'Рейтинг Користувача', - adminRate: 'Рейтинг Оператора', - startTime: 'ЧАС ПОЧАТКУ', - status: 'СТАТУС', - runtime: 'ЧАС ВИКОНАННЯ', - tokens: 'ТОКЕНИ', - user: 'КІНЦЕВИЙ КОРИСТУВАЧ АБО ОБЛІКОВИЙ ЗАПИС', - version: 'ВЕРСІЯ', - triggered_from: 'АКТИВУЄТЬСЯ ВІД', - }, - pagination: { - previous: 'Попередня', - next: 'Наступна', - }, - empty: { - noChat: 'Ще немає розмов', - noOutput: 'Немає виводу', - element: { - title: 'Хтось тут?', - content: 'Спостерігайте та анотуйте взаємодії між кінцевими користувачами та додатками штучного інтелекту тут, щоб постійно покращувати точність штучного інтелекту. Ви можете спробувати поділитися або протестувати веб-додаток самостійно, а потім повернутися на цю сторінку.', - }, - }, - }, - detail: { - time: 'Час', - conversationId: 'ID Розмови', - promptTemplate: 'Шаблон Запитання', - promptTemplateBeforeChat: 'Шаблон Запитання Перед Чатом · Як Системне Повідомлення', - annotationTip: 'Покращення Позначені Користувачем {{user}}', - timeConsuming: '', - second: 'с', - tokenCost: 'Витрати Токенів', - loading: 'завантаження', - operation: { - like: 'подобається', - dislike: 'не подобається', - addAnnotation: 'Додати Покращення', - editAnnotation: 'Редагувати Покращення', - annotationPlaceholder: 'Введіть очікувану відповідь, яку ви хочете, щоб штучний інтелект повертав, це може бути використано для налаштування моделі та постійного покращення якості генерації тексту в майбутньому.', - }, - variables: 'Змінні', - uploadImages: 'Завантажені Зображення', - modelParams: 'Параметри моделі', - }, - filter: { - period: { - today: 'Сьогодні', - last7days: 'Останні 7 днів', - last4weeks: 'Останні 4 тижні', - last3months: 'Останні 3 місяці', - last12months: 'Останні 12 місяців', - monthToDate: 'Місяць до сьогодні', - quarterToDate: 'Квартал до сьогодні', - yearToDate: 'Рік до сьогодні', - allTime: 'За весь час', - last30days: 'Останні 30 днів', - custom: 'Користувацький', - }, - annotation: { - all: 'Всі', - annotated: 'Покращення з Анотацією ({{count}} елементів)', - not_annotated: 'Без Анотації', - }, - sortBy: 'Сортувати за:', - descending: 'спадаючий', - ascending: 'зростаючий', - }, - workflowTitle: 'Журнали Робочого Процесу', - workflowSubtitle: 'Журнал зареєстрував роботу Автоматизації.', - runDetail: { - title: 'Журнал Розмови', - workflowTitle: 'Деталі Журналу', - fileListDetail: 'Деталь', - fileListLabel: 'Подробиці файлу', - testWithParams: 'Тест з параметрами', - }, - promptLog: 'Журнал Запитань', - agentLog: 'Журнал агента', - viewLog: 'Переглянути журнал', - agentLogDetail: { - agentMode: 'Режим агента', - toolUsed: 'Використаний інструмент', - iterations: 'Ітерації', - iteration: 'Ітерація', - finalProcessing: 'Остаточна обробка', - }, - dateFormat: 'ДД/ММ/РРРР', - triggerBy: { - debugging: 'Налагодження', - appRun: 'Веб-додаток', - webhook: 'Вебхук', - schedule: 'Розклад', - plugin: 'Плагін', - ragPipelineRun: 'Конвеєр RAG', - ragPipelineDebugging: 'Виправлення помилок RAG', - }, -} - -export default translation diff --git a/web/i18n/uk-UA/app-overview.json b/web/i18n/uk-UA/app-overview.json new file mode 100644 index 0000000000..375d4e156b --- /dev/null +++ b/web/i18n/uk-UA/app-overview.json @@ -0,0 +1,187 @@ +{ + "welcome": { + "firstStepTip": "Для початку,", + "enterKeyTip": "введіть свій ключ API OpenAI нижче", + "getKeyTip": "Отримайте свій ключ API з панелі OpenAI", + "placeholder": "Ваш ключ API OpenAI (напр. 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": "Готовий до використання веб-додаток зі штучним інтелектом", + "accessibleAddress": "Публічний URL", + "preview": "Попередній перегляд", + "regenerate": "Відновити", + "regenerateNotice": "Бажаєте згенерувати новий публічний URL?", + "preUseReminder": "Будь ласка, активуйте веб-додаток перед продовженням.", + "settings": { + "entry": "Налаштування", + "title": "Налаштування веб-додатку", + "webName": "Назва веб-додатку", + "webDesc": "Опис веб-додатку", + "webDescTip": "Цей текст буде відображений на клієнтському боці, надаючи базові вказівки щодо використання додатка", + "webDescPlaceholder": "Введіть опис веб-додатку", + "language": "Мова", + "workflow": { + "title": "Кроки робочого процесу", + "show": "Показати", + "hide": "Приховати", + "subTitle": "Деталі робочого процесу", + "showDesc": "Відображення або приховування відомостей про робочий процес у веб-програмі" + }, + "chatColorTheme": "Тема кольору чату", + "chatColorThemeDesc": "Встановіть тему кольору чат-бота", + "chatColorThemeInverted": "Інвертовано", + "invalidHexMessage": "Недійсне шістнадцяткове значення", + "invalidPrivacyPolicy": "Недійсне посилання на політику конфіденційності. Будь ласка, використовуйте дійсне посилання, яке починається з http або https", + "more": { + "entry": "Показати додаткові налаштування", + "copyright": "Авторське право", + "copyRightPlaceholder": "Введіть ім'я автора або організації", + "privacyPolicy": "Політика конфіденційності", + "privacyPolicyPlaceholder": "Введіть посилання на політику конфіденційності", + "privacyPolicyTip": "Допомагає відвідувачам зрозуміти дані, зібрані додатком, див. Політику конфіденційності Dify.", + "customDisclaimer": "Відмова від відповідальності", + "customDisclaimerPlaceholder": "Введіть відмову від відповідальності", + "customDisclaimerTip": "Відображається на клієнтському боці, щоб визначити відповідальність за використання додатка", + "copyrightTip": "Відображення інформації про авторські права у веб-програмі", + "copyrightTooltip": "Будь ласка, перейдіть на тарифний план «Professional» або вище" + }, + "sso": { + "title": "Єдиний вхід для web app", + "description": "Усі користувачі повинні увійти в систему за допомогою єдиного входу перед використанням web app", + "tooltip": "Зверніться до адміністратора, щоб увімкнути єдиний вхід web app", + "label": "Автентифікація за допомогою єдиного входу" + }, + "modalTip": "Налаштування веб-додатку на стороні клієнта." + }, + "embedded": { + "entry": "Вбудоване", + "title": "Вбудувати на веб-сайт", + "explanation": "Виберіть спосіб вбудування чат-додатка на ваш веб-сайт", + "iframe": "Для додавання чат-додатка в будь-яке місце на вашому веб-сайті, додайте цей iframe до вашого HTML-коду.", + "scripts": "Для додавання чат-додатка в правий нижній кут вашого веб-сайту додайте цей код до вашого HTML.", + "chromePlugin": "Встановити розширення Chrome Dify Chatbot", + "copied": "Скопійовано", + "copy": "Скопіювати" + }, + "qrcode": { + "title": "QR-код для обміну", + "scan": "Сканувати та обмінюватися додатком", + "download": "Завантажити QR-код" + }, + "customize": { + "way": "спосіб", + "entry": "Налаштувати", + "title": "Налаштування веб-додатку зі штучним інтелектом", + "explanation": "Ви можете налаштувати інтерфейс користувача веб-додатка, щоб він відповідав вашим потребам у сценаріях та стилі.", + "way1": { + "name": "Склонуйте клієнтський код, відредагуйте його та розгорніть на Vercel (рекомендовано)", + "step1": "Склонуйте клієнтський код та відредагуйте його", + "step1Tip": "Натисніть тут, щоб склонувати вихідний код у ваш обліковий запис GitHub та відредагувати код", + "step1Operation": "Клієнт-Web-Dify", + "step2": "Розгорніть на Vercel", + "step2Tip": "Натисніть тут, щоб імпортувати репозиторій у Vercel та розгорнути", + "step2Operation": "Імпорт репозиторію", + "step3": "Налаштуйте змінні середовища", + "step3Tip": "Додайте наступні змінні середовища у Vercel" + }, + "way2": { + "name": "Напишіть клієнтський код для виклику API та розгорніть його на сервері", + "operation": "Документація" + } + }, + "launch": "Запуску", + "enableTooltip": { + "description": "Щоб увімкнути цю функцію, будь ласка, додайте вузол вводу користувача на полотно. (Може вже існувати в чернетці, набирає чинності після публікації)", + "learnMore": "Дізнатися більше" + }, + "title": "Веб-додаток" + }, + "apiInfo": { + "title": "API сервісу Backend", + "explanation": "Легко інтегрований у вашу програму", + "accessibleAddress": "Кінцева точка API сервісу", + "doc": "Довідка з API" + }, + "status": { + "running": "У роботі", + "disable": "Вимкнути" + }, + "triggerInfo": { + "title": "Тригери", + "explanation": "Управління тригером робочого процесу", + "triggersAdded": "Додано тригери", + "noTriggerAdded": "Триггер не додано", + "triggerStatusDescription": "Статус вузла тригера відображається тут. (Може вже існувати в чернетці, набирає чинності після публікації)", + "learnAboutTriggers": "Дізнайтеся про тригери" + }, + "disableTooltip": { + "triggerMode": "Функція {{feature}} не підтримується в режимі вузла тригера." + } + }, + "analysis": { + "title": "Аналіз", + "ms": "мс", + "tokenPS": "Токени/с", + "totalMessages": { + "title": "Загальна кількість повідомлень", + "explanation": "Кількість щоденних взаємодій з ШІ." + }, + "totalConversations": { + "title": "Загальна кількість розмов", + "explanation": "Кількість щоденних розмов з ШІ; інженерія/налагодження промптів виключено." + }, + "activeUsers": { + "title": "Активні користувачі", + "explanation": "Унікальні користувачі, які взаємодіють з AI; інженерія/налагодження запитів виключено." + }, + "tokenUsage": { + "title": "Використання токенів", + "explanation": "Відображає щоденне використання токенів мовної моделі для додатка, корисно для контролю витрат.", + "consumed": "Спожито" + }, + "avgSessionInteractions": { + "title": "Середня кількість взаємодій за сесію", + "explanation": "Кількість продовжуючихся спілкувань користувача з AI; для програм, що базуються на розмові." + }, + "avgUserInteractions": { + "title": "Середня кількість взаємодій на користувача", + "explanation": "Відображає щоденну частоту використання користувачами. Ця метрика відображає лояльність користувачів." + }, + "userSatisfactionRate": { + "title": "Показник задоволення користувача", + "explanation": "Кількість лайків на 1000 повідомлень. Це вказує на те, наскільки задоволені користувачі відповідями." + }, + "avgResponseTime": { + "title": "Середній час відповіді", + "explanation": "Час (мс) для обробки/відповіді AI; для текстових програм." + }, + "tps": { + "title": "Швидкість виведення токенів", + "explanation": "Вимірює продуктивність LLM. Підраховує швидкість виведення токенів LLM від початку запиту до завершення виведення." + } + } +} diff --git a/web/i18n/uk-UA/app-overview.ts b/web/i18n/uk-UA/app-overview.ts deleted file mode 100644 index f71567b2da..0000000000 --- a/web/i18n/uk-UA/app-overview.ts +++ /dev/null @@ -1,189 +0,0 @@ -const translation = { - welcome: { - firstStepTip: 'Для початку,', - enterKeyTip: 'введіть свій ключ API OpenAI нижче', - getKeyTip: 'Отримайте свій ключ API з панелі OpenAI', - placeholder: 'Ваш ключ API OpenAI (напр. 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: 'Готовий до використання веб-додаток зі штучним інтелектом', - accessibleAddress: 'Публічний URL', - preview: 'Попередній перегляд', - regenerate: 'Відновити', - regenerateNotice: 'Бажаєте згенерувати новий публічний URL?', - preUseReminder: 'Будь ласка, активуйте веб-додаток перед продовженням.', - settings: { - entry: 'Налаштування', - title: 'Налаштування веб-додатку', - webName: 'Назва веб-додатку', - webDesc: 'Опис веб-додатку', - webDescTip: 'Цей текст буде відображений на клієнтському боці, надаючи базові вказівки щодо використання додатка', - webDescPlaceholder: 'Введіть опис веб-додатку', - language: 'Мова', - workflow: { - title: 'Кроки робочого процесу', - show: 'Показати', - hide: 'Приховати', - subTitle: 'Деталі робочого процесу', - showDesc: 'Відображення або приховування відомостей про робочий процес у веб-програмі', - }, - chatColorTheme: 'Тема кольору чату', - chatColorThemeDesc: 'Встановіть тему кольору чат-бота', - chatColorThemeInverted: 'Інвертовано', - invalidHexMessage: 'Недійсне шістнадцяткове значення', - invalidPrivacyPolicy: 'Недійсне посилання на політику конфіденційності. Будь ласка, використовуйте дійсне посилання, яке починається з http або https', - more: { - entry: 'Показати додаткові налаштування', - copyright: 'Авторське право', - copyRightPlaceholder: 'Введіть ім\'я автора або організації', - privacyPolicy: 'Політика конфіденційності', - privacyPolicyPlaceholder: 'Введіть посилання на політику конфіденційності', - privacyPolicyTip: 'Допомагає відвідувачам зрозуміти дані, зібрані додатком, див. Політику конфіденційності Dify.', - customDisclaimer: 'Відмова від відповідальності', - customDisclaimerPlaceholder: 'Введіть відмову від відповідальності', - customDisclaimerTip: 'Відображається на клієнтському боці, щоб визначити відповідальність за використання додатка', - copyrightTip: 'Відображення інформації про авторські права у веб-програмі', - copyrightTooltip: 'Будь ласка, перейдіть на тарифний план «Professional» або вище', - }, - sso: { - title: 'Єдиний вхід для web app', - description: 'Усі користувачі повинні увійти в систему за допомогою єдиного входу перед використанням web app', - tooltip: 'Зверніться до адміністратора, щоб увімкнути єдиний вхід web app', - label: 'Автентифікація за допомогою єдиного входу', - }, - modalTip: 'Налаштування веб-додатку на стороні клієнта.', - }, - embedded: { - entry: 'Вбудоване', - title: 'Вбудувати на веб-сайт', - explanation: 'Виберіть спосіб вбудування чат-додатка на ваш веб-сайт', - iframe: 'Для додавання чат-додатка в будь-яке місце на вашому веб-сайті, додайте цей iframe до вашого HTML-коду.', - scripts: 'Для додавання чат-додатка в правий нижній кут вашого веб-сайту додайте цей код до вашого HTML.', - chromePlugin: 'Встановити розширення Chrome Dify Chatbot', - copied: 'Скопійовано', - copy: 'Скопіювати', - }, - qrcode: { - title: 'QR-код для обміну', - scan: 'Сканувати та обмінюватися додатком', - download: 'Завантажити QR-код', - }, - customize: { - way: 'спосіб', - entry: 'Налаштувати', - title: 'Налаштування веб-додатку зі штучним інтелектом', - explanation: 'Ви можете налаштувати інтерфейс користувача веб-додатка, щоб він відповідав вашим потребам у сценаріях та стилі.', - way1: { - name: 'Склонуйте клієнтський код, відредагуйте його та розгорніть на Vercel (рекомендовано)', - step1: 'Склонуйте клієнтський код та відредагуйте його', - step1Tip: 'Натисніть тут, щоб склонувати вихідний код у ваш обліковий запис GitHub та відредагувати код', - step1Operation: 'Клієнт-Web-Dify', - step2: 'Розгорніть на Vercel', - step2Tip: 'Натисніть тут, щоб імпортувати репозиторій у Vercel та розгорнути', - step2Operation: 'Імпорт репозиторію', - step3: 'Налаштуйте змінні середовища', - step3Tip: 'Додайте наступні змінні середовища у Vercel', - }, - way2: { - name: 'Напишіть клієнтський код для виклику API та розгорніть його на сервері', - operation: 'Документація', - }, - }, - launch: 'Запуску', - enableTooltip: { - description: 'Щоб увімкнути цю функцію, будь ласка, додайте вузол вводу користувача на полотно. (Може вже існувати в чернетці, набирає чинності після публікації)', - learnMore: 'Дізнатися більше', - }, - title: 'Веб-додаток', - }, - apiInfo: { - title: 'API сервісу Backend', - explanation: 'Легко інтегрований у вашу програму', - accessibleAddress: 'Кінцева точка API сервісу', - doc: 'Довідка з API', - }, - status: { - running: 'У роботі', - disable: 'Вимкнути', - }, - triggerInfo: { - title: 'Тригери', - explanation: 'Управління тригером робочого процесу', - triggersAdded: 'Додано тригери', - noTriggerAdded: 'Триггер не додано', - triggerStatusDescription: 'Статус вузла тригера відображається тут. (Може вже існувати в чернетці, набирає чинності після публікації)', - learnAboutTriggers: 'Дізнайтеся про тригери', - }, - disableTooltip: { - triggerMode: 'Функція {{feature}} не підтримується в режимі вузла тригера.', - }, - }, - analysis: { - title: 'Аналіз', - ms: 'мс', - tokenPS: 'Токени/с', - totalMessages: { - title: 'Загальна кількість повідомлень', - explanation: 'Кількість щоденних взаємодій з ШІ.', - }, - totalConversations: { - title: 'Загальна кількість розмов', - explanation: 'Кількість щоденних розмов з ШІ; інженерія/налагодження промптів виключено.', - }, - activeUsers: { - title: 'Активні користувачі', - explanation: 'Унікальні користувачі, які взаємодіють з AI; інженерія/налагодження запитів виключено.', - }, - tokenUsage: { - title: 'Використання токенів', - explanation: 'Відображає щоденне використання токенів мовної моделі для додатка, корисно для контролю витрат.', - consumed: 'Спожито', - }, - avgSessionInteractions: { - title: 'Середня кількість взаємодій за сесію', - explanation: 'Кількість продовжуючихся спілкувань користувача з AI; для програм, що базуються на розмові.', - }, - avgUserInteractions: { - title: 'Середня кількість взаємодій на користувача', - explanation: 'Відображає щоденну частоту використання користувачами. Ця метрика відображає лояльність користувачів.', - }, - userSatisfactionRate: { - title: 'Показник задоволення користувача', - explanation: 'Кількість лайків на 1000 повідомлень. Це вказує на те, наскільки задоволені користувачі відповідями.', - }, - avgResponseTime: { - title: 'Середній час відповіді', - explanation: 'Час (мс) для обробки/відповіді AI; для текстових програм.', - }, - tps: { - title: 'Швидкість виведення токенів', - explanation: 'Вимірює продуктивність LLM. Підраховує швидкість виведення токенів LLM від початку запиту до завершення виведення.', - }, - }, -} - -export default translation diff --git a/web/i18n/uk-UA/app.json b/web/i18n/uk-UA/app.json new file mode 100644 index 0000000000..dd08fc9e61 --- /dev/null +++ b/web/i18n/uk-UA/app.json @@ -0,0 +1,345 @@ +{ + "createApp": "Створити додаток", + "types": { + "all": "Усе", + "chatbot": "Чатбот", + "agent": "Агент", + "workflow": "Робочий процес", + "completion": "Завершення", + "advanced": "Чат", + "basic": "Основні" + }, + "duplicate": "Дублювати", + "duplicateTitle": "Дублювати додаток", + "export": "Експортувати DSL", + "exportFailed": "Не вдалося експортувати DSL.", + "importDSL": "Імпортувати файл DSL", + "createFromConfigFile": "Створити з файлу DSL", + "deleteAppConfirmTitle": "Видалити цей додаток?", + "deleteAppConfirmContent": "Видалення додатка незворотнє. Користувачі більше не зможуть отримати доступ до вашого додатка, і всі налаштування запитів та журнали будуть остаточно видалені.", + "appDeleted": "Додаток видалено", + "appDeleteFailed": "Не вдалося видалити додаток", + "join": "Приєднуйтесь до спільноти", + "communityIntro": "Обговорюйте з членами команди, співавторами та розробниками на різних каналах.", + "roadmap": "Переглянути наш план розвитку", + "newApp": { + "startFromBlank": "Створити з нуля", + "startFromTemplate": "Створити з шаблону", + "workflowWarning": "Наразі в бета-версії", + "captionName": "Іконка та назва додатка", + "appNamePlaceholder": "Дайте назву вашому додатку", + "captionDescription": "Опис", + "appDescriptionPlaceholder": "Введіть опис додатка", + "useTemplate": "Використовуйте цей шаблон", + "previewDemo": "Попередній перегляд демонстрації", + "chatApp": "Асистент", + "chatAppIntro": "Я хочу побудувати додаток на основі чату. Цей додаток використовує формат запитань та відповідей, що дозволяє проводити кілька раундів безперервного спілкування.", + "agentAssistant": "Новий помічник агента", + "completeApp": "Генератор тексту", + "completeAppIntro": "Я хочу створити додаток, який генерує текст високої якості на основі підказок, таких як генерація статей, резюме, перекладів тощо.", + "showTemplates": "Я хочу вибрати з шаблону", + "hideTemplates": "Повернутися до вибору режиму", + "Create": "Створити", + "Cancel": "Скасувати", + "nameNotEmpty": "Назва не може бути порожньою", + "appTemplateNotSelected": "Будь ласка, виберіть шаблон", + "appTypeRequired": "Будь ласка, виберіть тип додатка", + "appCreated": "Додаток створено", + "appCreateFailed": "Не вдалося створити додаток", + "caution": "Обережність", + "Confirm": "Підтвердити", + "appCreateDSLErrorPart3": "Поточна версія DSL програми:", + "appCreateDSLErrorPart4": "Версія DSL з підтримкою системи:", + "appCreateDSLErrorPart2": "Хочете продовжити?", + "appCreateDSLErrorTitle": "Несумісність версій", + "appCreateDSLErrorPart1": "Виявлено суттєву різницю у версіях DSL. Примусовий імпорт може призвести до неправильної роботи програми.", + "appCreateDSLWarning": "Увага: різниця у версіях DSL може вплинути на певні функції", + "chooseAppType": "Оберіть тип додатку", + "noIdeaTip": "Немає ідей? Перегляньте наші шаблони", + "noTemplateFoundTip": "Спробуйте шукати за різними ключовими словами.", + "foundResult": "{{count}} Результат", + "foundResults": "{{count}} Результатів", + "optional": "Необов'язково", + "completionShortDescription": "AI-помічник для завдань генерації тексту", + "forAdvanced": "ДЛЯ ДОСВІДЧЕНИХ КОРИСТУВАЧІВ", + "noTemplateFound": "Не знайдено шаблонів", + "agentUserDescription": "Інтелектуальний агент, здатний до ітеративного міркування і автономного використання інструменту для досягнення поставлених цілей.", + "advancedUserDescription": "Робочий процес з функціями пам'яті та інтерфейсом чат-бота.", + "agentShortDescription": "Інтелектуальний агент з міркуваннями та автономним використанням інструментів", + "noAppsFound": "Не знайдено додатків", + "forBeginners": "Простіші типи додатків", + "workflowShortDescription": "Агентський потік для інтелектуальних автоматизацій", + "learnMore": "Дізнатися більше", + "chatbotUserDescription": "Швидко створюйте чат-бота на базі LLM за допомогою простої конфігурації. Ви можете переключитися на Chatflow пізніше.", + "chatbotShortDescription": "Чат-бот на базі LLM з простим налаштуванням", + "advancedShortDescription": "Робочий процес, вдосконалений для багатоетапних чатів", + "completionUserDescription": "Швидко створюйте помічника зі штучним інтелектом для завдань із генерації тексту за допомогою простої конфігурації.", + "workflowUserDescription": "ізуально створюйте автономні ШІ-процеси з простотою перетягування.", + "dropDSLToCreateApp": "Перетягніть файл DSL сюди, щоб створити додаток", + "import": "Імпорт" + }, + "editApp": "Редагувати інформацію", + "editAppTitle": "Редагувати інформацію про додаток", + "editDone": "Інформація про додаток оновлена", + "editFailed": "Не вдалося оновити інформацію про додаток", + "iconPicker": { + "ok": "OK", + "cancel": "Скасувати", + "emoji": "Емодзі", + "image": "Зображення" + }, + "switch": "Перейти до оркестрації робочого процесу", + "switchTipStart": "Для вас буде створена нова копія додатка, і нова копія перейде до оркестрації робочого процесу. Нова копія не дозволить ", + "switchTip": "повернутися", + "switchTipEnd": " до базової оркестрації.", + "switchLabel": "Копія додатка, яка буде створена", + "removeOriginal": "Видалити початковий додаток", + "switchStart": "Почати перемикання", + "typeSelector": { + "all": "Усі типи", + "chatbot": "Чатбот", + "agent": "Агент", + "workflow": "Робочий процес", + "completion": "Завершення", + "advanced": "Чат" + }, + "tracing": { + "title": "Відстеження продуктивності додатку", + "description": "Налаштування стороннього провайдера LLMOps та відстеження продуктивності додатку.", + "config": "Налаштувати", + "collapse": "Згорнути", + "expand": "Розгорнути", + "tracing": "Відстеження", + "disabled": "Вимкнено", + "disabledTip": "Спочатку налаштуйте провайдера", + "enabled": "В роботі", + "tracingDescription": "Захоплення повного контексту виконання додатку, включаючи виклики LLM, контекст, підказки, HTTP-запити та інше, на сторонню платформу відстеження.", + "configProviderTitle": { + "configured": "Налаштовано", + "notConfigured": "Налаштуйте провайдера для увімкнення відстеження", + "moreProvider": "Більше провайдерів" + }, + "arize": { + "title": "Arize", + "description": "Спостережуваність LLM корпоративного рівня, онлайн та офлайн оцінювання, моніторинг та експерименти—на основі OpenTelemetry. Спеціально розроблено для застосунків на базі LLM та агентів." + }, + "phoenix": { + "title": "Phoenix", + "description": "Відкрита та заснована на OpenTelemetry платформа для спостережуваності, оцінювання, інженерії підказок та експериментів для ваших робочих процесів та агентів LLM." + }, + "langsmith": { + "title": "LangSmith", + "description": "Універсальна платформа розробника для кожного етапу життєвого циклу додатку на основі LLM." + }, + "langfuse": { + "title": "Langfuse", + "description": "Трасування, оцінки, управління підказками та метрики для налагодження та покращення вашого LLM-додатку." + }, + "inUse": "Використовується", + "configProvider": { + "title": "Налаштувати ", + "placeholder": "Введіть ваш {{key}}", + "project": "Проект", + "publicKey": "Публічний ключ", + "secretKey": "Секретний ключ", + "viewDocsLink": "Переглянути документацію {{key}}", + "removeConfirmTitle": "Видалити налаштування {{key}}?", + "removeConfirmContent": "Поточне налаштування використовується, його видалення вимкне функцію Відстеження.", + "password": "Пароль", + "databricksHost": "URL робочого простору Databricks", + "clientId": "Ідентифікатор клієнта OAuth", + "experimentId": "Ідентифікатор експерименту", + "trackingUri": "Відстеження URI", + "personalAccessToken": "Персональний токен доступу (застарілий)", + "username": "Ім'я користувача", + "clientSecret": "Секретний ключ клієнта OAuth" + }, + "view": "Вид", + "opik": { + "title": "Опік", + "description": "Opik — це платформа з відкритим вихідним кодом для оцінки, тестування та моніторингу додатків LLM." + }, + "weave": { + "title": "Ткати", + "description": "Weave є платформою з відкритим кодом для оцінки, тестування та моніторингу LLM додатків." + }, + "aliyun": { + "title": "Моніторинг Хмари", + "description": "Повністю керовані та без обслуговування платформи спостереження, надані Alibaba Cloud, дозволяють миттєвий моніторинг, трасування та оцінку застосувань Dify." + }, + "mlflow": { + "title": "MLflow", + "description": "Платформа LLMOps з відкритим кодом для відстеження експериментів, спостережуваності та оцінки, для створення додатків AI/LLM з впевненістю." + }, + "databricks": { + "title": "Databricks", + "description": "Databricks пропонує повністю керований MLflow з сильною управлінням та безпекою для зберігання даних трасування." + }, + "tencent": { + "title": "Tencent APM", + "description": "Сервіс моніторингу продуктивності додатків Tencent забезпечує комплексне трасування та багатовимірний аналіз додатків LLM." + } + }, + "answerIcon": { + "title": "Використовуйте піктограму web app для заміни 🤖", + "description": "Чи слід використовувати піктограму web app для заміни 🤖 у спільній програмі", + "descriptionInExplore": "Чи використовувати піктограму веб-програми для заміни 🤖 в Огляді" + }, + "importFromDSLUrl": "З URL", + "importFromDSL": "Імпорт з DSL", + "importFromDSLUrlPlaceholder": "Вставте посилання на DSL тут", + "dslUploader": { + "button": "Перетягніть файл, або", + "browse": "Огляд" + }, + "importFromDSLFile": "З DSL-файлу", + "mermaid": { + "handDrawn": "Намальовані від руки", + "classic": "Класичний" + }, + "openInExplore": "Відкрити в Огляді", + "newAppFromTemplate": { + "sidebar": { + "Writing": "Написання", + "Assistant": "Асистент", + "Workflow": "Робочий процес", + "Agent": "Агент", + "Recommended": "Рекомендується", + "HR": "Управління персоналом", + "Programming": "Програмування" + }, + "byCategories": "ЗА КАТЕГОРІЯМИ", + "searchAllTemplate": "Пошук по всіх шаблонах..." + }, + "showMyCreatedAppsOnly": "Показати лише створені мною додатки", + "appSelector": { + "noParams": "Параметри не потрібні", + "label": "ДОДАТОК", + "params": "ПАРАМЕТРИ ПРОГРАМИ", + "placeholder": "Виберіть програму..." + }, + "structOutput": { + "LLMResponse": "Відповідь ЛЛМ", + "configure": "Налаштувати", + "required": "Необхідно", + "moreFillTip": "Показуючи максимум 10 рівнів вкладеності", + "structured": "Структурований", + "modelNotSupported": "Модель не підтримується", + "notConfiguredTip": "Структурований вихід ще не було налаштовано", + "modelNotSupportedTip": "Поточна модель не підтримує цю функцію та автоматично знижується до ін'єкції запитів.", + "structuredTip": "Структуровані виходи - це функція, яка забезпечує, що модель завжди генеруватиме відповіді, що відповідають наданій вами схемі JSON." + }, + "accessItemsDescription": { + "anyone": "Будь-хто може отримати доступ до веб-додатку", + "specific": "Тільки окремі групи або члени можуть отримати доступ до веб-додатку.", + "organization": "Будь-хто в організації може отримати доступ до веб-додатку.", + "external": "Тільки перевірені зовнішні користувачі можуть отримати доступ до веб-застосунку." + }, + "accessControlDialog": { + "accessItems": { + "anyone": "Кожен, у кого є посилання", + "specific": "Конкретні групи або члени", + "organization": "Тільки члени підприємства", + "external": "Аутентифіковані зовнішні користувачі" + }, + "operateGroupAndMember": { + "searchPlaceholder": "Шукати групи та учасників", + "allMembers": "Всі члени", + "expand": "розвивати", + "noResult": "Немає результату" + }, + "title": "Контроль доступу до веб-додатка", + "description": "Встановіть дозволи доступу до веб-додатку", + "accessLabel": "Хто має доступ", + "groups_one": "{{count}} ГРУПА", + "groups_other": "{{count}} ГРУП", + "members_one": "{{count}} ЧЛЕН", + "members_other": "{{count}} ЧЛЕНІ", + "noGroupsOrMembers": "Не вибрано групи чи учасників", + "updateSuccess": "Оновлення успішно", + "webAppSSONotEnabledTip": "Будь ласка, зв'яжіться з адміністратором підприємства для налаштування методу аутентифікації веб-додатку." + }, + "publishApp": { + "title": "Хто може отримати доступ до веб-додатку", + "notSet": "Не встановлено", + "notSetDesc": "На даний момент ніхто не може отримати доступ до веб-додатку. Будь ласка, налаштуйте дозволи." + }, + "accessControl": "Контроль доступу до веб-додатків", + "noAccessPermission": "Немає дозволу на доступ до веб-додатку", + "maxActiveRequestsPlaceholder": "Введіть 0 для необмеженого", + "maxActiveRequests": "Максимальна кількість одночасних запитів", + "maxActiveRequestsTip": "Максимальна кількість одночасних активних запитів на додаток (0 для необмеженої кількості)", + "gotoAnything": { + "actions": { + "searchApplications": "Пошук додатків", + "searchKnowledgeBases": "Пошук по базах знань", + "searchWorkflowNodes": "Пошук вузлів робочого процесу", + "searchApplicationsDesc": "Шукайте та переходьте до своїх програм", + "searchPluginsDesc": "Пошук і навігація до ваших плагінів", + "searchWorkflowNodesHelp": "Ця функція працює лише під час перегляду робочого процесу. Спочатку перейдіть до робочого процесу.", + "searchPlugins": "Пошук плагінів", + "searchKnowledgeBasesDesc": "Шукайте та переходьте до своїх баз знань", + "searchWorkflowNodesDesc": "Знаходьте вузли в поточному робочому процесі та переходьте до них за іменем або типом", + "themeSystem": "Системна тема", + "languageCategoryTitle": "Мова", + "themeCategoryTitle": "Тема", + "themeLight": "Світла тема", + "runTitle": "Команди", + "languageChangeDesc": "Змінити мову інтерфейсу", + "themeDark": "Темна тема", + "themeDarkDesc": "Використовуйте темний режим", + "runDesc": "Запустіть швидкі команди (тема, мова, ...)", + "themeCategoryDesc": "Переключити тему застосунку", + "themeLightDesc": "Використовуйте світлий вигляд", + "themeSystemDesc": "Дотримуйтесь зовнішнього вигляду вашої операційної системи", + "languageCategoryDesc": "Переключити мову інтерфейсу", + "slashDesc": "Виконуйте команди, такі як /theme, /lang", + "feedbackDesc": "Відкриті обговорення відгуків громади", + "docDesc": "Відкрийте документацію допомоги", + "accountDesc": "Перейдіть на сторінку облікового запису", + "communityDesc": "Відкрита Discord-спільнота", + "zenTitle": "Zen Mode", + "zenDesc": "Toggle canvas focus mode" + }, + "emptyState": { + "noPluginsFound": "Плагінів не знайдено", + "noKnowledgeBasesFound": "Баз знань не знайдено", + "noAppsFound": "Не знайдено додатків", + "noWorkflowNodesFound": "Вузли бізнес-процесу не знайдено", + "tryDifferentTerm": "Спробуйте інший пошуковий термін або видаліть фільтр {{mode}}", + "trySpecificSearch": "Спробуйте {{shortcuts}} для конкретного пошуку" + }, + "groups": { + "knowledgeBases": "Бази знань", + "plugins": "Плагіни", + "apps": "Програми", + "workflowNodes": "Вузли документообігу", + "commands": "Команди" + }, + "searching": "Пошук...", + "searchTitle": "Шукайте що завгодно", + "searchFailed": "Пошук не вдався", + "clearToSearchAll": "Очистіть @ для пошуку всіх", + "noResults": "Результатів не знайдено", + "searchPlaceholder": "Виконайте пошук або введіть @ для команд...", + "searchTemporarilyUnavailable": "Пошук тимчасово недоступний", + "useAtForSpecific": "Використовуйте @ для конкретних типів", + "someServicesUnavailable": "Деякі пошукові сервіси недоступні", + "servicesUnavailableMessage": "У деяких пошукових службах можуть виникати проблеми. Повторіть спробу за мить.", + "selectSearchType": "Виберіть, що шукати", + "commandHint": "Введіть @ для навігації за категоріями", + "searchHint": "Почніть вводити текст, щоб миттєво шукати все", + "resultCount": "{{count}} результат", + "resultCount_other": "{{count}} результатів", + "inScope": "у {{scope}}s", + "noMatchingCommands": "Відповідних команд не знайдено", + "tryDifferentSearch": "Спробуйте інший пошуковий термін", + "slashHint": "Наберіть / , щоб побачити всі доступні команди", + "selectToNavigate": "Виберіть, щоб перейти", + "tips": "Натисніть ↑↓ для навігації", + "startTyping": "Почніть вводити для пошуку", + "pressEscToClose": "Натисніть ESC, щоб закрити" + }, + "notPublishedYet": "Додаток ще не опублікований", + "noUserInputNode": "Відсутній вузол введення користувача" +} diff --git a/web/i18n/uk-UA/app.ts b/web/i18n/uk-UA/app.ts deleted file mode 100644 index 01b5e13bb2..0000000000 --- a/web/i18n/uk-UA/app.ts +++ /dev/null @@ -1,351 +0,0 @@ -const translation = { - createApp: 'Створити додаток', - types: { - all: 'Усе', - chatbot: 'Чатбот', - agent: 'Агент', - workflow: 'Робочий процес', - completion: 'Завершення', - advanced: 'Чат', - basic: 'Основні', - }, - duplicate: 'Дублювати', - duplicateTitle: 'Дублювати додаток', - export: 'Експортувати DSL', - exportFailed: 'Не вдалося експортувати DSL.', - importDSL: 'Імпортувати файл DSL', - createFromConfigFile: 'Створити з файлу DSL', - deleteAppConfirmTitle: 'Видалити цей додаток?', - deleteAppConfirmContent: - 'Видалення додатка незворотнє. Користувачі більше не зможуть отримати доступ до вашого додатка, і всі налаштування запитів та журнали будуть остаточно видалені.', - appDeleted: 'Додаток видалено', - appDeleteFailed: 'Не вдалося видалити додаток', - join: 'Приєднуйтесь до спільноти', - communityIntro: - 'Обговорюйте з членами команди, співавторами та розробниками на різних каналах.', - roadmap: 'Переглянути наш план розвитку', - newApp: { - startFromBlank: 'Створити з нуля', - startFromTemplate: 'Створити з шаблону', - workflowWarning: 'Наразі в бета-версії', - captionName: 'Іконка та назва додатка', - appNamePlaceholder: 'Дайте назву вашому додатку', - captionDescription: 'Опис', - appDescriptionPlaceholder: 'Введіть опис додатка', - useTemplate: 'Використовуйте цей шаблон', - previewDemo: 'Попередній перегляд демонстрації', - chatApp: 'Асистент', - chatAppIntro: - 'Я хочу побудувати додаток на основі чату. Цей додаток використовує формат запитань та відповідей, що дозволяє проводити кілька раундів безперервного спілкування.', - agentAssistant: 'Новий помічник агента', - completeApp: 'Генератор тексту', - completeAppIntro: - 'Я хочу створити додаток, який генерує текст високої якості на основі підказок, таких як генерація статей, резюме, перекладів тощо.', - showTemplates: 'Я хочу вибрати з шаблону', - hideTemplates: 'Повернутися до вибору режиму', - Create: 'Створити', - Cancel: 'Скасувати', - nameNotEmpty: 'Назва не може бути порожньою', - appTemplateNotSelected: 'Будь ласка, виберіть шаблон', - appTypeRequired: 'Будь ласка, виберіть тип додатка', - appCreated: 'Додаток створено', - appCreateFailed: 'Не вдалося створити додаток', - caution: 'Обережність', - Confirm: 'Підтвердити', - appCreateDSLErrorPart3: 'Поточна версія DSL програми:', - appCreateDSLErrorPart4: 'Версія DSL з підтримкою системи:', - appCreateDSLErrorPart2: 'Хочете продовжити?', - appCreateDSLErrorTitle: 'Несумісність версій', - appCreateDSLErrorPart1: 'Виявлено суттєву різницю у версіях DSL. Примусовий імпорт може призвести до неправильної роботи програми.', - appCreateDSLWarning: 'Увага: різниця у версіях DSL може вплинути на певні функції', - chooseAppType: 'Оберіть тип додатку', - noIdeaTip: 'Немає ідей? Перегляньте наші шаблони', - noTemplateFoundTip: 'Спробуйте шукати за різними ключовими словами.', - foundResult: '{{count}} Результат', - foundResults: '{{count}} Результатів', - optional: 'Необов\'язково', - completionShortDescription: 'AI-помічник для завдань генерації тексту', - forAdvanced: 'ДЛЯ ДОСВІДЧЕНИХ КОРИСТУВАЧІВ', - noTemplateFound: 'Не знайдено шаблонів', - agentUserDescription: 'Інтелектуальний агент, здатний до ітеративного міркування і автономного використання інструменту для досягнення поставлених цілей.', - advancedUserDescription: 'Робочий процес з функціями пам\'яті та інтерфейсом чат-бота.', - agentShortDescription: 'Інтелектуальний агент з міркуваннями та автономним використанням інструментів', - noAppsFound: 'Не знайдено додатків', - forBeginners: 'Простіші типи додатків', - workflowShortDescription: 'Агентський потік для інтелектуальних автоматизацій', - learnMore: 'Дізнатися більше', - chatbotUserDescription: 'Швидко створюйте чат-бота на базі LLM за допомогою простої конфігурації. Ви можете переключитися на Chatflow пізніше.', - chatbotShortDescription: 'Чат-бот на базі LLM з простим налаштуванням', - advancedShortDescription: 'Робочий процес, вдосконалений для багатоетапних чатів', - completionUserDescription: 'Швидко створюйте помічника зі штучним інтелектом для завдань із генерації тексту за допомогою простої конфігурації.', - workflowUserDescription: 'ізуально створюйте автономні ШІ-процеси з простотою перетягування.', - dropDSLToCreateApp: 'Перетягніть файл DSL сюди, щоб створити додаток', - import: 'Імпорт', - }, - editApp: 'Редагувати інформацію', - editAppTitle: 'Редагувати інформацію про додаток', - editDone: 'Інформація про додаток оновлена', - editFailed: 'Не вдалося оновити інформацію про додаток', - iconPicker: { - ok: 'OK', - cancel: 'Скасувати', - emoji: 'Емодзі', - image: 'Зображення', - }, - switch: 'Перейти до оркестрації робочого процесу', - switchTipStart: 'Для вас буде створена нова копія додатка, і нова копія перейде до оркестрації робочого процесу. Нова копія не дозволить ', - switchTip: 'повернутися', - switchTipEnd: ' до базової оркестрації.', - switchLabel: 'Копія додатка, яка буде створена', - removeOriginal: 'Видалити початковий додаток', - switchStart: 'Почати перемикання', - typeSelector: { - all: 'Усі типи', - chatbot: 'Чатбот', - agent: 'Агент', - workflow: 'Робочий процес', - completion: 'Завершення', - advanced: 'Чат', - }, - tracing: { - title: 'Відстеження продуктивності додатку', - description: 'Налаштування стороннього провайдера LLMOps та відстеження продуктивності додатку.', - config: 'Налаштувати', - collapse: 'Згорнути', - expand: 'Розгорнути', - tracing: 'Відстеження', - disabled: 'Вимкнено', - disabledTip: 'Спочатку налаштуйте провайдера', - enabled: 'В роботі', - tracingDescription: 'Захоплення повного контексту виконання додатку, включаючи виклики LLM, контекст, підказки, HTTP-запити та інше, на сторонню платформу відстеження.', - configProviderTitle: { - configured: 'Налаштовано', - notConfigured: 'Налаштуйте провайдера для увімкнення відстеження', - moreProvider: 'Більше провайдерів', - }, - arize: { - title: 'Arize', - description: 'Спостережуваність LLM корпоративного рівня, онлайн та офлайн оцінювання, моніторинг та експерименти—на основі OpenTelemetry. Спеціально розроблено для застосунків на базі LLM та агентів.', - }, - phoenix: { - title: 'Phoenix', - description: 'Відкрита та заснована на OpenTelemetry платформа для спостережуваності, оцінювання, інженерії підказок та експериментів для ваших робочих процесів та агентів LLM.', - }, - langsmith: { - title: 'LangSmith', - description: 'Універсальна платформа розробника для кожного етапу життєвого циклу додатку на основі LLM.', - }, - langfuse: { - title: 'Langfuse', - description: 'Трасування, оцінки, управління підказками та метрики для налагодження та покращення вашого LLM-додатку.', - }, - inUse: 'Використовується', - configProvider: { - title: 'Налаштувати ', - placeholder: 'Введіть ваш {{key}}', - project: 'Проект', - publicKey: 'Публічний ключ', - secretKey: 'Секретний ключ', - viewDocsLink: 'Переглянути документацію {{key}}', - removeConfirmTitle: 'Видалити налаштування {{key}}?', - removeConfirmContent: 'Поточне налаштування використовується, його видалення вимкне функцію Відстеження.', - password: 'Пароль', - databricksHost: 'URL робочого простору Databricks', - clientId: 'Ідентифікатор клієнта OAuth', - experimentId: 'Ідентифікатор експерименту', - trackingUri: 'Відстеження URI', - personalAccessToken: 'Персональний токен доступу (застарілий)', - username: 'Ім\'я користувача', - clientSecret: 'Секретний ключ клієнта OAuth', - }, - view: 'Вид', - opik: { - title: 'Опік', - description: 'Opik — це платформа з відкритим вихідним кодом для оцінки, тестування та моніторингу додатків LLM.', - }, - weave: { - title: 'Ткати', - description: 'Weave є платформою з відкритим кодом для оцінки, тестування та моніторингу LLM додатків.', - }, - aliyun: { - title: 'Моніторинг Хмари', - description: 'Повністю керовані та без обслуговування платформи спостереження, надані Alibaba Cloud, дозволяють миттєвий моніторинг, трасування та оцінку застосувань Dify.', - }, - mlflow: { - title: 'MLflow', - description: 'Платформа LLMOps з відкритим кодом для відстеження експериментів, спостережуваності та оцінки, для створення додатків AI/LLM з впевненістю.', - }, - databricks: { - title: 'Databricks', - description: 'Databricks пропонує повністю керований MLflow з сильною управлінням та безпекою для зберігання даних трасування.', - }, - tencent: { - title: 'Tencent APM', - description: 'Сервіс моніторингу продуктивності додатків Tencent забезпечує комплексне трасування та багатовимірний аналіз додатків LLM.', - }, - }, - answerIcon: { - title: 'Використовуйте піктограму web app для заміни 🤖', - description: 'Чи слід використовувати піктограму web app для заміни 🤖 у спільній програмі', - descriptionInExplore: 'Чи використовувати піктограму веб-програми для заміни 🤖 в Огляді', - }, - importFromDSLUrl: 'З URL', - importFromDSL: 'Імпорт з DSL', - importFromDSLUrlPlaceholder: 'Вставте посилання на DSL тут', - dslUploader: { - button: 'Перетягніть файл, або', - browse: 'Огляд', - }, - importFromDSLFile: 'З DSL-файлу', - mermaid: { - handDrawn: 'Намальовані від руки', - classic: 'Класичний', - }, - openInExplore: 'Відкрити в Огляді', - newAppFromTemplate: { - sidebar: { - Writing: 'Написання', - Assistant: 'Асистент', - Workflow: 'Робочий процес', - Agent: 'Агент', - Recommended: 'Рекомендується', - HR: 'Управління персоналом', - Programming: 'Програмування', - }, - byCategories: 'ЗА КАТЕГОРІЯМИ', - searchAllTemplate: 'Пошук по всіх шаблонах...', - }, - showMyCreatedAppsOnly: 'Показати лише створені мною додатки', - appSelector: { - noParams: 'Параметри не потрібні', - label: 'ДОДАТОК', - params: 'ПАРАМЕТРИ ПРОГРАМИ', - placeholder: 'Виберіть програму...', - }, - structOutput: { - LLMResponse: 'Відповідь ЛЛМ', - configure: 'Налаштувати', - required: 'Необхідно', - moreFillTip: 'Показуючи максимум 10 рівнів вкладеності', - structured: 'Структурований', - modelNotSupported: 'Модель не підтримується', - notConfiguredTip: 'Структурований вихід ще не було налаштовано', - modelNotSupportedTip: 'Поточна модель не підтримує цю функцію та автоматично знижується до ін\'єкції запитів.', - structuredTip: 'Структуровані виходи - це функція, яка забезпечує, що модель завжди генеруватиме відповіді, що відповідають наданій вами схемі JSON.', - }, - accessItemsDescription: { - anyone: 'Будь-хто може отримати доступ до веб-додатку', - specific: 'Тільки окремі групи або члени можуть отримати доступ до веб-додатку.', - organization: 'Будь-хто в організації може отримати доступ до веб-додатку.', - external: 'Тільки перевірені зовнішні користувачі можуть отримати доступ до веб-застосунку.', - }, - accessControlDialog: { - accessItems: { - anyone: 'Кожен, у кого є посилання', - specific: 'Конкретні групи або члени', - organization: 'Тільки члени підприємства', - external: 'Аутентифіковані зовнішні користувачі', - }, - operateGroupAndMember: { - searchPlaceholder: 'Шукати групи та учасників', - allMembers: 'Всі члени', - expand: 'розвивати', - noResult: 'Немає результату', - }, - title: 'Контроль доступу до веб-додатка', - description: 'Встановіть дозволи доступу до веб-додатку', - accessLabel: 'Хто має доступ', - groups_one: '{{count}} ГРУПА', - groups_other: '{{count}} ГРУП', - members_one: '{{count}} ЧЛЕН', - members_other: '{{count}} ЧЛЕНІ', - noGroupsOrMembers: 'Не вибрано групи чи учасників', - updateSuccess: 'Оновлення успішно', - webAppSSONotEnabledTip: 'Будь ласка, зв\'яжіться з адміністратором підприємства для налаштування методу аутентифікації веб-додатку.', - }, - publishApp: { - title: 'Хто може отримати доступ до веб-додатку', - notSet: 'Не встановлено', - notSetDesc: 'На даний момент ніхто не може отримати доступ до веб-додатку. Будь ласка, налаштуйте дозволи.', - }, - accessControl: 'Контроль доступу до веб-додатків', - noAccessPermission: 'Немає дозволу на доступ до веб-додатку', - maxActiveRequestsPlaceholder: 'Введіть 0 для необмеженого', - maxActiveRequests: 'Максимальна кількість одночасних запитів', - maxActiveRequestsTip: 'Максимальна кількість одночасних активних запитів на додаток (0 для необмеженої кількості)', - gotoAnything: { - actions: { - searchApplications: 'Пошук додатків', - searchKnowledgeBases: 'Пошук по базах знань', - searchWorkflowNodes: 'Пошук вузлів робочого процесу', - searchApplicationsDesc: 'Шукайте та переходьте до своїх програм', - searchPluginsDesc: 'Пошук і навігація до ваших плагінів', - searchWorkflowNodesHelp: 'Ця функція працює лише під час перегляду робочого процесу. Спочатку перейдіть до робочого процесу.', - searchPlugins: 'Пошук плагінів', - searchKnowledgeBasesDesc: 'Шукайте та переходьте до своїх баз знань', - searchWorkflowNodesDesc: 'Знаходьте вузли в поточному робочому процесі та переходьте до них за іменем або типом', - themeSystem: 'Системна тема', - languageCategoryTitle: 'Мова', - themeCategoryTitle: 'Тема', - themeLight: 'Світла тема', - runTitle: 'Команди', - languageChangeDesc: 'Змінити мову інтерфейсу', - themeDark: 'Темна тема', - themeDarkDesc: 'Використовуйте темний режим', - runDesc: 'Запустіть швидкі команди (тема, мова, ...)', - themeCategoryDesc: 'Переключити тему застосунку', - themeLightDesc: 'Використовуйте світлий вигляд', - themeSystemDesc: 'Дотримуйтесь зовнішнього вигляду вашої операційної системи', - languageCategoryDesc: 'Переключити мову інтерфейсу', - slashDesc: 'Виконуйте команди, такі як /theme, /lang', - feedbackDesc: 'Відкриті обговорення відгуків громади', - docDesc: 'Відкрийте документацію допомоги', - accountDesc: 'Перейдіть на сторінку облікового запису', - communityDesc: 'Відкрита Discord-спільнота', - zenTitle: 'Zen Mode', - zenDesc: 'Toggle canvas focus mode', - }, - emptyState: { - noPluginsFound: 'Плагінів не знайдено', - noKnowledgeBasesFound: 'Баз знань не знайдено', - noAppsFound: 'Не знайдено додатків', - noWorkflowNodesFound: 'Вузли бізнес-процесу не знайдено', - tryDifferentTerm: 'Спробуйте інший пошуковий термін або видаліть фільтр {{mode}}', - trySpecificSearch: 'Спробуйте {{shortcuts}} для конкретного пошуку', - }, - groups: { - knowledgeBases: 'Бази знань', - plugins: 'Плагіни', - apps: 'Програми', - workflowNodes: 'Вузли документообігу', - commands: 'Команди', - }, - searching: 'Пошук...', - searchTitle: 'Шукайте що завгодно', - searchFailed: 'Пошук не вдався', - clearToSearchAll: 'Очистіть @ для пошуку всіх', - noResults: 'Результатів не знайдено', - searchPlaceholder: 'Виконайте пошук або введіть @ для команд...', - searchTemporarilyUnavailable: 'Пошук тимчасово недоступний', - useAtForSpecific: 'Використовуйте @ для конкретних типів', - someServicesUnavailable: 'Деякі пошукові сервіси недоступні', - servicesUnavailableMessage: 'У деяких пошукових службах можуть виникати проблеми. Повторіть спробу за мить.', - selectSearchType: 'Виберіть, що шукати', - commandHint: 'Введіть @ для навігації за категоріями', - searchHint: 'Почніть вводити текст, щоб миттєво шукати все', - resultCount: '{{count}} результат', - resultCount_other: '{{count}} результатів', - inScope: 'у {{scope}}s', - noMatchingCommands: 'Відповідних команд не знайдено', - tryDifferentSearch: 'Спробуйте інший пошуковий термін', - slashHint: 'Наберіть / , щоб побачити всі доступні команди', - selectToNavigate: 'Виберіть, щоб перейти', - tips: 'Натисніть ↑↓ для навігації', - startTyping: 'Почніть вводити для пошуку', - pressEscToClose: 'Натисніть ESC, щоб закрити', - }, - notPublishedYet: 'Додаток ще не опублікований', - noUserInputNode: 'Відсутній вузол введення користувача', -} - -export default translation diff --git a/web/i18n/uk-UA/billing.json b/web/i18n/uk-UA/billing.json new file mode 100644 index 0000000000..c9045f6e8f --- /dev/null +++ b/web/i18n/uk-UA/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "Поточний план", + "upgradeBtn": { + "plain": "Оновити план", + "encourage": "Оновити зараз", + "encourageShort": "Оновити" + }, + "viewBilling": "Керувати рахунками та підписками", + "buyPermissionDeniedTip": "Зв'яжіться з адміністратором вашого підприємства, щоб оформити підписку", + "plansCommon": { + "yearlyTip": "Отримайте 2 місяці безкоштовно, оформивши річну підписку!", + "mostPopular": "Найпопулярніший", + "planRange": { + "monthly": "Щомісяця", + "yearly": "Щорічно" + }, + "month": "місяць", + "year": "рік", + "save": "Зберегти ", + "free": "Безкоштовно", + "currentPlan": "Поточний план", + "contractSales": "Зв'язатися з відділом продажів", + "contractOwner": "Зв'язатися з керівником команди", + "startForFree": "Почніть безкоштовно", + "contactSales": "Зв'язатися з відділом продажів", + "talkToSales": "Поговоріть зі службою продажів", + "modelProviders": "Постачальники моделей", + "buildApps": "Створювати додатки", + "vectorSpace": "Векторний простір", + "vectorSpaceTooltip": "Векторний простір – це система довгострокової пам'яті, необхідна LLM для розуміння ваших даних.", + "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 запити", + "agentMode": "Режим агента", + "workflow": "Робочий процес", + "bulkUpload": "Масове завантаження документів", + "llmLoadingBalancing": "Балансування навантаження LLM", + "llmLoadingBalancingTooltip": "Додавайте кілька ключів API до моделей, ефективно обходячи обмеження швидкості API." + }, + "comingSoon": "Скоро", + "member": "Учасник", + "memberAfter": "учасника", + "messageRequest": { + "title": "Кредити повідомлень", + "tooltip": "Квоти на виклик повідомлень для різних планів з використанням моделей OpenAI (крім gpt4). Повідомлення понад ліміт використовуватимуть ваш ключ API OpenAI.", + "titlePerMonth": "{{count,number}} повідомлень/місяць" + }, + "annotatedResponse": { + "title": "Ліміти квоти відповідей з анотаціями", + "tooltip": "Ручне редагування та анотування відповідей забезпечує налаштовувані високоякісні можливості відповідей на запитання для програм. (Застосовується лише в чат-програмах)" + }, + "ragAPIRequestTooltip": "Відноситься до кількості викликів API, що викликають лише можливості обробки бази знань Dify.", + "receiptInfo": "Лише власник команди та адміністратор команди можуть підписуватися та переглядати інформацію про виставлення рахунків", + "annotationQuota": "Квота анотацій", + "teamMember_one": "{{count,number}} член команди", + "teamWorkspace": "{{count,number}} Командний Простір", + "apiRateLimit": "Обмеження швидкості API", + "documentsTooltip": "Квота на кількість документів, імпортованих з джерела знань.", + "self": "Власний хостинг", + "cloud": "Хмарний сервіс", + "documentsRequestQuota": "{{count,number}}/хвилина Ліміт запиту знань", + "annualBilling": "Щорічна оплата", + "priceTip": "за робочим простором/", + "unlimitedApiRate": "Немає обмеження на швидкість API", + "freeTrialTipSuffix": "Кредитна картка не потрібна", + "apiRateLimitUnit": "{{count,number}}", + "getStarted": "Почати", + "freeTrialTip": "безкоштовна пробна версія з 200 запитів до OpenAI.", + "documents": "{{count,number}} Документів знань", + "freeTrialTipPrefix": "Зареєструйтесь і отримайте", + "teamMember_other": "{{count,number}} членів команди", + "comparePlanAndFeatures": "Порівняйте плани та функції", + "apiRateLimitTooltip": "Обмеження частоти запитів застосовується до всіх запитів, зроблених через API Dify, включаючи генерацію тексту, чат-розмови, виконання робочих процесів та обробку документів.", + "documentsRequestQuotaTooltip": "Вказує загальну кількість дій, які робоча область може виконувати за хвилину в межах бази знань, включаючи створення, видалення, оновлення наборів даних, завантаження документів, модифікації, архівування та запити до бази знань. Цей показник використовується для оцінки ефективності запитів до бази знань. Наприклад, якщо користувач Sandbox виконує 10 послідовних тестів за один хвилину, його робочій області буде тимчасово заборонено виконувати наступні дії протягом наступної хвилини: створення наборів даних, видалення, оновлення, а також завантаження чи модифікацію документів.", + "startBuilding": "Почніть будувати", + "taxTip": "Всі ціни на підписку (щомісячна/щорічна) не включають відповідні податки (наприклад, ПДВ, податок з продажу).", + "taxTipSecond": "Якщо для вашого регіону немає відповідних податкових вимог, податок не відображатиметься на вашому чек-ауті, і з вас не стягуватимуть додаткові збори протягом усього терміну підписки.", + "triggerEvents": { + "unlimited": "Необмежена кількість тригерних подій", + "tooltip": "Кількість подій, які автоматично запускають робочі процеси через тригери Плагіна, Розкладу або Вебхука.", + "sandbox": "{{count,number}} Тригери подій", + "professional": "{{count,number}} тригерні події/місяць" + }, + "workflowExecution": { + "faster": "Швидше виконання робочого процесу", + "standard": "Виконання стандартного робочого процесу", + "priority": "Виконання пріоритетного робочого процесу", + "tooltip": "Пріоритет і швидкість виконання черги робочого процесу." + }, + "startNodes": { + "unlimited": "Необмежені тригери/робочі процеси", + "limited": "До {{count}} тригерів/робочих процесів" + }, + "title": { + "plans": "плани", + "description": "Виберіть план, який найкраще відповідає потребам вашої команди." + } + }, + "plans": { + "sandbox": { + "name": "Пісочниця", + "description": "200 безкоштовних пробних версій GPT", + "for": "Безкоштовна пробна версія основних функцій" + }, + "professional": { + "name": "Професійний", + "description": "Щоб окремі особи та невеликі команди могли отримати більше можливостей за доступною ціною.", + "for": "Для незалежних розробників/малих команд" + }, + "team": { + "name": "Команда", + "description": "Співпрацюйте без обмежень і користуйтеся продуктивністю найвищого рівня.", + "for": "Для середніх команд" + }, + "enterprise": { + "name": "Ентерпрайз", + "description": "Отримайте повні можливості та підтримку для масштабних критично важливих систем.", + "includesTitle": "Все, що входить до плану Team, плюс:", + "features": [ + "Масштабовані рішення для розгортання корпоративного рівня", + "Авторизація комерційної ліцензії", + "Ексклюзивні корпоративні функції", + "Кілька робочих просторів та управління підприємством", + "ЄДИНА СИСТЕМА АВТОРИЗАЦІЇ", + "Узгоджені SLA партнерами Dify", + "Розширена безпека та контроль", + "Оновлення та обслуговування від Dify офіційно", + "Професійна технічна підтримка" + ], + "btnText": "Зв'язатися з відділом продажу", + "priceTip": "Тільки річна оплата", + "for": "Для великих команд", + "price": "Користувацький" + }, + "community": { + "features": [ + "Всі основні функції випущені у публічному репозиторії", + "Один робочий простір", + "Відповідає ліцензії відкритого програмного забезпечення Dify" + ], + "btnText": "Розпочніть з громади", + "includesTitle": "Безкоштовні можливості:", + "for": "Для індивідуальних користувачів, малих команд або некомерційних проектів", + "price": "Безкоштовно", + "description": "Для індивідуальних користувачів, малих команд або некомерційних проектів", + "name": "Спільнота" + }, + "premium": { + "features": [ + "Самокерована надійність від різних хмарних постачальників", + "Один робочий простір", + "Налаштування логотипу та бренду веб-додатку", + "Пріоритетна підтримка електронної пошти та чату" + ], + "description": "Для середніх підприємств та команд", + "btnText": "Отримайте Преміум у", + "price": "Масштабований", + "comingSoon": "Підтримка Microsoft Azure та Google Cloud незабаром", + "priceTip": "На основі Хмарного ринку", + "for": "Для середніх підприємств та команд", + "name": "Преміум", + "includesTitle": "Все з громади, плюс:" + } + }, + "vectorSpace": { + "fullTip": "Векторний простір заповнений.", + "fullSolution": "Оновіть свій план, щоб отримати більше місця." + }, + "apps": { + "fullTip1des": "Ви досягли межі створення додатків за цим планом.", + "fullTip2": "Досягнуто ліміту плану", + "fullTip1": "Оновіть, щоб створити більше додатків", + "contactUs": "Зв'яжіться з нами", + "fullTip2des": "Рекомендується очистити неактивні програми, щоб звільнити місце, або зв'язатися з нами." + }, + "annotatedResponse": { + "fullTipLine1": "Оновіть свій план, щоб", + "fullTipLine2": "анотувати більше розмов.", + "quotaTitle": "Квота на анотовані відповіді" + }, + "usagePage": { + "teamMembers": "Члени команди", + "buildApps": "Створюйте додатки", + "annotationQuota": "Квота анотацій", + "vectorSpaceTooltip": "Документи з режимом індексування високої якості споживатимуть ресурси Сховища Знань. Коли Сховище Знань досягне межі, нові документи не будуть завантажені.", + "documentsUploadQuota": "Квота на завантаження документів", + "vectorSpace": "Сховище даних знань", + "perMonth": "на місяць", + "triggerEvents": "Тригерні події", + "resetsIn": "Скидання через {{count,number}} днів" + }, + "teamMembers": "Члени команди", + "triggerLimitModal": { + "upgrade": "Оновити", + "dismiss": "Закрити", + "usageTitle": "ПОДІЇ-ТРИГЕРИ", + "title": "Оновіть, щоб розблокувати більше подій-тригерів", + "description": "Ви досягли ліміту тригерів подій робочого процесу для цього плану." + }, + "viewBillingTitle": "Білінг та підписки", + "viewBillingDescription": "Керуйте способами оплати, рахунками та змінами підписки", + "viewBillingAction": "Керувати", + "upgrade": { + "uploadMultiplePages": { + "title": "Оновіть, щоб завантажувати кілька документів одночасно", + "description": "Ви досягли ліміту завантаження — на вашому поточному плані можна вибрати та завантажити лише один документ одночасно." + }, + "uploadMultipleFiles": { + "title": "Оновіть, щоб розблокувати пакетне завантаження документів", + "description": "Завантажуйте кілька документів одночасно, щоб заощадити час і підвищити ефективність." + }, + "addChunks": { + "title": "Оновіть, щоб продовжити додавати частини", + "description": "Ви досягли межі додавання фрагментів для цього плану." + } + } +} diff --git a/web/i18n/uk-UA/billing.ts b/web/i18n/uk-UA/billing.ts deleted file mode 100644 index 94bf0b0214..0000000000 --- a/web/i18n/uk-UA/billing.ts +++ /dev/null @@ -1,221 +0,0 @@ -const translation = { - currentPlan: 'Поточний план', - upgradeBtn: { - plain: 'Оновити план', - encourage: 'Оновити зараз', - encourageShort: 'Оновити', - }, - viewBilling: 'Керувати рахунками та підписками', - buyPermissionDeniedTip: 'Зв\'яжіться з адміністратором вашого підприємства, щоб оформити підписку', - plansCommon: { - yearlyTip: 'Отримайте 2 місяці безкоштовно, оформивши річну підписку!', - mostPopular: 'Найпопулярніший', - planRange: { - monthly: 'Щомісяця', - yearly: 'Щорічно', - }, - month: 'місяць', - year: 'рік', - save: 'Зберегти ', - free: 'Безкоштовно', - currentPlan: 'Поточний план', - contractSales: 'Зв\'язатися з відділом продажів', - contractOwner: 'Зв\'язатися з керівником команди', - startForFree: 'Почніть безкоштовно', - contactSales: 'Зв\'язатися з відділом продажів', - talkToSales: 'Поговоріть зі службою продажів', - modelProviders: 'Постачальники моделей', - buildApps: 'Створювати додатки', - vectorSpace: 'Векторний простір', - vectorSpaceTooltip: 'Векторний простір – це система довгострокової пам\'яті, необхідна LLM для розуміння ваших даних.', - 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 запити', - agentMode: 'Режим агента', - workflow: 'Робочий процес', - bulkUpload: 'Масове завантаження документів', - llmLoadingBalancing: 'Балансування навантаження LLM', - llmLoadingBalancingTooltip: 'Додавайте кілька ключів API до моделей, ефективно обходячи обмеження швидкості API.', - }, - comingSoon: 'Скоро', - member: 'Учасник', - memberAfter: 'учасника', - messageRequest: { - title: 'Кредити повідомлень', - tooltip: 'Квоти на виклик повідомлень для різних планів з використанням моделей OpenAI (крім gpt4). Повідомлення понад ліміт використовуватимуть ваш ключ API OpenAI.', - titlePerMonth: '{{count,number}} повідомлень/місяць', - }, - annotatedResponse: { - title: 'Ліміти квоти відповідей з анотаціями', - tooltip: 'Ручне редагування та анотування відповідей забезпечує налаштовувані високоякісні можливості відповідей на запитання для програм. (Застосовується лише в чат-програмах)', - }, - ragAPIRequestTooltip: 'Відноситься до кількості викликів API, що викликають лише можливості обробки бази знань Dify.', - receiptInfo: 'Лише власник команди та адміністратор команди можуть підписуватися та переглядати інформацію про виставлення рахунків', - annotationQuota: 'Квота анотацій', - teamMember_one: '{{count,number}} член команди', - teamWorkspace: '{{count,number}} Командний Простір', - apiRateLimit: 'Обмеження швидкості API', - documentsTooltip: 'Квота на кількість документів, імпортованих з джерела знань.', - self: 'Власний хостинг', - cloud: 'Хмарний сервіс', - documentsRequestQuota: '{{count,number}}/хвилина Ліміт запиту знань', - annualBilling: 'Щорічна оплата', - priceTip: 'за робочим простором/', - unlimitedApiRate: 'Немає обмеження на швидкість API', - freeTrialTipSuffix: 'Кредитна картка не потрібна', - apiRateLimitUnit: '{{count,number}}', - getStarted: 'Почати', - freeTrialTip: 'безкоштовна пробна версія з 200 запитів до OpenAI.', - documents: '{{count,number}} Документів знань', - freeTrialTipPrefix: 'Зареєструйтесь і отримайте', - teamMember_other: '{{count,number}} членів команди', - comparePlanAndFeatures: 'Порівняйте плани та функції', - apiRateLimitTooltip: 'Обмеження частоти запитів застосовується до всіх запитів, зроблених через API Dify, включаючи генерацію тексту, чат-розмови, виконання робочих процесів та обробку документів.', - documentsRequestQuotaTooltip: 'Вказує загальну кількість дій, які робоча область може виконувати за хвилину в межах бази знань, включаючи створення, видалення, оновлення наборів даних, завантаження документів, модифікації, архівування та запити до бази знань. Цей показник використовується для оцінки ефективності запитів до бази знань. Наприклад, якщо користувач Sandbox виконує 10 послідовних тестів за один хвилину, його робочій області буде тимчасово заборонено виконувати наступні дії протягом наступної хвилини: створення наборів даних, видалення, оновлення, а також завантаження чи модифікацію документів.', - startBuilding: 'Почніть будувати', - taxTip: 'Всі ціни на підписку (щомісячна/щорічна) не включають відповідні податки (наприклад, ПДВ, податок з продажу).', - taxTipSecond: 'Якщо для вашого регіону немає відповідних податкових вимог, податок не відображатиметься на вашому чек-ауті, і з вас не стягуватимуть додаткові збори протягом усього терміну підписки.', - triggerEvents: { - unlimited: 'Необмежена кількість тригерних подій', - tooltip: 'Кількість подій, які автоматично запускають робочі процеси через тригери Плагіна, Розкладу або Вебхука.', - sandbox: '{{count,number}} Тригери подій', - professional: '{{count,number}} тригерні події/місяць', - }, - workflowExecution: { - faster: 'Швидше виконання робочого процесу', - standard: 'Виконання стандартного робочого процесу', - priority: 'Виконання пріоритетного робочого процесу', - tooltip: 'Пріоритет і швидкість виконання черги робочого процесу.', - }, - startNodes: { - unlimited: 'Необмежені тригери/робочі процеси', - limited: 'До {{count}} тригерів/робочих процесів', - }, - title: { - plans: 'плани', - description: 'Виберіть план, який найкраще відповідає потребам вашої команди.', - }, - }, - plans: { - sandbox: { - name: 'Пісочниця', - description: '200 безкоштовних пробних версій GPT', - for: 'Безкоштовна пробна версія основних функцій', - }, - professional: { - name: 'Професійний', - description: 'Щоб окремі особи та невеликі команди могли отримати більше можливостей за доступною ціною.', - for: 'Для незалежних розробників/малих команд', - }, - team: { - name: 'Команда', - description: 'Співпрацюйте без обмежень і користуйтеся продуктивністю найвищого рівня.', - for: 'Для середніх команд', - }, - enterprise: { - name: 'Ентерпрайз', - description: 'Отримайте повні можливості та підтримку для масштабних критично важливих систем.', - includesTitle: 'Все, що входить до плану Team, плюс:', - features: ['Масштабовані рішення для розгортання корпоративного рівня', 'Авторизація комерційної ліцензії', 'Ексклюзивні корпоративні функції', 'Кілька робочих просторів та управління підприємством', 'ЄДИНА СИСТЕМА АВТОРИЗАЦІЇ', 'Узгоджені SLA партнерами Dify', 'Розширена безпека та контроль', 'Оновлення та обслуговування від Dify офіційно', 'Професійна технічна підтримка'], - btnText: 'Зв\'язатися з відділом продажу', - priceTip: 'Тільки річна оплата', - for: 'Для великих команд', - price: 'Користувацький', - }, - community: { - features: ['Всі основні функції випущені у публічному репозиторії', 'Один робочий простір', 'Відповідає ліцензії відкритого програмного забезпечення Dify'], - btnText: 'Розпочніть з громади', - includesTitle: 'Безкоштовні можливості:', - for: 'Для індивідуальних користувачів, малих команд або некомерційних проектів', - price: 'Безкоштовно', - description: 'Для індивідуальних користувачів, малих команд або некомерційних проектів', - name: 'Спільнота', - }, - premium: { - features: ['Самокерована надійність від різних хмарних постачальників', 'Один робочий простір', 'Налаштування логотипу та бренду веб-додатку', 'Пріоритетна підтримка електронної пошти та чату'], - description: 'Для середніх підприємств та команд', - btnText: 'Отримайте Преміум у', - price: 'Масштабований', - comingSoon: 'Підтримка Microsoft Azure та Google Cloud незабаром', - priceTip: 'На основі Хмарного ринку', - for: 'Для середніх підприємств та команд', - name: 'Преміум', - includesTitle: 'Все з громади, плюс:', - }, - }, - vectorSpace: { - fullTip: 'Векторний простір заповнений.', - fullSolution: 'Оновіть свій план, щоб отримати більше місця.', - }, - apps: { - fullTip1des: 'Ви досягли межі створення додатків за цим планом.', - fullTip2: 'Досягнуто ліміту плану', - fullTip1: 'Оновіть, щоб створити більше додатків', - contactUs: 'Зв\'яжіться з нами', - fullTip2des: 'Рекомендується очистити неактивні програми, щоб звільнити місце, або зв\'язатися з нами.', - }, - annotatedResponse: { - fullTipLine1: 'Оновіть свій план, щоб', - fullTipLine2: 'анотувати більше розмов.', - quotaTitle: 'Квота на анотовані відповіді', - }, - usagePage: { - teamMembers: 'Члени команди', - buildApps: 'Створюйте додатки', - annotationQuota: 'Квота анотацій', - vectorSpaceTooltip: 'Документи з режимом індексування високої якості споживатимуть ресурси Сховища Знань. Коли Сховище Знань досягне межі, нові документи не будуть завантажені.', - documentsUploadQuota: 'Квота на завантаження документів', - vectorSpace: 'Сховище даних знань', - perMonth: 'на місяць', - triggerEvents: 'Тригерні події', - resetsIn: 'Скидання через {{count,number}} днів', - }, - teamMembers: 'Члени команди', - triggerLimitModal: { - upgrade: 'Оновити', - dismiss: 'Закрити', - usageTitle: 'ПОДІЇ-ТРИГЕРИ', - title: 'Оновіть, щоб розблокувати більше подій-тригерів', - description: 'Ви досягли ліміту тригерів подій робочого процесу для цього плану.', - }, - viewBillingTitle: 'Білінг та підписки', - viewBillingDescription: 'Керуйте способами оплати, рахунками та змінами підписки', - viewBillingAction: 'Керувати', - upgrade: { - uploadMultiplePages: { - title: 'Оновіть, щоб завантажувати кілька документів одночасно', - description: 'Ви досягли ліміту завантаження — на вашому поточному плані можна вибрати та завантажити лише один документ одночасно.', - }, - uploadMultipleFiles: { - title: 'Оновіть, щоб розблокувати пакетне завантаження документів', - description: 'Завантажуйте кілька документів одночасно, щоб заощадити час і підвищити ефективність.', - }, - addChunks: { - title: 'Оновіть, щоб продовжити додавати частини', - description: 'Ви досягли межі додавання фрагментів для цього плану.', - }, - }, -} - -export default translation diff --git a/web/i18n/uk-UA/common.json b/web/i18n/uk-UA/common.json new file mode 100644 index 0000000000..b0fa55af54 --- /dev/null +++ b/web/i18n/uk-UA/common.json @@ -0,0 +1,785 @@ +{ + "api": { + "success": "Успіх", + "actionSuccess": "Дію виконано успішно", + "saved": "Збережено", + "create": "Створено", + "remove": "Видалено", + "actionFailed": "Не вдалося виконати дію" + }, + "operation": { + "create": "Створити", + "confirm": "Підтвердити", + "cancel": "Скасувати", + "clear": "Очистити", + "save": "Зберегти", + "saveAndEnable": "Зберегти та Увімкнути", + "edit": "Редагувати", + "add": "Додати", + "added": "Додано", + "refresh": "Перезапустити", + "reset": "Скинути", + "search": "Пошук", + "change": "Змінити", + "remove": "Видалити", + "send": "Надіслати", + "copy": "Копіювати", + "lineBreak": "Перенесення рядка", + "sure": "Я впевнений", + "download": "Завантажити", + "delete": "Видалити", + "settings": "Налаштування", + "setup": "Налаштувати", + "getForFree": "Отримати безкоштовно", + "reload": "Перезавантажити", + "ok": "ОК", + "log": "Журнал", + "learnMore": "Дізнатися більше", + "params": "Параметри", + "duplicate": "дублікат", + "rename": "Перейменувати", + "audioSourceUnavailable": "AudioSource недоступний", + "copyImage": "Скопіювати зображення", + "openInNewTab": "Відкрити в новій вкладці", + "zoomOut": "Зменшити масштаб", + "zoomIn": "Збільшити масштаб", + "close": "Закрити", + "regenerate": "Відновити", + "view": "Вид", + "viewMore": "ДИВИТИСЬ БІЛЬШЕ", + "saveAndRegenerate": "Збереження та регенерація дочірніх фрагментів", + "submit": "Представити", + "skip": "Корабель", + "imageCopied": "Скопійоване зображення", + "deleteApp": "Видалити програму", + "viewDetails": "Перегляд докладних відомостей", + "copied": "Скопійовані", + "in": "В", + "format": "Формат", + "downloadFailed": "Не вдалося завантажити. Будь ласка, спробуйте ще раз пізніше.", + "more": "Більше", + "downloadSuccess": "Завантаження завершено.", + "deSelectAll": "Вимкнути все", + "selectAll": "Вибрати все", + "config": "Конфігурація", + "yes": "Так", + "no": "Ні", + "deleteConfirmTitle": "Видалити?", + "confirmAction": "Будь ласка, підтвердіть свої дії.", + "noSearchResults": "Жодного {{content}} не знайдено", + "resetKeywords": "Скинути ключові слова", + "selectCount": "{{count}} вибрано", + "searchCount": "Знайти {{count}} {{content}}", + "noSearchCount": "0 {{content}}", + "now": "Зараз" + }, + "placeholder": { + "input": "Будь ласка, введіть текст", + "select": "Будь ласка, оберіть параметр", + "search": "Пошук..." + }, + "voice": { + "language": { + "zhHans": "Китайська", + "zhHant": "Китайська (традиційна)", + "enUS": "Англійська", + "deDE": "Німецька", + "frFR": "Французька", + "esES": "Іспанська", + "itIT": "Італійська", + "thTH": "Тайська", + "idID": "Індонезійська", + "jaJP": "Японська", + "koKR": "Корейська", + "ptBR": "Португальська", + "ruRU": "Російська", + "ukUA": "Українська", + "viVN": "В'є тнамська", + "plPL": "Польська", + "roRO": "Румунська", + "hiIN": "Хінді", + "trTR": "Турецька", + "faIR": "Перська", + "slSI": "Словенська", + "arTN": "Туніська арабська" + } + }, + "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 max token (вхід 128k, вихід 4k)", + "maxTokenSettingTip": "Ваше максимальне значення токена велике, що може обмежувати простір для запитів, даних тощо. Краще налаштувати його менш як 2/3.", + "setToCurrentModelMaxTokenTip": "Максимальний токен оновлено до максимуму токена поточної моделі {{maxToken}}.", + "stop_sequences": "Зупинити послідовності", + "stop_sequencesTip": "До чотирьох послідовностей, у яких API припинить генерацію подальших токенів. Повернений текст не міститиме зупинку послідовності.", + "stop_sequencesPlaceholder": "Введіть послідовність і натисніть Tab" + }, + "tone": { + "Creative": "Креативний", + "Balanced": "Збалансований", + "Precise": "Точний", + "Custom": "Користувацький" + }, + "addMoreModel": "Перейдіть до налаштувань, щоб додати більше моделей", + "settingsLink": "Налаштування постачальника моделі", + "capabilities": "Можливості MultiModal" + }, + "menus": { + "status": "бета", + "explore": "Досліджувати", + "apps": "Студія", + "plugins": "Плагіни", + "pluginsTips": "Інтегруйте сторонні плагіни або створіть AI-сумісні плагіни.", + "datasets": "Знання", + "datasetsTips": "СКОРО: імпортуйте власні текстові дані або пишіть дані в реальному часі через Webhook для покращення контексту LLM.", + "newApp": "Нова програма", + "newDataset": "Створити знання", + "tools": "Інструменти", + "exploreMarketplace": "Дізнайтеся більше про Marketplace", + "appDetail": "Деталі програми", + "account": "Обліковий запис" + }, + "userProfile": { + "settings": "Налаштування", + "emailSupport": "Підтримка по електронній пошті", + "workspace": "Робочий простір", + "createWorkspace": "Створити робочий простір", + "helpCenter": "Довідковий центр", + "roadmap": "Дорожня карта", + "community": "Спільнота", + "about": "Про нас", + "logout": "Вийти", + "compliance": "Відповідність", + "support": "Підтримка", + "github": "Гітхаб", + "contactUs": "Зв’яжіться з нами", + "forum": "Форум" + }, + "settings": { + "accountGroup": "ОБЛІКОВИЙ ЗАПИС", + "workplaceGroup": "РОБОЧИЙ ПРОСТІР", + "account": "Мій обліковий запис", + "members": "Учасники", + "billing": "Виставлення рахунків", + "integrations": "Інтеграції", + "language": "Мова", + "provider": "Постачальник моделі", + "dataSource": "Джерело даних", + "plugin": "Плагіни", + "apiBasedExtension": "Розширення API", + "generalGroup": "ЗАГАЛЬНЕ" + }, + "account": { + "avatar": "Аватар", + "name": "Ім'я", + "email": "Електронна пошта", + "password": "Пароль", + "passwordTip": "Ви можете встановити постійний пароль, якщо не хочете використовувати тимчасові коди для входу", + "setPassword": "Встановити пароль", + "resetPassword": "Скинути пароль", + "currentPassword": "Поточний пароль", + "newPassword": "Новий пароль", + "confirmPassword": "Підтвердіть пароль", + "notEqual": "Два паролі різняться.", + "langGeniusAccount": "Обліковий запис Dify", + "langGeniusAccountTip": "Ваш обліковий запис Dify та пов’язані з ним дані користувача.", + "editName": "Редагувати ім'я", + "showAppLength": "Показати {{length}} програм", + "delete": "Видалити обліковий запис", + "deleteTip": "Видалення вашого облікового запису призведе до остаточного видалення всіх ваших даних, і їх неможливо буде відновити.", + "account": "Рахунок", + "studio": "Студія Dify", + "myAccount": "Особистий кабінет", + "deletePrivacyLink": "Політика конфіденційності.", + "sendVerificationButton": "Надішліть код підтвердження", + "verificationLabel": "Код підтвердження", + "verificationPlaceholder": "Вставте 6-значний код", + "permanentlyDeleteButton": "Назавжди видалити обліковий запис", + "feedbackTitle": "Зворотний зв'язок", + "feedbackLabel": "Розкажіть, чому ви видалили свій обліковий запис?", + "feedbackPlaceholder": "Необов'язково", + "deletePrivacyLinkTip": "Для отримання додаткової інформації про те, як ми обробляємо ваші дані, будь ласка, перегляньте наш", + "deleteSuccessTip": "Вашому обліковому запису потрібен час, щоб завершити видалення. Ми надішлемо вам електронного листа, коли все буде готово.", + "deleteLabel": "Для підтвердження, будь ласка, введіть свою електронну пошту нижче", + "deletePlaceholder": "Будь ласка, введіть свою електронну пошту", + "workspaceName": "Назва робочого простору", + "workspaceIcon": "Іконка робочого простору", + "editWorkspaceInfo": "Редагувати інформацію про робочий простір", + "changeEmail": { + "codePlaceholder": "Вставте 6-значний код", + "continue": "Продовжувати", + "resendTip": "Не отримали код?", + "emailLabel": "Новий електронний лист", + "changeTo": "Змінити на {{email}}", + "resend": "Переслати", + "codeLabel": "Код перевірки", + "sendVerifyCode": "Відправити код підтвердження", + "emailPlaceholder": "Введіть нову електронну пошту", + "title": "Змінити електронну пошту", + "newEmail": "Налаштуйте нову електронну адресу", + "resendCount": "Надішліть знову через {{count}}s", + "content4": "Ми тільки що надіслали вам тимчасовий код підтвердження на {{email}}.", + "verifyEmail": "Підтвердіть свою поточну електронну адресу", + "existingEmail": "Користувач з цією електронною поштою вже існує.", + "content2": "Ваш поточний електронний лист - {{email}}. Код для підтвердження було надіслано на цю електронну адресу.", + "verifyNew": "Підтвердіть свою нову електронну пошту", + "content3": "Введіть нову електронну адресу, і ми надішлемо вам код підтвердження.", + "authTip": "Коли ви зміните свою електронну адресу, облікові записи Google або GitHub, пов'язані з вашою старою електронною адресою, більше не зможуть увійти в цей обліковий запис.", + "content1": "Якщо ви продовжите, ми надішлемо код підтвердження на {{email}} для повторної аутентифікації.", + "unAvailableEmail": "Цей електронний лист тимчасово недоступний." + } + }, + "members": { + "team": "Команда", + "invite": "Додати", + "name": "ІМ'Я", + "lastActive": "ОСТАННЯ АКТИВНІСТЬ", + "role": "РОЛІ", + "pending": "В очікуванні...", + "owner": "Власник", + "admin": "Адміністратор", + "adminTip": "Може створювати програми та керувати налаштуваннями команди", + "normal": "Звичайний", + "normalTip": "Може лише використовувати програми, не може створювати програми", + "editor": "Редактор", + "editorTip": "Може створювати програми, але не може керувати налаштуваннями команди", + "inviteTeamMember": "Додати учасника команди", + "inviteTeamMemberTip": "Вони зможуть отримати доступ до даних вашої команди безпосередньо після входу.", + "emailNotSetup": "Поштовий сервер не налаштований, тому запрошення електронною поштою не можуть бути надіслані. Будь ласка, повідомте користувачів про посилання для запрошення, яке буде видано після запрошення.", + "email": "Електронна пошта", + "emailInvalid": "Недійсний формат електронної пошти", + "emailPlaceholder": "Будь ласка, введіть адресу електронної пошти", + "sendInvite": "Надіслати запрошення", + "invitedAsRole": "Запрошено як користувача {{role}}", + "invitationSent": "Запрошення надіслано", + "invitationSentTip": "Запрошення надіслано, і вони можуть увійти в Dify, щоб отримати доступ до даних вашої команди.", + "invitationLink": "Посилання на запрошення", + "failedInvitationEmails": "Наступних користувачів не було успішно запрошено", + "ok": "ОК", + "removeFromTeam": "Видалити з команди", + "removeFromTeamTip": "Буде видалено доступ до команди", + "setAdmin": "Призначити адміністратором", + "setMember": "Встановити як звичайного члена", + "setEditor": "Встановити як Редактор", + "disInvite": "Скасувати запрошення", + "deleteMember": "Видалити учасника", + "you": "(Ви)", + "builder": "Будівник", + "datasetOperatorTip": "Тільки може управляти базою знань", + "datasetOperator": "Адміністратор знань", + "setBuilder": "Встановити як будівельник", + "builderTip": "Може створювати та редагувати власні програми", + "transferModal": { + "continue": "Продовжувати", + "resendTip": "Не отримали код?", + "resend": "Переслати", + "sendVerifyCode": "Відправити код підтвердження", + "codePlaceholder": "Вставте 6-значний код", + "codeLabel": "Код перевірки", + "verifyEmail": "Підтвердіть свою поточну електронну адресу", + "warningTip": "Ви станете членом адміністрації, і новий власник матиме повний контроль.", + "resendCount": "Надішліть знову через {{count}} сек.", + "warning": "Ви збираєтеся передати право власності на \"{{workspace}}\". Це набирає чинності негайно і не підлягає скасуванню.", + "title": "Перенести право власності на робочий простір", + "transfer": "Перенести право власності на робочий простір", + "transferLabel": "Передати право власності на робочий простір на", + "verifyContent": "Вашу поточну електронну адресу {{email}}.", + "verifyContent2": "Ми надішлемо тимчасовий код підтвердження на цю електронну пошту для повторної автентифікації.", + "transferPlaceholder": "Виберіть учасника робочого простору…", + "sendTip": "Якщо ви продовжите, ми надішлемо код підтвердження на {{email}} для повторної аутентифікації." + }, + "transferOwnership": "Перенести право власності" + }, + "integrations": { + "connected": "Підключено", + "google": "Google", + "googleAccount": "Увійти за допомогою облікового запису Google", + "github": "GitHub", + "githubAccount": "Увійти за допомогою облікового запису GitHub", + "connect": "Підключити" + }, + "language": { + "displayLanguage": "Мова інтерфейсу", + "timezone": "Часовий пояс" + }, + "provider": { + "apiKey": "Ключ API", + "enterYourKey": "Введіть свій ключ API тут", + "invalidKey": "Недійсний ключ OpenAI API", + "validatedError": "Не вдалося підтвердити: ", + "validating": "Перевірка ключа...", + "saveFailed": "Не вдалося зберегти ключ API", + "apiKeyExceedBill": "У цього ключа API немає доступної квоти, будь ласка, прочитайте", + "addKey": "Додати ключ", + "comingSoon": "Скоро", + "editKey": "Редагувати", + "invalidApiKey": "Недійсний API ключ", + "azure": { + "apiBase": "API-шлях", + "apiBasePlaceholder": "Базовий URL-адреса API вашої кінцевої точки Azure OpenAI.", + "apiKey": "Ключ API", + "apiKeyPlaceholder": "Введіть свій ключ API тут", + "helpTip": "Дізнайтеся про послугу Azure OpenAI" + }, + "openaiHosted": { + "openaiHosted": "Розміщений OpenAI", + "onTrial": "НА ПРОБНОМУ ПЕРІОДІ", + "exhausted": "КВОТА ВИЧЕРПАНА", + "desc": "Служба хостингу OpenAI, надана Dify, дозволяє використовувати такі моделі, як GPT-3.5. Перш ніж ваша пробна квота буде використана, вам потрібно налаштувати інші постачальники моделі.", + "callTimes": "Кількість викликів", + "usedUp": "Пробна квота використана. Додайте власного постачальника моделі.", + "useYourModel": "Наразі використовується власний постачальник моделі.", + "close": "Закрити" + }, + "anthropicHosted": { + "anthropicHosted": "Anthropic Claude", + "onTrial": "НА ПРОБНОМУ ПЕРІОДІ", + "exhausted": "КВОТА ВИЧЕРПАНА", + "desc": "Ця потужна модель чудово справляється з широким спектром завдань: від складних діалогів і створення креативного контенту до докладних інструкцій.", + "callTimes": "Кількість викликів", + "usedUp": "Пробна квота використана. Додайте власного постачальника моделі.", + "useYourModel": "Наразі використовується власний постачальника моделі.", + "close": "Закрити", + "trialQuotaTip": "Ваша квота на антропічні пробні випробування закінчується 11.03.2025 і після цього більше не буде доступна. Будь ласка, скористайтеся ним вчасно." + }, + "anthropic": { + "using": "Функція вбудовування використовує", + "enableTip": "Щоб активувати модель Anthropic, спочатку потрібно прив’язатись до OpenAI або Azure OpenAI Service.", + "notEnabled": "Не активовано", + "keyFrom": "Отримайте ключ API від Anthropic" + }, + "encrypted": { + "front": "Ваш API-ключ буде зашифрований та збережений за допомогою", + "back": " технології." + } + }, + "modelProvider": { + "notConfigured": "Системну модель ще не повністю налаштовано, і деякі функції можуть бути недоступні.", + "systemModelSettings": "Налаштування системної моделі", + "systemModelSettingsLink": "Чому необхідно налаштовувати системну модель?", + "selectModel": "Виберіть свою модель", + "setupModelFirst": "Будь ласка, спочатку налаштуйте свою модель", + "systemReasoningModel": { + "key": "Системна модель міркування", + "tip": "Встановіть модель висновку за замовчуванням, яка буде використовуватися для створення програм, а також для таких функцій, як генерація імені діалогу та пропозиція наступного питання також використовуватимуть модель висновку за замовчуванням." + }, + "embeddingModel": { + "key": "Модель вбудовування", + "tip": "Встановіть модель за замовчуванням для обробки вбудовування документа у Знання, як пошук, так і імпорт Знань використовують цю модель вбудовування для векторизації. Перемикання призведе до невідповідності розмірності вектора між імпортованими Знаннями та запитанням, що призведе до збою пошуку. Щоб уникнути збоїв пошуку, не перемикайте цю модель без підстав.", + "required": "Модель вбудовування обов’язкова" + }, + "speechToTextModel": { + "key": "Модель перетворення мовлення в текст", + "tip": "Встановіть модель за замовчуванням для введення мовлення в текст під час розмови." + }, + "ttsModel": { + "key": "Модель перетворення тексту в мовлення", + "tip": "Встановіть модель за замовчуванням для введення тексту в мовлення в розмові." + }, + "rerankModel": { + "key": "Модель повторного ранжування", + "tip": "Модель повторного ранжування змінить порядок списку документів-кандидатів на основі семантичної відповідності запиту користувача, покращуючи результати семантичного ранжування." + }, + "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 буде зашифрований та збережений за допомогою", + "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": "ПАРАМЕТРИ", + "apiKeyStatusNormal": "Статус APIKey нормальний", + "loadBalancing": "Балансування навантаження", + "editConfig": "Редагувати конфігурацію", + "loadBalancingHeadline": "Балансування навантаження", + "apiKey": "API-КЛЮЧ", + "defaultConfig": "Конфігурація за замовчуванням", + "providerManaged": "Під управлінням провайдера", + "loadBalancingDescription": "Зменшіть тиск за допомогою кількох наборів облікових даних.", + "modelHasBeenDeprecated": "Ця модель вважається застарілою", + "addConfig": "Додати конфігурацію", + "configLoadBalancing": "Балансування навантаження конфігурації", + "upgradeForLoadBalancing": "Оновіть свій план, щоб увімкнути балансування навантаження.", + "apiKeyRateLimit": "Було досягнуто ліміту швидкості, доступного після {{seconds}}", + "providerManagedDescription": "Використовуйте єдиний набір облікових даних, наданий постачальником моделі.", + "loadBalancingLeastKeyWarning": "Щоб увімкнути балансування навантаження, має бути ввімкнено щонайменше 2 клавіші.", + "loadBalancingInfo": "За замовчуванням для балансування навантаження використовується стратегія кругової системи. Якщо спрацьовує обмеження швидкості, буде застосовано період перезарядки тривалістю 1 хвилина.", + "emptyProviderTip": "Спочатку встановіть постачальника моделі.", + "installProvider": "Встановлення постачальників моделей", + "toBeConfigured": "Підлягає налаштуванню", + "emptyProviderTitle": "Постачальника моделі не налаштовано", + "configureTip": "Налаштуйте api-ключ або додайте модель для використання", + "discoverMore": "Відкрийте для себе більше в", + "auth": { + "apiKeyModal": { + "addModel": "Додати модель", + "title": "Конфігурація авторизації API-ключа", + "desc": "Після налаштування облікових даних усі учасники в робочій області можуть використовувати цю модель під час оркестрування програм." + }, + "addApiKey": "Додайте ключ API", + "apiKeys": "API ключі", + "authRemoved": "Автор видалено", + "configModel": "Конфігураційна модель", + "unAuthorized": "Несанкціоновано", + "authorizationError": "Помилка авторизації", + "modelCredentials": "Модельні облікові дані", + "providerManaged": "Постачальник управляє", + "addCredential": "Додати облікові дані", + "specifyModelCredentialTip": "Використовуйте налаштовані облікові дані моделі.", + "specifyModelCredential": "Вкажіть облікові дані моделі", + "addNewModel": "Додати нову модель", + "configLoadBalancing": "Конфігурація балансування навантаження", + "addModelCredential": "Додати облікові дані моделі", + "providerManagedTip": "Поточна конфігурація розміщується провайдером.", + "addModel": "Додати модель", + "removeModel": "Видалити модель", + "modelCredential": "Облікові дані моделі", + "manageCredentials": "Керування обліковими даними", + "selectModelCredential": "Виберіть облікові дані моделі", + "addNewModelCredential": "Додайте нові облікові дані моделі", + "customModelCredentials": "Облікові дані користувацької моделі", + "editModelCredential": "Редагувати облікові дані моделі", + "customModelCredentialsDeleteTip": "Облікові дані використовуються і не можуть бути видалені" + }, + "parametersInvalidRemoved": "Деякі параметри є недійсними і були видалені", + "installDataSourceProvider": "Встановіть постачальників джерел даних" + }, + "dataSource": { + "add": "Додати джерело даних", + "connect": "Підключити", + "notion": { + "title": "Notion", + "description": "Використання Notion як джерела даних для Знань.", + "connectedWorkspace": "Підключений робочий простір", + "addWorkspace": "Додати робочий простір", + "connected": "Підключено", + "disconnected": "Відключено", + "changeAuthorizedPages": "Змінити авторизовані сторінки", + "pagesAuthorized": "Авторизовані сторінки", + "sync": "Синхронізувати", + "remove": "Видалити", + "selector": { + "pageSelected": "Сторінки вибрано", + "searchPages": "Пошук сторінок ...", + "noSearchResult": "Результатів пошуку немає", + "addPages": "Додати сторінки", + "preview": "ПЕРЕДПЕРЕГЛЯД" + }, + "integratedAlert": "Notion інтегрований через внутрішні облікові дані, немає потреби в повторній авторизації." + }, + "website": { + "with": "З", + "active": "Активний", + "inactive": "Неактивні", + "configuredCrawlers": "Налаштовані обхідні роботи", + "title": "Веб-сторінка", + "description": "Імпортуйте вміст із веб-сайтів за допомогою веб-сканера." + }, + "configure": "Настроїти" + }, + "plugin": { + "serpapi": { + "apiKey": "Ключ API", + "apiKeyPlaceholder": "Введіть свій ключ API", + "keyFrom": "Отримайте свій ключ SerpAPI зі сторінки облікового запису SerpAPI" + } + }, + "apiBasedExtension": { + "title": "API-розширення забезпечують централізоване керування API, спрощуючи конфігурацію для зручного використання в різних програмах Dify.", + "link": "Дізнайтеся, як розробити власне розширення API.", + "add": "Додати розширення API", + "selector": { + "title": "Розширення API", + "placeholder": "Виберіть API розширення", + "manage": "Керувати розширеннями API" + }, + "modal": { + "title": "Додати розширення API", + "editTitle": "Редагувати розширення API", + "name": { + "title": "Ім'я", + "placeholder": "Введіть ім'я" + }, + "apiEndpoint": { + "title": "Кінцева точка API", + "placeholder": "Будь ласка, введіть кінцеву точку API" + }, + "apiKey": { + "title": "Ключ API", + "placeholder": "Будь ласка, введіть ключ API", + "lengthError": "Довжина API-ключа не може бути меньше 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": "пов'язані програми", + "noRelatedApp": "Немає пов'язаних додатків", + "pipeline": "Трубопроводу" + }, + "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": "Оцінка звернення:" + }, + "inputPlaceholder": "Поговоріть з ботом", + "thought": "Думка", + "thinking": "Мислення...", + "resend": "Відправити знову" + }, + "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}} МБ", + "pasteImageLink": "Вставити посилання на зображення", + "pasteImageLinkInputPlaceholder": "Вставте посилання на зображення тут", + "pasteImageLinkInvalid": "Недійсне посилання на зображення", + "imageUpload": "Завантаження зображення" + }, + "tag": { + "placeholder": "Усі теги", + "addNew": "Додати новий тег", + "noTag": "Без тегів", + "noTagYet": "Ще немає тегів", + "addTag": "додати тег", + "editTag": "Редагувати теги", + "manageTags": "Керувати тегами", + "selectorPlaceholder": "Введіть для пошуку або створення", + "create": "Створити", + "delete": "Видалити тег", + "deleteTip": "Тег використовується, видалити його?", + "created": "Тег створено успішно", + "failed": "Не вдалося створити тег" + }, + "errorMsg": { + "fieldRequired": "{{field}} є обов'язковим", + "urlError": "URL-адреса повинна починатися з http:// або https://" + }, + "fileUploader": { + "pasteFileLink": "Вставити посилання на файл", + "pasteFileLinkInvalid": "Неприпустиме посилання на файл", + "uploadFromComputer": "Локальне завантаження", + "uploadFromComputerLimit": "Файл завантаження не може перевищувати {{size}}", + "pasteFileLinkInputPlaceholder": "Введіть URL-адресу...", + "fileExtensionNotSupport": "Розширення файлу не підтримується", + "uploadFromComputerReadError": "Не вдалося прочитати файл, будь ласка, спробуйте ще раз.", + "uploadFromComputerUploadError": "Не вдалося завантажити файл, будь ласка, завантажте ще раз.", + "fileExtensionBlocked": "Цей тип файлу заблоковано з міркувань безпеки", + "uploadDisabled": "Завантаження файлів вимкнено" + }, + "license": { + "expiring": "Термін дії закінчується за один день", + "expiring_plural": "Термін дії закінчується за {{count}} днів", + "unlimited": "Безмежний" + }, + "pagination": { + "perPage": "Елементів на сторінці" + }, + "theme": { + "auto": "система", + "dark": "темний", + "light": "світло", + "theme": "Тема" + }, + "compliance": { + "professionalUpgradeTooltip": "Доступно лише з командним планом або вище.", + "soc2Type2": "Звіт SOC 2 Тип II", + "iso27001": "Сертифікація ISO 27001:2022", + "soc2Type1": "Звіт SOC 2 Тип I", + "sandboxUpgradeTooltip": "Доступно лише з професійним або командним планом.", + "gdpr": "GDPR DPA" + }, + "imageInput": { + "browse": "перегляд", + "supportedFormats": "Підтримує PNG, JPG, JPEG, WEBP і GIF", + "dropImageHere": "Перетягніть зображення сюди або" + }, + "you": "Ти", + "avatar": { + "deleteTitle": "Видалити аватар", + "deleteDescription": "Ви впевнені, що хочете видалити своє фото профілю? Ваш обліковий запис використовуватиме стандартний початковий аватар." + }, + "feedback": { + "title": "Надати відгук", + "content": "Зміст відгуку", + "placeholder": "Будь ласка, опишіть, що пішло не так або як ми можемо покращити...", + "subtitle": "Будь ласка, скажіть нам, що пішло не так із цією відповіддю" + }, + "label": { + "optional": "(необов'язково)" + }, + "noData": "Немає даних", + "dynamicSelect": { + "error": "Не вдалося завантажити параметри", + "noData": "Немає доступних опцій", + "loading": "Завантаження параметрів...", + "selected": "{{count}} вибрано" + } +} diff --git a/web/i18n/uk-UA/common.ts b/web/i18n/uk-UA/common.ts deleted file mode 100644 index 70b8aaa862..0000000000 --- a/web/i18n/uk-UA/common.ts +++ /dev/null @@ -1,793 +0,0 @@ -const translation = { - api: { - success: 'Успіх', - actionSuccess: 'Дію виконано успішно', - saved: 'Збережено', - create: 'Створено', - remove: 'Видалено', - actionFailed: 'Не вдалося виконати дію', - }, - operation: { - create: 'Створити', - confirm: 'Підтвердити', - cancel: 'Скасувати', - clear: 'Очистити', - save: 'Зберегти', - saveAndEnable: 'Зберегти та Увімкнути', - edit: 'Редагувати', - add: 'Додати', - added: 'Додано', - refresh: 'Перезапустити', - reset: 'Скинути', - search: 'Пошук', - change: 'Змінити', - remove: 'Видалити', - send: 'Надіслати', - copy: 'Копіювати', - lineBreak: 'Перенесення рядка', - sure: 'Я впевнений', - download: 'Завантажити', - delete: 'Видалити', - settings: 'Налаштування', - setup: 'Налаштувати', - getForFree: 'Отримати безкоштовно', - reload: 'Перезавантажити', - ok: 'ОК', - log: 'Журнал', - learnMore: 'Дізнатися більше', - params: 'Параметри', - duplicate: 'дублікат', - rename: 'Перейменувати', - audioSourceUnavailable: 'AudioSource недоступний', - copyImage: 'Скопіювати зображення', - openInNewTab: 'Відкрити в новій вкладці', - zoomOut: 'Зменшити масштаб', - zoomIn: 'Збільшити масштаб', - close: 'Закрити', - regenerate: 'Відновити', - view: 'Вид', - viewMore: 'ДИВИТИСЬ БІЛЬШЕ', - saveAndRegenerate: 'Збереження та регенерація дочірніх фрагментів', - submit: 'Представити', - skip: 'Корабель', - imageCopied: 'Скопійоване зображення', - deleteApp: 'Видалити програму', - viewDetails: 'Перегляд докладних відомостей', - copied: 'Скопійовані', - in: 'В', - format: 'Формат', - downloadFailed: 'Не вдалося завантажити. Будь ласка, спробуйте ще раз пізніше.', - more: 'Більше', - downloadSuccess: 'Завантаження завершено.', - deSelectAll: 'Вимкнути все', - selectAll: 'Вибрати все', - config: 'Конфігурація', - yes: 'Так', - no: 'Ні', - deleteConfirmTitle: 'Видалити?', - confirmAction: 'Будь ласка, підтвердіть свої дії.', - noSearchResults: 'Жодного {{content}} не знайдено', - resetKeywords: 'Скинути ключові слова', - selectCount: '{{count}} вибрано', - searchCount: 'Знайти {{count}} {{content}}', - noSearchCount: '0 {{content}}', - now: 'Зараз', - }, - placeholder: { - input: 'Будь ласка, введіть текст', - select: 'Будь ласка, оберіть параметр', - search: 'Пошук...', - }, - voice: { - language: { - zhHans: 'Китайська', - zhHant: 'Китайська (традиційна)', - enUS: 'Англійська', - deDE: 'Німецька', - frFR: 'Французька', - esES: 'Іспанська', - itIT: 'Італійська', - thTH: 'Тайська', - idID: 'Індонезійська', - jaJP: 'Японська', - koKR: 'Корейська', - ptBR: 'Португальська', - ruRU: 'Російська', - ukUA: 'Українська', - viVN: 'В\'є тнамська', - plPL: 'Польська', - roRO: 'Румунська', - hiIN: 'Хінді', - trTR: 'Турецька', - faIR: 'Перська', - slSI: 'Словенська', - arTN: 'Туніська арабська', - }, - }, - 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 max token (вхід 128k, вихід 4k)', - maxTokenSettingTip: 'Ваше максимальне значення токена велике, що може обмежувати простір для запитів, даних тощо. Краще налаштувати його менш як 2/3.', - setToCurrentModelMaxTokenTip: 'Максимальний токен оновлено до максимуму токена поточної моделі {{maxToken}}.', - stop_sequences: 'Зупинити послідовності', - stop_sequencesTip: 'До чотирьох послідовностей, у яких API припинить генерацію подальших токенів. Повернений текст не міститиме зупинку послідовності.', - stop_sequencesPlaceholder: 'Введіть послідовність і натисніть Tab', - }, - tone: { - Creative: 'Креативний', - Balanced: 'Збалансований', - Precise: 'Точний', - Custom: 'Користувацький', - }, - addMoreModel: 'Перейдіть до налаштувань, щоб додати більше моделей', - settingsLink: 'Налаштування постачальника моделі', - capabilities: 'Можливості MultiModal', - }, - menus: { - status: 'бета', - explore: 'Досліджувати', - apps: 'Студія', - plugins: 'Плагіни', - pluginsTips: 'Інтегруйте сторонні плагіни або створіть AI-сумісні плагіни.', - datasets: 'Знання', - datasetsTips: 'СКОРО: імпортуйте власні текстові дані або пишіть дані в реальному часі через Webhook для покращення контексту LLM.', - newApp: 'Нова програма', - newDataset: 'Створити знання', - tools: 'Інструменти', - exploreMarketplace: 'Дізнайтеся більше про Marketplace', - appDetail: 'Деталі програми', - account: 'Обліковий запис', - }, - userProfile: { - settings: 'Налаштування', - emailSupport: 'Підтримка по електронній пошті', - workspace: 'Робочий простір', - createWorkspace: 'Створити робочий простір', - helpCenter: 'Довідковий центр', - roadmap: 'Дорожня карта', - community: 'Спільнота', - about: 'Про нас', - logout: 'Вийти', - compliance: 'Відповідність', - support: 'Підтримка', - github: 'Гітхаб', - contactUs: 'Зв’яжіться з нами', - forum: 'Форум', - }, - settings: { - accountGroup: 'ОБЛІКОВИЙ ЗАПИС', - workplaceGroup: 'РОБОЧИЙ ПРОСТІР', - account: 'Мій обліковий запис', - members: 'Учасники', - billing: 'Виставлення рахунків', - integrations: 'Інтеграції', - language: 'Мова', - provider: 'Постачальник моделі', - dataSource: 'Джерело даних', - plugin: 'Плагіни', - apiBasedExtension: 'Розширення API', - generalGroup: 'ЗАГАЛЬНЕ', - }, - account: { - avatar: 'Аватар', - name: 'Ім\'я', - email: 'Електронна пошта', - password: 'Пароль', - passwordTip: 'Ви можете встановити постійний пароль, якщо не хочете використовувати тимчасові коди для входу', - setPassword: 'Встановити пароль', - resetPassword: 'Скинути пароль', - currentPassword: 'Поточний пароль', - newPassword: 'Новий пароль', - confirmPassword: 'Підтвердіть пароль', - notEqual: 'Два паролі різняться.', - langGeniusAccount: 'Обліковий запис Dify', - langGeniusAccountTip: 'Ваш обліковий запис Dify та пов’язані з ним дані користувача.', - editName: 'Редагувати ім\'я', - showAppLength: 'Показати {{length}} програм', - delete: 'Видалити обліковий запис', - deleteTip: 'Видалення вашого облікового запису призведе до остаточного видалення всіх ваших даних, і їх неможливо буде відновити.', - account: 'Рахунок', - studio: 'Студія Dify', - myAccount: 'Особистий кабінет', - deletePrivacyLink: 'Політика конфіденційності.', - sendVerificationButton: 'Надішліть код підтвердження', - verificationLabel: 'Код підтвердження', - verificationPlaceholder: 'Вставте 6-значний код', - permanentlyDeleteButton: 'Назавжди видалити обліковий запис', - feedbackTitle: 'Зворотний зв\'язок', - feedbackLabel: 'Розкажіть, чому ви видалили свій обліковий запис?', - feedbackPlaceholder: 'Необов\'язково', - deletePrivacyLinkTip: 'Для отримання додаткової інформації про те, як ми обробляємо ваші дані, будь ласка, перегляньте наш', - deleteSuccessTip: 'Вашому обліковому запису потрібен час, щоб завершити видалення. Ми надішлемо вам електронного листа, коли все буде готово.', - deleteLabel: 'Для підтвердження, будь ласка, введіть свою електронну пошту нижче', - deletePlaceholder: 'Будь ласка, введіть свою електронну пошту', - workspaceName: 'Назва робочого простору', - workspaceIcon: 'Іконка робочого простору', - editWorkspaceInfo: 'Редагувати інформацію про робочий простір', - changeEmail: { - codePlaceholder: 'Вставте 6-значний код', - continue: 'Продовжувати', - resendTip: 'Не отримали код?', - emailLabel: 'Новий електронний лист', - changeTo: 'Змінити на {{email}}', - resend: 'Переслати', - codeLabel: 'Код перевірки', - sendVerifyCode: 'Відправити код підтвердження', - emailPlaceholder: 'Введіть нову електронну пошту', - title: 'Змінити електронну пошту', - newEmail: 'Налаштуйте нову електронну адресу', - resendCount: 'Надішліть знову через {{count}}s', - content4: 'Ми тільки що надіслали вам тимчасовий код підтвердження на {{email}}.', - verifyEmail: 'Підтвердіть свою поточну електронну адресу', - existingEmail: 'Користувач з цією електронною поштою вже існує.', - content2: 'Ваш поточний електронний лист - {{email}}. Код для підтвердження було надіслано на цю електронну адресу.', - verifyNew: 'Підтвердіть свою нову електронну пошту', - content3: 'Введіть нову електронну адресу, і ми надішлемо вам код підтвердження.', - authTip: 'Коли ви зміните свою електронну адресу, облікові записи Google або GitHub, пов\'язані з вашою старою електронною адресою, більше не зможуть увійти в цей обліковий запис.', - content1: 'Якщо ви продовжите, ми надішлемо код підтвердження на {{email}} для повторної аутентифікації.', - unAvailableEmail: 'Цей електронний лист тимчасово недоступний.', - }, - }, - members: { - team: 'Команда', - invite: 'Додати', - name: 'ІМ\'Я', - lastActive: 'ОСТАННЯ АКТИВНІСТЬ', - role: 'РОЛІ', - pending: 'В очікуванні...', - owner: 'Власник', - admin: 'Адміністратор', - adminTip: 'Може створювати програми та керувати налаштуваннями команди', - normal: 'Звичайний', - normalTip: 'Може лише використовувати програми, не може створювати програми', - editor: 'Редактор', - editorTip: 'Може створювати програми, але не може керувати налаштуваннями команди', - inviteTeamMember: 'Додати учасника команди', - inviteTeamMemberTip: 'Вони зможуть отримати доступ до даних вашої команди безпосередньо після входу.', - emailNotSetup: 'Поштовий сервер не налаштований, тому запрошення електронною поштою не можуть бути надіслані. Будь ласка, повідомте користувачів про посилання для запрошення, яке буде видано після запрошення.', - email: 'Електронна пошта', - emailInvalid: 'Недійсний формат електронної пошти', - emailPlaceholder: 'Будь ласка, введіть адресу електронної пошти', - sendInvite: 'Надіслати запрошення', - invitedAsRole: 'Запрошено як користувача {{role}}', - invitationSent: 'Запрошення надіслано', - invitationSentTip: 'Запрошення надіслано, і вони можуть увійти в Dify, щоб отримати доступ до даних вашої команди.', - invitationLink: 'Посилання на запрошення', - failedInvitationEmails: 'Наступних користувачів не було успішно запрошено', - ok: 'ОК', - removeFromTeam: 'Видалити з команди', - removeFromTeamTip: 'Буде видалено доступ до команди', - setAdmin: 'Призначити адміністратором', - setMember: 'Встановити як звичайного члена', - setEditor: 'Встановити як Редактор', - disInvite: 'Скасувати запрошення', - deleteMember: 'Видалити учасника', - you: '(Ви)', - builder: 'Будівник', - datasetOperatorTip: 'Тільки може управляти базою знань', - datasetOperator: 'Адміністратор знань', - setBuilder: 'Встановити як будівельник', - builderTip: 'Може створювати та редагувати власні програми', - transferModal: { - continue: 'Продовжувати', - resendTip: 'Не отримали код?', - resend: 'Переслати', - sendVerifyCode: 'Відправити код підтвердження', - codePlaceholder: 'Вставте 6-значний код', - codeLabel: 'Код перевірки', - verifyEmail: 'Підтвердіть свою поточну електронну адресу', - warningTip: 'Ви станете членом адміністрації, і новий власник матиме повний контроль.', - resendCount: 'Надішліть знову через {{count}} сек.', - warning: 'Ви збираєтеся передати право власності на "{{workspace}}". Це набирає чинності негайно і не підлягає скасуванню.', - title: 'Перенести право власності на робочий простір', - transfer: 'Перенести право власності на робочий простір', - transferLabel: 'Передати право власності на робочий простір на', - verifyContent: 'Вашу поточну електронну адресу {{email}}.', - verifyContent2: 'Ми надішлемо тимчасовий код підтвердження на цю електронну пошту для повторної автентифікації.', - transferPlaceholder: 'Виберіть учасника робочого простору…', - sendTip: 'Якщо ви продовжите, ми надішлемо код підтвердження на {{email}} для повторної аутентифікації.', - }, - transferOwnership: 'Перенести право власності', - }, - integrations: { - connected: 'Підключено', - google: 'Google', - googleAccount: 'Увійти за допомогою облікового запису Google', - github: 'GitHub', - githubAccount: 'Увійти за допомогою облікового запису GitHub', - connect: 'Підключити', - }, - language: { - displayLanguage: 'Мова інтерфейсу', - timezone: 'Часовий пояс', - }, - provider: { - apiKey: 'Ключ API', - enterYourKey: 'Введіть свій ключ API тут', - invalidKey: 'Недійсний ключ OpenAI API', - validatedError: 'Не вдалося підтвердити: ', - validating: 'Перевірка ключа...', - saveFailed: 'Не вдалося зберегти ключ API', - apiKeyExceedBill: 'У цього ключа API немає доступної квоти, будь ласка, прочитайте', - addKey: 'Додати ключ', - comingSoon: 'Скоро', - editKey: 'Редагувати', - invalidApiKey: 'Недійсний API ключ', - azure: { - apiBase: 'API-шлях', - apiBasePlaceholder: 'Базовий URL-адреса API вашої кінцевої точки Azure OpenAI.', - apiKey: 'Ключ API', - apiKeyPlaceholder: 'Введіть свій ключ API тут', - helpTip: 'Дізнайтеся про послугу Azure OpenAI', - }, - openaiHosted: { - openaiHosted: 'Розміщений OpenAI', - onTrial: 'НА ПРОБНОМУ ПЕРІОДІ', - exhausted: 'КВОТА ВИЧЕРПАНА', - desc: 'Служба хостингу OpenAI, надана Dify, дозволяє використовувати такі моделі, як GPT-3.5. Перш ніж ваша пробна квота буде використана, вам потрібно налаштувати інші постачальники моделі.', - callTimes: 'Кількість викликів', - usedUp: 'Пробна квота використана. Додайте власного постачальника моделі.', - useYourModel: 'Наразі використовується власний постачальник моделі.', - close: 'Закрити', - }, - anthropicHosted: { - anthropicHosted: 'Anthropic Claude', - onTrial: 'НА ПРОБНОМУ ПЕРІОДІ', - exhausted: 'КВОТА ВИЧЕРПАНА', - desc: 'Ця потужна модель чудово справляється з широким спектром завдань: від складних діалогів і створення креативного контенту до докладних інструкцій.', - callTimes: 'Кількість викликів', - usedUp: 'Пробна квота використана. Додайте власного постачальника моделі.', - useYourModel: 'Наразі використовується власний постачальника моделі.', - close: 'Закрити', - trialQuotaTip: 'Ваша квота на антропічні пробні випробування закінчується 11.03.2025 і після цього більше не буде доступна. Будь ласка, скористайтеся ним вчасно.', - }, - anthropic: { - using: 'Функція вбудовування використовує', - enableTip: 'Щоб активувати модель Anthropic, спочатку потрібно прив’язатись до OpenAI або Azure OpenAI Service.', - notEnabled: 'Не активовано', - keyFrom: 'Отримайте ключ API від Anthropic', - }, - encrypted: { - front: 'Ваш API-ключ буде зашифрований та збережений за допомогою', - back: ' технології.', - }, - }, - modelProvider: { - notConfigured: 'Системну модель ще не повністю налаштовано, і деякі функції можуть бути недоступні.', - systemModelSettings: 'Налаштування системної моделі', - systemModelSettingsLink: 'Чому необхідно налаштовувати системну модель?', - selectModel: 'Виберіть свою модель', - setupModelFirst: 'Будь ласка, спочатку налаштуйте свою модель', - systemReasoningModel: { - key: 'Системна модель міркування', - tip: 'Встановіть модель висновку за замовчуванням, яка буде використовуватися для створення програм, а також для таких функцій, як генерація імені діалогу та пропозиція наступного питання також використовуватимуть модель висновку за замовчуванням.', - }, - embeddingModel: { - key: 'Модель вбудовування', - tip: 'Встановіть модель за замовчуванням для обробки вбудовування документа у Знання, як пошук, так і імпорт Знань використовують цю модель вбудовування для векторизації. Перемикання призведе до невідповідності розмірності вектора між імпортованими Знаннями та запитанням, що призведе до збою пошуку. Щоб уникнути збоїв пошуку, не перемикайте цю модель без підстав.', - required: 'Модель вбудовування обов’язкова', - }, - speechToTextModel: { - key: 'Модель перетворення мовлення в текст', - tip: 'Встановіть модель за замовчуванням для введення мовлення в текст під час розмови.', - }, - ttsModel: { - key: 'Модель перетворення тексту в мовлення', - tip: 'Встановіть модель за замовчуванням для введення тексту в мовлення в розмові.', - }, - rerankModel: { - key: 'Модель повторного ранжування', - tip: 'Модель повторного ранжування змінить порядок списку документів-кандидатів на основі семантичної відповідності запиту користувача, покращуючи результати семантичного ранжування.', - }, - 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 буде зашифрований та збережений за допомогою', - back: ' технології.', - }, - freeQuota: { - howToEarn: 'Як заробити', - }, - addMoreModelProvider: 'ДОДАТИ БІЛЬШЕ ПОСТАЧАЛЬНИКІВ МОДЕЛЕЙ', - addModel: 'Додати модель', - modelsNum: '{{num}} моделей', - showModels: 'Показати моделі', - showModelsNum: 'Показати {{num}} моделей', - collapse: 'Згорнути', - config: 'Налаштування', - modelAndParameters: 'Модель та параметри', - model: 'Модель', - featureSupported: '{{feature}} підтримується', - callTimes: 'Кількість викликів', - credits: 'Кредити повідомлень', - buyQuota: 'Придбати квоту', - getFreeTokens: 'Отримати безкоштовні токени', - priorityUsing: 'Пріоритезувати використання', - deprecated: 'Застарілий', - confirmDelete: 'підтвердити видалення?', - quotaTip: 'Залишилося доступних безкоштовних токенів', - // If need adjustment, provide more context on 'Load Presets' function - loadPresets: 'Завантажити', - parameters: 'ПАРАМЕТРИ', - apiKeyStatusNormal: 'Статус APIKey нормальний', - loadBalancing: 'Балансування навантаження', - editConfig: 'Редагувати конфігурацію', - loadBalancingHeadline: 'Балансування навантаження', - apiKey: 'API-КЛЮЧ', - defaultConfig: 'Конфігурація за замовчуванням', - providerManaged: 'Під управлінням провайдера', - loadBalancingDescription: 'Зменшіть тиск за допомогою кількох наборів облікових даних.', - modelHasBeenDeprecated: 'Ця модель вважається застарілою', - addConfig: 'Додати конфігурацію', - configLoadBalancing: 'Балансування навантаження конфігурації', - upgradeForLoadBalancing: 'Оновіть свій план, щоб увімкнути балансування навантаження.', - apiKeyRateLimit: 'Було досягнуто ліміту швидкості, доступного після {{seconds}}', - providerManagedDescription: 'Використовуйте єдиний набір облікових даних, наданий постачальником моделі.', - loadBalancingLeastKeyWarning: 'Щоб увімкнути балансування навантаження, має бути ввімкнено щонайменше 2 клавіші.', - loadBalancingInfo: 'За замовчуванням для балансування навантаження використовується стратегія кругової системи. Якщо спрацьовує обмеження швидкості, буде застосовано період перезарядки тривалістю 1 хвилина.', - emptyProviderTip: 'Спочатку встановіть постачальника моделі.', - installProvider: 'Встановлення постачальників моделей', - toBeConfigured: 'Підлягає налаштуванню', - emptyProviderTitle: 'Постачальника моделі не налаштовано', - configureTip: 'Налаштуйте api-ключ або додайте модель для використання', - discoverMore: 'Відкрийте для себе більше в', - auth: { - apiKeyModal: { - addModel: 'Додати модель', - title: 'Конфігурація авторизації API-ключа', - desc: 'Після налаштування облікових даних усі учасники в робочій області можуть використовувати цю модель під час оркестрування програм.', - }, - addApiKey: 'Додайте ключ API', - apiKeys: 'API ключі', - authRemoved: 'Автор видалено', - configModel: 'Конфігураційна модель', - unAuthorized: 'Несанкціоновано', - authorizationError: 'Помилка авторизації', - modelCredentials: 'Модельні облікові дані', - providerManaged: 'Постачальник управляє', - addCredential: 'Додати облікові дані', - specifyModelCredentialTip: 'Використовуйте налаштовані облікові дані моделі.', - specifyModelCredential: 'Вкажіть облікові дані моделі', - addNewModel: 'Додати нову модель', - configLoadBalancing: 'Конфігурація балансування навантаження', - addModelCredential: 'Додати облікові дані моделі', - providerManagedTip: 'Поточна конфігурація розміщується провайдером.', - addModel: 'Додати модель', - removeModel: 'Видалити модель', - modelCredential: 'Облікові дані моделі', - manageCredentials: 'Керування обліковими даними', - selectModelCredential: 'Виберіть облікові дані моделі', - addNewModelCredential: 'Додайте нові облікові дані моделі', - customModelCredentials: 'Облікові дані користувацької моделі', - editModelCredential: 'Редагувати облікові дані моделі', - customModelCredentialsDeleteTip: 'Облікові дані використовуються і не можуть бути видалені', - }, - parametersInvalidRemoved: 'Деякі параметри є недійсними і були видалені', - installDataSourceProvider: 'Встановіть постачальників джерел даних', - }, - dataSource: { - add: 'Додати джерело даних', - connect: 'Підключити', - notion: { - title: 'Notion', - description: 'Використання Notion як джерела даних для Знань.', - connectedWorkspace: 'Підключений робочий простір', - addWorkspace: 'Додати робочий простір', - connected: 'Підключено', - disconnected: 'Відключено', - changeAuthorizedPages: 'Змінити авторизовані сторінки', - pagesAuthorized: 'Авторизовані сторінки', - sync: 'Синхронізувати', - remove: 'Видалити', - selector: { - pageSelected: 'Сторінки вибрано', - searchPages: 'Пошук сторінок ...', - noSearchResult: 'Результатів пошуку немає', - addPages: 'Додати сторінки', - preview: 'ПЕРЕДПЕРЕГЛЯД', - }, - integratedAlert: 'Notion інтегрований через внутрішні облікові дані, немає потреби в повторній авторизації.', - }, - website: { - with: 'З', - active: 'Активний', - inactive: 'Неактивні', - configuredCrawlers: 'Налаштовані обхідні роботи', - title: 'Веб-сторінка', - description: 'Імпортуйте вміст із веб-сайтів за допомогою веб-сканера.', - }, - configure: 'Настроїти', - }, - plugin: { - serpapi: { - apiKey: 'Ключ API', - apiKeyPlaceholder: 'Введіть свій ключ API', - keyFrom: 'Отримайте свій ключ SerpAPI зі сторінки облікового запису SerpAPI', - }, - }, - apiBasedExtension: { - title: 'API-розширення забезпечують централізоване керування API, спрощуючи конфігурацію для зручного використання в різних програмах Dify.', - link: 'Дізнайтеся, як розробити власне розширення API.', - add: 'Додати розширення API', - selector: { - title: 'Розширення API', - placeholder: 'Виберіть API розширення', - manage: 'Керувати розширеннями API', - }, - modal: { - title: 'Додати розширення API', - editTitle: 'Редагувати розширення API', - name: { - title: 'Ім\'я', - placeholder: 'Введіть ім\'я', - }, - apiEndpoint: { - title: 'Кінцева точка API', - placeholder: 'Будь ласка, введіть кінцеву точку API', - }, - apiKey: { - title: 'Ключ API', - placeholder: 'Будь ласка, введіть ключ API', - lengthError: 'Довжина API-ключа не може бути меньше 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: 'пов\'язані програми', - noRelatedApp: 'Немає пов\'язаних додатків', - pipeline: 'Трубопроводу', - }, - 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: 'Оцінка звернення:', - }, - inputPlaceholder: 'Поговоріть з ботом', - thought: 'Думка', - thinking: 'Мислення...', - resend: 'Відправити знову', - }, - 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}} МБ', - pasteImageLink: 'Вставити посилання на зображення', - pasteImageLinkInputPlaceholder: 'Вставте посилання на зображення тут', - pasteImageLinkInvalid: 'Недійсне посилання на зображення', - imageUpload: 'Завантаження зображення', - }, - tag: { - placeholder: 'Усі теги', - addNew: 'Додати новий тег', - noTag: 'Без тегів', - noTagYet: 'Ще немає тегів', - addTag: 'додати тег', - editTag: 'Редагувати теги', - manageTags: 'Керувати тегами', - selectorPlaceholder: 'Введіть для пошуку або створення', - create: 'Створити', - delete: 'Видалити тег', - deleteTip: 'Тег використовується, видалити його?', - created: 'Тег створено успішно', - failed: 'Не вдалося створити тег', - }, - errorMsg: { - fieldRequired: '{{field}} є обов\'язковим', - urlError: 'URL-адреса повинна починатися з http:// або https://', - }, - fileUploader: { - pasteFileLink: 'Вставити посилання на файл', - pasteFileLinkInvalid: 'Неприпустиме посилання на файл', - uploadFromComputer: 'Локальне завантаження', - uploadFromComputerLimit: 'Файл завантаження не може перевищувати {{size}}', - pasteFileLinkInputPlaceholder: 'Введіть URL-адресу...', - fileExtensionNotSupport: 'Розширення файлу не підтримується', - uploadFromComputerReadError: 'Не вдалося прочитати файл, будь ласка, спробуйте ще раз.', - uploadFromComputerUploadError: 'Не вдалося завантажити файл, будь ласка, завантажте ще раз.', - fileExtensionBlocked: 'Цей тип файлу заблоковано з міркувань безпеки', - uploadDisabled: 'Завантаження файлів вимкнено', - }, - license: { - expiring: 'Термін дії закінчується за один день', - expiring_plural: 'Термін дії закінчується за {{count}} днів', - unlimited: 'Безмежний', - }, - pagination: { - perPage: 'Елементів на сторінці', - }, - theme: { - auto: 'система', - dark: 'темний', - light: 'світло', - theme: 'Тема', - }, - compliance: { - professionalUpgradeTooltip: 'Доступно лише з командним планом або вище.', - soc2Type2: 'Звіт SOC 2 Тип II', - iso27001: 'Сертифікація ISO 27001:2022', - soc2Type1: 'Звіт SOC 2 Тип I', - sandboxUpgradeTooltip: 'Доступно лише з професійним або командним планом.', - gdpr: 'GDPR DPA', - }, - imageInput: { - browse: 'перегляд', - supportedFormats: 'Підтримує PNG, JPG, JPEG, WEBP і GIF', - dropImageHere: 'Перетягніть зображення сюди або', - }, - you: 'Ти', - avatar: { - deleteTitle: 'Видалити аватар', - deleteDescription: 'Ви впевнені, що хочете видалити своє фото профілю? Ваш обліковий запис використовуватиме стандартний початковий аватар.', - }, - feedback: { - title: 'Надати відгук', - content: 'Зміст відгуку', - placeholder: 'Будь ласка, опишіть, що пішло не так або як ми можемо покращити...', - subtitle: 'Будь ласка, скажіть нам, що пішло не так із цією відповіддю', - }, - label: { - optional: '(необов\'язково)', - }, - noData: 'Немає даних', - dynamicSelect: { - error: 'Не вдалося завантажити параметри', - noData: 'Немає доступних опцій', - loading: 'Завантаження параметрів...', - selected: '{{count}} вибрано', - }, -} - -export default translation diff --git a/web/i18n/uk-UA/custom.json b/web/i18n/uk-UA/custom.json new file mode 100644 index 0000000000..1c9b6251b1 --- /dev/null +++ b/web/i18n/uk-UA/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "Налаштування", + "upgradeTip": { + "prefix": "Оновіть свій план до ", + "suffix": ", щоб налаштувати свій бренд.", + "title": "Оновіть свій план", + "des": "Оновіть свій план, щоб налаштувати свій бренд" + }, + "webapp": { + "title": "Налаштувати бренд для web app", + "removeBrand": "Видалити Powered by Dify", + "changeLogo": "Змінити зображення бренду \"Powered by\"", + "changeLogoTip": "Формат SVG або PNG з мінімальним розміром 40x40 пікселів" + }, + "app": { + "title": "Налаштувати бренд заголовка програми app", + "changeLogoTip": "Формат SVG або PNG з мінімальним розміром 80x80 пікселів" + }, + "upload": "Завантажити", + "uploading": "Завантаження", + "uploadedFail": "Помилка завантаження зображення, будь ласка, завантажте ще раз.", + "change": "Змінити", + "apply": "Застосувати", + "restore": "Відновити значення за замовчуванням", + "customize": { + "contactUs": "зв'яжіться з нами", + "prefix": "Щоб налаштувати логотип бренду в програмі, будь ласка,", + "suffix": "щоб перейти на корпоративне видання." + } +} diff --git a/web/i18n/uk-UA/custom.ts b/web/i18n/uk-UA/custom.ts deleted file mode 100644 index 1b7a4c0abd..0000000000 --- a/web/i18n/uk-UA/custom.ts +++ /dev/null @@ -1,32 +0,0 @@ -const translation = { - custom: 'Налаштування', - upgradeTip: { - prefix: 'Оновіть свій план до ', - suffix: ', щоб налаштувати свій бренд.', - title: 'Оновіть свій план', - des: 'Оновіть свій план, щоб налаштувати свій бренд', - }, - webapp: { - title: 'Налаштувати бренд для web app', - removeBrand: 'Видалити Powered by Dify', - changeLogo: 'Змінити зображення бренду "Powered by"', - changeLogoTip: 'Формат SVG або PNG з мінімальним розміром 40x40 пікселів', - }, - app: { - title: 'Налаштувати бренд заголовка програми app', - changeLogoTip: 'Формат SVG або PNG з мінімальним розміром 80x80 пікселів', - }, - upload: 'Завантажити', - uploading: 'Завантаження', - uploadedFail: 'Помилка завантаження зображення, будь ласка, завантажте ще раз.', - change: 'Змінити', - apply: 'Застосувати', - restore: 'Відновити значення за замовчуванням', - customize: { - contactUs: 'зв\'яжіться з нами', - prefix: 'Щоб налаштувати логотип бренду в програмі, будь ласка,', - suffix: 'щоб перейти на корпоративне видання.', - }, -} - -export default translation diff --git a/web/i18n/uk-UA/dataset-creation.json b/web/i18n/uk-UA/dataset-creation.json new file mode 100644 index 0000000000..2014a7ff52 --- /dev/null +++ b/web/i18n/uk-UA/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "Знання" + }, + "one": "Виберіть джерело даних", + "two": "Попередня обробка та очищення тексту", + "three": "Виконати та завершити" + }, + "error": { + "unavailable": "Ці Знання недоступні" + }, + "stepOne": { + "filePreview": "Попередній перегляд файлу", + "pagePreview": "Попередній перегляд сторінки", + "dataSourceType": { + "file": "Імпортувати з текстового файла", + "notion": "Синхронізувати з Notion", + "web": "Синхронізувати з веб-сайту" + }, + "uploader": { + "title": "Завантажити текстовий файл", + "button": "Перетягніть файли або папки або", + "buttonSingleFile": "Перетягніть файл або", + "browse": "Оберіть", + "tip": "Підтримуються {{supportTypes}}. Максимум {{size}} МБ кожен.", + "validation": { + "typeError": "Тип файлу не підтримується", + "size": "Файл занадто великий. Максимум – {{size}} МБ", + "count": "Не підтримується завантаження кількох файлів", + "filesNumber": "Ліміт масового завантаження {{filesNumber}}." + }, + "cancel": "Скасувати", + "change": "Змінити", + "failed": "Завантаження не вдалося" + }, + "notionSyncTitle": "Notion не підключено", + "notionSyncTip": "Для синхронізації з Notion спочатку потрібно встановити зв’язок із Notion.", + "connect": "Перейти до підключення", + "button": "далі", + "emptyDatasetCreation": "Я хочу створити порожні Знання", + "modal": { + "title": "Створити порожні Знання", + "tip": "Порожні Знання не будуть містити документів, ви зможете завантажити документи в будь-який час.", + "input": "Назва Знань", + "placeholder": "Введіть, будь ласка", + "nameNotEmpty": "Ім’я не може бути порожнім", + "nameLengthInvalid": "Ім’я має бути від 1 до 40 символів", + "cancelButton": "Скасувати", + "confirmButton": "Створити", + "failed": "Створення не вдалося" + }, + "website": { + "totalPageScraped": "Всього вискоблених сторінок:", + "run": "Бігти", + "configure": "Настроїти", + "limit": "Межа", + "selectAll": "Вибрати все", + "unknownError": "Невідома помилка", + "maxDepth": "Максимальна глибина", + "crawlSubPage": "Сканування підсторінок", + "preview": "Попередній перегляд", + "fireCrawlNotConfigured": "Firecrawl не налаштовано", + "includeOnlyPaths": "Включати лише контури", + "options": "Параметри", + "resetAll": "Скинути все", + "excludePaths": "Виключення контурів", + "firecrawlDoc": "Документація Firecrawl", + "exceptionErrorTitle": "Виняток стався під час виконання завдання Firecrawl:", + "firecrawlTitle": "Видобування веб-вмісту за допомогою 🔥Firecrawl", + "scrapTimeInfo": "Викрадено {{total}} сторінок загалом протягом {{time}}s", + "fireCrawlNotConfiguredDescription": "Налаштуйте Firecrawl за допомогою ключа API, щоб використовувати його.", + "extractOnlyMainContent": "Витягуйте лише основний контент (без заголовків, навігаторів, нижніх колонтитулів тощо)", + "maxDepthTooltip": "Максимальна глибина для сканування щодо введеної URL-адреси. Глибина 0 просто зішкрібає сторінку введеного url, глибина 1 шкребе url і все після введеногоURL + один /, і так далі.", + "jinaReaderDocLink": "https://jina.ai/reader", + "chooseProvider": "Оберіть провайдера", + "jinaReaderNotConfiguredDescription": "Налаштуйте Jina Reader, ввівши безкоштовний API-ключ для доступу.", + "jinaReaderDoc": "Дізнайтеся більше про Jina Reader", + "useSitemapTooltip": "Дотримуйтесь карти сайту, щоб просканувати сайт. Якщо ні, Jina Reader скануватиметься ітеративно залежно від релевантності сторінки, отримуючи менше, але якісніших сторінок.", + "jinaReaderNotConfigured": "Jina Reader не налаштована", + "jinaReaderTitle": "Перетворіть весь сайт на Markdown", + "useSitemap": "Використовуйте карту сайту", + "configureJinaReader": "Налаштувати Jina Reader", + "waterCrawlNotConfigured": "Watercrawl не налаштовано", + "waterCrawlNotConfiguredDescription": "Налаштуйте Watercrawl з ключем API, щоб його використовувати.", + "configureFirecrawl": "Налаштування Firecrawl", + "configureWatercrawl": "Налаштування Watercrawl", + "watercrawlTitle": "Витягуйте веб-контент за допомогою Watercrawl", + "watercrawlDoc": "Документація Watercrawl", + "running": "Біг" + }, + "cancel": "Скасувати" + }, + "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": "Сегментація з використанням", + "estimateCost": "Оцінка", + "estimateSegment": "Орієнтовні фрагменти", + "segmentCount": "фрагментів", + "calculating": "Розраховується...", + "fileSource": "Попередня обробка документа", + "notionSource": "Попередня обробка сторінок", + "other": " та інші ", + "fileUnit": " файли", + "notionUnit": " сторінки", + "previousStep": "Попередній крок", + "nextStep": "Зберегти та обробити", + "save": "Зберегти та обробити", + "cancel": "Скасувати", + "sideTipTitle": "Навіщо розбивати на фрагменти та попередньо обробляти?", + "sideTipP1": "При роботі з текстовими даними фрагментація та очищення є двома важливими етапами попередньої обробки.", + "sideTipP2": "Сегментація розбиває довгий текст на абзаци для кращого сприйняття моделями. Це підвищує якість і релевантність результатів роботи моделей.", + "sideTipP3": "Очищення видаляє непотрібні символи та форматування, роблячи Знання чистішими та легшими для аналізу.", + "sideTipP4": "Правильна фрагментація та очищення покращують продуктивність моделі, забезпечуючи більш точні та цінні результати.", + "previewTitle": "Попередній перегляд", + "previewTitleButton": "Попередній перегляд", + "previewButton": "Зміна вмісту на формат Q&A", + "previewSwitchTipStart": "Поточний попередній перегляд має текстовий формат, зміна способу подання на формат запитань та відповідей ", + "previewSwitchTipEnd": " потребує додаткових токенів", + "characters": "символів", + "indexSettingTip": "Щоб змінити метод індексування, будь ласка, перейдіть до ", + "retrievalSettingTip": "Щоб змінити метод індексування, будь ласка, перейдіть до ", + "datasetSettingLink": "Налаштування знань.", + "webpageUnit": "Сторінок", + "websiteSource": "Веб-сайт попередньої обробки", + "separatorTip": "Роздільник – це символ, який використовується для поділу тексту. \\n\\n та \\n є часто використовуваними роздільниками для відокремлення абзаців та рядків. У поєднанні з комами (\\n\\n,\\n) абзаци будуть розділені лініями, якщо вони перевищують максимальну довжину фрагмента. Ви також можете використовувати спеціальні роздільники, визначені вами (наприклад, ***).", + "maxLengthCheck": "Максимальна довжина шматка має бути меншою за {{limit}}", + "parentChild": "Батьки-діти", + "childChunkForRetrieval": "Дочірній шматок для пошуку", + "notAvailableForQA": "Недоступно для Індексу запитань і відповідей", + "parentChunkForContext": "Parent-chunk для контексту", + "paragraph": "Абзац", + "general": "Загальне", + "highQualityTip": "Після завершення вбудовування в режимі високої якості повернення до економного режиму недоступне.", + "generalTip": "Загальний режим фрагментації тексту, отримані та викликані фрагменти однакові.", + "previewChunk": "Фрагмент попереднього перегляду", + "fullDoc": "Повний документ", + "useQALanguage": "Фрагмент у форматі запитань і відповідей у", + "notAvailableForParentChild": "Недоступно для Батьківсько-дочірнього індексу", + "qaSwitchHighQualityTipContent": "В даний час тільки високоякісний метод індексу підтримує фрагментацію формату запитань і відповідей. Чи хотіли б ви перейти в якісний режим?", + "previewChunkTip": "Натисніть кнопку «Фрагмент попереднього перегляду» ліворуч, щоб завантажити попередній перегляд", + "previewChunkCount": "{{count}} Приблизні шматки", + "fullDocTip": "Увесь документ використовується як батьківський фрагмент і отримується безпосередньо. Зверніть увагу, що з міркувань продуктивності текст, що перевищує 10000 токенів, буде автоматично обрізаний.", + "parentChildDelimiterTip": "Роздільник – це символ, який використовується для поділу тексту. \\n\\n рекомендується для поділу оригінального документа на великі батьківські фрагменти. Ви також можете використовувати спеціальні роздільники, визначені самостійно.", + "parentChildChunkDelimiterTip": "Роздільник – це символ, який використовується для поділу тексту. \\n рекомендується для поділу батьківських фрагментів на маленькі дочірні частини. Ви також можете використовувати спеціальні роздільники, визначені самостійно.", + "parentChildTip": "При використанні режиму батьків-дочірній елемент використовується для пошуку, а батьківський фрагмент використовується для виклику як контекст.", + "switch": "Комутатор", + "qaSwitchHighQualityTipTitle": "Формат запитань і відповідей вимагає якісного методу індексації", + "paragraphTip": "Цей режим розбиває текст на абзаци на основі роздільників і максимальної довжини фрагмента, використовуючи розділений текст як батьківський фрагмент для пошуку.", + "qaTip": "Використовуючи структуровані дані запитань і відповідей, ви можете створювати документи, які поєднують запитання з відповідями. Ці документи індексуються на основі частини запитань, що дозволяє системі отримувати релевантні відповіді на основі схожості запитів." + }, + "stepThree": { + "creationTitle": "🎉 Знання створено", + "creationContent": "Ми автоматично назвали Знання, ви можете змінити його в будь-який час", + "label": "Назва знань", + "additionTitle": "🎉 Документ завантажено", + "additionP1": "Документ було завантажено до Знання", + "additionP2": ", ви можете знайти його в списку документів Знання.", + "stop": "Зупинити обробку", + "resume": "Відновити обробку", + "navTo": "Перейти до документа", + "sideTipTitle": "Що далі", + "sideTipContent": "Після завершення індексування документа Знання можна інтегрувати в додаток як контекст. Налаштування контексту можна знайти на сторінці оркестрації підказок. Ви також можете створити його як незалежний плагін індексування ChatGPT для релізу.", + "modelTitle": "Ви впевнені, що хочете зупинити вбудовування?", + "modelContent": "Якщо вам потрібно буде відновити обробку пізніше, ви продовжите з того місця, де зупинилися.", + "modelButtonConfirm": "Підтвердити", + "modelButtonCancel": "Скасувати" + }, + "firecrawl": { + "getApiKeyLinkText": "Отримайте свій API-ключ від firecrawl.dev", + "configFirecrawl": "Налаштування 🔥Firecrawl", + "apiKeyPlaceholder": "Ключ API від firecrawl.dev" + }, + "jinaReader": { + "apiKeyPlaceholder": "Ключ API від jina.ai", + "configJinaReader": "Налаштування Jina Reader", + "getApiKeyLinkText": "Отримайте безкоштовний API-ключ за адресою jina.ai" + }, + "otherDataSource": { + "learnMore": "Дізнатися більше", + "title": "Підключитися до інших джерел даних?", + "description": "Наразі база знань Dify має лише обмежені джерела даних. Додавання джерела даних до бази знань Dify – це фантастичний спосіб підвищити гнучкість і потужність платформи для всіх користувачів. Наш посібник із внеску спрощує початок роботи. Будь ласка, натисніть на посилання нижче, щоб дізнатися більше." + }, + "watercrawl": { + "configWatercrawl": "Налаштування Watercrawl", + "apiKeyPlaceholder": "API ключ з watercrawl.dev", + "getApiKeyLinkText": "Отримайте ваш API ключ з watercrawl.dev" + } +} diff --git a/web/i18n/uk-UA/dataset-creation.ts b/web/i18n/uk-UA/dataset-creation.ts deleted file mode 100644 index 8b2b2c41e5..0000000000 --- a/web/i18n/uk-UA/dataset-creation.ts +++ /dev/null @@ -1,217 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: 'Знання', - }, - one: 'Виберіть джерело даних', - two: 'Попередня обробка та очищення тексту', - three: 'Виконати та завершити', - }, - error: { - unavailable: 'Ці Знання недоступні', - }, - stepOne: { - filePreview: 'Попередній перегляд файлу', - pagePreview: 'Попередній перегляд сторінки', - dataSourceType: { - file: 'Імпортувати з текстового файла', - notion: 'Синхронізувати з Notion', - web: 'Синхронізувати з веб-сайту', - }, - uploader: { - title: 'Завантажити текстовий файл', - button: 'Перетягніть файли або папки або', - buttonSingleFile: 'Перетягніть файл або', - browse: 'Оберіть', - tip: 'Підтримуються {{supportTypes}}. Максимум {{size}} МБ кожен.', - validation: { - typeError: 'Тип файлу не підтримується', - size: 'Файл занадто великий. Максимум – {{size}} МБ', - count: 'Не підтримується завантаження кількох файлів', - filesNumber: 'Ліміт масового завантаження {{filesNumber}}.', - }, - cancel: 'Скасувати', - change: 'Змінити', - failed: 'Завантаження не вдалося', - }, - notionSyncTitle: 'Notion не підключено', - notionSyncTip: 'Для синхронізації з Notion спочатку потрібно встановити зв’язок із Notion.', - connect: 'Перейти до підключення', - button: 'далі', - emptyDatasetCreation: 'Я хочу створити порожні Знання', - modal: { - title: 'Створити порожні Знання', - tip: 'Порожні Знання не будуть містити документів, ви зможете завантажити документи в будь-який час.', - input: 'Назва Знань', - placeholder: 'Введіть, будь ласка', - nameNotEmpty: 'Ім’я не може бути порожнім', - nameLengthInvalid: 'Ім’я має бути від 1 до 40 символів', - cancelButton: 'Скасувати', - confirmButton: 'Створити', - failed: 'Створення не вдалося', - }, - website: { - totalPageScraped: 'Всього вискоблених сторінок:', - run: 'Бігти', - configure: 'Настроїти', - limit: 'Межа', - selectAll: 'Вибрати все', - unknownError: 'Невідома помилка', - maxDepth: 'Максимальна глибина', - crawlSubPage: 'Сканування підсторінок', - preview: 'Попередній перегляд', - fireCrawlNotConfigured: 'Firecrawl не налаштовано', - includeOnlyPaths: 'Включати лише контури', - options: 'Параметри', - resetAll: 'Скинути все', - excludePaths: 'Виключення контурів', - firecrawlDoc: 'Документація Firecrawl', - exceptionErrorTitle: 'Виняток стався під час виконання завдання Firecrawl:', - firecrawlTitle: 'Видобування веб-вмісту за допомогою 🔥Firecrawl', - scrapTimeInfo: 'Викрадено {{total}} сторінок загалом протягом {{time}}s', - fireCrawlNotConfiguredDescription: 'Налаштуйте Firecrawl за допомогою ключа API, щоб використовувати його.', - extractOnlyMainContent: 'Витягуйте лише основний контент (без заголовків, навігаторів, нижніх колонтитулів тощо)', - maxDepthTooltip: 'Максимальна глибина для сканування щодо введеної URL-адреси. Глибина 0 просто зішкрібає сторінку введеного url, глибина 1 шкребе url і все після введеногоURL + один /, і так далі.', - jinaReaderDocLink: 'https://jina.ai/reader', - chooseProvider: 'Оберіть провайдера', - jinaReaderNotConfiguredDescription: 'Налаштуйте Jina Reader, ввівши безкоштовний API-ключ для доступу.', - jinaReaderDoc: 'Дізнайтеся більше про Jina Reader', - useSitemapTooltip: 'Дотримуйтесь карти сайту, щоб просканувати сайт. Якщо ні, Jina Reader скануватиметься ітеративно залежно від релевантності сторінки, отримуючи менше, але якісніших сторінок.', - jinaReaderNotConfigured: 'Jina Reader не налаштована', - jinaReaderTitle: 'Перетворіть весь сайт на Markdown', - useSitemap: 'Використовуйте карту сайту', - configureJinaReader: 'Налаштувати Jina Reader', - waterCrawlNotConfigured: 'Watercrawl не налаштовано', - waterCrawlNotConfiguredDescription: 'Налаштуйте Watercrawl з ключем API, щоб його використовувати.', - configureFirecrawl: 'Налаштування Firecrawl', - configureWatercrawl: 'Налаштування Watercrawl', - watercrawlTitle: 'Витягуйте веб-контент за допомогою Watercrawl', - watercrawlDoc: 'Документація Watercrawl', - running: 'Біг', - }, - cancel: 'Скасувати', - }, - 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: 'Сегментація з використанням', - estimateCost: 'Оцінка', - estimateSegment: 'Орієнтовні фрагменти', - segmentCount: 'фрагментів', - calculating: 'Розраховується...', - fileSource: 'Попередня обробка документа', - notionSource: 'Попередня обробка сторінок', - other: ' та інші ', - fileUnit: ' файли', - notionUnit: ' сторінки', - previousStep: 'Попередній крок', - nextStep: 'Зберегти та обробити', - save: 'Зберегти та обробити', - cancel: 'Скасувати', - sideTipTitle: 'Навіщо розбивати на фрагменти та попередньо обробляти?', - sideTipP1: 'При роботі з текстовими даними фрагментація та очищення є двома важливими етапами попередньої обробки.', - sideTipP2: 'Сегментація розбиває довгий текст на абзаци для кращого сприйняття моделями. Це підвищує якість і релевантність результатів роботи моделей.', - sideTipP3: 'Очищення видаляє непотрібні символи та форматування, роблячи Знання чистішими та легшими для аналізу.', - sideTipP4: 'Правильна фрагментація та очищення покращують продуктивність моделі, забезпечуючи більш точні та цінні результати.', - previewTitle: 'Попередній перегляд', - previewTitleButton: 'Попередній перегляд', - previewButton: 'Зміна вмісту на формат Q&A', - previewSwitchTipStart: 'Поточний попередній перегляд має текстовий формат, зміна способу подання на формат запитань та відповідей ', - previewSwitchTipEnd: ' потребує додаткових токенів', - characters: 'символів', - indexSettingTip: 'Щоб змінити метод індексування, будь ласка, перейдіть до ', - retrievalSettingTip: 'Щоб змінити метод індексування, будь ласка, перейдіть до ', - datasetSettingLink: 'Налаштування знань.', - webpageUnit: 'Сторінок', - websiteSource: 'Веб-сайт попередньої обробки', - separatorTip: 'Роздільник – це символ, який використовується для поділу тексту. \\n\\n та \\n є часто використовуваними роздільниками для відокремлення абзаців та рядків. У поєднанні з комами (\\n\\n,\\n) абзаци будуть розділені лініями, якщо вони перевищують максимальну довжину фрагмента. Ви також можете використовувати спеціальні роздільники, визначені вами (наприклад, ***).', - maxLengthCheck: 'Максимальна довжина шматка має бути меншою за {{limit}}', - parentChild: 'Батьки-діти', - childChunkForRetrieval: 'Дочірній шматок для пошуку', - notAvailableForQA: 'Недоступно для Індексу запитань і відповідей', - parentChunkForContext: 'Parent-chunk для контексту', - paragraph: 'Абзац', - general: 'Загальне', - highQualityTip: 'Після завершення вбудовування в режимі високої якості повернення до економного режиму недоступне.', - generalTip: 'Загальний режим фрагментації тексту, отримані та викликані фрагменти однакові.', - previewChunk: 'Фрагмент попереднього перегляду', - fullDoc: 'Повний документ', - useQALanguage: 'Фрагмент у форматі запитань і відповідей у', - notAvailableForParentChild: 'Недоступно для Батьківсько-дочірнього індексу', - qaSwitchHighQualityTipContent: 'В даний час тільки високоякісний метод індексу підтримує фрагментацію формату запитань і відповідей. Чи хотіли б ви перейти в якісний режим?', - previewChunkTip: 'Натисніть кнопку «Фрагмент попереднього перегляду» ліворуч, щоб завантажити попередній перегляд', - previewChunkCount: '{{count}} Приблизні шматки', - fullDocTip: 'Увесь документ використовується як батьківський фрагмент і отримується безпосередньо. Зверніть увагу, що з міркувань продуктивності текст, що перевищує 10000 токенів, буде автоматично обрізаний.', - parentChildDelimiterTip: 'Роздільник – це символ, який використовується для поділу тексту. \\n\\n рекомендується для поділу оригінального документа на великі батьківські фрагменти. Ви також можете використовувати спеціальні роздільники, визначені самостійно.', - parentChildChunkDelimiterTip: 'Роздільник – це символ, який використовується для поділу тексту. \\n рекомендується для поділу батьківських фрагментів на маленькі дочірні частини. Ви також можете використовувати спеціальні роздільники, визначені самостійно.', - parentChildTip: 'При використанні режиму батьків-дочірній елемент використовується для пошуку, а батьківський фрагмент використовується для виклику як контекст.', - switch: 'Комутатор', - qaSwitchHighQualityTipTitle: 'Формат запитань і відповідей вимагає якісного методу індексації', - paragraphTip: 'Цей режим розбиває текст на абзаци на основі роздільників і максимальної довжини фрагмента, використовуючи розділений текст як батьківський фрагмент для пошуку.', - qaTip: 'Використовуючи структуровані дані запитань і відповідей, ви можете створювати документи, які поєднують запитання з відповідями. Ці документи індексуються на основі частини запитань, що дозволяє системі отримувати релевантні відповіді на основі схожості запитів.', - }, - stepThree: { - creationTitle: '🎉 Знання створено', - creationContent: 'Ми автоматично назвали Знання, ви можете змінити його в будь-який час', - label: 'Назва знань', - additionTitle: '🎉 Документ завантажено', - additionP1: 'Документ було завантажено до Знання', - additionP2: ', ви можете знайти його в списку документів Знання.', - stop: 'Зупинити обробку', - resume: 'Відновити обробку', - navTo: 'Перейти до документа', - sideTipTitle: 'Що далі', - sideTipContent: 'Після завершення індексування документа Знання можна інтегрувати в додаток як контекст. Налаштування контексту можна знайти на сторінці оркестрації підказок. Ви також можете створити його як незалежний плагін індексування ChatGPT для релізу.', - modelTitle: 'Ви впевнені, що хочете зупинити вбудовування?', - modelContent: 'Якщо вам потрібно буде відновити обробку пізніше, ви продовжите з того місця, де зупинилися.', - modelButtonConfirm: 'Підтвердити', - modelButtonCancel: 'Скасувати', - }, - firecrawl: { - getApiKeyLinkText: 'Отримайте свій API-ключ від firecrawl.dev', - configFirecrawl: 'Налаштування 🔥Firecrawl', - apiKeyPlaceholder: 'Ключ API від firecrawl.dev', - }, - jinaReader: { - apiKeyPlaceholder: 'Ключ API від jina.ai', - configJinaReader: 'Налаштування Jina Reader', - getApiKeyLinkText: 'Отримайте безкоштовний API-ключ за адресою jina.ai', - }, - otherDataSource: { - learnMore: 'Дізнатися більше', - title: 'Підключитися до інших джерел даних?', - description: 'Наразі база знань Dify має лише обмежені джерела даних. Додавання джерела даних до бази знань Dify – це фантастичний спосіб підвищити гнучкість і потужність платформи для всіх користувачів. Наш посібник із внеску спрощує початок роботи. Будь ласка, натисніть на посилання нижче, щоб дізнатися більше.', - }, - watercrawl: { - configWatercrawl: 'Налаштування Watercrawl', - apiKeyPlaceholder: 'API ключ з watercrawl.dev', - getApiKeyLinkText: 'Отримайте ваш API ключ з watercrawl.dev', - }, -} - -export default translation diff --git a/web/i18n/uk-UA/dataset-documents.json b/web/i18n/uk-UA/dataset-documents.json new file mode 100644 index 0000000000..1e9bed8bf9 --- /dev/null +++ b/web/i18n/uk-UA/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "Документи", + "desc": "Тут відображаються всі файли Знання, і все Знання можна зв’язати з цитатами Dify або проіндексувати за допомогою плагіна Chat.", + "addFile": "додати файл", + "addPages": "Додати сторінки", + "table": { + "header": { + "fileName": "НАЗВА ФАЙЛУ", + "words": "КІЛЬКІСТЬ СЛІВ", + "hitCount": "КІЛЬКІСТЬ ВИЛУЧЕНЬ", + "uploadTime": "ЧАС ЗАВАНТАЖЕННЯ", + "status": "СТАТУС", + "action": "ДІЯ", + "chunkingMode": "РЕЖИМ ФРАГМЕНТАЦІЇ" + }, + "name": "Ім'я", + "rename": "Перейменувати" + }, + "action": { + "uploadFile": "Завантажити новий файл", + "settings": "Налаштування сегмента", + "addButton": "Додати фрагмент", + "add": "Додати фрагмент", + "batchAdd": "Пакетне додавання", + "archive": "Архів", + "unarchive": "Розархівувати", + "delete": "Видалити", + "enableWarning": "Архівований файл неможливо активувати", + "sync": "Синхронізувати", + "pause": "Пауза", + "resume": "Продовжити" + }, + "index": { + "enable": "Активувати", + "disable": "Деактивувати", + "all": "Усі", + "enableTip": "Файл можна індексувати", + "disableTip": "Файл не можна індексувати" + }, + "status": { + "queuing": "В черзі", + "indexing": "Індексування", + "paused": "Призупинено", + "error": "Помилка", + "available": "Доступно", + "enabled": "Активовано", + "disabled": "Деактивовано", + "archived": "Архівовано" + }, + "empty": { + "title": "Документації ще немає", + "upload": { + "tip": "Ви можете завантажувати файли, синхронізувати з веб-сайту або з веб-програм, таких як Notion, GitHub тощо." + }, + "sync": { + "tip": "Dify періодично завантажуватиме файли з вашого Notion і завершуватиме обробку." + } + }, + "delete": { + "title": "Ви впевнені, що хочете видалити?", + "content": "Файл видалено успішно." + }, + "batchModal": { + "title": "Пакетне додавання фрагментів", + "csvUploadTitle": "Перетягніть файл CSV сюди або натисніть, щоб", + "browse": "переглянути", + "tip": "CSV-файл повинен мати таку структуру:", + "question": "запитання", + "answer": "відповідь", + "contentTitle": "назва вмісту", + "content": "вміст", + "template": "Завантажити шаблон", + "cancel": "Скасувати", + "run": "Запуск пакетної обробки", + "runError": "Помилка запуску пакетної обробки", + "processing": "Триває пакетна обробка", + "completed": "Імпорт завершено", + "error": "Помилка імпорту", + "ok": "ОК" + }, + "addUrl": "Додати URL-адресу", + "learnMore": "Дізнатися більше", + "sort": { + "uploadTime": "Час завантаження", + "hitCount": "Кількість отримань" + } + }, + "metadata": { + "title": "Метадані", + "desc": "Маркування метаданих для документів дозволяє штучному інтелекту своєчасно отримувати до них доступ і викриває джерело посилань для користувачів.", + "dateTimeFormat": "MMMM D, YYYY hh:mm A", + "docTypeSelectTitle": "Будь ласка, виберіть тип документа", + "docTypeChangeTitle": "Змінити тип документа", + "docTypeSelectWarning": "Якщо тип документа буде змінено, наразі заповнені метадані більше не зберігатимуться", + "firstMetaAction": "Почнімо", + "placeholder": { + "add": "Додати ", + "select": "Вибрати " + }, + "source": { + "upload_file": "Завантажити файл", + "notion": "Синхронізувати з Notion", + "github": "Синхронізувати з Github", + "online_document": "Онлайн-документ", + "local_file": "Локальний файл", + "website_crawl": "Сканування веб-сайту" + }, + "type": { + "book": "Книга", + "webPage": "Веб-сторінка", + "paper": "Наукова праця", + "socialMediaPost": "Пост у соціальних медіа", + "personalDocument": "Особистий документ", + "businessDocument": "Діловий документ", + "IMChat": "Чат миттєвих повідомлень", + "wikipediaEntry": "Стаття у Вікіпедії", + "notion": "Синхронізувати з Notion", + "github": "Синхронізувати з Github", + "technicalParameters": "Технічні параметри" + }, + "field": { + "processRule": { + "processDoc": "Обробка документа", + "segmentRule": "Правило сегментування", + "segmentLength": "Довжина фрагментів", + "processClean": "Очищення тексту" + }, + "book": { + "title": "Назва", + "language": "Мова", + "author": "Автор", + "publisher": "Видавець", + "publicationDate": "Дата публікації", + "ISBN": "ISBN", + "category": "Категорія" + }, + "webPage": { + "title": "Назва", + "url": "URL", + "language": "Мова", + "authorPublisher": "Автор/видавець", + "publishDate": "Дата публікації", + "topicKeywords": "Теми/ключові слова", + "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": "Попередній перегляд параграфа буде доступний після завершення побудови векторів", + "childMaxTokens": "Дитина", + "pause": "Пауза", + "parentMaxTokens": "Родитель", + "hierarchical": "Батьки-діти", + "waiting": "Виконання очікує..." + }, + "segment": { + "paragraphs": "Параграфи", + "keywords": "Ключові слова", + "addKeyWord": "Додати ключове слово", + "keywordError": "Максимальна довжина ключового слова – 20 символів", + "hitCount": "Кількість пошуку", + "vectorHash": "Векторний хеш: ", + "questionPlaceholder": "додайте запитання тут", + "questionEmpty": "Питання не може бути порожнім", + "answerPlaceholder": "додайте відповідь тут", + "answerEmpty": "Відповідь не може бути порожньою", + "contentPlaceholder": "додайте вміст тут", + "contentEmpty": "Вміст не може бути порожнім", + "newTextSegment": "Новий текстовий сегмент", + "newQaSegment": "Новий сегмент запитань та відповідей", + "delete": "Видалити цей фрагмент?", + "chunks_one": "ШМАТОК", + "childChunk": "Дочірній шматок", + "clearFilter": "Очистити фільтр", + "addAnother": "Додати ще один", + "newChunk": "Новий шматок", + "searchResults_other": "РЕЗУЛЬТАТІВ", + "parentChunks_other": "БАТЬКІВСЬКІ ФРАГМЕНТИ", + "childChunks_other": "ДОЧІРНІ ШМАТКИ", + "chunkDetail": "Деталізація фрагмента", + "regeneratingTitle": "Регенерація дочірніх фрагментів", + "chunkAdded": "Додано 1 фрагмент", + "addChildChunk": "Додати дочірній фрагмент", + "empty": "Шматок не знайдено", + "chunks_other": "ШМАТКИ", + "editedAt": "За редакцією", + "dateTimeFormat": "DD.MM.YYYY HH:mm", + "searchResults_zero": "РЕЗУЛЬТАТ", + "collapseChunks": "Згортання шматків", + "childChunkAdded": "Додано 1 дочірній фрагмент", + "editParentChunk": "Редагувати батьківський фрагмент", + "newChildChunk": "Новий дочірній шматок", + "editChunk": "Редагувати фрагмент", + "regenerationSuccessTitle": "Регенерація завершена", + "edited": "РЕДАГУВАТИ", + "regenerationConfirmMessage": "Регенерація дочірніх фрагментів перезаписує поточні дочірні фрагменти, включаючи відредаговані фрагменти та нещодавно додані фрагменти. Регенерація не може бути скасована.", + "chunk": "Шматок", + "childChunks_one": "ДОЧІРНЯ ЧАСТИНА", + "parentChunk": "Батьківський чанк", + "parentChunks_one": "БАТЬКІВСЬКИЙ ФРАГМЕНТ", + "characters_other": "Символів", + "searchResults_one": "РЕЗУЛЬТАТ", + "regeneratingMessage": "Це може зайняти мить, будь ласка, зачекайте...", + "characters_one": "знак", + "addChunk": "Додати шматок", + "editChildChunk": "Редагувати дочірній фрагмент", + "regenerationSuccessMessage": "Ви можете закрити це вікно.", + "expandChunks": "Розгортання фрагментів", + "regenerationConfirmTitle": "Хочете регенерувати дитячі шматки?", + "keywordEmpty": "Ключове слово не може бути порожнім", + "keywordDuplicate": "Ключове слово вже існує", + "allFilesUploaded": "Усі файли повинні бути завантажені перед збереженням" + } +} diff --git a/web/i18n/uk-UA/dataset-documents.ts b/web/i18n/uk-UA/dataset-documents.ts deleted file mode 100644 index f7f9d3ae2c..0000000000 --- a/web/i18n/uk-UA/dataset-documents.ts +++ /dev/null @@ -1,407 +0,0 @@ -const translation = { - list: { - title: 'Документи', - desc: 'Тут відображаються всі файли Знання, і все Знання можна зв’язати з цитатами Dify або проіндексувати за допомогою плагіна Chat.', - addFile: 'додати файл', - addPages: 'Додати сторінки', - table: { - header: { - fileName: 'НАЗВА ФАЙЛУ', - words: 'КІЛЬКІСТЬ СЛІВ', - hitCount: 'КІЛЬКІСТЬ ВИЛУЧЕНЬ', - uploadTime: 'ЧАС ЗАВАНТАЖЕННЯ', - status: 'СТАТУС', - action: 'ДІЯ', - chunkingMode: 'РЕЖИМ ФРАГМЕНТАЦІЇ', - }, - name: 'Ім\'я', - rename: 'Перейменувати', - }, - action: { - uploadFile: 'Завантажити новий файл', - settings: 'Налаштування сегмента', - addButton: 'Додати фрагмент', - add: 'Додати фрагмент', - batchAdd: 'Пакетне додавання', - archive: 'Архів', - unarchive: 'Розархівувати', - delete: 'Видалити', - enableWarning: 'Архівований файл неможливо активувати', - sync: 'Синхронізувати', - pause: 'Пауза', - resume: 'Продовжити', - }, - index: { - enable: 'Активувати', - disable: 'Деактивувати', - all: 'Усі', - enableTip: 'Файл можна індексувати', - disableTip: 'Файл не можна індексувати', - }, - status: { - queuing: 'В черзі', - indexing: 'Індексування', - paused: 'Призупинено', - error: 'Помилка', - available: 'Доступно', - enabled: 'Активовано', - disabled: 'Деактивовано', - archived: 'Архівовано', - }, - empty: { - title: 'Документації ще немає', - upload: { - tip: 'Ви можете завантажувати файли, синхронізувати з веб-сайту або з веб-програм, таких як Notion, GitHub тощо.', - }, - sync: { - tip: 'Dify періодично завантажуватиме файли з вашого Notion і завершуватиме обробку.', - }, - }, - delete: { - title: 'Ви впевнені, що хочете видалити?', - content: 'Файл видалено успішно.', - }, - batchModal: { - title: 'Пакетне додавання фрагментів', - csvUploadTitle: 'Перетягніть файл CSV сюди або натисніть, щоб', - browse: 'переглянути', - tip: 'CSV-файл повинен мати таку структуру:', - question: 'запитання', - answer: 'відповідь', - contentTitle: 'назва вмісту', - content: 'вміст', - template: 'Завантажити шаблон', - cancel: 'Скасувати', - run: 'Запуск пакетної обробки', - runError: 'Помилка запуску пакетної обробки', - processing: 'Триває пакетна обробка', - completed: 'Імпорт завершено', - error: 'Помилка імпорту', - ok: 'ОК', - }, - addUrl: 'Додати URL-адресу', - learnMore: 'Дізнатися більше', - sort: { - uploadTime: 'Час завантаження', - hitCount: 'Кількість отримань', - }, - }, - metadata: { - title: 'Метадані', - desc: 'Маркування метаданих для документів дозволяє штучному інтелекту своєчасно отримувати до них доступ і викриває джерело посилань для користувачів.', - dateTimeFormat: 'MMMM D, YYYY hh:mm A', - docTypeSelectTitle: 'Будь ласка, виберіть тип документа', - docTypeChangeTitle: 'Змінити тип документа', - docTypeSelectWarning: 'Якщо тип документа буде змінено, наразі заповнені метадані більше не зберігатимуться', - firstMetaAction: 'Почнімо', - placeholder: { - add: 'Додати ', - select: 'Вибрати ', - }, - source: { - upload_file: 'Завантажити файл', - notion: 'Синхронізувати з Notion', - github: 'Синхронізувати з Github', - online_document: 'Онлайн-документ', - local_file: 'Локальний файл', - website_crawl: 'Сканування веб-сайту', - }, - type: { - book: 'Книга', - webPage: 'Веб-сторінка', - paper: 'Наукова праця', - socialMediaPost: 'Пост у соціальних медіа', - personalDocument: 'Особистий документ', - businessDocument: 'Діловий документ', - IMChat: 'Чат миттєвих повідомлень', - wikipediaEntry: 'Стаття у Вікіпедії', - notion: 'Синхронізувати з Notion', - github: 'Синхронізувати з Github', - technicalParameters: 'Технічні параметри', - }, - field: { - processRule: { - processDoc: 'Обробка документа', - segmentRule: 'Правило сегментування', - segmentLength: 'Довжина фрагментів', - processClean: 'Очищення тексту', - }, - book: { - title: 'Назва', - language: 'Мова', - author: 'Автор', - publisher: 'Видавець', - publicationDate: 'Дата публікації', - ISBN: 'ISBN', - category: 'Категорія', - }, - webPage: { - title: 'Назва', - url: 'URL', - language: 'Мова', - authorPublisher: 'Автор/видавець', - publishDate: 'Дата публікації', - topicKeywords: 'Теми/ключові слова', - 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: 'Замітки', // General notes or memos - 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: 'Попередній перегляд параграфа буде доступний після завершення побудови векторів', - childMaxTokens: 'Дитина', - pause: 'Пауза', - parentMaxTokens: 'Родитель', - hierarchical: 'Батьки-діти', - waiting: 'Виконання очікує...', - }, - segment: { - paragraphs: 'Параграфи', - keywords: 'Ключові слова', - addKeyWord: 'Додати ключове слово', - keywordError: 'Максимальна довжина ключового слова – 20 символів', - hitCount: 'Кількість пошуку', - vectorHash: 'Векторний хеш: ', - questionPlaceholder: 'додайте запитання тут', - questionEmpty: 'Питання не може бути порожнім', - answerPlaceholder: 'додайте відповідь тут', - answerEmpty: 'Відповідь не може бути порожньою', - contentPlaceholder: 'додайте вміст тут', - contentEmpty: 'Вміст не може бути порожнім', - newTextSegment: 'Новий текстовий сегмент', - newQaSegment: 'Новий сегмент запитань та відповідей', - delete: 'Видалити цей фрагмент?', - chunks_one: 'ШМАТОК', - childChunk: 'Дочірній шматок', - clearFilter: 'Очистити фільтр', - addAnother: 'Додати ще один', - newChunk: 'Новий шматок', - searchResults_other: 'РЕЗУЛЬТАТІВ', - parentChunks_other: 'БАТЬКІВСЬКІ ФРАГМЕНТИ', - childChunks_other: 'ДОЧІРНІ ШМАТКИ', - chunkDetail: 'Деталізація фрагмента', - regeneratingTitle: 'Регенерація дочірніх фрагментів', - chunkAdded: 'Додано 1 фрагмент', - addChildChunk: 'Додати дочірній фрагмент', - empty: 'Шматок не знайдено', - chunks_other: 'ШМАТКИ', - editedAt: 'За редакцією', - dateTimeFormat: 'DD.MM.YYYY HH:mm', - searchResults_zero: 'РЕЗУЛЬТАТ', - collapseChunks: 'Згортання шматків', - childChunkAdded: 'Додано 1 дочірній фрагмент', - editParentChunk: 'Редагувати батьківський фрагмент', - newChildChunk: 'Новий дочірній шматок', - editChunk: 'Редагувати фрагмент', - regenerationSuccessTitle: 'Регенерація завершена', - edited: 'РЕДАГУВАТИ', - regenerationConfirmMessage: 'Регенерація дочірніх фрагментів перезаписує поточні дочірні фрагменти, включаючи відредаговані фрагменти та нещодавно додані фрагменти. Регенерація не може бути скасована.', - chunk: 'Шматок', - childChunks_one: 'ДОЧІРНЯ ЧАСТИНА', - parentChunk: 'Батьківський чанк', - parentChunks_one: 'БАТЬКІВСЬКИЙ ФРАГМЕНТ', - characters_other: 'Символів', - searchResults_one: 'РЕЗУЛЬТАТ', - regeneratingMessage: 'Це може зайняти мить, будь ласка, зачекайте...', - characters_one: 'знак', - addChunk: 'Додати шматок', - editChildChunk: 'Редагувати дочірній фрагмент', - regenerationSuccessMessage: 'Ви можете закрити це вікно.', - expandChunks: 'Розгортання фрагментів', - regenerationConfirmTitle: 'Хочете регенерувати дитячі шматки?', - keywordEmpty: 'Ключове слово не може бути порожнім', - keywordDuplicate: 'Ключове слово вже існує', - allFilesUploaded: 'Усі файли повинні бути завантажені перед збереженням', - }, -} - -export default translation diff --git a/web/i18n/uk-UA/dataset-hit-testing.json b/web/i18n/uk-UA/dataset-hit-testing.json new file mode 100644 index 0000000000..09940a7da4 --- /dev/null +++ b/web/i18n/uk-UA/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "Тестування вибірки", + "desc": "Тестування ефективності пошуку знань на основі наданого текстового запиту.", + "dateTimeFormat": "DD/MM/YYYY HH:mm A", + "table": { + "header": { + "source": "Джерело", + "time": "Час", + "queryContent": "Вміст запиту" + } + }, + "input": { + "title": "Вихідний текст", + "placeholder": "Будь ласка, введіть текст, рекомендується коротке декларативне речення.", + "countWarning": "До 200 символів.", + "indexWarning": "Тільки високоякісні знання.", + "testing": "Тестування" + }, + "hit": { + "title": "ВИБРАНІ АБЗАЦИ", + "emptyTip": "Результати тестування вибірки відобразяться тут" + }, + "noRecentTip": "Тут немає результатів останніх запитів", + "viewChart": "ПЕРЕГЛЯНУТИ ВЕКТОРНУ ДІАГРАМУ", + "settingTitle": "Налаштування отримання", + "viewDetail": "Переглянути деталі", + "chunkDetail": "Деталізація фрагмента", + "hitChunks": "Натисніть {{num}} на дочірні шматки", + "open": "Відкривати", + "keyword": "Ключові слова", + "records": "Записи", + "imageUploader": { + "tip": "Завантажте або перетягніть зображення (Макс. {{batchCount}}, {{size}} МБ кожне)", + "tooltip": "Завантажте зображення (Макс. {{batchCount}}, {{size}} МБ кожне)", + "dropZoneTip": "Перетягніть файл сюди, щоб завантажити", + "singleChunkAttachmentLimitTooltip": "Кількість вкладень у вигляді одного блоку не може перевищувати {{limit}}" + } +} diff --git a/web/i18n/uk-UA/dataset-hit-testing.ts b/web/i18n/uk-UA/dataset-hit-testing.ts deleted file mode 100644 index a4955a65a7..0000000000 --- a/web/i18n/uk-UA/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - title: 'Тестування вибірки', - desc: 'Тестування ефективності пошуку знань на основі наданого текстового запиту.', - dateTimeFormat: 'DD/MM/YYYY HH:mm A', - table: { - header: { - source: 'Джерело', - time: 'Час', - queryContent: 'Вміст запиту', - }, - }, - input: { - title: 'Вихідний текст', - placeholder: 'Будь ласка, введіть текст, рекомендується коротке декларативне речення.', - countWarning: 'До 200 символів.', - indexWarning: 'Тільки високоякісні знання.', - testing: 'Тестування', - }, - hit: { - title: 'ВИБРАНІ АБЗАЦИ', - emptyTip: 'Результати тестування вибірки відобразяться тут', - }, - noRecentTip: 'Тут немає результатів останніх запитів', - viewChart: 'ПЕРЕГЛЯНУТИ ВЕКТОРНУ ДІАГРАМУ', - settingTitle: 'Налаштування отримання', - viewDetail: 'Переглянути деталі', - chunkDetail: 'Деталізація фрагмента', - hitChunks: 'Натисніть {{num}} на дочірні шматки', - open: 'Відкривати', - keyword: 'Ключові слова', - records: 'Записи', - imageUploader: { - tip: 'Завантажте або перетягніть зображення (Макс. {{batchCount}}, {{size}} МБ кожне)', - tooltip: 'Завантажте зображення (Макс. {{batchCount}}, {{size}} МБ кожне)', - dropZoneTip: 'Перетягніть файл сюди, щоб завантажити', - singleChunkAttachmentLimitTooltip: 'Кількість вкладень у вигляді одного блоку не може перевищувати {{limit}}', - }, -} - -export default translation diff --git a/web/i18n/uk-UA/dataset-pipeline.json b/web/i18n/uk-UA/dataset-pipeline.json new file mode 100644 index 0000000000..547236337f --- /dev/null +++ b/web/i18n/uk-UA/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "createFromScratch": { + "title": "Порожній конвеєр знань", + "description": "Створіть кастомну воронку продажів з нуля з повним контролем над обробкою та структурою даних." + }, + "caution": "Обережність", + "backToKnowledge": "Назад до знань", + "createKnowledge": "Створюйте знання", + "successTip": "Успішно створили Базу знань", + "importDSL": "Імпорт із файлу DSL", + "errorTip": "Не вдалося створити базу знань" + }, + "templates": { + "customized": "Налаштувати" + }, + "operations": { + "process": "Процес", + "choose": "Вибирати", + "details": "Деталі", + "convert": "Перетворити", + "dataSource": "Джерело даних", + "preview": "Попередній перегляд", + "exportPipeline": "Пайплайн експорту", + "saveAndProcess": "Зберегти та обробити", + "editInfo": "Редагувати інформацію", + "backToDataSource": "Назад до джерела даних", + "useTemplate": "Використовуйте цей конвеєр знань" + }, + "deletePipeline": { + "title": "Ви впевнені, що видалили цей шаблон пайплайну?", + "content": "Видалення шаблону трубопроводу є незворотнім." + }, + "publishPipeline": { + "success": { + "message": "Опубліковано портфель знань", + "tip": "Перейдіть до Документів, щоб додати або керувати документами." + }, + "error": { + "message": "Не вдалося опублікувати конвеєр знань" + } + }, + "publishTemplate": { + "success": { + "learnMore": "Дізнатися більше", + "message": "Опубліковано шаблон пайплайну", + "tip": "Ви можете використовувати цей шаблон на сторінці створення." + }, + "error": { + "message": "Не вдалося опублікувати шаблон пайплайну" + } + }, + "exportDSL": { + "successTip": "Успішний експорт DSL воронки продажів", + "errorTip": "Не вдалося експортувати DSL пайплайну" + }, + "details": { + "structure": "Структура", + "structureTooltip": "Структура фрагментів визначає, як документи розділяються та індексуються (пропонуючи режими «Загальні», «Батьки-дочірні елементи» та «Запитання й відповіді»), і є унікальною для кожної бази знань.", + "createdBy": "Автор: {{author}}" + }, + "testRun": { + "steps": { + "dataSource": "Джерело даних", + "documentProcessing": "Обробка документів" + }, + "dataSource": { + "localFiles": "Локальні файли" + }, + "notion": { + "docTitle": "Notion docs", + "title": "Обирайте сторінки Notion" + }, + "title": "Тестовий запуск", + "tooltip": "У режимі тестового запуску дозволяється імпортувати лише один документ за раз для полегшення налагодження та спостереження." + }, + "inputFieldPanel": { + "uniqueInputs": { + "title": "Унікальні входи для кожного входу", + "tooltip": "Унікальні входи доступні лише для вибраного джерела даних та його подальших вузлів. Користувачам не потрібно буде заповнювати його при виборі інших джерел даних. На першому кроці з'являться лише поля введення, на які посилаються змінні джерела даних (Джерело даних). Всі інші поля будуть показані на другому кроці (Обробка документів)." + }, + "globalInputs": { + "title": "Глобальні входи для всіх входів", + "tooltip": "Глобальні входи є спільними для всіх вузлів. Користувачам потрібно буде заповнити їх при виборі будь-якого джерела даних. Наприклад, такі поля, як роздільник і максимальна довжина фрагмента, можуть бути однаково застосовані до кількох джерел даних. На першому кроці відображаються лише поля вводу, на які посилаються змінні джерела даних (джерело даних). Усі інші поля з'являться на другому кроці (Обробка документів)." + }, + "preview": { + "stepOneTitle": "Джерело даних", + "stepTwoTitle": "Обробляти документи" + }, + "error": { + "variableDuplicate": "Ім'я змінної вже існує. Будь ласка, виберіть іншу назву." + }, + "addInputField": "Додати поле введення", + "editInputField": "Редагувати поле введення", + "title": "Поля для введення даних користувачем", + "description": "Поля введення користувача використовуються для визначення та збору змінних, необхідних під час виконання воронки продажів. Користувачі можуть налаштовувати тип поля та гнучко налаштовувати вхідне значення для задоволення потреб різних джерел даних або етапів обробки документів." + }, + "addDocuments": { + "steps": { + "processingDocuments": "Оформлення документів", + "processDocuments": "Обробляти документи", + "chooseDatasource": "Виберіть джерело даних" + }, + "stepOne": { + "preview": "Попередній перегляд" + }, + "stepTwo": { + "chunkSettings": "Налаштування фрагментів", + "previewChunks": "Фрагменти попереднього перегляду" + }, + "stepThree": { + "learnMore": "Дізнатися більше" + }, + "characters": "Символів", + "backToDataSource": "Джерело даних", + "title": "Додати документи", + "selectOnlineDocumentTip": "Обробити до {{count}} сторінок", + "selectOnlineDriveTip": "Обробляйте до {{count}} файлів, максимум {{fileSize}} МБ кожен" + }, + "documentSettings": { + "title": "Параметри документа" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} сторінок" + }, + "onlineDrive": { + "breadcrumbs": { + "allFiles": "Всі файли", + "searchPlaceholder": "Пошук файлів...", + "allBuckets": "Усі сегменти хмарного сховища", + "searchResult": "Знайдено {{searchResultsLength}} елементів у папці \"{{folderName}}\"" + }, + "emptyFolder": "Ця папка порожня", + "emptySearchResult": "Предметів не знайдено", + "resetKeywords": "Скидання ключових слів", + "notSupportedFileType": "Цей тип файлу не підтримується", + "notConnected": "{{name}} не підключено", + "notConnectedTip": "Щоб синхронізувати з {{name}}, спершу потрібно встановити з’єднання з {{name}}." + }, + "conversion": { + "confirm": { + "title": "Підтвердження", + "content": "Ця дія є постійною. Ви не зможете повернутися до попереднього способу. Будь ласка, підтвердьте конвертацію." + }, + "title": "Перетворення на конвеєр знань", + "warning": "Цю дію не можна скасувати.", + "successMessage": "Успішно перетворили набір даних у пайплайн", + "errorMessage": "Не вдалося перетворити набір даних у пайплайн", + "descriptionChunk2": "— більш відкритий та гнучкий підхід з доступом до плагінів з нашого маркетплейсу. Це застосує новий метод обробки до всіх майбутніх документів.", + "descriptionChunk1": "Тепер ви можете перетворити наявну базу знань на використання Knowledge Pipeline для обробки документів" + }, + "knowledgeDescription": "Опис знань", + "knowledgePermissions": "Дозволи", + "inputField": "Поле введення", + "knowledgeNameAndIcon": "Знання ім'я та піктограма", + "knowledgeNameAndIconPlaceholder": "Будь ласка, введіть назву Бази знань", + "pipelineNameAndIcon": "Назва та піктограма воронки продажів", + "editPipelineInfo": "Як редагувати інформацію про воронку продажів", + "knowledgeDescriptionPlaceholder": "Опишіть, що є в цій Базі знань. Детальний опис дозволяє штучному інтелекту більш точно отримати доступ до вмісту набору даних. Якщо значення порожнє, Dify використовуватиме стратегію удару за замовчуванням. (Необов'язково)", + "configurationTip": "Налаштувати {{pluginName}}" +} diff --git a/web/i18n/uk-UA/dataset-pipeline.ts b/web/i18n/uk-UA/dataset-pipeline.ts deleted file mode 100644 index 793112b2c6..0000000000 --- a/web/i18n/uk-UA/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - createFromScratch: { - title: 'Порожній конвеєр знань', - description: 'Створіть кастомну воронку продажів з нуля з повним контролем над обробкою та структурою даних.', - }, - caution: 'Обережність', - backToKnowledge: 'Назад до знань', - createKnowledge: 'Створюйте знання', - successTip: 'Успішно створили Базу знань', - importDSL: 'Імпорт із файлу DSL', - errorTip: 'Не вдалося створити базу знань', - }, - templates: { - customized: 'Налаштувати', - }, - operations: { - process: 'Процес', - choose: 'Вибирати', - details: 'Деталі', - convert: 'Перетворити', - dataSource: 'Джерело даних', - preview: 'Попередній перегляд', - exportPipeline: 'Пайплайн експорту', - saveAndProcess: 'Зберегти та обробити', - editInfo: 'Редагувати інформацію', - backToDataSource: 'Назад до джерела даних', - useTemplate: 'Використовуйте цей конвеєр знань', - }, - deletePipeline: { - title: 'Ви впевнені, що видалили цей шаблон пайплайну?', - content: 'Видалення шаблону трубопроводу є незворотнім.', - }, - publishPipeline: { - success: { - message: 'Опубліковано портфель знань', - tip: 'Перейдіть до Документів, щоб додати або керувати документами.', - }, - error: { - message: 'Не вдалося опублікувати конвеєр знань', - }, - }, - publishTemplate: { - success: { - learnMore: 'Дізнатися більше', - message: 'Опубліковано шаблон пайплайну', - tip: 'Ви можете використовувати цей шаблон на сторінці створення.', - }, - error: { - message: 'Не вдалося опублікувати шаблон пайплайну', - }, - }, - exportDSL: { - successTip: 'Успішний експорт DSL воронки продажів', - errorTip: 'Не вдалося експортувати DSL пайплайну', - }, - details: { - structure: 'Структура', - structureTooltip: 'Структура фрагментів визначає, як документи розділяються та індексуються (пропонуючи режими «Загальні», «Батьки-дочірні елементи» та «Запитання й відповіді»), і є унікальною для кожної бази знань.', - createdBy: 'Автор: {{author}}', - }, - testRun: { - steps: { - dataSource: 'Джерело даних', - documentProcessing: 'Обробка документів', - }, - dataSource: { - localFiles: 'Локальні файли', - }, - notion: { - docTitle: 'Notion docs', - title: 'Обирайте сторінки Notion', - }, - title: 'Тестовий запуск', - tooltip: 'У режимі тестового запуску дозволяється імпортувати лише один документ за раз для полегшення налагодження та спостереження.', - }, - inputFieldPanel: { - uniqueInputs: { - title: 'Унікальні входи для кожного входу', - tooltip: 'Унікальні входи доступні лише для вибраного джерела даних та його подальших вузлів. Користувачам не потрібно буде заповнювати його при виборі інших джерел даних. На першому кроці з\'являться лише поля введення, на які посилаються змінні джерела даних (Джерело даних). Всі інші поля будуть показані на другому кроці (Обробка документів).', - }, - globalInputs: { - title: 'Глобальні входи для всіх входів', - tooltip: 'Глобальні входи є спільними для всіх вузлів. Користувачам потрібно буде заповнити їх при виборі будь-якого джерела даних. Наприклад, такі поля, як роздільник і максимальна довжина фрагмента, можуть бути однаково застосовані до кількох джерел даних. На першому кроці відображаються лише поля вводу, на які посилаються змінні джерела даних (джерело даних). Усі інші поля з\'являться на другому кроці (Обробка документів).', - }, - preview: { - stepOneTitle: 'Джерело даних', - stepTwoTitle: 'Обробляти документи', - }, - error: { - variableDuplicate: 'Ім\'я змінної вже існує. Будь ласка, виберіть іншу назву.', - }, - addInputField: 'Додати поле введення', - editInputField: 'Редагувати поле введення', - title: 'Поля для введення даних користувачем', - description: 'Поля введення користувача використовуються для визначення та збору змінних, необхідних під час виконання воронки продажів. Користувачі можуть налаштовувати тип поля та гнучко налаштовувати вхідне значення для задоволення потреб різних джерел даних або етапів обробки документів.', - }, - addDocuments: { - steps: { - processingDocuments: 'Оформлення документів', - processDocuments: 'Обробляти документи', - chooseDatasource: 'Виберіть джерело даних', - }, - stepOne: { - preview: 'Попередній перегляд', - }, - stepTwo: { - chunkSettings: 'Налаштування фрагментів', - previewChunks: 'Фрагменти попереднього перегляду', - }, - stepThree: { - learnMore: 'Дізнатися більше', - }, - characters: 'Символів', - backToDataSource: 'Джерело даних', - title: 'Додати документи', - selectOnlineDocumentTip: 'Обробити до {{count}} сторінок', - selectOnlineDriveTip: 'Обробляйте до {{count}} файлів, максимум {{fileSize}} МБ кожен', - }, - documentSettings: { - title: 'Параметри документа', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} сторінок', - }, - onlineDrive: { - breadcrumbs: { - allFiles: 'Всі файли', - searchPlaceholder: 'Пошук файлів...', - allBuckets: 'Усі сегменти хмарного сховища', - searchResult: 'Знайдено {{searchResultsLength}} елементів у папці "{{folderName}}"', - }, - emptyFolder: 'Ця папка порожня', - emptySearchResult: 'Предметів не знайдено', - resetKeywords: 'Скидання ключових слів', - notSupportedFileType: 'Цей тип файлу не підтримується', - notConnected: '{{name}} не підключено', - notConnectedTip: 'Щоб синхронізувати з {{name}}, спершу потрібно встановити з’єднання з {{name}}.', - }, - conversion: { - confirm: { - title: 'Підтвердження', - content: 'Ця дія є постійною. Ви не зможете повернутися до попереднього способу. Будь ласка, підтвердьте конвертацію.', - }, - title: 'Перетворення на конвеєр знань', - warning: 'Цю дію не можна скасувати.', - successMessage: 'Успішно перетворили набір даних у пайплайн', - errorMessage: 'Не вдалося перетворити набір даних у пайплайн', - descriptionChunk2: '— більш відкритий та гнучкий підхід з доступом до плагінів з нашого маркетплейсу. Це застосує новий метод обробки до всіх майбутніх документів.', - descriptionChunk1: 'Тепер ви можете перетворити наявну базу знань на використання Knowledge Pipeline для обробки документів', - }, - knowledgeDescription: 'Опис знань', - knowledgePermissions: 'Дозволи', - inputField: 'Поле введення', - knowledgeNameAndIcon: 'Знання ім\'я та піктограма', - knowledgeNameAndIconPlaceholder: 'Будь ласка, введіть назву Бази знань', - pipelineNameAndIcon: 'Назва та піктограма воронки продажів', - editPipelineInfo: 'Як редагувати інформацію про воронку продажів', - knowledgeDescriptionPlaceholder: 'Опишіть, що є в цій Базі знань. Детальний опис дозволяє штучному інтелекту більш точно отримати доступ до вмісту набору даних. Якщо значення порожнє, Dify використовуватиме стратегію удару за замовчуванням. (Необов\'язково)', - configurationTip: 'Налаштувати {{pluginName}}', -} - -export default translation diff --git a/web/i18n/uk-UA/dataset-settings.json b/web/i18n/uk-UA/dataset-settings.json new file mode 100644 index 0000000000..521644be1d --- /dev/null +++ b/web/i18n/uk-UA/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "Налаштування бази знань", + "desc": "Тут ви можете змінити властивості та методи роботи бази знань.", + "form": { + "name": "Назва бази знань", + "namePlaceholder": "Введіть назву бази знань", + "nameError": "Назва не може бути порожньою", + "desc": "Опис бази знань", + "descInfo": "Напишіть зрозумілий текстовий опис, щоб окреслити вміст бази знань. Цей опис використовуватиметься як основа для узгодження під час вибору з кількох баз знань для висновку.", + "descPlaceholder": "Опишіть, що міститься в цій базі знань. Детальний опис дозволяє AI своєчасно отримати доступ до вмісту бази знань. Якщо значення порожнє, Dify використовуватиме стратегію влучань за умовчанням.", + "descWrite": "Дізнайтеся, як написати хороший опис бази знань.", + "permissions": "Дозволи", + "permissionsOnlyMe": "Тільки я", + "permissionsAllMember": "Усі члени команди", + "indexMethod": "Метод індексації", + "indexMethodHighQuality": "Висока якість", + "indexMethodHighQualityTip": "Викликати модель Embedding для обробки, щоб забезпечити вищу точність під час запитів користувачів.", + "indexMethodEconomy": "Економний", + "indexMethodEconomyTip": "Використовуйте автономні векторні двигуни, індекси ключових слів тощо, щоб зменшити точність без використання токенів.", + "embeddingModel": "Модель вбудовування", + "embeddingModelTip": "Змінити вбудовану модель, будь ласка, перейдіть до ", + "embeddingModelTipLink": "Налаштування", + "retrievalSetting": { + "title": "Налаштування вибірки", + "learnMore": "Дізнатися більше", + "description": " про метод вибірки.", + "longDescription": " про метод вибірки, ви можете змінити це будь-коли в налаштуваннях бази знань.", + "method": "Метод отримання", + "multiModalTip": "Якщо модель вбудовування підтримує мультимодальність, будь ласка, оберіть мультимодальну модель для повторного ранжування для кращої продуктивності." + }, + "save": "Зберегти", + "me": "(Ви)", + "permissionsInvitedMembers": "Часткові члени команди", + "externalKnowledgeAPI": "API зовнішніх знань", + "externalKnowledgeID": "Зовнішній ідентифікатор знань", + "retrievalSettings": "Налаштування отримання", + "helpText": "Дізнайтеся, як написати хороший опис набору даних.", + "indexMethodChangeToEconomyDisabledTip": "Недоступно для пониження з HQ до ECO", + "upgradeHighQualityTip": "Після оновлення до режиму високої якості повернення до економного режиму недоступне", + "searchModel": "Пошук моделі", + "chunkStructure": { + "learnMore": "Дізнатися більше", + "description": "про структуру шматків.", + "title": "Структура шматків" + }, + "nameAndIcon": "Ім'я та піктограма", + "numberOfKeywords": "Кількість ключових слів", + "onSearchResults": "Жодні учасники не відповідають вашому пошуковому запиту.\nСпробуйте виконати пошук ще раз." + } +} diff --git a/web/i18n/uk-UA/dataset-settings.ts b/web/i18n/uk-UA/dataset-settings.ts deleted file mode 100644 index ffd909ed46..0000000000 --- a/web/i18n/uk-UA/dataset-settings.ts +++ /dev/null @@ -1,52 +0,0 @@ -const translation = { - title: 'Налаштування бази знань', - desc: 'Тут ви можете змінити властивості та методи роботи бази знань.', - form: { - name: 'Назва бази знань', - namePlaceholder: 'Введіть назву бази знань', - nameError: 'Назва не може бути порожньою', - desc: 'Опис бази знань', - descInfo: 'Напишіть зрозумілий текстовий опис, щоб окреслити вміст бази знань. Цей опис використовуватиметься як основа для узгодження під час вибору з кількох баз знань для висновку.', - descPlaceholder: 'Опишіть, що міститься в цій базі знань. Детальний опис дозволяє AI своєчасно отримати доступ до вмісту бази знань. Якщо значення порожнє, Dify використовуватиме стратегію влучань за умовчанням.', - descWrite: 'Дізнайтеся, як написати хороший опис бази знань.', - permissions: 'Дозволи', - permissionsOnlyMe: 'Тільки я', - permissionsAllMember: 'Усі члени команди', - indexMethod: 'Метод індексації', - indexMethodHighQuality: 'Висока якість', - indexMethodHighQualityTip: 'Викликати модель Embedding для обробки, щоб забезпечити вищу точність під час запитів користувачів.', - indexMethodEconomy: 'Економний', - indexMethodEconomyTip: 'Використовуйте автономні векторні двигуни, індекси ключових слів тощо, щоб зменшити точність без використання токенів.', - embeddingModel: 'Модель вбудовування', - embeddingModelTip: 'Змінити вбудовану модель, будь ласка, перейдіть до ', - embeddingModelTipLink: 'Налаштування', - retrievalSetting: { - title: 'Налаштування вибірки', - learnMore: 'Дізнатися більше', - description: ' про метод вибірки.', - longDescription: ' про метод вибірки, ви можете змінити це будь-коли в налаштуваннях бази знань.', - method: 'Метод отримання', - multiModalTip: 'Якщо модель вбудовування підтримує мультимодальність, будь ласка, оберіть мультимодальну модель для повторного ранжування для кращої продуктивності.', - }, - save: 'Зберегти', - me: '(Ви)', - permissionsInvitedMembers: 'Часткові члени команди', - externalKnowledgeAPI: 'API зовнішніх знань', - externalKnowledgeID: 'Зовнішній ідентифікатор знань', - retrievalSettings: 'Налаштування отримання', - helpText: 'Дізнайтеся, як написати хороший опис набору даних.', - indexMethodChangeToEconomyDisabledTip: 'Недоступно для пониження з HQ до ECO', - upgradeHighQualityTip: 'Після оновлення до режиму високої якості повернення до економного режиму недоступне', - searchModel: 'Пошук моделі', - chunkStructure: { - learnMore: 'Дізнатися більше', - description: 'про структуру шматків.', - title: 'Структура шматків', - }, - nameAndIcon: 'Ім\'я та піктограма', - numberOfKeywords: 'Кількість ключових слів', - onSearchResults: 'Жодні учасники не відповідають вашому пошуковому запиту.\nСпробуйте виконати пошук ще раз.', - }, -} - -export default translation diff --git a/web/i18n/uk-UA/dataset.json b/web/i18n/uk-UA/dataset.json new file mode 100644 index 0000000000..f31c29c630 --- /dev/null +++ b/web/i18n/uk-UA/dataset.json @@ -0,0 +1,249 @@ +{ + "knowledge": "Знання", + "documentCount": " док.", + "wordCount": " тис. слів", + "appCount": " пов'язаних додатків", + "createDataset": "Створити Знання", + "createDatasetIntro": "Імпортуйте власні текстові дані або записуйте дані в реальному часі через Webhook для покращення LLM-контексту.", + "deleteDatasetConfirmTitle": "Видалити це Знання?", + "deleteDatasetConfirmContent": "Видалення \"Знання\" є незворотнім. Користувачі більше не матимуть доступу до Знань, а всі конфігурації підказок і журнали будуть безповоротно видалені.", + "datasetUsedByApp": "Ці знання використовуються деякими додатками. Додатки більше не зможуть використовувати ці Знання, а всі конфігурації підказок та журнали будуть остаточно видалені.", + "datasetDeleted": "Знання видалено", + "datasetDeleteFailed": "Не вдалося видалити Знання", + "didYouKnow": "Чи знаєте ви?", + "intro1": "Знання можна інтегрувати до програми Dify ", + "intro2": "як контекст", + "intro3": ",", + "intro4": "або його ", + "intro5": "можна створити", + "intro6": " як автономний плагін індексу ChatGPT для публікації", + "unavailable": "Недоступно", + "datasets": "ЗНАННЯ", + "datasetsApi": "API", + "retrieval": { + "semantic_search": { + "title": "Векторний пошук", + "description": "Генерує вбудовування запитів і шукає фрагмент тексту, найбільш схожий на його векторне представлення." + }, + "full_text_search": { + "title": "Повнотекстовий пошук", + "description": "Індексує всі терміни в документі, дозволяючи користувачам шукати будь-який термін і отримувати відповідний фрагмент тексту, що містить цей термін." + }, + "hybrid_search": { + "title": "Гібридний пошук", + "description": "Виконуйте повнотекстовий пошук і векторний пошук одночасно, повторно ранжуючи, щоб вибрати найкращу відповідність на запит користувача. Необхідна конфігурація Rerank model API.", + "recommend": "Рекомендовано" + }, + "invertedIndex": {}, + "change": "Змінити", + "changeRetrievalMethod": "Змінити метод пошуку", + "keyword_search": { + "title": "Перевернутий індекс", + "description": "Перевернутий індекс — це структура, яка використовується для ефективного пошуку. Упорядкований за термінами, кожен термін вказує на документи або веб-сторінки, що містять його." + } + }, + "docsFailedNotice": "документи не вдалося проіндексувати", + "retry": "Повторити спробу", + "indexingTechnique": { + "high_quality": "ВЯ", + "economy": "ЕКО" + }, + "indexingMethod": { + "semantic_search": "ВЕКТОР", + "full_text_search": "ПОВНИЙ ТЕКСТ", + "hybrid_search": "ГІБРИД", + "invertedIndex": "ІНВЕРТОВАНИЙ" + }, + "mixtureHighQualityAndEconomicTip": "Модель перерангування потрібна для суміші високоякісних та економічних баз знань.", + "inconsistentEmbeddingModelTip": "Модель перерангування потрібна, якщо моделі вбудовування вибраних баз знань є несумісними.", + "retrievalSettings": "Налаштування пошуку", + "rerankSettings": "Налаштування перерангування", + "weightedScore": { + "title": "Зважена оцінка", + "description": "Регулюючи призначені ваги, ця стратегія перерангування визначає, чи надавати пріоритет семантичному чи ключовому відповідності.", + "semanticFirst": "Спочатку семантичний", + "keywordFirst": "Спочатку ключове слово", + "customized": "Налаштований", + "semantic": "Семантичний", + "keyword": "Ключове слово" + }, + "nTo1RetrievalLegacy": "N-до-1 пошук буде офіційно застарілим з вересня. Рекомендується використовувати найновіший багатошляховий пошук для отримання кращих результатів.", + "nTo1RetrievalLegacyLink": "Дізнатися більше", + "nTo1RetrievalLegacyLinkText": "N-до-1 пошук буде офіційно застарілим у вересні.", + "defaultRetrievalTip": "За замовчуванням використовується отримання кількома шляхами. Знання витягуються з кількох баз знань, а потім заново ранжуються.", + "editExternalAPIConfirmWarningContent": { + "front": "Цей API зовнішніх знань пов'язаний з", + "end": "зовнішні знання, і ця модифікація буде застосована до всіх них. Ви впевнені, що хочете зберегти цю зміну?" + }, + "editExternalAPIFormWarning": { + "end": "Зовнішні знання", + "front": "Цей зовнішній API пов'язаний з" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "front": "Видалити", + "end": "?" + }, + "content": { + "front": "Цей API зовнішніх знань пов'язаний з", + "end": "зовнішні знання. Видалення цього API призведе до втрати чинності всіх з них. Ви впевнені, що хочете видалити цей API?" + }, + "noConnectionContent": "Ви впевнені, що видалили цей API?" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "Виберіть API зовнішніх знань" + }, + "connectDatasetIntro": { + "content": { + "link": "Дізнайтеся, як створити зовнішній API", + "front": "Щоб підключитися до зовнішньої бази знань, спочатку потрібно створити зовнішній API. Будь ласка, уважно прочитайте та зверніться до", + "end": ". Потім знайдіть відповідний ідентифікатор знань і заповніть його у формі зліва. Якщо вся інформація вірна, він автоматично перейде до пошукового тесту в базі знань після натискання кнопки підключення." + }, + "title": "Як підключитися до зовнішньої бази знань", + "learnMore": "Дізнатися більше" + }, + "connectHelper": { + "helper2": "Підтримується лише функція пошуку", + "helper4": "Прочитайте довідкову документацію", + "helper3": ". Ми настійно рекомендуємо вам", + "helper5": "Уважно перед використанням цієї функції.", + "helper1": "Підключайтеся до зовнішніх баз знань через API та ідентифікатор бази знань. Наразі" + }, + "externalKnowledgeForm": { + "cancel": "Скасувати", + "connect": "Підключатися" + }, + "externalAPIForm": { + "encrypted": { + "end": "Технології.", + "front": "Ваш токен API буде зашифровано та збережено за допомогою" + }, + "name": "Ім'я", + "edit": "Редагувати", + "apiKey": "Ключ API", + "cancel": "Скасувати", + "save": "Рятувати", + "endpoint": "Кінцева точка API" + }, + "externalKnowledgeDescriptionPlaceholder": "Опишіть, що міститься в цій базі знань (необов'язково)", + "externalAPIPanelDocumentation": "Дізнайтеся, як створити API зовнішніх знань", + "externalAPIPanelTitle": "API зовнішніх знань", + "externalKnowledgeDescription": "Опис знань", + "noExternalKnowledge": "API зовнішніх знань поки що не існує, натисніть тут, щоб створити", + "externalTag": "Зовнішній", + "externalKnowledgeId": "Зовнішній ідентифікатор знань", + "externalAPI": "Зовнішній API", + "createExternalAPI": "Додавання зовнішнього API знань", + "createNewExternalAPI": "Створення нового API зовнішніх знань", + "externalKnowledgeName": "Зовнішнє найменування знань", + "externalKnowledgeNamePlaceholder": "Будь ласка, введіть назву бази знань", + "editExternalAPITooltipTitle": "ПОВ'ЯЗАНІ ЗНАННЯ", + "editExternalAPIFormTitle": "Редагування API зовнішніх знань", + "connectDataset": "Підключення до зовнішньої бази знань", + "learnHowToWriteGoodKnowledgeDescription": "Навчіться писати хороший опис знань", + "allExternalTip": "При використанні тільки зовнішніх знань користувач може вибрати, чи включати модель Rerank. Якщо цей параметр не увімкнено, отримані фрагменти будуть відсортовані на основі оцінок. Коли стратегії пошуку різних баз знань несумісні, це буде неточно.", + "mixtureInternalAndExternalTip": "Модель Rerank необхідна для поєднання внутрішніх і зовнішніх знань.", + "externalKnowledgeIdPlaceholder": "Будь ласка, введіть Knowledge ID", + "externalAPIPanelDescription": "API зовнішніх знань використовується для підключення до бази знань за межами Dify і отримання знань із цієї бази знань.", + "chunkingMode": { + "parentChild": "Батьки-діти", + "general": "Загальне", + "graph": "Графік", + "qa": "Питання та відповіді" + }, + "parentMode": { + "fullDoc": "Повний документ", + "paragraph": "Абзац" + }, + "batchAction": { + "delete": "Видалити", + "enable": "Вмикати", + "disable": "Вимкнути", + "archive": "Архів", + "selected": "Вибрані", + "cancel": "Скасувати" + }, + "preprocessDocument": "{{num}} Попередня обробка документів", + "documentsDisabled": "Документи {{num}} вимкнені - неактивні понад 30 днів", + "localDocs": "Локальні документи", + "enable": "Вмикати", + "allKnowledge": "Всі знання", + "allKnowledgeDescription": "Виберіть, щоб відобразити всі знання в цій робочій області. Тільки власник робочої області може керувати всіма знаннями.", + "metadata": { + "createMetadata": { + "back": "Назад", + "title": "Нові метадані", + "type": "Тип", + "namePlaceholder": "Додати назву метаданих", + "name": "Ім'я" + }, + "checkName": { + "empty": "Ім'я метаданих не може бути порожнім", + "invalid": "Ім'я метаданих може містити лише малі літери, цифри та підкреслення, і повинно починатися з малої літери", + "tooLong": "Назва метаданих не може перевищувати {{max}} символів" + }, + "batchEditMetadata": { + "editMetadata": "Редагувати метадані", + "editDocumentsNum": "Редагування {{num}} документів", + "applyToAllSelectDocument": "Застосувати до всіх вибраних документів", + "multipleValue": "Кілька значень", + "applyToAllSelectDocumentTip": "Автоматично створювати всю редаговану та нову метадані для всіх вибраних документів, інакше редагування метаданих буде застосовуватися тільки до документів, які мають їх." + }, + "selectMetadata": { + "manageAction": "Керувати", + "search": "Пошукова метаінформація", + "newAction": "Нові метадані" + }, + "datasetMetadata": { + "namePlaceholder": "Назва метаданих", + "rename": "Перейменувати", + "disabled": "Вимкнено", + "name": "Ім'я", + "values": "{{num}} Значення", + "builtIn": "Вбудований", + "addMetaData": "Додати метадані", + "description": "Ви можете керувати всіма метаданими в цьому знанні тут. Модифікації будуть синхронізовані з кожним документом.", + "builtInDescription": "Вбудовані метадані автоматично витягуються та генеруються. Вони повинні бути активовані перед використанням і не можуть бути відредаговані.", + "deleteTitle": "Підтвердьте, щоб видалити", + "deleteContent": "Ви впевнені, що хочете видалити метадані \"{{name}}\"?" + }, + "documentMetadata": { + "documentInformation": "Інформація про документ", + "technicalParameters": "Технічні параметри", + "startLabeling": "Почати маркування", + "metadataToolTip": "Метадані слугують критичною фільтрацією, що підвищує точність і актуальність витягування інформації. Ви можете змінити та додати метадані для цього документа тут." + }, + "metadata": "Метадані", + "chooseTime": "Виберіть час...", + "addMetadata": "Додати метадані" + }, + "embeddingModelNotAvailable": "Модель вбудовування недоступна.", + "updated": "Оновлено", + "createFromPipeline": "Створюйте на основі Knowledge Pipeline", + "externalKnowledgeBase": "Зовнішня база знань", + "serviceApi": { + "card": { + "title": "API бекенд-сервіс", + "apiReference": "Посилання на API", + "apiKey": "Ключ API", + "endpoint": "Кінцева точка API сервісу" + }, + "disabled": "Вимкнено", + "enabled": "У службі", + "title": "Сервісний API" + }, + "docAllEnabled_one": "{{count}} документ увімкнено", + "docAllEnabled_other": "Усі документи {{count}} увімкнено", + "partialEnabled_one": "Всього {{count}} документів, доступно {{num}}", + "partialEnabled_other": "Всього {{count}} документів, доступно {{num}}", + "cornerLabel": { + "unavailable": "Немає у наявності", + "pipeline": "Трубопровід" + }, + "multimodal": "Мультимодальний", + "imageUploader": { + "button": "Перетягніть файл або папку, або", + "browse": "Перегляд", + "tip": "{{supportTypes}} (Макс {{batchCount}}, по {{size}} МБ кожен)" + } +} diff --git a/web/i18n/uk-UA/dataset.ts b/web/i18n/uk-UA/dataset.ts deleted file mode 100644 index 991508cbf6..0000000000 --- a/web/i18n/uk-UA/dataset.ts +++ /dev/null @@ -1,254 +0,0 @@ -const translation = { - knowledge: 'Знання', - // Скорочення від 'документів' - documentCount: ' док.', - wordCount: ' тис. слів', - appCount: ' пов\'язаних додатків', - createDataset: 'Створити Знання', - createDatasetIntro: 'Імпортуйте власні текстові дані або записуйте дані в реальному часі через Webhook для покращення LLM-контексту.', - deleteDatasetConfirmTitle: 'Видалити це Знання?', - deleteDatasetConfirmContent: - 'Видалення "Знання" є незворотнім. Користувачі більше не матимуть доступу до Знань, а всі конфігурації підказок і журнали будуть безповоротно видалені.', - datasetUsedByApp: 'Ці знання використовуються деякими додатками. Додатки більше не зможуть використовувати ці Знання, а всі конфігурації підказок та журнали будуть остаточно видалені.', - datasetDeleted: 'Знання видалено', - datasetDeleteFailed: 'Не вдалося видалити Знання', - didYouKnow: 'Чи знаєте ви?', - intro1: 'Знання можна інтегрувати до програми Dify ', - intro2: 'як контекст', - intro3: ',', - intro4: 'або його ', - intro5: 'можна створити', - intro6: ' як автономний плагін індексу ChatGPT для публікації', - unavailable: 'Недоступно', - datasets: 'ЗНАННЯ', - datasetsApi: 'API', - retrieval: { - semantic_search: { - title: 'Векторний пошук', - description: 'Генерує вбудовування запитів і шукає фрагмент тексту, найбільш схожий на його векторне представлення.', - }, - full_text_search: { - title: 'Повнотекстовий пошук', - description: 'Індексує всі терміни в документі, дозволяючи користувачам шукати будь-який термін і отримувати відповідний фрагмент тексту, що містить цей термін.', - }, - hybrid_search: { - title: 'Гібридний пошук', - description: 'Виконуйте повнотекстовий пошук і векторний пошук одночасно, повторно ранжуючи, щоб вибрати найкращу відповідність на запит користувача. Необхідна конфігурація Rerank model API.', - recommend: 'Рекомендовано', - }, - invertedIndex: { - }, - change: 'Змінити', - changeRetrievalMethod: 'Змінити метод пошуку', - keyword_search: { - title: 'Перевернутий індекс', - description: 'Перевернутий індекс — це структура, яка використовується для ефективного пошуку. Упорядкований за термінами, кожен термін вказує на документи або веб-сторінки, що містять його.', - }, - }, - docsFailedNotice: 'документи не вдалося проіндексувати', - retry: 'Повторити спробу', - indexingTechnique: { - high_quality: 'ВЯ', - economy: 'ЕКО', - }, - indexingMethod: { - semantic_search: 'ВЕКТОР', - full_text_search: 'ПОВНИЙ ТЕКСТ', - hybrid_search: 'ГІБРИД', - invertedIndex: 'ІНВЕРТОВАНИЙ', - }, - mixtureHighQualityAndEconomicTip: 'Модель перерангування потрібна для суміші високоякісних та економічних баз знань.', - inconsistentEmbeddingModelTip: 'Модель перерангування потрібна, якщо моделі вбудовування вибраних баз знань є несумісними.', - retrievalSettings: 'Налаштування пошуку', - rerankSettings: 'Налаштування перерангування', - weightedScore: { - title: 'Зважена оцінка', - description: 'Регулюючи призначені ваги, ця стратегія перерангування визначає, чи надавати пріоритет семантичному чи ключовому відповідності.', - semanticFirst: 'Спочатку семантичний', - keywordFirst: 'Спочатку ключове слово', - customized: 'Налаштований', - semantic: 'Семантичний', - keyword: 'Ключове слово', - }, - nTo1RetrievalLegacy: 'N-до-1 пошук буде офіційно застарілим з вересня. Рекомендується використовувати найновіший багатошляховий пошук для отримання кращих результатів.', - nTo1RetrievalLegacyLink: 'Дізнатися більше', - nTo1RetrievalLegacyLinkText: 'N-до-1 пошук буде офіційно застарілим у вересні.', - defaultRetrievalTip: 'За замовчуванням використовується отримання кількома шляхами. Знання витягуються з кількох баз знань, а потім заново ранжуються.', - editExternalAPIConfirmWarningContent: { - front: 'Цей API зовнішніх знань пов\'язаний з', - end: 'зовнішні знання, і ця модифікація буде застосована до всіх них. Ви впевнені, що хочете зберегти цю зміну?', - }, - editExternalAPIFormWarning: { - end: 'Зовнішні знання', - front: 'Цей зовнішній API пов\'язаний з', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - front: 'Видалити', - end: '?', - }, - content: { - front: 'Цей API зовнішніх знань пов\'язаний з', - end: 'зовнішні знання. Видалення цього API призведе до втрати чинності всіх з них. Ви впевнені, що хочете видалити цей API?', - }, - noConnectionContent: 'Ви впевнені, що видалили цей API?', - }, - selectExternalKnowledgeAPI: { - placeholder: 'Виберіть API зовнішніх знань', - }, - connectDatasetIntro: { - content: { - link: 'Дізнайтеся, як створити зовнішній API', - front: 'Щоб підключитися до зовнішньої бази знань, спочатку потрібно створити зовнішній API. Будь ласка, уважно прочитайте та зверніться до', - end: '. Потім знайдіть відповідний ідентифікатор знань і заповніть його у формі зліва. Якщо вся інформація вірна, він автоматично перейде до пошукового тесту в базі знань після натискання кнопки підключення.', - }, - title: 'Як підключитися до зовнішньої бази знань', - learnMore: 'Дізнатися більше', - }, - connectHelper: { - helper2: 'Підтримується лише функція пошуку', - helper4: 'Прочитайте довідкову документацію', - helper3: '. Ми настійно рекомендуємо вам', - helper5: 'Уважно перед використанням цієї функції.', - helper1: 'Підключайтеся до зовнішніх баз знань через API та ідентифікатор бази знань. Наразі', - }, - externalKnowledgeForm: { - cancel: 'Скасувати', - connect: 'Підключатися', - }, - externalAPIForm: { - encrypted: { - end: 'Технології.', - front: 'Ваш токен API буде зашифровано та збережено за допомогою', - }, - name: 'Ім\'я', - edit: 'Редагувати', - apiKey: 'Ключ API', - cancel: 'Скасувати', - save: 'Рятувати', - endpoint: 'Кінцева точка API', - }, - externalKnowledgeDescriptionPlaceholder: 'Опишіть, що міститься в цій базі знань (необов\'язково)', - externalAPIPanelDocumentation: 'Дізнайтеся, як створити API зовнішніх знань', - externalAPIPanelTitle: 'API зовнішніх знань', - externalKnowledgeDescription: 'Опис знань', - noExternalKnowledge: 'API зовнішніх знань поки що не існує, натисніть тут, щоб створити', - externalTag: 'Зовнішній', - externalKnowledgeId: 'Зовнішній ідентифікатор знань', - externalAPI: 'Зовнішній API', - createExternalAPI: 'Додавання зовнішнього API знань', - createNewExternalAPI: 'Створення нового API зовнішніх знань', - externalKnowledgeName: 'Зовнішнє найменування знань', - externalKnowledgeNamePlaceholder: 'Будь ласка, введіть назву бази знань', - editExternalAPITooltipTitle: 'ПОВ\'ЯЗАНІ ЗНАННЯ', - editExternalAPIFormTitle: 'Редагування API зовнішніх знань', - connectDataset: 'Підключення до зовнішньої бази знань', - learnHowToWriteGoodKnowledgeDescription: 'Навчіться писати хороший опис знань', - allExternalTip: 'При використанні тільки зовнішніх знань користувач може вибрати, чи включати модель Rerank. Якщо цей параметр не увімкнено, отримані фрагменти будуть відсортовані на основі оцінок. Коли стратегії пошуку різних баз знань несумісні, це буде неточно.', - mixtureInternalAndExternalTip: 'Модель Rerank необхідна для поєднання внутрішніх і зовнішніх знань.', - externalKnowledgeIdPlaceholder: 'Будь ласка, введіть Knowledge ID', - externalAPIPanelDescription: 'API зовнішніх знань використовується для підключення до бази знань за межами Dify і отримання знань із цієї бази знань.', - chunkingMode: { - parentChild: 'Батьки-діти', - general: 'Загальне', - graph: 'Графік', - qa: 'Питання та відповіді', - }, - parentMode: { - fullDoc: 'Повний документ', - paragraph: 'Абзац', - }, - batchAction: { - delete: 'Видалити', - enable: 'Вмикати', - disable: 'Вимкнути', - archive: 'Архів', - selected: 'Вибрані', - cancel: 'Скасувати', - }, - preprocessDocument: '{{num}} Попередня обробка документів', - documentsDisabled: 'Документи {{num}} вимкнені - неактивні понад 30 днів', - localDocs: 'Локальні документи', - enable: 'Вмикати', - allKnowledge: 'Всі знання', - allKnowledgeDescription: 'Виберіть, щоб відобразити всі знання в цій робочій області. Тільки власник робочої області може керувати всіма знаннями.', - metadata: { - createMetadata: { - back: 'Назад', - title: 'Нові метадані', - type: 'Тип', - namePlaceholder: 'Додати назву метаданих', - name: 'Ім\'я', - }, - checkName: { - empty: 'Ім\'я метаданих не може бути порожнім', - invalid: 'Ім\'я метаданих може містити лише малі літери, цифри та підкреслення, і повинно починатися з малої літери', - tooLong: 'Назва метаданих не може перевищувати {{max}} символів', - }, - batchEditMetadata: { - editMetadata: 'Редагувати метадані', - editDocumentsNum: 'Редагування {{num}} документів', - applyToAllSelectDocument: 'Застосувати до всіх вибраних документів', - multipleValue: 'Кілька значень', - applyToAllSelectDocumentTip: 'Автоматично створювати всю редаговану та нову метадані для всіх вибраних документів, інакше редагування метаданих буде застосовуватися тільки до документів, які мають їх.', - }, - selectMetadata: { - manageAction: 'Керувати', - search: 'Пошукова метаінформація', - newAction: 'Нові метадані', - }, - datasetMetadata: { - namePlaceholder: 'Назва метаданих', - rename: 'Перейменувати', - disabled: 'Вимкнено', - name: 'Ім\'я', - values: '{{num}} Значення', - builtIn: 'Вбудований', - addMetaData: 'Додати метадані', - description: 'Ви можете керувати всіма метаданими в цьому знанні тут. Модифікації будуть синхронізовані з кожним документом.', - builtInDescription: 'Вбудовані метадані автоматично витягуються та генеруються. Вони повинні бути активовані перед використанням і не можуть бути відредаговані.', - deleteTitle: 'Підтвердьте, щоб видалити', - deleteContent: 'Ви впевнені, що хочете видалити метадані "{{name}}"?', - }, - documentMetadata: { - documentInformation: 'Інформація про документ', - technicalParameters: 'Технічні параметри', - startLabeling: 'Почати маркування', - metadataToolTip: 'Метадані слугують критичною фільтрацією, що підвищує точність і актуальність витягування інформації. Ви можете змінити та додати метадані для цього документа тут.', - }, - metadata: 'Метадані', - chooseTime: 'Виберіть час...', - addMetadata: 'Додати метадані', - }, - embeddingModelNotAvailable: 'Модель вбудовування недоступна.', - updated: 'Оновлено', - createFromPipeline: 'Створюйте на основі Knowledge Pipeline', - externalKnowledgeBase: 'Зовнішня база знань', - serviceApi: { - card: { - title: 'API бекенд-сервіс', - apiReference: 'Посилання на API', - apiKey: 'Ключ API', - endpoint: 'Кінцева точка API сервісу', - }, - disabled: 'Вимкнено', - enabled: 'У службі', - title: 'Сервісний API', - }, - docAllEnabled_one: '{{count}} документ увімкнено', - docAllEnabled_other: 'Усі документи {{count}} увімкнено', - partialEnabled_one: 'Всього {{count}} документів, доступно {{num}}', - partialEnabled_other: 'Всього {{count}} документів, доступно {{num}}', - cornerLabel: { - unavailable: 'Немає у наявності', - pipeline: 'Трубопровід', - }, - multimodal: 'Мультимодальний', - imageUploader: { - button: 'Перетягніть файл або папку, або', - browse: 'Перегляд', - tip: '{{supportTypes}} (Макс {{batchCount}}, по {{size}} МБ кожен)', - }, -} - -export default translation diff --git a/web/i18n/uk-UA/education.json b/web/i18n/uk-UA/education.json new file mode 100644 index 0000000000..be01640e9a --- /dev/null +++ b/web/i18n/uk-UA/education.json @@ -0,0 +1,74 @@ +{ + "toVerifiedTip": { + "end": "для професійного плану Dify.", + "coupon": "ексклюзивний купон 100%", + "front": "Ви тепер маєте право на статус перевіреної освіти. Будь ласка, введіть свою інформацію про освіту нижче, щоб завершити процес і отримати" + }, + "form": { + "schoolName": { + "title": "Ваша назва школи", + "placeholder": "Введіть офіційну, повну назву вашої школи" + }, + "schoolRole": { + "option": { + "administrator": "Шкільний адміністратор", + "teacher": "Вчитель", + "student": "Студент" + }, + "title": "Ваша роль у школі" + }, + "terms": { + "desc": { + "and": "і", + "end": ". Надсилаючи:", + "privacyPolicy": "Політика конфіденційності", + "termsOfService": "Умови обслуговування", + "front": "Ваша інформація та використання статусу Перевірено в освіті підлягають нашому" + }, + "option": { + "inSchool": "Я підтверджую, що я зареєстрований або працюю в зазначеній установі. Dify може вимагати підтвердження моєї реєстрації/трудової зайнятості. Якщо я неправильно представлю свою кваліфікацію, я погоджуюся сплатити будь-які збори, які спочатку були скасовані на основі мого навчального статусу.", + "age": "Я підтверджую, що мені щонайменше 18 років." + }, + "title": "Умови та угоди" + } + }, + "submitError": "Відправка форми не вдалася. Будь ласка, спробуйте ще раз пізніше.", + "rejectTitle": "Ваша перевірка освіти Dify була відхилена", + "submit": "Надіслати", + "successTitle": "Ви отримали перевірене освіту Dify", + "emailLabel": "Ваш поточний електронний лист", + "rejectContent": "На жаль, ви не відповідаєте вимогам для статусу Education Verified і тому не можете отримати ексклюзивний купон на 100% для професійного плану Dify, якщо використовуєте цю електронну адресу.", + "toVerified": "Отримайте підтвердження освіти", + "learn": "Дізнайтеся, як перевірити освіту", + "currentSigned": "В даний момент ви підписані як", + "successContent": "Ми видали купон на 100% знижку на професійний план Dify для вашого акаунту. Купон дійсний протягом одного року, будь ласка, скористайтеся ним протягом терміну дії.", + "notice": { + "expired": { + "summary": { + "line2": "Однак ви більше не маєте права на нові купони на знижку на освіту.", + "line1": "Ви все ще можете отримати доступ до Dify і використовувати його." + }, + "title": "Ваш статус освіти втратив чинність" + }, + "isAboutToExpire": { + "summary": "Не хвилюйтеся — це не вплине на вашу поточну підписку, але ви не отримаєте знижку на освіту при її поновленні, якщо знову не підтвердите свій статус.", + "title": "Статус вашої освіти закінчиться {{date}}" + }, + "stillInEducation": { + "title": "Все ще навчаєшся?", + "expired": "Перевірте ще раз зараз, щоб отримати новий купон на наступний навчальний рік. Ми додамо його до вашого облікового запису, і ви зможете скористатися ним для наступного оновлення.", + "isAboutToExpire": "Перевірте ще раз зараз, щоб отримати новий купон на наступний навчальний рік. Він буде збережений у вашому обліковому записі та готовий до використання при наступному поновленні." + }, + "alreadyGraduated": { + "title": "Вже випустилися?", + "expired": "Не соромтеся оновлюватися в будь-який час, щоб отримати повний доступ до платних функцій.", + "isAboutToExpire": "Ваша поточна підписка залишиться активною. Коли вона закінчиться, ви будете переведені на план Sandbox, або ви можете в будь-який момент пройти на повну підписку для відновлення доступу до платних функцій." + }, + "action": { + "upgrade": "Оновити", + "dismiss": "Відхилити", + "reVerify": "Перевірити ще раз" + }, + "dateFormat": "ДД/ММ/РРРР" + } +} diff --git a/web/i18n/uk-UA/education.ts b/web/i18n/uk-UA/education.ts deleted file mode 100644 index 3cde4bb5b7..0000000000 --- a/web/i18n/uk-UA/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerifiedTip: { - end: 'для професійного плану Dify.', - coupon: 'ексклюзивний купон 100%', - front: 'Ви тепер маєте право на статус перевіреної освіти. Будь ласка, введіть свою інформацію про освіту нижче, щоб завершити процес і отримати', - }, - form: { - schoolName: { - title: 'Ваша назва школи', - placeholder: 'Введіть офіційну, повну назву вашої школи', - }, - schoolRole: { - option: { - administrator: 'Шкільний адміністратор', - teacher: 'Вчитель', - student: 'Студент', - }, - title: 'Ваша роль у школі', - }, - terms: { - desc: { - and: 'і', - end: '. Надсилаючи:', - privacyPolicy: 'Політика конфіденційності', - termsOfService: 'Умови обслуговування', - front: 'Ваша інформація та використання статусу Перевірено в освіті підлягають нашому', - }, - option: { - inSchool: 'Я підтверджую, що я зареєстрований або працюю в зазначеній установі. Dify може вимагати підтвердження моєї реєстрації/трудової зайнятості. Якщо я неправильно представлю свою кваліфікацію, я погоджуюся сплатити будь-які збори, які спочатку були скасовані на основі мого навчального статусу.', - age: 'Я підтверджую, що мені щонайменше 18 років.', - }, - title: 'Умови та угоди', - }, - }, - submitError: 'Відправка форми не вдалася. Будь ласка, спробуйте ще раз пізніше.', - rejectTitle: 'Ваша перевірка освіти Dify була відхилена', - submit: 'Надіслати', - successTitle: 'Ви отримали перевірене освіту Dify', - emailLabel: 'Ваш поточний електронний лист', - rejectContent: 'На жаль, ви не відповідаєте вимогам для статусу Education Verified і тому не можете отримати ексклюзивний купон на 100% для професійного плану Dify, якщо використовуєте цю електронну адресу.', - toVerified: 'Отримайте підтвердження освіти', - learn: 'Дізнайтеся, як перевірити освіту', - currentSigned: 'В даний момент ви підписані як', - successContent: 'Ми видали купон на 100% знижку на професійний план Dify для вашого акаунту. Купон дійсний протягом одного року, будь ласка, скористайтеся ним протягом терміну дії.', - notice: { - expired: { - summary: { - line2: 'Однак ви більше не маєте права на нові купони на знижку на освіту.', - line1: 'Ви все ще можете отримати доступ до Dify і використовувати його.', - }, - title: 'Ваш статус освіти втратив чинність', - }, - isAboutToExpire: { - summary: 'Не хвилюйтеся — це не вплине на вашу поточну підписку, але ви не отримаєте знижку на освіту при її поновленні, якщо знову не підтвердите свій статус.', - title: 'Статус вашої освіти закінчиться {{date}}', - }, - stillInEducation: { - title: 'Все ще навчаєшся?', - expired: 'Перевірте ще раз зараз, щоб отримати новий купон на наступний навчальний рік. Ми додамо його до вашого облікового запису, і ви зможете скористатися ним для наступного оновлення.', - isAboutToExpire: 'Перевірте ще раз зараз, щоб отримати новий купон на наступний навчальний рік. Він буде збережений у вашому обліковому записі та готовий до використання при наступному поновленні.', - }, - alreadyGraduated: { - title: 'Вже випустилися?', - expired: 'Не соромтеся оновлюватися в будь-який час, щоб отримати повний доступ до платних функцій.', - isAboutToExpire: 'Ваша поточна підписка залишиться активною. Коли вона закінчиться, ви будете переведені на план Sandbox, або ви можете в будь-який момент пройти на повну підписку для відновлення доступу до платних функцій.', - }, - action: { - upgrade: 'Оновити', - dismiss: 'Відхилити', - reVerify: 'Перевірити ще раз', - }, - dateFormat: 'ДД/ММ/РРРР', - }, -} - -export default translation diff --git a/web/i18n/uk-UA/explore.json b/web/i18n/uk-UA/explore.json new file mode 100644 index 0000000000..fdd0fdf190 --- /dev/null +++ b/web/i18n/uk-UA/explore.json @@ -0,0 +1,42 @@ +{ + "title": "Досліджувати", + "sidebar": { + "discovery": "Відкриття", + "chat": "Чат", + "workspace": "Робочий простір", + "action": { + "pin": "Закріпити", + "unpin": "Відкріпити", + "rename": "Перейменувати", + "delete": "Видалити" + }, + "delete": { + "title": "Видалити додаток", + "content": "Ви впевнені, що хочете видалити цю програму?" + } + }, + "apps": { + "title": "Вивчайте програми від Dify", + "description": "Використовуйте ці шаблони миттєво або налаштуйте власні програми на основі шаблонів.", + "allCategories": "Рекомендовані" + }, + "appCard": { + "addToWorkspace": "Додати до робочого простору", + "customize": "Налаштувати" + }, + "appCustomize": { + "title": "Створити додаток з {{name}}", + "subTitle": "Значок програми та назва", + "nameRequired": "Назва програми обов’язкова" + }, + "category": { + "Assistant": "Помічник", + "Writing": "Написання", + "Translate": "Переклад", + "Programming": "Програмування", + "HR": "HR", + "Workflow": "Робочий процес", + "Agent": "Агент", + "Entertainment": "Розваги" + } +} diff --git a/web/i18n/uk-UA/explore.ts b/web/i18n/uk-UA/explore.ts deleted file mode 100644 index 0bb03af719..0000000000 --- a/web/i18n/uk-UA/explore.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - title: 'Досліджувати', - sidebar: { - discovery: 'Відкриття', - chat: 'Чат', - workspace: 'Робочий простір', - action: { - pin: 'Закріпити', - unpin: 'Відкріпити', - rename: 'Перейменувати', - delete: 'Видалити', - }, - delete: { - title: 'Видалити додаток', - content: 'Ви впевнені, що хочете видалити цю програму?', - }, - }, - apps: { - title: 'Вивчайте програми від Dify', - description: 'Використовуйте ці шаблони миттєво або налаштуйте власні програми на основі шаблонів.', - allCategories: 'Рекомендовані', - }, - appCard: { - addToWorkspace: 'Додати до робочого простору', - customize: 'Налаштувати', - }, - appCustomize: { - title: 'Створити додаток з {{name}}', - subTitle: 'Значок програми та назва', - nameRequired: 'Назва програми обов’язкова', - }, - category: { - Assistant: 'Помічник', - Writing: 'Написання', - Translate: 'Переклад', - Programming: 'Програмування', - HR: 'HR', - Workflow: 'Робочий процес', - Agent: 'Агент', - Entertainment: 'Розваги', - }, -} - -export default translation diff --git a/web/i18n/uk-UA/layout.json b/web/i18n/uk-UA/layout.json new file mode 100644 index 0000000000..907fcc11ad --- /dev/null +++ b/web/i18n/uk-UA/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "collapseSidebar": "Згорнути бічну панель", + "expandSidebar": "Розгорнути бічну панель" + } +} diff --git a/web/i18n/uk-UA/layout.ts b/web/i18n/uk-UA/layout.ts deleted file mode 100644 index bf77f4e7e9..0000000000 --- a/web/i18n/uk-UA/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - collapseSidebar: 'Згорнути бічну панель', - expandSidebar: 'Розгорнути бічну панель', - }, -} - -export default translation diff --git a/web/i18n/uk-UA/login.json b/web/i18n/uk-UA/login.json new file mode 100644 index 0000000000..47b4068287 --- /dev/null +++ b/web/i18n/uk-UA/login.json @@ -0,0 +1,124 @@ +{ + "pageTitle": "Привіт, почнемо!👋", + "welcome": "Ласкаво просимо до Dify, будь ласка, увійдіть, щоб продовжити.", + "email": "Адреса електронної пошти", + "emailPlaceholder": "Ваша електронна пошта", + "password": "Пароль", + "passwordPlaceholder": "Ваш пароль", + "name": "Ім'я користувача", + "namePlaceholder": "Ваше ім'я користувача", + "forget": "Забули пароль?", + "signBtn": "Вхід", + "installBtn": "Налаштувати", + "setAdminAccount": "Налаштування облікового запису адміністратора", + "setAdminAccountDesc": "Максимальні привілеї для облікового запису адміністратора, які можна використовувати для створення програм, керування постачальниками LLM тощо.", + "createAndSignIn": "Створити та увійти", + "oneMoreStep": "Ще один крок", + "createSample": "На основі цієї інформації ми створимо для вас зразок програми", + "invitationCode": "Код запрошення", + "invitationCodePlaceholder": "Ваш код запрошення", + "interfaceLanguage": "Мова інтерфейсу", + "timezone": "Часовий пояс", + "go": "Перейти до Dify", + "sendUsMail": "Надішліть нам своє представлення, і ми обробимо запит на запрошення.", + "acceptPP": "Я прочитав і приймаю політику конфіденційності", + "reset": "Будь ласка, виконайте таку команду, щоб скинути пароль", + "withGitHub": "Продовжити з GitHub", + "withGoogle": "Продовжити з Google", + "rightTitle": "Розкрийте весь потенціал LLM", + "rightDesc": "З легкістю створюйте візуально привабливі, функціональні та вдосконалювані програми зі штучним інтелектом.", + "tos": "Умови обслуговування", + "pp": "Політика конфіденційності", + "tosDesc": "Реєструючись, ви приймаєте наші", + "goToInit": "Якщо ви ще не ініціалізували обліковий запис, перейдіть на сторінку ініціалізації", + "dontHave": "Не маєте?", + "invalidInvitationCode": "Недійсний код запрошення", + "accountAlreadyInited": "Обліковий запис уже ініціалізовано", + "forgotPassword": "Забули пароль?", + "resetLinkSent": "Посилання для скидання надіслано", + "sendResetLink": "Надіслати посилання для скидання", + "backToSignIn": "Повернутися до входу", + "forgotPasswordDesc": "Будь ласка, введіть свою електронну адресу, щоб скинути пароль. Ми надішлемо вам електронного листа з інструкціями щодо скидання пароля.", + "checkEmailForResetLink": "Будь ласка, перевірте свою електронну пошту на наявність посилання для скидання пароля. Якщо протягом кількох хвилин не з’явиться, перевірте папку зі спамом.", + "passwordChanged": "Увійдіть зараз", + "changePassword": "Змінити пароль", + "changePasswordTip": "Будь ласка, введіть новий пароль для свого облікового запису", + "invalidToken": "Недійсний або прострочений токен", + "confirmPassword": "Підтвердити пароль", + "confirmPasswordPlaceholder": "Підтвердьте новий пароль", + "passwordChangedTip": "Ваш пароль було успішно змінено", + "error": { + "emailEmpty": "Адреса електронної пошти обов'язкова", + "emailInValid": "Введіть дійсну адресу електронної пошти", + "nameEmpty": "Ім'я обов'язкове", + "passwordEmpty": "Пароль є обов’язковим", + "passwordInvalid": "Пароль повинен містити літери та цифри, а довжина повинна бути більшою за 8", + "passwordLengthInValid": "Пароль повинен бути не менше 8 символів", + "registrationNotAllowed": "Аккаунт не знайдено. Будь ласка, зверніться до адміністратора системи для реєстрації.", + "invalidEmailOrPassword": "Невірний електронний лист або пароль." + }, + "license": { + "tip": "Перед запуском Dify Community Edition ознайомтеся з ліцензією з відкритим кодом на GitHub", + "link": "Ліцензія з відкритим кодом" + }, + "join": "Приєднуйтесь", + "joinTipStart": "Запрошуємо вас приєднатися", + "joinTipEnd": "команда Dify", + "invalid": "Посилання застаріло", + "explore": "Досліджуйте Dify", + "activatedTipStart": "Ви приєдналися до", + "activatedTipEnd": "команда", + "activated": "Увійти зараз", + "adminInitPassword": "Пароль ініціалізації адміністратора", + "validate": "Перевірити", + "checkCode": { + "didNotReceiveCode": "Не отримали код?", + "invalidCode": "Невірний код", + "resend": "Відправити", + "verificationCodePlaceholder": "Введіть 6-значний код", + "emptyCode": "Код обов'язковий", + "checkYourEmail": "Перевірте свою електронну пошту", + "verify": "Перевірити", + "verificationCode": "Код підтвердження", + "useAnotherMethod": "Використовуйте інший спосіб", + "validTime": "Майте на увазі, що код дійсний протягом 5 хвилин", + "tipsPrefix": "Ми відправляємо код підтвердження на" + }, + "back": "Задній", + "backToLogin": "Назад до входу", + "or": "АБО", + "usePassword": "Використовуйте пароль", + "sendVerificationCode": "Надішліть код підтвердження", + "changePasswordBtn": "Встановіть пароль", + "noLoginMethod": "Метод автентифікації не налаштовано", + "withSSO": "Продовжуйте працювати з SSW", + "useVerificationCode": "Використовуйте код підтвердження", + "setYourAccount": "Налаштуйте свій обліковий запис", + "enterYourName": "Будь ласка, введіть своє ім'я користувача", + "continueWithCode": "Продовжити з кодом", + "noLoginMethodTip": "Будь ласка, зверніться до адміністратора системи, щоб додати метод автентифікації.", + "resetPasswordDesc": "Введіть адресу електронної пошти, яку ви використовували для реєстрації на Dify, і ми надішлемо вам електронний лист для скидання пароля.", + "resetPassword": "Скинути пароль", + "licenseLostTip": "Не вдалося підключити сервер ліцензій Dify. Будь ласка, зверніться до свого адміністратора, щоб продовжити користуватися Dify.", + "licenseExpired": "Термін дії ліцензії минув", + "licenseInactive": "Ліцензія неактивна", + "licenseLost": "Ліцензію втрачено", + "licenseInactiveTip": "Ліцензія Dify Enterprise для вашої робочої області неактивна. Будь ласка, зверніться до свого адміністратора, щоб продовжити користуватися Dify.", + "licenseExpiredTip": "Термін дії ліцензії Dify Enterprise для вашого робочого простору закінчився. Будь ласка, зверніться до свого адміністратора, щоб продовжити користуватися Dify.", + "webapp": { + "noLoginMethod": "Метод аутентифікації не налаштований для веб-додатку", + "noLoginMethodTip": "Будь ласка, зв'яжіться з адміністратором системи, щоб додати метод автентифікації.", + "disabled": "Аутентифікацію вебдодатка вимкнено. Будь ласка, зв'яжіться з адміністратором системи, щоб увімкнути її. Ви можете спробувати використовувати додаток безпосередньо.", + "login": "Увійти" + }, + "signup": { + "signUp": "Реєстрація", + "signIn": "Увійти", + "haveAccount": "Вже маєте обліковий запис?", + "createAccount": "Створіть свій акаунт", + "verifyMail": "Продовжте з кодом підтвердження", + "noAccount": "Не маєте облікового запису?", + "welcome": "👋 Ласкаво просимо! Будь ласка, заповніть деталі, щоб почати." + }, + "pageTitleForE": "Гей, давай почнемо!" +} diff --git a/web/i18n/uk-UA/login.ts b/web/i18n/uk-UA/login.ts deleted file mode 100644 index 1a1a6d7068..0000000000 --- a/web/i18n/uk-UA/login.ts +++ /dev/null @@ -1,126 +0,0 @@ -const translation = { - pageTitle: 'Привіт, почнемо!👋', - welcome: 'Ласкаво просимо до Dify, будь ласка, увійдіть, щоб продовжити.', - email: 'Адреса електронної пошти', - emailPlaceholder: 'Ваша електронна пошта', - password: 'Пароль', - passwordPlaceholder: 'Ваш пароль', - name: 'Ім\'я користувача', - namePlaceholder: 'Ваше ім\'я користувача', - forget: 'Забули пароль?', - signBtn: 'Вхід', - installBtn: 'Налаштувати', - setAdminAccount: 'Налаштування облікового запису адміністратора', - setAdminAccountDesc: 'Максимальні привілеї для облікового запису адміністратора, які можна використовувати для створення програм, керування постачальниками LLM тощо.', - createAndSignIn: 'Створити та увійти', - oneMoreStep: 'Ще один крок', - createSample: 'На основі цієї інформації ми створимо для вас зразок програми', - invitationCode: 'Код запрошення', - invitationCodePlaceholder: 'Ваш код запрошення', - interfaceLanguage: 'Мова інтерфейсу', - timezone: 'Часовий пояс', - go: 'Перейти до Dify', - sendUsMail: 'Надішліть нам своє представлення, і ми обробимо запит на запрошення.', - acceptPP: 'Я прочитав і приймаю політику конфіденційності', - reset: 'Будь ласка, виконайте таку команду, щоб скинути пароль', - withGitHub: 'Продовжити з GitHub', - withGoogle: 'Продовжити з Google', - rightTitle: 'Розкрийте весь потенціал LLM', - rightDesc: 'З легкістю створюйте візуально привабливі, функціональні та вдосконалювані програми зі штучним інтелектом.', - tos: 'Умови обслуговування', - pp: 'Політика конфіденційності', - tosDesc: 'Реєструючись, ви приймаєте наші', - goToInit: 'Якщо ви ще не ініціалізували обліковий запис, перейдіть на сторінку ініціалізації', - dontHave: 'Не маєте?', - invalidInvitationCode: 'Недійсний код запрошення', - accountAlreadyInited: 'Обліковий запис уже ініціалізовано', - forgotPassword: 'Забули пароль?', - resetLinkSent: 'Посилання для скидання надіслано', - sendResetLink: 'Надіслати посилання для скидання', - backToSignIn: 'Повернутися до входу', - forgotPasswordDesc: 'Будь ласка, введіть свою електронну адресу, щоб скинути пароль. Ми надішлемо вам електронного листа з інструкціями щодо скидання пароля.', - checkEmailForResetLink: 'Будь ласка, перевірте свою електронну пошту на наявність посилання для скидання пароля. Якщо протягом кількох хвилин не з’явиться, перевірте папку зі спамом.', - passwordChanged: 'Увійдіть зараз', - changePassword: 'Змінити пароль', - changePasswordTip: 'Будь ласка, введіть новий пароль для свого облікового запису', - invalidToken: 'Недійсний або прострочений токен', - confirmPassword: 'Підтвердити пароль', - confirmPasswordPlaceholder: 'Підтвердьте новий пароль', - passwordChangedTip: 'Ваш пароль було успішно змінено', - error: { - emailEmpty: 'Адреса електронної пошти обов\'язкова', - emailInValid: 'Введіть дійсну адресу електронної пошти', - nameEmpty: 'Ім\'я обов\'язкове', - passwordEmpty: 'Пароль є обов’язковим', - passwordInvalid: 'Пароль повинен містити літери та цифри, а довжина повинна бути більшою за 8', - passwordLengthInValid: 'Пароль повинен бути не менше 8 символів', - registrationNotAllowed: 'Аккаунт не знайдено. Будь ласка, зверніться до адміністратора системи для реєстрації.', - invalidEmailOrPassword: 'Невірний електронний лист або пароль.', - }, - license: { - tip: 'Перед запуском Dify Community Edition ознайомтеся з ліцензією з відкритим кодом на GitHub', - link: 'Ліцензія з відкритим кодом', - }, - join: 'Приєднуйтесь', - joinTipStart: 'Запрошуємо вас приєднатися', - joinTipEnd: 'команда Dify', - invalid: 'Посилання застаріло', - explore: 'Досліджуйте Dify', - activatedTipStart: 'Ви приєдналися до', - activatedTipEnd: 'команда', - activated: 'Увійти зараз', - adminInitPassword: 'Пароль ініціалізації адміністратора', - validate: 'Перевірити', - checkCode: { - didNotReceiveCode: 'Не отримали код?', - invalidCode: 'Невірний код', - resend: 'Відправити', - verificationCodePlaceholder: 'Введіть 6-значний код', - emptyCode: 'Код обов\'язковий', - checkYourEmail: 'Перевірте свою електронну пошту', - verify: 'Перевірити', - verificationCode: 'Код підтвердження', - useAnotherMethod: 'Використовуйте інший спосіб', - validTime: 'Майте на увазі, що код дійсний протягом 5 хвилин', - tipsPrefix: 'Ми відправляємо код підтвердження на', - }, - back: 'Задній', - backToLogin: 'Назад до входу', - or: 'АБО', - usePassword: 'Використовуйте пароль', - sendVerificationCode: 'Надішліть код підтвердження', - changePasswordBtn: 'Встановіть пароль', - noLoginMethod: 'Метод автентифікації не налаштовано', - withSSO: 'Продовжуйте працювати з SSW', - useVerificationCode: 'Використовуйте код підтвердження', - setYourAccount: 'Налаштуйте свій обліковий запис', - enterYourName: 'Будь ласка, введіть своє ім\'я користувача', - continueWithCode: 'Продовжити з кодом', - noLoginMethodTip: 'Будь ласка, зверніться до адміністратора системи, щоб додати метод автентифікації.', - resetPasswordDesc: 'Введіть адресу електронної пошти, яку ви використовували для реєстрації на Dify, і ми надішлемо вам електронний лист для скидання пароля.', - resetPassword: 'Скинути пароль', - licenseLostTip: 'Не вдалося підключити сервер ліцензій Dify. Будь ласка, зверніться до свого адміністратора, щоб продовжити користуватися Dify.', - licenseExpired: 'Термін дії ліцензії минув', - licenseInactive: 'Ліцензія неактивна', - licenseLost: 'Ліцензію втрачено', - licenseInactiveTip: 'Ліцензія Dify Enterprise для вашої робочої області неактивна. Будь ласка, зверніться до свого адміністратора, щоб продовжити користуватися Dify.', - licenseExpiredTip: 'Термін дії ліцензії Dify Enterprise для вашого робочого простору закінчився. Будь ласка, зверніться до свого адміністратора, щоб продовжити користуватися Dify.', - webapp: { - noLoginMethod: 'Метод аутентифікації не налаштований для веб-додатку', - noLoginMethodTip: 'Будь ласка, зв\'яжіться з адміністратором системи, щоб додати метод автентифікації.', - disabled: 'Аутентифікацію вебдодатка вимкнено. Будь ласка, зв\'яжіться з адміністратором системи, щоб увімкнути її. Ви можете спробувати використовувати додаток безпосередньо.', - login: 'Увійти', - }, - signup: { - signUp: 'Реєстрація', - signIn: 'Увійти', - haveAccount: 'Вже маєте обліковий запис?', - createAccount: 'Створіть свій акаунт', - verifyMail: 'Продовжте з кодом підтвердження', - noAccount: 'Не маєте облікового запису?', - welcome: '👋 Ласкаво просимо! Будь ласка, заповніть деталі, щоб почати.', - }, - pageTitleForE: 'Гей, давай почнемо!', -} - -export default translation diff --git a/web/i18n/uk-UA/oauth.json b/web/i18n/uk-UA/oauth.json new file mode 100644 index 0000000000..1d9d86dab8 --- /dev/null +++ b/web/i18n/uk-UA/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "notLoggedIn": "Цей додаток хоче отримати доступ до вашого облікового запису Dify Cloud", + "needLogin": "Будь ласка, увійдіть, щоб авторизуватися.", + "loggedIn": "Цей додаток хоче отримати доступ до наступної інформації з вашого облікового запису Dify Cloud.", + "common": "Ми поважаємо вашу конфіденційність і використовуватимемо цю інформацію лише для покращення вашого досвіду з нашими інструментами для розробників." + }, + "scopes": { + "languagePreference": "Перевага мови", + "name": "Ім'я", + "email": "Електронна пошта", + "avatar": "Аватар", + "timezone": "Часовий пояс" + }, + "error": { + "invalidParams": "Недійсні параметри", + "authorizeFailed": "Авторизація не вдалася", + "authAppInfoFetchFailed": "Не вдалося отримати інформацію про додаток для авторизації" + }, + "login": "Увійти", + "unknownApp": "Невідома програма", + "continue": "Продовжувати", + "switchAccount": "Переключити акаунт", + "connect": "Підключитися до" +} diff --git a/web/i18n/uk-UA/oauth.ts b/web/i18n/uk-UA/oauth.ts deleted file mode 100644 index a2510c6efe..0000000000 --- a/web/i18n/uk-UA/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - notLoggedIn: 'Цей додаток хоче отримати доступ до вашого облікового запису Dify Cloud', - needLogin: 'Будь ласка, увійдіть, щоб авторизуватися.', - loggedIn: 'Цей додаток хоче отримати доступ до наступної інформації з вашого облікового запису Dify Cloud.', - common: 'Ми поважаємо вашу конфіденційність і використовуватимемо цю інформацію лише для покращення вашого досвіду з нашими інструментами для розробників.', - }, - scopes: { - languagePreference: 'Перевага мови', - name: 'Ім\'я', - email: 'Електронна пошта', - avatar: 'Аватар', - timezone: 'Часовий пояс', - }, - error: { - invalidParams: 'Недійсні параметри', - authorizeFailed: 'Авторизація не вдалася', - authAppInfoFetchFailed: 'Не вдалося отримати інформацію про додаток для авторизації', - }, - login: 'Увійти', - unknownApp: 'Невідома програма', - continue: 'Продовжувати', - switchAccount: 'Переключити акаунт', - connect: 'Підключитися до', -} - -export default translation diff --git a/web/i18n/uk-UA/pipeline.json b/web/i18n/uk-UA/pipeline.json new file mode 100644 index 0000000000..7368c6e806 --- /dev/null +++ b/web/i18n/uk-UA/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "publishAsPipeline": { + "description": "Опис знань", + "namePlaceholder": "Будь ласка, введіть назву цього конвеєра знань. (Вимагається)", + "descriptionPlaceholder": "Будь ласка, введіть опис цього конвеєра знань. (Необов'язково)", + "name": "Назва та піктограма воронки продажів" + }, + "processing": "Обробки", + "testRun": "Тестовий запуск", + "reRun": "Повторний запуск", + "goToAddDocuments": "Перейти до додавання документів", + "preparingDataSource": "Підготовка джерела даних", + "confirmPublish": "Підтвердити публікацію", + "publishAs": "Публікація у вигляді конвеєра знань", + "confirmPublishContent": "Після успішної публікації конвеєра знань структура фрагментів цієї бази знань не може бути змінена. Ви впевнені, що хочете його опублікувати?" + }, + "inputField": { + "manage": "Керувати", + "create": "Створити поле для введення даних користувачем" + }, + "publishToast": { + "title": "Цей трубопровід поки що не опублікований", + "desc": "Якщо конвеєр не опубліковано, ви можете змінити структуру фрагментів у вузлі бази знань, і оркестрація та зміни в конвеєрі будуть автоматично збережені як чернетка." + }, + "result": { + "resultPreview": { + "loading": "Обробки... Будь ласка, зачекай", + "viewDetails": "Перегляд докладних відомостей", + "error": "Під час виконання сталася помилка", + "footerTip": "У режимі тестового запуску перегляньте до {{count}} фрагментів" + } + }, + "ragToolSuggestions": { + "title": "Пропозиції щодо RAG", + "noRecommendationPlugins": "Рекомендованих плагінів немає, знайдіть більше на Маркетплейсі" + } +} diff --git a/web/i18n/uk-UA/pipeline.ts b/web/i18n/uk-UA/pipeline.ts deleted file mode 100644 index ac38d80dad..0000000000 --- a/web/i18n/uk-UA/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - publishAsPipeline: { - description: 'Опис знань', - namePlaceholder: 'Будь ласка, введіть назву цього конвеєра знань. (Вимагається)', - descriptionPlaceholder: 'Будь ласка, введіть опис цього конвеєра знань. (Необов\'язково)', - name: 'Назва та піктограма воронки продажів', - }, - processing: 'Обробки', - testRun: 'Тестовий запуск', - reRun: 'Повторний запуск', - goToAddDocuments: 'Перейти до додавання документів', - preparingDataSource: 'Підготовка джерела даних', - confirmPublish: 'Підтвердити публікацію', - publishAs: 'Публікація у вигляді конвеєра знань', - confirmPublishContent: 'Після успішної публікації конвеєра знань структура фрагментів цієї бази знань не може бути змінена. Ви впевнені, що хочете його опублікувати?', - }, - inputField: { - manage: 'Керувати', - create: 'Створити поле для введення даних користувачем', - }, - publishToast: { - title: 'Цей трубопровід поки що не опублікований', - desc: 'Якщо конвеєр не опубліковано, ви можете змінити структуру фрагментів у вузлі бази знань, і оркестрація та зміни в конвеєрі будуть автоматично збережені як чернетка.', - }, - result: { - resultPreview: { - loading: 'Обробки... Будь ласка, зачекай', - viewDetails: 'Перегляд докладних відомостей', - error: 'Під час виконання сталася помилка', - footerTip: 'У режимі тестового запуску перегляньте до {{count}} фрагментів', - }, - }, - ragToolSuggestions: { - title: 'Пропозиції щодо RAG', - noRecommendationPlugins: 'Рекомендованих плагінів немає, знайдіть більше на Маркетплейсі', - }, -} - -export default translation diff --git a/web/i18n/uk-UA/plugin-tags.json b/web/i18n/uk-UA/plugin-tags.json new file mode 100644 index 0000000000..164003f1a1 --- /dev/null +++ b/web/i18n/uk-UA/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "tags": { + "other": "Інший", + "utilities": "Утиліти", + "education": "Освіта", + "social": "Соціальний", + "videos": "Відео", + "business": "Бізнес", + "news": "Вісті", + "design": "Проект", + "search": "Шукати", + "medical": "Медичний", + "productivity": "Продуктивність", + "finance": "Фінанси", + "travel": "Подорожувати", + "image": "Образ", + "agent": "Агент", + "weather": "Погода", + "entertainment": "Розваги", + "rag": "ТРЯПІЧНАЯ" + }, + "allTags": "Всі теги", + "searchTags": "Пошукові теги" +} diff --git a/web/i18n/uk-UA/plugin-tags.ts b/web/i18n/uk-UA/plugin-tags.ts deleted file mode 100644 index 6b4391b6f9..0000000000 --- a/web/i18n/uk-UA/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - tags: { - other: 'Інший', - utilities: 'Утиліти', - education: 'Освіта', - social: 'Соціальний', - videos: 'Відео', - business: 'Бізнес', - news: 'Вісті', - design: 'Проект', - search: 'Шукати', - medical: 'Медичний', - productivity: 'Продуктивність', - finance: 'Фінанси', - travel: 'Подорожувати', - image: 'Образ', - agent: 'Агент', - weather: 'Погода', - entertainment: 'Розваги', - rag: 'ТРЯПІЧНАЯ', - }, - allTags: 'Всі теги', - searchTags: 'Пошукові теги', -} - -export default translation diff --git a/web/i18n/uk-UA/plugin-trigger.json b/web/i18n/uk-UA/plugin-trigger.json new file mode 100644 index 0000000000..89deecb5da --- /dev/null +++ b/web/i18n/uk-UA/plugin-trigger.json @@ -0,0 +1,184 @@ +{ + "subscription": { + "title": "Підписки", + "listNum": "{{num}} підписки", + "empty": { + "title": "Немає підписок", + "button": "Нова підписка" + }, + "createButton": { + "oauth": "Нова підписка з OAuth", + "apiKey": "Нова підписка з ключем API", + "manual": "Вставте URL, щоб створити нову підписку" + }, + "createSuccess": "Підписку успішно створено", + "createFailed": "Не вдалося створити підписку", + "maxCount": "Макс {{num}} підписок", + "selectPlaceholder": "Виберіть підписку", + "noSubscriptionSelected": "Підписка не обрана", + "subscriptionRemoved": "Підписку видалено", + "list": { + "title": "Підписки", + "addButton": "Додати", + "tip": "Отримувати події через підписку", + "item": { + "enabled": "Увімкнено", + "disabled": "Вимкнено", + "credentialType": { + "api_key": "API ключ", + "oauth2": "OAuth", + "unauthorized": "Посібник" + }, + "actions": { + "delete": "Видалити", + "deleteConfirm": { + "title": "Видалити {{name}}?", + "success": "Підписку {{name}} успішно видалено", + "error": "Не вдалося видалити підписку {{name}}", + "content": "Після видалення цю підписку неможливо буде відновити. Будь ласка, підтвердіть.", + "contentWithApps": "Поточна підписка використовується {{count}} додатками. Видалення підписки призведе до того, що налаштовані додатки перестануть отримувати події підписки.", + "confirm": "Підтвердити видалення", + "cancel": "Скасувати", + "confirmInputWarning": "Будь ласка, введіть правильне ім’я для підтвердження.", + "confirmInputPlaceholder": "Введіть \"{{name}}\", щоб підтвердити.", + "confirmInputTip": "Будь ласка, введіть «{{name}}», щоб підтвердити." + } + }, + "status": { + "active": "Активний", + "inactive": "Неактивний" + }, + "usedByNum": "Використовується в {{num}} робочих процесах", + "noUsed": "Жодного робочого процесу не використано" + } + }, + "addType": { + "title": "Додати підписку", + "description": "Виберіть, як ви хочете створити підписку на тригер", + "options": { + "apikey": { + "title": "Створити за допомогою ключа API", + "description": "Автоматично створювати підписку за допомогою облікових даних API" + }, + "oauth": { + "title": "Створити з OAuth", + "description": "Авторизуйтеся через сторонню платформу, щоб створити підписку", + "clientSettings": "Налаштування клієнта OAuth", + "clientTitle": "Клієнт OAuth", + "default": "За замовчуванням", + "custom": "Налаштований" + }, + "manual": { + "title": "Ручне налаштування", + "description": "Вставте URL, щоб створити нову підписку", + "tip": "Налаштуйте URL на сторонній платформі вручну" + } + } + } + }, + "modal": { + "steps": { + "verify": "Перевірити", + "configuration": "Налаштування" + }, + "common": { + "cancel": "Скасувати", + "back": "Назад", + "next": "Далі", + "create": "Створити", + "verify": "Перевірити", + "authorize": "Авторизувати", + "creating": "Створення...", + "verifying": "Перевірка...", + "authorizing": "Авторизація..." + }, + "oauthRedirectInfo": "Оскільки для цього постачальника інструментів не знайдено жодних системних секретів клієнта, необхідно налаштувати його вручну, для redirect_uri, будь ласка, використовуйте", + "apiKey": { + "title": "Створити за допомогою ключа API", + "verify": { + "title": "Перевірити облікові дані", + "description": "Будь ласка, надайте свої облікові дані API для перевірки доступу", + "error": "Перевірка облікових даних не вдалася. Будь ласка, перевірте свій API-ключ.", + "success": "Облікові дані успішно перевірено" + }, + "configuration": { + "title": "Налаштувати підписку", + "description": "Налаштуйте параметри вашої підписки" + } + }, + "oauth": { + "title": "Створити з OAuth", + "authorization": { + "title": "Авторизація OAuth", + "description": "Дозвольте Dify отримати доступ до вашого акаунту", + "redirectUrl": "URL перенаправлення", + "redirectUrlHelp": "Використайте цей URL у налаштуваннях вашого OAuth-додатку", + "authorizeButton": "Авторизуйтеся за допомогою {{provider}}", + "waitingAuth": "Очікування авторизації...", + "authSuccess": "Авторизація успішна", + "authFailed": "Не вдалося отримати інформацію про авторизацію OAuth", + "waitingJump": "Дозволено, очікування стрибка" + }, + "configuration": { + "title": "Налаштувати підписку", + "description": "Налаштуйте параметри підписки після авторизації", + "success": "Конфігурація OAuth успішна", + "failed": "Не вдалося налаштувати OAuth" + }, + "remove": { + "success": "OAuth успішно видалено", + "failed": "Не вдалося видалити OAuth" + }, + "save": { + "success": "Конфігурацію OAuth успішно збережено" + } + }, + "manual": { + "title": "Ручне налаштування", + "description": "Налаштуйте підписку на вебхук вручну", + "logs": { + "title": "Журнали запитів", + "request": "Запит", + "loading": "Очікується запит від {{pluginName}}..." + } + }, + "form": { + "subscriptionName": { + "label": "Назва підписки", + "placeholder": "Введіть назву підписки", + "required": "Потрібно вказати назву підписки" + }, + "callbackUrl": { + "label": "URL зворотного виклику", + "description": "Цей URL буде отримувати події вебхука", + "tooltip": "Надайте загальнодоступну кінцеву точку, яка може приймати запити зворотного виклику від постачальника тригерів.", + "placeholder": "Генерація...", + "privateAddressWarning": "Цей URL, схоже, є внутрішньою адресою, що може спричинити помилки у запитах вебхука. Ви можете змінити TRIGGER_URL на публічну адресу." + } + }, + "errors": { + "createFailed": "Не вдалося створити підписку", + "verifyFailed": "Не вдалося перевірити облікові дані", + "authFailed": "Авторизація не вдалася", + "networkError": "Помилка мережі, будь ласка, спробуйте ще раз" + } + }, + "events": { + "title": "Доступні події", + "description": "Події, на які цей плагін тригера може підписатися", + "empty": "Події відсутні", + "event": "Подія", + "events": "Події", + "actionNum": "{{num}} {{event}} ВКЛЮЧЕНО", + "item": { + "parameters": "{{count}} параметри", + "noParameters": "Немає параметрів" + }, + "output": "Вихід" + }, + "node": { + "status": { + "warning": "Відключити" + } + } +} diff --git a/web/i18n/uk-UA/plugin-trigger.ts b/web/i18n/uk-UA/plugin-trigger.ts deleted file mode 100644 index 1e02b28282..0000000000 --- a/web/i18n/uk-UA/plugin-trigger.ts +++ /dev/null @@ -1,186 +0,0 @@ -const translation = { - subscription: { - title: 'Підписки', - listNum: '{{num}} підписки', - empty: { - title: 'Немає підписок', - button: 'Нова підписка', - }, - createButton: { - oauth: 'Нова підписка з OAuth', - apiKey: 'Нова підписка з ключем API', - manual: 'Вставте URL, щоб створити нову підписку', - }, - createSuccess: 'Підписку успішно створено', - createFailed: 'Не вдалося створити підписку', - maxCount: 'Макс {{num}} підписок', - selectPlaceholder: 'Виберіть підписку', - noSubscriptionSelected: 'Підписка не обрана', - subscriptionRemoved: 'Підписку видалено', - list: { - title: 'Підписки', - addButton: 'Додати', - tip: 'Отримувати події через підписку', - item: { - enabled: 'Увімкнено', - disabled: 'Вимкнено', - credentialType: { - api_key: 'API ключ', - oauth2: 'OAuth', - unauthorized: 'Посібник', - }, - actions: { - delete: 'Видалити', - deleteConfirm: { - title: 'Видалити {{name}}?', - success: 'Підписку {{name}} успішно видалено', - error: 'Не вдалося видалити підписку {{name}}', - content: 'Після видалення цю підписку неможливо буде відновити. Будь ласка, підтвердіть.', - contentWithApps: 'Поточна підписка використовується {{count}} додатками. Видалення підписки призведе до того, що налаштовані додатки перестануть отримувати події підписки.', - confirm: 'Підтвердити видалення', - cancel: 'Скасувати', - confirmInputWarning: 'Будь ласка, введіть правильне ім’я для підтвердження.', - confirmInputPlaceholder: 'Введіть "{{name}}", щоб підтвердити.', - confirmInputTip: 'Будь ласка, введіть «{{name}}», щоб підтвердити.', - }, - }, - status: { - active: 'Активний', - inactive: 'Неактивний', - }, - usedByNum: 'Використовується в {{num}} робочих процесах', - noUsed: 'Жодного робочого процесу не використано', - }, - }, - addType: { - title: 'Додати підписку', - description: 'Виберіть, як ви хочете створити підписку на тригер', - options: { - apikey: { - title: 'Створити за допомогою ключа API', - description: 'Автоматично створювати підписку за допомогою облікових даних API', - }, - oauth: { - title: 'Створити з OAuth', - description: 'Авторизуйтеся через сторонню платформу, щоб створити підписку', - clientSettings: 'Налаштування клієнта OAuth', - clientTitle: 'Клієнт OAuth', - default: 'За замовчуванням', - custom: 'Налаштований', - }, - manual: { - title: 'Ручне налаштування', - description: 'Вставте URL, щоб створити нову підписку', - tip: 'Налаштуйте URL на сторонній платформі вручну', - }, - }, - }, - }, - modal: { - steps: { - verify: 'Перевірити', - configuration: 'Налаштування', - }, - common: { - cancel: 'Скасувати', - back: 'Назад', - next: 'Далі', - create: 'Створити', - verify: 'Перевірити', - authorize: 'Авторизувати', - creating: 'Створення...', - verifying: 'Перевірка...', - authorizing: 'Авторизація...', - }, - oauthRedirectInfo: 'Оскільки для цього постачальника інструментів не знайдено жодних системних секретів клієнта, необхідно налаштувати його вручну, для redirect_uri, будь ласка, використовуйте', - apiKey: { - title: 'Створити за допомогою ключа API', - verify: { - title: 'Перевірити облікові дані', - description: 'Будь ласка, надайте свої облікові дані API для перевірки доступу', - error: 'Перевірка облікових даних не вдалася. Будь ласка, перевірте свій API-ключ.', - success: 'Облікові дані успішно перевірено', - }, - configuration: { - title: 'Налаштувати підписку', - description: 'Налаштуйте параметри вашої підписки', - }, - }, - oauth: { - title: 'Створити з OAuth', - authorization: { - title: 'Авторизація OAuth', - description: 'Дозвольте Dify отримати доступ до вашого акаунту', - redirectUrl: 'URL перенаправлення', - redirectUrlHelp: 'Використайте цей URL у налаштуваннях вашого OAuth-додатку', - authorizeButton: 'Авторизуйтеся за допомогою {{provider}}', - waitingAuth: 'Очікування авторизації...', - authSuccess: 'Авторизація успішна', - authFailed: 'Не вдалося отримати інформацію про авторизацію OAuth', - waitingJump: 'Дозволено, очікування стрибка', - }, - configuration: { - title: 'Налаштувати підписку', - description: 'Налаштуйте параметри підписки після авторизації', - success: 'Конфігурація OAuth успішна', - failed: 'Не вдалося налаштувати OAuth', - }, - remove: { - success: 'OAuth успішно видалено', - failed: 'Не вдалося видалити OAuth', - }, - save: { - success: 'Конфігурацію OAuth успішно збережено', - }, - }, - manual: { - title: 'Ручне налаштування', - description: 'Налаштуйте підписку на вебхук вручну', - logs: { - title: 'Журнали запитів', - request: 'Запит', - loading: 'Очікується запит від {{pluginName}}...', - }, - }, - form: { - subscriptionName: { - label: 'Назва підписки', - placeholder: 'Введіть назву підписки', - required: 'Потрібно вказати назву підписки', - }, - callbackUrl: { - label: 'URL зворотного виклику', - description: 'Цей URL буде отримувати події вебхука', - tooltip: 'Надайте загальнодоступну кінцеву точку, яка може приймати запити зворотного виклику від постачальника тригерів.', - placeholder: 'Генерація...', - privateAddressWarning: 'Цей URL, схоже, є внутрішньою адресою, що може спричинити помилки у запитах вебхука. Ви можете змінити TRIGGER_URL на публічну адресу.', - }, - }, - errors: { - createFailed: 'Не вдалося створити підписку', - verifyFailed: 'Не вдалося перевірити облікові дані', - authFailed: 'Авторизація не вдалася', - networkError: 'Помилка мережі, будь ласка, спробуйте ще раз', - }, - }, - events: { - title: 'Доступні події', - description: 'Події, на які цей плагін тригера може підписатися', - empty: 'Події відсутні', - event: 'Подія', - events: 'Події', - actionNum: '{{num}} {{event}} ВКЛЮЧЕНО', - item: { - parameters: '{{count}} параметри', - noParameters: 'Немає параметрів', - }, - output: 'Вихід', - }, - node: { - status: { - warning: 'Відключити', - }, - }, -} - -export default translation diff --git a/web/i18n/uk-UA/plugin.json b/web/i18n/uk-UA/plugin.json new file mode 100644 index 0000000000..1d86a20d86 --- /dev/null +++ b/web/i18n/uk-UA/plugin.json @@ -0,0 +1,323 @@ +{ + "category": { + "tools": "Інструмент", + "all": "Увесь", + "bundles": "Пакети", + "models": "Моделі", + "extensions": "Розширення", + "agents": "Стратегії агентів", + "datasources": "Джерела даних", + "triggers": "Тригери" + }, + "categorySingle": { + "agent": "Стратегія агента", + "bundle": "Комплектація", + "tool": "Інструмент", + "extension": "Збільшення", + "model": "Модель", + "datasource": "Джерело даних", + "trigger": "Спусковий механізм" + }, + "list": { + "source": { + "local": "Інсталяція з локального файлу пакета", + "marketplace": "Інсталяція з Marketplace", + "github": "Встановлення з GitHub" + }, + "noInstalled": "Плагіни не встановлено", + "notFound": "Плагінів не знайдено" + }, + "source": { + "marketplace": "Ринку", + "local": "Файл локального пакета", + "github": "Гітхаб" + }, + "detailPanel": { + "categoryTip": { + "github": "Встановлено з Github", + "debugging": "Плагін налагодження", + "local": "Локальний плагін", + "marketplace": "Інстальовано з Marketplace" + }, + "operation": { + "viewDetail": "Переглянути деталі", + "detail": "Деталі", + "remove": "Видалити", + "install": "Інсталювати", + "checkUpdate": "Перевірити Оновлення", + "update": "Оновлювати", + "info": "Інформація про плагін", + "back": "Назад" + }, + "toolSelector": { + "placeholder": "Виберіть інструмент...", + "descriptionLabel": "Опис засобу", + "paramsTip1": "Контролює параметри логічного висновку LLM.", + "toolLabel": "Інструмент", + "params": "КОНФІГУРАЦІЯ МІРКУВАНЬ", + "settings": "НАЛАШТУВАННЯ КОРИСТУВАЧА", + "uninstalledLink": "Керування в плагінах", + "title": "Додати інструмент", + "paramsTip2": "Коли параметр \"Автоматично\" вимкнено, використовується значення за замовчуванням.", + "empty": "Натисніть кнопку «+», щоб додати інструменти. Ви можете додати кілька інструментів.", + "uninstalledTitle": "Інструмент не встановлено", + "descriptionPlaceholder": "Короткий опис призначення інструменту, наприклад, отримання температури для конкретного місця.", + "unsupportedTitle": "Непідтримувані дії", + "unsupportedContent2": "Натисніть, щоб змінити версію.", + "auto": "Автоматичний", + "uninstalledContent": "Цей плагін встановлюється з локального/GitHub репозиторію. Будь ласка, використовуйте після встановлення.", + "unsupportedContent": "Встановлена версія плагіна не передбачає цієї дії.", + "toolSetting": "Налаштування інструментів", + "unsupportedMCPTool": "Використовувана версія плагіна стратегії агента наразі не підтримує інструменти MCP." + }, + "modelNum": "{{num}} МОДЕЛІ В КОМПЛЕКТІ", + "switchVersion": "Версія перемикача", + "configureApp": "Налаштуйте додаток", + "endpointDeleteTip": "Видалити кінцеву точку", + "endpoints": "Кінцеві точки", + "endpointsDocLink": "Переглянути документ", + "configureModel": "Налаштування моделі", + "endpointDisableTip": "Вимкніть кінцеву точку", + "endpointsEmpty": "Натисніть кнопку «+», щоб додати кінцеву точку", + "actionNum": "{{num}} {{дія}} ВКЛЮЧЕНІ", + "disabled": "Вимкнуто", + "endpointModalTitle": "Налаштування кінцевої точки", + "endpointDisableContent": "Чи хотіли б ви вимкнути {{name}}?", + "endpointDeleteContent": "Чи хотіли б ви видалити {{name}}?", + "endpointsTip": "Цей плагін надає конкретні функції через кінцеві точки, і ви можете налаштувати кілька наборів кінцевих точок для поточного робочого простору.", + "strategyNum": "{{num}} {{стратегія}} ВКЛЮЧЕНІ", + "endpointModalDesc": "Після налаштування можна використовувати функції, що надаються плагіном через кінцеві точки API.", + "configureTool": "Інструмент налаштування", + "serviceOk": "Сервіс працює", + "deprecation": { + "reason": { + "ownershipTransferred": "право власності передано", + "businessAdjustments": "бізнесові корективи", + "noMaintainer": "немає супроводжувача" + }, + "noReason": "Цей плагін було застаріло, і він більше не буде оновлюватися.", + "onlyReason": "Цей плагін було знято з підтримки через {{deprecatedReason}} і більше не буде оновлюватися.", + "fullMessage": "Цей плагін був застарілий через {{deprecatedReason}}, і більше не буде оновлюватися. Будь ласка, використовуйте {{-alternativePluginId}} замість цього." + } + }, + "debugInfo": { + "title": "Налагодження", + "viewDocs": "Переглянути документи" + }, + "privilege": { + "whoCanDebug": "Хто може налагоджувати плагіни?", + "admins": "Адміни", + "noone": "Ніхто", + "whoCanInstall": "Хто може встановлювати плагіни та керувати ними?", + "everyone": "Кожен", + "title": "Налаштування плагіна" + }, + "pluginInfoModal": { + "repository": "Сховище", + "release": "Реліз", + "title": "Інформація про плагін", + "packageName": "Пакунок" + }, + "action": { + "deleteContentLeft": "Чи хотіли б ви видалити", + "usedInApps": "Цей плагін використовується в додатках {{num}}.", + "deleteContentRight": "плагін?", + "checkForUpdates": "Перевірте наявність оновлень", + "delete": "Видалити плагін", + "pluginInfo": "Інформація про плагін" + }, + "installModal": { + "labels": { + "package": "Пакунок", + "repository": "Сховище", + "version": "Версія" + }, + "uploadFailed": "Не вдалося завантажити файл", + "close": "Закрити", + "installedSuccessfullyDesc": "Плагін успішно встановлено.", + "readyToInstallPackages": "Про встановлення наступних плагінів {{num}}", + "install": "Інсталювати", + "cancel": "Скасувати", + "readyToInstall": "Про встановлення наступного плагіна", + "pluginLoadErrorDesc": "Цей плагін не буде встановлено", + "installComplete": "Інсталяцію завершено", + "installing": "Установки...", + "installPlugin": "Встановити плагін", + "dropPluginToInstall": "Перетягніть пакет плагіна сюди, щоб встановити", + "uploadingPackage": "Завантаження {{packageName}}...", + "readyToInstallPackage": "Про встановлення наступного плагіна", + "pluginLoadError": "Помилка завантаження плагіна", + "fromTrustSource": "Будь ласка, переконайтеся, що ви встановлюєте плагіни лише з надійного джерела.", + "back": "Задній", + "installFailedDesc": "Плагін був встановлений не вдалося.", + "installFailed": "Не вдалося встановити", + "installedSuccessfully": "Монтаж успішний", + "next": "Наступний", + "installWarning": "Цей плагін не можна установити." + }, + "installFromGitHub": { + "selectVersionPlaceholder": "Будь ласка, оберіть версію", + "uploadFailed": "Не вдалося завантажити файл", + "selectVersion": "Оберіть версію", + "installNote": "Будь ласка, переконайтеся, що ви встановлюєте плагіни лише з надійного джерела.", + "gitHubRepo": "Репозиторій GitHub", + "installFailed": "Не вдалося встановити", + "installPlugin": "Встановити плагін з GitHub", + "updatePlugin": "Оновити плагін з GitHub", + "installedSuccessfully": "Монтаж успішний", + "selectPackage": "Оберіть пакет", + "selectPackagePlaceholder": "Будь ласка, оберіть пакет" + }, + "upgrade": { + "description": "Про встановлення наступного плагіна", + "close": "Закрити", + "successfulTitle": "Установка успішна", + "upgrade": "Інсталювати", + "usedInApps": "Використовується в додатках {{num}}", + "upgrading": "Установки...", + "title": "Встановити плагін" + }, + "error": { + "noReleasesFound": "Релізів не знайдено. Будь ласка, перевірте репозиторій GitHub або URL-адресу введення.", + "fetchReleasesError": "Не вдається отримати згоди. Повторіть спробу пізніше.", + "inValidGitHubUrl": "Невірна URL-адреса GitHub. Будь ласка, введіть дійсну URL-адресу у форматі: https://github.com/owner/repo" + }, + "marketplace": { + "sortOption": { + "mostPopular": "Найпопулярніших", + "newlyReleased": "Новий реліз", + "recentlyUpdated": "Нещодавно оновлено", + "firstReleased": "Перший реліз" + }, + "and": "і", + "discover": "Виявити", + "moreFrom": "Більше від Marketplace", + "sortBy": "Чорне місто", + "pluginsResult": "Результати {{num}}", + "empower": "Розширюйте можливості розробки штучного інтелекту", + "difyMarketplace": "Dify Marketplace", + "viewMore": "Дивитись більше", + "noPluginFound": "Плагін не знайдено", + "verifiedTip": "Перевірено Dify", + "partnerTip": "Перевірено партнером Dify" + }, + "task": { + "installingWithError": "Не вдалося встановити плагіни {{installingLength}}, успіх {{successLength}}, {{errorLength}}", + "clearAll": "Очистити все", + "installedError": "Плагіни {{errorLength}} не вдалося встановити", + "installError": "Плагіни {{errorLength}} не вдалося встановити, натисніть, щоб переглянути", + "installing": "Встановлення плагінів {{installingLength}}, 0 виконано.", + "installingWithSuccess": "Встановлення плагінів {{installingLength}}, успіх {{successLength}}.", + "installSuccess": "{{successLength}} plugins installed successfully", + "installed": "Installed", + "runningPlugins": "Installing Plugins", + "successPlugins": "Successfully Installed Plugins", + "errorPlugins": "Failed to Install Plugins" + }, + "from": "Від", + "searchInMarketplace": "Пошук у Marketplace", + "endpointsEnabled": "{{num}} наборів кінцевих точок увімкнено", + "installAction": "Інсталювати", + "findMoreInMarketplace": "Дізнайтеся більше в Marketplace", + "installFrom": "ВСТАНОВИТИ З", + "install": "{{num}} встановлює", + "fromMarketplace": "Від Marketplace", + "searchCategories": "Категорії пошуку", + "installPlugin": "Встановити плагін", + "searchTools": "Інструменти пошуку...", + "search": "Шукати", + "searchPlugins": "Плагіни пошуку", + "allCategories": "Всі категорії", + "metadata": { + "title": "Плагіни" + }, + "difyVersionNotCompatible": "Поточна версія Dify не сумісна з цим плагіном, будь ласка, оновіть до мінімальної версії: {{minimalDifyVersion}}", + "requestAPlugin": "Запросити плагін", + "publishPlugins": "Публікація плагінів", + "auth": { + "custom": "Користувацький", + "authorization": "Авторизація", + "authRemoved": "Автор видалено", + "addOAuth": "Додати OAuth", + "setDefault": "Встановити за замовчуванням", + "useOAuth": "Використовуйте OAuth", + "useApi": "Використовуйте ключ API", + "saveAndAuth": "Зберегти та авторизувати", + "setupOAuth": "Налаштування OAuth клієнта", + "saveOnly": "Зберегти лише", + "authorizationName": "Назва авторизації", + "workspaceDefault": "За замовчуванням робочого простору", + "authorizations": "Авторизації", + "addApi": "Додайте ключ API", + "useOAuthAuth": "Використовуйте авторизацію OAuth", + "useApiAuth": "Конфігурація авторизації API ключа", + "oauthClientSettings": "Налаштування клієнта OAuth", + "default": "За замовчуванням", + "oauthClient": "Клієнт OAuth", + "clientInfo": "Оскільки не знайдено жодних секретів клієнта системи для цього постачальника інструментів, потрібно налаштувати його вручну; для redirect_uri, будь ласка, використовуйте", + "useApiAuthDesc": "Після налаштування облікових даних усі учасники робочого простору можуть використовувати цей інструмент під час оркестрації додатків.", + "unavailable": "Недоступний", + "customCredentialUnavailable": "Індивідуальні облікові дані наразі недоступні", + "credentialUnavailable": "Облікові дані наразі недоступні. Будь ласка, зверніться до адміністратора.", + "credentialUnavailableInButton": "Облікові дані недоступні", + "connectedWorkspace": "Підключене робоче середовище", + "emptyAuth": "Будь ласка, налаштуйте аутентифікацію" + }, + "deprecated": "Застарілий", + "autoUpdate": { + "strategy": { + "disabled": { + "name": "Вимкнено", + "description": "Плагіни не будуть автоматично оновлюватися" + }, + "fixOnly": { + "name": "Виправити тільки", + "selectedDescription": "Автоматичне оновлення лише для версій патчів", + "description": "Автооновлення лише для патч-версій (наприклад, 1.0.1 → 1.0.2). Зміни в малих версіях не активують оновлення." + }, + "latest": { + "name": "Останні", + "selectedDescription": "Завжди оновлюйте до останньої версії", + "description": "Завжди оновлюйте до останньої версії" + } + }, + "upgradeMode": { + "all": "Оновити все", + "partial": "Тільки вибрані", + "exclude": "Виключити вибране" + }, + "upgradeModePlaceholder": { + "exclude": "Вибрані плагіни не будуть оновлюватися автоматично", + "partial": "Тільки вибрані плагіни будуть автоматично оновлюватись. Наразі жоден з плагінів не вибрано, тому жоден плагін не буде автоматично оновлений." + }, + "operation": { + "clearAll": "Очистити все", + "select": "Виберіть плагіни" + }, + "pluginDowngradeWarning": { + "downgrade": "Все одно знизити версію", + "title": "Пониження плагіна", + "exclude": "Виключити з автоматичного оновлення", + "description": "Автоматичне оновлення наразі увімкнене для цього плагіна. Пониження версії може призвести до того, що ваші зміни будуть перезаписані під час наступного автоматичного оновлення." + }, + "noPluginPlaceholder": { + "noFound": "Плагіни не були знайдені", + "noInstalled": "Жодних плагінів не встановлено" + }, + "updateTime": "Час оновлення", + "automaticUpdates": "Автоматичні оновлення", + "updateTimeTitle": "Час оновлення", + "nextUpdateTime": "Наступне автоматичне оновлення: {{time}}", + "specifyPluginsToUpdate": "Вкажіть плагіни для оновлення", + "excludeUpdate": "Наступні {{num}} плагіни не будуть автоматично оновлюватися", + "updateSettings": "Оновити налаштування", + "changeTimezone": "Щоб змінити часовий пояс, перейдіть до Налаштування", + "partialUPdate": "Тільки наступні {{num}} плагіни будуть автоматично оновлюватися" + }, + "readmeInfo": { + "title": "Прочитай мене", + "needHelpCheckReadme": "Потрібна допомога? Перегляньте README.", + "noReadmeAvailable": "README недоступний", + "failedToFetch": "Не вдалося отримати README" + } +} diff --git a/web/i18n/uk-UA/plugin.ts b/web/i18n/uk-UA/plugin.ts deleted file mode 100644 index 948edc0c82..0000000000 --- a/web/i18n/uk-UA/plugin.ts +++ /dev/null @@ -1,325 +0,0 @@ -const translation = { - category: { - tools: 'Інструмент', - all: 'Увесь', - bundles: 'Пакети', - models: 'Моделі', - extensions: 'Розширення', - agents: 'Стратегії агентів', - datasources: 'Джерела даних', - triggers: 'Тригери', - }, - categorySingle: { - agent: 'Стратегія агента', - bundle: 'Комплектація', - tool: 'Інструмент', - extension: 'Збільшення', - model: 'Модель', - datasource: 'Джерело даних', - trigger: 'Спусковий механізм', - }, - list: { - source: { - local: 'Інсталяція з локального файлу пакета', - marketplace: 'Інсталяція з Marketplace', - github: 'Встановлення з GitHub', - }, - noInstalled: 'Плагіни не встановлено', - notFound: 'Плагінів не знайдено', - }, - source: { - marketplace: 'Ринку', - local: 'Файл локального пакета', - github: 'Гітхаб', - }, - detailPanel: { - categoryTip: { - github: 'Встановлено з Github', - debugging: 'Плагін налагодження', - local: 'Локальний плагін', - marketplace: 'Інстальовано з Marketplace', - }, - operation: { - viewDetail: 'Переглянути деталі', - detail: 'Деталі', - remove: 'Видалити', - install: 'Інсталювати', - checkUpdate: 'Перевірити Оновлення', - update: 'Оновлювати', - info: 'Інформація про плагін', - back: 'Назад', - }, - toolSelector: { - placeholder: 'Виберіть інструмент...', - descriptionLabel: 'Опис засобу', - paramsTip1: 'Контролює параметри логічного висновку LLM.', - toolLabel: 'Інструмент', - params: 'КОНФІГУРАЦІЯ МІРКУВАНЬ', - settings: 'НАЛАШТУВАННЯ КОРИСТУВАЧА', - uninstalledLink: 'Керування в плагінах', - title: 'Додати інструмент', - paramsTip2: 'Коли параметр "Автоматично" вимкнено, використовується значення за замовчуванням.', - empty: 'Натисніть кнопку «+», щоб додати інструменти. Ви можете додати кілька інструментів.', - uninstalledTitle: 'Інструмент не встановлено', - descriptionPlaceholder: 'Короткий опис призначення інструменту, наприклад, отримання температури для конкретного місця.', - unsupportedTitle: 'Непідтримувані дії', - unsupportedContent2: 'Натисніть, щоб змінити версію.', - auto: 'Автоматичний', - uninstalledContent: 'Цей плагін встановлюється з локального/GitHub репозиторію. Будь ласка, використовуйте після встановлення.', - unsupportedContent: 'Встановлена версія плагіна не передбачає цієї дії.', - toolSetting: 'Налаштування інструментів', - unsupportedMCPTool: 'Використовувана версія плагіна стратегії агента наразі не підтримує інструменти MCP.', - }, - modelNum: '{{num}} МОДЕЛІ В КОМПЛЕКТІ', - switchVersion: 'Версія перемикача', - configureApp: 'Налаштуйте додаток', - endpointDeleteTip: 'Видалити кінцеву точку', - endpoints: 'Кінцеві точки', - endpointsDocLink: 'Переглянути документ', - configureModel: 'Налаштування моделі', - endpointDisableTip: 'Вимкніть кінцеву точку', - endpointsEmpty: 'Натисніть кнопку «+», щоб додати кінцеву точку', - actionNum: '{{num}} {{дія}} ВКЛЮЧЕНІ', - disabled: 'Вимкнуто', - endpointModalTitle: 'Налаштування кінцевої точки', - endpointDisableContent: 'Чи хотіли б ви вимкнути {{name}}?', - endpointDeleteContent: 'Чи хотіли б ви видалити {{name}}?', - endpointsTip: 'Цей плагін надає конкретні функції через кінцеві точки, і ви можете налаштувати кілька наборів кінцевих точок для поточного робочого простору.', - strategyNum: '{{num}} {{стратегія}} ВКЛЮЧЕНІ', - endpointModalDesc: 'Після налаштування можна використовувати функції, що надаються плагіном через кінцеві точки API.', - configureTool: 'Інструмент налаштування', - serviceOk: 'Сервіс працює', - deprecation: { - reason: { - ownershipTransferred: 'право власності передано', - businessAdjustments: 'бізнесові корективи', - noMaintainer: 'немає супроводжувача', - }, - noReason: 'Цей плагін було застаріло, і він більше не буде оновлюватися.', - onlyReason: 'Цей плагін було знято з підтримки через {{deprecatedReason}} і більше не буде оновлюватися.', - fullMessage: 'Цей плагін був застарілий через {{deprecatedReason}}, і більше не буде оновлюватися. Будь ласка, використовуйте {{-alternativePluginId}} замість цього.', - }, - }, - debugInfo: { - title: 'Налагодження', - viewDocs: 'Переглянути документи', - }, - privilege: { - whoCanDebug: 'Хто може налагоджувати плагіни?', - admins: 'Адміни', - noone: 'Ніхто', - whoCanInstall: 'Хто може встановлювати плагіни та керувати ними?', - everyone: 'Кожен', - title: 'Налаштування плагіна', - }, - pluginInfoModal: { - repository: 'Сховище', - release: 'Реліз', - title: 'Інформація про плагін', - packageName: 'Пакунок', - }, - action: { - deleteContentLeft: 'Чи хотіли б ви видалити', - usedInApps: 'Цей плагін використовується в додатках {{num}}.', - deleteContentRight: 'плагін?', - checkForUpdates: 'Перевірте наявність оновлень', - delete: 'Видалити плагін', - pluginInfo: 'Інформація про плагін', - }, - installModal: { - labels: { - package: 'Пакунок', - repository: 'Сховище', - version: 'Версія', - }, - uploadFailed: 'Не вдалося завантажити файл', - close: 'Закрити', - installedSuccessfullyDesc: 'Плагін успішно встановлено.', - readyToInstallPackages: 'Про встановлення наступних плагінів {{num}}', - install: 'Інсталювати', - cancel: 'Скасувати', - readyToInstall: 'Про встановлення наступного плагіна', - pluginLoadErrorDesc: 'Цей плагін не буде встановлено', - installComplete: 'Інсталяцію завершено', - installing: 'Установки...', - installPlugin: 'Встановити плагін', - dropPluginToInstall: 'Перетягніть пакет плагіна сюди, щоб встановити', - uploadingPackage: 'Завантаження {{packageName}}...', - readyToInstallPackage: 'Про встановлення наступного плагіна', - pluginLoadError: 'Помилка завантаження плагіна', - fromTrustSource: 'Будь ласка, переконайтеся, що ви встановлюєте плагіни лише з надійного джерела.', - back: 'Задній', - installFailedDesc: 'Плагін був встановлений не вдалося.', - installFailed: 'Не вдалося встановити', - installedSuccessfully: 'Монтаж успішний', - next: 'Наступний', - installWarning: 'Цей плагін не можна установити.', - }, - installFromGitHub: { - selectVersionPlaceholder: 'Будь ласка, оберіть версію', - uploadFailed: 'Не вдалося завантажити файл', - selectVersion: 'Оберіть версію', - installNote: 'Будь ласка, переконайтеся, що ви встановлюєте плагіни лише з надійного джерела.', - gitHubRepo: 'Репозиторій GitHub', - installFailed: 'Не вдалося встановити', - installPlugin: 'Встановити плагін з GitHub', - updatePlugin: 'Оновити плагін з GitHub', - installedSuccessfully: 'Монтаж успішний', - selectPackage: 'Оберіть пакет', - selectPackagePlaceholder: 'Будь ласка, оберіть пакет', - }, - upgrade: { - description: 'Про встановлення наступного плагіна', - close: 'Закрити', - successfulTitle: 'Установка успішна', - upgrade: 'Інсталювати', - usedInApps: 'Використовується в додатках {{num}}', - upgrading: 'Установки...', - title: 'Встановити плагін', - }, - error: { - noReleasesFound: 'Релізів не знайдено. Будь ласка, перевірте репозиторій GitHub або URL-адресу введення.', - fetchReleasesError: 'Не вдається отримати згоди. Повторіть спробу пізніше.', - inValidGitHubUrl: 'Невірна URL-адреса GitHub. Будь ласка, введіть дійсну URL-адресу у форматі: https://github.com/owner/repo', - }, - marketplace: { - sortOption: { - mostPopular: 'Найпопулярніших', - newlyReleased: 'Новий реліз', - recentlyUpdated: 'Нещодавно оновлено', - firstReleased: 'Перший реліз', - }, - and: 'і', - discover: 'Виявити', - moreFrom: 'Більше від Marketplace', - sortBy: 'Чорне місто', - pluginsResult: 'Результати {{num}}', - empower: 'Розширюйте можливості розробки штучного інтелекту', - difyMarketplace: 'Dify Marketplace', - viewMore: 'Дивитись більше', - noPluginFound: 'Плагін не знайдено', - verifiedTip: 'Перевірено Dify', - partnerTip: 'Перевірено партнером Dify', - }, - task: { - installingWithError: 'Не вдалося встановити плагіни {{installingLength}}, успіх {{successLength}}, {{errorLength}}', - clearAll: 'Очистити все', - installedError: 'Плагіни {{errorLength}} не вдалося встановити', - installError: 'Плагіни {{errorLength}} не вдалося встановити, натисніть, щоб переглянути', - installing: 'Встановлення плагінів {{installingLength}}, 0 виконано.', - installingWithSuccess: 'Встановлення плагінів {{installingLength}}, успіх {{successLength}}.', - installSuccess: '{{successLength}} plugins installed successfully', - installed: 'Installed', - runningPlugins: 'Installing Plugins', - successPlugins: 'Successfully Installed Plugins', - errorPlugins: 'Failed to Install Plugins', - }, - from: 'Від', - searchInMarketplace: 'Пошук у Marketplace', - endpointsEnabled: '{{num}} наборів кінцевих точок увімкнено', - installAction: 'Інсталювати', - findMoreInMarketplace: 'Дізнайтеся більше в Marketplace', - installFrom: 'ВСТАНОВИТИ З', - install: '{{num}} встановлює', - fromMarketplace: 'Від Marketplace', - searchCategories: 'Категорії пошуку', - installPlugin: 'Встановити плагін', - searchTools: 'Інструменти пошуку...', - search: 'Шукати', - searchPlugins: 'Плагіни пошуку', - allCategories: 'Всі категорії', - metadata: { - title: 'Плагіни', - }, - difyVersionNotCompatible: 'Поточна версія Dify не сумісна з цим плагіном, будь ласка, оновіть до мінімальної версії: {{minimalDifyVersion}}', - requestAPlugin: 'Запросити плагін', - publishPlugins: 'Публікація плагінів', - auth: { - custom: 'Користувацький', - authorization: 'Авторизація', - authRemoved: 'Автор видалено', - addOAuth: 'Додати OAuth', - setDefault: 'Встановити за замовчуванням', - useOAuth: 'Використовуйте OAuth', - useApi: 'Використовуйте ключ API', - saveAndAuth: 'Зберегти та авторизувати', - setupOAuth: 'Налаштування OAuth клієнта', - saveOnly: 'Зберегти лише', - authorizationName: 'Назва авторизації', - workspaceDefault: 'За замовчуванням робочого простору', - authorizations: 'Авторизації', - addApi: 'Додайте ключ API', - useOAuthAuth: 'Використовуйте авторизацію OAuth', - useApiAuth: 'Конфігурація авторизації API ключа', - oauthClientSettings: 'Налаштування клієнта OAuth', - default: 'За замовчуванням', - oauthClient: 'Клієнт OAuth', - clientInfo: 'Оскільки не знайдено жодних секретів клієнта системи для цього постачальника інструментів, потрібно налаштувати його вручну; для redirect_uri, будь ласка, використовуйте', - useApiAuthDesc: 'Після налаштування облікових даних усі учасники робочого простору можуть використовувати цей інструмент під час оркестрації додатків.', - unavailable: 'Недоступний', - customCredentialUnavailable: 'Індивідуальні облікові дані наразі недоступні', - credentialUnavailable: 'Облікові дані наразі недоступні. Будь ласка, зверніться до адміністратора.', - credentialUnavailableInButton: 'Облікові дані недоступні', - connectedWorkspace: 'Підключене робоче середовище', - emptyAuth: 'Будь ласка, налаштуйте аутентифікацію', - }, - deprecated: 'Застарілий', - autoUpdate: { - strategy: { - disabled: { - name: 'Вимкнено', - description: 'Плагіни не будуть автоматично оновлюватися', - }, - fixOnly: { - name: 'Виправити тільки', - selectedDescription: 'Автоматичне оновлення лише для версій патчів', - description: 'Автооновлення лише для патч-версій (наприклад, 1.0.1 → 1.0.2). Зміни в малих версіях не активують оновлення.', - }, - latest: { - name: 'Останні', - selectedDescription: 'Завжди оновлюйте до останньої версії', - description: 'Завжди оновлюйте до останньої версії', - }, - }, - upgradeMode: { - all: 'Оновити все', - partial: 'Тільки вибрані', - exclude: 'Виключити вибране', - }, - upgradeModePlaceholder: { - exclude: 'Вибрані плагіни не будуть оновлюватися автоматично', - partial: 'Тільки вибрані плагіни будуть автоматично оновлюватись. Наразі жоден з плагінів не вибрано, тому жоден плагін не буде автоматично оновлений.', - }, - operation: { - clearAll: 'Очистити все', - select: 'Виберіть плагіни', - }, - pluginDowngradeWarning: { - downgrade: 'Все одно знизити версію', - title: 'Пониження плагіна', - exclude: 'Виключити з автоматичного оновлення', - description: 'Автоматичне оновлення наразі увімкнене для цього плагіна. Пониження версії може призвести до того, що ваші зміни будуть перезаписані під час наступного автоматичного оновлення.', - }, - noPluginPlaceholder: { - noFound: 'Плагіни не були знайдені', - noInstalled: 'Жодних плагінів не встановлено', - }, - updateTime: 'Час оновлення', - automaticUpdates: 'Автоматичні оновлення', - updateTimeTitle: 'Час оновлення', - nextUpdateTime: 'Наступне автоматичне оновлення: {{time}}', - specifyPluginsToUpdate: 'Вкажіть плагіни для оновлення', - excludeUpdate: 'Наступні {{num}} плагіни не будуть автоматично оновлюватися', - updateSettings: 'Оновити налаштування', - changeTimezone: 'Щоб змінити часовий пояс, перейдіть до Налаштування', - partialUPdate: 'Тільки наступні {{num}} плагіни будуть автоматично оновлюватися', - }, - readmeInfo: { - title: 'Прочитай мене', - needHelpCheckReadme: 'Потрібна допомога? Перегляньте README.', - noReadmeAvailable: 'README недоступний', - failedToFetch: 'Не вдалося отримати README', - }, -} - -export default translation diff --git a/web/i18n/uk-UA/register.json b/web/i18n/uk-UA/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/uk-UA/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/uk-UA/register.ts b/web/i18n/uk-UA/register.ts deleted file mode 100644 index 928649474b..0000000000 --- a/web/i18n/uk-UA/register.ts +++ /dev/null @@ -1,4 +0,0 @@ -const translation = { -} - -export default translation diff --git a/web/i18n/uk-UA/run-log.json b/web/i18n/uk-UA/run-log.json new file mode 100644 index 0000000000..1a29eb8c29 --- /dev/null +++ b/web/i18n/uk-UA/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "ВВЕДЕННЯ", + "result": "РЕЗУЛЬТАТ", + "detail": "ДЕТАЛІ", + "tracing": "ВІДСЛІДКУВАННЯ", + "resultPanel": { + "status": "СТАТУС", + "time": "ЧАС ВИКОНАННЯ", + "tokens": "ЗАГАЛЬНА КІЛЬКІСТЬ ТОКЕНІВ" + }, + "meta": { + "title": "МЕТАДАНІ", + "status": "Статус", + "version": "Версія", + "executor": "Виконавець", + "startTime": "Час початку", + "time": "Час виконання", + "tokens": "Загальна кількість токенів", + "steps": "Кроки виконання" + }, + "resultEmpty": { + "title": "Цей запуск лише вихідного формату JSON,", + "tipLeft": "будь ласка, перейдіть до ", + "link": "панель деталей", + "tipRight": " переглянути." + }, + "circularInvocationTip": "У поточному робочому процесі існує круговий виклик інструментів/вузлів.", + "actionLogs": "Журнали дій" +} diff --git a/web/i18n/uk-UA/run-log.ts b/web/i18n/uk-UA/run-log.ts deleted file mode 100644 index a2979f5c0c..0000000000 --- a/web/i18n/uk-UA/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -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: ' переглянути.', - }, - circularInvocationTip: 'У поточному робочому процесі існує круговий виклик інструментів/вузлів.', - actionLogs: 'Журнали дій', -} - -export default translation diff --git a/web/i18n/uk-UA/share.json b/web/i18n/uk-UA/share.json new file mode 100644 index 0000000000..b5ac717c78 --- /dev/null +++ b/web/i18n/uk-UA/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "", + "appUnavailable": "Додаток недоступний", + "appUnknownError": "Додаток недоступний" + }, + "chat": { + "newChat": "Новий чат", + "pinnedTitle": "Закріплені", + "unpinnedTitle": "Чати", + "newChatDefaultName": "Нова розмова", + "resetChat": "Очистити розмову", + "poweredBy": "Забезпечується", + "prompt": "Підказка", + "privatePromptConfigTitle": "Налаштування розмови", + "publicPromptConfigTitle": "Початкова підказка", + "configStatusDes": "Перед початком ви можете змінити налаштування розмови", + "configDisabled": "Для цього сеансу було використано налаштування попереднього сеансу.", + "startChat": "Почати чат", + "privacyPolicyLeft": "Будь ласка, ознайомтеся з ", + "privacyPolicyMiddle": "політикою конфіденційності", + "privacyPolicyRight": ", наданою розробником програми.", + "deleteConversation": { + "title": "Видалити розмову", + "content": "Ви впевнені, що хочете видалити цю розмову?" + }, + "tryToSolve": "Спробувати вирішити", + "temporarySystemIssue": "Вибачте, тимчасова системна проблема.", + "expand": "Розгорнути", + "collapse": "Згорнути", + "chatFormTip": "Налаштування чату не можуть бути змінені після початку чату.", + "viewChatSettings": "Переглянути налаштування чату", + "chatSettingsTitle": "Нове налаштування чату", + "newChatTip": "Вже в новому чаті" + }, + "generation": { + "tabs": { + "create": "Запустити один раз", + "batch": "Запустити пакет", + "saved": "Збережено" + }, + "savedNoData": { + "title": "Ви ще не зберегли результат!", + "description": "Почніть генерувати вміст і знайдіть збережені результати тут.", + "startCreateContent": "Почати створювати вміст" + }, + "title": "Доповнення AI", + "queryTitle": "Вміст запиту", + "completionResult": "Результат завершення", + "queryPlaceholder": "Напишіть вміст свого запиту...", + "run": "Виконати", + "copy": "Копіювати", + "resultTitle": "Доповнення AI", + "noData": "AI дасть вам те, що ви хочете тут.", + "csvUploadTitle": "Перетягніть файл CSV сюди або", + "browse": "переглянути", + "csvStructureTitle": "Файл CSV повинен відповідати наступній структурі:", + "downloadTemplate": "Завантажити шаблон тут", + "field": "Поле", + "batchFailed": { + "info": "{{num}} виконань не вдалося", + "retry": "Повторити", + "outputPlaceholder": "Вміст відсутній" + }, + "errorMsg": { + "empty": "Будь ласка, введіть вміст у завантажений файл.", + "fileStructNotMatch": "Завантажений CSV-файл не відповідає структурі.", + "emptyLine": "Рядок {{rowIndex}} порожній", + "invalidLine": "Рядок {{rowIndex}}: значення {{varName}} не може бути пустим", + "moreThanMaxLengthLine": "Рядок {{rowIndex}}: значення {{varName}} не може містити більше {{maxLength}} символів", + "atLeastOne": "Будь ласка, введіть принаймні один рядок у завантажений файл." + }, + "execution": "Запуск", + "executions": "{{num}} запусків", + "stopRun": "Зупинити виконання" + }, + "login": { + "backToHome": "Повернутися на головну" + } +} diff --git a/web/i18n/uk-UA/share.ts b/web/i18n/uk-UA/share.ts deleted file mode 100644 index 6813201c85..0000000000 --- a/web/i18n/uk-UA/share.ts +++ /dev/null @@ -1,82 +0,0 @@ -const translation = { - common: { - welcome: '', - appUnavailable: 'Додаток недоступний', - appUnknownError: 'Додаток недоступний', - }, - chat: { - newChat: 'Новий чат', - pinnedTitle: 'Закріплені', - unpinnedTitle: 'Чати', - newChatDefaultName: 'Нова розмова', - resetChat: 'Очистити розмову', - poweredBy: 'Забезпечується', - prompt: 'Підказка', - privatePromptConfigTitle: 'Налаштування розмови', - publicPromptConfigTitle: 'Початкова підказка', - configStatusDes: 'Перед початком ви можете змінити налаштування розмови', - configDisabled: 'Для цього сеансу було використано налаштування попереднього сеансу.', - startChat: 'Почати чат', - privacyPolicyLeft: 'Будь ласка, ознайомтеся з ', - privacyPolicyMiddle: 'політикою конфіденційності', - privacyPolicyRight: ', наданою розробником програми.', - deleteConversation: { - title: 'Видалити розмову', - content: 'Ви впевнені, що хочете видалити цю розмову?', - }, - tryToSolve: 'Спробувати вирішити', - temporarySystemIssue: 'Вибачте, тимчасова системна проблема.', - expand: 'Розгорнути', - collapse: 'Згорнути', - chatFormTip: 'Налаштування чату не можуть бути змінені після початку чату.', - viewChatSettings: 'Переглянути налаштування чату', - chatSettingsTitle: 'Нове налаштування чату', - newChatTip: 'Вже в новому чаті', - }, - generation: { - tabs: { - create: 'Запустити один раз', - batch: 'Запустити пакет', - saved: 'Збережено', - }, - savedNoData: { - title: 'Ви ще не зберегли результат!', - description: 'Почніть генерувати вміст і знайдіть збережені результати тут.', - startCreateContent: 'Почати створювати вміст', - }, - title: 'Доповнення AI', - queryTitle: 'Вміст запиту', - completionResult: 'Результат завершення', - queryPlaceholder: 'Напишіть вміст свого запиту...', - run: 'Виконати', - copy: 'Копіювати', - resultTitle: 'Доповнення AI', - noData: 'AI дасть вам те, що ви хочете тут.', - csvUploadTitle: 'Перетягніть файл CSV сюди або', - browse: 'переглянути', - csvStructureTitle: 'Файл CSV повинен відповідати наступній структурі:', - downloadTemplate: 'Завантажити шаблон тут', - field: 'Поле', - batchFailed: { - info: '{{num}} виконань не вдалося', - retry: 'Повторити', - outputPlaceholder: 'Вміст відсутній', - }, - errorMsg: { - empty: 'Будь ласка, введіть вміст у завантажений файл.', - fileStructNotMatch: 'Завантажений CSV-файл не відповідає структурі.', - emptyLine: 'Рядок {{rowIndex}} порожній', - invalidLine: 'Рядок {{rowIndex}}: значення {{varName}} не може бути пустим', - moreThanMaxLengthLine: 'Рядок {{rowIndex}}: значення {{varName}} не може містити більше {{maxLength}} символів', - atLeastOne: 'Будь ласка, введіть принаймні один рядок у завантажений файл.', - }, - execution: 'Запуск', - executions: '{{num}} запусків', - stopRun: 'Зупинити виконання', - }, - login: { - backToHome: 'Повернутися на головну', - }, -} - -export default translation diff --git a/web/i18n/uk-UA/time.json b/web/i18n/uk-UA/time.json new file mode 100644 index 0000000000..deb29ab6b4 --- /dev/null +++ b/web/i18n/uk-UA/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Thu": "Четвер", + "Fri": "Вільний", + "Sun": "Сонце", + "Tue": "Вівторок", + "Mon": "Мон", + "Sat": "Субота", + "Wed": "Середа" + }, + "months": { + "August": "Серпень", + "January": "Січень", + "October": "Жовтень", + "June": "Червень", + "September": "Вересень", + "February": "Лютий", + "November": "Листопад", + "July": "Липень", + "May": "Травень", + "December": "Грудень", + "April": "Квітень", + "March": "Березень" + }, + "operation": { + "cancel": "Скасувати", + "pickDate": "Виберіть дату", + "now": "Тепер", + "ok": "Добре" + }, + "title": { + "pickTime": "Виберіть час" + }, + "defaultPlaceholder": "Виберіть час...", + "dateFormats": { + "displayWithTime": "MMMM D, YYYY hh:mm A", + "output": "РРРР-ММ-ДД", + "display": "MMMM D, YYYY", + "outputWithTime": "YYYY-MM-DDTHH:mm:ss.SSSZ", + "input": "РРРР-ММ-ДД" + } +} diff --git a/web/i18n/uk-UA/time.ts b/web/i18n/uk-UA/time.ts deleted file mode 100644 index 2247370e1e..0000000000 --- a/web/i18n/uk-UA/time.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - daysInWeek: { - Thu: 'Четвер', - Fri: 'Вільний', - Sun: 'Сонце', - Tue: 'Вівторок', - Mon: 'Мон', - Sat: 'Субота', - Wed: 'Середа', - }, - months: { - August: 'Серпень', - January: 'Січень', - October: 'Жовтень', - June: 'Червень', - September: 'Вересень', - February: 'Лютий', - November: 'Листопад', - July: 'Липень', - May: 'Травень', - December: 'Грудень', - April: 'Квітень', - March: 'Березень', - }, - operation: { - cancel: 'Скасувати', - pickDate: 'Виберіть дату', - now: 'Тепер', - ok: 'Добре', - }, - title: { - pickTime: 'Виберіть час', - }, - defaultPlaceholder: 'Виберіть час...', - dateFormats: { - displayWithTime: 'MMMM D, YYYY hh:mm A', - output: 'РРРР-ММ-ДД', - display: 'MMMM D, YYYY', - outputWithTime: 'YYYY-MM-DDTHH:mm:ss.SSSZ', - input: 'РРРР-ММ-ДД', - }, -} - -export default translation diff --git a/web/i18n/uk-UA/tools.json b/web/i18n/uk-UA/tools.json new file mode 100644 index 0000000000..3dd5a275f3 --- /dev/null +++ b/web/i18n/uk-UA/tools.json @@ -0,0 +1,262 @@ +{ + "title": "Інструменти", + "createCustomTool": "Створити власний інструмент", + "type": { + "builtIn": "Вбудовані", + "custom": "Користувацькі", + "workflow": "Робочий процес" + }, + "contribute": { + "line1": "Мені цікаво зробити свій внесок", + "line2": "створення інструментів для Dify.", + "viewGuide": "Переглянути інструкцію" + }, + "author": "Автор", + "auth": { + "authorized": "Авторизовано", + "setup": "Налаштувати авторизацію, щоб використовувати", + "setupModalTitle": "Налаштування авторизації", + "setupModalTitleDescription": "Після налаштування облікових даних усі члени робочого простору можуть використовувати цей інструмент під час оркестрування програм." + }, + "includeToolNum": "{{num}} інструмент(ів) включено", + "createTool": { + "title": "Створити власний інструмент", + "editAction": "Налаштування", + "editTitle": "Редагувати настроюваний інструмент", + "name": "Назва", + "toolNamePlaceHolder": "Введіть назву інструменту", + "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": "Відсутня", + "apiKeyPlaceholder": "Назва HTTP-заголовка для API-ключа", + "apiValuePlaceholder": "Введіть API-ключ", + "api_key_header": "Заголовок", + "queryParamPlaceholder": "Назва параметра запиту для API Ключа", + "api_key_query": "Параметр запиту" + }, + "key": "Ключ", + "value": "Значення", + "queryParam": "Параметр запиту", + "queryParamTooltip": "Ім'я параметра запиту для ключа API, який потрібно передати, наприклад, \"key\" в \"https://example.com/test?key=API_KEY\"." + }, + "authHeaderPrefix": { + "types": { + "basic": "Basic", + "bearer": "Bearer", + "custom": "Custom" + }, + "title": "Тип аутентифікації" + }, + "privacyPolicy": "Політика конфіденційності", + "privacyPolicyPlaceholder": "Введіть політику конфіденційності", + "customDisclaimer": "Власний відомості", + "customDisclaimerPlaceholder": "Введіть власні відомості", + "deleteToolConfirmTitle": "Видалити цей інструмент?", + "deleteToolConfirmContent": "Видалення інструменту є незворотнім. Користувачі більше не зможуть отримати доступ до вашого інструменту.", + "toolInput": { + "label": "Мітки", + "name": "Ім'я", + "required": "Необхідний", + "method": "Метод", + "title": "Введення інструменту", + "methodSetting": "Параметр", + "description": "Опис", + "methodParameter": "Параметр", + "labelPlaceholder": "Виберіть теги (необов'язково)", + "descriptionPlaceholder": "Опис значення параметра", + "methodSettingTip": "Користувач заповнює конфігурацію інструменту", + "methodParameterTip": "LLM заповнюється під час логічного висновку" + }, + "description": "Опис", + "nameForToolCall": "Ім'я виклику інструменту", + "confirmTitle": "Підтвердьте, щоб зберегти?", + "nameForToolCallTip": "Підтримує лише цифри, літери та підкреслення.", + "confirmTip": "Це вплине на програми, які використовують цей інструмент", + "nameForToolCallPlaceHolder": "Використовується для розпізнавання машин, таких як getCurrentWeather, list_pets", + "descriptionPlaceholder": "Короткий опис призначення інструменту, наприклад, отримання температури для конкретного місця.", + "toolOutput": { + "title": "Вихідні дані інструменту", + "name": "Ім'я", + "reserved": "Зарезервовано", + "reservedParameterDuplicateTip": "text, json та файли є зарезервованими змінними. Змінні з такими іменами не можуть з’являтися в схемі вихідних даних.", + "description": "Опис" + } + }, + "test": { + "title": "Тест", + "parametersValue": "Параметри та значення", + "parameters": "Параметри", + "value": "Значення", + "testResult": "Результати тесту", + "testResultPlaceholder": "Результат тесту буде відображатися тут" + }, + "thought": { + "using": "Використання", + "used": "Використано", + "requestTitle": "Запит до", + "responseTitle": "Відповідь від" + }, + "setBuiltInTools": { + "info": "Інформація", + "setting": "Налаштування", + "toolDescription": "Опис інструменту", + "parameters": "Параметри", + "string": "Рядок", + "number": "Число", + "required": "Обов’язково", + "infoAndSetting": "Інформація та налаштування", + "file": "файл" + }, + "noCustomTool": { + "title": "Немає користувацьких інструментів!", + "content": "Додавайте та керуйте своїми власними інструментами тут для створення програм зі штучним інтелектом.", + "createTool": "Створити інструмент" + }, + "noSearchRes": { + "title": "Вибачте, немає результатів!", + "content": "Ми не знайшли жодних інструментів, які б відповідали вашому пошуку.", + "reset": "Скинути пошук" + }, + "builtInPromptTitle": "Підказка", + "toolRemoved": "Інструмент видалено", + "notAuthorized": "Інструмент не авторизовано", + "howToGet": "Як отримати", + "addToolModal": { + "category": "категорія", + "added": "Додано", + "type": "тип", + "custom": { + "title": "Немає доступного користувацького інструмента", + "tip": "Створити користувацький інструмент" + }, + "workflow": { + "title": "Немає доступного інструмента робочого процесу", + "tip": "Опублікуйте робочі процеси як інструменти в Studio" + }, + "mcp": { + "title": "Немає доступного інструмента MCP", + "tip": "Додати сервер MCP" + }, + "agent": { + "title": "Немає доступної стратегії агента" + } + }, + "openInStudio": "Відкрити в Студії", + "customToolTip": "Дізнайтеся більше про користувацькі інструменти Dify", + "toolNameUsageTip": "Ім'я виклику інструменту для міркувань і підказок агента", + "copyToolName": "Ім'я копії", + "noTools": "Інструментів не знайдено", + "mcp": { + "create": { + "cardTitle": "Додати сервер MCP (HTTP)", + "cardLink": "Дізнатися більше про інтеграцію сервера MCP" + }, + "noConfigured": "Сервер не налаштовано", + "updateTime": "Оновлено", + "toolsCount": "{count} інструментів", + "noTools": "Інструменти відсутні", + "modal": { + "title": "Додати сервер MCP (HTTP)", + "editTitle": "Редагувати сервер MCP (HTTP)", + "name": "Назва та значок", + "namePlaceholder": "Назвіть ваш сервер MCP", + "serverUrl": "URL сервера", + "serverUrlPlaceholder": "URL кінцевої точки сервера", + "serverUrlWarning": "Оновлення адреси сервера може порушити роботу додатків, що залежать від нього", + "serverIdentifier": "Ідентифікатор сервера", + "serverIdentifierTip": "Унікальний ідентифікатор сервера MCP у робочому просторі. Лише малі літери, цифри, підкреслення та дефіси. До 24 символів.", + "serverIdentifierPlaceholder": "Унікальний ідентифікатор, напр. my-mcp-server", + "serverIdentifierWarning": "Після зміни ID існуючі додатки не зможуть розпізнати сервер", + "cancel": "Скасувати", + "save": "Зберегти", + "confirm": "Додати та Авторизувати", + "timeout": "Час вичерпано", + "sseReadTimeout": "Тайм-аут читання SSE", + "headers": "Заголовки", + "headerValuePlaceholder": "наприклад, токен носія 123", + "headerValue": "Значення заголовка", + "headerKey": "Назва заголовка", + "timeoutPlaceholder": "тридцять", + "addHeader": "Додати заголовок", + "noHeaders": "Не налаштовано спеціальні заголовки", + "headerKeyPlaceholder": "наприклад, Авторизація", + "maskedHeadersTip": "Значення заголовків маскуються для безпеки. Зміни оновлять фактичні значення.", + "headersTip": "Додаткові HTTP заголовки для відправлення з запитами до сервера MCP", + "clientSecret": "Секрет клієнта", + "clientSecretPlaceholder": "Секрет клієнта", + "clientID": "Ідентифікатор клієнта", + "authentication": "Аутентифікація", + "configurations": "Конфігурації", + "useDynamicClientRegistration": "Використовувати динамічну реєстрацію клієнтів", + "redirectUrlWarning": "Будь ласка, налаштуйте URL-адресу перенаправлення OAuth на:" + }, + "delete": "Видалити сервер MCP", + "deleteConfirmTitle": "Видалити {mcp}?", + "operation": { + "edit": "Редагувати", + "remove": "Видалити" + }, + "authorize": "Авторизувати", + "authorizing": "Авторизація...", + "authorizingRequired": "Потрібна авторизація", + "authorizeTip": "Після авторизації інструменти відображатимуться тут.", + "update": "Оновити", + "updating": "Оновлення...", + "gettingTools": "Отримання інструментів...", + "updateTools": "Оновлення інструментів...", + "toolsEmpty": "Інструменти не завантажено", + "getTools": "Отримати інструменти", + "toolUpdateConfirmTitle": "Оновити список інструментів", + "toolUpdateConfirmContent": "Оновлення списку інструментів може вплинути на існуючі додатки. Продовжити?", + "toolsNum": "{count} інструментів включено", + "onlyTool": "1 інструмент включено", + "identifier": "Ідентифікатор сервера (Натисніть, щоб скопіювати)", + "server": { + "title": "Сервер MCP", + "url": "URL сервера", + "reGen": "Згенерувати URL сервера знову?", + "addDescription": "Додати опис", + "edit": "Редагувати опис", + "modal": { + "addTitle": "Додайте опис для активації сервера MCP", + "editTitle": "Редагувати опис", + "description": "Опис", + "descriptionPlaceholder": "Поясніть функціонал інструменту та його використання LLM", + "parameters": "Параметри", + "parametersTip": "Додайте описи параметрів, щоб допомогти LLM зрозуміти їх призначення та обмеження.", + "parametersPlaceholder": "Призначення та обмеження параметра", + "confirm": "Активувати сервер MCP" + }, + "publishTip": "Додаток не опубліковано. Спочатку опублікуйте додаток." + }, + "toolItem": { + "parameters": "Параметри", + "noDescription": "Немає опису" + } + }, + "allTools": "Всі інструменти" +} diff --git a/web/i18n/uk-UA/tools.ts b/web/i18n/uk-UA/tools.ts deleted file mode 100644 index 2f56eed092..0000000000 --- a/web/i18n/uk-UA/tools.ts +++ /dev/null @@ -1,264 +0,0 @@ -const translation = { - title: 'Інструменти', - createCustomTool: 'Створити власний інструмент', - type: { - builtIn: 'Вбудовані', - custom: 'Користувацькі', - workflow: 'Робочий процес', - }, - contribute: { - line1: 'Мені цікаво зробити свій внесок', - line2: 'створення інструментів для Dify.', - viewGuide: 'Переглянути інструкцію', - }, - author: 'Автор', - auth: { - authorized: 'Авторизовано', - setup: 'Налаштувати авторизацію, щоб використовувати', - setupModalTitle: 'Налаштування авторизації', - setupModalTitleDescription: 'Після налаштування облікових даних усі члени робочого простору можуть використовувати цей інструмент під час оркестрування програм.', - }, - includeToolNum: '{{num}} інструмент(ів) включено', - createTool: { - title: 'Створити власний інструмент', - editAction: 'Налаштування', - editTitle: 'Редагувати настроюваний інструмент', - name: 'Назва', - toolNamePlaceHolder: 'Введіть назву інструменту', - 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: 'Відсутня', - apiKeyPlaceholder: 'Назва HTTP-заголовка для API-ключа', - apiValuePlaceholder: 'Введіть API-ключ', - api_key_header: 'Заголовок', - queryParamPlaceholder: 'Назва параметра запиту для API Ключа', - api_key_query: 'Параметр запиту', - }, - key: 'Ключ', - value: 'Значення', - queryParam: 'Параметр запиту', - queryParamTooltip: 'Ім\'я параметра запиту для ключа API, який потрібно передати, наприклад, "key" в "https://example.com/test?key=API_KEY".', - }, - authHeaderPrefix: { - types: { - basic: 'Basic', - bearer: 'Bearer', - custom: 'Custom', - }, - title: 'Тип аутентифікації', - }, - privacyPolicy: 'Політика конфіденційності', - privacyPolicyPlaceholder: 'Введіть політику конфіденційності', - customDisclaimer: 'Власний відомості', - customDisclaimerPlaceholder: 'Введіть власні відомості', - deleteToolConfirmTitle: 'Видалити цей інструмент?', - deleteToolConfirmContent: 'Видалення інструменту є незворотнім. Користувачі більше не зможуть отримати доступ до вашого інструменту.', - toolInput: { - label: 'Мітки', - name: 'Ім\'я', - required: 'Необхідний', - method: 'Метод', - title: 'Введення інструменту', - methodSetting: 'Параметр', - description: 'Опис', - methodParameter: 'Параметр', - labelPlaceholder: 'Виберіть теги (необов\'язково)', - descriptionPlaceholder: 'Опис значення параметра', - methodSettingTip: 'Користувач заповнює конфігурацію інструменту', - methodParameterTip: 'LLM заповнюється під час логічного висновку', - }, - description: 'Опис', - nameForToolCall: 'Ім\'я виклику інструменту', - confirmTitle: 'Підтвердьте, щоб зберегти?', - nameForToolCallTip: 'Підтримує лише цифри, літери та підкреслення.', - confirmTip: 'Це вплине на програми, які використовують цей інструмент', - nameForToolCallPlaceHolder: 'Використовується для розпізнавання машин, таких як getCurrentWeather, list_pets', - descriptionPlaceholder: 'Короткий опис призначення інструменту, наприклад, отримання температури для конкретного місця.', - toolOutput: { - title: 'Вихідні дані інструменту', - name: 'Ім\'я', - reserved: 'Зарезервовано', - reservedParameterDuplicateTip: 'text, json та файли є зарезервованими змінними. Змінні з такими іменами не можуть з’являтися в схемі вихідних даних.', - description: 'Опис', - }, - }, - test: { - title: 'Тест', - parametersValue: 'Параметри та значення', - parameters: 'Параметри', - value: 'Значення', - testResult: 'Результати тесту', - testResultPlaceholder: 'Результат тесту буде відображатися тут', - }, - thought: { - using: 'Використання', - used: 'Використано', - requestTitle: 'Запит до', - responseTitle: 'Відповідь від', - }, - setBuiltInTools: { - info: 'Інформація', - setting: 'Налаштування', - toolDescription: 'Опис інструменту', - parameters: 'Параметри', - string: 'Рядок', - number: 'Число', - required: 'Обов’язково', - infoAndSetting: 'Інформація та налаштування', - file: 'файл', - }, - noCustomTool: { - title: 'Немає користувацьких інструментів!', - content: 'Додавайте та керуйте своїми власними інструментами тут для створення програм зі штучним інтелектом.', - createTool: 'Створити інструмент', - }, - noSearchRes: { - title: 'Вибачте, немає результатів!', - content: 'Ми не знайшли жодних інструментів, які б відповідали вашому пошуку.', - reset: 'Скинути пошук', - }, - builtInPromptTitle: 'Підказка', - toolRemoved: 'Інструмент видалено', - notAuthorized: 'Інструмент не авторизовано', - howToGet: 'Як отримати', - addToolModal: { - category: 'категорія', - added: 'Додано', - type: 'тип', - custom: { - title: 'Немає доступного користувацького інструмента', - tip: 'Створити користувацький інструмент', - }, - workflow: { - title: 'Немає доступного інструмента робочого процесу', - tip: 'Опублікуйте робочі процеси як інструменти в Studio', - }, - mcp: { - title: 'Немає доступного інструмента MCP', - tip: 'Додати сервер MCP', - }, - agent: { - title: 'Немає доступної стратегії агента', - }, - }, - openInStudio: 'Відкрити в Студії', - customToolTip: 'Дізнайтеся більше про користувацькі інструменти Dify', - toolNameUsageTip: 'Ім\'я виклику інструменту для міркувань і підказок агента', - copyToolName: 'Ім\'я копії', - noTools: 'Інструментів не знайдено', - mcp: { - create: { - cardTitle: 'Додати сервер MCP (HTTP)', - cardLink: 'Дізнатися більше про інтеграцію сервера MCP', - }, - noConfigured: 'Сервер не налаштовано', - updateTime: 'Оновлено', - toolsCount: '{count} інструментів', - noTools: 'Інструменти відсутні', - modal: { - title: 'Додати сервер MCP (HTTP)', - editTitle: 'Редагувати сервер MCP (HTTP)', - name: 'Назва та значок', - namePlaceholder: 'Назвіть ваш сервер MCP', - serverUrl: 'URL сервера', - serverUrlPlaceholder: 'URL кінцевої точки сервера', - serverUrlWarning: 'Оновлення адреси сервера може порушити роботу додатків, що залежать від нього', - serverIdentifier: 'Ідентифікатор сервера', - serverIdentifierTip: 'Унікальний ідентифікатор сервера MCP у робочому просторі. Лише малі літери, цифри, підкреслення та дефіси. До 24 символів.', - serverIdentifierPlaceholder: 'Унікальний ідентифікатор, напр. my-mcp-server', - serverIdentifierWarning: 'Після зміни ID існуючі додатки не зможуть розпізнати сервер', - cancel: 'Скасувати', - save: 'Зберегти', - confirm: 'Додати та Авторизувати', - timeout: 'Час вичерпано', - sseReadTimeout: 'Тайм-аут читання SSE', - headers: 'Заголовки', - headerValuePlaceholder: 'наприклад, токен носія 123', - headerValue: 'Значення заголовка', - headerKey: 'Назва заголовка', - timeoutPlaceholder: 'тридцять', - addHeader: 'Додати заголовок', - noHeaders: 'Не налаштовано спеціальні заголовки', - headerKeyPlaceholder: 'наприклад, Авторизація', - maskedHeadersTip: 'Значення заголовків маскуються для безпеки. Зміни оновлять фактичні значення.', - headersTip: 'Додаткові HTTP заголовки для відправлення з запитами до сервера MCP', - clientSecret: 'Секрет клієнта', - clientSecretPlaceholder: 'Секрет клієнта', - clientID: 'Ідентифікатор клієнта', - authentication: 'Аутентифікація', - configurations: 'Конфігурації', - useDynamicClientRegistration: 'Використовувати динамічну реєстрацію клієнтів', - redirectUrlWarning: 'Будь ласка, налаштуйте URL-адресу перенаправлення OAuth на:', - }, - delete: 'Видалити сервер MCP', - deleteConfirmTitle: 'Видалити {mcp}?', - operation: { - edit: 'Редагувати', - remove: 'Видалити', - }, - authorize: 'Авторизувати', - authorizing: 'Авторизація...', - authorizingRequired: 'Потрібна авторизація', - authorizeTip: 'Після авторизації інструменти відображатимуться тут.', - update: 'Оновити', - updating: 'Оновлення...', - gettingTools: 'Отримання інструментів...', - updateTools: 'Оновлення інструментів...', - toolsEmpty: 'Інструменти не завантажено', - getTools: 'Отримати інструменти', - toolUpdateConfirmTitle: 'Оновити список інструментів', - toolUpdateConfirmContent: 'Оновлення списку інструментів може вплинути на існуючі додатки. Продовжити?', - toolsNum: '{count} інструментів включено', - onlyTool: '1 інструмент включено', - identifier: 'Ідентифікатор сервера (Натисніть, щоб скопіювати)', - server: { - title: 'Сервер MCP', - url: 'URL сервера', - reGen: 'Згенерувати URL сервера знову?', - addDescription: 'Додати опис', - edit: 'Редагувати опис', - modal: { - addTitle: 'Додайте опис для активації сервера MCP', - editTitle: 'Редагувати опис', - description: 'Опис', - descriptionPlaceholder: 'Поясніть функціонал інструменту та його використання LLM', - parameters: 'Параметри', - parametersTip: 'Додайте описи параметрів, щоб допомогти LLM зрозуміти їх призначення та обмеження.', - parametersPlaceholder: 'Призначення та обмеження параметра', - confirm: 'Активувати сервер MCP', - }, - publishTip: 'Додаток не опубліковано. Спочатку опублікуйте додаток.', - }, - toolItem: { - parameters: 'Параметри', - noDescription: 'Немає опису', - }, - }, - allTools: 'Всі інструменти', -} - -export default translation diff --git a/web/i18n/uk-UA/workflow.json b/web/i18n/uk-UA/workflow.json new file mode 100644 index 0000000000..f62bf3352a --- /dev/null +++ b/web/i18n/uk-UA/workflow.json @@ -0,0 +1,1294 @@ +{ + "common": { + "undo": "Скасувати", + "redo": "Повторити", + "editing": "Редагування", + "autoSaved": "Автоматично збережено", + "unpublished": "Неопубліковано", + "published": "Опубліковано", + "publish": "Опублікувати", + "update": "Оновити", + "run": "Тестовий запуск", + "running": "Запущено", + "inRunMode": "У режимі запуску", + "inPreview": "У режимі попереднього перегляду", + "inPreviewMode": "У режимі попереднього перегляду", + "preview": "Попередній перегляд", + "viewRunHistory": "Переглянути історію запусків", + "runHistory": "Історія запусків", + "goBackToEdit": "Повернутися до редактора", + "conversationLog": "Журнал розмов", + "debugAndPreview": "Попередній перегляд", + "restart": "Перезапустити", + "currentDraft": "Поточний чернетка", + "currentDraftUnpublished": "Поточний чернетка неопублікований", + "latestPublished": "Останнє опубліковане", + "publishedAt": "Опубліковано о", + "restore": "Відновити", + "runApp": "Запустити додаток", + "batchRunApp": "Пакетний запуск додатку", + "accessAPIReference": "Доступ до довідника API", + "embedIntoSite": "Вбудувати на сайт", + "addTitle": "Додати заголовок...", + "addDescription": "Додати опис...", + "noVar": "Без змінної", + "searchVar": "Пошук змінної", + "variableNamePlaceholder": "Назва змінної", + "setVarValuePlaceholder": "Встановити значення змінної", + "needConnectTip": "Цей крок ні до чого не підключений", + "maxTreeDepth": "Максимальний ліміт {{depth}} вузлів на гілку", + "workflowProcess": "Процес робочого потоку", + "notRunning": "Ще не запущено", + "previewPlaceholder": "Введіть вміст у поле нижче, щоб розпочати налагодження чат-бота", + "effectVarConfirm": { + "title": "Видалити змінну", + "content": "Змінна використовується в інших вузлах. Ви все ще хочете її видалити?" + }, + "insertVarTip": "Натисніть клавішу '/' для швидкого вставлення", + "processData": "Обробити дані", + "input": "Вхід", + "output": "Вихід", + "jinjaEditorPlaceholder": "Введіть '/' або '{' для вставлення змінної", + "viewOnly": "Тільки перегляд", + "showRunHistory": "Показати історію запусків", + "enableJinja": "Увімкнути підтримку шаблонів Jinja", + "learnMore": "Дізнатися більше", + "copy": "Копіювати", + "duplicate": "Дублювати", + "pasteHere": "Вставити сюди", + "pointerMode": "Режим вказівника", + "handMode": "Ручний режим", + "model": "Модель", + "workflowAsTool": "Робочий потік як інструмент", + "configureRequired": "Потрібна конфігурація", + "configure": "Налаштувати", + "manageInTools": "Керування в інструментах", + "workflowAsToolTip": "Після оновлення робочого потоку необхідна переконфігурація інструменту.", + "viewDetailInTracingPanel": "Переглянути деталі", + "importSuccess": "Успіх імпорту", + "overwriteAndImport": "Перезапис та імпорт", + "importFailure": "Помилка імпорту", + "importDSL": "Імпорт DSL", + "syncingData": "Синхронізація даних, всього за кілька секунд.", + "chooseDSL": "Виберіть файл DSL(yml)", + "backupCurrentDraft": "Резервна поточна чернетка", + "importDSLTip": "Поточна чернетка буде перезаписана. Експортуйте робочий процес як резервну копію перед імпортом.", + "parallelTip": { + "click": { + "title": "Натисніть", + "desc": "щоб додати" + }, + "drag": { + "title": "Перетягувати", + "desc": "Щоб підключити" + }, + "limit": "Паралелізм обмежується {{num}} гілками.", + "depthLimit": "Обмеження рівня паралельного вкладеності шарів {{num}}" + }, + "disconnect": "Відключити", + "jumpToNode": "Перейти до цього вузла", + "addParallelNode": "Додати паралельний вузол", + "parallel": "ПАРАЛЕЛЬНИЙ", + "branch": "ГІЛКА", + "fileUploadTip": "Функції завантаження зображень були оновлені для завантаження файлів.", + "ImageUploadLegacyTip": "Тепер ви можете створювати змінні типу файлу у початковій формі. У майбутньому ми більше не підтримуватимемо функцію завантаження зображень.", + "importWarning": "Обережність", + "importWarningDetails": "Різниця у версіях DSL може впливати на певні функції", + "openInExplore": "Відкрити в Огляді", + "onFailure": "Про невдачу", + "addFailureBranch": "Додано гілку помилки", + "noHistory": "Без історії", + "loadMore": "Завантажте більше робочих процесів", + "exportPNG": "Експортувати як PNG", + "exitVersions": "Вихідні версії", + "versionHistory": "Історія версій", + "publishUpdate": "Опублікувати оновлення", + "exportImage": "Експорт зображення", + "exportSVG": "Експортувати як SVG", + "exportJPEG": "Експортувати як JPEG", + "addBlock": "Додати вузол", + "needOutputNode": "Необхідно додати вихідний вузол", + "needAnswerNode": "Вузол Відповіді повинен бути доданий", + "tagBound": "Кількість додатків, що використовують цей тег", + "currentView": "Поточний вигляд", + "currentWorkflow": "Поточний робочий процес", + "moreActions": "Більше дій", + "listening": "Слухання", + "chooseStartNodeToRun": "Виберіть початковий вузол для запуску", + "runAllTriggers": "Запустити всі тригери", + "features": "Особливості", + "featuresDescription": "Покращити користувацький досвід веб-додатку", + "featuresDocLink": "Дізнатися більше", + "needAdd": "Потрібно додати вузол {{node}}", + "needStartNode": "Потрібно додати щонайменше один початковий вузол", + "workflowAsToolDisabledHint": "Опублікуйте останній робочий процес і переконайтеся, що перед налаштуванням його як інструменту є підключений вузол введення користувача." + }, + "env": { + "envPanelTitle": "Змінні середовища", + "envDescription": "Змінні середовища можуть використовуватися для зберігання приватної інформації та облікових даних. Вони доступні лише для читання і можуть бути відокремлені від файлу DSL під час експорту.", + "envPanelButton": "Додати змінну", + "modal": { + "title": "Додати змінну середовища", + "editTitle": "Редагувати змінну середовища", + "type": "Тип", + "name": "Назва", + "namePlaceholder": "назва середовища", + "value": "Значення", + "valuePlaceholder": "значення середовища", + "secretTip": "Використовується для визначення конфіденційної інформації або даних, з налаштуваннями DSL, сконфігурованими для запобігання витоку.", + "description": "Опис", + "descriptionPlaceholder": "Опишіть змінну" + }, + "export": { + "title": "Експортувати секретні змінні середовища?", + "checkbox": "Експортувати секретні значення", + "ignore": "Експортувати DSL", + "export": "Експортувати DSL з секретними значеннями" + } + }, + "globalVar": { + "title": "Системні змінні", + "description": "Системні змінні — це глобальні змінні, до яких будь-який вузол може звертатися без з’єднання, якщо тип відповідає, наприклад ID кінцевого користувача та ID робочого процесу.", + "fieldsDescription": { + "conversationId": "ID розмови", + "dialogCount": "Кількість розмов", + "userId": "ID користувача", + "triggerTimestamp": "Мітка часу запуску застосунку", + "appId": "ID застосунку", + "workflowId": "ID робочого процесу", + "workflowRunId": "ID запуску робочого процесу" + } + }, + "chatVariable": { + "panelTitle": "Змінні розмови", + "panelDescription": "Змінні розмови використовуються для зберігання інтерактивної інформації, яку LLM повинен пам'ятати, включаючи історію розмови, завантажені файли, вподобання користувача. Вони доступні для читання та запису.", + "docLink": "Відвідайте нашу документацію, щоб дізнатися більше.", + "button": "Додати змінну", + "modal": { + "title": "Додати змінну розмови", + "editTitle": "Редагувати змінну розмови", + "name": "Назва", + "namePlaceholder": "Назва змінної", + "type": "Тип", + "value": "Значення за замовчуванням", + "valuePlaceholder": "Значення за замовчуванням, залиште порожнім, щоб не встановлювати", + "description": "Опис", + "descriptionPlaceholder": "Опишіть змінну", + "editInJSON": "Редагувати в JSON", + "oneByOne": "Додавати по одному", + "editInForm": "Редагувати у формі", + "arrayValue": "Значення", + "addArrayValue": "Додати значення", + "objectKey": "Ключ", + "objectType": "Тип", + "objectValue": "Значення за замовчуванням" + }, + "storedContent": "Збережений вміст", + "updatedAt": "Оновлено " + }, + "changeHistory": { + "title": "Історія змін", + "placeholder": "Ви ще нічого не змінили", + "clearHistory": "Очистити історію", + "hint": "Підказка", + "hintText": "Дії редагування відстежуються в історії змін, яка зберігається на вашому пристрої протягом цієї сесії. Ця історія буде видалена після виходу з редактора.", + "stepBackward_one": "{{count}} крок назад", + "stepBackward_other": "{{count}} кроки назад", + "stepForward_one": "{{count}} крок вперед", + "stepForward_other": "{{count}} кроки вперед", + "sessionStart": "Початок сесії", + "currentState": "Поточний стан", + "noteAdd": "Додано нотатку", + "noteChange": "Нотатку змінено", + "noteDelete": "Нотатку видалено", + "nodeTitleChange": "Заголовок вузла змінено", + "nodeResize": "Вузол змінив розмір", + "nodePaste": "Вузол вставлений", + "nodeDelete": "Вузол видалено", + "nodeDragStop": "Вузол переміщено", + "edgeDelete": "Вузол відключено", + "nodeChange": "Вузол змінився", + "nodeAdd": "Додано вузол", + "nodeDescriptionChange": "Опис вузла змінено", + "nodeConnect": "Вузол підключено" + }, + "errorMsg": { + "fieldRequired": "{{field}} є обов'язковим", + "authRequired": "Потрібна авторизація", + "invalidJson": "{{field}} є недійсним JSON", + "fields": { + "variable": "Назва змінної", + "variableValue": "Значення змінної", + "code": "Код", + "model": "Модель", + "rerankModel": "Модель повторного ранжування", + "visionVariable": "Змінна зору" + }, + "invalidVariable": "Недійсна змінна", + "rerankModelRequired": "Перед увімкненням Rerank Model, будь ласка, підтвердьте, що модель успішно налаштована в налаштуваннях.", + "noValidTool": "{{field}} не вибрано дійсного інструменту", + "toolParameterRequired": "{{field}}: параметр [{{param}}] обов'язковий", + "startNodeRequired": "Будь ласка, спершу додайте стартовий вузол перед {{operation}}" + }, + "singleRun": { + "testRun": "Тестовий запуск", + "startRun": "Почати запуск", + "running": "Запущено", + "testRunIteration": "Ітерація тестового запуску", + "back": "Назад", + "iteration": "Ітерація", + "loop": "Петля", + "reRun": "Повторний запуск", + "preparingDataSource": "Підготовка джерела даних" + }, + "tabs": { + "tools": "Інструменти", + "allTool": "Усі", + "customTool": "Користувацькі", + "workflowTool": "Робочий потік", + "question-understand": "Розуміння питань", + "logic": "Логіка", + "transform": "Трансформація", + "utilities": "Утиліти", + "noResult": "Нічого не знайдено", + "searchTool": "Інструмент пошуку", + "plugin": "Плагін", + "agent": "Стратегія агента", + "blocks": "Вузли", + "searchBlock": "Пошуковий вузол", + "addAll": "Додати все", + "allAdded": "Всі додані", + "sources": "Джерел", + "searchDataSource": "Пошук у джерелі даних", + "start": "Почати", + "searchTrigger": "Пошук тригерів...", + "allTriggers": "Всі тригери", + "noPluginsFound": "Плагіни не знайдено", + "requestToCommunity": "Запити до спільноти", + "featuredTools": "Рекомендоване", + "showMoreFeatured": "Показати більше", + "showLessFeatured": "Показати менше", + "installed": "Встановлено", + "pluginByAuthor": "Автор: {{author}}", + "usePlugin": "Вибрати інструмент", + "hideActions": "Сховати інструменти", + "noFeaturedPlugins": "Відкрийте більше інструментів у Маркетплейсі", + "noFeaturedTriggers": "Дізнайтеся більше тригерів у Маркетплейсі", + "startDisabledTip": "Вузол тригера та вузол введення користувача взаємовиключні." + }, + "blocks": { + "start": "Початок", + "end": "Вивід", + "answer": "Відповідь", + "llm": "LLM", + "knowledge-retrieval": "Отримання знань", + "question-classifier": "Класифікатор питань", + "if-else": "ЯКЩО/ІНАКШЕ", + "code": "Код", + "template-transform": "Шаблон", + "http-request": "HTTP-запит", + "variable-assigner": "Присвоювач змінних", + "variable-aggregator": "Агрегатор змінних", + "assigner": "Призначувач змінних", + "iteration-start": "Початок ітерації", + "iteration": "Ітерація", + "parameter-extractor": "Екстрактор параметрів", + "document-extractor": "Екстрактор документів", + "list-operator": "Оператор списку", + "agent": "Агент", + "loop-start": "Початок циклу", + "loop": "Петля", + "loop-end": "Вихід з циклу", + "datasource": "Джерело даних", + "knowledge-index": "База знань", + "originalStartNode": "оригінальний початковий вузол", + "trigger-schedule": "Тригер розкладу", + "trigger-webhook": "Тригер вебхука", + "trigger-plugin": "Тригер плагіна" + }, + "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": "Агрегує змінні з кількох гілок у одну змінну для уніфікованої конфігурації кінцевих вузлів.", + "assigner": "Вузол призначення змінних використовується для присвоєння значень записуваним змінним (таким як змінні розмови).", + "variable-aggregator": "Агрегує змінні з кількох гілок у одну змінну для уніфікованої конфігурації кінцевих вузлів.", + "iteration": "Виконувати кілька кроків на об'єкті списку, поки не буде виведено всі результати.", + "parameter-extractor": "Використовуйте LLM для вилучення структурованих параметрів з природної мови для викликів інструментів або HTTP-запитів.", + "document-extractor": "Використовується для аналізу завантажених документів у текстовий контент, який легко зрозумілий LLM.", + "list-operator": "Використовується для фільтрації або сортування вмісту масиву.", + "agent": "Виклик великих мовних моделей для відповідей на запитання або обробки природної мови", + "loop": "Виконуйте цикл логіки, поки не буде виконано умову завершення або досягнуто максимальну кількість ітерацій.", + "loop-end": "Еквівалентно \"перерві\". Цей вузол не має елементів конфігурації. Коли тіло циклу досягає цього вузла, цикл завершується.", + "datasource": "Джерело даних про", + "knowledge-index": "База знань про нас", + "trigger-schedule": "Триггер робочого процесу, що запускає робочі процеси за розкладом", + "trigger-webhook": "Тригер вебхука отримує HTTP-запити від сторонніх систем для автоматичного запуску робочих процесів.", + "trigger-plugin": "Тригер інтеграції сторонніх розробників, який запускає робочі процеси з подій зовнішньої платформи" + }, + "operator": { + "zoomIn": "Збільшити", + "zoomOut": "Зменшити", + "zoomTo50": "Збільшити до 50%", + "zoomTo100": "Збільшити до 100%", + "zoomToFit": "Збільшити для підгонки", + "alignCenter": "Центр", + "alignRight": "Праворуч", + "vertical": "Вертикальний", + "alignBottom": "Низ", + "alignLeft": "Ліворуч", + "alignTop": "Верх", + "horizontal": "Горизонтальний", + "alignMiddle": "По центру", + "distributeVertical": "Розподілити по вертикалі", + "distributeHorizontal": "Розподілити по горизонталі", + "selectionAlignment": "Вирівнювання вибору", + "alignNodes": "Вирівнювання вузлів" + }, + "panel": { + "userInputField": "Поле введення користувача", + "helpLink": "Довідковий центр", + "about": "Про", + "createdBy": "Створено ", + "nextStep": "Наступний крок", + "runThisStep": "Запустити цей крок", + "checklist": "Контрольний список", + "checklistTip": "Переконайтеся, що всі проблеми вирішені перед публікацією", + "checklistResolved": "Всі проблеми вирішені", + "change": "Змінити", + "optional": "(необов'язково)", + "organizeBlocks": "Організуйте вузли", + "changeBlock": "Змінити вузол", + "selectNextStep": "Виберіть наступний крок", + "addNextStep": "Додайте наступний крок у цей робочий процес", + "minimize": "Вийти з повноекранного режиму", + "maximize": "Максимізувати полотно", + "scrollToSelectedNode": "Прокрутіть до вибраного вузла", + "optional_and_hidden": "(необов'язково & приховано)", + "goTo": "Перейти до", + "startNode": "Початковий вузол", + "openWorkflow": "Відкрити робочий процес" + }, + "nodes": { + "common": { + "outputVars": "Змінні виходу", + "insertVarTip": "Вставити змінну", + "memory": { + "memory": "Пам'ять", + "memoryTip": "Налаштування пам'яті чату", + "windowSize": "Розмір вікна", + "conversationRoleName": "Назва ролі у розмові", + "user": "Префікс користувача", + "assistant": "Префікс помічника" + }, + "memories": { + "title": "Спогади", + "tip": "Пам'ять чату", + "builtIn": "Вбудовано" + }, + "errorHandle": { + "none": { + "title": "Ніхто", + "desc": "Вузол припинить роботу, якщо виникне виняток і не буде оброблений" + }, + "defaultValue": { + "title": "Значення за замовчуванням", + "desc": "При виникненні помилки вкажіть статичний вміст виводу.", + "tip": "У разі помилки поверне нижче значення.", + "output": "Вивести значення за замовчуванням", + "inLog": "Виняток вузла, що виводить відповідно до значень за замовчуванням." + }, + "failBranch": { + "desc": "Коли виникає помилка, він виконає гілку винятку", + "customize": "Перейдіть до полотна, щоб налаштувати логіку fail branch.", + "inLog": "Виняток вузла, автоматично виконає гілку fail. Вихідні дані вузла повернуть тип помилки та повідомлення про помилку та передадуть їх до низхідного потоку.", + "title": "Гілка невдачі", + "customizeTip": "Коли гілка fail активована, винятки, викликані вузлами, не завершать процес. Замість цього він автоматично виконає попередньо визначену гілку помилки, дозволяючи вам гнучко надавати повідомлення про помилки, звіти, виправлення або пропускати дії." + }, + "partialSucceeded": { + "tip": "У процесі є вузли {{num}}, які працюють ненормально, будь ласка, перейдіть до трасування, щоб перевірити логи." + }, + "title": "Обробка помилок", + "tip": "Стратегія обробки винятків, що спрацьовує, коли вузол стикається з винятком." + }, + "retry": { + "retry": "Повторити", + "retryOnFailure": "повторити спробу в разі невдачі", + "retryInterval": "Інтервал повторних спроб", + "retrying": "Спроби...", + "retryFailed": "Повторна спроба не вдалася", + "times": "Разів", + "ms": "МС", + "retries": "{{num}} Спроб", + "maxRetries": "Максимальна кількість повторних спроб", + "retrySuccessful": "Повторна спроба успішна", + "retryFailedTimes": "{{times}} повторні спроби не вдалися", + "retryTimes": "Повторіть спробу {{times}} у разі невдачі" + }, + "typeSwitch": { + "input": "Вхідне значення", + "variable": "Використовуйте змінну" + }, + "inputVars": "Вхідні змінні", + "pluginNotInstalled": "Плагін не встановлений" + }, + "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.", + "prompt": "prompt", + "roleDescription": { + "system": "Дайте високорівневі інструкції для розмови", + "user": "Надайте інструкції, запити або будь-який текстовий вхід для моделі", + "assistant": "Відповіді моделі на основі повідомлень користувача" + }, + "addMessage": "Додати повідомлення", + "vision": "бачення", + "files": "Файли", + "resolution": { + "name": "Роздільна здатність", + "high": "Висока", + "low": "Низька" + }, + "outputVars": { + "output": "Генерований вміст", + "reasoning_content": "Зміст міркування", + "usage": "Інформація про використання моделі" + }, + "singleRun": { + "variable": "Змінна" + }, + "sysQueryInUser": "sys.query у повідомленні користувача є обов'язковим", + "jsonSchema": { + "warningTips": { + "saveSchema": "Будь ласка, завершіть редагування поточного поля перед збереженням схемы." + }, + "import": "Імпорт з JSON", + "instruction": "Інструкція", + "descriptionPlaceholder": "Додати опис", + "addField": "Додати поле", + "promptTooltip": "Перетворіть текстовий опис у стандартизовану структуру JSON Schema.", + "resultTip": "Ось згенерований результат. Якщо вас не влаштовує, ви можете повернутися назад і змінити свій запит.", + "promptPlaceholder": "Опишіть вашу схему JSON...", + "generating": "Генерація JSON-схеми...", + "back": "Назад", + "generatedResult": "Згенерований результат", + "fieldNamePlaceholder": "Назва поля", + "addChildField": "Додати поле дитини", + "apply": "Застосувати", + "regenerate": "Перегенерувати", + "resetDefaults": "Скинути", + "generateJsonSchema": "Згенерувати JSON Схему", + "showAdvancedOptions": "Показати розширені налаштування", + "required": "необхідно", + "generationTip": "Ви можете використовувати природну мову, щоб швидко створити JSON-схему.", + "stringValidations": "Валідність рядків", + "generate": "Генерувати", + "title": "Структурована схема виходу", + "doc": "Дізнайтеся більше про структурований вихід" + }, + "reasoningFormat": { + "separated": "Окремі теги для думок", + "tagged": "Продовжуйте думати про мітки", + "title": "Увімкніть розділення тегів для міркування", + "tooltip": "Витягніть вміст з тегів think і зберігайте його в полі reasoning_content." + } + }, + "knowledgeRetrieval": { + "queryVariable": "Змінна запиту", + "knowledge": "Знання", + "outputVars": { + "output": "Відновлені сегментовані дані", + "content": "Сегментований вміст", + "title": "Сегментований заголовок", + "icon": "Сегментована піктограма", + "url": "Сегментована URL", + "metadata": "Інші метадані", + "files": "Отримані файли" + }, + "metadata": { + "options": { + "disabled": { + "title": "Вимкнено", + "subTitle": "Не включаючи фільтрацію метаданих" + }, + "automatic": { + "title": "Автоматичний", + "subTitle": "Автоматично генерувати умови фільтрації метаданих на основі запиту користувача.", + "desc": "Автоматично генерувати умови фільтрації метаданих на основі змінної запиту." + }, + "manual": { + "subTitle": "Вручну додайте умови фільтрації метаданих", + "title": "Посібник" + } + }, + "panel": { + "search": "Пошукова метаінформація", + "datePlaceholder": "Виберіть час...", + "title": "Умови фільтрації метаданих", + "placeholder": "Введіть значення", + "conditions": "Умови", + "select": "Виберіть змінну...", + "add": "Додати умову" + }, + "title": "Фільтрація метаданих", + "tip": "Фільтрація метаданих — це процес використання атрибутів метаданих (таких як теги, категорії або права доступу) для уточнення та контролю отримання відповідної інформації в системі." + }, + "queryText": "Текст запиту", + "queryAttachment": "Пошук зображень" + }, + "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": "Bearer", + "custom": "Користувацький", + "api-key-title": "API-ключ", + "header": "Заголовок" + }, + "insertVarPlaceholder": "введіть '/', щоб вставити змінну", + "timeout": { + "title": "Тайм-аут", + "connectLabel": "Тайм-аут підключення", + "connectPlaceholder": "Введіть тайм-аут підключення в секундах", + "readLabel": "Тайм-аут читання", + "readPlaceholder": "Введіть тайм-аут читання в секундах", + "writeLabel": "Тайм-аут запису", + "writePlaceholder": "Введіть тайм-аут запису в секундах" + }, + "type": "Тип", + "binaryFileVariable": "Змінна двійкового файлу", + "extractListPlaceholder": "Введіть індекс елемента списку, введіть '/' вставити змінну", + "curl": { + "title": "Імпорт з cURL", + "placeholder": "Вставте сюди рядок cURL" + }, + "verifySSL": { + "title": "Перевірити SSL сертифікат", + "warningTooltip": "Вимкнення перевірки SSL не рекомендується для виробничих середовищ. Це слід використовувати лише в розробці або тестуванні, оскільки це робить з'єднання вразливим до загроз безпеці, таких як атаки «людина посередині»." + } + }, + "code": { + "inputVars": "Вхідні змінні", + "outputVars": "Змінні виходу", + "advancedDependencies": "Розширені залежності", + "advancedDependenciesTip": "Додайте тут деякі попередньо завантажені залежності, які потребують більше часу для споживання або не є за замовчуванням вбудованими", + "searchDependencies": "Шукати залежності", + "syncFunctionSignature": "Синхронізувати підпис функції з кодом" + }, + "templateTransform": { + "inputVars": "Вхідні змінні", + "code": "Код", + "codeSupportTip": "Підтримує лише Jinja2", + "outputVars": { + "output": "Трансформований вміст" + } + }, + "ifElse": { + "if": "Якщо", + "else": "Інакше", + "elseDescription": "Використовується для визначення логіки, яка має бути виконана, коли умова if не виконана.", + "and": "і", + "or": "або", + "operator": "Оператор", + "notSetVariable": "Будь ласка, спочатку встановіть змінну", + "comparisonOperator": { + "contains": "містить", + "not contains": "не містить", + "start with": "починається з", + "end with": "закінчується на", + "is": "є", + "is not": "не є", + "empty": "порожній", + "not empty": "не порожній", + "null": "є null", + "not null": "не є null", + "in": "В", + "all of": "Всі з", + "exists": "Існує", + "not exists": "не існує", + "not in": "Не в", + "after": "після", + "before": "раніше" + }, + "enterValue": "Введіть значення", + "addCondition": "Додати умову", + "conditionNotSetup": "Умова НЕ налаштована", + "selectVariable": "Виберіть змінну...", + "optionName": { + "audio": "Аудіо", + "doc": "Док", + "video": "Відео", + "localUpload": "Локальне завантаження", + "image": "Образ", + "url": "URL-адреса" + }, + "select": "Виберіть", + "addSubVariable": "Підзмінна" + }, + "variableAssigner": { + "title": "Присвоєння змінних", + "outputType": "Тип виходу", + "varNotSet": "Змінна не встановлена", + "noVarTip": "Додайте змінні для присвоєння", + "type": { + "string": "Рядок", + "number": "Число", + "object": "Об'єкт", + "array": "Масив" + }, + "aggregationGroup": "Група агрегації", + "aggregationGroupTip": "Увімкнення цієї функції дозволяє агрегатору змінних агрегувати кілька наборів змінних.", + "addGroup": "Додати групу", + "outputVars": { + "varDescribe": "Вихід {{groupName}}" + }, + "setAssignVariable": "Встановити змінну присвоєння" + }, + "assigner": { + "assignedVariable": "Призначена Змінна", + "writeMode": "Режим Запису", + "writeModeTip": "Коли ПРИЗНАЧЕНА ЗМІННА є масивом, режим додавання додає в кінець.", + "over-write": "Перезаписати", + "append": "Додати", + "plus": "Плюс", + "clear": "Очистити", + "setVariable": "Встановити Змінну", + "variable": "Змінна", + "operations": { + "clear": "Ясний", + "set": "Встановити", + "title": "Операція", + "append": "Додати", + "-=": "-=", + "over-write": "Перезаписати", + "overwrite": "Перезаписати", + "/=": "/=", + "+=": "+=", + "*=": "*=", + "extend": "Розширити", + "remove-last": "Видалити останнє", + "remove-first": "Видалити перший" + }, + "selectAssignedVariable": "Виберіть призначену змінну...", + "noAssignedVars": "Немає доступних призначених змінних", + "noVarTip": "Натисніть кнопку «+», щоб додати змінні", + "assignedVarsDescription": "Призначені змінні мають бути доступними для запису, такими як змінні розмови.", + "variables": "Змінні", + "varNotSet": "Змінна НЕ встановлена", + "setParameter": "Встановити параметр..." + }, + "tool": { + "inputVars": "Вхідні змінні", + "outputVars": { + "text": "генерований вміст інструменту", + "files": { + "title": "файли, генеровані інструментом", + "type": "Тип підтримки. Наразі підтримуються лише зображення", + "transfer_method": "Метод передачі. Значення - remote_url або local_file", + "url": "URL зображення", + "upload_file_id": "ID завантаженого файлу" + }, + "json": "JSON, згенерований інструментом" + }, + "authorize": "Уповноважити", + "settings": "Налаштування", + "insertPlaceholder2": "вставте змінну", + "insertPlaceholder1": "Введіть або натисніть" + }, + "questionClassifiers": { + "model": "модель", + "inputVars": "Вхідні змінні", + "outputVars": { + "className": "Назва класу", + "usage": "Інформація про використання моделі" + }, + "class": "Клас", + "classNamePlaceholder": "Напишіть назву вашого класу", + "advancedSetting": "Розширене налаштування", + "topicName": "Назва теми", + "topicPlaceholder": "Напишіть назву вашої теми", + "addClass": "Додати клас", + "instruction": "Інструкція", + "instructionTip": "Введіть додаткові інструкції, щоб допомогти класифікатору запитань краще зрозуміти, як категоризувати запитання.", + "instructionPlaceholder": "Напишіть вашу інструкцію" + }, + "parameterExtractor": { + "inputVar": "Вхідна змінна", + "outputVars": { + "isSuccess": "Є успіх. У разі успіху значення 1, у разі невдачі значення 0.", + "errorReason": "Причина помилки", + "usage": "Інформація про використання моделі" + }, + "extractParameters": "Витягти параметри", + "importFromTool": "Імпорт з інструментів", + "addExtractParameter": "Додати параметр витягування", + "addExtractParameterContent": { + "name": "Ім'я", + "namePlaceholder": "Ім'я параметра витягування", + "type": "Тип", + "typePlaceholder": "Тип параметра витягування", + "description": "Опис", + "descriptionPlaceholder": "Опис параметра витягування", + "required": "Обов'язковий", + "requiredContent": "Обов'язковий використовується лише як посилання для інференції моделі і не для обов'язкової валідації вихідного параметра." + }, + "extractParametersNotSet": "Параметри витягування не налаштовані", + "instruction": "Інструкція", + "instructionTip": "Введіть додаткові інструкції, щоб допомогти екстрактору параметрів зрозуміти, як витягувати параметри.", + "advancedSetting": "Розширене налаштування", + "reasoningMode": "Режим інференції", + "reasoningModeTip": "Ви можете вибрати відповідний режим інференції залежно від здатності моделі реагувати на інструкції щодо викликів функцій або запитів." + }, + "iteration": { + "deleteTitle": "Видалити вузол ітерації?", + "deleteDesc": "Видалення вузла ітерації видалить усі дочірні вузли", + "input": "Вхід", + "output": "Змінні виходу", + "iteration_one": "{{count}} Ітерація", + "iteration_other": "{{count}} Ітерацій", + "currentIteration": "Поточна ітерація", + "ErrorMethod": { + "operationTerminated": "Припинено", + "continueOnError": "Продовжити після помилки", + "removeAbnormalOutput": "видалити-ненормальний-вивід" + }, + "error_one": "{{count}} Помилка", + "comma": ",", + "MaxParallelismTitle": "Максимальна паралельність", + "parallelModeUpper": "ПАРАЛЕЛЬНИЙ РЕЖИМ", + "error_other": "{{count}} Помилки", + "parallelMode": "Паралельний режим", + "parallelModeEnableTitle": "Увімкнено паралельний режим", + "errorResponseMethod": "Метод реагування на помилку", + "parallelPanelDesc": "У паралельному режимі завдання в ітерації підтримують паралельне виконання.", + "parallelModeEnableDesc": "У паралельному режимі завдання всередині ітерацій підтримують паралельне виконання. Ви можете налаштувати це на панелі властивостей праворуч.", + "MaxParallelismDesc": "Максимальний паралелізм використовується для контролю числа завдань, що виконуються одночасно за одну ітерацію.", + "answerNodeWarningDesc": "Попередження в паралельному режимі: вузли відповідей, призначення змінних розмови та постійні операції читання/запису в межах ітерацій можуть спричинити винятки.", + "flattenOutput": "Вирівняти результат", + "flattenOutputDesc": "Коли ввімкнено, якщо всі результати ітерацій є масивами, вони будуть об'єднані в один масив. Коли вимкнено, результати збережуть вкладену структуру масивів." + }, + "note": { + "editor": { + "large": "Великий", + "bold": "Жирний", + "openLink": "Відкривати", + "small": "Малий", + "link": "Посилання", + "italic": "Курсив", + "placeholder": "Напишіть свою замітку...", + "strikethrough": "Закреслені", + "medium": "Середнє", + "showAuthor": "Показати автора", + "bulletList": "Маркований список", + "enterUrl": "Введіть URL-адресу...", + "unlink": "Від'єднати", + "invalidUrl": "Невірна URL-адреса" + }, + "addNote": "Додати примітку" + }, + "docExtractor": { + "outputVars": { + "text": "Витягнутий текст" + }, + "learnMore": "Дізнатися більше", + "inputVar": "Вхідна змінна", + "supportFileTypes": "Типи файлів підтримки: {{types}}." + }, + "listFilter": { + "outputVars": { + "last_record": "Останній запис", + "first_record": "Перший запис", + "result": "Результат фільтра" + }, + "desc": "СПАДАННЯМ", + "filterCondition": "Стан фільтра", + "inputVar": "Вхідна змінна", + "asc": "ЦНАП", + "filterConditionKey": "Клавіша умови фільтра", + "limit": "Зверху N", + "selectVariableKeyPlaceholder": "Виберіть ключ підзмінної", + "orderBy": "Замовити по", + "filterConditionComparisonOperator": "Оператор порівняння умов фільтра", + "filterConditionComparisonValue": "Значення умови фільтра", + "extractsCondition": "Витягніть елемент N" + }, + "agent": { + "strategy": { + "selectTip": "Виберіть агентську стратегію", + "tooltip": "Різні агентські стратегії визначають, як система планує та виконує багатоетапні виклики інструментів", + "configureTipDesc": "Після налаштування агентної стратегії цей вузол автоматично завантажить решту конфігурацій. Стратегія вплине на механізм багатоступінчастого інструментального міркування.", + "label": "Агентична стратегія", + "configureTip": "Будь ласка, налаштуйте агентичну стратегію.", + "searchPlaceholder": "Стратегія пошукового агента", + "shortLabel": "Стратегія" + }, + "pluginInstaller": { + "install": "Інсталювати", + "installing": "Установки" + }, + "modelNotInMarketplace": { + "desc": "Ця модель встановлюється з локального репозиторію або репозиторію GitHub. Будь ласка, використовуйте після встановлення.", + "title": "Модель не встановлена", + "manageInPlugins": "Керування в плагінах" + }, + "modelNotSupport": { + "title": "Непідтримувана модель", + "desc": "Встановлена версія плагіна не передбачає цю модель.", + "descForVersionSwitch": "Встановлена версія плагіна не передбачає цю модель. Натисніть, щоб змінити версію." + }, + "modelSelectorTooltips": { + "deprecated": "Ця модель вважається застарілою" + }, + "outputVars": { + "files": { + "upload_file_id": "Завантажити ідентифікатор файлу", + "transfer_method": "Спосіб переказу. Цінність remote_url або local_file", + "type": "Тип підтримки. Тепер підтримка тільки зображення", + "url": "URL-адреса зображення", + "title": "Файли, створені агентом" + }, + "text": "Контент, створений агентом", + "usage": "Інформація про використання моделі", + "json": "Агент згенерував JSON" + }, + "checkList": { + "strategyNotSelected": "Стратегію не обрано" + }, + "installPlugin": { + "cancel": "Скасувати", + "title": "Встановити плагін", + "desc": "Про встановлення наступного плагіна", + "changelog": "Журнал змін", + "install": "Інсталювати" + }, + "strategyNotSet": "Агентська стратегія Не встановлено", + "strategyNotFoundDesc": "Встановлена версія плагіна не забезпечує цю стратегію.", + "notAuthorized": "Не авторизовано", + "pluginNotInstalled": "Цей плагін не встановлено", + "linkToPlugin": "Посилання на плагіни", + "configureModel": "Налаштуйте модель", + "toolNotInstallTooltip": "{{tool}} не встановлено", + "maxIterations": "Максимальна кількість ітерацій", + "pluginNotFoundDesc": "Цей плагін встановлюється з GitHub. Будь ласка, перейдіть до Плагіни для перевстановлення", + "modelNotInstallTooltip": "Дана модель не встановлена", + "unsupportedStrategy": "Стратегія без підтримки", + "learnMore": "Дізнатися більше", + "tools": "Інструмент", + "strategyNotInstallTooltip": "{{strategy}} не встановлено", + "toolbox": "ящик для інструментів", + "toolNotAuthorizedTooltip": "{{tool}} Не авторизовано", + "model": "модель", + "pluginNotInstalledDesc": "Цей плагін встановлюється з GitHub. Будь ласка, перейдіть до Плагіни для перевстановлення", + "modelNotSelected": "Модель не обрана", + "strategyNotFoundDescAndSwitchVersion": "Встановлена версія плагіна не забезпечує цю стратегію. Натисніть, щоб змінити версію.", + "parameterSchema": "Схема параметрів", + "clickToViewParameterSchema": "Натисніть, щоб переглянути схему параметрів" + }, + "loop": { + "ErrorMethod": { + "operationTerminated": "Припинено", + "removeAbnormalOutput": "Видалити ненормальний вихід", + "continueOnError": "Продовжити незважаючи на помилку" + }, + "loop_one": "{{count}} Цикл", + "exitConditionTip": "Вузол циклу потребує принаймні однієї умови виходу", + "error_other": "{{count}} Помилок", + "setLoopVariables": "Встановіть змінні в межах області видимості циклу", + "loopVariables": "Циклічні змінні", + "currentLoopCount": "Поточна кількість циклів: {{count}}", + "totalLoopCount": "Загальна кількість циклів: {{count}}", + "loop_other": "{{count}} Циклів", + "error_one": "{{count}} Помилка", + "currentLoop": "Поточна петля", + "breakCondition": "Умова завершення циклу", + "deleteDesc": "Видалення вузла циклу призведе до видалення всіх дочірніх вузлів.", + "breakConditionTip": "Тільки змінні в циклах з умовами завершення та змінні розмови можуть бути використані.", + "initialLoopVariables": "Початкові змінні циклу", + "finalLoopVariables": "Заключні змінні циклу", + "input": "Введення", + "errorResponseMethod": "Метод відповіді на помилку", + "output": "Вихідна змінна", + "variableName": "Змінна Ім'я", + "comma": ",", + "inputMode": "Режим введення", + "loopNode": "Циклічний вузол", + "loopMaxCountError": "Будь ласка, введіть дійсне максимальне значення циклу, яке коливається від 1 до {{maxCount}}", + "deleteTitle": "Видалити вузол циклу?", + "loopMaxCount": "Максимальна кількість циклів" + }, + "dataSource": { + "supportedFileFormatsPlaceholder": "Розширення файлу, e.g. doc", + "add": "Додати джерело даних", + "supportedFileFormats": "Підтримувані формати файлів" + }, + "knowledgeBase": { + "chunkStructureTip": { + "learnMore": "Дізнатися більше", + "title": "Будь ласка, виберіть структуру шматків", + "message": "База знань Dify підтримує три структури, що розділяються: Загальні, Батьки-дочірні та Запитання та відповіді. Кожна база знань може мати тільки одну структуру. Вихідні дані з попереднього вузла повинні співпадати з обраною структурою фрагментів. Зауважимо, що вибір структури фрагментації впливає на доступні методи індексування." + }, + "changeChunkStructure": "Зміна структури фрагментів", + "aboutRetrieval": "про метод пошуку.", + "chunkStructure": "Структура шматків", + "chunkIsRequired": "Потрібна структура шматків", + "indexMethodIsRequired": "Обов'язковий індексний метод", + "chooseChunkStructure": "Виберіть структуру шматків", + "retrievalSettingIsRequired": "Потрібне налаштування для отримання", + "chunksInput": "Частини", + "chunksInputTip": "Вхідна змінна вузла бази знань - це Частини. Тип змінної - об'єкт з певною JSON-схемою, яка повинна відповідати вибраній структурі частин.", + "chunksVariableIsRequired": "Змінна chunks є обов'язковою", + "embeddingModelIsRequired": "Потрібна модель вбудовування", + "rerankingModelIsRequired": "Потрібна модель повторного ранжування", + "embeddingModelIsInvalid": "Модель вбудовування недійсна", + "rerankingModelIsInvalid": "Модель переналаштування недійсна" + }, + "triggerPlugin": { + "authorized": "Авторизований", + "notConfigured": "Не налаштовано", + "notAuthorized": "Не авторизовано", + "selectSubscription": "Вибрати підписку", + "availableSubscriptions": "Доступні підписки", + "addSubscription": "Додати нову підписку", + "removeSubscription": "Скасувати підписку", + "subscriptionRemoved": "Підписку успішно видалено", + "error": "Помилка", + "configuration": "Налаштування", + "remove": "Видалити", + "or": "АБО", + "useOAuth": "Використовувати OAuth", + "useApiKey": "Використати ключ API", + "authenticationFailed": "Аутентифікація не вдалася", + "authenticationSuccess": "Аутентифікація успішна", + "oauthConfigFailed": "Не вдалося налаштувати OAuth", + "configureOAuthClient": "Налаштувати OAuth-клієнта", + "oauthClientDescription": "Налаштуйте облікові дані клієнта OAuth для активації автентифікації", + "oauthClientSaved": "Конфігурацію клієнта OAuth успішно збережено", + "configureApiKey": "Налаштувати ключ API", + "apiKeyDescription": "Налаштувати ключ API для автентифікації", + "apiKeyConfigured": "Ключ API успішно налаштовано", + "configurationFailed": "Не вдалося налаштувати", + "failedToStart": "Не вдалося запустити процес аутентифікації", + "credentialsVerified": "Облікові дані успішно перевірено", + "credentialVerificationFailed": "Перевірка облікових даних не вдалася", + "verifyAndContinue": "Підтвердити та продовжити", + "configureParameters": "Налаштувати параметри", + "parametersDescription": "Налаштуйте параметри та властивості тригера", + "configurationComplete": "Налаштування завершено", + "configurationCompleteDescription": "Ваш тригер успішно налаштовано", + "configurationCompleteMessage": "Ваша конфігурація тригера тепер завершена і готова до використання.", + "parameters": "Параметри", + "properties": "Властивості", + "propertiesDescription": "Додаткові властивості конфігурації для цього тригера", + "noConfigurationRequired": "Додаткове налаштування для цього тригера не потрібне.", + "subscriptionName": "Назва підписки", + "subscriptionNameDescription": "Введіть унікальне ім’я для цієї підписки на тригер", + "subscriptionNamePlaceholder": "Введіть назву підписки...", + "subscriptionNameRequired": "Потрібна назва підписки", + "subscriptionRequired": "Потрібна підписка" + }, + "triggerSchedule": { + "title": "Розклад", + "nodeTitle": "Тригер розкладу", + "notConfigured": "Не налаштовано", + "useCronExpression": "Використовувати cron-вираз", + "useVisualPicker": "Використати візуальний вибір", + "frequency": { + "label": "ЧАСТОТА", + "hourly": "Погодинно", + "daily": "Щодня", + "weekly": "Щотижня", + "monthly": "Щомісячно" + }, + "selectFrequency": "Виберіть частоту", + "frequencyLabel": "Частота", + "nextExecution": "Наступне виконання", + "weekdays": "Будні дні", + "time": "Час", + "cronExpression": "Вираз Cron", + "nextExecutionTime": "ЧАС НАСТУПНОГО ВИКОНАННЯ", + "nextExecutionTimes": "Наступні 5 разів виконання", + "startTime": "Час початку", + "executeNow": "Виконання зараз", + "selectDateTime": "Вибрати дату та час", + "hours": "Години", + "minutes": "Хвилини", + "onMinute": "Що хвилина", + "days": "Дні", + "lastDay": "Останній день", + "lastDayTooltip": "Не всі місяці мають 31 день. Використовуйте опцію «останній день», щоб вибрати останній день кожного місяця.", + "mode": "Мода", + "timezone": "Часовий пояс", + "visualConfig": "Візуальна конфігурація", + "monthlyDay": "Щомісячний день", + "executionTime": "Час виконання", + "invalidTimezone": "Неправильний часовий пояс", + "invalidCronExpression": "Недійсний cron вираз", + "noValidExecutionTime": "Не можна обчислити допустимий час виконання", + "executionTimeCalculationError": "Не вдалося обчислити час виконання", + "invalidFrequency": "Неприпустима частота", + "invalidStartTime": "Недійсний час початку", + "startTimeMustBeFuture": "Час початку має бути в майбутньому", + "invalidTimeFormat": "Неправильний формат часу (очікується ГГ:ХХ AM/PM)", + "invalidWeekday": "Недійсний день тижня: {{weekday}}", + "invalidMonthlyDay": "Місячний день повинен бути між 1-31 або «останній»", + "invalidOnMinute": "Хвилина повинна бути в межах 0-59", + "invalidExecutionTime": "Недійсний час виконання", + "executionTimeMustBeFuture": "Час виконання має бути в майбутньому" + }, + "triggerWebhook": { + "title": "Тригер вебхука", + "nodeTitle": "🔗 Тригер вебхука", + "configPlaceholder": "Налаштування тригера вебхука буде реалізовано тут", + "webhookUrl": "URL вебхука", + "webhookUrlPlaceholder": "Натисніть «Створити», щоб згенерувати URL вебхука", + "generate": "Створити", + "copy": "Копіювати", + "test": "Тест", + "urlGenerated": "URL вебхука успішно згенеровано", + "urlGenerationFailed": "Не вдалося створити URL вебхука", + "urlCopied": "URL скопійовано в буфер обміну", + "method": "Метод", + "contentType": "Тип вмісту", + "queryParameters": "Параметри запиту", + "headerParameters": "Параметри заголовка", + "requestBodyParameters": "Параметри тіла запиту", + "parameterName": "Ім'я змінної", + "varName": "Ім'я змінної", + "varType": "Тип", + "varNamePlaceholder": "Введіть назву змінної...", + "required": "Обов'язково", + "addParameter": "Додати", + "addHeader": "Додати", + "noParameters": "Параметри не налаштовані", + "noQueryParameters": "Параметри запиту не налаштовані", + "noHeaders": "Заголовки не налаштовані", + "noBodyParameters": "Параметри тіла не налаштовані", + "debugUrlTitle": "Для тестових запусків завжди використовуйте цей URL", + "debugUrlCopy": "Натисніть, щоб скопіювати", + "debugUrlCopied": "Скопійовано!", + "debugUrlPrivateAddressWarning": "Цей URL, схоже, є внутрішньою адресою, що може спричинити помилки у запитах вебхука. Ви можете змінити TRIGGER_URL на публічну адресу.", + "errorHandling": "Обробка помилок", + "errorStrategy": "Обробка помилок", + "responseConfiguration": "Відповідь", + "asyncMode": "Асинхронний режим", + "statusCode": "Код стану", + "responseBody": "Тіло відповіді", + "responseBodyPlaceholder": "Напишіть тут текст вашої відповіді", + "headers": "Заголовки", + "validation": { + "webhookUrlRequired": "Потрібен URL вебхука", + "invalidParameterType": "Недійсний тип параметра \"{{type}}\" для параметра \"{{name}}\"" + } + } + }, + "tracing": { + "stopBy": "Зупинено користувачем {{user}}" + }, + "variableReference": { + "conversationVars": "Змінні розмови", + "noVarsForOperation": "Немає доступних змінних для призначення з обраною операцією.", + "assignedVarsDescription": "Призначені змінні мають бути доступними для запису, такими як", + "noAssignedVars": "Немає доступних призначених змінних", + "noAvailableVars": "Немає доступних змінних" + }, + "versionHistory": { + "filter": { + "onlyShowNamedVersions": "Показуйте лише названі версії", + "reset": "Скинути фільтр", + "all": "Усе", + "onlyYours": "Тільки твоє", + "empty": "Не знайдено відповідну історію версій" + }, + "editField": { + "titleLengthLimit": "Заголовок не може перевищувати {{limit}} символів", + "releaseNotes": "Примітки до випуску", + "title": "Назва", + "releaseNotesLengthLimit": "Примітки до випуску не можуть перевищувати {{limit}} символів" + }, + "action": { + "restoreFailure": "Не вдалося відновити версію", + "updateSuccess": "Версія оновлена", + "deleteFailure": "Не вдалося видалити версію", + "deleteSuccess": "Версія видалена", + "restoreSuccess": "Версія відновлена", + "updateFailure": "Не вдалося оновити версію", + "copyIdSuccess": "ID скопійовано в буфер обміну" + }, + "defaultName": "Без назви версія", + "restorationTip": "Після відновлення версії нинішній проект буде перезаписано.", + "title": "Версії", + "currentDraft": "Поточний проект", + "deletionTip": "Видалення є незворотнім, будь ласка, підтвердіть.", + "releaseNotesPlaceholder": "Опишіть, що змінилося", + "editVersionInfo": "Редагувати інформацію про версію", + "nameThisVersion": "Назвіть цю версію", + "latest": "Останні новини", + "copyId": "Копіювати ідентифікатор" + }, + "debug": { + "noData": { + "runThisNode": "Запустіть цей вузол", + "description": "Результати останнього запуску будуть відображені тут" + }, + "variableInspect": { + "trigger": { + "stop": "Зупинись бігти", + "normal": "Перевірка змінних", + "clear": "Чіткий", + "cached": "Переглянути кешовані змінні", + "running": "Кешування статусу виконання" + }, + "systemNode": "Система", + "view": "Переглянути журнал", + "title": "Перевірка змінних", + "edited": "Редагований", + "emptyLink": "Дізнайтеся більше", + "clearNode": "Очистити кешовану змінну", + "envNode": "Навколишнє середовище", + "reset": "Скинути до значення останнього запуску", + "clearAll": "Скиньте все", + "chatNode": "Розмова", + "resetConversationVar": "Скинути змінну розмови на значення за замовчуванням", + "emptyTip": "Після переходу через вузол на полотні або виконання вузла поетапно, ви можете переглянути поточне значення змінної вузла у Перевірці змінних.", + "export": "експорт", + "exportToolTip": "Експортувати змінну як файл", + "largeDataNoExport": "Великі дані - лише частковий попередній перегляд", + "largeData": "Великий обсяг даних, попередній перегляд лише для читання. Експортуйте, щоб переглянути всі.", + "listening": { + "title": "Очікування подій від тригерів...", + "tip": "Тепер ви можете імітувати спрацювання подій, надсилаючи тестові запити на HTTP {{nodeName}}-кінечну точку або використати її як URL зворотного виклику для налагодження живих подій. Всі результати можна переглянути безпосередньо у Переглядачі змінних.", + "tipPlugin": "Тепер ви можете створювати події в {{- pluginName}} та отримувати результати цих подій у Інспекторі змінних.", + "tipSchedule": "Прослуховування подій від тригерів розкладу. Наступний запланований запуск: {{nextTriggerTime}}", + "tipFallback": "Очікуйте вхідних подій тригера. Вихідні дані з’являться тут.", + "defaultNodeName": "цей тригер", + "defaultPluginName": "цей плагін спрацьовує", + "defaultScheduleTime": "Не налаштовано", + "selectedTriggers": "вибрані тригери", + "stopButton": "Зупинись" + } + }, + "lastRunTab": "Останній запуск", + "settingsTab": "Налаштування", + "relations": { + "noDependents": "Без утриманців", + "dependents": "Утриманців", + "dependencies": "Залежностей", + "noDependencies": "Відсутність залежностей", + "dependenciesDescription": "Вузли, на які спирається цей вузол", + "dependentsDescription": "Вузли, які спираються на цей вузол" + }, + "relationsTab": "Відносин", + "copyLastRun": "Копіювати останній запуск", + "noLastRunFound": "Жодного попереднього запуску не знайдено.", + "copyLastRunError": "Не вдалося скопіювати вхідні дані останнього виконання", + "noMatchingInputsFound": "Не знайдено відповідних вхідних даних з останнього запуску", + "lastOutput": "Останній вихід", + "lastRunInputsCopied": "Скопійовано {{count}} введення(в) з останнього запуску" + }, + "sidebar": { + "exportWarning": "Експортувати поточну збережену версію", + "exportWarningDesc": "Це експортує поточну збережену версію вашого робочого процесу. Якщо у вас є незбережені зміни в редакторі, будь ласка, спочатку збережіть їх, використовуючи опцію експорту на полотні робочого процесу." + }, + "publishLimit": { + "startNodeTitlePrefix": "Оновити до", + "startNodeTitleSuffix": "розблокувати необмежену кількість тригерів на робочий процес", + "startNodeDesc": "Ви досягли ліміту в 2 тригери на робочий процес для цього плану. Оновіть план, щоб опублікувати цей робочий процес." + }, + "error": { + "startNodeRequired": "Будь ласка, спершу додайте стартовий вузол перед {{operation}}", + "operations": { + "connectingNodes": "підключення вузлів", + "addingNodes": "додавання вузлів", + "modifyingWorkflow": "модифікація робочого процесу", + "updatingWorkflow": "оновлення робочого процесу" + } + }, + "customWebhook": "Користувацький вебхук", + "difyTeam": "Команда Dify", + "triggerStatus": { + "enabled": "СПУСКОВИЙ МЕХАНІЗМ", + "disabled": "ТРІГЕР • ВІДСУТНІЙ" + }, + "entryNodeStatus": { + "enabled": "ПОЧАТОК", + "disabled": "СТАРТ • ВІДКЛЮЧЕНО" + }, + "onboarding": { + "title": "Виберіть початковий вузол, щоб почати", + "description": "Різні початкові вузли мають різні можливості. Не хвилюйся, ти завжди можеш змінити їх пізніше.", + "userInputFull": "Ввід користувача (оригінальний початковий вузол)", + "userInputDescription": "Початковий вузол, який дозволяє встановлювати змінні користувача, з можливостями веб-додатку, API сервісу, сервера MCP та робочого процесу як інструментів.", + "trigger": "Спусковий механізм", + "triggerDescription": "Тригери можуть слугувати стартовим вузлом робочого процесу, наприклад, запланованими завданнями, користувацькими вебхуками або інтеграціями з іншими додатками.", + "back": "Назад", + "learnMore": "Дізнатися більше", + "aboutStartNode": "про початковий вузол.", + "escTip": { + "press": "Преса", + "key": "esc", + "toDismiss": "звільнити" + } + } +} diff --git a/web/i18n/uk-UA/workflow.ts b/web/i18n/uk-UA/workflow.ts deleted file mode 100644 index fe8f5e448f..0000000000 --- a/web/i18n/uk-UA/workflow.ts +++ /dev/null @@ -1,1296 +0,0 @@ -const translation = { - common: { - undo: 'Скасувати', - redo: 'Повторити', - editing: 'Редагування', - autoSaved: 'Автоматично збережено', - unpublished: 'Неопубліковано', - published: 'Опубліковано', - publish: 'Опублікувати', - update: 'Оновити', - run: 'Тестовий запуск', - running: 'Запущено', - inRunMode: 'У режимі запуску', - inPreview: 'У режимі попереднього перегляду', - inPreviewMode: 'У режимі попереднього перегляду', - preview: 'Попередній перегляд', - viewRunHistory: 'Переглянути історію запусків', - runHistory: 'Історія запусків', - goBackToEdit: 'Повернутися до редактора', - conversationLog: 'Журнал розмов', - debugAndPreview: 'Попередній перегляд', - restart: 'Перезапустити', - currentDraft: 'Поточний чернетка', - currentDraftUnpublished: 'Поточний чернетка неопублікований', - latestPublished: 'Останнє опубліковане', - publishedAt: 'Опубліковано о', - restore: 'Відновити', - runApp: 'Запустити додаток', - batchRunApp: 'Пакетний запуск додатку', - accessAPIReference: 'Доступ до довідника API', - embedIntoSite: 'Вбудувати на сайт', - addTitle: 'Додати заголовок...', - addDescription: 'Додати опис...', - noVar: 'Без змінної', - searchVar: 'Пошук змінної', - variableNamePlaceholder: 'Назва змінної', - setVarValuePlaceholder: 'Встановити значення змінної', - needConnectTip: 'Цей крок ні до чого не підключений', - maxTreeDepth: 'Максимальний ліміт {{depth}} вузлів на гілку', - workflowProcess: 'Процес робочого потоку', - notRunning: 'Ще не запущено', - previewPlaceholder: 'Введіть вміст у поле нижче, щоб розпочати налагодження чат-бота', - effectVarConfirm: { - title: 'Видалити змінну', - content: 'Змінна використовується в інших вузлах. Ви все ще хочете її видалити?', - }, - insertVarTip: 'Натисніть клавішу \'/\' для швидкого вставлення', - processData: 'Обробити дані', - input: 'Вхід', - output: 'Вихід', - jinjaEditorPlaceholder: 'Введіть \'/\' або \'{\' для вставлення змінної', - viewOnly: 'Тільки перегляд', - showRunHistory: 'Показати історію запусків', - enableJinja: 'Увімкнути підтримку шаблонів Jinja', - learnMore: 'Дізнатися більше', - copy: 'Копіювати', - duplicate: 'Дублювати', - pasteHere: 'Вставити сюди', - pointerMode: 'Режим вказівника', - handMode: 'Ручний режим', - model: 'Модель', - workflowAsTool: 'Робочий потік як інструмент', - configureRequired: 'Потрібна конфігурація', - configure: 'Налаштувати', - manageInTools: 'Керування в інструментах', - workflowAsToolTip: 'Після оновлення робочого потоку необхідна переконфігурація інструменту.', - viewDetailInTracingPanel: 'Переглянути деталі', - importSuccess: 'Успіх імпорту', - overwriteAndImport: 'Перезапис та імпорт', - importFailure: 'Помилка імпорту', - importDSL: 'Імпорт DSL', - syncingData: 'Синхронізація даних, всього за кілька секунд.', - chooseDSL: 'Виберіть файл DSL(yml)', - backupCurrentDraft: 'Резервна поточна чернетка', - importDSLTip: 'Поточна чернетка буде перезаписана. Експортуйте робочий процес як резервну копію перед імпортом.', - parallelTip: { - click: { - title: 'Натисніть', - desc: 'щоб додати', - }, - drag: { - title: 'Перетягувати', - desc: 'Щоб підключити', - }, - limit: 'Паралелізм обмежується {{num}} гілками.', - depthLimit: 'Обмеження рівня паралельного вкладеності шарів {{num}}', - }, - disconnect: 'Відключити', - jumpToNode: 'Перейти до цього вузла', - addParallelNode: 'Додати паралельний вузол', - parallel: 'ПАРАЛЕЛЬНИЙ', - branch: 'ГІЛКА', - fileUploadTip: 'Функції завантаження зображень були оновлені для завантаження файлів.', - ImageUploadLegacyTip: 'Тепер ви можете створювати змінні типу файлу у початковій формі. У майбутньому ми більше не підтримуватимемо функцію завантаження зображень.', - importWarning: 'Обережність', - importWarningDetails: 'Різниця у версіях DSL може впливати на певні функції', - openInExplore: 'Відкрити в Огляді', - onFailure: 'Про невдачу', - addFailureBranch: 'Додано гілку помилки', - noHistory: 'Без історії', - loadMore: 'Завантажте більше робочих процесів', - exportPNG: 'Експортувати як PNG', - exitVersions: 'Вихідні версії', - versionHistory: 'Історія версій', - publishUpdate: 'Опублікувати оновлення', - exportImage: 'Експорт зображення', - exportSVG: 'Експортувати як SVG', - exportJPEG: 'Експортувати як JPEG', - addBlock: 'Додати вузол', - needOutputNode: 'Необхідно додати вихідний вузол', - needAnswerNode: 'Вузол Відповіді повинен бути доданий', - tagBound: 'Кількість додатків, що використовують цей тег', - currentView: 'Поточний вигляд', - currentWorkflow: 'Поточний робочий процес', - moreActions: 'Більше дій', - listening: 'Слухання', - chooseStartNodeToRun: 'Виберіть початковий вузол для запуску', - runAllTriggers: 'Запустити всі тригери', - features: 'Особливості', - featuresDescription: 'Покращити користувацький досвід веб-додатку', - featuresDocLink: 'Дізнатися більше', - needAdd: 'Потрібно додати вузол {{node}}', - needStartNode: 'Потрібно додати щонайменше один початковий вузол', - workflowAsToolDisabledHint: 'Опублікуйте останній робочий процес і переконайтеся, що перед налаштуванням його як інструменту є підключений вузол введення користувача.', - }, - env: { - envPanelTitle: 'Змінні середовища', - envDescription: 'Змінні середовища можуть використовуватися для зберігання приватної інформації та облікових даних. Вони доступні лише для читання і можуть бути відокремлені від файлу DSL під час експорту.', - envPanelButton: 'Додати змінну', - modal: { - title: 'Додати змінну середовища', - editTitle: 'Редагувати змінну середовища', - type: 'Тип', - name: 'Назва', - namePlaceholder: 'назва середовища', - value: 'Значення', - valuePlaceholder: 'значення середовища', - secretTip: 'Використовується для визначення конфіденційної інформації або даних, з налаштуваннями DSL, сконфігурованими для запобігання витоку.', - description: 'Опис', - descriptionPlaceholder: 'Опишіть змінну', - }, - export: { - title: 'Експортувати секретні змінні середовища?', - checkbox: 'Експортувати секретні значення', - ignore: 'Експортувати DSL', - export: 'Експортувати DSL з секретними значеннями', - }, - }, - globalVar: { - title: 'Системні змінні', - description: 'Системні змінні — це глобальні змінні, до яких будь-який вузол може звертатися без з’єднання, якщо тип відповідає, наприклад ID кінцевого користувача та ID робочого процесу.', - fieldsDescription: { - conversationId: 'ID розмови', - dialogCount: 'Кількість розмов', - userId: 'ID користувача', - triggerTimestamp: 'Мітка часу запуску застосунку', - appId: 'ID застосунку', - workflowId: 'ID робочого процесу', - workflowRunId: 'ID запуску робочого процесу', - }, - }, - chatVariable: { - panelTitle: 'Змінні розмови', - panelDescription: 'Змінні розмови використовуються для зберігання інтерактивної інформації, яку LLM повинен пам\'ятати, включаючи історію розмови, завантажені файли, вподобання користувача. Вони доступні для читання та запису.', - docLink: 'Відвідайте нашу документацію, щоб дізнатися більше.', - button: 'Додати змінну', - modal: { - title: 'Додати змінну розмови', - editTitle: 'Редагувати змінну розмови', - name: 'Назва', - namePlaceholder: 'Назва змінної', - type: 'Тип', - value: 'Значення за замовчуванням', - valuePlaceholder: 'Значення за замовчуванням, залиште порожнім, щоб не встановлювати', - description: 'Опис', - descriptionPlaceholder: 'Опишіть змінну', - editInJSON: 'Редагувати в JSON', - oneByOne: 'Додавати по одному', - editInForm: 'Редагувати у формі', - arrayValue: 'Значення', - addArrayValue: 'Додати значення', - objectKey: 'Ключ', - objectType: 'Тип', - objectValue: 'Значення за замовчуванням', - }, - storedContent: 'Збережений вміст', - updatedAt: 'Оновлено ', - }, - changeHistory: { - title: 'Історія змін', - placeholder: 'Ви ще нічого не змінили', - clearHistory: 'Очистити історію', - hint: 'Підказка', - hintText: 'Дії редагування відстежуються в історії змін, яка зберігається на вашому пристрої протягом цієї сесії. Ця історія буде видалена після виходу з редактора.', - stepBackward_one: '{{count}} крок назад', - stepBackward_other: '{{count}} кроки назад', - stepForward_one: '{{count}} крок вперед', - stepForward_other: '{{count}} кроки вперед', - sessionStart: 'Початок сесії', - currentState: 'Поточний стан', - noteAdd: 'Додано нотатку', - noteChange: 'Нотатку змінено', - noteDelete: 'Нотатку видалено', - nodeTitleChange: 'Заголовок вузла змінено', - nodeResize: 'Вузол змінив розмір', - nodePaste: 'Вузол вставлений', - nodeDelete: 'Вузол видалено', - nodeDragStop: 'Вузол переміщено', - edgeDelete: 'Вузол відключено', - nodeChange: 'Вузол змінився', - nodeAdd: 'Додано вузол', - nodeDescriptionChange: 'Опис вузла змінено', - nodeConnect: 'Вузол підключено', - }, - errorMsg: { - fieldRequired: '{{field}} є обов\'язковим', - authRequired: 'Потрібна авторизація', - invalidJson: '{{field}} є недійсним JSON', - fields: { - variable: 'Назва змінної', - variableValue: 'Значення змінної', - code: 'Код', - model: 'Модель', - rerankModel: 'Модель повторного ранжування', - visionVariable: 'Змінна зору', - }, - invalidVariable: 'Недійсна змінна', - rerankModelRequired: 'Перед увімкненням Rerank Model, будь ласка, підтвердьте, що модель успішно налаштована в налаштуваннях.', - noValidTool: '{{field}} не вибрано дійсного інструменту', - toolParameterRequired: '{{field}}: параметр [{{param}}] обов\'язковий', - startNodeRequired: 'Будь ласка, спершу додайте стартовий вузол перед {{operation}}', - }, - singleRun: { - testRun: 'Тестовий запуск', - startRun: 'Почати запуск', - running: 'Запущено', - testRunIteration: 'Ітерація тестового запуску', - back: 'Назад', - iteration: 'Ітерація', - loop: 'Петля', - reRun: 'Повторний запуск', - preparingDataSource: 'Підготовка джерела даних', - }, - tabs: { - 'tools': 'Інструменти', - 'allTool': 'Усі', - 'customTool': 'Користувацькі', - 'workflowTool': 'Робочий потік', - 'question-understand': 'Розуміння питань', - 'logic': 'Логіка', - 'transform': 'Трансформація', - 'utilities': 'Утиліти', - 'noResult': 'Нічого не знайдено', - 'searchTool': 'Інструмент пошуку', - 'plugin': 'Плагін', - 'agent': 'Стратегія агента', - 'blocks': 'Вузли', - 'searchBlock': 'Пошуковий вузол', - 'addAll': 'Додати все', - 'allAdded': 'Всі додані', - 'sources': 'Джерел', - 'searchDataSource': 'Пошук у джерелі даних', - 'start': 'Почати', - 'searchTrigger': 'Пошук тригерів...', - 'allTriggers': 'Всі тригери', - 'noPluginsFound': 'Плагіни не знайдено', - 'requestToCommunity': 'Запити до спільноти', - 'featuredTools': 'Рекомендоване', - 'showMoreFeatured': 'Показати більше', - 'showLessFeatured': 'Показати менше', - 'installed': 'Встановлено', - 'pluginByAuthor': 'Автор: {{author}}', - 'usePlugin': 'Вибрати інструмент', - 'hideActions': 'Сховати інструменти', - 'noFeaturedPlugins': 'Відкрийте більше інструментів у Маркетплейсі', - 'noFeaturedTriggers': 'Дізнайтеся більше тригерів у Маркетплейсі', - 'startDisabledTip': 'Вузол тригера та вузол введення користувача взаємовиключні.', - }, - blocks: { - 'start': 'Початок', - 'end': 'Вивід', - 'answer': 'Відповідь', - 'llm': 'LLM', - 'knowledge-retrieval': 'Отримання знань', - 'question-classifier': 'Класифікатор питань', - 'if-else': 'ЯКЩО/ІНАКШЕ', - 'code': 'Код', - 'template-transform': 'Шаблон', - 'http-request': 'HTTP-запит', - 'variable-assigner': 'Присвоювач змінних', - 'variable-aggregator': 'Агрегатор змінних', - 'assigner': 'Призначувач змінних', - 'iteration-start': 'Початок ітерації', - 'iteration': 'Ітерація', - 'parameter-extractor': 'Екстрактор параметрів', - 'document-extractor': 'Екстрактор документів', - 'list-operator': 'Оператор списку', - 'agent': 'Агент', - 'loop-start': 'Початок циклу', - 'loop': 'Петля', - 'loop-end': 'Вихід з циклу', - 'datasource': 'Джерело даних', - 'knowledge-index': 'База знань', - 'originalStartNode': 'оригінальний початковий вузол', - 'trigger-schedule': 'Тригер розкладу', - 'trigger-webhook': 'Тригер вебхука', - 'trigger-plugin': 'Тригер плагіна', - }, - 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': 'Агрегує змінні з кількох гілок у одну змінну для уніфікованої конфігурації кінцевих вузлів.', - 'assigner': 'Вузол призначення змінних використовується для присвоєння значень записуваним змінним (таким як змінні розмови).', - 'variable-aggregator': 'Агрегує змінні з кількох гілок у одну змінну для уніфікованої конфігурації кінцевих вузлів.', - 'iteration': 'Виконувати кілька кроків на об\'єкті списку, поки не буде виведено всі результати.', - 'parameter-extractor': 'Використовуйте LLM для вилучення структурованих параметрів з природної мови для викликів інструментів або HTTP-запитів.', - 'document-extractor': 'Використовується для аналізу завантажених документів у текстовий контент, який легко зрозумілий LLM.', - 'list-operator': 'Використовується для фільтрації або сортування вмісту масиву.', - 'agent': 'Виклик великих мовних моделей для відповідей на запитання або обробки природної мови', - 'loop': 'Виконуйте цикл логіки, поки не буде виконано умову завершення або досягнуто максимальну кількість ітерацій.', - 'loop-end': 'Еквівалентно "перерві". Цей вузол не має елементів конфігурації. Коли тіло циклу досягає цього вузла, цикл завершується.', - 'datasource': 'Джерело даних про', - 'knowledge-index': 'База знань про нас', - 'trigger-schedule': 'Триггер робочого процесу, що запускає робочі процеси за розкладом', - 'trigger-webhook': 'Тригер вебхука отримує HTTP-запити від сторонніх систем для автоматичного запуску робочих процесів.', - 'trigger-plugin': 'Тригер інтеграції сторонніх розробників, який запускає робочі процеси з подій зовнішньої платформи', - }, - operator: { - zoomIn: 'Збільшити', - zoomOut: 'Зменшити', - zoomTo50: 'Збільшити до 50%', - zoomTo100: 'Збільшити до 100%', - zoomToFit: 'Збільшити для підгонки', - alignCenter: 'Центр', - alignRight: 'Праворуч', - vertical: 'Вертикальний', - alignBottom: 'Низ', - alignLeft: 'Ліворуч', - alignTop: 'Верх', - horizontal: 'Горизонтальний', - alignMiddle: 'По центру', - distributeVertical: 'Розподілити по вертикалі', - distributeHorizontal: 'Розподілити по горизонталі', - selectionAlignment: 'Вирівнювання вибору', - alignNodes: 'Вирівнювання вузлів', - }, - panel: { - userInputField: 'Поле введення користувача', - helpLink: 'Довідковий центр', - about: 'Про', - createdBy: 'Створено ', - nextStep: 'Наступний крок', - runThisStep: 'Запустити цей крок', - checklist: 'Контрольний список', - checklistTip: 'Переконайтеся, що всі проблеми вирішені перед публікацією', - checklistResolved: 'Всі проблеми вирішені', - change: 'Змінити', - optional: '(необов\'язково)', - organizeBlocks: 'Організуйте вузли', - changeBlock: 'Змінити вузол', - selectNextStep: 'Виберіть наступний крок', - addNextStep: 'Додайте наступний крок у цей робочий процес', - minimize: 'Вийти з повноекранного режиму', - maximize: 'Максимізувати полотно', - scrollToSelectedNode: 'Прокрутіть до вибраного вузла', - optional_and_hidden: '(необов\'язково & приховано)', - goTo: 'Перейти до', - startNode: 'Початковий вузол', - openWorkflow: 'Відкрити робочий процес', - }, - nodes: { - common: { - outputVars: 'Змінні виходу', - insertVarTip: 'Вставити змінну', - memory: { - memory: 'Пам\'ять', - memoryTip: 'Налаштування пам\'яті чату', - windowSize: 'Розмір вікна', - conversationRoleName: 'Назва ролі у розмові', - user: 'Префікс користувача', - assistant: 'Префікс помічника', - }, - memories: { - title: 'Спогади', - tip: 'Пам\'ять чату', - builtIn: 'Вбудовано', - }, - errorHandle: { - none: { - title: 'Ніхто', - desc: 'Вузол припинить роботу, якщо виникне виняток і не буде оброблений', - }, - defaultValue: { - title: 'Значення за замовчуванням', - desc: 'При виникненні помилки вкажіть статичний вміст виводу.', - tip: 'У разі помилки поверне нижче значення.', - output: 'Вивести значення за замовчуванням', - inLog: 'Виняток вузла, що виводить відповідно до значень за замовчуванням.', - }, - failBranch: { - desc: 'Коли виникає помилка, він виконає гілку винятку', - customize: 'Перейдіть до полотна, щоб налаштувати логіку fail branch.', - inLog: 'Виняток вузла, автоматично виконає гілку fail. Вихідні дані вузла повернуть тип помилки та повідомлення про помилку та передадуть їх до низхідного потоку.', - title: 'Гілка невдачі', - customizeTip: 'Коли гілка fail активована, винятки, викликані вузлами, не завершать процес. Замість цього він автоматично виконає попередньо визначену гілку помилки, дозволяючи вам гнучко надавати повідомлення про помилки, звіти, виправлення або пропускати дії.', - }, - partialSucceeded: { - tip: 'У процесі є вузли {{num}}, які працюють ненормально, будь ласка, перейдіть до трасування, щоб перевірити логи.', - }, - title: 'Обробка помилок', - tip: 'Стратегія обробки винятків, що спрацьовує, коли вузол стикається з винятком.', - }, - retry: { - retry: 'Повторити', - retryOnFailure: 'повторити спробу в разі невдачі', - retryInterval: 'Інтервал повторних спроб', - retrying: 'Спроби...', - retryFailed: 'Повторна спроба не вдалася', - times: 'Разів', - ms: 'МС', - retries: '{{num}} Спроб', - maxRetries: 'Максимальна кількість повторних спроб', - retrySuccessful: 'Повторна спроба успішна', - retryFailedTimes: '{{times}} повторні спроби не вдалися', - retryTimes: 'Повторіть спробу {{times}} у разі невдачі', - }, - typeSwitch: { - input: 'Вхідне значення', - variable: 'Використовуйте змінну', - }, - inputVars: 'Вхідні змінні', - pluginNotInstalled: 'Плагін не встановлений', - }, - 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.', - prompt: 'prompt', - roleDescription: { - system: 'Дайте високорівневі інструкції для розмови', - user: 'Надайте інструкції, запити або будь-який текстовий вхід для моделі', - assistant: 'Відповіді моделі на основі повідомлень користувача', - }, - addMessage: 'Додати повідомлення', - vision: 'бачення', - files: 'Файли', - resolution: { - name: 'Роздільна здатність', - high: 'Висока', - low: 'Низька', - }, - outputVars: { - output: 'Генерований вміст', - reasoning_content: 'Зміст міркування', - usage: 'Інформація про використання моделі', - }, - singleRun: { - variable: 'Змінна', - }, - sysQueryInUser: 'sys.query у повідомленні користувача є обов\'язковим', - jsonSchema: { - warningTips: { - saveSchema: 'Будь ласка, завершіть редагування поточного поля перед збереженням схемы.', - }, - import: 'Імпорт з JSON', - instruction: 'Інструкція', - descriptionPlaceholder: 'Додати опис', - addField: 'Додати поле', - promptTooltip: 'Перетворіть текстовий опис у стандартизовану структуру JSON Schema.', - resultTip: 'Ось згенерований результат. Якщо вас не влаштовує, ви можете повернутися назад і змінити свій запит.', - promptPlaceholder: 'Опишіть вашу схему JSON...', - generating: 'Генерація JSON-схеми...', - back: 'Назад', - generatedResult: 'Згенерований результат', - fieldNamePlaceholder: 'Назва поля', - addChildField: 'Додати поле дитини', - apply: 'Застосувати', - regenerate: 'Перегенерувати', - resetDefaults: 'Скинути', - generateJsonSchema: 'Згенерувати JSON Схему', - showAdvancedOptions: 'Показати розширені налаштування', - required: 'необхідно', - generationTip: 'Ви можете використовувати природну мову, щоб швидко створити JSON-схему.', - stringValidations: 'Валідність рядків', - generate: 'Генерувати', - title: 'Структурована схема виходу', - doc: 'Дізнайтеся більше про структурований вихід', - }, - reasoningFormat: { - separated: 'Окремі теги для думок', - tagged: 'Продовжуйте думати про мітки', - title: 'Увімкніть розділення тегів для міркування', - tooltip: 'Витягніть вміст з тегів think і зберігайте його в полі reasoning_content.', - }, - }, - knowledgeRetrieval: { - queryVariable: 'Змінна запиту', - knowledge: 'Знання', - outputVars: { - output: 'Відновлені сегментовані дані', - content: 'Сегментований вміст', - title: 'Сегментований заголовок', - icon: 'Сегментована піктограма', - url: 'Сегментована URL', - metadata: 'Інші метадані', - files: 'Отримані файли', - }, - metadata: { - options: { - disabled: { - title: 'Вимкнено', - subTitle: 'Не включаючи фільтрацію метаданих', - }, - automatic: { - title: 'Автоматичний', - subTitle: 'Автоматично генерувати умови фільтрації метаданих на основі запиту користувача.', - desc: 'Автоматично генерувати умови фільтрації метаданих на основі змінної запиту.', - }, - manual: { - subTitle: 'Вручну додайте умови фільтрації метаданих', - title: 'Посібник', - }, - }, - panel: { - search: 'Пошукова метаінформація', - datePlaceholder: 'Виберіть час...', - title: 'Умови фільтрації метаданих', - placeholder: 'Введіть значення', - conditions: 'Умови', - select: 'Виберіть змінну...', - add: 'Додати умову', - }, - title: 'Фільтрація метаданих', - tip: 'Фільтрація метаданих — це процес використання атрибутів метаданих (таких як теги, категорії або права доступу) для уточнення та контролю отримання відповідної інформації в системі.', - }, - queryText: 'Текст запиту', - queryAttachment: 'Пошук зображень', - }, - 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': 'Bearer', - 'custom': 'Користувацький', - 'api-key-title': 'API-ключ', - 'header': 'Заголовок', - }, - insertVarPlaceholder: 'введіть \'/\', щоб вставити змінну', - timeout: { - title: 'Тайм-аут', - connectLabel: 'Тайм-аут підключення', - connectPlaceholder: 'Введіть тайм-аут підключення в секундах', - readLabel: 'Тайм-аут читання', - readPlaceholder: 'Введіть тайм-аут читання в секундах', - writeLabel: 'Тайм-аут запису', - writePlaceholder: 'Введіть тайм-аут запису в секундах', - }, - type: 'Тип', - binaryFileVariable: 'Змінна двійкового файлу', - extractListPlaceholder: 'Введіть індекс елемента списку, введіть \'/\' вставити змінну', - curl: { - title: 'Імпорт з cURL', - placeholder: 'Вставте сюди рядок cURL', - }, - verifySSL: { - title: 'Перевірити SSL сертифікат', - warningTooltip: 'Вимкнення перевірки SSL не рекомендується для виробничих середовищ. Це слід використовувати лише в розробці або тестуванні, оскільки це робить з\'єднання вразливим до загроз безпеці, таких як атаки «людина посередині».', - }, - }, - code: { - inputVars: 'Вхідні змінні', - outputVars: 'Змінні виходу', - advancedDependencies: 'Розширені залежності', - advancedDependenciesTip: 'Додайте тут деякі попередньо завантажені залежності, які потребують більше часу для споживання або не є за замовчуванням вбудованими', - searchDependencies: 'Шукати залежності', - syncFunctionSignature: 'Синхронізувати підпис функції з кодом', - }, - templateTransform: { - inputVars: 'Вхідні змінні', - code: 'Код', - codeSupportTip: 'Підтримує лише Jinja2', - outputVars: { - output: 'Трансформований вміст', - }, - }, - ifElse: { - if: 'Якщо', - else: 'Інакше', - elseDescription: 'Використовується для визначення логіки, яка має бути виконана, коли умова if не виконана.', - and: 'і', - or: 'або', - operator: 'Оператор', - notSetVariable: 'Будь ласка, спочатку встановіть змінну', - comparisonOperator: { - 'contains': 'містить', - 'not contains': 'не містить', - 'start with': 'починається з', - 'end with': 'закінчується на', - 'is': 'є', - 'is not': 'не є', - 'empty': 'порожній', - 'not empty': 'не порожній', - 'null': 'є null', - 'not null': 'не є null', - 'in': 'В', - 'all of': 'Всі з', - 'exists': 'Існує', - 'not exists': 'не існує', - 'not in': 'Не в', - 'after': 'після', - 'before': 'раніше', - }, - enterValue: 'Введіть значення', - addCondition: 'Додати умову', - conditionNotSetup: 'Умова НЕ налаштована', - selectVariable: 'Виберіть змінну...', - optionName: { - audio: 'Аудіо', - doc: 'Док', - video: 'Відео', - localUpload: 'Локальне завантаження', - image: 'Образ', - url: 'URL-адреса', - }, - select: 'Виберіть', - addSubVariable: 'Підзмінна', - }, - variableAssigner: { - title: 'Присвоєння змінних', - outputType: 'Тип виходу', - varNotSet: 'Змінна не встановлена', - noVarTip: 'Додайте змінні для присвоєння', - type: { - string: 'Рядок', - number: 'Число', - object: 'Об\'єкт', - array: 'Масив', - }, - aggregationGroup: 'Група агрегації', - aggregationGroupTip: 'Увімкнення цієї функції дозволяє агрегатору змінних агрегувати кілька наборів змінних.', - addGroup: 'Додати групу', - outputVars: { - varDescribe: 'Вихід {{groupName}}', - }, - setAssignVariable: 'Встановити змінну присвоєння', - }, - assigner: { - 'assignedVariable': 'Призначена Змінна', - 'writeMode': 'Режим Запису', - 'writeModeTip': 'Коли ПРИЗНАЧЕНА ЗМІННА є масивом, режим додавання додає в кінець.', - 'over-write': 'Перезаписати', - 'append': 'Додати', - 'plus': 'Плюс', - 'clear': 'Очистити', - 'setVariable': 'Встановити Змінну', - 'variable': 'Змінна', - 'operations': { - 'clear': 'Ясний', - 'set': 'Встановити', - 'title': 'Операція', - 'append': 'Додати', - '-=': '-=', - 'over-write': 'Перезаписати', - 'overwrite': 'Перезаписати', - '/=': '/=', - '+=': '+=', - '*=': '*=', - 'extend': 'Розширити', - 'remove-last': 'Видалити останнє', - 'remove-first': 'Видалити перший', - }, - 'selectAssignedVariable': 'Виберіть призначену змінну...', - 'noAssignedVars': 'Немає доступних призначених змінних', - 'noVarTip': 'Натисніть кнопку «+», щоб додати змінні', - 'assignedVarsDescription': 'Призначені змінні мають бути доступними для запису, такими як змінні розмови.', - 'variables': 'Змінні', - 'varNotSet': 'Змінна НЕ встановлена', - 'setParameter': 'Встановити параметр...', - }, - tool: { - inputVars: 'Вхідні змінні', - outputVars: { - text: 'генерований вміст інструменту', - files: { - title: 'файли, генеровані інструментом', - type: 'Тип підтримки. Наразі підтримуються лише зображення', - transfer_method: 'Метод передачі. Значення - remote_url або local_file', - url: 'URL зображення', - upload_file_id: 'ID завантаженого файлу', - }, - json: 'JSON, згенерований інструментом', - }, - authorize: 'Уповноважити', - settings: 'Налаштування', - insertPlaceholder2: 'вставте змінну', - insertPlaceholder1: 'Введіть або натисніть', - }, - questionClassifiers: { - model: 'модель', - inputVars: 'Вхідні змінні', - outputVars: { - className: 'Назва класу', - usage: 'Інформація про використання моделі', - }, - class: 'Клас', - classNamePlaceholder: 'Напишіть назву вашого класу', - advancedSetting: 'Розширене налаштування', - topicName: 'Назва теми', - topicPlaceholder: 'Напишіть назву вашої теми', - addClass: 'Додати клас', - instruction: 'Інструкція', - instructionTip: 'Введіть додаткові інструкції, щоб допомогти класифікатору запитань краще зрозуміти, як категоризувати запитання.', - instructionPlaceholder: 'Напишіть вашу інструкцію', - }, - parameterExtractor: { - inputVar: 'Вхідна змінна', - outputVars: { - isSuccess: 'Є успіх. У разі успіху значення 1, у разі невдачі значення 0.', - errorReason: 'Причина помилки', - usage: 'Інформація про використання моделі', - }, - extractParameters: 'Витягти параметри', - importFromTool: 'Імпорт з інструментів', - addExtractParameter: 'Додати параметр витягування', - addExtractParameterContent: { - name: 'Ім\'я', - namePlaceholder: 'Ім\'я параметра витягування', - type: 'Тип', - typePlaceholder: 'Тип параметра витягування', - description: 'Опис', - descriptionPlaceholder: 'Опис параметра витягування', - required: 'Обов\'язковий', - requiredContent: 'Обов\'язковий використовується лише як посилання для інференції моделі і не для обов\'язкової валідації вихідного параметра.', - }, - extractParametersNotSet: 'Параметри витягування не налаштовані', - instruction: 'Інструкція', - instructionTip: 'Введіть додаткові інструкції, щоб допомогти екстрактору параметрів зрозуміти, як витягувати параметри.', - advancedSetting: 'Розширене налаштування', - reasoningMode: 'Режим інференції', - reasoningModeTip: 'Ви можете вибрати відповідний режим інференції залежно від здатності моделі реагувати на інструкції щодо викликів функцій або запитів.', - }, - iteration: { - deleteTitle: 'Видалити вузол ітерації?', - deleteDesc: 'Видалення вузла ітерації видалить усі дочірні вузли', - input: 'Вхід', - output: 'Змінні виходу', - iteration_one: '{{count}} Ітерація', - iteration_other: '{{count}} Ітерацій', - currentIteration: 'Поточна ітерація', - ErrorMethod: { - operationTerminated: 'Припинено', - continueOnError: 'Продовжити після помилки', - removeAbnormalOutput: 'видалити-ненормальний-вивід', - }, - error_one: '{{count}} Помилка', - comma: ',', - MaxParallelismTitle: 'Максимальна паралельність', - parallelModeUpper: 'ПАРАЛЕЛЬНИЙ РЕЖИМ', - error_other: '{{count}} Помилки', - parallelMode: 'Паралельний режим', - parallelModeEnableTitle: 'Увімкнено паралельний режим', - errorResponseMethod: 'Метод реагування на помилку', - parallelPanelDesc: 'У паралельному режимі завдання в ітерації підтримують паралельне виконання.', - parallelModeEnableDesc: 'У паралельному режимі завдання всередині ітерацій підтримують паралельне виконання. Ви можете налаштувати це на панелі властивостей праворуч.', - MaxParallelismDesc: 'Максимальний паралелізм використовується для контролю числа завдань, що виконуються одночасно за одну ітерацію.', - answerNodeWarningDesc: 'Попередження в паралельному режимі: вузли відповідей, призначення змінних розмови та постійні операції читання/запису в межах ітерацій можуть спричинити винятки.', - flattenOutput: 'Вирівняти результат', - flattenOutputDesc: 'Коли ввімкнено, якщо всі результати ітерацій є масивами, вони будуть об\'єднані в один масив. Коли вимкнено, результати збережуть вкладену структуру масивів.', - }, - note: { - editor: { - large: 'Великий', - bold: 'Жирний', - openLink: 'Відкривати', - small: 'Малий', - link: 'Посилання', - italic: 'Курсив', - placeholder: 'Напишіть свою замітку...', - strikethrough: 'Закреслені', - medium: 'Середнє', - showAuthor: 'Показати автора', - bulletList: 'Маркований список', - enterUrl: 'Введіть URL-адресу...', - unlink: 'Від\'єднати', - invalidUrl: 'Невірна URL-адреса', - }, - addNote: 'Додати примітку', - }, - docExtractor: { - outputVars: { - text: 'Витягнутий текст', - }, - learnMore: 'Дізнатися більше', - inputVar: 'Вхідна змінна', - supportFileTypes: 'Типи файлів підтримки: {{types}}.', - }, - listFilter: { - outputVars: { - last_record: 'Останній запис', - first_record: 'Перший запис', - result: 'Результат фільтра', - }, - desc: 'СПАДАННЯМ', - filterCondition: 'Стан фільтра', - inputVar: 'Вхідна змінна', - asc: 'ЦНАП', - filterConditionKey: 'Клавіша умови фільтра', - limit: 'Зверху N', - selectVariableKeyPlaceholder: 'Виберіть ключ підзмінної', - orderBy: 'Замовити по', - filterConditionComparisonOperator: 'Оператор порівняння умов фільтра', - filterConditionComparisonValue: 'Значення умови фільтра', - extractsCondition: 'Витягніть елемент N', - }, - agent: { - strategy: { - selectTip: 'Виберіть агентську стратегію', - tooltip: 'Різні агентські стратегії визначають, як система планує та виконує багатоетапні виклики інструментів', - configureTipDesc: 'Після налаштування агентної стратегії цей вузол автоматично завантажить решту конфігурацій. Стратегія вплине на механізм багатоступінчастого інструментального міркування.', - label: 'Агентична стратегія', - configureTip: 'Будь ласка, налаштуйте агентичну стратегію.', - searchPlaceholder: 'Стратегія пошукового агента', - shortLabel: 'Стратегія', - }, - pluginInstaller: { - install: 'Інсталювати', - installing: 'Установки', - }, - modelNotInMarketplace: { - desc: 'Ця модель встановлюється з локального репозиторію або репозиторію GitHub. Будь ласка, використовуйте після встановлення.', - title: 'Модель не встановлена', - manageInPlugins: 'Керування в плагінах', - }, - modelNotSupport: { - title: 'Непідтримувана модель', - desc: 'Встановлена версія плагіна не передбачає цю модель.', - descForVersionSwitch: 'Встановлена версія плагіна не передбачає цю модель. Натисніть, щоб змінити версію.', - }, - modelSelectorTooltips: { - deprecated: 'Ця модель вважається застарілою', - }, - outputVars: { - files: { - upload_file_id: 'Завантажити ідентифікатор файлу', - transfer_method: 'Спосіб переказу. Цінність remote_url або local_file', - type: 'Тип підтримки. Тепер підтримка тільки зображення', - url: 'URL-адреса зображення', - title: 'Файли, створені агентом', - }, - text: 'Контент, створений агентом', - usage: 'Інформація про використання моделі', - json: 'Агент згенерував JSON', - }, - checkList: { - strategyNotSelected: 'Стратегію не обрано', - }, - installPlugin: { - cancel: 'Скасувати', - title: 'Встановити плагін', - desc: 'Про встановлення наступного плагіна', - changelog: 'Журнал змін', - install: 'Інсталювати', - }, - strategyNotSet: 'Агентська стратегія Не встановлено', - strategyNotFoundDesc: 'Встановлена версія плагіна не забезпечує цю стратегію.', - notAuthorized: 'Не авторизовано', - pluginNotInstalled: 'Цей плагін не встановлено', - linkToPlugin: 'Посилання на плагіни', - configureModel: 'Налаштуйте модель', - toolNotInstallTooltip: '{{tool}} не встановлено', - maxIterations: 'Максимальна кількість ітерацій', - pluginNotFoundDesc: 'Цей плагін встановлюється з GitHub. Будь ласка, перейдіть до Плагіни для перевстановлення', - modelNotInstallTooltip: 'Дана модель не встановлена', - unsupportedStrategy: 'Стратегія без підтримки', - learnMore: 'Дізнатися більше', - tools: 'Інструмент', - strategyNotInstallTooltip: '{{strategy}} не встановлено', - toolbox: 'ящик для інструментів', - toolNotAuthorizedTooltip: '{{tool}} Не авторизовано', - model: 'модель', - pluginNotInstalledDesc: 'Цей плагін встановлюється з GitHub. Будь ласка, перейдіть до Плагіни для перевстановлення', - modelNotSelected: 'Модель не обрана', - strategyNotFoundDescAndSwitchVersion: 'Встановлена версія плагіна не забезпечує цю стратегію. Натисніть, щоб змінити версію.', - parameterSchema: 'Схема параметрів', - clickToViewParameterSchema: 'Натисніть, щоб переглянути схему параметрів', - }, - loop: { - ErrorMethod: { - operationTerminated: 'Припинено', - removeAbnormalOutput: 'Видалити ненормальний вихід', - continueOnError: 'Продовжити незважаючи на помилку', - }, - loop_one: '{{count}} Цикл', - exitConditionTip: 'Вузол циклу потребує принаймні однієї умови виходу', - error_other: '{{count}} Помилок', - setLoopVariables: 'Встановіть змінні в межах області видимості циклу', - loopVariables: 'Циклічні змінні', - currentLoopCount: 'Поточна кількість циклів: {{count}}', - totalLoopCount: 'Загальна кількість циклів: {{count}}', - loop_other: '{{count}} Циклів', - error_one: '{{count}} Помилка', - currentLoop: 'Поточна петля', - breakCondition: 'Умова завершення циклу', - deleteDesc: 'Видалення вузла циклу призведе до видалення всіх дочірніх вузлів.', - breakConditionTip: 'Тільки змінні в циклах з умовами завершення та змінні розмови можуть бути використані.', - initialLoopVariables: 'Початкові змінні циклу', - finalLoopVariables: 'Заключні змінні циклу', - input: 'Введення', - errorResponseMethod: 'Метод відповіді на помилку', - output: 'Вихідна змінна', - variableName: 'Змінна Ім\'я', - comma: ',', - inputMode: 'Режим введення', - loopNode: 'Циклічний вузол', - loopMaxCountError: 'Будь ласка, введіть дійсне максимальне значення циклу, яке коливається від 1 до {{maxCount}}', - deleteTitle: 'Видалити вузол циклу?', - loopMaxCount: 'Максимальна кількість циклів', - }, - dataSource: { - supportedFileFormatsPlaceholder: 'Розширення файлу, e.g. doc', - add: 'Додати джерело даних', - supportedFileFormats: 'Підтримувані формати файлів', - }, - knowledgeBase: { - chunkStructureTip: { - learnMore: 'Дізнатися більше', - title: 'Будь ласка, виберіть структуру шматків', - message: 'База знань Dify підтримує три структури, що розділяються: Загальні, Батьки-дочірні та Запитання та відповіді. Кожна база знань може мати тільки одну структуру. Вихідні дані з попереднього вузла повинні співпадати з обраною структурою фрагментів. Зауважимо, що вибір структури фрагментації впливає на доступні методи індексування.', - }, - changeChunkStructure: 'Зміна структури фрагментів', - aboutRetrieval: 'про метод пошуку.', - chunkStructure: 'Структура шматків', - chunkIsRequired: 'Потрібна структура шматків', - indexMethodIsRequired: 'Обов\'язковий індексний метод', - chooseChunkStructure: 'Виберіть структуру шматків', - retrievalSettingIsRequired: 'Потрібне налаштування для отримання', - chunksInput: 'Частини', - chunksInputTip: 'Вхідна змінна вузла бази знань - це Частини. Тип змінної - об\'єкт з певною JSON-схемою, яка повинна відповідати вибраній структурі частин.', - chunksVariableIsRequired: 'Змінна chunks є обов\'язковою', - embeddingModelIsRequired: 'Потрібна модель вбудовування', - rerankingModelIsRequired: 'Потрібна модель повторного ранжування', - embeddingModelIsInvalid: 'Модель вбудовування недійсна', - rerankingModelIsInvalid: 'Модель переналаштування недійсна', - }, - triggerPlugin: { - authorized: 'Авторизований', - notConfigured: 'Не налаштовано', - notAuthorized: 'Не авторизовано', - selectSubscription: 'Вибрати підписку', - availableSubscriptions: 'Доступні підписки', - addSubscription: 'Додати нову підписку', - removeSubscription: 'Скасувати підписку', - subscriptionRemoved: 'Підписку успішно видалено', - error: 'Помилка', - configuration: 'Налаштування', - remove: 'Видалити', - or: 'АБО', - useOAuth: 'Використовувати OAuth', - useApiKey: 'Використати ключ API', - authenticationFailed: 'Аутентифікація не вдалася', - authenticationSuccess: 'Аутентифікація успішна', - oauthConfigFailed: 'Не вдалося налаштувати OAuth', - configureOAuthClient: 'Налаштувати OAuth-клієнта', - oauthClientDescription: 'Налаштуйте облікові дані клієнта OAuth для активації автентифікації', - oauthClientSaved: 'Конфігурацію клієнта OAuth успішно збережено', - configureApiKey: 'Налаштувати ключ API', - apiKeyDescription: 'Налаштувати ключ API для автентифікації', - apiKeyConfigured: 'Ключ API успішно налаштовано', - configurationFailed: 'Не вдалося налаштувати', - failedToStart: 'Не вдалося запустити процес аутентифікації', - credentialsVerified: 'Облікові дані успішно перевірено', - credentialVerificationFailed: 'Перевірка облікових даних не вдалася', - verifyAndContinue: 'Підтвердити та продовжити', - configureParameters: 'Налаштувати параметри', - parametersDescription: 'Налаштуйте параметри та властивості тригера', - configurationComplete: 'Налаштування завершено', - configurationCompleteDescription: 'Ваш тригер успішно налаштовано', - configurationCompleteMessage: 'Ваша конфігурація тригера тепер завершена і готова до використання.', - parameters: 'Параметри', - properties: 'Властивості', - propertiesDescription: 'Додаткові властивості конфігурації для цього тригера', - noConfigurationRequired: 'Додаткове налаштування для цього тригера не потрібне.', - subscriptionName: 'Назва підписки', - subscriptionNameDescription: 'Введіть унікальне ім’я для цієї підписки на тригер', - subscriptionNamePlaceholder: 'Введіть назву підписки...', - subscriptionNameRequired: 'Потрібна назва підписки', - subscriptionRequired: 'Потрібна підписка', - }, - triggerSchedule: { - title: 'Розклад', - nodeTitle: 'Тригер розкладу', - notConfigured: 'Не налаштовано', - useCronExpression: 'Використовувати cron-вираз', - useVisualPicker: 'Використати візуальний вибір', - frequency: { - label: 'ЧАСТОТА', - hourly: 'Погодинно', - daily: 'Щодня', - weekly: 'Щотижня', - monthly: 'Щомісячно', - }, - selectFrequency: 'Виберіть частоту', - frequencyLabel: 'Частота', - nextExecution: 'Наступне виконання', - weekdays: 'Будні дні', - time: 'Час', - cronExpression: 'Вираз Cron', - nextExecutionTime: 'ЧАС НАСТУПНОГО ВИКОНАННЯ', - nextExecutionTimes: 'Наступні 5 разів виконання', - startTime: 'Час початку', - executeNow: 'Виконання зараз', - selectDateTime: 'Вибрати дату та час', - hours: 'Години', - minutes: 'Хвилини', - onMinute: 'Що хвилина', - days: 'Дні', - lastDay: 'Останній день', - lastDayTooltip: 'Не всі місяці мають 31 день. Використовуйте опцію «останній день», щоб вибрати останній день кожного місяця.', - mode: 'Мода', - timezone: 'Часовий пояс', - visualConfig: 'Візуальна конфігурація', - monthlyDay: 'Щомісячний день', - executionTime: 'Час виконання', - invalidTimezone: 'Неправильний часовий пояс', - invalidCronExpression: 'Недійсний cron вираз', - noValidExecutionTime: 'Не можна обчислити допустимий час виконання', - executionTimeCalculationError: 'Не вдалося обчислити час виконання', - invalidFrequency: 'Неприпустима частота', - invalidStartTime: 'Недійсний час початку', - startTimeMustBeFuture: 'Час початку має бути в майбутньому', - invalidTimeFormat: 'Неправильний формат часу (очікується ГГ:ХХ AM/PM)', - invalidWeekday: 'Недійсний день тижня: {{weekday}}', - invalidMonthlyDay: 'Місячний день повинен бути між 1-31 або «останній»', - invalidOnMinute: 'Хвилина повинна бути в межах 0-59', - invalidExecutionTime: 'Недійсний час виконання', - executionTimeMustBeFuture: 'Час виконання має бути в майбутньому', - }, - triggerWebhook: { - title: 'Тригер вебхука', - nodeTitle: '🔗 Тригер вебхука', - configPlaceholder: 'Налаштування тригера вебхука буде реалізовано тут', - webhookUrl: 'URL вебхука', - webhookUrlPlaceholder: 'Натисніть «Створити», щоб згенерувати URL вебхука', - generate: 'Створити', - copy: 'Копіювати', - test: 'Тест', - urlGenerated: 'URL вебхука успішно згенеровано', - urlGenerationFailed: 'Не вдалося створити URL вебхука', - urlCopied: 'URL скопійовано в буфер обміну', - method: 'Метод', - contentType: 'Тип вмісту', - queryParameters: 'Параметри запиту', - headerParameters: 'Параметри заголовка', - requestBodyParameters: 'Параметри тіла запиту', - parameterName: 'Ім\'я змінної', - varName: 'Ім\'я змінної', - varType: 'Тип', - varNamePlaceholder: 'Введіть назву змінної...', - required: 'Обов\'язково', - addParameter: 'Додати', - addHeader: 'Додати', - noParameters: 'Параметри не налаштовані', - noQueryParameters: 'Параметри запиту не налаштовані', - noHeaders: 'Заголовки не налаштовані', - noBodyParameters: 'Параметри тіла не налаштовані', - debugUrlTitle: 'Для тестових запусків завжди використовуйте цей URL', - debugUrlCopy: 'Натисніть, щоб скопіювати', - debugUrlCopied: 'Скопійовано!', - debugUrlPrivateAddressWarning: 'Цей URL, схоже, є внутрішньою адресою, що може спричинити помилки у запитах вебхука. Ви можете змінити TRIGGER_URL на публічну адресу.', - errorHandling: 'Обробка помилок', - errorStrategy: 'Обробка помилок', - responseConfiguration: 'Відповідь', - asyncMode: 'Асинхронний режим', - statusCode: 'Код стану', - responseBody: 'Тіло відповіді', - responseBodyPlaceholder: 'Напишіть тут текст вашої відповіді', - headers: 'Заголовки', - validation: { - webhookUrlRequired: 'Потрібен URL вебхука', - invalidParameterType: 'Недійсний тип параметра "{{type}}" для параметра "{{name}}"', - }, - }, - }, - tracing: { - stopBy: 'Зупинено користувачем {{user}}', - }, - variableReference: { - conversationVars: 'Змінні розмови', - noVarsForOperation: 'Немає доступних змінних для призначення з обраною операцією.', - assignedVarsDescription: 'Призначені змінні мають бути доступними для запису, такими як', - noAssignedVars: 'Немає доступних призначених змінних', - noAvailableVars: 'Немає доступних змінних', - }, - versionHistory: { - filter: { - onlyShowNamedVersions: 'Показуйте лише названі версії', - reset: 'Скинути фільтр', - all: 'Усе', - onlyYours: 'Тільки твоє', - empty: 'Не знайдено відповідну історію версій', - }, - editField: { - titleLengthLimit: 'Заголовок не може перевищувати {{limit}} символів', - releaseNotes: 'Примітки до випуску', - title: 'Назва', - releaseNotesLengthLimit: 'Примітки до випуску не можуть перевищувати {{limit}} символів', - }, - action: { - restoreFailure: 'Не вдалося відновити версію', - updateSuccess: 'Версія оновлена', - deleteFailure: 'Не вдалося видалити версію', - deleteSuccess: 'Версія видалена', - restoreSuccess: 'Версія відновлена', - updateFailure: 'Не вдалося оновити версію', - copyIdSuccess: 'ID скопійовано в буфер обміну', - }, - defaultName: 'Без назви версія', - restorationTip: 'Після відновлення версії нинішній проект буде перезаписано.', - title: 'Версії', - currentDraft: 'Поточний проект', - deletionTip: 'Видалення є незворотнім, будь ласка, підтвердіть.', - releaseNotesPlaceholder: 'Опишіть, що змінилося', - editVersionInfo: 'Редагувати інформацію про версію', - nameThisVersion: 'Назвіть цю версію', - latest: 'Останні новини', - copyId: 'Копіювати ідентифікатор', - }, - debug: { - noData: { - runThisNode: 'Запустіть цей вузол', - description: 'Результати останнього запуску будуть відображені тут', - }, - variableInspect: { - trigger: { - stop: 'Зупинись бігти', - normal: 'Перевірка змінних', - clear: 'Чіткий', - cached: 'Переглянути кешовані змінні', - running: 'Кешування статусу виконання', - }, - systemNode: 'Система', - view: 'Переглянути журнал', - title: 'Перевірка змінних', - edited: 'Редагований', - emptyLink: 'Дізнайтеся більше', - clearNode: 'Очистити кешовану змінну', - envNode: 'Навколишнє середовище', - reset: 'Скинути до значення останнього запуску', - clearAll: 'Скиньте все', - chatNode: 'Розмова', - resetConversationVar: 'Скинути змінну розмови на значення за замовчуванням', - emptyTip: 'Після переходу через вузол на полотні або виконання вузла поетапно, ви можете переглянути поточне значення змінної вузла у Перевірці змінних.', - export: 'експорт', - exportToolTip: 'Експортувати змінну як файл', - largeDataNoExport: 'Великі дані - лише частковий попередній перегляд', - largeData: 'Великий обсяг даних, попередній перегляд лише для читання. Експортуйте, щоб переглянути всі.', - listening: { - title: 'Очікування подій від тригерів...', - tip: 'Тепер ви можете імітувати спрацювання подій, надсилаючи тестові запити на HTTP {{nodeName}}-кінечну точку або використати її як URL зворотного виклику для налагодження живих подій. Всі результати можна переглянути безпосередньо у Переглядачі змінних.', - tipPlugin: 'Тепер ви можете створювати події в {{- pluginName}} та отримувати результати цих подій у Інспекторі змінних.', - tipSchedule: 'Прослуховування подій від тригерів розкладу. Наступний запланований запуск: {{nextTriggerTime}}', - tipFallback: 'Очікуйте вхідних подій тригера. Вихідні дані з’являться тут.', - defaultNodeName: 'цей тригер', - defaultPluginName: 'цей плагін спрацьовує', - defaultScheduleTime: 'Не налаштовано', - selectedTriggers: 'вибрані тригери', - stopButton: 'Зупинись', - }, - }, - lastRunTab: 'Останній запуск', - settingsTab: 'Налаштування', - relations: { - noDependents: 'Без утриманців', - dependents: 'Утриманців', - dependencies: 'Залежностей', - noDependencies: 'Відсутність залежностей', - dependenciesDescription: 'Вузли, на які спирається цей вузол', - dependentsDescription: 'Вузли, які спираються на цей вузол', - }, - relationsTab: 'Відносин', - copyLastRun: 'Копіювати останній запуск', - noLastRunFound: 'Жодного попереднього запуску не знайдено.', - copyLastRunError: 'Не вдалося скопіювати вхідні дані останнього виконання', - noMatchingInputsFound: 'Не знайдено відповідних вхідних даних з останнього запуску', - lastOutput: 'Останній вихід', - lastRunInputsCopied: 'Скопійовано {{count}} введення(в) з останнього запуску', - }, - sidebar: { - exportWarning: 'Експортувати поточну збережену версію', - exportWarningDesc: 'Це експортує поточну збережену версію вашого робочого процесу. Якщо у вас є незбережені зміни в редакторі, будь ласка, спочатку збережіть їх, використовуючи опцію експорту на полотні робочого процесу.', - }, - publishLimit: { - startNodeTitlePrefix: 'Оновити до', - startNodeTitleSuffix: 'розблокувати необмежену кількість тригерів на робочий процес', - startNodeDesc: 'Ви досягли ліміту в 2 тригери на робочий процес для цього плану. Оновіть план, щоб опублікувати цей робочий процес.', - }, - error: { - startNodeRequired: 'Будь ласка, спершу додайте стартовий вузол перед {{operation}}', - operations: { - connectingNodes: 'підключення вузлів', - addingNodes: 'додавання вузлів', - modifyingWorkflow: 'модифікація робочого процесу', - updatingWorkflow: 'оновлення робочого процесу', - }, - }, - customWebhook: 'Користувацький вебхук', - difyTeam: 'Команда Dify', - triggerStatus: { - enabled: 'СПУСКОВИЙ МЕХАНІЗМ', - disabled: 'ТРІГЕР • ВІДСУТНІЙ', - }, - entryNodeStatus: { - enabled: 'ПОЧАТОК', - disabled: 'СТАРТ • ВІДКЛЮЧЕНО', - }, - onboarding: { - title: 'Виберіть початковий вузол, щоб почати', - description: 'Різні початкові вузли мають різні можливості. Не хвилюйся, ти завжди можеш змінити їх пізніше.', - userInputFull: 'Ввід користувача (оригінальний початковий вузол)', - userInputDescription: 'Початковий вузол, який дозволяє встановлювати змінні користувача, з можливостями веб-додатку, API сервісу, сервера MCP та робочого процесу як інструментів.', - trigger: 'Спусковий механізм', - triggerDescription: 'Тригери можуть слугувати стартовим вузлом робочого процесу, наприклад, запланованими завданнями, користувацькими вебхуками або інтеграціями з іншими додатками.', - back: 'Назад', - learnMore: 'Дізнатися більше', - aboutStartNode: 'про початковий вузол.', - escTip: { - press: 'Преса', - key: 'esc', - toDismiss: 'звільнити', - }, - }, -} - -export default translation diff --git a/web/i18n/vi-VN/app-annotation.json b/web/i18n/vi-VN/app-annotation.json new file mode 100644 index 0000000000..810c45c419 --- /dev/null +++ b/web/i18n/vi-VN/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "Chú thích", + "name": "Chú thích cho câu trả lời", + "editBy": "Câu trả lời được chỉnh sửa bởi {{author}}", + "noData": { + "title": "Không có chú thích", + "description": "Bạn có thể chỉnh sửa chú thích trong phần gỡ lỗi ứng dụng hoặc nhập hàng loạt chú thích vào đây để có phản hồi chất lượng cao." + }, + "table": { + "header": { + "question": "câu hỏi", + "answer": "câu trả lời", + "createdAt": "tạo lúc", + "hits": "lượt truy cập", + "actions": "hành động", + "addAnnotation": "Thêm chú thích", + "bulkImport": "Nhập hàng loạt", + "bulkExport": "Xuất hàng loạt", + "clearAll": "Xóa tất cả chú thích", + "clearAllConfirm": "Xóa tất cả các chú thích?" + } + }, + "editModal": { + "title": "Chỉnh sửa chú thích câu trả lời", + "queryName": "Câu hỏi của người dùng", + "answerName": "Câu trả lời của AI", + "yourAnswer": "Câu trả lời của bạn", + "answerPlaceholder": "Nhập câu trả lời của bạn vào đây", + "yourQuery": "Câu hỏi của bạn", + "queryPlaceholder": "Nhập câu hỏi của bạn ở đây", + "removeThisCache": "Xóa chú thích này", + "createdAt": "Được tạo lúc" + }, + "addModal": { + "title": "Thêm chú thích câu trả lời", + "queryName": "Câu hỏi", + "answerName": "Câu trả lời", + "answerPlaceholder": "Nhập câu trả lời vào đây", + "queryPlaceholder": "Nhập câu hỏi ở đây", + "createNext": "Thêm chú thích khác" + }, + "batchModal": { + "title": "Nhập hàng loạt", + "csvUploadTitle": "Kéo và thả tệp CSV của bạn vào đây hoặc ", + "browse": "chọn tệp", + "tip": "Tệp CSV phải tuân theo cấu trúc sau:", + "question": "câu hỏi", + "answer": "câu trả lời", + "contentTitle": "tiêu đề nội dung", + "content": "nội dung", + "template": "Tải mẫu tại đây", + "cancel": "Hủy", + "run": "Chạy hàng loạt", + "runError": "Chạy hàng loạt thất bại", + "processing": "Đang xử lý hàng loạt", + "completed": "Nhập hoàn tất", + "error": "Lỗi khi nhập", + "ok": "OK" + }, + "errorMessage": { + "answerRequired": "Câu trả lời là bắt buộc", + "queryRequired": "Câu hỏi là bắt buộc" + }, + "viewModal": { + "annotatedResponse": "Câu trả lời đã chú thích", + "hitHistory": "Lịch sử truy cập", + "hit": "Lượt truy cập", + "hits": "Lượt truy cập", + "noHitHistory": "Không có lịch sử truy cập" + }, + "hitHistoryTable": { + "query": "Câu hỏi", + "match": "Độ chính xác", + "response": "Phản hồi", + "source": "Nguồn", + "score": "Điểm", + "time": "Thời gian" + }, + "initSetup": { + "title": "Thiết lập ban đầu cho chú thích câu trả lời", + "configTitle": "Thiết lập chú thích câu trả lời", + "confirmBtn": "Lưu & Kích hoạt", + "configConfirmBtn": "Lưu" + }, + "embeddingModelSwitchTip": "Mô hình vector hóa văn bản chú thích, việc chuyển đổi mô hình sẽ dẫn đến việc nhúng lại, có thể phát sinh thêm chi phí.", + "list": { + "delete": { + "title": "Bạn có chắc chắn muốn xóa không?" + } + }, + "batchAction": { + "delete": "Xóa", + "cancel": "Hủy", + "selected": "Được chọn" + } +} diff --git a/web/i18n/vi-VN/app-annotation.ts b/web/i18n/vi-VN/app-annotation.ts deleted file mode 100644 index 29499dcc21..0000000000 --- a/web/i18n/vi-VN/app-annotation.ts +++ /dev/null @@ -1,98 +0,0 @@ -const translation = { - title: 'Chú thích', - name: 'Chú thích cho câu trả lời', - editBy: 'Câu trả lời được chỉnh sửa bởi {{author}}', - noData: { - title: 'Không có chú thích', - description: 'Bạn có thể chỉnh sửa chú thích trong phần gỡ lỗi ứng dụng hoặc nhập hàng loạt chú thích vào đây để có phản hồi chất lượng cao.', - }, - table: { - header: { - question: 'câu hỏi', - answer: 'câu trả lời', - createdAt: 'tạo lúc', - hits: 'lượt truy cập', - actions: 'hành động', - addAnnotation: 'Thêm chú thích', - bulkImport: 'Nhập hàng loạt', - bulkExport: 'Xuất hàng loạt', - clearAll: 'Xóa tất cả chú thích', - clearAllConfirm: 'Xóa tất cả các chú thích?', - }, - }, - editModal: { - title: 'Chỉnh sửa chú thích câu trả lời', - queryName: 'Câu hỏi của người dùng', - answerName: 'Câu trả lời của AI', - yourAnswer: 'Câu trả lời của bạn', - answerPlaceholder: 'Nhập câu trả lời của bạn vào đây', - yourQuery: 'Câu hỏi của bạn', - queryPlaceholder: 'Nhập câu hỏi của bạn ở đây', - removeThisCache: 'Xóa chú thích này', - createdAt: 'Được tạo lúc', - }, - addModal: { - title: 'Thêm chú thích câu trả lời', - queryName: 'Câu hỏi', - answerName: 'Câu trả lời', - answerPlaceholder: 'Nhập câu trả lời vào đây', - queryPlaceholder: 'Nhập câu hỏi ở đây', - createNext: 'Thêm chú thích khác', - }, - batchModal: { - title: 'Nhập hàng loạt', - csvUploadTitle: 'Kéo và thả tệp CSV của bạn vào đây hoặc ', - browse: 'chọn tệp', - tip: 'Tệp CSV phải tuân theo cấu trúc sau:', - question: 'câu hỏi', - answer: 'câu trả lời', - contentTitle: 'tiêu đề nội dung', - content: 'nội dung', - template: 'Tải mẫu tại đây', - cancel: 'Hủy', - run: 'Chạy hàng loạt', - runError: 'Chạy hàng loạt thất bại', - processing: 'Đang xử lý hàng loạt', - completed: 'Nhập hoàn tất', - error: 'Lỗi khi nhập', - ok: 'OK', - }, - errorMessage: { - answerRequired: 'Câu trả lời là bắt buộc', - queryRequired: 'Câu hỏi là bắt buộc', - }, - viewModal: { - annotatedResponse: 'Câu trả lời đã chú thích', - hitHistory: 'Lịch sử truy cập', - hit: 'Lượt truy cập', - hits: 'Lượt truy cập', - noHitHistory: 'Không có lịch sử truy cập', - }, - hitHistoryTable: { - query: 'Câu hỏi', - match: 'Độ chính xác', - response: 'Phản hồi', - source: 'Nguồn', - score: 'Điểm', - time: 'Thời gian', - }, - initSetup: { - title: 'Thiết lập ban đầu cho chú thích câu trả lời', - configTitle: 'Thiết lập chú thích câu trả lời', - confirmBtn: 'Lưu & Kích hoạt', - configConfirmBtn: 'Lưu', - }, - embeddingModelSwitchTip: 'Mô hình vector hóa văn bản chú thích, việc chuyển đổi mô hình sẽ dẫn đến việc nhúng lại, có thể phát sinh thêm chi phí.', - list: { - delete: { - title: 'Bạn có chắc chắn muốn xóa không?', - }, - }, - batchAction: { - delete: 'Xóa', - cancel: 'Hủy', - selected: 'Được chọn', - }, -} - -export default translation diff --git a/web/i18n/vi-VN/app-api.json b/web/i18n/vi-VN/app-api.json new file mode 100644 index 0000000000..8cf640201f --- /dev/null +++ b/web/i18n/vi-VN/app-api.json @@ -0,0 +1,83 @@ +{ + "apiServer": "Máy chủ API", + "apiKey": "Khóa API", + "status": "Trạng thái", + "disabled": "Đã tắt", + "ok": "Đang hoạt động", + "copy": "Sao chép", + "copied": "Đã sao chép", + "play": "Chạy", + "pause": "Tạm dừng", + "playing": "Đang chạy", + "merMaid": { + "rerender": "Vẽ lại" + }, + "never": "Không bao giờ", + "apiKeyModal": { + "apiSecretKey": "Khóa bí mật API", + "apiSecretKeyTips": "Để ngăn chặn việc lạm dụng API, hãy bảo vệ Khóa API của bạn. Tránh sử dụng nó dưới dạng văn bản thuần trong mã giao diện người dùng.", + "createNewSecretKey": "Tạo khóa bí mật mới", + "secretKey": "Khóa bí mật", + "created": "ĐÃ TẠO", + "lastUsed": "SỬ DỤNG LẦN CUỐI", + "generateTips": "Hãy lưu giữ khóa này ở nơi an toàn và dễ tiếp cận." + }, + "actionMsg": { + "deleteConfirmTitle": "Xóa khóa bí mật này?", + "deleteConfirmTips": "Hành động này không thể hoàn tác.", + "ok": "OK" + }, + "completionMode": { + "title": "API ứng dụng hoàn thành", + "info": "Đối với việc tạo văn bản chất lượng cao như bài viết, tóm tắt và dịch thuật, hãy sử dụng API hoàn thành tin nhắn với đầu vào từ người dùng. Việc tạo văn bản dựa trên các thông số mô hình và mẫu đề xuất được thiết lập trong Dify Prompt Engineering.", + "createCompletionApi": "Tạo tin nhắn hoàn thành", + "createCompletionApiTip": "Tạo một tin nhắn hoàn thành để hỗ trợ chế độ câu hỏi và trả lời.", + "inputsTips": "(Tùy chọn) Cung cấp các trường đầu vào người dùng dưới dạng cặp khóa-giá trị, tương ứng với các biến trong Prompt Eng. Khóa là tên biến, Giá trị là giá trị tham số. Nếu loại trường là Lựa chọn, Giá trị đã gửi phải là một trong các lựa chọn đã thiết lập trước.", + "queryTips": "Nội dung văn bản đầu vào của người dùng.", + "blocking": "Loại chặn, đợi để thực hiện hoàn tất và trả kết quả. (Yêu cầu có thể bị gián đoạn nếu quá trình kéo dài)", + "streaming": "trả về dữ liệu theo luồng. Thực hiện trả dữ liệu theo luồng dựa trên SSE (Sự kiện được gửi từ máy chủ).", + "messageFeedbackApi": "Phản hồi tin nhắn (thích)", + "messageFeedbackApiTip": "Đánh giá các tin nhắn nhận được thay mặt cho người dùng cuối với các lựa chọn thích hoặc không thích. Dữ liệu này hiển thị trên trang Nhật ký & Chú thích và được sử dụng cho việc điều chỉnh mô hình trong tương lai.", + "messageIDTip": "ID tin nhắn", + "ratingTip": "thích hoặc không thích, null là hủy bỏ", + "parametersApi": "Thu thập thông tin tham số ứng dụng", + "parametersApiTip": "Truy xuất các tham số Đầu vào được cấu hình, bao gồm tên biến, tên trường, loại và giá trị mặc định. Thường được sử dụng để hiển thị các trường này trong một biểu mẫu hoặc điền vào các giá trị mặc định sau khi máy khách tải." + }, + "chatMode": { + "title": "API ứng dụng trò chuyện", + "info": "Đối với ứng dụng trò chuyện linh hoạt sử dụng định dạng Câu hỏi và Trả lời, gọi API tin nhắn trò chuyện để bắt đầu cuộc trò chuyện. Duy trì cuộc trò chuyện liên tục bằng cách chuyển conversation_id đã trả về. Các tham số phản hồi và mẫu phụ thuộc vào các cài đặt của Dify Prompt Eng.", + "createChatApi": "Tạo tin nhắn trò chuyện", + "createChatApiTip": "Tạo một tin nhắn trò chuyện mới hoặc tiếp tục một cuộc trò chuyện đang tồn tại.", + "inputsTips": "(Tùy chọn) Cung cấp các trường đầu vào người dùng dưới dạng cặp khóa-giá trị, tương ứng với các biến trong Prompt Eng. Khóa là tên biến, Giá trị là giá trị tham số. Nếu loại trường là Lựa chọn, Giá trị đã gửi phải là một trong các lựa chọn đã thiết lập trước.", + "queryTips": "Nội dung câu hỏi của người dùng", + "blocking": "Loại chặn, đợi để thực hiện hoàn tất và trả kết quả. (Yêu cầu có thể bị gián đoạn nếu quá trình kéo dài)", + "streaming": "trả về dữ liệu theo luồng. Thực hiện trả dữ liệu theo luồng dựa trên SSE (Sự kiện được gửi từ máy chủ).", + "conversationIdTip": "(Tùy chọn) ID cuộc trò chuyện: để trống cho cuộc trò chuyện lần đầu; chuyển conversation_id từ ngữ cảnh để tiếp tục cuộc trò chuyện.", + "messageFeedbackApi": "Phản hồi của người dùng cuối về tin nhắn", + "messageFeedbackApiTip": "Đánh giá các tin nhắn nhận được thay mặt cho người dùng cuối với các lựa chọn thích hoặc không thích. Dữ liệu này hiển thị trên trang Nhật ký & Chú thích và được sử dụng cho việc điều chỉnh mô hình trong tương lai.", + "messageIDTip": "ID tin nhắn", + "ratingTip": "thích hoặc không thích, null là hủy bỏ", + "chatMsgHistoryApi": "Lấy lịch sử tin nhắn trò chuyện", + "chatMsgHistoryApiTip": "Trang đầu tiên trả về `limit` tin nhắn mới nhất, được sắp xếp theo thứ tự ngược lại.", + "chatMsgHistoryConversationIdTip": "ID Cuộc trò chuyện", + "chatMsgHistoryFirstId": "ID của bản ghi trò chuyện đầu tiên trên trang hiện tại. Giá trị mặc định là không có.", + "chatMsgHistoryLimit": "Số lượng cuộc trò chuyện được trả về trong một yêu cầu", + "conversationsListApi": "Lấy danh sách cuộc trò chuyện", + "conversationsListApiTip": "Lấy danh sách phiên của người dùng hiện tại. Theo mặc định, trả về 20 phiên cuối cùng.", + "conversationsListFirstIdTip": "ID của bản ghi cuối cùng trên trang hiện tại, mặc định không có.", + "conversationsListLimitTip": "Số lượng cuộc trò chuyện được trả về trong một yêu cầu", + "conversationRenamingApi": "Đổi tên cuộc trò chuyện", + "conversationRenamingApiTip": "Đổi tên cuộc trò chuyện; tên sẽ được hiển thị trong giao diện nhiều phiên.", + "conversationRenamingNameTip": "Tên mới", + "parametersApi": "Thu thập thông tin tham số ứng dụng", + "parametersApiTip": "Truy xuất các tham số Đầu vào được cấu hình, bao gồm tên biến, tên trường, loại và giá trị mặc định. Thường được sử dụng để hiển thị các trường này trong một biểu mẫu hoặc điền vào các giá trị mặc định sau khi máy khách tải." + }, + "develop": { + "requestBody": "Nội dung yêu cầu", + "pathParams": "Tham số đường dẫn", + "query": "Truy vấn", + "toc": "Nội dung" + }, + "loading": "Tải", + "regenerate": "Tái tạo" +} diff --git a/web/i18n/vi-VN/app-api.ts b/web/i18n/vi-VN/app-api.ts deleted file mode 100644 index 0a8de78c66..0000000000 --- a/web/i18n/vi-VN/app-api.ts +++ /dev/null @@ -1,85 +0,0 @@ -const translation = { - apiServer: 'Máy chủ API', - apiKey: 'Khóa API', - status: 'Trạng thái', - disabled: 'Đã tắt', - ok: 'Đang hoạt động', - copy: 'Sao chép', - copied: 'Đã sao chép', - play: 'Chạy', - pause: 'Tạm dừng', - playing: 'Đang chạy', - merMaid: { - rerender: 'Vẽ lại', - }, - never: 'Không bao giờ', - apiKeyModal: { - apiSecretKey: 'Khóa bí mật API', - apiSecretKeyTips: 'Để ngăn chặn việc lạm dụng API, hãy bảo vệ Khóa API của bạn. Tránh sử dụng nó dưới dạng văn bản thuần trong mã giao diện người dùng.', - createNewSecretKey: 'Tạo khóa bí mật mới', - secretKey: 'Khóa bí mật', - created: 'ĐÃ TẠO', - lastUsed: 'SỬ DỤNG LẦN CUỐI', - generateTips: 'Hãy lưu giữ khóa này ở nơi an toàn và dễ tiếp cận.', - }, - actionMsg: { - deleteConfirmTitle: 'Xóa khóa bí mật này?', - deleteConfirmTips: 'Hành động này không thể hoàn tác.', - ok: 'OK', - }, - completionMode: { - title: 'API ứng dụng hoàn thành', - info: 'Đối với việc tạo văn bản chất lượng cao như bài viết, tóm tắt và dịch thuật, hãy sử dụng API hoàn thành tin nhắn với đầu vào từ người dùng. Việc tạo văn bản dựa trên các thông số mô hình và mẫu đề xuất được thiết lập trong Dify Prompt Engineering.', - createCompletionApi: 'Tạo tin nhắn hoàn thành', - createCompletionApiTip: 'Tạo một tin nhắn hoàn thành để hỗ trợ chế độ câu hỏi và trả lời.', - inputsTips: '(Tùy chọn) Cung cấp các trường đầu vào người dùng dưới dạng cặp khóa-giá trị, tương ứng với các biến trong Prompt Eng. Khóa là tên biến, Giá trị là giá trị tham số. Nếu loại trường là Lựa chọn, Giá trị đã gửi phải là một trong các lựa chọn đã thiết lập trước.', - queryTips: 'Nội dung văn bản đầu vào của người dùng.', - blocking: 'Loại chặn, đợi để thực hiện hoàn tất và trả kết quả. (Yêu cầu có thể bị gián đoạn nếu quá trình kéo dài)', - streaming: 'trả về dữ liệu theo luồng. Thực hiện trả dữ liệu theo luồng dựa trên SSE (Sự kiện được gửi từ máy chủ).', - messageFeedbackApi: 'Phản hồi tin nhắn (thích)', - messageFeedbackApiTip: 'Đánh giá các tin nhắn nhận được thay mặt cho người dùng cuối với các lựa chọn thích hoặc không thích. Dữ liệu này hiển thị trên trang Nhật ký & Chú thích và được sử dụng cho việc điều chỉnh mô hình trong tương lai.', - messageIDTip: 'ID tin nhắn', - ratingTip: 'thích hoặc không thích, null là hủy bỏ', - parametersApi: 'Thu thập thông tin tham số ứng dụng', - parametersApiTip: 'Truy xuất các tham số Đầu vào được cấu hình, bao gồm tên biến, tên trường, loại và giá trị mặc định. Thường được sử dụng để hiển thị các trường này trong một biểu mẫu hoặc điền vào các giá trị mặc định sau khi máy khách tải.', - }, - chatMode: { - title: 'API ứng dụng trò chuyện', - info: 'Đối với ứng dụng trò chuyện linh hoạt sử dụng định dạng Câu hỏi và Trả lời, gọi API tin nhắn trò chuyện để bắt đầu cuộc trò chuyện. Duy trì cuộc trò chuyện liên tục bằng cách chuyển conversation_id đã trả về. Các tham số phản hồi và mẫu phụ thuộc vào các cài đặt của Dify Prompt Eng.', - createChatApi: 'Tạo tin nhắn trò chuyện', - createChatApiTip: 'Tạo một tin nhắn trò chuyện mới hoặc tiếp tục một cuộc trò chuyện đang tồn tại.', - inputsTips: '(Tùy chọn) Cung cấp các trường đầu vào người dùng dưới dạng cặp khóa-giá trị, tương ứng với các biến trong Prompt Eng. Khóa là tên biến, Giá trị là giá trị tham số. Nếu loại trường là Lựa chọn, Giá trị đã gửi phải là một trong các lựa chọn đã thiết lập trước.', - queryTips: 'Nội dung câu hỏi của người dùng', - blocking: 'Loại chặn, đợi để thực hiện hoàn tất và trả kết quả. (Yêu cầu có thể bị gián đoạn nếu quá trình kéo dài)', - streaming: 'trả về dữ liệu theo luồng. Thực hiện trả dữ liệu theo luồng dựa trên SSE (Sự kiện được gửi từ máy chủ).', - conversationIdTip: '(Tùy chọn) ID cuộc trò chuyện: để trống cho cuộc trò chuyện lần đầu; chuyển conversation_id từ ngữ cảnh để tiếp tục cuộc trò chuyện.', - messageFeedbackApi: 'Phản hồi của người dùng cuối về tin nhắn', - messageFeedbackApiTip: 'Đánh giá các tin nhắn nhận được thay mặt cho người dùng cuối với các lựa chọn thích hoặc không thích. Dữ liệu này hiển thị trên trang Nhật ký & Chú thích và được sử dụng cho việc điều chỉnh mô hình trong tương lai.', - messageIDTip: 'ID tin nhắn', - ratingTip: 'thích hoặc không thích, null là hủy bỏ', - chatMsgHistoryApi: 'Lấy lịch sử tin nhắn trò chuyện', - chatMsgHistoryApiTip: 'Trang đầu tiên trả về `limit` tin nhắn mới nhất, được sắp xếp theo thứ tự ngược lại.', - chatMsgHistoryConversationIdTip: 'ID Cuộc trò chuyện', - chatMsgHistoryFirstId: 'ID của bản ghi trò chuyện đầu tiên trên trang hiện tại. Giá trị mặc định là không có.', - chatMsgHistoryLimit: 'Số lượng cuộc trò chuyện được trả về trong một yêu cầu', - conversationsListApi: 'Lấy danh sách cuộc trò chuyện', - conversationsListApiTip: 'Lấy danh sách phiên của người dùng hiện tại. Theo mặc định, trả về 20 phiên cuối cùng.', - conversationsListFirstIdTip: 'ID của bản ghi cuối cùng trên trang hiện tại, mặc định không có.', - conversationsListLimitTip: 'Số lượng cuộc trò chuyện được trả về trong một yêu cầu', - conversationRenamingApi: 'Đổi tên cuộc trò chuyện', - conversationRenamingApiTip: 'Đổi tên cuộc trò chuyện; tên sẽ được hiển thị trong giao diện nhiều phiên.', - conversationRenamingNameTip: 'Tên mới', - parametersApi: 'Thu thập thông tin tham số ứng dụng', - parametersApiTip: 'Truy xuất các tham số Đầu vào được cấu hình, bao gồm tên biến, tên trường, loại và giá trị mặc định. Thường được sử dụng để hiển thị các trường này trong một biểu mẫu hoặc điền vào các giá trị mặc định sau khi máy khách tải.', - }, - develop: { - requestBody: 'Nội dung yêu cầu', - pathParams: 'Tham số đường dẫn', - query: 'Truy vấn', - toc: 'Nội dung', - }, - loading: 'Tải', - regenerate: 'Tái tạo', -} - -export default translation diff --git a/web/i18n/vi-VN/app-debug.json b/web/i18n/vi-VN/app-debug.json new file mode 100644 index 0000000000..ff82f49c99 --- /dev/null +++ b/web/i18n/vi-VN/app-debug.json @@ -0,0 +1,563 @@ +{ + "pageTitle": { + "line1": "YÊU CẦU", + "line2": "KỸ THUẬT" + }, + "orchestrate": "Điều phối", + "promptMode": { + "simple": "Chuyển sang Chế độ Chuyên gia để chỉnh sửa toàn bộ YÊU CẦU", + "advanced": "Chế độ Chuyên gia", + "switchBack": "Quay lại", + "advancedWarning": { + "title": "Bạn đã chuyển sang Chế độ Chuyên gia. Sau khi sửa đổi YÊU CẦU, bạn KHÔNG THỂ quay lại chế độ cơ bản.", + "description": "Trong Chế độ Chuyên gia, bạn có thể chỉnh sửa toàn bộ YÊU CẦU.", + "learnMore": "Tìm hiểu thêm", + "ok": "Đồng ý" + }, + "operation": { + "addMessage": "Thêm tin nhắn" + }, + "contextMissing": "Thiếu thành phần Ngữ cảnh, hiệu quả của yêu cầu có thể không tốt." + }, + "operation": { + "applyConfig": "Áp dụng", + "resetConfig": "Đặt lại", + "debugConfig": "Gỡ lỗi", + "addFeature": "Thêm tính năng", + "automatic": "Tự động", + "stopResponding": "Dừng phản hồi", + "agree": "thích", + "disagree": "không thích", + "cancelAgree": "Bỏ thích", + "cancelDisagree": "Bỏ không thích", + "userAction": "Hành động người dùng " + }, + "notSetAPIKey": { + "title": "Chưa thiết lập khóa API của nhà cung cấp LLM", + "trailFinished": "Kết thúc dùng thử", + "description": "Chưa thiết lập khóa API của nhà cung cấp LLM. Cần thiết lập trước khi gỡ lỗi.", + "settingBtn": "Đi đến cài đặt" + }, + "trailUseGPT4Info": { + "title": "Hiện không hỗ trợ GPT-4", + "description": "Để sử dụng GPT-4, vui lòng thiết lập API Key." + }, + "feature": { + "groupChat": { + "title": "Nâng cao trò chuyện", + "description": "Thêm cài đặt trước cho cuộc trò chuyện có thể cải thiện trải nghiệm người dùng." + }, + "groupExperience": { + "title": "Nâng cao trải nghiệm" + }, + "conversationOpener": { + "title": "Mở đầu cuộc trò chuyện", + "description": "Trong ứng dụng trò chuyện, câu nói đầu tiên mà AI tự động nói với người dùng thường được sử dụng như một lời chào." + }, + "suggestedQuestionsAfterAnswer": { + "title": "Câu hỏi gợi ý", + "description": "Thiết lập đề xuất câu hỏi tiếp theo có thể tạo ra cuộc trò chuyện tốt hơn cho người dùng.", + "resDes": "3 đề xuất cho câu hỏi tiếp theo của người dùng.", + "tryToAsk": "Thử hỏi" + }, + "moreLikeThis": { + "title": "Thêm tương tự", + "description": "Tạo nhiều văn bản cùng một lúc, sau đó chỉnh sửa và tiếp tục tạo ra.", + "generateNumTip": "Số lượng mỗi lần tạo", + "tip": "Sử dụng tính năng này sẽ tiêu tốn thêm token." + }, + "speechToText": { + "title": "Chuyển đổi giọng nói thành văn bản", + "description": "Khi được bật, bạn có thể sử dụng đầu vào bằng giọng nói.", + "resDes": "Đã bật đầu vào bằng giọng nói" + }, + "textToSpeech": { + "title": "Chuyển đổi văn bản thành giọng nói", + "description": "Khi được bật, văn bản có thể được chuyển đổi thành giọng nói.", + "resDes": "Đã bật chuyển đổi văn bản thành âm thanh" + }, + "citation": { + "title": "Trích dẫn và chú thích", + "description": "Khi được bật, hiển thị nguồn tài liệu và phần được trích dẫn của nội dung được tạo ra.", + "resDes": "Đã bật trích dẫn và chú thích" + }, + "annotation": { + "title": "Phản hồi có chú thích", + "description": "Bạn có thể thêm phản hồi chất lượng cao vào bộ nhớ cache để ưu tiên phù hợp với các câu hỏi tương tự của người dùng.", + "resDes": "Đã bật phản hồi có chú thích", + "scoreThreshold": { + "title": "Ngưỡng điểm", + "description": "Được sử dụng để đặt ngưỡng tương đồng cho phản hồi có chú thích.", + "easyMatch": "Khớp dễ dàng", + "accurateMatch": "Khớp chính xác" + }, + "matchVariable": { + "title": "Biến khớp", + "choosePlaceholder": "Chọn biến khớp" + }, + "cacheManagement": "Quản lý chú thích", + "cached": "Đã lưu cache", + "remove": "Xóa", + "removeConfirm": "Xóa chú thích này?", + "add": "Thêm chú thích", + "edit": "Chỉnh sửa chú thích" + }, + "dataSet": { + "title": "Ngữ cảnh", + "noData": "Bạn có thể nhập dữ liệu làm ngữ cảnh", + "selectTitle": "Chọn kiến thức tham khảo", + "selected": "Kiến thức đã chọn", + "noDataSet": "Không tìm thấy kiến thức", + "toCreate": "Tạo mới", + "notSupportSelectMulti": "Hiện chỉ hỗ trợ một kiến thức", + "queryVariable": { + "title": "Biến truy vấn", + "tip": "Biến này sẽ được sử dụng làm đầu vào truy vấn để truy xuất ngữ cảnh, lấy thông tin ngữ cảnh liên quan đến đầu vào của biến này.", + "choosePlaceholder": "Chọn biến truy vấn", + "noVar": "Không có biến", + "noVarTip": "Vui lòng tạo một biến trong phần Biến", + "unableToQueryDataSet": "Không thể truy vấn kiến thức", + "unableToQueryDataSetTip": "Không thể truy vấn kiến thức thành công, vui lòng chọn một biến truy vấn ngữ cảnh trong phần ngữ cảnh.", + "ok": "Đồng ý", + "contextVarNotEmpty": "Biến truy vấn ngữ cảnh không thể trống", + "deleteContextVarTitle": "Xóa biến \"{{varName}}\"?", + "deleteContextVarTip": "Biến này đã được thiết lập là biến truy vấn ngữ cảnh, và việc xóa nó sẽ ảnh hưởng đến việc sử dụng bình thường của kiến thức. Nếu bạn vẫn cần xóa nó, vui lòng chọn lại biến khác trong phần ngữ cảnh." + } + }, + "tools": { + "title": "Công cụ", + "tips": "Công cụ cung cấp phương thức gọi API tiêu chuẩn, sử dụng đầu vào của người dùng hoặc biến làm tham số yêu cầu để truy vấn dữ liệu bên ngoài như ngữ cảnh.", + "toolsInUse": "Đang sử dụng {{count}} công cụ", + "modal": { + "title": "Công cụ", + "toolType": { + "title": "Loại công cụ", + "placeholder": "Vui lòng chọn loại công cụ" + }, + "name": { + "title": "Tên", + "placeholder": "Vui lòng nhập tên" + }, + "variableName": { + "title": "Tên biến", + "placeholder": "Vui lòng nhập tên biến" + } + } + }, + "conversationHistory": { + "title": "Lịch sử cuộc trò chuyện", + "description": "Đặt tiền tố cho các vai trò trong cuộc trò chuyện", + "tip": "Lịch sử cuộc trò chuyện chưa được bật, vui lòng thêm vào phần prompt ở trên.", + "learnMore": "Tìm hiểu thêm", + "editModal": { + "title": "Chỉnh sửa tên vai trò trong cuộc trò chuyện", + "userPrefix": "Tiền tố người dùng", + "assistantPrefix": "Tiền tố trợ lý" + } + }, + "toolbox": { + "title": "HỘP CÔNG CỤ" + }, + "moderation": { + "title": "Kiểm duyệt nội dung", + "description": "Bảo vệ đầu ra của mô hình bằng cách sử dụng API kiểm duyệt hoặc danh sách từ nhạy cảm.", + "allEnabled": "Đã bật kiểm duyệt nội dung ĐẦU VÀO/ĐẦU RA", + "inputEnabled": "Đã bật kiểm duyệt nội dung ĐẦU VÀO", + "outputEnabled": "Đã bật kiểm duyệt nội dung ĐẦU RA", + "modal": { + "title": "Cài đặt kiểm duyệt nội dung", + "provider": { + "title": "Nhà cung cấp", + "openai": "Kiểm duyệt OpenAI", + "openaiTip": { + "prefix": "Kiểm duyệt OpenAI yêu cầu cấu hình khóa API OpenAI trong ", + "suffix": "." + }, + "keywords": "Từ khóa" + }, + "keywords": { + "tip": "Mỗi dòng một từ khóa, phân tách bằng dòng mới. Tối đa 100 ký tự mỗi dòng.", + "placeholder": "Mỗi dòng một từ khóa, phân tách bằng dòng mới", + "line": "Dòng" + }, + "content": { + "input": "Kiểm duyệt nội dung ĐẦU VÀO", + "output": "Kiểm duyệt nội dung ĐẀU RA", + "preset": "Câu trả lời mẫu", + "placeholder": "Nội dung câu trả lời mẫu ở đây", + "condition": "Đã bật ít nhất một kiểm duyệt nội dung ĐẦU VÀO và ĐẦU RA", + "fromApi": "Câu trả lời mẫu được trả về bởi API", + "errorMessage": "Câu trả lời mẫu không thể trống", + "supportMarkdown": "Hỗ trợ Markdown" + }, + "openaiNotConfig": { + "before": "Kiểm duyệt OpenAI yêu cầu cấu hình khóa API OpenAI trong", + "after": "" + } + }, + "contentEnableLabel": "Đã bật nội dung kiểm duyệt" + }, + "fileUpload": { + "title": "Tải lên tệp", + "description": "Hộp nhập chat cho phép tải lên hình ảnh, tài liệu và các tệp khác.", + "supportedTypes": "Các loại tệp được hỗ trợ", + "numberLimit": "Số lượng tối đa có thể tải lên", + "modalTitle": "Cài đặt tải lên tệp" + }, + "imageUpload": { + "title": "Tải lên hình ảnh", + "description": "Cho phép tải lên hình ảnh.", + "supportedTypes": "Các loại tệp được hỗ trợ", + "numberLimit": "Số lượng tối đa có thể tải lên", + "modalTitle": "Cài đặt tải lên hình ảnh" + }, + "bar": { + "empty": "Bật tính năng để cải thiện trải nghiệm người dùng ứng dụng web", + "enableText": "Tính năng đã được bật", + "manage": "Quản lý" + }, + "documentUpload": { + "title": "Tài liệu", + "description": "Bật tài liệu sẽ cho phép mô hình nhận tài liệu và trả lời các câu hỏi về chúng." + }, + "audioUpload": { + "title": "Âm thanh", + "description": "Bật âm thanh sẽ cho phép mô hình xử lý các tệp âm thanh để phiên âm và phân tích." + } + }, + "automatic": {}, + "resetConfig": { + "title": "Xác nhận đặt lại?", + "message": "Đặt lại sẽ loại bỏ các thay đổi, khôi phục cấu hình đã xuất bản lần cuối." + }, + "errorMessage": { + "nameOfKeyRequired": "Tên của khóa: {{key}} là bắt buộc", + "valueOfVarRequired": "Giá trị {{key}} không thể trống", + "queryRequired": "Văn bản yêu cầu là bắt buộc.", + "waitForResponse": "Vui lòng đợi phản hồi của tin nhắn trước để hoàn thành.", + "waitForBatchResponse": "Vui lòng đợi phản hồi của tác vụ hàng loạt để hoàn thành.", + "notSelectModel": "Vui lòng chọn một mô hình", + "waitForImgUpload": "Vui lòng đợi hình ảnh được tải lên", + "waitForFileUpload": "Vui lòng đợi tệp / tệp tải lên" + }, + "chatSubTitle": "Hướng dẫn", + "completionSubTitle": "Tiền tố lời nhắc", + "promptTip": "Lời nhắc hướng dẫn các phản hồi của AI với hướng dẫn và ràng buộc. Chèn biến như {{input}}. Lời nhắc này sẽ không được hiển thị cho người dùng.", + "formattingChangedTitle": "Định dạng đã thay đổi", + "formattingChangedText": "Thay đổi định dạng sẽ đặt lại khu vực gỡ lỗi, bạn có chắc chắn không?", + "variableTitle": "Biến", + "variableTip": "Người dùng điền các biến vào một biểu mẫu, tự động thay thế các biến trong lời nhắc.", + "notSetVar": "Biến cho phép người dùng đưa ra từ khóa lời nhắc hoặc mở đầu khi điền vào biểu mẫu. Bạn có thể thử nhập \"{{input}}\" trong các từ khóa lời nhắc.", + "autoAddVar": "Phát hiện biến không xác định được tham chiếu trong tiền-lời nhắc, bạn có muốn thêm chúng vào biểu mẫu đầu vào người dùng không?", + "variableTable": { + "key": "Khóa biến", + "name": "Tên trường nhập liệu người dùng", + "type": "Loại nhập liệu", + "action": "Hành động", + "typeString": "Chuỗi", + "typeSelect": "Lựa chọn" + }, + "varKeyError": { + "canNoBeEmpty": "{{key}} là bắt buộc", + "tooLong": "{{key}} quá dài. Không thể dài hơn 30 ký tự", + "notValid": "{{key}} không hợp lệ. Chỉ có thể chứa chữ cái, số, và dấu gạch dưới", + "notStartWithNumber": "{{key}} không thể bắt đầu bằng số", + "keyAlreadyExists": "{{key}} đã tồn tại" + }, + "otherError": { + "promptNoBeEmpty": "Lời nhắc không thể trống", + "historyNoBeEmpty": "Lịch sử cuộc trò chuyện phải được thiết lập trong lời nhắc", + "queryNoBeEmpty": "Truy vấn phải được thiết lập trong lời nhắc" + }, + "variableConfig": { + "addModalTitle": "Thêm trường nhập", + "editModalTitle": "Chỉnh sửa trường nhập", + "description": "Cài đặt cho biến {{varName}}", + "fieldType": "Loại trường", + "string": "Văn bản ngắn", + "text-input": "Văn bản ngắn", + "paragraph": "Đoạn văn", + "select": "Lựa chọn", + "number": "Số", + "notSet": "Chưa thiết lập, hãy thử nhập {{input}} trong gợi ý tiền tố", + "stringTitle": "Tùy chọn hộp văn bản biểu mẫu", + "maxLength": "Độ dài tối đa", + "options": "Tùy chọn", + "addOption": "Thêm tùy chọn", + "apiBasedVar": "Biến dựa trên API", + "varName": "Tên biến", + "labelName": "Tên nhãn", + "inputPlaceholder": "Vui lòng nhập", + "required": "Bắt buộc", + "hide": "Ẩn", + "errorMsg": { + "labelNameRequired": "Tên nhãn là bắt buộc", + "varNameCanBeRepeat": "Tên biến không được trùng lặp", + "atLeastOneOption": "Cần ít nhất một tùy chọn", + "optionRepeat": "Có các tùy chọn trùng lặp" + }, + "defaultValue": "Giá trị mặc định", + "noDefaultValue": "Không có giá trị mặc định", + "selectDefaultValue": "Chọn giá trị mặc định", + "file": { + "image": { + "name": "Ảnh" + }, + "audio": { + "name": "Âm thanh" + }, + "document": { + "name": "Tài liệu" + }, + "video": { + "name": "Video" + }, + "custom": { + "description": "Chỉ định các loại tệp khác.", + "name": "Các loại tệp khác", + "createPlaceholder": " Phần mở rộng tệp, ví dụ: .doc" + }, + "supportFileTypes": "Các loại tệp hỗ trợ" + }, + "both": "Cả hai", + "uploadFileTypes": "Tải lên các loại tệp", + "localUpload": "Tải lên cục bộ", + "single-file": "Tệp đơn", + "content": "Nội dung", + "multi-files": "Danh sách tập tin", + "maxNumberOfUploads": "Số lượt tải lên tối đa", + "maxNumberTip": "Tài liệu < {{docLimit}}, hình ảnh < {{imgLimit}}, âm thanh < {{audioLimit}}, video < {{videoLimit}}", + "json": "Mã JSON", + "checkbox": "Hộp kiểm", + "optional": "tùy chọn", + "jsonSchema": "Sơ đồ JSON", + "unit": "Đơn vị", + "startChecked": "Bắt đầu kiểm tra", + "displayName": "Tên hiển thị", + "startSelectedOption": "Bắt đầu tùy chọn đã chọn", + "noDefaultSelected": "Không chọn", + "tooltipsPlaceholder": "Nhập văn bản hữu ích được hiển thị khi di chuột qua nhãn", + "unitPlaceholder": "Đơn vị hiển thị sau số, ví dụ: mã thông báo", + "defaultValuePlaceholder": "Nhập giá trị mặc định để điền trước trường", + "tooltips": "Chú giải công cụ", + "placeholderPlaceholder": "Nhập văn bản để hiển thị khi trường trống", + "uploadMethod": "Phương pháp tải lên", + "showAllSettings": "Hiển thị tất cả cài đặt", + "placeholder": "Trình giữ chỗ" + }, + "vision": { + "name": "Thị giác", + "description": "Cho phép tính năng thị giác sẽ cho phép mô hình nhận diện hình ảnh và trả lời các câu hỏi về chúng.", + "settings": "Cài đặt", + "visionSettings": { + "title": "Cài đặt thị giác", + "resolution": "Độ phân giải", + "resolutionTooltip": "Độ phân giải thấp sẽ cho phép mô hình nhận một phiên bản hình ảnh 512 x 512 thấp hơn, và đại diện cho hình ảnh với ngân sách 65 token. Điều này cho phép API trả về phản hồi nhanh hơn và tiêu thụ ít token đầu vào cho các trường hợp sử dụng không yêu cầu chi tiết cao.\nĐộ phân giải cao sẽ đầu tiên cho phép mô hình nhìn thấy hình ảnh thấp hơn và sau đó tạo ra các cắt chi tiết của hình ảnh đầu vào dưới dạng hình vuông 512px dựa trên kích thước hình ảnh đầu vào. Mỗi cắt chi tiết sử dụng hai lần ngân sách token cho tổng cộng 129 token.", + "high": "Cao", + "low": "Thấp", + "uploadMethod": "Phương thức tải lên", + "both": "Cả hai", + "localUpload": "Tải lên nội bộ", + "url": "URL", + "uploadLimit": "Giới hạn tải lên" + }, + "onlySupportVisionModelTip": "Chỉ hỗ trợ các mô hình thị giác" + }, + "voice": { + "name": "Giọng nói", + "defaultDisplay": "Giọng mặc định", + "description": "Cài đặt chuyển đổi văn bản thành giọng nói", + "settings": "Cài đặt", + "voiceSettings": { + "title": "Cài đặt giọng nói", + "language": "Ngôn ngữ", + "resolutionTooltip": "Chuyển đổi văn bản thành giọng nói hỗ trợ ngôn ngữ.", + "voice": "Giọng nói", + "autoPlay": "Tự động phát", + "autoPlayEnabled": "Đã bật", + "autoPlayDisabled": "Đã tắt" + } + }, + "openingStatement": { + "title": "Mở đầu cuộc trò chuyện", + "add": "Thêm", + "writeOpener": "Viết câu mở đầu", + "placeholder": "Viết thông điệp mở đầu của bạn ở đây, bạn có thể sử dụng biến, hãy thử nhập {{biến}}.", + "openingQuestion": "Câu hỏi mở đầu", + "openingQuestionPlaceholder": "Bạn có thể sử dụng biến, hãy thử nhập {{variable}}.", + "noDataPlaceHolder": "Bắt đầu cuộc trò chuyện với người dùng có thể giúp AI thiết lập mối quan hệ gần gũi hơn với họ trong các ứng dụng trò chuyện.", + "varTip": "Bạn có thể sử dụng biến, hãy thử nhập {{biến}}", + "tooShort": "Cần ít nhất 20 từ trong lời nhắc ban đầu để tạo ra các câu mở đầu cho cuộc trò chuyện.", + "notIncludeKey": "Lời nhắc ban đầu không bao gồm biến: {{key}}. Vui lòng thêm nó vào lời nhắc ban đầu." + }, + "modelConfig": { + "model": "Mô hình", + "setTone": "Thiết lập giọng điệu của phản hồi", + "title": "Mô hình và tham số", + "modeType": { + "chat": "Trò chuyện", + "completion": "Hoàn thành" + } + }, + "inputs": { + "title": "Gỡ lỗi và xem trước", + "noPrompt": "Hãy thử viết một số lời nhắc trong trường tiền-lời nhắc", + "userInputField": "Trường nhập liệu người dùng", + "noVar": "Điền vào giá trị của biến, nó sẽ tự động thay thế từ khóa lời nhắc mỗi khi bắt đầu phiên mới.", + "chatVarTip": "Điền vào giá trị của biến, nó sẽ tự động thay thế từ khóa lời nhắc mỗi khi bắt đầu phiên mới", + "completionVarTip": "Điền vào giá trị của biến, nó sẽ tự động thay thế từ khóa lời nhắc mỗi khi một câu hỏi được gửi.", + "previewTitle": "Xem trước lời nhắc", + "queryTitle": "Nội dung truy vấn", + "queryPlaceholder": "Vui lòng nhập văn bản yêu cầu.", + "run": "CHẠY" + }, + "result": "Văn bản đầu ra", + "datasetConfig": { + "settingTitle": "Cài đặt truy xuất", + "knowledgeTip": "Nhấn vào nút \"+\" để thêm kiến thức", + "retrieveOneWay": { + "title": "Truy xuất N-to-1", + "description": "Dựa trên ý định của người dùng và mô tả kiến thức, Agent tự động chọn kiến thức tốt nhất để truy vấn. Phù hợp nhất cho các ứng dụng có kiến thức cụ thể, giới hạn." + }, + "retrieveMultiWay": { + "title": "Truy xuất đa hướng", + "description": "Dựa trên ý định của người dùng, truy vấn qua tất cả kiến thức, truy xuất văn bản liên quan từ nhiều nguồn và chọn ra kết quả tốt nhất phù hợp với truy vấn của người dùng sau khi sắp xếp lại. Yêu cầu cấu hình của API mô hình Rerank." + }, + "rerankModelRequired": "Mô hình Rerank là bắt buộc", + "params": "Tham số", + "top_k": "Top K", + "top_kTip": "Sử dụng để lọc các phần chính xác nhất với câu hỏi của người dùng. Hệ thống cũng sẽ tự động điều chỉnh giá trị của Top K, theo max_tokens của mô hình đã chọn.", + "score_threshold": "Ngưỡng điểm", + "score_thresholdTip": "Sử dụng để thiết lập ngưỡng tương đồng cho việc lọc các phần.", + "retrieveChangeTip": "Thay đổi chế độ chỉ mục và chế độ truy xuất có thể ảnh hưởng đến các ứng dụng liên quan đến kiến thức này.", + "embeddingModelRequired": "Cần có Mô hình nhúng được định cấu hình" + }, + "debugAsSingleModel": "Gỡ lỗi như một mô hình", + "debugAsMultipleModel": "Gỡ lỗi như nhiều mô hình", + "duplicateModel": "Sao chép", + "publishAs": "Xuất bản dưới dạng", + "assistantType": { + "name": "Loại trợ lý", + "chatAssistant": { + "name": "Trợ lý cơ bản", + "description": "Xây dựng một trợ lý dựa trên trò chuyện sử dụng một Mô hình Ngôn ngữ Lớn." + }, + "agentAssistant": { + "name": "Trợ lý tác nhân", + "description": "Xây dựng một tác nhân thông minh có thể tự động chọn các công cụ để hoàn thành các nhiệm vụ." + } + }, + "agent": { + "agentMode": "Chế độ tác nhân", + "agentModeDes": "Thiết lập loại chế độ suy luận cho tác nhân", + "agentModeType": { + "ReACT": "ReAct", + "functionCall": "Gọi hàm" + }, + "setting": { + "name": "Thiết lập tác nhân", + "description": "Thiết lập tác nhân cho phép cấu hình chế độ tác nhân và các tính năng nâng cao như lời nhắc tích hợp sẵn, chỉ có sẵn trong loại Tác nhân.", + "maximumIterations": { + "name": "Số lần lặp tối đa", + "description": "Giới hạn số lần lặp mà một trợ lý tác nhân có thể thực hiện" + } + }, + "buildInPrompt": "Lời nhắc tích hợp", + "firstPrompt": "Lời nhắc đầu tiên", + "nextIteration": "Lần lặp tiếp theo", + "promptPlaceholder": "Viết lời nhắc của bạn ở đây", + "tools": { + "name": "Công cụ", + "description": "Sử dụng công cụ có thể mở rộng khả năng của LLM, như tìm kiếm trên internet hoặc thực hiện các phép tính khoa học", + "enabled": "Đã kích hoạt" + } + }, + "codegen": { + "generate": "Đẻ ra", + "instruction": "Chỉ thị", + "generatedCodeTitle": "Mã được tạo", + "loading": "Đang tạo mã...", + "title": "Trình tạo mã", + "instructionPlaceholder": "Nhập mô tả chi tiết về mã bạn muốn tạo.", + "overwriteConfirmMessage": "Hành động này sẽ ghi đè lên mã hiện có. Bạn có muốn tiếp tục không?", + "description": "Trình tạo mã sử dụng các mô hình đã định cấu hình để tạo mã chất lượng cao dựa trên hướng dẫn của bạn. Vui lòng cung cấp hướng dẫn rõ ràng và chi tiết.", + "resTitle": "Mã được tạo", + "apply": "Áp dụng", + "overwriteConfirmTitle": "Ghi đè mã hiện có?", + "applyChanges": "Áp dụng thay đổi", + "noDataLine1": "Mô tả trường hợp sử dụng của bạn ở bên trái,", + "noDataLine2": "Bản xem trước mã sẽ hiển thị ở đây." + }, + "generate": { + "template": { + "pythonDebugger": { + "instruction": "Một bot có thể tạo và gỡ lỗi mã của bạn dựa trên hướng dẫn của bạn", + "name": "Trình gỡ lỗi Python" + }, + "translation": { + "name": "Dịch", + "instruction": "Một dịch giả có thể dịch nhiều ngôn ngữ" + }, + "professionalAnalyst": { + "name": "Chuyên viên phân tích chuyên nghiệp", + "instruction": "Trích xuất thông tin chi tiết, xác định rủi ro và chắt lọc thông tin quan trọng từ các báo cáo dài thành một bản ghi nhớ duy nhất" + }, + "excelFormulaExpert": { + "name": "Chuyên gia công thức Excel", + "instruction": "Một chatbot có thể giúp người dùng mới hiểu, sử dụng và tạo công thức Excel dựa trên hướng dẫn của người dùng" + }, + "travelPlanning": { + "instruction": "Trợ lý lập kế hoạch du lịch là một công cụ thông minh được thiết kế để giúp người dùng dễ dàng lên kế hoạch cho các chuyến đi của họ", + "name": "Lập kế hoạch du lịch" + }, + "SQLSorcerer": { + "instruction": "Chuyển đổi ngôn ngữ hàng ngày thành truy vấn SQL", + "name": "SQL sorcerer" + }, + "GitGud": { + "name": "Git gud", + "instruction": "Tạo các lệnh Git thích hợp dựa trên các hành động kiểm soát phiên bản được người dùng mô tả" + }, + "meetingTakeaways": { + "name": "Bài học rút ra trong cuộc họp", + "instruction": "Chắt lọc các cuộc họp thành các bản tóm tắt ngắn gọn bao gồm các chủ đề thảo luận, bài học chính và các mục hành động" + }, + "writingsPolisher": { + "name": "Máy đánh bóng viết", + "instruction": "Sử dụng các kỹ thuật chỉnh sửa nội dung nâng cao để cải thiện bài viết của bạn" + } + }, + "generate": "Đẻ ra", + "tryIt": "Dùng thử", + "apply": "Áp dụng", + "instruction": "Chỉ thị", + "title": "Trình tạo nhắc nhở", + "resTitle": "Lời nhắc được tạo", + "loading": "Sắp xếp ứng dụng cho bạn...", + "description": "Trình tạo lời nhắc sử dụng mô hình được định cấu hình để tối ưu hóa lời nhắc cho chất lượng cao hơn và cấu trúc tốt hơn. Vui lòng viết hướng dẫn rõ ràng và chi tiết.", + "overwriteMessage": "Áp dụng lời nhắc này sẽ ghi đè cấu hình hiện có.", + "overwriteTitle": "Ghi đè cấu hình hiện có?", + "versions": "Phiên bản", + "optimizationNote": "Chú thích tối ưu hóa", + "to": "đến", + "version": "Phiên bản", + "idealOutput": "Đầu ra lý tưởng", + "press": "Báo chí", + "optimizePromptTooltip": "Tối ưu hóa trong trình tạo prompt", + "optional": "Tùy chọn", + "insertContext": "Chèn ngữ cảnh", + "instructionPlaceHolderLine3": "Giọng điệu quá nghiêm khắc, hãy làm cho nó thân thiện hơn.", + "dismiss": "Bỏ qua", + "instructionPlaceHolderTitle": "Mô tả cách bạn muốn cải thiện câu lệnh này. Ví dụ:", + "latest": "Mới nhất", + "instructionPlaceHolderLine1": "Làm cho đầu ra ngắn gọn hơn, giữ lại các điểm chính.", + "newNoDataLine1": "Viết một hướng dẫn trong cột bên trái và nhấp vào Tạo để xem phản hồi.", + "idealOutputPlaceholder": "Mô tả định dạng phản hồi lý tưởng của bạn, độ dài, giọng điệu và yêu cầu về nội dung...", + "codeGenInstructionPlaceHolderLine": "Càng chi tiết phản hồi, chẳng hạn như các loại dữ liệu đầu vào và đầu ra cũng như cách các biến được xử lý, thì việc tạo mã sẽ càng chính xác.", + "instructionPlaceHolderLine2": "Định dạng đầu ra không chính xác, vui lòng tuân thủ nghiêm ngặt định dạng JSON." + }, + "warningMessage": { + "timeoutExceeded": "Kết quả không được hiển thị do hết thời gian chờ. Vui lòng tham khảo nhật ký để thu thập kết quả đầy đủ." + }, + "noResult": "Đầu ra sẽ được hiển thị ở đây." +} diff --git a/web/i18n/vi-VN/app-debug.ts b/web/i18n/vi-VN/app-debug.ts deleted file mode 100644 index 158a6b6ce9..0000000000 --- a/web/i18n/vi-VN/app-debug.ts +++ /dev/null @@ -1,566 +0,0 @@ -const translation = { - pageTitle: { - line1: 'YÊU CẦU', - line2: 'KỸ THUẬT', - }, - orchestrate: 'Điều phối', - promptMode: { - simple: 'Chuyển sang Chế độ Chuyên gia để chỉnh sửa toàn bộ YÊU CẦU', - advanced: 'Chế độ Chuyên gia', - switchBack: 'Quay lại', - advancedWarning: { - title: 'Bạn đã chuyển sang Chế độ Chuyên gia. Sau khi sửa đổi YÊU CẦU, bạn KHÔNG THỂ quay lại chế độ cơ bản.', - description: 'Trong Chế độ Chuyên gia, bạn có thể chỉnh sửa toàn bộ YÊU CẦU.', - learnMore: 'Tìm hiểu thêm', - ok: 'Đồng ý', - }, - operation: { - addMessage: 'Thêm tin nhắn', - }, - contextMissing: 'Thiếu thành phần Ngữ cảnh, hiệu quả của yêu cầu có thể không tốt.', - }, - operation: { - applyConfig: 'Áp dụng', - resetConfig: 'Đặt lại', - debugConfig: 'Gỡ lỗi', - addFeature: 'Thêm tính năng', - automatic: 'Tự động', - stopResponding: 'Dừng phản hồi', - agree: 'thích', - disagree: 'không thích', - cancelAgree: 'Bỏ thích', - cancelDisagree: 'Bỏ không thích', - userAction: 'Hành động người dùng ', - }, - notSetAPIKey: { - title: 'Chưa thiết lập khóa API của nhà cung cấp LLM', - trailFinished: 'Kết thúc dùng thử', - description: 'Chưa thiết lập khóa API của nhà cung cấp LLM. Cần thiết lập trước khi gỡ lỗi.', - settingBtn: 'Đi đến cài đặt', - }, - trailUseGPT4Info: { - title: 'Hiện không hỗ trợ GPT-4', - description: 'Để sử dụng GPT-4, vui lòng thiết lập API Key.', - }, - feature: { - groupChat: { - title: 'Nâng cao trò chuyện', - description: 'Thêm cài đặt trước cho cuộc trò chuyện có thể cải thiện trải nghiệm người dùng.', - }, - groupExperience: { - title: 'Nâng cao trải nghiệm', - }, - conversationOpener: { - title: 'Mở đầu cuộc trò chuyện', - description: 'Trong ứng dụng trò chuyện, câu nói đầu tiên mà AI tự động nói với người dùng thường được sử dụng như một lời chào.', - }, - suggestedQuestionsAfterAnswer: { - title: 'Câu hỏi gợi ý', - description: 'Thiết lập đề xuất câu hỏi tiếp theo có thể tạo ra cuộc trò chuyện tốt hơn cho người dùng.', - resDes: '3 đề xuất cho câu hỏi tiếp theo của người dùng.', - tryToAsk: 'Thử hỏi', - }, - moreLikeThis: { - title: 'Thêm tương tự', - description: 'Tạo nhiều văn bản cùng một lúc, sau đó chỉnh sửa và tiếp tục tạo ra.', - generateNumTip: 'Số lượng mỗi lần tạo', - tip: 'Sử dụng tính năng này sẽ tiêu tốn thêm token.', - }, - speechToText: { - title: 'Chuyển đổi giọng nói thành văn bản', - description: 'Khi được bật, bạn có thể sử dụng đầu vào bằng giọng nói.', - resDes: 'Đã bật đầu vào bằng giọng nói', - }, - textToSpeech: { - title: 'Chuyển đổi văn bản thành giọng nói', - description: 'Khi được bật, văn bản có thể được chuyển đổi thành giọng nói.', - resDes: 'Đã bật chuyển đổi văn bản thành âm thanh', - }, - citation: { - title: 'Trích dẫn và chú thích', - description: 'Khi được bật, hiển thị nguồn tài liệu và phần được trích dẫn của nội dung được tạo ra.', - resDes: 'Đã bật trích dẫn và chú thích', - }, - annotation: { - title: 'Phản hồi có chú thích', - description: 'Bạn có thể thêm phản hồi chất lượng cao vào bộ nhớ cache để ưu tiên phù hợp với các câu hỏi tương tự của người dùng.', - resDes: 'Đã bật phản hồi có chú thích', - scoreThreshold: { - title: 'Ngưỡng điểm', - description: 'Được sử dụng để đặt ngưỡng tương đồng cho phản hồi có chú thích.', - easyMatch: 'Khớp dễ dàng', - accurateMatch: 'Khớp chính xác', - }, - matchVariable: { - title: 'Biến khớp', - choosePlaceholder: 'Chọn biến khớp', - }, - cacheManagement: 'Quản lý chú thích', - cached: 'Đã lưu cache', - remove: 'Xóa', - removeConfirm: 'Xóa chú thích này?', - add: 'Thêm chú thích', - edit: 'Chỉnh sửa chú thích', - }, - dataSet: { - title: 'Ngữ cảnh', - noData: 'Bạn có thể nhập dữ liệu làm ngữ cảnh', - selectTitle: 'Chọn kiến thức tham khảo', - selected: 'Kiến thức đã chọn', - noDataSet: 'Không tìm thấy kiến thức', - toCreate: 'Tạo mới', - notSupportSelectMulti: 'Hiện chỉ hỗ trợ một kiến thức', - queryVariable: { - title: 'Biến truy vấn', - tip: 'Biến này sẽ được sử dụng làm đầu vào truy vấn để truy xuất ngữ cảnh, lấy thông tin ngữ cảnh liên quan đến đầu vào của biến này.', - choosePlaceholder: 'Chọn biến truy vấn', - noVar: 'Không có biến', - noVarTip: 'Vui lòng tạo một biến trong phần Biến', - unableToQueryDataSet: 'Không thể truy vấn kiến thức', - unableToQueryDataSetTip: 'Không thể truy vấn kiến thức thành công, vui lòng chọn một biến truy vấn ngữ cảnh trong phần ngữ cảnh.', - ok: 'Đồng ý', - contextVarNotEmpty: 'Biến truy vấn ngữ cảnh không thể trống', - deleteContextVarTitle: 'Xóa biến "{{varName}}"?', - deleteContextVarTip: 'Biến này đã được thiết lập là biến truy vấn ngữ cảnh, và việc xóa nó sẽ ảnh hưởng đến việc sử dụng bình thường của kiến thức. Nếu bạn vẫn cần xóa nó, vui lòng chọn lại biến khác trong phần ngữ cảnh.', - }, - }, - tools: { - title: 'Công cụ', - tips: 'Công cụ cung cấp phương thức gọi API tiêu chuẩn, sử dụng đầu vào của người dùng hoặc biến làm tham số yêu cầu để truy vấn dữ liệu bên ngoài như ngữ cảnh.', - toolsInUse: 'Đang sử dụng {{count}} công cụ', - modal: { - title: 'Công cụ', - toolType: { - title: 'Loại công cụ', - placeholder: 'Vui lòng chọn loại công cụ', - }, - name: { - title: 'Tên', - placeholder: 'Vui lòng nhập tên', - }, - variableName: { - title: 'Tên biến', - placeholder: 'Vui lòng nhập tên biến', - }, - }, - }, - conversationHistory: { - title: 'Lịch sử cuộc trò chuyện', - description: 'Đặt tiền tố cho các vai trò trong cuộc trò chuyện', - tip: 'Lịch sử cuộc trò chuyện chưa được bật, vui lòng thêm vào phần prompt ở trên.', - learnMore: 'Tìm hiểu thêm', - editModal: { - title: 'Chỉnh sửa tên vai trò trong cuộc trò chuyện', - userPrefix: 'Tiền tố người dùng', - assistantPrefix: 'Tiền tố trợ lý', - }, - }, - toolbox: { - title: 'HỘP CÔNG CỤ', - }, - moderation: { - title: 'Kiểm duyệt nội dung', - description: 'Bảo vệ đầu ra của mô hình bằng cách sử dụng API kiểm duyệt hoặc danh sách từ nhạy cảm.', - allEnabled: 'Đã bật kiểm duyệt nội dung ĐẦU VÀO/ĐẦU RA', - inputEnabled: 'Đã bật kiểm duyệt nội dung ĐẦU VÀO', - outputEnabled: 'Đã bật kiểm duyệt nội dung ĐẦU RA', - modal: { - title: 'Cài đặt kiểm duyệt nội dung', - provider: { - title: 'Nhà cung cấp', - openai: 'Kiểm duyệt OpenAI', - openaiTip: { - prefix: 'Kiểm duyệt OpenAI yêu cầu cấu hình khóa API OpenAI trong ', - suffix: '.', - }, - keywords: 'Từ khóa', - }, - keywords: { - tip: 'Mỗi dòng một từ khóa, phân tách bằng dòng mới. Tối đa 100 ký tự mỗi dòng.', - placeholder: 'Mỗi dòng một từ khóa, phân tách bằng dòng mới', - line: 'Dòng', - }, - content: { - input: 'Kiểm duyệt nội dung ĐẦU VÀO', - output: 'Kiểm duyệt nội dung ĐẀU RA', - preset: 'Câu trả lời mẫu', - placeholder: 'Nội dung câu trả lời mẫu ở đây', - condition: 'Đã bật ít nhất một kiểm duyệt nội dung ĐẦU VÀO và ĐẦU RA', - fromApi: 'Câu trả lời mẫu được trả về bởi API', - errorMessage: 'Câu trả lời mẫu không thể trống', - supportMarkdown: 'Hỗ trợ Markdown', - }, - openaiNotConfig: { - before: 'Kiểm duyệt OpenAI yêu cầu cấu hình khóa API OpenAI trong', - after: '', - }, - }, - contentEnableLabel: 'Đã bật nội dung kiểm duyệt', - }, - fileUpload: { - title: 'Tải lên tệp', - description: 'Hộp nhập chat cho phép tải lên hình ảnh, tài liệu và các tệp khác.', - supportedTypes: 'Các loại tệp được hỗ trợ', - numberLimit: 'Số lượng tối đa có thể tải lên', - modalTitle: 'Cài đặt tải lên tệp', - }, - imageUpload: { - title: 'Tải lên hình ảnh', - description: 'Cho phép tải lên hình ảnh.', - supportedTypes: 'Các loại tệp được hỗ trợ', - numberLimit: 'Số lượng tối đa có thể tải lên', - modalTitle: 'Cài đặt tải lên hình ảnh', - }, - bar: { - empty: 'Bật tính năng để cải thiện trải nghiệm người dùng ứng dụng web', - enableText: 'Tính năng đã được bật', - manage: 'Quản lý', - }, - documentUpload: { - title: 'Tài liệu', - description: 'Bật tài liệu sẽ cho phép mô hình nhận tài liệu và trả lời các câu hỏi về chúng.', - }, - audioUpload: { - title: 'Âm thanh', - description: 'Bật âm thanh sẽ cho phép mô hình xử lý các tệp âm thanh để phiên âm và phân tích.', - }, - }, - automatic: { - }, - resetConfig: { - title: 'Xác nhận đặt lại?', - message: 'Đặt lại sẽ loại bỏ các thay đổi, khôi phục cấu hình đã xuất bản lần cuối.', - }, - errorMessage: { - nameOfKeyRequired: 'Tên của khóa: {{key}} là bắt buộc', - valueOfVarRequired: 'Giá trị {{key}} không thể trống', - queryRequired: 'Văn bản yêu cầu là bắt buộc.', - waitForResponse: 'Vui lòng đợi phản hồi của tin nhắn trước để hoàn thành.', - waitForBatchResponse: 'Vui lòng đợi phản hồi của tác vụ hàng loạt để hoàn thành.', - notSelectModel: 'Vui lòng chọn một mô hình', - waitForImgUpload: 'Vui lòng đợi hình ảnh được tải lên', - waitForFileUpload: 'Vui lòng đợi tệp / tệp tải lên', - }, - chatSubTitle: 'Hướng dẫn', - completionSubTitle: 'Tiền tố lời nhắc', - promptTip: 'Lời nhắc hướng dẫn các phản hồi của AI với hướng dẫn và ràng buộc. Chèn biến như {{input}}. Lời nhắc này sẽ không được hiển thị cho người dùng.', - formattingChangedTitle: 'Định dạng đã thay đổi', - formattingChangedText: 'Thay đổi định dạng sẽ đặt lại khu vực gỡ lỗi, bạn có chắc chắn không?', - variableTitle: 'Biến', - variableTip: 'Người dùng điền các biến vào một biểu mẫu, tự động thay thế các biến trong lời nhắc.', - notSetVar: 'Biến cho phép người dùng đưa ra từ khóa lời nhắc hoặc mở đầu khi điền vào biểu mẫu. Bạn có thể thử nhập "{{input}}" trong các từ khóa lời nhắc.', - autoAddVar: 'Phát hiện biến không xác định được tham chiếu trong tiền-lời nhắc, bạn có muốn thêm chúng vào biểu mẫu đầu vào người dùng không?', - variableTable: { - key: 'Khóa biến', - name: 'Tên trường nhập liệu người dùng', - type: 'Loại nhập liệu', - action: 'Hành động', - typeString: 'Chuỗi', - typeSelect: 'Lựa chọn', - }, - varKeyError: { - canNoBeEmpty: '{{key}} là bắt buộc', - tooLong: '{{key}} quá dài. Không thể dài hơn 30 ký tự', - notValid: '{{key}} không hợp lệ. Chỉ có thể chứa chữ cái, số, và dấu gạch dưới', - notStartWithNumber: '{{key}} không thể bắt đầu bằng số', - keyAlreadyExists: '{{key}} đã tồn tại', - }, - otherError: { - promptNoBeEmpty: 'Lời nhắc không thể trống', - historyNoBeEmpty: 'Lịch sử cuộc trò chuyện phải được thiết lập trong lời nhắc', - queryNoBeEmpty: 'Truy vấn phải được thiết lập trong lời nhắc', - }, - variableConfig: { - 'addModalTitle': 'Thêm trường nhập', - 'editModalTitle': 'Chỉnh sửa trường nhập', - 'description': 'Cài đặt cho biến {{varName}}', - 'fieldType': 'Loại trường', - 'string': 'Văn bản ngắn', - 'text-input': 'Văn bản ngắn', - 'paragraph': 'Đoạn văn', - 'select': 'Lựa chọn', - 'number': 'Số', - 'notSet': 'Chưa thiết lập, hãy thử nhập {{input}} trong gợi ý tiền tố', - 'stringTitle': 'Tùy chọn hộp văn bản biểu mẫu', - 'maxLength': 'Độ dài tối đa', - 'options': 'Tùy chọn', - 'addOption': 'Thêm tùy chọn', - 'apiBasedVar': 'Biến dựa trên API', - 'varName': 'Tên biến', - 'labelName': 'Tên nhãn', - 'inputPlaceholder': 'Vui lòng nhập', - 'required': 'Bắt buộc', - 'hide': 'Ẩn', - 'errorMsg': { - labelNameRequired: 'Tên nhãn là bắt buộc', - varNameCanBeRepeat: 'Tên biến không được trùng lặp', - atLeastOneOption: 'Cần ít nhất một tùy chọn', - optionRepeat: 'Có các tùy chọn trùng lặp', - }, - 'defaultValue': 'Giá trị mặc định', - 'noDefaultValue': 'Không có giá trị mặc định', - 'selectDefaultValue': 'Chọn giá trị mặc định', - 'file': { - image: { - name: 'Ảnh', - }, - audio: { - name: 'Âm thanh', - }, - document: { - name: 'Tài liệu', - }, - video: { - name: 'Video', - }, - custom: { - description: 'Chỉ định các loại tệp khác.', - name: 'Các loại tệp khác', - createPlaceholder: ' Phần mở rộng tệp, ví dụ: .doc', - }, - supportFileTypes: 'Các loại tệp hỗ trợ', - }, - 'both': 'Cả hai', - 'uploadFileTypes': 'Tải lên các loại tệp', - 'localUpload': 'Tải lên cục bộ', - 'single-file': 'Tệp đơn', - 'content': 'Nội dung', - 'multi-files': 'Danh sách tập tin', - 'maxNumberOfUploads': 'Số lượt tải lên tối đa', - 'maxNumberTip': 'Tài liệu < {{docLimit}}, hình ảnh < {{imgLimit}}, âm thanh < {{audioLimit}}, video < {{videoLimit}}', - 'json': 'Mã JSON', - 'checkbox': 'Hộp kiểm', - 'optional': 'tùy chọn', - 'jsonSchema': 'Sơ đồ JSON', - 'unit': 'Đơn vị', - 'startChecked': 'Bắt đầu kiểm tra', - 'displayName': 'Tên hiển thị', - 'startSelectedOption': 'Bắt đầu tùy chọn đã chọn', - 'noDefaultSelected': 'Không chọn', - 'tooltipsPlaceholder': 'Nhập văn bản hữu ích được hiển thị khi di chuột qua nhãn', - 'unitPlaceholder': 'Đơn vị hiển thị sau số, ví dụ: mã thông báo', - 'defaultValuePlaceholder': 'Nhập giá trị mặc định để điền trước trường', - 'tooltips': 'Chú giải công cụ', - 'placeholderPlaceholder': 'Nhập văn bản để hiển thị khi trường trống', - 'uploadMethod': 'Phương pháp tải lên', - 'showAllSettings': 'Hiển thị tất cả cài đặt', - 'placeholder': 'Trình giữ chỗ', - }, - vision: { - name: 'Thị giác', - description: 'Cho phép tính năng thị giác sẽ cho phép mô hình nhận diện hình ảnh và trả lời các câu hỏi về chúng.', - settings: 'Cài đặt', - visionSettings: { - title: 'Cài đặt thị giác', - resolution: 'Độ phân giải', - resolutionTooltip: 'Độ phân giải thấp sẽ cho phép mô hình nhận một phiên bản hình ảnh 512 x 512 thấp hơn, và đại diện cho hình ảnh với ngân sách 65 token. Điều này cho phép API trả về phản hồi nhanh hơn và tiêu thụ ít token đầu vào cho các trường hợp sử dụng không yêu cầu chi tiết cao.\nĐộ phân giải cao sẽ đầu tiên cho phép mô hình nhìn thấy hình ảnh thấp hơn và sau đó tạo ra các cắt chi tiết của hình ảnh đầu vào dưới dạng hình vuông 512px dựa trên kích thước hình ảnh đầu vào. Mỗi cắt chi tiết sử dụng hai lần ngân sách token cho tổng cộng 129 token.', - high: 'Cao', - low: 'Thấp', - uploadMethod: 'Phương thức tải lên', - both: 'Cả hai', - localUpload: 'Tải lên nội bộ', - url: 'URL', - uploadLimit: 'Giới hạn tải lên', - }, - onlySupportVisionModelTip: 'Chỉ hỗ trợ các mô hình thị giác', - }, - voice: { - name: 'Giọng nói', - defaultDisplay: 'Giọng mặc định', - description: 'Cài đặt chuyển đổi văn bản thành giọng nói', - settings: 'Cài đặt', - voiceSettings: { - title: 'Cài đặt giọng nói', - language: 'Ngôn ngữ', - resolutionTooltip: 'Chuyển đổi văn bản thành giọng nói hỗ trợ ngôn ngữ.', - voice: 'Giọng nói', - autoPlay: 'Tự động phát', - autoPlayEnabled: 'Đã bật', - autoPlayDisabled: 'Đã tắt', - }, - }, - openingStatement: { - title: 'Mở đầu cuộc trò chuyện', - add: 'Thêm', - writeOpener: 'Viết câu mở đầu', - placeholder: 'Viết thông điệp mở đầu của bạn ở đây, bạn có thể sử dụng biến, hãy thử nhập {{biến}}.', - openingQuestion: 'Câu hỏi mở đầu', - openingQuestionPlaceholder: 'Bạn có thể sử dụng biến, hãy thử nhập {{variable}}.', - noDataPlaceHolder: 'Bắt đầu cuộc trò chuyện với người dùng có thể giúp AI thiết lập mối quan hệ gần gũi hơn với họ trong các ứng dụng trò chuyện.', - varTip: 'Bạn có thể sử dụng biến, hãy thử nhập {{biến}}', - tooShort: 'Cần ít nhất 20 từ trong lời nhắc ban đầu để tạo ra các câu mở đầu cho cuộc trò chuyện.', - notIncludeKey: 'Lời nhắc ban đầu không bao gồm biến: {{key}}. Vui lòng thêm nó vào lời nhắc ban đầu.', - }, - modelConfig: { - model: 'Mô hình', - setTone: 'Thiết lập giọng điệu của phản hồi', - title: 'Mô hình và tham số', - modeType: { - chat: 'Trò chuyện', - completion: 'Hoàn thành', - }, - }, - inputs: { - title: 'Gỡ lỗi và xem trước', - noPrompt: 'Hãy thử viết một số lời nhắc trong trường tiền-lời nhắc', - userInputField: 'Trường nhập liệu người dùng', - noVar: 'Điền vào giá trị của biến, nó sẽ tự động thay thế từ khóa lời nhắc mỗi khi bắt đầu phiên mới.', - chatVarTip: 'Điền vào giá trị của biến, nó sẽ tự động thay thế từ khóa lời nhắc mỗi khi bắt đầu phiên mới', - completionVarTip: 'Điền vào giá trị của biến, nó sẽ tự động thay thế từ khóa lời nhắc mỗi khi một câu hỏi được gửi.', - previewTitle: 'Xem trước lời nhắc', - queryTitle: 'Nội dung truy vấn', - queryPlaceholder: 'Vui lòng nhập văn bản yêu cầu.', - run: 'CHẠY', - }, - result: 'Văn bản đầu ra', - datasetConfig: { - settingTitle: 'Cài đặt truy xuất', - knowledgeTip: 'Nhấn vào nút "+" để thêm kiến thức', - retrieveOneWay: { - title: 'Truy xuất N-to-1', - description: 'Dựa trên ý định của người dùng và mô tả kiến thức, Agent tự động chọn kiến thức tốt nhất để truy vấn. Phù hợp nhất cho các ứng dụng có kiến thức cụ thể, giới hạn.', - }, - retrieveMultiWay: { - title: 'Truy xuất đa hướng', - description: 'Dựa trên ý định của người dùng, truy vấn qua tất cả kiến thức, truy xuất văn bản liên quan từ nhiều nguồn và chọn ra kết quả tốt nhất phù hợp với truy vấn của người dùng sau khi sắp xếp lại. Yêu cầu cấu hình của API mô hình Rerank.', - }, - rerankModelRequired: 'Mô hình Rerank là bắt buộc', - params: 'Tham số', - top_k: 'Top K', - top_kTip: 'Sử dụng để lọc các phần chính xác nhất với câu hỏi của người dùng. Hệ thống cũng sẽ tự động điều chỉnh giá trị của Top K, theo max_tokens của mô hình đã chọn.', - score_threshold: 'Ngưỡng điểm', - score_thresholdTip: 'Sử dụng để thiết lập ngưỡng tương đồng cho việc lọc các phần.', - retrieveChangeTip: 'Thay đổi chế độ chỉ mục và chế độ truy xuất có thể ảnh hưởng đến các ứng dụng liên quan đến kiến thức này.', - embeddingModelRequired: 'Cần có Mô hình nhúng được định cấu hình', - }, - debugAsSingleModel: 'Gỡ lỗi như một mô hình', - debugAsMultipleModel: 'Gỡ lỗi như nhiều mô hình', - duplicateModel: 'Sao chép', - publishAs: 'Xuất bản dưới dạng', - assistantType: { - name: 'Loại trợ lý', - chatAssistant: { - name: 'Trợ lý cơ bản', - description: 'Xây dựng một trợ lý dựa trên trò chuyện sử dụng một Mô hình Ngôn ngữ Lớn.', - }, - agentAssistant: { - name: 'Trợ lý tác nhân', - description: 'Xây dựng một tác nhân thông minh có thể tự động chọn các công cụ để hoàn thành các nhiệm vụ.', - }, - }, - agent: { - agentMode: 'Chế độ tác nhân', - agentModeDes: 'Thiết lập loại chế độ suy luận cho tác nhân', - agentModeType: { - ReACT: 'ReAct', - functionCall: 'Gọi hàm', - }, - setting: { - name: 'Thiết lập tác nhân', - description: 'Thiết lập tác nhân cho phép cấu hình chế độ tác nhân và các tính năng nâng cao như lời nhắc tích hợp sẵn, chỉ có sẵn trong loại Tác nhân.', - maximumIterations: { - name: 'Số lần lặp tối đa', - description: 'Giới hạn số lần lặp mà một trợ lý tác nhân có thể thực hiện', - }, - }, - buildInPrompt: 'Lời nhắc tích hợp', - firstPrompt: 'Lời nhắc đầu tiên', - nextIteration: 'Lần lặp tiếp theo', - promptPlaceholder: 'Viết lời nhắc của bạn ở đây', - tools: { - name: 'Công cụ', - description: 'Sử dụng công cụ có thể mở rộng khả năng của LLM, như tìm kiếm trên internet hoặc thực hiện các phép tính khoa học', - enabled: 'Đã kích hoạt', - }, - }, - codegen: { - generate: 'Đẻ ra', - instruction: 'Chỉ thị', - generatedCodeTitle: 'Mã được tạo', - loading: 'Đang tạo mã...', - title: 'Trình tạo mã', - instructionPlaceholder: 'Nhập mô tả chi tiết về mã bạn muốn tạo.', - overwriteConfirmMessage: 'Hành động này sẽ ghi đè lên mã hiện có. Bạn có muốn tiếp tục không?', - description: 'Trình tạo mã sử dụng các mô hình đã định cấu hình để tạo mã chất lượng cao dựa trên hướng dẫn của bạn. Vui lòng cung cấp hướng dẫn rõ ràng và chi tiết.', - resTitle: 'Mã được tạo', - apply: 'Áp dụng', - overwriteConfirmTitle: 'Ghi đè mã hiện có?', - applyChanges: 'Áp dụng thay đổi', - noDataLine1: 'Mô tả trường hợp sử dụng của bạn ở bên trái,', - noDataLine2: 'Bản xem trước mã sẽ hiển thị ở đây.', - }, - generate: { - template: { - pythonDebugger: { - instruction: 'Một bot có thể tạo và gỡ lỗi mã của bạn dựa trên hướng dẫn của bạn', - name: 'Trình gỡ lỗi Python', - }, - translation: { - name: 'Dịch', - instruction: 'Một dịch giả có thể dịch nhiều ngôn ngữ', - }, - professionalAnalyst: { - name: 'Chuyên viên phân tích chuyên nghiệp', - instruction: 'Trích xuất thông tin chi tiết, xác định rủi ro và chắt lọc thông tin quan trọng từ các báo cáo dài thành một bản ghi nhớ duy nhất', - }, - excelFormulaExpert: { - name: 'Chuyên gia công thức Excel', - instruction: 'Một chatbot có thể giúp người dùng mới hiểu, sử dụng và tạo công thức Excel dựa trên hướng dẫn của người dùng', - }, - travelPlanning: { - instruction: 'Trợ lý lập kế hoạch du lịch là một công cụ thông minh được thiết kế để giúp người dùng dễ dàng lên kế hoạch cho các chuyến đi của họ', - name: 'Lập kế hoạch du lịch', - }, - SQLSorcerer: { - instruction: 'Chuyển đổi ngôn ngữ hàng ngày thành truy vấn SQL', - name: 'SQL sorcerer', - }, - GitGud: { - name: 'Git gud', - instruction: 'Tạo các lệnh Git thích hợp dựa trên các hành động kiểm soát phiên bản được người dùng mô tả', - }, - meetingTakeaways: { - name: 'Bài học rút ra trong cuộc họp', - instruction: 'Chắt lọc các cuộc họp thành các bản tóm tắt ngắn gọn bao gồm các chủ đề thảo luận, bài học chính và các mục hành động', - }, - writingsPolisher: { - name: 'Máy đánh bóng viết', - instruction: 'Sử dụng các kỹ thuật chỉnh sửa nội dung nâng cao để cải thiện bài viết của bạn', - }, - }, - generate: 'Đẻ ra', - tryIt: 'Dùng thử', - apply: 'Áp dụng', - instruction: 'Chỉ thị', - title: 'Trình tạo nhắc nhở', - resTitle: 'Lời nhắc được tạo', - loading: 'Sắp xếp ứng dụng cho bạn...', - description: 'Trình tạo lời nhắc sử dụng mô hình được định cấu hình để tối ưu hóa lời nhắc cho chất lượng cao hơn và cấu trúc tốt hơn. Vui lòng viết hướng dẫn rõ ràng và chi tiết.', - overwriteMessage: 'Áp dụng lời nhắc này sẽ ghi đè cấu hình hiện có.', - overwriteTitle: 'Ghi đè cấu hình hiện có?', - versions: 'Phiên bản', - optimizationNote: 'Chú thích tối ưu hóa', - to: 'đến', - version: 'Phiên bản', - idealOutput: 'Đầu ra lý tưởng', - press: 'Báo chí', - optimizePromptTooltip: 'Tối ưu hóa trong trình tạo prompt', - optional: 'Tùy chọn', - insertContext: 'Chèn ngữ cảnh', - instructionPlaceHolderLine3: 'Giọng điệu quá nghiêm khắc, hãy làm cho nó thân thiện hơn.', - dismiss: 'Bỏ qua', - instructionPlaceHolderTitle: 'Mô tả cách bạn muốn cải thiện câu lệnh này. Ví dụ:', - latest: 'Mới nhất', - instructionPlaceHolderLine1: 'Làm cho đầu ra ngắn gọn hơn, giữ lại các điểm chính.', - newNoDataLine1: 'Viết một hướng dẫn trong cột bên trái và nhấp vào Tạo để xem phản hồi.', - idealOutputPlaceholder: 'Mô tả định dạng phản hồi lý tưởng của bạn, độ dài, giọng điệu và yêu cầu về nội dung...', - codeGenInstructionPlaceHolderLine: 'Càng chi tiết phản hồi, chẳng hạn như các loại dữ liệu đầu vào và đầu ra cũng như cách các biến được xử lý, thì việc tạo mã sẽ càng chính xác.', - instructionPlaceHolderLine2: 'Định dạng đầu ra không chính xác, vui lòng tuân thủ nghiêm ngặt định dạng JSON.', - }, - warningMessage: { - timeoutExceeded: 'Kết quả không được hiển thị do hết thời gian chờ. Vui lòng tham khảo nhật ký để thu thập kết quả đầy đủ.', - }, - noResult: 'Đầu ra sẽ được hiển thị ở đây.', -} - -export default translation diff --git a/web/i18n/vi-VN/app-log.json b/web/i18n/vi-VN/app-log.json new file mode 100644 index 0000000000..755efe5b2d --- /dev/null +++ b/web/i18n/vi-VN/app-log.json @@ -0,0 +1,110 @@ +{ + "title": "Nhật ký", + "description": "Nhật ký ghi lại trạng thái hoạt động của ứng dụng, bao gồm đầu vào của người dùng và phản hồi của trí tuệ nhân tạo.", + "dateTimeFormat": "MM/DD/YYYY hh:mm:ss A", + "table": { + "header": { + "updatedTime": "Thời gian cập nhật", + "time": "Thời gian tạo", + "endUser": "Người dùng cuối hoặc tài khoản", + "input": "Đầu vào", + "output": "Đầu ra", + "summary": "Tóm tắt", + "messageCount": "Số lượng tin nhắn", + "userRate": "Đánh giá người dùng", + "adminRate": "Đánh giá quản trị viên", + "startTime": "THỜI GIAN BẮT ĐẦU", + "status": "TRẠNG THÁI", + "runtime": "THỜI GIAN CHẠY", + "tokens": "TOKEN", + "user": "NGƯỜI DÙNG CUỐI HOẶC TÀI KHOẢN", + "version": "PHIÊN BẢN", + "triggered_from": "KÍCH HOẠT BỞI" + }, + "pagination": { + "previous": "Trước", + "next": "Sau" + }, + "empty": { + "noChat": "Chưa có cuộc trò chuyện", + "noOutput": "Không có đầu ra", + "element": { + "title": "Chưa có dữ liệu", + "content": "Quan sát và chú thích các tương tác giữa người dùng cuối và ứng dụng trí tuệ nhân tạo ở đây để liên tục cải thiện độ chính xác của AI. Bạn có thể thử chia sẻ hoặc kiểm tra ứng dụng Web, sau đó quay lại trang này." + } + } + }, + "detail": { + "time": "Thời gian", + "conversationId": "ID cuộc trò chuyện", + "promptTemplate": "Mẫu lời nhắc", + "promptTemplateBeforeChat": "Mẫu lời nhắc trước trò chuyện · Tin nhắn hệ thống", + "annotationTip": "Cải thiện được đánh dấu bởi {{user}}", + "timeConsuming": "", + "second": "giây", + "tokenCost": "Chi phí token", + "loading": "Đang tải", + "operation": { + "like": "Thích", + "dislike": "Không thích", + "addAnnotation": "Thêm chú thích", + "editAnnotation": "Chỉnh sửa chú thích", + "annotationPlaceholder": "Nhập câu trả lời mong muốn từ AI. Điều này sẽ được sử dụng để điều chỉnh mô hình và cải thiện chất lượng sinh văn bản trong tương lai." + }, + "variables": "Biến", + "uploadImages": "Ảnh đã tải lên", + "modelParams": "Thông số mô hình" + }, + "filter": { + "period": { + "today": "Hôm nay", + "last7days": "7 ngày qua", + "last4weeks": "4 tuần qua", + "last3months": "3 tháng qua", + "last12months": "12 tháng qua", + "monthToDate": "Tháng hiện tại", + "quarterToDate": "Quý hiện tại", + "yearToDate": "Năm hiện tại", + "allTime": "Tất cả thời gian", + "custom": "Tùy chỉnh", + "last30days": "30 Ngày Qua" + }, + "annotation": { + "all": "Tất cả", + "annotated": "Đã chú thích ({{count}} mục)", + "not_annotated": "Chưa chú thích" + }, + "sortBy": "Sắp xếp theo:", + "descending": "giảm dần", + "ascending": "tăng dần" + }, + "workflowTitle": "Nhật ký quy trình làm việc", + "workflowSubtitle": "Nhật ký ghi lại hoạt động của Tự động hóa.", + "runDetail": { + "title": "Nhật ký cuộc trò chuyện", + "workflowTitle": "Chi tiết nhật ký", + "fileListDetail": "Chi tiết", + "fileListLabel": "Chi tiết tệp", + "testWithParams": "Kiểm tra với các tham số" + }, + "promptLog": "Nhật ký lời nhắc", + "viewLog": "Xem nhật ký", + "agentLogDetail": { + "toolUsed": "Công cụ đã sử dụng", + "iterations": "Số lần lặp", + "iteration": "Lần lặp", + "finalProcessing": "Xử lý cuối cùng", + "agentMode": "Chế độ đại lý" + }, + "agentLog": "Nhật ký đại lý", + "dateFormat": "MM/DD/YYYY", + "triggerBy": { + "debugging": "Gỡ lỗi", + "appRun": "Ứng dụng web", + "webhook": "Webhook", + "schedule": "Lịch trình", + "plugin": "Tiện ích mở rộng", + "ragPipelineRun": "Chuỗi Xử lý RAG", + "ragPipelineDebugging": "Gỡ lỗi RAG" + } +} diff --git a/web/i18n/vi-VN/app-log.ts b/web/i18n/vi-VN/app-log.ts deleted file mode 100644 index d3f24a4d63..0000000000 --- a/web/i18n/vi-VN/app-log.ts +++ /dev/null @@ -1,112 +0,0 @@ -const translation = { - title: 'Nhật ký', - description: 'Nhật ký ghi lại trạng thái hoạt động của ứng dụng, bao gồm đầu vào của người dùng và phản hồi của trí tuệ nhân tạo.', - dateTimeFormat: 'MM/DD/YYYY hh:mm:ss A', - table: { - header: { - updatedTime: 'Thời gian cập nhật', - time: 'Thời gian tạo', - endUser: 'Người dùng cuối hoặc tài khoản', - input: 'Đầu vào', - output: 'Đầu ra', - summary: 'Tóm tắt', - messageCount: 'Số lượng tin nhắn', - userRate: 'Đánh giá người dùng', - adminRate: 'Đánh giá quản trị viên', - startTime: 'THỜI GIAN BẮT ĐẦU', - status: 'TRẠNG THÁI', - runtime: 'THỜI GIAN CHẠY', - tokens: 'TOKEN', - user: 'NGƯỜI DÙNG CUỐI HOẶC TÀI KHOẢN', - version: 'PHIÊN BẢN', - triggered_from: 'KÍCH HOẠT BỞI', - }, - pagination: { - previous: 'Trước', - next: 'Sau', - }, - empty: { - noChat: 'Chưa có cuộc trò chuyện', - noOutput: 'Không có đầu ra', - element: { - title: 'Chưa có dữ liệu', - content: 'Quan sát và chú thích các tương tác giữa người dùng cuối và ứng dụng trí tuệ nhân tạo ở đây để liên tục cải thiện độ chính xác của AI. Bạn có thể thử chia sẻ hoặc kiểm tra ứng dụng Web, sau đó quay lại trang này.', - }, - }, - }, - detail: { - time: 'Thời gian', - conversationId: 'ID cuộc trò chuyện', - promptTemplate: 'Mẫu lời nhắc', - promptTemplateBeforeChat: 'Mẫu lời nhắc trước trò chuyện · Tin nhắn hệ thống', - annotationTip: 'Cải thiện được đánh dấu bởi {{user}}', - timeConsuming: '', - second: 'giây', - tokenCost: 'Chi phí token', - loading: 'Đang tải', - operation: { - like: 'Thích', - dislike: 'Không thích', - addAnnotation: 'Thêm chú thích', - editAnnotation: 'Chỉnh sửa chú thích', - annotationPlaceholder: 'Nhập câu trả lời mong muốn từ AI. Điều này sẽ được sử dụng để điều chỉnh mô hình và cải thiện chất lượng sinh văn bản trong tương lai.', - }, - variables: 'Biến', - uploadImages: 'Ảnh đã tải lên', - modelParams: 'Thông số mô hình', - }, - filter: { - period: { - today: 'Hôm nay', - last7days: '7 ngày qua', - last4weeks: '4 tuần qua', - last3months: '3 tháng qua', - last12months: '12 tháng qua', - monthToDate: 'Tháng hiện tại', - quarterToDate: 'Quý hiện tại', - yearToDate: 'Năm hiện tại', - allTime: 'Tất cả thời gian', - custom: 'Tùy chỉnh', - last30days: '30 Ngày Qua', - }, - annotation: { - all: 'Tất cả', - annotated: 'Đã chú thích ({{count}} mục)', - not_annotated: 'Chưa chú thích', - }, - sortBy: 'Sắp xếp theo:', - descending: 'giảm dần', - ascending: 'tăng dần', - }, - workflowTitle: 'Nhật ký quy trình làm việc', - workflowSubtitle: 'Nhật ký ghi lại hoạt động của Tự động hóa.', - runDetail: { - title: 'Nhật ký cuộc trò chuyện', - workflowTitle: 'Chi tiết nhật ký', - fileListDetail: 'Chi tiết', - fileListLabel: 'Chi tiết tệp', - testWithParams: 'Kiểm tra với các tham số', - }, - promptLog: 'Nhật ký lời nhắc', - viewLog: 'Xem nhật ký', - agentLogDetail: { - toolUsed: 'Công cụ đã sử dụng', - iterations: 'Số lần lặp', - iteration: 'Lần lặp', - finalProcessing: 'Xử lý cuối cùng', - agentMode: 'Chế độ đại lý', - }, - agentLog: 'Nhật ký đại lý', - dateFormat: 'MM/DD/YYYY', - triggerBy: { - debugging: 'Gỡ lỗi', - appRun: 'Ứng dụng web', - webhook: 'Webhook', - schedule: 'Lịch trình', - plugin: 'Tiện ích mở rộng', - ragPipelineRun: 'Chuỗi Xử lý RAG', - ragPipelineDebugging: 'Gỡ lỗi RAG', - }, -} - -export default translation diff --git a/web/i18n/vi-VN/app-overview.json b/web/i18n/vi-VN/app-overview.json new file mode 100644 index 0000000000..8f3488272d --- /dev/null +++ b/web/i18n/vi-VN/app-overview.json @@ -0,0 +1,187 @@ +{ + "welcome": { + "firstStepTip": "Để bắt đầu,", + "enterKeyTip": "nhập khóa API OpenAI của bạn bên dưới", + "getKeyTip": "Lấy khóa API từ bảng điều khiển OpenAI", + "placeholder": "Khóa API OpenAI của bạn (ví dụ: sk-xxxx)" + }, + "apiKeyInfo": { + "cloud": { + "trial": { + "title": "Bạn đang sử dụng gói dùng thử của {{providerName}}.", + "description": "Gói dùng thử được cung cấp để bạn kiểm tra. Trước khi hết lượt gọi của gói dùng thử, vui lòng thiết lập nhà cung cấp mô hình riêng hoặc mua thêm hạn mức." + }, + "exhausted": { + "title": "Gói dùng thử của bạn đã hết, vui lòng thiết lập khóa API của bạn.", + "description": "Gói dùng thử của bạn đã hết. Vui lòng thiết lập nhà cung cấp mô hình riêng hoặc mua thêm hạn mức." + } + }, + "selfHost": { + "title": { + "row1": "Để bắt đầu,", + "row2": "hãy thiết lập nhà cung cấp mô hình của bạn trước." + } + }, + "callTimes": "Số lần gọi", + "usedToken": "Token đã sử dụng", + "setAPIBtn": "Thiết lập nhà cung cấp mô hình", + "tryCloud": "Hoặc dùng thử phiên bản đám mây của Dify với gói miễn phí" + }, + "overview": { + "title": "Tổng quan", + "appInfo": { + "explanation": "Ứng dụng web AI sẵn sàng sử dụng", + "accessibleAddress": "Địa chỉ công khai", + "preview": "Xem trước", + "regenerate": "Tạo lại", + "regenerateNotice": "Bạn có muốn tạo lại địa chỉ công khai không?", + "preUseReminder": "Vui lòng kích hoạt ứng dụng web trước khi tiếp tục.", + "settings": { + "entry": "Cài đặt", + "title": "Cài đặt ứng dụng web", + "webName": "Tên ứng dụng web", + "webDesc": "Mô tả ứng dụng web", + "webDescTip": "Văn bản này sẽ hiển thị ở phía người dùng, cung cấp hướng dẫn cơ bản về cách sử dụng ứng dụng", + "webDescPlaceholder": "Nhập mô tả của ứng dụng web", + "language": "Ngôn ngữ", + "workflow": { + "title": "Các bước quy trình", + "show": "Hiển thị", + "hide": "Ẩn", + "showDesc": "Hiển thị hoặc ẩn chi tiết dòng công việc trong web app", + "subTitle": "Chi tiết quy trình làm việc" + }, + "chatColorTheme": "Giao diện màu trò chuyện", + "chatColorThemeDesc": "Thiết lập giao diện màu của chatbot", + "chatColorThemeInverted": "Đảo ngược", + "invalidHexMessage": "Giá trị mã màu không hợp lệ", + "invalidPrivacyPolicy": "Liên kết chính sách bảo mật không hợp lệ. Vui lòng sử dụng liên kết hợp lệ bắt đầu bằng http hoặc https", + "more": { + "entry": "Hiển thị thêm cài đặt", + "copyright": "Bản quyền", + "copyRightPlaceholder": "Nhập tên tác giả hoặc tổ chức", + "privacyPolicy": "Chính sách bảo mật", + "privacyPolicyPlaceholder": "Nhập liên kết chính sách bảo mật", + "privacyPolicyTip": "Giúp người dùng hiểu dữ liệu mà ứng dụng thu thập, xem Chính sách bảo mật của Dify.", + "customDisclaimer": "Tuyên bố từ chối trách nhiệm tùy chỉnh", + "customDisclaimerPlaceholder": "Nhập liên kết tuyên bố từ chối trách nhiệm", + "customDisclaimerTip": "Liên kết này sẽ hiển thị ở phía người dùng, cung cấp thông tin về trách nhiệm của ứng dụng", + "copyrightTip": "Hiển thị thông tin bản quyền trong ứng dụng web", + "copyrightTooltip": "Vui lòng nâng cấp lên gói Professional trở lên" + }, + "sso": { + "title": "SSO ứng dụng web", + "description": "Tất cả người dùng được yêu cầu đăng nhập bằng SSO trước khi sử dụng web app", + "tooltip": "Liên hệ với quản trị viên để bật SSO web app", + "label": "Xác thực SSO" + }, + "modalTip": "Cài đặt ứng dụng web phía máy khách." + }, + "embedded": { + "entry": "Nhúng", + "title": "Nhúng vào trang web", + "explanation": "Chọn cách nhúng ứng dụng trò chuyện vào trang web của bạn", + "iframe": "Để thêm ứng dụng trò chuyện vào bất kỳ đâu trên trang web của bạn, hãy thêm iframe này vào mã HTML của bạn.", + "scripts": "Để thêm ứng dụng trò chuyện vào góc dưới bên phải của trang web, thêm mã này vào mã HTML của bạn.", + "chromePlugin": "Cài đặt tiện ích mở rộng Dify Chatbot cho Chrome", + "copied": "Đã sao chép", + "copy": "Sao chép" + }, + "qrcode": { + "title": "Mã QR để chia sẻ", + "scan": "Quét và chia sẻ ứng dụng", + "download": "Tải xuống mã QR" + }, + "customize": { + "way": "cách", + "entry": "Tùy chỉnh", + "title": "Tùy chỉnh ứng dụng web AI", + "explanation": "Bạn có thể tùy chỉnh giao diện của ứng dụng web để phù hợp với kịch bản và phong cách mong muốn.", + "way1": { + "name": "Fork mã nguồn phía client, sửa đổi và triển khai lên Vercel (khuyến nghị)", + "step1": "Fork mã nguồn phía client và sửa đổi", + "step1Tip": "Nhấp vào đây để fork mã nguồn vào tài khoản GitHub của bạn và sửa đổi", + "step1Operation": "Dify-WebClient", + "step2": "Triển khai lên Vercel", + "step2Tip": "Nhấp vào đây để nhập kho lưu trữ vào Vercel và triển khai", + "step2Operation": "Nhập kho lưu trữ", + "step3": "Cấu hình biến môi trường", + "step3Tip": "Thêm các biến môi trường sau vào Vercel" + }, + "way2": { + "name": "Viết mã phía client để gọi API và triển khai lên máy chủ", + "operation": "Tài liệu" + } + }, + "launch": "Phóng", + "enableTooltip": { + "description": "Để kích hoạt tính năng này, vui lòng thêm một nút Nhập Người Dùng vào bảng điều khiển. (Có thể đã tồn tại trong bản nháp, có hiệu lực sau khi xuất bản)", + "learnMore": "Tìm hiểu thêm" + }, + "title": "Ứng dụng web" + }, + "apiInfo": { + "title": "API dịch vụ backend", + "explanation": "Dễ dàng tích hợp vào ứng dụng của bạn", + "accessibleAddress": "Điểm cuối dịch vụ API", + "doc": "Tài liệu tham khảo API" + }, + "status": { + "running": "Đang hoạt động", + "disable": "Đã tắt" + }, + "triggerInfo": { + "title": "Nguyên nhân kích hoạt", + "explanation": "Quản lý kích hoạt quy trình làm việc", + "triggersAdded": "{{count}} Kích hoạt đã được thêm", + "noTriggerAdded": "Chưa thêm trình kích hoạt", + "triggerStatusDescription": "Trạng thái nút kích hoạt sẽ hiển thị ở đây. (Có thể đã tồn tại trong bản nháp, có hiệu lực sau khi xuất bản)", + "learnAboutTriggers": "Tìm hiểu về Các trình kích hoạt" + }, + "disableTooltip": { + "triggerMode": "Tính năng {{feature}} không được hỗ trợ trong chế độ Nút Kích hoạt." + } + }, + "analysis": { + "title": "Phân tích", + "ms": "ms", + "tokenPS": "Token/giây", + "totalMessages": { + "title": "Tổng số tin nhắn", + "explanation": "Số lượng tương tác AI hàng ngày." + }, + "totalConversations": { + "title": "Tổng số cuộc hội thoại", + "explanation": "Số lượng cuộc hội thoại AI hàng ngày; không bao gồm kỹ thuật/gỡ lỗi prompt." + }, + "activeUsers": { + "title": "Người dùng hoạt động", + "explanation": "Số người dùng duy nhất tham gia trò chuyện với AI; không tính việc tạo lại/lặp lại câu hỏi." + }, + "tokenUsage": { + "title": "Sử dụng token", + "explanation": "Phản ánh việc sử dụng mô hình ngôn ngữ hàng ngày cho ứng dụng, hữu ích cho mục đích kiểm soát chi phí.", + "consumed": "Đã sử dụng" + }, + "avgSessionInteractions": { + "title": "Trung bình tương tác mỗi phiên", + "explanation": "Số lần giao tiếp liên tục giữa người dùng và AI; áp dụng cho các ứng dụng dựa trên trò chuyện." + }, + "avgUserInteractions": { + "title": "Trung bình tương tác mỗi người dùng", + "explanation": "Phản ánh tần suất sử dụng hàng ngày của người dùng. Chỉ số này cho biết mức độ gắn kết của người dùng." + }, + "userSatisfactionRate": { + "title": "Tỷ lệ hài lòng của người dùng", + "explanation": "Số lượt thích trên mỗi 1.000 tin nhắn. Chỉ số này cho biết tỷ lệ câu trả lời mà người dùng rất hài lòng." + }, + "avgResponseTime": { + "title": "Thời gian phản hồi trung bình", + "explanation": "Thời gian (ms) để AI xử lý/phản hồi; áp dụng cho các ứng dụng dựa trên văn bản." + }, + "tps": { + "title": "Tốc độ đầu ra token", + "explanation": "Đo lường hiệu suất của LLM. Đếm tốc độ đầu ra token của LLM từ khi bắt đầu yêu cầu đến khi hoàn thành đầu ra." + } + } +} diff --git a/web/i18n/vi-VN/app-overview.ts b/web/i18n/vi-VN/app-overview.ts deleted file mode 100644 index 7c2e51da4e..0000000000 --- a/web/i18n/vi-VN/app-overview.ts +++ /dev/null @@ -1,189 +0,0 @@ -const translation = { - welcome: { - firstStepTip: 'Để bắt đầu,', - enterKeyTip: 'nhập khóa API OpenAI của bạn bên dưới', - getKeyTip: 'Lấy khóa API từ bảng điều khiển OpenAI', - placeholder: 'Khóa API OpenAI của bạn (ví dụ: sk-xxxx)', - }, - apiKeyInfo: { - cloud: { - trial: { - title: 'Bạn đang sử dụng gói dùng thử của {{providerName}}.', - description: 'Gói dùng thử được cung cấp để bạn kiểm tra. Trước khi hết lượt gọi của gói dùng thử, vui lòng thiết lập nhà cung cấp mô hình riêng hoặc mua thêm hạn mức.', - }, - exhausted: { - title: 'Gói dùng thử của bạn đã hết, vui lòng thiết lập khóa API của bạn.', - description: 'Gói dùng thử của bạn đã hết. Vui lòng thiết lập nhà cung cấp mô hình riêng hoặc mua thêm hạn mức.', - }, - }, - selfHost: { - title: { - row1: 'Để bắt đầu,', - row2: 'hãy thiết lập nhà cung cấp mô hình của bạn trước.', - }, - }, - callTimes: 'Số lần gọi', - usedToken: 'Token đã sử dụng', - setAPIBtn: 'Thiết lập nhà cung cấp mô hình', - tryCloud: 'Hoặc dùng thử phiên bản đám mây của Dify với gói miễn phí', - }, - overview: { - title: 'Tổng quan', - appInfo: { - explanation: 'Ứng dụng web AI sẵn sàng sử dụng', - accessibleAddress: 'Địa chỉ công khai', - preview: 'Xem trước', - regenerate: 'Tạo lại', - regenerateNotice: 'Bạn có muốn tạo lại địa chỉ công khai không?', - preUseReminder: 'Vui lòng kích hoạt ứng dụng web trước khi tiếp tục.', - settings: { - entry: 'Cài đặt', - title: 'Cài đặt ứng dụng web', - webName: 'Tên ứng dụng web', - webDesc: 'Mô tả ứng dụng web', - webDescTip: 'Văn bản này sẽ hiển thị ở phía người dùng, cung cấp hướng dẫn cơ bản về cách sử dụng ứng dụng', - webDescPlaceholder: 'Nhập mô tả của ứng dụng web', - language: 'Ngôn ngữ', - workflow: { - title: 'Các bước quy trình', - show: 'Hiển thị', - hide: 'Ẩn', - showDesc: 'Hiển thị hoặc ẩn chi tiết dòng công việc trong web app', - subTitle: 'Chi tiết quy trình làm việc', - }, - chatColorTheme: 'Giao diện màu trò chuyện', - chatColorThemeDesc: 'Thiết lập giao diện màu của chatbot', - chatColorThemeInverted: 'Đảo ngược', - invalidHexMessage: 'Giá trị mã màu không hợp lệ', - invalidPrivacyPolicy: 'Liên kết chính sách bảo mật không hợp lệ. Vui lòng sử dụng liên kết hợp lệ bắt đầu bằng http hoặc https', - more: { - entry: 'Hiển thị thêm cài đặt', - copyright: 'Bản quyền', - copyRightPlaceholder: 'Nhập tên tác giả hoặc tổ chức', - privacyPolicy: 'Chính sách bảo mật', - privacyPolicyPlaceholder: 'Nhập liên kết chính sách bảo mật', - privacyPolicyTip: 'Giúp người dùng hiểu dữ liệu mà ứng dụng thu thập, xem Chính sách bảo mật của Dify.', - customDisclaimer: 'Tuyên bố từ chối trách nhiệm tùy chỉnh', - customDisclaimerPlaceholder: 'Nhập liên kết tuyên bố từ chối trách nhiệm', - customDisclaimerTip: 'Liên kết này sẽ hiển thị ở phía người dùng, cung cấp thông tin về trách nhiệm của ứng dụng', - copyrightTip: 'Hiển thị thông tin bản quyền trong ứng dụng web', - copyrightTooltip: 'Vui lòng nâng cấp lên gói Professional trở lên', - }, - sso: { - title: 'SSO ứng dụng web', - description: 'Tất cả người dùng được yêu cầu đăng nhập bằng SSO trước khi sử dụng web app', - tooltip: 'Liên hệ với quản trị viên để bật SSO web app', - label: 'Xác thực SSO', - }, - modalTip: 'Cài đặt ứng dụng web phía máy khách.', - }, - embedded: { - entry: 'Nhúng', - title: 'Nhúng vào trang web', - explanation: 'Chọn cách nhúng ứng dụng trò chuyện vào trang web của bạn', - iframe: 'Để thêm ứng dụng trò chuyện vào bất kỳ đâu trên trang web của bạn, hãy thêm iframe này vào mã HTML của bạn.', - scripts: 'Để thêm ứng dụng trò chuyện vào góc dưới bên phải của trang web, thêm mã này vào mã HTML của bạn.', - chromePlugin: 'Cài đặt tiện ích mở rộng Dify Chatbot cho Chrome', - copied: 'Đã sao chép', - copy: 'Sao chép', - }, - qrcode: { - title: 'Mã QR để chia sẻ', - scan: 'Quét và chia sẻ ứng dụng', - download: 'Tải xuống mã QR', - }, - customize: { - way: 'cách', - entry: 'Tùy chỉnh', - title: 'Tùy chỉnh ứng dụng web AI', - explanation: 'Bạn có thể tùy chỉnh giao diện của ứng dụng web để phù hợp với kịch bản và phong cách mong muốn.', - way1: { - name: 'Fork mã nguồn phía client, sửa đổi và triển khai lên Vercel (khuyến nghị)', - step1: 'Fork mã nguồn phía client và sửa đổi', - step1Tip: 'Nhấp vào đây để fork mã nguồn vào tài khoản GitHub của bạn và sửa đổi', - step1Operation: 'Dify-WebClient', - step2: 'Triển khai lên Vercel', - step2Tip: 'Nhấp vào đây để nhập kho lưu trữ vào Vercel và triển khai', - step2Operation: 'Nhập kho lưu trữ', - step3: 'Cấu hình biến môi trường', - step3Tip: 'Thêm các biến môi trường sau vào Vercel', - }, - way2: { - name: 'Viết mã phía client để gọi API và triển khai lên máy chủ', - operation: 'Tài liệu', - }, - }, - launch: 'Phóng', - enableTooltip: { - description: 'Để kích hoạt tính năng này, vui lòng thêm một nút Nhập Người Dùng vào bảng điều khiển. (Có thể đã tồn tại trong bản nháp, có hiệu lực sau khi xuất bản)', - learnMore: 'Tìm hiểu thêm', - }, - title: 'Ứng dụng web', - }, - apiInfo: { - title: 'API dịch vụ backend', - explanation: 'Dễ dàng tích hợp vào ứng dụng của bạn', - accessibleAddress: 'Điểm cuối dịch vụ API', - doc: 'Tài liệu tham khảo API', - }, - status: { - running: 'Đang hoạt động', - disable: 'Đã tắt', - }, - triggerInfo: { - title: 'Nguyên nhân kích hoạt', - explanation: 'Quản lý kích hoạt quy trình làm việc', - triggersAdded: '{{count}} Kích hoạt đã được thêm', - noTriggerAdded: 'Chưa thêm trình kích hoạt', - triggerStatusDescription: 'Trạng thái nút kích hoạt sẽ hiển thị ở đây. (Có thể đã tồn tại trong bản nháp, có hiệu lực sau khi xuất bản)', - learnAboutTriggers: 'Tìm hiểu về Các trình kích hoạt', - }, - disableTooltip: { - triggerMode: 'Tính năng {{feature}} không được hỗ trợ trong chế độ Nút Kích hoạt.', - }, - }, - analysis: { - title: 'Phân tích', - ms: 'ms', - tokenPS: 'Token/giây', - totalMessages: { - title: 'Tổng số tin nhắn', - explanation: 'Số lượng tương tác AI hàng ngày.', - }, - totalConversations: { - title: 'Tổng số cuộc hội thoại', - explanation: 'Số lượng cuộc hội thoại AI hàng ngày; không bao gồm kỹ thuật/gỡ lỗi prompt.', - }, - activeUsers: { - title: 'Người dùng hoạt động', - explanation: 'Số người dùng duy nhất tham gia trò chuyện với AI; không tính việc tạo lại/lặp lại câu hỏi.', - }, - tokenUsage: { - title: 'Sử dụng token', - explanation: 'Phản ánh việc sử dụng mô hình ngôn ngữ hàng ngày cho ứng dụng, hữu ích cho mục đích kiểm soát chi phí.', - consumed: 'Đã sử dụng', - }, - avgSessionInteractions: { - title: 'Trung bình tương tác mỗi phiên', - explanation: 'Số lần giao tiếp liên tục giữa người dùng và AI; áp dụng cho các ứng dụng dựa trên trò chuyện.', - }, - avgUserInteractions: { - title: 'Trung bình tương tác mỗi người dùng', - explanation: 'Phản ánh tần suất sử dụng hàng ngày của người dùng. Chỉ số này cho biết mức độ gắn kết của người dùng.', - }, - userSatisfactionRate: { - title: 'Tỷ lệ hài lòng của người dùng', - explanation: 'Số lượt thích trên mỗi 1.000 tin nhắn. Chỉ số này cho biết tỷ lệ câu trả lời mà người dùng rất hài lòng.', - }, - avgResponseTime: { - title: 'Thời gian phản hồi trung bình', - explanation: 'Thời gian (ms) để AI xử lý/phản hồi; áp dụng cho các ứng dụng dựa trên văn bản.', - }, - tps: { - title: 'Tốc độ đầu ra token', - explanation: 'Đo lường hiệu suất của LLM. Đếm tốc độ đầu ra token của LLM từ khi bắt đầu yêu cầu đến khi hoàn thành đầu ra.', - }, - }, -} - -export default translation diff --git a/web/i18n/vi-VN/app.json b/web/i18n/vi-VN/app.json new file mode 100644 index 0000000000..1e9268a14d --- /dev/null +++ b/web/i18n/vi-VN/app.json @@ -0,0 +1,345 @@ +{ + "createApp": "TẠO ỨNG DỤNG", + "types": { + "all": "Tất cả", + "chatbot": "Chatbot", + "agent": "Tác nhân", + "workflow": "Quy trình", + "completion": "Hoàn thành", + "advanced": "Dòng trò chuyện", + "basic": "Cơ bản" + }, + "duplicate": "Sao chép", + "duplicateTitle": "Sao chép ứng dụng", + "export": "Xuất DSL", + "exportFailed": "Xuất DSL thất bại.", + "importDSL": "Nhập tệp DSL", + "createFromConfigFile": "Tạo từ tệp DSL", + "deleteAppConfirmTitle": "Xóa ứng dụng này?", + "deleteAppConfirmContent": "Việc xóa ứng dụng là không thể hoàn tác. Người dùng sẽ không thể truy cập vào ứng dụng của bạn nữa và tất cả cấu hình cũng như nhật ký nhắc sẽ bị xóa vĩnh viễn.", + "appDeleted": "Ứng dụng đã bị xóa", + "appDeleteFailed": "Không thể xóa ứng dụng", + "join": "Tham gia cộng đồng", + "communityIntro": "Thảo luận với các thành viên nhóm, người đóng góp và nhà phát triển trên các kênh khác nhau.", + "roadmap": "Xem lộ trình của chúng tôi", + "newApp": { + "startFromBlank": "Tạo mới", + "startFromTemplate": "Tạo từ mẫu", + "workflowWarning": "Hiện đang trong phiên bản beta", + "captionName": "Biểu tượng và tên ứng dụng", + "appNamePlaceholder": "Đặt tên cho ứng dụng của bạn", + "captionDescription": "Mô tả", + "appDescriptionPlaceholder": "Nhập mô tả của ứng dụng", + "useTemplate": "Sử dụng mẫu này", + "previewDemo": "Xem trước demo", + "chatApp": "Trợ lý", + "chatAppIntro": "Tôi muốn xây dựng một ứng dụng trò chuyện. Ứng dụng này sử dụng định dạng hỏi đáp, cho phép nhiều vòng trò chuyện liên tục.", + "agentAssistant": "Trợ lý tác nhân mới", + "completeApp": "Máy tạo văn bản", + "completeAppIntro": "Tôi muốn tạo một ứng dụng tạo văn bản chất lượng cao dựa trên gợi ý, như tạo bài viết, tóm tắt, dịch thuật và nhiều hơn nữa.", + "showTemplates": "Tôi muốn chọn từ mẫu", + "hideTemplates": "Quay lại chế độ lựa chọn", + "Create": "Tạo", + "Cancel": "Hủy", + "nameNotEmpty": "Tên không được để trống", + "appTemplateNotSelected": "Vui lòng chọn một mẫu", + "appTypeRequired": "Vui lòng chọn loại ứng dụng", + "appCreated": "Ứng dụng đã được tạo", + "appCreateFailed": "Không thể tạo ứng dụng", + "Confirm": "Xác nhận", + "caution": "Thận trọng", + "appCreateDSLErrorPart1": "Một sự khác biệt đáng kể trong các phiên bản DSL đã được phát hiện. Buộc nhập có thể khiến ứng dụng bị trục trặc.", + "appCreateDSLErrorPart2": "Bạn có muốn tiếp tục không?", + "appCreateDSLErrorTitle": "Phiên bản không tương thích", + "appCreateDSLErrorPart3": "Phiên bản DSL ứng dụng hiện tại:", + "appCreateDSLWarning": "Phạt cảnh cáo: Sự khác biệt về phiên bản DSL có thể ảnh hưởng đến một số tính năng nhất định", + "appCreateDSLErrorPart4": "Phiên bản DSL được hệ thống hỗ trợ:", + "forBeginners": "Các loại ứng dụng cơ bản hơn", + "chooseAppType": "Chọn loại ứng dụng", + "chatbotShortDescription": "Chatbot dựa trên LLM với thiết lập đơn giản", + "noTemplateFoundTip": "Hãy thử tìm kiếm bằng các từ khóa khác nhau.", + "workflowShortDescription": "Luồng tác nhân cho tự động hóa thông minh", + "optional": "Tùy chọn", + "advancedShortDescription": "Quy trình làm việc cho các cuộc đối thoại nhiều lượt phức tạp với bộ nhớ", + "workflowUserDescription": "Xây dựng trực quan quy trình AI tự động bằng kéo thả đơn giản.", + "foundResults": "{{count}} Kết quả", + "chatbotUserDescription": "Nhanh chóng xây dựng chatbot dựa trên LLM với cấu hình đơn giản. Bạn có thể chuyển sang Chatflow sau.", + "agentUserDescription": "Một tác nhân thông minh có khả năng suy luận lặp đi lặp lại và sử dụng công cụ tự động để đạt được mục tiêu nhiệm vụ.", + "noIdeaTip": "Không có ý tưởng? Kiểm tra các mẫu của chúng tôi", + "advancedUserDescription": "Quy trình với tính năng bộ nhớ bổ sung và giao diện chatbot.", + "forAdvanced": "DÀNH CHO NGƯỜI DÙNG NÂNG CAO", + "foundResult": "{{count}} Kết quả", + "agentShortDescription": "Quy trình nâng cao cho hội thoại nhiều lượt", + "noTemplateFound": "Không tìm thấy mẫu", + "noAppsFound": "Không tìm thấy ứng dụng nào", + "learnMore": "Tìm hiểu thêm", + "completionShortDescription": "Trợ lý AI cho các tác vụ tạo văn bản", + "completionUserDescription": "Nhanh chóng xây dựng trợ lý AI cho các tác vụ tạo văn bản với cấu hình đơn giản.", + "dropDSLToCreateApp": "Kéo tệp DSL vào đây để tạo ứng dụng", + "import": "Nhập khẩu" + }, + "editApp": "Chỉnh sửa thông tin", + "editAppTitle": "Chỉnh sửa thông tin ứng dụng", + "editDone": "Thông tin ứng dụng đã được cập nhật", + "editFailed": "Không thể cập nhật thông tin ứng dụng", + "iconPicker": { + "ok": "Đồng ý", + "cancel": "Hủy", + "emoji": "Biểu tượng cảm xúc", + "image": "Hình ảnh" + }, + "switch": "Chuyển sang quản lý quy trình", + "switchTipStart": "Một bản sao ứng dụng mới sẽ được tạo và chuyển sang quản lý quy trình. Bản sao mới sẽ ", + "switchTip": "không thể", + "switchTipEnd": " chuyển lại quản lý cơ bản.", + "switchLabel": "Bản sao ứng dụng sẽ được tạo", + "removeOriginal": "Xóa ứng dụng gốc", + "switchStart": "Bắt đầu chuyển", + "typeSelector": { + "all": "Tất cả loại", + "chatbot": "Chatbot", + "agent": "Tác nhân", + "workflow": "Quy trình", + "completion": "Hoàn thành", + "advanced": "Dòng trò chuyện" + }, + "tracing": { + "title": "Theo dõi hiệu suất ứng dụng", + "description": "Cấu hình nhà cung cấp LLMOps bên thứ ba và theo dõi hiệu suất ứng dụng.", + "config": "Cấu hình", + "collapse": "Thu gọn", + "expand": "Mở rộng", + "tracing": "Theo dõi", + "disabled": "Đã tắt", + "disabledTip": "Vui lòng cấu hình nhà cung cấp trước", + "enabled": "Đang hoạt động", + "tracingDescription": "Ghi lại toàn bộ ngữ cảnh thực thi ứng dụng, bao gồm các cuộc gọi LLM, ngữ cảnh, lời nhắc, yêu cầu HTTP và nhiều hơn nữa, đến một nền tảng theo dõi của bên thứ ba.", + "configProviderTitle": { + "configured": "Đã cấu hình", + "notConfigured": "Cấu hình nhà cung cấp để bật theo dõi", + "moreProvider": "Thêm nhà cung cấp" + }, + "arize": { + "title": "Arize", + "description": "Khả năng quan sát LLM cấp doanh nghiệp, đánh giá trực tuyến và ngoại tuyến, giám sát và thử nghiệm—được hỗ trợ bởi OpenTelemetry. Được thiết kế đặc biệt cho các ứng dụng dựa trên LLM và tác nhân." + }, + "phoenix": { + "title": "Phoenix", + "description": "Nền tảng mã nguồn mở và dựa trên OpenTelemetry cho khả năng quan sát, đánh giá, kỹ thuật prompt và thử nghiệm cho quy trình làm việc và tác nhân LLM của bạn." + }, + "langsmith": { + "title": "LangSmith", + "description": "Nền tảng phát triển tất cả trong một cho mọi bước của vòng đời ứng dụng được hỗ trợ bởi LLM." + }, + "langfuse": { + "title": "Langfuse", + "description": "Theo dõi, đánh giá, quản lý lời nhắc và số liệu để gỡ lỗi và cải thiện ứng dụng LLM của bạn." + }, + "inUse": "Đang sử dụng", + "configProvider": { + "title": "Cấu hình ", + "placeholder": "Nhập {{key}} của bạn", + "project": "Dự án", + "publicKey": "Khóa công khai", + "secretKey": "Khóa bí mật", + "viewDocsLink": "Xem tài liệu {{key}}", + "removeConfirmTitle": "Xóa cấu hình {{key}}?", + "removeConfirmContent": "Cấu hình hiện tại đang được sử dụng, việc xóa nó sẽ tắt tính năng Theo dõi.", + "username": "Tên người dùng", + "password": "Mật khẩu", + "clientId": "ID Khách Hàng OAuth", + "databricksHost": "URL Workspace của Databricks", + "trackingUri": "URI theo dõi", + "clientSecret": "Bí mật Khách hàng OAuth", + "personalAccessToken": "Mã truy cập cá nhân (cũ)", + "experimentId": "Mã thí nghiệm" + }, + "view": "Cảnh", + "opik": { + "description": "Opik là một nền tảng mã nguồn mở để đánh giá, thử nghiệm và giám sát các ứng dụng LLM.", + "title": "Opik" + }, + "weave": { + "title": "Dệt", + "description": "Weave là một nền tảng mã nguồn mở để đánh giá, thử nghiệm và giám sát các ứng dụng LLM." + }, + "aliyun": { + "title": "Giám sát Đám mây", + "description": "Nền tảng quan sát được quản lý hoàn toàn và không cần bảo trì do Alibaba Cloud cung cấp, cho phép giám sát, theo dõi và đánh giá các ứng dụng Dify ngay lập tức." + }, + "mlflow": { + "title": "MLflow", + "description": "Nền tảng LLMOps mã nguồn mở cho theo dõi thử nghiệm, khả năng quan sát và đánh giá, để xây dựng ứng dụng AI/LLM với sự tự tin." + }, + "databricks": { + "title": "Databricks", + "description": "Databricks cung cấp MLflow được quản lý hoàn toàn với quản trị mạnh mẽ và bảo mật để lưu trữ dữ liệu theo dõi." + }, + "tencent": { + "title": "Tencent APM", + "description": "Giám sát hiệu suất ứng dụng của Tencent cung cấp khả năng theo dõi toàn diện và phân tích đa chiều cho các ứng dụng LLM." + } + }, + "answerIcon": { + "description": "Có nên sử dụng biểu tượng web app để thay thế 🤖 trong ứng dụng được chia sẻ hay không", + "descriptionInExplore": "Có nên sử dụng biểu tượng web app để thay thế 🤖 trong Khám phá hay không", + "title": "Sử dụng biểu tượng web app để thay thế 🤖" + }, + "importFromDSLFile": "Từ tệp DSL", + "importFromDSL": "Nhập từ DSL", + "importFromDSLUrlPlaceholder": "Dán liên kết DSL vào đây", + "dslUploader": { + "button": "Kéo và thả tệp, hoặc", + "browse": "Duyệt" + }, + "importFromDSLUrl": "Từ URL", + "mermaid": { + "handDrawn": "Vẽ tay", + "classic": "Cổ điển" + }, + "openInExplore": "Mở trong Khám phá", + "newAppFromTemplate": { + "sidebar": { + "Recommended": "Khuyến cáo", + "Assistant": "Phó", + "Writing": "Văn", + "Workflow": "Quy trình làm việc", + "Agent": "Người đại lý", + "Programming": "Chương trình", + "HR": "HR" + }, + "searchAllTemplate": "Tìm kiếm tất cả các mẫu...", + "byCategories": "THEO DANH MỤC" + }, + "showMyCreatedAppsOnly": "Chỉ hiển thị ứng dụng do tôi tạo", + "appSelector": { + "params": "THÔNG SỐ ỨNG DỤNG", + "placeholder": "Chọn một ứng dụng...", + "noParams": "Không cần thông số", + "label": "Ứng dụng" + }, + "structOutput": { + "configure": "Cấu hình", + "required": "Yêu cầu", + "notConfiguredTip": "Đầu ra có cấu trúc chưa được cấu hình.", + "modelNotSupported": "Mô hình không được hỗ trợ", + "LLMResponse": "Phản hồi của LLM", + "structured": "Cấu trúc", + "structuredTip": "Đầu ra có cấu trúc là một tính năng đảm bảo rằng mô hình sẽ luôn tạo ra các phản hồi tuân theo sơ đồ JSON mà bạn cung cấp.", + "modelNotSupportedTip": "Mô hình hiện tại không hỗ trợ tính năng này và tự động bị hạ cấp xuống việc tiêm lệnh.", + "moreFillTip": "Hiển thị tối đa 10 cấp độ lồng ghép" + }, + "accessItemsDescription": { + "anyone": "Mọi người đều có thể truy cập ứng dụng web.", + "specific": "Chỉ những nhóm hoặc thành viên cụ thể mới có thể truy cập ứng dụng web.", + "organization": "Bất kỳ ai trong tổ chức đều có thể truy cập ứng dụng web.", + "external": "Chỉ những người dùng bên ngoài đã xác thực mới có thể truy cập vào ứng dụng Web." + }, + "accessControlDialog": { + "accessItems": { + "anyone": "Ai có liên kết", + "specific": "Các nhóm hoặc thành viên cụ thể", + "organization": "Chỉ các thành viên trong doanh nghiệp", + "external": "Người dùng bên ngoài được xác thực" + }, + "operateGroupAndMember": { + "searchPlaceholder": "Tìm kiếm nhóm và thành viên", + "allMembers": "Tất cả các thành viên", + "expand": "Mở rộng", + "noResult": "Không có kết quả" + }, + "title": "Kiểm soát truy cập ứng dụng web", + "description": "Cài đặt quyền truy cập ứng dụng web", + "accessLabel": "Ai có quyền truy cập", + "groups_one": "{{count}} NHÓM", + "groups_other": "{{count}} NHÓM", + "members_one": "{{count}} THÀNH VIÊN", + "members_other": "{{count}} THÀNH VIÊN", + "noGroupsOrMembers": "Không có nhóm hoặc thành viên nào được chọn", + "webAppSSONotEnabledTip": "Vui lòng liên hệ với quản trị viên doanh nghiệp để cấu hình phương thức xác thực ứng dụng web.", + "updateSuccess": "Cập nhật thành công" + }, + "publishApp": { + "title": "Ai có thể truy cập ứng dụng web", + "notSet": "Chưa đặt", + "notSetDesc": "Hiện tại không ai có thể truy cập ứng dụng web. Vui lòng thiết lập quyền truy cập." + }, + "noAccessPermission": "Không được phép truy cập ứng dụng web", + "accessControl": "Kiểm soát truy cập ứng dụng web", + "maxActiveRequestsPlaceholder": "Nhập 0 để không giới hạn", + "maxActiveRequests": "Số yêu cầu đồng thời tối đa", + "maxActiveRequestsTip": "Số yêu cầu hoạt động đồng thời tối đa cho mỗi ứng dụng (0 để không giới hạn)", + "gotoAnything": { + "actions": { + "searchPlugins": "Tìm kiếm Plugin", + "searchPluginsDesc": "Tìm kiếm và điều hướng đến plugin của bạn", + "searchKnowledgeBases": "Tìm kiếm cơ sở kiến thức", + "searchApplicationsDesc": "Tìm kiếm và điều hướng đến các ứng dụng của bạn", + "searchWorkflowNodesHelp": "Tính năng này chỉ hoạt động khi xem quy trình làm việc. Điều hướng đến quy trình làm việc trước.", + "searchWorkflowNodes": "Tìm kiếm các nút quy trình làm việc", + "searchApplications": "Tìm kiếm ứng dụng", + "searchWorkflowNodesDesc": "Tìm và chuyển đến các nút trong quy trình làm việc hiện tại theo tên hoặc loại", + "searchKnowledgeBasesDesc": "Tìm kiếm và điều hướng đến cơ sở kiến thức của bạn", + "themeCategoryTitle": "Chủ đề", + "themeSystem": "Chủ đề hệ thống", + "themeDarkDesc": "Sử dụng giao diện tối", + "themeLight": "Chủ đề sáng", + "runTitle": "Lệnh", + "languageCategoryTitle": "Ngôn ngữ", + "themeLightDesc": "Sử dụng giao diện sáng", + "themeDark": "Chủ đề tối", + "languageChangeDesc": "Thay đổi ngôn ngữ giao diện", + "languageCategoryDesc": "Chuyển đổi ngôn ngữ giao diện", + "themeSystemDesc": "Theo giao diện của hệ điều hành của bạn", + "runDesc": "Chạy các lệnh nhanh (chủ đề, ngôn ngữ, ... )", + "themeCategoryDesc": "Chuyển đổi giao diện ứng dụng", + "slashDesc": "Thực hiện các lệnh như /theme, /lang", + "feedbackDesc": "Thảo luận phản hồi cộng đồng mở", + "accountDesc": "Đi đến trang tài khoản", + "docDesc": "Mở tài liệu trợ giúp", + "communityDesc": "Mở cộng đồng Discord", + "zenTitle": "Zen Mode", + "zenDesc": "Toggle canvas focus mode" + }, + "emptyState": { + "noWorkflowNodesFound": "Không tìm thấy nút quy trình làm việc", + "noKnowledgeBasesFound": "Không tìm thấy cơ sở kiến thức", + "noPluginsFound": "Không tìm thấy plugin", + "noAppsFound": "Không tìm thấy ứng dụng nào", + "tryDifferentTerm": "Thử từ khóa tìm kiếm khác hoặc xóa bộ lọc {{mode}}", + "trySpecificSearch": "Thử {{shortcuts}} để tìm kiếm cụ thể" + }, + "groups": { + "plugins": "Plugin", + "workflowNodes": "Nút quy trình làm việc", + "knowledgeBases": "Cơ sở kiến thức", + "apps": "Ứng dụng", + "commands": "Lệnh" + }, + "searchTemporarilyUnavailable": "Tìm kiếm tạm thời không khả dụng", + "clearToSearchAll": "Xóa @ để tìm kiếm tất cả", + "noResults": "Không tìm thấy kết quả", + "searching": "Tìm kiếm...", + "searchPlaceholder": "Tìm kiếm hoặc nhập @ cho các lệnh...", + "searchTitle": "Tìm kiếm bất cứ thứ gì", + "searchFailed": "Tìm kiếm không thành công", + "useAtForSpecific": "Sử dụng @ cho các loại cụ thể", + "someServicesUnavailable": "Một số dịch vụ tìm kiếm không khả dụng", + "servicesUnavailableMessage": "Một số dịch vụ tìm kiếm có thể gặp sự cố. Thử lại trong giây lát.", + "searchHint": "Bắt đầu nhập để tìm kiếm mọi thứ ngay lập tức", + "commandHint": "Nhập @ để duyệt theo danh mục", + "selectSearchType": "Chọn nội dung để tìm kiếm", + "resultCount": "{{count}} kết quả", + "resultCount_other": "{{count}} kết quả", + "inScope": "trong {{scope}}s", + "tryDifferentSearch": "Thử một cụm từ tìm kiếm khác", + "noMatchingCommands": "Không tìm thấy lệnh phù hợp", + "slashHint": "Gõ / để xem tất cả các lệnh có sẵn", + "selectToNavigate": "Chọn để điều hướng", + "startTyping": "Bắt đầu gõ để tìm kiếm", + "pressEscToClose": "Nhấn ESC để đóng", + "tips": "Nhấn ↑↓ để duyệt" + }, + "noUserInputNode": "Thiếu nút nhập liệu của người dùng", + "notPublishedYet": "Ứng dụng chưa được phát hành" +} diff --git a/web/i18n/vi-VN/app.ts b/web/i18n/vi-VN/app.ts deleted file mode 100644 index fa9ec7db94..0000000000 --- a/web/i18n/vi-VN/app.ts +++ /dev/null @@ -1,351 +0,0 @@ -const translation = { - createApp: 'TẠO ỨNG DỤNG', - types: { - all: 'Tất cả', - chatbot: 'Chatbot', - agent: 'Tác nhân', - workflow: 'Quy trình', - completion: 'Hoàn thành', - advanced: 'Dòng trò chuyện', - basic: 'Cơ bản', - }, - duplicate: 'Sao chép', - duplicateTitle: 'Sao chép ứng dụng', - export: 'Xuất DSL', - exportFailed: 'Xuất DSL thất bại.', - importDSL: 'Nhập tệp DSL', - createFromConfigFile: 'Tạo từ tệp DSL', - deleteAppConfirmTitle: 'Xóa ứng dụng này?', - deleteAppConfirmContent: - 'Việc xóa ứng dụng là không thể hoàn tác. Người dùng sẽ không thể truy cập vào ứng dụng của bạn nữa và tất cả cấu hình cũng như nhật ký nhắc sẽ bị xóa vĩnh viễn.', - appDeleted: 'Ứng dụng đã bị xóa', - appDeleteFailed: 'Không thể xóa ứng dụng', - join: 'Tham gia cộng đồng', - communityIntro: - 'Thảo luận với các thành viên nhóm, người đóng góp và nhà phát triển trên các kênh khác nhau.', - roadmap: 'Xem lộ trình của chúng tôi', - newApp: { - startFromBlank: 'Tạo mới', - startFromTemplate: 'Tạo từ mẫu', - workflowWarning: 'Hiện đang trong phiên bản beta', - captionName: 'Biểu tượng và tên ứng dụng', - appNamePlaceholder: 'Đặt tên cho ứng dụng của bạn', - captionDescription: 'Mô tả', - appDescriptionPlaceholder: 'Nhập mô tả của ứng dụng', - useTemplate: 'Sử dụng mẫu này', - previewDemo: 'Xem trước demo', - chatApp: 'Trợ lý', - chatAppIntro: - 'Tôi muốn xây dựng một ứng dụng trò chuyện. Ứng dụng này sử dụng định dạng hỏi đáp, cho phép nhiều vòng trò chuyện liên tục.', - agentAssistant: 'Trợ lý tác nhân mới', - completeApp: 'Máy tạo văn bản', - completeAppIntro: - 'Tôi muốn tạo một ứng dụng tạo văn bản chất lượng cao dựa trên gợi ý, như tạo bài viết, tóm tắt, dịch thuật và nhiều hơn nữa.', - showTemplates: 'Tôi muốn chọn từ mẫu', - hideTemplates: 'Quay lại chế độ lựa chọn', - Create: 'Tạo', - Cancel: 'Hủy', - nameNotEmpty: 'Tên không được để trống', - appTemplateNotSelected: 'Vui lòng chọn một mẫu', - appTypeRequired: 'Vui lòng chọn loại ứng dụng', - appCreated: 'Ứng dụng đã được tạo', - appCreateFailed: 'Không thể tạo ứng dụng', - Confirm: 'Xác nhận', - caution: 'Thận trọng', - appCreateDSLErrorPart1: 'Một sự khác biệt đáng kể trong các phiên bản DSL đã được phát hiện. Buộc nhập có thể khiến ứng dụng bị trục trặc.', - appCreateDSLErrorPart2: 'Bạn có muốn tiếp tục không?', - appCreateDSLErrorTitle: 'Phiên bản không tương thích', - appCreateDSLErrorPart3: 'Phiên bản DSL ứng dụng hiện tại:', - appCreateDSLWarning: 'Phạt cảnh cáo: Sự khác biệt về phiên bản DSL có thể ảnh hưởng đến một số tính năng nhất định', - appCreateDSLErrorPart4: 'Phiên bản DSL được hệ thống hỗ trợ:', - forBeginners: 'Các loại ứng dụng cơ bản hơn', - chooseAppType: 'Chọn loại ứng dụng', - chatbotShortDescription: 'Chatbot dựa trên LLM với thiết lập đơn giản', - noTemplateFoundTip: 'Hãy thử tìm kiếm bằng các từ khóa khác nhau.', - workflowShortDescription: 'Luồng tác nhân cho tự động hóa thông minh', - optional: 'Tùy chọn', - advancedShortDescription: 'Quy trình làm việc cho các cuộc đối thoại nhiều lượt phức tạp với bộ nhớ', - workflowUserDescription: 'Xây dựng trực quan quy trình AI tự động bằng kéo thả đơn giản.', - foundResults: '{{count}} Kết quả', - chatbotUserDescription: 'Nhanh chóng xây dựng chatbot dựa trên LLM với cấu hình đơn giản. Bạn có thể chuyển sang Chatflow sau.', - agentUserDescription: 'Một tác nhân thông minh có khả năng suy luận lặp đi lặp lại và sử dụng công cụ tự động để đạt được mục tiêu nhiệm vụ.', - noIdeaTip: 'Không có ý tưởng? Kiểm tra các mẫu của chúng tôi', - advancedUserDescription: 'Quy trình với tính năng bộ nhớ bổ sung và giao diện chatbot.', - forAdvanced: 'DÀNH CHO NGƯỜI DÙNG NÂNG CAO', - foundResult: '{{count}} Kết quả', - agentShortDescription: 'Quy trình nâng cao cho hội thoại nhiều lượt', - noTemplateFound: 'Không tìm thấy mẫu', - noAppsFound: 'Không tìm thấy ứng dụng nào', - learnMore: 'Tìm hiểu thêm', - completionShortDescription: 'Trợ lý AI cho các tác vụ tạo văn bản', - completionUserDescription: 'Nhanh chóng xây dựng trợ lý AI cho các tác vụ tạo văn bản với cấu hình đơn giản.', - dropDSLToCreateApp: 'Kéo tệp DSL vào đây để tạo ứng dụng', - import: 'Nhập khẩu', - }, - editApp: 'Chỉnh sửa thông tin', - editAppTitle: 'Chỉnh sửa thông tin ứng dụng', - editDone: 'Thông tin ứng dụng đã được cập nhật', - editFailed: 'Không thể cập nhật thông tin ứng dụng', - iconPicker: { - ok: 'Đồng ý', - cancel: 'Hủy', - emoji: 'Biểu tượng cảm xúc', - image: 'Hình ảnh', - }, - switch: 'Chuyển sang quản lý quy trình', - switchTipStart: 'Một bản sao ứng dụng mới sẽ được tạo và chuyển sang quản lý quy trình. Bản sao mới sẽ ', - switchTip: 'không thể', - switchTipEnd: ' chuyển lại quản lý cơ bản.', - switchLabel: 'Bản sao ứng dụng sẽ được tạo', - removeOriginal: 'Xóa ứng dụng gốc', - switchStart: 'Bắt đầu chuyển', - typeSelector: { - all: 'Tất cả loại', - chatbot: 'Chatbot', - agent: 'Tác nhân', - workflow: 'Quy trình', - completion: 'Hoàn thành', - advanced: 'Dòng trò chuyện', - }, - tracing: { - title: 'Theo dõi hiệu suất ứng dụng', - description: 'Cấu hình nhà cung cấp LLMOps bên thứ ba và theo dõi hiệu suất ứng dụng.', - config: 'Cấu hình', - collapse: 'Thu gọn', - expand: 'Mở rộng', - tracing: 'Theo dõi', - disabled: 'Đã tắt', - disabledTip: 'Vui lòng cấu hình nhà cung cấp trước', - enabled: 'Đang hoạt động', - tracingDescription: 'Ghi lại toàn bộ ngữ cảnh thực thi ứng dụng, bao gồm các cuộc gọi LLM, ngữ cảnh, lời nhắc, yêu cầu HTTP và nhiều hơn nữa, đến một nền tảng theo dõi của bên thứ ba.', - configProviderTitle: { - configured: 'Đã cấu hình', - notConfigured: 'Cấu hình nhà cung cấp để bật theo dõi', - moreProvider: 'Thêm nhà cung cấp', - }, - arize: { - title: 'Arize', - description: 'Khả năng quan sát LLM cấp doanh nghiệp, đánh giá trực tuyến và ngoại tuyến, giám sát và thử nghiệm—được hỗ trợ bởi OpenTelemetry. Được thiết kế đặc biệt cho các ứng dụng dựa trên LLM và tác nhân.', - }, - phoenix: { - title: 'Phoenix', - description: 'Nền tảng mã nguồn mở và dựa trên OpenTelemetry cho khả năng quan sát, đánh giá, kỹ thuật prompt và thử nghiệm cho quy trình làm việc và tác nhân LLM của bạn.', - }, - langsmith: { - title: 'LangSmith', - description: 'Nền tảng phát triển tất cả trong một cho mọi bước của vòng đời ứng dụng được hỗ trợ bởi LLM.', - }, - langfuse: { - title: 'Langfuse', - description: 'Theo dõi, đánh giá, quản lý lời nhắc và số liệu để gỡ lỗi và cải thiện ứng dụng LLM của bạn.', - }, - inUse: 'Đang sử dụng', - configProvider: { - title: 'Cấu hình ', - placeholder: 'Nhập {{key}} của bạn', - project: 'Dự án', - publicKey: 'Khóa công khai', - secretKey: 'Khóa bí mật', - viewDocsLink: 'Xem tài liệu {{key}}', - removeConfirmTitle: 'Xóa cấu hình {{key}}?', - removeConfirmContent: 'Cấu hình hiện tại đang được sử dụng, việc xóa nó sẽ tắt tính năng Theo dõi.', - username: 'Tên người dùng', - password: 'Mật khẩu', - clientId: 'ID Khách Hàng OAuth', - databricksHost: 'URL Workspace của Databricks', - trackingUri: 'URI theo dõi', - clientSecret: 'Bí mật Khách hàng OAuth', - personalAccessToken: 'Mã truy cập cá nhân (cũ)', - experimentId: 'Mã thí nghiệm', - }, - view: 'Cảnh', - opik: { - description: 'Opik là một nền tảng mã nguồn mở để đánh giá, thử nghiệm và giám sát các ứng dụng LLM.', - title: 'Opik', - }, - weave: { - title: 'Dệt', - description: 'Weave là một nền tảng mã nguồn mở để đánh giá, thử nghiệm và giám sát các ứng dụng LLM.', - }, - aliyun: { - title: 'Giám sát Đám mây', - description: 'Nền tảng quan sát được quản lý hoàn toàn và không cần bảo trì do Alibaba Cloud cung cấp, cho phép giám sát, theo dõi và đánh giá các ứng dụng Dify ngay lập tức.', - }, - mlflow: { - title: 'MLflow', - description: 'Nền tảng LLMOps mã nguồn mở cho theo dõi thử nghiệm, khả năng quan sát và đánh giá, để xây dựng ứng dụng AI/LLM với sự tự tin.', - }, - databricks: { - title: 'Databricks', - description: 'Databricks cung cấp MLflow được quản lý hoàn toàn với quản trị mạnh mẽ và bảo mật để lưu trữ dữ liệu theo dõi.', - }, - tencent: { - title: 'Tencent APM', - description: 'Giám sát hiệu suất ứng dụng của Tencent cung cấp khả năng theo dõi toàn diện và phân tích đa chiều cho các ứng dụng LLM.', - }, - }, - answerIcon: { - description: 'Có nên sử dụng biểu tượng web app để thay thế 🤖 trong ứng dụng được chia sẻ hay không', - descriptionInExplore: 'Có nên sử dụng biểu tượng web app để thay thế 🤖 trong Khám phá hay không', - title: 'Sử dụng biểu tượng web app để thay thế 🤖', - }, - importFromDSLFile: 'Từ tệp DSL', - importFromDSL: 'Nhập từ DSL', - importFromDSLUrlPlaceholder: 'Dán liên kết DSL vào đây', - dslUploader: { - button: 'Kéo và thả tệp, hoặc', - browse: 'Duyệt', - }, - importFromDSLUrl: 'Từ URL', - mermaid: { - handDrawn: 'Vẽ tay', - classic: 'Cổ điển', - }, - openInExplore: 'Mở trong Khám phá', - newAppFromTemplate: { - sidebar: { - Recommended: 'Khuyến cáo', - Assistant: 'Phó', - Writing: 'Văn', - Workflow: 'Quy trình làm việc', - Agent: 'Người đại lý', - Programming: 'Chương trình', - HR: 'HR', - }, - searchAllTemplate: 'Tìm kiếm tất cả các mẫu...', - byCategories: 'THEO DANH MỤC', - }, - showMyCreatedAppsOnly: 'Chỉ hiển thị ứng dụng do tôi tạo', - appSelector: { - params: 'THÔNG SỐ ỨNG DỤNG', - placeholder: 'Chọn một ứng dụng...', - noParams: 'Không cần thông số', - label: 'Ứng dụng', - }, - structOutput: { - configure: 'Cấu hình', - required: 'Yêu cầu', - notConfiguredTip: 'Đầu ra có cấu trúc chưa được cấu hình.', - modelNotSupported: 'Mô hình không được hỗ trợ', - LLMResponse: 'Phản hồi của LLM', - structured: 'Cấu trúc', - structuredTip: 'Đầu ra có cấu trúc là một tính năng đảm bảo rằng mô hình sẽ luôn tạo ra các phản hồi tuân theo sơ đồ JSON mà bạn cung cấp.', - modelNotSupportedTip: 'Mô hình hiện tại không hỗ trợ tính năng này và tự động bị hạ cấp xuống việc tiêm lệnh.', - moreFillTip: 'Hiển thị tối đa 10 cấp độ lồng ghép', - }, - accessItemsDescription: { - anyone: 'Mọi người đều có thể truy cập ứng dụng web.', - specific: 'Chỉ những nhóm hoặc thành viên cụ thể mới có thể truy cập ứng dụng web.', - organization: 'Bất kỳ ai trong tổ chức đều có thể truy cập ứng dụng web.', - external: 'Chỉ những người dùng bên ngoài đã xác thực mới có thể truy cập vào ứng dụng Web.', - }, - accessControlDialog: { - accessItems: { - anyone: 'Ai có liên kết', - specific: 'Các nhóm hoặc thành viên cụ thể', - organization: 'Chỉ các thành viên trong doanh nghiệp', - external: 'Người dùng bên ngoài được xác thực', - }, - operateGroupAndMember: { - searchPlaceholder: 'Tìm kiếm nhóm và thành viên', - allMembers: 'Tất cả các thành viên', - expand: 'Mở rộng', - noResult: 'Không có kết quả', - }, - title: 'Kiểm soát truy cập ứng dụng web', - description: 'Cài đặt quyền truy cập ứng dụng web', - accessLabel: 'Ai có quyền truy cập', - groups_one: '{{count}} NHÓM', - groups_other: '{{count}} NHÓM', - members_one: '{{count}} THÀNH VIÊN', - members_other: '{{count}} THÀNH VIÊN', - noGroupsOrMembers: 'Không có nhóm hoặc thành viên nào được chọn', - webAppSSONotEnabledTip: 'Vui lòng liên hệ với quản trị viên doanh nghiệp để cấu hình phương thức xác thực ứng dụng web.', - updateSuccess: 'Cập nhật thành công', - }, - publishApp: { - title: 'Ai có thể truy cập ứng dụng web', - notSet: 'Chưa đặt', - notSetDesc: 'Hiện tại không ai có thể truy cập ứng dụng web. Vui lòng thiết lập quyền truy cập.', - }, - noAccessPermission: 'Không được phép truy cập ứng dụng web', - accessControl: 'Kiểm soát truy cập ứng dụng web', - maxActiveRequestsPlaceholder: 'Nhập 0 để không giới hạn', - maxActiveRequests: 'Số yêu cầu đồng thời tối đa', - maxActiveRequestsTip: 'Số yêu cầu hoạt động đồng thời tối đa cho mỗi ứng dụng (0 để không giới hạn)', - gotoAnything: { - actions: { - searchPlugins: 'Tìm kiếm Plugin', - searchPluginsDesc: 'Tìm kiếm và điều hướng đến plugin của bạn', - searchKnowledgeBases: 'Tìm kiếm cơ sở kiến thức', - searchApplicationsDesc: 'Tìm kiếm và điều hướng đến các ứng dụng của bạn', - searchWorkflowNodesHelp: 'Tính năng này chỉ hoạt động khi xem quy trình làm việc. Điều hướng đến quy trình làm việc trước.', - searchWorkflowNodes: 'Tìm kiếm các nút quy trình làm việc', - searchApplications: 'Tìm kiếm ứng dụng', - searchWorkflowNodesDesc: 'Tìm và chuyển đến các nút trong quy trình làm việc hiện tại theo tên hoặc loại', - searchKnowledgeBasesDesc: 'Tìm kiếm và điều hướng đến cơ sở kiến thức của bạn', - themeCategoryTitle: 'Chủ đề', - themeSystem: 'Chủ đề hệ thống', - themeDarkDesc: 'Sử dụng giao diện tối', - themeLight: 'Chủ đề sáng', - runTitle: 'Lệnh', - languageCategoryTitle: 'Ngôn ngữ', - themeLightDesc: 'Sử dụng giao diện sáng', - themeDark: 'Chủ đề tối', - languageChangeDesc: 'Thay đổi ngôn ngữ giao diện', - languageCategoryDesc: 'Chuyển đổi ngôn ngữ giao diện', - themeSystemDesc: 'Theo giao diện của hệ điều hành của bạn', - runDesc: 'Chạy các lệnh nhanh (chủ đề, ngôn ngữ, ... )', - themeCategoryDesc: 'Chuyển đổi giao diện ứng dụng', - slashDesc: 'Thực hiện các lệnh như /theme, /lang', - feedbackDesc: 'Thảo luận phản hồi cộng đồng mở', - accountDesc: 'Đi đến trang tài khoản', - docDesc: 'Mở tài liệu trợ giúp', - communityDesc: 'Mở cộng đồng Discord', - zenTitle: 'Zen Mode', - zenDesc: 'Toggle canvas focus mode', - }, - emptyState: { - noWorkflowNodesFound: 'Không tìm thấy nút quy trình làm việc', - noKnowledgeBasesFound: 'Không tìm thấy cơ sở kiến thức', - noPluginsFound: 'Không tìm thấy plugin', - noAppsFound: 'Không tìm thấy ứng dụng nào', - tryDifferentTerm: 'Thử từ khóa tìm kiếm khác hoặc xóa bộ lọc {{mode}}', - trySpecificSearch: 'Thử {{shortcuts}} để tìm kiếm cụ thể', - }, - groups: { - plugins: 'Plugin', - workflowNodes: 'Nút quy trình làm việc', - knowledgeBases: 'Cơ sở kiến thức', - apps: 'Ứng dụng', - commands: 'Lệnh', - }, - searchTemporarilyUnavailable: 'Tìm kiếm tạm thời không khả dụng', - clearToSearchAll: 'Xóa @ để tìm kiếm tất cả', - noResults: 'Không tìm thấy kết quả', - searching: 'Tìm kiếm...', - searchPlaceholder: 'Tìm kiếm hoặc nhập @ cho các lệnh...', - searchTitle: 'Tìm kiếm bất cứ thứ gì', - searchFailed: 'Tìm kiếm không thành công', - useAtForSpecific: 'Sử dụng @ cho các loại cụ thể', - someServicesUnavailable: 'Một số dịch vụ tìm kiếm không khả dụng', - servicesUnavailableMessage: 'Một số dịch vụ tìm kiếm có thể gặp sự cố. Thử lại trong giây lát.', - searchHint: 'Bắt đầu nhập để tìm kiếm mọi thứ ngay lập tức', - commandHint: 'Nhập @ để duyệt theo danh mục', - selectSearchType: 'Chọn nội dung để tìm kiếm', - resultCount: '{{count}} kết quả', - resultCount_other: '{{count}} kết quả', - inScope: 'trong {{scope}}s', - tryDifferentSearch: 'Thử một cụm từ tìm kiếm khác', - noMatchingCommands: 'Không tìm thấy lệnh phù hợp', - slashHint: 'Gõ / để xem tất cả các lệnh có sẵn', - selectToNavigate: 'Chọn để điều hướng', - startTyping: 'Bắt đầu gõ để tìm kiếm', - pressEscToClose: 'Nhấn ESC để đóng', - tips: 'Nhấn ↑↓ để duyệt', - }, - noUserInputNode: 'Thiếu nút nhập liệu của người dùng', - notPublishedYet: 'Ứng dụng chưa được phát hành', -} - -export default translation diff --git a/web/i18n/vi-VN/billing.json b/web/i18n/vi-VN/billing.json new file mode 100644 index 0000000000..06a33c76b5 --- /dev/null +++ b/web/i18n/vi-VN/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "Kế hoạch Hiện tại", + "upgradeBtn": { + "plain": "Nâng cấp Kế hoạch", + "encourage": "Nâng cấp Ngay", + "encourageShort": "Nâng cấp" + }, + "viewBilling": "Quản lý thanh toán và đăng ký", + "buyPermissionDeniedTip": "Vui lòng liên hệ với quản trị viên doanh nghiệp của bạn để đăng ký", + "plansCommon": { + "yearlyTip": "Nhận 2 tháng miễn phí khi đăng ký hàng năm!", + "mostPopular": "Phổ biến nhất", + "planRange": { + "monthly": "Hàng tháng", + "yearly": "Hàng năm" + }, + "month": "tháng", + "year": "năm", + "save": "Tiết kiệm ", + "free": "Miễn phí", + "currentPlan": "Kế hoạch Hiện tại", + "contractSales": "Liên hệ bộ phận bán hàng", + "contractOwner": "Liên hệ quản lý nhóm", + "startForFree": "Bắt đầu miễn phí", + "contactSales": "Liên hệ Bán hàng", + "talkToSales": "Nói chuyện với Bộ phận Bán hàng", + "modelProviders": "Nhà cung cấp Mô hình", + "buildApps": "Xây dựng Ứng dụng", + "vectorSpace": "Không gian Vector", + "vectorSpaceTooltip": "Không gian Vector là hệ thống bộ nhớ dài hạn cần thiết cho LLMs để hiểu dữ liệu của bạn.", + "documentProcessingPriority": "Ưu tiên Xử lý Tài liệu", + "documentProcessingPriorityTip": "Để có mức độ ưu tiên xử lý tài liệu cao hơn, vui lòng nâng cấp gói của bạn.", + "documentProcessingPriorityUpgrade": "Xử lý nhiều dữ liệu với độ chính xác cao và tốc độ nhanh hơn.", + "priority": { + "standard": "Tiêu chuẩn", + "priority": "Ưu tiên", + "top-priority": "Ưu tiên Cao nhất" + }, + "logsHistory": "Lịch sử Nhật ký", + "customTools": "Công cụ Tùy chỉnh", + "unavailable": "Không có sẵn", + "days": "ngày", + "unlimited": "Không giới hạn", + "support": "Hỗ trợ", + "supportItems": { + "communityForums": "Diễn đàn cộng đồng", + "emailSupport": "Hỗ trợ qua email", + "priorityEmail": "Hỗ trợ qua email & chat ưu tiên", + "logoChange": "Thay đổi Logo", + "SSOAuthentication": "Xác thực SSO", + "personalizedSupport": "Hỗ trợ cá nhân hóa", + "dedicatedAPISupport": "Hỗ trợ API dành riêng", + "customIntegration": "Tích hợp và hỗ trợ tùy chỉnh", + "ragAPIRequest": "Yêu cầu API RAG", + "bulkUpload": "Tải lên tài liệu hàng loạt", + "agentMode": "Chế độ Đại lý", + "workflow": "Quy trình làm việc", + "llmLoadingBalancing": "Cân bằng tải LLM", + "llmLoadingBalancingTooltip": "Thêm nhiều khóa API vào mô hình, vượt qua giới hạn tốc độ API một cách hiệu quả." + }, + "comingSoon": "Sắp ra mắt", + "member": "Thành viên", + "memberAfter": "Thành viên", + "messageRequest": { + "title": "Số Lượng Tin Nhắn", + "tooltip": "Hạn mức triệu hồi tin nhắn cho các kế hoạch sử dụng mô hình OpenAI (ngoại trừ gpt4). Các tin nhắn vượt quá giới hạn sẽ sử dụng Khóa API OpenAI của bạn.", + "titlePerMonth": "{{count,number}} tin nhắn/tháng" + }, + "annotatedResponse": { + "title": "Hạn Mức Quota Phản hồi Đã được Ghi chú", + "tooltip": "Chỉnh sửa và ghi chú thủ công các phản hồi cung cấp khả năng trả lời câu hỏi chất lượng cao có thể tùy chỉnh cho các ứng dụng. (Chỉ áp dụng trong các ứng dụng trò chuyện)" + }, + "ragAPIRequestTooltip": "Đề cập đến số lượng cuộc gọi API triệu hồi chỉ khả năng xử lý cơ sở kiến thức của Dify.", + "receiptInfo": "Chỉ chủ nhóm và quản trị viên nhóm có thể đăng ký và xem thông tin thanh toán", + "annotationQuota": "Hạn ngạch chú thích", + "priceTip": "mỗi không gian làm việc/", + "documentsTooltip": "Hạn ngạch số lượng tài liệu được nhập từ Nguồn Dữ liệu Kiến thức.", + "apiRateLimitTooltip": "Giới hạn tần suất API áp dụng cho tất cả các yêu cầu được thực hiện thông qua API Dify, bao gồm tạo văn bản, cuộc trò chuyện, thực thi quy trình làm việc và xử lý tài liệu.", + "teamMember_one": "{{count,number}} thành viên trong nhóm", + "apiRateLimit": "Giới hạn tần suất API", + "annualBilling": "Hóa đơn hàng năm", + "cloud": "Dịch vụ đám mây", + "documentsRequestQuota": "{{count,number}}/phút Giới Hạn Tỷ Lệ Yêu Cầu Kiến Thức", + "self": "Tự lưu trữ", + "comparePlanAndFeatures": "So sánh các kế hoạch & tính năng", + "freeTrialTip": "dùng thử miễn phí 200 cuộc gọi OpenAI.", + "freeTrialTipPrefix": "Đăng ký và nhận một", + "unlimitedApiRate": "Không giới hạn tỷ lệ API", + "teamWorkspace": "{{count,number}} Không gian làm việc của Đội", + "teamMember_other": "{{count,number}} thành viên trong nhóm", + "documents": "{{count,number}} Tài liệu Kiến thức", + "getStarted": "Bắt đầu", + "apiRateLimitUnit": "{{count,number}}", + "freeTrialTipSuffix": "Không cần thẻ tín dụng", + "documentsRequestQuotaTooltip": "Chỉ định tổng số hành động mà một không gian làm việc có thể thực hiện mỗi phút trong cơ sở tri thức, bao gồm tạo mới tập dữ liệu, xóa, cập nhật, tải tài liệu lên, thay đổi, lưu trữ và truy vấn cơ sở tri thức. Chỉ số này được sử dụng để đánh giá hiệu suất của các yêu cầu cơ sở tri thức. Ví dụ, nếu một người dùng Sandbox thực hiện 10 lần kiểm tra liên tiếp trong một phút, không gian làm việc của họ sẽ bị hạn chế tạm thời không thực hiện các hành động sau trong phút tiếp theo: tạo mới tập dữ liệu, xóa, cập nhật và tải tài liệu lên hoặc thay đổi.", + "startBuilding": "Bắt đầu xây dựng", + "taxTipSecond": "Nếu khu vực của bạn không có yêu cầu thuế áp dụng, sẽ không có thuế xuất hiện trong quá trình thanh toán của bạn và bạn sẽ không bị tính bất kỳ khoản phí bổ sung nào trong suốt thời gian đăng ký.", + "taxTip": "Tất cả giá đăng ký (hàng tháng/hàng năm) chưa bao gồm các loại thuế áp dụng (ví dụ: VAT, thuế bán hàng).", + "triggerEvents": { + "unlimited": "Sự kiện Kích hoạt Không giới hạn", + "tooltip": "Số lượng sự kiện tự động kích hoạt quy trình làm việc thông qua Plugin, Lịch trình hoặc Webhook.", + "sandbox": "{{count,number}} Kích hoạt Sự kiện", + "professional": "{{count,number}} Sự kiện kích hoạt/tháng" + }, + "workflowExecution": { + "faster": "Thực hiện quy trình làm việc nhanh hơn", + "priority": "Thực thi Quy trình Làm việc Ưu tiên", + "tooltip": "Ưu tiên và tốc độ hàng đợi thực thi quy trình làm việc.", + "standard": "Thực thi Quy trình Làm việc Chuẩn" + }, + "startNodes": { + "unlimited": "Kích hoạt/quy trình làm việc không giới hạn", + "limited": "Tối đa {{count}} kích hoạt/quy trình" + }, + "title": { + "plans": "kế hoạch", + "description": "Chọn gói phù hợp nhất với nhu cầu của đội bạn." + } + }, + "plans": { + "sandbox": { + "name": "Hộp Cát", + "description": "Thử nghiệm miễn phí 200 lần GPT", + "for": "Dùng thử miễn phí các tính năng cốt lõi" + }, + "professional": { + "name": "Chuyên nghiệp", + "description": "Dành cho cá nhân và các nhóm nhỏ để mở khóa nhiều sức mạnh với giá cả phải chăng.", + "for": "Dành cho các nhà phát triển độc lập/nhóm nhỏ" + }, + "team": { + "name": "Nhóm", + "description": "Hợp tác mà không giới hạn và tận hưởng hiệu suất hạng nhất.", + "for": "Dành cho các đội nhóm vừa" + }, + "enterprise": { + "name": "Doanh nghiệp", + "description": "Nhận toàn bộ khả năng và hỗ trợ cho các hệ thống quan trọng cho nhiệm vụ quy mô lớn.", + "includesTitle": "Tất cả trong kế hoạch Nhóm, cộng thêm:", + "features": [ + "Giải pháp triển khai mở rộng cấp doanh nghiệp", + "Giấy phép thương mại", + "Tính năng Doanh nghiệp Độc quyền", + "Nhiều Không Gian Làm Việc & Quản Lý Doanh Nghiệp", + "Đăng nhập một lần", + "Các SLA đã được đàm phán bởi các Đối tác Dify", + "Bảo mật & Kiểm soát Nâng cao", + "Cập nhật và Bảo trì bởi Dify chính thức", + "Hỗ trợ Kỹ thuật Chuyên nghiệp" + ], + "price": "Tùy chỉnh", + "for": "Dành cho các đội lớn", + "priceTip": "Chỉ thanh toán hàng năm", + "btnText": "Liên hệ với Bộ phận Bán hàng" + }, + "community": { + "features": [ + "Tất cả các Tính năng Cốt lõi được Phát hành Dưới Kho Lưu trữ Công khai", + "Không gian làm việc đơn", + "Tuân thủ Giấy phép Mã nguồn mở Dify" + ], + "description": "Dành cho người dùng cá nhân, nhóm nhỏ hoặc các dự án phi thương mại", + "name": "Cộng đồng", + "btnText": "Bắt đầu với Cộng đồng", + "price": "Miễn phí", + "for": "Dành cho người dùng cá nhân, nhóm nhỏ hoặc các dự án phi thương mại", + "includesTitle": "Tính năng miễn phí:" + }, + "premium": { + "features": [ + "Độ tin cậy tự quản lý bởi các nhà cung cấp đám mây khác nhau", + "Không gian làm việc đơn", + "Tùy Chỉnh Logo & Thương Hiệu Ứng Dụng Web", + "Hỗ trợ Email & Trò chuyện Ưu tiên" + ], + "comingSoon": "Hỗ trợ Microsoft Azure & Google Cloud Sẽ Đến Sớm", + "priceTip": "Dựa trên Thị trường Đám mây", + "btnText": "Nhận Premium trong", + "description": "Dành cho các tổ chức và nhóm vừa", + "price": "Có thể mở rộng", + "includesTitle": "Mọi thứ từ Cộng đồng, cộng thêm:", + "for": "Dành cho các tổ chức và nhóm vừa", + "name": "Cao cấp" + } + }, + "vectorSpace": { + "fullTip": "Không gian Vector đã đầy.", + "fullSolution": "Nâng cấp kế hoạch của bạn để có thêm không gian." + }, + "apps": { + "contactUs": "Liên hệ với chúng tôi", + "fullTip2": "Đã đạt giới hạn kế hoạch", + "fullTip1des": "Bạn đã đạt đến giới hạn xây dựng ứng dụng trên kế hoạch này.", + "fullTip1": "Nâng cấp để tạo thêm ứng dụng", + "fullTip2des": "Chúng tôi khuyên bạn nên xóa các ứng dụng không hoạt động để giải phóng dung lượng, hoặc liên hệ với chúng tôi." + }, + "annotatedResponse": { + "fullTipLine1": "Nâng cấp kế hoạch của bạn để", + "fullTipLine2": "ghi chú thêm cuộc trò chuyện.", + "quotaTitle": "Hạn Mức Quota Phản hồi Đã được Ghi chú" + }, + "usagePage": { + "documentsUploadQuota": "Hạn ngạch tải lên tài liệu", + "annotationQuota": "Hạn ngạch chú thích", + "vectorSpaceTooltip": "Các tài liệu với chế độ lập chỉ mục Chất lượng Cao sẽ tiêu tốn tài nguyên Lưu trữ Dữ liệu Kiến thức. Khi Lưu trữ Dữ liệu Kiến thức đạt giới hạn, các tài liệu mới sẽ không được tải lên.", + "teamMembers": "Các thành viên trong nhóm", + "vectorSpace": "Lưu trữ dữ liệu kiến thức", + "buildApps": "Xây dựng ứng dụng", + "triggerEvents": "Các sự kiện kích hoạt", + "perMonth": "mỗi tháng", + "resetsIn": "Đặt lại sau {{count,number}} ngày" + }, + "teamMembers": "Các thành viên trong nhóm", + "triggerLimitModal": { + "upgrade": "Nâng cấp", + "dismiss": "Đóng", + "usageTitle": "SỰ KIỆN KÍCH HOẠT", + "description": "Bạn đã đạt đến giới hạn kích hoạt sự kiện quy trình cho gói này.", + "title": "Nâng cấp để mở khóa thêm nhiều sự kiện kích hoạt" + }, + "viewBillingTitle": "Thanh toán và Đăng ký", + "viewBillingDescription": "Quản lý phương thức thanh toán, hóa đơn và thay đổi đăng ký", + "viewBillingAction": "Quản lý", + "upgrade": { + "uploadMultiplePages": { + "title": "Nâng cấp để tải lên nhiều tài liệu cùng lúc", + "description": "Bạn đã đạt đến giới hạn tải lên — chỉ có thể chọn và tải lên một tài liệu trong một lần với gói hiện tại của bạn." + }, + "uploadMultipleFiles": { + "title": "Nâng cấp để mở khóa tải lên nhiều tài liệu", + "description": "Tải lên nhiều tài liệu cùng lúc để tiết kiệm thời gian và nâng cao hiệu quả." + }, + "addChunks": { + "title": "Nâng cấp để tiếp tục thêm các phần", + "description": "Bạn đã đạt đến giới hạn thêm phần cho gói này." + } + } +} diff --git a/web/i18n/vi-VN/billing.ts b/web/i18n/vi-VN/billing.ts deleted file mode 100644 index 405c35b703..0000000000 --- a/web/i18n/vi-VN/billing.ts +++ /dev/null @@ -1,221 +0,0 @@ -const translation = { - currentPlan: 'Kế hoạch Hiện tại', - upgradeBtn: { - plain: 'Nâng cấp Kế hoạch', - encourage: 'Nâng cấp Ngay', - encourageShort: 'Nâng cấp', - }, - viewBilling: 'Quản lý thanh toán và đăng ký', - buyPermissionDeniedTip: 'Vui lòng liên hệ với quản trị viên doanh nghiệp của bạn để đăng ký', - plansCommon: { - yearlyTip: 'Nhận 2 tháng miễn phí khi đăng ký hàng năm!', - mostPopular: 'Phổ biến nhất', - planRange: { - monthly: 'Hàng tháng', - yearly: 'Hàng năm', - }, - month: 'tháng', - year: 'năm', - save: 'Tiết kiệm ', - free: 'Miễn phí', - currentPlan: 'Kế hoạch Hiện tại', - contractSales: 'Liên hệ bộ phận bán hàng', - contractOwner: 'Liên hệ quản lý nhóm', - startForFree: 'Bắt đầu miễn phí', - contactSales: 'Liên hệ Bán hàng', - talkToSales: 'Nói chuyện với Bộ phận Bán hàng', - modelProviders: 'Nhà cung cấp Mô hình', - buildApps: 'Xây dựng Ứng dụng', - vectorSpace: 'Không gian Vector', - vectorSpaceTooltip: 'Không gian Vector là hệ thống bộ nhớ dài hạn cần thiết cho LLMs để hiểu dữ liệu của bạn.', - documentProcessingPriority: 'Ưu tiên Xử lý Tài liệu', - documentProcessingPriorityTip: 'Để có mức độ ưu tiên xử lý tài liệu cao hơn, vui lòng nâng cấp gói của bạn.', - documentProcessingPriorityUpgrade: 'Xử lý nhiều dữ liệu với độ chính xác cao và tốc độ nhanh hơn.', - priority: { - 'standard': 'Tiêu chuẩn', - 'priority': 'Ưu tiên', - 'top-priority': 'Ưu tiên Cao nhất', - }, - logsHistory: 'Lịch sử Nhật ký', - customTools: 'Công cụ Tùy chỉnh', - unavailable: 'Không có sẵn', - days: 'ngày', - unlimited: 'Không giới hạn', - support: 'Hỗ trợ', - supportItems: { - communityForums: 'Diễn đàn cộng đồng', - emailSupport: 'Hỗ trợ qua email', - priorityEmail: 'Hỗ trợ qua email & chat ưu tiên', - logoChange: 'Thay đổi Logo', - SSOAuthentication: 'Xác thực SSO', - personalizedSupport: 'Hỗ trợ cá nhân hóa', - dedicatedAPISupport: 'Hỗ trợ API dành riêng', - customIntegration: 'Tích hợp và hỗ trợ tùy chỉnh', - ragAPIRequest: 'Yêu cầu API RAG', - bulkUpload: 'Tải lên tài liệu hàng loạt', - agentMode: 'Chế độ Đại lý', - workflow: 'Quy trình làm việc', - llmLoadingBalancing: 'Cân bằng tải LLM', - llmLoadingBalancingTooltip: 'Thêm nhiều khóa API vào mô hình, vượt qua giới hạn tốc độ API một cách hiệu quả.', - }, - comingSoon: 'Sắp ra mắt', - member: 'Thành viên', - memberAfter: 'Thành viên', - messageRequest: { - title: 'Số Lượng Tin Nhắn', - tooltip: 'Hạn mức triệu hồi tin nhắn cho các kế hoạch sử dụng mô hình OpenAI (ngoại trừ gpt4). Các tin nhắn vượt quá giới hạn sẽ sử dụng Khóa API OpenAI của bạn.', - titlePerMonth: '{{count,number}} tin nhắn/tháng', - }, - annotatedResponse: { - title: 'Hạn Mức Quota Phản hồi Đã được Ghi chú', - tooltip: 'Chỉnh sửa và ghi chú thủ công các phản hồi cung cấp khả năng trả lời câu hỏi chất lượng cao có thể tùy chỉnh cho các ứng dụng. (Chỉ áp dụng trong các ứng dụng trò chuyện)', - }, - ragAPIRequestTooltip: 'Đề cập đến số lượng cuộc gọi API triệu hồi chỉ khả năng xử lý cơ sở kiến thức của Dify.', - receiptInfo: 'Chỉ chủ nhóm và quản trị viên nhóm có thể đăng ký và xem thông tin thanh toán', - annotationQuota: 'Hạn ngạch chú thích', - priceTip: 'mỗi không gian làm việc/', - documentsTooltip: 'Hạn ngạch số lượng tài liệu được nhập từ Nguồn Dữ liệu Kiến thức.', - apiRateLimitTooltip: 'Giới hạn tần suất API áp dụng cho tất cả các yêu cầu được thực hiện thông qua API Dify, bao gồm tạo văn bản, cuộc trò chuyện, thực thi quy trình làm việc và xử lý tài liệu.', - teamMember_one: '{{count,number}} thành viên trong nhóm', - apiRateLimit: 'Giới hạn tần suất API', - annualBilling: 'Hóa đơn hàng năm', - cloud: 'Dịch vụ đám mây', - documentsRequestQuota: '{{count,number}}/phút Giới Hạn Tỷ Lệ Yêu Cầu Kiến Thức', - self: 'Tự lưu trữ', - comparePlanAndFeatures: 'So sánh các kế hoạch & tính năng', - freeTrialTip: 'dùng thử miễn phí 200 cuộc gọi OpenAI.', - freeTrialTipPrefix: 'Đăng ký và nhận một', - unlimitedApiRate: 'Không giới hạn tỷ lệ API', - teamWorkspace: '{{count,number}} Không gian làm việc của Đội', - teamMember_other: '{{count,number}} thành viên trong nhóm', - documents: '{{count,number}} Tài liệu Kiến thức', - getStarted: 'Bắt đầu', - apiRateLimitUnit: '{{count,number}}', - freeTrialTipSuffix: 'Không cần thẻ tín dụng', - documentsRequestQuotaTooltip: 'Chỉ định tổng số hành động mà một không gian làm việc có thể thực hiện mỗi phút trong cơ sở tri thức, bao gồm tạo mới tập dữ liệu, xóa, cập nhật, tải tài liệu lên, thay đổi, lưu trữ và truy vấn cơ sở tri thức. Chỉ số này được sử dụng để đánh giá hiệu suất của các yêu cầu cơ sở tri thức. Ví dụ, nếu một người dùng Sandbox thực hiện 10 lần kiểm tra liên tiếp trong một phút, không gian làm việc của họ sẽ bị hạn chế tạm thời không thực hiện các hành động sau trong phút tiếp theo: tạo mới tập dữ liệu, xóa, cập nhật và tải tài liệu lên hoặc thay đổi.', - startBuilding: 'Bắt đầu xây dựng', - taxTipSecond: 'Nếu khu vực của bạn không có yêu cầu thuế áp dụng, sẽ không có thuế xuất hiện trong quá trình thanh toán của bạn và bạn sẽ không bị tính bất kỳ khoản phí bổ sung nào trong suốt thời gian đăng ký.', - taxTip: 'Tất cả giá đăng ký (hàng tháng/hàng năm) chưa bao gồm các loại thuế áp dụng (ví dụ: VAT, thuế bán hàng).', - triggerEvents: { - unlimited: 'Sự kiện Kích hoạt Không giới hạn', - tooltip: 'Số lượng sự kiện tự động kích hoạt quy trình làm việc thông qua Plugin, Lịch trình hoặc Webhook.', - sandbox: '{{count,number}} Kích hoạt Sự kiện', - professional: '{{count,number}} Sự kiện kích hoạt/tháng', - }, - workflowExecution: { - faster: 'Thực hiện quy trình làm việc nhanh hơn', - priority: 'Thực thi Quy trình Làm việc Ưu tiên', - tooltip: 'Ưu tiên và tốc độ hàng đợi thực thi quy trình làm việc.', - standard: 'Thực thi Quy trình Làm việc Chuẩn', - }, - startNodes: { - unlimited: 'Kích hoạt/quy trình làm việc không giới hạn', - limited: 'Tối đa {{count}} kích hoạt/quy trình', - }, - title: { - plans: 'kế hoạch', - description: 'Chọn gói phù hợp nhất với nhu cầu của đội bạn.', - }, - }, - plans: { - sandbox: { - name: 'Hộp Cát', - description: 'Thử nghiệm miễn phí 200 lần GPT', - for: 'Dùng thử miễn phí các tính năng cốt lõi', - }, - professional: { - name: 'Chuyên nghiệp', - description: 'Dành cho cá nhân và các nhóm nhỏ để mở khóa nhiều sức mạnh với giá cả phải chăng.', - for: 'Dành cho các nhà phát triển độc lập/nhóm nhỏ', - }, - team: { - name: 'Nhóm', - description: 'Hợp tác mà không giới hạn và tận hưởng hiệu suất hạng nhất.', - for: 'Dành cho các đội nhóm vừa', - }, - enterprise: { - name: 'Doanh nghiệp', - description: 'Nhận toàn bộ khả năng và hỗ trợ cho các hệ thống quan trọng cho nhiệm vụ quy mô lớn.', - includesTitle: 'Tất cả trong kế hoạch Nhóm, cộng thêm:', - features: ['Giải pháp triển khai mở rộng cấp doanh nghiệp', 'Giấy phép thương mại', 'Tính năng Doanh nghiệp Độc quyền', 'Nhiều Không Gian Làm Việc & Quản Lý Doanh Nghiệp', 'Đăng nhập một lần', 'Các SLA đã được đàm phán bởi các Đối tác Dify', 'Bảo mật & Kiểm soát Nâng cao', 'Cập nhật và Bảo trì bởi Dify chính thức', 'Hỗ trợ Kỹ thuật Chuyên nghiệp'], - price: 'Tùy chỉnh', - for: 'Dành cho các đội lớn', - priceTip: 'Chỉ thanh toán hàng năm', - btnText: 'Liên hệ với Bộ phận Bán hàng', - }, - community: { - features: ['Tất cả các Tính năng Cốt lõi được Phát hành Dưới Kho Lưu trữ Công khai', 'Không gian làm việc đơn', 'Tuân thủ Giấy phép Mã nguồn mở Dify'], - description: 'Dành cho người dùng cá nhân, nhóm nhỏ hoặc các dự án phi thương mại', - name: 'Cộng đồng', - btnText: 'Bắt đầu với Cộng đồng', - price: 'Miễn phí', - for: 'Dành cho người dùng cá nhân, nhóm nhỏ hoặc các dự án phi thương mại', - includesTitle: 'Tính năng miễn phí:', - }, - premium: { - features: ['Độ tin cậy tự quản lý bởi các nhà cung cấp đám mây khác nhau', 'Không gian làm việc đơn', 'Tùy Chỉnh Logo & Thương Hiệu Ứng Dụng Web', 'Hỗ trợ Email & Trò chuyện Ưu tiên'], - comingSoon: 'Hỗ trợ Microsoft Azure & Google Cloud Sẽ Đến Sớm', - priceTip: 'Dựa trên Thị trường Đám mây', - btnText: 'Nhận Premium trong', - description: 'Dành cho các tổ chức và nhóm vừa', - price: 'Có thể mở rộng', - includesTitle: 'Mọi thứ từ Cộng đồng, cộng thêm:', - for: 'Dành cho các tổ chức và nhóm vừa', - name: 'Cao cấp', - }, - }, - vectorSpace: { - fullTip: 'Không gian Vector đã đầy.', - fullSolution: 'Nâng cấp kế hoạch của bạn để có thêm không gian.', - }, - apps: { - contactUs: 'Liên hệ với chúng tôi', - fullTip2: 'Đã đạt giới hạn kế hoạch', - fullTip1des: 'Bạn đã đạt đến giới hạn xây dựng ứng dụng trên kế hoạch này.', - fullTip1: 'Nâng cấp để tạo thêm ứng dụng', - fullTip2des: 'Chúng tôi khuyên bạn nên xóa các ứng dụng không hoạt động để giải phóng dung lượng, hoặc liên hệ với chúng tôi.', - }, - annotatedResponse: { - fullTipLine1: 'Nâng cấp kế hoạch của bạn để', - fullTipLine2: 'ghi chú thêm cuộc trò chuyện.', - quotaTitle: 'Hạn Mức Quota Phản hồi Đã được Ghi chú', - }, - usagePage: { - documentsUploadQuota: 'Hạn ngạch tải lên tài liệu', - annotationQuota: 'Hạn ngạch chú thích', - vectorSpaceTooltip: 'Các tài liệu với chế độ lập chỉ mục Chất lượng Cao sẽ tiêu tốn tài nguyên Lưu trữ Dữ liệu Kiến thức. Khi Lưu trữ Dữ liệu Kiến thức đạt giới hạn, các tài liệu mới sẽ không được tải lên.', - teamMembers: 'Các thành viên trong nhóm', - vectorSpace: 'Lưu trữ dữ liệu kiến thức', - buildApps: 'Xây dựng ứng dụng', - triggerEvents: 'Các sự kiện kích hoạt', - perMonth: 'mỗi tháng', - resetsIn: 'Đặt lại sau {{count,number}} ngày', - }, - teamMembers: 'Các thành viên trong nhóm', - triggerLimitModal: { - upgrade: 'Nâng cấp', - dismiss: 'Đóng', - usageTitle: 'SỰ KIỆN KÍCH HOẠT', - description: 'Bạn đã đạt đến giới hạn kích hoạt sự kiện quy trình cho gói này.', - title: 'Nâng cấp để mở khóa thêm nhiều sự kiện kích hoạt', - }, - viewBillingTitle: 'Thanh toán và Đăng ký', - viewBillingDescription: 'Quản lý phương thức thanh toán, hóa đơn và thay đổi đăng ký', - viewBillingAction: 'Quản lý', - upgrade: { - uploadMultiplePages: { - title: 'Nâng cấp để tải lên nhiều tài liệu cùng lúc', - description: 'Bạn đã đạt đến giới hạn tải lên — chỉ có thể chọn và tải lên một tài liệu trong một lần với gói hiện tại của bạn.', - }, - uploadMultipleFiles: { - title: 'Nâng cấp để mở khóa tải lên nhiều tài liệu', - description: 'Tải lên nhiều tài liệu cùng lúc để tiết kiệm thời gian và nâng cao hiệu quả.', - }, - addChunks: { - title: 'Nâng cấp để tiếp tục thêm các phần', - description: 'Bạn đã đạt đến giới hạn thêm phần cho gói này.', - }, - }, -} - -export default translation diff --git a/web/i18n/vi-VN/common.json b/web/i18n/vi-VN/common.json new file mode 100644 index 0000000000..ece60453b7 --- /dev/null +++ b/web/i18n/vi-VN/common.json @@ -0,0 +1,785 @@ +{ + "api": { + "success": "Thành công", + "actionSuccess": "Thành công", + "saved": "Đã lưu", + "create": "Tạo", + "remove": "Xóa", + "actionFailed": "Thao tác thất bại" + }, + "operation": { + "create": "Tạo mới", + "confirm": "Xác nhận", + "cancel": "Hủy bỏ", + "clear": "Xóa", + "save": "Lưu", + "saveAndEnable": "Lưu & Kích hoạt", + "edit": "Chỉnh sửa", + "add": "Thêm", + "added": "Đã thêm", + "refresh": "Làm mới", + "reset": "Đặt lại", + "search": "Tìm kiếm", + "change": "Thay đổi", + "remove": "Xóa", + "send": "Gửi", + "copy": "Sao chép", + "lineBreak": "Ngắt dòng", + "sure": "Tôi chắc chắn", + "download": "Tải xuống", + "delete": "Xóa", + "settings": "Cài đặt", + "setup": "Thiết lập", + "getForFree": "Nhận miễn phí", + "reload": "Tải lại", + "ok": "OK", + "log": "Nhật ký", + "learnMore": "Tìm hiểu thêm", + "params": "Tham số", + "duplicate": "Nhân bản", + "rename": "Đổi tên", + "audioSourceUnavailable": "AudioSource không khả dụng", + "copyImage": "Sao chép hình ảnh", + "zoomOut": "Thu nhỏ", + "zoomIn": "Phóng to", + "openInNewTab": "Mở trong tab mới", + "regenerate": "Tái tạo", + "close": "Đóng", + "saveAndRegenerate": "Lưu và tạo lại các phần con", + "view": "Cảnh", + "viewMore": "XEM THÊM", + "submit": "Trình", + "skip": "Tàu", + "imageCopied": "Hình ảnh sao chép", + "deleteApp": "Xóa ứng dụng", + "viewDetails": "Xem chi tiết", + "copied": "Sao chép", + "in": "trong", + "more": "Hơn", + "downloadFailed": "Tải xuống thất bại. Vui lòng thử lại sau.", + "format": "Định dạng", + "downloadSuccess": "Tải xuống đã hoàn thành.", + "deSelectAll": "Bỏ chọn tất cả", + "selectAll": "Chọn Tất Cả", + "config": "Cấu hình", + "no": "Không", + "yes": "Vâng", + "deleteConfirmTitle": "Xóa?", + "confirmAction": "Vui lòng xác nhận hành động của bạn.", + "noSearchResults": "Không tìm thấy {{content}} nào", + "resetKeywords": "Đặt lại từ khóa", + "selectCount": "{{count}} Đã chọn", + "searchCount": "Tìm {{count}} {{content}}", + "noSearchCount": "0 {{content}}", + "now": "Bây giờ" + }, + "placeholder": { + "input": "Vui lòng nhập", + "select": "Vui lòng chọn", + "search": "Tìm kiếm..." + }, + "voice": { + "language": { + "zhHans": "Tiếng Trung", + "zhHant": "Tiếng Trung phồn thể", + "enUS": "Tiếng Anh", + "deDE": "Tiếng Đức", + "frFR": "Tiếng Pháp", + "esES": "Tiếng Tây Ban Nha", + "itIT": "Tiếng Ý", + "thTH": "Tiếng Thái", + "idID": "Tiếng Indonesia", + "jaJP": "Tiếng Nhật", + "koKR": "Tiếng Hàn", + "ptBR": "Tiếng Bồ Đào Nha", + "ruRU": "Tiếng Nga", + "ukUA": "Tiếng Ukraina", + "viVN": "Tiếng Việt", + "plPL": "Tiếng Ba Lan", + "roRO": "Tiếng Rumani", + "hiIN": "Tiếng Hindi", + "trTR": "Tiếng Thổ Nhĩ Kỳ", + "faIR": "Tiếng Ba Tư", + "slSI": "Tiếng Slovenia", + "arTN": "Tiếng Ả Rập Tunisia" + } + }, + "unit": { + "char": "ký tự" + }, + "actionMsg": { + "noModification": "Hiện không có sự thay đổi.", + "modifiedSuccessfully": "Chỉnh sửa thành công", + "modifiedUnsuccessfully": "Chỉnh sửa không thành công", + "copySuccessfully": "Đã sao chép thành công", + "paySucceeded": "Thanh toán thành công", + "payCancelled": "Thanh toán đã hủy", + "generatedSuccessfully": "Tạo thành công", + "generatedUnsuccessfully": "Tạo không thành công" + }, + "model": { + "params": { + "temperature": "Độ sáng tạo", + "temperatureTip": "Kiểm soát độ ngẫu nhiên: Giảm độ sáng tạo dẫn đến ít kết quả ngẫu nhiên hơn. Khi độ sáng tạo gần bằng 0, mô hình sẽ trở nên xác định và lặp lại.", + "top_p": "Top P", + "top_pTip": "Kiểm soát đa dạng thông qua lấy mẫu nhân nhóm: 0.5 có nghĩa là nửa số tùy chọn có khả năng cao được xem xét.", + "presence_penalty": "Phạt sự hiện diện", + "presence_penaltyTip": "Độ lớn của sự phạt cho các token mới dựa trên việc chúng có xuất hiện trong văn bản cho đến nay hay không.\nTăng khả năng của mô hình để nói về các chủ đề mới.", + "frequency_penalty": "Phạt tần suất", + "frequency_penaltyTip": "Độ lớn của sự phạt cho các token mới dựa trên tần suất hiện tại của chúng trong văn bản cho đến nay.\nGiảm khả năng của mô hình để lặp lại cùng một dòng văn bản.", + "max_tokens": "Max token", + "max_tokensTip": "Sử dụng để giới hạn độ dài tối đa của câu trả lời, theo token. \nGiá trị lớn có thể giới hạn không gian còn lại cho từ khóa khởi đầu, nhật ký trò chuyện và Kiến thức. \nKhuyến nghị đặt giá trị dưới hai phần ba của gpt-4-1106-preview, gpt-4-vision-preview max token (đầu vào 128k đầu ra 4k)", + "maxTokenSettingTip": "Cài đặt max token của bạn quá cao, có thể hạn chế không gian cho từ khóa, truy vấn và dữ liệu. Xem xét đặt nó dưới 2/3.", + "setToCurrentModelMaxTokenTip": "Max token được cập nhật đến 80% token tối đa của mô hình hiện tại {{maxToken}}.", + "stop_sequences": "Chuỗi dừng", + "stop_sequencesTip": "Lên đến bốn chuỗi nơi API sẽ dừng việc tạo ra các token tiếp theo. Văn bản được trả về sẽ không chứa chuỗi dừng.", + "stop_sequencesPlaceholder": "Nhập chuỗi và nhấn Tab" + }, + "tone": { + "Creative": "Sáng tạo", + "Balanced": "Cân bằng", + "Precise": "Chính xác", + "Custom": "Tùy chỉnh" + }, + "addMoreModel": "Điều chỉnh cài đặt để thêm mô hình", + "settingsLink": "Cài đặt nhà cung cấp mô hình", + "capabilities": "Khả năng đa phương thức" + }, + "menus": { + "status": "beta", + "explore": "Khám phá", + "apps": "Studio", + "plugins": "Plugins", + "pluginsTips": "Tích hợp các plugin bên thứ ba hoặc tạo ra các AI-Plugin tương thích với ChatGPT.", + "datasets": "Kiến thức", + "datasetsTips": "SẮP RA MẮT: Nhập dữ liệu văn bản của bạn hoặc cập nhật dữ liệu theo thời gian thực thông qua Webhook để cải thiện ngữ cảnh LLM.", + "newApp": "Ứng dụng mới", + "newDataset": "Tạo Kiến thức", + "tools": "Công cụ", + "exploreMarketplace": "Khám phá Marketplace", + "appDetail": "Chi tiết ứng dụng", + "account": "báo cáo" + }, + "userProfile": { + "settings": "Cài đặt", + "emailSupport": "Hỗ trợ qua Email", + "workspace": "Không gian làm việc", + "createWorkspace": "Tạo Không gian làm việc", + "helpCenter": "Trung tâm trợ giúp", + "roadmap": "Lộ trình", + "community": "Cộng đồng", + "about": "Về chúng tôi", + "logout": "Đăng xuất", + "compliance": "Tuân thủ", + "github": "GitHub", + "support": "Hỗ trợ", + "contactUs": "Liên hệ với chúng tôi", + "forum": "Diễn đàn" + }, + "settings": { + "accountGroup": "TÀI KHOẢN", + "workplaceGroup": "KHÔNG GIAN LÀM VIỆC", + "account": "Tài khoản của tôi", + "members": "Thành viên", + "billing": "Thanh toán", + "integrations": "Tích hợp", + "language": "Ngôn ngữ", + "provider": "Nhà cung cấp mô hình", + "dataSource": "Nguồn dữ liệu", + "plugin": "Plugins", + "apiBasedExtension": "Mở rộng dựa trên API", + "generalGroup": "TỔNG QUÁT" + }, + "account": { + "avatar": "Ảnh đại diện", + "name": "Tên", + "email": "Email", + "password": "Mật khẩu", + "passwordTip": "Bạn có thể đặt một mật khẩu cố định nếu bạn không muốn sử dụng mã đăng nhập tạm thời", + "setPassword": "Đặt mật khẩu", + "resetPassword": "Đặt lại mật khẩu", + "currentPassword": "Mật khẩu hiện tại", + "newPassword": "Mật khẩu mới", + "confirmPassword": "Xác nhận mật khẩu", + "notEqual": "Hai mật khẩu không giống nhau.", + "langGeniusAccount": "Tài khoản Dify", + "langGeniusAccountTip": "Tài khoản Dify của bạn và dữ liệu người dùng liên quan.", + "editName": "Chỉnh sửa Tên", + "showAppLength": "Hiển thị {{length}} ứng dụng", + "delete": "Xóa tài khoản", + "deleteTip": "Xóa tài khoản của bạn sẽ xóa vĩnh viễn tất cả dữ liệu của bạn và không thể khôi phục được.", + "studio": "Dify Studio", + "myAccount": "Tài khoản của tôi", + "account": "Tài khoản", + "deletePrivacyLinkTip": "Để biết thêm thông tin về cách chúng tôi xử lý dữ liệu của bạn, vui lòng xem", + "deletePrivacyLink": "Chính sách bảo mật.", + "deleteSuccessTip": "Tài khoản của bạn cần thời gian để xóa xong. Chúng tôi sẽ gửi email cho bạn khi tất cả hoàn tất.", + "deleteLabel": "Để xác nhận, vui lòng nhập email của bạn bên dưới", + "deletePlaceholder": "Vui lòng nhập email của bạn", + "sendVerificationButton": "Gửi mã xác minh", + "verificationLabel": "Mã xác minh", + "verificationPlaceholder": "Dán mã gồm 6 chữ số", + "permanentlyDeleteButton": "Xóa vĩnh viễn tài khoản", + "feedbackTitle": "Phản hồi", + "feedbackLabel": "Hãy cho chúng tôi biết lý do tại sao bạn xóa tài khoản của mình?", + "feedbackPlaceholder": "Tùy chọn", + "workspaceIcon": "Biểu tượng không gian làm việc", + "workspaceName": "Tên không gian làm việc", + "editWorkspaceInfo": "Chỉnh sửa thông tin không gian làm việc", + "changeEmail": { + "existingEmail": "Một người dùng với email này đã tồn tại.", + "title": "Đổi Email", + "resendTip": "Không nhận được mã sao?", + "resend": "Gửi lại", + "emailLabel": "Email mới", + "verifyNew": "Xác minh email mới của bạn", + "newEmail": "Tạo một địa chỉ email mới", + "emailPlaceholder": "Nhập một email mới", + "changeTo": "Thay đổi thành {{email}}", + "content1": "Nếu bạn tiếp tục, chúng tôi sẽ gửi một mã xác minh đến {{email}} để xác thực lại.", + "codeLabel": "Mã xác thực", + "content3": "Nhập một email mới và chúng tôi sẽ gửi cho bạn một mã xác minh.", + "sendVerifyCode": "Gửi mã xác minh", + "content4": "Chúng tôi vừa gửi cho bạn một mã xác minh tạm thời đến {{email}}.", + "resendCount": "Gửi lại sau {{count}} giây", + "continue": "Tiếp tục", + "content2": "Email hiện tại của bạn là {{email}}. Mã xác minh đã được gửi đến địa chỉ email này.", + "verifyEmail": "Xác minh email hiện tại của bạn", + "codePlaceholder": "Dán mã 6 chữ số", + "authTip": "Khi email của bạn được thay đổi, các tài khoản Google hoặc GitHub liên kết với email cũ của bạn sẽ không còn có thể đăng nhập vào tài khoản này.", + "unAvailableEmail": "Email này hiện không khả dụng tạm thời." + } + }, + "members": { + "team": "Nhóm", + "invite": "Mời", + "name": "TÊN", + "lastActive": "HOẠT ĐỘNG GẦN ĐÂY", + "role": "VAI TRÒ", + "pending": "Đang chờ...", + "owner": "Chủ sở hữu", + "admin": "Quản trị viên", + "adminTip": "Có thể xây dựng ứng dụng và quản lý cài đặt nhóm", + "normal": "Bình thường", + "normalTip": "Chỉ có thể sử dụng ứng dụng, không thể xây dựng ứng dụng", + "editor": "Biên tập viên", + "editorTip": "Có thể xây dựng ứng dụng, không thể quản lý cài đặt nhóm", + "inviteTeamMember": "Mời thành viên nhóm", + "inviteTeamMemberTip": "Sau khi đăng nhập, họ có thể truy cập trực tiếp vào dữ liệu nhóm của bạn.", + "emailNotSetup": "Máy chủ email chưa được thiết lập, vì vậy không thể gửi email mời. Vui lòng thông báo cho người dùng về liên kết mời sẽ được phát hành sau khi mời.", + "email": "Email", + "emailInvalid": "Định dạng Email không hợp lệ", + "emailPlaceholder": "Vui lòng nhập email", + "sendInvite": "Gửi Lời mời", + "invitedAsRole": "Được mời với vai trò {{role}}", + "invitationSent": "Lời mời đã được gửi", + "invitationSentTip": "Lời mời đã được gửi, và họ có thể đăng nhập vào Dify để truy cập vào dữ liệu nhóm của bạn.", + "invitationLink": "Liên kết Lời mời", + "failedInvitationEmails": "Dưới đây là danh sách email không gửi được lời mời", + "ok": "OK", + "removeFromTeam": "Xóa khỏi nhóm", + "removeFromTeamTip": "Sẽ xóa quyền truy cập nhóm", + "setAdmin": "Đặt làm quản trị viên", + "setMember": "Đặt thành viên bình thường", + "setEditor": "Đặt làm biên tập viên", + "disInvite": "Hủy lời mời", + "deleteMember": "Xóa thành viên", + "you": "(Bạn)", + "datasetOperatorTip": "Chỉ có thể quản lý cơ sở kiến thức", + "builderTip": "Có thể xây dựng và chỉnh sửa ứng dụng của riêng mình", + "builder": "Chủ thầu", + "datasetOperator": "Quản trị viên kiến thức", + "setBuilder": "Đặt làm trình tạo", + "transferModal": { + "resend": "Gửi lại", + "resendTip": "Chưa nhận được mã?", + "continue": "Tiếp tục", + "verifyEmail": "Xác minh email hiện tại của bạn", + "title": "Chuyển quyền sở hữu không gian làm việc", + "transferPlaceholder": "Chọn một thành viên trong không gian làm việc…", + "transferLabel": "Chuyển quyền sở hữu không gian làm việc cho", + "warningTip": "Bạn sẽ trở thành thành viên quản trị, và chủ sở hữu mới sẽ có toàn quyền kiểm soát.", + "verifyContent": "Email hiện tại của bạn là {{email}}.", + "warning": "Bạn sắp chuyển quyền sở hữu của \"{{workspace}}\". Điều này có hiệu lực ngay lập tức và không thể hoàn tác.", + "codePlaceholder": "Dán mã 6 chữ số", + "transfer": "Chuyển quyền sở hữu không gian làm việc", + "sendVerifyCode": "Gửi mã xác minh", + "resendCount": "Gửi lại sau {{count}} giây", + "codeLabel": "Mã xác thực", + "sendTip": "Nếu bạn tiếp tục, chúng tôi sẽ gửi một mã xác minh đến {{email}} để xác thực lại.", + "verifyContent2": "Chúng tôi sẽ gửi một mã xác minh tạm thời đến email này để thực hiện xác thực lại." + }, + "transferOwnership": "Chuyển quyền sở hữu" + }, + "integrations": { + "connected": "Đã kết nối", + "google": "Google", + "googleAccount": "Đăng nhập bằng tài khoản Google", + "github": "GitHub", + "githubAccount": "Đăng nhập bằng tài khoản GitHub", + "connect": "Kết nối" + }, + "language": { + "displayLanguage": "Ngôn ngữ hiển thị", + "timezone": "Múi giờ" + }, + "provider": { + "apiKey": "Khóa API", + "enterYourKey": "Nhập khóa API của bạn ở đây", + "invalidKey": "Khóa API OpenAI không hợp lệ", + "validatedError": "Xác minh thất bại: ", + "validating": "Đang xác minh khóa...", + "saveFailed": "Lưu khóa API thất bại", + "apiKeyExceedBill": "Khóa API này không có lượng truy vấn khả dụng, vui lòng đọc", + "addKey": "Thêm Khóa", + "comingSoon": "Sắp Ra Mắt", + "editKey": "Chỉnh sửa", + "invalidApiKey": "Khóa API không hợp lệ", + "azure": { + "apiBase": "Cơ sở API", + "apiBasePlaceholder": "URL cơ sở API của điểm cuối Azure OpenAI của bạn.", + "apiKey": "Khóa API", + "apiKeyPlaceholder": "Nhập khóa API của bạn ở đây", + "helpTip": "Tìm hiểu Dịch vụ Azure OpenAI" + }, + "openaiHosted": { + "openaiHosted": "OpenAI đang lưu trữ", + "onTrial": "DÙNG THỬ", + "exhausted": "HẾT QUOTA", + "desc": "Dịch vụ lưu trữ OpenAI được cung cấp bởi Dify cho phép bạn sử dụng các mô hình như GPT-3.5. Trước khi hết lượng truy vấn dùng thử, bạn cần thiết lập các nhà cung cấp mô hình khác.", + "callTimes": "Số lần gọi", + "usedUp": "Quota dùng thử đã hết. Thêm nhà cung cấp Mô hình của riêng bạn.", + "useYourModel": "Hiện đang sử dụng nhà cung cấp Mô hình của riêng bạn.", + "close": "Đóng" + }, + "anthropicHosted": { + "anthropicHosted": "Anthropic Claude", + "onTrial": "DÙNG THỬ", + "exhausted": "HẾT QUOTA", + "desc": "Mô hình mạnh mẽ, vượt trội trong một loạt các nhiệm vụ từ trò chuyện phức tạp và tạo nội dung sáng tạo đến hướng dẫn chi tiết.", + "callTimes": "Số lần gọi", + "usedUp": "Quota dùng thử đã hết. Thêm nhà cung cấp Mô hình của riêng bạn.", + "useYourModel": "Hiện đang sử dụng nhà cung cấp Mô hình của riêng bạn.", + "close": "Đóng", + "trialQuotaTip": "Hạn ngạch dùng thử Anthropic của bạn sẽ hết hạn vào 2025/03/11 và sẽ không còn khả dụng sau đó. Vui lòng sử dụng nó kịp thời." + }, + "anthropic": { + "using": "Khả năng nhúng đang sử dụng", + "enableTip": "Để kích hoạt mô hình Anthrop, bạn cần ràng buộc với Dịch vụ OpenAI hoặc Azure OpenAI trước.", + "notEnabled": "Chưa được kích hoạt", + "keyFrom": "Nhận khóa API của bạn từ Anthrop" + }, + "encrypted": { + "front": "Khóa API của bạn sẽ được mã hóa và lưu trữ bằng", + "back": " công nghệ." + } + }, + "modelProvider": { + "notConfigured": "Mô hình hệ thống vẫn chưa được cấu hình hoàn toàn và một số chức năng có thể không khả dụng.", + "systemModelSettings": "Cài đặt Mô hình Hệ thống", + "systemModelSettingsLink": "Tại sao cần thiết phải thiết lập mô hình hệ thống?", + "selectModel": "Chọn mô hình của bạn", + "setupModelFirst": "Vui lòng thiết lập mô hình của bạn trước", + "systemReasoningModel": { + "key": "Mô hình lập luận hệ thống", + "tip": "Thiết lập mô hình suy luận mặc định sẽ được sử dụng để tạo ứng dụng. Các tính năng như tạo tên cuộc trò chuyện và đề xuất câu hỏi tiếp theo cũng sẽ sử dụng mô hình suy luận mặc định này." + }, + "embeddingModel": { + "key": "Mô hình nhúng", + "tip": "Thiết lập mô hình mặc định cho việc xử lý nhúng tài liệu của Kiến thức, cả hai phương tiện truy xuất và nhập của Kiến thức đều sử dụng mô hình nhúng này cho xử lý vector hóa. Chuyển đổi sẽ làm cho kích thước vector giữa Kiến thức được nhập và câu hỏi không nhất quán, dẫn đến việc truy xuất thất bại. Để tránh truy xuất thất bại, vui lòng không chuyển đổi mô hình này tùy ý.", + "required": "Mô hình nhúng là bắt buộc" + }, + "speechToTextModel": { + "key": "Mô hình Chuyển đổi Văn bản thành Tiếng nói", + "tip": "Thiết lập mô hình mặc định cho đầu vào chuyển đổi tiếng nói thành văn bản trong cuộc trò chuyện." + }, + "ttsModel": { + "key": "Mô hình Văn bản thành Tiếng nói", + "tip": "Thiết lập mô hình mặc định cho đầu vào văn bản thành tiếng nói trong cuộc trò chuyện." + }, + "rerankModel": { + "key": "Mô hình Sắp xếp lại", + "tip": "Mô hình sắp xếp lại sẽ sắp xếp lại danh sách tài liệu ứng cử viên dựa trên sự phù hợp ngữ nghĩa với truy vấn của người dùng, cải thiện kết quả của việc xếp hạng ngữ nghĩa" + }, + "quota": "Hạn mức", + "searchModel": "Mô hình tìm kiếm", + "noModelFound": "Không tìm thấy mô hình cho {{model}}", + "models": "Mô hình", + "showMoreModelProvider": "Hiển thị thêm nhà cung cấp mô hình", + "selector": { + "tip": "Mô hình này đã bị xóa. Vui lòng thêm một mô hình hoặc chọn mô hình khác.", + "emptyTip": "Không có mô hình khả dụng", + "emptySetting": "Vui lòng vào cài đặt để cấu hình", + "rerankTip": "Vui lòng thiết lập mô hình sắp xếp lại" + }, + "card": { + "quota": "QUOTA", + "onTrial": "Thử nghiệm", + "paid": "Đã thanh toán", + "quotaExhausted": "Quota đã hết", + "callTimes": "Số lần gọi", + "tokens": "Tokens", + "buyQuota": "Mua Quota", + "priorityUse": "Ưu tiên sử dụng", + "removeKey": "Remove API Key", + "tip": "Ưu tiên sẽ được trao cho hạn ngạch đã thanh toán. Hạn ngạch dùng thử sẽ được sử dụng sau khi hết hạn ngạch trả phí." + }, + "item": { + "deleteDesc": "Các mô hình {{modelName}} đang được sử dụng như là các mô hình lập luận hệ thống. Một số chức năng sẽ không khả dụng sau khi loại bỏ. Vui lòng xác nhận.", + "freeQuota": "QUYỀN LỢI MIỄN PHÍ" + }, + "addApiKey": "Thêm khóa API của bạn", + "invalidApiKey": "Khóa API không hợp lệ", + "encrypted": { + "front": "Khóa API CỦA BẠN sẽ được mã hóa và lưu trữ bằng", + "back": " công nghệ." + }, + "freeQuota": { + "howToEarn": "Cách kiếm" + }, + "addMoreModelProvider": "THÊM NHÀ CUNG CẤP MÔ HÌNH", + "addModel": "Thêm Mô hình", + "modelsNum": "{{num}} Mô hình", + "showModels": "Hiện Mô hình", + "showModelsNum": "Hiện {{num}} Mô hình", + "collapse": "Thu gọn", + "config": "Cấu hình", + "modelAndParameters": "Mô hình và Tham số", + "model": "Mô hình", + "featureSupported": "{{feature}} được hỗ trợ", + "callTimes": "Số lần gọi", + "credits": "Tín dụng Tin nhắn", + "buyQuota": "Mua Quyền lợi", + "getFreeTokens": "Nhận mã thông báo miễn phí", + "priorityUsing": "Ưu tiên sử dụng", + "deprecated": "Đã lỗi thời", + "confirmDelete": "Xác nhận xóa?", + "quotaTip": "Số lượng mã thông báo miễn phí còn lại", + "loadPresets": "Tải Cài đặt trước", + "parameters": "THAM SỐ", + "loadBalancingHeadline": "Cân bằng tải", + "loadBalancing": "Cân bằng tải", + "configLoadBalancing": "Cấu hình cân bằng tải", + "defaultConfig": "Cấu hình mặc định", + "modelHasBeenDeprecated": "Mô hình này đã bị phản đối", + "providerManagedDescription": "Sử dụng bộ thông tin đăng nhập duy nhất do nhà cung cấp mô hình cung cấp.", + "apiKeyStatusNormal": "Trạng thái APIKey bình thường", + "editConfig": "Chỉnh sửa cấu hình", + "loadBalancingInfo": "Theo mặc định, cân bằng tải sử dụng chiến lược Vòng tròn. Nếu giới hạn tốc độ được kích hoạt, thời gian hồi chiêu 1 phút sẽ được áp dụng.", + "addConfig": "Thêm cấu hình", + "loadBalancingDescription": "Giảm áp lực với nhiều bộ thông tin xác thực.", + "apiKey": "KHÓA API", + "providerManaged": "Nhà cung cấp được quản lý", + "apiKeyRateLimit": "Đã đạt đến giới hạn tốc độ, có sẵn sau {{giây}} giây", + "upgradeForLoadBalancing": "Nâng cấp gói của bạn để bật Cân bằng tải.", + "loadBalancingLeastKeyWarning": "Để bật cân bằng tải, ít nhất 2 phím phải được bật.", + "toBeConfigured": "Được cấu hình", + "emptyProviderTitle": "Nhà cung cấp mô hình chưa được thiết lập", + "discoverMore": "Khám phá thêm trong", + "emptyProviderTip": "Vui lòng cài đặt nhà cung cấp mô hình trước.", + "installProvider": "Cài đặt nhà cung cấp mô hình", + "configureTip": "Thiết lập api-key hoặc thêm mô hình để sử dụng", + "auth": { + "apiKeyModal": { + "addModel": "Thêm mô hình", + "title": "Cấu hình ủy quyền khóa API", + "desc": "Sau khi cấu hình thông tin xác thực, tất cả các thành viên trong không gian làm việc có thể sử dụng mô hình này khi điều phối các ứng dụng." + }, + "addNewModel": "Thêm mô hình mới", + "addCredential": "Thêm thông tin đăng nhập", + "configLoadBalancing": "Cấu hình cân bằng tải", + "apiKeys": "Chìa khóa API", + "authorizationError": "Lỗi xác thực", + "configModel": "Cấu hình mô hình", + "modelCredentials": "Chứng chỉ của mô hình", + "unAuthorized": "Không có quyền truy cập", + "addApiKey": "Thêm khóa API", + "providerManagedTip": "Cấu hình hiện tại được lưu trữ bởi nhà cung cấp.", + "specifyModelCredential": "Xác định thông tin xác thực của mô hình", + "specifyModelCredentialTip": "Sử dụng thông tin xác thực của mô hình đã cấu hình.", + "addModelCredential": "Thêm thông tin đăng nhập mô hình", + "authRemoved": "Chính quyền đã loại bỏ", + "providerManaged": "Nhà cung cấp đã được quản lý", + "modelCredential": "Thông tin đăng nhập mô hình", + "addModel": "Thêm mô hình", + "removeModel": "Loại bỏ mô hình", + "manageCredentials": "Quản lý thông tin đăng nhập", + "editModelCredential": "Chỉnh sửa thông tin xác thực mô hình", + "customModelCredentials": "Thông tin đăng nhập mô hình tùy chỉnh", + "customModelCredentialsDeleteTip": "Thông tin đăng nhập đang được sử dụng và không thể xóa", + "addNewModelCredential": "Thêm thông tin xác thực mô hình mới", + "selectModelCredential": "Chọn thông tin xác thực mô hình" + }, + "parametersInvalidRemoved": "Một số tham số không hợp lệ và đã được loại bỏ", + "installDataSourceProvider": "Cài đặt các nhà cung cấp nguồn dữ liệu" + }, + "dataSource": { + "add": "Thêm nguồn dữ liệu", + "connect": "Kết nối", + "notion": { + "title": "Notion", + "description": "Sử dụng Notion như một nguồn dữ liệu cho Kiến thức.", + "connectedWorkspace": "Không gian làm việc đã kết nối", + "addWorkspace": "Thêm không gian làm việc", + "connected": "Đã kết nối", + "disconnected": "Đã ngắt kết nối", + "changeAuthorizedPages": "Thay đổi trang được ủy quyền", + "pagesAuthorized": "Các trang được ủy quyền", + "sync": "Đồng bộ", + "remove": "Xóa", + "selector": { + "pageSelected": "Các trang đã chọn", + "searchPages": "Tìm kiếm trang...", + "noSearchResult": "Không có kết quả tìm kiếm", + "addPages": "Thêm trang", + "preview": "Xem trước" + }, + "integratedAlert": "Notion được tích hợp thông qua thông tin xác thực nội bộ, không cần phải ủy quyền lại." + }, + "website": { + "title": "Trang mạng", + "inactive": "Không hoạt động", + "with": "Với", + "active": "Hoạt động", + "configuredCrawlers": "Trình thu thập thông tin đã định cấu hình", + "description": "Nhập nội dung từ các trang web bằng trình thu thập dữ liệu web." + }, + "configure": "Cấu hình" + }, + "plugin": { + "serpapi": { + "apiKey": "Khóa API", + "apiKeyPlaceholder": "Nhập khóa API của bạn", + "keyFrom": "Nhận khóa SerpAPI của bạn từ Trang tài khoản SerpAPI" + } + }, + "apiBasedExtension": { + "title": "Các tiện ích API cung cấp quản lý API tập trung, giúp cấu hình dễ dàng sử dụng trên các ứng dụng của Dify.", + "link": "Tìm hiểu cách phát triển Phần mở rộng API của riêng bạn.", + "add": "Thêm Phần mở rộng API", + "selector": { + "title": "Phần mở rộng API", + "placeholder": "Vui lòng chọn phần mở rộng API", + "manage": "Quản lý Phần mở rộng API" + }, + "modal": { + "title": "Thêm Phần mở rộng API", + "editTitle": "Chỉnh sửa Phần mở rộng API", + "name": { + "title": "Tên", + "placeholder": "Vui lòng nhập tên" + }, + "apiEndpoint": { + "title": "Điểm cuối API", + "placeholder": "Vui lòng nhập điểm cuối API" + }, + "apiKey": { + "title": "Khóa API", + "placeholder": "Vui lòng nhập khóa API", + "lengthError": "Độ dài khóa API không được nhỏ hơn 5 ký tự" + } + }, + "type": "Loại" + }, + "about": { + "changeLog": "Nhật ký thay đổi", + "updateNow": "Cập nhật ngay", + "nowAvailable": "Dify {{version}} hiện đã có sẵn.", + "latestAvailable": "Dify {{version}} là phiên bản mới nhất hiện có." + }, + "appMenus": { + "overview": "Giám sát", + "promptEng": "Orchestrate", + "apiAccess": "Truy cập API", + "logAndAnn": "Nhật ký & Thông báo", + "logs": "Nhật ký" + }, + "environment": { + "testing": "TESTING", + "development": "DEVELOPMENT" + }, + "appModes": { + "completionApp": "Ứng dụng Tạo văn bản", + "chatApp": "Ứng dụng Trò chuyện" + }, + "datasetMenus": { + "documents": "Tài liệu", + "hitTesting": "Kiểm tra truy vấn", + "settings": "Cài đặt", + "emptyTip": "Kiến thức chưa được liên kết, vui lòng đi đến ứng dụng hoặc plug-in để hoàn thành liên kết.", + "viewDoc": "Xem tài liệu", + "relatedApp": "các ứng dụng liên kết", + "noRelatedApp": "Không có ứng dụng được liên kết", + "pipeline": "Đường ống" + }, + "voiceInput": { + "speaking": "Hãy nói...", + "converting": "Chuyển đổi thành văn bản...", + "notAllow": "micro không được ủy quyền" + }, + "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": "Đổi tên Cuộc trò chuyện", + "conversationName": "Tên cuộc trò chuyện", + "conversationNamePlaceholder": "Vui lòng nhập tên cuộc trò chuyện", + "conversationNameCanNotEmpty": "Yêu cầu nhập tên cuộc trò chuyện", + "citation": { + "title": "THAM KHẢO", + "linkToDataset": "Liên kết tới Kiến thức", + "characters": "Ký tự:", + "hitCount": "Số lượt truy xuất:", + "vectorHash": "Vector hash:", + "hitScore": "Điểm truy xuất:" + }, + "inputPlaceholder": "Nói chuyện với {{botName}}", + "thought": "Tư duy", + "thinking": "Suy nghĩ...", + "resend": "Gửi lại" + }, + "promptEditor": { + "placeholder": "Viết từ khóa của bạn ở đây, nhập '{' để chèn một biến, nhập '/' để chèn một khối nội dung nhắc nhở", + "context": { + "item": { + "title": "Bối cảnh", + "desc": "Chèn mẫu bối cảnh" + }, + "modal": { + "title": "{{num}} Kiến thức trong Bối cảnh", + "add": "Thêm Bối cảnh", + "footer": "Bạn có thể quản lý các bối cảnh trong phần Bối cảnh bên dưới." + } + }, + "history": { + "item": { + "title": "Lịch sử Cuộc trò chuyện", + "desc": "Chèn mẫu tin nhắn lịch sử" + }, + "modal": { + "title": "VÍ DỤ", + "user": "Xin chào", + "assistant": "Xin chào! Tôi có thể giúp gì cho bạn hôm nay?", + "edit": "Chỉnh sửa Tên Vai trò Cuộc trò chuyện" + } + }, + "variable": { + "item": { + "title": "Biến & Công cụ Bên ngoài", + "desc": "Chèn Biến & Công cụ Bên ngoài" + }, + "outputToolDisabledItem": { + "title": "Công cụ Bên ngoài", + "desc": "Công cụ Bên ngoài không thể chèn vào đây" + }, + "modal": { + "add": "Biến mới", + "addTool": "Công cụ mới" + } + }, + "query": { + "item": { + "title": "Truy vấn", + "desc": "Chèn mẫu truy vấn người dùng" + } + }, + "existed": "Đã tồn tại trong tin nhắn" + }, + "imageUploader": { + "uploadFromComputer": "Tải lên từ Máy tính", + "uploadFromComputerReadError": "Đọc ảnh thất bại, vui lòng thử lại.", + "uploadFromComputerUploadError": "Tải ảnh lên thất bại, vui lòng tải lên lại.", + "uploadFromComputerLimit": "Ảnh tải lên không được vượt quá {{size}} MB", + "pasteImageLink": "Dán liên kết ảnh", + "pasteImageLinkInputPlaceholder": "Dán liên kết ảnh ở đây", + "pasteImageLinkInvalid": "Liên kết ảnh không hợp lệ", + "imageUpload": "Tải ảnh lên" + }, + "tag": { + "placeholder": "Tất cả các thẻ", + "addNew": "Thêm thẻ mới", + "noTag": "Không có thẻ", + "noTagYet": "Chưa có thẻ", + "addTag": "thêm thẻ", + "editTag": "Chỉnh sửa thẻ", + "manageTags": "Quản lý thẻ", + "selectorPlaceholder": "Nhập để tìm kiếm hoặc tạo", + "create": "Tạo", + "delete": "Xóa thẻ", + "deleteTip": "Thẻ đang được sử dụng, xóa nó đi?", + "created": "Thẻ được tạo thành công", + "failed": "Tạo thẻ không thành công" + }, + "errorMsg": { + "fieldRequired": "{{trường}} là bắt buộc", + "urlError": "URL phải bắt đầu bằng http:// hoặc https://" + }, + "fileUploader": { + "uploadFromComputer": "Tải lên cục bộ", + "pasteFileLink": "Dán liên kết tệp", + "pasteFileLinkInputPlaceholder": "Nhập URL...", + "uploadFromComputerLimit": "Tải lên tệp không được vượt quá {{size}}", + "fileExtensionNotSupport": "Phần mở rộng tệp không được hỗ trợ", + "pasteFileLinkInvalid": "Liên kết tệp không hợp lệ", + "uploadFromComputerUploadError": "Tải lên tệp không thành công, vui lòng tải lên lại.", + "uploadFromComputerReadError": "Đọc tệp không thành công, vui lòng thử lại.", + "fileExtensionBlocked": "Loại tệp này bị chặn vì lý do bảo mật", + "uploadDisabled": "Tải tệp bị vô hiệu hóa" + }, + "license": { + "expiring_plural": "Hết hạn sau {{count}} ngày", + "expiring": "Hết hạn trong một ngày", + "unlimited": "Vô hạn" + }, + "pagination": { + "perPage": "Mục trên mỗi trang" + }, + "theme": { + "auto": "hệ thống", + "theme": "Chủ đề", + "light": "ánh sáng", + "dark": "tối" + }, + "compliance": { + "iso27001": "Chứng nhận ISO 27001:2022", + "gdpr": "GDPR DPA", + "soc2Type1": "Báo cáo loại SOC 2 Type I", + "professionalUpgradeTooltip": "Chỉ có sẵn với gói Team hoặc cao hơn.", + "sandboxUpgradeTooltip": "Chỉ có sẵn với gói Chuyên nghiệp hoặc Nhóm.", + "soc2Type2": "Báo cáo SOC 2 Type II" + }, + "imageInput": { + "supportedFormats": "Hỗ trợ PNG, JPG, JPEG, WEBP và GIF", + "dropImageHere": "Kéo hình ảnh của bạn vào đây, hoặc", + "browse": "duyệt" + }, + "you": "Bạn", + "avatar": { + "deleteTitle": "Xóa Ảnh Đại Diện", + "deleteDescription": "Bạn có chắc chắn muốn xóa ảnh đại diện của mình không? Tài khoản của bạn sẽ sử dụng avatar mặc định." + }, + "feedback": { + "content": "Nội dung phản hồi", + "title": "Cung cấp phản hồi", + "placeholder": "Xin vui lòng miêu tả những gì đã xảy ra không đúng hoặc chúng tôi có thể cải thiện như thế nào...", + "subtitle": "Xin vui lòng cho chúng tôi biết điều gì đã sai với phản hồi này" + }, + "label": { + "optional": "(tùy chọn)" + }, + "noData": "Không có dữ liệu", + "dynamicSelect": { + "error": "Tải tùy chọn thất bại", + "noData": "Không có tùy chọn nào", + "loading": "Đang tải tùy chọn...", + "selected": "{{count}} đã chọn" + } +} diff --git a/web/i18n/vi-VN/common.ts b/web/i18n/vi-VN/common.ts deleted file mode 100644 index 666dc7a133..0000000000 --- a/web/i18n/vi-VN/common.ts +++ /dev/null @@ -1,792 +0,0 @@ -const translation = { - api: { - success: 'Thành công', - actionSuccess: 'Thành công', - saved: 'Đã lưu', - create: 'Tạo', - remove: 'Xóa', - actionFailed: 'Thao tác thất bại', - }, - operation: { - create: 'Tạo mới', - confirm: 'Xác nhận', - cancel: 'Hủy bỏ', - clear: 'Xóa', - save: 'Lưu', - saveAndEnable: 'Lưu & Kích hoạt', - edit: 'Chỉnh sửa', - add: 'Thêm', - added: 'Đã thêm', - refresh: 'Làm mới', - reset: 'Đặt lại', - search: 'Tìm kiếm', - change: 'Thay đổi', - remove: 'Xóa', - send: 'Gửi', - copy: 'Sao chép', - lineBreak: 'Ngắt dòng', - sure: 'Tôi chắc chắn', - download: 'Tải xuống', - delete: 'Xóa', - settings: 'Cài đặt', - setup: 'Thiết lập', - getForFree: 'Nhận miễn phí', - reload: 'Tải lại', - ok: 'OK', - log: 'Nhật ký', - learnMore: 'Tìm hiểu thêm', - params: 'Tham số', - duplicate: 'Nhân bản', - rename: 'Đổi tên', - audioSourceUnavailable: 'AudioSource không khả dụng', - copyImage: 'Sao chép hình ảnh', - zoomOut: 'Thu nhỏ', - zoomIn: 'Phóng to', - openInNewTab: 'Mở trong tab mới', - regenerate: 'Tái tạo', - close: 'Đóng', - saveAndRegenerate: 'Lưu và tạo lại các phần con', - view: 'Cảnh', - viewMore: 'XEM THÊM', - submit: 'Trình', - skip: 'Tàu', - imageCopied: 'Hình ảnh sao chép', - deleteApp: 'Xóa ứng dụng', - viewDetails: 'Xem chi tiết', - copied: 'Sao chép', - in: 'trong', - more: 'Hơn', - downloadFailed: 'Tải xuống thất bại. Vui lòng thử lại sau.', - format: 'Định dạng', - downloadSuccess: 'Tải xuống đã hoàn thành.', - deSelectAll: 'Bỏ chọn tất cả', - selectAll: 'Chọn Tất Cả', - config: 'Cấu hình', - no: 'Không', - yes: 'Vâng', - deleteConfirmTitle: 'Xóa?', - confirmAction: 'Vui lòng xác nhận hành động của bạn.', - noSearchResults: 'Không tìm thấy {{content}} nào', - resetKeywords: 'Đặt lại từ khóa', - selectCount: '{{count}} Đã chọn', - searchCount: 'Tìm {{count}} {{content}}', - noSearchCount: '0 {{content}}', - now: 'Bây giờ', - }, - placeholder: { - input: 'Vui lòng nhập', - select: 'Vui lòng chọn', - search: 'Tìm kiếm...', - }, - voice: { - language: { - zhHans: 'Tiếng Trung', - zhHant: 'Tiếng Trung phồn thể', - enUS: 'Tiếng Anh', - deDE: 'Tiếng Đức', - frFR: 'Tiếng Pháp', - esES: 'Tiếng Tây Ban Nha', - itIT: 'Tiếng Ý', - thTH: 'Tiếng Thái', - idID: 'Tiếng Indonesia', - jaJP: 'Tiếng Nhật', - koKR: 'Tiếng Hàn', - ptBR: 'Tiếng Bồ Đào Nha', - ruRU: 'Tiếng Nga', - ukUA: 'Tiếng Ukraina', - viVN: 'Tiếng Việt', - plPL: 'Tiếng Ba Lan', - roRO: 'Tiếng Rumani', - hiIN: 'Tiếng Hindi', - trTR: 'Tiếng Thổ Nhĩ Kỳ', - faIR: 'Tiếng Ba Tư', - slSI: 'Tiếng Slovenia', - arTN: 'Tiếng Ả Rập Tunisia', - }, - }, - unit: { - char: 'ký tự', - }, - actionMsg: { - noModification: 'Hiện không có sự thay đổi.', - modifiedSuccessfully: 'Chỉnh sửa thành công', - modifiedUnsuccessfully: 'Chỉnh sửa không thành công', - copySuccessfully: 'Đã sao chép thành công', - paySucceeded: 'Thanh toán thành công', - payCancelled: 'Thanh toán đã hủy', - generatedSuccessfully: 'Tạo thành công', - generatedUnsuccessfully: 'Tạo không thành công', - }, - model: { - params: { - temperature: 'Độ sáng tạo', - temperatureTip: - 'Kiểm soát độ ngẫu nhiên: Giảm độ sáng tạo dẫn đến ít kết quả ngẫu nhiên hơn. Khi độ sáng tạo gần bằng 0, mô hình sẽ trở nên xác định và lặp lại.', - top_p: 'Top P', - top_pTip: - 'Kiểm soát đa dạng thông qua lấy mẫu nhân nhóm: 0.5 có nghĩa là nửa số tùy chọn có khả năng cao được xem xét.', - presence_penalty: 'Phạt sự hiện diện', - presence_penaltyTip: - 'Độ lớn của sự phạt cho các token mới dựa trên việc chúng có xuất hiện trong văn bản cho đến nay hay không.\nTăng khả năng của mô hình để nói về các chủ đề mới.', - frequency_penalty: 'Phạt tần suất', - frequency_penaltyTip: - 'Độ lớn của sự phạt cho các token mới dựa trên tần suất hiện tại của chúng trong văn bản cho đến nay.\nGiảm khả năng của mô hình để lặp lại cùng một dòng văn bản.', - max_tokens: 'Max token', - max_tokensTip: - 'Sử dụng để giới hạn độ dài tối đa của câu trả lời, theo token. \nGiá trị lớn có thể giới hạn không gian còn lại cho từ khóa khởi đầu, nhật ký trò chuyện và Kiến thức. \nKhuyến nghị đặt giá trị dưới hai phần ba của gpt-4-1106-preview, gpt-4-vision-preview max token (đầu vào 128k đầu ra 4k)', - maxTokenSettingTip: 'Cài đặt max token của bạn quá cao, có thể hạn chế không gian cho từ khóa, truy vấn và dữ liệu. Xem xét đặt nó dưới 2/3.', - setToCurrentModelMaxTokenTip: 'Max token được cập nhật đến 80% token tối đa của mô hình hiện tại {{maxToken}}.', - stop_sequences: 'Chuỗi dừng', - stop_sequencesTip: 'Lên đến bốn chuỗi nơi API sẽ dừng việc tạo ra các token tiếp theo. Văn bản được trả về sẽ không chứa chuỗi dừng.', - stop_sequencesPlaceholder: 'Nhập chuỗi và nhấn Tab', - }, - tone: { - Creative: 'Sáng tạo', - Balanced: 'Cân bằng', - Precise: 'Chính xác', - Custom: 'Tùy chỉnh', - }, - addMoreModel: 'Điều chỉnh cài đặt để thêm mô hình', - settingsLink: 'Cài đặt nhà cung cấp mô hình', - capabilities: 'Khả năng đa phương thức', - }, - menus: { - status: 'beta', - explore: 'Khám phá', - apps: 'Studio', - plugins: 'Plugins', - pluginsTips: 'Tích hợp các plugin bên thứ ba hoặc tạo ra các AI-Plugin tương thích với ChatGPT.', - datasets: 'Kiến thức', - datasetsTips: 'SẮP RA MẮT: Nhập dữ liệu văn bản của bạn hoặc cập nhật dữ liệu theo thời gian thực thông qua Webhook để cải thiện ngữ cảnh LLM.', - newApp: 'Ứng dụng mới', - newDataset: 'Tạo Kiến thức', - tools: 'Công cụ', - exploreMarketplace: 'Khám phá Marketplace', - appDetail: 'Chi tiết ứng dụng', - account: 'báo cáo', - }, - userProfile: { - settings: 'Cài đặt', - emailSupport: 'Hỗ trợ qua Email', - workspace: 'Không gian làm việc', - createWorkspace: 'Tạo Không gian làm việc', - helpCenter: 'Trung tâm trợ giúp', - roadmap: 'Lộ trình', - community: 'Cộng đồng', - about: 'Về chúng tôi', - logout: 'Đăng xuất', - compliance: 'Tuân thủ', - github: 'GitHub', - support: 'Hỗ trợ', - contactUs: 'Liên hệ với chúng tôi', - forum: 'Diễn đàn', - }, - settings: { - accountGroup: 'TÀI KHOẢN', - workplaceGroup: 'KHÔNG GIAN LÀM VIỆC', - account: 'Tài khoản của tôi', - members: 'Thành viên', - billing: 'Thanh toán', - integrations: 'Tích hợp', - language: 'Ngôn ngữ', - provider: 'Nhà cung cấp mô hình', - dataSource: 'Nguồn dữ liệu', - plugin: 'Plugins', - apiBasedExtension: 'Mở rộng dựa trên API', - generalGroup: 'TỔNG QUÁT', - }, - account: { - avatar: 'Ảnh đại diện', - name: 'Tên', - email: 'Email', - password: 'Mật khẩu', - passwordTip: 'Bạn có thể đặt một mật khẩu cố định nếu bạn không muốn sử dụng mã đăng nhập tạm thời', - setPassword: 'Đặt mật khẩu', - resetPassword: 'Đặt lại mật khẩu', - currentPassword: 'Mật khẩu hiện tại', - newPassword: 'Mật khẩu mới', - confirmPassword: 'Xác nhận mật khẩu', - notEqual: 'Hai mật khẩu không giống nhau.', - langGeniusAccount: 'Tài khoản Dify', - langGeniusAccountTip: 'Tài khoản Dify của bạn và dữ liệu người dùng liên quan.', - editName: 'Chỉnh sửa Tên', - showAppLength: 'Hiển thị {{length}} ứng dụng', - delete: 'Xóa tài khoản', - deleteTip: 'Xóa tài khoản của bạn sẽ xóa vĩnh viễn tất cả dữ liệu của bạn và không thể khôi phục được.', - studio: 'Dify Studio', - myAccount: 'Tài khoản của tôi', - account: 'Tài khoản', - deletePrivacyLinkTip: 'Để biết thêm thông tin về cách chúng tôi xử lý dữ liệu của bạn, vui lòng xem', - deletePrivacyLink: 'Chính sách bảo mật.', - deleteSuccessTip: 'Tài khoản của bạn cần thời gian để xóa xong. Chúng tôi sẽ gửi email cho bạn khi tất cả hoàn tất.', - deleteLabel: 'Để xác nhận, vui lòng nhập email của bạn bên dưới', - deletePlaceholder: 'Vui lòng nhập email của bạn', - sendVerificationButton: 'Gửi mã xác minh', - verificationLabel: 'Mã xác minh', - verificationPlaceholder: 'Dán mã gồm 6 chữ số', - permanentlyDeleteButton: 'Xóa vĩnh viễn tài khoản', - feedbackTitle: 'Phản hồi', - feedbackLabel: 'Hãy cho chúng tôi biết lý do tại sao bạn xóa tài khoản của mình?', - feedbackPlaceholder: 'Tùy chọn', - workspaceIcon: 'Biểu tượng không gian làm việc', - workspaceName: 'Tên không gian làm việc', - editWorkspaceInfo: 'Chỉnh sửa thông tin không gian làm việc', - changeEmail: { - existingEmail: 'Một người dùng với email này đã tồn tại.', - title: 'Đổi Email', - resendTip: 'Không nhận được mã sao?', - resend: 'Gửi lại', - emailLabel: 'Email mới', - verifyNew: 'Xác minh email mới của bạn', - newEmail: 'Tạo một địa chỉ email mới', - emailPlaceholder: 'Nhập một email mới', - changeTo: 'Thay đổi thành {{email}}', - content1: 'Nếu bạn tiếp tục, chúng tôi sẽ gửi một mã xác minh đến {{email}} để xác thực lại.', - codeLabel: 'Mã xác thực', - content3: 'Nhập một email mới và chúng tôi sẽ gửi cho bạn một mã xác minh.', - sendVerifyCode: 'Gửi mã xác minh', - content4: 'Chúng tôi vừa gửi cho bạn một mã xác minh tạm thời đến {{email}}.', - resendCount: 'Gửi lại sau {{count}} giây', - continue: 'Tiếp tục', - content2: 'Email hiện tại của bạn là {{email}}. Mã xác minh đã được gửi đến địa chỉ email này.', - verifyEmail: 'Xác minh email hiện tại của bạn', - codePlaceholder: 'Dán mã 6 chữ số', - authTip: 'Khi email của bạn được thay đổi, các tài khoản Google hoặc GitHub liên kết với email cũ của bạn sẽ không còn có thể đăng nhập vào tài khoản này.', - unAvailableEmail: 'Email này hiện không khả dụng tạm thời.', - }, - }, - members: { - team: 'Nhóm', - invite: 'Mời', - name: 'TÊN', - lastActive: 'HOẠT ĐỘNG GẦN ĐÂY', - role: 'VAI TRÒ', - pending: 'Đang chờ...', - owner: 'Chủ sở hữu', - admin: 'Quản trị viên', - adminTip: 'Có thể xây dựng ứng dụng và quản lý cài đặt nhóm', - normal: 'Bình thường', - normalTip: 'Chỉ có thể sử dụng ứng dụng, không thể xây dựng ứng dụng', - editor: 'Biên tập viên', - editorTip: 'Có thể xây dựng ứng dụng, không thể quản lý cài đặt nhóm', - inviteTeamMember: 'Mời thành viên nhóm', - inviteTeamMemberTip: 'Sau khi đăng nhập, họ có thể truy cập trực tiếp vào dữ liệu nhóm của bạn.', - emailNotSetup: 'Máy chủ email chưa được thiết lập, vì vậy không thể gửi email mời. Vui lòng thông báo cho người dùng về liên kết mời sẽ được phát hành sau khi mời.', - email: 'Email', - emailInvalid: 'Định dạng Email không hợp lệ', - emailPlaceholder: 'Vui lòng nhập email', - sendInvite: 'Gửi Lời mời', - invitedAsRole: 'Được mời với vai trò {{role}}', - invitationSent: 'Lời mời đã được gửi', - invitationSentTip: 'Lời mời đã được gửi, và họ có thể đăng nhập vào Dify để truy cập vào dữ liệu nhóm của bạn.', - invitationLink: 'Liên kết Lời mời', - failedInvitationEmails: 'Dưới đây là danh sách email không gửi được lời mời', - ok: 'OK', - removeFromTeam: 'Xóa khỏi nhóm', - removeFromTeamTip: 'Sẽ xóa quyền truy cập nhóm', - setAdmin: 'Đặt làm quản trị viên', - setMember: 'Đặt thành viên bình thường', - setEditor: 'Đặt làm biên tập viên', - disInvite: 'Hủy lời mời', - deleteMember: 'Xóa thành viên', - you: '(Bạn)', - datasetOperatorTip: 'Chỉ có thể quản lý cơ sở kiến thức', - builderTip: 'Có thể xây dựng và chỉnh sửa ứng dụng của riêng mình', - builder: 'Chủ thầu', - datasetOperator: 'Quản trị viên kiến thức', - setBuilder: 'Đặt làm trình tạo', - transferModal: { - resend: 'Gửi lại', - resendTip: 'Chưa nhận được mã?', - continue: 'Tiếp tục', - verifyEmail: 'Xác minh email hiện tại của bạn', - title: 'Chuyển quyền sở hữu không gian làm việc', - transferPlaceholder: 'Chọn một thành viên trong không gian làm việc…', - transferLabel: 'Chuyển quyền sở hữu không gian làm việc cho', - warningTip: 'Bạn sẽ trở thành thành viên quản trị, và chủ sở hữu mới sẽ có toàn quyền kiểm soát.', - verifyContent: 'Email hiện tại của bạn là {{email}}.', - warning: 'Bạn sắp chuyển quyền sở hữu của "{{workspace}}". Điều này có hiệu lực ngay lập tức và không thể hoàn tác.', - codePlaceholder: 'Dán mã 6 chữ số', - transfer: 'Chuyển quyền sở hữu không gian làm việc', - sendVerifyCode: 'Gửi mã xác minh', - resendCount: 'Gửi lại sau {{count}} giây', - codeLabel: 'Mã xác thực', - sendTip: 'Nếu bạn tiếp tục, chúng tôi sẽ gửi một mã xác minh đến {{email}} để xác thực lại.', - verifyContent2: 'Chúng tôi sẽ gửi một mã xác minh tạm thời đến email này để thực hiện xác thực lại.', - }, - transferOwnership: 'Chuyển quyền sở hữu', - }, - integrations: { - connected: 'Đã kết nối', - google: 'Google', - googleAccount: 'Đăng nhập bằng tài khoản Google', - github: 'GitHub', - githubAccount: 'Đăng nhập bằng tài khoản GitHub', - connect: 'Kết nối', - }, - language: { - displayLanguage: 'Ngôn ngữ hiển thị', - timezone: 'Múi giờ', - }, - provider: { - apiKey: 'Khóa API', - enterYourKey: 'Nhập khóa API của bạn ở đây', - invalidKey: 'Khóa API OpenAI không hợp lệ', - validatedError: 'Xác minh thất bại: ', - validating: 'Đang xác minh khóa...', - saveFailed: 'Lưu khóa API thất bại', - apiKeyExceedBill: 'Khóa API này không có lượng truy vấn khả dụng, vui lòng đọc', - addKey: 'Thêm Khóa', - comingSoon: 'Sắp Ra Mắt', - editKey: 'Chỉnh sửa', - invalidApiKey: 'Khóa API không hợp lệ', - azure: { - apiBase: 'Cơ sở API', - apiBasePlaceholder: 'URL cơ sở API của điểm cuối Azure OpenAI của bạn.', - apiKey: 'Khóa API', - apiKeyPlaceholder: 'Nhập khóa API của bạn ở đây', - helpTip: 'Tìm hiểu Dịch vụ Azure OpenAI', - }, - openaiHosted: { - openaiHosted: 'OpenAI đang lưu trữ', - onTrial: 'DÙNG THỬ', - exhausted: 'HẾT QUOTA', - desc: 'Dịch vụ lưu trữ OpenAI được cung cấp bởi Dify cho phép bạn sử dụng các mô hình như GPT-3.5. Trước khi hết lượng truy vấn dùng thử, bạn cần thiết lập các nhà cung cấp mô hình khác.', - callTimes: 'Số lần gọi', - usedUp: 'Quota dùng thử đã hết. Thêm nhà cung cấp Mô hình của riêng bạn.', - useYourModel: 'Hiện đang sử dụng nhà cung cấp Mô hình của riêng bạn.', - close: 'Đóng', - }, - anthropicHosted: { - anthropicHosted: 'Anthropic Claude', - onTrial: 'DÙNG THỬ', - exhausted: 'HẾT QUOTA', - desc: 'Mô hình mạnh mẽ, vượt trội trong một loạt các nhiệm vụ từ trò chuyện phức tạp và tạo nội dung sáng tạo đến hướng dẫn chi tiết.', - callTimes: 'Số lần gọi', - usedUp: 'Quota dùng thử đã hết. Thêm nhà cung cấp Mô hình của riêng bạn.', - useYourModel: 'Hiện đang sử dụng nhà cung cấp Mô hình của riêng bạn.', - close: 'Đóng', - trialQuotaTip: 'Hạn ngạch dùng thử Anthropic của bạn sẽ hết hạn vào 2025/03/11 và sẽ không còn khả dụng sau đó. Vui lòng sử dụng nó kịp thời.', - }, - anthropic: { - using: 'Khả năng nhúng đang sử dụng', - enableTip: 'Để kích hoạt mô hình Anthrop, bạn cần ràng buộc với Dịch vụ OpenAI hoặc Azure OpenAI trước.', - notEnabled: 'Chưa được kích hoạt', - keyFrom: 'Nhận khóa API của bạn từ Anthrop', - }, - encrypted: { - front: 'Khóa API của bạn sẽ được mã hóa và lưu trữ bằng', - back: ' công nghệ.', - }, - }, - modelProvider: { - notConfigured: 'Mô hình hệ thống vẫn chưa được cấu hình hoàn toàn và một số chức năng có thể không khả dụng.', - systemModelSettings: 'Cài đặt Mô hình Hệ thống', - systemModelSettingsLink: 'Tại sao cần thiết phải thiết lập mô hình hệ thống?', - selectModel: 'Chọn mô hình của bạn', - setupModelFirst: 'Vui lòng thiết lập mô hình của bạn trước', - systemReasoningModel: { - key: 'Mô hình lập luận hệ thống', - tip: 'Thiết lập mô hình suy luận mặc định sẽ được sử dụng để tạo ứng dụng. Các tính năng như tạo tên cuộc trò chuyện và đề xuất câu hỏi tiếp theo cũng sẽ sử dụng mô hình suy luận mặc định này.', - }, - embeddingModel: { - key: 'Mô hình nhúng', - tip: 'Thiết lập mô hình mặc định cho việc xử lý nhúng tài liệu của Kiến thức, cả hai phương tiện truy xuất và nhập của Kiến thức đều sử dụng mô hình nhúng này cho xử lý vector hóa. Chuyển đổi sẽ làm cho kích thước vector giữa Kiến thức được nhập và câu hỏi không nhất quán, dẫn đến việc truy xuất thất bại. Để tránh truy xuất thất bại, vui lòng không chuyển đổi mô hình này tùy ý.', - required: 'Mô hình nhúng là bắt buộc', - }, - speechToTextModel: { - key: 'Mô hình Chuyển đổi Văn bản thành Tiếng nói', - tip: 'Thiết lập mô hình mặc định cho đầu vào chuyển đổi tiếng nói thành văn bản trong cuộc trò chuyện.', - }, - ttsModel: { - key: 'Mô hình Văn bản thành Tiếng nói', - tip: 'Thiết lập mô hình mặc định cho đầu vào văn bản thành tiếng nói trong cuộc trò chuyện.', - }, - rerankModel: { - key: 'Mô hình Sắp xếp lại', - tip: 'Mô hình sắp xếp lại sẽ sắp xếp lại danh sách tài liệu ứng cử viên dựa trên sự phù hợp ngữ nghĩa với truy vấn của người dùng, cải thiện kết quả của việc xếp hạng ngữ nghĩa', - }, - quota: 'Hạn mức', - searchModel: 'Mô hình tìm kiếm', - noModelFound: 'Không tìm thấy mô hình cho {{model}}', - models: 'Mô hình', - showMoreModelProvider: 'Hiển thị thêm nhà cung cấp mô hình', - selector: { - tip: 'Mô hình này đã bị xóa. Vui lòng thêm một mô hình hoặc chọn mô hình khác.', - emptyTip: 'Không có mô hình khả dụng', - emptySetting: 'Vui lòng vào cài đặt để cấu hình', - rerankTip: 'Vui lòng thiết lập mô hình sắp xếp lại', - }, - card: { - quota: 'QUOTA', - onTrial: 'Thử nghiệm', - paid: 'Đã thanh toán', - quotaExhausted: 'Quota đã hết', - callTimes: 'Số lần gọi', - tokens: 'Tokens', - buyQuota: 'Mua Quota', - priorityUse: 'Ưu tiên sử dụng', - removeKey: 'Remove API Key', - tip: 'Ưu tiên sẽ được trao cho hạn ngạch đã thanh toán. Hạn ngạch dùng thử sẽ được sử dụng sau khi hết hạn ngạch trả phí.', - }, - item: { - deleteDesc: 'Các mô hình {{modelName}} đang được sử dụng như là các mô hình lập luận hệ thống. Một số chức năng sẽ không khả dụng sau khi loại bỏ. Vui lòng xác nhận.', - freeQuota: 'QUYỀN LỢI MIỄN PHÍ', - }, - addApiKey: 'Thêm khóa API của bạn', - invalidApiKey: 'Khóa API không hợp lệ', - encrypted: { - front: 'Khóa API CỦA BẠN sẽ được mã hóa và lưu trữ bằng', - back: ' công nghệ.', - }, - freeQuota: { - howToEarn: 'Cách kiếm', - }, - addMoreModelProvider: 'THÊM NHÀ CUNG CẤP MÔ HÌNH', - addModel: 'Thêm Mô hình', - modelsNum: '{{num}} Mô hình', - showModels: 'Hiện Mô hình', - showModelsNum: 'Hiện {{num}} Mô hình', - collapse: 'Thu gọn', - config: 'Cấu hình', - modelAndParameters: 'Mô hình và Tham số', - model: 'Mô hình', - featureSupported: '{{feature}} được hỗ trợ', - callTimes: 'Số lần gọi', - credits: 'Tín dụng Tin nhắn', - buyQuota: 'Mua Quyền lợi', - getFreeTokens: 'Nhận mã thông báo miễn phí', - priorityUsing: 'Ưu tiên sử dụng', - deprecated: 'Đã lỗi thời', - confirmDelete: 'Xác nhận xóa?', - quotaTip: 'Số lượng mã thông báo miễn phí còn lại', - loadPresets: 'Tải Cài đặt trước', - parameters: 'THAM SỐ', - loadBalancingHeadline: 'Cân bằng tải', - loadBalancing: 'Cân bằng tải', - configLoadBalancing: 'Cấu hình cân bằng tải', - defaultConfig: 'Cấu hình mặc định', - modelHasBeenDeprecated: 'Mô hình này đã bị phản đối', - providerManagedDescription: 'Sử dụng bộ thông tin đăng nhập duy nhất do nhà cung cấp mô hình cung cấp.', - apiKeyStatusNormal: 'Trạng thái APIKey bình thường', - editConfig: 'Chỉnh sửa cấu hình', - loadBalancingInfo: 'Theo mặc định, cân bằng tải sử dụng chiến lược Vòng tròn. Nếu giới hạn tốc độ được kích hoạt, thời gian hồi chiêu 1 phút sẽ được áp dụng.', - addConfig: 'Thêm cấu hình', - loadBalancingDescription: 'Giảm áp lực với nhiều bộ thông tin xác thực.', - apiKey: 'KHÓA API', - providerManaged: 'Nhà cung cấp được quản lý', - apiKeyRateLimit: 'Đã đạt đến giới hạn tốc độ, có sẵn sau {{giây}} giây', - upgradeForLoadBalancing: 'Nâng cấp gói của bạn để bật Cân bằng tải.', - loadBalancingLeastKeyWarning: 'Để bật cân bằng tải, ít nhất 2 phím phải được bật.', - toBeConfigured: 'Được cấu hình', - emptyProviderTitle: 'Nhà cung cấp mô hình chưa được thiết lập', - discoverMore: 'Khám phá thêm trong', - emptyProviderTip: 'Vui lòng cài đặt nhà cung cấp mô hình trước.', - installProvider: 'Cài đặt nhà cung cấp mô hình', - configureTip: 'Thiết lập api-key hoặc thêm mô hình để sử dụng', - auth: { - apiKeyModal: { - addModel: 'Thêm mô hình', - title: 'Cấu hình ủy quyền khóa API', - desc: 'Sau khi cấu hình thông tin xác thực, tất cả các thành viên trong không gian làm việc có thể sử dụng mô hình này khi điều phối các ứng dụng.', - }, - addNewModel: 'Thêm mô hình mới', - addCredential: 'Thêm thông tin đăng nhập', - configLoadBalancing: 'Cấu hình cân bằng tải', - apiKeys: 'Chìa khóa API', - authorizationError: 'Lỗi xác thực', - configModel: 'Cấu hình mô hình', - modelCredentials: 'Chứng chỉ của mô hình', - unAuthorized: 'Không có quyền truy cập', - addApiKey: 'Thêm khóa API', - providerManagedTip: 'Cấu hình hiện tại được lưu trữ bởi nhà cung cấp.', - specifyModelCredential: 'Xác định thông tin xác thực của mô hình', - specifyModelCredentialTip: 'Sử dụng thông tin xác thực của mô hình đã cấu hình.', - addModelCredential: 'Thêm thông tin đăng nhập mô hình', - authRemoved: 'Chính quyền đã loại bỏ', - providerManaged: 'Nhà cung cấp đã được quản lý', - modelCredential: 'Thông tin đăng nhập mô hình', - addModel: 'Thêm mô hình', - removeModel: 'Loại bỏ mô hình', - manageCredentials: 'Quản lý thông tin đăng nhập', - editModelCredential: 'Chỉnh sửa thông tin xác thực mô hình', - customModelCredentials: 'Thông tin đăng nhập mô hình tùy chỉnh', - customModelCredentialsDeleteTip: 'Thông tin đăng nhập đang được sử dụng và không thể xóa', - addNewModelCredential: 'Thêm thông tin xác thực mô hình mới', - selectModelCredential: 'Chọn thông tin xác thực mô hình', - }, - parametersInvalidRemoved: 'Một số tham số không hợp lệ và đã được loại bỏ', - installDataSourceProvider: 'Cài đặt các nhà cung cấp nguồn dữ liệu', - }, - dataSource: { - add: 'Thêm nguồn dữ liệu', - connect: 'Kết nối', - notion: { - title: 'Notion', - description: 'Sử dụng Notion như một nguồn dữ liệu cho Kiến thức.', - connectedWorkspace: 'Không gian làm việc đã kết nối', - addWorkspace: 'Thêm không gian làm việc', - connected: 'Đã kết nối', - disconnected: 'Đã ngắt kết nối', - changeAuthorizedPages: 'Thay đổi trang được ủy quyền', - pagesAuthorized: 'Các trang được ủy quyền', - sync: 'Đồng bộ', - remove: 'Xóa', - selector: { - pageSelected: 'Các trang đã chọn', - searchPages: 'Tìm kiếm trang...', - noSearchResult: 'Không có kết quả tìm kiếm', - addPages: 'Thêm trang', - preview: 'Xem trước', - }, - integratedAlert: 'Notion được tích hợp thông qua thông tin xác thực nội bộ, không cần phải ủy quyền lại.', - }, - website: { - title: 'Trang mạng', - inactive: 'Không hoạt động', - with: 'Với', - active: 'Hoạt động', - configuredCrawlers: 'Trình thu thập thông tin đã định cấu hình', - description: 'Nhập nội dung từ các trang web bằng trình thu thập dữ liệu web.', - }, - configure: 'Cấu hình', - }, - plugin: { - serpapi: { - apiKey: 'Khóa API', - apiKeyPlaceholder: 'Nhập khóa API của bạn', - keyFrom: 'Nhận khóa SerpAPI của bạn từ Trang tài khoản SerpAPI', - }, - }, - apiBasedExtension: { - title: 'Các tiện ích API cung cấp quản lý API tập trung, giúp cấu hình dễ dàng sử dụng trên các ứng dụng của Dify.', - link: 'Tìm hiểu cách phát triển Phần mở rộng API của riêng bạn.', - add: 'Thêm Phần mở rộng API', - selector: { - title: 'Phần mở rộng API', - placeholder: 'Vui lòng chọn phần mở rộng API', - manage: 'Quản lý Phần mở rộng API', - }, - modal: { - title: 'Thêm Phần mở rộng API', - editTitle: 'Chỉnh sửa Phần mở rộng API', - name: { - title: 'Tên', - placeholder: 'Vui lòng nhập tên', - }, - apiEndpoint: { - title: 'Điểm cuối API', - placeholder: 'Vui lòng nhập điểm cuối API', - }, - apiKey: { - title: 'Khóa API', - placeholder: 'Vui lòng nhập khóa API', - lengthError: 'Độ dài khóa API không được nhỏ hơn 5 ký tự', - }, - }, - type: 'Loại', - }, - about: { - changeLog: 'Nhật ký thay đổi', - updateNow: 'Cập nhật ngay', - nowAvailable: 'Dify {{version}} hiện đã có sẵn.', - latestAvailable: 'Dify {{version}} là phiên bản mới nhất hiện có.', - }, - appMenus: { - overview: 'Giám sát', - promptEng: 'Orchestrate', - apiAccess: 'Truy cập API', - logAndAnn: 'Nhật ký & Thông báo', - logs: 'Nhật ký', - }, - environment: { - testing: 'TESTING', - development: 'DEVELOPMENT', - }, - appModes: { - completionApp: 'Ứng dụng Tạo văn bản', - chatApp: 'Ứng dụng Trò chuyện', - }, - datasetMenus: { - documents: 'Tài liệu', - hitTesting: 'Kiểm tra truy vấn', - settings: 'Cài đặt', - emptyTip: 'Kiến thức chưa được liên kết, vui lòng đi đến ứng dụng hoặc plug-in để hoàn thành liên kết.', - viewDoc: 'Xem tài liệu', - relatedApp: 'các ứng dụng liên kết', - noRelatedApp: 'Không có ứng dụng được liên kết', - pipeline: 'Đường ống', - }, - voiceInput: { - speaking: 'Hãy nói...', - converting: 'Chuyển đổi thành văn bản...', - notAllow: 'micro không được ủy quyền', - }, - 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: 'Đổi tên Cuộc trò chuyện', - conversationName: 'Tên cuộc trò chuyện', - conversationNamePlaceholder: 'Vui lòng nhập tên cuộc trò chuyện', - conversationNameCanNotEmpty: 'Yêu cầu nhập tên cuộc trò chuyện', - citation: { - title: 'THAM KHẢO', - linkToDataset: 'Liên kết tới Kiến thức', - characters: 'Ký tự:', - hitCount: 'Số lượt truy xuất:', - vectorHash: 'Vector hash:', - hitScore: 'Điểm truy xuất:', - }, - inputPlaceholder: 'Nói chuyện với {{botName}}', - thought: 'Tư duy', - thinking: 'Suy nghĩ...', - resend: 'Gửi lại', - }, - promptEditor: { - placeholder: 'Viết từ khóa của bạn ở đây, nhập \'{\' để chèn một biến, nhập \'/\' để chèn một khối nội dung nhắc nhở', - context: { - item: { - title: 'Bối cảnh', - desc: 'Chèn mẫu bối cảnh', - }, - modal: { - title: '{{num}} Kiến thức trong Bối cảnh', - add: 'Thêm Bối cảnh', - footer: 'Bạn có thể quản lý các bối cảnh trong phần Bối cảnh bên dưới.', - }, - }, - history: { - item: { - title: 'Lịch sử Cuộc trò chuyện', - desc: 'Chèn mẫu tin nhắn lịch sử', - }, - modal: { - title: 'VÍ DỤ', - user: 'Xin chào', - assistant: 'Xin chào! Tôi có thể giúp gì cho bạn hôm nay?', - edit: 'Chỉnh sửa Tên Vai trò Cuộc trò chuyện', - }, - }, - variable: { - item: { - title: 'Biến & Công cụ Bên ngoài', - desc: 'Chèn Biến & Công cụ Bên ngoài', - }, - outputToolDisabledItem: { - title: 'Công cụ Bên ngoài', - desc: 'Công cụ Bên ngoài không thể chèn vào đây', - }, - modal: { - add: 'Biến mới', - addTool: 'Công cụ mới', - }, - }, - query: { - item: { - title: 'Truy vấn', - desc: 'Chèn mẫu truy vấn người dùng', - }, - }, - existed: 'Đã tồn tại trong tin nhắn', - }, - imageUploader: { - uploadFromComputer: 'Tải lên từ Máy tính', - uploadFromComputerReadError: 'Đọc ảnh thất bại, vui lòng thử lại.', - uploadFromComputerUploadError: 'Tải ảnh lên thất bại, vui lòng tải lên lại.', - uploadFromComputerLimit: 'Ảnh tải lên không được vượt quá {{size}} MB', - pasteImageLink: 'Dán liên kết ảnh', - pasteImageLinkInputPlaceholder: 'Dán liên kết ảnh ở đây', - pasteImageLinkInvalid: 'Liên kết ảnh không hợp lệ', - imageUpload: 'Tải ảnh lên', - }, - tag: { - placeholder: 'Tất cả các thẻ', - addNew: 'Thêm thẻ mới', - noTag: 'Không có thẻ', - noTagYet: 'Chưa có thẻ', - addTag: 'thêm thẻ', - editTag: 'Chỉnh sửa thẻ', - manageTags: 'Quản lý thẻ', - selectorPlaceholder: 'Nhập để tìm kiếm hoặc tạo', - create: 'Tạo', - delete: 'Xóa thẻ', - deleteTip: 'Thẻ đang được sử dụng, xóa nó đi?', - created: 'Thẻ được tạo thành công', - failed: 'Tạo thẻ không thành công', - }, - errorMsg: { - fieldRequired: '{{trường}} là bắt buộc', - urlError: 'URL phải bắt đầu bằng http:// hoặc https://', - }, - fileUploader: { - uploadFromComputer: 'Tải lên cục bộ', - pasteFileLink: 'Dán liên kết tệp', - pasteFileLinkInputPlaceholder: 'Nhập URL...', - uploadFromComputerLimit: 'Tải lên tệp không được vượt quá {{size}}', - fileExtensionNotSupport: 'Phần mở rộng tệp không được hỗ trợ', - pasteFileLinkInvalid: 'Liên kết tệp không hợp lệ', - uploadFromComputerUploadError: 'Tải lên tệp không thành công, vui lòng tải lên lại.', - uploadFromComputerReadError: 'Đọc tệp không thành công, vui lòng thử lại.', - fileExtensionBlocked: 'Loại tệp này bị chặn vì lý do bảo mật', - uploadDisabled: 'Tải tệp bị vô hiệu hóa', - }, - license: { - expiring_plural: 'Hết hạn sau {{count}} ngày', - expiring: 'Hết hạn trong một ngày', - unlimited: 'Vô hạn', - }, - pagination: { - perPage: 'Mục trên mỗi trang', - }, - theme: { - auto: 'hệ thống', - theme: 'Chủ đề', - light: 'ánh sáng', - dark: 'tối', - }, - compliance: { - iso27001: 'Chứng nhận ISO 27001:2022', - gdpr: 'GDPR DPA', - soc2Type1: 'Báo cáo loại SOC 2 Type I', - professionalUpgradeTooltip: 'Chỉ có sẵn với gói Team hoặc cao hơn.', - sandboxUpgradeTooltip: 'Chỉ có sẵn với gói Chuyên nghiệp hoặc Nhóm.', - soc2Type2: 'Báo cáo SOC 2 Type II', - }, - imageInput: { - supportedFormats: 'Hỗ trợ PNG, JPG, JPEG, WEBP và GIF', - dropImageHere: 'Kéo hình ảnh của bạn vào đây, hoặc', - browse: 'duyệt', - }, - you: 'Bạn', - avatar: { - deleteTitle: 'Xóa Ảnh Đại Diện', - deleteDescription: 'Bạn có chắc chắn muốn xóa ảnh đại diện của mình không? Tài khoản của bạn sẽ sử dụng avatar mặc định.', - }, - feedback: { - content: 'Nội dung phản hồi', - title: 'Cung cấp phản hồi', - placeholder: 'Xin vui lòng miêu tả những gì đã xảy ra không đúng hoặc chúng tôi có thể cải thiện như thế nào...', - subtitle: 'Xin vui lòng cho chúng tôi biết điều gì đã sai với phản hồi này', - }, - label: { - optional: '(tùy chọn)', - }, - noData: 'Không có dữ liệu', - dynamicSelect: { - error: 'Tải tùy chọn thất bại', - noData: 'Không có tùy chọn nào', - loading: 'Đang tải tùy chọn...', - selected: '{{count}} đã chọn', - }, -} - -export default translation diff --git a/web/i18n/vi-VN/custom.json b/web/i18n/vi-VN/custom.json new file mode 100644 index 0000000000..7329626cdd --- /dev/null +++ b/web/i18n/vi-VN/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "Tùy chỉnh", + "upgradeTip": { + "prefix": "Nâng cấp gói của bạn để", + "suffix": "tùy chỉnh thương hiệu.", + "des": "Nâng cấp kế hoạch của bạn để tùy chỉnh thương hiệu của bạn", + "title": "Nâng cấp gói của bạn" + }, + "webapp": { + "title": "Tùy chỉnh thương hiệu web app", + "removeBrand": "Xóa \"Được hỗ trợ bởi Dify\"", + "changeLogo": "Thay đổi logo \"Được hỗ trợ bởi\"", + "changeLogoTip": "Định dạng SVG hoặc PNG với kích thước tối thiểu 40x40px" + }, + "app": { + "title": "Tùy chỉnh thương hiệu tiêu đề ứng dụng", + "changeLogoTip": "Định dạng SVG hoặc PNG với kích thước tối thiểu 80x80px" + }, + "upload": "Tải lên", + "uploading": "Đang tải lên", + "uploadedFail": "Tải ảnh lên thất bại, vui lòng thử lại.", + "change": "Thay đổi", + "apply": "Áp dụng", + "restore": "Khôi phục mặc định", + "customize": { + "contactUs": "liên hệ với chúng tôi", + "prefix": "Để tùy chỉnh logo thương hiệu trong ứng dụng, vui lòng", + "suffix": "để nâng cấp lên phiên bản Doanh nghiệp." + } +} diff --git a/web/i18n/vi-VN/custom.ts b/web/i18n/vi-VN/custom.ts deleted file mode 100644 index 4122b5d35c..0000000000 --- a/web/i18n/vi-VN/custom.ts +++ /dev/null @@ -1,32 +0,0 @@ -const translation = { - custom: 'Tùy chỉnh', - upgradeTip: { - prefix: 'Nâng cấp gói của bạn để', - suffix: 'tùy chỉnh thương hiệu.', - des: 'Nâng cấp kế hoạch của bạn để tùy chỉnh thương hiệu của bạn', - title: 'Nâng cấp gói của bạn', - }, - webapp: { - title: 'Tùy chỉnh thương hiệu web app', - removeBrand: 'Xóa "Được hỗ trợ bởi Dify"', - changeLogo: 'Thay đổi logo "Được hỗ trợ bởi"', - changeLogoTip: 'Định dạng SVG hoặc PNG với kích thước tối thiểu 40x40px', - }, - app: { - title: 'Tùy chỉnh thương hiệu tiêu đề ứng dụng', - changeLogoTip: 'Định dạng SVG hoặc PNG với kích thước tối thiểu 80x80px', - }, - upload: 'Tải lên', - uploading: 'Đang tải lên', - uploadedFail: 'Tải ảnh lên thất bại, vui lòng thử lại.', - change: 'Thay đổi', - apply: 'Áp dụng', - restore: 'Khôi phục mặc định', - customize: { - contactUs: 'liên hệ với chúng tôi', - prefix: 'Để tùy chỉnh logo thương hiệu trong ứng dụng, vui lòng', - suffix: 'để nâng cấp lên phiên bản Doanh nghiệp.', - }, -} - -export default translation diff --git a/web/i18n/vi-VN/dataset-creation.json b/web/i18n/vi-VN/dataset-creation.json new file mode 100644 index 0000000000..74296f7302 --- /dev/null +++ b/web/i18n/vi-VN/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "Kiến thức" + }, + "one": "Chọn nguồn dữ liệu", + "two": "Tiền xử lý và làm sạch văn bản", + "three": "Thực hiện và hoàn thành" + }, + "error": { + "unavailable": "Kiến thức này không khả dụng" + }, + "stepOne": { + "filePreview": "Xem trước tệp", + "pagePreview": "Xem trước trang", + "dataSourceType": { + "file": "Nhập từ tệp văn bản", + "notion": "Đồng bộ từ Notion", + "web": "Đồng bộ từ trang web" + }, + "uploader": { + "title": "Tải lên tệp văn bản", + "button": "Kéo và thả các tập tin hoặc thư mục, hoặc", + "buttonSingleFile": "Kéo và thả tệp hoặc", + "browse": "Chọn tệp", + "tip": "Hỗ trợ {{supportTypes}}. Tối đa {{size}}MB mỗi tệp.", + "validation": { + "typeError": "Loại tệp không được hỗ trợ", + "size": "Tệp quá lớn. Tối đa là {{size}}MB", + "count": "Không hỗ trợ tải lên nhiều tệp", + "filesNumber": "Bạn đã đạt đến giới hạn tải lên lô của {{filesNumber}} tệp." + }, + "cancel": "Hủy", + "change": "Thay đổi", + "failed": "Tải lên thất bại" + }, + "notionSyncTitle": "Notion chưa được kết nối", + "notionSyncTip": "Để đồng bộ với Notion, trước tiên cần thiết lập kết nối với Notion.", + "connect": "Đi đến kết nối", + "button": "tiếp theo", + "emptyDatasetCreation": "Tôi muốn tạo Kiến thức trống", + "modal": { + "title": "Tạo Kiến thức trống", + "tip": "Một Kiến thức trống sẽ không chứa tài liệu nào, và bạn có thể tải lên tài liệu bất kỳ lúc nào.", + "input": "Tên Kiến thức", + "placeholder": "Vui lòng nhập", + "nameNotEmpty": "Tên không thể để trống", + "nameLengthInvalid": "Tên phải từ 1 đến 40 ký tự", + "cancelButton": "Hủy", + "confirmButton": "Tạo", + "failed": "Tạo thất bại" + }, + "website": { + "fireCrawlNotConfigured": "Firecrawl không được cấu hình", + "limit": "Giới hạn", + "run": "Chạy", + "firecrawlDoc": "Tài liệu Firecrawl", + "fireCrawlNotConfiguredDescription": "Định cấu hình Firecrawl bằng khóa API để sử dụng.", + "configure": "Cấu hình", + "scrapTimeInfo": "Tổng cộng {{tổng}} trang được thu thập trong vòng {{thời gian}}", + "options": "Tùy chọn", + "unknownError": "Lỗi không xác định", + "extractOnlyMainContent": "Chỉ trích xuất nội dung chính (không có đầu trang, điều hướng, chân trang, v.v.)", + "exceptionErrorTitle": "Một ngoại lệ xảy ra trong khi chạy tác vụ Firecrawl:", + "selectAll": "Chọn tất cả", + "firecrawlTitle": "Trích xuất nội dung web bằng 🔥Firecrawl", + "totalPageScraped": "Tổng số trang được cạo:", + "excludePaths": "Loại trừ đường dẫn", + "includeOnlyPaths": "Chỉ bao gồm đường dẫn", + "maxDepth": "Độ sâu tối đa", + "preview": "Download", + "resetAll": "Đặt lại tất cả", + "crawlSubPage": "Thu thập dữ liệu các trang phụ", + "maxDepthTooltip": "Độ sâu tối đa cần thu thập dữ liệu so với URL đã nhập. Độ sâu 0 chỉ cần cạo trang của url đã nhập, độ sâu 1 cạo url và mọi thứ sau khi nhậpURL + một /, v.v.", + "jinaReaderTitle": "Chuyển đổi toàn bộ trang web thành Markdown", + "jinaReaderDoc": "Tìm hiểu thêm về Jina Reader", + "useSitemap": "Sử dụng sơ đồ trang web", + "chooseProvider": "Chọn nhà cung cấp", + "jinaReaderDocLink": "https://jina.ai/reader", + "jinaReaderNotConfigured": "Jina Reader không được cấu hình", + "jinaReaderNotConfiguredDescription": "Thiết lập Jina Reader bằng cách nhập khóa API miễn phí của bạn để truy cập.", + "useSitemapTooltip": "Thực hiện theo sơ đồ trang web để thu thập dữ liệu trang web. Nếu không, Jina Reader sẽ thu thập dữ liệu lặp đi lặp lại dựa trên mức độ liên quan của trang, mang lại ít trang hơn nhưng chất lượng cao hơn.", + "configureWatercrawl": "Cấu hình Watercrawl", + "configureFirecrawl": "Cấu hình Firecrawl", + "configureJinaReader": "Cấu hình Jina Reader", + "waterCrawlNotConfiguredDescription": "Cấu hình Watercrawl với khóa API để sử dụng nó.", + "watercrawlTitle": "Trích xuất nội dung web bằng Watercrawl", + "watercrawlDoc": "Tài liệu Watercrawl", + "waterCrawlNotConfigured": "Watercrawl chưa được cấu hình", + "running": "Chạy" + }, + "cancel": "Hủy" + }, + "stepTwo": { + "segmentation": "Cài đặt phân đoạn", + "auto": "Tự động", + "autoDescription": "Tự động thiết lập quy tắc phân đoạn và tiền xử lý. Khuyến nghị cho người dùng mới.", + "custom": "Tùy chỉnh", + "customDescription": "Tùy chỉnh quy tắc phân đoạn, độ dài đoạn và quy tắc tiền xử lý, v.v.", + "separator": "Ký tự phân đoạn", + "separatorPlaceholder": "Ví dụ, dòng mới (\\\\n) hoặc ký tự đặc biệt (như \"***\")", + "maxLength": "Độ dài tối đa của đoạn", + "overlap": "Độ chồng lấp đoạn", + "overlapTip": "Thiết lập chồng lấp đoạn có thể duy trì sự liên quan ngữ nghĩa giữa chúng, tăng cường hiệu quả truy xuất. Đề xuất thiết lập từ 10% đến 25% của kích thước đoạn tối đa.", + "overlapCheck": "Độ chồng lấp đoạn không nên lớn hơn độ dài tối đa của đoạn", + "rules": "Quy tắc tiền xử lý văn bản", + "removeExtraSpaces": "Thay thế khoảng trắng liên tục, dòng mới và tab", + "removeUrlEmails": "Xóa tất cả URL và địa chỉ email", + "removeStopwords": "Loại bỏ các từ dừng như \"một\", \"và\", \"những\"", + "preview": "Xác nhận & Xem trước", + "reset": "Đặt lại", + "indexMode": "Chế độ chỉ mục", + "qualified": "Chất lượng cao", + "recommend": "Khuyến nghị", + "qualifiedTip": "Sử dụng giao diện nhúng hệ thống mặc định để xử lý, cung cấp độ chính xác cao hơn khi người dùng truy vấn.", + "warning": "Vui lòng thiết lập khóa API nhà cung cấp mô hình trước.", + "click": "Đi đến cài đặt", + "economical": "Tiết kiệm", + "economicalTip": "Sử dụng các động cơ vector ngoại tuyến, chỉ mục từ khóa, v.v. để giảm độ chính xác mà không tốn token", + "QATitle": "Phân đoạn theo định dạng Câu hỏi & Trả lời", + "QATip": "Bật tùy chọn này sẽ tiêu tốn thêm token", + "QALanguage": "Phân đoạn bằng", + "estimateCost": "Ước tính", + "estimateSegment": "Số đoạn ước tính", + "segmentCount": "đoạn", + "calculating": "Đang tính toán...", + "fileSource": "Tiền xử lý tài liệu", + "notionSource": "Tiền xử lý trang", + "other": "và ", + "fileUnit": " tệp", + "notionUnit": " trang", + "previousStep": "Quay lại", + "nextStep": "Lưu & Xử lý", + "save": "Lưu & Xử lý", + "cancel": "Hủy", + "sideTipTitle": "Tại sao phải phân đoạn và tiền xử lý?", + "sideTipP1": "Khi xử lý dữ liệu văn bản, phân đoạn và làm sạch là hai bước tiền xử lý quan trọng.", + "sideTipP2": "Phân đoạn chia nhỏ văn bản dài thành các đoạn để mô hình hiểu được tốt hơn. Điều này cải thiện chất lượng và tính liên quan của kết quả mô hình.", + "sideTipP3": "Làm sạch loại bỏ các ký tự và định dạng không cần thiết, làm cho Kiến thức trở nên sạch sẽ và dễ dàng phân tích hơn.", + "sideTipP4": "Phân đoạn và làm sạch đúng cách cải thiện hiệu suất của mô hình, cung cấp kết quả chính xác và có giá trị hơn.", + "previewTitle": "Xem trước", + "previewTitleButton": "Xem trước", + "previewButton": "Chuyển sang dạng Câu hỏi & Trả lời", + "previewSwitchTipStart": "Xem trước đoạn hiện tại đang ở định dạng văn bản, chuyển sang xem trước dạng câu hỏi và trả lời sẽ", + "previewSwitchTipEnd": " tiêu tốn thêm token", + "characters": "ký tự", + "indexSettingTip": "Để thay đổi phương pháp chỉ mục, vui lòng đi tới ", + "retrievalSettingTip": "Để thay đổi phương pháp truy xuất, vui lòng đi tới ", + "datasetSettingLink": "cài đặt Kiến thức.", + "websiteSource": "Trang web tiền xử lý", + "webpageUnit": "Trang", + "separatorTip": "Dấu phân cách là ký tự được sử dụng để phân tách văn bản. \\n\\n và \\n là dấu phân cách thường được sử dụng để tách các đoạn văn và dòng. Kết hợp với dấu phẩy (\\n\\n,\\n), các đoạn văn sẽ được phân đoạn theo các dòng khi vượt quá độ dài đoạn tối đa. Bạn cũng có thể sử dụng dấu phân cách đặc biệt do chính bạn xác định (ví dụ: ***).", + "maxLengthCheck": "Chiều dài đoạn tối đa phải nhỏ hơn {{limit}}", + "fullDocTip": "Toàn bộ tài liệu được sử dụng làm phần cha và được truy xuất trực tiếp. Xin lưu ý rằng vì lý do hiệu suất, văn bản vượt quá 10000 mã thông báo sẽ tự động bị cắt bớt.", + "parentChild": "Cha mẹ-con cái", + "general": "Tổng quát", + "parentChildTip": "Khi sử dụng chế độ cha-con, phần con được sử dụng để truy xuất và phần cha được sử dụng để gọi lại dưới dạng ngữ cảnh.", + "fullDoc": "Tài liệu đầy đủ", + "notAvailableForQA": "Không có sẵn cho Chỉ số Hỏi & Đáp", + "notAvailableForParentChild": "Không có sẵn cho Chỉ số cha mẹ-con", + "previewChunk": "Xem trước Chunk", + "previewChunkTip": "Nhấp vào nút 'Preview Chunk' ở bên trái để tải bản xem trước", + "childChunkForRetrieval": "Child-chunk để truy xuất", + "highQualityTip": "Sau khi hoàn tất việc nhúng ở chế độ Chất lượng cao, không thể hoàn nguyên về chế độ Tiết kiệm.", + "useQALanguage": "Chunk sử dụng định dạng Q & A trong", + "generalTip": "Chế độ phân đoạn văn bản chung, các đoạn được truy xuất và gọi lại là như nhau.", + "qaSwitchHighQualityTipTitle": "Định dạng Q & A yêu cầu phương pháp lập chỉ mục chất lượng cao", + "qaSwitchHighQualityTipContent": "Hiện tại, chỉ có phương pháp chỉ mục chất lượng cao mới hỗ trợ phân đoạn định dạng Q&A. Bạn có muốn chuyển sang chế độ chất lượng cao không?", + "switch": "Chuyển", + "paragraph": "Đoạn", + "parentChunkForContext": "Parent-chunk cho ngữ cảnh", + "previewChunkCount": "{{đếm}} Khối ước tính", + "parentChildDelimiterTip": "Dấu phân cách là ký tự được sử dụng để phân tách văn bản. \\n\\n được khuyến nghị để chia tài liệu gốc thành các phần lớn của cha mẹ. Bạn cũng có thể sử dụng các dấu phân cách đặc biệt do chính bạn xác định.", + "parentChildChunkDelimiterTip": "Dấu phân cách là ký tự được sử dụng để phân tách văn bản. \\n được khuyến nghị để chia các chunk cha thành các chunk con nhỏ. Bạn cũng có thể sử dụng các dấu phân cách đặc biệt do chính bạn xác định.", + "paragraphTip": "Chế độ này chia văn bản thành các đoạn văn dựa trên dấu phân cách và độ dài khối tối đa, sử dụng văn bản được tách làm phần gốc để truy xuất.", + "qaTip": "Khi sử dụng dữ liệu Hỏi đáp có cấu trúc, bạn có thể tạo tài liệu ghép câu hỏi với câu trả lời. Các tài liệu này được lập chỉ mục dựa trên phần câu hỏi, cho phép hệ thống truy xuất các câu trả lời có liên quan dựa trên sự tương đồng của truy vấn." + }, + "stepThree": { + "creationTitle": "🎉 Kiến thức đã được tạo", + "creationContent": "Chúng tôi đã tự động đặt tên cho Kiến thức, bạn có thể sửa đổi nó bất kỳ lúc nào", + "label": "Tên Kiến thức", + "additionTitle": "🎉 Tài liệu đã được tải lên", + "additionP1": "Tài liệu đã được tải lên Kiến thức", + "additionP2": ", bạn có thể tìm thấy nó trong danh sách tài liệu của Kiến thức.", + "stop": "Dừng xử lý", + "resume": "Tiếp tục xử lý", + "navTo": "Đi đến tài liệu", + "sideTipTitle": "Tiếp theo là gì", + "sideTipContent": "Sau khi tài liệu hoàn thành chỉ mục, Kiến thức có thể được tích hợp vào ứng dụng như một ngữ cảnh, bạn có thể tìm cài đặt ngữ cảnh trong trang điều chỉnh prompt. Bạn cũng có thể tạo nó như một plugin chỉ mục ChatGPT độc lập để phát hành.", + "modelTitle": "Bạn có chắc chắn muốn dừng việc nhúng?", + "modelContent": "Nếu bạn cần tiếp tục xử lý sau này, bạn sẽ tiếp tục từ vị trí bạn đã dừng lại.", + "modelButtonConfirm": "Xác nhận", + "modelButtonCancel": "Hủy" + }, + "firecrawl": { + "getApiKeyLinkText": "Lấy khóa API của bạn từ firecrawl.dev", + "configFirecrawl": "Định cấu hình 🔥Firecrawl", + "apiKeyPlaceholder": "Khóa API từ firecrawl.dev" + }, + "jinaReader": { + "getApiKeyLinkText": "Nhận khóa API miễn phí của bạn tại jina.ai", + "configJinaReader": "Định cấu hình Jina Reader", + "apiKeyPlaceholder": "Khóa API từ jina.ai" + }, + "otherDataSource": { + "title": "Kết nối với các nguồn dữ liệu khác?", + "description": "Hiện tại, cơ sở tri thức của Dify chỉ có nguồn dữ liệu hạn chế. Đóng góp nguồn dữ liệu vào cơ sở kiến thức Dify là một cách tuyệt vời để giúp nâng cao tính linh hoạt và sức mạnh của nền tảng cho tất cả người dùng. Hướng dẫn đóng góp của chúng tôi giúp bạn dễ dàng bắt đầu. Vui lòng nhấp vào liên kết bên dưới để tìm hiểu thêm.", + "learnMore": "Tìm hiểu thêm" + }, + "watercrawl": { + "configWatercrawl": "Cấu hình Watercrawl", + "apiKeyPlaceholder": "Khóa API từ watercrawl.dev", + "getApiKeyLinkText": "Lấy mã API của bạn từ watercrawl.dev" + } +} diff --git a/web/i18n/vi-VN/dataset-creation.ts b/web/i18n/vi-VN/dataset-creation.ts deleted file mode 100644 index 67de5120b1..0000000000 --- a/web/i18n/vi-VN/dataset-creation.ts +++ /dev/null @@ -1,217 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: 'Kiến thức', - }, - one: 'Chọn nguồn dữ liệu', - two: 'Tiền xử lý và làm sạch văn bản', - three: 'Thực hiện và hoàn thành', - }, - error: { - unavailable: 'Kiến thức này không khả dụng', - }, - stepOne: { - filePreview: 'Xem trước tệp', - pagePreview: 'Xem trước trang', - dataSourceType: { - file: 'Nhập từ tệp văn bản', - notion: 'Đồng bộ từ Notion', - web: 'Đồng bộ từ trang web', - }, - uploader: { - title: 'Tải lên tệp văn bản', - button: 'Kéo và thả các tập tin hoặc thư mục, hoặc', - buttonSingleFile: 'Kéo và thả tệp hoặc', - browse: 'Chọn tệp', - tip: 'Hỗ trợ {{supportTypes}}. Tối đa {{size}}MB mỗi tệp.', - validation: { - typeError: 'Loại tệp không được hỗ trợ', - size: 'Tệp quá lớn. Tối đa là {{size}}MB', - count: 'Không hỗ trợ tải lên nhiều tệp', - filesNumber: 'Bạn đã đạt đến giới hạn tải lên lô của {{filesNumber}} tệp.', - }, - cancel: 'Hủy', - change: 'Thay đổi', - failed: 'Tải lên thất bại', - }, - notionSyncTitle: 'Notion chưa được kết nối', - notionSyncTip: 'Để đồng bộ với Notion, trước tiên cần thiết lập kết nối với Notion.', - connect: 'Đi đến kết nối', - button: 'tiếp theo', - emptyDatasetCreation: 'Tôi muốn tạo Kiến thức trống', - modal: { - title: 'Tạo Kiến thức trống', - tip: 'Một Kiến thức trống sẽ không chứa tài liệu nào, và bạn có thể tải lên tài liệu bất kỳ lúc nào.', - input: 'Tên Kiến thức', - placeholder: 'Vui lòng nhập', - nameNotEmpty: 'Tên không thể để trống', - nameLengthInvalid: 'Tên phải từ 1 đến 40 ký tự', - cancelButton: 'Hủy', - confirmButton: 'Tạo', - failed: 'Tạo thất bại', - }, - website: { - fireCrawlNotConfigured: 'Firecrawl không được cấu hình', - limit: 'Giới hạn', - run: 'Chạy', - firecrawlDoc: 'Tài liệu Firecrawl', - fireCrawlNotConfiguredDescription: 'Định cấu hình Firecrawl bằng khóa API để sử dụng.', - configure: 'Cấu hình', - scrapTimeInfo: 'Tổng cộng {{tổng}} trang được thu thập trong vòng {{thời gian}}', - options: 'Tùy chọn', - unknownError: 'Lỗi không xác định', - extractOnlyMainContent: 'Chỉ trích xuất nội dung chính (không có đầu trang, điều hướng, chân trang, v.v.)', - exceptionErrorTitle: 'Một ngoại lệ xảy ra trong khi chạy tác vụ Firecrawl:', - selectAll: 'Chọn tất cả', - firecrawlTitle: 'Trích xuất nội dung web bằng 🔥Firecrawl', - totalPageScraped: 'Tổng số trang được cạo:', - excludePaths: 'Loại trừ đường dẫn', - includeOnlyPaths: 'Chỉ bao gồm đường dẫn', - maxDepth: 'Độ sâu tối đa', - preview: 'Download', - resetAll: 'Đặt lại tất cả', - crawlSubPage: 'Thu thập dữ liệu các trang phụ', - maxDepthTooltip: 'Độ sâu tối đa cần thu thập dữ liệu so với URL đã nhập. Độ sâu 0 chỉ cần cạo trang của url đã nhập, độ sâu 1 cạo url và mọi thứ sau khi nhậpURL + một /, v.v.', - jinaReaderTitle: 'Chuyển đổi toàn bộ trang web thành Markdown', - jinaReaderDoc: 'Tìm hiểu thêm về Jina Reader', - useSitemap: 'Sử dụng sơ đồ trang web', - chooseProvider: 'Chọn nhà cung cấp', - jinaReaderDocLink: 'https://jina.ai/reader', - jinaReaderNotConfigured: 'Jina Reader không được cấu hình', - jinaReaderNotConfiguredDescription: 'Thiết lập Jina Reader bằng cách nhập khóa API miễn phí của bạn để truy cập.', - useSitemapTooltip: 'Thực hiện theo sơ đồ trang web để thu thập dữ liệu trang web. Nếu không, Jina Reader sẽ thu thập dữ liệu lặp đi lặp lại dựa trên mức độ liên quan của trang, mang lại ít trang hơn nhưng chất lượng cao hơn.', - configureWatercrawl: 'Cấu hình Watercrawl', - configureFirecrawl: 'Cấu hình Firecrawl', - configureJinaReader: 'Cấu hình Jina Reader', - waterCrawlNotConfiguredDescription: 'Cấu hình Watercrawl với khóa API để sử dụng nó.', - watercrawlTitle: 'Trích xuất nội dung web bằng Watercrawl', - watercrawlDoc: 'Tài liệu Watercrawl', - waterCrawlNotConfigured: 'Watercrawl chưa được cấu hình', - running: 'Chạy', - }, - cancel: 'Hủy', - }, - stepTwo: { - segmentation: 'Cài đặt phân đoạn', - auto: 'Tự động', - autoDescription: 'Tự động thiết lập quy tắc phân đoạn và tiền xử lý. Khuyến nghị cho người dùng mới.', - custom: 'Tùy chỉnh', - customDescription: 'Tùy chỉnh quy tắc phân đoạn, độ dài đoạn và quy tắc tiền xử lý, v.v.', - separator: 'Ký tự phân đoạn', - separatorPlaceholder: 'Ví dụ, dòng mới (\\\\n) hoặc ký tự đặc biệt (như "***")', - maxLength: 'Độ dài tối đa của đoạn', - overlap: 'Độ chồng lấp đoạn', - overlapTip: 'Thiết lập chồng lấp đoạn có thể duy trì sự liên quan ngữ nghĩa giữa chúng, tăng cường hiệu quả truy xuất. Đề xuất thiết lập từ 10% đến 25% của kích thước đoạn tối đa.', - overlapCheck: 'Độ chồng lấp đoạn không nên lớn hơn độ dài tối đa của đoạn', - rules: 'Quy tắc tiền xử lý văn bản', - removeExtraSpaces: 'Thay thế khoảng trắng liên tục, dòng mới và tab', - removeUrlEmails: 'Xóa tất cả URL và địa chỉ email', - removeStopwords: 'Loại bỏ các từ dừng như "một", "và", "những"', - preview: 'Xác nhận & Xem trước', - reset: 'Đặt lại', - indexMode: 'Chế độ chỉ mục', - qualified: 'Chất lượng cao', - recommend: 'Khuyến nghị', - qualifiedTip: 'Sử dụng giao diện nhúng hệ thống mặc định để xử lý, cung cấp độ chính xác cao hơn khi người dùng truy vấn.', - warning: 'Vui lòng thiết lập khóa API nhà cung cấp mô hình trước.', - click: 'Đi đến cài đặt', - economical: 'Tiết kiệm', - economicalTip: 'Sử dụng các động cơ vector ngoại tuyến, chỉ mục từ khóa, v.v. để giảm độ chính xác mà không tốn token', - QATitle: 'Phân đoạn theo định dạng Câu hỏi & Trả lời', - QATip: 'Bật tùy chọn này sẽ tiêu tốn thêm token', - QALanguage: 'Phân đoạn bằng', - estimateCost: 'Ước tính', - estimateSegment: 'Số đoạn ước tính', - segmentCount: 'đoạn', - calculating: 'Đang tính toán...', - fileSource: 'Tiền xử lý tài liệu', - notionSource: 'Tiền xử lý trang', - other: 'và ', - fileUnit: ' tệp', - notionUnit: ' trang', - previousStep: 'Quay lại', - nextStep: 'Lưu & Xử lý', - save: 'Lưu & Xử lý', - cancel: 'Hủy', - sideTipTitle: 'Tại sao phải phân đoạn và tiền xử lý?', - sideTipP1: 'Khi xử lý dữ liệu văn bản, phân đoạn và làm sạch là hai bước tiền xử lý quan trọng.', - sideTipP2: 'Phân đoạn chia nhỏ văn bản dài thành các đoạn để mô hình hiểu được tốt hơn. Điều này cải thiện chất lượng và tính liên quan của kết quả mô hình.', - sideTipP3: 'Làm sạch loại bỏ các ký tự và định dạng không cần thiết, làm cho Kiến thức trở nên sạch sẽ và dễ dàng phân tích hơn.', - sideTipP4: 'Phân đoạn và làm sạch đúng cách cải thiện hiệu suất của mô hình, cung cấp kết quả chính xác và có giá trị hơn.', - previewTitle: 'Xem trước', - previewTitleButton: 'Xem trước', - previewButton: 'Chuyển sang dạng Câu hỏi & Trả lời', - previewSwitchTipStart: 'Xem trước đoạn hiện tại đang ở định dạng văn bản, chuyển sang xem trước dạng câu hỏi và trả lời sẽ', - previewSwitchTipEnd: ' tiêu tốn thêm token', - characters: 'ký tự', - indexSettingTip: 'Để thay đổi phương pháp chỉ mục, vui lòng đi tới ', - retrievalSettingTip: 'Để thay đổi phương pháp truy xuất, vui lòng đi tới ', - datasetSettingLink: 'cài đặt Kiến thức.', - websiteSource: 'Trang web tiền xử lý', - webpageUnit: 'Trang', - separatorTip: 'Dấu phân cách là ký tự được sử dụng để phân tách văn bản. \\n\\n và \\n là dấu phân cách thường được sử dụng để tách các đoạn văn và dòng. Kết hợp với dấu phẩy (\\n\\n,\\n), các đoạn văn sẽ được phân đoạn theo các dòng khi vượt quá độ dài đoạn tối đa. Bạn cũng có thể sử dụng dấu phân cách đặc biệt do chính bạn xác định (ví dụ: ***).', - maxLengthCheck: 'Chiều dài đoạn tối đa phải nhỏ hơn {{limit}}', - fullDocTip: 'Toàn bộ tài liệu được sử dụng làm phần cha và được truy xuất trực tiếp. Xin lưu ý rằng vì lý do hiệu suất, văn bản vượt quá 10000 mã thông báo sẽ tự động bị cắt bớt.', - parentChild: 'Cha mẹ-con cái', - general: 'Tổng quát', - parentChildTip: 'Khi sử dụng chế độ cha-con, phần con được sử dụng để truy xuất và phần cha được sử dụng để gọi lại dưới dạng ngữ cảnh.', - fullDoc: 'Tài liệu đầy đủ', - notAvailableForQA: 'Không có sẵn cho Chỉ số Hỏi & Đáp', - notAvailableForParentChild: 'Không có sẵn cho Chỉ số cha mẹ-con', - previewChunk: 'Xem trước Chunk', - previewChunkTip: 'Nhấp vào nút \'Preview Chunk\' ở bên trái để tải bản xem trước', - childChunkForRetrieval: 'Child-chunk để truy xuất', - highQualityTip: 'Sau khi hoàn tất việc nhúng ở chế độ Chất lượng cao, không thể hoàn nguyên về chế độ Tiết kiệm.', - useQALanguage: 'Chunk sử dụng định dạng Q & A trong', - generalTip: 'Chế độ phân đoạn văn bản chung, các đoạn được truy xuất và gọi lại là như nhau.', - qaSwitchHighQualityTipTitle: 'Định dạng Q & A yêu cầu phương pháp lập chỉ mục chất lượng cao', - qaSwitchHighQualityTipContent: 'Hiện tại, chỉ có phương pháp chỉ mục chất lượng cao mới hỗ trợ phân đoạn định dạng Q&A. Bạn có muốn chuyển sang chế độ chất lượng cao không?', - switch: 'Chuyển', - paragraph: 'Đoạn', - parentChunkForContext: 'Parent-chunk cho ngữ cảnh', - previewChunkCount: '{{đếm}} Khối ước tính', - parentChildDelimiterTip: 'Dấu phân cách là ký tự được sử dụng để phân tách văn bản. \\n\\n được khuyến nghị để chia tài liệu gốc thành các phần lớn của cha mẹ. Bạn cũng có thể sử dụng các dấu phân cách đặc biệt do chính bạn xác định.', - parentChildChunkDelimiterTip: 'Dấu phân cách là ký tự được sử dụng để phân tách văn bản. \\n được khuyến nghị để chia các chunk cha thành các chunk con nhỏ. Bạn cũng có thể sử dụng các dấu phân cách đặc biệt do chính bạn xác định.', - paragraphTip: 'Chế độ này chia văn bản thành các đoạn văn dựa trên dấu phân cách và độ dài khối tối đa, sử dụng văn bản được tách làm phần gốc để truy xuất.', - qaTip: 'Khi sử dụng dữ liệu Hỏi đáp có cấu trúc, bạn có thể tạo tài liệu ghép câu hỏi với câu trả lời. Các tài liệu này được lập chỉ mục dựa trên phần câu hỏi, cho phép hệ thống truy xuất các câu trả lời có liên quan dựa trên sự tương đồng của truy vấn.', - }, - stepThree: { - creationTitle: '🎉 Kiến thức đã được tạo', - creationContent: 'Chúng tôi đã tự động đặt tên cho Kiến thức, bạn có thể sửa đổi nó bất kỳ lúc nào', - label: 'Tên Kiến thức', - additionTitle: '🎉 Tài liệu đã được tải lên', - additionP1: 'Tài liệu đã được tải lên Kiến thức', - additionP2: ', bạn có thể tìm thấy nó trong danh sách tài liệu của Kiến thức.', - stop: 'Dừng xử lý', - resume: 'Tiếp tục xử lý', - navTo: 'Đi đến tài liệu', - sideTipTitle: 'Tiếp theo là gì', - sideTipContent: 'Sau khi tài liệu hoàn thành chỉ mục, Kiến thức có thể được tích hợp vào ứng dụng như một ngữ cảnh, bạn có thể tìm cài đặt ngữ cảnh trong trang điều chỉnh prompt. Bạn cũng có thể tạo nó như một plugin chỉ mục ChatGPT độc lập để phát hành.', - modelTitle: 'Bạn có chắc chắn muốn dừng việc nhúng?', - modelContent: 'Nếu bạn cần tiếp tục xử lý sau này, bạn sẽ tiếp tục từ vị trí bạn đã dừng lại.', - modelButtonConfirm: 'Xác nhận', - modelButtonCancel: 'Hủy', - }, - firecrawl: { - getApiKeyLinkText: 'Lấy khóa API của bạn từ firecrawl.dev', - configFirecrawl: 'Định cấu hình 🔥Firecrawl', - apiKeyPlaceholder: 'Khóa API từ firecrawl.dev', - }, - jinaReader: { - getApiKeyLinkText: 'Nhận khóa API miễn phí của bạn tại jina.ai', - configJinaReader: 'Định cấu hình Jina Reader', - apiKeyPlaceholder: 'Khóa API từ jina.ai', - }, - otherDataSource: { - title: 'Kết nối với các nguồn dữ liệu khác?', - description: 'Hiện tại, cơ sở tri thức của Dify chỉ có nguồn dữ liệu hạn chế. Đóng góp nguồn dữ liệu vào cơ sở kiến thức Dify là một cách tuyệt vời để giúp nâng cao tính linh hoạt và sức mạnh của nền tảng cho tất cả người dùng. Hướng dẫn đóng góp của chúng tôi giúp bạn dễ dàng bắt đầu. Vui lòng nhấp vào liên kết bên dưới để tìm hiểu thêm.', - learnMore: 'Tìm hiểu thêm', - }, - watercrawl: { - configWatercrawl: 'Cấu hình Watercrawl', - apiKeyPlaceholder: 'Khóa API từ watercrawl.dev', - getApiKeyLinkText: 'Lấy mã API của bạn từ watercrawl.dev', - }, -} - -export default translation diff --git a/web/i18n/vi-VN/dataset-documents.json b/web/i18n/vi-VN/dataset-documents.json new file mode 100644 index 0000000000..366fb38bd1 --- /dev/null +++ b/web/i18n/vi-VN/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "Tài liệu", + "desc": "Tất cả các tệp của Kiến thức được hiển thị ở đây. Toàn bộ Kiến thức có thể được liên kết với trích dẫn của Dify hoặc được lập chỉ mục thông qua plugin Chat.", + "addFile": "Thêm tệp", + "addPages": "Thêm trang", + "table": { + "header": { + "fileName": "TÊN TỆP", + "words": "SỐ TỪ", + "hitCount": "SỐ LẦN TRUY VẤN", + "uploadTime": "THỜI GIAN TẢI LÊN", + "status": "TRẠNG THÁI", + "action": "THAO TÁC", + "chunkingMode": "CHẾ ĐỘ CHUNKING" + }, + "rename": "Rename", + "name": "Tên" + }, + "action": { + "uploadFile": "Tải lên tệp mới", + "settings": "Cài đặt phân đoạn", + "addButton": "Thêm đoạn", + "add": "Thêm một đoạn", + "batchAdd": "Thêm hàng loạt", + "archive": "Lưu trữ", + "unarchive": "Khôi phục", + "delete": "Xóa", + "enableWarning": "Tệp đã lưu trữ không thể được kích hoạt", + "sync": "Đồng bộ", + "pause": "Tạm dừng", + "resume": "Tiếp tục" + }, + "index": { + "enable": "Kích hoạt", + "disable": "Vô hiệu hóa", + "all": "Tất cả", + "enableTip": "Tệp có thể được lập chỉ mục", + "disableTip": "Tệp không thể được lập chỉ mục" + }, + "status": { + "queuing": "Đang chờ", + "indexing": "Đang lập chỉ mục", + "paused": "Tạm dừng", + "error": "Lỗi", + "available": "Có sẵn", + "enabled": "Đã kích hoạt", + "disabled": "Đã vô hiệu hóa", + "archived": "Đã lưu trữ" + }, + "empty": { + "title": "Chưa có tài liệu", + "upload": { + "tip": "Bạn có thể tải lên tệp, đồng bộ từ trang web, hoặc từ ứng dụng web như Notion, GitHub, v.v." + }, + "sync": { + "tip": "Dify sẽ định kỳ tải xuống tệp từ Notion của bạn và hoàn tất xử lý." + } + }, + "delete": { + "title": "Bạn có chắc chắn muốn xóa?", + "content": "Nếu bạn cần tiếp tục xử lý sau này, bạn sẽ tiếp tục từ vị trí bạn đã dừng lại" + }, + "batchModal": { + "title": "Thêm đoạn hàng loạt", + "csvUploadTitle": "Kéo và thả tệp CSV của bạn vào đây, hoặc ", + "browse": "duyệt", + "tip": "Tệp CSV phải tuân thủ cấu trúc sau:", + "question": "câu hỏi", + "answer": "trả lời", + "contentTitle": "nội dung đoạn", + "content": "nội dung", + "template": "Tải mẫu ở đây", + "cancel": "Hủy", + "run": "Chạy hàng loạt", + "runError": "Chạy hàng loạt thất bại", + "processing": "Đang xử lý hàng loạt", + "completed": "Nhập hoàn tất", + "error": "Lỗi nhập", + "ok": "OK" + }, + "addUrl": "Thêm URL", + "learnMore": "Tìm hiểu thêm", + "sort": { + "uploadTime": "Thời gian tải lên", + "hitCount": "Số lần truy xuất" + } + }, + "metadata": { + "title": "Siêu dữ liệu", + "desc": "Gắn nhãn siêu dữ liệu cho các tài liệu cho phép AI truy cập chúng kịp thời và tiết lộ nguồn của các tài liệu tham chiếu cho người dùng.", + "dateTimeFormat": "D MMMM, YYYY hh:mm A", + "docTypeSelectTitle": "Vui lòng chọn loại tài liệu", + "docTypeChangeTitle": "Thay đổi loại tài liệu", + "docTypeSelectWarning": "Nếu thay đổi loại tài liệu, các siêu dữ liệu hiện tại sẽ không được bảo toàn", + "firstMetaAction": "Bắt đầu", + "placeholder": { + "add": "Thêm ", + "select": "Chọn " + }, + "source": { + "upload_file": "Tải lên tệp", + "notion": "Đồng bộ từ Notion", + "github": "Đồng bộ từ Github", + "online_document": "Tài liệu trực tuyến", + "website_crawl": "Thu thập dữ liệu trang web", + "local_file": "Tệp cục bộ" + }, + "type": { + "book": "Sách", + "webPage": "Trang web", + "paper": "Bài báo", + "socialMediaPost": "Bài đăng mạng xã hội", + "personalDocument": "Tài liệu cá nhân", + "businessDocument": "Tài liệu doanh nghiệp", + "IMChat": "Trò chuyện tin nhắn", + "wikipediaEntry": "Bài viết Wikipedia", + "notion": "Đồng bộ từ Notion", + "github": "Đồng bộ từ Github", + "technicalParameters": "Tham số kỹ thuật" + }, + "field": { + "processRule": { + "processDoc": "Xử lý tài liệu", + "segmentRule": "Quy tắc phân đoạn", + "segmentLength": "Độ dài đoạn", + "processClean": "Quy tắc làm sạch văn bản" + }, + "book": { + "title": "Tiêu đề", + "language": "Ngôn ngữ", + "author": "Tác giả", + "publisher": "Nhà xuất bản", + "publicationDate": "Ngày xuất bản", + "ISBN": "ISBN", + "category": "Thể loại" + }, + "webPage": { + "title": "Tiêu đề", + "url": "URL", + "language": "Ngôn ngữ", + "authorPublisher": "Tác giả/Nhà xuất bản", + "publishDate": "Ngày xuất bản", + "topicKeywords": "Chủ đề/Từ khóa", + "description": "Mô tả" + }, + "paper": { + "title": "Tiêu đề", + "language": "Ngôn ngữ", + "author": "Tác giả", + "publishDate": "Ngày xuất bản", + "journalConferenceName": "Tên tạp chí/Hội nghị", + "volumeIssuePage": "Tập/Số/Trang", + "DOI": "DOI", + "topicsKeywords": "Chủ đề/Từ khóa", + "abstract": "Tóm tắt" + }, + "socialMediaPost": { + "platform": "Nền tảng", + "authorUsername": "Tác giả/Tên người dùng", + "publishDate": "Ngày đăng", + "postURL": "URL bài đăng", + "topicsTags": "Chủ đề/Thẻ" + }, + "personalDocument": { + "title": "Tiêu đề", + "author": "Tác giả", + "creationDate": "Ngày tạo", + "lastModifiedDate": "Ngày sửa đổi cuối", + "documentType": "Loại tài liệu", + "tagsCategory": "Thẻ/Danh mục" + }, + "businessDocument": { + "title": "Tiêu đề", + "author": "Tác giả", + "creationDate": "Ngày tạo", + "lastModifiedDate": "Ngày sửa đổi cuối", + "documentType": "Loại tài liệu", + "departmentTeam": "Phòng ban/Nhóm" + }, + "IMChat": { + "chatPlatform": "Nền tảng trò chuyện", + "chatPartiesGroupName": "Người tham gia/Tên nhóm", + "participants": "Người tham gia", + "startDate": "Ngày bắt đầu", + "endDate": "Ngày kết thúc", + "topicsKeywords": "Chủ đề/Từ khóa", + "fileType": "Loại tệp" + }, + "wikipediaEntry": { + "title": "Tiêu đề", + "language": "Ngôn ngữ", + "webpageURL": "URL trang web", + "editorContributor": "Biên tập viên/Người đóng góp", + "lastEditDate": "Ngày chỉnh sửa cuối", + "summaryIntroduction": "Tóm tắt/Giới thiệu" + }, + "notion": { + "title": "Tiêu đề", + "language": "Ngôn ngữ", + "author": "Tác giả", + "createdTime": "Thời gian tạo", + "lastModifiedTime": "Thời gian sửa đổi cuối", + "url": "URL", + "tag": "Thẻ", + "description": "Mô tả" + }, + "github": { + "repoName": "Tên kho lưu trữ", + "repoDesc": "Mô tả kho lưu trữ", + "repoOwner": "Chủ sở hữu kho lưu trữ", + "fileName": "Tên tệp", + "filePath": "Đường dẫn tệp", + "programmingLang": "Ngôn ngữ lập trình", + "url": "URL", + "license": "Giấy phép", + "lastCommitTime": "Thời gian commit cuối", + "lastCommitAuthor": "Tác giả commit cuối" + }, + "originInfo": { + "originalFilename": "Tên tệp gốc", + "originalFileSize": "Kích thước tệp gốc", + "uploadDate": "Ngày tải lên", + "lastUpdateDate": "Ngày cập nhật cuối", + "source": "Nguồn" + }, + "technicalParameters": { + "segmentSpecification": "Đặc tả đoạn", + "segmentLength": "Độ dài đoạn", + "avgParagraphLength": "Độ dài trung bình đoạn văn", + "paragraphs": "Số đoạn văn", + "hitCount": "Số lần truy vấn", + "embeddingTime": "Thời gian nhúng", + "embeddedSpend": "Chi phí nhúng" + } + }, + "languageMap": { + "zh": "Tiếng Trung", + "en": "Tiếng Anh", + "es": "Tiếng Tây Ban Nha", + "fr": "Tiếng Pháp", + "de": "Tiếng Đức", + "ja": "Tiếng Nhật", + "ko": "Tiếng Hàn", + "ru": "Tiếng Nga", + "ar": "Tiếng Ả Rập", + "pt": "Tiếng Bồ Đào Nha", + "it": "Tiếng Ý", + "nl": "Tiếng Hà Lan", + "pl": "Tiếng Ba Lan", + "sv": "Tiếng Thụy Điển", + "tr": "Tiếng Thổ Nhĩ Kỳ", + "he": "Tiếng Do Thái", + "hi": "Tiếng Hindi", + "da": "Tiếng Đan Mạch", + "fi": "Tiếng Phần Lan", + "no": "Tiếng Na Uy", + "hu": "Tiếng Hungary", + "el": "Tiếng Hy Lạp", + "cs": "Tiếng Séc", + "th": "Tiếng Thái", + "id": "Tiếng Indonesia" + }, + "categoryMap": { + "book": { + "fiction": "Tiểu thuyết", + "biography": "Tiểu sử", + "history": "Lịch sử", + "science": "Khoa học", + "technology": "Công nghệ", + "education": "Giáo dục", + "philosophy": "Triết học", + "religion": "Tôn giáo", + "socialSciences": "Khoa học xã hội", + "art": "Nghệ thuật", + "travel": "Du lịch", + "health": "Sức khỏe", + "selfHelp": "Tự lực", + "businessEconomics": "Kinh doanh và kinh tế", + "cooking": "Nấu ăn", + "childrenYoungAdults": "Thiếu nhi và thanh thiếu niên", + "comicsGraphicNovels": "Truyện tranh và tiểu thuyết đồ họa", + "poetry": "Thơ ca", + "drama": "Kịch", + "other": "Khác" + }, + "personalDoc": { + "notes": "Ghi chú", + "blogDraft": "Bản nháp blog", + "diary": "Nhật ký", + "researchReport": "Báo cáo nghiên cứu", + "bookExcerpt": "Trích đoạn sách", + "schedule": "Lịch trình", + "list": "Danh sách", + "projectOverview": "Tổng quan dự án", + "photoCollection": "Bộ sưu tập ảnh", + "creativeWriting": "Viết sáng tạo", + "codeSnippet": "Đoạn mã", + "designDraft": "Bản phác thảo thiết kế", + "personalResume": "Sơ yếu lý lịch cá nhân", + "other": "Khác" + }, + "businessDoc": { + "meetingMinutes": "Biên bản cuộc họp", + "researchReport": "Báo cáo nghiên cứu", + "proposal": "Đề xuất", + "employeeHandbook": "Sổ tay nhân viên", + "trainingMaterials": "Tài liệu đào tạo", + "requirementsDocument": "Tài liệu yêu cầu", + "designDocument": "Tài liệu thiết kế", + "productSpecification": "Thông số kỹ thuật sản phẩm", + "financialReport": "Báo cáo tài chính", + "marketAnalysis": "Phân tích thị trường", + "projectPlan": "Kế hoạch dự án", + "teamStructure": "Cấu trúc nhóm", + "policiesProcedures": "Chính sách và quy trình", + "contractsAgreements": "Hợp đồng và thỏa thuận", + "emailCorrespondence": "Thư từ trao đổi", + "other": "Khác" + } + } + }, + "embedding": { + "processing": "Đang nhúng...", + "paused": "Đã tạm dừng nhúng", + "completed": "Hoàn tất nhúng", + "error": "Lỗi khi nhúng", + "docName": "Đang xử lý văn bản", + "mode": "Quy tắc phân đoạn", + "segmentLength": "Độ dài đoạn", + "textCleaning": "Định nghĩa và làm sạch văn bản", + "segments": "Đoạn", + "highQuality": "Chế độ chất lượng cao", + "economy": "Chế độ tiết kiệm", + "estimate": "Ước tính tiêu thụ", + "stop": "Dừng xử lý", + "resume": "Tiếp tục xử lý", + "automatic": "Tự động", + "custom": "Tùy chỉnh", + "previewTip": "Xem trước đoạn sẽ có sẵn sau khi việc nhúng hoàn tất", + "parentMaxTokens": "Cha mẹ", + "pause": "Tạm dừng", + "childMaxTokens": "Con", + "hierarchical": "Cha mẹ-con cái", + "waiting": "Đang chờ nhúng..." + }, + "segment": { + "paragraphs": "Đoạn văn", + "keywords": "Từ khóa", + "addKeyWord": "Thêm từ khóa", + "keywordError": "Độ dài tối đa của từ khóa là 20", + "hitCount": "Số lần truy vấn", + "vectorHash": "Mã băm vector: ", + "questionPlaceholder": "thêm câu hỏi ở đây", + "questionEmpty": "Câu hỏi không thể trống", + "answerPlaceholder": "thêm câu trả lời ở đây", + "answerEmpty": "Câu trả lời không thể trống", + "contentPlaceholder": "thêm nội dung ở đây", + "contentEmpty": "Nội dung không thể trống", + "newTextSegment": "Đoạn văn bản mới", + "newQaSegment": "Đoạn hỏi đáp mới", + "delete": "Xóa đoạn này?", + "childChunks_one": "KHỐI TRẺ", + "searchResults_zero": "KẾT QUẢ", + "empty": "Không tìm thấy Chunk", + "newChunk": "Khối mới", + "childChunk": "Khối trẻ em", + "regeneratingMessage": "Quá trình này có thể mất một lúc, vui lòng đợi...", + "regenerationSuccessMessage": "Bạn có thể đóng cửa sổ này.", + "regenerationSuccessTitle": "Hoàn thành tái tạo", + "characters_other": "Ký tự", + "chunks_one": "KHÚC", + "chunkAdded": "1 miếng được thêm vào", + "editChildChunk": "Chỉnh sửa phần con", + "characters_one": "nhân vật", + "expandChunks": "Mở rộng các đoạn", + "chunks_other": "KHỐI", + "editedAt": "Chỉnh sửa tại", + "dateTimeFormat": "DD/MM/YYYY HH:mm", + "addAnother": "Thêm một cái khác", + "regenerationConfirmTitle": "Bạn có muốn tái tạo các chunk con không?", + "searchResults_one": "KẾT QUẢ", + "regeneratingTitle": "Tái tạo các chunk con", + "editParentChunk": "Chỉnh sửa phần cha", + "collapseChunks": "Thu gọn các đoạn", + "searchResults_other": "KẾT QUẢ", + "parentChunks_one": "PHẦN CHA MẸ", + "newChildChunk": "Khối con mới", + "parentChunk": "Phần cha mẹ", + "parentChunks_other": "PHẦN CHA MẸ", + "regenerationConfirmMessage": "Tạo lại các chunk con sẽ ghi đè lên các chunk con hiện tại, bao gồm các chunk đã chỉnh sửa và chunk mới được thêm vào. Sự tái sinh không thể hoàn tác.", + "childChunkAdded": "1 phần con được thêm vào", + "addChunk": "Thêm Chunk", + "chunkDetail": "Chi tiết khối", + "childChunks_other": "KHỐI CON", + "editChunk": "Chỉnh sửa Chunk", + "addChildChunk": "Thêm phần con", + "clearFilter": "Bộ lọc rõ ràng", + "chunk": "Khúc", + "edited": "EDITED", + "keywordDuplicate": "Từ khóa đã tồn tại", + "keywordEmpty": "Từ khóa không được để trống", + "allFilesUploaded": "Tất cả các tệp phải được tải lên trước khi lưu" + } +} diff --git a/web/i18n/vi-VN/dataset-documents.ts b/web/i18n/vi-VN/dataset-documents.ts deleted file mode 100644 index b88b0b9925..0000000000 --- a/web/i18n/vi-VN/dataset-documents.ts +++ /dev/null @@ -1,407 +0,0 @@ -const translation = { - list: { - title: 'Tài liệu', - desc: 'Tất cả các tệp của Kiến thức được hiển thị ở đây. Toàn bộ Kiến thức có thể được liên kết với trích dẫn của Dify hoặc được lập chỉ mục thông qua plugin Chat.', - addFile: 'Thêm tệp', - addPages: 'Thêm trang', - table: { - header: { - fileName: 'TÊN TỆP', - words: 'SỐ TỪ', - hitCount: 'SỐ LẦN TRUY VẤN', - uploadTime: 'THỜI GIAN TẢI LÊN', - status: 'TRẠNG THÁI', - action: 'THAO TÁC', - chunkingMode: 'CHẾ ĐỘ CHUNKING', - }, - rename: 'Rename', - name: 'Tên', - }, - action: { - uploadFile: 'Tải lên tệp mới', - settings: 'Cài đặt phân đoạn', - addButton: 'Thêm đoạn', - add: 'Thêm một đoạn', - batchAdd: 'Thêm hàng loạt', - archive: 'Lưu trữ', - unarchive: 'Khôi phục', - delete: 'Xóa', - enableWarning: 'Tệp đã lưu trữ không thể được kích hoạt', - sync: 'Đồng bộ', - pause: 'Tạm dừng', - resume: 'Tiếp tục', - }, - index: { - enable: 'Kích hoạt', - disable: 'Vô hiệu hóa', - all: 'Tất cả', - enableTip: 'Tệp có thể được lập chỉ mục', - disableTip: 'Tệp không thể được lập chỉ mục', - }, - status: { - queuing: 'Đang chờ', - indexing: 'Đang lập chỉ mục', - paused: 'Tạm dừng', - error: 'Lỗi', - available: 'Có sẵn', - enabled: 'Đã kích hoạt', - disabled: 'Đã vô hiệu hóa', - archived: 'Đã lưu trữ', - }, - empty: { - title: 'Chưa có tài liệu', - upload: { - tip: 'Bạn có thể tải lên tệp, đồng bộ từ trang web, hoặc từ ứng dụng web như Notion, GitHub, v.v.', - }, - sync: { - tip: 'Dify sẽ định kỳ tải xuống tệp từ Notion của bạn và hoàn tất xử lý.', - }, - }, - delete: { - title: 'Bạn có chắc chắn muốn xóa?', - content: 'Nếu bạn cần tiếp tục xử lý sau này, bạn sẽ tiếp tục từ vị trí bạn đã dừng lại', - }, - batchModal: { - title: 'Thêm đoạn hàng loạt', - csvUploadTitle: 'Kéo và thả tệp CSV của bạn vào đây, hoặc ', - browse: 'duyệt', - tip: 'Tệp CSV phải tuân thủ cấu trúc sau:', - question: 'câu hỏi', - answer: 'trả lời', - contentTitle: 'nội dung đoạn', - content: 'nội dung', - template: 'Tải mẫu ở đây', - cancel: 'Hủy', - run: 'Chạy hàng loạt', - runError: 'Chạy hàng loạt thất bại', - processing: 'Đang xử lý hàng loạt', - completed: 'Nhập hoàn tất', - error: 'Lỗi nhập', - ok: 'OK', - }, - addUrl: 'Thêm URL', - learnMore: 'Tìm hiểu thêm', - sort: { - uploadTime: 'Thời gian tải lên', - hitCount: 'Số lần truy xuất', - }, - }, - metadata: { - title: 'Siêu dữ liệu', - desc: 'Gắn nhãn siêu dữ liệu cho các tài liệu cho phép AI truy cập chúng kịp thời và tiết lộ nguồn của các tài liệu tham chiếu cho người dùng.', - dateTimeFormat: 'D MMMM, YYYY hh:mm A', - docTypeSelectTitle: 'Vui lòng chọn loại tài liệu', - docTypeChangeTitle: 'Thay đổi loại tài liệu', - docTypeSelectWarning: 'Nếu thay đổi loại tài liệu, các siêu dữ liệu hiện tại sẽ không được bảo toàn', - firstMetaAction: 'Bắt đầu', - placeholder: { - add: 'Thêm ', - select: 'Chọn ', - }, - source: { - upload_file: 'Tải lên tệp', - notion: 'Đồng bộ từ Notion', - github: 'Đồng bộ từ Github', - online_document: 'Tài liệu trực tuyến', - website_crawl: 'Thu thập dữ liệu trang web', - local_file: 'Tệp cục bộ', - }, - type: { - book: 'Sách', - webPage: 'Trang web', - paper: 'Bài báo', - socialMediaPost: 'Bài đăng mạng xã hội', - personalDocument: 'Tài liệu cá nhân', - businessDocument: 'Tài liệu doanh nghiệp', - IMChat: 'Trò chuyện tin nhắn', - wikipediaEntry: 'Bài viết Wikipedia', - notion: 'Đồng bộ từ Notion', - github: 'Đồng bộ từ Github', - technicalParameters: 'Tham số kỹ thuật', - }, - field: { - processRule: { - processDoc: 'Xử lý tài liệu', - segmentRule: 'Quy tắc phân đoạn', - segmentLength: 'Độ dài đoạn', - processClean: 'Quy tắc làm sạch văn bản', - }, - book: { - title: 'Tiêu đề', - language: 'Ngôn ngữ', - author: 'Tác giả', - publisher: 'Nhà xuất bản', - publicationDate: 'Ngày xuất bản', - ISBN: 'ISBN', - category: 'Thể loại', - }, - webPage: { - title: 'Tiêu đề', - url: 'URL', - language: 'Ngôn ngữ', - authorPublisher: 'Tác giả/Nhà xuất bản', - publishDate: 'Ngày xuất bản', - topicKeywords: 'Chủ đề/Từ khóa', - description: 'Mô tả', - }, - paper: { - title: 'Tiêu đề', - language: 'Ngôn ngữ', - author: 'Tác giả', - publishDate: 'Ngày xuất bản', - journalConferenceName: 'Tên tạp chí/Hội nghị', - volumeIssuePage: 'Tập/Số/Trang', - DOI: 'DOI', - topicsKeywords: 'Chủ đề/Từ khóa', - abstract: 'Tóm tắt', - }, - socialMediaPost: { - platform: 'Nền tảng', - authorUsername: 'Tác giả/Tên người dùng', - publishDate: 'Ngày đăng', - postURL: 'URL bài đăng', - topicsTags: 'Chủ đề/Thẻ', - }, - personalDocument: { - title: 'Tiêu đề', - author: 'Tác giả', - creationDate: 'Ngày tạo', - lastModifiedDate: 'Ngày sửa đổi cuối', - documentType: 'Loại tài liệu', - tagsCategory: 'Thẻ/Danh mục', - }, - businessDocument: { - title: 'Tiêu đề', - author: 'Tác giả', - creationDate: 'Ngày tạo', - lastModifiedDate: 'Ngày sửa đổi cuối', - documentType: 'Loại tài liệu', - departmentTeam: 'Phòng ban/Nhóm', - }, - IMChat: { - chatPlatform: 'Nền tảng trò chuyện', - chatPartiesGroupName: 'Người tham gia/Tên nhóm', - participants: 'Người tham gia', - startDate: 'Ngày bắt đầu', - endDate: 'Ngày kết thúc', - topicsKeywords: 'Chủ đề/Từ khóa', - fileType: 'Loại tệp', - }, - wikipediaEntry: { - title: 'Tiêu đề', - language: 'Ngôn ngữ', - webpageURL: 'URL trang web', - editorContributor: 'Biên tập viên/Người đóng góp', - lastEditDate: 'Ngày chỉnh sửa cuối', - summaryIntroduction: 'Tóm tắt/Giới thiệu', - }, - notion: { - title: 'Tiêu đề', - language: 'Ngôn ngữ', - author: 'Tác giả', - createdTime: 'Thời gian tạo', - lastModifiedTime: 'Thời gian sửa đổi cuối', - url: 'URL', - tag: 'Thẻ', - description: 'Mô tả', - }, - github: { - repoName: 'Tên kho lưu trữ', - repoDesc: 'Mô tả kho lưu trữ', - repoOwner: 'Chủ sở hữu kho lưu trữ', - fileName: 'Tên tệp', - filePath: 'Đường dẫn tệp', - programmingLang: 'Ngôn ngữ lập trình', - url: 'URL', - license: 'Giấy phép', - lastCommitTime: 'Thời gian commit cuối', - lastCommitAuthor: 'Tác giả commit cuối', - }, - originInfo: { - originalFilename: 'Tên tệp gốc', - originalFileSize: 'Kích thước tệp gốc', - uploadDate: 'Ngày tải lên', - lastUpdateDate: 'Ngày cập nhật cuối', - source: 'Nguồn', - }, - technicalParameters: { - segmentSpecification: 'Đặc tả đoạn', - segmentLength: 'Độ dài đoạn', - avgParagraphLength: 'Độ dài trung bình đoạn văn', - paragraphs: 'Số đoạn văn', - hitCount: 'Số lần truy vấn', - embeddingTime: 'Thời gian nhúng', - embeddedSpend: 'Chi phí nhúng', - }, - }, - languageMap: { - zh: 'Tiếng Trung', - en: 'Tiếng Anh', - es: 'Tiếng Tây Ban Nha', - fr: 'Tiếng Pháp', - de: 'Tiếng Đức', - ja: 'Tiếng Nhật', - ko: 'Tiếng Hàn', - ru: 'Tiếng Nga', - ar: 'Tiếng Ả Rập', - pt: 'Tiếng Bồ Đào Nha', - it: 'Tiếng Ý', - nl: 'Tiếng Hà Lan', - pl: 'Tiếng Ba Lan', - sv: 'Tiếng Thụy Điển', - tr: 'Tiếng Thổ Nhĩ Kỳ', - he: 'Tiếng Do Thái', - hi: 'Tiếng Hindi', - da: 'Tiếng Đan Mạch', - fi: 'Tiếng Phần Lan', - no: 'Tiếng Na Uy', - hu: 'Tiếng Hungary', - el: 'Tiếng Hy Lạp', - cs: 'Tiếng Séc', - th: 'Tiếng Thái', - id: 'Tiếng Indonesia', - }, - categoryMap: { - book: { - fiction: 'Tiểu thuyết', - biography: 'Tiểu sử', - history: 'Lịch sử', - science: 'Khoa học', - technology: 'Công nghệ', - education: 'Giáo dục', - philosophy: 'Triết học', - religion: 'Tôn giáo', - socialSciences: 'Khoa học xã hội', - art: 'Nghệ thuật', - travel: 'Du lịch', - health: 'Sức khỏe', - selfHelp: 'Tự lực', - businessEconomics: 'Kinh doanh và kinh tế', - cooking: 'Nấu ăn', - childrenYoungAdults: 'Thiếu nhi và thanh thiếu niên', - comicsGraphicNovels: 'Truyện tranh và tiểu thuyết đồ họa', - poetry: 'Thơ ca', - drama: 'Kịch', - other: 'Khác', - }, - personalDoc: { - notes: 'Ghi chú', - blogDraft: 'Bản nháp blog', - diary: 'Nhật ký', - researchReport: 'Báo cáo nghiên cứu', - bookExcerpt: 'Trích đoạn sách', - schedule: 'Lịch trình', - list: 'Danh sách', - projectOverview: 'Tổng quan dự án', - photoCollection: 'Bộ sưu tập ảnh', - creativeWriting: 'Viết sáng tạo', - codeSnippet: 'Đoạn mã', - designDraft: 'Bản phác thảo thiết kế', - personalResume: 'Sơ yếu lý lịch cá nhân', - other: 'Khác', - }, - businessDoc: { - meetingMinutes: 'Biên bản cuộc họp', - researchReport: 'Báo cáo nghiên cứu', - proposal: 'Đề xuất', - employeeHandbook: 'Sổ tay nhân viên', - trainingMaterials: 'Tài liệu đào tạo', - requirementsDocument: 'Tài liệu yêu cầu', - designDocument: 'Tài liệu thiết kế', - productSpecification: 'Thông số kỹ thuật sản phẩm', - financialReport: 'Báo cáo tài chính', - marketAnalysis: 'Phân tích thị trường', - projectPlan: 'Kế hoạch dự án', - teamStructure: 'Cấu trúc nhóm', - policiesProcedures: 'Chính sách và quy trình', - contractsAgreements: 'Hợp đồng và thỏa thuận', - emailCorrespondence: 'Thư từ trao đổi', - other: 'Khác', - }, - }, - }, - embedding: { - processing: 'Đang nhúng...', - paused: 'Đã tạm dừng nhúng', - completed: 'Hoàn tất nhúng', - error: 'Lỗi khi nhúng', - docName: 'Đang xử lý văn bản', - mode: 'Quy tắc phân đoạn', - segmentLength: 'Độ dài đoạn', - textCleaning: 'Định nghĩa và làm sạch văn bản', - segments: 'Đoạn', - highQuality: 'Chế độ chất lượng cao', - economy: 'Chế độ tiết kiệm', - estimate: 'Ước tính tiêu thụ', - stop: 'Dừng xử lý', - resume: 'Tiếp tục xử lý', - automatic: 'Tự động', - custom: 'Tùy chỉnh', - previewTip: 'Xem trước đoạn sẽ có sẵn sau khi việc nhúng hoàn tất', - parentMaxTokens: 'Cha mẹ', - pause: 'Tạm dừng', - childMaxTokens: 'Con', - hierarchical: 'Cha mẹ-con cái', - waiting: 'Đang chờ nhúng...', - }, - segment: { - paragraphs: 'Đoạn văn', - keywords: 'Từ khóa', - addKeyWord: 'Thêm từ khóa', - keywordError: 'Độ dài tối đa của từ khóa là 20', - hitCount: 'Số lần truy vấn', - vectorHash: 'Mã băm vector: ', - questionPlaceholder: 'thêm câu hỏi ở đây', - questionEmpty: 'Câu hỏi không thể trống', - answerPlaceholder: 'thêm câu trả lời ở đây', - answerEmpty: 'Câu trả lời không thể trống', - contentPlaceholder: 'thêm nội dung ở đây', - contentEmpty: 'Nội dung không thể trống', - newTextSegment: 'Đoạn văn bản mới', - newQaSegment: 'Đoạn hỏi đáp mới', - delete: 'Xóa đoạn này?', - childChunks_one: 'KHỐI TRẺ', - searchResults_zero: 'KẾT QUẢ', - empty: 'Không tìm thấy Chunk', - newChunk: 'Khối mới', - childChunk: 'Khối trẻ em', - regeneratingMessage: 'Quá trình này có thể mất một lúc, vui lòng đợi...', - regenerationSuccessMessage: 'Bạn có thể đóng cửa sổ này.', - regenerationSuccessTitle: 'Hoàn thành tái tạo', - characters_other: 'Ký tự', - chunks_one: 'KHÚC', - chunkAdded: '1 miếng được thêm vào', - editChildChunk: 'Chỉnh sửa phần con', - characters_one: 'nhân vật', - expandChunks: 'Mở rộng các đoạn', - chunks_other: 'KHỐI', - editedAt: 'Chỉnh sửa tại', - dateTimeFormat: 'DD/MM/YYYY HH:mm', - addAnother: 'Thêm một cái khác', - regenerationConfirmTitle: 'Bạn có muốn tái tạo các chunk con không?', - searchResults_one: 'KẾT QUẢ', - regeneratingTitle: 'Tái tạo các chunk con', - editParentChunk: 'Chỉnh sửa phần cha', - collapseChunks: 'Thu gọn các đoạn', - searchResults_other: 'KẾT QUẢ', - parentChunks_one: 'PHẦN CHA MẸ', - newChildChunk: 'Khối con mới', - parentChunk: 'Phần cha mẹ', - parentChunks_other: 'PHẦN CHA MẸ', - regenerationConfirmMessage: 'Tạo lại các chunk con sẽ ghi đè lên các chunk con hiện tại, bao gồm các chunk đã chỉnh sửa và chunk mới được thêm vào. Sự tái sinh không thể hoàn tác.', - childChunkAdded: '1 phần con được thêm vào', - addChunk: 'Thêm Chunk', - chunkDetail: 'Chi tiết khối', - childChunks_other: 'KHỐI CON', - editChunk: 'Chỉnh sửa Chunk', - addChildChunk: 'Thêm phần con', - clearFilter: 'Bộ lọc rõ ràng', - chunk: 'Khúc', - edited: 'EDITED', - keywordDuplicate: 'Từ khóa đã tồn tại', - keywordEmpty: 'Từ khóa không được để trống', - allFilesUploaded: 'Tất cả các tệp phải được tải lên trước khi lưu', - }, -} - -export default translation diff --git a/web/i18n/vi-VN/dataset-hit-testing.json b/web/i18n/vi-VN/dataset-hit-testing.json new file mode 100644 index 0000000000..071ed9ff39 --- /dev/null +++ b/web/i18n/vi-VN/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "Kiểm tra truy vấn", + "desc": "Kiểm tra hiệu quả truy xuất của Kiến thức dựa trên văn bản truy vấn đã cho.", + "dateTimeFormat": "MM/DD/YYYY hh:mm A", + "table": { + "header": { + "source": "Nguồn", + "time": "Thời gian", + "queryContent": "Nội dung truy vấn" + } + }, + "input": { + "title": "Văn bản nguồn", + "placeholder": "Vui lòng nhập một văn bản, khuyến nghị sử dụng một câu khẳng định ngắn.", + "countWarning": "Tối đa 200 ký tự.", + "indexWarning": "Chỉ có sẵn trong Kiến thức chất lượng cao.", + "testing": "Đang kiểm tra" + }, + "hit": { + "title": "CÁC ĐOẠN VĂN ĐƯỢC TRUY XUẤT", + "emptyTip": "Kết quả kiểm tra truy vấn sẽ hiển thị ở đây" + }, + "noRecentTip": "Không có kết quả truy vấn gần đây", + "viewChart": "Xem BIỂU ĐỒ VECTOR", + "settingTitle": "Cài đặt truy xuất", + "viewDetail": "Xem chi tiết", + "records": "Hồ sơ", + "open": "Mở", + "keyword": "Từ khoá", + "hitChunks": "Nhấn {{num}} đoạn con", + "chunkDetail": "Chi tiết khối", + "imageUploader": { + "tip": "Tải lên hoặc thả hình ảnh (Tối đa {{batchCount}}, {{size}}MB mỗi ảnh)", + "tooltip": "Tải hình ảnh lên (Tối đa {{batchCount}}, {{size}}MB mỗi ảnh)", + "dropZoneTip": "Kéo tệp vào đây để tải lên", + "singleChunkAttachmentLimitTooltip": "Số lượng phụ kiện khối đơn không được vượt quá {{limit}}" + } +} diff --git a/web/i18n/vi-VN/dataset-hit-testing.ts b/web/i18n/vi-VN/dataset-hit-testing.ts deleted file mode 100644 index 1f84b5b5e5..0000000000 --- a/web/i18n/vi-VN/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - title: 'Kiểm tra truy vấn', - desc: 'Kiểm tra hiệu quả truy xuất của Kiến thức dựa trên văn bản truy vấn đã cho.', - dateTimeFormat: 'MM/DD/YYYY hh:mm A', - table: { - header: { - source: 'Nguồn', - time: 'Thời gian', - queryContent: 'Nội dung truy vấn', - }, - }, - input: { - title: 'Văn bản nguồn', - placeholder: 'Vui lòng nhập một văn bản, khuyến nghị sử dụng một câu khẳng định ngắn.', - countWarning: 'Tối đa 200 ký tự.', - indexWarning: 'Chỉ có sẵn trong Kiến thức chất lượng cao.', - testing: 'Đang kiểm tra', - }, - hit: { - title: 'CÁC ĐOẠN VĂN ĐƯỢC TRUY XUẤT', - emptyTip: 'Kết quả kiểm tra truy vấn sẽ hiển thị ở đây', - }, - noRecentTip: 'Không có kết quả truy vấn gần đây', - viewChart: 'Xem BIỂU ĐỒ VECTOR', - settingTitle: 'Cài đặt truy xuất', - viewDetail: 'Xem chi tiết', - records: 'Hồ sơ', - open: 'Mở', - keyword: 'Từ khoá', - hitChunks: 'Nhấn {{num}} đoạn con', - chunkDetail: 'Chi tiết khối', - imageUploader: { - tip: 'Tải lên hoặc thả hình ảnh (Tối đa {{batchCount}}, {{size}}MB mỗi ảnh)', - tooltip: 'Tải hình ảnh lên (Tối đa {{batchCount}}, {{size}}MB mỗi ảnh)', - dropZoneTip: 'Kéo tệp vào đây để tải lên', - singleChunkAttachmentLimitTooltip: 'Số lượng phụ kiện khối đơn không được vượt quá {{limit}}', - }, -} - -export default translation diff --git a/web/i18n/vi-VN/dataset-pipeline.json b/web/i18n/vi-VN/dataset-pipeline.json new file mode 100644 index 0000000000..ca4722baaf --- /dev/null +++ b/web/i18n/vi-VN/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "createFromScratch": { + "title": "Quy trình kiến thức trống", + "description": "Tạo quy trình tùy chỉnh từ đầu với toàn quyền kiểm soát cấu trúc và xử lý dữ liệu." + }, + "backToKnowledge": "Quay lại kiến thức", + "caution": "Thận trọng", + "importDSL": "Nhập từ tệp DSL", + "createKnowledge": "Tạo kiến thức", + "errorTip": "Không thể tạo Cơ sở kiến thức", + "successTip": "Tạo thành công Cơ sở tri thức" + }, + "templates": { + "customized": "Tùy chỉnh" + }, + "operations": { + "process": "Quá trình", + "choose": "Chọn", + "preview": "Download", + "backToDataSource": "Quay lại nguồn dữ liệu", + "details": "Chi tiết", + "dataSource": "Nguồn dữ liệu", + "editInfo": "Chỉnh sửa thông tin", + "exportPipeline": "Đường ống xuất khẩu", + "saveAndProcess": "Lưu & xử lý", + "useTemplate": "Sử dụng quy trình kiến thức này", + "convert": "Convert" + }, + "deletePipeline": { + "content": "Xóa mẫu quy trình là không thể đảo ngược.", + "title": "Bạn có chắc chắn xóa mẫu quy trình này không?" + }, + "publishPipeline": { + "success": { + "message": "Knowledge Pipeline đã xuất bản", + "tip": "Đi tới Tài liệu để thêm hoặc quản lý các tài liệu." + }, + "error": { + "message": "Không thể xuất bản quy trình kiến thức" + } + }, + "publishTemplate": { + "success": { + "learnMore": "Tìm hiểu thêm", + "message": "Mẫu đường ống đã được xuất bản", + "tip": "Bạn có thể sử dụng mẫu này trên trang tạo." + }, + "error": { + "message": "Không xuất bản được mẫu quy trình" + } + }, + "exportDSL": { + "successTip": "Xuất DSL quy trình thành công", + "errorTip": "Không thể xuất DSL đường ống" + }, + "details": { + "structure": "Cấu trúc", + "structureTooltip": "Chunk Structure xác định cách các tài liệu được phân tách và lập chỉ mục — cung cấp các chế độ General, Parent-Child và Q&A — và là duy nhất cho mỗi cơ sở tri thức.", + "createdBy": "Bởi {{author}}" + }, + "testRun": { + "steps": { + "dataSource": "Nguồn dữ liệu", + "documentProcessing": "Xử lý tài liệu" + }, + "dataSource": { + "localFiles": "Tệp cục bộ" + }, + "notion": { + "docTitle": "Tài liệu Notion", + "title": "Chọn trang Notion" + }, + "title": "Chạy thử", + "tooltip": "Ở chế độ chạy thử, chỉ được phép nhập một tài liệu tại một thời điểm để gỡ lỗi và quan sát dễ dàng hơn." + }, + "inputFieldPanel": { + "uniqueInputs": { + "title": "Đầu vào duy nhất cho mỗi lối vào", + "tooltip": "Đầu vào duy nhất chỉ có thể truy cập được vào nguồn dữ liệu đã chọn và các nút xuôi dòng của nó. Người dùng sẽ không cần phải điền vào nó khi chọn các nguồn dữ liệu khác. Chỉ các trường đầu vào được tham chiếu bởi các biến nguồn dữ liệu sẽ xuất hiện trong bước đầu tiên (Nguồn dữ liệu). Tất cả các trường khác sẽ được hiển thị trong bước thứ hai (Tài liệu xử lý)." + }, + "globalInputs": { + "title": "Đầu vào toàn cầu cho tất cả các lối vào", + "tooltip": "Đầu vào toàn cầu được chia sẻ trên tất cả các nút. Người dùng sẽ cần điền chúng khi chọn bất kỳ nguồn dữ liệu nào. Ví dụ: các trường như dấu phân cách và độ dài khối tối đa có thể được áp dụng đồng nhất trên nhiều nguồn dữ liệu. Chỉ các trường đầu vào được tham chiếu bởi các biến Nguồn dữ liệu mới xuất hiện trong bước đầu tiên (Nguồn dữ liệu). Tất cả các trường khác hiển thị trong bước thứ hai (Tài liệu xử lý)." + }, + "preview": { + "stepOneTitle": "Nguồn dữ liệu", + "stepTwoTitle": "Quy trình tài liệu" + }, + "error": { + "variableDuplicate": "Tên biến đã tồn tại. Vui lòng chọn một tên khác." + }, + "addInputField": "Thêm trường đầu vào", + "editInputField": "Chỉnh sửa trường nhập liệu", + "title": "Trường đầu vào của người dùng", + "description": "Các trường đầu vào của người dùng được sử dụng để xác định và thu thập các biến cần thiết trong quá trình thực thi quy trình. Người dùng có thể tùy chỉnh loại trường và linh hoạt cấu hình giá trị đầu vào để đáp ứng nhu cầu của các nguồn dữ liệu hoặc các bước xử lý tài liệu khác nhau." + }, + "addDocuments": { + "steps": { + "processDocuments": "Quy trình tài liệu", + "processingDocuments": "Xử lý tài liệu", + "chooseDatasource": "Chọn nguồn dữ liệu" + }, + "stepOne": { + "preview": "Download" + }, + "stepTwo": { + "previewChunks": "Xem trước Chunks", + "chunkSettings": "Cài đặt Chunk" + }, + "stepThree": { + "learnMore": "Tìm hiểu thêm" + }, + "characters": "Ký tự", + "backToDataSource": "Nguồn dữ liệu", + "title": "Thêm tài liệu", + "selectOnlineDocumentTip": "Xử lý lên đến {{count}} trang", + "selectOnlineDriveTip": "Xử lý tối đa {{count}} tệp, mỗi tệp tối đa {{fileSize}} MB" + }, + "documentSettings": { + "title": "Cài đặt tài liệu" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} trang" + }, + "onlineDrive": { + "breadcrumbs": { + "allFiles": "Tất cả các tập tin", + "allBuckets": "Tất cả các bộ lưu trữ đám mây", + "searchPlaceholder": "Tìm kiếm tệp...", + "searchResult": "Tìm {{searchResultsLength}} mục trong thư mục \"{{folderName}}\"" + }, + "emptySearchResult": "Không có vật phẩm nào được tìm thấy", + "notSupportedFileType": "Loại tệp này không được hỗ trợ", + "emptyFolder": "Thư mục này trống", + "resetKeywords": "Đặt lại từ khóa", + "notConnected": "{{name}} không được kết nối", + "notConnectedTip": "Để đồng bộ với {{name}}, trước tiên phải thiết lập kết nối với {{name}}." + }, + "conversion": { + "confirm": { + "title": "Sự xác nhận", + "content": "Hành động này là vĩnh viễn. Bạn sẽ không thể hoàn nguyên về phương pháp trước đó. Vui lòng xác nhận để chuyển đổi." + }, + "title": "Chuyển đổi sang quy trình kiến thức", + "warning": "Hành động này không thể hoàn tác.", + "errorMessage": "Không thể chuyển đổi tập dữ liệu thành quy trình", + "descriptionChunk2": "— một cách tiếp cận cởi mở và linh hoạt hơn với quyền truy cập vào các plugin từ thị trường của chúng tôi. Điều này sẽ áp dụng phương pháp xử lý mới cho tất cả các tài liệu trong tương lai.", + "successMessage": "Đã chuyển đổi thành công tập dữ liệu thành một quy trình", + "descriptionChunk1": "Giờ đây, bạn có thể chuyển đổi cơ sở kiến thức hiện có của mình để sử dụng Đường ống kiến thức để xử lý tài liệu" + }, + "knowledgePermissions": "Quyền", + "inputField": "Trường đầu vào", + "pipelineNameAndIcon": "Tên đường ống & biểu tượng", + "knowledgeDescription": "Mô tả kiến thức", + "knowledgeNameAndIcon": "Tên kiến thức & biểu tượng", + "editPipelineInfo": "Chỉnh sửa thông tin quy trình", + "knowledgeNameAndIconPlaceholder": "Vui lòng nhập tên của Cơ sở kiến thức", + "knowledgeDescriptionPlaceholder": "Mô tả những gì có trong Cơ sở kiến thức này. Mô tả chi tiết cho phép AI truy cập nội dung của tập dữ liệu chính xác hơn. Nếu trống, Dify sẽ sử dụng chiến lược hit mặc định. (Tùy chọn)", + "configurationTip": "Cấu hình {{pluginName}}" +} diff --git a/web/i18n/vi-VN/dataset-pipeline.ts b/web/i18n/vi-VN/dataset-pipeline.ts deleted file mode 100644 index 9589f8a715..0000000000 --- a/web/i18n/vi-VN/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - createFromScratch: { - title: 'Quy trình kiến thức trống', - description: 'Tạo quy trình tùy chỉnh từ đầu với toàn quyền kiểm soát cấu trúc và xử lý dữ liệu.', - }, - backToKnowledge: 'Quay lại kiến thức', - caution: 'Thận trọng', - importDSL: 'Nhập từ tệp DSL', - createKnowledge: 'Tạo kiến thức', - errorTip: 'Không thể tạo Cơ sở kiến thức', - successTip: 'Tạo thành công Cơ sở tri thức', - }, - templates: { - customized: 'Tùy chỉnh', - }, - operations: { - process: 'Quá trình', - choose: 'Chọn', - preview: 'Download', - backToDataSource: 'Quay lại nguồn dữ liệu', - details: 'Chi tiết', - dataSource: 'Nguồn dữ liệu', - editInfo: 'Chỉnh sửa thông tin', - exportPipeline: 'Đường ống xuất khẩu', - saveAndProcess: 'Lưu & xử lý', - useTemplate: 'Sử dụng quy trình kiến thức này', - convert: 'Convert', - }, - deletePipeline: { - content: 'Xóa mẫu quy trình là không thể đảo ngược.', - title: 'Bạn có chắc chắn xóa mẫu quy trình này không?', - }, - publishPipeline: { - success: { - message: 'Knowledge Pipeline đã xuất bản', - tip: 'Đi tới Tài liệu để thêm hoặc quản lý các tài liệu.', - }, - error: { - message: 'Không thể xuất bản quy trình kiến thức', - }, - }, - publishTemplate: { - success: { - learnMore: 'Tìm hiểu thêm', - message: 'Mẫu đường ống đã được xuất bản', - tip: 'Bạn có thể sử dụng mẫu này trên trang tạo.', - }, - error: { - message: 'Không xuất bản được mẫu quy trình', - }, - }, - exportDSL: { - successTip: 'Xuất DSL quy trình thành công', - errorTip: 'Không thể xuất DSL đường ống', - }, - details: { - structure: 'Cấu trúc', - structureTooltip: 'Chunk Structure xác định cách các tài liệu được phân tách và lập chỉ mục — cung cấp các chế độ General, Parent-Child và Q&A — và là duy nhất cho mỗi cơ sở tri thức.', - createdBy: 'Bởi {{author}}', - }, - testRun: { - steps: { - dataSource: 'Nguồn dữ liệu', - documentProcessing: 'Xử lý tài liệu', - }, - dataSource: { - localFiles: 'Tệp cục bộ', - }, - notion: { - docTitle: 'Tài liệu Notion', - title: 'Chọn trang Notion', - }, - title: 'Chạy thử', - tooltip: 'Ở chế độ chạy thử, chỉ được phép nhập một tài liệu tại một thời điểm để gỡ lỗi và quan sát dễ dàng hơn.', - }, - inputFieldPanel: { - uniqueInputs: { - title: 'Đầu vào duy nhất cho mỗi lối vào', - tooltip: 'Đầu vào duy nhất chỉ có thể truy cập được vào nguồn dữ liệu đã chọn và các nút xuôi dòng của nó. Người dùng sẽ không cần phải điền vào nó khi chọn các nguồn dữ liệu khác. Chỉ các trường đầu vào được tham chiếu bởi các biến nguồn dữ liệu sẽ xuất hiện trong bước đầu tiên (Nguồn dữ liệu). Tất cả các trường khác sẽ được hiển thị trong bước thứ hai (Tài liệu xử lý).', - }, - globalInputs: { - title: 'Đầu vào toàn cầu cho tất cả các lối vào', - tooltip: 'Đầu vào toàn cầu được chia sẻ trên tất cả các nút. Người dùng sẽ cần điền chúng khi chọn bất kỳ nguồn dữ liệu nào. Ví dụ: các trường như dấu phân cách và độ dài khối tối đa có thể được áp dụng đồng nhất trên nhiều nguồn dữ liệu. Chỉ các trường đầu vào được tham chiếu bởi các biến Nguồn dữ liệu mới xuất hiện trong bước đầu tiên (Nguồn dữ liệu). Tất cả các trường khác hiển thị trong bước thứ hai (Tài liệu xử lý).', - }, - preview: { - stepOneTitle: 'Nguồn dữ liệu', - stepTwoTitle: 'Quy trình tài liệu', - }, - error: { - variableDuplicate: 'Tên biến đã tồn tại. Vui lòng chọn một tên khác.', - }, - addInputField: 'Thêm trường đầu vào', - editInputField: 'Chỉnh sửa trường nhập liệu', - title: 'Trường đầu vào của người dùng', - description: 'Các trường đầu vào của người dùng được sử dụng để xác định và thu thập các biến cần thiết trong quá trình thực thi quy trình. Người dùng có thể tùy chỉnh loại trường và linh hoạt cấu hình giá trị đầu vào để đáp ứng nhu cầu của các nguồn dữ liệu hoặc các bước xử lý tài liệu khác nhau.', - }, - addDocuments: { - steps: { - processDocuments: 'Quy trình tài liệu', - processingDocuments: 'Xử lý tài liệu', - chooseDatasource: 'Chọn nguồn dữ liệu', - }, - stepOne: { - preview: 'Download', - }, - stepTwo: { - previewChunks: 'Xem trước Chunks', - chunkSettings: 'Cài đặt Chunk', - }, - stepThree: { - learnMore: 'Tìm hiểu thêm', - }, - characters: 'Ký tự', - backToDataSource: 'Nguồn dữ liệu', - title: 'Thêm tài liệu', - selectOnlineDocumentTip: 'Xử lý lên đến {{count}} trang', - selectOnlineDriveTip: 'Xử lý tối đa {{count}} tệp, mỗi tệp tối đa {{fileSize}} MB', - }, - documentSettings: { - title: 'Cài đặt tài liệu', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} trang', - }, - onlineDrive: { - breadcrumbs: { - allFiles: 'Tất cả các tập tin', - allBuckets: 'Tất cả các bộ lưu trữ đám mây', - searchPlaceholder: 'Tìm kiếm tệp...', - searchResult: 'Tìm {{searchResultsLength}} mục trong thư mục "{{folderName}}"', - }, - emptySearchResult: 'Không có vật phẩm nào được tìm thấy', - notSupportedFileType: 'Loại tệp này không được hỗ trợ', - emptyFolder: 'Thư mục này trống', - resetKeywords: 'Đặt lại từ khóa', - notConnected: '{{name}} không được kết nối', - notConnectedTip: 'Để đồng bộ với {{name}}, trước tiên phải thiết lập kết nối với {{name}}.', - }, - conversion: { - confirm: { - title: 'Sự xác nhận', - content: 'Hành động này là vĩnh viễn. Bạn sẽ không thể hoàn nguyên về phương pháp trước đó. Vui lòng xác nhận để chuyển đổi.', - }, - title: 'Chuyển đổi sang quy trình kiến thức', - warning: 'Hành động này không thể hoàn tác.', - errorMessage: 'Không thể chuyển đổi tập dữ liệu thành quy trình', - descriptionChunk2: '— một cách tiếp cận cởi mở và linh hoạt hơn với quyền truy cập vào các plugin từ thị trường của chúng tôi. Điều này sẽ áp dụng phương pháp xử lý mới cho tất cả các tài liệu trong tương lai.', - successMessage: 'Đã chuyển đổi thành công tập dữ liệu thành một quy trình', - descriptionChunk1: 'Giờ đây, bạn có thể chuyển đổi cơ sở kiến thức hiện có của mình để sử dụng Đường ống kiến thức để xử lý tài liệu', - }, - knowledgePermissions: 'Quyền', - inputField: 'Trường đầu vào', - pipelineNameAndIcon: 'Tên đường ống & biểu tượng', - knowledgeDescription: 'Mô tả kiến thức', - knowledgeNameAndIcon: 'Tên kiến thức & biểu tượng', - editPipelineInfo: 'Chỉnh sửa thông tin quy trình', - knowledgeNameAndIconPlaceholder: 'Vui lòng nhập tên của Cơ sở kiến thức', - knowledgeDescriptionPlaceholder: 'Mô tả những gì có trong Cơ sở kiến thức này. Mô tả chi tiết cho phép AI truy cập nội dung của tập dữ liệu chính xác hơn. Nếu trống, Dify sẽ sử dụng chiến lược hit mặc định. (Tùy chọn)', - configurationTip: 'Cấu hình {{pluginName}}', -} - -export default translation diff --git a/web/i18n/vi-VN/dataset-settings.json b/web/i18n/vi-VN/dataset-settings.json new file mode 100644 index 0000000000..28a208f03d --- /dev/null +++ b/web/i18n/vi-VN/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "Cài đặt Kiến thức", + "desc": "Tại đây, bạn có thể sửa đổi các thuộc tính và phương pháp làm việc của Kiến thức.", + "form": { + "name": "Tên Kiến thức", + "namePlaceholder": "Vui lòng nhập tên Kiến thức", + "nameError": "Tên không thể để trống", + "desc": "Mô tả Kiến thức", + "descInfo": "Vui lòng viết mô tả rõ ràng về nội dung của Kiến thức. Mô tả này sẽ được sử dụng làm cơ sở cho việc kết hợp khi lựa chọn từ nhiều Kiến thức trong quá trình suy luận.", + "descPlaceholder": "Mô tả những gì có trong Kiến thức này. Một mô tả chi tiết giúp AI truy cập nội dung của Kiến thức một cách hiệu quả. Nếu để trống, Dify sẽ sử dụng chiến lược truy xuất mặc định.", + "descWrite": "Tìm hiểu cách viết mô tả Kiến thức tốt.", + "permissions": "Quyền hạn", + "permissionsOnlyMe": "Chỉ mình tôi", + "permissionsAllMember": "Tất cả thành viên nhóm", + "indexMethod": "Phương pháp chỉ mục", + "indexMethodHighQuality": "Chất lượng cao", + "indexMethodHighQualityTip": "Sử dụng mô hình Embedding để xử lý, cung cấp độ chính xác cao hơn khi người dùng truy vấn.", + "indexMethodEconomy": "Tiết kiệm", + "indexMethodEconomyTip": "Sử dụng các công cụ nhúng vector ngoại tuyến, chỉ mục từ khóa, v.v. để giảm độ chính xác mà không tiêu tốn token", + "embeddingModel": "Mô hình nhúng", + "embeddingModelTip": "Để thay đổi mô hình nhúng, vui lòng đi tới ", + "embeddingModelTipLink": "Cài đặt", + "retrievalSetting": { + "title": "Cài đặt truy xuất", + "learnMore": "Tìm hiểu thêm", + "description": " về phương pháp truy xuất.", + "longDescription": " về phương pháp truy xuất. Bạn có thể thay đổi điều này bất kỳ lúc nào trong cài đặt Kiến thức.", + "method": "Phương pháp truy xuất", + "multiModalTip": "Khi mô hình nhúng hỗ trợ đa phương thức, vui lòng chọn một mô hình sắp xếp lại đa phương thức để hiệu suất tốt hơn." + }, + "save": "Lưu", + "permissionsInvitedMembers": "Thành viên một phần trong nhóm", + "me": "(Bạn)", + "externalKnowledgeAPI": "API kiến thức bên ngoài", + "retrievalSettings": "Cài đặt truy xuất", + "externalKnowledgeID": "ID kiến thức bên ngoài", + "helpText": "Tìm hiểu cách viết mô tả tập dữ liệu tốt.", + "indexMethodChangeToEconomyDisabledTip": "Không khả dụng để hạ cấp từ HQ xuống ECO", + "upgradeHighQualityTip": "Sau khi nâng cấp lên chế độ Chất lượng cao, không thể hoàn nguyên về chế độ Tiết kiệm", + "searchModel": "Tìm kiếm mô hình", + "chunkStructure": { + "title": "Cấu trúc Chunk", + "description": "về Cấu trúc khối.", + "learnMore": "Tìm hiểu thêm" + }, + "numberOfKeywords": "Số lượng từ khóa", + "onSearchResults": "Không có thành viên nào khớp với truy vấn tìm kiếm của bạn.\nHãy thử tìm kiếm lại.", + "nameAndIcon": "Tên & Biểu tượng" + } +} diff --git a/web/i18n/vi-VN/dataset-settings.ts b/web/i18n/vi-VN/dataset-settings.ts deleted file mode 100644 index 47dc5ce3a6..0000000000 --- a/web/i18n/vi-VN/dataset-settings.ts +++ /dev/null @@ -1,52 +0,0 @@ -const translation = { - title: 'Cài đặt Kiến thức', - desc: 'Tại đây, bạn có thể sửa đổi các thuộc tính và phương pháp làm việc của Kiến thức.', - form: { - name: 'Tên Kiến thức', - namePlaceholder: 'Vui lòng nhập tên Kiến thức', - nameError: 'Tên không thể để trống', - desc: 'Mô tả Kiến thức', - descInfo: 'Vui lòng viết mô tả rõ ràng về nội dung của Kiến thức. Mô tả này sẽ được sử dụng làm cơ sở cho việc kết hợp khi lựa chọn từ nhiều Kiến thức trong quá trình suy luận.', - descPlaceholder: 'Mô tả những gì có trong Kiến thức này. Một mô tả chi tiết giúp AI truy cập nội dung của Kiến thức một cách hiệu quả. Nếu để trống, Dify sẽ sử dụng chiến lược truy xuất mặc định.', - descWrite: 'Tìm hiểu cách viết mô tả Kiến thức tốt.', - permissions: 'Quyền hạn', - permissionsOnlyMe: 'Chỉ mình tôi', - permissionsAllMember: 'Tất cả thành viên nhóm', - indexMethod: 'Phương pháp chỉ mục', - indexMethodHighQuality: 'Chất lượng cao', - indexMethodHighQualityTip: 'Sử dụng mô hình Embedding để xử lý, cung cấp độ chính xác cao hơn khi người dùng truy vấn.', - indexMethodEconomy: 'Tiết kiệm', - indexMethodEconomyTip: 'Sử dụng các công cụ nhúng vector ngoại tuyến, chỉ mục từ khóa, v.v. để giảm độ chính xác mà không tiêu tốn token', - embeddingModel: 'Mô hình nhúng', - embeddingModelTip: 'Để thay đổi mô hình nhúng, vui lòng đi tới ', - embeddingModelTipLink: 'Cài đặt', - retrievalSetting: { - title: 'Cài đặt truy xuất', - learnMore: 'Tìm hiểu thêm', - description: ' về phương pháp truy xuất.', - longDescription: ' về phương pháp truy xuất. Bạn có thể thay đổi điều này bất kỳ lúc nào trong cài đặt Kiến thức.', - method: 'Phương pháp truy xuất', - multiModalTip: 'Khi mô hình nhúng hỗ trợ đa phương thức, vui lòng chọn một mô hình sắp xếp lại đa phương thức để hiệu suất tốt hơn.', - }, - save: 'Lưu', - permissionsInvitedMembers: 'Thành viên một phần trong nhóm', - me: '(Bạn)', - externalKnowledgeAPI: 'API kiến thức bên ngoài', - retrievalSettings: 'Cài đặt truy xuất', - externalKnowledgeID: 'ID kiến thức bên ngoài', - helpText: 'Tìm hiểu cách viết mô tả tập dữ liệu tốt.', - indexMethodChangeToEconomyDisabledTip: 'Không khả dụng để hạ cấp từ HQ xuống ECO', - upgradeHighQualityTip: 'Sau khi nâng cấp lên chế độ Chất lượng cao, không thể hoàn nguyên về chế độ Tiết kiệm', - searchModel: 'Tìm kiếm mô hình', - chunkStructure: { - title: 'Cấu trúc Chunk', - description: 'về Cấu trúc khối.', - learnMore: 'Tìm hiểu thêm', - }, - numberOfKeywords: 'Số lượng từ khóa', - onSearchResults: 'Không có thành viên nào khớp với truy vấn tìm kiếm của bạn.\nHãy thử tìm kiếm lại.', - nameAndIcon: 'Tên & Biểu tượng', - }, -} - -export default translation diff --git a/web/i18n/vi-VN/dataset.json b/web/i18n/vi-VN/dataset.json new file mode 100644 index 0000000000..d1bf2b6e11 --- /dev/null +++ b/web/i18n/vi-VN/dataset.json @@ -0,0 +1,249 @@ +{ + "knowledge": "Kiến thức", + "documentCount": " tài liệu", + "wordCount": " nghìn từ", + "appCount": " ứng dụng liên kết", + "createDataset": "Tạo bộ kiến thức", + "createDatasetIntro": "Nhập dữ liệu văn bản của bạn hoặc cập nhật dữ liệu theo thời gian thực qua Webhook để tăng cường ngữ cảnh cho LLM.", + "deleteDatasetConfirmTitle": "Xóa bộ kiến thức này?", + "deleteDatasetConfirmContent": "Việc xóa bộ kiến thức là không thể hoàn tác. Người dùng sẽ không còn truy cập được vào bộ kiến thức của bạn, và tất cả cấu hình cùng nhật ký lời nhắc sẽ bị xóa vĩnh viễn.", + "datasetUsedByApp": "Bộ kiến thức này đang được sử dụng bởi một số ứng dụng. Các ứng dụng sẽ không thể sử dụng bộ kiến thức này nữa, và tất cả cấu hình lời nhắc cùng nhật ký sẽ bị xóa vĩnh viễn.", + "datasetDeleted": "Bộ kiến thức đã được xóa", + "datasetDeleteFailed": "Xóa bộ kiến thức không thành công", + "didYouKnow": "Bạn có biết?", + "intro1": "Bộ kiến thức có thể được tích hợp vào ứng dụng Dify ", + "intro2": "như một ngữ cảnh", + "intro3": ",", + "intro4": "hoặc ", + "intro5": "có thể được tạo", + "intro6": " dưới dạng một plugin chỉ mục ChatGPT độc lập để xuất bản", + "unavailable": "Không khả dụng", + "datasets": "BỘ KIẾN THỨC", + "datasetsApi": "API", + "retrieval": { + "semantic_search": { + "title": "Tìm kiếm Vector", + "description": "Tạo các nhúng truy vấn và tìm kiếm đoạn văn bản tương tự nhất với biểu diễn vector của nó." + }, + "full_text_search": { + "title": "Tìm kiếm Toàn văn bản", + "description": "Lập chỉ mục cho tất cả các thuật ngữ trong tài liệu, cho phép người dùng tìm kiếm bất kỳ thuật ngữ nào và truy xuất đoạn văn bản liên quan chứa các thuật ngữ đó." + }, + "hybrid_search": { + "title": "Tìm kiếm Kết hợp", + "description": "Thực hiện tìm kiếm toàn văn bản và tìm kiếm vector đồng thời, sắp xếp lại để chọn kết quả phù hợp nhất với truy vấn của người dùng. Yêu cầu cấu hình API mô hình Rerank.", + "recommend": "Đề xuất" + }, + "invertedIndex": {}, + "change": "Thay đổi", + "changeRetrievalMethod": "Thay đổi phương pháp truy xuất", + "keyword_search": { + "title": "Chỉ số đảo ngược", + "description": "Chỉ số đảo ngược là một cấu trúc được sử dụng để truy xuất hiệu quả. Được sắp xếp theo thuật ngữ, mỗi thuật ngữ trỏ đến các tài liệu hoặc trang web có chứa nó." + } + }, + "docsFailedNotice": "tài liệu không được lập chỉ mục", + "retry": "Thử lại", + "indexingTechnique": { + "high_quality": "CHẤT LƯỢNG", + "economy": "TIẾT KIỆM" + }, + "indexingMethod": { + "semantic_search": "VECTOR", + "full_text_search": "VĂN BẢN ĐẦY ĐỦ", + "hybrid_search": "KẾT HỢP", + "invertedIndex": "ĐẢO NGƯỢC" + }, + "mixtureHighQualityAndEconomicTip": "Mô hình xếp hạng lại là cần thiết cho sự kết hợp của các cơ sở kiến thức chất lượng cao và tiết kiệm.", + "inconsistentEmbeddingModelTip": "Mô hình xếp hạng lại là cần thiết nếu các mô hình nhúng của các cơ sở kiến thức được chọn không nhất quán.", + "retrievalSettings": "Cài đặt truy xuất", + "rerankSettings": "Cài đặt xếp hạng lại", + "weightedScore": { + "title": "Điểm số có trọng số", + "description": "Bằng cách điều chỉnh trọng số được gán, chiến lược xếp hạng lại này xác định liệu ưu tiên khớp ngữ nghĩa hay từ khóa.", + "semanticFirst": "Ngữ nghĩa trước", + "keywordFirst": "Từ khóa trước", + "customized": "Tùy chỉnh", + "semantic": "Ngữ nghĩa", + "keyword": "Từ khóa" + }, + "nTo1RetrievalLegacy": "Truy xuất N-đến-1 sẽ chính thức bị loại bỏ từ tháng 9. Khuyến nghị sử dụng truy xuất đa đường dẫn mới nhất để có kết quả tốt hơn.", + "nTo1RetrievalLegacyLink": "Tìm hiểu thêm", + "nTo1RetrievalLegacyLinkText": "Truy xuất N-đến-1 sẽ chính thức bị loại bỏ vào tháng 9.", + "defaultRetrievalTip": "Truy xuất nhiều đường dẫn được sử dụng theo mặc định. Kiến thức được lấy từ nhiều cơ sở kiến thức và sau đó được xếp hạng lại.", + "editExternalAPIConfirmWarningContent": { + "front": "API Kiến thức Bên ngoài này được liên kết với", + "end": "kiến thức bên ngoài, và sửa đổi này sẽ được áp dụng cho tất cả chúng. Bạn có chắc chắn muốn lưu thay đổi này không?" + }, + "editExternalAPIFormWarning": { + "front": "API bên ngoài này được liên kết với", + "end": "Kiến thức bên ngoài" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "end": "?", + "front": "Xóa" + }, + "content": { + "front": "API Kiến thức Bên ngoài này được liên kết với", + "end": "kiến thức bên ngoài. Xóa API này sẽ làm mất hiệu lực tất cả chúng. Bạn có chắc chắn muốn xóa API này không?" + }, + "noConnectionContent": "Bạn có chắc chắn xóa API này không?" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "Chọn một API kiến thức bên ngoài" + }, + "connectDatasetIntro": { + "content": { + "end": ". Sau đó tìm ID kiến thức tương ứng và điền vào biểu mẫu bên trái. Nếu tất cả thông tin là chính xác, nó sẽ tự động chuyển đến bài kiểm tra truy xuất trong cơ sở kiến thức sau khi nhấp vào nút kết nối.", + "front": "Để kết nối với cơ sở kiến thức bên ngoài, trước tiên bạn cần tạo API bên ngoài. Vui lòng đọc kỹ và tham khảo", + "link": "Tìm hiểu cách tạo API bên ngoài" + }, + "learnMore": "Tìm hiểu thêm", + "title": "Cách kết nối với cơ sở kiến thức bên ngoài" + }, + "connectHelper": { + "helper3": ". Chúng tôi thực sự khuyên bạn nên", + "helper4": "Đọc tài liệu trợ giúp", + "helper1": "Kết nối với cơ sở kiến thức bên ngoài thông qua API và ID cơ sở kiến thức. Hiện tại,", + "helper2": "Chỉ hỗ trợ chức năng truy xuất", + "helper5": "cẩn thận trước khi sử dụng tính năng này." + }, + "externalKnowledgeForm": { + "cancel": "Hủy", + "connect": "Kết nối" + }, + "externalAPIForm": { + "encrypted": { + "end": "Công nghệ.", + "front": "Mã thông báo API của bạn sẽ được mã hóa và lưu trữ bằng cách sử dụng" + }, + "apiKey": "Khóa API", + "endpoint": "Điểm cuối API", + "edit": "Biên tập", + "cancel": "Hủy", + "name": "Tên", + "save": "Cứu" + }, + "learnHowToWriteGoodKnowledgeDescription": "Tìm hiểu cách viết mô tả kiến thức tốt", + "noExternalKnowledge": "Chưa có API Kiến thức Bên ngoài, hãy nhấp vào đây để tạo", + "connectDataset": "Kết nối với cơ sở kiến thức bên ngoài", + "externalTag": "Ngoài", + "externalAPIPanelTitle": "API kiến thức bên ngoài", + "editExternalAPITooltipTitle": "KIẾN THỨC LIÊN KẾT", + "externalKnowledgeNamePlaceholder": "Vui lòng nhập tên của cơ sở kiến thức", + "createExternalAPI": "Thêm API kiến thức bên ngoài", + "externalKnowledgeDescription": "Mô tả kiến thức", + "externalAPIPanelDocumentation": "Tìm hiểu cách tạo API Kiến thức Bên ngoài", + "allExternalTip": "Khi chỉ sử dụng kiến thức bên ngoài, người dùng có thể chọn có bật mô hình Xếp hạng lại hay không. Nếu không được bật, các đoạn được truy xuất sẽ được sắp xếp dựa trên điểm số. Khi các chiến lược truy xuất của các cơ sở kiến thức khác nhau không nhất quán, nó sẽ không chính xác.", + "editExternalAPIFormTitle": "Chỉnh sửa API Kiến thức Bên ngoài", + "externalKnowledgeId": "ID kiến thức bên ngoài", + "mixtureInternalAndExternalTip": "Mô hình Rerank là cần thiết cho sự kết hợp giữa kiến thức bên trong và bên ngoài.", + "externalAPI": "API bên ngoài", + "externalKnowledgeDescriptionPlaceholder": "Mô tả nội dung trong Cơ sở Kiến thức này (tùy chọn)", + "externalKnowledgeName": "Tên kiến thức bên ngoài", + "externalKnowledgeIdPlaceholder": "Vui lòng nhập ID kiến thức", + "createNewExternalAPI": "Tạo API Kiến thức Bên ngoài mới", + "externalAPIPanelDescription": "API kiến thức bên ngoài được sử dụng để kết nối với cơ sở kiến thức bên ngoài Dify và truy xuất kiến thức từ cơ sở kiến thức đó.", + "chunkingMode": { + "general": "Tổng quát", + "parentChild": "Cha mẹ-con cái", + "graph": "Đồ thị", + "qa": "Hỏi & Đáp" + }, + "parentMode": { + "paragraph": "Đoạn", + "fullDoc": "Tài liệu đầy đủ" + }, + "batchAction": { + "disable": "Vô hiệu hóa", + "enable": "Kích hoạt", + "delete": "Xóa", + "selected": "Chọn", + "archive": "Lưu trữ", + "cancel": "Hủy" + }, + "localDocs": "Tài liệu địa phương", + "enable": "Kích hoạt", + "preprocessDocument": "{{số}} Tiền xử lý tài liệu", + "documentsDisabled": "{{num}} tài liệu bị vô hiệu hóa - không hoạt động trong hơn 30 ngày", + "allKnowledge": "Tất cả kiến thức", + "allKnowledgeDescription": "Chọn để hiển thị tất cả kiến thức trong không gian làm việc này. Chỉ Chủ sở hữu không gian làm việc mới có thể quản lý tất cả kiến thức.", + "metadata": { + "createMetadata": { + "name": "Tên", + "namePlaceholder": "Thêm tên siêu dữ liệu", + "type": "Loại", + "title": "Siêu dữ liệu mới", + "back": "Quay lại" + }, + "checkName": { + "invalid": "Tên siêu dữ liệu chỉ có thể chứa chữ cái thường, số và dấu gạch dưới, và phải bắt đầu bằng một chữ cái thường.", + "empty": "Tên siêu dữ liệu không được để trống", + "tooLong": "Tên siêu dữ liệu không được vượt quá {{max}} ký tự" + }, + "batchEditMetadata": { + "applyToAllSelectDocumentTip": "Tự động tạo tất cả các siêu dữ liệu đã chỉnh sửa và mới cho tất cả các tài liệu được chọn, nếu không, việc chỉnh sửa siêu dữ liệu sẽ chỉ áp dụng cho các tài liệu có nó.", + "multipleValue": "Nhiều giá trị", + "editDocumentsNum": "Chỉnh sửa {{num}} tài liệu", + "applyToAllSelectDocument": "Áp dụng cho tất cả các tài liệu đã chọn", + "editMetadata": "Chỉnh sửa siêu dữ liệu" + }, + "selectMetadata": { + "manageAction": "Quản lý", + "search": "Tìm kiếm siêu dữ liệu", + "newAction": "Siêu dữ liệu mới" + }, + "datasetMetadata": { + "disabled": "Tắt", + "rename": "Đổi tên", + "namePlaceholder": "Tên siêu dữ liệu", + "builtIn": "Tích hợp sẵn", + "deleteTitle": "Xác nhận để xóa", + "name": "Tên", + "values": "{{num}} Giá trị", + "description": "Bạn có thể quản lý tất cả metadata trong kiến thức này ở đây. Những thay đổi sẽ được đồng bộ hóa đến mọi tài liệu.", + "deleteContent": "Bạn có chắc chắn muốn xóa siêu dữ liệu \"{{name}}\" không?", + "builtInDescription": "Siêu dữ liệu được tích hợp sẵn sẽ tự động được trích xuất và tạo ra. Nó phải được bật trước khi sử dụng và không thể chỉnh sửa.", + "addMetaData": "Thêm siêu dữ liệu" + }, + "documentMetadata": { + "documentInformation": "Thông tin tài liệu", + "technicalParameters": "Các Thông Số Kỹ Thuật", + "metadataToolTip": "Dữ liệu siêu thông tin đóng vai trò là một bộ lọc quan trọng giúp nâng cao độ chính xác và tính liên quan của việc truy xuất thông tin. Bạn có thể chỉnh sửa và thêm dữ liệu siêu thông tin cho tài liệu này ở đây.", + "startLabeling": "Bắt đầu gán nhãn" + }, + "addMetadata": "Thêm siêu dữ liệu", + "chooseTime": "Chọn một thời gian...", + "metadata": "Siêu dữ liệu" + }, + "embeddingModelNotAvailable": "Mô hình nhúng không khả dụng.", + "updated": "Cập nhật", + "createFromPipeline": "Tạo từ quy trình kiến thức", + "externalKnowledgeBase": "Cơ sở kiến thức bên ngoài", + "serviceApi": { + "card": { + "title": "API dịch vụ backend", + "endpoint": "Điểm cuối API dịch vụ", + "apiKey": "Khóa API", + "apiReference": "Tham chiếu API" + }, + "enabled": "Đang phục vụ", + "disabled": "Vô hiệu hóa", + "title": "Giao diện lập trình dịch vụ" + }, + "docAllEnabled_one": "Tài liệu {{count}} đã được kích hoạt", + "docAllEnabled_other": "Tất cả các tài liệu {{count}} đã được kích hoạt", + "partialEnabled_one": "Tổng cộng {{count}} tài liệu, {{num}} có sẵn", + "partialEnabled_other": "Tổng cộng {{count}} tài liệu, {{num}} có sẵn", + "cornerLabel": { + "unavailable": "Không khả dụng", + "pipeline": "Đường ống" + }, + "multimodal": "Đa phương thức", + "imageUploader": { + "button": "Kéo và thả tệp hoặc thư mục, hoặc", + "browse": "Duyệt", + "tip": "{{supportTypes}} (Tối đa {{batchCount}}, {{size}}MB mỗi cái)" + } +} diff --git a/web/i18n/vi-VN/dataset.ts b/web/i18n/vi-VN/dataset.ts deleted file mode 100644 index 2921b6d21e..0000000000 --- a/web/i18n/vi-VN/dataset.ts +++ /dev/null @@ -1,253 +0,0 @@ -const translation = { - knowledge: 'Kiến thức', - documentCount: ' tài liệu', - wordCount: ' nghìn từ', - appCount: ' ứng dụng liên kết', - createDataset: 'Tạo bộ kiến thức', - createDatasetIntro: 'Nhập dữ liệu văn bản của bạn hoặc cập nhật dữ liệu theo thời gian thực qua Webhook để tăng cường ngữ cảnh cho LLM.', - deleteDatasetConfirmTitle: 'Xóa bộ kiến thức này?', - deleteDatasetConfirmContent: - 'Việc xóa bộ kiến thức là không thể hoàn tác. Người dùng sẽ không còn truy cập được vào bộ kiến thức của bạn, và tất cả cấu hình cùng nhật ký lời nhắc sẽ bị xóa vĩnh viễn.', - datasetUsedByApp: 'Bộ kiến thức này đang được sử dụng bởi một số ứng dụng. Các ứng dụng sẽ không thể sử dụng bộ kiến thức này nữa, và tất cả cấu hình lời nhắc cùng nhật ký sẽ bị xóa vĩnh viễn.', - datasetDeleted: 'Bộ kiến thức đã được xóa', - datasetDeleteFailed: 'Xóa bộ kiến thức không thành công', - didYouKnow: 'Bạn có biết?', - intro1: 'Bộ kiến thức có thể được tích hợp vào ứng dụng Dify ', - intro2: 'như một ngữ cảnh', - intro3: ',', - intro4: 'hoặc ', - intro5: 'có thể được tạo', - intro6: ' dưới dạng một plugin chỉ mục ChatGPT độc lập để xuất bản', - unavailable: 'Không khả dụng', - datasets: 'BỘ KIẾN THỨC', - datasetsApi: 'API', - retrieval: { - semantic_search: { - title: 'Tìm kiếm Vector', - description: 'Tạo các nhúng truy vấn và tìm kiếm đoạn văn bản tương tự nhất với biểu diễn vector của nó.', - }, - full_text_search: { - title: 'Tìm kiếm Toàn văn bản', - description: 'Lập chỉ mục cho tất cả các thuật ngữ trong tài liệu, cho phép người dùng tìm kiếm bất kỳ thuật ngữ nào và truy xuất đoạn văn bản liên quan chứa các thuật ngữ đó.', - }, - hybrid_search: { - title: 'Tìm kiếm Kết hợp', - description: 'Thực hiện tìm kiếm toàn văn bản và tìm kiếm vector đồng thời, sắp xếp lại để chọn kết quả phù hợp nhất với truy vấn của người dùng. Yêu cầu cấu hình API mô hình Rerank.', - recommend: 'Đề xuất', - }, - invertedIndex: { - }, - change: 'Thay đổi', - changeRetrievalMethod: 'Thay đổi phương pháp truy xuất', - keyword_search: { - title: 'Chỉ số đảo ngược', - description: 'Chỉ số đảo ngược là một cấu trúc được sử dụng để truy xuất hiệu quả. Được sắp xếp theo thuật ngữ, mỗi thuật ngữ trỏ đến các tài liệu hoặc trang web có chứa nó.', - }, - }, - docsFailedNotice: 'tài liệu không được lập chỉ mục', - retry: 'Thử lại', - indexingTechnique: { - high_quality: 'CHẤT LƯỢNG', - economy: 'TIẾT KIỆM', - }, - indexingMethod: { - semantic_search: 'VECTOR', - full_text_search: 'VĂN BẢN ĐẦY ĐỦ', - hybrid_search: 'KẾT HỢP', - invertedIndex: 'ĐẢO NGƯỢC', - }, - mixtureHighQualityAndEconomicTip: 'Mô hình xếp hạng lại là cần thiết cho sự kết hợp của các cơ sở kiến thức chất lượng cao và tiết kiệm.', - inconsistentEmbeddingModelTip: 'Mô hình xếp hạng lại là cần thiết nếu các mô hình nhúng của các cơ sở kiến thức được chọn không nhất quán.', - retrievalSettings: 'Cài đặt truy xuất', - rerankSettings: 'Cài đặt xếp hạng lại', - weightedScore: { - title: 'Điểm số có trọng số', - description: 'Bằng cách điều chỉnh trọng số được gán, chiến lược xếp hạng lại này xác định liệu ưu tiên khớp ngữ nghĩa hay từ khóa.', - semanticFirst: 'Ngữ nghĩa trước', - keywordFirst: 'Từ khóa trước', - customized: 'Tùy chỉnh', - semantic: 'Ngữ nghĩa', - keyword: 'Từ khóa', - }, - nTo1RetrievalLegacy: 'Truy xuất N-đến-1 sẽ chính thức bị loại bỏ từ tháng 9. Khuyến nghị sử dụng truy xuất đa đường dẫn mới nhất để có kết quả tốt hơn.', - nTo1RetrievalLegacyLink: 'Tìm hiểu thêm', - nTo1RetrievalLegacyLinkText: 'Truy xuất N-đến-1 sẽ chính thức bị loại bỏ vào tháng 9.', - defaultRetrievalTip: 'Truy xuất nhiều đường dẫn được sử dụng theo mặc định. Kiến thức được lấy từ nhiều cơ sở kiến thức và sau đó được xếp hạng lại.', - editExternalAPIConfirmWarningContent: { - front: 'API Kiến thức Bên ngoài này được liên kết với', - end: 'kiến thức bên ngoài, và sửa đổi này sẽ được áp dụng cho tất cả chúng. Bạn có chắc chắn muốn lưu thay đổi này không?', - }, - editExternalAPIFormWarning: { - front: 'API bên ngoài này được liên kết với', - end: 'Kiến thức bên ngoài', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - end: '?', - front: 'Xóa', - }, - content: { - front: 'API Kiến thức Bên ngoài này được liên kết với', - end: 'kiến thức bên ngoài. Xóa API này sẽ làm mất hiệu lực tất cả chúng. Bạn có chắc chắn muốn xóa API này không?', - }, - noConnectionContent: 'Bạn có chắc chắn xóa API này không?', - }, - selectExternalKnowledgeAPI: { - placeholder: 'Chọn một API kiến thức bên ngoài', - }, - connectDatasetIntro: { - content: { - end: '. Sau đó tìm ID kiến thức tương ứng và điền vào biểu mẫu bên trái. Nếu tất cả thông tin là chính xác, nó sẽ tự động chuyển đến bài kiểm tra truy xuất trong cơ sở kiến thức sau khi nhấp vào nút kết nối.', - front: 'Để kết nối với cơ sở kiến thức bên ngoài, trước tiên bạn cần tạo API bên ngoài. Vui lòng đọc kỹ và tham khảo', - link: 'Tìm hiểu cách tạo API bên ngoài', - }, - learnMore: 'Tìm hiểu thêm', - title: 'Cách kết nối với cơ sở kiến thức bên ngoài', - }, - connectHelper: { - helper3: '. Chúng tôi thực sự khuyên bạn nên', - helper4: 'Đọc tài liệu trợ giúp', - helper1: 'Kết nối với cơ sở kiến thức bên ngoài thông qua API và ID cơ sở kiến thức. Hiện tại,', - helper2: 'Chỉ hỗ trợ chức năng truy xuất', - helper5: 'cẩn thận trước khi sử dụng tính năng này.', - }, - externalKnowledgeForm: { - cancel: 'Hủy', - connect: 'Kết nối', - }, - externalAPIForm: { - encrypted: { - end: 'Công nghệ.', - front: 'Mã thông báo API của bạn sẽ được mã hóa và lưu trữ bằng cách sử dụng', - }, - apiKey: 'Khóa API', - endpoint: 'Điểm cuối API', - edit: 'Biên tập', - cancel: 'Hủy', - name: 'Tên', - save: 'Cứu', - }, - learnHowToWriteGoodKnowledgeDescription: 'Tìm hiểu cách viết mô tả kiến thức tốt', - noExternalKnowledge: 'Chưa có API Kiến thức Bên ngoài, hãy nhấp vào đây để tạo', - connectDataset: 'Kết nối với cơ sở kiến thức bên ngoài', - externalTag: 'Ngoài', - externalAPIPanelTitle: 'API kiến thức bên ngoài', - editExternalAPITooltipTitle: 'KIẾN THỨC LIÊN KẾT', - externalKnowledgeNamePlaceholder: 'Vui lòng nhập tên của cơ sở kiến thức', - createExternalAPI: 'Thêm API kiến thức bên ngoài', - externalKnowledgeDescription: 'Mô tả kiến thức', - externalAPIPanelDocumentation: 'Tìm hiểu cách tạo API Kiến thức Bên ngoài', - allExternalTip: 'Khi chỉ sử dụng kiến thức bên ngoài, người dùng có thể chọn có bật mô hình Xếp hạng lại hay không. Nếu không được bật, các đoạn được truy xuất sẽ được sắp xếp dựa trên điểm số. Khi các chiến lược truy xuất của các cơ sở kiến thức khác nhau không nhất quán, nó sẽ không chính xác.', - editExternalAPIFormTitle: 'Chỉnh sửa API Kiến thức Bên ngoài', - externalKnowledgeId: 'ID kiến thức bên ngoài', - mixtureInternalAndExternalTip: 'Mô hình Rerank là cần thiết cho sự kết hợp giữa kiến thức bên trong và bên ngoài.', - externalAPI: 'API bên ngoài', - externalKnowledgeDescriptionPlaceholder: 'Mô tả nội dung trong Cơ sở Kiến thức này (tùy chọn)', - externalKnowledgeName: 'Tên kiến thức bên ngoài', - externalKnowledgeIdPlaceholder: 'Vui lòng nhập ID kiến thức', - createNewExternalAPI: 'Tạo API Kiến thức Bên ngoài mới', - externalAPIPanelDescription: 'API kiến thức bên ngoài được sử dụng để kết nối với cơ sở kiến thức bên ngoài Dify và truy xuất kiến thức từ cơ sở kiến thức đó.', - chunkingMode: { - general: 'Tổng quát', - parentChild: 'Cha mẹ-con cái', - graph: 'Đồ thị', - qa: 'Hỏi & Đáp', - }, - parentMode: { - paragraph: 'Đoạn', - fullDoc: 'Tài liệu đầy đủ', - }, - batchAction: { - disable: 'Vô hiệu hóa', - enable: 'Kích hoạt', - delete: 'Xóa', - selected: 'Chọn', - archive: 'Lưu trữ', - cancel: 'Hủy', - }, - localDocs: 'Tài liệu địa phương', - enable: 'Kích hoạt', - preprocessDocument: '{{số}} Tiền xử lý tài liệu', - documentsDisabled: '{{num}} tài liệu bị vô hiệu hóa - không hoạt động trong hơn 30 ngày', - allKnowledge: 'Tất cả kiến thức', - allKnowledgeDescription: 'Chọn để hiển thị tất cả kiến thức trong không gian làm việc này. Chỉ Chủ sở hữu không gian làm việc mới có thể quản lý tất cả kiến thức.', - metadata: { - createMetadata: { - name: 'Tên', - namePlaceholder: 'Thêm tên siêu dữ liệu', - type: 'Loại', - title: 'Siêu dữ liệu mới', - back: 'Quay lại', - }, - checkName: { - invalid: 'Tên siêu dữ liệu chỉ có thể chứa chữ cái thường, số và dấu gạch dưới, và phải bắt đầu bằng một chữ cái thường.', - empty: 'Tên siêu dữ liệu không được để trống', - tooLong: 'Tên siêu dữ liệu không được vượt quá {{max}} ký tự', - }, - batchEditMetadata: { - applyToAllSelectDocumentTip: 'Tự động tạo tất cả các siêu dữ liệu đã chỉnh sửa và mới cho tất cả các tài liệu được chọn, nếu không, việc chỉnh sửa siêu dữ liệu sẽ chỉ áp dụng cho các tài liệu có nó.', - multipleValue: 'Nhiều giá trị', - editDocumentsNum: 'Chỉnh sửa {{num}} tài liệu', - applyToAllSelectDocument: 'Áp dụng cho tất cả các tài liệu đã chọn', - editMetadata: 'Chỉnh sửa siêu dữ liệu', - }, - selectMetadata: { - manageAction: 'Quản lý', - search: 'Tìm kiếm siêu dữ liệu', - newAction: 'Siêu dữ liệu mới', - }, - datasetMetadata: { - disabled: 'Tắt', - rename: 'Đổi tên', - namePlaceholder: 'Tên siêu dữ liệu', - builtIn: 'Tích hợp sẵn', - deleteTitle: 'Xác nhận để xóa', - name: 'Tên', - values: '{{num}} Giá trị', - description: 'Bạn có thể quản lý tất cả metadata trong kiến thức này ở đây. Những thay đổi sẽ được đồng bộ hóa đến mọi tài liệu.', - deleteContent: 'Bạn có chắc chắn muốn xóa siêu dữ liệu "{{name}}" không?', - builtInDescription: 'Siêu dữ liệu được tích hợp sẵn sẽ tự động được trích xuất và tạo ra. Nó phải được bật trước khi sử dụng và không thể chỉnh sửa.', - addMetaData: 'Thêm siêu dữ liệu', - }, - documentMetadata: { - documentInformation: 'Thông tin tài liệu', - technicalParameters: 'Các Thông Số Kỹ Thuật', - metadataToolTip: 'Dữ liệu siêu thông tin đóng vai trò là một bộ lọc quan trọng giúp nâng cao độ chính xác và tính liên quan của việc truy xuất thông tin. Bạn có thể chỉnh sửa và thêm dữ liệu siêu thông tin cho tài liệu này ở đây.', - startLabeling: 'Bắt đầu gán nhãn', - }, - addMetadata: 'Thêm siêu dữ liệu', - chooseTime: 'Chọn một thời gian...', - metadata: 'Siêu dữ liệu', - }, - embeddingModelNotAvailable: 'Mô hình nhúng không khả dụng.', - updated: 'Cập nhật', - createFromPipeline: 'Tạo từ quy trình kiến thức', - externalKnowledgeBase: 'Cơ sở kiến thức bên ngoài', - serviceApi: { - card: { - title: 'API dịch vụ backend', - endpoint: 'Điểm cuối API dịch vụ', - apiKey: 'Khóa API', - apiReference: 'Tham chiếu API', - }, - enabled: 'Đang phục vụ', - disabled: 'Vô hiệu hóa', - title: 'Giao diện lập trình dịch vụ', - }, - docAllEnabled_one: 'Tài liệu {{count}} đã được kích hoạt', - docAllEnabled_other: 'Tất cả các tài liệu {{count}} đã được kích hoạt', - partialEnabled_one: 'Tổng cộng {{count}} tài liệu, {{num}} có sẵn', - partialEnabled_other: 'Tổng cộng {{count}} tài liệu, {{num}} có sẵn', - cornerLabel: { - unavailable: 'Không khả dụng', - pipeline: 'Đường ống', - }, - multimodal: 'Đa phương thức', - imageUploader: { - button: 'Kéo và thả tệp hoặc thư mục, hoặc', - browse: 'Duyệt', - tip: '{{supportTypes}} (Tối đa {{batchCount}}, {{size}}MB mỗi cái)', - }, -} - -export default translation diff --git a/web/i18n/vi-VN/education.json b/web/i18n/vi-VN/education.json new file mode 100644 index 0000000000..528222f040 --- /dev/null +++ b/web/i18n/vi-VN/education.json @@ -0,0 +1,74 @@ +{ + "toVerifiedTip": { + "coupon": "mã giảm giá độc quyền 100%", + "front": "Bạn hiện đủ điều kiện để có trạng thái Xác minh Giáo dục. Vui lòng nhập thông tin giáo dục của bạn bên dưới để hoàn tất quá trình và nhận một", + "end": "cho Kế hoạch Chuyên nghiệp Dify." + }, + "form": { + "schoolName": { + "placeholder": "Nhập tên chính thức, không viết tắt của trường bạn", + "title": "Tên Trường Của Bạn" + }, + "schoolRole": { + "option": { + "teacher": "Giáo viên", + "student": "Học sinh", + "administrator": "Quản trị viên trường học" + }, + "title": "Vai trò của bạn ở trường" + }, + "terms": { + "desc": { + "termsOfService": "Điều khoản dịch vụ", + "privacyPolicy": "Chính sách bảo mật", + "and": "và", + "end": "Bằng cách gửi:", + "front": "Thông tin của bạn và việc sử dụng trạng thái Được xác minh Giáo dục của chúng tôi thuộc về điều kiện của chúng tôi" + }, + "option": { + "age": "Tôi xác nhận rằng tôi ít nhất 18 tuổi", + "inSchool": "Tôi xác nhận rằng tôi đã đăng ký hoặc làm việc tại cơ sở đã cung cấp. Dify có thể yêu cầu chứng minh về việc đăng ký/làm việc. Nếu tôi cung cấp thông tin không chính xác về đủ điều kiện của mình, tôi đồng ý trả bất kỳ khoản phí nào ban đầu được miễn dựa trên tình trạng giáo dục của tôi." + }, + "title": "Điều khoản & Thỏa thuận" + } + }, + "toVerified": "Xác thực giáo dục", + "successTitle": "Bạn đã được xác minh giáo dục Dify", + "submit": "Gửi", + "rejectTitle": "Yêu cầu xác minh giáo dục Dify của bạn đã bị từ chối", + "successContent": "Chúng tôi đã phát hành một phiếu giảm giá 100% cho gói Dify Professional vào tài khoản của bạn. Phiếu giảm giá có hiệu lực trong một năm, vui lòng sử dụng nó trong thời gian hiệu lực.", + "currentSigned": "HIỆN ĐANG ĐĂNG NHẬP VÀO", + "learn": "Học cách xác minh trình độ giáo dục", + "emailLabel": "Email hiện tại của bạn", + "rejectContent": "Rất tiếc, bạn không đủ điều kiện để nhận trạng thái Xác minh Giáo dục và do đó không thể nhận được mã giảm giá độc quyền 100% cho Kế hoạch Chuyên nghiệp Dify nếu bạn sử dụng địa chỉ email này.", + "submitError": "Gửi mẫu không thành công. Vui lòng thử lại sau.", + "notice": { + "expired": { + "summary": { + "line1": "Bạn vẫn có thể truy cập và sử dụng Dify.", + "line2": "Tuy nhiên, bạn không còn đủ điều kiện để nhận phiếu giảm giá giáo dục mới." + }, + "title": "Tình trạng giáo dục của bạn đã hết hạn" + }, + "isAboutToExpire": { + "summary": "Đừng lo — điều này sẽ không ảnh hưởng đến gói đăng ký hiện tại của bạn, nhưng bạn sẽ không nhận được giảm giá giáo dục khi nó tự động gia hạn trừ khi bạn xác minh lại trạng thái của mình.", + "title": "Tình trạng giáo dục của bạn sẽ hết hạn vào {{date}}" + }, + "stillInEducation": { + "title": "Vẫn đang học tập?", + "isAboutToExpire": "Xác minh lại ngay bây giờ để nhận một phiếu giảm giá mới cho năm học sắp tới. Nó sẽ được lưu vào tài khoản của bạn và sẵn sàng sử dụng khi bạn gia hạn tiếp theo.", + "expired": "Xác minh lại ngay bây giờ để nhận một phiếu giảm giá mới cho năm học sắp tới. Chúng tôi sẽ thêm nó vào tài khoản của bạn và bạn có thể sử dụng nó cho lần nâng cấp tiếp theo." + }, + "alreadyGraduated": { + "title": "Đã tốt nghiệp rồi sao?", + "expired": "Hãy thoải mái nâng cấp bất kỳ lúc nào để có quyền truy cập đầy đủ vào các tính năng trả phí.", + "isAboutToExpire": "Gói đăng ký hiện tại của bạn vẫn sẽ hoạt động. Khi nó kết thúc, bạn sẽ được chuyển sang gói Sandbox, hoặc bạn có thể nâng cấp bất cứ lúc nào để khôi phục quyền truy cập đầy đủ vào các tính năng trả phí." + }, + "action": { + "upgrade": "Nâng cấp", + "reVerify": "Xác minh lại", + "dismiss": "Bỏ qua" + }, + "dateFormat": "MM/DD/YYYY" + } +} diff --git a/web/i18n/vi-VN/education.ts b/web/i18n/vi-VN/education.ts deleted file mode 100644 index 5dfe1c0a14..0000000000 --- a/web/i18n/vi-VN/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerifiedTip: { - coupon: 'mã giảm giá độc quyền 100%', - front: 'Bạn hiện đủ điều kiện để có trạng thái Xác minh Giáo dục. Vui lòng nhập thông tin giáo dục của bạn bên dưới để hoàn tất quá trình và nhận một', - end: 'cho Kế hoạch Chuyên nghiệp Dify.', - }, - form: { - schoolName: { - placeholder: 'Nhập tên chính thức, không viết tắt của trường bạn', - title: 'Tên Trường Của Bạn', - }, - schoolRole: { - option: { - teacher: 'Giáo viên', - student: 'Học sinh', - administrator: 'Quản trị viên trường học', - }, - title: 'Vai trò của bạn ở trường', - }, - terms: { - desc: { - termsOfService: 'Điều khoản dịch vụ', - privacyPolicy: 'Chính sách bảo mật', - and: 'và', - end: 'Bằng cách gửi:', - front: 'Thông tin của bạn và việc sử dụng trạng thái Được xác minh Giáo dục của chúng tôi thuộc về điều kiện của chúng tôi', - }, - option: { - age: 'Tôi xác nhận rằng tôi ít nhất 18 tuổi', - inSchool: 'Tôi xác nhận rằng tôi đã đăng ký hoặc làm việc tại cơ sở đã cung cấp. Dify có thể yêu cầu chứng minh về việc đăng ký/làm việc. Nếu tôi cung cấp thông tin không chính xác về đủ điều kiện của mình, tôi đồng ý trả bất kỳ khoản phí nào ban đầu được miễn dựa trên tình trạng giáo dục của tôi.', - }, - title: 'Điều khoản & Thỏa thuận', - }, - }, - toVerified: 'Xác thực giáo dục', - successTitle: 'Bạn đã được xác minh giáo dục Dify', - submit: 'Gửi', - rejectTitle: 'Yêu cầu xác minh giáo dục Dify của bạn đã bị từ chối', - successContent: 'Chúng tôi đã phát hành một phiếu giảm giá 100% cho gói Dify Professional vào tài khoản của bạn. Phiếu giảm giá có hiệu lực trong một năm, vui lòng sử dụng nó trong thời gian hiệu lực.', - currentSigned: 'HIỆN ĐANG ĐĂNG NHẬP VÀO', - learn: 'Học cách xác minh trình độ giáo dục', - emailLabel: 'Email hiện tại của bạn', - rejectContent: 'Rất tiếc, bạn không đủ điều kiện để nhận trạng thái Xác minh Giáo dục và do đó không thể nhận được mã giảm giá độc quyền 100% cho Kế hoạch Chuyên nghiệp Dify nếu bạn sử dụng địa chỉ email này.', - submitError: 'Gửi mẫu không thành công. Vui lòng thử lại sau.', - notice: { - expired: { - summary: { - line1: 'Bạn vẫn có thể truy cập và sử dụng Dify.', - line2: 'Tuy nhiên, bạn không còn đủ điều kiện để nhận phiếu giảm giá giáo dục mới.', - }, - title: 'Tình trạng giáo dục của bạn đã hết hạn', - }, - isAboutToExpire: { - summary: 'Đừng lo — điều này sẽ không ảnh hưởng đến gói đăng ký hiện tại của bạn, nhưng bạn sẽ không nhận được giảm giá giáo dục khi nó tự động gia hạn trừ khi bạn xác minh lại trạng thái của mình.', - title: 'Tình trạng giáo dục của bạn sẽ hết hạn vào {{date}}', - }, - stillInEducation: { - title: 'Vẫn đang học tập?', - isAboutToExpire: 'Xác minh lại ngay bây giờ để nhận một phiếu giảm giá mới cho năm học sắp tới. Nó sẽ được lưu vào tài khoản của bạn và sẵn sàng sử dụng khi bạn gia hạn tiếp theo.', - expired: 'Xác minh lại ngay bây giờ để nhận một phiếu giảm giá mới cho năm học sắp tới. Chúng tôi sẽ thêm nó vào tài khoản của bạn và bạn có thể sử dụng nó cho lần nâng cấp tiếp theo.', - }, - alreadyGraduated: { - title: 'Đã tốt nghiệp rồi sao?', - expired: 'Hãy thoải mái nâng cấp bất kỳ lúc nào để có quyền truy cập đầy đủ vào các tính năng trả phí.', - isAboutToExpire: 'Gói đăng ký hiện tại của bạn vẫn sẽ hoạt động. Khi nó kết thúc, bạn sẽ được chuyển sang gói Sandbox, hoặc bạn có thể nâng cấp bất cứ lúc nào để khôi phục quyền truy cập đầy đủ vào các tính năng trả phí.', - }, - action: { - upgrade: 'Nâng cấp', - reVerify: 'Xác minh lại', - dismiss: 'Bỏ qua', - }, - dateFormat: 'MM/DD/YYYY', - }, -} - -export default translation diff --git a/web/i18n/vi-VN/explore.json b/web/i18n/vi-VN/explore.json new file mode 100644 index 0000000000..37df39d53e --- /dev/null +++ b/web/i18n/vi-VN/explore.json @@ -0,0 +1,42 @@ +{ + "title": "Khám phá", + "sidebar": { + "discovery": "Khám phá", + "chat": "Trò chuyện", + "workspace": "Không gian làm việc", + "action": { + "pin": "Ghim", + "unpin": "Bỏ ghim", + "rename": "Đổi tên", + "delete": "Xóa" + }, + "delete": { + "title": "Xóa ứng dụng", + "content": "Bạn có chắc chắn muốn xóa ứng dụng này không?" + } + }, + "apps": { + "title": "Khám phá ứng dụng bởi Dify", + "description": "Sử dụng ngay các ứng dụng mẫu này hoặc tùy chỉnh ứng dụng của bạn dựa trên các mẫu có sẵn.", + "allCategories": "Tất cả danh mục" + }, + "appCard": { + "addToWorkspace": "Thêm vào không gian làm việc", + "customize": "Tùy chỉnh" + }, + "appCustomize": { + "title": "Tạo ứng dụng từ {{name}}", + "subTitle": "Biểu tượng và tên ứng dụng", + "nameRequired": "Vui lòng nhập tên ứng dụng" + }, + "category": { + "Assistant": "Trợ lý", + "Writing": "Viết lách", + "Translate": "Dịch thuật", + "Programming": "Lập trình", + "HR": "Nhân sự", + "Agent": "Người đại lý", + "Workflow": "Quy trình làm việc", + "Entertainment": "Giải trí" + } +} diff --git a/web/i18n/vi-VN/explore.ts b/web/i18n/vi-VN/explore.ts deleted file mode 100644 index 860bfd76f0..0000000000 --- a/web/i18n/vi-VN/explore.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - title: 'Khám phá', - sidebar: { - discovery: 'Khám phá', - chat: 'Trò chuyện', - workspace: 'Không gian làm việc', - action: { - pin: 'Ghim', - unpin: 'Bỏ ghim', - rename: 'Đổi tên', - delete: 'Xóa', - }, - delete: { - title: 'Xóa ứng dụng', - content: 'Bạn có chắc chắn muốn xóa ứng dụng này không?', - }, - }, - apps: { - title: 'Khám phá ứng dụng bởi Dify', - description: 'Sử dụng ngay các ứng dụng mẫu này hoặc tùy chỉnh ứng dụng của bạn dựa trên các mẫu có sẵn.', - allCategories: 'Tất cả danh mục', - }, - appCard: { - addToWorkspace: 'Thêm vào không gian làm việc', - customize: 'Tùy chỉnh', - }, - appCustomize: { - title: 'Tạo ứng dụng từ {{name}}', - subTitle: 'Biểu tượng và tên ứng dụng', - nameRequired: 'Vui lòng nhập tên ứng dụng', - }, - category: { - Assistant: 'Trợ lý', - Writing: 'Viết lách', - Translate: 'Dịch thuật', - Programming: 'Lập trình', - HR: 'Nhân sự', - Agent: 'Người đại lý', - Workflow: 'Quy trình làm việc', - Entertainment: 'Giải trí', - }, -} - -export default translation diff --git a/web/i18n/vi-VN/layout.json b/web/i18n/vi-VN/layout.json new file mode 100644 index 0000000000..d70df21b11 --- /dev/null +++ b/web/i18n/vi-VN/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "expandSidebar": "Mở rộng thanh bên", + "collapseSidebar": "Thu gọn thanh bên" + } +} diff --git a/web/i18n/vi-VN/layout.ts b/web/i18n/vi-VN/layout.ts deleted file mode 100644 index 67aa33279c..0000000000 --- a/web/i18n/vi-VN/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - expandSidebar: 'Mở rộng thanh bên', - collapseSidebar: 'Thu gọn thanh bên', - }, -} - -export default translation diff --git a/web/i18n/vi-VN/login.json b/web/i18n/vi-VN/login.json new file mode 100644 index 0000000000..f8f114bd71 --- /dev/null +++ b/web/i18n/vi-VN/login.json @@ -0,0 +1,124 @@ +{ + "pageTitle": "Xin chào, hãy bắt đầu! 👋", + "welcome": "Chào mừng bạn đến với Dify, vui lòng đăng nhập để tiếp tục.", + "email": "Địa chỉ email", + "emailPlaceholder": "Nhập email của bạn", + "password": "Mật khẩu", + "passwordPlaceholder": "Nhập mật khẩu của bạn", + "name": "Tên người dùng", + "namePlaceholder": "Nhập tên người dùng của bạn", + "forget": "Quên mật khẩu?", + "signBtn": "Đăng nhập", + "installBtn": "Cài đặt", + "setAdminAccount": "Thiết lập tài khoản quản trị", + "setAdminAccountDesc": "Tài khoản quản trị có quyền tối đa, có thể tạo ứng dụng và quản lý các nhà cung cấp LLM, v.v.", + "createAndSignIn": "Tạo và đăng nhập", + "oneMoreStep": "Còn một bước nữa", + "createSample": "Dựa trên thông tin này, chúng tôi sẽ tạo một ứng dụng mẫu cho bạn", + "invitationCode": "Mã mời", + "invitationCodePlaceholder": "Nhập mã mời của bạn", + "interfaceLanguage": "Ngôn ngữ giao diện", + "timezone": "Múi giờ", + "go": "Đi đến Dify", + "sendUsMail": "Gửi email giới thiệu cho chúng tôi, chúng tôi sẽ xử lý yêu cầu mời của bạn.", + "acceptPP": "Tôi đã đọc và đồng ý với chính sách bảo mật", + "reset": "Vui lòng chạy lệnh sau để đặt lại mật khẩu của bạn", + "withGitHub": "Tiếp tục với GitHub", + "withGoogle": "Tiếp tục với Google", + "rightTitle": "Khai phá tiềm năng tối đa của LLM", + "rightDesc": "Dễ dàng xây dựng ứng dụng AI hấp dẫn, có thể vận hành và cải thiện được.", + "tos": "Điều khoản dịch vụ", + "pp": "Chính sách bảo mật", + "tosDesc": "Bằng cách đăng ký, bạn đồng ý với", + "goToInit": "Nếu bạn chưa khởi tạo tài khoản, vui lòng chuyển đến trang khởi tạo", + "dontHave": "Chưa có tài khoản?", + "invalidInvitationCode": "Mã mời không hợp lệ", + "accountAlreadyInited": "Tài khoản đã được khởi tạo", + "forgotPassword": "Quên mật khẩu?", + "resetLinkSent": "Đã gửi liên kết đặt lại mật khẩu", + "sendResetLink": "Gửi liên kết đặt lại mật khẩu", + "backToSignIn": "Quay lại đăng nhập", + "forgotPasswordDesc": "Vui lòng nhập địa chỉ email của bạn để đặt lại mật khẩu. Chúng tôi sẽ gửi cho bạn một email hướng dẫn cách đặt lại mật khẩu.", + "checkEmailForResetLink": "Vui lòng kiểm tra email để nhận liên kết đặt lại mật khẩu. Nếu không thấy trong vài phút, hãy kiểm tra thư mục spam.", + "passwordChanged": "Đăng nhập ngay", + "changePassword": "Đổi mật khẩu", + "changePasswordTip": "Vui lòng nhập mật khẩu mới cho tài khoản của bạn", + "invalidToken": "Mã thông báo không hợp lệ hoặc đã hết hạn", + "confirmPassword": "Xác nhận mật khẩu", + "confirmPasswordPlaceholder": "Nhập lại mật khẩu mới của bạn", + "passwordChangedTip": "Mật khẩu của bạn đã được thay đổi thành công", + "error": { + "emailEmpty": "Vui lòng nhập địa chỉ email", + "emailInValid": "Vui lòng nhập một địa chỉ email hợp lệ", + "nameEmpty": "Vui lòng nhập tên", + "passwordEmpty": "Vui lòng nhập mật khẩu", + "passwordInvalid": "Mật khẩu phải chứa cả chữ và số, và có độ dài ít nhất 8 ký tự", + "passwordLengthInValid": "Mật khẩu phải có ít nhất 8 ký tự", + "registrationNotAllowed": "Không tìm thấy tài khoản. Vui lòng liên hệ với quản trị viên hệ thống để đăng ký.", + "invalidEmailOrPassword": "Email hoặc mật khẩu không hợp lệ." + }, + "license": { + "tip": "Trước khi bắt đầu sử dụng Phiên bản Cộng đồng của Dify, vui lòng đọc", + "link": "Giấy phép mã nguồn mở trên GitHub" + }, + "join": "Tham gia", + "joinTipStart": "Mời bạn tham gia", + "joinTipEnd": "đội ngũ tại Dify", + "invalid": "Liên kết đã hết hạn", + "explore": "Khám phá Dify", + "activatedTipStart": "Bạn đã tham gia", + "activatedTipEnd": "đội ngũ", + "activated": "Đăng nhập ngay", + "adminInitPassword": "Mật khẩu khởi tạo quản trị viên", + "validate": "Xác thực", + "checkCode": { + "checkYourEmail": "Kiểm tra email của bạn", + "verify": "Xác minh", + "resend": "Gửi lại", + "didNotReceiveCode": "Bạn không nhận được mã?", + "validTime": "Lưu ý rằng mã có hiệu lực trong 5 phút", + "invalidCode": "Mã không hợp lệ", + "verificationCode": "Mã xác minh", + "useAnotherMethod": "Sử dụng phương pháp khác", + "emptyCode": "Mã là bắt buộc", + "verificationCodePlaceholder": "Nhập mã gồm 6 chữ số", + "tipsPrefix": "Chúng tôi gửi mã xác minh đến" + }, + "back": "Lưng", + "withSSO": "Tiếp tục với SSO", + "continueWithCode": "Tiếp tục với mã", + "changePasswordBtn": "Đặt mật khẩu", + "useVerificationCode": "Sử dụng mã xác minh", + "noLoginMethodTip": "Vui lòng liên hệ với quản trị viên hệ thống để thêm phương thức xác thực.", + "enterYourName": "Vui lòng nhập tên người dùng của bạn", + "setYourAccount": "Đặt tài khoản của bạn", + "backToLogin": "Quay lại đăng nhập", + "noLoginMethod": "Phương thức xác thực không được cấu hình", + "or": "HOẶC", + "resetPasswordDesc": "Nhập email bạn đã sử dụng để đăng ký trên Dify và chúng tôi sẽ gửi cho bạn email đặt lại mật khẩu.", + "usePassword": "Sử dụng mật khẩu", + "resetPassword": "Đặt lại mật khẩu", + "sendVerificationCode": "Gửi mã xác minh", + "licenseInactive": "Giấy phép không hoạt động", + "licenseLost": "Mất giấy phép", + "licenseInactiveTip": "Giấy phép Dify Enterprise cho không gian làm việc của bạn không hoạt động. Vui lòng liên hệ với quản trị viên của bạn để tiếp tục sử dụng Dify.", + "licenseExpired": "Giấy phép đã hết hạn", + "licenseExpiredTip": "Giấy phép Dify Enterprise cho không gian làm việc của bạn đã hết hạn. Vui lòng liên hệ với quản trị viên của bạn để tiếp tục sử dụng Dify.", + "licenseLostTip": "Không thể kết nối máy chủ cấp phép Dify. Vui lòng liên hệ với quản trị viên của bạn để tiếp tục sử dụng Dify.", + "webapp": { + "noLoginMethod": "Phương thức xác thực chưa được cấu hình cho ứng dụng web", + "noLoginMethodTip": "Vui lòng liên hệ với quản trị viên hệ thống để thêm phương thức xác thực.", + "disabled": "Xác thực webapp đã bị vô hiệu hóa. Vui lòng liên hệ với quản trị hệ thống để kích hoạt nó. Bạn có thể thử sử dụng ứng dụng trực tiếp.", + "login": "Đăng nhập" + }, + "signup": { + "signIn": "Đăng nhập", + "haveAccount": "Bạn đã có tài khoản chưa?", + "noAccount": "Bạn chưa có tài khoản?", + "createAccount": "Tạo tài khoản của bạn", + "signUp": "Đăng ký", + "verifyMail": "Tiếp tục với mã xác minh", + "welcome": "👋 Chào mừng! Vui lòng điền vào các chi tiết để bắt đầu." + }, + "pageTitleForE": "Này, hãy bắt đầu nào!" +} diff --git a/web/i18n/vi-VN/login.ts b/web/i18n/vi-VN/login.ts deleted file mode 100644 index dec7eddee2..0000000000 --- a/web/i18n/vi-VN/login.ts +++ /dev/null @@ -1,126 +0,0 @@ -const translation = { - pageTitle: 'Xin chào, hãy bắt đầu! 👋', - welcome: 'Chào mừng bạn đến với Dify, vui lòng đăng nhập để tiếp tục.', - email: 'Địa chỉ email', - emailPlaceholder: 'Nhập email của bạn', - password: 'Mật khẩu', - passwordPlaceholder: 'Nhập mật khẩu của bạn', - name: 'Tên người dùng', - namePlaceholder: 'Nhập tên người dùng của bạn', - forget: 'Quên mật khẩu?', - signBtn: 'Đăng nhập', - installBtn: 'Cài đặt', - setAdminAccount: 'Thiết lập tài khoản quản trị', - setAdminAccountDesc: 'Tài khoản quản trị có quyền tối đa, có thể tạo ứng dụng và quản lý các nhà cung cấp LLM, v.v.', - createAndSignIn: 'Tạo và đăng nhập', - oneMoreStep: 'Còn một bước nữa', - createSample: 'Dựa trên thông tin này, chúng tôi sẽ tạo một ứng dụng mẫu cho bạn', - invitationCode: 'Mã mời', - invitationCodePlaceholder: 'Nhập mã mời của bạn', - interfaceLanguage: 'Ngôn ngữ giao diện', - timezone: 'Múi giờ', - go: 'Đi đến Dify', - sendUsMail: 'Gửi email giới thiệu cho chúng tôi, chúng tôi sẽ xử lý yêu cầu mời của bạn.', - acceptPP: 'Tôi đã đọc và đồng ý với chính sách bảo mật', - reset: 'Vui lòng chạy lệnh sau để đặt lại mật khẩu của bạn', - withGitHub: 'Tiếp tục với GitHub', - withGoogle: 'Tiếp tục với Google', - rightTitle: 'Khai phá tiềm năng tối đa của LLM', - rightDesc: 'Dễ dàng xây dựng ứng dụng AI hấp dẫn, có thể vận hành và cải thiện được.', - tos: 'Điều khoản dịch vụ', - pp: 'Chính sách bảo mật', - tosDesc: 'Bằng cách đăng ký, bạn đồng ý với', - goToInit: 'Nếu bạn chưa khởi tạo tài khoản, vui lòng chuyển đến trang khởi tạo', - dontHave: 'Chưa có tài khoản?', - invalidInvitationCode: 'Mã mời không hợp lệ', - accountAlreadyInited: 'Tài khoản đã được khởi tạo', - forgotPassword: 'Quên mật khẩu?', - resetLinkSent: 'Đã gửi liên kết đặt lại mật khẩu', - sendResetLink: 'Gửi liên kết đặt lại mật khẩu', - backToSignIn: 'Quay lại đăng nhập', - forgotPasswordDesc: 'Vui lòng nhập địa chỉ email của bạn để đặt lại mật khẩu. Chúng tôi sẽ gửi cho bạn một email hướng dẫn cách đặt lại mật khẩu.', - checkEmailForResetLink: 'Vui lòng kiểm tra email để nhận liên kết đặt lại mật khẩu. Nếu không thấy trong vài phút, hãy kiểm tra thư mục spam.', - passwordChanged: 'Đăng nhập ngay', - changePassword: 'Đổi mật khẩu', - changePasswordTip: 'Vui lòng nhập mật khẩu mới cho tài khoản của bạn', - invalidToken: 'Mã thông báo không hợp lệ hoặc đã hết hạn', - confirmPassword: 'Xác nhận mật khẩu', - confirmPasswordPlaceholder: 'Nhập lại mật khẩu mới của bạn', - passwordChangedTip: 'Mật khẩu của bạn đã được thay đổi thành công', - error: { - emailEmpty: 'Vui lòng nhập địa chỉ email', - emailInValid: 'Vui lòng nhập một địa chỉ email hợp lệ', - nameEmpty: 'Vui lòng nhập tên', - passwordEmpty: 'Vui lòng nhập mật khẩu', - passwordInvalid: 'Mật khẩu phải chứa cả chữ và số, và có độ dài ít nhất 8 ký tự', - passwordLengthInValid: 'Mật khẩu phải có ít nhất 8 ký tự', - registrationNotAllowed: 'Không tìm thấy tài khoản. Vui lòng liên hệ với quản trị viên hệ thống để đăng ký.', - invalidEmailOrPassword: 'Email hoặc mật khẩu không hợp lệ.', - }, - license: { - tip: 'Trước khi bắt đầu sử dụng Phiên bản Cộng đồng của Dify, vui lòng đọc', - link: 'Giấy phép mã nguồn mở trên GitHub', - }, - join: 'Tham gia', - joinTipStart: 'Mời bạn tham gia', - joinTipEnd: 'đội ngũ tại Dify', - invalid: 'Liên kết đã hết hạn', - explore: 'Khám phá Dify', - activatedTipStart: 'Bạn đã tham gia', - activatedTipEnd: 'đội ngũ', - activated: 'Đăng nhập ngay', - adminInitPassword: 'Mật khẩu khởi tạo quản trị viên', - validate: 'Xác thực', - checkCode: { - checkYourEmail: 'Kiểm tra email của bạn', - verify: 'Xác minh', - resend: 'Gửi lại', - didNotReceiveCode: 'Bạn không nhận được mã?', - validTime: 'Lưu ý rằng mã có hiệu lực trong 5 phút', - invalidCode: 'Mã không hợp lệ', - verificationCode: 'Mã xác minh', - useAnotherMethod: 'Sử dụng phương pháp khác', - emptyCode: 'Mã là bắt buộc', - verificationCodePlaceholder: 'Nhập mã gồm 6 chữ số', - tipsPrefix: 'Chúng tôi gửi mã xác minh đến', - }, - back: 'Lưng', - withSSO: 'Tiếp tục với SSO', - continueWithCode: 'Tiếp tục với mã', - changePasswordBtn: 'Đặt mật khẩu', - useVerificationCode: 'Sử dụng mã xác minh', - noLoginMethodTip: 'Vui lòng liên hệ với quản trị viên hệ thống để thêm phương thức xác thực.', - enterYourName: 'Vui lòng nhập tên người dùng của bạn', - setYourAccount: 'Đặt tài khoản của bạn', - backToLogin: 'Quay lại đăng nhập', - noLoginMethod: 'Phương thức xác thực không được cấu hình', - or: 'HOẶC', - resetPasswordDesc: 'Nhập email bạn đã sử dụng để đăng ký trên Dify và chúng tôi sẽ gửi cho bạn email đặt lại mật khẩu.', - usePassword: 'Sử dụng mật khẩu', - resetPassword: 'Đặt lại mật khẩu', - sendVerificationCode: 'Gửi mã xác minh', - licenseInactive: 'Giấy phép không hoạt động', - licenseLost: 'Mất giấy phép', - licenseInactiveTip: 'Giấy phép Dify Enterprise cho không gian làm việc của bạn không hoạt động. Vui lòng liên hệ với quản trị viên của bạn để tiếp tục sử dụng Dify.', - licenseExpired: 'Giấy phép đã hết hạn', - licenseExpiredTip: 'Giấy phép Dify Enterprise cho không gian làm việc của bạn đã hết hạn. Vui lòng liên hệ với quản trị viên của bạn để tiếp tục sử dụng Dify.', - licenseLostTip: 'Không thể kết nối máy chủ cấp phép Dify. Vui lòng liên hệ với quản trị viên của bạn để tiếp tục sử dụng Dify.', - webapp: { - noLoginMethod: 'Phương thức xác thực chưa được cấu hình cho ứng dụng web', - noLoginMethodTip: 'Vui lòng liên hệ với quản trị viên hệ thống để thêm phương thức xác thực.', - disabled: 'Xác thực webapp đã bị vô hiệu hóa. Vui lòng liên hệ với quản trị hệ thống để kích hoạt nó. Bạn có thể thử sử dụng ứng dụng trực tiếp.', - login: 'Đăng nhập', - }, - signup: { - signIn: 'Đăng nhập', - haveAccount: 'Bạn đã có tài khoản chưa?', - noAccount: 'Bạn chưa có tài khoản?', - createAccount: 'Tạo tài khoản của bạn', - signUp: 'Đăng ký', - verifyMail: 'Tiếp tục với mã xác minh', - welcome: '👋 Chào mừng! Vui lòng điền vào các chi tiết để bắt đầu.', - }, - pageTitleForE: 'Này, hãy bắt đầu nào!', -} - -export default translation diff --git a/web/i18n/vi-VN/oauth.json b/web/i18n/vi-VN/oauth.json new file mode 100644 index 0000000000..a1158c7f5f --- /dev/null +++ b/web/i18n/vi-VN/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "needLogin": "Vui lòng đăng nhập để xác thực", + "notLoggedIn": "Ứng dụng này muốn truy cập vào tài khoản Dify Cloud của bạn", + "loggedIn": "Ứng dụng này muốn truy cập thông tin sau từ tài khoản Dify Cloud của bạn.", + "common": "Chúng tôi tôn trọng quyền riêng tư của bạn và sẽ chỉ sử dụng thông tin này để cải thiện trải nghiệm của bạn với các công cụ phát triển của chúng tôi." + }, + "scopes": { + "timezone": "Múi giờ", + "languagePreference": "Sở thích ngôn ngữ", + "name": "Tên", + "email": "Email", + "avatar": "Avatar" + }, + "error": { + "authorizeFailed": "Ủy quyền không thành công", + "authAppInfoFetchFailed": "Không thể lấy thông tin ứng dụng để xác thực", + "invalidParams": "Tham số không hợp lệ" + }, + "login": "Đăng nhập", + "switchAccount": "Chuyển tài khoản", + "connect": "Kết nối với", + "continue": "Tiếp tục", + "unknownApp": "Ứng dụng không xác định" +} diff --git a/web/i18n/vi-VN/oauth.ts b/web/i18n/vi-VN/oauth.ts deleted file mode 100644 index dc4c1b39bc..0000000000 --- a/web/i18n/vi-VN/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - needLogin: 'Vui lòng đăng nhập để xác thực', - notLoggedIn: 'Ứng dụng này muốn truy cập vào tài khoản Dify Cloud của bạn', - loggedIn: 'Ứng dụng này muốn truy cập thông tin sau từ tài khoản Dify Cloud của bạn.', - common: 'Chúng tôi tôn trọng quyền riêng tư của bạn và sẽ chỉ sử dụng thông tin này để cải thiện trải nghiệm của bạn với các công cụ phát triển của chúng tôi.', - }, - scopes: { - timezone: 'Múi giờ', - languagePreference: 'Sở thích ngôn ngữ', - name: 'Tên', - email: 'Email', - avatar: 'Avatar', - }, - error: { - authorizeFailed: 'Ủy quyền không thành công', - authAppInfoFetchFailed: 'Không thể lấy thông tin ứng dụng để xác thực', - invalidParams: 'Tham số không hợp lệ', - }, - login: 'Đăng nhập', - switchAccount: 'Chuyển tài khoản', - connect: 'Kết nối với', - continue: 'Tiếp tục', - unknownApp: 'Ứng dụng không xác định', -} - -export default translation diff --git a/web/i18n/vi-VN/pipeline.json b/web/i18n/vi-VN/pipeline.json new file mode 100644 index 0000000000..d73beed7fb --- /dev/null +++ b/web/i18n/vi-VN/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "publishAsPipeline": { + "descriptionPlaceholder": "Vui lòng nhập mô tả của Quy trình kiến thức này. (Tùy chọn)", + "name": "Tên đường ống & biểu tượng", + "description": "Mô tả kiến thức", + "namePlaceholder": "Vui lòng nhập tên của Quy trình kiến thức này. (Bắt buộc)" + }, + "reRun": "Chạy lại", + "preparingDataSource": "Chuẩn bị nguồn dữ liệu", + "confirmPublish": "Xác nhận xuất bản", + "testRun": "Chạy thử", + "goToAddDocuments": "Đi tới thêm tài liệu", + "processing": "Xử lý", + "publishAs": "Xuất bản dưới dạng quy trình kiến thức", + "confirmPublishContent": "Sau khi xuất bản thành công quy trình tri thức, không thể sửa đổi cấu trúc chunk của cơ sở tri thức này. Bạn có chắc chắn muốn xuất bản nó không?" + }, + "inputField": { + "manage": "Điều khiển", + "create": "Tạo trường nhập liệu của người dùng" + }, + "publishToast": { + "title": "Đường ống này vẫn chưa được xuất bản", + "desc": "Khi quy trình không được phát hành, bạn có thể sửa đổi cấu trúc khối trong nút cơ sở kiến thức và điều phối quy trình và các thay đổi sẽ tự động được lưu dưới dạng bản nháp." + }, + "result": { + "resultPreview": { + "loading": "Xử lý... Hãy chờ", + "error": "Lỗi xảy ra trong quá trình thực thi", + "viewDetails": "Xem chi tiết", + "footerTip": "Trong chế độ chạy thử, xem trước tối đa {{count}} phần" + } + }, + "ragToolSuggestions": { + "title": "Gợi ý cho RAG", + "noRecommendationPlugins": "Không có plugin được đề xuất, tìm thêm trong Chợ" + } +} diff --git a/web/i18n/vi-VN/pipeline.ts b/web/i18n/vi-VN/pipeline.ts deleted file mode 100644 index e66fe0bf78..0000000000 --- a/web/i18n/vi-VN/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - publishAsPipeline: { - descriptionPlaceholder: 'Vui lòng nhập mô tả của Quy trình kiến thức này. (Tùy chọn)', - name: 'Tên đường ống & biểu tượng', - description: 'Mô tả kiến thức', - namePlaceholder: 'Vui lòng nhập tên của Quy trình kiến thức này. (Bắt buộc)', - }, - reRun: 'Chạy lại', - preparingDataSource: 'Chuẩn bị nguồn dữ liệu', - confirmPublish: 'Xác nhận xuất bản', - testRun: 'Chạy thử', - goToAddDocuments: 'Đi tới thêm tài liệu', - processing: 'Xử lý', - publishAs: 'Xuất bản dưới dạng quy trình kiến thức', - confirmPublishContent: 'Sau khi xuất bản thành công quy trình tri thức, không thể sửa đổi cấu trúc chunk của cơ sở tri thức này. Bạn có chắc chắn muốn xuất bản nó không?', - }, - inputField: { - manage: 'Điều khiển', - create: 'Tạo trường nhập liệu của người dùng', - }, - publishToast: { - title: 'Đường ống này vẫn chưa được xuất bản', - desc: 'Khi quy trình không được phát hành, bạn có thể sửa đổi cấu trúc khối trong nút cơ sở kiến thức và điều phối quy trình và các thay đổi sẽ tự động được lưu dưới dạng bản nháp.', - }, - result: { - resultPreview: { - loading: 'Xử lý... Hãy chờ', - error: 'Lỗi xảy ra trong quá trình thực thi', - viewDetails: 'Xem chi tiết', - footerTip: 'Trong chế độ chạy thử, xem trước tối đa {{count}} phần', - }, - }, - ragToolSuggestions: { - title: 'Gợi ý cho RAG', - noRecommendationPlugins: 'Không có plugin được đề xuất, tìm thêm trong Chợ', - }, -} - -export default translation diff --git a/web/i18n/vi-VN/plugin-tags.json b/web/i18n/vi-VN/plugin-tags.json new file mode 100644 index 0000000000..3cb643d5c1 --- /dev/null +++ b/web/i18n/vi-VN/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "tags": { + "education": "Giáo dục", + "medical": "Y", + "business": "Kinh doanh", + "weather": "Thời tiết", + "finance": "Tài chính", + "productivity": "Năng suất", + "design": "Thiết kế", + "videos": "Video", + "utilities": "Tiện ích", + "social": "Xã hội", + "search": "Tìm kiếm", + "news": "Tin tức", + "image": "Ảnh", + "agent": "Người đại lý", + "other": "Khác", + "travel": "Du lịch", + "entertainment": "Giải trí", + "rag": "GIẺ" + }, + "searchTags": "Thẻ tìm kiếm", + "allTags": "Tất cả thẻ" +} diff --git a/web/i18n/vi-VN/plugin-tags.ts b/web/i18n/vi-VN/plugin-tags.ts deleted file mode 100644 index 0a8f019102..0000000000 --- a/web/i18n/vi-VN/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - tags: { - education: 'Giáo dục', - medical: 'Y', - business: 'Kinh doanh', - weather: 'Thời tiết', - finance: 'Tài chính', - productivity: 'Năng suất', - design: 'Thiết kế', - videos: 'Video', - utilities: 'Tiện ích', - social: 'Xã hội', - search: 'Tìm kiếm', - news: 'Tin tức', - image: 'Ảnh', - agent: 'Người đại lý', - other: 'Khác', - travel: 'Du lịch', - entertainment: 'Giải trí', - rag: 'GIẺ', - }, - searchTags: 'Thẻ tìm kiếm', - allTags: 'Tất cả thẻ', -} - -export default translation diff --git a/web/i18n/vi-VN/plugin-trigger.json b/web/i18n/vi-VN/plugin-trigger.json new file mode 100644 index 0000000000..cabd77ec59 --- /dev/null +++ b/web/i18n/vi-VN/plugin-trigger.json @@ -0,0 +1,184 @@ +{ + "subscription": { + "title": "Đăng ký", + "listNum": "Đăng ký {{num}}", + "empty": { + "title": "Không có đăng ký", + "button": "Đăng ký mới" + }, + "createButton": { + "oauth": "Đăng ký mới với OAuth", + "apiKey": "Đăng ký mới với Khóa API", + "manual": "Dán URL để tạo đăng ký mới" + }, + "createSuccess": "Đăng ký đã được tạo thành công", + "createFailed": "Tạo đăng ký thất bại", + "maxCount": "Tối đa {{num}} lượt đăng ký", + "selectPlaceholder": "Chọn gói đăng ký", + "noSubscriptionSelected": "Chưa chọn gói đăng ký", + "subscriptionRemoved": "Đã hủy đăng ký", + "list": { + "title": "Đăng ký", + "addButton": "Thêm", + "tip": "Nhận sự kiện qua Đăng ký", + "item": { + "enabled": "Đã bật", + "disabled": "Vô hiệu hóa", + "credentialType": { + "api_key": "Khóa API", + "oauth2": "OAuth", + "unauthorized": "Hướng dẫn" + }, + "actions": { + "delete": "Xóa", + "deleteConfirm": { + "title": "Xóa {{name}}?", + "success": "Đăng ký {{name}} đã được xóa thành công", + "error": "Không thể xóa đăng ký {{name}}", + "content": "Một khi đã xóa, gói đăng ký này sẽ không thể phục hồi. Vui lòng xác nhận.", + "contentWithApps": "Gói đăng ký hiện tại đang được {{count}} ứng dụng tham chiếu. Xóa nó sẽ khiến các ứng dụng đã cấu hình ngừng nhận các sự kiện từ gói đăng ký.", + "confirm": "Xác nhận xóa", + "cancel": "Hủy", + "confirmInputWarning": "Vui lòng nhập tên chính xác để xác nhận.", + "confirmInputPlaceholder": "Nhập \"{{name}}\" để xác nhận.", + "confirmInputTip": "Vui lòng nhập “{{name}}” để xác nhận." + } + }, + "status": { + "active": "Hoạt động", + "inactive": "Không hoạt động" + }, + "usedByNum": "Được sử dụng bởi {{num}} quy trình làm việc", + "noUsed": "Không sử dụng quy trình công việc" + } + }, + "addType": { + "title": "Thêm đăng ký", + "description": "Chọn cách bạn muốn tạo đăng ký trình kích hoạt của mình", + "options": { + "apikey": { + "title": "Tạo bằng Khóa API", + "description": "Tự động tạo đăng ký bằng thông tin xác thực API" + }, + "oauth": { + "title": "Tạo bằng OAuth", + "description": "Ủy quyền với nền tảng bên thứ ba để tạo đăng ký", + "clientSettings": "Cài đặt khách hàng OAuth", + "clientTitle": "Khách hàng OAuth", + "default": "Mặc định", + "custom": "Tùy chỉnh" + }, + "manual": { + "title": "Cài đặt thủ công", + "description": "Dán URL để tạo đăng ký mới", + "tip": "Cấu hình URL trên nền tảng của bên thứ ba thủ công" + } + } + } + }, + "modal": { + "steps": { + "verify": "Xác minh", + "configuration": "Cấu hình" + }, + "common": { + "cancel": "Hủy", + "back": "Quay lại", + "next": "Tiếp theo", + "create": "Tạo", + "verify": "Xác minh", + "authorize": "Ủy quyền", + "creating": "Đang tạo...", + "verifying": "Đang xác minh...", + "authorizing": "Đang cấp quyền..." + }, + "oauthRedirectInfo": "Vì không tìm thấy bí mật khách hàng hệ thống cho nhà cung cấp công cụ này, cần phải thiết lập thủ công, đối với redirect_uri, vui lòng sử dụng", + "apiKey": { + "title": "Tạo bằng Khóa API", + "verify": { + "title": "Xác minh thông tin đăng nhập", + "description": "Vui lòng cung cấp thông tin xác thực API của bạn để xác minh quyền truy cập", + "error": "Xác minh thông tin không thành công. Vui lòng kiểm tra lại khóa API của bạn.", + "success": "Thông tin đăng nhập đã được xác minh thành công" + }, + "configuration": { + "title": "Cấu hình đăng ký", + "description": "Thiết lập các tham số đăng ký của bạn" + } + }, + "oauth": { + "title": "Tạo bằng OAuth", + "authorization": { + "title": "Ủy quyền OAuth", + "description": "Cho phép Dify truy cập vào tài khoản của bạn", + "redirectUrl": "Chuyển hướng URL", + "redirectUrlHelp": "Sử dụng URL này trong cấu hình ứng dụng OAuth của bạn", + "authorizeButton": "Ủy quyền với {{provider}}", + "waitingAuth": "Đang chờ cấp quyền...", + "authSuccess": "Ủy quyền thành công", + "authFailed": "Không thể lấy thông tin xác thực OAuth", + "waitingJump": "Được phép, đang chờ nhảy" + }, + "configuration": { + "title": "Cấu hình đăng ký", + "description": "Thiết lập các thông số đăng ký của bạn sau khi được cấp quyền", + "success": "Cấu hình OAuth thành công", + "failed": "Cấu hình OAuth thất bại" + }, + "remove": { + "success": "Xóa OAuth thành công", + "failed": "Xóa OAuth thất bại" + }, + "save": { + "success": "Cấu hình OAuth đã được lưu thành công" + } + }, + "manual": { + "title": "Cài đặt thủ công", + "description": "Cấu hình đăng ký webhook của bạn thủ công", + "logs": { + "title": "Nhật ký yêu cầu", + "request": "Yêu cầu", + "loading": "Đang chờ yêu cầu từ {{pluginName}}..." + } + }, + "form": { + "subscriptionName": { + "label": "Tên thuê bao", + "placeholder": "Nhập tên gói đăng ký", + "required": "Tên đăng ký là bắt buộc" + }, + "callbackUrl": { + "label": "URL gọi lại", + "description": "URL này sẽ nhận các sự kiện webhook", + "tooltip": "Cung cấp một endpoint có thể truy cập công khai để nhận các yêu cầu gọi lại từ nhà cung cấp kích hoạt.", + "placeholder": "Đang tạo...", + "privateAddressWarning": "URL này có vẻ là một địa chỉ nội bộ, điều này có thể khiến các yêu cầu webhook thất bại. Bạn có thể thay đổi TRIGGER_URL sang một địa chỉ công khai." + } + }, + "errors": { + "createFailed": "Tạo đăng ký thất bại", + "verifyFailed": "Xác minh thông tin đăng nhập thất bại", + "authFailed": "Ủy quyền thất bại", + "networkError": "Lỗi mạng, vui lòng thử lại" + } + }, + "events": { + "title": "Các sự kiện có sẵn", + "description": "Các sự kiện mà plugin kích hoạt này có thể đăng ký", + "empty": "Không có sự kiện nào", + "event": "Sự kiện", + "events": "Sự kiện", + "actionNum": "{{num}} {{event}} ĐÃ BAO GỒM", + "item": { + "parameters": "tham số {{count}}", + "noParameters": "Không có tham số" + }, + "output": "Đầu ra" + }, + "node": { + "status": { + "warning": "Ngắt kết nối" + } + } +} diff --git a/web/i18n/vi-VN/plugin-trigger.ts b/web/i18n/vi-VN/plugin-trigger.ts deleted file mode 100644 index e164486e30..0000000000 --- a/web/i18n/vi-VN/plugin-trigger.ts +++ /dev/null @@ -1,186 +0,0 @@ -const translation = { - subscription: { - title: 'Đăng ký', - listNum: 'Đăng ký {{num}}', - empty: { - title: 'Không có đăng ký', - button: 'Đăng ký mới', - }, - createButton: { - oauth: 'Đăng ký mới với OAuth', - apiKey: 'Đăng ký mới với Khóa API', - manual: 'Dán URL để tạo đăng ký mới', - }, - createSuccess: 'Đăng ký đã được tạo thành công', - createFailed: 'Tạo đăng ký thất bại', - maxCount: 'Tối đa {{num}} lượt đăng ký', - selectPlaceholder: 'Chọn gói đăng ký', - noSubscriptionSelected: 'Chưa chọn gói đăng ký', - subscriptionRemoved: 'Đã hủy đăng ký', - list: { - title: 'Đăng ký', - addButton: 'Thêm', - tip: 'Nhận sự kiện qua Đăng ký', - item: { - enabled: 'Đã bật', - disabled: 'Vô hiệu hóa', - credentialType: { - api_key: 'Khóa API', - oauth2: 'OAuth', - unauthorized: 'Hướng dẫn', - }, - actions: { - delete: 'Xóa', - deleteConfirm: { - title: 'Xóa {{name}}?', - success: 'Đăng ký {{name}} đã được xóa thành công', - error: 'Không thể xóa đăng ký {{name}}', - content: 'Một khi đã xóa, gói đăng ký này sẽ không thể phục hồi. Vui lòng xác nhận.', - contentWithApps: 'Gói đăng ký hiện tại đang được {{count}} ứng dụng tham chiếu. Xóa nó sẽ khiến các ứng dụng đã cấu hình ngừng nhận các sự kiện từ gói đăng ký.', - confirm: 'Xác nhận xóa', - cancel: 'Hủy', - confirmInputWarning: 'Vui lòng nhập tên chính xác để xác nhận.', - confirmInputPlaceholder: 'Nhập "{{name}}" để xác nhận.', - confirmInputTip: 'Vui lòng nhập “{{name}}” để xác nhận.', - }, - }, - status: { - active: 'Hoạt động', - inactive: 'Không hoạt động', - }, - usedByNum: 'Được sử dụng bởi {{num}} quy trình làm việc', - noUsed: 'Không sử dụng quy trình công việc', - }, - }, - addType: { - title: 'Thêm đăng ký', - description: 'Chọn cách bạn muốn tạo đăng ký trình kích hoạt của mình', - options: { - apikey: { - title: 'Tạo bằng Khóa API', - description: 'Tự động tạo đăng ký bằng thông tin xác thực API', - }, - oauth: { - title: 'Tạo bằng OAuth', - description: 'Ủy quyền với nền tảng bên thứ ba để tạo đăng ký', - clientSettings: 'Cài đặt khách hàng OAuth', - clientTitle: 'Khách hàng OAuth', - default: 'Mặc định', - custom: 'Tùy chỉnh', - }, - manual: { - title: 'Cài đặt thủ công', - description: 'Dán URL để tạo đăng ký mới', - tip: 'Cấu hình URL trên nền tảng của bên thứ ba thủ công', - }, - }, - }, - }, - modal: { - steps: { - verify: 'Xác minh', - configuration: 'Cấu hình', - }, - common: { - cancel: 'Hủy', - back: 'Quay lại', - next: 'Tiếp theo', - create: 'Tạo', - verify: 'Xác minh', - authorize: 'Ủy quyền', - creating: 'Đang tạo...', - verifying: 'Đang xác minh...', - authorizing: 'Đang cấp quyền...', - }, - oauthRedirectInfo: 'Vì không tìm thấy bí mật khách hàng hệ thống cho nhà cung cấp công cụ này, cần phải thiết lập thủ công, đối với redirect_uri, vui lòng sử dụng', - apiKey: { - title: 'Tạo bằng Khóa API', - verify: { - title: 'Xác minh thông tin đăng nhập', - description: 'Vui lòng cung cấp thông tin xác thực API của bạn để xác minh quyền truy cập', - error: 'Xác minh thông tin không thành công. Vui lòng kiểm tra lại khóa API của bạn.', - success: 'Thông tin đăng nhập đã được xác minh thành công', - }, - configuration: { - title: 'Cấu hình đăng ký', - description: 'Thiết lập các tham số đăng ký của bạn', - }, - }, - oauth: { - title: 'Tạo bằng OAuth', - authorization: { - title: 'Ủy quyền OAuth', - description: 'Cho phép Dify truy cập vào tài khoản của bạn', - redirectUrl: 'Chuyển hướng URL', - redirectUrlHelp: 'Sử dụng URL này trong cấu hình ứng dụng OAuth của bạn', - authorizeButton: 'Ủy quyền với {{provider}}', - waitingAuth: 'Đang chờ cấp quyền...', - authSuccess: 'Ủy quyền thành công', - authFailed: 'Không thể lấy thông tin xác thực OAuth', - waitingJump: 'Được phép, đang chờ nhảy', - }, - configuration: { - title: 'Cấu hình đăng ký', - description: 'Thiết lập các thông số đăng ký của bạn sau khi được cấp quyền', - success: 'Cấu hình OAuth thành công', - failed: 'Cấu hình OAuth thất bại', - }, - remove: { - success: 'Xóa OAuth thành công', - failed: 'Xóa OAuth thất bại', - }, - save: { - success: 'Cấu hình OAuth đã được lưu thành công', - }, - }, - manual: { - title: 'Cài đặt thủ công', - description: 'Cấu hình đăng ký webhook của bạn thủ công', - logs: { - title: 'Nhật ký yêu cầu', - request: 'Yêu cầu', - loading: 'Đang chờ yêu cầu từ {{pluginName}}...', - }, - }, - form: { - subscriptionName: { - label: 'Tên thuê bao', - placeholder: 'Nhập tên gói đăng ký', - required: 'Tên đăng ký là bắt buộc', - }, - callbackUrl: { - label: 'URL gọi lại', - description: 'URL này sẽ nhận các sự kiện webhook', - tooltip: 'Cung cấp một endpoint có thể truy cập công khai để nhận các yêu cầu gọi lại từ nhà cung cấp kích hoạt.', - placeholder: 'Đang tạo...', - privateAddressWarning: 'URL này có vẻ là một địa chỉ nội bộ, điều này có thể khiến các yêu cầu webhook thất bại. Bạn có thể thay đổi TRIGGER_URL sang một địa chỉ công khai.', - }, - }, - errors: { - createFailed: 'Tạo đăng ký thất bại', - verifyFailed: 'Xác minh thông tin đăng nhập thất bại', - authFailed: 'Ủy quyền thất bại', - networkError: 'Lỗi mạng, vui lòng thử lại', - }, - }, - events: { - title: 'Các sự kiện có sẵn', - description: 'Các sự kiện mà plugin kích hoạt này có thể đăng ký', - empty: 'Không có sự kiện nào', - event: 'Sự kiện', - events: 'Sự kiện', - actionNum: '{{num}} {{event}} ĐÃ BAO GỒM', - item: { - parameters: 'tham số {{count}}', - noParameters: 'Không có tham số', - }, - output: 'Đầu ra', - }, - node: { - status: { - warning: 'Ngắt kết nối', - }, - }, -} - -export default translation diff --git a/web/i18n/vi-VN/plugin.json b/web/i18n/vi-VN/plugin.json new file mode 100644 index 0000000000..f23fea5545 --- /dev/null +++ b/web/i18n/vi-VN/plugin.json @@ -0,0 +1,323 @@ +{ + "category": { + "all": "Tất cả", + "bundles": "Bó", + "extensions": "Phần mở rộng", + "tools": "Công cụ", + "agents": "Chiến lược đại lý", + "models": "Mô hình", + "datasources": "Nguồn dữ liệu", + "triggers": "Kích hoạt" + }, + "categorySingle": { + "agent": "Chiến lược đại lý", + "tool": "Công cụ", + "extension": "Phần mở rộng", + "model": "Mẫu", + "bundle": "Bó", + "datasource": "Nguồn dữ liệu", + "trigger": "Kích hoạt" + }, + "list": { + "source": { + "marketplace": "Cài đặt từ Marketplace", + "local": "Cài đặt từ tệp gói cục bộ", + "github": "Cài đặt từ GitHub" + }, + "noInstalled": "Không có plugin nào được cài đặt", + "notFound": "Không tìm thấy plugin" + }, + "source": { + "marketplace": "Chợ", + "local": "Tệp gói cục bộ", + "github": "GitHub" + }, + "detailPanel": { + "categoryTip": { + "local": "Plugin cục bộ", + "debugging": "Plugin gỡ lỗi", + "marketplace": "Được cài đặt từ Marketplace", + "github": "Cài đặt từ Github" + }, + "operation": { + "detail": "Chi tiết", + "update": "Cập nhật", + "viewDetail": "xem chi tiết", + "info": "Thông tin plugin", + "remove": "Triệt", + "install": "Cài đặt", + "checkUpdate": "Kiểm tra cập nhật", + "back": "Quay lại" + }, + "toolSelector": { + "descriptionPlaceholder": "Mô tả ngắn gọn về mục đích của công cụ, ví dụ: lấy nhiệt độ cho một vị trí cụ thể.", + "params": "CẤU HÌNH LÝ LUẬN", + "toolLabel": "Công cụ", + "descriptionLabel": "Mô tả công cụ", + "unsupportedContent2": "Nhấp để chuyển đổi phiên bản.", + "auto": "Tự động", + "placeholder": "Chọn một công cụ...", + "paramsTip1": "Kiểm soát các tham số suy luận LLM.", + "uninstalledTitle": "Công cụ chưa được cài đặt", + "unsupportedContent": "Phiên bản plugin đã cài đặt không cung cấp hành động này.", + "uninstalledContent": "Plugin này được cài đặt từ kho lưu trữ cục bộ / GitHub. Vui lòng sử dụng sau khi cài đặt.", + "paramsTip2": "Khi tắt 'Tự động', giá trị mặc định sẽ được sử dụng.", + "uninstalledLink": "Quản lý trong Plugins", + "title": "Thêm công cụ", + "settings": "CÀI ĐẶT NGƯỜI DÙNG", + "empty": "Nhấp vào nút '+' để thêm công cụ. Bạn có thể thêm nhiều công cụ.", + "unsupportedTitle": "Hành động không được hỗ trợ", + "toolSetting": "Cài đặt công cụ", + "unsupportedMCPTool": "Phiên bản plugin chiến lược đại lý được chọn hiện tại không hỗ trợ công cụ MCP." + }, + "switchVersion": "Chuyển đổi phiên bản", + "endpointDisableTip": "Tắt điểm cuối", + "endpointDeleteTip": "Xóa điểm cuối", + "configureApp": "Định cấu hình ứng dụng", + "configureModel": "Định cấu hình mô hình", + "endpointsTip": "Plugin này cung cấp các chức năng cụ thể thông qua các điểm cuối và bạn có thể định cấu hình nhiều bộ điểm cuối cho không gian làm việc hiện tại.", + "endpointDisableContent": "Bạn có muốn vô hiệu hóa {{name}} không?", + "strategyNum": "{{số}} {{chiến lược}} BAO GỒM", + "endpoints": "Điểm cuối", + "actionNum": "{{số}} {{hành động}} BAO GỒM", + "configureTool": "Công cụ định cấu hình", + "modelNum": "{{số}} CÁC MÔ HÌNH BAO GỒM", + "serviceOk": "Dịch vụ OK", + "endpointsDocLink": "Xem tài liệu", + "endpointsEmpty": "Nhấp vào nút '+' để thêm điểm cuối", + "endpointModalDesc": "Sau khi định cấu hình, các tính năng do plugin cung cấp thông qua điểm cuối API có thể được sử dụng.", + "endpointDeleteContent": "Bạn có muốn xóa {{name}} không?", + "endpointModalTitle": "Điểm cuối thiết lập", + "disabled": "Tàn tật", + "deprecation": { + "reason": { + "noMaintainer": "không có người bảo trì", + "ownershipTransferred": "quyền sở hữu được chuyển nhượng", + "businessAdjustments": "điều chỉnh kinh doanh" + }, + "noReason": "Plugin này đã bị loại bỏ và sẽ không còn được cập nhật.", + "onlyReason": "Plugin này đã bị ngừng hỗ trợ do {{deprecatedReason}} và sẽ không còn được cập nhật nữa.", + "fullMessage": "Plugin này đã bị ngừng sử dụng do {{deprecatedReason}}, và sẽ không còn được cập nhật nữa. Vui lòng sử dụng {{-alternativePluginId}} thay thế." + } + }, + "debugInfo": { + "title": "Gỡ lỗi", + "viewDocs": "Xem tài liệu" + }, + "privilege": { + "whoCanInstall": "Ai có thể cài đặt và quản lý plugin?", + "everyone": "Ai ai", + "whoCanDebug": "Ai có thể gỡ lỗi plugin?", + "title": "Tùy chọn plugin", + "admins": "Quản trị viên", + "noone": "Không ai" + }, + "pluginInfoModal": { + "release": "Phát hành", + "repository": "Kho", + "title": "Thông tin plugin", + "packageName": "Gói" + }, + "action": { + "delete": "Xóa plugin", + "deleteContentRight": "plugin?", + "usedInApps": "Plugin này đang được sử dụng trong các ứng dụng {{num}}.", + "pluginInfo": "Thông tin plugin", + "checkForUpdates": "Kiểm tra thông tin cập nhật", + "deleteContentLeft": "Bạn có muốn xóa" + }, + "installModal": { + "labels": { + "package": "Gói", + "repository": "Kho", + "version": "Phiên bản" + }, + "close": "Đóng", + "installFailedDesc": "Plugin đã được cài đặt không thành công.", + "cancel": "Hủy", + "install": "Cài đặt", + "dropPluginToInstall": "Thả gói plugin vào đây để cài đặt", + "readyToInstallPackage": "Giới thiệu cài đặt plugin sau", + "uploadingPackage": "Tải lên {{packageName}}...", + "installing": "Cài đặt...", + "installedSuccessfully": "Cài đặt thành công", + "readyToInstall": "Giới thiệu cài đặt plugin sau", + "next": "Sau", + "readyToInstallPackages": "Chuẩn bị cài đặt các plugin {{num}} sau", + "pluginLoadErrorDesc": "Plugin này sẽ không được cài đặt", + "fromTrustSource": "Hãy đảm bảo rằng bạn chỉ cài đặt các plugin từ một nguồn đáng tin cậy.", + "installedSuccessfullyDesc": "Plugin đã được cài đặt thành công.", + "uploadFailed": "Tải lên không thành công", + "installPlugin": "Cài đặt Plugin", + "installFailed": "Cài đặt không thành công", + "installComplete": "Cài đặt hoàn tất", + "back": "Lưng", + "pluginLoadError": "Lỗi tải plugin", + "installWarning": "Plugin này không được phép cài đặt." + }, + "installFromGitHub": { + "installFailed": "Cài đặt không thành công", + "updatePlugin": "Cập nhật plugin từ GitHub", + "gitHubRepo": "Kho lưu trữ GitHub", + "selectPackage": "Chọn gói", + "selectVersionPlaceholder": "Vui lòng chọn một phiên bản", + "installedSuccessfully": "Cài đặt thành công", + "installPlugin": "Cài đặt plugin từ GitHub", + "uploadFailed": "Tải lên không thành công", + "selectPackagePlaceholder": "Vui lòng chọn một gói", + "selectVersion": "Chọn phiên bản", + "installNote": "Hãy đảm bảo rằng bạn chỉ cài đặt các plugin từ một nguồn đáng tin cậy." + }, + "upgrade": { + "upgrade": "Cài đặt", + "upgrading": "Cài đặt...", + "successfulTitle": "Cài đặt thành công", + "title": "Cài đặt Plugin", + "usedInApps": "Được sử dụng trong các ứng dụng {{num}}", + "description": "Giới thiệu cài đặt plugin sau", + "close": "Đóng" + }, + "error": { + "noReleasesFound": "Không tìm thấy bản phát hành. Vui lòng kiểm tra kho lưu trữ GitHub hoặc URL đầu vào.", + "fetchReleasesError": "Không thể truy xuất bản phát hành. Vui lòng thử lại sau.", + "inValidGitHubUrl": "URL GitHub không hợp lệ. Vui lòng nhập URL hợp lệ theo định dạng: https://github.com/owner/repo" + }, + "marketplace": { + "sortOption": { + "newlyReleased": "Mới phát hành", + "mostPopular": "Phổ biến nhất", + "firstReleased": "Phát hành lần đầu tiên", + "recentlyUpdated": "Cập nhật gần đây" + }, + "empower": "Hỗ trợ phát triển AI của bạn", + "viewMore": "Xem thêm", + "difyMarketplace": "Thị trường Dify", + "discover": "Khám phá", + "pluginsResult": "{{num}} kết quả", + "moreFrom": "Các ứng dụng khác từ Marketplace", + "sortBy": "Thành phố đen", + "noPluginFound": "Không tìm thấy plugin nào", + "and": "và", + "verifiedTip": "Được xác nhận bởi Dify", + "partnerTip": "Được xác nhận bởi một đối tác của Dify" + }, + "task": { + "installingWithError": "Cài đặt {{installingLength}} plugins, {{successLength}} thành công, {{errorLength}} không thành công", + "installing": "Cài đặt {{installingLength}} plugins, 0 xong.", + "installingWithSuccess": "Cài đặt {{installingLength}} plugins, {{successLength}} thành công.", + "installError": "{{errorLength}} plugin không cài đặt được, nhấp để xem", + "installedError": "{{errorLength}} plugin không cài đặt được", + "clearAll": "Xóa tất cả", + "installSuccess": "{{successLength}} plugins installed successfully", + "installed": "Installed", + "runningPlugins": "Installing Plugins", + "successPlugins": "Successfully Installed Plugins", + "errorPlugins": "Failed to Install Plugins" + }, + "from": "Từ", + "installAction": "Cài đặt", + "searchInMarketplace": "Tìm kiếm trên Marketplace", + "endpointsEnabled": "{{num}} bộ điểm cuối được kích hoạt", + "install": "{{num}} lượt cài đặt", + "findMoreInMarketplace": "Tìm thêm trong Marketplace", + "search": "Tìm kiếm", + "searchCategories": "Danh mục tìm kiếm", + "installPlugin": "Cài đặt plugin", + "searchPlugins": "Tìm kiếm plugin", + "fromMarketplace": "Từ Marketplace", + "allCategories": "Tất cả các danh mục", + "searchTools": "Công cụ tìm kiếm...", + "installFrom": "CÀI ĐẶT TỪ", + "metadata": { + "title": "Plugin" + }, + "difyVersionNotCompatible": "Phiên bản Dify hiện tại không tương thích với plugin này, vui lòng nâng cấp lên phiên bản tối thiểu cần thiết: {{minimalDifyVersion}}", + "requestAPlugin": "Yêu cầu một plugin", + "publishPlugins": "Xuất bản plugin", + "auth": { + "custom": "Tùy chỉnh", + "saveOnly": "Chỉ lưu lại", + "authorizationName": "Tên ủy quyền", + "addOAuth": "Thêm OAuth", + "oauthClient": "Khách hàng OAuth", + "useOAuth": "Sử dụng OAuth", + "saveAndAuth": "Lưu và Xác nhận", + "authorizations": "Chấp thuận", + "setupOAuth": "Thiết lập OAuth Client", + "authRemoved": "Chính quyền đã loại bỏ", + "useOAuthAuth": "Sử dụng ủy quyền OAuth", + "authorization": "Ủy quyền", + "useApiAuth": "Cấu hình ủy quyền khóa API", + "default": "Mặc định", + "addApi": "Thêm khóa API", + "oauthClientSettings": "Cài đặt khách hàng OAuth", + "workspaceDefault": "Mặc định không gian làm việc", + "useApi": "Sử dụng khóa API", + "setDefault": "Đặt làm mặc định", + "useApiAuthDesc": "Sau khi cấu hình thông tin xác thực, tất cả các thành viên trong không gian làm việc có thể sử dụng công cụ này khi điều phối các ứng dụng.", + "clientInfo": "Vì không tìm thấy bí mật khách hàng hệ thống cho nhà cung cấp công cụ này, cần thiết lập thủ công, đối với redirect_uri, vui lòng sử dụng", + "unavailable": "Không có sẵn", + "customCredentialUnavailable": "Thông tin đăng nhập tùy chỉnh hiện không khả dụng", + "credentialUnavailable": "Thông tin đăng nhập hiện không khả dụng. Vui lòng liên hệ với quản trị viên.", + "credentialUnavailableInButton": "Thông tin xác thực không khả dụng", + "emptyAuth": "Vui lòng định cấu hình xác thực", + "connectedWorkspace": "Không gian làm việc được kết nối" + }, + "deprecated": "Đã bị ngưng sử dụng", + "autoUpdate": { + "strategy": { + "disabled": { + "name": "Khuyết tật", + "description": "Các plugin sẽ không tự động cập nhật" + }, + "fixOnly": { + "name": "Chỉ sửa chữa", + "selectedDescription": "Tự động cập nhật chỉ cho các phiên bản bản vá", + "description": "Tự động cập nhật chỉ cho các phiên bản vá (ví dụ: 1.0.1 → 1.0.2). Thay đổi phiên bản nhỏ sẽ không kích hoạt cập nhật." + }, + "latest": { + "name": "Mới nhất", + "description": "Luôn cập nhật lên phiên bản mới nhất", + "selectedDescription": "Luôn cập nhật lên phiên bản mới nhất" + } + }, + "upgradeMode": { + "partial": "Chỉ được chọn", + "exclude": "Loại trừ đã chọn", + "all": "Cập nhật tất cả" + }, + "upgradeModePlaceholder": { + "exclude": "Các plugin được chọn sẽ không tự động cập nhật", + "partial": "Chỉ những plugin được chọn mới tự động cập nhật. Hiện tại không có plugin nào được chọn, vì vậy sẽ không có plugin nào tự động cập nhật." + }, + "operation": { + "clearAll": "Xóa tất cả", + "select": "Chọn plugin" + }, + "pluginDowngradeWarning": { + "exclude": "Loại trừ khỏi cập nhật tự động", + "downgrade": "Giảm cấp vẫn vậy", + "description": "Chức năng tự động cập nhật hiện đang được bật cho plugin này. Việc hạ cấp phiên bản có thể khiến các thay đổi của bạn bị ghi đè trong lần cập nhật tự động tiếp theo.", + "title": "Hạ cấp Plugin" + }, + "noPluginPlaceholder": { + "noInstalled": "Không có plugin nào được cài đặt", + "noFound": "Không tìm thấy plugin nào" + }, + "updateTimeTitle": "Thời gian cập nhật", + "updateTime": "Thời gian cập nhật", + "automaticUpdates": "Cập nhật tự động", + "nextUpdateTime": "Cập nhật tự động tiếp theo: {{time}}", + "specifyPluginsToUpdate": "Chỉ định các plugin để cập nhật", + "excludeUpdate": "Các plugin {{num}} sau đây sẽ không tự động cập nhật", + "updateSettings": "Cập nhật cài đặt", + "partialUPdate": "Chỉ có {{num}} plugin sau đây sẽ tự động cập nhật", + "changeTimezone": "Để thay đổi múi giờ, hãy vào Cài đặt" + }, + "readmeInfo": { + "title": "ĐỌC_TÔI", + "needHelpCheckReadme": "Cần giúp đỡ? Xem tệp README.", + "noReadmeAvailable": "Không có README", + "failedToFetch": "Không thể lấy README" + } +} diff --git a/web/i18n/vi-VN/plugin.ts b/web/i18n/vi-VN/plugin.ts deleted file mode 100644 index 127738f849..0000000000 --- a/web/i18n/vi-VN/plugin.ts +++ /dev/null @@ -1,325 +0,0 @@ -const translation = { - category: { - all: 'Tất cả', - bundles: 'Bó', - extensions: 'Phần mở rộng', - tools: 'Công cụ', - agents: 'Chiến lược đại lý', - models: 'Mô hình', - datasources: 'Nguồn dữ liệu', - triggers: 'Kích hoạt', - }, - categorySingle: { - agent: 'Chiến lược đại lý', - tool: 'Công cụ', - extension: 'Phần mở rộng', - model: 'Mẫu', - bundle: 'Bó', - datasource: 'Nguồn dữ liệu', - trigger: 'Kích hoạt', - }, - list: { - source: { - marketplace: 'Cài đặt từ Marketplace', - local: 'Cài đặt từ tệp gói cục bộ', - github: 'Cài đặt từ GitHub', - }, - noInstalled: 'Không có plugin nào được cài đặt', - notFound: 'Không tìm thấy plugin', - }, - source: { - marketplace: 'Chợ', - local: 'Tệp gói cục bộ', - github: 'GitHub', - }, - detailPanel: { - categoryTip: { - local: 'Plugin cục bộ', - debugging: 'Plugin gỡ lỗi', - marketplace: 'Được cài đặt từ Marketplace', - github: 'Cài đặt từ Github', - }, - operation: { - detail: 'Chi tiết', - update: 'Cập nhật', - viewDetail: 'xem chi tiết', - info: 'Thông tin plugin', - remove: 'Triệt', - install: 'Cài đặt', - checkUpdate: 'Kiểm tra cập nhật', - back: 'Quay lại', - }, - toolSelector: { - descriptionPlaceholder: 'Mô tả ngắn gọn về mục đích của công cụ, ví dụ: lấy nhiệt độ cho một vị trí cụ thể.', - params: 'CẤU HÌNH LÝ LUẬN', - toolLabel: 'Công cụ', - descriptionLabel: 'Mô tả công cụ', - unsupportedContent2: 'Nhấp để chuyển đổi phiên bản.', - auto: 'Tự động', - placeholder: 'Chọn một công cụ...', - paramsTip1: 'Kiểm soát các tham số suy luận LLM.', - uninstalledTitle: 'Công cụ chưa được cài đặt', - unsupportedContent: 'Phiên bản plugin đã cài đặt không cung cấp hành động này.', - uninstalledContent: 'Plugin này được cài đặt từ kho lưu trữ cục bộ / GitHub. Vui lòng sử dụng sau khi cài đặt.', - paramsTip2: 'Khi tắt \'Tự động\', giá trị mặc định sẽ được sử dụng.', - uninstalledLink: 'Quản lý trong Plugins', - title: 'Thêm công cụ', - settings: 'CÀI ĐẶT NGƯỜI DÙNG', - empty: 'Nhấp vào nút \'+\' để thêm công cụ. Bạn có thể thêm nhiều công cụ.', - unsupportedTitle: 'Hành động không được hỗ trợ', - toolSetting: 'Cài đặt công cụ', - unsupportedMCPTool: 'Phiên bản plugin chiến lược đại lý được chọn hiện tại không hỗ trợ công cụ MCP.', - }, - switchVersion: 'Chuyển đổi phiên bản', - endpointDisableTip: 'Tắt điểm cuối', - endpointDeleteTip: 'Xóa điểm cuối', - configureApp: 'Định cấu hình ứng dụng', - configureModel: 'Định cấu hình mô hình', - endpointsTip: 'Plugin này cung cấp các chức năng cụ thể thông qua các điểm cuối và bạn có thể định cấu hình nhiều bộ điểm cuối cho không gian làm việc hiện tại.', - endpointDisableContent: 'Bạn có muốn vô hiệu hóa {{name}} không?', - strategyNum: '{{số}} {{chiến lược}} BAO GỒM', - endpoints: 'Điểm cuối', - actionNum: '{{số}} {{hành động}} BAO GỒM', - configureTool: 'Công cụ định cấu hình', - modelNum: '{{số}} CÁC MÔ HÌNH BAO GỒM', - serviceOk: 'Dịch vụ OK', - endpointsDocLink: 'Xem tài liệu', - endpointsEmpty: 'Nhấp vào nút \'+\' để thêm điểm cuối', - endpointModalDesc: 'Sau khi định cấu hình, các tính năng do plugin cung cấp thông qua điểm cuối API có thể được sử dụng.', - endpointDeleteContent: 'Bạn có muốn xóa {{name}} không?', - endpointModalTitle: 'Điểm cuối thiết lập', - disabled: 'Tàn tật', - deprecation: { - reason: { - noMaintainer: 'không có người bảo trì', - ownershipTransferred: 'quyền sở hữu được chuyển nhượng', - businessAdjustments: 'điều chỉnh kinh doanh', - }, - noReason: 'Plugin này đã bị loại bỏ và sẽ không còn được cập nhật.', - onlyReason: 'Plugin này đã bị ngừng hỗ trợ do {{deprecatedReason}} và sẽ không còn được cập nhật nữa.', - fullMessage: 'Plugin này đã bị ngừng sử dụng do {{deprecatedReason}}, và sẽ không còn được cập nhật nữa. Vui lòng sử dụng {{-alternativePluginId}} thay thế.', - }, - }, - debugInfo: { - title: 'Gỡ lỗi', - viewDocs: 'Xem tài liệu', - }, - privilege: { - whoCanInstall: 'Ai có thể cài đặt và quản lý plugin?', - everyone: 'Ai ai', - whoCanDebug: 'Ai có thể gỡ lỗi plugin?', - title: 'Tùy chọn plugin', - admins: 'Quản trị viên', - noone: 'Không ai', - }, - pluginInfoModal: { - release: 'Phát hành', - repository: 'Kho', - title: 'Thông tin plugin', - packageName: 'Gói', - }, - action: { - delete: 'Xóa plugin', - deleteContentRight: 'plugin?', - usedInApps: 'Plugin này đang được sử dụng trong các ứng dụng {{num}}.', - pluginInfo: 'Thông tin plugin', - checkForUpdates: 'Kiểm tra thông tin cập nhật', - deleteContentLeft: 'Bạn có muốn xóa', - }, - installModal: { - labels: { - package: 'Gói', - repository: 'Kho', - version: 'Phiên bản', - }, - close: 'Đóng', - installFailedDesc: 'Plugin đã được cài đặt không thành công.', - cancel: 'Hủy', - install: 'Cài đặt', - dropPluginToInstall: 'Thả gói plugin vào đây để cài đặt', - readyToInstallPackage: 'Giới thiệu cài đặt plugin sau', - uploadingPackage: 'Tải lên {{packageName}}...', - installing: 'Cài đặt...', - installedSuccessfully: 'Cài đặt thành công', - readyToInstall: 'Giới thiệu cài đặt plugin sau', - next: 'Sau', - readyToInstallPackages: 'Chuẩn bị cài đặt các plugin {{num}} sau', - pluginLoadErrorDesc: 'Plugin này sẽ không được cài đặt', - fromTrustSource: 'Hãy đảm bảo rằng bạn chỉ cài đặt các plugin từ một nguồn đáng tin cậy.', - installedSuccessfullyDesc: 'Plugin đã được cài đặt thành công.', - uploadFailed: 'Tải lên không thành công', - installPlugin: 'Cài đặt Plugin', - installFailed: 'Cài đặt không thành công', - installComplete: 'Cài đặt hoàn tất', - back: 'Lưng', - pluginLoadError: 'Lỗi tải plugin', - installWarning: 'Plugin này không được phép cài đặt.', - }, - installFromGitHub: { - installFailed: 'Cài đặt không thành công', - updatePlugin: 'Cập nhật plugin từ GitHub', - gitHubRepo: 'Kho lưu trữ GitHub', - selectPackage: 'Chọn gói', - selectVersionPlaceholder: 'Vui lòng chọn một phiên bản', - installedSuccessfully: 'Cài đặt thành công', - installPlugin: 'Cài đặt plugin từ GitHub', - uploadFailed: 'Tải lên không thành công', - selectPackagePlaceholder: 'Vui lòng chọn một gói', - selectVersion: 'Chọn phiên bản', - installNote: 'Hãy đảm bảo rằng bạn chỉ cài đặt các plugin từ một nguồn đáng tin cậy.', - }, - upgrade: { - upgrade: 'Cài đặt', - upgrading: 'Cài đặt...', - successfulTitle: 'Cài đặt thành công', - title: 'Cài đặt Plugin', - usedInApps: 'Được sử dụng trong các ứng dụng {{num}}', - description: 'Giới thiệu cài đặt plugin sau', - close: 'Đóng', - }, - error: { - noReleasesFound: 'Không tìm thấy bản phát hành. Vui lòng kiểm tra kho lưu trữ GitHub hoặc URL đầu vào.', - fetchReleasesError: 'Không thể truy xuất bản phát hành. Vui lòng thử lại sau.', - inValidGitHubUrl: 'URL GitHub không hợp lệ. Vui lòng nhập URL hợp lệ theo định dạng: https://github.com/owner/repo', - }, - marketplace: { - sortOption: { - newlyReleased: 'Mới phát hành', - mostPopular: 'Phổ biến nhất', - firstReleased: 'Phát hành lần đầu tiên', - recentlyUpdated: 'Cập nhật gần đây', - }, - empower: 'Hỗ trợ phát triển AI của bạn', - viewMore: 'Xem thêm', - difyMarketplace: 'Thị trường Dify', - discover: 'Khám phá', - pluginsResult: '{{num}} kết quả', - moreFrom: 'Các ứng dụng khác từ Marketplace', - sortBy: 'Thành phố đen', - noPluginFound: 'Không tìm thấy plugin nào', - and: 'và', - verifiedTip: 'Được xác nhận bởi Dify', - partnerTip: 'Được xác nhận bởi một đối tác của Dify', - }, - task: { - installingWithError: 'Cài đặt {{installingLength}} plugins, {{successLength}} thành công, {{errorLength}} không thành công', - installing: 'Cài đặt {{installingLength}} plugins, 0 xong.', - installingWithSuccess: 'Cài đặt {{installingLength}} plugins, {{successLength}} thành công.', - installError: '{{errorLength}} plugin không cài đặt được, nhấp để xem', - installedError: '{{errorLength}} plugin không cài đặt được', - clearAll: 'Xóa tất cả', - installSuccess: '{{successLength}} plugins installed successfully', - installed: 'Installed', - runningPlugins: 'Installing Plugins', - successPlugins: 'Successfully Installed Plugins', - errorPlugins: 'Failed to Install Plugins', - }, - from: 'Từ', - installAction: 'Cài đặt', - searchInMarketplace: 'Tìm kiếm trên Marketplace', - endpointsEnabled: '{{num}} bộ điểm cuối được kích hoạt', - install: '{{num}} lượt cài đặt', - findMoreInMarketplace: 'Tìm thêm trong Marketplace', - search: 'Tìm kiếm', - searchCategories: 'Danh mục tìm kiếm', - installPlugin: 'Cài đặt plugin', - searchPlugins: 'Tìm kiếm plugin', - fromMarketplace: 'Từ Marketplace', - allCategories: 'Tất cả các danh mục', - searchTools: 'Công cụ tìm kiếm...', - installFrom: 'CÀI ĐẶT TỪ', - metadata: { - title: 'Plugin', - }, - difyVersionNotCompatible: 'Phiên bản Dify hiện tại không tương thích với plugin này, vui lòng nâng cấp lên phiên bản tối thiểu cần thiết: {{minimalDifyVersion}}', - requestAPlugin: 'Yêu cầu một plugin', - publishPlugins: 'Xuất bản plugin', - auth: { - custom: 'Tùy chỉnh', - saveOnly: 'Chỉ lưu lại', - authorizationName: 'Tên ủy quyền', - addOAuth: 'Thêm OAuth', - oauthClient: 'Khách hàng OAuth', - useOAuth: 'Sử dụng OAuth', - saveAndAuth: 'Lưu và Xác nhận', - authorizations: 'Chấp thuận', - setupOAuth: 'Thiết lập OAuth Client', - authRemoved: 'Chính quyền đã loại bỏ', - useOAuthAuth: 'Sử dụng ủy quyền OAuth', - authorization: 'Ủy quyền', - useApiAuth: 'Cấu hình ủy quyền khóa API', - default: 'Mặc định', - addApi: 'Thêm khóa API', - oauthClientSettings: 'Cài đặt khách hàng OAuth', - workspaceDefault: 'Mặc định không gian làm việc', - useApi: 'Sử dụng khóa API', - setDefault: 'Đặt làm mặc định', - useApiAuthDesc: 'Sau khi cấu hình thông tin xác thực, tất cả các thành viên trong không gian làm việc có thể sử dụng công cụ này khi điều phối các ứng dụng.', - clientInfo: 'Vì không tìm thấy bí mật khách hàng hệ thống cho nhà cung cấp công cụ này, cần thiết lập thủ công, đối với redirect_uri, vui lòng sử dụng', - unavailable: 'Không có sẵn', - customCredentialUnavailable: 'Thông tin đăng nhập tùy chỉnh hiện không khả dụng', - credentialUnavailable: 'Thông tin đăng nhập hiện không khả dụng. Vui lòng liên hệ với quản trị viên.', - credentialUnavailableInButton: 'Thông tin xác thực không khả dụng', - emptyAuth: 'Vui lòng định cấu hình xác thực', - connectedWorkspace: 'Không gian làm việc được kết nối', - }, - deprecated: 'Đã bị ngưng sử dụng', - autoUpdate: { - strategy: { - disabled: { - name: 'Khuyết tật', - description: 'Các plugin sẽ không tự động cập nhật', - }, - fixOnly: { - name: 'Chỉ sửa chữa', - selectedDescription: 'Tự động cập nhật chỉ cho các phiên bản bản vá', - description: 'Tự động cập nhật chỉ cho các phiên bản vá (ví dụ: 1.0.1 → 1.0.2). Thay đổi phiên bản nhỏ sẽ không kích hoạt cập nhật.', - }, - latest: { - name: 'Mới nhất', - description: 'Luôn cập nhật lên phiên bản mới nhất', - selectedDescription: 'Luôn cập nhật lên phiên bản mới nhất', - }, - }, - upgradeMode: { - partial: 'Chỉ được chọn', - exclude: 'Loại trừ đã chọn', - all: 'Cập nhật tất cả', - }, - upgradeModePlaceholder: { - exclude: 'Các plugin được chọn sẽ không tự động cập nhật', - partial: 'Chỉ những plugin được chọn mới tự động cập nhật. Hiện tại không có plugin nào được chọn, vì vậy sẽ không có plugin nào tự động cập nhật.', - }, - operation: { - clearAll: 'Xóa tất cả', - select: 'Chọn plugin', - }, - pluginDowngradeWarning: { - exclude: 'Loại trừ khỏi cập nhật tự động', - downgrade: 'Giảm cấp vẫn vậy', - description: 'Chức năng tự động cập nhật hiện đang được bật cho plugin này. Việc hạ cấp phiên bản có thể khiến các thay đổi của bạn bị ghi đè trong lần cập nhật tự động tiếp theo.', - title: 'Hạ cấp Plugin', - }, - noPluginPlaceholder: { - noInstalled: 'Không có plugin nào được cài đặt', - noFound: 'Không tìm thấy plugin nào', - }, - updateTimeTitle: 'Thời gian cập nhật', - updateTime: 'Thời gian cập nhật', - automaticUpdates: 'Cập nhật tự động', - nextUpdateTime: 'Cập nhật tự động tiếp theo: {{time}}', - specifyPluginsToUpdate: 'Chỉ định các plugin để cập nhật', - excludeUpdate: 'Các plugin {{num}} sau đây sẽ không tự động cập nhật', - updateSettings: 'Cập nhật cài đặt', - partialUPdate: 'Chỉ có {{num}} plugin sau đây sẽ tự động cập nhật', - changeTimezone: 'Để thay đổi múi giờ, hãy vào Cài đặt', - }, - readmeInfo: { - title: 'ĐỌC_TÔI', - needHelpCheckReadme: 'Cần giúp đỡ? Xem tệp README.', - noReadmeAvailable: 'Không có README', - failedToFetch: 'Không thể lấy README', - }, -} - -export default translation diff --git a/web/i18n/vi-VN/register.json b/web/i18n/vi-VN/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/vi-VN/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/vi-VN/register.ts b/web/i18n/vi-VN/register.ts deleted file mode 100644 index 928649474b..0000000000 --- a/web/i18n/vi-VN/register.ts +++ /dev/null @@ -1,4 +0,0 @@ -const translation = { -} - -export default translation diff --git a/web/i18n/vi-VN/run-log.json b/web/i18n/vi-VN/run-log.json new file mode 100644 index 0000000000..9f9e7b9cdc --- /dev/null +++ b/web/i18n/vi-VN/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "NHẬP", + "result": "KẾT QUẢ", + "detail": "CHI TIẾT", + "tracing": "THEO DÕI", + "resultPanel": { + "status": "TRẠNG THÁI", + "time": "THỜI GIAN", + "tokens": "TỔNG SỐ TOKEN" + }, + "meta": { + "title": "DỮ LIỆU META", + "status": "Trạng thái", + "version": "Phiên bản", + "executor": "Người thực thi", + "startTime": "Thời gian bắt đầu", + "time": "Thời gian đã trôi qua", + "tokens": "Tổng số token", + "steps": "Các bước chạy" + }, + "resultEmpty": { + "title": "Chạy này chỉ xuất ra định dạng JSON,", + "tipLeft": "vui lòng truy cập ", + "link": "bảng chi tiết", + "tipRight": " xem nó." + }, + "circularInvocationTip": "Có lệnh gọi vòng tròn các công cụ/nút trong quy trình làm việc hiện tại.", + "actionLogs": "Nhật ký hành động" +} diff --git a/web/i18n/vi-VN/run-log.ts b/web/i18n/vi-VN/run-log.ts deleted file mode 100644 index ef6d77e978..0000000000 --- a/web/i18n/vi-VN/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -const translation = { - input: 'NHẬP', - result: 'KẾT QUẢ', - detail: 'CHI TIẾT', - tracing: 'THEO DÕI', - resultPanel: { - status: 'TRẠNG THÁI', - time: 'THỜI GIAN', - tokens: 'TỔNG SỐ TOKEN', - }, - meta: { - title: 'DỮ LIỆU META', - status: 'Trạng thái', - version: 'Phiên bản', - executor: 'Người thực thi', - startTime: 'Thời gian bắt đầu', - time: 'Thời gian đã trôi qua', - tokens: 'Tổng số token', - steps: 'Các bước chạy', - }, - resultEmpty: { - title: 'Chạy này chỉ xuất ra định dạng JSON,', - tipLeft: 'vui lòng truy cập ', - link: 'bảng chi tiết', - tipRight: ' xem nó.', - }, - circularInvocationTip: 'Có lệnh gọi vòng tròn các công cụ/nút trong quy trình làm việc hiện tại.', - actionLogs: 'Nhật ký hành động', -} - -export default translation diff --git a/web/i18n/vi-VN/share.json b/web/i18n/vi-VN/share.json new file mode 100644 index 0000000000..f672ed83fc --- /dev/null +++ b/web/i18n/vi-VN/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "", + "appUnavailable": "Ứng dụng không khả dụng", + "appUnknownError": "Ứng dụng gặp lỗi không xác định" + }, + "chat": { + "newChat": "Cuộc trò chuyện mới", + "pinnedTitle": "Đã ghim", + "unpinnedTitle": "Trò chuyện", + "newChatDefaultName": "Cuộc trò chuyện mới", + "resetChat": "Đặt lại cuộc trò chuyện", + "poweredBy": "Được cung cấp bởi", + "prompt": "Lời nhắc", + "privatePromptConfigTitle": "Cài đặt cuộc trò chuyện", + "publicPromptConfigTitle": "Lời nhắc ban đầu", + "configStatusDes": "Trước khi bắt đầu, bạn có thể chỉnh sửa cài đặt cuộc trò chuyện", + "configDisabled": "Cài đặt của phiên trước đã được sử dụng cho phiên này.", + "startChat": "Bắt đầu trò chuyện", + "privacyPolicyLeft": "Vui lòng đọc ", + "privacyPolicyMiddle": "chính sách bảo mật", + "privacyPolicyRight": " được cung cấp bởi nhà phát triển ứng dụng.", + "deleteConversation": { + "title": "Xóa cuộc trò chuyện", + "content": "Bạn có chắc muốn xóa cuộc trò chuyện này không?" + }, + "tryToSolve": "Thử giải quyết", + "temporarySystemIssue": "Xin lỗi, hệ thống đang gặp sự cố tạm thời.", + "expand": "Mở rộng", + "collapse": "Thu gọn", + "chatFormTip": "Cài đặt trò chuyện không thể được thay đổi sau khi cuộc trò chuyện đã bắt đầu.", + "newChatTip": "Đã ở trong một cuộc trò chuyện mới", + "viewChatSettings": "Xem cài đặt trò chuyện", + "chatSettingsTitle": "Cài đặt trò chuyện mới" + }, + "generation": { + "tabs": { + "create": "Tạo đơn lẻ", + "batch": "Tạo hàng loạt", + "saved": "Đã lưu" + }, + "savedNoData": { + "title": "Bạn chưa lưu kết quả nào!", + "description": "Bắt đầu tạo nội dung và tìm kết quả đã lưu của bạn ở đây.", + "startCreateContent": "Bắt đầu tạo nội dung" + }, + "title": "Hoàn thiện AI", + "queryTitle": "Nội dung truy vấn", + "completionResult": "Kết quả hoàn thiện", + "queryPlaceholder": "Nhập nội dung truy vấn của bạn...", + "run": "Thực thi", + "copy": "Sao chép", + "resultTitle": "Kết quả AI", + "noData": "AI sẽ hiển thị kết quả ở đây.", + "csvUploadTitle": "Kéo và thả tệp CSV của bạn vào đây, hoặc ", + "browse": "chọn tệp", + "csvStructureTitle": "Tệp CSV phải tuân thủ cấu trúc sau:", + "downloadTemplate": "Tải xuống mẫu tại đây", + "field": "Trường", + "batchFailed": { + "info": "{{num}} lần thực thi thất bại", + "retry": "Thử lại", + "outputPlaceholder": "Không có nội dung đầu ra" + }, + "errorMsg": { + "empty": "Vui lòng nhập nội dung vào tệp đã tải lên.", + "fileStructNotMatch": "Cấu trúc tệp CSV tải lên không khớp.", + "emptyLine": "Dòng {{rowIndex}} trống", + "invalidLine": "Dòng {{rowIndex}}: {{varName}} không thể để trống", + "moreThanMaxLengthLine": "Dòng {{rowIndex}}: {{varName}} không thể chứa quá {{maxLength}} ký tự", + "atLeastOne": "Vui lòng nhập ít nhất một dòng vào tệp đã tải lên." + }, + "execution": "Chạy", + "executions": "{{num}} lần chạy", + "stopRun": "Dừng thực thi" + }, + "login": { + "backToHome": "Trở về Trang Chủ" + } +} diff --git a/web/i18n/vi-VN/share.ts b/web/i18n/vi-VN/share.ts deleted file mode 100644 index 8cacb61618..0000000000 --- a/web/i18n/vi-VN/share.ts +++ /dev/null @@ -1,82 +0,0 @@ -const translation = { - common: { - welcome: '', - appUnavailable: 'Ứng dụng không khả dụng', - appUnknownError: 'Ứng dụng gặp lỗi không xác định', - }, - chat: { - newChat: 'Cuộc trò chuyện mới', - pinnedTitle: 'Đã ghim', - unpinnedTitle: 'Trò chuyện', - newChatDefaultName: 'Cuộc trò chuyện mới', - resetChat: 'Đặt lại cuộc trò chuyện', - poweredBy: 'Được cung cấp bởi', - prompt: 'Lời nhắc', - privatePromptConfigTitle: 'Cài đặt cuộc trò chuyện', - publicPromptConfigTitle: 'Lời nhắc ban đầu', - configStatusDes: 'Trước khi bắt đầu, bạn có thể chỉnh sửa cài đặt cuộc trò chuyện', - configDisabled: 'Cài đặt của phiên trước đã được sử dụng cho phiên này.', - startChat: 'Bắt đầu trò chuyện', - privacyPolicyLeft: 'Vui lòng đọc ', - privacyPolicyMiddle: 'chính sách bảo mật', - privacyPolicyRight: ' được cung cấp bởi nhà phát triển ứng dụng.', - deleteConversation: { - title: 'Xóa cuộc trò chuyện', - content: 'Bạn có chắc muốn xóa cuộc trò chuyện này không?', - }, - tryToSolve: 'Thử giải quyết', - temporarySystemIssue: 'Xin lỗi, hệ thống đang gặp sự cố tạm thời.', - expand: 'Mở rộng', - collapse: 'Thu gọn', - chatFormTip: 'Cài đặt trò chuyện không thể được thay đổi sau khi cuộc trò chuyện đã bắt đầu.', - newChatTip: 'Đã ở trong một cuộc trò chuyện mới', - viewChatSettings: 'Xem cài đặt trò chuyện', - chatSettingsTitle: 'Cài đặt trò chuyện mới', - }, - generation: { - tabs: { - create: 'Tạo đơn lẻ', - batch: 'Tạo hàng loạt', - saved: 'Đã lưu', - }, - savedNoData: { - title: 'Bạn chưa lưu kết quả nào!', - description: 'Bắt đầu tạo nội dung và tìm kết quả đã lưu của bạn ở đây.', - startCreateContent: 'Bắt đầu tạo nội dung', - }, - title: 'Hoàn thiện AI', - queryTitle: 'Nội dung truy vấn', - completionResult: 'Kết quả hoàn thiện', - queryPlaceholder: 'Nhập nội dung truy vấn của bạn...', - run: 'Thực thi', - copy: 'Sao chép', - resultTitle: 'Kết quả AI', - noData: 'AI sẽ hiển thị kết quả ở đây.', - csvUploadTitle: 'Kéo và thả tệp CSV của bạn vào đây, hoặc ', - browse: 'chọn tệp', - csvStructureTitle: 'Tệp CSV phải tuân thủ cấu trúc sau:', - downloadTemplate: 'Tải xuống mẫu tại đây', - field: 'Trường', - batchFailed: { - info: '{{num}} lần thực thi thất bại', - retry: 'Thử lại', - outputPlaceholder: 'Không có nội dung đầu ra', - }, - errorMsg: { - empty: 'Vui lòng nhập nội dung vào tệp đã tải lên.', - fileStructNotMatch: 'Cấu trúc tệp CSV tải lên không khớp.', - emptyLine: 'Dòng {{rowIndex}} trống', - invalidLine: 'Dòng {{rowIndex}}: {{varName}} không thể để trống', - moreThanMaxLengthLine: 'Dòng {{rowIndex}}: {{varName}} không thể chứa quá {{maxLength}} ký tự', - atLeastOne: 'Vui lòng nhập ít nhất một dòng vào tệp đã tải lên.', - }, - execution: 'Chạy', - executions: '{{num}} lần chạy', - stopRun: 'Dừng thực thi', - }, - login: { - backToHome: 'Trở về Trang Chủ', - }, -} - -export default translation diff --git a/web/i18n/vi-VN/time.json b/web/i18n/vi-VN/time.json new file mode 100644 index 0000000000..bacc520cf9 --- /dev/null +++ b/web/i18n/vi-VN/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Mon": "Môn", + "Sat": "Ngồi", + "Wed": "Thứ Tư", + "Sun": "Mặt trời", + "Tue": "Thứ Ba", + "Fri": "Thứ Sáu", + "Thu": "Thu" + }, + "months": { + "April": "Tháng Tư", + "June": "Tháng Sáu", + "September": "Tháng Chín", + "March": "Tháng Ba", + "February": "Tháng Hai", + "August": "Tháng Tám", + "May": "Tháng Năm", + "October": "Tháng Mười", + "December": "Tháng Mười Hai", + "January": "Tháng Một", + "July": "Tháng Bảy", + "November": "Tháng Mười Một" + }, + "operation": { + "ok": "Được rồi", + "pickDate": "Chọn Ngày", + "now": "Bây giờ", + "cancel": "Hủy bỏ" + }, + "title": { + "pickTime": "Chọn Thời Gian" + }, + "defaultPlaceholder": "Chọn một thời gian...", + "dateFormats": { + "input": "YYYY-MM-DD", + "displayWithTime": "MMMM D, YYYY hh:mm A", + "display": "MMMM D, YYYY", + "outputWithTime": "YYYY-MM-DDTHH:mm:ss.SSSZ", + "output": "YYYY-MM-DD" + } +} diff --git a/web/i18n/vi-VN/time.ts b/web/i18n/vi-VN/time.ts deleted file mode 100644 index 635b81e150..0000000000 --- a/web/i18n/vi-VN/time.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - daysInWeek: { - Mon: 'Môn', - Sat: 'Ngồi', - Wed: 'Thứ Tư', - Sun: 'Mặt trời', - Tue: 'Thứ Ba', - Fri: 'Thứ Sáu', - Thu: 'Thu', - }, - months: { - April: 'Tháng Tư', - June: 'Tháng Sáu', - September: 'Tháng Chín', - March: 'Tháng Ba', - February: 'Tháng Hai', - August: 'Tháng Tám', - May: 'Tháng Năm', - October: 'Tháng Mười', - December: 'Tháng Mười Hai', - January: 'Tháng Một', - July: 'Tháng Bảy', - November: 'Tháng Mười Một', - }, - operation: { - ok: 'Được rồi', - pickDate: 'Chọn Ngày', - now: 'Bây giờ', - cancel: 'Hủy bỏ', - }, - title: { - pickTime: 'Chọn Thời Gian', - }, - defaultPlaceholder: 'Chọn một thời gian...', - dateFormats: { - input: 'YYYY-MM-DD', - displayWithTime: 'MMMM D, YYYY hh:mm A', - display: 'MMMM D, YYYY', - outputWithTime: 'YYYY-MM-DDTHH:mm:ss.SSSZ', - output: 'YYYY-MM-DD', - }, -} - -export default translation diff --git a/web/i18n/vi-VN/tools.json b/web/i18n/vi-VN/tools.json new file mode 100644 index 0000000000..442b75c2c8 --- /dev/null +++ b/web/i18n/vi-VN/tools.json @@ -0,0 +1,262 @@ +{ + "title": "Công cụ", + "createCustomTool": "Tạo công cụ tùy chỉnh", + "type": { + "builtIn": "Tích hợp sẵn", + "custom": "Tùy chỉnh", + "workflow": "Quy trình làm việc" + }, + "contribute": { + "line1": "Tôi quan tâm đến việc ", + "line2": "đóng góp công cụ cho Dify.", + "viewGuide": "Xem hướng dẫn" + }, + "author": "Tác giả", + "auth": { + "authorized": "Đã xác thực", + "setup": "Thiết lập xác thực để sử dụng", + "setupModalTitle": "Thiết lập xác thực", + "setupModalTitleDescription": "Sau khi cấu hình thông tin đăng nhập, tất cả thành viên trong không gian làm việc có thể sử dụng công cụ này khi triển khai ứng dụng." + }, + "includeToolNum": "Bao gồm {{num}} công cụ", + "createTool": { + "title": "Tạo công cụ tùy chỉnh", + "editAction": "Cấu hình", + "editTitle": "Chỉnh sửa công cụ tùy chỉnh", + "name": "Tên", + "toolNamePlaceHolder": "Nhập tên công cụ", + "schema": "Schema", + "schemaPlaceHolder": "Nhập schema OpenAPI của bạn vào đây", + "viewSchemaSpec": "Xem chi tiết OpenAPI-Swagger", + "importFromUrl": "Nhập từ URL", + "importFromUrlPlaceHolder": "https://...", + "urlError": "Vui lòng nhập URL hợp lệ", + "examples": "Ví dụ", + "exampleOptions": { + "json": "Thời tiết (JSON)", + "yaml": "Cửa hàng thú cưng (YAML)", + "blankTemplate": "Mẫu trống" + }, + "availableTools": { + "title": "Công cụ hiện có", + "name": "Tên", + "description": "Mô tả", + "method": "Phương thức", + "path": "Đường dẫn", + "action": "Hành động", + "test": "Kiểm tra" + }, + "authMethod": { + "title": "Phương thức xác thực", + "type": "Loại xác thực", + "keyTooltip": "Khóa tiêu đề HTTP, bạn có thể để trống nếu không biết hoặc đặt một giá trị tùy chỉnh", + "types": { + "none": "Không", + "apiKeyPlaceholder": "Tên tiêu đề HTTP cho Khóa API", + "apiValuePlaceholder": "Nhập Khóa API", + "api_key_query": "Tham số truy vấn", + "api_key_header": "Tiêu đề", + "queryParamPlaceholder": "Tên tham số truy vấn cho khóa API" + }, + "key": "Khóa", + "value": "Giá trị", + "queryParam": "Tham số truy vấn", + "queryParamTooltip": "Tên tham số truy vấn của API key để truyền vào, ví dụ: \"key\" trong \"https://example.com/test?key=API_KEY\"." + }, + "authHeaderPrefix": { + "title": "Loại xác thực", + "types": { + "basic": "Cơ bản", + "bearer": "Bearer", + "custom": "Tùy chỉnh" + } + }, + "privacyPolicy": "Chính sách bảo mật", + "privacyPolicyPlaceholder": "Vui lòng nhập chính sách bảo mật", + "customDisclaimer": "Tuyên bố từ chối trách nhiệm tùy chỉnh", + "customDisclaimerPlaceholder": "Vui lòng nhập tuyên bố từ chối trách nhiệm tùy chỉnh", + "deleteToolConfirmTitle": "Xóa công cụ này?", + "deleteToolConfirmContent": "Xóa công cụ là không thể hoàn tác. Người dùng sẽ không thể truy cập lại công cụ của bạn.", + "toolInput": { + "label": "Tags", + "methodParameter": "Thông số", + "name": "Tên", + "descriptionPlaceholder": "Mô tả ý nghĩa của tham số", + "methodSetting": "Khung cảnh", + "title": "Công cụ nhập liệu", + "methodSettingTip": "Người dùng điền vào cấu hình công cụ", + "required": "Bắt buộc", + "method": "Phương pháp", + "methodParameterTip": "LLM lấp đầy trong quá trình suy luận", + "description": "Sự miêu tả", + "labelPlaceholder": "Chọn thẻ (tùy chọn)" + }, + "nameForToolCallTip": "Chỉ hỗ trợ số, chữ cái và dấu gạch dưới.", + "nameForToolCall": "Công cụ gọi tên", + "nameForToolCallPlaceHolder": "Được sử dụng để nhận dạng máy, chẳng hạn như getCurrentWeather, list_pets", + "descriptionPlaceholder": "Mô tả ngắn gọn về mục đích của công cụ, ví dụ: lấy nhiệt độ cho một vị trí cụ thể.", + "description": "Sự miêu tả", + "confirmTitle": "Xác nhận để lưu ?", + "confirmTip": "Các ứng dụng sử dụng công cụ này sẽ bị ảnh hưởng", + "toolOutput": { + "title": "Đầu ra của công cụ", + "name": "Tên", + "reserved": "Dành riêng", + "reservedParameterDuplicateTip": "text, json và files là các biến dành riêng. Các biến có tên này không thể xuất hiện trong sơ đồ đầu ra.", + "description": "Mô tả" + } + }, + "test": { + "title": "Kiểm tra", + "parametersValue": "Tham số & Giá trị", + "parameters": "Tham số", + "value": "Giá trị", + "testResult": "Kết quả kiểm tra", + "testResultPlaceholder": "Kết quả kiểm tra sẽ hiển thị ở đây" + }, + "thought": { + "using": "Đang sử dụng", + "used": "Đã sử dụng", + "requestTitle": "Yêu cầu đến", + "responseTitle": "Phản hồi từ" + }, + "setBuiltInTools": { + "info": "Thông tin", + "setting": "Cài đặt", + "toolDescription": "Mô tả công cụ", + "parameters": "Tham số", + "string": "chuỗi", + "number": "số", + "required": "Bắt buộc", + "infoAndSetting": "Thông tin & Cài đặt", + "file": "tệp" + }, + "noCustomTool": { + "title": "Chưa có công cụ tùy chỉnh!", + "content": "Thêm và quản lý các công cụ tùy chỉnh của bạn ở đây để xây dựng ứng dụng AI.", + "createTool": "Tạo công cụ" + }, + "noSearchRes": { + "title": "Xin lỗi, không có kết quả!", + "content": "Chúng tôi không tìm thấy công cụ nào phù hợp với tìm kiếm của bạn.", + "reset": "Đặt lại tìm kiếm" + }, + "builtInPromptTitle": "Lời nhắc", + "toolRemoved": "Công cụ đã bị xóa", + "notAuthorized": "Công cụ chưa được xác thực", + "howToGet": "Cách nhận", + "addToolModal": { + "category": "loại", + "type": "kiểu", + "added": "Thêm", + "custom": { + "title": "Không có công cụ tùy chỉnh nào", + "tip": "Tạo một công cụ tùy chỉnh" + }, + "workflow": { + "title": "Không có công cụ quy trình nào", + "tip": "Xuất bản các quy trình dưới dạng công cụ trong Studio" + }, + "mcp": { + "title": "Không có công cụ MCP nào", + "tip": "Thêm máy chủ MCP" + }, + "agent": { + "title": "Không có chiến lược đại lý nào" + } + }, + "toolNameUsageTip": "Tên cuộc gọi công cụ để lý luận và nhắc nhở tổng đài viên", + "customToolTip": "Tìm hiểu thêm về các công cụ tùy chỉnh Dify", + "openInStudio": "Mở trong Studio", + "noTools": "Không tìm thấy công cụ", + "copyToolName": "Sao chép tên", + "mcp": { + "create": { + "cardTitle": "Thêm Máy chủ MCP (HTTP)", + "cardLink": "Tìm hiểu thêm về tích hợp máy chủ MCP" + }, + "noConfigured": "Máy chủ Chưa được Cấu hình", + "updateTime": "Cập nhật", + "toolsCount": "{count} công cụ", + "noTools": "Không có công cụ nào", + "modal": { + "title": "Thêm Máy chủ MCP (HTTP)", + "editTitle": "Sửa Máy chủ MCP (HTTP)", + "name": "Tên & Biểu tượng", + "namePlaceholder": "Đặt tên máy chủ MCP", + "serverUrl": "URL Máy chủ", + "serverUrlPlaceholder": "URL đến điểm cuối máy chủ", + "serverUrlWarning": "Cập nhật địa chỉ máy chủ có thể làm gián đoạn ứng dụng phụ thuộc vào máy chủ này", + "serverIdentifier": "Định danh Máy chủ", + "serverIdentifierTip": "Định danh duy nhất cho máy chủ MCP trong không gian làm việc. Chỉ chữ thường, số, gạch dưới và gạch ngang. Tối đa 24 ký tự.", + "serverIdentifierPlaceholder": "Định danh duy nhất, VD: my-mcp-server", + "serverIdentifierWarning": "Máy chủ sẽ không được nhận diện bởi ứng dụng hiện có sau khi thay đổi ID", + "cancel": "Hủy", + "save": "Lưu", + "confirm": "Thêm & Ủy quyền", + "sseReadTimeout": "Thời gian chờ Đọc SSE", + "timeout": "Thời gian chờ", + "headerKeyPlaceholder": "ví dụ, Ủy quyền", + "timeoutPlaceholder": "ba mươi", + "addHeader": "Thêm tiêu đề", + "headers": "Tiêu đề", + "headerValuePlaceholder": "ví dụ: mã thông báo Bearer123", + "headerKey": "Tên tiêu đề", + "noHeaders": "Không có tiêu đề tùy chỉnh nào được cấu hình", + "headerValue": "Giá trị tiêu đề", + "maskedHeadersTip": "Các giá trị tiêu đề được mã hóa để đảm bảo an ninh. Các thay đổi sẽ cập nhật các giá trị thực tế.", + "headersTip": "Các tiêu đề HTTP bổ sung để gửi cùng với các yêu cầu máy chủ MCP", + "authentication": "Xác thực", + "clientSecret": "Bí mật của khách hàng", + "clientID": "ID khách hàng", + "configurations": "Cấu hình", + "useDynamicClientRegistration": "Sử dụng Đăng ký Khách hàng Động", + "clientSecretPlaceholder": "Bí mật của khách hàng", + "redirectUrlWarning": "Vui lòng cấu hình URL chuyển hướng OAuth của bạn thành:" + }, + "delete": "Xóa Máy chủ MCP", + "deleteConfirmTitle": "Xóa {mcp}?", + "operation": { + "edit": "Sửa", + "remove": "Xóa" + }, + "authorize": "Ủy quyền", + "authorizing": "Đang ủy quyền...", + "authorizingRequired": "Cần ủy quyền", + "authorizeTip": "Sau khi ủy quyền, công cụ sẽ hiển thị tại đây.", + "update": "Cập nhật", + "updating": "Đang cập nhật...", + "gettingTools": "Đang lấy công cụ...", + "updateTools": "Đang cập nhật công cụ...", + "toolsEmpty": "Công cụ chưa tải", + "getTools": "Lấy công cụ", + "toolUpdateConfirmTitle": "Cập nhật Danh sách Công cụ", + "toolUpdateConfirmContent": "Cập nhật danh sách công cụ có thể ảnh hưởng ứng dụng hiện có. Tiếp tục?", + "toolsNum": "Bao gồm {count} công cụ", + "onlyTool": "Bao gồm 1 công cụ", + "identifier": "Định danh Máy chủ (Nhấn để Sao chép)", + "server": { + "title": "Máy chủ MCP", + "url": "URL Máy chủ", + "reGen": "Tạo lại URL máy chủ?", + "addDescription": "Thêm mô tả", + "edit": "Sửa mô tả", + "modal": { + "addTitle": "Thêm mô tả để kích hoạt máy chủ MCP", + "editTitle": "Sửa mô tả", + "description": "Mô tả", + "descriptionPlaceholder": "Giải thích chức năng công cụ và cách LLM sử dụng", + "parameters": "Tham số", + "parametersTip": "Thêm mô tả cho từng tham số để giúp LLM hiểu mục đích và ràng buộc.", + "parametersPlaceholder": "Mục đích và ràng buộc của tham số", + "confirm": "Kích hoạt Máy chủ MCP" + }, + "publishTip": "Ứng dụng chưa xuất bản. Vui lòng xuất bản ứng dụng trước." + }, + "toolItem": { + "parameters": "Các thông số", + "noDescription": "Không có mô tả" + } + }, + "allTools": "Tất cả các công cụ" +} diff --git a/web/i18n/vi-VN/tools.ts b/web/i18n/vi-VN/tools.ts deleted file mode 100644 index e333126a0d..0000000000 --- a/web/i18n/vi-VN/tools.ts +++ /dev/null @@ -1,264 +0,0 @@ -const translation = { - title: 'Công cụ', - createCustomTool: 'Tạo công cụ tùy chỉnh', - type: { - builtIn: 'Tích hợp sẵn', - custom: 'Tùy chỉnh', - workflow: 'Quy trình làm việc', - }, - contribute: { - line1: 'Tôi quan tâm đến việc ', - line2: 'đóng góp công cụ cho Dify.', - viewGuide: 'Xem hướng dẫn', - }, - author: 'Tác giả', - auth: { - authorized: 'Đã xác thực', - setup: 'Thiết lập xác thực để sử dụng', - setupModalTitle: 'Thiết lập xác thực', - setupModalTitleDescription: 'Sau khi cấu hình thông tin đăng nhập, tất cả thành viên trong không gian làm việc có thể sử dụng công cụ này khi triển khai ứng dụng.', - }, - includeToolNum: 'Bao gồm {{num}} công cụ', - createTool: { - title: 'Tạo công cụ tùy chỉnh', - editAction: 'Cấu hình', - editTitle: 'Chỉnh sửa công cụ tùy chỉnh', - name: 'Tên', - toolNamePlaceHolder: 'Nhập tên công cụ', - schema: 'Schema', - schemaPlaceHolder: 'Nhập schema OpenAPI của bạn vào đây', - viewSchemaSpec: 'Xem chi tiết OpenAPI-Swagger', - importFromUrl: 'Nhập từ URL', - importFromUrlPlaceHolder: 'https://...', - urlError: 'Vui lòng nhập URL hợp lệ', - examples: 'Ví dụ', - exampleOptions: { - json: 'Thời tiết (JSON)', - yaml: 'Cửa hàng thú cưng (YAML)', - blankTemplate: 'Mẫu trống', - }, - availableTools: { - title: 'Công cụ hiện có', - name: 'Tên', - description: 'Mô tả', - method: 'Phương thức', - path: 'Đường dẫn', - action: 'Hành động', - test: 'Kiểm tra', - }, - authMethod: { - title: 'Phương thức xác thực', - type: 'Loại xác thực', - keyTooltip: 'Khóa tiêu đề HTTP, bạn có thể để trống nếu không biết hoặc đặt một giá trị tùy chỉnh', - types: { - none: 'Không', - apiKeyPlaceholder: 'Tên tiêu đề HTTP cho Khóa API', - apiValuePlaceholder: 'Nhập Khóa API', - api_key_query: 'Tham số truy vấn', - api_key_header: 'Tiêu đề', - queryParamPlaceholder: 'Tên tham số truy vấn cho khóa API', - }, - key: 'Khóa', - value: 'Giá trị', - queryParam: 'Tham số truy vấn', - queryParamTooltip: 'Tên tham số truy vấn của API key để truyền vào, ví dụ: "key" trong "https://example.com/test?key=API_KEY".', - }, - authHeaderPrefix: { - title: 'Loại xác thực', - types: { - basic: 'Cơ bản', - bearer: 'Bearer', - custom: 'Tùy chỉnh', - }, - }, - privacyPolicy: 'Chính sách bảo mật', - privacyPolicyPlaceholder: 'Vui lòng nhập chính sách bảo mật', - customDisclaimer: 'Tuyên bố từ chối trách nhiệm tùy chỉnh', - customDisclaimerPlaceholder: 'Vui lòng nhập tuyên bố từ chối trách nhiệm tùy chỉnh', - deleteToolConfirmTitle: 'Xóa công cụ này?', - deleteToolConfirmContent: 'Xóa công cụ là không thể hoàn tác. Người dùng sẽ không thể truy cập lại công cụ của bạn.', - toolInput: { - label: 'Tags', - methodParameter: 'Thông số', - name: 'Tên', - descriptionPlaceholder: 'Mô tả ý nghĩa của tham số', - methodSetting: 'Khung cảnh', - title: 'Công cụ nhập liệu', - methodSettingTip: 'Người dùng điền vào cấu hình công cụ', - required: 'Bắt buộc', - method: 'Phương pháp', - methodParameterTip: 'LLM lấp đầy trong quá trình suy luận', - description: 'Sự miêu tả', - labelPlaceholder: 'Chọn thẻ (tùy chọn)', - }, - nameForToolCallTip: 'Chỉ hỗ trợ số, chữ cái và dấu gạch dưới.', - nameForToolCall: 'Công cụ gọi tên', - nameForToolCallPlaceHolder: 'Được sử dụng để nhận dạng máy, chẳng hạn như getCurrentWeather, list_pets', - descriptionPlaceholder: 'Mô tả ngắn gọn về mục đích của công cụ, ví dụ: lấy nhiệt độ cho một vị trí cụ thể.', - description: 'Sự miêu tả', - confirmTitle: 'Xác nhận để lưu ?', - confirmTip: 'Các ứng dụng sử dụng công cụ này sẽ bị ảnh hưởng', - toolOutput: { - title: 'Đầu ra của công cụ', - name: 'Tên', - reserved: 'Dành riêng', - reservedParameterDuplicateTip: 'text, json và files là các biến dành riêng. Các biến có tên này không thể xuất hiện trong sơ đồ đầu ra.', - description: 'Mô tả', - }, - }, - test: { - title: 'Kiểm tra', - parametersValue: 'Tham số & Giá trị', - parameters: 'Tham số', - value: 'Giá trị', - testResult: 'Kết quả kiểm tra', - testResultPlaceholder: 'Kết quả kiểm tra sẽ hiển thị ở đây', - }, - thought: { - using: 'Đang sử dụng', - used: 'Đã sử dụng', - requestTitle: 'Yêu cầu đến', - responseTitle: 'Phản hồi từ', - }, - setBuiltInTools: { - info: 'Thông tin', - setting: 'Cài đặt', - toolDescription: 'Mô tả công cụ', - parameters: 'Tham số', - string: 'chuỗi', - number: 'số', - required: 'Bắt buộc', - infoAndSetting: 'Thông tin & Cài đặt', - file: 'tệp', - }, - noCustomTool: { - title: 'Chưa có công cụ tùy chỉnh!', - content: 'Thêm và quản lý các công cụ tùy chỉnh của bạn ở đây để xây dựng ứng dụng AI.', - createTool: 'Tạo công cụ', - }, - noSearchRes: { - title: 'Xin lỗi, không có kết quả!', - content: 'Chúng tôi không tìm thấy công cụ nào phù hợp với tìm kiếm của bạn.', - reset: 'Đặt lại tìm kiếm', - }, - builtInPromptTitle: 'Lời nhắc', - toolRemoved: 'Công cụ đã bị xóa', - notAuthorized: 'Công cụ chưa được xác thực', - howToGet: 'Cách nhận', - addToolModal: { - category: 'loại', - type: 'kiểu', - added: 'Thêm', - custom: { - title: 'Không có công cụ tùy chỉnh nào', - tip: 'Tạo một công cụ tùy chỉnh', - }, - workflow: { - title: 'Không có công cụ quy trình nào', - tip: 'Xuất bản các quy trình dưới dạng công cụ trong Studio', - }, - mcp: { - title: 'Không có công cụ MCP nào', - tip: 'Thêm máy chủ MCP', - }, - agent: { - title: 'Không có chiến lược đại lý nào', - }, - }, - toolNameUsageTip: 'Tên cuộc gọi công cụ để lý luận và nhắc nhở tổng đài viên', - customToolTip: 'Tìm hiểu thêm về các công cụ tùy chỉnh Dify', - openInStudio: 'Mở trong Studio', - noTools: 'Không tìm thấy công cụ', - copyToolName: 'Sao chép tên', - mcp: { - create: { - cardTitle: 'Thêm Máy chủ MCP (HTTP)', - cardLink: 'Tìm hiểu thêm về tích hợp máy chủ MCP', - }, - noConfigured: 'Máy chủ Chưa được Cấu hình', - updateTime: 'Cập nhật', - toolsCount: '{count} công cụ', - noTools: 'Không có công cụ nào', - modal: { - title: 'Thêm Máy chủ MCP (HTTP)', - editTitle: 'Sửa Máy chủ MCP (HTTP)', - name: 'Tên & Biểu tượng', - namePlaceholder: 'Đặt tên máy chủ MCP', - serverUrl: 'URL Máy chủ', - serverUrlPlaceholder: 'URL đến điểm cuối máy chủ', - serverUrlWarning: 'Cập nhật địa chỉ máy chủ có thể làm gián đoạn ứng dụng phụ thuộc vào máy chủ này', - serverIdentifier: 'Định danh Máy chủ', - serverIdentifierTip: 'Định danh duy nhất cho máy chủ MCP trong không gian làm việc. Chỉ chữ thường, số, gạch dưới và gạch ngang. Tối đa 24 ký tự.', - serverIdentifierPlaceholder: 'Định danh duy nhất, VD: my-mcp-server', - serverIdentifierWarning: 'Máy chủ sẽ không được nhận diện bởi ứng dụng hiện có sau khi thay đổi ID', - cancel: 'Hủy', - save: 'Lưu', - confirm: 'Thêm & Ủy quyền', - sseReadTimeout: 'Thời gian chờ Đọc SSE', - timeout: 'Thời gian chờ', - headerKeyPlaceholder: 'ví dụ, Ủy quyền', - timeoutPlaceholder: 'ba mươi', - addHeader: 'Thêm tiêu đề', - headers: 'Tiêu đề', - headerValuePlaceholder: 'ví dụ: mã thông báo Bearer123', - headerKey: 'Tên tiêu đề', - noHeaders: 'Không có tiêu đề tùy chỉnh nào được cấu hình', - headerValue: 'Giá trị tiêu đề', - maskedHeadersTip: 'Các giá trị tiêu đề được mã hóa để đảm bảo an ninh. Các thay đổi sẽ cập nhật các giá trị thực tế.', - headersTip: 'Các tiêu đề HTTP bổ sung để gửi cùng với các yêu cầu máy chủ MCP', - authentication: 'Xác thực', - clientSecret: 'Bí mật của khách hàng', - clientID: 'ID khách hàng', - configurations: 'Cấu hình', - useDynamicClientRegistration: 'Sử dụng Đăng ký Khách hàng Động', - clientSecretPlaceholder: 'Bí mật của khách hàng', - redirectUrlWarning: 'Vui lòng cấu hình URL chuyển hướng OAuth của bạn thành:', - }, - delete: 'Xóa Máy chủ MCP', - deleteConfirmTitle: 'Xóa {mcp}?', - operation: { - edit: 'Sửa', - remove: 'Xóa', - }, - authorize: 'Ủy quyền', - authorizing: 'Đang ủy quyền...', - authorizingRequired: 'Cần ủy quyền', - authorizeTip: 'Sau khi ủy quyền, công cụ sẽ hiển thị tại đây.', - update: 'Cập nhật', - updating: 'Đang cập nhật...', - gettingTools: 'Đang lấy công cụ...', - updateTools: 'Đang cập nhật công cụ...', - toolsEmpty: 'Công cụ chưa tải', - getTools: 'Lấy công cụ', - toolUpdateConfirmTitle: 'Cập nhật Danh sách Công cụ', - toolUpdateConfirmContent: 'Cập nhật danh sách công cụ có thể ảnh hưởng ứng dụng hiện có. Tiếp tục?', - toolsNum: 'Bao gồm {count} công cụ', - onlyTool: 'Bao gồm 1 công cụ', - identifier: 'Định danh Máy chủ (Nhấn để Sao chép)', - server: { - title: 'Máy chủ MCP', - url: 'URL Máy chủ', - reGen: 'Tạo lại URL máy chủ?', - addDescription: 'Thêm mô tả', - edit: 'Sửa mô tả', - modal: { - addTitle: 'Thêm mô tả để kích hoạt máy chủ MCP', - editTitle: 'Sửa mô tả', - description: 'Mô tả', - descriptionPlaceholder: 'Giải thích chức năng công cụ và cách LLM sử dụng', - parameters: 'Tham số', - parametersTip: 'Thêm mô tả cho từng tham số để giúp LLM hiểu mục đích và ràng buộc.', - parametersPlaceholder: 'Mục đích và ràng buộc của tham số', - confirm: 'Kích hoạt Máy chủ MCP', - }, - publishTip: 'Ứng dụng chưa xuất bản. Vui lòng xuất bản ứng dụng trước.', - }, - toolItem: { - parameters: 'Các thông số', - noDescription: 'Không có mô tả', - }, - }, - allTools: 'Tất cả các công cụ', -} - -export default translation diff --git a/web/i18n/vi-VN/workflow.json b/web/i18n/vi-VN/workflow.json new file mode 100644 index 0000000000..cf98e57106 --- /dev/null +++ b/web/i18n/vi-VN/workflow.json @@ -0,0 +1,1294 @@ +{ + "common": { + "undo": "Hoàn tác", + "redo": "Làm lại", + "editing": "Đang chỉnh sửa", + "autoSaved": "Đã tự động lưu", + "unpublished": "Chưa xuất bản", + "published": "Đã xuất bản", + "publish": "Xuất bản", + "update": "Cập nhật", + "run": "Chạy thử nghiệm", + "running": "Đang chạy", + "inRunMode": "Chế độ chạy", + "inPreview": "Trong chế độ xem trước", + "inPreviewMode": "Chế độ xem trước", + "preview": "Xem trước", + "viewRunHistory": "Xem lịch sử chạy", + "runHistory": "Lịch sử chạy", + "goBackToEdit": "Quay lại trình chỉnh sửa", + "conversationLog": "Nhật ký cuộc trò chuyện", + "debugAndPreview": "Xem trước", + "restart": "Khởi động lại", + "currentDraft": "Bản nháp hiện tại", + "currentDraftUnpublished": "Bản nháp hiện tại chưa xuất bản", + "latestPublished": "Xuất bản mới nhất", + "publishedAt": "Đã xuất bản lúc", + "restore": "Khôi phục", + "runApp": "Chạy ứng dụng", + "batchRunApp": "Chạy ứng dụng hàng loạt", + "accessAPIReference": "Truy cập tài liệu API", + "embedIntoSite": "Nhúng vào trang web", + "addTitle": "Thêm tiêu đề...", + "addDescription": "Thêm mô tả...", + "noVar": "Không có biến", + "searchVar": "Tìm kiếm biến", + "variableNamePlaceholder": "Tên biến", + "setVarValuePlaceholder": "Đặt giá trị biến", + "needConnectTip": "Bước này không được kết nối với bất kỳ điều gì", + "maxTreeDepth": "Giới hạn tối đa {{depth}} nút trên mỗi nhánh", + "workflowProcess": "Quy trình làm việc", + "notRunning": "Chưa chạy", + "previewPlaceholder": "Nhập nội dung vào hộp bên dưới để bắt đầu gỡ lỗi Chatbot", + "effectVarConfirm": { + "title": "Xóa biến", + "content": "Biến được sử dụng trong các nút khác. Bạn có chắc chắn muốn xóa nó không?" + }, + "insertVarTip": "Nhấn phím '/' để chèn nhanh", + "processData": "Xử lý dữ liệu", + "input": "Đầu vào", + "output": "Đầu ra", + "jinjaEditorPlaceholder": "Gõ '/' hoặc '{' để chèn biến", + "viewOnly": "Chỉ xem", + "showRunHistory": "Hiển thị lịch sử chạy", + "enableJinja": "Bật hỗ trợ mẫu Jinja", + "learnMore": "Tìm hiểu thêm", + "copy": "Sao chép", + "duplicate": "Nhân bản", + "pasteHere": "Dán vào đây", + "pointerMode": "Chế độ con trỏ", + "handMode": "Chế độ tay", + "model": "Mô hình", + "workflowAsTool": "Quy trình làm việc như công cụ", + "configureRequired": "Yêu cầu cấu hình", + "configure": "Cấu hình", + "manageInTools": "Quản lý trong công cụ", + "workflowAsToolTip": "Cần cấu hình lại công cụ sau khi cập nhật quy trình làm việc.", + "viewDetailInTracingPanel": "Xem chi tiết", + "importSuccess": "Nhập thành công", + "backupCurrentDraft": "Sao lưu dự thảo hiện tại", + "chooseDSL": "Chọn tệp DSL(yml)", + "importDSLTip": "Dự thảo hiện tại sẽ bị ghi đè. Xuất quy trình làm việc dưới dạng bản sao lưu trước khi nhập.", + "importFailure": "Nhập không thành công", + "overwriteAndImport": "Ghi đè và nhập", + "importDSL": "Nhập DSL", + "syncingData": "Đồng bộ hóa dữ liệu, chỉ vài giây.", + "parallelTip": { + "click": { + "title": "Bấm", + "desc": "để thêm" + }, + "drag": { + "title": "Kéo", + "desc": "Để kết nối" + }, + "limit": "Song song được giới hạn trong các nhánh {{num}}.", + "depthLimit": "Giới hạn lớp lồng song song của {{num}} layer" + }, + "disconnect": "Ngắt kết nối", + "jumpToNode": "Chuyển đến nút này", + "addParallelNode": "Thêm nút song song", + "parallel": "SONG SONG", + "branch": "NHÁNH", + "fileUploadTip": "Các tính năng tải lên hình ảnh đã được nâng cấp để tải tệp lên.", + "ImageUploadLegacyTip": "Bây giờ bạn có thể tạo các biến loại tệp trong biểu mẫu bắt đầu. Chúng tôi sẽ không còn hỗ trợ tính năng tải lên hình ảnh trong tương lai.", + "importWarning": "Thận trọng", + "importWarningDetails": "Sự khác biệt về phiên bản DSL có thể ảnh hưởng đến một số tính năng nhất định", + "openInExplore": "Mở trong Khám phá", + "onFailure": "Khi thất bại", + "addFailureBranch": "Thêm nhánh Fail", + "loadMore": "Tải thêm quy trình làm việc", + "noHistory": "Không có lịch sử", + "versionHistory": "Lịch sử phiên bản", + "publishUpdate": "Cập nhật xuất bản", + "exportSVG": "Xuất dưới dạng SVG", + "exitVersions": "Phiên bản thoát", + "exportImage": "Xuất hình ảnh", + "exportPNG": "Xuất dưới dạng PNG", + "exportJPEG": "Xuất dưới dạng JPEG", + "needAnswerNode": "Nút Trả lời phải được thêm vào", + "addBlock": "Thêm Node", + "needOutputNode": "Phải thêm nút Đầu ra", + "tagBound": "Số lượng ứng dụng sử dụng thẻ này", + "currentWorkflow": "Quy trình làm việc hiện tại", + "currentView": "Hiện tại View", + "moreActions": "Hành động khác", + "listening": "Nghe", + "chooseStartNodeToRun": "Chọn nút bắt đầu để chạy", + "runAllTriggers": "Chạy tất cả các trình kích hoạt", + "features": "Tính năng", + "featuresDescription": "Cải thiện trải nghiệm người dùng trên ứng dụng web", + "featuresDocLink": "Tìm hiểu thêm", + "needAdd": "Phải thêm nút {{node}}", + "needStartNode": "Phải thêm ít nhất một nút bắt đầu", + "workflowAsToolDisabledHint": "Xuất bản quy trình làm việc mới nhất và đảm bảo một nút Nhập liệu Người dùng kết nối trước khi cấu hình nó như một công cụ." + }, + "env": { + "envPanelTitle": "Biến Môi Trường", + "envDescription": "Biến môi trường có thể được sử dụng để lưu trữ thông tin cá nhân và thông tin xác thực. Chúng chỉ được đọc và có thể được tách khỏi tệp DSL trong quá trình xuất.", + "envPanelButton": "Thêm Biến", + "modal": { + "title": "Thêm Biến Môi Trường", + "editTitle": "Sửa Biến Môi Trường", + "type": "Loại", + "name": "Tên", + "namePlaceholder": "tên môi trường", + "value": "Giá trị", + "valuePlaceholder": "giá trị môi trường", + "secretTip": "Được sử dụng để xác định thông tin hoặc dữ liệu nhạy cảm, với cài đặt DSL được cấu hình để ngăn chặn rò rỉ.", + "description": "Mô tả", + "descriptionPlaceholder": "Mô tả biến" + }, + "export": { + "title": "Xuất biến môi trường bí mật?", + "checkbox": "Xuất giá trị bí mật", + "ignore": "Xuất DSL", + "export": "Xuất DSL với giá trị bí mật" + } + }, + "globalVar": { + "title": "Biến hệ thống", + "description": "Biến hệ thống là biến toàn cục mà bất kỳ nút nào cũng có thể tham chiếu mà không cần nối dây khi kiểu dữ liệu phù hợp, chẳng hạn như ID người dùng cuối và ID quy trình làm việc.", + "fieldsDescription": { + "conversationId": "ID cuộc trò chuyện", + "dialogCount": "Số lần trò chuyện", + "userId": "ID người dùng", + "triggerTimestamp": "Dấu thời gian ứng dụng bắt đầu chạy", + "appId": "ID ứng dụng", + "workflowId": "ID quy trình làm việc", + "workflowRunId": "ID lần chạy quy trình làm việc" + } + }, + "chatVariable": { + "panelTitle": "Biến Hội Thoại", + "panelDescription": "Biến Hội Thoại được sử dụng để lưu trữ thông tin tương tác mà LLM cần ghi nhớ, bao gồm lịch sử hội thoại, tệp đã tải lên, tùy chọn người dùng. Chúng có thể đọc và ghi được.", + "docLink": "Truy cập tài liệu của chúng tôi để tìm hiểu thêm.", + "button": "Thêm Biến", + "modal": { + "title": "Thêm Biến Hội Thoại", + "editTitle": "Chỉnh Sửa Biến Hội Thoại", + "name": "Tên", + "namePlaceholder": "Tên biến", + "type": "Loại", + "value": "Giá Trị Mặc Định", + "valuePlaceholder": "Giá trị mặc định, để trống nếu không đặt", + "description": "Mô tả", + "descriptionPlaceholder": "Mô tả biến", + "editInJSON": "Chỉnh sửa dưới dạng JSON", + "oneByOne": "Thêm từng cái một", + "editInForm": "Chỉnh sửa trong Biểu mẫu", + "arrayValue": "Giá trị", + "addArrayValue": "Thêm Giá trị", + "objectKey": "Khóa", + "objectType": "Loại", + "objectValue": "Giá Trị Mặc Định" + }, + "storedContent": "Nội dung đã lưu", + "updatedAt": "Cập nhật lúc " + }, + "changeHistory": { + "title": "Lịch sử thay đổi", + "placeholder": "Bạn chưa thay đổi gì cả", + "clearHistory": "Xóa lịch sử", + "hint": "Gợi ý", + "hintText": "Các hành động chỉnh sửa của bạn được theo dõi trong lịch sử thay đổi, được lưu trên thiết bị của bạn trong suốt phiên làm việc này. Lịch sử này sẽ bị xóa khi bạn thoát khỏi trình soạn thảo.", + "stepBackward_one": "{{count}} bước lùi", + "stepBackward_other": "{{count}} bước lùi", + "stepForward_one": "{{count}} bước tiến", + "stepForward_other": "{{count}} bước tiến", + "sessionStart": "Bắt đầu phiên", + "currentState": "Trạng thái hiện tại", + "noteAdd": "Ghi chú đã thêm", + "noteChange": "Ghi chú đã thay đổi", + "noteDelete": "Ghi chú đã xóa", + "nodeAdd": "Đã thêm nút", + "nodeChange": "Node đã thay đổi", + "nodeDescriptionChange": "Mô tả nút đã thay đổi", + "nodeTitleChange": "Tiêu đề nút đã được thay đổi", + "nodeDelete": "Nút đã bị xóa", + "nodeDragStop": "Nút đã được di chuyển", + "nodeConnect": "Nút đã kết nối", + "nodeResize": "Kích thước nút đã được thay đổi", + "nodePaste": "Node đã dán", + "edgeDelete": "Nút đã bị ngắt kết nối" + }, + "errorMsg": { + "fieldRequired": "{{field}} là bắt buộc", + "authRequired": "Yêu cầu xác thực", + "invalidJson": "{{field}} là JSON không hợp lệ", + "fields": { + "variable": "Tên biến", + "variableValue": "Giá trị biến", + "code": "Mã", + "model": "Mô hình", + "rerankModel": "Mô hình xếp hạng lại", + "visionVariable": "Biến tầm nhìn" + }, + "invalidVariable": "Biến không hợp lệ", + "rerankModelRequired": "Trước khi bật Mô hình xếp hạng lại, vui lòng xác nhận rằng mô hình đã được định cấu hình thành công trong cài đặt.", + "noValidTool": "{{field}} không chọn công cụ hợp lệ nào", + "toolParameterRequired": "{{field}}: tham số [{{param}}] là bắt buộc", + "startNodeRequired": "Vui lòng thêm một nút bắt đầu trước {{operation}}" + }, + "singleRun": { + "testRun": "Chạy thử nghiệm ", + "startRun": "Bắt đầu chạy", + "running": "Đang chạy", + "testRunIteration": "Lặp chạy thử nghiệm", + "back": "Quay lại", + "iteration": "Lặp", + "loop": "Vòng", + "reRun": "Chạy lại", + "preparingDataSource": "Chuẩn bị nguồn dữ liệu" + }, + "tabs": { + "tools": "Công cụ", + "allTool": "Tất cả", + "customTool": "Tùy chỉnh", + "workflowTool": "Quy trình làm việc", + "question-understand": "Hiểu câu hỏi", + "logic": "Logic", + "transform": "Chuyển đổi", + "utilities": "Tiện ích", + "noResult": "Không tìm thấy kế. t quả phù hợp", + "searchTool": "Công cụ tìm kiếm", + "agent": "Chiến lược đại lý", + "plugin": "Plugin", + "blocks": "Nút", + "searchBlock": "Tìm kiếm nút", + "allAdded": "Tất cả đã được thêm vào", + "addAll": "Thêm tất cả", + "sources": "Nguồn", + "searchDataSource": "Tìm kiếm nguồn dữ liệu", + "start": "Bắt đầu", + "searchTrigger": "Tìm kiếm kích hoạt...", + "allTriggers": "Tất cả các trình kích hoạt", + "noPluginsFound": "Không tìm thấy plugin nào", + "requestToCommunity": "Yêu cầu gửi đến cộng đồng", + "featuredTools": "Nổi bật", + "showMoreFeatured": "Hiển thị thêm", + "showLessFeatured": "Hiện ít hơn", + "installed": "Đã cài đặt", + "pluginByAuthor": "Bởi {{author}}", + "usePlugin": "Chọn công cụ", + "hideActions": "Ẩn công cụ", + "noFeaturedPlugins": "Khám phá thêm các công cụ trong Marketplace", + "noFeaturedTriggers": "Khám phá thêm các yếu tố kích hoạt trong Marketplace", + "startDisabledTip": "Nút kích hoạt và nút nhập liệu của người dùng là loại trừ lẫn nhau." + }, + "blocks": { + "start": "Bắt đầu", + "end": "Đầu ra", + "answer": "Trả lời", + "llm": "LLM", + "knowledge-retrieval": "Truy xuất kiến thức", + "question-classifier": "Phân loại câu hỏi", + "if-else": "NẾU/NGƯỢC LẠI", + "code": "Mã", + "template-transform": "Mẫu", + "http-request": "Yêu cầu HTTP", + "variable-assigner": "Trình gán biến", + "variable-aggregator": "Trình tổng hợp biến", + "assigner": "Trình gán biến", + "iteration-start": "Bắt đầu lặp", + "iteration": "Lặp", + "parameter-extractor": "Trình trích xuất tham số", + "list-operator": "Toán tử danh sách", + "document-extractor": "Trình trích xuất tài liệu", + "agent": "Người đại lý", + "loop": "Vòng", + "loop-end": "Thoát vòng lặp", + "loop-start": "Bắt đầu vòng lặp", + "datasource": "Nguồn dữ liệu", + "knowledge-index": "Cơ sở kiến thức", + "originalStartNode": "nút bắt đầu gốc", + "trigger-schedule": "Kích hoạt theo lịch", + "trigger-webhook": "Kích hoạt Webhook", + "trigger-plugin": "Kích hoạt Plugin" + }, + "blocksAbout": { + "start": "Định nghĩa các tham số ban đầu để khởi chạy quy trình làm việc", + "end": "Định nghĩa đầu ra và loại kết quả của quy trình làm việc", + "answer": "Định nghĩa nội dung trả lời của cuộc trò chuyện", + "llm": "Gọi các mô hình ngôn ngữ lớn để trả lời câu hỏi hoặc xử lý ngôn ngữ tự nhiên", + "knowledge-retrieval": "Cho phép truy vấn nội dung văn bản liên quan đến câu hỏi của người dùng từ cơ sở kiến thức", + "question-classifier": "Định nghĩa các điều kiện phân loại câu hỏi của người dùng, LLM có thể định nghĩa cách cuộc trò chuyện tiến triển dựa trên mô tả phân loại", + "if-else": "Cho phép phân chia quy trình làm việc thành hai nhánh dựa trên điều kiện if/else", + "code": "Thực thi một đoạn mã Python hoặc NodeJS để thực hiện logic tùy chỉnh", + "template-transform": "Chuyển đổi dữ liệu thành chuỗi bằng cú pháp mẫu Jinja", + "http-request": "Cho phép gửi các yêu cầu máy chủ qua giao thức HTTP", + "variable-assigner": "Tổng hợp các biến từ nhiều nhánh thành một biến duy nhất để cấu hình đồng nhất các nút cuối.", + "assigner": "Nút gán biến được sử dụng để gán giá trị cho các biến có thể ghi (như các biến hội thoại).", + "variable-aggregator": "Tổng hợp các biến từ nhiều nhánh thành một biến duy nhất để cấu hình đồng nhất các nút cuối.", + "iteration": "Thực hiện nhiều bước trên một đối tượng danh sách cho đến khi tất cả các kết quả được xuất ra.", + "parameter-extractor": "Sử dụng LLM để trích xuất các tham số có cấu trúc từ ngôn ngữ tự nhiên để gọi công cụ hoặc yêu cầu HTTP.", + "document-extractor": "Được sử dụng để phân tích cú pháp các tài liệu đã tải lên thành nội dung văn bản dễ hiểu bởi LLM.", + "list-operator": "Được sử dụng để lọc hoặc sắp xếp nội dung mảng.", + "agent": "Gọi các mô hình ngôn ngữ lớn để trả lời câu hỏi hoặc xử lý ngôn ngữ tự nhiên", + "loop": "Thực hiện một vòng lặp logic cho đến khi điều kiện dừng được đáp ứng hoặc số lần lặp tối đa được đạt.", + "loop-end": "Tương đương với \"dừng lại\". Nút này không có các mục cấu hình. Khi thân vòng lặp đến nút này, vòng lặp sẽ kết thúc.", + "datasource": "Nguồn dữ liệu Giới thiệu", + "knowledge-index": "Cơ sở kiến thức về", + "trigger-schedule": "Trình kích hoạt quy trình làm việc theo thời gian bắt đầu các quy trình làm việc theo lịch", + "trigger-webhook": "Webhook Trigger nhận các yêu cầu HTTP từ các hệ thống bên thứ ba để tự động kích hoạt các quy trình làm việc.", + "trigger-plugin": "Kích hoạt tích hợp bên thứ ba khởi chạy quy trình từ các sự kiện trên nền tảng bên ngoài" + }, + "operator": { + "zoomIn": "Phóng to", + "zoomOut": "Thu nhỏ", + "zoomTo50": "Phóng to 50%", + "zoomTo100": "Phóng to 100%", + "zoomToFit": "Phóng to vừa màn hình", + "alignBottom": "Dưới", + "alignMiddle": "Giữa", + "alignRight": "Phải", + "alignNodes": "Căn chỉnh các nút", + "alignLeft": "Trái", + "horizontal": "Ngang", + "alignCenter": "Giữa", + "alignTop": "Trên", + "distributeVertical": "Phân bố theo chiều dọc", + "selectionAlignment": "Căn chỉnh lựa chọn", + "distributeHorizontal": "Phân bố theo chiều ngang", + "vertical": "Dọc" + }, + "panel": { + "userInputField": "Trường đầu vào của người dùng", + "helpLink": "Trung tâm trợ giúp", + "about": "Giới thiệu", + "createdBy": "Tạo bởi ", + "nextStep": "Bước tiếp theo", + "runThisStep": "Chạy bước này", + "checklist": "Danh sách kiểm tra", + "checklistTip": "Đảm bảo rằng tất cả các vấn đề đã được giải quyết trước khi xuất bản", + "checklistResolved": "Tất cả các vấn đề đã được giải quyết", + "change": "Thay đổi", + "optional": "(tùy chọn)", + "changeBlock": "Thay đổi Node", + "selectNextStep": "Chọn bước tiếp theo", + "organizeBlocks": "Tổ chức các nút", + "addNextStep": "Thêm bước tiếp theo trong quy trình này", + "maximize": "Tối đa hóa Canvas", + "minimize": "Thoát chế độ toàn màn hình", + "scrollToSelectedNode": "Cuộn đến nút đã chọn", + "optional_and_hidden": "(tùy chọn & ẩn)", + "goTo": "Đi tới", + "startNode": "Nút Bắt đầu", + "openWorkflow": "Mở quy trình làm việc" + }, + "nodes": { + "common": { + "outputVars": "Biến đầu ra", + "insertVarTip": "Chèn biến", + "memory": { + "memory": "Bộ nhớ", + "memoryTip": "Cài đặt bộ nhớ cuộc trò chuyện", + "windowSize": "Kích thước cửa sổ", + "conversationRoleName": "Tên vai trò cuộc trò chuyện", + "user": "Tiền tố người dùng", + "assistant": "Tiền tố trợ lý" + }, + "memories": { + "title": "Bộ nhớ", + "tip": "Bộ nhớ cuộc trò chuyện", + "builtIn": "Tích hợp sẵn" + }, + "errorHandle": { + "none": { + "title": "Không ai", + "desc": "Nút sẽ ngừng chạy nếu xảy ra ngoại lệ và không được xử lý" + }, + "defaultValue": { + "title": "Giá trị mặc định", + "desc": "Khi xảy ra lỗi, hãy chỉ định nội dung đầu ra tĩnh.", + "tip": "Nếu lỗi, sẽ trả về giá trị dưới đó.", + "inLog": "Ngoại lệ nút, xuất theo giá trị mặc định.", + "output": "Giá trị mặc định đầu ra" + }, + "failBranch": { + "title": "Chi nhánh thất bại", + "desc": "Khi xảy ra lỗi, nó sẽ thực thi nhánh ngoại lệ", + "customize": "Chuyển đến canvas để tùy chỉnh logic nhánh thất bại.", + "customizeTip": "Khi nhánh fail được kích hoạt, các ngoại lệ do các nút ném sẽ không chấm dứt quá trình. Thay vào đó, nó sẽ tự động thực thi nhánh lỗi được xác định trước, cho phép bạn linh hoạt cung cấp thông báo lỗi, báo cáo, bản sửa lỗi hoặc bỏ qua các hành động.", + "inLog": "Node exception, sẽ tự động thực thi nhánh fail. Đầu ra nút sẽ trả về loại lỗi và thông báo lỗi và chuyển chúng đến hạ lưu." + }, + "partialSucceeded": { + "tip": "Có {{num}} node trong quá trình chạy bất thường, vui lòng truy tìm để kiểm tra nhật ký." + }, + "tip": "Chiến lược xử lý ngoại lệ, được kích hoạt khi một nút gặp phải ngoại lệ.", + "title": "Xử lý lỗi" + }, + "retry": { + "retry": "Thử lại", + "maxRetries": "Số lần thử lại tối đa", + "retryInterval": "Khoảng thời gian thử lại", + "retryTimes": "Thử lại {{lần}} lần khi không thành công", + "retrying": "Thử lại...", + "retrySuccessful": "Thử lại thành công", + "retryFailed": "Thử lại không thành công", + "retryFailedTimes": "{{lần}} lần thử lại không thành công", + "retries": "{{số}} Thử lại", + "retryOnFailure": "Thử lại khi không thành công", + "times": "lần", + "ms": "Ms" + }, + "typeSwitch": { + "input": "Giá trị đầu vào", + "variable": "Sử dụng biến" + }, + "inputVars": "Biến đầu vào", + "pluginNotInstalled": "Plugin chưa được cài đặt" + }, + "start": { + "required": "bắt buộc", + "inputField": "Trường đầu vào", + "builtInVar": "Biến tích hợp sẵn", + "outputVars": { + "query": "Đầu vào của người dùng", + "memories": { + "des": "Lịch sử cuộc trò chuyện", + "type": "loại tin nhắn", + "content": "nội dung tin nhắn" + }, + "files": "Danh sách tệp" + }, + "noVarTip": "Đặt các đầu vào có thể sử dụng trong Quy trình làm việc" + }, + "end": { + "outputs": "Đầu ra", + "output": { + "type": "loại đầu ra", + "variable": "biến đầu ra" + }, + "type": { + "none": "Không có", + "plain-text": "Văn bản thuần", + "structured": "Cấu trúc" + } + }, + "answer": { + "answer": "Trả lời", + "outputVars": "Biến đầu ra" + }, + "llm": { + "model": "mô hình", + "variables": "biến", + "context": "ngữ cảnh", + "contextTooltip": "Bạn có thể nhập Kiến thức làm ngữ cảnh", + "notSetContextInPromptTip": "Để kích hoạt tính năng ngữ cảnh, vui lòng điền biến ngữ cảnh vào PROMPT.", + "prompt": "prompt", + "roleDescription": { + "system": "Cung cấp hướng dẫn cấp cao cho cuộc trò chuyện", + "user": "Cung cấp hướng dẫn, câu hỏi hoặc bất kỳ đầu vào văn bản nào cho mô hình", + "assistant": "Các phản hồi của mô hình dựa trên tin nhắn của người dùng" + }, + "addMessage": "Thêm tin nhắn", + "vision": "tầm nhìn", + "files": "Tệp", + "resolution": { + "name": "Độ phân giải", + "high": "Cao", + "low": "Thấp" + }, + "outputVars": { + "output": "Nội dung được tạo", + "reasoning_content": "Nội dung lập luận", + "usage": "Thông tin sử dụng mô hình" + }, + "singleRun": { + "variable": "Biến" + }, + "sysQueryInUser": "sys.query trong tin nhắn của người dùng là bắt buộc", + "jsonSchema": { + "warningTips": { + "saveSchema": "Vui lòng hoàn thành việc chỉnh sửa trường hiện tại trước khi lưu sơ đồ." + }, + "promptTooltip": "Chuyển mô tả văn bản thành cấu trúc JSON Schema chuẩn.", + "stringValidations": "Xác thực chuỗi", + "instruction": "Hướng dẫn", + "regenerate": "Tái tạo", + "fieldNamePlaceholder": "Tên trường", + "generateJsonSchema": "Tạo Schema JSON", + "back": "Quay lại", + "import": "Nhập khẩu từ JSON", + "generationTip": "Bạn có thể sử dụng ngôn ngữ tự nhiên để tạo nhanh một JSON Schema.", + "doc": "Tìm hiểu thêm về đầu ra có cấu trúc", + "required": "cần thiết", + "generate": "Tạo ra", + "addField": "Thêm trường", + "resultTip": "Đây là kết quả đã được tạo ra. Nếu bạn không hài lòng, bạn có thể quay lại và chỉnh sửa yêu cầu của mình.", + "generating": "Tạo sơ đồ JSON...", + "descriptionPlaceholder": "Thêm mô tả", + "resetDefaults": "Đặt lại", + "promptPlaceholder": "Mô tả Sơ đồ JSON của bạn...", + "showAdvancedOptions": "Hiển thị tùy chọn nâng cao", + "generatedResult": "Kết quả được tạo ra", + "apply": "Áp dụng", + "addChildField": "Thêm trường trẻ em", + "title": "Sơ đồ đầu ra có cấu trúc" + }, + "reasoningFormat": { + "tagged": "Giữ lại thẻ suy nghĩ", + "tooltip": "Trích xuất nội dung từ các thẻ think và lưu nó vào trường reasoning_content.", + "separated": "Tách biệt các thẻ suy nghĩ", + "title": "Bật chế độ phân tách nhãn lý luận" + } + }, + "knowledgeRetrieval": { + "queryVariable": "Biến truy vấn", + "knowledge": "Kiến thức", + "outputVars": { + "output": "Dữ liệu phân đoạn được truy xuất", + "content": "Nội dung phân đoạn", + "title": "Tiêu đề phân đoạn", + "icon": "Biểu tượng phân đoạn", + "url": "URL phân đoạn", + "metadata": "Siêu dữ liệu khác", + "files": "Các tệp đã được truy xuất" + }, + "metadata": { + "options": { + "disabled": { + "subTitle": "Không bật lọc siêu dữ liệu", + "title": "Tắt" + }, + "automatic": { + "desc": "Tự động tạo điều kiện lọc siêu dữ liệu dựa trên biến truy vấn", + "title": "Tự động", + "subTitle": "Tự động tạo điều kiện lọc siêu dữ liệu dựa trên truy vấn của người dùng" + }, + "manual": { + "title": "Hướng dẫn", + "subTitle": "Thêm thủ công các điều kiện lọc siêu dữ liệu" + } + }, + "panel": { + "add": "Thêm điều kiện", + "conditions": "Điều kiện", + "title": "Điều kiện lọc siêu dữ liệu", + "select": "Chọn biến...", + "datePlaceholder": "Chọn một thời gian...", + "placeholder": "Nhập giá trị", + "search": "Tìm kiếm siêu dữ liệu" + }, + "title": "Lọc siêu dữ liệu", + "tip": "Lọc siêu dữ liệu là quá trình sử dụng các thuộc tính siêu dữ liệu (chẳng hạn như thẻ, danh mục hoặc quyền truy cập) để tinh chỉnh và kiểm soát việc truy xuất thông tin liên quan trong một hệ thống." + }, + "queryText": "Văn bản truy vấn", + "queryAttachment": "Truy vấn hình ảnh" + }, + "http": { + "inputVars": "Biến đầu vào", + "api": "API", + "apiPlaceholder": "Nhập URL, gõ ‘/’ để chèn biến", + "notStartWithHttp": "API phải bắt đầu bằng http:// hoặc https://", + "key": "Khóa", + "value": "Giá trị", + "bulkEdit": "Chỉnh sửa hàng loạt", + "keyValueEdit": "Chỉnh sửa khóa-giá trị", + "headers": "Tiêu đề", + "params": "Tham số", + "body": "Nội dung", + "outputVars": { + "body": "Nội dung phản hồi", + "statusCode": "Mã trạng thái phản hồi", + "headers": "Danh sách tiêu đề phản hồi JSON", + "files": "Danh sách tệp" + }, + "authorization": { + "authorization": "Ủy quyền", + "authorizationType": "Loại ủy quyền", + "no-auth": "Không có", + "api-key": "Khóa API", + "auth-type": "Loại xác thực", + "basic": "Cơ bản", + "bearer": "Bearer", + "custom": "Tùy chỉnh", + "api-key-title": "Khóa API", + "header": "Tiêu đề" + }, + "insertVarPlaceholder": "gõ '/' để chèn biến", + "timeout": { + "title": "Thời gian chờ", + "connectLabel": "Thời gian chờ kết nối", + "connectPlaceholder": "Nhập thời gian chờ kết nối tính bằng giây", + "readLabel": "Thời gian chờ đọc", + "readPlaceholder": "Nhập thời gian chờ đọc tính bằng giây", + "writeLabel": "Thời gian chờ ghi", + "writePlaceholder": "Nhập thời gian chờ ghi tính bằng giây" + }, + "binaryFileVariable": "Biến tệp nhị phân", + "type": "Kiểu", + "extractListPlaceholder": "Nhập chỉ mục mục danh sách, nhập '/' chèn biến", + "curl": { + "title": "Nhập từ cURL", + "placeholder": "Dán chuỗi cURL vào đây" + }, + "verifySSL": { + "title": "Xác thực chứng chỉ SSL", + "warningTooltip": "Việc vô hiệu hóa xác minh SSL không được khuyến khích cho các môi trường sản xuất. Điều này chỉ nên được sử dụng trong phát triển hoặc thử nghiệm, vì nó làm cho kết nối dễ bị tổn thương trước các mối đe dọa an ninh như cuộc tấn công man-in-the-middle." + } + }, + "code": { + "inputVars": "Biến đầu vào", + "outputVars": "Biến đầu ra", + "advancedDependencies": "Phụ thuộc nâng cao", + "advancedDependenciesTip": "Thêm một số phụ thuộc được tải trước mà tốn nhiều thời gian hoặc không phải là mặc định tại đây", + "searchDependencies": "Tìm kiếm phụ thuộc", + "syncFunctionSignature": "Đồng bộ chữ ký hàm với mã" + }, + "templateTransform": { + "inputVars": "Biến đầu vào", + "code": "Mã", + "codeSupportTip": "Chỉ hỗ trợ Jinja2", + "outputVars": { + "output": "Nội dung chuyển đổi" + } + }, + "ifElse": { + "if": "Nếu", + "else": "Ngược lại", + "elseDescription": "Sử dụng để xác định logic sẽ thực hiện khi điều kiện if không được thỏa mãn.", + "and": "và", + "or": "hoặc", + "operator": "Toán tử", + "notSetVariable": "Vui lòng đặt biến trước", + "comparisonOperator": { + "contains": "chứa", + "not contains": "không chứa", + "start with": "bắt đầu bằng", + "end with": "kết thúc bằng", + "is": "là", + "is not": "không là", + "empty": "trống", + "not empty": "không trống", + "null": "là null", + "not null": "không là null", + "exists": "Tồn tại", + "not exists": "không tồn tại", + "not in": "không có trong", + "in": "trong", + "all of": "tất cả", + "before": "trước", + "after": "sau" + }, + "enterValue": "Nhập giá trị", + "addCondition": "Thêm điều kiện", + "conditionNotSetup": "Điều kiện chưa được thiết lập", + "selectVariable": "Chọn biến...", + "optionName": { + "video": "Video", + "image": "Ảnh", + "url": "Địa chỉ", + "audio": "Âm thanh", + "doc": "Doc", + "localUpload": "Tải lên cục bộ" + }, + "addSubVariable": "Biến phụ", + "select": "Lựa" + }, + "variableAssigner": { + "title": "Gán biến", + "outputType": "Loại đầu ra", + "varNotSet": "Biến chưa được đặt", + "noVarTip": "Thêm các biến cần gán", + "type": { + "string": "Chuỗi", + "number": "Số", + "object": "Đối tượng", + "array": "Mảng" + }, + "aggregationGroup": "Nhóm tổng hợp", + "aggregationGroupTip": "Bật tính năng này cho phép trình tổng hợp biến tổng hợp nhiều bộ biến.", + "addGroup": "Thêm nhóm", + "outputVars": { + "varDescribe": "Đầu ra {{groupName}}" + }, + "setAssignVariable": "Đặt biến gán" + }, + "assigner": { + "assignedVariable": "Biến Được Gán", + "writeMode": "Chế Độ Ghi", + "writeModeTip": "Khi BIẾN ĐƯỢC GÁN là một mảng, chế độ thêm sẽ thêm vào cuối.", + "over-write": "Ghi đè", + "append": "Thêm vào", + "plus": "Cộng", + "clear": "Xóa", + "setVariable": "Đặt Biến", + "variable": "Biến", + "operations": { + "-=": "-=", + "over-write": "Ghi đè lên", + "clear": "Trong", + "append": "Thêm", + "title": "Hoạt động", + "*=": "*=", + "/=": "/=", + "extend": "Mở rộng", + "+=": "+=", + "set": "Cài", + "overwrite": "Ghi đè lên", + "remove-last": "Xóa Lần Cuối", + "remove-first": "Xóa đầu tiên" + }, + "setParameter": "Đặt tham số...", + "selectAssignedVariable": "Chọn biến được gán...", + "noVarTip": "Nhấp vào nút \"+\" để thêm biến", + "assignedVarsDescription": "Các biến được gán phải là các biến có thể ghi, chẳng hạn như các biến hội thoại.", + "varNotSet": "Biến KHÔNG được đặt", + "noAssignedVars": "Không có biến được gán sẵn có", + "variables": "Biến" + }, + "tool": { + "inputVars": "Biến đầu vào", + "outputVars": { + "text": "nội dung do công cụ tạo ra", + "files": { + "title": "tệp do công cụ tạo ra", + "type": "Loại hỗ trợ. Hiện tại chỉ hỗ trợ hình ảnh", + "transfer_method": "Phương pháp truyền. Giá trị là remote_url hoặc local_file", + "url": "URL hình ảnh", + "upload_file_id": "ID tệp đã tải lên" + }, + "json": "JSON được tạo bởi công cụ" + }, + "authorize": "Ủy quyền", + "settings": "Cài đặt", + "insertPlaceholder2": "Chèn biến vào", + "insertPlaceholder1": "Gõ hoặc nhấn" + }, + "questionClassifiers": { + "model": "mô hình", + "inputVars": "Biến đầu vào", + "outputVars": { + "className": "Tên lớp", + "usage": "Thông tin sử dụng mô hình" + }, + "class": "Lớp", + "classNamePlaceholder": "Viết tên lớp của bạn", + "advancedSetting": "Cài đặt nâng cao", + "topicName": "Tên chủ đề", + "topicPlaceholder": "Viết tên chủ đề của bạn", + "addClass": "Thêm lớp", + "instruction": "Hướng dẫn", + "instructionTip": "Nhập hướng dẫn bổ sung để giúp trình phân loại câu hỏi hiểu rõ hơn về cách phân loại câu hỏi.", + "instructionPlaceholder": "Viết hướng dẫn của bạn" + }, + "parameterExtractor": { + "inputVar": "Biến đầu vào", + "outputVars": { + "isSuccess": "Thành công. Khi thành công giá trị là 1, khi thất bại giá trị là 0.", + "errorReason": "Lý do lỗi", + "usage": "Thông tin sử dụng mô hình" + }, + "extractParameters": "Trích xuất tham số", + "importFromTool": "Nhập từ công cụ", + "addExtractParameter": "Thêm tham số trích xuất", + "addExtractParameterContent": { + "name": "Tên", + "namePlaceholder": "Tên tham số trích xuất", + "type": "Loại", + "typePlaceholder": "Loại tham số trích xuất", + "description": "Mô tả", + "descriptionPlaceholder": "Mô tả tham số trích xuất", + "required": "Bắt buộc", + "requiredContent": "Bắt buộc chỉ được sử dụng làm tài liệu tham khảo cho suy luận mô hình và không phải để xác thực bắt buộc của đầu ra tham số." + }, + "extractParametersNotSet": "Tham số trích xuất chưa được thiết lập", + "instruction": "Hướng dẫn", + "instructionTip": "Nhập hướng dẫn bổ sung để giúp trình trích xuất tham số hiểu rõ hơn về cách trích xuất tham số.", + "advancedSetting": "Cài đặt nâng cao", + "reasoningMode": "Chế độ suy luận", + "reasoningModeTip": "Bạn có thể chọn chế độ suy luận phù hợp dựa trên khả năng của mô hình để phản hồi các hướng dẫn về việc gọi hàm hoặc prompt." + }, + "iteration": { + "deleteTitle": "Xóa nút lặp?", + "deleteDesc": "Xóa nút lặp sẽ xóa tất cả các nút con", + "input": "Đầu vào", + "output": "Biến đầu ra", + "iteration_one": "{{count}} Lặp", + "iteration_other": "{{count}} Lặp", + "currentIteration": "Lặp hiện tại", + "ErrorMethod": { + "operationTerminated": "Chấm dứt", + "removeAbnormalOutput": "loại bỏ-bất thường-đầu ra", + "continueOnError": "Tiếp tục lỗi" + }, + "comma": ",", + "error_other": "{{đếm}} Lỗi", + "error_one": "{{đếm}} Lỗi", + "MaxParallelismTitle": "Song song tối đa", + "parallelPanelDesc": "Ở chế độ song song, các tác vụ trong quá trình lặp hỗ trợ thực thi song song.", + "parallelMode": "Chế độ song song", + "parallelModeEnableTitle": "Đã bật Chế độ song song", + "errorResponseMethod": "Phương pháp phản hồi lỗi", + "MaxParallelismDesc": "Tính song song tối đa được sử dụng để kiểm soát số lượng tác vụ được thực hiện đồng thời trong một lần lặp.", + "answerNodeWarningDesc": "Cảnh báo chế độ song song: Các nút trả lời, bài tập biến hội thoại và các thao tác đọc/ghi liên tục trong các lần lặp có thể gây ra ngoại lệ.", + "parallelModeEnableDesc": "Trong chế độ song song, các tác vụ trong các lần lặp hỗ trợ thực thi song song. Bạn có thể định cấu hình điều này trong bảng thuộc tính ở bên phải.", + "parallelModeUpper": "CHẾ ĐỘ SONG SONG", + "flattenOutput": "Làm phẳng đầu ra", + "flattenOutputDesc": "Khi bật, nếu tất cả các kết quả vòng lặp là mảng, chúng sẽ được gộp thành một mảng duy nhất. Khi tắt, các kết quả sẽ giữ nguyên cấu trúc mảng lồng nhau." + }, + "note": { + "editor": { + "openLink": "Mở", + "italic": "Nghiêng", + "link": "Liên kết", + "medium": "Đau vừa", + "small": "Nhỏ", + "placeholder": "Viết ghi chú của bạn...", + "large": "Lớn", + "showAuthor": "Hiển thị tác giả", + "bulletList": "Danh sách dấu đầu dòng", + "bold": "Dũng cảm", + "unlink": "Hủy liên kết", + "invalidUrl": "URL không hợp lệ", + "strikethrough": "Gạch ngang", + "enterUrl": "Nhập URL..." + }, + "addNote": "Thêm ghi chú" + }, + "docExtractor": { + "outputVars": { + "text": "Văn bản trích xuất" + }, + "learnMore": "Tìm hiểu thêm", + "inputVar": "Biến đầu vào", + "supportFileTypes": "Các loại tệp hỗ trợ: {{types}}." + }, + "listFilter": { + "outputVars": { + "last_record": "Kỷ lục cuối cùng", + "first_record": "Kỷ lục đầu tiên", + "result": "Lọc kết quả" + }, + "orderBy": "Đặt hàng theo", + "selectVariableKeyPlaceholder": "Chọn khóa biến phụ", + "inputVar": "Biến đầu vào", + "desc": "DESC", + "filterConditionKey": "Khóa điều kiện bộ lọc", + "filterConditionComparisonValue": "Giá trị Điều kiện lọc", + "limit": "Top N", + "filterCondition": "Điều kiện lọc", + "asc": "ASC", + "filterConditionComparisonOperator": "Toán tử so sánh điều kiện bộ lọc", + "extractsCondition": "Giải nén mục N" + }, + "agent": { + "strategy": { + "selectTip": "Chọn chiến lược tác nhân", + "searchPlaceholder": "Chiến lược tác nhân tìm kiếm", + "shortLabel": "Chiến lược", + "configureTipDesc": "Sau khi cấu hình chiến lược tác nhân, nút này sẽ tự động tải các cấu hình còn lại. Chiến lược sẽ ảnh hưởng đến cơ chế suy luận công cụ nhiều bước.", + "tooltip": "Các chiến lược Agentic khác nhau xác định cách hệ thống lập kế hoạch và thực hiện các cuộc gọi công cụ nhiều bước", + "label": "Chiến lược đại lý", + "configureTip": "Vui lòng định cấu hình chiến lược tác nhân." + }, + "pluginInstaller": { + "install": "Cài đặt", + "installing": "Cài đặt" + }, + "modelNotInMarketplace": { + "title": "Mô hình chưa được cài đặt", + "manageInPlugins": "Quản lý trong Plugins", + "desc": "Mô hình này được cài đặt từ kho lưu trữ cục bộ hoặc GitHub. Vui lòng sử dụng sau khi cài đặt." + }, + "modelNotSupport": { + "desc": "Phiên bản plugin đã cài đặt không cung cấp mô hình này.", + "title": "Mô hình không được hỗ trợ", + "descForVersionSwitch": "Phiên bản plugin đã cài đặt không cung cấp mô hình này. Nhấp để chuyển đổi phiên bản." + }, + "modelSelectorTooltips": { + "deprecated": "Mô hình này không còn được dùng nữa" + }, + "outputVars": { + "files": { + "title": "Tệp do tác nhân tạo", + "transfer_method": "Phương thức chuyển khoản. Giá trị là remote_url hoặc local_file", + "upload_file_id": "Tải lên id tệp", + "type": "Loại hỗ trợ. Bây giờ chỉ hỗ trợ hình ảnh", + "url": "URL hình ảnh" + }, + "json": "JSON do tác nhân tạo", + "text": "Nội dung do tác nhân tạo", + "usage": "Thông tin sử dụng mô hình" + }, + "checkList": { + "strategyNotSelected": "Chiến lược không được chọn" + }, + "installPlugin": { + "install": "Cài đặt", + "cancel": "Hủy", + "title": "Cài đặt Plugin", + "desc": "Giới thiệu cài đặt plugin sau", + "changelog": "Nhật ký thay đổi" + }, + "toolNotAuthorizedTooltip": "{{công cụ}} Không được ủy quyền", + "unsupportedStrategy": "Chiến lược không được hỗ trợ", + "toolNotInstallTooltip": "{{tool}} không được cài đặt", + "strategyNotFoundDescAndSwitchVersion": "Phiên bản plugin đã cài đặt không cung cấp chiến lược này. Nhấp để chuyển đổi phiên bản.", + "strategyNotInstallTooltip": "{{strategy}} không được cài đặt", + "modelNotInstallTooltip": "Mô hình này không được cài đặt", + "strategyNotSet": "Chiến lược tác nhân không được thiết lập", + "linkToPlugin": "Liên kết đến Plugins", + "configureModel": "Định cấu hình mô hình", + "pluginNotInstalledDesc": "Plugin này được cài đặt từ GitHub. Vui lòng vào Plugins để cài đặt lại", + "modelNotSelected": "Mô hình không được chọn", + "learnMore": "Tìm hiểu thêm", + "pluginNotInstalled": "Plugin này chưa được cài đặt", + "model": "mẫu", + "pluginNotFoundDesc": "Plugin này được cài đặt từ GitHub. Vui lòng vào Plugins để cài đặt lại", + "maxIterations": "Số lần lặp lại tối đa", + "tools": "Công cụ", + "notAuthorized": "Không được ủy quyền", + "strategyNotFoundDesc": "Phiên bản plugin đã cài đặt không cung cấp chiến lược này.", + "toolbox": "hộp công cụ", + "clickToViewParameterSchema": "Nhấp để xem sơ đồ tham số", + "parameterSchema": "Sơ đồ Tham số" + }, + "loop": { + "ErrorMethod": { + "continueOnError": "Tiếp tục khi có lỗi", + "removeAbnormalOutput": "Xóa đầu ra bất thường", + "operationTerminated": "Chấm dứt" + }, + "breakConditionTip": "Chỉ có thể tham chiếu đến các biến trong vòng lặp có điều kiện kết thúc và các biến hội thoại.", + "deleteTitle": "Xóa nút vòng lặp?", + "variableName": "Tên Biến", + "input": "Nhập", + "exitConditionTip": "Một nút vòng lặp cần ít nhất một điều kiện thoát.", + "breakCondition": "Điều kiện dừng vòng lặp", + "totalLoopCount": "Tổng số lần lặp: {{count}}", + "setLoopVariables": "Đặt biến trong phạm vi vòng lặp", + "currentLoopCount": "Số vòng lặp hiện tại: {{count}}", + "deleteDesc": "Xóa nút vòng sẽ xóa tất cả các nút con", + "inputMode": "Chế độ đầu vào", + "currentLoop": "Vòng lặp hiện tại", + "loopMaxCountError": "Vui lòng nhập số vòng lặp tối đa hợp lệ, trong khoảng từ 1 đến {{maxCount}}", + "loop_other": "{{count}} Vòng lặp", + "finalLoopVariables": "Biến Vòng Lặp Cuối", + "initialLoopVariables": "Biến Vòng Lặp Đầu Tiên", + "loop_one": "{{count}} Vòng lặp", + "error_other": "{{count}} Lỗi", + "output": "Biến đầu ra", + "errorResponseMethod": "Phương pháp phản hồi lỗi", + "loopMaxCount": "Số lần lặp tối đa", + "comma": ",", + "loopVariables": "Biến Lặp", + "error_one": "{{count}} Lỗi", + "loopNode": "Nút Lặp" + }, + "dataSource": { + "supportedFileFormats": "Các định dạng tệp được hỗ trợ", + "supportedFileFormatsPlaceholder": "Phần mở rộng tệp, e.g. doc", + "add": "Thêm nguồn dữ liệu" + }, + "knowledgeBase": { + "chunkStructureTip": { + "learnMore": "Tìm hiểu thêm", + "message": "Cơ sở kiến thức Dify hỗ trợ ba cấu trúc phân đoạn: General, Parent-child và Q&A. Mỗi cơ sở tri thức chỉ có thể có một cấu trúc. Đầu ra từ nút trước đó phải phù hợp với cấu trúc chunk đã chọn. Lưu ý rằng việc lựa chọn cấu trúc chunking ảnh hưởng đến các phương thức index có sẵn.", + "title": "Vui lòng chọn cấu trúc chunk" + }, + "chunkIsRequired": "Cấu trúc chunk là bắt buộc", + "chunkStructure": "Cấu trúc Chunk", + "aboutRetrieval": "về phương pháp truy xuất.", + "retrievalSettingIsRequired": "Cài đặt truy xuất là bắt buộc", + "changeChunkStructure": "Thay đổi cấu trúc chunk", + "chooseChunkStructure": "Chọn cấu trúc chunk", + "indexMethodIsRequired": "Phương pháp chỉ mục là bắt buộc", + "chunksInput": "Mảnh", + "chunksInputTip": "Biến đầu vào của nút cơ sở tri thức là Chunks. Loại biến là một đối tượng với một JSON Schema cụ thể mà phải nhất quán với cấu trúc chunk đã chọn.", + "chunksVariableIsRequired": "Biến Chunks là bắt buộc", + "embeddingModelIsRequired": "Cần có mô hình nhúng", + "rerankingModelIsRequired": "Cần có mô hình sắp xếp lại", + "embeddingModelIsInvalid": "Mô hình nhúng không hợp lệ", + "rerankingModelIsInvalid": "Mô hình xếp hạng lại không hợp lệ" + }, + "triggerPlugin": { + "authorized": "Được ủy quyền", + "notConfigured": "Chưa được cấu hình", + "notAuthorized": "Không được ủy quyền", + "selectSubscription": "Chọn gói đăng ký", + "availableSubscriptions": "Các gói đăng ký có sẵn", + "addSubscription": "Thêm đăng ký mới", + "removeSubscription": "Hủy đăng ký", + "subscriptionRemoved": "Đã hủy đăng ký thành công", + "error": "Lỗi", + "configuration": "Cấu hình", + "remove": "Xóa", + "or": "HOẶC", + "useOAuth": "Sử dụng OAuth", + "useApiKey": "Sử dụng Khóa API", + "authenticationFailed": "Xác thực thất bại", + "authenticationSuccess": "Xác thực thành công", + "oauthConfigFailed": "Cấu hình OAuth thất bại", + "configureOAuthClient": "Cấu hình Khách hàng OAuth", + "oauthClientDescription": "Cấu hình thông tin đăng nhập OAuth của khách hàng để kích hoạt xác thực", + "oauthClientSaved": "Cấu hình khách hàng OAuth đã được lưu thành công", + "configureApiKey": "Cấu hình Khóa API", + "apiKeyDescription": "Cấu hình thông tin xác thực khóa API để xác thực", + "apiKeyConfigured": "Khóa API đã được cấu hình thành công", + "configurationFailed": "Cấu hình thất bại", + "failedToStart": "Không thể bắt đầu quy trình xác thực", + "credentialsVerified": "Thông tin đăng nhập đã được xác minh thành công", + "credentialVerificationFailed": "Xác minh thông tin đăng nhập thất bại", + "verifyAndContinue": "Xác minh & Tiếp tục", + "configureParameters": "Cấu hình tham số", + "parametersDescription": "Cấu hình tham số và thuộc tính của bộ kích hoạt", + "configurationComplete": "Cấu hình hoàn tất", + "configurationCompleteDescription": "Bộ kích hoạt của bạn đã được cấu hình thành công", + "configurationCompleteMessage": "Cấu hình kích hoạt của bạn đã hoàn tất và sẵn sàng sử dụng.", + "parameters": "Tham số", + "properties": "Thuộc tính", + "propertiesDescription": "Các thuộc tính cấu hình bổ sung cho bộ kích hoạt này", + "noConfigurationRequired": "Không cần cấu hình thêm cho bộ kích hoạt này.", + "subscriptionName": "Tên thuê bao", + "subscriptionNameDescription": "Nhập tên duy nhất cho đăng ký kích hoạt này", + "subscriptionNamePlaceholder": "Nhập tên gói đăng ký...", + "subscriptionNameRequired": "Tên đăng ký là bắt buộc", + "subscriptionRequired": "Cần phải đăng ký" + }, + "triggerSchedule": { + "title": "Lịch trình", + "nodeTitle": "Kích hoạt theo lịch", + "notConfigured": "Chưa được cấu hình", + "useCronExpression": "Sử dụng biểu thức cron", + "useVisualPicker": "Sử dụng trình chọn trực quan", + "frequency": { + "label": "Tần suất", + "hourly": "Theo giờ", + "daily": "Hàng ngày", + "weekly": "Hàng tuần", + "monthly": "Hàng tháng" + }, + "selectFrequency": "Chọn tần suất", + "frequencyLabel": "Tần số", + "nextExecution": "Lần thi hành tiếp theo", + "weekdays": "Các ngày trong tuần", + "time": "Thời gian", + "cronExpression": "Biểu thức Cron", + "nextExecutionTime": "THỜI GIAN THỰC THI TIẾP THEO", + "nextExecutionTimes": "5 lần thực thi tiếp theo", + "startTime": "Thời gian bắt đầu", + "executeNow": "Thực thi ngay", + "selectDateTime": "Chọn Ngày & Giờ", + "hours": "Giờ", + "minutes": "Phút", + "onMinute": "Trong một phút", + "days": "Ngày", + "lastDay": "Ngày cuối cùng", + "lastDayTooltip": "Không phải tất cả các tháng đều có 31 ngày. Sử dụng tùy chọn 'ngày cuối cùng' để chọn ngày cuối cùng của mỗi tháng.", + "mode": "Chế độ", + "timezone": "Múi giờ", + "visualConfig": "Cấu hình trực quan", + "monthlyDay": "Ngày hàng tháng", + "executionTime": "Thời gian thực hiện", + "invalidTimezone": "Múi giờ không hợp lệ", + "invalidCronExpression": "Biểu thức cron không hợp lệ", + "noValidExecutionTime": "Không thể tính toán thời gian thực thi hợp lệ", + "executionTimeCalculationError": "Không thể tính toán thời gian thực thi", + "invalidFrequency": "Tần số không hợp lệ", + "invalidStartTime": "Thời gian bắt đầu không hợp lệ", + "startTimeMustBeFuture": "Thời gian bắt đầu phải là trong tương lai", + "invalidTimeFormat": "Định dạng giờ không hợp lệ (dự kiến HH:MM SA/CH)}", + "invalidWeekday": "Ngày trong tuần không hợp lệ: {{weekday}}", + "invalidMonthlyDay": "Ngày trong tháng phải nằm giữa 1-31 hoặc là \"cuối cùng\"", + "invalidOnMinute": "Phút phải nằm trong khoảng từ 0 đến 59", + "invalidExecutionTime": "Thời gian thực thi không hợp lệ", + "executionTimeMustBeFuture": "Thời gian thực thi phải nằm trong tương lai" + }, + "triggerWebhook": { + "title": "Kích hoạt Webhook", + "nodeTitle": "🔗 Kích hoạt Webhook", + "configPlaceholder": "Cấu hình kích hoạt webhook sẽ được thực hiện ở đây", + "webhookUrl": "URL Webhook", + "webhookUrlPlaceholder": "Nhấp vào tạo để tạo URL webhook", + "generate": "Tạo", + "copy": "Sao chép", + "test": "Kiểm tra", + "urlGenerated": "Đã tạo URL webhook thành công", + "urlGenerationFailed": "Không thể tạo URL webhook", + "urlCopied": "Đã sao chép URL vào bộ nhớ tạm", + "method": "Phương pháp", + "contentType": "Loại Nội Dung", + "queryParameters": "Tham số truy vấn", + "headerParameters": "Tham số tiêu đề", + "requestBodyParameters": "Tham số trong thân yêu cầu", + "parameterName": "Tên biến", + "varName": "Tên biến", + "varType": "Loại", + "varNamePlaceholder": "Nhập tên biến...", + "required": "Bắt buộc", + "addParameter": "Thêm", + "addHeader": "Thêm", + "noParameters": "Chưa cấu hình tham số nào", + "noQueryParameters": "Chưa cấu hình tham số truy vấn", + "noHeaders": "Chưa cấu hình tiêu đề", + "noBodyParameters": "Chưa cấu hình tham số thân", + "debugUrlTitle": "Đối với các lần chạy thử, luôn sử dụng URL này", + "debugUrlCopy": "Nhấn để sao chép", + "debugUrlCopied": "Đã sao chép!", + "debugUrlPrivateAddressWarning": "URL này dường như là một địa chỉ nội bộ, điều này có thể khiến các yêu cầu webhook không thành công. Bạn có thể thay đổi TRIGGER_URL thành một địa chỉ công khai.", + "errorHandling": "Xử lý lỗi", + "errorStrategy": "Xử lý lỗi", + "responseConfiguration": "Phản hồi", + "asyncMode": "Chế độ không đồng bộ", + "statusCode": "Mã trạng thái", + "responseBody": "Nội dung phản hồi", + "responseBodyPlaceholder": "Viết nội dung phản hồi của bạn ở đây", + "headers": "Tiêu đề", + "validation": { + "webhookUrlRequired": "Cần có URL Webhook", + "invalidParameterType": "Loại tham số không hợp lệ \"{{type}}\" cho tham số \"{{name}}\"" + } + } + }, + "tracing": { + "stopBy": "Dừng bởi {{user}}" + }, + "variableReference": { + "noAssignedVars": "Không có biến được gán sẵn có", + "noAvailableVars": "Không có biến khả dụng", + "assignedVarsDescription": "Các biến được gán phải là các biến có thể ghi, chẳng hạn như", + "conversationVars": "Biến cuộc trò chuyện", + "noVarsForOperation": "Không có biến nào có sẵn để gán với hoạt động đã chọn." + }, + "versionHistory": { + "filter": { + "onlyYours": "Chỉ của bạn", + "empty": "Không tìm thấy lịch sử phiên bản phù hợp", + "onlyShowNamedVersions": "Chỉ hiển thị các phiên bản có tên", + "reset": "Đặt lại bộ lọc", + "all": "Tất cả" + }, + "editField": { + "releaseNotesLengthLimit": "Ghi chú phát hành không được vượt quá {{limit}} ký tự.", + "title": "Tiêu đề", + "releaseNotes": "Ghi chú phát hành", + "titleLengthLimit": "Tiêu đề không được vượt quá {{limit}} ký tự" + }, + "action": { + "deleteFailure": "Xóa phiên bản thất bại", + "updateFailure": "Cập nhật phiên bản không thành công", + "deleteSuccess": "Phiên bản đã bị xóa", + "updateSuccess": "Phiên bản đã được cập nhật", + "restoreSuccess": "Phiên bản đã được khôi phục", + "restoreFailure": "Không thể khôi phục phiên bản", + "copyIdSuccess": "ID được sao chép vào khay nhớ tạm" + }, + "defaultName": "Phiên bản không được đặt tên", + "releaseNotesPlaceholder": "Mô tả những gì đã thay đổi", + "deletionTip": "Việc xóa là không thể phục hồi, vui lòng xác nhận.", + "currentDraft": "Dự thảo hiện tại", + "editVersionInfo": "Chỉnh sửa thông tin phiên bản", + "latest": "Mới nhất", + "nameThisVersion": "Đặt tên cho phiên bản này", + "restorationTip": "Sau khi phục hồi phiên bản, bản nháp hiện tại sẽ bị ghi đè.", + "title": "Các phiên bản", + "copyId": "Sao chép ID" + }, + "debug": { + "noData": { + "runThisNode": "Chạy nút này", + "description": "Kết quả của lần chạy cuối cùng sẽ được hiển thị ở đây" + }, + "variableInspect": { + "trigger": { + "clear": "Rõ ràng", + "stop": "Dừng lại", + "normal": "Kiểm tra Biến", + "cached": "Xem các biến được lưu trong bộ nhớ cache", + "running": "Trạng thái đang chạy của bộ nhớ đệm" + }, + "envNode": "Môi trường", + "edited": "Biên soạn", + "chatNode": "Cuộc trò chuyện", + "view": "Xem nhật ký", + "clearAll": "Đặt lại tất cả", + "reset": "Đặt lại thành giá trị của lần chạy cuối cùng", + "resetConversationVar": "Đặt lại biến cuộc trò chuyện về giá trị mặc định", + "title": "Kiểm tra Biến", + "systemNode": "Hệ thống", + "clearNode": "Xóa biến đã được lưu trong bộ nhớ cache", + "emptyLink": "Tìm hiểu thêm", + "emptyTip": "Sau khi bước qua một nút trên canvas hoặc chạy một nút từng bước, bạn có thể xem giá trị hiện tại của biến nút trong Variable Inspect.", + "export": "xuất khẩu", + "exportToolTip": "Xuất biến dưới dạng tệp", + "largeData": "Dữ liệu lớn, xem trước chỉ đọc. Xuất để xem tất cả.", + "largeDataNoExport": "Dữ liệu lớn - chỉ xem trước một phần", + "listening": { + "title": "Đang lắng nghe các sự kiện từ các kích hoạt...", + "tip": "Bạn giờ có thể mô phỏng các trình kích hoạt sự kiện bằng cách gửi các yêu cầu thử nghiệm tới điểm cuối HTTP {{nodeName}} hoặc sử dụng nó như một URL phản hồi để gỡ lỗi sự kiện trực tiếp. Tất cả các kết quả đầu ra có thể được xem trực tiếp trong Trình Kiểm tra Biến.", + "tipPlugin": "Bây giờ bạn có thể tạo các sự kiện trong {{- pluginName}} và lấy kết quả từ các sự kiện này trong Trình kiểm tra Biến.", + "tipSchedule": "Lắng nghe sự kiện từ các tác nhân kích hoạt theo lịch. Chạy theo lịch tiếp theo: {{nextTriggerTime}}", + "tipFallback": "Chờ các sự kiện kích hoạt đến. Các kết quả sẽ xuất hiện ở đây.", + "defaultNodeName": "cái nút kích hoạt này", + "defaultPluginName": "plugin này kích hoạt", + "defaultScheduleTime": "Chưa được cấu hình", + "selectedTriggers": "cac trình kích hoạt đã chọn", + "stopButton": "Dừng lại" + } + }, + "settingsTab": "Cài đặt", + "lastRunTab": "Chạy Lần Cuối", + "relations": { + "noDependencies": "Không phụ thuộc", + "dependenciesDescription": "Các nút mà nút này dựa vào", + "dependents": "Người phụ thuộc", + "dependencies": "Phụ thuộc", + "noDependents": "Không có người phụ thuộc", + "dependentsDescription": "Các nút dựa vào nút này" + }, + "relationsTab": "Mối quan hệ", + "noLastRunFound": "Không tìm thấy lần chạy trước", + "noMatchingInputsFound": "Không tìm thấy đầu vào nào khớp từ lần chạy trước", + "copyLastRun": "Sao chép lần chạy cuối", + "copyLastRunError": "Không thể sao chép đầu vào của lần chạy trước", + "lastOutput": "Đầu ra cuối cùng", + "lastRunInputsCopied": "{{count}} đầu vào đã được sao chép từ lần chạy trước" + }, + "sidebar": { + "exportWarning": "Xuất Phiên Bản Đã Lưu Hiện Tại", + "exportWarningDesc": "Điều này sẽ xuất phiên bản hiện tại đã được lưu của quy trình làm việc của bạn. Nếu bạn có những thay đổi chưa được lưu trong trình soạn thảo, vui lòng lưu chúng trước bằng cách sử dụng tùy chọn xuất trong bản vẽ quy trình." + }, + "publishLimit": { + "startNodeTitlePrefix": "Nâng cấp lên", + "startNodeTitleSuffix": "mở khóa số lần kích hoạt không giới hạn cho mỗi quy trình làm việc", + "startNodeDesc": "Bạn đã đạt giới hạn 2 trình kích hoạt cho mỗi quy trình làm việc trong gói này. Nâng cấp để xuất bản quy trình làm việc này." + }, + "error": { + "startNodeRequired": "Vui lòng thêm một nút bắt đầu trước {{operation}}", + "operations": { + "connectingNodes": "kết nối các nút", + "addingNodes": "thêm nút", + "modifyingWorkflow": "chỉnh sửa quy trình công việc", + "updatingWorkflow": "cập nhật quy trình công việc" + } + }, + "customWebhook": "Webhook Tùy Chỉnh", + "difyTeam": "Đội ngũ Dify", + "triggerStatus": { + "enabled": "KÍCH HOẠT", + "disabled": "KÍCH HOẠT • VÔ HIỆU HÓA" + }, + "entryNodeStatus": { + "enabled": "BẮT ĐẦU", + "disabled": "BẮT ĐẦU • VÔ HIỆU HÓA" + }, + "onboarding": { + "title": "Chọn một nút bắt đầu để bắt đầu", + "description": "Các nút bắt đầu khác nhau có những khả năng khác nhau. Đừng lo, bạn luôn có thể thay đổi chúng sau này.", + "userInputFull": "Nhập người dùng (nút bắt đầu gốc)", + "userInputDescription": "Nút bắt đầu cho phép thiết lập các biến nhập liệu của người dùng, với ứng dụng web, API dịch vụ, máy chủ MCP và quy trình làm việc như các khả năng công cụ.", + "trigger": "Kích hoạt", + "triggerDescription": "Các trình kích hoạt có thể hoạt động như nút bắt đầu của một quy trình làm việc, chẳng hạn như tác vụ theo lịch, webhook tùy chỉnh hoặc tích hợp với các ứng dụng khác.", + "back": "Quay lại", + "learnMore": "Tìm hiểu thêm", + "aboutStartNode": "về nút bắt đầu.", + "escTip": { + "press": "Báo chí", + "key": "thoát", + "toDismiss": "sa thải" + } + } +} diff --git a/web/i18n/vi-VN/workflow.ts b/web/i18n/vi-VN/workflow.ts deleted file mode 100644 index b3767ee6e7..0000000000 --- a/web/i18n/vi-VN/workflow.ts +++ /dev/null @@ -1,1296 +0,0 @@ -const translation = { - common: { - undo: 'Hoàn tác', - redo: 'Làm lại', - editing: 'Đang chỉnh sửa', - autoSaved: 'Đã tự động lưu', - unpublished: 'Chưa xuất bản', - published: 'Đã xuất bản', - publish: 'Xuất bản', - update: 'Cập nhật', - run: 'Chạy thử nghiệm', - running: 'Đang chạy', - inRunMode: 'Chế độ chạy', - inPreview: 'Trong chế độ xem trước', - inPreviewMode: 'Chế độ xem trước', - preview: 'Xem trước', - viewRunHistory: 'Xem lịch sử chạy', - runHistory: 'Lịch sử chạy', - goBackToEdit: 'Quay lại trình chỉnh sửa', - conversationLog: 'Nhật ký cuộc trò chuyện', - debugAndPreview: 'Xem trước', - restart: 'Khởi động lại', - currentDraft: 'Bản nháp hiện tại', - currentDraftUnpublished: 'Bản nháp hiện tại chưa xuất bản', - latestPublished: 'Xuất bản mới nhất', - publishedAt: 'Đã xuất bản lúc', - restore: 'Khôi phục', - runApp: 'Chạy ứng dụng', - batchRunApp: 'Chạy ứng dụng hàng loạt', - accessAPIReference: 'Truy cập tài liệu API', - embedIntoSite: 'Nhúng vào trang web', - addTitle: 'Thêm tiêu đề...', - addDescription: 'Thêm mô tả...', - noVar: 'Không có biến', - searchVar: 'Tìm kiếm biến', - variableNamePlaceholder: 'Tên biến', - setVarValuePlaceholder: 'Đặt giá trị biến', - needConnectTip: 'Bước này không được kết nối với bất kỳ điều gì', - maxTreeDepth: 'Giới hạn tối đa {{depth}} nút trên mỗi nhánh', - workflowProcess: 'Quy trình làm việc', - notRunning: 'Chưa chạy', - previewPlaceholder: 'Nhập nội dung vào hộp bên dưới để bắt đầu gỡ lỗi Chatbot', - effectVarConfirm: { - title: 'Xóa biến', - content: 'Biến được sử dụng trong các nút khác. Bạn có chắc chắn muốn xóa nó không?', - }, - insertVarTip: 'Nhấn phím \'/\' để chèn nhanh', - processData: 'Xử lý dữ liệu', - input: 'Đầu vào', - output: 'Đầu ra', - jinjaEditorPlaceholder: 'Gõ \'/\' hoặc \'{\' để chèn biến', - viewOnly: 'Chỉ xem', - showRunHistory: 'Hiển thị lịch sử chạy', - enableJinja: 'Bật hỗ trợ mẫu Jinja', - learnMore: 'Tìm hiểu thêm', - copy: 'Sao chép', - duplicate: 'Nhân bản', - pasteHere: 'Dán vào đây', - pointerMode: 'Chế độ con trỏ', - handMode: 'Chế độ tay', - model: 'Mô hình', - workflowAsTool: 'Quy trình làm việc như công cụ', - configureRequired: 'Yêu cầu cấu hình', - configure: 'Cấu hình', - manageInTools: 'Quản lý trong công cụ', - workflowAsToolTip: 'Cần cấu hình lại công cụ sau khi cập nhật quy trình làm việc.', - viewDetailInTracingPanel: 'Xem chi tiết', - importSuccess: 'Nhập thành công', - backupCurrentDraft: 'Sao lưu dự thảo hiện tại', - chooseDSL: 'Chọn tệp DSL(yml)', - importDSLTip: 'Dự thảo hiện tại sẽ bị ghi đè. Xuất quy trình làm việc dưới dạng bản sao lưu trước khi nhập.', - importFailure: 'Nhập không thành công', - overwriteAndImport: 'Ghi đè và nhập', - importDSL: 'Nhập DSL', - syncingData: 'Đồng bộ hóa dữ liệu, chỉ vài giây.', - parallelTip: { - click: { - title: 'Bấm', - desc: 'để thêm', - }, - drag: { - title: 'Kéo', - desc: 'Để kết nối', - }, - limit: 'Song song được giới hạn trong các nhánh {{num}}.', - depthLimit: 'Giới hạn lớp lồng song song của {{num}} layer', - }, - disconnect: 'Ngắt kết nối', - jumpToNode: 'Chuyển đến nút này', - addParallelNode: 'Thêm nút song song', - parallel: 'SONG SONG', - branch: 'NHÁNH', - fileUploadTip: 'Các tính năng tải lên hình ảnh đã được nâng cấp để tải tệp lên.', - ImageUploadLegacyTip: 'Bây giờ bạn có thể tạo các biến loại tệp trong biểu mẫu bắt đầu. Chúng tôi sẽ không còn hỗ trợ tính năng tải lên hình ảnh trong tương lai.', - importWarning: 'Thận trọng', - importWarningDetails: 'Sự khác biệt về phiên bản DSL có thể ảnh hưởng đến một số tính năng nhất định', - openInExplore: 'Mở trong Khám phá', - onFailure: 'Khi thất bại', - addFailureBranch: 'Thêm nhánh Fail', - loadMore: 'Tải thêm quy trình làm việc', - noHistory: 'Không có lịch sử', - versionHistory: 'Lịch sử phiên bản', - publishUpdate: 'Cập nhật xuất bản', - exportSVG: 'Xuất dưới dạng SVG', - exitVersions: 'Phiên bản thoát', - exportImage: 'Xuất hình ảnh', - exportPNG: 'Xuất dưới dạng PNG', - exportJPEG: 'Xuất dưới dạng JPEG', - needAnswerNode: 'Nút Trả lời phải được thêm vào', - addBlock: 'Thêm Node', - needOutputNode: 'Phải thêm nút Đầu ra', - tagBound: 'Số lượng ứng dụng sử dụng thẻ này', - currentWorkflow: 'Quy trình làm việc hiện tại', - currentView: 'Hiện tại View', - moreActions: 'Hành động khác', - listening: 'Nghe', - chooseStartNodeToRun: 'Chọn nút bắt đầu để chạy', - runAllTriggers: 'Chạy tất cả các trình kích hoạt', - features: 'Tính năng', - featuresDescription: 'Cải thiện trải nghiệm người dùng trên ứng dụng web', - featuresDocLink: 'Tìm hiểu thêm', - needAdd: 'Phải thêm nút {{node}}', - needStartNode: 'Phải thêm ít nhất một nút bắt đầu', - workflowAsToolDisabledHint: 'Xuất bản quy trình làm việc mới nhất và đảm bảo một nút Nhập liệu Người dùng kết nối trước khi cấu hình nó như một công cụ.', - }, - env: { - envPanelTitle: 'Biến Môi Trường', - envDescription: 'Biến môi trường có thể được sử dụng để lưu trữ thông tin cá nhân và thông tin xác thực. Chúng chỉ được đọc và có thể được tách khỏi tệp DSL trong quá trình xuất.', - envPanelButton: 'Thêm Biến', - modal: { - title: 'Thêm Biến Môi Trường', - editTitle: 'Sửa Biến Môi Trường', - type: 'Loại', - name: 'Tên', - namePlaceholder: 'tên môi trường', - value: 'Giá trị', - valuePlaceholder: 'giá trị môi trường', - secretTip: 'Được sử dụng để xác định thông tin hoặc dữ liệu nhạy cảm, với cài đặt DSL được cấu hình để ngăn chặn rò rỉ.', - description: 'Mô tả', - descriptionPlaceholder: 'Mô tả biến', - }, - export: { - title: 'Xuất biến môi trường bí mật?', - checkbox: 'Xuất giá trị bí mật', - ignore: 'Xuất DSL', - export: 'Xuất DSL với giá trị bí mật', - }, - }, - globalVar: { - title: 'Biến hệ thống', - description: 'Biến hệ thống là biến toàn cục mà bất kỳ nút nào cũng có thể tham chiếu mà không cần nối dây khi kiểu dữ liệu phù hợp, chẳng hạn như ID người dùng cuối và ID quy trình làm việc.', - fieldsDescription: { - conversationId: 'ID cuộc trò chuyện', - dialogCount: 'Số lần trò chuyện', - userId: 'ID người dùng', - triggerTimestamp: 'Dấu thời gian ứng dụng bắt đầu chạy', - appId: 'ID ứng dụng', - workflowId: 'ID quy trình làm việc', - workflowRunId: 'ID lần chạy quy trình làm việc', - }, - }, - chatVariable: { - panelTitle: 'Biến Hội Thoại', - panelDescription: 'Biến Hội Thoại được sử dụng để lưu trữ thông tin tương tác mà LLM cần ghi nhớ, bao gồm lịch sử hội thoại, tệp đã tải lên, tùy chọn người dùng. Chúng có thể đọc và ghi được.', - docLink: 'Truy cập tài liệu của chúng tôi để tìm hiểu thêm.', - button: 'Thêm Biến', - modal: { - title: 'Thêm Biến Hội Thoại', - editTitle: 'Chỉnh Sửa Biến Hội Thoại', - name: 'Tên', - namePlaceholder: 'Tên biến', - type: 'Loại', - value: 'Giá Trị Mặc Định', - valuePlaceholder: 'Giá trị mặc định, để trống nếu không đặt', - description: 'Mô tả', - descriptionPlaceholder: 'Mô tả biến', - editInJSON: 'Chỉnh sửa dưới dạng JSON', - oneByOne: 'Thêm từng cái một', - editInForm: 'Chỉnh sửa trong Biểu mẫu', - arrayValue: 'Giá trị', - addArrayValue: 'Thêm Giá trị', - objectKey: 'Khóa', - objectType: 'Loại', - objectValue: 'Giá Trị Mặc Định', - }, - storedContent: 'Nội dung đã lưu', - updatedAt: 'Cập nhật lúc ', - }, - changeHistory: { - title: 'Lịch sử thay đổi', - placeholder: 'Bạn chưa thay đổi gì cả', - clearHistory: 'Xóa lịch sử', - hint: 'Gợi ý', - hintText: 'Các hành động chỉnh sửa của bạn được theo dõi trong lịch sử thay đổi, được lưu trên thiết bị của bạn trong suốt phiên làm việc này. Lịch sử này sẽ bị xóa khi bạn thoát khỏi trình soạn thảo.', - stepBackward_one: '{{count}} bước lùi', - stepBackward_other: '{{count}} bước lùi', - stepForward_one: '{{count}} bước tiến', - stepForward_other: '{{count}} bước tiến', - sessionStart: 'Bắt đầu phiên', - currentState: 'Trạng thái hiện tại', - noteAdd: 'Ghi chú đã thêm', - noteChange: 'Ghi chú đã thay đổi', - noteDelete: 'Ghi chú đã xóa', - nodeAdd: 'Đã thêm nút', - nodeChange: 'Node đã thay đổi', - nodeDescriptionChange: 'Mô tả nút đã thay đổi', - nodeTitleChange: 'Tiêu đề nút đã được thay đổi', - nodeDelete: 'Nút đã bị xóa', - nodeDragStop: 'Nút đã được di chuyển', - nodeConnect: 'Nút đã kết nối', - nodeResize: 'Kích thước nút đã được thay đổi', - nodePaste: 'Node đã dán', - edgeDelete: 'Nút đã bị ngắt kết nối', - }, - errorMsg: { - fieldRequired: '{{field}} là bắt buộc', - authRequired: 'Yêu cầu xác thực', - invalidJson: '{{field}} là JSON không hợp lệ', - fields: { - variable: 'Tên biến', - variableValue: 'Giá trị biến', - code: 'Mã', - model: 'Mô hình', - rerankModel: 'Mô hình xếp hạng lại', - visionVariable: 'Biến tầm nhìn', - }, - invalidVariable: 'Biến không hợp lệ', - rerankModelRequired: 'Trước khi bật Mô hình xếp hạng lại, vui lòng xác nhận rằng mô hình đã được định cấu hình thành công trong cài đặt.', - noValidTool: '{{field}} không chọn công cụ hợp lệ nào', - toolParameterRequired: '{{field}}: tham số [{{param}}] là bắt buộc', - startNodeRequired: 'Vui lòng thêm một nút bắt đầu trước {{operation}}', - }, - singleRun: { - testRun: 'Chạy thử nghiệm ', - startRun: 'Bắt đầu chạy', - running: 'Đang chạy', - testRunIteration: 'Lặp chạy thử nghiệm', - back: 'Quay lại', - iteration: 'Lặp', - loop: 'Vòng', - reRun: 'Chạy lại', - preparingDataSource: 'Chuẩn bị nguồn dữ liệu', - }, - tabs: { - 'tools': 'Công cụ', - 'allTool': 'Tất cả', - 'customTool': 'Tùy chỉnh', - 'workflowTool': 'Quy trình làm việc', - 'question-understand': 'Hiểu câu hỏi', - 'logic': 'Logic', - 'transform': 'Chuyển đổi', - 'utilities': 'Tiện ích', - 'noResult': 'Không tìm thấy kế. t quả phù hợp', - 'searchTool': 'Công cụ tìm kiếm', - 'agent': 'Chiến lược đại lý', - 'plugin': 'Plugin', - 'blocks': 'Nút', - 'searchBlock': 'Tìm kiếm nút', - 'allAdded': 'Tất cả đã được thêm vào', - 'addAll': 'Thêm tất cả', - 'sources': 'Nguồn', - 'searchDataSource': 'Tìm kiếm nguồn dữ liệu', - 'start': 'Bắt đầu', - 'searchTrigger': 'Tìm kiếm kích hoạt...', - 'allTriggers': 'Tất cả các trình kích hoạt', - 'noPluginsFound': 'Không tìm thấy plugin nào', - 'requestToCommunity': 'Yêu cầu gửi đến cộng đồng', - 'featuredTools': 'Nổi bật', - 'showMoreFeatured': 'Hiển thị thêm', - 'showLessFeatured': 'Hiện ít hơn', - 'installed': 'Đã cài đặt', - 'pluginByAuthor': 'Bởi {{author}}', - 'usePlugin': 'Chọn công cụ', - 'hideActions': 'Ẩn công cụ', - 'noFeaturedPlugins': 'Khám phá thêm các công cụ trong Marketplace', - 'noFeaturedTriggers': 'Khám phá thêm các yếu tố kích hoạt trong Marketplace', - 'startDisabledTip': 'Nút kích hoạt và nút nhập liệu của người dùng là loại trừ lẫn nhau.', - }, - blocks: { - 'start': 'Bắt đầu', - 'end': 'Đầu ra', - 'answer': 'Trả lời', - 'llm': 'LLM', - 'knowledge-retrieval': 'Truy xuất kiến thức', - 'question-classifier': 'Phân loại câu hỏi', - 'if-else': 'NẾU/NGƯỢC LẠI', - 'code': 'Mã', - 'template-transform': 'Mẫu', - 'http-request': 'Yêu cầu HTTP', - 'variable-assigner': 'Trình gán biến', - 'variable-aggregator': 'Trình tổng hợp biến', - 'assigner': 'Trình gán biến', - 'iteration-start': 'Bắt đầu lặp', - 'iteration': 'Lặp', - 'parameter-extractor': 'Trình trích xuất tham số', - 'list-operator': 'Toán tử danh sách', - 'document-extractor': 'Trình trích xuất tài liệu', - 'agent': 'Người đại lý', - 'loop': 'Vòng', - 'loop-end': 'Thoát vòng lặp', - 'loop-start': 'Bắt đầu vòng lặp', - 'datasource': 'Nguồn dữ liệu', - 'knowledge-index': 'Cơ sở kiến thức', - 'originalStartNode': 'nút bắt đầu gốc', - 'trigger-schedule': 'Kích hoạt theo lịch', - 'trigger-webhook': 'Kích hoạt Webhook', - 'trigger-plugin': 'Kích hoạt Plugin', - }, - blocksAbout: { - 'start': 'Định nghĩa các tham số ban đầu để khởi chạy quy trình làm việc', - 'end': 'Định nghĩa đầu ra và loại kết quả của quy trình làm việc', - 'answer': 'Định nghĩa nội dung trả lời của cuộc trò chuyện', - 'llm': 'Gọi các mô hình ngôn ngữ lớn để trả lời câu hỏi hoặc xử lý ngôn ngữ tự nhiên', - 'knowledge-retrieval': 'Cho phép truy vấn nội dung văn bản liên quan đến câu hỏi của người dùng từ cơ sở kiến thức', - 'question-classifier': 'Định nghĩa các điều kiện phân loại câu hỏi của người dùng, LLM có thể định nghĩa cách cuộc trò chuyện tiến triển dựa trên mô tả phân loại', - 'if-else': 'Cho phép phân chia quy trình làm việc thành hai nhánh dựa trên điều kiện if/else', - 'code': 'Thực thi một đoạn mã Python hoặc NodeJS để thực hiện logic tùy chỉnh', - 'template-transform': 'Chuyển đổi dữ liệu thành chuỗi bằng cú pháp mẫu Jinja', - 'http-request': 'Cho phép gửi các yêu cầu máy chủ qua giao thức HTTP', - 'variable-assigner': 'Tổng hợp các biến từ nhiều nhánh thành một biến duy nhất để cấu hình đồng nhất các nút cuối.', - 'assigner': 'Nút gán biến được sử dụng để gán giá trị cho các biến có thể ghi (như các biến hội thoại).', - 'variable-aggregator': 'Tổng hợp các biến từ nhiều nhánh thành một biến duy nhất để cấu hình đồng nhất các nút cuối.', - 'iteration': 'Thực hiện nhiều bước trên một đối tượng danh sách cho đến khi tất cả các kết quả được xuất ra.', - 'parameter-extractor': 'Sử dụng LLM để trích xuất các tham số có cấu trúc từ ngôn ngữ tự nhiên để gọi công cụ hoặc yêu cầu HTTP.', - 'document-extractor': 'Được sử dụng để phân tích cú pháp các tài liệu đã tải lên thành nội dung văn bản dễ hiểu bởi LLM.', - 'list-operator': 'Được sử dụng để lọc hoặc sắp xếp nội dung mảng.', - 'agent': 'Gọi các mô hình ngôn ngữ lớn để trả lời câu hỏi hoặc xử lý ngôn ngữ tự nhiên', - 'loop': 'Thực hiện một vòng lặp logic cho đến khi điều kiện dừng được đáp ứng hoặc số lần lặp tối đa được đạt.', - 'loop-end': 'Tương đương với "dừng lại". Nút này không có các mục cấu hình. Khi thân vòng lặp đến nút này, vòng lặp sẽ kết thúc.', - 'datasource': 'Nguồn dữ liệu Giới thiệu', - 'knowledge-index': 'Cơ sở kiến thức về', - 'trigger-schedule': 'Trình kích hoạt quy trình làm việc theo thời gian bắt đầu các quy trình làm việc theo lịch', - 'trigger-webhook': 'Webhook Trigger nhận các yêu cầu HTTP từ các hệ thống bên thứ ba để tự động kích hoạt các quy trình làm việc.', - 'trigger-plugin': 'Kích hoạt tích hợp bên thứ ba khởi chạy quy trình từ các sự kiện trên nền tảng bên ngoài', - }, - operator: { - zoomIn: 'Phóng to', - zoomOut: 'Thu nhỏ', - zoomTo50: 'Phóng to 50%', - zoomTo100: 'Phóng to 100%', - zoomToFit: 'Phóng to vừa màn hình', - alignBottom: 'Dưới', - alignMiddle: 'Giữa', - alignRight: 'Phải', - alignNodes: 'Căn chỉnh các nút', - alignLeft: 'Trái', - horizontal: 'Ngang', - alignCenter: 'Giữa', - alignTop: 'Trên', - distributeVertical: 'Phân bố theo chiều dọc', - selectionAlignment: 'Căn chỉnh lựa chọn', - distributeHorizontal: 'Phân bố theo chiều ngang', - vertical: 'Dọc', - }, - panel: { - userInputField: 'Trường đầu vào của người dùng', - helpLink: 'Trung tâm trợ giúp', - about: 'Giới thiệu', - createdBy: 'Tạo bởi ', - nextStep: 'Bước tiếp theo', - runThisStep: 'Chạy bước này', - checklist: 'Danh sách kiểm tra', - checklistTip: 'Đảm bảo rằng tất cả các vấn đề đã được giải quyết trước khi xuất bản', - checklistResolved: 'Tất cả các vấn đề đã được giải quyết', - change: 'Thay đổi', - optional: '(tùy chọn)', - changeBlock: 'Thay đổi Node', - selectNextStep: 'Chọn bước tiếp theo', - organizeBlocks: 'Tổ chức các nút', - addNextStep: 'Thêm bước tiếp theo trong quy trình này', - maximize: 'Tối đa hóa Canvas', - minimize: 'Thoát chế độ toàn màn hình', - scrollToSelectedNode: 'Cuộn đến nút đã chọn', - optional_and_hidden: '(tùy chọn & ẩn)', - goTo: 'Đi tới', - startNode: 'Nút Bắt đầu', - openWorkflow: 'Mở quy trình làm việc', - }, - nodes: { - common: { - outputVars: 'Biến đầu ra', - insertVarTip: 'Chèn biến', - memory: { - memory: 'Bộ nhớ', - memoryTip: 'Cài đặt bộ nhớ cuộc trò chuyện', - windowSize: 'Kích thước cửa sổ', - conversationRoleName: 'Tên vai trò cuộc trò chuyện', - user: 'Tiền tố người dùng', - assistant: 'Tiền tố trợ lý', - }, - memories: { - title: 'Bộ nhớ', - tip: 'Bộ nhớ cuộc trò chuyện', - builtIn: 'Tích hợp sẵn', - }, - errorHandle: { - none: { - title: 'Không ai', - desc: 'Nút sẽ ngừng chạy nếu xảy ra ngoại lệ và không được xử lý', - }, - defaultValue: { - title: 'Giá trị mặc định', - desc: 'Khi xảy ra lỗi, hãy chỉ định nội dung đầu ra tĩnh.', - tip: 'Nếu lỗi, sẽ trả về giá trị dưới đó.', - inLog: 'Ngoại lệ nút, xuất theo giá trị mặc định.', - output: 'Giá trị mặc định đầu ra', - }, - failBranch: { - title: 'Chi nhánh thất bại', - desc: 'Khi xảy ra lỗi, nó sẽ thực thi nhánh ngoại lệ', - customize: 'Chuyển đến canvas để tùy chỉnh logic nhánh thất bại.', - customizeTip: 'Khi nhánh fail được kích hoạt, các ngoại lệ do các nút ném sẽ không chấm dứt quá trình. Thay vào đó, nó sẽ tự động thực thi nhánh lỗi được xác định trước, cho phép bạn linh hoạt cung cấp thông báo lỗi, báo cáo, bản sửa lỗi hoặc bỏ qua các hành động.', - inLog: 'Node exception, sẽ tự động thực thi nhánh fail. Đầu ra nút sẽ trả về loại lỗi và thông báo lỗi và chuyển chúng đến hạ lưu.', - }, - partialSucceeded: { - tip: 'Có {{num}} node trong quá trình chạy bất thường, vui lòng truy tìm để kiểm tra nhật ký.', - }, - tip: 'Chiến lược xử lý ngoại lệ, được kích hoạt khi một nút gặp phải ngoại lệ.', - title: 'Xử lý lỗi', - }, - retry: { - retry: 'Thử lại', - maxRetries: 'Số lần thử lại tối đa', - retryInterval: 'Khoảng thời gian thử lại', - retryTimes: 'Thử lại {{lần}} lần khi không thành công', - retrying: 'Thử lại...', - retrySuccessful: 'Thử lại thành công', - retryFailed: 'Thử lại không thành công', - retryFailedTimes: '{{lần}} lần thử lại không thành công', - retries: '{{số}} Thử lại', - retryOnFailure: 'Thử lại khi không thành công', - times: 'lần', - ms: 'Ms', - }, - typeSwitch: { - input: 'Giá trị đầu vào', - variable: 'Sử dụng biến', - }, - inputVars: 'Biến đầu vào', - pluginNotInstalled: 'Plugin chưa được cài đặt', - }, - start: { - required: 'bắt buộc', - inputField: 'Trường đầu vào', - builtInVar: 'Biến tích hợp sẵn', - outputVars: { - query: 'Đầu vào của người dùng', - memories: { - des: 'Lịch sử cuộc trò chuyện', - type: 'loại tin nhắn', - content: 'nội dung tin nhắn', - }, - files: 'Danh sách tệp', - }, - noVarTip: 'Đặt các đầu vào có thể sử dụng trong Quy trình làm việc', - }, - end: { - outputs: 'Đầu ra', - output: { - type: 'loại đầu ra', - variable: 'biến đầu ra', - }, - type: { - 'none': 'Không có', - 'plain-text': 'Văn bản thuần', - 'structured': 'Cấu trúc', - }, - }, - answer: { - answer: 'Trả lời', - outputVars: 'Biến đầu ra', - }, - llm: { - model: 'mô hình', - variables: 'biến', - context: 'ngữ cảnh', - contextTooltip: 'Bạn có thể nhập Kiến thức làm ngữ cảnh', - notSetContextInPromptTip: 'Để kích hoạt tính năng ngữ cảnh, vui lòng điền biến ngữ cảnh vào PROMPT.', - prompt: 'prompt', - roleDescription: { - system: 'Cung cấp hướng dẫn cấp cao cho cuộc trò chuyện', - user: 'Cung cấp hướng dẫn, câu hỏi hoặc bất kỳ đầu vào văn bản nào cho mô hình', - assistant: 'Các phản hồi của mô hình dựa trên tin nhắn của người dùng', - }, - addMessage: 'Thêm tin nhắn', - vision: 'tầm nhìn', - files: 'Tệp', - resolution: { - name: 'Độ phân giải', - high: 'Cao', - low: 'Thấp', - }, - outputVars: { - output: 'Nội dung được tạo', - reasoning_content: 'Nội dung lập luận', - usage: 'Thông tin sử dụng mô hình', - }, - singleRun: { - variable: 'Biến', - }, - sysQueryInUser: 'sys.query trong tin nhắn của người dùng là bắt buộc', - jsonSchema: { - warningTips: { - saveSchema: 'Vui lòng hoàn thành việc chỉnh sửa trường hiện tại trước khi lưu sơ đồ.', - }, - promptTooltip: 'Chuyển mô tả văn bản thành cấu trúc JSON Schema chuẩn.', - stringValidations: 'Xác thực chuỗi', - instruction: 'Hướng dẫn', - regenerate: 'Tái tạo', - fieldNamePlaceholder: 'Tên trường', - generateJsonSchema: 'Tạo Schema JSON', - back: 'Quay lại', - import: 'Nhập khẩu từ JSON', - generationTip: 'Bạn có thể sử dụng ngôn ngữ tự nhiên để tạo nhanh một JSON Schema.', - doc: 'Tìm hiểu thêm về đầu ra có cấu trúc', - required: 'cần thiết', - generate: 'Tạo ra', - addField: 'Thêm trường', - resultTip: 'Đây là kết quả đã được tạo ra. Nếu bạn không hài lòng, bạn có thể quay lại và chỉnh sửa yêu cầu của mình.', - generating: 'Tạo sơ đồ JSON...', - descriptionPlaceholder: 'Thêm mô tả', - resetDefaults: 'Đặt lại', - promptPlaceholder: 'Mô tả Sơ đồ JSON của bạn...', - showAdvancedOptions: 'Hiển thị tùy chọn nâng cao', - generatedResult: 'Kết quả được tạo ra', - apply: 'Áp dụng', - addChildField: 'Thêm trường trẻ em', - title: 'Sơ đồ đầu ra có cấu trúc', - }, - reasoningFormat: { - tagged: 'Giữ lại thẻ suy nghĩ', - tooltip: 'Trích xuất nội dung từ các thẻ think và lưu nó vào trường reasoning_content.', - separated: 'Tách biệt các thẻ suy nghĩ', - title: 'Bật chế độ phân tách nhãn lý luận', - }, - }, - knowledgeRetrieval: { - queryVariable: 'Biến truy vấn', - knowledge: 'Kiến thức', - outputVars: { - output: 'Dữ liệu phân đoạn được truy xuất', - content: 'Nội dung phân đoạn', - title: 'Tiêu đề phân đoạn', - icon: 'Biểu tượng phân đoạn', - url: 'URL phân đoạn', - metadata: 'Siêu dữ liệu khác', - files: 'Các tệp đã được truy xuất', - }, - metadata: { - options: { - disabled: { - subTitle: 'Không bật lọc siêu dữ liệu', - title: 'Tắt', - }, - automatic: { - desc: 'Tự động tạo điều kiện lọc siêu dữ liệu dựa trên biến truy vấn', - title: 'Tự động', - subTitle: 'Tự động tạo điều kiện lọc siêu dữ liệu dựa trên truy vấn của người dùng', - }, - manual: { - title: 'Hướng dẫn', - subTitle: 'Thêm thủ công các điều kiện lọc siêu dữ liệu', - }, - }, - panel: { - add: 'Thêm điều kiện', - conditions: 'Điều kiện', - title: 'Điều kiện lọc siêu dữ liệu', - select: 'Chọn biến...', - datePlaceholder: 'Chọn một thời gian...', - placeholder: 'Nhập giá trị', - search: 'Tìm kiếm siêu dữ liệu', - }, - title: 'Lọc siêu dữ liệu', - tip: 'Lọc siêu dữ liệu là quá trình sử dụng các thuộc tính siêu dữ liệu (chẳng hạn như thẻ, danh mục hoặc quyền truy cập) để tinh chỉnh và kiểm soát việc truy xuất thông tin liên quan trong một hệ thống.', - }, - queryText: 'Văn bản truy vấn', - queryAttachment: 'Truy vấn hình ảnh', - }, - http: { - inputVars: 'Biến đầu vào', - api: 'API', - apiPlaceholder: 'Nhập URL, gõ ‘/’ để chèn biến', - notStartWithHttp: 'API phải bắt đầu bằng http:// hoặc https://', - key: 'Khóa', - value: 'Giá trị', - bulkEdit: 'Chỉnh sửa hàng loạt', - keyValueEdit: 'Chỉnh sửa khóa-giá trị', - headers: 'Tiêu đề', - params: 'Tham số', - body: 'Nội dung', - outputVars: { - body: 'Nội dung phản hồi', - statusCode: 'Mã trạng thái phản hồi', - headers: 'Danh sách tiêu đề phản hồi JSON', - files: 'Danh sách tệp', - }, - authorization: { - 'authorization': 'Ủy quyền', - 'authorizationType': 'Loại ủy quyền', - 'no-auth': 'Không có', - 'api-key': 'Khóa API', - 'auth-type': 'Loại xác thực', - 'basic': 'Cơ bản', - 'bearer': 'Bearer', - 'custom': 'Tùy chỉnh', - 'api-key-title': 'Khóa API', - 'header': 'Tiêu đề', - }, - insertVarPlaceholder: 'gõ \'/\' để chèn biến', - timeout: { - title: 'Thời gian chờ', - connectLabel: 'Thời gian chờ kết nối', - connectPlaceholder: 'Nhập thời gian chờ kết nối tính bằng giây', - readLabel: 'Thời gian chờ đọc', - readPlaceholder: 'Nhập thời gian chờ đọc tính bằng giây', - writeLabel: 'Thời gian chờ ghi', - writePlaceholder: 'Nhập thời gian chờ ghi tính bằng giây', - }, - binaryFileVariable: 'Biến tệp nhị phân', - type: 'Kiểu', - extractListPlaceholder: 'Nhập chỉ mục mục danh sách, nhập \'/\' chèn biến', - curl: { - title: 'Nhập từ cURL', - placeholder: 'Dán chuỗi cURL vào đây', - }, - verifySSL: { - title: 'Xác thực chứng chỉ SSL', - warningTooltip: 'Việc vô hiệu hóa xác minh SSL không được khuyến khích cho các môi trường sản xuất. Điều này chỉ nên được sử dụng trong phát triển hoặc thử nghiệm, vì nó làm cho kết nối dễ bị tổn thương trước các mối đe dọa an ninh như cuộc tấn công man-in-the-middle.', - }, - }, - code: { - inputVars: 'Biến đầu vào', - outputVars: 'Biến đầu ra', - advancedDependencies: 'Phụ thuộc nâng cao', - advancedDependenciesTip: 'Thêm một số phụ thuộc được tải trước mà tốn nhiều thời gian hoặc không phải là mặc định tại đây', - searchDependencies: 'Tìm kiếm phụ thuộc', - syncFunctionSignature: 'Đồng bộ chữ ký hàm với mã', - }, - templateTransform: { - inputVars: 'Biến đầu vào', - code: 'Mã', - codeSupportTip: 'Chỉ hỗ trợ Jinja2', - outputVars: { - output: 'Nội dung chuyển đổi', - }, - }, - ifElse: { - if: 'Nếu', - else: 'Ngược lại', - elseDescription: 'Sử dụng để xác định logic sẽ thực hiện khi điều kiện if không được thỏa mãn.', - and: 'và', - or: 'hoặc', - operator: 'Toán tử', - notSetVariable: 'Vui lòng đặt biến trước', - comparisonOperator: { - 'contains': 'chứa', - 'not contains': 'không chứa', - 'start with': 'bắt đầu bằng', - 'end with': 'kết thúc bằng', - 'is': 'là', - 'is not': 'không là', - 'empty': 'trống', - 'not empty': 'không trống', - 'null': 'là null', - 'not null': 'không là null', - 'exists': 'Tồn tại', - 'not exists': 'không tồn tại', - 'not in': 'không có trong', - 'in': 'trong', - 'all of': 'tất cả', - 'before': 'trước', - 'after': 'sau', - }, - enterValue: 'Nhập giá trị', - addCondition: 'Thêm điều kiện', - conditionNotSetup: 'Điều kiện chưa được thiết lập', - selectVariable: 'Chọn biến...', - optionName: { - video: 'Video', - image: 'Ảnh', - url: 'Địa chỉ', - audio: 'Âm thanh', - doc: 'Doc', - localUpload: 'Tải lên cục bộ', - }, - addSubVariable: 'Biến phụ', - select: 'Lựa', - }, - variableAssigner: { - title: 'Gán biến', - outputType: 'Loại đầu ra', - varNotSet: 'Biến chưa được đặt', - noVarTip: 'Thêm các biến cần gán', - type: { - string: 'Chuỗi', - number: 'Số', - object: 'Đối tượng', - array: 'Mảng', - }, - aggregationGroup: 'Nhóm tổng hợp', - aggregationGroupTip: 'Bật tính năng này cho phép trình tổng hợp biến tổng hợp nhiều bộ biến.', - addGroup: 'Thêm nhóm', - outputVars: { - varDescribe: 'Đầu ra {{groupName}}', - }, - setAssignVariable: 'Đặt biến gán', - }, - assigner: { - 'assignedVariable': 'Biến Được Gán', - 'writeMode': 'Chế Độ Ghi', - 'writeModeTip': 'Khi BIẾN ĐƯỢC GÁN là một mảng, chế độ thêm sẽ thêm vào cuối.', - 'over-write': 'Ghi đè', - 'append': 'Thêm vào', - 'plus': 'Cộng', - 'clear': 'Xóa', - 'setVariable': 'Đặt Biến', - 'variable': 'Biến', - 'operations': { - '-=': '-=', - 'over-write': 'Ghi đè lên', - 'clear': 'Trong', - 'append': 'Thêm', - 'title': 'Hoạt động', - '*=': '*=', - '/=': '/=', - 'extend': 'Mở rộng', - '+=': '+=', - 'set': 'Cài', - 'overwrite': 'Ghi đè lên', - 'remove-last': 'Xóa Lần Cuối', - 'remove-first': 'Xóa đầu tiên', - }, - 'setParameter': 'Đặt tham số...', - 'selectAssignedVariable': 'Chọn biến được gán...', - 'noVarTip': 'Nhấp vào nút "+" để thêm biến', - 'assignedVarsDescription': 'Các biến được gán phải là các biến có thể ghi, chẳng hạn như các biến hội thoại.', - 'varNotSet': 'Biến KHÔNG được đặt', - 'noAssignedVars': 'Không có biến được gán sẵn có', - 'variables': 'Biến', - }, - tool: { - inputVars: 'Biến đầu vào', - outputVars: { - text: 'nội dung do công cụ tạo ra', - files: { - title: 'tệp do công cụ tạo ra', - type: 'Loại hỗ trợ. Hiện tại chỉ hỗ trợ hình ảnh', - transfer_method: 'Phương pháp truyền. Giá trị là remote_url hoặc local_file', - url: 'URL hình ảnh', - upload_file_id: 'ID tệp đã tải lên', - }, - json: 'JSON được tạo bởi công cụ', - }, - authorize: 'Ủy quyền', - settings: 'Cài đặt', - insertPlaceholder2: 'Chèn biến vào', - insertPlaceholder1: 'Gõ hoặc nhấn', - }, - questionClassifiers: { - model: 'mô hình', - inputVars: 'Biến đầu vào', - outputVars: { - className: 'Tên lớp', - usage: 'Thông tin sử dụng mô hình', - }, - class: 'Lớp', - classNamePlaceholder: 'Viết tên lớp của bạn', - advancedSetting: 'Cài đặt nâng cao', - topicName: 'Tên chủ đề', - topicPlaceholder: 'Viết tên chủ đề của bạn', - addClass: 'Thêm lớp', - instruction: 'Hướng dẫn', - instructionTip: 'Nhập hướng dẫn bổ sung để giúp trình phân loại câu hỏi hiểu rõ hơn về cách phân loại câu hỏi.', - instructionPlaceholder: 'Viết hướng dẫn của bạn', - }, - parameterExtractor: { - inputVar: 'Biến đầu vào', - outputVars: { - isSuccess: 'Thành công. Khi thành công giá trị là 1, khi thất bại giá trị là 0.', - errorReason: 'Lý do lỗi', - usage: 'Thông tin sử dụng mô hình', - }, - extractParameters: 'Trích xuất tham số', - importFromTool: 'Nhập từ công cụ', - addExtractParameter: 'Thêm tham số trích xuất', - addExtractParameterContent: { - name: 'Tên', - namePlaceholder: 'Tên tham số trích xuất', - type: 'Loại', - typePlaceholder: 'Loại tham số trích xuất', - description: 'Mô tả', - descriptionPlaceholder: 'Mô tả tham số trích xuất', - required: 'Bắt buộc', - requiredContent: 'Bắt buộc chỉ được sử dụng làm tài liệu tham khảo cho suy luận mô hình và không phải để xác thực bắt buộc của đầu ra tham số.', - }, - extractParametersNotSet: 'Tham số trích xuất chưa được thiết lập', - instruction: 'Hướng dẫn', - instructionTip: 'Nhập hướng dẫn bổ sung để giúp trình trích xuất tham số hiểu rõ hơn về cách trích xuất tham số.', - advancedSetting: 'Cài đặt nâng cao', - reasoningMode: 'Chế độ suy luận', - reasoningModeTip: 'Bạn có thể chọn chế độ suy luận phù hợp dựa trên khả năng của mô hình để phản hồi các hướng dẫn về việc gọi hàm hoặc prompt.', - }, - iteration: { - deleteTitle: 'Xóa nút lặp?', - deleteDesc: 'Xóa nút lặp sẽ xóa tất cả các nút con', - input: 'Đầu vào', - output: 'Biến đầu ra', - iteration_one: '{{count}} Lặp', - iteration_other: '{{count}} Lặp', - currentIteration: 'Lặp hiện tại', - ErrorMethod: { - operationTerminated: 'Chấm dứt', - removeAbnormalOutput: 'loại bỏ-bất thường-đầu ra', - continueOnError: 'Tiếp tục lỗi', - }, - comma: ',', - error_other: '{{đếm}} Lỗi', - error_one: '{{đếm}} Lỗi', - MaxParallelismTitle: 'Song song tối đa', - parallelPanelDesc: 'Ở chế độ song song, các tác vụ trong quá trình lặp hỗ trợ thực thi song song.', - parallelMode: 'Chế độ song song', - parallelModeEnableTitle: 'Đã bật Chế độ song song', - errorResponseMethod: 'Phương pháp phản hồi lỗi', - MaxParallelismDesc: 'Tính song song tối đa được sử dụng để kiểm soát số lượng tác vụ được thực hiện đồng thời trong một lần lặp.', - answerNodeWarningDesc: 'Cảnh báo chế độ song song: Các nút trả lời, bài tập biến hội thoại và các thao tác đọc/ghi liên tục trong các lần lặp có thể gây ra ngoại lệ.', - parallelModeEnableDesc: 'Trong chế độ song song, các tác vụ trong các lần lặp hỗ trợ thực thi song song. Bạn có thể định cấu hình điều này trong bảng thuộc tính ở bên phải.', - parallelModeUpper: 'CHẾ ĐỘ SONG SONG', - flattenOutput: 'Làm phẳng đầu ra', - flattenOutputDesc: 'Khi bật, nếu tất cả các kết quả vòng lặp là mảng, chúng sẽ được gộp thành một mảng duy nhất. Khi tắt, các kết quả sẽ giữ nguyên cấu trúc mảng lồng nhau.', - }, - note: { - editor: { - openLink: 'Mở', - italic: 'Nghiêng', - link: 'Liên kết', - medium: 'Đau vừa', - small: 'Nhỏ', - placeholder: 'Viết ghi chú của bạn...', - large: 'Lớn', - showAuthor: 'Hiển thị tác giả', - bulletList: 'Danh sách dấu đầu dòng', - bold: 'Dũng cảm', - unlink: 'Hủy liên kết', - invalidUrl: 'URL không hợp lệ', - strikethrough: 'Gạch ngang', - enterUrl: 'Nhập URL...', - }, - addNote: 'Thêm ghi chú', - }, - docExtractor: { - outputVars: { - text: 'Văn bản trích xuất', - }, - learnMore: 'Tìm hiểu thêm', - inputVar: 'Biến đầu vào', - supportFileTypes: 'Các loại tệp hỗ trợ: {{types}}.', - }, - listFilter: { - outputVars: { - last_record: 'Kỷ lục cuối cùng', - first_record: 'Kỷ lục đầu tiên', - result: 'Lọc kết quả', - }, - orderBy: 'Đặt hàng theo', - selectVariableKeyPlaceholder: 'Chọn khóa biến phụ', - inputVar: 'Biến đầu vào', - desc: 'DESC', - filterConditionKey: 'Khóa điều kiện bộ lọc', - filterConditionComparisonValue: 'Giá trị Điều kiện lọc', - limit: 'Top N', - filterCondition: 'Điều kiện lọc', - asc: 'ASC', - filterConditionComparisonOperator: 'Toán tử so sánh điều kiện bộ lọc', - extractsCondition: 'Giải nén mục N', - }, - agent: { - strategy: { - selectTip: 'Chọn chiến lược tác nhân', - searchPlaceholder: 'Chiến lược tác nhân tìm kiếm', - shortLabel: 'Chiến lược', - configureTipDesc: 'Sau khi cấu hình chiến lược tác nhân, nút này sẽ tự động tải các cấu hình còn lại. Chiến lược sẽ ảnh hưởng đến cơ chế suy luận công cụ nhiều bước.', - tooltip: 'Các chiến lược Agentic khác nhau xác định cách hệ thống lập kế hoạch và thực hiện các cuộc gọi công cụ nhiều bước', - label: 'Chiến lược đại lý', - configureTip: 'Vui lòng định cấu hình chiến lược tác nhân.', - }, - pluginInstaller: { - install: 'Cài đặt', - installing: 'Cài đặt', - }, - modelNotInMarketplace: { - title: 'Mô hình chưa được cài đặt', - manageInPlugins: 'Quản lý trong Plugins', - desc: 'Mô hình này được cài đặt từ kho lưu trữ cục bộ hoặc GitHub. Vui lòng sử dụng sau khi cài đặt.', - }, - modelNotSupport: { - desc: 'Phiên bản plugin đã cài đặt không cung cấp mô hình này.', - title: 'Mô hình không được hỗ trợ', - descForVersionSwitch: 'Phiên bản plugin đã cài đặt không cung cấp mô hình này. Nhấp để chuyển đổi phiên bản.', - }, - modelSelectorTooltips: { - deprecated: 'Mô hình này không còn được dùng nữa', - }, - outputVars: { - files: { - title: 'Tệp do tác nhân tạo', - transfer_method: 'Phương thức chuyển khoản. Giá trị là remote_url hoặc local_file', - upload_file_id: 'Tải lên id tệp', - type: 'Loại hỗ trợ. Bây giờ chỉ hỗ trợ hình ảnh', - url: 'URL hình ảnh', - }, - json: 'JSON do tác nhân tạo', - text: 'Nội dung do tác nhân tạo', - usage: 'Thông tin sử dụng mô hình', - }, - checkList: { - strategyNotSelected: 'Chiến lược không được chọn', - }, - installPlugin: { - install: 'Cài đặt', - cancel: 'Hủy', - title: 'Cài đặt Plugin', - desc: 'Giới thiệu cài đặt plugin sau', - changelog: 'Nhật ký thay đổi', - }, - toolNotAuthorizedTooltip: '{{công cụ}} Không được ủy quyền', - unsupportedStrategy: 'Chiến lược không được hỗ trợ', - toolNotInstallTooltip: '{{tool}} không được cài đặt', - strategyNotFoundDescAndSwitchVersion: 'Phiên bản plugin đã cài đặt không cung cấp chiến lược này. Nhấp để chuyển đổi phiên bản.', - strategyNotInstallTooltip: '{{strategy}} không được cài đặt', - modelNotInstallTooltip: 'Mô hình này không được cài đặt', - strategyNotSet: 'Chiến lược tác nhân không được thiết lập', - linkToPlugin: 'Liên kết đến Plugins', - configureModel: 'Định cấu hình mô hình', - pluginNotInstalledDesc: 'Plugin này được cài đặt từ GitHub. Vui lòng vào Plugins để cài đặt lại', - modelNotSelected: 'Mô hình không được chọn', - learnMore: 'Tìm hiểu thêm', - pluginNotInstalled: 'Plugin này chưa được cài đặt', - model: 'mẫu', - pluginNotFoundDesc: 'Plugin này được cài đặt từ GitHub. Vui lòng vào Plugins để cài đặt lại', - maxIterations: 'Số lần lặp lại tối đa', - tools: 'Công cụ', - notAuthorized: 'Không được ủy quyền', - strategyNotFoundDesc: 'Phiên bản plugin đã cài đặt không cung cấp chiến lược này.', - toolbox: 'hộp công cụ', - clickToViewParameterSchema: 'Nhấp để xem sơ đồ tham số', - parameterSchema: 'Sơ đồ Tham số', - }, - loop: { - ErrorMethod: { - continueOnError: 'Tiếp tục khi có lỗi', - removeAbnormalOutput: 'Xóa đầu ra bất thường', - operationTerminated: 'Chấm dứt', - }, - breakConditionTip: 'Chỉ có thể tham chiếu đến các biến trong vòng lặp có điều kiện kết thúc và các biến hội thoại.', - deleteTitle: 'Xóa nút vòng lặp?', - variableName: 'Tên Biến', - input: 'Nhập', - exitConditionTip: 'Một nút vòng lặp cần ít nhất một điều kiện thoát.', - breakCondition: 'Điều kiện dừng vòng lặp', - totalLoopCount: 'Tổng số lần lặp: {{count}}', - setLoopVariables: 'Đặt biến trong phạm vi vòng lặp', - currentLoopCount: 'Số vòng lặp hiện tại: {{count}}', - deleteDesc: 'Xóa nút vòng sẽ xóa tất cả các nút con', - inputMode: 'Chế độ đầu vào', - currentLoop: 'Vòng lặp hiện tại', - loopMaxCountError: 'Vui lòng nhập số vòng lặp tối đa hợp lệ, trong khoảng từ 1 đến {{maxCount}}', - loop_other: '{{count}} Vòng lặp', - finalLoopVariables: 'Biến Vòng Lặp Cuối', - initialLoopVariables: 'Biến Vòng Lặp Đầu Tiên', - loop_one: '{{count}} Vòng lặp', - error_other: '{{count}} Lỗi', - output: 'Biến đầu ra', - errorResponseMethod: 'Phương pháp phản hồi lỗi', - loopMaxCount: 'Số lần lặp tối đa', - comma: ',', - loopVariables: 'Biến Lặp', - error_one: '{{count}} Lỗi', - loopNode: 'Nút Lặp', - }, - dataSource: { - supportedFileFormats: 'Các định dạng tệp được hỗ trợ', - supportedFileFormatsPlaceholder: 'Phần mở rộng tệp, e.g. doc', - add: 'Thêm nguồn dữ liệu', - }, - knowledgeBase: { - chunkStructureTip: { - learnMore: 'Tìm hiểu thêm', - message: 'Cơ sở kiến thức Dify hỗ trợ ba cấu trúc phân đoạn: General, Parent-child và Q&A. Mỗi cơ sở tri thức chỉ có thể có một cấu trúc. Đầu ra từ nút trước đó phải phù hợp với cấu trúc chunk đã chọn. Lưu ý rằng việc lựa chọn cấu trúc chunking ảnh hưởng đến các phương thức index có sẵn.', - title: 'Vui lòng chọn cấu trúc chunk', - }, - chunkIsRequired: 'Cấu trúc chunk là bắt buộc', - chunkStructure: 'Cấu trúc Chunk', - aboutRetrieval: 'về phương pháp truy xuất.', - retrievalSettingIsRequired: 'Cài đặt truy xuất là bắt buộc', - changeChunkStructure: 'Thay đổi cấu trúc chunk', - chooseChunkStructure: 'Chọn cấu trúc chunk', - indexMethodIsRequired: 'Phương pháp chỉ mục là bắt buộc', - chunksInput: 'Mảnh', - chunksInputTip: 'Biến đầu vào của nút cơ sở tri thức là Chunks. Loại biến là một đối tượng với một JSON Schema cụ thể mà phải nhất quán với cấu trúc chunk đã chọn.', - chunksVariableIsRequired: 'Biến Chunks là bắt buộc', - embeddingModelIsRequired: 'Cần có mô hình nhúng', - rerankingModelIsRequired: 'Cần có mô hình sắp xếp lại', - embeddingModelIsInvalid: 'Mô hình nhúng không hợp lệ', - rerankingModelIsInvalid: 'Mô hình xếp hạng lại không hợp lệ', - }, - triggerPlugin: { - authorized: 'Được ủy quyền', - notConfigured: 'Chưa được cấu hình', - notAuthorized: 'Không được ủy quyền', - selectSubscription: 'Chọn gói đăng ký', - availableSubscriptions: 'Các gói đăng ký có sẵn', - addSubscription: 'Thêm đăng ký mới', - removeSubscription: 'Hủy đăng ký', - subscriptionRemoved: 'Đã hủy đăng ký thành công', - error: 'Lỗi', - configuration: 'Cấu hình', - remove: 'Xóa', - or: 'HOẶC', - useOAuth: 'Sử dụng OAuth', - useApiKey: 'Sử dụng Khóa API', - authenticationFailed: 'Xác thực thất bại', - authenticationSuccess: 'Xác thực thành công', - oauthConfigFailed: 'Cấu hình OAuth thất bại', - configureOAuthClient: 'Cấu hình Khách hàng OAuth', - oauthClientDescription: 'Cấu hình thông tin đăng nhập OAuth của khách hàng để kích hoạt xác thực', - oauthClientSaved: 'Cấu hình khách hàng OAuth đã được lưu thành công', - configureApiKey: 'Cấu hình Khóa API', - apiKeyDescription: 'Cấu hình thông tin xác thực khóa API để xác thực', - apiKeyConfigured: 'Khóa API đã được cấu hình thành công', - configurationFailed: 'Cấu hình thất bại', - failedToStart: 'Không thể bắt đầu quy trình xác thực', - credentialsVerified: 'Thông tin đăng nhập đã được xác minh thành công', - credentialVerificationFailed: 'Xác minh thông tin đăng nhập thất bại', - verifyAndContinue: 'Xác minh & Tiếp tục', - configureParameters: 'Cấu hình tham số', - parametersDescription: 'Cấu hình tham số và thuộc tính của bộ kích hoạt', - configurationComplete: 'Cấu hình hoàn tất', - configurationCompleteDescription: 'Bộ kích hoạt của bạn đã được cấu hình thành công', - configurationCompleteMessage: 'Cấu hình kích hoạt của bạn đã hoàn tất và sẵn sàng sử dụng.', - parameters: 'Tham số', - properties: 'Thuộc tính', - propertiesDescription: 'Các thuộc tính cấu hình bổ sung cho bộ kích hoạt này', - noConfigurationRequired: 'Không cần cấu hình thêm cho bộ kích hoạt này.', - subscriptionName: 'Tên thuê bao', - subscriptionNameDescription: 'Nhập tên duy nhất cho đăng ký kích hoạt này', - subscriptionNamePlaceholder: 'Nhập tên gói đăng ký...', - subscriptionNameRequired: 'Tên đăng ký là bắt buộc', - subscriptionRequired: 'Cần phải đăng ký', - }, - triggerSchedule: { - title: 'Lịch trình', - nodeTitle: 'Kích hoạt theo lịch', - notConfigured: 'Chưa được cấu hình', - useCronExpression: 'Sử dụng biểu thức cron', - useVisualPicker: 'Sử dụng trình chọn trực quan', - frequency: { - label: 'Tần suất', - hourly: 'Theo giờ', - daily: 'Hàng ngày', - weekly: 'Hàng tuần', - monthly: 'Hàng tháng', - }, - selectFrequency: 'Chọn tần suất', - frequencyLabel: 'Tần số', - nextExecution: 'Lần thi hành tiếp theo', - weekdays: 'Các ngày trong tuần', - time: 'Thời gian', - cronExpression: 'Biểu thức Cron', - nextExecutionTime: 'THỜI GIAN THỰC THI TIẾP THEO', - nextExecutionTimes: '5 lần thực thi tiếp theo', - startTime: 'Thời gian bắt đầu', - executeNow: 'Thực thi ngay', - selectDateTime: 'Chọn Ngày & Giờ', - hours: 'Giờ', - minutes: 'Phút', - onMinute: 'Trong một phút', - days: 'Ngày', - lastDay: 'Ngày cuối cùng', - lastDayTooltip: 'Không phải tất cả các tháng đều có 31 ngày. Sử dụng tùy chọn \'ngày cuối cùng\' để chọn ngày cuối cùng của mỗi tháng.', - mode: 'Chế độ', - timezone: 'Múi giờ', - visualConfig: 'Cấu hình trực quan', - monthlyDay: 'Ngày hàng tháng', - executionTime: 'Thời gian thực hiện', - invalidTimezone: 'Múi giờ không hợp lệ', - invalidCronExpression: 'Biểu thức cron không hợp lệ', - noValidExecutionTime: 'Không thể tính toán thời gian thực thi hợp lệ', - executionTimeCalculationError: 'Không thể tính toán thời gian thực thi', - invalidFrequency: 'Tần số không hợp lệ', - invalidStartTime: 'Thời gian bắt đầu không hợp lệ', - startTimeMustBeFuture: 'Thời gian bắt đầu phải là trong tương lai', - invalidTimeFormat: 'Định dạng giờ không hợp lệ (dự kiến HH:MM SA/CH)}', - invalidWeekday: 'Ngày trong tuần không hợp lệ: {{weekday}}', - invalidMonthlyDay: 'Ngày trong tháng phải nằm giữa 1-31 hoặc là "cuối cùng"', - invalidOnMinute: 'Phút phải nằm trong khoảng từ 0 đến 59', - invalidExecutionTime: 'Thời gian thực thi không hợp lệ', - executionTimeMustBeFuture: 'Thời gian thực thi phải nằm trong tương lai', - }, - triggerWebhook: { - title: 'Kích hoạt Webhook', - nodeTitle: '🔗 Kích hoạt Webhook', - configPlaceholder: 'Cấu hình kích hoạt webhook sẽ được thực hiện ở đây', - webhookUrl: 'URL Webhook', - webhookUrlPlaceholder: 'Nhấp vào tạo để tạo URL webhook', - generate: 'Tạo', - copy: 'Sao chép', - test: 'Kiểm tra', - urlGenerated: 'Đã tạo URL webhook thành công', - urlGenerationFailed: 'Không thể tạo URL webhook', - urlCopied: 'Đã sao chép URL vào bộ nhớ tạm', - method: 'Phương pháp', - contentType: 'Loại Nội Dung', - queryParameters: 'Tham số truy vấn', - headerParameters: 'Tham số tiêu đề', - requestBodyParameters: 'Tham số trong thân yêu cầu', - parameterName: 'Tên biến', - varName: 'Tên biến', - varType: 'Loại', - varNamePlaceholder: 'Nhập tên biến...', - required: 'Bắt buộc', - addParameter: 'Thêm', - addHeader: 'Thêm', - noParameters: 'Chưa cấu hình tham số nào', - noQueryParameters: 'Chưa cấu hình tham số truy vấn', - noHeaders: 'Chưa cấu hình tiêu đề', - noBodyParameters: 'Chưa cấu hình tham số thân', - debugUrlTitle: 'Đối với các lần chạy thử, luôn sử dụng URL này', - debugUrlCopy: 'Nhấn để sao chép', - debugUrlCopied: 'Đã sao chép!', - debugUrlPrivateAddressWarning: 'URL này dường như là một địa chỉ nội bộ, điều này có thể khiến các yêu cầu webhook không thành công. Bạn có thể thay đổi TRIGGER_URL thành một địa chỉ công khai.', - errorHandling: 'Xử lý lỗi', - errorStrategy: 'Xử lý lỗi', - responseConfiguration: 'Phản hồi', - asyncMode: 'Chế độ không đồng bộ', - statusCode: 'Mã trạng thái', - responseBody: 'Nội dung phản hồi', - responseBodyPlaceholder: 'Viết nội dung phản hồi của bạn ở đây', - headers: 'Tiêu đề', - validation: { - webhookUrlRequired: 'Cần có URL Webhook', - invalidParameterType: 'Loại tham số không hợp lệ "{{type}}" cho tham số "{{name}}"', - }, - }, - }, - tracing: { - stopBy: 'Dừng bởi {{user}}', - }, - variableReference: { - noAssignedVars: 'Không có biến được gán sẵn có', - noAvailableVars: 'Không có biến khả dụng', - assignedVarsDescription: 'Các biến được gán phải là các biến có thể ghi, chẳng hạn như', - conversationVars: 'Biến cuộc trò chuyện', - noVarsForOperation: 'Không có biến nào có sẵn để gán với hoạt động đã chọn.', - }, - versionHistory: { - filter: { - onlyYours: 'Chỉ của bạn', - empty: 'Không tìm thấy lịch sử phiên bản phù hợp', - onlyShowNamedVersions: 'Chỉ hiển thị các phiên bản có tên', - reset: 'Đặt lại bộ lọc', - all: 'Tất cả', - }, - editField: { - releaseNotesLengthLimit: 'Ghi chú phát hành không được vượt quá {{limit}} ký tự.', - title: 'Tiêu đề', - releaseNotes: 'Ghi chú phát hành', - titleLengthLimit: 'Tiêu đề không được vượt quá {{limit}} ký tự', - }, - action: { - deleteFailure: 'Xóa phiên bản thất bại', - updateFailure: 'Cập nhật phiên bản không thành công', - deleteSuccess: 'Phiên bản đã bị xóa', - updateSuccess: 'Phiên bản đã được cập nhật', - restoreSuccess: 'Phiên bản đã được khôi phục', - restoreFailure: 'Không thể khôi phục phiên bản', - copyIdSuccess: 'ID được sao chép vào khay nhớ tạm', - }, - defaultName: 'Phiên bản không được đặt tên', - releaseNotesPlaceholder: 'Mô tả những gì đã thay đổi', - deletionTip: 'Việc xóa là không thể phục hồi, vui lòng xác nhận.', - currentDraft: 'Dự thảo hiện tại', - editVersionInfo: 'Chỉnh sửa thông tin phiên bản', - latest: 'Mới nhất', - nameThisVersion: 'Đặt tên cho phiên bản này', - restorationTip: 'Sau khi phục hồi phiên bản, bản nháp hiện tại sẽ bị ghi đè.', - title: 'Các phiên bản', - copyId: 'Sao chép ID', - }, - debug: { - noData: { - runThisNode: 'Chạy nút này', - description: 'Kết quả của lần chạy cuối cùng sẽ được hiển thị ở đây', - }, - variableInspect: { - trigger: { - clear: 'Rõ ràng', - stop: 'Dừng lại', - normal: 'Kiểm tra Biến', - cached: 'Xem các biến được lưu trong bộ nhớ cache', - running: 'Trạng thái đang chạy của bộ nhớ đệm', - }, - envNode: 'Môi trường', - edited: 'Biên soạn', - chatNode: 'Cuộc trò chuyện', - view: 'Xem nhật ký', - clearAll: 'Đặt lại tất cả', - reset: 'Đặt lại thành giá trị của lần chạy cuối cùng', - resetConversationVar: 'Đặt lại biến cuộc trò chuyện về giá trị mặc định', - title: 'Kiểm tra Biến', - systemNode: 'Hệ thống', - clearNode: 'Xóa biến đã được lưu trong bộ nhớ cache', - emptyLink: 'Tìm hiểu thêm', - emptyTip: 'Sau khi bước qua một nút trên canvas hoặc chạy một nút từng bước, bạn có thể xem giá trị hiện tại của biến nút trong Variable Inspect.', - export: 'xuất khẩu', - exportToolTip: 'Xuất biến dưới dạng tệp', - largeData: 'Dữ liệu lớn, xem trước chỉ đọc. Xuất để xem tất cả.', - largeDataNoExport: 'Dữ liệu lớn - chỉ xem trước một phần', - listening: { - title: 'Đang lắng nghe các sự kiện từ các kích hoạt...', - tip: 'Bạn giờ có thể mô phỏng các trình kích hoạt sự kiện bằng cách gửi các yêu cầu thử nghiệm tới điểm cuối HTTP {{nodeName}} hoặc sử dụng nó như một URL phản hồi để gỡ lỗi sự kiện trực tiếp. Tất cả các kết quả đầu ra có thể được xem trực tiếp trong Trình Kiểm tra Biến.', - tipPlugin: 'Bây giờ bạn có thể tạo các sự kiện trong {{- pluginName}} và lấy kết quả từ các sự kiện này trong Trình kiểm tra Biến.', - tipSchedule: 'Lắng nghe sự kiện từ các tác nhân kích hoạt theo lịch. Chạy theo lịch tiếp theo: {{nextTriggerTime}}', - tipFallback: 'Chờ các sự kiện kích hoạt đến. Các kết quả sẽ xuất hiện ở đây.', - defaultNodeName: 'cái nút kích hoạt này', - defaultPluginName: 'plugin này kích hoạt', - defaultScheduleTime: 'Chưa được cấu hình', - selectedTriggers: 'cac trình kích hoạt đã chọn', - stopButton: 'Dừng lại', - }, - }, - settingsTab: 'Cài đặt', - lastRunTab: 'Chạy Lần Cuối', - relations: { - noDependencies: 'Không phụ thuộc', - dependenciesDescription: 'Các nút mà nút này dựa vào', - dependents: 'Người phụ thuộc', - dependencies: 'Phụ thuộc', - noDependents: 'Không có người phụ thuộc', - dependentsDescription: 'Các nút dựa vào nút này', - }, - relationsTab: 'Mối quan hệ', - noLastRunFound: 'Không tìm thấy lần chạy trước', - noMatchingInputsFound: 'Không tìm thấy đầu vào nào khớp từ lần chạy trước', - copyLastRun: 'Sao chép lần chạy cuối', - copyLastRunError: 'Không thể sao chép đầu vào của lần chạy trước', - lastOutput: 'Đầu ra cuối cùng', - lastRunInputsCopied: '{{count}} đầu vào đã được sao chép từ lần chạy trước', - }, - sidebar: { - exportWarning: 'Xuất Phiên Bản Đã Lưu Hiện Tại', - exportWarningDesc: 'Điều này sẽ xuất phiên bản hiện tại đã được lưu của quy trình làm việc của bạn. Nếu bạn có những thay đổi chưa được lưu trong trình soạn thảo, vui lòng lưu chúng trước bằng cách sử dụng tùy chọn xuất trong bản vẽ quy trình.', - }, - publishLimit: { - startNodeTitlePrefix: 'Nâng cấp lên', - startNodeTitleSuffix: 'mở khóa số lần kích hoạt không giới hạn cho mỗi quy trình làm việc', - startNodeDesc: 'Bạn đã đạt giới hạn 2 trình kích hoạt cho mỗi quy trình làm việc trong gói này. Nâng cấp để xuất bản quy trình làm việc này.', - }, - error: { - startNodeRequired: 'Vui lòng thêm một nút bắt đầu trước {{operation}}', - operations: { - connectingNodes: 'kết nối các nút', - addingNodes: 'thêm nút', - modifyingWorkflow: 'chỉnh sửa quy trình công việc', - updatingWorkflow: 'cập nhật quy trình công việc', - }, - }, - customWebhook: 'Webhook Tùy Chỉnh', - difyTeam: 'Đội ngũ Dify', - triggerStatus: { - enabled: 'KÍCH HOẠT', - disabled: 'KÍCH HOẠT • VÔ HIỆU HÓA', - }, - entryNodeStatus: { - enabled: 'BẮT ĐẦU', - disabled: 'BẮT ĐẦU • VÔ HIỆU HÓA', - }, - onboarding: { - title: 'Chọn một nút bắt đầu để bắt đầu', - description: 'Các nút bắt đầu khác nhau có những khả năng khác nhau. Đừng lo, bạn luôn có thể thay đổi chúng sau này.', - userInputFull: 'Nhập người dùng (nút bắt đầu gốc)', - userInputDescription: 'Nút bắt đầu cho phép thiết lập các biến nhập liệu của người dùng, với ứng dụng web, API dịch vụ, máy chủ MCP và quy trình làm việc như các khả năng công cụ.', - trigger: 'Kích hoạt', - triggerDescription: 'Các trình kích hoạt có thể hoạt động như nút bắt đầu của một quy trình làm việc, chẳng hạn như tác vụ theo lịch, webhook tùy chỉnh hoặc tích hợp với các ứng dụng khác.', - back: 'Quay lại', - learnMore: 'Tìm hiểu thêm', - aboutStartNode: 'về nút bắt đầu.', - escTip: { - press: 'Báo chí', - key: 'thoát', - toDismiss: 'sa thải', - }, - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/app-annotation.json b/web/i18n/zh-Hans/app-annotation.json new file mode 100644 index 0000000000..6a77c56d4e --- /dev/null +++ b/web/i18n/zh-Hans/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "标注", + "name": "标注回复", + "editBy": "{{author}}编辑的答案", + "noData": { + "title": "没有标注", + "description": "你可以在应用会话调试中编辑标注,也可以在此批量导入标注用于高质量回复。" + }, + "table": { + "header": { + "question": "提问", + "answer": "答案", + "createdAt": "创建时间", + "hits": "命中次数", + "actions": "操作", + "addAnnotation": "添加标注", + "bulkImport": "批量导入", + "bulkExport": "批量导出", + "clearAll": "删除所有", + "clearAllConfirm": "删除所有标注?" + } + }, + "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": "确定" + }, + "list": { + "delete": { + "title": "确定删除吗?" + } + }, + "batchAction": { + "selected": "已选择", + "delete": "删除", + "cancel": "取消" + }, + "errorMessage": { + "answerRequired": "回复不能为空", + "queryRequired": "提问不能为空" + }, + "viewModal": { + "annotatedResponse": "标注回复", + "hitHistory": "命中历史", + "hit": "次命中", + "hits": "次命中", + "noHitHistory": "没有命中历史" + }, + "hitHistoryTable": { + "query": "提问", + "match": "匹配", + "response": "回复", + "source": "来源", + "score": "分数", + "time": "时间" + }, + "initSetup": { + "title": "标注回复初始设置", + "configTitle": "标注回复设置", + "confirmBtn": "保存并启用", + "configConfirmBtn": "保存" + }, + "embeddingModelSwitchTip": "标注文本向量化模型,切换模型会重新嵌入,产生额外费用消耗" +} diff --git a/web/i18n/zh-Hans/app-annotation.ts b/web/i18n/zh-Hans/app-annotation.ts deleted file mode 100644 index d92dff8e62..0000000000 --- a/web/i18n/zh-Hans/app-annotation.ts +++ /dev/null @@ -1,98 +0,0 @@ -const translation = { - title: '标注', - name: '标注回复', - editBy: '{{author}}编辑的答案', - noData: { - title: '没有标注', - description: '你可以在应用会话调试中编辑标注,也可以在此批量导入标注用于高质量回复。', - }, - table: { - header: { - question: '提问', - answer: '答案', - createdAt: '创建时间', - hits: '命中次数', - actions: '操作', - addAnnotation: '添加标注', - bulkImport: '批量导入', - bulkExport: '批量导出', - clearAll: '删除所有', - clearAllConfirm: '删除所有标注?', - }, - }, - 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: '确定', - }, - list: { - delete: { - title: '确定删除吗?', - }, - }, - batchAction: { - selected: '已选择', - delete: '删除', - cancel: '取消', - }, - 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 diff --git a/web/i18n/zh-Hans/app-api.json b/web/i18n/zh-Hans/app-api.json new file mode 100644 index 0000000000..63ee4e4e42 --- /dev/null +++ b/web/i18n/zh-Hans/app-api.json @@ -0,0 +1,84 @@ +{ + "apiServer": "API 服务器", + "apiKey": "API 密钥", + "status": "状态", + "disabled": "已停用", + "ok": "运行中", + "copy": "复制", + "copied": "已复制", + "regenerate": "重新生成", + "play": "播放", + "pause": "暂停", + "playing": "播放中", + "loading": "加载中", + "merMaid": { + "rerender": "重新渲染" + }, + "never": "从未", + "apiKeyModal": { + "apiSecretKey": "API 密钥", + "apiSecretKeyTips": "如果不想你的 API 被滥用,请保护好你的 API Key :) 最佳实践是避免在前端代码中明文引用。", + "createNewSecretKey": "创建密钥", + "secretKey": "密钥", + "created": "创建时间", + "lastUsed": "最后使用", + "generateTips": "请将此密钥保存在安全且可访问的地方。" + }, + "actionMsg": { + "deleteConfirmTitle": "删除此密钥?", + "deleteConfirmTips": "删除密钥无法撤销,正在使用中的应用会受影响。", + "ok": "好的" + }, + "completionMode": { + "title": "文本生成型应用 API", + "info": "可用于生成高质量文本的应用,例如生成文章、摘要、翻译等,通过调用 completion-messages 接口,发送用户输入得到生成文本结果。用于生成文本的模型参数和提示词模板取决于开发者在 Dify 提示词编排页的设置。", + "createCompletionApi": "创建文本补全消息", + "createCompletionApiTip": "创建文本补全消息,支持一问一答模式。", + "inputsTips": "(选填)以键值对方式提供用户输入字段,与提示词编排中的变量对应。Key 为变量名称,Value 是参数值。如果字段类型为 Select,传入的 Value 需为预设选项之一。", + "queryTips": "用户输入的文本正文。", + "blocking": "blocking 阻塞型,等待执行完毕后返回结果。(请求若流程较长可能会被中断)", + "streaming": "streaming 流式返回。基于 SSE(**[Server-Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events)**)实现流式返回。", + "messageFeedbackApi": "消息反馈(点赞)", + "messageFeedbackApiTip": "代表最终用户对返回消息进行评价,可以点赞与点踩,该数据将在“日志与标注”页中可见,并用于后续的模型微调。", + "messageIDTip": "消息 ID", + "ratingTip": "like 或 dislike,空值为撤销", + "parametersApi": "获取应用配置信息", + "parametersApiTip": "获取已配置的 Input 参数,包括变量名、字段名称、类型与默认值。通常用于客户端加载后显示这些字段的表单或填入默认值。" + }, + "chatMode": { + "title": "对话型应用 API", + "info": "可用于大部分场景的对话型应用,采用一问一答模式与用户持续对话。要开始一个对话请调用 chat-messages 接口,通过继续传入返回的 conversation_id 可持续保持该会话。", + "createChatApi": "发送对话消息", + "createChatApiTip": "创建会话消息,或基于此前的对话继续发送消息。", + "inputsTips": "(选填)以键值对方式提供用户输入字段,与提示词编排中的变量对应。Key 为变量名称,Value 是参数值。如果字段类型为 Select,传入的 Value 需为预设选项之一。", + "queryTips": " 用户输入/提问内容", + "blocking": "blocking 阻塞型,等待执行完毕后返回结果。(请求若流程较长可能会被中断)", + "streaming": "streaming 流式返回。基于 SSE(**[Server-Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events)**)实现流式返回。", + "conversationIdTip": "(选填)会话标识符,首次对话可为空,如果要继续对话请传入上下文返回的 conversation_id", + "messageFeedbackApi": "消息反馈(点赞)", + "messageFeedbackApiTip": "代表最终用户对返回消息进行评价,可以点赞与点踩,该数据将在“日志与标注”页中可见,并用于后续的模型微调。", + "messageIDTip": "消息 ID", + "ratingTip": "like 或 dislike,空值为撤销", + "chatMsgHistoryApi": "获取会话历史消息", + "chatMsgHistoryApiTip": "滚动加载形式返回历史聊天记录,第一页返回最新 `limit` 条,即:倒序返回。", + "chatMsgHistoryConversationIdTip": "会话 ID", + "chatMsgHistoryFirstId": "当前页第一条聊天记录的 ID,默认 none", + "chatMsgHistoryLimit": "一次请求返回多少条聊天记录", + "conversationsListApi": "获取会话列表", + "conversationsListApiTip": "获取当前用户的会话列表,默认返回最近的 20 条。", + "conversationsListFirstIdTip": " 当前页最前面一条记录的 ID,默认 none", + "conversationsListLimitTip": "一次请求返回多少条记录", + "conversationRenamingApi": "会话重命名", + "conversationRenamingApiTip": "对会话进行重命名,会话名称用于显示在支持多会话的客户端上。", + "conversationRenamingNameTip": "新的名称", + "parametersApi": "获取应用配置信息", + "parametersApiTip": "获取已配置的 Input 参数,包括变量名、字段名称、类型与默认值。通常用于客户端加载后显示这些字段的表单或填入默认值。" + }, + "develop": { + "requestBody": "Request Body", + "pathParams": "Path Params", + "query": "Query", + "toc": "目录", + "noContent": "暂无内容" + } +} diff --git a/web/i18n/zh-Hans/app-api.ts b/web/i18n/zh-Hans/app-api.ts deleted file mode 100644 index 70219e0cc6..0000000000 --- a/web/i18n/zh-Hans/app-api.ts +++ /dev/null @@ -1,86 +0,0 @@ -const translation = { - apiServer: 'API 服务器', - apiKey: 'API 密钥', - status: '状态', - disabled: '已停用', - ok: '运行中', - copy: '复制', - copied: '已复制', - regenerate: '重新生成', - play: '播放', - pause: '暂停', - playing: '播放中', - loading: '加载中', - merMaid: { - rerender: '重新渲染', - }, - never: '从未', - apiKeyModal: { - apiSecretKey: 'API 密钥', - apiSecretKeyTips: '如果不想你的 API 被滥用,请保护好你的 API Key :) 最佳实践是避免在前端代码中明文引用。', - createNewSecretKey: '创建密钥', - secretKey: '密钥', - created: '创建时间', - lastUsed: '最后使用', - generateTips: '请将此密钥保存在安全且可访问的地方。', - }, - actionMsg: { - deleteConfirmTitle: '删除此密钥?', - deleteConfirmTips: '删除密钥无法撤销,正在使用中的应用会受影响。', - ok: '好的', - }, - completionMode: { - title: '文本生成型应用 API', - info: '可用于生成高质量文本的应用,例如生成文章、摘要、翻译等,通过调用 completion-messages 接口,发送用户输入得到生成文本结果。用于生成文本的模型参数和提示词模板取决于开发者在 Dify 提示词编排页的设置。', - createCompletionApi: '创建文本补全消息', - createCompletionApiTip: '创建文本补全消息,支持一问一答模式。', - inputsTips: '(选填)以键值对方式提供用户输入字段,与提示词编排中的变量对应。Key 为变量名称,Value 是参数值。如果字段类型为 Select,传入的 Value 需为预设选项之一。', - queryTips: '用户输入的文本正文。', - blocking: 'blocking 阻塞型,等待执行完毕后返回结果。(请求若流程较长可能会被中断)', - streaming: 'streaming 流式返回。基于 SSE(**[Server-Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events)**)实现流式返回。', - messageFeedbackApi: '消息反馈(点赞)', - messageFeedbackApiTip: '代表最终用户对返回消息进行评价,可以点赞与点踩,该数据将在“日志与标注”页中可见,并用于后续的模型微调。', - messageIDTip: '消息 ID', - ratingTip: 'like 或 dislike,空值为撤销', - parametersApi: '获取应用配置信息', - parametersApiTip: '获取已配置的 Input 参数,包括变量名、字段名称、类型与默认值。通常用于客户端加载后显示这些字段的表单或填入默认值。', - }, - chatMode: { - title: '对话型应用 API', - info: '可用于大部分场景的对话型应用,采用一问一答模式与用户持续对话。要开始一个对话请调用 chat-messages 接口,通过继续传入返回的 conversation_id 可持续保持该会话。', - createChatApi: '发送对话消息', - createChatApiTip: '创建会话消息,或基于此前的对话继续发送消息。', - inputsTips: '(选填)以键值对方式提供用户输入字段,与提示词编排中的变量对应。Key 为变量名称,Value 是参数值。如果字段类型为 Select,传入的 Value 需为预设选项之一。', - queryTips: ' 用户输入/提问内容', - blocking: 'blocking 阻塞型,等待执行完毕后返回结果。(请求若流程较长可能会被中断)', - streaming: 'streaming 流式返回。基于 SSE(**[Server-Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events)**)实现流式返回。', - conversationIdTip: '(选填)会话标识符,首次对话可为空,如果要继续对话请传入上下文返回的 conversation_id', - messageFeedbackApi: '消息反馈(点赞)', - messageFeedbackApiTip: '代表最终用户对返回消息进行评价,可以点赞与点踩,该数据将在“日志与标注”页中可见,并用于后续的模型微调。', - messageIDTip: '消息 ID', - ratingTip: 'like 或 dislike,空值为撤销', - chatMsgHistoryApi: '获取会话历史消息', - chatMsgHistoryApiTip: '滚动加载形式返回历史聊天记录,第一页返回最新 `limit` 条,即:倒序返回。', - chatMsgHistoryConversationIdTip: '会话 ID', - chatMsgHistoryFirstId: '当前页第一条聊天记录的 ID,默认 none', - chatMsgHistoryLimit: '一次请求返回多少条聊天记录', - conversationsListApi: '获取会话列表', - conversationsListApiTip: '获取当前用户的会话列表,默认返回最近的 20 条。', - conversationsListFirstIdTip: ' 当前页最前面一条记录的 ID,默认 none', - conversationsListLimitTip: '一次请求返回多少条记录', - conversationRenamingApi: '会话重命名', - conversationRenamingApiTip: '对会话进行重命名,会话名称用于显示在支持多会话的客户端上。', - conversationRenamingNameTip: '新的名称', - parametersApi: '获取应用配置信息', - parametersApiTip: '获取已配置的 Input 参数,包括变量名、字段名称、类型与默认值。通常用于客户端加载后显示这些字段的表单或填入默认值。', - }, - develop: { - requestBody: 'Request Body', - pathParams: 'Path Params', - query: 'Query', - toc: '目录', - noContent: '暂无内容', - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/app-debug.json b/web/i18n/zh-Hans/app-debug.json new file mode 100644 index 0000000000..85182ef25b --- /dev/null +++ b/web/i18n/zh-Hans/app-debug.json @@ -0,0 +1,565 @@ +{ + "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": "用户表示" + }, + "code": { + "instruction": "指令" + }, + "notSetAPIKey": { + "title": "LLM 提供者的密钥未设置", + "trailFinished": "试用已结束", + "description": "在调试之前需要设置 LLM 提供者的密钥。", + "settingBtn": "去设置" + }, + "trailUseGPT4Info": { + "title": "当前不支持使用 gpt-4", + "description": "使用 gpt-4,请设置 API Key" + }, + "feature": { + "groupChat": { + "title": "聊天增强", + "description": "为聊天型应用添加预对话设置,可以提升用户体验。" + }, + "groupExperience": { + "title": "体验增强" + }, + "conversationOpener": { + "title": "对话开场白", + "description": "在对话型应用中,让 AI 主动说第一段话可以拉近与用户间的距离。" + }, + "suggestedQuestionsAfterAnswer": { + "title": "下一步问题建议", + "description": "设置下一步问题建议可以让用户更好的对话。", + "resDes": "回答结束后系统会给出 3 个建议", + "tryToAsk": "试着问问" + }, + "moreLikeThis": { + "title": "更多类似的", + "description": "一次生成多条文本,可在此基础上编辑并继续生成", + "generateNumTip": "每次生成数", + "tip": "使用此功能将会额外消耗 tokens" + }, + "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": "您可以导入知识库作为上下文", + "selectTitle": "选择引用知识库", + "selected": "个知识库被选中", + "noDataSet": "未找到知识库", + "toCreate": "去创建", + "notSupportSelectMulti": "目前只支持引用一个知识库", + "queryVariable": { + "title": "查询变量", + "tip": "该变量将用作上下文检索的查询输入,获取与该变量的输入相关的上下文信息。", + "choosePlaceholder": "请选择变量", + "noVar": "没有变量", + "noVarTip": "请创建变量", + "unableToQueryDataSet": "无法查询知识库", + "unableToQueryDataSetTip": "无法成功查询知识库,请在上下文部分选择一个上下文查询变量。", + "ok": "好的", + "contextVarNotEmpty": "上下文查询变量不能为空", + "deleteContextVarTitle": "删除变量“{{varName}}”?", + "deleteContextVarTip": "该变量已被设置为上下文查询变量,删除该变量将影响知识库的正常使用。如果您仍需要删除它,请在上下文部分中重新选择它。" + } + }, + "tools": { + "title": "工具", + "tips": "工具提供了一个标准的 API 调用方式,将用户输入或变量作为 API 的请求参数,用于查询外部数据作为上下文。", + "toolsInUse": "{{count}} 工具使用中", + "modal": { + "title": "工具", + "toolType": { + "title": "工具类型", + "placeholder": "请选择工具类型" + }, + "name": { + "title": "名称", + "placeholder": "请填写名称" + }, + "variableName": { + "title": "变量名称", + "placeholder": "请填写变量名称" + } + } + }, + "conversationHistory": { + "title": "对话历史", + "description": "设置对话角色的前缀名称", + "tip": "对话历史未启用,请在上面的提示中添加。", + "learnMore": "了解更多", + "editModal": { + "title": "编辑对话角色名称", + "userPrefix": "用户前缀", + "assistantPrefix": "助手前缀" + } + }, + "toolbox": { + "title": "工具箱" + }, + "moderation": { + "title": "内容审查", + "description": "您可以调用审查 API 或者维护敏感词库来使模型更安全地输出。", + "contentEnableLabel": "内容审查已启用", + "allEnabled": "输入内容和输出内容", + "inputEnabled": "输入内容", + "outputEnabled": "输出内容", + "modal": { + "title": "内容审查设置", + "provider": { + "title": "类别", + "openai": "OpenAI Moderation", + "openaiTip": { + "prefix": "OpenAI Moderation 需要在", + "suffix": "中配置 OpenAI API 密钥。" + }, + "keywords": "关键词" + }, + "keywords": { + "tip": "每行一个,用换行符分隔。每行最多 100 个字符。", + "placeholder": "每行一个,用换行符分隔", + "line": "行" + }, + "content": { + "input": "审查输入内容", + "output": "审查输出内容", + "preset": "预设回复", + "placeholder": "这里预设回复内容", + "condition": "审查输入内容和审查输出内容至少启用一项", + "fromApi": "预设回复通过 API 返回", + "errorMessage": "预设回复不能为空", + "supportMarkdown": "支持 Markdown" + }, + "openaiNotConfig": { + "before": "OpenAI 内容审查需要在", + "after": "中配置 OpenAI API 密钥。" + } + } + }, + "fileUpload": { + "title": "文件上传", + "description": "聊天输入框支持上传文件。类型包括图片、文档以及其它类型", + "supportedTypes": "支持的文件类型", + "numberLimit": "最大上传数", + "modalTitle": "文件上传设置" + }, + "imageUpload": { + "title": "图片上传", + "description": "支持上传图片", + "supportedTypes": "支持的文件类型", + "numberLimit": "最大上传数", + "modalTitle": "图片上传设置" + }, + "bar": { + "empty": "开启功能增强 web app 用户体验", + "enableText": "功能已开启", + "manage": "管理" + }, + "documentUpload": { + "title": "文档", + "description": "启用文档后,模型可以接收文档并回答关于它们的问题。" + }, + "audioUpload": { + "title": "音频", + "description": "启用音频后,模型可以处理音频文件进行转录和分析。" + } + }, + "codegen": { + "title": "代码生成器", + "description": "代码生成器使用配置的模型根据您的指令生成高质量的代码。请提供清晰详细的说明。", + "instruction": "指令", + "instructionPlaceholder": "请输入您想要生成的代码的详细描述。", + "noDataLine1": "在左侧描述您的用例,", + "noDataLine2": "代码预览将在此处显示。", + "generate": "生成", + "generatedCodeTitle": "生成的代码", + "loading": "正在生成代码...", + "apply": "应用", + "applyChanges": "应用更改", + "resTitle": "生成的代码", + "overwriteConfirmTitle": "是否覆盖现有代码?", + "overwriteConfirmMessage": "此操作将覆盖现有代码。您确定要继续吗?" + }, + "generate": { + "title": "提示词生成器", + "description": "提示词生成器使用配置的模型来优化提示词,以获得更高的质量和更好的结构。请写出清晰详细的说明。", + "tryIt": "试一试", + "instruction": "指令", + "instructionPlaceHolderTitle": "描述您希望如何改进此提示词。例如:", + "instructionPlaceHolderLine1": "使输出更简洁,保留核心要点。", + "instructionPlaceHolderLine2": "输出格式不正确,请严格遵循 JSON 格式。", + "instructionPlaceHolderLine3": "语气过于生硬,请使其更友好。", + "codeGenInstructionPlaceHolderLine": "反馈越详细,例如输入和输出的数据类型以及变量的处理方式,代码生成就会越准确。", + "idealOutput": "理想输出", + "idealOutputPlaceholder": "描述您理想的回复格式、长度、语气和内容要求……", + "optional": "可选", + "dismiss": "取消", + "generate": "生成", + "resTitle": "生成的提示词", + "newNoDataLine1": "在左侧描述您的用例,点击生成查看结果。", + "apply": "应用", + "loading": "为您编排应用程序中…", + "overwriteTitle": "覆盖现有配置?", + "overwriteMessage": "应用此提示将覆盖现有配置。", + "template": { + "pythonDebugger": { + "name": "Python 代码助手", + "instruction": "一个帮你写和纠错程序的机器人" + }, + "translation": { + "name": "翻译机器人", + "instruction": "一个可以翻译多种语言的翻译器" + }, + "professionalAnalyst": { + "name": "职业分析师", + "instruction": " 从长篇报告中提取洞察、识别风险并提炼关键信息" + }, + "excelFormulaExpert": { + "name": "Excel 公式专家", + "instruction": "一个可以让小白用户理解、使用和创建 Excel 公式的对话机器人" + }, + "travelPlanning": { + "name": "旅行规划助手", + "instruction": "旅行规划助手是一个智能工具,旨在帮助用户轻松规划他们的旅行" + }, + "SQLSorcerer": { + "name": "SQL 生成", + "instruction": "把自然语言转换成 SQL 查询语句" + }, + "GitGud": { + "name": "Git 大师", + "instruction": "从用户提出的版本管理需求生成合适的 Git 命令" + }, + "meetingTakeaways": { + "name": "总结会议纪要", + "instruction": "将会议内容提炼总结,包括讨论主题、关键要点和待办事项" + }, + "writingsPolisher": { + "name": "润色文章", + "instruction": "用地道的编辑技巧改进我的文章" + } + }, + "press": "输入", + "to": "来", + "insertContext": "插入上下文", + "optimizePromptTooltip": "在提示词生成器中优化", + "optimizationNote": "优化说明", + "versions": "版本", + "version": "版本", + "latest": "最新" + }, + "resetConfig": { + "title": "确认重置?", + "message": "重置将丢失当前页面所有修改,恢复至上次发布时的配置" + }, + "errorMessage": { + "nameOfKeyRequired": "变量 {{key}} 对应的名称必填", + "valueOfVarRequired": "{{key}}必填", + "queryRequired": "主要文本必填", + "waitForResponse": "请等待上条信息响应完成", + "waitForBatchResponse": "请等待批量任务完成", + "notSelectModel": "请选择模型", + "waitForImgUpload": "请等待图片上传完成", + "waitForFileUpload": "请等待文件上传完成" + }, + "warningMessage": { + "timeoutExceeded": "由于超时,结果未显示。请参考日志获取完整结果。" + }, + "chatSubTitle": "提示词", + "completionSubTitle": "前缀提示词", + "promptTip": "提示词用于对 AI 的回复做出一系列指令和约束。可插入表单变量,例如 {{input}}。这段提示词不会被最终用户所看到。", + "formattingChangedTitle": "编排已改变", + "formattingChangedText": "修改编排将重置调试区域,确定吗?", + "variableTitle": "变量", + "notSetVar": "变量能使用户输入表单引入提示词或开场白,你可以试试在提示词中输入 {{input}}", + "variableTip": "变量将以表单形式让用户在对话前填写,用户填写的表单内容将自动替换提示词中的变量。", + "autoAddVar": "提示词中引用了未定义的变量,是否自动添加到用户输入表单中?", + "variableTable": { + "key": "变量 Key", + "name": "字段名称", + "type": "类型", + "action": "操作", + "typeString": "文本", + "typeSelect": "下拉选项" + }, + "varKeyError": { + "canNoBeEmpty": "{{key}}必填", + "tooLong": "{{key}} 长度太长。不能超过 30 个字符", + "notValid": "{{key}} 非法。只能包含英文字符,数字和下划线", + "notStartWithNumber": "{{key}} 不能以数字开头", + "keyAlreadyExists": "{{key}} 已存在" + }, + "otherError": { + "promptNoBeEmpty": "提示词不能为空", + "historyNoBeEmpty": "提示词中必须设置对话历史", + "queryNoBeEmpty": "提示词中必须设置查询内容" + }, + "variableConfig": { + "addModalTitle": "添加变量", + "editModalTitle": "编辑变量", + "description": "设置变量 {{varName}}", + "fieldType": "字段类型", + "string": "文本", + "text-input": "文本", + "paragraph": "段落", + "select": "下拉选项", + "number": "数字", + "checkbox": "复选框", + "single-file": "单文件", + "multi-files": "文件列表", + "json": "JSON", + "jsonSchema": "JSON Schema", + "optional": "可选", + "notSet": "未设置,在 Prompt 中输入 {{input}} 试试", + "stringTitle": "文本框设置", + "maxLength": "最大长度", + "options": "选项", + "addOption": "添加选项", + "apiBasedVar": "基于 API 的变量", + "varName": "变量名称", + "inputPlaceholder": "请输入", + "labelName": "显示名称", + "displayName": "显示名称", + "required": "必填", + "hide": "隐藏", + "placeholder": "占位符", + "placeholderPlaceholder": "输入字段为空时显示的文本", + "defaultValue": "默认值", + "defaultValuePlaceholder": "输入默认值以预先填充字段", + "unit": "单位", + "unitPlaceholder": "在数字后显示的单位,如 token", + "tooltips": "提示", + "tooltipsPlaceholder": "输入悬停在标签上时显示的提示文本", + "showAllSettings": "显示所有设置", + "startSelectedOption": "默认选中项", + "noDefaultSelected": "不默认选中", + "file": { + "supportFileTypes": "支持的文件类型", + "image": { + "name": "图片" + }, + "audio": { + "name": "音频" + }, + "document": { + "name": "文档" + }, + "video": { + "name": "视频" + }, + "custom": { + "name": "其他文件类型", + "description": "指定其他文件类型", + "createPlaceholder": "+ 文件扩展名,例如 .doc" + } + }, + "uploadFileTypes": "上传文件类型", + "uploadMethod": "上传方式", + "localUpload": "本地上传", + "both": "两者", + "maxNumberOfUploads": "最大上传数", + "maxNumberTip": "文档 < {{docLimit}}, 图片 < {{imgLimit}}, 音频 < {{audioLimit}}, 视频 < {{videoLimit}}", + "content": "内容", + "errorMsg": { + "labelNameRequired": "显示名称必填", + "varNameCanBeRepeat": "变量名称不能重复", + "atLeastOneOption": "至少需要一个选项", + "optionRepeat": "选项不能重复" + }, + "startChecked": "默认勾选", + "noDefaultValue": "无默认值", + "selectDefaultValue": "选择默认值" + }, + "vision": { + "name": "视觉", + "description": "开启视觉功能将允许模型输入图片,并根据图像内容的理解回答用户问题", + "onlySupportVisionModelTip": "只有视觉模型配置视觉功能", + "settings": "设置", + "visionSettings": { + "title": "视觉设置", + "resolution": "分辨率", + "resolutionTooltip": "低分辨率模式将使模型接收图像的低分辨率版本,尺寸为 512 x 512,并使用 65 Tokens 来表示图像。这样可以使 API 更快地返回响应,并在不需要高细节的用例中消耗更少的输入。\n高分辨率模式将首先允许模型查看低分辨率图像,然后根据输入图像的大小创建 512 像素的详细裁剪图像。每个详细裁剪图像使用两倍的预算总共为 129 Tokens。", + "high": "高", + "low": "低", + "uploadMethod": "上传方式", + "both": "两者", + "localUpload": "本地上传", + "url": "URL", + "uploadLimit": "上传数量限制" + } + }, + "voice": { + "name": "音色", + "defaultDisplay": "缺省音色", + "description": "文本转语音音色设置", + "settings": "设置", + "voiceSettings": { + "title": "音色设置", + "language": "语言", + "resolutionTooltip": "文本转语音音色支持语言。", + "voice": "音色", + "autoPlay": "自动播放", + "autoPlayEnabled": "开启", + "autoPlayDisabled": "关闭" + } + }, + "openingStatement": { + "title": "对话开场白", + "add": "添加开场白", + "writeOpener": "编写开场白", + "placeholder": "在这里写下你的开场白,你可以使用变量,尝试输入 {{variable}}。", + "openingQuestion": "开场问题", + "openingQuestionPlaceholder": "可以使用变量,尝试输入 {{variable}}。", + "noDataPlaceHolder": "在对话型应用中,让 AI 主动说第一段话可以拉近与用户间的距离。", + "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": "结果", + "noResult": "输出结果展示在这", + "datasetConfig": { + "settingTitle": "召回设置", + "knowledgeTip": "点击“+”按钮添加知识库", + "retrieveOneWay": { + "title": "N 选 1 召回", + "description": "根据用户意图和知识库描述,由 Agent 自主判断选择最匹配的单个知识库来查询相关文本,适合知识库区分度大且知识库数量偏少的应用。" + }, + "retrieveMultiWay": { + "title": "多路召回", + "description": "根据用户意图同时匹配所有知识库,从多路知识库查询相关文本片段,经过重排序步骤,从多路查询结果中选择匹配用户问题的最佳结果。" + }, + "embeddingModelRequired": "未配置 Embedding 模型", + "rerankModelRequired": "未配置 Rerank 模型", + "params": "参数设置", + "top_k": "Top K", + "top_kTip": "用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整分段数量。", + "score_threshold": "Score 阈值", + "score_thresholdTip": "用于设置文本片段筛选的相似度阈值。", + "retrieveChangeTip": "修改索引模式和检索模式可能会影响与该知识库关联的应用程序。" + }, + "debugAsSingleModel": "单一模型进行调试", + "debugAsMultipleModel": "多个模型进行调试", + "duplicateModel": "复制模型", + "publishAs": "发布为", + "assistantType": { + "name": "助手类型", + "chatAssistant": { + "name": "基础助手", + "description": "基于 LLM 构建一个聊天型助手" + }, + "agentAssistant": { + "name": "智能助手", + "description": "构建一个智能助手,他可以自主选择工具完成你设置的任务" + } + }, + "agent": { + "agentMode": "Agent Mode", + "agentModeDes": "设置代理的推理模式类型", + "agentModeType": { + "ReACT": "ReAct", + "functionCall": "Function Calling" + }, + "setting": { + "name": "Agent 设置", + "description": "智能助手设置允许设置代理模式和内置提示等高级功能,仅在代理类型中可用。", + "maximumIterations": { + "name": "最大迭代次数", + "description": "限制代理型助手执行迭代的次数" + } + }, + "buildInPrompt": "内置提示词", + "firstPrompt": "第一次提示词", + "nextIteration": "下一次迭代", + "promptPlaceholder": "在这里写下您的提示词", + "tools": { + "name": "工具", + "description": "使用工具可以扩展代理的能力,比如搜索互联网或科学计算", + "enabled": "启用" + } + } +} diff --git a/web/i18n/zh-Hans/app-debug.ts b/web/i18n/zh-Hans/app-debug.ts deleted file mode 100644 index 5d6c2842a5..0000000000 --- a/web/i18n/zh-Hans/app-debug.ts +++ /dev/null @@ -1,570 +0,0 @@ -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: '用户表示', - }, - code: { - instruction: '指令', - }, - notSetAPIKey: { - title: 'LLM 提供者的密钥未设置', - trailFinished: '试用已结束', - description: '在调试之前需要设置 LLM 提供者的密钥。', - settingBtn: '去设置', - }, - trailUseGPT4Info: { - title: '当前不支持使用 gpt-4', - description: '使用 gpt-4,请设置 API Key', - }, - feature: { - groupChat: { - title: '聊天增强', - description: '为聊天型应用添加预对话设置,可以提升用户体验。', - }, - groupExperience: { - title: '体验增强', - }, - conversationOpener: { - title: '对话开场白', - description: '在对话型应用中,让 AI 主动说第一段话可以拉近与用户间的距离。', - }, - suggestedQuestionsAfterAnswer: { - title: '下一步问题建议', - description: '设置下一步问题建议可以让用户更好的对话。', - resDes: '回答结束后系统会给出 3 个建议', - tryToAsk: '试着问问', - }, - moreLikeThis: { - title: '更多类似的', - description: '一次生成多条文本,可在此基础上编辑并继续生成', - generateNumTip: '每次生成数', - tip: '使用此功能将会额外消耗 tokens', - }, - 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: '您可以导入知识库作为上下文', - selectTitle: '选择引用知识库', - selected: '个知识库被选中', - noDataSet: '未找到知识库', - toCreate: '去创建', - notSupportSelectMulti: '目前只支持引用一个知识库', - queryVariable: { - title: '查询变量', - tip: '该变量将用作上下文检索的查询输入,获取与该变量的输入相关的上下文信息。', - choosePlaceholder: '请选择变量', - noVar: '没有变量', - noVarTip: '请创建变量', - unableToQueryDataSet: '无法查询知识库', - unableToQueryDataSetTip: '无法成功查询知识库,请在上下文部分选择一个上下文查询变量。', - ok: '好的', - contextVarNotEmpty: '上下文查询变量不能为空', - deleteContextVarTitle: '删除变量“{{varName}}”?', - deleteContextVarTip: '该变量已被设置为上下文查询变量,删除该变量将影响知识库的正常使用。如果您仍需要删除它,请在上下文部分中重新选择它。', - }, - }, - tools: { - title: '工具', - tips: '工具提供了一个标准的 API 调用方式,将用户输入或变量作为 API 的请求参数,用于查询外部数据作为上下文。', - toolsInUse: '{{count}} 工具使用中', - modal: { - title: '工具', - toolType: { - title: '工具类型', - placeholder: '请选择工具类型', - }, - name: { - title: '名称', - placeholder: '请填写名称', - }, - variableName: { - title: '变量名称', - placeholder: '请填写变量名称', - }, - }, - }, - conversationHistory: { - title: '对话历史', - description: '设置对话角色的前缀名称', - tip: '对话历史未启用,请在上面的提示中添加。', - learnMore: '了解更多', - editModal: { - title: '编辑对话角色名称', - userPrefix: '用户前缀', - assistantPrefix: '助手前缀', - }, - }, - toolbox: { - title: '工具箱', - }, - moderation: { - title: '内容审查', - description: '您可以调用审查 API 或者维护敏感词库来使模型更安全地输出。', - contentEnableLabel: '内容审查已启用', - allEnabled: '输入内容和输出内容', - inputEnabled: '输入内容', - outputEnabled: '输出内容', - modal: { - title: '内容审查设置', - provider: { - title: '类别', - openai: 'OpenAI Moderation', - openaiTip: { - prefix: 'OpenAI Moderation 需要在', - suffix: '中配置 OpenAI API 密钥。', - }, - keywords: '关键词', - }, - keywords: { - tip: '每行一个,用换行符分隔。每行最多 100 个字符。', - placeholder: '每行一个,用换行符分隔', - line: '行', - }, - content: { - input: '审查输入内容', - output: '审查输出内容', - preset: '预设回复', - placeholder: '这里预设回复内容', - condition: '审查输入内容和审查输出内容至少启用一项', - fromApi: '预设回复通过 API 返回', - errorMessage: '预设回复不能为空', - supportMarkdown: '支持 Markdown', - }, - openaiNotConfig: { - before: 'OpenAI 内容审查需要在', - after: '中配置 OpenAI API 密钥。', - }, - }, - }, - fileUpload: { - title: '文件上传', - description: '聊天输入框支持上传文件。类型包括图片、文档以及其它类型', - supportedTypes: '支持的文件类型', - numberLimit: '最大上传数', - modalTitle: '文件上传设置', - }, - imageUpload: { - title: '图片上传', - description: '支持上传图片', - supportedTypes: '支持的文件类型', - numberLimit: '最大上传数', - modalTitle: '图片上传设置', - }, - bar: { - empty: '开启功能增强 web app 用户体验', - enableText: '功能已开启', - manage: '管理', - }, - documentUpload: { - title: '文档', - description: '启用文档后,模型可以接收文档并回答关于它们的问题。', - }, - audioUpload: { - title: '音频', - description: '启用音频后,模型可以处理音频文件进行转录和分析。', - }, - }, - codegen: { - title: '代码生成器', - description: '代码生成器使用配置的模型根据您的指令生成高质量的代码。请提供清晰详细的说明。', - instruction: '指令', - instructionPlaceholder: '请输入您想要生成的代码的详细描述。', - noDataLine1: '在左侧描述您的用例,', - noDataLine2: '代码预览将在此处显示。', - generate: '生成', - generatedCodeTitle: '生成的代码', - loading: '正在生成代码...', - apply: '应用', - applyChanges: '应用更改', - resTitle: '生成的代码', - overwriteConfirmTitle: '是否覆盖现有代码?', - overwriteConfirmMessage: '此操作将覆盖现有代码。您确定要继续吗?', - }, - generate: { - title: '提示词生成器', - description: '提示词生成器使用配置的模型来优化提示词,以获得更高的质量和更好的结构。请写出清晰详细的说明。', - tryIt: '试一试', - instruction: '指令', - instructionPlaceHolderTitle: '描述您希望如何改进此提示词。例如:', - instructionPlaceHolderLine1: '使输出更简洁,保留核心要点。', - instructionPlaceHolderLine2: '输出格式不正确,请严格遵循 JSON 格式。', - instructionPlaceHolderLine3: '语气过于生硬,请使其更友好。', - codeGenInstructionPlaceHolderLine: '反馈越详细,例如输入和输出的数据类型以及变量的处理方式,代码生成就会越准确。', - idealOutput: '理想输出', - idealOutputPlaceholder: '描述您理想的回复格式、长度、语气和内容要求……', - optional: '可选', - dismiss: '取消', - generate: '生成', - resTitle: '生成的提示词', - newNoDataLine1: '在左侧描述您的用例,点击生成查看结果。', - apply: '应用', - loading: '为您编排应用程序中…', - overwriteTitle: '覆盖现有配置?', - overwriteMessage: '应用此提示将覆盖现有配置。', - template: { - pythonDebugger: { - name: 'Python 代码助手', - instruction: '一个帮你写和纠错程序的机器人', - }, - translation: { - name: '翻译机器人', - instruction: '一个可以翻译多种语言的翻译器', - }, - professionalAnalyst: { - name: '职业分析师', - instruction: ' 从长篇报告中提取洞察、识别风险并提炼关键信息', - }, - excelFormulaExpert: { - name: 'Excel 公式专家', - instruction: '一个可以让小白用户理解、使用和创建 Excel 公式的对话机器人', - }, - travelPlanning: { - name: '旅行规划助手', - instruction: '旅行规划助手是一个智能工具,旨在帮助用户轻松规划他们的旅行', - }, - SQLSorcerer: { - name: 'SQL 生成', - instruction: '把自然语言转换成 SQL 查询语句', - }, - GitGud: { - name: 'Git 大师', - instruction: '从用户提出的版本管理需求生成合适的 Git 命令', - }, - meetingTakeaways: { - name: '总结会议纪要', - instruction: '将会议内容提炼总结,包括讨论主题、关键要点和待办事项', - }, - writingsPolisher: { - name: '润色文章', - instruction: '用地道的编辑技巧改进我的文章', - }, - }, - press: '输入', - to: '来', - insertContext: '插入上下文', - optimizePromptTooltip: '在提示词生成器中优化', - optimizationNote: '优化说明', - versions: '版本', - version: '版本', - latest: '最新', - }, - resetConfig: { - title: '确认重置?', - message: '重置将丢失当前页面所有修改,恢复至上次发布时的配置', - }, - errorMessage: { - nameOfKeyRequired: '变量 {{key}} 对应的名称必填', - valueOfVarRequired: '{{key}}必填', - queryRequired: '主要文本必填', - waitForResponse: '请等待上条信息响应完成', - waitForBatchResponse: '请等待批量任务完成', - notSelectModel: '请选择模型', - waitForImgUpload: '请等待图片上传完成', - waitForFileUpload: '请等待文件上传完成', - }, - warningMessage: { - timeoutExceeded: '由于超时,结果未显示。请参考日志获取完整结果。', - }, - chatSubTitle: '提示词', - completionSubTitle: '前缀提示词', - promptTip: - '提示词用于对 AI 的回复做出一系列指令和约束。可插入表单变量,例如 {{input}}。这段提示词不会被最终用户所看到。', - formattingChangedTitle: '编排已改变', - formattingChangedText: '修改编排将重置调试区域,确定吗?', - variableTitle: '变量', - notSetVar: '变量能使用户输入表单引入提示词或开场白,你可以试试在提示词中输入 {{input}}', - variableTip: - '变量将以表单形式让用户在对话前填写,用户填写的表单内容将自动替换提示词中的变量。', - autoAddVar: '提示词中引用了未定义的变量,是否自动添加到用户输入表单中?', - variableTable: { - key: '变量 Key', - name: '字段名称', - type: '类型', - action: '操作', - typeString: '文本', - typeSelect: '下拉选项', - }, - varKeyError: { - canNoBeEmpty: '{{key}}必填', - tooLong: '{{key}} 长度太长。不能超过 30 个字符', - notValid: '{{key}} 非法。只能包含英文字符,数字和下划线', - notStartWithNumber: '{{key}} 不能以数字开头', - keyAlreadyExists: '{{key}} 已存在', - }, - otherError: { - promptNoBeEmpty: '提示词不能为空', - historyNoBeEmpty: '提示词中必须设置对话历史', - queryNoBeEmpty: '提示词中必须设置查询内容', - }, - variableConfig: { - 'addModalTitle': '添加变量', - 'editModalTitle': '编辑变量', - 'description': '设置变量 {{varName}}', - 'fieldType': '字段类型', - 'string': '文本', - 'text-input': '文本', - 'paragraph': '段落', - 'select': '下拉选项', - 'number': '数字', - 'checkbox': '复选框', - 'single-file': '单文件', - 'multi-files': '文件列表', - 'json': 'JSON', - 'jsonSchema': 'JSON Schema', - 'optional': '可选', - 'notSet': '未设置,在 Prompt 中输入 {{input}} 试试', - 'stringTitle': '文本框设置', - 'maxLength': '最大长度', - 'options': '选项', - 'addOption': '添加选项', - 'apiBasedVar': '基于 API 的变量', - 'varName': '变量名称', - 'inputPlaceholder': '请输入', - 'labelName': '显示名称', - 'displayName': '显示名称', - 'required': '必填', - 'hide': '隐藏', - 'placeholder': '占位符', - 'placeholderPlaceholder': '输入字段为空时显示的文本', - 'defaultValue': '默认值', - 'defaultValuePlaceholder': '输入默认值以预先填充字段', - 'unit': '单位', - 'unitPlaceholder': '在数字后显示的单位,如 token', - 'tooltips': '提示', - 'tooltipsPlaceholder': '输入悬停在标签上时显示的提示文本', - 'showAllSettings': '显示所有设置', - 'startSelectedOption': '默认选中项', - 'noDefaultSelected': '不默认选中', - 'file': { - supportFileTypes: '支持的文件类型', - image: { - name: '图片', - }, - audio: { - name: '音频', - }, - document: { - name: '文档', - }, - video: { - name: '视频', - }, - custom: { - name: '其他文件类型', - description: '指定其他文件类型', - createPlaceholder: '+ 文件扩展名,例如 .doc', - }, - }, - 'uploadFileTypes': '上传文件类型', - 'uploadMethod': '上传方式', - 'localUpload': '本地上传', - 'both': '两者', - 'maxNumberOfUploads': '最大上传数', - 'maxNumberTip': '文档 < {{docLimit}}, 图片 < {{imgLimit}}, 音频 < {{audioLimit}}, 视频 < {{videoLimit}}', - 'content': '内容', - 'errorMsg': { - labelNameRequired: '显示名称必填', - varNameCanBeRepeat: '变量名称不能重复', - atLeastOneOption: '至少需要一个选项', - optionRepeat: '选项不能重复', - }, - 'startChecked': '默认勾选', - 'noDefaultValue': '无默认值', - 'selectDefaultValue': '选择默认值', - }, - vision: { - name: '视觉', - description: '开启视觉功能将允许模型输入图片,并根据图像内容的理解回答用户问题', - onlySupportVisionModelTip: '只有视觉模型配置视觉功能', - settings: '设置', - visionSettings: { - title: '视觉设置', - resolution: '分辨率', - resolutionTooltip: '低分辨率模式将使模型接收图像的低分辨率版本,尺寸为 512 x 512,并使用 65 Tokens 来表示图像。这样可以使 API 更快地返回响应,并在不需要高细节的用例中消耗更少的输入。\n高分辨率模式将首先允许模型查看低分辨率图像,然后根据输入图像的大小创建 512 像素的详细裁剪图像。每个详细裁剪图像使用两倍的预算总共为 129 Tokens。', - high: '高', - low: '低', - uploadMethod: '上传方式', - both: '两者', - localUpload: '本地上传', - url: 'URL', - uploadLimit: '上传数量限制', - }, - }, - voice: { - name: '音色', - defaultDisplay: '缺省音色', - description: '文本转语音音色设置', - settings: '设置', - voiceSettings: { - title: '音色设置', - language: '语言', - resolutionTooltip: '文本转语音音色支持语言。', - voice: '音色', - autoPlay: '自动播放', - autoPlayEnabled: '开启', - autoPlayDisabled: '关闭', - }, - }, - openingStatement: { - title: '对话开场白', - add: '添加开场白', - writeOpener: '编写开场白', - placeholder: '在这里写下你的开场白,你可以使用变量,尝试输入 {{variable}}。', - openingQuestion: '开场问题', - openingQuestionPlaceholder: '可以使用变量,尝试输入 {{variable}}。', - noDataPlaceHolder: - '在对话型应用中,让 AI 主动说第一段话可以拉近与用户间的距离。', - 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: '结果', - noResult: '输出结果展示在这', - datasetConfig: { - settingTitle: '召回设置', - knowledgeTip: '点击“+”按钮添加知识库', - retrieveOneWay: { - title: 'N 选 1 召回', - description: '根据用户意图和知识库描述,由 Agent 自主判断选择最匹配的单个知识库来查询相关文本,适合知识库区分度大且知识库数量偏少的应用。', - }, - retrieveMultiWay: { - title: '多路召回', - description: '根据用户意图同时匹配所有知识库,从多路知识库查询相关文本片段,经过重排序步骤,从多路查询结果中选择匹配用户问题的最佳结果。', - }, - embeddingModelRequired: '未配置 Embedding 模型', - rerankModelRequired: '未配置 Rerank 模型', - params: '参数设置', - top_k: 'Top K', - top_kTip: '用于筛选与用户问题相似度最高的文本片段。系统同时会根据选用模型上下文窗口大小动态调整分段数量。', - score_threshold: 'Score 阈值', - score_thresholdTip: '用于设置文本片段筛选的相似度阈值。', - retrieveChangeTip: '修改索引模式和检索模式可能会影响与该知识库关联的应用程序。', - }, - debugAsSingleModel: '单一模型进行调试', - debugAsMultipleModel: '多个模型进行调试', - duplicateModel: '复制模型', - publishAs: '发布为', - assistantType: { - name: '助手类型', - chatAssistant: { - name: '基础助手', - description: '基于 LLM 构建一个聊天型助手', - }, - agentAssistant: { - name: '智能助手', - description: '构建一个智能助手,他可以自主选择工具完成你设置的任务', - }, - }, - agent: { - agentMode: 'Agent Mode', - agentModeDes: '设置代理的推理模式类型', - agentModeType: { - ReACT: 'ReAct', - functionCall: 'Function Calling', - }, - setting: { - name: 'Agent 设置', - description: '智能助手设置允许设置代理模式和内置提示等高级功能,仅在代理类型中可用。', - maximumIterations: { - name: '最大迭代次数', - description: '限制代理型助手执行迭代的次数', - }, - }, - buildInPrompt: '内置提示词', - firstPrompt: '第一次提示词', - nextIteration: '下一次迭代', - promptPlaceholder: '在这里写下您的提示词', - tools: { - name: '工具', - description: '使用工具可以扩展代理的能力,比如搜索互联网或科学计算', - enabled: '启用', - }, - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/app-log.json b/web/i18n/zh-Hans/app-log.json new file mode 100644 index 0000000000..d2bda2d81f --- /dev/null +++ b/web/i18n/zh-Hans/app-log.json @@ -0,0 +1,110 @@ +{ + "title": "日志", + "description": "日志记录了应用的运行情况,包括用户的输入和 AI 的回复。", + "dateTimeFormat": "YYYY-MM-DD HH:mm:ss", + "dateFormat": "YYYY-MM-DD", + "table": { + "header": { + "updatedTime": "更新时间", + "time": "创建时间", + "endUser": "用户或账户", + "input": "输入", + "output": "输出", + "summary": "标题", + "messageCount": "消息数", + "userRate": "用户反馈", + "adminRate": "管理员反馈", + "startTime": "开始时间", + "status": "状态", + "runtime": "运行时间", + "tokens": "TOKENS", + "user": "用户或账户", + "version": "版本", + "triggered_from": "触发方式" + }, + "pagination": { + "previous": "上一页", + "next": "下一页" + }, + "empty": { + "noChat": "未开始的对话", + "noOutput": "无输出", + "element": { + "title": "这里有人吗", + "content": "在这里观测和标注最终用户和 AI 应用程序之间的交互,以不断提高 AI 的准确性。您可以尝试分享测试此Web应用程序,然后返回此页面。" + } + } + }, + "detail": { + "time": "时间", + "conversationId": "对话 ID", + "promptTemplate": "前缀提示词", + "promptTemplateBeforeChat": "对话前提示词 · 以系统消息提交", + "annotationTip": "{{user}} 标记的改进回复", + "timeConsuming": "耗时", + "second": " 秒", + "tokenCost": "花费 Token", + "loading": "加载中", + "operation": { + "like": "赞同", + "dislike": "反对", + "addAnnotation": "标记改进回复", + "editAnnotation": "编辑改进回复", + "annotationPlaceholder": "输入你希望 AI 回复的预期答案,这在今后可用于模型微调,持续改进文本生成质量。" + }, + "variables": "变量", + "uploadImages": "上传的图片", + "modelParams": "模型参数" + }, + "filter": { + "period": { + "today": "今天", + "last7days": "过去 7 天", + "last30days": "过去 30 天", + "last4weeks": "过去 4 周", + "last3months": "过去 3 月", + "last12months": "过去 12 月", + "monthToDate": "本月至今", + "quarterToDate": "本季度至今", + "yearToDate": "本年至今", + "allTime": "所有时间", + "custom": "自定义" + }, + "annotation": { + "all": "全部", + "annotated": "已标注改进({{count}} 项)", + "not_annotated": "未标注" + }, + "sortBy": "排序:", + "descending": "降序", + "ascending": "升序" + }, + "workflowTitle": "日志", + "workflowSubtitle": "日志记录了应用的执行情况", + "runDetail": { + "title": "对话日志", + "workflowTitle": "日志详情", + "fileListLabel": "文件详情", + "fileListDetail": "详情", + "testWithParams": "按此参数测试" + }, + "promptLog": "Prompt 日志", + "agentLog": "Agent 日志", + "viewLog": "查看日志", + "agentLogDetail": { + "agentMode": "Agent 模式", + "toolUsed": "使用工具", + "iterations": "迭代次数", + "iteration": "迭代", + "finalProcessing": "最终处理" + }, + "triggerBy": { + "debugging": "调试", + "appRun": "网页应用", + "webhook": "Webhook", + "schedule": "定时任务", + "plugin": "插件", + "ragPipelineRun": "RAG 流水线", + "ragPipelineDebugging": "RAG 调试" + } +} diff --git a/web/i18n/zh-Hans/app-log.ts b/web/i18n/zh-Hans/app-log.ts deleted file mode 100644 index 629d584642..0000000000 --- a/web/i18n/zh-Hans/app-log.ts +++ /dev/null @@ -1,112 +0,0 @@ -const translation = { - title: '日志', - description: '日志记录了应用的运行情况,包括用户的输入和 AI 的回复。', - dateTimeFormat: 'YYYY-MM-DD HH:mm:ss', - dateFormat: 'YYYY-MM-DD', - table: { - header: { - updatedTime: '更新时间', - time: '创建时间', - endUser: '用户或账户', - input: '输入', - output: '输出', - summary: '标题', - messageCount: '消息数', - userRate: '用户反馈', - adminRate: '管理员反馈', - startTime: '开始时间', - status: '状态', - runtime: '运行时间', - tokens: 'TOKENS', - user: '用户或账户', - version: '版本', - triggered_from: '触发方式', - }, - pagination: { - previous: '上一页', - next: '下一页', - }, - empty: { - noChat: '未开始的对话', - noOutput: '无输出', - element: { - title: '这里有人吗', - content: '在这里观测和标注最终用户和 AI 应用程序之间的交互,以不断提高 AI 的准确性。您可以尝试分享测试此Web应用程序,然后返回此页面。', - }, - }, - }, - detail: { - time: '时间', - conversationId: '对话 ID', - promptTemplate: '前缀提示词', - promptTemplateBeforeChat: '对话前提示词 · 以系统消息提交', - annotationTip: '{{user}} 标记的改进回复', - timeConsuming: '耗时', - second: ' 秒', - tokenCost: '花费 Token', - loading: '加载中', - operation: { - like: '赞同', - dislike: '反对', - addAnnotation: '标记改进回复', - editAnnotation: '编辑改进回复', - annotationPlaceholder: '输入你希望 AI 回复的预期答案,这在今后可用于模型微调,持续改进文本生成质量。', - }, - variables: '变量', - uploadImages: '上传的图片', - modelParams: '模型参数', - }, - filter: { - period: { - today: '今天', - last7days: '过去 7 天', - last30days: '过去 30 天', - last4weeks: '过去 4 周', - last3months: '过去 3 月', - last12months: '过去 12 月', - monthToDate: '本月至今', - quarterToDate: '本季度至今', - yearToDate: '本年至今', - allTime: '所有时间', - custom: '自定义', - }, - annotation: { - all: '全部', - annotated: '已标注改进({{count}} 项)', - not_annotated: '未标注', - }, - sortBy: '排序:', - descending: '降序', - ascending: '升序', - }, - workflowTitle: '日志', - workflowSubtitle: '日志记录了应用的执行情况', - runDetail: { - title: '对话日志', - workflowTitle: '日志详情', - fileListLabel: '文件详情', - fileListDetail: '详情', - testWithParams: '按此参数测试', - }, - promptLog: 'Prompt 日志', - agentLog: 'Agent 日志', - viewLog: '查看日志', - agentLogDetail: { - agentMode: 'Agent 模式', - toolUsed: '使用工具', - iterations: '迭代次数', - iteration: '迭代', - finalProcessing: '最终处理', - }, - triggerBy: { - debugging: '调试', - appRun: '网页应用', - webhook: 'Webhook', - schedule: '定时任务', - plugin: '插件', - ragPipelineRun: 'RAG 流水线', - ragPipelineDebugging: 'RAG 调试', - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/app-overview.json b/web/i18n/zh-Hans/app-overview.json new file mode 100644 index 0000000000..6430dfd5f2 --- /dev/null +++ b/web/i18n/zh-Hans/app-overview.json @@ -0,0 +1,187 @@ +{ + "welcome": { + "firstStepTip": "开始之前,", + "enterKeyTip": "请先在下方输入你的 OpenAI API Key", + "getKeyTip": "从 OpenAI 获取你的 API Key", + "placeholder": "你的 OpenAI API Key(例如 sk-xxxx)" + }, + "apiKeyInfo": { + "cloud": { + "trial": { + "title": "您正在使用 {{providerName}} 的试用配额。", + "description": "试用配额仅供您测试使用。在试用配额用完之前,请自行设置模型提供商或购买额外配额。" + }, + "exhausted": { + "title": "您的试用额度已用完,请设置您的 APIKey。", + "description": "您的试用配额已用完。请设置您自己的模型提供商或购买额外配额。" + } + }, + "selfHost": { + "title": { + "row1": "首先,", + "row2": "设置您的模型提供商。" + } + }, + "callTimes": "调用次数", + "usedToken": "使用 Tokens", + "setAPIBtn": "设置模型提供商", + "tryCloud": "或者尝试使用 Dify 的云版本并使用试用配额" + }, + "overview": { + "title": "概览", + "appInfo": { + "title": "Web App", + "explanation": "开箱即用的 AI web app", + "accessibleAddress": "公开访问 URL", + "preview": "预览", + "launch": "启动", + "regenerate": "重新生成", + "regenerateNotice": "您是否要重新生成公开访问 URL?", + "preUseReminder": "使用前请先打开开关", + "enableTooltip": { + "description": "要启用此功能,请在画布中添加用户输入节点。(草稿中可能已存在,发布后生效)", + "learnMore": "了解更多" + }, + "settings": { + "entry": "设置", + "title": "web app 设置", + "modalTip": "客户端 web app 设置。", + "webName": "web app 名称", + "webDesc": "web app 描述", + "webDescTip": "以下文字将展示在客户端中,对应用进行说明和使用上的基本引导", + "webDescPlaceholder": "请输入 web app 的描述", + "language": "语言", + "workflow": { + "title": "工作流", + "subTitle": "工作流详情", + "show": "显示", + "hide": "隐藏", + "showDesc": "在 web app 中展示或者隐藏工作流详情" + }, + "chatColorTheme": "聊天颜色主题", + "chatColorThemeDesc": "设置聊天机器人的颜色主题", + "chatColorThemeInverted": "反转", + "invalidHexMessage": "无效的十六进制值", + "invalidPrivacyPolicy": "无效的隐私政策链接,请使用以 http 或 https 开头的有效链接", + "sso": { + "label": "单点登录认证", + "title": "web app SSO 认证", + "description": "启用后,所有用户都需要先进行 SSO 认证才能访问", + "tooltip": "联系管理员以开启 web app SSO 认证" + }, + "more": { + "entry": "展示更多设置", + "copyright": "版权", + "copyrightTip": "在 web app 中展示版权信息", + "copyrightTooltip": "请升级到专业版或者更高", + "copyRightPlaceholder": "请输入作者或组织名称", + "privacyPolicy": "隐私政策", + "privacyPolicyPlaceholder": "请输入隐私政策链接", + "privacyPolicyTip": "帮助访问者了解该应用收集的数据,可参考 Dify 的隐私政策。", + "customDisclaimer": "自定义免责声明", + "customDisclaimerPlaceholder": "请输入免责声明", + "customDisclaimerTip": "在应用中展示免责声明,可用于告知用户 AI 的局限性。" + } + }, + "embedded": { + "entry": "嵌入", + "title": "嵌入到网站中", + "explanation": "选择一种方式将聊天应用嵌入到你的网站中", + "iframe": "将以下 iframe 嵌入到你的网站中的目标位置", + "scripts": "将以下代码嵌入到你的网站中", + "chromePlugin": "安装 Dify Chrome 浏览器扩展", + "copied": "已复制", + "copy": "复制" + }, + "qrcode": { + "title": "二维码分享", + "scan": "扫码分享应用", + "download": "下载二维码" + }, + "customize": { + "way": "方法", + "entry": "定制化", + "title": "定制化 AI web app", + "explanation": "你可以定制化 Web App 前端以符合你的情景与风格需求", + "way1": { + "name": "Fork 客户端代码修改后部署到 Vercel(推荐)", + "step1": "Fork 客户端代码并修改", + "step1Tip": "点击此处 Fork 源码到你的 GitHub 中,然后修改代码", + "step1Operation": "Dify-WebClient", + "step2": "部署到 Vercel 中", + "step2Tip": "点击此处将仓库导入到 Vercel 中部署", + "step2Operation": "导入仓库", + "step3": "配置环境变量", + "step3Tip": "在 Vercel 环境变量中添加以下环境变量" + }, + "way2": { + "name": "编写客户端调用 API 并部署到服务器中", + "operation": "查看文档" + } + } + }, + "apiInfo": { + "title": "后端服务 API", + "explanation": "可集成至你的应用的后端即服务", + "accessibleAddress": "API 访问凭据", + "doc": "查阅 API 文档" + }, + "triggerInfo": { + "title": "触发器", + "explanation": "工作流触发器管理", + "triggersAdded": "已添加 {{count}} 个触发器", + "noTriggerAdded": "未添加触发器", + "triggerStatusDescription": "触发器节点状态显示在这里。(草稿中可能已存在,发布后生效)", + "learnAboutTriggers": "了解触发器" + }, + "status": { + "running": "运行中", + "disable": "已停用" + }, + "disableTooltip": { + "triggerMode": "触发节点模式下不支持{{feature}}功能。" + } + }, + "analysis": { + "title": "分析", + "ms": "毫秒", + "tokenPS": "Token/秒", + "totalMessages": { + "title": "全部消息数", + "explanation": "反映 AI 每天的互动总次数,每回答用户一个问题算一条 Message。" + }, + "totalConversations": { + "title": "全部会话数", + "explanation": "反映 AI 每天的会话总次数,提示词编排和调试的消息不计入。" + }, + "activeUsers": { + "title": "活跃用户数", + "explanation": "与 AI 有效互动,即有一问一答以上的唯一用户数。提示词编排和调试的会话不计入。" + }, + "tokenUsage": { + "title": "费用消耗", + "explanation": "反映每日该应用请求语言模型的 Tokens 花费,用于成本控制。", + "consumed": "耗费" + }, + "avgSessionInteractions": { + "title": "平均会话互动数", + "explanation": "反映每个会话用户的持续沟通次数,如果用户与 AI 问答了 10 轮,即为 10。该指标反映了用户粘性。仅在对话型应用提供。" + }, + "avgUserInteractions": { + "title": "平均用户调用次数", + "explanation": "反映每天用户的使用次数。该指标反映了用户粘性。" + }, + "userSatisfactionRate": { + "title": "用户满意度", + "explanation": "每 1000 条消息的点赞数。反映了用户对回答十分满意的比例。" + }, + "avgResponseTime": { + "title": "平均响应时间", + "explanation": "衡量 AI 应用处理和回复用户请求所花费的平均时间,单位为毫秒,反映性能和用户体验。仅在文本型应用提供。" + }, + "tps": { + "title": "Token 输出速度", + "explanation": "衡量 LLM 的性能。统计 LLM 从请求开始到输出完毕这段期间的 Tokens 输出速度。" + } + } +} diff --git a/web/i18n/zh-Hans/app-overview.ts b/web/i18n/zh-Hans/app-overview.ts deleted file mode 100644 index 2b9379e51b..0000000000 --- a/web/i18n/zh-Hans/app-overview.ts +++ /dev/null @@ -1,189 +0,0 @@ -const translation = { - welcome: { - firstStepTip: '开始之前,', - enterKeyTip: '请先在下方输入你的 OpenAI API Key', - getKeyTip: '从 OpenAI 获取你的 API Key', - placeholder: '你的 OpenAI API Key(例如 sk-xxxx)', - }, - apiKeyInfo: { - cloud: { - trial: { - title: '您正在使用 {{providerName}} 的试用配额。', - description: '试用配额仅供您测试使用。在试用配额用完之前,请自行设置模型提供商或购买额外配额。', - }, - exhausted: { - title: '您的试用额度已用完,请设置您的 APIKey。', - description: '您的试用配额已用完。请设置您自己的模型提供商或购买额外配额。', - }, - }, - selfHost: { - title: { - row1: '首先,', - row2: '设置您的模型提供商。', - }, - }, - callTimes: '调用次数', - usedToken: '使用 Tokens', - setAPIBtn: '设置模型提供商', - tryCloud: '或者尝试使用 Dify 的云版本并使用试用配额', - }, - overview: { - title: '概览', - appInfo: { - title: 'Web App', - explanation: '开箱即用的 AI web app', - accessibleAddress: '公开访问 URL', - preview: '预览', - launch: '启动', - regenerate: '重新生成', - regenerateNotice: '您是否要重新生成公开访问 URL?', - preUseReminder: '使用前请先打开开关', - enableTooltip: { - description: '要启用此功能,请在画布中添加用户输入节点。(草稿中可能已存在,发布后生效)', - learnMore: '了解更多', - }, - settings: { - entry: '设置', - title: 'web app 设置', - modalTip: '客户端 web app 设置。', - webName: 'web app 名称', - webDesc: 'web app 描述', - webDescTip: '以下文字将展示在客户端中,对应用进行说明和使用上的基本引导', - webDescPlaceholder: '请输入 web app 的描述', - language: '语言', - workflow: { - title: '工作流', - subTitle: '工作流详情', - show: '显示', - hide: '隐藏', - showDesc: '在 web app 中展示或者隐藏工作流详情', - }, - chatColorTheme: '聊天颜色主题', - chatColorThemeDesc: '设置聊天机器人的颜色主题', - chatColorThemeInverted: '反转', - invalidHexMessage: '无效的十六进制值', - invalidPrivacyPolicy: '无效的隐私政策链接,请使用以 http 或 https 开头的有效链接', - sso: { - label: '单点登录认证', - title: 'web app SSO 认证', - description: '启用后,所有用户都需要先进行 SSO 认证才能访问', - tooltip: '联系管理员以开启 web app SSO 认证', - }, - more: { - entry: '展示更多设置', - copyright: '版权', - copyrightTip: '在 web app 中展示版权信息', - copyrightTooltip: '请升级到专业版或者更高', - copyRightPlaceholder: '请输入作者或组织名称', - privacyPolicy: '隐私政策', - privacyPolicyPlaceholder: '请输入隐私政策链接', - privacyPolicyTip: '帮助访问者了解该应用收集的数据,可参考 Dify 的隐私政策。', - customDisclaimer: '自定义免责声明', - customDisclaimerPlaceholder: '请输入免责声明', - customDisclaimerTip: '在应用中展示免责声明,可用于告知用户 AI 的局限性。', - }, - }, - embedded: { - entry: '嵌入', - title: '嵌入到网站中', - explanation: '选择一种方式将聊天应用嵌入到你的网站中', - iframe: '将以下 iframe 嵌入到你的网站中的目标位置', - scripts: '将以下代码嵌入到你的网站中', - chromePlugin: '安装 Dify Chrome 浏览器扩展', - copied: '已复制', - copy: '复制', - }, - qrcode: { - title: '二维码分享', - scan: '扫码分享应用', - download: '下载二维码', - }, - customize: { - way: '方法', - entry: '定制化', - title: '定制化 AI web app', - explanation: '你可以定制化 Web App 前端以符合你的情景与风格需求', - way1: { - name: 'Fork 客户端代码修改后部署到 Vercel(推荐)', - step1: 'Fork 客户端代码并修改', - step1Tip: '点击此处 Fork 源码到你的 GitHub 中,然后修改代码', - step1Operation: 'Dify-WebClient', - step2: '部署到 Vercel 中', - step2Tip: '点击此处将仓库导入到 Vercel 中部署', - step2Operation: '导入仓库', - step3: '配置环境变量', - step3Tip: '在 Vercel 环境变量中添加以下环境变量', - }, - way2: { - name: '编写客户端调用 API 并部署到服务器中', - operation: '查看文档', - }, - }, - }, - apiInfo: { - title: '后端服务 API', - explanation: '可集成至你的应用的后端即服务', - accessibleAddress: 'API 访问凭据', - doc: '查阅 API 文档', - }, - triggerInfo: { - title: '触发器', - explanation: '工作流触发器管理', - triggersAdded: '已添加 {{count}} 个触发器', - noTriggerAdded: '未添加触发器', - triggerStatusDescription: '触发器节点状态显示在这里。(草稿中可能已存在,发布后生效)', - learnAboutTriggers: '了解触发器', - }, - status: { - running: '运行中', - disable: '已停用', - }, - disableTooltip: { - triggerMode: '触发节点模式下不支持{{feature}}功能。', - }, - }, - analysis: { - title: '分析', - ms: '毫秒', - tokenPS: 'Token/秒', - totalMessages: { - title: '全部消息数', - explanation: '反映 AI 每天的互动总次数,每回答用户一个问题算一条 Message。', - }, - totalConversations: { - title: '全部会话数', - explanation: '反映 AI 每天的会话总次数,提示词编排和调试的消息不计入。', - }, - activeUsers: { - title: '活跃用户数', - explanation: '与 AI 有效互动,即有一问一答以上的唯一用户数。提示词编排和调试的会话不计入。', - }, - tokenUsage: { - title: '费用消耗', - explanation: '反映每日该应用请求语言模型的 Tokens 花费,用于成本控制。', - consumed: '耗费', - }, - avgSessionInteractions: { - title: '平均会话互动数', - explanation: '反映每个会话用户的持续沟通次数,如果用户与 AI 问答了 10 轮,即为 10。该指标反映了用户粘性。仅在对话型应用提供。', - }, - avgUserInteractions: { - title: '平均用户调用次数', - explanation: '反映每天用户的使用次数。该指标反映了用户粘性。', - }, - userSatisfactionRate: { - title: '用户满意度', - explanation: '每 1000 条消息的点赞数。反映了用户对回答十分满意的比例。', - }, - avgResponseTime: { - title: '平均响应时间', - explanation: '衡量 AI 应用处理和回复用户请求所花费的平均时间,单位为毫秒,反映性能和用户体验。仅在文本型应用提供。', - }, - tps: { - title: 'Token 输出速度', - explanation: '衡量 LLM 的性能。统计 LLM 从请求开始到输出完毕这段期间的 Tokens 输出速度。', - }, - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/app.json b/web/i18n/zh-Hans/app.json new file mode 100644 index 0000000000..aee19f0551 --- /dev/null +++ b/web/i18n/zh-Hans/app.json @@ -0,0 +1,351 @@ +{ + "theme": { + "switchDark": "切换至深色主题", + "switchLight": "切换至浅色主题" + }, + "appNamePlaceholder": "给你的应用起个名字", + "createApp": "创建应用", + "types": { + "all": "全部", + "chatbot": "聊天助手", + "agent": "Agent", + "workflow": "工作流", + "completion": "文本生成", + "advanced": "Chatflow", + "basic": "基础编排" + }, + "duplicate": "复制", + "mermaid": { + "handDrawn": "手绘", + "classic": "经典" + }, + "duplicateTitle": "复制应用", + "export": "导出 DSL", + "exportFailed": "导出 DSL 失败", + "importDSL": "导入 DSL 文件", + "createFromConfigFile": "通过 DSL 文件创建", + "importFromDSL": "导入 DSL", + "importFromDSLFile": "文件", + "importFromDSLUrl": "URL", + "importFromDSLUrlPlaceholder": "输入 DSL 文件的 URL", + "dslUploader": { + "button": "拖拽文件至此,或者", + "browse": "选择文件" + }, + "deleteAppConfirmTitle": "确认删除应用?", + "deleteAppConfirmContent": "删除应用将无法撤销。用户将不能访问你的应用,所有 Prompt 编排配置和日志均将一并被删除。", + "appDeleted": "应用已删除", + "appDeleteFailed": "应用删除失败", + "join": "参与社区", + "communityIntro": "与团队成员、贡献者和开发者在不同频道中交流", + "roadmap": "产品路线图", + "newApp": { + "learnMore": "了解更多", + "startFromBlank": "创建空白应用", + "startFromTemplate": "从应用模板创建", + "foundResult": "{{count}} 个结果", + "foundResults": "{{count}} 个结果", + "noAppsFound": "未找到应用", + "noTemplateFound": "未找到模板", + "noTemplateFoundTip": "请尝试使用不同的关键字进行搜索。", + "chatbotShortDescription": "简单配置即可构建基于 LLM 的对话机器人", + "chatbotUserDescription": "通过简单的配置快速搭建一个基于 LLM 的对话机器人。支持切换为 Chatflow 编排。", + "completionShortDescription": "用于文本生成任务的 AI 助手", + "completionUserDescription": "通过简单的配置快速搭建一个面向文本生成类任务的 AI 助手。", + "agentShortDescription": "具备推理与自主工具调用的智能助手", + "agentUserDescription": "能够迭代式的规划推理、自主工具调用,直至完成任务目标的智能助手。", + "workflowShortDescription": "面向单轮自动化任务的编排工作流", + "workflowUserDescription": "基于工作流编排,适用于自动化、批处理等单轮生成类任务的场景。", + "workflowWarning": "正在进行 Beta 测试", + "advancedShortDescription": "支持记忆的复杂多轮对话工作流", + "advancedUserDescription": "基于工作流编排,适用于定义等复杂流程的多轮对话场景,具有记忆功能。", + "chooseAppType": "选择应用类型", + "forBeginners": "新手适用", + "forAdvanced": "进阶用户适用", + "noIdeaTip": "没有想法?试试我们的模板", + "captionName": "应用名称 & 图标", + "appNamePlaceholder": "给你的应用起个名字", + "optional": "可选", + "captionDescription": "描述", + "appDescriptionPlaceholder": "输入应用的描述", + "useTemplate": "使用该模板", + "previewDemo": "预览 Demo", + "chatApp": "助手", + "chatAppIntro": "我要构建一个聊天场景的应用。该应用采用一问一答模式与用户持续对话。", + "agentAssistant": "新的智能助手", + "completeApp": "文本生成应用", + "completeAppIntro": "我要构建一个根据提示生成高质量文本的应用,例如生成文章、摘要、翻译等", + "showTemplates": "我想从范例模板中选择", + "hideTemplates": "返回应用类型选择", + "Create": "创建", + "Cancel": "取消", + "Confirm": "确认", + "import": "导入", + "nameNotEmpty": "名称不能为空", + "appTemplateNotSelected": "请选择应用模板", + "appTypeRequired": "请选择应用类型", + "appCreated": "应用已创建", + "caution": "注意", + "appCreateDSLWarning": "注意:DSL 版本差异可能影响部分功能表现", + "appCreateDSLErrorTitle": "版本不兼容", + "appCreateDSLErrorPart1": "检测到 DSL 版本差异较大,强制导入应用可能无法正常运行。", + "appCreateDSLErrorPart2": "是否继续?", + "appCreateDSLErrorPart3": "当前应用 DSL 版本:", + "appCreateDSLErrorPart4": "系统支持 DSL 版本:", + "appCreateFailed": "应用创建失败", + "dropDSLToCreateApp": "拖放 DSL 文件到此处创建应用" + }, + "newAppFromTemplate": { + "byCategories": "分类", + "searchAllTemplate": "搜索所有模板...", + "sidebar": { + "Recommended": "推荐", + "Agent": "Agent", + "Assistant": "助手", + "HR": "人力资源", + "Workflow": "工作流", + "Writing": "写作", + "Programming": "编程" + } + }, + "editApp": "编辑信息", + "editAppTitle": "编辑应用信息", + "editDone": "应用信息已更新", + "editFailed": "更新应用信息失败", + "iconPicker": { + "ok": "确认", + "cancel": "取消", + "emoji": "表情符号", + "image": "图片" + }, + "answerIcon": { + "title": "使用 web app 图标替换 🤖", + "description": "是否使用 web app 图标替换分享的应用界面中的 🤖", + "descriptionInExplore": "是否使用 web app 图标替换 Explore 界面中的 🤖" + }, + "switch": "迁移为工作流编排", + "switchTipStart": "将为您创建一个使用工作流编排的新应用。新应用将", + "switchTip": "不能够", + "switchTipEnd": "迁移回基础编排", + "switchLabel": "新应用创建为", + "removeOriginal": "删除原应用", + "switchStart": "开始迁移", + "typeSelector": { + "all": "所有类型", + "chatbot": "聊天助手", + "agent": "Agent", + "workflow": "工作流", + "completion": "文本生成", + "advanced": "Chatflow" + }, + "tracing": { + "title": "追踪应用性能", + "description": "配置第三方 LLMOps 提供商并跟踪应用程序性能。", + "config": "配置", + "view": "查看", + "collapse": "折叠", + "expand": "展开", + "tracing": "追踪", + "disabled": "已禁用", + "disabledTip": "请先配置提供商", + "enabled": "已启用", + "tracingDescription": "捕获应用程序执行的完整上下文,包括 LLM 调用、上下文、提示、HTTP 请求等,发送到第三方跟踪平台。", + "configProviderTitle": { + "configured": "已配置", + "notConfigured": "配置提供商以启用追踪", + "moreProvider": "更多提供商" + }, + "arize": { + "title": "Arize", + "description": "企业级LLM可观测性、在线和离线评估、监控和实验平台,基于OpenTelemetry构建,专为LLM和代理驱动的应用程序设计。" + }, + "phoenix": { + "title": "Phoenix", + "description": "开源且基于OpenTelemetry的可观测性、评估、提示工程和实验平台,适用于您的LLM工作流程和代理。" + }, + "langsmith": { + "title": "LangSmith", + "description": "一个全方位的开发者平台,适用于 LLM 驱动应用程序生命周期的每个步骤。" + }, + "langfuse": { + "title": "Langfuse", + "description": "跟踪、评估、提示管理和指标,以调试和改进您的 LLM 应用程序。" + }, + "opik": { + "title": "Opik", + "description": "一个全方位的开发者平台,适用于 LLM 驱动应用程序生命周期的每个步骤。" + }, + "inUse": "使用中", + "configProvider": { + "title": "配置 ", + "placeholder": "输入你的{{key}}", + "project": "项目", + "publicKey": "公钥", + "secretKey": "密钥", + "viewDocsLink": "查看 {{key}} 的文档", + "removeConfirmTitle": "删除 {{key}} 配置?", + "removeConfirmContent": "当前配置正在使用中,删除它将关闭追踪功能。", + "clientSecret": "OAuth 客户端密钥", + "trackingUri": "跟踪 URI", + "password": "密码", + "databricksHost": "Databricks 工作区 URL", + "username": "用户名", + "clientId": "OAuth 客户端 ID", + "experimentId": "实验编号", + "personalAccessToken": "个人访问令牌(旧版)" + }, + "weave": { + "title": "编织", + "description": "Weave 是一个开源平台,用于评估、测试和监控大型语言模型应用程序。" + }, + "aliyun": { + "title": "云监控", + "description": "阿里云提供的全托管免运维可观测平台,一键开启Dify应用的监控追踪和评估" + }, + "mlflow": { + "title": "MLflow", + "description": "开源LLMOps平台,提供实验跟踪、可观测性和评估功能,帮助您自信地构建AI/LLM应用。" + }, + "databricks": { + "title": "Databricks", + "description": "Databricks提供完全托管的MLflow,具有强大的治理和安全功能,用于存储跟踪数据。" + }, + "tencent": { + "title": "腾讯云 APM", + "description": "腾讯云应用性能监控,提供 LLM 应用全链路追踪和多维分析" + } + }, + "appSelector": { + "label": "应用", + "placeholder": "选择一个应用", + "params": "应用参数", + "noParams": "无需参数" + }, + "openInExplore": "在“探索”中打开", + "showMyCreatedAppsOnly": "我创建的", + "structOutput": { + "moreFillTip": "最多显示 10 级嵌套", + "required": "必填", + "LLMResponse": "LLM 的响应", + "configure": "配置", + "notConfiguredTip": "结构化输出尚未配置", + "structured": "结构化输出", + "structuredTip": "结构化输出是一项功能,可确保模型始终生成符合您提供的 JSON 模式的响应", + "modelNotSupported": "模型不支持", + "modelNotSupportedTip": "当前模型不支持此功能,将自动降级为提示注入。" + }, + "accessControl": "Web 应用访问控制", + "accessItemsDescription": { + "anyone": "任何人都可以访问该 web 应用(无需登录)", + "specific": "仅指定的平台内成员可访问该 Web 应用", + "organization": "平台内所有成员均可访问该 Web 应用", + "external": "仅经认证的外部用户可访问该 Web 应用" + }, + "accessControlDialog": { + "title": "Web 应用访问权限", + "description": "设置 web 应用访问权限。", + "accessLabel": "谁可以访问", + "accessItems": { + "anyone": "任何人", + "specific": "平台内指定成员", + "organization": "平台内所有成员", + "external": "经认证的外部用户" + }, + "groups_one": "{{count}} 个组", + "groups_other": "{{count}} 个组", + "members_one": "{{count}} 个成员", + "members_other": "{{count}} 个成员", + "noGroupsOrMembers": "未选择分组或成员", + "webAppSSONotEnabledTip": "请联系企业管理员配置 Web 应用外部认证方式。", + "operateGroupAndMember": { + "searchPlaceholder": "搜索组或成员", + "allMembers": "所有成员", + "expand": "展开", + "noResult": "没有结果" + }, + "updateSuccess": "更新成功" + }, + "publishApp": { + "title": "谁可以访问 web 应用", + "notSet": "未设置", + "notSetDesc": "当前任何人都无法访问 Web 应用。请设置访问权限。" + }, + "noAccessPermission": "没有权限访问 web 应用", + "noUserInputNode": "缺少用户输入节点", + "notPublishedYet": "应用暂未发布", + "maxActiveRequests": "最大活跃请求数", + "maxActiveRequestsPlaceholder": "0 表示不限制", + "maxActiveRequestsTip": "当前应用的最大活跃请求数(0 表示不限制)", + "gotoAnything": { + "searchPlaceholder": "搜索或输入 @ 或 / 以使用命令...", + "searchTitle": "搜索任何内容", + "searching": "搜索中...", + "noResults": "未找到结果", + "searchFailed": "搜索失败", + "searchTemporarilyUnavailable": "搜索暂时不可用", + "servicesUnavailableMessage": "某些搜索服务可能遇到问题,请稍后再试。", + "someServicesUnavailable": "某些搜索服务不可用", + "resultCount": "{{count}} 个结果", + "resultCount_other": "{{count}} 个结果", + "inScope": "在 {{scope}}s 中", + "clearToSearchAll": "清除 @ 以搜索全部", + "useAtForSpecific": "使用 @ 进行特定类型搜索", + "selectToNavigate": "选择以导航", + "startTyping": "开始输入以搜索", + "tips": "按 ↑↓ 导航", + "pressEscToClose": "按 ESC 关闭", + "selectSearchType": "选择搜索内容", + "searchHint": "开始输入即可立即搜索所有内容", + "commandHint": "输入 @ 按类别浏览", + "slashHint": "输入 / 查看所有可用命令", + "actions": { + "slashTitle": "命令", + "searchApplications": "搜索应用程序", + "searchApplicationsDesc": "搜索并导航到您的应用程序", + "searchPlugins": "搜索插件", + "searchPluginsDesc": "搜索并导航到您的插件", + "searchKnowledgeBases": "搜索知识库", + "searchKnowledgeBasesDesc": "搜索并导航到您的知识库", + "searchWorkflowNodes": "搜索工作流节点", + "searchWorkflowNodesDesc": "按名称或类型查找并跳转到当前工作流中的节点", + "searchWorkflowNodesHelp": "此功能仅在查看工作流时有效。首先导航到工作流。", + "runTitle": "命令", + "runDesc": "快速执行命令(主题、语言等)", + "themeCategoryTitle": "主题", + "themeCategoryDesc": "切换应用主题", + "themeSystem": "系统主题", + "themeSystemDesc": "跟随系统外观", + "themeLight": "浅色主题", + "themeLightDesc": "使用浅色外观", + "themeDark": "深色主题", + "themeDarkDesc": "使用深色外观", + "languageCategoryTitle": "语言", + "languageCategoryDesc": "切换界面语言", + "languageChangeDesc": "更改界面语言", + "slashDesc": "执行命令(输入 / 查看所有可用命令)", + "accountDesc": "导航到账户页面", + "communityDesc": "打开 Discord 社区", + "docDesc": "打开帮助文档", + "feedbackDesc": "打开社区反馈讨论", + "zenTitle": "专注模式", + "zenDesc": "切换画布专注模式" + }, + "emptyState": { + "noAppsFound": "未找到应用", + "noPluginsFound": "未找到插件", + "noKnowledgeBasesFound": "未找到知识库", + "noWorkflowNodesFound": "未找到工作流节点", + "tryDifferentTerm": "尝试不同的搜索词", + "trySpecificSearch": "尝试使用 {{shortcuts}} 进行特定搜索" + }, + "groups": { + "apps": "应用程序", + "plugins": "插件", + "knowledgeBases": "知识库", + "workflowNodes": "工作流节点", + "commands": "命令" + }, + "noMatchingCommands": "未找到匹配的命令", + "tryDifferentSearch": "请尝试不同的搜索词" + } +} diff --git a/web/i18n/zh-Hans/app.ts b/web/i18n/zh-Hans/app.ts deleted file mode 100644 index 71edaa1629..0000000000 --- a/web/i18n/zh-Hans/app.ts +++ /dev/null @@ -1,356 +0,0 @@ -const translation = { - theme: { - switchDark: '切换至深色主题', - switchLight: '切换至浅色主题', - }, - appNamePlaceholder: '给你的应用起个名字', - createApp: '创建应用', - types: { - all: '全部', - chatbot: '聊天助手', - agent: 'Agent', - workflow: '工作流', - completion: '文本生成', - advanced: 'Chatflow', - basic: '基础编排', - }, - duplicate: '复制', - mermaid: { - handDrawn: '手绘', - classic: '经典', - }, - duplicateTitle: '复制应用', - export: '导出 DSL', - exportFailed: '导出 DSL 失败', - importDSL: '导入 DSL 文件', - createFromConfigFile: '通过 DSL 文件创建', - importFromDSL: '导入 DSL', - importFromDSLFile: '文件', - importFromDSLUrl: 'URL', - importFromDSLUrlPlaceholder: '输入 DSL 文件的 URL', - dslUploader: { - button: '拖拽文件至此,或者', - browse: '选择文件', - }, - deleteAppConfirmTitle: '确认删除应用?', - deleteAppConfirmContent: - '删除应用将无法撤销。用户将不能访问你的应用,所有 Prompt 编排配置和日志均将一并被删除。', - appDeleted: '应用已删除', - appDeleteFailed: '应用删除失败', - join: '参与社区', - communityIntro: '与团队成员、贡献者和开发者在不同频道中交流', - roadmap: '产品路线图', - newApp: { - learnMore: '了解更多', - startFromBlank: '创建空白应用', - startFromTemplate: '从应用模板创建', - foundResult: '{{count}} 个结果', - foundResults: '{{count}} 个结果', - noAppsFound: '未找到应用', - noTemplateFound: '未找到模板', - noTemplateFoundTip: '请尝试使用不同的关键字进行搜索。', - chatbotShortDescription: '简单配置即可构建基于 LLM 的对话机器人', - chatbotUserDescription: '通过简单的配置快速搭建一个基于 LLM 的对话机器人。支持切换为 Chatflow 编排。', - completionShortDescription: '用于文本生成任务的 AI 助手', - completionUserDescription: '通过简单的配置快速搭建一个面向文本生成类任务的 AI 助手。', - agentShortDescription: '具备推理与自主工具调用的智能助手', - agentUserDescription: '能够迭代式的规划推理、自主工具调用,直至完成任务目标的智能助手。', - workflowShortDescription: '面向单轮自动化任务的编排工作流', - workflowUserDescription: '基于工作流编排,适用于自动化、批处理等单轮生成类任务的场景。', - workflowWarning: '正在进行 Beta 测试', - advancedShortDescription: '支持记忆的复杂多轮对话工作流', - advancedUserDescription: '基于工作流编排,适用于定义等复杂流程的多轮对话场景,具有记忆功能。', - chooseAppType: '选择应用类型', - forBeginners: '新手适用', - forAdvanced: '进阶用户适用', - noIdeaTip: '没有想法?试试我们的模板', - captionName: '应用名称 & 图标', - appNamePlaceholder: '给你的应用起个名字', - optional: '可选', - captionDescription: '描述', - appDescriptionPlaceholder: '输入应用的描述', - useTemplate: '使用该模板', - previewDemo: '预览 Demo', - chatApp: '助手', - chatAppIntro: - '我要构建一个聊天场景的应用。该应用采用一问一答模式与用户持续对话。', - agentAssistant: '新的智能助手', - completeApp: '文本生成应用', - completeAppIntro: - '我要构建一个根据提示生成高质量文本的应用,例如生成文章、摘要、翻译等', - showTemplates: '我想从范例模板中选择', - hideTemplates: '返回应用类型选择', - Create: '创建', - Cancel: '取消', - Confirm: '确认', - import: '导入', - nameNotEmpty: '名称不能为空', - appTemplateNotSelected: '请选择应用模板', - appTypeRequired: '请选择应用类型', - appCreated: '应用已创建', - caution: '注意', - appCreateDSLWarning: '注意:DSL 版本差异可能影响部分功能表现', - appCreateDSLErrorTitle: '版本不兼容', - appCreateDSLErrorPart1: '检测到 DSL 版本差异较大,强制导入应用可能无法正常运行。', - appCreateDSLErrorPart2: '是否继续?', - appCreateDSLErrorPart3: '当前应用 DSL 版本:', - appCreateDSLErrorPart4: '系统支持 DSL 版本:', - appCreateFailed: '应用创建失败', - dropDSLToCreateApp: '拖放 DSL 文件到此处创建应用', - }, - newAppFromTemplate: { - byCategories: '分类', - searchAllTemplate: '搜索所有模板...', - sidebar: { - Recommended: '推荐', - Agent: 'Agent', - Assistant: '助手', - HR: '人力资源', - Workflow: '工作流', - Writing: '写作', - Programming: '编程', - }, - }, - editApp: '编辑信息', - editAppTitle: '编辑应用信息', - editDone: '应用信息已更新', - editFailed: '更新应用信息失败', - iconPicker: { - ok: '确认', - cancel: '取消', - emoji: '表情符号', - image: '图片', - }, - answerIcon: { - title: '使用 web app 图标替换 🤖', - description: '是否使用 web app 图标替换分享的应用界面中的 🤖', - descriptionInExplore: '是否使用 web app 图标替换 Explore 界面中的 🤖', - }, - switch: '迁移为工作流编排', - switchTipStart: '将为您创建一个使用工作流编排的新应用。新应用将', - switchTip: '不能够', - switchTipEnd: '迁移回基础编排', - switchLabel: '新应用创建为', - removeOriginal: '删除原应用', - switchStart: '开始迁移', - typeSelector: { - all: '所有类型', - chatbot: '聊天助手', - agent: 'Agent', - workflow: '工作流', - completion: '文本生成', - advanced: 'Chatflow', - }, - tracing: { - title: '追踪应用性能', - description: '配置第三方 LLMOps 提供商并跟踪应用程序性能。', - config: '配置', - view: '查看', - collapse: '折叠', - expand: '展开', - tracing: '追踪', - disabled: '已禁用', - disabledTip: '请先配置提供商', - enabled: '已启用', - tracingDescription: '捕获应用程序执行的完整上下文,包括 LLM 调用、上下文、提示、HTTP 请求等,发送到第三方跟踪平台。', - configProviderTitle: { - configured: '已配置', - notConfigured: '配置提供商以启用追踪', - moreProvider: '更多提供商', - }, - arize: { - title: 'Arize', - description: '企业级LLM可观测性、在线和离线评估、监控和实验平台,基于OpenTelemetry构建,专为LLM和代理驱动的应用程序设计。', - }, - phoenix: { - title: 'Phoenix', - description: '开源且基于OpenTelemetry的可观测性、评估、提示工程和实验平台,适用于您的LLM工作流程和代理。', - }, - langsmith: { - title: 'LangSmith', - description: '一个全方位的开发者平台,适用于 LLM 驱动应用程序生命周期的每个步骤。', - }, - langfuse: { - title: 'Langfuse', - description: '跟踪、评估、提示管理和指标,以调试和改进您的 LLM 应用程序。', - }, - opik: { - title: 'Opik', - description: '一个全方位的开发者平台,适用于 LLM 驱动应用程序生命周期的每个步骤。', - }, - inUse: '使用中', - configProvider: { - title: '配置 ', - placeholder: '输入你的{{key}}', - project: '项目', - publicKey: '公钥', - secretKey: '密钥', - viewDocsLink: '查看 {{key}} 的文档', - removeConfirmTitle: '删除 {{key}} 配置?', - removeConfirmContent: '当前配置正在使用中,删除它将关闭追踪功能。', - clientSecret: 'OAuth 客户端密钥', - trackingUri: '跟踪 URI', - password: '密码', - databricksHost: 'Databricks 工作区 URL', - username: '用户名', - clientId: 'OAuth 客户端 ID', - experimentId: '实验编号', - personalAccessToken: '个人访问令牌(旧版)', - }, - weave: { - title: '编织', - description: 'Weave 是一个开源平台,用于评估、测试和监控大型语言模型应用程序。', - }, - aliyun: { - title: '云监控', - description: '阿里云提供的全托管免运维可观测平台,一键开启Dify应用的监控追踪和评估', - }, - mlflow: { - title: 'MLflow', - description: '开源LLMOps平台,提供实验跟踪、可观测性和评估功能,帮助您自信地构建AI/LLM应用。', - }, - databricks: { - title: 'Databricks', - description: 'Databricks提供完全托管的MLflow,具有强大的治理和安全功能,用于存储跟踪数据。', - }, - tencent: { - title: '腾讯云 APM', - description: '腾讯云应用性能监控,提供 LLM 应用全链路追踪和多维分析', - }, - }, - appSelector: { - label: '应用', - placeholder: '选择一个应用', - params: '应用参数', - noParams: '无需参数', - }, - openInExplore: '在“探索”中打开', - showMyCreatedAppsOnly: '我创建的', - structOutput: { - moreFillTip: '最多显示 10 级嵌套', - required: '必填', - LLMResponse: 'LLM 的响应', - configure: '配置', - notConfiguredTip: '结构化输出尚未配置', - structured: '结构化输出', - structuredTip: '结构化输出是一项功能,可确保模型始终生成符合您提供的 JSON 模式的响应', - modelNotSupported: '模型不支持', - modelNotSupportedTip: '当前模型不支持此功能,将自动降级为提示注入。', - }, - accessControl: 'Web 应用访问控制', - accessItemsDescription: { - anyone: '任何人都可以访问该 web 应用(无需登录)', - specific: '仅指定的平台内成员可访问该 Web 应用', - organization: '平台内所有成员均可访问该 Web 应用', - external: '仅经认证的外部用户可访问该 Web 应用', - }, - accessControlDialog: { - title: 'Web 应用访问权限', - description: '设置 web 应用访问权限。', - accessLabel: '谁可以访问', - accessItems: { - anyone: '任何人', - specific: '平台内指定成员', - organization: '平台内所有成员', - external: '经认证的外部用户', - }, - groups_one: '{{count}} 个组', - groups_other: '{{count}} 个组', - members_one: '{{count}} 个成员', - members_other: '{{count}} 个成员', - noGroupsOrMembers: '未选择分组或成员', - webAppSSONotEnabledTip: '请联系企业管理员配置 Web 应用外部认证方式。', - operateGroupAndMember: { - searchPlaceholder: '搜索组或成员', - allMembers: '所有成员', - expand: '展开', - noResult: '没有结果', - }, - updateSuccess: '更新成功', - }, - publishApp: { - title: '谁可以访问 web 应用', - notSet: '未设置', - notSetDesc: '当前任何人都无法访问 Web 应用。请设置访问权限。', - }, - noAccessPermission: '没有权限访问 web 应用', - noUserInputNode: '缺少用户输入节点', - notPublishedYet: '应用暂未发布', - maxActiveRequests: '最大活跃请求数', - maxActiveRequestsPlaceholder: '0 表示不限制', - maxActiveRequestsTip: '当前应用的最大活跃请求数(0 表示不限制)', - gotoAnything: { - searchPlaceholder: '搜索或输入 @ 或 / 以使用命令...', - searchTitle: '搜索任何内容', - searching: '搜索中...', - noResults: '未找到结果', - searchFailed: '搜索失败', - searchTemporarilyUnavailable: '搜索暂时不可用', - servicesUnavailableMessage: '某些搜索服务可能遇到问题,请稍后再试。', - someServicesUnavailable: '某些搜索服务不可用', - resultCount: '{{count}} 个结果', - resultCount_other: '{{count}} 个结果', - inScope: '在 {{scope}}s 中', - clearToSearchAll: '清除 @ 以搜索全部', - useAtForSpecific: '使用 @ 进行特定类型搜索', - selectToNavigate: '选择以导航', - startTyping: '开始输入以搜索', - tips: '按 ↑↓ 导航', - pressEscToClose: '按 ESC 关闭', - selectSearchType: '选择搜索内容', - searchHint: '开始输入即可立即搜索所有内容', - commandHint: '输入 @ 按类别浏览', - slashHint: '输入 / 查看所有可用命令', - actions: { - slashTitle: '命令', - searchApplications: '搜索应用程序', - searchApplicationsDesc: '搜索并导航到您的应用程序', - searchPlugins: '搜索插件', - searchPluginsDesc: '搜索并导航到您的插件', - searchKnowledgeBases: '搜索知识库', - searchKnowledgeBasesDesc: '搜索并导航到您的知识库', - searchWorkflowNodes: '搜索工作流节点', - searchWorkflowNodesDesc: '按名称或类型查找并跳转到当前工作流中的节点', - searchWorkflowNodesHelp: '此功能仅在查看工作流时有效。首先导航到工作流。', - runTitle: '命令', - runDesc: '快速执行命令(主题、语言等)', - themeCategoryTitle: '主题', - themeCategoryDesc: '切换应用主题', - themeSystem: '系统主题', - themeSystemDesc: '跟随系统外观', - themeLight: '浅色主题', - themeLightDesc: '使用浅色外观', - themeDark: '深色主题', - themeDarkDesc: '使用深色外观', - languageCategoryTitle: '语言', - languageCategoryDesc: '切换界面语言', - languageChangeDesc: '更改界面语言', - slashDesc: '执行命令(输入 / 查看所有可用命令)', - accountDesc: '导航到账户页面', - communityDesc: '打开 Discord 社区', - docDesc: '打开帮助文档', - feedbackDesc: '打开社区反馈讨论', - zenTitle: '专注模式', - zenDesc: '切换画布专注模式', - }, - emptyState: { - noAppsFound: '未找到应用', - noPluginsFound: '未找到插件', - noKnowledgeBasesFound: '未找到知识库', - noWorkflowNodesFound: '未找到工作流节点', - tryDifferentTerm: '尝试不同的搜索词', - trySpecificSearch: '尝试使用 {{shortcuts}} 进行特定搜索', - }, - groups: { - apps: '应用程序', - plugins: '插件', - knowledgeBases: '知识库', - workflowNodes: '工作流节点', - commands: '命令', - }, - noMatchingCommands: '未找到匹配的命令', - tryDifferentSearch: '请尝试不同的搜索词', - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/billing.json b/web/i18n/zh-Hans/billing.json new file mode 100644 index 0000000000..756b93cd03 --- /dev/null +++ b/web/i18n/zh-Hans/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "当前套餐", + "usagePage": { + "teamMembers": "团队成员", + "buildApps": "构建应用程序数", + "annotationQuota": "标注回复数", + "documentsUploadQuota": "文档上传配额", + "vectorSpace": "知识库数据存储空间", + "vectorSpaceTooltip": "采用高质量索引模式的文档会消耗知识数据存储资源。当知识数据存储达到限制时,将不会上传新文档。", + "triggerEvents": "触发器事件数", + "perMonth": "每月", + "resetsIn": "{{count,number}} 天后重置" + }, + "triggerLimitModal": { + "title": "升级以解锁更多触发器事件数", + "description": "您已达到此计划上工作流的触发器事件数限制。", + "dismiss": "知道了", + "upgrade": "升级", + "usageTitle": "触发事件额度" + }, + "upgradeBtn": { + "plain": "查看套餐", + "encourage": "立即升级", + "encourageShort": "升级" + }, + "viewBilling": "管理账单及订阅", + "viewBillingTitle": "账单与订阅", + "viewBillingDescription": "管理支付方式、发票和订阅变更。", + "viewBillingAction": "管理", + "buyPermissionDeniedTip": "请联系企业管理员订阅", + "plansCommon": { + "title": { + "plans": "套餐", + "description": "选择最适合您团队需求的套餐。" + }, + "freeTrialTipPrefix": "注册即可", + "freeTrialTip": "免费试用 200 个 OpenAI 消息额度", + "freeTrialTipSuffix": "。无需信用卡", + "yearlyTip": "支付 10 个月,享受 1 年!", + "mostPopular": "最受欢迎", + "cloud": "云服务", + "self": "自部署", + "planRange": { + "monthly": "按月", + "yearly": "按年" + }, + "month": "月", + "year": "年", + "save": "节省", + "free": "免费", + "annualBilling": "按年计费节省 {{percent}}%", + "taxTip": "所有订阅价格(按月/按年)均不含适用税费(如增值税、销售税)。", + "taxTipSecond": "如果您所在地区无适用税费要求,结账时将不会显示税费,且在整个订阅周期内您都无需支付任何额外费用。", + "comparePlanAndFeatures": "对比套餐 & 功能特性", + "priceTip": "每个团队空间/", + "currentPlan": "当前计划", + "contractSales": "联系销售", + "contractOwner": "联系团队管理员", + "startForFree": "免费开始", + "startBuilding": "开始构建", + "getStarted": "立即开始", + "contactSales": "联系销售", + "talkToSales": "联系销售", + "modelProviders": "支持 OpenAI/Anthropic/Llama2/Azure OpenAI/Hugging Face/Replicate", + "teamWorkspace": "{{count,number}} 个团队空间", + "teamMember_one": "{{count,number}} 名团队成员", + "teamMember_other": "{{count,number}} 名团队成员", + "annotationQuota": "标注回复数", + "buildApps": "{{count, number}} 个应用程序", + "documents": "{{count, number}} 个知识库文档上传配额", + "documentsTooltip": "从知识库的数据源导入的文档数量配额。", + "vectorSpace": "{{size}} 知识库数据存储空间", + "vectorSpaceTooltip": "采用高质量索引模式的文档会消耗知识数据存储资源。当知识数据存储达到限制时,将不会上传新文档。", + "documentsRequestQuota": "{{count,number}} 知识请求/分钟", + "documentsRequestQuotaTooltip": "指每分钟内,一个空间在知识库中可执行的操作总数,包括数据集的创建、删除、更新,文档的上传、修改、归档,以及知识库查询等,用于评估知识库请求的性能。例如,Sandbox 用户在 1 分钟内连续执行 10 次命中测试,其工作区将在接下来的 1 分钟内无法继续执行以下操作:数据集的创建、删除、更新,文档的上传、修改等操作。", + "apiRateLimit": "API 请求频率限制", + "apiRateLimitUnit": "{{count,number}} 次", + "unlimitedApiRate": "API 请求频率无限制", + "apiRateLimitTooltip": "API 请求频率限制涵盖所有通过 Dify API 发起的调用,例如文本生成、聊天对话、工作流执行和文档处理等。", + "documentProcessingPriority": "文档处理", + "documentProcessingPriorityTip": "如需更高的文档处理优先级,请升级您的套餐。", + "documentProcessingPriorityUpgrade": "以更快的速度、更高的精度处理更多的数据。", + "priority": { + "standard": "标准", + "priority": "优先", + "top-priority": "最高优先级" + }, + "triggerEvents": { + "sandbox": "{{count,number}} 触发器事件数", + "professional": "{{count,number}} 触发器事件数/月", + "unlimited": "无限触发器事件数", + "tooltip": "通过插件、定时触发器、Webhook 等来自动触发工作流的事件数。" + }, + "workflowExecution": { + "standard": "标准工作流执行队列", + "faster": "快速工作流执行队列", + "priority": "高优先级工作流执行队列", + "tooltip": "工作流的执行队列优先级与运行速度。" + }, + "startNodes": { + "limited": "最多 {{count}} 个触发器/工作流", + "unlimited": "无限制的触发器/工作流" + }, + "logsHistory": "{{days}}日志历史", + "customTools": "自定义工具", + "unavailable": "不可用", + "days": "天", + "unlimited": "无限制", + "support": "支持", + "supportItems": { + "communityForums": "社区论坛", + "emailSupport": "电子邮件支持", + "priorityEmail": "优先电子邮件和聊天支持", + "logoChange": "Logo 更改", + "SSOAuthentication": "SSO 认证", + "personalizedSupport": "个性化支持", + "dedicatedAPISupport": "专用 API 支持", + "customIntegration": "自定义集成和支持", + "ragAPIRequest": "RAG API 请求", + "bulkUpload": "批量上传文档", + "agentMode": "代理模式", + "workflow": "工作流", + "llmLoadingBalancing": "LLM 负载均衡", + "llmLoadingBalancingTooltip": "向模型添加多个 API 密钥,有效绕过 API 速率限制。" + }, + "comingSoon": "即将推出", + "member": "成员", + "memberAfter": "个成员", + "messageRequest": { + "title": "{{count,number}} 条消息额度", + "titlePerMonth": "{{count,number}} 条消息额度/月", + "tooltip": "消息额度旨在帮助您便捷地试用 Dify 中的各类 OpenAI 模型。不同模型会消耗不同额度。额度用尽后,您可以切换为使用自己的 OpenAI API 密钥。" + }, + "annotatedResponse": { + "title": "{{count,number}} 个标注回复数", + "tooltip": "标注回复功能通过人工编辑标注为应用提供了可定制的高质量问答回复能力。" + }, + "ragAPIRequestTooltip": "指单独调用 Dify 知识库数据处理能力的 API。", + "receiptInfo": "只有团队所有者和团队管理员才能订阅和查看账单信息" + }, + "plans": { + "sandbox": { + "name": "Sandbox", + "for": "核心能力的免费试用", + "description": "免费试用核心功能。" + }, + "professional": { + "name": "Professional", + "for": "适合独立开发者或小团队", + "description": "适合准备构建生产级 AI 应用的独立开发者和小团队。" + }, + "team": { + "name": "Team", + "for": "适合中等规模的团队", + "description": "适合需要协作和更高吞吐量的中等规模团队。" + }, + "community": { + "name": "Community", + "for": "适用于个人用户、小型团队或非商业项目", + "description": "适用于开源爱好者、个人开发者以及非商业项目", + "price": "免费", + "btnText": "开始使用", + "includesTitle": "免费功能:", + "features": [ + "所有核心功能已在公共仓库发布", + "单一工作区", + "遵守 Dify 开源许可证" + ] + }, + "premium": { + "name": "Premium", + "for": "对于中型组织和团队", + "description": "适合需要部署灵活性和增强支持的中型组织和团队", + "price": "可扩展", + "priceTip": "基于云市场", + "btnText": "获得 Premium 版", + "includesTitle": "Community 版的所有功能,加上:", + "comingSoon": "即将支持 Microsoft Azure & Google Cloud", + "features": [ + "由各云服务提供商自主管理的可靠性", + "单一工作区", + "WebApp 徽标与品牌定制", + "优先电子邮件和聊天支持" + ] + }, + "enterprise": { + "name": "Enterprise", + "for": "适合大人员规模的团队", + "description": "适合需要组织级安全性、合规性、可扩展性、控制和定制解决方案的企业", + "price": "定制", + "priceTip": "仅按年计费", + "btnText": "联系销售", + "includesTitle": "Premium 版的所有功能,加上:", + "features": [ + "企业级可扩展部署解决方案", + "商业许可授权", + "专属企业功能", + "多个工作区与企业管理", + "单点登录", + "由 Dify 合作伙伴协商的服务水平协议", + "高级安全与控制", + "由 Dify 官方进行的更新和维护", + "专业技术支持" + ] + } + }, + "vectorSpace": { + "fullTip": "知识库数据存储空间已满。", + "fullSolution": "升级您的套餐以获得更多空间。" + }, + "apps": { + "fullTip1": "升级以创建更多应用", + "fullTip1des": "您已达到此计划上构建应用的限制", + "fullTip2": "计划限制已达到", + "fullTip2des": "推荐您清理不活跃的应用或者联系我们", + "contactUs": "联系我们" + }, + "annotatedResponse": { + "fullTipLine1": "升级您的套餐以", + "fullTipLine2": "标注更多对话。", + "quotaTitle": "标注的配额" + }, + "teamMembers": "团队成员", + "upgrade": { + "uploadMultiplePages": { + "title": "升级以一次性上传多个文档", + "description": "您已达到当前套餐的上传限制 —— 该套餐每次只能选择并上传 1 个文档。" + }, + "uploadMultipleFiles": { + "title": "升级以解锁批量文档上传功能", + "description": "一次性批量上传更多文档,以节省时间并提升效率。" + }, + "addChunks": { + "title": "升级以继续添加分段", + "description": "您已达到此计划的添加分段上限。" + } + } +} diff --git a/web/i18n/zh-Hans/billing.ts b/web/i18n/zh-Hans/billing.ts deleted file mode 100644 index 037f1c88c5..0000000000 --- a/web/i18n/zh-Hans/billing.ts +++ /dev/null @@ -1,221 +0,0 @@ -const translation = { - currentPlan: '当前套餐', - usagePage: { - teamMembers: '团队成员', - buildApps: '构建应用程序数', - annotationQuota: '标注回复数', - documentsUploadQuota: '文档上传配额', - vectorSpace: '知识库数据存储空间', - vectorSpaceTooltip: '采用高质量索引模式的文档会消耗知识数据存储资源。当知识数据存储达到限制时,将不会上传新文档。', - triggerEvents: '触发器事件数', - perMonth: '每月', - resetsIn: '{{count,number}} 天后重置', - }, - triggerLimitModal: { - title: '升级以解锁更多触发器事件数', - description: '您已达到此计划上工作流的触发器事件数限制。', - dismiss: '知道了', - upgrade: '升级', - usageTitle: '触发事件额度', - }, - upgradeBtn: { - plain: '查看套餐', - encourage: '立即升级', - encourageShort: '升级', - }, - viewBilling: '管理账单及订阅', - viewBillingTitle: '账单与订阅', - viewBillingDescription: '管理支付方式、发票和订阅变更。', - viewBillingAction: '管理', - buyPermissionDeniedTip: '请联系企业管理员订阅', - plansCommon: { - title: { - plans: '套餐', - description: '选择最适合您团队需求的套餐。', - }, - freeTrialTipPrefix: '注册即可', - freeTrialTip: '免费试用 200 个 OpenAI 消息额度', - freeTrialTipSuffix: '。无需信用卡', - yearlyTip: '支付 10 个月,享受 1 年!', - mostPopular: '最受欢迎', - cloud: '云服务', - self: '自部署', - planRange: { - monthly: '按月', - yearly: '按年', - }, - month: '月', - year: '年', - save: '节省', - free: '免费', - annualBilling: '按年计费节省 {{percent}}%', - taxTip: '所有订阅价格(按月/按年)均不含适用税费(如增值税、销售税)。', - taxTipSecond: '如果您所在地区无适用税费要求,结账时将不会显示税费,且在整个订阅周期内您都无需支付任何额外费用。', - comparePlanAndFeatures: '对比套餐 & 功能特性', - priceTip: '每个团队空间/', - currentPlan: '当前计划', - contractSales: '联系销售', - contractOwner: '联系团队管理员', - startForFree: '免费开始', - startBuilding: '开始构建', - getStarted: '立即开始', - contactSales: '联系销售', - talkToSales: '联系销售', - modelProviders: '支持 OpenAI/Anthropic/Llama2/Azure OpenAI/Hugging Face/Replicate', - teamWorkspace: '{{count,number}} 个团队空间', - teamMember_one: '{{count,number}} 名团队成员', - teamMember_other: '{{count,number}} 名团队成员', - annotationQuota: '标注回复数', - buildApps: '{{count, number}} 个应用程序', - documents: '{{count, number}} 个知识库文档上传配额', - documentsTooltip: '从知识库的数据源导入的文档数量配额。', - vectorSpace: '{{size}} 知识库数据存储空间', - vectorSpaceTooltip: '采用高质量索引模式的文档会消耗知识数据存储资源。当知识数据存储达到限制时,将不会上传新文档。', - documentsRequestQuota: '{{count,number}} 知识请求/分钟', - documentsRequestQuotaTooltip: '指每分钟内,一个空间在知识库中可执行的操作总数,包括数据集的创建、删除、更新,文档的上传、修改、归档,以及知识库查询等,用于评估知识库请求的性能。例如,Sandbox 用户在 1 分钟内连续执行 10 次命中测试,其工作区将在接下来的 1 分钟内无法继续执行以下操作:数据集的创建、删除、更新,文档的上传、修改等操作。', - apiRateLimit: 'API 请求频率限制', - apiRateLimitUnit: '{{count,number}} 次', - unlimitedApiRate: 'API 请求频率无限制', - apiRateLimitTooltip: 'API 请求频率限制涵盖所有通过 Dify API 发起的调用,例如文本生成、聊天对话、工作流执行和文档处理等。', - documentProcessingPriority: '文档处理', - documentProcessingPriorityTip: '如需更高的文档处理优先级,请升级您的套餐。', - documentProcessingPriorityUpgrade: '以更快的速度、更高的精度处理更多的数据。', - priority: { - 'standard': '标准', - 'priority': '优先', - 'top-priority': '最高优先级', - }, - triggerEvents: { - sandbox: '{{count,number}} 触发器事件数', - professional: '{{count,number}} 触发器事件数/月', - unlimited: '无限触发器事件数', - tooltip: '通过插件、定时触发器、Webhook 等来自动触发工作流的事件数。', - }, - workflowExecution: { - standard: '标准工作流执行队列', - faster: '快速工作流执行队列', - priority: '高优先级工作流执行队列', - tooltip: '工作流的执行队列优先级与运行速度。', - }, - startNodes: { - limited: '最多 {{count}} 个触发器/工作流', - unlimited: '无限制的触发器/工作流', - }, - logsHistory: '{{days}}日志历史', - customTools: '自定义工具', - unavailable: '不可用', - days: '天', - unlimited: '无限制', - support: '支持', - supportItems: { - communityForums: '社区论坛', - emailSupport: '电子邮件支持', - priorityEmail: '优先电子邮件和聊天支持', - logoChange: 'Logo 更改', - SSOAuthentication: 'SSO 认证', - personalizedSupport: '个性化支持', - dedicatedAPISupport: '专用 API 支持', - customIntegration: '自定义集成和支持', - ragAPIRequest: 'RAG API 请求', - bulkUpload: '批量上传文档', - agentMode: '代理模式', - workflow: '工作流', - llmLoadingBalancing: 'LLM 负载均衡', - llmLoadingBalancingTooltip: '向模型添加多个 API 密钥,有效绕过 API 速率限制。', - }, - comingSoon: '即将推出', - member: '成员', - memberAfter: '个成员', - messageRequest: { - title: '{{count,number}} 条消息额度', - titlePerMonth: '{{count,number}} 条消息额度/月', - tooltip: '消息额度旨在帮助您便捷地试用 Dify 中的各类 OpenAI 模型。不同模型会消耗不同额度。额度用尽后,您可以切换为使用自己的 OpenAI API 密钥。', - }, - annotatedResponse: { - title: '{{count,number}} 个标注回复数', - tooltip: '标注回复功能通过人工编辑标注为应用提供了可定制的高质量问答回复能力。', - }, - ragAPIRequestTooltip: '指单独调用 Dify 知识库数据处理能力的 API。', - receiptInfo: '只有团队所有者和团队管理员才能订阅和查看账单信息', - }, - plans: { - sandbox: { - name: 'Sandbox', - for: '核心能力的免费试用', - description: '免费试用核心功能。', - }, - professional: { - name: 'Professional', - for: '适合独立开发者或小团队', - description: '适合准备构建生产级 AI 应用的独立开发者和小团队。', - }, - team: { - name: 'Team', - for: '适合中等规模的团队', - description: '适合需要协作和更高吞吐量的中等规模团队。', - }, - community: { - name: 'Community', - for: '适用于个人用户、小型团队或非商业项目', - description: '适用于开源爱好者、个人开发者以及非商业项目', - price: '免费', - btnText: '开始使用', - includesTitle: '免费功能:', - features: ['所有核心功能已在公共仓库发布', '单一工作区', '遵守 Dify 开源许可证'], - }, - premium: { - name: 'Premium', - for: '对于中型组织和团队', - description: '适合需要部署灵活性和增强支持的中型组织和团队', - price: '可扩展', - priceTip: '基于云市场', - btnText: '获得 Premium 版', - includesTitle: 'Community 版的所有功能,加上:', - comingSoon: '即将支持 Microsoft Azure & Google Cloud', - features: ['由各云服务提供商自主管理的可靠性', '单一工作区', 'WebApp 徽标与品牌定制', '优先电子邮件和聊天支持'], - }, - enterprise: { - name: 'Enterprise', - for: '适合大人员规模的团队', - description: '适合需要组织级安全性、合规性、可扩展性、控制和定制解决方案的企业', - price: '定制', - priceTip: '仅按年计费', - btnText: '联系销售', - includesTitle: 'Premium 版的所有功能,加上:', - features: ['企业级可扩展部署解决方案', '商业许可授权', '专属企业功能', '多个工作区与企业管理', '单点登录', '由 Dify 合作伙伴协商的服务水平协议', '高级安全与控制', '由 Dify 官方进行的更新和维护', '专业技术支持'], - }, - }, - vectorSpace: { - fullTip: '知识库数据存储空间已满。', - fullSolution: '升级您的套餐以获得更多空间。', - }, - apps: { - fullTip1: '升级以创建更多应用', - fullTip1des: '您已达到此计划上构建应用的限制', - fullTip2: '计划限制已达到', - fullTip2des: '推荐您清理不活跃的应用或者联系我们', - contactUs: '联系我们', - }, - annotatedResponse: { - fullTipLine1: '升级您的套餐以', - fullTipLine2: '标注更多对话。', - quotaTitle: '标注的配额', - }, - teamMembers: '团队成员', - upgrade: { - uploadMultiplePages: { - title: '升级以一次性上传多个文档', - description: '您已达到当前套餐的上传限制 —— 该套餐每次只能选择并上传 1 个文档。', - }, - uploadMultipleFiles: { - title: '升级以解锁批量文档上传功能', - description: '一次性批量上传更多文档,以节省时间并提升效率。', - }, - addChunks: { - title: '升级以继续添加分段', - description: '您已达到此计划的添加分段上限。', - }, - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/common.json b/web/i18n/zh-Hans/common.json new file mode 100644 index 0000000000..8adcd5ed2b --- /dev/null +++ b/web/i18n/zh-Hans/common.json @@ -0,0 +1,791 @@ +{ + "loading": "加载中", + "error": "错误", + "theme": { + "theme": "主题", + "light": "浅色", + "dark": "深色", + "auto": "自动" + }, + "api": { + "success": "成功", + "actionSuccess": "操作成功", + "saved": "已保存", + "create": "已创建", + "remove": "已移除", + "actionFailed": "操作失败" + }, + "operation": { + "create": "创建", + "confirm": "确认", + "cancel": "取消", + "clear": "清空", + "save": "保存", + "yes": "是", + "no": "否", + "deleteConfirmTitle": "删除?", + "confirmAction": "请确认您的操作。", + "saveAndEnable": "保存并启用", + "edit": "编辑", + "add": "添加", + "added": "已添加", + "refresh": "重新开始", + "reset": "重置", + "search": "搜索", + "noSearchResults": "没有找到{{content}}", + "resetKeywords": "重置关键词", + "selectCount": "已选择 {{count}} 项", + "searchCount": "找到 {{count}} 个 {{content}}", + "noSearchCount": "0 个 {{content}}", + "change": "更改", + "remove": "移除", + "send": "发送", + "copy": "复制", + "copied": " 已复制", + "lineBreak": "换行", + "sure": "我确定", + "download": "下载", + "downloadSuccess": "下载完毕", + "downloadFailed": "下载失败,请稍后重试。", + "viewDetails": "查看详情", + "delete": "删除", + "deleteApp": "删除应用", + "settings": "设置", + "setup": "设置", + "config": "配置", + "getForFree": "免费获取", + "reload": "刷新", + "ok": "好的", + "log": "日志", + "learnMore": "了解更多", + "params": "参数设置", + "duplicate": "复制", + "rename": "重命名", + "audioSourceUnavailable": "音源不可用", + "copyImage": "复制图片", + "imageCopied": "图片已复制", + "zoomOut": "缩小", + "zoomIn": "放大", + "openInNewTab": "在新标签页打开", + "in": "在", + "saveAndRegenerate": "保存并重新生成子分段", + "close": "关闭", + "view": "查看", + "viewMore": "查看更多", + "regenerate": "重新生成", + "submit": "提交", + "skip": "跳过", + "format": "格式化", + "more": "更多", + "selectAll": "全选", + "deSelectAll": "取消全选", + "now": "现在", + "back": "返回", + "imageDownloaded": "图片已下载" + }, + "errorMsg": { + "fieldRequired": "{{field}} 为必填项", + "urlError": "url 应该以 http:// 或 https:// 开头" + }, + "placeholder": { + "input": "请输入", + "select": "请选择", + "search": "搜索..." + }, + "noData": "暂无数据", + "label": { + "optional": "(可选)" + }, + "voice": { + "language": { + "zhHans": "中文", + "zhHant": "繁体中文", + "enUS": "英语", + "deDE": "德语", + "frFR": "法语", + "esES": "西班牙语", + "itIT": "意大利语", + "thTH": "泰语", + "idID": "印尼语", + "jaJP": "日语", + "koKR": "韩语", + "ptBR": "葡萄牙语", + "ruRU": "俄语", + "ukUA": "乌克兰语", + "viVN": "越南语", + "plPL": "波兰语", + "roRO": "罗马尼亚语", + "hiIN": "印地语", + "trTR": "土耳其语", + "faIR": "波斯语", + "slSI": "斯洛文尼亚语", + "arTN": "突尼斯阿拉伯语" + } + }, + "unit": { + "char": "个字符" + }, + "actionMsg": { + "noModification": "暂无修改", + "modifiedSuccessfully": "修改成功", + "modifiedUnsuccessfully": "修改失败", + "copySuccessfully": "复制成功", + "generatedSuccessfully": "已重新生成", + "generatedUnsuccessfully": "生成失败", + "paySucceeded": "已支付成功", + "payCancelled": "已取消支付" + }, + "model": { + "params": { + "temperature": "随机性 temperature", + "temperatureTip": "控制回复的随机性。\n值越大,回复越随机。\n值越小,回复越确定或一致。", + "top_p": "核采样 top_p", + "top_pTip": "控制生成多样性。\n值越大,输出会包括更多的单词选项。\n值越小,模型会更集中在高概率的单词上,输出更确定但可能缺乏多样性。\n核采样和随机性不建议同时修改。", + "presence_penalty": "话题新鲜度 presence_penalty", + "presence_penaltyTip": "控制生成时对上文已存在的话题的偏好程度。\n值越大,越可能使用到新的话题。", + "frequency_penalty": "频率惩罚度 frequency_penalty", + "frequency_penaltyTip": "影响常见与罕见词汇使用。\n值较大时,倾向于生成不常见的词汇和表达方式。\n值越小,更倾向于使用常见和普遍接受的词汇或短语。", + "max_tokens": "单次回复限制 max_tokens", + "max_tokensTip": "用于限制回复的最大长度,以 token 为单位。\n较大的值可能会限制给提示词、聊天记录和知识库留出的空间。\n建议将其设置在三分之二以下。\ngpt-4-1106-preview、gpt-4-vision-preview 最大长度 (输入 128k,输出 4k)", + "maxTokenSettingTip": "您设置的最大 tokens 数较大,可能会导致 prompt、用户问题、知识库内容没有 token 空间进行处理,建议设置到 2/3 以下。", + "setToCurrentModelMaxTokenTip": "最大令牌数更新为当前模型最大的令牌数 {{maxToken}} 的 80%。", + "stop_sequences": "停止序列 stop_sequences", + "stop_sequencesTip": "最多四个序列,API 将停止生成更多的 token。返回的文本将不包含停止序列。", + "stop_sequencesPlaceholder": "输入序列并按 Tab 键" + }, + "tone": { + "Creative": "创意", + "Balanced": "平衡", + "Precise": "精确", + "Custom": "自定义" + }, + "addMoreModel": "添加更多模型", + "settingsLink": "模型设置", + "capabilities": "多模态能力" + }, + "menus": { + "status": "beta", + "explore": "探索", + "apps": "工作室", + "appDetail": "应用详情", + "account": "账户", + "plugins": "插件", + "exploreMarketplace": "探索 Marketplace", + "pluginsTips": "集成第三方插件或创建与 ChatGPT 兼容的 AI 插件。", + "datasets": "知识库", + "datasetsTips": "即将到来:上传自己的长文本数据,或通过 Webhook 集成自己的数据源", + "newApp": "创建应用", + "newDataset": "创建知识库", + "tools": "工具" + }, + "userProfile": { + "settings": "设置", + "emailSupport": "邮件支持", + "workspace": "工作空间", + "createWorkspace": "创建工作空间", + "helpCenter": "查看帮助文档", + "support": "支持", + "compliance": "合规", + "forum": "论坛", + "roadmap": "路线图", + "github": "GitHub", + "community": "社区", + "about": "关于", + "logout": "登出", + "contactUs": "联系我们" + }, + "compliance": { + "soc2Type1": "SOC 2 Type I Report", + "soc2Type2": "SOC 2 Type II Report", + "iso27001": "ISO 27001:2022 Certification", + "gdpr": "GDPR DPA", + "sandboxUpgradeTooltip": "仅适用于 Professional 或 Team 版计划。", + "professionalUpgradeTooltip": "仅适用于 Team 版计划或以上。" + }, + "settings": { + "accountGroup": "通用", + "workplaceGroup": "工作空间", + "generalGroup": "通用", + "account": "我的账户", + "members": "成员", + "billing": "账单", + "integrations": "集成", + "language": "语言", + "provider": "模型供应商", + "dataSource": "数据来源", + "plugin": "插件", + "apiBasedExtension": "API 扩展" + }, + "account": { + "account": "账户", + "myAccount": "我的账户", + "studio": "工作室", + "avatar": "头像", + "name": "用户名", + "email": "邮箱", + "password": "密码", + "passwordTip": "如果您不想使用验证码登录,可以设置永久密码", + "setPassword": "设置密码", + "resetPassword": "重置密码", + "currentPassword": "原密码", + "newPassword": "新密码", + "notEqual": "两个密码不相同", + "confirmPassword": "确认密码", + "langGeniusAccount": "账号关联数据", + "langGeniusAccountTip": "您的账号相关的用户数据。", + "editName": "编辑名字", + "showAppLength": "显示 {{length}} 个应用", + "delete": "删除账户", + "deleteTip": "请注意,一旦确认,作为任何空间的所有者,您的空间将被安排进入永久删除队列,您的所有用户数据也将被排入永久删除队列。", + "deletePrivacyLinkTip": "有关我们如何处理您的数据的更多信息,请参阅我们的", + "deletePrivacyLink": "隐私政策", + "deleteSuccessTip": "删除账户需要一些时间。完成后,我们会通过邮件通知您。", + "deleteLabel": "请输入您的邮箱以确认", + "deletePlaceholder": "输入您的邮箱...", + "sendVerificationButton": "发送验证码", + "verificationLabel": "验证码", + "verificationPlaceholder": "输入 6 位数字验证码", + "permanentlyDeleteButton": "永久删除", + "feedbackTitle": "反馈", + "feedbackLabel": "请告诉我们您为什么删除账户?", + "feedbackPlaceholder": "选填", + "editWorkspaceInfo": "编辑工作空间信息", + "workspaceName": "工作空间名称", + "workspaceNamePlaceholder": "输入工作空间名称", + "workspaceIcon": "工作空间图标", + "changeEmail": { + "title": "更改邮箱", + "verifyEmail": "验证当前邮箱", + "newEmail": "设置新邮箱", + "verifyNew": "验证新邮箱", + "authTip": "一旦您的电子邮件地址更改,链接到您旧电子邮件地址的 Google 或 GitHub 帐户将无法再登录该帐户。", + "content1": "如果您继续,我们将向 {{email}} 发送验证码以进行重新验证。", + "content2": "你的当前邮箱是 {{email}} 。验证码已发送至该邮箱。", + "content3": "输入新的邮箱,我们将向您发送验证码。", + "content4": "我们已将验证码发送至 {{email}}。", + "codeLabel": "验证码", + "codePlaceholder": "输入 6 位数字验证码", + "emailLabel": "新邮箱", + "emailPlaceholder": "输入新邮箱", + "existingEmail": "该邮箱已存在", + "unAvailableEmail": "该邮箱暂时无法使用。", + "sendVerifyCode": "发送验证码", + "continue": "继续", + "changeTo": "更改为 {{email}}", + "resendTip": "没有收到验证码?", + "resendCount": "请在 {{count}} 秒后重新发送", + "resend": "重新发送" + } + }, + "members": { + "team": "团队", + "invite": "添加", + "name": "姓名", + "lastActive": "上次活动时间", + "role": "角色", + "pending": "待定...", + "owner": "所有者", + "admin": "管理员", + "adminTip": "能够建立应用程序和管理团队设置", + "normal": "成员", + "normalTip": "只能使用应用程序,不能建立应用程序", + "editor": "编辑", + "editorTip": "能够建立并编辑应用程序,不能管理团队设置", + "datasetOperator": "知识库管理员", + "datasetOperatorTip": "只能管理知识库", + "inviteTeamMember": "添加团队成员", + "inviteTeamMemberTip": "对方在登录后可以访问你的团队数据。", + "emailNotSetup": "由于邮件服务器未设置,无法发送邀请邮件。请将邀请后生成的邀请链接通知用户。", + "email": "邮箱", + "emailInvalid": "邮箱格式无效", + "emailPlaceholder": "输入邮箱", + "sendInvite": "发送邀请", + "invitedAsRole": "邀请为{{role}}用户", + "invitationSent": "邀请已发送", + "invitationSentTip": "邀请已发送,对方登录 Dify 后即可访问你的团队数据。", + "invitationLink": "邀请链接", + "failedInvitationEmails": "邀请以下邮箱失败", + "ok": "好的", + "removeFromTeam": "移出团队", + "removeFromTeamTip": "将取消团队访问", + "setAdmin": "设为管理员", + "setMember": "设为普通成员", + "setEditor": "设为编辑", + "disInvite": "取消邀请", + "deleteMember": "删除成员", + "you": "(你)", + "builderTip": "可以构建和编辑自己的应用程序", + "setBuilder": "Set as builder(设置为构建器)", + "builder": "构建器", + "transferOwnership": "转移所有权", + "transferModal": { + "title": "转移工作空间所有权", + "warning": "您即将转移 “{{workspace}}”的所有权。该操作将立即生效,且无法撤销。", + "warningTip": "您将成为管理员成员,新所有者将拥有完全控制权。", + "sendTip": "如果您继续,我们将向 {{email}} 发送验证码以进行身份认证。", + "verifyEmail": "验证您当前的邮箱", + "verifyContent": "您当前的邮箱是 {{email}}。", + "verifyContent2": "我们将向该邮箱发送临时验证码以完成身份验证。", + "codeLabel": "验证码", + "codePlaceholder": "输入 6 位数字验证码", + "resendTip": "没有收到验证码?", + "resendCount": "请在 {{count}} 秒后重新发送", + "resend": "重新发送", + "transferLabel": "新所有者", + "transferPlaceholder": "选择一个成员", + "sendVerifyCode": "发送验证码", + "continue": "继续", + "transfer": "转移工作空间所有权" + } + }, + "integrations": { + "connected": "登录方式", + "google": "Google", + "googleAccount": "Google 账号登录", + "github": "GitHub", + "githubAccount": "GitHub 账号登录", + "connect": "绑定" + }, + "language": { + "displayLanguage": "界面语言", + "timezone": "时区" + }, + "provider": { + "apiKey": "API 密钥", + "enterYourKey": "输入你的 API 密钥", + "invalidKey": "无效的 OpenAI API 密钥", + "validatedError": "校验失败:", + "validating": "验证密钥中...", + "saveFailed": "API 密钥保存失败", + "apiKeyExceedBill": "此 API KEY 已没有可用配额,请阅读", + "addKey": "添加 密钥", + "comingSoon": "即将推出", + "editKey": "编辑", + "invalidApiKey": "无效的 API 密钥", + "azure": { + "apiBase": "API Base", + "apiBasePlaceholder": "输入您的 Azure OpenAI API Base 地址", + "apiKey": "API Key", + "apiKeyPlaceholder": "输入你的 API 密钥", + "helpTip": "了解 Azure OpenAI Service" + }, + "openaiHosted": { + "openaiHosted": "托管 OpenAI", + "onTrial": "体验", + "exhausted": "超出限额", + "desc": "托管 OpenAI 由 Dify 提供的托管 OpenAI 服务,你可以使用 GPT-3.5 等模型,在体验额度消耗完毕前你需要设置其它模型供应商。", + "callTimes": "调用次数", + "usedUp": "试用额度已用完,请在下方添加自己的模型供应商", + "useYourModel": "当前正在使用你自己的模型供应商。", + "close": "关闭" + }, + "anthropicHosted": { + "anthropicHosted": "Anthropic Claude", + "onTrial": "体验", + "exhausted": "超出限额", + "desc": "功能强大的模型,擅长执行从复杂对话和创意内容生成到详细指导的各种任务。", + "callTimes": "调用次数", + "usedUp": "试用额度已用完,请在下方添加自己的模型供应商", + "useYourModel": "当前正在使用你自己的模型供应商。", + "close": "关闭", + "trialQuotaTip": "您的 Anthropic 体验额度将于 2025/03/17 过期,过期后将无法使用,请尽快体验。" + }, + "anthropic": { + "using": "嵌入能力正在使用", + "enableTip": "要启用 Anthropic 模型,您需要先绑定 OpenAI 或 Azure OpenAI 服务。", + "notEnabled": "未启用", + "keyFrom": "从 Anthropic 获取您的 API 密钥" + }, + "encrypted": { + "front": "密钥将使用 ", + "back": " 技术进行加密和存储。" + } + }, + "modelProvider": { + "notConfigured": "系统模型尚未完全配置", + "systemModelSettings": "系统模型设置", + "systemModelSettingsLink": "为什么需要设置系统模型?", + "selectModel": "选择您的模型", + "setupModelFirst": "请先设置您的模型", + "systemReasoningModel": { + "key": "系统推理模型", + "tip": "设置创建应用使用的默认推理模型,以及对话名称生成、下一步问题建议等功能也会使用该默认推理模型。" + }, + "embeddingModel": { + "key": "Embedding 模型", + "tip": "设置知识库文档嵌入处理的默认模型,检索和导入知识库均使用该 Embedding 模型进行向量化处理,切换后将导致已导入的知识库与问题之间的向量维度不一致,从而导致检索失败。为避免检索失败,请勿随意切换该模型。", + "required": "请选择 Embedding 模型" + }, + "speechToTextModel": { + "key": "语音转文本模型", + "tip": "设置对话中语音转文字输入的默认使用模型。" + }, + "ttsModel": { + "key": "文本转语音模型", + "tip": "设置对话中文字转语音输出的默认使用模型。" + }, + "rerankModel": { + "key": "Rerank 模型", + "tip": "重排序模型将根据候选文档列表与用户问题语义匹配度进行重新排序,从而改进语义排序的结果" + }, + "quota": "额度", + "searchModel": "搜索模型", + "noModelFound": "找不到模型 {{model}}", + "models": "模型列表", + "showMoreModelProvider": "显示更多模型提供商", + "selector": { + "tip": "该模型已被删除。请添模型或选择其他模型。", + "emptyTip": "无可用模型", + "emptySetting": "请前往设置进行配置", + "rerankTip": "请设置 Rerank 模型" + }, + "card": { + "quota": "额度", + "onTrial": "试用中", + "paid": "已购买", + "quotaExhausted": "配额已用完", + "callTimes": "调用次数", + "tokens": "Tokens", + "buyQuota": "购买额度", + "priorityUse": "优先使用", + "removeKey": "删除 API 密钥", + "tip": "已付费额度将优先考虑。试用额度将在付费额度用完后使用。" + }, + "item": { + "deleteDesc": "{{modelName}} 被用作系统推理模型。删除后部分功能将无法使用。请确认。", + "freeQuota": "免费额度" + }, + "addApiKey": "添加您的 API 密钥", + "invalidApiKey": "Invalid API key", + "encrypted": { + "front": "您的密钥将使用", + "back": "技术进行加密和存储。" + }, + "freeQuota": { + "howToEarn": "如何获取" + }, + "addMoreModelProvider": "添加更多模型提供商", + "addModel": "添加模型", + "modelsNum": "{{num}} 个模型", + "showModels": "显示模型", + "showModelsNum": "显示 {{num}} 个模型", + "collapse": "收起", + "config": "配置", + "modelAndParameters": "模型及参数", + "model": "模型", + "featureSupported": "支持 {{feature}} 功能", + "callTimes": "调用次数", + "credits": "消息额度", + "buyQuota": "购买额度", + "getFreeTokens": "获得免费 Tokens", + "priorityUsing": "优先使用", + "deprecated": "已弃用", + "confirmDelete": "确认删除?", + "quotaTip": "剩余免费额度", + "loadPresets": "加载预设", + "parameters": "参数", + "loadBalancing": "负载均衡", + "loadBalancingDescription": "为模型配置多组凭据,并自动调用。", + "loadBalancingHeadline": "负载均衡", + "configLoadBalancing": "设置负载均衡", + "modelHasBeenDeprecated": "该模型已废弃", + "providerManaged": "由模型供应商管理", + "providerManagedDescription": "使用模型供应商提供的单组凭据", + "defaultConfig": "默认配置", + "apiKeyStatusNormal": "API Key 正常", + "apiKeyRateLimit": "已达频率上限,{{seconds}}秒后恢复", + "addConfig": "增加配置", + "editConfig": "修改配置", + "loadBalancingLeastKeyWarning": "至少启用 2 个 Key 以使用负载均衡", + "loadBalancingInfo": "默认情况下,负载均衡使用 Round-robin 策略。如果触发速率限制,将应用 1 分钟的冷却时间", + "upgradeForLoadBalancing": "升级以解锁负载均衡功能", + "apiKey": "API 密钥", + "toBeConfigured": "待配置", + "configureTip": "请配置 API 密钥,添加模型。", + "installProvider": "安装模型供应商", + "installDataSourceProvider": "安装数据源供应商", + "discoverMore": "发现更多就在", + "emptyProviderTitle": "尚未安装模型供应商", + "emptyProviderTip": "请安装模型供应商。", + "auth": { + "unAuthorized": "未授权", + "credentialRemoved": "凭据已移除", + "authRemoved": "授权已移除", + "apiKeys": "API 密钥", + "addApiKey": "添加 API 密钥", + "addModel": "添加模型", + "addNewModel": "添加新模型", + "addCredential": "添加凭据", + "addModelCredential": "添加模型凭据", + "editModelCredential": "编辑模型凭据", + "modelCredentials": "模型凭据", + "modelCredential": "模型凭据", + "configModel": "配置模型", + "configLoadBalancing": "配置负载均衡", + "authorizationError": "授权错误", + "specifyModelCredential": "指定模型凭据", + "specifyModelCredentialTip": "使用已配置的模型凭据。", + "providerManaged": "由模型供应商管理", + "providerManagedTip": "使用模型供应商提供的单组凭据。", + "apiKeyModal": { + "title": "API 密钥授权配置", + "desc": "配置凭据后,工作空间中的所有成员都可以在编排应用时使用此模型。", + "addModel": "添加模型" + }, + "manageCredentials": "管理凭据", + "customModelCredentials": "自定义模型凭据", + "addNewModelCredential": "添加模型新凭据", + "removeModel": "移除模型", + "selectModelCredential": "选择模型凭据", + "customModelCredentialsDeleteTip": "模型凭据正在使用中,无法删除" + }, + "parametersInvalidRemoved": "部分参数无效,已移除" + }, + "dataSource": { + "add": "添加数据源", + "connect": "绑定", + "configure": "配置", + "notion": { + "title": "Notion", + "description": "使用 Notion 作为知识库的数据源。", + "connectedWorkspace": "已绑定工作空间", + "addWorkspace": "添加工作空间", + "connected": "已绑定", + "disconnected": "未绑定", + "changeAuthorizedPages": "更改授权页面", + "pagesAuthorized": "已授权页面", + "sync": "同步", + "remove": "删除", + "selector": { + "pageSelected": "已选页面", + "searchPages": "搜索页面...", + "noSearchResult": "无搜索结果", + "addPages": "添加页面", + "preview": "预览" + }, + "integratedAlert": "Notion通过内部凭证集成,无需重新授权。" + }, + "website": { + "title": "网站", + "description": "使用网络爬虫从网站导入内容。", + "with": "使用", + "configuredCrawlers": "已配置的爬虫", + "active": "可用", + "inactive": "不可用" + } + }, + "plugin": { + "serpapi": { + "apiKey": "API Key", + "apiKeyPlaceholder": "输入你的 API 密钥", + "keyFrom": "从 SerpAPI 帐户页面获取您的 SerpAPI 密钥" + } + }, + "apiBasedExtension": { + "title": "API 扩展提供了一个集中式的 API 管理,在此统一添加 API 配置后,方便在 Dify 上的各类应用中直接使用。", + "link": "了解如何开发您自己的 API 扩展。", + "add": "新增 API 扩展", + "selector": { + "title": "API 扩展", + "placeholder": "请选择 API 扩展", + "manage": "管理 API 扩展" + }, + "modal": { + "title": "新增 API 扩展", + "editTitle": "编辑 API 扩展", + "name": { + "title": "名称", + "placeholder": "请输入名称" + }, + "apiEndpoint": { + "title": "API Endpoint", + "placeholder": "请输入 API endpoint" + }, + "apiKey": { + "title": "API-key", + "placeholder": "请输入 API-key", + "lengthError": "API-key 不能少于 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": "个关联应用", + "noRelatedApp": "无关联应用", + "pipeline": "流水线" + }, + "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": "召回得分:" + }, + "inputPlaceholder": "和 {{botName}} 聊天", + "thinking": "深度思考中...", + "thought": "已深度思考", + "resend": "重新发送" + }, + "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": "Prompt 中已存在" + }, + "imageUploader": { + "uploadFromComputer": "从本地上传", + "uploadFromComputerReadError": "图片读取失败,请重新选择。", + "uploadFromComputerUploadError": "图片上传失败,请重新上传。", + "uploadFromComputerLimit": "上传图片不能超过 {{size}} MB", + "pasteImageLink": "粘贴图片链接", + "pasteImageLinkInputPlaceholder": "将图像链接粘贴到此处", + "pasteImageLinkInvalid": "图片链接无效", + "imageUpload": "图片上传" + }, + "fileUploader": { + "uploadFromComputer": "从本地上传", + "pasteFileLink": "粘贴文件链接", + "pasteFileLinkInputPlaceholder": "输入文件链接", + "uploadFromComputerReadError": "文件读取失败,请重新选择。", + "uploadFromComputerUploadError": "文件上传失败,请重新上传。", + "uploadFromComputerLimit": "上传 {{type}} 不能超过 {{size}}", + "pasteFileLinkInvalid": "文件链接无效", + "fileExtensionNotSupport": "文件类型不支持", + "fileExtensionBlocked": "出于安全考虑,该文件类型已被禁止上传", + "uploadDisabled": "文件上传已被禁用" + }, + "tag": { + "placeholder": "全部标签", + "addNew": "创建新标签", + "noTag": "没有标签", + "noTagYet": "还没有标签", + "addTag": "添加标签", + "editTag": "修改标签", + "manageTags": "管理标签", + "selectorPlaceholder": "搜索或者创建", + "create": "创建", + "delete": "删除标签", + "deleteTip": "标签正在使用中,是否删除?", + "created": "标签创建成功", + "failed": "标签创建失败" + }, + "license": { + "expiring": "许可证还有 1 天到期", + "expiring_plural": "许可证还有 {{count}} 天到期", + "unlimited": "无限制" + }, + "pagination": { + "perPage": "每页显示" + }, + "avatar": { + "deleteTitle": "删除头像", + "deleteDescription": "确定要删除你的个人头像吗?你的账号将使用默认的首字母头像。" + }, + "imageInput": { + "dropImageHere": "将图片拖放到此处,或", + "browse": "浏览", + "supportedFormats": "支持 PNG、JPG、JPEG、WEBP 和 GIF 格式" + }, + "you": "你", + "feedback": { + "content": "反馈内容", + "subtitle": "请告诉我们这次回应出错的原因。", + "title": "提供反馈", + "placeholder": "请描述发生了什么问题或我们可以如何改进..." + }, + "dynamicSelect": { + "error": "加载选项失败", + "noData": "没有可用的选项", + "loading": "加载选项...", + "selected": "已选择 {{count}} 项" + } +} diff --git a/web/i18n/zh-Hans/common.ts b/web/i18n/zh-Hans/common.ts deleted file mode 100644 index 977ffe1919..0000000000 --- a/web/i18n/zh-Hans/common.ts +++ /dev/null @@ -1,798 +0,0 @@ -const translation = { - loading: '加载中', - error: '错误', - theme: { - theme: '主题', - light: '浅色', - dark: '深色', - auto: '自动', - }, - api: { - success: '成功', - actionSuccess: '操作成功', - saved: '已保存', - create: '已创建', - remove: '已移除', - actionFailed: '操作失败', - }, - operation: { - create: '创建', - confirm: '确认', - cancel: '取消', - clear: '清空', - save: '保存', - yes: '是', - no: '否', - deleteConfirmTitle: '删除?', - confirmAction: '请确认您的操作。', - saveAndEnable: '保存并启用', - edit: '编辑', - add: '添加', - added: '已添加', - refresh: '重新开始', - reset: '重置', - search: '搜索', - noSearchResults: '没有找到{{content}}', - resetKeywords: '重置关键词', - selectCount: '已选择 {{count}} 项', - searchCount: '找到 {{count}} 个 {{content}}', - noSearchCount: '0 个 {{content}}', - change: '更改', - remove: '移除', - send: '发送', - copy: '复制', - copied: ' 已复制', - lineBreak: '换行', - sure: '我确定', - download: '下载', - downloadSuccess: '下载完毕', - downloadFailed: '下载失败,请稍后重试。', - viewDetails: '查看详情', - delete: '删除', - deleteApp: '删除应用', - settings: '设置', - setup: '设置', - config: '配置', - getForFree: '免费获取', - reload: '刷新', - ok: '好的', - log: '日志', - learnMore: '了解更多', - params: '参数设置', - duplicate: '复制', - rename: '重命名', - audioSourceUnavailable: '音源不可用', - copyImage: '复制图片', - imageCopied: '图片已复制', - zoomOut: '缩小', - zoomIn: '放大', - openInNewTab: '在新标签页打开', - in: '在', - saveAndRegenerate: '保存并重新生成子分段', - close: '关闭', - view: '查看', - viewMore: '查看更多', - regenerate: '重新生成', - submit: '提交', - skip: '跳过', - format: '格式化', - more: '更多', - selectAll: '全选', - deSelectAll: '取消全选', - now: '现在', - back: '返回', - imageDownloaded: '图片已下载', - }, - errorMsg: { - fieldRequired: '{{field}} 为必填项', - urlError: 'url 应该以 http:// 或 https:// 开头', - }, - placeholder: { - input: '请输入', - select: '请选择', - search: '搜索...', - }, - noData: '暂无数据', - label: { - optional: '(可选)', - }, - voice: { - language: { - zhHans: '中文', - zhHant: '繁体中文', - enUS: '英语', - deDE: '德语', - frFR: '法语', - esES: '西班牙语', - itIT: '意大利语', - thTH: '泰语', - idID: '印尼语', - jaJP: '日语', - koKR: '韩语', - ptBR: '葡萄牙语', - ruRU: '俄语', - ukUA: '乌克兰语', - viVN: '越南语', - plPL: '波兰语', - roRO: '罗马尼亚语', - hiIN: '印地语', - trTR: '土耳其语', - faIR: '波斯语', - slSI: '斯洛文尼亚语', - arTN: '突尼斯阿拉伯语', - }, - }, - unit: { - char: '个字符', - }, - actionMsg: { - noModification: '暂无修改', - modifiedSuccessfully: '修改成功', - modifiedUnsuccessfully: '修改失败', - copySuccessfully: '复制成功', - generatedSuccessfully: '已重新生成', - generatedUnsuccessfully: '生成失败', - paySucceeded: '已支付成功', - payCancelled: '已取消支付', - }, - model: { - params: { - temperature: '随机性 temperature', - temperatureTip: - '控制回复的随机性。\n值越大,回复越随机。\n值越小,回复越确定或一致。', - top_p: '核采样 top_p', - top_pTip: - '控制生成多样性。\n值越大,输出会包括更多的单词选项。\n值越小,模型会更集中在高概率的单词上,输出更确定但可能缺乏多样性。\n核采样和随机性不建议同时修改。', - presence_penalty: '话题新鲜度 presence_penalty', - presence_penaltyTip: - '控制生成时对上文已存在的话题的偏好程度。\n值越大,越可能使用到新的话题。', - frequency_penalty: '频率惩罚度 frequency_penalty', - frequency_penaltyTip: - '影响常见与罕见词汇使用。\n值较大时,倾向于生成不常见的词汇和表达方式。\n值越小,更倾向于使用常见和普遍接受的词汇或短语。', - max_tokens: '单次回复限制 max_tokens', - max_tokensTip: - '用于限制回复的最大长度,以 token 为单位。\n较大的值可能会限制给提示词、聊天记录和知识库留出的空间。\n建议将其设置在三分之二以下。\ngpt-4-1106-preview、gpt-4-vision-preview 最大长度 (输入 128k,输出 4k)', - maxTokenSettingTip: '您设置的最大 tokens 数较大,可能会导致 prompt、用户问题、知识库内容没有 token 空间进行处理,建议设置到 2/3 以下。', - setToCurrentModelMaxTokenTip: '最大令牌数更新为当前模型最大的令牌数 {{maxToken}} 的 80%。', - stop_sequences: '停止序列 stop_sequences', - stop_sequencesTip: '最多四个序列,API 将停止生成更多的 token。返回的文本将不包含停止序列。', - stop_sequencesPlaceholder: '输入序列并按 Tab 键', - }, - tone: { - Creative: '创意', - Balanced: '平衡', - Precise: '精确', - Custom: '自定义', - }, - addMoreModel: '添加更多模型', - settingsLink: '模型设置', - capabilities: '多模态能力', - }, - menus: { - status: 'beta', - explore: '探索', - apps: '工作室', - appDetail: '应用详情', - account: '账户', - plugins: '插件', - exploreMarketplace: '探索 Marketplace', - pluginsTips: '集成第三方插件或创建与 ChatGPT 兼容的 AI 插件。', - datasets: '知识库', - datasetsTips: '即将到来:上传自己的长文本数据,或通过 Webhook 集成自己的数据源', - newApp: '创建应用', - newDataset: '创建知识库', - tools: '工具', - }, - userProfile: { - settings: '设置', - emailSupport: '邮件支持', - workspace: '工作空间', - createWorkspace: '创建工作空间', - helpCenter: '查看帮助文档', - support: '支持', - compliance: '合规', - forum: '论坛', - roadmap: '路线图', - github: 'GitHub', - community: '社区', - about: '关于', - logout: '登出', - contactUs: '联系我们', - }, - compliance: { - soc2Type1: 'SOC 2 Type I Report', - soc2Type2: 'SOC 2 Type II Report', - iso27001: 'ISO 27001:2022 Certification', - gdpr: 'GDPR DPA', - sandboxUpgradeTooltip: '仅适用于 Professional 或 Team 版计划。', - professionalUpgradeTooltip: '仅适用于 Team 版计划或以上。', - }, - settings: { - accountGroup: '通用', - workplaceGroup: '工作空间', - generalGroup: '通用', - account: '我的账户', - members: '成员', - billing: '账单', - integrations: '集成', - language: '语言', - provider: '模型供应商', - dataSource: '数据来源', - plugin: '插件', - apiBasedExtension: 'API 扩展', - }, - account: { - account: '账户', - myAccount: '我的账户', - studio: '工作室', - avatar: '头像', - name: '用户名', - email: '邮箱', - password: '密码', - passwordTip: '如果您不想使用验证码登录,可以设置永久密码', - setPassword: '设置密码', - resetPassword: '重置密码', - currentPassword: '原密码', - newPassword: '新密码', - notEqual: '两个密码不相同', - confirmPassword: '确认密码', - langGeniusAccount: '账号关联数据', - langGeniusAccountTip: '您的账号相关的用户数据。', - editName: '编辑名字', - showAppLength: '显示 {{length}} 个应用', - delete: '删除账户', - deleteTip: '请注意,一旦确认,作为任何空间的所有者,您的空间将被安排进入永久删除队列,您的所有用户数据也将被排入永久删除队列。', - deletePrivacyLinkTip: '有关我们如何处理您的数据的更多信息,请参阅我们的', - deletePrivacyLink: '隐私政策', - deleteSuccessTip: '删除账户需要一些时间。完成后,我们会通过邮件通知您。', - deleteLabel: '请输入您的邮箱以确认', - deletePlaceholder: '输入您的邮箱...', - sendVerificationButton: '发送验证码', - verificationLabel: '验证码', - verificationPlaceholder: '输入 6 位数字验证码', - permanentlyDeleteButton: '永久删除', - feedbackTitle: '反馈', - feedbackLabel: '请告诉我们您为什么删除账户?', - feedbackPlaceholder: '选填', - editWorkspaceInfo: '编辑工作空间信息', - workspaceName: '工作空间名称', - workspaceNamePlaceholder: '输入工作空间名称', - workspaceIcon: '工作空间图标', - changeEmail: { - title: '更改邮箱', - verifyEmail: '验证当前邮箱', - newEmail: '设置新邮箱', - verifyNew: '验证新邮箱', - authTip: '一旦您的电子邮件地址更改,链接到您旧电子邮件地址的 Google 或 GitHub 帐户将无法再登录该帐户。', - content1: '如果您继续,我们将向 {{email}} 发送验证码以进行重新验证。', - content2: '你的当前邮箱是 {{email}} 。验证码已发送至该邮箱。', - content3: '输入新的邮箱,我们将向您发送验证码。', - content4: '我们已将验证码发送至 {{email}}。', - codeLabel: '验证码', - codePlaceholder: '输入 6 位数字验证码', - emailLabel: '新邮箱', - emailPlaceholder: '输入新邮箱', - existingEmail: '该邮箱已存在', - unAvailableEmail: '该邮箱暂时无法使用。', - sendVerifyCode: '发送验证码', - continue: '继续', - changeTo: '更改为 {{email}}', - resendTip: '没有收到验证码?', - resendCount: '请在 {{count}} 秒后重新发送', - resend: '重新发送', - }, - }, - members: { - team: '团队', - invite: '添加', - name: '姓名', - lastActive: '上次活动时间', - role: '角色', - pending: '待定...', - owner: '所有者', - admin: '管理员', - adminTip: '能够建立应用程序和管理团队设置', - normal: '成员', - normalTip: '只能使用应用程序,不能建立应用程序', - editor: '编辑', - editorTip: '能够建立并编辑应用程序,不能管理团队设置', - datasetOperator: '知识库管理员', - datasetOperatorTip: '只能管理知识库', - inviteTeamMember: '添加团队成员', - inviteTeamMemberTip: '对方在登录后可以访问你的团队数据。', - emailNotSetup: '由于邮件服务器未设置,无法发送邀请邮件。请将邀请后生成的邀请链接通知用户。', - email: '邮箱', - emailInvalid: '邮箱格式无效', - emailPlaceholder: '输入邮箱', - sendInvite: '发送邀请', - invitedAsRole: '邀请为{{role}}用户', - invitationSent: '邀请已发送', - invitationSentTip: '邀请已发送,对方登录 Dify 后即可访问你的团队数据。', - invitationLink: '邀请链接', - failedInvitationEmails: '邀请以下邮箱失败', - ok: '好的', - removeFromTeam: '移出团队', - removeFromTeamTip: '将取消团队访问', - setAdmin: '设为管理员', - setMember: '设为普通成员', - setEditor: '设为编辑', - disInvite: '取消邀请', - deleteMember: '删除成员', - you: '(你)', - builderTip: '可以构建和编辑自己的应用程序', - setBuilder: 'Set as builder(设置为构建器)', - builder: '构建器', - transferOwnership: '转移所有权', - transferModal: { - title: '转移工作空间所有权', - warning: '您即将转移 “{{workspace}}”的所有权。该操作将立即生效,且无法撤销。', - warningTip: '您将成为管理员成员,新所有者将拥有完全控制权。', - sendTip: '如果您继续,我们将向 {{email}} 发送验证码以进行身份认证。', - verifyEmail: '验证您当前的邮箱', - verifyContent: '您当前的邮箱是 {{email}}。', - verifyContent2: '我们将向该邮箱发送临时验证码以完成身份验证。', - codeLabel: '验证码', - codePlaceholder: '输入 6 位数字验证码', - resendTip: '没有收到验证码?', - resendCount: '请在 {{count}} 秒后重新发送', - resend: '重新发送', - transferLabel: '新所有者', - transferPlaceholder: '选择一个成员', - sendVerifyCode: '发送验证码', - continue: '继续', - transfer: '转移工作空间所有权', - }, - }, - integrations: { - connected: '登录方式', - google: 'Google', - googleAccount: 'Google 账号登录', - github: 'GitHub', - githubAccount: 'GitHub 账号登录', - connect: '绑定', - }, - language: { - displayLanguage: '界面语言', - timezone: '时区', - }, - provider: { - apiKey: 'API 密钥', - enterYourKey: '输入你的 API 密钥', - invalidKey: '无效的 OpenAI API 密钥', - validatedError: '校验失败:', - validating: '验证密钥中...', - saveFailed: 'API 密钥保存失败', - apiKeyExceedBill: '此 API KEY 已没有可用配额,请阅读', - addKey: '添加 密钥', - comingSoon: '即将推出', - editKey: '编辑', - invalidApiKey: '无效的 API 密钥', - azure: { - apiBase: 'API Base', - apiBasePlaceholder: '输入您的 Azure OpenAI API Base 地址', - apiKey: 'API Key', - apiKeyPlaceholder: '输入你的 API 密钥', - helpTip: '了解 Azure OpenAI Service', - }, - openaiHosted: { - openaiHosted: '托管 OpenAI', - onTrial: '体验', - exhausted: '超出限额', - desc: '托管 OpenAI 由 Dify 提供的托管 OpenAI 服务,你可以使用 GPT-3.5 等模型,在体验额度消耗完毕前你需要设置其它模型供应商。', - callTimes: '调用次数', - usedUp: '试用额度已用完,请在下方添加自己的模型供应商', - useYourModel: '当前正在使用你自己的模型供应商。', - close: '关闭', - }, - anthropicHosted: { - anthropicHosted: 'Anthropic Claude', - onTrial: '体验', - exhausted: '超出限额', - desc: '功能强大的模型,擅长执行从复杂对话和创意内容生成到详细指导的各种任务。', - callTimes: '调用次数', - usedUp: '试用额度已用完,请在下方添加自己的模型供应商', - useYourModel: '当前正在使用你自己的模型供应商。', - close: '关闭', - trialQuotaTip: '您的 Anthropic 体验额度将于 2025/03/17 过期,过期后将无法使用,请尽快体验。', - }, - anthropic: { - using: '嵌入能力正在使用', - enableTip: '要启用 Anthropic 模型,您需要先绑定 OpenAI 或 Azure OpenAI 服务。', - notEnabled: '未启用', - keyFrom: '从 Anthropic 获取您的 API 密钥', - }, - encrypted: { - front: '密钥将使用 ', - back: ' 技术进行加密和存储。', - }, - }, - modelProvider: { - notConfigured: '系统模型尚未完全配置', - systemModelSettings: '系统模型设置', - systemModelSettingsLink: '为什么需要设置系统模型?', - selectModel: '选择您的模型', - setupModelFirst: '请先设置您的模型', - systemReasoningModel: { - key: '系统推理模型', - tip: '设置创建应用使用的默认推理模型,以及对话名称生成、下一步问题建议等功能也会使用该默认推理模型。', - }, - embeddingModel: { - key: 'Embedding 模型', - tip: '设置知识库文档嵌入处理的默认模型,检索和导入知识库均使用该 Embedding 模型进行向量化处理,切换后将导致已导入的知识库与问题之间的向量维度不一致,从而导致检索失败。为避免检索失败,请勿随意切换该模型。', - required: '请选择 Embedding 模型', - }, - speechToTextModel: { - key: '语音转文本模型', - tip: '设置对话中语音转文字输入的默认使用模型。', - }, - ttsModel: { - key: '文本转语音模型', - tip: '设置对话中文字转语音输出的默认使用模型。', - }, - rerankModel: { - key: 'Rerank 模型', - tip: '重排序模型将根据候选文档列表与用户问题语义匹配度进行重新排序,从而改进语义排序的结果', - }, - quota: '额度', - searchModel: '搜索模型', - noModelFound: '找不到模型 {{model}}', - models: '模型列表', - showMoreModelProvider: '显示更多模型提供商', - selector: { - tip: '该模型已被删除。请添模型或选择其他模型。', - emptyTip: '无可用模型', - emptySetting: '请前往设置进行配置', - rerankTip: '请设置 Rerank 模型', - }, - card: { - quota: '额度', - onTrial: '试用中', - paid: '已购买', - quotaExhausted: '配额已用完', - callTimes: '调用次数', - tokens: 'Tokens', - buyQuota: '购买额度', - priorityUse: '优先使用', - removeKey: '删除 API 密钥', - tip: '已付费额度将优先考虑。试用额度将在付费额度用完后使用。', - }, - item: { - deleteDesc: '{{modelName}} 被用作系统推理模型。删除后部分功能将无法使用。请确认。', - freeQuota: '免费额度', - }, - addApiKey: '添加您的 API 密钥', - invalidApiKey: 'Invalid API key', - encrypted: { - front: '您的密钥将使用', - back: '技术进行加密和存储。', - }, - freeQuota: { - howToEarn: '如何获取', - }, - addMoreModelProvider: '添加更多模型提供商', - addModel: '添加模型', - modelsNum: '{{num}} 个模型', - showModels: '显示模型', - showModelsNum: '显示 {{num}} 个模型', - collapse: '收起', - config: '配置', - modelAndParameters: '模型及参数', - model: '模型', - featureSupported: '支持 {{feature}} 功能', - callTimes: '调用次数', - credits: '消息额度', - buyQuota: '购买额度', - getFreeTokens: '获得免费 Tokens', - priorityUsing: '优先使用', - deprecated: '已弃用', - confirmDelete: '确认删除?', - quotaTip: '剩余免费额度', - loadPresets: '加载预设', - parameters: '参数', - loadBalancing: '负载均衡', - loadBalancingDescription: '为模型配置多组凭据,并自动调用。', - loadBalancingHeadline: '负载均衡', - configLoadBalancing: '设置负载均衡', - modelHasBeenDeprecated: '该模型已废弃', - providerManaged: '由模型供应商管理', - providerManagedDescription: '使用模型供应商提供的单组凭据', - defaultConfig: '默认配置', - apiKeyStatusNormal: 'API Key 正常', - apiKeyRateLimit: '已达频率上限,{{seconds}}秒后恢复', - addConfig: '增加配置', - editConfig: '修改配置', - loadBalancingLeastKeyWarning: '至少启用 2 个 Key 以使用负载均衡', - loadBalancingInfo: '默认情况下,负载均衡使用 Round-robin 策略。如果触发速率限制,将应用 1 分钟的冷却时间', - upgradeForLoadBalancing: '升级以解锁负载均衡功能', - apiKey: 'API 密钥', - toBeConfigured: '待配置', - configureTip: '请配置 API 密钥,添加模型。', - installProvider: '安装模型供应商', - installDataSourceProvider: '安装数据源供应商', - discoverMore: '发现更多就在', - emptyProviderTitle: '尚未安装模型供应商', - emptyProviderTip: '请安装模型供应商。', - auth: { - unAuthorized: '未授权', - credentialRemoved: '凭据已移除', - authRemoved: '授权已移除', - apiKeys: 'API 密钥', - addApiKey: '添加 API 密钥', - addModel: '添加模型', - addNewModel: '添加新模型', - addCredential: '添加凭据', - addModelCredential: '添加模型凭据', - editModelCredential: '编辑模型凭据', - modelCredentials: '模型凭据', - modelCredential: '模型凭据', - configModel: '配置模型', - configLoadBalancing: '配置负载均衡', - authorizationError: '授权错误', - specifyModelCredential: '指定模型凭据', - specifyModelCredentialTip: '使用已配置的模型凭据。', - providerManaged: '由模型供应商管理', - providerManagedTip: '使用模型供应商提供的单组凭据。', - apiKeyModal: { - title: 'API 密钥授权配置', - desc: '配置凭据后,工作空间中的所有成员都可以在编排应用时使用此模型。', - addModel: '添加模型', - }, - manageCredentials: '管理凭据', - customModelCredentials: '自定义模型凭据', - addNewModelCredential: '添加模型新凭据', - removeModel: '移除模型', - selectModelCredential: '选择模型凭据', - customModelCredentialsDeleteTip: '模型凭据正在使用中,无法删除', - }, - parametersInvalidRemoved: '部分参数无效,已移除', - }, - dataSource: { - add: '添加数据源', - connect: '绑定', - configure: '配置', - notion: { - title: 'Notion', - description: '使用 Notion 作为知识库的数据源。', - connectedWorkspace: '已绑定工作空间', - addWorkspace: '添加工作空间', - connected: '已绑定', - disconnected: '未绑定', - changeAuthorizedPages: '更改授权页面', - pagesAuthorized: '已授权页面', - sync: '同步', - remove: '删除', - selector: { - pageSelected: '已选页面', - searchPages: '搜索页面...', - noSearchResult: '无搜索结果', - addPages: '添加页面', - preview: '预览', - }, - integratedAlert: 'Notion通过内部凭证集成,无需重新授权。', - }, - website: { - title: '网站', - description: '使用网络爬虫从网站导入内容。', - with: '使用', - configuredCrawlers: '已配置的爬虫', - active: '可用', - inactive: '不可用', - }, - }, - plugin: { - serpapi: { - apiKey: 'API Key', - apiKeyPlaceholder: '输入你的 API 密钥', - keyFrom: '从 SerpAPI 帐户页面获取您的 SerpAPI 密钥', - }, - }, - apiBasedExtension: { - title: 'API 扩展提供了一个集中式的 API 管理,在此统一添加 API 配置后,方便在 Dify 上的各类应用中直接使用。', - link: '了解如何开发您自己的 API 扩展。', - add: '新增 API 扩展', - selector: { - title: 'API 扩展', - placeholder: '请选择 API 扩展', - manage: '管理 API 扩展', - }, - modal: { - title: '新增 API 扩展', - editTitle: '编辑 API 扩展', - name: { - title: '名称', - placeholder: '请输入名称', - }, - apiEndpoint: { - title: 'API Endpoint', - placeholder: '请输入 API endpoint', - }, - apiKey: { - title: 'API-key', - placeholder: '请输入 API-key', - lengthError: 'API-key 不能少于 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: '个关联应用', - noRelatedApp: '无关联应用', - pipeline: '流水线', - }, - 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: '召回得分:', - }, - inputPlaceholder: '和 {{botName}} 聊天', - thinking: '深度思考中...', - thought: '已深度思考', - resend: '重新发送', - }, - 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: 'Prompt 中已存在', - }, - imageUploader: { - uploadFromComputer: '从本地上传', - uploadFromComputerReadError: '图片读取失败,请重新选择。', - uploadFromComputerUploadError: '图片上传失败,请重新上传。', - uploadFromComputerLimit: '上传图片不能超过 {{size}} MB', - pasteImageLink: '粘贴图片链接', - pasteImageLinkInputPlaceholder: '将图像链接粘贴到此处', - pasteImageLinkInvalid: '图片链接无效', - imageUpload: '图片上传', - }, - fileUploader: { - uploadFromComputer: '从本地上传', - pasteFileLink: '粘贴文件链接', - pasteFileLinkInputPlaceholder: '输入文件链接', - uploadFromComputerReadError: '文件读取失败,请重新选择。', - uploadFromComputerUploadError: '文件上传失败,请重新上传。', - uploadFromComputerLimit: '上传 {{type}} 不能超过 {{size}}', - pasteFileLinkInvalid: '文件链接无效', - fileExtensionNotSupport: '文件类型不支持', - fileExtensionBlocked: '出于安全考虑,该文件类型已被禁止上传', - uploadDisabled: '文件上传已被禁用', - }, - tag: { - placeholder: '全部标签', - addNew: '创建新标签', - noTag: '没有标签', - noTagYet: '还没有标签', - addTag: '添加标签', - editTag: '修改标签', - manageTags: '管理标签', - selectorPlaceholder: '搜索或者创建', - create: '创建', - delete: '删除标签', - deleteTip: '标签正在使用中,是否删除?', - created: '标签创建成功', - failed: '标签创建失败', - }, - license: { - expiring: '许可证还有 1 天到期', - expiring_plural: '许可证还有 {{count}} 天到期', - unlimited: '无限制', - }, - pagination: { - perPage: '每页显示', - }, - avatar: { - deleteTitle: '删除头像', - deleteDescription: '确定要删除你的个人头像吗?你的账号将使用默认的首字母头像。', - }, - imageInput: { - dropImageHere: '将图片拖放到此处,或', - browse: '浏览', - supportedFormats: '支持 PNG、JPG、JPEG、WEBP 和 GIF 格式', - }, - you: '你', - feedback: { - content: '反馈内容', - subtitle: '请告诉我们这次回应出错的原因。', - title: '提供反馈', - placeholder: '请描述发生了什么问题或我们可以如何改进...', - }, - dynamicSelect: { - error: '加载选项失败', - noData: '没有可用的选项', - loading: '加载选项...', - selected: '已选择 {{count}} 项', - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/custom.json b/web/i18n/zh-Hans/custom.json new file mode 100644 index 0000000000..d4a50afa02 --- /dev/null +++ b/web/i18n/zh-Hans/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "定制", + "upgradeTip": { + "title": "升级您的计划", + "des": "升级您的计划来定制您的品牌。", + "prefix": "升级您的计划以", + "suffix": "定制您的品牌。" + }, + "webapp": { + "title": "定制 web app 品牌", + "removeBrand": "移除 Powered by Dify", + "changeLogo": "更改 Powered by Brand 图片", + "changeLogoTip": "SVG 或 PNG 格式,最小尺寸为 40x40px" + }, + "app": { + "title": "定制应用品牌", + "changeLogoTip": "SVG 或 PNG 格式,最小尺寸为 80x80px" + }, + "upload": "上传", + "uploading": "上传中", + "uploadedFail": "图片上传失败,请重新上传。", + "change": "更改", + "apply": "应用", + "restore": "恢复默认", + "customize": { + "contactUs": "联系我们", + "prefix": "如需在 Dify 内自定义品牌图标,请", + "suffix": "升级至企业版。" + } +} diff --git a/web/i18n/zh-Hans/custom.ts b/web/i18n/zh-Hans/custom.ts deleted file mode 100644 index d388c285ff..0000000000 --- a/web/i18n/zh-Hans/custom.ts +++ /dev/null @@ -1,32 +0,0 @@ -const translation = { - custom: '定制', - upgradeTip: { - title: '升级您的计划', - des: '升级您的计划来定制您的品牌。', - prefix: '升级您的计划以', - suffix: '定制您的品牌。', - }, - webapp: { - title: '定制 web app 品牌', - removeBrand: '移除 Powered by Dify', - changeLogo: '更改 Powered by Brand 图片', - changeLogoTip: 'SVG 或 PNG 格式,最小尺寸为 40x40px', - }, - app: { - title: '定制应用品牌', - changeLogoTip: 'SVG 或 PNG 格式,最小尺寸为 80x80px', - }, - upload: '上传', - uploading: '上传中', - uploadedFail: '图片上传失败,请重新上传。', - change: '更改', - apply: '应用', - restore: '恢复默认', - customize: { - contactUs: '联系我们', - prefix: '如需在 Dify 内自定义品牌图标,请', - suffix: '升级至企业版。', - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/dataset-creation.json b/web/i18n/zh-Hans/dataset-creation.json new file mode 100644 index 0000000000..0bfe3b6d92 --- /dev/null +++ b/web/i18n/zh-Hans/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "知识库" + }, + "one": "选择数据源", + "two": "文本分段与清洗", + "three": "处理并完成" + }, + "error": { + "unavailable": "该知识库不可用" + }, + "firecrawl": { + "configFirecrawl": "配置 🔥Firecrawl", + "apiKeyPlaceholder": "从 firecrawl.dev 获取 API Key", + "getApiKeyLinkText": "从 firecrawl.dev 获取您的 API Key" + }, + "watercrawl": { + "configWatercrawl": "配置 Watercrawl", + "apiKeyPlaceholder": "从 watercrawl.dev 获取 API Key", + "getApiKeyLinkText": "从 watercrawl.dev 获取您的 API Key" + }, + "jinaReader": { + "configJinaReader": "配置 Jina Reader", + "apiKeyPlaceholder": "从 jina.ai 获取 API Key", + "getApiKeyLinkText": "从 jina.ai 获取您的免费 API Key" + }, + "stepOne": { + "filePreview": "文件预览", + "pagePreview": "页面预览", + "dataSourceType": { + "file": "导入已有文本", + "notion": "同步自 Notion 内容", + "web": "同步自 Web 站点" + }, + "uploader": { + "title": "上传文本文件", + "button": "拖拽文件或文件夹至此,或者", + "buttonSingleFile": "拖拽文件至此,或者", + "browse": "选择文件", + "tip": "已支持 {{supportTypes}},每批最多 {{batchCount}} 个文件,每个文件不超过 {{size}} MB ,总数不超过 {{totalCount}} 个文件。", + "validation": { + "typeError": "文件类型不支持", + "size": "文件太大了,不能超过 {{size}}MB", + "count": "暂不支持多个文件", + "filesNumber": "批量上传限制 {{filesNumber}}。" + }, + "cancel": "取消", + "change": "更改文件", + "failed": "上传失败" + }, + "notionSyncTitle": "Notion 未绑定", + "notionSyncTip": "同步 Notion 内容前,须先绑定 Notion 空间", + "connect": "去绑定", + "cancel": "取消", + "button": "下一步", + "emptyDatasetCreation": "创建一个空知识库", + "modal": { + "title": "创建空知识库", + "tip": "空知识库中还没有文档,你可以在今后任何时候上传文档至该知识库。", + "input": "知识库名称", + "placeholder": "请输入知识库名称", + "nameNotEmpty": "名称不能为空", + "nameLengthInvalid": "名称长度不能超过 40 个字符", + "cancelButton": "取消", + "confirmButton": "创建", + "failed": "创建失败" + }, + "website": { + "chooseProvider": "选择工具", + "fireCrawlNotConfigured": "Firecrawl 未配置", + "fireCrawlNotConfiguredDescription": "请配置 Firecrawl 的 API 密钥以使用它。", + "jinaReaderNotConfigured": "Jina Reader 未配置", + "jinaReaderNotConfiguredDescription": "请配置 Jina Reader 的免费 API 密钥以访问它。", + "waterCrawlNotConfigured": "Watercrawl 未配置", + "waterCrawlNotConfiguredDescription": "请配置 Watercrawl 的 API 密钥以使用它。", + "configure": "配置", + "configureFirecrawl": "配置 Firecrawl", + "configureJinaReader": "配置 Jina Reader", + "run": "运行", + "running": "运行中", + "firecrawlTitle": "使用 🔥Firecrawl 提取网页内容", + "firecrawlDoc": "Firecrawl 文档", + "jinaReaderTitle": "将整个站点内容转换为 Markdown 格式", + "jinaReaderDoc": "了解更多关于 Jina Reader", + "jinaReaderDocLink": "https://jina.ai/reader", + "useSitemap": "使用 sitemap", + "useSitemapTooltip": "根据 sitemap 爬取站点。否则,Jina Reader 将基于页面相关性迭代爬取,抓取较少的页面,但质量更高。", + "options": "选项", + "crawlSubPage": "爬取子页面", + "limit": "限制数量", + "maxDepth": "最大深度", + "excludePaths": "排除路径", + "includeOnlyPaths": "仅包含路径", + "extractOnlyMainContent": "仅提取主要内容(无标题、导航、页脚等)", + "exceptionErrorTitle": "运行时发生异常:", + "unknownError": "未知错误", + "totalPageScraped": "抓取页面总数:", + "selectAll": "全选", + "resetAll": "重置全部", + "scrapTimeInfo": "总共在 {{time}}秒 内抓取了 {{total}} 个页面", + "preview": "预览", + "maxDepthTooltip": "相对于输入 URL 的最大抓取深度。深度 0 仅抓取输入 URL 本身的页面,深度 1 抓取输入 URL 及其后的一层目录(一个 /),依此类推。", + "watercrawlDoc": "Watercrawl 文档", + "configureWatercrawl": "配置水爬行", + "watercrawlTitle": "使用 Watercrawl 提取网页内容" + } + }, + "stepTwo": { + "segmentation": "分段设置", + "auto": "自动分段与清洗", + "autoDescription": "自动设置分段规则与预处理规则,如果不了解这些参数建议选择此项", + "custom": "自定义", + "customDescription": "自定义分段规则、分段长度以及预处理规则等参数", + "general": "通用", + "generalTip": "通用文本分块模式,检索和召回的块是相同的", + "parentChild": "父子分段", + "parentChildTip": "使用父子模式时,子块用于检索,父块用作上下文", + "parentChunkForContext": "父块用作上下文", + "childChunkForRetrieval": "子块用于检索", + "paragraph": "段落", + "paragraphTip": "此模式根据分隔符和最大块长度将文本拆分为段落,使用拆分文本作为检索的父块", + "fullDoc": "全文", + "fullDocTip": "整个文档用作父块并直接检索。请注意,出于性能原因,超过 10000 个标记的文本将被自动截断。", + "qaTip": "使用 Q&A 模式时,块将被拆分为问题和答案对。检索时将使用问题部分进行检索,答案部分将作为上下文返回。", + "separator": "分段标识符", + "separatorTip": "分隔符是用于分隔文本的字符。\\n\\n 和 \\n 是常用于分隔段落和行的分隔符。用逗号连接分隔符(\\n\\n,\\n),当段落超过最大块长度时,会按行进行分割。你也可以使用自定义的特殊分隔符(例如 ***)。", + "separatorPlaceholder": "\\n\\n 用于分段;\\n 用于分行", + "maxLength": "分段最大长度", + "maxLengthCheck": "分段最大长度不能大于 {{limit}}", + "overlap": "分段重叠长度", + "overlapTip": "设置分段之间的重叠长度可以保留分段之间的语义关系,提升召回效果。建议设置为最大分段长度的 10%-25%", + "overlapCheck": "分段重叠长度不能大于分段最大长度", + "rules": "文本预处理规则", + "removeExtraSpaces": "替换掉连续的空格、换行符和制表符", + "removeUrlEmails": "删除所有 URL 和电子邮件地址", + "removeStopwords": "去除停用词,例如“a”,“an”,“the”等", + "preview": "预览", + "previewChunk": "预览块", + "reset": "重置", + "indexMode": "索引方式", + "qualified": "高质量", + "highQualityTip": "使用高质量模式进行嵌入后,无法切换回经济模式。", + "recommend": "推荐", + "qualifiedTip": "调用嵌入模型处理文档以实现更精确的检索,可以帮助 LLM 生成高质量的答案。", + "warning": "请先完成模型供应商的 API KEY 设置。.", + "click": "前往设置", + "economical": "经济", + "economicalTip": "每个数据块使用 10 个关键词进行检索,不会消耗任何 tokens,但会以降低检索准确性为代价。", + "QATitle": "采用 Q&A 分段模式", + "QATip": "开启后将会消耗额外的 token", + "QALanguage": "分段使用", + "useQALanguage": "使用 Q&A 分段,语言", + "estimateCost": "执行嵌入预估消耗", + "estimateSegment": "预估分段数", + "segmentCount": "段", + "calculating": "计算中...", + "fileSource": "预处理文档", + "notionSource": "预处理页面", + "websiteSource": "预处理页面", + "other": "和其他 ", + "fileUnit": " 个文件", + "notionUnit": " 个页面", + "webpageUnit": " 个页面", + "previousStep": "上一步", + "nextStep": "保存并处理", + "save": "保存并处理", + "cancel": "取消", + "sideTipTitle": "为什么要分段和预处理?", + "sideTipP1": "在处理文本数据时,分段和清洗是两个重要的预处理步骤。", + "sideTipP2": "分段的目的是将长文本拆分成较小的段落,以便模型更有效地处理和理解。这有助于提高模型生成的结果的质量和相关性。", + "sideTipP3": "清洗则是对文本进行预处理,删除不必要的字符、符号或格式,使知识库更加干净、整洁,便于模型解析。", + "sideTipP4": "通过对知识库进行适当的分段和清洗,可以提高模型在实际应用中的表现,从而为用户提供更准确、更有价值的结果。", + "previewTitle": "分段预览", + "previewTitleButton": "预览", + "previewButton": "切换至 Q&A 形式", + "previewSwitchTipStart": "当前分段预览是文本模式,切换到 Q&A 模式将会", + "previewSwitchTipEnd": "消耗额外的 token", + "characters": "字符", + "indexSettingTip": "要更改索引方法和 embedding 模型,请转到", + "retrievalSettingTip": "要更改检索方法,请转到", + "datasetSettingLink": "知识库设置。", + "previewChunkTip": "点击左侧的“预览块”按钮来加载预览", + "previewChunkCount": "{{count}} 预估块", + "switch": "切换", + "qaSwitchHighQualityTipTitle": "Q&A 格式需要高质量的索引方法", + "qaSwitchHighQualityTipContent": "目前,只有高质量的索引方法支持 Q&A 格式分块。您要切换到高质量模式吗?", + "notAvailableForParentChild": "不支持父子索引", + "notAvailableForQA": "不支持 Q&A 索引", + "parentChildDelimiterTip": "文本分隔符是用于分隔文本的字符。建议用 \n\n 将原始文档划分为较大的父级片段。您也可以自定义特殊分隔符。", + "parentChildChunkDelimiterTip": "文本分隔符是用于分隔文本的字符。建议使用 \n 将父级片段拆分为较小的子级片段。您也可以自定义特殊分隔符。" + }, + "stepThree": { + "creationTitle": "🎉 知识库已创建", + "creationContent": "我们自动为该知识库起了个名称,您也可以随时修改", + "label": "知识库名称", + "additionTitle": "🎉 文档已上传", + "additionP1": "文档已上传至知识库:", + "additionP2": ",你可以在知识库的文档列表中找到它。", + "stop": "停止处理", + "resume": "恢复处理", + "navTo": "前往文档", + "sideTipTitle": "接下来做什么", + "sideTipContent": "当文档完成索引后,您可以管理和编辑文档、运行检索测试以及修改知识库设置。知识库即可集成到应用程序内作为上下文使用,因此请调整检索设置以确保最佳性能。", + "modelTitle": "确认停止索引过程吗?", + "modelContent": "如果您需要稍后恢复处理,则从停止处继续。", + "modelButtonConfirm": "确认停止", + "modelButtonCancel": "取消" + }, + "otherDataSource": { + "title": "连接到其他数据源?", + "description": "目前,Dify 的知识库只有有限的数据源。向 Dify 知识库贡献数据源是帮助所有用户增强平台灵活性和强大功能的绝佳方式。我们的贡献指南使入门变得容易。请点击下面的链接了解更多信息。", + "learnMore": "了解更多信息" + } +} diff --git a/web/i18n/zh-Hans/dataset-creation.ts b/web/i18n/zh-Hans/dataset-creation.ts deleted file mode 100644 index f780269914..0000000000 --- a/web/i18n/zh-Hans/dataset-creation.ts +++ /dev/null @@ -1,217 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: '知识库', - }, - one: '选择数据源', - two: '文本分段与清洗', - three: '处理并完成', - }, - error: { - unavailable: '该知识库不可用', - }, - firecrawl: { - configFirecrawl: '配置 🔥Firecrawl', - apiKeyPlaceholder: '从 firecrawl.dev 获取 API Key', - getApiKeyLinkText: '从 firecrawl.dev 获取您的 API Key', - }, - watercrawl: { - configWatercrawl: '配置 Watercrawl', - apiKeyPlaceholder: '从 watercrawl.dev 获取 API Key', - getApiKeyLinkText: '从 watercrawl.dev 获取您的 API Key', - }, - jinaReader: { - configJinaReader: '配置 Jina Reader', - apiKeyPlaceholder: '从 jina.ai 获取 API Key', - getApiKeyLinkText: '从 jina.ai 获取您的免费 API Key', - }, - stepOne: { - filePreview: '文件预览', - pagePreview: '页面预览', - dataSourceType: { - file: '导入已有文本', - notion: '同步自 Notion 内容', - web: '同步自 Web 站点', - }, - uploader: { - title: '上传文本文件', - button: '拖拽文件或文件夹至此,或者', - buttonSingleFile: '拖拽文件至此,或者', - browse: '选择文件', - tip: '已支持 {{supportTypes}},每批最多 {{batchCount}} 个文件,每个文件不超过 {{size}} MB ,总数不超过 {{totalCount}} 个文件。', - validation: { - typeError: '文件类型不支持', - size: '文件太大了,不能超过 {{size}}MB', - count: '暂不支持多个文件', - filesNumber: '批量上传限制 {{filesNumber}}。', - }, - cancel: '取消', - change: '更改文件', - failed: '上传失败', - }, - notionSyncTitle: 'Notion 未绑定', - notionSyncTip: '同步 Notion 内容前,须先绑定 Notion 空间', - connect: '去绑定', - cancel: '取消', - button: '下一步', - emptyDatasetCreation: '创建一个空知识库', - modal: { - title: '创建空知识库', - tip: '空知识库中还没有文档,你可以在今后任何时候上传文档至该知识库。', - input: '知识库名称', - placeholder: '请输入知识库名称', - nameNotEmpty: '名称不能为空', - nameLengthInvalid: '名称长度不能超过 40 个字符', - cancelButton: '取消', - confirmButton: '创建', - failed: '创建失败', - }, - website: { - chooseProvider: '选择工具', - fireCrawlNotConfigured: 'Firecrawl 未配置', - fireCrawlNotConfiguredDescription: '请配置 Firecrawl 的 API 密钥以使用它。', - jinaReaderNotConfigured: 'Jina Reader 未配置', - jinaReaderNotConfiguredDescription: '请配置 Jina Reader 的免费 API 密钥以访问它。', - waterCrawlNotConfigured: 'Watercrawl 未配置', - waterCrawlNotConfiguredDescription: '请配置 Watercrawl 的 API 密钥以使用它。', - configure: '配置', - configureFirecrawl: '配置 Firecrawl', - configureJinaReader: '配置 Jina Reader', - run: '运行', - running: '运行中', - firecrawlTitle: '使用 🔥Firecrawl 提取网页内容', - firecrawlDoc: 'Firecrawl 文档', - jinaReaderTitle: '将整个站点内容转换为 Markdown 格式', - jinaReaderDoc: '了解更多关于 Jina Reader', - jinaReaderDocLink: 'https://jina.ai/reader', - useSitemap: '使用 sitemap', - useSitemapTooltip: '根据 sitemap 爬取站点。否则,Jina Reader 将基于页面相关性迭代爬取,抓取较少的页面,但质量更高。', - options: '选项', - crawlSubPage: '爬取子页面', - limit: '限制数量', - maxDepth: '最大深度', - excludePaths: '排除路径', - includeOnlyPaths: '仅包含路径', - extractOnlyMainContent: '仅提取主要内容(无标题、导航、页脚等)', - exceptionErrorTitle: '运行时发生异常:', - unknownError: '未知错误', - totalPageScraped: '抓取页面总数:', - selectAll: '全选', - resetAll: '重置全部', - scrapTimeInfo: '总共在 {{time}}秒 内抓取了 {{total}} 个页面', - preview: '预览', - maxDepthTooltip: '相对于输入 URL 的最大抓取深度。深度 0 仅抓取输入 URL 本身的页面,深度 1 抓取输入 URL 及其后的一层目录(一个 /),依此类推。', - watercrawlDoc: 'Watercrawl 文档', - configureWatercrawl: '配置水爬行', - watercrawlTitle: '使用 Watercrawl 提取网页内容', - }, - }, - stepTwo: { - segmentation: '分段设置', - auto: '自动分段与清洗', - autoDescription: '自动设置分段规则与预处理规则,如果不了解这些参数建议选择此项', - custom: '自定义', - customDescription: '自定义分段规则、分段长度以及预处理规则等参数', - general: '通用', - generalTip: '通用文本分块模式,检索和召回的块是相同的', - parentChild: '父子分段', - parentChildTip: '使用父子模式时,子块用于检索,父块用作上下文', - parentChunkForContext: '父块用作上下文', - childChunkForRetrieval: '子块用于检索', - paragraph: '段落', - paragraphTip: '此模式根据分隔符和最大块长度将文本拆分为段落,使用拆分文本作为检索的父块', - fullDoc: '全文', - fullDocTip: '整个文档用作父块并直接检索。请注意,出于性能原因,超过 10000 个标记的文本将被自动截断。', - qaTip: '使用 Q&A 模式时,块将被拆分为问题和答案对。检索时将使用问题部分进行检索,答案部分将作为上下文返回。', - separator: '分段标识符', - separatorTip: '分隔符是用于分隔文本的字符。\\n\\n 和 \\n 是常用于分隔段落和行的分隔符。用逗号连接分隔符(\\n\\n,\\n),当段落超过最大块长度时,会按行进行分割。你也可以使用自定义的特殊分隔符(例如 ***)。', - separatorPlaceholder: '\\n\\n 用于分段;\\n 用于分行', - maxLength: '分段最大长度', - maxLengthCheck: '分段最大长度不能大于 {{limit}}', - overlap: '分段重叠长度', - overlapTip: '设置分段之间的重叠长度可以保留分段之间的语义关系,提升召回效果。建议设置为最大分段长度的 10%-25%', - overlapCheck: '分段重叠长度不能大于分段最大长度', - rules: '文本预处理规则', - removeExtraSpaces: '替换掉连续的空格、换行符和制表符', - removeUrlEmails: '删除所有 URL 和电子邮件地址', - removeStopwords: '去除停用词,例如“a”,“an”,“the”等', - preview: '预览', - previewChunk: '预览块', - reset: '重置', - indexMode: '索引方式', - qualified: '高质量', - highQualityTip: '使用高质量模式进行嵌入后,无法切换回经济模式。', - recommend: '推荐', - qualifiedTip: '调用嵌入模型处理文档以实现更精确的检索,可以帮助 LLM 生成高质量的答案。', - warning: '请先完成模型供应商的 API KEY 设置。.', - click: '前往设置', - economical: '经济', - economicalTip: '每个数据块使用 10 个关键词进行检索,不会消耗任何 tokens,但会以降低检索准确性为代价。', - QATitle: '采用 Q&A 分段模式', - QATip: '开启后将会消耗额外的 token', - QALanguage: '分段使用', - useQALanguage: '使用 Q&A 分段,语言', - estimateCost: '执行嵌入预估消耗', - estimateSegment: '预估分段数', - segmentCount: '段', - calculating: '计算中...', - fileSource: '预处理文档', - notionSource: '预处理页面', - websiteSource: '预处理页面', - other: '和其他 ', - fileUnit: ' 个文件', - notionUnit: ' 个页面', - webpageUnit: ' 个页面', - previousStep: '上一步', - nextStep: '保存并处理', - save: '保存并处理', - cancel: '取消', - sideTipTitle: '为什么要分段和预处理?', - sideTipP1: '在处理文本数据时,分段和清洗是两个重要的预处理步骤。', - sideTipP2: '分段的目的是将长文本拆分成较小的段落,以便模型更有效地处理和理解。这有助于提高模型生成的结果的质量和相关性。', - sideTipP3: '清洗则是对文本进行预处理,删除不必要的字符、符号或格式,使知识库更加干净、整洁,便于模型解析。', - sideTipP4: '通过对知识库进行适当的分段和清洗,可以提高模型在实际应用中的表现,从而为用户提供更准确、更有价值的结果。', - previewTitle: '分段预览', - previewTitleButton: '预览', - previewButton: '切换至 Q&A 形式', - previewSwitchTipStart: '当前分段预览是文本模式,切换到 Q&A 模式将会', - previewSwitchTipEnd: '消耗额外的 token', - characters: '字符', - indexSettingTip: '要更改索引方法和 embedding 模型,请转到', - retrievalSettingTip: '要更改检索方法,请转到', - datasetSettingLink: '知识库设置。', - previewChunkTip: '点击左侧的“预览块”按钮来加载预览', - previewChunkCount: '{{count}} 预估块', - switch: '切换', - qaSwitchHighQualityTipTitle: 'Q&A 格式需要高质量的索引方法', - qaSwitchHighQualityTipContent: '目前,只有高质量的索引方法支持 Q&A 格式分块。您要切换到高质量模式吗?', - notAvailableForParentChild: '不支持父子索引', - notAvailableForQA: '不支持 Q&A 索引', - parentChildDelimiterTip: '文本分隔符是用于分隔文本的字符。建议用 \n\n 将原始文档划分为较大的父级片段。您也可以自定义特殊分隔符。', - parentChildChunkDelimiterTip: '文本分隔符是用于分隔文本的字符。建议使用 \n 将父级片段拆分为较小的子级片段。您也可以自定义特殊分隔符。', - }, - stepThree: { - creationTitle: '🎉 知识库已创建', - creationContent: '我们自动为该知识库起了个名称,您也可以随时修改', - label: '知识库名称', - additionTitle: '🎉 文档已上传', - additionP1: '文档已上传至知识库:', - additionP2: ',你可以在知识库的文档列表中找到它。', - stop: '停止处理', - resume: '恢复处理', - navTo: '前往文档', - sideTipTitle: '接下来做什么', - sideTipContent: '当文档完成索引后,您可以管理和编辑文档、运行检索测试以及修改知识库设置。知识库即可集成到应用程序内作为上下文使用,因此请调整检索设置以确保最佳性能。', - modelTitle: '确认停止索引过程吗?', - modelContent: '如果您需要稍后恢复处理,则从停止处继续。', - modelButtonConfirm: '确认停止', - modelButtonCancel: '取消', - }, - otherDataSource: { - title: '连接到其他数据源?', - description: '目前,Dify 的知识库只有有限的数据源。向 Dify 知识库贡献数据源是帮助所有用户增强平台灵活性和强大功能的绝佳方式。我们的贡献指南使入门变得容易。请点击下面的链接了解更多信息。', - learnMore: '了解更多信息', - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/dataset-documents.json b/web/i18n/zh-Hans/dataset-documents.json new file mode 100644 index 0000000000..dec912fd71 --- /dev/null +++ b/web/i18n/zh-Hans/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "文档", + "desc": "知识库的所有文件都在这里显示,整个知识库都可以链接到 Dify 引用或通过 Chat 插件进行索引。", + "learnMore": "了解更多", + "addFile": "添加文件", + "addPages": "添加页面", + "addUrl": "添加 URL", + "table": { + "header": { + "fileName": "名称", + "chunkingMode": "分段模式", + "words": "字符数", + "hitCount": "召回次数", + "uploadTime": "上传时间", + "status": "状态", + "action": "操作" + }, + "rename": "重命名", + "name": "名称" + }, + "action": { + "uploadFile": "上传新文件", + "settings": "分段设置", + "addButton": "添加分段", + "add": "添加新分段", + "batchAdd": "批量添加", + "archive": "归档", + "unarchive": "撤销归档", + "delete": "删除", + "enableWarning": "归档的文件无法启用", + "sync": "同步", + "pause": "暂停", + "resume": "恢复" + }, + "index": { + "enable": "启用中", + "disable": "禁用中", + "all": "全部", + "enableTip": "该文件可以被索引", + "disableTip": "该文件无法被索引" + }, + "sort": { + "uploadTime": "上传时间", + "hitCount": "召回次数" + }, + "status": { + "queuing": "排队中", + "indexing": "索引中", + "paused": "已暂停", + "error": "错误", + "available": "可用", + "enabled": "已启用", + "disabled": "已禁用", + "archived": "已归档" + }, + "empty": { + "title": "还没有文档", + "upload": { + "tip": "您可以上传文件,从网站同步,或者从网络应用程序(如概念、GitHub 等)同步。" + }, + "sync": { + "tip": "Dify 会定期从您的 Notion 中下载文件并完成处理。" + } + }, + "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": "YYYY-MM-DD HH:mm", + "docTypeSelectTitle": "请选择一种文档类型", + "docTypeChangeTitle": "更换文档类型", + "docTypeSelectWarning": "如果更改文档类型,将不再保留现在填充的元数据", + "firstMetaAction": "开始", + "placeholder": { + "add": "输入", + "select": "选择" + }, + "source": { + "upload_file": "文件上传", + "notion": "从 Notion 同步的文档", + "github": "从 Github 同步的代码", + "local_file": "本地文件", + "website_crawl": "网站爬取", + "online_document": "在线文档" + }, + "type": { + "book": "书籍", + "webPage": "网页", + "paper": "论文", + "socialMediaPost": "社交媒体帖子", + "personalDocument": "个人文档", + "businessDocument": "商务文档", + "IMChat": "IM 聊天记录", + "wikipediaEntry": "维基百科条目", + "notion": "从 Notion 同步的文档", + "github": "从 Github 同步的代码", + "technicalParameters": "技术参数" + }, + "field": { + "processRule": { + "processDoc": "预处理文档", + "segmentRule": "分段规则", + "segmentLength": "分段长度", + "processClean": "文本预处理与清洗" + }, + "book": { + "title": "标题", + "language": "语言", + "author": "作者", + "publisher": "出版商", + "publicationDate": "出版日期", + "ISBN": "ISBN", + "category": "类别" + }, + "webPage": { + "title": "标题", + "url": "网址", + "language": "语言", + "authorPublisher": "作者/出版商", + "publishDate": "发布日期", + "topicKeywords": "主题/关键词", + "description": "描述" + }, + "paper": { + "title": "标题", + "language": "语言", + "author": "作者", + "publishDate": "发布日期", + "journalConferenceName": "期刊/会议名称", + "volumeIssuePage": "卷/期/页码", + "DOI": "DOI", + "topicsKeywords": "主题/关键词", + "abstract": "摘要" + }, + "socialMediaPost": { + "platform": "平台", + "authorUsername": "作者/用户名", + "publishDate": "发布日期", + "postURL": "帖子网址", + "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": "网页网址", + "editorContributor": "编辑/贡献者", + "lastEditDate": "最后编辑日期", + "summaryIntroduction": "摘要/介绍" + }, + "notion": { + "title": "标题", + "language": "语言", + "author": "作者", + "createdTime": "创建时间", + "lastModifiedTime": "最后修改时间", + "url": "网址", + "tag": "标签", + "description": "描述" + }, + "github": { + "repoName": "仓库名", + "repoDesc": "仓库描述", + "repoOwner": "仓库所有者", + "fileName": "文件名", + "filePath": "文件路径", + "programmingLang": "编程语言", + "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": { + "waiting": "嵌入等待中...", + "processing": "嵌入处理中...", + "paused": "嵌入已停止", + "completed": "嵌入已完成", + "error": "嵌入发生错误", + "docName": "预处理文档", + "mode": "分段模式", + "segmentLength": "最大分段长度", + "textCleaning": "文本预处理规则", + "segments": "段落", + "highQuality": "高质量模式", + "economy": "经济模式", + "estimate": "预估消耗", + "stop": "停止处理", + "pause": "暂停", + "resume": "恢复", + "automatic": "自动", + "custom": "自定义", + "hierarchical": "父子分段", + "previewTip": "段落预览将在嵌入完成后可用", + "parentMaxTokens": "父", + "childMaxTokens": "子" + }, + "segment": { + "paragraphs": "段落", + "chunks_one": "分段", + "chunks_other": "分段", + "parentChunks_one": "父分段", + "parentChunks_other": "父分段", + "childChunks_one": "子分段", + "childChunks_other": "子分段", + "searchResults_zero": "搜索结果", + "searchResults_one": "搜索结果", + "searchResults_other": "搜索结果", + "empty": "未找到分段", + "clearFilter": "清空搜索条件", + "chunk": "分段", + "parentChunk": "父分段", + "newChunk": "新分段", + "childChunk": "子分段", + "newChildChunk": "新子分段", + "keywords": "关键词", + "addKeyWord": "添加关键词", + "keywordError": "关键词最大长度为 20", + "characters_one": "字符", + "characters_other": "字符", + "hitCount": "召回次数", + "vectorHash": "向量哈希:", + "questionPlaceholder": "在这里添加问题", + "questionEmpty": "问题不能为空", + "answerPlaceholder": "在这里添加答案", + "answerEmpty": "答案不能为空", + "contentPlaceholder": "在这里添加内容", + "contentEmpty": "内容不能为空", + "allFilesUploaded": "所有文件必须上传完成才能保存", + "newTextSegment": "新文本分段", + "newQaSegment": "新问答分段", + "addChunk": "新增分段", + "addChildChunk": "新增子分段", + "addAnother": "连续新增", + "delete": "删除这个分段?", + "chunkAdded": "新增一个分段", + "childChunkAdded": "新增一个子分段", + "editChunk": "编辑分段", + "editParentChunk": "编辑父分段", + "editChildChunk": "编辑子分段", + "chunkDetail": "分段详情", + "regenerationConfirmTitle": "是否需要重新生成子分段?", + "regenerationConfirmMessage": "重新生成的子分段将会覆盖当前的子分段,包括编辑过的分段和新添加的分段。重新生成操作无法撤销。", + "regeneratingTitle": "正在生成子分段", + "regeneratingMessage": "生成子分段需要一些时间,请耐心等待...", + "regenerationSuccessTitle": "子分段已重新生成", + "regenerationSuccessMessage": "可以关闭窗口", + "edited": "已编辑", + "editedAt": "编辑于", + "dateTimeFormat": "YYYY/MM/DD HH:mm", + "expandChunks": "展开分段", + "collapseChunks": "折叠分段", + "keywordEmpty": "关键词不能为空", + "keywordDuplicate": "关键词已经存在" + } +} diff --git a/web/i18n/zh-Hans/dataset-documents.ts b/web/i18n/zh-Hans/dataset-documents.ts deleted file mode 100644 index 90ea4b0936..0000000000 --- a/web/i18n/zh-Hans/dataset-documents.ts +++ /dev/null @@ -1,407 +0,0 @@ -const translation = { - list: { - title: '文档', - desc: '知识库的所有文件都在这里显示,整个知识库都可以链接到 Dify 引用或通过 Chat 插件进行索引。', - learnMore: '了解更多', - addFile: '添加文件', - addPages: '添加页面', - addUrl: '添加 URL', - table: { - header: { - fileName: '名称', - chunkingMode: '分段模式', - words: '字符数', - hitCount: '召回次数', - uploadTime: '上传时间', - status: '状态', - action: '操作', - }, - rename: '重命名', - name: '名称', - }, - action: { - uploadFile: '上传新文件', - settings: '分段设置', - addButton: '添加分段', - add: '添加新分段', - batchAdd: '批量添加', - archive: '归档', - unarchive: '撤销归档', - delete: '删除', - enableWarning: '归档的文件无法启用', - sync: '同步', - pause: '暂停', - resume: '恢复', - }, - index: { - enable: '启用中', - disable: '禁用中', - all: '全部', - enableTip: '该文件可以被索引', - disableTip: '该文件无法被索引', - }, - sort: { - uploadTime: '上传时间', - hitCount: '召回次数', - }, - status: { - queuing: '排队中', - indexing: '索引中', - paused: '已暂停', - error: '错误', - available: '可用', - enabled: '已启用', - disabled: '已禁用', - archived: '已归档', - }, - empty: { - title: '还没有文档', - upload: { - tip: '您可以上传文件,从网站同步,或者从网络应用程序(如概念、GitHub 等)同步。', - }, - sync: { - tip: 'Dify 会定期从您的 Notion 中下载文件并完成处理。', - }, - }, - 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: 'YYYY-MM-DD HH:mm', - docTypeSelectTitle: '请选择一种文档类型', - docTypeChangeTitle: '更换文档类型', - docTypeSelectWarning: '如果更改文档类型,将不再保留现在填充的元数据', - firstMetaAction: '开始', - placeholder: { - add: '输入', - select: '选择', - }, - source: { - upload_file: '文件上传', - notion: '从 Notion 同步的文档', - github: '从 Github 同步的代码', - local_file: '本地文件', - website_crawl: '网站爬取', - online_document: '在线文档', - }, - type: { - book: '书籍', - webPage: '网页', - paper: '论文', - socialMediaPost: '社交媒体帖子', - personalDocument: '个人文档', - businessDocument: '商务文档', - IMChat: 'IM 聊天记录', - wikipediaEntry: '维基百科条目', - notion: '从 Notion 同步的文档', - github: '从 Github 同步的代码', - technicalParameters: '技术参数', - }, - field: { - processRule: { - processDoc: '预处理文档', - segmentRule: '分段规则', - segmentLength: '分段长度', - processClean: '文本预处理与清洗', - }, - book: { - title: '标题', - language: '语言', - author: '作者', - publisher: '出版商', - publicationDate: '出版日期', - ISBN: 'ISBN', - category: '类别', - }, - webPage: { - title: '标题', - url: '网址', - language: '语言', - authorPublisher: '作者/出版商', - publishDate: '发布日期', - topicKeywords: '主题/关键词', - description: '描述', - }, - paper: { - title: '标题', - language: '语言', - author: '作者', - publishDate: '发布日期', - journalConferenceName: '期刊/会议名称', - volumeIssuePage: '卷/期/页码', - DOI: 'DOI', - topicsKeywords: '主题/关键词', - abstract: '摘要', - }, - socialMediaPost: { - platform: '平台', - authorUsername: '作者/用户名', - publishDate: '发布日期', - postURL: '帖子网址', - 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: '网页网址', - editorContributor: '编辑/贡献者', - lastEditDate: '最后编辑日期', - summaryIntroduction: '摘要/介绍', - }, - notion: { - title: '标题', - language: '语言', - author: '作者', - createdTime: '创建时间', - lastModifiedTime: '最后修改时间', - url: '网址', - tag: '标签', - description: '描述', - }, - github: { - repoName: '仓库名', - repoDesc: '仓库描述', - repoOwner: '仓库所有者', - fileName: '文件名', - filePath: '文件路径', - programmingLang: '编程语言', - 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: { - waiting: '嵌入等待中...', - processing: '嵌入处理中...', - paused: '嵌入已停止', - completed: '嵌入已完成', - error: '嵌入发生错误', - docName: '预处理文档', - mode: '分段模式', - segmentLength: '最大分段长度', - textCleaning: '文本预处理规则', - segments: '段落', - highQuality: '高质量模式', - economy: '经济模式', - estimate: '预估消耗', - stop: '停止处理', - pause: '暂停', - resume: '恢复', - automatic: '自动', - custom: '自定义', - hierarchical: '父子分段', - previewTip: '段落预览将在嵌入完成后可用', - parentMaxTokens: '父', - childMaxTokens: '子', - }, - segment: { - paragraphs: '段落', - chunks_one: '分段', - chunks_other: '分段', - parentChunks_one: '父分段', - parentChunks_other: '父分段', - childChunks_one: '子分段', - childChunks_other: '子分段', - searchResults_zero: '搜索结果', - searchResults_one: '搜索结果', - searchResults_other: '搜索结果', - empty: '未找到分段', - clearFilter: '清空搜索条件', - chunk: '分段', - parentChunk: '父分段', - newChunk: '新分段', - childChunk: '子分段', - newChildChunk: '新子分段', - keywords: '关键词', - addKeyWord: '添加关键词', - keywordError: '关键词最大长度为 20', - characters_one: '字符', - characters_other: '字符', - hitCount: '召回次数', - vectorHash: '向量哈希:', - questionPlaceholder: '在这里添加问题', - questionEmpty: '问题不能为空', - answerPlaceholder: '在这里添加答案', - answerEmpty: '答案不能为空', - contentPlaceholder: '在这里添加内容', - contentEmpty: '内容不能为空', - allFilesUploaded: '所有文件必须上传完成才能保存', - newTextSegment: '新文本分段', - newQaSegment: '新问答分段', - addChunk: '新增分段', - addChildChunk: '新增子分段', - addAnother: '连续新增', - delete: '删除这个分段?', - chunkAdded: '新增一个分段', - childChunkAdded: '新增一个子分段', - editChunk: '编辑分段', - editParentChunk: '编辑父分段', - editChildChunk: '编辑子分段', - chunkDetail: '分段详情', - regenerationConfirmTitle: '是否需要重新生成子分段?', - regenerationConfirmMessage: '重新生成的子分段将会覆盖当前的子分段,包括编辑过的分段和新添加的分段。重新生成操作无法撤销。', - regeneratingTitle: '正在生成子分段', - regeneratingMessage: '生成子分段需要一些时间,请耐心等待...', - regenerationSuccessTitle: '子分段已重新生成', - regenerationSuccessMessage: '可以关闭窗口', - edited: '已编辑', - editedAt: '编辑于', - dateTimeFormat: 'YYYY/MM/DD HH:mm', - expandChunks: '展开分段', - collapseChunks: '折叠分段', - keywordEmpty: '关键词不能为空', - keywordDuplicate: '关键词已经存在', - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/dataset-hit-testing.json b/web/i18n/zh-Hans/dataset-hit-testing.json new file mode 100644 index 0000000000..fdab3f12c0 --- /dev/null +++ b/web/i18n/zh-Hans/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "召回测试", + "settingTitle": "召回设置", + "desc": "根据给定的查询文本测试知识的召回效果。", + "dateTimeFormat": "YYYY-MM-DD HH:mm", + "records": "记录", + "table": { + "header": { + "source": "数据源", + "queryContent": "查询内容", + "time": "时间" + } + }, + "input": { + "title": "源文本", + "placeholder": "请输入文本,建议使用简短的陈述句。", + "countWarning": "不超过 200 个字符", + "indexWarning": "仅支持高质量模式知识库", + "testing": "测试" + }, + "hit": { + "title": "{{num}} 个召回段落", + "emptyTip": "召回测试结果将展示在这里" + }, + "noRecentTip": "最近无查询结果", + "viewChart": "查看向量图表", + "viewDetail": "查看详情", + "chunkDetail": "段落详情", + "hitChunks": "命中 {{num}} 个子段落", + "open": "打开", + "keyword": "关键词", + "imageUploader": { + "tip": "上传或拖拽图片 (最多 {{batchCount}} 个,每个大小不超过 {{size}}MB)", + "tooltip": "上传图片 (最多 {{batchCount}} 个,每个大小不超过 {{size}}MB)", + "dropZoneTip": "拖拽文件到这里上传", + "singleChunkAttachmentLimitTooltip": "单个分段附件数量不能超过 {{limit}}" + } +} diff --git a/web/i18n/zh-Hans/dataset-hit-testing.ts b/web/i18n/zh-Hans/dataset-hit-testing.ts deleted file mode 100644 index d5217520e1..0000000000 --- a/web/i18n/zh-Hans/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - title: '召回测试', - settingTitle: '召回设置', - desc: '根据给定的查询文本测试知识的召回效果。', - dateTimeFormat: 'YYYY-MM-DD HH:mm', - records: '记录', - table: { - header: { - source: '数据源', - queryContent: '查询内容', - time: '时间', - }, - }, - input: { - title: '源文本', - placeholder: '请输入文本,建议使用简短的陈述句。', - countWarning: '不超过 200 个字符', - indexWarning: '仅支持高质量模式知识库', - testing: '测试', - }, - hit: { - title: '{{num}} 个召回段落', - emptyTip: '召回测试结果将展示在这里', - }, - noRecentTip: '最近无查询结果', - viewChart: '查看向量图表', - viewDetail: '查看详情', - chunkDetail: '段落详情', - hitChunks: '命中 {{num}} 个子段落', - open: '打开', - keyword: '关键词', - imageUploader: { - tip: '上传或拖拽图片 (最多 {{batchCount}} 个,每个大小不超过 {{size}}MB)', - tooltip: '上传图片 (最多 {{batchCount}} 个,每个大小不超过 {{size}}MB)', - dropZoneTip: '拖拽文件到这里上传', - singleChunkAttachmentLimitTooltip: '单个分段附件数量不能超过 {{limit}}', - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/dataset-pipeline.json b/web/i18n/zh-Hans/dataset-pipeline.json new file mode 100644 index 0000000000..7d92b60c21 --- /dev/null +++ b/web/i18n/zh-Hans/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "backToKnowledge": "返回知识库", + "createFromScratch": { + "title": "空白知识流水线", + "description": "从零开始创建一个自定义知识流水线,对数据处理和结构拥有完全控制权。" + }, + "importDSL": "从 DSL 文件导入", + "createKnowledge": "创建知识流水线", + "errorTip": "创建知识流水线失败", + "successTip": "成功创建知识流水线", + "caution": "注意" + }, + "templates": { + "customized": "自定义" + }, + "operations": { + "choose": "选择", + "details": "详情", + "editInfo": "编辑信息", + "useTemplate": "使用此知识流水线", + "backToDataSource": "返回数据源", + "process": "处理", + "dataSource": "数据源", + "saveAndProcess": "保存并处理", + "preview": "预览", + "exportPipeline": "导出知识流水线", + "convert": "转换" + }, + "knowledgeNameAndIcon": "知识库名称和图标", + "knowledgeNameAndIconPlaceholder": "请输入知识库名称", + "knowledgeDescription": "知识库描述", + "knowledgeDescriptionPlaceholder": "描述知识库中的内容。详细的描述可以让 AI 更准确地访问数据集的内容。如果为空,Dify 将使用默认的命中策略。(可选)", + "knowledgePermissions": "权限", + "editPipelineInfo": "编辑知识流水线信息", + "pipelineNameAndIcon": "知识流水线名称和图标", + "deletePipeline": { + "title": "要删除此知识流水线模板吗?", + "content": "删除知识流水线模板是不可逆的。" + }, + "publishPipeline": { + "success": { + "message": "知识流水线发布成功", + "tip": "前往文档添加或管理文档。" + }, + "error": { + "message": "知识流水线发布失败" + } + }, + "publishTemplate": { + "success": { + "message": "知识流水线模板发布成功", + "tip": "您可以在创建页使用该模板。", + "learnMore": "了解更多" + }, + "error": { + "message": "知识流水线模板发布失败" + } + }, + "exportDSL": { + "successTip": "成功导出知识流水线 DSL", + "errorTip": "导出知识流水线 DSL 失败" + }, + "details": { + "createdBy": "由 {{author}} 创建", + "structure": "文档结构", + "structureTooltip": "文档结构决定了文档的拆分和索引方式,Dify 提供了通用、父子和问答模式,每个知识库的文档结构是唯一的。" + }, + "testRun": { + "title": "测试运行", + "tooltip": "在测试运行模式下,每次只能导入一个文档,以便于调试和观察。", + "steps": { + "dataSource": "数据源", + "documentProcessing": "文档处理" + }, + "dataSource": { + "localFiles": "本地文件" + }, + "notion": { + "title": "选择 Notion 页面", + "docTitle": "Notion 文档" + } + }, + "inputField": "输入字段", + "inputFieldPanel": { + "title": "用户输入字段", + "description": "用户输入字段用于定义和收集知识流水线执行过程中所需的变量,用户可以自定义字段类型,并灵活配置输入,以满足不同数据源或文档处理的需求。", + "uniqueInputs": { + "title": "非共享输入", + "tooltip": "非共享输入只能被选定的数据源及其下游节点访问。用户在选择其他数据源时不需要填写它。只有数据源变量引用的输入字段才会出现在第一步(数据源)中。所有其他字段将在第二步(处理文档)中显示。" + }, + "globalInputs": { + "title": "全局共享输入", + "tooltip": "全局共享输入在所有节点之间共享。用户在选择任何数据源时都需要填写它们。例如,像分隔符和最大块长度这样的字段可以跨多个数据源统一应用。只有数据源变量引用的输入字段才会出现在第一步(数据源)中。所有其他字段都显示在第二步(处理文档)中。" + }, + "addInputField": "添加输入字段", + "editInputField": "编辑输入字段", + "preview": { + "stepOneTitle": "数据源", + "stepTwoTitle": "处理文档" + }, + "error": { + "variableDuplicate": "变量名已存在。请选择其他名称。" + } + }, + "addDocuments": { + "title": "添加文档", + "steps": { + "chooseDatasource": "选择数据源", + "processDocuments": "处理文档", + "processingDocuments": "正在处理文档" + }, + "backToDataSource": "数据源", + "stepOne": { + "preview": "预览" + }, + "stepTwo": { + "chunkSettings": "分段设置", + "previewChunks": "预览分段" + }, + "stepThree": { + "learnMore": "了解更多" + }, + "characters": "字符", + "selectOnlineDocumentTip": "最多处理 {{count}} 页", + "selectOnlineDriveTip": "最多处理 {{count}} 个文件,每个文件最大 {{fileSize}} MB" + }, + "documentSettings": { + "title": "文档设置" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} 页面" + }, + "onlineDrive": { + "notConnected": "{{name}} 未绑定", + "notConnectedTip": "同步 {{name}} 内容前, 须先绑定 {{name}}。", + "breadcrumbs": { + "allBuckets": "所有云存储桶", + "allFiles": "所有文件", + "searchResult": "在 \"{{folderName}}\" 文件夹中找到 {{searchResultsLength}} 个项目", + "searchPlaceholder": "搜索文件..." + }, + "notSupportedFileType": "不支持此文件类型", + "emptyFolder": "此文件夹为空", + "emptySearchResult": "未找到任何项目", + "resetKeywords": "重置关键词" + }, + "configurationTip": "配置 {{pluginName}}", + "conversion": { + "title": "转换为知识流水线", + "descriptionChunk1": "您现在可以将现有知识库转换为使用知识流水线来处理文档", + "descriptionChunk2": " —— 这是一种更开放、更灵活的方式,可以访问我们市场中的插件。新的处理方式将应用到后续添加的所有文档。", + "warning": "此操作无法撤销。", + "confirm": { + "title": "确认", + "content": "此操作是永久性的。您将无法恢复到之前的方式。请确认转换。" + }, + "errorMessage": "转换数据集为知识流水线失败", + "successMessage": "成功将数据集转换为知识流水线" + } +} diff --git a/web/i18n/zh-Hans/dataset-pipeline.ts b/web/i18n/zh-Hans/dataset-pipeline.ts deleted file mode 100644 index 0e23d7a1e0..0000000000 --- a/web/i18n/zh-Hans/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - backToKnowledge: '返回知识库', - createFromScratch: { - title: '空白知识流水线', - description: '从零开始创建一个自定义知识流水线,对数据处理和结构拥有完全控制权。', - }, - importDSL: '从 DSL 文件导入', - createKnowledge: '创建知识流水线', - errorTip: '创建知识流水线失败', - successTip: '成功创建知识流水线', - caution: '注意', - }, - templates: { - customized: '自定义', - }, - operations: { - choose: '选择', - details: '详情', - editInfo: '编辑信息', - useTemplate: '使用此知识流水线', - backToDataSource: '返回数据源', - process: '处理', - dataSource: '数据源', - saveAndProcess: '保存并处理', - preview: '预览', - exportPipeline: '导出知识流水线', - convert: '转换', - }, - knowledgeNameAndIcon: '知识库名称和图标', - knowledgeNameAndIconPlaceholder: '请输入知识库名称', - knowledgeDescription: '知识库描述', - knowledgeDescriptionPlaceholder: '描述知识库中的内容。详细的描述可以让 AI 更准确地访问数据集的内容。如果为空,Dify 将使用默认的命中策略。(可选)', - knowledgePermissions: '权限', - editPipelineInfo: '编辑知识流水线信息', - pipelineNameAndIcon: '知识流水线名称和图标', - deletePipeline: { - title: '要删除此知识流水线模板吗?', - content: '删除知识流水线模板是不可逆的。', - }, - publishPipeline: { - success: { - message: '知识流水线发布成功', - tip: '前往文档添加或管理文档。', - }, - error: { - message: '知识流水线发布失败', - }, - }, - publishTemplate: { - success: { - message: '知识流水线模板发布成功', - tip: '您可以在创建页使用该模板。', - learnMore: '了解更多', - }, - error: { - message: '知识流水线模板发布失败', - }, - }, - exportDSL: { - successTip: '成功导出知识流水线 DSL', - errorTip: '导出知识流水线 DSL 失败', - }, - details: { - createdBy: '由 {{author}} 创建', - structure: '文档结构', - structureTooltip: '文档结构决定了文档的拆分和索引方式,Dify 提供了通用、父子和问答模式,每个知识库的文档结构是唯一的。', - }, - testRun: { - title: '测试运行', - tooltip: '在测试运行模式下,每次只能导入一个文档,以便于调试和观察。', - steps: { - dataSource: '数据源', - documentProcessing: '文档处理', - }, - dataSource: { - localFiles: '本地文件', - }, - notion: { - title: '选择 Notion 页面', - docTitle: 'Notion 文档', - }, - }, - inputField: '输入字段', - inputFieldPanel: { - title: '用户输入字段', - description: '用户输入字段用于定义和收集知识流水线执行过程中所需的变量,用户可以自定义字段类型,并灵活配置输入,以满足不同数据源或文档处理的需求。', - uniqueInputs: { - title: '非共享输入', - tooltip: '非共享输入只能被选定的数据源及其下游节点访问。用户在选择其他数据源时不需要填写它。只有数据源变量引用的输入字段才会出现在第一步(数据源)中。所有其他字段将在第二步(处理文档)中显示。', - }, - globalInputs: { - title: '全局共享输入', - tooltip: '全局共享输入在所有节点之间共享。用户在选择任何数据源时都需要填写它们。例如,像分隔符和最大块长度这样的字段可以跨多个数据源统一应用。只有数据源变量引用的输入字段才会出现在第一步(数据源)中。所有其他字段都显示在第二步(处理文档)中。', - }, - addInputField: '添加输入字段', - editInputField: '编辑输入字段', - preview: { - stepOneTitle: '数据源', - stepTwoTitle: '处理文档', - }, - error: { - variableDuplicate: '变量名已存在。请选择其他名称。', - }, - }, - addDocuments: { - title: '添加文档', - steps: { - chooseDatasource: '选择数据源', - processDocuments: '处理文档', - processingDocuments: '正在处理文档', - }, - backToDataSource: '数据源', - stepOne: { - preview: '预览', - }, - stepTwo: { - chunkSettings: '分段设置', - previewChunks: '预览分段', - }, - stepThree: { - learnMore: '了解更多', - }, - characters: '字符', - selectOnlineDocumentTip: '最多处理 {{count}} 页', - selectOnlineDriveTip: '最多处理 {{count}} 个文件,每个文件最大 {{fileSize}} MB', - }, - documentSettings: { - title: '文档设置', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} 页面', - }, - onlineDrive: { - notConnected: '{{name}} 未绑定', - notConnectedTip: '同步 {{name}} 内容前, 须先绑定 {{name}}。', - breadcrumbs: { - allBuckets: '所有云存储桶', - allFiles: '所有文件', - searchResult: '在 "{{folderName}}" 文件夹中找到 {{searchResultsLength}} 个项目', - searchPlaceholder: '搜索文件...', - }, - notSupportedFileType: '不支持此文件类型', - emptyFolder: '此文件夹为空', - emptySearchResult: '未找到任何项目', - resetKeywords: '重置关键词', - }, - configurationTip: '配置 {{pluginName}}', - conversion: { - title: '转换为知识流水线', - descriptionChunk1: '您现在可以将现有知识库转换为使用知识流水线来处理文档', - descriptionChunk2: ' —— 这是一种更开放、更灵活的方式,可以访问我们市场中的插件。新的处理方式将应用到后续添加的所有文档。', - warning: '此操作无法撤销。', - confirm: { - title: '确认', - content: '此操作是永久性的。您将无法恢复到之前的方式。请确认转换。', - }, - errorMessage: '转换数据集为知识流水线失败', - successMessage: '成功将数据集转换为知识流水线', - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/dataset-settings.json b/web/i18n/zh-Hans/dataset-settings.json new file mode 100644 index 0000000000..33c268340d --- /dev/null +++ b/web/i18n/zh-Hans/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "知识库设置", + "desc": "在这里,您可以修改此知识库的属性和检索设置", + "form": { + "name": "知识库名称", + "nameAndIcon": "名称和图标", + "namePlaceholder": "请输入知识库名称", + "nameError": "名称不能为空", + "desc": "描述", + "descInfo": "请写出清楚的文字描述来概述知识库的内容。当从多个知识库中进行选择匹配时,该描述将用作匹配的基础。", + "descPlaceholder": "描述该数据集的内容。详细描述可以让 AI 更快地访问数据集的内容。如果为空,Dify 将使用默认的命中策略。", + "helpText": "学习如何编写一份优秀的数据集描述。", + "descWrite": "了解如何编写更好的知识库描述。", + "permissions": "可见权限", + "permissionsOnlyMe": "只有我", + "permissionsAllMember": "所有团队成员", + "permissionsInvitedMembers": "部分团队成员", + "me": "(你)", + "onSearchResults": "没有成员匹配您的搜索查询。\n请尝试其他关键词。", + "chunkStructure": { + "title": "分段模式", + "learnMore": "了解更多", + "description": "关于分段模式。" + }, + "indexMethod": "索引模式", + "indexMethodHighQuality": "高质量", + "indexMethodHighQualityTip": "调用嵌入模型来处理文档以实现更精确的检索,可以帮助大语言模型生成高质量的回答。", + "upgradeHighQualityTip": "一旦升级为高质量模式,将无法切换回经济模式。", + "indexMethodEconomy": "经济", + "indexMethodEconomyTip": "每个块使用 {{count}} 个关键词进行检索,不消耗 tokens,但会降低检索准确性。", + "numberOfKeywords": "关键词数量", + "embeddingModel": "Embedding 模型", + "embeddingModelTip": "修改 Embedding 模型,请去", + "embeddingModelTipLink": "设置", + "retrievalSetting": { + "title": "检索设置", + "method": "检索方法", + "learnMore": "了解更多", + "description": "关于检索方法。", + "longDescription": "关于检索方法,您可以随时在知识库设置中更改此设置。", + "multiModalTip": "当 Embedding 模型支持多模态时,请选择多模态 Rerank 模型以获得更好的检索效果。" + }, + "externalKnowledgeAPI": "外部知识 API", + "externalKnowledgeID": "外部知识库 ID", + "save": "保存", + "retrievalSettings": "检索设置", + "indexMethodChangeToEconomyDisabledTip": "无法从高质量降级为经济", + "searchModel": "搜索模型" + } +} diff --git a/web/i18n/zh-Hans/dataset-settings.ts b/web/i18n/zh-Hans/dataset-settings.ts deleted file mode 100644 index 50d87f2e73..0000000000 --- a/web/i18n/zh-Hans/dataset-settings.ts +++ /dev/null @@ -1,52 +0,0 @@ -const translation = { - title: '知识库设置', - desc: '在这里,您可以修改此知识库的属性和检索设置', - form: { - name: '知识库名称', - nameAndIcon: '名称和图标', - namePlaceholder: '请输入知识库名称', - nameError: '名称不能为空', - desc: '描述', - descInfo: '请写出清楚的文字描述来概述知识库的内容。当从多个知识库中进行选择匹配时,该描述将用作匹配的基础。', - descPlaceholder: '描述该数据集的内容。详细描述可以让 AI 更快地访问数据集的内容。如果为空,Dify 将使用默认的命中策略。', - helpText: '学习如何编写一份优秀的数据集描述。', - descWrite: '了解如何编写更好的知识库描述。', - permissions: '可见权限', - permissionsOnlyMe: '只有我', - permissionsAllMember: '所有团队成员', - permissionsInvitedMembers: '部分团队成员', - me: '(你)', - onSearchResults: '没有成员匹配您的搜索查询。\n请尝试其他关键词。', - chunkStructure: { - title: '分段模式', - learnMore: '了解更多', - description: '关于分段模式。', - }, - indexMethod: '索引模式', - indexMethodHighQuality: '高质量', - indexMethodHighQualityTip: '调用嵌入模型来处理文档以实现更精确的检索,可以帮助大语言模型生成高质量的回答。', - upgradeHighQualityTip: '一旦升级为高质量模式,将无法切换回经济模式。', - indexMethodEconomy: '经济', - indexMethodEconomyTip: '每个块使用 {{count}} 个关键词进行检索,不消耗 tokens,但会降低检索准确性。', - numberOfKeywords: '关键词数量', - embeddingModel: 'Embedding 模型', - embeddingModelTip: '修改 Embedding 模型,请去', - embeddingModelTipLink: '设置', - retrievalSetting: { - title: '检索设置', - method: '检索方法', - learnMore: '了解更多', - description: '关于检索方法。', - longDescription: '关于检索方法,您可以随时在知识库设置中更改此设置。', - multiModalTip: '当 Embedding 模型支持多模态时,请选择多模态 Rerank 模型以获得更好的检索效果。', - }, - externalKnowledgeAPI: '外部知识 API', - externalKnowledgeID: '外部知识库 ID', - save: '保存', - retrievalSettings: '检索设置', - indexMethodChangeToEconomyDisabledTip: '无法从高质量降级为经济', - searchModel: '搜索模型', - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/dataset.json b/web/i18n/zh-Hans/dataset.json new file mode 100644 index 0000000000..4bd9c92882 --- /dev/null +++ b/web/i18n/zh-Hans/dataset.json @@ -0,0 +1,249 @@ +{ + "knowledge": "知识库", + "chunkingMode": { + "general": "通用", + "parentChild": "父子", + "qa": "问答", + "graph": "图" + }, + "parentMode": { + "paragraph": "段落", + "fullDoc": "全文" + }, + "externalTag": "外部", + "externalAPI": "外部 API", + "externalAPIPanelTitle": "外部知识库 API", + "externalKnowledgeId": "外部知识库 ID", + "externalKnowledgeName": "外部知识库名称", + "externalKnowledgeDescription": "知识库描述", + "externalKnowledgeIdPlaceholder": "请输入外部知识库 ID", + "externalKnowledgeNamePlaceholder": "请输入外部知识库名称", + "externalKnowledgeDescriptionPlaceholder": "描述知识库内容(可选)", + "learnHowToWriteGoodKnowledgeDescription": "了解如何编写良好的知识库描述", + "externalAPIPanelDescription": "外部知识库 API 用于连接到 Dify 之外的知识库并从中检索知识。", + "externalAPIPanelDocumentation": "了解如何创建外部知识库 API", + "externalKnowledgeBase": "外部知识库", + "localDocs": "本地文档", + "documentCount": " 文档", + "docAllEnabled_one": "{{count}} 个文档已启用", + "docAllEnabled_other": "所有 {{count}} 个文档已启用", + "partialEnabled_one": "共计 {{count}} 个文档, {{num}} 可用", + "partialEnabled_other": "共计 {{count}} 个文档, {{num}} 可用", + "wordCount": " 千词", + "appCount": " 关联应用", + "updated": "更新于", + "createDataset": "创建知识库", + "createFromPipeline": "通过知识流水线创建知识库", + "noExternalKnowledge": "还没有外部知识库 API,点击此处创建", + "createExternalAPI": "添加外部知识库 API", + "createNewExternalAPI": "创建新的外部知识库 API", + "editExternalAPIFormTitle": "编辑外部知识库 API", + "editExternalAPITooltipTitle": "个关联知识库", + "editExternalAPIConfirmWarningContent": { + "front": "此外部知识库 API 已链接到", + "end": "个外部知识库,此修改将应用于所有这些知识库。您确定要保存此更改吗?" + }, + "editExternalAPIFormWarning": { + "front": "此外部 API 已链接到", + "end": "外部知识库" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "front": "删除", + "end": "?" + }, + "content": { + "front": "此外部知识库 API 已链接到", + "end": "个外部知识库。删除此 API 将使所有这些知识库失效。您确定要删除此 API 吗?" + }, + "noConnectionContent": "您确定要删除此 API 吗?" + }, + "connectDatasetIntro": { + "title": "如何连接到外部知识库", + "content": { + "front": "要连接到外部知识库,您需要先创建一个外部 API。请仔细阅读并参考", + "link": "了解如何创建外部 API", + "end": "。然后找到相应的知识库 ID 并填写在左侧表单中。如果所有信息正确,点击连接按钮后将自动跳转到知识库中的检索测试。" + }, + "learnMore": "了解更多" + }, + "connectHelper": { + "helper1": "通过 API 和知识库 ID 连接到外部知识库。目前,", + "helper2": "仅支持检索功能", + "helper3": "。我们强烈建议您在使用此功能之前", + "helper4": "仔细阅读帮助文档", + "helper5": "。" + }, + "connectDataset": "连接外部知识库", + "createDatasetIntro": "导入您自己的文本数据或通过 Webhook 实时写入数据以增强 LLM 的上下文。", + "deleteDatasetConfirmTitle": "要删除知识库吗?", + "deleteDatasetConfirmContent": "删除知识库是不可逆的。用户将无法再访问您的知识库,所有的提示配置和日志将被永久删除。", + "datasetUsedByApp": "某些应用正在使用该知识库。应用将无法再使用该知识库,所有的提示配置和日志将被永久删除。", + "datasetDeleted": "知识库已删除", + "datasetDeleteFailed": "删除知识库失败", + "selectExternalKnowledgeAPI": { + "placeholder": "选择一个外部知识 API" + }, + "didYouKnow": "你知道吗?", + "intro1": "知识库可以被集成到 Dify 应用中", + "intro2": "作为上下文", + "intro3": ",", + "intro4": "或可以", + "intro5": "发布", + "intro6": "为独立的服务", + "unavailable": "不可用", + "datasets": "知识库", + "datasetsApi": "API 访问", + "externalKnowledgeForm": { + "connect": "连接", + "cancel": "取消" + }, + "externalAPIForm": { + "name": "名称", + "endpoint": "API 端点", + "apiKey": "API 密钥", + "save": "保存", + "cancel": "取消", + "edit": "编辑", + "encrypted": { + "front": "您的 API Token 将使用", + "end": "加密并存储。" + } + }, + "retrieval": { + "semantic_search": { + "title": "向量检索", + "description": "通过生成查询嵌入并查询与其向量表示最相似的文本分段" + }, + "full_text_search": { + "title": "全文检索", + "description": "索引文档中的所有词汇,从而允许用户查询任意词汇,并返回包含这些词汇的文本片段" + }, + "hybrid_search": { + "title": "混合检索", + "description": "同时执行全文检索和向量检索,并应用重排序步骤,从两类查询结果中选择匹配用户问题的最佳结果,用户可以选择设置权重或配置重新排序模型。", + "recommend": "推荐" + }, + "keyword_search": { + "title": "倒排索引", + "description": "倒排索引是一种用于高效检索的结构。按术语组织,每个术语指向包含它的文档或网页" + }, + "change": "更改", + "changeRetrievalMethod": "更改检索方法" + }, + "docsFailedNotice": "文档索引失败", + "retry": "重试", + "documentsDisabled": "{{num}} 个文档已禁用 - 未活动超过 30 天", + "enable": "启用", + "indexingTechnique": { + "high_quality": "高质量", + "economy": "经济" + }, + "indexingMethod": { + "semantic_search": "向量检索", + "full_text_search": "全文检索", + "hybrid_search": "混合检索", + "invertedIndex": "倒排索引" + }, + "defaultRetrievalTip": "默认情况下使用多路召回。从多个知识库中检索知识,然后重新排序。", + "mixtureHighQualityAndEconomicTip": "混合使用高质量和经济型知识库需要配置 Rerank 模型。", + "inconsistentEmbeddingModelTip": "当所选知识库配置的 Embedding 模型不一致时,需要配置 Rerank 模型。", + "mixtureInternalAndExternalTip": "混合使用内部和外部知识时需要配置 Rerank 模型。", + "allExternalTip": "仅使用外部知识时,用户可以选择是否启用 Rerank 模型。如果不启用,检索到的文本块将根据分数排序。当不同知识库的检索策略不一致时,结果可能不准确。", + "retrievalSettings": "召回设置", + "rerankSettings": "Rerank 设置", + "weightedScore": { + "title": "权重设置", + "description": "通过调整分配的权重,重新排序策略确定是优先进行语义匹配还是关键字匹配。", + "semanticFirst": "语义优先", + "keywordFirst": "关键词优先", + "customized": "自定义", + "semantic": "语义", + "keyword": "关键词" + }, + "nTo1RetrievalLegacy": "9 月 1 日起我们将不再提供此能力,推荐使用最新的多路召回获得更好的检索效果。", + "nTo1RetrievalLegacyLink": "了解更多", + "nTo1RetrievalLegacyLinkText": "9 月 1 日起我们将不再提供此能力。", + "batchAction": { + "selected": "已选择", + "enable": "启用", + "disable": "禁用", + "archive": "归档", + "delete": "删除", + "cancel": "取消" + }, + "preprocessDocument": "{{num}} 个预处理文档", + "allKnowledge": "所有知识库", + "allKnowledgeDescription": "选择以显示该工作区内所有知识库。只有工作区所有者才能管理所有知识库。", + "embeddingModelNotAvailable": "Embedding 模型不可用。", + "metadata": { + "metadata": "元数据", + "addMetadata": "添加元数据", + "chooseTime": "选择时间", + "createMetadata": { + "title": "新建元数据", + "back": "返回", + "type": "类型", + "name": "名称", + "namePlaceholder": "添加元数据名称" + }, + "checkName": { + "empty": "元数据名称不能为空", + "invalid": "元数据名称只能包含小写字母、数字和下划线,并且必须以小写字母开头", + "tooLong": "元数据名称不得超过{{max}}个字符" + }, + "batchEditMetadata": { + "editMetadata": "编辑元数据", + "editDocumentsNum": "编辑 {{num}} 个文档", + "applyToAllSelectDocument": "应用于所有选定文档", + "applyToAllSelectDocumentTip": "自动为所有选定文档创建上述编辑和新元数据,否则仅对具有元数据的文档应用编辑。", + "multipleValue": "多个值" + }, + "selectMetadata": { + "search": "搜索元数据", + "newAction": "新建元数据", + "manageAction": "管理" + }, + "datasetMetadata": { + "description": "元数据是关于文档的数据,用于描述文档的属性。元数据可以帮助您更好地组织和管理文档。", + "addMetaData": "添加元数据", + "values": "{{num}} 个值", + "disabled": "已禁用", + "rename": "重命名", + "name": "名称", + "namePlaceholder": "元数据名称", + "builtIn": "内置", + "builtInDescription": "内置元数据是系统预定义的元数据,您可以在此处查看和管理内置元数据。", + "deleteTitle": "确定删除", + "deleteContent": "你确定要删除元数据 \"{{name}}\" 吗?" + }, + "documentMetadata": { + "metadataToolTip": "元数据是关于文档的数据,用于描述文档的属性。元数据可以帮助您更好地组织和管理文档。", + "startLabeling": "开始标注", + "documentInformation": "文档信息", + "technicalParameters": "技术参数" + } + }, + "serviceApi": { + "title": "服务 API", + "enabled": "运行中", + "disabled": "已停用", + "card": { + "title": "后端服务 API", + "endpoint": "API 端点", + "apiKey": "API 密钥", + "apiReference": "API 文档" + } + }, + "cornerLabel": { + "unavailable": "不可用", + "pipeline": "流水线" + }, + "multimodal": "多模态", + "imageUploader": { + "tip": "支持 {{supportTypes}} (最多 {{batchCount}} 个,每个大小不超过 {{size}}MB)", + "button": "拖拽文件或文件夹,或", + "browse": "浏览", + "fileSizeLimitExceeded": "文件大小超过 {{size}}MB 限制" + } +} diff --git a/web/i18n/zh-Hans/dataset.ts b/web/i18n/zh-Hans/dataset.ts deleted file mode 100644 index 781fb5aa94..0000000000 --- a/web/i18n/zh-Hans/dataset.ts +++ /dev/null @@ -1,252 +0,0 @@ -const translation = { - knowledge: '知识库', - chunkingMode: { - general: '通用', - parentChild: '父子', - qa: '问答', - graph: '图', - }, - parentMode: { - paragraph: '段落', - fullDoc: '全文', - }, - externalTag: '外部', - externalAPI: '外部 API', - externalAPIPanelTitle: '外部知识库 API', - externalKnowledgeId: '外部知识库 ID', - externalKnowledgeName: '外部知识库名称', - externalKnowledgeDescription: '知识库描述', - externalKnowledgeIdPlaceholder: '请输入外部知识库 ID', - externalKnowledgeNamePlaceholder: '请输入外部知识库名称', - externalKnowledgeDescriptionPlaceholder: '描述知识库内容(可选)', - learnHowToWriteGoodKnowledgeDescription: '了解如何编写良好的知识库描述', - externalAPIPanelDescription: '外部知识库 API 用于连接到 Dify 之外的知识库并从中检索知识。', - externalAPIPanelDocumentation: '了解如何创建外部知识库 API', - externalKnowledgeBase: '外部知识库', - localDocs: '本地文档', - documentCount: ' 文档', - docAllEnabled_one: '{{count}} 个文档已启用', - docAllEnabled_other: '所有 {{count}} 个文档已启用', - partialEnabled_one: '共计 {{count}} 个文档, {{num}} 可用', - partialEnabled_other: '共计 {{count}} 个文档, {{num}} 可用', - wordCount: ' 千词', - appCount: ' 关联应用', - updated: '更新于', - createDataset: '创建知识库', - createFromPipeline: '通过知识流水线创建知识库', - noExternalKnowledge: '还没有外部知识库 API,点击此处创建', - createExternalAPI: '添加外部知识库 API', - createNewExternalAPI: '创建新的外部知识库 API', - editExternalAPIFormTitle: '编辑外部知识库 API', - editExternalAPITooltipTitle: '个关联知识库', - editExternalAPIConfirmWarningContent: { - front: '此外部知识库 API 已链接到', - end: '个外部知识库,此修改将应用于所有这些知识库。您确定要保存此更改吗?', - }, - editExternalAPIFormWarning: { - front: '此外部 API 已链接到', - end: '外部知识库', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - front: '删除', - end: '?', - }, - content: { - front: '此外部知识库 API 已链接到', - end: '个外部知识库。删除此 API 将使所有这些知识库失效。您确定要删除此 API 吗?', - }, - noConnectionContent: '您确定要删除此 API 吗?', - }, - connectDatasetIntro: { - title: '如何连接到外部知识库', - content: { - front: '要连接到外部知识库,您需要先创建一个外部 API。请仔细阅读并参考', - link: '了解如何创建外部 API', - end: '。然后找到相应的知识库 ID 并填写在左侧表单中。如果所有信息正确,点击连接按钮后将自动跳转到知识库中的检索测试。', - }, - learnMore: '了解更多', - }, - connectHelper: { - helper1: '通过 API 和知识库 ID 连接到外部知识库。目前,', - helper2: '仅支持检索功能', - helper3: '。我们强烈建议您在使用此功能之前', - helper4: '仔细阅读帮助文档', - helper5: '。', - }, - connectDataset: '连接外部知识库', - createDatasetIntro: '导入您自己的文本数据或通过 Webhook 实时写入数据以增强 LLM 的上下文。', - deleteDatasetConfirmTitle: '要删除知识库吗?', - deleteDatasetConfirmContent: - '删除知识库是不可逆的。用户将无法再访问您的知识库,所有的提示配置和日志将被永久删除。', - datasetUsedByApp: '某些应用正在使用该知识库。应用将无法再使用该知识库,所有的提示配置和日志将被永久删除。', - datasetDeleted: '知识库已删除', - datasetDeleteFailed: '删除知识库失败', - selectExternalKnowledgeAPI: { - placeholder: '选择一个外部知识 API', - }, - didYouKnow: '你知道吗?', - intro1: '知识库可以被集成到 Dify 应用中', - intro2: '作为上下文', - intro3: ',', - intro4: '或可以', - intro5: '发布', - intro6: '为独立的服务', - unavailable: '不可用', - datasets: '知识库', - datasetsApi: 'API 访问', - externalKnowledgeForm: { - connect: '连接', - cancel: '取消', - }, - externalAPIForm: { - name: '名称', - endpoint: 'API 端点', - apiKey: 'API 密钥', - save: '保存', - cancel: '取消', - edit: '编辑', - encrypted: { - front: '您的 API Token 将使用', - end: '加密并存储。', - }, - }, - retrieval: { - semantic_search: { - title: '向量检索', - description: '通过生成查询嵌入并查询与其向量表示最相似的文本分段', - }, - full_text_search: { - title: '全文检索', - description: '索引文档中的所有词汇,从而允许用户查询任意词汇,并返回包含这些词汇的文本片段', - }, - hybrid_search: { - title: '混合检索', - description: '同时执行全文检索和向量检索,并应用重排序步骤,从两类查询结果中选择匹配用户问题的最佳结果,用户可以选择设置权重或配置重新排序模型。', - recommend: '推荐', - }, - keyword_search: { - title: '倒排索引', - description: '倒排索引是一种用于高效检索的结构。按术语组织,每个术语指向包含它的文档或网页', - }, - change: '更改', - changeRetrievalMethod: '更改检索方法', - }, - docsFailedNotice: '文档索引失败', - retry: '重试', - documentsDisabled: '{{num}} 个文档已禁用 - 未活动超过 30 天', - enable: '启用', - indexingTechnique: { - high_quality: '高质量', - economy: '经济', - }, - indexingMethod: { - semantic_search: '向量检索', - full_text_search: '全文检索', - hybrid_search: '混合检索', - invertedIndex: '倒排索引', - }, - defaultRetrievalTip: '默认情况下使用多路召回。从多个知识库中检索知识,然后重新排序。', - mixtureHighQualityAndEconomicTip: '混合使用高质量和经济型知识库需要配置 Rerank 模型。', - inconsistentEmbeddingModelTip: '当所选知识库配置的 Embedding 模型不一致时,需要配置 Rerank 模型。', - mixtureInternalAndExternalTip: '混合使用内部和外部知识时需要配置 Rerank 模型。', - allExternalTip: '仅使用外部知识时,用户可以选择是否启用 Rerank 模型。如果不启用,检索到的文本块将根据分数排序。当不同知识库的检索策略不一致时,结果可能不准确。', - retrievalSettings: '召回设置', - rerankSettings: 'Rerank 设置', - weightedScore: { - title: '权重设置', - description: '通过调整分配的权重,重新排序策略确定是优先进行语义匹配还是关键字匹配。', - semanticFirst: '语义优先', - keywordFirst: '关键词优先', - customized: '自定义', - semantic: '语义', - keyword: '关键词', - }, - nTo1RetrievalLegacy: '9 月 1 日起我们将不再提供此能力,推荐使用最新的多路召回获得更好的检索效果。', - nTo1RetrievalLegacyLink: '了解更多', - nTo1RetrievalLegacyLinkText: '9 月 1 日起我们将不再提供此能力。', - batchAction: { - selected: '已选择', - enable: '启用', - disable: '禁用', - archive: '归档', - delete: '删除', - cancel: '取消', - }, - preprocessDocument: '{{num}} 个预处理文档', - allKnowledge: '所有知识库', - allKnowledgeDescription: '选择以显示该工作区内所有知识库。只有工作区所有者才能管理所有知识库。', - embeddingModelNotAvailable: 'Embedding 模型不可用。', - metadata: { - metadata: '元数据', - addMetadata: '添加元数据', - chooseTime: '选择时间', - createMetadata: { - title: '新建元数据', - back: '返回', - type: '类型', - name: '名称', - namePlaceholder: '添加元数据名称', - }, - checkName: { - empty: '元数据名称不能为空', - invalid: '元数据名称只能包含小写字母、数字和下划线,并且必须以小写字母开头', - tooLong: '元数据名称不得超过{{max}}个字符', - }, - batchEditMetadata: { - editMetadata: '编辑元数据', - editDocumentsNum: '编辑 {{num}} 个文档', - applyToAllSelectDocument: '应用于所有选定文档', - applyToAllSelectDocumentTip: '自动为所有选定文档创建上述编辑和新元数据,否则仅对具有元数据的文档应用编辑。', - multipleValue: '多个值', - }, - selectMetadata: { - search: '搜索元数据', - newAction: '新建元数据', - manageAction: '管理', - }, - datasetMetadata: { - description: '元数据是关于文档的数据,用于描述文档的属性。元数据可以帮助您更好地组织和管理文档。', - addMetaData: '添加元数据', - values: '{{num}} 个值', - disabled: '已禁用', - rename: '重命名', - name: '名称', - namePlaceholder: '元数据名称', - builtIn: '内置', - builtInDescription: '内置元数据是系统预定义的元数据,您可以在此处查看和管理内置元数据。', - deleteTitle: '确定删除', - deleteContent: '你确定要删除元数据 "{{name}}" 吗?', - }, - documentMetadata: { - metadataToolTip: '元数据是关于文档的数据,用于描述文档的属性。元数据可以帮助您更好地组织和管理文档。', - startLabeling: '开始标注', - documentInformation: '文档信息', - technicalParameters: '技术参数', - }, - }, - serviceApi: { - title: '服务 API', - enabled: '运行中', - disabled: '已停用', - card: { - title: '后端服务 API', - endpoint: 'API 端点', - apiKey: 'API 密钥', - apiReference: 'API 文档', - }, - }, - cornerLabel: { - unavailable: '不可用', - pipeline: '流水线', - }, - multimodal: '多模态', - imageUploader: { - tip: '支持 {{supportTypes}} (最多 {{batchCount}} 个,每个大小不超过 {{size}}MB)', - button: '拖拽文件或文件夹,或', - browse: '浏览', - fileSizeLimitExceeded: '文件大小超过 {{size}}MB 限制', - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/education.json b/web/i18n/zh-Hans/education.json new file mode 100644 index 0000000000..9911af3f11 --- /dev/null +++ b/web/i18n/zh-Hans/education.json @@ -0,0 +1,74 @@ +{ + "toVerified": "获取教育版认证", + "toVerifiedTip": { + "front": "您现在符合教育版认证的资格。请在下方输入您的教育信息,以完成认证流程,并领取 Dify Professional 版的", + "coupon": "100% 独家优惠券", + "end": "。" + }, + "currentSigned": "您当前登录的账户是", + "form": { + "schoolName": { + "title": "您的学校名称", + "placeholder": "请输入您的学校的官方全称(不得缩写)" + }, + "schoolRole": { + "title": "您在学校的身份", + "option": { + "student": "学生", + "teacher": "教师", + "administrator": "学校管理员" + } + }, + "terms": { + "title": "条款与协议", + "desc": { + "front": "您的信息和教育版认证资格的使用需遵守我们的", + "and": "和", + "end": "。提交即表示:", + "termsOfService": "服务条款", + "privacyPolicy": "隐私政策" + }, + "option": { + "age": "我确认我已年满 18 周岁。", + "inSchool": "我确认我目前已在提供的学校入学或受雇。Dify 可能会要求提供入学/雇佣证明。如我虚报资格,我同意支付因教育版认证而被减免的费用。" + } + } + }, + "submit": "提交", + "submitError": "提交表单失败,请稍后重新提交问卷。", + "learn": "了解如何获取教育版认证", + "successTitle": "您已成功获得 Dify 教育版认证!", + "successContent": "我们已向您的账户发放 Dify Professional 版 100% 折扣优惠券。该优惠券有效期为一年,请在有效期内使用。", + "rejectTitle": "您的 Dify 教育版认证已被拒绝", + "rejectContent": "非常遗憾,您无法使用此电子邮件以获得教育版认证资格,也无法领取 Dify Professional 版的 100% 独家优惠券。", + "emailLabel": "您当前的邮箱", + "notice": { + "dateFormat": "YYYY/MM/DD", + "expired": { + "title": "您的教育认证已过期", + "summary": { + "line1": "您仍可继续使用 Dify,但将无法再领取新的教育优惠券。", + "line2": "" + } + }, + "isAboutToExpire": { + "title": "您的教育认证将于 {{date}} 过期", + "summary": "别担心,这不会影响您当前的订阅。但续订时您将无法继续享受教育优惠,除非重新完成身份验证。" + }, + "stillInEducation": { + "title": "仍在就读?", + "expired": "立即重新认证,获取新学年的教育优惠券。优惠券将发放至您的账户,并可在下次升级时使用。", + "isAboutToExpire": "立即重新验证,获取新学年的教育优惠券。优惠券将发放至您的账户,并可在下次续订时使用。" + }, + "alreadyGraduated": { + "title": "已毕业?", + "expired": "您可以随时升级以获得所有付费功能。", + "isAboutToExpire": "您的当前订阅仍将保持有效。订阅结束后,空间将切换为 Sandbox 套餐,您也可以随时升级,恢复全部付费功能的使用。" + }, + "action": { + "dismiss": "忽略", + "upgrade": "升级套餐", + "reVerify": "重新认证" + } + } +} diff --git a/web/i18n/zh-Hans/education.ts b/web/i18n/zh-Hans/education.ts deleted file mode 100644 index 8109563102..0000000000 --- a/web/i18n/zh-Hans/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerified: '获取教育版认证', - toVerifiedTip: { - front: '您现在符合教育版认证的资格。请在下方输入您的教育信息,以完成认证流程,并领取 Dify Professional 版的', - coupon: '100% 独家优惠券', - end: '。', - }, - currentSigned: '您当前登录的账户是', - form: { - schoolName: { - title: '您的学校名称', - placeholder: '请输入您的学校的官方全称(不得缩写)', - }, - schoolRole: { - title: '您在学校的身份', - option: { - student: '学生', - teacher: '教师', - administrator: '学校管理员', - }, - }, - terms: { - title: '条款与协议', - desc: { - front: '您的信息和教育版认证资格的使用需遵守我们的', - and: '和', - end: '。提交即表示:', - termsOfService: '服务条款', - privacyPolicy: '隐私政策', - }, - option: { - age: '我确认我已年满 18 周岁。', - inSchool: '我确认我目前已在提供的学校入学或受雇。Dify 可能会要求提供入学/雇佣证明。如我虚报资格,我同意支付因教育版认证而被减免的费用。', - }, - }, - }, - submit: '提交', - submitError: '提交表单失败,请稍后重新提交问卷。', - learn: '了解如何获取教育版认证', - successTitle: '您已成功获得 Dify 教育版认证!', - successContent: '我们已向您的账户发放 Dify Professional 版 100% 折扣优惠券。该优惠券有效期为一年,请在有效期内使用。', - rejectTitle: '您的 Dify 教育版认证已被拒绝', - rejectContent: '非常遗憾,您无法使用此电子邮件以获得教育版认证资格,也无法领取 Dify Professional 版的 100% 独家优惠券。', - emailLabel: '您当前的邮箱', - notice: { - dateFormat: 'YYYY/MM/DD', - expired: { - title: '您的教育认证已过期', - summary: { - line1: '您仍可继续使用 Dify,但将无法再领取新的教育优惠券。', - line2: '', - }, - }, - isAboutToExpire: { - title: '您的教育认证将于 {{date}} 过期', - summary: '别担心,这不会影响您当前的订阅。但续订时您将无法继续享受教育优惠,除非重新完成身份验证。', - }, - stillInEducation: { - title: '仍在就读?', - expired: '立即重新认证,获取新学年的教育优惠券。优惠券将发放至您的账户,并可在下次升级时使用。', - isAboutToExpire: '立即重新验证,获取新学年的教育优惠券。优惠券将发放至您的账户,并可在下次续订时使用。', - }, - alreadyGraduated: { - title: '已毕业?', - expired: '您可以随时升级以获得所有付费功能。', - isAboutToExpire: '您的当前订阅仍将保持有效。订阅结束后,空间将切换为 Sandbox 套餐,您也可以随时升级,恢复全部付费功能的使用。', - }, - action: { - dismiss: '忽略', - upgrade: '升级套餐', - reVerify: '重新认证', - }, - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/explore.json b/web/i18n/zh-Hans/explore.json new file mode 100644 index 0000000000..ce7fbeea49 --- /dev/null +++ b/web/i18n/zh-Hans/explore.json @@ -0,0 +1,42 @@ +{ + "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": { + "Agent": "Agent", + "Assistant": "助手", + "Writing": "写作", + "Translate": "翻译", + "Programming": "编程", + "HR": "人力资源", + "Workflow": "工作流", + "Entertainment": "娱乐" + } +} diff --git a/web/i18n/zh-Hans/explore.ts b/web/i18n/zh-Hans/explore.ts deleted file mode 100644 index 7f16cd32f2..0000000000 --- a/web/i18n/zh-Hans/explore.ts +++ /dev/null @@ -1,44 +0,0 @@ -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: { - Agent: 'Agent', - Assistant: '助手', - Writing: '写作', - Translate: '翻译', - Programming: '编程', - HR: '人力资源', - Workflow: '工作流', - Entertainment: '娱乐', - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/layout.json b/web/i18n/zh-Hans/layout.json new file mode 100644 index 0000000000..d21efec31b --- /dev/null +++ b/web/i18n/zh-Hans/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "expandSidebar": "展开侧边栏", + "collapseSidebar": "收起侧边栏" + } +} diff --git a/web/i18n/zh-Hans/layout.ts b/web/i18n/zh-Hans/layout.ts deleted file mode 100644 index b7ca9d7bf6..0000000000 --- a/web/i18n/zh-Hans/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - expandSidebar: '展开侧边栏', - collapseSidebar: '收起侧边栏', - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/login.json b/web/i18n/zh-Hans/login.json new file mode 100644 index 0000000000..bd95429041 --- /dev/null +++ b/web/i18n/zh-Hans/login.json @@ -0,0 +1,125 @@ +{ + "pageTitle": "登录 Dify", + "pageTitleForE": "嗨,近来可好", + "welcome": "👋 欢迎!请登录以开始使用。", + "email": "邮箱", + "emailPlaceholder": "输入邮箱地址", + "password": "密码", + "passwordPlaceholder": "输入密码", + "name": "用户名", + "namePlaceholder": "输入用户名", + "forget": "忘记密码?", + "signBtn": "登录", + "continueWithCode": "发送验证码", + "sendVerificationCode": "发送验证码", + "usePassword": "使用密码登录", + "useVerificationCode": "使用验证码登录", + "or": "或", + "installBtn": "设置", + "setAdminAccount": "设置管理员账户", + "setAdminAccountDesc": "管理员拥有的最大权限,可用于创建应用和管理 LLM 供应商等。", + "createAndSignIn": "创建账户", + "oneMoreStep": "还差一步", + "createSample": "基于这些信息,我们将为您创建一个示例应用", + "invitationCode": "邀请码", + "invitationCodePlaceholder": "输入邀请码", + "interfaceLanguage": "界面语言", + "timezone": "时区", + "go": "跳转至 Dify", + "sendUsMail": "发封邮件介绍你自己,我们会尽快处理。", + "acceptPP": "我已阅读并接受隐私政策", + "reset": "请运行以下命令重置密码", + "withGitHub": "使用 GitHub 登录", + "withGoogle": "使用 Google 登录", + "withSSO": "使用 SSO 登录", + "rightTitle": "释放大型语言模型的全部潜能", + "rightDesc": "简单构建可视化、可运营、可改进的 AI 应用", + "tos": "使用协议", + "pp": "隐私政策", + "tosDesc": "使用即代表您同意我们的", + "goToInit": "如果您还没有初始化账户,请前往初始化页面", + "dontHave": "还没有邀请码?", + "invalidInvitationCode": "无效的邀请码", + "accountAlreadyInited": "账户已经初始化", + "forgotPassword": "忘记密码?", + "resetLinkSent": "重置链接已发送", + "sendResetLink": "发送重置链接", + "backToSignIn": "返回登录", + "forgotPasswordDesc": "请输入您的电子邮件地址以重置密码。我们将向您发送一封电子邮件,包含如何重置密码的说明。", + "checkEmailForResetLink": "请检查您的电子邮件以获取重置密码的链接。如果几分钟内没有收到,请检查您的垃圾邮件文件夹。", + "passwordChanged": "立即登录", + "changePassword": "设置密码", + "changePasswordTip": "请输入您的新密码", + "changePasswordBtn": "设置密码", + "invalidToken": "无效或已过期的令牌", + "confirmPassword": "确认密码", + "confirmPasswordPlaceholder": "确认您的新密码", + "passwordChangedTip": "您的密码已成功更改", + "error": { + "emailEmpty": "邮箱不能为空", + "emailInValid": "请输入有效的邮箱地址", + "nameEmpty": "用户名不能为空", + "passwordEmpty": "密码不能为空", + "passwordInvalid": "密码必须包含字母和数字,且长度不小于 8 位", + "passwordLengthInValid": "密码必须至少为 8 个字符", + "registrationNotAllowed": "账户不存在,请联系系统管理员注册账户", + "invalidEmailOrPassword": "邮箱或密码错误", + "redirectUrlMissing": "重定向 URL 缺失" + }, + "license": { + "tip": "启动 Dify 社区版之前,请阅读 GitHub 上的", + "link": "开源协议" + }, + "join": "加入 ", + "joinTipStart": "邀请你加入 ", + "joinTipEnd": " 团队", + "invalid": "链接已失效", + "explore": "探索 Dify", + "activatedTipStart": "您已加入", + "activatedTipEnd": "团队", + "activated": "现在登录", + "adminInitPassword": "管理员初始化密码", + "validate": "验证", + "checkCode": { + "checkYourEmail": "验证您的电子邮件", + "validTime": "请注意验证码 5 分钟内有效", + "verificationCode": "验证码", + "verificationCodePlaceholder": "输入 6 位验证码", + "verify": "验证", + "didNotReceiveCode": "没有收到验证码?", + "resend": "重新发送", + "useAnotherMethod": "使用其他方式登录", + "emptyCode": "验证码不能为空", + "invalidCode": "验证码无效", + "tipsPrefix": "我们发送一个验证码到" + }, + "resetPassword": "重置密码", + "resetPasswordDesc": "请输入您的电子邮件地址以重置密码。我们将向您发送一封电子邮件。", + "backToLogin": "返回登录", + "setYourAccount": "设置您的账户", + "enterYourName": "请输入用户名", + "back": "返回", + "noLoginMethod": "未配置身份认证方式", + "noLoginMethodTip": "请联系系统管理员添加身份认证方式", + "licenseExpired": "许可证已过期", + "licenseExpiredTip": "您所在空间的 Dify Enterprise 许可证已过期,请联系管理员以继续使用 Dify。", + "licenseLost": "许可证丢失", + "licenseLostTip": "无法连接 Dify 许可证服务器,请联系管理员以继续使用 Dify。", + "licenseInactive": "许可证未激活", + "licenseInactiveTip": "您所在空间的 Dify Enterprise 许可证尚未激活,请联系管理员以继续使用 Dify。", + "webapp": { + "login": "登录", + "noLoginMethod": "Web 应用未配置身份认证方式", + "noLoginMethodTip": "请联系系统管理员添加身份认证方式", + "disabled": "Web 应用身份认证已禁用,请联系系统管理员启用。您也可以尝试直接使用应用。" + }, + "signup": { + "noAccount": "没有账户?", + "signUp": "立即注册", + "createAccount": "创建您的账户", + "welcome": "👋 欢迎!请填写信息以开始使用。", + "verifyMail": "发送验证码", + "haveAccount": "已有账户?", + "signIn": "立即登录" + } +} diff --git a/web/i18n/zh-Hans/login.ts b/web/i18n/zh-Hans/login.ts deleted file mode 100644 index d79005fbdd..0000000000 --- a/web/i18n/zh-Hans/login.ts +++ /dev/null @@ -1,127 +0,0 @@ -const translation = { - pageTitle: '登录 Dify', - pageTitleForE: '嗨,近来可好', - welcome: '👋 欢迎!请登录以开始使用。', - email: '邮箱', - emailPlaceholder: '输入邮箱地址', - password: '密码', - passwordPlaceholder: '输入密码', - name: '用户名', - namePlaceholder: '输入用户名', - forget: '忘记密码?', - signBtn: '登录', - continueWithCode: '发送验证码', - sendVerificationCode: '发送验证码', - usePassword: '使用密码登录', - useVerificationCode: '使用验证码登录', - or: '或', - installBtn: '设置', - setAdminAccount: '设置管理员账户', - setAdminAccountDesc: '管理员拥有的最大权限,可用于创建应用和管理 LLM 供应商等。', - createAndSignIn: '创建账户', - oneMoreStep: '还差一步', - createSample: '基于这些信息,我们将为您创建一个示例应用', - invitationCode: '邀请码', - invitationCodePlaceholder: '输入邀请码', - interfaceLanguage: '界面语言', - timezone: '时区', - go: '跳转至 Dify', - sendUsMail: '发封邮件介绍你自己,我们会尽快处理。', - acceptPP: '我已阅读并接受隐私政策', - reset: '请运行以下命令重置密码', - withGitHub: '使用 GitHub 登录', - withGoogle: '使用 Google 登录', - withSSO: '使用 SSO 登录', - rightTitle: '释放大型语言模型的全部潜能', - rightDesc: '简单构建可视化、可运营、可改进的 AI 应用', - tos: '使用协议', - pp: '隐私政策', - tosDesc: '使用即代表您同意我们的', - goToInit: '如果您还没有初始化账户,请前往初始化页面', - dontHave: '还没有邀请码?', - invalidInvitationCode: '无效的邀请码', - accountAlreadyInited: '账户已经初始化', - forgotPassword: '忘记密码?', - resetLinkSent: '重置链接已发送', - sendResetLink: '发送重置链接', - backToSignIn: '返回登录', - forgotPasswordDesc: '请输入您的电子邮件地址以重置密码。我们将向您发送一封电子邮件,包含如何重置密码的说明。', - checkEmailForResetLink: '请检查您的电子邮件以获取重置密码的链接。如果几分钟内没有收到,请检查您的垃圾邮件文件夹。', - passwordChanged: '立即登录', - changePassword: '设置密码', - changePasswordTip: '请输入您的新密码', - changePasswordBtn: '设置密码', - invalidToken: '无效或已过期的令牌', - confirmPassword: '确认密码', - confirmPasswordPlaceholder: '确认您的新密码', - passwordChangedTip: '您的密码已成功更改', - error: { - emailEmpty: '邮箱不能为空', - emailInValid: '请输入有效的邮箱地址', - nameEmpty: '用户名不能为空', - passwordEmpty: '密码不能为空', - passwordInvalid: '密码必须包含字母和数字,且长度不小于 8 位', - passwordLengthInValid: '密码必须至少为 8 个字符', - registrationNotAllowed: '账户不存在,请联系系统管理员注册账户', - invalidEmailOrPassword: '邮箱或密码错误', - redirectUrlMissing: '重定向 URL 缺失', - }, - license: { - tip: '启动 Dify 社区版之前,请阅读 GitHub 上的', - link: '开源协议', - }, - join: '加入 ', - joinTipStart: '邀请你加入 ', - joinTipEnd: ' 团队', - invalid: '链接已失效', - explore: '探索 Dify', - activatedTipStart: '您已加入', - activatedTipEnd: '团队', - activated: '现在登录', - adminInitPassword: '管理员初始化密码', - validate: '验证', - checkCode: { - checkYourEmail: '验证您的电子邮件', - validTime: '请注意验证码 5 分钟内有效', - verificationCode: '验证码', - verificationCodePlaceholder: '输入 6 位验证码', - verify: '验证', - didNotReceiveCode: '没有收到验证码?', - resend: '重新发送', - useAnotherMethod: '使用其他方式登录', - emptyCode: '验证码不能为空', - invalidCode: '验证码无效', - tipsPrefix: '我们发送一个验证码到', - }, - resetPassword: '重置密码', - resetPasswordDesc: '请输入您的电子邮件地址以重置密码。我们将向您发送一封电子邮件。', - backToLogin: '返回登录', - setYourAccount: '设置您的账户', - enterYourName: '请输入用户名', - back: '返回', - noLoginMethod: '未配置身份认证方式', - noLoginMethodTip: '请联系系统管理员添加身份认证方式', - licenseExpired: '许可证已过期', - licenseExpiredTip: '您所在空间的 Dify Enterprise 许可证已过期,请联系管理员以继续使用 Dify。', - licenseLost: '许可证丢失', - licenseLostTip: '无法连接 Dify 许可证服务器,请联系管理员以继续使用 Dify。', - licenseInactive: '许可证未激活', - licenseInactiveTip: '您所在空间的 Dify Enterprise 许可证尚未激活,请联系管理员以继续使用 Dify。', - webapp: { - login: '登录', - noLoginMethod: 'Web 应用未配置身份认证方式', - noLoginMethodTip: '请联系系统管理员添加身份认证方式', - disabled: 'Web 应用身份认证已禁用,请联系系统管理员启用。您也可以尝试直接使用应用。', - }, - signup: { - noAccount: '没有账户?', - signUp: '立即注册', - createAccount: '创建您的账户', - welcome: '👋 欢迎!请填写信息以开始使用。', - verifyMail: '发送验证码', - haveAccount: '已有账户?', - signIn: '立即登录', - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/oauth.json b/web/i18n/zh-Hans/oauth.json new file mode 100644 index 0000000000..09cd7a553f --- /dev/null +++ b/web/i18n/zh-Hans/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "loggedIn": "想要访问您的 Dify Cloud 账号中的以下信息。", + "notLoggedIn": "想要访问您的 Dify Cloud 账号", + "needLogin": "请先登录以授权", + "common": "我们尊重您的隐私,并仅使用此信息来增强您对我们开发工具的使用体验。" + }, + "connect": "连接到", + "continue": "继续", + "switchAccount": "切换账号", + "login": "登录", + "scopes": { + "name": "名称", + "email": "邮箱", + "avatar": "头像", + "languagePreference": "语言偏好", + "timezone": "时区" + }, + "error": { + "invalidParams": "无效的参数", + "authorizeFailed": "授权失败", + "authAppInfoFetchFailed": "获取待授权应用的信息失败" + }, + "unknownApp": "未知应用" +} diff --git a/web/i18n/zh-Hans/oauth.ts b/web/i18n/zh-Hans/oauth.ts deleted file mode 100644 index 2afde687b2..0000000000 --- a/web/i18n/zh-Hans/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - loggedIn: '想要访问您的 Dify Cloud 账号中的以下信息。', - notLoggedIn: '想要访问您的 Dify Cloud 账号', - needLogin: '请先登录以授权', - common: '我们尊重您的隐私,并仅使用此信息来增强您对我们开发工具的使用体验。', - }, - connect: '连接到', - continue: '继续', - switchAccount: '切换账号', - login: '登录', - scopes: { - name: '名称', - email: '邮箱', - avatar: '头像', - languagePreference: '语言偏好', - timezone: '时区', - }, - error: { - invalidParams: '无效的参数', - authorizeFailed: '授权失败', - authAppInfoFetchFailed: '获取待授权应用的信息失败', - }, - unknownApp: '未知应用', -} - -export default translation diff --git a/web/i18n/zh-Hans/pipeline.json b/web/i18n/zh-Hans/pipeline.json new file mode 100644 index 0000000000..7a7f31b646 --- /dev/null +++ b/web/i18n/zh-Hans/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "goToAddDocuments": "去添加文档", + "publishAs": "发布为自定义流水线模板", + "confirmPublish": "确认发布", + "confirmPublishContent": "成功发布知识流水线后,此知识库的分段结构将无法修改。您确定要发布吗?", + "publishAsPipeline": { + "name": "知识流水线名称和图标", + "namePlaceholder": "请输入此知识流水线的名称。 (必填)", + "description": "知识流水线描述", + "descriptionPlaceholder": "请输入此知识流水线的描述。 (可选)" + }, + "testRun": "测试运行", + "preparingDataSource": "准备数据源", + "reRun": "重新运行", + "processing": "处理中" + }, + "inputField": { + "create": "创建用户输入字段", + "manage": "管理" + }, + "publishToast": { + "title": "此知识流水线尚未发布", + "desc": "当知识流水线未发布时,您可以修改知识库节点中的分块结构,知识流水线编排和更改将自动保存为草稿。" + }, + "result": { + "resultPreview": { + "loading": "处理中...请稍后", + "error": "执行过程中出现错误", + "viewDetails": "查看详情", + "footerTip": "在测试运行模式下,最多预览 {{count}} 个分段" + } + }, + "ragToolSuggestions": { + "title": "RAG 工具推荐", + "noRecommendationPlugins": "暂无推荐插件,更多插件请在 Marketplace 中查找" + } +} diff --git a/web/i18n/zh-Hans/pipeline.ts b/web/i18n/zh-Hans/pipeline.ts deleted file mode 100644 index 1ae087fcfd..0000000000 --- a/web/i18n/zh-Hans/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - goToAddDocuments: '去添加文档', - publishAs: '发布为自定义流水线模板', - confirmPublish: '确认发布', - confirmPublishContent: '成功发布知识流水线后,此知识库的分段结构将无法修改。您确定要发布吗?', - publishAsPipeline: { - name: '知识流水线名称和图标', - namePlaceholder: '请输入此知识流水线的名称。 (必填)', - description: '知识流水线描述', - descriptionPlaceholder: '请输入此知识流水线的描述。 (可选)', - }, - testRun: '测试运行', - preparingDataSource: '准备数据源', - reRun: '重新运行', - processing: '处理中', - }, - inputField: { - create: '创建用户输入字段', - manage: '管理', - }, - publishToast: { - title: '此知识流水线尚未发布', - desc: '当知识流水线未发布时,您可以修改知识库节点中的分块结构,知识流水线编排和更改将自动保存为草稿。', - }, - result: { - resultPreview: { - loading: '处理中...请稍后', - error: '执行过程中出现错误', - viewDetails: '查看详情', - footerTip: '在测试运行模式下,最多预览 {{count}} 个分段', - }, - }, - ragToolSuggestions: { - title: 'RAG 工具推荐', - noRecommendationPlugins: '暂无推荐插件,更多插件请在 Marketplace 中查找', - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/plugin-tags.json b/web/i18n/zh-Hans/plugin-tags.json new file mode 100644 index 0000000000..60efd13a4e --- /dev/null +++ b/web/i18n/zh-Hans/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "allTags": "所有标签", + "searchTags": "搜索标签", + "tags": { + "agent": "Agent", + "rag": "RAG", + "search": "搜索", + "image": "图片", + "videos": "视频", + "weather": "天气", + "finance": "金融", + "design": "设计", + "travel": "旅行", + "social": "社交", + "news": "新闻", + "medical": "医疗", + "productivity": "生产力", + "education": "教育", + "business": "商业", + "entertainment": "娱乐", + "utilities": "工具", + "other": "其他" + } +} diff --git a/web/i18n/zh-Hans/plugin-tags.ts b/web/i18n/zh-Hans/plugin-tags.ts deleted file mode 100644 index eca233306e..0000000000 --- a/web/i18n/zh-Hans/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - allTags: '所有标签', - searchTags: '搜索标签', - tags: { - agent: 'Agent', - rag: 'RAG', - search: '搜索', - image: '图片', - videos: '视频', - weather: '天气', - finance: '金融', - design: '设计', - travel: '旅行', - social: '社交', - news: '新闻', - medical: '医疗', - productivity: '生产力', - education: '教育', - business: '商业', - entertainment: '娱乐', - utilities: '工具', - other: '其他', - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/plugin-trigger.json b/web/i18n/zh-Hans/plugin-trigger.json new file mode 100644 index 0000000000..fafb1cf70d --- /dev/null +++ b/web/i18n/zh-Hans/plugin-trigger.json @@ -0,0 +1,185 @@ +{ + "subscription": { + "title": "订阅", + "listNum": "{{num}} 个订阅", + "empty": { + "title": "暂无订阅", + "button": "新建订阅" + }, + "createButton": { + "oauth": "通过 OAuth 新建订阅", + "apiKey": "通过 API Key 新建订阅", + "manual": "粘贴 URL 以创建新订阅" + }, + "createSuccess": "订阅创建成功", + "createFailed": "订阅创建失败", + "maxCount": "最多 {{num}} 个订阅", + "selectPlaceholder": "选择订阅", + "noSubscriptionSelected": "未选择订阅", + "subscriptionRemoved": "订阅已移除", + "list": { + "title": "订阅列表", + "addButton": "添加", + "tip": "通过订阅接收事件", + "item": { + "enabled": "已启用", + "disabled": "已禁用", + "credentialType": { + "api_key": "API密钥", + "oauth2": "OAuth", + "unauthorized": "手动" + }, + "actions": { + "delete": "删除", + "deleteConfirm": { + "title": "删除 {{name}}?", + "success": "订阅 {{name}} 删除成功", + "error": "订阅 {{name}} 删除失败", + "content": "删除后,该订阅将无法恢复,请确认。", + "contentWithApps": "该订阅正在被 {{count}} 个应用使用,删除它将导致这些应用停止接收订阅事件。", + "confirm": "确认删除", + "cancel": "取消", + "confirmInputWarning": "请输入正确的名称确认。", + "confirmInputPlaceholder": "输入 \"{{name}}\" 确认", + "confirmInputTip": "请输入 “{{name}}” 确认:" + } + }, + "status": { + "active": "活跃", + "inactive": "非活跃" + }, + "usedByNum": "被 {{num}} 个工作流使用", + "noUsed": "未被工作流使用" + } + }, + "addType": { + "title": "添加订阅", + "description": "选择创建触发器订阅的方式", + "options": { + "apikey": { + "title": "通过 API Key 创建", + "description": "使用 API 凭据自动创建订阅" + }, + "oauth": { + "title": "通过 OAuth 创建", + "description": "与第三方平台授权以创建订阅", + "clientSettings": "OAuth 客户端设置", + "clientTitle": "OAuth 客户端", + "default": "默认", + "custom": "自定义" + }, + "manual": { + "title": "手动设置", + "description": "粘贴 URL 以创建新订阅", + "tip": "手动配置 URL 到第三方平台" + } + } + } + }, + "modal": { + "steps": { + "verify": "验证", + "configuration": "配置" + }, + "common": { + "cancel": "取消", + "back": "返回", + "next": "下一步", + "create": "创建", + "verify": "验证", + "authorize": "授权", + "creating": "创建中...", + "verifying": "验证中...", + "authorizing": "授权中..." + }, + "oauthRedirectInfo": "由于未找到此工具提供方的系统客户端密钥,需要手动设置,对于 redirect_uri,请使用", + "apiKey": { + "title": "通过 API Key 创建", + "verify": { + "title": "验证凭据", + "description": "请提供您的 API 凭据以验证访问权限", + "error": "凭据验证失败,请检查您的 API 密钥。", + "success": "凭据验证成功" + }, + "configuration": { + "title": "配置订阅", + "description": "设置您的订阅参数" + } + }, + "oauth": { + "title": "通过 OAuth 创建", + "authorization": { + "title": "OAuth 授权", + "description": "授权 Dify 访问您的账户", + "redirectUrl": "重定向 URL", + "redirectUrlHelp": "在您的 OAuth 应用配置中使用此 URL", + "authorizeButton": "使用 {{provider}} 授权", + "waitingAuth": "等待授权中...", + "authSuccess": "授权成功", + "authFailed": "获取 OAuth 授权信息失败", + "waitingJump": "已授权,待跳转" + }, + "configuration": { + "title": "配置订阅", + "description": "授权完成后设置您的订阅参数", + "success": "OAuth 配置成功", + "failed": "OAuth 配置失败" + }, + "remove": { + "success": "OAuth 移除成功", + "failed": "OAuth 移除失败" + }, + "save": { + "success": "OAuth 配置保存成功" + } + }, + "manual": { + "title": "手动设置", + "description": "手动配置您的 Webhook 订阅", + "logs": { + "title": "请求日志", + "request": "请求", + "loading": "等待 {{pluginName}} 的请求..." + } + }, + "form": { + "subscriptionName": { + "label": "订阅名称", + "placeholder": "输入订阅名称", + "required": "订阅名称为必填项" + }, + "callbackUrl": { + "label": "回调 URL", + "description": "此 URL 将接收Webhook事件", + "tooltip": "填写能被触发器提供方访问的公网地址,用于接收回调请求。", + "placeholder": "生成中...", + "privateAddressWarning": "此 URL 似乎是一个内部地址,可能会导致 Webhook 请求失败。" + } + }, + "errors": { + "createFailed": "创建订阅失败", + "verifyFailed": "验证凭据失败", + "authFailed": "授权失败", + "networkError": "网络错误,请重试", + "updateFailed": "更新订阅失败" + } + }, + "events": { + "title": "可用事件", + "description": "此触发器插件可以订阅的事件", + "empty": "没有可用事件", + "event": "事件", + "events": "事件", + "actionNum": "包含 {{num}} 个 {{event}}", + "item": { + "parameters": "{{count}}个参数", + "noParameters": "暂无参数" + }, + "output": "输出" + }, + "node": { + "status": { + "warning": "未连接" + } + } +} diff --git a/web/i18n/zh-Hans/plugin-trigger.ts b/web/i18n/zh-Hans/plugin-trigger.ts deleted file mode 100644 index 4f31f517eb..0000000000 --- a/web/i18n/zh-Hans/plugin-trigger.ts +++ /dev/null @@ -1,187 +0,0 @@ -const translation = { - subscription: { - title: '订阅', - listNum: '{{num}} 个订阅', - empty: { - title: '暂无订阅', - button: '新建订阅', - }, - createButton: { - oauth: '通过 OAuth 新建订阅', - apiKey: '通过 API Key 新建订阅', - manual: '粘贴 URL 以创建新订阅', - }, - createSuccess: '订阅创建成功', - createFailed: '订阅创建失败', - maxCount: '最多 {{num}} 个订阅', - selectPlaceholder: '选择订阅', - noSubscriptionSelected: '未选择订阅', - subscriptionRemoved: '订阅已移除', - list: { - title: '订阅列表', - addButton: '添加', - tip: '通过订阅接收事件', - item: { - enabled: '已启用', - disabled: '已禁用', - credentialType: { - api_key: 'API密钥', - oauth2: 'OAuth', - unauthorized: '手动', - }, - actions: { - delete: '删除', - deleteConfirm: { - title: '删除 {{name}}?', - success: '订阅 {{name}} 删除成功', - error: '订阅 {{name}} 删除失败', - content: '删除后,该订阅将无法恢复,请确认。', - contentWithApps: '该订阅正在被 {{count}} 个应用使用,删除它将导致这些应用停止接收订阅事件。', - confirm: '确认删除', - cancel: '取消', - confirmInputWarning: '请输入正确的名称确认。', - confirmInputPlaceholder: '输入 "{{name}}" 确认', - confirmInputTip: '请输入 “{{name}}” 确认:', - }, - }, - status: { - active: '活跃', - inactive: '非活跃', - }, - usedByNum: '被 {{num}} 个工作流使用', - noUsed: '未被工作流使用', - }, - }, - addType: { - title: '添加订阅', - description: '选择创建触发器订阅的方式', - options: { - apikey: { - title: '通过 API Key 创建', - description: '使用 API 凭据自动创建订阅', - }, - oauth: { - title: '通过 OAuth 创建', - description: '与第三方平台授权以创建订阅', - clientSettings: 'OAuth 客户端设置', - clientTitle: 'OAuth 客户端', - default: '默认', - custom: '自定义', - }, - manual: { - title: '手动设置', - description: '粘贴 URL 以创建新订阅', - tip: '手动配置 URL 到第三方平台', - }, - }, - }, - }, - modal: { - steps: { - verify: '验证', - configuration: '配置', - }, - common: { - cancel: '取消', - back: '返回', - next: '下一步', - create: '创建', - verify: '验证', - authorize: '授权', - creating: '创建中...', - verifying: '验证中...', - authorizing: '授权中...', - }, - oauthRedirectInfo: '由于未找到此工具提供方的系统客户端密钥,需要手动设置,对于 redirect_uri,请使用', - apiKey: { - title: '通过 API Key 创建', - verify: { - title: '验证凭据', - description: '请提供您的 API 凭据以验证访问权限', - error: '凭据验证失败,请检查您的 API 密钥。', - success: '凭据验证成功', - }, - configuration: { - title: '配置订阅', - description: '设置您的订阅参数', - }, - }, - oauth: { - title: '通过 OAuth 创建', - authorization: { - title: 'OAuth 授权', - description: '授权 Dify 访问您的账户', - redirectUrl: '重定向 URL', - redirectUrlHelp: '在您的 OAuth 应用配置中使用此 URL', - authorizeButton: '使用 {{provider}} 授权', - waitingAuth: '等待授权中...', - authSuccess: '授权成功', - authFailed: '获取 OAuth 授权信息失败', - waitingJump: '已授权,待跳转', - }, - configuration: { - title: '配置订阅', - description: '授权完成后设置您的订阅参数', - success: 'OAuth 配置成功', - failed: 'OAuth 配置失败', - }, - remove: { - success: 'OAuth 移除成功', - failed: 'OAuth 移除失败', - }, - save: { - success: 'OAuth 配置保存成功', - }, - }, - manual: { - title: '手动设置', - description: '手动配置您的 Webhook 订阅', - logs: { - title: '请求日志', - request: '请求', - loading: '等待 {{pluginName}} 的请求...', - }, - }, - form: { - subscriptionName: { - label: '订阅名称', - placeholder: '输入订阅名称', - required: '订阅名称为必填项', - }, - callbackUrl: { - label: '回调 URL', - description: '此 URL 将接收Webhook事件', - tooltip: '填写能被触发器提供方访问的公网地址,用于接收回调请求。', - placeholder: '生成中...', - privateAddressWarning: '此 URL 似乎是一个内部地址,可能会导致 Webhook 请求失败。', - }, - }, - errors: { - createFailed: '创建订阅失败', - verifyFailed: '验证凭据失败', - authFailed: '授权失败', - networkError: '网络错误,请重试', - updateFailed: '更新订阅失败', - }, - }, - events: { - title: '可用事件', - description: '此触发器插件可以订阅的事件', - empty: '没有可用事件', - event: '事件', - events: '事件', - actionNum: '包含 {{num}} 个 {{event}}', - item: { - parameters: '{{count}}个参数', - noParameters: '暂无参数', - }, - output: '输出', - }, - node: { - status: { - warning: '未连接', - }, - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/plugin.json b/web/i18n/zh-Hans/plugin.json new file mode 100644 index 0000000000..946d3e68bd --- /dev/null +++ b/web/i18n/zh-Hans/plugin.json @@ -0,0 +1,323 @@ +{ + "metadata": { + "title": "插件" + }, + "category": { + "all": "全部", + "models": "模型", + "tools": "工具", + "agents": "Agent 策略", + "extensions": "扩展", + "triggers": "触发器", + "bundles": "插件集", + "datasources": "数据源" + }, + "categorySingle": { + "model": "模型", + "tool": "工具", + "agent": "Agent 策略", + "extension": "扩展", + "trigger": "触发器", + "bundle": "插件集", + "datasource": "数据源" + }, + "search": "搜索", + "allCategories": "所有类别", + "searchCategories": "搜索类别", + "searchPlugins": "搜索插件", + "from": "来自", + "findMoreInMarketplace": "在 Marketplace 中查找更多", + "searchInMarketplace": "在 Marketplace 中搜索", + "fromMarketplace": "来自市场", + "endpointsEnabled": "{{num}} 组端点已启用", + "searchTools": "搜索工具...", + "installPlugin": "安装插件", + "installFrom": "安装源", + "deprecated": "已弃用", + "list": { + "noInstalled": "无已安装的插件", + "notFound": "未找到插件", + "source": { + "marketplace": "从 Marketplace 安装", + "github": "从 GitHub 安装", + "local": "本地插件" + } + }, + "source": { + "marketplace": "Marketplace", + "github": "GitHub", + "local": "本地插件" + }, + "detailPanel": { + "switchVersion": "切换版本", + "categoryTip": { + "marketplace": "从 Marketplace 安装", + "github": "从 Github 安装", + "local": "本地插件", + "debugging": "调试插件" + }, + "operation": { + "install": "安装", + "detail": "详情", + "update": "更新", + "info": "插件信息", + "checkUpdate": "检查更新", + "viewDetail": "查看详情", + "remove": "移除", + "back": "返回" + }, + "actionNum": "包含 {{num}} 个 {{action}}", + "strategyNum": "包含 {{num}} 个 {{strategy}}", + "endpoints": "API 端点", + "endpointsTip": "此插件通过 API 端点提供特定功能,您可以为当前工作区配置多个 API 端点集。", + "endpointsDocLink": "查看文档", + "endpointsEmpty": "点击 '+' 按钮添加 API 端点", + "endpointDisableTip": "停用 API 端点", + "endpointDisableContent": "是否要停用 {{name}} 的 API 端点?", + "endpointDeleteTip": "移除 API 端点", + "endpointDeleteContent": "是否要移除 {{name}} ?", + "endpointModalTitle": "设置 API 端点", + "endpointModalDesc": "完成配置后可使用插件 API 端点提供的功能", + "serviceOk": "服务正常", + "disabled": "停用", + "modelNum": "包含 {{num}} 个模型", + "toolSelector": { + "title": "添加工具", + "toolSetting": "工具设置", + "toolLabel": "工具", + "descriptionLabel": "工具描述", + "descriptionPlaceholder": "简要描述工具目的,例如,获取特定位置的温度。", + "placeholder": "选择工具", + "settings": "用户设置", + "params": "推理配置", + "paramsTip1": "控制 LLM 推理参数。", + "paramsTip2": "当“自动”关闭时,使用默认值。", + "auto": "自动", + "empty": "点击 \"+\" 按钮添加工具。您可以添加多个工具。", + "uninstalledTitle": "工具未安装", + "uninstalledContent": "此插件安装自 本地 / GitHub 仓库,请安装后使用。", + "uninstalledLink": "在插件中管理", + "unsupportedTitle": "不支持的 Action", + "unsupportedContent": "已安装的插件版本不提供这个 action。", + "unsupportedContent2": "点击切换版本", + "unsupportedMCPTool": "当前选定的 Agent 策略插件版本不支持 MCP 工具。" + }, + "configureApp": "应用设置", + "configureModel": "模型设置", + "configureTool": "工具设置", + "deprecation": { + "fullMessage": "由于{{deprecatedReason}},此插件已被弃用,将不再发布新版本。请使用{{-alternativePluginId}}替代。", + "onlyReason": "由于{{deprecatedReason}},此插件已被弃用,将不再发布新版本。", + "noReason": "此插件已被弃用,将不再发布新版本。", + "reason": { + "businessAdjustments": "业务调整", + "ownershipTransferred": "所有权转移", + "noMaintainer": "无人维护" + } + } + }, + "install": "{{num}} 次安装", + "installAction": "安装", + "debugInfo": { + "title": "调试", + "viewDocs": "查看文档" + }, + "privilege": { + "title": "插件偏好", + "whoCanInstall": "谁可以安装和管理插件?", + "whoCanDebug": "谁可以调试插件?", + "everyone": "所有人", + "admins": "管理员", + "noone": "无人" + }, + "autoUpdate": { + "automaticUpdates": "自动更新", + "updateTime": "更新时间", + "specifyPluginsToUpdate": "指定要更新的插件", + "strategy": { + "disabled": { + "name": "禁用", + "description": "插件将不会自动更新" + }, + "fixOnly": { + "name": "仅修复", + "description": "仅自动更新补丁版本(例如,1.0.1 → 1.0.2)。次要版本更改不会触发更新。", + "selectedDescription": "仅自动更新补丁版本" + }, + "latest": { + "name": "最新", + "description": "始终更新到最新版本", + "selectedDescription": "始终更新到最新版本" + } + }, + "updateTimeTitle": "更新时间", + "upgradeMode": { + "all": "更新全部", + "exclude": "排除选定", + "partial": "仅选定" + }, + "upgradeModePlaceholder": { + "exclude": "选定的插件将不会自动更新", + "partial": "仅选定的插件将自动更新。目前未选择任何插件,因此不会自动更新任何插件。" + }, + "excludeUpdate": "以下 {{num}} 个插件将不会自动更新", + "partialUPdate": "仅以下 {{num}} 个插件将自动更新", + "operation": { + "clearAll": "清除所有", + "select": "选择插件" + }, + "nextUpdateTime": "下次自动更新时间: {{time}}", + "pluginDowngradeWarning": { + "title": "插件降级", + "description": "此插件目前已启用自动更新。降级版本可能会导致您的更改在下次自动更新时被覆盖。", + "downgrade": "仍然降级", + "exclude": "从自动更新中排除" + }, + "noPluginPlaceholder": { + "noFound": "未找到插件", + "noInstalled": "未安装插件" + }, + "updateSettings": "更新设置", + "changeTimezone": "要更改时区,请前往设置" + }, + "pluginInfoModal": { + "title": "插件信息", + "repository": "仓库", + "release": "发布版本", + "packageName": "包" + }, + "action": { + "checkForUpdates": "检查更新", + "pluginInfo": "插件信息", + "delete": "移除插件", + "deleteContentLeft": "是否要移除 ", + "deleteContentRight": " 插件?", + "usedInApps": "此插件正在 {{num}} 个应用中使用。" + }, + "installModal": { + "installPlugin": "安装插件", + "installComplete": "安装完成", + "installedSuccessfully": "安装成功", + "installedSuccessfullyDesc": "插件已成功安装。", + "uploadFailed": "上传失败", + "installFailed": "安装失败", + "installFailedDesc": "插件安装失败。", + "install": "安装", + "installing": "安装中...", + "uploadingPackage": "上传 {{packageName}} 中...", + "readyToInstall": "即将安装以下插件", + "readyToInstallPackage": "即将安装以下插件", + "readyToInstallPackages": "即将安装以下 {{num}} 个插件", + "fromTrustSource": "请保证仅从可信源安装插件。", + "dropPluginToInstall": "拖放插件包到此处安装", + "labels": { + "repository": "仓库", + "version": "版本", + "package": "包" + }, + "close": "关闭", + "cancel": "取消", + "back": "返回", + "next": "下一步", + "pluginLoadError": "插件加载错误", + "pluginLoadErrorDesc": "此插件将不会被安装", + "installWarning": "此插件不允许安装。" + }, + "installFromGitHub": { + "installPlugin": "从 GitHub 安装插件", + "updatePlugin": "更新来自 GitHub 的插件", + "installedSuccessfully": "安装成功", + "installFailed": "安装失败", + "uploadFailed": "上传失败", + "gitHubRepo": "GitHub 仓库", + "selectVersion": "选择版本", + "selectVersionPlaceholder": "请选择一个版本", + "installNote": "请确保只从可信源安装插件。", + "selectPackage": "选择包", + "selectPackagePlaceholder": "请选择一个包" + }, + "upgrade": { + "title": "安装插件", + "successfulTitle": "安装成功", + "description": "即将安装以下插件", + "usedInApps": "在 {{num}} 个应用中使用", + "upgrade": "安装", + "upgrading": "安装中...", + "close": "关闭" + }, + "error": { + "inValidGitHubUrl": "无效的 GitHub URL。请输入格式为 https://github.com/owner/repo 的有效 URL", + "fetchReleasesError": "无法获取发布版本。请稍后再试。", + "noReleasesFound": "未找到发布版本。请检查 GitHub 仓库或输入的 URL。" + }, + "marketplace": { + "empower": "助力您的 AI 开发", + "discover": "探索", + "and": "和", + "difyMarketplace": "Dify 市场", + "moreFrom": "更多来自市场", + "noPluginFound": "未找到插件", + "pluginsResult": "{{num}} 个插件结果", + "sortBy": "排序方式", + "sortOption": { + "mostPopular": "最受欢迎", + "recentlyUpdated": "最近更新", + "newlyReleased": "最新发布", + "firstReleased": "首次发布" + }, + "viewMore": "查看更多", + "verifiedTip": "此插件由 Dify 认证", + "partnerTip": "此插件由 Dify 合作伙伴认证" + }, + "task": { + "installing": "正在安装插件", + "installingWithSuccess": "{{installingLength}} 个插件安装中,{{successLength}} 安装成功", + "installingWithError": "{{installingLength}} 个插件安装中,{{successLength}} 安装成功,{{errorLength}} 安装失败", + "installError": "{{errorLength}} 个插件安装失败,点击查看", + "installedError": "{{errorLength}} 个插件安装失败", + "installSuccess": "{{successLength}} 个插件安装成功", + "installed": "已安装", + "clearAll": "清除所有", + "runningPlugins": "正在安装的插件", + "successPlugins": "安装成功的插件", + "errorPlugins": "安装失败的插件" + }, + "requestAPlugin": "申请插件", + "publishPlugins": "发布插件", + "difyVersionNotCompatible": "当前 Dify 版本不兼容该插件,其最低版本要求为 {{minimalDifyVersion}}", + "auth": { + "default": "默认", + "custom": "自定义", + "setDefault": "设为默认", + "useOAuth": "使用 OAuth", + "useOAuthAuth": "使用 OAuth 授权", + "addOAuth": "添加 OAuth", + "setupOAuth": "设置 OAuth 客户端", + "useApi": "使用 API Key", + "addApi": "添加 API Key", + "useApiAuth": "API Key 授权配置", + "useApiAuthDesc": "配置凭据后,工作区内的所有成员在编排应用时都可以使用此工具。", + "oauthClientSettings": "OAuth 客户端设置", + "saveOnly": "仅保存", + "saveAndAuth": "保存并授权", + "authorization": "凭据", + "authorizations": "凭据", + "authorizationName": "凭据名称", + "workspaceDefault": "工作区默认", + "authRemoved": "凭据已移除", + "clientInfo": "由于未找到此工具提供者的系统客户端密钥,因此需要手动设置,对于 redirect_uri,请使用", + "oauthClient": "OAuth 客户端", + "credentialUnavailable": "自定义凭据当前不可用,请联系管理员。", + "credentialUnavailableInButton": "凭据不可用", + "customCredentialUnavailable": "自定义凭据当前不可用", + "unavailable": "不可用", + "connectedWorkspace": "已连接的工作区", + "emptyAuth": "请配置凭据" + }, + "readmeInfo": { + "title": "README", + "needHelpCheckReadme": "需要帮助?查看 README。", + "noReadmeAvailable": "README 文档不可用", + "failedToFetch": "获取 README 文档失败" + } +} diff --git a/web/i18n/zh-Hans/plugin.ts b/web/i18n/zh-Hans/plugin.ts deleted file mode 100644 index 20b238f178..0000000000 --- a/web/i18n/zh-Hans/plugin.ts +++ /dev/null @@ -1,325 +0,0 @@ -const translation = { - metadata: { - title: '插件', - }, - category: { - all: '全部', - models: '模型', - tools: '工具', - agents: 'Agent 策略', - extensions: '扩展', - triggers: '触发器', - bundles: '插件集', - datasources: '数据源', - }, - categorySingle: { - model: '模型', - tool: '工具', - agent: 'Agent 策略', - extension: '扩展', - trigger: '触发器', - bundle: '插件集', - datasource: '数据源', - }, - search: '搜索', - allCategories: '所有类别', - searchCategories: '搜索类别', - searchPlugins: '搜索插件', - from: '来自', - findMoreInMarketplace: '在 Marketplace 中查找更多', - searchInMarketplace: '在 Marketplace 中搜索', - fromMarketplace: '来自市场', - endpointsEnabled: '{{num}} 组端点已启用', - searchTools: '搜索工具...', - installPlugin: '安装插件', - installFrom: '安装源', - deprecated: '已弃用', - list: { - noInstalled: '无已安装的插件', - notFound: '未找到插件', - source: { - marketplace: '从 Marketplace 安装', - github: '从 GitHub 安装', - local: '本地插件', - }, - }, - source: { - marketplace: 'Marketplace', - github: 'GitHub', - local: '本地插件', - }, - detailPanel: { - switchVersion: '切换版本', - categoryTip: { - marketplace: '从 Marketplace 安装', - github: '从 Github 安装', - local: '本地插件', - debugging: '调试插件', - }, - operation: { - install: '安装', - detail: '详情', - update: '更新', - info: '插件信息', - checkUpdate: '检查更新', - viewDetail: '查看详情', - remove: '移除', - back: '返回', - }, - actionNum: '包含 {{num}} 个 {{action}}', - strategyNum: '包含 {{num}} 个 {{strategy}}', - endpoints: 'API 端点', - endpointsTip: '此插件通过 API 端点提供特定功能,您可以为当前工作区配置多个 API 端点集。', - endpointsDocLink: '查看文档', - endpointsEmpty: '点击 \'+\' 按钮添加 API 端点', - endpointDisableTip: '停用 API 端点', - endpointDisableContent: '是否要停用 {{name}} 的 API 端点?', - endpointDeleteTip: '移除 API 端点', - endpointDeleteContent: '是否要移除 {{name}} ?', - endpointModalTitle: '设置 API 端点', - endpointModalDesc: '完成配置后可使用插件 API 端点提供的功能', - serviceOk: '服务正常', - disabled: '停用', - modelNum: '包含 {{num}} 个模型', - toolSelector: { - title: '添加工具', - toolSetting: '工具设置', - toolLabel: '工具', - descriptionLabel: '工具描述', - descriptionPlaceholder: '简要描述工具目的,例如,获取特定位置的温度。', - placeholder: '选择工具', - settings: '用户设置', - params: '推理配置', - paramsTip1: '控制 LLM 推理参数。', - paramsTip2: '当“自动”关闭时,使用默认值。', - auto: '自动', - empty: '点击 "+" 按钮添加工具。您可以添加多个工具。', - uninstalledTitle: '工具未安装', - uninstalledContent: '此插件安装自 本地 / GitHub 仓库,请安装后使用。', - uninstalledLink: '在插件中管理', - unsupportedTitle: '不支持的 Action', - unsupportedContent: '已安装的插件版本不提供这个 action。', - unsupportedContent2: '点击切换版本', - unsupportedMCPTool: '当前选定的 Agent 策略插件版本不支持 MCP 工具。', - }, - configureApp: '应用设置', - configureModel: '模型设置', - configureTool: '工具设置', - deprecation: { - fullMessage: '由于{{deprecatedReason}},此插件已被弃用,将不再发布新版本。请使用{{-alternativePluginId}}替代。', - onlyReason: '由于{{deprecatedReason}},此插件已被弃用,将不再发布新版本。', - noReason: '此插件已被弃用,将不再发布新版本。', - reason: { - businessAdjustments: '业务调整', - ownershipTransferred: '所有权转移', - noMaintainer: '无人维护', - }, - }, - }, - install: '{{num}} 次安装', - installAction: '安装', - debugInfo: { - title: '调试', - viewDocs: '查看文档', - }, - privilege: { - title: '插件偏好', - whoCanInstall: '谁可以安装和管理插件?', - whoCanDebug: '谁可以调试插件?', - everyone: '所有人', - admins: '管理员', - noone: '无人', - }, - autoUpdate: { - automaticUpdates: '自动更新', - updateTime: '更新时间', - specifyPluginsToUpdate: '指定要更新的插件', - strategy: { - disabled: { - name: '禁用', - description: '插件将不会自动更新', - }, - fixOnly: { - name: '仅修复', - description: '仅自动更新补丁版本(例如,1.0.1 → 1.0.2)。次要版本更改不会触发更新。', - selectedDescription: '仅自动更新补丁版本', - }, - latest: { - name: '最新', - description: '始终更新到最新版本', - selectedDescription: '始终更新到最新版本', - }, - }, - updateTimeTitle: '更新时间', - upgradeMode: { - all: '更新全部', - exclude: '排除选定', - partial: '仅选定', - }, - upgradeModePlaceholder: { - exclude: '选定的插件将不会自动更新', - partial: '仅选定的插件将自动更新。目前未选择任何插件,因此不会自动更新任何插件。', - }, - excludeUpdate: '以下 {{num}} 个插件将不会自动更新', - partialUPdate: '仅以下 {{num}} 个插件将自动更新', - operation: { - clearAll: '清除所有', - select: '选择插件', - }, - nextUpdateTime: '下次自动更新时间: {{time}}', - pluginDowngradeWarning: { - title: '插件降级', - description: '此插件目前已启用自动更新。降级版本可能会导致您的更改在下次自动更新时被覆盖。', - downgrade: '仍然降级', - exclude: '从自动更新中排除', - }, - noPluginPlaceholder: { - noFound: '未找到插件', - noInstalled: '未安装插件', - }, - updateSettings: '更新设置', - changeTimezone: '要更改时区,请前往设置', - }, - pluginInfoModal: { - title: '插件信息', - repository: '仓库', - release: '发布版本', - packageName: '包', - }, - action: { - checkForUpdates: '检查更新', - pluginInfo: '插件信息', - delete: '移除插件', - deleteContentLeft: '是否要移除 ', - deleteContentRight: ' 插件?', - usedInApps: '此插件正在 {{num}} 个应用中使用。', - }, - installModal: { - installPlugin: '安装插件', - installComplete: '安装完成', - installedSuccessfully: '安装成功', - installedSuccessfullyDesc: '插件已成功安装。', - uploadFailed: '上传失败', - installFailed: '安装失败', - installFailedDesc: '插件安装失败。', - install: '安装', - installing: '安装中...', - uploadingPackage: '上传 {{packageName}} 中...', - readyToInstall: '即将安装以下插件', - readyToInstallPackage: '即将安装以下插件', - readyToInstallPackages: '即将安装以下 {{num}} 个插件', - fromTrustSource: '请保证仅从可信源安装插件。', - dropPluginToInstall: '拖放插件包到此处安装', - labels: { - repository: '仓库', - version: '版本', - package: '包', - }, - close: '关闭', - cancel: '取消', - back: '返回', - next: '下一步', - pluginLoadError: '插件加载错误', - pluginLoadErrorDesc: '此插件将不会被安装', - installWarning: '此插件不允许安装。', - }, - installFromGitHub: { - installPlugin: '从 GitHub 安装插件', - updatePlugin: '更新来自 GitHub 的插件', - installedSuccessfully: '安装成功', - installFailed: '安装失败', - uploadFailed: '上传失败', - gitHubRepo: 'GitHub 仓库', - selectVersion: '选择版本', - selectVersionPlaceholder: '请选择一个版本', - installNote: '请确保只从可信源安装插件。', - selectPackage: '选择包', - selectPackagePlaceholder: '请选择一个包', - }, - upgrade: { - title: '安装插件', - successfulTitle: '安装成功', - description: '即将安装以下插件', - usedInApps: '在 {{num}} 个应用中使用', - upgrade: '安装', - upgrading: '安装中...', - close: '关闭', - }, - error: { - inValidGitHubUrl: '无效的 GitHub URL。请输入格式为 https://github.com/owner/repo 的有效 URL', - fetchReleasesError: '无法获取发布版本。请稍后再试。', - noReleasesFound: '未找到发布版本。请检查 GitHub 仓库或输入的 URL。', - }, - marketplace: { - empower: '助力您的 AI 开发', - discover: '探索', - and: '和', - difyMarketplace: 'Dify 市场', - moreFrom: '更多来自市场', - noPluginFound: '未找到插件', - pluginsResult: '{{num}} 个插件结果', - sortBy: '排序方式', - sortOption: { - mostPopular: '最受欢迎', - recentlyUpdated: '最近更新', - newlyReleased: '最新发布', - firstReleased: '首次发布', - }, - viewMore: '查看更多', - verifiedTip: '此插件由 Dify 认证', - partnerTip: '此插件由 Dify 合作伙伴认证', - }, - task: { - installing: '正在安装插件', - installingWithSuccess: '{{installingLength}} 个插件安装中,{{successLength}} 安装成功', - installingWithError: '{{installingLength}} 个插件安装中,{{successLength}} 安装成功,{{errorLength}} 安装失败', - installError: '{{errorLength}} 个插件安装失败,点击查看', - installedError: '{{errorLength}} 个插件安装失败', - installSuccess: '{{successLength}} 个插件安装成功', - installed: '已安装', - clearAll: '清除所有', - runningPlugins: '正在安装的插件', - successPlugins: '安装成功的插件', - errorPlugins: '安装失败的插件', - }, - requestAPlugin: '申请插件', - publishPlugins: '发布插件', - difyVersionNotCompatible: '当前 Dify 版本不兼容该插件,其最低版本要求为 {{minimalDifyVersion}}', - auth: { - default: '默认', - custom: '自定义', - setDefault: '设为默认', - useOAuth: '使用 OAuth', - useOAuthAuth: '使用 OAuth 授权', - addOAuth: '添加 OAuth', - setupOAuth: '设置 OAuth 客户端', - useApi: '使用 API Key', - addApi: '添加 API Key', - useApiAuth: 'API Key 授权配置', - useApiAuthDesc: '配置凭据后,工作区内的所有成员在编排应用时都可以使用此工具。', - oauthClientSettings: 'OAuth 客户端设置', - saveOnly: '仅保存', - saveAndAuth: '保存并授权', - authorization: '凭据', - authorizations: '凭据', - authorizationName: '凭据名称', - workspaceDefault: '工作区默认', - authRemoved: '凭据已移除', - clientInfo: '由于未找到此工具提供者的系统客户端密钥,因此需要手动设置,对于 redirect_uri,请使用', - oauthClient: 'OAuth 客户端', - credentialUnavailable: '自定义凭据当前不可用,请联系管理员。', - credentialUnavailableInButton: '凭据不可用', - customCredentialUnavailable: '自定义凭据当前不可用', - unavailable: '不可用', - connectedWorkspace: '已连接的工作区', - emptyAuth: '请配置凭据', - }, - readmeInfo: { - title: 'README', - needHelpCheckReadme: '需要帮助?查看 README。', - noReadmeAvailable: 'README 文档不可用', - failedToFetch: '获取 README 文档失败', - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/register.json b/web/i18n/zh-Hans/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/zh-Hans/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/zh-Hans/register.ts b/web/i18n/zh-Hans/register.ts deleted file mode 100644 index 928649474b..0000000000 --- a/web/i18n/zh-Hans/register.ts +++ /dev/null @@ -1,4 +0,0 @@ -const translation = { -} - -export default translation diff --git a/web/i18n/zh-Hans/run-log.json b/web/i18n/zh-Hans/run-log.json new file mode 100644 index 0000000000..45d1db504a --- /dev/null +++ b/web/i18n/zh-Hans/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "输入", + "result": "结果", + "detail": "详情", + "tracing": "追踪", + "resultPanel": { + "status": "状态", + "time": "运行时间", + "tokens": "总 token 数" + }, + "meta": { + "title": "元数据", + "status": "状态", + "version": "版本", + "executor": "执行人", + "startTime": "开始时间", + "time": "运行时间", + "tokens": "总 token 数", + "steps": "运行步数" + }, + "resultEmpty": { + "title": "本次运行仅输出 JSON 格式,", + "tipLeft": "请转到", + "link": "详细信息面板", + "tipRight": "查看它。" + }, + "actionLogs": "Action 日志", + "circularInvocationTip": "当前工作流中存在工具/节点的循环调用。" +} diff --git a/web/i18n/zh-Hans/run-log.ts b/web/i18n/zh-Hans/run-log.ts deleted file mode 100644 index 0cf49b03fd..0000000000 --- a/web/i18n/zh-Hans/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -const translation = { - input: '输入', - result: '结果', - detail: '详情', - tracing: '追踪', - resultPanel: { - status: '状态', - time: '运行时间', - tokens: '总 token 数', - }, - meta: { - title: '元数据', - status: '状态', - version: '版本', - executor: '执行人', - startTime: '开始时间', - time: '运行时间', - tokens: '总 token 数', - steps: '运行步数', - }, - resultEmpty: { - title: '本次运行仅输出 JSON 格式,', - tipLeft: '请转到', - link: '详细信息面板', - tipRight: '查看它。', - }, - actionLogs: 'Action 日志', - circularInvocationTip: '当前工作流中存在工具/节点的循环调用。', -} - -export default translation diff --git a/web/i18n/zh-Hans/share.json b/web/i18n/zh-Hans/share.json new file mode 100644 index 0000000000..d153584f8e --- /dev/null +++ b/web/i18n/zh-Hans/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "", + "appUnavailable": "应用不可用", + "appUnknownError": "应用不可用" + }, + "chat": { + "newChat": "开启新对话", + "newChatTip": "已在新对话中", + "chatSettingsTitle": "新对话设置", + "chatFormTip": "对话开始后,对话设置将无法修改。", + "pinnedTitle": "已置顶", + "unpinnedTitle": "对话列表", + "newChatDefaultName": "新的对话", + "resetChat": "重置对话", + "viewChatSettings": "查看对话设置", + "poweredBy": "Powered by", + "prompt": "提示词", + "privatePromptConfigTitle": "对话设置", + "publicPromptConfigTitle": "对话前提示词", + "configStatusDes": "开始前,您可以修改对话设置", + "configDisabled": "此次会话已使用上次会话表单", + "startChat": "开始对话", + "privacyPolicyLeft": "请阅读由该应用开发者提供的", + "privacyPolicyMiddle": "隐私政策", + "privacyPolicyRight": "。", + "deleteConversation": { + "title": "删除对话", + "content": "您确定要删除此对话吗?" + }, + "tryToSolve": "尝试解决", + "temporarySystemIssue": "抱歉,临时系统问题。", + "expand": "展开", + "collapse": "折叠" + }, + "generation": { + "tabs": { + "create": "运行一次", + "batch": "批量运行", + "saved": "已保存" + }, + "savedNoData": { + "title": "您还没有保存结果!", + "description": "开始生成内容,您可以在这里找到保存的结果。", + "startCreateContent": "开始生成内容" + }, + "title": "AI 智能书写", + "queryTitle": "查询内容", + "completionResult": "生成结果", + "queryPlaceholder": "请输入文本内容", + "run": "运行", + "execution": "运行", + "executions": "{{num}} 次运行", + "copy": "拷贝", + "resultTitle": "AI 书写", + "noData": "AI 会在这里给你惊喜。", + "csvUploadTitle": "将您的 CSV 文件拖放到此处,或", + "browse": "浏览", + "csvStructureTitle": "CSV 文件必须符合以下结构:", + "downloadTemplate": "下载模板", + "field": "", + "batchFailed": { + "info": "{{num}} 次运行失败", + "retry": "重试", + "outputPlaceholder": "无输出内容" + }, + "errorMsg": { + "empty": "上传文件的内容不能为空", + "fileStructNotMatch": "上传文件的内容与结构不匹配", + "emptyLine": "第 {{rowIndex}} 行的内容为空", + "invalidLine": "第 {{rowIndex}} 行:{{varName}}值必填", + "moreThanMaxLengthLine": "第 {{rowIndex}} 行:{{varName}}值超过最大长度 {{maxLength}}", + "atLeastOne": "上传文件的内容不能少于一条" + }, + "stopRun": "停止运行" + }, + "login": { + "backToHome": "返回首页" + } +} diff --git a/web/i18n/zh-Hans/share.ts b/web/i18n/zh-Hans/share.ts deleted file mode 100644 index db67295b02..0000000000 --- a/web/i18n/zh-Hans/share.ts +++ /dev/null @@ -1,82 +0,0 @@ -const translation = { - common: { - welcome: '', - appUnavailable: '应用不可用', - appUnknownError: '应用不可用', - }, - chat: { - newChat: '开启新对话', - newChatTip: '已在新对话中', - chatSettingsTitle: '新对话设置', - chatFormTip: '对话开始后,对话设置将无法修改。', - pinnedTitle: '已置顶', - unpinnedTitle: '对话列表', - newChatDefaultName: '新的对话', - resetChat: '重置对话', - viewChatSettings: '查看对话设置', - poweredBy: 'Powered by', - prompt: '提示词', - privatePromptConfigTitle: '对话设置', - publicPromptConfigTitle: '对话前提示词', - configStatusDes: '开始前,您可以修改对话设置', - configDisabled: '此次会话已使用上次会话表单', - startChat: '开始对话', - privacyPolicyLeft: '请阅读由该应用开发者提供的', - privacyPolicyMiddle: '隐私政策', - privacyPolicyRight: '。', - deleteConversation: { - title: '删除对话', - content: '您确定要删除此对话吗?', - }, - tryToSolve: '尝试解决', - temporarySystemIssue: '抱歉,临时系统问题。', - expand: '展开', - collapse: '折叠', - }, - generation: { - tabs: { - create: '运行一次', - batch: '批量运行', - saved: '已保存', - }, - savedNoData: { - title: '您还没有保存结果!', - description: '开始生成内容,您可以在这里找到保存的结果。', - startCreateContent: '开始生成内容', - }, - title: 'AI 智能书写', - queryTitle: '查询内容', - completionResult: '生成结果', - queryPlaceholder: '请输入文本内容', - run: '运行', - execution: '运行', - executions: '{{num}} 次运行', - copy: '拷贝', - resultTitle: 'AI 书写', - noData: 'AI 会在这里给你惊喜。', - csvUploadTitle: '将您的 CSV 文件拖放到此处,或', - browse: '浏览', - csvStructureTitle: 'CSV 文件必须符合以下结构:', - downloadTemplate: '下载模板', - field: '', - batchFailed: { - info: '{{num}} 次运行失败', - retry: '重试', - outputPlaceholder: '无输出内容', - }, - errorMsg: { - empty: '上传文件的内容不能为空', - fileStructNotMatch: '上传文件的内容与结构不匹配', - emptyLine: '第 {{rowIndex}} 行的内容为空', - invalidLine: '第 {{rowIndex}} 行:{{varName}}值必填', - moreThanMaxLengthLine: '第 {{rowIndex}} 行:{{varName}}值超过最大长度 {{maxLength}}', - atLeastOne: '上传文件的内容不能少于一条', - }, - stopRun: '停止运行', - }, - login: { - backToHome: '返回首页', - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/time.json b/web/i18n/zh-Hans/time.json new file mode 100644 index 0000000000..4877cf72b5 --- /dev/null +++ b/web/i18n/zh-Hans/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Sun": "日", + "Mon": "一", + "Tue": "二", + "Wed": "三", + "Thu": "四", + "Fri": "五", + "Sat": "六" + }, + "months": { + "January": "一月", + "February": "二月", + "March": "三月", + "April": "四月", + "May": "五月", + "June": "六月", + "July": "七月", + "August": "八月", + "September": "九月", + "October": "十月", + "November": "十一月", + "December": "十二月" + }, + "operation": { + "now": "此刻", + "ok": "确定", + "cancel": "取消", + "pickDate": "选择日期" + }, + "title": { + "pickTime": "选择时间" + }, + "defaultPlaceholder": "请选择时间...", + "dateFormats": { + "display": "YYYY年MM月DD日", + "displayWithTime": "YYYY年MM月DD日 HH:mm", + "input": "YYYY-MM-DD", + "output": "YYYY-MM-DD", + "outputWithTime": "YYYY-MM-DDTHH:mm:ss.SSSZ" + } +} diff --git a/web/i18n/zh-Hans/time.ts b/web/i18n/zh-Hans/time.ts deleted file mode 100644 index 74b68da1b7..0000000000 --- a/web/i18n/zh-Hans/time.ts +++ /dev/null @@ -1,45 +0,0 @@ -const translation = { - daysInWeek: { - Sun: '日', - Mon: '一', - Tue: '二', - Wed: '三', - Thu: '四', - Fri: '五', - Sat: '六', - }, - months: { - January: '一月', - February: '二月', - March: '三月', - April: '四月', - May: '五月', - June: '六月', - July: '七月', - August: '八月', - September: '九月', - October: '十月', - November: '十一月', - December: '十二月', - }, - operation: { - now: '此刻', - ok: '确定', - cancel: '取消', - pickDate: '选择日期', - }, - title: { - pickTime: '选择时间', - }, - defaultPlaceholder: '请选择时间...', - // Date format configurations - dateFormats: { - display: 'YYYY年MM月DD日', - displayWithTime: 'YYYY年MM月DD日 HH:mm', - input: 'YYYY-MM-DD', - output: 'YYYY-MM-DD', - outputWithTime: 'YYYY-MM-DDTHH:mm:ss.SSSZ', - }, -} - -export default translation diff --git a/web/i18n/zh-Hans/tools.json b/web/i18n/zh-Hans/tools.json new file mode 100644 index 0000000000..2aaa0fff6f --- /dev/null +++ b/web/i18n/zh-Hans/tools.json @@ -0,0 +1,263 @@ +{ + "title": "工具", + "createCustomTool": "创建自定义工具", + "customToolTip": "了解更多关于 Dify 自定义工具的信息", + "type": { + "builtIn": "工具", + "custom": "自定义", + "workflow": "工作流" + }, + "contribute": { + "line1": "我有兴趣为 ", + "line2": "Dify 贡献工具。", + "viewGuide": "查看指南" + }, + "author": "作者", + "auth": { + "authorized": "已授权", + "unauthorized": "未授权", + "setup": "要使用请先授权", + "setupModalTitle": "设置授权", + "setupModalTitleDescription": "配置凭据后,工作区中的所有成员都可以在编排应用程序时使用此工具。" + }, + "includeToolNum": "包含 {{num}} 个 {{action}}", + "addToolModal": { + "type": "类型", + "category": "类别", + "added": "已添加", + "custom": { + "title": "没有可用的自定义工具", + "tip": "创建自定义工具" + }, + "workflow": { + "title": "没有可用的工作流工具", + "tip": "在工作室中发布工作流作为工具" + }, + "mcp": { + "title": "没有可用的 MCP 工具", + "tip": "添加 MCP 服务器" + }, + "agent": { + "title": "没有可用的 agent 策略" + } + }, + "createTool": { + "title": "创建自定义工具", + "editAction": "编辑", + "editTitle": "编辑自定义工具", + "name": "名称", + "toolNamePlaceHolder": "输入工具名称", + "nameForToolCall": "工具调用名称", + "nameForToolCallPlaceHolder": "用于机器识别,如 getCurrentWeather, list_pets", + "nameForToolCallTip": "仅支持数字、字母、下划线。", + "description": "工具描述", + "descriptionPlaceholder": "工具用途的简要描述,例如获取特定位置的温度。", + "schema": "Schema", + "schemaPlaceHolder": "在此处输入您的 OpenAPI schema", + "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 或设置为自定义值", + "queryParam": "查询参数", + "queryParamTooltip": "用于传递 API 密钥查询参数的名称,如 \"https://example.com/test?key=API_KEY\" 中的 \"key\"参数", + "types": { + "none": "无", + "api_key_header": "请求头", + "api_key_query": "查询参数", + "apiKeyPlaceholder": "HTTP 头部名称,用于传递 API Key", + "apiValuePlaceholder": "输入 API Key", + "queryParamPlaceholder": "查询参数名称,用于传递 API Key" + }, + "key": "键", + "value": "值" + }, + "authHeaderPrefix": { + "title": "鉴权头部前缀", + "types": { + "basic": "Basic", + "bearer": "Bearer", + "custom": "Custom" + } + }, + "privacyPolicy": "隐私协议", + "privacyPolicyPlaceholder": "请输入隐私协议", + "toolInput": { + "title": "工具入参", + "name": "名称", + "required": "必须", + "method": "方式", + "methodSetting": "用户输入", + "methodSettingTip": "用户在工具配置中填写", + "methodParameter": "LLM 填入", + "methodParameterTip": "LLM 在推理过程中填写", + "label": "标签", + "labelPlaceholder": "选择标签 (可选)", + "description": "描述", + "descriptionPlaceholder": "参数意义的描述" + }, + "toolOutput": { + "title": "工具出参", + "name": "名称", + "reserved": "预留", + "reservedParameterDuplicateTip": "text、json、files 是预留变量,这些名称的变量不能出现在 output_schema 中。", + "description": "描述" + }, + "customDisclaimer": "自定义免责声明", + "customDisclaimerPlaceholder": "请输入自定义免责声明", + "confirmTitle": "确认保存?", + "confirmTip": "发布新的工具版本可能会影响该工具已关联的应用", + "deleteToolConfirmTitle": "删除这个工具?", + "deleteToolConfirmContent": "删除工具是不可逆的。用户将无法再访问您的工具。" + }, + "test": { + "title": "测试", + "parametersValue": "参数和值", + "parameters": "参数", + "value": "值", + "testResult": "测试结果", + "testResultPlaceholder": "测试结果将显示在这里" + }, + "thought": { + "using": "正在使用", + "used": "已使用", + "requestTitle": "请求", + "responseTitle": "响应" + }, + "setBuiltInTools": { + "info": "信息", + "setting": "设置", + "toolDescription": "工具描述", + "parameters": "参数", + "string": "字符串", + "number": "数字", + "file": "文件", + "required": "必填", + "infoAndSetting": "信息和设置" + }, + "noCustomTool": { + "title": "没有自定义工具!", + "content": "在此统一添加和管理你的自定义工具,方便构建应用时使用。", + "createTool": "创建工具" + }, + "noSearchRes": { + "title": "抱歉,没有结果!", + "content": "我们找不到任何与您的搜索相匹配的工具。", + "reset": "重置搜索" + }, + "builtInPromptTitle": "提示词", + "toolRemoved": "工具已被移除", + "notAuthorized": "工具未授权", + "howToGet": "如何获取", + "openInStudio": "在工作室中打开", + "toolNameUsageTip": "工具调用名称,用于 Agent 推理和提示词", + "copyToolName": "复制名称", + "noTools": "没有工具", + "mcp": { + "create": { + "cardTitle": "添加 MCP 服务 (HTTP)", + "cardLink": "了解更多关于 MCP 服务集成的信息" + }, + "noConfigured": "未配置", + "updateTime": "更新于", + "toolsCount": "{{count}} 个工具", + "noTools": "没有可用的工具", + "modal": { + "title": "添加 MCP 服务 (HTTP)", + "editTitle": "修改 MCP 服务 (HTTP)", + "name": "名称和图标", + "namePlaceholder": "命名你的 MCP 服务", + "serverUrl": "服务端点 URL", + "serverUrlPlaceholder": "服务端点的 URL", + "serverUrlWarning": "修改服务端点 URL 可能会影响使用当前 MCP 的应用。", + "serverIdentifier": "服务器标识符", + "serverIdentifierTip": "工作空间内服务器的唯一标识。支持小写字母、数字、下划线和连字符,最多 24 个字符。", + "serverIdentifierPlaceholder": "服务器唯一标识,例如 my-mcp-server", + "serverIdentifierWarning": "更改服务器标识符后,现有应用将无法识别此服务器", + "headers": "请求头", + "headersTip": "发送到 MCP 服务器的额外 HTTP 请求头", + "headerKey": "请求头名称", + "headerValue": "请求头值", + "headerKeyPlaceholder": "例如:Authorization", + "headerValuePlaceholder": "例如:Bearer token123", + "addHeader": "添加请求头", + "noHeaders": "未配置自定义请求头", + "maskedHeadersTip": "为了安全,请求头值已被掩码处理。修改将更新实际值。", + "cancel": "取消", + "save": "保存", + "confirm": "添加并授权", + "timeout": "超时时间", + "sseReadTimeout": "SSE 读取超时时间", + "timeoutPlaceholder": "30", + "authentication": "认证", + "useDynamicClientRegistration": "使用动态客户端注册", + "redirectUrlWarning": "请将您的 OAuth 重定向 URL 配置为:", + "clientID": "客户端 ID", + "clientSecret": "客户端密钥", + "clientSecretPlaceholder": "客户端密钥", + "configurations": "配置" + }, + "delete": "删除 MCP 服务", + "deleteConfirmTitle": "你想要删除 {{mcp}} 吗?", + "operation": { + "edit": "修改", + "remove": "删除" + }, + "authorize": "授权", + "authorizing": "授权中...", + "authorizingRequired": "需要授权", + "authorizeTip": "授权后,工具将显示在这里。", + "update": "更新", + "updating": "更新中", + "gettingTools": "获取工具中...", + "updateTools": "更新工具中...", + "toolsEmpty": "工具未加载", + "getTools": "获取工具", + "toolUpdateConfirmTitle": "更新工具列表", + "toolUpdateConfirmContent": "更新工具列表可能影响现有应用。您想继续吗?", + "toolsNum": "包含 {{count}} 个工具", + "onlyTool": "包含 1 个工具", + "identifier": "服务器标识符 (点击复制)", + "server": { + "title": "MCP 服务", + "url": "服务端点 URL", + "reGen": "你想要重新生成服务端点 URL 吗?", + "addDescription": "添加描述", + "edit": "编辑描述", + "modal": { + "addTitle": "添加描述以启用 MCP 服务", + "editTitle": "编辑 MCP 服务描述", + "description": "描述", + "descriptionPlaceholder": "解释此工具的功能以及 LLM 应如何使用它", + "parameters": "参数", + "parametersTip": "为每个参数添加描述,以帮助 LLM 理解其目的和约束条件。", + "parametersPlaceholder": "参数的用途和约束条件", + "confirm": "启用 MCP 服务" + }, + "publishTip": "应用未发布。请先发布应用。" + }, + "toolItem": { + "parameters": "参数", + "noDescription": "暂无描述" + } + }, + "allTools": "全部工具" +} diff --git a/web/i18n/zh-Hans/tools.ts b/web/i18n/zh-Hans/tools.ts deleted file mode 100644 index 7893a66f66..0000000000 --- a/web/i18n/zh-Hans/tools.ts +++ /dev/null @@ -1,265 +0,0 @@ -const translation = { - title: '工具', - createCustomTool: '创建自定义工具', - customToolTip: '了解更多关于 Dify 自定义工具的信息', - type: { - builtIn: '工具', - custom: '自定义', - workflow: '工作流', - }, - contribute: { - line1: '我有兴趣为 ', - line2: 'Dify 贡献工具。', - viewGuide: '查看指南', - }, - author: '作者', - auth: { - authorized: '已授权', - unauthorized: '未授权', - setup: '要使用请先授权', - setupModalTitle: '设置授权', - setupModalTitleDescription: '配置凭据后,工作区中的所有成员都可以在编排应用程序时使用此工具。', - }, - includeToolNum: '包含 {{num}} 个 {{action}}', - addToolModal: { - type: '类型', - category: '类别', - added: '已添加', - custom: { - title: '没有可用的自定义工具', - tip: '创建自定义工具', - }, - workflow: { - title: '没有可用的工作流工具', - tip: '在工作室中发布工作流作为工具', - }, - mcp: { - title: '没有可用的 MCP 工具', - tip: '添加 MCP 服务器', - }, - agent: { - title: '没有可用的 agent 策略', - }, - }, - createTool: { - title: '创建自定义工具', - editAction: '编辑', - editTitle: '编辑自定义工具', - name: '名称', - toolNamePlaceHolder: '输入工具名称', - nameForToolCall: '工具调用名称', - nameForToolCallPlaceHolder: '用于机器识别,如 getCurrentWeather, list_pets', - nameForToolCallTip: '仅支持数字、字母、下划线。', - description: '工具描述', - descriptionPlaceholder: '工具用途的简要描述,例如获取特定位置的温度。', - schema: 'Schema', - schemaPlaceHolder: '在此处输入您的 OpenAPI schema', - 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 或设置为自定义值', - queryParam: '查询参数', - queryParamTooltip: '用于传递 API 密钥查询参数的名称,如 "https://example.com/test?key=API_KEY" 中的 "key"参数', - types: { - none: '无', - api_key_header: '请求头', - api_key_query: '查询参数', - apiKeyPlaceholder: 'HTTP 头部名称,用于传递 API Key', - apiValuePlaceholder: '输入 API Key', - queryParamPlaceholder: '查询参数名称,用于传递 API Key', - }, - key: '键', - value: '值', - }, - authHeaderPrefix: { - title: '鉴权头部前缀', - types: { - basic: 'Basic', - bearer: 'Bearer', - custom: 'Custom', - }, - }, - privacyPolicy: '隐私协议', - privacyPolicyPlaceholder: '请输入隐私协议', - toolInput: { - title: '工具入参', - name: '名称', - required: '必须', - method: '方式', - methodSetting: '用户输入', - methodSettingTip: '用户在工具配置中填写', - methodParameter: 'LLM 填入', - methodParameterTip: 'LLM 在推理过程中填写', - label: '标签', - labelPlaceholder: '选择标签 (可选)', - description: '描述', - descriptionPlaceholder: '参数意义的描述', - }, - toolOutput: { - title: '工具出参', - name: '名称', - reserved: '预留', - reservedParameterDuplicateTip: 'text、json、files 是预留变量,这些名称的变量不能出现在 output_schema 中。', - description: '描述', - }, - customDisclaimer: '自定义免责声明', - customDisclaimerPlaceholder: '请输入自定义免责声明', - confirmTitle: '确认保存?', - confirmTip: '发布新的工具版本可能会影响该工具已关联的应用', - deleteToolConfirmTitle: '删除这个工具?', - deleteToolConfirmContent: '删除工具是不可逆的。用户将无法再访问您的工具。', - }, - test: { - title: '测试', - parametersValue: '参数和值', - parameters: '参数', - value: '值', - testResult: '测试结果', - testResultPlaceholder: '测试结果将显示在这里', - }, - thought: { - using: '正在使用', - used: '已使用', - requestTitle: '请求', - responseTitle: '响应', - }, - setBuiltInTools: { - info: '信息', - setting: '设置', - toolDescription: '工具描述', - parameters: '参数', - string: '字符串', - number: '数字', - file: '文件', - required: '必填', - infoAndSetting: '信息和设置', - }, - noCustomTool: { - title: '没有自定义工具!', - content: '在此统一添加和管理你的自定义工具,方便构建应用时使用。', - createTool: '创建工具', - }, - noSearchRes: { - title: '抱歉,没有结果!', - content: '我们找不到任何与您的搜索相匹配的工具。', - reset: '重置搜索', - }, - builtInPromptTitle: '提示词', - toolRemoved: '工具已被移除', - notAuthorized: '工具未授权', - howToGet: '如何获取', - openInStudio: '在工作室中打开', - toolNameUsageTip: '工具调用名称,用于 Agent 推理和提示词', - copyToolName: '复制名称', - noTools: '没有工具', - mcp: { - create: { - cardTitle: '添加 MCP 服务 (HTTP)', - cardLink: '了解更多关于 MCP 服务集成的信息', - }, - noConfigured: '未配置', - updateTime: '更新于', - toolsCount: '{{count}} 个工具', - noTools: '没有可用的工具', - modal: { - title: '添加 MCP 服务 (HTTP)', - editTitle: '修改 MCP 服务 (HTTP)', - name: '名称和图标', - namePlaceholder: '命名你的 MCP 服务', - serverUrl: '服务端点 URL', - serverUrlPlaceholder: '服务端点的 URL', - serverUrlWarning: '修改服务端点 URL 可能会影响使用当前 MCP 的应用。', - serverIdentifier: '服务器标识符', - serverIdentifierTip: '工作空间内服务器的唯一标识。支持小写字母、数字、下划线和连字符,最多 24 个字符。', - serverIdentifierPlaceholder: '服务器唯一标识,例如 my-mcp-server', - serverIdentifierWarning: '更改服务器标识符后,现有应用将无法识别此服务器', - headers: '请求头', - headersTip: '发送到 MCP 服务器的额外 HTTP 请求头', - headerKey: '请求头名称', - headerValue: '请求头值', - headerKeyPlaceholder: '例如:Authorization', - headerValuePlaceholder: '例如:Bearer token123', - addHeader: '添加请求头', - noHeaders: '未配置自定义请求头', - maskedHeadersTip: '为了安全,请求头值已被掩码处理。修改将更新实际值。', - cancel: '取消', - save: '保存', - confirm: '添加并授权', - timeout: '超时时间', - sseReadTimeout: 'SSE 读取超时时间', - timeoutPlaceholder: '30', - authentication: '认证', - useDynamicClientRegistration: '使用动态客户端注册', - redirectUrlWarning: '请将您的 OAuth 重定向 URL 配置为:', - clientID: '客户端 ID', - clientSecret: '客户端密钥', - clientSecretPlaceholder: '客户端密钥', - configurations: '配置', - }, - delete: '删除 MCP 服务', - deleteConfirmTitle: '你想要删除 {{mcp}} 吗?', - operation: { - edit: '修改', - remove: '删除', - }, - authorize: '授权', - authorizing: '授权中...', - authorizingRequired: '需要授权', - authorizeTip: '授权后,工具将显示在这里。', - update: '更新', - updating: '更新中', - gettingTools: '获取工具中...', - updateTools: '更新工具中...', - toolsEmpty: '工具未加载', - getTools: '获取工具', - toolUpdateConfirmTitle: '更新工具列表', - toolUpdateConfirmContent: '更新工具列表可能影响现有应用。您想继续吗?', - toolsNum: '包含 {{count}} 个工具', - onlyTool: '包含 1 个工具', - identifier: '服务器标识符 (点击复制)', - server: { - title: 'MCP 服务', - url: '服务端点 URL', - reGen: '你想要重新生成服务端点 URL 吗?', - addDescription: '添加描述', - edit: '编辑描述', - modal: { - addTitle: '添加描述以启用 MCP 服务', - editTitle: '编辑 MCP 服务描述', - description: '描述', - descriptionPlaceholder: '解释此工具的功能以及 LLM 应如何使用它', - parameters: '参数', - parametersTip: '为每个参数添加描述,以帮助 LLM 理解其目的和约束条件。', - parametersPlaceholder: '参数的用途和约束条件', - confirm: '启用 MCP 服务', - }, - publishTip: '应用未发布。请先发布应用。', - }, - toolItem: { - parameters: '参数', - noDescription: '暂无描述', - }, - }, - allTools: '全部工具', -} - -export default translation diff --git a/web/i18n/zh-Hans/workflow.json b/web/i18n/zh-Hans/workflow.json new file mode 100644 index 0000000000..7bd3674bf2 --- /dev/null +++ b/web/i18n/zh-Hans/workflow.json @@ -0,0 +1,1297 @@ +{ + "common": { + "undo": "撤销", + "redo": "重做", + "editing": "编辑中", + "autoSaved": "自动保存", + "unpublished": "未发布", + "published": "已发布", + "publish": "发布", + "update": "更新", + "publishUpdate": "发布更新", + "run": "测试运行", + "running": "运行中", + "listening": "监听中", + "chooseStartNodeToRun": "选择启动节点进行运行", + "runAllTriggers": "运行所有触发器", + "inRunMode": "在运行模式中", + "inPreview": "预览中", + "inPreviewMode": "预览中", + "preview": "预览", + "viewRunHistory": "查看运行历史", + "runHistory": "运行历史", + "goBackToEdit": "返回编辑模式", + "conversationLog": "对话记录", + "features": "功能", + "featuresDescription": "增强 web app 用户体验", + "ImageUploadLegacyTip": "现在可以在 start 表单中创建文件类型变量。未来我们将不继续支持图片上传功能。", + "fileUploadTip": "图片上传功能已扩展为文件上传。", + "featuresDocLink": "了解更多", + "debugAndPreview": "预览", + "restart": "重新开始", + "currentDraft": "当前草稿", + "currentDraftUnpublished": "当前草稿未发布", + "latestPublished": "最新发布", + "publishedAt": "发布于", + "restore": "恢复", + "versionHistory": "版本历史", + "exitVersions": "退出版本历史", + "runApp": "运行", + "batchRunApp": "批量运行", + "accessAPIReference": "访问 API", + "embedIntoSite": "嵌入网站", + "addTitle": "添加标题...", + "addDescription": "添加描述...", + "noVar": "没有变量", + "variableNamePlaceholder": "变量名", + "searchVar": "搜索变量", + "setVarValuePlaceholder": "设置变量值", + "needConnectTip": "此节点尚未连接到其他节点", + "maxTreeDepth": "每个分支最大限制 {{depth}} 个节点", + "needAdd": "必须添加{{node}}节点", + "needOutputNode": "必须添加输出节点", + "needStartNode": "必须添加至少一个开始节点", + "needAnswerNode": "必须添加直接回复节点", + "workflowProcess": "工作流", + "notRunning": "尚未运行", + "previewPlaceholder": "在下面的框中输入内容开始调试聊天机器人", + "effectVarConfirm": { + "title": "移除变量", + "content": "该变量在其他节点中使用。您是否仍要删除它?" + }, + "insertVarTip": "按 '/' 键快速插入", + "processData": "数据处理", + "input": "输入", + "output": "输出", + "jinjaEditorPlaceholder": "输入“/”或“{”插入变量", + "viewOnly": "只读", + "showRunHistory": "显示运行历史", + "enableJinja": "开启支持 Jinja 模板", + "learnMore": "了解更多", + "copy": "拷贝", + "duplicate": "复制", + "addBlock": "添加节点", + "pasteHere": "粘贴到这里", + "pointerMode": "指针模式", + "handMode": "手模式", + "exportImage": "导出图片", + "exportPNG": "导出为 PNG", + "exportJPEG": "导出为 JPEG", + "exportSVG": "导出为 SVG", + "currentView": "当前视图", + "currentWorkflow": "整个工作流", + "moreActions": "更多操作", + "model": "模型", + "workflowAsTool": "发布为工具", + "configureRequired": "需要进行配置", + "configure": "配置", + "manageInTools": "访问工具页", + "workflowAsToolTip": "工作流更新后需要重新配置工具参数", + "workflowAsToolDisabledHint": "请先发布最新的工作流,并确保已连接的 User Input 节点后再配置为工具。", + "viewDetailInTracingPanel": "查看详细信息", + "syncingData": "同步数据中,只需几秒钟。", + "importDSL": "导入 DSL", + "importDSLTip": "当前草稿将被覆盖。在导入之前请导出工作流作为备份。", + "backupCurrentDraft": "备份当前草稿", + "chooseDSL": "选择 DSL(yml) 文件", + "overwriteAndImport": "覆盖并导入", + "importFailure": "导入失败", + "importWarning": "注意", + "importWarningDetails": "DSL 版本差异可能影响部分功能表现", + "importSuccess": "导入成功", + "parallelTip": { + "click": { + "title": "点击", + "desc": "添加节点" + }, + "drag": { + "title": "拖拽", + "desc": "连接节点" + }, + "limit": "并行分支限制为 {{num}} 个", + "depthLimit": "并行嵌套层数限制 {{num}} 层" + }, + "disconnect": "断开连接", + "jumpToNode": "跳转到节点", + "addParallelNode": "添加并行节点", + "parallel": "并行", + "branch": "分支", + "onFailure": "异常时", + "addFailureBranch": "添加异常分支", + "openInExplore": "在“探索”中打开", + "loadMore": "加载更多", + "noHistory": "没有历史版本", + "tagBound": "使用此标签的应用数量" + }, + "publishLimit": { + "startNodeTitlePrefix": "升级以", + "startNodeTitleSuffix": "解锁每个工作流无限制的触发器", + "startNodeDesc": "您已达到此计划上每个工作流最多 2 个触发器的限制。请升级后再发布此工作流。" + }, + "env": { + "envPanelTitle": "环境变量", + "envDescription": "环境变量是一种存储敏感信息的方法,如 API 密钥、数据库密码等。它们被存储在工作流程中,而不是代码中,以便在不同环境中共享。", + "envPanelButton": "添加环境变量", + "modal": { + "title": "添加环境变量", + "editTitle": "编辑环境变量", + "type": "类型", + "name": "名称", + "namePlaceholder": "变量名", + "value": "值", + "valuePlaceholder": "变量值", + "secretTip": "用于定义敏感信息或数据,导出 DSL 时设置了防泄露机制。", + "description": "描述", + "descriptionPlaceholder": "变量的描述" + }, + "export": { + "title": "导出 Secret 类型环境变量?", + "checkbox": "导出 secret 值", + "ignore": "导出 DSL", + "export": "导出包含 Secret 值的 DSL" + } + }, + "globalVar": { + "title": "系统变量", + "description": "系统变量是全局变量,在类型匹配时无需连线即可被任意节点引用,例如终端用户 ID 和工作流 ID。", + "fieldsDescription": { + "conversationId": "会话 ID", + "dialogCount": "会话次数", + "userId": "用户 ID", + "triggerTimestamp": "应用开始运行的时间戳", + "appId": "应用 ID", + "workflowId": "工作流 ID", + "workflowRunId": "工作流运行 ID" + } + }, + "sidebar": { + "exportWarning": "导出当前已保存版本", + "exportWarningDesc": "这将导出您工作流的当前已保存版本。如果您在编辑器中有未保存的更改,请先使用工作流画布中的导出选项保存它们。" + }, + "chatVariable": { + "panelTitle": "会话变量", + "panelDescription": "会话变量用于存储 LLM 需要的上下文信息,如用户偏好、对话历史等。它是可读写的。", + "docLink": "查看文档了解更多。", + "button": "添加变量", + "modal": { + "title": "添加会话变量", + "editTitle": "编辑会话变量", + "name": "名称", + "namePlaceholder": "变量名", + "type": "类型", + "value": "默认值", + "valuePlaceholder": "默认值,可以为空", + "description": "描述", + "descriptionPlaceholder": "变量的描述", + "editInJSON": "在 JSON 中编辑", + "oneByOne": "逐个添加", + "editInForm": "在表单中编辑", + "arrayValue": "值", + "addArrayValue": "添加值", + "objectKey": "属性", + "objectType": "类型", + "objectValue": "默认值" + }, + "storedContent": "存储内容", + "updatedAt": "更新时间 " + }, + "changeHistory": { + "title": "变更历史", + "placeholder": "尚未更改任何内容", + "clearHistory": "清除历史记录", + "hint": "提示", + "hintText": "您的编辑操作将被跟踪并存储在您的设备上,直到您离开编辑器。此历史记录将在您离开编辑器时被清除。", + "stepBackward_one": "{{count}} 步后退", + "stepBackward_other": "{{count}} 步后退", + "stepForward_one": "{{count}} 步前进", + "stepForward_other": "{{count}} 步前进", + "sessionStart": "会话开始", + "currentState": "当前状态", + "nodeTitleChange": "块标题已更改", + "nodeDescriptionChange": "块描述已更改", + "nodeDragStop": "块已移动", + "nodeChange": "块已更改", + "nodeConnect": "块已连接", + "nodePaste": "块已粘贴", + "nodeDelete": "块已删除", + "nodeAdd": "块已添加", + "nodeResize": "块已调整大小", + "noteAdd": "注释已添加", + "noteChange": "注释已更改", + "noteDelete": "注释已删除", + "edgeDelete": "块已断开连接" + }, + "errorMsg": { + "fieldRequired": "{{field}} 不能为空", + "rerankModelRequired": "未配置 Rerank 模型", + "authRequired": "请先授权", + "invalidJson": "{{field}} 是非法的 JSON", + "fields": { + "variable": "变量名", + "variableValue": "变量值", + "code": "代码", + "model": "模型", + "rerankModel": "Rerank 模型", + "visionVariable": "视觉变量" + }, + "invalidVariable": "无效的变量", + "noValidTool": "{{field}} 无可用工具", + "toolParameterRequired": "{{field}}: 参数 [{{param}}] 不能为空", + "startNodeRequired": "请先添加开始节点,然后再{{operation}}" + }, + "error": { + "startNodeRequired": "请先添加开始节点,然后再{{operation}}", + "operations": { + "connectingNodes": "连接节点", + "addingNodes": "添加节点", + "modifyingWorkflow": "修改工作流", + "updatingWorkflow": "更新工作流" + } + }, + "singleRun": { + "testRun": "测试运行", + "startRun": "开始运行", + "preparingDataSource": "准备数据源", + "reRun": "重新运行", + "running": "运行中", + "testRunIteration": "测试运行迭代", + "back": "返回", + "iteration": "迭代", + "loop": "循环" + }, + "tabs": { + "searchBlock": "搜索节点", + "blocks": "节点", + "searchTool": "搜索工具", + "searchTrigger": "搜索触发器...", + "allTriggers": "全部触发器", + "tools": "工具", + "allTool": "全部", + "plugin": "插件", + "customTool": "自定义", + "workflowTool": "工作流", + "question-understand": "问题理解", + "logic": "逻辑", + "transform": "转换", + "utilities": "工具", + "noResult": "未找到匹配项", + "noPluginsFound": "未找到插件", + "requestToCommunity": "向社区反馈", + "agent": "Agent 策略", + "allAdded": "已添加全部", + "addAll": "添加全部", + "sources": "数据源", + "searchDataSource": "搜索数据源", + "start": "开始", + "featuredTools": "精选推荐", + "showMoreFeatured": "查看更多", + "showLessFeatured": "收起", + "installed": "已安装", + "pluginByAuthor": "来自 {{author}}", + "usePlugin": "选择工具", + "hideActions": "收起工具", + "noFeaturedPlugins": "前往插件市场查看更多工具", + "noFeaturedTriggers": "前往插件市场查看更多触发器", + "startDisabledTip": "触发节点与用户输入节点互斥。" + }, + "blocks": { + "start": "用户输入", + "originalStartNode": "原始开始节点", + "end": "输出", + "answer": "直接回复", + "llm": "LLM", + "knowledge-retrieval": "知识检索", + "question-classifier": "问题分类器", + "if-else": "条件分支", + "code": "代码执行", + "template-transform": "模板转换", + "http-request": "HTTP 请求", + "variable-assigner": "变量赋值器", + "variable-aggregator": "变量聚合器", + "assigner": "变量赋值", + "iteration-start": "迭代开始", + "iteration": "迭代", + "parameter-extractor": "参数提取器", + "document-extractor": "文档提取器", + "list-operator": "列表操作", + "agent": "Agent", + "loop-start": "循环开始", + "loop": "循环", + "loop-end": "退出循环", + "knowledge-index": "知识库", + "datasource": "数据源", + "trigger-webhook": "Webhook 触发器", + "trigger-schedule": "定时触发器", + "trigger-plugin": "插件触发器" + }, + "customWebhook": "自定义 Webhook", + "blocksAbout": { + "start": "定义一个 workflow 流程启动的初始参数", + "end": "定义一个 workflow 流程的输出和结果类型", + "answer": "定义一个聊天对话的回复内容", + "llm": "调用大语言模型回答问题或者对自然语言进行处理", + "knowledge-retrieval": "允许你从知识库中查询与用户问题相关的文本内容", + "question-classifier": "定义用户问题的分类条件,LLM 能够根据分类描述定义对话的进展方式", + "if-else": "允许你根据 if/else 条件将 workflow 拆分成两个分支", + "code": "执行一段 Python 或 NodeJS 代码实现自定义逻辑", + "template-transform": "使用 Jinja 模板语法将数据转换为字符串", + "http-request": "允许通过 HTTP 协议发送服务器请求", + "variable-assigner": "将多路分支的变量聚合为一个变量,以实现下游节点统一配置。", + "assigner": "变量赋值节点用于向可写入变量(例如会话变量)进行变量赋值。", + "variable-aggregator": "将多路分支的变量聚合为一个变量,以实现下游节点统一配置。", + "iteration": "对列表对象执行多次步骤直至输出所有结果。", + "loop": "循环执行一段逻辑直到满足结束条件或者到达循环次数上限。", + "loop-end": "相当于“break”此节点没有配置项,当循环体内运行到此节点后循环终止。", + "parameter-extractor": "利用 LLM 从自然语言内推理提取出结构化参数,用于后置的工具调用或 HTTP 请求。", + "document-extractor": "用于将用户上传的文档解析为 LLM 便于理解的文本内容。", + "list-operator": "用于过滤或排序数组内容。", + "agent": "调用大型语言模型回答问题或处理自然语言", + "knowledge-index": "知识库节点", + "datasource": "数据源节点", + "trigger-webhook": "Webhook 触发器接收来自第三方系统的 HTTP 推送以自动触发工作流。", + "trigger-schedule": "基于时间的工作流触发器,按计划启动工作流", + "trigger-plugin": "从外部平台事件启动工作流的第三方集成触发器" + }, + "difyTeam": "Dify 团队", + "operator": { + "zoomIn": "放大", + "zoomOut": "缩小", + "zoomTo50": "缩放到 50%", + "zoomTo100": "放大到 100%", + "zoomToFit": "自适应视图", + "alignNodes": "对齐节点", + "alignLeft": "左对齐", + "alignCenter": "居中对齐", + "alignRight": "右对齐", + "alignTop": "顶部对齐", + "alignMiddle": "中部对齐", + "alignBottom": "底部对齐", + "vertical": "垂直方向", + "horizontal": "水平方向", + "distributeHorizontal": "水平等间距", + "distributeVertical": "垂直等间距", + "selectionAlignment": "选择对齐" + }, + "variableReference": { + "noAvailableVars": "没有可用变量", + "noVarsForOperation": "当前选择的操作没有可用的变量进行赋值。", + "noAssignedVars": "没有可用的赋值变量", + "assignedVarsDescription": "赋值变量必须是可写入的变量,例如:", + "conversationVars": "会话变量" + }, + "panel": { + "userInputField": "用户输入字段", + "changeBlock": "更改节点", + "helpLink": "查看帮助文档", + "openWorkflow": "打开工作流", + "about": "关于", + "createdBy": "作者", + "nextStep": "下一步", + "addNextStep": "添加此工作流程中的下一个节点", + "selectNextStep": "选择下一个节点", + "runThisStep": "运行此步骤", + "checklist": "检查清单", + "checklistTip": "发布前确保所有问题均已解决", + "checklistResolved": "所有问题均已解决", + "goTo": "转到", + "startNode": "开始节点", + "organizeBlocks": "整理节点", + "change": "更改", + "optional": "(选填)", + "maximize": "最大化画布", + "minimize": "退出最大化", + "scrollToSelectedNode": "滚动至选中节点", + "optional_and_hidden": "(选填 & 隐藏)" + }, + "nodes": { + "common": { + "outputVars": "输出变量", + "insertVarTip": "插入变量", + "memory": { + "memory": "记忆", + "memoryTip": "聊天记忆设置", + "windowSize": "记忆窗口", + "conversationRoleName": "对话角色名", + "user": "用户前缀", + "assistant": "助手前缀" + }, + "memories": { + "title": "记忆", + "tip": "聊天记忆", + "builtIn": "内置" + }, + "errorHandle": { + "title": "异常处理", + "tip": "配置异常处理策略,当节点发生异常时触发。", + "none": { + "title": "无", + "desc": "当发生异常且未处理时,节点将停止运行" + }, + "defaultValue": { + "title": "默认值", + "desc": "当发生异常时,指定默认输出内容。", + "tip": "当发生异常时,将返回以下值。", + "inLog": "节点异常,根据默认值输出。", + "output": "输出默认值" + }, + "failBranch": { + "title": "异常分支", + "desc": "当发生异常时,将执行异常分支", + "customize": "在画布自定义失败分支逻辑。", + "customizeTip": "当节点发生异常时,将自动执行失败分支。失败分支允许您灵活地提供错误消息、报告、修复或跳过操作。", + "inLog": "节点异常,将自动执行失败分支。节点输出将返回错误类型和错误信息,并传递给下游。" + }, + "partialSucceeded": { + "tip": "流程中有 {{num}} 个节点运行异常,请前往追踪查看日志。" + } + }, + "retry": { + "retry": "重试", + "retryOnFailure": "失败时重试", + "maxRetries": "最大重试次数", + "retryInterval": "重试间隔", + "retryTimes": "失败时重试 {{times}} 次", + "retrying": "重试中...", + "retrySuccessful": "重试成功", + "retryFailed": "重试失败", + "retryFailedTimes": "{{times}} 次重试失败", + "times": "次", + "ms": "毫秒", + "retries": "{{num}} 重试次数" + }, + "typeSwitch": { + "input": "输入值", + "variable": "使用变量" + }, + "inputVars": "输入变量", + "pluginNotInstalled": "插件未安装" + }, + "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": "提示词", + "addMessage": "添加消息", + "roleDescription": { + "system": "为对话提供高层指导", + "user": "向模型提供指令、查询或任何基于文本的输入", + "assistant": "基于用户消息的模型回复" + }, + "vision": "视觉", + "files": "文件", + "resolution": { + "name": "分辨率", + "high": "高", + "low": "低" + }, + "outputVars": { + "output": "生成内容", + "reasoning_content": "推理内容", + "usage": "模型用量信息" + }, + "singleRun": { + "variable": "变量" + }, + "sysQueryInUser": "user message 中必须包含 sys.query", + "jsonSchema": { + "title": "结构化输出 Schema", + "instruction": "指令", + "promptTooltip": "将文本描述转换为标准化的 JSON Schema 结构", + "promptPlaceholder": "描述你的 JSON Schema...", + "generate": "生成", + "import": "从 JSON 导入", + "generateJsonSchema": "生成 JSON Schema", + "generationTip": "可以使用自然语言快速创建 JSON Schema。", + "generating": "正在为您生成 JSON Schema...", + "generatedResult": "生成结果", + "resultTip": "以下是生成的结果。如果你对这个结果不满意,可以返回并修改你的提示词。", + "back": "返回", + "regenerate": "重新生成", + "apply": "应用", + "doc": "了解有关结构化输出的更多信息", + "resetDefaults": "清空配置", + "required": "必填", + "addField": "添加字段", + "addChildField": "添加子字段", + "showAdvancedOptions": "显示高级选项", + "stringValidations": "字符串验证", + "fieldNamePlaceholder": "字段名", + "descriptionPlaceholder": "添加描述", + "warningTips": { + "saveSchema": "请先完成当前字段的编辑" + } + }, + "reasoningFormat": { + "tooltip": "从think标签中提取内容,并将其存储在reasoning_content字段中。", + "title": "启用推理标签分离", + "tagged": "保持思考标签", + "separated": "分开思考标签" + } + }, + "knowledgeRetrieval": { + "queryVariable": "查询变量", + "queryText": "查询文本", + "queryAttachment": "查询图片", + "knowledge": "知识库", + "outputVars": { + "output": "召回的分段", + "content": "分段内容", + "title": "分段标题", + "icon": "分段图标", + "url": "分段链接", + "metadata": "其他元数据", + "files": "召回的文件" + }, + "metadata": { + "title": "元数据过滤", + "tip": "元数据过滤是使用元数据属性(例如标签、类别或访问权限)来细化和控制系统内相关信息的检索过程。", + "options": { + "disabled": { + "title": "禁用", + "subTitle": "禁用元数据过滤" + }, + "automatic": { + "title": "自动", + "subTitle": "根据用户查询自动生成元数据过滤条件", + "desc": "根据 Query Variable 自动生成元数据过滤条件" + }, + "manual": { + "title": "手动", + "subTitle": "手动添加元数据过滤条件" + } + }, + "panel": { + "title": "元数据过滤条件", + "conditions": "条件", + "add": "添加条件", + "search": "搜索元数据", + "placeholder": "输入值", + "datePlaceholder": "选择日期...", + "select": "选择变量..." + } + } + }, + "http": { + "inputVars": "输入变量", + "api": "API", + "apiPlaceholder": "输入 URL,输入变量时请键入‘/’", + "extractListPlaceholder": "输入提取列表编号,输入变量时请键入‘/’", + "notStartWithHttp": "API 应该以 http:// 或 https:// 开头", + "key": "键", + "type": "类型", + "value": "值", + "bulkEdit": "批量编辑", + "keyValueEdit": "键值编辑", + "headers": "Headers", + "params": "Params", + "body": "Body", + "binaryFileVariable": "Binary 文件变量", + "outputVars": { + "body": "响应内容", + "statusCode": "响应状态码", + "headers": "响应头列表 JSON", + "files": "文件列表" + }, + "authorization": { + "authorization": "鉴权", + "authorizationType": "鉴权类型", + "no-auth": "无", + "api-key": "API-Key", + "auth-type": "API 鉴权类型", + "basic": "基础", + "bearer": "Bearer", + "custom": "自定义", + "api-key-title": "API Key", + "header": "Header" + }, + "insertVarPlaceholder": "键入 '/' 键快速插入变量", + "timeout": { + "title": "超时设置", + "connectLabel": "连接超时", + "connectPlaceholder": "输入连接超时(以秒为单位)", + "readLabel": "读取超时", + "readPlaceholder": "输入读取超时(以秒为单位)", + "writeLabel": "写入超时", + "writePlaceholder": "输入写入超时(以秒为单位)" + }, + "curl": { + "title": "导入 cURL", + "placeholder": "粘贴 cURL 字符串" + }, + "verifySSL": { + "title": "验证 SSL 证书", + "warningTooltip": "不建议在生产环境中禁用 SSL 验证。这仅应在开发或测试中使用,因为它会使连接容易受到诸如中间人攻击等安全威胁。" + } + }, + "code": { + "inputVars": "输入变量", + "outputVars": "输出变量", + "advancedDependencies": "高级依赖", + "advancedDependenciesTip": "在这里添加一些预加载需要消耗较多时间或非默认内置的依赖包", + "searchDependencies": "搜索依赖", + "syncFunctionSignature": "同步函数签名至代码" + }, + "templateTransform": { + "inputVars": "输入变量", + "code": "代码", + "codeSupportTip": "只支持 Jinja2", + "outputVars": { + "output": "转换后内容" + } + }, + "ifElse": { + "if": "If", + "else": "Else", + "elseDescription": "用于定义当 if 条件不满足时应执行的逻辑。", + "and": "and", + "or": "or", + "operator": "操作符", + "notSetVariable": "请先设置变量", + "comparisonOperator": { + "contains": "包含", + "not contains": "不包含", + "start with": "开始是", + "end with": "结束是", + "is": "是", + "is not": "不是", + "empty": "为空", + "not empty": "不为空", + "null": "空", + "not null": "不为空", + "in": "在", + "not in": "不在", + "all of": "全部是", + "exists": "存在", + "not exists": "不存在", + "before": "早于", + "after": "晚于" + }, + "optionName": { + "image": "图片", + "doc": "文档", + "audio": "音频", + "video": "视频", + "localUpload": "本地上传", + "url": "URL" + }, + "enterValue": "输入值", + "addCondition": "添加条件", + "conditionNotSetup": "条件未设置", + "selectVariable": "选择变量", + "addSubVariable": "添加子变量", + "select": "选择" + }, + "variableAssigner": { + "title": "变量赋值", + "outputType": "输出类型", + "varNotSet": "未设置变量", + "noVarTip": "添加需要赋值的变量", + "type": { + "string": "String", + "number": "Number", + "object": "Object", + "array": "Array" + }, + "aggregationGroup": "聚合分组", + "aggregationGroupTip": "开启该功能后,变量聚合器内可以同时聚合多组变量", + "addGroup": "添加分组", + "outputVars": { + "varDescribe": "{{groupName}}的输出变量" + }, + "setAssignVariable": "设置赋值变量" + }, + "assigner": { + "assignedVariable": "赋值的变量", + "varNotSet": "未设置变量", + "noVarTip": "点击 \"+\" 按钮添加变量", + "writeMode": "写入模式", + "writeModeTip": "使用追加模式时,赋值的变量必须是数组类型。", + "over-write": "覆盖", + "append": "追加", + "plus": "加", + "clear": "清空", + "setVariable": "设置变量", + "selectAssignedVariable": "选择要赋值的变量...", + "setParameter": "设置参数...", + "operations": { + "title": "操作", + "over-write": "覆盖", + "overwrite": "覆盖", + "set": "设置", + "clear": "清空", + "extend": "扩展", + "append": "追加", + "remove-first": "移除首项", + "remove-last": "移除末项", + "+=": "+=", + "-=": "-=", + "*=": "*=", + "/=": "/=" + }, + "variable": "变量", + "variables": "变量", + "noAssignedVars": "没有可用的赋值变量", + "assignedVarsDescription": "赋值变量必须是可写入的变量,例如会话变量。" + }, + "tool": { + "authorize": "授权", + "inputVars": "输入变量", + "settings": "设置", + "insertPlaceholder1": "键入", + "insertPlaceholder2": "插入变量", + "outputVars": { + "text": "工具生成的内容", + "files": { + "title": "工具生成的文件", + "type": "支持类型。现在只支持图片", + "transfer_method": "传输方式。值为 remote_url 或 local_file", + "url": "图片链接", + "upload_file_id": "上传文件 ID" + }, + "json": "工具生成的 json" + } + }, + "questionClassifiers": { + "model": "模型", + "inputVars": "输入变量", + "outputVars": { + "className": "分类名称", + "usage": "模型用量信息" + }, + "class": "分类", + "classNamePlaceholder": "输入你的分类名称", + "advancedSetting": "高级设置", + "topicName": "主题内容", + "topicPlaceholder": "在这里输入你的主题内容", + "addClass": "添加分类", + "instruction": "指令", + "instructionTip": "你可以输入额外的附加指令,帮助问题分类器更好的理解如何分类", + "instructionPlaceholder": "在这里输入你的指令" + }, + "parameterExtractor": { + "inputVar": "输入变量", + "outputVars": { + "isSuccess": "是否成功。成功时值为 1,失败时值为 0。", + "errorReason": "错误原因", + "usage": "模型用量信息" + }, + "extractParameters": "提取参数", + "importFromTool": "从工具导入", + "addExtractParameter": "添加提取参数", + "addExtractParameterContent": { + "name": "名称", + "namePlaceholder": "提取参数名称", + "type": "类型", + "typePlaceholder": "提取参数类型", + "description": "描述", + "descriptionPlaceholder": "提取参数描述", + "required": "必填", + "requiredContent": "必填仅作为模型推理的参考,不用于参数输出的强制验证。" + }, + "extractParametersNotSet": "提取参数未设置", + "instruction": "指令", + "instructionTip": "你可以输入额外的附加指令,帮助参数提取器理解如何提取参数", + "advancedSetting": "高级设置", + "reasoningMode": "推理模式", + "reasoningModeTip": "你可以根据模型对于 Function calling 或 Prompt 的指令响应能力选择合适的推理模式" + }, + "iteration": { + "deleteTitle": "删除迭代节点?", + "deleteDesc": "删除迭代节点将删除所有子节点", + "input": "输入", + "output": "输出变量", + "iteration_one": "{{count}}个迭代", + "iteration_other": "{{count}}个迭代", + "currentIteration": "当前迭代", + "comma": ",", + "error_one": "{{count}}个失败", + "error_other": "{{count}}个失败", + "parallelMode": "并行模式", + "parallelModeUpper": "并行模式", + "parallelModeEnableTitle": "并行模式启用", + "parallelModeEnableDesc": "启用并行模式时迭代内的任务支持并行执行。你可以在右侧的属性面板中进行配置。", + "parallelPanelDesc": "在并行模式下,迭代中的任务支持并行执行。", + "MaxParallelismTitle": "最大并行度", + "MaxParallelismDesc": "最大并行度用于控制单次迭代中同时执行的任务数量。", + "errorResponseMethod": "错误响应方法", + "ErrorMethod": { + "operationTerminated": "错误时终止", + "continueOnError": "忽略错误并继续", + "removeAbnormalOutput": "移除错误输出" + }, + "answerNodeWarningDesc": "并行模式警告:在迭代中,回答节点、会话变量赋值和工具持久读/写操作可能会导致异常。", + "flattenOutput": "扁平化输出", + "flattenOutputDesc": "启用时,如果所有迭代输出都是数组,它们将被扁平化为单个数组。禁用时,输出将保持嵌套数组结构。" + }, + "loop": { + "deleteTitle": "删除循环节点?", + "deleteDesc": "删除循环节点将删除所有子节点", + "input": "输入", + "output": "输出变量", + "loop_one": "{{count}} 个循环", + "loop_other": "{{count}} 个循环", + "currentLoop": "当前循环", + "comma": ",", + "error_one": "{{count}}个失败", + "error_other": "{{count}}个失败", + "breakCondition": "循环终止条件", + "breakConditionTip": "支持引用终止条件循环内的变量和会话变量。", + "loopMaxCount": "最大循环次数", + "loopMaxCountError": "请输入正确的 最大循环次数,范围为 1 到 {{maxCount}}", + "errorResponseMethod": "错误响应方法", + "ErrorMethod": { + "operationTerminated": "错误时终止", + "continueOnError": "忽略错误并继续", + "removeAbnormalOutput": "移除错误输出" + }, + "loopVariables": "循环变量", + "initialLoopVariables": "初始循环变量", + "finalLoopVariables": "最终循环变量", + "setLoopVariables": "在循环范围内设置变量", + "variableName": "变量名", + "inputMode": "输入模式", + "exitConditionTip": "循环节点至少需要一个退出条件", + "loopNode": "循环节点", + "currentLoopCount": "当前循环次数:{{count}}", + "totalLoopCount": "总循环次数:{{count}}" + }, + "note": { + "addNote": "添加注释", + "editor": { + "placeholder": "输入注释...", + "small": "小", + "medium": "中", + "large": "大", + "bold": "加粗", + "italic": "斜体", + "strikethrough": "删除线", + "link": "链接", + "openLink": "打开", + "unlink": "取消链接", + "enterUrl": "输入链接...", + "invalidUrl": "无效的链接", + "bulletList": "列表", + "showAuthor": "显示作者" + } + }, + "docExtractor": { + "inputVar": "输入变量", + "outputVars": { + "text": "提取的文本" + }, + "supportFileTypes": "支持的文件类型:{{types}}。", + "learnMore": "了解更多" + }, + "listFilter": { + "inputVar": "输入变量", + "filterCondition": "过滤条件", + "filterConditionKey": "过滤条件的 Key", + "filterConditionComparisonOperator": "过滤条件比较操作符", + "filterConditionComparisonValue": "过滤条件比较值", + "selectVariableKeyPlaceholder": "选择子变量的 Key", + "extractsCondition": "取第 N 项", + "limit": "取前 N 项", + "orderBy": "排序", + "asc": "升序", + "desc": "降序", + "outputVars": { + "result": "过滤结果", + "first_record": "第一条记录", + "last_record": "最后一条记录" + } + }, + "agent": { + "strategy": { + "label": "Agent 策略", + "tooltip": "不同的 Agent 策略决定了系统如何规划和执行多步工具调用", + "shortLabel": "策略", + "configureTip": "请配置 Agent 策略。", + "configureTipDesc": "配置完成后,此节点将自动加载剩余配置。策略将影响多步工具推理的机制。", + "selectTip": "选择 Agent 策略", + "searchPlaceholder": "搜索 Agent 策略" + }, + "learnMore": "了解更多", + "pluginNotInstalled": "插件未安装", + "pluginNotInstalledDesc": "此插件是从 GitHub 安装的。请转到插件重新安装", + "linkToPlugin": "转到插件", + "pluginInstaller": { + "install": "安装", + "installing": "安装中" + }, + "modelNotInMarketplace": { + "title": "模型未安装", + "desc": "此模型安装自本地或 GitHub 仓库。请安装后使用。", + "manageInPlugins": "在插件中管理" + }, + "modelNotSupport": { + "title": "不支持的模型", + "desc": "已安装的插件版本不提供此模型。", + "descForVersionSwitch": "已安装的插件版本不提供此模型。点击切换版本。" + }, + "model": "模型", + "toolbox": "工具箱", + "strategyNotSet": "代理策略未设置", + "configureModel": "配置模型", + "notAuthorized": "未授权", + "tools": "工具", + "maxIterations": "最大迭代次数", + "modelNotInstallTooltip": "此模型未安装", + "modelNotSelected": "未选择模型", + "toolNotInstallTooltip": "{{tool}} 未安装", + "toolNotAuthorizedTooltip": "{{tool}} 未授权", + "strategyNotInstallTooltip": "{{strategy}} 未安装", + "unsupportedStrategy": "不支持的策略", + "strategyNotFoundDesc": "安装的插件版本不提供此策略。", + "pluginNotFoundDesc": "此插件安装自 GitHub。请转到插件重新安装。", + "strategyNotFoundDescAndSwitchVersion": "安装的插件版本不提供此策略。点击切换版本。", + "modelSelectorTooltips": { + "deprecated": "此模型已弃用" + }, + "outputVars": { + "text": "agent 生成的内容", + "usage": "模型用量信息", + "files": { + "title": "agent 生成的文件", + "type": "支持类型。现在只支持图片", + "transfer_method": "传输方式。值为 remote_url 或 local_file", + "url": "图片链接", + "upload_file_id": "上传文件 ID" + }, + "json": "agent 生成的 json" + }, + "checkList": { + "strategyNotSelected": "未选择策略" + }, + "installPlugin": { + "title": "安装插件", + "desc": "即将安装以下插件", + "changelog": "更新日志", + "install": "安装", + "cancel": "取消" + }, + "clickToViewParameterSchema": "点击查看参数 schema", + "parameterSchema": "参数 Schema" + }, + "dataSource": { + "supportedFileFormats": "支持的文件格式", + "supportedFileFormatsPlaceholder": "文件格式,例如:doc", + "add": "添加数据源" + }, + "knowledgeBase": { + "chunkStructure": "分段结构", + "chooseChunkStructure": "选择分段结构", + "chunkStructureTip": { + "title": "请选择分段结构", + "message": "Dify 知识库支持三种分块结构:通用、父子和问答。每个知识库只能有一种结构。前一节点的输出必须与所选的分块结构相匹配。请注意,分块结构的选择会影响可用的索引方法。", + "learnMore": "了解更多" + }, + "changeChunkStructure": "更改分段结构", + "chunksInput": "分块", + "chunksInputTip": "知识库节点的输入变量为 Chunks。该变量类型是符合特定 JSON Schema 的对象,必须与所选块结构一致。", + "aboutRetrieval": "关于知识检索。", + "chunkIsRequired": "分段结构是必需的", + "indexMethodIsRequired": "索引方法是必需的", + "chunksVariableIsRequired": "Chunks 变量是必需的", + "embeddingModelIsRequired": "Embedding 模型是必需的", + "embeddingModelIsInvalid": "无效的 Embedding 模型", + "retrievalSettingIsRequired": "检索设置是必需的", + "rerankingModelIsRequired": "Reranking 模型是必需的", + "rerankingModelIsInvalid": "无效的 Reranking 模型" + }, + "triggerSchedule": { + "frequency": { + "label": "频率", + "monthly": "每月", + "daily": "每日", + "hourly": "每小时", + "weekly": "每周" + }, + "title": "定时触发", + "nodeTitle": "定时触发器", + "useCronExpression": "使用 Cron 表达式", + "selectFrequency": "选择频率", + "nextExecutionTimes": "接下来 5 次执行时间", + "hours": "小时", + "minutes": "分钟", + "onMinute": "分钟", + "cronExpression": "Cron 表达式", + "weekdays": "星期", + "executeNow": "立即执行", + "frequencyLabel": "频率", + "nextExecution": "下次执行", + "time": "时间", + "lastDay": "最后一天", + "startTime": "开始时间", + "selectDateTime": "选择日期和时间", + "lastDayTooltip": "并非所有月份都有 31 天。使用\"最后一天\"选项来选择每个月的最后一天。", + "nextExecutionTime": "下次执行时间", + "useVisualPicker": "使用可视化配置", + "days": "天", + "notConfigured": "未配置", + "mode": "模式", + "modeVisual": "可视化", + "modeCron": "Cron", + "selectTime": "选择时间", + "timezone": "时区", + "visualConfig": "可视化配置", + "monthlyDay": "月份日期", + "executionTime": "执行时间", + "invalidTimezone": "无效的时区", + "invalidCronExpression": "无效的 Cron 表达式", + "noValidExecutionTime": "无法计算有效的执行时间", + "executionTimeCalculationError": "执行时间计算失败", + "invalidFrequency": "无效的频率", + "invalidStartTime": "无效的开始时间", + "startTimeMustBeFuture": "开始时间必须是将来的时间", + "invalidTimeFormat": "无效的时间格式(预期格式:HH:MM AM/PM)", + "invalidWeekday": "无效的工作日:{{weekday}}", + "invalidMonthlyDay": "月份日期必须在 1-31 之间或为\"last\"", + "invalidOnMinute": "分钟必须在 0-59 之间", + "invalidExecutionTime": "无效的执行时间", + "executionTimeMustBeFuture": "执行时间必须是将来的时间" + }, + "triggerWebhook": { + "configPlaceholder": "Webhook 触发器配置将在此处实现", + "title": "Webhook 触发器", + "nodeTitle": "🔗 Webhook 触发器", + "webhookUrl": "Webhook URL", + "webhookUrlPlaceholder": "点击生成以创建 webhook URL", + "generate": "生成", + "copy": "复制", + "test": "测试", + "urlGenerated": "Webhook URL 生成成功", + "urlGenerationFailed": "生成 Webhook URL 失败", + "urlCopied": "URL 已复制到剪贴板", + "method": "方法", + "contentType": "内容类型", + "queryParameters": "查询参数", + "headerParameters": "Header 参数", + "requestBodyParameters": "请求体参数", + "parameterName": "变量名", + "varName": "变量名", + "varType": "类型", + "varNamePlaceholder": "输入变量名...", + "required": "必填", + "addParameter": "添加", + "addHeader": "添加", + "noParameters": "未配置任何参数", + "noQueryParameters": "未配置查询参数", + "noHeaders": "未配置 Header", + "noBodyParameters": "未配置请求体参数", + "debugUrlTitle": "测试运行时,请始终使用此URL", + "debugUrlCopy": "点击复制", + "debugUrlCopied": "已复制!", + "errorHandling": "错误处理", + "errorStrategy": "错误处理", + "responseConfiguration": "响应", + "asyncMode": "异步模式", + "statusCode": "状态码", + "responseBody": "响应体", + "responseBodyPlaceholder": "在此输入您的响应体", + "headers": "Headers", + "validation": { + "webhookUrlRequired": "需要提供Webhook URL", + "invalidParameterType": "参数\"{{name}}\"的参数类型\"{{type}}\"无效" + }, + "debugUrlPrivateAddressWarning": "此 URL 似乎是内部地址,可能导致 webhook 请求失败。您可以将 TRIGGER_URL 更改为公共地址。" + }, + "triggerPlugin": { + "authorized": "已授权", + "notConfigured": "未配置", + "error": "错误", + "configuration": "配置", + "remove": "移除", + "or": "或", + "useOAuth": "使用 OAuth", + "useApiKey": "使用 API Key", + "authenticationFailed": "身份验证失败", + "authenticationSuccess": "身份验证成功", + "oauthConfigFailed": "OAuth 配置失败", + "configureOAuthClient": "配置 OAuth 客户端", + "oauthClientDescription": "配置 OAuth 客户端凭据以启用身份验证", + "oauthClientSaved": "OAuth 客户端配置保存成功", + "configureApiKey": "配置 API Key", + "apiKeyDescription": "配置 API key 凭据进行身份验证", + "apiKeyConfigured": "API key 配置成功", + "configurationFailed": "配置失败", + "failedToStart": "启动身份验证流程失败", + "credentialsVerified": "凭据验证成功", + "credentialVerificationFailed": "凭据验证失败", + "verifyAndContinue": "验证并继续", + "configureParameters": "配置参数", + "parametersDescription": "配置触发器参数和属性", + "configurationComplete": "配置完成", + "configurationCompleteDescription": "您的触发器已成功配置", + "configurationCompleteMessage": "您的触发器配置已完成,现在可以使用了。", + "parameters": "参数", + "properties": "属性", + "propertiesDescription": "此触发器的额外配置属性", + "noConfigurationRequired": "此触发器不需要额外配置。", + "subscriptionName": "订阅名称", + "subscriptionNameDescription": "为此触发器订阅输入一个唯一名称", + "subscriptionNamePlaceholder": "输入订阅名称...", + "subscriptionNameRequired": "订阅名称是必需的", + "subscriptionRequired": "需要配置订阅", + "notAuthorized": "未授权", + "selectSubscription": "选择订阅", + "availableSubscriptions": "可用订阅", + "addSubscription": "添加新订阅", + "removeSubscription": "取消订阅", + "subscriptionRemoved": "订阅已成功取消" + } + }, + "tracing": { + "stopBy": "由{{user}}终止" + }, + "versionHistory": { + "title": "版本", + "currentDraft": "当前草稿", + "latest": "最新", + "filter": { + "all": "全部", + "onlyYours": "仅你的", + "onlyShowNamedVersions": "只显示已命名版本", + "reset": "重置", + "empty": "没有匹配的版本" + }, + "defaultName": "未命名", + "nameThisVersion": "命名", + "editVersionInfo": "编辑信息", + "copyId": "复制 ID", + "editField": { + "title": "标题", + "releaseNotes": "发布说明", + "titleLengthLimit": "标题不能超过{{limit}}个字符", + "releaseNotesLengthLimit": "发布说明不能超过{{limit}}个字符" + }, + "releaseNotesPlaceholder": "请描述变更", + "restorationTip": "版本回滚后,当前草稿将被覆盖。", + "deletionTip": "删除不可逆,请确认。", + "action": { + "restoreSuccess": "回滚成功", + "restoreFailure": "回滚失败", + "deleteSuccess": "版本已删除", + "deleteFailure": "删除失败", + "updateSuccess": "版本信息已更新", + "updateFailure": "更新失败", + "copyIdSuccess": "ID 已复制到剪贴板" + } + }, + "debug": { + "settingsTab": "设置", + "lastRunTab": "上次运行", + "relationsTab": "关系", + "copyLastRun": "复制上次运行值", + "noLastRunFound": "未找到上次运行记录", + "noMatchingInputsFound": "上次运行中未找到匹配的输入", + "lastRunInputsCopied": "已复制{{count}}个输入值", + "copyLastRunError": "复制上次运行输入失败", + "noData": { + "description": "上次运行的结果将显示在这里", + "runThisNode": "运行此节点" + }, + "variableInspect": { + "title": "变量检查", + "emptyTip": "在画布上逐步浏览节点或逐步运行节点后,您可以在变量检查中查看节点变量的当前值", + "emptyLink": "了解更多", + "clearAll": "重置所有", + "clearNode": "清除缓存", + "resetConversationVar": "重置会话变量为默认值", + "view": "查看记录", + "edited": "已编辑", + "reset": "还原至上一次运行", + "listening": { + "title": "正在监听触发器事件…", + "tip": "您现在可以向 HTTP {{nodeName}} 端点发送测试请求以模拟事件触发,或将其用作实时事件调试的回调 URL。所有输出都可以在变量检查器中直接查看。", + "tipPlugin": "现在您可以在 {{- pluginName}} 中创建事件,并在变量检查器中查看这些事件的输出。", + "tipSchedule": "正在监听计划触发器事件。\n下一次计划运行时间:{{nextTriggerTime}}", + "tipFallback": "正在等待触发器事件,输出结果将在此显示。", + "defaultNodeName": "此触发器", + "defaultPluginName": "此插件触发器", + "defaultScheduleTime": "未设置", + "selectedTriggers": "所选触发器", + "stopButton": "停止" + }, + "trigger": { + "normal": "变量检查", + "running": "缓存中", + "stop": "停止运行", + "cached": "查看缓存", + "clear": "清除" + }, + "envNode": "环境变量", + "chatNode": "会话变量", + "systemNode": "系统变量", + "exportToolTip": "导出变量为文件", + "largeData": "大数据 - 仅部分只读预览。请导出查看完整数据。", + "largeDataNoExport": "大数据 - 仅部分预览", + "export": "导出" + }, + "lastOutput": "上次输出", + "relations": { + "dependencies": "依赖", + "dependents": "被依赖", + "dependenciesDescription": "本节点依赖的其他节点", + "dependentsDescription": "依赖于本节点的其他节点", + "noDependencies": "无依赖", + "noDependents": "无被依赖" + } + }, + "triggerStatus": { + "enabled": "触发器", + "disabled": "触发器 • 已禁用" + }, + "entryNodeStatus": { + "enabled": "开始", + "disabled": "开始 • 已禁用" + }, + "onboarding": { + "title": "选择开始节点来开始", + "description": "不同的开始节点具有不同的功能。不用担心,您随时可以更改它们。", + "userInputFull": "用户输入(原始开始节点)", + "userInputDescription": "允许设置用户输入变量的开始节点,具有Web应用程序、服务API、MCP服务器和工作流即工具功能。", + "trigger": "触发器", + "triggerDescription": "触发器可以作为工作流的开始节点,例如定时任务、自定义webhook或与其他应用程序的集成。", + "back": "返回", + "learnMore": "了解更多", + "aboutStartNode": "关于开始节点。", + "escTip": { + "press": "按", + "key": "esc", + "toDismiss": "键关闭" + } + } +} diff --git a/web/i18n/zh-Hans/workflow.ts b/web/i18n/zh-Hans/workflow.ts deleted file mode 100644 index a6daa56667..0000000000 --- a/web/i18n/zh-Hans/workflow.ts +++ /dev/null @@ -1,1299 +0,0 @@ -const translation = { - common: { - undo: '撤销', - redo: '重做', - editing: '编辑中', - autoSaved: '自动保存', - unpublished: '未发布', - published: '已发布', - publish: '发布', - update: '更新', - publishUpdate: '发布更新', - run: '测试运行', - running: '运行中', - listening: '监听中', - chooseStartNodeToRun: '选择启动节点进行运行', - runAllTriggers: '运行所有触发器', - inRunMode: '在运行模式中', - inPreview: '预览中', - inPreviewMode: '预览中', - preview: '预览', - viewRunHistory: '查看运行历史', - runHistory: '运行历史', - goBackToEdit: '返回编辑模式', - conversationLog: '对话记录', - features: '功能', - featuresDescription: '增强 web app 用户体验', - ImageUploadLegacyTip: '现在可以在 start 表单中创建文件类型变量。未来我们将不继续支持图片上传功能。', - fileUploadTip: '图片上传功能已扩展为文件上传。', - featuresDocLink: '了解更多', - debugAndPreview: '预览', - restart: '重新开始', - currentDraft: '当前草稿', - currentDraftUnpublished: '当前草稿未发布', - latestPublished: '最新发布', - publishedAt: '发布于', - restore: '恢复', - versionHistory: '版本历史', - exitVersions: '退出版本历史', - runApp: '运行', - batchRunApp: '批量运行', - accessAPIReference: '访问 API', - embedIntoSite: '嵌入网站', - addTitle: '添加标题...', - addDescription: '添加描述...', - noVar: '没有变量', - variableNamePlaceholder: '变量名', - searchVar: '搜索变量', - setVarValuePlaceholder: '设置变量值', - needConnectTip: '此节点尚未连接到其他节点', - maxTreeDepth: '每个分支最大限制 {{depth}} 个节点', - needAdd: '必须添加{{node}}节点', - needOutputNode: '必须添加输出节点', - needStartNode: '必须添加至少一个开始节点', - needAnswerNode: '必须添加直接回复节点', - workflowProcess: '工作流', - notRunning: '尚未运行', - previewPlaceholder: '在下面的框中输入内容开始调试聊天机器人', - effectVarConfirm: { - title: '移除变量', - content: '该变量在其他节点中使用。您是否仍要删除它?', - }, - insertVarTip: '按 \'/\' 键快速插入', - processData: '数据处理', - input: '输入', - output: '输出', - jinjaEditorPlaceholder: '输入“/”或“{”插入变量', - viewOnly: '只读', - showRunHistory: '显示运行历史', - enableJinja: '开启支持 Jinja 模板', - learnMore: '了解更多', - copy: '拷贝', - duplicate: '复制', - addBlock: '添加节点', - pasteHere: '粘贴到这里', - pointerMode: '指针模式', - handMode: '手模式', - exportImage: '导出图片', - exportPNG: '导出为 PNG', - exportJPEG: '导出为 JPEG', - exportSVG: '导出为 SVG', - currentView: '当前视图', - currentWorkflow: '整个工作流', - moreActions: '更多操作', - model: '模型', - workflowAsTool: '发布为工具', - configureRequired: '需要进行配置', - configure: '配置', - manageInTools: '访问工具页', - workflowAsToolTip: '工作流更新后需要重新配置工具参数', - workflowAsToolDisabledHint: '请先发布最新的工作流,并确保已连接的 User Input 节点后再配置为工具。', - viewDetailInTracingPanel: '查看详细信息', - syncingData: '同步数据中,只需几秒钟。', - importDSL: '导入 DSL', - importDSLTip: '当前草稿将被覆盖。在导入之前请导出工作流作为备份。', - backupCurrentDraft: '备份当前草稿', - chooseDSL: '选择 DSL(yml) 文件', - overwriteAndImport: '覆盖并导入', - importFailure: '导入失败', - importWarning: '注意', - importWarningDetails: 'DSL 版本差异可能影响部分功能表现', - importSuccess: '导入成功', - parallelTip: { - click: { - title: '点击', - desc: '添加节点', - }, - drag: { - title: '拖拽', - desc: '连接节点', - }, - limit: '并行分支限制为 {{num}} 个', - depthLimit: '并行嵌套层数限制 {{num}} 层', - }, - disconnect: '断开连接', - jumpToNode: '跳转到节点', - addParallelNode: '添加并行节点', - parallel: '并行', - branch: '分支', - onFailure: '异常时', - addFailureBranch: '添加异常分支', - openInExplore: '在“探索”中打开', - loadMore: '加载更多', - noHistory: '没有历史版本', - tagBound: '使用此标签的应用数量', - }, - publishLimit: { - startNodeTitlePrefix: '升级以', - startNodeTitleSuffix: '解锁每个工作流无限制的触发器', - startNodeDesc: '您已达到此计划上每个工作流最多 2 个触发器的限制。请升级后再发布此工作流。', - }, - env: { - envPanelTitle: '环境变量', - envDescription: '环境变量是一种存储敏感信息的方法,如 API 密钥、数据库密码等。它们被存储在工作流程中,而不是代码中,以便在不同环境中共享。', - envPanelButton: '添加环境变量', - modal: { - title: '添加环境变量', - editTitle: '编辑环境变量', - type: '类型', - name: '名称', - namePlaceholder: '变量名', - value: '值', - valuePlaceholder: '变量值', - secretTip: '用于定义敏感信息或数据,导出 DSL 时设置了防泄露机制。', - description: '描述', - descriptionPlaceholder: '变量的描述', - }, - export: { - title: '导出 Secret 类型环境变量?', - checkbox: '导出 secret 值', - ignore: '导出 DSL', - export: '导出包含 Secret 值的 DSL', - }, - }, - globalVar: { - title: '系统变量', - description: '系统变量是全局变量,在类型匹配时无需连线即可被任意节点引用,例如终端用户 ID 和工作流 ID。', - fieldsDescription: { - conversationId: '会话 ID', - dialogCount: '会话次数', - userId: '用户 ID', - triggerTimestamp: '应用开始运行的时间戳', - appId: '应用 ID', - workflowId: '工作流 ID', - workflowRunId: '工作流运行 ID', - }, - }, - sidebar: { - exportWarning: '导出当前已保存版本', - exportWarningDesc: '这将导出您工作流的当前已保存版本。如果您在编辑器中有未保存的更改,请先使用工作流画布中的导出选项保存它们。', - }, - chatVariable: { - panelTitle: '会话变量', - panelDescription: '会话变量用于存储 LLM 需要的上下文信息,如用户偏好、对话历史等。它是可读写的。', - docLink: '查看文档了解更多。', - button: '添加变量', - modal: { - title: '添加会话变量', - editTitle: '编辑会话变量', - name: '名称', - namePlaceholder: '变量名', - type: '类型', - value: '默认值', - valuePlaceholder: '默认值,可以为空', - description: '描述', - descriptionPlaceholder: '变量的描述', - editInJSON: '在 JSON 中编辑', - oneByOne: '逐个添加', - editInForm: '在表单中编辑', - arrayValue: '值', - addArrayValue: '添加值', - objectKey: '属性', - objectType: '类型', - objectValue: '默认值', - }, - storedContent: '存储内容', - updatedAt: '更新时间 ', - }, - changeHistory: { - title: '变更历史', - placeholder: '尚未更改任何内容', - clearHistory: '清除历史记录', - hint: '提示', - hintText: '您的编辑操作将被跟踪并存储在您的设备上,直到您离开编辑器。此历史记录将在您离开编辑器时被清除。', - stepBackward_one: '{{count}} 步后退', - stepBackward_other: '{{count}} 步后退', - stepForward_one: '{{count}} 步前进', - stepForward_other: '{{count}} 步前进', - sessionStart: '会话开始', - currentState: '当前状态', - nodeTitleChange: '块标题已更改', - nodeDescriptionChange: '块描述已更改', - nodeDragStop: '块已移动', - nodeChange: '块已更改', - nodeConnect: '块已连接', - nodePaste: '块已粘贴', - nodeDelete: '块已删除', - nodeAdd: '块已添加', - nodeResize: '块已调整大小', - noteAdd: '注释已添加', - noteChange: '注释已更改', - noteDelete: '注释已删除', - edgeDelete: '块已断开连接', - }, - errorMsg: { - fieldRequired: '{{field}} 不能为空', - rerankModelRequired: '未配置 Rerank 模型', - authRequired: '请先授权', - invalidJson: '{{field}} 是非法的 JSON', - fields: { - variable: '变量名', - variableValue: '变量值', - code: '代码', - model: '模型', - rerankModel: 'Rerank 模型', - visionVariable: '视觉变量', - }, - invalidVariable: '无效的变量', - noValidTool: '{{field}} 无可用工具', - toolParameterRequired: '{{field}}: 参数 [{{param}}] 不能为空', - startNodeRequired: '请先添加开始节点,然后再{{operation}}', - }, - error: { - startNodeRequired: '请先添加开始节点,然后再{{operation}}', - operations: { - connectingNodes: '连接节点', - addingNodes: '添加节点', - modifyingWorkflow: '修改工作流', - updatingWorkflow: '更新工作流', - }, - }, - singleRun: { - testRun: '测试运行', - startRun: '开始运行', - preparingDataSource: '准备数据源', - reRun: '重新运行', - running: '运行中', - testRunIteration: '测试运行迭代', - back: '返回', - iteration: '迭代', - loop: '循环', - }, - tabs: { - 'searchBlock': '搜索节点', - 'blocks': '节点', - 'searchTool': '搜索工具', - 'searchTrigger': '搜索触发器...', - 'allTriggers': '全部触发器', - 'tools': '工具', - 'allTool': '全部', - 'plugin': '插件', - 'customTool': '自定义', - 'workflowTool': '工作流', - 'question-understand': '问题理解', - 'logic': '逻辑', - 'transform': '转换', - 'utilities': '工具', - 'noResult': '未找到匹配项', - 'noPluginsFound': '未找到插件', - 'requestToCommunity': '向社区反馈', - 'agent': 'Agent 策略', - 'allAdded': '已添加全部', - 'addAll': '添加全部', - 'sources': '数据源', - 'searchDataSource': '搜索数据源', - 'start': '开始', - 'featuredTools': '精选推荐', - 'showMoreFeatured': '查看更多', - 'showLessFeatured': '收起', - 'installed': '已安装', - 'pluginByAuthor': '来自 {{author}}', - 'usePlugin': '选择工具', - 'hideActions': '收起工具', - 'noFeaturedPlugins': '前往插件市场查看更多工具', - 'noFeaturedTriggers': '前往插件市场查看更多触发器', - 'startDisabledTip': '触发节点与用户输入节点互斥。', - }, - blocks: { - 'start': '用户输入', - 'originalStartNode': '原始开始节点', - 'end': '输出', - 'answer': '直接回复', - 'llm': 'LLM', - 'knowledge-retrieval': '知识检索', - 'question-classifier': '问题分类器', - 'if-else': '条件分支', - 'code': '代码执行', - 'template-transform': '模板转换', - 'http-request': 'HTTP 请求', - 'variable-assigner': '变量赋值器', - 'variable-aggregator': '变量聚合器', - 'assigner': '变量赋值', - 'iteration-start': '迭代开始', - 'iteration': '迭代', - 'parameter-extractor': '参数提取器', - 'document-extractor': '文档提取器', - 'list-operator': '列表操作', - 'agent': 'Agent', - 'loop-start': '循环开始', - 'loop': '循环', - 'loop-end': '退出循环', - 'knowledge-index': '知识库', - 'datasource': '数据源', - 'trigger-webhook': 'Webhook 触发器', - 'trigger-schedule': '定时触发器', - 'trigger-plugin': '插件触发器', - }, - customWebhook: '自定义 Webhook', - blocksAbout: { - 'start': '定义一个 workflow 流程启动的初始参数', - 'end': '定义一个 workflow 流程的输出和结果类型', - 'answer': '定义一个聊天对话的回复内容', - 'llm': '调用大语言模型回答问题或者对自然语言进行处理', - 'knowledge-retrieval': '允许你从知识库中查询与用户问题相关的文本内容', - 'question-classifier': '定义用户问题的分类条件,LLM 能够根据分类描述定义对话的进展方式', - 'if-else': '允许你根据 if/else 条件将 workflow 拆分成两个分支', - 'code': '执行一段 Python 或 NodeJS 代码实现自定义逻辑', - 'template-transform': '使用 Jinja 模板语法将数据转换为字符串', - 'http-request': '允许通过 HTTP 协议发送服务器请求', - 'variable-assigner': '将多路分支的变量聚合为一个变量,以实现下游节点统一配置。', - 'assigner': '变量赋值节点用于向可写入变量(例如会话变量)进行变量赋值。', - 'variable-aggregator': '将多路分支的变量聚合为一个变量,以实现下游节点统一配置。', - 'iteration': '对列表对象执行多次步骤直至输出所有结果。', - 'loop': '循环执行一段逻辑直到满足结束条件或者到达循环次数上限。', - 'loop-end': '相当于“break”此节点没有配置项,当循环体内运行到此节点后循环终止。', - 'parameter-extractor': '利用 LLM 从自然语言内推理提取出结构化参数,用于后置的工具调用或 HTTP 请求。', - 'document-extractor': '用于将用户上传的文档解析为 LLM 便于理解的文本内容。', - 'list-operator': '用于过滤或排序数组内容。', - 'agent': '调用大型语言模型回答问题或处理自然语言', - 'knowledge-index': '知识库节点', - 'datasource': '数据源节点', - 'trigger-webhook': 'Webhook 触发器接收来自第三方系统的 HTTP 推送以自动触发工作流。', - 'trigger-schedule': '基于时间的工作流触发器,按计划启动工作流', - 'trigger-plugin': '从外部平台事件启动工作流的第三方集成触发器', - }, - difyTeam: 'Dify 团队', - operator: { - zoomIn: '放大', - zoomOut: '缩小', - zoomTo50: '缩放到 50%', - zoomTo100: '放大到 100%', - zoomToFit: '自适应视图', - alignNodes: '对齐节点', - alignLeft: '左对齐', - alignCenter: '居中对齐', - alignRight: '右对齐', - alignTop: '顶部对齐', - alignMiddle: '中部对齐', - alignBottom: '底部对齐', - vertical: '垂直方向', - horizontal: '水平方向', - distributeHorizontal: '水平等间距', - distributeVertical: '垂直等间距', - selectionAlignment: '选择对齐', - }, - variableReference: { - noAvailableVars: '没有可用变量', - noVarsForOperation: '当前选择的操作没有可用的变量进行赋值。', - noAssignedVars: '没有可用的赋值变量', - assignedVarsDescription: '赋值变量必须是可写入的变量,例如:', - conversationVars: '会话变量', - }, - panel: { - userInputField: '用户输入字段', - changeBlock: '更改节点', - helpLink: '查看帮助文档', - openWorkflow: '打开工作流', - about: '关于', - createdBy: '作者', - nextStep: '下一步', - addNextStep: '添加此工作流程中的下一个节点', - selectNextStep: '选择下一个节点', - runThisStep: '运行此步骤', - checklist: '检查清单', - checklistTip: '发布前确保所有问题均已解决', - checklistResolved: '所有问题均已解决', - goTo: '转到', - startNode: '开始节点', - organizeBlocks: '整理节点', - change: '更改', - optional: '(选填)', - maximize: '最大化画布', - minimize: '退出最大化', - scrollToSelectedNode: '滚动至选中节点', - optional_and_hidden: '(选填 & 隐藏)', - }, - nodes: { - common: { - outputVars: '输出变量', - insertVarTip: '插入变量', - memory: { - memory: '记忆', - memoryTip: '聊天记忆设置', - windowSize: '记忆窗口', - conversationRoleName: '对话角色名', - user: '用户前缀', - assistant: '助手前缀', - }, - memories: { - title: '记忆', - tip: '聊天记忆', - builtIn: '内置', - }, - errorHandle: { - title: '异常处理', - tip: '配置异常处理策略,当节点发生异常时触发。', - none: { - title: '无', - desc: '当发生异常且未处理时,节点将停止运行', - }, - defaultValue: { - title: '默认值', - desc: '当发生异常时,指定默认输出内容。', - tip: '当发生异常时,将返回以下值。', - inLog: '节点异常,根据默认值输出。', - output: '输出默认值', - }, - failBranch: { - title: '异常分支', - desc: '当发生异常时,将执行异常分支', - customize: '在画布自定义失败分支逻辑。', - customizeTip: '当节点发生异常时,将自动执行失败分支。失败分支允许您灵活地提供错误消息、报告、修复或跳过操作。', - inLog: '节点异常,将自动执行失败分支。节点输出将返回错误类型和错误信息,并传递给下游。', - }, - partialSucceeded: { - tip: '流程中有 {{num}} 个节点运行异常,请前往追踪查看日志。', - }, - }, - retry: { - retry: '重试', - retryOnFailure: '失败时重试', - maxRetries: '最大重试次数', - retryInterval: '重试间隔', - retryTimes: '失败时重试 {{times}} 次', - retrying: '重试中...', - retrySuccessful: '重试成功', - retryFailed: '重试失败', - retryFailedTimes: '{{times}} 次重试失败', - times: '次', - ms: '毫秒', - retries: '{{num}} 重试次数', - }, - typeSwitch: { - input: '输入值', - variable: '使用变量', - }, - inputVars: '输入变量', - pluginNotInstalled: '插件未安装', - }, - 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: '提示词', - addMessage: '添加消息', - roleDescription: { - system: '为对话提供高层指导', - user: '向模型提供指令、查询或任何基于文本的输入', - assistant: '基于用户消息的模型回复', - }, - vision: '视觉', - files: '文件', - resolution: { - name: '分辨率', - high: '高', - low: '低', - }, - outputVars: { - output: '生成内容', - reasoning_content: '推理内容', - usage: '模型用量信息', - }, - singleRun: { - variable: '变量', - }, - sysQueryInUser: 'user message 中必须包含 sys.query', - jsonSchema: { - title: '结构化输出 Schema', - instruction: '指令', - promptTooltip: '将文本描述转换为标准化的 JSON Schema 结构', - promptPlaceholder: '描述你的 JSON Schema...', - generate: '生成', - import: '从 JSON 导入', - generateJsonSchema: '生成 JSON Schema', - generationTip: '可以使用自然语言快速创建 JSON Schema。', - generating: '正在为您生成 JSON Schema...', - generatedResult: '生成结果', - resultTip: '以下是生成的结果。如果你对这个结果不满意,可以返回并修改你的提示词。', - back: '返回', - regenerate: '重新生成', - apply: '应用', - doc: '了解有关结构化输出的更多信息', - resetDefaults: '清空配置', - required: '必填', - addField: '添加字段', - addChildField: '添加子字段', - showAdvancedOptions: '显示高级选项', - stringValidations: '字符串验证', - fieldNamePlaceholder: '字段名', - descriptionPlaceholder: '添加描述', - warningTips: { - saveSchema: '请先完成当前字段的编辑', - }, - }, - reasoningFormat: { - tooltip: '从think标签中提取内容,并将其存储在reasoning_content字段中。', - title: '启用推理标签分离', - tagged: '保持思考标签', - separated: '分开思考标签', - }, - }, - knowledgeRetrieval: { - queryVariable: '查询变量', - queryText: '查询文本', - queryAttachment: '查询图片', - knowledge: '知识库', - outputVars: { - output: '召回的分段', - content: '分段内容', - title: '分段标题', - icon: '分段图标', - url: '分段链接', - metadata: '其他元数据', - files: '召回的文件', - }, - metadata: { - title: '元数据过滤', - tip: '元数据过滤是使用元数据属性(例如标签、类别或访问权限)来细化和控制系统内相关信息的检索过程。', - options: { - disabled: { - title: '禁用', - subTitle: '禁用元数据过滤', - }, - automatic: { - title: '自动', - subTitle: '根据用户查询自动生成元数据过滤条件', - desc: '根据 Query Variable 自动生成元数据过滤条件', - }, - manual: { - title: '手动', - subTitle: '手动添加元数据过滤条件', - }, - }, - panel: { - title: '元数据过滤条件', - conditions: '条件', - add: '添加条件', - search: '搜索元数据', - placeholder: '输入值', - datePlaceholder: '选择日期...', - select: '选择变量...', - }, - }, - }, - http: { - inputVars: '输入变量', - api: 'API', - apiPlaceholder: '输入 URL,输入变量时请键入‘/’', - extractListPlaceholder: '输入提取列表编号,输入变量时请键入‘/’', - notStartWithHttp: 'API 应该以 http:// 或 https:// 开头', - key: '键', - type: '类型', - value: '值', - bulkEdit: '批量编辑', - keyValueEdit: '键值编辑', - headers: 'Headers', - params: 'Params', - body: 'Body', - binaryFileVariable: 'Binary 文件变量', - outputVars: { - body: '响应内容', - statusCode: '响应状态码', - headers: '响应头列表 JSON', - files: '文件列表', - }, - authorization: { - 'authorization': '鉴权', - 'authorizationType': '鉴权类型', - 'no-auth': '无', - 'api-key': 'API-Key', - 'auth-type': 'API 鉴权类型', - 'basic': '基础', - 'bearer': 'Bearer', - 'custom': '自定义', - 'api-key-title': 'API Key', - 'header': 'Header', - }, - insertVarPlaceholder: '键入 \'/\' 键快速插入变量', - timeout: { - title: '超时设置', - connectLabel: '连接超时', - connectPlaceholder: '输入连接超时(以秒为单位)', - readLabel: '读取超时', - readPlaceholder: '输入读取超时(以秒为单位)', - writeLabel: '写入超时', - writePlaceholder: '输入写入超时(以秒为单位)', - }, - curl: { - title: '导入 cURL', - placeholder: '粘贴 cURL 字符串', - }, - verifySSL: { - title: '验证 SSL 证书', - warningTooltip: '不建议在生产环境中禁用 SSL 验证。这仅应在开发或测试中使用,因为它会使连接容易受到诸如中间人攻击等安全威胁。', - }, - }, - code: { - inputVars: '输入变量', - outputVars: '输出变量', - advancedDependencies: '高级依赖', - advancedDependenciesTip: '在这里添加一些预加载需要消耗较多时间或非默认内置的依赖包', - searchDependencies: '搜索依赖', - syncFunctionSignature: '同步函数签名至代码', - }, - templateTransform: { - inputVars: '输入变量', - code: '代码', - codeSupportTip: '只支持 Jinja2', - outputVars: { - output: '转换后内容', - }, - }, - ifElse: { - if: 'If', - else: 'Else', - elseDescription: '用于定义当 if 条件不满足时应执行的逻辑。', - and: 'and', - or: 'or', - operator: '操作符', - notSetVariable: '请先设置变量', - comparisonOperator: { - 'contains': '包含', - 'not contains': '不包含', - 'start with': '开始是', - 'end with': '结束是', - 'is': '是', - 'is not': '不是', - 'empty': '为空', - 'not empty': '不为空', - 'null': '空', - 'not null': '不为空', - 'in': '在', - 'not in': '不在', - 'all of': '全部是', - 'exists': '存在', - 'not exists': '不存在', - 'before': '早于', - 'after': '晚于', - }, - optionName: { - image: '图片', - doc: '文档', - audio: '音频', - video: '视频', - localUpload: '本地上传', - url: 'URL', - }, - enterValue: '输入值', - addCondition: '添加条件', - conditionNotSetup: '条件未设置', - selectVariable: '选择变量', - addSubVariable: '添加子变量', - select: '选择', - }, - variableAssigner: { - title: '变量赋值', - outputType: '输出类型', - varNotSet: '未设置变量', - noVarTip: '添加需要赋值的变量', - type: { - string: 'String', - number: 'Number', - object: 'Object', - array: 'Array', - }, - aggregationGroup: '聚合分组', - aggregationGroupTip: '开启该功能后,变量聚合器内可以同时聚合多组变量', - addGroup: '添加分组', - outputVars: { - varDescribe: '{{groupName}}的输出变量', - }, - setAssignVariable: '设置赋值变量', - }, - assigner: { - 'assignedVariable': '赋值的变量', - 'varNotSet': '未设置变量', - 'noVarTip': '点击 "+" 按钮添加变量', - 'writeMode': '写入模式', - 'writeModeTip': '使用追加模式时,赋值的变量必须是数组类型。', - 'over-write': '覆盖', - 'append': '追加', - 'plus': '加', - 'clear': '清空', - 'setVariable': '设置变量', - 'selectAssignedVariable': '选择要赋值的变量...', - 'setParameter': '设置参数...', - 'operations': { - 'title': '操作', - 'over-write': '覆盖', - 'overwrite': '覆盖', - 'set': '设置', - 'clear': '清空', - 'extend': '扩展', - 'append': '追加', - 'remove-first': '移除首项', - 'remove-last': '移除末项', - '+=': '+=', - '-=': '-=', - '*=': '*=', - '/=': '/=', - }, - 'variable': '变量', - 'variables': '变量', - 'noAssignedVars': '没有可用的赋值变量', - 'assignedVarsDescription': '赋值变量必须是可写入的变量,例如会话变量。', - }, - tool: { - authorize: '授权', - inputVars: '输入变量', - settings: '设置', - insertPlaceholder1: '键入', - insertPlaceholder2: '插入变量', - outputVars: { - text: '工具生成的内容', - files: { - title: '工具生成的文件', - type: '支持类型。现在只支持图片', - transfer_method: '传输方式。值为 remote_url 或 local_file', - url: '图片链接', - upload_file_id: '上传文件 ID', - }, - json: '工具生成的 json', - }, - }, - questionClassifiers: { - model: '模型', - inputVars: '输入变量', - outputVars: { - className: '分类名称', - usage: '模型用量信息', - }, - class: '分类', - classNamePlaceholder: '输入你的分类名称', - advancedSetting: '高级设置', - topicName: '主题内容', - topicPlaceholder: '在这里输入你的主题内容', - addClass: '添加分类', - instruction: '指令', - instructionTip: '你可以输入额外的附加指令,帮助问题分类器更好的理解如何分类', - instructionPlaceholder: '在这里输入你的指令', - }, - parameterExtractor: { - inputVar: '输入变量', - outputVars: { - isSuccess: '是否成功。成功时值为 1,失败时值为 0。', - errorReason: '错误原因', - usage: '模型用量信息', - }, - extractParameters: '提取参数', - importFromTool: '从工具导入', - addExtractParameter: '添加提取参数', - addExtractParameterContent: { - name: '名称', - namePlaceholder: '提取参数名称', - type: '类型', - typePlaceholder: '提取参数类型', - description: '描述', - descriptionPlaceholder: '提取参数描述', - required: '必填', - requiredContent: '必填仅作为模型推理的参考,不用于参数输出的强制验证。', - }, - extractParametersNotSet: '提取参数未设置', - instruction: '指令', - instructionTip: '你可以输入额外的附加指令,帮助参数提取器理解如何提取参数', - advancedSetting: '高级设置', - reasoningMode: '推理模式', - reasoningModeTip: '你可以根据模型对于 Function calling 或 Prompt 的指令响应能力选择合适的推理模式', - }, - iteration: { - deleteTitle: '删除迭代节点?', - deleteDesc: '删除迭代节点将删除所有子节点', - input: '输入', - output: '输出变量', - iteration_one: '{{count}}个迭代', - iteration_other: '{{count}}个迭代', - currentIteration: '当前迭代', - comma: ',', - error_one: '{{count}}个失败', - error_other: '{{count}}个失败', - parallelMode: '并行模式', - parallelModeUpper: '并行模式', - parallelModeEnableTitle: '并行模式启用', - parallelModeEnableDesc: '启用并行模式时迭代内的任务支持并行执行。你可以在右侧的属性面板中进行配置。', - parallelPanelDesc: '在并行模式下,迭代中的任务支持并行执行。', - MaxParallelismTitle: '最大并行度', - MaxParallelismDesc: '最大并行度用于控制单次迭代中同时执行的任务数量。', - errorResponseMethod: '错误响应方法', - ErrorMethod: { - operationTerminated: '错误时终止', - continueOnError: '忽略错误并继续', - removeAbnormalOutput: '移除错误输出', - }, - answerNodeWarningDesc: '并行模式警告:在迭代中,回答节点、会话变量赋值和工具持久读/写操作可能会导致异常。', - flattenOutput: '扁平化输出', - flattenOutputDesc: '启用时,如果所有迭代输出都是数组,它们将被扁平化为单个数组。禁用时,输出将保持嵌套数组结构。', - }, - loop: { - deleteTitle: '删除循环节点?', - deleteDesc: '删除循环节点将删除所有子节点', - input: '输入', - output: '输出变量', - loop_one: '{{count}} 个循环', - loop_other: '{{count}} 个循环', - currentLoop: '当前循环', - comma: ',', - error_one: '{{count}}个失败', - error_other: '{{count}}个失败', - breakCondition: '循环终止条件', - breakConditionTip: '支持引用终止条件循环内的变量和会话变量。', - loopMaxCount: '最大循环次数', - loopMaxCountError: '请输入正确的 最大循环次数,范围为 1 到 {{maxCount}}', - errorResponseMethod: '错误响应方法', - ErrorMethod: { - operationTerminated: '错误时终止', - continueOnError: '忽略错误并继续', - removeAbnormalOutput: '移除错误输出', - }, - loopVariables: '循环变量', - initialLoopVariables: '初始循环变量', - finalLoopVariables: '最终循环变量', - setLoopVariables: '在循环范围内设置变量', - variableName: '变量名', - inputMode: '输入模式', - exitConditionTip: '循环节点至少需要一个退出条件', - loopNode: '循环节点', - currentLoopCount: '当前循环次数:{{count}}', - totalLoopCount: '总循环次数:{{count}}', - }, - note: { - addNote: '添加注释', - editor: { - placeholder: '输入注释...', - small: '小', - medium: '中', - large: '大', - bold: '加粗', - italic: '斜体', - strikethrough: '删除线', - link: '链接', - openLink: '打开', - unlink: '取消链接', - enterUrl: '输入链接...', - invalidUrl: '无效的链接', - bulletList: '列表', - showAuthor: '显示作者', - }, - }, - docExtractor: { - inputVar: '输入变量', - outputVars: { - text: '提取的文本', - }, - supportFileTypes: '支持的文件类型:{{types}}。', - learnMore: '了解更多', - }, - listFilter: { - inputVar: '输入变量', - filterCondition: '过滤条件', - filterConditionKey: '过滤条件的 Key', - filterConditionComparisonOperator: '过滤条件比较操作符', - filterConditionComparisonValue: '过滤条件比较值', - selectVariableKeyPlaceholder: '选择子变量的 Key', - extractsCondition: '取第 N 项', - limit: '取前 N 项', - orderBy: '排序', - asc: '升序', - desc: '降序', - outputVars: { - result: '过滤结果', - first_record: '第一条记录', - last_record: '最后一条记录', - }, - }, - agent: { - strategy: { - label: 'Agent 策略', - tooltip: '不同的 Agent 策略决定了系统如何规划和执行多步工具调用', - shortLabel: '策略', - configureTip: '请配置 Agent 策略。', - configureTipDesc: '配置完成后,此节点将自动加载剩余配置。策略将影响多步工具推理的机制。', - selectTip: '选择 Agent 策略', - searchPlaceholder: '搜索 Agent 策略', - }, - learnMore: '了解更多', - pluginNotInstalled: '插件未安装', - pluginNotInstalledDesc: '此插件是从 GitHub 安装的。请转到插件重新安装', - linkToPlugin: '转到插件', - pluginInstaller: { - install: '安装', - installing: '安装中', - }, - modelNotInMarketplace: { - title: '模型未安装', - desc: '此模型安装自本地或 GitHub 仓库。请安装后使用。', - manageInPlugins: '在插件中管理', - }, - modelNotSupport: { - title: '不支持的模型', - desc: '已安装的插件版本不提供此模型。', - descForVersionSwitch: '已安装的插件版本不提供此模型。点击切换版本。', - }, - model: '模型', - toolbox: '工具箱', - strategyNotSet: '代理策略未设置', - configureModel: '配置模型', - notAuthorized: '未授权', - tools: '工具', - maxIterations: '最大迭代次数', - modelNotInstallTooltip: '此模型未安装', - modelNotSelected: '未选择模型', - toolNotInstallTooltip: '{{tool}} 未安装', - toolNotAuthorizedTooltip: '{{tool}} 未授权', - strategyNotInstallTooltip: '{{strategy}} 未安装', - unsupportedStrategy: '不支持的策略', - strategyNotFoundDesc: '安装的插件版本不提供此策略。', - pluginNotFoundDesc: '此插件安装自 GitHub。请转到插件重新安装。', - strategyNotFoundDescAndSwitchVersion: '安装的插件版本不提供此策略。点击切换版本。', - modelSelectorTooltips: { - deprecated: '此模型已弃用', - }, - outputVars: { - text: 'agent 生成的内容', - usage: '模型用量信息', - files: { - title: 'agent 生成的文件', - type: '支持类型。现在只支持图片', - transfer_method: '传输方式。值为 remote_url 或 local_file', - url: '图片链接', - upload_file_id: '上传文件 ID', - }, - json: 'agent 生成的 json', - }, - checkList: { - strategyNotSelected: '未选择策略', - }, - installPlugin: { - title: '安装插件', - desc: '即将安装以下插件', - changelog: '更新日志', - install: '安装', - cancel: '取消', - }, - clickToViewParameterSchema: '点击查看参数 schema', - parameterSchema: '参数 Schema', - }, - dataSource: { - supportedFileFormats: '支持的文件格式', - supportedFileFormatsPlaceholder: '文件格式,例如:doc', - add: '添加数据源', - }, - knowledgeBase: { - chunkStructure: '分段结构', - chooseChunkStructure: '选择分段结构', - chunkStructureTip: { - title: '请选择分段结构', - message: 'Dify 知识库支持三种分块结构:通用、父子和问答。每个知识库只能有一种结构。前一节点的输出必须与所选的分块结构相匹配。请注意,分块结构的选择会影响可用的索引方法。', - learnMore: '了解更多', - }, - changeChunkStructure: '更改分段结构', - chunksInput: '分块', - chunksInputTip: '知识库节点的输入变量为 Chunks。该变量类型是符合特定 JSON Schema 的对象,必须与所选块结构一致。', - aboutRetrieval: '关于知识检索。', - chunkIsRequired: '分段结构是必需的', - indexMethodIsRequired: '索引方法是必需的', - chunksVariableIsRequired: 'Chunks 变量是必需的', - embeddingModelIsRequired: 'Embedding 模型是必需的', - embeddingModelIsInvalid: '无效的 Embedding 模型', - retrievalSettingIsRequired: '检索设置是必需的', - rerankingModelIsRequired: 'Reranking 模型是必需的', - rerankingModelIsInvalid: '无效的 Reranking 模型', - }, - triggerSchedule: { - frequency: { - label: '频率', - monthly: '每月', - daily: '每日', - hourly: '每小时', - weekly: '每周', - }, - title: '定时触发', - nodeTitle: '定时触发器', - useCronExpression: '使用 Cron 表达式', - selectFrequency: '选择频率', - nextExecutionTimes: '接下来 5 次执行时间', - hours: '小时', - minutes: '分钟', - onMinute: '分钟', - cronExpression: 'Cron 表达式', - weekdays: '星期', - executeNow: '立即执行', - frequencyLabel: '频率', - nextExecution: '下次执行', - time: '时间', - lastDay: '最后一天', - startTime: '开始时间', - selectDateTime: '选择日期和时间', - lastDayTooltip: '并非所有月份都有 31 天。使用"最后一天"选项来选择每个月的最后一天。', - nextExecutionTime: '下次执行时间', - useVisualPicker: '使用可视化配置', - days: '天', - notConfigured: '未配置', - mode: '模式', - modeVisual: '可视化', - modeCron: 'Cron', - selectTime: '选择时间', - timezone: '时区', - visualConfig: '可视化配置', - monthlyDay: '月份日期', - executionTime: '执行时间', - invalidTimezone: '无效的时区', - invalidCronExpression: '无效的 Cron 表达式', - noValidExecutionTime: '无法计算有效的执行时间', - executionTimeCalculationError: '执行时间计算失败', - invalidFrequency: '无效的频率', - invalidStartTime: '无效的开始时间', - startTimeMustBeFuture: '开始时间必须是将来的时间', - invalidTimeFormat: '无效的时间格式(预期格式:HH:MM AM/PM)', - invalidWeekday: '无效的工作日:{{weekday}}', - invalidMonthlyDay: '月份日期必须在 1-31 之间或为"last"', - invalidOnMinute: '分钟必须在 0-59 之间', - invalidExecutionTime: '无效的执行时间', - executionTimeMustBeFuture: '执行时间必须是将来的时间', - }, - triggerWebhook: { - configPlaceholder: 'Webhook 触发器配置将在此处实现', - title: 'Webhook 触发器', - nodeTitle: '🔗 Webhook 触发器', - webhookUrl: 'Webhook URL', - webhookUrlPlaceholder: '点击生成以创建 webhook URL', - generate: '生成', - copy: '复制', - test: '测试', - urlGenerated: 'Webhook URL 生成成功', - urlGenerationFailed: '生成 Webhook URL 失败', - urlCopied: 'URL 已复制到剪贴板', - method: '方法', - contentType: '内容类型', - queryParameters: '查询参数', - headerParameters: 'Header 参数', - requestBodyParameters: '请求体参数', - parameterName: '变量名', - varName: '变量名', - varType: '类型', - varNamePlaceholder: '输入变量名...', - required: '必填', - addParameter: '添加', - addHeader: '添加', - noParameters: '未配置任何参数', - noQueryParameters: '未配置查询参数', - noHeaders: '未配置 Header', - noBodyParameters: '未配置请求体参数', - debugUrlTitle: '测试运行时,请始终使用此URL', - debugUrlCopy: '点击复制', - debugUrlCopied: '已复制!', - errorHandling: '错误处理', - errorStrategy: '错误处理', - responseConfiguration: '响应', - asyncMode: '异步模式', - statusCode: '状态码', - responseBody: '响应体', - responseBodyPlaceholder: '在此输入您的响应体', - headers: 'Headers', - validation: { - webhookUrlRequired: '需要提供Webhook URL', - invalidParameterType: '参数"{{name}}"的参数类型"{{type}}"无效', - }, - debugUrlPrivateAddressWarning: '此 URL 似乎是内部地址,可能导致 webhook 请求失败。您可以将 TRIGGER_URL 更改为公共地址。', - }, - triggerPlugin: { - authorized: '已授权', - notConfigured: '未配置', - error: '错误', - configuration: '配置', - remove: '移除', - or: '或', - useOAuth: '使用 OAuth', - useApiKey: '使用 API Key', - authenticationFailed: '身份验证失败', - authenticationSuccess: '身份验证成功', - oauthConfigFailed: 'OAuth 配置失败', - configureOAuthClient: '配置 OAuth 客户端', - oauthClientDescription: '配置 OAuth 客户端凭据以启用身份验证', - oauthClientSaved: 'OAuth 客户端配置保存成功', - configureApiKey: '配置 API Key', - apiKeyDescription: '配置 API key 凭据进行身份验证', - apiKeyConfigured: 'API key 配置成功', - configurationFailed: '配置失败', - failedToStart: '启动身份验证流程失败', - credentialsVerified: '凭据验证成功', - credentialVerificationFailed: '凭据验证失败', - verifyAndContinue: '验证并继续', - configureParameters: '配置参数', - parametersDescription: '配置触发器参数和属性', - configurationComplete: '配置完成', - configurationCompleteDescription: '您的触发器已成功配置', - configurationCompleteMessage: '您的触发器配置已完成,现在可以使用了。', - parameters: '参数', - properties: '属性', - propertiesDescription: '此触发器的额外配置属性', - noConfigurationRequired: '此触发器不需要额外配置。', - subscriptionName: '订阅名称', - subscriptionNameDescription: '为此触发器订阅输入一个唯一名称', - subscriptionNamePlaceholder: '输入订阅名称...', - subscriptionNameRequired: '订阅名称是必需的', - subscriptionRequired: '需要配置订阅', - notAuthorized: '未授权', - selectSubscription: '选择订阅', - availableSubscriptions: '可用订阅', - addSubscription: '添加新订阅', - removeSubscription: '取消订阅', - subscriptionRemoved: '订阅已成功取消', - }, - }, - tracing: { - stopBy: '由{{user}}终止', - }, - versionHistory: { - title: '版本', - currentDraft: '当前草稿', - latest: '最新', - filter: { - all: '全部', - onlyYours: '仅你的', - onlyShowNamedVersions: '只显示已命名版本', - reset: '重置', - empty: '没有匹配的版本', - }, - defaultName: '未命名', - nameThisVersion: '命名', - editVersionInfo: '编辑信息', - copyId: '复制 ID', - editField: { - title: '标题', - releaseNotes: '发布说明', - titleLengthLimit: '标题不能超过{{limit}}个字符', - releaseNotesLengthLimit: '发布说明不能超过{{limit}}个字符', - }, - releaseNotesPlaceholder: '请描述变更', - restorationTip: '版本回滚后,当前草稿将被覆盖。', - deletionTip: '删除不可逆,请确认。', - action: { - restoreSuccess: '回滚成功', - restoreFailure: '回滚失败', - deleteSuccess: '版本已删除', - deleteFailure: '删除失败', - updateSuccess: '版本信息已更新', - updateFailure: '更新失败', - copyIdSuccess: 'ID 已复制到剪贴板', - }, - }, - debug: { - settingsTab: '设置', - lastRunTab: '上次运行', - relationsTab: '关系', - copyLastRun: '复制上次运行值', - noLastRunFound: '未找到上次运行记录', - noMatchingInputsFound: '上次运行中未找到匹配的输入', - lastRunInputsCopied: '已复制{{count}}个输入值', - copyLastRunError: '复制上次运行输入失败', - noData: { - description: '上次运行的结果将显示在这里', - runThisNode: '运行此节点', - }, - variableInspect: { - title: '变量检查', - emptyTip: '在画布上逐步浏览节点或逐步运行节点后,您可以在变量检查中查看节点变量的当前值', - emptyLink: '了解更多', - clearAll: '重置所有', - clearNode: '清除缓存', - resetConversationVar: '重置会话变量为默认值', - view: '查看记录', - edited: '已编辑', - reset: '还原至上一次运行', - listening: { - title: '正在监听触发器事件…', - tip: '您现在可以向 HTTP {{nodeName}} 端点发送测试请求以模拟事件触发,或将其用作实时事件调试的回调 URL。所有输出都可以在变量检查器中直接查看。', - tipPlugin: '现在您可以在 {{- pluginName}} 中创建事件,并在变量检查器中查看这些事件的输出。', - tipSchedule: '正在监听计划触发器事件。\n下一次计划运行时间:{{nextTriggerTime}}', - tipFallback: '正在等待触发器事件,输出结果将在此显示。', - defaultNodeName: '此触发器', - defaultPluginName: '此插件触发器', - defaultScheduleTime: '未设置', - selectedTriggers: '所选触发器', - stopButton: '停止', - }, - trigger: { - normal: '变量检查', - running: '缓存中', - stop: '停止运行', - cached: '查看缓存', - clear: '清除', - }, - envNode: '环境变量', - chatNode: '会话变量', - systemNode: '系统变量', - exportToolTip: '导出变量为文件', - largeData: '大数据 - 仅部分只读预览。请导出查看完整数据。', - largeDataNoExport: '大数据 - 仅部分预览', - export: '导出', - }, - lastOutput: '上次输出', - relations: { - dependencies: '依赖', - dependents: '被依赖', - dependenciesDescription: '本节点依赖的其他节点', - dependentsDescription: '依赖于本节点的其他节点', - noDependencies: '无依赖', - noDependents: '无被依赖', - }, - }, - triggerStatus: { - enabled: '触发器', - disabled: '触发器 • 已禁用', - }, - entryNodeStatus: { - enabled: '开始', - disabled: '开始 • 已禁用', - }, - onboarding: { - title: '选择开始节点来开始', - description: '不同的开始节点具有不同的功能。不用担心,您随时可以更改它们。', - userInputFull: '用户输入(原始开始节点)', - userInputDescription: '允许设置用户输入变量的开始节点,具有Web应用程序、服务API、MCP服务器和工作流即工具功能。', - trigger: '触发器', - triggerDescription: '触发器可以作为工作流的开始节点,例如定时任务、自定义webhook或与其他应用程序的集成。', - back: '返回', - learnMore: '了解更多', - aboutStartNode: '关于开始节点。', - escTip: { - press: '按', - key: 'esc', - toDismiss: '键关闭', - }, - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/app-annotation.json b/web/i18n/zh-Hant/app-annotation.json new file mode 100644 index 0000000000..3a3b78e866 --- /dev/null +++ b/web/i18n/zh-Hant/app-annotation.json @@ -0,0 +1,96 @@ +{ + "title": "標註", + "name": "標註回覆", + "editBy": "{{author}}編輯的答案", + "noData": { + "title": "沒有標註", + "description": "你可以在應用會話除錯中編輯標註,也可以在此批次匯入標註用於高品質回復。" + }, + "table": { + "header": { + "question": "提問", + "answer": "答案", + "createdAt": "建立時間", + "hits": "命中次數", + "actions": "操作", + "addAnnotation": "新增標註", + "bulkImport": "批次匯入", + "bulkExport": "批次匯出", + "clearAll": "刪除所有標註", + "clearAllConfirm": "要刪除所有標註嗎?" + } + }, + "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": "標註文字向量化模型,切換模型會重新嵌入,產生額外費用消耗", + "list": { + "delete": { + "title": "您確定要刪除嗎?" + } + }, + "batchAction": { + "selected": "選擇的", + "delete": "刪除", + "cancel": "銷" + } +} diff --git a/web/i18n/zh-Hant/app-annotation.ts b/web/i18n/zh-Hant/app-annotation.ts deleted file mode 100644 index c5dbf3c67a..0000000000 --- a/web/i18n/zh-Hant/app-annotation.ts +++ /dev/null @@ -1,98 +0,0 @@ -const translation = { - title: '標註', - name: '標註回覆', - editBy: '{{author}}編輯的答案', - noData: { - title: '沒有標註', - description: '你可以在應用會話除錯中編輯標註,也可以在此批次匯入標註用於高品質回復。', - }, - table: { - header: { - question: '提問', - answer: '答案', - createdAt: '建立時間', - hits: '命中次數', - actions: '操作', - addAnnotation: '新增標註', - bulkImport: '批次匯入', - bulkExport: '批次匯出', - clearAll: '刪除所有標註', - clearAllConfirm: '要刪除所有標註嗎?', - }, - }, - 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: '標註文字向量化模型,切換模型會重新嵌入,產生額外費用消耗', - list: { - delete: { - title: '您確定要刪除嗎?', - }, - }, - batchAction: { - selected: '選擇的', - delete: '刪除', - cancel: '銷', - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/app-api.json b/web/i18n/zh-Hant/app-api.json new file mode 100644 index 0000000000..ab79ae7892 --- /dev/null +++ b/web/i18n/zh-Hant/app-api.json @@ -0,0 +1,83 @@ +{ + "apiServer": "API 伺服器", + "apiKey": "API 金鑰", + "status": "狀態", + "disabled": "已停用", + "ok": "執行中", + "copy": "複製", + "copied": "已複製", + "play": "播放", + "pause": "暫停", + "playing": "播放中", + "loading": "載入中", + "merMaid": { + "rerender": "重新渲染" + }, + "never": "從未", + "apiKeyModal": { + "apiSecretKey": "API 金鑰", + "apiSecretKeyTips": "如果不想你的 API 被濫用,請保護好你的 API Key :) 最佳實踐是避免在前端程式碼中明文引用。", + "createNewSecretKey": "建立金鑰", + "secretKey": "金鑰", + "created": "建立時間", + "lastUsed": "最後使用", + "generateTips": "請將此金鑰儲存在安全且可訪問的地方。" + }, + "actionMsg": { + "deleteConfirmTitle": "刪除此金鑰?", + "deleteConfirmTips": "刪除金鑰無法撤銷,正在使用中的應用會受影響。", + "ok": "好的" + }, + "completionMode": { + "title": "文字生成型應用 API", + "info": "可用於生成高品質文字的應用,例如生成文章、摘要、翻譯等,透過呼叫 completion-messages 介面,傳送使用者輸入得到生成文字結果。用於生成文字的模型引數和提示詞模版取決於開發者在 Dify 提示詞編排頁的設定。", + "createCompletionApi": "建立文字補全訊息", + "createCompletionApiTip": "建立文字補全訊息,支援一問一答模式。", + "inputsTips": "(選填)以鍵值對方式提供使用者輸入欄位,與提示詞編排中的變數對應。Key 為變數名稱,Value 是引數值。如果欄位型別為 Select,傳入的 Value 需為預設選項之一。", + "queryTips": "使用者輸入的文字正文。", + "blocking": "blocking 阻塞型,等待執行完畢後返回結果。(請求若流程較長可能會被中斷)", + "streaming": "streaming 流式返回。基於 SSE(**[Server-Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events)**)實現流式返回。", + "messageFeedbackApi": "訊息反饋(點贊)", + "messageFeedbackApiTip": "代表終端使用者對返回訊息進行評價,可以點贊與點踩,該資料將在“日誌與標註”頁中可見,並用於後續的模型微調。", + "messageIDTip": "訊息 ID", + "ratingTip": "like 或 dislike,空值為撤銷", + "parametersApi": "獲取應用配置資訊", + "parametersApiTip": "獲取已配置的 Input 引數,包括變數名、欄位名稱、型別與預設值。通常用於客戶端載入後顯示這些欄位的表單或填入預設值。" + }, + "chatMode": { + "title": "對話型應用 API", + "info": "可用於大部分場景的對話型應用,採用一問一答模式與使用者持續對話。要開始一個對話請呼叫 chat-messages 介面,透過繼續傳入返回的 conversation_id 可持續保持該會話。", + "createChatApi": "傳送對話訊息", + "createChatApiTip": "建立會話訊息,或基於此前的對話繼續傳送訊息。", + "inputsTips": "(選填)以鍵值對方式提供使用者輸入欄位,與提示詞編排中的變數對應。Key 為變數名稱,Value 是引數值。如果欄位型別為 Select,傳入的 Value 需為預設選項之一。", + "queryTips": " 使用者輸入/提問內容", + "blocking": "blocking 阻塞型,等待執行完畢後返回結果。(請求若流程較長可能會被中斷)", + "streaming": "streaming 流式返回。基於 SSE(**[Server-Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events)**)實現流式返回。", + "conversationIdTip": "(選填)會話識別符號,首次對話可為空,如果要繼續對話請傳入上下文返回的 conversation_id", + "messageFeedbackApi": "訊息反饋(點贊)", + "messageFeedbackApiTip": "代表終端使用者對返回訊息進行評價,可以點贊與點踩,該資料將在“日誌與標註”頁中可見,並用於後續的模型微調。", + "messageIDTip": "訊息 ID", + "ratingTip": "like 或 dislike,空值為撤銷", + "chatMsgHistoryApi": "獲取會話歷史訊息", + "chatMsgHistoryApiTip": "滾動載入形式返回歷史聊天記錄,第一頁返回最新 `limit` 條,即:倒序返回。", + "chatMsgHistoryConversationIdTip": "會話 ID", + "chatMsgHistoryFirstId": "當前頁第一條聊天記錄的 ID,預設 none", + "chatMsgHistoryLimit": "一次請求返回多少條聊天記錄", + "conversationsListApi": "獲取會話列表", + "conversationsListApiTip": "獲取當前使用者的會話列表,預設返回最近的 20 條。", + "conversationsListFirstIdTip": " 當前頁最前面一條記錄的 ID,預設 none", + "conversationsListLimitTip": "一次請求返回多少條記錄", + "conversationRenamingApi": "會話重新命名", + "conversationRenamingApiTip": "對會話進行重新命名,會話名稱用於顯示在支援多會話的客戶端上。", + "conversationRenamingNameTip": "新的名稱", + "parametersApi": "獲取應用配置資訊", + "parametersApiTip": "獲取已配置的 Input 引數,包括變數名、欄位名稱、型別與預設值。通常用於客戶端載入後顯示這些欄位的表單或填入預設值。" + }, + "develop": { + "requestBody": "Request Body", + "pathParams": "Path Params", + "query": "Query", + "toc": "目录" + }, + "regenerate": "重新生成" +} diff --git a/web/i18n/zh-Hant/app-api.ts b/web/i18n/zh-Hant/app-api.ts deleted file mode 100644 index 30b80c53ba..0000000000 --- a/web/i18n/zh-Hant/app-api.ts +++ /dev/null @@ -1,85 +0,0 @@ -const translation = { - apiServer: 'API 伺服器', - apiKey: 'API 金鑰', - status: '狀態', - disabled: '已停用', - ok: '執行中', - copy: '複製', - copied: '已複製', - play: '播放', - pause: '暫停', - playing: '播放中', - loading: '載入中', - merMaid: { - rerender: '重新渲染', - }, - never: '從未', - apiKeyModal: { - apiSecretKey: 'API 金鑰', - apiSecretKeyTips: '如果不想你的 API 被濫用,請保護好你的 API Key :) 最佳實踐是避免在前端程式碼中明文引用。', - createNewSecretKey: '建立金鑰', - secretKey: '金鑰', - created: '建立時間', - lastUsed: '最後使用', - generateTips: '請將此金鑰儲存在安全且可訪問的地方。', - }, - actionMsg: { - deleteConfirmTitle: '刪除此金鑰?', - deleteConfirmTips: '刪除金鑰無法撤銷,正在使用中的應用會受影響。', - ok: '好的', - }, - completionMode: { - title: '文字生成型應用 API', - info: '可用於生成高品質文字的應用,例如生成文章、摘要、翻譯等,透過呼叫 completion-messages 介面,傳送使用者輸入得到生成文字結果。用於生成文字的模型引數和提示詞模版取決於開發者在 Dify 提示詞編排頁的設定。', - createCompletionApi: '建立文字補全訊息', - createCompletionApiTip: '建立文字補全訊息,支援一問一答模式。', - inputsTips: '(選填)以鍵值對方式提供使用者輸入欄位,與提示詞編排中的變數對應。Key 為變數名稱,Value 是引數值。如果欄位型別為 Select,傳入的 Value 需為預設選項之一。', - queryTips: '使用者輸入的文字正文。', - blocking: 'blocking 阻塞型,等待執行完畢後返回結果。(請求若流程較長可能會被中斷)', - streaming: 'streaming 流式返回。基於 SSE(**[Server-Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events)**)實現流式返回。', - messageFeedbackApi: '訊息反饋(點贊)', - messageFeedbackApiTip: '代表終端使用者對返回訊息進行評價,可以點贊與點踩,該資料將在“日誌與標註”頁中可見,並用於後續的模型微調。', - messageIDTip: '訊息 ID', - ratingTip: 'like 或 dislike,空值為撤銷', - parametersApi: '獲取應用配置資訊', - parametersApiTip: '獲取已配置的 Input 引數,包括變數名、欄位名稱、型別與預設值。通常用於客戶端載入後顯示這些欄位的表單或填入預設值。', - }, - chatMode: { - title: '對話型應用 API', - info: '可用於大部分場景的對話型應用,採用一問一答模式與使用者持續對話。要開始一個對話請呼叫 chat-messages 介面,透過繼續傳入返回的 conversation_id 可持續保持該會話。', - createChatApi: '傳送對話訊息', - createChatApiTip: '建立會話訊息,或基於此前的對話繼續傳送訊息。', - inputsTips: '(選填)以鍵值對方式提供使用者輸入欄位,與提示詞編排中的變數對應。Key 為變數名稱,Value 是引數值。如果欄位型別為 Select,傳入的 Value 需為預設選項之一。', - queryTips: ' 使用者輸入/提問內容', - blocking: 'blocking 阻塞型,等待執行完畢後返回結果。(請求若流程較長可能會被中斷)', - streaming: 'streaming 流式返回。基於 SSE(**[Server-Sent Events](https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events)**)實現流式返回。', - conversationIdTip: '(選填)會話識別符號,首次對話可為空,如果要繼續對話請傳入上下文返回的 conversation_id', - messageFeedbackApi: '訊息反饋(點贊)', - messageFeedbackApiTip: '代表終端使用者對返回訊息進行評價,可以點贊與點踩,該資料將在“日誌與標註”頁中可見,並用於後續的模型微調。', - messageIDTip: '訊息 ID', - ratingTip: 'like 或 dislike,空值為撤銷', - chatMsgHistoryApi: '獲取會話歷史訊息', - chatMsgHistoryApiTip: '滾動載入形式返回歷史聊天記錄,第一頁返回最新 `limit` 條,即:倒序返回。', - chatMsgHistoryConversationIdTip: '會話 ID', - chatMsgHistoryFirstId: '當前頁第一條聊天記錄的 ID,預設 none', - chatMsgHistoryLimit: '一次請求返回多少條聊天記錄', - conversationsListApi: '獲取會話列表', - conversationsListApiTip: '獲取當前使用者的會話列表,預設返回最近的 20 條。', - conversationsListFirstIdTip: ' 當前頁最前面一條記錄的 ID,預設 none', - conversationsListLimitTip: '一次請求返回多少條記錄', - conversationRenamingApi: '會話重新命名', - conversationRenamingApiTip: '對會話進行重新命名,會話名稱用於顯示在支援多會話的客戶端上。', - conversationRenamingNameTip: '新的名稱', - parametersApi: '獲取應用配置資訊', - parametersApiTip: '獲取已配置的 Input 引數,包括變數名、欄位名稱、型別與預設值。通常用於客戶端載入後顯示這些欄位的表單或填入預設值。', - }, - develop: { - requestBody: 'Request Body', - pathParams: 'Path Params', - query: 'Query', - toc: '目录', - }, - regenerate: '重新生成', -} - -export default translation diff --git a/web/i18n/zh-Hant/app-debug.json b/web/i18n/zh-Hant/app-debug.json new file mode 100644 index 0000000000..096f91714c --- /dev/null +++ b/web/i18n/zh-Hant/app-debug.json @@ -0,0 +1,562 @@ +{ + "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": "LLM 提供者的金鑰未設定", + "trailFinished": "試用已結束", + "description": "在除錯之前需要設定 LLM 提供者的金鑰。", + "settingBtn": "去設定" + }, + "trailUseGPT4Info": { + "title": "當前不支援使用 gpt-4", + "description": "使用 gpt-4,請設定 API Key" + }, + "feature": { + "groupChat": { + "title": "聊天增強", + "description": "為聊天型應用新增預對話設定,可以提升使用者體驗。" + }, + "groupExperience": { + "title": "體驗增強" + }, + "conversationOpener": { + "title": "對話開場白", + "description": "在對話型應用中,讓 AI 主動說第一段話可以拉近與使用者間的距離。" + }, + "suggestedQuestionsAfterAnswer": { + "title": "下一步問題建議", + "description": "設定下一步問題建議可以讓使用者更好的對話。", + "resDes": "回答結束後系統會給出 3 個建議", + "tryToAsk": "試著問問" + }, + "moreLikeThis": { + "title": "更多類似的", + "description": "一次生成多條文字,可在此基礎上編輯並繼續生成", + "generateNumTip": "每次生成數", + "tip": "使用此功能將會額外消耗 tokens" + }, + "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": "您可以匯入知識庫作為上下文", + "selectTitle": "選擇引用知識庫", + "selected": "個知識庫被選中", + "noDataSet": "未找到知識庫", + "toCreate": "去建立", + "notSupportSelectMulti": "目前只支援引用一個知識庫", + "queryVariable": { + "title": "查詢變數", + "tip": "該變數將用作上下文檢索的查詢輸入,獲取與該變數的輸入相關的上下文資訊。", + "choosePlaceholder": "請選擇變數", + "noVar": "沒有變數", + "noVarTip": "請建立變數", + "unableToQueryDataSet": "無法查詢知識庫", + "unableToQueryDataSetTip": "無法成功查詢知識庫,請在上下文部分選擇一個上下文查詢變數。", + "ok": "好的", + "contextVarNotEmpty": "上下文查詢變數不能為空", + "deleteContextVarTitle": "刪除變數“{{varName}}”?", + "deleteContextVarTip": "該變數已被設定為上下文查詢變數,刪除該變數將影響知識庫的正常使用。如果您仍需要刪除它,請在上下文部分中重新選擇它。" + } + }, + "tools": { + "title": "工具", + "tips": "工具提供了一個標準的 API 呼叫方式,將使用者輸入或變數作為 API 的請求引數,用於查詢外部資料作為上下文。", + "toolsInUse": "{{count}} 工具使用中", + "modal": { + "title": "工具", + "toolType": { + "title": "工具型別", + "placeholder": "請選擇工具型別" + }, + "name": { + "title": "名稱", + "placeholder": "請填寫名稱" + }, + "variableName": { + "title": "變數名稱", + "placeholder": "請填寫變數名稱" + } + } + }, + "conversationHistory": { + "title": "對話歷史", + "description": "設定對話角色的字首名稱", + "tip": "對話歷史未啟用,請在上面的提示中新增。", + "learnMore": "瞭解更多", + "editModal": { + "title": "編輯對話角色名稱", + "userPrefix": "使用者字首", + "assistantPrefix": "助手字首" + } + }, + "toolbox": { + "title": "工具箱" + }, + "moderation": { + "title": "內容審查", + "description": "您可以呼叫審查 API 或者維護敏感詞庫來使模型更安全地輸出。", + "allEnabled": "審查輸入/審查輸出 內容已啟用", + "inputEnabled": "審查輸入內容已啟用", + "outputEnabled": "審查輸出內容已啟用", + "modal": { + "title": "內容審查設定", + "provider": { + "title": "類別", + "openai": "OpenAI Moderation", + "openaiTip": { + "prefix": "OpenAI Moderation 需要在", + "suffix": "中配置 OpenAI API 金鑰。" + }, + "keywords": "關鍵詞" + }, + "keywords": { + "tip": "每行一個,用換行符分隔。每行最多 100 個字元。", + "placeholder": "每行一個,用換行符分隔", + "line": "行" + }, + "content": { + "input": "審查輸入內容", + "output": "審查輸出內容", + "preset": "預設回覆", + "placeholder": "這裡預設回覆內容", + "condition": "審查輸入內容和審查輸出內容至少啟用一項", + "fromApi": "預設回覆透過 API 返回", + "errorMessage": "預設回覆不能為空", + "supportMarkdown": "支援 Markdown" + }, + "openaiNotConfig": { + "before": "OpenAI 內容審查需要在", + "after": "中配置 OpenAI API 金鑰。" + } + }, + "contentEnableLabel": "內容審查已啟用" + }, + "fileUpload": { + "title": "檔案上傳", + "description": "聊天輸入框支援上傳檔案。類型包括圖片、文件以及其它類型", + "supportedTypes": "支援的檔案類型", + "numberLimit": "最大上傳數", + "modalTitle": "檔案上傳設定" + }, + "imageUpload": { + "title": "圖片上傳", + "description": "支援上傳圖片", + "supportedTypes": "支援的檔案類型", + "numberLimit": "最大上傳數", + "modalTitle": "圖片上傳設定" + }, + "bar": { + "empty": "開啟功能增強 web app 使用者體驗", + "enableText": "功能已開啟", + "manage": "管理" + }, + "documentUpload": { + "title": "文件", + "description": "啟用文件後,模型可以接收文件並回答關於它們的問題。" + }, + "audioUpload": { + "title": "音訊", + "description": "啟用音訊後,模型可以處理音訊檔案進行轉錄和分析。" + } + }, + "resetConfig": { + "title": "確認重置?", + "message": "重置將丟失當前頁面所有修改,恢復至上次釋出時的配置" + }, + "errorMessage": { + "nameOfKeyRequired": "變數 {{key}} 對應的名稱必填", + "valueOfVarRequired": "{{key}}必填", + "queryRequired": "主要文字必填", + "waitForResponse": "請等待上條資訊響應完成", + "waitForBatchResponse": "請等待批次任務完成", + "notSelectModel": "請選擇模型", + "waitForImgUpload": "請等待圖片上傳完成", + "waitForFileUpload": "請等待檔案上傳完成" + }, + "chatSubTitle": "提示詞", + "completionSubTitle": "字首提示詞", + "promptTip": "提示詞用於對 AI 的回覆做出一系列指令和約束。可插入表單變數,例如 {{input}}。這段提示詞不會被終端使用者所看到。", + "formattingChangedTitle": "編排已改變", + "formattingChangedText": "修改編排將重置除錯區域,確定嗎?", + "variableTitle": "變數", + "notSetVar": "變數能使使用者輸入表單引入提示詞或開場白,你可以試試在提示詞中輸入 {{input}}", + "variableTip": "變數將以表單形式讓使用者在對話前填寫,使用者填寫的表單內容將自動替換提示詞中的變數。", + "autoAddVar": "提示詞中引用了未定義的變數,是否自動新增到使用者輸入表單中?", + "variableTable": { + "key": "變數 Key", + "name": "欄位名稱", + "type": "型別", + "action": "操作", + "typeString": "文字", + "typeSelect": "下拉選項" + }, + "varKeyError": { + "canNoBeEmpty": "{{key}} 是必要的", + "tooLong": "{{key}} 長度太長。不能超過 30 個字元", + "notValid": "{{key}} 非法。只能包含英文字元,數字和下劃線", + "notStartWithNumber": "{{key}} 不能以數字開頭", + "keyAlreadyExists": "{{key}} 已存在" + }, + "otherError": { + "promptNoBeEmpty": "提示詞不能為空", + "historyNoBeEmpty": "提示詞中必須設定對話歷史", + "queryNoBeEmpty": "提示詞中必須設定查詢內容" + }, + "variableConfig": { + "addModalTitle": "新增變數", + "editModalTitle": "編輯變數", + "description": "設定變數 {{varName}}", + "fieldType": "欄位型別", + "string": "文字", + "text-input": "文字", + "paragraph": "段落", + "select": "下拉選項", + "number": "數字", + "notSet": "未設定,在 Prompt 中輸入 {{input}} 試試", + "stringTitle": "文字框設定", + "maxLength": "最大長度", + "options": "選項", + "addOption": "新增選項", + "apiBasedVar": "基於 API 的變數", + "varName": "變數名稱", + "inputPlaceholder": "請輸入", + "labelName": "顯示名稱", + "required": "必填", + "hide": "隱藏", + "errorMsg": { + "labelNameRequired": "顯示名稱必填", + "varNameCanBeRepeat": "變數名稱不能重複", + "atLeastOneOption": "至少需要一個選項", + "optionRepeat": "選項不能重複" + }, + "defaultValue": "預設值", + "noDefaultValue": "無預設值", + "selectDefaultValue": "選擇預設值", + "file": { + "image": { + "name": "圖像" + }, + "audio": { + "name": "音訊" + }, + "document": { + "name": "公文" + }, + "video": { + "name": "視頻" + }, + "custom": { + "name": "其他文件類型", + "description": "指定其他檔案類型。", + "createPlaceholder": "檔擴展名,例如 .doc" + }, + "supportFileTypes": "支援檔案類型" + }, + "both": "雙", + "uploadFileTypes": "上傳檔類型", + "multi-files": "檔案清單", + "content": "內容", + "localUpload": "本地上傳", + "single-file": "單個檔", + "maxNumberOfUploads": "最大上傳次數", + "maxNumberTip": "文件 < {{docLimit}}, 圖片 < {{imgLimit}}, 音訊 < {{audioLimit}}, 影片 < {{videoLimit}}", + "checkbox": "核取方塊", + "optional": "可選的", + "jsonSchema": "JSON Schema", + "json": "JSON 代碼", + "unit": "單位", + "placeholder": "預留位置", + "displayName": "顯示名稱", + "showAllSettings": "顯示所有設定", + "uploadMethod": "上傳方式", + "noDefaultSelected": "請勿選取", + "tooltipsPlaceholder": "輸入將滑鼠停留在標籤上時顯示的實用文字", + "startSelectedOption": "開始選取的選項", + "unitPlaceholder": "在數字後顯示單位,例如標記", + "placeholderPlaceholder": "輸入欄位空白時要顯示的文字", + "startChecked": "開始勾選", + "tooltips": "工具提示", + "defaultValuePlaceholder": "輸入預設值以預先填入欄位" + }, + "vision": { + "name": "視覺", + "description": "開啟視覺功能將允許模型輸入圖片,並根據影象內容的理解回答使用者問題", + "settings": "設定", + "visionSettings": { + "title": "視覺設定", + "resolution": "解析度", + "resolutionTooltip": "低解析度模式將使模型接收影象的低解析度版本,尺寸為 512 x 512,並使用 65 Tokens 來表示影象。這樣可以使 API 更快地返回響應,並在不需要高細節的用例中消耗更少的輸入。\n高解析度模式將首先允許模型檢視低解析度影象,然後根據輸入影象的大小建立 512 畫素的詳細裁剪影象。每個詳細裁剪影象使用兩倍的預算總共為 129 Tokens。", + "high": "高", + "low": "低", + "uploadMethod": "上傳方式", + "both": "兩者", + "localUpload": "本地上傳", + "url": "URL", + "uploadLimit": "上傳數量限制" + }, + "onlySupportVisionModelTip": "僅支持視覺模型" + }, + "voice": { + "name": "音色", + "defaultDisplay": "預設音色", + "description": "文字轉語音音色設定", + "settings": "設定", + "voiceSettings": { + "title": "音色設定", + "language": "語言", + "resolutionTooltip": "文字轉語音音色支援語言。", + "voice": "音色", + "autoPlay": "自動播放", + "autoPlayEnabled": "開啟", + "autoPlayDisabled": "關閉" + } + }, + "openingStatement": { + "title": "對話開場白", + "add": "新增開場白", + "writeOpener": "編寫開場白", + "placeholder": "在這裡寫下你的開場白,你可以使用變數,嘗試輸入 {{variable}}。", + "openingQuestion": "開場問題", + "openingQuestionPlaceholder": "可以使用變數,嘗試輸入 {{variable}}。", + "noDataPlaceHolder": "在對話型應用中,讓 AI 主動說第一段話可以拉近與使用者間的距離。", + "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": "根據使用者意圖和知識庫描述,由 Agent 自主判斷選擇最匹配的單個知識庫來查詢相關文字,適合知識庫區分度大且知識庫數量偏少的應用。" + }, + "retrieveMultiWay": { + "title": "多路檢索", + "description": "根據使用者意圖同時匹配所有知識庫,從多路知識庫查詢相關文字片段,經過重排序步驟,從多路查詢結果中選擇匹配使用者問題的最佳結果,需配置 Rerank 模型 API。" + }, + "rerankModelRequired": "請選擇 Rerank 模型", + "params": "引數設定", + "top_k": "Top K", + "top_kTip": "用於篩選與使用者問題相似度最高的文字片段。系統同時會根據選用模型上下文視窗大小動態調整分段數量。", + "score_threshold": "Score 閾值", + "score_thresholdTip": "用於設定文字片段篩選的相似度閾值。", + "retrieveChangeTip": "修改索引模式和檢索模式可能會影響與該知識庫關聯的應用程式。", + "embeddingModelRequired": "需要配置的嵌入模型" + }, + "debugAsSingleModel": "單一模型進行除錯", + "debugAsMultipleModel": "多個模型進行除錯", + "duplicateModel": "複製模型", + "publishAs": "釋出為", + "assistantType": { + "name": "助手型別", + "chatAssistant": { + "name": "基礎助手", + "description": "基於 LLM 構建一個聊天型助手" + }, + "agentAssistant": { + "name": "智慧助手", + "description": "構建一個智慧助手,他可以自主選擇工具完成你設定的任務" + } + }, + "agent": { + "agentMode": "Agent Mode", + "agentModeDes": "設定代理的推理模式型別", + "agentModeType": { + "ReACT": "ReAct", + "functionCall": "Function Calling" + }, + "setting": { + "name": "Agent 設定", + "description": "智慧助手設定允許設定代理模式和內建提示等高階功能,僅在代理型別中可用。", + "maximumIterations": { + "name": "最大迭代次數", + "description": "限制代理型助手執行迭代的次數" + } + }, + "buildInPrompt": "內建提示詞", + "firstPrompt": "第一次提示詞", + "nextIteration": "下一次迭代", + "promptPlaceholder": "在這裡寫下您的提示詞", + "tools": { + "name": "工具", + "description": "使用工具可以擴充套件代理的能力,比如搜尋網際網路或科學計算", + "enabled": "啟用" + } + }, + "codegen": { + "resTitle": "生成的程式碼", + "apply": "應用", + "overwriteConfirmMessage": "此作將覆蓋現有程式碼。你想繼續嗎?", + "instruction": "指示", + "instructionPlaceholder": "輸入要生成的程式碼的詳細說明。", + "generate": "生成", + "noDataLine2": "程式碼預覽將在此處顯示。", + "applyChanges": "應用更改", + "noDataLine1": "在左側描述您的用例,", + "overwriteConfirmTitle": "覆蓋現有程式碼?", + "title": "程式碼生成器", + "generatedCodeTitle": "生成的程式碼", + "loading": "產生程式碼...", + "description": "程式碼生成器使用配置的模型根據您的指令生成高品質的程式碼。請提供清晰詳細的說明。" + }, + "generate": { + "template": { + "pythonDebugger": { + "instruction": "可以根據您的指令生成和調試程式碼的機器人", + "name": "Python 調試器" + }, + "translation": { + "name": "譯本", + "instruction": "可以翻譯多種語言的翻譯器" + }, + "professionalAnalyst": { + "instruction": "提取見解、識別風險並將長報告中的關鍵資訊提煉成單個備忘錄", + "name": "專業分析師" + }, + "excelFormulaExpert": { + "name": "Excel公式專家", + "instruction": "一個聊天機器人,可以説明新手使用者根據使用者指令理解、使用和創建Excel公式" + }, + "travelPlanning": { + "instruction": "旅行計劃助手是一款智慧工具,旨在説明用戶輕鬆計劃他們的旅行", + "name": "旅行計劃" + }, + "SQLSorcerer": { + "instruction": "將日常語言轉換為 SQL 查詢", + "name": "SQL 巫師" + }, + "GitGud": { + "instruction": "根據使用者描述的版本控制作生成適當的 Git 命令", + "name": "吉特古德" + }, + "meetingTakeaways": { + "name": "會議要點", + "instruction": "將會議提煉成簡潔的摘要,包括討論主題、關鍵要點和行動專案" + }, + "writingsPolisher": { + "instruction": "使用先進的文案編輯技術來改進您的寫作", + "name": "書寫拋光機" + } + }, + "overwriteMessage": "應用此提示將覆蓋現有配置。", + "tryIt": "試試看", + "instruction": "指示", + "description": "提示生成器使用配置的模型來優化提示,以獲得更高的品質和更好的結構。請寫出清晰詳細的說明。", + "generate": "生成", + "apply": "應用", + "overwriteTitle": "覆蓋現有配置?", + "title": "提示生成器", + "loading": "為您編排應用程式...", + "resTitle": "生成的提示", + "latest": "最新", + "to": "到", + "insertContext": "插入上下文", + "versions": "版本", + "idealOutput": "理想的結果", + "optimizationNote": "優化備註", + "version": "版本", + "optional": "可選的", + "instructionPlaceHolderTitle": "描述您希望如何改善這個提示。例如:", + "dismiss": "解散", + "optimizePromptTooltip": "在提示生成器中進行優化", + "instructionPlaceHolderLine2": "輸出格式不正確,請嚴格遵循 JSON 格式。", + "instructionPlaceHolderLine1": "使輸出更簡潔,保持核心要點。", + "instructionPlaceHolderLine3": "語氣太嚴厲了,請讓它更友善一些。", + "idealOutputPlaceholder": "描述您理想的回應格式、長度、語調和內容要求...", + "press": "新聞稿", + "newNoDataLine1": "在左側列寫入指示,然後點擊生成以查看回應.", + "codeGenInstructionPlaceHolderLine": "反饋越詳細,例如輸入和輸出的數據類型以及變數的處理方式,程式碼生成就會越準確。" + }, + "warningMessage": { + "timeoutExceeded": "由於超時,不顯示結果。請參閱日誌以收集完整結果。" + }, + "noResult": "輸出將顯示在此處。" +} diff --git a/web/i18n/zh-Hant/app-debug.ts b/web/i18n/zh-Hant/app-debug.ts deleted file mode 100644 index 78b179097d..0000000000 --- a/web/i18n/zh-Hant/app-debug.ts +++ /dev/null @@ -1,567 +0,0 @@ -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: 'LLM 提供者的金鑰未設定', - trailFinished: '試用已結束', - description: '在除錯之前需要設定 LLM 提供者的金鑰。', - settingBtn: '去設定', - }, - trailUseGPT4Info: { - title: '當前不支援使用 gpt-4', - description: '使用 gpt-4,請設定 API Key', - }, - feature: { - groupChat: { - title: '聊天增強', - description: '為聊天型應用新增預對話設定,可以提升使用者體驗。', - }, - groupExperience: { - title: '體驗增強', - }, - conversationOpener: { - title: '對話開場白', - description: '在對話型應用中,讓 AI 主動說第一段話可以拉近與使用者間的距離。', - }, - suggestedQuestionsAfterAnswer: { - title: '下一步問題建議', - description: '設定下一步問題建議可以讓使用者更好的對話。', - resDes: '回答結束後系統會給出 3 個建議', - tryToAsk: '試著問問', - }, - moreLikeThis: { - title: '更多類似的', - description: '一次生成多條文字,可在此基礎上編輯並繼續生成', - generateNumTip: '每次生成數', - tip: '使用此功能將會額外消耗 tokens', - }, - 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: '您可以匯入知識庫作為上下文', - selectTitle: '選擇引用知識庫', - selected: '個知識庫被選中', - noDataSet: '未找到知識庫', - toCreate: '去建立', - notSupportSelectMulti: '目前只支援引用一個知識庫', - queryVariable: { - title: '查詢變數', - tip: '該變數將用作上下文檢索的查詢輸入,獲取與該變數的輸入相關的上下文資訊。', - choosePlaceholder: '請選擇變數', - noVar: '沒有變數', - noVarTip: '請建立變數', - unableToQueryDataSet: '無法查詢知識庫', - unableToQueryDataSetTip: '無法成功查詢知識庫,請在上下文部分選擇一個上下文查詢變數。', - ok: '好的', - contextVarNotEmpty: '上下文查詢變數不能為空', - deleteContextVarTitle: '刪除變數“{{varName}}”?', - deleteContextVarTip: '該變數已被設定為上下文查詢變數,刪除該變數將影響知識庫的正常使用。如果您仍需要刪除它,請在上下文部分中重新選擇它。', - }, - }, - tools: { - title: '工具', - tips: '工具提供了一個標準的 API 呼叫方式,將使用者輸入或變數作為 API 的請求引數,用於查詢外部資料作為上下文。', - toolsInUse: '{{count}} 工具使用中', - modal: { - title: '工具', - toolType: { - title: '工具型別', - placeholder: '請選擇工具型別', - }, - name: { - title: '名稱', - placeholder: '請填寫名稱', - }, - variableName: { - title: '變數名稱', - placeholder: '請填寫變數名稱', - }, - }, - }, - conversationHistory: { - title: '對話歷史', - description: '設定對話角色的字首名稱', - tip: '對話歷史未啟用,請在上面的提示中新增。', - learnMore: '瞭解更多', - editModal: { - title: '編輯對話角色名稱', - userPrefix: '使用者字首', - assistantPrefix: '助手字首', - }, - }, - toolbox: { - title: '工具箱', - }, - moderation: { - title: '內容審查', - description: '您可以呼叫審查 API 或者維護敏感詞庫來使模型更安全地輸出。', - allEnabled: '審查輸入/審查輸出 內容已啟用', - inputEnabled: '審查輸入內容已啟用', - outputEnabled: '審查輸出內容已啟用', - modal: { - title: '內容審查設定', - provider: { - title: '類別', - openai: 'OpenAI Moderation', - openaiTip: { - prefix: 'OpenAI Moderation 需要在', - suffix: '中配置 OpenAI API 金鑰。', - }, - keywords: '關鍵詞', - }, - keywords: { - tip: '每行一個,用換行符分隔。每行最多 100 個字元。', - placeholder: '每行一個,用換行符分隔', - line: '行', - }, - content: { - input: '審查輸入內容', - output: '審查輸出內容', - preset: '預設回覆', - placeholder: '這裡預設回覆內容', - condition: '審查輸入內容和審查輸出內容至少啟用一項', - fromApi: '預設回覆透過 API 返回', - errorMessage: '預設回覆不能為空', - supportMarkdown: '支援 Markdown', - }, - openaiNotConfig: { - before: 'OpenAI 內容審查需要在', - after: '中配置 OpenAI API 金鑰。', - }, - }, - contentEnableLabel: '內容審查已啟用', - }, - fileUpload: { - title: '檔案上傳', - description: '聊天輸入框支援上傳檔案。類型包括圖片、文件以及其它類型', - supportedTypes: '支援的檔案類型', - numberLimit: '最大上傳數', - modalTitle: '檔案上傳設定', - }, - imageUpload: { - title: '圖片上傳', - description: '支援上傳圖片', - supportedTypes: '支援的檔案類型', - numberLimit: '最大上傳數', - modalTitle: '圖片上傳設定', - }, - bar: { - empty: '開啟功能增強 web app 使用者體驗', - enableText: '功能已開啟', - manage: '管理', - }, - documentUpload: { - title: '文件', - description: '啟用文件後,模型可以接收文件並回答關於它們的問題。', - }, - audioUpload: { - title: '音訊', - description: '啟用音訊後,模型可以處理音訊檔案進行轉錄和分析。', - }, - }, - resetConfig: { - title: '確認重置?', - message: '重置將丟失當前頁面所有修改,恢復至上次釋出時的配置', - }, - errorMessage: { - nameOfKeyRequired: '變數 {{key}} 對應的名稱必填', - valueOfVarRequired: '{{key}}必填', - queryRequired: '主要文字必填', - waitForResponse: '請等待上條資訊響應完成', - waitForBatchResponse: '請等待批次任務完成', - notSelectModel: '請選擇模型', - waitForImgUpload: '請等待圖片上傳完成', - waitForFileUpload: '請等待檔案上傳完成', - }, - chatSubTitle: '提示詞', - completionSubTitle: '字首提示詞', - promptTip: - '提示詞用於對 AI 的回覆做出一系列指令和約束。可插入表單變數,例如 {{input}}。這段提示詞不會被終端使用者所看到。', - formattingChangedTitle: '編排已改變', - formattingChangedText: '修改編排將重置除錯區域,確定嗎?', - variableTitle: '變數', - notSetVar: '變數能使使用者輸入表單引入提示詞或開場白,你可以試試在提示詞中輸入 {{input}}', - variableTip: - '變數將以表單形式讓使用者在對話前填寫,使用者填寫的表單內容將自動替換提示詞中的變數。', - autoAddVar: '提示詞中引用了未定義的變數,是否自動新增到使用者輸入表單中?', - variableTable: { - key: '變數 Key', - name: '欄位名稱', - type: '型別', - action: '操作', - typeString: '文字', - typeSelect: '下拉選項', - }, - varKeyError: { - canNoBeEmpty: '{{key}} 是必要的', - tooLong: '{{key}} 長度太長。不能超過 30 個字元', - notValid: '{{key}} 非法。只能包含英文字元,數字和下劃線', - notStartWithNumber: '{{key}} 不能以數字開頭', - keyAlreadyExists: '{{key}} 已存在', - }, - otherError: { - promptNoBeEmpty: '提示詞不能為空', - historyNoBeEmpty: '提示詞中必須設定對話歷史', - queryNoBeEmpty: '提示詞中必須設定查詢內容', - }, - variableConfig: { - 'addModalTitle': '新增變數', - 'editModalTitle': '編輯變數', - 'description': '設定變數 {{varName}}', - 'fieldType': '欄位型別', - 'string': '文字', - 'text-input': '文字', - 'paragraph': '段落', - 'select': '下拉選項', - 'number': '數字', - 'notSet': '未設定,在 Prompt 中輸入 {{input}} 試試', - 'stringTitle': '文字框設定', - 'maxLength': '最大長度', - 'options': '選項', - 'addOption': '新增選項', - 'apiBasedVar': '基於 API 的變數', - 'varName': '變數名稱', - 'inputPlaceholder': '請輸入', - 'labelName': '顯示名稱', - 'required': '必填', - 'hide': '隱藏', - 'errorMsg': { - labelNameRequired: '顯示名稱必填', - varNameCanBeRepeat: '變數名稱不能重複', - atLeastOneOption: '至少需要一個選項', - optionRepeat: '選項不能重複', - }, - 'defaultValue': '預設值', - 'noDefaultValue': '無預設值', - 'selectDefaultValue': '選擇預設值', - 'file': { - image: { - name: '圖像', - }, - audio: { - name: '音訊', - }, - document: { - name: '公文', - }, - video: { - name: '視頻', - }, - custom: { - name: '其他文件類型', - description: '指定其他檔案類型。', - createPlaceholder: '檔擴展名,例如 .doc', - }, - supportFileTypes: '支援檔案類型', - }, - 'both': '雙', - 'uploadFileTypes': '上傳檔類型', - 'multi-files': '檔案清單', - 'content': '內容', - 'localUpload': '本地上傳', - 'single-file': '單個檔', - 'maxNumberOfUploads': '最大上傳次數', - 'maxNumberTip': '文件 < {{docLimit}}, 圖片 < {{imgLimit}}, 音訊 < {{audioLimit}}, 影片 < {{videoLimit}}', - 'checkbox': '核取方塊', - 'optional': '可選的', - 'jsonSchema': 'JSON Schema', - 'json': 'JSON 代碼', - 'unit': '單位', - 'placeholder': '預留位置', - 'displayName': '顯示名稱', - 'showAllSettings': '顯示所有設定', - 'uploadMethod': '上傳方式', - 'noDefaultSelected': '請勿選取', - 'tooltipsPlaceholder': '輸入將滑鼠停留在標籤上時顯示的實用文字', - 'startSelectedOption': '開始選取的選項', - 'unitPlaceholder': '在數字後顯示單位,例如標記', - 'placeholderPlaceholder': '輸入欄位空白時要顯示的文字', - 'startChecked': '開始勾選', - 'tooltips': '工具提示', - 'defaultValuePlaceholder': '輸入預設值以預先填入欄位', - }, - vision: { - name: '視覺', - description: '開啟視覺功能將允許模型輸入圖片,並根據影象內容的理解回答使用者問題', - settings: '設定', - visionSettings: { - title: '視覺設定', - resolution: '解析度', - resolutionTooltip: '低解析度模式將使模型接收影象的低解析度版本,尺寸為 512 x 512,並使用 65 Tokens 來表示影象。這樣可以使 API 更快地返回響應,並在不需要高細節的用例中消耗更少的輸入。\n高解析度模式將首先允許模型檢視低解析度影象,然後根據輸入影象的大小建立 512 畫素的詳細裁剪影象。每個詳細裁剪影象使用兩倍的預算總共為 129 Tokens。', - high: '高', - low: '低', - uploadMethod: '上傳方式', - both: '兩者', - localUpload: '本地上傳', - url: 'URL', - uploadLimit: '上傳數量限制', - }, - onlySupportVisionModelTip: '僅支持視覺模型', - }, - voice: { - name: '音色', - defaultDisplay: '預設音色', - description: '文字轉語音音色設定', - settings: '設定', - voiceSettings: { - title: '音色設定', - language: '語言', - resolutionTooltip: '文字轉語音音色支援語言。', - voice: '音色', - autoPlay: '自動播放', - autoPlayEnabled: '開啟', - autoPlayDisabled: '關閉', - }, - }, - openingStatement: { - title: '對話開場白', - add: '新增開場白', - writeOpener: '編寫開場白', - placeholder: '在這裡寫下你的開場白,你可以使用變數,嘗試輸入 {{variable}}。', - openingQuestion: '開場問題', - openingQuestionPlaceholder: '可以使用變數,嘗試輸入 {{variable}}。', - noDataPlaceHolder: - '在對話型應用中,讓 AI 主動說第一段話可以拉近與使用者間的距離。', - 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: '根據使用者意圖和知識庫描述,由 Agent 自主判斷選擇最匹配的單個知識庫來查詢相關文字,適合知識庫區分度大且知識庫數量偏少的應用。', - }, - retrieveMultiWay: { - title: '多路檢索', - description: '根據使用者意圖同時匹配所有知識庫,從多路知識庫查詢相關文字片段,經過重排序步驟,從多路查詢結果中選擇匹配使用者問題的最佳結果,需配置 Rerank 模型 API。', - }, - rerankModelRequired: '請選擇 Rerank 模型', - params: '引數設定', - top_k: 'Top K', - top_kTip: '用於篩選與使用者問題相似度最高的文字片段。系統同時會根據選用模型上下文視窗大小動態調整分段數量。', - score_threshold: 'Score 閾值', - score_thresholdTip: '用於設定文字片段篩選的相似度閾值。', - retrieveChangeTip: '修改索引模式和檢索模式可能會影響與該知識庫關聯的應用程式。', - embeddingModelRequired: '需要配置的嵌入模型', - }, - debugAsSingleModel: '單一模型進行除錯', - debugAsMultipleModel: '多個模型進行除錯', - duplicateModel: '複製模型', - publishAs: '釋出為', - assistantType: { - name: '助手型別', - chatAssistant: { - name: '基礎助手', - description: '基於 LLM 構建一個聊天型助手', - }, - agentAssistant: { - name: '智慧助手', - description: '構建一個智慧助手,他可以自主選擇工具完成你設定的任務', - }, - }, - agent: { - agentMode: 'Agent Mode', - agentModeDes: '設定代理的推理模式型別', - agentModeType: { - ReACT: 'ReAct', - functionCall: 'Function Calling', - }, - setting: { - name: 'Agent 設定', - description: '智慧助手設定允許設定代理模式和內建提示等高階功能,僅在代理型別中可用。', - maximumIterations: { - name: '最大迭代次數', - description: '限制代理型助手執行迭代的次數', - }, - }, - buildInPrompt: '內建提示詞', - firstPrompt: '第一次提示詞', - nextIteration: '下一次迭代', - promptPlaceholder: '在這裡寫下您的提示詞', - tools: { - name: '工具', - description: '使用工具可以擴充套件代理的能力,比如搜尋網際網路或科學計算', - enabled: '啟用', - }, - }, - codegen: { - resTitle: '生成的程式碼', - apply: '應用', - overwriteConfirmMessage: '此作將覆蓋現有程式碼。你想繼續嗎?', - instruction: '指示', - instructionPlaceholder: '輸入要生成的程式碼的詳細說明。', - generate: '生成', - noDataLine2: '程式碼預覽將在此處顯示。', - applyChanges: '應用更改', - noDataLine1: '在左側描述您的用例,', - overwriteConfirmTitle: '覆蓋現有程式碼?', - title: '程式碼生成器', - generatedCodeTitle: '生成的程式碼', - loading: '產生程式碼...', - description: '程式碼生成器使用配置的模型根據您的指令生成高品質的程式碼。請提供清晰詳細的說明。', - }, - generate: { - template: { - pythonDebugger: { - instruction: '可以根據您的指令生成和調試程式碼的機器人', - name: 'Python 調試器', - }, - translation: { - name: '譯本', - instruction: '可以翻譯多種語言的翻譯器', - }, - professionalAnalyst: { - instruction: '提取見解、識別風險並將長報告中的關鍵資訊提煉成單個備忘錄', - name: '專業分析師', - }, - excelFormulaExpert: { - name: 'Excel公式專家', - instruction: '一個聊天機器人,可以説明新手使用者根據使用者指令理解、使用和創建Excel公式', - }, - travelPlanning: { - instruction: '旅行計劃助手是一款智慧工具,旨在説明用戶輕鬆計劃他們的旅行', - name: '旅行計劃', - }, - SQLSorcerer: { - instruction: '將日常語言轉換為 SQL 查詢', - name: 'SQL 巫師', - }, - GitGud: { - instruction: '根據使用者描述的版本控制作生成適當的 Git 命令', - name: '吉特古德', - }, - meetingTakeaways: { - name: '會議要點', - instruction: '將會議提煉成簡潔的摘要,包括討論主題、關鍵要點和行動專案', - }, - writingsPolisher: { - instruction: '使用先進的文案編輯技術來改進您的寫作', - name: '書寫拋光機', - }, - }, - overwriteMessage: '應用此提示將覆蓋現有配置。', - tryIt: '試試看', - instruction: '指示', - description: '提示生成器使用配置的模型來優化提示,以獲得更高的品質和更好的結構。請寫出清晰詳細的說明。', - generate: '生成', - apply: '應用', - overwriteTitle: '覆蓋現有配置?', - title: '提示生成器', - loading: '為您編排應用程式...', - resTitle: '生成的提示', - latest: '最新', - to: '到', - insertContext: '插入上下文', - versions: '版本', - idealOutput: '理想的結果', - optimizationNote: '優化備註', - version: '版本', - optional: '可選的', - instructionPlaceHolderTitle: '描述您希望如何改善這個提示。例如:', - dismiss: '解散', - optimizePromptTooltip: '在提示生成器中進行優化', - instructionPlaceHolderLine2: '輸出格式不正確,請嚴格遵循 JSON 格式。', - instructionPlaceHolderLine1: '使輸出更簡潔,保持核心要點。', - instructionPlaceHolderLine3: '語氣太嚴厲了,請讓它更友善一些。', - idealOutputPlaceholder: '描述您理想的回應格式、長度、語調和內容要求...', - press: '新聞稿', - newNoDataLine1: '在左側列寫入指示,然後點擊生成以查看回應.', - codeGenInstructionPlaceHolderLine: '反饋越詳細,例如輸入和輸出的數據類型以及變數的處理方式,程式碼生成就會越準確。', - }, - warningMessage: { - timeoutExceeded: '由於超時,不顯示結果。請參閱日誌以收集完整結果。', - }, - noResult: '輸出將顯示在此處。', -} - -export default translation diff --git a/web/i18n/zh-Hant/app-log.json b/web/i18n/zh-Hant/app-log.json new file mode 100644 index 0000000000..e7d3c97c70 --- /dev/null +++ b/web/i18n/zh-Hant/app-log.json @@ -0,0 +1,110 @@ +{ + "title": "日誌", + "description": "日誌記錄了應用的執行情況,包括使用者的輸入和 AI 的回覆。", + "dateTimeFormat": "YYYY-MM-DD HH:mm:ss", + "table": { + "header": { + "updatedTime": "更新時間", + "time": "創建時間", + "endUser": "使用者或賬戶", + "input": "輸入", + "output": "輸出", + "summary": "標題", + "messageCount": "訊息數", + "userRate": "使用者反饋", + "adminRate": "管理員反饋", + "startTime": "開始時間", + "status": "狀態", + "runtime": "執行時間", + "tokens": "TOKENS", + "user": "使用者或賬戶", + "version": "版本", + "triggered_from": "由…觸發" + }, + "pagination": { + "previous": "上一頁", + "next": "下一頁" + }, + "empty": { + "noChat": "未開始的對話", + "noOutput": "無輸出", + "element": { + "title": "這裡有人嗎", + "content": "在這裡觀測和標註終端使用者和 AI 應用程式之間的互動,以不斷提高 AI 的準確性。您可以嘗試分享測試此Web應用程序,然後返回此頁面。" + } + } + }, + "detail": { + "time": "時間", + "conversationId": "對話 ID", + "promptTemplate": "字首提示詞", + "promptTemplateBeforeChat": "對話前提示詞 · 以系統訊息提交", + "annotationTip": "{{user}} 標記的改進回覆", + "timeConsuming": "耗時", + "second": " 秒", + "tokenCost": "花費 Token", + "loading": "載入中", + "operation": { + "like": "贊同", + "dislike": "反對", + "addAnnotation": "標記改進回覆", + "editAnnotation": "編輯改進回覆", + "annotationPlaceholder": "輸入你希望 AI 回覆的預期答案,這在今後可用於模型微調,持續改進文字生成品質。" + }, + "variables": "變數", + "uploadImages": "上傳的圖片", + "modelParams": "模型參數" + }, + "filter": { + "period": { + "today": "今天", + "last7days": "過去 7 天", + "last4weeks": "過去 4 周", + "last3months": "過去 3 月", + "last12months": "過去 12 月", + "monthToDate": "本月至今", + "quarterToDate": "本季度至今", + "yearToDate": "本年至今", + "allTime": "所有時間", + "last30days": "過去30天", + "custom": "自訂" + }, + "annotation": { + "all": "全部", + "annotated": "已標註改進({{count}} 項)", + "not_annotated": "未標註" + }, + "sortBy": "排序:", + "descending": "降序", + "ascending": "升序" + }, + "workflowTitle": "日誌", + "workflowSubtitle": "日誌記錄了應用的執行情況", + "runDetail": { + "title": "對話日誌", + "workflowTitle": "日誌詳情", + "fileListDetail": "細節", + "fileListLabel": "檔詳細資訊", + "testWithParams": "使用參數測試" + }, + "promptLog": "Prompt 日誌", + "agentLog": "Agent 日誌", + "viewLog": "檢視日誌", + "agentLogDetail": { + "agentMode": "Agent 模式", + "toolUsed": "使用工具", + "iterations": "迭代次數", + "iteration": "迭代", + "finalProcessing": "最終處理" + }, + "dateFormat": "月/日/年", + "triggerBy": { + "debugging": "除錯", + "appRun": "網頁應用程式", + "webhook": "Webhook", + "schedule": "時間表", + "plugin": "插件", + "ragPipelineRun": "RAG 流程", + "ragPipelineDebugging": "RAG 除錯" + } +} diff --git a/web/i18n/zh-Hant/app-log.ts b/web/i18n/zh-Hant/app-log.ts deleted file mode 100644 index 6873eece96..0000000000 --- a/web/i18n/zh-Hant/app-log.ts +++ /dev/null @@ -1,112 +0,0 @@ -const translation = { - title: '日誌', - description: '日誌記錄了應用的執行情況,包括使用者的輸入和 AI 的回覆。', - dateTimeFormat: 'YYYY-MM-DD HH:mm:ss', - table: { - header: { - updatedTime: '更新時間', - time: '創建時間', - endUser: '使用者或賬戶', - input: '輸入', - output: '輸出', - summary: '標題', - messageCount: '訊息數', - userRate: '使用者反饋', - adminRate: '管理員反饋', - startTime: '開始時間', - status: '狀態', - runtime: '執行時間', - tokens: 'TOKENS', - user: '使用者或賬戶', - version: '版本', - triggered_from: '由…觸發', - }, - pagination: { - previous: '上一頁', - next: '下一頁', - }, - empty: { - noChat: '未開始的對話', - noOutput: '無輸出', - element: { - title: '這裡有人嗎', - content: '在這裡觀測和標註終端使用者和 AI 應用程式之間的互動,以不斷提高 AI 的準確性。您可以嘗試分享測試此Web應用程序,然後返回此頁面。', - }, - }, - }, - detail: { - time: '時間', - conversationId: '對話 ID', - promptTemplate: '字首提示詞', - promptTemplateBeforeChat: '對話前提示詞 · 以系統訊息提交', - annotationTip: '{{user}} 標記的改進回覆', - timeConsuming: '耗時', - second: ' 秒', - tokenCost: '花費 Token', - loading: '載入中', - operation: { - like: '贊同', - dislike: '反對', - addAnnotation: '標記改進回覆', - editAnnotation: '編輯改進回覆', - annotationPlaceholder: '輸入你希望 AI 回覆的預期答案,這在今後可用於模型微調,持續改進文字生成品質。', - }, - variables: '變數', - uploadImages: '上傳的圖片', - modelParams: '模型參數', - }, - filter: { - period: { - today: '今天', - last7days: '過去 7 天', - last4weeks: '過去 4 周', - last3months: '過去 3 月', - last12months: '過去 12 月', - monthToDate: '本月至今', - quarterToDate: '本季度至今', - yearToDate: '本年至今', - allTime: '所有時間', - last30days: '過去30天', - custom: '自訂', - }, - annotation: { - all: '全部', - annotated: '已標註改進({{count}} 項)', - not_annotated: '未標註', - }, - sortBy: '排序:', - descending: '降序', - ascending: '升序', - }, - workflowTitle: '日誌', - workflowSubtitle: '日誌記錄了應用的執行情況', - runDetail: { - title: '對話日誌', - workflowTitle: '日誌詳情', - fileListDetail: '細節', - fileListLabel: '檔詳細資訊', - testWithParams: '使用參數測試', - }, - promptLog: 'Prompt 日誌', - agentLog: 'Agent 日誌', - viewLog: '檢視日誌', - agentLogDetail: { - agentMode: 'Agent 模式', - toolUsed: '使用工具', - iterations: '迭代次數', - iteration: '迭代', - finalProcessing: '最終處理', - }, - dateFormat: '月/日/年', - triggerBy: { - debugging: '除錯', - appRun: '網頁應用程式', - webhook: 'Webhook', - schedule: '時間表', - plugin: '插件', - ragPipelineRun: 'RAG 流程', - ragPipelineDebugging: 'RAG 除錯', - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/app-overview.json b/web/i18n/zh-Hant/app-overview.json new file mode 100644 index 0000000000..d8363aa3fe --- /dev/null +++ b/web/i18n/zh-Hant/app-overview.json @@ -0,0 +1,187 @@ +{ + "welcome": { + "firstStepTip": "開始之前,", + "enterKeyTip": "請先在下方輸入你的 OpenAI API Key", + "getKeyTip": "從 OpenAI 獲取你的 API Key", + "placeholder": "你的 OpenAI API Key(例如 sk-xxxx)" + }, + "apiKeyInfo": { + "cloud": { + "trial": { + "title": "您正在使用 {{providerName}} 的試用配額。", + "description": "試用配額僅供您測試使用。在試用配額用完之前,請自行設定模型提供商或購買額外配額。" + }, + "exhausted": { + "title": "您的試用額度已用完,請設定您的 APIKey。", + "description": "您的試用配額已用完。請設定您自己的模型提供商或購買額外配額。" + } + }, + "selfHost": { + "title": { + "row1": "首先,", + "row2": "設定您的模型提供商。" + } + }, + "callTimes": "呼叫次數", + "usedToken": "使用 Tokens", + "setAPIBtn": "設定模型提供商", + "tryCloud": "或者嘗試使用 Dify 的雲版本並使用試用配額" + }, + "overview": { + "title": "概覽", + "appInfo": { + "explanation": "開箱即用的 AI web app", + "accessibleAddress": "公開訪問 URL", + "preview": "預覽", + "regenerate": "重新生成", + "regenerateNotice": "您是否要重新生成公開訪問 URL?", + "preUseReminder": "使用前請先開啟開關", + "settings": { + "entry": "設定", + "title": "web app 設定", + "webName": "web app 名稱", + "webDesc": "web app 描述", + "webDescTip": "以下文字將展示在客戶端中,對應用進行說明和使用上的基本引導", + "webDescPlaceholder": "請輸入 web app 的描述", + "language": "語言", + "workflow": { + "title": "工作流程步驟", + "show": "展示", + "hide": "隱藏", + "subTitle": "工作流詳細資訊", + "showDesc": "在 web app 中顯示或隱藏工作流詳細資訊" + }, + "chatColorTheme": "聊天顏色主題", + "chatColorThemeDesc": "設定聊天機器人的顏色主題", + "chatColorThemeInverted": "反轉", + "invalidHexMessage": "無效的十六進制值", + "invalidPrivacyPolicy": "無效的隱私政策連結,請使用以 http 或 https 開頭的有效連結", + "more": { + "entry": "展示更多設定", + "copyright": "版權", + "copyRightPlaceholder": "請輸入作者或組織名稱", + "privacyPolicy": "隱私政策", + "privacyPolicyPlaceholder": "請輸入隱私政策連結", + "privacyPolicyTip": "幫助訪問者瞭解該應用收集的資料,可參考 Dify 的隱私政策。", + "customDisclaimer": "自定義免責聲明", + "customDisclaimerPlaceholder": "請輸入免責聲明", + "customDisclaimerTip": "客製化的免責聲明文字將在客戶端顯示,提供有關應用程式的額外資訊。", + "copyrightTip": "在 Web 應用程式中顯示版權資訊", + "copyrightTooltip": "請升級至專業計劃或以上" + }, + "sso": { + "description": "所有使用者在使用 web app 之前都需要使用 SSO 登錄", + "title": "web app SSO", + "tooltip": "聯繫管理員以啟用 web app SSO", + "label": "SSO 身份驗證" + }, + "modalTip": "用戶端 Web 應用程式設置。" + }, + "embedded": { + "entry": "嵌入", + "title": "嵌入到網站中", + "explanation": "選擇一種方式將聊天應用嵌入到你的網站中", + "iframe": "將以下 iframe 嵌入到你的網站中的目標位置", + "scripts": "將以下程式碼嵌入到你的網站中", + "chromePlugin": "安裝 Dify Chrome 瀏覽器擴充套件", + "copied": "已複製", + "copy": "複製" + }, + "qrcode": { + "title": "二維碼分享", + "scan": "掃碼分享應用", + "download": "下載二維碼" + }, + "customize": { + "way": "方法", + "entry": "定製化", + "title": "定製化 AI web app", + "explanation": "你可以定製化 Web App 前端以符合你的情景與風格需求", + "way1": { + "name": "Fork 客戶端程式碼修改後部署到 Vercel(推薦)", + "step1": "Fork 客戶端程式碼並修改", + "step1Tip": "點選此處 Fork 原始碼到你的 GitHub 中,然後修改程式碼", + "step1Operation": "Dify-WebClient", + "step2": "部署到 Vercel 中", + "step2Tip": "點選此處將倉庫匯入到 Vercel 中部署", + "step2Operation": "匯入倉庫", + "step3": "配置環境變數", + "step3Tip": "在 Vercel 環境變數中新增以下環境變數" + }, + "way2": { + "name": "編寫客戶端呼叫 API 並部署到伺服器中", + "operation": "檢視文件" + } + }, + "launch": "發射", + "enableTooltip": { + "description": "要啟用此功能,請在畫布上添加一個使用者輸入節點。(可能草稿中已存在,發布後生效)", + "learnMore": "了解更多" + }, + "title": "網頁應用程式" + }, + "apiInfo": { + "title": "後端服務 API", + "explanation": "可整合至你的應用的後端即服務", + "accessibleAddress": "API 訪問憑據", + "doc": "查閱 API 文件" + }, + "status": { + "running": "執行中", + "disable": "已停用" + }, + "triggerInfo": { + "title": "觸發因素", + "explanation": "工作流程觸發管理", + "triggersAdded": "{{count}} 已新增觸發器", + "noTriggerAdded": "未添加觸發器", + "triggerStatusDescription": "觸發節點狀態將顯示於此。(可能已存在於草稿中,發布後生效)", + "learnAboutTriggers": "了解觸發因素" + }, + "disableTooltip": { + "triggerMode": "觸發節點模式不支援 {{feature}} 功能。" + } + }, + "analysis": { + "title": "分析", + "ms": "毫秒", + "tokenPS": "Token/秒", + "totalMessages": { + "title": "全部訊息數", + "explanation": "反映 AI 每天的互動總次數,每回答使用者一個問題算一條 Message。提示詞編排和除錯的訊息不計入。" + }, + "activeUsers": { + "title": "活躍使用者數", + "explanation": "每日 AI 互動次數。" + }, + "totalConversations": { + "title": "總對話數", + "explanation": "每日 AI 對話次數;不包括提示工程/調試。" + }, + "tokenUsage": { + "title": "費用消耗", + "explanation": "反映每日該應用請求語言模型的 Tokens 花費,用於成本控制。", + "consumed": "耗費" + }, + "avgSessionInteractions": { + "title": "平均會話互動數", + "explanation": "反映每個會話使用者的持續溝通次數,如果使用者與 AI 問答了 10 輪,即為 10。該指標反映了使用者粘性。僅在對話型應用提供。" + }, + "avgUserInteractions": { + "title": "平均使用者呼叫次數", + "explanation": "反映每天使用者的使用次數。該指標反映了使用者粘性。" + }, + "userSatisfactionRate": { + "title": "使用者滿意度", + "explanation": "每 1000 條訊息的點贊數。反映了使用者對回答十分滿意的比例。" + }, + "avgResponseTime": { + "title": "平均響應時間", + "explanation": "衡量 AI 應用處理和回覆使用者請求所花費的平均時間,單位為毫秒,反映效能和使用者體驗。僅在文字型應用提供。" + }, + "tps": { + "title": "Token 輸出速度", + "explanation": "衡量 LLM 的效能。統計 LLM 從請求開始到輸出完畢這段期間的 Tokens 輸出速度。" + } + } +} diff --git a/web/i18n/zh-Hant/app-overview.ts b/web/i18n/zh-Hant/app-overview.ts deleted file mode 100644 index cbf2d15ff9..0000000000 --- a/web/i18n/zh-Hant/app-overview.ts +++ /dev/null @@ -1,189 +0,0 @@ -const translation = { - welcome: { - firstStepTip: '開始之前,', - enterKeyTip: '請先在下方輸入你的 OpenAI API Key', - getKeyTip: '從 OpenAI 獲取你的 API Key', - placeholder: '你的 OpenAI API Key(例如 sk-xxxx)', - }, - apiKeyInfo: { - cloud: { - trial: { - title: '您正在使用 {{providerName}} 的試用配額。', - description: '試用配額僅供您測試使用。在試用配額用完之前,請自行設定模型提供商或購買額外配額。', - }, - exhausted: { - title: '您的試用額度已用完,請設定您的 APIKey。', - description: '您的試用配額已用完。請設定您自己的模型提供商或購買額外配額。', - }, - }, - selfHost: { - title: { - row1: '首先,', - row2: '設定您的模型提供商。', - }, - }, - callTimes: '呼叫次數', - usedToken: '使用 Tokens', - setAPIBtn: '設定模型提供商', - tryCloud: '或者嘗試使用 Dify 的雲版本並使用試用配額', - }, - overview: { - title: '概覽', - appInfo: { - explanation: '開箱即用的 AI web app', - accessibleAddress: '公開訪問 URL', - preview: '預覽', - regenerate: '重新生成', - regenerateNotice: '您是否要重新生成公開訪問 URL?', - preUseReminder: '使用前請先開啟開關', - settings: { - entry: '設定', - title: 'web app 設定', - webName: 'web app 名稱', - webDesc: 'web app 描述', - webDescTip: '以下文字將展示在客戶端中,對應用進行說明和使用上的基本引導', - webDescPlaceholder: '請輸入 web app 的描述', - language: '語言', - workflow: { - title: '工作流程步驟', - show: '展示', - hide: '隱藏', - subTitle: '工作流詳細資訊', - showDesc: '在 web app 中顯示或隱藏工作流詳細資訊', - }, - chatColorTheme: '聊天顏色主題', - chatColorThemeDesc: '設定聊天機器人的顏色主題', - chatColorThemeInverted: '反轉', - invalidHexMessage: '無效的十六進制值', - invalidPrivacyPolicy: '無效的隱私政策連結,請使用以 http 或 https 開頭的有效連結', - more: { - entry: '展示更多設定', - copyright: '版權', - copyRightPlaceholder: '請輸入作者或組織名稱', - privacyPolicy: '隱私政策', - privacyPolicyPlaceholder: '請輸入隱私政策連結', - privacyPolicyTip: '幫助訪問者瞭解該應用收集的資料,可參考 Dify 的隱私政策。', - customDisclaimer: '自定義免責聲明', - customDisclaimerPlaceholder: '請輸入免責聲明', - customDisclaimerTip: '客製化的免責聲明文字將在客戶端顯示,提供有關應用程式的額外資訊。', - copyrightTip: '在 Web 應用程式中顯示版權資訊', - copyrightTooltip: '請升級至專業計劃或以上', - }, - sso: { - description: '所有使用者在使用 web app 之前都需要使用 SSO 登錄', - title: 'web app SSO', - tooltip: '聯繫管理員以啟用 web app SSO', - label: 'SSO 身份驗證', - }, - modalTip: '用戶端 Web 應用程式設置。', - }, - embedded: { - entry: '嵌入', - title: '嵌入到網站中', - explanation: '選擇一種方式將聊天應用嵌入到你的網站中', - iframe: '將以下 iframe 嵌入到你的網站中的目標位置', - scripts: '將以下程式碼嵌入到你的網站中', - chromePlugin: '安裝 Dify Chrome 瀏覽器擴充套件', - copied: '已複製', - copy: '複製', - }, - qrcode: { - title: '二維碼分享', - scan: '掃碼分享應用', - download: '下載二維碼', - }, - customize: { - way: '方法', - entry: '定製化', - title: '定製化 AI web app', - explanation: '你可以定製化 Web App 前端以符合你的情景與風格需求', - way1: { - name: 'Fork 客戶端程式碼修改後部署到 Vercel(推薦)', - step1: 'Fork 客戶端程式碼並修改', - step1Tip: '點選此處 Fork 原始碼到你的 GitHub 中,然後修改程式碼', - step1Operation: 'Dify-WebClient', - step2: '部署到 Vercel 中', - step2Tip: '點選此處將倉庫匯入到 Vercel 中部署', - step2Operation: '匯入倉庫', - step3: '配置環境變數', - step3Tip: '在 Vercel 環境變數中新增以下環境變數', - }, - way2: { - name: '編寫客戶端呼叫 API 並部署到伺服器中', - operation: '檢視文件', - }, - }, - launch: '發射', - enableTooltip: { - description: '要啟用此功能,請在畫布上添加一個使用者輸入節點。(可能草稿中已存在,發布後生效)', - learnMore: '了解更多', - }, - title: '網頁應用程式', - }, - apiInfo: { - title: '後端服務 API', - explanation: '可整合至你的應用的後端即服務', - accessibleAddress: 'API 訪問憑據', - doc: '查閱 API 文件', - }, - status: { - running: '執行中', - disable: '已停用', - }, - triggerInfo: { - title: '觸發因素', - explanation: '工作流程觸發管理', - triggersAdded: '{{count}} 已新增觸發器', - noTriggerAdded: '未添加觸發器', - triggerStatusDescription: '觸發節點狀態將顯示於此。(可能已存在於草稿中,發布後生效)', - learnAboutTriggers: '了解觸發因素', - }, - disableTooltip: { - triggerMode: '觸發節點模式不支援 {{feature}} 功能。', - }, - }, - analysis: { - title: '分析', - ms: '毫秒', - tokenPS: 'Token/秒', - totalMessages: { - title: '全部訊息數', - explanation: '反映 AI 每天的互動總次數,每回答使用者一個問題算一條 Message。提示詞編排和除錯的訊息不計入。', - }, - activeUsers: { - title: '活躍使用者數', - explanation: '每日 AI 互動次數。', - }, - totalConversations: { - title: '總對話數', - explanation: '每日 AI 對話次數;不包括提示工程/調試。', - }, - tokenUsage: { - title: '費用消耗', - explanation: '反映每日該應用請求語言模型的 Tokens 花費,用於成本控制。', - consumed: '耗費', - }, - avgSessionInteractions: { - title: '平均會話互動數', - explanation: '反映每個會話使用者的持續溝通次數,如果使用者與 AI 問答了 10 輪,即為 10。該指標反映了使用者粘性。僅在對話型應用提供。', - }, - avgUserInteractions: { - title: '平均使用者呼叫次數', - explanation: '反映每天使用者的使用次數。該指標反映了使用者粘性。', - }, - userSatisfactionRate: { - title: '使用者滿意度', - explanation: '每 1000 條訊息的點贊數。反映了使用者對回答十分滿意的比例。', - }, - avgResponseTime: { - title: '平均響應時間', - explanation: '衡量 AI 應用處理和回覆使用者請求所花費的平均時間,單位為毫秒,反映效能和使用者體驗。僅在文字型應用提供。', - }, - tps: { - title: 'Token 輸出速度', - explanation: '衡量 LLM 的效能。統計 LLM 從請求開始到輸出完畢這段期間的 Tokens 輸出速度。', - }, - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/app.json b/web/i18n/zh-Hant/app.json new file mode 100644 index 0000000000..c7d5a0e0df --- /dev/null +++ b/web/i18n/zh-Hant/app.json @@ -0,0 +1,345 @@ +{ + "createApp": "建立應用", + "types": { + "all": "全部", + "chatbot": "聊天助手", + "agent": "Agent", + "workflow": "工作流", + "completion": "文字生成", + "advanced": "聊天流", + "basic": "基本" + }, + "duplicate": "複製", + "duplicateTitle": "複製應用", + "export": "匯出 DSL", + "exportFailed": "匯出 DSL 失敗", + "importDSL": "匯入 DSL 檔案", + "createFromConfigFile": "透過 DSL 檔案建立", + "deleteAppConfirmTitle": "確認刪除應用?", + "deleteAppConfirmContent": "刪除應用將無法復原。使用者將無法存取你的應用,所有 Prompt 設定和日誌都將一併被刪除。", + "appDeleted": "應用已刪除", + "appDeleteFailed": "應用刪除失敗", + "join": "參與社群", + "communityIntro": "與團隊成員、貢獻者和開發者在不同頻道中交流", + "roadmap": "產品路線圖", + "newApp": { + "startFromBlank": "建立空白應用", + "startFromTemplate": "從應用模版建立", + "workflowWarning": "正在進行 Beta 測試", + "captionName": "應用名稱 & 圖示", + "appNamePlaceholder": "給你的應用起個名字", + "captionDescription": "描述", + "appDescriptionPlaceholder": "輸入應用的描述", + "useTemplate": "使用該模板", + "previewDemo": "預覽 Demo", + "chatApp": "助手", + "chatAppIntro": "我要構建一個聊天場景的應用。該應用採用一問一答模式與使用者持續對話。", + "agentAssistant": "新的智慧助手", + "completeApp": "文字生成應用", + "completeAppIntro": "我要構建一個根據提示生成高品質文字的應用,例如生成文章、摘要、翻譯等", + "showTemplates": "我想從範例模板中選擇", + "hideTemplates": "返回應用類型選擇", + "Create": "建立", + "Cancel": "取消", + "nameNotEmpty": "名稱不能為空", + "appTemplateNotSelected": "請選擇應用模版", + "appTypeRequired": "請選擇應用類型", + "appCreated": "應用已建立", + "appCreateFailed": "應用建立失敗", + "caution": "謹慎", + "appCreateDSLErrorPart2": "是否要繼續?", + "appCreateDSLErrorPart3": "目前的應用程式 DSL 版本:", + "Confirm": "確認", + "appCreateDSLErrorTitle": "版本不相容", + "appCreateDSLErrorPart1": "已檢測到 DSL 版本存在顯著差異。強制導入可能會導致應用程式出現故障。", + "appCreateDSLErrorPart4": "系統支援的 DSL 版本:", + "appCreateDSLWarning": "注意:DSL 版本差異可能會影響某些功能", + "learnMore": "瞭解更多資訊", + "optional": "自選", + "foundResults": "{{count}}結果", + "noAppsFound": "未找到應用程式", + "forBeginners": "對於初學者", + "noTemplateFound": "未找到範本", + "noIdeaTip": "沒有想法?查看我們的範本", + "forAdvanced": "對於高級使用者", + "workflowUserDescription": "用於自動化和批處理等單輪任務的工作流編排。", + "chatbotUserDescription": "通過簡單的配置快速構建基於 LLM 的聊天機器人。您可以稍後切換到 Chatflow。", + "completionUserDescription": "通過簡單的配置快速構建用於文本生成任務的 AI 助手。", + "foundResult": "{{count}}結果", + "advancedShortDescription": "具有記憶的複雜多回合對話的工作流程", + "workflowShortDescription": "用於單輪自動化任務的編排", + "chatbotShortDescription": "基於 LLM 的聊天機器人,設置簡單", + "agentShortDescription": "具有推理和自主工具使用的智慧代理", + "noTemplateFoundTip": "嘗試使用不同的關鍵字進行搜索。", + "agentUserDescription": "一個能夠進行反覆運算推理和自主工具使用來實現任務目標的智慧代理。", + "advancedUserDescription": "具有記憶體功能的多輪複雜對話任務的工作流程編排。", + "chooseAppType": "選擇 App Type", + "completionShortDescription": "用於文本生成任務的 AI 助手", + "dropDSLToCreateApp": "將 DSL 檔案拖放到此處以創建應用程式", + "import": "進口" + }, + "editApp": "編輯資訊", + "editAppTitle": "編輯應用資訊", + "editDone": "應用資訊已更新", + "editFailed": "更新應用資訊失敗", + "iconPicker": { + "ok": "確認", + "cancel": "取消", + "emoji": "表情符號", + "image": "圖片" + }, + "switch": "遷移為工作流編排", + "switchTipStart": "將為您建立一個使用工作流編排的新應用。新應用將", + "switchTip": "不能夠", + "switchTipEnd": "遷移回基礎編排", + "switchLabel": "新應用建立為", + "removeOriginal": "刪除原應用", + "switchStart": "開始遷移", + "typeSelector": { + "all": "所有類型", + "chatbot": "聊天助手", + "agent": "Agent", + "workflow": "工作流", + "completion": "文字生成", + "advanced": "聊天流" + }, + "tracing": { + "title": "追蹤應用程式效能", + "description": "配置第三方 LLMOps 提供商並追蹤應用程式效能。", + "config": "配置", + "view": "查看", + "collapse": "收起", + "expand": "展開", + "tracing": "追蹤", + "disabled": "已禁用", + "disabledTip": "請先配置提供商", + "enabled": "服務中", + "tracingDescription": "捕獲應用程式執行的完整上下文,包括 LLM 調用、上下文、提示、HTTP 請求等,到第三方追蹤平台。", + "configProviderTitle": { + "configured": "已配置", + "notConfigured": "配置提供商以啟用追蹤", + "moreProvider": "更多提供商" + }, + "arize": { + "title": "Arize", + "description": "企業級LLM可觀測性、線上與離線評估、監控和實驗平台,基於OpenTelemetry構建,專為LLM和代理驅動的應用程式設計。" + }, + "phoenix": { + "title": "Phoenix", + "description": "開源且基於OpenTelemetry的可觀測性、評估、提示工程和實驗平台,適用於您的LLM工作流程和代理。" + }, + "langsmith": { + "title": "LangSmith", + "description": "一個全方位的開發者平台,用於 LLM 驅動的應用程式生命週期的每個步驟。" + }, + "langfuse": { + "title": "Langfuse", + "description": "追蹤、評估、提示管理和指標,用於調試和改進您的 LLM 應用程式。" + }, + "inUse": "使用中", + "configProvider": { + "title": "配置 ", + "placeholder": "輸入您的{{key}}", + "project": "專案", + "publicKey": "公鑰", + "secretKey": "密鑰", + "viewDocsLink": "查看{{key}}文件", + "removeConfirmTitle": "移除{{key}}配置?", + "removeConfirmContent": "當前配置正在使用中,移除它將關閉追蹤功能。", + "experimentId": "實驗編號", + "databricksHost": "Databricks 工作區網址", + "password": "密碼", + "trackingUri": "追蹤 URI", + "personalAccessToken": "個人存取權杖(舊版)", + "clientSecret": "OAuth 用戶端密鑰", + "username": "使用者名稱", + "clientId": "OAuth 用戶端 ID" + }, + "opik": { + "title": "奧皮克", + "description": "Opik 是一個用於評估、測試和監控 LLM 應用程式的開源平臺。" + }, + "weave": { + "title": "編織", + "description": "Weave 是一個開源平台,用於評估、測試和監控大型語言模型應用程序。" + }, + "aliyun": { + "title": "雲端監控", + "description": "阿里雲提供的完全管理且無需維護的可觀察性平台,支持即時監控、追蹤和評估 Dify 應用程序。" + }, + "mlflow": { + "title": "MLflow", + "description": "開源LLMOps平台,提供實驗追蹤、可觀測性和評估功能,幫助您自信地構建AI/LLM應用。" + }, + "databricks": { + "title": "Databricks", + "description": "Databricks提供完全託管的MLflow,具有強大的治理和安全功能,用於存儲追蹤數據。" + }, + "tencent": { + "title": "騰訊 APM", + "description": "騰訊應用性能監控為大型語言模型應用提供全面的追蹤和多維分析。" + } + }, + "answerIcon": { + "descriptionInExplore": "是否使用 web app 圖示在 Explore 中取代 🤖", + "title": "使用 web app 圖示取代 🤖", + "description": "是否在共享應用程式中使用 web app 圖示進行取代 🤖" + }, + "importFromDSLUrl": "寄件者 URL", + "importFromDSL": "從 DSL 導入", + "importFromDSLFile": "從 DSL 檔", + "importFromDSLUrlPlaceholder": "在此處貼上 DSL 連結", + "dslUploader": { + "button": "拖拽檔案至此,或者", + "browse": "選擇檔案" + }, + "mermaid": { + "handDrawn": "手繪", + "classic": "經典" + }, + "openInExplore": "在“探索”中打開", + "newAppFromTemplate": { + "sidebar": { + "Workflow": "工作流", + "Recommended": "推薦", + "Agent": "代理", + "HR": "人力資源", + "Writing": "寫作", + "Programming": "程式設計", + "Assistant": "助理" + }, + "searchAllTemplate": "搜尋所有樣本...", + "byCategories": "按類別" + }, + "showMyCreatedAppsOnly": "我建立的", + "appSelector": { + "placeholder": "選擇應用程式...", + "noParams": "無需參數", + "params": "應用程式參數", + "label": "應用程式" + }, + "structOutput": { + "moreFillTip": "顯示最多 10 層的嵌套", + "required": "必需的", + "LLMResponse": "LLM 回應", + "structured": "結構化的", + "configure": "配置", + "modelNotSupported": "模型不支持", + "modelNotSupportedTip": "當前模型不支持此功能,並自動降級為提示注入。", + "structuredTip": "結構化輸出是一項功能,確保模型始終生成符合您提供的 JSON 架構的響應。", + "notConfiguredTip": "結構化輸出尚未配置" + }, + "accessItemsDescription": { + "anyone": "任何人都可以訪問這個網絡應用程式", + "specific": "只有特定的群體或成員可以訪問這個網絡應用程序", + "organization": "組織中的任何人都可以訪問該網絡應用程序", + "external": "只有經過身份驗證的外部用戶才能訪問該網絡應用程序" + }, + "accessControlDialog": { + "accessItems": { + "anyone": "擁有鏈接的人", + "specific": "特定群體或成員", + "organization": "只有企業內部成員", + "external": "經過驗證的外部用戶" + }, + "operateGroupAndMember": { + "searchPlaceholder": "搜尋群組和成員", + "allMembers": "所有成員", + "expand": "擴大", + "noResult": "沒有結果" + }, + "title": "網頁應用程式存取控制", + "description": "設定網頁應用程式訪問權限", + "accessLabel": "誰可以訪問", + "groups_one": "{{count}} 群組", + "groups_other": "{{count}} 組", + "members_one": "{{count}} 成員", + "members_other": "{{count}} 成員", + "noGroupsOrMembers": "未選擇任何群組或成員", + "webAppSSONotEnabledTip": "請聯絡企業管理員配置網頁應用程式的身份驗證方法。", + "updateSuccess": "更新成功" + }, + "publishApp": { + "title": "誰可以訪問網絡應用程序", + "notSet": "未設定", + "notSetDesc": "目前沒有人能夠訪問網絡應用程序。請設置權限。" + }, + "accessControl": "網頁應用程式存取控制", + "noAccessPermission": "沒有權限訪問網絡應用程式", + "maxActiveRequestsPlaceholder": "輸入 0 以表示無限", + "maxActiveRequests": "同時最大請求數", + "maxActiveRequestsTip": "每個應用程式可同時活躍請求的最大數量(0為無限制)", + "gotoAnything": { + "actions": { + "searchWorkflowNodes": "搜索工作流節點", + "searchPluginsDesc": "搜索並導航到您的外掛程式", + "searchApplications": "搜索應用程式", + "searchKnowledgeBases": "搜索知識庫", + "searchKnowledgeBasesDesc": "搜索並導航到您的知識庫", + "searchWorkflowNodesHelp": "此功能僅在查看工作流時有效。首先導航到工作流。", + "searchApplicationsDesc": "搜索並導航到您的應用程式", + "searchPlugins": "搜索外掛程式", + "searchWorkflowNodesDesc": "按名稱或類型查找並跳轉到當前工作流中的節點", + "themeCategoryTitle": "主題", + "themeSystemDesc": "遵循你的操作系統外觀", + "themeLightDesc": "使用輕盈的外觀", + "themeDark": "黑暗主題", + "themeSystem": "系統主題", + "themeDarkDesc": "使用深色外觀", + "runTitle": "指令", + "languageCategoryDesc": "切換介面語言", + "themeLight": "淺色主題", + "languageCategoryTitle": "語言", + "themeCategoryDesc": "切換應用程式主題", + "languageChangeDesc": "更改 UI 語言", + "runDesc": "執行快速命令(主題、語言等...)", + "slashDesc": "執行命令如 /theme, /lang", + "communityDesc": "開放的 Discord 社區", + "accountDesc": "導航到帳戶頁面", + "feedbackDesc": "開放社區反饋討論", + "docDesc": "開啟幫助文件", + "zenTitle": "Zen Mode", + "zenDesc": "Toggle canvas focus mode" + }, + "emptyState": { + "noAppsFound": "未找到應用", + "noWorkflowNodesFound": "未找到工作流節點", + "noKnowledgeBasesFound": "未找到知識庫", + "noPluginsFound": "未找到外掛程式", + "tryDifferentTerm": "嘗試不同的搜索詞或移除 {{mode}} 過濾器", + "trySpecificSearch": "嘗試使用 {{shortcuts}} 進行特定搜索" + }, + "groups": { + "apps": "應用程式", + "knowledgeBases": "知識庫", + "plugins": "外掛程式", + "workflowNodes": "工作流節點", + "commands": "指令" + }, + "searchPlaceholder": "搜尋或鍵入 @ 以取得命令...", + "searching": "搜索中...", + "searchTitle": "搜索任何內容", + "noResults": "未找到結果", + "clearToSearchAll": "清除 @ 以搜尋全部", + "searchFailed": "搜索失敗", + "servicesUnavailableMessage": "某些搜索服務可能遇到問題。稍後再試一次。", + "someServicesUnavailable": "某些搜索服務不可用", + "useAtForSpecific": "對特定類型使用 @", + "searchTemporarilyUnavailable": "搜索暫時不可用", + "selectSearchType": "選擇要搜索的內容", + "commandHint": "鍵入 @ 按類別流覽", + "searchHint": "開始輸入以立即搜索所有內容", + "resultCount": "{{count}} 個結果", + "resultCount_other": "{{count}} 個結果", + "inScope": "在 {{scope}}s 中", + "noMatchingCommands": "未找到匹配的命令", + "tryDifferentSearch": "嘗試其他搜尋字詞", + "slashHint": "輸入 / 以查看所有可用的指令", + "tips": "按 ↑ ↓ 鍵進行導航", + "startTyping": "開始輸入以進行搜尋", + "pressEscToClose": "按 ESC 鍵關閉", + "selectToNavigate": "選擇以進行導航" + }, + "notPublishedYet": "應用程式尚未發布", + "noUserInputNode": "缺少使用者輸入節點" +} diff --git a/web/i18n/zh-Hant/app.ts b/web/i18n/zh-Hant/app.ts deleted file mode 100644 index 6d9a48b028..0000000000 --- a/web/i18n/zh-Hant/app.ts +++ /dev/null @@ -1,350 +0,0 @@ -const translation = { - createApp: '建立應用', - types: { - all: '全部', - chatbot: '聊天助手', - agent: 'Agent', - workflow: '工作流', - completion: '文字生成', - advanced: '聊天流', - basic: '基本', - }, - duplicate: '複製', - duplicateTitle: '複製應用', - export: '匯出 DSL', - exportFailed: '匯出 DSL 失敗', - importDSL: '匯入 DSL 檔案', - createFromConfigFile: '透過 DSL 檔案建立', - deleteAppConfirmTitle: '確認刪除應用?', - deleteAppConfirmContent: - '刪除應用將無法復原。使用者將無法存取你的應用,所有 Prompt 設定和日誌都將一併被刪除。', - appDeleted: '應用已刪除', - appDeleteFailed: '應用刪除失敗', - join: '參與社群', - communityIntro: '與團隊成員、貢獻者和開發者在不同頻道中交流', - roadmap: '產品路線圖', - newApp: { - startFromBlank: '建立空白應用', - startFromTemplate: '從應用模版建立', - workflowWarning: '正在進行 Beta 測試', - captionName: '應用名稱 & 圖示', - appNamePlaceholder: '給你的應用起個名字', - captionDescription: '描述', - appDescriptionPlaceholder: '輸入應用的描述', - useTemplate: '使用該模板', - previewDemo: '預覽 Demo', - chatApp: '助手', - chatAppIntro: - '我要構建一個聊天場景的應用。該應用採用一問一答模式與使用者持續對話。', - agentAssistant: '新的智慧助手', - completeApp: '文字生成應用', - completeAppIntro: - '我要構建一個根據提示生成高品質文字的應用,例如生成文章、摘要、翻譯等', - showTemplates: '我想從範例模板中選擇', - hideTemplates: '返回應用類型選擇', - Create: '建立', - Cancel: '取消', - nameNotEmpty: '名稱不能為空', - appTemplateNotSelected: '請選擇應用模版', - appTypeRequired: '請選擇應用類型', - appCreated: '應用已建立', - appCreateFailed: '應用建立失敗', - caution: '謹慎', - appCreateDSLErrorPart2: '是否要繼續?', - appCreateDSLErrorPart3: '目前的應用程式 DSL 版本:', - Confirm: '確認', - appCreateDSLErrorTitle: '版本不相容', - appCreateDSLErrorPart1: '已檢測到 DSL 版本存在顯著差異。強制導入可能會導致應用程式出現故障。', - appCreateDSLErrorPart4: '系統支援的 DSL 版本:', - appCreateDSLWarning: '注意:DSL 版本差異可能會影響某些功能', - learnMore: '瞭解更多資訊', - optional: '自選', - foundResults: '{{count}}結果', - noAppsFound: '未找到應用程式', - forBeginners: '對於初學者', - noTemplateFound: '未找到範本', - noIdeaTip: '沒有想法?查看我們的範本', - forAdvanced: '對於高級使用者', - workflowUserDescription: '用於自動化和批處理等單輪任務的工作流編排。', - chatbotUserDescription: '通過簡單的配置快速構建基於 LLM 的聊天機器人。您可以稍後切換到 Chatflow。', - completionUserDescription: '通過簡單的配置快速構建用於文本生成任務的 AI 助手。', - foundResult: '{{count}}結果', - advancedShortDescription: '具有記憶的複雜多回合對話的工作流程', - workflowShortDescription: '用於單輪自動化任務的編排', - chatbotShortDescription: '基於 LLM 的聊天機器人,設置簡單', - agentShortDescription: '具有推理和自主工具使用的智慧代理', - noTemplateFoundTip: '嘗試使用不同的關鍵字進行搜索。', - agentUserDescription: '一個能夠進行反覆運算推理和自主工具使用來實現任務目標的智慧代理。', - advancedUserDescription: '具有記憶體功能的多輪複雜對話任務的工作流程編排。', - chooseAppType: '選擇 App Type', - completionShortDescription: '用於文本生成任務的 AI 助手', - dropDSLToCreateApp: '將 DSL 檔案拖放到此處以創建應用程式', - import: '進口', - }, - editApp: '編輯資訊', - editAppTitle: '編輯應用資訊', - editDone: '應用資訊已更新', - editFailed: '更新應用資訊失敗', - iconPicker: { - ok: '確認', - cancel: '取消', - emoji: '表情符號', - image: '圖片', - }, - switch: '遷移為工作流編排', - switchTipStart: '將為您建立一個使用工作流編排的新應用。新應用將', - switchTip: '不能夠', - switchTipEnd: '遷移回基礎編排', - switchLabel: '新應用建立為', - removeOriginal: '刪除原應用', - switchStart: '開始遷移', - typeSelector: { - all: '所有類型', - chatbot: '聊天助手', - agent: 'Agent', - workflow: '工作流', - completion: '文字生成', - advanced: '聊天流', - }, - tracing: { - title: '追蹤應用程式效能', - description: '配置第三方 LLMOps 提供商並追蹤應用程式效能。', - config: '配置', - view: '查看', - collapse: '收起', - expand: '展開', - tracing: '追蹤', - disabled: '已禁用', - disabledTip: '請先配置提供商', - enabled: '服務中', - tracingDescription: '捕獲應用程式執行的完整上下文,包括 LLM 調用、上下文、提示、HTTP 請求等,到第三方追蹤平台。', - configProviderTitle: { - configured: '已配置', - notConfigured: '配置提供商以啟用追蹤', - moreProvider: '更多提供商', - }, - arize: { - title: 'Arize', - description: '企業級LLM可觀測性、線上與離線評估、監控和實驗平台,基於OpenTelemetry構建,專為LLM和代理驅動的應用程式設計。', - }, - phoenix: { - title: 'Phoenix', - description: '開源且基於OpenTelemetry的可觀測性、評估、提示工程和實驗平台,適用於您的LLM工作流程和代理。', - }, - langsmith: { - title: 'LangSmith', - description: '一個全方位的開發者平台,用於 LLM 驅動的應用程式生命週期的每個步驟。', - }, - langfuse: { - title: 'Langfuse', - description: '追蹤、評估、提示管理和指標,用於調試和改進您的 LLM 應用程式。', - }, - inUse: '使用中', - configProvider: { - title: '配置 ', - placeholder: '輸入您的{{key}}', - project: '專案', - publicKey: '公鑰', - secretKey: '密鑰', - viewDocsLink: '查看{{key}}文件', - removeConfirmTitle: '移除{{key}}配置?', - removeConfirmContent: '當前配置正在使用中,移除它將關閉追蹤功能。', - experimentId: '實驗編號', - databricksHost: 'Databricks 工作區網址', - password: '密碼', - trackingUri: '追蹤 URI', - personalAccessToken: '個人存取權杖(舊版)', - clientSecret: 'OAuth 用戶端密鑰', - username: '使用者名稱', - clientId: 'OAuth 用戶端 ID', - }, - opik: { - title: '奧皮克', - description: 'Opik 是一個用於評估、測試和監控 LLM 應用程式的開源平臺。', - }, - weave: { - title: '編織', - description: 'Weave 是一個開源平台,用於評估、測試和監控大型語言模型應用程序。', - }, - aliyun: { - title: '雲端監控', - description: '阿里雲提供的完全管理且無需維護的可觀察性平台,支持即時監控、追蹤和評估 Dify 應用程序。', - }, - mlflow: { - title: 'MLflow', - description: '開源LLMOps平台,提供實驗追蹤、可觀測性和評估功能,幫助您自信地構建AI/LLM應用。', - }, - databricks: { - title: 'Databricks', - description: 'Databricks提供完全託管的MLflow,具有強大的治理和安全功能,用於存儲追蹤數據。', - }, - tencent: { - title: '騰訊 APM', - description: '騰訊應用性能監控為大型語言模型應用提供全面的追蹤和多維分析。', - }, - }, - answerIcon: { - descriptionInExplore: '是否使用 web app 圖示在 Explore 中取代 🤖', - title: '使用 web app 圖示取代 🤖', - description: '是否在共享應用程式中使用 web app 圖示進行取代 🤖', - }, - importFromDSLUrl: '寄件者 URL', - importFromDSL: '從 DSL 導入', - importFromDSLFile: '從 DSL 檔', - importFromDSLUrlPlaceholder: '在此處貼上 DSL 連結', - dslUploader: { - button: '拖拽檔案至此,或者', - browse: '選擇檔案', - }, - mermaid: { - handDrawn: '手繪', - classic: '經典', - }, - openInExplore: '在“探索”中打開', - newAppFromTemplate: { - sidebar: { - Workflow: '工作流', - Recommended: '推薦', - Agent: '代理', - HR: '人力資源', - Writing: '寫作', - Programming: '程式設計', - Assistant: '助理', - }, - searchAllTemplate: '搜尋所有樣本...', - byCategories: '按類別', - }, - showMyCreatedAppsOnly: '我建立的', - appSelector: { - placeholder: '選擇應用程式...', - noParams: '無需參數', - params: '應用程式參數', - label: '應用程式', - }, - structOutput: { - moreFillTip: '顯示最多 10 層的嵌套', - required: '必需的', - LLMResponse: 'LLM 回應', - structured: '結構化的', - configure: '配置', - modelNotSupported: '模型不支持', - modelNotSupportedTip: '當前模型不支持此功能,並自動降級為提示注入。', - structuredTip: '結構化輸出是一項功能,確保模型始終生成符合您提供的 JSON 架構的響應。', - notConfiguredTip: '結構化輸出尚未配置', - }, - accessItemsDescription: { - anyone: '任何人都可以訪問這個網絡應用程式', - specific: '只有特定的群體或成員可以訪問這個網絡應用程序', - organization: '組織中的任何人都可以訪問該網絡應用程序', - external: '只有經過身份驗證的外部用戶才能訪問該網絡應用程序', - }, - accessControlDialog: { - accessItems: { - anyone: '擁有鏈接的人', - specific: '特定群體或成員', - organization: '只有企業內部成員', - external: '經過驗證的外部用戶', - }, - operateGroupAndMember: { - searchPlaceholder: '搜尋群組和成員', - allMembers: '所有成員', - expand: '擴大', - noResult: '沒有結果', - }, - title: '網頁應用程式存取控制', - description: '設定網頁應用程式訪問權限', - accessLabel: '誰可以訪問', - groups_one: '{{count}} 群組', - groups_other: '{{count}} 組', - members_one: '{{count}} 成員', - members_other: '{{count}} 成員', - noGroupsOrMembers: '未選擇任何群組或成員', - webAppSSONotEnabledTip: '請聯絡企業管理員配置網頁應用程式的身份驗證方法。', - updateSuccess: '更新成功', - }, - publishApp: { - title: '誰可以訪問網絡應用程序', - notSet: '未設定', - notSetDesc: '目前沒有人能夠訪問網絡應用程序。請設置權限。', - }, - accessControl: '網頁應用程式存取控制', - noAccessPermission: '沒有權限訪問網絡應用程式', - maxActiveRequestsPlaceholder: '輸入 0 以表示無限', - maxActiveRequests: '同時最大請求數', - maxActiveRequestsTip: '每個應用程式可同時活躍請求的最大數量(0為無限制)', - gotoAnything: { - actions: { - searchWorkflowNodes: '搜索工作流節點', - searchPluginsDesc: '搜索並導航到您的外掛程式', - searchApplications: '搜索應用程式', - searchKnowledgeBases: '搜索知識庫', - searchKnowledgeBasesDesc: '搜索並導航到您的知識庫', - searchWorkflowNodesHelp: '此功能僅在查看工作流時有效。首先導航到工作流。', - searchApplicationsDesc: '搜索並導航到您的應用程式', - searchPlugins: '搜索外掛程式', - searchWorkflowNodesDesc: '按名稱或類型查找並跳轉到當前工作流中的節點', - themeCategoryTitle: '主題', - themeSystemDesc: '遵循你的操作系統外觀', - themeLightDesc: '使用輕盈的外觀', - themeDark: '黑暗主題', - themeSystem: '系統主題', - themeDarkDesc: '使用深色外觀', - runTitle: '指令', - languageCategoryDesc: '切換介面語言', - themeLight: '淺色主題', - languageCategoryTitle: '語言', - themeCategoryDesc: '切換應用程式主題', - languageChangeDesc: '更改 UI 語言', - runDesc: '執行快速命令(主題、語言等...)', - slashDesc: '執行命令如 /theme, /lang', - communityDesc: '開放的 Discord 社區', - accountDesc: '導航到帳戶頁面', - feedbackDesc: '開放社區反饋討論', - docDesc: '開啟幫助文件', - zenTitle: 'Zen Mode', - zenDesc: 'Toggle canvas focus mode', - }, - emptyState: { - noAppsFound: '未找到應用', - noWorkflowNodesFound: '未找到工作流節點', - noKnowledgeBasesFound: '未找到知識庫', - noPluginsFound: '未找到外掛程式', - tryDifferentTerm: '嘗試不同的搜索詞或移除 {{mode}} 過濾器', - trySpecificSearch: '嘗試使用 {{shortcuts}} 進行特定搜索', - }, - groups: { - apps: '應用程式', - knowledgeBases: '知識庫', - plugins: '外掛程式', - workflowNodes: '工作流節點', - commands: '指令', - }, - searchPlaceholder: '搜尋或鍵入 @ 以取得命令...', - searching: '搜索中...', - searchTitle: '搜索任何內容', - noResults: '未找到結果', - clearToSearchAll: '清除 @ 以搜尋全部', - searchFailed: '搜索失敗', - servicesUnavailableMessage: '某些搜索服務可能遇到問題。稍後再試一次。', - someServicesUnavailable: '某些搜索服務不可用', - useAtForSpecific: '對特定類型使用 @', - searchTemporarilyUnavailable: '搜索暫時不可用', - selectSearchType: '選擇要搜索的內容', - commandHint: '鍵入 @ 按類別流覽', - searchHint: '開始輸入以立即搜索所有內容', - resultCount: '{{count}} 個結果', - resultCount_other: '{{count}} 個結果', - inScope: '在 {{scope}}s 中', - noMatchingCommands: '未找到匹配的命令', - tryDifferentSearch: '嘗試其他搜尋字詞', - slashHint: '輸入 / 以查看所有可用的指令', - tips: '按 ↑ ↓ 鍵進行導航', - startTyping: '開始輸入以進行搜尋', - pressEscToClose: '按 ESC 鍵關閉', - selectToNavigate: '選擇以進行導航', - }, - notPublishedYet: '應用程式尚未發布', - noUserInputNode: '缺少使用者輸入節點', -} - -export default translation diff --git a/web/i18n/zh-Hant/billing.json b/web/i18n/zh-Hant/billing.json new file mode 100644 index 0000000000..2835c76ec1 --- /dev/null +++ b/web/i18n/zh-Hant/billing.json @@ -0,0 +1,238 @@ +{ + "currentPlan": "當前套餐", + "upgradeBtn": { + "plain": "升級套餐", + "encourage": "立即升級", + "encourageShort": "升級" + }, + "viewBilling": "管理賬單及訂閱", + "buyPermissionDeniedTip": "請聯絡企業管理員訂閱", + "plansCommon": { + "yearlyTip": "訂閱年度計劃可免費獲得 2 個月!", + "mostPopular": "最受歡迎", + "planRange": { + "monthly": "按月", + "yearly": "按年" + }, + "month": "月", + "year": "年", + "save": "節省", + "currentPlan": "當前計劃", + "contractSales": "聯絡銷售", + "contractOwner": "聯絡團隊管理員", + "free": "免費", + "startForFree": "免費開始", + "contactSales": "聯絡銷售", + "talkToSales": "聯絡銷售", + "modelProviders": "支援的模型提供商", + "buildApps": "構建應用程式數", + "vectorSpace": "向量空間", + "vectorSpaceTooltip": "向量空間是 LLMs 理解您的資料所需的長期記憶系統。", + "documentProcessingPriority": "文件處理優先順序", + "documentProcessingPriorityTip": "如需更高的文件處理優先順序,請升級您的方案。", + "documentProcessingPriorityUpgrade": "以更快的速度、更高的精度處理更多的資料。", + "priority": { + "standard": "標準", + "priority": "優先", + "top-priority": "最高優先順序" + }, + "logsHistory": "日誌歷史", + "customTools": "自定義工具", + "unavailable": "不可用", + "days": "天", + "unlimited": "無限制", + "support": "支援", + "supportItems": { + "communityForums": "社群論壇", + "emailSupport": "電子郵件支援", + "priorityEmail": "優先電子郵件和聊天支援", + "logoChange": "Logo 更改", + "SSOAuthentication": "SSO 認證", + "personalizedSupport": "個性化支援", + "dedicatedAPISupport": "專用 API 支援", + "customIntegration": "自定義整合和支援", + "ragAPIRequest": "RAG API 請求", + "bulkUpload": "批次上傳文件", + "agentMode": "代理模式", + "workflow": "工作流", + "llmLoadingBalancing": "LLM 負載均衡", + "llmLoadingBalancingTooltip": "向模型新增多個 API 金鑰,從而有效地繞過 API 速率限制。" + }, + "comingSoon": "即將推出", + "member": "成員", + "memberAfter": "個成員", + "messageRequest": { + "title": "訊息額度", + "tooltip": "為不同方案提供基於 OpenAI 模型的訊息響應額度。", + "titlePerMonth": "{{count,number}} 消息/月" + }, + "annotatedResponse": { + "title": "標註回覆數", + "tooltip": "標註回覆功能透過人工編輯標註為應用提供了可定製的高品質問答回覆能力" + }, + "ragAPIRequestTooltip": "指單獨呼叫 Dify 知識庫資料處理能力的 API。", + "receiptInfo": "只有團隊所有者和團隊管理員才能訂閱和檢視賬單資訊", + "annotationQuota": "註釋配額", + "self": "自我主持", + "apiRateLimitUnit": "{{count,number}} 次", + "freeTrialTipPrefix": "註冊並獲得一個", + "annualBilling": "年度計費", + "freeTrialTipSuffix": "無需信用卡", + "comparePlanAndFeatures": "比較計劃和功能", + "teamMember_one": "{{count,number}} 團隊成員", + "priceTip": "每個工作區/", + "cloud": "雲服務", + "documentsRequestQuota": "{{count,number}}/分鐘 知識請求速率限制", + "unlimitedApiRate": "沒有 API 速率限制", + "apiRateLimitTooltip": "API 使用次數限制適用於通過 Dify API 所做的所有請求,包括文本生成、聊天對話、工作流執行和文檔處理。", + "getStarted": "開始使用", + "freeTrialTip": "200 次 OpenAI 通話的免費試用。", + "teamWorkspace": "{{count,number}} 團隊工作空間", + "documents": "{{count,number}} 知識文件", + "apiRateLimit": "API 限速", + "teamMember_other": "{{count,number}} 團隊成員", + "documentsTooltip": "從知識數據來源導入的文件數量配額。", + "documentsRequestQuotaTooltip": "指定工作區在知識基礎中每分鐘可以執行的總操作次數,包括數據集的創建、刪除、更新、文檔上傳、修改、歸檔和知識基礎查詢。這個指標用於評估知識基礎請求的性能。例如,如果一個沙箱用戶在一分鐘內連續執行 10 次命中測試,他們的工作區將在接下來的一分鐘內暫時禁止執行以下操作:數據集的創建、刪除、更新以及文檔上傳或修改。", + "startBuilding": "開始建造", + "taxTip": "所有訂閱價格(月費/年費)不包含適用的稅費(例如增值稅、銷售稅)。", + "taxTipSecond": "如果您的地區沒有適用的稅務要求,結帳時將不會顯示任何稅款,且在整個訂閱期間您也不會被收取任何額外費用。", + "triggerEvents": { + "unlimited": "無限觸發事件", + "tooltip": "透過插件、排程或 Webhook 觸發器自動啟動工作流程的事件數量。", + "sandbox": "{{count,number}} 觸發事件", + "professional": "{{count,number}} 觸發事件/月" + }, + "workflowExecution": { + "standard": "標準工作流程執行", + "priority": "優先工作流程執行", + "faster": "更快速的工作流程執行", + "tooltip": "工作流程執行隊列的優先順序與速度。" + }, + "startNodes": { + "unlimited": "無限觸發器/工作流程", + "limited": "最多 {{count}} 個觸發器/工作流程" + }, + "title": { + "plans": "計劃", + "description": "選擇最適合您團隊需求的方案。" + } + }, + "plans": { + "sandbox": { + "name": "Sandbox", + "description": "200 次 GPT 免費試用", + "for": "核心功能免費試用" + }, + "professional": { + "name": "Professional", + "description": "讓個人和小團隊能夠以經濟實惠的方式釋放更多能力。", + "for": "適合獨立開發者/小型團隊" + }, + "team": { + "name": "Team", + "description": "協作無限制並享受頂級效能。", + "for": "適用於中型團隊" + }, + "enterprise": { + "name": "Enterprise", + "description": "獲得大規模關鍵任務系統的完整功能和支援。", + "includesTitle": "Team 計劃中的一切,加上:", + "features": [ + "企業級可擴展部署解決方案", + "商業許可授權", + "企業專屬功能", + "多工作區與企業管理", + "單一登入", + "由 Dify 合作夥伴協商的服務水平協議", + "進階安全與控管", + "Dify 官方更新與維護", + "專業技術支援" + ], + "price": "自訂", + "btnText": "聯繫銷售", + "priceTip": "年度計費のみ", + "for": "適用於大規模團隊" + }, + "community": { + "features": [ + "所有核心功能已在公共存儲庫中釋出", + "單一工作區", + "符合 Dify 開源授權" + ], + "includesTitle": "免費功能:", + "btnText": "開始使用社區", + "name": "社區", + "for": "適用於個別用戶、小型團隊或非商業項目", + "description": "適用於個別用戶、小型團隊或非商業項目", + "price": "免費" + }, + "premium": { + "features": [ + "由各雲端服務提供商自主管理的可靠性", + "單一工作區", + "WebApp 標誌與品牌自訂", + "優先電子郵件與聊天支援" + ], + "for": "適用於中型組織和團隊", + "comingSoon": "微軟 Azure 與 Google Cloud 支持即將推出", + "priceTip": "根據雲端市場", + "btnText": "獲取高級版在", + "name": "高級", + "description": "適用於中型組織和團隊", + "price": "可擴展的", + "includesTitle": "來自社群的一切,加上:" + } + }, + "vectorSpace": { + "fullTip": "向量空間已滿。", + "fullSolution": "升級您的套餐以獲得更多空間。" + }, + "apps": { + "fullTip1": "升級以創建更多應用程序", + "fullTip2des": "建議清除不活躍的應用程式以釋放使用空間,或聯繫我們。", + "contactUs": "聯繫我們", + "fullTip1des": "您已達到此計劃建構應用程序的限制", + "fullTip2": "計劃限制已達" + }, + "annotatedResponse": { + "fullTipLine1": "升級您的套餐以", + "fullTipLine2": "標註更多對話。", + "quotaTitle": "標註的配額" + }, + "usagePage": { + "documentsUploadQuota": "文件上傳配額", + "vectorSpaceTooltip": "使用高品質索引模式的文件將消耗知識數據存儲資源。當知識數據存儲達到限制後,將不會上傳新文件。", + "annotationQuota": "註解配額", + "vectorSpace": "知識數據儲存", + "buildApps": "建構應用程式", + "teamMembers": "團隊成員", + "perMonth": "每月", + "triggerEvents": "觸發事件", + "resetsIn": "{{count,number}} 天後重置" + }, + "teamMembers": "團隊成員", + "triggerLimitModal": { + "dismiss": "關閉", + "description": "您已達到此方案的工作流程事件觸發上限。", + "usageTitle": "觸發事件", + "title": "升級以解鎖更多觸發事件", + "upgrade": "升級" + }, + "viewBillingTitle": "帳單與訂閱", + "viewBillingDescription": "管理付款方式、發票和訂閱變更", + "viewBillingAction": "管理", + "upgrade": { + "uploadMultiplePages": { + "title": "升級以一次上傳多個文件", + "description": "您已達到上傳限制 — 在您目前的方案下,每次只能選擇並上傳一個文件。" + }, + "uploadMultipleFiles": { + "title": "升級以解鎖批量上傳文件功能", + "description": "一次批量上傳更多文件,以節省時間並提高效率。" + }, + "addChunks": { + "title": "升級以繼續添加區塊", + "description": "您已達到此方案可新增區塊的上限。" + } + } +} diff --git a/web/i18n/zh-Hant/billing.ts b/web/i18n/zh-Hant/billing.ts deleted file mode 100644 index 010a91a5e5..0000000000 --- a/web/i18n/zh-Hant/billing.ts +++ /dev/null @@ -1,221 +0,0 @@ -const translation = { - currentPlan: '當前套餐', - upgradeBtn: { - plain: '升級套餐', - encourage: '立即升級', - encourageShort: '升級', - }, - viewBilling: '管理賬單及訂閱', - buyPermissionDeniedTip: '請聯絡企業管理員訂閱', - plansCommon: { - yearlyTip: '訂閱年度計劃可免費獲得 2 個月!', - mostPopular: '最受歡迎', - planRange: { - monthly: '按月', - yearly: '按年', - }, - month: '月', - year: '年', - save: '節省', - currentPlan: '當前計劃', - contractSales: '聯絡銷售', - contractOwner: '聯絡團隊管理員', - free: '免費', - startForFree: '免費開始', - contactSales: '聯絡銷售', - talkToSales: '聯絡銷售', - modelProviders: '支援的模型提供商', - buildApps: '構建應用程式數', - vectorSpace: '向量空間', - vectorSpaceTooltip: '向量空間是 LLMs 理解您的資料所需的長期記憶系統。', - documentProcessingPriority: '文件處理優先順序', - documentProcessingPriorityTip: '如需更高的文件處理優先順序,請升級您的方案。', - documentProcessingPriorityUpgrade: '以更快的速度、更高的精度處理更多的資料。', - priority: { - 'standard': '標準', - 'priority': '優先', - 'top-priority': '最高優先順序', - }, - logsHistory: '日誌歷史', - customTools: '自定義工具', - unavailable: '不可用', - days: '天', - unlimited: '無限制', - support: '支援', - supportItems: { - communityForums: '社群論壇', - emailSupport: '電子郵件支援', - priorityEmail: '優先電子郵件和聊天支援', - logoChange: 'Logo 更改', - SSOAuthentication: 'SSO 認證', - personalizedSupport: '個性化支援', - dedicatedAPISupport: '專用 API 支援', - customIntegration: '自定義整合和支援', - ragAPIRequest: 'RAG API 請求', - bulkUpload: '批次上傳文件', - agentMode: '代理模式', - workflow: '工作流', - llmLoadingBalancing: 'LLM 負載均衡', - llmLoadingBalancingTooltip: '向模型新增多個 API 金鑰,從而有效地繞過 API 速率限制。', - }, - comingSoon: '即將推出', - member: '成員', - memberAfter: '個成員', - messageRequest: { - title: '訊息額度', - tooltip: '為不同方案提供基於 OpenAI 模型的訊息響應額度。', - titlePerMonth: '{{count,number}} 消息/月', - }, - annotatedResponse: { - title: '標註回覆數', - tooltip: '標註回覆功能透過人工編輯標註為應用提供了可定製的高品質問答回覆能力', - }, - ragAPIRequestTooltip: '指單獨呼叫 Dify 知識庫資料處理能力的 API。', - receiptInfo: '只有團隊所有者和團隊管理員才能訂閱和檢視賬單資訊', - annotationQuota: '註釋配額', - self: '自我主持', - apiRateLimitUnit: '{{count,number}} 次', - freeTrialTipPrefix: '註冊並獲得一個', - annualBilling: '年度計費', - freeTrialTipSuffix: '無需信用卡', - comparePlanAndFeatures: '比較計劃和功能', - teamMember_one: '{{count,number}} 團隊成員', - priceTip: '每個工作區/', - cloud: '雲服務', - documentsRequestQuota: '{{count,number}}/分鐘 知識請求速率限制', - unlimitedApiRate: '沒有 API 速率限制', - apiRateLimitTooltip: 'API 使用次數限制適用於通過 Dify API 所做的所有請求,包括文本生成、聊天對話、工作流執行和文檔處理。', - getStarted: '開始使用', - freeTrialTip: '200 次 OpenAI 通話的免費試用。', - teamWorkspace: '{{count,number}} 團隊工作空間', - documents: '{{count,number}} 知識文件', - apiRateLimit: 'API 限速', - teamMember_other: '{{count,number}} 團隊成員', - documentsTooltip: '從知識數據來源導入的文件數量配額。', - documentsRequestQuotaTooltip: '指定工作區在知識基礎中每分鐘可以執行的總操作次數,包括數據集的創建、刪除、更新、文檔上傳、修改、歸檔和知識基礎查詢。這個指標用於評估知識基礎請求的性能。例如,如果一個沙箱用戶在一分鐘內連續執行 10 次命中測試,他們的工作區將在接下來的一分鐘內暫時禁止執行以下操作:數據集的創建、刪除、更新以及文檔上傳或修改。', - startBuilding: '開始建造', - taxTip: '所有訂閱價格(月費/年費)不包含適用的稅費(例如增值稅、銷售稅)。', - taxTipSecond: '如果您的地區沒有適用的稅務要求,結帳時將不會顯示任何稅款,且在整個訂閱期間您也不會被收取任何額外費用。', - triggerEvents: { - unlimited: '無限觸發事件', - tooltip: '透過插件、排程或 Webhook 觸發器自動啟動工作流程的事件數量。', - sandbox: '{{count,number}} 觸發事件', - professional: '{{count,number}} 觸發事件/月', - }, - workflowExecution: { - standard: '標準工作流程執行', - priority: '優先工作流程執行', - faster: '更快速的工作流程執行', - tooltip: '工作流程執行隊列的優先順序與速度。', - }, - startNodes: { - unlimited: '無限觸發器/工作流程', - limited: '最多 {{count}} 個觸發器/工作流程', - }, - title: { - plans: '計劃', - description: '選擇最適合您團隊需求的方案。', - }, - }, - plans: { - sandbox: { - name: 'Sandbox', - description: '200 次 GPT 免費試用', - for: '核心功能免費試用', - }, - professional: { - name: 'Professional', - description: '讓個人和小團隊能夠以經濟實惠的方式釋放更多能力。', - for: '適合獨立開發者/小型團隊', - }, - team: { - name: 'Team', - description: '協作無限制並享受頂級效能。', - for: '適用於中型團隊', - }, - enterprise: { - name: 'Enterprise', - description: '獲得大規模關鍵任務系統的完整功能和支援。', - includesTitle: 'Team 計劃中的一切,加上:', - features: ['企業級可擴展部署解決方案', '商業許可授權', '企業專屬功能', '多工作區與企業管理', '單一登入', '由 Dify 合作夥伴協商的服務水平協議', '進階安全與控管', 'Dify 官方更新與維護', '專業技術支援'], - price: '自訂', - btnText: '聯繫銷售', - priceTip: '年度計費のみ', - for: '適用於大規模團隊', - }, - community: { - features: ['所有核心功能已在公共存儲庫中釋出', '單一工作區', '符合 Dify 開源授權'], - includesTitle: '免費功能:', - btnText: '開始使用社區', - name: '社區', - for: '適用於個別用戶、小型團隊或非商業項目', - description: '適用於個別用戶、小型團隊或非商業項目', - price: '免費', - }, - premium: { - features: ['由各雲端服務提供商自主管理的可靠性', '單一工作區', 'WebApp 標誌與品牌自訂', '優先電子郵件與聊天支援'], - for: '適用於中型組織和團隊', - comingSoon: '微軟 Azure 與 Google Cloud 支持即將推出', - priceTip: '根據雲端市場', - btnText: '獲取高級版在', - name: '高級', - description: '適用於中型組織和團隊', - price: '可擴展的', - includesTitle: '來自社群的一切,加上:', - }, - }, - vectorSpace: { - fullTip: '向量空間已滿。', - fullSolution: '升級您的套餐以獲得更多空間。', - }, - apps: { - fullTip1: '升級以創建更多應用程序', - fullTip2des: '建議清除不活躍的應用程式以釋放使用空間,或聯繫我們。', - contactUs: '聯繫我們', - fullTip1des: '您已達到此計劃建構應用程序的限制', - fullTip2: '計劃限制已達', - }, - annotatedResponse: { - fullTipLine1: '升級您的套餐以', - fullTipLine2: '標註更多對話。', - quotaTitle: '標註的配額', - }, - usagePage: { - documentsUploadQuota: '文件上傳配額', - vectorSpaceTooltip: '使用高品質索引模式的文件將消耗知識數據存儲資源。當知識數據存儲達到限制後,將不會上傳新文件。', - annotationQuota: '註解配額', - vectorSpace: '知識數據儲存', - buildApps: '建構應用程式', - teamMembers: '團隊成員', - perMonth: '每月', - triggerEvents: '觸發事件', - resetsIn: '{{count,number}} 天後重置', - }, - teamMembers: '團隊成員', - triggerLimitModal: { - dismiss: '關閉', - description: '您已達到此方案的工作流程事件觸發上限。', - usageTitle: '觸發事件', - title: '升級以解鎖更多觸發事件', - upgrade: '升級', - }, - viewBillingTitle: '帳單與訂閱', - viewBillingDescription: '管理付款方式、發票和訂閱變更', - viewBillingAction: '管理', - upgrade: { - uploadMultiplePages: { - title: '升級以一次上傳多個文件', - description: '您已達到上傳限制 — 在您目前的方案下,每次只能選擇並上傳一個文件。', - }, - uploadMultipleFiles: { - title: '升級以解鎖批量上傳文件功能', - description: '一次批量上傳更多文件,以節省時間並提高效率。', - }, - addChunks: { - title: '升級以繼續添加區塊', - description: '您已達到此方案可新增區塊的上限。', - }, - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/common.json b/web/i18n/zh-Hant/common.json new file mode 100644 index 0000000000..76bc2cd782 --- /dev/null +++ b/web/i18n/zh-Hant/common.json @@ -0,0 +1,785 @@ +{ + "api": { + "success": "成功", + "actionSuccess": "操作成功", + "saved": "已儲存", + "create": "已建立", + "remove": "已移除", + "actionFailed": "操作失敗" + }, + "operation": { + "create": "建立", + "confirm": "確認", + "cancel": "取消", + "clear": "清空", + "save": "儲存", + "saveAndEnable": "儲存並啟用", + "edit": "編輯", + "add": "新增", + "added": "已新增", + "refresh": "重新開始", + "reset": "重置", + "search": "搜尋", + "change": "更改", + "remove": "移除", + "send": "傳送", + "copy": "複製", + "lineBreak": "換行", + "sure": "我確定", + "download": "下載", + "delete": "刪除", + "settings": "設定", + "setup": "設定", + "getForFree": "免費獲取", + "reload": "重新整理", + "ok": "好的", + "log": "日誌", + "learnMore": "瞭解更多", + "params": "引數設定", + "duplicate": "複製", + "rename": "重新命名", + "audioSourceUnavailable": "音訊來源不可用", + "copyImage": "複製圖像", + "openInNewTab": "在新選項卡中打開", + "zoomIn": "放大", + "zoomOut": "縮小", + "saveAndRegenerate": "保存並重新生成子塊", + "view": "視圖", + "close": "關閉", + "viewMore": "查看更多", + "regenerate": "再生", + "submit": "提交", + "skip": "船", + "imageCopied": "複製的圖片", + "deleteApp": "刪除應用程式", + "viewDetails": "查看詳情", + "in": "在", + "copied": "複製", + "more": "更多", + "downloadSuccess": "下載完成。", + "downloadFailed": "下載失敗。請稍後再試。", + "format": "格式", + "deSelectAll": "全不選", + "selectAll": "全選", + "config": "配置", + "yes": "是", + "confirmAction": "請確認您的操作。", + "deleteConfirmTitle": "刪除?", + "no": "不", + "noSearchResults": "未找到 {{content}}", + "resetKeywords": "重置關鍵字", + "selectCount": "{{count}} 已選", + "searchCount": "找到 {{count}} {{content}}", + "noSearchCount": "0 {{content}}", + "now": "現在" + }, + "placeholder": { + "input": "請輸入", + "select": "請選擇", + "search": "搜尋..." + }, + "voice": { + "language": { + "zhHans": "中文", + "zhHant": "繁體中文", + "enUS": "英語", + "deDE": "德語", + "frFR": "法語", + "esES": "西班牙語", + "itIT": "義大利語", + "thTH": "泰語", + "idID": "印尼語", + "jaJP": "日語", + "koKR": "韓語", + "ptBR": "葡萄牙語", + "ruRU": "俄語", + "ukUA": "烏克蘭語", + "viVN": "越南語", + "plPL": "波蘭語", + "roRO": "羅馬尼亞語", + "hiIN": "印地語", + "trTR": "土耳其語", + "faIR": "波斯語", + "slSI": "斯洛維尼亞語", + "arTN": "突尼西亞阿拉伯語" + } + }, + "unit": { + "char": "個字元" + }, + "actionMsg": { + "noModification": "暫無修改", + "modifiedSuccessfully": "修改成功", + "modifiedUnsuccessfully": "修改失敗", + "copySuccessfully": "複製成功", + "generatedSuccessfully": "已重新生成", + "generatedUnsuccessfully": "生成失敗", + "paySucceeded": "已支付成功", + "payCancelled": "已取消支付" + }, + "model": { + "params": { + "temperature": "隨機性 temperature", + "temperatureTip": "控制回覆的隨機性。\n值越大,回覆越隨機。\n值越小,回覆越確定或一致。", + "top_p": "核取樣 top_p", + "top_pTip": "控制生成多樣性。\n值越大,輸出會包括更多的單詞選項。\n值越小,模型會更集中在高機率的單詞上,輸出更確定但可能缺乏多樣性。\n核取樣和隨機性不建議同時修改。", + "presence_penalty": "話題新鮮度 presence_penalty", + "presence_penaltyTip": "控制生成時對上文已存在的話題的偏好程度。\n值越大,越可能使用到新的話題。", + "frequency_penalty": "頻率懲罰度 frequency_penalty", + "frequency_penaltyTip": "影響常見與罕見詞彙使用。\n值較大時,傾向於生成不常見的詞彙和表達方式。\n值越小,更傾向於使用常見和普遍接受的詞彙或短語。", + "max_tokens": "單次回覆限制 max_tokens", + "max_tokensTip": "用於限制回覆的最大長度,以 token 為單位。\n較大的值可能會限制給提示詞、聊天記錄和知識庫留出的空間。\n建議將其設定在三分之二以下。\ngpt-4-1106-preview、gpt-4-vision-preview 最大長度 (輸入 128k,輸出 4k)", + "maxTokenSettingTip": "您設定的最大 tokens 數較大,可能會導致 prompt、使用者問題、知識庫內容沒有 token 空間進行處理,建議設定到 2/3 以下。", + "setToCurrentModelMaxTokenTip": "最大令牌數更新為當前模型最大的令牌數 {{maxToken}} 的 80%。", + "stop_sequences": "停止序列 stop_sequences", + "stop_sequencesTip": "最多四個序列,API 將停止生成更多的 token。返回的文字將不包含停止序列。", + "stop_sequencesPlaceholder": "輸入序列並按 Tab 鍵" + }, + "tone": { + "Creative": "創意", + "Balanced": "平衡", + "Precise": "精確", + "Custom": "自定義" + }, + "addMoreModel": "新增更多模型", + "settingsLink": "Model Provider 設置", + "capabilities": "多模式功能" + }, + "menus": { + "status": "beta", + "explore": "探索", + "apps": "工作室", + "appDetail": "應用詳情", + "account": "我的帳戶", + "plugins": "外掛", + "pluginsTips": "整合第三方外掛或建立與 ChatGPT 相容的 AI 外掛。", + "datasets": "知識庫", + "datasetsTips": "即將到來:上傳自己的長文字資料,或透過 Webhook 整合自己的資料來源", + "newApp": "建立應用", + "newDataset": "建立知識庫", + "tools": "工具", + "exploreMarketplace": "探索 Marketplace" + }, + "userProfile": { + "settings": "設定", + "emailSupport": "電子郵件支援", + "workspace": "工作空間", + "createWorkspace": "建立工作空間", + "helpCenter": "查看幫助文件", + "roadmap": "路線圖", + "community": "社群", + "about": "關於", + "logout": "登出", + "support": "支持", + "github": "GitHub", + "compliance": "合規", + "contactUs": "聯絡我們", + "forum": "論壇" + }, + "settings": { + "accountGroup": "賬戶", + "workplaceGroup": "工作空間", + "account": "我的賬戶", + "members": "成員", + "billing": "賬單", + "integrations": "整合", + "language": "語言", + "provider": "模型供應商", + "dataSource": "資料來源", + "plugin": "外掛", + "apiBasedExtension": "API 擴充套件", + "generalGroup": "常規" + }, + "account": { + "avatar": "頭像", + "name": "使用者名稱", + "email": "郵箱", + "password": "密碼", + "passwordTip": "如果您不想使用驗證碼登入,可以設定永久密碼", + "setPassword": "設定密碼", + "resetPassword": "重置密碼", + "currentPassword": "原密碼", + "newPassword": "新密碼", + "notEqual": "兩個密碼不相同", + "confirmPassword": "確認密碼", + "langGeniusAccount": "賬號数据", + "langGeniusAccountTip": "您的賬號和相關的使用者資料。", + "editName": "編輯名字", + "showAppLength": "顯示 {{length}} 個應用", + "delete": "刪除帳戶", + "deleteTip": "刪除您的帳戶將永久刪除您的所有資料並且無法恢復。", + "account": "帳戶", + "myAccount": "我的帳戶", + "studio": "工作室", + "deletePrivacyLinkTip": "有關我們如何處理您的數據的更多資訊,請參閱我們的", + "deletePrivacyLink": "隱私策略。", + "deleteSuccessTip": "您的帳戶需要時間才能完成刪除。完成後,我們會給您發送電子郵件。", + "deleteLabel": "要確認,請在下方輸入您的電子郵件", + "deletePlaceholder": "請輸入您的電子郵件", + "verificationLabel": "驗證碼", + "verificationPlaceholder": "粘貼 6 位代碼", + "permanentlyDeleteButton": "永久刪除帳戶", + "feedbackTitle": "反饋", + "feedbackLabel": "告訴我們您刪除帳戶的原因?", + "feedbackPlaceholder": "自選", + "sendVerificationButton": "發送驗證碼", + "workspaceName": "工作區名稱", + "workspaceIcon": "工作區域圖示", + "editWorkspaceInfo": "編輯工作區資訊", + "changeEmail": { + "emailPlaceholder": "輸入新電子郵件", + "verifyEmail": "驗證您目前的電子郵件", + "continue": "繼續", + "resend": "重新發送", + "title": "更改電子郵件", + "emailLabel": "新電子郵件", + "content4": "我們剛剛向{{email}}發送了一個臨時驗證碼。", + "codePlaceholder": "請粘貼六位數代碼", + "content2": "您目前的電子郵件是 {{email}}。驗證碼已發送到此電子郵件地址。", + "resendCount": "在{{count}}秒後重新發送", + "newEmail": "設置一個新的電子郵件地址", + "sendVerifyCode": "發送驗證碼", + "verifyNew": "驗證您的新電子郵件", + "content1": "如果您繼續,我們將向 {{email}} 發送一個驗證碼以進行重新身份驗證。", + "content3": "請輸入一個新的電子郵件,我們將向您發送驗證碼。", + "codeLabel": "驗證碼", + "changeTo": "更改為 {{email}}", + "existingEmail": "此電子郵件的用戶已經存在。", + "authTip": "一旦您的電子郵件更改,與您的舊電子郵件相關聯的 Google 或 GitHub 帳戶將無法再登錄此帳戶。", + "resendTip": "沒有收到代碼嗎?", + "unAvailableEmail": "此郵件暫時無法使用。" + } + }, + "members": { + "team": "團隊", + "invite": "新增", + "name": "姓名", + "lastActive": "上次活動時間", + "role": "角色", + "pending": "待定...", + "owner": "所有者", + "admin": "管理員", + "adminTip": "能夠建立應用程式和管理團隊設定", + "normal": "成員", + "normalTip": "只能使用應用程式,不能建立應用程式", + "editor": "編輯", + "editorTip": "能夠建立並編輯應用程式,不能管理團隊設定", + "inviteTeamMember": "新增團隊成員", + "inviteTeamMemberTip": "對方在登入後可以訪問你的團隊資料。", + "emailNotSetup": "由於郵件伺服器未設置,無法發送邀請郵件。請將邀請後生成的邀請連結通知用戶。", + "email": "郵箱", + "emailInvalid": "郵箱格式無效", + "emailPlaceholder": "輸入郵箱", + "sendInvite": "傳送邀請", + "invitedAsRole": "邀請為{{role}}使用者", + "invitationSent": "邀請已傳送", + "invitationSentTip": "邀請已傳送,對方登入 Dify 後即可訪問你的團隊資料。", + "invitationLink": "邀請連結", + "failedInvitationEmails": "邀請以下郵箱失敗", + "ok": "好的", + "removeFromTeam": "移出團隊", + "removeFromTeamTip": "將取消團隊訪問", + "setAdmin": "設為管理員", + "setMember": "設為普通成員", + "setEditor": "設為編輯", + "disInvite": "取消邀請", + "deleteMember": "刪除成員", + "you": "(你)", + "setBuilder": "Set as builder(設置為建構器)", + "datasetOperator": "知識管理員", + "builder": "建築工人", + "builderTip": "可以構建和編輯自己的應用程式", + "datasetOperatorTip": "只能管理知識庫", + "transferModal": { + "title": "轉移工作區所有權", + "transfer": "轉移工作區所有權", + "verifyEmail": "驗證您目前的電子郵件", + "codeLabel": "驗證碼", + "resendTip": "沒有收到代碼嗎?", + "sendVerifyCode": "發送驗證碼", + "warningTip": "你將成為管理成員,而新擁有者將擁有完全控制權。", + "transferLabel": "將工作區的擁有權轉讓給", + "resend": "重新發送", + "verifyContent": "您目前的電子郵件是 {{email}}.", + "verifyContent2": "我們將向此電子郵件發送一個臨時驗證碼以進行重新身份驗證。", + "resendCount": "在{{count}}秒後重新發送", + "codePlaceholder": "請粘貼六位數代碼", + "sendTip": "如果您繼續,我們將向 {{email}} 發送一個驗證碼以進行重新身份驗證。", + "transferPlaceholder": "選擇一個工作區成員…", + "warning": "您即將轉讓「{{workspace}}」的所有權。這將立即生效,並且無法撤銷。", + "continue": "繼續" + }, + "transferOwnership": "轉移所有權" + }, + "integrations": { + "connected": "登入方式", + "google": "Google", + "googleAccount": "Google 賬號登入", + "github": "GitHub", + "githubAccount": "GitHub 賬號登入", + "connect": "繫結" + }, + "language": { + "displayLanguage": "介面語言", + "timezone": "時區" + }, + "provider": { + "apiKey": "API 金鑰", + "enterYourKey": "輸入你的 API 金鑰", + "invalidKey": "無效的 OpenAI API 金鑰", + "validatedError": "校驗失敗:", + "validating": "驗證金鑰中...", + "saveFailed": "API 金鑰儲存失敗", + "apiKeyExceedBill": "此 API KEY 已沒有可用配額,請閱讀", + "addKey": "新增 金鑰", + "comingSoon": "即將推出", + "editKey": "編輯", + "invalidApiKey": "無效的 API 金鑰", + "azure": { + "apiBase": "API Base", + "apiBasePlaceholder": "輸入您的 Azure OpenAI API Base 地址", + "apiKey": "API Key", + "apiKeyPlaceholder": "輸入你的 API 金鑰", + "helpTip": "瞭解 Azure OpenAI Service" + }, + "openaiHosted": { + "openaiHosted": "託管 OpenAI", + "onTrial": "體驗", + "exhausted": "超出限額", + "desc": "託管 OpenAI 由 Dify 提供的託管 OpenAI 服務,你可以使用 GPT-3.5 等模型,在體驗額度消耗完畢前你需要設定其它模型供應商。", + "callTimes": "呼叫次數", + "usedUp": "試用額度已用完,請在下方新增自己的模型供應商", + "useYourModel": "當前正在使用你自己的模型供應商。", + "close": "關閉" + }, + "anthropicHosted": { + "anthropicHosted": "Anthropic Claude", + "onTrial": "體驗", + "exhausted": "超出限額", + "desc": "功能強大的模型,擅長執行從複雜對話和創意內容生成到詳細指導的各種任務。", + "callTimes": "呼叫次數", + "usedUp": "試用額度已用完,請在下方新增自己的模型供應商", + "useYourModel": "當前正在使用你自己的模型供應商。", + "close": "關閉", + "trialQuotaTip": "您的 Anthropic 試用配額將於 2025 年 3 月 11 日到期,此後將不再可用。請及時利用。" + }, + "anthropic": { + "using": "嵌入能力正在使用", + "enableTip": "要啟用 Anthropic 模型,您需要先繫結 OpenAI 或 Azure OpenAI 服務。", + "notEnabled": "未啟用", + "keyFrom": "從 Anthropic 獲取您的 API 金鑰" + }, + "encrypted": { + "front": "金鑰將使用 ", + "back": " 技術進行加密和儲存。" + } + }, + "modelProvider": { + "notConfigured": "系統模型尚未完全配置,部分功能可能無法使用。", + "systemModelSettings": "系統模型設定", + "systemModelSettingsLink": "為什麼需要設定系統模型?", + "selectModel": "選擇您的模型", + "setupModelFirst": "請先設定您的模型", + "systemReasoningModel": { + "key": "系統推理模型", + "tip": "設定建立應用使用的預設推理模型,以及對話名稱生成、下一步問題建議等功能也會使用該預設推理模型。" + }, + "embeddingModel": { + "key": "Embedding 模型", + "tip": "設定知識庫文件嵌入處理的預設模型,檢索和匯入知識庫均使用該 Embedding 模型進行向量化處理,切換後將導致已匯入的知識庫與問題之間的向量維度不一致,從而導致檢索失敗。為避免檢索失敗,請勿隨意切換該模型。", + "required": "請選擇 Embedding 模型" + }, + "speechToTextModel": { + "key": "語音轉文字模型", + "tip": "設定對話中語音轉文字輸入的預設使用模型。" + }, + "ttsModel": { + "key": "文字轉語音模型", + "tip": "設定對話中文字轉語音輸出的預設使用模型。" + }, + "rerankModel": { + "key": "Rerank 模型", + "tip": "重排序模型將根據候選文件列表與使用者問題語義匹配度進行重新排序,從而改進語義排序的結果" + }, + "quota": "額度", + "searchModel": "搜尋模型", + "noModelFound": "找不到模型 {{model}}", + "models": "模型列表", + "showMoreModelProvider": "顯示更多模型提供商", + "selector": { + "tip": "該模型已被刪除。請添模型或選擇其他模型。", + "emptyTip": "無可用模型", + "emptySetting": "請前往設定進行配置", + "rerankTip": "請設定 Rerank 模型" + }, + "card": { + "quota": "額度", + "onTrial": "試用中", + "paid": "已購買", + "quotaExhausted": "配額已用完", + "callTimes": "呼叫次數", + "tokens": "Tokens", + "buyQuota": "購買額度", + "priorityUse": "優先使用", + "removeKey": "刪除 API 金鑰", + "tip": "已付費額度將優先考慮。試用額度將在付費額度用完後使用。" + }, + "item": { + "deleteDesc": "{{modelName}} 被用作系統推理模型。刪除後部分功能將無法使用。請確認。", + "freeQuota": "免費額度" + }, + "addApiKey": "新增您的 API 金鑰", + "invalidApiKey": "Invalid API key", + "encrypted": { + "front": "您的金鑰將使用", + "back": "技術進行加密和儲存。" + }, + "freeQuota": { + "howToEarn": "如何獲取" + }, + "addMoreModelProvider": "新增更多模型提供商", + "addModel": "新增模型", + "modelsNum": "{{num}} 個模型", + "showModels": "顯示模型", + "showModelsNum": "顯示 {{num}} 個模型", + "collapse": "收起", + "config": "配置", + "modelAndParameters": "模型及引數", + "model": "模型", + "featureSupported": "支援 {{feature}} 功能", + "callTimes": "呼叫次數", + "credits": "訊息額度", + "buyQuota": "購買額度", + "getFreeTokens": "獲得免費 Tokens", + "priorityUsing": "優先使用", + "deprecated": "已棄用", + "confirmDelete": "確認刪除?", + "quotaTip": "剩餘免費額度", + "loadPresets": "載入預設", + "parameters": "引數", + "loadBalancingHeadline": "負載均衡", + "apiKeyStatusNormal": "APIKey 狀態正常", + "defaultConfig": "默認配置", + "configLoadBalancing": "配置負載均衡", + "loadBalancingDescription": "使用多組憑證減輕壓力。", + "addConfig": "新增配置", + "upgradeForLoadBalancing": "升級您的計劃以啟用 Load Balancing。", + "apiKey": "API 金鑰", + "loadBalancing": "負載均衡", + "providerManagedDescription": "使用模型提供程式提供的單組憑證。", + "modelHasBeenDeprecated": "此模型已棄用", + "apiKeyRateLimit": "已達到速率限制,在 {{seconds}} 秒後可用", + "providerManaged": "提供者管理", + "editConfig": "編輯配置", + "loadBalancingInfo": "默認情況下,負載均衡使用 Round-robin 策略。如果觸發了速率限制,將應用 1 分鐘的冷卻時間。", + "loadBalancingLeastKeyWarning": "要啟用負載均衡,必須至少啟用 2 個金鑰。", + "discoverMore": "發現更多", + "installProvider": "安裝模型提供程式", + "toBeConfigured": "待配置", + "emptyProviderTitle": "未設置模型提供者", + "configureTip": "設置 api-key 或新增要使用的模型", + "emptyProviderTip": "請先安裝模型提供者。", + "auth": { + "apiKeyModal": { + "addModel": "新增模型", + "title": "API 金鑰授權配置", + "desc": "配置完憑證後,工作區內的所有成員在協調應用程式時都可以使用此模型。" + }, + "authRemoved": "授權已被移除", + "configModel": "配置模型", + "addApiKey": "新增 API 金鑰", + "addCredential": "新增憑證", + "addModelCredential": "新增模型憑證", + "modelCredentials": "模型憑證", + "providerManaged": "供應商管理", + "addNewModel": "新增模型", + "specifyModelCredential": "指定模型憑證", + "specifyModelCredentialTip": "使用配置的模型憑證。", + "apiKeys": "API 金鑰", + "configLoadBalancing": "配置負載均衡", + "unAuthorized": "未經授權", + "authorizationError": "授權錯誤", + "providerManagedTip": "當前的配置由提供者主辦。", + "manageCredentials": "管理憑證", + "addModel": "新增模型", + "removeModel": "移除模型", + "editModelCredential": "編輯模型認證", + "customModelCredentialsDeleteTip": "認證正在使用中,無法刪除", + "modelCredential": "模型認證", + "customModelCredentials": "自訂模型認證", + "addNewModelCredential": "新增模型認證", + "selectModelCredential": "選取模型認證" + }, + "parametersInvalidRemoved": "一些參數無效,已被移除", + "installDataSourceProvider": "安裝資料來源提供者" + }, + "dataSource": { + "add": "新增資料來源", + "connect": "繫結", + "notion": { + "title": "Notion", + "description": "使用 Notion 作為知識庫的資料來源。", + "connectedWorkspace": "已繫結工作空間", + "addWorkspace": "新增工作空間", + "connected": "已繫結", + "disconnected": "未繫結", + "changeAuthorizedPages": "更改授權頁面", + "pagesAuthorized": "已授權頁面", + "sync": "同步", + "remove": "刪除", + "selector": { + "pageSelected": "已選頁面", + "searchPages": "搜尋頁面...", + "noSearchResult": "無搜尋結果", + "addPages": "新增頁面", + "preview": "預覽" + }, + "integratedAlert": "Notion 透過內部憑證進行整合,無需重新授權。" + }, + "website": { + "active": "積極", + "title": "網站", + "with": "跟", + "inactive": "無效", + "configuredCrawlers": "配置的爬網程式", + "description": "使用 Web 爬蟲從網站導入內容。" + }, + "configure": "配置" + }, + "plugin": { + "serpapi": { + "apiKey": "API Key", + "apiKeyPlaceholder": "輸入你的 API 金鑰", + "keyFrom": "從 SerpAPI 帳戶頁面獲取您的 SerpAPI 金鑰" + } + }, + "apiBasedExtension": { + "title": "API 擴充套件提供了一個集中式的 API 管理,在此統一新增 API 配置後,方便在 Dify 上的各類應用中直接使用。", + "link": "瞭解如何開發您自己的 API 擴充套件。", + "add": "新增 API 擴充套件", + "selector": { + "title": "API 擴充套件", + "placeholder": "請選擇 API 擴充套件", + "manage": "管理 API 擴充套件" + }, + "modal": { + "title": "新增 API 擴充套件", + "editTitle": "編輯 API 擴充套件", + "name": { + "title": "名稱", + "placeholder": "請輸入名稱" + }, + "apiEndpoint": { + "title": "API Endpoint", + "placeholder": "請輸入 API endpoint" + }, + "apiKey": { + "title": "API-key", + "placeholder": "請輸入 API-key", + "lengthError": "API-key 不能少於 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": "個關聯應用", + "noRelatedApp": "沒有連結的應用程式", + "pipeline": "管道" + }, + "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": "檢索得分:" + }, + "inputPlaceholder": "與 {{botName}} 對話", + "thinking": "思維。。。", + "thought": "思想", + "resend": "重新發送" + }, + "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": "Prompt 中已存在" + }, + "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": "標籤建立失敗" + }, + "errorMsg": { + "fieldRequired": "{{field}} 為必填項", + "urlError": "URL 應以 http:// 或 https:// 開頭" + }, + "fileUploader": { + "pasteFileLink": "粘貼文件連結", + "pasteFileLinkInputPlaceholder": "輸入網址...", + "uploadFromComputerReadError": "檔案讀取失敗,請重試。", + "uploadFromComputerUploadError": "檔案上傳失敗,請重新上傳。", + "pasteFileLinkInvalid": "無效的文件連結", + "uploadFromComputer": "本地上傳", + "fileExtensionNotSupport": "不支援檔擴展名", + "uploadFromComputerLimit": "上傳文件不能超過 {{size}}", + "fileExtensionBlocked": "出於安全原因,此檔案類型被阻止", + "uploadDisabled": "檔案上傳已被禁用" + }, + "license": { + "expiring": "將在 1 天內過期", + "expiring_plural": "將在 {{count}} 天后過期", + "unlimited": "無限制" + }, + "pagination": { + "perPage": "每頁項目數" + }, + "theme": { + "light": "光", + "auto": "系統", + "dark": "黑暗", + "theme": "主題" + }, + "compliance": { + "sandboxUpgradeTooltip": "僅可用於專業或團隊計劃。", + "soc2Type1": "SOC 2 類型 I 報告", + "professionalUpgradeTooltip": "僅可用於團隊計劃或更高版本。", + "gdpr": "GDPR DPA", + "soc2Type2": "SOC 2 類型 II 報告", + "iso27001": "ISO 27001:2022 認證" + }, + "imageInput": { + "supportedFormats": "支援 PNG、JPG、JPEG、WEBP 和 GIF", + "browse": "瀏覽", + "dropImageHere": "將您的圖片放在這裡,或" + }, + "you": "你", + "avatar": { + "deleteTitle": "移除頭像", + "deleteDescription": "您確定要刪除您的個人資料照片嗎?您的帳戶將使用默認的初始頭像。" + }, + "feedback": { + "title": "提供反饋", + "content": "反饋內容", + "placeholder": "請描述發生了什麼問題或我們可以如何改進...", + "subtitle": "請告訴我們這個回應出了什麼問題" + }, + "label": { + "optional": "(選用)" + }, + "noData": "無資料", + "dynamicSelect": { + "error": "載入選項失敗", + "noData": "沒有可用選項", + "loading": "正在載入選項...", + "selected": "{{count}} 已選擇" + } +} diff --git a/web/i18n/zh-Hant/common.ts b/web/i18n/zh-Hant/common.ts deleted file mode 100644 index 8ed1e336ef..0000000000 --- a/web/i18n/zh-Hant/common.ts +++ /dev/null @@ -1,792 +0,0 @@ -const translation = { - api: { - success: '成功', - actionSuccess: '操作成功', - saved: '已儲存', - create: '已建立', - remove: '已移除', - actionFailed: '操作失敗', - }, - operation: { - create: '建立', - confirm: '確認', - cancel: '取消', - clear: '清空', - save: '儲存', - saveAndEnable: '儲存並啟用', - edit: '編輯', - add: '新增', - added: '已新增', - refresh: '重新開始', - reset: '重置', - search: '搜尋', - change: '更改', - remove: '移除', - send: '傳送', - copy: '複製', - lineBreak: '換行', - sure: '我確定', - download: '下載', - delete: '刪除', - settings: '設定', - setup: '設定', - getForFree: '免費獲取', - reload: '重新整理', - ok: '好的', - log: '日誌', - learnMore: '瞭解更多', - params: '引數設定', - duplicate: '複製', - rename: '重新命名', - audioSourceUnavailable: '音訊來源不可用', - copyImage: '複製圖像', - openInNewTab: '在新選項卡中打開', - zoomIn: '放大', - zoomOut: '縮小', - saveAndRegenerate: '保存並重新生成子塊', - view: '視圖', - close: '關閉', - viewMore: '查看更多', - regenerate: '再生', - submit: '提交', - skip: '船', - imageCopied: '複製的圖片', - deleteApp: '刪除應用程式', - viewDetails: '查看詳情', - in: '在', - copied: '複製', - more: '更多', - downloadSuccess: '下載完成。', - downloadFailed: '下載失敗。請稍後再試。', - format: '格式', - deSelectAll: '全不選', - selectAll: '全選', - config: '配置', - yes: '是', - confirmAction: '請確認您的操作。', - deleteConfirmTitle: '刪除?', - no: '不', - noSearchResults: '未找到 {{content}}', - resetKeywords: '重置關鍵字', - selectCount: '{{count}} 已選', - searchCount: '找到 {{count}} {{content}}', - noSearchCount: '0 {{content}}', - now: '現在', - }, - placeholder: { - input: '請輸入', - select: '請選擇', - search: '搜尋...', - }, - voice: { - language: { - zhHans: '中文', - zhHant: '繁體中文', - enUS: '英語', - deDE: '德語', - frFR: '法語', - esES: '西班牙語', - itIT: '義大利語', - thTH: '泰語', - idID: '印尼語', - jaJP: '日語', - koKR: '韓語', - ptBR: '葡萄牙語', - ruRU: '俄語', - ukUA: '烏克蘭語', - viVN: '越南語', - plPL: '波蘭語', - roRO: '羅馬尼亞語', - hiIN: '印地語', - trTR: '土耳其語', - faIR: '波斯語', - slSI: '斯洛維尼亞語', - arTN: '突尼西亞阿拉伯語', - }, - }, - unit: { - char: '個字元', - }, - actionMsg: { - noModification: '暫無修改', - modifiedSuccessfully: '修改成功', - modifiedUnsuccessfully: '修改失敗', - copySuccessfully: '複製成功', - generatedSuccessfully: '已重新生成', - generatedUnsuccessfully: '生成失敗', - paySucceeded: '已支付成功', - payCancelled: '已取消支付', - }, - model: { - params: { - temperature: '隨機性 temperature', - temperatureTip: - '控制回覆的隨機性。\n值越大,回覆越隨機。\n值越小,回覆越確定或一致。', - top_p: '核取樣 top_p', - top_pTip: - '控制生成多樣性。\n值越大,輸出會包括更多的單詞選項。\n值越小,模型會更集中在高機率的單詞上,輸出更確定但可能缺乏多樣性。\n核取樣和隨機性不建議同時修改。', - presence_penalty: '話題新鮮度 presence_penalty', - presence_penaltyTip: - '控制生成時對上文已存在的話題的偏好程度。\n值越大,越可能使用到新的話題。', - frequency_penalty: '頻率懲罰度 frequency_penalty', - frequency_penaltyTip: - '影響常見與罕見詞彙使用。\n值較大時,傾向於生成不常見的詞彙和表達方式。\n值越小,更傾向於使用常見和普遍接受的詞彙或短語。', - max_tokens: '單次回覆限制 max_tokens', - max_tokensTip: - '用於限制回覆的最大長度,以 token 為單位。\n較大的值可能會限制給提示詞、聊天記錄和知識庫留出的空間。\n建議將其設定在三分之二以下。\ngpt-4-1106-preview、gpt-4-vision-preview 最大長度 (輸入 128k,輸出 4k)', - maxTokenSettingTip: '您設定的最大 tokens 數較大,可能會導致 prompt、使用者問題、知識庫內容沒有 token 空間進行處理,建議設定到 2/3 以下。', - setToCurrentModelMaxTokenTip: '最大令牌數更新為當前模型最大的令牌數 {{maxToken}} 的 80%。', - stop_sequences: '停止序列 stop_sequences', - stop_sequencesTip: '最多四個序列,API 將停止生成更多的 token。返回的文字將不包含停止序列。', - stop_sequencesPlaceholder: '輸入序列並按 Tab 鍵', - }, - tone: { - Creative: '創意', - Balanced: '平衡', - Precise: '精確', - Custom: '自定義', - }, - addMoreModel: '新增更多模型', - settingsLink: 'Model Provider 設置', - capabilities: '多模式功能', - }, - menus: { - status: 'beta', - explore: '探索', - apps: '工作室', - appDetail: '應用詳情', - account: '我的帳戶', - plugins: '外掛', - pluginsTips: '整合第三方外掛或建立與 ChatGPT 相容的 AI 外掛。', - datasets: '知識庫', - datasetsTips: '即將到來:上傳自己的長文字資料,或透過 Webhook 整合自己的資料來源', - newApp: '建立應用', - newDataset: '建立知識庫', - tools: '工具', - exploreMarketplace: '探索 Marketplace', - }, - userProfile: { - settings: '設定', - emailSupport: '電子郵件支援', - workspace: '工作空間', - createWorkspace: '建立工作空間', - helpCenter: '查看幫助文件', - roadmap: '路線圖', - community: '社群', - about: '關於', - logout: '登出', - support: '支持', - github: 'GitHub', - compliance: '合規', - contactUs: '聯絡我們', - forum: '論壇', - }, - settings: { - accountGroup: '賬戶', - workplaceGroup: '工作空間', - account: '我的賬戶', - members: '成員', - billing: '賬單', - integrations: '整合', - language: '語言', - provider: '模型供應商', - dataSource: '資料來源', - plugin: '外掛', - apiBasedExtension: 'API 擴充套件', - generalGroup: '常規', - }, - account: { - avatar: '頭像', - name: '使用者名稱', - email: '郵箱', - password: '密碼', - passwordTip: '如果您不想使用驗證碼登入,可以設定永久密碼', - setPassword: '設定密碼', - resetPassword: '重置密碼', - currentPassword: '原密碼', - newPassword: '新密碼', - notEqual: '兩個密碼不相同', - confirmPassword: '確認密碼', - langGeniusAccount: '賬號数据', - langGeniusAccountTip: '您的賬號和相關的使用者資料。', - editName: '編輯名字', - showAppLength: '顯示 {{length}} 個應用', - delete: '刪除帳戶', - deleteTip: '刪除您的帳戶將永久刪除您的所有資料並且無法恢復。', - account: '帳戶', - myAccount: '我的帳戶', - studio: '工作室', - deletePrivacyLinkTip: '有關我們如何處理您的數據的更多資訊,請參閱我們的', - deletePrivacyLink: '隱私策略。', - deleteSuccessTip: '您的帳戶需要時間才能完成刪除。完成後,我們會給您發送電子郵件。', - deleteLabel: '要確認,請在下方輸入您的電子郵件', - deletePlaceholder: '請輸入您的電子郵件', - verificationLabel: '驗證碼', - verificationPlaceholder: '粘貼 6 位代碼', - permanentlyDeleteButton: '永久刪除帳戶', - feedbackTitle: '反饋', - feedbackLabel: '告訴我們您刪除帳戶的原因?', - feedbackPlaceholder: '自選', - sendVerificationButton: '發送驗證碼', - workspaceName: '工作區名稱', - workspaceIcon: '工作區域圖示', - editWorkspaceInfo: '編輯工作區資訊', - changeEmail: { - emailPlaceholder: '輸入新電子郵件', - verifyEmail: '驗證您目前的電子郵件', - continue: '繼續', - resend: '重新發送', - title: '更改電子郵件', - emailLabel: '新電子郵件', - content4: '我們剛剛向{{email}}發送了一個臨時驗證碼。', - codePlaceholder: '請粘貼六位數代碼', - content2: '您目前的電子郵件是 {{email}}。驗證碼已發送到此電子郵件地址。', - resendCount: '在{{count}}秒後重新發送', - newEmail: '設置一個新的電子郵件地址', - sendVerifyCode: '發送驗證碼', - verifyNew: '驗證您的新電子郵件', - content1: '如果您繼續,我們將向 {{email}} 發送一個驗證碼以進行重新身份驗證。', - content3: '請輸入一個新的電子郵件,我們將向您發送驗證碼。', - codeLabel: '驗證碼', - changeTo: '更改為 {{email}}', - existingEmail: '此電子郵件的用戶已經存在。', - authTip: '一旦您的電子郵件更改,與您的舊電子郵件相關聯的 Google 或 GitHub 帳戶將無法再登錄此帳戶。', - resendTip: '沒有收到代碼嗎?', - unAvailableEmail: '此郵件暫時無法使用。', - }, - }, - members: { - team: '團隊', - invite: '新增', - name: '姓名', - lastActive: '上次活動時間', - role: '角色', - pending: '待定...', - owner: '所有者', - admin: '管理員', - adminTip: '能夠建立應用程式和管理團隊設定', - normal: '成員', - normalTip: '只能使用應用程式,不能建立應用程式', - editor: '編輯', - editorTip: '能夠建立並編輯應用程式,不能管理團隊設定', - inviteTeamMember: '新增團隊成員', - inviteTeamMemberTip: '對方在登入後可以訪問你的團隊資料。', - emailNotSetup: '由於郵件伺服器未設置,無法發送邀請郵件。請將邀請後生成的邀請連結通知用戶。', - email: '郵箱', - emailInvalid: '郵箱格式無效', - emailPlaceholder: '輸入郵箱', - sendInvite: '傳送邀請', - invitedAsRole: '邀請為{{role}}使用者', - invitationSent: '邀請已傳送', - invitationSentTip: '邀請已傳送,對方登入 Dify 後即可訪問你的團隊資料。', - invitationLink: '邀請連結', - failedInvitationEmails: '邀請以下郵箱失敗', - ok: '好的', - removeFromTeam: '移出團隊', - removeFromTeamTip: '將取消團隊訪問', - setAdmin: '設為管理員', - setMember: '設為普通成員', - setEditor: '設為編輯', - disInvite: '取消邀請', - deleteMember: '刪除成員', - you: '(你)', - setBuilder: 'Set as builder(設置為建構器)', - datasetOperator: '知識管理員', - builder: '建築工人', - builderTip: '可以構建和編輯自己的應用程式', - datasetOperatorTip: '只能管理知識庫', - transferModal: { - title: '轉移工作區所有權', - transfer: '轉移工作區所有權', - verifyEmail: '驗證您目前的電子郵件', - codeLabel: '驗證碼', - resendTip: '沒有收到代碼嗎?', - sendVerifyCode: '發送驗證碼', - warningTip: '你將成為管理成員,而新擁有者將擁有完全控制權。', - transferLabel: '將工作區的擁有權轉讓給', - resend: '重新發送', - verifyContent: '您目前的電子郵件是 {{email}}.', - verifyContent2: '我們將向此電子郵件發送一個臨時驗證碼以進行重新身份驗證。', - resendCount: '在{{count}}秒後重新發送', - codePlaceholder: '請粘貼六位數代碼', - sendTip: '如果您繼續,我們將向 {{email}} 發送一個驗證碼以進行重新身份驗證。', - transferPlaceholder: '選擇一個工作區成員…', - warning: '您即將轉讓「{{workspace}}」的所有權。這將立即生效,並且無法撤銷。', - continue: '繼續', - }, - transferOwnership: '轉移所有權', - }, - integrations: { - connected: '登入方式', - google: 'Google', - googleAccount: 'Google 賬號登入', - github: 'GitHub', - githubAccount: 'GitHub 賬號登入', - connect: '繫結', - }, - language: { - displayLanguage: '介面語言', - timezone: '時區', - }, - provider: { - apiKey: 'API 金鑰', - enterYourKey: '輸入你的 API 金鑰', - invalidKey: '無效的 OpenAI API 金鑰', - validatedError: '校驗失敗:', - validating: '驗證金鑰中...', - saveFailed: 'API 金鑰儲存失敗', - apiKeyExceedBill: '此 API KEY 已沒有可用配額,請閱讀', - addKey: '新增 金鑰', - comingSoon: '即將推出', - editKey: '編輯', - invalidApiKey: '無效的 API 金鑰', - azure: { - apiBase: 'API Base', - apiBasePlaceholder: '輸入您的 Azure OpenAI API Base 地址', - apiKey: 'API Key', - apiKeyPlaceholder: '輸入你的 API 金鑰', - helpTip: '瞭解 Azure OpenAI Service', - }, - openaiHosted: { - openaiHosted: '託管 OpenAI', - onTrial: '體驗', - exhausted: '超出限額', - desc: '託管 OpenAI 由 Dify 提供的託管 OpenAI 服務,你可以使用 GPT-3.5 等模型,在體驗額度消耗完畢前你需要設定其它模型供應商。', - callTimes: '呼叫次數', - usedUp: '試用額度已用完,請在下方新增自己的模型供應商', - useYourModel: '當前正在使用你自己的模型供應商。', - close: '關閉', - }, - anthropicHosted: { - anthropicHosted: 'Anthropic Claude', - onTrial: '體驗', - exhausted: '超出限額', - desc: '功能強大的模型,擅長執行從複雜對話和創意內容生成到詳細指導的各種任務。', - callTimes: '呼叫次數', - usedUp: '試用額度已用完,請在下方新增自己的模型供應商', - useYourModel: '當前正在使用你自己的模型供應商。', - close: '關閉', - trialQuotaTip: '您的 Anthropic 試用配額將於 2025 年 3 月 11 日到期,此後將不再可用。請及時利用。', - }, - anthropic: { - using: '嵌入能力正在使用', - enableTip: '要啟用 Anthropic 模型,您需要先繫結 OpenAI 或 Azure OpenAI 服務。', - notEnabled: '未啟用', - keyFrom: '從 Anthropic 獲取您的 API 金鑰', - }, - encrypted: { - front: '金鑰將使用 ', - back: ' 技術進行加密和儲存。', - }, - }, - modelProvider: { - notConfigured: '系統模型尚未完全配置,部分功能可能無法使用。', - systemModelSettings: '系統模型設定', - systemModelSettingsLink: '為什麼需要設定系統模型?', - selectModel: '選擇您的模型', - setupModelFirst: '請先設定您的模型', - systemReasoningModel: { - key: '系統推理模型', - tip: '設定建立應用使用的預設推理模型,以及對話名稱生成、下一步問題建議等功能也會使用該預設推理模型。', - }, - embeddingModel: { - key: 'Embedding 模型', - tip: '設定知識庫文件嵌入處理的預設模型,檢索和匯入知識庫均使用該 Embedding 模型進行向量化處理,切換後將導致已匯入的知識庫與問題之間的向量維度不一致,從而導致檢索失敗。為避免檢索失敗,請勿隨意切換該模型。', - required: '請選擇 Embedding 模型', - }, - speechToTextModel: { - key: '語音轉文字模型', - tip: '設定對話中語音轉文字輸入的預設使用模型。', - }, - ttsModel: { - key: '文字轉語音模型', - tip: '設定對話中文字轉語音輸出的預設使用模型。', - }, - rerankModel: { - key: 'Rerank 模型', - tip: '重排序模型將根據候選文件列表與使用者問題語義匹配度進行重新排序,從而改進語義排序的結果', - }, - quota: '額度', - searchModel: '搜尋模型', - noModelFound: '找不到模型 {{model}}', - models: '模型列表', - showMoreModelProvider: '顯示更多模型提供商', - selector: { - tip: '該模型已被刪除。請添模型或選擇其他模型。', - emptyTip: '無可用模型', - emptySetting: '請前往設定進行配置', - rerankTip: '請設定 Rerank 模型', - }, - card: { - quota: '額度', - onTrial: '試用中', - paid: '已購買', - quotaExhausted: '配額已用完', - callTimes: '呼叫次數', - tokens: 'Tokens', - buyQuota: '購買額度', - priorityUse: '優先使用', - removeKey: '刪除 API 金鑰', - tip: '已付費額度將優先考慮。試用額度將在付費額度用完後使用。', - }, - item: { - deleteDesc: '{{modelName}} 被用作系統推理模型。刪除後部分功能將無法使用。請確認。', - freeQuota: '免費額度', - }, - addApiKey: '新增您的 API 金鑰', - invalidApiKey: 'Invalid API key', - encrypted: { - front: '您的金鑰將使用', - back: '技術進行加密和儲存。', - }, - freeQuota: { - howToEarn: '如何獲取', - }, - addMoreModelProvider: '新增更多模型提供商', - addModel: '新增模型', - modelsNum: '{{num}} 個模型', - showModels: '顯示模型', - showModelsNum: '顯示 {{num}} 個模型', - collapse: '收起', - config: '配置', - modelAndParameters: '模型及引數', - model: '模型', - featureSupported: '支援 {{feature}} 功能', - callTimes: '呼叫次數', - credits: '訊息額度', - buyQuota: '購買額度', - getFreeTokens: '獲得免費 Tokens', - priorityUsing: '優先使用', - deprecated: '已棄用', - confirmDelete: '確認刪除?', - quotaTip: '剩餘免費額度', - loadPresets: '載入預設', - parameters: '引數', - loadBalancingHeadline: '負載均衡', - apiKeyStatusNormal: 'APIKey 狀態正常', - defaultConfig: '默認配置', - configLoadBalancing: '配置負載均衡', - loadBalancingDescription: '使用多組憑證減輕壓力。', - addConfig: '新增配置', - upgradeForLoadBalancing: '升級您的計劃以啟用 Load Balancing。', - apiKey: 'API 金鑰', - loadBalancing: '負載均衡', - providerManagedDescription: '使用模型提供程式提供的單組憑證。', - modelHasBeenDeprecated: '此模型已棄用', - apiKeyRateLimit: '已達到速率限制,在 {{seconds}} 秒後可用', - providerManaged: '提供者管理', - editConfig: '編輯配置', - loadBalancingInfo: '默認情況下,負載均衡使用 Round-robin 策略。如果觸發了速率限制,將應用 1 分鐘的冷卻時間。', - loadBalancingLeastKeyWarning: '要啟用負載均衡,必須至少啟用 2 個金鑰。', - discoverMore: '發現更多', - installProvider: '安裝模型提供程式', - toBeConfigured: '待配置', - emptyProviderTitle: '未設置模型提供者', - configureTip: '設置 api-key 或新增要使用的模型', - emptyProviderTip: '請先安裝模型提供者。', - auth: { - apiKeyModal: { - addModel: '新增模型', - title: 'API 金鑰授權配置', - desc: '配置完憑證後,工作區內的所有成員在協調應用程式時都可以使用此模型。', - }, - authRemoved: '授權已被移除', - configModel: '配置模型', - addApiKey: '新增 API 金鑰', - addCredential: '新增憑證', - addModelCredential: '新增模型憑證', - modelCredentials: '模型憑證', - providerManaged: '供應商管理', - addNewModel: '新增模型', - specifyModelCredential: '指定模型憑證', - specifyModelCredentialTip: '使用配置的模型憑證。', - apiKeys: 'API 金鑰', - configLoadBalancing: '配置負載均衡', - unAuthorized: '未經授權', - authorizationError: '授權錯誤', - providerManagedTip: '當前的配置由提供者主辦。', - manageCredentials: '管理憑證', - addModel: '新增模型', - removeModel: '移除模型', - editModelCredential: '編輯模型認證', - customModelCredentialsDeleteTip: '認證正在使用中,無法刪除', - modelCredential: '模型認證', - customModelCredentials: '自訂模型認證', - addNewModelCredential: '新增模型認證', - selectModelCredential: '選取模型認證', - }, - parametersInvalidRemoved: '一些參數無效,已被移除', - installDataSourceProvider: '安裝資料來源提供者', - }, - dataSource: { - add: '新增資料來源', - connect: '繫結', - notion: { - title: 'Notion', - description: '使用 Notion 作為知識庫的資料來源。', - connectedWorkspace: '已繫結工作空間', - addWorkspace: '新增工作空間', - connected: '已繫結', - disconnected: '未繫結', - changeAuthorizedPages: '更改授權頁面', - pagesAuthorized: '已授權頁面', - sync: '同步', - remove: '刪除', - selector: { - pageSelected: '已選頁面', - searchPages: '搜尋頁面...', - noSearchResult: '無搜尋結果', - addPages: '新增頁面', - preview: '預覽', - }, - integratedAlert: 'Notion 透過內部憑證進行整合,無需重新授權。', - }, - website: { - active: '積極', - title: '網站', - with: '跟', - inactive: '無效', - configuredCrawlers: '配置的爬網程式', - description: '使用 Web 爬蟲從網站導入內容。', - }, - configure: '配置', - }, - plugin: { - serpapi: { - apiKey: 'API Key', - apiKeyPlaceholder: '輸入你的 API 金鑰', - keyFrom: '從 SerpAPI 帳戶頁面獲取您的 SerpAPI 金鑰', - }, - }, - apiBasedExtension: { - title: 'API 擴充套件提供了一個集中式的 API 管理,在此統一新增 API 配置後,方便在 Dify 上的各類應用中直接使用。', - link: '瞭解如何開發您自己的 API 擴充套件。', - add: '新增 API 擴充套件', - selector: { - title: 'API 擴充套件', - placeholder: '請選擇 API 擴充套件', - manage: '管理 API 擴充套件', - }, - modal: { - title: '新增 API 擴充套件', - editTitle: '編輯 API 擴充套件', - name: { - title: '名稱', - placeholder: '請輸入名稱', - }, - apiEndpoint: { - title: 'API Endpoint', - placeholder: '請輸入 API endpoint', - }, - apiKey: { - title: 'API-key', - placeholder: '請輸入 API-key', - lengthError: 'API-key 不能少於 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: '個關聯應用', - noRelatedApp: '沒有連結的應用程式', - pipeline: '管道', - }, - 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: '檢索得分:', - }, - inputPlaceholder: '與 {{botName}} 對話', - thinking: '思維。。。', - thought: '思想', - resend: '重新發送', - }, - 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: 'Prompt 中已存在', - }, - 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: '標籤建立失敗', - }, - errorMsg: { - fieldRequired: '{{field}} 為必填項', - urlError: 'URL 應以 http:// 或 https:// 開頭', - }, - fileUploader: { - pasteFileLink: '粘貼文件連結', - pasteFileLinkInputPlaceholder: '輸入網址...', - uploadFromComputerReadError: '檔案讀取失敗,請重試。', - uploadFromComputerUploadError: '檔案上傳失敗,請重新上傳。', - pasteFileLinkInvalid: '無效的文件連結', - uploadFromComputer: '本地上傳', - fileExtensionNotSupport: '不支援檔擴展名', - uploadFromComputerLimit: '上傳文件不能超過 {{size}}', - fileExtensionBlocked: '出於安全原因,此檔案類型被阻止', - uploadDisabled: '檔案上傳已被禁用', - }, - license: { - expiring: '將在 1 天內過期', - expiring_plural: '將在 {{count}} 天后過期', - unlimited: '無限制', - }, - pagination: { - perPage: '每頁項目數', - }, - theme: { - light: '光', - auto: '系統', - dark: '黑暗', - theme: '主題', - }, - compliance: { - sandboxUpgradeTooltip: '僅可用於專業或團隊計劃。', - soc2Type1: 'SOC 2 類型 I 報告', - professionalUpgradeTooltip: '僅可用於團隊計劃或更高版本。', - gdpr: 'GDPR DPA', - soc2Type2: 'SOC 2 類型 II 報告', - iso27001: 'ISO 27001:2022 認證', - }, - imageInput: { - supportedFormats: '支援 PNG、JPG、JPEG、WEBP 和 GIF', - browse: '瀏覽', - dropImageHere: '將您的圖片放在這裡,或', - }, - you: '你', - avatar: { - deleteTitle: '移除頭像', - deleteDescription: '您確定要刪除您的個人資料照片嗎?您的帳戶將使用默認的初始頭像。', - }, - feedback: { - title: '提供反饋', - content: '反饋內容', - placeholder: '請描述發生了什麼問題或我們可以如何改進...', - subtitle: '請告訴我們這個回應出了什麼問題', - }, - label: { - optional: '(選用)', - }, - noData: '無資料', - dynamicSelect: { - error: '載入選項失敗', - noData: '沒有可用選項', - loading: '正在載入選項...', - selected: '{{count}} 已選擇', - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/custom.json b/web/i18n/zh-Hant/custom.json new file mode 100644 index 0000000000..b59bc84b48 --- /dev/null +++ b/web/i18n/zh-Hant/custom.json @@ -0,0 +1,30 @@ +{ + "custom": "定製", + "upgradeTip": { + "prefix": "升級您的計劃以", + "suffix": "定製您的品牌。", + "des": "升級您的計劃以自訂您的品牌", + "title": "升級您的計劃" + }, + "webapp": { + "title": "定製 web app 品牌", + "removeBrand": "移除 Powered by Dify", + "changeLogo": "更改 Powered by Brand 圖片", + "changeLogoTip": "SVG 或 PNG 格式,最小尺寸為 40x40px" + }, + "app": { + "title": "定製應用品牌", + "changeLogoTip": "SVG 或 PNG 格式,最小尺寸為 80x80px" + }, + "upload": "上傳", + "uploading": "上傳中", + "uploadedFail": "圖片上傳失敗,請重新上傳。", + "change": "更改", + "apply": "應用", + "restore": "恢復預設", + "customize": { + "contactUs": "聯絡我們", + "prefix": "如需在 Dify 內自定義品牌圖示,請", + "suffix": "升級至企業版。" + } +} diff --git a/web/i18n/zh-Hant/custom.ts b/web/i18n/zh-Hant/custom.ts deleted file mode 100644 index 08dd332a8c..0000000000 --- a/web/i18n/zh-Hant/custom.ts +++ /dev/null @@ -1,32 +0,0 @@ -const translation = { - custom: '定製', - upgradeTip: { - prefix: '升級您的計劃以', - suffix: '定製您的品牌。', - des: '升級您的計劃以自訂您的品牌', - title: '升級您的計劃', - }, - webapp: { - title: '定製 web app 品牌', - removeBrand: '移除 Powered by Dify', - changeLogo: '更改 Powered by Brand 圖片', - changeLogoTip: 'SVG 或 PNG 格式,最小尺寸為 40x40px', - }, - app: { - title: '定製應用品牌', - changeLogoTip: 'SVG 或 PNG 格式,最小尺寸為 80x80px', - }, - upload: '上傳', - uploading: '上傳中', - uploadedFail: '圖片上傳失敗,請重新上傳。', - change: '更改', - apply: '應用', - restore: '恢復預設', - customize: { - contactUs: '聯絡我們', - prefix: '如需在 Dify 內自定義品牌圖示,請', - suffix: '升級至企業版。', - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/dataset-creation.json b/web/i18n/zh-Hant/dataset-creation.json new file mode 100644 index 0000000000..8889ae6c73 --- /dev/null +++ b/web/i18n/zh-Hant/dataset-creation.json @@ -0,0 +1,215 @@ +{ + "steps": { + "header": { + "fallbackRoute": "知識" + }, + "one": "選擇資料來源", + "two": "文字分段與清洗", + "three": "處理並完成" + }, + "error": { + "unavailable": "該知識庫不可用" + }, + "stepOne": { + "filePreview": "檔案預覽", + "pagePreview": "頁面預覽", + "dataSourceType": { + "file": "匯入已有文字", + "notion": "同步自 Notion 內容", + "web": "同步自 Web 站點" + }, + "uploader": { + "title": "上傳文字檔案", + "button": "拖拽檔案或檔案夾至此,或者", + "buttonSingleFile": "拖拽檔案至此,或者", + "browse": "選擇檔案", + "tip": "已支援 {{supportTypes}},每個檔案不超過 {{size}}MB。", + "validation": { + "typeError": "檔案型別不支援", + "size": "檔案太大了,不能超過 {{size}}MB", + "count": "暫不支援多個檔案", + "filesNumber": "批次上傳限制 {{filesNumber}}。" + }, + "cancel": "取消", + "change": "更改檔案", + "failed": "上傳失敗" + }, + "notionSyncTitle": "Notion 未繫結", + "notionSyncTip": "同步 Notion 內容前,須先繫結 Notion 空間", + "connect": "去繫結", + "cancel": "取消", + "button": "下一步", + "emptyDatasetCreation": "建立一個空知識庫", + "modal": { + "title": "建立空知識庫", + "tip": "空知識庫中還沒有文件,你可以在今後任何時候上傳文件至該知識庫。", + "input": "知識庫名稱", + "placeholder": "請輸入知識庫名稱", + "nameNotEmpty": "名稱不能為空", + "nameLengthInvalid": "名稱長度不能超過 40 個字元", + "cancelButton": "取消", + "confirmButton": "建立", + "failed": "建立失敗" + }, + "website": { + "maxDepth": "最大深度", + "selectAll": "全選", + "exceptionErrorTitle": "運行 Firecrawl 作業時發生異常:", + "run": "跑", + "extractOnlyMainContent": "僅提取主要內容(無頁眉、導航、頁腳等)", + "fireCrawlNotConfiguredDescription": "使用 API 金鑰配置 Firecrawl 以使用它。", + "limit": "限制", + "crawlSubPage": "抓取子頁面", + "preview": "預覽", + "configure": "配置", + "excludePaths": "排除路徑", + "options": "選項", + "firecrawlDoc": "Firecrawl 文件", + "totalPageScraped": "抓取的總頁數:", + "firecrawlTitle": "使用 🔥Firecrawl 提取 Web 內容", + "includeOnlyPaths": "僅包含路徑", + "resetAll": "全部重置", + "scrapTimeInfo": "在 {{time}} 秒內總共抓取了 {{total}} 個頁面", + "unknownError": "未知錯誤", + "fireCrawlNotConfigured": "未配置 Firecrawl", + "maxDepthTooltip": "相對於輸入的 URL 的最大爬網深度。深度 0 只是抓取輸入的 url 的頁面,深度 1 抓取 url 以及 enteredURL + 1 / 之後的所有內容,依此類推。", + "jinaReaderNotConfigured": "未配置 Jina Reader", + "jinaReaderNotConfiguredDescription": "通過輸入您的免費 API 金鑰進行訪問來設置 Jina Reader。", + "chooseProvider": "選擇供應商", + "jinaReaderDoc": "了解有關 Jina Reader 的更多資訊", + "jinaReaderTitle": "將整個網站轉換為 Markdown", + "useSitemap": "使用網站地圖", + "jinaReaderDocLink": "https://jina.ai/reader", + "useSitemapTooltip": "按照網站地圖對網站進行爬網。否則,Jina Reader 將根據頁面相關性反覆運算抓取,從而生成更少但品質更高的頁面。", + "watercrawlDoc": "Watercrawl 文檔", + "configureFirecrawl": "配置 Firecrawl", + "configureWatercrawl": "配置水爬行", + "watercrawlTitle": "使用 Watercrawl 提取網頁內容", + "waterCrawlNotConfiguredDescription": "配置 Watercrawl 並使用 API 金鑰來使用它。", + "configureJinaReader": "配置 Jina Reader", + "waterCrawlNotConfigured": "Watercrawl 尚未配置", + "running": "流動的" + } + }, + "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 KEY 設定。.", + "click": "前往設定", + "economical": "經濟", + "economicalTip": "使用離線的向量引擎、關鍵詞索引等方式,降低了準確度但無需花費 Token", + "QATitle": "採用 Q&A 分段模式", + "QATip": "開啟後將會消耗額外的 token", + "QALanguage": "分段使用", + "estimateCost": "執行嵌入預估消耗", + "estimateSegment": "預估分段數", + "segmentCount": "段", + "calculating": "計算中...", + "fileSource": "預處理文件", + "notionSource": "預處理頁面", + "other": "和其他 ", + "fileUnit": " 個檔案", + "notionUnit": " 個頁面", + "previousStep": "上一步", + "nextStep": "儲存並處理", + "save": "儲存並處理", + "cancel": "取消", + "sideTipTitle": "為什麼要分段和預處理?", + "sideTipP1": "在處理文字資料時,分段和清洗是兩個重要的預處理步驟。", + "sideTipP2": "分段的目的是將長文字拆分成較小的段落,以便模型更有效地處理和理解。這有助於提高模型生成的結果的品質和相關性。", + "sideTipP3": "清洗則是對文字進行預處理,刪除不必要的字元、符號或格式,使知識庫更加乾淨、整潔,便於模型解析。", + "sideTipP4": "透過對知識庫進行適當的分段和清洗,可以提高模型在實際應用中的表現,從而為使用者提供更準確、更有價值的結果。", + "previewTitle": "分段預覽", + "previewTitleButton": "預覽", + "previewButton": "切換至 Q&A 形式", + "previewSwitchTipStart": "當前分段預覽是文字模式,切換到 Q&A 模式將會", + "previewSwitchTipEnd": "消耗額外的 token", + "characters": "字元", + "indexSettingTip": "要更改索引方法,請轉到", + "retrievalSettingTip": "要更改檢索方法,請轉到", + "datasetSettingLink": "知識庫設定。", + "websiteSource": "預處理網站", + "webpageUnit": "頁面", + "separatorTip": "分隔符是用於分隔文字的字元。\\n\\n 和 \\n 是分隔段落和行的常用分隔符。與逗號(\\n\\n,\\n)組合使用時,當超過最大區塊長度時,段落將按行分段。您也可以使用自定義的特殊分隔符(例如 ***)。", + "maxLengthCheck": "塊最大長度應小於 {{limit}}", + "general": "常規", + "previewChunkCount": "{{count}}估計塊數", + "useQALanguage": "使用 Q&A 格式的塊", + "qaSwitchHighQualityTipContent": "目前,只有高品質索引方法支援 Q&A 格式分塊。是否要切換到高品質模式?", + "previewChunk": "預覽資料塊(Preview Chunk)", + "fullDocTip": "整個文件用作父塊並直接檢索。請注意,出於性能原因,超過 10000 個令牌的文本將被自動截斷。", + "parentChunkForContext": "父母的背景", + "previewChunkTip": "點擊左側的 『Preview Chunk』 按鈕載入預覽", + "parentChild": "父子", + "notAvailableForQA": "不適用於 Q&A 索引", + "parentChildChunkDelimiterTip": "分隔符是用於分隔文字的字元。建議使用 \\n 將父塊拆分為小的子塊。您還可以使用自己定義的特殊分隔符。", + "parentChildDelimiterTip": "分隔符是用於分隔文字的字元。建議將原始文檔拆分為多個大型父塊。您還可以使用自己定義的特殊分隔符。", + "generalTip": "常規文本分塊模式,檢索和調用的塊是相同的。", + "highQualityTip": "在 High Quality 模式下完成嵌入後,將無法恢復到 Economical(經濟)模式。", + "childChunkForRetrieval": "用於檢索的 Child-chunk", + "paragraphTip": "此模式根據分隔符和最大區塊長度將文本拆分為段落,使用拆分文本作為父區塊進行檢索。", + "paragraph": "段", + "qaSwitchHighQualityTipTitle": "Q&A 格式需要高品質的索引方法", + "notAvailableForParentChild": "不適用於父子索引", + "fullDoc": "完整文件", + "parentChildTip": "當使用 parent-child 模式時,child-chunk 用於檢索,parent-chunk 用於作為上下文調用 call。", + "switch": "開關", + "qaTip": "使用結構化 Q&A 資料時,您可以建立將問題與答案配對的文件。這些文件根據問題部分進行索引,允許系統根據查詢相似性檢索相關答案。" + }, + "stepThree": { + "creationTitle": "🎉 知識庫已建立", + "creationContent": "我們自動為該知識庫起了個名稱,您也可以隨時修改", + "label": "知識庫名稱", + "additionTitle": "🎉 文件已上傳", + "additionP1": "文件已上傳至知識庫:", + "additionP2": ",你可以在知識庫的文件列表中找到它。", + "stop": "停止處理", + "resume": "恢復處理", + "navTo": "前往文件", + "sideTipTitle": "接下來做什麼", + "sideTipContent": "當文件完成索引處理後,知識庫即可整合至應用內作為上下文使用,你可以在提示詞編排頁找到上下文設定。你也可以建立成可獨立使用的 ChatGPT 索引外掛釋出。", + "modelTitle": "確認停止索引過程嗎?", + "modelContent": "如果您需要稍後恢復處理,則從停止處繼續。", + "modelButtonConfirm": "確認停止", + "modelButtonCancel": "取消" + }, + "firecrawl": { + "configFirecrawl": "配置 🔥Firecrawl", + "apiKeyPlaceholder": "來自 firecrawl.dev 的 API 金鑰", + "getApiKeyLinkText": "從 firecrawl.dev 獲取 API 金鑰" + }, + "jinaReader": { + "configJinaReader": "配置 Jina Reader", + "getApiKeyLinkText": "在 jina.ai 獲取您的免費 API 金鑰", + "apiKeyPlaceholder": "來自 jina.ai 的 API 金鑰" + }, + "otherDataSource": { + "learnMore": "瞭解更多資訊", + "description": "目前,Dify 的知識庫只有有限的數據源。向 Dify 知識庫貢獻數據源是説明所有使用者增強平台靈活性和強大功能的絕佳方式。我們的貢獻指南使入門變得容易。請點擊下面的連結瞭解更多資訊。", + "title": "連接到其他數據源?" + }, + "watercrawl": { + "apiKeyPlaceholder": "來自 watercrawl.dev 的 API 金鑰", + "configWatercrawl": "配置水爬行", + "getApiKeyLinkText": "從 watercrawl.dev 獲取您的 API 金鑰" + } +} diff --git a/web/i18n/zh-Hant/dataset-creation.ts b/web/i18n/zh-Hant/dataset-creation.ts deleted file mode 100644 index 2e551b58d9..0000000000 --- a/web/i18n/zh-Hant/dataset-creation.ts +++ /dev/null @@ -1,217 +0,0 @@ -const translation = { - steps: { - header: { - fallbackRoute: '知識', - }, - one: '選擇資料來源', - two: '文字分段與清洗', - three: '處理並完成', - }, - error: { - unavailable: '該知識庫不可用', - }, - stepOne: { - filePreview: '檔案預覽', - pagePreview: '頁面預覽', - dataSourceType: { - file: '匯入已有文字', - notion: '同步自 Notion 內容', - web: '同步自 Web 站點', - }, - uploader: { - title: '上傳文字檔案', - button: '拖拽檔案或檔案夾至此,或者', - buttonSingleFile: '拖拽檔案至此,或者', - browse: '選擇檔案', - tip: '已支援 {{supportTypes}},每個檔案不超過 {{size}}MB。', - validation: { - typeError: '檔案型別不支援', - size: '檔案太大了,不能超過 {{size}}MB', - count: '暫不支援多個檔案', - filesNumber: '批次上傳限制 {{filesNumber}}。', - }, - cancel: '取消', - change: '更改檔案', - failed: '上傳失敗', - }, - notionSyncTitle: 'Notion 未繫結', - notionSyncTip: '同步 Notion 內容前,須先繫結 Notion 空間', - connect: '去繫結', - cancel: '取消', - button: '下一步', - emptyDatasetCreation: '建立一個空知識庫', - modal: { - title: '建立空知識庫', - tip: '空知識庫中還沒有文件,你可以在今後任何時候上傳文件至該知識庫。', - input: '知識庫名稱', - placeholder: '請輸入知識庫名稱', - nameNotEmpty: '名稱不能為空', - nameLengthInvalid: '名稱長度不能超過 40 個字元', - cancelButton: '取消', - confirmButton: '建立', - failed: '建立失敗', - }, - website: { - maxDepth: '最大深度', - selectAll: '全選', - exceptionErrorTitle: '運行 Firecrawl 作業時發生異常:', - run: '跑', - extractOnlyMainContent: '僅提取主要內容(無頁眉、導航、頁腳等)', - fireCrawlNotConfiguredDescription: '使用 API 金鑰配置 Firecrawl 以使用它。', - limit: '限制', - crawlSubPage: '抓取子頁面', - preview: '預覽', - configure: '配置', - excludePaths: '排除路徑', - options: '選項', - firecrawlDoc: 'Firecrawl 文件', - totalPageScraped: '抓取的總頁數:', - firecrawlTitle: '使用 🔥Firecrawl 提取 Web 內容', - includeOnlyPaths: '僅包含路徑', - resetAll: '全部重置', - scrapTimeInfo: '在 {{time}} 秒內總共抓取了 {{total}} 個頁面', - unknownError: '未知錯誤', - fireCrawlNotConfigured: '未配置 Firecrawl', - maxDepthTooltip: '相對於輸入的 URL 的最大爬網深度。深度 0 只是抓取輸入的 url 的頁面,深度 1 抓取 url 以及 enteredURL + 1 / 之後的所有內容,依此類推。', - jinaReaderNotConfigured: '未配置 Jina Reader', - jinaReaderNotConfiguredDescription: '通過輸入您的免費 API 金鑰進行訪問來設置 Jina Reader。', - chooseProvider: '選擇供應商', - jinaReaderDoc: '了解有關 Jina Reader 的更多資訊', - jinaReaderTitle: '將整個網站轉換為 Markdown', - useSitemap: '使用網站地圖', - jinaReaderDocLink: 'https://jina.ai/reader', - useSitemapTooltip: '按照網站地圖對網站進行爬網。否則,Jina Reader 將根據頁面相關性反覆運算抓取,從而生成更少但品質更高的頁面。', - watercrawlDoc: 'Watercrawl 文檔', - configureFirecrawl: '配置 Firecrawl', - configureWatercrawl: '配置水爬行', - watercrawlTitle: '使用 Watercrawl 提取網頁內容', - waterCrawlNotConfiguredDescription: '配置 Watercrawl 並使用 API 金鑰來使用它。', - configureJinaReader: '配置 Jina Reader', - waterCrawlNotConfigured: 'Watercrawl 尚未配置', - running: '流動的', - }, - }, - 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 KEY 設定。.', - click: '前往設定', - economical: '經濟', - economicalTip: '使用離線的向量引擎、關鍵詞索引等方式,降低了準確度但無需花費 Token', - QATitle: '採用 Q&A 分段模式', - QATip: '開啟後將會消耗額外的 token', - QALanguage: '分段使用', - estimateCost: '執行嵌入預估消耗', - estimateSegment: '預估分段數', - segmentCount: '段', - calculating: '計算中...', - fileSource: '預處理文件', - notionSource: '預處理頁面', - other: '和其他 ', - fileUnit: ' 個檔案', - notionUnit: ' 個頁面', - previousStep: '上一步', - nextStep: '儲存並處理', - save: '儲存並處理', - cancel: '取消', - sideTipTitle: '為什麼要分段和預處理?', - sideTipP1: '在處理文字資料時,分段和清洗是兩個重要的預處理步驟。', - sideTipP2: '分段的目的是將長文字拆分成較小的段落,以便模型更有效地處理和理解。這有助於提高模型生成的結果的品質和相關性。', - sideTipP3: '清洗則是對文字進行預處理,刪除不必要的字元、符號或格式,使知識庫更加乾淨、整潔,便於模型解析。', - sideTipP4: '透過對知識庫進行適當的分段和清洗,可以提高模型在實際應用中的表現,從而為使用者提供更準確、更有價值的結果。', - previewTitle: '分段預覽', - previewTitleButton: '預覽', - previewButton: '切換至 Q&A 形式', - previewSwitchTipStart: '當前分段預覽是文字模式,切換到 Q&A 模式將會', - previewSwitchTipEnd: '消耗額外的 token', - characters: '字元', - indexSettingTip: '要更改索引方法,請轉到', - retrievalSettingTip: '要更改檢索方法,請轉到', - datasetSettingLink: '知識庫設定。', - websiteSource: '預處理網站', - webpageUnit: '頁面', - separatorTip: '分隔符是用於分隔文字的字元。\\n\\n 和 \\n 是分隔段落和行的常用分隔符。與逗號(\\n\\n,\\n)組合使用時,當超過最大區塊長度時,段落將按行分段。您也可以使用自定義的特殊分隔符(例如 ***)。', - maxLengthCheck: '塊最大長度應小於 {{limit}}', - general: '常規', - previewChunkCount: '{{count}}估計塊數', - useQALanguage: '使用 Q&A 格式的塊', - qaSwitchHighQualityTipContent: '目前,只有高品質索引方法支援 Q&A 格式分塊。是否要切換到高品質模式?', - previewChunk: '預覽資料塊(Preview Chunk)', - fullDocTip: '整個文件用作父塊並直接檢索。請注意,出於性能原因,超過 10000 個令牌的文本將被自動截斷。', - parentChunkForContext: '父母的背景', - previewChunkTip: '點擊左側的 『Preview Chunk』 按鈕載入預覽', - parentChild: '父子', - notAvailableForQA: '不適用於 Q&A 索引', - parentChildChunkDelimiterTip: '分隔符是用於分隔文字的字元。建議使用 \\n 將父塊拆分為小的子塊。您還可以使用自己定義的特殊分隔符。', - parentChildDelimiterTip: '分隔符是用於分隔文字的字元。建議將原始文檔拆分為多個大型父塊。您還可以使用自己定義的特殊分隔符。', - generalTip: '常規文本分塊模式,檢索和調用的塊是相同的。', - highQualityTip: '在 High Quality 模式下完成嵌入後,將無法恢復到 Economical(經濟)模式。', - childChunkForRetrieval: '用於檢索的 Child-chunk', - paragraphTip: '此模式根據分隔符和最大區塊長度將文本拆分為段落,使用拆分文本作為父區塊進行檢索。', - paragraph: '段', - qaSwitchHighQualityTipTitle: 'Q&A 格式需要高品質的索引方法', - notAvailableForParentChild: '不適用於父子索引', - fullDoc: '完整文件', - parentChildTip: '當使用 parent-child 模式時,child-chunk 用於檢索,parent-chunk 用於作為上下文調用 call。', - switch: '開關', - qaTip: '使用結構化 Q&A 資料時,您可以建立將問題與答案配對的文件。這些文件根據問題部分進行索引,允許系統根據查詢相似性檢索相關答案。', - }, - stepThree: { - creationTitle: '🎉 知識庫已建立', - creationContent: '我們自動為該知識庫起了個名稱,您也可以隨時修改', - label: '知識庫名稱', - additionTitle: '🎉 文件已上傳', - additionP1: '文件已上傳至知識庫:', - additionP2: ',你可以在知識庫的文件列表中找到它。', - stop: '停止處理', - resume: '恢復處理', - navTo: '前往文件', - sideTipTitle: '接下來做什麼', - sideTipContent: '當文件完成索引處理後,知識庫即可整合至應用內作為上下文使用,你可以在提示詞編排頁找到上下文設定。你也可以建立成可獨立使用的 ChatGPT 索引外掛釋出。', - modelTitle: '確認停止索引過程嗎?', - modelContent: '如果您需要稍後恢復處理,則從停止處繼續。', - modelButtonConfirm: '確認停止', - modelButtonCancel: '取消', - }, - firecrawl: { - configFirecrawl: '配置 🔥Firecrawl', - apiKeyPlaceholder: '來自 firecrawl.dev 的 API 金鑰', - getApiKeyLinkText: '從 firecrawl.dev 獲取 API 金鑰', - }, - jinaReader: { - configJinaReader: '配置 Jina Reader', - getApiKeyLinkText: '在 jina.ai 獲取您的免費 API 金鑰', - apiKeyPlaceholder: '來自 jina.ai 的 API 金鑰', - }, - otherDataSource: { - learnMore: '瞭解更多資訊', - description: '目前,Dify 的知識庫只有有限的數據源。向 Dify 知識庫貢獻數據源是説明所有使用者增強平台靈活性和強大功能的絕佳方式。我們的貢獻指南使入門變得容易。請點擊下面的連結瞭解更多資訊。', - title: '連接到其他數據源?', - }, - watercrawl: { - apiKeyPlaceholder: '來自 watercrawl.dev 的 API 金鑰', - configWatercrawl: '配置水爬行', - getApiKeyLinkText: '從 watercrawl.dev 獲取您的 API 金鑰', - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/dataset-documents.json b/web/i18n/zh-Hant/dataset-documents.json new file mode 100644 index 0000000000..9076b959b9 --- /dev/null +++ b/web/i18n/zh-Hant/dataset-documents.json @@ -0,0 +1,405 @@ +{ + "list": { + "title": "文件", + "desc": "知識庫的所有檔案都在這裡顯示,整個知識庫都可以連結到 Dify 引用或透過 Chat 外掛進行索引。", + "addFile": "新增檔案", + "addPages": "新增頁面", + "table": { + "header": { + "fileName": "檔名", + "words": "字元數", + "hitCount": "檢索次數", + "uploadTime": "上傳時間", + "status": "狀態", + "action": "操作", + "chunkingMode": "分塊模式" + }, + "name": "名字", + "rename": "重新命名" + }, + "action": { + "uploadFile": "上傳新檔案", + "settings": "分段設定", + "addButton": "新增分段", + "add": "新增新分段", + "batchAdd": "批次新增", + "archive": "歸檔", + "unarchive": "撤銷歸檔", + "delete": "刪除", + "enableWarning": "歸檔的檔案無法啟用", + "sync": "同步", + "resume": "恢復", + "pause": "暫停" + }, + "index": { + "enable": "啟用中", + "disable": "禁用中", + "all": "全部", + "enableTip": "該檔案可以被索引", + "disableTip": "該檔案無法被索引" + }, + "status": { + "queuing": "排隊中", + "indexing": "索引中", + "paused": "已暫停", + "error": "錯誤", + "available": "可用", + "enabled": "已啟用", + "disabled": "已禁用", + "archived": "已歸檔" + }, + "empty": { + "title": "還沒有文件", + "upload": { + "tip": "您可以上傳檔案,從網站同步,或者從網路應用程式(如概念、GitHub 等)同步。" + }, + "sync": { + "tip": "Dify 會定期從您的 Notion 中下載檔案並完成處理。" + } + }, + "delete": { + "title": "確定刪除嗎?", + "content": "如果您需要稍後恢復處理,您將從您離開的地方繼續" + }, + "batchModal": { + "title": "批次新增分段", + "csvUploadTitle": "將您的 CSV 檔案拖放到此處,或", + "browse": "選擇檔案", + "tip": "CSV 檔案必須符合以下結構:", + "question": "問題", + "answer": "回答", + "contentTitle": "分段內容", + "content": "內容", + "template": "下載模板", + "cancel": "取消", + "run": "匯入", + "runError": "批次匯入失敗", + "processing": "批次處理中", + "completed": "匯入完成", + "error": "匯入出錯", + "ok": "確定" + }, + "addUrl": "新增 URL", + "learnMore": "瞭解更多資訊", + "sort": { + "uploadTime": "上傳時間", + "hitCount": "檢索次數" + } + }, + "metadata": { + "title": "元資料", + "desc": "標記文件的元資料允許 AI 及時訪問它們併為使用者公開參考來源。", + "dateTimeFormat": "YYYY-MM-DD HH:mm", + "docTypeSelectTitle": "請選擇一種文件型別", + "docTypeChangeTitle": "更換文件型別", + "docTypeSelectWarning": "如果更改文件型別,將不再保留現在填充的元資料", + "firstMetaAction": "開始", + "placeholder": { + "add": "輸入", + "select": "選擇" + }, + "source": { + "upload_file": "檔案上傳", + "notion": "從 Notion 同步的文件", + "github": "從 Github 同步的程式碼", + "local_file": "本機檔案", + "website_crawl": "網站抓取", + "online_document": "線上文件" + }, + "type": { + "book": "書籍", + "webPage": "網頁", + "paper": "論文", + "socialMediaPost": "社交媒體帖子", + "personalDocument": "個人文件", + "businessDocument": "商務文件", + "IMChat": "IM 聊天記錄", + "wikipediaEntry": "維基百科條目", + "notion": "從 Notion 同步的文件", + "github": "從 Github 同步的程式碼", + "technicalParameters": "技術引數" + }, + "field": { + "processRule": { + "processDoc": "預處理文件", + "segmentRule": "分段規則", + "segmentLength": "分段長度", + "processClean": "文字預處理與清洗" + }, + "book": { + "title": "標題", + "language": "語言", + "author": "作者", + "publisher": "出版商", + "publicationDate": "出版日期", + "ISBN": "ISBN", + "category": "類別" + }, + "webPage": { + "title": "標題", + "url": "網址", + "language": "語言", + "authorPublisher": "作者/出版商", + "publishDate": "釋出日期", + "topicKeywords": "主題/關鍵詞", + "description": "描述" + }, + "paper": { + "title": "標題", + "language": "語言", + "author": "作者", + "publishDate": "釋出日期", + "journalConferenceName": "期刊/會議名稱", + "volumeIssuePage": "卷/期/頁碼", + "DOI": "DOI", + "topicsKeywords": "主題/關鍵詞", + "abstract": "摘要" + }, + "socialMediaPost": { + "platform": "平臺", + "authorUsername": "作者/使用者名稱", + "publishDate": "釋出日期", + "postURL": "帖子網址", + "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": "網頁網址", + "editorContributor": "編輯/貢獻者", + "lastEditDate": "最後編輯日期", + "summaryIntroduction": "摘要/介紹" + }, + "notion": { + "title": "標題", + "language": "語言", + "author": "作者", + "createdTime": "建立時間", + "lastModifiedTime": "最後修改時間", + "url": "網址", + "tag": "標籤", + "description": "描述" + }, + "github": { + "repoName": "倉庫名", + "repoDesc": "倉庫描述", + "repoOwner": "倉庫所有者", + "fileName": "檔名", + "filePath": "檔案路徑", + "programmingLang": "程式語言", + "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": "段落預覽將在嵌入完成後可用", + "hierarchical": "父子", + "parentMaxTokens": "父母", + "childMaxTokens": "孩子", + "pause": "暫停", + "waiting": "嵌入等待中..." + }, + "segment": { + "paragraphs": "段落", + "keywords": "關鍵詞", + "addKeyWord": "新增關鍵詞", + "keywordError": "關鍵詞最大長度為 20", + "hitCount": "檢索次數", + "vectorHash": "向量雜湊:", + "questionPlaceholder": "在這裡新增問題", + "questionEmpty": "問題不能為空", + "answerPlaceholder": "在這裡新增答案", + "answerEmpty": "答案不能為空", + "contentPlaceholder": "在這裡新增內容", + "contentEmpty": "內容不能為空", + "newTextSegment": "新文字分段", + "newQaSegment": "新問答分段", + "delete": "刪除這個分段?", + "characters_other": "字元", + "addChunk": "新增數據塊", + "addChildChunk": "新增子塊", + "addAnother": "新增另一個", + "childChunkAdded": "新增了 1 個子塊", + "editParentChunk": "編輯父塊(Edit Parent Chunk)", + "editChildChunk": "編輯子塊", + "chunkDetail": "數據塊詳細資訊", + "regenerationConfirmTitle": "是否要重新生成子塊?", + "regenerationConfirmMessage": "重新生成子數據塊將覆蓋當前子數據塊,包括已編輯的數據塊和新新增的數據塊。重新生成無法復原。", + "regeneratingTitle": "重新生成子塊", + "regenerationSuccessTitle": "再生完成", + "collapseChunks": "摺疊塊", + "expandChunks": "擴展塊", + "chunkAdded": "新增了 1 個數據塊", + "editedAt": "編輯於", + "dateTimeFormat": "YYYY/MM/DD HH:mm", + "regeneratingMessage": "這可能需要一些時間,請稍候...", + "editChunk": "編輯數據塊", + "regenerationSuccessMessage": "您可以關閉此視窗。", + "chunks_other": "塊", + "childChunks_one": "子塊", + "edited": "編輯", + "characters_one": "字元", + "childChunks_other": "子塊", + "newChunk": "新區塊", + "chunk": "塊", + "childChunk": "子塊", + "parentChunks_one": "父數據塊", + "searchResults_one": "結果", + "searchResults_other": "結果", + "chunks_one": "塊", + "clearFilter": "清除過濾器", + "parentChunk": "父塊", + "empty": "未找到 Chunk", + "searchResults_zero": "結果", + "parentChunks_other": "父塊", + "newChildChunk": "新兒童塊", + "keywordEmpty": "關鍵字不能為空", + "keywordDuplicate": "關鍵字已經存在", + "allFilesUploaded": "所有檔案必須在儲存之前上傳" + } +} diff --git a/web/i18n/zh-Hant/dataset-documents.ts b/web/i18n/zh-Hant/dataset-documents.ts deleted file mode 100644 index 1a76b60c57..0000000000 --- a/web/i18n/zh-Hant/dataset-documents.ts +++ /dev/null @@ -1,407 +0,0 @@ -const translation = { - list: { - title: '文件', - desc: '知識庫的所有檔案都在這裡顯示,整個知識庫都可以連結到 Dify 引用或透過 Chat 外掛進行索引。', - addFile: '新增檔案', - addPages: '新增頁面', - table: { - header: { - fileName: '檔名', - words: '字元數', - hitCount: '檢索次數', - uploadTime: '上傳時間', - status: '狀態', - action: '操作', - chunkingMode: '分塊模式', - }, - name: '名字', - rename: '重新命名', - }, - action: { - uploadFile: '上傳新檔案', - settings: '分段設定', - addButton: '新增分段', - add: '新增新分段', - batchAdd: '批次新增', - archive: '歸檔', - unarchive: '撤銷歸檔', - delete: '刪除', - enableWarning: '歸檔的檔案無法啟用', - sync: '同步', - resume: '恢復', - pause: '暫停', - }, - index: { - enable: '啟用中', - disable: '禁用中', - all: '全部', - enableTip: '該檔案可以被索引', - disableTip: '該檔案無法被索引', - }, - status: { - queuing: '排隊中', - indexing: '索引中', - paused: '已暫停', - error: '錯誤', - available: '可用', - enabled: '已啟用', - disabled: '已禁用', - archived: '已歸檔', - }, - empty: { - title: '還沒有文件', - upload: { - tip: '您可以上傳檔案,從網站同步,或者從網路應用程式(如概念、GitHub 等)同步。', - }, - sync: { - tip: 'Dify 會定期從您的 Notion 中下載檔案並完成處理。', - }, - }, - delete: { - title: '確定刪除嗎?', - content: '如果您需要稍後恢復處理,您將從您離開的地方繼續', - }, - batchModal: { - title: '批次新增分段', - csvUploadTitle: '將您的 CSV 檔案拖放到此處,或', - browse: '選擇檔案', - tip: 'CSV 檔案必須符合以下結構:', - question: '問題', - answer: '回答', - contentTitle: '分段內容', - content: '內容', - template: '下載模板', - cancel: '取消', - run: '匯入', - runError: '批次匯入失敗', - processing: '批次處理中', - completed: '匯入完成', - error: '匯入出錯', - ok: '確定', - }, - addUrl: '新增 URL', - learnMore: '瞭解更多資訊', - sort: { - uploadTime: '上傳時間', - hitCount: '檢索次數', - }, - }, - metadata: { - title: '元資料', - desc: '標記文件的元資料允許 AI 及時訪問它們併為使用者公開參考來源。', - dateTimeFormat: 'YYYY-MM-DD HH:mm', - docTypeSelectTitle: '請選擇一種文件型別', - docTypeChangeTitle: '更換文件型別', - docTypeSelectWarning: '如果更改文件型別,將不再保留現在填充的元資料', - firstMetaAction: '開始', - placeholder: { - add: '輸入', - select: '選擇', - }, - source: { - upload_file: '檔案上傳', - notion: '從 Notion 同步的文件', - github: '從 Github 同步的程式碼', - local_file: '本機檔案', - website_crawl: '網站抓取', - online_document: '線上文件', - }, - type: { - book: '書籍', - webPage: '網頁', - paper: '論文', - socialMediaPost: '社交媒體帖子', - personalDocument: '個人文件', - businessDocument: '商務文件', - IMChat: 'IM 聊天記錄', - wikipediaEntry: '維基百科條目', - notion: '從 Notion 同步的文件', - github: '從 Github 同步的程式碼', - technicalParameters: '技術引數', - }, - field: { - processRule: { - processDoc: '預處理文件', - segmentRule: '分段規則', - segmentLength: '分段長度', - processClean: '文字預處理與清洗', - }, - book: { - title: '標題', - language: '語言', - author: '作者', - publisher: '出版商', - publicationDate: '出版日期', - ISBN: 'ISBN', - category: '類別', - }, - webPage: { - title: '標題', - url: '網址', - language: '語言', - authorPublisher: '作者/出版商', - publishDate: '釋出日期', - topicKeywords: '主題/關鍵詞', - description: '描述', - }, - paper: { - title: '標題', - language: '語言', - author: '作者', - publishDate: '釋出日期', - journalConferenceName: '期刊/會議名稱', - volumeIssuePage: '卷/期/頁碼', - DOI: 'DOI', - topicsKeywords: '主題/關鍵詞', - abstract: '摘要', - }, - socialMediaPost: { - platform: '平臺', - authorUsername: '作者/使用者名稱', - publishDate: '釋出日期', - postURL: '帖子網址', - 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: '網頁網址', - editorContributor: '編輯/貢獻者', - lastEditDate: '最後編輯日期', - summaryIntroduction: '摘要/介紹', - }, - notion: { - title: '標題', - language: '語言', - author: '作者', - createdTime: '建立時間', - lastModifiedTime: '最後修改時間', - url: '網址', - tag: '標籤', - description: '描述', - }, - github: { - repoName: '倉庫名', - repoDesc: '倉庫描述', - repoOwner: '倉庫所有者', - fileName: '檔名', - filePath: '檔案路徑', - programmingLang: '程式語言', - 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: '段落預覽將在嵌入完成後可用', - hierarchical: '父子', - parentMaxTokens: '父母', - childMaxTokens: '孩子', - pause: '暫停', - waiting: '嵌入等待中...', - }, - segment: { - paragraphs: '段落', - keywords: '關鍵詞', - addKeyWord: '新增關鍵詞', - keywordError: '關鍵詞最大長度為 20', - hitCount: '檢索次數', - vectorHash: '向量雜湊:', - questionPlaceholder: '在這裡新增問題', - questionEmpty: '問題不能為空', - answerPlaceholder: '在這裡新增答案', - answerEmpty: '答案不能為空', - contentPlaceholder: '在這裡新增內容', - contentEmpty: '內容不能為空', - newTextSegment: '新文字分段', - newQaSegment: '新問答分段', - delete: '刪除這個分段?', - characters_other: '字元', - addChunk: '新增數據塊', - addChildChunk: '新增子塊', - addAnother: '新增另一個', - childChunkAdded: '新增了 1 個子塊', - editParentChunk: '編輯父塊(Edit Parent Chunk)', - editChildChunk: '編輯子塊', - chunkDetail: '數據塊詳細資訊', - regenerationConfirmTitle: '是否要重新生成子塊?', - regenerationConfirmMessage: '重新生成子數據塊將覆蓋當前子數據塊,包括已編輯的數據塊和新新增的數據塊。重新生成無法復原。', - regeneratingTitle: '重新生成子塊', - regenerationSuccessTitle: '再生完成', - collapseChunks: '摺疊塊', - expandChunks: '擴展塊', - chunkAdded: '新增了 1 個數據塊', - editedAt: '編輯於', - dateTimeFormat: 'YYYY/MM/DD HH:mm', - regeneratingMessage: '這可能需要一些時間,請稍候...', - editChunk: '編輯數據塊', - regenerationSuccessMessage: '您可以關閉此視窗。', - chunks_other: '塊', - childChunks_one: '子塊', - edited: '編輯', - characters_one: '字元', - childChunks_other: '子塊', - newChunk: '新區塊', - chunk: '塊', - childChunk: '子塊', - parentChunks_one: '父數據塊', - searchResults_one: '結果', - searchResults_other: '結果', - chunks_one: '塊', - clearFilter: '清除過濾器', - parentChunk: '父塊', - empty: '未找到 Chunk', - searchResults_zero: '結果', - parentChunks_other: '父塊', - newChildChunk: '新兒童塊', - keywordEmpty: '關鍵字不能為空', - keywordDuplicate: '關鍵字已經存在', - allFilesUploaded: '所有檔案必須在儲存之前上傳', - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/dataset-hit-testing.json b/web/i18n/zh-Hant/dataset-hit-testing.json new file mode 100644 index 0000000000..12d00bc628 --- /dev/null +++ b/web/i18n/zh-Hant/dataset-hit-testing.json @@ -0,0 +1,38 @@ +{ + "title": "檢索測試", + "desc": "基於給定的查詢文字測試知識庫的檢索效果。", + "dateTimeFormat": "YYYY-MM-DD HH:mm", + "table": { + "header": { + "source": "資料來源", + "time": "時間", + "queryContent": "查詢內容" + } + }, + "input": { + "title": "來源文字", + "placeholder": "請輸入文字,建議使用簡短的陳述句。", + "countWarning": "不超過 200 個字元", + "indexWarning": "僅支援高品質模式知識庫", + "testing": "測試" + }, + "hit": { + "title": "檢索段落", + "emptyTip": "檢索測試結果將展示在這裡" + }, + "noRecentTip": "最近無查詢結果", + "viewChart": "查看向量圖表", + "viewDetail": "查看詳情", + "settingTitle": "檢索設置", + "open": "打開", + "records": "記錄", + "chunkDetail": "資料區塊詳細資訊", + "hitChunks": "命中 {{num}} 個子區塊", + "keyword": "關鍵字", + "imageUploader": { + "tip": "上傳或拖曳圖片(每張最多 {{batchCount}},{{size}}MB)", + "tooltip": "上傳圖片(每張最大 {{batchCount}},{{size}}MB)", + "dropZoneTip": "將檔案拖曳到此上傳", + "singleChunkAttachmentLimitTooltip": "單個區塊附件的數量不能超過 {{limit}}" + } +} diff --git a/web/i18n/zh-Hant/dataset-hit-testing.ts b/web/i18n/zh-Hant/dataset-hit-testing.ts deleted file mode 100644 index de690ca2ba..0000000000 --- a/web/i18n/zh-Hant/dataset-hit-testing.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - title: '檢索測試', - desc: '基於給定的查詢文字測試知識庫的檢索效果。', - dateTimeFormat: 'YYYY-MM-DD HH:mm', - table: { - header: { - source: '資料來源', - time: '時間', - queryContent: '查詢內容', - }, - }, - input: { - title: '來源文字', - placeholder: '請輸入文字,建議使用簡短的陳述句。', - countWarning: '不超過 200 個字元', - indexWarning: '僅支援高品質模式知識庫', - testing: '測試', - }, - hit: { - title: '檢索段落', - emptyTip: '檢索測試結果將展示在這裡', - }, - noRecentTip: '最近無查詢結果', - viewChart: '查看向量圖表', - viewDetail: '查看詳情', - settingTitle: '檢索設置', - open: '打開', - records: '記錄', - chunkDetail: '資料區塊詳細資訊', - hitChunks: '命中 {{num}} 個子區塊', - keyword: '關鍵字', - imageUploader: { - tip: '上傳或拖曳圖片(每張最多 {{batchCount}},{{size}}MB)', - tooltip: '上傳圖片(每張最大 {{batchCount}},{{size}}MB)', - dropZoneTip: '將檔案拖曳到此上傳', - singleChunkAttachmentLimitTooltip: '單個區塊附件的數量不能超過 {{limit}}', - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/dataset-pipeline.json b/web/i18n/zh-Hant/dataset-pipeline.json new file mode 100644 index 0000000000..104f1a71e9 --- /dev/null +++ b/web/i18n/zh-Hant/dataset-pipeline.json @@ -0,0 +1,161 @@ +{ + "creation": { + "createFromScratch": { + "title": "空白知識流水線", + "description": "從頭開始建立自訂流水線,並完全控制資料處理和結構。" + }, + "caution": "小心", + "backToKnowledge": "返回知識", + "errorTip": "無法建立知識庫", + "successTip": "成功建立知識庫", + "createKnowledge": "創造知識", + "importDSL": "從 DSL 檔案匯入" + }, + "templates": { + "customized": "客製化" + }, + "operations": { + "convert": "轉換", + "saveAndProcess": "儲存和處理", + "choose": "選擇", + "useTemplate": "使用此知識流水線", + "dataSource": "資料來源", + "editInfo": "編輯資訊", + "process": "處理", + "backToDataSource": "返回資料來源", + "exportPipeline": "匯出流水線", + "details": "詳情", + "preview": "預覽" + }, + "deletePipeline": { + "title": "您確定要刪除此管線範本嗎?", + "content": "刪除管線範本是不可逆的。" + }, + "publishPipeline": { + "success": { + "message": "知識流水線已發布", + "tip": "前往文件以新增或管理文件。" + }, + "error": { + "message": "無法發佈知識流水線" + } + }, + "publishTemplate": { + "success": { + "message": "流水線範本已發佈", + "tip": "您可以在建立頁面上使用此範本。", + "learnMore": "瞭解詳情" + }, + "error": { + "message": "無法發佈管線範本" + } + }, + "exportDSL": { + "errorTip": "無法匯出管線 DSL", + "successTip": "成功匯出管線 DSL" + }, + "details": { + "structureTooltip": "區塊結構會決定文件的分割和索引方式 (提供一般、父子和問答模式),而且每個知識庫都是唯一的。", + "structure": "建築物", + "createdBy": "由 {{author}}" + }, + "testRun": { + "steps": { + "documentProcessing": "文件處理", + "dataSource": "資料來源" + }, + "dataSource": { + "localFiles": "本機檔案" + }, + "notion": { + "docTitle": "概念文件", + "title": "選擇 Notion 頁面" + }, + "tooltip": "在測試運行模式下,一次只允許匯入一個文檔,以便於調試和觀察。", + "title": "試運行" + }, + "inputFieldPanel": { + "uniqueInputs": { + "title": "每個入口的獨特輸入", + "tooltip": "唯一輸入只能存取選取的資料來源及其下游節點。使用者在選擇其他資料來源時無需填寫。只有資料來源變數引用的輸入欄位才會出現在第一步(資料來源)中。所有其他欄位將顯示在第二步(處理文件)中。" + }, + "globalInputs": { + "title": "所有入口的全域輸入", + "tooltip": "全域輸入在所有節點之間共用。用戶在選擇任何數據源時需要填寫它們。例如,分隔符號和最大區塊長度等欄位可以統一套用至多個資料來源。只有資料來源變數所參考的輸入欄位才會出現在第一個步驟 (資料來源) 中。所有其他欄位都會顯示在第二個步驟 (處理文件) 中。" + }, + "preview": { + "stepOneTitle": "資料來源", + "stepTwoTitle": "處理文件" + }, + "error": { + "variableDuplicate": "變數名稱已存在。請選擇其他名稱。" + }, + "editInputField": "編輯輸入欄位", + "title": "使用者輸入欄位", + "addInputField": "新增輸入欄位", + "description": "使用者輸入欄位可用來定義和收集管線執行過程中所需的變數。使用者可以自訂欄位類型,靈活配置輸入值,以滿足不同資料來源或文件處理步驟的需求。" + }, + "addDocuments": { + "steps": { + "processingDocuments": "處理文件", + "processDocuments": "處理文件", + "chooseDatasource": "選擇資料來源" + }, + "stepOne": { + "preview": "預展" + }, + "stepTwo": { + "previewChunks": "預覽區塊", + "chunkSettings": "區塊設定" + }, + "stepThree": { + "learnMore": "瞭解詳情" + }, + "title": "新增文件", + "characters": "角色", + "backToDataSource": "資料來源", + "selectOnlineDocumentTip": "處理最多 {{count}} 頁", + "selectOnlineDriveTip": "處理最多 {{count}} 個檔案,每個檔案最大 {{fileSize}} MB" + }, + "documentSettings": { + "title": "文件設定" + }, + "onlineDocument": { + "pageSelectorTitle": "{{name}} 頁" + }, + "onlineDrive": { + "breadcrumbs": { + "allBuckets": "所有雲端儲存貯體", + "searchPlaceholder": "搜尋檔案...", + "allFiles": "所有檔案", + "searchResult": "在「{{folderName}}」資料夾中找到 {{searchResultsLength}} 項目" + }, + "resetKeywords": "重設關鍵字", + "notSupportedFileType": "不支援此檔案類型", + "emptySearchResult": "沒有找到任何物品", + "emptyFolder": "此資料夾是空的", + "notConnected": "{{name}} 未連接", + "notConnectedTip": "要與 {{name}} 同步,必須先建立與 {{name}} 的連線。" + }, + "conversion": { + "confirm": { + "title": "證實", + "content": "此動作是永久性的。您將無法恢復到以前的方法。請確認轉換。" + }, + "title": "轉換為知識流水線", + "warning": "此動作無法復原。", + "descriptionChunk2": "— 一種更開放和靈活的方法,可以訪問我們市場中的插件。這會將新的處理方法套用至所有未來的文件。", + "successMessage": "已成功將資料集轉換成流水線", + "errorMessage": "無法將資料集轉換成流水線", + "descriptionChunk1": "您現在可以轉換現有的知識庫,以使用知識流水線進行文件處理" + }, + "knowledgeDescription": "知識說明", + "knowledgeNameAndIconPlaceholder": "請輸入知識庫的名稱", + "knowledgeDescriptionPlaceholder": "描述此知識庫中的內容。詳細的描述使人工智慧能夠更準確地存取資料集的內容。如果為空,Dify 將使用預設命中策略。(選用)", + "pipelineNameAndIcon": "流水線名稱 & 圖示", + "knowledgeNameAndIcon": "知識名稱和圖示", + "inputField": "輸入欄位", + "knowledgePermissions": "權限", + "editPipelineInfo": "編輯管線資訊", + "configurationTip": "配置 {{pluginName}}" +} diff --git a/web/i18n/zh-Hant/dataset-pipeline.ts b/web/i18n/zh-Hant/dataset-pipeline.ts deleted file mode 100644 index c396551dc6..0000000000 --- a/web/i18n/zh-Hant/dataset-pipeline.ts +++ /dev/null @@ -1,163 +0,0 @@ -const translation = { - creation: { - createFromScratch: { - title: '空白知識流水線', - description: '從頭開始建立自訂流水線,並完全控制資料處理和結構。', - }, - caution: '小心', - backToKnowledge: '返回知識', - errorTip: '無法建立知識庫', - successTip: '成功建立知識庫', - createKnowledge: '創造知識', - importDSL: '從 DSL 檔案匯入', - }, - templates: { - customized: '客製化', - }, - operations: { - convert: '轉換', - saveAndProcess: '儲存和處理', - choose: '選擇', - useTemplate: '使用此知識流水線', - dataSource: '資料來源', - editInfo: '編輯資訊', - process: '處理', - backToDataSource: '返回資料來源', - exportPipeline: '匯出流水線', - details: '詳情', - preview: '預覽', - }, - deletePipeline: { - title: '您確定要刪除此管線範本嗎?', - content: '刪除管線範本是不可逆的。', - }, - publishPipeline: { - success: { - message: '知識流水線已發布', - tip: '前往文件以新增或管理文件。', - }, - error: { - message: '無法發佈知識流水線', - }, - }, - publishTemplate: { - success: { - message: '流水線範本已發佈', - tip: '您可以在建立頁面上使用此範本。', - learnMore: '瞭解詳情', - }, - error: { - message: '無法發佈管線範本', - }, - }, - exportDSL: { - errorTip: '無法匯出管線 DSL', - successTip: '成功匯出管線 DSL', - }, - details: { - structureTooltip: '區塊結構會決定文件的分割和索引方式 (提供一般、父子和問答模式),而且每個知識庫都是唯一的。', - structure: '建築物', - createdBy: '由 {{author}}', - }, - testRun: { - steps: { - documentProcessing: '文件處理', - dataSource: '資料來源', - }, - dataSource: { - localFiles: '本機檔案', - }, - notion: { - docTitle: '概念文件', - title: '選擇 Notion 頁面', - }, - tooltip: '在測試運行模式下,一次只允許匯入一個文檔,以便於調試和觀察。', - title: '試運行', - }, - inputFieldPanel: { - uniqueInputs: { - title: '每個入口的獨特輸入', - tooltip: '唯一輸入只能存取選取的資料來源及其下游節點。使用者在選擇其他資料來源時無需填寫。只有資料來源變數引用的輸入欄位才會出現在第一步(資料來源)中。所有其他欄位將顯示在第二步(處理文件)中。', - }, - globalInputs: { - title: '所有入口的全域輸入', - tooltip: '全域輸入在所有節點之間共用。用戶在選擇任何數據源時需要填寫它們。例如,分隔符號和最大區塊長度等欄位可以統一套用至多個資料來源。只有資料來源變數所參考的輸入欄位才會出現在第一個步驟 (資料來源) 中。所有其他欄位都會顯示在第二個步驟 (處理文件) 中。', - }, - preview: { - stepOneTitle: '資料來源', - stepTwoTitle: '處理文件', - }, - error: { - variableDuplicate: '變數名稱已存在。請選擇其他名稱。', - }, - editInputField: '編輯輸入欄位', - title: '使用者輸入欄位', - addInputField: '新增輸入欄位', - description: '使用者輸入欄位可用來定義和收集管線執行過程中所需的變數。使用者可以自訂欄位類型,靈活配置輸入值,以滿足不同資料來源或文件處理步驟的需求。', - }, - addDocuments: { - steps: { - processingDocuments: '處理文件', - processDocuments: '處理文件', - chooseDatasource: '選擇資料來源', - }, - stepOne: { - preview: '預展', - }, - stepTwo: { - previewChunks: '預覽區塊', - chunkSettings: '區塊設定', - }, - stepThree: { - learnMore: '瞭解詳情', - }, - title: '新增文件', - characters: '角色', - backToDataSource: '資料來源', - selectOnlineDocumentTip: '處理最多 {{count}} 頁', - selectOnlineDriveTip: '處理最多 {{count}} 個檔案,每個檔案最大 {{fileSize}} MB', - }, - documentSettings: { - title: '文件設定', - }, - onlineDocument: { - pageSelectorTitle: '{{name}} 頁', - }, - onlineDrive: { - breadcrumbs: { - allBuckets: '所有雲端儲存貯體', - searchPlaceholder: '搜尋檔案...', - allFiles: '所有檔案', - searchResult: '在「{{folderName}}」資料夾中找到 {{searchResultsLength}} 項目', - }, - resetKeywords: '重設關鍵字', - notSupportedFileType: '不支援此檔案類型', - emptySearchResult: '沒有找到任何物品', - emptyFolder: '此資料夾是空的', - notConnected: '{{name}} 未連接', - notConnectedTip: '要與 {{name}} 同步,必須先建立與 {{name}} 的連線。', - }, - conversion: { - confirm: { - title: '證實', - content: '此動作是永久性的。您將無法恢復到以前的方法。請確認轉換。', - }, - title: '轉換為知識流水線', - warning: '此動作無法復原。', - descriptionChunk2: '— 一種更開放和靈活的方法,可以訪問我們市場中的插件。這會將新的處理方法套用至所有未來的文件。', - successMessage: '已成功將資料集轉換成流水線', - errorMessage: '無法將資料集轉換成流水線', - descriptionChunk1: '您現在可以轉換現有的知識庫,以使用知識流水線進行文件處理', - }, - knowledgeDescription: '知識說明', - knowledgeNameAndIconPlaceholder: '請輸入知識庫的名稱', - knowledgeDescriptionPlaceholder: '描述此知識庫中的內容。詳細的描述使人工智慧能夠更準確地存取資料集的內容。如果為空,Dify 將使用預設命中策略。(選用)', - pipelineNameAndIcon: '流水線名稱 & 圖示', - knowledgeNameAndIcon: '知識名稱和圖示', - inputField: '輸入欄位', - knowledgePermissions: '權限', - editPipelineInfo: '編輯管線資訊', - configurationTip: '配置 {{pluginName}}', -} - -export default translation diff --git a/web/i18n/zh-Hant/dataset-settings.json b/web/i18n/zh-Hant/dataset-settings.json new file mode 100644 index 0000000000..07e9859065 --- /dev/null +++ b/web/i18n/zh-Hant/dataset-settings.json @@ -0,0 +1,50 @@ +{ + "title": "知識庫設定", + "desc": "在這裡您可以修改知識庫的工作方式以及其它設定。", + "form": { + "name": "知識庫名稱", + "namePlaceholder": "請輸入知識庫名稱", + "nameError": "名稱不能為空", + "desc": "知識庫描述", + "descInfo": "請寫出清楚的文字描述來概述知識庫的內容。當從多個知識庫中進行選擇匹配時,該描述將用作匹配的基礎。", + "descPlaceholder": "描述這個知識庫中的內容。詳細的描述可以讓 AI 及時訪問知識庫的內容。如果為空,Dify 將使用預設的命中策略。", + "descWrite": "瞭解如何編寫更好的知識庫描述。", + "permissions": "可見許可權", + "permissionsOnlyMe": "只有我", + "permissionsAllMember": "所有團隊成員", + "indexMethod": "索引模式", + "indexMethodHighQuality": "高品質", + "indexMethodHighQualityTip": "使用 Embedding 模型進行處理,以在使用者查詢時提供更高的準確度。", + "indexMethodEconomy": "經濟", + "indexMethodEconomyTip": "每個區塊使用 10 個關鍵字進行檢索,不會消耗 tokens,但可能會降低檢索的準確度。", + "embeddingModel": "Embedding 模型", + "embeddingModelTip": "修改 Embedding 模型,請去", + "embeddingModelTipLink": "設定", + "retrievalSetting": { + "title": "檢索設定", + "learnMore": "瞭解更多", + "description": "關於檢索方法。", + "longDescription": "關於檢索方法,您可以隨時在知識庫設定中更改此設定。", + "method": "檢索方法", + "multiModalTip": "當嵌入模型支援多模態時,請選擇多模態重排序模型以獲得更好的表現。" + }, + "save": "儲存", + "permissionsInvitedMembers": "部分團隊成員", + "me": "(您)", + "externalKnowledgeID": "外部知識 ID", + "externalKnowledgeAPI": "外部知識 API", + "retrievalSettings": "檢索設置", + "indexMethodChangeToEconomyDisabledTip": "不適用於從 HQ 降級到 ECO", + "upgradeHighQualityTip": "升級到高品質模式后,無法恢復到經濟模式", + "helpText": "瞭解如何編寫良好的數據集描述。", + "searchModel": "搜索模型", + "chunkStructure": { + "learnMore": "瞭解詳情", + "title": "區塊結構", + "description": "關於塊結構。" + }, + "numberOfKeywords": "關鍵字數量", + "onSearchResults": "沒有成員符合您的搜尋查詢。\n請再次嘗試搜尋。", + "nameAndIcon": "名稱和圖示" + } +} diff --git a/web/i18n/zh-Hant/dataset-settings.ts b/web/i18n/zh-Hant/dataset-settings.ts deleted file mode 100644 index a69b4ed829..0000000000 --- a/web/i18n/zh-Hant/dataset-settings.ts +++ /dev/null @@ -1,52 +0,0 @@ -const translation = { - title: '知識庫設定', - desc: '在這裡您可以修改知識庫的工作方式以及其它設定。', - form: { - name: '知識庫名稱', - namePlaceholder: '請輸入知識庫名稱', - nameError: '名稱不能為空', - desc: '知識庫描述', - descInfo: '請寫出清楚的文字描述來概述知識庫的內容。當從多個知識庫中進行選擇匹配時,該描述將用作匹配的基礎。', - descPlaceholder: '描述這個知識庫中的內容。詳細的描述可以讓 AI 及時訪問知識庫的內容。如果為空,Dify 將使用預設的命中策略。', - descWrite: '瞭解如何編寫更好的知識庫描述。', - permissions: '可見許可權', - permissionsOnlyMe: '只有我', - permissionsAllMember: '所有團隊成員', - indexMethod: '索引模式', - indexMethodHighQuality: '高品質', - indexMethodHighQualityTip: '使用 Embedding 模型進行處理,以在使用者查詢時提供更高的準確度。', - indexMethodEconomy: '經濟', - indexMethodEconomyTip: '每個區塊使用 10 個關鍵字進行檢索,不會消耗 tokens,但可能會降低檢索的準確度。', - embeddingModel: 'Embedding 模型', - embeddingModelTip: '修改 Embedding 模型,請去', - embeddingModelTipLink: '設定', - retrievalSetting: { - title: '檢索設定', - learnMore: '瞭解更多', - description: '關於檢索方法。', - longDescription: '關於檢索方法,您可以隨時在知識庫設定中更改此設定。', - method: '檢索方法', - multiModalTip: '當嵌入模型支援多模態時,請選擇多模態重排序模型以獲得更好的表現。', - }, - save: '儲存', - permissionsInvitedMembers: '部分團隊成員', - me: '(您)', - externalKnowledgeID: '外部知識 ID', - externalKnowledgeAPI: '外部知識 API', - retrievalSettings: '檢索設置', - indexMethodChangeToEconomyDisabledTip: '不適用於從 HQ 降級到 ECO', - upgradeHighQualityTip: '升級到高品質模式后,無法恢復到經濟模式', - helpText: '瞭解如何編寫良好的數據集描述。', - searchModel: '搜索模型', - chunkStructure: { - learnMore: '瞭解詳情', - title: '區塊結構', - description: '關於塊結構。', - }, - numberOfKeywords: '關鍵字數量', - onSearchResults: '沒有成員符合您的搜尋查詢。\n請再次嘗試搜尋。', - nameAndIcon: '名稱和圖示', - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/dataset.json b/web/i18n/zh-Hant/dataset.json new file mode 100644 index 0000000000..128611d660 --- /dev/null +++ b/web/i18n/zh-Hant/dataset.json @@ -0,0 +1,249 @@ +{ + "knowledge": "知識庫", + "documentCount": " 文件", + "wordCount": " 千字元", + "appCount": " 關聯應用", + "createDataset": "建立知識庫", + "createDatasetIntro": "匯入您自己的文字資料或透過 Webhook 實時寫入資料以增強 LLM 的上下文。", + "deleteDatasetConfirmTitle": "要刪除知識庫嗎?", + "deleteDatasetConfirmContent": "刪除知識庫是不可逆的。使用者將無法再訪問您的知識庫,所有的提示配置和日誌將被永久刪除。", + "datasetUsedByApp": "這些知識正被一些應用程序使用。應用程序將無法再使用這些知識,所有提示配置和日誌將被永久刪除。", + "datasetDeleted": "知識庫已刪除", + "datasetDeleteFailed": "刪除知識庫失敗", + "didYouKnow": "你知道嗎?", + "intro1": "知識庫可以被整合到 Dify 應用中", + "intro2": "作為上下文", + "intro3": ",", + "intro4": "或可以", + "intro5": "建立", + "intro6": "為獨立的 ChatGPT 外掛釋出使用", + "unavailable": "不可用", + "datasets": "知識庫", + "datasetsApi": "API", + "retrieval": { + "semantic_search": { + "title": "向量檢索", + "description": "透過生成查詢嵌入並查詢與其向量表示最相似的文字分段" + }, + "full_text_search": { + "title": "全文檢索", + "description": "索引文件中的所有詞彙,從而允許使用者查詢任意詞彙,並返回包含這些詞彙的文字片段" + }, + "hybrid_search": { + "title": "混合檢索", + "description": "同時執行全文檢索和向量檢索,並應用重排序步驟,從兩類查詢結果中選擇匹配使用者問題的最佳結果,需配置 Rerank 模型 API", + "recommend": "推薦" + }, + "invertedIndex": {}, + "change": "更改", + "changeRetrievalMethod": "更改檢索方法", + "keyword_search": { + "title": "倒掛索引", + "description": "倒掛索引是一種用於高效檢索的結構。依字詞組織,每個字詞都指向包含它的文件或網頁。" + } + }, + "docsFailedNotice": "文件無法被索引", + "retry": "重試", + "indexingTechnique": { + "high_quality": "高品質", + "economy": "經濟" + }, + "indexingMethod": { + "semantic_search": "向量", + "full_text_search": "全文", + "hybrid_search": "混合", + "invertedIndex": "倒排索引" + }, + "mixtureHighQualityAndEconomicTip": "混合高品質和經濟知識庫需要重新排序模型。", + "inconsistentEmbeddingModelTip": "如果選定知識庫的嵌入模型不一致,則需要重新排序模型。", + "retrievalSettings": "檢索設置", + "rerankSettings": "重新排序設置", + "weightedScore": { + "title": "加權分數", + "description": "通過調整分配的權重,此重新排序策略決定是優先考慮語義匹配還是關鍵詞匹配。", + "semanticFirst": "語義優先", + "keywordFirst": "關鍵詞優先", + "customized": "自定義", + "semantic": "語義", + "keyword": "關鍵詞" + }, + "nTo1RetrievalLegacy": "N 對 1 檢索將從 9 月起正式棄用。建議使用最新的多路徑檢索以獲得更好的結果。", + "nTo1RetrievalLegacyLink": "了解更多", + "nTo1RetrievalLegacyLinkText": "N 對 1 檢索將於 9 月正式棄用。", + "defaultRetrievalTip": "默認情況下,使用多路徑檢索。從多個知識庫中檢索知識,然後重新排名。", + "editExternalAPIConfirmWarningContent": { + "end": "external knowledge,並且此修改將應用於所有這些 Knowledge。是否確實要保存此更改?", + "front": "此外部知識 API 連結到" + }, + "editExternalAPIFormWarning": { + "end": "外部知識", + "front": "此外部 API 連結到" + }, + "deleteExternalAPIConfirmWarningContent": { + "title": { + "end": "?", + "front": "刪除" + }, + "content": { + "front": "此外部知識 API 連結到", + "end": "外部知識。刪除此 API 將使所有這些 API 失效。是否確實要刪除此 API?" + }, + "noConnectionContent": "您確定要刪除此 API 嗎?" + }, + "selectExternalKnowledgeAPI": { + "placeholder": "選擇外部知識 API" + }, + "connectDatasetIntro": { + "content": { + "link": "瞭解如何創建外部 API", + "front": "要連接到外部知識庫,您需要先創建外部 API。請仔細閱讀並參考", + "end": ".然後找到對應的知識 ID 並在左側的表單中填寫。如果資訊全部正確,點擊連接按鈕后,會自動跳轉到知識庫中的檢索測試。" + }, + "title": "如何連接到外部知識庫", + "learnMore": "瞭解更多資訊" + }, + "connectHelper": { + "helper5": "使用此功能前請小心。", + "helper3": ".我們強烈建議您", + "helper2": "僅支援檢索功能", + "helper4": "閱讀幫助文件", + "helper1": "通過 API 和知識庫 ID 連接到外部知識庫。目前," + }, + "externalKnowledgeForm": { + "connect": "連接", + "cancel": "取消" + }, + "externalAPIForm": { + "encrypted": { + "end": "科技。", + "front": "您的 API 令牌將使用" + }, + "save": "救", + "cancel": "取消", + "name": "名字", + "apiKey": "API 金鑰", + "edit": "編輯", + "endpoint": "API 終端節點" + }, + "externalTag": "外部", + "externalKnowledgeDescription": "知識描述", + "mixtureInternalAndExternalTip": "Rerank 模型是內部和外部知識的混合所必需的。", + "connectDataset": "連接到外部知識庫", + "learnHowToWriteGoodKnowledgeDescription": "瞭解如何編寫良好的知識描述", + "createExternalAPI": "新增外部知識 API", + "externalAPIPanelTitle": "外部知識 API", + "createNewExternalAPI": "創建新的外部知識 API", + "externalKnowledgeDescriptionPlaceholder": "描述此知識庫中的內容(選擇)", + "allExternalTip": "僅使用外部知識時,用戶可以選擇是否啟用 Rerank 模型。如果未啟用,則檢索到的數據塊將根據分數進行排序。當不同知識庫的檢索策略不一致時,就會不準確。", + "externalKnowledgeIdPlaceholder": "請輸入 Knowledge ID", + "editExternalAPIFormTitle": "編輯外部知識 API", + "externalKnowledgeId": "外部知識 ID", + "externalAPIPanelDescription": "外部知識 API 用於連接到 Dify 外部的知識庫,並從該知識庫中檢索知識。", + "externalAPI": "外部 API", + "editExternalAPITooltipTitle": "關聯知識", + "externalKnowledgeName": "外部知識名稱", + "externalAPIPanelDocumentation": "瞭解如何創建外部知識 API", + "externalKnowledgeNamePlaceholder": "請輸入知識庫的名稱", + "noExternalKnowledge": "目前還沒有外部知識 API,按兩下此處創建", + "chunkingMode": { + "parentChild": "父子", + "general": "常規", + "graph": "圖形", + "qa": "問與答" + }, + "parentMode": { + "paragraph": "段", + "fullDoc": "完整文件" + }, + "batchAction": { + "delete": "刪除", + "enable": "使", + "disable": "禁用", + "cancel": "取消", + "archive": "檔案", + "selected": "選擇" + }, + "enable": "使", + "documentsDisabled": "已禁用 {{num}} 個文檔 - 處於非活動狀態超過 30 天", + "localDocs": "本地文件", + "preprocessDocument": "{{num}}預處理文件", + "allKnowledge": "所有知識", + "allKnowledgeDescription": "選擇以顯示此工作區中的所有知識。只有 Workspace 擁有者可以管理所有知識。", + "metadata": { + "createMetadata": { + "type": "類型", + "title": "新元數據", + "back": "返回", + "namePlaceholder": "新增元數據名稱", + "name": "名字" + }, + "checkName": { + "empty": "元數據名稱不能為空", + "invalid": "元數據名稱只能包含小寫字母、數字和底線,並且必須以小寫字母開頭", + "tooLong": "元數據名稱不能超過 {{max}} 個字符" + }, + "batchEditMetadata": { + "applyToAllSelectDocumentTip": "自動為所有選定文檔創建上述所有編輯和新元數據,否則編輯元數據將僅適用於具有該元數據的文檔。", + "editDocumentsNum": "編輯 {{num}} 份文件", + "multipleValue": "多重價值", + "applyToAllSelectDocument": "應用於所有選定的文件", + "editMetadata": "編輯元資料" + }, + "selectMetadata": { + "search": "搜尋元數據", + "newAction": "新元數據", + "manageAction": "管理" + }, + "datasetMetadata": { + "rename": "重新命名", + "addMetaData": "新增元數據", + "builtInDescription": "內建的元數據會自動提取和生成。在使用之前必須啟用,且無法編輯。", + "name": "名字", + "disabled": "禁用", + "deleteTitle": "確認刪除", + "values": "{{num}} 值", + "deleteContent": "您確定要刪除元數據 \"{{name}}\" 嗎?", + "builtIn": "內建的", + "description": "您可以在這裡管理所有的元數據。對所有文件的修改將會同步。", + "namePlaceholder": "元數據名稱" + }, + "documentMetadata": { + "startLabeling": "開始標記", + "documentInformation": "文件資訊", + "technicalParameters": "技術參數", + "metadataToolTip": "元數據作為一個關鍵的過濾器,提高了信息檢索的準確性和相關性。您可以在此處修改和新增此文檔的元數據。" + }, + "metadata": "元數據", + "chooseTime": "選擇一個時間...", + "addMetadata": "新增元數據" + }, + "embeddingModelNotAvailable": "嵌入模型無法使用。", + "externalKnowledgeBase": "外部知識庫", + "createFromPipeline": "從知識管線建立", + "updated": "更新時間", + "serviceApi": { + "card": { + "title": "後端服務 API", + "apiReference": "API 參考", + "endpoint": "服務 API 端點", + "apiKey": "API 金鑰" + }, + "enabled": "使用中", + "title": "服務 API", + "disabled": "已停用" + }, + "docAllEnabled_one": "{{count}} 文件已啟用", + "docAllEnabled_other": "所有 {{count}} 文件已啟用", + "partialEnabled_one": "共 {{count}} 份文件,{{num}} 份可用", + "partialEnabled_other": "共 {{count}} 份文件,{{num}} 份可用", + "cornerLabel": { + "unavailable": "無法使用", + "pipeline": "管道" + }, + "multimodal": "多模態", + "imageUploader": { + "button": "拖放檔案或資料夾,或", + "browse": "瀏覽", + "tip": "{{supportTypes}}(最多 {{batchCount}},每個 {{size}}MB)" + } +} diff --git a/web/i18n/zh-Hant/dataset.ts b/web/i18n/zh-Hant/dataset.ts deleted file mode 100644 index 4e1c5725b7..0000000000 --- a/web/i18n/zh-Hant/dataset.ts +++ /dev/null @@ -1,253 +0,0 @@ -const translation = { - knowledge: '知識庫', - documentCount: ' 文件', - wordCount: ' 千字元', - appCount: ' 關聯應用', - createDataset: '建立知識庫', - createDatasetIntro: '匯入您自己的文字資料或透過 Webhook 實時寫入資料以增強 LLM 的上下文。', - deleteDatasetConfirmTitle: '要刪除知識庫嗎?', - deleteDatasetConfirmContent: - '刪除知識庫是不可逆的。使用者將無法再訪問您的知識庫,所有的提示配置和日誌將被永久刪除。', - datasetUsedByApp: '這些知識正被一些應用程序使用。應用程序將無法再使用這些知識,所有提示配置和日誌將被永久刪除。', - datasetDeleted: '知識庫已刪除', - datasetDeleteFailed: '刪除知識庫失敗', - didYouKnow: '你知道嗎?', - intro1: '知識庫可以被整合到 Dify 應用中', - intro2: '作為上下文', - intro3: ',', - intro4: '或可以', - intro5: '建立', - intro6: '為獨立的 ChatGPT 外掛釋出使用', - unavailable: '不可用', - datasets: '知識庫', - datasetsApi: 'API', - retrieval: { - semantic_search: { - title: '向量檢索', - description: '透過生成查詢嵌入並查詢與其向量表示最相似的文字分段', - }, - full_text_search: { - title: '全文檢索', - description: '索引文件中的所有詞彙,從而允許使用者查詢任意詞彙,並返回包含這些詞彙的文字片段', - }, - hybrid_search: { - title: '混合檢索', - description: '同時執行全文檢索和向量檢索,並應用重排序步驟,從兩類查詢結果中選擇匹配使用者問題的最佳結果,需配置 Rerank 模型 API', - recommend: '推薦', - }, - invertedIndex: { - }, - change: '更改', - changeRetrievalMethod: '更改檢索方法', - keyword_search: { - title: '倒掛索引', - description: '倒掛索引是一種用於高效檢索的結構。依字詞組織,每個字詞都指向包含它的文件或網頁。', - }, - }, - docsFailedNotice: '文件無法被索引', - retry: '重試', - indexingTechnique: { - high_quality: '高品質', - economy: '經濟', - }, - indexingMethod: { - semantic_search: '向量', - full_text_search: '全文', - hybrid_search: '混合', - invertedIndex: '倒排索引', - }, - mixtureHighQualityAndEconomicTip: '混合高品質和經濟知識庫需要重新排序模型。', - inconsistentEmbeddingModelTip: '如果選定知識庫的嵌入模型不一致,則需要重新排序模型。', - retrievalSettings: '檢索設置', - rerankSettings: '重新排序設置', - weightedScore: { - title: '加權分數', - description: '通過調整分配的權重,此重新排序策略決定是優先考慮語義匹配還是關鍵詞匹配。', - semanticFirst: '語義優先', - keywordFirst: '關鍵詞優先', - customized: '自定義', - semantic: '語義', - keyword: '關鍵詞', - }, - nTo1RetrievalLegacy: 'N 對 1 檢索將從 9 月起正式棄用。建議使用最新的多路徑檢索以獲得更好的結果。', - nTo1RetrievalLegacyLink: '了解更多', - nTo1RetrievalLegacyLinkText: 'N 對 1 檢索將於 9 月正式棄用。', - defaultRetrievalTip: '默認情況下,使用多路徑檢索。從多個知識庫中檢索知識,然後重新排名。', - editExternalAPIConfirmWarningContent: { - end: 'external knowledge,並且此修改將應用於所有這些 Knowledge。是否確實要保存此更改?', - front: '此外部知識 API 連結到', - }, - editExternalAPIFormWarning: { - end: '外部知識', - front: '此外部 API 連結到', - }, - deleteExternalAPIConfirmWarningContent: { - title: { - end: '?', - front: '刪除', - }, - content: { - front: '此外部知識 API 連結到', - end: '外部知識。刪除此 API 將使所有這些 API 失效。是否確實要刪除此 API?', - }, - noConnectionContent: '您確定要刪除此 API 嗎?', - }, - selectExternalKnowledgeAPI: { - placeholder: '選擇外部知識 API', - }, - connectDatasetIntro: { - content: { - link: '瞭解如何創建外部 API', - front: '要連接到外部知識庫,您需要先創建外部 API。請仔細閱讀並參考', - end: '.然後找到對應的知識 ID 並在左側的表單中填寫。如果資訊全部正確,點擊連接按鈕后,會自動跳轉到知識庫中的檢索測試。', - }, - title: '如何連接到外部知識庫', - learnMore: '瞭解更多資訊', - }, - connectHelper: { - helper5: '使用此功能前請小心。', - helper3: '.我們強烈建議您', - helper2: '僅支援檢索功能', - helper4: '閱讀幫助文件', - helper1: '通過 API 和知識庫 ID 連接到外部知識庫。目前,', - }, - externalKnowledgeForm: { - connect: '連接', - cancel: '取消', - }, - externalAPIForm: { - encrypted: { - end: '科技。', - front: '您的 API 令牌將使用', - }, - save: '救', - cancel: '取消', - name: '名字', - apiKey: 'API 金鑰', - edit: '編輯', - endpoint: 'API 終端節點', - }, - externalTag: '外部', - externalKnowledgeDescription: '知識描述', - mixtureInternalAndExternalTip: 'Rerank 模型是內部和外部知識的混合所必需的。', - connectDataset: '連接到外部知識庫', - learnHowToWriteGoodKnowledgeDescription: '瞭解如何編寫良好的知識描述', - createExternalAPI: '新增外部知識 API', - externalAPIPanelTitle: '外部知識 API', - createNewExternalAPI: '創建新的外部知識 API', - externalKnowledgeDescriptionPlaceholder: '描述此知識庫中的內容(選擇)', - allExternalTip: '僅使用外部知識時,用戶可以選擇是否啟用 Rerank 模型。如果未啟用,則檢索到的數據塊將根據分數進行排序。當不同知識庫的檢索策略不一致時,就會不準確。', - externalKnowledgeIdPlaceholder: '請輸入 Knowledge ID', - editExternalAPIFormTitle: '編輯外部知識 API', - externalKnowledgeId: '外部知識 ID', - externalAPIPanelDescription: '外部知識 API 用於連接到 Dify 外部的知識庫,並從該知識庫中檢索知識。', - externalAPI: '外部 API', - editExternalAPITooltipTitle: '關聯知識', - externalKnowledgeName: '外部知識名稱', - externalAPIPanelDocumentation: '瞭解如何創建外部知識 API', - externalKnowledgeNamePlaceholder: '請輸入知識庫的名稱', - noExternalKnowledge: '目前還沒有外部知識 API,按兩下此處創建', - chunkingMode: { - parentChild: '父子', - general: '常規', - graph: '圖形', - qa: '問與答', - }, - parentMode: { - paragraph: '段', - fullDoc: '完整文件', - }, - batchAction: { - delete: '刪除', - enable: '使', - disable: '禁用', - cancel: '取消', - archive: '檔案', - selected: '選擇', - }, - enable: '使', - documentsDisabled: '已禁用 {{num}} 個文檔 - 處於非活動狀態超過 30 天', - localDocs: '本地文件', - preprocessDocument: '{{num}}預處理文件', - allKnowledge: '所有知識', - allKnowledgeDescription: '選擇以顯示此工作區中的所有知識。只有 Workspace 擁有者可以管理所有知識。', - metadata: { - createMetadata: { - type: '類型', - title: '新元數據', - back: '返回', - namePlaceholder: '新增元數據名稱', - name: '名字', - }, - checkName: { - empty: '元數據名稱不能為空', - invalid: '元數據名稱只能包含小寫字母、數字和底線,並且必須以小寫字母開頭', - tooLong: '元數據名稱不能超過 {{max}} 個字符', - }, - batchEditMetadata: { - applyToAllSelectDocumentTip: '自動為所有選定文檔創建上述所有編輯和新元數據,否則編輯元數據將僅適用於具有該元數據的文檔。', - editDocumentsNum: '編輯 {{num}} 份文件', - multipleValue: '多重價值', - applyToAllSelectDocument: '應用於所有選定的文件', - editMetadata: '編輯元資料', - }, - selectMetadata: { - search: '搜尋元數據', - newAction: '新元數據', - manageAction: '管理', - }, - datasetMetadata: { - rename: '重新命名', - addMetaData: '新增元數據', - builtInDescription: '內建的元數據會自動提取和生成。在使用之前必須啟用,且無法編輯。', - name: '名字', - disabled: '禁用', - deleteTitle: '確認刪除', - values: '{{num}} 值', - deleteContent: '您確定要刪除元數據 "{{name}}" 嗎?', - builtIn: '內建的', - description: '您可以在這裡管理所有的元數據。對所有文件的修改將會同步。', - namePlaceholder: '元數據名稱', - }, - documentMetadata: { - startLabeling: '開始標記', - documentInformation: '文件資訊', - technicalParameters: '技術參數', - metadataToolTip: '元數據作為一個關鍵的過濾器,提高了信息檢索的準確性和相關性。您可以在此處修改和新增此文檔的元數據。', - }, - metadata: '元數據', - chooseTime: '選擇一個時間...', - addMetadata: '新增元數據', - }, - embeddingModelNotAvailable: '嵌入模型無法使用。', - externalKnowledgeBase: '外部知識庫', - createFromPipeline: '從知識管線建立', - updated: '更新時間', - serviceApi: { - card: { - title: '後端服務 API', - apiReference: 'API 參考', - endpoint: '服務 API 端點', - apiKey: 'API 金鑰', - }, - enabled: '使用中', - title: '服務 API', - disabled: '已停用', - }, - docAllEnabled_one: '{{count}} 文件已啟用', - docAllEnabled_other: '所有 {{count}} 文件已啟用', - partialEnabled_one: '共 {{count}} 份文件,{{num}} 份可用', - partialEnabled_other: '共 {{count}} 份文件,{{num}} 份可用', - cornerLabel: { - unavailable: '無法使用', - pipeline: '管道', - }, - multimodal: '多模態', - imageUploader: { - button: '拖放檔案或資料夾,或', - browse: '瀏覽', - tip: '{{supportTypes}}(最多 {{batchCount}},每個 {{size}}MB)', - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/education.json b/web/i18n/zh-Hant/education.json new file mode 100644 index 0000000000..df90a248dd --- /dev/null +++ b/web/i18n/zh-Hant/education.json @@ -0,0 +1,74 @@ +{ + "toVerifiedTip": { + "end": "用於 Dify 專業計劃。", + "coupon": "獨家 100% 優惠券", + "front": "您現在符合教育驗證狀態的資格。請在下面輸入您的教育資訊以完成此流程並獲得一個" + }, + "form": { + "schoolName": { + "title": "你的學校名稱", + "placeholder": "請輸入您學校的正式全名" + }, + "schoolRole": { + "option": { + "teacher": "老師", + "student": "學生", + "administrator": "校園行政人員" + }, + "title": "你的學校角色" + }, + "terms": { + "desc": { + "and": "和", + "privacyPolicy": "隱私政策", + "termsOfService": "服務條款", + "front": "您的資訊及使用教育驗證狀態需遵循我們的", + "end": "透過提交:" + }, + "option": { + "age": "我確認我至少 18 歲", + "inSchool": "我確認我已在所提供的機構註冊或受僱。Dify 可能會要求提供註冊/就業的證明。如果我錯誤表述我的資格,我同意支付根據我的教育狀況最初免除的任何費用。" + }, + "title": "條款與協議" + } + }, + "rejectContent": "不幸的是,您不符合教育驗證狀態,因此如果您使用此電子郵件地址,將無法獲得 Dify 專業計劃的 100% 獨家優惠券。", + "successContent": "我們已經向您的帳戶發放了 Dify 專業計劃的 100% 折扣優惠券。該優惠券有效期為一年,請在有效期內使用它。", + "learn": "了解如何進行教育驗證", + "rejectTitle": "您的 Dify 教育驗證已被拒絕", + "submitError": "表單提交失敗。請稍後再試。", + "currentSigned": "當前以以下身份登入", + "emailLabel": "您當前的電子郵件", + "submit": "提交", + "successTitle": "您已獲得 Dify 教育認證", + "toVerified": "獲取教育證明", + "notice": { + "expired": { + "summary": { + "line1": "您仍然可以訪問和使用 Dify。", + "line2": "然而,您已不再有資格獲得新的教育折扣優惠券。" + }, + "title": "您的教育狀態已過期" + }, + "isAboutToExpire": { + "summary": "別擔心 — 這不會影響你當前的訂閱,但當它續訂時,如果你沒有重新確認你的身份,你將不會獲得教育折扣。", + "title": "您的教育狀態將於 {{date}} 到期" + }, + "stillInEducation": { + "title": "仍在接受教育嗎?", + "expired": "立即重新驗證,以獲得即將到來的學年新優惠券。我們會將其新增到您的帳戶中,您可以用於下一次升級。", + "isAboutToExpire": "現在重新驗證以獲得即將到來的學年新優惠券。它將保存在您的帳戶中,並在下次續訂時隨時可以使用。" + }, + "alreadyGraduated": { + "expired": "隨時升級即可獲得完整的付費功能訪問權限。", + "title": "已經畢業了嗎?", + "isAboutToExpire": "您目前的訂閱將保持有效。當它結束時,您將轉到沙盒計劃,或者您可以隨時升級以恢復對付費功能的完全訪問。" + }, + "action": { + "dismiss": "解散", + "upgrade": "升級", + "reVerify": "重新驗證" + }, + "dateFormat": "月/日/年" + } +} diff --git a/web/i18n/zh-Hant/education.ts b/web/i18n/zh-Hant/education.ts deleted file mode 100644 index 49e97155d6..0000000000 --- a/web/i18n/zh-Hant/education.ts +++ /dev/null @@ -1,76 +0,0 @@ -const translation = { - toVerifiedTip: { - end: '用於 Dify 專業計劃。', - coupon: '獨家 100% 優惠券', - front: '您現在符合教育驗證狀態的資格。請在下面輸入您的教育資訊以完成此流程並獲得一個', - }, - form: { - schoolName: { - title: '你的學校名稱', - placeholder: '請輸入您學校的正式全名', - }, - schoolRole: { - option: { - teacher: '老師', - student: '學生', - administrator: '校園行政人員', - }, - title: '你的學校角色', - }, - terms: { - desc: { - and: '和', - privacyPolicy: '隱私政策', - termsOfService: '服務條款', - front: '您的資訊及使用教育驗證狀態需遵循我們的', - end: '透過提交:', - }, - option: { - age: '我確認我至少 18 歲', - inSchool: '我確認我已在所提供的機構註冊或受僱。Dify 可能會要求提供註冊/就業的證明。如果我錯誤表述我的資格,我同意支付根據我的教育狀況最初免除的任何費用。', - }, - title: '條款與協議', - }, - }, - rejectContent: '不幸的是,您不符合教育驗證狀態,因此如果您使用此電子郵件地址,將無法獲得 Dify 專業計劃的 100% 獨家優惠券。', - successContent: '我們已經向您的帳戶發放了 Dify 專業計劃的 100% 折扣優惠券。該優惠券有效期為一年,請在有效期內使用它。', - learn: '了解如何進行教育驗證', - rejectTitle: '您的 Dify 教育驗證已被拒絕', - submitError: '表單提交失敗。請稍後再試。', - currentSigned: '當前以以下身份登入', - emailLabel: '您當前的電子郵件', - submit: '提交', - successTitle: '您已獲得 Dify 教育認證', - toVerified: '獲取教育證明', - notice: { - expired: { - summary: { - line1: '您仍然可以訪問和使用 Dify。', - line2: '然而,您已不再有資格獲得新的教育折扣優惠券。', - }, - title: '您的教育狀態已過期', - }, - isAboutToExpire: { - summary: '別擔心 — 這不會影響你當前的訂閱,但當它續訂時,如果你沒有重新確認你的身份,你將不會獲得教育折扣。', - title: '您的教育狀態將於 {{date}} 到期', - }, - stillInEducation: { - title: '仍在接受教育嗎?', - expired: '立即重新驗證,以獲得即將到來的學年新優惠券。我們會將其新增到您的帳戶中,您可以用於下一次升級。', - isAboutToExpire: '現在重新驗證以獲得即將到來的學年新優惠券。它將保存在您的帳戶中,並在下次續訂時隨時可以使用。', - }, - alreadyGraduated: { - expired: '隨時升級即可獲得完整的付費功能訪問權限。', - title: '已經畢業了嗎?', - isAboutToExpire: '您目前的訂閱將保持有效。當它結束時,您將轉到沙盒計劃,或者您可以隨時升級以恢復對付費功能的完全訪問。', - }, - action: { - dismiss: '解散', - upgrade: '升級', - reVerify: '重新驗證', - }, - dateFormat: '月/日/年', - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/explore.json b/web/i18n/zh-Hant/explore.json new file mode 100644 index 0000000000..96c5fe4915 --- /dev/null +++ b/web/i18n/zh-Hant/explore.json @@ -0,0 +1,42 @@ +{ + "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": "人力資源", + "Agent": "代理", + "Workflow": "工作流", + "Entertainment": "娛樂" + } +} diff --git a/web/i18n/zh-Hant/explore.ts b/web/i18n/zh-Hant/explore.ts deleted file mode 100644 index 7ff61a39bc..0000000000 --- a/web/i18n/zh-Hant/explore.ts +++ /dev/null @@ -1,44 +0,0 @@ -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: '人力資源', - Agent: '代理', - Workflow: '工作流', - Entertainment: '娛樂', - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/layout.json b/web/i18n/zh-Hant/layout.json new file mode 100644 index 0000000000..89de1bd54c --- /dev/null +++ b/web/i18n/zh-Hant/layout.json @@ -0,0 +1,6 @@ +{ + "sidebar": { + "expandSidebar": "展開側邊欄", + "collapseSidebar": "摺疊側邊欄" + } +} diff --git a/web/i18n/zh-Hant/layout.ts b/web/i18n/zh-Hant/layout.ts deleted file mode 100644 index 492d892a4a..0000000000 --- a/web/i18n/zh-Hant/layout.ts +++ /dev/null @@ -1,8 +0,0 @@ -const translation = { - sidebar: { - expandSidebar: '展開側邊欄', - collapseSidebar: '摺疊側邊欄', - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/login.json b/web/i18n/zh-Hant/login.json new file mode 100644 index 0000000000..cde30d51e4 --- /dev/null +++ b/web/i18n/zh-Hant/login.json @@ -0,0 +1,124 @@ +{ + "pageTitle": "嗨,近來可好", + "pageTitleForE": "嗨,近來可好", + "welcome": "👋 歡迎來到 Dify, 登入以繼續", + "email": "郵箱", + "emailPlaceholder": "輸入郵箱地址", + "password": "密碼", + "passwordPlaceholder": "輸入密碼", + "name": "使用者名稱", + "namePlaceholder": "輸入使用者名稱", + "forget": "忘記密碼?", + "signBtn": "登入", + "installBtn": "設定", + "setAdminAccount": "設定管理員賬戶", + "setAdminAccountDesc": "管理員擁有的最大許可權,可用於建立應用和管理 LLM 供應商等。", + "createAndSignIn": "建立賬戶", + "oneMoreStep": "還差一步", + "createSample": "基於這些資訊,我們將為您建立一個示例應用", + "invitationCode": "邀請碼", + "invitationCodePlaceholder": "輸入邀請碼", + "interfaceLanguage": "介面語言", + "timezone": "時區", + "go": "跳轉至 Dify", + "sendUsMail": "發封郵件介紹你自己,我們會盡快處理。", + "acceptPP": "我已閱讀並接受隱私政策", + "reset": "請執行以下命令重置密碼", + "withGitHub": "使用 GitHub 登入", + "withGoogle": "使用 Google 登入", + "rightTitle": "釋放大型語言模型的全部潛能", + "rightDesc": "簡單構建視覺化、可運營、可改進的 AI 應用", + "tos": "使用協議", + "pp": "隱私政策", + "tosDesc": "使用即代表你並同意我們的", + "goToInit": "如果您還沒有初始化賬戶,請前往初始化頁面", + "dontHave": "還沒有邀請碼?", + "invalidInvitationCode": "無效的邀請碼", + "accountAlreadyInited": "賬戶已經初始化", + "forgotPassword": "忘記密碼?", + "resetLinkSent": "重設連結已發送", + "sendResetLink": "發送重設連結", + "backToSignIn": "返回登錄", + "forgotPasswordDesc": "請輸入您的電子郵件地址以重設密碼。我們將向您發送一封電子郵件,說明如何重設密碼。", + "checkEmailForResetLink": "請檢查您的電子郵件以獲取重設密碼的連結。如果幾分鐘內沒有收到,請檢查您的垃圾郵件文件夾。", + "passwordChanged": "立即登入", + "changePassword": "更改密碼", + "changePasswordTip": "請輸入您的新密碼", + "invalidToken": "無效或已過期的令牌", + "confirmPassword": "確認密碼", + "confirmPasswordPlaceholder": "確認您的新密碼", + "passwordChangedTip": "您的密碼已成功更改", + "error": { + "emailEmpty": "郵箱不能為空", + "emailInValid": "請輸入有效的郵箱地址", + "nameEmpty": "使用者名稱不能為空", + "passwordEmpty": "密碼不能為空", + "passwordInvalid": "密碼必須包含字母和數字,且長度不小於 8 位", + "passwordLengthInValid": "密碼必須至少為 8 個字元", + "registrationNotAllowed": "找不到帳戶。請聯繫系統管理員進行註冊。", + "invalidEmailOrPassword": "無效的電子郵件或密碼。" + }, + "license": { + "tip": "啟動 Dify 社群版之前,請閱讀 GitHub 上的", + "link": "開源協議" + }, + "join": "加入", + "joinTipStart": "邀請你加入", + "joinTipEnd": "團隊", + "invalid": "連結已失效", + "explore": "探索 Dify", + "activatedTipStart": "您已加入", + "activatedTipEnd": "團隊", + "activated": "現在登入", + "adminInitPassword": "管理員初始化密碼", + "validate": "驗證", + "checkCode": { + "verify": "驗證", + "resend": "發送", + "didNotReceiveCode": "沒有收到驗證碼?", + "emptyCode": "驗證碼是必需的", + "checkYourEmail": "檢查您的電子郵件", + "verificationCodePlaceholder": "輸入 6 位代碼", + "useAnotherMethod": "使用其他方法", + "validTime": "請記住,該代碼的有效期為 5 分鐘", + "verificationCode": "驗證碼", + "invalidCode": "無效代碼", + "tipsPrefix": "我們發送一個驗證碼到" + }, + "continueWithCode": "Continue With Code", + "or": "或", + "sendVerificationCode": "發送驗證碼", + "resetPassword": "重置密碼", + "noLoginMethod": "未配置身份驗證方法", + "setYourAccount": "設置您的帳戶", + "useVerificationCode": "使用驗證碼", + "changePasswordBtn": "設置密碼", + "enterYourName": "請輸入您的使用者名", + "backToLogin": "返回登錄", + "noLoginMethodTip": "請聯繫系統管理員以新增身份驗證方法。", + "withSSO": "繼續使用 SSO", + "back": "返回", + "resetPasswordDesc": "輸入您用於註冊 Dify 的電子郵件,我們將向您發送一封密碼重置電子郵件。", + "usePassword": "使用密碼", + "licenseExpiredTip": "您的工作區的 Dify Enterprise 許可證已過期。請聯繫您的管理員以繼續使用 Dify。", + "licenseExpired": "許可證已過期", + "licenseLost": "許可證丟失", + "licenseInactive": "許可證處於非活動狀態", + "licenseInactiveTip": "您的工作區的 Dify Enterprise 許可證處於非活動狀態。請聯繫您的管理員以繼續使用 Dify。", + "licenseLostTip": "無法連接 Dify 許可證伺服器。請聯繫您的管理員以繼續使用 Dify。", + "webapp": { + "noLoginMethod": "未為網絡應用程序配置身份驗證方法", + "noLoginMethodTip": "請聯絡系統管理員以新增身份驗證方法。", + "disabled": "網頁應用程序身份驗證已被禁用。請聯繫系統管理員以啟用它。您可以嘗試直接使用應用程序。", + "login": "登入" + }, + "signup": { + "signIn": "登入", + "signUp": "註冊", + "noAccount": "還沒有帳戶嗎?", + "verifyMail": "繼續驗證碼", + "createAccount": "創建您的帳戶", + "haveAccount": "已經有帳戶了嗎?", + "welcome": "👋 歡迎!請填寫詳細信息以開始。" + } +} diff --git a/web/i18n/zh-Hant/login.ts b/web/i18n/zh-Hant/login.ts deleted file mode 100644 index eae1ac9c75..0000000000 --- a/web/i18n/zh-Hant/login.ts +++ /dev/null @@ -1,126 +0,0 @@ -const translation = { - pageTitle: '嗨,近來可好', - pageTitleForE: '嗨,近來可好', - welcome: '👋 歡迎來到 Dify, 登入以繼續', - email: '郵箱', - emailPlaceholder: '輸入郵箱地址', - password: '密碼', - passwordPlaceholder: '輸入密碼', - name: '使用者名稱', - namePlaceholder: '輸入使用者名稱', - forget: '忘記密碼?', - signBtn: '登入', - installBtn: '設定', - setAdminAccount: '設定管理員賬戶', - setAdminAccountDesc: '管理員擁有的最大許可權,可用於建立應用和管理 LLM 供應商等。', - createAndSignIn: '建立賬戶', - oneMoreStep: '還差一步', - createSample: '基於這些資訊,我們將為您建立一個示例應用', - invitationCode: '邀請碼', - invitationCodePlaceholder: '輸入邀請碼', - interfaceLanguage: '介面語言', - timezone: '時區', - go: '跳轉至 Dify', - sendUsMail: '發封郵件介紹你自己,我們會盡快處理。', - acceptPP: '我已閱讀並接受隱私政策', - reset: '請執行以下命令重置密碼', - withGitHub: '使用 GitHub 登入', - withGoogle: '使用 Google 登入', - rightTitle: '釋放大型語言模型的全部潛能', - rightDesc: '簡單構建視覺化、可運營、可改進的 AI 應用', - tos: '使用協議', - pp: '隱私政策', - tosDesc: '使用即代表你並同意我們的', - goToInit: '如果您還沒有初始化賬戶,請前往初始化頁面', - dontHave: '還沒有邀請碼?', - invalidInvitationCode: '無效的邀請碼', - accountAlreadyInited: '賬戶已經初始化', - forgotPassword: '忘記密碼?', - resetLinkSent: '重設連結已發送', - sendResetLink: '發送重設連結', - backToSignIn: '返回登錄', - forgotPasswordDesc: '請輸入您的電子郵件地址以重設密碼。我們將向您發送一封電子郵件,說明如何重設密碼。', - checkEmailForResetLink: '請檢查您的電子郵件以獲取重設密碼的連結。如果幾分鐘內沒有收到,請檢查您的垃圾郵件文件夾。', - passwordChanged: '立即登入', - changePassword: '更改密碼', - changePasswordTip: '請輸入您的新密碼', - invalidToken: '無效或已過期的令牌', - confirmPassword: '確認密碼', - confirmPasswordPlaceholder: '確認您的新密碼', - passwordChangedTip: '您的密碼已成功更改', - error: { - emailEmpty: '郵箱不能為空', - emailInValid: '請輸入有效的郵箱地址', - nameEmpty: '使用者名稱不能為空', - passwordEmpty: '密碼不能為空', - passwordInvalid: '密碼必須包含字母和數字,且長度不小於 8 位', - passwordLengthInValid: '密碼必須至少為 8 個字元', - registrationNotAllowed: '找不到帳戶。請聯繫系統管理員進行註冊。', - invalidEmailOrPassword: '無效的電子郵件或密碼。', - }, - license: { - tip: '啟動 Dify 社群版之前,請閱讀 GitHub 上的', - link: '開源協議', - }, - join: '加入', - joinTipStart: '邀請你加入', - joinTipEnd: '團隊', - invalid: '連結已失效', - explore: '探索 Dify', - activatedTipStart: '您已加入', - activatedTipEnd: '團隊', - activated: '現在登入', - adminInitPassword: '管理員初始化密碼', - validate: '驗證', - checkCode: { - verify: '驗證', - resend: '發送', - didNotReceiveCode: '沒有收到驗證碼?', - emptyCode: '驗證碼是必需的', - checkYourEmail: '檢查您的電子郵件', - verificationCodePlaceholder: '輸入 6 位代碼', - useAnotherMethod: '使用其他方法', - validTime: '請記住,該代碼的有效期為 5 分鐘', - verificationCode: '驗證碼', - invalidCode: '無效代碼', - tipsPrefix: '我們發送一個驗證碼到', - }, - continueWithCode: 'Continue With Code', - or: '或', - sendVerificationCode: '發送驗證碼', - resetPassword: '重置密碼', - noLoginMethod: '未配置身份驗證方法', - setYourAccount: '設置您的帳戶', - useVerificationCode: '使用驗證碼', - changePasswordBtn: '設置密碼', - enterYourName: '請輸入您的使用者名', - backToLogin: '返回登錄', - noLoginMethodTip: '請聯繫系統管理員以新增身份驗證方法。', - withSSO: '繼續使用 SSO', - back: '返回', - resetPasswordDesc: '輸入您用於註冊 Dify 的電子郵件,我們將向您發送一封密碼重置電子郵件。', - usePassword: '使用密碼', - licenseExpiredTip: '您的工作區的 Dify Enterprise 許可證已過期。請聯繫您的管理員以繼續使用 Dify。', - licenseExpired: '許可證已過期', - licenseLost: '許可證丟失', - licenseInactive: '許可證處於非活動狀態', - licenseInactiveTip: '您的工作區的 Dify Enterprise 許可證處於非活動狀態。請聯繫您的管理員以繼續使用 Dify。', - licenseLostTip: '無法連接 Dify 許可證伺服器。請聯繫您的管理員以繼續使用 Dify。', - webapp: { - noLoginMethod: '未為網絡應用程序配置身份驗證方法', - noLoginMethodTip: '請聯絡系統管理員以新增身份驗證方法。', - disabled: '網頁應用程序身份驗證已被禁用。請聯繫系統管理員以啟用它。您可以嘗試直接使用應用程序。', - login: '登入', - }, - signup: { - signIn: '登入', - signUp: '註冊', - noAccount: '還沒有帳戶嗎?', - verifyMail: '繼續驗證碼', - createAccount: '創建您的帳戶', - haveAccount: '已經有帳戶了嗎?', - welcome: '👋 歡迎!請填寫詳細信息以開始。', - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/oauth.json b/web/i18n/zh-Hant/oauth.json new file mode 100644 index 0000000000..77f9031662 --- /dev/null +++ b/web/i18n/zh-Hant/oauth.json @@ -0,0 +1,25 @@ +{ + "tips": { + "notLoggedIn": "想要訪問您的 Dify 雲端帳戶", + "loggedIn": "想要訪問您 Dify Cloud 帳戶中的以下資訊。", + "common": "我們尊重您的隱私,只會使用這些信息來提升您使用我們開發者工具的體驗。", + "needLogin": "請登錄以進行授權" + }, + "scopes": { + "timezone": "時區", + "languagePreference": "語言偏好", + "email": "電子郵件", + "name": "名字", + "avatar": "阿凡達" + }, + "error": { + "invalidParams": "無效的參數", + "authAppInfoFetchFailed": "無法獲取應用程式授權信息", + "authorizeFailed": "授權失敗" + }, + "login": "登入", + "connect": "連接到", + "switchAccount": "切換帳戶", + "unknownApp": "未知應用", + "continue": "繼續" +} diff --git a/web/i18n/zh-Hant/oauth.ts b/web/i18n/zh-Hant/oauth.ts deleted file mode 100644 index d7a75d112e..0000000000 --- a/web/i18n/zh-Hant/oauth.ts +++ /dev/null @@ -1,27 +0,0 @@ -const translation = { - tips: { - notLoggedIn: '想要訪問您的 Dify 雲端帳戶', - loggedIn: '想要訪問您 Dify Cloud 帳戶中的以下資訊。', - common: '我們尊重您的隱私,只會使用這些信息來提升您使用我們開發者工具的體驗。', - needLogin: '請登錄以進行授權', - }, - scopes: { - timezone: '時區', - languagePreference: '語言偏好', - email: '電子郵件', - name: '名字', - avatar: '阿凡達', - }, - error: { - invalidParams: '無效的參數', - authAppInfoFetchFailed: '無法獲取應用程式授權信息', - authorizeFailed: '授權失敗', - }, - login: '登入', - connect: '連接到', - switchAccount: '切換帳戶', - unknownApp: '未知應用', - continue: '繼續', -} - -export default translation diff --git a/web/i18n/zh-Hant/pipeline.json b/web/i18n/zh-Hant/pipeline.json new file mode 100644 index 0000000000..9071be0fa0 --- /dev/null +++ b/web/i18n/zh-Hant/pipeline.json @@ -0,0 +1,38 @@ +{ + "common": { + "publishAsPipeline": { + "description": "知識說明", + "descriptionPlaceholder": "請輸入此知識管道的描述。(選用)", + "name": "管線名稱 & 圖示", + "namePlaceholder": "請輸入此知識管道的名稱。(必填)" + }, + "testRun": "試運行", + "preparingDataSource": "準備資料來源", + "publishAs": "發佈為知識管道", + "reRun": "重新運行", + "processing": "處理", + "confirmPublishContent": "成功發布知識管道後,無法修改此知識庫的區塊結構。你確定要發布它嗎?", + "confirmPublish": "確認發佈", + "goToAddDocuments": "移至新增文件" + }, + "inputField": { + "manage": "司", + "create": "建立使用者輸入欄位" + }, + "publishToast": { + "title": "此管線尚未發佈", + "desc": "當管道未發佈時,可以在知識庫節點中修改區塊結構,管道編排和變更會自動儲存為草稿。" + }, + "result": { + "resultPreview": { + "viewDetails": "查看詳情", + "error": "執行期間發生錯誤", + "loading": "處理中...請稍候", + "footerTip": "在測試運行模式下,可預覽最多 {{count}} 個區塊" + } + }, + "ragToolSuggestions": { + "title": "RAG 的建議", + "noRecommendationPlugins": "沒有推薦的插件,請在 市場 中尋找更多" + } +} diff --git a/web/i18n/zh-Hant/pipeline.ts b/web/i18n/zh-Hant/pipeline.ts deleted file mode 100644 index 26c08768d4..0000000000 --- a/web/i18n/zh-Hant/pipeline.ts +++ /dev/null @@ -1,40 +0,0 @@ -const translation = { - common: { - publishAsPipeline: { - description: '知識說明', - descriptionPlaceholder: '請輸入此知識管道的描述。(選用)', - name: '管線名稱 & 圖示', - namePlaceholder: '請輸入此知識管道的名稱。(必填)', - }, - testRun: '試運行', - preparingDataSource: '準備資料來源', - publishAs: '發佈為知識管道', - reRun: '重新運行', - processing: '處理', - confirmPublishContent: '成功發布知識管道後,無法修改此知識庫的區塊結構。你確定要發布它嗎?', - confirmPublish: '確認發佈', - goToAddDocuments: '移至新增文件', - }, - inputField: { - manage: '司', - create: '建立使用者輸入欄位', - }, - publishToast: { - title: '此管線尚未發佈', - desc: '當管道未發佈時,可以在知識庫節點中修改區塊結構,管道編排和變更會自動儲存為草稿。', - }, - result: { - resultPreview: { - viewDetails: '查看詳情', - error: '執行期間發生錯誤', - loading: '處理中...請稍候', - footerTip: '在測試運行模式下,可預覽最多 {{count}} 個區塊', - }, - }, - ragToolSuggestions: { - title: 'RAG 的建議', - noRecommendationPlugins: '沒有推薦的插件,請在 市場 中尋找更多', - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/plugin-tags.json b/web/i18n/zh-Hant/plugin-tags.json new file mode 100644 index 0000000000..89488e8e0f --- /dev/null +++ b/web/i18n/zh-Hant/plugin-tags.json @@ -0,0 +1,24 @@ +{ + "tags": { + "productivity": "生產力", + "business": "商", + "finance": "金融", + "weather": "天氣", + "news": "新聞", + "design": "設計", + "utilities": "公用事業", + "education": "教育", + "travel": "旅行", + "other": "其他", + "social": "社會的", + "medical": "醫療", + "agent": "代理", + "videos": "視頻", + "entertainment": "娛樂", + "search": "搜索", + "image": "圖像", + "rag": "碎布" + }, + "searchTags": "搜索標籤", + "allTags": "所有標籤" +} diff --git a/web/i18n/zh-Hant/plugin-tags.ts b/web/i18n/zh-Hant/plugin-tags.ts deleted file mode 100644 index e946eed3e1..0000000000 --- a/web/i18n/zh-Hant/plugin-tags.ts +++ /dev/null @@ -1,26 +0,0 @@ -const translation = { - tags: { - productivity: '生產力', - business: '商', - finance: '金融', - weather: '天氣', - news: '新聞', - design: '設計', - utilities: '公用事業', - education: '教育', - travel: '旅行', - other: '其他', - social: '社會的', - medical: '醫療', - agent: '代理', - videos: '視頻', - entertainment: '娛樂', - search: '搜索', - image: '圖像', - rag: '碎布', - }, - searchTags: '搜索標籤', - allTags: '所有標籤', -} - -export default translation diff --git a/web/i18n/zh-Hant/plugin-trigger.json b/web/i18n/zh-Hant/plugin-trigger.json new file mode 100644 index 0000000000..445b6a5200 --- /dev/null +++ b/web/i18n/zh-Hant/plugin-trigger.json @@ -0,0 +1,184 @@ +{ + "subscription": { + "title": "訂閱", + "listNum": "{{num}} 訂閱", + "empty": { + "title": "無訂閱", + "button": "新訂閱" + }, + "createButton": { + "oauth": "使用 OAuth 的新訂閱", + "apiKey": "使用 API 金鑰的新訂閱", + "manual": "貼上網址以建立新訂閱" + }, + "createSuccess": "訂閱已成功建立", + "createFailed": "建立訂閱失敗", + "maxCount": "最多 {{num}} 訂閱", + "selectPlaceholder": "選擇訂閱", + "noSubscriptionSelected": "未選擇訂閱", + "subscriptionRemoved": "已取消訂閱", + "list": { + "title": "訂閱", + "addButton": "添加", + "tip": "透過訂閱接收事件", + "item": { + "enabled": "已啟用", + "disabled": "已停用", + "credentialType": { + "api_key": "API 金鑰", + "oauth2": "OAuth", + "unauthorized": "手冊" + }, + "actions": { + "delete": "刪除", + "deleteConfirm": { + "title": "刪除 {{name}}?", + "success": "訂閱 {{name}} 已成功刪除", + "error": "無法刪除訂閱 {{name}}", + "content": "一旦刪除,此訂閱將無法恢復。請確認。", + "contentWithApps": "當前訂閱被 {{count}} 個應用程式引用。刪除它將導致已配置的應用程式停止接收訂閱事件。", + "confirm": "確認刪除", + "cancel": "取消", + "confirmInputWarning": "請輸入正確的名稱以確認。", + "confirmInputPlaceholder": "輸入「{{name}}」以確認。", + "confirmInputTip": "請輸入「{{name}}」以確認。" + } + }, + "status": { + "active": "活躍", + "inactive": "未啟用" + }, + "usedByNum": "被 {{num}} 工作流程使用", + "noUsed": "未使用工作流程" + } + }, + "addType": { + "title": "新增訂閱", + "description": "選擇您想要建立觸發訂閱的方式", + "options": { + "apikey": { + "title": "使用 API 金鑰創建", + "description": "使用 API 憑證自動建立訂閱" + }, + "oauth": { + "title": "使用 OAuth 創建", + "description": "授權第三方平台以建立訂閱", + "clientSettings": "OAuth 客戶端設定", + "clientTitle": "OAuth 用戶端", + "default": "預設", + "custom": "自訂" + }, + "manual": { + "title": "手動設定", + "description": "貼上網址以建立新訂閱", + "tip": "手動在第三方平台上配置 URL" + } + } + } + }, + "modal": { + "steps": { + "verify": "驗證", + "configuration": "配置" + }, + "common": { + "cancel": "取消", + "back": "返回", + "next": "下一步", + "create": "創建", + "verify": "驗證", + "authorize": "授權", + "creating": "正在建立...", + "verifying": "驗證中…", + "authorizing": "授權中…" + }, + "oauthRedirectInfo": "由於未找到此工具提供者的系統用戶端密鑰,需要手動設定,至於 redirect_uri,請使用", + "apiKey": { + "title": "使用 API 金鑰創建", + "verify": { + "title": "驗證憑證", + "description": "請提供您的 API 憑證以驗證存取權限", + "error": "憑證驗證失敗。請檢查您的 API 金鑰。", + "success": "憑證驗證成功" + }, + "configuration": { + "title": "設定訂閱", + "description": "設定您的訂閱參數" + } + }, + "oauth": { + "title": "使用 OAuth 創建", + "authorization": { + "title": "OAuth 授權", + "description": "授權 Dify 存取您的帳戶", + "redirectUrl": "重新導向網址", + "redirectUrlHelp": "在您的 OAuth 應用程式設定中使用此 URL", + "authorizeButton": "使用 {{provider}} 授權", + "waitingAuth": "等待授權中...", + "authSuccess": "授權成功", + "authFailed": "無法取得 OAuth 認證資訊", + "waitingJump": "已授權,等待起跳" + }, + "configuration": { + "title": "設定訂閱", + "description": "授權後設定您的訂閱參數", + "success": "OAuth 配置成功", + "failed": "OAuth 配置失敗" + }, + "remove": { + "success": "OAuth 移除成功", + "failed": "OAuth 移除失敗" + }, + "save": { + "success": "OAuth 設定已成功保存" + } + }, + "manual": { + "title": "手動設定", + "description": "手動配置您的 Webhook 訂閱", + "logs": { + "title": "請求日誌", + "request": "請求", + "loading": "正在等待來自 {{pluginName}} 的請求..." + } + }, + "form": { + "subscriptionName": { + "label": "訂閱名稱", + "placeholder": "輸入訂閱名稱", + "required": "需要訂閱名稱" + }, + "callbackUrl": { + "label": "回呼網址", + "description": "此 URL 將接收 webhook 事件", + "tooltip": "提供一個可公開訪問的端點,以接收來自觸發提供者的回調請求。", + "placeholder": "生成中...", + "privateAddressWarning": "此 URL 似乎是內部位址,可能會導致 webhook 請求失敗。您可以將 TRIGGER_URL 更改為公開位址。" + } + }, + "errors": { + "createFailed": "建立訂閱失敗", + "verifyFailed": "驗證憑證失敗", + "authFailed": "授權失敗", + "networkError": "網絡錯誤,請再試一次" + } + }, + "events": { + "title": "可用活動", + "description": "此觸發插件可以訂閱的事件", + "empty": "沒有可用的活動", + "event": "活動", + "events": "活動", + "actionNum": "{{num}} {{event}} 已包含", + "item": { + "parameters": "{{count}} 參數", + "noParameters": "無參數" + }, + "output": "輸出" + }, + "node": { + "status": { + "warning": "斷開連接" + } + } +} diff --git a/web/i18n/zh-Hant/plugin-trigger.ts b/web/i18n/zh-Hant/plugin-trigger.ts deleted file mode 100644 index c5c7012be7..0000000000 --- a/web/i18n/zh-Hant/plugin-trigger.ts +++ /dev/null @@ -1,186 +0,0 @@ -const translation = { - subscription: { - title: '訂閱', - listNum: '{{num}} 訂閱', - empty: { - title: '無訂閱', - button: '新訂閱', - }, - createButton: { - oauth: '使用 OAuth 的新訂閱', - apiKey: '使用 API 金鑰的新訂閱', - manual: '貼上網址以建立新訂閱', - }, - createSuccess: '訂閱已成功建立', - createFailed: '建立訂閱失敗', - maxCount: '最多 {{num}} 訂閱', - selectPlaceholder: '選擇訂閱', - noSubscriptionSelected: '未選擇訂閱', - subscriptionRemoved: '已取消訂閱', - list: { - title: '訂閱', - addButton: '添加', - tip: '透過訂閱接收事件', - item: { - enabled: '已啟用', - disabled: '已停用', - credentialType: { - api_key: 'API 金鑰', - oauth2: 'OAuth', - unauthorized: '手冊', - }, - actions: { - delete: '刪除', - deleteConfirm: { - title: '刪除 {{name}}?', - success: '訂閱 {{name}} 已成功刪除', - error: '無法刪除訂閱 {{name}}', - content: '一旦刪除,此訂閱將無法恢復。請確認。', - contentWithApps: '當前訂閱被 {{count}} 個應用程式引用。刪除它將導致已配置的應用程式停止接收訂閱事件。', - confirm: '確認刪除', - cancel: '取消', - confirmInputWarning: '請輸入正確的名稱以確認。', - confirmInputPlaceholder: '輸入「{{name}}」以確認。', - confirmInputTip: '請輸入「{{name}}」以確認。', - }, - }, - status: { - active: '活躍', - inactive: '未啟用', - }, - usedByNum: '被 {{num}} 工作流程使用', - noUsed: '未使用工作流程', - }, - }, - addType: { - title: '新增訂閱', - description: '選擇您想要建立觸發訂閱的方式', - options: { - apikey: { - title: '使用 API 金鑰創建', - description: '使用 API 憑證自動建立訂閱', - }, - oauth: { - title: '使用 OAuth 創建', - description: '授權第三方平台以建立訂閱', - clientSettings: 'OAuth 客戶端設定', - clientTitle: 'OAuth 用戶端', - default: '預設', - custom: '自訂', - }, - manual: { - title: '手動設定', - description: '貼上網址以建立新訂閱', - tip: '手動在第三方平台上配置 URL', - }, - }, - }, - }, - modal: { - steps: { - verify: '驗證', - configuration: '配置', - }, - common: { - cancel: '取消', - back: '返回', - next: '下一步', - create: '創建', - verify: '驗證', - authorize: '授權', - creating: '正在建立...', - verifying: '驗證中…', - authorizing: '授權中…', - }, - oauthRedirectInfo: '由於未找到此工具提供者的系統用戶端密鑰,需要手動設定,至於 redirect_uri,請使用', - apiKey: { - title: '使用 API 金鑰創建', - verify: { - title: '驗證憑證', - description: '請提供您的 API 憑證以驗證存取權限', - error: '憑證驗證失敗。請檢查您的 API 金鑰。', - success: '憑證驗證成功', - }, - configuration: { - title: '設定訂閱', - description: '設定您的訂閱參數', - }, - }, - oauth: { - title: '使用 OAuth 創建', - authorization: { - title: 'OAuth 授權', - description: '授權 Dify 存取您的帳戶', - redirectUrl: '重新導向網址', - redirectUrlHelp: '在您的 OAuth 應用程式設定中使用此 URL', - authorizeButton: '使用 {{provider}} 授權', - waitingAuth: '等待授權中...', - authSuccess: '授權成功', - authFailed: '無法取得 OAuth 認證資訊', - waitingJump: '已授權,等待起跳', - }, - configuration: { - title: '設定訂閱', - description: '授權後設定您的訂閱參數', - success: 'OAuth 配置成功', - failed: 'OAuth 配置失敗', - }, - remove: { - success: 'OAuth 移除成功', - failed: 'OAuth 移除失敗', - }, - save: { - success: 'OAuth 設定已成功保存', - }, - }, - manual: { - title: '手動設定', - description: '手動配置您的 Webhook 訂閱', - logs: { - title: '請求日誌', - request: '請求', - loading: '正在等待來自 {{pluginName}} 的請求...', - }, - }, - form: { - subscriptionName: { - label: '訂閱名稱', - placeholder: '輸入訂閱名稱', - required: '需要訂閱名稱', - }, - callbackUrl: { - label: '回呼網址', - description: '此 URL 將接收 webhook 事件', - tooltip: '提供一個可公開訪問的端點,以接收來自觸發提供者的回調請求。', - placeholder: '生成中...', - privateAddressWarning: '此 URL 似乎是內部位址,可能會導致 webhook 請求失敗。您可以將 TRIGGER_URL 更改為公開位址。', - }, - }, - errors: { - createFailed: '建立訂閱失敗', - verifyFailed: '驗證憑證失敗', - authFailed: '授權失敗', - networkError: '網絡錯誤,請再試一次', - }, - }, - events: { - title: '可用活動', - description: '此觸發插件可以訂閱的事件', - empty: '沒有可用的活動', - event: '活動', - events: '活動', - actionNum: '{{num}} {{event}} 已包含', - item: { - parameters: '{{count}} 參數', - noParameters: '無參數', - }, - output: '輸出', - }, - node: { - status: { - warning: '斷開連接', - }, - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/plugin.json b/web/i18n/zh-Hant/plugin.json new file mode 100644 index 0000000000..696db82a4a --- /dev/null +++ b/web/i18n/zh-Hant/plugin.json @@ -0,0 +1,323 @@ +{ + "category": { + "tools": "工具", + "models": "模型", + "extensions": "擴展", + "agents": "代理策略", + "all": "都", + "bundles": "束", + "datasources": "資料來源", + "triggers": "觸發因素" + }, + "categorySingle": { + "model": "型", + "extension": "外延", + "agent": "代理策略", + "tool": "工具", + "bundle": "捆", + "datasource": "資料來源", + "trigger": "觸發器" + }, + "list": { + "source": { + "local": "從本地包檔安裝", + "github": "從 GitHub 安裝", + "marketplace": "從 Marketplace 安裝" + }, + "noInstalled": "未安裝插件", + "notFound": "未找到插件" + }, + "source": { + "marketplace": "市場", + "local": "本地包檔", + "github": "GitHub 的" + }, + "detailPanel": { + "categoryTip": { + "marketplace": "從 Marketplace 安裝", + "debugging": "調試插件", + "github": "從 Github 安裝", + "local": "本地插件" + }, + "operation": { + "info": "插件資訊", + "detail": "詳", + "remove": "刪除", + "install": "安裝", + "viewDetail": "查看詳情", + "update": "更新", + "checkUpdate": "檢查更新", + "back": "返回" + }, + "toolSelector": { + "uninstalledContent": "此插件是從 local/GitHub 儲存庫安裝的。請在安裝後使用。", + "descriptionLabel": "工具描述", + "params": "推理配置", + "paramsTip2": "當 'Automatic' 關閉時,使用預設值。", + "descriptionPlaceholder": "工具用途的簡要描述,例如,獲取特定位置的溫度。", + "toolLabel": "工具", + "unsupportedTitle": "不支援的作", + "placeholder": "選擇工具...", + "uninstalledTitle": "未安裝工具", + "auto": "自動", + "title": "新增工具", + "unsupportedContent": "已安裝的插件版本不提供此作。", + "settings": "用戶設置", + "uninstalledLink": "在插件中管理", + "empty": "點擊 『+』 按鈕新增工具。您可以新增多個工具。", + "unsupportedContent2": "按兩下以切換版本。", + "paramsTip1": "控制 LLM 推理參數。", + "toolSetting": "工具設定", + "unsupportedMCPTool": "目前選定的代理策略插件版本不支持 MCP 工具。" + }, + "actionNum": "{{num}}{{作}}包括", + "switchVersion": "Switch 版本", + "strategyNum": "{{num}}{{策略}}包括", + "endpoints": "端點", + "endpointDisableTip": "禁用端點", + "endpointsTip": "此插件通過終端節點提供特定功能,您可以為當前工作區配置多個終端節點集。", + "modelNum": "{{num}}包含的型號", + "endpointsEmpty": "按兩下「+」按鈕新增端點", + "endpointDisableContent": "您想禁用 {{name}} 嗎?", + "configureApp": "配置 App", + "endpointDeleteContent": "您想刪除 {{name}} 嗎?", + "configureTool": "配置工具", + "endpointModalDesc": "配置后,即可使用插件通過 API 端點提供的功能。", + "disabled": "禁用", + "serviceOk": "服務正常", + "endpointDeleteTip": "刪除端點", + "configureModel": "配置模型", + "endpointModalTitle": "設置終端節點", + "endpointsDocLink": "查看文件", + "deprecation": { + "reason": { + "businessAdjustments": "業務調整", + "ownershipTransferred": "所有權轉移", + "noMaintainer": "沒有維護者" + }, + "noReason": "此插件已被廢棄,將不再進行更新。", + "onlyReason": "此插件因為 {{deprecatedReason}} 而被棄用,將不再更新。", + "fullMessage": "由於 {{deprecatedReason}},此插件已被棄用,將不再更新。請改用 {{-alternativePluginId}}。" + } + }, + "debugInfo": { + "viewDocs": "查看文件", + "title": "調試" + }, + "privilege": { + "whoCanDebug": "誰可以調試插件?", + "whoCanInstall": "誰可以安裝和管理插件?", + "noone": "沒人", + "title": "插件首選項", + "everyone": "每個人 都", + "admins": "管理員" + }, + "pluginInfoModal": { + "repository": "存儲庫", + "release": "釋放", + "title": "插件資訊", + "packageName": "包" + }, + "action": { + "deleteContentRight": "插件?", + "deleteContentLeft": "是否要刪除", + "usedInApps": "此插件正在 {{num}} 個應用程式中使用。", + "pluginInfo": "插件資訊", + "checkForUpdates": "檢查更新", + "delete": "刪除插件" + }, + "installModal": { + "labels": { + "repository": "存儲庫", + "version": "版本", + "package": "包" + }, + "readyToInstallPackage": "即將安裝以下插件", + "back": "返回", + "installFailed": "安裝失敗", + "readyToInstallPackages": "即將安裝以下 {{num}} 個插件", + "next": "下一個", + "dropPluginToInstall": "將插件包拖放到此處進行安裝", + "pluginLoadError": "插件載入錯誤", + "installedSuccessfully": "安裝成功", + "uploadFailed": "上傳失敗", + "installFailedDesc": "插件安裝失敗。", + "fromTrustSource": "請確保您只從受信任的來源安裝插件。", + "pluginLoadErrorDesc": "此插件將不會被安裝", + "installComplete": "安裝完成", + "install": "安裝", + "installedSuccessfullyDesc": "插件已成功安裝。", + "close": "關閉", + "uploadingPackage": "正在上傳 {{packageName}}...", + "readyToInstall": "即將安裝以下插件", + "cancel": "取消", + "installPlugin": "安裝插件", + "installing": "安裝。。。", + "installWarning": "此插件不允許安裝。" + }, + "installFromGitHub": { + "gitHubRepo": "GitHub 儲存庫", + "selectPackagePlaceholder": "請選擇一個套餐", + "installFailed": "安裝失敗", + "uploadFailed": "上傳失敗", + "selectVersion": "選擇版本", + "selectVersionPlaceholder": "請選擇一個版本", + "updatePlugin": "從 GitHub 更新插件", + "installPlugin": "從 GitHub 安裝插件", + "installedSuccessfully": "安裝成功", + "selectPackage": "選擇套餐", + "installNote": "請確保您只從受信任的來源安裝插件。" + }, + "upgrade": { + "close": "關閉", + "title": "安裝插件", + "upgrade": "安裝", + "upgrading": "安裝。。。", + "description": "即將安裝以下插件", + "usedInApps": "用於 {{num}} 個應用", + "successfulTitle": "安裝成功" + }, + "error": { + "noReleasesFound": "未找到版本。請檢查 GitHub 儲存庫或輸入 URL。", + "fetchReleasesError": "無法檢索發行版。請稍後重試。", + "inValidGitHubUrl": "GitHub URL 無效。請輸入有效的 URL,格式為:https://github.com/owner/repo" + }, + "marketplace": { + "sortOption": { + "recentlyUpdated": "最近更新", + "newlyReleased": "新發佈", + "firstReleased": "首次發佈", + "mostPopular": "最受歡迎" + }, + "discover": "發現", + "noPluginFound": "未找到插件", + "empower": "為您的 AI 開發提供支援", + "moreFrom": "來自 Marketplace 的更多內容", + "and": "和", + "sortBy": "排序方式", + "viewMore": "查看更多", + "difyMarketplace": "Dify 市場", + "pluginsResult": "{{num}} 個結果", + "verifiedTip": "由 Dify 驗證", + "partnerTip": "由 Dify 合作夥伴驗證" + }, + "task": { + "installingWithError": "安裝 {{installingLength}} 個插件,{{successLength}} 成功,{{errorLength}} 失敗", + "installedError": "{{errorLength}} 個插件安裝失敗", + "installError": "{{errorLength}} 個插件安裝失敗,點擊查看", + "installingWithSuccess": "安裝 {{installingLength}} 個插件,{{successLength}} 成功。", + "clearAll": "全部清除", + "installing": "安裝 {{installingLength}} 個插件,0 個完成。", + "installSuccess": "{{successLength}} plugins installed successfully", + "installed": "Installed", + "runningPlugins": "Installing Plugins", + "successPlugins": "Successfully Installed Plugins", + "errorPlugins": "Failed to Install Plugins" + }, + "requestAPlugin": "申请插件", + "publishPlugins": "發佈插件", + "findMoreInMarketplace": "在 Marketplace 中查找更多內容", + "installPlugin": "安裝插件", + "search": "搜索", + "allCategories": "全部分類", + "from": "從", + "searchPlugins": "搜索插件", + "searchTools": "搜尋工具...", + "installAction": "安裝", + "installFrom": "安裝起始位置", + "searchInMarketplace": "在 Marketplace 中搜索", + "install": "{{num}} 次安裝", + "endpointsEnabled": "{{num}} 組已啟用端點", + "fromMarketplace": "從 Marketplace", + "searchCategories": "搜索類別", + "metadata": { + "title": "插件" + }, + "difyVersionNotCompatible": "當前的 Dify 版本與此插件不兼容,請升級至所需的最低版本:{{minimalDifyVersion}}", + "auth": { + "setDefault": "設置為默認", + "useOAuth": "使用 OAuth", + "saveAndAuth": "保存並授權", + "oauthClientSettings": "OAuth 客戶端設置", + "setupOAuth": "設置 OAuth 客戶端", + "saveOnly": "僅保存", + "addApi": "新增 API 金鑰", + "custom": "自訂", + "addOAuth": "新增 OAuth", + "useOAuthAuth": "使用 OAuth 授權", + "authorization": "授權", + "oauthClient": "OAuth 客戶端", + "authRemoved": "授權已被移除", + "authorizationName": "授權名稱", + "default": "默認", + "workspaceDefault": "工作區域默認", + "authorizations": "授權", + "useApiAuth": "API 金鑰授權配置", + "useApi": "使用 API 金鑰", + "clientInfo": "由於未找到此工具提供者的系統客戶端秘密,因此需要手動設置,對於 redirect_uri,請使用", + "useApiAuthDesc": "配置完憑證後,工作區內的所有成員在協調應用程式時都可以使用此工具。", + "unavailable": "無法使用", + "customCredentialUnavailable": "自訂憑證目前無法使用", + "credentialUnavailable": "凭證目前無法使用。請聯繫管理員。", + "credentialUnavailableInButton": "憑證不可用", + "emptyAuth": "請設定驗證", + "connectedWorkspace": "連線工作區" + }, + "deprecated": "不推薦使用的", + "autoUpdate": { + "strategy": { + "disabled": { + "description": "插件將不會自動更新", + "name": "殘疾的" + }, + "fixOnly": { + "name": "僅修理", + "selectedDescription": "僅限於修補版本的自動更新", + "description": "僅為補丁版本自動更新(例如:1.0.1 → 1.0.2)。次要版本變更不會觸發更新。" + }, + "latest": { + "description": "始終更新至最新版本", + "name": "最新", + "selectedDescription": "始終更新至最新版本" + } + }, + "upgradeMode": { + "all": "更新所有", + "exclude": "排除選定的", + "partial": "僅選擇" + }, + "upgradeModePlaceholder": { + "partial": "只有選定的插件會自動更新。目前未選定任何插件,因此不會自動更新任何插件。", + "exclude": "選定的插件將不會自動更新" + }, + "operation": { + "select": "選擇插件", + "clearAll": "清除所有" + }, + "pluginDowngradeWarning": { + "downgrade": "無論如何降級", + "title": "插件降級", + "exclude": "排除自動更新", + "description": "這個插件目前已啟用自動更新。降級版本可能會導致您的更改在下一次自動更新時被覆蓋。" + }, + "noPluginPlaceholder": { + "noInstalled": "沒有安裝插件", + "noFound": "未找到任何外掛" + }, + "automaticUpdates": "自動更新", + "updateTime": "更新時間", + "updateTimeTitle": "更新時間", + "updateSettings": "更新設定", + "partialUPdate": "只有以下 {{num}} 個插件將自動更新", + "excludeUpdate": "以下 {{num}} 個插件將不會自動更新", + "nextUpdateTime": "下次自動更新:{{time}}", + "specifyPluginsToUpdate": "指定要更新的插件", + "changeTimezone": "要更改時區,請前往設定" + }, + "readmeInfo": { + "title": "自述檔", + "needHelpCheckReadme": "需要幫忙嗎?查看自述檔。", + "noReadmeAvailable": "沒有可用的自述文件", + "failedToFetch": "無法獲取 README" + } +} diff --git a/web/i18n/zh-Hant/plugin.ts b/web/i18n/zh-Hant/plugin.ts deleted file mode 100644 index d2809f9971..0000000000 --- a/web/i18n/zh-Hant/plugin.ts +++ /dev/null @@ -1,325 +0,0 @@ -const translation = { - category: { - tools: '工具', - models: '模型', - extensions: '擴展', - agents: '代理策略', - all: '都', - bundles: '束', - datasources: '資料來源', - triggers: '觸發因素', - }, - categorySingle: { - model: '型', - extension: '外延', - agent: '代理策略', - tool: '工具', - bundle: '捆', - datasource: '資料來源', - trigger: '觸發器', - }, - list: { - source: { - local: '從本地包檔安裝', - github: '從 GitHub 安裝', - marketplace: '從 Marketplace 安裝', - }, - noInstalled: '未安裝插件', - notFound: '未找到插件', - }, - source: { - marketplace: '市場', - local: '本地包檔', - github: 'GitHub 的', - }, - detailPanel: { - categoryTip: { - marketplace: '從 Marketplace 安裝', - debugging: '調試插件', - github: '從 Github 安裝', - local: '本地插件', - }, - operation: { - info: '插件資訊', - detail: '詳', - remove: '刪除', - install: '安裝', - viewDetail: '查看詳情', - update: '更新', - checkUpdate: '檢查更新', - back: '返回', - }, - toolSelector: { - uninstalledContent: '此插件是從 local/GitHub 儲存庫安裝的。請在安裝後使用。', - descriptionLabel: '工具描述', - params: '推理配置', - paramsTip2: '當 \'Automatic\' 關閉時,使用預設值。', - descriptionPlaceholder: '工具用途的簡要描述,例如,獲取特定位置的溫度。', - toolLabel: '工具', - unsupportedTitle: '不支援的作', - placeholder: '選擇工具...', - uninstalledTitle: '未安裝工具', - auto: '自動', - title: '新增工具', - unsupportedContent: '已安裝的插件版本不提供此作。', - settings: '用戶設置', - uninstalledLink: '在插件中管理', - empty: '點擊 『+』 按鈕新增工具。您可以新增多個工具。', - unsupportedContent2: '按兩下以切換版本。', - paramsTip1: '控制 LLM 推理參數。', - toolSetting: '工具設定', - unsupportedMCPTool: '目前選定的代理策略插件版本不支持 MCP 工具。', - }, - actionNum: '{{num}}{{作}}包括', - switchVersion: 'Switch 版本', - strategyNum: '{{num}}{{策略}}包括', - endpoints: '端點', - endpointDisableTip: '禁用端點', - endpointsTip: '此插件通過終端節點提供特定功能,您可以為當前工作區配置多個終端節點集。', - modelNum: '{{num}}包含的型號', - endpointsEmpty: '按兩下「+」按鈕新增端點', - endpointDisableContent: '您想禁用 {{name}} 嗎?', - configureApp: '配置 App', - endpointDeleteContent: '您想刪除 {{name}} 嗎?', - configureTool: '配置工具', - endpointModalDesc: '配置后,即可使用插件通過 API 端點提供的功能。', - disabled: '禁用', - serviceOk: '服務正常', - endpointDeleteTip: '刪除端點', - configureModel: '配置模型', - endpointModalTitle: '設置終端節點', - endpointsDocLink: '查看文件', - deprecation: { - reason: { - businessAdjustments: '業務調整', - ownershipTransferred: '所有權轉移', - noMaintainer: '沒有維護者', - }, - noReason: '此插件已被廢棄,將不再進行更新。', - onlyReason: '此插件因為 {{deprecatedReason}} 而被棄用,將不再更新。', - fullMessage: '由於 {{deprecatedReason}},此插件已被棄用,將不再更新。請改用 {{-alternativePluginId}}。', - }, - }, - debugInfo: { - viewDocs: '查看文件', - title: '調試', - }, - privilege: { - whoCanDebug: '誰可以調試插件?', - whoCanInstall: '誰可以安裝和管理插件?', - noone: '沒人', - title: '插件首選項', - everyone: '每個人 都', - admins: '管理員', - }, - pluginInfoModal: { - repository: '存儲庫', - release: '釋放', - title: '插件資訊', - packageName: '包', - }, - action: { - deleteContentRight: '插件?', - deleteContentLeft: '是否要刪除', - usedInApps: '此插件正在 {{num}} 個應用程式中使用。', - pluginInfo: '插件資訊', - checkForUpdates: '檢查更新', - delete: '刪除插件', - }, - installModal: { - labels: { - repository: '存儲庫', - version: '版本', - package: '包', - }, - readyToInstallPackage: '即將安裝以下插件', - back: '返回', - installFailed: '安裝失敗', - readyToInstallPackages: '即將安裝以下 {{num}} 個插件', - next: '下一個', - dropPluginToInstall: '將插件包拖放到此處進行安裝', - pluginLoadError: '插件載入錯誤', - installedSuccessfully: '安裝成功', - uploadFailed: '上傳失敗', - installFailedDesc: '插件安裝失敗。', - fromTrustSource: '請確保您只從受信任的來源安裝插件。', - pluginLoadErrorDesc: '此插件將不會被安裝', - installComplete: '安裝完成', - install: '安裝', - installedSuccessfullyDesc: '插件已成功安裝。', - close: '關閉', - uploadingPackage: '正在上傳 {{packageName}}...', - readyToInstall: '即將安裝以下插件', - cancel: '取消', - installPlugin: '安裝插件', - installing: '安裝。。。', - installWarning: '此插件不允許安裝。', - }, - installFromGitHub: { - gitHubRepo: 'GitHub 儲存庫', - selectPackagePlaceholder: '請選擇一個套餐', - installFailed: '安裝失敗', - uploadFailed: '上傳失敗', - selectVersion: '選擇版本', - selectVersionPlaceholder: '請選擇一個版本', - updatePlugin: '從 GitHub 更新插件', - installPlugin: '從 GitHub 安裝插件', - installedSuccessfully: '安裝成功', - selectPackage: '選擇套餐', - installNote: '請確保您只從受信任的來源安裝插件。', - }, - upgrade: { - close: '關閉', - title: '安裝插件', - upgrade: '安裝', - upgrading: '安裝。。。', - description: '即將安裝以下插件', - usedInApps: '用於 {{num}} 個應用', - successfulTitle: '安裝成功', - }, - error: { - noReleasesFound: '未找到版本。請檢查 GitHub 儲存庫或輸入 URL。', - fetchReleasesError: '無法檢索發行版。請稍後重試。', - inValidGitHubUrl: 'GitHub URL 無效。請輸入有效的 URL,格式為:https://github.com/owner/repo', - }, - marketplace: { - sortOption: { - recentlyUpdated: '最近更新', - newlyReleased: '新發佈', - firstReleased: '首次發佈', - mostPopular: '最受歡迎', - }, - discover: '發現', - noPluginFound: '未找到插件', - empower: '為您的 AI 開發提供支援', - moreFrom: '來自 Marketplace 的更多內容', - and: '和', - sortBy: '排序方式', - viewMore: '查看更多', - difyMarketplace: 'Dify 市場', - pluginsResult: '{{num}} 個結果', - verifiedTip: '由 Dify 驗證', - partnerTip: '由 Dify 合作夥伴驗證', - }, - task: { - installingWithError: '安裝 {{installingLength}} 個插件,{{successLength}} 成功,{{errorLength}} 失敗', - installedError: '{{errorLength}} 個插件安裝失敗', - installError: '{{errorLength}} 個插件安裝失敗,點擊查看', - installingWithSuccess: '安裝 {{installingLength}} 個插件,{{successLength}} 成功。', - clearAll: '全部清除', - installing: '安裝 {{installingLength}} 個插件,0 個完成。', - installSuccess: '{{successLength}} plugins installed successfully', - installed: 'Installed', - runningPlugins: 'Installing Plugins', - successPlugins: 'Successfully Installed Plugins', - errorPlugins: 'Failed to Install Plugins', - }, - requestAPlugin: '申请插件', - publishPlugins: '發佈插件', - findMoreInMarketplace: '在 Marketplace 中查找更多內容', - installPlugin: '安裝插件', - search: '搜索', - allCategories: '全部分類', - from: '從', - searchPlugins: '搜索插件', - searchTools: '搜尋工具...', - installAction: '安裝', - installFrom: '安裝起始位置', - searchInMarketplace: '在 Marketplace 中搜索', - install: '{{num}} 次安裝', - endpointsEnabled: '{{num}} 組已啟用端點', - fromMarketplace: '從 Marketplace', - searchCategories: '搜索類別', - metadata: { - title: '插件', - }, - difyVersionNotCompatible: '當前的 Dify 版本與此插件不兼容,請升級至所需的最低版本:{{minimalDifyVersion}}', - auth: { - setDefault: '設置為默認', - useOAuth: '使用 OAuth', - saveAndAuth: '保存並授權', - oauthClientSettings: 'OAuth 客戶端設置', - setupOAuth: '設置 OAuth 客戶端', - saveOnly: '僅保存', - addApi: '新增 API 金鑰', - custom: '自訂', - addOAuth: '新增 OAuth', - useOAuthAuth: '使用 OAuth 授權', - authorization: '授權', - oauthClient: 'OAuth 客戶端', - authRemoved: '授權已被移除', - authorizationName: '授權名稱', - default: '默認', - workspaceDefault: '工作區域默認', - authorizations: '授權', - useApiAuth: 'API 金鑰授權配置', - useApi: '使用 API 金鑰', - clientInfo: '由於未找到此工具提供者的系統客戶端秘密,因此需要手動設置,對於 redirect_uri,請使用', - useApiAuthDesc: '配置完憑證後,工作區內的所有成員在協調應用程式時都可以使用此工具。', - unavailable: '無法使用', - customCredentialUnavailable: '自訂憑證目前無法使用', - credentialUnavailable: '凭證目前無法使用。請聯繫管理員。', - credentialUnavailableInButton: '憑證不可用', - emptyAuth: '請設定驗證', - connectedWorkspace: '連線工作區', - }, - deprecated: '不推薦使用的', - autoUpdate: { - strategy: { - disabled: { - description: '插件將不會自動更新', - name: '殘疾的', - }, - fixOnly: { - name: '僅修理', - selectedDescription: '僅限於修補版本的自動更新', - description: '僅為補丁版本自動更新(例如:1.0.1 → 1.0.2)。次要版本變更不會觸發更新。', - }, - latest: { - description: '始終更新至最新版本', - name: '最新', - selectedDescription: '始終更新至最新版本', - }, - }, - upgradeMode: { - all: '更新所有', - exclude: '排除選定的', - partial: '僅選擇', - }, - upgradeModePlaceholder: { - partial: '只有選定的插件會自動更新。目前未選定任何插件,因此不會自動更新任何插件。', - exclude: '選定的插件將不會自動更新', - }, - operation: { - select: '選擇插件', - clearAll: '清除所有', - }, - pluginDowngradeWarning: { - downgrade: '無論如何降級', - title: '插件降級', - exclude: '排除自動更新', - description: '這個插件目前已啟用自動更新。降級版本可能會導致您的更改在下一次自動更新時被覆蓋。', - }, - noPluginPlaceholder: { - noInstalled: '沒有安裝插件', - noFound: '未找到任何外掛', - }, - automaticUpdates: '自動更新', - updateTime: '更新時間', - updateTimeTitle: '更新時間', - updateSettings: '更新設定', - partialUPdate: '只有以下 {{num}} 個插件將自動更新', - excludeUpdate: '以下 {{num}} 個插件將不會自動更新', - nextUpdateTime: '下次自動更新:{{time}}', - specifyPluginsToUpdate: '指定要更新的插件', - changeTimezone: '要更改時區,請前往設定', - }, - readmeInfo: { - title: '自述檔', - needHelpCheckReadme: '需要幫忙嗎?查看自述檔。', - noReadmeAvailable: '沒有可用的自述文件', - failedToFetch: '無法獲取 README', - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/register.json b/web/i18n/zh-Hant/register.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/web/i18n/zh-Hant/register.json @@ -0,0 +1 @@ +{} diff --git a/web/i18n/zh-Hant/register.ts b/web/i18n/zh-Hant/register.ts deleted file mode 100644 index 928649474b..0000000000 --- a/web/i18n/zh-Hant/register.ts +++ /dev/null @@ -1,4 +0,0 @@ -const translation = { -} - -export default translation diff --git a/web/i18n/zh-Hant/run-log.json b/web/i18n/zh-Hant/run-log.json new file mode 100644 index 0000000000..98759bc926 --- /dev/null +++ b/web/i18n/zh-Hant/run-log.json @@ -0,0 +1,29 @@ +{ + "input": "輸入", + "result": "結果", + "detail": "詳情", + "tracing": "追蹤", + "resultPanel": { + "status": "狀態", + "time": "執行時間", + "tokens": "總 token 數" + }, + "meta": { + "title": "元資料", + "status": "狀態", + "version": "版本", + "executor": "執行人", + "startTime": "開始時間", + "time": "執行時間", + "tokens": "總 token 數", + "steps": "執行步數" + }, + "resultEmpty": { + "title": "本運行僅輸出 JSON 格式,", + "tipLeft": "請到", + "link": "詳細資訊面板", + "tipRight": "查看它。" + }, + "circularInvocationTip": "當前工作流中存在工具/節點的迴圈調用。", + "actionLogs": "作日誌" +} diff --git a/web/i18n/zh-Hant/run-log.ts b/web/i18n/zh-Hant/run-log.ts deleted file mode 100644 index c3bfb54731..0000000000 --- a/web/i18n/zh-Hant/run-log.ts +++ /dev/null @@ -1,31 +0,0 @@ -const translation = { - input: '輸入', - result: '結果', - detail: '詳情', - tracing: '追蹤', - resultPanel: { - status: '狀態', - time: '執行時間', - tokens: '總 token 數', - }, - meta: { - title: '元資料', - status: '狀態', - version: '版本', - executor: '執行人', - startTime: '開始時間', - time: '執行時間', - tokens: '總 token 數', - steps: '執行步數', - }, - resultEmpty: { - title: '本運行僅輸出 JSON 格式,', - tipLeft: '請到', - link: '詳細資訊面板', - tipRight: '查看它。', - }, - circularInvocationTip: '當前工作流中存在工具/節點的迴圈調用。', - actionLogs: '作日誌', -} - -export default translation diff --git a/web/i18n/zh-Hant/share.json b/web/i18n/zh-Hant/share.json new file mode 100644 index 0000000000..fce9955245 --- /dev/null +++ b/web/i18n/zh-Hant/share.json @@ -0,0 +1,80 @@ +{ + "common": { + "welcome": "", + "appUnavailable": "應用不可用", + "appUnknownError": "應用不可用" + }, + "chat": { + "newChat": "新對話", + "pinnedTitle": "已置頂", + "unpinnedTitle": "對話列表", + "newChatDefaultName": "新的對話", + "resetChat": "重置對話", + "poweredBy": "Powered by", + "prompt": "提示詞", + "privatePromptConfigTitle": "對話設定", + "publicPromptConfigTitle": "對話前提示詞", + "configStatusDes": "開始前,您可以修改對話設定", + "configDisabled": "此次會話已使用上次會話表單", + "startChat": "開始對話", + "privacyPolicyLeft": "請閱讀由該應用開發者提供的", + "privacyPolicyMiddle": "隱私政策", + "privacyPolicyRight": "。", + "deleteConversation": { + "title": "刪除對話", + "content": "您確定要刪除此對話嗎?" + }, + "tryToSolve": "嘗試解決", + "temporarySystemIssue": "抱歉,臨時系統問題。", + "expand": "展開", + "collapse": "摺疊", + "newChatTip": "已經在一個新聊天中", + "chatSettingsTitle": "新的聊天設置", + "chatFormTip": "聊天設定在聊天開始後無法修改。", + "viewChatSettings": "查看聊天設定" + }, + "generation": { + "tabs": { + "create": "執行一次", + "batch": "批次執行", + "saved": "已儲存" + }, + "savedNoData": { + "title": "您還沒有儲存結果!", + "description": "開始生成內容,您可以在這裡找到儲存的結果。", + "startCreateContent": "開始生成內容" + }, + "title": "AI 智慧書寫", + "queryTitle": "查詢內容", + "completionResult": "生成結果", + "queryPlaceholder": "請輸入文字內容", + "run": "執行", + "copy": "複製", + "resultTitle": "AI 書寫", + "noData": "AI 會在這裡給你驚喜。", + "csvUploadTitle": "將您的 CSV 檔案拖放到此處,或", + "browse": "瀏覽", + "csvStructureTitle": "CSV 檔案必須符合以下結構:", + "downloadTemplate": "下載模板", + "field": "", + "batchFailed": { + "info": "{{num}} 次執行失敗", + "retry": "重試", + "outputPlaceholder": "無輸出內容" + }, + "errorMsg": { + "empty": "上傳檔案的內容不能為空", + "fileStructNotMatch": "上傳檔案的內容與結構不匹配", + "emptyLine": "第 {{rowIndex}} 行的內容為空", + "invalidLine": "第 {{rowIndex}} 行:{{varName}}值必填", + "moreThanMaxLengthLine": "第 {{rowIndex}} 行:{{varName}}值超過最大長度 {{maxLength}}", + "atLeastOne": "上傳檔案的內容不能少於一條" + }, + "execution": "執行", + "executions": "{{num}} 次執行", + "stopRun": "停止運行" + }, + "login": { + "backToHome": "返回首頁" + } +} diff --git a/web/i18n/zh-Hant/share.ts b/web/i18n/zh-Hant/share.ts deleted file mode 100644 index afafbb4e35..0000000000 --- a/web/i18n/zh-Hant/share.ts +++ /dev/null @@ -1,82 +0,0 @@ -const translation = { - common: { - welcome: '', - appUnavailable: '應用不可用', - appUnknownError: '應用不可用', - }, - chat: { - newChat: '新對話', - pinnedTitle: '已置頂', - unpinnedTitle: '對話列表', - newChatDefaultName: '新的對話', - resetChat: '重置對話', - poweredBy: 'Powered by', - prompt: '提示詞', - privatePromptConfigTitle: '對話設定', - publicPromptConfigTitle: '對話前提示詞', - configStatusDes: '開始前,您可以修改對話設定', - configDisabled: '此次會話已使用上次會話表單', - startChat: '開始對話', - privacyPolicyLeft: '請閱讀由該應用開發者提供的', - privacyPolicyMiddle: '隱私政策', - privacyPolicyRight: '。', - deleteConversation: { - title: '刪除對話', - content: '您確定要刪除此對話嗎?', - }, - tryToSolve: '嘗試解決', - temporarySystemIssue: '抱歉,臨時系統問題。', - expand: '展開', - collapse: '摺疊', - newChatTip: '已經在一個新聊天中', - chatSettingsTitle: '新的聊天設置', - chatFormTip: '聊天設定在聊天開始後無法修改。', - viewChatSettings: '查看聊天設定', - }, - generation: { - tabs: { - create: '執行一次', - batch: '批次執行', - saved: '已儲存', - }, - savedNoData: { - title: '您還沒有儲存結果!', - description: '開始生成內容,您可以在這裡找到儲存的結果。', - startCreateContent: '開始生成內容', - }, - title: 'AI 智慧書寫', - queryTitle: '查詢內容', - completionResult: '生成結果', - queryPlaceholder: '請輸入文字內容', - run: '執行', - copy: '複製', - resultTitle: 'AI 書寫', - noData: 'AI 會在這裡給你驚喜。', - csvUploadTitle: '將您的 CSV 檔案拖放到此處,或', - browse: '瀏覽', - csvStructureTitle: 'CSV 檔案必須符合以下結構:', - downloadTemplate: '下載模板', - field: '', - batchFailed: { - info: '{{num}} 次執行失敗', - retry: '重試', - outputPlaceholder: '無輸出內容', - }, - errorMsg: { - empty: '上傳檔案的內容不能為空', - fileStructNotMatch: '上傳檔案的內容與結構不匹配', - emptyLine: '第 {{rowIndex}} 行的內容為空', - invalidLine: '第 {{rowIndex}} 行:{{varName}}值必填', - moreThanMaxLengthLine: '第 {{rowIndex}} 行:{{varName}}值超過最大長度 {{maxLength}}', - atLeastOne: '上傳檔案的內容不能少於一條', - }, - execution: '執行', - executions: '{{num}} 次執行', - stopRun: '停止運行', - }, - login: { - backToHome: '返回首頁', - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/time.json b/web/i18n/zh-Hant/time.json new file mode 100644 index 0000000000..efeed91278 --- /dev/null +++ b/web/i18n/zh-Hant/time.json @@ -0,0 +1,42 @@ +{ + "daysInWeek": { + "Sun": "日", + "Mon": "一", + "Tue": "二", + "Wed": "三", + "Thu": "四", + "Fri": "五", + "Sat": "六" + }, + "months": { + "January": "一月", + "June": "六月", + "March": "三月", + "February": "二月", + "August": "八月", + "April": "四月", + "May": "五月", + "July": "七月", + "November": "十一月", + "December": "十二月", + "September": "九月", + "October": "十月" + }, + "operation": { + "cancel": "取消", + "now": "現在", + "ok": "好", + "pickDate": "選擇日期" + }, + "title": { + "pickTime": "選擇時間" + }, + "defaultPlaceholder": "選擇一個時間...", + "dateFormats": { + "display": "MMMM D, YYYY", + "output": "YYYY-MM-DD", + "displayWithTime": "MMMM D, YYYY hh:mm A", + "input": "YYYY-MM-DD", + "outputWithTime": "YYYY年MM月DD日 HH:mm:ss.SSSZ" + } +} diff --git a/web/i18n/zh-Hant/time.ts b/web/i18n/zh-Hant/time.ts deleted file mode 100644 index 1c8660161a..0000000000 --- a/web/i18n/zh-Hant/time.ts +++ /dev/null @@ -1,44 +0,0 @@ -const translation = { - daysInWeek: { - Sun: '日', - Mon: '一', - Tue: '二', - Wed: '三', - Thu: '四', - Fri: '五', - Sat: '六', - }, - months: { - January: '一月', - June: '六月', - March: '三月', - February: '二月', - August: '八月', - April: '四月', - May: '五月', - July: '七月', - November: '十一月', - December: '十二月', - September: '九月', - October: '十月', - }, - operation: { - cancel: '取消', - now: '現在', - ok: '好', - pickDate: '選擇日期', - }, - title: { - pickTime: '選擇時間', - }, - defaultPlaceholder: '選擇一個時間...', - dateFormats: { - display: 'MMMM D, YYYY', - output: 'YYYY-MM-DD', - displayWithTime: 'MMMM D, YYYY hh:mm A', - input: 'YYYY-MM-DD', - outputWithTime: 'YYYY年MM月DD日 HH:mm:ss.SSSZ', - }, -} - -export default translation diff --git a/web/i18n/zh-Hant/tools.json b/web/i18n/zh-Hant/tools.json new file mode 100644 index 0000000000..ce9be389f7 --- /dev/null +++ b/web/i18n/zh-Hant/tools.json @@ -0,0 +1,262 @@ +{ + "title": "工具", + "createCustomTool": "建立自定義工具", + "type": { + "builtIn": "內建", + "custom": "自定義", + "workflow": "工作流" + }, + "contribute": { + "line1": "我有興趣為 ", + "line2": "Dify 貢獻工具。", + "viewGuide": "檢視指南" + }, + "author": "作者", + "auth": { + "authorized": "已授權", + "setup": "要使用請先授權", + "setupModalTitle": "設定授權", + "setupModalTitleDescription": "配置憑據後,工作區中的所有成員都可以在編排應用程式時使用此工具。" + }, + "includeToolNum": "包含 {{num}} 個工具", + "createTool": { + "title": "建立自定義工具", + "editAction": "編輯", + "editTitle": "編輯自定義工具", + "name": "名稱", + "toolNamePlaceHolder": "輸入工具名稱", + "schema": "Schema", + "schemaPlaceHolder": "在此處輸入您的 OpenAPI schema", + "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": "無", + "apiKeyPlaceholder": "HTTP 頭部名稱,用於傳遞 API Key", + "apiValuePlaceholder": "輸入 API Key", + "api_key_query": "查詢參數", + "queryParamPlaceholder": "API 金鑰的查詢參數名稱", + "api_key_header": "標題" + }, + "key": "鍵", + "value": "值", + "queryParam": "查詢參數", + "queryParamTooltip": "要傳遞的 API 金鑰查詢參數的名稱,例如在 \"https://example.com/test?key=API_KEY\" 中的 \"key\"。" + }, + "authHeaderPrefix": { + "title": "鑑權頭部字首", + "types": { + "basic": "Basic", + "bearer": "Bearer", + "custom": "Custom" + } + }, + "privacyPolicy": "隱私協議", + "privacyPolicyPlaceholder": "請輸入隱私協議", + "customDisclaimer": "自定義免責聲明", + "customDisclaimerPlaceholder": "請輸入自定義免責聲明", + "deleteToolConfirmTitle": "刪除這個工具?", + "deleteToolConfirmContent": "刪除工具是不可逆的。用戶將無法再訪問您的工具。", + "toolInput": { + "labelPlaceholder": "選擇標籤(選擇標籤)", + "label": "標籤", + "required": "必填", + "methodSettingTip": "用戶填寫工具配置", + "name": "名字", + "description": "描述", + "methodParameterTip": "推理期間 LLM 填充", + "method": "方法", + "title": "工具輸入", + "methodSetting": "設置", + "methodParameter": "參數", + "descriptionPlaceholder": "參數含義的描述" + }, + "description": "描述", + "nameForToolCall": "工具調用名稱", + "confirmTitle": "確認儲存?", + "descriptionPlaceholder": "工具用途的簡要描述,例如,獲取特定位置的溫度。", + "nameForToolCallTip": "僅支援數位、字母和下劃線。", + "confirmTip": "使用此工具的應用程式將受到影響", + "nameForToolCallPlaceHolder": "用於機器識別,例如 getCurrentWeather、list_pets", + "toolOutput": { + "title": "工具輸出", + "name": "名稱", + "reserved": "已保留", + "reservedParameterDuplicateTip": "text、json 和 files 是保留變數。這些名稱的變數不能出現在輸出結構中。", + "description": "描述" + } + }, + "test": { + "title": "測試", + "parametersValue": "引數和值", + "parameters": "引數", + "value": "值", + "testResult": "測試結果", + "testResultPlaceholder": "測試結果將顯示在這裡" + }, + "thought": { + "using": "正在使用", + "used": "已使用", + "requestTitle": "請求來自", + "responseTitle": "響應來自" + }, + "setBuiltInTools": { + "info": "資訊", + "setting": "設定", + "toolDescription": "工具描述", + "parameters": "引數", + "string": "字串", + "number": "數字", + "required": "必填", + "infoAndSetting": "資訊和設定", + "file": "檔" + }, + "noCustomTool": { + "title": "沒有自定義工具!", + "content": "在此統一新增和管理你的自定義工具,方便構建應用時使用。", + "createTool": "建立工具" + }, + "noSearchRes": { + "title": "抱歉,沒有結果!", + "content": "我們找不到任何與您的搜尋相匹配的工具。", + "reset": "重置搜尋" + }, + "builtInPromptTitle": "提示詞", + "toolRemoved": "工具已被移除", + "notAuthorized": "工具未授權", + "howToGet": "如何獲取", + "addToolModal": { + "type": "類型", + "added": "新增", + "category": "類別", + "custom": { + "title": "沒有可用的自訂工具", + "tip": "創建一個自訂工具" + }, + "workflow": { + "title": "沒有可用的工作流程工具", + "tip": "在 Studio 中將工作流程發佈為工具" + }, + "mcp": { + "title": "沒有可用的 MCP 工具", + "tip": "新增一個 MCP 伺服器" + }, + "agent": { + "title": "沒有可用的代理策略" + } + }, + "customToolTip": "瞭解有關 Dify 自訂工具的更多資訊", + "toolNameUsageTip": "用於代理推理和提示的工具調用名稱", + "openInStudio": "在 Studio 中打開", + "noTools": "未找到工具", + "copyToolName": "複製名稱", + "mcp": { + "create": { + "cardTitle": "新增 MCP 伺服器 (HTTP)", + "cardLink": "了解更多關於 MCP 伺服器整合" + }, + "noConfigured": "未配置的伺服器", + "updateTime": "已更新", + "toolsCount": "{{count}} 個工具", + "noTools": "沒有可用的工具", + "modal": { + "title": "新增 MCP 伺服器 (HTTP)", + "editTitle": "編輯 MCP 伺服器 (HTTP)", + "name": "名稱與圖示", + "namePlaceholder": "為您的 MCP 伺服器命名", + "serverUrl": "伺服器 URL", + "serverUrlPlaceholder": "伺服器端點的 URL", + "serverUrlWarning": "更新伺服器地址可能會干擾依賴於此伺服器的應用程式", + "serverIdentifier": "伺服器識別碼", + "serverIdentifierTip": "在工作區內 MCP 伺服器的唯一識別碼。僅限小寫字母、數字、底線和連字符。最多 24 個字元。", + "serverIdentifierPlaceholder": "唯一識別碼,例如:my-mcp-server", + "serverIdentifierWarning": "更改 ID 之後,現有應用程式將無法識別伺服器", + "cancel": "取消", + "save": "儲存", + "confirm": "新增並授權", + "sseReadTimeout": "SSE 讀取超時", + "timeout": "超時", + "headerValue": "標題值", + "headerKey": "標題名稱", + "noHeaders": "沒有配置自定義標頭", + "timeoutPlaceholder": "三十", + "headerValuePlaceholder": "例如,承載者令牌123", + "addHeader": "新增標題", + "headerKeyPlaceholder": "例如,授權", + "headersTip": "與 MCP 伺服器請求一同發送的附加 HTTP 標頭", + "maskedHeadersTip": "標頭值已被遮罩以保障安全。更改將更新實際值。", + "headers": "標題", + "authentication": "身份驗證", + "clientID": "客戶編號", + "clientSecretPlaceholder": "客戶端密鑰", + "configurations": "設定", + "useDynamicClientRegistration": "使用動態客戶端註冊", + "clientSecret": "客戶端密鑰", + "redirectUrlWarning": "請將您的 OAuth 重新導向 URL 設定為:" + }, + "delete": "刪除 MCP 伺服器", + "deleteConfirmTitle": "您確定要刪除 {{mcp}} 嗎?", + "operation": { + "edit": "編輯", + "remove": "移除" + }, + "authorize": "授權", + "authorizing": "正在授權...", + "authorizingRequired": "需要授權", + "authorizeTip": "授權後,這裡將顯示工具。", + "update": "更新", + "updating": "更新中", + "gettingTools": "獲取工具...", + "updateTools": "更新工具...", + "toolsEmpty": "工具未加載", + "getTools": "獲取工具", + "toolUpdateConfirmTitle": "更新工具列表", + "toolUpdateConfirmContent": "更新工具列表可能會影響現有應用程式。您要繼續嗎?", + "toolsNum": "{{count}} 個工具包含", + "onlyTool": "包含 1 個工具", + "identifier": "伺服器識別碼 (點擊複製)", + "server": { + "title": "MCP 伺服器", + "url": "伺服器 URL", + "reGen": "您想要重新生成伺服器 URL 嗎?", + "addDescription": "新增描述", + "edit": "編輯描述", + "modal": { + "addTitle": "新增描述以啟用 MCP 伺服器", + "editTitle": "編輯描述", + "description": "描述", + "descriptionPlaceholder": "說明此工具的用途及如何被 LLM 使用", + "parameters": "參數", + "parametersTip": "為每個參數新增描述,以幫助 LLM 理解其目的和約束。", + "parametersPlaceholder": "參數的目的和約束", + "confirm": "啟用 MCP 伺服器" + }, + "publishTip": "應用程式尚未發布。請先發布應用程式。" + }, + "toolItem": { + "parameters": "參數", + "noDescription": "無描述" + } + }, + "allTools": "所有工具" +} diff --git a/web/i18n/zh-Hant/tools.ts b/web/i18n/zh-Hant/tools.ts deleted file mode 100644 index 65929a5992..0000000000 --- a/web/i18n/zh-Hant/tools.ts +++ /dev/null @@ -1,264 +0,0 @@ -const translation = { - title: '工具', - createCustomTool: '建立自定義工具', - type: { - builtIn: '內建', - custom: '自定義', - workflow: '工作流', - }, - contribute: { - line1: '我有興趣為 ', - line2: 'Dify 貢獻工具。', - viewGuide: '檢視指南', - }, - author: '作者', - auth: { - authorized: '已授權', - setup: '要使用請先授權', - setupModalTitle: '設定授權', - setupModalTitleDescription: '配置憑據後,工作區中的所有成員都可以在編排應用程式時使用此工具。', - }, - includeToolNum: '包含 {{num}} 個工具', - createTool: { - title: '建立自定義工具', - editAction: '編輯', - editTitle: '編輯自定義工具', - name: '名稱', - toolNamePlaceHolder: '輸入工具名稱', - schema: 'Schema', - schemaPlaceHolder: '在此處輸入您的 OpenAPI schema', - 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: '無', - apiKeyPlaceholder: 'HTTP 頭部名稱,用於傳遞 API Key', - apiValuePlaceholder: '輸入 API Key', - api_key_query: '查詢參數', - queryParamPlaceholder: 'API 金鑰的查詢參數名稱', - api_key_header: '標題', - }, - key: '鍵', - value: '值', - queryParam: '查詢參數', - queryParamTooltip: '要傳遞的 API 金鑰查詢參數的名稱,例如在 "https://example.com/test?key=API_KEY" 中的 "key"。', - }, - authHeaderPrefix: { - title: '鑑權頭部字首', - types: { - basic: 'Basic', - bearer: 'Bearer', - custom: 'Custom', - }, - }, - privacyPolicy: '隱私協議', - privacyPolicyPlaceholder: '請輸入隱私協議', - customDisclaimer: '自定義免責聲明', - customDisclaimerPlaceholder: '請輸入自定義免責聲明', - deleteToolConfirmTitle: '刪除這個工具?', - deleteToolConfirmContent: '刪除工具是不可逆的。用戶將無法再訪問您的工具。', - toolInput: { - labelPlaceholder: '選擇標籤(選擇標籤)', - label: '標籤', - required: '必填', - methodSettingTip: '用戶填寫工具配置', - name: '名字', - description: '描述', - methodParameterTip: '推理期間 LLM 填充', - method: '方法', - title: '工具輸入', - methodSetting: '設置', - methodParameter: '參數', - descriptionPlaceholder: '參數含義的描述', - }, - description: '描述', - nameForToolCall: '工具調用名稱', - confirmTitle: '確認儲存?', - descriptionPlaceholder: '工具用途的簡要描述,例如,獲取特定位置的溫度。', - nameForToolCallTip: '僅支援數位、字母和下劃線。', - confirmTip: '使用此工具的應用程式將受到影響', - nameForToolCallPlaceHolder: '用於機器識別,例如 getCurrentWeather、list_pets', - toolOutput: { - title: '工具輸出', - name: '名稱', - reserved: '已保留', - reservedParameterDuplicateTip: 'text、json 和 files 是保留變數。這些名稱的變數不能出現在輸出結構中。', - description: '描述', - }, - }, - test: { - title: '測試', - parametersValue: '引數和值', - parameters: '引數', - value: '值', - testResult: '測試結果', - testResultPlaceholder: '測試結果將顯示在這裡', - }, - thought: { - using: '正在使用', - used: '已使用', - requestTitle: '請求來自', - responseTitle: '響應來自', - }, - setBuiltInTools: { - info: '資訊', - setting: '設定', - toolDescription: '工具描述', - parameters: '引數', - string: '字串', - number: '數字', - required: '必填', - infoAndSetting: '資訊和設定', - file: '檔', - }, - noCustomTool: { - title: '沒有自定義工具!', - content: '在此統一新增和管理你的自定義工具,方便構建應用時使用。', - createTool: '建立工具', - }, - noSearchRes: { - title: '抱歉,沒有結果!', - content: '我們找不到任何與您的搜尋相匹配的工具。', - reset: '重置搜尋', - }, - builtInPromptTitle: '提示詞', - toolRemoved: '工具已被移除', - notAuthorized: '工具未授權', - howToGet: '如何獲取', - addToolModal: { - type: '類型', - added: '新增', - category: '類別', - custom: { - title: '沒有可用的自訂工具', - tip: '創建一個自訂工具', - }, - workflow: { - title: '沒有可用的工作流程工具', - tip: '在 Studio 中將工作流程發佈為工具', - }, - mcp: { - title: '沒有可用的 MCP 工具', - tip: '新增一個 MCP 伺服器', - }, - agent: { - title: '沒有可用的代理策略', - }, - }, - customToolTip: '瞭解有關 Dify 自訂工具的更多資訊', - toolNameUsageTip: '用於代理推理和提示的工具調用名稱', - openInStudio: '在 Studio 中打開', - noTools: '未找到工具', - copyToolName: '複製名稱', - mcp: { - create: { - cardTitle: '新增 MCP 伺服器 (HTTP)', - cardLink: '了解更多關於 MCP 伺服器整合', - }, - noConfigured: '未配置的伺服器', - updateTime: '已更新', - toolsCount: '{{count}} 個工具', - noTools: '沒有可用的工具', - modal: { - title: '新增 MCP 伺服器 (HTTP)', - editTitle: '編輯 MCP 伺服器 (HTTP)', - name: '名稱與圖示', - namePlaceholder: '為您的 MCP 伺服器命名', - serverUrl: '伺服器 URL', - serverUrlPlaceholder: '伺服器端點的 URL', - serverUrlWarning: '更新伺服器地址可能會干擾依賴於此伺服器的應用程式', - serverIdentifier: '伺服器識別碼', - serverIdentifierTip: '在工作區內 MCP 伺服器的唯一識別碼。僅限小寫字母、數字、底線和連字符。最多 24 個字元。', - serverIdentifierPlaceholder: '唯一識別碼,例如:my-mcp-server', - serverIdentifierWarning: '更改 ID 之後,現有應用程式將無法識別伺服器', - cancel: '取消', - save: '儲存', - confirm: '新增並授權', - sseReadTimeout: 'SSE 讀取超時', - timeout: '超時', - headerValue: '標題值', - headerKey: '標題名稱', - noHeaders: '沒有配置自定義標頭', - timeoutPlaceholder: '三十', - headerValuePlaceholder: '例如,承載者令牌123', - addHeader: '新增標題', - headerKeyPlaceholder: '例如,授權', - headersTip: '與 MCP 伺服器請求一同發送的附加 HTTP 標頭', - maskedHeadersTip: '標頭值已被遮罩以保障安全。更改將更新實際值。', - headers: '標題', - authentication: '身份驗證', - clientID: '客戶編號', - clientSecretPlaceholder: '客戶端密鑰', - configurations: '設定', - useDynamicClientRegistration: '使用動態客戶端註冊', - clientSecret: '客戶端密鑰', - redirectUrlWarning: '請將您的 OAuth 重新導向 URL 設定為:', - }, - delete: '刪除 MCP 伺服器', - deleteConfirmTitle: '您確定要刪除 {{mcp}} 嗎?', - operation: { - edit: '編輯', - remove: '移除', - }, - authorize: '授權', - authorizing: '正在授權...', - authorizingRequired: '需要授權', - authorizeTip: '授權後,這裡將顯示工具。', - update: '更新', - updating: '更新中', - gettingTools: '獲取工具...', - updateTools: '更新工具...', - toolsEmpty: '工具未加載', - getTools: '獲取工具', - toolUpdateConfirmTitle: '更新工具列表', - toolUpdateConfirmContent: '更新工具列表可能會影響現有應用程式。您要繼續嗎?', - toolsNum: '{{count}} 個工具包含', - onlyTool: '包含 1 個工具', - identifier: '伺服器識別碼 (點擊複製)', - server: { - title: 'MCP 伺服器', - url: '伺服器 URL', - reGen: '您想要重新生成伺服器 URL 嗎?', - addDescription: '新增描述', - edit: '編輯描述', - modal: { - addTitle: '新增描述以啟用 MCP 伺服器', - editTitle: '編輯描述', - description: '描述', - descriptionPlaceholder: '說明此工具的用途及如何被 LLM 使用', - parameters: '參數', - parametersTip: '為每個參數新增描述,以幫助 LLM 理解其目的和約束。', - parametersPlaceholder: '參數的目的和約束', - confirm: '啟用 MCP 伺服器', - }, - publishTip: '應用程式尚未發布。請先發布應用程式。', - }, - toolItem: { - parameters: '參數', - noDescription: '無描述', - }, - }, - allTools: '所有工具', -} - -export default translation diff --git a/web/i18n/zh-Hant/workflow.json b/web/i18n/zh-Hant/workflow.json new file mode 100644 index 0000000000..a8f935efe0 --- /dev/null +++ b/web/i18n/zh-Hant/workflow.json @@ -0,0 +1,1294 @@ +{ + "common": { + "undo": "復原", + "redo": "重做", + "editing": "編輯中", + "autoSaved": "自動保存", + "unpublished": "未發佈", + "published": "已發佈", + "publish": "發佈", + "update": "更新", + "run": "測試運行", + "running": "運行中", + "inRunMode": "在運行模式中", + "inPreview": "預覽中", + "inPreviewMode": "預覽中", + "preview": "預覽", + "viewRunHistory": "查看運行歷史", + "runHistory": "運行歷史", + "goBackToEdit": "返回編輯模式", + "conversationLog": "對話記錄", + "debugAndPreview": "預覽", + "restart": "重新開始", + "currentDraft": "當前草稿", + "currentDraftUnpublished": "當前草稿未發佈", + "latestPublished": "最新發佈", + "publishedAt": "發佈於", + "restore": "恢復", + "runApp": "運行", + "batchRunApp": "批量運行", + "accessAPIReference": "訪問 API", + "embedIntoSite": "嵌入網站", + "addTitle": "新增標題...", + "addDescription": "新增描述...", + "noVar": "沒有變數", + "variableNamePlaceholder": "變數名", + "searchVar": "搜索變數", + "setVarValuePlaceholder": "設置變數值", + "needConnectTip": "此節點尚未連接到其他節點", + "maxTreeDepth": "每個分支最大限制 {{depth}} 個節點", + "needAdd": "必須新增{{node}}節點", + "needOutputNode": "必須新增輸出節點", + "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": "查看詳細信息", + "importDSL": "導入 DSL", + "backupCurrentDraft": "Backup Current Draft", + "overwriteAndImport": "覆蓋和導入", + "importSuccess": "導入成功", + "chooseDSL": "選擇 DSL(yml)檔", + "syncingData": "同步資料,只需幾秒鐘。", + "importDSLTip": "當前草稿將被覆蓋。在導入之前將工作流匯出為備份。", + "importFailure": "匯入失敗", + "parallelTip": { + "click": { + "title": "點擊", + "desc": "新增" + }, + "drag": { + "title": "拖動", + "desc": "連接" + }, + "limit": "並行度僅限於 {{num}} 個分支。", + "depthLimit": "並行嵌套層限制為 {{num}} 個層" + }, + "disconnect": "斷開", + "jumpToNode": "跳轉到此節點", + "addParallelNode": "新增並行節點", + "parallel": "並行", + "branch": "分支", + "fileUploadTip": "圖片上傳功能已升級為檔上傳。", + "ImageUploadLegacyTip": "現在,您可以在起始表單中創建檔案類型變數。我們將來不再支持圖片上傳功能。", + "importWarning": "謹慎", + "importWarningDetails": "DSL 版本差異可能會影響某些功能", + "openInExplore": "在“探索”中打開", + "onFailure": "失敗時", + "addFailureBranch": "新增 Fail Branch", + "loadMore": "載入更多工作流", + "noHistory": "無歷史記錄", + "publishUpdate": "發布更新", + "exportSVG": "匯出為 SVG", + "exportPNG": "匯出為 PNG", + "versionHistory": "版本歷史", + "exitVersions": "退出版本", + "exportImage": "匯出圖像", + "exportJPEG": "匯出為 JPEG", + "tagBound": "使用此標籤的應用程式數量", + "currentView": "當前檢視", + "currentWorkflow": "當前工作流程", + "moreActions": "更多動作", + "listening": "聆聽", + "chooseStartNodeToRun": "選擇要執行的起始節點", + "runAllTriggers": "執行所有觸發器", + "features": "功能", + "featuresDescription": "提升網頁應用程式的使用者體驗", + "featuresDocLink": "了解更多", + "needStartNode": "至少必須新增一個起始節點", + "workflowAsToolDisabledHint": "發布最新的工作流程,並確保在將其配置為工具之前有一個已連接的使用者輸入節點。" + }, + "publishLimit": { + "startNodeTitlePrefix": "升級以", + "startNodeTitleSuffix": "解鎖無限開始節點", + "startNodeDesc": "目前方案最多允許 2 個開始節點,升級後才能發布此工作流程。" + }, + "env": { + "envPanelTitle": "環境變數", + "envDescription": "環境變數可用於存儲私人信息和憑證。它們是唯讀的,並且可以在導出時與 DSL 文件分開。", + "envPanelButton": "新增變數", + "modal": { + "title": "新增環境變數", + "editTitle": "編輯環境變數", + "type": "類型", + "name": "名稱", + "namePlaceholder": "環境名稱", + "value": "值", + "valuePlaceholder": "環境值", + "secretTip": "用於定義敏感信息或資料,DSL 設置配置為防止洩露。", + "description": "描述", + "descriptionPlaceholder": "描述此變數" + }, + "export": { + "title": "導出機密環境變數?", + "checkbox": "導出機密值", + "ignore": "導出 DSL", + "export": "導出帶有機密值的 DSL" + } + }, + "globalVar": { + "title": "系統變數", + "description": "系統變數是全域變數,在類型符合時可由任意節點在無需連線的情況下引用,例如終端使用者 ID 與工作流程 ID。", + "fieldsDescription": { + "conversationId": "對話 ID", + "dialogCount": "對話次數", + "userId": "使用者 ID", + "triggerTimestamp": "應用程式開始運行的時間戳", + "appId": "應用程式 ID", + "workflowId": "工作流程 ID", + "workflowRunId": "工作流程執行 ID" + } + }, + "chatVariable": { + "panelTitle": "對話變數", + "panelDescription": "對話變數用於儲存 LLM 需要記住的互動資訊,包括對話歷史、上傳的檔案、使用者偏好等。這些變數可讀寫。", + "docLink": "查看我們的文件以了解更多。", + "button": "新增變數", + "modal": { + "title": "新增對話變數", + "editTitle": "編輯對話變數", + "name": "名稱", + "namePlaceholder": "變數名稱", + "type": "類型", + "value": "預設值", + "valuePlaceholder": "預設值,留空則不設定", + "description": "描述", + "descriptionPlaceholder": "描述此變數", + "editInJSON": "以 JSON 編輯", + "oneByOne": "逐一新增", + "editInForm": "在表單中編輯", + "arrayValue": "值", + "addArrayValue": "新增值", + "objectKey": "鍵", + "objectType": "類型", + "objectValue": "預設值" + }, + "storedContent": "已儲存內容", + "updatedAt": "更新於 " + }, + "changeHistory": { + "title": "變更履歷", + "placeholder": "尚未更改任何內容", + "clearHistory": "清除歷史記錄", + "hint": "提示", + "hintText": "您的編輯操作將被跟踪並存儲在您的設備上,直到您離開編輯器。此歷史記錄將在您離開編輯器時被清除。", + "stepBackward_one": "{{count}} 步後退", + "stepBackward_other": "{{count}} 步後退", + "stepForward_one": "{{count}} 步前進", + "stepForward_other": "{{count}} 步前進", + "sessionStart": "會話開始", + "currentState": "當前狀態", + "nodeTitleChange": "區塊標題已更改", + "nodeDescriptionChange": "區塊描述已更改", + "nodeDragStop": "區塊已移動", + "nodeChange": "區塊已更改", + "nodeConnect": "區塊已連接", + "nodePaste": "區塊已粘貼", + "nodeDelete": "區塊已刪除", + "nodeAdd": "區塊已新增", + "nodeResize": "區塊已調整大小", + "noteAdd": "註釋已新增", + "noteChange": "註釋已更改", + "edgeDelete": "區塊已斷開連接", + "noteDelete": "註釋已刪除" + }, + "errorMsg": { + "fieldRequired": "{{field}} 不能為空", + "authRequired": "請先授權", + "invalidJson": "{{field}} 是非法的 JSON", + "fields": { + "variable": "變數名", + "variableValue": "變數值", + "code": "程式碼", + "model": "模型", + "rerankModel": "Rerank 模型", + "visionVariable": "Vision Variable" + }, + "invalidVariable": "無效的變數", + "rerankModelRequired": "在開啟 Rerank 模型之前,請在設置中確認模型配置成功。", + "toolParameterRequired": "{{field}}:参數 [{{param}}] 為必填項", + "noValidTool": "{{field}} 未選擇有效工具", + "startNodeRequired": "請先新增一個起始節點,再執行 {{operation}}" + }, + "singleRun": { + "testRun": "測試運行", + "startRun": "開始運行", + "running": "運行中", + "testRunIteration": "測試運行迭代", + "back": "返回", + "iteration": "迭代", + "loop": "循環", + "preparingDataSource": "準備資料來源", + "reRun": "重新運行" + }, + "tabs": { + "searchBlock": "搜索節點", + "blocks": "節點", + "tools": "工具", + "searchTrigger": "搜尋觸發器...", + "allTriggers": "所有觸發器", + "allTool": "全部", + "customTool": "自定義", + "workflowTool": "工作流", + "question-understand": "問題理解", + "logic": "邏輯", + "transform": "轉換", + "utilities": "工具", + "noResult": "未找到匹配項", + "searchTool": "搜索工具", + "agent": "代理策略", + "plugin": "插件", + "allAdded": "所有已新增的", + "addAll": "全部新增", + "sources": "來源", + "searchDataSource": "搜尋資料來源", + "noFeaturedPlugins": "前往 Marketplace 查看更多工具", + "noFeaturedTriggers": "前往 Marketplace 查看更多觸發器", + "start": "開始", + "noPluginsFound": "未找到任何插件", + "requestToCommunity": "對社群的請求", + "featuredTools": "精選", + "showMoreFeatured": "顯示更多", + "showLessFeatured": "顯示較少", + "installed": "已安裝", + "pluginByAuthor": "由 {{author}}", + "usePlugin": "選取工具", + "hideActions": "隱藏工具", + "startDisabledTip": "觸發節點與使用者輸入節點是互斥的。" + }, + "blocks": { + "start": "開始", + "end": "輸出", + "answer": "直接回覆", + "llm": "LLM", + "knowledge-retrieval": "知識檢索", + "question-classifier": "問題分類器", + "if-else": "條件分支", + "code": "程式碼執行", + "template-transform": "模板轉換", + "http-request": "HTTP 請求", + "variable-assigner": "變數聚合器", + "variable-aggregator": "變數聚合器", + "assigner": "變數分配器", + "iteration-start": "迭代開始", + "iteration": "迭代", + "parameter-extractor": "參數提取器", + "list-operator": "清單運算子", + "document-extractor": "文件提取器", + "agent": "代理", + "loop-start": "循環開始", + "loop": "循環", + "loop-end": "退出循環", + "knowledge-index": "知識庫", + "datasource": "資料來源", + "originalStartNode": "原始起始節點", + "trigger-schedule": "排程觸發", + "trigger-webhook": "Webhook 觸發", + "trigger-plugin": "插件觸發器" + }, + "blocksAbout": { + "start": "定義一個 workflow 流程啟動的參數", + "end": "定義一個 workflow 流程的輸出和結果類型", + "answer": "定義一個聊天對話的回覆內容", + "llm": "調用大語言模型回答問題或者對自然語言進行處理", + "knowledge-retrieval": "允許你從知識庫中查詢與用戶問題相關的文本內容", + "question-classifier": "定義用戶問題的分類條件,LLM 能夠根據分類描述定義對話的進展方式", + "if-else": "允許你根據 if/else 條件將 workflow 拆分成兩個分支", + "code": "執行一段 Python 或 NodeJS 程式碼實現自定義邏輯", + "template-transform": "使用 Jinja 模板語法將資料轉換為字符串", + "http-request": "允許通過 HTTP 協議發送服務器請求", + "variable-assigner": "將多路分支的變數聚合為一個變數,以實現下游節點統一配置。", + "assigner": "變數分配節點用於為可寫入的變數(如對話變數)分配值。", + "variable-aggregator": "將多路分支的變數聚合為一個變數,以實現下游節點統一配置。", + "iteration": "對列表對象執行多次步驟直至輸出所有結果。", + "parameter-extractor": "利用 LLM 從自然語言內推理提取出結構化參數,用於後置的工具調用或 HTTP 請求。", + "document-extractor": "用於將上傳的文件解析為 LLM 易於理解的文字內容。", + "list-operator": "用於篩選或排序陣列內容。", + "agent": "調用大型語言模型來回答問題或處理自然語言", + "loop-end": "等同於「中斷」。這個節點沒有配置項目。當循環體達到這個節點時,循環終止。", + "loop": "執行邏輯迴圈,直到滿足終止條件或達到最大迴圈次數。", + "datasource": "資料來源 關於", + "knowledge-index": "知識庫 關於", + "trigger-schedule": "基於時間的工作流程觸發器,可按計劃啟動工作流程", + "trigger-webhook": "Webhook 觸發器接收來自第三方系統的 HTTP 推送,以自動觸發工作流程。", + "trigger-plugin": "第三方整合觸發器,從外部平台事件啟動工作流程" + }, + "operator": { + "zoomIn": "放大", + "zoomOut": "縮小", + "zoomTo50": "縮放到 50%", + "zoomTo100": "放大到 100%", + "zoomToFit": "自適應視圖", + "alignNodes": "對齊節點", + "distributeVertical": "垂直等間距", + "alignLeft": "左對齊", + "distributeHorizontal": "水平等間距", + "vertical": "垂直", + "alignTop": "頂部對齊", + "alignCenter": "居中對齊", + "horizontal": "水平", + "selectionAlignment": "選擇對齊", + "alignRight": "右對齊", + "alignBottom": "底部對齊", + "alignMiddle": "中部對齊" + }, + "panel": { + "userInputField": "用戶輸入字段", + "changeBlock": "更改節點", + "helpLink": "查看幫助文件", + "about": "關於", + "createdBy": "作者", + "nextStep": "下一步", + "addNextStep": "新增此工作流程中的下一個節點", + "selectNextStep": "選擇下一個節點", + "runThisStep": "運行此步驟", + "checklist": "檢查清單", + "checklistTip": "發佈前確保所有問題均已解決", + "checklistResolved": "所有問題均已解決", + "organizeBlocks": "整理節點", + "change": "更改", + "optional": "(選擇性)", + "minimize": "退出全螢幕", + "maximize": "最大化畫布", + "scrollToSelectedNode": "捲動至選取的節點", + "optional_and_hidden": "(可選且隱藏)", + "goTo": "前往", + "startNode": "起始節點", + "openWorkflow": "打開工作流程" + }, + "nodes": { + "common": { + "outputVars": "輸出變數", + "insertVarTip": "插入變數", + "memory": { + "memory": "記憶", + "memoryTip": "聊天記憶設置", + "windowSize": "記憶窗口", + "conversationRoleName": "對話角色名", + "user": "用戶前綴", + "assistant": "助手前綴" + }, + "memories": { + "title": "記憶", + "tip": "聊天記憶", + "builtIn": "內置" + }, + "errorHandle": { + "none": { + "title": "沒有", + "desc": "如果發生異常且未得到處理,節點將停止運行" + }, + "defaultValue": { + "title": "預設值", + "desc": "發生錯誤時,請指定靜態輸出內容。", + "tip": "出錯時,將返回以下值。", + "inLog": "Node 異常,按照預設值輸出。", + "output": "輸出預設值" + }, + "failBranch": { + "title": "失敗分支", + "desc": "當發生錯誤時,它會執行 exception 分支", + "customize": "轉到畫布以自定義 fail 分支邏輯。", + "inLog": "Node 異常,將自動執行 fail 分支。節點輸出將返回錯誤類型和錯誤消息,並將其傳遞給下游。", + "customizeTip": "啟動 fail 分支後,節點引發的異常不會終止進程。相反,它將自動執行預定義的 fail 分支,允許您靈活地提供錯誤消息、報告、修復或跳過操作。" + }, + "partialSucceeded": { + "tip": "進程中有 {{num}} 個節點運行異常,請前往 tracing 查看日誌。" + }, + "title": "錯誤處理", + "tip": "異常處理策略,當節點遇到異常時觸發。" + }, + "retry": { + "retry": "重試", + "retryOnFailure": "失敗時重試", + "maxRetries": "最大重試次數", + "retryInterval": "重試間隔", + "retryTimes": "失敗時重試 {{times}} 次", + "retrying": "重試。。。", + "retrySuccessful": "重試成功", + "retryFailed": "重試失敗", + "retryFailedTimes": "{{times}} 次重試失敗", + "times": "次", + "ms": "毫秒", + "retries": "{{num}}重試" + }, + "typeSwitch": { + "input": "輸入值", + "variable": "使用變數" + }, + "inputVars": "輸入變數", + "pluginNotInstalled": "插件未安裝" + }, + "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": "提示詞", + "addMessage": "新增消息", + "roleDescription": { + "system": "為對話提供高層指導", + "user": "向模型提供指令、查詢或任何基於文本的輸入", + "assistant": "基於用戶消息的模型回覆" + }, + "vision": "視覺", + "files": "文件", + "resolution": { + "name": "分辨率", + "high": "高", + "low": "低" + }, + "outputVars": { + "output": "生成內容", + "reasoning_content": "推理內容", + "usage": "模型用量信息" + }, + "singleRun": { + "variable": "變數" + }, + "sysQueryInUser": "user message 中必須包含 sys.query", + "jsonSchema": { + "warningTips": { + "saveSchema": "請在保存結構之前完成當前欄位的編輯" + }, + "resetDefaults": "重置", + "instruction": "指示", + "apply": "申請", + "promptPlaceholder": "描述你的 JSON 架構...", + "addField": "新增字段", + "generate": "生成", + "descriptionPlaceholder": "新增描述", + "fieldNamePlaceholder": "欄位名稱", + "showAdvancedOptions": "顯示進階選項", + "import": "從 JSON 匯入", + "generatedResult": "生成的結果", + "generateJsonSchema": "生成 JSON 架構", + "promptTooltip": "將文本描述轉換成標準化的 JSON Schema 結構。", + "doc": "了解更多有關結構化輸出的資訊", + "addChildField": "新增子欄位", + "title": "結構化輸出模式", + "regenerate": "重新生成", + "stringValidations": "字串驗證", + "generationTip": "您可以使用自然語言快速創建 JSON Schema。", + "generating": "生成 JSON 架構...", + "back": "返回", + "required": "必需的", + "resultTip": "這是生成的結果。如果您不滿意,可以回去修改您的提示。" + }, + "reasoningFormat": { + "title": "啟用推理標籤分離", + "tooltip": "從 think 標籤中提取內容並將其存儲在 reasoning_content 欄位中。", + "tagged": "保持思考標籤", + "separated": "分開思考標籤" + } + }, + "knowledgeRetrieval": { + "queryVariable": "查詢變數", + "knowledge": "知識庫", + "outputVars": { + "output": "檢索的分段", + "content": "分段內容", + "title": "分段標題", + "icon": "分段圖標", + "url": "分段鏈接", + "metadata": "其他元資料", + "files": "已檢索的檔案" + }, + "metadata": { + "options": { + "disabled": { + "subTitle": "不啟用元資料過濾", + "title": "禁用" + }, + "automatic": { + "title": "自動的", + "subTitle": "根據用戶查詢自動生成元資料過濾條件", + "desc": "根據查詢變數自動生成元資料過濾條件" + }, + "manual": { + "title": "手動", + "subTitle": "手動新增元資料過濾條件" + } + }, + "panel": { + "add": "新增條件", + "datePlaceholder": "選擇一個時間...", + "search": "搜尋元資料", + "conditions": "條件", + "title": "元資料過濾條件", + "select": "選擇變數...", + "placeholder": "輸入數值" + }, + "title": "元資料過濾", + "tip": "元資料過濾是使用元資料屬性(如標籤、類別或訪問權限)來精煉和控制在系統內檢索相關信息的過程。" + }, + "queryText": "查詢文字", + "queryAttachment": "查詢圖片" + }, + "http": { + "inputVars": "輸入變數", + "api": "API", + "apiPlaceholder": "輸入 URL,輸入變數時請鍵入‘/’", + "notStartWithHttp": "API 應該以 http:// 或 https:// 開頭", + "key": "鍵", + "value": "值", + "bulkEdit": "批量編輯", + "keyValueEdit": "鍵值編輯", + "headers": "Headers", + "params": "Params", + "body": "Body", + "outputVars": { + "body": "響應內容", + "statusCode": "響應狀態碼", + "headers": "響應頭列表 JSON", + "files": "文件列表" + }, + "authorization": { + "authorization": "鑑權", + "authorizationType": "鑑權類型", + "no-auth": "無", + "api-key": "API-Key", + "auth-type": "API 鑑權類型", + "basic": "基礎", + "bearer": "Bearer", + "custom": "自定義", + "api-key-title": "API Key", + "header": "Header" + }, + "insertVarPlaceholder": "鍵入 '/' 鍵快速插入變數", + "timeout": { + "title": "超時設置", + "connectLabel": "連接超時", + "connectPlaceholder": "輸入連接超時(以秒為單位)", + "readLabel": "讀取超時", + "readPlaceholder": "輸入讀取超時(以秒為單位)", + "writeLabel": "寫入超時", + "writePlaceholder": "輸入寫入超時(以秒為單位)" + }, + "type": "類型", + "binaryFileVariable": "二進位檔變數", + "extractListPlaceholder": "輸入清單項索引,鍵入 『/』 插入變數", + "curl": { + "placeholder": "在此處粘貼 cURL 字串", + "title": "從 cURL 導入" + }, + "verifySSL": { + "title": "驗證 SSL 證書", + "warningTooltip": "不建議在生產環境中禁用SSL驗證。這僅應用於開發或測試,因為這樣會使連接容易受到中間人攻擊等安全威脅的威脅。" + } + }, + "code": { + "inputVars": "輸入變數", + "outputVars": "輸出變數", + "advancedDependencies": "高級依賴", + "advancedDependenciesTip": "在這裡新增一些預加載需要消耗較多時間或非默認內置的依賴包", + "searchDependencies": "搜索依賴", + "syncFunctionSignature": "同步函數簽名至代碼" + }, + "templateTransform": { + "inputVars": "輸入變數", + "code": "模板程式碼", + "codeSupportTip": "只支持 Jinja2", + "outputVars": { + "output": "轉換後內容" + } + }, + "ifElse": { + "if": "If", + "else": "Else", + "elseDescription": "用於定義當 if 條件不滿足時應執行的邏輯。", + "and": "and", + "or": "or", + "operator": "操作符", + "notSetVariable": "請先設置變數", + "comparisonOperator": { + "contains": "包含", + "not contains": "不包含", + "start with": "開始是", + "end with": "結束是", + "is": "是", + "is not": "不是", + "empty": "為空", + "not empty": "不為空", + "null": "空", + "not null": "不為空", + "all of": "全部", + "exists": "存在", + "in": "在", + "not in": "不在", + "not exists": "不存在", + "after": "之後", + "before": "之前" + }, + "enterValue": "輸入值", + "addCondition": "新增條件", + "conditionNotSetup": "條件未設置", + "selectVariable": "選擇變數...", + "optionName": { + "image": "圖像", + "url": "網址", + "doc": "文檔", + "localUpload": "本地上傳", + "video": "視頻", + "audio": "音訊" + }, + "select": "選擇", + "addSubVariable": "子變數" + }, + "variableAssigner": { + "title": "變數賦值", + "outputType": "輸出類型", + "varNotSet": "未設置變數", + "noVarTip": "新增需要賦值的變數", + "type": { + "string": "String", + "number": "Number", + "object": "Object", + "array": "Array" + }, + "aggregationGroup": "聚合分組", + "aggregationGroupTip": "開啟該功能後,變數聚合器內可以同時聚合多組變數", + "addGroup": "新增分組", + "outputVars": { + "varDescribe": "{{groupName}}的輸出變數" + }, + "setAssignVariable": "設置賦值變數" + }, + "assigner": { + "assignedVariable": "已分配變數", + "writeMode": "寫入模式", + "writeModeTip": "當已分配變數是陣列時,附加模式會新增到末尾。", + "over-write": "覆寫", + "append": "附加", + "plus": "加", + "clear": "清除", + "setVariable": "設定變數", + "variable": "變數", + "operations": { + "overwrite": "覆寫", + "/=": "/=", + "title": "操作", + "*=": "*=", + "extend": "擴展", + "+=": "+=", + "set": "設置", + "over-write": "覆寫", + "-=": "-=", + "append": "附加", + "clear": "清除", + "remove-first": "移除首項", + "remove-last": "移除末項" + }, + "noAssignedVars": "沒有可用的已分配變數", + "variables": "變數", + "selectAssignedVariable": "選擇配置的變數...", + "setParameter": "設定參數...", + "noVarTip": "點擊「+」按鈕新增變數", + "assignedVarsDescription": "分配的變數必須是可寫變數,例如對話變數。", + "varNotSet": "未設置變數" + }, + "tool": { + "authorize": "授權", + "inputVars": "輸入變數", + "outputVars": { + "text": "工具生成的內容", + "files": { + "title": "工具生成的文件", + "type": "支持類型。現在只支持圖片", + "transfer_method": "傳輸方式。值為 remote_url 或 local_file", + "url": "圖片鏈接", + "upload_file_id": "上傳文件 ID" + }, + "json": "工具生成的 JSON" + }, + "insertPlaceholder2": "插入變數", + "insertPlaceholder1": "輸入或按壓", + "settings": "設定" + }, + "questionClassifiers": { + "model": "模型", + "inputVars": "輸入變數", + "outputVars": { + "className": "分類名稱", + "usage": "模型用量信息" + }, + "class": "分類", + "classNamePlaceholder": "輸入你的分類名稱", + "advancedSetting": "高級設置", + "topicName": "主題內容", + "topicPlaceholder": "在這裡輸入你的主題內容", + "addClass": "新增分類", + "instruction": "指令", + "instructionTip": "你可以輸入額外的附加指令,幫助問題分類器更好的理解如何分類", + "instructionPlaceholder": "在這裡輸入你的指令" + }, + "parameterExtractor": { + "inputVar": "輸入變數", + "outputVars": { + "isSuccess": "是否成功。成功時值為 1,失敗時值為 0。", + "errorReason": "錯誤原因", + "usage": "模型用量信息" + }, + "extractParameters": "提取參數", + "importFromTool": "從工具導入", + "addExtractParameter": "新增提取參數", + "addExtractParameterContent": { + "name": "名稱", + "namePlaceholder": "提取參數名稱", + "type": "類型", + "typePlaceholder": "提取參數類型", + "description": "描述", + "descriptionPlaceholder": "提取參數描述", + "required": "必填", + "requiredContent": "必填僅作為模型推理的參考,不用於參數輸出的強制驗證。" + }, + "extractParametersNotSet": "提取參數未設置", + "instruction": "指令", + "instructionTip": "你可以輸入額外的附加指令,幫助參數提取器理解如何提取參數", + "advancedSetting": "高級設置", + "reasoningMode": "推理模式", + "reasoningModeTip": "你可以根據模型對於 Function calling 或 Prompt 的指令響應能力選擇合適的推理模式" + }, + "iteration": { + "deleteTitle": "刪除迭代節點?", + "deleteDesc": "刪除迭代節點將刪除所有子節點", + "input": "輸入", + "output": "輸出變數", + "iteration_one": "{{count}}個迭代", + "iteration_other": "{{count}}個迭代", + "currentIteration": "當前迭代", + "ErrorMethod": { + "operationTerminated": "終止", + "removeAbnormalOutput": "remove-abnormal-output", + "continueOnError": "出錯時繼續" + }, + "comma": ",", + "parallelMode": "並行模式", + "parallelModeEnableTitle": "Parallel Mode 已啟用", + "MaxParallelismTitle": "最大並行度", + "parallelModeUpper": "並行模式", + "parallelPanelDesc": "在並行模式下,反覆運算中的任務支援並行執行。", + "error_one": "{{count}}錯誤", + "errorResponseMethod": "錯誤回應方法", + "parallelModeEnableDesc": "在並行模式下,反覆運算中的任務支援並行執行。您可以在右側的 properties 面板中進行配置。", + "answerNodeWarningDesc": "並行模式警告:反覆運算中的應答節點、對話變數賦值和持久讀/寫操作可能會導致異常。", + "error_other": "{{count}}錯誤", + "MaxParallelismDesc": "最大並行度用於控制在單個反覆運算中同時執行的任務數。", + "flattenOutput": "展平成輸出", + "flattenOutputDesc": "啟用時,如果所有的迭代輸出都是陣列,它們將被展平成單一陣列。禁用時,輸出將保持巢狀陣列結構。" + }, + "note": { + "editor": { + "link": "連結", + "openLink": "打開", + "medium": "中等", + "small": "小", + "invalidUrl": "URL 無效", + "italic": "斜體的", + "bulletList": "項目符號清單", + "large": "大", + "unlink": "取消連結", + "enterUrl": "輸入網址...", + "bold": "大膽", + "showAuthor": "顯示作者", + "strikethrough": "刪除線", + "placeholder": "寫下您的筆記..." + }, + "addNote": "新增註解" + }, + "docExtractor": { + "outputVars": { + "text": "提取的文字" + }, + "learnMore": "瞭解更多資訊", + "inputVar": "輸入變數", + "supportFileTypes": "支援文件類型:{{types}}。" + }, + "listFilter": { + "outputVars": { + "last_record": "最後一條記錄", + "first_record": "第一條記錄", + "result": "篩選結果" + }, + "desc": "描述", + "asc": "ASC 的", + "orderBy": "排序依據", + "inputVar": "輸入變數", + "filterConditionComparisonValue": "Filter Condition 值", + "filterCondition": "篩選條件", + "limit": "前 N 名", + "selectVariableKeyPlaceholder": "Select sub variable key(選擇子變數鍵)", + "filterConditionComparisonOperator": "Filter Condition Comparison 運算符", + "filterConditionKey": "篩選條件鍵", + "extractsCondition": "提取第 N 項" + }, + "agent": { + "strategy": { + "label": "代理策略", + "shortLabel": "策略", + "tooltip": "不同的 Agentic 策略決定了系統如何規劃和執行多步驟工具調用", + "configureTip": "請配置 agentic 策略。", + "searchPlaceholder": "搜索代理策略", + "selectTip": "選擇代理策略", + "configureTipDesc": "配置代理策略后,該節點將自動載入剩餘的配置。該策略將影響多步驟工具推理的機制。" + }, + "pluginInstaller": { + "installing": "安裝", + "install": "安裝" + }, + "modelNotInMarketplace": { + "title": "未安裝模型", + "manageInPlugins": "在插件中管理", + "desc": "此模型是從 Local 或 GitHub 儲存庫安裝的。請在安裝後使用。" + }, + "modelNotSupport": { + "title": "不支援的型號", + "desc": "已安裝的插件版本不提供此模型。", + "descForVersionSwitch": "已安裝的插件版本不提供此模型。按兩下以切換版本。" + }, + "modelSelectorTooltips": { + "deprecated": "此模型已棄用" + }, + "outputVars": { + "files": { + "type": "支撐類型。現在僅支援鏡像", + "transfer_method": "轉移方法。值為 remote_url 或 local_file", + "title": "代理生成的檔", + "url": "圖片網址", + "upload_file_id": "上傳檔 ID" + }, + "text": "代理生成的內容", + "usage": "模型用量信息", + "json": "代理生成的 JSON" + }, + "checkList": { + "strategyNotSelected": "未選擇策略" + }, + "installPlugin": { + "title": "安裝插件", + "changelog": "更新日誌", + "cancel": "取消", + "desc": "即將安裝以下插件", + "install": "安裝" + }, + "pluginNotFoundDesc": "此插件是從 GitHub 安裝的。請前往插件 重新安裝", + "modelNotSelected": "未選擇模型", + "tools": "工具", + "strategyNotFoundDesc": "已安裝的插件版本不提供此策略。", + "pluginNotInstalledDesc": "此插件是從 GitHub 安裝的。請前往插件 重新安裝", + "strategyNotFoundDescAndSwitchVersion": "已安裝的插件版本不提供此策略。按兩下以切換版本。", + "strategyNotInstallTooltip": "{{strategy}} 未安裝", + "toolNotAuthorizedTooltip": "{{工具}}未授權", + "unsupportedStrategy": "不支援的策略", + "model": "型", + "modelNotInstallTooltip": "此模型未安裝", + "strategyNotSet": "代理策略未設置", + "toolNotInstallTooltip": "{{tool}} 未安裝", + "maxIterations": "最大反覆運算次數", + "toolbox": "工具箱", + "configureModel": "配置模型", + "learnMore": "瞭解更多資訊", + "linkToPlugin": "連結到插件", + "pluginNotInstalled": "此插件未安裝", + "notAuthorized": "未授權", + "clickToViewParameterSchema": "點擊查看參數架構", + "parameterSchema": "參數架構" + }, + "loop": { + "ErrorMethod": { + "operationTerminated": "終止", + "continueOnError": "繼續出錯", + "removeAbnormalOutput": "移除異常輸出" + }, + "loop_other": "{{count}} 循環", + "variableName": "變數名稱", + "error_one": "{{count}} 錯誤", + "loopMaxCount": "最大迴圈次數", + "input": "輸入", + "loopVariables": "循環變數", + "output": "輸出變數", + "comma": ",", + "errorResponseMethod": "錯誤回應方法", + "breakCondition": "迴圈終止條件", + "loopMaxCountError": "請輸入一個有效的最大迴圈次數,範圍為 1 到 {{maxCount}}", + "loop_one": "{{count}} 次循環", + "exitConditionTip": "循環節點至少需要一個退出條件", + "breakConditionTip": "只有在具有終止條件的循環內和對話變數中,才能引用變數。", + "totalLoopCount": "總迴圈次數:{{count}}", + "error_other": "{{count}} 錯誤", + "currentLoop": "電流迴路", + "finalLoopVariables": "最後迴圈變數", + "currentLoopCount": "當前循環次數:{{count}}", + "inputMode": "輸入模式", + "loopNode": "循環節點", + "initialLoopVariables": "初始迴圈變數", + "deleteDesc": "刪除循環節點將移除所有子節點", + "setLoopVariables": "在迴圈範圍內設置變數", + "deleteTitle": "刪除循環節點嗎?" + }, + "dataSource": { + "add": "新增資料來源", + "supportedFileFormats": "支援的檔案格式", + "supportedFileFormatsPlaceholder": "檔案副檔名, e.g. doc" + }, + "knowledgeBase": { + "chunkStructureTip": { + "learnMore": "瞭解詳情", + "title": "請選擇區塊結構", + "message": "Dify 知識庫支援三種區塊結構:一般、親子和 Q&A。每個知識庫只能有一個結構。前一個節點的輸出必須與選取的區塊結構一致。請注意,區塊結構的選擇會影響可用的索引方法。" + }, + "chunkIsRequired": "需要區塊結構", + "aboutRetrieval": "關於檢索方法。", + "chooseChunkStructure": "選擇區塊結構", + "indexMethodIsRequired": "索引方法是必填的", + "chunkStructure": "區塊結構", + "changeChunkStructure": "變更區塊結構", + "retrievalSettingIsRequired": "需要檢索設定", + "chunksInput": "區塊", + "chunksInputTip": "知識庫節點的輸入變數是 Chunks。該變數類型是一個物件,具有特定的 JSON Schema,必須與所選的塊結構一致。", + "rerankingModelIsRequired": "需要重新排序模型", + "chunksVariableIsRequired": "Chunks 變數是必需的", + "embeddingModelIsRequired": "需要嵌入模型", + "rerankingModelIsInvalid": "重排序模型無效", + "embeddingModelIsInvalid": "嵌入模型無效" + }, + "triggerPlugin": { + "authorized": "已授權", + "notConfigured": "未設定", + "notAuthorized": "未被授權", + "selectSubscription": "選擇訂閱", + "availableSubscriptions": "可用訂閱", + "addSubscription": "新增訂閱", + "removeSubscription": "取消訂閱", + "subscriptionRemoved": "訂閱已成功移除", + "error": "錯誤", + "configuration": "配置", + "remove": "移除", + "or": "或", + "useOAuth": "使用 OAuth", + "useApiKey": "使用 API 金鑰", + "authenticationFailed": "驗證失敗", + "authenticationSuccess": "驗證成功", + "oauthConfigFailed": "OAuth 配置失敗", + "configureOAuthClient": "配置 OAuth 客戶端", + "oauthClientDescription": "配置 OAuth 客戶端憑證以啟用身份驗證", + "oauthClientSaved": "OAuth 用戶端設定已成功儲存", + "configureApiKey": "配置 API 金鑰", + "apiKeyDescription": "配置 API 金鑰憑證以進行身份驗證", + "apiKeyConfigured": "API 金鑰設定成功", + "configurationFailed": "配置失敗", + "failedToStart": "啟動驗證流程失敗", + "credentialsVerified": "憑證驗證成功", + "credentialVerificationFailed": "憑證驗證失敗", + "verifyAndContinue": "驗證並繼續", + "configureParameters": "配置參數", + "parametersDescription": "配置觸發器參數和屬性", + "configurationComplete": "配置完成", + "configurationCompleteDescription": "您的觸發器已成功配置", + "configurationCompleteMessage": "您的觸發器配置現已完成並可使用。", + "parameters": "參數", + "properties": "屬性", + "propertiesDescription": "此觸發器的額外配置屬性", + "noConfigurationRequired": "此觸發器無需額外配置。", + "subscriptionName": "訂閱名稱", + "subscriptionNameDescription": "為此觸發器訂閱輸入一個唯一名稱", + "subscriptionNamePlaceholder": "輸入訂閱名稱...", + "subscriptionNameRequired": "需要訂閱名稱", + "subscriptionRequired": "需要訂閱" + }, + "triggerSchedule": { + "title": "時間表", + "nodeTitle": "排程觸發", + "notConfigured": "未配置", + "useCronExpression": "使用 cron 表達式", + "useVisualPicker": "使用視覺選擇器", + "frequency": { + "label": "頻率", + "hourly": "每小時", + "daily": "每日", + "weekly": "每週", + "monthly": "每月" + }, + "selectFrequency": "選擇頻率", + "frequencyLabel": "頻率", + "nextExecution": "下一次執行", + "weekdays": "平日", + "time": "時間", + "cronExpression": "Cron 表達式", + "nextExecutionTime": "下一次執行時間", + "nextExecutionTimes": "接下來的 5 次執行時間", + "startTime": "開始時間", + "executeNow": "立即執行", + "selectDateTime": "選擇日期和時間", + "hours": "小時", + "minutes": "分鐘", + "onMinute": "在一分鐘內", + "days": "天", + "lastDay": "最後一天", + "lastDayTooltip": "並非所有月份都有31天。使用「最後一天」選項來選擇每個月的最後一天。", + "mode": "時尚", + "timezone": "時區", + "visualConfig": "視覺配置", + "monthlyDay": "每月日", + "executionTime": "執行時間", + "invalidTimezone": "無效的時區", + "invalidCronExpression": "無效的 cron 表達式", + "noValidExecutionTime": "無法計算有效的執行時間", + "executionTimeCalculationError": "無法計算執行時間", + "invalidFrequency": "無效頻率", + "invalidStartTime": "開始時間無效", + "startTimeMustBeFuture": "開始時間必須是未來的時間", + "invalidTimeFormat": "時間格式無效(預期為 HH:MM AM/PM)", + "invalidWeekday": "無效的星期日:{{weekday}}", + "invalidMonthlyDay": "每月日期必須在 1 到 31 之間或為「最後一天」", + "invalidOnMinute": "分鐘必須介於 0 到 59 之間", + "invalidExecutionTime": "無效的執行時間", + "executionTimeMustBeFuture": "執行時間必須在未來" + }, + "triggerWebhook": { + "title": "Webhook 觸發", + "nodeTitle": "🔗 網路鉤子觸發", + "configPlaceholder": "Webhook 觸發配置將在此實施", + "webhookUrl": "Webhook 網址", + "webhookUrlPlaceholder": "點擊生成以創建 webhook URL", + "generate": "生成", + "copy": "複製", + "test": "測試", + "urlGenerated": "Webhook URL 已成功生成", + "urlGenerationFailed": "無法生成網絡掛鉤 URL", + "urlCopied": "URL 已複製到剪貼簿", + "method": "方法", + "contentType": "內容類型", + "queryParameters": "查詢參數", + "headerParameters": "標頭參數", + "requestBodyParameters": "請求主體參數", + "parameterName": "變數名稱", + "varName": "變數名稱", + "varType": "類型", + "varNamePlaceholder": "輸入變數名稱...", + "required": "必填", + "addParameter": "添加", + "addHeader": "添加", + "noParameters": "未設定任何參數", + "noQueryParameters": "未配置查詢參數", + "noHeaders": "未配置標頭", + "noBodyParameters": "未配置任何正文參數", + "debugUrlTitle": "在測試運行中,請始終使用此 URL", + "debugUrlCopy": "點擊複製", + "debugUrlCopied": "已複製!", + "debugUrlPrivateAddressWarning": "此 URL 似乎是內部位址,可能會導致 webhook 請求失敗。您可以將 TRIGGER_URL 更改為公開位址。", + "errorHandling": "錯誤處理", + "errorStrategy": "錯誤處理", + "responseConfiguration": "回應", + "asyncMode": "非同步模式", + "statusCode": "狀態碼", + "responseBody": "回應正文", + "responseBodyPlaceholder": "在這裡撰寫您的回覆內容", + "headers": "標題", + "validation": { + "webhookUrlRequired": "需要 Webhook URL", + "invalidParameterType": "參數 \"{{name}}\" 的類型 \"{{type}}\" 無效" + } + } + }, + "tracing": { + "stopBy": "由{{user}}終止" + }, + "variableReference": { + "noAvailableVars": "無可用變數", + "noAssignedVars": "沒有可用的已分配變數", + "noVarsForOperation": "所選操作沒有可用於賦值的變數。", + "assignedVarsDescription": "分配的變數必須是可寫變數,例如", + "conversationVars": "對話變數" + }, + "versionHistory": { + "filter": { + "onlyShowNamedVersions": "僅顯示命名版本", + "onlyYours": "只有妳的", + "empty": "未找到匹配的版本歷史", + "all": "所有", + "reset": "重置過濾器" + }, + "editField": { + "releaseNotes": "發佈說明", + "titleLengthLimit": "標題不能超過 {{limit}} 個字符", + "releaseNotesLengthLimit": "發佈說明不能超過 {{limit}} 個字符", + "title": "標題" + }, + "action": { + "updateFailure": "更新版本失敗", + "restoreFailure": "無法恢復版本", + "restoreSuccess": "恢復版本", + "updateSuccess": "版本已更新", + "deleteSuccess": "版本已刪除", + "deleteFailure": "無法刪除版本", + "copyIdSuccess": "ID 已複製到剪貼板" + }, + "nameThisVersion": "給這個版本命名", + "latest": "最新", + "currentDraft": "當前草稿", + "title": "版本", + "editVersionInfo": "編輯版本信息", + "restorationTip": "版本恢復後,當前草稿將被覆蓋。", + "deletionTip": "刪除是不可逆的,請確認。", + "releaseNotesPlaceholder": "描述發生了什麼變化", + "defaultName": "未命名版本", + "copyId": "複製ID" + }, + "debug": { + "settingsTab": "設定", + "lastRunTab": "最後一次運行", + "relationsTab": "關係", + "noData": { + "runThisNode": "運行此節點", + "description": "上次運行的結果將顯示在這裡" + }, + "variableInspect": { + "listening": { + "title": "正在監聽觸發器事件…", + "tip": "您現在可以向 HTTP {{nodeName}} 端點發送測試請求來模擬事件觸發,或將其作為即時事件除錯的回呼 URL。所有輸出都可在變數檢視器中直接查看。", + "tipPlugin": "您現在可以在 {{- pluginName}} 中建立事件,並在變數檢視器中檢視這些事件的輸出。", + "tipSchedule": "正在監聽排程觸發器事件。\n下一次排程執行時間:{{nextTriggerTime}}", + "tipFallback": "正在等待觸發器事件,輸出會顯示在此處。", + "defaultNodeName": "此觸發器", + "defaultPluginName": "此插件觸發器", + "defaultScheduleTime": "未設定", + "selectedTriggers": "已選觸發器", + "stopButton": "停止" + }, + "trigger": { + "cached": "查看快取的變數", + "stop": "停止運行", + "clear": "清晰", + "running": "快取運行狀態", + "normal": "變數檢查" + }, + "emptyLink": "了解更多", + "view": "查看日誌", + "clearAll": "重置所有", + "envNode": "環境", + "title": "變數檢查", + "clearNode": "清除快取變數", + "systemNode": "系統", + "reset": "重置為上次運行值", + "chatNode": "對話", + "edited": "編輯的", + "emptyTip": "在畫布上逐步執行節點或逐步運行節點後,您可以在變數檢視中查看節點變數的當前值。", + "resetConversationVar": "將對話變數重置為默認值", + "export": "出口", + "largeData": "大資料,唯讀預覽。匯出以檢視全部。", + "exportToolTip": "將變數匯出為檔案", + "largeDataNoExport": "大型資料 - 僅部分預覽" + }, + "relations": { + "dependencies": "依賴", + "dependents": "被依賴", + "dependenciesDescription": "此節點所依賴的其他節點", + "dependentsDescription": "依賴此節點的其他節點", + "noDependencies": "無依賴", + "noDependents": "無被依賴" + }, + "copyLastRun": "複製上一次運行", + "copyLastRunError": "未能複製上一次運行的輸入", + "noMatchingInputsFound": "在上次運行中未找到匹配的輸入", + "noLastRunFound": "沒有找到之前的運行", + "lastOutput": "最後的輸出", + "lastRunInputsCopied": "從上次運行複製的 {{count}} 個輸入" + }, + "sidebar": { + "exportWarning": "導出當前保存的版本", + "exportWarningDesc": "這將導出當前保存的工作流程版本。如果您在編輯器中有未保存的更改,請先通過使用工作流程畫布中的導出選項來保存它們。" + }, + "error": { + "startNodeRequired": "請先新增一個起始節點,再執行 {{operation}}", + "operations": { + "connectingNodes": "連接節點", + "addingNodes": "新增節點", + "modifyingWorkflow": "修改工作流程", + "updatingWorkflow": "更新工作流程" + } + }, + "customWebhook": "自訂 Webhook", + "difyTeam": "Dify 團隊", + "triggerStatus": { + "enabled": "觸發", + "disabled": "觸發器 • 已停用" + }, + "entryNodeStatus": { + "enabled": "開始", + "disabled": "開始 • 已停用" + }, + "onboarding": { + "title": "選擇一個起始節點開始", + "description": "不同的起始節點有不同的能力。別擔心,你之後總是可以更改它們。", + "userInputFull": "使用者輸入(原始起始節點)", + "userInputDescription": "啟動節點,允許設定使用者輸入變數,工具功能包括網頁應用程式、服務 API、MCP 伺服器和工作流程。", + "trigger": "觸發器", + "triggerDescription": "觸發器可以作為工作流程的起始節點,例如排程任務、自訂網絡掛鉤或與其他應用程式的整合。", + "back": "返回", + "learnMore": "了解更多", + "aboutStartNode": "關於起始節點。", + "escTip": { + "press": "新聞媒體", + "key": "取消", + "toDismiss": "解僱" + } + } +} diff --git a/web/i18n/zh-Hant/workflow.ts b/web/i18n/zh-Hant/workflow.ts deleted file mode 100644 index 3da4cc172a..0000000000 --- a/web/i18n/zh-Hant/workflow.ts +++ /dev/null @@ -1,1296 +0,0 @@ -const translation = { - common: { - undo: '復原', - redo: '重做', - editing: '編輯中', - autoSaved: '自動保存', - unpublished: '未發佈', - published: '已發佈', - publish: '發佈', - update: '更新', - run: '測試運行', - running: '運行中', - inRunMode: '在運行模式中', - inPreview: '預覽中', - inPreviewMode: '預覽中', - preview: '預覽', - viewRunHistory: '查看運行歷史', - runHistory: '運行歷史', - goBackToEdit: '返回編輯模式', - conversationLog: '對話記錄', - debugAndPreview: '預覽', - restart: '重新開始', - currentDraft: '當前草稿', - currentDraftUnpublished: '當前草稿未發佈', - latestPublished: '最新發佈', - publishedAt: '發佈於', - restore: '恢復', - runApp: '運行', - batchRunApp: '批量運行', - accessAPIReference: '訪問 API', - embedIntoSite: '嵌入網站', - addTitle: '新增標題...', - addDescription: '新增描述...', - noVar: '沒有變數', - variableNamePlaceholder: '變數名', - searchVar: '搜索變數', - setVarValuePlaceholder: '設置變數值', - needConnectTip: '此節點尚未連接到其他節點', - maxTreeDepth: '每個分支最大限制 {{depth}} 個節點', - needAdd: '必須新增{{node}}節點', - needOutputNode: '必須新增輸出節點', - 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: '查看詳細信息', - importDSL: '導入 DSL', - backupCurrentDraft: 'Backup Current Draft', - overwriteAndImport: '覆蓋和導入', - importSuccess: '導入成功', - chooseDSL: '選擇 DSL(yml)檔', - syncingData: '同步資料,只需幾秒鐘。', - importDSLTip: '當前草稿將被覆蓋。在導入之前將工作流匯出為備份。', - importFailure: '匯入失敗', - parallelTip: { - click: { - title: '點擊', - desc: '新增', - }, - drag: { - title: '拖動', - desc: '連接', - }, - limit: '並行度僅限於 {{num}} 個分支。', - depthLimit: '並行嵌套層限制為 {{num}} 個層', - }, - disconnect: '斷開', - jumpToNode: '跳轉到此節點', - addParallelNode: '新增並行節點', - parallel: '並行', - branch: '分支', - fileUploadTip: '圖片上傳功能已升級為檔上傳。', - ImageUploadLegacyTip: '現在,您可以在起始表單中創建檔案類型變數。我們將來不再支持圖片上傳功能。', - importWarning: '謹慎', - importWarningDetails: 'DSL 版本差異可能會影響某些功能', - openInExplore: '在“探索”中打開', - onFailure: '失敗時', - addFailureBranch: '新增 Fail Branch', - loadMore: '載入更多工作流', - noHistory: '無歷史記錄', - publishUpdate: '發布更新', - exportSVG: '匯出為 SVG', - exportPNG: '匯出為 PNG', - versionHistory: '版本歷史', - exitVersions: '退出版本', - exportImage: '匯出圖像', - exportJPEG: '匯出為 JPEG', - tagBound: '使用此標籤的應用程式數量', - currentView: '當前檢視', - currentWorkflow: '當前工作流程', - moreActions: '更多動作', - listening: '聆聽', - chooseStartNodeToRun: '選擇要執行的起始節點', - runAllTriggers: '執行所有觸發器', - features: '功能', - featuresDescription: '提升網頁應用程式的使用者體驗', - featuresDocLink: '了解更多', - needStartNode: '至少必須新增一個起始節點', - workflowAsToolDisabledHint: '發布最新的工作流程,並確保在將其配置為工具之前有一個已連接的使用者輸入節點。', - }, - publishLimit: { - startNodeTitlePrefix: '升級以', - startNodeTitleSuffix: '解鎖無限開始節點', - startNodeDesc: '目前方案最多允許 2 個開始節點,升級後才能發布此工作流程。', - }, - env: { - envPanelTitle: '環境變數', - envDescription: '環境變數可用於存儲私人信息和憑證。它們是唯讀的,並且可以在導出時與 DSL 文件分開。', - envPanelButton: '新增變數', - modal: { - title: '新增環境變數', - editTitle: '編輯環境變數', - type: '類型', - name: '名稱', - namePlaceholder: '環境名稱', - value: '值', - valuePlaceholder: '環境值', - secretTip: '用於定義敏感信息或資料,DSL 設置配置為防止洩露。', - description: '描述', - descriptionPlaceholder: '描述此變數', - }, - export: { - title: '導出機密環境變數?', - checkbox: '導出機密值', - ignore: '導出 DSL', - export: '導出帶有機密值的 DSL', - }, - }, - globalVar: { - title: '系統變數', - description: '系統變數是全域變數,在類型符合時可由任意節點在無需連線的情況下引用,例如終端使用者 ID 與工作流程 ID。', - fieldsDescription: { - conversationId: '對話 ID', - dialogCount: '對話次數', - userId: '使用者 ID', - triggerTimestamp: '應用程式開始運行的時間戳', - appId: '應用程式 ID', - workflowId: '工作流程 ID', - workflowRunId: '工作流程執行 ID', - }, - }, - chatVariable: { - panelTitle: '對話變數', - panelDescription: '對話變數用於儲存 LLM 需要記住的互動資訊,包括對話歷史、上傳的檔案、使用者偏好等。這些變數可讀寫。', - docLink: '查看我們的文件以了解更多。', - button: '新增變數', - modal: { - title: '新增對話變數', - editTitle: '編輯對話變數', - name: '名稱', - namePlaceholder: '變數名稱', - type: '類型', - value: '預設值', - valuePlaceholder: '預設值,留空則不設定', - description: '描述', - descriptionPlaceholder: '描述此變數', - editInJSON: '以 JSON 編輯', - oneByOne: '逐一新增', - editInForm: '在表單中編輯', - arrayValue: '值', - addArrayValue: '新增值', - objectKey: '鍵', - objectType: '類型', - objectValue: '預設值', - }, - storedContent: '已儲存內容', - updatedAt: '更新於 ', - }, - changeHistory: { - title: '變更履歷', - placeholder: '尚未更改任何內容', - clearHistory: '清除歷史記錄', - hint: '提示', - hintText: '您的編輯操作將被跟踪並存儲在您的設備上,直到您離開編輯器。此歷史記錄將在您離開編輯器時被清除。', - stepBackward_one: '{{count}} 步後退', - stepBackward_other: '{{count}} 步後退', - stepForward_one: '{{count}} 步前進', - stepForward_other: '{{count}} 步前進', - sessionStart: '會話開始', - currentState: '當前狀態', - nodeTitleChange: '區塊標題已更改', - nodeDescriptionChange: '區塊描述已更改', - nodeDragStop: '區塊已移動', - nodeChange: '區塊已更改', - nodeConnect: '區塊已連接', - nodePaste: '區塊已粘貼', - nodeDelete: '區塊已刪除', - nodeAdd: '區塊已新增', - nodeResize: '區塊已調整大小', - noteAdd: '註釋已新增', - noteChange: '註釋已更改', - edgeDelete: '區塊已斷開連接', - noteDelete: '註釋已刪除', - }, - errorMsg: { - fieldRequired: '{{field}} 不能為空', - authRequired: '請先授權', - invalidJson: '{{field}} 是非法的 JSON', - fields: { - variable: '變數名', - variableValue: '變數值', - code: '程式碼', - model: '模型', - rerankModel: 'Rerank 模型', - visionVariable: 'Vision Variable', - }, - invalidVariable: '無效的變數', - rerankModelRequired: '在開啟 Rerank 模型之前,請在設置中確認模型配置成功。', - toolParameterRequired: '{{field}}:参數 [{{param}}] 為必填項', - noValidTool: '{{field}} 未選擇有效工具', - startNodeRequired: '請先新增一個起始節點,再執行 {{operation}}', - }, - singleRun: { - testRun: '測試運行', - startRun: '開始運行', - running: '運行中', - testRunIteration: '測試運行迭代', - back: '返回', - iteration: '迭代', - loop: '循環', - preparingDataSource: '準備資料來源', - reRun: '重新運行', - }, - tabs: { - 'searchBlock': '搜索節點', - 'blocks': '節點', - 'tools': '工具', - 'searchTrigger': '搜尋觸發器...', - 'allTriggers': '所有觸發器', - 'allTool': '全部', - 'customTool': '自定義', - 'workflowTool': '工作流', - 'question-understand': '問題理解', - 'logic': '邏輯', - 'transform': '轉換', - 'utilities': '工具', - 'noResult': '未找到匹配項', - 'searchTool': '搜索工具', - 'agent': '代理策略', - 'plugin': '插件', - 'allAdded': '所有已新增的', - 'addAll': '全部新增', - 'sources': '來源', - 'searchDataSource': '搜尋資料來源', - 'noFeaturedPlugins': '前往 Marketplace 查看更多工具', - 'noFeaturedTriggers': '前往 Marketplace 查看更多觸發器', - 'start': '開始', - 'noPluginsFound': '未找到任何插件', - 'requestToCommunity': '對社群的請求', - 'featuredTools': '精選', - 'showMoreFeatured': '顯示更多', - 'showLessFeatured': '顯示較少', - 'installed': '已安裝', - 'pluginByAuthor': '由 {{author}}', - 'usePlugin': '選取工具', - 'hideActions': '隱藏工具', - 'startDisabledTip': '觸發節點與使用者輸入節點是互斥的。', - }, - blocks: { - 'start': '開始', - 'end': '輸出', - 'answer': '直接回覆', - 'llm': 'LLM', - 'knowledge-retrieval': '知識檢索', - 'question-classifier': '問題分類器', - 'if-else': '條件分支', - 'code': '程式碼執行', - 'template-transform': '模板轉換', - 'http-request': 'HTTP 請求', - 'variable-assigner': '變數聚合器', - 'variable-aggregator': '變數聚合器', - 'assigner': '變數分配器', - 'iteration-start': '迭代開始', - 'iteration': '迭代', - 'parameter-extractor': '參數提取器', - 'list-operator': '清單運算子', - 'document-extractor': '文件提取器', - 'agent': '代理', - 'loop-start': '循環開始', - 'loop': '循環', - 'loop-end': '退出循環', - 'knowledge-index': '知識庫', - 'datasource': '資料來源', - 'originalStartNode': '原始起始節點', - 'trigger-schedule': '排程觸發', - 'trigger-webhook': 'Webhook 觸發', - 'trigger-plugin': '插件觸發器', - }, - blocksAbout: { - 'start': '定義一個 workflow 流程啟動的參數', - 'end': '定義一個 workflow 流程的輸出和結果類型', - 'answer': '定義一個聊天對話的回覆內容', - 'llm': '調用大語言模型回答問題或者對自然語言進行處理', - 'knowledge-retrieval': '允許你從知識庫中查詢與用戶問題相關的文本內容', - 'question-classifier': '定義用戶問題的分類條件,LLM 能夠根據分類描述定義對話的進展方式', - 'if-else': '允許你根據 if/else 條件將 workflow 拆分成兩個分支', - 'code': '執行一段 Python 或 NodeJS 程式碼實現自定義邏輯', - 'template-transform': '使用 Jinja 模板語法將資料轉換為字符串', - 'http-request': '允許通過 HTTP 協議發送服務器請求', - 'variable-assigner': '將多路分支的變數聚合為一個變數,以實現下游節點統一配置。', - 'assigner': '變數分配節點用於為可寫入的變數(如對話變數)分配值。', - 'variable-aggregator': '將多路分支的變數聚合為一個變數,以實現下游節點統一配置。', - 'iteration': '對列表對象執行多次步驟直至輸出所有結果。', - 'parameter-extractor': '利用 LLM 從自然語言內推理提取出結構化參數,用於後置的工具調用或 HTTP 請求。', - 'document-extractor': '用於將上傳的文件解析為 LLM 易於理解的文字內容。', - 'list-operator': '用於篩選或排序陣列內容。', - 'agent': '調用大型語言模型來回答問題或處理自然語言', - 'loop-end': '等同於「中斷」。這個節點沒有配置項目。當循環體達到這個節點時,循環終止。', - 'loop': '執行邏輯迴圈,直到滿足終止條件或達到最大迴圈次數。', - 'datasource': '資料來源 關於', - 'knowledge-index': '知識庫 關於', - 'trigger-schedule': '基於時間的工作流程觸發器,可按計劃啟動工作流程', - 'trigger-webhook': 'Webhook 觸發器接收來自第三方系統的 HTTP 推送,以自動觸發工作流程。', - 'trigger-plugin': '第三方整合觸發器,從外部平台事件啟動工作流程', - }, - operator: { - zoomIn: '放大', - zoomOut: '縮小', - zoomTo50: '縮放到 50%', - zoomTo100: '放大到 100%', - zoomToFit: '自適應視圖', - alignNodes: '對齊節點', - distributeVertical: '垂直等間距', - alignLeft: '左對齊', - distributeHorizontal: '水平等間距', - vertical: '垂直', - alignTop: '頂部對齊', - alignCenter: '居中對齊', - horizontal: '水平', - selectionAlignment: '選擇對齊', - alignRight: '右對齊', - alignBottom: '底部對齊', - alignMiddle: '中部對齊', - }, - panel: { - userInputField: '用戶輸入字段', - changeBlock: '更改節點', - helpLink: '查看幫助文件', - about: '關於', - createdBy: '作者', - nextStep: '下一步', - addNextStep: '新增此工作流程中的下一個節點', - selectNextStep: '選擇下一個節點', - runThisStep: '運行此步驟', - checklist: '檢查清單', - checklistTip: '發佈前確保所有問題均已解決', - checklistResolved: '所有問題均已解決', - organizeBlocks: '整理節點', - change: '更改', - optional: '(選擇性)', - minimize: '退出全螢幕', - maximize: '最大化畫布', - scrollToSelectedNode: '捲動至選取的節點', - optional_and_hidden: '(可選且隱藏)', - goTo: '前往', - startNode: '起始節點', - openWorkflow: '打開工作流程', - }, - nodes: { - common: { - outputVars: '輸出變數', - insertVarTip: '插入變數', - memory: { - memory: '記憶', - memoryTip: '聊天記憶設置', - windowSize: '記憶窗口', - conversationRoleName: '對話角色名', - user: '用戶前綴', - assistant: '助手前綴', - }, - memories: { - title: '記憶', - tip: '聊天記憶', - builtIn: '內置', - }, - errorHandle: { - none: { - title: '沒有', - desc: '如果發生異常且未得到處理,節點將停止運行', - }, - defaultValue: { - title: '預設值', - desc: '發生錯誤時,請指定靜態輸出內容。', - tip: '出錯時,將返回以下值。', - inLog: 'Node 異常,按照預設值輸出。', - output: '輸出預設值', - }, - failBranch: { - title: '失敗分支', - desc: '當發生錯誤時,它會執行 exception 分支', - customize: '轉到畫布以自定義 fail 分支邏輯。', - inLog: 'Node 異常,將自動執行 fail 分支。節點輸出將返回錯誤類型和錯誤消息,並將其傳遞給下游。', - customizeTip: '啟動 fail 分支後,節點引發的異常不會終止進程。相反,它將自動執行預定義的 fail 分支,允許您靈活地提供錯誤消息、報告、修復或跳過操作。', - }, - partialSucceeded: { - tip: '進程中有 {{num}} 個節點運行異常,請前往 tracing 查看日誌。', - }, - title: '錯誤處理', - tip: '異常處理策略,當節點遇到異常時觸發。', - }, - retry: { - retry: '重試', - retryOnFailure: '失敗時重試', - maxRetries: '最大重試次數', - retryInterval: '重試間隔', - retryTimes: '失敗時重試 {{times}} 次', - retrying: '重試。。。', - retrySuccessful: '重試成功', - retryFailed: '重試失敗', - retryFailedTimes: '{{times}} 次重試失敗', - times: '次', - ms: '毫秒', - retries: '{{num}}重試', - }, - typeSwitch: { - input: '輸入值', - variable: '使用變數', - }, - inputVars: '輸入變數', - pluginNotInstalled: '插件未安裝', - }, - 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: '提示詞', - addMessage: '新增消息', - roleDescription: { - system: '為對話提供高層指導', - user: '向模型提供指令、查詢或任何基於文本的輸入', - assistant: '基於用戶消息的模型回覆', - }, - vision: '視覺', - files: '文件', - resolution: { - name: '分辨率', - high: '高', - low: '低', - }, - outputVars: { - output: '生成內容', - reasoning_content: '推理內容', - usage: '模型用量信息', - }, - singleRun: { - variable: '變數', - }, - sysQueryInUser: 'user message 中必須包含 sys.query', - jsonSchema: { - warningTips: { - saveSchema: '請在保存結構之前完成當前欄位的編輯', - }, - resetDefaults: '重置', - instruction: '指示', - apply: '申請', - promptPlaceholder: '描述你的 JSON 架構...', - addField: '新增字段', - generate: '生成', - descriptionPlaceholder: '新增描述', - fieldNamePlaceholder: '欄位名稱', - showAdvancedOptions: '顯示進階選項', - import: '從 JSON 匯入', - generatedResult: '生成的結果', - generateJsonSchema: '生成 JSON 架構', - promptTooltip: '將文本描述轉換成標準化的 JSON Schema 結構。', - doc: '了解更多有關結構化輸出的資訊', - addChildField: '新增子欄位', - title: '結構化輸出模式', - regenerate: '重新生成', - stringValidations: '字串驗證', - generationTip: '您可以使用自然語言快速創建 JSON Schema。', - generating: '生成 JSON 架構...', - back: '返回', - required: '必需的', - resultTip: '這是生成的結果。如果您不滿意,可以回去修改您的提示。', - }, - reasoningFormat: { - title: '啟用推理標籤分離', - tooltip: '從 think 標籤中提取內容並將其存儲在 reasoning_content 欄位中。', - tagged: '保持思考標籤', - separated: '分開思考標籤', - }, - }, - knowledgeRetrieval: { - queryVariable: '查詢變數', - knowledge: '知識庫', - outputVars: { - output: '檢索的分段', - content: '分段內容', - title: '分段標題', - icon: '分段圖標', - url: '分段鏈接', - metadata: '其他元資料', - files: '已檢索的檔案', - }, - metadata: { - options: { - disabled: { - subTitle: '不啟用元資料過濾', - title: '禁用', - }, - automatic: { - title: '自動的', - subTitle: '根據用戶查詢自動生成元資料過濾條件', - desc: '根據查詢變數自動生成元資料過濾條件', - }, - manual: { - title: '手動', - subTitle: '手動新增元資料過濾條件', - }, - }, - panel: { - add: '新增條件', - datePlaceholder: '選擇一個時間...', - search: '搜尋元資料', - conditions: '條件', - title: '元資料過濾條件', - select: '選擇變數...', - placeholder: '輸入數值', - }, - title: '元資料過濾', - tip: '元資料過濾是使用元資料屬性(如標籤、類別或訪問權限)來精煉和控制在系統內檢索相關信息的過程。', - }, - queryText: '查詢文字', - queryAttachment: '查詢圖片', - }, - http: { - inputVars: '輸入變數', - api: 'API', - apiPlaceholder: '輸入 URL,輸入變數時請鍵入‘/’', - notStartWithHttp: 'API 應該以 http:// 或 https:// 開頭', - key: '鍵', - value: '值', - bulkEdit: '批量編輯', - keyValueEdit: '鍵值編輯', - headers: 'Headers', - params: 'Params', - body: 'Body', - outputVars: { - body: '響應內容', - statusCode: '響應狀態碼', - headers: '響應頭列表 JSON', - files: '文件列表', - }, - authorization: { - 'authorization': '鑑權', - 'authorizationType': '鑑權類型', - 'no-auth': '無', - 'api-key': 'API-Key', - 'auth-type': 'API 鑑權類型', - 'basic': '基礎', - 'bearer': 'Bearer', - 'custom': '自定義', - 'api-key-title': 'API Key', - 'header': 'Header', - }, - insertVarPlaceholder: '鍵入 \'/\' 鍵快速插入變數', - timeout: { - title: '超時設置', - connectLabel: '連接超時', - connectPlaceholder: '輸入連接超時(以秒為單位)', - readLabel: '讀取超時', - readPlaceholder: '輸入讀取超時(以秒為單位)', - writeLabel: '寫入超時', - writePlaceholder: '輸入寫入超時(以秒為單位)', - }, - type: '類型', - binaryFileVariable: '二進位檔變數', - extractListPlaceholder: '輸入清單項索引,鍵入 『/』 插入變數', - curl: { - placeholder: '在此處粘貼 cURL 字串', - title: '從 cURL 導入', - }, - verifySSL: { - title: '驗證 SSL 證書', - warningTooltip: '不建議在生產環境中禁用SSL驗證。這僅應用於開發或測試,因為這樣會使連接容易受到中間人攻擊等安全威脅的威脅。', - }, - }, - code: { - inputVars: '輸入變數', - outputVars: '輸出變數', - advancedDependencies: '高級依賴', - advancedDependenciesTip: '在這裡新增一些預加載需要消耗較多時間或非默認內置的依賴包', - searchDependencies: '搜索依賴', - syncFunctionSignature: '同步函數簽名至代碼', - }, - templateTransform: { - inputVars: '輸入變數', - code: '模板程式碼', - codeSupportTip: '只支持 Jinja2', - outputVars: { - output: '轉換後內容', - }, - }, - ifElse: { - if: 'If', - else: 'Else', - elseDescription: '用於定義當 if 條件不滿足時應執行的邏輯。', - and: 'and', - or: 'or', - operator: '操作符', - notSetVariable: '請先設置變數', - comparisonOperator: { - 'contains': '包含', - 'not contains': '不包含', - 'start with': '開始是', - 'end with': '結束是', - 'is': '是', - 'is not': '不是', - 'empty': '為空', - 'not empty': '不為空', - 'null': '空', - 'not null': '不為空', - 'all of': '全部', - 'exists': '存在', - 'in': '在', - 'not in': '不在', - 'not exists': '不存在', - 'after': '之後', - 'before': '之前', - }, - enterValue: '輸入值', - addCondition: '新增條件', - conditionNotSetup: '條件未設置', - selectVariable: '選擇變數...', - optionName: { - image: '圖像', - url: '網址', - doc: '文檔', - localUpload: '本地上傳', - video: '視頻', - audio: '音訊', - }, - select: '選擇', - addSubVariable: '子變數', - }, - variableAssigner: { - title: '變數賦值', - outputType: '輸出類型', - varNotSet: '未設置變數', - noVarTip: '新增需要賦值的變數', - type: { - string: 'String', - number: 'Number', - object: 'Object', - array: 'Array', - }, - aggregationGroup: '聚合分組', - aggregationGroupTip: '開啟該功能後,變數聚合器內可以同時聚合多組變數', - addGroup: '新增分組', - outputVars: { - varDescribe: '{{groupName}}的輸出變數', - }, - setAssignVariable: '設置賦值變數', - }, - assigner: { - 'assignedVariable': '已分配變數', - 'writeMode': '寫入模式', - 'writeModeTip': '當已分配變數是陣列時,附加模式會新增到末尾。', - 'over-write': '覆寫', - 'append': '附加', - 'plus': '加', - 'clear': '清除', - 'setVariable': '設定變數', - 'variable': '變數', - 'operations': { - 'overwrite': '覆寫', - '/=': '/=', - 'title': '操作', - '*=': '*=', - 'extend': '擴展', - '+=': '+=', - 'set': '設置', - 'over-write': '覆寫', - '-=': '-=', - 'append': '附加', - 'clear': '清除', - 'remove-first': '移除首項', - 'remove-last': '移除末項', - }, - 'noAssignedVars': '沒有可用的已分配變數', - 'variables': '變數', - 'selectAssignedVariable': '選擇配置的變數...', - 'setParameter': '設定參數...', - 'noVarTip': '點擊「+」按鈕新增變數', - 'assignedVarsDescription': '分配的變數必須是可寫變數,例如對話變數。', - 'varNotSet': '未設置變數', - }, - tool: { - authorize: '授權', - inputVars: '輸入變數', - outputVars: { - text: '工具生成的內容', - files: { - title: '工具生成的文件', - type: '支持類型。現在只支持圖片', - transfer_method: '傳輸方式。值為 remote_url 或 local_file', - url: '圖片鏈接', - upload_file_id: '上傳文件 ID', - }, - json: '工具生成的 JSON', - }, - insertPlaceholder2: '插入變數', - insertPlaceholder1: '輸入或按壓', - settings: '設定', - }, - questionClassifiers: { - model: '模型', - inputVars: '輸入變數', - outputVars: { - className: '分類名稱', - usage: '模型用量信息', - }, - class: '分類', - classNamePlaceholder: '輸入你的分類名稱', - advancedSetting: '高級設置', - topicName: '主題內容', - topicPlaceholder: '在這裡輸入你的主題內容', - addClass: '新增分類', - instruction: '指令', - instructionTip: '你可以輸入額外的附加指令,幫助問題分類器更好的理解如何分類', - instructionPlaceholder: '在這裡輸入你的指令', - }, - parameterExtractor: { - inputVar: '輸入變數', - outputVars: { - isSuccess: '是否成功。成功時值為 1,失敗時值為 0。', - errorReason: '錯誤原因', - usage: '模型用量信息', - }, - extractParameters: '提取參數', - importFromTool: '從工具導入', - addExtractParameter: '新增提取參數', - addExtractParameterContent: { - name: '名稱', - namePlaceholder: '提取參數名稱', - type: '類型', - typePlaceholder: '提取參數類型', - description: '描述', - descriptionPlaceholder: '提取參數描述', - required: '必填', - requiredContent: '必填僅作為模型推理的參考,不用於參數輸出的強制驗證。', - }, - extractParametersNotSet: '提取參數未設置', - instruction: '指令', - instructionTip: '你可以輸入額外的附加指令,幫助參數提取器理解如何提取參數', - advancedSetting: '高級設置', - reasoningMode: '推理模式', - reasoningModeTip: '你可以根據模型對於 Function calling 或 Prompt 的指令響應能力選擇合適的推理模式', - }, - iteration: { - deleteTitle: '刪除迭代節點?', - deleteDesc: '刪除迭代節點將刪除所有子節點', - input: '輸入', - output: '輸出變數', - iteration_one: '{{count}}個迭代', - iteration_other: '{{count}}個迭代', - currentIteration: '當前迭代', - ErrorMethod: { - operationTerminated: '終止', - removeAbnormalOutput: 'remove-abnormal-output', - continueOnError: '出錯時繼續', - }, - comma: ',', - parallelMode: '並行模式', - parallelModeEnableTitle: 'Parallel Mode 已啟用', - MaxParallelismTitle: '最大並行度', - parallelModeUpper: '並行模式', - parallelPanelDesc: '在並行模式下,反覆運算中的任務支援並行執行。', - error_one: '{{count}}錯誤', - errorResponseMethod: '錯誤回應方法', - parallelModeEnableDesc: '在並行模式下,反覆運算中的任務支援並行執行。您可以在右側的 properties 面板中進行配置。', - answerNodeWarningDesc: '並行模式警告:反覆運算中的應答節點、對話變數賦值和持久讀/寫操作可能會導致異常。', - error_other: '{{count}}錯誤', - MaxParallelismDesc: '最大並行度用於控制在單個反覆運算中同時執行的任務數。', - flattenOutput: '展平成輸出', - flattenOutputDesc: '啟用時,如果所有的迭代輸出都是陣列,它們將被展平成單一陣列。禁用時,輸出將保持巢狀陣列結構。', - }, - note: { - editor: { - link: '連結', - openLink: '打開', - medium: '中等', - small: '小', - invalidUrl: 'URL 無效', - italic: '斜體的', - bulletList: '項目符號清單', - large: '大', - unlink: '取消連結', - enterUrl: '輸入網址...', - bold: '大膽', - showAuthor: '顯示作者', - strikethrough: '刪除線', - placeholder: '寫下您的筆記...', - }, - addNote: '新增註解', - }, - docExtractor: { - outputVars: { - text: '提取的文字', - }, - learnMore: '瞭解更多資訊', - inputVar: '輸入變數', - supportFileTypes: '支援文件類型:{{types}}。', - }, - listFilter: { - outputVars: { - last_record: '最後一條記錄', - first_record: '第一條記錄', - result: '篩選結果', - }, - desc: '描述', - asc: 'ASC 的', - orderBy: '排序依據', - inputVar: '輸入變數', - filterConditionComparisonValue: 'Filter Condition 值', - filterCondition: '篩選條件', - limit: '前 N 名', - selectVariableKeyPlaceholder: 'Select sub variable key(選擇子變數鍵)', - filterConditionComparisonOperator: 'Filter Condition Comparison 運算符', - filterConditionKey: '篩選條件鍵', - extractsCondition: '提取第 N 項', - }, - agent: { - strategy: { - label: '代理策略', - shortLabel: '策略', - tooltip: '不同的 Agentic 策略決定了系統如何規劃和執行多步驟工具調用', - configureTip: '請配置 agentic 策略。', - searchPlaceholder: '搜索代理策略', - selectTip: '選擇代理策略', - configureTipDesc: '配置代理策略后,該節點將自動載入剩餘的配置。該策略將影響多步驟工具推理的機制。', - }, - pluginInstaller: { - installing: '安裝', - install: '安裝', - }, - modelNotInMarketplace: { - title: '未安裝模型', - manageInPlugins: '在插件中管理', - desc: '此模型是從 Local 或 GitHub 儲存庫安裝的。請在安裝後使用。', - }, - modelNotSupport: { - title: '不支援的型號', - desc: '已安裝的插件版本不提供此模型。', - descForVersionSwitch: '已安裝的插件版本不提供此模型。按兩下以切換版本。', - }, - modelSelectorTooltips: { - deprecated: '此模型已棄用', - }, - outputVars: { - files: { - type: '支撐類型。現在僅支援鏡像', - transfer_method: '轉移方法。值為 remote_url 或 local_file', - title: '代理生成的檔', - url: '圖片網址', - upload_file_id: '上傳檔 ID', - }, - text: '代理生成的內容', - usage: '模型用量信息', - json: '代理生成的 JSON', - }, - checkList: { - strategyNotSelected: '未選擇策略', - }, - installPlugin: { - title: '安裝插件', - changelog: '更新日誌', - cancel: '取消', - desc: '即將安裝以下插件', - install: '安裝', - }, - pluginNotFoundDesc: '此插件是從 GitHub 安裝的。請前往插件 重新安裝', - modelNotSelected: '未選擇模型', - tools: '工具', - strategyNotFoundDesc: '已安裝的插件版本不提供此策略。', - pluginNotInstalledDesc: '此插件是從 GitHub 安裝的。請前往插件 重新安裝', - strategyNotFoundDescAndSwitchVersion: '已安裝的插件版本不提供此策略。按兩下以切換版本。', - strategyNotInstallTooltip: '{{strategy}} 未安裝', - toolNotAuthorizedTooltip: '{{工具}}未授權', - unsupportedStrategy: '不支援的策略', - model: '型', - modelNotInstallTooltip: '此模型未安裝', - strategyNotSet: '代理策略未設置', - toolNotInstallTooltip: '{{tool}} 未安裝', - maxIterations: '最大反覆運算次數', - toolbox: '工具箱', - configureModel: '配置模型', - learnMore: '瞭解更多資訊', - linkToPlugin: '連結到插件', - pluginNotInstalled: '此插件未安裝', - notAuthorized: '未授權', - clickToViewParameterSchema: '點擊查看參數架構', - parameterSchema: '參數架構', - }, - loop: { - ErrorMethod: { - operationTerminated: '終止', - continueOnError: '繼續出錯', - removeAbnormalOutput: '移除異常輸出', - }, - loop_other: '{{count}} 循環', - variableName: '變數名稱', - error_one: '{{count}} 錯誤', - loopMaxCount: '最大迴圈次數', - input: '輸入', - loopVariables: '循環變數', - output: '輸出變數', - comma: ',', - errorResponseMethod: '錯誤回應方法', - breakCondition: '迴圈終止條件', - loopMaxCountError: '請輸入一個有效的最大迴圈次數,範圍為 1 到 {{maxCount}}', - loop_one: '{{count}} 次循環', - exitConditionTip: '循環節點至少需要一個退出條件', - breakConditionTip: '只有在具有終止條件的循環內和對話變數中,才能引用變數。', - totalLoopCount: '總迴圈次數:{{count}}', - error_other: '{{count}} 錯誤', - currentLoop: '電流迴路', - finalLoopVariables: '最後迴圈變數', - currentLoopCount: '當前循環次數:{{count}}', - inputMode: '輸入模式', - loopNode: '循環節點', - initialLoopVariables: '初始迴圈變數', - deleteDesc: '刪除循環節點將移除所有子節點', - setLoopVariables: '在迴圈範圍內設置變數', - deleteTitle: '刪除循環節點嗎?', - }, - dataSource: { - add: '新增資料來源', - supportedFileFormats: '支援的檔案格式', - supportedFileFormatsPlaceholder: '檔案副檔名, e.g. doc', - }, - knowledgeBase: { - chunkStructureTip: { - learnMore: '瞭解詳情', - title: '請選擇區塊結構', - message: 'Dify 知識庫支援三種區塊結構:一般、親子和 Q&A。每個知識庫只能有一個結構。前一個節點的輸出必須與選取的區塊結構一致。請注意,區塊結構的選擇會影響可用的索引方法。', - }, - chunkIsRequired: '需要區塊結構', - aboutRetrieval: '關於檢索方法。', - chooseChunkStructure: '選擇區塊結構', - indexMethodIsRequired: '索引方法是必填的', - chunkStructure: '區塊結構', - changeChunkStructure: '變更區塊結構', - retrievalSettingIsRequired: '需要檢索設定', - chunksInput: '區塊', - chunksInputTip: '知識庫節點的輸入變數是 Chunks。該變數類型是一個物件,具有特定的 JSON Schema,必須與所選的塊結構一致。', - rerankingModelIsRequired: '需要重新排序模型', - chunksVariableIsRequired: 'Chunks 變數是必需的', - embeddingModelIsRequired: '需要嵌入模型', - rerankingModelIsInvalid: '重排序模型無效', - embeddingModelIsInvalid: '嵌入模型無效', - }, - triggerPlugin: { - authorized: '已授權', - notConfigured: '未設定', - notAuthorized: '未被授權', - selectSubscription: '選擇訂閱', - availableSubscriptions: '可用訂閱', - addSubscription: '新增訂閱', - removeSubscription: '取消訂閱', - subscriptionRemoved: '訂閱已成功移除', - error: '錯誤', - configuration: '配置', - remove: '移除', - or: '或', - useOAuth: '使用 OAuth', - useApiKey: '使用 API 金鑰', - authenticationFailed: '驗證失敗', - authenticationSuccess: '驗證成功', - oauthConfigFailed: 'OAuth 配置失敗', - configureOAuthClient: '配置 OAuth 客戶端', - oauthClientDescription: '配置 OAuth 客戶端憑證以啟用身份驗證', - oauthClientSaved: 'OAuth 用戶端設定已成功儲存', - configureApiKey: '配置 API 金鑰', - apiKeyDescription: '配置 API 金鑰憑證以進行身份驗證', - apiKeyConfigured: 'API 金鑰設定成功', - configurationFailed: '配置失敗', - failedToStart: '啟動驗證流程失敗', - credentialsVerified: '憑證驗證成功', - credentialVerificationFailed: '憑證驗證失敗', - verifyAndContinue: '驗證並繼續', - configureParameters: '配置參數', - parametersDescription: '配置觸發器參數和屬性', - configurationComplete: '配置完成', - configurationCompleteDescription: '您的觸發器已成功配置', - configurationCompleteMessage: '您的觸發器配置現已完成並可使用。', - parameters: '參數', - properties: '屬性', - propertiesDescription: '此觸發器的額外配置屬性', - noConfigurationRequired: '此觸發器無需額外配置。', - subscriptionName: '訂閱名稱', - subscriptionNameDescription: '為此觸發器訂閱輸入一個唯一名稱', - subscriptionNamePlaceholder: '輸入訂閱名稱...', - subscriptionNameRequired: '需要訂閱名稱', - subscriptionRequired: '需要訂閱', - }, - triggerSchedule: { - title: '時間表', - nodeTitle: '排程觸發', - notConfigured: '未配置', - useCronExpression: '使用 cron 表達式', - useVisualPicker: '使用視覺選擇器', - frequency: { - label: '頻率', - hourly: '每小時', - daily: '每日', - weekly: '每週', - monthly: '每月', - }, - selectFrequency: '選擇頻率', - frequencyLabel: '頻率', - nextExecution: '下一次執行', - weekdays: '平日', - time: '時間', - cronExpression: 'Cron 表達式', - nextExecutionTime: '下一次執行時間', - nextExecutionTimes: '接下來的 5 次執行時間', - startTime: '開始時間', - executeNow: '立即執行', - selectDateTime: '選擇日期和時間', - hours: '小時', - minutes: '分鐘', - onMinute: '在一分鐘內', - days: '天', - lastDay: '最後一天', - lastDayTooltip: '並非所有月份都有31天。使用「最後一天」選項來選擇每個月的最後一天。', - mode: '時尚', - timezone: '時區', - visualConfig: '視覺配置', - monthlyDay: '每月日', - executionTime: '執行時間', - invalidTimezone: '無效的時區', - invalidCronExpression: '無效的 cron 表達式', - noValidExecutionTime: '無法計算有效的執行時間', - executionTimeCalculationError: '無法計算執行時間', - invalidFrequency: '無效頻率', - invalidStartTime: '開始時間無效', - startTimeMustBeFuture: '開始時間必須是未來的時間', - invalidTimeFormat: '時間格式無效(預期為 HH:MM AM/PM)', - invalidWeekday: '無效的星期日:{{weekday}}', - invalidMonthlyDay: '每月日期必須在 1 到 31 之間或為「最後一天」', - invalidOnMinute: '分鐘必須介於 0 到 59 之間', - invalidExecutionTime: '無效的執行時間', - executionTimeMustBeFuture: '執行時間必須在未來', - }, - triggerWebhook: { - title: 'Webhook 觸發', - nodeTitle: '🔗 網路鉤子觸發', - configPlaceholder: 'Webhook 觸發配置將在此實施', - webhookUrl: 'Webhook 網址', - webhookUrlPlaceholder: '點擊生成以創建 webhook URL', - generate: '生成', - copy: '複製', - test: '測試', - urlGenerated: 'Webhook URL 已成功生成', - urlGenerationFailed: '無法生成網絡掛鉤 URL', - urlCopied: 'URL 已複製到剪貼簿', - method: '方法', - contentType: '內容類型', - queryParameters: '查詢參數', - headerParameters: '標頭參數', - requestBodyParameters: '請求主體參數', - parameterName: '變數名稱', - varName: '變數名稱', - varType: '類型', - varNamePlaceholder: '輸入變數名稱...', - required: '必填', - addParameter: '添加', - addHeader: '添加', - noParameters: '未設定任何參數', - noQueryParameters: '未配置查詢參數', - noHeaders: '未配置標頭', - noBodyParameters: '未配置任何正文參數', - debugUrlTitle: '在測試運行中,請始終使用此 URL', - debugUrlCopy: '點擊複製', - debugUrlCopied: '已複製!', - debugUrlPrivateAddressWarning: '此 URL 似乎是內部位址,可能會導致 webhook 請求失敗。您可以將 TRIGGER_URL 更改為公開位址。', - errorHandling: '錯誤處理', - errorStrategy: '錯誤處理', - responseConfiguration: '回應', - asyncMode: '非同步模式', - statusCode: '狀態碼', - responseBody: '回應正文', - responseBodyPlaceholder: '在這裡撰寫您的回覆內容', - headers: '標題', - validation: { - webhookUrlRequired: '需要 Webhook URL', - invalidParameterType: '參數 "{{name}}" 的類型 "{{type}}" 無效', - }, - }, - }, - tracing: { - stopBy: '由{{user}}終止', - }, - variableReference: { - noAvailableVars: '無可用變數', - noAssignedVars: '沒有可用的已分配變數', - noVarsForOperation: '所選操作沒有可用於賦值的變數。', - assignedVarsDescription: '分配的變數必須是可寫變數,例如', - conversationVars: '對話變數', - }, - versionHistory: { - filter: { - onlyShowNamedVersions: '僅顯示命名版本', - onlyYours: '只有妳的', - empty: '未找到匹配的版本歷史', - all: '所有', - reset: '重置過濾器', - }, - editField: { - releaseNotes: '發佈說明', - titleLengthLimit: '標題不能超過 {{limit}} 個字符', - releaseNotesLengthLimit: '發佈說明不能超過 {{limit}} 個字符', - title: '標題', - }, - action: { - updateFailure: '更新版本失敗', - restoreFailure: '無法恢復版本', - restoreSuccess: '恢復版本', - updateSuccess: '版本已更新', - deleteSuccess: '版本已刪除', - deleteFailure: '無法刪除版本', - copyIdSuccess: 'ID 已複製到剪貼板', - }, - nameThisVersion: '給這個版本命名', - latest: '最新', - currentDraft: '當前草稿', - title: '版本', - editVersionInfo: '編輯版本信息', - restorationTip: '版本恢復後,當前草稿將被覆蓋。', - deletionTip: '刪除是不可逆的,請確認。', - releaseNotesPlaceholder: '描述發生了什麼變化', - defaultName: '未命名版本', - copyId: '複製ID', - }, - debug: { - settingsTab: '設定', - lastRunTab: '最後一次運行', - relationsTab: '關係', - noData: { - runThisNode: '運行此節點', - description: '上次運行的結果將顯示在這裡', - }, - variableInspect: { - listening: { - title: '正在監聽觸發器事件…', - tip: '您現在可以向 HTTP {{nodeName}} 端點發送測試請求來模擬事件觸發,或將其作為即時事件除錯的回呼 URL。所有輸出都可在變數檢視器中直接查看。', - tipPlugin: '您現在可以在 {{- pluginName}} 中建立事件,並在變數檢視器中檢視這些事件的輸出。', - tipSchedule: '正在監聽排程觸發器事件。\n下一次排程執行時間:{{nextTriggerTime}}', - tipFallback: '正在等待觸發器事件,輸出會顯示在此處。', - defaultNodeName: '此觸發器', - defaultPluginName: '此插件觸發器', - defaultScheduleTime: '未設定', - selectedTriggers: '已選觸發器', - stopButton: '停止', - }, - trigger: { - cached: '查看快取的變數', - stop: '停止運行', - clear: '清晰', - running: '快取運行狀態', - normal: '變數檢查', - }, - emptyLink: '了解更多', - view: '查看日誌', - clearAll: '重置所有', - envNode: '環境', - title: '變數檢查', - clearNode: '清除快取變數', - systemNode: '系統', - reset: '重置為上次運行值', - chatNode: '對話', - edited: '編輯的', - emptyTip: '在畫布上逐步執行節點或逐步運行節點後,您可以在變數檢視中查看節點變數的當前值。', - resetConversationVar: '將對話變數重置為默認值', - export: '出口', - largeData: '大資料,唯讀預覽。匯出以檢視全部。', - exportToolTip: '將變數匯出為檔案', - largeDataNoExport: '大型資料 - 僅部分預覽', - }, - relations: { - dependencies: '依賴', - dependents: '被依賴', - dependenciesDescription: '此節點所依賴的其他節點', - dependentsDescription: '依賴此節點的其他節點', - noDependencies: '無依賴', - noDependents: '無被依賴', - }, - copyLastRun: '複製上一次運行', - copyLastRunError: '未能複製上一次運行的輸入', - noMatchingInputsFound: '在上次運行中未找到匹配的輸入', - noLastRunFound: '沒有找到之前的運行', - lastOutput: '最後的輸出', - lastRunInputsCopied: '從上次運行複製的 {{count}} 個輸入', - }, - sidebar: { - exportWarning: '導出當前保存的版本', - exportWarningDesc: '這將導出當前保存的工作流程版本。如果您在編輯器中有未保存的更改,請先通過使用工作流程畫布中的導出選項來保存它們。', - }, - error: { - startNodeRequired: '請先新增一個起始節點,再執行 {{operation}}', - operations: { - connectingNodes: '連接節點', - addingNodes: '新增節點', - modifyingWorkflow: '修改工作流程', - updatingWorkflow: '更新工作流程', - }, - }, - customWebhook: '自訂 Webhook', - difyTeam: 'Dify 團隊', - triggerStatus: { - enabled: '觸發', - disabled: '觸發器 • 已停用', - }, - entryNodeStatus: { - enabled: '開始', - disabled: '開始 • 已停用', - }, - onboarding: { - title: '選擇一個起始節點開始', - description: '不同的起始節點有不同的能力。別擔心,你之後總是可以更改它們。', - userInputFull: '使用者輸入(原始起始節點)', - userInputDescription: '啟動節點,允許設定使用者輸入變數,工具功能包括網頁應用程式、服務 API、MCP 伺服器和工作流程。', - trigger: '觸發器', - triggerDescription: '觸發器可以作為工作流程的起始節點,例如排程任務、自訂網絡掛鉤或與其他應用程式的整合。', - back: '返回', - learnMore: '了解更多', - aboutStartNode: '關於起始節點。', - escTip: { - press: '新聞媒體', - key: '取消', - toDismiss: '解僱', - }, - }, -} - -export default translation